07070100000000000041FD0000000000000000000000016290A0C100000000000000000000000000000000000000000000001200000000spacewalk-backend 07070100000001000081B40000000000000000000000016290A0C100000178000000000000000000000000000000000000001A00000000spacewalk-backend/HACKING Before running the backend unit tests you'll need to do the following:

 * yum install python-nose python-pgsql
 * export SPACEWALK_GIT=~/src/spacewalk
   * Adjust accordingly to point to the top level of your spacewalk git clone.
   * Probably wise to add to your ~/.bashrc or equivalent.

To run the pure unit tests (no disk/network/db access):

    nosetests -s test/unit/
07070100000002000081B40000000000000000000000016290A0C1000046AC000000000000000000000000000000000000001A00000000spacewalk-backend/LICENSE                     GNU GENERAL PUBLIC LICENSE
                       Version 2, June 1991

 Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
 Everyone is permitted to copy and distribute verbatim copies
 of this license document, but changing it is not allowed.

                            Preamble

  The licenses for most software are designed to take away your
freedom to share and change it.  By contrast, the GNU General Public
License is intended to guarantee your freedom to share and change free
software--to make sure the software is free for all its users.  This
General Public License applies to most of the Free Software
Foundation's software and to any other program whose authors commit to
using it.  (Some other Free Software Foundation software is covered by
the GNU Lesser General Public License instead.)  You can apply it to
your programs, too.

  When we speak of free software, we are referring to freedom, not
price.  Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
this service if you wish), that you receive source code or can get it
if you want it, that you can change the software or use pieces of it
in new free programs; and that you know you can do these things.

  To protect your rights, we need to make restrictions that forbid
anyone to deny you these rights or to ask you to surrender the rights.
These restrictions translate to certain responsibilities for you if you
distribute copies of the software, or if you modify it.

  For example, if you distribute copies of such a program, whether
gratis or for a fee, you must give the recipients all the rights that
you have.  You must make sure that they, too, receive or can get the
source code.  And you must show them these terms so they know their
rights.

  We protect your rights with two steps: (1) copyright the software, and
(2) offer you this license which gives you legal permission to copy,
distribute and/or modify the software.

  Also, for each author's protection and ours, we want to make certain
that everyone understands that there is no warranty for this free
software.  If the software is modified by someone else and passed on, we
want its recipients to know that what they have is not the original, so
that any problems introduced by others will not reflect on the original
authors' reputations.

  Finally, any free program is threatened constantly by software
patents.  We wish to avoid the danger that redistributors of a free
program will individually obtain patent licenses, in effect making the
program proprietary.  To prevent this, we have made it clear that any
patent must be licensed for everyone's free use or not licensed at all.

  The precise terms and conditions for copying, distribution and
modification follow.

                    GNU GENERAL PUBLIC LICENSE
   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION

  0. This License applies to any program or other work which contains
a notice placed by the copyright holder saying it may be distributed
under the terms of this General Public License.  The "Program", below,
refers to any such program or work, and a "work based on the Program"
means either the Program or any derivative work under copyright law:
that is to say, a work containing the Program or a portion of it,
either verbatim or with modifications and/or translated into another
language.  (Hereinafter, translation is included without limitation in
the term "modification".)  Each licensee is addressed as "you".

Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope.  The act of
running the Program is not restricted, and the output from the Program
is covered only if its contents constitute a work based on the
Program (independent of having been made by running the Program).
Whether that is true depends on what the Program does.

  1. You may copy and distribute verbatim copies of the Program's
source code as you receive it, in any medium, provided that you
conspicuously and appropriately publish on each copy an appropriate
copyright notice and disclaimer of warranty; keep intact all the
notices that refer to this License and to the absence of any warranty;
and give any other recipients of the Program a copy of this License
along with the Program.

You may charge a fee for the physical act of transferring a copy, and
you may at your option offer warranty protection in exchange for a fee.

  2. You may modify your copy or copies of the Program or any portion
of it, thus forming a work based on the Program, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:

    a) You must cause the modified files to carry prominent notices
    stating that you changed the files and the date of any change.

    b) You must cause any work that you distribute or publish, that in
    whole or in part contains or is derived from the Program or any
    part thereof, to be licensed as a whole at no charge to all third
    parties under the terms of this License.

    c) If the modified program normally reads commands interactively
    when run, you must cause it, when started running for such
    interactive use in the most ordinary way, to print or display an
    announcement including an appropriate copyright notice and a
    notice that there is no warranty (or else, saying that you provide
    a warranty) and that users may redistribute the program under
    these conditions, and telling the user how to view a copy of this
    License.  (Exception: if the Program itself is interactive but
    does not normally print such an announcement, your work based on
    the Program is not required to print an announcement.)

These requirements apply to the modified work as a whole.  If
identifiable sections of that work are not derived from the Program,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works.  But when you
distribute the same sections as part of a whole which is a work based
on the Program, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote it.

Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Program.

In addition, mere aggregation of another work not based on the Program
with the Program (or with a work based on the Program) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.

  3. You may copy and distribute the Program (or a work based on it,
under Section 2) in object code or executable form under the terms of
Sections 1 and 2 above provided that you also do one of the following:

    a) Accompany it with the complete corresponding machine-readable
    source code, which must be distributed under the terms of Sections
    1 and 2 above on a medium customarily used for software interchange; or,

    b) Accompany it with a written offer, valid for at least three
    years, to give any third party, for a charge no more than your
    cost of physically performing source distribution, a complete
    machine-readable copy of the corresponding source code, to be
    distributed under the terms of Sections 1 and 2 above on a medium
    customarily used for software interchange; or,

    c) Accompany it with the information you received as to the offer
    to distribute corresponding source code.  (This alternative is
    allowed only for noncommercial distribution and only if you
    received the program in object code or executable form with such
    an offer, in accord with Subsection b above.)

The source code for a work means the preferred form of the work for
making modifications to it.  For an executable work, complete source
code means all the source code for all modules it contains, plus any
associated interface definition files, plus the scripts used to
control compilation and installation of the executable.  However, as a
special exception, the source code distributed need not include
anything that is normally distributed (in either source or binary
form) with the major components (compiler, kernel, and so on) of the
operating system on which the executable runs, unless that component
itself accompanies the executable.

If distribution of executable or object code is made by offering
access to copy from a designated place, then offering equivalent
access to copy the source code from the same place counts as
distribution of the source code, even though third parties are not
compelled to copy the source along with the object code.

  4. You may not copy, modify, sublicense, or distribute the Program
except as expressly provided under this License.  Any attempt
otherwise to copy, modify, sublicense or distribute the Program is
void, and will automatically terminate your rights under this License.
However, parties who have received copies, or rights, from you under
this License will not have their licenses terminated so long as such
parties remain in full compliance.

  5. You are not required to accept this License, since you have not
signed it.  However, nothing else grants you permission to modify or
distribute the Program or its derivative works.  These actions are
prohibited by law if you do not accept this License.  Therefore, by
modifying or distributing the Program (or any work based on the
Program), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Program or works based on it.

  6. Each time you redistribute the Program (or any work based on the
Program), the recipient automatically receives a license from the
original licensor to copy, distribute or modify the Program subject to
these terms and conditions.  You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties to
this License.

  7. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License.  If you cannot
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Program at all.  For example, if a patent
license would not permit royalty-free redistribution of the Program by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Program.

If any portion of this section is held invalid or unenforceable under
any particular circumstance, the balance of the section is intended to
apply and the section as a whole is intended to apply in other
circumstances.

It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system, which is
implemented by public license practices.  Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot
impose that choice.

This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.

  8. If the distribution and/or use of the Program is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Program under this License
may add an explicit geographical distribution limitation excluding
those countries, so that distribution is permitted only in or among
countries not thus excluded.  In such case, this License incorporates
the limitation as if written in the body of this License.

  9. The Free Software Foundation may publish revised and/or new versions
of the General Public License from time to time.  Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.

Each version is given a distinguishing version number.  If the Program
specifies a version number of this License which applies to it and "any
later version", you have the option of following the terms and conditions
either of that version or of any later version published by the Free
Software Foundation.  If the Program does not specify a version number of
this License, you may choose any version ever published by the Free Software
Foundation.

  10. If you wish to incorporate parts of the Program into other free
programs whose distribution conditions are different, write to the author
to ask for permission.  For software which is copyrighted by the Free
Software Foundation, write to the Free Software Foundation; we sometimes
make exceptions for this.  Our decision will be guided by the two goals
of preserving the free status of all derivatives of our free software and
of promoting the sharing and reuse of software generally.

                            NO WARRANTY

  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
REPAIR OR CORRECTION.

  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGES.

                     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
convey the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.

    <one line to give the program's name and a brief idea of what it does.>
    Copyright (C) <year>  <name of author>

    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 2 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, write to the Free Software Foundation, Inc.,
    51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.

Also add information on how to contact you by electronic and paper mail.

If the program is interactive, make it output a short notice like this
when it starts in an interactive mode:

    Gnomovision version 69, Copyright (C) year name of author
    Gnomovision 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, the commands you use may
be called something other than `show w' and `show c'; they could even be
mouse-clicks or menu items--whatever suits your program.

You should also get your employer (if you work as a programmer) or your
school, if any, to sign a "copyright disclaimer" for the program, if
necessary.  Here is a sample; alter the names:

  Yoyodyne, Inc., hereby disclaims all copyright interest in the program
  `Gnomovision' (which makes passes at compilers) written by James Hacker.

  <signature of Ty Coon>, 1 April 1989
  Ty Coon, President of Vice

This 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.
07070100000003000081B40000000000000000000000016290A0C100000039000000000000000000000000000000000000001B00000000spacewalk-backend/Makefile    
NAME := spacewalk-backend

include ../rel-eng/Makefile

   07070100000004000081B40000000000000000000000016290A0C100000B25000000000000000000000000000000000000002300000000spacewalk-backend/Makefile.backend    # Makefile for the backend directory
#
SPACEWALK_FILES = __init__
CODE_DIRS = common server upload_server satellite_tools satellite_exporter po wsgi cdn_tools
PYLINT_DIRS = common upload_server satellite_tools satellite_exporter wsgi
CONF_DIRS = apache-conf rhn-conf logrotate

# We look for config files in "well known" locations (rhn-conf,
# httpd-conf, logrotate)
EXTRA_DIRS = /var/log/rhn /var/log/rhn/reposync /var/cache/rhn /var/cache/rhn/satsync /var/log/rhn/cdnsync

# Docker tests variables
DOCKER_CONTAINER_BASE = uyuni-master
DOCKER_REGISTRY       = registry.mgr.suse.de
DOCKER_RUN_EXPORT     = "PYTHONPATH=/manager/client/rhel/rhnlib/:/manager/client/rhel/rhn-client-tools/src"
DOCKER_VOLUMES        = -v "$(CURDIR)/../:/manager"


all :: all-code all-conf

%-code : Makefile.backend
	@$(foreach d,$(CODE_DIRS), $(MAKE) -C $(d) $* || exit 1; )

%-conf : Makefile.backend
	@$(foreach d,$(CONF_DIRS), $(MAKE) -C $(d) $* || exit 1; )

# now include some Macros
include Makefile.defs

__pylint ::
	$(call update_pip_env)
	pylint --rcfile=pylintrc $(shell find -name '*.py') > reports/pylint.log || true

install :: install-code install-conf

clean :: clean-code clean-conf

test    ::
	$(MAKE) -C common/test/unit-test PYTHON_BIN=$(PYTHON_BIN)
	$(MAKE) -C server/test/unit-test PYTHON_BIN=$(PYTHON_BIN)

unittest ::
	if test -x /usr/bin/unit2 ; then \
		unit2 discover -s satellite_tools/test/unit; \
		unit2 discover -s common/test/unit-test; \
	else \
		$(PYTHON_BIN) -munittest discover -s satellite_tools/test/unit; \
		$(PYTHON_BIN) -munittest discover -s common/test/unit-test; \
	fi

docker_no_db_tests ::
	mkdir -p $(CURDIR)/reports
	@echo "Running satellite_tools/test/unit tests inside of docker $(DOCKER_REGISTRY)/$(DOCKER_CONTAINER_BASE)-pgsql container"
	docker run --rm=true -e $(DOCKER_RUN_EXPORT) $(DOCKER_VOLUMES) $(DOCKER_REGISTRY)/$(DOCKER_CONTAINER_BASE)-pgsql /manager/backend/test/docker-backend-tools-tests.sh
	@echo "Running common/test/unit-test inside of docker $(DOCKER_REGISTRY)/$(DOCKER_CONTAINER_BASE)-pgsql container"
	docker run --rm=true -e $(DOCKER_RUN_EXPORT) $(DOCKER_VOLUMES) $(DOCKER_REGISTRY)/$(DOCKER_CONTAINER_BASE)-pgsql /manager/backend/test/docker-backend-common-tests.sh

docker_pgsql_tests ::
	mkdir -p $(CURDIR)/reports
	@echo "Running Postgresql tests"
	docker run --privileged --rm=true -e $(DOCKER_RUN_EXPORT) $(DOCKER_VOLUMES) $(DOCKER_REGISTRY)/$(DOCKER_CONTAINER_BASE)-pgsql /manager/backend/test/docker-backend-pgsql-tests.sh

docker_pylint ::
	docker run --rm -e $(DOCKER_RUN_EXPORT) $(DOCKER_VOLUMES) $(DOCKER_REGISTRY)/$(DOCKER_CONTAINER_BASE)-pgsql /bin/sh -c "cd /manager/backend; make -f Makefile.backend __pylint"

docker_shell ::
	docker run --rm=true -t -i -e $(DOCKER_RUN_EXPORT) $(DOCKER_VOLUMES) $(DOCKER_REGISTRY)/$(DOCKER_CONTAINER_BASE)-pgsql /bin/bash

test ::
	echo "test"

   07070100000005000081B40000000000000000000000016290A0C1000006FA000000000000000000000000000000000000002000000000spacewalk-backend/Makefile.defs   # Common pathnames and programs for the Spacewalk project
#

# if not defined, definit as a noop
TOP		?= .

# global defines which control this build and where we deploy files
ROOT		?= /usr/share/rhn
export ROOT

ifeq ("$(PYTHON_BIN)", "")
    PYTHON_BIN = "python"
endif

SPACEWALK_ROOT	?= $(shell $(PYTHON_BIN) -c "from distutils.sysconfig import get_python_lib; print(get_python_lib())")/spacewalk
export SPACEWALK_ROOT

PREFIX		?=
export PREFIX

# Compilation stuff
CC		= gcc
PYTHON_INCLUDE	= -I/usr/include/python$(PythonVersion)
CFLAGS		= -Wall -O2 -fomit-frame-pointer $(PYTHON_INCLUDE) -fPIC
SOFLAGS		= -shared -fPIC

# Installation stuff
INSTALL		= /usr/bin/install -c --verbose
INSTALL_BIN	= $(INSTALL) -m 755
INSTALL_DATA	= $(INSTALL) -m 644
INSTALL_DIR	= $(INSTALL) -m 755 -d

# This is for the subdir part
PYFILES		= $(addsuffix .py,$(FILES))

SPACEWALK_PYFILES		= $(addsuffix .py,$(SPACEWALK_FILES))
SPACEWALK_DEST	?= $(SPACEWALK_ROOT)/$(SUBDIR)

# what do we need to install and where
INSTALL_FILES	+= $(PYFILES)
INSTALL_DEST	?= $(ROOT)/$(SUBDIR)

SPACEWALK_INSTALL_FILES	+= $(SPACEWALK_PYFILES)

DIRS		+= $(addprefix $(PREFIX), \
			$(sort $(EXTRA_DIRS)) $(INSTALL_DEST) $(SPACEWALK_ROOT) $(SPACEWALK_DEST))

all :: $(INSTALL_FILES)

install :: all $(DIRS) $(INSTALL_FILES) $(SPACEWALK_INSTALL_FILES)
	@$(foreach f,$(INSTALL_FILES), \
		$(INSTALL_DATA) $(f) $(PREFIX)$(INSTALL_DEST)/$(f) ; )
	@$(foreach f,$(SPACEWALK_INSTALL_FILES), \
		$(INSTALL_DATA) $(f) $(PREFIX)$(SPACEWALK_DEST)/$(f) ; )

$(DIRS):
	$(INSTALL_DIR) $@

clean ::
	@rm -fv *~ *.pyc *.pyo .??*~
	@rm -fv .\#*
	@rm -fv core

# useful macro
descend-subdirs = @$(foreach d,$(SUBDIRS), $(MAKE) -C $(d) $@ || exit 1; )

# subdirs are treated at the end
all install clean:: $(SUBDIRS)
	$(descend-subdirs)


  07070100000006000081B40000000000000000000000016290A0C100000329000000000000000000000000000000000000002200000000spacewalk-backend/Makefile.python THIS_MAKEFILE := $(realpath $(lastword $(MAKEFILE_LIST)))
CURRENT_DIR := $(dir $(THIS_MAKEFILE))
include $(CURRENT_DIR)../rel-eng/Makefile.python

# Docker tests variables
DOCKER_CONTAINER_BASE = uyuni-master
DOCKER_REGISTRY       = registry.mgr.suse.de
DOCKER_RUN_EXPORT     = "PYTHONPATH=$PYTHONPATH"
DOCKER_VOLUMES        = -v "$(CURDIR)/..:/manager"

__pylint ::
	$(call update_pip_env)
	pylint --rcfile=pylintrc $(shell find -name '*.py') > reports/pylint.log || true

docker_pylint ::
	docker run --rm -e $(DOCKER_RUN_EXPORT) $(DOCKER_VOLUMES) $(DOCKER_REGISTRY)/$(DOCKER_CONTAINER_BASE)-pgsql /bin/sh -c "cd /manager/backend; make -f Makefile.python __pylint"

docker_shell ::
	docker run -t -i --rm -e $(DOCKER_RUN_EXPORT) $(DOCKER_VOLUMES) $(DOCKER_REGISTRY)/$(DOCKER_CONTAINER_BASE)-pgsql /bin/bash
   07070100000007000081B40000000000000000000000016290A0C100000D22000000000000000000000000000000000000001D00000000spacewalk-backend/README.ULN  Unbreakable Linux Network integration for Spacewalk
===================================================

This package contains the ULN plugin for the existing spacewalk-repo-sync
utility. The plugin allows you to synchronize ULN channels directly into Spacewalk
channels without requiring the Spacewalk server to be registered to ULN.

Configuration of the plugin
---------------------------

The plugin only requires very basic configuration via the /etc/rhn/spacewalk-repo-sync/uln.conf file.

[main]
username = <ULN SSO username>
password = <ULN SSO password>

As this file contains login credentials for the Unbreakable Linux Network, we strongly recommend ensuring
read-only access to the user that will run spacewalk-repo-sync by setting file permissions to 0400.

The plugin can also use any proxy configured via /etc/rhn/rhn.conf or the Spacewalk web interface.

Configuration of Spacewalk
--------------------------

The plugin extends the functionality of spacewalk-repo-sync by allowing it to download packages and errata
directly from ULN into an existing Spacewalk Software Channel. The configuration procedure is:

1. Create a Spacewalk Software Channel and ULN-based Repository (using the uln:/// style URL)
2. Run spacewalk-repo-sync to sync packages and errata (if available) from ULN into that channel.

Web Interface Configuration
---------------------------

Configuration of ULN repositories within the Spacewalk web interface is identical to configuring
standard yum repositories, except the URL is specially formatted to point directly to ULN.

When configuring a ULN-based repository, use a URL in the format: uln:///<ULN channel label>.

For example, the Oracle Linux 6 (x86_64) Latest channel on ULN has the label "ol6_x86_64_latest", so the
URL would be uln:///ol6_x86_64_latest in Spacewalk.

You can get a list of available ULN channel labels from the ULN web interface.

Command-Line Usage instructions
-------------------------------

This example assumes you have created a Software Channel in Spacewalk with the Channel Label
of oraclelinux6_x86_64_latest and you want to sync the packages and errata from the ULN channel with the
label of ol6_x86_64_latest into this Software Channel.

You will need to know the channel label of the Spacewalk Software Channel as well as the channel label of the
upstream ULN channel you want to synchronize from.

The format of the spacewalk-repo-sync command is:

# spacewalk-repo-sync --type uln --channel=<spacewalk channel label> --url=uln:///<ULN channel label>

For example, to sync the Oracle Linux 6 (x86_64) Latest channel from ULN, you would run:

# spacewalk-repo-sync --type uln --channel=oraclelinux6_x86_64_latest --url=uln:///ol6_x86_64_latest

The command-line parameters are:

-c CHANNEL_LABEL, --channel=CHANNEL_LABEL
    The label of the Spacewalk channel to sync packages to

-u URL, --url=URL
    The url to sync. ULN channels are specified as uln:///<channel_label>. Note there are three / characters in the URL.

-t REPO_TYPE, --type=REPO_TYPE
     The type of repo. To use direct ULN integration, set this to "uln".

It is recommended that a cronjob be manually configured to run this script at least once a day
to keep the Spacewalk channels up-to-date with ULN either by running the script via cron or scheduling
a repository sync via the Spacewalk Taskomatic engine.
  07070100000008000081B40000000000000000000000016290A0C100000265000000000000000000000000000000000000001E00000000spacewalk-backend/__init__.py #
# Copyright (c) 2009--2017 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#
   07070100000009000081B40000000000000000000000016290A0C10000051F000000000000000000000000000000000000001D00000000spacewalk-backend/_apache.py  #!/usr/bin/python
#
# Copyright (c) 2008--2015 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#
#
# this is a dummy module that makes pychecker happy and provides
# the _apache module, whcih is normally provided by mod_python
# when a script runs under it

SERVER_RETURN = 0


def log_error(*_args):
    pass


def make_table(*_args):
    pass


def parse_qs(*_args):
    pass


def parse_qsl(*_args):
    pass

status = None
table = None
config_tree = None
server_root = None
mpm_query = None

# Variables for apache 2+
exists_config_define = None
stat = None

AP_CONN_UNKNOWN = None
AP_CONN_CLOSE = None
AP_CONN_KEEPALIVE = None

APR_NOFILE = None
APR_REG = None
APR_DIR = None
APR_CHR = None
APR_BLK = None
APR_PIPE = None
APR_LNK = None
APR_SOCK = None
APR_UNKFILE = None
 0707010000000A000041FD0000000000000000000000016290A0C100000000000000000000000000000000000000000000001E00000000spacewalk-backend/apache-conf 0707010000000B000081B40000000000000000000000016290A0C1000000EC000000000000000000000000000000000000002700000000spacewalk-backend/apache-conf/Makefile    # Makefile for installation of the httpd configuration files
#

# what is the backend top dir
TOP	= ..

APACHECONFDIR	= /etc/httpd/conf.d

INSTALL_FILES	= $(wildcard *.conf)
INSTALL_DEST	= $(APACHECONFDIR)

include $(TOP)/Makefile.defs
0707010000000C000081B40000000000000000000000016290A0C10000061F000000000000000000000000000000000000003700000000spacewalk-backend/apache-conf/aa-spacewalk-server.conf    #
# Workaround to deal with older (yum|dnf)-rhn-plugin issue where the plugin sends
# mildly-malformed HTTP headers, in a way that strict RFC compliance rejects with
# a 400 (See bz1427625)
#
# If httpd is more recent than 2.4.25, it a) has strict-whitespace-enforcement enabled,
# and b) has an option available to relax the restriction. We do so, so that spacewalk
# clients that have not had their yum|dnf-rhn-plugin updated, can still call home.
#
<IfVersion >= 2.4.25>
  HttpProtocolOptions unsafe
</IfVersion>
#
# Some platforms backported the strict-whitespace-enforcement without updating to 2.4.25.
# RHEL added a define to check in this case, _RH_HAS_HTTPPROTOCOLOPTIONS
#
# If an httpd version does NOT have _RH_HAS_HTTPPROTOCOLOPTIONS defined, then the
# option is ignored. If it IS defined, relax the constraints by default
#
<IfDefine _RH_HAS_HTTPPROTOCOLOPTIONS>
  HTTPProtocolOptions unsafe
</IfDefine>
#
# In either case, this setting can be removed only if a) one is certain that every ISO
# and kickstart-tree in use in the spacewalk-server is not (or at least no longer) affected
# by the problem with the plugin, and b) all existing clients have been updated to the
# fixed version of the plugin, as found in f53a791847105cf422f9fbb41dcb41eeb018c6be
#
# yum-rhn-plugin fixed in versions:
# RHEL5  : UNAFFECTED
# RHEL6  : yum-rhn-plugin-0.9.1-61-el6
# RHEL7  : yum-rhn-plugin-2.0.1-7-el7
# FEDORA : yum-rhn-plugin-2.7.1-1
#
# dnf-rhn-plugin fixed in versions:
# RHEL5  : N/A
# RHEL6  : N/A
# RHEL7  : N/A
# FEDORA : dnf-plugin-spacewalk-2.7.4-1
#
 0707010000000D000081B40000000000000000000000016290A0C10000038B000000000000000000000000000000000000003C00000000spacewalk-backend/apache-conf/zz-spacewalk-server-wsgi.conf   <IfModule !wsgi_module>
    LoadModule wsgi_module modules/mod_wsgi.so
</IfModule>

<Directory /usr/share/rhn>
    <IfVersion <= 2.2>
        Order allow,deny
        Allow from all
    </IfVersion>
    <IfVersion >= 2.4>
        Require all granted
    </IfVersion>
</Directory>

WSGIPythonPath "/usr/share/rhn"

WSGIScriptAlias /APP /usr/share/rhn/wsgi/app.py
WSGIScriptAlias /APPLET /usr/share/rhn/wsgi/applet.py
WSGIScriptAlias /CONFIG-MANAGEMENT /usr/share/rhn/wsgi/config.py
WSGIScriptAlias /CONFIG-MANAGEMENT-TOOL /usr/share/rhn/wsgi/config_tool.py
WSGIScriptAlias /PACKAGE-PUSH /usr/share/rhn/wsgi/package_push.py
WSGIScriptAlias /SAT /usr/share/rhn/wsgi/sat.py
WSGIScriptAlias /SAT-DUMP-INTERNAL /usr/share/rhn/wsgi/sat_dump.py
WSGIScriptAlias /XMLRPC /usr/share/rhn/wsgi/xmlrpc.py

<IfVersion >= 2.4>
    <Directory  /usr/share/rhn/wsgi>
        Require all granted
    </Directory>
</IfVersion>

 0707010000000E000081B40000000000000000000000016290A0C10000028F000000000000000000000000000000000000003700000000spacewalk-backend/apache-conf/zz-spacewalk-server.conf    # ** DO NOT EDIT **
# Master configuration file for the rhn_server setup
#

##
## Spacewalk settings
##
#
<IfDefine !ISSUSE>
<VirtualHost *>

<IfModule mod_jk.c>
    # Inherit the mod_jk settings defined in zz-spacewalk-www.conf
    JkMountCopy On
</IfModule>

<Directory "/var/www/html/*">
        AllowOverride all
</Directory>

RewriteEngine on
RewriteOptions inherit
</VirtualHost>

# Override default httpd prefork settings
#
# On SUSE use /etc/apache2/server-tuning.conf
#
<IfModule prefork.c>
StartServers       8
MinSpareServers    5
MaxSpareServers   20
ServerLimit      256
MaxClients       256
MaxRequestsPerChild  200
</IfModule>
</IfDefine>

 0707010000000F000041FD0000000000000000000000016290A0C100000000000000000000000000000000000000000000001C00000000spacewalk-backend/cdn_tools   07070100000010000081B40000000000000000000000016290A0C10000034A000000000000000000000000000000000000002500000000spacewalk-backend/cdn_tools/Makefile  TOP	= ..

# Specific stuff
SUBDIR	= cdn_tools
SUBDIRS = 
SPACEWALK_FILES	= __init__  constants  manifest \
            activation cdnsync repository common candlepin_api
SCRIPTS = cdn-sync

# check if we can build man pages
DOCBOOK = $(wildcard /usr/bin/docbook2man)

SGMLS	= $(wildcard *.sgml)
MANS	= $(patsubst %.sgml,%.8,$(SGMLS))

BINDIR	= /usr/bin
MANDIR	?= /usr/man

EXTRA_DIRS = $(MANDIR)/man8 $(BINDIR)

include $(TOP)/Makefile.defs

# install scripts
all :: $(SCRIPTS)
install :: $(SCRIPTS) $(PREFIX)/$(BINDIR)
	$(INSTALL_BIN) $(SCRIPTS) $(PREFIX)/$(BINDIR)

ifneq ($(DOCBOOK),)
# install man pages
all	:: $(MANS)
install :: $(MANS) $(PREFIX)/$(MANDIR)
	$(INSTALL_DATA) $(MANS) $(PREFIX)/$(MANDIR)/man8
endif


%.new : %
	sed -e 's|@@ROOT@@|$(ROOT)|g' <$* >$@

%.8 : %.sgml
	$(DOCBOOK) $<

clean ::
	@rm -fv $(MANS) manpage.* *.new

  07070100000011000081B40000000000000000000000016290A0C100000031000000000000000000000000000000000000002800000000spacewalk-backend/cdn_tools/__init__.py   # Copyright (c) 2016 Red Hat, Inc.

__all__ = []
   07070100000012000081B40000000000000000000000016290A0C10000287C000000000000000000000000000000000000002A00000000spacewalk-backend/cdn_tools/activation.py # Copyright (c) 2016--2017 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#

import sys
import json

from spacewalk.cdn_tools import constants
from spacewalk.cdn_tools.candlepin_api import CandlepinApi
from spacewalk.cdn_tools.common import verify_mappings
from spacewalk.cdn_tools.manifest import Manifest, ManifestValidationError
from spacewalk.satellite_tools import satCerts
from spacewalk.satellite_tools.syncLib import log, log2
from spacewalk.server import rhnSQL
from spacewalk.server.importlib.backendOracle import SQLBackend
from spacewalk.server.importlib.channelImport import ChannelFamilyImport
from spacewalk.server.importlib.importLib import ChannelFamily, ContentSource, ContentSourceSsl
from spacewalk.server.importlib.contentSourcesImport import ContentSourcesImport
from spacewalk.server.rhnServer.satellite_cert import SatelliteCert


class Activation(object):
    """Class inserting channel families and SSL metadata into DB."""

    def __init__(self, manifest_path):
        rhnSQL.initDB()
        self.manifest = Manifest(manifest_path)
        self.sat5_cert = SatelliteCert()
        self.sat5_cert.load(self.manifest.get_satellite_certificate())

        verify_mappings()

        f = None
        # Channel families metadata
        try:
            try:
                f = open(constants.CHANNEL_FAMILY_MAPPING_PATH, 'r')
                self.families = json.load(f)
                f.close()
            except IOError:
                e = sys.exc_info()[1]
                log(1, "Ignoring channel mappings: %s" % e)
                self.families = {}
        finally:
            if f is not None:
                f.close()

        self.families_to_import = []

    @staticmethod
    def _remove_certificates():
        for description_prefix in (constants.CA_CERT_NAME,
                                   constants.CLIENT_CERT_PREFIX,
                                   constants.CLIENT_KEY_PREFIX):

            satCerts.delete_rhnCryptoKey_null_org(description_prefix)

    def _update_certificates(self):
        """Delete and insert certificates needed for syncing from CDN repositories."""

        # Remove all previously used certs/keys
        self._remove_certificates()

        # Read RHSM cert
        f = open(constants.CA_CERT_PATH, 'r')
        try:
            ca_cert = f.read()
        finally:
            if f is not None:
                f.close()

        if not satCerts.verify_certificate_dates(str(ca_cert)):
            log2(0, 0, "WARNING: '%s' certificate is not valid." % constants.CA_CERT_PATH, stream=sys.stderr)
        # Insert RHSM cert and certs from manifest into DB
        satCerts.store_rhnCryptoKey(
            constants.CA_CERT_NAME, ca_cert, None)

        for entitlement in self.manifest.get_all_entitlements():
            creds = entitlement.get_credentials()
            cert_name = constants.CLIENT_CERT_PREFIX + creds.get_id()
            key_name = constants.CLIENT_KEY_PREFIX + creds.get_id()
            if not satCerts.verify_certificate_dates(str(creds.get_cert())):
                log2(0, 0, "WARNING: '%s' certificate is not valid." % cert_name, stream=sys.stderr)
            satCerts.store_rhnCryptoKey(cert_name, creds.get_cert(), None)
            satCerts.store_rhnCryptoKey(key_name, creds.get_key(), None)

    def import_channel_families(self):
        """Insert channel family data into DB."""

        log(1, "Channel families in manifest: %d" % len(self.sat5_cert.channel_families))  # pylint: disable=E1101

        batch = []
        for cf in self.sat5_cert.channel_families:  # pylint: disable=E1101
            label = cf.name
            try:
                family = self.families[label]
                family_object = ChannelFamily()
                for k in list(family.keys()):
                    family_object[k] = family[k]
                family_object['label'] = label
                batch.append(family_object)
                self.families_to_import.append(label)
            except KeyError:
                # While channel mappings are not consistent with certificate generated on RHN...
                msg = ("WARNING: Channel family '%s' is provided by manifest but "
                       "was not found in cdn-sync mappings." % label)
                log2(0, 1, msg, stream=sys.stderr)

        log(1, "Channel families to import: %d" % len(batch))
        # Perform import
        backend = SQLBackend()
        importer = ChannelFamilyImport(batch, backend)
        importer.run()

    @staticmethod
    def _remove_repositories():
        """This method removes repositories obtained from manifest"""
        hdel_repos = rhnSQL.prepare("""
            delete from rhnContentSource where
            label like :prefix || '%%'
            and org_id is null
        """)
        hdel_repos.execute(prefix=constants.MANIFEST_REPOSITORY_DB_PREFIX)
        rhnSQL.commit()

    def _update_repositories(self):
        """Setup SSL credential to access repositories
           We do this in 2 steps:
           1. Fetching provided repositories from manifest - URL contains variables to substitute
           2. Assigning one certificate/key set to each repository"""

        # First delete all repositories from previously used manifests
        self._remove_repositories()

        backend = SQLBackend()
        type_id = backend.lookupContentSourceType('yum')

        # Lookup CA cert
        ca_cert = satCerts.lookup_cert(constants.CA_CERT_NAME, None)
        ca_cert_id = int(ca_cert['id'])

        content_sources_batch = {}
        for entitlement in self.manifest.get_all_entitlements():
            # Lookup SSL certificates and keys
            creds = entitlement.get_credentials()
            client_cert = satCerts.lookup_cert(constants.CLIENT_CERT_PREFIX +
                                               creds.get_id(), None)
            client_key = satCerts.lookup_cert(constants.CLIENT_KEY_PREFIX +
                                              creds.get_id(), None)
            client_cert_id = int(client_cert['id'])
            client_key_id = int(client_key['id'])
            content_source_ssl = ContentSourceSsl()
            content_source_ssl['ssl_ca_cert_id'] = ca_cert_id
            content_source_ssl['ssl_client_cert_id'] = client_cert_id
            content_source_ssl['ssl_client_key_id'] = client_key_id
            # Loop provided products
            for product in entitlement.get_products():
                repositories = product.get_repositories()
                for repository in repositories:
                    if repository not in content_sources_batch:
                        content_source = ContentSource()
                        content_source['label'] = constants.MANIFEST_REPOSITORY_DB_PREFIX + repository
                        content_source['source_url'] = repositories[repository]
                        content_source['org_id'] = None
                        content_source['type_id'] = type_id
                        content_source['ssl-sets'] = [content_source_ssl]
                        content_sources_batch[repository] = content_source
                    # There may be more SSL certs to one repository, append it
                    elif content_source_ssl not in content_sources_batch[repository]['ssl-sets']:
                        content_sources_batch[repository]['ssl-sets'].append(content_source_ssl)

        importer = ContentSourcesImport(list(content_sources_batch.values()), backend)
        importer.run()

    def activate(self):
        if self.manifest.check_signature():
            log(0, "Populating channel families...")
            self.import_channel_families()
            log(0, "Updating certificates...")
            self._update_certificates()
            log(0, "Updating manifest repositories...")
            self._update_repositories()
        else:
            raise ManifestValidationError("Manifest validation failed! Make sure the specified manifest is correct.")

    @staticmethod
    def deactivate():
        """Function to remove certificates and manifest repositories from DB"""
        rhnSQL.initDB()
        log(0, "Removing certificates...")
        Activation._remove_certificates()
        log(0, "Removing manifest repositories...")
        Activation._remove_repositories()

    @staticmethod
    def manifest_info(manifest_path):
        manifest = Manifest(manifest_path)
        log(0, "Name: %s" % manifest.get_name(), cleanYN=1)
        log(0, "UUID: %s" % manifest.get_uuid(), cleanYN=1)
        log(0, "Owner ID: %s" % manifest.get_ownerid(), cleanYN=1)
        log(0, "Satellite version: %s" % manifest.get_satellite_version(), cleanYN=1)
        log(0, "Created: %s" % manifest.get_created(), cleanYN=1)
        log(0, "API URL: %s" % manifest.get_api_url(), cleanYN=1)

    @staticmethod
    def download_manifest(old_manifest_path, http_proxy=None, http_proxy_username=None,
                          http_proxy_password=None):
        manifest = Manifest(old_manifest_path)
        candlepin_api = CandlepinApi(current_manifest=manifest, http_proxy=http_proxy,
                                     http_proxy_username=http_proxy_username,
                                     http_proxy_password=http_proxy_password)
        return candlepin_api.export_manifest()

    @staticmethod
    def refresh_manifest(old_manifest_path, http_proxy=None, http_proxy_username=None,
                         http_proxy_password=None):
        manifest = Manifest(old_manifest_path)
        candlepin_api = CandlepinApi(current_manifest=manifest, http_proxy=http_proxy,
                                     http_proxy_username=http_proxy_username,
                                     http_proxy_password=http_proxy_password)
        return candlepin_api.refresh_manifest()
07070100000013000081B40000000000000000000000016290A0C100001F5A000000000000000000000000000000000000002D00000000spacewalk-backend/cdn_tools/candlepin_api.py  # Copyright (c) 2017 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#

import os
import sys
import tempfile

import requests

from spacewalk.cdn_tools.constants import CA_CERT_PATH
from uyuni.common.cli import getUsernamePassword
from spacewalk.common.rhnConfig import CFG
from spacewalk.satellite_tools.syncLib import log, log2


class CandlepinApi(object):
    """Class used to communicate with Candlepin API."""

    def __init__(self, current_manifest=None, username=None, password=None,
                 http_proxy=None, http_proxy_username=None, http_proxy_password=None):
        self.base_url = current_manifest.get_api_url()
        if CFG.CANDLEPIN_SERVER_API:
            log(0, "Overriding Candlepin server to: '%s'" % CFG.CANDLEPIN_SERVER_API)
            self.base_url = CFG.CANDLEPIN_SERVER_API

        if self.base_url.startswith('https'):
            self.protocol = 'https'
        elif self.base_url.startswith('http'):
            self.protocol = 'http'
        else:
            raise ValueError("Invalid protocol in URL: '%s'" % self.base_url)

        if not self.base_url.endswith('/'):
            self.base_url += '/'

        self.current_manifest = current_manifest

        # Authentication with upstream consumer certificate or with username and password
        if self.current_manifest and self.protocol == 'https' and not username:
            self.username = self.password = None
        else:
            log(0, "Candlepin login:")
            self.username, self.password = getUsernamePassword(username, password)

        self.http_proxy = http_proxy
        self.http_proxy_username = http_proxy_username
        self.http_proxy_password = http_proxy_password

    def _get_proxies(self):
        proxies = {}
        if self.http_proxy:
            auth = ""
            if self.http_proxy_username and self.http_proxy_password:
                auth = "%s:%s@" % (self.http_proxy_username, self.http_proxy_password)
            proxy_string = "http://%s%s" % (auth, self.http_proxy)
            proxies["http"] = proxy_string
            proxies["https"] = proxy_string
        return proxies

    def _write_cert(self):
        cert = None
        if self.current_manifest:
            credentials = self.current_manifest.get_consumer_credentials()
            fd, cert_file = tempfile.mkstemp(prefix="/tmp/cert-")
            fo = os.fdopen(fd, 'wb')
            fo.write(credentials.get_cert())
            fo.flush()
            fo.close()

            fd, key_file = tempfile.mkstemp(prefix="/tmp/key-")
            fo = os.fdopen(fd, 'wb')
            fo.write(credentials.get_key())
            fo.flush()
            fo.close()
            cert = (cert_file, key_file)
        return cert

    @staticmethod
    def _delete_cert(cert):
        if cert is not None:
            cert_file, key_file = cert
            if cert_file:
                os.unlink(cert_file)
            if key_file:
                os.unlink(key_file)

    def _call_api(self, url, params=None, method="get"):
        if self.protocol == 'https':
            verify = CA_CERT_PATH
        else:
            verify = False

        response = None
        if self.username is not None and self.password is not None:
            try:
                if method == "get":
                    response = requests.get(url, params=params, proxies=self._get_proxies(),
                                            auth=(self.username, self.password), verify=verify)
                elif method == "put":
                    response = requests.put(url, params=params, proxies=self._get_proxies(),
                                            auth=(self.username, self.password), verify=verify)
                else:
                    raise ValueError("Unsupported method: '%s'" % method)
            except requests.RequestException:
                e = sys.exc_info()[1]
                log2(0, 0, "ERROR: %s" % str(e), stream=sys.stderr)
        else:
            cert = self._write_cert()
            try:
                try:
                    if method == "get":
                        response = requests.get(url, params=params, proxies=self._get_proxies(),
                                                verify=verify, cert=cert)
                    elif method == "put":
                        response = requests.put(url, params=params, proxies=self._get_proxies(),
                                                verify=verify, cert=cert)
                    else:
                        raise ValueError("Unsupported method: '%s'" % method)
                except requests.RequestException:
                    e = sys.exc_info()[1]
                    log2(0, 0, "ERROR: %s" % str(e), stream=sys.stderr)
            finally:
                self._delete_cert(cert)
        return response

    def export_manifest(self, uuid=None, ownerid=None, satellite_version=None):
        """Performs export request to Candlepin API and saves exported manifest to target file.
           Can take required parameters from current manifest or override them with parameters of this method."""
        if uuid is None:
            if self.current_manifest:
                uuid = self.current_manifest.get_uuid()
            else:
                raise ValueError("Uuid is not known.")
        if ownerid is None:
            if self.current_manifest:
                ownerid = self.current_manifest.get_ownerid()
            else:
                raise ValueError("Ownerid is not known.")
        if satellite_version is None:
            if self.current_manifest:
                satellite_version = self.current_manifest.get_satellite_version()
            else:
                raise ValueError("Satellite version is not known.")

        url = "%s%s/export" % (self.base_url, uuid)
        params = {"ext": ["ownerid:%s" % ownerid, "version:%s" % satellite_version]}

        log(1, "URL: '%s'" % url)
        log(1, "Parameters: '%s'" % str(params))

        response = self._call_api(url, params=params, method="get")

        if response is not None:
            # pylint: disable=E1101
            if response.status_code == requests.codes.ok:
                fd, downloaded_manifest = tempfile.mkstemp(prefix="/tmp/manifest-", suffix=".zip")
                fo = os.fdopen(fd, 'wb')
                for chunk in response:
                    fo.write(chunk)
                fo.flush()
                fo.close()
                return downloaded_manifest
            else:
                log2(0, 0, "Status code: %s" % response.status_code, stream=sys.stderr)
                log2(0, 0, "Message: '%s'" % response.text, stream=sys.stderr)

        return None

    def refresh_manifest(self, uuid=None):
        if uuid is None:
            if self.current_manifest:
                uuid = self.current_manifest.get_uuid()
            else:
                raise ValueError("Uuid is not known.")

        url = "%s%s/certificates" % (self.base_url, uuid)

        log(1, "URL: '%s'" % url)

        response = self._call_api(url, method="put")

        if response is not None:
            # pylint: disable=E1101
            if response.status_code == requests.codes.ok or response.status_code == requests.codes.no_content:
                return True
            else:
                log2(0, 0, "Status code: %s" % response.status_code, stream=sys.stderr)
                log2(0, 0, "Message: '%s'" % response.text, stream=sys.stderr)

        return False
  07070100000014000081FD0000000000000000000000016290A0C100002948000000000000000000000000000000000000002500000000spacewalk-backend/cdn_tools/cdn-sync  #!/usr/bin/python

import argparse
import sys
import os

from spacewalk.common.rhnConfig import CFG, initCFG
from uyuni.common.fileutils import cleanupAbsPath
from spacewalk.cdn_tools.common import CustomChannelSyncError, CdnMappingsLoadError, CountingPackagesError
from spacewalk.cdn_tools.cdnsync import CdnSync
from spacewalk.server import rhnSQL
from uyuni.common.usix import raise_with_tb
from rhn import rhnLockfile
from rhn.connections import idn_ascii_to_puny
from spacewalk.server.importlib.importLib import InvalidArchError, \
    InvalidChannelError, InvalidChannelFamilyError, MissingParentChannelError


def system_exit(code, msgs=None):
    """Exit with a code and optional message(s). Saved a few lines of code."""

    if msgs:
        if type(msgs) not in [type([]), type(())]:
            msgs = (msgs, )
        for msg in msgs:
            sys.stderr.write(str(msg) + '\n')
    sys.exit(code)


def process_commandline():
    """process the commandline, setting the CFG object"""

    initCFG('server.satellite')
    CFG.ENABLE_NVREA = 1
    parser = argparse.ArgumentParser()
    parser.add_argument("-l", "--list-channels", action="store_true", help="List channels available to sync.")
    parser.add_argument("-r", "--show-repos", action="store_true",
                        help="Show all repositories assigned to channels for debug purposes. Use together with "
                             "--list-channels or --cdn-certs.")
    parser.add_argument("-c", "--channel", action="append", help="Sync this channel only.")
    parser.add_argument("-m", "--mount-point", action="store", help="Source mount point for import from Content ISO")
    parser.add_argument("--consider-full", action="store_true",
                        help="Mount point will be considered to contain full channels.")
    parser.add_argument("-a", "--add-repo", action="append", help="Attach specified CDN repository to custom channel.")
    parser.add_argument("-d", "--delete-repo", action="append",
                        help="Delete specified CDN repository from custom channel.")
    parser.add_argument("--email", action="store_true", help="e-mail a report of what was synced/imported")
    parser.add_argument("--traceback-mail", action="store",
                        help="alternative email address(es) for sync output (--email option)")
    parser.add_argument("--no-packages", action="store_true", help="Do not sync packages.")
    parser.add_argument("--no-errata", action="store_true", help="Do not sync errata.")
    parser.add_argument("--no-kickstarts", action="store_true", help="Do not sync kickstart repositories.")
    parser.add_argument("--force-all-errata", action="store_true", help="Process metadata of all errata, "
                                                                        "not only missing.")
    parser.add_argument("--force-kickstarts", action="store_true", help="Overwrite kickstart files.")
    parser.add_argument("--clear-cache", action="store_true", help="Delete partially synced channels.")
    parser.add_argument('--http-proxy', action='store', help="alternative http proxy (hostname:port)")
    parser.add_argument('--http-proxy-username', action='store', help="alternative http proxy username")
    parser.add_argument('--http-proxy-password', action='store', help="alternative http proxy password")
    parser.add_argument('-p', '--print-configuration', action='store_true', help='print the configuration and exit')
    parser.add_argument('--count-packages', action='store_true', help="Count number of packages in all "
                        "repositories for every channel")
    parser.add_argument("--no-rpms", action="store_true", help="Do not keep RPMs on disk after DB import (debug only)")
    parser.add_argument("--batch-size", action="store", help="max. batch size for package import (debug only)")
    parser.add_argument("-v", "--verbose", action='count', help="Verbose output. Possible to accumulate: -vvv")
    parser.add_argument("--cdn-certs", action="store_true",
                        help="Print details about currently used SSL certificates for accessing CDN.")
    parser.add_argument("--list-eol", action="store_true",
                        help="List end-of-life info about (some) channels available to sync.")

    cmd_args = parser.parse_args()

    if cmd_args.print_configuration:
        CFG.show()
        sys.exit(0)

    if cmd_args.http_proxy:
        try:
            int(cmd_args.http_proxy.split(':')[1])
        except ValueError:
            system_exit(1, "Incorrect proxy port number: %s" % cmd_args.http_proxy.split(':')[1])
        CFG.set("HTTP_PROXY", idn_ascii_to_puny(cmd_args.http_proxy))
        CFG.set("HTTP_PROXY_USERNAME", cmd_args.http_proxy_username)
        CFG.set("HTTP_PROXY_PASSWORD", cmd_args.http_proxy_password)

    CFG.set("TRACEBACK_MAIL", cmd_args.traceback_mail or CFG.TRACEBACK_MAIL)

    if cmd_args.mount_point:
        cmd_args.mount_point = cleanupAbsPath(cmd_args.mount_point)
        if not os.path.isdir(cmd_args.mount_point):
            system_exit(1, "Invalid mount point: %s" % cmd_args.mount_point)

    if cmd_args.channel:
        cmd_args.channel = set(cmd_args.channel)

    if cmd_args.batch_size:
        try:
            batch_size = int(cmd_args.batch_size)
            if batch_size <= 0:
                raise ValueError()
        except ValueError:
            system_exit(1, "Invalid batch size: %s" % cmd_args.batch_size)

    return cmd_args


def getDbIssParent():
    rhnSQL.initDB()
    sql = "select label from rhnISSMaster where is_current_master = 'Y'"
    h = rhnSQL.prepare(sql)
    h.execute()
    row = h.fetchone_dict()
    if not row:
        return None
    return row['label']


if __name__ == '__main__':
    LOCK = None
    try:
        # quick check to see if you are a super-user.
        if os.getuid() != 0:
            sys.stderr.write("ERROR: must be root to execute\n")
            sys.exit(8)

        # acquire lock/check for other instances of cdn-sync
        #   i.e., lock against multiple instances of cdn-sync
        LOCK = rhnLockfile.Lockfile('/var/run/cdn-sync.pid')

        args = process_commandline()

        if CFG.get('disconnected') == 1:
            system_exit(1, 'ERROR: the Satellite server is installed in disconnected mode, cannot continue syncing '
                        'from CDN')

        if getDbIssParent() or (CFG.get('iss_parent') and CFG.get('disable_iss') == 0):
            parent = getDbIssParent()
            if not parent:
                parent = CFG.get('iss_parent')
            system_exit(1, 'ERROR: the Satellite server is registered to a parent Satellite "%s".\nTo sync content '
                        'from the parent Satellite via Inter-Satellite-Sync, please, use the "satellite-sync" command' %
                        parent)

        cdnsync = CdnSync(no_packages=args.no_packages, no_errata=args.no_errata,
                          no_rpms=args.no_rpms, no_kickstarts=args.no_kickstarts,
                          log_level=args.verbose, mount_point=args.mount_point,
                          consider_full=args.consider_full,
                          force_all_errata=args.force_all_errata,
                          force_kickstarts=args.force_kickstarts,
                          email=args.email, import_batch_size=args.batch_size)

        error_messages = []
        if args.list_channels:
            if args.count_packages:
                cdnsync.count_packages(channels=args.channel)
            cdnsync.print_channel_tree(repos=args.show_repos)
        elif args.count_packages:
            cdnsync.count_packages(channels=args.channel)
        elif args.clear_cache:
            cdnsync.clear_cache()
        elif args.cdn_certs:
            cdnsync.print_cdn_certificates_info(repos=args.show_repos)
        elif args.list_eol:
            cdnsync.print_eol_channel_list()
        elif args.add_repo or args.delete_repo:
            error_messages = cdnsync.setup_repos_and_sync(channels=args.channel, add_repos=args.add_repo,
                                                          delete_repos=args.delete_repo)
        else:
            error_messages = cdnsync.sync(channels=args.channel)

        cdnsync.send_email(additional_messages=error_messages)

        if error_messages:
            system_exit(1, error_messages)

        LOCK.release()

    except KeyboardInterrupt:
        system_exit(1, "\nProcess has been interrupted.")
    except SystemExit:
        e = sys.exc_info()[1]
        if LOCK:
            LOCK.release()
        sys.exit(e.code)
    except rhnLockfile.LockfileLockedException:
        system_exit(1, "SYNC ERROR: attempting to run more than one instance of cdn-sync. Exiting.")
    except CustomChannelSyncError:
        e = sys.exc_info()[1]
        if LOCK:
            LOCK.release()
        system_exit(13, ["ERROR: custom CDN repository sync failed: ", e])
    except (MissingParentChannelError, InvalidChannelFamilyError,
            InvalidChannelError, InvalidArchError):
        e = sys.exc_info()[1]
        if LOCK:
            LOCK.release()
        system_exit(1, "SYNC ERROR: %s. Exiting." % str(e))
    except rhnSQL.SQLError:
        e = sys.exc_info()[1]
        if LOCK:
            LOCK.release()
        system_exit(20, ["DATABASE ERROR: %s. " % str(e), "Check if your database is running."])
    except CdnMappingsLoadError:
        e = sys.exc_info()[1]
        system_exit(30, ["ERROR: %s" % str(e)])
    except IOError:
        e = sys.exc_info()[1]
        if LOCK:
            LOCK.release()
        # Broken pipe
        if e.errno != 32:
            raise_with_tb(Exception("SYNC ERROR: attempting to display as much information as possible\n %s" % str(e)),
                          sys.exc_info()[2])
    except CountingPackagesError:
        e = sys.exc_info()[1]
        if LOCK:
            LOCK.release()
        system_exit(20, "ERROR: Problem occurred during package counting: %s" % str(e))
    except EOFError:
        e = sys.exc_info()[0]
        if LOCK:
            LOCK.release()
        system_exit(40, "SYNC ERROR: Perhaps checksum_cache is corrupted? Remove /var/cache/rhn/reposync/checksum_cache and retry.\n%s" % str(e))

    except Exception:
        e = sys.exc_info()[1]
        if LOCK:
            LOCK.release()
        raise_with_tb(Exception("SYNC ERROR: attempting to display as much information as possible\n %s" % str(e)),
                      sys.exc_info()[2])
else:
    raise ImportError("module cannot be imported")
07070100000015000081B40000000000000000000000016290A0C100003659000000000000000000000000000000000000002A00000000spacewalk-backend/cdn_tools/cdn-sync.sgml <!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook V3.1//EN" [
<!ENTITY RHNSAT "Red Hat Satellite Server" >
<!ENTITY CDNSYNC "Red Hat Satellite Incremental Synchronization Tool for Red Hat CDN repositories ">

]>
<refentry>

<RefMeta>
<RefEntryTitle>cdn-sync</RefEntryTitle><manvolnum>8</manvolnum>
<RefMiscInfo>Version 1.0.0</RefMiscInfo>
</RefMeta>

<RefNameDiv>
<RefName><command>cdn-sync</command></RefName>
<RefPurpose>
Incrementally synchronize an Red Hat Satellite's RPM repository with Red Hat's CDN RPM repository.
</RefPurpose>
</RefNameDiv>

<RefSynopsisDiv>
<Synopsis>
    <cmdsynopsis>
        <command>cdn-sync</command>
        <arg>options <replaceable>...</replaceable></arg>
    </cmdsynopsis>
    <cmdsynopsis>
        <arg>-l</arg> <arg>--list-channels</arg>
    </cmdsynopsis>
    <cmdsynopsis>
        <arg>-r</arg> <arg>--show-repos</arg>
    </cmdsynopsis>
    <cmdsynopsis>
        <arg>-c<replaceable> CHANNEL</replaceable></arg>
        <arg>--channel=<replaceable>CHANNEL</replaceable></arg>
    </cmdsynopsis>
    <cmdsynopsis>
        <arg>-m<replaceable> MOUNT_POINT</replaceable></arg>
        <arg>--mount-point=<replaceable>MOUNT_POINT</replaceable></arg>
    </cmdsynopsis>
    <cmdsynopsis>
        <arg>--consider-full</arg>
    </cmdsynopsis>
    <cmdsynopsis>
        <arg>-p</arg> <arg>--print-configuration</arg>
    </cmdsynopsis>
    <cmdsynopsis>
        <arg>-a<replaceable> REPO</replaceable></arg>
        <arg>--add-repo=<replaceable>REPO</replaceable></arg>
    </cmdsynopsis>
    <cmdsynopsis>
        <arg>-d<replaceable> REPO</replaceable></arg>
        <arg>--delete-repo=<replaceable>REPO</replaceable></arg>
    </cmdsynopsis>
    <cmdsynopsis>
        <arg>--email</arg>
    </cmdsynopsis>
    <cmdsynopsis>
        <arg>--traceback-mail=<replaceable>EMAIL_ADDESS(ES)</replaceable></arg>
    </cmdsynopsis>
    <cmdsynopsis>
        <arg>--no-rpms</arg>
    </cmdsynopsis>
    <cmdsynopsis>
        <arg>--no-packages</arg>
    </cmdsynopsis>
    <cmdsynopsis>
        <arg>--no-errata</arg>
    </cmdsynopsis>
    <cmdsynopsis>
        <arg>--no-kickstarts</arg>
    </cmdsynopsis>
    <cmdsynopsis>
        <arg>--force-all-errata</arg>
    </cmdsynopsis>
    <cmdsynopsis>
        <arg>--force-kickstarts</arg>
    </cmdsynopsis>
    <cmdsynopsis>
        <arg>--http-proxy<replaceable> HTTP_PROXY_HOSTNAME:PORT</replaceable></arg>
    </cmdsynopsis>
    <cmdsynopsis>
        <arg>--http-proxy-username<replaceable> HTTP_PROXY_USERNAME</replaceable></arg>
    </cmdsynopsis>
    <cmdsynopsis>
        <arg>--http-proxy-password<replaceable> HTTP_PROXY_PASSWORD</replaceable></arg>
    </cmdsynopsis>
    <cmdsynopsis>
        <arg>--batch-size=<replaceable>BATCH_SIZE</replaceable></arg>
    </cmdsynopsis>
    <cmdsynopsis>
        <arg>-h</arg> <arg>--help</arg>
    </cmdsynopsis>
    <cmdsynopsis>
        <arg>--count-packages</arg>
    </cmdsynopsis>
    <cmdsynopsis>
        <arg>--clear-cache</arg>
    </cmdsynopsis>
    <cmdsynopsis>
        <arg>-v</arg> <arg>--verbose</arg>
    </cmdsynopsis>
    <cmdsynopsis>
        <arg>--cdn-certs</arg>
    </cmdsynopsis>
    <cmdsynopsis>
        <arg>--list-eol</arg>
    </cmdsynopsis>
</Synopsis>
</RefSynopsisDiv>

<RefSect1><Title>Description</Title>
<para>
    The &CDNSYNC; (<emphasis>cdn-sync</emphasis>) synchronizes
    a &RHNSAT; with Red Hat's CDN servers.
</para>
<para>
    This tool enables a &RHNSAT; to update its database metadata and
    RPM packages with that of Red Hat. This action can be performed via
    the internet (ie. directly). To use this tool a &RHNSAT; must be
    registered to RHSM and must not be registered to another &RHNSAT;.
    For live content synchronizing via Inter-Satelite-Sync (ISS),
    or from local content on disk, please, use <emphasis>satellite-sync</emphasis>.
</para>
<para>
        <simplelist>
            <member>o channels: sync channel data</member>
        </simplelist>
        <simplelist>
            <member>o rpms: sync (fetch) rpms</member>
        </simplelist>
        <simplelist>
            <member>o packages: sync full package metadata for those rpms fetched successfully</member>
        </simplelist>
        <simplelist>
            <member>o errata: sync errata data</member>
        </simplelist>
        <simplelist>
            <member>o kickstarts: sync kickstart data</member>
        </simplelist>
</para>
</RefSect1>

<RefSect1><Title>Options</Title>
<variablelist>
    <varlistentry>
        <term>-h, --help</term>
        <listitem>
            <para>Display the help screen with a list of options.</para>
        </listitem>
    </varlistentry>
    <varlistentry>
        <term>--count-packages</term>
        <listitem>
            <para>Count number of packages in all repositories for every channel.</para>
        </listitem>
    </varlistentry>
    <varlistentry>
        <term>-l, --list-channels</term>
        <listitem>
            <para>list all available channels for import/syncing and exit. Output in format:</para>
            <para>STATUS NAME NUMBER_PACKAGES</para>
            <para>STATUS: 'p' = previously imported/synced channel, '.' = channel not yet imported/synced.</para>
            <para>NUMBER_PACKAGES: '?' = No CDN source provided to count number of packages, '0' = no packages
            in channel OR packages are not counted yet (it's necessary to run cdn-sync with --count-packages),
            number of packages.</para>
        </listitem>
    </varlistentry>
    <varlistentry>
        <term>-r, --show-repos</term>
        <listitem>
            <para>Show all repositories assigned to channels for debug purposes. Use together with
                  --list-channels or --cdn-certs.</para>
        </listitem>
    </varlistentry>
    <varlistentry>
        <term>-c, --channel<replaceable> CHANNEL</replaceable></term>
        <listitem>
            <para>process data for this channel only.</para>
        </listitem>
    </varlistentry>
    <varlistentry>
        <term>-m, --mount-point<replaceable> MOUNT_POINT</replaceable></term>
        <listitem>
            <para>Source mount point for import from Content ISO.</para>
        </listitem>
    </varlistentry>
    <varlistentry>
        <term>--consider-full</term>
        <listitem>
            <para>When this option is used, channels being synced from Content ISO mount point will be considered to be
            full channels. Any package in channel but not in the mounted ISO will be deleted. Without this option the
            Content ISO is interpreted as Incremental Content ISO. This option makes sense only together with --mount-point.
            Live sync is always considered as full sync.</para>
        </listitem>
    </varlistentry>
    <varlistentry>
        <term>-p, --print-configuration</term>
        <listitem>
            <para>print the current configuration and exit.</para>
        </listitem>
    </varlistentry>
    <varlistentry>
        <term>-a, --add-repo<replaceable> REPO</replaceable></term>
        <listitem>
            <para>Attach specified CDN repository to custom channel. Single custom channel has to be specified using
            --channel parameter. This parameter can be specified multiple times to attach multiple repositories.
            After repositories are attached, sync of channel is processed. On next run, channel can be synced directly
            using --channel parameter. Only CDN repositories not attached to channels provided by cdn-sync mappings
            can be attached to custom channels.</para>
        </listitem>
    </varlistentry>
    <varlistentry>
        <term>-d, --delete-repo<replaceable> REPO</replaceable></term>
        <listitem>
            <para>Delete specified CDN repository from custom channel. Single custom channel has to be specified using
            --channel parameter. This parameter can be specified multiple times to delete multiple repositories.
            After repositories are deleted, sync of channel is processed. On next run, channel can be synced directly
            using --channel parameter.</para>
        </listitem>
    </varlistentry>
    <varlistentry>
        <term>--email</term>
        <listitem>
            <para>e-mail a report of what was synced/imported (sent to whomever
            is considered the receiver of "traceback_mail").</para>
        </listitem>
    </varlistentry>
    <varlistentry>
        <term>--traceback-mail=<replaceable>EMAIL_ADDRESS(ES)</replaceable></term>
        <listitem>
            <para>alternative email address(es) for all sync correspondence.
            Example: --traceback-mail="user1@example.com, user2@example.com".</para>
        </listitem>
    </varlistentry>
    <varlistentry>
        <term>--no-rpms</term>
        <listitem>
            <para>do not keep downloaded RPMs on disk after DB import (debug only).</para>
        </listitem>
    </varlistentry>
    <varlistentry>
        <term>--no-packages</term>
        <listitem>
            <para>do not process full package metadata.</para>
        </listitem>
    </varlistentry>
    <varlistentry>
        <term>--no-errata</term>
        <listitem>
            <para>do not process errata data.</para>
        </listitem>
    </varlistentry>
    <varlistentry>
        <term>--no-kickstarts</term>
        <listitem>
            <para>do not process kickstart data (provisioning feature).</para>
        </listitem>
    </varlistentry>
    <varlistentry>
        <term>--force-all-errata</term>
        <listitem>
            <para>process metadata of all errata, not only missing.</para>
        </listitem>
    </varlistentry>
    <varlistentry>
        <term>--force-kickstarts</term>
        <listitem>
            <para>download and overwrite existing kickstart data.</para>
        </listitem>
    </varlistentry>
    <varlistentry>
        <term>--http-proxy<replaceable> HTTP_PROXY_HOSTNAME:PORT</replaceable></term>
        <listitem>
             <para>alternative http proxy address and port (hostname:port)</para>
        </listitem>
    </varlistentry>
    <varlistentry>
        <term>--http-proxy-username<replaceable> HTTP_PROXY_USERNAME</replaceable></term>
        <listitem>
            <para>alternative http proxy username</para>
        </listitem>
    </varlistentry>

    <varlistentry>
        <term>--http-proxy-password<replaceable> HTTP_PROXY_PASSWORD</replaceable></term>
        <listitem>
            <para>alternative http proxy password</para>
        </listitem>
    </varlistentry>
    <varlistentry>
        <term>--batch-size=<replaceable>BATCH_SIZE</replaceable></term>
        <listitem>
            <para>maximum batch size for package import</para>
            <para>This option should not be used except for debugging
            purposes. The most useful case being --batch-size=1 where the
            database import process each piece of meta-data one at a time,
            isolating any issues.</para>
            <para>WARNING: --batch-size=1 will dramatically slow down the
            sync process.</para>
        </listitem>
    </varlistentry>
    <varlistentry>
        <term>-v, --verbose</term>
        <listitem>
            <para>Verbose output. Possible to accumulate: -vvv.</para>
        </listitem>
    </varlistentry>

    <varlistentry>
        <term>--clear-cache</term>
        <listitem>
            <para>Delete partially synced channels.</para>
        </listitem>
    </varlistentry>
    <varlistentry>
        <term>--cdn-certs</term>
        <listitem>
            <para>Print details about currently used SSL certificates for accessing CDN.</para>
        </listitem>
    </varlistentry>
    <varlistentry>
        <term>--list-eol</term>
        <listitem>
            <para>List end-of-life info about (some) channels available to sync.</para>
        </listitem>
    </varlistentry>
</variablelist>
</RefSect1>

<RefSect1><Title>Configuration files</Title>
<variablelist>
    <varlistentry>
        <term>/etc/rhn/rhn.conf</term>
        <listitem>
            <variablelist>
                <varlistentry>
                    <term>server.satellite.reposync_download_threads = 5</term>
                    <listitem>
                        <para>Set maximum number of threads to be used for simultaneous downloads.</para>
                    </listitem>
                </varlistentry>
            </variablelist>
        </listitem>
    </varlistentry>
</variablelist>
</RefSect1>

<RefSect1><Title>Examples</Title>
<simplelist>
        <member><command>cdn-sync --count-packages</command></member>
        <member><command>cdn-sync --list-channels</command></member>
        <member><command>cdn-sync --list-channels --show-repos</command></member>
        <member><command>cdn-sync --channel rhel-i386-server-6</command></member>
        <member><command>cdn-sync # syncs all previously synced channels</command></member>
        <member><command>cdn-sync -c rhel-i386-server-6 -c rhel-i386-server-5</command></member>
        <member><command>cdn-sync -c my-custom-channel --add-repo /content/dist/rhel/server/6/6Server/x86_64/sat-tools/6.2/os</command></member>
        <member><command>cdn-sync -c my-custom-channel # syncs custom channel with all previously added CDN repositories</command></member>
        <member><command>cdn-sync -c my-custom-channel -d /content/dist/rhel/server/6/6Server/x86_64/sat-tools/6.2/os</command></member>
</simplelist>
</RefSect1>

<RefSect1><Title>See Also</Title>
<simplelist>
    <member>rhn-satellite-activate(8)</member>
    <member>rhnpush(8)</member>
    <member>spacewalk-repo-sync(8)</member>
</simplelist>
</RefSect1>

<RefSect1><Title>Authors</Title>
<simplelist>
    <member>Gennadii Altukhov <email>galt@redhat.com</email></member>
    <member>Jan Dobes <email>jdobes@redhat.com</email></member>
</simplelist>
</RefSect1>
</RefEntry>

<!--
vim: sw=4
-->
   07070100000016000081B40000000000000000000000016290A0C10000AA14000000000000000000000000000000000000002700000000spacewalk-backend/cdn_tools/cdnsync.py    # Copyright (c) 2016--2018 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#

import json
import errno
import os
import sys
import fnmatch
from datetime import datetime, timedelta

from . import constants
from spacewalk.common.rhnConfig import CFG, initCFG, PRODUCT_NAME
from spacewalk.common import rhnLog
from spacewalk.server import rhnSQL
from spacewalk.server.rhnChannel import channel_info
from spacewalk.server.importlib.backendOracle import SQLBackend
from spacewalk.server.importlib.contentSourcesImport import ContentSourcesImport
from spacewalk.server.importlib.channelImport import ChannelImport
from spacewalk.server.importlib.productNamesImport import ProductNamesImport
from spacewalk.server.importlib.importLib import Channel, ChannelFamily, \
    ProductName, DistChannelMap, ReleaseChannelMap
from spacewalk.satellite_tools import reposync
from spacewalk.satellite_tools import contentRemove
from spacewalk.satellite_tools.download import ThreadedDownloader, ProgressBarLogger
from spacewalk.satellite_tools.satCerts import get_certificate_info, verify_certificate_dates
from spacewalk.satellite_tools.syncLib import log, log2disk, log2, initEMAIL_LOG, log2email, log2background
from spacewalk.satellite_tools.repo_plugins import yum_src

from .common import CustomChannelSyncError, CountingPackagesError, verify_mappings, human_readable_size
from .repository import CdnRepositoryManager, CdnRepositoryNotFoundError


class CdnSync(object):
    """Main class of CDN sync run."""

    log_path = '/var/log/rhn/cdnsync.log'

    def __init__(self, no_packages=False, no_errata=False, no_rpms=False, no_kickstarts=False,
                 log_level=None, mount_point=None, consider_full=False, force_kickstarts=False,
                 force_all_errata=False, email=False, import_batch_size=None):

        if log_level is None:
            log_level = 0
        self.log_level = log_level
        CFG.set('DEBUG', log_level)
        self.email = email
        if self.email:
            initEMAIL_LOG()
        rhnLog.initLOG(self.log_path, self.log_level)
        log2disk(0, "Command: %s" % str(sys.argv))

        rhnSQL.initDB()
        initCFG('server.satellite')

        self.cdn_repository_manager = CdnRepositoryManager(mount_point)
        self.no_packages = no_packages
        self.no_errata = no_errata
        self.no_rpms = no_rpms
        if self.no_packages and self.no_rpms:
            log(0, "Parameter --no-rpms has no effect.")
        self.no_kickstarts = no_kickstarts
        self.force_all_errata = force_all_errata
        self.force_kickstarts = force_kickstarts
        if self.no_kickstarts and self.force_kickstarts:
            log(0, "Parameter --force-kickstarts has no effect.")

        if mount_point:
            self.mount_point = "file://" + mount_point
            self.consider_full = consider_full
        else:
            self.mount_point = CFG.CDN_ROOT
            self.consider_full = True

        verify_mappings()

        f = None
        # try block in try block - this is hack for python 2.4 compatibility
        # to support finally
        try:
            try:
                # Channel families mapping to channels
                f = open(constants.CHANNEL_FAMILY_MAPPING_PATH, 'r')
                self.families = json.load(f)
                f.close()

                # Channel metadata
                f = open(constants.CHANNEL_DEFINITIONS_PATH, 'r')
                self.channel_metadata = json.load(f)
                f.close()

                # Dist/Release channel mapping
                f = open(constants.CHANNEL_DIST_MAPPING_PATH, 'r')
                self.channel_dist_mapping = json.load(f)
                f.close()

                # Kickstart metadata
                f = open(constants.KICKSTART_DEFINITIONS_PATH, 'r')
                self.kickstart_metadata = json.load(f)
                f.close()
            except IOError:
                e = sys.exc_info()[1]
                log(1, "Ignoring channel mappings: %s" % e)
                self.families = {}
                self.channel_metadata = {}
                self.channel_dist_mapping = {}
                self.kickstart_metadata = {}
        finally:
            if f is not None:
                f.close()

        # Map channels to their channel family
        self.channel_to_family = {}
        for family in self.families:
            for channel in self.families[family]['channels']:
                self.channel_to_family[channel] = family

        # Set already synced channels, entitled null-org channels and custom channels with associated
        # CDN repositories
        h = rhnSQL.prepare("""
            select distinct c.label, c.org_id
            from rhnChannelFamilyPermissions cfp inner join
                 rhnChannelFamily cf on cfp.channel_family_id = cf.id inner join
                 rhnChannelFamilyMembers cfm on cf.id = cfm.channel_family_id inner join
                 rhnChannel c on cfm.channel_id = c.id
            where c.org_id is null
              or (c.org_id is not null and 
                  exists (
                          select cs.id
                          from rhnContentSource cs inner join
                               rhnChannelContentSource ccs on ccs.source_id = cs.id
                          where ccs.channel_id = c.id
                            and cs.org_id is null
                         )
                 )
            order by c.org_id nulls first, label
        """)
        h.execute()
        channels = h.fetchall_dict() or []
        self.synced_channels = {}
        for channel in channels:
            # Custom channel repositories not available, don't mark as synced
            if channel['org_id']:
                repos = self.cdn_repository_manager.list_associated_repos(channel['label'])
                if not all([self.cdn_repository_manager.check_repository_availability(r) for r in repos]):
                    continue
            self.synced_channels[channel['label']] = channel['org_id']

        # Select available channel families from DB
        h = rhnSQL.prepare("""
            select distinct label
            from rhnChannelFamilyPermissions cfp inner join
                 rhnChannelFamily cf on cfp.channel_family_id = cf.id
            where cf.org_id is null
        """)
        h.execute()
        families = h.fetchall_dict() or []
        self.entitled_families = [f['label'] for f in families]
        self.import_batch_size = import_batch_size

    def _tree_available_channels(self):
        # collect all channel from available families
        all_channels = []
        channel_tree = {}
        # Not available parents of child channels
        not_available_channels = []
        for label in self.entitled_families:
            try:
                family = self.families[label]
            except KeyError:
                log2(2, 2, "WARNING: Can't find channel family in mappings: %s" % label, stream=sys.stderr)
                continue
            channels = [c for c in family['channels'] if c is not None]
            all_channels.extend(channels)

        # filter available channels
        all_channels = [x for x in all_channels if
                        self.cdn_repository_manager.check_channel_availability(x, self.no_kickstarts)]

        for base_channel in [x for x in all_channels if not self.channel_metadata[x]['parent_channel']]:
            channel_tree[base_channel] = []
        for child_channel in [x for x in all_channels if self.channel_metadata[x]['parent_channel']]:
            parent_channel = self.channel_metadata[child_channel]['parent_channel']
            # Parent not available, orphaned child channel
            if parent_channel not in channel_tree:
                channel_tree[parent_channel] = []
                not_available_channels.append(parent_channel)
            channel_tree[parent_channel].append(child_channel)

        return channel_tree, not_available_channels

    def _list_available_channels(self):
        channel_tree, not_available_channels = self._tree_available_channels()
        # Collect all channels
        channel_list = []
        for base_channel in channel_tree:
            channel_list.extend(channel_tree[base_channel])
            if base_channel not in not_available_channels:
                channel_list.append(base_channel)
        return channel_list

    def _can_add_repos(self, db_channel, repos):
        # Adding custom repositories to custom channel, need to check:
        # 1. Repositories availability - if there are SSL certificates for them
        # 2. Channel is custom
        # 3. Repositories are not already associated with any channels in mapping files
        if not db_channel or not db_channel['org_id']:
            log2(0, 0, "ERROR: Channel doesn't exist or is not custom.", stream=sys.stderr)
            return False
        # Repositories can't be part of any channel from mappings
        channels = []
        for repo in repos:
            channels.extend(self.cdn_repository_manager.list_channels_containing_repository(repo))
        if channels:
            log2(0, 0, "ERROR: Specified repositories can't be synced because they are part of following channels: %s" %
                 ", ".join(channels), stream=sys.stderr)
            return False
        # Check availability of repositories
        not_available = []
        for repo in repos:
            if not self.cdn_repository_manager.check_repository_availability(repo):
                not_available.append(repo)
        if not_available:
            log2(0, 0, "ERROR: Following repositories are not available: %s" % ", ".join(not_available),
                 stream=sys.stderr)
            return False
        return True

    def _is_channel_available(self, label):
        # Checking channel availability, it means either:
        # 1. Trying to sync custom channel - in this case, it has to have already associated CDN repositories,
        #    it's ensured by query populating synced_channels variable
        # 2. Trying to sync channel from mappings - it may not exists so we check requirements from mapping files
        db_channel = channel_info(label)
        if db_channel and db_channel['org_id']:
            # Custom channel doesn't have any null-org repositories assigned
            if label not in self.synced_channels:
                log2(0, 0, "ERROR: Custom channel '%s' doesn't contain any CDN repositories." % label,
                     stream=sys.stderr)
                return False
        else:
            if label not in self.channel_metadata:
                log2(1, 1, "WARNING: Channel '%s' not found in channel metadata mapping." % label, stream=sys.stderr)
                return False
            elif label not in self.channel_to_family:
                log2(0, 0, "ERROR: Channel '%s' not found in channel family mapping." % label, stream=sys.stderr)
                return False
            family = self.channel_to_family[label]
            if family not in self.entitled_families:
                log2(0, 0, "ERROR: Channel family '%s' containing channel '%s' is not entitled." % (family, label),
                     stream=sys.stderr)
                return False
            elif not self.cdn_repository_manager.check_channel_availability(label, self.no_kickstarts):
                log2(0, 0, "ERROR: Channel '%s' repositories are not available." % label, stream=sys.stderr)
                return False
        return True

    def _update_product_names(self, channels):
        backend = SQLBackend()
        batch = []

        for label in channels:
            channel = self.channel_metadata[label]
            if channel['product_label'] and channel['product_name']:
                product_name = ProductName()
                product_name['label'] = channel['product_label']
                product_name['name'] = channel['product_name']
                batch.append(product_name)

        importer = ProductNamesImport(batch, backend)
        importer.run()

    def _update_channels_metadata(self, channels):
        # First populate rhnProductName table
        self._update_product_names(channels)

        backend = SQLBackend()
        channels_batch = []
        content_sources_batch = []

        for label in channels:
            channel = self.channel_metadata[label]
            channel_object = Channel()
            for k in list(channel.keys()):
                channel_object[k] = channel[k]

            family_object = ChannelFamily()
            family_object['label'] = self.channel_to_family[label]

            channel_object['families'] = [family_object]
            channel_object['label'] = label
            channel_object['basedir'] = '/'

            # Backend expects product_label named as product_name
            # To have correct value in rhnChannelProduct and reference
            # to rhnProductName in rhnChannel
            channel_object['product_name'] = channel['product_label']

            dists = []
            releases = []

            # Distribution/Release channel mapping available
            if label in self.channel_dist_mapping:
                dist_map = self.channel_dist_mapping[label]
                for item in dist_map:
                    if item['eus_release']:
                        r = ReleaseChannelMap()
                        r['product'] = item['os']
                        r['version'] = item['release']
                        r['release'] = item['eus_release']
                        r['channel_arch'] = item['channel_arch']
                        releases.append(r)
                    else:
                        d = DistChannelMap()
                        for k in item:
                            d[k] = item[k]
                        dists.append(d)

            channel_object['dists'] = dists
            channel_object['release'] = releases

            sources = self.cdn_repository_manager.get_content_sources_import_batch(label, backend)
            content_sources_batch.extend(sources)
            channel_object['content-sources'] = sources

            # Set default channel access to private
            channel_object['channel_access'] = 'private'

            channels_batch.append(channel_object)

        importer = ContentSourcesImport(content_sources_batch, backend)
        importer.run()

        importer = ChannelImport(channels_batch, backend)
        importer.run()

    def _create_yum_repo(self, repo_source):
        repo_label = self.cdn_repository_manager.get_content_source_label(repo_source)
        try:
            keys = self.cdn_repository_manager.get_repository_crypto_keys(repo_source['relative_url'])
        except CdnRepositoryNotFoundError:
            keys = []
            log2(1, 1, "WARNING: Repository '%s' was not found." % repo_source['relative_url'], stream=sys.stderr)
        if keys:
            (ca_cert_file, client_cert_file, client_key_file) = reposync.write_ssl_set_cache(
                keys[0]['ca_cert'], keys[0]['client_cert'], keys[0]['client_key'])
        else:
            (ca_cert_file, client_cert_file, client_key_file) = (None, None, None)
            log2(1, 1, "WARNING: No valid SSL certificates were found for repository '%s'."
                 % repo_source['relative_url'], stream=sys.stderr)
        return yum_src.ContentSource(self.mount_point + str(repo_source['relative_url']),
                                     str(repo_label), org=None, no_mirrors=True,
                                     ca_cert_file=ca_cert_file, client_cert_file=client_cert_file,
                                     client_key_file=client_key_file)

    def _sync_channel(self, channel):
        excluded_urls = []
        kickstart_trees = []

        if channel in self.kickstart_metadata:
            kickstart_trees = self.kickstart_metadata[channel]
            excluded_urls.extend(self.cdn_repository_manager.excluded_urls)

        if self.no_kickstarts:
            kickstart_repos = self.cdn_repository_manager.get_content_sources_kickstart(channel)
            excluded_urls.extend([x['relative_url'] for x in kickstart_repos])

        log(0, "======================================")
        log(0, "| Channel: %s" % channel)
        log(0, "======================================")

        # Print note if channel is already EOL
        if self._is_channel_eol(channel):
            log(0, "NOTE: This channel reached end-of-life on %s." %
                datetime.strptime(self.channel_metadata[channel]['eol'], "%Y-%m-%d %H:%M:%S").strftime("%Y-%m-%d"))

        log(0, "Sync of channel started.")
        log2disk(0, "Please check 'cdnsync/%s.log' for sync log of this channel." % channel, notimeYN=True)
        sync = reposync.RepoSync(channel,
                                 repo_type="yum",
                                 url=None,
                                 fail=False,
                                 filters=False,
                                 no_packages=self.no_packages,
                                 no_errata=self.no_errata,
                                 sync_kickstart=(not self.no_kickstarts),
                                 force_all_errata=self.force_all_errata,
                                 force_kickstart=self.force_kickstarts,
                                 latest=False,
                                 metadata_only=self.no_rpms,
                                 excluded_urls=excluded_urls,
                                 strict=self.consider_full,
                                 log_dir="cdnsync",
                                 log_level=self.log_level,
                                 check_ssl_dates=True,
                                 force_null_org_content=True)
        sync.set_ks_tree_type('rhn-managed')
        if self.import_batch_size:
            sync.set_import_batch_size(self.import_batch_size)
        if kickstart_trees:
            # Assuming all trees have same install type
            sync.set_ks_install_type(kickstart_trees[0]['ks_install_type'])
        sync.set_urls_prefix(self.mount_point)
        return sync.sync()

    def sync(self, channels=None):
        # If no channels specified, sync already synced channels
        if not channels:
            channels = set(self.synced_channels)

        # Check channel availability before doing anything
        not_available = set()
        available = set()
        all_channel_list = None
        for channel in channels:
            # Try to expand wildcards in channel labels
            if '*' in channel or '?' in channel or '[' in channel:
                if all_channel_list is None:
                    all_channel_list = self._list_available_channels() + [c for c in self.synced_channels
                                                                          if self.synced_channels[c]]
                expanded = fnmatch.filter(all_channel_list, channel)
                log(2, "Expanding channel '%s' to: %s" % (channel, ", ".join(expanded)))
                if expanded:
                    for expanded_channel in expanded:
                        if not self._is_channel_available(expanded_channel):
                            not_available.add(expanded_channel)
                        else:
                            available.add(expanded_channel)
                else:
                    not_available.add(channel)
            elif not self._is_channel_available(channel):
                not_available.add(channel)
            else:
                available.add(channel)

        channels = available

        error_messages = []

        # if we have not_available channels log the error immediately
        if not_available:
            msg = "ERROR: these channels either do not exist or are not available for synchronization:\n  " + \
                  "\n  ".join(not_available)
            error_messages.append(msg)

        # BZ 1434913 - let user know if system is not activated if no available channels
        if not available:
            error_messages.extend(self._msg_array_if_not_activated())

        # Need to update channel metadata
        self._update_channels_metadata([ch for ch in channels if ch in self.channel_metadata])
        # Make sure custom channels are properly connected with repos
        for channel in channels:
            if channel in self.synced_channels and self.synced_channels[channel]:
                self.cdn_repository_manager.assign_repositories_to_channel(channel)

        reposync.clear_ssl_cache()

        # Finally, sync channel content
        total_time = timedelta()
        for channel in channels:
            cur_time, failed_packages = self._sync_channel(channel)
            if failed_packages < 0:
                error_messages.append("Problems occurred during syncing channel %s. Please check "
                                      "/var/log/rhn/cdnsync/%s.log for the details\n" % (channel, channel))
            if failed_packages > 0:
                error_messages.append("%d packages in channel %s failed to sync. Please check "
                                      "/var/log/rhn/cdnsync/%s.log for the details\n" % (failed_packages, channel,
                                                                                         channel))
            total_time += cur_time
            # Switch back to cdnsync log
            rhnLog.initLOG(self.log_path, self.log_level)
            log2disk(0, "Sync of channel completed.")

        log(0, "Total time: %s" % str(total_time).split('.')[0])

        return error_messages

    def setup_repos_and_sync(self, channels=None, add_repos=None, delete_repos=None):
        # Fix format of relative url
        if add_repos:
            repos = set()
            for repo in add_repos:
                repo = repo.replace(CFG.CDN_ROOT, '')
                repo_dirs = self.cdn_repository_manager.repository_tree.normalize_url(repo)
                repo = os.path.join('/', '/'.join(repo_dirs))
                repos.add(repo)
            add_repos = list(repos)
        if delete_repos:
            repos = set()
            for repo in delete_repos:
                repo = repo.replace(CFG.CDN_ROOT, '')
                repo_dirs = self.cdn_repository_manager.repository_tree.normalize_url(repo)
                repo = os.path.join('/', '/'.join(repo_dirs))
                repos.add(repo)
            delete_repos = list(repos)
        # We need single custom channel
        if not channels or len(channels) > 1:
            raise CustomChannelSyncError("Single custom channel needed.")
        channel = list(channels)[0]
        db_channel = channel_info(channel)
        if add_repos and not self._can_add_repos(db_channel, add_repos):
            raise CustomChannelSyncError("Unable to attach requested repositories to this channel.")
        # Add custom repositories to custom channel
        changed = self.cdn_repository_manager.assign_repositories_to_channel(channel, delete_repos=delete_repos,
                                                                             add_repos=add_repos)
        # Add to synced channels and sync if there are any changed repos
        if changed and channel not in self.synced_channels:
            self.synced_channels[channel] = db_channel['org_id']
        return self.sync(channels=channels)

    def count_packages(self, channels=None):
        start_time = datetime.now()
        reposync.clear_ssl_cache()
        # Both entitled channels and custom channels with null-org repositories.
        channel_list = self._list_available_channels()
        if not channel_list:
            error_messages = self._msg_array_if_not_activated()
            if error_messages:
                log(0, "\n".join(error_messages))
                sys.exit(1)
        channel_list.extend([c for c in self.synced_channels if self.synced_channels[c]])

        # Only some channels specified by parameter
        if channels:
            new_channel_list = []
            for channel in channels:
                new_channel_list.extend(fnmatch.filter(channel_list, channel))
            channel_list = list(set(new_channel_list))

        log(0, "Number of channels: %d" % len(channel_list))

        # Prepare repositories
        repo_tree = {}
        repository_count = 0
        for channel in channel_list:
            sources = self.cdn_repository_manager.get_content_sources(channel)
            # Custom channel
            if not sources:
                repos = self.cdn_repository_manager.list_associated_repos(channel)
                sources = []
                for index, repo in enumerate(sorted(repos)):
                    repo_label = "%s-%d" % (channel, index)
                    sources.append({'relative_url': repo, 'pulp_repo_label_v2': repo_label})
            repository_count += len(sources)
            repo_tree[channel] = sources
        log(0, "Number of repositories: %d" % repository_count)

        downloader = ThreadedDownloader()
        for channel in repo_tree:
            for source in repo_tree[channel]:
                yum_repo = self._create_yum_repo(source)
                params = {}
                yum_repo.set_download_parameters(params, "repodata/repomd.xml",
                                                 os.path.join(yum_repo.repo.basecachedir,
                                                              yum_repo.name, "repomd.xml.new"))
                downloader.add(params)

        progress_bar = ProgressBarLogger("Downloading repomd:  ", repository_count)
        downloader.set_log_obj(progress_bar)
        # Overwrite existing files
        downloader.set_force(True)
        log2background(0, "Downloading repomd started.")
        downloader.run()
        log2background(0, "Downloading repomd finished.")

        progress_bar = ProgressBarLogger("Comparing repomd:    ", len(repo_tree))
        to_download_count = 0
        repo_tree_to_update = {}
        log2background(0, "Comparing repomd started.")

        is_missing_repomd = False
        for channel in repo_tree:
            cdn_repodata_path = os.path.join(constants.CDN_REPODATA_ROOT, channel)
            packages_num_path = os.path.join(cdn_repodata_path, "packages_num")
            packages_size_path = os.path.join(cdn_repodata_path, "packages_size")

            sources = repo_tree[channel]
            yum_repos = [self._create_yum_repo(source) for source in sources]

            # check all repomd files were downloaded
            for yum_repo in yum_repos:
                new_repomd = os.path.join(yum_repo.repo.basecachedir, yum_repo.name, "repomd.xml.new")
                if not os.path.isfile(new_repomd):
                    is_missing_repomd = True

            # packages_num file exists and all cached repomd files are up to date => skip
            if os.path.isfile(packages_num_path) and os.path.isfile(packages_size_path) and all(
                    [x.repomd_up_to_date() for x in yum_repos]):
                progress_bar.log(True, None)
                continue

            update_channel = False
            for yum_repo in yum_repos:
                # use new repomd
                new_repomd = os.path.join(yum_repo.repo.basecachedir, yum_repo.name, "repomd.xml.new")
                if os.path.isfile(new_repomd):
                    update_channel = True
                    os.rename(new_repomd,
                              os.path.join(yum_repo.repo.basecachedir, yum_repo.name, "repomd.xml"))
                else:
                    # it wasn't downloaded
                    continue

                for path, checksum_pair in yum_repo.get_metadata_paths():
                    params = {}
                    yum_repo.set_download_parameters(params, path,
                                                     os.path.join(yum_repo.repo.basecachedir, yum_repo.name,
                                                                  os.path.basename(path)),
                                                     checksum_type=checksum_pair[0], checksum_value=checksum_pair[1])
                    downloader.add(params)
                    to_download_count += 1

            # If there is at least one repo with new repomd, pass through this channel
            if update_channel:
                repo_tree_to_update[channel] = sources

            progress_bar.log(True, None)
        log2background(0, "Comparing repomd finished.")

        progress_bar = ProgressBarLogger("Downloading metadata:", to_download_count)
        downloader.set_log_obj(progress_bar)
        downloader.set_force(False)
        log2background(0, "Downloading metadata started.")
        downloader.run()
        log2background(0, "Downloading metadata finished.")

        progress_bar = ProgressBarLogger("Counting packages:   ", len(repo_tree_to_update))
        log2background(0, "Counting packages started.")
        for channel in repo_tree_to_update:
            cdn_repodata_path = os.path.join(constants.CDN_REPODATA_ROOT, channel)
            packages_num_path = os.path.join(cdn_repodata_path, "packages_num")
            packages_size_path = os.path.join(cdn_repodata_path, "packages_size")

            sources = repo_tree_to_update[channel]
            yum_repos = [self._create_yum_repo(source) for source in sources]

            packages = {}
            for yum_repo in yum_repos:
                for pkg in yum_repo.raw_list_packages():
                    nvrea = str(pkg)
                    packages[nvrea] = pkg.packagesize

            # create directory for repo data if it doesn't exist
            try:
                os.makedirs(cdn_repodata_path)
            except OSError:
                exc = sys.exc_info()[1]
                if exc.errno == errno.EEXIST and os.path.isdir(cdn_repodata_path):
                    pass
                else:
                    raise
            f_num_out = open(packages_num_path, 'w')
            f_size_out = open(packages_size_path, 'w')
            try:
                f_num_out.write(str(len(packages)))
                f_size_out.write(str(sum(packages.values())))
            finally:
                if f_num_out is not None:
                    f_num_out.close()
                if f_size_out is not None:
                    f_size_out.close()
            # Delete cache to save space
            for yum_repo in yum_repos:
                yum_repo.clear_cache(keep_repomd=True)
            progress_bar.log(True, None)
        log2background(0, "Counting packages finished.")

        end_time = datetime.now()
        log(0, "Total time: %s" % str(end_time - start_time).split('.')[0])
        if is_missing_repomd:
            raise CountingPackagesError("Cannot download some repomd.xml files. "
                                        "Please, check /var/log/rhn/cdnsync.log for details")

    def _channel_line_format(self, channel, longest_label):
        if self._is_channel_eol(channel):
            eol_status = "EOL"
        else:
            eol_status = ""
        if channel in self.synced_channels:
            sync_status = 'p'
        else:
            sync_status = '.'
        try:
            packages_number = open(constants.CDN_REPODATA_ROOT + '/' + channel + "/packages_num", 'r').read()
        # pylint: disable=W0703
        except Exception:
            packages_number = '?'

        try:
            packages_size = open(constants.CDN_REPODATA_ROOT + '/' + channel + "/packages_size", 'r').read()
            packages_size = human_readable_size(int(packages_size))
        # pylint: disable=W0703
        except Exception:
            packages_size = '?B'

        packages_size = "(%s)" % packages_size
        space = " "
        offset = longest_label - len(channel)
        space += " " * offset

        return "%3s %s %s%s%6s packages %9s" % (eol_status, sync_status, channel, space,
                                                packages_number, packages_size)

    def _is_channel_eol(self, channel):
        if channel in self.channel_metadata:
            if 'eol' in self.channel_metadata[channel] and self.channel_metadata[channel]['eol']:
                if datetime.now() > datetime.strptime(self.channel_metadata[channel]['eol'], "%Y-%m-%d %H:%M:%S"):
                    return True
        return False

    def _print_unmapped_channels(self):
        unmapped_channels = [ch for ch in self.synced_channels if not self.synced_channels[ch]
                             and ch not in self.channel_metadata]
        if unmapped_channels:
            log(0, "Previously synced channels not available to update from CDN:")
            for channel in sorted(unmapped_channels):
                log(0, "    p %s" % channel)

    def print_channel_tree(self, repos=False):
        channel_tree, not_available_channels = self._tree_available_channels()

        if not channel_tree:
            error_messages = self._msg_array_if_not_activated()
            if not error_messages:
                log(0, "WARNING: No available channels from channel mappings were found. "
                       "Is %s package installed?" % constants.MAPPINGS_RPM_NAME)
            else:
                log(0, "\n".join(error_messages))
                sys.exit(1)

        available_base_channels = [x for x in sorted(channel_tree) if x not in not_available_channels]
        custom_cdn_channels = [ch for ch in self.synced_channels if self.synced_channels[ch]]
        longest_label = len(max(available_base_channels + custom_cdn_channels +
                                [i for l in list(channel_tree.values()) for i in l] + [""], key=len))

        log(0, "p = previously imported/synced channel")
        log(0, ". = channel not yet imported/synced")
        log(0, "? = package count not available (try to run cdn-sync --count-packages)")
        log(0, "EOL = channel reached end-of-life")

        log(0, "Entitled base channels:")
        if not available_base_channels:
            log(0, "      NONE")
        for channel in available_base_channels:
            log(0, "%s" % self._channel_line_format(channel, longest_label))
            if repos:
                sources = self.cdn_repository_manager.get_content_sources(channel)
                paths = [s['relative_url'] for s in sources]
                for path in sorted(paths):
                    log(0, "        %s" % path)

        log(0, "Entitled child channels:")
        if not (any([channel_tree[ch] for ch in channel_tree])):
            log(0, "      NONE")
        # print information about child channels
        for channel in sorted(channel_tree):
            # Print only if there are any child channels
            if channel_tree[channel]:
                log(0, "%s:" % channel)
                for child in sorted(channel_tree[channel]):
                    log(0, "%s" % self._channel_line_format(child, longest_label))
                    if repos:
                        sources = self.cdn_repository_manager.get_content_sources(child)
                        paths = [s['relative_url'] for s in sources]
                        for path in sorted(paths):
                            log(0, "        %s" % path)

        # Not-null org_id channels
        log(0, "Custom channels syncing from CDN:")
        if not custom_cdn_channels:
            log(0, "      NONE")
        for channel in sorted(custom_cdn_channels):
            log(0, "%s" % self._channel_line_format(channel, longest_label))
            if repos:
                paths = self.cdn_repository_manager.list_associated_repos(channel)
                for path in sorted(paths):
                    log(0, "        %s" % path)

        # Previously synced null-org channels not available in cdn-sync-mappings
        self._print_unmapped_channels()

    def clear_cache(self):
        # Clear packages outside channels from DB and disk
        log(0, "Cleaning imported packages outside channels.")
        contentRemove.delete_outside_channels(None)
        if os.path.isdir(constants.PACKAGE_STAGE_DIRECTORY):
            log(0, "Cleaning package stage directory.")
            for pkg in os.listdir(constants.PACKAGE_STAGE_DIRECTORY):
                os.unlink(os.path.join(constants.PACKAGE_STAGE_DIRECTORY, pkg))
        log(0, "Cleaning orphaned CDN repositories in DB.")
        self.cdn_repository_manager.cleanup_orphaned_repos()

    @staticmethod
    def _get_cdn_certificate_keys_and_certs():
        h = rhnSQL.prepare("""
            SELECT ck.id, ck.description, ck.key
            FROM rhnCryptoKeyType ckt,
                 rhnCryptoKey ck
            WHERE ckt.label = 'SSL'
              AND ckt.id = ck.crypto_key_type_id
              AND ck.description LIKE 'CDN_%'
              AND ck.org_id is NULL
            ORDER BY ck.description
        """)
        h.execute()
        data = []
        while True:
            row = h.fetchone_dict()
            if row is None:
                break
            row['key'] = rhnSQL.read_lob(row['key'])
            data.append(row)
        return data

    def print_cdn_certificates_info(self, repos=False):
        keys = self._get_cdn_certificate_keys_and_certs()
        if not keys:
            log2(0, 0, "No SSL certificates were found. Is your %s activated for CDN?"
                 % PRODUCT_NAME, stream=sys.stderr)
            sys.exit(1)

        for key in keys:
            log(0, "======================================")
            log(0, "| Certificate/Key: %s" % key['description'])
            log(0, "======================================")
            if constants.CA_CERT_NAME == key['description'] or constants.CLIENT_CERT_PREFIX in key['description']:
                if not verify_certificate_dates(str(key['key'])):
                    log(0, "WARNING: This certificate is not valid.")
                cn, serial_number, not_before, not_after = get_certificate_info(str(key['key']))
                log(0, "Common name:   %s" % str(cn))
                log(0, "Serial number: %s" % str(serial_number))
                log(0, "Valid from:    %s" % str(not_before))
                log(0, "Valid to:      %s" % str(not_after))
            if constants.CLIENT_CERT_PREFIX in key['description']:
                manager = CdnRepositoryManager(client_cert_id=int(key['id']))
                self.cdn_repository_manager = manager
                log(0, "Provided channels:")
                channel_tree, not_available_channels = self._tree_available_channels()
                if not channel_tree:
                    log(0, "    NONE")
                for base_channel in sorted(channel_tree):
                    if base_channel not in not_available_channels:
                        log(0, "    * %s" % base_channel)
                    elif channel_tree[base_channel]:
                        log(0, "    * %s (only child channels provided)" % base_channel)
                    for child_channel in sorted(channel_tree[base_channel]):
                        log(0, "        * %s" % child_channel)
                if repos:
                    log(0, "Provided repositories:")
                    provided_repos = self.cdn_repository_manager.list_provided_repos(key['id'])
                    for repo in sorted(provided_repos):
                        log(0, "    %s" % repo)
            log(0, "")

    def print_eol_channel_list(self):
        available_channels = self._list_available_channels()

        # Filter only channels with EOL date defined
        eol_channels = {}
        for channel in available_channels:
            if 'eol' in self.channel_metadata[channel] and self.channel_metadata[channel]['eol']:
                eol_channels[channel] = datetime.strptime(self.channel_metadata[channel]['eol'], "%Y-%m-%d %H:%M:%S")

        if eol_channels:
            longest_label = len(max(eol_channels, key=len))
        else:
            longest_label = 0

        already_eol_channels = []
        notyet_eol_channels = []

        # Split into 2 channel groups based on current date
        for channel in eol_channels:
            if datetime.now() > eol_channels[channel]:
                already_eol_channels.append(channel)
            else:
                notyet_eol_channels.append(channel)

        # Print these channel groups, sorted by date
        def print_channel_line(ch):
            if ch in self.synced_channels:
                sync_status = 'p'
            else:
                sync_status = '.'
            space = " "
            offset = longest_label - len(ch)
            space += " " * offset
            log(0, "    %s %s%s%s" % (sync_status, channel, space, eol_channels[channel].strftime("%Y-%m-%d")))

        log(0, "p = previously imported/synced channel")
        log(0, ". = channel not yet imported/synced")
        log(0, "Channels reached end-of-life already:")
        if not already_eol_channels:
            log(0, "      NONE")
        for channel in sorted(already_eol_channels, key=lambda channel: eol_channels[channel]):
            print_channel_line(channel)
        log(0, "Channels not reached end-of-life yet:")
        if not notyet_eol_channels:
            log(0, "      NONE")
        for channel in sorted(notyet_eol_channels, key=lambda channel: eol_channels[channel]):
            print_channel_line(channel)

        # Previously synced null-org channels not available in cdn-sync-mappings
        self._print_unmapped_channels()

    def _msg_array_if_not_activated(self):
        error_messages = []
        keys = self._get_cdn_certificate_keys_and_certs()
        if not keys:
            error_messages.append("ERROR: Your %s is not activated for CDN\n"
                                  "(to see details about currently used SSL certificates for accessing CDN:"
                                  " /usr/bin/cdn-sync --cdn-certs)" % PRODUCT_NAME)
        else:
            found_valid_key = False
            for key in keys:
                if not found_valid_key:
                    if (constants.CA_CERT_NAME == key['description']
                            or constants.CLIENT_CERT_PREFIX in key['description']):
                        if verify_certificate_dates(str(key['key'])):
                            found_valid_key = True
            if not found_valid_key:
                error_messages.append("ERROR: Your %s has no valid SSL certificates for accessing CDN\n"
                                      "(to see details about currently used SSL certificates for accessing CDN:"
                                      " /usr/bin/cdn-sync --cdn-certs)" % PRODUCT_NAME)
        return error_messages

    # Append additional messages and send email
    def send_email(self, additional_messages):
        if self.email:
            if additional_messages:
                log2email(0, '\n'.join(additional_messages), cleanYN=1, notimeYN=1)
            reposync.send_mail(sync_type="CDN")
07070100000017000081B40000000000000000000000016290A0C10000060D000000000000000000000000000000000000002600000000spacewalk-backend/cdn_tools/common.py # Copyright (c) 2016--2017 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#

from uyuni.common import fileutils
from . import constants


def verify_mappings():
    args = ['rpm', '-q', constants.MAPPINGS_RPM_NAME]
    ret = fileutils.rhn_popen(args)
    # Package installed, exitcode is 0
    if not ret[0]:
        args = ['rpm', '-V', constants.MAPPINGS_RPM_NAME]
        ret = fileutils.rhn_popen(args)
        if ret[0]:
            raise CdnMappingsLoadError("CDN mappings changed on disk. Please re-install '%s' package."
                                       % constants.MAPPINGS_RPM_NAME)


# Up to terabytes, should be enough
def human_readable_size(file_size):
    for count in ['B', 'K', 'M', 'G']:
        if file_size < 1024.0:
            return "%3.1f%s" % (file_size, count)
        file_size /= 1024.0
    return "%3.1f%s" % (file_size, 'T')


class CdnMappingsLoadError(Exception):
    pass


class CustomChannelSyncError(Exception):
    pass


class CountingPackagesError(Exception):
    pass
   07070100000018000081B40000000000000000000000016290A0C100000640000000000000000000000000000000000000002900000000spacewalk-backend/cdn_tools/constants.py  # Copyright (c) 2016--2017 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#

"""
Constant values for Satellite CDN sync.
"""

# How are CDN SSL items named in rhnCryptoKey table.
CA_CERT_NAME = "CDN-CA-CERT"
CLIENT_CERT_PREFIX = "CDN-CLIENT-CERT-"
CLIENT_KEY_PREFIX = "CDN-CLIENT-KEY-"
# Repository URL contains variables, from manifest
MANIFEST_REPOSITORY_DB_PREFIX = "manifest_"

CA_CERT_PATH = "/etc/rhsm/ca/redhat-uep.pem"
CANDLEPIN_CA_CERT_DIR = "/etc/rhn/candlepin-certs"

MAPPINGS_RPM_NAME = "cdn-sync-mappings"
CHANNEL_DEFINITIONS_PATH = "/usr/share/rhn/cdn-sync/channels.json"
CHANNEL_FAMILY_MAPPING_PATH = "/usr/share/rhn/cdn-sync/families.json"
CHANNEL_DIST_MAPPING_PATH = "/usr/share/rhn/cdn-sync/dist_map.json"
CONTENT_SOURCE_MAPPING_PATH = "/usr/share/rhn/cdn-sync/rhn_cdn_mappings.json"
KICKSTART_DEFINITIONS_PATH = "/usr/share/rhn/cdn-sync/kickstart.json"
KICKSTART_SOURCE_MAPPING_PATH = "/usr/share/rhn/cdn-sync/kickstart_cdn_mappings.json"

CDN_REPODATA_ROOT = "/var/cache/rhn/cdnsync"
PACKAGE_STAGE_DIRECTORY = "/var/satellite/redhat/NULL/stage"
07070100000019000081B40000000000000000000000016290A0C100003574000000000000000000000000000000000000002800000000spacewalk-backend/cdn_tools/manifest.py   # Copyright (c) 2016--2017 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#

import sys

try:
    import io as cStringIO
except ImportError:
    import cStringIO

import json
import zipfile
import os
from M2Crypto import X509

from spacewalk.satellite_tools.syncLib import log2
from spacewalk.server.rhnServer.satellite_cert import SatelliteCert

from . import constants


class Manifest(object):
    """Class containing relevant data from RHSM manifest."""

    SIGNATURE_NAME = "signature"
    INNER_ZIP_NAME = "consumer_export.zip"
    ENTITLEMENTS_PATH = "export/entitlements"
    CERTIFICATE_PATH = "export/extensions"
    PRODUCTS_PATH = "export/products"
    CONSUMER_INFO = "export/consumer.json"
    META_INFO = "export/meta.json"
    UPSTREAM_CONSUMER_PATH = "export/upstream_consumer"

    def __init__(self, zip_path):
        self.all_entitlements = []
        self.manifest_repos = {}
        self.sat5_certificate = None
        self.satellite_version = None
        self.consumer_credentials = None
        self.uuid = None
        self.name = None
        self.ownerid = None
        self.api_url = None
        self.web_url = None
        self.created = None
        # Signature and signed data
        self.signature = None
        self.data = None
        # Open manifest from path
        top_zip = None
        inner_zip = None
        inner_file = None

        # normalize path
        zip_path = os.path.abspath(os.path.expanduser(zip_path))
        try:
            top_zip = zipfile.ZipFile(zip_path, 'r')
            # Fetch inner zip file into memory
            try:
                # inner_file = top_zip.open(zip_path.split('.zip')[0] + '/' + self.INNER_ZIP_NAME)
                inner_file = top_zip.open(self.INNER_ZIP_NAME)
                self.data = inner_file.read()
                inner_file_data = cStringIO.StringIO(self.data)
                signature_file = top_zip.open(self.SIGNATURE_NAME)
                self.signature = signature_file.read()
                # Open the inner zip file
                try:
                    inner_zip = zipfile.ZipFile(inner_file_data)
                    self._extract_consumer_info(inner_zip)
                    self._load_entitlements(inner_zip)
                    self._extract_certificate(inner_zip)
                    self._extract_meta_info(inner_zip)
                    self._extract_consumer_credentials(inner_zip)
                finally:
                    if inner_zip is not None:
                        inner_zip.close()
            finally:
                if inner_file is not None:
                    inner_file.close()
        finally:
            if top_zip is not None:
                top_zip.close()

    def _extract_certificate(self, zip_file):
        files = zip_file.namelist()
        certificates_names = []
        for f in files:
            if f.startswith(self.CERTIFICATE_PATH) and f.endswith(".xml"):
                certificates_names.append(f)
        if len(certificates_names) >= 1:
            # take only first file
            cert_file = zip_file.open(certificates_names[0])  # take only first file
            self.sat5_certificate = cert_file.read().strip()
            cert_file.close()
            # Save version too
            sat5_cert = SatelliteCert()
            sat5_cert.load(self.sat5_certificate)
            self.satellite_version = getattr(sat5_cert, 'satellite-version')
        else:
            raise MissingSatelliteCertificateError("Satellite Certificate was not found in manifest.")

    def _fill_product_repositories(self, zip_file, product):
        product_file = zip_file.open(self.PRODUCTS_PATH + '/' + str(product.get_id()) + '.json')
        product_data = json.load(product_file)
        product_file.close()
        try:
            for content in product_data['productContent']:
                content = content['content']
                product.add_repository(content['label'], content['contentUrl'])
        except KeyError:
            log2(0, 0, "ERROR: Cannot access required field in product '%s'" % product.get_id(), stream=sys.stderr)
            raise

    def _load_entitlements(self, zip_file):
        files = zip_file.namelist()
        entitlements_files = []
        for f in files:
            if f.startswith(self.ENTITLEMENTS_PATH) and f.endswith(".json"):
                entitlements_files.append(f)

        if len(entitlements_files) >= 1:
            self.all_entitlements = []
            for entitlement_file in entitlements_files:
                entitlements = zip_file.open(entitlement_file)
                # try block in try block - this is hack for python 2.4 compatibility
                # to support finally
                try:
                    try:
                        data = json.load(entitlements)

                        # Extract credentials
                        certs = data['certificates']
                        if len(certs) != 1:
                            raise IncorrectEntitlementsFileFormatError(
                                "Single certificate in entitlements file '%s' is expected, found: %d"
                                % (entitlement_file, len(certs)))
                        cert = certs[0]
                        credentials = Credentials(data['id'], cert['cert'], cert['key'])

                        # Extract product IDs
                        products = []
                        provided_products = data['pool']['providedProducts'] or []
                        derived_provided_products = data['pool']['derivedProvidedProducts'] or []
                        product_ids = [provided_product['productId'] for provided_product
                                       in provided_products + derived_provided_products]
                        for product_id in set(product_ids):
                            product = Product(product_id)
                            self._fill_product_repositories(zip_file, product)
                            products.append(product)

                        # Skip entitlements not providing any products
                        if products:
                            entitlement = Entitlement(products, credentials)
                            self.all_entitlements.append(entitlement)
                    except KeyError:
                        log2(0, 0, "ERROR: Cannot access required field in file '%s'" % entitlement_file,
                             stream=sys.stderr)
                        raise
                finally:
                    entitlements.close()
        else:
            refer_url = "%s%s" % (self.web_url, self.uuid)
            if not refer_url.startswith("http"):
                refer_url = "https://" + refer_url
            raise IncorrectEntitlementsFileFormatError(
                "No subscriptions were found in manifest.\n\nPlease refer to %s for setting up subscriptions."
                % refer_url)

    def _extract_consumer_info(self, zip_file):
        files = zip_file.namelist()
        found = False
        for f in files:
            if f == self.CONSUMER_INFO:
                found = True
                break
        if found:
            consumer_info = zip_file.open(self.CONSUMER_INFO)
            try:
                try:
                    data = json.load(consumer_info)
                    self.uuid = data['uuid']
                    self.name = data['name']
                    self.ownerid = data['owner']['key']
                    self.api_url = data['urlApi']
                    self.web_url = data['urlWeb']
                except KeyError:
                    log2(0, 0, "ERROR: Cannot access required field in file '%s'" % self.CONSUMER_INFO,
                         stream=sys.stderr)
                    raise
            finally:
                consumer_info.close()
        else:
            raise MissingConsumerInfoError()

    def _extract_meta_info(self, zip_file):
        files = zip_file.namelist()
        found = False
        for f in files:
            if f == self.META_INFO:
                found = True
                break
        if found:
            meta_info = zip_file.open(self.META_INFO)
            try:
                try:
                    data = json.load(meta_info)
                    self.created = data['created']
                except KeyError:
                    log2(0, 0, "ERROR: Cannot access required field in file '%s'" % self.META_INFO, stream=sys.stderr)
                    raise
            finally:
                meta_info.close()
        else:
            raise MissingMetaInfoError()

    def _extract_consumer_credentials(self, zip_file):
        files = zip_file.namelist()
        consumer_credentials = []
        for f in files:
            if f.startswith(self.UPSTREAM_CONSUMER_PATH) and f.endswith(".json"):
                consumer_credentials.append(f)

        if len(consumer_credentials) == 1:
            upstream_consumer = zip_file.open(consumer_credentials[0])
            try:
                try:
                    data = json.load(upstream_consumer)
                    self.consumer_credentials = Credentials(data['id'], data['cert'], data['key'])
                except KeyError:
                    log2(0, 0, "ERROR: Cannot access required field in file '%s'" % consumer_credentials[0],
                         stream=sys.stderr)
                    raise
            finally:
                upstream_consumer.close()
        else:
            raise IncorrectCredentialsError(
                "ERROR: Single upstream consumer certificate expected, found %d." % len(consumer_credentials))

    def get_all_entitlements(self):
        return self.all_entitlements

    def get_satellite_certificate(self):
        return self.sat5_certificate

    def get_satellite_version(self):
        return self.satellite_version

    def get_consumer_credentials(self):
        return self.consumer_credentials

    def get_name(self):
        return self.name

    def get_uuid(self):
        return self.uuid

    def get_ownerid(self):
        return self.ownerid

    def get_api_url(self):
        return self.api_url

    def get_created(self):
        return self.created

    def check_signature(self):
        if self.signature and self.data:
            certs = os.listdir(constants.CANDLEPIN_CA_CERT_DIR)
            # At least one certificate has to match
            for cert_name in certs:
                cert_file = None
                try:
                    try:
                        cert_file = open(constants.CANDLEPIN_CA_CERT_DIR + '/' + cert_name, 'r')
                        cert = X509.load_cert_string(cert_file.read())
                    except (IOError, X509.X509Error):
                        continue
                finally:
                    if cert_file is not None:
                        cert_file.close()
                pubkey = cert.get_pubkey()
                pubkey.reset_context(md='sha256')
                pubkey.verify_init()

                pubkey.verify_update(self.data)
                if pubkey.verify_final(self.signature):
                    return True
        return False


class Entitlement(object):
    def __init__(self, products, credentials):
        if products and credentials:
            self.products = products
            self.credentials = credentials
        else:
            raise IncorrectEntitlementError()

    def get_products(self):
        return self.products

    def get_credentials(self):
        return self.credentials


class Credentials(object):
    def __init__(self, identifier, cert, key):
        if identifier:
            self.id = identifier
        else:
            raise IncorrectCredentialsError(
                "ERROR: ID of credentials has to be defined"
            )

        if cert and key:
            self.cert = cert
            self.key = key
        else:
            raise IncorrectCredentialsError(
                "ERROR: Trying to create object with cert = %s and key = %s"
                % (cert, key)
            )

    def get_id(self):
        return self.id

    def get_cert(self):
        return self.cert

    def get_key(self):
        return self.key


class Product(object):
    def __init__(self, identifier):
        try:
            self.id = int(identifier)
        except ValueError:
            raise IncorrectProductError(
                "ERROR: Invalid product id: %s" % identifier
            )
        self.repositories = {}

    def get_id(self):
        return self.id

    def get_repositories(self):
        return self.repositories

    def add_repository(self, label, url):
        self.repositories[label] = url


class IncorrectProductError(Exception):
    pass


class IncorrectEntitlementError(Exception):
    pass


class IncorrectCredentialsError(Exception):
    pass


class IncorrectEntitlementsFileFormatError(Exception):
    pass


class MissingSatelliteCertificateError(Exception):
    pass


class ManifestValidationError(Exception):
    pass


class MissingConsumerInfoError(Exception):
    pass


class MissingMetaInfoError(Exception):
    pass
0707010000001A000081B40000000000000000000000016290A0C100004FBD000000000000000000000000000000000000002A00000000spacewalk-backend/cdn_tools/repository.py # Copyright (c) 2016--2017 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#

import os
import sys
import json

from spacewalk.server import rhnSQL
from spacewalk.server.importlib.backendOracle import SQLBackend
from spacewalk.server.importlib.contentSourcesImport import ContentSourcesImport
from spacewalk.satellite_tools.satCerts import verify_certificate_dates
from spacewalk.satellite_tools.syncLib import log, log2
from spacewalk.server.importlib.importLib import ContentSource, ContentSourceSsl

from . import constants


class CdnRepositoryManager(object):
    """Class managing CDN repositories, connected channels etc."""

    def __init__(self, local_mount_point=None, client_cert_id=None):
        rhnSQL.initDB()
        self.local_mount_point = local_mount_point
        self.repository_tree = CdnRepositoryTree()
        self._populate_repository_tree(client_cert_id=client_cert_id)
        self.excluded_urls = []

        f = None
        try:
            try:
                # Channel to repositories mapping
                f = open(constants.CONTENT_SOURCE_MAPPING_PATH, 'r')
                self.content_source_mapping = json.load(f)
                f.close()

                # Channel to kickstart repositories mapping
                f = open(constants.KICKSTART_SOURCE_MAPPING_PATH, 'r')
                self.kickstart_source_mapping = json.load(f)
                f.close()

                # Kickstart metadata
                f = open(constants.KICKSTART_DEFINITIONS_PATH, 'r')
                self.kickstart_metadata = json.load(f)
                f.close()
            except IOError:
                e = sys.exc_info()[1]
                log(1, "Ignoring channel mappings: %s" % e)
                self.content_source_mapping = {}
                self.kickstart_source_mapping = {}
                self.kickstart_metadata = {}
        finally:
            if f is not None:
                f.close()

        self.__init_repository_to_channels_mapping()

    # Map repositories to channels
    def __init_repository_to_channels_mapping(self):
        self.repository_to_channels = {}
        for channel in self.content_source_mapping:
            for source in self.content_source_mapping[channel]:
                relative_url = source['relative_url']
                if relative_url in self.repository_to_channels:
                    self.repository_to_channels[relative_url].append(channel)
                else:
                    self.repository_to_channels[relative_url] = [channel]

        for channel in self.kickstart_metadata:
            for tree in self.kickstart_metadata[channel]:
                tree_label = tree['ks_tree_label']
                if tree_label in self.kickstart_source_mapping:
                    relative_url = self.kickstart_source_mapping[tree_label][0]['relative_url']
                    if relative_url in self.repository_to_channels:
                        self.repository_to_channels[relative_url].append(channel)
                    else:
                        self.repository_to_channels[relative_url] = [channel]

    def _populate_repository_tree(self, client_cert_id=None):
        sql = """
            select cs.label, cs.source_url, csssl.ssl_ca_cert_id,
                   csssl.ssl_client_cert_id, csssl.ssl_client_key_id
            from rhnContentSource cs inner join
                 rhnContentSourceSsl csssl on cs.id = csssl.content_source_id
            where cs.org_id is null
              and cs.label like :prefix || '%%'
        """
        # Create repository tree containing only repositories provided from single client certificate
        if client_cert_id:
            sql += " and csssl.ssl_client_cert_id = :client_cert_id"
        query = rhnSQL.prepare(sql)
        query.execute(prefix=constants.MANIFEST_REPOSITORY_DB_PREFIX, client_cert_id=client_cert_id)
        rows = query.fetchall_dict() or []
        cdn_repositories = {}
        # Loop all rows from DB
        for row in rows:
            label = row['label']
            if label in cdn_repositories:
                cdn_repository = cdn_repositories[label]
            else:
                cdn_repository = CdnRepository(label, row['source_url'])
                cdn_repositories[label] = cdn_repository

            # Append SSL cert, key set to repository
            ssl_set = CdnRepositorySsl(row['ssl_ca_cert_id'], row['ssl_client_cert_id'], row['ssl_client_key_id'])
            cdn_repository.add_ssl_set(ssl_set)

        # Add populated repository to tree
        for cdn_repository in list(cdn_repositories.values()):
            self.repository_tree.add_repository(cdn_repository)

    def get_content_sources_regular(self, channel_label, source=False):
        if channel_label in self.content_source_mapping:
            return [x for x in self.content_source_mapping[channel_label]
                    if source or x['pulp_content_category'] != "source"]
        else:
            return []

    def get_content_sources_kickstart(self, channel_label):
        repositories = []
        if channel_label in self.kickstart_metadata:
            for tree in self.kickstart_metadata[channel_label]:
                tree_label = tree['ks_tree_label']
                if tree_label in self.kickstart_source_mapping:
                    # One tree comes from one repo, one repo for each tree is in the mapping,
                    # in future there may be multiple repos for one tree and we will need to select
                    # correct repo
                    repository = self.kickstart_source_mapping[tree_label][0]
                    repository['ks_tree_label'] = tree_label
                    repositories.append(repository)
                else:
                    log2(1, 1, "WARNING: Can't find repository for kickstart tree in mappings: %s"
                         % tree_label, stream=sys.stderr)
        return repositories

    def get_content_sources(self, channel_label, source=False):
        sources = self.get_content_sources_regular(channel_label, source=source)
        kickstart_sources = self.get_content_sources_kickstart(channel_label)
        return sources + sorted(kickstart_sources)

    def check_channel_availability(self, channel_label, no_kickstarts=False):
        """Checks if all repositories for channel are available."""
        if no_kickstarts:
            sources = self.get_content_sources_regular(channel_label)
        else:
            sources = self.get_content_sources(channel_label)

        # No content, no channel
        if not sources:
            return False

        for source in sources:
            if not self.check_repository_availability(source['relative_url'], channel_label=channel_label):
                if source.get('ks_tree_label', None):
                    # don't fail if kickstart is missing, just warn (bz1626797)
                    log2(0, 0, "WARNING: kickstart tree '%s' is unavailable" % source['ks_tree_label'],
                         stream=sys.stderr)
                    self.excluded_urls.append(source['relative_url'])
                else:
                    return False
        return True

    def check_repository_availability(self, relative_url, channel_label=None):
        try:
            crypto_keys = self.get_repository_crypto_keys(relative_url)
        except CdnRepositoryNotFoundError:
            log2(1, 1, "ERROR: No SSL certificates were found for repository '%s'" % relative_url, stream=sys.stderr)
            return False

        # Check SSL certificates
        if not crypto_keys:
            if channel_label:
                log2(1, 1, "ERROR: No valid SSL certificates were found for repository '%s'"
                           " required for channel '%s'." % (relative_url, channel_label), stream=sys.stderr)
            else:
                log2(1, 1, "ERROR: No valid SSL certificates were found for repository '%s'." % relative_url,
                     stream=sys.stderr)
            return False

        # Try to look for repomd file
        if self.local_mount_point and not os.path.isfile(os.path.join(
                self.local_mount_point, relative_url[1:], "repodata/repomd.xml")):
            return False

        return True

    def get_content_sources_import_batch(self, channel_label, backend, repos=None):
        batch = []

        # No custom repos specified, look into channel mappings
        if not repos:
            sources = self.get_content_sources(channel_label)
            for source in sources:
                if 'ks_tree_label' in source:
                    content_source = self._create_content_source_obj(source['ks_tree_label'],
                                                                     source['relative_url'], backend)
                else:
                    content_source = self._create_content_source_obj(source['pulp_repo_label_v2'],
                                                                     source['relative_url'], backend)
                batch.append(content_source)
        # We want to sync not-mapped repositories
        else:
            for index, repo in enumerate(repos):
                repo_label = "%s-%d" % (channel_label, index)
                content_source = self._create_content_source_obj(repo_label, repo, backend)
                batch.append(content_source)

        return batch

    def _create_content_source_obj(self, label, source_url, backend):
        type_id = backend.lookupContentSourceType('yum')
        content_source = ContentSource()
        content_source['label'] = label
        content_source['source_url'] = source_url
        content_source['org_id'] = None
        content_source['type_id'] = type_id
        content_source['ssl-sets'] = []
        repository = self.repository_tree.find_repository(source_url)
        for ssl_set in repository.get_ssl_sets():
            content_source_ssl = ContentSourceSsl()
            content_source_ssl['ssl_ca_cert_id'] = ssl_set.get_ca_cert()
            content_source_ssl['ssl_client_cert_id'] = ssl_set.get_client_cert()
            content_source_ssl['ssl_client_key_id'] = ssl_set.get_client_key()
            content_source['ssl-sets'].append(content_source_ssl)
        return content_source

    def get_repository_crypto_keys(self, url):
        repo = self.repository_tree.find_repository(url)
        crypto_keys = []
        for ssl_set in repo.get_ssl_sets():
            keys = ssl_set.get_crypto_keys(check_dates=True)
            if keys:
                crypto_keys.append(keys)
        return crypto_keys

    def assign_repositories_to_channel(self, channel_label, delete_repos=None, add_repos=None):
        backend = SQLBackend()
        self.unlink_all_repos(channel_label, custom_only=True)
        repos = self.list_associated_repos(channel_label)
        changed = 0
        if delete_repos:
            for to_delete in delete_repos:
                if to_delete in repos:
                    repos.remove(to_delete)
                    log(0, "Removing repository '%s' from channel." % to_delete)
                    changed += 1
                else:
                    log2(0, 0, "WARNING: Repository '%s' is not attached to channel." % to_delete, stream=sys.stderr)
        if add_repos:
            for to_add in add_repos:
                if to_add not in repos:
                    repos.append(to_add)
                    log(0, "Attaching repository '%s' to channel." % to_add)
                    changed += 1
                else:
                    log2(0, 0, "WARNING: Repository '%s' is already attached to channel." % to_add, stream=sys.stderr)

        # If there are any repositories intended to be attached to channel
        if repos:
            content_sources_batch = self.get_content_sources_import_batch(
                channel_label, backend, repos=sorted(repos))
            for content_source in content_sources_batch:
                content_source['channels'] = [channel_label]
                importer = ContentSourcesImport(content_sources_batch, backend)
                importer.run()
        else:
            # Make sure everything is unlinked
            self.unlink_all_repos(channel_label)
        return changed

    @staticmethod
    def unlink_all_repos(channel_label, custom_only=False):
        sql = """
            delete from rhnChannelContentSource ccs
            where ccs.channel_id = (select id from rhnChannel where label = :label)
        """
        if custom_only:
            sql += """
                and ccs.source_id in (select id from rhnContentSource where id = ccs.source_id and org_id is not null)
            """
        h = rhnSQL.prepare(sql)
        h.execute(label=channel_label)
        rhnSQL.commit()

    @staticmethod
    def list_associated_repos(channel_label):
        h = rhnSQL.prepare("""
                select cs.source_url
                from rhnChannel c inner join
                     rhnChannelContentSource ccs on c.id = ccs.channel_id inner join
                     rhnContentSource cs on ccs.source_id = cs.id
                where c.label = :label
                  and cs.org_id is null
            """)
        h.execute(label=channel_label)
        paths = [r['source_url'] for r in h.fetchall_dict() or []]
        return paths

    @staticmethod
    def list_provided_repos(crypto_key_id):
        h = rhnSQL.prepare("""
                select cs.source_url
                from rhnContentSource cs inner join
                     rhnContentSourceSsl csssl on cs.id = csssl.content_source_id
                where cs.label like :prefix || '%%'
                  and csssl.ssl_client_cert_id = :client_cert_id
            """)
        h.execute(prefix=constants.MANIFEST_REPOSITORY_DB_PREFIX, client_cert_id=crypto_key_id)
        paths = [r['source_url'] for r in h.fetchall_dict() or []]
        return paths

    @staticmethod
    def cleanup_orphaned_repos():
        h = rhnSQL.prepare("""
            delete from rhnContentSource cs
            where cs.org_id is null
              and cs.label not like :prefix || '%%'
              and not exists (select channel_id from rhnChannelContentSource where source_id = cs.id)
        """)
        h.execute(prefix=constants.MANIFEST_REPOSITORY_DB_PREFIX)
        rhnSQL.commit()

    @staticmethod
    def get_content_source_label(source):
        if 'pulp_repo_label_v2' in source:
            return source['pulp_repo_label_v2']
        elif 'ks_tree_label' in source:
            return source['ks_tree_label']
        else:
            raise InvalidContentSourceType()

    def list_channels_containing_repository(self, relative_path):
        if relative_path in self.repository_to_channels:
            return self.repository_to_channels[relative_path]
        else:
            return []


class CdnRepositoryTree(object):
    """Class representing activated CDN repositories in tree structure.
       Leafs contains CdnRepository instances.
       Allows us to match direct CDN URLs without variables (coming from mapping)
       to CDN URLs with variables (coming from manifest and having SSL keys/certs assigned)"""

    VARIABLES = ['$releasever', '$basearch']

    def __init__(self):
        self.root = {}

    def add_repository(self, repository):
        """Add new CdnRepository to tree."""

        url = repository.get_url()
        path = [x for x in url.split('/') if x]
        node = self.root
        for part in path[:-1]:
            if part not in node:
                node[part] = {}
            node = node[part]
        # Save repository into leaf
        node[path[-1]] = repository

    def _browse_node(self, node, keys):
        """Recursive function going through tree."""
        # Return leaf
        is_leaf = not isinstance(node, dict)
        if is_leaf and not keys:
            return node
        elif (is_leaf and keys) or (not is_leaf and not keys):
            raise CdnRepositoryNotFoundError()
        step = keys[0]
        to_check = [x for x in list(node.keys()) if x in self.VARIABLES or x == step]
        # Remove first step in path, create new list
        next_keys = keys[1:]

        # Check all available paths
        for key in to_check:
            try:
                # Try to get next node and run this function recursively
                next_node = node[key]
                return self._browse_node(next_node, next_keys)
            # From here
            except KeyError:
                pass
            # From recurrent call
            except CdnRepositoryNotFoundError:
                pass

        raise CdnRepositoryNotFoundError()

    @staticmethod
    def normalize_url(url):
        """Splits repository URL, removes redundant characters and returns list with directory names."""
        path = []
        for part in url.split('/'):
            if part == '..':
                if path:
                    del path[-1]
                else:
                    # Can't go upper in directory structure, keep it in path
                    path.append(part)
            elif part and part != '.':
                path.append(part)

        return path

    def find_repository(self, url):
        """Finds matching repository in tree.
           url is relative CDN url - e.g. /content/dist/rhel/server/6/6Server/x86_64/os"""
        node = self.root
        try:
            path = self.normalize_url(url)
            found = self._browse_node(node, path)
        except CdnRepositoryNotFoundError:
            raise CdnRepositoryNotFoundError("ERROR: Repository '%s' was not found." % url)

        return found


class CdnRepositoryNotFoundError(Exception):
    pass


class InvalidContentSourceType(Exception):
    pass


class CdnRepository(object):
    """Class representing CDN repository."""

    def __init__(self, label, url):
        self.label = label
        self.url = url
        self.ssl_sets = []

    # CdnRepositorySsl instance
    def add_ssl_set(self, ssl_set):
        self.ssl_sets.append(ssl_set)

    def get_ssl_sets(self):
        return self.ssl_sets

    def get_label(self):
        return self.label

    def get_url(self):
        return self.url


class CdnRepositorySsl(object):
    """Class representing single SSL certificate, key set for single CDN repository"""

    def __init__(self, ca_cert, client_cert, client_key):
        self.ca_cert = int(ca_cert)
        self.client_cert = int(client_cert)
        self.client_key = int(client_key)

    def get_ca_cert(self):
        return self.ca_cert

    def get_client_cert(self):
        return self.client_cert

    def get_client_key(self):
        return self.client_key

    def get_crypto_keys(self, check_dates=False):
        ssl_query = rhnSQL.prepare("""
            select description, key, org_id from rhnCryptoKey where id = :id
        """)
        keys = {}
        ssl_query.execute(id=self.ca_cert)
        row = ssl_query.fetchone_dict()
        keys['ca_cert'] = (str(row['description']), str(row['key']), row['org_id'])
        ssl_query.execute(id=self.client_cert)
        row = ssl_query.fetchone_dict()
        keys['client_cert'] = (str(row['description']), str(row['key']), row['org_id'])
        ssl_query.execute(id=self.client_key)
        row = ssl_query.fetchone_dict()
        keys['client_key'] = (str(row['description']), str(row['key']), row['org_id'])

        # Check if SSL certificates are usable
        if check_dates:
            failed = 0
            for key in (keys['ca_cert'], keys['client_cert']):
                if not verify_certificate_dates(key[1]):
                    log(1, "WARNING: Problem with dates in certificate '%s'. "
                           "Please check validity of this certificate." % key[0])
                    failed += 1
            if failed:
                return {}
        return keys
   0707010000001B000041FD0000000000000000000000016290A0C100000000000000000000000000000000000000000000001900000000spacewalk-backend/common  0707010000001C000081B40000000000000000000000016290A0C100000461000000000000000000000000000000000000002200000000spacewalk-backend/common/Makefile # Makefile for spacewalk backend
#

# what is the backend top dir
TOP     = ..

# Specific stuff
SUBDIR  = common
SPACEWALK_FILES	=   __init__ \
	    apache \
            byterange \
            rhnApache \
            rhnCache \
            rhnConfig \
            rhnException \
            rhnFlags \
            rhnLog \
            rhnMail \
            rhnRepository \
            rhnTB \
            rhnTranslate \
            RPC_Base \
            suseLib \
            repo

SCRIPTS = spacewalk-cfg-get

# check if we can build man pages
DOCBOOK = $(wildcard /usr/bin/docbook2man)

SGMLS   = $(wildcard *.sgml)
MANS    = $(patsubst %.sgml,%.8,$(SGMLS))

BINDIR  = /usr/bin
MANDIR  ?= /usr/man

EXTRA_DIRS = $(MANDIR)/man8 $(BINDIR)

include $(TOP)/Makefile.defs

# install scripts
all :: $(SCRIPTS)
install :: $(SCRIPTS) $(PREFIX)/$(BINDIR)
	$(INSTALL_BIN) $(SCRIPTS) $(PREFIX)/$(BINDIR)

ifneq ($(DOCBOOK),)
# install man pages
all     :: $(MANS)
install :: $(MANS) $(PREFIX)/$(MANDIR)
	$(INSTALL_DATA) $(MANS) $(PREFIX)/$(MANDIR)/man8
endif

%.8 : %.sgml
	$(DOCBOOK) $<

clean :: 
	@rm -fv $(MANS) manpage.*

   0707010000001D000081B40000000000000000000000016290A0C100000379000000000000000000000000000000000000002500000000spacewalk-backend/common/RPC_Base.py  #
# Copyright (c) 2008--2015 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#

# Base XML-RPC class handler


class RPC_Base:

    def __init__(self):
        self.functions = []

    # retrieve a function handler
    def get_function(self, function):
        if function in self.functions:
            return getattr(self, function)
        return None
   0707010000001E000081B40000000000000000000000016290A0C100000386000000000000000000000000000000000000002500000000spacewalk-backend/common/__init__.py  #
# Copyright (c) 2008--2017 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#
# Initialization file for the common module
#


# try to figure out if we're running under Apache or not
try:
    from spacewalk.common.rhnApache import rhnApache
    import _apache
except ImportError:
    # no _apache available, not running under apache/mod_python
    pass

__all__ = []
  0707010000001F000081B40000000000000000000000016290A0C1000007F7000000000000000000000000000000000000002300000000spacewalk-backend/common/apache.py    #
# Copyright (c) 2010--2015 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#
#

# constants meant to match the apache.py module of mod_python

HTTP_CONTINUE = 100
HTTP_SWITCHING_PROTOCOLS = 101
HTTP_PROCESSING = 102
HTTP_OK = 200
HTTP_CREATED = 201
HTTP_ACCEPTED = 202
HTTP_NON_AUTHORITATIVE = 203
HTTP_NO_CONTENT = 204
HTTP_RESET_CONTENT = 205
HTTP_PARTIAL_CONTENT = 206
HTTP_MULTI_STATUS = 207
HTTP_MULTIPLE_CHOICES = 300
HTTP_MOVED_PERMANENTLY = 301
HTTP_MOVED_TEMPORARILY = 302
HTTP_SEE_OTHER = 303
HTTP_NOT_MODIFIED = 304
HTTP_USE_PROXY = 305
HTTP_TEMPORARY_REDIRECT = 307
HTTP_BAD_REQUEST = 400
HTTP_UNAUTHORIZED = 401
HTTP_PAYMENT_REQUIRED = 402
HTTP_FORBIDDEN = 403
HTTP_NOT_FOUND = 404
HTTP_METHOD_NOT_ALLOWED = 405
HTTP_NOT_ACCEPTABLE = 406
HTTP_PROXY_AUTHENTICATION_REQUIRED = 407
HTTP_REQUEST_TIME_OUT = 408
HTTP_CONFLICT = 409
HTTP_GONE = 410
HTTP_LENGTH_REQUIRED = 411
HTTP_PRECONDITION_FAILED = 412
HTTP_REQUEST_ENTITY_TOO_LARGE = 413
HTTP_REQUEST_URI_TOO_LARGE = 414
HTTP_UNSUPPORTED_MEDIA_TYPE = 415
HTTP_RANGE_NOT_SATISFIABLE = 416
HTTP_EXPECTATION_FAILED = 417
HTTP_UNPROCESSABLE_ENTITY = 422
HTTP_LOCKED = 423
HTTP_FAILED_DEPENDENCY = 424
HTTP_INTERNAL_SERVER_ERROR = 500
HTTP_NOT_IMPLEMENTED = 501
HTTP_BAD_GATEWAY = 502
HTTP_SERVICE_UNAVAILABLE = 503
HTTP_GATEWAY_TIME_OUT = 504
HTTP_VERSION_NOT_SUPPORTED = 505
HTTP_VARIANT_ALSO_VARIES = 506
HTTP_INSUFFICIENT_STORAGE = 507
HTTP_NOT_EXTENDED = 510
REMOTE_DOUBLE_REV = 3
OK = REQ_PROCEED = 0
DONE = -2
DECLINED = REQ_NOACTION = -1
 07070100000020000081B40000000000000000000000016290A0C100000C63000000000000000000000000000000000000002600000000spacewalk-backend/common/byterange.py #
# Copyright (c) 2008--2017 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#
#

import re
import sys

# common module
from uyuni.common.usix import raise_with_tb
from spacewalk.common.rhnLog import log_debug
from spacewalk.common.rhnException import rhnException

# pylint: disable=W0710

# Parses the HTTP header value and stores in the flags  a list of (start, end)
# tuples that are more pythonic than the RFC semantics


def parse_byteranges(byterange_header, file_size=None):
    log_debug(4, "Parsing byte range", byterange_header)
    regexp = re.compile(r"^bytes\s*=\s*(.*)$")
    mo = regexp.match(byterange_header)
    if not mo:
        raise InvalidByteRangeException

    arr = mo.groups()[0].split(",")
    regexp = re.compile(r"^([^-]*)-([^-]*)$")

    if len(arr) > 1:
        # We don't support very fancy byte ranges yet
        raise UnsatisfyableByteRangeException

    mo = regexp.match(arr[0])
    if not mo:
        # Invalid byterange
        raise InvalidByteRangeException
    try:
        start, end = list(map(_str2int, mo.groups()))
    except ValueError:
        # Invalid
        raise_with_tb(InvalidByteRangeException, sys.exc_info()[2])
    if start is not None:
        if start < 0:
            # Invalid
            raise InvalidByteRangeException
        if file_size is not None:
            if start >= file_size:
                raise UnsatisfyableByteRangeException
        if end is not None:
            if start > end:
                # Invalid
                raise InvalidByteRangeException
            end = end + 1
        else:
            if file_size:
                end = file_size
    else:
        # No start specified
        if end is None:
            # Invalid
            raise InvalidByteRangeException
        if end <= 0:
            # Invalid
            raise InvalidByteRangeException
        if file_size:
            if end > file_size:
                raise UnsatisfyableByteRangeException
            start = file_size - end
            end = file_size
        else:
            start = -end
            end = None

    byteranges = (start, end)

    log_debug(4, "Request byterange", byteranges)
    return byteranges


def _str2int(val):
    val = val.strip()
    if val == "":
        return None

    return int(val)


def get_content_range(start, end, total_length=None):
    if total_length is None:
        total_length = "*"
    end = end - 1
    content_range = "bytes %d-%d/%s" % (start, end, total_length)
    return content_range


class InvalidByteRangeException(rhnException):
    pass


class UnsatisfyableByteRangeException(rhnException):
    pass
 07070100000021000081B40000000000000000000000016290A0C100004AF3000000000000000000000000000000000000002100000000spacewalk-backend/common/repo.py  """
Repository tools
"""
# coding: utf-8
import typing
import http
import os
import zlib
import lzma
import logging
import tempfile
import subprocess
from urllib import parse
import hashlib
from collections import namedtuple

import requests

# pylint:disable=W0612,W0212,C0301

SPACEWALK_LIB = '/var/lib/spacewalk'
SPACEWALK_GPG_HOMEDIR = os.path.join(SPACEWALK_LIB, 'gpgdir')


class GeneralRepoException(Exception):
    """
    Dpkg repository exception
    """


class DpkgRepo:
    """
    Dpkg repository detection.
    The repositories in Debian world have several layouts,
    such as "flat", classic tree, PPA etc.
    """
    PKG_GZ = "Packages.gz"
    PKG_XZ = "Packages.xz"
    PKG_RW = "Packages"

    class ReleaseEntry:  # pylint: disable=W0612,R0903
        """
        Release file entry
        """
        class Checksum:  # pylint: disable=R0903
            """
            Checksums of the Release file
            """
            md5: str = ""
            sha1: str = ""
            sha256: str = ""
            sha384: str = ""
            sha512: str = ""

        def __init__(self, size: int, uri: str):
            self.checksum = DpkgRepo.ReleaseEntry.Checksum()
            self.size = size
            self.uri = uri

    class EntryDict(dict):
        """
        Parsed release container.
        """
        def __init__(self, repo: "DpkgRepo"):
            super().__init__()
            self.__repo = repo

        def get(self, key: typing.Any) -> typing.Optional[typing.Any]:  # type: ignore
            """
            Automatically update key if the repo is flat.

            :param key:
            :return:
            """
            if not self.__repo.is_flat():
                key = "/".join(parse.urlparse(self.__repo._url).path.strip("/").split("/")[-2:] + [key])
            return self[key]

    def __init__(self, url: str, proxies: dict = None, gpg_verify: bool = True):
        self._url = url
        self._flat_checked: typing.Optional[int] = None
        self._flat: bool = False
        self._pkg_index: typing.Tuple[str, bytes] = ("", b"", )
        self._release = DpkgRepo.EntryDict(self)
        self.proxies = proxies
        self.gpg_verify = gpg_verify

    def append_index_file(self, index_file: str) -> str:
        """
        Append an index file, such as Packages.gz or Packagex.xz etc
        to the given URL, if it does not contains any.

        :param index_file: string
        :return: url string
        """
        p_url = parse.urlparse(self._url)
        path = p_url.path
        if not path.endswith(index_file):
            if index_file in path:
                logging.error("URL has already {} mentioned in it. Raising \
                               GeneralRepoException!".format(index_file), exc_info=True)
                raise GeneralRepoException("URL has already {} mentioned in it.".format(index_file))
            path = os.path.join(path.rstrip("/"), index_file)

        return parse.urlunparse((p_url.scheme, p_url.netloc, path, p_url.params, p_url.query, p_url.fragment,))

    def get_pkg_index_raw(self) -> typing.Tuple[str, bytes]:
        """
        Get Packages.gz or Packages.xz or Packages content, raw.

        :return: bytes of the content
        """
        if self._pkg_index[0] == "":
            for cnt_fname in [DpkgRepo.PKG_GZ, DpkgRepo.PKG_XZ, DpkgRepo.PKG_RW]:
                packages_url = self.append_index_file(cnt_fname)
                if packages_url.startswith("file://"):
                    try:
                        with open(packages_url.replace("file://", ""), "rb") as f:
                            self._pkg_index = cnt_fname, f.read()
                            break
                    except FileNotFoundError as ex:
                        logging.debug(
                            "File not found: {}".format(
                                packages_url.replace("file://", "")), exc_info=True)
                else:
                    resp = requests.get(packages_url, proxies=self.proxies)
                    if resp.status_code == http.HTTPStatus.OK:
                        self._pkg_index = cnt_fname, resp.content
                        break
                    resp.close()

        return self._pkg_index

    def decompress_pkg_index(self) -> str:
        """
        Find and return contents of Packages.gz file.

        :raises GeneralRepoException if the Packages.gz file cannot be found.
        :return: string
        """
        fname, cnt_data = self.get_pkg_index_raw()
        try:
            if fname == DpkgRepo.PKG_GZ:
                cnt_data = zlib.decompress(cnt_data, 0x10 + zlib.MAX_WBITS)
            elif fname == DpkgRepo.PKG_XZ:
                cnt_data = lzma.decompress(cnt_data)
        except (zlib.error, lzma.LZMAError) as exc:
            logging.exception("Exception during decompression of pkg index",
                              exc_info=True)
            raise GeneralRepoException(exc)
        except Exception as exc:
            logging.exception("Unknown exception during decompression of \
                               pkg index. Raising GeneralRepoException",
                              exc_info=True)
            raise GeneralRepoException("Unhandled exception occurred while decompressing {}: {}".format(fname, exc)) from exc

        return cnt_data.decode("utf-8")

    def _parse_release_index(self, release: str) -> "EntryDict":
        """
        Parse release index to a structure.

        :param release: decoded content of the Release file
        :return: dictionary
        """
        # Length of hexadecimal representation for each checksum algorithm
        LEN_MD5 = 128 // 4
        LEN_SHA1 = 160 // 4
        LEN_SHA256 = 256 // 4
        LEN_SHA384 = 384 // 4
        LEN_SHA512 = 512 // 4
        Entry = namedtuple("Entry", "checksum, size, path")
        for line in release.split(os.linesep):
            try:
                entry = Entry._make(
                    filter(None, line.strip().replace("\t", " ").split(" "))
                )
                int(entry.checksum, 0x10) # assert entry.checksum is hexadecimal
                rel_entry = DpkgRepo.ReleaseEntry(int(entry.size), entry.path)
            except (TypeError, ValueError):
                continue

            if len(entry.checksum) in (
                LEN_MD5,
                LEN_SHA1,
                LEN_SHA256,
                LEN_SHA384,
                LEN_SHA512,
            ):
                self._release.setdefault(rel_entry.uri, rel_entry)
                if len(entry.checksum) == LEN_MD5:
                    self._release[rel_entry.uri].checksum.md5 = entry.checksum
                elif len(entry.checksum) == LEN_SHA1:
                    self._release[rel_entry.uri].checksum.sha1 = entry.checksum
                elif len(entry.checksum) == LEN_SHA256:
                    self._release[rel_entry.uri].checksum.sha256 = entry.checksum
                elif len(entry.checksum) == LEN_SHA384:
                    self._release[rel_entry.uri].checksum.sha384 = entry.checksum
                elif len(entry.checksum) == LEN_SHA512:
                    self._release[rel_entry.uri].checksum.sha512 = entry.checksum

        return self._release


    def _has_valid_gpg_signature(self, uri: str, response=None) -> bool:
        """
        Validate GPG signature of Release file.

        :return: bool
        """
        process = None
        uri = uri.replace("file://", "")
        if not response:
            # There is no response, so this is a local path.
            if os.access(os.path.join(uri, "InRelease"), os.R_OK):
                release_file = os.path.join(uri, "InRelease")
                process = subprocess.Popen(
                    ["gpg", "--verify", "--homedir", SPACEWALK_GPG_HOMEDIR, release_file],
                    stdout=subprocess.DEVNULL,
                    stderr=subprocess.DEVNULL,
                )
                out = process.wait(timeout=90)
            elif os.access(os.path.join(uri, "Release"), os.R_OK):
                release_file = os.path.join(uri, "Release")
                release_signature_file = os.path.join(uri, "Release.gpg")
                if os.access(release_signature_file, os.R_OK):
                    process = subprocess.Popen(
                        ["gpg", "--verify", "--homedir", SPACEWALK_GPG_HOMEDIR,
                        release_signature_file, release_file],
                        stdout=subprocess.DEVNULL,
                        stderr=subprocess.DEVNULL,
                    )
                    out = process.wait(timeout=90)
                else:
                    logging.error("Signature file for GPG check could not be accessed: \
                                   '{}. Raising GeneralRepoException.".format(release_signature_file))
                    raise GeneralRepoException("Signature file for GPG check could not be accessed: {}".format(release_signature_file))
            else:
                logging.error("No release file found: '{}'. Raising GeneralRepoException.".format(uri))
                raise GeneralRepoException("No release file found: {}".format(uri))
        else:
            # There is a response, so we are dealing with a URL.
            if parse.urlparse(response.url).path.endswith("InRelease"):
                process = subprocess.Popen(
                    ["gpg", "--verify", "--homedir", SPACEWALK_GPG_HOMEDIR],
                    stdin=subprocess.PIPE,
                    stdout=subprocess.DEVNULL,
                    stderr=subprocess.DEVNULL,
                )
                out = process.communicate(response.content, timeout=90)
            else:
                signature_response = requests.get(self._get_parent_url(response.url, 1, "Release.gpg"), proxies=self.proxies)
                if signature_response.status_code != http.HTTPStatus.OK:
                    return False
                else:
                    temp_release_file = tempfile.NamedTemporaryFile()
                    temp_release_file.write(response.content)
                    temp_release_file.seek(0)
                    temp_signature_file = tempfile.NamedTemporaryFile()
                    temp_signature_file.write(signature_response.content)
                    temp_signature_file.seek(0)
                    process = subprocess.Popen(
                        ["gpg", "--verify", "--homedir", SPACEWALK_GPG_HOMEDIR,
                        temp_signature_file.name, temp_release_file.name],
                        stdout=subprocess.DEVNULL,
                        stderr=subprocess.DEVNULL,
                    )
                    out = process.wait(timeout=90)

        if process.returncode == 0:
            logging.debug("GPG signature is valid")
            return True
        else:
            logging.debug("GPG signature is invalid. gpg return code: {}".format(process.returncode))
            return False


    def get_release_index(self) -> typing.Dict[str, "DpkgRepo.ReleaseEntry"]:
        """
        Find and return contents of Release file.

        InRelease file take precedence over Release file if both exist.
        In either case the file must be signed with a GPG key. The signature is
        verified before the content is parsed.

        :raises GeneralRepoException if the Release file cannot be found or the GPG signature can't be verified.
        :return: string
        """
        if self._url.startswith("file://"):
            return self._get_release_index_from_file()
        else:
            return self._get_release_index_from_http()


    def _get_release_index_from_file(self) -> typing.Dict[str, "DpkgRepo.ReleaseEntry"]:
        # InRelease files take precedence per uyuni-rfc 00057-deb-repo-sync-gpg-check
        logging.debug("Fetching release file from local filesystem: {}".format(self._url.replace("file://", "")))
        local_path = self._url.replace("file://", "")
        release_file = None
        if os.access(self._get_parent_url(local_path, 2, "InRelease"), os.R_OK):
            release_file = self._get_parent_url(local_path, 2, "InRelease")
            local_path = self._get_parent_url(local_path, 2)
            self._flat = False
        elif os.access(self._get_parent_url(local_path, 2, "Release"), os.R_OK):
            release_file = self._get_parent_url(local_path, 2, "Release")
            local_path = self._get_parent_url(local_path, 2)
            self._flat = False
        else:
            self._flat = True
        self._flat_checked = 1

        # Repo format is not flat
        if not self.is_flat():
            if self.gpg_verify and not self._has_valid_gpg_signature(local_path):
                logging.error("GPG verification failed: {}".format(release_file))
                logging.error("Raising GeneralRepoException!")
                raise GeneralRepoException("GPG verification failed: {}".format(release_file))
            try:
                with open(release_file, "rb") as f:
                    self._release = self._parse_release_index(f.read().decode("utf-8"))
            except IOError as ex:
                logging.exception("IOError while accessing file: '{}'. Raising \
                                   GeneralRepoException!".format(release_file), exc_info=True)
                raise GeneralRepoException("IOError while accessing file: {}".format(release_file)) from ex

        # Repo format is flat
        else:
            if os.access(self._get_parent_url(local_path, 0, "InRelease"), os.R_OK):
                release_file = self._get_parent_url(local_path, 0, "InRelease")
            elif os.access(self._get_parent_url(local_path, 0, "Release"), os.R_OK):
                release_file = self._get_parent_url(local_path, 0, "Release")
            else:
                logging.error("No release file found in '{}'. Raising \
                                   GeneralRepoException.".format(self._get_parent_url(local_path, 0)))
                raise GeneralRepoException("No release file found in {}".format(self._get_parent_url(local_path, 0)))

            try:
                with open(release_file, "rb") as f:
                    release_file_content = f.read().decode("utf-8")
                    if self.gpg_verify and not self._has_valid_gpg_signature(local_path):
                        logging.error("GPG verification failed: '{}'. \
                                           Raising GeneralRepoException.".format(release_file))
                        raise GeneralRepoException("GPG verification failed: {}".format(release_file))
                    self._release = self._parse_release_index(release_file_content)
            except IOError as ex:
                logging.exception("IOError while accessing file: '{}'. Raising \
                                   GeneralRepoException.".format(release_file), exc_info=True)
                raise GeneralRepoException("IOError while accessing file: {}".format(release_file)) from ex

        return self._release

    def _get_release_index_from_http(self) -> typing.Dict[str, "DpkgRepo.ReleaseEntry"]:
        # InRelease files take precedence per uyuni-rfc 00057-deb-repo-sync-gpg-check
        logging.debug("Fetching release file from local http: {}".format(self._url))
        resp = requests.get(self._get_parent_url(self._url, 2, "InRelease"), proxies=self.proxies)
        if resp.status_code != http.HTTPStatus.OK:
            resp = requests.get(self._get_parent_url(self._url, 2, "Release"), proxies=self.proxies)

        try:
            if resp.status_code not in [
                http.HTTPStatus.NOT_FOUND,
                http.HTTPStatus.OK,
                http.HTTPStatus.FORBIDDEN,
            ]:
                logging.error("Fetching release index failed with http status \
                               '{}'. Raising GeneralRepoException.".format(resp.status_code))
                raise GeneralRepoException(
                    "HTTP error {} occurred while connecting to the URL".format(resp.status_code)
                )

            self._flat = resp.status_code in [http.HTTPStatus.NOT_FOUND, http.HTTPStatus.FORBIDDEN]
            self._flat_checked = 1

            if not self.is_flat() and self.gpg_verify and not self._has_valid_gpg_signature(resp.url, resp):
                logging.error("Repo has no valid GPG signature. Raising GeneralRepoException.")
                raise GeneralRepoException("GPG verification failed: {}".format(resp.url))

            self._release = self._parse_release_index(resp.content.decode("utf-8"))

            if not self._release and self.is_flat():
                resp = requests.get(self._get_parent_url(self._url, 0, "InRelease"), proxies=self.proxies)
                if resp.status_code != http.HTTPStatus.OK:
                    resp = requests.get(self._get_parent_url(self._url, 0, "Release"), proxies=self.proxies)

                if resp.status_code == http.HTTPStatus.OK:
                    if self.gpg_verify and not self._has_valid_gpg_signature(resp.url, resp):
                        logging.error("Repo has no valid GPG signature. GeneralRepoException will be raised!")
                        raise GeneralRepoException("GPG verification failed: {}".format(resp.url))
                    self._release = self._parse_release_index(resp.content.decode("utf-8"))
        finally:
            resp.close()

        return self._release

    @staticmethod
    def _get_parent_url(url, depth=1, add_path=""):
        """
        Get parent url from the given one.

        :param url: an url
        :return: parent url
        """
        p_url = parse.urlparse(url)
        p_path = p_url.path.rstrip("/").split("/")
        if depth:
            p_path = p_path[:-depth]

        return parse.urlunparse(parse.ParseResult(scheme=p_url.scheme, netloc=p_url.netloc,
                                                  path="/".join(p_path + add_path.strip("/").split("/")) or "/",
                                                  params=p_url.params, query=p_url.query, fragment=p_url.fragment))

    def is_flat(self) -> bool:
        """
        Detect if the repository has flat format.

        :return:
        """
        if self._flat_checked is None:
            self.get_release_index()

        return bool(self._flat)

    def verify_packages_index(self) -> bool:
        """
        Verify Packages index with the best available checksum algorithm.

        :return: result (boolean)
        """
        name, data = self.get_pkg_index_raw()

        # If there are no packages in the repo, return True
        if (name, data) == ("", b"",):
           return True

        entry = self.get_release_index().get(name)
        if entry is None:
            return False

        result = False
        for algorithm in ("sha512", "sha384", "sha256", "sha1", "md5"):
            entry_checksum = getattr(entry.checksum, algorithm, None)
            if entry_checksum:
                result = getattr(hashlib, algorithm)(data).hexdigest() == entry_checksum
                break
            else:
                continue

        return result
 07070100000022000081B40000000000000000000000016290A0C100002184000000000000000000000000000000000000002600000000spacewalk-backend/common/rhnApache.py #
# Copyright (c) 2008--2016 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#
# Code for the shared apache handler class inherited by the
# Spacewalk Proxy and server.
#

# system module imports
import time


# global module imports
from rhn.UserDictCase import UserDictCase


# Now local module imports
from spacewalk.common import rhnFlags
from spacewalk.common import apache
from spacewalk.common.rhnLog import log_debug, log_error, log_setreq
from spacewalk.common.rhnTranslate import cat


class rhnApache:

    """ Shared rhnApache class: rhnApache classes in proxy and server inherit
        this class.

        Shared apache handler code: headerParserHandler,
                                handler (defined in class that inherits this),
                                cleanupHandler.
    """
    _lang_catalog = "common"

    def __init__(self):
        self.lang = "C"
        self.domain = None
        self.clientVersion = 0
        self.proxyVersion = None
        self.start_time = 0

    ###
    # HANDLERS, in the order which they are called
    ###

    def headerParserHandler(self, req):
        """
        after a request has been received, first thing we do is to create the
        input object
        """
        # pylint: disable=R0911

        log_setreq(req)
        log_debug(3)
        self.start_time = time.time()
        # Decline if this is a subrequest:
        if req.main:
            return apache.DECLINED
        log_debug(4, req.method, req.path_info, req.headers_in)

        # Clear the global flags.
        rhnFlags.reset()
        # Init the transport options.
        rhnFlags.set('outputTransportOptions', UserDictCase())
        # Init the session token dictionary.
        rhnFlags.set("AUTH_SESSION_TOKEN", UserDictCase())

        ret = self._init_request_processor(req)
        if ret != apache.OK:
            return ret

        ret = self._set_client_info(req)
        if ret != apache.OK:
            return ret

        # Check the protocol version
        if req.proto_num < 1001:
            # HTTP protocols prior to 1.1 close the connection
            rhnFlags.get('outputTransportOptions')["Connection"] = "close"

        ret = self._set_proxy_info(req)
        if ret != apache.OK:
            return ret

        # Need to run _set_other first, since _set_lang needs RoodDir set
        ret = self._set_other(req)
        if ret != apache.OK:
            return ret

        ret = self._set_lang(req)
        if ret != apache.OK:
            return ret

        return apache.OK

    def _set_client_info(self, req):
        # Figure out the client version
        clientVersionHeader = 'X-RHN-Client-Version'
        if clientVersionHeader in req.headers_in:
            # Useful to have it as a separate variable, to see it in a
            # traceback report
            clientVersion = req.headers_in[clientVersionHeader]
            self.clientVersion = int(clientVersion)
        # NOTE: x-client-version is really the cgiwrap xmlrpc API version
        #       NOT the RHN client version... but it works if nothing else
        #       does.
        elif 'X-Client-Version' in req.headers_in:
            clientVersion = req.headers_in['X-Client-Version']
            self.clientVersion = int(clientVersion)
        else:
            self.clientVersion = 0

        # Make sure the client version gets set in the headers.
        rhnFlags.get('outputTransportOptions')[clientVersionHeader] = str(
            self.clientVersion)
        return apache.OK

    def _set_proxy_info(self, req):
        """ Spacewalk Proxy stuff. """
        proxyVersion = 'X-RHN-Proxy-Version'
        if proxyVersion in req.headers_in:
            self.proxyVersion = req.headers_in[proxyVersion]
        # Make sure the proxy version gets set in the headers.
        rhnFlags.get('outputTransportOptions')[proxyVersion] = str(
            self.proxyVersion)
        # Make sure the proxy auth-token gets set in global flags.
        if 'X-RHN-Proxy-Auth' in req.headers_in:
            rhnFlags.set('X-RHN-Proxy-Auth',
                         req.headers_in['X-RHN-Proxy-Auth'])
        return apache.OK

    def _set_lang(self, req):
        """ determine what language the client prefers """
        if "Accept-Language" in req.headers_in:
            # RFC 2616 #3.10: case insensitive
            lang = req.headers_in["Accept-Language"].lower()
        else:
            lang = "C"
        self.setlang(lang, self._lang_catalog)

        return apache.OK

    @staticmethod
    def _set_other(_req):
        return apache.OK

    def _init_request_processor(self, req):
        # first, make sure we only allow certain methods
        if req.method == "GET":
            # This is a request from a cache/client, so verify the signature,
            # system_id, and expiration exist and push into rhnFlags.
            token = self._setSessionToken(req.headers_in)
            if token is None:
                return apache.HTTP_METHOD_NOT_ALLOWED
            return apache.OK

        elif req.method == "POST":
            return apache.OK

        elif req.method == "HEAD":
            # We should only receive this type of request from ourself.
            return apache.OK

        log_error("Unknown HTTP method", req.method)
        return apache.HTTP_METHOD_NOT_ALLOWED

    @staticmethod
    def _cleanup_request_processor():
        return apache.OK

    def handler(self, req):
        """
        a handler - not doing much for the common case, but called from
        classes that inherit this one.
        """
        log_debug(3)
        # Set the lang in the output headers
        if self.lang != "C":
            req.headers_out["Content-Language"] = self.getlang()

        log_debug(4, "URI", req.unparsed_uri)
        log_debug(4, "CONFIG", req.get_config())
        log_debug(4, "OPTIONS", req.get_options())
        log_debug(4, "HEADERS", req.headers_in)
        return apache.OK

    def cleanupHandler(self, _req):
        """
        clean up this session
        """
        log_debug(3)
        self.lang = "C"
        self.clientVersion = self.proxyVersion = 0
        # clear the global flags
        rhnFlags.reset()
        timer(self.start_time)
        return self._cleanup_request_processor()

    @staticmethod
    def logHandler(_req):
        """
        A dummy log function
        """
        log_debug(3)
        return apache.OK

    def setlang(self, lang, domain):
        """
        An entry point for setting the language for the current sesstion
        """
        self.lang = lang
        self.domain = domain
        cat.set(domain=domain)
        # If the language presented by the client does not exist, the
        # translation object falls back to printing the original string, which
        # is pretty much the same as translating to en
        cat.setlangs(self.lang)
        log_debug(3, self.lang, self.domain)

    @staticmethod
    def getlang():
        """
        And another lang function to produce the list of languages we're
        handling
        """
        return "; ".join(cat.getlangs())

    @staticmethod
    def _setSessionToken(headers):
        """ Pushes token into rhnFlags. If doesn't exist, returns None.
            Pull session token out of the headers and into rhnFlags.
        """
        log_debug(3)
        token = UserDictCase()
        if 'X-RHN-Server-Id' in headers:
            token['X-RHN-Server-Id'] = headers['X-RHN-Server-Id']
        else:
            # This has to be here, or else we blow-up.
            return None
        prefix = "x-rhn-auth"
        tokenKeys = [x for x in list(headers.keys()) if x[:len(prefix)].lower() == prefix]
        for k in tokenKeys:
            token[k] = headers[k]

        rhnFlags.set("AUTH_SESSION_TOKEN", token)
        return token


def timer(last):
    """
    a lame timer function for pretty logs
    """
    if not last:
        return 0
    log_debug(2, "Request served in %.2f sec" % (time.time() - last, ))
    return 0
07070100000023000081B40000000000000000000000016290A0C1000031D5000000000000000000000000000000000000002500000000spacewalk-backend/common/rhnCache.py  # Copyright (c) 2008--2016 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#

# This module implements a simple object caching system using shelves
# stored in files on the file system
#

import os
import gzip
try:
    #  python 2
    import cPickle
except ImportError:
    #  python3
    import pickle as cPickle
import fcntl
import sys
from stat import ST_MTIME
from errno import EEXIST

from uyuni.common.rhnLib import timestamp

from uyuni.common.usix import raise_with_tb
from uyuni.common.fileutils import makedirs, setPermsPath

# this is a constant I'm not too happy about but one way or another we have
# to reserve our own shared memory space.
CACHEDIR = "/var/cache/rhn"


def cleanupPath(path):
    """take ~taw/../some/path/$MOUNT_POINT/blah and make it sensible."""
    if path is None:
        return None
    return os.path.normpath(
        os.path.expanduser(
            os.path.expandvars(path)))

# build a filename for storing the key - eventually this is going to get
# more compelx as we observe issues


def _fname(name):
    fname = "%s/%s" % (CACHEDIR, name)
    return cleanupPath(fname)


def _unlock(fd):
    try:
        fcntl.lockf(fd, fcntl.LOCK_UN)
    except IOError:
        # If LOCK is not relinquished try flock,
        # its usually more forgiving.
        fcntl.flock(fd, fcntl.LOCK_UN)

# The following functions expose this module as a dictionary


def get(name, modified=None, raw=None, compressed=None, missing_is_null=1):
    cache = __get_cache(raw, compressed)

    if missing_is_null:
        cache = NullCache(cache)

    return cache.get(name, modified)


def set(name, value, modified=None, raw=None, compressed=None,
        user='root', group='root', mode=int('0755', 8)):
    # pylint: disable=W0622
    cache = __get_cache(raw, compressed)

    cache.set(name, value, modified, user, group, mode)


def has_key(name, modified=None):
    cache = Cache()
    return cache.has_key(name, modified)


def delete(name):
    cache = Cache()
    cache.delete(name)


def __get_cache(raw, compressed):
    cache = Cache()
    if compressed:
        cache = CompressedCache(cache)
    if not raw:
        cache = ObjectCache(cache)

    return cache


class UnreadableFileError(Exception):
    pass


def _safe_create(fname, user, group, mode):
    """ This function returns a file descriptor for the open file fname
        If the file is already there, it is truncated
        otherwise, all the directories up to it are created and the file is created
        as well.
    """

    # There can be race conditions between the moment we check for the file
    # existence and when we actually create it, so retry if something fails
    tries = 5
    while tries:
        tries = tries - 1
        # we're really picky about what can we do
        if os.access(fname, os.F_OK):  # file exists
            if not os.access(fname, os.R_OK | os.W_OK):
                raise UnreadableFileError()

            fd = os.open(fname, os.O_WRONLY | os.O_TRUNC)
            # We're done
            return fd

        # If directory does not exist, attempt to create it
        dirname = os.path.dirname(fname)
        if not os.path.isdir(dirname):
            try:
                #os.makedirs(dirname, 0755)
                makedirs(dirname, mode, user, group)
            except OSError:
                e = sys.exc_info()[1]
                # There is a window between the moment we check the disk and
                # the one we try to create the directory
                # We double-check the file existance here
                if not (e.errno == EEXIST and os.path.isdir(dirname)):
                    # If the exception was thrown on a parent dir
                    # check the subdirectory to go through next loop.
                    if os.path.isdir(e.filename):
                        continue
                    # Pass exception through
                    raise
            except:
                # Pass exception through
                raise
        # If we got here, it means the directory exists

        # file does not exist, attempt to create it
        # we pass most of the exceptions through
        try:
            fd = os.open(fname, os.O_WRONLY | os.O_CREAT | os.O_EXCL, int('0644', 8))
        except OSError:
            e = sys.exc_info()[1]
            # The file may be already there
            if e.errno == EEXIST and os.access(fname, os.F_OK):
                # Retry
                continue
            # Pass exception through
            raise
        # If we got here, the file is created, so break out of the loop
        setPermsPath(fname, user, group, mode)
        return fd

    # Ran out of tries; something is fishy
    # (if we manage to create or truncate the file, we've returned from the
    # function already)
    raise RuntimeError("Attempt to create file %s failed" % fname)


class LockedFile(object):

    def __init__(self, name, modified=None, user='root', group='root',
                 mode=int('0755', 8)):
        if modified:
            self.modified = timestamp(modified)
        else:
            self.modified = None

        self.fname = _fname(name)
        self.fd = self.get_fd(name, user, group, mode)

        self.closed = False

    def close(self):
        if not self.closed:
            self.close_fd()

            _unlock(self.fd.fileno())
            self.fd.close()
            self.closed = True

    def get_fd(self, name, user, group, mode):
        raise NotImplementedError

    def close_fd(self):
        raise NotImplementedError

    def __getattr__(self, x):
        return getattr(self.fd, x)


class ReadLockedFile(LockedFile):

    def get_fd(self, name, _user, _group, _mode):
        if not os.access(self.fname, os.R_OK):
            raise KeyError(name)
        fd = open(self.fname, "rb")

        fcntl.lockf(fd.fileno(), fcntl.LOCK_SH)

        if self.modified:
            if os.fstat(fd.fileno())[ST_MTIME] != self.modified:
                fd.close()
                raise KeyError(name)

        return fd

    def close_fd(self):
        pass


class WriteLockedFile(LockedFile):

    def get_fd(self, name, user, group, mode):
        try:
            fd = _safe_create(self.fname, user, group, mode)
        except UnreadableFileError:
            raise_with_tb(OSError("cache entry exists, but is not accessible: %s" % \
                name), sys.exc_info()[2])

        # now we have the fd open, lock it
        fcntl.lockf(fd, fcntl.LOCK_EX)
        return os.fdopen(fd, 'wb')

    def close_fd(self):
        # Set the file's mtime if necessary
        self.flush()
        if self.modified:
            os.utime(self.fname, (self.modified, self.modified))


class Cache:

    def __init__(self):
        pass

    def get(self, name, modified=None):
        fd = self.get_file(name, modified)

        s = fd.read()
        fd.close()

        if sys.version_info[0] >= 3 and isinstance(s, bytes):

            try:
               s = s.decode('utf8')
            except:
               s = s.decode('latin-1')
        return s

    def set(self, name, value, modified=None, user='root', group='root',
            mode=int('0755', 8)):
        fd = self.set_file(name, modified, user, group, mode)

        if sys.version_info[0] >= 3 and isinstance(value, str):
            value = value.encode('utf8')

        fd.write(value)
        fd.close()

    @staticmethod
    def has_key(name, modified=None):
        fname = _fname(name)
        if modified is not None:
            modified = timestamp(modified)
        if not os.access(fname, os.R_OK):
            return False
        # the file exists, so os.stat should not raise an exception
        statinfo = os.stat(fname)
        if modified is not None and statinfo[ST_MTIME] != modified:
            return False
        return True

    @staticmethod
    def delete(name):
        fname = _fname(name)
        # test for valid entry
        if not os.access(fname, os.R_OK):
            raise KeyError("Invalid cache key for delete: %s" % name)
        # now can we delete it?
        if not os.access(fname, os.W_OK):
            raise OSError("Read-Only access for cache entry: %s" % name)
        os.unlink(fname)

    @staticmethod
    def get_file(name, modified=None):
        fd = ReadLockedFile(name, modified)
        return fd

    @staticmethod
    def set_file(name, modified=None, user='root', group='root',
                 mode=int('0755', 8)):
        fd = WriteLockedFile(name, modified, user, group, mode)
        return fd


class ClosingZipFile(object):

    """ Like a GzipFile, but close closes both files. """

    def __init__(self, mode, io):
        self.zipfile = gzip.GzipFile(None, mode, 5, io)
        self.rawfile = io

    def close(self):
        self.zipfile.close()
        self.rawfile.close()

    def __getattr__(self, x):
        return getattr(self.zipfile, x)


class CompressedCache:

    def __init__(self, cache):
        self.cache = cache

    def get(self, name, modified=None):
        fd = self.get_file(name, modified)
        try:
            value = fd.read()
        except (ValueError, IOError, gzip.zlib.error):
            # Some gzip error
            # poking at gzip.zlib may not be such a good idea
            fd.close()
            raise_with_tb(KeyError(name), sys.exc_info()[2])
        fd.close()

        return value

    def set(self, name, value, modified=None, user='root', group='root',
            mode=int('0755', 8)):
        # Since most of the data is kept in memory anyway, don't bother to
        # write it to a temp file at this point
        f = self.set_file(name, modified, user, group, mode)
        f.write(value)
        f.close()

    def has_key(self, name, modified=None):
        return self.cache.has_key(name, modified)

    def delete(self, name):
        self.cache.delete(name)

    def get_file(self, name, modified=None):
        compressed_file = self.cache.get_file(name, modified)
        return ClosingZipFile('rb', compressed_file)

    def set_file(self, name, modified=None, user='root', group='root',
                 mode=int('0755', 8)):
        io = self.cache.set_file(name, modified, user, group, mode)

        f = ClosingZipFile('wb', io)
        return f


class ObjectCache:

    def __init__(self, cache):
        self.cache = cache

    def get(self, name, modified=None):
        pickled = self.cache.get(name, modified)

        try:
            if sys.version_info[0] >= 3 and isinstance(pickled, str):
                 pickled = pickled.encode('latin-1')
            return cPickle.loads(pickled)
        except cPickle.UnpicklingError:
            raise_with_tb(KeyError(name), sys.exc_info()[2])

    def set(self, name, value, modified=None, user='root', group='root',
            mode=int('0755', 8)):
        pickled = cPickle.dumps(value, -1)
        self.cache.set(name, pickled, modified, user, group, mode)

    def has_key(self, name, modified=None):
        return self.cache.has_key(name, modified)

    def delete(self, name):
        self.cache.delete(name)

    @staticmethod
    def get_file(*_args):
        raise RuntimeError("Getting a file descriptor for an object makes no sense.")


class NullCache:

    """ A cache that returns None rather than raises a KeyError. """

    def __init__(self, cache):
        self.cache = cache

    def get(self, name, modified=None):
        try:
            return self.cache.get(name, modified)
        except KeyError:
            return None

    def set(self, name, value, modified=None, user='root', group='root',
            mode=int('0755', 8)):
        self.cache.set(name, value, modified, user, group, mode)

    def has_key(self, name, modified=None):
        return self.cache.has_key(name, modified)

    def delete(self, name):
        self.cache.delete(name)

    def get_file(self, name, modified=None):
        try:
            return self.cache.get_file(name, modified)
        except KeyError:
            return None

    def set_file(self, name, modified=None, user='root', group='root',
                 mode=int('0755', 8)):
        return self.cache.set_file(name, modified, user, group, mode)
   07070100000024000081B40000000000000000000000016290A0C100004FAB000000000000000000000000000000000000002600000000spacewalk-backend/common/rhnConfig.py #
# Copyright (c) 2008--2017 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#

import os
import sys
import glob
import stat
import re

from rhn.UserDictCase import UserDictCase
from uyuni.common.usix import raise_with_tb

# bare-except and broad-except
# pylint: disable=W0702,W0703

_CONFIG_ROOT = '/etc/rhn'
_CONFIG_FILE = '%s/rhn.conf' % _CONFIG_ROOT
_CONFIG_DEFAULTS_ROOT = '/usr/share/rhn/config-defaults'


def warn(*args):
    """
    Function used for debugging purposes
    """
    sys.stderr.write("CONFIG PARSE WARNING: %s\n" % " ".join(map(str, args)))


class ConfigParserError(Exception):

    """
    Exception class we're using to expose fatal errors
    """
    pass


# TODO: need to be able to specify "" component and parse all files in
#       the directory and form a _complete_ mapping structure.
#       Or, if that is too difficult, take in a list of components...
class RHNOptions:

    """ Main options class
        The basic idea is to share the important pieces of information - the
        component and the configuration tree - across all instances of this
        class.
    """

    def __init__(self, component=None, root=None, filename=None):
        self.__component = None
        # Defaults for each option, keyed on tuples
        self.__defaults = {}
        # Parsed config file, keyed on tuples
        self.__parsedConfig = {}
        # Dictionary used as a cache (to avoid looking up options all over the
        # place). Keyed on strings (component names)
        self.__configs = {}
        # Last modification date for the config file
        self.__timestamp = 0
        # NOTE: root: root directory location of config files.
        self.root = None
        self.filename = None
        self.init(component, root, filename)

    def init(self, component, root=None, filename=None):
        """
        Visible function, so that we can re-init the object without
        losing the reference to it
        """
        if root is None:
            root = _CONFIG_ROOT
        self.filename = filename
        if self.filename is None:
            self.filename = _CONFIG_FILE
        self.setComponent(component)
        self.root = root

    def setComponent(self, comp):
        if not comp:
            comp = ()
        self.__component = comp

    def getComponent(self):
        return self.__component

    def is_initialized(self):
        return (self.__component is not None) and \
            self.__component in self.__configs

    def modifiedYN(self):
        """returns last modified time diff if rhn.conf has changed."""

        try:
            si = os.stat(self.filename)
        except OSError:
            e = sys.exc_info()[1]
            if e[0] == 13: #Error code 13 - Permission denied
                sys.stderr.write("ERROR: must be root to execute\n")
            else:
                sys.stderr.write("ERROR: " + self.filename + " is not accesible\n")
            sys.exit(e[0])
        lm = si[stat.ST_MTIME]
        # should always be positive, but a non-zero result is still
        # indication that the file has changed.
        return lm - self.__timestamp

    def updateLastModified(self, timeDiff=None):
        """ update the last modified time of the rhn.conf file. """
        if timeDiff is None:
            timeDiff = self.modifiedYN()
        self.__timestamp = self.__timestamp + timeDiff

    def parse(self):
        """
        This function parses the config file, if needed, and populates
        the configuration cache self.__configs
        """
        # Speed up the most common case
        timeDiff = self.modifiedYN()
        if not timeDiff and self.is_initialized():
            # Nothing to do: the config file did not change and we already
            # have the config cached
            return
        else:
            # if the timestamp changed, clear the list of cached configs
            # and retain the new timestamp
            self.updateLastModified(timeDiff)
            self.__configs.clear()  # cache cleared

        # parse the defaults.
        self._parseDefaults(allCompsYN=0)

        # Now that we parsed the defaults, we parse the multi-key
        # self.filename configuration (ie, /etc/rhn/rhn.conf)
        self.__parsedConfig = parse_file(self.filename)

        # And now generate and cache the current component
        self.__merge()

    def _parseDefaults(self, allCompsYN=0):
        """ Parsing of the /usr/share/rhn/config-defaults/*.conf (or equivalent)
        Make sure we have all the needed default config files loaded
        We store the defaults in a dictionary, keyed on the component tuple
        """
        comps = parse_comps(self.__component)
        if allCompsYN:
            comps = getAllComponents_tuples()
        for comp in comps:
            if comp in self.__defaults:
                # We already have it loaded
                # XXX: Should we do timestamp checking for this one too?
                continue
            # Create the config file name
            conffile = "%s/rhn.conf" % (_CONFIG_DEFAULTS_ROOT)
            if comp:
                conffile = "%s/rhn_%s.conf" % (_CONFIG_DEFAULTS_ROOT,
                                               '_'.join(comp))
            # if the file is not there (or can't be read), skip
            if not os.access(conffile, os.R_OK):
                warn("File not found or can't be read", conffile)
                continue
            # store this default set of values
            _dict = parse_file(conffile, single_key=1)
            # the parsed file is keyed by component, but for a config
            # file containing only single keys we know the component
            # is going to be () and we need to override it with
            # whatever we're parsing now in the self.__defaults table
            def_dict = {}
            for k in list(_dict[()].keys()):
                # we extract just the values and dump the line number
                # from the (values,linno) tuples which is the hash
                # value for _dict[()][k]
                def_dict[k] = _dict[()][k][0]
            self.__defaults[comp] = def_dict

    def keys(self):
        self.__check()
        return list(self.__configs[self.__component].keys())

    def has_key(self, key):
        self.__check()
        return key in self.__configs[self.__component]

    def values(self):
        self.__check()
        return list(self.__configs[self.__component].values())

    def items(self):
        self.__check()
        return list(self.__configs[self.__component].items())

    def set(self, key, value):
        self.__check()
        self.__configs[self.__component][key] = value
    __setitem__ = set

    def show(self):
        self.__check()
        # display the configuration read from the file(s) and exit
        vals = list(self.__configs[self.__component].items())
        vals.sort(key=lambda a: a[0])
        for k, v in vals:
            if v is None:
                v = ""
            print(("%-20s = %s" % (k, v)))

    # polymorphic methods

    def __getattr__(self, key):
        """fetch option you want in a self.DEBUG kind of syntax
           (can force component selection)

        e.g.: say for example we have an option proxy.debug = 5
              stored in the dictionary. proxy just says that only proxy
              can access this option. So for this exmple,
              self.__component is proxy.
               cfg = RHNOptions("proxy")
               print cfg.DEBUG ---> yields 5
        """
        self.__check()
        # For some reason, before the migration to python3, the code
        # used all attribute names in capital letters, and it worked
        # while for python3 it is failing. Adding .lower() since
        # otherwise changing the mentions to config parameters
        # all over the code, would take ages
        if key.lower() not in self.__configs[self.__component]:
            raise AttributeError(key)
        return self.__configs[self.__component][key.lower()]
    __getitem__ = __getattr__

    def get(self, key, default=None):
        ret = default
        if key in self.__configs[self.__component]:
            ret = self.__configs[self.__component][key]
        return ret

    def __str__(self):
        s = "Uninitialized"
        if self.__component and self.__component in self.__configs:
            s = str(self.__configs[self.__component])
        return "<RHNOptions instance at %s: %s>" % (id(self), s)
    __repr__ = __str__

    # private methods

    def __check(self):
        if not self.is_initialized():
            raise ConfigParserError("Uninitialized config for component",
                                    self.__component)

    def __merge(self, component=None):
        """
        merge the config options between the default comp dictionaries
        and the file we're parsing now
        """
        # Caches this component's configuration options
        if component is None:
            component = self.__component

        opts = UserDictCase()
        comps = parse_comps(component)
        for comp in comps:
            if comp not in self.__defaults:
                warn('key not found in config default dict', comp)
                continue
            opts.update(self.__defaults[comp])

        # Now load the specific stuff, and perform syntax checking too
        for comp in comps:
            if comp not in self.__parsedConfig:
                # No such entry in the config file
                continue
            for key, (values, _lineno_) in list(self.__parsedConfig[comp].items()):
                # we don't really want to force every item in the
                # config file to have a default value first. If we do,
                # uncomment this section
                # if not opts.has_key(key): # Unknown keyword
                #    warn("Warning: in file %s, line %s: unknown "
                #        "option name `%s'" % (self.filename, lineno, key))
                #    continue
                opts[key] = values
        # and now save it
        self.__configs[component] = opts

    # protected/test methods

    def getDefaults(self):
        """returns the __defaults dict (dictionary of parsed defaults).
        """
        self.__check()
        return self.__defaults

    def _getParsedConfig(self):
        """returns the __parsedConfig dict (dictionary of parsed
           /etc/rhn/rhn.conf file).
        """
        self.__check()
        return self.__parsedConfig

    def _getConfigs(self):
        """returns the __configs dict (dictionary of the merged options
           keyed by component.
        """
        self.__check()
        return self.__configs

    def showall(self):
        from pprint import pprint
        print("__defaults: dictionary of parsed defaults.")
        pprint(self.__defaults)
        print("")
        print("__parsedConfig: dictionary of parsed /etc/rhn/rhn.conf file.")
        pprint(self.__parsedConfig)
        print("")
        print("__configs: dictionary of the merged options keyed by component.")
        pprint(self.__configs)


def parse_comps(component):
    """
    Splits a component name (a.b.c) into a list of tuples that can be
    joined together to determine a config file name
    Eg. a.b.c --> [(), ('a',), ('a','b'), ('a','b','c')]
    """
    # Split the component name on '.'
    if not component:
        return [()]
    comps = [c.lower() for c in component.split('.')]
    # Now generate the prefixes for this component
    return [tuple(comps[:i]) for i in range(len(comps) + 1)]


def parse_line(line):
    """
    Parse a config line...
    Returns a tuple (keys, values), or (None, None) if we don't care
    about this line
    """
    varSeparator = '.'
    optSeparator = ','

    def sanitize_value(key, val):
        """
        attempt to convert a string value to the proper type
        """
        converTable = {'proxy.http_proxy_username': str,
                       'proxy.http_proxy_password': str,
                       'server.satellite.http_proxy_username': str,
                       'server.satellite.http_proxy_password': str,
                       'server.satellite.rhn_parent': str,
                       'db_name': str,
                       'db_user': str,
                       'db_password': str,
                       'db_host': str,
                       'server.susemanager.mirrcred_user': str,
                       'server.susemanager.mirrcred_pass': str}
        val = val.strip()

        if converTable.get(key):
            try:
                val = converTable.get(key)(val)
            except ValueError:
                pass
        else:
            try:
                val = int(val)  # make int if can.
            except ValueError:
                try:
                    val = float(val)  # make float if can.
                except ValueError:
                    pass
        if val == '':  # Empty strings treated as None
            val = None
        return val

    # Skip empty and comment-only lines
    if re.match(r'[ \t]*(#|$)', line):
        return (None, None)

    # now split it into keys and values. We allow for max one
    # split/cut (the first one)
    (keys, vals) = [c.strip() for c in line.split('=', 1)]

    # extract the keys, convert to lowercase
    keys = keys.lower()
    if not keys:
        raise ConfigParserError("Missing Key = expression")

    # extract the values, preserving case
    if not vals:
        keys = keys.split(varSeparator)
        return (keys, None)
    # split and sanitize
    vals = list(map(sanitize_value, [keys] * len(vals.split(optSeparator)),
                    vals.split(optSeparator)))
    if len(vals) == 1:
        # Single value
        vals = vals[0]
    keys = keys.split(varSeparator)
    # and now return our findings
    return (keys, vals)


def parse_file(filename, single_key=0):
    """
    parse a config file (read it in, parse its lines)
    """
    lines = read_file(filename)
    # the base case, an empty tuple component, is always present.
    ret = {(): {}}
    lineno = 0
    # okay, read the file, parse the lines one by one
    for line in lines:
        # lineno is 1-based
        lineno = lineno + 1
        try:
            (keys, values) = parse_line(line)
        except:
            raise_with_tb(ConfigParserError("Parse Error: <%s:%s>: '%s'" % (
                filename, lineno, line)), sys.exc_info()[2])
        if keys is None:  # We don't care about this line
            continue
        # now process the parsed line
        if single_key and len(keys) > 1:
            # Error, we should not have more than one key in the this
            # config file
            #            raise ConfigParserError("Parse Error: <%s:%s>: too many keys"
            #              % (filename, lineno))
            # let's fix the faulty config=file setup...
            # XXX: needs more testing!!! (2003-04-17)
            del keys[:-1]
        # Store this line in a dictionary filled by component
        comp = tuple(keys[:-1])
        key = keys[-1]
        if comp not in ret:
            # Don't make it a UserDictCase since we know exactly we
            # already used string.lower
            ret[comp] = {}
        ret[comp][key] = (values, lineno)
    return ret


def read_file(filename):
    """
    reads a text config file and returns its lines in a list
    """
    try:
        with open(filename, 'r') as configfile:
            return configfile.readlines()
    except (IOError, OSError):
        e = sys.exc_info()[1]
        raise_with_tb(ConfigParserError("Can not read config file", filename, e.args[1]), sys.exc_info()[2])


def getAllComponents_tree(defaultDir=None):
    """Figure out all components and return them in a tree-like structure

    {'server', {'server.app':{},
                'server.satellite':{},
                'server.applet':{}, 'server.bugzilla':{},
                'server.iss':{}, 'server.xmlrpc':{}, 'server.xp':{}},
     'web': {},
     'tools': {}}

    NOTE: this was begging for recursion... I avoided that like the plague
    """

    if defaultDir is None:
        defaultDir = _CONFIG_DEFAULTS_ROOT
    comps = glob.glob('%s/*.conf' % defaultDir)
    compTree = {}
    for comp in comps:
        comp = os.path.basename(comp)
        comp = comp[:comp.find('.')]       # left of .conf
        parts = comp.split('_')[1:]        # strip off that rhn_
        if not parts:
            continue
        d = compTree
        for i in range(len(parts)):
            key = '.'.join(parts[:i + 1])
            if key not in d:
                d[key] = {}
            d = d[key]
    return compTree


def getAllComponents(defaultDir=None, compsTree=None):
    """recursively flattens the results of getAllComponents_tree returning
       a list of all components"""

    if compsTree is None:
        compsTree = getAllComponents_tree(defaultDir)
    l = []
    for k, v in list(compsTree.items()):
        l.extend(getAllComponents(None, v))
        l.append(k)
    return l


def getAllComponents_tuples(defaultDir=None):
    """returns a list of ALL components in the tuple-ified format:
       E.g., [(), ('a',), ('a','b'), ('a','b','c'), ...]
    """
    comps = getAllComponents(defaultDir)
    d = {}
    for comp in comps:
        for c in parse_comps(comp):
            d[c] = None
    return list(d.keys())


CFG = RHNOptions()


def initCFG(component=None, root=None, filename=None):
    """
    Main entry point here
    """
    # NOTE: root: root directory location of config files.
    CFG.init(component, root, filename)
    CFG.parse()

try:
    ALL_CFG = RHNOptions('')
    ALL_CFG.parse()
    PRODUCT_NAME = ALL_CFG.PRODUCT_NAME
except ConfigParserError:
    PRODUCT_NAME = "SUSE Manager"


def isUyuni():
    return (PRODUCT_NAME == "Uyuni")

def runTest():
    print("Test script:")
    import pprint
    print("Component tree of all installed components:")
    pprint.pprint(getAllComponents_tree())
    print("")
    test_cfg = RHNOptions(sys.argv[1])
#    test_cfg = RHNOptions('server.app')
#    test_cfg = RHNOptions('proxy.broker')
#    test_cfg = RHNOptions('proxy.redirect', _CONFIG_ROOT)
#    test_cfg = RHNOptions('proxy.redirect', '/tmp')
#    test_cfg.filename = 'empty.conf'
    test_cfg.parse()
    print("=============== the object's repr ================================")
    print(test_cfg)
    print("=============== the object's defaults ============================")
    pprint.pprint(test_cfg.getDefaults())
    print("=============== an erronous lookup example =======================")
    print("testing __getattr__")
    try:
        print((test_cfg.lkasjdfxxxxxxxxxxxxxx))
    except AttributeError:
        e = sys.exc_info()[1]
        print(('Testing: "AttributeError: %s"' % e))
    print("")
    print("=============== the object's merged settings ======================")
    test_cfg.show()
    print("=============== dump of all relevant dictionaries =================")
    test_cfg.showall()
    print("===================================================================")


#------------------------------------------------------------------------------
# Usage:  rhnConfig.py [ { get | list } component [ key ] ]
#    No args assumes test mode.


if __name__ == "__main__":
    do_list = 0
    comp_arg = None
    key_arg = None

    if len(sys.argv) == 4 and sys.argv[1] == "get":
        comp_arg = sys.argv[2]
        key_arg = sys.argv[3]
    elif len(sys.argv) == 3 and sys.argv[1] == "list":
        comp_arg = sys.argv[2]
        do_list = 1
    else:
        # Assume test mode.
        runTest()
        sys.exit(1)

    cfg = RHNOptions(comp_arg)
    cfg.parse()

    if do_list:
        cfg.show()
    else:
        print((cfg.get(key_arg)))
 07070100000025000081B40000000000000000000000016290A0C10000364F000000000000000000000000000000000000002900000000spacewalk-backend/common/rhnException.py  #
# Copyright (c) 2008--2016 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#

import sys
try:
    #  python 2
    import xmlrpclib
except ImportError:
    #  python3
    import xmlrpc.client as xmlrpclib  # pylint: disable=F0401

try:
    #  python 2
    from cStringIO import StringIO
except ImportError:
    #  python3
    from io import StringIO


# What other rhn modules we need
from spacewalk.common.rhnConfig import PRODUCT_NAME
from spacewalk.common.rhnTranslate import _
from spacewalk.common import rhnFlags


# default template values for error messages
templateValues = {
    'hostname': 'example.com',
}


# This array translates exception codes into meaningful messages
# for the eye of the beholder
# DOMAINS:
#   0-999:     Red Hat client/client-like interaction errors
#   1000-1999: Proxy specific interaction errors
#   2000-2999: Red Hat Satellite specific interation errors

FaultArray = {
    # 0-999: Red Hat client/client-like interaction errors:
    1: _("This does not appear to be a valid username."),
    2: _("Invalid username and password combination."),
    3: _("This login is already taken, or the password is incorrect."),
    4: _("Permission denied."),
    6: _("Object not found."),
    8: _("Invalid System Digital ID."),
    9: _("Invalid System Credentials."),
    10: _("Could not retrieve user data from database."),
    11: _("Valid username required."),
    12: _("Valid password required."),
    13: _("Minimum username length violation."),
    14: _("Minimum password length violation."),
    15: _("The username contains invalid characters."),
    17: _("File not found."),
    19: _("Architecture and OS version combination is not supported."),
    20: _("Could not retrieve system data from database."),
    21: _("Invalid arguments passed to function."),
    22: _("Unable to retrieve requested entry."),
    23: _("Could not update database entry."),
    24: _("Unsupported server architecture."),
    28: _("""
     The anonymous server functionality is no longer available.

     Please re-register this system by running mgr_register as root.
     Please visit https://%(hostname)s/rhn/systems/SystemEntitlements.do
     or login at https://%(hostname)s, and from the "Overview" tab,
     select "Subscription Management" to enable the service for this system.
     """),
    29: _("Record not available in the database."),
    30: _("Invalid value for entry."),
    31: _("""
     This system does not have a valid entitlement for SUSE Manager.
     Please visit https://%(hostname)s/rhn/systems/SystemEntitlements.do
     or login at https://%(hostname)s, and from the "Overview" tab,
     select "Subscription Management" to enable the service for this system.
     """),
    32: _("Channel error"),
    33: _("Client session token is invalid."),
    34: _("Client session token has expired."),
    35: _("You are not authorized to retrieve the requested object."),
    36: _("Invalid action"),
    37: _("You are not allowed to perform administrative tasks \
on this system."),
    38: _("The system is already subscribed to the specified channel."),
    39: _("The system is not currently subscribed to the specified channel."),
    40: _("The specified channel does not exist."),
    41: _("Invalid channel version."),
    43: _("""
     User group membership limits exceeded.

     The current settings for your account do not allow you to add another
     user account. Please check with the organization administrator for your
     account if the maximum number of users allowed to subscribe to server needs
     to be changed.
     """),
    44: _("""
     System group membership limits exceeded.

     The current settings for your account do not allow you to add another
     system profile. Please check with the organization administrator for your
     account for modifying the maximum number of system profiles that can be
     subscribed to your account.
     """),
    45: _("""
     Invalid architecture.

     The architecture of the package is not supported by
     """ + PRODUCT_NAME),
    47: _("""Invalid RPM header"""),
    48: _("""
    This system is already registered as a Salt Minion. If you want to register it as a traditional client
    please delete it first via the web UI or API and then register it using the traditional tools.
    """),
    # For the uploading tools
    50: _("Invalid information uploaded to the server"),
    53: _("Error uploading network interfaces configuration."),
    54: _("""
     Package Upload Failed due to uniqueness constraint violation.
     Make sure the package does not have any duplicate dependencies or
     does not already exists on the server
     """),
    55: _("""
     The --force mgrpush option is disabled on this server.
     Please contact your SUSE Manager administrator for more help.
     """),

    # 60-70: token errors
    60: _("""
     The activation token specified could not be found on the server.
     Please retry with a valid key.
     """),
    61: _("Too many systems registered using this registration token"),
    62: _("Token contains invalid, obsoleted or insufficient settings"),
    63: _("Conflicting activation tokens"),

    # 70-80: channel subscription errors
    70: _("""
     No matching base channel found for your system.
     """),
    71: _("""
     You do not have subscription permission to the designated channel.
     Please refer to your organization's channel or organization
     administrators for further details.
     """),
    72: _("""You can not unsubscribe from base channel."""),
    73: _("""SUSE Manager or Proxy channel can not be subscribed."""),

    # 80-90: server group errors
    80: _("There was an error while trying to join the system to its groups"),

    # 90-100: entitlement errors
    90: _("Unable to entitle system"),

    # 100-109: e-mail and uuid related faults
    100: _("Maximum e-mail length violation."),
    105: _("This system has been previously registered."),
    106: _("Invalid username"),

    # 140-159 applet errors
    140: _("Unable to look up server"),

    # 160-179: OSAD errors
    160: _("Required argument is missing"),

    # 600-699: RHEL5+ EN errors
    601: _("No entitlement information tied to hardware"),
    602: _("Installation number is not entitling"),

    # 700-799: Additional user input verification errors.
    700: _("Maximum username length violation"),
    701: _("Maximum password length violation"),
    702: _("This user has read only API access. Action denied."),

    800: _("System Name cannot be less than 1 character"),

    # 1000-1999: Proxy specific errors:
    # issued by a Proxy to the client
    1000: _("SUSE Manager Proxy error."),
    1001: _("SUSE Manager Proxy unable to login."),
    # issued by a SUSE Manager Server/Satellite to the proxy
    1002: _("""
     SUSE Manager Proxy system ID does not match a Spacewalk Proxy Server
     in the database.
     """),
    1003: _("SUSE Manager Proxy session token is invalid."),
    1004: _("SUSE Manager Proxy session token has expired."),


    # 2000-2999: Red Hat Satellite specific errors:
    2001: _(PRODUCT_NAME + """
      user creation is not allowed via mgr_register;
     please contact your sysadmin to have your account created.
     """),
    2004: _("""
     This SUSE Manager server is not allowed to use Inter Server Sync on this server
     """),
    2005: _("""
     Inter Server Sync is disabled on this SUSE Manager Server.
     """),

    # 3000-3999: XML dumper errors:
    3000: _("Invalid datatype passed"),
    3001: _("Unable to retrieve channel"),
    3003: _("Unable to retrieve package"),
    3005: _("Unable to retrieve erratum"),
    3007: _("File is missing"),
    3008: _("Function retrieval error"),
    3009: _("Function execution error"),
    3010: _("Missing version string"),
    3011: _("Invalid version string"),
    3012: _("Mismatching versions"),
    3013: _("Invalid channel version"),
    3015: _("No comps file for channel"),
    3016: _("Unable to retrieve comps file"),

    # 4000 - 4999: config management errors
    4002: _("Configuration action missing"),
    4003: _("File too large"),
    4004: _("File contains binary data"),
    4005: _("Configuration channel is not empty"),
    4006: _("Permission error"),
    4007: _("Content missing for configuration file"),
    4008: _("Template delimiters not specified"),
    4009: _("Configuration channel does not exist"),
    4010: _("Configuration channel already exists"),
    4011: _("File missing from configuration channel"),
    4012: _("Different revision of this file is uploaded"),
    4013: _("File already uploaded to configuration channel"),
    4014: _("File size exceeds remaining quota space"),
    4015: _("Full path of file must be specified"),
    4016: _("Invalid revision number"),
    4017: _("Cannot compare files of different file type"),

    # 5000 - 5999: client content uploading errors
    # 5000 - 5099: crash reporting errors
    5000: _("Crash information is invalid or incomplete"),
    5001: _("Crash file information is invalid or incomplete"),
    5002: _("Error composing crash directory path"),
    5003: _("Error composing crash file path"),
    5004: _("Invalid content encoding"),
    5005: _("Invalid crash name"),
    5006: _("Crash reporting is disabled for this organization"),
    # 5100 - 5199: scap results reporting error
    5101: _("SCAP results file transfer is invalid or incomplete"),
    5102: _("Error composing directory path for detailed SCAP results"),
    5103: _("Error composing file path for detailed SCAP results"),
    5104: _("Invalid content encoding"),
}


class rhnException(Exception):

    """
    This is the generic exception class we raise in the code when we want to
    abort program execution and send a "500 Internal Server Error" message back
    to the client.
    """

    def __init__(self, *args):
        Exception.__init__(self, *args)
        self.args = args

    def __repr__(self):
        """
        String representation of this object.
        """
        s = StringIO()
        s.write("\nInternal code error. Information available:\n")
        for a in self.args:
            s.write("  %s\n" % (a, ))

        return s.getvalue()


class redirectException(Exception):

    """
    pkilambi:This is the exception class we raise when we decide to
    issue a redirect functions in apacheRequest will catch it and
    transform it into a redirect path string
    """

    def __init__(self, redirectpath=""):
        Exception.__init__(self)
        self.path = redirectpath

    def __str__(self):
        """
        Object in string format.
        """
        return repr(self.path)


Explain = _("""
     An error has occurred while processing your request. If this problem
     persists please enter a bug report at scc.suse.com.
     If you choose to submit the bug report, please be sure to include
     details of what you were trying to do when this error occurred and
     details on how to reproduce this problem.
""")


class rhnFault(Exception):

    """
    This is a data exception class that is raised when we detect bad data.
    The higher level functions in apacheServer will catch it and transform it
    into an XMLRPC fault message that gets passed back to the client without
    aborting the current execution of the process (well, we abort, but we don't
    mail a traceback because this is the type of error we can handle - think
    user authentication).
    """

    def __init__(self, err_code=0, err_text="", explain=1):
        self.code = err_code
        self.text = err_text
        self.explain = explain
        self.arrayText = ''
        if self.code and self.code in FaultArray:
            self.arrayText = FaultArray[self.code]
        Exception.__init__(self, self.code, self.text, self.arrayText)

    def __repr__(self):
        """
        String representation of this object.
        """
        return "<rhnFault class (code = %s, text = '%s')>" % (self.code,
                                                              self.text)

    def getxml(self):

        # see if there were any template strings loaded from the db,
        # {label:value}
        templateOverrides = rhnFlags.get('templateOverrides')

        # update the templateValues in the module
        if templateOverrides:
            for label in list(templateOverrides.keys()):
                # only care about values we've defined defaults for...
                if label in templateValues:
                    templateValues[label] = templateOverrides[label]

        s = StringIO()
        s.write("\n")
        if self.text:
            s.write(_("Error Message:\n    %s\n") % self.text.strip())
        if self.code:
            s.write(_("Error Class Code: %s\n") % self.code)
        if self.arrayText:
            cinfo = self.arrayText % templateValues
            s.write(_("Error Class Info: %s\n") % cinfo.rstrip())
        if self.explain:
            s.write(_("Explanation: %s") % Explain)
        if not self.code:
            return xmlrpclib.Fault(1, s.getvalue())
        return xmlrpclib.Fault(-self.code, s.getvalue())


class rhnNotFound(Exception):

    """ Raised when we want return 404 Not Found """
    pass

if __name__ == "__main__":
    print("You can not run this module by itself")
    sys.exit(-1)
 07070100000026000081B40000000000000000000000016290A0C100000576000000000000000000000000000000000000002500000000spacewalk-backend/common/rhnFlags.py  # Copyright (c) 2008--2016 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#
# Small class that handles a global flags structure. the globale dictionary
# used to hold the flags gets initialized on demand
#

__F = {}


def set(name, value=1):
    """
    set value
    """
    # pylint: disable=W0622,W0602
    global __F
    if not name:
        return None
    name = name.lower()
    __F[name] = value
    return None


def get(name):
    """
    get value
    """
    if not name:
        return None
    name = name.lower()
    return __F.get(name)


def test(name):
    """
    test value
    """
    if not name:
        return 0
    name = name.lower()
    return (name in __F) and __F[name]


def reset():
    """
    reset all
    """
    __F.clear()


def all():
    """
    return all flags in a dict
    """
    # pylint: disable=W0622
    return __F
  07070100000027000081B40000000000000000000000016290A0C10000202F000000000000000000000000000000000000002300000000spacewalk-backend/common/rhnLog.py    # rhnLog.py                                            - Logging functions.
#------------------------------------------------------------------------------
# This module contains the necessary functions for producing log messages to
# stderr, stdout or a specified filename. Used by all server-side code.
#
# USAGE: For general purposes, simply import the log_debug function and use it
#        as log_debug(min_level, *args)
#
# NOTE ON LOG LEVELS (rough descriptions):
# 1 - generally for 1 line log items and/or of relative importance
# 2 - shorter multi-line log items
# 3 - longer multi-line log items and/or of lesser importance
# 4 - excessive stuff
# 5 - really excessive stuff
#
#------------------------------------------------------------------------------
#
# Copyright (c) 2008--2017 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#

# system module imports
import os
import sys
import traceback
import time
import fcntl
import atexit
from uyuni.common.fileutils import getUidGid
from uyuni.common.rhnLib import isSUSE

LOG = None

# helper function to format the current time in the log format


def log_time():
    if time.daylight:
        # altzone provides the DST-corrected time
        tz_offset = time.altzone
    else:
        # DST is not in effect
        tz_offset = time.timezone
    # Unfortunately, -3601 / 3600 == 2
    # Also, tz_offset's sign is reverted: it is positive west of GMT
    if tz_offset < 0:
        sign = '+'
    else:
        sign = '-'
    hours, secs = divmod(abs(tz_offset), 3600)
    mins = secs / 60

    tz_offset_string = " %s%02d:%02d" % (sign, hours, mins)
    t = time.strftime("%Y/%m/%d %H:%M:%S", time.localtime(time.time()))
    return t + tz_offset_string

# function for setting the close-on-exec flag


def set_close_on_exec(fd):
    s = fcntl.fcntl(fd, fcntl.F_GETFD)
    fcntl.fcntl(fd, fcntl.F_SETFD, s | fcntl.FD_CLOEXEC)

# pylint: disable=W0702

# Init the log


def initLOG(log_file="stderr", level=0):
    global LOG

    # check if it already setup
    if LOG is not None:
        # We already have a logging object
        if log_file is None or LOG.file == log_file:
            # Keep the same logging object, change only the log level
            LOG.level = level
            return
        # We need a different type, so destroy the old one
        LOG = None
    elif log_file is None:
        log_file = "/dev/null"

    # attempt to create the path to the log file if neccessary
    log_path = os.path.dirname(log_file)
    if log_file not in ('stderr', 'stdout') \
            and log_path and not os.path.exists(os.path.dirname(log_file)):
        log_stderr("WARNING: log path not found; attempting to create %s" %
                   log_path, sys.exc_info()[:2])

        # fetch uid, gid so we can do a "chown ..."
        if isSUSE():
            apache_uid, apache_gid = getUidGid('wwwrun', 'www')
        else:
            apache_uid, apache_gid = getUidGid('apache', 'apache')

        try:
            os.makedirs(log_path)
            os.chown(log_path, apache_uid, apache_gid)
        except:
            log_stderr("ERROR: unable to create log file path %s" % log_path,
                       sys.exc_info()[:2])
            return

    # At this point, LOG is None and log_file is not None
    # Get a new LOG
    LOG = rhnLog(log_file, level)
    return 0

# Convenient macro-type debugging function


def log_debug(level, *args):
    # Please excuse the style inconsistencies.
    if LOG and LOG.level >= level:
        LOG.logMessage(*args)

# Dump some information to stderr.


def log_stderr(*args):
    pid = os.getpid()
    for arg in args:
        sys.stderr.write("SUSE Manager %s %s: %s\n" % (
            pid, log_time(), arg))
    sys.stderr.flush()

# Convenient error logging function


def log_error(*args):
    if not args:
        return
    if LOG:
        LOG.logMessage("ERROR", *args)
    # log to stderr too
    log_stderr(str(args))

# Log a string with no extra info.


def log_clean(level, msg):
    if LOG and LOG.level >= level:
        LOG.writeToLog(msg)

# set the request object for the LOG so we don't have to expose the
# LOG object externally


def log_setreq(req):
    if LOG:
        LOG.set_req(req)

# The base log class


class rhnLog:

    def __init__(self, log_file, level):
        self.level = level
        self.log_info = "0.0.0.0: "
        self.file = log_file
        self.pid = os.getpid()
        self.real = 0
        if self.file in ["stderr", "stdout"]:
            self.fd = getattr(sys, self.file)
            self.log_info = ""
            return

        newfileYN = 0
        if not os.path.exists(self.file):
            newfileYN = 1  # just used for the chown/chmod

        # else, open it as a real file, with locking and stuff
        try:
            # try to open it in line buffered mode
            self.fd = open(self.file, "a", 1)
            set_close_on_exec(self.fd)
            if newfileYN:
                if isSUSE():
                    apache_uid, apache_gid = getUidGid('wwwrun', 'www')
                else:
                    apache_uid, apache_gid = getUidGid('apache', 'apache')
                os.chown(self.file, apache_uid, apache_gid)
                os.chmod(self.file, int('0660', 8))
        except:
            log_stderr("ERROR LOG FILE: Couldn't open log file %s" % self.file,
                       sys.exc_info()[:2])
            self.file = "stderr"
            self.fd = sys.stderr
        else:
            self.real = 1

    # Main logging method.
    def logMessage(self, *args):
        tbStack = traceback.extract_stack()
        callid = len(tbStack) - 3
        module = ''
        try:    # So one can debug from the commandline.
            module = tbStack[callid][0]
            arr = module.split('/')
            if len(arr) > 1:
                lastDir = arr[-2] + "/"
            else:
                lastDir = ""
            filename = arr[-1]
            filename = filename[:filename.rindex('.')]
            module = lastDir + filename
            del lastDir
        except:
            module = ''

        msg = "%s%s.%s" % (self.log_info, module, tbStack[callid][2])
        if args:
            msg = "%s%s" % (msg, repr(args))
        self.writeMessage(msg)

    # send a message to the log file w/some extra data (time stamp, etc).
    def writeMessage(self, msg):
        if self.real:
            msg = "%s %d %s" % (log_time(), self.pid, msg)
        else:
            msg = "%s %s" % (log_time(), msg)
        self.writeToLog(msg)

    # send a message to the log file.
    def writeToLog(self, msg):
        # this is for debugging in case of errors
        # fd = self.fd # no-op, but useful for dumping the current data
        self.fd.write("%s\n" % msg)

    # Reinitialize req info if req has changed.
    def set_req(self, req=None):
        remoteAddr = '0.0.0.0'
        if req:
            if "X-Forwarded-For" in req.headers_in:
                remoteAddr = req.headers_in["X-Forwarded-For"]
            else:
                remoteAddr = req.connection.remote_ip
        self.log_info = "%s: " % (remoteAddr, )

    # shutdown the log
    def __del__(self):
        if self.real:
            self.fd.close()
        self.level = self.log_info = None
        self.pid = self.file = self.real = self.fd = None


def _exit():
    global LOG
    if LOG:
        del LOG
        LOG = None

atexit.register(_exit)


#------------------------------------------------------------------------------
if __name__ == "__main__":
    print("You can not run this module by itself")
    sys.exit(-1)
#------------------------------------------------------------------------------
 07070100000028000081B40000000000000000000000016290A0C10000080F000000000000000000000000000000000000002400000000spacewalk-backend/common/rhnMail.py   #
# Copyright (c) 2008--2016 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#
# this module implements the send mail support
#

import os
import smtplib

from rhn.connections import idn_puny_to_unicode

from spacewalk.common.rhnConfig import CFG, PRODUCT_NAME
from uyuni.common.stringutils import to_string

# check if the headers have the minimum required fields


def __check_headers(h):
    if not isinstance(h, type({})):
        # does not look like a dictionary
        h = {}
    if "Subject" not in h:
        h["Subject"] = "%s System Mail From %s" % (PRODUCT_NAME,
                                                   idn_puny_to_unicode(os.uname()[1]))
    if "To" not in h:
        to = CFG.TRACEBACK_MAIL
    else:
        to = h["To"]
    if "Content-Type" not in h:
        h["Content-Type"] = "text/plain; charset=utf-8"
    if isinstance(to, (list, tuple)):
        toaddrs = to
        to = ', '.join(to)
    else:
        toaddrs = to.split(',')
    h["To"] = to
    return [h, toaddrs]

# check the headers for sanity cases and send the mail


def send(headers, body, sender=None):
    try:
        (headers, toaddrs) = __check_headers(headers)
    except:
        return
    if sender is None:
        sender = headers["From"]
    joined_headers = ''
    for h in list(headers.keys()):
        joined_headers += "%s: %s\n" % (h, headers[h])

    server = smtplib.SMTP('localhost')
    msg = "%s\n%s\n" % (to_string(joined_headers), to_string(body))
    server.sendmail(sender, toaddrs, msg)
    server.quit()
 07070100000029000081B40000000000000000000000016290A0C1000027B8000000000000000000000000000000000000002A00000000spacewalk-backend/common/rhnRepository.py #
# Copyright (c) 2008--2016 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#
#

import os
import stat
try:
    #  python 2
    import cStringIO
except ImportError:
    #  python3
    import io as cStringIO
import sys
from rhn import rpclib

from uyuni.common import usix
from uyuni.common import rhn_rpm
from uyuni.common.rhnLib import rfc822time

# local imports
from spacewalk.common import rhnFlags
from spacewalk.common.rhnLog import log_debug
from spacewalk.common.rhnException import rhnException, rhnFault, rhnNotFound
from spacewalk.common.RPC_Base import RPC_Base

# bare-except and broad-except
# pylint: disable=W0702,W0703

class Repository(RPC_Base):

    """ Shared repository class, inherited by both the proxy and server specific
        Repository classes.
    """

    def __init__(self, channelName=None):
        log_debug(2, channelName)
        RPC_Base.__init__(self)
        self.channelName = channelName
        # Default visible functions.
        self.compress_headers = 1
        self.functions = [
            'getPackage',
            'getPackageHeader',
            'getPackageSource',
            'i18n',
            'content',
            'installation_xml',
            'media_1'
        ]

    def set_compress_headers(self, val):
        self.compress_headers = val

    def __del__(self):
        self.channelName = None
        self.functions = None

    def getPackagePath(self, pkgFilename, redirect=0):
        """Returns the path to a package.
           OVERLOAD this in server and proxy rhnRepository.
           I.e.: they construct the path differently.
        """
        # pylint: disable=R0201,W0613
        raise rhnException("This function should be overloaded.")

    @staticmethod
    def getPackagePathNVRA(_nvra):
        """OVERLOAD this in server and proxy rhnRepository.
           I.e.: they construct the path differently.
        """
        raise rhnException("This function should be overloaded.")

    def getSourcePackagePath(self, _pkgFilename):
        """Returns the path to a package.
           OVERLOAD this in server and proxy rhnRepository.
           I.e.: they construct the path differently.
        """
        # pylint: disable=R0201
        raise rhnException("This function should be overloaded.")

    def getPackage(self, pkgFilename, *args):
        """ Get rpm package. """
        log_debug(3, pkgFilename)
        if args:
            pkg_spec = [pkgFilename] + list(args)
        else:
            pkg_spec = pkgFilename

        redirectsSupported = 0

        # If we are talking to a proxy, determine whether it's a version that
        # supports redirects.
        proxyVersionString = rhnFlags.get('x-rhn-proxy-version')
        if proxyVersionString:
            redirectsSupported = 1
        else:
            # Must be a client.  We'll determine the redirect capability via
            # the x-rhn-transport-capability header instead.
            transport_cap = rhnFlags.get('x-rhn-transport-capability')
            if transport_cap:
                transport_cap_list = transport_cap.split('=')
                redirectsSupported = transport_cap_list[0] == 'follow-redirects' and int(transport_cap_list[1]) >= 2

        if redirectsSupported:
            log_debug(3, "Client supports redirects.")
            filePath = self.getPackagePath(pkg_spec, 1)
        else:
            # older clients just return the hosted url and download the package
            filePath = self.getPackagePath(pkg_spec)

        return self._getFile(filePath)

    @staticmethod
    def i18n(_translation, *_args):
        """ Translations files for Ubuntu. E.g. Translation-en_US.bz2

            We do not support it so just return 404. But do not fail with
            traceback.
        """
        raise rhnNotFound()

    @staticmethod
    def content():
        """SUSE Content File

        We do not support it so just return 404. But do not fail with
        traceback.
        """
        raise rhnNotFound()

    @staticmethod
    def installation_xml():
        """SUSE File

        We do not support it so just return 404. But do not fail with
        traceback.
        """
        raise rhnNotFound()

    @staticmethod
    def media_1(filePath):
        """SUSE File

        We do not support it so just return 404. But do not fail with
        traceback.
        """
        log_debug(3, filePath)
        raise rhnNotFound()

    def getPackageSource(self, pkgFilename):
        """ Get srpm packrge. """
        log_debug(3, pkgFilename)
        # Sanity check:
        l = pkgFilename.split('.')
        # 6/23/05 wregglej 154248, Don't mangle the filename if it's a nosrc package.
        if l[-2] != "nosrc":
            l[-2] = 'src'
        pkgFilename = '.'.join(l)
        filePath = self.getSourcePackagePath(pkgFilename)
        return self._getFile(filePath)

    def getPackageHeader(self, pkgFilename):
        """ Get rpm header.
            XXX: stock 8.0 clients could not compress headers, we need to either
            change the function name, or version the protocol
        """
        log_debug(3, pkgFilename)
        pkg = pkgFilename.split('.')
        # Basic sanity checks:
        if pkg[-1] not in ["hdr", 'rpm']:
            raise rhnFault(21, "'%s' not a valid RPM header name" % pkgFilename)

        pkgFilename = ".".join(pkg[:-1]) + '.rpm'
        filePath = self.getPackagePath(pkgFilename)
        data = self._getHeaderFromFile(filePath)
        # XXX: Interesting. Found that if returned just data, this
        #      function works fine. Investigate later.
        return rpclib.transports.File(cStringIO.StringIO(data), len(data))

    # The real workhorse for all flavors of listall
    # It tries to pull data out of a file; if it doesn't work,
    # it calls the data producer with the specified params to generate the
    # data, which is also cached

    # --- PRIVATE METHODS ---

    def _getFile(self, filePath):
        """ Returns xmlrpclib file object to any file given a path to it.
            IN:  filePath: path to any file.
            OUT: XMLed rpm or source rpm, or an xmlrpc file object.
        """
        log_debug(3, filePath)
        features = self._fileFeatures(filePath)
        filePath = features['path']
        length = features['length']
        lastModified = features['lastModified']
        self._set_last_modified(lastModified)
        return rpclib.transports.File(open(filePath, "rb"), length, name=filePath)

    def _getHeaderFromFile(self, filePath, stat_info=None):
        """ Utility function to extract a header from an rpm.
            If stat_info was already passed, don't re-stat the file
        """
        log_debug(3, filePath)
        if stat_info:
            s = stat_info
        else:
            s = None
            try:
                s = os.stat(filePath)
            except:
                usix.raise_with_tb(rhnFault(17, "Unable to read package %s"
                                            % os.path.basename(filePath)), sys.exc_info()[2])

        lastModified = s[stat.ST_MTIME]
        del s  # XXX: not neccessary?

        # Get the package header from the file
        # since we stat()ed the file, we know it's there already
        fd = os.open(filePath, os.O_RDONLY)
        h = rhn_rpm.get_package_header(fd=fd)
        os.close(fd)
        if h is None:
            raise rhnFault(17, "Invalid RPM %s" % os.path.basename(filePath))
        stringIO = cStringIO.StringIO()
        # Put the result in stringIO
        stringIO.write(h.unload())
        del h  # XXX: not neccessary?

        pkgFilename = os.path.basename(filePath)
        pkg = pkgFilename.split('.')
        # Replace .rpm with .hdr
        pkg[-1] = "hdr"
        pkgFilename = ".".join(pkg)
        extra_headers = {
            'X-RHN-Package-Header': pkgFilename,
        }
        self._set_last_modified(lastModified, extra_headers=extra_headers)
        rhnFlags.set("AlreadyEncoded", 1)
        return stringIO.getvalue()

    @staticmethod
    def _set_last_modified(last_modified, extra_headers=None):
        log_debug(4, last_modified)
        if not last_modified:
            return None
        # Set a field with the name of the header
        transport = rhnFlags.get('outputTransportOptions')
        if last_modified:
            # Put the last-modified info too
            if isinstance(last_modified, (usix.IntType, usix.FloatType)):
                last_modified = rfc822time(last_modified)
            transport['Last-Modified'] = last_modified
        if extra_headers:
            for k, v in list(extra_headers.items()):
                transport[str(k)] = str(v)
        return transport

    @staticmethod
    def _fileFeatures(filePath):
        """ From a filepath, construct a dictionary of file features. """
        # pylint: disable=W0702
        log_debug(3, filePath)
        if not filePath:
            raise rhnFault(17, "While looking for file: `%s'"
                           % os.path.basename(filePath))
        try:
            s = os.stat(filePath)
        except:
            s = None
        if not s:
            l = 0
            lastModified = 0
        else:
            l = s[stat.ST_SIZE]
            lastModified = s[stat.ST_MTIME]
        del s

        # Build the result hash
        result = {}
        result['name'] = os.path.basename(filePath)
        result['length'] = l
        result['path'] = filePath
        if lastModified:
            result['lastModified'] = rfc822time(lastModified)
        else:
            result['lastModified'] = None
        return result
0707010000002A000081B40000000000000000000000016290A0C100001FB6000000000000000000000000000000000000002200000000spacewalk-backend/common/rhnTB.py #
# Copyright (c) 2008--2016 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#
#

import os
import sys
import time
import traceback
import socket
try:
    #  python 2
    from StringIO import StringIO
except ImportError:
    #  python3
    from io import StringIO
from rhn.connections import idn_puny_to_unicode

from spacewalk.common.rhnConfig import CFG, PRODUCT_NAME
from spacewalk.common.rhnLog import log_error
from spacewalk.common.rhnTranslate import _
from uyuni.common.stringutils import to_string
from spacewalk.common import rhnMail
from spacewalk.common import rhnFlags

# Get the hostname for traceback use
hostname = socket.gethostname()

# Keep QUIET_MAIL in a global variable that is initialized from CFG
# when it is first needed. It controls the maximum number of
# tracebacks we're willing to send out of this process in order to
# avoid a huge flood of mail requests.
QUIET_MAIL = None


def print_env(fd=sys.stderr):
    """ Dump the environment. """
    dct = os.environ
    fd.write("\nEnvironment for PID=%d on exception:\n" % os.getpid())
    el = list(dct.keys())
    el.sort()
    for k in el:
        fd.write("%s = %s\n" % (to_string(k), to_string(dct[k])))


def print_locals(fd=sys.stderr, tb=None):
    """ Dump a listing of all local variables and their value for better debugging
        chance.
    """
    if tb is None:
        tb = sys.exc_info()[2]
    stack = []
    # walk the traceback to the end
    while 1:
        if not tb.tb_next:
            break
        tb = tb.tb_next
    # and now start extracting the stack frames
    f = tb.tb_frame
    while f:
        stack.append(f)
        f = f.f_back
    fd.write("\nLocal variables by frame\n")
    for frame in stack:
        fd.write("Frame %s in %s at line %s\n" % (frame.f_code.co_name,
                                                  frame.f_code.co_filename,
                                                  frame.f_lineno))
        for key, value in list(frame.f_locals.items()):
            fd.write("\t%20s = " % to_string(key))
            # We have to be careful not to cause a new error in our error
            # printer! Calling str() on an unknown object could cause an
            # error we don't want.
            # pylint: disable=W0702
            try:
                s = str(to_string(value))
            except:
                s = "<ERROR WHILE PRINTING VALUE>"
            if len(s) > 100 * 1024:
                s = "<ERROR WHILE PRINTING VALUE: string representation too large>"
            fd.write("%s %s\n" % (type(value), s))
        fd.write("\n")


def print_req(req, fd=sys.stderr):
    """ get some debugging information about the current exception for sending
        out when we raise an exception
    """

    fd.write("Request object information:\n")
    fd.write("URI: %s\n" % req.unparsed_uri)
    fd.write("Remote Host: %s\nServer Name: %s:%d\n" % (
        req.get_remote_host(), req.server.server_hostname, req.server.port))
    fd.write("Headers passed in:\n")
    kl = list(req.headers_in.keys())
    kl.sort()
    for k in kl:
        fd.write("\t%s: %s\n" % (to_string(k), to_string(req.headers_in[k])))
    return 0


def Traceback(method=None, req=None, mail=1, ostream=sys.stderr,
              extra=None, severity="notification", with_locals=0):
    """ Reports an traceback error and optionally sends mail about it.
        NOTE: extra = extra text information.
    """
    # pylint: disable=C0103

    global QUIET_MAIL

    if mail:
        # safeguard
        if QUIET_MAIL is None:
            QUIET_MAIL = CFG.QUIET_MAIL

        if QUIET_MAIL < 0:
            QUIET_MAIL = 0
        if QUIET_MAIL == 0:  # make sure we don't mail
            mail = 0

    e_type = sys.exc_info()[:2][0]
    t = time.ctime(time.time())
    exc = StringIO()

    unicode_hostname = idn_puny_to_unicode(hostname)
    exc.write("Exception reported from %s\nTime: %s\n" % (to_string(unicode_hostname), t))
    exc.write("Exception type %s\n" % to_string(e_type))
    if method:
        exc.write("Exception while handling function %s\n" % to_string(method))

    # print information about the request being served
    if req:
        print_req(req, exc)
    if extra:
        exc.write("Extra information about this error:\n%s\n" % to_string(extra))

    # Print the traceback
    exc.write("\nException Handler Information\n")
    traceback.print_exc(None, exc)

    if with_locals and not mail:
        # The mail case will call print_locals by itself
        print_locals(exc)

    # we always log it somewhere
    if ostream:
        ostream.write(to_string(exc.getvalue()))
        ostream.write("\n")

    if mail:
        # print the stack frames for the mail we send out
        print_locals(exc)
        # dump the environment
        print_env(exc)
        # and send the mail
        # build the headers
        to = CFG.TRACEBACK_MAIL
        fr = to
        if isinstance(to, type([])):
            fr = to[0].strip()
            to = ', '.join([x.strip() for x in to])
        headers = {
            "Subject": "%s TRACEBACK from %s" % (PRODUCT_NAME, unicode_hostname),
            "From": "%s <%s>" % (hostname, fr),
            "To": to,
            "X-RHN-Traceback-Severity": severity,
            "Content-Type": 'text/plain; charset="utf-8"',

        }
        QUIET_MAIL = QUIET_MAIL - 1     # count it no matter what

        outstring = to_string(exc.getvalue())

        # 5/18/05 wregglej - 151158 Go through every string in the security list
        # and censor it out of the debug information.
        outstring = censor_string(outstring)

        rhnMail.send(headers, outstring)

    exc.close()
    return


def fetchTraceback(method=None, req=None, extra=None, with_locals=0):
    """ a cheat for snagging just the string value of a Traceback """
    exc = StringIO()
    Traceback(method=method, req=req, mail=0, ostream=exc, extra=extra,
              severity=None, with_locals=with_locals)
    return exc.getvalue()


def exitWithTraceback(e, msg, exitnum, mail=0):
    tbOut = StringIO()
    Traceback(mail, ostream=tbOut, with_locals=1)
    log_error(-1, _('ERROR: %s %s: %s') %
              (e.__class__.__name__, msg, e))
    log_error(-1, _('TRACEBACK: %s') % tbOut.getvalue())
    sys.exit(exitnum)


class SecurityList:

    """ The SecurityList is a list of strings that are censored out of a debug email.
        Right now it's only used for censoring traceback emails.
    """
    _flag_string = "security-list"

    def __init__(self):
        # We store the security list in the global flags. This way, we don't
        # have to worry about clearing it up.
        if rhnFlags.test(self._flag_string):
            self.sec = rhnFlags.get(self._flag_string)
        else:
            self.sec = []
            rhnFlags.set(self._flag_string, self.sec)

    def add(self, obj):
        self.sec.append(obj)

    def check(self, obj):
        return obj in self.sec


def get_seclist():
    """ Returns the list of strings to be censored. """
    return SecurityList().sec


def censor_string(strval):
    """ Remove all instances of the strings in seclist.sec from strval """
    censorlist = get_seclist()
    for c in censorlist:
        # Censor it with a fixed length string. This way the length of the hidden string isn't revealed.
        strval = strval.replace(c, "<CENSORED!>")
    return strval


def add_to_seclist(obj):
    """ Adds a string to seclist.sec, but only if it's not already there. """
    seclist = SecurityList()
    if not seclist.check(obj):
        seclist.add(obj)
  0707010000002B000081B40000000000000000000000016290A0C100000CC3000000000000000000000000000000000000002900000000spacewalk-backend/common/rhnTranslate.py  #
# Copyright (c) 2008--2016 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#

import os
import gettext

from uyuni.common.usix import StringType

class RHN_Translations(gettext.GNUTranslations):
    # Defining our own class, since we'd like to save the language we use
    # Determining the language is not very pretty - we parse the file name
    # which is supposed to be something like
    # .../<lang>/LC_MESSAGES/<domain>.po

    def __init__(self, fp=None):
        self.lang = None
        gettext.GNUTranslations.__init__(self, fp)

    def _parse(self, fp):
        gettext.GNUTranslations._parse(self, fp)
        filename = fp.name
        filename = os.path.normpath(filename)
        # Extract the language
        self.lang = filename.split('/')[-3]

    def getlangs(self):
        # Return all languages
        # pkilambi:bug#158561,170819,170821: the gettext object in python 2.2.3 has no attribute
        #_fallback so add a check if __dict__ has key
        # if not self._fallback or not hasattr(self._fallback, 'getlangs'):
        if "_fallback" not in self.__dict__ or not self._fallback or not hasattr(self._fallback, 'getlangs'):
            return [self.lang, 'C']
        # Recursive call
        return [self.lang] + self._fallback.getlangs()


class i18n:
    _default_langs = ['en', 'en_US', 'C']
    # Wrapper class that allows us to change languages

    def __init__(self, domain=None, localedir="/usr/share/locale"):
        self.domain = domain
        self.localedir = localedir
        self.langs = self._default_langs[:]
        self.cat = None
        self._set_catalog()

    def _set_catalog(self):
        # Set the catalog object
        self.cat = gettext.Catalog(self.domain, localedir=self.localedir,
                                   languages=self.langs, fallback=1, class_=RHN_Translations)

    def getlangs(self):
        # List of languages we support
        # pylint: disable=E1103
        if not hasattr(self.cat, "getlangs"):
            return ["C"]
        # pylint: disable=E1103
        return self.cat.getlangs()

    def setlangs(self, langs):
        if isinstance(langs, StringType) or type(langs) == str:
            langs = [langs]
        # Filter "C" - we will add it ourselves later anyway
        langs = [l for l in langs if l != 'C']
        langs.extend(self._default_langs)
        self.langs = langs
        self._set_catalog()

    def gettext(self, string):
        return self.cat.gettext(string)

    # reinitialize this catalog
    def set(self, domain=None, localedir=None):
        if domain:
            self.domain = domain
        if localedir:
            self.localedir = localedir
        self._set_catalog()


cat = i18n()
_ = cat.gettext
 0707010000002C000081B40000000000000000000000016290A0C1000002F0000000000000000000000000000000000000002B00000000spacewalk-backend/common/spacewalk-cfg-get    #!/usr/bin/python

import sys
from spacewalk.common.rhnConfig import RHNOptions

do_list = 0
if len(sys.argv) == 4 and sys.argv[1] == "get":
    comp = sys.argv[2]
    key = sys.argv[3]
elif len(sys.argv) == 3 and sys.argv[1] == "list":
    comp = sys.argv[2]
    do_list = 1
elif len(sys.argv) == 2:
    # assume we want key from root
    comp = ''
    key = sys.argv[1]
else:
    print("Usage: spacewalk-cfg-get list COMPONENT")
    print("       spacewalk-cfg-get get COMPONENT KEY")
    print("       spacewalk-cfg-get KEY")
    sys.exit(1)

cfg = RHNOptions(comp)
cfg.parse()

if do_list:
    cfg.show()
else:
    val = cfg.get(key)
    if isinstance(val, list):
        for i in val:
            print(i)
    elif val != None:
        print(val)
0707010000002D000081B40000000000000000000000016290A0C100000765000000000000000000000000000000000000003000000000spacewalk-backend/common/spacewalk-cfg-get.sgml   <!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook V3.1//EN" [
<!ENTITY SERVER "Spacewalk Server" >
<!ENTITY SCRIPTCOMMAND "spacewalk-cfg-get" >

]>
<refentry>

<RefMeta>
<RefEntryTitle>&SCRIPTCOMMAND;</RefEntryTitle><manvolnum>8</manvolnum>
<RefMiscInfo>Version 1.6</RefMiscInfo>
</RefMeta>

<RefNameDiv>
<RefName><command>&SCRIPTCOMMAND;</command></RefName>
<RefPurpose>
Read values from &SERVER; configuration files.
</RefPurpose>
</RefNameDiv>

<RefSynopsisDiv>
<Synopsis>
    <cmdsynopsis>
        <command>&SCRIPTCOMMAND; get  <replaceable>component</replaceable> <replaceable>key</replaceable></command>
    </cmdsynopsis>
    <cmdsynopsis>
        <command>&SCRIPTCOMMAND; list <replaceable>component</replaceable></command>
    </cmdsynopsis>
    <cmdsynopsis>
        <command>&SCRIPTCOMMAND;</command>
        <arg>key</arg>
    </cmdsynopsis>
</Synopsis>
</RefSynopsisDiv>

<RefSect1><Title>Description</Title>
<para>
This script parses configuration files of &SERVER; including /etc/rhn/rhn.conf and /usr/share/rhn/config-defaults/* and outputs list of
values for specified component, or outputs value of specified key.
</para>
<para>
Executing &SCRIPTCOMMAND; with only one parameter (e.g. &SCRIPTCOMMAND; key) is equivalent of &SCRIPTCOMMAND; get '' key
</para>
</RefSect1>

<RefSect1><Title>Options</Title>
<variablelist>
    <varlistentry>
        <term>get</term>
        <listitem>
            <para>Display value of key in given component.</para>
        </listitem>
    </varlistentry>
    <varlistentry>
        <term>list</term>
        <listitem>
            <para>List keys and values of given component.</para>
        </listitem>
    </varlistentry>
</variablelist>
</RefSect1>

<RefSect1><Title>Authors</Title>
<simplelist>
    <member>Miroslav SuchÃ½ <email>msuchy@redhat.com</email></member>
    <member>Jan Pazdziora</member>
</simplelist>
</RefSect1>
</RefEntry>
   0707010000002E000081B40000000000000000000000016290A0C10000537C000000000000000000000000000000000000002400000000spacewalk-backend/common/suseLib.py   # -*- coding: utf-8 -*-
#
# Copyright (c) 2010, 2011, 2012 Novell
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#

try:
    import urllib.parse as urlparse
    from io import StringIO
except ImportError:
    import urlparse
    try:
        from cStringIO import StringIO
    except ImportError:
        from StringIO import StringIO

import re
import pycurl

from spacewalk.common.rhnLog import log_debug, log_error
from spacewalk.common.rhnConfig import initCFG, CFG, ConfigParserError
try:
    from spacewalk.server import rhnSQL
except ImportError:
    log_debug(2, "Loading suseLib without rhnSQL")

from rhn.connections import idn_puny_to_unicode

YAST_PROXY = "/root/.curlrc"
SYS_PROXY = "/etc/sysconfig/proxy"


class TransferException(Exception):

    """Transfer Error"""

    def __init__(self, value=None):
        Exception.__init__(self)
        self.value = value

    def __str__(self):
        return "%s" % self.value

    def __unicode__(self):
        return '%s' % str(self.value, "utf-8")


class URL(object):

    """URL class that allows modifying the various attributes of a URL"""
    # pylint: disable=R0902

    def __init__(self, url, username=None, password=None):
        u = urlparse.urlsplit(url)
        # pylint can't see inside the SplitResult class
        # pylint: disable=E1103
        self.scheme = u.scheme
        self.username = username or u.username
        self.password = password or u.password
        self.host = u.hostname
        self.port = u.port
        self.path = u.path
        self.query = u.query
        self.fragment = u.fragment

        if self.query:
            self._parse_query()

    def get_query_param(self, key, default=None):
        """Return a query parameter

        Note: this assumes that the parameter contains at most a single
        element (not a list).

        """
        # paramsdict has a list of elements as values, but we assume the
        # most common case where the list has only one element
        # pylint: disable=E1101
        p = self.paramsdict.get(key, default)
        if p:
            assert len(p) == 1, ("The query parameter contains a list of "
                                 "arguments instead of a single element. "
                                 "%s : %s" % (key, p))
            p = p[0]
        return p

    def __setattr__(self, attr, value):
        if attr == "query":
            self.__dict__[attr] = value.lstrip("?")
            self._parse_query()
        # pylint: disable=E1101
        elif attr == "paramsdict":
            # query should be used instead
            raise AttributeError("can't set attribute")
        else:
            self.__dict__[attr] = value

    def _parse_query(self):
        """Parse self.query and populate self.paramsdict

        self.paramsdict is a dict of key: [value1, value2, value3]

        """
        self.__dict__["paramsdict"] = urlparse.parse_qs(self.query)

    def getURL(self, stripPw=False):
        """Return the full url as a string"""
        netloc = ""
        path = self.path
        if self.username:
            netloc = self.username
        if self.password and not stripPw:
            netloc = '%s:%s' % (netloc, self.password)
        elif self.password and stripPw:
            netloc = '%s:%s' % (netloc, '<secret>')
        if self.host and netloc:
            netloc = '%s@%s' % (netloc, self.host)
        elif self.host:
            netloc = self.host

        if self.port:
            netloc = '%s:%s' % (netloc, self.port)

        # Default ULN channels URIs are like: uln:///ol7_x86_64_u8_base
        # If not netloc, we fix the path to avoid getting url:/ol7_x86_64_u8_base
        # as results from urlunsplit
        if self.scheme == 'uln' and not netloc:
            path = "//" + self.path

        return urlparse.urlunsplit((self.scheme, netloc, path,
                                    self.query, self.fragment))


def _curl_debug(mtype, text):
    if mtype == 0:
        log_debug(4, "* %s" % text)
    elif mtype == 1:
        # HEADER_IN
        log_debug(4, "< %s" % text)
    elif mtype == 2:
        # HEADER_OUT
        log_debug(4, "> %s" % text)
    elif mtype == 3:
        # DATA_IN
        log_debug(5, "D< %s" % text)
    elif mtype == 4:
        # DATA_OUT
        log_debug(5, "D> %s" % text)
    else:
        log_debug(6, "%s: %s" % (mtype, text))
    return 0


def send(url, sendData=None):
    """Connect to url and return the result as stringIO

    :arg url: the url where the request will be sent
    :kwarg sendData: do a post-request when "sendData" is given.

    Returns the result as stringIO object.

    """
    connect_retries = 10
    try_counter = connect_retries
    timeout = 120
    if CFG.is_initialized() and CFG.has_key('TIMEOUT'):
        timeout = CFG.TIMEOUT
    curl = pycurl.Curl()

    curl.setopt(pycurl.CONNECTTIMEOUT, timeout)
    curl.setopt(pycurl.URL, url)
    curl.setopt(pycurl.DEBUGFUNCTION, _curl_debug)
    curl.setopt(pycurl.VERBOSE, True)
    proxy_url, proxy_user, proxy_pass = get_proxy(url)
    if proxy_url:
        curl.setopt(pycurl.PROXY, proxy_url)
    log_debug(2, "Connect to %s" % url)
    if sendData is not None:
        curl.setopt(pycurl.POSTFIELDS, sendData)
        if (CFG.is_initialized() and
                CFG.has_key('DISABLE_EXPECT') and
                CFG.DISABLE_EXPECT):
            # disable Expect header
            curl.setopt(pycurl.HTTPHEADER, ['Expect:'])

    # We implement our own redirection-following, because pycurl
    # 7.19 doesn't POST after it gets redirected. Ideally we'd be
    # using pycurl.POSTREDIR here, but that's in 7.21.
    curl.setopt(pycurl.FOLLOWLOCATION, False)

    response = StringIO()
    curl.setopt(pycurl.WRITEFUNCTION, response.write)

    try_counter = connect_retries
    while try_counter:
        try_counter -= 1
        try:
            curl.perform()
        except pycurl.error as e:
            if e.args[0] == 56:  # Proxy requires authentication
                log_debug(2, e.args[1])
                if not (proxy_user and proxy_pass):
                    raise TransferException("Proxy requires authentication, "
                                            "but reading credentials from "
                                            "%s failed." % YAST_PROXY)
                curl.setopt(pycurl.PROXYUSERPWD,
                            "%s:%s" % (proxy_user, proxy_pass))
            elif e.args[0] == 60:
                log_error("Peer certificate could not be authenticated "
                          "with known CA certificates.")
                raise TransferException("Peer certificate could not be "
                                        "authenticated with known CA "
                                        "certificates.")
            else:
                log_error(e.args[1])
                raise

        status = curl.getinfo(pycurl.HTTP_CODE)
        if status == 200 or (URL(url).scheme == "file" and status == 0):
            # OK or file
            break
        elif status in (301, 302):  # redirects
            url = curl.getinfo(pycurl.REDIRECT_URL)
            log_debug(2, "Got redirect to %s" % url)
            curl.setopt(pycurl.URL, url)
    else:
        log_error("Connecting to %s has failed after %s "
                  "tries with HTTP error code %s." %
                  (URL(url).getURL(stripPw=True), connect_retries, status))
        raise TransferException("Connection failed after %s tries with "
                                "HTTP error %s." % (connect_retries, status))

    # StringIO.write leaves the cursor at the end of the file
    response.seek(0)
    return response


def accessible(url):
    """Try if url is accessible

    :arg url: the url which is tried to access

    Returns True if url is accessible, otherwise False.

    """
    timeout = 120
    if CFG.is_initialized() and CFG.has_key('TIMEOUT'):
        timeout = CFG.TIMEOUT
    curl = pycurl.Curl()

    curl.setopt(pycurl.CONNECTTIMEOUT, timeout)
    curl.setopt(pycurl.URL, url)
    curl.setopt(pycurl.DEBUGFUNCTION, _curl_debug)
    curl.setopt(pycurl.VERBOSE, True)
    proxy_url, proxy_user, proxy_pass = get_proxy(url)
    if proxy_url:
        curl.setopt(pycurl.PROXY, proxy_url)
    log_debug(2, "Connect to %s" % url)

    # We implement our own redirection-following, because pycurl
    # 7.19 doesn't POST after it gets redirected. Ideally we'd be
    # using pycurl.POSTREDIR here, but that's in 7.21.
    curl.setopt(pycurl.FOLLOWLOCATION, False)
    curl.setopt(pycurl.NOBODY, True)

    try_counter = 5
    while try_counter:
        try_counter -= 1
        try:
            curl.perform()
        except pycurl.error as e:
            if e.args[0] == 56:  # Proxy requires authentication
                log_debug(2, e.args[1])
                if not (proxy_user and proxy_pass):
                    raise TransferException("Proxy requires authentication, "
                                            "but reading credentials from "
                                            "%s failed." % YAST_PROXY)
                curl.setopt(pycurl.PROXYUSERPWD,
                            "%s:%s" % (proxy_user, proxy_pass))
            else:
                break

        status = curl.getinfo(pycurl.HTTP_CODE)
        # OK or file
        if status == 200 or (URL(url).scheme == "file" and status == 0):
            return True
        elif status in (301, 302):  # redirects
            url = curl.getinfo(pycurl.REDIRECT_URL)
            log_debug(2, "Got redirect to %s" % url)
            curl.setopt(pycurl.URL, url)
        elif status >= 400:
            break
    return False


def get_proxy(url=None):
    """Return proxy information as a (url, username, password) tuple

    Returns None if no proxy URL/credentials could be read.

    If the url parameter is provided, a check against no_proxy will be made.
    (server.satellite.no_proxy)
    In case this connection should not use a proxy, the values returned
    are None for url, username and password.

    Order of lookup (https_proxy is always preferred over http_proxy):
    1. rhn.conf (server.satellite.http_proxy)
    2. .curlrc (--proxy, --proxy-user)

    """
    proxyurl, username, password = (_get_proxy_from_rhn_conf() or
                                    _get_proxy_from_yast() or
                                    (None, None, None))
    if not url or (url and _useProxyFor(url)):
        return (proxyurl, username, password)
    return (None, None, None)


def findProduct(product):
    q_version = ""
    q_release = ""
    q_arch = ""
    product_id = None
    product_lower = {}
    product_lower['name'] = product['name'].lower()

    log_debug(2, "Search for product: %s" % product)

    if product.get('version'):
        q_version = "or sp.version = :version"
        product_lower['version'] = product['version'].lower()
    if product.get('release'):
        q_release = "or sp.release = :release"
        product_lower['release'] = product['release'].lower()
    if product.get('arch'):
        q_arch = "or pat.label = :arch"
        product_lower['arch'] = product['arch'].lower()

    h = rhnSQL.prepare("""
    SELECT sp.id, sp.name, sp.version, pat.label as arch, sp.release
       FROM suseProducts sp
       LEFT JOIN rhnPackageArch pat ON pat.id = sp.arch_type_id
    WHERE sp.name = :name
       AND (sp.version IS NULL %s)
       AND (sp.release IS NULL %s)
       AND (sp.arch_type_id IS NULL %s)
    ORDER BY name, version, release, arch
    """ % (q_version, q_release, q_arch))
    h.execute(**product_lower)
    rs = h.fetchall_dict()

    if not rs:
        log_debug(1, "No Product Found")
        return None

    product_id = rs[0]['id']

    if len(rs) > 1:
        # more than one product matches.
        # search for an exact match or take the first
        for p in rs:
            if (p['version'] == product['version'] and
                    p['release'] == product['release'] and
                    p['arch'] == product['arch']):
                product_id = p['id']
                break

    return product_id


def findAllExtensionProductsOf(baseId, rootId):
    vals = {
        'baseId': baseId,
        'rootID': rootId
    }
    h = rhnSQL.prepare(
        """
        SELECT distinct ext.id, ext.release, ext.version, pa.label arch, ext.name, ext.base baseproduct
                FROM SUSEProductExtension pe
                JOIN SUSEProducts base on base.id = pe.base_pdid
                JOIN SUSEProducts ext on pe.ext_pdid = ext.id
                JOIN rhnpackagearch pa on pa.id = ext.arch_type_id
            WHERE base.id = :baseId and pe.root_pdid = :rootId and pe.recommended = 'Y';
        """
    )
    h.execute(**vals)
    rs = h.fetchall_dict()
    return rs or []

def channelForProduct(product, parent_id=None, org_id=None,
                      user_id=None):
    """Find mandatory Channels for a given product and ostarget.

    If parent_id is None, a base channel is requested.
    Otherwise only channels are returned which have this id
    as parent channel.
    org_id and user_id are used to check for permissions.

    """
    product_id = findProduct(product)
    if not product_id:
        return None

    vals = {
        'pid': product_id,
        'org_id': org_id,
        'user_id': user_id
    }
    parent_statement = " IS NULL "
    if parent_id:
        parent_statement = " = :parent_id "
        vals['parent_id'] = parent_id

    h = rhnSQL.prepare("""
        SELECT ca.label arch,
        c.id,
        c.parent_channel,
        c.org_id,
        c.label,
        c.name,
        c.summary,
        c.description,
        to_char(c.last_modified, 'YYYYMMDDHH24MISS') last_modified,
        -- If user_id is null, then the channel is subscribable
        rhn_channel.loose_user_role_check(c.id, :user_id, 'subscribe') subscribable
        FROM rhnChannel c
        JOIN suseProductChannel spc ON spc.channel_id = c.id
        JOIN rhnChannelArch ca ON c.channel_arch_id = ca.id
        WHERE spc.product_id = :pid
          AND spc.mandatory = 'Y'
          AND c.parent_channel %s""" % parent_statement)
    h.execute(**vals)
    rs = h.fetchall_dict()
    if not rs:
        log_debug(1, "No Channel Found")
        return None
    ret = []
    for channel in rs:
        subscribable = channel['subscribable']
        del channel['subscribable']

        if not subscribable:
            # Not allowed to subscribe to this channel
            continue

        ret.append(channel)
        log_debug(1, "Found channel %s with id %d" %
                  (channel['label'], channel['id']))

    if ret == []:
        ret = None
    return ret


def get_mirror_credentials():
    """Return a list of mirror credential tuples (user, pass)

    N.B. The config values will be read from the global configuration:
     server.susemanager.mirrcred_user
     server.susemanager.mirrcred_pass
     server.susemanager.mirrcred_user_1
     server.susemanager.mirrcred_pass_1
     etc.

    The credentials are read sequentially, when the first value is found
    to be missing, the process is aborted and the list of credentials
    that have been read so far are returned. For example if
    server.susemanager.mirrcred_pass_1 can not be read, only the first
    pair of default mirrcreds will be returned, even though
    mirrcred_user_2, mirrcred_pass_2 etc. might still exist.

    """
    comp = CFG.getComponent()
    initCFG("server.susemanager")

    creds = []

    # the default values should at least always be there
    if not CFG["mirrcred_user"] or not CFG["mirrcred_pass"]:
        initCFG(comp)
        raise ConfigParserError("Could not read default mirror credentials: "
                                "server.susemanager.mirrcred_user, "
                                "server.susemanager.mirrcred_pass.")

    creds.append((CFG["mirrcred_user"], CFG["mirrcred_pass"]))

    # increment the credentials number, until we can't read one
    n = 1
    while True:
        try:
            creds.append((CFG["mirrcred_user_%s" % n],
                          CFG["mirrcred_pass_%s" % n]))
        except (KeyError, AttributeError):
            break
        n += 1
    initCFG(comp)
    return creds


def isAllowedSlave(hostname):
    rhnSQL.initDB()
    if not rhnSQL.fetchone_dict("select 1 from rhnISSSlave where slave = :hostname and enabled = 'Y'",
                                hostname=idn_puny_to_unicode(hostname)):
        log_error('Server "%s" is not enabled for ISS.' % hostname)
        return False
    return True


def hasISSSlaves():
    rhnSQL.initDB()
    if rhnSQL.fetchone_dict("select 1 from rhnISSSlave where enabled = 'Y'"):
        return True
    return False


def hasISSMaster():
    rhnSQL.initDB()
    if rhnSQL.fetchone_dict("select 1 from rhnISSMaster where is_current_master = 'Y'"):
        return True
    return False


def getISSCurrentMaster():
    rhnSQL.initDB()
    master = rhnSQL.fetchone_dict(
        "select label from rhnISSMaster where is_current_master = 'Y'")
    if not master:
        return None
    return master['label']


def _parse_curl_proxy_credentials(text):
    """Parse proxy credentials from the string :text:

    Return a (username, password) tuple or (None, None).

    """
    try:
        # pylint: disable=W1401
        user_pass = re.search('^[\s-]+proxy-user\s*=?\s*"([^:]+:.+)"\s*$',
                              text, re.M).group(1)
    except AttributeError:
        return (None, None)

    return re.sub('\\\\"', '"', user_pass).split(":")


def _parse_curl_proxy_url(text):
    try:
        # pylint: disable=W1401
        return re.search('^[\s-]+proxy\s*=?\s*"(.+)"\s*$',
                         text, re.M).group(1)
    except AttributeError:
        return None


def _get_proxy_from_yast():
    """Return a tuple of (url, user, pass) proxy information from YaST

    Returns None instead of a tuple if there was no proxy url. user,
    pass can be None.

    """
    f = None
    try:
        try:
            f = open(YAST_PROXY)
            contents = f.read()
        except IOError:
            log_debug(1, "Couldn't open " + YAST_PROXY)
            return None
    finally:
        if f:
            f.close()

    proxy_url = _parse_curl_proxy_url(contents)
    if not proxy_url:
        log_debug(1, "Could not read proxy URL from " + YAST_PROXY)
        return None

    username, password = _parse_curl_proxy_credentials(contents)

    return (proxy_url, username, password)


def _get_proxy_from_rhn_conf():
    """Return a tuple of (url, user, pass) proxy information from rhn config

    Returns None instead of a tuple if there was no proxy url. user,
    pass can be None.

    """
    comp = CFG.getComponent()
    if not CFG.has_key("http_proxy"):
        initCFG("server.satellite")
    result = None
    if CFG.http_proxy:
        # CFG.http_proxy format is <hostname>[:<port>] in 1.7
        url = 'http://%s' % CFG.http_proxy
        result = (url, CFG.http_proxy_username, CFG.http_proxy_password)
    initCFG(comp)
    log_debug(2, "Could not read proxy URL from rhn config.")
    return result

# pylint complains because this method has too many return statements.
# pylint: disable=R0911


def _useProxyFor(url):
    """Return True if a proxy should be used for given url, otherwise False.

    This function uses server.satellite.no_proxy variable to check for
    hosts or domains which should not be connected via a proxy.

    server.satellite.no_proxy is a comma seperated list.
    Either an exact match, or the previous character
    is a '.', so host is within the same domain.
    A leading '.' in the pattern is ignored.
    See also 'man curl'

    """
    u = urlparse.urlsplit(url)
    # pylint can't see inside the SplitResult class
    # pylint: disable=E1103
    if u.scheme == 'file' or not u.hostname:
        return False
    hostname = u.hostname.lower()
    if hostname in ["localhost", "127.0.0.1", "::1"]:
        return False
    comp = CFG.getComponent()
    if not CFG.has_key("no_proxy"):
        initCFG("server.satellite")
    if not CFG.has_key('no_proxy'):
        initCFG(comp)
        return True
    noproxy = CFG.no_proxy
    initCFG(comp)
    if not noproxy:
        return True
    if not isinstance(noproxy, list):
        if noproxy == '*':
            # just an asterisk disables all.
            return False
        noproxy = [noproxy]

    # No proxy: Either an exact match, or the previous character
    # is a '.', so host is within the same domain.
    # A leading '.' in the pattern is ignored. Some implementations
    # need '.foo.ba' to prevent 'foo.ba' from matching 'xfoo.ba'.
    for domain in noproxy:
        domain = domain.lower()
        if domain[0] == '.':
            domain = domain[1:]
        if hostname.endswith(domain) and \
            (len(hostname) == len(domain) or
             hostname[len(hostname) - len(domain) - 1] == '.'):
            return False
    return True
0707010000002F000041FD0000000000000000000000016290A0C100000000000000000000000000000000000000000000001E00000000spacewalk-backend/common/test 07070100000030000041FD0000000000000000000000016290A0C100000000000000000000000000000000000000000000002800000000spacewalk-backend/common/test/unit-test   07070100000031000081B40000000000000000000000016290A0C1000000B5000000000000000000000000000000000000003100000000spacewalk-backend/common/test/unit-test/Makefile  TESTS       = \
        test_gettext.py \
        test_rhnCache.py

all:	$(addprefix test-,$(TESTS))

test-%:
	@echo Running $*
	@PYTHONPATH=$(PYTHONPATH):../../.. $(PYTHON_BIN) $*
   07070100000032000081B40000000000000000000000016290A0C1000002D6000000000000000000000000000000000000002E00000000spacewalk-backend/common/test/unit-test/ca.po # Robert Antoni Buj Gelonch <rbuj@fedoraproject.org>, 2015. #zanata
msgid ""
msgstr ""
"Project-Id-Version: Spacewalk\n"
"Report-Msgid-Bugs-To: rhn-bugs@redhat.com\n"
"POT-Creation-Date: 2005-02-23 22:39-0500\n"
"PO-Revision-Date: 2015-04-01 03:37+0000\n"
"Last-Translator: Robert Antoni Buj Gelonch <rbuj@fedoraproject.org>\n"
"Language-Team: Catalan\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: Zanata 4.6.2\n"

#: foo.py:7
msgid "Good day"
msgstr "Bon dia"

#: foo.py:8
msgid "How do you do?"
msgstr "Com estÃ s?"

#: foo.py:9
msgid "What should I do now?"
msgstr "QuÃ¨ he de fer ara?"
  07070100000033000081B40000000000000000000000016290A0C1000002CC000000000000000000000000000000000000002E00000000spacewalk-backend/common/test/unit-test/cs.po # Zdenek <chmelarz@gmail.com>, 2018. #zanata
msgid ""
msgstr ""
"Project-Id-Version: Unit Test 0.1\n"
"Report-Msgid-Bugs-To: rhn-bugs@redhat.com\n"
"POT-Creation-Date: 2005-02-23 22:39-0500\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"PO-Revision-Date: 2018-02-20 09:55+0000\n"
"Last-Translator: Zdenek <chmelarz@gmail.com>\n"
"Language-Team: Czech\n"
"Language: cs\n"
"X-Generator: Zanata 4.6.2\n"
"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2\n"

#: foo.py:7
msgid "Good day"
msgstr "DobrÃ½ den"

#: foo.py:8
msgid "How do you do?"
msgstr "Jak se mÃ¡te?"

#: foo.py:9
msgid "What should I do now?"
msgstr "Co mÃ¡m teÄ udÄ›lat?"
07070100000034000081B40000000000000000000000016290A0C1000000D3000000000000000000000000000000000000004100000000spacewalk-backend/common/test/unit-test/generate-translations.sh  TOPDIR=$(cd $(dirname $0) && pwd)

domain="unit-test"
for lang in en ro; do
    msgfmt --statistics --verbose \
        --output-file $TOPDIR/translations/$lang/LC_MESSAGES/$domain.mo $TOPDIR/$domain.$lang
done
 07070100000035000081B40000000000000000000000016290A0C1000002F6000000000000000000000000000000000000002E00000000spacewalk-backend/common/test/unit-test/pl.po # Piotr DrÄ…g <piotrdrag@gmail.com>, 2016. #zanata
msgid ""
msgstr ""
"Project-Id-Version: Spacewalk\n"
"Report-Msgid-Bugs-To: rhn-bugs@redhat.com\n"
"POT-Creation-Date: 2005-02-23 22:39-0500\n"
"PO-Revision-Date: 2016-09-03 10:52+0000\n"
"Last-Translator: Piotr DrÄ…g <piotrdrag@gmail.com>\n"
"Language-Team: Polish\n"
"Language: pl\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 "
"|| n%100>=20) ? 1 : 2)\n"
"X-Generator: Zanata 4.6.2\n"

#: foo.py:7
msgid "Good day"
msgstr "DzieÅ„ dobry"

#: foo.py:8
msgid "How do you do?"
msgstr "Jak siÄ™ masz?"

#: foo.py:9
msgid "What should I do now?"
msgstr "Co zrobiÄ‡ teraz?"
  07070100000036000081B40000000000000000000000016290A0C100001334000000000000000000000000000000000000003800000000spacewalk-backend/common/test/unit-test/test_gettext.py   #!/usr/bin/python
#
# Copyright (c) 2008--2015 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#
#

import os
import sys
import unittest

# Make paths absolute
if sys.argv[0] == "/":
    topdir = sys.argv[0]
else:
    topdir = os.path.dirname(os.path.abspath(__file__))
topdir = os.path.abspath(os.path.dirname(topdir + "/../../../.."))

if topdir not in sys.path:
    sys.path.append(topdir)

from spacewalk.common import rhnTranslate


class Tests(unittest.TestCase):
    # pylint: disable=R0904

    @staticmethod
    def _setup(lang):
        domain = "unit-test"
        localedir = "%s/common/test/unit-test/translations" % topdir
        rhnTranslate.cat.set(domain=domain, localedir=localedir)
        rhnTranslate.cat.setlangs(lang)

    def _test(self, lang, s, target):
        self._setup(lang)
        ss = rhnTranslate._(s)
        self.assertEqual(ss, target)

    def test_setlangs_en(self):
        "Tests setting the language to en"
        lang = "en"
        self._setup(lang)
        langs = rhnTranslate.cat.getlangs()
        self.assertTrue(langs[0] == lang)

    def test_setlangs_ro(self):
        "Tests setting the language to ro"
        lang = "ro"
        self._setup(lang)
        langs = rhnTranslate.cat.getlangs()
        self.assertTrue(langs[0] == lang)

    def test_setlangs_go(self):
        """Tests setting the language to go (does not exist)"""
        lang = "go"
        self._setup(lang)
        langs = rhnTranslate.cat.getlangs()
        if hasattr(sys, "version_info"):
            # On python 1.5.2 we don't really get an idea what the language
            # is, so it's ok to check for the first component
            self.assertFalse(langs[0] == lang, "Language is %s" % langs[0])
        else:
            self.assertTrue(langs[0] == lang, "Language is %s" % langs[0])

    def test_en_1(self):
        "Tests plain English messages"
        lang = 'en'
        s = "Good day"
        target = s
        self._test(lang, s, target)

    def test_en_2(self):
        "Tests plain English messages"
        lang = 'en'
        s = "How do you do?"
        target = s
        self._test(lang, s, target)

    def test_en_3(self):
        "Tests plain English messages"
        lang = 'en'
        s = "What should I do now?"
        target = s
        self._test(lang, s, target)

    def test_en_missing_1(self):
        "Tests plain English messages that are not in the translation files"
        lang = 'en'
        s = "This string doesn't exist in the translation"
        target = s
        self._test(lang, s, target)

    def test_ro_1(self):
        "Tests plain English messages translated to Romanian"
        lang = 'ro'
        s = "Good day"
        target = "Buna ziua"
        self._test(lang, s, target)

    def test_ro_2(self):
        "Tests plain English messages translated to Romanian"
        lang = 'ro'
        s = "How do you do?"
        target = "Ce mai faceti?"
        self._test(lang, s, target)

    def test_ro_3(self):
        "Tests plain English messages translated to Romanian"
        lang = 'ro'
        s = "What should I do now?"
        target = "Ce sa fac acum?"
        self._test(lang, s, target)

    def test_ro_missing_1(self):
        "Tests plain English messages that are not in the translation files (ro)"
        lang = 'ro'
        s = "This string doesn't exist in the translation"
        target = s
        self._test(lang, s, target)

    def test_go_1(self):
        "Tests plain English messages translated in the mythical go language"
        lang = 'en'
        s = "Good day"
        target = s
        self._test(lang, s, target)

    def test_go_2(self):
        "Tests plain English messages translated in the mythical go language"
        lang = 'en'
        s = "How do you do?"
        target = s
        self._test(lang, s, target)

    def test_go_3(self):
        "Tests plain English messages translated in the mythical go language"
        lang = 'en'
        s = "What should I do now?"
        target = s
        self._test(lang, s, target)

    def test_go_missing_1(self):
        "Tests plain English messages that are not in the translation files (go)"
        lang = 'en'
        s = "This string doesn't exist in the translation"
        target = s
        self._test(lang, s, target)


if __name__ == '__main__':
    sys.exit(unittest.main() or 0)
07070100000037000081B40000000000000000000000016290A0C100004EA4000000000000000000000000000000000000003500000000spacewalk-backend/common/test/unit-test/test_repo.py  # coding: utf-8
"""
Py-test based unit tests for common/repo
"""
from mock import MagicMock, patch
from spacewalk.common.repo import DpkgRepo, GeneralRepoException
import http
import pytest
import lzma
import zlib


class FakeRequests:
    """
    Fake requests object.
    """

    class FakeResponse:
        """
        Fake request's response struct
        """

    def close(self):
        """
        Close request. Does nothing actually.

        :return:
        """

    def conf(self, **kwargs):
        """
        Configure response for the test purposes.

        :param kwargs:
        :return:
        """
        for kkw, vkw in kwargs.items():
            setattr(self, kkw, vkw)

        return self


def mock_release_index(self):
    """
    Set flat to True.

    :param self:
    :return:
    """
    self._flat = True


class TestCommonRepo:
    """
    Test suite for common/repo.
    """
    @patch("spacewalk.common.repo.DpkgRepo.get_pkg_index_raw", MagicMock(return_value=("Packages.gz", b"\x00")))
    @patch("spacewalk.common.repo.DpkgRepo.is_flat", MagicMock(return_value=False))
    def test_verify_packages_index(self):
        """
        Test verify_packages_index method.

        :return:
        """
        gri = DpkgRepo.ReleaseEntry(size=999, uri="restricted/binary-amd64")
        gri.checksum.md5 = "93b885adfe0da089cdf634904fd59f71"
        gri.checksum.sha1 = "5ba93c9db0cff93f52b521d7420e43f6eda2784f"
        gri.checksum.sha256 = "6e340b9cffb37a989ca544e6bb780a2c78901d3fb33738768511a30617afa01d"

        release_index = MagicMock()
        release_index().get = MagicMock(return_value=gri)
        with patch("spacewalk.common.repo.DpkgRepo.get_release_index", release_index):
            repo = DpkgRepo("http://mygreathost.com/ubuntu/dists/bionic/restricted/binary-amd64/")
            assert repo.verify_packages_index()

    @patch("spacewalk.common.repo.DpkgRepo.get_pkg_index_raw", MagicMock(return_value=("Packages.gz", b"\x00")))
    @patch("spacewalk.common.repo.DpkgRepo.is_flat", MagicMock(return_value=False))
    def test_verify_local_packages_index(self):
        """
        Test verify_packages_index method.

        :return:
        """
        gri = DpkgRepo.ReleaseEntry(size=999, uri="restricted/binary-amd64")
        gri.checksum.md5 = "93b885adfe0da089cdf634904fd59f71"
        gri.checksum.sha1 = "5ba93c9db0cff93f52b521d7420e43f6eda2784f"
        gri.checksum.sha256 = "6e340b9cffb37a989ca544e6bb780a2c78901d3fb33738768511a30617afa01d"

        release_index = MagicMock()
        release_index().get = MagicMock(return_value=gri)
        with patch("spacewalk.common.repo.DpkgRepo.get_release_index", release_index):
            repo = DpkgRepo("file:///ubuntu/dists/bionic/restricted/binary-amd64/")
            assert repo.verify_packages_index()

    @patch("spacewalk.common.repo.DpkgRepo.get_pkg_index_raw", MagicMock(return_value=("Packages.gz", b"\x00")))
    @patch("spacewalk.common.repo.DpkgRepo.is_flat", MagicMock(return_value=False))
    def test_verify_packages_index_missing_some_checksums(self):
        """
        Test verify_packages_index method when only sha256 checksum is available.

        :return:
        """
        gri = DpkgRepo.ReleaseEntry(size=999, uri="restricted/binary-amd64")
        gri.checksum.md5 = ""
        gri.checksum.sha1 = ""
        gri.checksum.sha256 = "6e340b9cffb37a989ca544e6bb780a2c78901d3fb33738768511a30617afa01d"

        release_index = MagicMock()
        release_index().get = MagicMock(return_value=gri)
        with patch("spacewalk.common.repo.DpkgRepo.get_release_index", release_index):
            repo = DpkgRepo("http://mygreathost.com/ubuntu/dists/bionic/restricted/binary-amd64/")
            assert repo.verify_packages_index()

    @patch("spacewalk.common.repo.DpkgRepo.get_pkg_index_raw", MagicMock(return_value=("Packages.gz", b"\x00")))
    @patch("spacewalk.common.repo.DpkgRepo.is_flat", MagicMock(return_value=False))
    def test_verify_packages_local_index_missing_some_checksums(self):
        """
        Test verify_packages_index method when only sha256 checksum is available.

        :return:
        """
        gri = DpkgRepo.ReleaseEntry(size=999, uri="restricted/binary-amd64")
        gri.checksum.md5 = ""
        gri.checksum.sha1 = ""
        gri.checksum.sha256 = "6e340b9cffb37a989ca544e6bb780a2c78901d3fb33738768511a30617afa01d"

        release_index = MagicMock()
        release_index().get = MagicMock(return_value=gri)
        with patch("spacewalk.common.repo.DpkgRepo.get_release_index", release_index):
            repo = DpkgRepo("file://ubuntu/dists/bionic/restricted/binary-amd64/")
            assert repo.verify_packages_index()

    @patch("spacewalk.common.repo.DpkgRepo.get_release_index", mock_release_index)
    def test_is_flat(self):
        """
        Return True or (False) if repo has flat (or not) format.

        :return:
        """
        assert DpkgRepo("http://dummy").is_flat()

    @patch("spacewalk.common.repo.DpkgRepo.get_release_index", mock_release_index)
    def test_is_flat_local_file(self):
        """
        Return True or (False) if repo has flat (or not) format.

        :return:
        """
        assert DpkgRepo("file://dummy").is_flat()

    def test_get_parent_url_no_subpath_default(self):
        """
        Return parent URL without adding subpath and default params.

        :return:
        """
        url = "http://mygreathost.com/ubuntu/dists/bionic/restricted/binary-amd64/"
        assert DpkgRepo._get_parent_url(url) == "http://mygreathost.com/ubuntu/dists/bionic/restricted/"

    def test_get_parent_url_no_subpath_with_depth(self):
        """
        Return parent URL without adding subpath with depth.

        :return:
        """
        url = "http://mygreathost.com/ubuntu/dists/bionic/restricted/binary-amd64/"
        assert DpkgRepo._get_parent_url(url, depth=0) == "http://mygreathost.com/ubuntu/dists/bionic/restricted/binary-amd64/"
        assert DpkgRepo._get_parent_url(url, depth=2) == "http://mygreathost.com/ubuntu/dists/bionic/"
        assert DpkgRepo._get_parent_url(url, depth=3) == "http://mygreathost.com/ubuntu/dists/"
        assert DpkgRepo._get_parent_url(url, depth=4) == "http://mygreathost.com/ubuntu/"
        assert DpkgRepo._get_parent_url(url, depth=5) == "http://mygreathost.com/"
        assert DpkgRepo._get_parent_url(url, depth=6) == "http://mygreathost.com/"
        assert DpkgRepo._get_parent_url(url, depth=7) == "http://mygreathost.com/"

    @patch("spacewalk.common.repo.requests.get", MagicMock(
        return_value=FakeRequests().conf(status_code=http.HTTPStatus.NOT_FOUND, content=b"", url="")))
    @patch("spacewalk.common.repo.DpkgRepo._parse_release_index", MagicMock(return_value="Plasma conduit overflow"))
    def test_get_release_index_flat(self):
        """
        Get release index file contents, flat.

        :return:
        """
        repo = DpkgRepo("http://dummy/url")
        assert repo.get_release_index() == "Plasma conduit overflow"
        assert repo.is_flat()

    @patch("spacewalk.common.repo.requests.get", MagicMock(
        return_value=FakeRequests().conf(status_code=http.HTTPStatus.OK, content=b"", url="")))
    @patch("spacewalk.common.repo.DpkgRepo._parse_release_index", MagicMock(return_value="Plasma conduit overflow"))
    def test_get_release_index_standard(self):
        """
        Get release index file contents, standard and skip GPG verification.

        :return:
        """
        repo = DpkgRepo("http://dummy/url", gpg_verify=False)
        with patch("spacewalk.common.repo.DpkgRepo._has_valid_gpg_signature", MagicMock()) as gpg_check:
            assert repo.get_release_index() == "Plasma conduit overflow"
            assert not repo.is_flat()
            assert not gpg_check.called

    @patch("spacewalk.common.repo.DpkgRepo._parse_release_index", MagicMock(return_value="Plasma conduit overflow"))
    @patch('builtins.open', MagicMock())
    def test_get_release_index_mirrored_gpg_check(self):
        """
        Get release index file contents from mirrored repo with GPG verification.

        :return:
        """
        repo = DpkgRepo("file:///mirror/ubuntu/dists/bionic/main/binary-amd64/", gpg_verify=True)
        with patch("os.access", MagicMock(return_value=True)) as os_access:
            with patch("spacewalk.common.repo.DpkgRepo._has_valid_gpg_signature", MagicMock()) as gpg_check:
                assert repo.get_release_index() == "Plasma conduit overflow"
                assert not repo.is_flat()
                assert gpg_check.called
                gpg_check.assert_called_with("/mirror/ubuntu/dists/bionic/")

    @patch("spacewalk.common.repo.requests.get", MagicMock(
        return_value=FakeRequests().conf(status_code=http.HTTPStatus.NO_CONTENT, content=b"", url="")))
    @patch("spacewalk.common.repo.DpkgRepo._parse_release_index", MagicMock(return_value="Plasma conduit overflow"))
    def test_get_release_index_exception(self):
        """
        Get release index file contents, other than flat or standard error code.

        :return:
        """
        repo = DpkgRepo("http://dummy/url")

        with pytest.raises(GeneralRepoException) as exc:
            assert repo.get_release_index()
        assert str(exc.value) == "HTTP error 204 occurred while connecting to the URL"

    def test_has_valid_gpg_signature_call_InRelease(self):
        """
        Test _has_valid_gpg_signature call with an embedded GPG signature (InRelease).

        :return:
        """
        repo = DpkgRepo("http://dummy/url/InRelease")
        response = FakeRequests().conf(
                content=b"dummy content",
                url="http://dummy/url/InRelease",
        )

        mock_popen = MagicMock()
        mock_communicate = MagicMock()
        mock_popen().communicate = mock_communicate
        mock_popen().returncode = 0

        with patch("spacewalk.common.repo.subprocess.Popen", mock_popen):
            assert repo._has_valid_gpg_signature(response.url, response)
            mock_communicate.assert_called_once_with(b"dummy content", timeout=90)

    @patch("spacewalk.common.repo.tempfile.NamedTemporaryFile", MagicMock())
    @patch("spacewalk.common.repo.requests.get", MagicMock(
        return_value=FakeRequests().conf(status_code=http.HTTPStatus.OK, content=b"", url="")))
    def test_has_valid_gpg_signature_call_Release(self):
        """
        Test _has_valid_gpg_signature call with a detached GPG signature (Release + Release.gpg).

        :return:
        """

        repo = DpkgRepo("http://dummy/url/Release")
        response = FakeRequests().conf(
                content=b"dummy content",
                url="http://dummy/url/Release",
        )
        mock_popen = MagicMock()
        mock_popen().returncode = 0

        with patch("spacewalk.common.repo.subprocess.Popen", mock_popen):
            assert repo._has_valid_gpg_signature(response.url, response)
            mock_popen.assert_called_once
            gpg_args = mock_popen.call_args[0][0]
            assert gpg_args[0] == "gpg"
            assert gpg_args[1] == "--verify"
            assert gpg_args[2] == "--homedir"
            assert gpg_args[3] == "/var/lib/spacewalk/gpgdir"
            assert gpg_args[4].beginswith("/tmp/")
            assert gpg_args[5].beginswith("/tmp/")

    def test_has_valid_gpg_signature_returns_false_if_gpg_verify_fails(self):
        """
        Test _has_valid_gpg_signature returns False if gpg --verify returns non-zero.

        :return:
        """
        repo = DpkgRepo("http://dummy/url/InRelease")
        response = FakeRequests().conf(
                content=b"dummy content",
                url="http://dummy/url/InRelease",
        )
        mock_popen = MagicMock()
        mock_popen().returncode = 1

        with patch("spacewalk.common.repo.subprocess.Popen", mock_popen):
            assert not repo._has_valid_gpg_signature(response.url, response)


    def test_parse_release_index(self):
        """
        Parse release index.

        :return:
        """
        release = """
Irrelevant data
9f067fc9044265ff132cefef4f741ede     999 one/Release.gz
ee27992a1c0154454601fd8e5a808256    1298 two/Release.gz
some more irrelevant data here
c373e78514584fc3a6b3505aa0ce1525b83e4ceb     999 one/Release.gz
70d7c8225fb5b6ee67ba089681425c5b712e0b19    1298 two/Release.gz
something in between
ef73ea0cc071ad4a13fb52717f99b1951bb41bc2198d2307b30cc0edfb3aed03     999 one/Release.gz
4843bbb823a63f3bde6104ceecc86daebf8b84efd4f6fb1373138b4589a84803    1298 two/Release.gz
Some more irrelevant data
"""
        repo = DpkgRepo("http://dummy/url")
        parsed = repo._parse_release_index(release)

        assert len(parsed) == 2
        assert "one/Release.gz" in parsed
        assert "two/Release.gz" in parsed

        assert parsed["one/Release.gz"].checksum.md5 == "9f067fc9044265ff132cefef4f741ede"
        assert parsed["one/Release.gz"].checksum.sha1 == "c373e78514584fc3a6b3505aa0ce1525b83e4ceb"
        assert parsed["one/Release.gz"].checksum.sha256 == "ef73ea0cc071ad4a13fb52717f99b1951bb41bc2198d2307b30cc0edfb3aed03"
        assert parsed["one/Release.gz"].size == 999

        assert parsed["two/Release.gz"].checksum.md5 == "ee27992a1c0154454601fd8e5a808256"
        assert parsed["two/Release.gz"].checksum.sha1 == "70d7c8225fb5b6ee67ba089681425c5b712e0b19"
        assert parsed["two/Release.gz"].checksum.sha256 == "4843bbb823a63f3bde6104ceecc86daebf8b84efd4f6fb1373138b4589a84803"
        assert parsed["two/Release.gz"].size == 1298

    @patch("spacewalk.common.repo.DpkgRepo.get_pkg_index_raw", MagicMock(return_value=("Packages.gz", "content")))
    def test_decompress_pkg_index_gz(self):
        """
        Test decompression for Packages.gz file.

        :return:
        """
        data = b'\xd0\xbc\xd0\xb0\xd0\xba\xd0\xb0\xd1\x80\xd0\xbe\xd0\xbd\xd0\xb8'
        zdcmp = MagicMock(return_value=data)
        xdcmp = MagicMock(return_value=data)
        with patch("spacewalk.common.repo.zlib.decompress", zdcmp) as m_zlib, \
            patch("spacewalk.common.repo.lzma.decompress", xdcmp) as m_lzma:
            out = DpkgRepo("http://dummy_url").decompress_pkg_index()

        assert not xdcmp.called
        assert zdcmp.called
        assert out == "Ð¼Ð°ÐºÐ°Ñ€Ð¾Ð½Ð¸"

    @patch("spacewalk.common.repo.DpkgRepo.get_pkg_index_raw", MagicMock(return_value=("Packages.xz", "content")))
    def test_decompress_pkg_index_xz(self):
        """
        Test decompression for Packages.xz file.

        :return:
        """
        data = b'\xd0\xbc\xd0\xb0\xd0\xba\xd0\xb0\xd1\x80\xd0\xbe\xd0\xbd\xd0\xb8'
        zdcmp = MagicMock(return_value=data)
        xdcmp = MagicMock(return_value=data)
        with patch("spacewalk.common.repo.zlib.decompress", zdcmp) as m_zlib, \
            patch("spacewalk.common.repo.lzma.decompress", xdcmp) as m_lzma:
            out = DpkgRepo("http://dummy_url").decompress_pkg_index()

        assert not zdcmp.called
        assert xdcmp.called
        assert out == "Ð¼Ð°ÐºÐ°Ñ€Ð¾Ð½Ð¸"

    @patch("spacewalk.common.repo.DpkgRepo.get_pkg_index_raw", MagicMock(return_value=("Packages.gz", "content")))
    def test_decompress_pkg_index_gz_general_failure(self):
        """
        Test decompression for Packages.gz file general failure handling.

        :return:
        """
        zdcmp = MagicMock(side_effect=GeneralRepoException("Too many symlinks found in binary data"))
        xdcmp = MagicMock(side_effect=GeneralRepoException(""))
        with patch("spacewalk.common.repo.zlib.decompress", zdcmp) as m_zlib, \
            patch("spacewalk.common.repo.lzma.decompress", xdcmp) as m_lzma:
            with pytest.raises(GeneralRepoException) as exc:
                DpkgRepo("http://dummy_url").decompress_pkg_index()

        assert not xdcmp.called
        assert zdcmp.called

        err = str(exc.value)
        assert err.startswith("Unhandled exception occurred while decompressing Packages.gz:")
        assert "symlinks" in err

    @patch("spacewalk.common.repo.DpkgRepo.get_pkg_index_raw", MagicMock(return_value=("Packages.xz", "content")))
    def test_decompress_pkg_index_xz_general_failure(self):
        """
        Test decompression for Packages.xz file general failure handling.

        :return:
        """
        zdcmp = MagicMock(side_effect=GeneralRepoException(""))
        xdcmp = MagicMock(side_effect=GeneralRepoException("Software design limitation"))
        with patch("spacewalk.common.repo.zlib.decompress", zdcmp) as m_zlib, \
            patch("spacewalk.common.repo.lzma.decompress", xdcmp) as m_lzma:
            with pytest.raises(GeneralRepoException) as exc:
                DpkgRepo("http://dummy_url").decompress_pkg_index()

        assert not zdcmp.called
        assert xdcmp.called

        err = str(exc.value)
        assert err.startswith("Unhandled exception occurred while decompressing Packages.xz:")
        assert "Software" in err

    @patch("spacewalk.common.repo.DpkgRepo.get_pkg_index_raw", MagicMock(return_value=("Packages.xz", "content")))
    def test_decompress_pkg_index_xz_failure(self):
        """
        Test decompression for Packages.xz file failure handling.

        :return:
        """
        zdcmp = MagicMock(side_effect=zlib.error(""))
        xdcmp = MagicMock(side_effect=lzma.LZMAError("/dev/null is busy while upgrading"))
        with patch("spacewalk.common.repo.zlib.decompress", zdcmp) as m_zlib, \
            patch("spacewalk.common.repo.lzma.decompress", xdcmp) as m_lzma:
            with pytest.raises(GeneralRepoException) as exc:
                DpkgRepo("http://dummy_url").decompress_pkg_index()

        assert not zdcmp.called
        assert xdcmp.called
        assert "/dev/null" in str(exc.value)

    @patch("spacewalk.common.repo.DpkgRepo.get_pkg_index_raw", MagicMock(return_value=("Packages.gz", "content")))
    def test_decompress_pkg_index_gz_failure(self):
        """
        Test decompression for Packages.gz file failure handling.

        :return:
        """
        zdcmp = MagicMock(side_effect=zlib.error("Firewall currently too hot"))
        xdcmp = MagicMock(side_effect=lzma.LZMAError(""))
        with patch("spacewalk.common.repo.zlib.decompress", zdcmp) as m_zlib, \
            patch("spacewalk.common.repo.lzma.decompress", xdcmp) as m_lzma:
            with pytest.raises(GeneralRepoException) as exc:
                DpkgRepo("http://dummy_url").decompress_pkg_index()

        assert not xdcmp.called
        assert zdcmp.called
        assert "hot" in str(exc.value)

    def test_append_index_file_to_url(self):
        """
        Test append index files to the given url.
        :return:
        """
        url = "https://domainname.ext/PATH/Updates/Distro/version/arch/update/?very_long_auth_token"
        dpr = DpkgRepo(url)

        assert dpr.append_index_file(DpkgRepo.PKG_GZ) == \
            "https://domainname.ext/PATH/Updates/Distro/version/arch/update/Packages.gz?very_long_auth_token"

        assert dpr.append_index_file(DpkgRepo.PKG_XZ) == \
            "https://domainname.ext/PATH/Updates/Distro/version/arch/update/Packages.xz?very_long_auth_token"

    def test_append_index_file_to_url_no_difference(self):
        """
        Test append index files to the given url, but no changes has to be applied
        :return:
        """
        url = "https://domainname.ext/PATH/Updates/Distro/version/arch/update/Packages.gz?very_long_auth_token"
        assert url == DpkgRepo(url).append_index_file(DpkgRepo.PKG_GZ)

    def test_append_index_file_to_url_exception(self):
        """
        Test append index files to the given url, but exception happens due to unsupported URL
        :return:
        """
        url = "https://domainname.ext/PATH/Updates/Distro/version/arch/Packages.gz/update?very_long_auth_token"
        with pytest.raises(GeneralRepoException) as exc:
            DpkgRepo(url).append_index_file(DpkgRepo.PKG_GZ)

        assert str(exc.value) == "URL has already Packages.gz mentioned in it."
07070100000038000081B40000000000000000000000016290A0C100000D64000000000000000000000000000000000000003900000000spacewalk-backend/common/test/unit-test/test_rhnCache.py  #!/usr/bin/python
#
# Copyright (c) 2008--2015 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#
#

import sys
import unittest
from spacewalk.common import rhnCache


class Tests(unittest.TestCase):
    # pylint: disable=R0904
    key = "unit-test/test"
    content = ""
    for i in range(256):
        content = content + chr(i)

    def test_cache_1(self):
        "Tests storing of simple strings"
        content = self.content * 10
        self._test(self.key, content)

    def test_cache_2(self):
        "Tests storing of more complex data structures"
        content = [(1, 2, 3), {'a': 1}, 'ab']
        self._test(self.key, content)

    def test_cache_3(self):
        "Tests storing of raw content"
        content = self.content * 10
        self._test(self.key, content, raw=1)

    def test_cache_4(self):
        "Tests storing of raw content"
        content = self.content * 10
        self._test(self.key, content, raw=1, modified='20041110001122')

    def _test(self, key, content, **modifiers):
        # Blow it away
        rhnCache.CACHEDIR = '/tmp/rhn'
        self._cleanup(key)
        rhnCache.set(key, content, **modifiers)
        self.assertTrue(rhnCache.has_key(key))
        content2 = rhnCache.get(key, **modifiers)
        self.assertEqual(content, content2)

        self._cleanup(key)
        self.assertFalse(rhnCache.has_key(key))
        return (key, content)

    def test_cache_5(self):
        content = self.content * 10
        timestamp = '20041110001122'

        self._cleanup(self.key)
        rhnCache.set(self.key, content, modified=timestamp)

        self.assertTrue(rhnCache.has_key(self.key))
        self.assertTrue(rhnCache.has_key(self.key, modified=timestamp))
        self.assertFalse(rhnCache.has_key(self.key, modified='20001122112233'))
        self._cleanup(self.key)

    def test_missing_1(self):
        "Tests exceptions raised by the code"
        self._cleanup(self.key)
        self.assertEqual(None, rhnCache.get(self.key))

    def test_exception_1(self):
        "Tests raising exceptions"
        self.assertRaises(KeyError, rhnCache.get, self.key, missing_is_null=0)

    def test_opening_uncompressed_data_as_compressed(self):
      "Should return None, opening uncompressed data as compressed"
      rhnCache.set(self.key, self.content, raw=1)

      self.assertEqual(None, rhnCache.get(self.key, compressed=1, raw=1))

      self._cleanup(self.key)

    def test_opening_raw_data_as_pickled(self):
      "Should return None, opening uncompressed data as compressed"
      rhnCache.set(self.key, "12345", raw=1)

      self.assertEqual(None, rhnCache.get(self.key, raw=0))

      self._cleanup(self.key)

    def _cleanup(self, key):
        if rhnCache.has_key(key):
            rhnCache.delete(key)

        self.assertFalse(rhnCache.has_key(key))

if __name__ == '__main__':
    sys.exit(unittest.main() or 0)
07070100000039000081B40000000000000000000000016290A0C1000010E0000000000000000000000000000000000000003800000000spacewalk-backend/common/test/unit-test/test_suseLib.py   # -*- coding: utf-8 -*-
#
# Copyright (c) 2012 SUSE LLC
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#

try:
    import unittest2 as unittest
except ImportError:
    import unittest

import mock

from spacewalk.common import suseLib

PROXY_ADDR = "my.proxy.com:1234"
HTTPS_PROXY = "https://my.proxy.com:1234"
HTTP_PROXY = "http://my.proxy.com:1234"
PROXY_USER = "proxy_user"
PROXY_PASS = "proxy_pass"
HTTPS_PROXY_CREDS = "https://user:password@my.proxy.com:1234"


class SuseLibTest(unittest.TestCase):
    @classmethod
    def setUpClass(self):
        self.initCFG = mock.patch("spacewalk.common.suseLib.initCFG")
        self.initCFG.start()

    @classmethod
    def tearDownClass(self):
        self.initCFG.stop()

    @mock.patch('spacewalk.common.suseLib.CFG')
    @mock.patch('builtins.open')
    def test_get_proxy_from_yast(self, mocked_open, mocked_CFG):
        mocked_CFG.http_proxy          = None
        mocked_CFG.http_proxy_username = None
        mocked_CFG.http_proxy_password = None

        mocked_file                    = mock.MagicMock()
        mocked_file.read.return_value  = ' --proxy "%s"\n --proxy-user "%s:%s"' % (HTTPS_PROXY, PROXY_USER, PROXY_PASS)
        mocked_file.close.return_value = True

        mocked_open.return_value = mocked_file

        self.assertEqual(
            (HTTPS_PROXY, PROXY_USER, PROXY_PASS),
            suseLib.get_proxy()
        )

    @mock.patch('spacewalk.common.suseLib.CFG')
    @mock.patch('builtins.open')
    def test_get_proxy_from_yast_no_creds(self, mocked_open, mocked_CFG):
        mocked_CFG.http_proxy          = None
        mocked_CFG.http_proxy_username = None
        mocked_CFG.http_proxy_password = None

        mocked_file                    = mock.MagicMock()
        mocked_file.read.return_value  = ' --proxy "%s"' % HTTPS_PROXY
        mocked_file.close.return_value = True

        mocked_open.return_value = mocked_file

        self.assertEqual((HTTPS_PROXY, None, None), suseLib.get_proxy())

    @mock.patch('spacewalk.common.suseLib.CFG')
    @mock.patch('spacewalk.common.suseLib.log_debug')
    @mock.patch('builtins.open')
    def test_get_proxy_none(self, mocked_open, mocked_log_debug, mocked_CFG):
        mocked_CFG.http_proxy          = None
        mocked_CFG.http_proxy_username = None
        mocked_CFG.http_proxy_password = None

        mocked_file                    = mock.MagicMock()
        mocked_file.read.return_value  = ""
        mocked_file.close.return_value = True

        mocked_open.return_value = mocked_file

        self.assertEqual((None, None, None), suseLib.get_proxy())
        self.assertIn('Could not read proxy URL from rhn config',
                      mocked_log_debug.call_args_list[0][0][1])
        self.assertEqual(
            'Could not read proxy URL from /root/.curlrc',
            mocked_log_debug.call_args_list[1][0][1]
        )
        self.assertEqual(2, mocked_log_debug.call_count)

    @mock.patch('spacewalk.common.suseLib.CFG')
    def test_get_proxy_rhn_conf_no_creds(self, mocked_CFG):
        mocked_CFG.http_proxy          = PROXY_ADDR
        mocked_CFG.http_proxy_username = None
        mocked_CFG.http_proxy_password = None

        self.assertEqual((HTTP_PROXY, None, None), suseLib.get_proxy())

    @mock.patch('spacewalk.common.suseLib.CFG')
    def test_get_proxy_rhn_conf_creds(self, mocked_CFG):
        mocked_CFG.http_proxy          = PROXY_ADDR
        mocked_CFG.http_proxy_username = PROXY_USER
        mocked_CFG.http_proxy_password = PROXY_PASS

        self.assertEqual(
            (HTTP_PROXY, PROXY_USER, PROXY_PASS),
            suseLib.get_proxy()
        )

    @mock.patch('spacewalk.common.suseLib.CFG')
    def test_get_proxy_rhn_only_username(self, mocked_CFG):
        mocked_CFG.http_proxy          = PROXY_ADDR
        mocked_CFG.http_proxy_username = 'user'
        mocked_CFG.http_proxy_password = None

        self.assertEqual((HTTP_PROXY, 'user', None), suseLib.get_proxy())

0707010000003A000041FD0000000000000000000000016290A0C100000000000000000000000000000000000000000000003500000000spacewalk-backend/common/test/unit-test/translations  0707010000003B000041FD0000000000000000000000016290A0C100000000000000000000000000000000000000000000003800000000spacewalk-backend/common/test/unit-test/translations/en   0707010000003C000041FD0000000000000000000000016290A0C100000000000000000000000000000000000000000000004400000000spacewalk-backend/common/test/unit-test/translations/en/LC_MESSAGES   0707010000003D000081B40000000000000000000000016290A0C10000021A000000000000000000000000000000000000005100000000spacewalk-backend/common/test/unit-test/translations/en/LC_MESSAGES/unit-test.mo  Þ•          <      \       p      q      z      ‰   L  Ÿ      ì     õ                        Good day How do you do? What should I do now? Project-Id-Version: Unit Test 0.1
Report-Msgid-Bugs-To: rhn-bugs@redhat.com
POT-Creation-Date: 2005-02-23 22:39-0500
PO-Revision-Date: 2005-02-23 22:39-0500
Last-Translator: Mihai Ibanescu <misa@redhat.com>
Language-Team: English <EN@li.org>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
 Good day How do you do? What should I do now?   0707010000003E000041FD0000000000000000000000016290A0C100000000000000000000000000000000000000000000003800000000spacewalk-backend/common/test/unit-test/translations/ro   0707010000003F000041FD0000000000000000000000016290A0C100000000000000000000000000000000000000000000004400000000spacewalk-backend/common/test/unit-test/translations/ro/LC_MESSAGES   07070100000040000081B40000000000000000000000016290A0C100000215000000000000000000000000000000000000005100000000spacewalk-backend/common/test/unit-test/translations/ro/LC_MESSAGES/unit-test.mo  Þ•          <      \       p      q      z      ‰   L  Ÿ   	   ì     ö                        Good day How do you do? What should I do now? Project-Id-Version: Unit Test 0.1
Report-Msgid-Bugs-To: rhn-bugs@redhat.com
POT-Creation-Date: 2005-02-23 22:39-0500
PO-Revision-Date: 2005-02-23 22:39-0500
Last-Translator: Mihai Ibanescu <misa@redhat.com>
Language-Team: English <EN@li.org>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
 Buna ziua Ce mai faceti? Ce sa fac acum?    07070100000041000081B40000000000000000000000016290A0C100000322000000000000000000000000000000000000002E00000000spacewalk-backend/common/test/unit-test/uk.po # Yuri Chornoivan <yurchor@ukr.net>, 2015. #zanata
msgid ""
msgstr ""
"Project-Id-Version: Spacewalk\n"
"Report-Msgid-Bugs-To: rhn-bugs@redhat.com\n"
"POT-Creation-Date: 2005-02-23 22:39-0500\n"
"PO-Revision-Date: 2015-09-26 06:22+0000\n"
"Last-Translator: Yuri Chornoivan <yurchor@ukr.net>\n"
"Language-Team: Ukrainian\n"
"Language: uk\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)\n"
"X-Generator: Zanata 4.6.2\n"

#: foo.py:7
msgid "Good day"
msgstr "Ð”Ð¾Ð±Ñ€Ð¾Ð³Ð¾ Ð´Ð½Ñ"

#: foo.py:8
msgid "How do you do?"
msgstr "Ð¯Ðº ÑÐ¿Ñ€Ð°Ð²Ð¸?"

#: foo.py:9
msgid "What should I do now?"
msgstr "Ð©Ð¾ ÑÐ»Ñ–Ð´ Ð·Ñ€Ð¾Ð±Ð¸Ñ‚Ð¸?"
  07070100000042000081B40000000000000000000000016290A0C100000302000000000000000000000000000000000000003500000000spacewalk-backend/common/test/unit-test/unit-test.en  # SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: Unit Test 0.1\n"
"Report-Msgid-Bugs-To: rhn-bugs@redhat.com\n"
"POT-Creation-Date: 2005-02-23 22:39-0500\n"
"PO-Revision-Date: 2005-02-23 22:39-0500\n"
"Last-Translator: Mihai Ibanescu <misa@redhat.com>\n"
"Language-Team: English <EN@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"

#: foo.py:7
msgid "Good day"
msgstr "Good day"

#: foo.py:8
msgid "How do you do?"
msgstr "How do you do?"

#: foo.py:9
msgid "What should I do now?"
msgstr "What should I do now?"
  07070100000043000081B40000000000000000000000016290A0C1000002D7000000000000000000000000000000000000003600000000spacewalk-backend/common/test/unit-test/unit-test.pot # SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: Unit Test 0.1\n"
"Report-Msgid-Bugs-To: rhn-bugs@redhat.com\n"
"POT-Creation-Date: 2005-02-23 22:39-0500\n"
"PO-Revision-Date: 2005-02-23 22:39-0500\n"
"Last-Translator: Mihai Ibanescu <misa@redhat.com>\n"
"Language-Team: English <EN@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"

#: foo.py:7
msgid "Good day"
msgstr ""

#: foo.py:8
msgid "How do you do?"
msgstr ""

#: foo.py:9
msgid "What should I do now?"
msgstr ""
 07070100000044000081B40000000000000000000000016290A0C1000002FD000000000000000000000000000000000000003500000000spacewalk-backend/common/test/unit-test/unit-test.ro  # SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: Unit Test 0.1\n"
"Report-Msgid-Bugs-To: rhn-bugs@redhat.com\n"
"POT-Creation-Date: 2005-02-23 22:39-0500\n"
"PO-Revision-Date: 2005-02-23 22:39-0500\n"
"Last-Translator: Mihai Ibanescu <misa@redhat.com>\n"
"Language-Team: English <EN@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"

#: foo.py:7
msgid "Good day"
msgstr "Buna ziua"

#: foo.py:8
msgid "How do you do?"
msgstr "Ce mai faceti?"

#: foo.py:9
msgid "What should I do now?"
msgstr "Ce sa fac acum?"
   07070100000045000081FD0000000000000000000000016290A0C1000009BF000000000000000000000000000000000000002000000000spacewalk-backend/db-checker.py   #!/usr/bin/python
#
# Copyright (c) 2008--2016 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#

import os
import sys
from uyuni.common import usix

_topdir = os.path.abspath(os.path.dirname(sys.argv[0]))
if _topdir not in sys.path:
    sys.path.append(_topdir)

from spacewalk.server import rhnSQL


def main():
    rhnSQL.initDB()

    if not args:
        print("No module specified")
        return 0

    if '.' not in sys.path:
        sys.path.append('.')

    g = globals()

    for module_name in args:
        print(("Checking module %s" % module_name))
        pmn = proper_module_name(module_name)
        try:
            m = __import__(pmn)
            g[module_name] = m
        except ImportError:
            e = sys.exc_info()[1]
            print(("Unable to import module %s: %s" % (module_name, e)))
            continue

        comps = pmn.split('.')
        for c in comps[1:]:
            m = getattr(m, c)

        for mod, name, statement in get_class_instances(m, rhnSQL.Statement):
            try:
                rhnSQL.prepare(statement)
            except rhnSQL.SQLStatementPrepareError:
                e = sys.exc_info()[1]
                print(("Error: %s.%s: %s" % (mod.__name__, name, e)))


def proper_module_name(module_name):
    suffix = '.py'
    if module_name.endswith(suffix):
        module_name = module_name[:-len(suffix)]

    return os.path.normpath(module_name).replace('/', '.')

_objs_seen = {}


def get_class_instances(obj, class_obj):
    if not hasattr(obj, "__dict__"):
        return []
    id_obj = id(obj)
    if id_obj in _objs_seen:
        return []
    _objs_seen[id_obj] = None
    result = []
    for k, v in list(obj.__dict__.items()):
        if isinstance(v, class_obj):
            result.append((obj, k, v))
        elif isinstance(v, usix.ClassType):
            result.extend(get_class_instances(v, class_obj))
    return result

if __name__ == '__main__':
    sys.exit(main() or 0)
 07070100000046000041FD0000000000000000000000016290A0C100000000000000000000000000000000000000000000001600000000spacewalk-backend/doc 07070100000047000081B40000000000000000000000016290A0C100001903000000000000000000000000000000000000001E00000000spacewalk-backend/doc/api.txt 
            Description of the API used by up2date version 2

I. Major changes:

The most prominent change (which complicated the whole picture a little bit)
is the notion of channel. A channel is an abstraction of what we previously
called a "distribution". It is a logical grouping of packages known to
correctly run on a system. This means no dependency problems should exit a
channel; i.e. channels should be self-contained with respect to RPM
dependencies.

A channel has a "base architecture" as an implicit feature. One should not be
able to put a package in a channel with an incompatible architecture.

XMLRPC is no longer the only way the client and the server talk to each other.
Because the mechanism to pack XMLRPC involves POST requests, the result of an
XMLRPC function call is impossible to be cached on regular HTTP
proxies/caches. For this reason, some of the bandwidth-hungry operations
(fetching the list of packages, a package header, a binary or a source
package) have been converted to use GET requests, and have been tested to work
with HTTP proxies/caches (we tested Squid and Apache).

A fault for a call is no longer packed as an HTTP 200 response for GET
requests. Instead we pass back HTTP_NOT_FOUND and (in certain situations)
HTTP_UNAUTHORIZED. The XMLRPC Fault is packed in the header of the response,
instead of the body.

We ran limited testing of running the up2date client over HTTP/1.1. While the
results seemed to be correct, a more thorough analysis of the implications and
complications HTTP/1.1 would bring is welcome.

We have tested the old clients to run against the current code; this implies
that the old XMLRPC calls run exactly as before. Some complications occur
though when channels kick in, since they completely ignore the channel
concept.


II. What an up2date client is supposed to do (the work-flow of the protocol):

1. the client issues an XMLRPC request for up2date.login, passing its system
  ID. A successful lookup of the server will return a dictionary of items
  which are supposed to be passed back to the server (in the header of the GET
  request) when GET functions are called. The dictionary typically contains
  the following keys:
    'X-RHN-Client-Version':     set to '2'
    'X-RHN-Auth-Expire-Offset': the string representation of a float, the
          number of seconds until the request expires
    'X-RHN-Auth-User-Id':       the username (string)
    'X-RHN-Server-Id':          the server ID (an integer)
    'X-RHN-Auth':               a signature generated by the server, which
        will be verified to establish the client authenticity
    'X-RHN-Auth-Server-Time':   the time (string representation of a float
        value, the number of seconds from the epoch, Jan 1, 1970) on the 
        server side) when this authentication token was generated. Clients
        could use this value to detect clock skews and to figure out when the
        authentication token will expire (and to renew it). The expiration
        time is the server time plus the 'X-RHN-Auth-Expire-Offset' value.
    'X-RHN-Auth-Channels':      a list of channels this server is subscribed
        to. Each entry in the list is in the form 
        [channel_name, channel_version], both strings.
        This key is for the client use only and is not used by the server to
        compute the signature, so it may be excluded from the dictionary the
        client sends back to the server

2. the client creates an rhnHTTPlib.Server, using the server's URL and the
  dictionary passed as 'headers'. Underneath, rhnHTTPlib will send all the
  (key, value) pairs as header fields for the GET request. An array value is
  passed as a multi-valued header.

3. using the server object created on step 2, the client can issue the
   following functions:
    - listPackages(channelName, channelVersion). The result is an
      XMLRPC-encoded list of entries. Each entry is (currently) a 7-item list:
      [packageName, packageVersion, packageRelease, packageEpoch, packageArch,
          packageSize, channelName]
      After retrieving the string returned by this function, one should 
      XMLRPC decode it in order to obtain the list.
    - getPackageHeader(channelName, headerName),
      where headerName closely mimics the way RPM filenames are generated,
      replacing the trailing .rpm with .hdr. For example, to retrieve the
      package returned by a listPackages call which reads:
        ['kernel', '2.4.3', '12', '', 'i686', '13441234',
         'redhat-linux-i386-7.1']
      one should issue:
        getPackageHeader('redhat-linux-i386-7.1', 'kernel-2.4.3-12.i686.hdr')
      The return value of this function is binary data, ready to be fed to the
      RPM library to obtain a header object.
    - getPackage(channelName, packageName), 
      where packageName closely mimics the way RPM filenames are generated.
      For example, to retrieve the package returned by a listPackages call 
      which reads:
        ['kernel', '2.4.3', '12', '', 'i686', '13441234',
         'redhat-linux-i386-7.1']
      one should issue:
        getPackage('redhat-linux-i386-7.1', 'kernel-2.4.3-12.i686.rpm').
      The return value of this function is binary data, ready to be saved in a
      file and considered a valid RPM package.
    - getPackageSource(channelName, packageSourceName),
      where packageName closely mimics the way RPM filenames are generated.
      For example, to retrieve the package returned by a listPackages call 
      which reads:
        ['kernel', '2.4.3', '12', '', 'i686', '13441234',
         'redhat-linux-i386-7.1']
      one should issue:
        getPackageSource('redhat-linux-i386-7.1', 'kernel-2.4.3-12.src.rpm')
      The return value of this function is binary data, ready to be saved in a
      file and considered a valid RPM package.
    
All these functions return a tuple (size, fd) if the call was successful
(i.e. if the HTTP result code is 200); otherwise, rhnHTTPlib raises a
cgiwrap.ProtocolError exception. The errcode, errmsg and headers fields of the
exception object contain the correspondent values of the result.

One should be careful when reading from the file-descriptor-like object
returned by the GET functions. HTTP/1.1 uses persistent connections, so one
should try to read exactly the size returned by the function. Failure to do so
may result in corruption of data.

 07070100000048000081B40000000000000000000000016290A0C1000015A2000000000000000000000000000000000000002000000000spacewalk-backend/doc/kudzu.doc   Devices detected are of the following classes:

CLASS_UNSPEC: used by the probe to say 'look for everything'
CLASS_NETWORK: network adapters
CLASS_SCSI: SCSI (and some RAID) adapters
CLASS_MOUSE: mice
CLASS_AUDIO: sound cards/chips
CLASS_CDROM: CD-ROMs, CD-Rs, CD-RW, DVD-ROMs, etc.
CLASS_MODEM: modems; also, PCI serial ports (FIXME)
CLASS_VIDEO: video cards
CLASS_TAPE: tape drives
CLASS_FLOPPY: IDE, SCSI, and USB floppy drives. Generic PC floppy drives
              are *not* detected
CLASS_SCANNER: scanners
CLASS_HD: hard drives, other random storage media
CLASS_RAID: RAID adapters. Not really used by anything currently.
CLASS_PRINTER: printers
CLASS_CAPTURE: video capture boards (think bttv)
CLASS_KEYBOARD: keyboards (only returned on Sparc hardware)
CLASS_MONITOR: DDC monitors
CLASS_USB: USB controllers
CLASS_SOCKET: Cardbus controllers. Might be expanded to PCMCIA controllers
	      in the future
CLASS_OTHER: anything else

The 'bus'es that it finds things on are the following:

BUS_PCI - also sees any currently configured Cardbus stuff
BUS_SBUS - this is currently a misnomer. It applies to anything pulled from
	the OpenPROM probe on Sparc
BUS_SERIAL
BUS_PSAUX - the PS/2 mouse controller
BUS_PARALLEL
BUS_SCSI - this includes ide-scsi and USB storage, if configured
BUS_IDE
BUS_KEYBOARD - this is where it looks for Sparc keyboard information
BUS_DDC - monitors
BUS_USB
BUS_ISAPNP
BUS_OTHER - a placeholder, mostly
BUS_UNSPEC - again, used by the probe to find anything

Fields written in /etc/sysconfig/hwconf that are common to all devices
(note: some may be NULL; if so, they are not written):

class:
	The device class
bus:
	The 'bus' the device was probed on
detached:
	This is for devices that the user wants to leave as configured,
	even though they may not be probed. Cardbus cards, if detected,
	are automatically marked as this; a user may want to mark this
	themselves for some USB devices.
driver:
	(always non-NULL)
	The driver to use for the card; it means different things for
	different device classes. For mice, it's a mouseconfig type;
	for video cards, it's a mapping in the Xconfigurator 'Cards'
	database; for *most* other things, it's a kernel module.
	There are three special values:
	  - unknown
	    This means that we don't know what driver to use
	  - ignore
	    This means that we don't care what driver to use. Generally
	    assigned to PCI bridges and the like. In the current
	    implementation, there really is no difference between
	    'ignore' and 'unknown'.
	  - disabled
	    This means that we'd normally assign a driver, but the
	    device appears to be disabled in the BIOS; this is mainly
	    set for PCI devices. This can occur if, for example,
	    the user sets 'PnP OS: Yes' in their BIOS and no interrupts
	    are assigned to any cards.
desc:
	(always non-NULL)
	Some generic description of the device
device:
	For network cards, this is 'eth' to indicate ethernet, and
	'tr' to indicate token ring. For other devices, it is usually
	the device node associated with a device. For example, for an
	IDE device, it would be along the lines of 'hda'. For a serial
	device, it could be 'ttyS1'.
	
Devices have additional fields depending on the 'bus' that they are
associated with (again, some may be NULL):

BUS_DDC
id:
	A DDC PnP id from the Xconfigurator MonitorsDB
horizSyncMin:
horizSyncMax:
vertRefreshMin:
vertRefreshMax:
	The minimum and maximum horizontal sync and vertical refresh
	rates.
modes:
	A list of VESA compatible resolutions supported by the
	video card/monitor combo.
mem:
	The amount of memory detected on the attached video card.
	Yes, this is technically in the wrong place.

BUS_IDE
physical:
logical:
	The physical and logical geometry for the drive, as gleaned
	from /proc/ide. Not used by anything.

BUS_ISAPNP
deviceId:
	The ISAPnP logical device id
pdeviceId:
	The parent card ISAPnP id
compat:
	Any compatibility PnP id, if available
native:
	'1' if a kernel driver with native ISAPnP support exists
	for this device. Gleaned from /lib/modules/`uname -r`/modules.isapnpmap
active:
	'1' if the device is currently activated
cardnum:
	The index of the card that this logical device is part of.
logdev:
	The logical device number for this logical device.
io:
irq:
dma:
mem:
	Resources currently in use by this card.

BUS_KEYBOARD:
BUS_PSAUX:
(none)

BUS_PARALLEL:
pnpmodel:
pnpmfr:
pnpdesc:
	The PnP model name, manufaturer, and description of this device.
pnpmodes:
	The PnP supported 'modes' for this device.
pinfo:
	X and Y resolution of the printer, whether or not it supports
	color and raw ASCII output, and if it uses a uniprint driver.
(Note: information returned by the parallel probe is not currently used
 by kudzu)
 
BUS_PCI:
vendorId:
deviceId:
	The PCI vendor and device ids.
subVendorId:
subDeviceId:
	The PCI subvendor and subdevice ids.
pciType:
	'1' for a normal PCI device. '2' for a Cardbus device.


BUS_SBUS:
width:
height:
freq:
monitor:
	Used for monitors detected via OpenPROM; it specifies
	the resolution and frequency.

BUS_SCSI:
host:
channel:
id:
lun:
	The host, channel, id, and lun of the device.

BUS_SERIAL:
pnpmfr:
pnpmodel:
pnpcompat:
pnpdesc:
	The serial PnP manufacturer, model, compatibility string,
	and description of the device.

BUS_USB:
usbclass:
usbsubclass:
usbprotocol:
	The USB class, subclass, and protocol. Used to identify
	the device type.
usbbus:
usblevel:
usbport:
productrevision:
	Other USB data. Not currently used.
vendorId:
deviceId:
	The vendor and device IDs of the USB device.

  07070100000049000041FD0000000000000000000000016290A0C100000000000000000000000000000000000000000000001C00000000spacewalk-backend/logrotate   0707010000004A000081B40000000000000000000000016290A0C1000000DC000000000000000000000000000000000000002500000000spacewalk-backend/logrotate/Makefile  # Makefile for installation of the logrotation configuration files
#

# what is the backend top dir
TOP	= ..

INSTALL_FILES	= $(wildcard spacewalk-backend-*)
INSTALL_DEST	= /etc/logrotate.d

include $(TOP)/Makefile.defs
0707010000004B000081B40000000000000000000000016290A0C1000000C1000000000000000000000000000000000000003200000000spacewalk-backend/logrotate/spacewalk-backend-app # logrotation file for Spacewalk server
#

/var/log/rhn/rhn_server_app.log {
    weekly
    rotate 5
    copytruncate
    compress
    notifempty
    missingok
    size=10M
    su wwwrun www
}
   0707010000004C000081B40000000000000000000000016290A0C1000000C4000000000000000000000000000000000000003500000000spacewalk-backend/logrotate/spacewalk-backend-applet  # logrotation file for Spacewalk Server
#

/var/log/rhn/rhn_server_applet.log {
    weekly
    rotate 5
    copytruncate
    compress
    notifempty
    missingok
    size=10M
    su wwwrun www
}
0707010000004D000081B40000000000000000000000016290A0C10000015C000000000000000000000000000000000000003200000000spacewalk-backend/logrotate/spacewalk-backend-cdn # logrotation file for Spacewalk Server
#

/var/log/rhn/cdnsync.log {
    weekly
    rotate 5
    copytruncate
    compress
    notifempty
    missingok
    size=10M
#LOGROTATE-3.8#    su root apache
}

/var/log/rhn/cdnsync/*.log {
    weekly
    rotate 5
    copytruncate
    compress
    delaycompress
    notifempty
    missingok
    size=10M
}
0707010000004E000081B40000000000000000000000016290A0C1000000C8000000000000000000000000000000000000003B00000000spacewalk-backend/logrotate/spacewalk-backend-config-files    # logrotation file for Spacewalk Server
#

/var/log/rhn/rhn_config_management.log {
    weekly
    rotate 5
    copytruncate
    compress
    notifempty
    missingok
    size=10M
    su wwwrun www
}
0707010000004F000081B40000000000000000000000016290A0C1000000CD000000000000000000000000000000000000004000000000spacewalk-backend/logrotate/spacewalk-backend-config-files-tool   # logrotation file for Spacewalk Server
#

/var/log/rhn/rhn_config_management_tool.log {
    weekly
    rotate 5
    copytruncate
    compress
    notifempty
    missingok
    size=10M
    su wwwrun www
}
   07070100000050000081B40000000000000000000000016290A0C1000000CF000000000000000000000000000000000000003200000000spacewalk-backend/logrotate/spacewalk-backend-iss # logrotation file for Spacewalk Server - SAT handler
#

/var/log/rhn/rhn_server_sat.log {
    weekly
    rotate 5
    copytruncate
    compress
    notifempty
    missingok
    size=10M
    su wwwrun www
}
 07070100000051000081B40000000000000000000000016290A0C1000000CE000000000000000000000000000000000000003900000000spacewalk-backend/logrotate/spacewalk-backend-iss-export  # logrotation file for Spacewalk Server package uploader
#

/var/log/rhn/rhn_sat_export_internal.log {
    weekly
    rotate 5
    copytruncate
    compress
    notifempty
    missingok
    su wwwrun www
}
  07070100000052000081B40000000000000000000000016290A0C1000000DB000000000000000000000000000000000000004200000000spacewalk-backend/logrotate/spacewalk-backend-package-push-server # logrotation file for Spacewalk Server package uploader
#

/var/log/rhn/rhn_upload_package_push.log {
    weekly
    rotate 5
    copytruncate
    compress
    notifempty
    missingok
    size=10M
    su wwwrun www
}
 07070100000053000081B40000000000000000000000016290A0C1000000BD000000000000000000000000000000000000003500000000spacewalk-backend/logrotate/spacewalk-backend-server  # logrotation file for Spacewalk Server
#

/var/log/rhn/rhn_server.log {
    weekly
    rotate 5
    copytruncate
    compress
    notifempty
    missingok
    size=10M
    su wwwrun www
}
   07070100000054000081B40000000000000000000000016290A0C10000029E000000000000000000000000000000000000003400000000spacewalk-backend/logrotate/spacewalk-backend-tools   # logrotation file for Spacewalk Server
#

/var/log/rhn/activation.log {
    weekly
    rotate 5
    copytruncate
    compress
    notifempty
    missingok
    size=10M
#LOGROTATE-3.8#    su root apache
}

/var/log/rhn/rhn_server_satellite.log {
    weekly
    rotate 5
    copytruncate
    compress
    notifempty
    missingok
    size=10M
    su wwwrun www
}

/var/log/rhn/reposync.log {
    weekly
    rotate 5
    copytruncate
    compress
    notifempty
    missingok
    size=10M
#LOGROTATE-3.8#    su root apache
}

/var/log/rhn/reposync/*.log {
    weekly
    rotate 5
    copytruncate
    compress
    delaycompress
    notifempty
    missingok
    size=10M
}
  07070100000055000081B40000000000000000000000016290A0C1000000C4000000000000000000000000000000000000003500000000spacewalk-backend/logrotate/spacewalk-backend-xmlrpc  # logrotation file for Spacewalk Server
#

/var/log/rhn/rhn_server_xmlrpc.log {
    weekly
    rotate 5
    copytruncate
    compress
    notifempty
    missingok
    size=10M
    su wwwrun www
}
07070100000056000041FD0000000000000000000000016290A0C100000000000000000000000000000000000000000000001500000000spacewalk-backend/po  07070100000057000081B40000000000000000000000016290A0C1000005E5000000000000000000000000000000000000001E00000000spacewalk-backend/po/Makefile # Makefile for the PO files (translation) catalog
#

TOP	= ..
SUBDIR	= locale
localedir = /usr/share/locale

include $(TOP)/Makefile.defs

# What is this package?
NLSPACKAGE	= spacewalk-backend-server
POTFILE		= $(NLSPACKAGE).pot

# PO catalog handling
MSGMERGE	= msgmerge -v
XGETTEXT	= xgettext --default-domain=$(NLSPACKAGE) --from-code utf-8 \
		  --add-comments		  
MSGFMT		= msgfmt --statistics --verbose

# What do we need to do
POFILES		= $(wildcard *.po)
MOFILES		= $(patsubst %.po,%.mo,$(POFILES))
SRCFILES	= $(shell find ../server -name \*.py) \
		  $(shell find ../common -name \*.py) \
		  $(shell find ../satellite_tools -name \*.py)

all:: $(MOFILES)

$(POTFILE): $(SRCFILES)
	@$(XGETTEXT) --keyword=_ --keyword=N_ $(SRCFILES)
	@if cmp -s $(NLSPACKAGE).po $(POTFILE); then \
	    rm -f $(NLSPACKAGE).po; \
	else \
	    mv -f $(NLSPACKAGE).po $(POTFILE); \
	fi

update-po: Makefile $(POTFILE) refresh-po

refresh-po: Makefile
	for cat in $(POFILES); do \
		lang=`basename $$cat .po`; \
		if $(MSGMERGE) $$lang.po $(POTFILE) > $$lang.pot ; then \
			mv -f $$lang.pot $$lang.po ; \
			echo "$(MSGMERGE) of $$lang succeeded" ; \
		else \
			echo "$(MSGMERGE) of $$lang failed" ; \
			rm -f $$lang.pot ; \
		fi \
	done

clean ::
	@rm -fv *mo *~ .depend

install :: $(MOFILES)
	@for n in $(MOFILES); do \
	    l=`basename $$n .mo`; \
	    d="$(PREFIX)$(localedir)/$$l/LC_MESSAGES" ; \
	    $(INSTALL_DIR) $$d ; \
	    $(INSTALL_DATA) $$n $$d/$(NLSPACKAGE).mo ; \
	done

%.mo: %.po
	$(MSGFMT) -o $@ $<
   07070100000058000081B40000000000000000000000016290A0C10000B5EE000000000000000000000000000000000000001C00000000spacewalk-backend/po/aln.po   # SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
#
# Translators:
msgid ""
msgstr ""
"Project-Id-Version: Spacewalk\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-10-16 13:34+0200\n"
"PO-Revision-Date: 2011-03-04 16:08+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: aln\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"

#: ../server/apacheAuth.py:66
#, python-format
msgid "incomplete proxy authentication token: %s"
msgstr ""

#: ../server/apacheAuth.py:84
#, python-format
msgid "Sent proxy signature %s does not match ours %s."
msgstr ""

#: ../server/apacheAuth.py:119
msgid "declined proxy authentication"
msgstr ""

#: ../server/apacheRequest.py:59
#, python-format
msgid "Invalid request received (%s)."
msgstr ""

#: ../server/apacheRequest.py:120
#, python-format
msgid ""
"IMPORTANT MESSAGE FOLLOWS:\n"
"%s"
msgstr ""

#: ../server/apacheRequest.py:149
#, python-format
msgid ""
"While running '%s': caught\n"
"%s : %s\n"
msgstr ""

#: ../server/apacheRequest.py:606
#, python-format
msgid "Invalid URI %s"
msgstr ""

#: ../server/configFilesHandler.py:129 ../server/handlers/app/packages.py:192
#: ../server/handlers/xmlrpc/registration.py:215
#: ../server/handlers/xmlrpc/registration.py:1168
#: ../server/handlers/xmlrpc/registration.py:1307
#, python-format
msgid ""
"\n"
"                   %s Account has been deactivated on this server.\n"
"                   Please contact your Org administrator for more help."
msgstr ""

#: ../server/handlers/applet/applet.py:78
#, python-brace-format
msgid "Your system was not found in the {PRODUCT_NAME} database"
msgstr ""

#: ../server/handlers/sat/auth.py:45
msgid "ISS is disabled on this server."
msgstr ""

#: ../server/handlers/sat/auth.py:50
#, python-format
msgid "Server \"%s\" is not enabled for ISS."
msgstr ""

#: ../server/handlers/xmlrpc/errata.py:64
#, python-format
msgid "Expected a package name, not: %s"
msgstr ""

#: ../server/handlers/xmlrpc/errata.py:115
#, python-format
msgid "Expected a package, not: %s"
msgstr ""

#: ../server/handlers/xmlrpc/proxy.py:65
#, python-format
msgid "SUSE Manager Proxy service not enabled for server profile: \"%s\""
msgstr ""

#: ../server/handlers/xmlrpc/proxy.py:85
msgid "Invalid session key"
msgstr ""

#: ../server/handlers/xmlrpc/proxy.py:93
msgid "This server ID no longer exists"
msgstr ""

#: ../server/handlers/xmlrpc/queue.py:433
#, python-format
msgid "Invalid action value type %s (%s)"
msgstr ""

#: ../server/handlers/xmlrpc/queue.py:464
#, python-format
msgid "Action %s does not belong to server %s"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:194
msgid "Required data missing"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:198
msgid "Required members missing"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:207
msgid "Attempt to register a system to an invalid username"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:839
msgid "Invalid system release version requested"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1063
msgid ""
"Unable to find a valid network interface, both ipaddr and ip6addr not found."
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1115
#, python-brace-format
msgid "{PRODUCT_NAME} Welcome Message"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1125
msgid "Privacy Statement"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1146
msgid "Expected a dictionary as a product argument"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1374
#, python-format
msgid "Invalid value '%s' for %s (%s)"
msgstr ""

#: ../server/handlers/xmlrpc/scap.py:104
msgid "Invalid system_id/action_id pair."
msgstr ""

#: ../server/handlers/xmlrpc/up2date.py:233
#, python-format
msgid "Invalid value %s (%s)"
msgstr ""

#: ../server/importlib/userAuth.py:98
msgid "You are not authorized to manage packages in the null org"
msgstr ""

#: ../server/importlib/userAuth.py:103
#, python-format
msgid "You are not allowed to manage packages in the %s org"
msgstr ""

#: ../server/importlib/userAuth.py:121
msgid "You are not allowed to perform administrative tasks"
msgstr ""

#: ../server/importlib/userAuth.py:144
#, python-format
msgid ""
"You are not allowed to manage channel %s, or that channel does not exist"
msgstr ""

#: ../server/importlib/userAuth.py:204
#, python-format
msgid ""
"\n"
"               %s Account has been deactivated on this server.\n"
"               Please contact your Org administrator for more help."
msgstr ""

#: ../server/rhnChannel.py:1992
#, python-format
msgid ""
"Your account does not have access to any channels matching "
"(release='%(release)s', arch='%(arch)s')%(www_activation)s"
msgstr ""

#: ../server/rhnChannel.py:2002
msgid ""
"\n"
"If you have a registration number, please register with it first at http://"
"www.redhat.com/apps/activate/ and then try again.\n"
"\n"
msgstr ""

#: ../server/rhnChannel.py:2012
#, python-format
msgid "Insufficient subscription permissions for release (%s, %s"
msgstr ""

#. Various messages that can be reused
#.
#. bretm 02/07/2007 -- when we have better old-client documentation, probably
#. will be safe to get rid of all this crap
#: ../server/rhnChannel.py:2276 ../server/rhnChannel.py:2287
#: ../server/rhnChannel.py:2302
msgid "System Registered but Inactive"
msgstr ""

#: ../server/rhnChannel.py:2277
#, python-format
msgid ""
"\n"
"Invalid Architecture and OS release combination (%s, %s).\n"
"Your system has been registered, but will not receive updates\n"
"because it is not subscribed to a channel. If you have not yet\n"
"activated your product for service, please visit our website at:\n"
"\n"
"     http://www.redhat.com/apps/activate/\n"
"\n"
"...to activate your product."
msgstr ""

#: ../server/rhnChannel.py:2288
#, python-format
msgid ""
"\n"
"Invalid Architecture and OS release combination (%s, %s).\n"
"Your system has been registered, but will not receive updates\n"
"because it could not be subscribed to a base channel.\n"
"Please contact your organization administrator for assistance.\n"
msgstr ""

#: ../server/rhnChannel.py:2295
#, python-format
msgid ""
"\n"
"  This system has been successfully registered, but is not yet entitled\n"
"  to service.  To entitle this system to service, login to the web site at:\n"
"\n"
"  %(entitlement_url)s\n"
msgstr ""

#: ../server/rhnChannel.py:2303
#, python-format
msgid ""
"\n"
"  This system has been successfully registered, but no service entitlements\n"
"  were available.  To entitle this system to service, login to the web site "
"at:\n"
"\n"
"  %(entitlement_url)s\n"
msgstr ""

#: ../server/rhnHandler.py:62
msgid "Please run rhn_register as root on this client"
msgstr ""

#: ../server/rhnHandler.py:75
#, python-format
msgid "Service not enabled for system profile: \"%s\""
msgstr ""

#: ../server/rhnPackage.py:49 ../server/rhnPackage.py:87
#: ../server/rhnPackage.py:107 ../server/rhnPackage.py:158
#, python-format
msgid "Invalid RPM package %s requested"
msgstr ""

#: ../server/rhnPackage.py:112
msgid "Package not found"
msgstr ""

#: ../server/rhnServer/server_class.py:97
#, python-format
msgid "Architecture `%s' is not supported"
msgstr ""

#: ../server/rhnServer/server_token.py:78
#, python-format
msgid "Token `%s' has more than one base channel assigned"
msgstr ""

#: ../server/rhnServer/server_token.py:80
msgid "Conflicting base channels"
msgstr ""

#: ../server/rhnServer/server_token.py:190
#, python-format
msgid "Failed to add server to group %s"
msgstr ""

#: ../server/rhnServer/server_token.py:503
#, python-format
msgid "Maximum usage count of %s reached"
msgstr ""

#: ../server/rhnServer/server_token.py:744
msgid ""
"Stacking of re-registration tokens with different base entitlements is not "
"supported"
msgstr ""

#: ../server/rhnServer/server_token.py:811
#, python-format
msgid "Could not find token '%s'"
msgstr ""

#. Cannot use activation keys from different orgs
#: ../server/rhnServer/server_token.py:843
msgid "Tokens from mismatching orgs"
msgstr ""

#. Two tokens with different kickstart sessions
#: ../server/rhnServer/server_token.py:853
msgid "Kickstart session mismatch"
msgstr ""

#: ../server/rhnServer/server_token.py:877
msgid "Stacking of re-registration tokens is not supported"
msgstr ""

#: ../server/rhnUser.py:289 ../server/rhnUser.py:292
msgid "Invalid username/password combination"
msgstr ""

#. nope, not reserved either
#: ../server/rhnUser.py:467
#, python-format
msgid "Username `%s' has not been reserved"
msgstr ""

#. New accounts have to specify an e-mail address
#: ../server/rhnUser.py:473
msgid "E-mail address not specified"
msgstr ""

#: ../server/rhnUser.py:509
#, python-format
msgid "username should be at least %d characters"
msgstr ""

#: ../server/rhnUser.py:512
#, python-format
msgid "username should be less than %d characters"
msgstr ""

#: ../server/rhnUser.py:523
#, python-format
msgid "username = `%s', invalid character `%s'"
msgstr ""

#: ../server/rhnUser.py:542
#, python-format
msgid "Please limit your e-mail address to %s chars"
msgstr ""

#: ../server/rhnUser.py:623
#, python-format
msgid "password must be at least %d characters"
msgstr ""

#: ../server/rhnUser.py:626
#, python-format
msgid "Password must be shorter than %d characters"
msgstr ""

#: ../server/rhnUser.py:644
#, python-format
msgid "password contains character `%s'"
msgstr ""

#: ../server/rhnUser.py:651
#, python-format
msgid "username should be at least %d characters long"
msgstr ""

#: ../server/rhnUser.py:662
#, python-format
msgid "Cannot register usernames ending with %s"
msgstr ""

#. 0-999: Red Hat client/client-like interaction errors:
#: ../common/rhnException.py:53
msgid "This does not appear to be a valid username."
msgstr ""

#: ../common/rhnException.py:54
msgid "Invalid username and password combination."
msgstr ""

#: ../common/rhnException.py:55
msgid "This login is already taken, or the password is incorrect."
msgstr ""

#: ../common/rhnException.py:56
msgid "Permission denied."
msgstr ""

#: ../common/rhnException.py:57
msgid "Object not found."
msgstr ""

#: ../common/rhnException.py:58
msgid "Invalid System Digital ID."
msgstr ""

#: ../common/rhnException.py:59
msgid "Invalid System Credentials."
msgstr ""

#: ../common/rhnException.py:60
msgid "Could not retrieve user data from database."
msgstr ""

#: ../common/rhnException.py:61
msgid "Valid username required."
msgstr ""

#: ../common/rhnException.py:62
msgid "Valid password required."
msgstr ""

#: ../common/rhnException.py:63
msgid "Minimum username length violation."
msgstr ""

#: ../common/rhnException.py:64
msgid "Minimum password length violation."
msgstr ""

#: ../common/rhnException.py:65
msgid "The username contains invalid characters."
msgstr ""

#: ../common/rhnException.py:66
msgid "File not found."
msgstr ""

#: ../common/rhnException.py:67
msgid "Architecture and OS version combination is not supported."
msgstr ""

#: ../common/rhnException.py:68
msgid "Could not retrieve system data from database."
msgstr ""

#: ../common/rhnException.py:69
msgid "Invalid arguments passed to function."
msgstr ""

#: ../common/rhnException.py:70
msgid "Unable to retrieve requested entry."
msgstr ""

#: ../common/rhnException.py:71
msgid "Could not update database entry."
msgstr ""

#: ../common/rhnException.py:72
msgid "Unsupported server architecture."
msgstr ""

#: ../common/rhnException.py:73
#, python-format
msgid ""
"\n"
"     The anonymous server functionality is no longer available.\n"
"\n"
"     Please re-register this system by running mgr_register as root.\n"
"     Please visit https://%(hostname)s/rhn/systems/SystemEntitlements.do\n"
"     or login at https://%(hostname)s, and from the \"Overview\" tab,\n"
"     select \"Subscription Management\" to enable the service for this "
"system.\n"
"     "
msgstr ""

#: ../common/rhnException.py:81
msgid "Record not available in the database."
msgstr ""

#: ../common/rhnException.py:82
msgid "Invalid value for entry."
msgstr ""

#: ../common/rhnException.py:83
#, python-format
msgid ""
"\n"
"     This system does not have a valid entitlement for SUSE Manager.\n"
"     Please visit https://%(hostname)s/rhn/systems/SystemEntitlements.do\n"
"     or login at https://%(hostname)s, and from the \"Overview\" tab,\n"
"     select \"Subscription Management\" to enable the service for this "
"system.\n"
"     "
msgstr ""

#: ../common/rhnException.py:89
msgid "Channel error"
msgstr ""

#: ../common/rhnException.py:90
msgid "Client session token is invalid."
msgstr ""

#: ../common/rhnException.py:91
msgid "Client session token has expired."
msgstr ""

#: ../common/rhnException.py:92
msgid "You are not authorized to retrieve the requested object."
msgstr ""

#: ../common/rhnException.py:93
msgid "Invalid action"
msgstr ""

#: ../common/rhnException.py:94
msgid "You are not allowed to perform administrative tasks on this system."
msgstr ""

#: ../common/rhnException.py:96
msgid "The system is already subscribed to the specified channel."
msgstr ""

#: ../common/rhnException.py:97
msgid "The system is not currently subscribed to the specified channel."
msgstr ""

#: ../common/rhnException.py:98
msgid "The specified channel does not exist."
msgstr ""

#: ../common/rhnException.py:99
msgid "Invalid channel version."
msgstr ""

#: ../common/rhnException.py:100
msgid ""
"\n"
"     User group membership limits exceeded.\n"
"\n"
"     The current settings for your account do not allow you to add another\n"
"     user account. Please check with the organization administrator for "
"your\n"
"     account if the maximum number of users allowed to subscribe to server "
"needs\n"
"     to be changed.\n"
"     "
msgstr ""

#: ../common/rhnException.py:108
msgid ""
"\n"
"     System group membership limits exceeded.\n"
"\n"
"     The current settings for your account do not allow you to add another\n"
"     system profile. Please check with the organization administrator for "
"your\n"
"     account for modifying the maximum number of system profiles that can "
"be\n"
"     subscribed to your account.\n"
"     "
msgstr ""

#: ../common/rhnException.py:116
msgid ""
"\n"
"     Invalid architecture.\n"
"\n"
"     The architecture of the package is not supported by\n"
"     "
msgstr ""

#: ../common/rhnException.py:121
msgid "Invalid RPM header"
msgstr ""

#: ../common/rhnException.py:122
msgid ""
"\n"
"    This system is already registered as a Salt Minion. If you want to "
"register it as a traditional client\n"
"    please delete it first via the web UI or API and then register it using "
"the traditional tools.\n"
"    "
msgstr ""

#. For the uploading tools
#: ../common/rhnException.py:127
msgid "Invalid information uploaded to the server"
msgstr ""

#: ../common/rhnException.py:128
msgid "Error uploading network interfaces configuration."
msgstr ""

#: ../common/rhnException.py:129
msgid ""
"\n"
"     Package Upload Failed due to uniqueness constraint violation.\n"
"     Make sure the package does not have any duplicate dependencies or\n"
"     does not already exists on the server\n"
"     "
msgstr ""

#: ../common/rhnException.py:134
msgid ""
"\n"
"     The --force rhnpush option is disabled on this server.\n"
"     Please contact your SUSE Manager administrator for more help.\n"
"     "
msgstr ""

#. 60-70: token errors
#: ../common/rhnException.py:140
msgid ""
"\n"
"     The activation token specified could not be found on the server.\n"
"     Please retry with a valid key.\n"
"     "
msgstr ""

#: ../common/rhnException.py:144
msgid "Too many systems registered using this registration token"
msgstr ""

#: ../common/rhnException.py:145
msgid "Token contains invalid, obsoleted or insufficient settings"
msgstr ""

#: ../common/rhnException.py:146
msgid "Conflicting activation tokens"
msgstr ""

#. 70-80: channel subscription errors
#: ../common/rhnException.py:149
msgid ""
"\n"
"     No matching base channel found for your system.\n"
"     "
msgstr ""

#: ../common/rhnException.py:152
msgid ""
"\n"
"     You do not have subscription permission to the designated channel.\n"
"     Please refer to your organization's channel or organization\n"
"     administrators for further details.\n"
"     "
msgstr ""

#: ../common/rhnException.py:157
msgid "You can not unsubscribe from base channel."
msgstr ""

#: ../common/rhnException.py:158
msgid "SUSE Manager or Proxy channel can not be subscribed."
msgstr ""

#. 80-90: server group errors
#: ../common/rhnException.py:161
msgid "There was an error while trying to join the system to its groups"
msgstr ""

#. 90-100: entitlement errors
#: ../common/rhnException.py:164
msgid "Unable to entitle system"
msgstr ""

#. 100-109: e-mail and uuid related faults
#: ../common/rhnException.py:167
msgid "Maximum e-mail length violation."
msgstr ""

#: ../common/rhnException.py:168
msgid "This system has been previously registered."
msgstr ""

#: ../common/rhnException.py:169
msgid "Invalid username"
msgstr ""

#. 140-159 applet errors
#: ../common/rhnException.py:172
msgid "Unable to look up server"
msgstr ""

#. 160-179: OSAD errors
#: ../common/rhnException.py:175
msgid "Required argument is missing"
msgstr ""

#. 600-699: RHEL5+ EN errors
#: ../common/rhnException.py:178
msgid "No entitlement information tied to hardware"
msgstr ""

#: ../common/rhnException.py:179
msgid "Installation number is not entitling"
msgstr ""

#. 700-799: Additional user input verification errors.
#: ../common/rhnException.py:182
msgid "Maximum username length violation"
msgstr ""

#: ../common/rhnException.py:183
msgid "Maximum password length violation"
msgstr ""

#: ../common/rhnException.py:184
msgid "This user has read only API access. Action denied."
msgstr ""

#: ../common/rhnException.py:186
msgid "System Name cannot be less than 1 character"
msgstr ""

#. 1000-1999: Proxy specific errors:
#. issued by a Proxy to the client
#: ../common/rhnException.py:190
msgid "SUSE Manager Proxy error."
msgstr ""

#: ../common/rhnException.py:191
msgid "SUSE Manager Proxy unable to login."
msgstr ""

#. issued by a SUSE Manager Server/Satellite to the proxy
#: ../common/rhnException.py:193
msgid ""
"\n"
"     SUSE Manager Proxy system ID does not match a Spacewalk Proxy Server\n"
"     in the database.\n"
"     "
msgstr ""

#: ../common/rhnException.py:197
msgid "SUSE Manager Proxy session token is invalid."
msgstr ""

#: ../common/rhnException.py:198
msgid "SUSE Manager Proxy session token has expired."
msgstr ""

#. 2000-2999: Red Hat Satellite specific errors:
#: ../common/rhnException.py:202
msgid ""
"\n"
"      user creation is not allowed via mgr_register;\n"
"     please contact your sysadmin to have your account created.\n"
"     "
msgstr ""

#: ../common/rhnException.py:206
msgid ""
"\n"
"     This SUSE Manager server is not allowed to use Inter Server Sync on "
"this server\n"
"     "
msgstr ""

#: ../common/rhnException.py:209
msgid ""
"\n"
"     Inter Server Sync is disabled on this SUSE Manager Server.\n"
"     "
msgstr ""

#. 3000-3999: XML dumper errors:
#: ../common/rhnException.py:214
msgid "Invalid datatype passed"
msgstr ""

#: ../common/rhnException.py:215
msgid "Unable to retrieve channel"
msgstr ""

#: ../common/rhnException.py:216
msgid "Unable to retrieve package"
msgstr ""

#: ../common/rhnException.py:217
msgid "Unable to retrieve erratum"
msgstr ""

#: ../common/rhnException.py:218
msgid "File is missing"
msgstr ""

#: ../common/rhnException.py:219
msgid "Function retrieval error"
msgstr ""

#: ../common/rhnException.py:220
msgid "Function execution error"
msgstr ""

#: ../common/rhnException.py:221
msgid "Missing version string"
msgstr ""

#: ../common/rhnException.py:222
msgid "Invalid version string"
msgstr ""

#: ../common/rhnException.py:223
msgid "Mismatching versions"
msgstr ""

#: ../common/rhnException.py:224
msgid "Invalid channel version"
msgstr ""

#: ../common/rhnException.py:225
msgid "No comps file for channel"
msgstr ""

#: ../common/rhnException.py:226
msgid "Unable to retrieve comps file"
msgstr ""

#. 4000 - 4999: config management errors
#: ../common/rhnException.py:229
msgid "Configuration action missing"
msgstr ""

#: ../common/rhnException.py:230
msgid "File too large"
msgstr ""

#: ../common/rhnException.py:231
msgid "File contains binary data"
msgstr ""

#: ../common/rhnException.py:232
msgid "Configuration channel is not empty"
msgstr ""

#: ../common/rhnException.py:233
msgid "Permission error"
msgstr ""

#: ../common/rhnException.py:234
msgid "Content missing for configuration file"
msgstr ""

#: ../common/rhnException.py:235
msgid "Template delimiters not specified"
msgstr ""

#: ../common/rhnException.py:236
msgid "Configuration channel does not exist"
msgstr ""

#: ../common/rhnException.py:237
msgid "Configuration channel already exists"
msgstr ""

#: ../common/rhnException.py:238
msgid "File missing from configuration channel"
msgstr ""

#: ../common/rhnException.py:239
msgid "Different revision of this file is uploaded"
msgstr ""

#: ../common/rhnException.py:240
msgid "File already uploaded to configuration channel"
msgstr ""

#: ../common/rhnException.py:241
msgid "File size exceeds remaining quota space"
msgstr ""

#: ../common/rhnException.py:242
msgid "Full path of file must be specified"
msgstr ""

#: ../common/rhnException.py:243
msgid "Invalid revision number"
msgstr ""

#: ../common/rhnException.py:244
msgid "Cannot compare files of different file type"
msgstr ""

#. 5000 - 5999: client content uploading errors
#. 5000 - 5099: crash reporting errors
#: ../common/rhnException.py:248
msgid "Crash information is invalid or incomplete"
msgstr ""

#: ../common/rhnException.py:249
msgid "Crash file information is invalid or incomplete"
msgstr ""

#: ../common/rhnException.py:250
msgid "Error composing crash directory path"
msgstr ""

#: ../common/rhnException.py:251
msgid "Error composing crash file path"
msgstr ""

#: ../common/rhnException.py:252 ../common/rhnException.py:259
msgid "Invalid content encoding"
msgstr ""

#: ../common/rhnException.py:253
msgid "Invalid crash name"
msgstr ""

#: ../common/rhnException.py:254
msgid "Crash reporting is disabled for this organization"
msgstr ""

#. 5100 - 5199: scap results reporting error
#: ../common/rhnException.py:256
msgid "SCAP results file transfer is invalid or incomplete"
msgstr ""

#: ../common/rhnException.py:257
msgid "Error composing directory path for detailed SCAP results"
msgstr ""

#: ../common/rhnException.py:258
msgid "Error composing file path for detailed SCAP results"
msgstr ""

#: ../common/rhnException.py:306
msgid ""
"\n"
"     An error has occurred while processing your request. If this problem\n"
"     persists please enter a bug report at scc.suse.com.\n"
"     If you choose to submit the bug report, please be sure to include\n"
"     details of what you were trying to do when this error occurred and\n"
"     details on how to reproduce this problem.\n"
msgstr ""

#: ../common/rhnException.py:358
#, python-format
msgid ""
"Error Message:\n"
"    %s\n"
msgstr ""

#: ../common/rhnException.py:360
#, python-format
msgid "Error Class Code: %s\n"
msgstr ""

#: ../common/rhnException.py:363
#, python-format
msgid "Error Class Info: %s\n"
msgstr ""

#: ../common/rhnException.py:365
#, python-format
msgid "Explanation: %s"
msgstr ""

#: ../common/rhnTB.py:205
#, python-format
msgid "ERROR: %s %s: %s"
msgstr ""

#: ../common/rhnTB.py:207
#, python-format
msgid "TRACEBACK: %s"
msgstr ""

#: ../satellite_tools/disk_dumper/iss.py:1294
#: ../satellite_tools/disk_dumper/iss.py:1298
#, python-format
msgid "format of %s should be at least YYYYMMDD.\n"
msgstr ""

#: ../satellite_tools/messages.py:26
#, python-format
msgid ""
"\n"
"ERROR: executing step %s. Error is:\n"
"%s\n"
msgstr ""

#: ../satellite_tools/messages.py:31
#, python-format
msgid ""
"\n"
"ERROR: there was a problem accessing the channel data from your temporary\n"
"       repository. Did you migrate all of the data from the channel ISOs\n"
"       do this directory? If so, please recheck the channels ISOs, ensure\n"
"       that you have them all, and then iteratively remount and repopulate\n"
"       the temporary repository (%s).\n"
msgstr ""

#: ../satellite_tools/messages.py:39
#, python-format
msgid ""
"\n"
"ERROR: there was a problem synchronizing the information.\n"
"       Error message: %s\n"
msgstr ""

#: ../satellite_tools/messages.py:44
#, python-format
msgid ""
"\n"
"ERROR: There was a problem communicating with the ISS Master.\n"
"       Depending on the specific error details, please review your "
"configuration,\n"
"       basic network connectivity, and/or name resolution, and try again.\n"
"       Error message: %s\n"
msgstr ""

#: ../satellite_tools/messages.py:51
#, python-format
msgid ""
"\n"
"ERROR: There was a problem communicating with the ISS Master.\n"
"       If the master satellite is older than v5.3, it does not have ISS "
"capability.\n"
"       Otherwise, depending on the specific error details, please review "
"your\n"
"       configuration, basic network connectivity, and/or name resolution, "
"and try again.\n"
"       Error message: %s\n"
msgstr ""

#: ../satellite_tools/messages.py:59
#, python-format
msgid ""
"\n"
"ERROR: a child-channel cannot be synced without its parent being synced as\n"
"       well. A parent needs to be either (a) previously synced or (b) "
"synced\n"
"       in tandem with the desired child-channel. Missing parents for this\n"
"       transaction:\n"
"       %s\n"
msgstr ""

#: ../satellite_tools/messages.py:67
#, python-format
msgid ""
"\n"
"ERROR: you are not entitled to sync a channel in this set of channels.\n"
"Please contact your SUSE Manager contact\n"
"%s"
msgstr ""

#: ../satellite_tools/messages.py:72
#, python-format
msgid "  ERROR: not enough free space (%s KB) on device."
msgstr ""

#: ../satellite_tools/messages.py:74
#, python-format
msgid "    %3d/%s Fetch successful: %s (%s bytes)"
msgstr ""

#: ../satellite_tools/messages.py:75
#, python-format
msgid "    Extinct package:  %s"
msgstr ""

#: ../satellite_tools/messages.py:76
#, python-format
msgid "   Total size: %s"
msgstr ""

#: ../satellite_tools/messages.py:77
#, python-format
msgid "      Downloaded %s of %s. Estimated remaining time: %s"
msgstr ""

#: ../satellite_tools/messages.py:78
#, python-format
msgid "    Fetch unsuccessful: %s"
msgstr ""

#: ../satellite_tools/messages.py:79
#, python-format
msgid "   RPM fetch summary: %s"
msgstr ""

#: ../satellite_tools/messages.py:80
#, python-format
msgid "       success: %d"
msgstr ""

#: ../satellite_tools/messages.py:81
#, python-format
msgid "       failed:  %d"
msgstr ""

#: ../satellite_tools/messages.py:82
#, python-format
msgid "       extinct: %d"
msgstr ""

#: ../satellite_tools/messages.py:84
#, python-format
msgid "   Retrieving / parsing *relevant* package metadata: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:85
#, python-format
msgid "   Retrieving / parsing errata data: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:86
#, python-format
msgid "   Retrieving / parsing kickstart data: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:87
#, python-format
msgid "   Retrieving / parsing kickstart tree files: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:88
#, python-format
msgid "   Importing *relevant* package metadata: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:89
msgid "   * WARNING: this may be a slow process."
msgstr ""

#: ../satellite_tools/messages.py:90
msgid "Linking packages to channels"
msgstr ""

#: ../satellite_tools/messages.py:91
#, python-format
msgid "   Importing *relevant* errata: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:92
msgid "   No new kickstartable tree to import"
msgstr ""

#: ../satellite_tools/messages.py:93
#, python-format
msgid "Importing kickstartable trees (%d)"
msgstr ""

#: ../satellite_tools/messages.py:94
#, python-format
msgid "Imported kickstartable trees (%d)"
msgstr ""

#: ../satellite_tools/reposync.py:111 ../satellite_tools/satsync.py:439
msgid "+++ sending log as an email +++"
msgstr ""

#: ../satellite_tools/reposync.py:114
#, python-format
msgid "%s sync. report from %s"
msgstr ""

#: ../satellite_tools/reposync.py:124 ../satellite_tools/satsync.py:449
msgid "+++ email requested, but there is nothing to send +++"
msgstr ""

#: ../satellite_tools/rhn_satellite_activate.py:198
#, python-format
msgid ""
"\"%s\" (specified in commandline)\n"
"could not be opened and read:\n"
"%s"
msgstr ""

#: ../satellite_tools/rhn_satellite_activate.py:205
#, python-format
msgid ""
"\"%s\" could not be opened\n"
"and/or written to:\n"
"%s"
msgstr ""

#: ../satellite_tools/satsync.py:258
#, python-format
msgid "No handler for step %s"
msgstr ""

#. Try one more time - this time it should be faster since
#. everything should be cached
#: ../satellite_tools/satsync.py:270
msgid "Environment changed, trying again..."
msgstr ""

#: ../satellite_tools/satsync.py:277
msgid "ERROR: Encountered IntegrityError: \n"
msgstr ""

#: ../satellite_tools/satsync.py:285
msgid "Repeated failures"
msgstr ""

#: ../satellite_tools/satsync.py:290
#, python-format
msgid ""
"    Import complete:\n"
"        Begin time: %s\n"
"        End time:   %s\n"
"        Elapsed:    %s\n"
"          "
msgstr ""

#: ../satellite_tools/satsync.py:311
msgid "hours"
msgstr ""

#: ../satellite_tools/satsync.py:311
msgid "minutes"
msgstr ""

#: ../satellite_tools/satsync.py:311
msgid "seconds"
msgstr ""

#: ../satellite_tools/satsync.py:357
msgid ""
"ERROR: The dump is missing package data, use --no-rpms to skip this step or "
"fix the content to include package data."
msgstr ""

#. the orgs() method doesn't exist; that's fine we just
#. won't sync the orgs
#: ../satellite_tools/satsync.py:404
msgid "The SUSE Manager master does not support syncing orgs data."
msgstr ""

#: ../satellite_tools/satsync.py:404
msgid "Skipping..."
msgstr ""

#: ../satellite_tools/satsync.py:442
#, python-format
msgid "SUSE Manager Inter Server sync. report from %s"
msgstr ""

#: ../satellite_tools/satsync.py:521
msgid " - file-system synchronization"
msgstr ""

#: ../satellite_tools/satsync.py:533 ../satellite_tools/satsync.py:541
msgid " - live synchronization"
msgstr ""

#: ../satellite_tools/satsync.py:534
#, python-brace-format
msgid ""
"ERROR: Live content synchronizing with RHN Classic Hosted is no longer "
"supported.\n"
"Please use the cdn-sync command instead unless you are attempting to sync "
"from another {PRODUCT_NAME} via Inter-Server-Sync (ISS), or from local "
"content on disk via Channel Dump ISOs."
msgstr ""

#: ../satellite_tools/satsync.py:542
#, python-format
msgid "   url: %s"
msgstr ""

#: ../satellite_tools/satsync.py:543
#, python-format
msgid "   debug/output level: %s"
msgstr ""

#: ../satellite_tools/satsync.py:553
msgid "ERROR: this server must be registered with SUSE Manager."
msgstr ""

#: ../satellite_tools/satsync.py:575
#, python-format
msgid "Retrieving / parsing %s data"
msgstr ""

#: ../satellite_tools/satsync.py:585 ../satellite_tools/satsync.py:600
msgid "*** SYSTEM INTERRUPT CALLED ***"
msgstr ""

#: ../satellite_tools/satsync.py:593
msgid "ERROR: fatal parser exception occurred "
msgstr ""

#: ../satellite_tools/satsync.py:594
#, python-format
msgid "(line: %s, col: %s msg: %s)"
msgstr ""

#: ../satellite_tools/satsync.py:598
#, python-format
msgid "ERROR: parser exception occurred: %s"
msgstr ""

#: ../satellite_tools/satsync.py:603
msgid "ERROR: exception (during parse) occurred: "
msgstr ""

#: ../satellite_tools/satsync.py:604
#, python-format
msgid ""
"   Encountered some errors with %s data (see logs (%s) for more information)"
msgstr ""

#: ../satellite_tools/satsync.py:606
#, python-format
msgid "   Encountered some errors with %s data:"
msgstr ""

#: ../satellite_tools/satsync.py:607
#, python-format
msgid "   ------- %s PARSE/IMPORT ERROR -------"
msgstr ""

#: ../satellite_tools/satsync.py:609
msgid "   ---------------------------------------"
msgstr ""

#: ../satellite_tools/satsync.py:612
#, python-format
msgid "%s data complete"
msgstr ""

#: ../satellite_tools/satsync.py:665
msgid "Retrieving / parsing channel data"
msgstr ""

#: ../satellite_tools/satsync.py:718
msgid "Channel data complete"
msgstr ""

#: ../satellite_tools/satsync.py:736
#, python-format
msgid "%10s import from %s"
msgstr ""

#: ../satellite_tools/satsync.py:739
#, python-format
msgid "%10s import from %s - %s"
msgstr ""

#: ../satellite_tools/satsync.py:743
#, python-format
msgid "%10s"
msgstr ""

#: ../satellite_tools/satsync.py:750
msgid "p"
msgstr ""

#: ../satellite_tools/satsync.py:752
msgid "."
msgstr ""

#: ../satellite_tools/satsync.py:758
msgid "   p = previously imported/synced channel"
msgstr ""

#: ../satellite_tools/satsync.py:759
msgid "   . = channel not yet imported/synced"
msgstr ""

#: ../satellite_tools/satsync.py:765
msgid "   e = channel no longer supported (end-of-service)"
msgstr ""

#: ../satellite_tools/satsync.py:767
msgid "   ? = channel label invalid --- typo?"
msgstr ""

#: ../satellite_tools/satsync.py:771
#, python-format
msgid "   %s:"
msgstr ""

#: ../satellite_tools/satsync.py:772
#, python-format
msgid "      %s %-40s %4s %s"
msgstr ""

#: ../satellite_tools/satsync.py:773
msgid "base-channels"
msgstr ""

#: ../satellite_tools/satsync.py:786 ../satellite_tools/satsync.py:1603
msgid "NONE RELEVANT"
msgstr ""

#: ../satellite_tools/satsync.py:808
msgid "end-of-service"
msgstr ""

#: ../satellite_tools/satsync.py:809
msgid "e"
msgstr ""

#: ../satellite_tools/satsync.py:815
msgid "   typos:"
msgstr ""

#: ../satellite_tools/satsync.py:816
msgid "?"
msgstr ""

#: ../satellite_tools/satsync.py:831
#, python-format
msgid "XXX: imported channels: %s"
msgstr ""

#: ../satellite_tools/satsync.py:832
#, python-format
msgid "XXX:   cached channels: %s"
msgstr ""

#: ../satellite_tools/satsync.py:837
msgid "XXX: list channels called"
msgstr ""

#: ../satellite_tools/satsync.py:855
msgid "ERROR: these channels either do not exist or are not available:"
msgstr ""

#: ../satellite_tools/satsync.py:859
#, python-format
msgid "       (to see a list of channel labels: %s --list-channels)"
msgstr ""

#: ../satellite_tools/satsync.py:904
#, python-format
msgid "   Retrieving / parsing short package metadata: %s (%s)"
msgstr ""

#: ../satellite_tools/satsync.py:965
#, python-format
msgid "Diffing package metadata (what's missing locally?): %s"
msgstr ""

#: ../satellite_tools/satsync.py:971 ../satellite_tools/satsync.py:1254
msgid "Diffing:    "
msgstr ""

#: ../satellite_tools/satsync.py:988
msgid "ERROR: incremental dump skipped"
msgstr ""

#: ../satellite_tools/satsync.py:1079
msgid "Downloading rpm packages"
msgstr ""

#: ../satellite_tools/satsync.py:1084
#, python-format
msgid "   Fetching any missing RPMs: %s (%s)"
msgstr ""

#: ../satellite_tools/satsync.py:1085 ../satellite_tools/satsync.py:1153
msgid "NONE MISSING"
msgstr ""

#: ../satellite_tools/satsync.py:1094
msgid "Processing rpm packages complete"
msgstr ""

#: ../satellite_tools/satsync.py:1121
msgid "Downloading package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1146
msgid "Downloading srpm packages"
msgstr ""

#: ../satellite_tools/satsync.py:1152
#, python-format
msgid "   Fetching any missing SRPMs: %s (%s)"
msgstr ""

#: ../satellite_tools/satsync.py:1249
#, python-format
msgid "Diffing source package metadata (what's missing locally?): %s"
msgstr ""

#: ../satellite_tools/satsync.py:1260
msgid "Downloading source package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1338 ../satellite_tools/satsync.py:2027
#, python-format
msgid "Unable to save file %s: %s"
msgstr ""

#. for
#. Retried a number of times and it still failed; log the
#. file as being failed and move on
#: ../satellite_tools/satsync.py:1345
#, python-format
msgid "Failed to fetch file %s"
msgstr ""

#: ../satellite_tools/satsync.py:1350
msgid "Downloading kickstartable trees metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1365
msgid "Downloading kickstartable trees files"
msgstr ""

#: ../satellite_tools/satsync.py:1504
#, python-format
msgid "Grabbing all patches for channel %s"
msgstr ""

#: ../satellite_tools/satsync.py:1554
msgid "Downloading patch data"
msgstr ""

#: ../satellite_tools/satsync.py:1556
msgid "Forcing download of all patch data for requested channels."
msgstr ""

#: ../satellite_tools/satsync.py:1571
msgid "Downloading patch data complete"
msgstr ""

#: ../satellite_tools/satsync.py:1576 ../satellite_tools/satsync.py:1597
msgid "Downloading:"
msgstr ""

#: ../satellite_tools/satsync.py:1579
msgid " - complete"
msgstr ""

#: ../satellite_tools/satsync.py:1624
msgid "Importing source package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1627
msgid "Importing package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1635
msgid "Importing:  "
msgstr ""

#. not in the cache
#: ../satellite_tools/satsync.py:1703
msgid ""
"Package Not Found in Cache, Clear the Cache "
"to                                  Regenerate it."
msgstr ""

#: ../satellite_tools/satsync.py:1709
msgid "Importing channel patches"
msgstr ""

#: ../satellite_tools/satsync.py:1714
#, python-format
msgid "Importing %s patches for channel %s."
msgstr ""

#. Incomplete configuration
#: ../satellite_tools/satsync.py:2113
msgid "ERROR: server.mount_point not set in the configuration file"
msgstr ""

#: ../satellite_tools/satsync.py:2117
#, python-format
msgid "ERROR: server.mount_point %s do not exist"
msgstr ""

#: ../satellite_tools/satsync.py:2122
#, python-format
msgid "ERROR: path under server.mount_point (%s)  do not exist"
msgstr ""

#: ../satellite_tools/satsync.py:2199
#, python-format
msgid "Commandline: %s"
msgstr ""

#: ../satellite_tools/satsync.py:2202
#, python-format
msgid ""
"DEBUG ONLY: max. batch-size for XML/database-import processing (1..%s).\"man "
"satellite-sync\" for more information."
msgstr ""

#: ../satellite_tools/satsync.py:2205
msgid "alternative SSL CA Cert (fullpath to cert file)"
msgstr ""

#: ../satellite_tools/satsync.py:2207
msgid "process data for this channel only"
msgstr ""

#: ../satellite_tools/satsync.py:2209
msgid ""
"disk dump will be considered to be a full export; see \"man satellite-sync\" "
"for more information."
msgstr ""

#: ../satellite_tools/satsync.py:2212
msgid "existing custom channels will also be synced (unless -c is used)"
msgstr ""

#: ../satellite_tools/satsync.py:2214
#, python-format
msgid ""
"override debug level set in /etc/rhn/rhn.conf (which is currently set at %s)."
msgstr ""

#: ../satellite_tools/satsync.py:2216
#, python-format
msgid "requested version of XML dump (default: %s)"
msgstr ""

#: ../satellite_tools/satsync.py:2218
msgid "e-mail a report of what was synced/imported"
msgstr ""

#: ../satellite_tools/satsync.py:2220
msgid "forcibly process all (not a diff of) patch metadata"
msgstr ""

#: ../satellite_tools/satsync.py:2222
msgid "Do not use an http proxy under any circumstances."
msgstr ""

#: ../satellite_tools/satsync.py:2224
msgid "alternative http proxy (hostname:port)"
msgstr ""

#: ../satellite_tools/satsync.py:2226
msgid "alternative http proxy username"
msgstr ""

#: ../satellite_tools/satsync.py:2228
msgid "alternative http proxy password"
msgstr ""

#: ../satellite_tools/satsync.py:2230
msgid "parent SUSE Manager to import content from"
msgstr ""

#: ../satellite_tools/satsync.py:2232
msgid "list all available channels and exit"
msgstr ""

#: ../satellite_tools/satsync.py:2234
msgid "help on all error codes mgr-inter-sync returns"
msgstr ""

#: ../satellite_tools/satsync.py:2236
msgid "source mount point for import - disk update only"
msgstr ""

#: ../satellite_tools/satsync.py:2238
msgid "do not process patch data"
msgstr ""

#: ../satellite_tools/satsync.py:2240
msgid "do not process kickstart data (provisioning only)"
msgstr ""

#: ../satellite_tools/satsync.py:2242
msgid "do not process full package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:2244
msgid "do not download, or process any RPMs"
msgstr ""

#: ../satellite_tools/satsync.py:2246
msgid "turn off SSL (not recommended)"
msgstr ""

#: ../satellite_tools/satsync.py:2248
msgid "org to which the sync imports data. defaults to the admin account"
msgstr ""

#: ../satellite_tools/satsync.py:2250
msgid "print the configuration and exit"
msgstr ""

#: ../satellite_tools/satsync.py:2252
msgid "alternative server with which to connect (hostname)"
msgstr ""

#: ../satellite_tools/satsync.py:2254
msgid "synchronize to this step (man satellite-sync for more info)"
msgstr ""

#: ../satellite_tools/satsync.py:2256
msgid "write complete data to tempfile before streaming to remainder of app"
msgstr ""

#: ../satellite_tools/satsync.py:2258
msgid "DEBUG ONLY: alternative path to digital system id"
msgstr ""

#: ../satellite_tools/satsync.py:2260
msgid "alternative email address(es) for sync output (--email option)"
msgstr ""

#: ../satellite_tools/satsync.py:2262
msgid "do not remove rpms when importing from local dump"
msgstr ""

#: ../satellite_tools/satsync.py:2264
msgid ""
"the fully qualified domain name of the master Satellite. Valid with --mount-"
"point only. Required if you want to import org data and channel permissions."
msgstr ""

#: ../satellite_tools/satsync.py:2274
#, python-format
msgid "ERROR: these arguments make no sense in this context (try --help): %s"
msgstr ""

#. An SQL error is fatal... crash and burn
#: ../satellite_tools/satsync.py:2286
#, python-format
msgid "ERROR: Can't connect to the database: %s"
msgstr ""

#: ../satellite_tools/satsync.py:2287
msgid "ERROR: Check if your database is running."
msgstr ""

#: ../satellite_tools/satsync.py:2322
#, python-format
msgid "ERROR: --debug-level takes an in integer value within the range %s."
msgstr ""

#: ../satellite_tools/satsync.py:2324
msgid "  0  - little logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2325
msgid "  1  - minimal logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2326
msgid "  2  - normal level of logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2327
msgid "  3  - lots of logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2328
msgid "  4+ - excessive logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2341
msgid "ERROR: The --master option is only valid with the --mount-point option"
msgstr ""

#: ../satellite_tools/satsync.py:2351
#, python-format
msgid "ERROR: Unable to lookup Org Id %s"
msgstr ""

#: ../satellite_tools/satsync.py:2360
msgid ""
"WARNING: --list-channels option overrides any --step option. --step ignored."
msgstr ""

#: ../satellite_tools/satsync.py:2375
#, python-format
msgid ""
"ERROR: '%s' is not a valid step. See 'man mgr-inter-sync' for more detail."
msgstr ""

#: ../satellite_tools/satsync.py:2407
msgid ""
"ERROR: No channels currently imported; try mgr-inter-sync --list-channels; "
"then mgr-inter-sync -c chn0 -c chn1..."
msgstr ""

#. int(None) --> TypeError
#. int('a')  --> ValueError
#: ../satellite_tools/satsync.py:2457 ../satellite_tools/satsync.py:2461
msgid "ERROR: --batch-size must have a value within the range: 1..50"
msgstr ""

#: ../satellite_tools/satsync.py:2469
#, python-format
msgid "ERROR: no such directory %s"
msgstr ""

#: ../satellite_tools/satsync.py:2474
msgid "Error Codes: Returned codes means:"
msgstr ""

#: ../satellite_tools/satsync.py:2475
msgid " -1  - Could not lock file or KeyboardInterrupt or SystemExit"
msgstr ""

#: ../satellite_tools/satsync.py:2476
msgid "  0  - User interrupted or intentional exit"
msgstr ""

#: ../satellite_tools/satsync.py:2477
msgid "  1  - attempting to run more than one instance of mgr-inter-sync."
msgstr ""

#: ../satellite_tools/satsync.py:2478
msgid "  2  - Unable to find synchronization tools."
msgstr ""

#: ../satellite_tools/satsync.py:2479
msgid "  3  - a general socket exception occurred"
msgstr ""

#: ../satellite_tools/satsync.py:2480
msgid "  4  - an SSL error occurred. Recheck your SSL settings."
msgstr ""

#: ../satellite_tools/satsync.py:2481
msgid "  5  - ISS error"
msgstr ""

#: ../satellite_tools/satsync.py:2482
msgid "  6  - unhandled exception occurred"
msgstr ""

#: ../satellite_tools/satsync.py:2483
msgid "  7  - unknown sync error"
msgstr ""

#: ../satellite_tools/satsync.py:2484
msgid "  8  - ERROR: must be root to execute"
msgstr ""

#: ../satellite_tools/satsync.py:2485
msgid "  9  - rpclib fault during synchronization init"
msgstr ""

#: ../satellite_tools/satsync.py:2486
msgid "  10 - synchronization init error"
msgstr ""

#: ../satellite_tools/satsync.py:2487
msgid "  11 - Error parsing XML stream"
msgstr ""

#: ../satellite_tools/satsync.py:2488
msgid "  12 - Channel do not exist"
msgstr ""

#: ../satellite_tools/satsync.py:2489
msgid "  13 - SQL error during importing package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:2490
msgid "  14 - SQL error during linking channel packages"
msgstr ""

#: ../satellite_tools/satsync.py:2491
msgid "  15 - SQL error during xml processing"
msgstr ""

#: ../satellite_tools/satsync.py:2492
msgid "  16 - server.mount_point not set in the configuration file"
msgstr ""

#: ../satellite_tools/satsync.py:2493
msgid ""
"  17 - SQL error during retrieving the channels already imported in the SUSE "
"Manager database"
msgstr ""

#: ../satellite_tools/satsync.py:2494
msgid "  18 - Wrong db connection string in rhn.conf"
msgstr ""

#: ../satellite_tools/satsync.py:2495
msgid "  19 - Bad arguments"
msgstr ""

#: ../satellite_tools/satsync.py:2496
msgid "  20 - Could not connect to db."
msgstr ""

#: ../satellite_tools/satsync.py:2497
msgid "  21 - Bad debug level"
msgstr ""

#: ../satellite_tools/satsync.py:2498
msgid "  22 - Not valid step"
msgstr ""

#: ../satellite_tools/satsync.py:2499
msgid "  24 - no such file"
msgstr ""

#: ../satellite_tools/satsync.py:2500
msgid "  25 - no such directory"
msgstr ""

#: ../satellite_tools/satsync.py:2501
msgid "  26 - mount_point does not exist"
msgstr ""

#: ../satellite_tools/satsync.py:2502
msgid "  27 - No such org"
msgstr ""

#: ../satellite_tools/satsync.py:2503
msgid "  28 - error: --master is only valid with --mount-point"
msgstr ""

#: ../satellite_tools/satsync.py:2510
#, python-format
msgid "ERROR: unknown dump version, try one of %s"
msgstr ""
  07070100000059000081B40000000000000000000000016290A0C10000B6F2000000000000000000000000000000000000001B00000000spacewalk-backend/po/ar.po    # SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
#
# Translators:
# Mohammad Ghoniem <Mohammad.Ghoniem@laposte.net>, 2004.
# Munzir Taha <munzir@kacst.edu.sa>, 2004.
# Munzir Taha <munzirtaha@newhorizons.com.sa>, 2005.
msgid ""
msgstr ""
"Project-Id-Version: Spacewalk\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-10-16 13:34+0200\n"
"PO-Revision-Date: 2011-03-04 16:08+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Arabic <trans-ar@lists.fedoraproject.org>\n"
"Language: ar\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 "
"&& n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\n"

#: ../server/apacheAuth.py:66
#, python-format
msgid "incomplete proxy authentication token: %s"
msgstr ""

#: ../server/apacheAuth.py:84
#, python-format
msgid "Sent proxy signature %s does not match ours %s."
msgstr ""

#: ../server/apacheAuth.py:119
msgid "declined proxy authentication"
msgstr ""

#: ../server/apacheRequest.py:59
#, python-format
msgid "Invalid request received (%s)."
msgstr ""

#: ../server/apacheRequest.py:120
#, python-format
msgid ""
"IMPORTANT MESSAGE FOLLOWS:\n"
"%s"
msgstr ""

#: ../server/apacheRequest.py:149
#, python-format
msgid ""
"While running '%s': caught\n"
"%s : %s\n"
msgstr ""

#: ../server/apacheRequest.py:606
#, python-format
msgid "Invalid URI %s"
msgstr ""

#: ../server/configFilesHandler.py:129 ../server/handlers/app/packages.py:192
#: ../server/handlers/xmlrpc/registration.py:215
#: ../server/handlers/xmlrpc/registration.py:1168
#: ../server/handlers/xmlrpc/registration.py:1307
#, python-format
msgid ""
"\n"
"                   %s Account has been deactivated on this server.\n"
"                   Please contact your Org administrator for more help."
msgstr ""

#: ../server/handlers/applet/applet.py:78
#, python-brace-format
msgid "Your system was not found in the {PRODUCT_NAME} database"
msgstr ""

#: ../server/handlers/sat/auth.py:45
msgid "ISS is disabled on this server."
msgstr ""

#: ../server/handlers/sat/auth.py:50
#, python-format
msgid "Server \"%s\" is not enabled for ISS."
msgstr ""

#: ../server/handlers/xmlrpc/errata.py:64
#, python-format
msgid "Expected a package name, not: %s"
msgstr ""

#: ../server/handlers/xmlrpc/errata.py:115
#, python-format
msgid "Expected a package, not: %s"
msgstr ""

#: ../server/handlers/xmlrpc/proxy.py:65
#, python-format
msgid "SUSE Manager Proxy service not enabled for server profile: \"%s\""
msgstr ""

#: ../server/handlers/xmlrpc/proxy.py:85
msgid "Invalid session key"
msgstr ""

#: ../server/handlers/xmlrpc/proxy.py:93
msgid "This server ID no longer exists"
msgstr ""

#: ../server/handlers/xmlrpc/queue.py:433
#, python-format
msgid "Invalid action value type %s (%s)"
msgstr ""

#: ../server/handlers/xmlrpc/queue.py:464
#, python-format
msgid "Action %s does not belong to server %s"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:194
msgid "Required data missing"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:198
msgid "Required members missing"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:207
msgid "Attempt to register a system to an invalid username"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:839
msgid "Invalid system release version requested"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1063
msgid ""
"Unable to find a valid network interface, both ipaddr and ip6addr not found."
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1115
#, python-brace-format
msgid "{PRODUCT_NAME} Welcome Message"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1125
msgid "Privacy Statement"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1146
msgid "Expected a dictionary as a product argument"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1374
#, python-format
msgid "Invalid value '%s' for %s (%s)"
msgstr ""

#: ../server/handlers/xmlrpc/scap.py:104
msgid "Invalid system_id/action_id pair."
msgstr ""

#: ../server/handlers/xmlrpc/up2date.py:233
#, python-format
msgid "Invalid value %s (%s)"
msgstr ""

#: ../server/importlib/userAuth.py:98
msgid "You are not authorized to manage packages in the null org"
msgstr ""

#: ../server/importlib/userAuth.py:103
#, python-format
msgid "You are not allowed to manage packages in the %s org"
msgstr ""

#: ../server/importlib/userAuth.py:121
msgid "You are not allowed to perform administrative tasks"
msgstr ""

#: ../server/importlib/userAuth.py:144
#, python-format
msgid ""
"You are not allowed to manage channel %s, or that channel does not exist"
msgstr ""

#: ../server/importlib/userAuth.py:204
#, python-format
msgid ""
"\n"
"               %s Account has been deactivated on this server.\n"
"               Please contact your Org administrator for more help."
msgstr ""

#: ../server/rhnChannel.py:1992
#, python-format
msgid ""
"Your account does not have access to any channels matching "
"(release='%(release)s', arch='%(arch)s')%(www_activation)s"
msgstr ""

#: ../server/rhnChannel.py:2002
msgid ""
"\n"
"If you have a registration number, please register with it first at http://"
"www.redhat.com/apps/activate/ and then try again.\n"
"\n"
msgstr ""

#: ../server/rhnChannel.py:2012
#, python-format
msgid "Insufficient subscription permissions for release (%s, %s"
msgstr ""

#. Various messages that can be reused
#.
#. bretm 02/07/2007 -- when we have better old-client documentation, probably
#. will be safe to get rid of all this crap
#: ../server/rhnChannel.py:2276 ../server/rhnChannel.py:2287
#: ../server/rhnChannel.py:2302
msgid "System Registered but Inactive"
msgstr ""

#: ../server/rhnChannel.py:2277
#, python-format
msgid ""
"\n"
"Invalid Architecture and OS release combination (%s, %s).\n"
"Your system has been registered, but will not receive updates\n"
"because it is not subscribed to a channel. If you have not yet\n"
"activated your product for service, please visit our website at:\n"
"\n"
"     http://www.redhat.com/apps/activate/\n"
"\n"
"...to activate your product."
msgstr ""

#: ../server/rhnChannel.py:2288
#, python-format
msgid ""
"\n"
"Invalid Architecture and OS release combination (%s, %s).\n"
"Your system has been registered, but will not receive updates\n"
"because it could not be subscribed to a base channel.\n"
"Please contact your organization administrator for assistance.\n"
msgstr ""

#: ../server/rhnChannel.py:2295
#, python-format
msgid ""
"\n"
"  This system has been successfully registered, but is not yet entitled\n"
"  to service.  To entitle this system to service, login to the web site at:\n"
"\n"
"  %(entitlement_url)s\n"
msgstr ""

#: ../server/rhnChannel.py:2303
#, python-format
msgid ""
"\n"
"  This system has been successfully registered, but no service entitlements\n"
"  were available.  To entitle this system to service, login to the web site "
"at:\n"
"\n"
"  %(entitlement_url)s\n"
msgstr ""

#: ../server/rhnHandler.py:62
msgid "Please run rhn_register as root on this client"
msgstr ""

#: ../server/rhnHandler.py:75
#, python-format
msgid "Service not enabled for system profile: \"%s\""
msgstr ""

#: ../server/rhnPackage.py:49 ../server/rhnPackage.py:87
#: ../server/rhnPackage.py:107 ../server/rhnPackage.py:158
#, python-format
msgid "Invalid RPM package %s requested"
msgstr ""

#: ../server/rhnPackage.py:112
msgid "Package not found"
msgstr ""

#: ../server/rhnServer/server_class.py:97
#, python-format
msgid "Architecture `%s' is not supported"
msgstr ""

#: ../server/rhnServer/server_token.py:78
#, python-format
msgid "Token `%s' has more than one base channel assigned"
msgstr ""

#: ../server/rhnServer/server_token.py:80
msgid "Conflicting base channels"
msgstr ""

#: ../server/rhnServer/server_token.py:190
#, python-format
msgid "Failed to add server to group %s"
msgstr ""

#: ../server/rhnServer/server_token.py:503
#, python-format
msgid "Maximum usage count of %s reached"
msgstr ""

#: ../server/rhnServer/server_token.py:744
msgid ""
"Stacking of re-registration tokens with different base entitlements is not "
"supported"
msgstr ""

#: ../server/rhnServer/server_token.py:811
#, python-format
msgid "Could not find token '%s'"
msgstr ""

#. Cannot use activation keys from different orgs
#: ../server/rhnServer/server_token.py:843
msgid "Tokens from mismatching orgs"
msgstr ""

#. Two tokens with different kickstart sessions
#: ../server/rhnServer/server_token.py:853
msgid "Kickstart session mismatch"
msgstr ""

#: ../server/rhnServer/server_token.py:877
msgid "Stacking of re-registration tokens is not supported"
msgstr ""

#: ../server/rhnUser.py:289 ../server/rhnUser.py:292
msgid "Invalid username/password combination"
msgstr ""

#. nope, not reserved either
#: ../server/rhnUser.py:467
#, python-format
msgid "Username `%s' has not been reserved"
msgstr ""

#. New accounts have to specify an e-mail address
#: ../server/rhnUser.py:473
msgid "E-mail address not specified"
msgstr ""

#: ../server/rhnUser.py:509
#, python-format
msgid "username should be at least %d characters"
msgstr ""

#: ../server/rhnUser.py:512
#, python-format
msgid "username should be less than %d characters"
msgstr ""

#: ../server/rhnUser.py:523
#, python-format
msgid "username = `%s', invalid character `%s'"
msgstr ""

#: ../server/rhnUser.py:542
#, python-format
msgid "Please limit your e-mail address to %s chars"
msgstr ""

#: ../server/rhnUser.py:623
#, python-format
msgid "password must be at least %d characters"
msgstr ""

#: ../server/rhnUser.py:626
#, python-format
msgid "Password must be shorter than %d characters"
msgstr ""

#: ../server/rhnUser.py:644
#, python-format
msgid "password contains character `%s'"
msgstr ""

#: ../server/rhnUser.py:651
#, python-format
msgid "username should be at least %d characters long"
msgstr ""

#: ../server/rhnUser.py:662
#, python-format
msgid "Cannot register usernames ending with %s"
msgstr ""

#. 0-999: Red Hat client/client-like interaction errors:
#: ../common/rhnException.py:53
msgid "This does not appear to be a valid username."
msgstr ""

#: ../common/rhnException.py:54
msgid "Invalid username and password combination."
msgstr ""

#: ../common/rhnException.py:55
msgid "This login is already taken, or the password is incorrect."
msgstr ""

#: ../common/rhnException.py:56
msgid "Permission denied."
msgstr ""

#: ../common/rhnException.py:57
msgid "Object not found."
msgstr ""

#: ../common/rhnException.py:58
msgid "Invalid System Digital ID."
msgstr ""

#: ../common/rhnException.py:59
msgid "Invalid System Credentials."
msgstr ""

#: ../common/rhnException.py:60
msgid "Could not retrieve user data from database."
msgstr ""

#: ../common/rhnException.py:61
msgid "Valid username required."
msgstr ""

#: ../common/rhnException.py:62
msgid "Valid password required."
msgstr ""

#: ../common/rhnException.py:63
msgid "Minimum username length violation."
msgstr ""

#: ../common/rhnException.py:64
msgid "Minimum password length violation."
msgstr ""

#: ../common/rhnException.py:65
msgid "The username contains invalid characters."
msgstr ""

#: ../common/rhnException.py:66
msgid "File not found."
msgstr ""

#: ../common/rhnException.py:67
msgid "Architecture and OS version combination is not supported."
msgstr ""

#: ../common/rhnException.py:68
msgid "Could not retrieve system data from database."
msgstr ""

#: ../common/rhnException.py:69
msgid "Invalid arguments passed to function."
msgstr ""

#: ../common/rhnException.py:70
msgid "Unable to retrieve requested entry."
msgstr ""

#: ../common/rhnException.py:71
msgid "Could not update database entry."
msgstr ""

#: ../common/rhnException.py:72
msgid "Unsupported server architecture."
msgstr ""

#: ../common/rhnException.py:73
#, python-format
msgid ""
"\n"
"     The anonymous server functionality is no longer available.\n"
"\n"
"     Please re-register this system by running mgr_register as root.\n"
"     Please visit https://%(hostname)s/rhn/systems/SystemEntitlements.do\n"
"     or login at https://%(hostname)s, and from the \"Overview\" tab,\n"
"     select \"Subscription Management\" to enable the service for this "
"system.\n"
"     "
msgstr ""

#: ../common/rhnException.py:81
msgid "Record not available in the database."
msgstr ""

#: ../common/rhnException.py:82
msgid "Invalid value for entry."
msgstr ""

#: ../common/rhnException.py:83
#, python-format
msgid ""
"\n"
"     This system does not have a valid entitlement for SUSE Manager.\n"
"     Please visit https://%(hostname)s/rhn/systems/SystemEntitlements.do\n"
"     or login at https://%(hostname)s, and from the \"Overview\" tab,\n"
"     select \"Subscription Management\" to enable the service for this "
"system.\n"
"     "
msgstr ""

#: ../common/rhnException.py:89
msgid "Channel error"
msgstr ""

#: ../common/rhnException.py:90
msgid "Client session token is invalid."
msgstr ""

#: ../common/rhnException.py:91
msgid "Client session token has expired."
msgstr ""

#: ../common/rhnException.py:92
msgid "You are not authorized to retrieve the requested object."
msgstr ""

#: ../common/rhnException.py:93
msgid "Invalid action"
msgstr ""

#: ../common/rhnException.py:94
msgid "You are not allowed to perform administrative tasks on this system."
msgstr ""

#: ../common/rhnException.py:96
msgid "The system is already subscribed to the specified channel."
msgstr ""

#: ../common/rhnException.py:97
msgid "The system is not currently subscribed to the specified channel."
msgstr ""

#: ../common/rhnException.py:98
msgid "The specified channel does not exist."
msgstr ""

#: ../common/rhnException.py:99
msgid "Invalid channel version."
msgstr ""

#: ../common/rhnException.py:100
msgid ""
"\n"
"     User group membership limits exceeded.\n"
"\n"
"     The current settings for your account do not allow you to add another\n"
"     user account. Please check with the organization administrator for "
"your\n"
"     account if the maximum number of users allowed to subscribe to server "
"needs\n"
"     to be changed.\n"
"     "
msgstr ""

#: ../common/rhnException.py:108
msgid ""
"\n"
"     System group membership limits exceeded.\n"
"\n"
"     The current settings for your account do not allow you to add another\n"
"     system profile. Please check with the organization administrator for "
"your\n"
"     account for modifying the maximum number of system profiles that can "
"be\n"
"     subscribed to your account.\n"
"     "
msgstr ""

#: ../common/rhnException.py:116
msgid ""
"\n"
"     Invalid architecture.\n"
"\n"
"     The architecture of the package is not supported by\n"
"     "
msgstr ""

#: ../common/rhnException.py:121
msgid "Invalid RPM header"
msgstr ""

#: ../common/rhnException.py:122
msgid ""
"\n"
"    This system is already registered as a Salt Minion. If you want to "
"register it as a traditional client\n"
"    please delete it first via the web UI or API and then register it using "
"the traditional tools.\n"
"    "
msgstr ""

#. For the uploading tools
#: ../common/rhnException.py:127
msgid "Invalid information uploaded to the server"
msgstr ""

#: ../common/rhnException.py:128
msgid "Error uploading network interfaces configuration."
msgstr ""

#: ../common/rhnException.py:129
msgid ""
"\n"
"     Package Upload Failed due to uniqueness constraint violation.\n"
"     Make sure the package does not have any duplicate dependencies or\n"
"     does not already exists on the server\n"
"     "
msgstr ""

#: ../common/rhnException.py:134
msgid ""
"\n"
"     The --force rhnpush option is disabled on this server.\n"
"     Please contact your SUSE Manager administrator for more help.\n"
"     "
msgstr ""

#. 60-70: token errors
#: ../common/rhnException.py:140
msgid ""
"\n"
"     The activation token specified could not be found on the server.\n"
"     Please retry with a valid key.\n"
"     "
msgstr ""

#: ../common/rhnException.py:144
msgid "Too many systems registered using this registration token"
msgstr ""

#: ../common/rhnException.py:145
msgid "Token contains invalid, obsoleted or insufficient settings"
msgstr ""

#: ../common/rhnException.py:146
msgid "Conflicting activation tokens"
msgstr ""

#. 70-80: channel subscription errors
#: ../common/rhnException.py:149
msgid ""
"\n"
"     No matching base channel found for your system.\n"
"     "
msgstr ""

#: ../common/rhnException.py:152
msgid ""
"\n"
"     You do not have subscription permission to the designated channel.\n"
"     Please refer to your organization's channel or organization\n"
"     administrators for further details.\n"
"     "
msgstr ""

#: ../common/rhnException.py:157
msgid "You can not unsubscribe from base channel."
msgstr ""

#: ../common/rhnException.py:158
msgid "SUSE Manager or Proxy channel can not be subscribed."
msgstr ""

#. 80-90: server group errors
#: ../common/rhnException.py:161
msgid "There was an error while trying to join the system to its groups"
msgstr ""

#. 90-100: entitlement errors
#: ../common/rhnException.py:164
msgid "Unable to entitle system"
msgstr ""

#. 100-109: e-mail and uuid related faults
#: ../common/rhnException.py:167
msgid "Maximum e-mail length violation."
msgstr ""

#: ../common/rhnException.py:168
msgid "This system has been previously registered."
msgstr ""

#: ../common/rhnException.py:169
msgid "Invalid username"
msgstr ""

#. 140-159 applet errors
#: ../common/rhnException.py:172
msgid "Unable to look up server"
msgstr ""

#. 160-179: OSAD errors
#: ../common/rhnException.py:175
msgid "Required argument is missing"
msgstr ""

#. 600-699: RHEL5+ EN errors
#: ../common/rhnException.py:178
msgid "No entitlement information tied to hardware"
msgstr ""

#: ../common/rhnException.py:179
msgid "Installation number is not entitling"
msgstr ""

#. 700-799: Additional user input verification errors.
#: ../common/rhnException.py:182
msgid "Maximum username length violation"
msgstr ""

#: ../common/rhnException.py:183
msgid "Maximum password length violation"
msgstr ""

#: ../common/rhnException.py:184
msgid "This user has read only API access. Action denied."
msgstr ""

#: ../common/rhnException.py:186
msgid "System Name cannot be less than 1 character"
msgstr ""

#. 1000-1999: Proxy specific errors:
#. issued by a Proxy to the client
#: ../common/rhnException.py:190
msgid "SUSE Manager Proxy error."
msgstr ""

#: ../common/rhnException.py:191
msgid "SUSE Manager Proxy unable to login."
msgstr ""

#. issued by a SUSE Manager Server/Satellite to the proxy
#: ../common/rhnException.py:193
msgid ""
"\n"
"     SUSE Manager Proxy system ID does not match a Spacewalk Proxy Server\n"
"     in the database.\n"
"     "
msgstr ""

#: ../common/rhnException.py:197
msgid "SUSE Manager Proxy session token is invalid."
msgstr ""

#: ../common/rhnException.py:198
msgid "SUSE Manager Proxy session token has expired."
msgstr ""

#. 2000-2999: Red Hat Satellite specific errors:
#: ../common/rhnException.py:202
msgid ""
"\n"
"      user creation is not allowed via mgr_register;\n"
"     please contact your sysadmin to have your account created.\n"
"     "
msgstr ""

#: ../common/rhnException.py:206
msgid ""
"\n"
"     This SUSE Manager server is not allowed to use Inter Server Sync on "
"this server\n"
"     "
msgstr ""

#: ../common/rhnException.py:209
msgid ""
"\n"
"     Inter Server Sync is disabled on this SUSE Manager Server.\n"
"     "
msgstr ""

#. 3000-3999: XML dumper errors:
#: ../common/rhnException.py:214
msgid "Invalid datatype passed"
msgstr ""

#: ../common/rhnException.py:215
msgid "Unable to retrieve channel"
msgstr ""

#: ../common/rhnException.py:216
msgid "Unable to retrieve package"
msgstr ""

#: ../common/rhnException.py:217
msgid "Unable to retrieve erratum"
msgstr ""

#: ../common/rhnException.py:218
msgid "File is missing"
msgstr ""

#: ../common/rhnException.py:219
msgid "Function retrieval error"
msgstr ""

#: ../common/rhnException.py:220
msgid "Function execution error"
msgstr ""

#: ../common/rhnException.py:221
msgid "Missing version string"
msgstr ""

#: ../common/rhnException.py:222
msgid "Invalid version string"
msgstr ""

#: ../common/rhnException.py:223
msgid "Mismatching versions"
msgstr ""

#: ../common/rhnException.py:224
msgid "Invalid channel version"
msgstr ""

#: ../common/rhnException.py:225
msgid "No comps file for channel"
msgstr ""

#: ../common/rhnException.py:226
msgid "Unable to retrieve comps file"
msgstr ""

#. 4000 - 4999: config management errors
#: ../common/rhnException.py:229
msgid "Configuration action missing"
msgstr ""

#: ../common/rhnException.py:230
msgid "File too large"
msgstr ""

#: ../common/rhnException.py:231
msgid "File contains binary data"
msgstr ""

#: ../common/rhnException.py:232
msgid "Configuration channel is not empty"
msgstr ""

#: ../common/rhnException.py:233
msgid "Permission error"
msgstr ""

#: ../common/rhnException.py:234
msgid "Content missing for configuration file"
msgstr ""

#: ../common/rhnException.py:235
msgid "Template delimiters not specified"
msgstr ""

#: ../common/rhnException.py:236
msgid "Configuration channel does not exist"
msgstr ""

#: ../common/rhnException.py:237
msgid "Configuration channel already exists"
msgstr ""

#: ../common/rhnException.py:238
msgid "File missing from configuration channel"
msgstr ""

#: ../common/rhnException.py:239
msgid "Different revision of this file is uploaded"
msgstr ""

#: ../common/rhnException.py:240
msgid "File already uploaded to configuration channel"
msgstr ""

#: ../common/rhnException.py:241
msgid "File size exceeds remaining quota space"
msgstr ""

#: ../common/rhnException.py:242
msgid "Full path of file must be specified"
msgstr ""

#: ../common/rhnException.py:243
msgid "Invalid revision number"
msgstr ""

#: ../common/rhnException.py:244
msgid "Cannot compare files of different file type"
msgstr ""

#. 5000 - 5999: client content uploading errors
#. 5000 - 5099: crash reporting errors
#: ../common/rhnException.py:248
msgid "Crash information is invalid or incomplete"
msgstr ""

#: ../common/rhnException.py:249
msgid "Crash file information is invalid or incomplete"
msgstr ""

#: ../common/rhnException.py:250
msgid "Error composing crash directory path"
msgstr ""

#: ../common/rhnException.py:251
msgid "Error composing crash file path"
msgstr ""

#: ../common/rhnException.py:252 ../common/rhnException.py:259
msgid "Invalid content encoding"
msgstr ""

#: ../common/rhnException.py:253
msgid "Invalid crash name"
msgstr ""

#: ../common/rhnException.py:254
msgid "Crash reporting is disabled for this organization"
msgstr ""

#. 5100 - 5199: scap results reporting error
#: ../common/rhnException.py:256
msgid "SCAP results file transfer is invalid or incomplete"
msgstr ""

#: ../common/rhnException.py:257
msgid "Error composing directory path for detailed SCAP results"
msgstr ""

#: ../common/rhnException.py:258
msgid "Error composing file path for detailed SCAP results"
msgstr ""

#: ../common/rhnException.py:306
msgid ""
"\n"
"     An error has occurred while processing your request. If this problem\n"
"     persists please enter a bug report at scc.suse.com.\n"
"     If you choose to submit the bug report, please be sure to include\n"
"     details of what you were trying to do when this error occurred and\n"
"     details on how to reproduce this problem.\n"
msgstr ""

#: ../common/rhnException.py:358
#, python-format
msgid ""
"Error Message:\n"
"    %s\n"
msgstr ""

#: ../common/rhnException.py:360
#, python-format
msgid "Error Class Code: %s\n"
msgstr ""

#: ../common/rhnException.py:363
#, python-format
msgid "Error Class Info: %s\n"
msgstr ""

#: ../common/rhnException.py:365
#, python-format
msgid "Explanation: %s"
msgstr ""

#: ../common/rhnTB.py:205
#, python-format
msgid "ERROR: %s %s: %s"
msgstr ""

#: ../common/rhnTB.py:207
#, python-format
msgid "TRACEBACK: %s"
msgstr ""

#: ../satellite_tools/disk_dumper/iss.py:1294
#: ../satellite_tools/disk_dumper/iss.py:1298
#, python-format
msgid "format of %s should be at least YYYYMMDD.\n"
msgstr ""

#: ../satellite_tools/messages.py:26
#, python-format
msgid ""
"\n"
"ERROR: executing step %s. Error is:\n"
"%s\n"
msgstr ""

#: ../satellite_tools/messages.py:31
#, python-format
msgid ""
"\n"
"ERROR: there was a problem accessing the channel data from your temporary\n"
"       repository. Did you migrate all of the data from the channel ISOs\n"
"       do this directory? If so, please recheck the channels ISOs, ensure\n"
"       that you have them all, and then iteratively remount and repopulate\n"
"       the temporary repository (%s).\n"
msgstr ""

#: ../satellite_tools/messages.py:39
#, python-format
msgid ""
"\n"
"ERROR: there was a problem synchronizing the information.\n"
"       Error message: %s\n"
msgstr ""

#: ../satellite_tools/messages.py:44
#, python-format
msgid ""
"\n"
"ERROR: There was a problem communicating with the ISS Master.\n"
"       Depending on the specific error details, please review your "
"configuration,\n"
"       basic network connectivity, and/or name resolution, and try again.\n"
"       Error message: %s\n"
msgstr ""

#: ../satellite_tools/messages.py:51
#, python-format
msgid ""
"\n"
"ERROR: There was a problem communicating with the ISS Master.\n"
"       If the master satellite is older than v5.3, it does not have ISS "
"capability.\n"
"       Otherwise, depending on the specific error details, please review "
"your\n"
"       configuration, basic network connectivity, and/or name resolution, "
"and try again.\n"
"       Error message: %s\n"
msgstr ""

#: ../satellite_tools/messages.py:59
#, python-format
msgid ""
"\n"
"ERROR: a child-channel cannot be synced without its parent being synced as\n"
"       well. A parent needs to be either (a) previously synced or (b) "
"synced\n"
"       in tandem with the desired child-channel. Missing parents for this\n"
"       transaction:\n"
"       %s\n"
msgstr ""

#: ../satellite_tools/messages.py:67
#, python-format
msgid ""
"\n"
"ERROR: you are not entitled to sync a channel in this set of channels.\n"
"Please contact your SUSE Manager contact\n"
"%s"
msgstr ""

#: ../satellite_tools/messages.py:72
#, python-format
msgid "  ERROR: not enough free space (%s KB) on device."
msgstr ""

#: ../satellite_tools/messages.py:74
#, python-format
msgid "    %3d/%s Fetch successful: %s (%s bytes)"
msgstr ""

#: ../satellite_tools/messages.py:75
#, python-format
msgid "    Extinct package:  %s"
msgstr ""

#: ../satellite_tools/messages.py:76
#, python-format
msgid "   Total size: %s"
msgstr ""

#: ../satellite_tools/messages.py:77
#, python-format
msgid "      Downloaded %s of %s. Estimated remaining time: %s"
msgstr ""

#: ../satellite_tools/messages.py:78
#, python-format
msgid "    Fetch unsuccessful: %s"
msgstr ""

#: ../satellite_tools/messages.py:79
#, python-format
msgid "   RPM fetch summary: %s"
msgstr ""

#: ../satellite_tools/messages.py:80
#, python-format
msgid "       success: %d"
msgstr ""

#: ../satellite_tools/messages.py:81
#, python-format
msgid "       failed:  %d"
msgstr ""

#: ../satellite_tools/messages.py:82
#, python-format
msgid "       extinct: %d"
msgstr ""

#: ../satellite_tools/messages.py:84
#, python-format
msgid "   Retrieving / parsing *relevant* package metadata: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:85
#, python-format
msgid "   Retrieving / parsing errata data: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:86
#, python-format
msgid "   Retrieving / parsing kickstart data: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:87
#, python-format
msgid "   Retrieving / parsing kickstart tree files: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:88
#, python-format
msgid "   Importing *relevant* package metadata: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:89
msgid "   * WARNING: this may be a slow process."
msgstr ""

#: ../satellite_tools/messages.py:90
msgid "Linking packages to channels"
msgstr ""

#: ../satellite_tools/messages.py:91
#, python-format
msgid "   Importing *relevant* errata: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:92
msgid "   No new kickstartable tree to import"
msgstr ""

#: ../satellite_tools/messages.py:93
#, python-format
msgid "Importing kickstartable trees (%d)"
msgstr ""

#: ../satellite_tools/messages.py:94
#, python-format
msgid "Imported kickstartable trees (%d)"
msgstr ""

#: ../satellite_tools/reposync.py:111 ../satellite_tools/satsync.py:439
msgid "+++ sending log as an email +++"
msgstr ""

#: ../satellite_tools/reposync.py:114
#, python-format
msgid "%s sync. report from %s"
msgstr ""

#: ../satellite_tools/reposync.py:124 ../satellite_tools/satsync.py:449
msgid "+++ email requested, but there is nothing to send +++"
msgstr ""

#: ../satellite_tools/rhn_satellite_activate.py:198
#, python-format
msgid ""
"\"%s\" (specified in commandline)\n"
"could not be opened and read:\n"
"%s"
msgstr ""

#: ../satellite_tools/rhn_satellite_activate.py:205
#, python-format
msgid ""
"\"%s\" could not be opened\n"
"and/or written to:\n"
"%s"
msgstr ""

#: ../satellite_tools/satsync.py:258
#, python-format
msgid "No handler for step %s"
msgstr ""

#. Try one more time - this time it should be faster since
#. everything should be cached
#: ../satellite_tools/satsync.py:270
msgid "Environment changed, trying again..."
msgstr ""

#: ../satellite_tools/satsync.py:277
msgid "ERROR: Encountered IntegrityError: \n"
msgstr ""

#: ../satellite_tools/satsync.py:285
msgid "Repeated failures"
msgstr ""

#: ../satellite_tools/satsync.py:290
#, python-format
msgid ""
"    Import complete:\n"
"        Begin time: %s\n"
"        End time:   %s\n"
"        Elapsed:    %s\n"
"          "
msgstr ""

#: ../satellite_tools/satsync.py:311
msgid "hours"
msgstr ""

#: ../satellite_tools/satsync.py:311
msgid "minutes"
msgstr ""

#: ../satellite_tools/satsync.py:311
msgid "seconds"
msgstr ""

#: ../satellite_tools/satsync.py:357
msgid ""
"ERROR: The dump is missing package data, use --no-rpms to skip this step or "
"fix the content to include package data."
msgstr ""

#. the orgs() method doesn't exist; that's fine we just
#. won't sync the orgs
#: ../satellite_tools/satsync.py:404
msgid "The SUSE Manager master does not support syncing orgs data."
msgstr ""

#: ../satellite_tools/satsync.py:404
msgid "Skipping..."
msgstr ""

#: ../satellite_tools/satsync.py:442
#, python-format
msgid "SUSE Manager Inter Server sync. report from %s"
msgstr ""

#: ../satellite_tools/satsync.py:521
msgid " - file-system synchronization"
msgstr ""

#: ../satellite_tools/satsync.py:533 ../satellite_tools/satsync.py:541
msgid " - live synchronization"
msgstr ""

#: ../satellite_tools/satsync.py:534
#, python-brace-format
msgid ""
"ERROR: Live content synchronizing with RHN Classic Hosted is no longer "
"supported.\n"
"Please use the cdn-sync command instead unless you are attempting to sync "
"from another {PRODUCT_NAME} via Inter-Server-Sync (ISS), or from local "
"content on disk via Channel Dump ISOs."
msgstr ""

#: ../satellite_tools/satsync.py:542
#, python-format
msgid "   url: %s"
msgstr ""

#: ../satellite_tools/satsync.py:543
#, python-format
msgid "   debug/output level: %s"
msgstr ""

#: ../satellite_tools/satsync.py:553
msgid "ERROR: this server must be registered with SUSE Manager."
msgstr ""

#: ../satellite_tools/satsync.py:575
#, python-format
msgid "Retrieving / parsing %s data"
msgstr ""

#: ../satellite_tools/satsync.py:585 ../satellite_tools/satsync.py:600
msgid "*** SYSTEM INTERRUPT CALLED ***"
msgstr ""

#: ../satellite_tools/satsync.py:593
msgid "ERROR: fatal parser exception occurred "
msgstr ""

#: ../satellite_tools/satsync.py:594
#, python-format
msgid "(line: %s, col: %s msg: %s)"
msgstr ""

#: ../satellite_tools/satsync.py:598
#, python-format
msgid "ERROR: parser exception occurred: %s"
msgstr ""

#: ../satellite_tools/satsync.py:603
msgid "ERROR: exception (during parse) occurred: "
msgstr ""

#: ../satellite_tools/satsync.py:604
#, python-format
msgid ""
"   Encountered some errors with %s data (see logs (%s) for more information)"
msgstr ""

#: ../satellite_tools/satsync.py:606
#, python-format
msgid "   Encountered some errors with %s data:"
msgstr ""

#: ../satellite_tools/satsync.py:607
#, python-format
msgid "   ------- %s PARSE/IMPORT ERROR -------"
msgstr ""

#: ../satellite_tools/satsync.py:609
msgid "   ---------------------------------------"
msgstr ""

#: ../satellite_tools/satsync.py:612
#, python-format
msgid "%s data complete"
msgstr ""

#: ../satellite_tools/satsync.py:665
msgid "Retrieving / parsing channel data"
msgstr ""

#: ../satellite_tools/satsync.py:718
msgid "Channel data complete"
msgstr ""

#: ../satellite_tools/satsync.py:736
#, python-format
msgid "%10s import from %s"
msgstr ""

#: ../satellite_tools/satsync.py:739
#, python-format
msgid "%10s import from %s - %s"
msgstr ""

#: ../satellite_tools/satsync.py:743
#, python-format
msgid "%10s"
msgstr ""

#: ../satellite_tools/satsync.py:750
msgid "p"
msgstr ""

#: ../satellite_tools/satsync.py:752
msgid "."
msgstr ""

#: ../satellite_tools/satsync.py:758
msgid "   p = previously imported/synced channel"
msgstr ""

#: ../satellite_tools/satsync.py:759
msgid "   . = channel not yet imported/synced"
msgstr ""

#: ../satellite_tools/satsync.py:765
msgid "   e = channel no longer supported (end-of-service)"
msgstr ""

#: ../satellite_tools/satsync.py:767
msgid "   ? = channel label invalid --- typo?"
msgstr ""

#: ../satellite_tools/satsync.py:771
#, python-format
msgid "   %s:"
msgstr ""

#: ../satellite_tools/satsync.py:772
#, python-format
msgid "      %s %-40s %4s %s"
msgstr ""

#: ../satellite_tools/satsync.py:773
msgid "base-channels"
msgstr ""

#: ../satellite_tools/satsync.py:786 ../satellite_tools/satsync.py:1603
msgid "NONE RELEVANT"
msgstr ""

#: ../satellite_tools/satsync.py:808
msgid "end-of-service"
msgstr ""

#: ../satellite_tools/satsync.py:809
msgid "e"
msgstr ""

#: ../satellite_tools/satsync.py:815
msgid "   typos:"
msgstr ""

#: ../satellite_tools/satsync.py:816
msgid "?"
msgstr ""

#: ../satellite_tools/satsync.py:831
#, python-format
msgid "XXX: imported channels: %s"
msgstr ""

#: ../satellite_tools/satsync.py:832
#, python-format
msgid "XXX:   cached channels: %s"
msgstr ""

#: ../satellite_tools/satsync.py:837
msgid "XXX: list channels called"
msgstr ""

#: ../satellite_tools/satsync.py:855
msgid "ERROR: these channels either do not exist or are not available:"
msgstr ""

#: ../satellite_tools/satsync.py:859
#, python-format
msgid "       (to see a list of channel labels: %s --list-channels)"
msgstr ""

#: ../satellite_tools/satsync.py:904
#, python-format
msgid "   Retrieving / parsing short package metadata: %s (%s)"
msgstr ""

#: ../satellite_tools/satsync.py:965
#, python-format
msgid "Diffing package metadata (what's missing locally?): %s"
msgstr ""

#: ../satellite_tools/satsync.py:971 ../satellite_tools/satsync.py:1254
msgid "Diffing:    "
msgstr ""

#: ../satellite_tools/satsync.py:988
msgid "ERROR: incremental dump skipped"
msgstr ""

#: ../satellite_tools/satsync.py:1079
msgid "Downloading rpm packages"
msgstr ""

#: ../satellite_tools/satsync.py:1084
#, python-format
msgid "   Fetching any missing RPMs: %s (%s)"
msgstr ""

#: ../satellite_tools/satsync.py:1085 ../satellite_tools/satsync.py:1153
msgid "NONE MISSING"
msgstr ""

#: ../satellite_tools/satsync.py:1094
msgid "Processing rpm packages complete"
msgstr ""

#: ../satellite_tools/satsync.py:1121
msgid "Downloading package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1146
msgid "Downloading srpm packages"
msgstr ""

#: ../satellite_tools/satsync.py:1152
#, python-format
msgid "   Fetching any missing SRPMs: %s (%s)"
msgstr ""

#: ../satellite_tools/satsync.py:1249
#, python-format
msgid "Diffing source package metadata (what's missing locally?): %s"
msgstr ""

#: ../satellite_tools/satsync.py:1260
msgid "Downloading source package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1338 ../satellite_tools/satsync.py:2027
#, python-format
msgid "Unable to save file %s: %s"
msgstr ""

#. for
#. Retried a number of times and it still failed; log the
#. file as being failed and move on
#: ../satellite_tools/satsync.py:1345
#, python-format
msgid "Failed to fetch file %s"
msgstr ""

#: ../satellite_tools/satsync.py:1350
msgid "Downloading kickstartable trees metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1365
msgid "Downloading kickstartable trees files"
msgstr ""

#: ../satellite_tools/satsync.py:1504
#, python-format
msgid "Grabbing all patches for channel %s"
msgstr ""

#: ../satellite_tools/satsync.py:1554
msgid "Downloading patch data"
msgstr ""

#: ../satellite_tools/satsync.py:1556
msgid "Forcing download of all patch data for requested channels."
msgstr ""

#: ../satellite_tools/satsync.py:1571
msgid "Downloading patch data complete"
msgstr ""

#: ../satellite_tools/satsync.py:1576 ../satellite_tools/satsync.py:1597
msgid "Downloading:"
msgstr ""

#: ../satellite_tools/satsync.py:1579
msgid " - complete"
msgstr ""

#: ../satellite_tools/satsync.py:1624
msgid "Importing source package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1627
msgid "Importing package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1635
msgid "Importing:  "
msgstr ""

#. not in the cache
#: ../satellite_tools/satsync.py:1703
msgid ""
"Package Not Found in Cache, Clear the Cache "
"to                                  Regenerate it."
msgstr ""

#: ../satellite_tools/satsync.py:1709
msgid "Importing channel patches"
msgstr ""

#: ../satellite_tools/satsync.py:1714
#, python-format
msgid "Importing %s patches for channel %s."
msgstr ""

#. Incomplete configuration
#: ../satellite_tools/satsync.py:2113
msgid "ERROR: server.mount_point not set in the configuration file"
msgstr ""

#: ../satellite_tools/satsync.py:2117
#, python-format
msgid "ERROR: server.mount_point %s do not exist"
msgstr ""

#: ../satellite_tools/satsync.py:2122
#, python-format
msgid "ERROR: path under server.mount_point (%s)  do not exist"
msgstr ""

#: ../satellite_tools/satsync.py:2199
#, python-format
msgid "Commandline: %s"
msgstr ""

#: ../satellite_tools/satsync.py:2202
#, python-format
msgid ""
"DEBUG ONLY: max. batch-size for XML/database-import processing (1..%s).\"man "
"satellite-sync\" for more information."
msgstr ""

#: ../satellite_tools/satsync.py:2205
msgid "alternative SSL CA Cert (fullpath to cert file)"
msgstr ""

#: ../satellite_tools/satsync.py:2207
msgid "process data for this channel only"
msgstr ""

#: ../satellite_tools/satsync.py:2209
msgid ""
"disk dump will be considered to be a full export; see \"man satellite-sync\" "
"for more information."
msgstr ""

#: ../satellite_tools/satsync.py:2212
msgid "existing custom channels will also be synced (unless -c is used)"
msgstr ""

#: ../satellite_tools/satsync.py:2214
#, python-format
msgid ""
"override debug level set in /etc/rhn/rhn.conf (which is currently set at %s)."
msgstr ""

#: ../satellite_tools/satsync.py:2216
#, python-format
msgid "requested version of XML dump (default: %s)"
msgstr ""

#: ../satellite_tools/satsync.py:2218
msgid "e-mail a report of what was synced/imported"
msgstr ""

#: ../satellite_tools/satsync.py:2220
msgid "forcibly process all (not a diff of) patch metadata"
msgstr ""

#: ../satellite_tools/satsync.py:2222
msgid "Do not use an http proxy under any circumstances."
msgstr ""

#: ../satellite_tools/satsync.py:2224
msgid "alternative http proxy (hostname:port)"
msgstr ""

#: ../satellite_tools/satsync.py:2226
msgid "alternative http proxy username"
msgstr ""

#: ../satellite_tools/satsync.py:2228
msgid "alternative http proxy password"
msgstr ""

#: ../satellite_tools/satsync.py:2230
msgid "parent SUSE Manager to import content from"
msgstr ""

#: ../satellite_tools/satsync.py:2232
msgid "list all available channels and exit"
msgstr ""

#: ../satellite_tools/satsync.py:2234
msgid "help on all error codes mgr-inter-sync returns"
msgstr ""

#: ../satellite_tools/satsync.py:2236
msgid "source mount point for import - disk update only"
msgstr ""

#: ../satellite_tools/satsync.py:2238
msgid "do not process patch data"
msgstr ""

#: ../satellite_tools/satsync.py:2240
msgid "do not process kickstart data (provisioning only)"
msgstr ""

#: ../satellite_tools/satsync.py:2242
msgid "do not process full package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:2244
msgid "do not download, or process any RPMs"
msgstr ""

#: ../satellite_tools/satsync.py:2246
msgid "turn off SSL (not recommended)"
msgstr ""

#: ../satellite_tools/satsync.py:2248
msgid "org to which the sync imports data. defaults to the admin account"
msgstr ""

#: ../satellite_tools/satsync.py:2250
msgid "print the configuration and exit"
msgstr ""

#: ../satellite_tools/satsync.py:2252
msgid "alternative server with which to connect (hostname)"
msgstr ""

#: ../satellite_tools/satsync.py:2254
msgid "synchronize to this step (man satellite-sync for more info)"
msgstr ""

#: ../satellite_tools/satsync.py:2256
msgid "write complete data to tempfile before streaming to remainder of app"
msgstr ""

#: ../satellite_tools/satsync.py:2258
msgid "DEBUG ONLY: alternative path to digital system id"
msgstr ""

#: ../satellite_tools/satsync.py:2260
msgid "alternative email address(es) for sync output (--email option)"
msgstr ""

#: ../satellite_tools/satsync.py:2262
msgid "do not remove rpms when importing from local dump"
msgstr ""

#: ../satellite_tools/satsync.py:2264
msgid ""
"the fully qualified domain name of the master Satellite. Valid with --mount-"
"point only. Required if you want to import org data and channel permissions."
msgstr ""

#: ../satellite_tools/satsync.py:2274
#, python-format
msgid "ERROR: these arguments make no sense in this context (try --help): %s"
msgstr ""

#. An SQL error is fatal... crash and burn
#: ../satellite_tools/satsync.py:2286
#, python-format
msgid "ERROR: Can't connect to the database: %s"
msgstr ""

#: ../satellite_tools/satsync.py:2287
msgid "ERROR: Check if your database is running."
msgstr ""

#: ../satellite_tools/satsync.py:2322
#, python-format
msgid "ERROR: --debug-level takes an in integer value within the range %s."
msgstr ""

#: ../satellite_tools/satsync.py:2324
msgid "  0  - little logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2325
msgid "  1  - minimal logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2326
msgid "  2  - normal level of logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2327
msgid "  3  - lots of logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2328
msgid "  4+ - excessive logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2341
msgid "ERROR: The --master option is only valid with the --mount-point option"
msgstr ""

#: ../satellite_tools/satsync.py:2351
#, python-format
msgid "ERROR: Unable to lookup Org Id %s"
msgstr ""

#: ../satellite_tools/satsync.py:2360
msgid ""
"WARNING: --list-channels option overrides any --step option. --step ignored."
msgstr ""

#: ../satellite_tools/satsync.py:2375
#, python-format
msgid ""
"ERROR: '%s' is not a valid step. See 'man mgr-inter-sync' for more detail."
msgstr ""

#: ../satellite_tools/satsync.py:2407
msgid ""
"ERROR: No channels currently imported; try mgr-inter-sync --list-channels; "
"then mgr-inter-sync -c chn0 -c chn1..."
msgstr ""

#. int(None) --> TypeError
#. int('a')  --> ValueError
#: ../satellite_tools/satsync.py:2457 ../satellite_tools/satsync.py:2461
msgid "ERROR: --batch-size must have a value within the range: 1..50"
msgstr ""

#: ../satellite_tools/satsync.py:2469
#, python-format
msgid "ERROR: no such directory %s"
msgstr ""

#: ../satellite_tools/satsync.py:2474
msgid "Error Codes: Returned codes means:"
msgstr ""

#: ../satellite_tools/satsync.py:2475
msgid " -1  - Could not lock file or KeyboardInterrupt or SystemExit"
msgstr ""

#: ../satellite_tools/satsync.py:2476
msgid "  0  - User interrupted or intentional exit"
msgstr ""

#: ../satellite_tools/satsync.py:2477
msgid "  1  - attempting to run more than one instance of mgr-inter-sync."
msgstr ""

#: ../satellite_tools/satsync.py:2478
msgid "  2  - Unable to find synchronization tools."
msgstr ""

#: ../satellite_tools/satsync.py:2479
msgid "  3  - a general socket exception occurred"
msgstr ""

#: ../satellite_tools/satsync.py:2480
msgid "  4  - an SSL error occurred. Recheck your SSL settings."
msgstr ""

#: ../satellite_tools/satsync.py:2481
msgid "  5  - ISS error"
msgstr ""

#: ../satellite_tools/satsync.py:2482
msgid "  6  - unhandled exception occurred"
msgstr ""

#: ../satellite_tools/satsync.py:2483
msgid "  7  - unknown sync error"
msgstr ""

#: ../satellite_tools/satsync.py:2484
msgid "  8  - ERROR: must be root to execute"
msgstr ""

#: ../satellite_tools/satsync.py:2485
msgid "  9  - rpclib fault during synchronization init"
msgstr ""

#: ../satellite_tools/satsync.py:2486
msgid "  10 - synchronization init error"
msgstr ""

#: ../satellite_tools/satsync.py:2487
msgid "  11 - Error parsing XML stream"
msgstr ""

#: ../satellite_tools/satsync.py:2488
msgid "  12 - Channel do not exist"
msgstr ""

#: ../satellite_tools/satsync.py:2489
msgid "  13 - SQL error during importing package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:2490
msgid "  14 - SQL error during linking channel packages"
msgstr ""

#: ../satellite_tools/satsync.py:2491
msgid "  15 - SQL error during xml processing"
msgstr ""

#: ../satellite_tools/satsync.py:2492
msgid "  16 - server.mount_point not set in the configuration file"
msgstr ""

#: ../satellite_tools/satsync.py:2493
msgid ""
"  17 - SQL error during retrieving the channels already imported in the SUSE "
"Manager database"
msgstr ""

#: ../satellite_tools/satsync.py:2494
msgid "  18 - Wrong db connection string in rhn.conf"
msgstr ""

#: ../satellite_tools/satsync.py:2495
msgid "  19 - Bad arguments"
msgstr ""

#: ../satellite_tools/satsync.py:2496
msgid "  20 - Could not connect to db."
msgstr ""

#: ../satellite_tools/satsync.py:2497
msgid "  21 - Bad debug level"
msgstr ""

#: ../satellite_tools/satsync.py:2498
msgid "  22 - Not valid step"
msgstr ""

#: ../satellite_tools/satsync.py:2499
msgid "  24 - no such file"
msgstr ""

#: ../satellite_tools/satsync.py:2500
msgid "  25 - no such directory"
msgstr ""

#: ../satellite_tools/satsync.py:2501
msgid "  26 - mount_point does not exist"
msgstr ""

#: ../satellite_tools/satsync.py:2502
msgid "  27 - No such org"
msgstr ""

#: ../satellite_tools/satsync.py:2503
msgid "  28 - error: --master is only valid with --mount-point"
msgstr ""

#: ../satellite_tools/satsync.py:2510
#, python-format
msgid "ERROR: unknown dump version, try one of %s"
msgstr ""
  0707010000005A000081B40000000000000000000000016290A0C10000B68B000000000000000000000000000000000000001B00000000spacewalk-backend/po/as.po    # SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
#
# Translators:
# Amitakhya Phukan <amitakhya.phukan@gmail.com>, 2006.
# Amitakhya Phukan <aphukan@redhat.com>, 2006, 2007.
msgid ""
msgstr ""
"Project-Id-Version: Spacewalk\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-10-16 13:34+0200\n"
"PO-Revision-Date: 2011-03-04 16:08+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Assamese (http://www.transifex.com/projects/p/fedora/language/"
"as/)\n"
"Language: as\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"

#: ../server/apacheAuth.py:66
#, python-format
msgid "incomplete proxy authentication token: %s"
msgstr ""

#: ../server/apacheAuth.py:84
#, python-format
msgid "Sent proxy signature %s does not match ours %s."
msgstr ""

#: ../server/apacheAuth.py:119
msgid "declined proxy authentication"
msgstr ""

#: ../server/apacheRequest.py:59
#, python-format
msgid "Invalid request received (%s)."
msgstr ""

#: ../server/apacheRequest.py:120
#, python-format
msgid ""
"IMPORTANT MESSAGE FOLLOWS:\n"
"%s"
msgstr ""

#: ../server/apacheRequest.py:149
#, python-format
msgid ""
"While running '%s': caught\n"
"%s : %s\n"
msgstr ""

#: ../server/apacheRequest.py:606
#, python-format
msgid "Invalid URI %s"
msgstr ""

#: ../server/configFilesHandler.py:129 ../server/handlers/app/packages.py:192
#: ../server/handlers/xmlrpc/registration.py:215
#: ../server/handlers/xmlrpc/registration.py:1168
#: ../server/handlers/xmlrpc/registration.py:1307
#, python-format
msgid ""
"\n"
"                   %s Account has been deactivated on this server.\n"
"                   Please contact your Org administrator for more help."
msgstr ""

#: ../server/handlers/applet/applet.py:78
#, python-brace-format
msgid "Your system was not found in the {PRODUCT_NAME} database"
msgstr ""

#: ../server/handlers/sat/auth.py:45
msgid "ISS is disabled on this server."
msgstr ""

#: ../server/handlers/sat/auth.py:50
#, python-format
msgid "Server \"%s\" is not enabled for ISS."
msgstr ""

#: ../server/handlers/xmlrpc/errata.py:64
#, python-format
msgid "Expected a package name, not: %s"
msgstr ""

#: ../server/handlers/xmlrpc/errata.py:115
#, python-format
msgid "Expected a package, not: %s"
msgstr ""

#: ../server/handlers/xmlrpc/proxy.py:65
#, python-format
msgid "SUSE Manager Proxy service not enabled for server profile: \"%s\""
msgstr ""

#: ../server/handlers/xmlrpc/proxy.py:85
msgid "Invalid session key"
msgstr ""

#: ../server/handlers/xmlrpc/proxy.py:93
msgid "This server ID no longer exists"
msgstr ""

#: ../server/handlers/xmlrpc/queue.py:433
#, python-format
msgid "Invalid action value type %s (%s)"
msgstr ""

#: ../server/handlers/xmlrpc/queue.py:464
#, python-format
msgid "Action %s does not belong to server %s"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:194
msgid "Required data missing"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:198
msgid "Required members missing"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:207
msgid "Attempt to register a system to an invalid username"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:839
msgid "Invalid system release version requested"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1063
msgid ""
"Unable to find a valid network interface, both ipaddr and ip6addr not found."
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1115
#, python-brace-format
msgid "{PRODUCT_NAME} Welcome Message"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1125
msgid "Privacy Statement"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1146
msgid "Expected a dictionary as a product argument"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1374
#, python-format
msgid "Invalid value '%s' for %s (%s)"
msgstr ""

#: ../server/handlers/xmlrpc/scap.py:104
msgid "Invalid system_id/action_id pair."
msgstr ""

#: ../server/handlers/xmlrpc/up2date.py:233
#, python-format
msgid "Invalid value %s (%s)"
msgstr ""

#: ../server/importlib/userAuth.py:98
msgid "You are not authorized to manage packages in the null org"
msgstr ""

#: ../server/importlib/userAuth.py:103
#, python-format
msgid "You are not allowed to manage packages in the %s org"
msgstr ""

#: ../server/importlib/userAuth.py:121
msgid "You are not allowed to perform administrative tasks"
msgstr ""

#: ../server/importlib/userAuth.py:144
#, python-format
msgid ""
"You are not allowed to manage channel %s, or that channel does not exist"
msgstr ""

#: ../server/importlib/userAuth.py:204
#, python-format
msgid ""
"\n"
"               %s Account has been deactivated on this server.\n"
"               Please contact your Org administrator for more help."
msgstr ""

#: ../server/rhnChannel.py:1992
#, python-format
msgid ""
"Your account does not have access to any channels matching "
"(release='%(release)s', arch='%(arch)s')%(www_activation)s"
msgstr ""

#: ../server/rhnChannel.py:2002
msgid ""
"\n"
"If you have a registration number, please register with it first at http://"
"www.redhat.com/apps/activate/ and then try again.\n"
"\n"
msgstr ""

#: ../server/rhnChannel.py:2012
#, python-format
msgid "Insufficient subscription permissions for release (%s, %s"
msgstr ""

#. Various messages that can be reused
#.
#. bretm 02/07/2007 -- when we have better old-client documentation, probably
#. will be safe to get rid of all this crap
#: ../server/rhnChannel.py:2276 ../server/rhnChannel.py:2287
#: ../server/rhnChannel.py:2302
msgid "System Registered but Inactive"
msgstr ""

#: ../server/rhnChannel.py:2277
#, python-format
msgid ""
"\n"
"Invalid Architecture and OS release combination (%s, %s).\n"
"Your system has been registered, but will not receive updates\n"
"because it is not subscribed to a channel. If you have not yet\n"
"activated your product for service, please visit our website at:\n"
"\n"
"     http://www.redhat.com/apps/activate/\n"
"\n"
"...to activate your product."
msgstr ""

#: ../server/rhnChannel.py:2288
#, python-format
msgid ""
"\n"
"Invalid Architecture and OS release combination (%s, %s).\n"
"Your system has been registered, but will not receive updates\n"
"because it could not be subscribed to a base channel.\n"
"Please contact your organization administrator for assistance.\n"
msgstr ""

#: ../server/rhnChannel.py:2295
#, python-format
msgid ""
"\n"
"  This system has been successfully registered, but is not yet entitled\n"
"  to service.  To entitle this system to service, login to the web site at:\n"
"\n"
"  %(entitlement_url)s\n"
msgstr ""

#: ../server/rhnChannel.py:2303
#, python-format
msgid ""
"\n"
"  This system has been successfully registered, but no service entitlements\n"
"  were available.  To entitle this system to service, login to the web site "
"at:\n"
"\n"
"  %(entitlement_url)s\n"
msgstr ""

#: ../server/rhnHandler.py:62
msgid "Please run rhn_register as root on this client"
msgstr ""

#: ../server/rhnHandler.py:75
#, python-format
msgid "Service not enabled for system profile: \"%s\""
msgstr ""

#: ../server/rhnPackage.py:49 ../server/rhnPackage.py:87
#: ../server/rhnPackage.py:107 ../server/rhnPackage.py:158
#, python-format
msgid "Invalid RPM package %s requested"
msgstr ""

#: ../server/rhnPackage.py:112
msgid "Package not found"
msgstr ""

#: ../server/rhnServer/server_class.py:97
#, python-format
msgid "Architecture `%s' is not supported"
msgstr ""

#: ../server/rhnServer/server_token.py:78
#, python-format
msgid "Token `%s' has more than one base channel assigned"
msgstr ""

#: ../server/rhnServer/server_token.py:80
msgid "Conflicting base channels"
msgstr ""

#: ../server/rhnServer/server_token.py:190
#, python-format
msgid "Failed to add server to group %s"
msgstr ""

#: ../server/rhnServer/server_token.py:503
#, python-format
msgid "Maximum usage count of %s reached"
msgstr ""

#: ../server/rhnServer/server_token.py:744
msgid ""
"Stacking of re-registration tokens with different base entitlements is not "
"supported"
msgstr ""

#: ../server/rhnServer/server_token.py:811
#, python-format
msgid "Could not find token '%s'"
msgstr ""

#. Cannot use activation keys from different orgs
#: ../server/rhnServer/server_token.py:843
msgid "Tokens from mismatching orgs"
msgstr ""

#. Two tokens with different kickstart sessions
#: ../server/rhnServer/server_token.py:853
msgid "Kickstart session mismatch"
msgstr ""

#: ../server/rhnServer/server_token.py:877
msgid "Stacking of re-registration tokens is not supported"
msgstr ""

#: ../server/rhnUser.py:289 ../server/rhnUser.py:292
msgid "Invalid username/password combination"
msgstr ""

#. nope, not reserved either
#: ../server/rhnUser.py:467
#, python-format
msgid "Username `%s' has not been reserved"
msgstr ""

#. New accounts have to specify an e-mail address
#: ../server/rhnUser.py:473
msgid "E-mail address not specified"
msgstr ""

#: ../server/rhnUser.py:509
#, python-format
msgid "username should be at least %d characters"
msgstr ""

#: ../server/rhnUser.py:512
#, python-format
msgid "username should be less than %d characters"
msgstr ""

#: ../server/rhnUser.py:523
#, python-format
msgid "username = `%s', invalid character `%s'"
msgstr ""

#: ../server/rhnUser.py:542
#, python-format
msgid "Please limit your e-mail address to %s chars"
msgstr ""

#: ../server/rhnUser.py:623
#, python-format
msgid "password must be at least %d characters"
msgstr ""

#: ../server/rhnUser.py:626
#, python-format
msgid "Password must be shorter than %d characters"
msgstr ""

#: ../server/rhnUser.py:644
#, python-format
msgid "password contains character `%s'"
msgstr ""

#: ../server/rhnUser.py:651
#, python-format
msgid "username should be at least %d characters long"
msgstr ""

#: ../server/rhnUser.py:662
#, python-format
msgid "Cannot register usernames ending with %s"
msgstr ""

#. 0-999: Red Hat client/client-like interaction errors:
#: ../common/rhnException.py:53
msgid "This does not appear to be a valid username."
msgstr ""

#: ../common/rhnException.py:54
msgid "Invalid username and password combination."
msgstr ""

#: ../common/rhnException.py:55
msgid "This login is already taken, or the password is incorrect."
msgstr ""

#: ../common/rhnException.py:56
msgid "Permission denied."
msgstr ""

#: ../common/rhnException.py:57
msgid "Object not found."
msgstr ""

#: ../common/rhnException.py:58
msgid "Invalid System Digital ID."
msgstr ""

#: ../common/rhnException.py:59
msgid "Invalid System Credentials."
msgstr ""

#: ../common/rhnException.py:60
msgid "Could not retrieve user data from database."
msgstr ""

#: ../common/rhnException.py:61
msgid "Valid username required."
msgstr ""

#: ../common/rhnException.py:62
msgid "Valid password required."
msgstr ""

#: ../common/rhnException.py:63
msgid "Minimum username length violation."
msgstr ""

#: ../common/rhnException.py:64
msgid "Minimum password length violation."
msgstr ""

#: ../common/rhnException.py:65
msgid "The username contains invalid characters."
msgstr ""

#: ../common/rhnException.py:66
msgid "File not found."
msgstr ""

#: ../common/rhnException.py:67
msgid "Architecture and OS version combination is not supported."
msgstr ""

#: ../common/rhnException.py:68
msgid "Could not retrieve system data from database."
msgstr ""

#: ../common/rhnException.py:69
msgid "Invalid arguments passed to function."
msgstr ""

#: ../common/rhnException.py:70
msgid "Unable to retrieve requested entry."
msgstr ""

#: ../common/rhnException.py:71
msgid "Could not update database entry."
msgstr ""

#: ../common/rhnException.py:72
msgid "Unsupported server architecture."
msgstr ""

#: ../common/rhnException.py:73
#, python-format
msgid ""
"\n"
"     The anonymous server functionality is no longer available.\n"
"\n"
"     Please re-register this system by running mgr_register as root.\n"
"     Please visit https://%(hostname)s/rhn/systems/SystemEntitlements.do\n"
"     or login at https://%(hostname)s, and from the \"Overview\" tab,\n"
"     select \"Subscription Management\" to enable the service for this "
"system.\n"
"     "
msgstr ""

#: ../common/rhnException.py:81
msgid "Record not available in the database."
msgstr ""

#: ../common/rhnException.py:82
msgid "Invalid value for entry."
msgstr ""

#: ../common/rhnException.py:83
#, python-format
msgid ""
"\n"
"     This system does not have a valid entitlement for SUSE Manager.\n"
"     Please visit https://%(hostname)s/rhn/systems/SystemEntitlements.do\n"
"     or login at https://%(hostname)s, and from the \"Overview\" tab,\n"
"     select \"Subscription Management\" to enable the service for this "
"system.\n"
"     "
msgstr ""

#: ../common/rhnException.py:89
msgid "Channel error"
msgstr ""

#: ../common/rhnException.py:90
msgid "Client session token is invalid."
msgstr ""

#: ../common/rhnException.py:91
msgid "Client session token has expired."
msgstr ""

#: ../common/rhnException.py:92
msgid "You are not authorized to retrieve the requested object."
msgstr ""

#: ../common/rhnException.py:93
msgid "Invalid action"
msgstr ""

#: ../common/rhnException.py:94
msgid "You are not allowed to perform administrative tasks on this system."
msgstr ""

#: ../common/rhnException.py:96
msgid "The system is already subscribed to the specified channel."
msgstr ""

#: ../common/rhnException.py:97
msgid "The system is not currently subscribed to the specified channel."
msgstr ""

#: ../common/rhnException.py:98
msgid "The specified channel does not exist."
msgstr ""

#: ../common/rhnException.py:99
msgid "Invalid channel version."
msgstr ""

#: ../common/rhnException.py:100
msgid ""
"\n"
"     User group membership limits exceeded.\n"
"\n"
"     The current settings for your account do not allow you to add another\n"
"     user account. Please check with the organization administrator for "
"your\n"
"     account if the maximum number of users allowed to subscribe to server "
"needs\n"
"     to be changed.\n"
"     "
msgstr ""

#: ../common/rhnException.py:108
msgid ""
"\n"
"     System group membership limits exceeded.\n"
"\n"
"     The current settings for your account do not allow you to add another\n"
"     system profile. Please check with the organization administrator for "
"your\n"
"     account for modifying the maximum number of system profiles that can "
"be\n"
"     subscribed to your account.\n"
"     "
msgstr ""

#: ../common/rhnException.py:116
msgid ""
"\n"
"     Invalid architecture.\n"
"\n"
"     The architecture of the package is not supported by\n"
"     "
msgstr ""

#: ../common/rhnException.py:121
msgid "Invalid RPM header"
msgstr ""

#: ../common/rhnException.py:122
msgid ""
"\n"
"    This system is already registered as a Salt Minion. If you want to "
"register it as a traditional client\n"
"    please delete it first via the web UI or API and then register it using "
"the traditional tools.\n"
"    "
msgstr ""

#. For the uploading tools
#: ../common/rhnException.py:127
msgid "Invalid information uploaded to the server"
msgstr ""

#: ../common/rhnException.py:128
msgid "Error uploading network interfaces configuration."
msgstr ""

#: ../common/rhnException.py:129
msgid ""
"\n"
"     Package Upload Failed due to uniqueness constraint violation.\n"
"     Make sure the package does not have any duplicate dependencies or\n"
"     does not already exists on the server\n"
"     "
msgstr ""

#: ../common/rhnException.py:134
msgid ""
"\n"
"     The --force rhnpush option is disabled on this server.\n"
"     Please contact your SUSE Manager administrator for more help.\n"
"     "
msgstr ""

#. 60-70: token errors
#: ../common/rhnException.py:140
msgid ""
"\n"
"     The activation token specified could not be found on the server.\n"
"     Please retry with a valid key.\n"
"     "
msgstr ""

#: ../common/rhnException.py:144
msgid "Too many systems registered using this registration token"
msgstr ""

#: ../common/rhnException.py:145
msgid "Token contains invalid, obsoleted or insufficient settings"
msgstr ""

#: ../common/rhnException.py:146
msgid "Conflicting activation tokens"
msgstr ""

#. 70-80: channel subscription errors
#: ../common/rhnException.py:149
msgid ""
"\n"
"     No matching base channel found for your system.\n"
"     "
msgstr ""

#: ../common/rhnException.py:152
msgid ""
"\n"
"     You do not have subscription permission to the designated channel.\n"
"     Please refer to your organization's channel or organization\n"
"     administrators for further details.\n"
"     "
msgstr ""

#: ../common/rhnException.py:157
msgid "You can not unsubscribe from base channel."
msgstr ""

#: ../common/rhnException.py:158
msgid "SUSE Manager or Proxy channel can not be subscribed."
msgstr ""

#. 80-90: server group errors
#: ../common/rhnException.py:161
msgid "There was an error while trying to join the system to its groups"
msgstr ""

#. 90-100: entitlement errors
#: ../common/rhnException.py:164
msgid "Unable to entitle system"
msgstr ""

#. 100-109: e-mail and uuid related faults
#: ../common/rhnException.py:167
msgid "Maximum e-mail length violation."
msgstr ""

#: ../common/rhnException.py:168
msgid "This system has been previously registered."
msgstr ""

#: ../common/rhnException.py:169
msgid "Invalid username"
msgstr ""

#. 140-159 applet errors
#: ../common/rhnException.py:172
msgid "Unable to look up server"
msgstr ""

#. 160-179: OSAD errors
#: ../common/rhnException.py:175
msgid "Required argument is missing"
msgstr ""

#. 600-699: RHEL5+ EN errors
#: ../common/rhnException.py:178
msgid "No entitlement information tied to hardware"
msgstr ""

#: ../common/rhnException.py:179
msgid "Installation number is not entitling"
msgstr ""

#. 700-799: Additional user input verification errors.
#: ../common/rhnException.py:182
msgid "Maximum username length violation"
msgstr ""

#: ../common/rhnException.py:183
msgid "Maximum password length violation"
msgstr ""

#: ../common/rhnException.py:184
msgid "This user has read only API access. Action denied."
msgstr ""

#: ../common/rhnException.py:186
msgid "System Name cannot be less than 1 character"
msgstr ""

#. 1000-1999: Proxy specific errors:
#. issued by a Proxy to the client
#: ../common/rhnException.py:190
msgid "SUSE Manager Proxy error."
msgstr ""

#: ../common/rhnException.py:191
msgid "SUSE Manager Proxy unable to login."
msgstr ""

#. issued by a SUSE Manager Server/Satellite to the proxy
#: ../common/rhnException.py:193
msgid ""
"\n"
"     SUSE Manager Proxy system ID does not match a Spacewalk Proxy Server\n"
"     in the database.\n"
"     "
msgstr ""

#: ../common/rhnException.py:197
msgid "SUSE Manager Proxy session token is invalid."
msgstr ""

#: ../common/rhnException.py:198
msgid "SUSE Manager Proxy session token has expired."
msgstr ""

#. 2000-2999: Red Hat Satellite specific errors:
#: ../common/rhnException.py:202
msgid ""
"\n"
"      user creation is not allowed via mgr_register;\n"
"     please contact your sysadmin to have your account created.\n"
"     "
msgstr ""

#: ../common/rhnException.py:206
msgid ""
"\n"
"     This SUSE Manager server is not allowed to use Inter Server Sync on "
"this server\n"
"     "
msgstr ""

#: ../common/rhnException.py:209
msgid ""
"\n"
"     Inter Server Sync is disabled on this SUSE Manager Server.\n"
"     "
msgstr ""

#. 3000-3999: XML dumper errors:
#: ../common/rhnException.py:214
msgid "Invalid datatype passed"
msgstr ""

#: ../common/rhnException.py:215
msgid "Unable to retrieve channel"
msgstr ""

#: ../common/rhnException.py:216
msgid "Unable to retrieve package"
msgstr ""

#: ../common/rhnException.py:217
msgid "Unable to retrieve erratum"
msgstr ""

#: ../common/rhnException.py:218
msgid "File is missing"
msgstr ""

#: ../common/rhnException.py:219
msgid "Function retrieval error"
msgstr ""

#: ../common/rhnException.py:220
msgid "Function execution error"
msgstr ""

#: ../common/rhnException.py:221
msgid "Missing version string"
msgstr ""

#: ../common/rhnException.py:222
msgid "Invalid version string"
msgstr ""

#: ../common/rhnException.py:223
msgid "Mismatching versions"
msgstr ""

#: ../common/rhnException.py:224
msgid "Invalid channel version"
msgstr ""

#: ../common/rhnException.py:225
msgid "No comps file for channel"
msgstr ""

#: ../common/rhnException.py:226
msgid "Unable to retrieve comps file"
msgstr ""

#. 4000 - 4999: config management errors
#: ../common/rhnException.py:229
msgid "Configuration action missing"
msgstr ""

#: ../common/rhnException.py:230
msgid "File too large"
msgstr ""

#: ../common/rhnException.py:231
msgid "File contains binary data"
msgstr ""

#: ../common/rhnException.py:232
msgid "Configuration channel is not empty"
msgstr ""

#: ../common/rhnException.py:233
msgid "Permission error"
msgstr ""

#: ../common/rhnException.py:234
msgid "Content missing for configuration file"
msgstr ""

#: ../common/rhnException.py:235
msgid "Template delimiters not specified"
msgstr ""

#: ../common/rhnException.py:236
msgid "Configuration channel does not exist"
msgstr ""

#: ../common/rhnException.py:237
msgid "Configuration channel already exists"
msgstr ""

#: ../common/rhnException.py:238
msgid "File missing from configuration channel"
msgstr ""

#: ../common/rhnException.py:239
msgid "Different revision of this file is uploaded"
msgstr ""

#: ../common/rhnException.py:240
msgid "File already uploaded to configuration channel"
msgstr ""

#: ../common/rhnException.py:241
msgid "File size exceeds remaining quota space"
msgstr ""

#: ../common/rhnException.py:242
msgid "Full path of file must be specified"
msgstr ""

#: ../common/rhnException.py:243
msgid "Invalid revision number"
msgstr ""

#: ../common/rhnException.py:244
msgid "Cannot compare files of different file type"
msgstr ""

#. 5000 - 5999: client content uploading errors
#. 5000 - 5099: crash reporting errors
#: ../common/rhnException.py:248
msgid "Crash information is invalid or incomplete"
msgstr ""

#: ../common/rhnException.py:249
msgid "Crash file information is invalid or incomplete"
msgstr ""

#: ../common/rhnException.py:250
msgid "Error composing crash directory path"
msgstr ""

#: ../common/rhnException.py:251
msgid "Error composing crash file path"
msgstr ""

#: ../common/rhnException.py:252 ../common/rhnException.py:259
msgid "Invalid content encoding"
msgstr ""

#: ../common/rhnException.py:253
msgid "Invalid crash name"
msgstr ""

#: ../common/rhnException.py:254
msgid "Crash reporting is disabled for this organization"
msgstr ""

#. 5100 - 5199: scap results reporting error
#: ../common/rhnException.py:256
msgid "SCAP results file transfer is invalid or incomplete"
msgstr ""

#: ../common/rhnException.py:257
msgid "Error composing directory path for detailed SCAP results"
msgstr ""

#: ../common/rhnException.py:258
msgid "Error composing file path for detailed SCAP results"
msgstr ""

#: ../common/rhnException.py:306
msgid ""
"\n"
"     An error has occurred while processing your request. If this problem\n"
"     persists please enter a bug report at scc.suse.com.\n"
"     If you choose to submit the bug report, please be sure to include\n"
"     details of what you were trying to do when this error occurred and\n"
"     details on how to reproduce this problem.\n"
msgstr ""

#: ../common/rhnException.py:358
#, python-format
msgid ""
"Error Message:\n"
"    %s\n"
msgstr ""

#: ../common/rhnException.py:360
#, python-format
msgid "Error Class Code: %s\n"
msgstr ""

#: ../common/rhnException.py:363
#, python-format
msgid "Error Class Info: %s\n"
msgstr ""

#: ../common/rhnException.py:365
#, python-format
msgid "Explanation: %s"
msgstr ""

#: ../common/rhnTB.py:205
#, python-format
msgid "ERROR: %s %s: %s"
msgstr ""

#: ../common/rhnTB.py:207
#, python-format
msgid "TRACEBACK: %s"
msgstr ""

#: ../satellite_tools/disk_dumper/iss.py:1294
#: ../satellite_tools/disk_dumper/iss.py:1298
#, python-format
msgid "format of %s should be at least YYYYMMDD.\n"
msgstr ""

#: ../satellite_tools/messages.py:26
#, python-format
msgid ""
"\n"
"ERROR: executing step %s. Error is:\n"
"%s\n"
msgstr ""

#: ../satellite_tools/messages.py:31
#, python-format
msgid ""
"\n"
"ERROR: there was a problem accessing the channel data from your temporary\n"
"       repository. Did you migrate all of the data from the channel ISOs\n"
"       do this directory? If so, please recheck the channels ISOs, ensure\n"
"       that you have them all, and then iteratively remount and repopulate\n"
"       the temporary repository (%s).\n"
msgstr ""

#: ../satellite_tools/messages.py:39
#, python-format
msgid ""
"\n"
"ERROR: there was a problem synchronizing the information.\n"
"       Error message: %s\n"
msgstr ""

#: ../satellite_tools/messages.py:44
#, python-format
msgid ""
"\n"
"ERROR: There was a problem communicating with the ISS Master.\n"
"       Depending on the specific error details, please review your "
"configuration,\n"
"       basic network connectivity, and/or name resolution, and try again.\n"
"       Error message: %s\n"
msgstr ""

#: ../satellite_tools/messages.py:51
#, python-format
msgid ""
"\n"
"ERROR: There was a problem communicating with the ISS Master.\n"
"       If the master satellite is older than v5.3, it does not have ISS "
"capability.\n"
"       Otherwise, depending on the specific error details, please review "
"your\n"
"       configuration, basic network connectivity, and/or name resolution, "
"and try again.\n"
"       Error message: %s\n"
msgstr ""

#: ../satellite_tools/messages.py:59
#, python-format
msgid ""
"\n"
"ERROR: a child-channel cannot be synced without its parent being synced as\n"
"       well. A parent needs to be either (a) previously synced or (b) "
"synced\n"
"       in tandem with the desired child-channel. Missing parents for this\n"
"       transaction:\n"
"       %s\n"
msgstr ""

#: ../satellite_tools/messages.py:67
#, python-format
msgid ""
"\n"
"ERROR: you are not entitled to sync a channel in this set of channels.\n"
"Please contact your SUSE Manager contact\n"
"%s"
msgstr ""

#: ../satellite_tools/messages.py:72
#, python-format
msgid "  ERROR: not enough free space (%s KB) on device."
msgstr ""

#: ../satellite_tools/messages.py:74
#, python-format
msgid "    %3d/%s Fetch successful: %s (%s bytes)"
msgstr ""

#: ../satellite_tools/messages.py:75
#, python-format
msgid "    Extinct package:  %s"
msgstr ""

#: ../satellite_tools/messages.py:76
#, python-format
msgid "   Total size: %s"
msgstr ""

#: ../satellite_tools/messages.py:77
#, python-format
msgid "      Downloaded %s of %s. Estimated remaining time: %s"
msgstr ""

#: ../satellite_tools/messages.py:78
#, python-format
msgid "    Fetch unsuccessful: %s"
msgstr ""

#: ../satellite_tools/messages.py:79
#, python-format
msgid "   RPM fetch summary: %s"
msgstr ""

#: ../satellite_tools/messages.py:80
#, python-format
msgid "       success: %d"
msgstr ""

#: ../satellite_tools/messages.py:81
#, python-format
msgid "       failed:  %d"
msgstr ""

#: ../satellite_tools/messages.py:82
#, python-format
msgid "       extinct: %d"
msgstr ""

#: ../satellite_tools/messages.py:84
#, python-format
msgid "   Retrieving / parsing *relevant* package metadata: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:85
#, python-format
msgid "   Retrieving / parsing errata data: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:86
#, python-format
msgid "   Retrieving / parsing kickstart data: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:87
#, python-format
msgid "   Retrieving / parsing kickstart tree files: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:88
#, python-format
msgid "   Importing *relevant* package metadata: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:89
msgid "   * WARNING: this may be a slow process."
msgstr ""

#: ../satellite_tools/messages.py:90
msgid "Linking packages to channels"
msgstr ""

#: ../satellite_tools/messages.py:91
#, python-format
msgid "   Importing *relevant* errata: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:92
msgid "   No new kickstartable tree to import"
msgstr ""

#: ../satellite_tools/messages.py:93
#, python-format
msgid "Importing kickstartable trees (%d)"
msgstr ""

#: ../satellite_tools/messages.py:94
#, python-format
msgid "Imported kickstartable trees (%d)"
msgstr ""

#: ../satellite_tools/reposync.py:111 ../satellite_tools/satsync.py:439
msgid "+++ sending log as an email +++"
msgstr ""

#: ../satellite_tools/reposync.py:114
#, python-format
msgid "%s sync. report from %s"
msgstr ""

#: ../satellite_tools/reposync.py:124 ../satellite_tools/satsync.py:449
msgid "+++ email requested, but there is nothing to send +++"
msgstr ""

#: ../satellite_tools/rhn_satellite_activate.py:198
#, python-format
msgid ""
"\"%s\" (specified in commandline)\n"
"could not be opened and read:\n"
"%s"
msgstr ""

#: ../satellite_tools/rhn_satellite_activate.py:205
#, python-format
msgid ""
"\"%s\" could not be opened\n"
"and/or written to:\n"
"%s"
msgstr ""

#: ../satellite_tools/satsync.py:258
#, python-format
msgid "No handler for step %s"
msgstr ""

#. Try one more time - this time it should be faster since
#. everything should be cached
#: ../satellite_tools/satsync.py:270
msgid "Environment changed, trying again..."
msgstr ""

#: ../satellite_tools/satsync.py:277
msgid "ERROR: Encountered IntegrityError: \n"
msgstr ""

#: ../satellite_tools/satsync.py:285
msgid "Repeated failures"
msgstr ""

#: ../satellite_tools/satsync.py:290
#, python-format
msgid ""
"    Import complete:\n"
"        Begin time: %s\n"
"        End time:   %s\n"
"        Elapsed:    %s\n"
"          "
msgstr ""

#: ../satellite_tools/satsync.py:311
msgid "hours"
msgstr ""

#: ../satellite_tools/satsync.py:311
msgid "minutes"
msgstr ""

#: ../satellite_tools/satsync.py:311
msgid "seconds"
msgstr ""

#: ../satellite_tools/satsync.py:357
msgid ""
"ERROR: The dump is missing package data, use --no-rpms to skip this step or "
"fix the content to include package data."
msgstr ""

#. the orgs() method doesn't exist; that's fine we just
#. won't sync the orgs
#: ../satellite_tools/satsync.py:404
msgid "The SUSE Manager master does not support syncing orgs data."
msgstr ""

#: ../satellite_tools/satsync.py:404
msgid "Skipping..."
msgstr ""

#: ../satellite_tools/satsync.py:442
#, python-format
msgid "SUSE Manager Inter Server sync. report from %s"
msgstr ""

#: ../satellite_tools/satsync.py:521
msgid " - file-system synchronization"
msgstr ""

#: ../satellite_tools/satsync.py:533 ../satellite_tools/satsync.py:541
msgid " - live synchronization"
msgstr ""

#: ../satellite_tools/satsync.py:534
#, python-brace-format
msgid ""
"ERROR: Live content synchronizing with RHN Classic Hosted is no longer "
"supported.\n"
"Please use the cdn-sync command instead unless you are attempting to sync "
"from another {PRODUCT_NAME} via Inter-Server-Sync (ISS), or from local "
"content on disk via Channel Dump ISOs."
msgstr ""

#: ../satellite_tools/satsync.py:542
#, python-format
msgid "   url: %s"
msgstr ""

#: ../satellite_tools/satsync.py:543
#, python-format
msgid "   debug/output level: %s"
msgstr ""

#: ../satellite_tools/satsync.py:553
msgid "ERROR: this server must be registered with SUSE Manager."
msgstr ""

#: ../satellite_tools/satsync.py:575
#, python-format
msgid "Retrieving / parsing %s data"
msgstr ""

#: ../satellite_tools/satsync.py:585 ../satellite_tools/satsync.py:600
msgid "*** SYSTEM INTERRUPT CALLED ***"
msgstr ""

#: ../satellite_tools/satsync.py:593
msgid "ERROR: fatal parser exception occurred "
msgstr ""

#: ../satellite_tools/satsync.py:594
#, python-format
msgid "(line: %s, col: %s msg: %s)"
msgstr ""

#: ../satellite_tools/satsync.py:598
#, python-format
msgid "ERROR: parser exception occurred: %s"
msgstr ""

#: ../satellite_tools/satsync.py:603
msgid "ERROR: exception (during parse) occurred: "
msgstr ""

#: ../satellite_tools/satsync.py:604
#, python-format
msgid ""
"   Encountered some errors with %s data (see logs (%s) for more information)"
msgstr ""

#: ../satellite_tools/satsync.py:606
#, python-format
msgid "   Encountered some errors with %s data:"
msgstr ""

#: ../satellite_tools/satsync.py:607
#, python-format
msgid "   ------- %s PARSE/IMPORT ERROR -------"
msgstr ""

#: ../satellite_tools/satsync.py:609
msgid "   ---------------------------------------"
msgstr ""

#: ../satellite_tools/satsync.py:612
#, python-format
msgid "%s data complete"
msgstr ""

#: ../satellite_tools/satsync.py:665
msgid "Retrieving / parsing channel data"
msgstr ""

#: ../satellite_tools/satsync.py:718
msgid "Channel data complete"
msgstr ""

#: ../satellite_tools/satsync.py:736
#, python-format
msgid "%10s import from %s"
msgstr ""

#: ../satellite_tools/satsync.py:739
#, python-format
msgid "%10s import from %s - %s"
msgstr ""

#: ../satellite_tools/satsync.py:743
#, python-format
msgid "%10s"
msgstr ""

#: ../satellite_tools/satsync.py:750
msgid "p"
msgstr ""

#: ../satellite_tools/satsync.py:752
msgid "."
msgstr ""

#: ../satellite_tools/satsync.py:758
msgid "   p = previously imported/synced channel"
msgstr ""

#: ../satellite_tools/satsync.py:759
msgid "   . = channel not yet imported/synced"
msgstr ""

#: ../satellite_tools/satsync.py:765
msgid "   e = channel no longer supported (end-of-service)"
msgstr ""

#: ../satellite_tools/satsync.py:767
msgid "   ? = channel label invalid --- typo?"
msgstr ""

#: ../satellite_tools/satsync.py:771
#, python-format
msgid "   %s:"
msgstr ""

#: ../satellite_tools/satsync.py:772
#, python-format
msgid "      %s %-40s %4s %s"
msgstr ""

#: ../satellite_tools/satsync.py:773
msgid "base-channels"
msgstr ""

#: ../satellite_tools/satsync.py:786 ../satellite_tools/satsync.py:1603
msgid "NONE RELEVANT"
msgstr ""

#: ../satellite_tools/satsync.py:808
msgid "end-of-service"
msgstr ""

#: ../satellite_tools/satsync.py:809
msgid "e"
msgstr ""

#: ../satellite_tools/satsync.py:815
msgid "   typos:"
msgstr ""

#: ../satellite_tools/satsync.py:816
msgid "?"
msgstr ""

#: ../satellite_tools/satsync.py:831
#, python-format
msgid "XXX: imported channels: %s"
msgstr ""

#: ../satellite_tools/satsync.py:832
#, python-format
msgid "XXX:   cached channels: %s"
msgstr ""

#: ../satellite_tools/satsync.py:837
msgid "XXX: list channels called"
msgstr ""

#: ../satellite_tools/satsync.py:855
msgid "ERROR: these channels either do not exist or are not available:"
msgstr ""

#: ../satellite_tools/satsync.py:859
#, python-format
msgid "       (to see a list of channel labels: %s --list-channels)"
msgstr ""

#: ../satellite_tools/satsync.py:904
#, python-format
msgid "   Retrieving / parsing short package metadata: %s (%s)"
msgstr ""

#: ../satellite_tools/satsync.py:965
#, python-format
msgid "Diffing package metadata (what's missing locally?): %s"
msgstr ""

#: ../satellite_tools/satsync.py:971 ../satellite_tools/satsync.py:1254
msgid "Diffing:    "
msgstr ""

#: ../satellite_tools/satsync.py:988
msgid "ERROR: incremental dump skipped"
msgstr ""

#: ../satellite_tools/satsync.py:1079
msgid "Downloading rpm packages"
msgstr ""

#: ../satellite_tools/satsync.py:1084
#, python-format
msgid "   Fetching any missing RPMs: %s (%s)"
msgstr ""

#: ../satellite_tools/satsync.py:1085 ../satellite_tools/satsync.py:1153
msgid "NONE MISSING"
msgstr ""

#: ../satellite_tools/satsync.py:1094
msgid "Processing rpm packages complete"
msgstr ""

#: ../satellite_tools/satsync.py:1121
msgid "Downloading package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1146
msgid "Downloading srpm packages"
msgstr ""

#: ../satellite_tools/satsync.py:1152
#, python-format
msgid "   Fetching any missing SRPMs: %s (%s)"
msgstr ""

#: ../satellite_tools/satsync.py:1249
#, python-format
msgid "Diffing source package metadata (what's missing locally?): %s"
msgstr ""

#: ../satellite_tools/satsync.py:1260
msgid "Downloading source package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1338 ../satellite_tools/satsync.py:2027
#, python-format
msgid "Unable to save file %s: %s"
msgstr ""

#. for
#. Retried a number of times and it still failed; log the
#. file as being failed and move on
#: ../satellite_tools/satsync.py:1345
#, python-format
msgid "Failed to fetch file %s"
msgstr ""

#: ../satellite_tools/satsync.py:1350
msgid "Downloading kickstartable trees metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1365
msgid "Downloading kickstartable trees files"
msgstr ""

#: ../satellite_tools/satsync.py:1504
#, python-format
msgid "Grabbing all patches for channel %s"
msgstr ""

#: ../satellite_tools/satsync.py:1554
msgid "Downloading patch data"
msgstr ""

#: ../satellite_tools/satsync.py:1556
msgid "Forcing download of all patch data for requested channels."
msgstr ""

#: ../satellite_tools/satsync.py:1571
msgid "Downloading patch data complete"
msgstr ""

#: ../satellite_tools/satsync.py:1576 ../satellite_tools/satsync.py:1597
msgid "Downloading:"
msgstr ""

#: ../satellite_tools/satsync.py:1579
msgid " - complete"
msgstr ""

#: ../satellite_tools/satsync.py:1624
msgid "Importing source package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1627
msgid "Importing package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1635
msgid "Importing:  "
msgstr ""

#. not in the cache
#: ../satellite_tools/satsync.py:1703
msgid ""
"Package Not Found in Cache, Clear the Cache "
"to                                  Regenerate it."
msgstr ""

#: ../satellite_tools/satsync.py:1709
msgid "Importing channel patches"
msgstr ""

#: ../satellite_tools/satsync.py:1714
#, python-format
msgid "Importing %s patches for channel %s."
msgstr ""

#. Incomplete configuration
#: ../satellite_tools/satsync.py:2113
msgid "ERROR: server.mount_point not set in the configuration file"
msgstr ""

#: ../satellite_tools/satsync.py:2117
#, python-format
msgid "ERROR: server.mount_point %s do not exist"
msgstr ""

#: ../satellite_tools/satsync.py:2122
#, python-format
msgid "ERROR: path under server.mount_point (%s)  do not exist"
msgstr ""

#: ../satellite_tools/satsync.py:2199
#, python-format
msgid "Commandline: %s"
msgstr ""

#: ../satellite_tools/satsync.py:2202
#, python-format
msgid ""
"DEBUG ONLY: max. batch-size for XML/database-import processing (1..%s).\"man "
"satellite-sync\" for more information."
msgstr ""

#: ../satellite_tools/satsync.py:2205
msgid "alternative SSL CA Cert (fullpath to cert file)"
msgstr ""

#: ../satellite_tools/satsync.py:2207
msgid "process data for this channel only"
msgstr ""

#: ../satellite_tools/satsync.py:2209
msgid ""
"disk dump will be considered to be a full export; see \"man satellite-sync\" "
"for more information."
msgstr ""

#: ../satellite_tools/satsync.py:2212
msgid "existing custom channels will also be synced (unless -c is used)"
msgstr ""

#: ../satellite_tools/satsync.py:2214
#, python-format
msgid ""
"override debug level set in /etc/rhn/rhn.conf (which is currently set at %s)."
msgstr ""

#: ../satellite_tools/satsync.py:2216
#, python-format
msgid "requested version of XML dump (default: %s)"
msgstr ""

#: ../satellite_tools/satsync.py:2218
msgid "e-mail a report of what was synced/imported"
msgstr ""

#: ../satellite_tools/satsync.py:2220
msgid "forcibly process all (not a diff of) patch metadata"
msgstr ""

#: ../satellite_tools/satsync.py:2222
msgid "Do not use an http proxy under any circumstances."
msgstr ""

#: ../satellite_tools/satsync.py:2224
msgid "alternative http proxy (hostname:port)"
msgstr ""

#: ../satellite_tools/satsync.py:2226
msgid "alternative http proxy username"
msgstr ""

#: ../satellite_tools/satsync.py:2228
msgid "alternative http proxy password"
msgstr ""

#: ../satellite_tools/satsync.py:2230
msgid "parent SUSE Manager to import content from"
msgstr ""

#: ../satellite_tools/satsync.py:2232
msgid "list all available channels and exit"
msgstr ""

#: ../satellite_tools/satsync.py:2234
msgid "help on all error codes mgr-inter-sync returns"
msgstr ""

#: ../satellite_tools/satsync.py:2236
msgid "source mount point for import - disk update only"
msgstr ""

#: ../satellite_tools/satsync.py:2238
msgid "do not process patch data"
msgstr ""

#: ../satellite_tools/satsync.py:2240
msgid "do not process kickstart data (provisioning only)"
msgstr ""

#: ../satellite_tools/satsync.py:2242
msgid "do not process full package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:2244
msgid "do not download, or process any RPMs"
msgstr ""

#: ../satellite_tools/satsync.py:2246
msgid "turn off SSL (not recommended)"
msgstr ""

#: ../satellite_tools/satsync.py:2248
msgid "org to which the sync imports data. defaults to the admin account"
msgstr ""

#: ../satellite_tools/satsync.py:2250
msgid "print the configuration and exit"
msgstr ""

#: ../satellite_tools/satsync.py:2252
msgid "alternative server with which to connect (hostname)"
msgstr ""

#: ../satellite_tools/satsync.py:2254
msgid "synchronize to this step (man satellite-sync for more info)"
msgstr ""

#: ../satellite_tools/satsync.py:2256
msgid "write complete data to tempfile before streaming to remainder of app"
msgstr ""

#: ../satellite_tools/satsync.py:2258
msgid "DEBUG ONLY: alternative path to digital system id"
msgstr ""

#: ../satellite_tools/satsync.py:2260
msgid "alternative email address(es) for sync output (--email option)"
msgstr ""

#: ../satellite_tools/satsync.py:2262
msgid "do not remove rpms when importing from local dump"
msgstr ""

#: ../satellite_tools/satsync.py:2264
msgid ""
"the fully qualified domain name of the master Satellite. Valid with --mount-"
"point only. Required if you want to import org data and channel permissions."
msgstr ""

#: ../satellite_tools/satsync.py:2274
#, python-format
msgid "ERROR: these arguments make no sense in this context (try --help): %s"
msgstr ""

#. An SQL error is fatal... crash and burn
#: ../satellite_tools/satsync.py:2286
#, python-format
msgid "ERROR: Can't connect to the database: %s"
msgstr ""

#: ../satellite_tools/satsync.py:2287
msgid "ERROR: Check if your database is running."
msgstr ""

#: ../satellite_tools/satsync.py:2322
#, python-format
msgid "ERROR: --debug-level takes an in integer value within the range %s."
msgstr ""

#: ../satellite_tools/satsync.py:2324
msgid "  0  - little logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2325
msgid "  1  - minimal logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2326
msgid "  2  - normal level of logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2327
msgid "  3  - lots of logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2328
msgid "  4+ - excessive logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2341
msgid "ERROR: The --master option is only valid with the --mount-point option"
msgstr ""

#: ../satellite_tools/satsync.py:2351
#, python-format
msgid "ERROR: Unable to lookup Org Id %s"
msgstr ""

#: ../satellite_tools/satsync.py:2360
msgid ""
"WARNING: --list-channels option overrides any --step option. --step ignored."
msgstr ""

#: ../satellite_tools/satsync.py:2375
#, python-format
msgid ""
"ERROR: '%s' is not a valid step. See 'man mgr-inter-sync' for more detail."
msgstr ""

#: ../satellite_tools/satsync.py:2407
msgid ""
"ERROR: No channels currently imported; try mgr-inter-sync --list-channels; "
"then mgr-inter-sync -c chn0 -c chn1..."
msgstr ""

#. int(None) --> TypeError
#. int('a')  --> ValueError
#: ../satellite_tools/satsync.py:2457 ../satellite_tools/satsync.py:2461
msgid "ERROR: --batch-size must have a value within the range: 1..50"
msgstr ""

#: ../satellite_tools/satsync.py:2469
#, python-format
msgid "ERROR: no such directory %s"
msgstr ""

#: ../satellite_tools/satsync.py:2474
msgid "Error Codes: Returned codes means:"
msgstr ""

#: ../satellite_tools/satsync.py:2475
msgid " -1  - Could not lock file or KeyboardInterrupt or SystemExit"
msgstr ""

#: ../satellite_tools/satsync.py:2476
msgid "  0  - User interrupted or intentional exit"
msgstr ""

#: ../satellite_tools/satsync.py:2477
msgid "  1  - attempting to run more than one instance of mgr-inter-sync."
msgstr ""

#: ../satellite_tools/satsync.py:2478
msgid "  2  - Unable to find synchronization tools."
msgstr ""

#: ../satellite_tools/satsync.py:2479
msgid "  3  - a general socket exception occurred"
msgstr ""

#: ../satellite_tools/satsync.py:2480
msgid "  4  - an SSL error occurred. Recheck your SSL settings."
msgstr ""

#: ../satellite_tools/satsync.py:2481
msgid "  5  - ISS error"
msgstr ""

#: ../satellite_tools/satsync.py:2482
msgid "  6  - unhandled exception occurred"
msgstr ""

#: ../satellite_tools/satsync.py:2483
msgid "  7  - unknown sync error"
msgstr ""

#: ../satellite_tools/satsync.py:2484
msgid "  8  - ERROR: must be root to execute"
msgstr ""

#: ../satellite_tools/satsync.py:2485
msgid "  9  - rpclib fault during synchronization init"
msgstr ""

#: ../satellite_tools/satsync.py:2486
msgid "  10 - synchronization init error"
msgstr ""

#: ../satellite_tools/satsync.py:2487
msgid "  11 - Error parsing XML stream"
msgstr ""

#: ../satellite_tools/satsync.py:2488
msgid "  12 - Channel do not exist"
msgstr ""

#: ../satellite_tools/satsync.py:2489
msgid "  13 - SQL error during importing package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:2490
msgid "  14 - SQL error during linking channel packages"
msgstr ""

#: ../satellite_tools/satsync.py:2491
msgid "  15 - SQL error during xml processing"
msgstr ""

#: ../satellite_tools/satsync.py:2492
msgid "  16 - server.mount_point not set in the configuration file"
msgstr ""

#: ../satellite_tools/satsync.py:2493
msgid ""
"  17 - SQL error during retrieving the channels already imported in the SUSE "
"Manager database"
msgstr ""

#: ../satellite_tools/satsync.py:2494
msgid "  18 - Wrong db connection string in rhn.conf"
msgstr ""

#: ../satellite_tools/satsync.py:2495
msgid "  19 - Bad arguments"
msgstr ""

#: ../satellite_tools/satsync.py:2496
msgid "  20 - Could not connect to db."
msgstr ""

#: ../satellite_tools/satsync.py:2497
msgid "  21 - Bad debug level"
msgstr ""

#: ../satellite_tools/satsync.py:2498
msgid "  22 - Not valid step"
msgstr ""

#: ../satellite_tools/satsync.py:2499
msgid "  24 - no such file"
msgstr ""

#: ../satellite_tools/satsync.py:2500
msgid "  25 - no such directory"
msgstr ""

#: ../satellite_tools/satsync.py:2501
msgid "  26 - mount_point does not exist"
msgstr ""

#: ../satellite_tools/satsync.py:2502
msgid "  27 - No such org"
msgstr ""

#: ../satellite_tools/satsync.py:2503
msgid "  28 - error: --master is only valid with --mount-point"
msgstr ""

#: ../satellite_tools/satsync.py:2510
#, python-format
msgid "ERROR: unknown dump version, try one of %s"
msgstr ""
 0707010000005B000081B40000000000000000000000016290A0C10000B621000000000000000000000000000000000000001C00000000spacewalk-backend/po/ast.po   # SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
#
# Translators:
msgid ""
msgstr ""
"Project-Id-Version: Spacewalk\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-10-16 13:34+0200\n"
"PO-Revision-Date: 2011-03-04 16:08+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Asturian (http://www.transifex.com/projects/p/fedora/language/"
"ast/)\n"
"Language: ast\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"

#: ../server/apacheAuth.py:66
#, python-format
msgid "incomplete proxy authentication token: %s"
msgstr ""

#: ../server/apacheAuth.py:84
#, python-format
msgid "Sent proxy signature %s does not match ours %s."
msgstr ""

#: ../server/apacheAuth.py:119
msgid "declined proxy authentication"
msgstr ""

#: ../server/apacheRequest.py:59
#, python-format
msgid "Invalid request received (%s)."
msgstr ""

#: ../server/apacheRequest.py:120
#, python-format
msgid ""
"IMPORTANT MESSAGE FOLLOWS:\n"
"%s"
msgstr ""

#: ../server/apacheRequest.py:149
#, python-format
msgid ""
"While running '%s': caught\n"
"%s : %s\n"
msgstr ""

#: ../server/apacheRequest.py:606
#, python-format
msgid "Invalid URI %s"
msgstr ""

#: ../server/configFilesHandler.py:129 ../server/handlers/app/packages.py:192
#: ../server/handlers/xmlrpc/registration.py:215
#: ../server/handlers/xmlrpc/registration.py:1168
#: ../server/handlers/xmlrpc/registration.py:1307
#, python-format
msgid ""
"\n"
"                   %s Account has been deactivated on this server.\n"
"                   Please contact your Org administrator for more help."
msgstr ""

#: ../server/handlers/applet/applet.py:78
#, python-brace-format
msgid "Your system was not found in the {PRODUCT_NAME} database"
msgstr ""

#: ../server/handlers/sat/auth.py:45
msgid "ISS is disabled on this server."
msgstr ""

#: ../server/handlers/sat/auth.py:50
#, python-format
msgid "Server \"%s\" is not enabled for ISS."
msgstr ""

#: ../server/handlers/xmlrpc/errata.py:64
#, python-format
msgid "Expected a package name, not: %s"
msgstr ""

#: ../server/handlers/xmlrpc/errata.py:115
#, python-format
msgid "Expected a package, not: %s"
msgstr ""

#: ../server/handlers/xmlrpc/proxy.py:65
#, python-format
msgid "SUSE Manager Proxy service not enabled for server profile: \"%s\""
msgstr ""

#: ../server/handlers/xmlrpc/proxy.py:85
msgid "Invalid session key"
msgstr ""

#: ../server/handlers/xmlrpc/proxy.py:93
msgid "This server ID no longer exists"
msgstr ""

#: ../server/handlers/xmlrpc/queue.py:433
#, python-format
msgid "Invalid action value type %s (%s)"
msgstr ""

#: ../server/handlers/xmlrpc/queue.py:464
#, python-format
msgid "Action %s does not belong to server %s"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:194
msgid "Required data missing"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:198
msgid "Required members missing"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:207
msgid "Attempt to register a system to an invalid username"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:839
msgid "Invalid system release version requested"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1063
msgid ""
"Unable to find a valid network interface, both ipaddr and ip6addr not found."
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1115
#, python-brace-format
msgid "{PRODUCT_NAME} Welcome Message"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1125
msgid "Privacy Statement"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1146
msgid "Expected a dictionary as a product argument"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1374
#, python-format
msgid "Invalid value '%s' for %s (%s)"
msgstr ""

#: ../server/handlers/xmlrpc/scap.py:104
msgid "Invalid system_id/action_id pair."
msgstr ""

#: ../server/handlers/xmlrpc/up2date.py:233
#, python-format
msgid "Invalid value %s (%s)"
msgstr ""

#: ../server/importlib/userAuth.py:98
msgid "You are not authorized to manage packages in the null org"
msgstr ""

#: ../server/importlib/userAuth.py:103
#, python-format
msgid "You are not allowed to manage packages in the %s org"
msgstr ""

#: ../server/importlib/userAuth.py:121
msgid "You are not allowed to perform administrative tasks"
msgstr ""

#: ../server/importlib/userAuth.py:144
#, python-format
msgid ""
"You are not allowed to manage channel %s, or that channel does not exist"
msgstr ""

#: ../server/importlib/userAuth.py:204
#, python-format
msgid ""
"\n"
"               %s Account has been deactivated on this server.\n"
"               Please contact your Org administrator for more help."
msgstr ""

#: ../server/rhnChannel.py:1992
#, python-format
msgid ""
"Your account does not have access to any channels matching "
"(release='%(release)s', arch='%(arch)s')%(www_activation)s"
msgstr ""

#: ../server/rhnChannel.py:2002
msgid ""
"\n"
"If you have a registration number, please register with it first at http://"
"www.redhat.com/apps/activate/ and then try again.\n"
"\n"
msgstr ""

#: ../server/rhnChannel.py:2012
#, python-format
msgid "Insufficient subscription permissions for release (%s, %s"
msgstr ""

#. Various messages that can be reused
#.
#. bretm 02/07/2007 -- when we have better old-client documentation, probably
#. will be safe to get rid of all this crap
#: ../server/rhnChannel.py:2276 ../server/rhnChannel.py:2287
#: ../server/rhnChannel.py:2302
msgid "System Registered but Inactive"
msgstr ""

#: ../server/rhnChannel.py:2277
#, python-format
msgid ""
"\n"
"Invalid Architecture and OS release combination (%s, %s).\n"
"Your system has been registered, but will not receive updates\n"
"because it is not subscribed to a channel. If you have not yet\n"
"activated your product for service, please visit our website at:\n"
"\n"
"     http://www.redhat.com/apps/activate/\n"
"\n"
"...to activate your product."
msgstr ""

#: ../server/rhnChannel.py:2288
#, python-format
msgid ""
"\n"
"Invalid Architecture and OS release combination (%s, %s).\n"
"Your system has been registered, but will not receive updates\n"
"because it could not be subscribed to a base channel.\n"
"Please contact your organization administrator for assistance.\n"
msgstr ""

#: ../server/rhnChannel.py:2295
#, python-format
msgid ""
"\n"
"  This system has been successfully registered, but is not yet entitled\n"
"  to service.  To entitle this system to service, login to the web site at:\n"
"\n"
"  %(entitlement_url)s\n"
msgstr ""

#: ../server/rhnChannel.py:2303
#, python-format
msgid ""
"\n"
"  This system has been successfully registered, but no service entitlements\n"
"  were available.  To entitle this system to service, login to the web site "
"at:\n"
"\n"
"  %(entitlement_url)s\n"
msgstr ""

#: ../server/rhnHandler.py:62
msgid "Please run rhn_register as root on this client"
msgstr ""

#: ../server/rhnHandler.py:75
#, python-format
msgid "Service not enabled for system profile: \"%s\""
msgstr ""

#: ../server/rhnPackage.py:49 ../server/rhnPackage.py:87
#: ../server/rhnPackage.py:107 ../server/rhnPackage.py:158
#, python-format
msgid "Invalid RPM package %s requested"
msgstr ""

#: ../server/rhnPackage.py:112
msgid "Package not found"
msgstr ""

#: ../server/rhnServer/server_class.py:97
#, python-format
msgid "Architecture `%s' is not supported"
msgstr ""

#: ../server/rhnServer/server_token.py:78
#, python-format
msgid "Token `%s' has more than one base channel assigned"
msgstr ""

#: ../server/rhnServer/server_token.py:80
msgid "Conflicting base channels"
msgstr ""

#: ../server/rhnServer/server_token.py:190
#, python-format
msgid "Failed to add server to group %s"
msgstr ""

#: ../server/rhnServer/server_token.py:503
#, python-format
msgid "Maximum usage count of %s reached"
msgstr ""

#: ../server/rhnServer/server_token.py:744
msgid ""
"Stacking of re-registration tokens with different base entitlements is not "
"supported"
msgstr ""

#: ../server/rhnServer/server_token.py:811
#, python-format
msgid "Could not find token '%s'"
msgstr ""

#. Cannot use activation keys from different orgs
#: ../server/rhnServer/server_token.py:843
msgid "Tokens from mismatching orgs"
msgstr ""

#. Two tokens with different kickstart sessions
#: ../server/rhnServer/server_token.py:853
msgid "Kickstart session mismatch"
msgstr ""

#: ../server/rhnServer/server_token.py:877
msgid "Stacking of re-registration tokens is not supported"
msgstr ""

#: ../server/rhnUser.py:289 ../server/rhnUser.py:292
msgid "Invalid username/password combination"
msgstr ""

#. nope, not reserved either
#: ../server/rhnUser.py:467
#, python-format
msgid "Username `%s' has not been reserved"
msgstr ""

#. New accounts have to specify an e-mail address
#: ../server/rhnUser.py:473
msgid "E-mail address not specified"
msgstr ""

#: ../server/rhnUser.py:509
#, python-format
msgid "username should be at least %d characters"
msgstr ""

#: ../server/rhnUser.py:512
#, python-format
msgid "username should be less than %d characters"
msgstr ""

#: ../server/rhnUser.py:523
#, python-format
msgid "username = `%s', invalid character `%s'"
msgstr ""

#: ../server/rhnUser.py:542
#, python-format
msgid "Please limit your e-mail address to %s chars"
msgstr ""

#: ../server/rhnUser.py:623
#, python-format
msgid "password must be at least %d characters"
msgstr ""

#: ../server/rhnUser.py:626
#, python-format
msgid "Password must be shorter than %d characters"
msgstr ""

#: ../server/rhnUser.py:644
#, python-format
msgid "password contains character `%s'"
msgstr ""

#: ../server/rhnUser.py:651
#, python-format
msgid "username should be at least %d characters long"
msgstr ""

#: ../server/rhnUser.py:662
#, python-format
msgid "Cannot register usernames ending with %s"
msgstr ""

#. 0-999: Red Hat client/client-like interaction errors:
#: ../common/rhnException.py:53
msgid "This does not appear to be a valid username."
msgstr ""

#: ../common/rhnException.py:54
msgid "Invalid username and password combination."
msgstr ""

#: ../common/rhnException.py:55
msgid "This login is already taken, or the password is incorrect."
msgstr ""

#: ../common/rhnException.py:56
msgid "Permission denied."
msgstr ""

#: ../common/rhnException.py:57
msgid "Object not found."
msgstr ""

#: ../common/rhnException.py:58
msgid "Invalid System Digital ID."
msgstr ""

#: ../common/rhnException.py:59
msgid "Invalid System Credentials."
msgstr ""

#: ../common/rhnException.py:60
msgid "Could not retrieve user data from database."
msgstr ""

#: ../common/rhnException.py:61
msgid "Valid username required."
msgstr ""

#: ../common/rhnException.py:62
msgid "Valid password required."
msgstr ""

#: ../common/rhnException.py:63
msgid "Minimum username length violation."
msgstr ""

#: ../common/rhnException.py:64
msgid "Minimum password length violation."
msgstr ""

#: ../common/rhnException.py:65
msgid "The username contains invalid characters."
msgstr ""

#: ../common/rhnException.py:66
msgid "File not found."
msgstr ""

#: ../common/rhnException.py:67
msgid "Architecture and OS version combination is not supported."
msgstr ""

#: ../common/rhnException.py:68
msgid "Could not retrieve system data from database."
msgstr ""

#: ../common/rhnException.py:69
msgid "Invalid arguments passed to function."
msgstr ""

#: ../common/rhnException.py:70
msgid "Unable to retrieve requested entry."
msgstr ""

#: ../common/rhnException.py:71
msgid "Could not update database entry."
msgstr ""

#: ../common/rhnException.py:72
msgid "Unsupported server architecture."
msgstr ""

#: ../common/rhnException.py:73
#, python-format
msgid ""
"\n"
"     The anonymous server functionality is no longer available.\n"
"\n"
"     Please re-register this system by running mgr_register as root.\n"
"     Please visit https://%(hostname)s/rhn/systems/SystemEntitlements.do\n"
"     or login at https://%(hostname)s, and from the \"Overview\" tab,\n"
"     select \"Subscription Management\" to enable the service for this "
"system.\n"
"     "
msgstr ""

#: ../common/rhnException.py:81
msgid "Record not available in the database."
msgstr ""

#: ../common/rhnException.py:82
msgid "Invalid value for entry."
msgstr ""

#: ../common/rhnException.py:83
#, python-format
msgid ""
"\n"
"     This system does not have a valid entitlement for SUSE Manager.\n"
"     Please visit https://%(hostname)s/rhn/systems/SystemEntitlements.do\n"
"     or login at https://%(hostname)s, and from the \"Overview\" tab,\n"
"     select \"Subscription Management\" to enable the service for this "
"system.\n"
"     "
msgstr ""

#: ../common/rhnException.py:89
msgid "Channel error"
msgstr ""

#: ../common/rhnException.py:90
msgid "Client session token is invalid."
msgstr ""

#: ../common/rhnException.py:91
msgid "Client session token has expired."
msgstr ""

#: ../common/rhnException.py:92
msgid "You are not authorized to retrieve the requested object."
msgstr ""

#: ../common/rhnException.py:93
msgid "Invalid action"
msgstr ""

#: ../common/rhnException.py:94
msgid "You are not allowed to perform administrative tasks on this system."
msgstr ""

#: ../common/rhnException.py:96
msgid "The system is already subscribed to the specified channel."
msgstr ""

#: ../common/rhnException.py:97
msgid "The system is not currently subscribed to the specified channel."
msgstr ""

#: ../common/rhnException.py:98
msgid "The specified channel does not exist."
msgstr ""

#: ../common/rhnException.py:99
msgid "Invalid channel version."
msgstr ""

#: ../common/rhnException.py:100
msgid ""
"\n"
"     User group membership limits exceeded.\n"
"\n"
"     The current settings for your account do not allow you to add another\n"
"     user account. Please check with the organization administrator for "
"your\n"
"     account if the maximum number of users allowed to subscribe to server "
"needs\n"
"     to be changed.\n"
"     "
msgstr ""

#: ../common/rhnException.py:108
msgid ""
"\n"
"     System group membership limits exceeded.\n"
"\n"
"     The current settings for your account do not allow you to add another\n"
"     system profile. Please check with the organization administrator for "
"your\n"
"     account for modifying the maximum number of system profiles that can "
"be\n"
"     subscribed to your account.\n"
"     "
msgstr ""

#: ../common/rhnException.py:116
msgid ""
"\n"
"     Invalid architecture.\n"
"\n"
"     The architecture of the package is not supported by\n"
"     "
msgstr ""

#: ../common/rhnException.py:121
msgid "Invalid RPM header"
msgstr ""

#: ../common/rhnException.py:122
msgid ""
"\n"
"    This system is already registered as a Salt Minion. If you want to "
"register it as a traditional client\n"
"    please delete it first via the web UI or API and then register it using "
"the traditional tools.\n"
"    "
msgstr ""

#. For the uploading tools
#: ../common/rhnException.py:127
msgid "Invalid information uploaded to the server"
msgstr ""

#: ../common/rhnException.py:128
msgid "Error uploading network interfaces configuration."
msgstr ""

#: ../common/rhnException.py:129
msgid ""
"\n"
"     Package Upload Failed due to uniqueness constraint violation.\n"
"     Make sure the package does not have any duplicate dependencies or\n"
"     does not already exists on the server\n"
"     "
msgstr ""

#: ../common/rhnException.py:134
msgid ""
"\n"
"     The --force rhnpush option is disabled on this server.\n"
"     Please contact your SUSE Manager administrator for more help.\n"
"     "
msgstr ""

#. 60-70: token errors
#: ../common/rhnException.py:140
msgid ""
"\n"
"     The activation token specified could not be found on the server.\n"
"     Please retry with a valid key.\n"
"     "
msgstr ""

#: ../common/rhnException.py:144
msgid "Too many systems registered using this registration token"
msgstr ""

#: ../common/rhnException.py:145
msgid "Token contains invalid, obsoleted or insufficient settings"
msgstr ""

#: ../common/rhnException.py:146
msgid "Conflicting activation tokens"
msgstr ""

#. 70-80: channel subscription errors
#: ../common/rhnException.py:149
msgid ""
"\n"
"     No matching base channel found for your system.\n"
"     "
msgstr ""

#: ../common/rhnException.py:152
msgid ""
"\n"
"     You do not have subscription permission to the designated channel.\n"
"     Please refer to your organization's channel or organization\n"
"     administrators for further details.\n"
"     "
msgstr ""

#: ../common/rhnException.py:157
msgid "You can not unsubscribe from base channel."
msgstr ""

#: ../common/rhnException.py:158
msgid "SUSE Manager or Proxy channel can not be subscribed."
msgstr ""

#. 80-90: server group errors
#: ../common/rhnException.py:161
msgid "There was an error while trying to join the system to its groups"
msgstr ""

#. 90-100: entitlement errors
#: ../common/rhnException.py:164
msgid "Unable to entitle system"
msgstr ""

#. 100-109: e-mail and uuid related faults
#: ../common/rhnException.py:167
msgid "Maximum e-mail length violation."
msgstr ""

#: ../common/rhnException.py:168
msgid "This system has been previously registered."
msgstr ""

#: ../common/rhnException.py:169
msgid "Invalid username"
msgstr ""

#. 140-159 applet errors
#: ../common/rhnException.py:172
msgid "Unable to look up server"
msgstr ""

#. 160-179: OSAD errors
#: ../common/rhnException.py:175
msgid "Required argument is missing"
msgstr ""

#. 600-699: RHEL5+ EN errors
#: ../common/rhnException.py:178
msgid "No entitlement information tied to hardware"
msgstr ""

#: ../common/rhnException.py:179
msgid "Installation number is not entitling"
msgstr ""

#. 700-799: Additional user input verification errors.
#: ../common/rhnException.py:182
msgid "Maximum username length violation"
msgstr ""

#: ../common/rhnException.py:183
msgid "Maximum password length violation"
msgstr ""

#: ../common/rhnException.py:184
msgid "This user has read only API access. Action denied."
msgstr ""

#: ../common/rhnException.py:186
msgid "System Name cannot be less than 1 character"
msgstr ""

#. 1000-1999: Proxy specific errors:
#. issued by a Proxy to the client
#: ../common/rhnException.py:190
msgid "SUSE Manager Proxy error."
msgstr ""

#: ../common/rhnException.py:191
msgid "SUSE Manager Proxy unable to login."
msgstr ""

#. issued by a SUSE Manager Server/Satellite to the proxy
#: ../common/rhnException.py:193
msgid ""
"\n"
"     SUSE Manager Proxy system ID does not match a Spacewalk Proxy Server\n"
"     in the database.\n"
"     "
msgstr ""

#: ../common/rhnException.py:197
msgid "SUSE Manager Proxy session token is invalid."
msgstr ""

#: ../common/rhnException.py:198
msgid "SUSE Manager Proxy session token has expired."
msgstr ""

#. 2000-2999: Red Hat Satellite specific errors:
#: ../common/rhnException.py:202
msgid ""
"\n"
"      user creation is not allowed via mgr_register;\n"
"     please contact your sysadmin to have your account created.\n"
"     "
msgstr ""

#: ../common/rhnException.py:206
msgid ""
"\n"
"     This SUSE Manager server is not allowed to use Inter Server Sync on "
"this server\n"
"     "
msgstr ""

#: ../common/rhnException.py:209
msgid ""
"\n"
"     Inter Server Sync is disabled on this SUSE Manager Server.\n"
"     "
msgstr ""

#. 3000-3999: XML dumper errors:
#: ../common/rhnException.py:214
msgid "Invalid datatype passed"
msgstr ""

#: ../common/rhnException.py:215
msgid "Unable to retrieve channel"
msgstr ""

#: ../common/rhnException.py:216
msgid "Unable to retrieve package"
msgstr ""

#: ../common/rhnException.py:217
msgid "Unable to retrieve erratum"
msgstr ""

#: ../common/rhnException.py:218
msgid "File is missing"
msgstr ""

#: ../common/rhnException.py:219
msgid "Function retrieval error"
msgstr ""

#: ../common/rhnException.py:220
msgid "Function execution error"
msgstr ""

#: ../common/rhnException.py:221
msgid "Missing version string"
msgstr ""

#: ../common/rhnException.py:222
msgid "Invalid version string"
msgstr ""

#: ../common/rhnException.py:223
msgid "Mismatching versions"
msgstr ""

#: ../common/rhnException.py:224
msgid "Invalid channel version"
msgstr ""

#: ../common/rhnException.py:225
msgid "No comps file for channel"
msgstr ""

#: ../common/rhnException.py:226
msgid "Unable to retrieve comps file"
msgstr ""

#. 4000 - 4999: config management errors
#: ../common/rhnException.py:229
msgid "Configuration action missing"
msgstr ""

#: ../common/rhnException.py:230
msgid "File too large"
msgstr ""

#: ../common/rhnException.py:231
msgid "File contains binary data"
msgstr ""

#: ../common/rhnException.py:232
msgid "Configuration channel is not empty"
msgstr ""

#: ../common/rhnException.py:233
msgid "Permission error"
msgstr ""

#: ../common/rhnException.py:234
msgid "Content missing for configuration file"
msgstr ""

#: ../common/rhnException.py:235
msgid "Template delimiters not specified"
msgstr ""

#: ../common/rhnException.py:236
msgid "Configuration channel does not exist"
msgstr ""

#: ../common/rhnException.py:237
msgid "Configuration channel already exists"
msgstr ""

#: ../common/rhnException.py:238
msgid "File missing from configuration channel"
msgstr ""

#: ../common/rhnException.py:239
msgid "Different revision of this file is uploaded"
msgstr ""

#: ../common/rhnException.py:240
msgid "File already uploaded to configuration channel"
msgstr ""

#: ../common/rhnException.py:241
msgid "File size exceeds remaining quota space"
msgstr ""

#: ../common/rhnException.py:242
msgid "Full path of file must be specified"
msgstr ""

#: ../common/rhnException.py:243
msgid "Invalid revision number"
msgstr ""

#: ../common/rhnException.py:244
msgid "Cannot compare files of different file type"
msgstr ""

#. 5000 - 5999: client content uploading errors
#. 5000 - 5099: crash reporting errors
#: ../common/rhnException.py:248
msgid "Crash information is invalid or incomplete"
msgstr ""

#: ../common/rhnException.py:249
msgid "Crash file information is invalid or incomplete"
msgstr ""

#: ../common/rhnException.py:250
msgid "Error composing crash directory path"
msgstr ""

#: ../common/rhnException.py:251
msgid "Error composing crash file path"
msgstr ""

#: ../common/rhnException.py:252 ../common/rhnException.py:259
msgid "Invalid content encoding"
msgstr ""

#: ../common/rhnException.py:253
msgid "Invalid crash name"
msgstr ""

#: ../common/rhnException.py:254
msgid "Crash reporting is disabled for this organization"
msgstr ""

#. 5100 - 5199: scap results reporting error
#: ../common/rhnException.py:256
msgid "SCAP results file transfer is invalid or incomplete"
msgstr ""

#: ../common/rhnException.py:257
msgid "Error composing directory path for detailed SCAP results"
msgstr ""

#: ../common/rhnException.py:258
msgid "Error composing file path for detailed SCAP results"
msgstr ""

#: ../common/rhnException.py:306
msgid ""
"\n"
"     An error has occurred while processing your request. If this problem\n"
"     persists please enter a bug report at scc.suse.com.\n"
"     If you choose to submit the bug report, please be sure to include\n"
"     details of what you were trying to do when this error occurred and\n"
"     details on how to reproduce this problem.\n"
msgstr ""

#: ../common/rhnException.py:358
#, python-format
msgid ""
"Error Message:\n"
"    %s\n"
msgstr ""

#: ../common/rhnException.py:360
#, python-format
msgid "Error Class Code: %s\n"
msgstr ""

#: ../common/rhnException.py:363
#, python-format
msgid "Error Class Info: %s\n"
msgstr ""

#: ../common/rhnException.py:365
#, python-format
msgid "Explanation: %s"
msgstr ""

#: ../common/rhnTB.py:205
#, python-format
msgid "ERROR: %s %s: %s"
msgstr ""

#: ../common/rhnTB.py:207
#, python-format
msgid "TRACEBACK: %s"
msgstr ""

#: ../satellite_tools/disk_dumper/iss.py:1294
#: ../satellite_tools/disk_dumper/iss.py:1298
#, python-format
msgid "format of %s should be at least YYYYMMDD.\n"
msgstr ""

#: ../satellite_tools/messages.py:26
#, python-format
msgid ""
"\n"
"ERROR: executing step %s. Error is:\n"
"%s\n"
msgstr ""

#: ../satellite_tools/messages.py:31
#, python-format
msgid ""
"\n"
"ERROR: there was a problem accessing the channel data from your temporary\n"
"       repository. Did you migrate all of the data from the channel ISOs\n"
"       do this directory? If so, please recheck the channels ISOs, ensure\n"
"       that you have them all, and then iteratively remount and repopulate\n"
"       the temporary repository (%s).\n"
msgstr ""

#: ../satellite_tools/messages.py:39
#, python-format
msgid ""
"\n"
"ERROR: there was a problem synchronizing the information.\n"
"       Error message: %s\n"
msgstr ""

#: ../satellite_tools/messages.py:44
#, python-format
msgid ""
"\n"
"ERROR: There was a problem communicating with the ISS Master.\n"
"       Depending on the specific error details, please review your "
"configuration,\n"
"       basic network connectivity, and/or name resolution, and try again.\n"
"       Error message: %s\n"
msgstr ""

#: ../satellite_tools/messages.py:51
#, python-format
msgid ""
"\n"
"ERROR: There was a problem communicating with the ISS Master.\n"
"       If the master satellite is older than v5.3, it does not have ISS "
"capability.\n"
"       Otherwise, depending on the specific error details, please review "
"your\n"
"       configuration, basic network connectivity, and/or name resolution, "
"and try again.\n"
"       Error message: %s\n"
msgstr ""

#: ../satellite_tools/messages.py:59
#, python-format
msgid ""
"\n"
"ERROR: a child-channel cannot be synced without its parent being synced as\n"
"       well. A parent needs to be either (a) previously synced or (b) "
"synced\n"
"       in tandem with the desired child-channel. Missing parents for this\n"
"       transaction:\n"
"       %s\n"
msgstr ""

#: ../satellite_tools/messages.py:67
#, python-format
msgid ""
"\n"
"ERROR: you are not entitled to sync a channel in this set of channels.\n"
"Please contact your SUSE Manager contact\n"
"%s"
msgstr ""

#: ../satellite_tools/messages.py:72
#, python-format
msgid "  ERROR: not enough free space (%s KB) on device."
msgstr ""

#: ../satellite_tools/messages.py:74
#, python-format
msgid "    %3d/%s Fetch successful: %s (%s bytes)"
msgstr ""

#: ../satellite_tools/messages.py:75
#, python-format
msgid "    Extinct package:  %s"
msgstr ""

#: ../satellite_tools/messages.py:76
#, python-format
msgid "   Total size: %s"
msgstr ""

#: ../satellite_tools/messages.py:77
#, python-format
msgid "      Downloaded %s of %s. Estimated remaining time: %s"
msgstr ""

#: ../satellite_tools/messages.py:78
#, python-format
msgid "    Fetch unsuccessful: %s"
msgstr ""

#: ../satellite_tools/messages.py:79
#, python-format
msgid "   RPM fetch summary: %s"
msgstr ""

#: ../satellite_tools/messages.py:80
#, python-format
msgid "       success: %d"
msgstr ""

#: ../satellite_tools/messages.py:81
#, python-format
msgid "       failed:  %d"
msgstr ""

#: ../satellite_tools/messages.py:82
#, python-format
msgid "       extinct: %d"
msgstr ""

#: ../satellite_tools/messages.py:84
#, python-format
msgid "   Retrieving / parsing *relevant* package metadata: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:85
#, python-format
msgid "   Retrieving / parsing errata data: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:86
#, python-format
msgid "   Retrieving / parsing kickstart data: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:87
#, python-format
msgid "   Retrieving / parsing kickstart tree files: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:88
#, python-format
msgid "   Importing *relevant* package metadata: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:89
msgid "   * WARNING: this may be a slow process."
msgstr ""

#: ../satellite_tools/messages.py:90
msgid "Linking packages to channels"
msgstr ""

#: ../satellite_tools/messages.py:91
#, python-format
msgid "   Importing *relevant* errata: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:92
msgid "   No new kickstartable tree to import"
msgstr ""

#: ../satellite_tools/messages.py:93
#, python-format
msgid "Importing kickstartable trees (%d)"
msgstr ""

#: ../satellite_tools/messages.py:94
#, python-format
msgid "Imported kickstartable trees (%d)"
msgstr ""

#: ../satellite_tools/reposync.py:111 ../satellite_tools/satsync.py:439
msgid "+++ sending log as an email +++"
msgstr ""

#: ../satellite_tools/reposync.py:114
#, python-format
msgid "%s sync. report from %s"
msgstr ""

#: ../satellite_tools/reposync.py:124 ../satellite_tools/satsync.py:449
msgid "+++ email requested, but there is nothing to send +++"
msgstr ""

#: ../satellite_tools/rhn_satellite_activate.py:198
#, python-format
msgid ""
"\"%s\" (specified in commandline)\n"
"could not be opened and read:\n"
"%s"
msgstr ""

#: ../satellite_tools/rhn_satellite_activate.py:205
#, python-format
msgid ""
"\"%s\" could not be opened\n"
"and/or written to:\n"
"%s"
msgstr ""

#: ../satellite_tools/satsync.py:258
#, python-format
msgid "No handler for step %s"
msgstr ""

#. Try one more time - this time it should be faster since
#. everything should be cached
#: ../satellite_tools/satsync.py:270
msgid "Environment changed, trying again..."
msgstr ""

#: ../satellite_tools/satsync.py:277
msgid "ERROR: Encountered IntegrityError: \n"
msgstr ""

#: ../satellite_tools/satsync.py:285
msgid "Repeated failures"
msgstr ""

#: ../satellite_tools/satsync.py:290
#, python-format
msgid ""
"    Import complete:\n"
"        Begin time: %s\n"
"        End time:   %s\n"
"        Elapsed:    %s\n"
"          "
msgstr ""

#: ../satellite_tools/satsync.py:311
msgid "hours"
msgstr ""

#: ../satellite_tools/satsync.py:311
msgid "minutes"
msgstr ""

#: ../satellite_tools/satsync.py:311
msgid "seconds"
msgstr ""

#: ../satellite_tools/satsync.py:357
msgid ""
"ERROR: The dump is missing package data, use --no-rpms to skip this step or "
"fix the content to include package data."
msgstr ""

#. the orgs() method doesn't exist; that's fine we just
#. won't sync the orgs
#: ../satellite_tools/satsync.py:404
msgid "The SUSE Manager master does not support syncing orgs data."
msgstr ""

#: ../satellite_tools/satsync.py:404
msgid "Skipping..."
msgstr ""

#: ../satellite_tools/satsync.py:442
#, python-format
msgid "SUSE Manager Inter Server sync. report from %s"
msgstr ""

#: ../satellite_tools/satsync.py:521
msgid " - file-system synchronization"
msgstr ""

#: ../satellite_tools/satsync.py:533 ../satellite_tools/satsync.py:541
msgid " - live synchronization"
msgstr ""

#: ../satellite_tools/satsync.py:534
#, python-brace-format
msgid ""
"ERROR: Live content synchronizing with RHN Classic Hosted is no longer "
"supported.\n"
"Please use the cdn-sync command instead unless you are attempting to sync "
"from another {PRODUCT_NAME} via Inter-Server-Sync (ISS), or from local "
"content on disk via Channel Dump ISOs."
msgstr ""

#: ../satellite_tools/satsync.py:542
#, python-format
msgid "   url: %s"
msgstr ""

#: ../satellite_tools/satsync.py:543
#, python-format
msgid "   debug/output level: %s"
msgstr ""

#: ../satellite_tools/satsync.py:553
msgid "ERROR: this server must be registered with SUSE Manager."
msgstr ""

#: ../satellite_tools/satsync.py:575
#, python-format
msgid "Retrieving / parsing %s data"
msgstr ""

#: ../satellite_tools/satsync.py:585 ../satellite_tools/satsync.py:600
msgid "*** SYSTEM INTERRUPT CALLED ***"
msgstr ""

#: ../satellite_tools/satsync.py:593
msgid "ERROR: fatal parser exception occurred "
msgstr ""

#: ../satellite_tools/satsync.py:594
#, python-format
msgid "(line: %s, col: %s msg: %s)"
msgstr ""

#: ../satellite_tools/satsync.py:598
#, python-format
msgid "ERROR: parser exception occurred: %s"
msgstr ""

#: ../satellite_tools/satsync.py:603
msgid "ERROR: exception (during parse) occurred: "
msgstr ""

#: ../satellite_tools/satsync.py:604
#, python-format
msgid ""
"   Encountered some errors with %s data (see logs (%s) for more information)"
msgstr ""

#: ../satellite_tools/satsync.py:606
#, python-format
msgid "   Encountered some errors with %s data:"
msgstr ""

#: ../satellite_tools/satsync.py:607
#, python-format
msgid "   ------- %s PARSE/IMPORT ERROR -------"
msgstr ""

#: ../satellite_tools/satsync.py:609
msgid "   ---------------------------------------"
msgstr ""

#: ../satellite_tools/satsync.py:612
#, python-format
msgid "%s data complete"
msgstr ""

#: ../satellite_tools/satsync.py:665
msgid "Retrieving / parsing channel data"
msgstr ""

#: ../satellite_tools/satsync.py:718
msgid "Channel data complete"
msgstr ""

#: ../satellite_tools/satsync.py:736
#, python-format
msgid "%10s import from %s"
msgstr ""

#: ../satellite_tools/satsync.py:739
#, python-format
msgid "%10s import from %s - %s"
msgstr ""

#: ../satellite_tools/satsync.py:743
#, python-format
msgid "%10s"
msgstr ""

#: ../satellite_tools/satsync.py:750
msgid "p"
msgstr ""

#: ../satellite_tools/satsync.py:752
msgid "."
msgstr ""

#: ../satellite_tools/satsync.py:758
msgid "   p = previously imported/synced channel"
msgstr ""

#: ../satellite_tools/satsync.py:759
msgid "   . = channel not yet imported/synced"
msgstr ""

#: ../satellite_tools/satsync.py:765
msgid "   e = channel no longer supported (end-of-service)"
msgstr ""

#: ../satellite_tools/satsync.py:767
msgid "   ? = channel label invalid --- typo?"
msgstr ""

#: ../satellite_tools/satsync.py:771
#, python-format
msgid "   %s:"
msgstr ""

#: ../satellite_tools/satsync.py:772
#, python-format
msgid "      %s %-40s %4s %s"
msgstr ""

#: ../satellite_tools/satsync.py:773
msgid "base-channels"
msgstr ""

#: ../satellite_tools/satsync.py:786 ../satellite_tools/satsync.py:1603
msgid "NONE RELEVANT"
msgstr ""

#: ../satellite_tools/satsync.py:808
msgid "end-of-service"
msgstr ""

#: ../satellite_tools/satsync.py:809
msgid "e"
msgstr ""

#: ../satellite_tools/satsync.py:815
msgid "   typos:"
msgstr ""

#: ../satellite_tools/satsync.py:816
msgid "?"
msgstr ""

#: ../satellite_tools/satsync.py:831
#, python-format
msgid "XXX: imported channels: %s"
msgstr ""

#: ../satellite_tools/satsync.py:832
#, python-format
msgid "XXX:   cached channels: %s"
msgstr ""

#: ../satellite_tools/satsync.py:837
msgid "XXX: list channels called"
msgstr ""

#: ../satellite_tools/satsync.py:855
msgid "ERROR: these channels either do not exist or are not available:"
msgstr ""

#: ../satellite_tools/satsync.py:859
#, python-format
msgid "       (to see a list of channel labels: %s --list-channels)"
msgstr ""

#: ../satellite_tools/satsync.py:904
#, python-format
msgid "   Retrieving / parsing short package metadata: %s (%s)"
msgstr ""

#: ../satellite_tools/satsync.py:965
#, python-format
msgid "Diffing package metadata (what's missing locally?): %s"
msgstr ""

#: ../satellite_tools/satsync.py:971 ../satellite_tools/satsync.py:1254
msgid "Diffing:    "
msgstr ""

#: ../satellite_tools/satsync.py:988
msgid "ERROR: incremental dump skipped"
msgstr ""

#: ../satellite_tools/satsync.py:1079
msgid "Downloading rpm packages"
msgstr ""

#: ../satellite_tools/satsync.py:1084
#, python-format
msgid "   Fetching any missing RPMs: %s (%s)"
msgstr ""

#: ../satellite_tools/satsync.py:1085 ../satellite_tools/satsync.py:1153
msgid "NONE MISSING"
msgstr ""

#: ../satellite_tools/satsync.py:1094
msgid "Processing rpm packages complete"
msgstr ""

#: ../satellite_tools/satsync.py:1121
msgid "Downloading package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1146
msgid "Downloading srpm packages"
msgstr ""

#: ../satellite_tools/satsync.py:1152
#, python-format
msgid "   Fetching any missing SRPMs: %s (%s)"
msgstr ""

#: ../satellite_tools/satsync.py:1249
#, python-format
msgid "Diffing source package metadata (what's missing locally?): %s"
msgstr ""

#: ../satellite_tools/satsync.py:1260
msgid "Downloading source package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1338 ../satellite_tools/satsync.py:2027
#, python-format
msgid "Unable to save file %s: %s"
msgstr ""

#. for
#. Retried a number of times and it still failed; log the
#. file as being failed and move on
#: ../satellite_tools/satsync.py:1345
#, python-format
msgid "Failed to fetch file %s"
msgstr ""

#: ../satellite_tools/satsync.py:1350
msgid "Downloading kickstartable trees metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1365
msgid "Downloading kickstartable trees files"
msgstr ""

#: ../satellite_tools/satsync.py:1504
#, python-format
msgid "Grabbing all patches for channel %s"
msgstr ""

#: ../satellite_tools/satsync.py:1554
msgid "Downloading patch data"
msgstr ""

#: ../satellite_tools/satsync.py:1556
msgid "Forcing download of all patch data for requested channels."
msgstr ""

#: ../satellite_tools/satsync.py:1571
msgid "Downloading patch data complete"
msgstr ""

#: ../satellite_tools/satsync.py:1576 ../satellite_tools/satsync.py:1597
msgid "Downloading:"
msgstr ""

#: ../satellite_tools/satsync.py:1579
msgid " - complete"
msgstr ""

#: ../satellite_tools/satsync.py:1624
msgid "Importing source package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1627
msgid "Importing package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1635
msgid "Importing:  "
msgstr ""

#. not in the cache
#: ../satellite_tools/satsync.py:1703
msgid ""
"Package Not Found in Cache, Clear the Cache "
"to                                  Regenerate it."
msgstr ""

#: ../satellite_tools/satsync.py:1709
msgid "Importing channel patches"
msgstr ""

#: ../satellite_tools/satsync.py:1714
#, python-format
msgid "Importing %s patches for channel %s."
msgstr ""

#. Incomplete configuration
#: ../satellite_tools/satsync.py:2113
msgid "ERROR: server.mount_point not set in the configuration file"
msgstr ""

#: ../satellite_tools/satsync.py:2117
#, python-format
msgid "ERROR: server.mount_point %s do not exist"
msgstr ""

#: ../satellite_tools/satsync.py:2122
#, python-format
msgid "ERROR: path under server.mount_point (%s)  do not exist"
msgstr ""

#: ../satellite_tools/satsync.py:2199
#, python-format
msgid "Commandline: %s"
msgstr ""

#: ../satellite_tools/satsync.py:2202
#, python-format
msgid ""
"DEBUG ONLY: max. batch-size for XML/database-import processing (1..%s).\"man "
"satellite-sync\" for more information."
msgstr ""

#: ../satellite_tools/satsync.py:2205
msgid "alternative SSL CA Cert (fullpath to cert file)"
msgstr ""

#: ../satellite_tools/satsync.py:2207
msgid "process data for this channel only"
msgstr ""

#: ../satellite_tools/satsync.py:2209
msgid ""
"disk dump will be considered to be a full export; see \"man satellite-sync\" "
"for more information."
msgstr ""

#: ../satellite_tools/satsync.py:2212
msgid "existing custom channels will also be synced (unless -c is used)"
msgstr ""

#: ../satellite_tools/satsync.py:2214
#, python-format
msgid ""
"override debug level set in /etc/rhn/rhn.conf (which is currently set at %s)."
msgstr ""

#: ../satellite_tools/satsync.py:2216
#, python-format
msgid "requested version of XML dump (default: %s)"
msgstr ""

#: ../satellite_tools/satsync.py:2218
msgid "e-mail a report of what was synced/imported"
msgstr ""

#: ../satellite_tools/satsync.py:2220
msgid "forcibly process all (not a diff of) patch metadata"
msgstr ""

#: ../satellite_tools/satsync.py:2222
msgid "Do not use an http proxy under any circumstances."
msgstr ""

#: ../satellite_tools/satsync.py:2224
msgid "alternative http proxy (hostname:port)"
msgstr ""

#: ../satellite_tools/satsync.py:2226
msgid "alternative http proxy username"
msgstr ""

#: ../satellite_tools/satsync.py:2228
msgid "alternative http proxy password"
msgstr ""

#: ../satellite_tools/satsync.py:2230
msgid "parent SUSE Manager to import content from"
msgstr ""

#: ../satellite_tools/satsync.py:2232
msgid "list all available channels and exit"
msgstr ""

#: ../satellite_tools/satsync.py:2234
msgid "help on all error codes mgr-inter-sync returns"
msgstr ""

#: ../satellite_tools/satsync.py:2236
msgid "source mount point for import - disk update only"
msgstr ""

#: ../satellite_tools/satsync.py:2238
msgid "do not process patch data"
msgstr ""

#: ../satellite_tools/satsync.py:2240
msgid "do not process kickstart data (provisioning only)"
msgstr ""

#: ../satellite_tools/satsync.py:2242
msgid "do not process full package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:2244
msgid "do not download, or process any RPMs"
msgstr ""

#: ../satellite_tools/satsync.py:2246
msgid "turn off SSL (not recommended)"
msgstr ""

#: ../satellite_tools/satsync.py:2248
msgid "org to which the sync imports data. defaults to the admin account"
msgstr ""

#: ../satellite_tools/satsync.py:2250
msgid "print the configuration and exit"
msgstr ""

#: ../satellite_tools/satsync.py:2252
msgid "alternative server with which to connect (hostname)"
msgstr ""

#: ../satellite_tools/satsync.py:2254
msgid "synchronize to this step (man satellite-sync for more info)"
msgstr ""

#: ../satellite_tools/satsync.py:2256
msgid "write complete data to tempfile before streaming to remainder of app"
msgstr ""

#: ../satellite_tools/satsync.py:2258
msgid "DEBUG ONLY: alternative path to digital system id"
msgstr ""

#: ../satellite_tools/satsync.py:2260
msgid "alternative email address(es) for sync output (--email option)"
msgstr ""

#: ../satellite_tools/satsync.py:2262
msgid "do not remove rpms when importing from local dump"
msgstr ""

#: ../satellite_tools/satsync.py:2264
msgid ""
"the fully qualified domain name of the master Satellite. Valid with --mount-"
"point only. Required if you want to import org data and channel permissions."
msgstr ""

#: ../satellite_tools/satsync.py:2274
#, python-format
msgid "ERROR: these arguments make no sense in this context (try --help): %s"
msgstr ""

#. An SQL error is fatal... crash and burn
#: ../satellite_tools/satsync.py:2286
#, python-format
msgid "ERROR: Can't connect to the database: %s"
msgstr ""

#: ../satellite_tools/satsync.py:2287
msgid "ERROR: Check if your database is running."
msgstr ""

#: ../satellite_tools/satsync.py:2322
#, python-format
msgid "ERROR: --debug-level takes an in integer value within the range %s."
msgstr ""

#: ../satellite_tools/satsync.py:2324
msgid "  0  - little logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2325
msgid "  1  - minimal logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2326
msgid "  2  - normal level of logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2327
msgid "  3  - lots of logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2328
msgid "  4+ - excessive logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2341
msgid "ERROR: The --master option is only valid with the --mount-point option"
msgstr ""

#: ../satellite_tools/satsync.py:2351
#, python-format
msgid "ERROR: Unable to lookup Org Id %s"
msgstr ""

#: ../satellite_tools/satsync.py:2360
msgid ""
"WARNING: --list-channels option overrides any --step option. --step ignored."
msgstr ""

#: ../satellite_tools/satsync.py:2375
#, python-format
msgid ""
"ERROR: '%s' is not a valid step. See 'man mgr-inter-sync' for more detail."
msgstr ""

#: ../satellite_tools/satsync.py:2407
msgid ""
"ERROR: No channels currently imported; try mgr-inter-sync --list-channels; "
"then mgr-inter-sync -c chn0 -c chn1..."
msgstr ""

#. int(None) --> TypeError
#. int('a')  --> ValueError
#: ../satellite_tools/satsync.py:2457 ../satellite_tools/satsync.py:2461
msgid "ERROR: --batch-size must have a value within the range: 1..50"
msgstr ""

#: ../satellite_tools/satsync.py:2469
#, python-format
msgid "ERROR: no such directory %s"
msgstr ""

#: ../satellite_tools/satsync.py:2474
msgid "Error Codes: Returned codes means:"
msgstr ""

#: ../satellite_tools/satsync.py:2475
msgid " -1  - Could not lock file or KeyboardInterrupt or SystemExit"
msgstr ""

#: ../satellite_tools/satsync.py:2476
msgid "  0  - User interrupted or intentional exit"
msgstr ""

#: ../satellite_tools/satsync.py:2477
msgid "  1  - attempting to run more than one instance of mgr-inter-sync."
msgstr ""

#: ../satellite_tools/satsync.py:2478
msgid "  2  - Unable to find synchronization tools."
msgstr ""

#: ../satellite_tools/satsync.py:2479
msgid "  3  - a general socket exception occurred"
msgstr ""

#: ../satellite_tools/satsync.py:2480
msgid "  4  - an SSL error occurred. Recheck your SSL settings."
msgstr ""

#: ../satellite_tools/satsync.py:2481
msgid "  5  - ISS error"
msgstr ""

#: ../satellite_tools/satsync.py:2482
msgid "  6  - unhandled exception occurred"
msgstr ""

#: ../satellite_tools/satsync.py:2483
msgid "  7  - unknown sync error"
msgstr ""

#: ../satellite_tools/satsync.py:2484
msgid "  8  - ERROR: must be root to execute"
msgstr ""

#: ../satellite_tools/satsync.py:2485
msgid "  9  - rpclib fault during synchronization init"
msgstr ""

#: ../satellite_tools/satsync.py:2486
msgid "  10 - synchronization init error"
msgstr ""

#: ../satellite_tools/satsync.py:2487
msgid "  11 - Error parsing XML stream"
msgstr ""

#: ../satellite_tools/satsync.py:2488
msgid "  12 - Channel do not exist"
msgstr ""

#: ../satellite_tools/satsync.py:2489
msgid "  13 - SQL error during importing package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:2490
msgid "  14 - SQL error during linking channel packages"
msgstr ""

#: ../satellite_tools/satsync.py:2491
msgid "  15 - SQL error during xml processing"
msgstr ""

#: ../satellite_tools/satsync.py:2492
msgid "  16 - server.mount_point not set in the configuration file"
msgstr ""

#: ../satellite_tools/satsync.py:2493
msgid ""
"  17 - SQL error during retrieving the channels already imported in the SUSE "
"Manager database"
msgstr ""

#: ../satellite_tools/satsync.py:2494
msgid "  18 - Wrong db connection string in rhn.conf"
msgstr ""

#: ../satellite_tools/satsync.py:2495
msgid "  19 - Bad arguments"
msgstr ""

#: ../satellite_tools/satsync.py:2496
msgid "  20 - Could not connect to db."
msgstr ""

#: ../satellite_tools/satsync.py:2497
msgid "  21 - Bad debug level"
msgstr ""

#: ../satellite_tools/satsync.py:2498
msgid "  22 - Not valid step"
msgstr ""

#: ../satellite_tools/satsync.py:2499
msgid "  24 - no such file"
msgstr ""

#: ../satellite_tools/satsync.py:2500
msgid "  25 - no such directory"
msgstr ""

#: ../satellite_tools/satsync.py:2501
msgid "  26 - mount_point does not exist"
msgstr ""

#: ../satellite_tools/satsync.py:2502
msgid "  27 - No such org"
msgstr ""

#: ../satellite_tools/satsync.py:2503
msgid "  28 - error: --master is only valid with --mount-point"
msgstr ""

#: ../satellite_tools/satsync.py:2510
#, python-format
msgid "ERROR: unknown dump version, try one of %s"
msgstr ""
   0707010000005C000081B40000000000000000000000016290A0C10000B606000000000000000000000000000000000000001C00000000spacewalk-backend/po/bal.po   # SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
#
# Translators:
msgid ""
msgstr ""
"Project-Id-Version: Spacewalk\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-10-16 13:34+0200\n"
"PO-Revision-Date: 2011-03-04 16:08+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Balochi <trans-bal@lists.fedoraproject.org>\n"
"Language: bal\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"

#: ../server/apacheAuth.py:66
#, python-format
msgid "incomplete proxy authentication token: %s"
msgstr ""

#: ../server/apacheAuth.py:84
#, python-format
msgid "Sent proxy signature %s does not match ours %s."
msgstr ""

#: ../server/apacheAuth.py:119
msgid "declined proxy authentication"
msgstr ""

#: ../server/apacheRequest.py:59
#, python-format
msgid "Invalid request received (%s)."
msgstr ""

#: ../server/apacheRequest.py:120
#, python-format
msgid ""
"IMPORTANT MESSAGE FOLLOWS:\n"
"%s"
msgstr ""

#: ../server/apacheRequest.py:149
#, python-format
msgid ""
"While running '%s': caught\n"
"%s : %s\n"
msgstr ""

#: ../server/apacheRequest.py:606
#, python-format
msgid "Invalid URI %s"
msgstr ""

#: ../server/configFilesHandler.py:129 ../server/handlers/app/packages.py:192
#: ../server/handlers/xmlrpc/registration.py:215
#: ../server/handlers/xmlrpc/registration.py:1168
#: ../server/handlers/xmlrpc/registration.py:1307
#, python-format
msgid ""
"\n"
"                   %s Account has been deactivated on this server.\n"
"                   Please contact your Org administrator for more help."
msgstr ""

#: ../server/handlers/applet/applet.py:78
#, python-brace-format
msgid "Your system was not found in the {PRODUCT_NAME} database"
msgstr ""

#: ../server/handlers/sat/auth.py:45
msgid "ISS is disabled on this server."
msgstr ""

#: ../server/handlers/sat/auth.py:50
#, python-format
msgid "Server \"%s\" is not enabled for ISS."
msgstr ""

#: ../server/handlers/xmlrpc/errata.py:64
#, python-format
msgid "Expected a package name, not: %s"
msgstr ""

#: ../server/handlers/xmlrpc/errata.py:115
#, python-format
msgid "Expected a package, not: %s"
msgstr ""

#: ../server/handlers/xmlrpc/proxy.py:65
#, python-format
msgid "SUSE Manager Proxy service not enabled for server profile: \"%s\""
msgstr ""

#: ../server/handlers/xmlrpc/proxy.py:85
msgid "Invalid session key"
msgstr ""

#: ../server/handlers/xmlrpc/proxy.py:93
msgid "This server ID no longer exists"
msgstr ""

#: ../server/handlers/xmlrpc/queue.py:433
#, python-format
msgid "Invalid action value type %s (%s)"
msgstr ""

#: ../server/handlers/xmlrpc/queue.py:464
#, python-format
msgid "Action %s does not belong to server %s"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:194
msgid "Required data missing"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:198
msgid "Required members missing"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:207
msgid "Attempt to register a system to an invalid username"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:839
msgid "Invalid system release version requested"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1063
msgid ""
"Unable to find a valid network interface, both ipaddr and ip6addr not found."
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1115
#, python-brace-format
msgid "{PRODUCT_NAME} Welcome Message"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1125
msgid "Privacy Statement"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1146
msgid "Expected a dictionary as a product argument"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1374
#, python-format
msgid "Invalid value '%s' for %s (%s)"
msgstr ""

#: ../server/handlers/xmlrpc/scap.py:104
msgid "Invalid system_id/action_id pair."
msgstr ""

#: ../server/handlers/xmlrpc/up2date.py:233
#, python-format
msgid "Invalid value %s (%s)"
msgstr ""

#: ../server/importlib/userAuth.py:98
msgid "You are not authorized to manage packages in the null org"
msgstr ""

#: ../server/importlib/userAuth.py:103
#, python-format
msgid "You are not allowed to manage packages in the %s org"
msgstr ""

#: ../server/importlib/userAuth.py:121
msgid "You are not allowed to perform administrative tasks"
msgstr ""

#: ../server/importlib/userAuth.py:144
#, python-format
msgid ""
"You are not allowed to manage channel %s, or that channel does not exist"
msgstr ""

#: ../server/importlib/userAuth.py:204
#, python-format
msgid ""
"\n"
"               %s Account has been deactivated on this server.\n"
"               Please contact your Org administrator for more help."
msgstr ""

#: ../server/rhnChannel.py:1992
#, python-format
msgid ""
"Your account does not have access to any channels matching "
"(release='%(release)s', arch='%(arch)s')%(www_activation)s"
msgstr ""

#: ../server/rhnChannel.py:2002
msgid ""
"\n"
"If you have a registration number, please register with it first at http://"
"www.redhat.com/apps/activate/ and then try again.\n"
"\n"
msgstr ""

#: ../server/rhnChannel.py:2012
#, python-format
msgid "Insufficient subscription permissions for release (%s, %s"
msgstr ""

#. Various messages that can be reused
#.
#. bretm 02/07/2007 -- when we have better old-client documentation, probably
#. will be safe to get rid of all this crap
#: ../server/rhnChannel.py:2276 ../server/rhnChannel.py:2287
#: ../server/rhnChannel.py:2302
msgid "System Registered but Inactive"
msgstr ""

#: ../server/rhnChannel.py:2277
#, python-format
msgid ""
"\n"
"Invalid Architecture and OS release combination (%s, %s).\n"
"Your system has been registered, but will not receive updates\n"
"because it is not subscribed to a channel. If you have not yet\n"
"activated your product for service, please visit our website at:\n"
"\n"
"     http://www.redhat.com/apps/activate/\n"
"\n"
"...to activate your product."
msgstr ""

#: ../server/rhnChannel.py:2288
#, python-format
msgid ""
"\n"
"Invalid Architecture and OS release combination (%s, %s).\n"
"Your system has been registered, but will not receive updates\n"
"because it could not be subscribed to a base channel.\n"
"Please contact your organization administrator for assistance.\n"
msgstr ""

#: ../server/rhnChannel.py:2295
#, python-format
msgid ""
"\n"
"  This system has been successfully registered, but is not yet entitled\n"
"  to service.  To entitle this system to service, login to the web site at:\n"
"\n"
"  %(entitlement_url)s\n"
msgstr ""

#: ../server/rhnChannel.py:2303
#, python-format
msgid ""
"\n"
"  This system has been successfully registered, but no service entitlements\n"
"  were available.  To entitle this system to service, login to the web site "
"at:\n"
"\n"
"  %(entitlement_url)s\n"
msgstr ""

#: ../server/rhnHandler.py:62
msgid "Please run rhn_register as root on this client"
msgstr ""

#: ../server/rhnHandler.py:75
#, python-format
msgid "Service not enabled for system profile: \"%s\""
msgstr ""

#: ../server/rhnPackage.py:49 ../server/rhnPackage.py:87
#: ../server/rhnPackage.py:107 ../server/rhnPackage.py:158
#, python-format
msgid "Invalid RPM package %s requested"
msgstr ""

#: ../server/rhnPackage.py:112
msgid "Package not found"
msgstr ""

#: ../server/rhnServer/server_class.py:97
#, python-format
msgid "Architecture `%s' is not supported"
msgstr ""

#: ../server/rhnServer/server_token.py:78
#, python-format
msgid "Token `%s' has more than one base channel assigned"
msgstr ""

#: ../server/rhnServer/server_token.py:80
msgid "Conflicting base channels"
msgstr ""

#: ../server/rhnServer/server_token.py:190
#, python-format
msgid "Failed to add server to group %s"
msgstr ""

#: ../server/rhnServer/server_token.py:503
#, python-format
msgid "Maximum usage count of %s reached"
msgstr ""

#: ../server/rhnServer/server_token.py:744
msgid ""
"Stacking of re-registration tokens with different base entitlements is not "
"supported"
msgstr ""

#: ../server/rhnServer/server_token.py:811
#, python-format
msgid "Could not find token '%s'"
msgstr ""

#. Cannot use activation keys from different orgs
#: ../server/rhnServer/server_token.py:843
msgid "Tokens from mismatching orgs"
msgstr ""

#. Two tokens with different kickstart sessions
#: ../server/rhnServer/server_token.py:853
msgid "Kickstart session mismatch"
msgstr ""

#: ../server/rhnServer/server_token.py:877
msgid "Stacking of re-registration tokens is not supported"
msgstr ""

#: ../server/rhnUser.py:289 ../server/rhnUser.py:292
msgid "Invalid username/password combination"
msgstr ""

#. nope, not reserved either
#: ../server/rhnUser.py:467
#, python-format
msgid "Username `%s' has not been reserved"
msgstr ""

#. New accounts have to specify an e-mail address
#: ../server/rhnUser.py:473
msgid "E-mail address not specified"
msgstr ""

#: ../server/rhnUser.py:509
#, python-format
msgid "username should be at least %d characters"
msgstr ""

#: ../server/rhnUser.py:512
#, python-format
msgid "username should be less than %d characters"
msgstr ""

#: ../server/rhnUser.py:523
#, python-format
msgid "username = `%s', invalid character `%s'"
msgstr ""

#: ../server/rhnUser.py:542
#, python-format
msgid "Please limit your e-mail address to %s chars"
msgstr ""

#: ../server/rhnUser.py:623
#, python-format
msgid "password must be at least %d characters"
msgstr ""

#: ../server/rhnUser.py:626
#, python-format
msgid "Password must be shorter than %d characters"
msgstr ""

#: ../server/rhnUser.py:644
#, python-format
msgid "password contains character `%s'"
msgstr ""

#: ../server/rhnUser.py:651
#, python-format
msgid "username should be at least %d characters long"
msgstr ""

#: ../server/rhnUser.py:662
#, python-format
msgid "Cannot register usernames ending with %s"
msgstr ""

#. 0-999: Red Hat client/client-like interaction errors:
#: ../common/rhnException.py:53
msgid "This does not appear to be a valid username."
msgstr ""

#: ../common/rhnException.py:54
msgid "Invalid username and password combination."
msgstr ""

#: ../common/rhnException.py:55
msgid "This login is already taken, or the password is incorrect."
msgstr ""

#: ../common/rhnException.py:56
msgid "Permission denied."
msgstr ""

#: ../common/rhnException.py:57
msgid "Object not found."
msgstr ""

#: ../common/rhnException.py:58
msgid "Invalid System Digital ID."
msgstr ""

#: ../common/rhnException.py:59
msgid "Invalid System Credentials."
msgstr ""

#: ../common/rhnException.py:60
msgid "Could not retrieve user data from database."
msgstr ""

#: ../common/rhnException.py:61
msgid "Valid username required."
msgstr ""

#: ../common/rhnException.py:62
msgid "Valid password required."
msgstr ""

#: ../common/rhnException.py:63
msgid "Minimum username length violation."
msgstr ""

#: ../common/rhnException.py:64
msgid "Minimum password length violation."
msgstr ""

#: ../common/rhnException.py:65
msgid "The username contains invalid characters."
msgstr ""

#: ../common/rhnException.py:66
msgid "File not found."
msgstr ""

#: ../common/rhnException.py:67
msgid "Architecture and OS version combination is not supported."
msgstr ""

#: ../common/rhnException.py:68
msgid "Could not retrieve system data from database."
msgstr ""

#: ../common/rhnException.py:69
msgid "Invalid arguments passed to function."
msgstr ""

#: ../common/rhnException.py:70
msgid "Unable to retrieve requested entry."
msgstr ""

#: ../common/rhnException.py:71
msgid "Could not update database entry."
msgstr ""

#: ../common/rhnException.py:72
msgid "Unsupported server architecture."
msgstr ""

#: ../common/rhnException.py:73
#, python-format
msgid ""
"\n"
"     The anonymous server functionality is no longer available.\n"
"\n"
"     Please re-register this system by running mgr_register as root.\n"
"     Please visit https://%(hostname)s/rhn/systems/SystemEntitlements.do\n"
"     or login at https://%(hostname)s, and from the \"Overview\" tab,\n"
"     select \"Subscription Management\" to enable the service for this "
"system.\n"
"     "
msgstr ""

#: ../common/rhnException.py:81
msgid "Record not available in the database."
msgstr ""

#: ../common/rhnException.py:82
msgid "Invalid value for entry."
msgstr ""

#: ../common/rhnException.py:83
#, python-format
msgid ""
"\n"
"     This system does not have a valid entitlement for SUSE Manager.\n"
"     Please visit https://%(hostname)s/rhn/systems/SystemEntitlements.do\n"
"     or login at https://%(hostname)s, and from the \"Overview\" tab,\n"
"     select \"Subscription Management\" to enable the service for this "
"system.\n"
"     "
msgstr ""

#: ../common/rhnException.py:89
msgid "Channel error"
msgstr ""

#: ../common/rhnException.py:90
msgid "Client session token is invalid."
msgstr ""

#: ../common/rhnException.py:91
msgid "Client session token has expired."
msgstr ""

#: ../common/rhnException.py:92
msgid "You are not authorized to retrieve the requested object."
msgstr ""

#: ../common/rhnException.py:93
msgid "Invalid action"
msgstr ""

#: ../common/rhnException.py:94
msgid "You are not allowed to perform administrative tasks on this system."
msgstr ""

#: ../common/rhnException.py:96
msgid "The system is already subscribed to the specified channel."
msgstr ""

#: ../common/rhnException.py:97
msgid "The system is not currently subscribed to the specified channel."
msgstr ""

#: ../common/rhnException.py:98
msgid "The specified channel does not exist."
msgstr ""

#: ../common/rhnException.py:99
msgid "Invalid channel version."
msgstr ""

#: ../common/rhnException.py:100
msgid ""
"\n"
"     User group membership limits exceeded.\n"
"\n"
"     The current settings for your account do not allow you to add another\n"
"     user account. Please check with the organization administrator for "
"your\n"
"     account if the maximum number of users allowed to subscribe to server "
"needs\n"
"     to be changed.\n"
"     "
msgstr ""

#: ../common/rhnException.py:108
msgid ""
"\n"
"     System group membership limits exceeded.\n"
"\n"
"     The current settings for your account do not allow you to add another\n"
"     system profile. Please check with the organization administrator for "
"your\n"
"     account for modifying the maximum number of system profiles that can "
"be\n"
"     subscribed to your account.\n"
"     "
msgstr ""

#: ../common/rhnException.py:116
msgid ""
"\n"
"     Invalid architecture.\n"
"\n"
"     The architecture of the package is not supported by\n"
"     "
msgstr ""

#: ../common/rhnException.py:121
msgid "Invalid RPM header"
msgstr ""

#: ../common/rhnException.py:122
msgid ""
"\n"
"    This system is already registered as a Salt Minion. If you want to "
"register it as a traditional client\n"
"    please delete it first via the web UI or API and then register it using "
"the traditional tools.\n"
"    "
msgstr ""

#. For the uploading tools
#: ../common/rhnException.py:127
msgid "Invalid information uploaded to the server"
msgstr ""

#: ../common/rhnException.py:128
msgid "Error uploading network interfaces configuration."
msgstr ""

#: ../common/rhnException.py:129
msgid ""
"\n"
"     Package Upload Failed due to uniqueness constraint violation.\n"
"     Make sure the package does not have any duplicate dependencies or\n"
"     does not already exists on the server\n"
"     "
msgstr ""

#: ../common/rhnException.py:134
msgid ""
"\n"
"     The --force rhnpush option is disabled on this server.\n"
"     Please contact your SUSE Manager administrator for more help.\n"
"     "
msgstr ""

#. 60-70: token errors
#: ../common/rhnException.py:140
msgid ""
"\n"
"     The activation token specified could not be found on the server.\n"
"     Please retry with a valid key.\n"
"     "
msgstr ""

#: ../common/rhnException.py:144
msgid "Too many systems registered using this registration token"
msgstr ""

#: ../common/rhnException.py:145
msgid "Token contains invalid, obsoleted or insufficient settings"
msgstr ""

#: ../common/rhnException.py:146
msgid "Conflicting activation tokens"
msgstr ""

#. 70-80: channel subscription errors
#: ../common/rhnException.py:149
msgid ""
"\n"
"     No matching base channel found for your system.\n"
"     "
msgstr ""

#: ../common/rhnException.py:152
msgid ""
"\n"
"     You do not have subscription permission to the designated channel.\n"
"     Please refer to your organization's channel or organization\n"
"     administrators for further details.\n"
"     "
msgstr ""

#: ../common/rhnException.py:157
msgid "You can not unsubscribe from base channel."
msgstr ""

#: ../common/rhnException.py:158
msgid "SUSE Manager or Proxy channel can not be subscribed."
msgstr ""

#. 80-90: server group errors
#: ../common/rhnException.py:161
msgid "There was an error while trying to join the system to its groups"
msgstr ""

#. 90-100: entitlement errors
#: ../common/rhnException.py:164
msgid "Unable to entitle system"
msgstr ""

#. 100-109: e-mail and uuid related faults
#: ../common/rhnException.py:167
msgid "Maximum e-mail length violation."
msgstr ""

#: ../common/rhnException.py:168
msgid "This system has been previously registered."
msgstr ""

#: ../common/rhnException.py:169
msgid "Invalid username"
msgstr ""

#. 140-159 applet errors
#: ../common/rhnException.py:172
msgid "Unable to look up server"
msgstr ""

#. 160-179: OSAD errors
#: ../common/rhnException.py:175
msgid "Required argument is missing"
msgstr ""

#. 600-699: RHEL5+ EN errors
#: ../common/rhnException.py:178
msgid "No entitlement information tied to hardware"
msgstr ""

#: ../common/rhnException.py:179
msgid "Installation number is not entitling"
msgstr ""

#. 700-799: Additional user input verification errors.
#: ../common/rhnException.py:182
msgid "Maximum username length violation"
msgstr ""

#: ../common/rhnException.py:183
msgid "Maximum password length violation"
msgstr ""

#: ../common/rhnException.py:184
msgid "This user has read only API access. Action denied."
msgstr ""

#: ../common/rhnException.py:186
msgid "System Name cannot be less than 1 character"
msgstr ""

#. 1000-1999: Proxy specific errors:
#. issued by a Proxy to the client
#: ../common/rhnException.py:190
msgid "SUSE Manager Proxy error."
msgstr ""

#: ../common/rhnException.py:191
msgid "SUSE Manager Proxy unable to login."
msgstr ""

#. issued by a SUSE Manager Server/Satellite to the proxy
#: ../common/rhnException.py:193
msgid ""
"\n"
"     SUSE Manager Proxy system ID does not match a Spacewalk Proxy Server\n"
"     in the database.\n"
"     "
msgstr ""

#: ../common/rhnException.py:197
msgid "SUSE Manager Proxy session token is invalid."
msgstr ""

#: ../common/rhnException.py:198
msgid "SUSE Manager Proxy session token has expired."
msgstr ""

#. 2000-2999: Red Hat Satellite specific errors:
#: ../common/rhnException.py:202
msgid ""
"\n"
"      user creation is not allowed via mgr_register;\n"
"     please contact your sysadmin to have your account created.\n"
"     "
msgstr ""

#: ../common/rhnException.py:206
msgid ""
"\n"
"     This SUSE Manager server is not allowed to use Inter Server Sync on "
"this server\n"
"     "
msgstr ""

#: ../common/rhnException.py:209
msgid ""
"\n"
"     Inter Server Sync is disabled on this SUSE Manager Server.\n"
"     "
msgstr ""

#. 3000-3999: XML dumper errors:
#: ../common/rhnException.py:214
msgid "Invalid datatype passed"
msgstr ""

#: ../common/rhnException.py:215
msgid "Unable to retrieve channel"
msgstr ""

#: ../common/rhnException.py:216
msgid "Unable to retrieve package"
msgstr ""

#: ../common/rhnException.py:217
msgid "Unable to retrieve erratum"
msgstr ""

#: ../common/rhnException.py:218
msgid "File is missing"
msgstr ""

#: ../common/rhnException.py:219
msgid "Function retrieval error"
msgstr ""

#: ../common/rhnException.py:220
msgid "Function execution error"
msgstr ""

#: ../common/rhnException.py:221
msgid "Missing version string"
msgstr ""

#: ../common/rhnException.py:222
msgid "Invalid version string"
msgstr ""

#: ../common/rhnException.py:223
msgid "Mismatching versions"
msgstr ""

#: ../common/rhnException.py:224
msgid "Invalid channel version"
msgstr ""

#: ../common/rhnException.py:225
msgid "No comps file for channel"
msgstr ""

#: ../common/rhnException.py:226
msgid "Unable to retrieve comps file"
msgstr ""

#. 4000 - 4999: config management errors
#: ../common/rhnException.py:229
msgid "Configuration action missing"
msgstr ""

#: ../common/rhnException.py:230
msgid "File too large"
msgstr ""

#: ../common/rhnException.py:231
msgid "File contains binary data"
msgstr ""

#: ../common/rhnException.py:232
msgid "Configuration channel is not empty"
msgstr ""

#: ../common/rhnException.py:233
msgid "Permission error"
msgstr ""

#: ../common/rhnException.py:234
msgid "Content missing for configuration file"
msgstr ""

#: ../common/rhnException.py:235
msgid "Template delimiters not specified"
msgstr ""

#: ../common/rhnException.py:236
msgid "Configuration channel does not exist"
msgstr ""

#: ../common/rhnException.py:237
msgid "Configuration channel already exists"
msgstr ""

#: ../common/rhnException.py:238
msgid "File missing from configuration channel"
msgstr ""

#: ../common/rhnException.py:239
msgid "Different revision of this file is uploaded"
msgstr ""

#: ../common/rhnException.py:240
msgid "File already uploaded to configuration channel"
msgstr ""

#: ../common/rhnException.py:241
msgid "File size exceeds remaining quota space"
msgstr ""

#: ../common/rhnException.py:242
msgid "Full path of file must be specified"
msgstr ""

#: ../common/rhnException.py:243
msgid "Invalid revision number"
msgstr ""

#: ../common/rhnException.py:244
msgid "Cannot compare files of different file type"
msgstr ""

#. 5000 - 5999: client content uploading errors
#. 5000 - 5099: crash reporting errors
#: ../common/rhnException.py:248
msgid "Crash information is invalid or incomplete"
msgstr ""

#: ../common/rhnException.py:249
msgid "Crash file information is invalid or incomplete"
msgstr ""

#: ../common/rhnException.py:250
msgid "Error composing crash directory path"
msgstr ""

#: ../common/rhnException.py:251
msgid "Error composing crash file path"
msgstr ""

#: ../common/rhnException.py:252 ../common/rhnException.py:259
msgid "Invalid content encoding"
msgstr ""

#: ../common/rhnException.py:253
msgid "Invalid crash name"
msgstr ""

#: ../common/rhnException.py:254
msgid "Crash reporting is disabled for this organization"
msgstr ""

#. 5100 - 5199: scap results reporting error
#: ../common/rhnException.py:256
msgid "SCAP results file transfer is invalid or incomplete"
msgstr ""

#: ../common/rhnException.py:257
msgid "Error composing directory path for detailed SCAP results"
msgstr ""

#: ../common/rhnException.py:258
msgid "Error composing file path for detailed SCAP results"
msgstr ""

#: ../common/rhnException.py:306
msgid ""
"\n"
"     An error has occurred while processing your request. If this problem\n"
"     persists please enter a bug report at scc.suse.com.\n"
"     If you choose to submit the bug report, please be sure to include\n"
"     details of what you were trying to do when this error occurred and\n"
"     details on how to reproduce this problem.\n"
msgstr ""

#: ../common/rhnException.py:358
#, python-format
msgid ""
"Error Message:\n"
"    %s\n"
msgstr ""

#: ../common/rhnException.py:360
#, python-format
msgid "Error Class Code: %s\n"
msgstr ""

#: ../common/rhnException.py:363
#, python-format
msgid "Error Class Info: %s\n"
msgstr ""

#: ../common/rhnException.py:365
#, python-format
msgid "Explanation: %s"
msgstr ""

#: ../common/rhnTB.py:205
#, python-format
msgid "ERROR: %s %s: %s"
msgstr ""

#: ../common/rhnTB.py:207
#, python-format
msgid "TRACEBACK: %s"
msgstr ""

#: ../satellite_tools/disk_dumper/iss.py:1294
#: ../satellite_tools/disk_dumper/iss.py:1298
#, python-format
msgid "format of %s should be at least YYYYMMDD.\n"
msgstr ""

#: ../satellite_tools/messages.py:26
#, python-format
msgid ""
"\n"
"ERROR: executing step %s. Error is:\n"
"%s\n"
msgstr ""

#: ../satellite_tools/messages.py:31
#, python-format
msgid ""
"\n"
"ERROR: there was a problem accessing the channel data from your temporary\n"
"       repository. Did you migrate all of the data from the channel ISOs\n"
"       do this directory? If so, please recheck the channels ISOs, ensure\n"
"       that you have them all, and then iteratively remount and repopulate\n"
"       the temporary repository (%s).\n"
msgstr ""

#: ../satellite_tools/messages.py:39
#, python-format
msgid ""
"\n"
"ERROR: there was a problem synchronizing the information.\n"
"       Error message: %s\n"
msgstr ""

#: ../satellite_tools/messages.py:44
#, python-format
msgid ""
"\n"
"ERROR: There was a problem communicating with the ISS Master.\n"
"       Depending on the specific error details, please review your "
"configuration,\n"
"       basic network connectivity, and/or name resolution, and try again.\n"
"       Error message: %s\n"
msgstr ""

#: ../satellite_tools/messages.py:51
#, python-format
msgid ""
"\n"
"ERROR: There was a problem communicating with the ISS Master.\n"
"       If the master satellite is older than v5.3, it does not have ISS "
"capability.\n"
"       Otherwise, depending on the specific error details, please review "
"your\n"
"       configuration, basic network connectivity, and/or name resolution, "
"and try again.\n"
"       Error message: %s\n"
msgstr ""

#: ../satellite_tools/messages.py:59
#, python-format
msgid ""
"\n"
"ERROR: a child-channel cannot be synced without its parent being synced as\n"
"       well. A parent needs to be either (a) previously synced or (b) "
"synced\n"
"       in tandem with the desired child-channel. Missing parents for this\n"
"       transaction:\n"
"       %s\n"
msgstr ""

#: ../satellite_tools/messages.py:67
#, python-format
msgid ""
"\n"
"ERROR: you are not entitled to sync a channel in this set of channels.\n"
"Please contact your SUSE Manager contact\n"
"%s"
msgstr ""

#: ../satellite_tools/messages.py:72
#, python-format
msgid "  ERROR: not enough free space (%s KB) on device."
msgstr ""

#: ../satellite_tools/messages.py:74
#, python-format
msgid "    %3d/%s Fetch successful: %s (%s bytes)"
msgstr ""

#: ../satellite_tools/messages.py:75
#, python-format
msgid "    Extinct package:  %s"
msgstr ""

#: ../satellite_tools/messages.py:76
#, python-format
msgid "   Total size: %s"
msgstr ""

#: ../satellite_tools/messages.py:77
#, python-format
msgid "      Downloaded %s of %s. Estimated remaining time: %s"
msgstr ""

#: ../satellite_tools/messages.py:78
#, python-format
msgid "    Fetch unsuccessful: %s"
msgstr ""

#: ../satellite_tools/messages.py:79
#, python-format
msgid "   RPM fetch summary: %s"
msgstr ""

#: ../satellite_tools/messages.py:80
#, python-format
msgid "       success: %d"
msgstr ""

#: ../satellite_tools/messages.py:81
#, python-format
msgid "       failed:  %d"
msgstr ""

#: ../satellite_tools/messages.py:82
#, python-format
msgid "       extinct: %d"
msgstr ""

#: ../satellite_tools/messages.py:84
#, python-format
msgid "   Retrieving / parsing *relevant* package metadata: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:85
#, python-format
msgid "   Retrieving / parsing errata data: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:86
#, python-format
msgid "   Retrieving / parsing kickstart data: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:87
#, python-format
msgid "   Retrieving / parsing kickstart tree files: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:88
#, python-format
msgid "   Importing *relevant* package metadata: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:89
msgid "   * WARNING: this may be a slow process."
msgstr ""

#: ../satellite_tools/messages.py:90
msgid "Linking packages to channels"
msgstr ""

#: ../satellite_tools/messages.py:91
#, python-format
msgid "   Importing *relevant* errata: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:92
msgid "   No new kickstartable tree to import"
msgstr ""

#: ../satellite_tools/messages.py:93
#, python-format
msgid "Importing kickstartable trees (%d)"
msgstr ""

#: ../satellite_tools/messages.py:94
#, python-format
msgid "Imported kickstartable trees (%d)"
msgstr ""

#: ../satellite_tools/reposync.py:111 ../satellite_tools/satsync.py:439
msgid "+++ sending log as an email +++"
msgstr ""

#: ../satellite_tools/reposync.py:114
#, python-format
msgid "%s sync. report from %s"
msgstr ""

#: ../satellite_tools/reposync.py:124 ../satellite_tools/satsync.py:449
msgid "+++ email requested, but there is nothing to send +++"
msgstr ""

#: ../satellite_tools/rhn_satellite_activate.py:198
#, python-format
msgid ""
"\"%s\" (specified in commandline)\n"
"could not be opened and read:\n"
"%s"
msgstr ""

#: ../satellite_tools/rhn_satellite_activate.py:205
#, python-format
msgid ""
"\"%s\" could not be opened\n"
"and/or written to:\n"
"%s"
msgstr ""

#: ../satellite_tools/satsync.py:258
#, python-format
msgid "No handler for step %s"
msgstr ""

#. Try one more time - this time it should be faster since
#. everything should be cached
#: ../satellite_tools/satsync.py:270
msgid "Environment changed, trying again..."
msgstr ""

#: ../satellite_tools/satsync.py:277
msgid "ERROR: Encountered IntegrityError: \n"
msgstr ""

#: ../satellite_tools/satsync.py:285
msgid "Repeated failures"
msgstr ""

#: ../satellite_tools/satsync.py:290
#, python-format
msgid ""
"    Import complete:\n"
"        Begin time: %s\n"
"        End time:   %s\n"
"        Elapsed:    %s\n"
"          "
msgstr ""

#: ../satellite_tools/satsync.py:311
msgid "hours"
msgstr ""

#: ../satellite_tools/satsync.py:311
msgid "minutes"
msgstr ""

#: ../satellite_tools/satsync.py:311
msgid "seconds"
msgstr ""

#: ../satellite_tools/satsync.py:357
msgid ""
"ERROR: The dump is missing package data, use --no-rpms to skip this step or "
"fix the content to include package data."
msgstr ""

#. the orgs() method doesn't exist; that's fine we just
#. won't sync the orgs
#: ../satellite_tools/satsync.py:404
msgid "The SUSE Manager master does not support syncing orgs data."
msgstr ""

#: ../satellite_tools/satsync.py:404
msgid "Skipping..."
msgstr ""

#: ../satellite_tools/satsync.py:442
#, python-format
msgid "SUSE Manager Inter Server sync. report from %s"
msgstr ""

#: ../satellite_tools/satsync.py:521
msgid " - file-system synchronization"
msgstr ""

#: ../satellite_tools/satsync.py:533 ../satellite_tools/satsync.py:541
msgid " - live synchronization"
msgstr ""

#: ../satellite_tools/satsync.py:534
#, python-brace-format
msgid ""
"ERROR: Live content synchronizing with RHN Classic Hosted is no longer "
"supported.\n"
"Please use the cdn-sync command instead unless you are attempting to sync "
"from another {PRODUCT_NAME} via Inter-Server-Sync (ISS), or from local "
"content on disk via Channel Dump ISOs."
msgstr ""

#: ../satellite_tools/satsync.py:542
#, python-format
msgid "   url: %s"
msgstr ""

#: ../satellite_tools/satsync.py:543
#, python-format
msgid "   debug/output level: %s"
msgstr ""

#: ../satellite_tools/satsync.py:553
msgid "ERROR: this server must be registered with SUSE Manager."
msgstr ""

#: ../satellite_tools/satsync.py:575
#, python-format
msgid "Retrieving / parsing %s data"
msgstr ""

#: ../satellite_tools/satsync.py:585 ../satellite_tools/satsync.py:600
msgid "*** SYSTEM INTERRUPT CALLED ***"
msgstr ""

#: ../satellite_tools/satsync.py:593
msgid "ERROR: fatal parser exception occurred "
msgstr ""

#: ../satellite_tools/satsync.py:594
#, python-format
msgid "(line: %s, col: %s msg: %s)"
msgstr ""

#: ../satellite_tools/satsync.py:598
#, python-format
msgid "ERROR: parser exception occurred: %s"
msgstr ""

#: ../satellite_tools/satsync.py:603
msgid "ERROR: exception (during parse) occurred: "
msgstr ""

#: ../satellite_tools/satsync.py:604
#, python-format
msgid ""
"   Encountered some errors with %s data (see logs (%s) for more information)"
msgstr ""

#: ../satellite_tools/satsync.py:606
#, python-format
msgid "   Encountered some errors with %s data:"
msgstr ""

#: ../satellite_tools/satsync.py:607
#, python-format
msgid "   ------- %s PARSE/IMPORT ERROR -------"
msgstr ""

#: ../satellite_tools/satsync.py:609
msgid "   ---------------------------------------"
msgstr ""

#: ../satellite_tools/satsync.py:612
#, python-format
msgid "%s data complete"
msgstr ""

#: ../satellite_tools/satsync.py:665
msgid "Retrieving / parsing channel data"
msgstr ""

#: ../satellite_tools/satsync.py:718
msgid "Channel data complete"
msgstr ""

#: ../satellite_tools/satsync.py:736
#, python-format
msgid "%10s import from %s"
msgstr ""

#: ../satellite_tools/satsync.py:739
#, python-format
msgid "%10s import from %s - %s"
msgstr ""

#: ../satellite_tools/satsync.py:743
#, python-format
msgid "%10s"
msgstr ""

#: ../satellite_tools/satsync.py:750
msgid "p"
msgstr ""

#: ../satellite_tools/satsync.py:752
msgid "."
msgstr ""

#: ../satellite_tools/satsync.py:758
msgid "   p = previously imported/synced channel"
msgstr ""

#: ../satellite_tools/satsync.py:759
msgid "   . = channel not yet imported/synced"
msgstr ""

#: ../satellite_tools/satsync.py:765
msgid "   e = channel no longer supported (end-of-service)"
msgstr ""

#: ../satellite_tools/satsync.py:767
msgid "   ? = channel label invalid --- typo?"
msgstr ""

#: ../satellite_tools/satsync.py:771
#, python-format
msgid "   %s:"
msgstr ""

#: ../satellite_tools/satsync.py:772
#, python-format
msgid "      %s %-40s %4s %s"
msgstr ""

#: ../satellite_tools/satsync.py:773
msgid "base-channels"
msgstr ""

#: ../satellite_tools/satsync.py:786 ../satellite_tools/satsync.py:1603
msgid "NONE RELEVANT"
msgstr ""

#: ../satellite_tools/satsync.py:808
msgid "end-of-service"
msgstr ""

#: ../satellite_tools/satsync.py:809
msgid "e"
msgstr ""

#: ../satellite_tools/satsync.py:815
msgid "   typos:"
msgstr ""

#: ../satellite_tools/satsync.py:816
msgid "?"
msgstr ""

#: ../satellite_tools/satsync.py:831
#, python-format
msgid "XXX: imported channels: %s"
msgstr ""

#: ../satellite_tools/satsync.py:832
#, python-format
msgid "XXX:   cached channels: %s"
msgstr ""

#: ../satellite_tools/satsync.py:837
msgid "XXX: list channels called"
msgstr ""

#: ../satellite_tools/satsync.py:855
msgid "ERROR: these channels either do not exist or are not available:"
msgstr ""

#: ../satellite_tools/satsync.py:859
#, python-format
msgid "       (to see a list of channel labels: %s --list-channels)"
msgstr ""

#: ../satellite_tools/satsync.py:904
#, python-format
msgid "   Retrieving / parsing short package metadata: %s (%s)"
msgstr ""

#: ../satellite_tools/satsync.py:965
#, python-format
msgid "Diffing package metadata (what's missing locally?): %s"
msgstr ""

#: ../satellite_tools/satsync.py:971 ../satellite_tools/satsync.py:1254
msgid "Diffing:    "
msgstr ""

#: ../satellite_tools/satsync.py:988
msgid "ERROR: incremental dump skipped"
msgstr ""

#: ../satellite_tools/satsync.py:1079
msgid "Downloading rpm packages"
msgstr ""

#: ../satellite_tools/satsync.py:1084
#, python-format
msgid "   Fetching any missing RPMs: %s (%s)"
msgstr ""

#: ../satellite_tools/satsync.py:1085 ../satellite_tools/satsync.py:1153
msgid "NONE MISSING"
msgstr ""

#: ../satellite_tools/satsync.py:1094
msgid "Processing rpm packages complete"
msgstr ""

#: ../satellite_tools/satsync.py:1121
msgid "Downloading package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1146
msgid "Downloading srpm packages"
msgstr ""

#: ../satellite_tools/satsync.py:1152
#, python-format
msgid "   Fetching any missing SRPMs: %s (%s)"
msgstr ""

#: ../satellite_tools/satsync.py:1249
#, python-format
msgid "Diffing source package metadata (what's missing locally?): %s"
msgstr ""

#: ../satellite_tools/satsync.py:1260
msgid "Downloading source package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1338 ../satellite_tools/satsync.py:2027
#, python-format
msgid "Unable to save file %s: %s"
msgstr ""

#. for
#. Retried a number of times and it still failed; log the
#. file as being failed and move on
#: ../satellite_tools/satsync.py:1345
#, python-format
msgid "Failed to fetch file %s"
msgstr ""

#: ../satellite_tools/satsync.py:1350
msgid "Downloading kickstartable trees metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1365
msgid "Downloading kickstartable trees files"
msgstr ""

#: ../satellite_tools/satsync.py:1504
#, python-format
msgid "Grabbing all patches for channel %s"
msgstr ""

#: ../satellite_tools/satsync.py:1554
msgid "Downloading patch data"
msgstr ""

#: ../satellite_tools/satsync.py:1556
msgid "Forcing download of all patch data for requested channels."
msgstr ""

#: ../satellite_tools/satsync.py:1571
msgid "Downloading patch data complete"
msgstr ""

#: ../satellite_tools/satsync.py:1576 ../satellite_tools/satsync.py:1597
msgid "Downloading:"
msgstr ""

#: ../satellite_tools/satsync.py:1579
msgid " - complete"
msgstr ""

#: ../satellite_tools/satsync.py:1624
msgid "Importing source package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1627
msgid "Importing package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1635
msgid "Importing:  "
msgstr ""

#. not in the cache
#: ../satellite_tools/satsync.py:1703
msgid ""
"Package Not Found in Cache, Clear the Cache "
"to                                  Regenerate it."
msgstr ""

#: ../satellite_tools/satsync.py:1709
msgid "Importing channel patches"
msgstr ""

#: ../satellite_tools/satsync.py:1714
#, python-format
msgid "Importing %s patches for channel %s."
msgstr ""

#. Incomplete configuration
#: ../satellite_tools/satsync.py:2113
msgid "ERROR: server.mount_point not set in the configuration file"
msgstr ""

#: ../satellite_tools/satsync.py:2117
#, python-format
msgid "ERROR: server.mount_point %s do not exist"
msgstr ""

#: ../satellite_tools/satsync.py:2122
#, python-format
msgid "ERROR: path under server.mount_point (%s)  do not exist"
msgstr ""

#: ../satellite_tools/satsync.py:2199
#, python-format
msgid "Commandline: %s"
msgstr ""

#: ../satellite_tools/satsync.py:2202
#, python-format
msgid ""
"DEBUG ONLY: max. batch-size for XML/database-import processing (1..%s).\"man "
"satellite-sync\" for more information."
msgstr ""

#: ../satellite_tools/satsync.py:2205
msgid "alternative SSL CA Cert (fullpath to cert file)"
msgstr ""

#: ../satellite_tools/satsync.py:2207
msgid "process data for this channel only"
msgstr ""

#: ../satellite_tools/satsync.py:2209
msgid ""
"disk dump will be considered to be a full export; see \"man satellite-sync\" "
"for more information."
msgstr ""

#: ../satellite_tools/satsync.py:2212
msgid "existing custom channels will also be synced (unless -c is used)"
msgstr ""

#: ../satellite_tools/satsync.py:2214
#, python-format
msgid ""
"override debug level set in /etc/rhn/rhn.conf (which is currently set at %s)."
msgstr ""

#: ../satellite_tools/satsync.py:2216
#, python-format
msgid "requested version of XML dump (default: %s)"
msgstr ""

#: ../satellite_tools/satsync.py:2218
msgid "e-mail a report of what was synced/imported"
msgstr ""

#: ../satellite_tools/satsync.py:2220
msgid "forcibly process all (not a diff of) patch metadata"
msgstr ""

#: ../satellite_tools/satsync.py:2222
msgid "Do not use an http proxy under any circumstances."
msgstr ""

#: ../satellite_tools/satsync.py:2224
msgid "alternative http proxy (hostname:port)"
msgstr ""

#: ../satellite_tools/satsync.py:2226
msgid "alternative http proxy username"
msgstr ""

#: ../satellite_tools/satsync.py:2228
msgid "alternative http proxy password"
msgstr ""

#: ../satellite_tools/satsync.py:2230
msgid "parent SUSE Manager to import content from"
msgstr ""

#: ../satellite_tools/satsync.py:2232
msgid "list all available channels and exit"
msgstr ""

#: ../satellite_tools/satsync.py:2234
msgid "help on all error codes mgr-inter-sync returns"
msgstr ""

#: ../satellite_tools/satsync.py:2236
msgid "source mount point for import - disk update only"
msgstr ""

#: ../satellite_tools/satsync.py:2238
msgid "do not process patch data"
msgstr ""

#: ../satellite_tools/satsync.py:2240
msgid "do not process kickstart data (provisioning only)"
msgstr ""

#: ../satellite_tools/satsync.py:2242
msgid "do not process full package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:2244
msgid "do not download, or process any RPMs"
msgstr ""

#: ../satellite_tools/satsync.py:2246
msgid "turn off SSL (not recommended)"
msgstr ""

#: ../satellite_tools/satsync.py:2248
msgid "org to which the sync imports data. defaults to the admin account"
msgstr ""

#: ../satellite_tools/satsync.py:2250
msgid "print the configuration and exit"
msgstr ""

#: ../satellite_tools/satsync.py:2252
msgid "alternative server with which to connect (hostname)"
msgstr ""

#: ../satellite_tools/satsync.py:2254
msgid "synchronize to this step (man satellite-sync for more info)"
msgstr ""

#: ../satellite_tools/satsync.py:2256
msgid "write complete data to tempfile before streaming to remainder of app"
msgstr ""

#: ../satellite_tools/satsync.py:2258
msgid "DEBUG ONLY: alternative path to digital system id"
msgstr ""

#: ../satellite_tools/satsync.py:2260
msgid "alternative email address(es) for sync output (--email option)"
msgstr ""

#: ../satellite_tools/satsync.py:2262
msgid "do not remove rpms when importing from local dump"
msgstr ""

#: ../satellite_tools/satsync.py:2264
msgid ""
"the fully qualified domain name of the master Satellite. Valid with --mount-"
"point only. Required if you want to import org data and channel permissions."
msgstr ""

#: ../satellite_tools/satsync.py:2274
#, python-format
msgid "ERROR: these arguments make no sense in this context (try --help): %s"
msgstr ""

#. An SQL error is fatal... crash and burn
#: ../satellite_tools/satsync.py:2286
#, python-format
msgid "ERROR: Can't connect to the database: %s"
msgstr ""

#: ../satellite_tools/satsync.py:2287
msgid "ERROR: Check if your database is running."
msgstr ""

#: ../satellite_tools/satsync.py:2322
#, python-format
msgid "ERROR: --debug-level takes an in integer value within the range %s."
msgstr ""

#: ../satellite_tools/satsync.py:2324
msgid "  0  - little logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2325
msgid "  1  - minimal logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2326
msgid "  2  - normal level of logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2327
msgid "  3  - lots of logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2328
msgid "  4+ - excessive logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2341
msgid "ERROR: The --master option is only valid with the --mount-point option"
msgstr ""

#: ../satellite_tools/satsync.py:2351
#, python-format
msgid "ERROR: Unable to lookup Org Id %s"
msgstr ""

#: ../satellite_tools/satsync.py:2360
msgid ""
"WARNING: --list-channels option overrides any --step option. --step ignored."
msgstr ""

#: ../satellite_tools/satsync.py:2375
#, python-format
msgid ""
"ERROR: '%s' is not a valid step. See 'man mgr-inter-sync' for more detail."
msgstr ""

#: ../satellite_tools/satsync.py:2407
msgid ""
"ERROR: No channels currently imported; try mgr-inter-sync --list-channels; "
"then mgr-inter-sync -c chn0 -c chn1..."
msgstr ""

#. int(None) --> TypeError
#. int('a')  --> ValueError
#: ../satellite_tools/satsync.py:2457 ../satellite_tools/satsync.py:2461
msgid "ERROR: --batch-size must have a value within the range: 1..50"
msgstr ""

#: ../satellite_tools/satsync.py:2469
#, python-format
msgid "ERROR: no such directory %s"
msgstr ""

#: ../satellite_tools/satsync.py:2474
msgid "Error Codes: Returned codes means:"
msgstr ""

#: ../satellite_tools/satsync.py:2475
msgid " -1  - Could not lock file or KeyboardInterrupt or SystemExit"
msgstr ""

#: ../satellite_tools/satsync.py:2476
msgid "  0  - User interrupted or intentional exit"
msgstr ""

#: ../satellite_tools/satsync.py:2477
msgid "  1  - attempting to run more than one instance of mgr-inter-sync."
msgstr ""

#: ../satellite_tools/satsync.py:2478
msgid "  2  - Unable to find synchronization tools."
msgstr ""

#: ../satellite_tools/satsync.py:2479
msgid "  3  - a general socket exception occurred"
msgstr ""

#: ../satellite_tools/satsync.py:2480
msgid "  4  - an SSL error occurred. Recheck your SSL settings."
msgstr ""

#: ../satellite_tools/satsync.py:2481
msgid "  5  - ISS error"
msgstr ""

#: ../satellite_tools/satsync.py:2482
msgid "  6  - unhandled exception occurred"
msgstr ""

#: ../satellite_tools/satsync.py:2483
msgid "  7  - unknown sync error"
msgstr ""

#: ../satellite_tools/satsync.py:2484
msgid "  8  - ERROR: must be root to execute"
msgstr ""

#: ../satellite_tools/satsync.py:2485
msgid "  9  - rpclib fault during synchronization init"
msgstr ""

#: ../satellite_tools/satsync.py:2486
msgid "  10 - synchronization init error"
msgstr ""

#: ../satellite_tools/satsync.py:2487
msgid "  11 - Error parsing XML stream"
msgstr ""

#: ../satellite_tools/satsync.py:2488
msgid "  12 - Channel do not exist"
msgstr ""

#: ../satellite_tools/satsync.py:2489
msgid "  13 - SQL error during importing package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:2490
msgid "  14 - SQL error during linking channel packages"
msgstr ""

#: ../satellite_tools/satsync.py:2491
msgid "  15 - SQL error during xml processing"
msgstr ""

#: ../satellite_tools/satsync.py:2492
msgid "  16 - server.mount_point not set in the configuration file"
msgstr ""

#: ../satellite_tools/satsync.py:2493
msgid ""
"  17 - SQL error during retrieving the channels already imported in the SUSE "
"Manager database"
msgstr ""

#: ../satellite_tools/satsync.py:2494
msgid "  18 - Wrong db connection string in rhn.conf"
msgstr ""

#: ../satellite_tools/satsync.py:2495
msgid "  19 - Bad arguments"
msgstr ""

#: ../satellite_tools/satsync.py:2496
msgid "  20 - Could not connect to db."
msgstr ""

#: ../satellite_tools/satsync.py:2497
msgid "  21 - Bad debug level"
msgstr ""

#: ../satellite_tools/satsync.py:2498
msgid "  22 - Not valid step"
msgstr ""

#: ../satellite_tools/satsync.py:2499
msgid "  24 - no such file"
msgstr ""

#: ../satellite_tools/satsync.py:2500
msgid "  25 - no such directory"
msgstr ""

#: ../satellite_tools/satsync.py:2501
msgid "  26 - mount_point does not exist"
msgstr ""

#: ../satellite_tools/satsync.py:2502
msgid "  27 - No such org"
msgstr ""

#: ../satellite_tools/satsync.py:2503
msgid "  28 - error: --master is only valid with --mount-point"
msgstr ""

#: ../satellite_tools/satsync.py:2510
#, python-format
msgid "ERROR: unknown dump version, try one of %s"
msgstr ""
  0707010000005D000081B40000000000000000000000016290A0C10000B606000000000000000000000000000000000000001B00000000spacewalk-backend/po/bg.po    # SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
#
# Translators:
msgid ""
msgstr ""
"Project-Id-Version: Spacewalk\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-10-16 13:34+0200\n"
"PO-Revision-Date: 2011-03-04 16:08+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Bulgarian <trans-bg@lists.fedoraproject.org>\n"
"Language: 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"

#: ../server/apacheAuth.py:66
#, python-format
msgid "incomplete proxy authentication token: %s"
msgstr ""

#: ../server/apacheAuth.py:84
#, python-format
msgid "Sent proxy signature %s does not match ours %s."
msgstr ""

#: ../server/apacheAuth.py:119
msgid "declined proxy authentication"
msgstr ""

#: ../server/apacheRequest.py:59
#, python-format
msgid "Invalid request received (%s)."
msgstr ""

#: ../server/apacheRequest.py:120
#, python-format
msgid ""
"IMPORTANT MESSAGE FOLLOWS:\n"
"%s"
msgstr ""

#: ../server/apacheRequest.py:149
#, python-format
msgid ""
"While running '%s': caught\n"
"%s : %s\n"
msgstr ""

#: ../server/apacheRequest.py:606
#, python-format
msgid "Invalid URI %s"
msgstr ""

#: ../server/configFilesHandler.py:129 ../server/handlers/app/packages.py:192
#: ../server/handlers/xmlrpc/registration.py:215
#: ../server/handlers/xmlrpc/registration.py:1168
#: ../server/handlers/xmlrpc/registration.py:1307
#, python-format
msgid ""
"\n"
"                   %s Account has been deactivated on this server.\n"
"                   Please contact your Org administrator for more help."
msgstr ""

#: ../server/handlers/applet/applet.py:78
#, python-brace-format
msgid "Your system was not found in the {PRODUCT_NAME} database"
msgstr ""

#: ../server/handlers/sat/auth.py:45
msgid "ISS is disabled on this server."
msgstr ""

#: ../server/handlers/sat/auth.py:50
#, python-format
msgid "Server \"%s\" is not enabled for ISS."
msgstr ""

#: ../server/handlers/xmlrpc/errata.py:64
#, python-format
msgid "Expected a package name, not: %s"
msgstr ""

#: ../server/handlers/xmlrpc/errata.py:115
#, python-format
msgid "Expected a package, not: %s"
msgstr ""

#: ../server/handlers/xmlrpc/proxy.py:65
#, python-format
msgid "SUSE Manager Proxy service not enabled for server profile: \"%s\""
msgstr ""

#: ../server/handlers/xmlrpc/proxy.py:85
msgid "Invalid session key"
msgstr ""

#: ../server/handlers/xmlrpc/proxy.py:93
msgid "This server ID no longer exists"
msgstr ""

#: ../server/handlers/xmlrpc/queue.py:433
#, python-format
msgid "Invalid action value type %s (%s)"
msgstr ""

#: ../server/handlers/xmlrpc/queue.py:464
#, python-format
msgid "Action %s does not belong to server %s"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:194
msgid "Required data missing"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:198
msgid "Required members missing"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:207
msgid "Attempt to register a system to an invalid username"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:839
msgid "Invalid system release version requested"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1063
msgid ""
"Unable to find a valid network interface, both ipaddr and ip6addr not found."
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1115
#, python-brace-format
msgid "{PRODUCT_NAME} Welcome Message"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1125
msgid "Privacy Statement"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1146
msgid "Expected a dictionary as a product argument"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1374
#, python-format
msgid "Invalid value '%s' for %s (%s)"
msgstr ""

#: ../server/handlers/xmlrpc/scap.py:104
msgid "Invalid system_id/action_id pair."
msgstr ""

#: ../server/handlers/xmlrpc/up2date.py:233
#, python-format
msgid "Invalid value %s (%s)"
msgstr ""

#: ../server/importlib/userAuth.py:98
msgid "You are not authorized to manage packages in the null org"
msgstr ""

#: ../server/importlib/userAuth.py:103
#, python-format
msgid "You are not allowed to manage packages in the %s org"
msgstr ""

#: ../server/importlib/userAuth.py:121
msgid "You are not allowed to perform administrative tasks"
msgstr ""

#: ../server/importlib/userAuth.py:144
#, python-format
msgid ""
"You are not allowed to manage channel %s, or that channel does not exist"
msgstr ""

#: ../server/importlib/userAuth.py:204
#, python-format
msgid ""
"\n"
"               %s Account has been deactivated on this server.\n"
"               Please contact your Org administrator for more help."
msgstr ""

#: ../server/rhnChannel.py:1992
#, python-format
msgid ""
"Your account does not have access to any channels matching "
"(release='%(release)s', arch='%(arch)s')%(www_activation)s"
msgstr ""

#: ../server/rhnChannel.py:2002
msgid ""
"\n"
"If you have a registration number, please register with it first at http://"
"www.redhat.com/apps/activate/ and then try again.\n"
"\n"
msgstr ""

#: ../server/rhnChannel.py:2012
#, python-format
msgid "Insufficient subscription permissions for release (%s, %s"
msgstr ""

#. Various messages that can be reused
#.
#. bretm 02/07/2007 -- when we have better old-client documentation, probably
#. will be safe to get rid of all this crap
#: ../server/rhnChannel.py:2276 ../server/rhnChannel.py:2287
#: ../server/rhnChannel.py:2302
msgid "System Registered but Inactive"
msgstr ""

#: ../server/rhnChannel.py:2277
#, python-format
msgid ""
"\n"
"Invalid Architecture and OS release combination (%s, %s).\n"
"Your system has been registered, but will not receive updates\n"
"because it is not subscribed to a channel. If you have not yet\n"
"activated your product for service, please visit our website at:\n"
"\n"
"     http://www.redhat.com/apps/activate/\n"
"\n"
"...to activate your product."
msgstr ""

#: ../server/rhnChannel.py:2288
#, python-format
msgid ""
"\n"
"Invalid Architecture and OS release combination (%s, %s).\n"
"Your system has been registered, but will not receive updates\n"
"because it could not be subscribed to a base channel.\n"
"Please contact your organization administrator for assistance.\n"
msgstr ""

#: ../server/rhnChannel.py:2295
#, python-format
msgid ""
"\n"
"  This system has been successfully registered, but is not yet entitled\n"
"  to service.  To entitle this system to service, login to the web site at:\n"
"\n"
"  %(entitlement_url)s\n"
msgstr ""

#: ../server/rhnChannel.py:2303
#, python-format
msgid ""
"\n"
"  This system has been successfully registered, but no service entitlements\n"
"  were available.  To entitle this system to service, login to the web site "
"at:\n"
"\n"
"  %(entitlement_url)s\n"
msgstr ""

#: ../server/rhnHandler.py:62
msgid "Please run rhn_register as root on this client"
msgstr ""

#: ../server/rhnHandler.py:75
#, python-format
msgid "Service not enabled for system profile: \"%s\""
msgstr ""

#: ../server/rhnPackage.py:49 ../server/rhnPackage.py:87
#: ../server/rhnPackage.py:107 ../server/rhnPackage.py:158
#, python-format
msgid "Invalid RPM package %s requested"
msgstr ""

#: ../server/rhnPackage.py:112
msgid "Package not found"
msgstr ""

#: ../server/rhnServer/server_class.py:97
#, python-format
msgid "Architecture `%s' is not supported"
msgstr ""

#: ../server/rhnServer/server_token.py:78
#, python-format
msgid "Token `%s' has more than one base channel assigned"
msgstr ""

#: ../server/rhnServer/server_token.py:80
msgid "Conflicting base channels"
msgstr ""

#: ../server/rhnServer/server_token.py:190
#, python-format
msgid "Failed to add server to group %s"
msgstr ""

#: ../server/rhnServer/server_token.py:503
#, python-format
msgid "Maximum usage count of %s reached"
msgstr ""

#: ../server/rhnServer/server_token.py:744
msgid ""
"Stacking of re-registration tokens with different base entitlements is not "
"supported"
msgstr ""

#: ../server/rhnServer/server_token.py:811
#, python-format
msgid "Could not find token '%s'"
msgstr ""

#. Cannot use activation keys from different orgs
#: ../server/rhnServer/server_token.py:843
msgid "Tokens from mismatching orgs"
msgstr ""

#. Two tokens with different kickstart sessions
#: ../server/rhnServer/server_token.py:853
msgid "Kickstart session mismatch"
msgstr ""

#: ../server/rhnServer/server_token.py:877
msgid "Stacking of re-registration tokens is not supported"
msgstr ""

#: ../server/rhnUser.py:289 ../server/rhnUser.py:292
msgid "Invalid username/password combination"
msgstr ""

#. nope, not reserved either
#: ../server/rhnUser.py:467
#, python-format
msgid "Username `%s' has not been reserved"
msgstr ""

#. New accounts have to specify an e-mail address
#: ../server/rhnUser.py:473
msgid "E-mail address not specified"
msgstr ""

#: ../server/rhnUser.py:509
#, python-format
msgid "username should be at least %d characters"
msgstr ""

#: ../server/rhnUser.py:512
#, python-format
msgid "username should be less than %d characters"
msgstr ""

#: ../server/rhnUser.py:523
#, python-format
msgid "username = `%s', invalid character `%s'"
msgstr ""

#: ../server/rhnUser.py:542
#, python-format
msgid "Please limit your e-mail address to %s chars"
msgstr ""

#: ../server/rhnUser.py:623
#, python-format
msgid "password must be at least %d characters"
msgstr ""

#: ../server/rhnUser.py:626
#, python-format
msgid "Password must be shorter than %d characters"
msgstr ""

#: ../server/rhnUser.py:644
#, python-format
msgid "password contains character `%s'"
msgstr ""

#: ../server/rhnUser.py:651
#, python-format
msgid "username should be at least %d characters long"
msgstr ""

#: ../server/rhnUser.py:662
#, python-format
msgid "Cannot register usernames ending with %s"
msgstr ""

#. 0-999: Red Hat client/client-like interaction errors:
#: ../common/rhnException.py:53
msgid "This does not appear to be a valid username."
msgstr ""

#: ../common/rhnException.py:54
msgid "Invalid username and password combination."
msgstr ""

#: ../common/rhnException.py:55
msgid "This login is already taken, or the password is incorrect."
msgstr ""

#: ../common/rhnException.py:56
msgid "Permission denied."
msgstr ""

#: ../common/rhnException.py:57
msgid "Object not found."
msgstr ""

#: ../common/rhnException.py:58
msgid "Invalid System Digital ID."
msgstr ""

#: ../common/rhnException.py:59
msgid "Invalid System Credentials."
msgstr ""

#: ../common/rhnException.py:60
msgid "Could not retrieve user data from database."
msgstr ""

#: ../common/rhnException.py:61
msgid "Valid username required."
msgstr ""

#: ../common/rhnException.py:62
msgid "Valid password required."
msgstr ""

#: ../common/rhnException.py:63
msgid "Minimum username length violation."
msgstr ""

#: ../common/rhnException.py:64
msgid "Minimum password length violation."
msgstr ""

#: ../common/rhnException.py:65
msgid "The username contains invalid characters."
msgstr ""

#: ../common/rhnException.py:66
msgid "File not found."
msgstr ""

#: ../common/rhnException.py:67
msgid "Architecture and OS version combination is not supported."
msgstr ""

#: ../common/rhnException.py:68
msgid "Could not retrieve system data from database."
msgstr ""

#: ../common/rhnException.py:69
msgid "Invalid arguments passed to function."
msgstr ""

#: ../common/rhnException.py:70
msgid "Unable to retrieve requested entry."
msgstr ""

#: ../common/rhnException.py:71
msgid "Could not update database entry."
msgstr ""

#: ../common/rhnException.py:72
msgid "Unsupported server architecture."
msgstr ""

#: ../common/rhnException.py:73
#, python-format
msgid ""
"\n"
"     The anonymous server functionality is no longer available.\n"
"\n"
"     Please re-register this system by running mgr_register as root.\n"
"     Please visit https://%(hostname)s/rhn/systems/SystemEntitlements.do\n"
"     or login at https://%(hostname)s, and from the \"Overview\" tab,\n"
"     select \"Subscription Management\" to enable the service for this "
"system.\n"
"     "
msgstr ""

#: ../common/rhnException.py:81
msgid "Record not available in the database."
msgstr ""

#: ../common/rhnException.py:82
msgid "Invalid value for entry."
msgstr ""

#: ../common/rhnException.py:83
#, python-format
msgid ""
"\n"
"     This system does not have a valid entitlement for SUSE Manager.\n"
"     Please visit https://%(hostname)s/rhn/systems/SystemEntitlements.do\n"
"     or login at https://%(hostname)s, and from the \"Overview\" tab,\n"
"     select \"Subscription Management\" to enable the service for this "
"system.\n"
"     "
msgstr ""

#: ../common/rhnException.py:89
msgid "Channel error"
msgstr ""

#: ../common/rhnException.py:90
msgid "Client session token is invalid."
msgstr ""

#: ../common/rhnException.py:91
msgid "Client session token has expired."
msgstr ""

#: ../common/rhnException.py:92
msgid "You are not authorized to retrieve the requested object."
msgstr ""

#: ../common/rhnException.py:93
msgid "Invalid action"
msgstr ""

#: ../common/rhnException.py:94
msgid "You are not allowed to perform administrative tasks on this system."
msgstr ""

#: ../common/rhnException.py:96
msgid "The system is already subscribed to the specified channel."
msgstr ""

#: ../common/rhnException.py:97
msgid "The system is not currently subscribed to the specified channel."
msgstr ""

#: ../common/rhnException.py:98
msgid "The specified channel does not exist."
msgstr ""

#: ../common/rhnException.py:99
msgid "Invalid channel version."
msgstr ""

#: ../common/rhnException.py:100
msgid ""
"\n"
"     User group membership limits exceeded.\n"
"\n"
"     The current settings for your account do not allow you to add another\n"
"     user account. Please check with the organization administrator for "
"your\n"
"     account if the maximum number of users allowed to subscribe to server "
"needs\n"
"     to be changed.\n"
"     "
msgstr ""

#: ../common/rhnException.py:108
msgid ""
"\n"
"     System group membership limits exceeded.\n"
"\n"
"     The current settings for your account do not allow you to add another\n"
"     system profile. Please check with the organization administrator for "
"your\n"
"     account for modifying the maximum number of system profiles that can "
"be\n"
"     subscribed to your account.\n"
"     "
msgstr ""

#: ../common/rhnException.py:116
msgid ""
"\n"
"     Invalid architecture.\n"
"\n"
"     The architecture of the package is not supported by\n"
"     "
msgstr ""

#: ../common/rhnException.py:121
msgid "Invalid RPM header"
msgstr ""

#: ../common/rhnException.py:122
msgid ""
"\n"
"    This system is already registered as a Salt Minion. If you want to "
"register it as a traditional client\n"
"    please delete it first via the web UI or API and then register it using "
"the traditional tools.\n"
"    "
msgstr ""

#. For the uploading tools
#: ../common/rhnException.py:127
msgid "Invalid information uploaded to the server"
msgstr ""

#: ../common/rhnException.py:128
msgid "Error uploading network interfaces configuration."
msgstr ""

#: ../common/rhnException.py:129
msgid ""
"\n"
"     Package Upload Failed due to uniqueness constraint violation.\n"
"     Make sure the package does not have any duplicate dependencies or\n"
"     does not already exists on the server\n"
"     "
msgstr ""

#: ../common/rhnException.py:134
msgid ""
"\n"
"     The --force rhnpush option is disabled on this server.\n"
"     Please contact your SUSE Manager administrator for more help.\n"
"     "
msgstr ""

#. 60-70: token errors
#: ../common/rhnException.py:140
msgid ""
"\n"
"     The activation token specified could not be found on the server.\n"
"     Please retry with a valid key.\n"
"     "
msgstr ""

#: ../common/rhnException.py:144
msgid "Too many systems registered using this registration token"
msgstr ""

#: ../common/rhnException.py:145
msgid "Token contains invalid, obsoleted or insufficient settings"
msgstr ""

#: ../common/rhnException.py:146
msgid "Conflicting activation tokens"
msgstr ""

#. 70-80: channel subscription errors
#: ../common/rhnException.py:149
msgid ""
"\n"
"     No matching base channel found for your system.\n"
"     "
msgstr ""

#: ../common/rhnException.py:152
msgid ""
"\n"
"     You do not have subscription permission to the designated channel.\n"
"     Please refer to your organization's channel or organization\n"
"     administrators for further details.\n"
"     "
msgstr ""

#: ../common/rhnException.py:157
msgid "You can not unsubscribe from base channel."
msgstr ""

#: ../common/rhnException.py:158
msgid "SUSE Manager or Proxy channel can not be subscribed."
msgstr ""

#. 80-90: server group errors
#: ../common/rhnException.py:161
msgid "There was an error while trying to join the system to its groups"
msgstr ""

#. 90-100: entitlement errors
#: ../common/rhnException.py:164
msgid "Unable to entitle system"
msgstr ""

#. 100-109: e-mail and uuid related faults
#: ../common/rhnException.py:167
msgid "Maximum e-mail length violation."
msgstr ""

#: ../common/rhnException.py:168
msgid "This system has been previously registered."
msgstr ""

#: ../common/rhnException.py:169
msgid "Invalid username"
msgstr ""

#. 140-159 applet errors
#: ../common/rhnException.py:172
msgid "Unable to look up server"
msgstr ""

#. 160-179: OSAD errors
#: ../common/rhnException.py:175
msgid "Required argument is missing"
msgstr ""

#. 600-699: RHEL5+ EN errors
#: ../common/rhnException.py:178
msgid "No entitlement information tied to hardware"
msgstr ""

#: ../common/rhnException.py:179
msgid "Installation number is not entitling"
msgstr ""

#. 700-799: Additional user input verification errors.
#: ../common/rhnException.py:182
msgid "Maximum username length violation"
msgstr ""

#: ../common/rhnException.py:183
msgid "Maximum password length violation"
msgstr ""

#: ../common/rhnException.py:184
msgid "This user has read only API access. Action denied."
msgstr ""

#: ../common/rhnException.py:186
msgid "System Name cannot be less than 1 character"
msgstr ""

#. 1000-1999: Proxy specific errors:
#. issued by a Proxy to the client
#: ../common/rhnException.py:190
msgid "SUSE Manager Proxy error."
msgstr ""

#: ../common/rhnException.py:191
msgid "SUSE Manager Proxy unable to login."
msgstr ""

#. issued by a SUSE Manager Server/Satellite to the proxy
#: ../common/rhnException.py:193
msgid ""
"\n"
"     SUSE Manager Proxy system ID does not match a Spacewalk Proxy Server\n"
"     in the database.\n"
"     "
msgstr ""

#: ../common/rhnException.py:197
msgid "SUSE Manager Proxy session token is invalid."
msgstr ""

#: ../common/rhnException.py:198
msgid "SUSE Manager Proxy session token has expired."
msgstr ""

#. 2000-2999: Red Hat Satellite specific errors:
#: ../common/rhnException.py:202
msgid ""
"\n"
"      user creation is not allowed via mgr_register;\n"
"     please contact your sysadmin to have your account created.\n"
"     "
msgstr ""

#: ../common/rhnException.py:206
msgid ""
"\n"
"     This SUSE Manager server is not allowed to use Inter Server Sync on "
"this server\n"
"     "
msgstr ""

#: ../common/rhnException.py:209
msgid ""
"\n"
"     Inter Server Sync is disabled on this SUSE Manager Server.\n"
"     "
msgstr ""

#. 3000-3999: XML dumper errors:
#: ../common/rhnException.py:214
msgid "Invalid datatype passed"
msgstr ""

#: ../common/rhnException.py:215
msgid "Unable to retrieve channel"
msgstr ""

#: ../common/rhnException.py:216
msgid "Unable to retrieve package"
msgstr ""

#: ../common/rhnException.py:217
msgid "Unable to retrieve erratum"
msgstr ""

#: ../common/rhnException.py:218
msgid "File is missing"
msgstr ""

#: ../common/rhnException.py:219
msgid "Function retrieval error"
msgstr ""

#: ../common/rhnException.py:220
msgid "Function execution error"
msgstr ""

#: ../common/rhnException.py:221
msgid "Missing version string"
msgstr ""

#: ../common/rhnException.py:222
msgid "Invalid version string"
msgstr ""

#: ../common/rhnException.py:223
msgid "Mismatching versions"
msgstr ""

#: ../common/rhnException.py:224
msgid "Invalid channel version"
msgstr ""

#: ../common/rhnException.py:225
msgid "No comps file for channel"
msgstr ""

#: ../common/rhnException.py:226
msgid "Unable to retrieve comps file"
msgstr ""

#. 4000 - 4999: config management errors
#: ../common/rhnException.py:229
msgid "Configuration action missing"
msgstr ""

#: ../common/rhnException.py:230
msgid "File too large"
msgstr ""

#: ../common/rhnException.py:231
msgid "File contains binary data"
msgstr ""

#: ../common/rhnException.py:232
msgid "Configuration channel is not empty"
msgstr ""

#: ../common/rhnException.py:233
msgid "Permission error"
msgstr ""

#: ../common/rhnException.py:234
msgid "Content missing for configuration file"
msgstr ""

#: ../common/rhnException.py:235
msgid "Template delimiters not specified"
msgstr ""

#: ../common/rhnException.py:236
msgid "Configuration channel does not exist"
msgstr ""

#: ../common/rhnException.py:237
msgid "Configuration channel already exists"
msgstr ""

#: ../common/rhnException.py:238
msgid "File missing from configuration channel"
msgstr ""

#: ../common/rhnException.py:239
msgid "Different revision of this file is uploaded"
msgstr ""

#: ../common/rhnException.py:240
msgid "File already uploaded to configuration channel"
msgstr ""

#: ../common/rhnException.py:241
msgid "File size exceeds remaining quota space"
msgstr ""

#: ../common/rhnException.py:242
msgid "Full path of file must be specified"
msgstr ""

#: ../common/rhnException.py:243
msgid "Invalid revision number"
msgstr ""

#: ../common/rhnException.py:244
msgid "Cannot compare files of different file type"
msgstr ""

#. 5000 - 5999: client content uploading errors
#. 5000 - 5099: crash reporting errors
#: ../common/rhnException.py:248
msgid "Crash information is invalid or incomplete"
msgstr ""

#: ../common/rhnException.py:249
msgid "Crash file information is invalid or incomplete"
msgstr ""

#: ../common/rhnException.py:250
msgid "Error composing crash directory path"
msgstr ""

#: ../common/rhnException.py:251
msgid "Error composing crash file path"
msgstr ""

#: ../common/rhnException.py:252 ../common/rhnException.py:259
msgid "Invalid content encoding"
msgstr ""

#: ../common/rhnException.py:253
msgid "Invalid crash name"
msgstr ""

#: ../common/rhnException.py:254
msgid "Crash reporting is disabled for this organization"
msgstr ""

#. 5100 - 5199: scap results reporting error
#: ../common/rhnException.py:256
msgid "SCAP results file transfer is invalid or incomplete"
msgstr ""

#: ../common/rhnException.py:257
msgid "Error composing directory path for detailed SCAP results"
msgstr ""

#: ../common/rhnException.py:258
msgid "Error composing file path for detailed SCAP results"
msgstr ""

#: ../common/rhnException.py:306
msgid ""
"\n"
"     An error has occurred while processing your request. If this problem\n"
"     persists please enter a bug report at scc.suse.com.\n"
"     If you choose to submit the bug report, please be sure to include\n"
"     details of what you were trying to do when this error occurred and\n"
"     details on how to reproduce this problem.\n"
msgstr ""

#: ../common/rhnException.py:358
#, python-format
msgid ""
"Error Message:\n"
"    %s\n"
msgstr ""

#: ../common/rhnException.py:360
#, python-format
msgid "Error Class Code: %s\n"
msgstr ""

#: ../common/rhnException.py:363
#, python-format
msgid "Error Class Info: %s\n"
msgstr ""

#: ../common/rhnException.py:365
#, python-format
msgid "Explanation: %s"
msgstr ""

#: ../common/rhnTB.py:205
#, python-format
msgid "ERROR: %s %s: %s"
msgstr ""

#: ../common/rhnTB.py:207
#, python-format
msgid "TRACEBACK: %s"
msgstr ""

#: ../satellite_tools/disk_dumper/iss.py:1294
#: ../satellite_tools/disk_dumper/iss.py:1298
#, python-format
msgid "format of %s should be at least YYYYMMDD.\n"
msgstr ""

#: ../satellite_tools/messages.py:26
#, python-format
msgid ""
"\n"
"ERROR: executing step %s. Error is:\n"
"%s\n"
msgstr ""

#: ../satellite_tools/messages.py:31
#, python-format
msgid ""
"\n"
"ERROR: there was a problem accessing the channel data from your temporary\n"
"       repository. Did you migrate all of the data from the channel ISOs\n"
"       do this directory? If so, please recheck the channels ISOs, ensure\n"
"       that you have them all, and then iteratively remount and repopulate\n"
"       the temporary repository (%s).\n"
msgstr ""

#: ../satellite_tools/messages.py:39
#, python-format
msgid ""
"\n"
"ERROR: there was a problem synchronizing the information.\n"
"       Error message: %s\n"
msgstr ""

#: ../satellite_tools/messages.py:44
#, python-format
msgid ""
"\n"
"ERROR: There was a problem communicating with the ISS Master.\n"
"       Depending on the specific error details, please review your "
"configuration,\n"
"       basic network connectivity, and/or name resolution, and try again.\n"
"       Error message: %s\n"
msgstr ""

#: ../satellite_tools/messages.py:51
#, python-format
msgid ""
"\n"
"ERROR: There was a problem communicating with the ISS Master.\n"
"       If the master satellite is older than v5.3, it does not have ISS "
"capability.\n"
"       Otherwise, depending on the specific error details, please review "
"your\n"
"       configuration, basic network connectivity, and/or name resolution, "
"and try again.\n"
"       Error message: %s\n"
msgstr ""

#: ../satellite_tools/messages.py:59
#, python-format
msgid ""
"\n"
"ERROR: a child-channel cannot be synced without its parent being synced as\n"
"       well. A parent needs to be either (a) previously synced or (b) "
"synced\n"
"       in tandem with the desired child-channel. Missing parents for this\n"
"       transaction:\n"
"       %s\n"
msgstr ""

#: ../satellite_tools/messages.py:67
#, python-format
msgid ""
"\n"
"ERROR: you are not entitled to sync a channel in this set of channels.\n"
"Please contact your SUSE Manager contact\n"
"%s"
msgstr ""

#: ../satellite_tools/messages.py:72
#, python-format
msgid "  ERROR: not enough free space (%s KB) on device."
msgstr ""

#: ../satellite_tools/messages.py:74
#, python-format
msgid "    %3d/%s Fetch successful: %s (%s bytes)"
msgstr ""

#: ../satellite_tools/messages.py:75
#, python-format
msgid "    Extinct package:  %s"
msgstr ""

#: ../satellite_tools/messages.py:76
#, python-format
msgid "   Total size: %s"
msgstr ""

#: ../satellite_tools/messages.py:77
#, python-format
msgid "      Downloaded %s of %s. Estimated remaining time: %s"
msgstr ""

#: ../satellite_tools/messages.py:78
#, python-format
msgid "    Fetch unsuccessful: %s"
msgstr ""

#: ../satellite_tools/messages.py:79
#, python-format
msgid "   RPM fetch summary: %s"
msgstr ""

#: ../satellite_tools/messages.py:80
#, python-format
msgid "       success: %d"
msgstr ""

#: ../satellite_tools/messages.py:81
#, python-format
msgid "       failed:  %d"
msgstr ""

#: ../satellite_tools/messages.py:82
#, python-format
msgid "       extinct: %d"
msgstr ""

#: ../satellite_tools/messages.py:84
#, python-format
msgid "   Retrieving / parsing *relevant* package metadata: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:85
#, python-format
msgid "   Retrieving / parsing errata data: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:86
#, python-format
msgid "   Retrieving / parsing kickstart data: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:87
#, python-format
msgid "   Retrieving / parsing kickstart tree files: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:88
#, python-format
msgid "   Importing *relevant* package metadata: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:89
msgid "   * WARNING: this may be a slow process."
msgstr ""

#: ../satellite_tools/messages.py:90
msgid "Linking packages to channels"
msgstr ""

#: ../satellite_tools/messages.py:91
#, python-format
msgid "   Importing *relevant* errata: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:92
msgid "   No new kickstartable tree to import"
msgstr ""

#: ../satellite_tools/messages.py:93
#, python-format
msgid "Importing kickstartable trees (%d)"
msgstr ""

#: ../satellite_tools/messages.py:94
#, python-format
msgid "Imported kickstartable trees (%d)"
msgstr ""

#: ../satellite_tools/reposync.py:111 ../satellite_tools/satsync.py:439
msgid "+++ sending log as an email +++"
msgstr ""

#: ../satellite_tools/reposync.py:114
#, python-format
msgid "%s sync. report from %s"
msgstr ""

#: ../satellite_tools/reposync.py:124 ../satellite_tools/satsync.py:449
msgid "+++ email requested, but there is nothing to send +++"
msgstr ""

#: ../satellite_tools/rhn_satellite_activate.py:198
#, python-format
msgid ""
"\"%s\" (specified in commandline)\n"
"could not be opened and read:\n"
"%s"
msgstr ""

#: ../satellite_tools/rhn_satellite_activate.py:205
#, python-format
msgid ""
"\"%s\" could not be opened\n"
"and/or written to:\n"
"%s"
msgstr ""

#: ../satellite_tools/satsync.py:258
#, python-format
msgid "No handler for step %s"
msgstr ""

#. Try one more time - this time it should be faster since
#. everything should be cached
#: ../satellite_tools/satsync.py:270
msgid "Environment changed, trying again..."
msgstr ""

#: ../satellite_tools/satsync.py:277
msgid "ERROR: Encountered IntegrityError: \n"
msgstr ""

#: ../satellite_tools/satsync.py:285
msgid "Repeated failures"
msgstr ""

#: ../satellite_tools/satsync.py:290
#, python-format
msgid ""
"    Import complete:\n"
"        Begin time: %s\n"
"        End time:   %s\n"
"        Elapsed:    %s\n"
"          "
msgstr ""

#: ../satellite_tools/satsync.py:311
msgid "hours"
msgstr ""

#: ../satellite_tools/satsync.py:311
msgid "minutes"
msgstr ""

#: ../satellite_tools/satsync.py:311
msgid "seconds"
msgstr ""

#: ../satellite_tools/satsync.py:357
msgid ""
"ERROR: The dump is missing package data, use --no-rpms to skip this step or "
"fix the content to include package data."
msgstr ""

#. the orgs() method doesn't exist; that's fine we just
#. won't sync the orgs
#: ../satellite_tools/satsync.py:404
msgid "The SUSE Manager master does not support syncing orgs data."
msgstr ""

#: ../satellite_tools/satsync.py:404
msgid "Skipping..."
msgstr ""

#: ../satellite_tools/satsync.py:442
#, python-format
msgid "SUSE Manager Inter Server sync. report from %s"
msgstr ""

#: ../satellite_tools/satsync.py:521
msgid " - file-system synchronization"
msgstr ""

#: ../satellite_tools/satsync.py:533 ../satellite_tools/satsync.py:541
msgid " - live synchronization"
msgstr ""

#: ../satellite_tools/satsync.py:534
#, python-brace-format
msgid ""
"ERROR: Live content synchronizing with RHN Classic Hosted is no longer "
"supported.\n"
"Please use the cdn-sync command instead unless you are attempting to sync "
"from another {PRODUCT_NAME} via Inter-Server-Sync (ISS), or from local "
"content on disk via Channel Dump ISOs."
msgstr ""

#: ../satellite_tools/satsync.py:542
#, python-format
msgid "   url: %s"
msgstr ""

#: ../satellite_tools/satsync.py:543
#, python-format
msgid "   debug/output level: %s"
msgstr ""

#: ../satellite_tools/satsync.py:553
msgid "ERROR: this server must be registered with SUSE Manager."
msgstr ""

#: ../satellite_tools/satsync.py:575
#, python-format
msgid "Retrieving / parsing %s data"
msgstr ""

#: ../satellite_tools/satsync.py:585 ../satellite_tools/satsync.py:600
msgid "*** SYSTEM INTERRUPT CALLED ***"
msgstr ""

#: ../satellite_tools/satsync.py:593
msgid "ERROR: fatal parser exception occurred "
msgstr ""

#: ../satellite_tools/satsync.py:594
#, python-format
msgid "(line: %s, col: %s msg: %s)"
msgstr ""

#: ../satellite_tools/satsync.py:598
#, python-format
msgid "ERROR: parser exception occurred: %s"
msgstr ""

#: ../satellite_tools/satsync.py:603
msgid "ERROR: exception (during parse) occurred: "
msgstr ""

#: ../satellite_tools/satsync.py:604
#, python-format
msgid ""
"   Encountered some errors with %s data (see logs (%s) for more information)"
msgstr ""

#: ../satellite_tools/satsync.py:606
#, python-format
msgid "   Encountered some errors with %s data:"
msgstr ""

#: ../satellite_tools/satsync.py:607
#, python-format
msgid "   ------- %s PARSE/IMPORT ERROR -------"
msgstr ""

#: ../satellite_tools/satsync.py:609
msgid "   ---------------------------------------"
msgstr ""

#: ../satellite_tools/satsync.py:612
#, python-format
msgid "%s data complete"
msgstr ""

#: ../satellite_tools/satsync.py:665
msgid "Retrieving / parsing channel data"
msgstr ""

#: ../satellite_tools/satsync.py:718
msgid "Channel data complete"
msgstr ""

#: ../satellite_tools/satsync.py:736
#, python-format
msgid "%10s import from %s"
msgstr ""

#: ../satellite_tools/satsync.py:739
#, python-format
msgid "%10s import from %s - %s"
msgstr ""

#: ../satellite_tools/satsync.py:743
#, python-format
msgid "%10s"
msgstr ""

#: ../satellite_tools/satsync.py:750
msgid "p"
msgstr ""

#: ../satellite_tools/satsync.py:752
msgid "."
msgstr ""

#: ../satellite_tools/satsync.py:758
msgid "   p = previously imported/synced channel"
msgstr ""

#: ../satellite_tools/satsync.py:759
msgid "   . = channel not yet imported/synced"
msgstr ""

#: ../satellite_tools/satsync.py:765
msgid "   e = channel no longer supported (end-of-service)"
msgstr ""

#: ../satellite_tools/satsync.py:767
msgid "   ? = channel label invalid --- typo?"
msgstr ""

#: ../satellite_tools/satsync.py:771
#, python-format
msgid "   %s:"
msgstr ""

#: ../satellite_tools/satsync.py:772
#, python-format
msgid "      %s %-40s %4s %s"
msgstr ""

#: ../satellite_tools/satsync.py:773
msgid "base-channels"
msgstr ""

#: ../satellite_tools/satsync.py:786 ../satellite_tools/satsync.py:1603
msgid "NONE RELEVANT"
msgstr ""

#: ../satellite_tools/satsync.py:808
msgid "end-of-service"
msgstr ""

#: ../satellite_tools/satsync.py:809
msgid "e"
msgstr ""

#: ../satellite_tools/satsync.py:815
msgid "   typos:"
msgstr ""

#: ../satellite_tools/satsync.py:816
msgid "?"
msgstr ""

#: ../satellite_tools/satsync.py:831
#, python-format
msgid "XXX: imported channels: %s"
msgstr ""

#: ../satellite_tools/satsync.py:832
#, python-format
msgid "XXX:   cached channels: %s"
msgstr ""

#: ../satellite_tools/satsync.py:837
msgid "XXX: list channels called"
msgstr ""

#: ../satellite_tools/satsync.py:855
msgid "ERROR: these channels either do not exist or are not available:"
msgstr ""

#: ../satellite_tools/satsync.py:859
#, python-format
msgid "       (to see a list of channel labels: %s --list-channels)"
msgstr ""

#: ../satellite_tools/satsync.py:904
#, python-format
msgid "   Retrieving / parsing short package metadata: %s (%s)"
msgstr ""

#: ../satellite_tools/satsync.py:965
#, python-format
msgid "Diffing package metadata (what's missing locally?): %s"
msgstr ""

#: ../satellite_tools/satsync.py:971 ../satellite_tools/satsync.py:1254
msgid "Diffing:    "
msgstr ""

#: ../satellite_tools/satsync.py:988
msgid "ERROR: incremental dump skipped"
msgstr ""

#: ../satellite_tools/satsync.py:1079
msgid "Downloading rpm packages"
msgstr ""

#: ../satellite_tools/satsync.py:1084
#, python-format
msgid "   Fetching any missing RPMs: %s (%s)"
msgstr ""

#: ../satellite_tools/satsync.py:1085 ../satellite_tools/satsync.py:1153
msgid "NONE MISSING"
msgstr ""

#: ../satellite_tools/satsync.py:1094
msgid "Processing rpm packages complete"
msgstr ""

#: ../satellite_tools/satsync.py:1121
msgid "Downloading package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1146
msgid "Downloading srpm packages"
msgstr ""

#: ../satellite_tools/satsync.py:1152
#, python-format
msgid "   Fetching any missing SRPMs: %s (%s)"
msgstr ""

#: ../satellite_tools/satsync.py:1249
#, python-format
msgid "Diffing source package metadata (what's missing locally?): %s"
msgstr ""

#: ../satellite_tools/satsync.py:1260
msgid "Downloading source package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1338 ../satellite_tools/satsync.py:2027
#, python-format
msgid "Unable to save file %s: %s"
msgstr ""

#. for
#. Retried a number of times and it still failed; log the
#. file as being failed and move on
#: ../satellite_tools/satsync.py:1345
#, python-format
msgid "Failed to fetch file %s"
msgstr ""

#: ../satellite_tools/satsync.py:1350
msgid "Downloading kickstartable trees metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1365
msgid "Downloading kickstartable trees files"
msgstr ""

#: ../satellite_tools/satsync.py:1504
#, python-format
msgid "Grabbing all patches for channel %s"
msgstr ""

#: ../satellite_tools/satsync.py:1554
msgid "Downloading patch data"
msgstr ""

#: ../satellite_tools/satsync.py:1556
msgid "Forcing download of all patch data for requested channels."
msgstr ""

#: ../satellite_tools/satsync.py:1571
msgid "Downloading patch data complete"
msgstr ""

#: ../satellite_tools/satsync.py:1576 ../satellite_tools/satsync.py:1597
msgid "Downloading:"
msgstr ""

#: ../satellite_tools/satsync.py:1579
msgid " - complete"
msgstr ""

#: ../satellite_tools/satsync.py:1624
msgid "Importing source package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1627
msgid "Importing package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1635
msgid "Importing:  "
msgstr ""

#. not in the cache
#: ../satellite_tools/satsync.py:1703
msgid ""
"Package Not Found in Cache, Clear the Cache "
"to                                  Regenerate it."
msgstr ""

#: ../satellite_tools/satsync.py:1709
msgid "Importing channel patches"
msgstr ""

#: ../satellite_tools/satsync.py:1714
#, python-format
msgid "Importing %s patches for channel %s."
msgstr ""

#. Incomplete configuration
#: ../satellite_tools/satsync.py:2113
msgid "ERROR: server.mount_point not set in the configuration file"
msgstr ""

#: ../satellite_tools/satsync.py:2117
#, python-format
msgid "ERROR: server.mount_point %s do not exist"
msgstr ""

#: ../satellite_tools/satsync.py:2122
#, python-format
msgid "ERROR: path under server.mount_point (%s)  do not exist"
msgstr ""

#: ../satellite_tools/satsync.py:2199
#, python-format
msgid "Commandline: %s"
msgstr ""

#: ../satellite_tools/satsync.py:2202
#, python-format
msgid ""
"DEBUG ONLY: max. batch-size for XML/database-import processing (1..%s).\"man "
"satellite-sync\" for more information."
msgstr ""

#: ../satellite_tools/satsync.py:2205
msgid "alternative SSL CA Cert (fullpath to cert file)"
msgstr ""

#: ../satellite_tools/satsync.py:2207
msgid "process data for this channel only"
msgstr ""

#: ../satellite_tools/satsync.py:2209
msgid ""
"disk dump will be considered to be a full export; see \"man satellite-sync\" "
"for more information."
msgstr ""

#: ../satellite_tools/satsync.py:2212
msgid "existing custom channels will also be synced (unless -c is used)"
msgstr ""

#: ../satellite_tools/satsync.py:2214
#, python-format
msgid ""
"override debug level set in /etc/rhn/rhn.conf (which is currently set at %s)."
msgstr ""

#: ../satellite_tools/satsync.py:2216
#, python-format
msgid "requested version of XML dump (default: %s)"
msgstr ""

#: ../satellite_tools/satsync.py:2218
msgid "e-mail a report of what was synced/imported"
msgstr ""

#: ../satellite_tools/satsync.py:2220
msgid "forcibly process all (not a diff of) patch metadata"
msgstr ""

#: ../satellite_tools/satsync.py:2222
msgid "Do not use an http proxy under any circumstances."
msgstr ""

#: ../satellite_tools/satsync.py:2224
msgid "alternative http proxy (hostname:port)"
msgstr ""

#: ../satellite_tools/satsync.py:2226
msgid "alternative http proxy username"
msgstr ""

#: ../satellite_tools/satsync.py:2228
msgid "alternative http proxy password"
msgstr ""

#: ../satellite_tools/satsync.py:2230
msgid "parent SUSE Manager to import content from"
msgstr ""

#: ../satellite_tools/satsync.py:2232
msgid "list all available channels and exit"
msgstr ""

#: ../satellite_tools/satsync.py:2234
msgid "help on all error codes mgr-inter-sync returns"
msgstr ""

#: ../satellite_tools/satsync.py:2236
msgid "source mount point for import - disk update only"
msgstr ""

#: ../satellite_tools/satsync.py:2238
msgid "do not process patch data"
msgstr ""

#: ../satellite_tools/satsync.py:2240
msgid "do not process kickstart data (provisioning only)"
msgstr ""

#: ../satellite_tools/satsync.py:2242
msgid "do not process full package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:2244
msgid "do not download, or process any RPMs"
msgstr ""

#: ../satellite_tools/satsync.py:2246
msgid "turn off SSL (not recommended)"
msgstr ""

#: ../satellite_tools/satsync.py:2248
msgid "org to which the sync imports data. defaults to the admin account"
msgstr ""

#: ../satellite_tools/satsync.py:2250
msgid "print the configuration and exit"
msgstr ""

#: ../satellite_tools/satsync.py:2252
msgid "alternative server with which to connect (hostname)"
msgstr ""

#: ../satellite_tools/satsync.py:2254
msgid "synchronize to this step (man satellite-sync for more info)"
msgstr ""

#: ../satellite_tools/satsync.py:2256
msgid "write complete data to tempfile before streaming to remainder of app"
msgstr ""

#: ../satellite_tools/satsync.py:2258
msgid "DEBUG ONLY: alternative path to digital system id"
msgstr ""

#: ../satellite_tools/satsync.py:2260
msgid "alternative email address(es) for sync output (--email option)"
msgstr ""

#: ../satellite_tools/satsync.py:2262
msgid "do not remove rpms when importing from local dump"
msgstr ""

#: ../satellite_tools/satsync.py:2264
msgid ""
"the fully qualified domain name of the master Satellite. Valid with --mount-"
"point only. Required if you want to import org data and channel permissions."
msgstr ""

#: ../satellite_tools/satsync.py:2274
#, python-format
msgid "ERROR: these arguments make no sense in this context (try --help): %s"
msgstr ""

#. An SQL error is fatal... crash and burn
#: ../satellite_tools/satsync.py:2286
#, python-format
msgid "ERROR: Can't connect to the database: %s"
msgstr ""

#: ../satellite_tools/satsync.py:2287
msgid "ERROR: Check if your database is running."
msgstr ""

#: ../satellite_tools/satsync.py:2322
#, python-format
msgid "ERROR: --debug-level takes an in integer value within the range %s."
msgstr ""

#: ../satellite_tools/satsync.py:2324
msgid "  0  - little logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2325
msgid "  1  - minimal logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2326
msgid "  2  - normal level of logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2327
msgid "  3  - lots of logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2328
msgid "  4+ - excessive logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2341
msgid "ERROR: The --master option is only valid with the --mount-point option"
msgstr ""

#: ../satellite_tools/satsync.py:2351
#, python-format
msgid "ERROR: Unable to lookup Org Id %s"
msgstr ""

#: ../satellite_tools/satsync.py:2360
msgid ""
"WARNING: --list-channels option overrides any --step option. --step ignored."
msgstr ""

#: ../satellite_tools/satsync.py:2375
#, python-format
msgid ""
"ERROR: '%s' is not a valid step. See 'man mgr-inter-sync' for more detail."
msgstr ""

#: ../satellite_tools/satsync.py:2407
msgid ""
"ERROR: No channels currently imported; try mgr-inter-sync --list-channels; "
"then mgr-inter-sync -c chn0 -c chn1..."
msgstr ""

#. int(None) --> TypeError
#. int('a')  --> ValueError
#: ../satellite_tools/satsync.py:2457 ../satellite_tools/satsync.py:2461
msgid "ERROR: --batch-size must have a value within the range: 1..50"
msgstr ""

#: ../satellite_tools/satsync.py:2469
#, python-format
msgid "ERROR: no such directory %s"
msgstr ""

#: ../satellite_tools/satsync.py:2474
msgid "Error Codes: Returned codes means:"
msgstr ""

#: ../satellite_tools/satsync.py:2475
msgid " -1  - Could not lock file or KeyboardInterrupt or SystemExit"
msgstr ""

#: ../satellite_tools/satsync.py:2476
msgid "  0  - User interrupted or intentional exit"
msgstr ""

#: ../satellite_tools/satsync.py:2477
msgid "  1  - attempting to run more than one instance of mgr-inter-sync."
msgstr ""

#: ../satellite_tools/satsync.py:2478
msgid "  2  - Unable to find synchronization tools."
msgstr ""

#: ../satellite_tools/satsync.py:2479
msgid "  3  - a general socket exception occurred"
msgstr ""

#: ../satellite_tools/satsync.py:2480
msgid "  4  - an SSL error occurred. Recheck your SSL settings."
msgstr ""

#: ../satellite_tools/satsync.py:2481
msgid "  5  - ISS error"
msgstr ""

#: ../satellite_tools/satsync.py:2482
msgid "  6  - unhandled exception occurred"
msgstr ""

#: ../satellite_tools/satsync.py:2483
msgid "  7  - unknown sync error"
msgstr ""

#: ../satellite_tools/satsync.py:2484
msgid "  8  - ERROR: must be root to execute"
msgstr ""

#: ../satellite_tools/satsync.py:2485
msgid "  9  - rpclib fault during synchronization init"
msgstr ""

#: ../satellite_tools/satsync.py:2486
msgid "  10 - synchronization init error"
msgstr ""

#: ../satellite_tools/satsync.py:2487
msgid "  11 - Error parsing XML stream"
msgstr ""

#: ../satellite_tools/satsync.py:2488
msgid "  12 - Channel do not exist"
msgstr ""

#: ../satellite_tools/satsync.py:2489
msgid "  13 - SQL error during importing package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:2490
msgid "  14 - SQL error during linking channel packages"
msgstr ""

#: ../satellite_tools/satsync.py:2491
msgid "  15 - SQL error during xml processing"
msgstr ""

#: ../satellite_tools/satsync.py:2492
msgid "  16 - server.mount_point not set in the configuration file"
msgstr ""

#: ../satellite_tools/satsync.py:2493
msgid ""
"  17 - SQL error during retrieving the channels already imported in the SUSE "
"Manager database"
msgstr ""

#: ../satellite_tools/satsync.py:2494
msgid "  18 - Wrong db connection string in rhn.conf"
msgstr ""

#: ../satellite_tools/satsync.py:2495
msgid "  19 - Bad arguments"
msgstr ""

#: ../satellite_tools/satsync.py:2496
msgid "  20 - Could not connect to db."
msgstr ""

#: ../satellite_tools/satsync.py:2497
msgid "  21 - Bad debug level"
msgstr ""

#: ../satellite_tools/satsync.py:2498
msgid "  22 - Not valid step"
msgstr ""

#: ../satellite_tools/satsync.py:2499
msgid "  24 - no such file"
msgstr ""

#: ../satellite_tools/satsync.py:2500
msgid "  25 - no such directory"
msgstr ""

#: ../satellite_tools/satsync.py:2501
msgid "  26 - mount_point does not exist"
msgstr ""

#: ../satellite_tools/satsync.py:2502
msgid "  27 - No such org"
msgstr ""

#: ../satellite_tools/satsync.py:2503
msgid "  28 - error: --master is only valid with --mount-point"
msgstr ""

#: ../satellite_tools/satsync.py:2510
#, python-format
msgid "ERROR: unknown dump version, try one of %s"
msgstr ""
  0707010000005E000081B40000000000000000000000016290A0C10000B9CC000000000000000000000000000000000000001B00000000spacewalk-backend/po/bn.po    # SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
#
# Translators:
# Progga <progga@BengaLinux.Org>, 2004.
# Robin Mehdee <robin@ankur.org.bd>, 2012.
# Runa Bhattacharjee <runab@redhat.com>, 2004.
# Salahuddin <salahuddin66@gmail.com>, 2004.
# Samia Niamatullah <mailsamia2001@yahoo.com>, 2005.
# Jiri Dostal <jdostal@redhat.com>, 2018. #zanata
msgid ""
msgstr ""
"Project-Id-Version: Spacewalk\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-10-16 13:34+0200\n"
"PO-Revision-Date: 2018-03-16 10:53+0000\n"
"Last-Translator: Copied by Zanata <copied-by-zanata@zanata.org>\n"
"Language-Team: Bengali <info@ankur.org.bd>\n"
"Language: bn\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: Zanata 4.6.2\n"

#: ../server/apacheAuth.py:66
#, python-format
msgid "incomplete proxy authentication token: %s"
msgstr ""

#: ../server/apacheAuth.py:84
#, python-format
msgid "Sent proxy signature %s does not match ours %s."
msgstr ""

#: ../server/apacheAuth.py:119
msgid "declined proxy authentication"
msgstr ""

#: ../server/apacheRequest.py:59
#, python-format
msgid "Invalid request received (%s)."
msgstr ""

#: ../server/apacheRequest.py:120
#, python-format
msgid ""
"IMPORTANT MESSAGE FOLLOWS:\n"
"%s"
msgstr ""

#: ../server/apacheRequest.py:149
#, python-format
msgid ""
"While running '%s': caught\n"
"%s : %s\n"
msgstr ""

#: ../server/apacheRequest.py:606
#, python-format
msgid "Invalid URI %s"
msgstr ""

#: ../server/configFilesHandler.py:129 ../server/handlers/app/packages.py:192
#: ../server/handlers/xmlrpc/registration.py:215
#: ../server/handlers/xmlrpc/registration.py:1168
#: ../server/handlers/xmlrpc/registration.py:1307
#, python-format
msgid ""
"\n"
"                   %s Account has been deactivated on this server.\n"
"                   Please contact your Org administrator for more help."
msgstr ""

#: ../server/handlers/applet/applet.py:78
#, python-brace-format
msgid "Your system was not found in the {PRODUCT_NAME} database"
msgstr ""

#: ../server/handlers/sat/auth.py:45
msgid "ISS is disabled on this server."
msgstr ""

#: ../server/handlers/sat/auth.py:50
#, python-format
msgid "Server \"%s\" is not enabled for ISS."
msgstr ""

#: ../server/handlers/xmlrpc/errata.py:64
#, python-format
msgid "Expected a package name, not: %s"
msgstr ""

#: ../server/handlers/xmlrpc/errata.py:115
#, python-format
msgid "Expected a package, not: %s"
msgstr ""

#: ../server/handlers/xmlrpc/proxy.py:65
#, python-format
msgid "SUSE Manager Proxy service not enabled for server profile: \"%s\""
msgstr ""

#: ../server/handlers/xmlrpc/proxy.py:85
msgid "Invalid session key"
msgstr "à¦…à¦•à¦¾à¦°à§à¦¯à¦•à¦° à¦¸à§‡à¦¶à¦¨ à¦•à§€"

#: ../server/handlers/xmlrpc/proxy.py:93
msgid "This server ID no longer exists"
msgstr ""

#: ../server/handlers/xmlrpc/queue.py:433
#, python-format
msgid "Invalid action value type %s (%s)"
msgstr "à¦…à¦•à¦¾à¦°à§à¦¯à¦•à¦° à¦…à§à¦¯à¦¾à¦•à¦¶à¦¨ à¦®à¦¾à¦¨à§‡à¦° à¦§à¦°à¦£ %s (%s)"

#: ../server/handlers/xmlrpc/queue.py:464
#, python-format
msgid "Action %s does not belong to server %s"
msgstr "%s à¦…à§à¦¯à¦¾à¦•à¦¶à¦¨ %s à¦¸à¦¾à¦°à§à¦­à¦¾à¦° à¦•à§‡ à¦…à¦§à¦¿à¦•à¦¾à¦° à¦•à¦°à§‡ à¦¨à¦¾"

#: ../server/handlers/xmlrpc/registration.py:194
msgid "Required data missing"
msgstr "à¦…à¦¨à§à¦°à§‹à¦§à¦•à§ƒà¦¤ à¦¡à¦¾à¦Ÿà¦¾ à¦ªà¦¾à¦“à¦¯à¦¼à¦¾ à¦¯à¦¾à¦šà§à¦›à§‡ à¦¨à¦¾"

#: ../server/handlers/xmlrpc/registration.py:198
msgid "Required members missing"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:207
msgid "Attempt to register a system to an invalid username"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:839
msgid "Invalid system release version requested"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1063
msgid ""
"Unable to find a valid network interface, both ipaddr and ip6addr not found."
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1115
#, python-brace-format
msgid "{PRODUCT_NAME} Welcome Message"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1125
msgid "Privacy Statement"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1146
msgid "Expected a dictionary as a product argument"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1374
#, python-format
msgid "Invalid value '%s' for %s (%s)"
msgstr ""

#: ../server/handlers/xmlrpc/scap.py:104
msgid "Invalid system_id/action_id pair."
msgstr ""

#: ../server/handlers/xmlrpc/up2date.py:233
#, python-format
msgid "Invalid value %s (%s)"
msgstr "à¦…à¦•à¦¾à¦°à§à¦¯à¦•à¦° à¦®à¦¾à¦¨ %s (%s)"

#: ../server/importlib/userAuth.py:98
msgid "You are not authorized to manage packages in the null org"
msgstr ""

#: ../server/importlib/userAuth.py:103
#, python-format
msgid "You are not allowed to manage packages in the %s org"
msgstr ""

#: ../server/importlib/userAuth.py:121
msgid "You are not allowed to perform administrative tasks"
msgstr ""

#: ../server/importlib/userAuth.py:144
#, python-format
msgid ""
"You are not allowed to manage channel %s, or that channel does not exist"
msgstr ""

#: ../server/importlib/userAuth.py:204
#, python-format
msgid ""
"\n"
"               %s Account has been deactivated on this server.\n"
"               Please contact your Org administrator for more help."
msgstr ""

#: ../server/rhnChannel.py:1992
#, python-format
msgid ""
"Your account does not have access to any channels matching "
"(release='%(release)s', arch='%(arch)s')%(www_activation)s"
msgstr ""

#: ../server/rhnChannel.py:2002
msgid ""
"\n"
"If you have a registration number, please register with it first at http://"
"www.redhat.com/apps/activate/ and then try again.\n"
"\n"
msgstr ""

#: ../server/rhnChannel.py:2012
#, python-format
msgid "Insufficient subscription permissions for release (%s, %s"
msgstr ""

#. Various messages that can be reused
#.
#. bretm 02/07/2007 -- when we have better old-client documentation, probably
#. will be safe to get rid of all this crap
#: ../server/rhnChannel.py:2276 ../server/rhnChannel.py:2287
#: ../server/rhnChannel.py:2302
msgid "System Registered but Inactive"
msgstr ""

#: ../server/rhnChannel.py:2277
#, python-format
msgid ""
"\n"
"Invalid Architecture and OS release combination (%s, %s).\n"
"Your system has been registered, but will not receive updates\n"
"because it is not subscribed to a channel. If you have not yet\n"
"activated your product for service, please visit our website at:\n"
"\n"
"     http://www.redhat.com/apps/activate/\n"
"\n"
"...to activate your product."
msgstr ""

#: ../server/rhnChannel.py:2288
#, python-format
msgid ""
"\n"
"Invalid Architecture and OS release combination (%s, %s).\n"
"Your system has been registered, but will not receive updates\n"
"because it could not be subscribed to a base channel.\n"
"Please contact your organization administrator for assistance.\n"
msgstr ""

#: ../server/rhnChannel.py:2295
#, python-format
msgid ""
"\n"
"  This system has been successfully registered, but is not yet entitled\n"
"  to service.  To entitle this system to service, login to the web site at:\n"
"\n"
"  %(entitlement_url)s\n"
msgstr ""

#: ../server/rhnChannel.py:2303
#, python-format
msgid ""
"\n"
"  This system has been successfully registered, but no service entitlements\n"
"  were available.  To entitle this system to service, login to the web site "
"at:\n"
"\n"
"  %(entitlement_url)s\n"
msgstr ""

#: ../server/rhnHandler.py:62
msgid "Please run rhn_register as root on this client"
msgstr ""

#: ../server/rhnHandler.py:75
#, python-format
msgid "Service not enabled for system profile: \"%s\""
msgstr ""

#: ../server/rhnPackage.py:49 ../server/rhnPackage.py:87
#: ../server/rhnPackage.py:107 ../server/rhnPackage.py:158
#, python-format
msgid "Invalid RPM package %s requested"
msgstr ""

#: ../server/rhnPackage.py:112
msgid "Package not found"
msgstr ""

#: ../server/rhnServer/server_class.py:97
#, python-format
msgid "Architecture `%s' is not supported"
msgstr ""

#: ../server/rhnServer/server_token.py:78
#, python-format
msgid "Token `%s' has more than one base channel assigned"
msgstr ""

#: ../server/rhnServer/server_token.py:80
msgid "Conflicting base channels"
msgstr ""

#: ../server/rhnServer/server_token.py:190
#, python-format
msgid "Failed to add server to group %s"
msgstr "%s à¦—à§à¦°à§à¦ªà§‡ à¦¸à¦¾à¦°à§à¦­à¦¾à¦° à¦¸à¦‚à¦¯à§‹à¦— à¦•à¦°à¦¤à§‡ à¦¬à§à¦¯à¦°à§à¦¥"

#: ../server/rhnServer/server_token.py:503
#, python-format
msgid "Maximum usage count of %s reached"
msgstr ""

#: ../server/rhnServer/server_token.py:744
msgid ""
"Stacking of re-registration tokens with different base entitlements is not "
"supported"
msgstr ""

#: ../server/rhnServer/server_token.py:811
#, python-format
msgid "Could not find token '%s'"
msgstr "'%s' à¦Ÿà§‹à¦•à§‡à¦¨ à¦ªà¦¾à¦“à¦¯à¦¼à¦¾ à¦¯à¦¾à¦¯à¦¼à¦¨à¦¿"

#. Cannot use activation keys from different orgs
#: ../server/rhnServer/server_token.py:843
msgid "Tokens from mismatching orgs"
msgstr ""

#. Two tokens with different kickstart sessions
#: ../server/rhnServer/server_token.py:853
msgid "Kickstart session mismatch"
msgstr ""

#: ../server/rhnServer/server_token.py:877
msgid "Stacking of re-registration tokens is not supported"
msgstr ""

#: ../server/rhnUser.py:289 ../server/rhnUser.py:292
msgid "Invalid username/password combination"
msgstr ""

#. nope, not reserved either
#: ../server/rhnUser.py:467
#, python-format
msgid "Username `%s' has not been reserved"
msgstr ""

#. New accounts have to specify an e-mail address
#: ../server/rhnUser.py:473
msgid "E-mail address not specified"
msgstr ""

#: ../server/rhnUser.py:509
#, python-format
msgid "username should be at least %d characters"
msgstr ""

#: ../server/rhnUser.py:512
#, python-format
msgid "username should be less than %d characters"
msgstr ""

#: ../server/rhnUser.py:523
#, python-format
msgid "username = `%s', invalid character `%s'"
msgstr ""

#: ../server/rhnUser.py:542
#, python-format
msgid "Please limit your e-mail address to %s chars"
msgstr ""

#: ../server/rhnUser.py:623
#, python-format
msgid "password must be at least %d characters"
msgstr ""

#: ../server/rhnUser.py:626
#, python-format
msgid "Password must be shorter than %d characters"
msgstr ""

#: ../server/rhnUser.py:644
#, python-format
msgid "password contains character `%s'"
msgstr ""

#: ../server/rhnUser.py:651
#, python-format
msgid "username should be at least %d characters long"
msgstr ""

#: ../server/rhnUser.py:662
#, python-format
msgid "Cannot register usernames ending with %s"
msgstr ""

#. 0-999: Red Hat client/client-like interaction errors:
#: ../common/rhnException.py:53
msgid "This does not appear to be a valid username."
msgstr ""

#: ../common/rhnException.py:54
msgid "Invalid username and password combination."
msgstr ""

#: ../common/rhnException.py:55
msgid "This login is already taken, or the password is incorrect."
msgstr ""

#: ../common/rhnException.py:56
msgid "Permission denied."
msgstr ""

#: ../common/rhnException.py:57
msgid "Object not found."
msgstr ""

#: ../common/rhnException.py:58
msgid "Invalid System Digital ID."
msgstr ""

#: ../common/rhnException.py:59
msgid "Invalid System Credentials."
msgstr ""

#: ../common/rhnException.py:60
msgid "Could not retrieve user data from database."
msgstr ""

#: ../common/rhnException.py:61
msgid "Valid username required."
msgstr ""

#: ../common/rhnException.py:62
msgid "Valid password required."
msgstr ""

#: ../common/rhnException.py:63
msgid "Minimum username length violation."
msgstr ""

#: ../common/rhnException.py:64
msgid "Minimum password length violation."
msgstr ""

#: ../common/rhnException.py:65
msgid "The username contains invalid characters."
msgstr ""

#: ../common/rhnException.py:66
msgid "File not found."
msgstr ""

#: ../common/rhnException.py:67
msgid "Architecture and OS version combination is not supported."
msgstr ""

#: ../common/rhnException.py:68
msgid "Could not retrieve system data from database."
msgstr ""

#: ../common/rhnException.py:69
msgid "Invalid arguments passed to function."
msgstr ""

#: ../common/rhnException.py:70
msgid "Unable to retrieve requested entry."
msgstr ""

#: ../common/rhnException.py:71
msgid "Could not update database entry."
msgstr ""

#: ../common/rhnException.py:72
msgid "Unsupported server architecture."
msgstr ""

#: ../common/rhnException.py:73
#, python-format
msgid ""
"\n"
"     The anonymous server functionality is no longer available.\n"
"\n"
"     Please re-register this system by running mgr_register as root.\n"
"     Please visit https://%(hostname)s/rhn/systems/SystemEntitlements.do\n"
"     or login at https://%(hostname)s, and from the \"Overview\" tab,\n"
"     select \"Subscription Management\" to enable the service for this "
"system.\n"
"     "
msgstr ""

#: ../common/rhnException.py:81
msgid "Record not available in the database."
msgstr ""

#: ../common/rhnException.py:82
msgid "Invalid value for entry."
msgstr ""

#: ../common/rhnException.py:83
#, python-format
msgid ""
"\n"
"     This system does not have a valid entitlement for SUSE Manager.\n"
"     Please visit https://%(hostname)s/rhn/systems/SystemEntitlements.do\n"
"     or login at https://%(hostname)s, and from the \"Overview\" tab,\n"
"     select \"Subscription Management\" to enable the service for this "
"system.\n"
"     "
msgstr ""

#: ../common/rhnException.py:89
msgid "Channel error"
msgstr ""

#: ../common/rhnException.py:90
msgid "Client session token is invalid."
msgstr ""

#: ../common/rhnException.py:91
msgid "Client session token has expired."
msgstr ""

#: ../common/rhnException.py:92
msgid "You are not authorized to retrieve the requested object."
msgstr ""

#: ../common/rhnException.py:93
msgid "Invalid action"
msgstr ""

#: ../common/rhnException.py:94
msgid "You are not allowed to perform administrative tasks on this system."
msgstr ""

#: ../common/rhnException.py:96
msgid "The system is already subscribed to the specified channel."
msgstr ""

#: ../common/rhnException.py:97
msgid "The system is not currently subscribed to the specified channel."
msgstr ""

#: ../common/rhnException.py:98
msgid "The specified channel does not exist."
msgstr ""

#: ../common/rhnException.py:99
msgid "Invalid channel version."
msgstr ""

#: ../common/rhnException.py:100
msgid ""
"\n"
"     User group membership limits exceeded.\n"
"\n"
"     The current settings for your account do not allow you to add another\n"
"     user account. Please check with the organization administrator for "
"your\n"
"     account if the maximum number of users allowed to subscribe to server "
"needs\n"
"     to be changed.\n"
"     "
msgstr ""

#: ../common/rhnException.py:108
msgid ""
"\n"
"     System group membership limits exceeded.\n"
"\n"
"     The current settings for your account do not allow you to add another\n"
"     system profile. Please check with the organization administrator for "
"your\n"
"     account for modifying the maximum number of system profiles that can "
"be\n"
"     subscribed to your account.\n"
"     "
msgstr ""

#: ../common/rhnException.py:116
msgid ""
"\n"
"     Invalid architecture.\n"
"\n"
"     The architecture of the package is not supported by\n"
"     "
msgstr ""

#: ../common/rhnException.py:121
msgid "Invalid RPM header"
msgstr ""

#: ../common/rhnException.py:122
msgid ""
"\n"
"    This system is already registered as a Salt Minion. If you want to "
"register it as a traditional client\n"
"    please delete it first via the web UI or API and then register it using "
"the traditional tools.\n"
"    "
msgstr ""

#. For the uploading tools
#: ../common/rhnException.py:127
msgid "Invalid information uploaded to the server"
msgstr ""

#: ../common/rhnException.py:128
msgid "Error uploading network interfaces configuration."
msgstr ""

#: ../common/rhnException.py:129
msgid ""
"\n"
"     Package Upload Failed due to uniqueness constraint violation.\n"
"     Make sure the package does not have any duplicate dependencies or\n"
"     does not already exists on the server\n"
"     "
msgstr ""

#: ../common/rhnException.py:134
msgid ""
"\n"
"     The --force rhnpush option is disabled on this server.\n"
"     Please contact your SUSE Manager administrator for more help.\n"
"     "
msgstr ""

#. 60-70: token errors
#: ../common/rhnException.py:140
msgid ""
"\n"
"     The activation token specified could not be found on the server.\n"
"     Please retry with a valid key.\n"
"     "
msgstr ""

#: ../common/rhnException.py:144
msgid "Too many systems registered using this registration token"
msgstr ""

#: ../common/rhnException.py:145
msgid "Token contains invalid, obsoleted or insufficient settings"
msgstr ""

#: ../common/rhnException.py:146
msgid "Conflicting activation tokens"
msgstr ""

#. 70-80: channel subscription errors
#: ../common/rhnException.py:149
msgid ""
"\n"
"     No matching base channel found for your system.\n"
"     "
msgstr ""

#: ../common/rhnException.py:152
msgid ""
"\n"
"     You do not have subscription permission to the designated channel.\n"
"     Please refer to your organization's channel or organization\n"
"     administrators for further details.\n"
"     "
msgstr ""

#: ../common/rhnException.py:157
msgid "You can not unsubscribe from base channel."
msgstr ""

#: ../common/rhnException.py:158
msgid "SUSE Manager or Proxy channel can not be subscribed."
msgstr ""

#. 80-90: server group errors
#: ../common/rhnException.py:161
msgid "There was an error while trying to join the system to its groups"
msgstr ""

#. 90-100: entitlement errors
#: ../common/rhnException.py:164
msgid "Unable to entitle system"
msgstr ""

#. 100-109: e-mail and uuid related faults
#: ../common/rhnException.py:167
msgid "Maximum e-mail length violation."
msgstr ""

#: ../common/rhnException.py:168
msgid "This system has been previously registered."
msgstr ""

#: ../common/rhnException.py:169
msgid "Invalid username"
msgstr ""

#. 140-159 applet errors
#: ../common/rhnException.py:172
msgid "Unable to look up server"
msgstr ""

#. 160-179: OSAD errors
#: ../common/rhnException.py:175
msgid "Required argument is missing"
msgstr ""

#. 600-699: RHEL5+ EN errors
#: ../common/rhnException.py:178
msgid "No entitlement information tied to hardware"
msgstr ""

#: ../common/rhnException.py:179
msgid "Installation number is not entitling"
msgstr ""

#. 700-799: Additional user input verification errors.
#: ../common/rhnException.py:182
msgid "Maximum username length violation"
msgstr ""

#: ../common/rhnException.py:183
msgid "Maximum password length violation"
msgstr ""

#: ../common/rhnException.py:184
msgid "This user has read only API access. Action denied."
msgstr ""

#: ../common/rhnException.py:186
msgid "System Name cannot be less than 1 character"
msgstr ""

#. 1000-1999: Proxy specific errors:
#. issued by a Proxy to the client
#: ../common/rhnException.py:190
msgid "SUSE Manager Proxy error."
msgstr ""

#: ../common/rhnException.py:191
msgid "SUSE Manager Proxy unable to login."
msgstr ""

#. issued by a SUSE Manager Server/Satellite to the proxy
#: ../common/rhnException.py:193
msgid ""
"\n"
"     SUSE Manager Proxy system ID does not match a Spacewalk Proxy Server\n"
"     in the database.\n"
"     "
msgstr ""

#: ../common/rhnException.py:197
msgid "SUSE Manager Proxy session token is invalid."
msgstr ""

#: ../common/rhnException.py:198
msgid "SUSE Manager Proxy session token has expired."
msgstr ""

#. 2000-2999: Red Hat Satellite specific errors:
#: ../common/rhnException.py:202
msgid ""
"\n"
"      user creation is not allowed via mgr_register;\n"
"     please contact your sysadmin to have your account created.\n"
"     "
msgstr ""

#: ../common/rhnException.py:206
msgid ""
"\n"
"     This SUSE Manager server is not allowed to use Inter Server Sync on "
"this server\n"
"     "
msgstr ""

#: ../common/rhnException.py:209
msgid ""
"\n"
"     Inter Server Sync is disabled on this SUSE Manager Server.\n"
"     "
msgstr ""

#. 3000-3999: XML dumper errors:
#: ../common/rhnException.py:214
msgid "Invalid datatype passed"
msgstr ""

#: ../common/rhnException.py:215
msgid "Unable to retrieve channel"
msgstr ""

#: ../common/rhnException.py:216
msgid "Unable to retrieve package"
msgstr ""

#: ../common/rhnException.py:217
msgid "Unable to retrieve erratum"
msgstr ""

#: ../common/rhnException.py:218
msgid "File is missing"
msgstr ""

#: ../common/rhnException.py:219
msgid "Function retrieval error"
msgstr ""

#: ../common/rhnException.py:220
msgid "Function execution error"
msgstr ""

#: ../common/rhnException.py:221
msgid "Missing version string"
msgstr ""

#: ../common/rhnException.py:222
msgid "Invalid version string"
msgstr ""

#: ../common/rhnException.py:223
msgid "Mismatching versions"
msgstr ""

#: ../common/rhnException.py:224
msgid "Invalid channel version"
msgstr ""

#: ../common/rhnException.py:225
msgid "No comps file for channel"
msgstr ""

#: ../common/rhnException.py:226
msgid "Unable to retrieve comps file"
msgstr ""

#. 4000 - 4999: config management errors
#: ../common/rhnException.py:229
msgid "Configuration action missing"
msgstr ""

#: ../common/rhnException.py:230
msgid "File too large"
msgstr ""

#: ../common/rhnException.py:231
msgid "File contains binary data"
msgstr ""

#: ../common/rhnException.py:232
msgid "Configuration channel is not empty"
msgstr ""

#: ../common/rhnException.py:233
msgid "Permission error"
msgstr ""

#: ../common/rhnException.py:234
msgid "Content missing for configuration file"
msgstr ""

#: ../common/rhnException.py:235
msgid "Template delimiters not specified"
msgstr ""

#: ../common/rhnException.py:236
msgid "Configuration channel does not exist"
msgstr ""

#: ../common/rhnException.py:237
msgid "Configuration channel already exists"
msgstr ""

#: ../common/rhnException.py:238
msgid "File missing from configuration channel"
msgstr ""

#: ../common/rhnException.py:239
msgid "Different revision of this file is uploaded"
msgstr ""

#: ../common/rhnException.py:240
msgid "File already uploaded to configuration channel"
msgstr ""

#: ../common/rhnException.py:241
msgid "File size exceeds remaining quota space"
msgstr ""

#: ../common/rhnException.py:242
msgid "Full path of file must be specified"
msgstr ""

#: ../common/rhnException.py:243
msgid "Invalid revision number"
msgstr ""

#: ../common/rhnException.py:244
msgid "Cannot compare files of different file type"
msgstr ""

#. 5000 - 5999: client content uploading errors
#. 5000 - 5099: crash reporting errors
#: ../common/rhnException.py:248
msgid "Crash information is invalid or incomplete"
msgstr ""

#: ../common/rhnException.py:249
msgid "Crash file information is invalid or incomplete"
msgstr ""

#: ../common/rhnException.py:250
msgid "Error composing crash directory path"
msgstr ""

#: ../common/rhnException.py:251
msgid "Error composing crash file path"
msgstr ""

#: ../common/rhnException.py:252 ../common/rhnException.py:259
msgid "Invalid content encoding"
msgstr ""

#: ../common/rhnException.py:253
msgid "Invalid crash name"
msgstr ""

#: ../common/rhnException.py:254
msgid "Crash reporting is disabled for this organization"
msgstr ""

#. 5100 - 5199: scap results reporting error
#: ../common/rhnException.py:256
msgid "SCAP results file transfer is invalid or incomplete"
msgstr ""

#: ../common/rhnException.py:257
msgid "Error composing directory path for detailed SCAP results"
msgstr ""

#: ../common/rhnException.py:258
msgid "Error composing file path for detailed SCAP results"
msgstr ""

#: ../common/rhnException.py:306
msgid ""
"\n"
"     An error has occurred while processing your request. If this problem\n"
"     persists please enter a bug report at scc.suse.com.\n"
"     If you choose to submit the bug report, please be sure to include\n"
"     details of what you were trying to do when this error occurred and\n"
"     details on how to reproduce this problem.\n"
msgstr ""

#: ../common/rhnException.py:358
#, python-format
msgid ""
"Error Message:\n"
"    %s\n"
msgstr ""

#: ../common/rhnException.py:360
#, python-format
msgid "Error Class Code: %s\n"
msgstr ""

#: ../common/rhnException.py:363
#, python-format
msgid "Error Class Info: %s\n"
msgstr ""

#: ../common/rhnException.py:365
#, python-format
msgid "Explanation: %s"
msgstr ""

#: ../common/rhnTB.py:205
#, python-format
msgid "ERROR: %s %s: %s"
msgstr ""

#: ../common/rhnTB.py:207
#, python-format
msgid "TRACEBACK: %s"
msgstr ""

#: ../satellite_tools/disk_dumper/iss.py:1294
#: ../satellite_tools/disk_dumper/iss.py:1298
#, python-format
msgid "format of %s should be at least YYYYMMDD.\n"
msgstr ""

#: ../satellite_tools/messages.py:26
#, python-format
msgid ""
"\n"
"ERROR: executing step %s. Error is:\n"
"%s\n"
msgstr ""

#: ../satellite_tools/messages.py:31
#, python-format
msgid ""
"\n"
"ERROR: there was a problem accessing the channel data from your temporary\n"
"       repository. Did you migrate all of the data from the channel ISOs\n"
"       do this directory? If so, please recheck the channels ISOs, ensure\n"
"       that you have them all, and then iteratively remount and repopulate\n"
"       the temporary repository (%s).\n"
msgstr ""

#: ../satellite_tools/messages.py:39
#, python-format
msgid ""
"\n"
"ERROR: there was a problem synchronizing the information.\n"
"       Error message: %s\n"
msgstr ""

#: ../satellite_tools/messages.py:44
#, python-format
msgid ""
"\n"
"ERROR: There was a problem communicating with the ISS Master.\n"
"       Depending on the specific error details, please review your "
"configuration,\n"
"       basic network connectivity, and/or name resolution, and try again.\n"
"       Error message: %s\n"
msgstr ""

#: ../satellite_tools/messages.py:51
#, python-format
msgid ""
"\n"
"ERROR: There was a problem communicating with the ISS Master.\n"
"       If the master satellite is older than v5.3, it does not have ISS "
"capability.\n"
"       Otherwise, depending on the specific error details, please review "
"your\n"
"       configuration, basic network connectivity, and/or name resolution, "
"and try again.\n"
"       Error message: %s\n"
msgstr ""

#: ../satellite_tools/messages.py:59
#, python-format
msgid ""
"\n"
"ERROR: a child-channel cannot be synced without its parent being synced as\n"
"       well. A parent needs to be either (a) previously synced or (b) "
"synced\n"
"       in tandem with the desired child-channel. Missing parents for this\n"
"       transaction:\n"
"       %s\n"
msgstr ""

#: ../satellite_tools/messages.py:67
#, python-format
msgid ""
"\n"
"ERROR: you are not entitled to sync a channel in this set of channels.\n"
"Please contact your SUSE Manager contact\n"
"%s"
msgstr ""

#: ../satellite_tools/messages.py:72
#, python-format
msgid "  ERROR: not enough free space (%s KB) on device."
msgstr ""

#: ../satellite_tools/messages.py:74
#, python-format
msgid "    %3d/%s Fetch successful: %s (%s bytes)"
msgstr ""

#: ../satellite_tools/messages.py:75
#, python-format
msgid "    Extinct package:  %s"
msgstr ""

#: ../satellite_tools/messages.py:76
#, python-format
msgid "   Total size: %s"
msgstr ""

#: ../satellite_tools/messages.py:77
#, python-format
msgid "      Downloaded %s of %s. Estimated remaining time: %s"
msgstr ""

#: ../satellite_tools/messages.py:78
#, python-format
msgid "    Fetch unsuccessful: %s"
msgstr ""

#: ../satellite_tools/messages.py:79
#, python-format
msgid "   RPM fetch summary: %s"
msgstr ""

#: ../satellite_tools/messages.py:80
#, python-format
msgid "       success: %d"
msgstr ""

#: ../satellite_tools/messages.py:81
#, python-format
msgid "       failed:  %d"
msgstr ""

#: ../satellite_tools/messages.py:82
#, python-format
msgid "       extinct: %d"
msgstr ""

#: ../satellite_tools/messages.py:84
#, python-format
msgid "   Retrieving / parsing *relevant* package metadata: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:85
#, python-format
msgid "   Retrieving / parsing errata data: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:86
#, python-format
msgid "   Retrieving / parsing kickstart data: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:87
#, python-format
msgid "   Retrieving / parsing kickstart tree files: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:88
#, python-format
msgid "   Importing *relevant* package metadata: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:89
msgid "   * WARNING: this may be a slow process."
msgstr ""

#: ../satellite_tools/messages.py:90
msgid "Linking packages to channels"
msgstr ""

#: ../satellite_tools/messages.py:91
#, python-format
msgid "   Importing *relevant* errata: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:92
msgid "   No new kickstartable tree to import"
msgstr ""

#: ../satellite_tools/messages.py:93
#, python-format
msgid "Importing kickstartable trees (%d)"
msgstr ""

#: ../satellite_tools/messages.py:94
#, python-format
msgid "Imported kickstartable trees (%d)"
msgstr ""

#: ../satellite_tools/reposync.py:111 ../satellite_tools/satsync.py:439
msgid "+++ sending log as an email +++"
msgstr ""

#: ../satellite_tools/reposync.py:114
#, python-format
msgid "%s sync. report from %s"
msgstr ""

#: ../satellite_tools/reposync.py:124 ../satellite_tools/satsync.py:449
msgid "+++ email requested, but there is nothing to send +++"
msgstr ""

#: ../satellite_tools/rhn_satellite_activate.py:198
#, python-format
msgid ""
"\"%s\" (specified in commandline)\n"
"could not be opened and read:\n"
"%s"
msgstr ""

#: ../satellite_tools/rhn_satellite_activate.py:205
#, python-format
msgid ""
"\"%s\" could not be opened\n"
"and/or written to:\n"
"%s"
msgstr ""

#: ../satellite_tools/satsync.py:258
#, python-format
msgid "No handler for step %s"
msgstr ""

#. Try one more time - this time it should be faster since
#. everything should be cached
#: ../satellite_tools/satsync.py:270
msgid "Environment changed, trying again..."
msgstr ""

#: ../satellite_tools/satsync.py:277
msgid "ERROR: Encountered IntegrityError: \n"
msgstr ""

#: ../satellite_tools/satsync.py:285
msgid "Repeated failures"
msgstr ""

#: ../satellite_tools/satsync.py:290
#, python-format
msgid ""
"    Import complete:\n"
"        Begin time: %s\n"
"        End time:   %s\n"
"        Elapsed:    %s\n"
"          "
msgstr ""

#: ../satellite_tools/satsync.py:311
msgid "hours"
msgstr ""

#: ../satellite_tools/satsync.py:311
msgid "minutes"
msgstr ""

#: ../satellite_tools/satsync.py:311
msgid "seconds"
msgstr ""

#: ../satellite_tools/satsync.py:357
msgid ""
"ERROR: The dump is missing package data, use --no-rpms to skip this step or "
"fix the content to include package data."
msgstr ""

#. the orgs() method doesn't exist; that's fine we just
#. won't sync the orgs
#: ../satellite_tools/satsync.py:404
msgid "The SUSE Manager master does not support syncing orgs data."
msgstr ""

#: ../satellite_tools/satsync.py:404
msgid "Skipping..."
msgstr ""

#: ../satellite_tools/satsync.py:442
#, python-format
msgid "SUSE Manager Inter Server sync. report from %s"
msgstr ""

#: ../satellite_tools/satsync.py:521
msgid " - file-system synchronization"
msgstr ""

#: ../satellite_tools/satsync.py:533 ../satellite_tools/satsync.py:541
msgid " - live synchronization"
msgstr ""

#: ../satellite_tools/satsync.py:534
#, python-brace-format
msgid ""
"ERROR: Live content synchronizing with RHN Classic Hosted is no longer "
"supported.\n"
"Please use the cdn-sync command instead unless you are attempting to sync "
"from another {PRODUCT_NAME} via Inter-Server-Sync (ISS), or from local "
"content on disk via Channel Dump ISOs."
msgstr ""

#: ../satellite_tools/satsync.py:542
#, python-format
msgid "   url: %s"
msgstr ""

#: ../satellite_tools/satsync.py:543
#, python-format
msgid "   debug/output level: %s"
msgstr ""

#: ../satellite_tools/satsync.py:553
msgid "ERROR: this server must be registered with SUSE Manager."
msgstr ""

#: ../satellite_tools/satsync.py:575
#, python-format
msgid "Retrieving / parsing %s data"
msgstr ""

#: ../satellite_tools/satsync.py:585 ../satellite_tools/satsync.py:600
msgid "*** SYSTEM INTERRUPT CALLED ***"
msgstr ""

#: ../satellite_tools/satsync.py:593
msgid "ERROR: fatal parser exception occurred "
msgstr ""

#: ../satellite_tools/satsync.py:594
#, python-format
msgid "(line: %s, col: %s msg: %s)"
msgstr ""

#: ../satellite_tools/satsync.py:598
#, python-format
msgid "ERROR: parser exception occurred: %s"
msgstr ""

#: ../satellite_tools/satsync.py:603
msgid "ERROR: exception (during parse) occurred: "
msgstr ""

#: ../satellite_tools/satsync.py:604
#, python-format
msgid ""
"   Encountered some errors with %s data (see logs (%s) for more information)"
msgstr ""

#: ../satellite_tools/satsync.py:606
#, python-format
msgid "   Encountered some errors with %s data:"
msgstr ""

#: ../satellite_tools/satsync.py:607
#, python-format
msgid "   ------- %s PARSE/IMPORT ERROR -------"
msgstr ""

#: ../satellite_tools/satsync.py:609
msgid "   ---------------------------------------"
msgstr ""

#: ../satellite_tools/satsync.py:612
#, python-format
msgid "%s data complete"
msgstr ""

#: ../satellite_tools/satsync.py:665
msgid "Retrieving / parsing channel data"
msgstr ""

#: ../satellite_tools/satsync.py:718
msgid "Channel data complete"
msgstr ""

#: ../satellite_tools/satsync.py:736
#, python-format
msgid "%10s import from %s"
msgstr ""

#: ../satellite_tools/satsync.py:739
#, python-format
msgid "%10s import from %s - %s"
msgstr ""

#: ../satellite_tools/satsync.py:743
#, python-format
msgid "%10s"
msgstr ""

#: ../satellite_tools/satsync.py:750
msgid "p"
msgstr ""

#: ../satellite_tools/satsync.py:752
msgid "."
msgstr ""

#: ../satellite_tools/satsync.py:758
msgid "   p = previously imported/synced channel"
msgstr ""

#: ../satellite_tools/satsync.py:759
msgid "   . = channel not yet imported/synced"
msgstr ""

#: ../satellite_tools/satsync.py:765
msgid "   e = channel no longer supported (end-of-service)"
msgstr ""

#: ../satellite_tools/satsync.py:767
msgid "   ? = channel label invalid --- typo?"
msgstr ""

#: ../satellite_tools/satsync.py:771
#, python-format
msgid "   %s:"
msgstr ""

#: ../satellite_tools/satsync.py:772
#, python-format
msgid "      %s %-40s %4s %s"
msgstr ""

#: ../satellite_tools/satsync.py:773
msgid "base-channels"
msgstr ""

#: ../satellite_tools/satsync.py:786 ../satellite_tools/satsync.py:1603
msgid "NONE RELEVANT"
msgstr ""

#: ../satellite_tools/satsync.py:808
msgid "end-of-service"
msgstr ""

#: ../satellite_tools/satsync.py:809
msgid "e"
msgstr ""

#: ../satellite_tools/satsync.py:815
msgid "   typos:"
msgstr ""

#: ../satellite_tools/satsync.py:816
msgid "?"
msgstr ""

#: ../satellite_tools/satsync.py:831
#, python-format
msgid "XXX: imported channels: %s"
msgstr ""

#: ../satellite_tools/satsync.py:832
#, python-format
msgid "XXX:   cached channels: %s"
msgstr ""

#: ../satellite_tools/satsync.py:837
msgid "XXX: list channels called"
msgstr ""

#: ../satellite_tools/satsync.py:855
msgid "ERROR: these channels either do not exist or are not available:"
msgstr ""

#: ../satellite_tools/satsync.py:859
#, python-format
msgid "       (to see a list of channel labels: %s --list-channels)"
msgstr ""

#: ../satellite_tools/satsync.py:904
#, python-format
msgid "   Retrieving / parsing short package metadata: %s (%s)"
msgstr ""

#: ../satellite_tools/satsync.py:965
#, python-format
msgid "Diffing package metadata (what's missing locally?): %s"
msgstr ""

#: ../satellite_tools/satsync.py:971 ../satellite_tools/satsync.py:1254
msgid "Diffing:    "
msgstr ""

#: ../satellite_tools/satsync.py:988
msgid "ERROR: incremental dump skipped"
msgstr ""

#: ../satellite_tools/satsync.py:1079
msgid "Downloading rpm packages"
msgstr ""

#: ../satellite_tools/satsync.py:1084
#, python-format
msgid "   Fetching any missing RPMs: %s (%s)"
msgstr ""

#: ../satellite_tools/satsync.py:1085 ../satellite_tools/satsync.py:1153
msgid "NONE MISSING"
msgstr ""

#: ../satellite_tools/satsync.py:1094
msgid "Processing rpm packages complete"
msgstr ""

#: ../satellite_tools/satsync.py:1121
msgid "Downloading package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1146
msgid "Downloading srpm packages"
msgstr ""

#: ../satellite_tools/satsync.py:1152
#, python-format
msgid "   Fetching any missing SRPMs: %s (%s)"
msgstr ""

#: ../satellite_tools/satsync.py:1249
#, python-format
msgid "Diffing source package metadata (what's missing locally?): %s"
msgstr ""

#: ../satellite_tools/satsync.py:1260
msgid "Downloading source package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1338 ../satellite_tools/satsync.py:2027
#, python-format
msgid "Unable to save file %s: %s"
msgstr ""

#. for
#. Retried a number of times and it still failed; log the
#. file as being failed and move on
#: ../satellite_tools/satsync.py:1345
#, python-format
msgid "Failed to fetch file %s"
msgstr ""

#: ../satellite_tools/satsync.py:1350
msgid "Downloading kickstartable trees metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1365
msgid "Downloading kickstartable trees files"
msgstr ""

#: ../satellite_tools/satsync.py:1504
#, python-format
msgid "Grabbing all patches for channel %s"
msgstr ""

#: ../satellite_tools/satsync.py:1554
msgid "Downloading patch data"
msgstr ""

#: ../satellite_tools/satsync.py:1556
msgid "Forcing download of all patch data for requested channels."
msgstr ""

#: ../satellite_tools/satsync.py:1571
msgid "Downloading patch data complete"
msgstr ""

#: ../satellite_tools/satsync.py:1576 ../satellite_tools/satsync.py:1597
msgid "Downloading:"
msgstr ""

#: ../satellite_tools/satsync.py:1579
msgid " - complete"
msgstr ""

#: ../satellite_tools/satsync.py:1624
msgid "Importing source package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1627
msgid "Importing package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1635
msgid "Importing:  "
msgstr ""

#. not in the cache
#: ../satellite_tools/satsync.py:1703
msgid ""
"Package Not Found in Cache, Clear the Cache "
"to                                  Regenerate it."
msgstr ""

#: ../satellite_tools/satsync.py:1709
msgid "Importing channel patches"
msgstr ""

#: ../satellite_tools/satsync.py:1714
#, python-format
msgid "Importing %s patches for channel %s."
msgstr ""

#. Incomplete configuration
#: ../satellite_tools/satsync.py:2113
msgid "ERROR: server.mount_point not set in the configuration file"
msgstr ""

#: ../satellite_tools/satsync.py:2117
#, python-format
msgid "ERROR: server.mount_point %s do not exist"
msgstr ""

#: ../satellite_tools/satsync.py:2122
#, python-format
msgid "ERROR: path under server.mount_point (%s)  do not exist"
msgstr ""

#: ../satellite_tools/satsync.py:2199
#, python-format
msgid "Commandline: %s"
msgstr ""

#: ../satellite_tools/satsync.py:2202
#, python-format
msgid ""
"DEBUG ONLY: max. batch-size for XML/database-import processing (1..%s).\"man "
"satellite-sync\" for more information."
msgstr ""

#: ../satellite_tools/satsync.py:2205
msgid "alternative SSL CA Cert (fullpath to cert file)"
msgstr ""

#: ../satellite_tools/satsync.py:2207
msgid "process data for this channel only"
msgstr ""

#: ../satellite_tools/satsync.py:2209
msgid ""
"disk dump will be considered to be a full export; see \"man satellite-sync\" "
"for more information."
msgstr ""

#: ../satellite_tools/satsync.py:2212
msgid "existing custom channels will also be synced (unless -c is used)"
msgstr ""

#: ../satellite_tools/satsync.py:2214
#, python-format
msgid ""
"override debug level set in /etc/rhn/rhn.conf (which is currently set at %s)."
msgstr ""

#: ../satellite_tools/satsync.py:2216
#, python-format
msgid "requested version of XML dump (default: %s)"
msgstr ""

#: ../satellite_tools/satsync.py:2218
msgid "e-mail a report of what was synced/imported"
msgstr ""

#: ../satellite_tools/satsync.py:2220
msgid "forcibly process all (not a diff of) patch metadata"
msgstr ""

#: ../satellite_tools/satsync.py:2222
msgid "Do not use an http proxy under any circumstances."
msgstr ""

#: ../satellite_tools/satsync.py:2224
msgid "alternative http proxy (hostname:port)"
msgstr ""

#: ../satellite_tools/satsync.py:2226
msgid "alternative http proxy username"
msgstr ""

#: ../satellite_tools/satsync.py:2228
msgid "alternative http proxy password"
msgstr ""

#: ../satellite_tools/satsync.py:2230
msgid "parent SUSE Manager to import content from"
msgstr ""

#: ../satellite_tools/satsync.py:2232
msgid "list all available channels and exit"
msgstr ""

#: ../satellite_tools/satsync.py:2234
msgid "help on all error codes mgr-inter-sync returns"
msgstr ""

#: ../satellite_tools/satsync.py:2236
msgid "source mount point for import - disk update only"
msgstr ""

#: ../satellite_tools/satsync.py:2238
msgid "do not process patch data"
msgstr ""

#: ../satellite_tools/satsync.py:2240
msgid "do not process kickstart data (provisioning only)"
msgstr ""

#: ../satellite_tools/satsync.py:2242
msgid "do not process full package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:2244
msgid "do not download, or process any RPMs"
msgstr ""

#: ../satellite_tools/satsync.py:2246
msgid "turn off SSL (not recommended)"
msgstr ""

#: ../satellite_tools/satsync.py:2248
msgid "org to which the sync imports data. defaults to the admin account"
msgstr ""

#: ../satellite_tools/satsync.py:2250
msgid "print the configuration and exit"
msgstr ""

#: ../satellite_tools/satsync.py:2252
msgid "alternative server with which to connect (hostname)"
msgstr ""

#: ../satellite_tools/satsync.py:2254
msgid "synchronize to this step (man satellite-sync for more info)"
msgstr ""

#: ../satellite_tools/satsync.py:2256
msgid "write complete data to tempfile before streaming to remainder of app"
msgstr ""

#: ../satellite_tools/satsync.py:2258
msgid "DEBUG ONLY: alternative path to digital system id"
msgstr ""

#: ../satellite_tools/satsync.py:2260
msgid "alternative email address(es) for sync output (--email option)"
msgstr ""

#: ../satellite_tools/satsync.py:2262
msgid "do not remove rpms when importing from local dump"
msgstr ""

#: ../satellite_tools/satsync.py:2264
msgid ""
"the fully qualified domain name of the master Satellite. Valid with --mount-"
"point only. Required if you want to import org data and channel permissions."
msgstr ""

#: ../satellite_tools/satsync.py:2274
#, python-format
msgid "ERROR: these arguments make no sense in this context (try --help): %s"
msgstr ""

#. An SQL error is fatal... crash and burn
#: ../satellite_tools/satsync.py:2286
#, python-format
msgid "ERROR: Can't connect to the database: %s"
msgstr ""

#: ../satellite_tools/satsync.py:2287
msgid "ERROR: Check if your database is running."
msgstr ""

#: ../satellite_tools/satsync.py:2322
#, python-format
msgid "ERROR: --debug-level takes an in integer value within the range %s."
msgstr ""

#: ../satellite_tools/satsync.py:2324
msgid "  0  - little logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2325
msgid "  1  - minimal logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2326
msgid "  2  - normal level of logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2327
msgid "  3  - lots of logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2328
msgid "  4+ - excessive logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2341
msgid "ERROR: The --master option is only valid with the --mount-point option"
msgstr ""

#: ../satellite_tools/satsync.py:2351
#, python-format
msgid "ERROR: Unable to lookup Org Id %s"
msgstr ""

#: ../satellite_tools/satsync.py:2360
msgid ""
"WARNING: --list-channels option overrides any --step option. --step ignored."
msgstr ""

#: ../satellite_tools/satsync.py:2375
#, python-format
msgid ""
"ERROR: '%s' is not a valid step. See 'man mgr-inter-sync' for more detail."
msgstr ""

#: ../satellite_tools/satsync.py:2407
msgid ""
"ERROR: No channels currently imported; try mgr-inter-sync --list-channels; "
"then mgr-inter-sync -c chn0 -c chn1..."
msgstr ""

#. int(None) --> TypeError
#. int('a')  --> ValueError
#: ../satellite_tools/satsync.py:2457 ../satellite_tools/satsync.py:2461
msgid "ERROR: --batch-size must have a value within the range: 1..50"
msgstr ""

#: ../satellite_tools/satsync.py:2469
#, python-format
msgid "ERROR: no such directory %s"
msgstr ""

#: ../satellite_tools/satsync.py:2474
msgid "Error Codes: Returned codes means:"
msgstr ""

#: ../satellite_tools/satsync.py:2475
msgid " -1  - Could not lock file or KeyboardInterrupt or SystemExit"
msgstr ""

#: ../satellite_tools/satsync.py:2476
msgid "  0  - User interrupted or intentional exit"
msgstr ""

#: ../satellite_tools/satsync.py:2477
msgid "  1  - attempting to run more than one instance of mgr-inter-sync."
msgstr ""

#: ../satellite_tools/satsync.py:2478
msgid "  2  - Unable to find synchronization tools."
msgstr ""

#: ../satellite_tools/satsync.py:2479
msgid "  3  - a general socket exception occurred"
msgstr ""

#: ../satellite_tools/satsync.py:2480
msgid "  4  - an SSL error occurred. Recheck your SSL settings."
msgstr ""

#: ../satellite_tools/satsync.py:2481
msgid "  5  - ISS error"
msgstr ""

#: ../satellite_tools/satsync.py:2482
msgid "  6  - unhandled exception occurred"
msgstr ""

#: ../satellite_tools/satsync.py:2483
msgid "  7  - unknown sync error"
msgstr ""

#: ../satellite_tools/satsync.py:2484
msgid "  8  - ERROR: must be root to execute"
msgstr ""

#: ../satellite_tools/satsync.py:2485
msgid "  9  - rpclib fault during synchronization init"
msgstr ""

#: ../satellite_tools/satsync.py:2486
msgid "  10 - synchronization init error"
msgstr ""

#: ../satellite_tools/satsync.py:2487
msgid "  11 - Error parsing XML stream"
msgstr ""

#: ../satellite_tools/satsync.py:2488
msgid "  12 - Channel do not exist"
msgstr ""

#: ../satellite_tools/satsync.py:2489
msgid "  13 - SQL error during importing package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:2490
msgid "  14 - SQL error during linking channel packages"
msgstr ""

#: ../satellite_tools/satsync.py:2491
msgid "  15 - SQL error during xml processing"
msgstr ""

#: ../satellite_tools/satsync.py:2492
msgid "  16 - server.mount_point not set in the configuration file"
msgstr ""

#: ../satellite_tools/satsync.py:2493
msgid ""
"  17 - SQL error during retrieving the channels already imported in the SUSE "
"Manager database"
msgstr ""

#: ../satellite_tools/satsync.py:2494
msgid "  18 - Wrong db connection string in rhn.conf"
msgstr ""

#: ../satellite_tools/satsync.py:2495
msgid "  19 - Bad arguments"
msgstr ""

#: ../satellite_tools/satsync.py:2496
msgid "  20 - Could not connect to db."
msgstr ""

#: ../satellite_tools/satsync.py:2497
msgid "  21 - Bad debug level"
msgstr ""

#: ../satellite_tools/satsync.py:2498
msgid "  22 - Not valid step"
msgstr ""

#: ../satellite_tools/satsync.py:2499
msgid "  24 - no such file"
msgstr ""

#: ../satellite_tools/satsync.py:2500
msgid "  25 - no such directory"
msgstr ""

#: ../satellite_tools/satsync.py:2501
msgid "  26 - mount_point does not exist"
msgstr ""

#: ../satellite_tools/satsync.py:2502
msgid "  27 - No such org"
msgstr ""

#: ../satellite_tools/satsync.py:2503
msgid "  28 - error: --master is only valid with --mount-point"
msgstr ""

#: ../satellite_tools/satsync.py:2510
#, python-format
msgid "ERROR: unknown dump version, try one of %s"
msgstr ""

#, fuzzy
#~ msgid "Red Hat Satellite Welcome Message"
#~ msgstr "à¦°à§‡à¦¡ à¦¹à§à¦¯à¦¾à¦Ÿ à¦¨à§‡à¦Ÿà¦“à¦¯à¦¼à¦¾à¦°à§à¦• à¦¸à§à¦¬à¦¾à¦—à¦¤ à¦¬à¦¾à¦°à§à¦¤à¦¾"
0707010000005F000081B40000000000000000000000016290A0C10000B5F0000000000000000000000000000000000000001E00000000spacewalk-backend/po/bn_BD.po # SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
#
# Translators:
msgid ""
msgstr ""
"Project-Id-Version: Spacewalk\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-10-16 13:34+0200\n"
"PO-Revision-Date: 2011-03-04 16:08+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: bn_BD\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"

#: ../server/apacheAuth.py:66
#, python-format
msgid "incomplete proxy authentication token: %s"
msgstr ""

#: ../server/apacheAuth.py:84
#, python-format
msgid "Sent proxy signature %s does not match ours %s."
msgstr ""

#: ../server/apacheAuth.py:119
msgid "declined proxy authentication"
msgstr ""

#: ../server/apacheRequest.py:59
#, python-format
msgid "Invalid request received (%s)."
msgstr ""

#: ../server/apacheRequest.py:120
#, python-format
msgid ""
"IMPORTANT MESSAGE FOLLOWS:\n"
"%s"
msgstr ""

#: ../server/apacheRequest.py:149
#, python-format
msgid ""
"While running '%s': caught\n"
"%s : %s\n"
msgstr ""

#: ../server/apacheRequest.py:606
#, python-format
msgid "Invalid URI %s"
msgstr ""

#: ../server/configFilesHandler.py:129 ../server/handlers/app/packages.py:192
#: ../server/handlers/xmlrpc/registration.py:215
#: ../server/handlers/xmlrpc/registration.py:1168
#: ../server/handlers/xmlrpc/registration.py:1307
#, python-format
msgid ""
"\n"
"                   %s Account has been deactivated on this server.\n"
"                   Please contact your Org administrator for more help."
msgstr ""

#: ../server/handlers/applet/applet.py:78
#, python-brace-format
msgid "Your system was not found in the {PRODUCT_NAME} database"
msgstr ""

#: ../server/handlers/sat/auth.py:45
msgid "ISS is disabled on this server."
msgstr ""

#: ../server/handlers/sat/auth.py:50
#, python-format
msgid "Server \"%s\" is not enabled for ISS."
msgstr ""

#: ../server/handlers/xmlrpc/errata.py:64
#, python-format
msgid "Expected a package name, not: %s"
msgstr ""

#: ../server/handlers/xmlrpc/errata.py:115
#, python-format
msgid "Expected a package, not: %s"
msgstr ""

#: ../server/handlers/xmlrpc/proxy.py:65
#, python-format
msgid "SUSE Manager Proxy service not enabled for server profile: \"%s\""
msgstr ""

#: ../server/handlers/xmlrpc/proxy.py:85
msgid "Invalid session key"
msgstr ""

#: ../server/handlers/xmlrpc/proxy.py:93
msgid "This server ID no longer exists"
msgstr ""

#: ../server/handlers/xmlrpc/queue.py:433
#, python-format
msgid "Invalid action value type %s (%s)"
msgstr ""

#: ../server/handlers/xmlrpc/queue.py:464
#, python-format
msgid "Action %s does not belong to server %s"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:194
msgid "Required data missing"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:198
msgid "Required members missing"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:207
msgid "Attempt to register a system to an invalid username"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:839
msgid "Invalid system release version requested"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1063
msgid ""
"Unable to find a valid network interface, both ipaddr and ip6addr not found."
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1115
#, python-brace-format
msgid "{PRODUCT_NAME} Welcome Message"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1125
msgid "Privacy Statement"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1146
msgid "Expected a dictionary as a product argument"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1374
#, python-format
msgid "Invalid value '%s' for %s (%s)"
msgstr ""

#: ../server/handlers/xmlrpc/scap.py:104
msgid "Invalid system_id/action_id pair."
msgstr ""

#: ../server/handlers/xmlrpc/up2date.py:233
#, python-format
msgid "Invalid value %s (%s)"
msgstr ""

#: ../server/importlib/userAuth.py:98
msgid "You are not authorized to manage packages in the null org"
msgstr ""

#: ../server/importlib/userAuth.py:103
#, python-format
msgid "You are not allowed to manage packages in the %s org"
msgstr ""

#: ../server/importlib/userAuth.py:121
msgid "You are not allowed to perform administrative tasks"
msgstr ""

#: ../server/importlib/userAuth.py:144
#, python-format
msgid ""
"You are not allowed to manage channel %s, or that channel does not exist"
msgstr ""

#: ../server/importlib/userAuth.py:204
#, python-format
msgid ""
"\n"
"               %s Account has been deactivated on this server.\n"
"               Please contact your Org administrator for more help."
msgstr ""

#: ../server/rhnChannel.py:1992
#, python-format
msgid ""
"Your account does not have access to any channels matching "
"(release='%(release)s', arch='%(arch)s')%(www_activation)s"
msgstr ""

#: ../server/rhnChannel.py:2002
msgid ""
"\n"
"If you have a registration number, please register with it first at http://"
"www.redhat.com/apps/activate/ and then try again.\n"
"\n"
msgstr ""

#: ../server/rhnChannel.py:2012
#, python-format
msgid "Insufficient subscription permissions for release (%s, %s"
msgstr ""

#. Various messages that can be reused
#.
#. bretm 02/07/2007 -- when we have better old-client documentation, probably
#. will be safe to get rid of all this crap
#: ../server/rhnChannel.py:2276 ../server/rhnChannel.py:2287
#: ../server/rhnChannel.py:2302
msgid "System Registered but Inactive"
msgstr ""

#: ../server/rhnChannel.py:2277
#, python-format
msgid ""
"\n"
"Invalid Architecture and OS release combination (%s, %s).\n"
"Your system has been registered, but will not receive updates\n"
"because it is not subscribed to a channel. If you have not yet\n"
"activated your product for service, please visit our website at:\n"
"\n"
"     http://www.redhat.com/apps/activate/\n"
"\n"
"...to activate your product."
msgstr ""

#: ../server/rhnChannel.py:2288
#, python-format
msgid ""
"\n"
"Invalid Architecture and OS release combination (%s, %s).\n"
"Your system has been registered, but will not receive updates\n"
"because it could not be subscribed to a base channel.\n"
"Please contact your organization administrator for assistance.\n"
msgstr ""

#: ../server/rhnChannel.py:2295
#, python-format
msgid ""
"\n"
"  This system has been successfully registered, but is not yet entitled\n"
"  to service.  To entitle this system to service, login to the web site at:\n"
"\n"
"  %(entitlement_url)s\n"
msgstr ""

#: ../server/rhnChannel.py:2303
#, python-format
msgid ""
"\n"
"  This system has been successfully registered, but no service entitlements\n"
"  were available.  To entitle this system to service, login to the web site "
"at:\n"
"\n"
"  %(entitlement_url)s\n"
msgstr ""

#: ../server/rhnHandler.py:62
msgid "Please run rhn_register as root on this client"
msgstr ""

#: ../server/rhnHandler.py:75
#, python-format
msgid "Service not enabled for system profile: \"%s\""
msgstr ""

#: ../server/rhnPackage.py:49 ../server/rhnPackage.py:87
#: ../server/rhnPackage.py:107 ../server/rhnPackage.py:158
#, python-format
msgid "Invalid RPM package %s requested"
msgstr ""

#: ../server/rhnPackage.py:112
msgid "Package not found"
msgstr ""

#: ../server/rhnServer/server_class.py:97
#, python-format
msgid "Architecture `%s' is not supported"
msgstr ""

#: ../server/rhnServer/server_token.py:78
#, python-format
msgid "Token `%s' has more than one base channel assigned"
msgstr ""

#: ../server/rhnServer/server_token.py:80
msgid "Conflicting base channels"
msgstr ""

#: ../server/rhnServer/server_token.py:190
#, python-format
msgid "Failed to add server to group %s"
msgstr ""

#: ../server/rhnServer/server_token.py:503
#, python-format
msgid "Maximum usage count of %s reached"
msgstr ""

#: ../server/rhnServer/server_token.py:744
msgid ""
"Stacking of re-registration tokens with different base entitlements is not "
"supported"
msgstr ""

#: ../server/rhnServer/server_token.py:811
#, python-format
msgid "Could not find token '%s'"
msgstr ""

#. Cannot use activation keys from different orgs
#: ../server/rhnServer/server_token.py:843
msgid "Tokens from mismatching orgs"
msgstr ""

#. Two tokens with different kickstart sessions
#: ../server/rhnServer/server_token.py:853
msgid "Kickstart session mismatch"
msgstr ""

#: ../server/rhnServer/server_token.py:877
msgid "Stacking of re-registration tokens is not supported"
msgstr ""

#: ../server/rhnUser.py:289 ../server/rhnUser.py:292
msgid "Invalid username/password combination"
msgstr ""

#. nope, not reserved either
#: ../server/rhnUser.py:467
#, python-format
msgid "Username `%s' has not been reserved"
msgstr ""

#. New accounts have to specify an e-mail address
#: ../server/rhnUser.py:473
msgid "E-mail address not specified"
msgstr ""

#: ../server/rhnUser.py:509
#, python-format
msgid "username should be at least %d characters"
msgstr ""

#: ../server/rhnUser.py:512
#, python-format
msgid "username should be less than %d characters"
msgstr ""

#: ../server/rhnUser.py:523
#, python-format
msgid "username = `%s', invalid character `%s'"
msgstr ""

#: ../server/rhnUser.py:542
#, python-format
msgid "Please limit your e-mail address to %s chars"
msgstr ""

#: ../server/rhnUser.py:623
#, python-format
msgid "password must be at least %d characters"
msgstr ""

#: ../server/rhnUser.py:626
#, python-format
msgid "Password must be shorter than %d characters"
msgstr ""

#: ../server/rhnUser.py:644
#, python-format
msgid "password contains character `%s'"
msgstr ""

#: ../server/rhnUser.py:651
#, python-format
msgid "username should be at least %d characters long"
msgstr ""

#: ../server/rhnUser.py:662
#, python-format
msgid "Cannot register usernames ending with %s"
msgstr ""

#. 0-999: Red Hat client/client-like interaction errors:
#: ../common/rhnException.py:53
msgid "This does not appear to be a valid username."
msgstr ""

#: ../common/rhnException.py:54
msgid "Invalid username and password combination."
msgstr ""

#: ../common/rhnException.py:55
msgid "This login is already taken, or the password is incorrect."
msgstr ""

#: ../common/rhnException.py:56
msgid "Permission denied."
msgstr ""

#: ../common/rhnException.py:57
msgid "Object not found."
msgstr ""

#: ../common/rhnException.py:58
msgid "Invalid System Digital ID."
msgstr ""

#: ../common/rhnException.py:59
msgid "Invalid System Credentials."
msgstr ""

#: ../common/rhnException.py:60
msgid "Could not retrieve user data from database."
msgstr ""

#: ../common/rhnException.py:61
msgid "Valid username required."
msgstr ""

#: ../common/rhnException.py:62
msgid "Valid password required."
msgstr ""

#: ../common/rhnException.py:63
msgid "Minimum username length violation."
msgstr ""

#: ../common/rhnException.py:64
msgid "Minimum password length violation."
msgstr ""

#: ../common/rhnException.py:65
msgid "The username contains invalid characters."
msgstr ""

#: ../common/rhnException.py:66
msgid "File not found."
msgstr ""

#: ../common/rhnException.py:67
msgid "Architecture and OS version combination is not supported."
msgstr ""

#: ../common/rhnException.py:68
msgid "Could not retrieve system data from database."
msgstr ""

#: ../common/rhnException.py:69
msgid "Invalid arguments passed to function."
msgstr ""

#: ../common/rhnException.py:70
msgid "Unable to retrieve requested entry."
msgstr ""

#: ../common/rhnException.py:71
msgid "Could not update database entry."
msgstr ""

#: ../common/rhnException.py:72
msgid "Unsupported server architecture."
msgstr ""

#: ../common/rhnException.py:73
#, python-format
msgid ""
"\n"
"     The anonymous server functionality is no longer available.\n"
"\n"
"     Please re-register this system by running mgr_register as root.\n"
"     Please visit https://%(hostname)s/rhn/systems/SystemEntitlements.do\n"
"     or login at https://%(hostname)s, and from the \"Overview\" tab,\n"
"     select \"Subscription Management\" to enable the service for this "
"system.\n"
"     "
msgstr ""

#: ../common/rhnException.py:81
msgid "Record not available in the database."
msgstr ""

#: ../common/rhnException.py:82
msgid "Invalid value for entry."
msgstr ""

#: ../common/rhnException.py:83
#, python-format
msgid ""
"\n"
"     This system does not have a valid entitlement for SUSE Manager.\n"
"     Please visit https://%(hostname)s/rhn/systems/SystemEntitlements.do\n"
"     or login at https://%(hostname)s, and from the \"Overview\" tab,\n"
"     select \"Subscription Management\" to enable the service for this "
"system.\n"
"     "
msgstr ""

#: ../common/rhnException.py:89
msgid "Channel error"
msgstr ""

#: ../common/rhnException.py:90
msgid "Client session token is invalid."
msgstr ""

#: ../common/rhnException.py:91
msgid "Client session token has expired."
msgstr ""

#: ../common/rhnException.py:92
msgid "You are not authorized to retrieve the requested object."
msgstr ""

#: ../common/rhnException.py:93
msgid "Invalid action"
msgstr ""

#: ../common/rhnException.py:94
msgid "You are not allowed to perform administrative tasks on this system."
msgstr ""

#: ../common/rhnException.py:96
msgid "The system is already subscribed to the specified channel."
msgstr ""

#: ../common/rhnException.py:97
msgid "The system is not currently subscribed to the specified channel."
msgstr ""

#: ../common/rhnException.py:98
msgid "The specified channel does not exist."
msgstr ""

#: ../common/rhnException.py:99
msgid "Invalid channel version."
msgstr ""

#: ../common/rhnException.py:100
msgid ""
"\n"
"     User group membership limits exceeded.\n"
"\n"
"     The current settings for your account do not allow you to add another\n"
"     user account. Please check with the organization administrator for "
"your\n"
"     account if the maximum number of users allowed to subscribe to server "
"needs\n"
"     to be changed.\n"
"     "
msgstr ""

#: ../common/rhnException.py:108
msgid ""
"\n"
"     System group membership limits exceeded.\n"
"\n"
"     The current settings for your account do not allow you to add another\n"
"     system profile. Please check with the organization administrator for "
"your\n"
"     account for modifying the maximum number of system profiles that can "
"be\n"
"     subscribed to your account.\n"
"     "
msgstr ""

#: ../common/rhnException.py:116
msgid ""
"\n"
"     Invalid architecture.\n"
"\n"
"     The architecture of the package is not supported by\n"
"     "
msgstr ""

#: ../common/rhnException.py:121
msgid "Invalid RPM header"
msgstr ""

#: ../common/rhnException.py:122
msgid ""
"\n"
"    This system is already registered as a Salt Minion. If you want to "
"register it as a traditional client\n"
"    please delete it first via the web UI or API and then register it using "
"the traditional tools.\n"
"    "
msgstr ""

#. For the uploading tools
#: ../common/rhnException.py:127
msgid "Invalid information uploaded to the server"
msgstr ""

#: ../common/rhnException.py:128
msgid "Error uploading network interfaces configuration."
msgstr ""

#: ../common/rhnException.py:129
msgid ""
"\n"
"     Package Upload Failed due to uniqueness constraint violation.\n"
"     Make sure the package does not have any duplicate dependencies or\n"
"     does not already exists on the server\n"
"     "
msgstr ""

#: ../common/rhnException.py:134
msgid ""
"\n"
"     The --force rhnpush option is disabled on this server.\n"
"     Please contact your SUSE Manager administrator for more help.\n"
"     "
msgstr ""

#. 60-70: token errors
#: ../common/rhnException.py:140
msgid ""
"\n"
"     The activation token specified could not be found on the server.\n"
"     Please retry with a valid key.\n"
"     "
msgstr ""

#: ../common/rhnException.py:144
msgid "Too many systems registered using this registration token"
msgstr ""

#: ../common/rhnException.py:145
msgid "Token contains invalid, obsoleted or insufficient settings"
msgstr ""

#: ../common/rhnException.py:146
msgid "Conflicting activation tokens"
msgstr ""

#. 70-80: channel subscription errors
#: ../common/rhnException.py:149
msgid ""
"\n"
"     No matching base channel found for your system.\n"
"     "
msgstr ""

#: ../common/rhnException.py:152
msgid ""
"\n"
"     You do not have subscription permission to the designated channel.\n"
"     Please refer to your organization's channel or organization\n"
"     administrators for further details.\n"
"     "
msgstr ""

#: ../common/rhnException.py:157
msgid "You can not unsubscribe from base channel."
msgstr ""

#: ../common/rhnException.py:158
msgid "SUSE Manager or Proxy channel can not be subscribed."
msgstr ""

#. 80-90: server group errors
#: ../common/rhnException.py:161
msgid "There was an error while trying to join the system to its groups"
msgstr ""

#. 90-100: entitlement errors
#: ../common/rhnException.py:164
msgid "Unable to entitle system"
msgstr ""

#. 100-109: e-mail and uuid related faults
#: ../common/rhnException.py:167
msgid "Maximum e-mail length violation."
msgstr ""

#: ../common/rhnException.py:168
msgid "This system has been previously registered."
msgstr ""

#: ../common/rhnException.py:169
msgid "Invalid username"
msgstr ""

#. 140-159 applet errors
#: ../common/rhnException.py:172
msgid "Unable to look up server"
msgstr ""

#. 160-179: OSAD errors
#: ../common/rhnException.py:175
msgid "Required argument is missing"
msgstr ""

#. 600-699: RHEL5+ EN errors
#: ../common/rhnException.py:178
msgid "No entitlement information tied to hardware"
msgstr ""

#: ../common/rhnException.py:179
msgid "Installation number is not entitling"
msgstr ""

#. 700-799: Additional user input verification errors.
#: ../common/rhnException.py:182
msgid "Maximum username length violation"
msgstr ""

#: ../common/rhnException.py:183
msgid "Maximum password length violation"
msgstr ""

#: ../common/rhnException.py:184
msgid "This user has read only API access. Action denied."
msgstr ""

#: ../common/rhnException.py:186
msgid "System Name cannot be less than 1 character"
msgstr ""

#. 1000-1999: Proxy specific errors:
#. issued by a Proxy to the client
#: ../common/rhnException.py:190
msgid "SUSE Manager Proxy error."
msgstr ""

#: ../common/rhnException.py:191
msgid "SUSE Manager Proxy unable to login."
msgstr ""

#. issued by a SUSE Manager Server/Satellite to the proxy
#: ../common/rhnException.py:193
msgid ""
"\n"
"     SUSE Manager Proxy system ID does not match a Spacewalk Proxy Server\n"
"     in the database.\n"
"     "
msgstr ""

#: ../common/rhnException.py:197
msgid "SUSE Manager Proxy session token is invalid."
msgstr ""

#: ../common/rhnException.py:198
msgid "SUSE Manager Proxy session token has expired."
msgstr ""

#. 2000-2999: Red Hat Satellite specific errors:
#: ../common/rhnException.py:202
msgid ""
"\n"
"      user creation is not allowed via mgr_register;\n"
"     please contact your sysadmin to have your account created.\n"
"     "
msgstr ""

#: ../common/rhnException.py:206
msgid ""
"\n"
"     This SUSE Manager server is not allowed to use Inter Server Sync on "
"this server\n"
"     "
msgstr ""

#: ../common/rhnException.py:209
msgid ""
"\n"
"     Inter Server Sync is disabled on this SUSE Manager Server.\n"
"     "
msgstr ""

#. 3000-3999: XML dumper errors:
#: ../common/rhnException.py:214
msgid "Invalid datatype passed"
msgstr ""

#: ../common/rhnException.py:215
msgid "Unable to retrieve channel"
msgstr ""

#: ../common/rhnException.py:216
msgid "Unable to retrieve package"
msgstr ""

#: ../common/rhnException.py:217
msgid "Unable to retrieve erratum"
msgstr ""

#: ../common/rhnException.py:218
msgid "File is missing"
msgstr ""

#: ../common/rhnException.py:219
msgid "Function retrieval error"
msgstr ""

#: ../common/rhnException.py:220
msgid "Function execution error"
msgstr ""

#: ../common/rhnException.py:221
msgid "Missing version string"
msgstr ""

#: ../common/rhnException.py:222
msgid "Invalid version string"
msgstr ""

#: ../common/rhnException.py:223
msgid "Mismatching versions"
msgstr ""

#: ../common/rhnException.py:224
msgid "Invalid channel version"
msgstr ""

#: ../common/rhnException.py:225
msgid "No comps file for channel"
msgstr ""

#: ../common/rhnException.py:226
msgid "Unable to retrieve comps file"
msgstr ""

#. 4000 - 4999: config management errors
#: ../common/rhnException.py:229
msgid "Configuration action missing"
msgstr ""

#: ../common/rhnException.py:230
msgid "File too large"
msgstr ""

#: ../common/rhnException.py:231
msgid "File contains binary data"
msgstr ""

#: ../common/rhnException.py:232
msgid "Configuration channel is not empty"
msgstr ""

#: ../common/rhnException.py:233
msgid "Permission error"
msgstr ""

#: ../common/rhnException.py:234
msgid "Content missing for configuration file"
msgstr ""

#: ../common/rhnException.py:235
msgid "Template delimiters not specified"
msgstr ""

#: ../common/rhnException.py:236
msgid "Configuration channel does not exist"
msgstr ""

#: ../common/rhnException.py:237
msgid "Configuration channel already exists"
msgstr ""

#: ../common/rhnException.py:238
msgid "File missing from configuration channel"
msgstr ""

#: ../common/rhnException.py:239
msgid "Different revision of this file is uploaded"
msgstr ""

#: ../common/rhnException.py:240
msgid "File already uploaded to configuration channel"
msgstr ""

#: ../common/rhnException.py:241
msgid "File size exceeds remaining quota space"
msgstr ""

#: ../common/rhnException.py:242
msgid "Full path of file must be specified"
msgstr ""

#: ../common/rhnException.py:243
msgid "Invalid revision number"
msgstr ""

#: ../common/rhnException.py:244
msgid "Cannot compare files of different file type"
msgstr ""

#. 5000 - 5999: client content uploading errors
#. 5000 - 5099: crash reporting errors
#: ../common/rhnException.py:248
msgid "Crash information is invalid or incomplete"
msgstr ""

#: ../common/rhnException.py:249
msgid "Crash file information is invalid or incomplete"
msgstr ""

#: ../common/rhnException.py:250
msgid "Error composing crash directory path"
msgstr ""

#: ../common/rhnException.py:251
msgid "Error composing crash file path"
msgstr ""

#: ../common/rhnException.py:252 ../common/rhnException.py:259
msgid "Invalid content encoding"
msgstr ""

#: ../common/rhnException.py:253
msgid "Invalid crash name"
msgstr ""

#: ../common/rhnException.py:254
msgid "Crash reporting is disabled for this organization"
msgstr ""

#. 5100 - 5199: scap results reporting error
#: ../common/rhnException.py:256
msgid "SCAP results file transfer is invalid or incomplete"
msgstr ""

#: ../common/rhnException.py:257
msgid "Error composing directory path for detailed SCAP results"
msgstr ""

#: ../common/rhnException.py:258
msgid "Error composing file path for detailed SCAP results"
msgstr ""

#: ../common/rhnException.py:306
msgid ""
"\n"
"     An error has occurred while processing your request. If this problem\n"
"     persists please enter a bug report at scc.suse.com.\n"
"     If you choose to submit the bug report, please be sure to include\n"
"     details of what you were trying to do when this error occurred and\n"
"     details on how to reproduce this problem.\n"
msgstr ""

#: ../common/rhnException.py:358
#, python-format
msgid ""
"Error Message:\n"
"    %s\n"
msgstr ""

#: ../common/rhnException.py:360
#, python-format
msgid "Error Class Code: %s\n"
msgstr ""

#: ../common/rhnException.py:363
#, python-format
msgid "Error Class Info: %s\n"
msgstr ""

#: ../common/rhnException.py:365
#, python-format
msgid "Explanation: %s"
msgstr ""

#: ../common/rhnTB.py:205
#, python-format
msgid "ERROR: %s %s: %s"
msgstr ""

#: ../common/rhnTB.py:207
#, python-format
msgid "TRACEBACK: %s"
msgstr ""

#: ../satellite_tools/disk_dumper/iss.py:1294
#: ../satellite_tools/disk_dumper/iss.py:1298
#, python-format
msgid "format of %s should be at least YYYYMMDD.\n"
msgstr ""

#: ../satellite_tools/messages.py:26
#, python-format
msgid ""
"\n"
"ERROR: executing step %s. Error is:\n"
"%s\n"
msgstr ""

#: ../satellite_tools/messages.py:31
#, python-format
msgid ""
"\n"
"ERROR: there was a problem accessing the channel data from your temporary\n"
"       repository. Did you migrate all of the data from the channel ISOs\n"
"       do this directory? If so, please recheck the channels ISOs, ensure\n"
"       that you have them all, and then iteratively remount and repopulate\n"
"       the temporary repository (%s).\n"
msgstr ""

#: ../satellite_tools/messages.py:39
#, python-format
msgid ""
"\n"
"ERROR: there was a problem synchronizing the information.\n"
"       Error message: %s\n"
msgstr ""

#: ../satellite_tools/messages.py:44
#, python-format
msgid ""
"\n"
"ERROR: There was a problem communicating with the ISS Master.\n"
"       Depending on the specific error details, please review your "
"configuration,\n"
"       basic network connectivity, and/or name resolution, and try again.\n"
"       Error message: %s\n"
msgstr ""

#: ../satellite_tools/messages.py:51
#, python-format
msgid ""
"\n"
"ERROR: There was a problem communicating with the ISS Master.\n"
"       If the master satellite is older than v5.3, it does not have ISS "
"capability.\n"
"       Otherwise, depending on the specific error details, please review "
"your\n"
"       configuration, basic network connectivity, and/or name resolution, "
"and try again.\n"
"       Error message: %s\n"
msgstr ""

#: ../satellite_tools/messages.py:59
#, python-format
msgid ""
"\n"
"ERROR: a child-channel cannot be synced without its parent being synced as\n"
"       well. A parent needs to be either (a) previously synced or (b) "
"synced\n"
"       in tandem with the desired child-channel. Missing parents for this\n"
"       transaction:\n"
"       %s\n"
msgstr ""

#: ../satellite_tools/messages.py:67
#, python-format
msgid ""
"\n"
"ERROR: you are not entitled to sync a channel in this set of channels.\n"
"Please contact your SUSE Manager contact\n"
"%s"
msgstr ""

#: ../satellite_tools/messages.py:72
#, python-format
msgid "  ERROR: not enough free space (%s KB) on device."
msgstr ""

#: ../satellite_tools/messages.py:74
#, python-format
msgid "    %3d/%s Fetch successful: %s (%s bytes)"
msgstr ""

#: ../satellite_tools/messages.py:75
#, python-format
msgid "    Extinct package:  %s"
msgstr ""

#: ../satellite_tools/messages.py:76
#, python-format
msgid "   Total size: %s"
msgstr ""

#: ../satellite_tools/messages.py:77
#, python-format
msgid "      Downloaded %s of %s. Estimated remaining time: %s"
msgstr ""

#: ../satellite_tools/messages.py:78
#, python-format
msgid "    Fetch unsuccessful: %s"
msgstr ""

#: ../satellite_tools/messages.py:79
#, python-format
msgid "   RPM fetch summary: %s"
msgstr ""

#: ../satellite_tools/messages.py:80
#, python-format
msgid "       success: %d"
msgstr ""

#: ../satellite_tools/messages.py:81
#, python-format
msgid "       failed:  %d"
msgstr ""

#: ../satellite_tools/messages.py:82
#, python-format
msgid "       extinct: %d"
msgstr ""

#: ../satellite_tools/messages.py:84
#, python-format
msgid "   Retrieving / parsing *relevant* package metadata: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:85
#, python-format
msgid "   Retrieving / parsing errata data: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:86
#, python-format
msgid "   Retrieving / parsing kickstart data: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:87
#, python-format
msgid "   Retrieving / parsing kickstart tree files: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:88
#, python-format
msgid "   Importing *relevant* package metadata: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:89
msgid "   * WARNING: this may be a slow process."
msgstr ""

#: ../satellite_tools/messages.py:90
msgid "Linking packages to channels"
msgstr ""

#: ../satellite_tools/messages.py:91
#, python-format
msgid "   Importing *relevant* errata: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:92
msgid "   No new kickstartable tree to import"
msgstr ""

#: ../satellite_tools/messages.py:93
#, python-format
msgid "Importing kickstartable trees (%d)"
msgstr ""

#: ../satellite_tools/messages.py:94
#, python-format
msgid "Imported kickstartable trees (%d)"
msgstr ""

#: ../satellite_tools/reposync.py:111 ../satellite_tools/satsync.py:439
msgid "+++ sending log as an email +++"
msgstr ""

#: ../satellite_tools/reposync.py:114
#, python-format
msgid "%s sync. report from %s"
msgstr ""

#: ../satellite_tools/reposync.py:124 ../satellite_tools/satsync.py:449
msgid "+++ email requested, but there is nothing to send +++"
msgstr ""

#: ../satellite_tools/rhn_satellite_activate.py:198
#, python-format
msgid ""
"\"%s\" (specified in commandline)\n"
"could not be opened and read:\n"
"%s"
msgstr ""

#: ../satellite_tools/rhn_satellite_activate.py:205
#, python-format
msgid ""
"\"%s\" could not be opened\n"
"and/or written to:\n"
"%s"
msgstr ""

#: ../satellite_tools/satsync.py:258
#, python-format
msgid "No handler for step %s"
msgstr ""

#. Try one more time - this time it should be faster since
#. everything should be cached
#: ../satellite_tools/satsync.py:270
msgid "Environment changed, trying again..."
msgstr ""

#: ../satellite_tools/satsync.py:277
msgid "ERROR: Encountered IntegrityError: \n"
msgstr ""

#: ../satellite_tools/satsync.py:285
msgid "Repeated failures"
msgstr ""

#: ../satellite_tools/satsync.py:290
#, python-format
msgid ""
"    Import complete:\n"
"        Begin time: %s\n"
"        End time:   %s\n"
"        Elapsed:    %s\n"
"          "
msgstr ""

#: ../satellite_tools/satsync.py:311
msgid "hours"
msgstr ""

#: ../satellite_tools/satsync.py:311
msgid "minutes"
msgstr ""

#: ../satellite_tools/satsync.py:311
msgid "seconds"
msgstr ""

#: ../satellite_tools/satsync.py:357
msgid ""
"ERROR: The dump is missing package data, use --no-rpms to skip this step or "
"fix the content to include package data."
msgstr ""

#. the orgs() method doesn't exist; that's fine we just
#. won't sync the orgs
#: ../satellite_tools/satsync.py:404
msgid "The SUSE Manager master does not support syncing orgs data."
msgstr ""

#: ../satellite_tools/satsync.py:404
msgid "Skipping..."
msgstr ""

#: ../satellite_tools/satsync.py:442
#, python-format
msgid "SUSE Manager Inter Server sync. report from %s"
msgstr ""

#: ../satellite_tools/satsync.py:521
msgid " - file-system synchronization"
msgstr ""

#: ../satellite_tools/satsync.py:533 ../satellite_tools/satsync.py:541
msgid " - live synchronization"
msgstr ""

#: ../satellite_tools/satsync.py:534
#, python-brace-format
msgid ""
"ERROR: Live content synchronizing with RHN Classic Hosted is no longer "
"supported.\n"
"Please use the cdn-sync command instead unless you are attempting to sync "
"from another {PRODUCT_NAME} via Inter-Server-Sync (ISS), or from local "
"content on disk via Channel Dump ISOs."
msgstr ""

#: ../satellite_tools/satsync.py:542
#, python-format
msgid "   url: %s"
msgstr ""

#: ../satellite_tools/satsync.py:543
#, python-format
msgid "   debug/output level: %s"
msgstr ""

#: ../satellite_tools/satsync.py:553
msgid "ERROR: this server must be registered with SUSE Manager."
msgstr ""

#: ../satellite_tools/satsync.py:575
#, python-format
msgid "Retrieving / parsing %s data"
msgstr ""

#: ../satellite_tools/satsync.py:585 ../satellite_tools/satsync.py:600
msgid "*** SYSTEM INTERRUPT CALLED ***"
msgstr ""

#: ../satellite_tools/satsync.py:593
msgid "ERROR: fatal parser exception occurred "
msgstr ""

#: ../satellite_tools/satsync.py:594
#, python-format
msgid "(line: %s, col: %s msg: %s)"
msgstr ""

#: ../satellite_tools/satsync.py:598
#, python-format
msgid "ERROR: parser exception occurred: %s"
msgstr ""

#: ../satellite_tools/satsync.py:603
msgid "ERROR: exception (during parse) occurred: "
msgstr ""

#: ../satellite_tools/satsync.py:604
#, python-format
msgid ""
"   Encountered some errors with %s data (see logs (%s) for more information)"
msgstr ""

#: ../satellite_tools/satsync.py:606
#, python-format
msgid "   Encountered some errors with %s data:"
msgstr ""

#: ../satellite_tools/satsync.py:607
#, python-format
msgid "   ------- %s PARSE/IMPORT ERROR -------"
msgstr ""

#: ../satellite_tools/satsync.py:609
msgid "   ---------------------------------------"
msgstr ""

#: ../satellite_tools/satsync.py:612
#, python-format
msgid "%s data complete"
msgstr ""

#: ../satellite_tools/satsync.py:665
msgid "Retrieving / parsing channel data"
msgstr ""

#: ../satellite_tools/satsync.py:718
msgid "Channel data complete"
msgstr ""

#: ../satellite_tools/satsync.py:736
#, python-format
msgid "%10s import from %s"
msgstr ""

#: ../satellite_tools/satsync.py:739
#, python-format
msgid "%10s import from %s - %s"
msgstr ""

#: ../satellite_tools/satsync.py:743
#, python-format
msgid "%10s"
msgstr ""

#: ../satellite_tools/satsync.py:750
msgid "p"
msgstr ""

#: ../satellite_tools/satsync.py:752
msgid "."
msgstr ""

#: ../satellite_tools/satsync.py:758
msgid "   p = previously imported/synced channel"
msgstr ""

#: ../satellite_tools/satsync.py:759
msgid "   . = channel not yet imported/synced"
msgstr ""

#: ../satellite_tools/satsync.py:765
msgid "   e = channel no longer supported (end-of-service)"
msgstr ""

#: ../satellite_tools/satsync.py:767
msgid "   ? = channel label invalid --- typo?"
msgstr ""

#: ../satellite_tools/satsync.py:771
#, python-format
msgid "   %s:"
msgstr ""

#: ../satellite_tools/satsync.py:772
#, python-format
msgid "      %s %-40s %4s %s"
msgstr ""

#: ../satellite_tools/satsync.py:773
msgid "base-channels"
msgstr ""

#: ../satellite_tools/satsync.py:786 ../satellite_tools/satsync.py:1603
msgid "NONE RELEVANT"
msgstr ""

#: ../satellite_tools/satsync.py:808
msgid "end-of-service"
msgstr ""

#: ../satellite_tools/satsync.py:809
msgid "e"
msgstr ""

#: ../satellite_tools/satsync.py:815
msgid "   typos:"
msgstr ""

#: ../satellite_tools/satsync.py:816
msgid "?"
msgstr ""

#: ../satellite_tools/satsync.py:831
#, python-format
msgid "XXX: imported channels: %s"
msgstr ""

#: ../satellite_tools/satsync.py:832
#, python-format
msgid "XXX:   cached channels: %s"
msgstr ""

#: ../satellite_tools/satsync.py:837
msgid "XXX: list channels called"
msgstr ""

#: ../satellite_tools/satsync.py:855
msgid "ERROR: these channels either do not exist or are not available:"
msgstr ""

#: ../satellite_tools/satsync.py:859
#, python-format
msgid "       (to see a list of channel labels: %s --list-channels)"
msgstr ""

#: ../satellite_tools/satsync.py:904
#, python-format
msgid "   Retrieving / parsing short package metadata: %s (%s)"
msgstr ""

#: ../satellite_tools/satsync.py:965
#, python-format
msgid "Diffing package metadata (what's missing locally?): %s"
msgstr ""

#: ../satellite_tools/satsync.py:971 ../satellite_tools/satsync.py:1254
msgid "Diffing:    "
msgstr ""

#: ../satellite_tools/satsync.py:988
msgid "ERROR: incremental dump skipped"
msgstr ""

#: ../satellite_tools/satsync.py:1079
msgid "Downloading rpm packages"
msgstr ""

#: ../satellite_tools/satsync.py:1084
#, python-format
msgid "   Fetching any missing RPMs: %s (%s)"
msgstr ""

#: ../satellite_tools/satsync.py:1085 ../satellite_tools/satsync.py:1153
msgid "NONE MISSING"
msgstr ""

#: ../satellite_tools/satsync.py:1094
msgid "Processing rpm packages complete"
msgstr ""

#: ../satellite_tools/satsync.py:1121
msgid "Downloading package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1146
msgid "Downloading srpm packages"
msgstr ""

#: ../satellite_tools/satsync.py:1152
#, python-format
msgid "   Fetching any missing SRPMs: %s (%s)"
msgstr ""

#: ../satellite_tools/satsync.py:1249
#, python-format
msgid "Diffing source package metadata (what's missing locally?): %s"
msgstr ""

#: ../satellite_tools/satsync.py:1260
msgid "Downloading source package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1338 ../satellite_tools/satsync.py:2027
#, python-format
msgid "Unable to save file %s: %s"
msgstr ""

#. for
#. Retried a number of times and it still failed; log the
#. file as being failed and move on
#: ../satellite_tools/satsync.py:1345
#, python-format
msgid "Failed to fetch file %s"
msgstr ""

#: ../satellite_tools/satsync.py:1350
msgid "Downloading kickstartable trees metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1365
msgid "Downloading kickstartable trees files"
msgstr ""

#: ../satellite_tools/satsync.py:1504
#, python-format
msgid "Grabbing all patches for channel %s"
msgstr ""

#: ../satellite_tools/satsync.py:1554
msgid "Downloading patch data"
msgstr ""

#: ../satellite_tools/satsync.py:1556
msgid "Forcing download of all patch data for requested channels."
msgstr ""

#: ../satellite_tools/satsync.py:1571
msgid "Downloading patch data complete"
msgstr ""

#: ../satellite_tools/satsync.py:1576 ../satellite_tools/satsync.py:1597
msgid "Downloading:"
msgstr ""

#: ../satellite_tools/satsync.py:1579
msgid " - complete"
msgstr ""

#: ../satellite_tools/satsync.py:1624
msgid "Importing source package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1627
msgid "Importing package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1635
msgid "Importing:  "
msgstr ""

#. not in the cache
#: ../satellite_tools/satsync.py:1703
msgid ""
"Package Not Found in Cache, Clear the Cache "
"to                                  Regenerate it."
msgstr ""

#: ../satellite_tools/satsync.py:1709
msgid "Importing channel patches"
msgstr ""

#: ../satellite_tools/satsync.py:1714
#, python-format
msgid "Importing %s patches for channel %s."
msgstr ""

#. Incomplete configuration
#: ../satellite_tools/satsync.py:2113
msgid "ERROR: server.mount_point not set in the configuration file"
msgstr ""

#: ../satellite_tools/satsync.py:2117
#, python-format
msgid "ERROR: server.mount_point %s do not exist"
msgstr ""

#: ../satellite_tools/satsync.py:2122
#, python-format
msgid "ERROR: path under server.mount_point (%s)  do not exist"
msgstr ""

#: ../satellite_tools/satsync.py:2199
#, python-format
msgid "Commandline: %s"
msgstr ""

#: ../satellite_tools/satsync.py:2202
#, python-format
msgid ""
"DEBUG ONLY: max. batch-size for XML/database-import processing (1..%s).\"man "
"satellite-sync\" for more information."
msgstr ""

#: ../satellite_tools/satsync.py:2205
msgid "alternative SSL CA Cert (fullpath to cert file)"
msgstr ""

#: ../satellite_tools/satsync.py:2207
msgid "process data for this channel only"
msgstr ""

#: ../satellite_tools/satsync.py:2209
msgid ""
"disk dump will be considered to be a full export; see \"man satellite-sync\" "
"for more information."
msgstr ""

#: ../satellite_tools/satsync.py:2212
msgid "existing custom channels will also be synced (unless -c is used)"
msgstr ""

#: ../satellite_tools/satsync.py:2214
#, python-format
msgid ""
"override debug level set in /etc/rhn/rhn.conf (which is currently set at %s)."
msgstr ""

#: ../satellite_tools/satsync.py:2216
#, python-format
msgid "requested version of XML dump (default: %s)"
msgstr ""

#: ../satellite_tools/satsync.py:2218
msgid "e-mail a report of what was synced/imported"
msgstr ""

#: ../satellite_tools/satsync.py:2220
msgid "forcibly process all (not a diff of) patch metadata"
msgstr ""

#: ../satellite_tools/satsync.py:2222
msgid "Do not use an http proxy under any circumstances."
msgstr ""

#: ../satellite_tools/satsync.py:2224
msgid "alternative http proxy (hostname:port)"
msgstr ""

#: ../satellite_tools/satsync.py:2226
msgid "alternative http proxy username"
msgstr ""

#: ../satellite_tools/satsync.py:2228
msgid "alternative http proxy password"
msgstr ""

#: ../satellite_tools/satsync.py:2230
msgid "parent SUSE Manager to import content from"
msgstr ""

#: ../satellite_tools/satsync.py:2232
msgid "list all available channels and exit"
msgstr ""

#: ../satellite_tools/satsync.py:2234
msgid "help on all error codes mgr-inter-sync returns"
msgstr ""

#: ../satellite_tools/satsync.py:2236
msgid "source mount point for import - disk update only"
msgstr ""

#: ../satellite_tools/satsync.py:2238
msgid "do not process patch data"
msgstr ""

#: ../satellite_tools/satsync.py:2240
msgid "do not process kickstart data (provisioning only)"
msgstr ""

#: ../satellite_tools/satsync.py:2242
msgid "do not process full package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:2244
msgid "do not download, or process any RPMs"
msgstr ""

#: ../satellite_tools/satsync.py:2246
msgid "turn off SSL (not recommended)"
msgstr ""

#: ../satellite_tools/satsync.py:2248
msgid "org to which the sync imports data. defaults to the admin account"
msgstr ""

#: ../satellite_tools/satsync.py:2250
msgid "print the configuration and exit"
msgstr ""

#: ../satellite_tools/satsync.py:2252
msgid "alternative server with which to connect (hostname)"
msgstr ""

#: ../satellite_tools/satsync.py:2254
msgid "synchronize to this step (man satellite-sync for more info)"
msgstr ""

#: ../satellite_tools/satsync.py:2256
msgid "write complete data to tempfile before streaming to remainder of app"
msgstr ""

#: ../satellite_tools/satsync.py:2258
msgid "DEBUG ONLY: alternative path to digital system id"
msgstr ""

#: ../satellite_tools/satsync.py:2260
msgid "alternative email address(es) for sync output (--email option)"
msgstr ""

#: ../satellite_tools/satsync.py:2262
msgid "do not remove rpms when importing from local dump"
msgstr ""

#: ../satellite_tools/satsync.py:2264
msgid ""
"the fully qualified domain name of the master Satellite. Valid with --mount-"
"point only. Required if you want to import org data and channel permissions."
msgstr ""

#: ../satellite_tools/satsync.py:2274
#, python-format
msgid "ERROR: these arguments make no sense in this context (try --help): %s"
msgstr ""

#. An SQL error is fatal... crash and burn
#: ../satellite_tools/satsync.py:2286
#, python-format
msgid "ERROR: Can't connect to the database: %s"
msgstr ""

#: ../satellite_tools/satsync.py:2287
msgid "ERROR: Check if your database is running."
msgstr ""

#: ../satellite_tools/satsync.py:2322
#, python-format
msgid "ERROR: --debug-level takes an in integer value within the range %s."
msgstr ""

#: ../satellite_tools/satsync.py:2324
msgid "  0  - little logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2325
msgid "  1  - minimal logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2326
msgid "  2  - normal level of logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2327
msgid "  3  - lots of logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2328
msgid "  4+ - excessive logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2341
msgid "ERROR: The --master option is only valid with the --mount-point option"
msgstr ""

#: ../satellite_tools/satsync.py:2351
#, python-format
msgid "ERROR: Unable to lookup Org Id %s"
msgstr ""

#: ../satellite_tools/satsync.py:2360
msgid ""
"WARNING: --list-channels option overrides any --step option. --step ignored."
msgstr ""

#: ../satellite_tools/satsync.py:2375
#, python-format
msgid ""
"ERROR: '%s' is not a valid step. See 'man mgr-inter-sync' for more detail."
msgstr ""

#: ../satellite_tools/satsync.py:2407
msgid ""
"ERROR: No channels currently imported; try mgr-inter-sync --list-channels; "
"then mgr-inter-sync -c chn0 -c chn1..."
msgstr ""

#. int(None) --> TypeError
#. int('a')  --> ValueError
#: ../satellite_tools/satsync.py:2457 ../satellite_tools/satsync.py:2461
msgid "ERROR: --batch-size must have a value within the range: 1..50"
msgstr ""

#: ../satellite_tools/satsync.py:2469
#, python-format
msgid "ERROR: no such directory %s"
msgstr ""

#: ../satellite_tools/satsync.py:2474
msgid "Error Codes: Returned codes means:"
msgstr ""

#: ../satellite_tools/satsync.py:2475
msgid " -1  - Could not lock file or KeyboardInterrupt or SystemExit"
msgstr ""

#: ../satellite_tools/satsync.py:2476
msgid "  0  - User interrupted or intentional exit"
msgstr ""

#: ../satellite_tools/satsync.py:2477
msgid "  1  - attempting to run more than one instance of mgr-inter-sync."
msgstr ""

#: ../satellite_tools/satsync.py:2478
msgid "  2  - Unable to find synchronization tools."
msgstr ""

#: ../satellite_tools/satsync.py:2479
msgid "  3  - a general socket exception occurred"
msgstr ""

#: ../satellite_tools/satsync.py:2480
msgid "  4  - an SSL error occurred. Recheck your SSL settings."
msgstr ""

#: ../satellite_tools/satsync.py:2481
msgid "  5  - ISS error"
msgstr ""

#: ../satellite_tools/satsync.py:2482
msgid "  6  - unhandled exception occurred"
msgstr ""

#: ../satellite_tools/satsync.py:2483
msgid "  7  - unknown sync error"
msgstr ""

#: ../satellite_tools/satsync.py:2484
msgid "  8  - ERROR: must be root to execute"
msgstr ""

#: ../satellite_tools/satsync.py:2485
msgid "  9  - rpclib fault during synchronization init"
msgstr ""

#: ../satellite_tools/satsync.py:2486
msgid "  10 - synchronization init error"
msgstr ""

#: ../satellite_tools/satsync.py:2487
msgid "  11 - Error parsing XML stream"
msgstr ""

#: ../satellite_tools/satsync.py:2488
msgid "  12 - Channel do not exist"
msgstr ""

#: ../satellite_tools/satsync.py:2489
msgid "  13 - SQL error during importing package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:2490
msgid "  14 - SQL error during linking channel packages"
msgstr ""

#: ../satellite_tools/satsync.py:2491
msgid "  15 - SQL error during xml processing"
msgstr ""

#: ../satellite_tools/satsync.py:2492
msgid "  16 - server.mount_point not set in the configuration file"
msgstr ""

#: ../satellite_tools/satsync.py:2493
msgid ""
"  17 - SQL error during retrieving the channels already imported in the SUSE "
"Manager database"
msgstr ""

#: ../satellite_tools/satsync.py:2494
msgid "  18 - Wrong db connection string in rhn.conf"
msgstr ""

#: ../satellite_tools/satsync.py:2495
msgid "  19 - Bad arguments"
msgstr ""

#: ../satellite_tools/satsync.py:2496
msgid "  20 - Could not connect to db."
msgstr ""

#: ../satellite_tools/satsync.py:2497
msgid "  21 - Bad debug level"
msgstr ""

#: ../satellite_tools/satsync.py:2498
msgid "  22 - Not valid step"
msgstr ""

#: ../satellite_tools/satsync.py:2499
msgid "  24 - no such file"
msgstr ""

#: ../satellite_tools/satsync.py:2500
msgid "  25 - no such directory"
msgstr ""

#: ../satellite_tools/satsync.py:2501
msgid "  26 - mount_point does not exist"
msgstr ""

#: ../satellite_tools/satsync.py:2502
msgid "  27 - No such org"
msgstr ""

#: ../satellite_tools/satsync.py:2503
msgid "  28 - error: --master is only valid with --mount-point"
msgstr ""

#: ../satellite_tools/satsync.py:2510
#, python-format
msgid "ERROR: unknown dump version, try one of %s"
msgstr ""
07070100000060000081B40000000000000000000000016290A0C10000B69E000000000000000000000000000000000000001E00000000spacewalk-backend/po/bn_IN.po # SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
#
# Translators:
# Progga <progga@BengaLinux.Org>, 2004.
# Runa Bhattacharjee <runab@redhat.com>, 2004, 2005, 2006, 2007.
# Salahuddin <salahuddin66@gmail.com>, 2004.
msgid ""
msgstr ""
"Project-Id-Version: Spacewalk\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-10-16 13:34+0200\n"
"PO-Revision-Date: 2011-03-04 16:08+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Bengali (India) <anubad@lists.ankur.org.in>\n"
"Language: bn_IN\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"

#: ../server/apacheAuth.py:66
#, python-format
msgid "incomplete proxy authentication token: %s"
msgstr ""

#: ../server/apacheAuth.py:84
#, python-format
msgid "Sent proxy signature %s does not match ours %s."
msgstr ""

#: ../server/apacheAuth.py:119
msgid "declined proxy authentication"
msgstr ""

#: ../server/apacheRequest.py:59
#, python-format
msgid "Invalid request received (%s)."
msgstr ""

#: ../server/apacheRequest.py:120
#, python-format
msgid ""
"IMPORTANT MESSAGE FOLLOWS:\n"
"%s"
msgstr ""

#: ../server/apacheRequest.py:149
#, python-format
msgid ""
"While running '%s': caught\n"
"%s : %s\n"
msgstr ""

#: ../server/apacheRequest.py:606
#, python-format
msgid "Invalid URI %s"
msgstr ""

#: ../server/configFilesHandler.py:129 ../server/handlers/app/packages.py:192
#: ../server/handlers/xmlrpc/registration.py:215
#: ../server/handlers/xmlrpc/registration.py:1168
#: ../server/handlers/xmlrpc/registration.py:1307
#, python-format
msgid ""
"\n"
"                   %s Account has been deactivated on this server.\n"
"                   Please contact your Org administrator for more help."
msgstr ""

#: ../server/handlers/applet/applet.py:78
#, python-brace-format
msgid "Your system was not found in the {PRODUCT_NAME} database"
msgstr ""

#: ../server/handlers/sat/auth.py:45
msgid "ISS is disabled on this server."
msgstr ""

#: ../server/handlers/sat/auth.py:50
#, python-format
msgid "Server \"%s\" is not enabled for ISS."
msgstr ""

#: ../server/handlers/xmlrpc/errata.py:64
#, python-format
msgid "Expected a package name, not: %s"
msgstr ""

#: ../server/handlers/xmlrpc/errata.py:115
#, python-format
msgid "Expected a package, not: %s"
msgstr ""

#: ../server/handlers/xmlrpc/proxy.py:65
#, python-format
msgid "SUSE Manager Proxy service not enabled for server profile: \"%s\""
msgstr ""

#: ../server/handlers/xmlrpc/proxy.py:85
msgid "Invalid session key"
msgstr ""

#: ../server/handlers/xmlrpc/proxy.py:93
msgid "This server ID no longer exists"
msgstr ""

#: ../server/handlers/xmlrpc/queue.py:433
#, python-format
msgid "Invalid action value type %s (%s)"
msgstr ""

#: ../server/handlers/xmlrpc/queue.py:464
#, python-format
msgid "Action %s does not belong to server %s"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:194
msgid "Required data missing"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:198
msgid "Required members missing"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:207
msgid "Attempt to register a system to an invalid username"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:839
msgid "Invalid system release version requested"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1063
msgid ""
"Unable to find a valid network interface, both ipaddr and ip6addr not found."
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1115
#, python-brace-format
msgid "{PRODUCT_NAME} Welcome Message"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1125
msgid "Privacy Statement"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1146
msgid "Expected a dictionary as a product argument"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1374
#, python-format
msgid "Invalid value '%s' for %s (%s)"
msgstr ""

#: ../server/handlers/xmlrpc/scap.py:104
msgid "Invalid system_id/action_id pair."
msgstr ""

#: ../server/handlers/xmlrpc/up2date.py:233
#, python-format
msgid "Invalid value %s (%s)"
msgstr ""

#: ../server/importlib/userAuth.py:98
msgid "You are not authorized to manage packages in the null org"
msgstr ""

#: ../server/importlib/userAuth.py:103
#, python-format
msgid "You are not allowed to manage packages in the %s org"
msgstr ""

#: ../server/importlib/userAuth.py:121
msgid "You are not allowed to perform administrative tasks"
msgstr ""

#: ../server/importlib/userAuth.py:144
#, python-format
msgid ""
"You are not allowed to manage channel %s, or that channel does not exist"
msgstr ""

#: ../server/importlib/userAuth.py:204
#, python-format
msgid ""
"\n"
"               %s Account has been deactivated on this server.\n"
"               Please contact your Org administrator for more help."
msgstr ""

#: ../server/rhnChannel.py:1992
#, python-format
msgid ""
"Your account does not have access to any channels matching "
"(release='%(release)s', arch='%(arch)s')%(www_activation)s"
msgstr ""

#: ../server/rhnChannel.py:2002
msgid ""
"\n"
"If you have a registration number, please register with it first at http://"
"www.redhat.com/apps/activate/ and then try again.\n"
"\n"
msgstr ""

#: ../server/rhnChannel.py:2012
#, python-format
msgid "Insufficient subscription permissions for release (%s, %s"
msgstr ""

#. Various messages that can be reused
#.
#. bretm 02/07/2007 -- when we have better old-client documentation, probably
#. will be safe to get rid of all this crap
#: ../server/rhnChannel.py:2276 ../server/rhnChannel.py:2287
#: ../server/rhnChannel.py:2302
msgid "System Registered but Inactive"
msgstr ""

#: ../server/rhnChannel.py:2277
#, python-format
msgid ""
"\n"
"Invalid Architecture and OS release combination (%s, %s).\n"
"Your system has been registered, but will not receive updates\n"
"because it is not subscribed to a channel. If you have not yet\n"
"activated your product for service, please visit our website at:\n"
"\n"
"     http://www.redhat.com/apps/activate/\n"
"\n"
"...to activate your product."
msgstr ""

#: ../server/rhnChannel.py:2288
#, python-format
msgid ""
"\n"
"Invalid Architecture and OS release combination (%s, %s).\n"
"Your system has been registered, but will not receive updates\n"
"because it could not be subscribed to a base channel.\n"
"Please contact your organization administrator for assistance.\n"
msgstr ""

#: ../server/rhnChannel.py:2295
#, python-format
msgid ""
"\n"
"  This system has been successfully registered, but is not yet entitled\n"
"  to service.  To entitle this system to service, login to the web site at:\n"
"\n"
"  %(entitlement_url)s\n"
msgstr ""

#: ../server/rhnChannel.py:2303
#, python-format
msgid ""
"\n"
"  This system has been successfully registered, but no service entitlements\n"
"  were available.  To entitle this system to service, login to the web site "
"at:\n"
"\n"
"  %(entitlement_url)s\n"
msgstr ""

#: ../server/rhnHandler.py:62
msgid "Please run rhn_register as root on this client"
msgstr ""

#: ../server/rhnHandler.py:75
#, python-format
msgid "Service not enabled for system profile: \"%s\""
msgstr ""

#: ../server/rhnPackage.py:49 ../server/rhnPackage.py:87
#: ../server/rhnPackage.py:107 ../server/rhnPackage.py:158
#, python-format
msgid "Invalid RPM package %s requested"
msgstr ""

#: ../server/rhnPackage.py:112
msgid "Package not found"
msgstr ""

#: ../server/rhnServer/server_class.py:97
#, python-format
msgid "Architecture `%s' is not supported"
msgstr ""

#: ../server/rhnServer/server_token.py:78
#, python-format
msgid "Token `%s' has more than one base channel assigned"
msgstr ""

#: ../server/rhnServer/server_token.py:80
msgid "Conflicting base channels"
msgstr ""

#: ../server/rhnServer/server_token.py:190
#, python-format
msgid "Failed to add server to group %s"
msgstr ""

#: ../server/rhnServer/server_token.py:503
#, python-format
msgid "Maximum usage count of %s reached"
msgstr ""

#: ../server/rhnServer/server_token.py:744
msgid ""
"Stacking of re-registration tokens with different base entitlements is not "
"supported"
msgstr ""

#: ../server/rhnServer/server_token.py:811
#, python-format
msgid "Could not find token '%s'"
msgstr ""

#. Cannot use activation keys from different orgs
#: ../server/rhnServer/server_token.py:843
msgid "Tokens from mismatching orgs"
msgstr ""

#. Two tokens with different kickstart sessions
#: ../server/rhnServer/server_token.py:853
msgid "Kickstart session mismatch"
msgstr ""

#: ../server/rhnServer/server_token.py:877
msgid "Stacking of re-registration tokens is not supported"
msgstr ""

#: ../server/rhnUser.py:289 ../server/rhnUser.py:292
msgid "Invalid username/password combination"
msgstr ""

#. nope, not reserved either
#: ../server/rhnUser.py:467
#, python-format
msgid "Username `%s' has not been reserved"
msgstr ""

#. New accounts have to specify an e-mail address
#: ../server/rhnUser.py:473
msgid "E-mail address not specified"
msgstr ""

#: ../server/rhnUser.py:509
#, python-format
msgid "username should be at least %d characters"
msgstr ""

#: ../server/rhnUser.py:512
#, python-format
msgid "username should be less than %d characters"
msgstr ""

#: ../server/rhnUser.py:523
#, python-format
msgid "username = `%s', invalid character `%s'"
msgstr ""

#: ../server/rhnUser.py:542
#, python-format
msgid "Please limit your e-mail address to %s chars"
msgstr ""

#: ../server/rhnUser.py:623
#, python-format
msgid "password must be at least %d characters"
msgstr ""

#: ../server/rhnUser.py:626
#, python-format
msgid "Password must be shorter than %d characters"
msgstr ""

#: ../server/rhnUser.py:644
#, python-format
msgid "password contains character `%s'"
msgstr ""

#: ../server/rhnUser.py:651
#, python-format
msgid "username should be at least %d characters long"
msgstr ""

#: ../server/rhnUser.py:662
#, python-format
msgid "Cannot register usernames ending with %s"
msgstr ""

#. 0-999: Red Hat client/client-like interaction errors:
#: ../common/rhnException.py:53
msgid "This does not appear to be a valid username."
msgstr ""

#: ../common/rhnException.py:54
msgid "Invalid username and password combination."
msgstr ""

#: ../common/rhnException.py:55
msgid "This login is already taken, or the password is incorrect."
msgstr ""

#: ../common/rhnException.py:56
msgid "Permission denied."
msgstr ""

#: ../common/rhnException.py:57
msgid "Object not found."
msgstr ""

#: ../common/rhnException.py:58
msgid "Invalid System Digital ID."
msgstr ""

#: ../common/rhnException.py:59
msgid "Invalid System Credentials."
msgstr ""

#: ../common/rhnException.py:60
msgid "Could not retrieve user data from database."
msgstr ""

#: ../common/rhnException.py:61
msgid "Valid username required."
msgstr ""

#: ../common/rhnException.py:62
msgid "Valid password required."
msgstr ""

#: ../common/rhnException.py:63
msgid "Minimum username length violation."
msgstr ""

#: ../common/rhnException.py:64
msgid "Minimum password length violation."
msgstr ""

#: ../common/rhnException.py:65
msgid "The username contains invalid characters."
msgstr ""

#: ../common/rhnException.py:66
msgid "File not found."
msgstr ""

#: ../common/rhnException.py:67
msgid "Architecture and OS version combination is not supported."
msgstr ""

#: ../common/rhnException.py:68
msgid "Could not retrieve system data from database."
msgstr ""

#: ../common/rhnException.py:69
msgid "Invalid arguments passed to function."
msgstr ""

#: ../common/rhnException.py:70
msgid "Unable to retrieve requested entry."
msgstr ""

#: ../common/rhnException.py:71
msgid "Could not update database entry."
msgstr ""

#: ../common/rhnException.py:72
msgid "Unsupported server architecture."
msgstr ""

#: ../common/rhnException.py:73
#, python-format
msgid ""
"\n"
"     The anonymous server functionality is no longer available.\n"
"\n"
"     Please re-register this system by running mgr_register as root.\n"
"     Please visit https://%(hostname)s/rhn/systems/SystemEntitlements.do\n"
"     or login at https://%(hostname)s, and from the \"Overview\" tab,\n"
"     select \"Subscription Management\" to enable the service for this "
"system.\n"
"     "
msgstr ""

#: ../common/rhnException.py:81
msgid "Record not available in the database."
msgstr ""

#: ../common/rhnException.py:82
msgid "Invalid value for entry."
msgstr ""

#: ../common/rhnException.py:83
#, python-format
msgid ""
"\n"
"     This system does not have a valid entitlement for SUSE Manager.\n"
"     Please visit https://%(hostname)s/rhn/systems/SystemEntitlements.do\n"
"     or login at https://%(hostname)s, and from the \"Overview\" tab,\n"
"     select \"Subscription Management\" to enable the service for this "
"system.\n"
"     "
msgstr ""

#: ../common/rhnException.py:89
msgid "Channel error"
msgstr ""

#: ../common/rhnException.py:90
msgid "Client session token is invalid."
msgstr ""

#: ../common/rhnException.py:91
msgid "Client session token has expired."
msgstr ""

#: ../common/rhnException.py:92
msgid "You are not authorized to retrieve the requested object."
msgstr ""

#: ../common/rhnException.py:93
msgid "Invalid action"
msgstr ""

#: ../common/rhnException.py:94
msgid "You are not allowed to perform administrative tasks on this system."
msgstr ""

#: ../common/rhnException.py:96
msgid "The system is already subscribed to the specified channel."
msgstr ""

#: ../common/rhnException.py:97
msgid "The system is not currently subscribed to the specified channel."
msgstr ""

#: ../common/rhnException.py:98
msgid "The specified channel does not exist."
msgstr ""

#: ../common/rhnException.py:99
msgid "Invalid channel version."
msgstr ""

#: ../common/rhnException.py:100
msgid ""
"\n"
"     User group membership limits exceeded.\n"
"\n"
"     The current settings for your account do not allow you to add another\n"
"     user account. Please check with the organization administrator for "
"your\n"
"     account if the maximum number of users allowed to subscribe to server "
"needs\n"
"     to be changed.\n"
"     "
msgstr ""

#: ../common/rhnException.py:108
msgid ""
"\n"
"     System group membership limits exceeded.\n"
"\n"
"     The current settings for your account do not allow you to add another\n"
"     system profile. Please check with the organization administrator for "
"your\n"
"     account for modifying the maximum number of system profiles that can "
"be\n"
"     subscribed to your account.\n"
"     "
msgstr ""

#: ../common/rhnException.py:116
msgid ""
"\n"
"     Invalid architecture.\n"
"\n"
"     The architecture of the package is not supported by\n"
"     "
msgstr ""

#: ../common/rhnException.py:121
msgid "Invalid RPM header"
msgstr ""

#: ../common/rhnException.py:122
msgid ""
"\n"
"    This system is already registered as a Salt Minion. If you want to "
"register it as a traditional client\n"
"    please delete it first via the web UI or API and then register it using "
"the traditional tools.\n"
"    "
msgstr ""

#. For the uploading tools
#: ../common/rhnException.py:127
msgid "Invalid information uploaded to the server"
msgstr ""

#: ../common/rhnException.py:128
msgid "Error uploading network interfaces configuration."
msgstr ""

#: ../common/rhnException.py:129
msgid ""
"\n"
"     Package Upload Failed due to uniqueness constraint violation.\n"
"     Make sure the package does not have any duplicate dependencies or\n"
"     does not already exists on the server\n"
"     "
msgstr ""

#: ../common/rhnException.py:134
msgid ""
"\n"
"     The --force rhnpush option is disabled on this server.\n"
"     Please contact your SUSE Manager administrator for more help.\n"
"     "
msgstr ""

#. 60-70: token errors
#: ../common/rhnException.py:140
msgid ""
"\n"
"     The activation token specified could not be found on the server.\n"
"     Please retry with a valid key.\n"
"     "
msgstr ""

#: ../common/rhnException.py:144
msgid "Too many systems registered using this registration token"
msgstr ""

#: ../common/rhnException.py:145
msgid "Token contains invalid, obsoleted or insufficient settings"
msgstr ""

#: ../common/rhnException.py:146
msgid "Conflicting activation tokens"
msgstr ""

#. 70-80: channel subscription errors
#: ../common/rhnException.py:149
msgid ""
"\n"
"     No matching base channel found for your system.\n"
"     "
msgstr ""

#: ../common/rhnException.py:152
msgid ""
"\n"
"     You do not have subscription permission to the designated channel.\n"
"     Please refer to your organization's channel or organization\n"
"     administrators for further details.\n"
"     "
msgstr ""

#: ../common/rhnException.py:157
msgid "You can not unsubscribe from base channel."
msgstr ""

#: ../common/rhnException.py:158
msgid "SUSE Manager or Proxy channel can not be subscribed."
msgstr ""

#. 80-90: server group errors
#: ../common/rhnException.py:161
msgid "There was an error while trying to join the system to its groups"
msgstr ""

#. 90-100: entitlement errors
#: ../common/rhnException.py:164
msgid "Unable to entitle system"
msgstr ""

#. 100-109: e-mail and uuid related faults
#: ../common/rhnException.py:167
msgid "Maximum e-mail length violation."
msgstr ""

#: ../common/rhnException.py:168
msgid "This system has been previously registered."
msgstr ""

#: ../common/rhnException.py:169
msgid "Invalid username"
msgstr ""

#. 140-159 applet errors
#: ../common/rhnException.py:172
msgid "Unable to look up server"
msgstr ""

#. 160-179: OSAD errors
#: ../common/rhnException.py:175
msgid "Required argument is missing"
msgstr ""

#. 600-699: RHEL5+ EN errors
#: ../common/rhnException.py:178
msgid "No entitlement information tied to hardware"
msgstr ""

#: ../common/rhnException.py:179
msgid "Installation number is not entitling"
msgstr ""

#. 700-799: Additional user input verification errors.
#: ../common/rhnException.py:182
msgid "Maximum username length violation"
msgstr ""

#: ../common/rhnException.py:183
msgid "Maximum password length violation"
msgstr ""

#: ../common/rhnException.py:184
msgid "This user has read only API access. Action denied."
msgstr ""

#: ../common/rhnException.py:186
msgid "System Name cannot be less than 1 character"
msgstr ""

#. 1000-1999: Proxy specific errors:
#. issued by a Proxy to the client
#: ../common/rhnException.py:190
msgid "SUSE Manager Proxy error."
msgstr ""

#: ../common/rhnException.py:191
msgid "SUSE Manager Proxy unable to login."
msgstr ""

#. issued by a SUSE Manager Server/Satellite to the proxy
#: ../common/rhnException.py:193
msgid ""
"\n"
"     SUSE Manager Proxy system ID does not match a Spacewalk Proxy Server\n"
"     in the database.\n"
"     "
msgstr ""

#: ../common/rhnException.py:197
msgid "SUSE Manager Proxy session token is invalid."
msgstr ""

#: ../common/rhnException.py:198
msgid "SUSE Manager Proxy session token has expired."
msgstr ""

#. 2000-2999: Red Hat Satellite specific errors:
#: ../common/rhnException.py:202
msgid ""
"\n"
"      user creation is not allowed via mgr_register;\n"
"     please contact your sysadmin to have your account created.\n"
"     "
msgstr ""

#: ../common/rhnException.py:206
msgid ""
"\n"
"     This SUSE Manager server is not allowed to use Inter Server Sync on "
"this server\n"
"     "
msgstr ""

#: ../common/rhnException.py:209
msgid ""
"\n"
"     Inter Server Sync is disabled on this SUSE Manager Server.\n"
"     "
msgstr ""

#. 3000-3999: XML dumper errors:
#: ../common/rhnException.py:214
msgid "Invalid datatype passed"
msgstr ""

#: ../common/rhnException.py:215
msgid "Unable to retrieve channel"
msgstr ""

#: ../common/rhnException.py:216
msgid "Unable to retrieve package"
msgstr ""

#: ../common/rhnException.py:217
msgid "Unable to retrieve erratum"
msgstr ""

#: ../common/rhnException.py:218
msgid "File is missing"
msgstr ""

#: ../common/rhnException.py:219
msgid "Function retrieval error"
msgstr ""

#: ../common/rhnException.py:220
msgid "Function execution error"
msgstr ""

#: ../common/rhnException.py:221
msgid "Missing version string"
msgstr ""

#: ../common/rhnException.py:222
msgid "Invalid version string"
msgstr ""

#: ../common/rhnException.py:223
msgid "Mismatching versions"
msgstr ""

#: ../common/rhnException.py:224
msgid "Invalid channel version"
msgstr ""

#: ../common/rhnException.py:225
msgid "No comps file for channel"
msgstr ""

#: ../common/rhnException.py:226
msgid "Unable to retrieve comps file"
msgstr ""

#. 4000 - 4999: config management errors
#: ../common/rhnException.py:229
msgid "Configuration action missing"
msgstr ""

#: ../common/rhnException.py:230
msgid "File too large"
msgstr ""

#: ../common/rhnException.py:231
msgid "File contains binary data"
msgstr ""

#: ../common/rhnException.py:232
msgid "Configuration channel is not empty"
msgstr ""

#: ../common/rhnException.py:233
msgid "Permission error"
msgstr ""

#: ../common/rhnException.py:234
msgid "Content missing for configuration file"
msgstr ""

#: ../common/rhnException.py:235
msgid "Template delimiters not specified"
msgstr ""

#: ../common/rhnException.py:236
msgid "Configuration channel does not exist"
msgstr ""

#: ../common/rhnException.py:237
msgid "Configuration channel already exists"
msgstr ""

#: ../common/rhnException.py:238
msgid "File missing from configuration channel"
msgstr ""

#: ../common/rhnException.py:239
msgid "Different revision of this file is uploaded"
msgstr ""

#: ../common/rhnException.py:240
msgid "File already uploaded to configuration channel"
msgstr ""

#: ../common/rhnException.py:241
msgid "File size exceeds remaining quota space"
msgstr ""

#: ../common/rhnException.py:242
msgid "Full path of file must be specified"
msgstr ""

#: ../common/rhnException.py:243
msgid "Invalid revision number"
msgstr ""

#: ../common/rhnException.py:244
msgid "Cannot compare files of different file type"
msgstr ""

#. 5000 - 5999: client content uploading errors
#. 5000 - 5099: crash reporting errors
#: ../common/rhnException.py:248
msgid "Crash information is invalid or incomplete"
msgstr ""

#: ../common/rhnException.py:249
msgid "Crash file information is invalid or incomplete"
msgstr ""

#: ../common/rhnException.py:250
msgid "Error composing crash directory path"
msgstr ""

#: ../common/rhnException.py:251
msgid "Error composing crash file path"
msgstr ""

#: ../common/rhnException.py:252 ../common/rhnException.py:259
msgid "Invalid content encoding"
msgstr ""

#: ../common/rhnException.py:253
msgid "Invalid crash name"
msgstr ""

#: ../common/rhnException.py:254
msgid "Crash reporting is disabled for this organization"
msgstr ""

#. 5100 - 5199: scap results reporting error
#: ../common/rhnException.py:256
msgid "SCAP results file transfer is invalid or incomplete"
msgstr ""

#: ../common/rhnException.py:257
msgid "Error composing directory path for detailed SCAP results"
msgstr ""

#: ../common/rhnException.py:258
msgid "Error composing file path for detailed SCAP results"
msgstr ""

#: ../common/rhnException.py:306
msgid ""
"\n"
"     An error has occurred while processing your request. If this problem\n"
"     persists please enter a bug report at scc.suse.com.\n"
"     If you choose to submit the bug report, please be sure to include\n"
"     details of what you were trying to do when this error occurred and\n"
"     details on how to reproduce this problem.\n"
msgstr ""

#: ../common/rhnException.py:358
#, python-format
msgid ""
"Error Message:\n"
"    %s\n"
msgstr ""

#: ../common/rhnException.py:360
#, python-format
msgid "Error Class Code: %s\n"
msgstr ""

#: ../common/rhnException.py:363
#, python-format
msgid "Error Class Info: %s\n"
msgstr ""

#: ../common/rhnException.py:365
#, python-format
msgid "Explanation: %s"
msgstr ""

#: ../common/rhnTB.py:205
#, python-format
msgid "ERROR: %s %s: %s"
msgstr ""

#: ../common/rhnTB.py:207
#, python-format
msgid "TRACEBACK: %s"
msgstr ""

#: ../satellite_tools/disk_dumper/iss.py:1294
#: ../satellite_tools/disk_dumper/iss.py:1298
#, python-format
msgid "format of %s should be at least YYYYMMDD.\n"
msgstr ""

#: ../satellite_tools/messages.py:26
#, python-format
msgid ""
"\n"
"ERROR: executing step %s. Error is:\n"
"%s\n"
msgstr ""

#: ../satellite_tools/messages.py:31
#, python-format
msgid ""
"\n"
"ERROR: there was a problem accessing the channel data from your temporary\n"
"       repository. Did you migrate all of the data from the channel ISOs\n"
"       do this directory? If so, please recheck the channels ISOs, ensure\n"
"       that you have them all, and then iteratively remount and repopulate\n"
"       the temporary repository (%s).\n"
msgstr ""

#: ../satellite_tools/messages.py:39
#, python-format
msgid ""
"\n"
"ERROR: there was a problem synchronizing the information.\n"
"       Error message: %s\n"
msgstr ""

#: ../satellite_tools/messages.py:44
#, python-format
msgid ""
"\n"
"ERROR: There was a problem communicating with the ISS Master.\n"
"       Depending on the specific error details, please review your "
"configuration,\n"
"       basic network connectivity, and/or name resolution, and try again.\n"
"       Error message: %s\n"
msgstr ""

#: ../satellite_tools/messages.py:51
#, python-format
msgid ""
"\n"
"ERROR: There was a problem communicating with the ISS Master.\n"
"       If the master satellite is older than v5.3, it does not have ISS "
"capability.\n"
"       Otherwise, depending on the specific error details, please review "
"your\n"
"       configuration, basic network connectivity, and/or name resolution, "
"and try again.\n"
"       Error message: %s\n"
msgstr ""

#: ../satellite_tools/messages.py:59
#, python-format
msgid ""
"\n"
"ERROR: a child-channel cannot be synced without its parent being synced as\n"
"       well. A parent needs to be either (a) previously synced or (b) "
"synced\n"
"       in tandem with the desired child-channel. Missing parents for this\n"
"       transaction:\n"
"       %s\n"
msgstr ""

#: ../satellite_tools/messages.py:67
#, python-format
msgid ""
"\n"
"ERROR: you are not entitled to sync a channel in this set of channels.\n"
"Please contact your SUSE Manager contact\n"
"%s"
msgstr ""

#: ../satellite_tools/messages.py:72
#, python-format
msgid "  ERROR: not enough free space (%s KB) on device."
msgstr ""

#: ../satellite_tools/messages.py:74
#, python-format
msgid "    %3d/%s Fetch successful: %s (%s bytes)"
msgstr ""

#: ../satellite_tools/messages.py:75
#, python-format
msgid "    Extinct package:  %s"
msgstr ""

#: ../satellite_tools/messages.py:76
#, python-format
msgid "   Total size: %s"
msgstr ""

#: ../satellite_tools/messages.py:77
#, python-format
msgid "      Downloaded %s of %s. Estimated remaining time: %s"
msgstr ""

#: ../satellite_tools/messages.py:78
#, python-format
msgid "    Fetch unsuccessful: %s"
msgstr ""

#: ../satellite_tools/messages.py:79
#, python-format
msgid "   RPM fetch summary: %s"
msgstr ""

#: ../satellite_tools/messages.py:80
#, python-format
msgid "       success: %d"
msgstr ""

#: ../satellite_tools/messages.py:81
#, python-format
msgid "       failed:  %d"
msgstr ""

#: ../satellite_tools/messages.py:82
#, python-format
msgid "       extinct: %d"
msgstr ""

#: ../satellite_tools/messages.py:84
#, python-format
msgid "   Retrieving / parsing *relevant* package metadata: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:85
#, python-format
msgid "   Retrieving / parsing errata data: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:86
#, python-format
msgid "   Retrieving / parsing kickstart data: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:87
#, python-format
msgid "   Retrieving / parsing kickstart tree files: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:88
#, python-format
msgid "   Importing *relevant* package metadata: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:89
msgid "   * WARNING: this may be a slow process."
msgstr ""

#: ../satellite_tools/messages.py:90
msgid "Linking packages to channels"
msgstr ""

#: ../satellite_tools/messages.py:91
#, python-format
msgid "   Importing *relevant* errata: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:92
msgid "   No new kickstartable tree to import"
msgstr ""

#: ../satellite_tools/messages.py:93
#, python-format
msgid "Importing kickstartable trees (%d)"
msgstr ""

#: ../satellite_tools/messages.py:94
#, python-format
msgid "Imported kickstartable trees (%d)"
msgstr ""

#: ../satellite_tools/reposync.py:111 ../satellite_tools/satsync.py:439
msgid "+++ sending log as an email +++"
msgstr ""

#: ../satellite_tools/reposync.py:114
#, python-format
msgid "%s sync. report from %s"
msgstr ""

#: ../satellite_tools/reposync.py:124 ../satellite_tools/satsync.py:449
msgid "+++ email requested, but there is nothing to send +++"
msgstr ""

#: ../satellite_tools/rhn_satellite_activate.py:198
#, python-format
msgid ""
"\"%s\" (specified in commandline)\n"
"could not be opened and read:\n"
"%s"
msgstr ""

#: ../satellite_tools/rhn_satellite_activate.py:205
#, python-format
msgid ""
"\"%s\" could not be opened\n"
"and/or written to:\n"
"%s"
msgstr ""

#: ../satellite_tools/satsync.py:258
#, python-format
msgid "No handler for step %s"
msgstr ""

#. Try one more time - this time it should be faster since
#. everything should be cached
#: ../satellite_tools/satsync.py:270
msgid "Environment changed, trying again..."
msgstr ""

#: ../satellite_tools/satsync.py:277
msgid "ERROR: Encountered IntegrityError: \n"
msgstr ""

#: ../satellite_tools/satsync.py:285
msgid "Repeated failures"
msgstr ""

#: ../satellite_tools/satsync.py:290
#, python-format
msgid ""
"    Import complete:\n"
"        Begin time: %s\n"
"        End time:   %s\n"
"        Elapsed:    %s\n"
"          "
msgstr ""

#: ../satellite_tools/satsync.py:311
msgid "hours"
msgstr ""

#: ../satellite_tools/satsync.py:311
msgid "minutes"
msgstr ""

#: ../satellite_tools/satsync.py:311
msgid "seconds"
msgstr ""

#: ../satellite_tools/satsync.py:357
msgid ""
"ERROR: The dump is missing package data, use --no-rpms to skip this step or "
"fix the content to include package data."
msgstr ""

#. the orgs() method doesn't exist; that's fine we just
#. won't sync the orgs
#: ../satellite_tools/satsync.py:404
msgid "The SUSE Manager master does not support syncing orgs data."
msgstr ""

#: ../satellite_tools/satsync.py:404
msgid "Skipping..."
msgstr ""

#: ../satellite_tools/satsync.py:442
#, python-format
msgid "SUSE Manager Inter Server sync. report from %s"
msgstr ""

#: ../satellite_tools/satsync.py:521
msgid " - file-system synchronization"
msgstr ""

#: ../satellite_tools/satsync.py:533 ../satellite_tools/satsync.py:541
msgid " - live synchronization"
msgstr ""

#: ../satellite_tools/satsync.py:534
#, python-brace-format
msgid ""
"ERROR: Live content synchronizing with RHN Classic Hosted is no longer "
"supported.\n"
"Please use the cdn-sync command instead unless you are attempting to sync "
"from another {PRODUCT_NAME} via Inter-Server-Sync (ISS), or from local "
"content on disk via Channel Dump ISOs."
msgstr ""

#: ../satellite_tools/satsync.py:542
#, python-format
msgid "   url: %s"
msgstr ""

#: ../satellite_tools/satsync.py:543
#, python-format
msgid "   debug/output level: %s"
msgstr ""

#: ../satellite_tools/satsync.py:553
msgid "ERROR: this server must be registered with SUSE Manager."
msgstr ""

#: ../satellite_tools/satsync.py:575
#, python-format
msgid "Retrieving / parsing %s data"
msgstr ""

#: ../satellite_tools/satsync.py:585 ../satellite_tools/satsync.py:600
msgid "*** SYSTEM INTERRUPT CALLED ***"
msgstr ""

#: ../satellite_tools/satsync.py:593
msgid "ERROR: fatal parser exception occurred "
msgstr ""

#: ../satellite_tools/satsync.py:594
#, python-format
msgid "(line: %s, col: %s msg: %s)"
msgstr ""

#: ../satellite_tools/satsync.py:598
#, python-format
msgid "ERROR: parser exception occurred: %s"
msgstr ""

#: ../satellite_tools/satsync.py:603
msgid "ERROR: exception (during parse) occurred: "
msgstr ""

#: ../satellite_tools/satsync.py:604
#, python-format
msgid ""
"   Encountered some errors with %s data (see logs (%s) for more information)"
msgstr ""

#: ../satellite_tools/satsync.py:606
#, python-format
msgid "   Encountered some errors with %s data:"
msgstr ""

#: ../satellite_tools/satsync.py:607
#, python-format
msgid "   ------- %s PARSE/IMPORT ERROR -------"
msgstr ""

#: ../satellite_tools/satsync.py:609
msgid "   ---------------------------------------"
msgstr ""

#: ../satellite_tools/satsync.py:612
#, python-format
msgid "%s data complete"
msgstr ""

#: ../satellite_tools/satsync.py:665
msgid "Retrieving / parsing channel data"
msgstr ""

#: ../satellite_tools/satsync.py:718
msgid "Channel data complete"
msgstr ""

#: ../satellite_tools/satsync.py:736
#, python-format
msgid "%10s import from %s"
msgstr ""

#: ../satellite_tools/satsync.py:739
#, python-format
msgid "%10s import from %s - %s"
msgstr ""

#: ../satellite_tools/satsync.py:743
#, python-format
msgid "%10s"
msgstr ""

#: ../satellite_tools/satsync.py:750
msgid "p"
msgstr ""

#: ../satellite_tools/satsync.py:752
msgid "."
msgstr ""

#: ../satellite_tools/satsync.py:758
msgid "   p = previously imported/synced channel"
msgstr ""

#: ../satellite_tools/satsync.py:759
msgid "   . = channel not yet imported/synced"
msgstr ""

#: ../satellite_tools/satsync.py:765
msgid "   e = channel no longer supported (end-of-service)"
msgstr ""

#: ../satellite_tools/satsync.py:767
msgid "   ? = channel label invalid --- typo?"
msgstr ""

#: ../satellite_tools/satsync.py:771
#, python-format
msgid "   %s:"
msgstr ""

#: ../satellite_tools/satsync.py:772
#, python-format
msgid "      %s %-40s %4s %s"
msgstr ""

#: ../satellite_tools/satsync.py:773
msgid "base-channels"
msgstr ""

#: ../satellite_tools/satsync.py:786 ../satellite_tools/satsync.py:1603
msgid "NONE RELEVANT"
msgstr ""

#: ../satellite_tools/satsync.py:808
msgid "end-of-service"
msgstr ""

#: ../satellite_tools/satsync.py:809
msgid "e"
msgstr ""

#: ../satellite_tools/satsync.py:815
msgid "   typos:"
msgstr ""

#: ../satellite_tools/satsync.py:816
msgid "?"
msgstr ""

#: ../satellite_tools/satsync.py:831
#, python-format
msgid "XXX: imported channels: %s"
msgstr ""

#: ../satellite_tools/satsync.py:832
#, python-format
msgid "XXX:   cached channels: %s"
msgstr ""

#: ../satellite_tools/satsync.py:837
msgid "XXX: list channels called"
msgstr ""

#: ../satellite_tools/satsync.py:855
msgid "ERROR: these channels either do not exist or are not available:"
msgstr ""

#: ../satellite_tools/satsync.py:859
#, python-format
msgid "       (to see a list of channel labels: %s --list-channels)"
msgstr ""

#: ../satellite_tools/satsync.py:904
#, python-format
msgid "   Retrieving / parsing short package metadata: %s (%s)"
msgstr ""

#: ../satellite_tools/satsync.py:965
#, python-format
msgid "Diffing package metadata (what's missing locally?): %s"
msgstr ""

#: ../satellite_tools/satsync.py:971 ../satellite_tools/satsync.py:1254
msgid "Diffing:    "
msgstr ""

#: ../satellite_tools/satsync.py:988
msgid "ERROR: incremental dump skipped"
msgstr ""

#: ../satellite_tools/satsync.py:1079
msgid "Downloading rpm packages"
msgstr ""

#: ../satellite_tools/satsync.py:1084
#, python-format
msgid "   Fetching any missing RPMs: %s (%s)"
msgstr ""

#: ../satellite_tools/satsync.py:1085 ../satellite_tools/satsync.py:1153
msgid "NONE MISSING"
msgstr ""

#: ../satellite_tools/satsync.py:1094
msgid "Processing rpm packages complete"
msgstr ""

#: ../satellite_tools/satsync.py:1121
msgid "Downloading package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1146
msgid "Downloading srpm packages"
msgstr ""

#: ../satellite_tools/satsync.py:1152
#, python-format
msgid "   Fetching any missing SRPMs: %s (%s)"
msgstr ""

#: ../satellite_tools/satsync.py:1249
#, python-format
msgid "Diffing source package metadata (what's missing locally?): %s"
msgstr ""

#: ../satellite_tools/satsync.py:1260
msgid "Downloading source package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1338 ../satellite_tools/satsync.py:2027
#, python-format
msgid "Unable to save file %s: %s"
msgstr ""

#. for
#. Retried a number of times and it still failed; log the
#. file as being failed and move on
#: ../satellite_tools/satsync.py:1345
#, python-format
msgid "Failed to fetch file %s"
msgstr ""

#: ../satellite_tools/satsync.py:1350
msgid "Downloading kickstartable trees metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1365
msgid "Downloading kickstartable trees files"
msgstr ""

#: ../satellite_tools/satsync.py:1504
#, python-format
msgid "Grabbing all patches for channel %s"
msgstr ""

#: ../satellite_tools/satsync.py:1554
msgid "Downloading patch data"
msgstr ""

#: ../satellite_tools/satsync.py:1556
msgid "Forcing download of all patch data for requested channels."
msgstr ""

#: ../satellite_tools/satsync.py:1571
msgid "Downloading patch data complete"
msgstr ""

#: ../satellite_tools/satsync.py:1576 ../satellite_tools/satsync.py:1597
msgid "Downloading:"
msgstr ""

#: ../satellite_tools/satsync.py:1579
msgid " - complete"
msgstr ""

#: ../satellite_tools/satsync.py:1624
msgid "Importing source package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1627
msgid "Importing package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1635
msgid "Importing:  "
msgstr ""

#. not in the cache
#: ../satellite_tools/satsync.py:1703
msgid ""
"Package Not Found in Cache, Clear the Cache "
"to                                  Regenerate it."
msgstr ""

#: ../satellite_tools/satsync.py:1709
msgid "Importing channel patches"
msgstr ""

#: ../satellite_tools/satsync.py:1714
#, python-format
msgid "Importing %s patches for channel %s."
msgstr ""

#. Incomplete configuration
#: ../satellite_tools/satsync.py:2113
msgid "ERROR: server.mount_point not set in the configuration file"
msgstr ""

#: ../satellite_tools/satsync.py:2117
#, python-format
msgid "ERROR: server.mount_point %s do not exist"
msgstr ""

#: ../satellite_tools/satsync.py:2122
#, python-format
msgid "ERROR: path under server.mount_point (%s)  do not exist"
msgstr ""

#: ../satellite_tools/satsync.py:2199
#, python-format
msgid "Commandline: %s"
msgstr ""

#: ../satellite_tools/satsync.py:2202
#, python-format
msgid ""
"DEBUG ONLY: max. batch-size for XML/database-import processing (1..%s).\"man "
"satellite-sync\" for more information."
msgstr ""

#: ../satellite_tools/satsync.py:2205
msgid "alternative SSL CA Cert (fullpath to cert file)"
msgstr ""

#: ../satellite_tools/satsync.py:2207
msgid "process data for this channel only"
msgstr ""

#: ../satellite_tools/satsync.py:2209
msgid ""
"disk dump will be considered to be a full export; see \"man satellite-sync\" "
"for more information."
msgstr ""

#: ../satellite_tools/satsync.py:2212
msgid "existing custom channels will also be synced (unless -c is used)"
msgstr ""

#: ../satellite_tools/satsync.py:2214
#, python-format
msgid ""
"override debug level set in /etc/rhn/rhn.conf (which is currently set at %s)."
msgstr ""

#: ../satellite_tools/satsync.py:2216
#, python-format
msgid "requested version of XML dump (default: %s)"
msgstr ""

#: ../satellite_tools/satsync.py:2218
msgid "e-mail a report of what was synced/imported"
msgstr ""

#: ../satellite_tools/satsync.py:2220
msgid "forcibly process all (not a diff of) patch metadata"
msgstr ""

#: ../satellite_tools/satsync.py:2222
msgid "Do not use an http proxy under any circumstances."
msgstr ""

#: ../satellite_tools/satsync.py:2224
msgid "alternative http proxy (hostname:port)"
msgstr ""

#: ../satellite_tools/satsync.py:2226
msgid "alternative http proxy username"
msgstr ""

#: ../satellite_tools/satsync.py:2228
msgid "alternative http proxy password"
msgstr ""

#: ../satellite_tools/satsync.py:2230
msgid "parent SUSE Manager to import content from"
msgstr ""

#: ../satellite_tools/satsync.py:2232
msgid "list all available channels and exit"
msgstr ""

#: ../satellite_tools/satsync.py:2234
msgid "help on all error codes mgr-inter-sync returns"
msgstr ""

#: ../satellite_tools/satsync.py:2236
msgid "source mount point for import - disk update only"
msgstr ""

#: ../satellite_tools/satsync.py:2238
msgid "do not process patch data"
msgstr ""

#: ../satellite_tools/satsync.py:2240
msgid "do not process kickstart data (provisioning only)"
msgstr ""

#: ../satellite_tools/satsync.py:2242
msgid "do not process full package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:2244
msgid "do not download, or process any RPMs"
msgstr ""

#: ../satellite_tools/satsync.py:2246
msgid "turn off SSL (not recommended)"
msgstr ""

#: ../satellite_tools/satsync.py:2248
msgid "org to which the sync imports data. defaults to the admin account"
msgstr ""

#: ../satellite_tools/satsync.py:2250
msgid "print the configuration and exit"
msgstr ""

#: ../satellite_tools/satsync.py:2252
msgid "alternative server with which to connect (hostname)"
msgstr ""

#: ../satellite_tools/satsync.py:2254
msgid "synchronize to this step (man satellite-sync for more info)"
msgstr ""

#: ../satellite_tools/satsync.py:2256
msgid "write complete data to tempfile before streaming to remainder of app"
msgstr ""

#: ../satellite_tools/satsync.py:2258
msgid "DEBUG ONLY: alternative path to digital system id"
msgstr ""

#: ../satellite_tools/satsync.py:2260
msgid "alternative email address(es) for sync output (--email option)"
msgstr ""

#: ../satellite_tools/satsync.py:2262
msgid "do not remove rpms when importing from local dump"
msgstr ""

#: ../satellite_tools/satsync.py:2264
msgid ""
"the fully qualified domain name of the master Satellite. Valid with --mount-"
"point only. Required if you want to import org data and channel permissions."
msgstr ""

#: ../satellite_tools/satsync.py:2274
#, python-format
msgid "ERROR: these arguments make no sense in this context (try --help): %s"
msgstr ""

#. An SQL error is fatal... crash and burn
#: ../satellite_tools/satsync.py:2286
#, python-format
msgid "ERROR: Can't connect to the database: %s"
msgstr ""

#: ../satellite_tools/satsync.py:2287
msgid "ERROR: Check if your database is running."
msgstr ""

#: ../satellite_tools/satsync.py:2322
#, python-format
msgid "ERROR: --debug-level takes an in integer value within the range %s."
msgstr ""

#: ../satellite_tools/satsync.py:2324
msgid "  0  - little logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2325
msgid "  1  - minimal logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2326
msgid "  2  - normal level of logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2327
msgid "  3  - lots of logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2328
msgid "  4+ - excessive logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2341
msgid "ERROR: The --master option is only valid with the --mount-point option"
msgstr ""

#: ../satellite_tools/satsync.py:2351
#, python-format
msgid "ERROR: Unable to lookup Org Id %s"
msgstr ""

#: ../satellite_tools/satsync.py:2360
msgid ""
"WARNING: --list-channels option overrides any --step option. --step ignored."
msgstr ""

#: ../satellite_tools/satsync.py:2375
#, python-format
msgid ""
"ERROR: '%s' is not a valid step. See 'man mgr-inter-sync' for more detail."
msgstr ""

#: ../satellite_tools/satsync.py:2407
msgid ""
"ERROR: No channels currently imported; try mgr-inter-sync --list-channels; "
"then mgr-inter-sync -c chn0 -c chn1..."
msgstr ""

#. int(None) --> TypeError
#. int('a')  --> ValueError
#: ../satellite_tools/satsync.py:2457 ../satellite_tools/satsync.py:2461
msgid "ERROR: --batch-size must have a value within the range: 1..50"
msgstr ""

#: ../satellite_tools/satsync.py:2469
#, python-format
msgid "ERROR: no such directory %s"
msgstr ""

#: ../satellite_tools/satsync.py:2474
msgid "Error Codes: Returned codes means:"
msgstr ""

#: ../satellite_tools/satsync.py:2475
msgid " -1  - Could not lock file or KeyboardInterrupt or SystemExit"
msgstr ""

#: ../satellite_tools/satsync.py:2476
msgid "  0  - User interrupted or intentional exit"
msgstr ""

#: ../satellite_tools/satsync.py:2477
msgid "  1  - attempting to run more than one instance of mgr-inter-sync."
msgstr ""

#: ../satellite_tools/satsync.py:2478
msgid "  2  - Unable to find synchronization tools."
msgstr ""

#: ../satellite_tools/satsync.py:2479
msgid "  3  - a general socket exception occurred"
msgstr ""

#: ../satellite_tools/satsync.py:2480
msgid "  4  - an SSL error occurred. Recheck your SSL settings."
msgstr ""

#: ../satellite_tools/satsync.py:2481
msgid "  5  - ISS error"
msgstr ""

#: ../satellite_tools/satsync.py:2482
msgid "  6  - unhandled exception occurred"
msgstr ""

#: ../satellite_tools/satsync.py:2483
msgid "  7  - unknown sync error"
msgstr ""

#: ../satellite_tools/satsync.py:2484
msgid "  8  - ERROR: must be root to execute"
msgstr ""

#: ../satellite_tools/satsync.py:2485
msgid "  9  - rpclib fault during synchronization init"
msgstr ""

#: ../satellite_tools/satsync.py:2486
msgid "  10 - synchronization init error"
msgstr ""

#: ../satellite_tools/satsync.py:2487
msgid "  11 - Error parsing XML stream"
msgstr ""

#: ../satellite_tools/satsync.py:2488
msgid "  12 - Channel do not exist"
msgstr ""

#: ../satellite_tools/satsync.py:2489
msgid "  13 - SQL error during importing package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:2490
msgid "  14 - SQL error during linking channel packages"
msgstr ""

#: ../satellite_tools/satsync.py:2491
msgid "  15 - SQL error during xml processing"
msgstr ""

#: ../satellite_tools/satsync.py:2492
msgid "  16 - server.mount_point not set in the configuration file"
msgstr ""

#: ../satellite_tools/satsync.py:2493
msgid ""
"  17 - SQL error during retrieving the channels already imported in the SUSE "
"Manager database"
msgstr ""

#: ../satellite_tools/satsync.py:2494
msgid "  18 - Wrong db connection string in rhn.conf"
msgstr ""

#: ../satellite_tools/satsync.py:2495
msgid "  19 - Bad arguments"
msgstr ""

#: ../satellite_tools/satsync.py:2496
msgid "  20 - Could not connect to db."
msgstr ""

#: ../satellite_tools/satsync.py:2497
msgid "  21 - Bad debug level"
msgstr ""

#: ../satellite_tools/satsync.py:2498
msgid "  22 - Not valid step"
msgstr ""

#: ../satellite_tools/satsync.py:2499
msgid "  24 - no such file"
msgstr ""

#: ../satellite_tools/satsync.py:2500
msgid "  25 - no such directory"
msgstr ""

#: ../satellite_tools/satsync.py:2501
msgid "  26 - mount_point does not exist"
msgstr ""

#: ../satellite_tools/satsync.py:2502
msgid "  27 - No such org"
msgstr ""

#: ../satellite_tools/satsync.py:2503
msgid "  28 - error: --master is only valid with --mount-point"
msgstr ""

#: ../satellite_tools/satsync.py:2510
#, python-format
msgid "ERROR: unknown dump version, try one of %s"
msgstr ""
  07070100000061000081B40000000000000000000000016290A0C10000B66B000000000000000000000000000000000000001B00000000spacewalk-backend/po/bs.po    # SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
#
# Translators:
msgid ""
msgstr ""
"Project-Id-Version: Spacewalk\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-10-16 13:34+0200\n"
"PO-Revision-Date: 2011-03-04 16:08+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Bosnian (http://www.transifex.com/projects/p/fedora/language/"
"bs/)\n"
"Language: bs\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"

#: ../server/apacheAuth.py:66
#, python-format
msgid "incomplete proxy authentication token: %s"
msgstr ""

#: ../server/apacheAuth.py:84
#, python-format
msgid "Sent proxy signature %s does not match ours %s."
msgstr ""

#: ../server/apacheAuth.py:119
msgid "declined proxy authentication"
msgstr ""

#: ../server/apacheRequest.py:59
#, python-format
msgid "Invalid request received (%s)."
msgstr ""

#: ../server/apacheRequest.py:120
#, python-format
msgid ""
"IMPORTANT MESSAGE FOLLOWS:\n"
"%s"
msgstr ""

#: ../server/apacheRequest.py:149
#, python-format
msgid ""
"While running '%s': caught\n"
"%s : %s\n"
msgstr ""

#: ../server/apacheRequest.py:606
#, python-format
msgid "Invalid URI %s"
msgstr ""

#: ../server/configFilesHandler.py:129 ../server/handlers/app/packages.py:192
#: ../server/handlers/xmlrpc/registration.py:215
#: ../server/handlers/xmlrpc/registration.py:1168
#: ../server/handlers/xmlrpc/registration.py:1307
#, python-format
msgid ""
"\n"
"                   %s Account has been deactivated on this server.\n"
"                   Please contact your Org administrator for more help."
msgstr ""

#: ../server/handlers/applet/applet.py:78
#, python-brace-format
msgid "Your system was not found in the {PRODUCT_NAME} database"
msgstr ""

#: ../server/handlers/sat/auth.py:45
msgid "ISS is disabled on this server."
msgstr ""

#: ../server/handlers/sat/auth.py:50
#, python-format
msgid "Server \"%s\" is not enabled for ISS."
msgstr ""

#: ../server/handlers/xmlrpc/errata.py:64
#, python-format
msgid "Expected a package name, not: %s"
msgstr ""

#: ../server/handlers/xmlrpc/errata.py:115
#, python-format
msgid "Expected a package, not: %s"
msgstr ""

#: ../server/handlers/xmlrpc/proxy.py:65
#, python-format
msgid "SUSE Manager Proxy service not enabled for server profile: \"%s\""
msgstr ""

#: ../server/handlers/xmlrpc/proxy.py:85
msgid "Invalid session key"
msgstr ""

#: ../server/handlers/xmlrpc/proxy.py:93
msgid "This server ID no longer exists"
msgstr ""

#: ../server/handlers/xmlrpc/queue.py:433
#, python-format
msgid "Invalid action value type %s (%s)"
msgstr ""

#: ../server/handlers/xmlrpc/queue.py:464
#, python-format
msgid "Action %s does not belong to server %s"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:194
msgid "Required data missing"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:198
msgid "Required members missing"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:207
msgid "Attempt to register a system to an invalid username"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:839
msgid "Invalid system release version requested"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1063
msgid ""
"Unable to find a valid network interface, both ipaddr and ip6addr not found."
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1115
#, python-brace-format
msgid "{PRODUCT_NAME} Welcome Message"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1125
msgid "Privacy Statement"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1146
msgid "Expected a dictionary as a product argument"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1374
#, python-format
msgid "Invalid value '%s' for %s (%s)"
msgstr ""

#: ../server/handlers/xmlrpc/scap.py:104
msgid "Invalid system_id/action_id pair."
msgstr ""

#: ../server/handlers/xmlrpc/up2date.py:233
#, python-format
msgid "Invalid value %s (%s)"
msgstr ""

#: ../server/importlib/userAuth.py:98
msgid "You are not authorized to manage packages in the null org"
msgstr ""

#: ../server/importlib/userAuth.py:103
#, python-format
msgid "You are not allowed to manage packages in the %s org"
msgstr ""

#: ../server/importlib/userAuth.py:121
msgid "You are not allowed to perform administrative tasks"
msgstr ""

#: ../server/importlib/userAuth.py:144
#, python-format
msgid ""
"You are not allowed to manage channel %s, or that channel does not exist"
msgstr ""

#: ../server/importlib/userAuth.py:204
#, python-format
msgid ""
"\n"
"               %s Account has been deactivated on this server.\n"
"               Please contact your Org administrator for more help."
msgstr ""

#: ../server/rhnChannel.py:1992
#, python-format
msgid ""
"Your account does not have access to any channels matching "
"(release='%(release)s', arch='%(arch)s')%(www_activation)s"
msgstr ""

#: ../server/rhnChannel.py:2002
msgid ""
"\n"
"If you have a registration number, please register with it first at http://"
"www.redhat.com/apps/activate/ and then try again.\n"
"\n"
msgstr ""

#: ../server/rhnChannel.py:2012
#, python-format
msgid "Insufficient subscription permissions for release (%s, %s"
msgstr ""

#. Various messages that can be reused
#.
#. bretm 02/07/2007 -- when we have better old-client documentation, probably
#. will be safe to get rid of all this crap
#: ../server/rhnChannel.py:2276 ../server/rhnChannel.py:2287
#: ../server/rhnChannel.py:2302
msgid "System Registered but Inactive"
msgstr ""

#: ../server/rhnChannel.py:2277
#, python-format
msgid ""
"\n"
"Invalid Architecture and OS release combination (%s, %s).\n"
"Your system has been registered, but will not receive updates\n"
"because it is not subscribed to a channel. If you have not yet\n"
"activated your product for service, please visit our website at:\n"
"\n"
"     http://www.redhat.com/apps/activate/\n"
"\n"
"...to activate your product."
msgstr ""

#: ../server/rhnChannel.py:2288
#, python-format
msgid ""
"\n"
"Invalid Architecture and OS release combination (%s, %s).\n"
"Your system has been registered, but will not receive updates\n"
"because it could not be subscribed to a base channel.\n"
"Please contact your organization administrator for assistance.\n"
msgstr ""

#: ../server/rhnChannel.py:2295
#, python-format
msgid ""
"\n"
"  This system has been successfully registered, but is not yet entitled\n"
"  to service.  To entitle this system to service, login to the web site at:\n"
"\n"
"  %(entitlement_url)s\n"
msgstr ""

#: ../server/rhnChannel.py:2303
#, python-format
msgid ""
"\n"
"  This system has been successfully registered, but no service entitlements\n"
"  were available.  To entitle this system to service, login to the web site "
"at:\n"
"\n"
"  %(entitlement_url)s\n"
msgstr ""

#: ../server/rhnHandler.py:62
msgid "Please run rhn_register as root on this client"
msgstr ""

#: ../server/rhnHandler.py:75
#, python-format
msgid "Service not enabled for system profile: \"%s\""
msgstr ""

#: ../server/rhnPackage.py:49 ../server/rhnPackage.py:87
#: ../server/rhnPackage.py:107 ../server/rhnPackage.py:158
#, python-format
msgid "Invalid RPM package %s requested"
msgstr ""

#: ../server/rhnPackage.py:112
msgid "Package not found"
msgstr ""

#: ../server/rhnServer/server_class.py:97
#, python-format
msgid "Architecture `%s' is not supported"
msgstr ""

#: ../server/rhnServer/server_token.py:78
#, python-format
msgid "Token `%s' has more than one base channel assigned"
msgstr ""

#: ../server/rhnServer/server_token.py:80
msgid "Conflicting base channels"
msgstr ""

#: ../server/rhnServer/server_token.py:190
#, python-format
msgid "Failed to add server to group %s"
msgstr ""

#: ../server/rhnServer/server_token.py:503
#, python-format
msgid "Maximum usage count of %s reached"
msgstr ""

#: ../server/rhnServer/server_token.py:744
msgid ""
"Stacking of re-registration tokens with different base entitlements is not "
"supported"
msgstr ""

#: ../server/rhnServer/server_token.py:811
#, python-format
msgid "Could not find token '%s'"
msgstr ""

#. Cannot use activation keys from different orgs
#: ../server/rhnServer/server_token.py:843
msgid "Tokens from mismatching orgs"
msgstr ""

#. Two tokens with different kickstart sessions
#: ../server/rhnServer/server_token.py:853
msgid "Kickstart session mismatch"
msgstr ""

#: ../server/rhnServer/server_token.py:877
msgid "Stacking of re-registration tokens is not supported"
msgstr ""

#: ../server/rhnUser.py:289 ../server/rhnUser.py:292
msgid "Invalid username/password combination"
msgstr ""

#. nope, not reserved either
#: ../server/rhnUser.py:467
#, python-format
msgid "Username `%s' has not been reserved"
msgstr ""

#. New accounts have to specify an e-mail address
#: ../server/rhnUser.py:473
msgid "E-mail address not specified"
msgstr ""

#: ../server/rhnUser.py:509
#, python-format
msgid "username should be at least %d characters"
msgstr ""

#: ../server/rhnUser.py:512
#, python-format
msgid "username should be less than %d characters"
msgstr ""

#: ../server/rhnUser.py:523
#, python-format
msgid "username = `%s', invalid character `%s'"
msgstr ""

#: ../server/rhnUser.py:542
#, python-format
msgid "Please limit your e-mail address to %s chars"
msgstr ""

#: ../server/rhnUser.py:623
#, python-format
msgid "password must be at least %d characters"
msgstr ""

#: ../server/rhnUser.py:626
#, python-format
msgid "Password must be shorter than %d characters"
msgstr ""

#: ../server/rhnUser.py:644
#, python-format
msgid "password contains character `%s'"
msgstr ""

#: ../server/rhnUser.py:651
#, python-format
msgid "username should be at least %d characters long"
msgstr ""

#: ../server/rhnUser.py:662
#, python-format
msgid "Cannot register usernames ending with %s"
msgstr ""

#. 0-999: Red Hat client/client-like interaction errors:
#: ../common/rhnException.py:53
msgid "This does not appear to be a valid username."
msgstr ""

#: ../common/rhnException.py:54
msgid "Invalid username and password combination."
msgstr ""

#: ../common/rhnException.py:55
msgid "This login is already taken, or the password is incorrect."
msgstr ""

#: ../common/rhnException.py:56
msgid "Permission denied."
msgstr ""

#: ../common/rhnException.py:57
msgid "Object not found."
msgstr ""

#: ../common/rhnException.py:58
msgid "Invalid System Digital ID."
msgstr ""

#: ../common/rhnException.py:59
msgid "Invalid System Credentials."
msgstr ""

#: ../common/rhnException.py:60
msgid "Could not retrieve user data from database."
msgstr ""

#: ../common/rhnException.py:61
msgid "Valid username required."
msgstr ""

#: ../common/rhnException.py:62
msgid "Valid password required."
msgstr ""

#: ../common/rhnException.py:63
msgid "Minimum username length violation."
msgstr ""

#: ../common/rhnException.py:64
msgid "Minimum password length violation."
msgstr ""

#: ../common/rhnException.py:65
msgid "The username contains invalid characters."
msgstr ""

#: ../common/rhnException.py:66
msgid "File not found."
msgstr ""

#: ../common/rhnException.py:67
msgid "Architecture and OS version combination is not supported."
msgstr ""

#: ../common/rhnException.py:68
msgid "Could not retrieve system data from database."
msgstr ""

#: ../common/rhnException.py:69
msgid "Invalid arguments passed to function."
msgstr ""

#: ../common/rhnException.py:70
msgid "Unable to retrieve requested entry."
msgstr ""

#: ../common/rhnException.py:71
msgid "Could not update database entry."
msgstr ""

#: ../common/rhnException.py:72
msgid "Unsupported server architecture."
msgstr ""

#: ../common/rhnException.py:73
#, python-format
msgid ""
"\n"
"     The anonymous server functionality is no longer available.\n"
"\n"
"     Please re-register this system by running mgr_register as root.\n"
"     Please visit https://%(hostname)s/rhn/systems/SystemEntitlements.do\n"
"     or login at https://%(hostname)s, and from the \"Overview\" tab,\n"
"     select \"Subscription Management\" to enable the service for this "
"system.\n"
"     "
msgstr ""

#: ../common/rhnException.py:81
msgid "Record not available in the database."
msgstr ""

#: ../common/rhnException.py:82
msgid "Invalid value for entry."
msgstr ""

#: ../common/rhnException.py:83
#, python-format
msgid ""
"\n"
"     This system does not have a valid entitlement for SUSE Manager.\n"
"     Please visit https://%(hostname)s/rhn/systems/SystemEntitlements.do\n"
"     or login at https://%(hostname)s, and from the \"Overview\" tab,\n"
"     select \"Subscription Management\" to enable the service for this "
"system.\n"
"     "
msgstr ""

#: ../common/rhnException.py:89
msgid "Channel error"
msgstr ""

#: ../common/rhnException.py:90
msgid "Client session token is invalid."
msgstr ""

#: ../common/rhnException.py:91
msgid "Client session token has expired."
msgstr ""

#: ../common/rhnException.py:92
msgid "You are not authorized to retrieve the requested object."
msgstr ""

#: ../common/rhnException.py:93
msgid "Invalid action"
msgstr ""

#: ../common/rhnException.py:94
msgid "You are not allowed to perform administrative tasks on this system."
msgstr ""

#: ../common/rhnException.py:96
msgid "The system is already subscribed to the specified channel."
msgstr ""

#: ../common/rhnException.py:97
msgid "The system is not currently subscribed to the specified channel."
msgstr ""

#: ../common/rhnException.py:98
msgid "The specified channel does not exist."
msgstr ""

#: ../common/rhnException.py:99
msgid "Invalid channel version."
msgstr ""

#: ../common/rhnException.py:100
msgid ""
"\n"
"     User group membership limits exceeded.\n"
"\n"
"     The current settings for your account do not allow you to add another\n"
"     user account. Please check with the organization administrator for "
"your\n"
"     account if the maximum number of users allowed to subscribe to server "
"needs\n"
"     to be changed.\n"
"     "
msgstr ""

#: ../common/rhnException.py:108
msgid ""
"\n"
"     System group membership limits exceeded.\n"
"\n"
"     The current settings for your account do not allow you to add another\n"
"     system profile. Please check with the organization administrator for "
"your\n"
"     account for modifying the maximum number of system profiles that can "
"be\n"
"     subscribed to your account.\n"
"     "
msgstr ""

#: ../common/rhnException.py:116
msgid ""
"\n"
"     Invalid architecture.\n"
"\n"
"     The architecture of the package is not supported by\n"
"     "
msgstr ""

#: ../common/rhnException.py:121
msgid "Invalid RPM header"
msgstr ""

#: ../common/rhnException.py:122
msgid ""
"\n"
"    This system is already registered as a Salt Minion. If you want to "
"register it as a traditional client\n"
"    please delete it first via the web UI or API and then register it using "
"the traditional tools.\n"
"    "
msgstr ""

#. For the uploading tools
#: ../common/rhnException.py:127
msgid "Invalid information uploaded to the server"
msgstr ""

#: ../common/rhnException.py:128
msgid "Error uploading network interfaces configuration."
msgstr ""

#: ../common/rhnException.py:129
msgid ""
"\n"
"     Package Upload Failed due to uniqueness constraint violation.\n"
"     Make sure the package does not have any duplicate dependencies or\n"
"     does not already exists on the server\n"
"     "
msgstr ""

#: ../common/rhnException.py:134
msgid ""
"\n"
"     The --force rhnpush option is disabled on this server.\n"
"     Please contact your SUSE Manager administrator for more help.\n"
"     "
msgstr ""

#. 60-70: token errors
#: ../common/rhnException.py:140
msgid ""
"\n"
"     The activation token specified could not be found on the server.\n"
"     Please retry with a valid key.\n"
"     "
msgstr ""

#: ../common/rhnException.py:144
msgid "Too many systems registered using this registration token"
msgstr ""

#: ../common/rhnException.py:145
msgid "Token contains invalid, obsoleted or insufficient settings"
msgstr ""

#: ../common/rhnException.py:146
msgid "Conflicting activation tokens"
msgstr ""

#. 70-80: channel subscription errors
#: ../common/rhnException.py:149
msgid ""
"\n"
"     No matching base channel found for your system.\n"
"     "
msgstr ""

#: ../common/rhnException.py:152
msgid ""
"\n"
"     You do not have subscription permission to the designated channel.\n"
"     Please refer to your organization's channel or organization\n"
"     administrators for further details.\n"
"     "
msgstr ""

#: ../common/rhnException.py:157
msgid "You can not unsubscribe from base channel."
msgstr ""

#: ../common/rhnException.py:158
msgid "SUSE Manager or Proxy channel can not be subscribed."
msgstr ""

#. 80-90: server group errors
#: ../common/rhnException.py:161
msgid "There was an error while trying to join the system to its groups"
msgstr ""

#. 90-100: entitlement errors
#: ../common/rhnException.py:164
msgid "Unable to entitle system"
msgstr ""

#. 100-109: e-mail and uuid related faults
#: ../common/rhnException.py:167
msgid "Maximum e-mail length violation."
msgstr ""

#: ../common/rhnException.py:168
msgid "This system has been previously registered."
msgstr ""

#: ../common/rhnException.py:169
msgid "Invalid username"
msgstr ""

#. 140-159 applet errors
#: ../common/rhnException.py:172
msgid "Unable to look up server"
msgstr ""

#. 160-179: OSAD errors
#: ../common/rhnException.py:175
msgid "Required argument is missing"
msgstr ""

#. 600-699: RHEL5+ EN errors
#: ../common/rhnException.py:178
msgid "No entitlement information tied to hardware"
msgstr ""

#: ../common/rhnException.py:179
msgid "Installation number is not entitling"
msgstr ""

#. 700-799: Additional user input verification errors.
#: ../common/rhnException.py:182
msgid "Maximum username length violation"
msgstr ""

#: ../common/rhnException.py:183
msgid "Maximum password length violation"
msgstr ""

#: ../common/rhnException.py:184
msgid "This user has read only API access. Action denied."
msgstr ""

#: ../common/rhnException.py:186
msgid "System Name cannot be less than 1 character"
msgstr ""

#. 1000-1999: Proxy specific errors:
#. issued by a Proxy to the client
#: ../common/rhnException.py:190
msgid "SUSE Manager Proxy error."
msgstr ""

#: ../common/rhnException.py:191
msgid "SUSE Manager Proxy unable to login."
msgstr ""

#. issued by a SUSE Manager Server/Satellite to the proxy
#: ../common/rhnException.py:193
msgid ""
"\n"
"     SUSE Manager Proxy system ID does not match a Spacewalk Proxy Server\n"
"     in the database.\n"
"     "
msgstr ""

#: ../common/rhnException.py:197
msgid "SUSE Manager Proxy session token is invalid."
msgstr ""

#: ../common/rhnException.py:198
msgid "SUSE Manager Proxy session token has expired."
msgstr ""

#. 2000-2999: Red Hat Satellite specific errors:
#: ../common/rhnException.py:202
msgid ""
"\n"
"      user creation is not allowed via mgr_register;\n"
"     please contact your sysadmin to have your account created.\n"
"     "
msgstr ""

#: ../common/rhnException.py:206
msgid ""
"\n"
"     This SUSE Manager server is not allowed to use Inter Server Sync on "
"this server\n"
"     "
msgstr ""

#: ../common/rhnException.py:209
msgid ""
"\n"
"     Inter Server Sync is disabled on this SUSE Manager Server.\n"
"     "
msgstr ""

#. 3000-3999: XML dumper errors:
#: ../common/rhnException.py:214
msgid "Invalid datatype passed"
msgstr ""

#: ../common/rhnException.py:215
msgid "Unable to retrieve channel"
msgstr ""

#: ../common/rhnException.py:216
msgid "Unable to retrieve package"
msgstr ""

#: ../common/rhnException.py:217
msgid "Unable to retrieve erratum"
msgstr ""

#: ../common/rhnException.py:218
msgid "File is missing"
msgstr ""

#: ../common/rhnException.py:219
msgid "Function retrieval error"
msgstr ""

#: ../common/rhnException.py:220
msgid "Function execution error"
msgstr ""

#: ../common/rhnException.py:221
msgid "Missing version string"
msgstr ""

#: ../common/rhnException.py:222
msgid "Invalid version string"
msgstr ""

#: ../common/rhnException.py:223
msgid "Mismatching versions"
msgstr ""

#: ../common/rhnException.py:224
msgid "Invalid channel version"
msgstr ""

#: ../common/rhnException.py:225
msgid "No comps file for channel"
msgstr ""

#: ../common/rhnException.py:226
msgid "Unable to retrieve comps file"
msgstr ""

#. 4000 - 4999: config management errors
#: ../common/rhnException.py:229
msgid "Configuration action missing"
msgstr ""

#: ../common/rhnException.py:230
msgid "File too large"
msgstr ""

#: ../common/rhnException.py:231
msgid "File contains binary data"
msgstr ""

#: ../common/rhnException.py:232
msgid "Configuration channel is not empty"
msgstr ""

#: ../common/rhnException.py:233
msgid "Permission error"
msgstr ""

#: ../common/rhnException.py:234
msgid "Content missing for configuration file"
msgstr ""

#: ../common/rhnException.py:235
msgid "Template delimiters not specified"
msgstr ""

#: ../common/rhnException.py:236
msgid "Configuration channel does not exist"
msgstr ""

#: ../common/rhnException.py:237
msgid "Configuration channel already exists"
msgstr ""

#: ../common/rhnException.py:238
msgid "File missing from configuration channel"
msgstr ""

#: ../common/rhnException.py:239
msgid "Different revision of this file is uploaded"
msgstr ""

#: ../common/rhnException.py:240
msgid "File already uploaded to configuration channel"
msgstr ""

#: ../common/rhnException.py:241
msgid "File size exceeds remaining quota space"
msgstr ""

#: ../common/rhnException.py:242
msgid "Full path of file must be specified"
msgstr ""

#: ../common/rhnException.py:243
msgid "Invalid revision number"
msgstr ""

#: ../common/rhnException.py:244
msgid "Cannot compare files of different file type"
msgstr ""

#. 5000 - 5999: client content uploading errors
#. 5000 - 5099: crash reporting errors
#: ../common/rhnException.py:248
msgid "Crash information is invalid or incomplete"
msgstr ""

#: ../common/rhnException.py:249
msgid "Crash file information is invalid or incomplete"
msgstr ""

#: ../common/rhnException.py:250
msgid "Error composing crash directory path"
msgstr ""

#: ../common/rhnException.py:251
msgid "Error composing crash file path"
msgstr ""

#: ../common/rhnException.py:252 ../common/rhnException.py:259
msgid "Invalid content encoding"
msgstr ""

#: ../common/rhnException.py:253
msgid "Invalid crash name"
msgstr ""

#: ../common/rhnException.py:254
msgid "Crash reporting is disabled for this organization"
msgstr ""

#. 5100 - 5199: scap results reporting error
#: ../common/rhnException.py:256
msgid "SCAP results file transfer is invalid or incomplete"
msgstr ""

#: ../common/rhnException.py:257
msgid "Error composing directory path for detailed SCAP results"
msgstr ""

#: ../common/rhnException.py:258
msgid "Error composing file path for detailed SCAP results"
msgstr ""

#: ../common/rhnException.py:306
msgid ""
"\n"
"     An error has occurred while processing your request. If this problem\n"
"     persists please enter a bug report at scc.suse.com.\n"
"     If you choose to submit the bug report, please be sure to include\n"
"     details of what you were trying to do when this error occurred and\n"
"     details on how to reproduce this problem.\n"
msgstr ""

#: ../common/rhnException.py:358
#, python-format
msgid ""
"Error Message:\n"
"    %s\n"
msgstr ""

#: ../common/rhnException.py:360
#, python-format
msgid "Error Class Code: %s\n"
msgstr ""

#: ../common/rhnException.py:363
#, python-format
msgid "Error Class Info: %s\n"
msgstr ""

#: ../common/rhnException.py:365
#, python-format
msgid "Explanation: %s"
msgstr ""

#: ../common/rhnTB.py:205
#, python-format
msgid "ERROR: %s %s: %s"
msgstr ""

#: ../common/rhnTB.py:207
#, python-format
msgid "TRACEBACK: %s"
msgstr ""

#: ../satellite_tools/disk_dumper/iss.py:1294
#: ../satellite_tools/disk_dumper/iss.py:1298
#, python-format
msgid "format of %s should be at least YYYYMMDD.\n"
msgstr ""

#: ../satellite_tools/messages.py:26
#, python-format
msgid ""
"\n"
"ERROR: executing step %s. Error is:\n"
"%s\n"
msgstr ""

#: ../satellite_tools/messages.py:31
#, python-format
msgid ""
"\n"
"ERROR: there was a problem accessing the channel data from your temporary\n"
"       repository. Did you migrate all of the data from the channel ISOs\n"
"       do this directory? If so, please recheck the channels ISOs, ensure\n"
"       that you have them all, and then iteratively remount and repopulate\n"
"       the temporary repository (%s).\n"
msgstr ""

#: ../satellite_tools/messages.py:39
#, python-format
msgid ""
"\n"
"ERROR: there was a problem synchronizing the information.\n"
"       Error message: %s\n"
msgstr ""

#: ../satellite_tools/messages.py:44
#, python-format
msgid ""
"\n"
"ERROR: There was a problem communicating with the ISS Master.\n"
"       Depending on the specific error details, please review your "
"configuration,\n"
"       basic network connectivity, and/or name resolution, and try again.\n"
"       Error message: %s\n"
msgstr ""

#: ../satellite_tools/messages.py:51
#, python-format
msgid ""
"\n"
"ERROR: There was a problem communicating with the ISS Master.\n"
"       If the master satellite is older than v5.3, it does not have ISS "
"capability.\n"
"       Otherwise, depending on the specific error details, please review "
"your\n"
"       configuration, basic network connectivity, and/or name resolution, "
"and try again.\n"
"       Error message: %s\n"
msgstr ""

#: ../satellite_tools/messages.py:59
#, python-format
msgid ""
"\n"
"ERROR: a child-channel cannot be synced without its parent being synced as\n"
"       well. A parent needs to be either (a) previously synced or (b) "
"synced\n"
"       in tandem with the desired child-channel. Missing parents for this\n"
"       transaction:\n"
"       %s\n"
msgstr ""

#: ../satellite_tools/messages.py:67
#, python-format
msgid ""
"\n"
"ERROR: you are not entitled to sync a channel in this set of channels.\n"
"Please contact your SUSE Manager contact\n"
"%s"
msgstr ""

#: ../satellite_tools/messages.py:72
#, python-format
msgid "  ERROR: not enough free space (%s KB) on device."
msgstr ""

#: ../satellite_tools/messages.py:74
#, python-format
msgid "    %3d/%s Fetch successful: %s (%s bytes)"
msgstr ""

#: ../satellite_tools/messages.py:75
#, python-format
msgid "    Extinct package:  %s"
msgstr ""

#: ../satellite_tools/messages.py:76
#, python-format
msgid "   Total size: %s"
msgstr ""

#: ../satellite_tools/messages.py:77
#, python-format
msgid "      Downloaded %s of %s. Estimated remaining time: %s"
msgstr ""

#: ../satellite_tools/messages.py:78
#, python-format
msgid "    Fetch unsuccessful: %s"
msgstr ""

#: ../satellite_tools/messages.py:79
#, python-format
msgid "   RPM fetch summary: %s"
msgstr ""

#: ../satellite_tools/messages.py:80
#, python-format
msgid "       success: %d"
msgstr ""

#: ../satellite_tools/messages.py:81
#, python-format
msgid "       failed:  %d"
msgstr ""

#: ../satellite_tools/messages.py:82
#, python-format
msgid "       extinct: %d"
msgstr ""

#: ../satellite_tools/messages.py:84
#, python-format
msgid "   Retrieving / parsing *relevant* package metadata: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:85
#, python-format
msgid "   Retrieving / parsing errata data: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:86
#, python-format
msgid "   Retrieving / parsing kickstart data: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:87
#, python-format
msgid "   Retrieving / parsing kickstart tree files: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:88
#, python-format
msgid "   Importing *relevant* package metadata: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:89
msgid "   * WARNING: this may be a slow process."
msgstr ""

#: ../satellite_tools/messages.py:90
msgid "Linking packages to channels"
msgstr ""

#: ../satellite_tools/messages.py:91
#, python-format
msgid "   Importing *relevant* errata: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:92
msgid "   No new kickstartable tree to import"
msgstr ""

#: ../satellite_tools/messages.py:93
#, python-format
msgid "Importing kickstartable trees (%d)"
msgstr ""

#: ../satellite_tools/messages.py:94
#, python-format
msgid "Imported kickstartable trees (%d)"
msgstr ""

#: ../satellite_tools/reposync.py:111 ../satellite_tools/satsync.py:439
msgid "+++ sending log as an email +++"
msgstr ""

#: ../satellite_tools/reposync.py:114
#, python-format
msgid "%s sync. report from %s"
msgstr ""

#: ../satellite_tools/reposync.py:124 ../satellite_tools/satsync.py:449
msgid "+++ email requested, but there is nothing to send +++"
msgstr ""

#: ../satellite_tools/rhn_satellite_activate.py:198
#, python-format
msgid ""
"\"%s\" (specified in commandline)\n"
"could not be opened and read:\n"
"%s"
msgstr ""

#: ../satellite_tools/rhn_satellite_activate.py:205
#, python-format
msgid ""
"\"%s\" could not be opened\n"
"and/or written to:\n"
"%s"
msgstr ""

#: ../satellite_tools/satsync.py:258
#, python-format
msgid "No handler for step %s"
msgstr ""

#. Try one more time - this time it should be faster since
#. everything should be cached
#: ../satellite_tools/satsync.py:270
msgid "Environment changed, trying again..."
msgstr ""

#: ../satellite_tools/satsync.py:277
msgid "ERROR: Encountered IntegrityError: \n"
msgstr ""

#: ../satellite_tools/satsync.py:285
msgid "Repeated failures"
msgstr ""

#: ../satellite_tools/satsync.py:290
#, python-format
msgid ""
"    Import complete:\n"
"        Begin time: %s\n"
"        End time:   %s\n"
"        Elapsed:    %s\n"
"          "
msgstr ""

#: ../satellite_tools/satsync.py:311
msgid "hours"
msgstr ""

#: ../satellite_tools/satsync.py:311
msgid "minutes"
msgstr ""

#: ../satellite_tools/satsync.py:311
msgid "seconds"
msgstr ""

#: ../satellite_tools/satsync.py:357
msgid ""
"ERROR: The dump is missing package data, use --no-rpms to skip this step or "
"fix the content to include package data."
msgstr ""

#. the orgs() method doesn't exist; that's fine we just
#. won't sync the orgs
#: ../satellite_tools/satsync.py:404
msgid "The SUSE Manager master does not support syncing orgs data."
msgstr ""

#: ../satellite_tools/satsync.py:404
msgid "Skipping..."
msgstr ""

#: ../satellite_tools/satsync.py:442
#, python-format
msgid "SUSE Manager Inter Server sync. report from %s"
msgstr ""

#: ../satellite_tools/satsync.py:521
msgid " - file-system synchronization"
msgstr ""

#: ../satellite_tools/satsync.py:533 ../satellite_tools/satsync.py:541
msgid " - live synchronization"
msgstr ""

#: ../satellite_tools/satsync.py:534
#, python-brace-format
msgid ""
"ERROR: Live content synchronizing with RHN Classic Hosted is no longer "
"supported.\n"
"Please use the cdn-sync command instead unless you are attempting to sync "
"from another {PRODUCT_NAME} via Inter-Server-Sync (ISS), or from local "
"content on disk via Channel Dump ISOs."
msgstr ""

#: ../satellite_tools/satsync.py:542
#, python-format
msgid "   url: %s"
msgstr ""

#: ../satellite_tools/satsync.py:543
#, python-format
msgid "   debug/output level: %s"
msgstr ""

#: ../satellite_tools/satsync.py:553
msgid "ERROR: this server must be registered with SUSE Manager."
msgstr ""

#: ../satellite_tools/satsync.py:575
#, python-format
msgid "Retrieving / parsing %s data"
msgstr ""

#: ../satellite_tools/satsync.py:585 ../satellite_tools/satsync.py:600
msgid "*** SYSTEM INTERRUPT CALLED ***"
msgstr ""

#: ../satellite_tools/satsync.py:593
msgid "ERROR: fatal parser exception occurred "
msgstr ""

#: ../satellite_tools/satsync.py:594
#, python-format
msgid "(line: %s, col: %s msg: %s)"
msgstr ""

#: ../satellite_tools/satsync.py:598
#, python-format
msgid "ERROR: parser exception occurred: %s"
msgstr ""

#: ../satellite_tools/satsync.py:603
msgid "ERROR: exception (during parse) occurred: "
msgstr ""

#: ../satellite_tools/satsync.py:604
#, python-format
msgid ""
"   Encountered some errors with %s data (see logs (%s) for more information)"
msgstr ""

#: ../satellite_tools/satsync.py:606
#, python-format
msgid "   Encountered some errors with %s data:"
msgstr ""

#: ../satellite_tools/satsync.py:607
#, python-format
msgid "   ------- %s PARSE/IMPORT ERROR -------"
msgstr ""

#: ../satellite_tools/satsync.py:609
msgid "   ---------------------------------------"
msgstr ""

#: ../satellite_tools/satsync.py:612
#, python-format
msgid "%s data complete"
msgstr ""

#: ../satellite_tools/satsync.py:665
msgid "Retrieving / parsing channel data"
msgstr ""

#: ../satellite_tools/satsync.py:718
msgid "Channel data complete"
msgstr ""

#: ../satellite_tools/satsync.py:736
#, python-format
msgid "%10s import from %s"
msgstr ""

#: ../satellite_tools/satsync.py:739
#, python-format
msgid "%10s import from %s - %s"
msgstr ""

#: ../satellite_tools/satsync.py:743
#, python-format
msgid "%10s"
msgstr ""

#: ../satellite_tools/satsync.py:750
msgid "p"
msgstr ""

#: ../satellite_tools/satsync.py:752
msgid "."
msgstr ""

#: ../satellite_tools/satsync.py:758
msgid "   p = previously imported/synced channel"
msgstr ""

#: ../satellite_tools/satsync.py:759
msgid "   . = channel not yet imported/synced"
msgstr ""

#: ../satellite_tools/satsync.py:765
msgid "   e = channel no longer supported (end-of-service)"
msgstr ""

#: ../satellite_tools/satsync.py:767
msgid "   ? = channel label invalid --- typo?"
msgstr ""

#: ../satellite_tools/satsync.py:771
#, python-format
msgid "   %s:"
msgstr ""

#: ../satellite_tools/satsync.py:772
#, python-format
msgid "      %s %-40s %4s %s"
msgstr ""

#: ../satellite_tools/satsync.py:773
msgid "base-channels"
msgstr ""

#: ../satellite_tools/satsync.py:786 ../satellite_tools/satsync.py:1603
msgid "NONE RELEVANT"
msgstr ""

#: ../satellite_tools/satsync.py:808
msgid "end-of-service"
msgstr ""

#: ../satellite_tools/satsync.py:809
msgid "e"
msgstr ""

#: ../satellite_tools/satsync.py:815
msgid "   typos:"
msgstr ""

#: ../satellite_tools/satsync.py:816
msgid "?"
msgstr ""

#: ../satellite_tools/satsync.py:831
#, python-format
msgid "XXX: imported channels: %s"
msgstr ""

#: ../satellite_tools/satsync.py:832
#, python-format
msgid "XXX:   cached channels: %s"
msgstr ""

#: ../satellite_tools/satsync.py:837
msgid "XXX: list channels called"
msgstr ""

#: ../satellite_tools/satsync.py:855
msgid "ERROR: these channels either do not exist or are not available:"
msgstr ""

#: ../satellite_tools/satsync.py:859
#, python-format
msgid "       (to see a list of channel labels: %s --list-channels)"
msgstr ""

#: ../satellite_tools/satsync.py:904
#, python-format
msgid "   Retrieving / parsing short package metadata: %s (%s)"
msgstr ""

#: ../satellite_tools/satsync.py:965
#, python-format
msgid "Diffing package metadata (what's missing locally?): %s"
msgstr ""

#: ../satellite_tools/satsync.py:971 ../satellite_tools/satsync.py:1254
msgid "Diffing:    "
msgstr ""

#: ../satellite_tools/satsync.py:988
msgid "ERROR: incremental dump skipped"
msgstr ""

#: ../satellite_tools/satsync.py:1079
msgid "Downloading rpm packages"
msgstr ""

#: ../satellite_tools/satsync.py:1084
#, python-format
msgid "   Fetching any missing RPMs: %s (%s)"
msgstr ""

#: ../satellite_tools/satsync.py:1085 ../satellite_tools/satsync.py:1153
msgid "NONE MISSING"
msgstr ""

#: ../satellite_tools/satsync.py:1094
msgid "Processing rpm packages complete"
msgstr ""

#: ../satellite_tools/satsync.py:1121
msgid "Downloading package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1146
msgid "Downloading srpm packages"
msgstr ""

#: ../satellite_tools/satsync.py:1152
#, python-format
msgid "   Fetching any missing SRPMs: %s (%s)"
msgstr ""

#: ../satellite_tools/satsync.py:1249
#, python-format
msgid "Diffing source package metadata (what's missing locally?): %s"
msgstr ""

#: ../satellite_tools/satsync.py:1260
msgid "Downloading source package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1338 ../satellite_tools/satsync.py:2027
#, python-format
msgid "Unable to save file %s: %s"
msgstr ""

#. for
#. Retried a number of times and it still failed; log the
#. file as being failed and move on
#: ../satellite_tools/satsync.py:1345
#, python-format
msgid "Failed to fetch file %s"
msgstr ""

#: ../satellite_tools/satsync.py:1350
msgid "Downloading kickstartable trees metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1365
msgid "Downloading kickstartable trees files"
msgstr ""

#: ../satellite_tools/satsync.py:1504
#, python-format
msgid "Grabbing all patches for channel %s"
msgstr ""

#: ../satellite_tools/satsync.py:1554
msgid "Downloading patch data"
msgstr ""

#: ../satellite_tools/satsync.py:1556
msgid "Forcing download of all patch data for requested channels."
msgstr ""

#: ../satellite_tools/satsync.py:1571
msgid "Downloading patch data complete"
msgstr ""

#: ../satellite_tools/satsync.py:1576 ../satellite_tools/satsync.py:1597
msgid "Downloading:"
msgstr ""

#: ../satellite_tools/satsync.py:1579
msgid " - complete"
msgstr ""

#: ../satellite_tools/satsync.py:1624
msgid "Importing source package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1627
msgid "Importing package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1635
msgid "Importing:  "
msgstr ""

#. not in the cache
#: ../satellite_tools/satsync.py:1703
msgid ""
"Package Not Found in Cache, Clear the Cache "
"to                                  Regenerate it."
msgstr ""

#: ../satellite_tools/satsync.py:1709
msgid "Importing channel patches"
msgstr ""

#: ../satellite_tools/satsync.py:1714
#, python-format
msgid "Importing %s patches for channel %s."
msgstr ""

#. Incomplete configuration
#: ../satellite_tools/satsync.py:2113
msgid "ERROR: server.mount_point not set in the configuration file"
msgstr ""

#: ../satellite_tools/satsync.py:2117
#, python-format
msgid "ERROR: server.mount_point %s do not exist"
msgstr ""

#: ../satellite_tools/satsync.py:2122
#, python-format
msgid "ERROR: path under server.mount_point (%s)  do not exist"
msgstr ""

#: ../satellite_tools/satsync.py:2199
#, python-format
msgid "Commandline: %s"
msgstr ""

#: ../satellite_tools/satsync.py:2202
#, python-format
msgid ""
"DEBUG ONLY: max. batch-size for XML/database-import processing (1..%s).\"man "
"satellite-sync\" for more information."
msgstr ""

#: ../satellite_tools/satsync.py:2205
msgid "alternative SSL CA Cert (fullpath to cert file)"
msgstr ""

#: ../satellite_tools/satsync.py:2207
msgid "process data for this channel only"
msgstr ""

#: ../satellite_tools/satsync.py:2209
msgid ""
"disk dump will be considered to be a full export; see \"man satellite-sync\" "
"for more information."
msgstr ""

#: ../satellite_tools/satsync.py:2212
msgid "existing custom channels will also be synced (unless -c is used)"
msgstr ""

#: ../satellite_tools/satsync.py:2214
#, python-format
msgid ""
"override debug level set in /etc/rhn/rhn.conf (which is currently set at %s)."
msgstr ""

#: ../satellite_tools/satsync.py:2216
#, python-format
msgid "requested version of XML dump (default: %s)"
msgstr ""

#: ../satellite_tools/satsync.py:2218
msgid "e-mail a report of what was synced/imported"
msgstr ""

#: ../satellite_tools/satsync.py:2220
msgid "forcibly process all (not a diff of) patch metadata"
msgstr ""

#: ../satellite_tools/satsync.py:2222
msgid "Do not use an http proxy under any circumstances."
msgstr ""

#: ../satellite_tools/satsync.py:2224
msgid "alternative http proxy (hostname:port)"
msgstr ""

#: ../satellite_tools/satsync.py:2226
msgid "alternative http proxy username"
msgstr ""

#: ../satellite_tools/satsync.py:2228
msgid "alternative http proxy password"
msgstr ""

#: ../satellite_tools/satsync.py:2230
msgid "parent SUSE Manager to import content from"
msgstr ""

#: ../satellite_tools/satsync.py:2232
msgid "list all available channels and exit"
msgstr ""

#: ../satellite_tools/satsync.py:2234
msgid "help on all error codes mgr-inter-sync returns"
msgstr ""

#: ../satellite_tools/satsync.py:2236
msgid "source mount point for import - disk update only"
msgstr ""

#: ../satellite_tools/satsync.py:2238
msgid "do not process patch data"
msgstr ""

#: ../satellite_tools/satsync.py:2240
msgid "do not process kickstart data (provisioning only)"
msgstr ""

#: ../satellite_tools/satsync.py:2242
msgid "do not process full package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:2244
msgid "do not download, or process any RPMs"
msgstr ""

#: ../satellite_tools/satsync.py:2246
msgid "turn off SSL (not recommended)"
msgstr ""

#: ../satellite_tools/satsync.py:2248
msgid "org to which the sync imports data. defaults to the admin account"
msgstr ""

#: ../satellite_tools/satsync.py:2250
msgid "print the configuration and exit"
msgstr ""

#: ../satellite_tools/satsync.py:2252
msgid "alternative server with which to connect (hostname)"
msgstr ""

#: ../satellite_tools/satsync.py:2254
msgid "synchronize to this step (man satellite-sync for more info)"
msgstr ""

#: ../satellite_tools/satsync.py:2256
msgid "write complete data to tempfile before streaming to remainder of app"
msgstr ""

#: ../satellite_tools/satsync.py:2258
msgid "DEBUG ONLY: alternative path to digital system id"
msgstr ""

#: ../satellite_tools/satsync.py:2260
msgid "alternative email address(es) for sync output (--email option)"
msgstr ""

#: ../satellite_tools/satsync.py:2262
msgid "do not remove rpms when importing from local dump"
msgstr ""

#: ../satellite_tools/satsync.py:2264
msgid ""
"the fully qualified domain name of the master Satellite. Valid with --mount-"
"point only. Required if you want to import org data and channel permissions."
msgstr ""

#: ../satellite_tools/satsync.py:2274
#, python-format
msgid "ERROR: these arguments make no sense in this context (try --help): %s"
msgstr ""

#. An SQL error is fatal... crash and burn
#: ../satellite_tools/satsync.py:2286
#, python-format
msgid "ERROR: Can't connect to the database: %s"
msgstr ""

#: ../satellite_tools/satsync.py:2287
msgid "ERROR: Check if your database is running."
msgstr ""

#: ../satellite_tools/satsync.py:2322
#, python-format
msgid "ERROR: --debug-level takes an in integer value within the range %s."
msgstr ""

#: ../satellite_tools/satsync.py:2324
msgid "  0  - little logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2325
msgid "  1  - minimal logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2326
msgid "  2  - normal level of logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2327
msgid "  3  - lots of logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2328
msgid "  4+ - excessive logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2341
msgid "ERROR: The --master option is only valid with the --mount-point option"
msgstr ""

#: ../satellite_tools/satsync.py:2351
#, python-format
msgid "ERROR: Unable to lookup Org Id %s"
msgstr ""

#: ../satellite_tools/satsync.py:2360
msgid ""
"WARNING: --list-channels option overrides any --step option. --step ignored."
msgstr ""

#: ../satellite_tools/satsync.py:2375
#, python-format
msgid ""
"ERROR: '%s' is not a valid step. See 'man mgr-inter-sync' for more detail."
msgstr ""

#: ../satellite_tools/satsync.py:2407
msgid ""
"ERROR: No channels currently imported; try mgr-inter-sync --list-channels; "
"then mgr-inter-sync -c chn0 -c chn1..."
msgstr ""

#. int(None) --> TypeError
#. int('a')  --> ValueError
#: ../satellite_tools/satsync.py:2457 ../satellite_tools/satsync.py:2461
msgid "ERROR: --batch-size must have a value within the range: 1..50"
msgstr ""

#: ../satellite_tools/satsync.py:2469
#, python-format
msgid "ERROR: no such directory %s"
msgstr ""

#: ../satellite_tools/satsync.py:2474
msgid "Error Codes: Returned codes means:"
msgstr ""

#: ../satellite_tools/satsync.py:2475
msgid " -1  - Could not lock file or KeyboardInterrupt or SystemExit"
msgstr ""

#: ../satellite_tools/satsync.py:2476
msgid "  0  - User interrupted or intentional exit"
msgstr ""

#: ../satellite_tools/satsync.py:2477
msgid "  1  - attempting to run more than one instance of mgr-inter-sync."
msgstr ""

#: ../satellite_tools/satsync.py:2478
msgid "  2  - Unable to find synchronization tools."
msgstr ""

#: ../satellite_tools/satsync.py:2479
msgid "  3  - a general socket exception occurred"
msgstr ""

#: ../satellite_tools/satsync.py:2480
msgid "  4  - an SSL error occurred. Recheck your SSL settings."
msgstr ""

#: ../satellite_tools/satsync.py:2481
msgid "  5  - ISS error"
msgstr ""

#: ../satellite_tools/satsync.py:2482
msgid "  6  - unhandled exception occurred"
msgstr ""

#: ../satellite_tools/satsync.py:2483
msgid "  7  - unknown sync error"
msgstr ""

#: ../satellite_tools/satsync.py:2484
msgid "  8  - ERROR: must be root to execute"
msgstr ""

#: ../satellite_tools/satsync.py:2485
msgid "  9  - rpclib fault during synchronization init"
msgstr ""

#: ../satellite_tools/satsync.py:2486
msgid "  10 - synchronization init error"
msgstr ""

#: ../satellite_tools/satsync.py:2487
msgid "  11 - Error parsing XML stream"
msgstr ""

#: ../satellite_tools/satsync.py:2488
msgid "  12 - Channel do not exist"
msgstr ""

#: ../satellite_tools/satsync.py:2489
msgid "  13 - SQL error during importing package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:2490
msgid "  14 - SQL error during linking channel packages"
msgstr ""

#: ../satellite_tools/satsync.py:2491
msgid "  15 - SQL error during xml processing"
msgstr ""

#: ../satellite_tools/satsync.py:2492
msgid "  16 - server.mount_point not set in the configuration file"
msgstr ""

#: ../satellite_tools/satsync.py:2493
msgid ""
"  17 - SQL error during retrieving the channels already imported in the SUSE "
"Manager database"
msgstr ""

#: ../satellite_tools/satsync.py:2494
msgid "  18 - Wrong db connection string in rhn.conf"
msgstr ""

#: ../satellite_tools/satsync.py:2495
msgid "  19 - Bad arguments"
msgstr ""

#: ../satellite_tools/satsync.py:2496
msgid "  20 - Could not connect to db."
msgstr ""

#: ../satellite_tools/satsync.py:2497
msgid "  21 - Bad debug level"
msgstr ""

#: ../satellite_tools/satsync.py:2498
msgid "  22 - Not valid step"
msgstr ""

#: ../satellite_tools/satsync.py:2499
msgid "  24 - no such file"
msgstr ""

#: ../satellite_tools/satsync.py:2500
msgid "  25 - no such directory"
msgstr ""

#: ../satellite_tools/satsync.py:2501
msgid "  26 - mount_point does not exist"
msgstr ""

#: ../satellite_tools/satsync.py:2502
msgid "  27 - No such org"
msgstr ""

#: ../satellite_tools/satsync.py:2503
msgid "  28 - error: --master is only valid with --mount-point"
msgstr ""

#: ../satellite_tools/satsync.py:2510
#, python-format
msgid "ERROR: unknown dump version, try one of %s"
msgstr ""
 07070100000062000081B40000000000000000000000016290A0C10000C774000000000000000000000000000000000000001B00000000spacewalk-backend/po/ca.po    # Robert Antoni Buj Gelonch <rbuj@fedoraproject.org>, 2015. #zanata
# Jiri Dostal <jdostal@redhat.com>, 2018. #zanata
# Robert Antoni Buj Gelonch <rbuj@fedoraproject.org>, 2018. #zanata
msgid ""
msgstr ""
"Project-Id-Version: Spacewalk\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-10-16 13:34+0200\n"
"PO-Revision-Date: 2020-05-14 22:19+0000\n"
"Last-Translator: David Medina <medipas@gmail.com>\n"
"Language-Team: Catalan <https://l10n.opensuse.org/projects/uyuni/backend/ca/"
">\n"
"Language: ca\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 3.6.1\n"

#: ../server/apacheAuth.py:66
#, python-format
msgid "incomplete proxy authentication token: %s"
msgstr "testimoni incomplet del servidor intermediari: %s"

#: ../server/apacheAuth.py:84
#, python-format
msgid "Sent proxy signature %s does not match ours %s."
msgstr ""

#: ../server/apacheAuth.py:119
msgid "declined proxy authentication"
msgstr ""

#: ../server/apacheRequest.py:59
#, python-format
msgid "Invalid request received (%s)."
msgstr "Es va rebre una peticiÃ³ no vÃ lida (%s)."

#: ../server/apacheRequest.py:120
#, python-format
msgid ""
"IMPORTANT MESSAGE FOLLOWS:\n"
"%s"
msgstr ""
"MISSATGE IMPORTANT SEGÃœENT:\n"
"%s"

#: ../server/apacheRequest.py:149
#, python-format
msgid ""
"While running '%s': caught\n"
"%s : %s\n"
msgstr ""
"Mentre s'executava '%s': es va capturar\n"
"%s : %s\n"

#: ../server/apacheRequest.py:606
#, python-format
msgid "Invalid URI %s"
msgstr "L'URI %s no Ã©s vÃ lid"

#: ../server/configFilesHandler.py:129 ../server/handlers/app/packages.py:192
#: ../server/handlers/xmlrpc/registration.py:215
#: ../server/handlers/xmlrpc/registration.py:1168
#: ../server/handlers/xmlrpc/registration.py:1307
#, python-format
msgid ""
"\n"
"                   %s Account has been deactivated on this server.\n"
"                   Please contact your Org administrator for more help."
msgstr ""

#: ../server/handlers/applet/applet.py:78
#, python-brace-format
msgid "Your system was not found in the {PRODUCT_NAME} database"
msgstr ""

#: ../server/handlers/sat/auth.py:45
#, fuzzy
msgid "ISS is disabled on this server."
msgstr "ISS estÃ  inhabilitat en aquest satellite."

#: ../server/handlers/sat/auth.py:50
#, python-format
msgid "Server \"%s\" is not enabled for ISS."
msgstr "El servidor \"%s\" no estÃ  habilitat per a l'ISS."

#: ../server/handlers/xmlrpc/errata.py:64
#, python-format
msgid "Expected a package name, not: %s"
msgstr ""

#: ../server/handlers/xmlrpc/errata.py:115
#, python-format
msgid "Expected a package, not: %s"
msgstr "S'esperava un paquet, no: %s"

#: ../server/handlers/xmlrpc/proxy.py:65
#, python-format
msgid "SUSE Manager Proxy service not enabled for server profile: \"%s\""
msgstr ""

#: ../server/handlers/xmlrpc/proxy.py:85
msgid "Invalid session key"
msgstr "la clau de sessiÃ³ no Ã©s vÃ lida"

#: ../server/handlers/xmlrpc/proxy.py:93
msgid "This server ID no longer exists"
msgstr "Aquest id. de servidor ja no existeix"

#: ../server/handlers/xmlrpc/queue.py:433
#, python-format
msgid "Invalid action value type %s (%s)"
msgstr ""

#: ../server/handlers/xmlrpc/queue.py:464
#, python-format
msgid "Action %s does not belong to server %s"
msgstr "L'acciÃ³ %s no pertany al servidor %s"

#: ../server/handlers/xmlrpc/registration.py:194
msgid "Required data missing"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:198
msgid "Required members missing"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:207
msgid "Attempt to register a system to an invalid username"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:839
msgid "Invalid system release version requested"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1063
msgid ""
"Unable to find a valid network interface, both ipaddr and ip6addr not found."
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1115
#, python-brace-format
msgid "{PRODUCT_NAME} Welcome Message"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1125
#, fuzzy
msgid "Privacy Statement"
msgstr "DeclaraciÃ³ de privacitat de la Red Hat Network"

#: ../server/handlers/xmlrpc/registration.py:1146
msgid "Expected a dictionary as a product argument"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1374
#, python-format
msgid "Invalid value '%s' for %s (%s)"
msgstr ""

#: ../server/handlers/xmlrpc/scap.py:104
msgid "Invalid system_id/action_id pair."
msgstr ""

#: ../server/handlers/xmlrpc/up2date.py:233
#, python-format
msgid "Invalid value %s (%s)"
msgstr "Valor no vÃ lid %s (%s)"

#: ../server/importlib/userAuth.py:98
msgid "You are not authorized to manage packages in the null org"
msgstr "No esteu autoritzat per gestionar els paquets de l'organitzaciÃ³ nulÂ·la"

#: ../server/importlib/userAuth.py:103
#, python-format
msgid "You are not allowed to manage packages in the %s org"
msgstr "No esteu autoritzat per gestionar els paquets de l'organitzaciÃ³ %s"

#: ../server/importlib/userAuth.py:121
msgid "You are not allowed to perform administrative tasks"
msgstr "No esteu autoritzat per realitzar les tasques administratives"

#: ../server/importlib/userAuth.py:144
#, python-format
msgid ""
"You are not allowed to manage channel %s, or that channel does not exist"
msgstr ""
"No esteu autoritzat per gestionar el canal %s, o no existeix aquest canal"

#: ../server/importlib/userAuth.py:204
#, python-format
msgid ""
"\n"
"               %s Account has been deactivated on this server.\n"
"               Please contact your Org administrator for more help."
msgstr ""

#: ../server/rhnChannel.py:1992
#, python-format
msgid ""
"Your account does not have access to any channels matching "
"(release='%(release)s', arch='%(arch)s')%(www_activation)s"
msgstr ""

#: ../server/rhnChannel.py:2002
msgid ""
"\n"
"If you have a registration number, please register with it first at http://"
"www.redhat.com/apps/activate/ and then try again.\n"
"\n"
msgstr ""

#: ../server/rhnChannel.py:2012
#, python-format
msgid "Insufficient subscription permissions for release (%s, %s"
msgstr ""

#. Various messages that can be reused
#.
#. bretm 02/07/2007 -- when we have better old-client documentation, probably
#. will be safe to get rid of all this crap
#: ../server/rhnChannel.py:2276 ../server/rhnChannel.py:2287
#: ../server/rhnChannel.py:2302
msgid "System Registered but Inactive"
msgstr ""

#: ../server/rhnChannel.py:2277
#, python-format
msgid ""
"\n"
"Invalid Architecture and OS release combination (%s, %s).\n"
"Your system has been registered, but will not receive updates\n"
"because it is not subscribed to a channel. If you have not yet\n"
"activated your product for service, please visit our website at:\n"
"\n"
"     http://www.redhat.com/apps/activate/\n"
"\n"
"...to activate your product."
msgstr ""

#: ../server/rhnChannel.py:2288
#, python-format
msgid ""
"\n"
"Invalid Architecture and OS release combination (%s, %s).\n"
"Your system has been registered, but will not receive updates\n"
"because it could not be subscribed to a base channel.\n"
"Please contact your organization administrator for assistance.\n"
msgstr ""

#: ../server/rhnChannel.py:2295
#, python-format
msgid ""
"\n"
"  This system has been successfully registered, but is not yet entitled\n"
"  to service.  To entitle this system to service, login to the web site at:\n"
"\n"
"  %(entitlement_url)s\n"
msgstr ""

#: ../server/rhnChannel.py:2303
#, python-format
msgid ""
"\n"
"  This system has been successfully registered, but no service entitlements\n"
"  were available.  To entitle this system to service, login to the web site "
"at:\n"
"\n"
"  %(entitlement_url)s\n"
msgstr ""

#: ../server/rhnHandler.py:62
msgid "Please run rhn_register as root on this client"
msgstr "Si us plau, executeu rhn_register com a arrel en aquest client."

#: ../server/rhnHandler.py:75
#, python-format
msgid "Service not enabled for system profile: \"%s\""
msgstr ""

#: ../server/rhnPackage.py:49 ../server/rhnPackage.py:87
#: ../server/rhnPackage.py:107 ../server/rhnPackage.py:158
#, python-format
msgid "Invalid RPM package %s requested"
msgstr ""

#: ../server/rhnPackage.py:112
msgid "Package not found"
msgstr "Paquet no trobat"

#: ../server/rhnServer/server_class.py:97
#, python-format
msgid "Architecture `%s' is not supported"
msgstr ""

#: ../server/rhnServer/server_token.py:78
#, python-format
msgid "Token `%s' has more than one base channel assigned"
msgstr "El testimoni `%s' tÃ© mÃ©s d'un canal base assignat"

#: ../server/rhnServer/server_token.py:80
msgid "Conflicting base channels"
msgstr ""

#: ../server/rhnServer/server_token.py:190
#, python-format
msgid "Failed to add server to group %s"
msgstr ""

#: ../server/rhnServer/server_token.py:503
#, python-format
msgid "Maximum usage count of %s reached"
msgstr ""

#: ../server/rhnServer/server_token.py:744
msgid ""
"Stacking of re-registration tokens with different base entitlements is not "
"supported"
msgstr ""

#: ../server/rhnServer/server_token.py:811
#, python-format
msgid "Could not find token '%s'"
msgstr "No es va poder tovar el testimoni '%s'"

#. Cannot use activation keys from different orgs
#: ../server/rhnServer/server_token.py:843
msgid "Tokens from mismatching orgs"
msgstr ""

#. Two tokens with different kickstart sessions
#: ../server/rhnServer/server_token.py:853
msgid "Kickstart session mismatch"
msgstr ""

#: ../server/rhnServer/server_token.py:877
msgid "Stacking of re-registration tokens is not supported"
msgstr ""

#: ../server/rhnUser.py:289 ../server/rhnUser.py:292
msgid "Invalid username/password combination"
msgstr ""

#. nope, not reserved either
#: ../server/rhnUser.py:467
#, python-format
msgid "Username `%s' has not been reserved"
msgstr ""

#. New accounts have to specify an e-mail address
#: ../server/rhnUser.py:473
msgid "E-mail address not specified"
msgstr ""

#: ../server/rhnUser.py:509
#, python-format
msgid "username should be at least %d characters"
msgstr ""

#: ../server/rhnUser.py:512
#, python-format
msgid "username should be less than %d characters"
msgstr ""

#: ../server/rhnUser.py:523
#, python-format
msgid "username = `%s', invalid character `%s'"
msgstr ""

#: ../server/rhnUser.py:542
#, python-format
msgid "Please limit your e-mail address to %s chars"
msgstr ""

#: ../server/rhnUser.py:623
#, python-format
msgid "password must be at least %d characters"
msgstr ""

#: ../server/rhnUser.py:626
#, python-format
msgid "Password must be shorter than %d characters"
msgstr ""

#: ../server/rhnUser.py:644
#, python-format
msgid "password contains character `%s'"
msgstr ""

#: ../server/rhnUser.py:651
#, python-format
msgid "username should be at least %d characters long"
msgstr ""

#: ../server/rhnUser.py:662
#, python-format
msgid "Cannot register usernames ending with %s"
msgstr ""

#. 0-999: Red Hat client/client-like interaction errors:
#: ../common/rhnException.py:53
msgid "This does not appear to be a valid username."
msgstr ""

#: ../common/rhnException.py:54
msgid "Invalid username and password combination."
msgstr ""

#: ../common/rhnException.py:55
msgid "This login is already taken, or the password is incorrect."
msgstr ""

#: ../common/rhnException.py:56
msgid "Permission denied."
msgstr "PermÃ­s denegat."

#: ../common/rhnException.py:57
msgid "Object not found."
msgstr "Objecte no trobat."

#: ../common/rhnException.py:58
msgid "Invalid System Digital ID."
msgstr ""

#: ../common/rhnException.py:59
msgid "Invalid System Credentials."
msgstr ""

#: ../common/rhnException.py:60
msgid "Could not retrieve user data from database."
msgstr ""

#: ../common/rhnException.py:61
msgid "Valid username required."
msgstr "Es requereix un nom d'usuari vÃ lid."

#: ../common/rhnException.py:62
msgid "Valid password required."
msgstr "Es requereix una contrasenya vÃ lida."

#: ../common/rhnException.py:63
msgid "Minimum username length violation."
msgstr ""

#: ../common/rhnException.py:64
msgid "Minimum password length violation."
msgstr ""

#: ../common/rhnException.py:65
msgid "The username contains invalid characters."
msgstr "El nom d'usuari contÃ© carÃ cters no vÃ lids."

#: ../common/rhnException.py:66
msgid "File not found."
msgstr "Fitxer no trobat."

#: ../common/rhnException.py:67
msgid "Architecture and OS version combination is not supported."
msgstr ""

#: ../common/rhnException.py:68
msgid "Could not retrieve system data from database."
msgstr ""

#: ../common/rhnException.py:69
msgid "Invalid arguments passed to function."
msgstr ""

#: ../common/rhnException.py:70
msgid "Unable to retrieve requested entry."
msgstr ""

#: ../common/rhnException.py:71
msgid "Could not update database entry."
msgstr "No s'ha pogut actualitzar l'entrada de la base de dades."

#: ../common/rhnException.py:72
msgid "Unsupported server architecture."
msgstr "L'arquitectura del servidor no estÃ  admesa."

#: ../common/rhnException.py:73
#, python-format
msgid ""
"\n"
"     The anonymous server functionality is no longer available.\n"
"\n"
"     Please re-register this system by running mgr_register as root.\n"
"     Please visit https://%(hostname)s/rhn/systems/SystemEntitlements.do\n"
"     or login at https://%(hostname)s, and from the \"Overview\" tab,\n"
"     select \"Subscription Management\" to enable the service for this "
"system.\n"
"     "
msgstr ""

#: ../common/rhnException.py:81
msgid "Record not available in the database."
msgstr ""

#: ../common/rhnException.py:82
msgid "Invalid value for entry."
msgstr "Valor no vÃ lid per a l'entrada."

#: ../common/rhnException.py:83
#, python-format
msgid ""
"\n"
"     This system does not have a valid entitlement for SUSE Manager.\n"
"     Please visit https://%(hostname)s/rhn/systems/SystemEntitlements.do\n"
"     or login at https://%(hostname)s, and from the \"Overview\" tab,\n"
"     select \"Subscription Management\" to enable the service for this "
"system.\n"
"     "
msgstr ""

#: ../common/rhnException.py:89
msgid "Channel error"
msgstr "Error del canal"

#: ../common/rhnException.py:90
msgid "Client session token is invalid."
msgstr "El testimoni de la sessiÃ³ del client no Ã©s vÃ lid."

#: ../common/rhnException.py:91
msgid "Client session token has expired."
msgstr "El testimoni de la sessiÃ³ del client ha venÃ§ut."

#: ../common/rhnException.py:92
msgid "You are not authorized to retrieve the requested object."
msgstr ""

#: ../common/rhnException.py:93
msgid "Invalid action"
msgstr "AcciÃ³ no vÃ lida"

#: ../common/rhnException.py:94
msgid "You are not allowed to perform administrative tasks on this system."
msgstr ""
"No esteu autoritzat per realitzar les tasques administratives en aquest "
"sistema."

#: ../common/rhnException.py:96
msgid "The system is already subscribed to the specified channel."
msgstr "El sistema ja estÃ  subscrit al canal especificat."

#: ../common/rhnException.py:97
msgid "The system is not currently subscribed to the specified channel."
msgstr "El sistema actualment no estÃ  subscrit al canal especificat."

#: ../common/rhnException.py:98
msgid "The specified channel does not exist."
msgstr "El canal especificat no existeix."

#: ../common/rhnException.py:99
msgid "Invalid channel version."
msgstr "La versiÃ³ del canal no Ã©s vÃ lida."

#: ../common/rhnException.py:100
msgid ""
"\n"
"     User group membership limits exceeded.\n"
"\n"
"     The current settings for your account do not allow you to add another\n"
"     user account. Please check with the organization administrator for "
"your\n"
"     account if the maximum number of users allowed to subscribe to server "
"needs\n"
"     to be changed.\n"
"     "
msgstr ""

#: ../common/rhnException.py:108
msgid ""
"\n"
"     System group membership limits exceeded.\n"
"\n"
"     The current settings for your account do not allow you to add another\n"
"     system profile. Please check with the organization administrator for "
"your\n"
"     account for modifying the maximum number of system profiles that can "
"be\n"
"     subscribed to your account.\n"
"     "
msgstr ""

#: ../common/rhnException.py:116
#, fuzzy
msgid ""
"\n"
"     Invalid architecture.\n"
"\n"
"     The architecture of the package is not supported by\n"
"     "
msgstr ""
"\n"
"     Arquitectura no vÃ lida.\n"
"\n"
"     L'arquitectura del paquet no estÃ  admesa per la Red Hat Network\n"
"     "

#: ../common/rhnException.py:121
msgid "Invalid RPM header"
msgstr "CapÃ§alera RPM no vÃ lida"

#: ../common/rhnException.py:122
msgid ""
"\n"
"    This system is already registered as a Salt Minion. If you want to "
"register it as a traditional client\n"
"    please delete it first via the web UI or API and then register it using "
"the traditional tools.\n"
"    "
msgstr ""

#. For the uploading tools
#: ../common/rhnException.py:127
msgid "Invalid information uploaded to the server"
msgstr "InformaciÃ³ no vÃ lida pujada al servidor"

#: ../common/rhnException.py:128
msgid "Error uploading network interfaces configuration."
msgstr ""
"S'ha produÃ¯t un error en pujar la configuraciÃ³ de les interfÃ­cies de xarxa."

#: ../common/rhnException.py:129
msgid ""
"\n"
"     Package Upload Failed due to uniqueness constraint violation.\n"
"     Make sure the package does not have any duplicate dependencies or\n"
"     does not already exists on the server\n"
"     "
msgstr ""

#: ../common/rhnException.py:134
msgid ""
"\n"
"     The --force rhnpush option is disabled on this server.\n"
"     Please contact your SUSE Manager administrator for more help.\n"
"     "
msgstr ""

#. 60-70: token errors
#: ../common/rhnException.py:140
msgid ""
"\n"
"     The activation token specified could not be found on the server.\n"
"     Please retry with a valid key.\n"
"     "
msgstr ""

#: ../common/rhnException.py:144
msgid "Too many systems registered using this registration token"
msgstr ""
"Hi ha massa sistemes registrats que utilitzen aquest testimoni de "
"registrament"

#: ../common/rhnException.py:145
msgid "Token contains invalid, obsoleted or insufficient settings"
msgstr "El testimoni contÃ© ajustos no vÃ lids, en desÃºs i insuficients"

#: ../common/rhnException.py:146
msgid "Conflicting activation tokens"
msgstr "Conflicte en els testimonis d'activaciÃ³"

#. 70-80: channel subscription errors
#: ../common/rhnException.py:149
msgid ""
"\n"
"     No matching base channel found for your system.\n"
"     "
msgstr ""

#: ../common/rhnException.py:152
msgid ""
"\n"
"     You do not have subscription permission to the designated channel.\n"
"     Please refer to your organization's channel or organization\n"
"     administrators for further details.\n"
"     "
msgstr ""

#: ../common/rhnException.py:157
msgid "You can not unsubscribe from base channel."
msgstr "No us podeu de-subscriure del canal base."

#: ../common/rhnException.py:158
msgid "SUSE Manager or Proxy channel can not be subscribed."
msgstr ""

#. 80-90: server group errors
#: ../common/rhnException.py:161
msgid "There was an error while trying to join the system to its groups"
msgstr ""

#. 90-100: entitlement errors
#: ../common/rhnException.py:164
msgid "Unable to entitle system"
msgstr "No es pot donar el dret al sistema"

#. 100-109: e-mail and uuid related faults
#: ../common/rhnException.py:167
msgid "Maximum e-mail length violation."
msgstr ""

#: ../common/rhnException.py:168
msgid "This system has been previously registered."
msgstr ""

#: ../common/rhnException.py:169
msgid "Invalid username"
msgstr "El nom d'usuari no Ã©s vÃ lid"

#. 140-159 applet errors
#: ../common/rhnException.py:172
msgid "Unable to look up server"
msgstr ""

#. 160-179: OSAD errors
#: ../common/rhnException.py:175
msgid "Required argument is missing"
msgstr ""

#. 600-699: RHEL5+ EN errors
#: ../common/rhnException.py:178
msgid "No entitlement information tied to hardware"
msgstr ""

#: ../common/rhnException.py:179
msgid "Installation number is not entitling"
msgstr ""

#. 700-799: Additional user input verification errors.
#: ../common/rhnException.py:182
msgid "Maximum username length violation"
msgstr ""

#: ../common/rhnException.py:183
msgid "Maximum password length violation"
msgstr ""

#: ../common/rhnException.py:184
msgid "This user has read only API access. Action denied."
msgstr ""

#: ../common/rhnException.py:186
msgid "System Name cannot be less than 1 character"
msgstr ""

#. 1000-1999: Proxy specific errors:
#. issued by a Proxy to the client
#: ../common/rhnException.py:190
msgid "SUSE Manager Proxy error."
msgstr ""

#: ../common/rhnException.py:191
#, fuzzy
msgid "SUSE Manager Proxy unable to login."
msgstr "RHN Proxy va ser incapaÃ§ d'iniciar la sessiÃ³."

#. issued by a SUSE Manager Server/Satellite to the proxy
#: ../common/rhnException.py:193
msgid ""
"\n"
"     SUSE Manager Proxy system ID does not match a Spacewalk Proxy Server\n"
"     in the database.\n"
"     "
msgstr ""

#: ../common/rhnException.py:197
#, fuzzy
msgid "SUSE Manager Proxy session token is invalid."
msgstr "El testimoni de la sessiÃ³ del RHN Proxy no Ã©s vÃ lid."

#: ../common/rhnException.py:198
#, fuzzy
msgid "SUSE Manager Proxy session token has expired."
msgstr "El testimoni de la sessiÃ³ del RHN Proxy ha venÃ§ut."

#. 2000-2999: Red Hat Satellite specific errors:
#: ../common/rhnException.py:202
#, fuzzy
msgid ""
"\n"
"      user creation is not allowed via mgr_register;\n"
"     please contact your sysadmin to have your account created.\n"
"     "
msgstr ""
"\n"
"     La creaciÃ³ de l'usuari del RHN Satellite no estÃ  permesa a travÃ©s de "
"rhn_register;\n"
"     poseu-vos en contacte amb l'administrador del sistema perquÃ¨ creÃ¯ el "
"vostre compte.\n"
"     "

#: ../common/rhnException.py:206
#, fuzzy
msgid ""
"\n"
"     This SUSE Manager server is not allowed to use Inter Server Sync on "
"this server\n"
"     "
msgstr ""
"\n"
"     Aquest servidor de satellite no pot utilitzar la sincronitzaciÃ³ interna "
"entre els satellite en aquest satellite\n"
"     "

#: ../common/rhnException.py:209
#, fuzzy
msgid ""
"\n"
"     Inter Server Sync is disabled on this SUSE Manager Server.\n"
"     "
msgstr ""
"\n"
"     La sincronitzaciÃ³ interna entre els satellite estÃ  inhabilitada en "
"aquest satellite.\n"
"     "

#. 3000-3999: XML dumper errors:
#: ../common/rhnException.py:214
msgid "Invalid datatype passed"
msgstr "Es va passar un tipus de dades no vÃ lid"

#: ../common/rhnException.py:215
msgid "Unable to retrieve channel"
msgstr "No es pot recuperar el canal"

#: ../common/rhnException.py:216
msgid "Unable to retrieve package"
msgstr "No es pot recuperar el paquet"

#: ../common/rhnException.py:217
msgid "Unable to retrieve erratum"
msgstr "No es pot recuperar l'errata"

#: ../common/rhnException.py:218
msgid "File is missing"
msgstr "Falta el fitxer"

#: ../common/rhnException.py:219
msgid "Function retrieval error"
msgstr "Error en la recuperaciÃ³ de la funciÃ³"

#: ../common/rhnException.py:220
msgid "Function execution error"
msgstr "Error en l'execuciÃ³ de la funciÃ³"

#: ../common/rhnException.py:221
msgid "Missing version string"
msgstr "Falta la cadena de la versiÃ³"

#: ../common/rhnException.py:222
msgid "Invalid version string"
msgstr "La cadena de la versiÃ³ no Ã©s vÃ lida"

#: ../common/rhnException.py:223
msgid "Mismatching versions"
msgstr "Les versions no coincideixen"

#: ../common/rhnException.py:224
msgid "Invalid channel version"
msgstr "La versiÃ³ del canal no Ã©s vÃ lida"

#: ../common/rhnException.py:225
msgid "No comps file for channel"
msgstr "No hi ha el fitxer comps per al canal"

#: ../common/rhnException.py:226
msgid "Unable to retrieve comps file"
msgstr "No es pot recuperar el fitxer comps"

#. 4000 - 4999: config management errors
#: ../common/rhnException.py:229
msgid "Configuration action missing"
msgstr "Falta l'acciÃ³ de configuraciÃ³"

#: ../common/rhnException.py:230
msgid "File too large"
msgstr "El fitxer Ã©s massa gran"

#: ../common/rhnException.py:231
msgid "File contains binary data"
msgstr "El fitxer contÃ© dades binÃ ries"

#: ../common/rhnException.py:232
msgid "Configuration channel is not empty"
msgstr "El canal de configuraciÃ³ no estÃ  buit"

#: ../common/rhnException.py:233
msgid "Permission error"
msgstr "Error de permÃ­s"

#: ../common/rhnException.py:234
msgid "Content missing for configuration file"
msgstr "Falta contingut per al fitxer de configuraciÃ³"

#: ../common/rhnException.py:235
msgid "Template delimiters not specified"
msgstr ""

#: ../common/rhnException.py:236
msgid "Configuration channel does not exist"
msgstr "El canal de configuraciÃ³ no existeix"

#: ../common/rhnException.py:237
msgid "Configuration channel already exists"
msgstr "El canal de configuraciÃ³ ja existeix"

#: ../common/rhnException.py:238
msgid "File missing from configuration channel"
msgstr ""

#: ../common/rhnException.py:239
msgid "Different revision of this file is uploaded"
msgstr ""

#: ../common/rhnException.py:240
msgid "File already uploaded to configuration channel"
msgstr ""

#: ../common/rhnException.py:241
msgid "File size exceeds remaining quota space"
msgstr ""

#: ../common/rhnException.py:242
msgid "Full path of file must be specified"
msgstr ""

#: ../common/rhnException.py:243
msgid "Invalid revision number"
msgstr "El nÃºmero de revisiÃ³ no Ã©s vÃ lid"

#: ../common/rhnException.py:244
msgid "Cannot compare files of different file type"
msgstr "No es poden comparar els fitxers de diferent tipus de fitxer"

#. 5000 - 5999: client content uploading errors
#. 5000 - 5099: crash reporting errors
#: ../common/rhnException.py:248
msgid "Crash information is invalid or incomplete"
msgstr ""

#: ../common/rhnException.py:249
msgid "Crash file information is invalid or incomplete"
msgstr ""

#: ../common/rhnException.py:250
msgid "Error composing crash directory path"
msgstr ""

#: ../common/rhnException.py:251
msgid "Error composing crash file path"
msgstr ""

#: ../common/rhnException.py:252 ../common/rhnException.py:259
#, fuzzy
msgid "Invalid content encoding"
msgstr "El codi de l'element no Ã©s vÃ lid"

#: ../common/rhnException.py:253
#, fuzzy
msgid "Invalid crash name"
msgstr "El nom del paquet no Ã©s vÃ lid"

#: ../common/rhnException.py:254
msgid "Crash reporting is disabled for this organization"
msgstr ""

#. 5100 - 5199: scap results reporting error
#: ../common/rhnException.py:256
msgid "SCAP results file transfer is invalid or incomplete"
msgstr ""

#: ../common/rhnException.py:257
msgid "Error composing directory path for detailed SCAP results"
msgstr ""

#: ../common/rhnException.py:258
msgid "Error composing file path for detailed SCAP results"
msgstr ""

#: ../common/rhnException.py:306
msgid ""
"\n"
"     An error has occurred while processing your request. If this problem\n"
"     persists please enter a bug report at scc.suse.com.\n"
"     If you choose to submit the bug report, please be sure to include\n"
"     details of what you were trying to do when this error occurred and\n"
"     details on how to reproduce this problem.\n"
msgstr ""

#: ../common/rhnException.py:358
#, python-format
msgid ""
"Error Message:\n"
"    %s\n"
msgstr ""
"Missatge d'error:\n"
"    %s\n"

#: ../common/rhnException.py:360
#, python-format
msgid "Error Class Code: %s\n"
msgstr "Codi de la classe d'error: %s\n"

#: ../common/rhnException.py:363
#, python-format
msgid "Error Class Info: %s\n"
msgstr "InformaciÃ³ de la classe d'error: %s\n"

#: ../common/rhnException.py:365
#, python-format
msgid "Explanation: %s"
msgstr "ExplicaciÃ³: %s"

#: ../common/rhnTB.py:205
#, python-format
msgid "ERROR: %s %s: %s"
msgstr "ERROR: %s %s: %s"

#: ../common/rhnTB.py:207
#, python-format
msgid "TRACEBACK: %s"
msgstr ""

#: ../satellite_tools/disk_dumper/iss.py:1294
#: ../satellite_tools/disk_dumper/iss.py:1298
#, python-format
msgid "format of %s should be at least YYYYMMDD.\n"
msgstr ""

#: ../satellite_tools/messages.py:26
#, python-format
msgid ""
"\n"
"ERROR: executing step %s. Error is:\n"
"%s\n"
msgstr ""

#: ../satellite_tools/messages.py:31
#, python-format
msgid ""
"\n"
"ERROR: there was a problem accessing the channel data from your temporary\n"
"       repository. Did you migrate all of the data from the channel ISOs\n"
"       do this directory? If so, please recheck the channels ISOs, ensure\n"
"       that you have them all, and then iteratively remount and repopulate\n"
"       the temporary repository (%s).\n"
msgstr ""

#: ../satellite_tools/messages.py:39
#, python-format
msgid ""
"\n"
"ERROR: there was a problem synchronizing the information.\n"
"       Error message: %s\n"
msgstr ""

#: ../satellite_tools/messages.py:44
#, python-format
msgid ""
"\n"
"ERROR: There was a problem communicating with the ISS Master.\n"
"       Depending on the specific error details, please review your "
"configuration,\n"
"       basic network connectivity, and/or name resolution, and try again.\n"
"       Error message: %s\n"
msgstr ""

#: ../satellite_tools/messages.py:51
#, python-format
msgid ""
"\n"
"ERROR: There was a problem communicating with the ISS Master.\n"
"       If the master satellite is older than v5.3, it does not have ISS "
"capability.\n"
"       Otherwise, depending on the specific error details, please review "
"your\n"
"       configuration, basic network connectivity, and/or name resolution, "
"and try again.\n"
"       Error message: %s\n"
msgstr ""

#: ../satellite_tools/messages.py:59
#, python-format
msgid ""
"\n"
"ERROR: a child-channel cannot be synced without its parent being synced as\n"
"       well. A parent needs to be either (a) previously synced or (b) "
"synced\n"
"       in tandem with the desired child-channel. Missing parents for this\n"
"       transaction:\n"
"       %s\n"
msgstr ""

#: ../satellite_tools/messages.py:67
#, python-format
msgid ""
"\n"
"ERROR: you are not entitled to sync a channel in this set of channels.\n"
"Please contact your SUSE Manager contact\n"
"%s"
msgstr ""

#: ../satellite_tools/messages.py:72
#, python-format
msgid "  ERROR: not enough free space (%s KB) on device."
msgstr ""

#: ../satellite_tools/messages.py:74
#, python-format
msgid "    %3d/%s Fetch successful: %s (%s bytes)"
msgstr ""

#: ../satellite_tools/messages.py:75
#, fuzzy, python-format
msgid "    Extinct package:  %s"
msgstr "S'esperava un paquet, no: %s"

#: ../satellite_tools/messages.py:76
#, python-format
msgid "   Total size: %s"
msgstr ""

#: ../satellite_tools/messages.py:77
#, python-format
msgid "      Downloaded %s of %s. Estimated remaining time: %s"
msgstr ""

#: ../satellite_tools/messages.py:78
#, python-format
msgid "    Fetch unsuccessful: %s"
msgstr ""

#: ../satellite_tools/messages.py:79
#, python-format
msgid "   RPM fetch summary: %s"
msgstr ""

#: ../satellite_tools/messages.py:80
#, python-format
msgid "       success: %d"
msgstr ""

#: ../satellite_tools/messages.py:81
#, python-format
msgid "       failed:  %d"
msgstr ""

#: ../satellite_tools/messages.py:82
#, python-format
msgid "       extinct: %d"
msgstr ""

#: ../satellite_tools/messages.py:84
#, python-format
msgid "   Retrieving / parsing *relevant* package metadata: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:85
#, python-format
msgid "   Retrieving / parsing errata data: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:86
#, python-format
msgid "   Retrieving / parsing kickstart data: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:87
#, python-format
msgid "   Retrieving / parsing kickstart tree files: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:88
#, python-format
msgid "   Importing *relevant* package metadata: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:89
msgid "   * WARNING: this may be a slow process."
msgstr ""

#: ../satellite_tools/messages.py:90
msgid "Linking packages to channels"
msgstr ""

#: ../satellite_tools/messages.py:91
#, python-format
msgid "   Importing *relevant* errata: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:92
msgid "   No new kickstartable tree to import"
msgstr ""

#: ../satellite_tools/messages.py:93
#, python-format
msgid "Importing kickstartable trees (%d)"
msgstr ""

#: ../satellite_tools/messages.py:94
#, python-format
msgid "Imported kickstartable trees (%d)"
msgstr ""

#: ../satellite_tools/reposync.py:111 ../satellite_tools/satsync.py:439
msgid "+++ sending log as an email +++"
msgstr ""

#: ../satellite_tools/reposync.py:114
#, python-format
msgid "%s sync. report from %s"
msgstr ""

#: ../satellite_tools/reposync.py:124 ../satellite_tools/satsync.py:449
msgid "+++ email requested, but there is nothing to send +++"
msgstr ""

#: ../satellite_tools/rhn_satellite_activate.py:198
#, python-format
msgid ""
"\"%s\" (specified in commandline)\n"
"could not be opened and read:\n"
"%s"
msgstr ""

#: ../satellite_tools/rhn_satellite_activate.py:205
#, python-format
msgid ""
"\"%s\" could not be opened\n"
"and/or written to:\n"
"%s"
msgstr ""

#: ../satellite_tools/satsync.py:258
#, python-format
msgid "No handler for step %s"
msgstr ""

#. Try one more time - this time it should be faster since
#. everything should be cached
#: ../satellite_tools/satsync.py:270
msgid "Environment changed, trying again..."
msgstr ""

#: ../satellite_tools/satsync.py:277
msgid "ERROR: Encountered IntegrityError: \n"
msgstr ""

#: ../satellite_tools/satsync.py:285
msgid "Repeated failures"
msgstr ""

#: ../satellite_tools/satsync.py:290
#, python-format
msgid ""
"    Import complete:\n"
"        Begin time: %s\n"
"        End time:   %s\n"
"        Elapsed:    %s\n"
"          "
msgstr ""

#: ../satellite_tools/satsync.py:311
msgid "hours"
msgstr ""

#: ../satellite_tools/satsync.py:311
msgid "minutes"
msgstr ""

#: ../satellite_tools/satsync.py:311
msgid "seconds"
msgstr ""

#: ../satellite_tools/satsync.py:357
msgid ""
"ERROR: The dump is missing package data, use --no-rpms to skip this step or "
"fix the content to include package data."
msgstr ""

#. the orgs() method doesn't exist; that's fine we just
#. won't sync the orgs
#: ../satellite_tools/satsync.py:404
msgid "The SUSE Manager master does not support syncing orgs data."
msgstr ""

#: ../satellite_tools/satsync.py:404
msgid "Skipping..."
msgstr ""

#: ../satellite_tools/satsync.py:442
#, python-format
msgid "SUSE Manager Inter Server sync. report from %s"
msgstr ""

#: ../satellite_tools/satsync.py:521
msgid " - file-system synchronization"
msgstr ""

#: ../satellite_tools/satsync.py:533 ../satellite_tools/satsync.py:541
msgid " - live synchronization"
msgstr ""

#: ../satellite_tools/satsync.py:534
#, python-brace-format
msgid ""
"ERROR: Live content synchronizing with RHN Classic Hosted is no longer "
"supported.\n"
"Please use the cdn-sync command instead unless you are attempting to sync "
"from another {PRODUCT_NAME} via Inter-Server-Sync (ISS), or from local "
"content on disk via Channel Dump ISOs."
msgstr ""

#: ../satellite_tools/satsync.py:542
#, python-format
msgid "   url: %s"
msgstr ""

#: ../satellite_tools/satsync.py:543
#, python-format
msgid "   debug/output level: %s"
msgstr ""

#: ../satellite_tools/satsync.py:553
msgid "ERROR: this server must be registered with SUSE Manager."
msgstr ""

#: ../satellite_tools/satsync.py:575
#, python-format
msgid "Retrieving / parsing %s data"
msgstr ""

#: ../satellite_tools/satsync.py:585 ../satellite_tools/satsync.py:600
msgid "*** SYSTEM INTERRUPT CALLED ***"
msgstr ""

#: ../satellite_tools/satsync.py:593
msgid "ERROR: fatal parser exception occurred "
msgstr ""

#: ../satellite_tools/satsync.py:594
#, python-format
msgid "(line: %s, col: %s msg: %s)"
msgstr ""

#: ../satellite_tools/satsync.py:598
#, python-format
msgid "ERROR: parser exception occurred: %s"
msgstr ""

#: ../satellite_tools/satsync.py:603
msgid "ERROR: exception (during parse) occurred: "
msgstr ""

#: ../satellite_tools/satsync.py:604
#, python-format
msgid ""
"   Encountered some errors with %s data (see logs (%s) for more information)"
msgstr ""

#: ../satellite_tools/satsync.py:606
#, python-format
msgid "   Encountered some errors with %s data:"
msgstr ""

#: ../satellite_tools/satsync.py:607
#, python-format
msgid "   ------- %s PARSE/IMPORT ERROR -------"
msgstr ""

#: ../satellite_tools/satsync.py:609
msgid "   ---------------------------------------"
msgstr ""

#: ../satellite_tools/satsync.py:612
#, python-format
msgid "%s data complete"
msgstr ""

#: ../satellite_tools/satsync.py:665
msgid "Retrieving / parsing channel data"
msgstr ""

#: ../satellite_tools/satsync.py:718
msgid "Channel data complete"
msgstr ""

#: ../satellite_tools/satsync.py:736
#, python-format
msgid "%10s import from %s"
msgstr ""

#: ../satellite_tools/satsync.py:739
#, python-format
msgid "%10s import from %s - %s"
msgstr ""

#: ../satellite_tools/satsync.py:743
#, python-format
msgid "%10s"
msgstr ""

#: ../satellite_tools/satsync.py:750
msgid "p"
msgstr ""

#: ../satellite_tools/satsync.py:752
msgid "."
msgstr ""

#: ../satellite_tools/satsync.py:758
msgid "   p = previously imported/synced channel"
msgstr ""

#: ../satellite_tools/satsync.py:759
msgid "   . = channel not yet imported/synced"
msgstr ""

#: ../satellite_tools/satsync.py:765
msgid "   e = channel no longer supported (end-of-service)"
msgstr ""

#: ../satellite_tools/satsync.py:767
msgid "   ? = channel label invalid --- typo?"
msgstr ""

#: ../satellite_tools/satsync.py:771
#, python-format
msgid "   %s:"
msgstr ""

#: ../satellite_tools/satsync.py:772
#, python-format
msgid "      %s %-40s %4s %s"
msgstr ""

#: ../satellite_tools/satsync.py:773
msgid "base-channels"
msgstr ""

#: ../satellite_tools/satsync.py:786 ../satellite_tools/satsync.py:1603
msgid "NONE RELEVANT"
msgstr ""

#: ../satellite_tools/satsync.py:808
msgid "end-of-service"
msgstr ""

#: ../satellite_tools/satsync.py:809
msgid "e"
msgstr ""

#: ../satellite_tools/satsync.py:815
msgid "   typos:"
msgstr ""

#: ../satellite_tools/satsync.py:816
msgid "?"
msgstr ""

#: ../satellite_tools/satsync.py:831
#, python-format
msgid "XXX: imported channels: %s"
msgstr ""

#: ../satellite_tools/satsync.py:832
#, python-format
msgid "XXX:   cached channels: %s"
msgstr ""

#: ../satellite_tools/satsync.py:837
msgid "XXX: list channels called"
msgstr ""

#: ../satellite_tools/satsync.py:855
msgid "ERROR: these channels either do not exist or are not available:"
msgstr ""

#: ../satellite_tools/satsync.py:859
#, python-format
msgid "       (to see a list of channel labels: %s --list-channels)"
msgstr ""

#: ../satellite_tools/satsync.py:904
#, python-format
msgid "   Retrieving / parsing short package metadata: %s (%s)"
msgstr ""

#: ../satellite_tools/satsync.py:965
#, python-format
msgid "Diffing package metadata (what's missing locally?): %s"
msgstr ""

#: ../satellite_tools/satsync.py:971 ../satellite_tools/satsync.py:1254
msgid "Diffing:    "
msgstr ""

#: ../satellite_tools/satsync.py:988
msgid "ERROR: incremental dump skipped"
msgstr ""

#: ../satellite_tools/satsync.py:1079
msgid "Downloading rpm packages"
msgstr ""

#: ../satellite_tools/satsync.py:1084
#, python-format
msgid "   Fetching any missing RPMs: %s (%s)"
msgstr ""

#: ../satellite_tools/satsync.py:1085 ../satellite_tools/satsync.py:1153
msgid "NONE MISSING"
msgstr ""

#: ../satellite_tools/satsync.py:1094
msgid "Processing rpm packages complete"
msgstr ""

#: ../satellite_tools/satsync.py:1121
msgid "Downloading package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1146
msgid "Downloading srpm packages"
msgstr ""

#: ../satellite_tools/satsync.py:1152
#, python-format
msgid "   Fetching any missing SRPMs: %s (%s)"
msgstr ""

#: ../satellite_tools/satsync.py:1249
#, python-format
msgid "Diffing source package metadata (what's missing locally?): %s"
msgstr ""

#: ../satellite_tools/satsync.py:1260
msgid "Downloading source package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1338 ../satellite_tools/satsync.py:2027
#, fuzzy, python-format
msgid "Unable to save file %s: %s"
msgstr "No es pot donar el dret al sistema"

#. for
#. Retried a number of times and it still failed; log the
#. file as being failed and move on
#: ../satellite_tools/satsync.py:1345
#, python-format
msgid "Failed to fetch file %s"
msgstr ""

#: ../satellite_tools/satsync.py:1350
msgid "Downloading kickstartable trees metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1365
msgid "Downloading kickstartable trees files"
msgstr ""

#: ../satellite_tools/satsync.py:1504
#, python-format
msgid "Grabbing all patches for channel %s"
msgstr ""

#: ../satellite_tools/satsync.py:1554
msgid "Downloading patch data"
msgstr ""

#: ../satellite_tools/satsync.py:1556
msgid "Forcing download of all patch data for requested channels."
msgstr ""

#: ../satellite_tools/satsync.py:1571
msgid "Downloading patch data complete"
msgstr ""

#: ../satellite_tools/satsync.py:1576 ../satellite_tools/satsync.py:1597
msgid "Downloading:"
msgstr ""

#: ../satellite_tools/satsync.py:1579
msgid " - complete"
msgstr ""

#: ../satellite_tools/satsync.py:1624
msgid "Importing source package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1627
msgid "Importing package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1635
msgid "Importing:  "
msgstr ""

#. not in the cache
#: ../satellite_tools/satsync.py:1703
msgid ""
"Package Not Found in Cache, Clear the Cache "
"to                                  Regenerate it."
msgstr ""

#: ../satellite_tools/satsync.py:1709
msgid "Importing channel patches"
msgstr ""

#: ../satellite_tools/satsync.py:1714
#, python-format
msgid "Importing %s patches for channel %s."
msgstr ""

#. Incomplete configuration
#: ../satellite_tools/satsync.py:2113
msgid "ERROR: server.mount_point not set in the configuration file"
msgstr ""

#: ../satellite_tools/satsync.py:2117
#, python-format
msgid "ERROR: server.mount_point %s do not exist"
msgstr ""

#: ../satellite_tools/satsync.py:2122
#, python-format
msgid "ERROR: path under server.mount_point (%s)  do not exist"
msgstr ""

#: ../satellite_tools/satsync.py:2199
#, python-format
msgid "Commandline: %s"
msgstr ""

#: ../satellite_tools/satsync.py:2202
#, python-format
msgid ""
"DEBUG ONLY: max. batch-size for XML/database-import processing (1..%s).\"man "
"satellite-sync\" for more information."
msgstr ""

#: ../satellite_tools/satsync.py:2205
msgid "alternative SSL CA Cert (fullpath to cert file)"
msgstr ""

#: ../satellite_tools/satsync.py:2207
msgid "process data for this channel only"
msgstr ""

#: ../satellite_tools/satsync.py:2209
msgid ""
"disk dump will be considered to be a full export; see \"man satellite-sync\" "
"for more information."
msgstr ""

#: ../satellite_tools/satsync.py:2212
msgid "existing custom channels will also be synced (unless -c is used)"
msgstr ""

#: ../satellite_tools/satsync.py:2214
#, python-format
msgid ""
"override debug level set in /etc/rhn/rhn.conf (which is currently set at %s)."
msgstr ""

#: ../satellite_tools/satsync.py:2216
#, python-format
msgid "requested version of XML dump (default: %s)"
msgstr ""

#: ../satellite_tools/satsync.py:2218
msgid "e-mail a report of what was synced/imported"
msgstr ""

#: ../satellite_tools/satsync.py:2220
msgid "forcibly process all (not a diff of) patch metadata"
msgstr ""

#: ../satellite_tools/satsync.py:2222
msgid "Do not use an http proxy under any circumstances."
msgstr ""

#: ../satellite_tools/satsync.py:2224
msgid "alternative http proxy (hostname:port)"
msgstr ""

#: ../satellite_tools/satsync.py:2226
msgid "alternative http proxy username"
msgstr ""

#: ../satellite_tools/satsync.py:2228
msgid "alternative http proxy password"
msgstr ""

#: ../satellite_tools/satsync.py:2230
msgid "parent SUSE Manager to import content from"
msgstr ""

#: ../satellite_tools/satsync.py:2232
msgid "list all available channels and exit"
msgstr ""

#: ../satellite_tools/satsync.py:2234
msgid "help on all error codes mgr-inter-sync returns"
msgstr ""

#: ../satellite_tools/satsync.py:2236
msgid "source mount point for import - disk update only"
msgstr ""

#: ../satellite_tools/satsync.py:2238
msgid "do not process patch data"
msgstr ""

#: ../satellite_tools/satsync.py:2240
msgid "do not process kickstart data (provisioning only)"
msgstr ""

#: ../satellite_tools/satsync.py:2242
msgid "do not process full package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:2244
msgid "do not download, or process any RPMs"
msgstr ""

#: ../satellite_tools/satsync.py:2246
msgid "turn off SSL (not recommended)"
msgstr ""

#: ../satellite_tools/satsync.py:2248
msgid "org to which the sync imports data. defaults to the admin account"
msgstr ""

#: ../satellite_tools/satsync.py:2250
#, fuzzy
msgid "print the configuration and exit"
msgstr "El canal de configuraciÃ³ no existeix"

#: ../satellite_tools/satsync.py:2252
msgid "alternative server with which to connect (hostname)"
msgstr ""

#: ../satellite_tools/satsync.py:2254
msgid "synchronize to this step (man satellite-sync for more info)"
msgstr ""

#: ../satellite_tools/satsync.py:2256
msgid "write complete data to tempfile before streaming to remainder of app"
msgstr ""

#: ../satellite_tools/satsync.py:2258
msgid "DEBUG ONLY: alternative path to digital system id"
msgstr ""

#: ../satellite_tools/satsync.py:2260
msgid "alternative email address(es) for sync output (--email option)"
msgstr ""

#: ../satellite_tools/satsync.py:2262
msgid "do not remove rpms when importing from local dump"
msgstr ""

#: ../satellite_tools/satsync.py:2264
msgid ""
"the fully qualified domain name of the master Satellite. Valid with --mount-"
"point only. Required if you want to import org data and channel permissions."
msgstr ""

#: ../satellite_tools/satsync.py:2274
#, python-format
msgid "ERROR: these arguments make no sense in this context (try --help): %s"
msgstr ""

#. An SQL error is fatal... crash and burn
#: ../satellite_tools/satsync.py:2286
#, python-format
msgid "ERROR: Can't connect to the database: %s"
msgstr ""

#: ../satellite_tools/satsync.py:2287
msgid "ERROR: Check if your database is running."
msgstr ""

#: ../satellite_tools/satsync.py:2322
#, python-format
msgid "ERROR: --debug-level takes an in integer value within the range %s."
msgstr ""

#: ../satellite_tools/satsync.py:2324
msgid "  0  - little logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2325
msgid "  1  - minimal logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2326
msgid "  2  - normal level of logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2327
msgid "  3  - lots of logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2328
msgid "  4+ - excessive logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2341
msgid "ERROR: The --master option is only valid with the --mount-point option"
msgstr ""

#: ../satellite_tools/satsync.py:2351
#, python-format
msgid "ERROR: Unable to lookup Org Id %s"
msgstr ""

#: ../satellite_tools/satsync.py:2360
msgid ""
"WARNING: --list-channels option overrides any --step option. --step ignored."
msgstr ""

#: ../satellite_tools/satsync.py:2375
#, python-format
msgid ""
"ERROR: '%s' is not a valid step. See 'man mgr-inter-sync' for more detail."
msgstr ""

#: ../satellite_tools/satsync.py:2407
msgid ""
"ERROR: No channels currently imported; try mgr-inter-sync --list-channels; "
"then mgr-inter-sync -c chn0 -c chn1..."
msgstr ""

#. int(None) --> TypeError
#. int('a')  --> ValueError
#: ../satellite_tools/satsync.py:2457 ../satellite_tools/satsync.py:2461
msgid "ERROR: --batch-size must have a value within the range: 1..50"
msgstr ""

#: ../satellite_tools/satsync.py:2469
#, python-format
msgid "ERROR: no such directory %s"
msgstr ""

#: ../satellite_tools/satsync.py:2474
msgid "Error Codes: Returned codes means:"
msgstr ""

#: ../satellite_tools/satsync.py:2475
msgid " -1  - Could not lock file or KeyboardInterrupt or SystemExit"
msgstr ""

#: ../satellite_tools/satsync.py:2476
msgid "  0  - User interrupted or intentional exit"
msgstr ""

#: ../satellite_tools/satsync.py:2477
msgid "  1  - attempting to run more than one instance of mgr-inter-sync."
msgstr ""

#: ../satellite_tools/satsync.py:2478
msgid "  2  - Unable to find synchronization tools."
msgstr ""

#: ../satellite_tools/satsync.py:2479
msgid "  3  - a general socket exception occurred"
msgstr ""

#: ../satellite_tools/satsync.py:2480
msgid "  4  - an SSL error occurred. Recheck your SSL settings."
msgstr ""

#: ../satellite_tools/satsync.py:2481
msgid "  5  - ISS error"
msgstr ""

#: ../satellite_tools/satsync.py:2482
msgid "  6  - unhandled exception occurred"
msgstr ""

#: ../satellite_tools/satsync.py:2483
msgid "  7  - unknown sync error"
msgstr ""

#: ../satellite_tools/satsync.py:2484
msgid "  8  - ERROR: must be root to execute"
msgstr ""

#: ../satellite_tools/satsync.py:2485
msgid "  9  - rpclib fault during synchronization init"
msgstr ""

#: ../satellite_tools/satsync.py:2486
msgid "  10 - synchronization init error"
msgstr ""

#: ../satellite_tools/satsync.py:2487
msgid "  11 - Error parsing XML stream"
msgstr ""

#: ../satellite_tools/satsync.py:2488
#, fuzzy
msgid "  12 - Channel do not exist"
msgstr "El canal especificat no existeix."

#: ../satellite_tools/satsync.py:2489
msgid "  13 - SQL error during importing package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:2490
msgid "  14 - SQL error during linking channel packages"
msgstr ""

#: ../satellite_tools/satsync.py:2491
msgid "  15 - SQL error during xml processing"
msgstr ""

#: ../satellite_tools/satsync.py:2492
msgid "  16 - server.mount_point not set in the configuration file"
msgstr ""

#: ../satellite_tools/satsync.py:2493
msgid ""
"  17 - SQL error during retrieving the channels already imported in the SUSE "
"Manager database"
msgstr ""

#: ../satellite_tools/satsync.py:2494
msgid "  18 - Wrong db connection string in rhn.conf"
msgstr ""

#: ../satellite_tools/satsync.py:2495
msgid "  19 - Bad arguments"
msgstr ""

#: ../satellite_tools/satsync.py:2496
msgid "  20 - Could not connect to db."
msgstr ""

#: ../satellite_tools/satsync.py:2497
msgid "  21 - Bad debug level"
msgstr ""

#: ../satellite_tools/satsync.py:2498
msgid "  22 - Not valid step"
msgstr ""

#: ../satellite_tools/satsync.py:2499
msgid "  24 - no such file"
msgstr ""

#: ../satellite_tools/satsync.py:2500
msgid "  25 - no such directory"
msgstr ""

#: ../satellite_tools/satsync.py:2501
msgid "  26 - mount_point does not exist"
msgstr ""

#: ../satellite_tools/satsync.py:2502
msgid "  27 - No such org"
msgstr ""

#: ../satellite_tools/satsync.py:2503
msgid "  28 - error: --master is only valid with --mount-point"
msgstr ""

#: ../satellite_tools/satsync.py:2510
#, python-format
msgid "ERROR: unknown dump version, try one of %s"
msgstr ""

#~ msgid "ISS is disabled on this satellite."
#~ msgstr "ISS estÃ  inhabilitat en aquest satellite."

#, fuzzy
#~ msgid "Red Hat Satellite Welcome Message"
#~ msgstr "Missatge de benvinguda a la Red Hat Network"

#, fuzzy
#~ msgid "Red Hat Satellite Privacy Statement"
#~ msgstr "DeclaraciÃ³ de privacitat de la Red Hat Network"
07070100000063000081B40000000000000000000000016290A0C100011087000000000000000000000000000000000000001B00000000spacewalk-backend/po/cs.po    # SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
#
# Translators:
# Martin Minar <skulliq@gmail.com>, 2011.
# Milan Kerslager <kerslage@linux.cz>, 2002,2007.
# Miloslav Trmac <mitr@volny.cz>, 2002.
# Miroslav SuchÃ½ <msuchy@redhat.com>, 2011.
# Jiri Dostal <jdostal@redhat.com>, 2018. #zanata
msgid ""
msgstr ""
"Project-Id-Version: Spacewalk\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-10-16 13:34+0200\n"
"PO-Revision-Date: 2020-09-25 17:48+0000\n"
"Last-Translator: AleÅ¡ Kastner <alkas@volny.cz>\n"
"Language-Team: Czech <https://l10n.opensuse.org/projects/uyuni/backend/cs/>\n"
"Language: cs\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
"X-Generator: Weblate 3.6.1\n"

#: ../server/apacheAuth.py:66
#, python-format
msgid "incomplete proxy authentication token: %s"
msgstr "NeÃºplnÃ½ autentifikaÄnÃ­ token pro proxy: %s"

#: ../server/apacheAuth.py:84
#, python-format
msgid "Sent proxy signature %s does not match ours %s."
msgstr "ZaslanÃ½ podpis proxy %s neodpovÃ­dÃ¡ naÅ¡emu %s."

#: ../server/apacheAuth.py:119
msgid "declined proxy authentication"
msgstr "zamÃ­tnutÃ¡ proxy autentifikace"

#: ../server/apacheRequest.py:59
#, python-format
msgid "Invalid request received (%s)."
msgstr "NeplatnÃ¡ Å¾Ã¡dost (%s)."

#: ../server/apacheRequest.py:120
#, python-format
msgid ""
"IMPORTANT MESSAGE FOLLOWS:\n"
"%s"
msgstr ""
"DÅ®LEÅ½ITÃ‰ UPOZORNÄšNÃ:\n"
"%s"

#: ../server/apacheRequest.py:149
#, python-format
msgid ""
"While running '%s': caught\n"
"%s : %s\n"
msgstr ""
"PÅ™i bÄ›hu '%s': zachyceno\n"
"%s : %s\n"

#: ../server/apacheRequest.py:606
#, python-format
msgid "Invalid URI %s"
msgstr "NeplatnÃ© URI %s"

#: ../server/configFilesHandler.py:129 ../server/handlers/app/packages.py:192
#: ../server/handlers/xmlrpc/registration.py:215
#: ../server/handlers/xmlrpc/registration.py:1168
#: ../server/handlers/xmlrpc/registration.py:1307
#, python-format
msgid ""
"\n"
"                   %s Account has been deactivated on this server.\n"
"                   Please contact your Org administrator for more help."
msgstr ""
"\n"
"                   ÃšÄet %s byl na tomto serveru deaktivovÃ¡n.\n"
"                   Pro dalÅ¡Ã­ pomoc kontaktujte sprÃ¡vce svÃ© organizace."

#: ../server/handlers/applet/applet.py:78
#, python-brace-format
msgid "Your system was not found in the {PRODUCT_NAME} database"
msgstr "VÃ¡Å¡ systÃ©m nebyl v databÃ¡zi {PRODUCT_NAME} nalezen"

#: ../server/handlers/sat/auth.py:45
msgid "ISS is disabled on this server."
msgstr "ISS je na tomto serveru deaktivovÃ¡no."

#: ../server/handlers/sat/auth.py:50
#, python-format
msgid "Server \"%s\" is not enabled for ISS."
msgstr "Server \"%s\" nemÃ¡ povolen ISS."

#: ../server/handlers/xmlrpc/errata.py:64
#, python-format
msgid "Expected a package name, not: %s"
msgstr "OÄekÃ¡vÃ¡m jmÃ©no balÃ­ku, nikoliv \"%s\""

#: ../server/handlers/xmlrpc/errata.py:115
#, python-format
msgid "Expected a package, not: %s"
msgstr "OÄekÃ¡vÃ¡m balÃ­k, nikoliv \"%s\""

#: ../server/handlers/xmlrpc/proxy.py:65
#, python-format
msgid "SUSE Manager Proxy service not enabled for server profile: \"%s\""
msgstr "ServerovÃ½ profil \"%s\" nemÃ¡ aktivovÃ¡nu sluÅ¾bu SUSE Manager Proxy"

#: ../server/handlers/xmlrpc/proxy.py:85
msgid "Invalid session key"
msgstr "NeplatnÃ½ session key"

#: ../server/handlers/xmlrpc/proxy.py:93
msgid "This server ID no longer exists"
msgstr "Toto ID serveru jiÅ¾ neexistuje"

#: ../server/handlers/xmlrpc/queue.py:433
#, python-format
msgid "Invalid action value type %s (%s)"
msgstr "NeplatnÃ¡ hodnota operace typu %s (%s)"

#: ../server/handlers/xmlrpc/queue.py:464
#, python-format
msgid "Action %s does not belong to server %s"
msgstr "Operace %s nenÃ¡leÅ¾Ã­ k serveru %s"

#: ../server/handlers/xmlrpc/registration.py:194
msgid "Required data missing"
msgstr "ChybÃ­ poÅ¾adovanÃ¡ data"

#: ../server/handlers/xmlrpc/registration.py:198
msgid "Required members missing"
msgstr "ChybÃ­ poÅ¾adovanÃ­ Äleni"

#: ../server/handlers/xmlrpc/registration.py:207
msgid "Attempt to register a system to an invalid username"
msgstr "PokouÅ¡Ã­te se zaregistrovat systÃ©m na neexistujicÃ­ho uÅ¾ivate"

#: ../server/handlers/xmlrpc/registration.py:839
msgid "Invalid system release version requested"
msgstr "PoÅ¾adovÃ¡na neplatnÃ¡ release verze systÃ©mu"

#: ../server/handlers/xmlrpc/registration.py:1063
msgid ""
"Unable to find a valid network interface, both ipaddr and ip6addr not found."
msgstr ""
"Nelze najÃ­t platnÃ© sÃ­Å¥ovÃ© rozhranÃ­, ipaddr (IPv4) a ip6addr (IPv6) nebyly "
"nalezeny."

#: ../server/handlers/xmlrpc/registration.py:1115
#, python-brace-format
msgid "{PRODUCT_NAME} Welcome Message"
msgstr "UvÃ­tacÃ­ zprÃ¡va {PRODUCT_NAME}"

#: ../server/handlers/xmlrpc/registration.py:1125
msgid "Privacy Statement"
msgstr "ProhlÃ¡Å¡enÃ­ o ochranÄ› soukromÃ­"

#: ../server/handlers/xmlrpc/registration.py:1146
msgid "Expected a dictionary as a product argument"
msgstr "Jako argument u produktu je oÄekÃ¡vÃ¡n slovnÃ­k"

#: ../server/handlers/xmlrpc/registration.py:1374
#, python-format
msgid "Invalid value '%s' for %s (%s)"
msgstr "NeplatnÃ¡ hodnota '%s' pro %s (%s)"

#: ../server/handlers/xmlrpc/scap.py:104
msgid "Invalid system_id/action_id pair."
msgstr "NeplatnÃ½ pÃ¡r system_id/action_id."

#: ../server/handlers/xmlrpc/up2date.py:233
#, python-format
msgid "Invalid value %s (%s)"
msgstr "NeplatnÃ¡ hodnota %s (%s)"

#: ../server/importlib/userAuth.py:98
msgid "You are not authorized to manage packages in the null org"
msgstr "PrÃ¡zdnÃ¡ organizace nemÃ¡ prÃ¡vo spravovat balÃ­Äky"

#: ../server/importlib/userAuth.py:103
#, python-format
msgid "You are not allowed to manage packages in the %s org"
msgstr "NemÃ¡te prÃ¡vo spravovat balÃ­Äky v organizaci  %s"

#: ../server/importlib/userAuth.py:121
msgid "You are not allowed to perform administrative tasks"
msgstr "NemÃ¡te prÃ¡vo provÃ¡dÄ›t Ãºkoly sprÃ¡vy"

#: ../server/importlib/userAuth.py:144
#, python-format
msgid ""
"You are not allowed to manage channel %s, or that channel does not exist"
msgstr "NemÃ¡te prÃ¡vo spravovat kanÃ¡l %s, nebo takovÃ½ kanÃ¡l ani neexistuje"

#: ../server/importlib/userAuth.py:204
#, python-format
msgid ""
"\n"
"               %s Account has been deactivated on this server.\n"
"               Please contact your Org administrator for more help."
msgstr ""
"\n"
"               ÃšÄet %s byl na tomto serveru deaktivovÃ¡n.\n"
"               Pro dalÅ¡Ã­ pomoc kontaktujte sprÃ¡vce svÃ© organizace."

#: ../server/rhnChannel.py:1992
#, python-format
msgid ""
"Your account does not have access to any channels matching "
"(release='%(release)s', arch='%(arch)s')%(www_activation)s"
msgstr ""
"VÃ¡Å¡ systÃ©m nemÃ¡ pÅ™Ã­stup k Å¾Ã¡dnÃ½m kanÃ¡lÅ¯m pro (release='%(release)s', "
"arch='%(arch)s')%(www_activation)s"

#: ../server/rhnChannel.py:2002
msgid ""
"\n"
"If you have a registration number, please register with it first at http://"
"www.redhat.com/apps/activate/ and then try again.\n"
"\n"
msgstr ""
"\n"
"Pokud mÃ¡te registraÄnÃ­ ÄÃ­slo, tak se s nÃ­m nejdÅ™Ã­ve zaregistrujte na http://"
"www.redhat.com/apps/activate/ a pak to zkuste znova.\n"
"\n"

#: ../server/rhnChannel.py:2012
#, python-format
msgid "Insufficient subscription permissions for release (%s, %s"
msgstr "NedostateÄnÃ¡ subscription prÃ¡va pro release (%s, %s"

#. Various messages that can be reused
#.
#. bretm 02/07/2007 -- when we have better old-client documentation, probably
#. will be safe to get rid of all this crap
#: ../server/rhnChannel.py:2276 ../server/rhnChannel.py:2287
#: ../server/rhnChannel.py:2302
msgid "System Registered but Inactive"
msgstr "SystÃ©m je registrovÃ¡n, ale neaktivnÃ­"

#: ../server/rhnChannel.py:2277
#, python-format
msgid ""
"\n"
"Invalid Architecture and OS release combination (%s, %s).\n"
"Your system has been registered, but will not receive updates\n"
"because it is not subscribed to a channel. If you have not yet\n"
"activated your product for service, please visit our website at:\n"
"\n"
"     http://www.redhat.com/apps/activate/\n"
"\n"
"...to activate your product."
msgstr ""
"\n"
"NeplatnÃ¡ kombinace architektury a operaÄnÃ­ho systÃ©mu (%s, %s).\n"
"VÃ¡Å¡ systÃ©m byl sice zaregistrovÃ¡n, ale nebude dostÃ¡vat aktualizace,\n"
"protoÅ¾e nenÃ­ pÅ™ihlÃ¡Å¡en do Å¾Ã¡dnÃ©ho kanÃ¡lu.\n"
"Pokud jste jeÅ¡tÄ› svÅ¯j produkt neaktivovali, jdÄ›te na:\n"
"  \n"
"     http://www.redhat.com/apps/activate/\n"
"\n"
"...a aktivujte si ho."

#: ../server/rhnChannel.py:2288
#, python-format
msgid ""
"\n"
"Invalid Architecture and OS release combination (%s, %s).\n"
"Your system has been registered, but will not receive updates\n"
"because it could not be subscribed to a base channel.\n"
"Please contact your organization administrator for assistance.\n"
msgstr ""
"\n"
"NeplatnÃ¡ kombinace architektury a operaÄnÃ­ho systÃ©mu (%s, %s).\n"
"VÃ¡Å¡ systÃ©m byl sice zaregistrovÃ¡n, ale nebude dostÃ¡vat aktualizace,\n"
"protoÅ¾e nemÅ¯Å¾e bÃ½t pÅ™ihlÃ¡Å¡en do hlavnÃ­ho kanÃ¡lu.\n"
"Pro dalÅ¡Ã­ pomoc kontaktujte sprÃ¡vce vaÅ¡Ã­ organizace.\n"

#: ../server/rhnChannel.py:2295
#, python-format
msgid ""
"\n"
"  This system has been successfully registered, but is not yet entitled\n"
"  to service.  To entitle this system to service, login to the web site at:\n"
"\n"
"  %(entitlement_url)s\n"
msgstr ""
"\n"
"  SystÃ©m byl sice zaregistrovÃ¡n, ale jeÅ¡tÄ› nemÃ¡ povolenu\n"
"  sluÅ¾bu.  Pro povolenÃ­ sluÅ¾by se pÅ™ihlaste na webovÃ© strÃ¡nky na:\n"
"\n"
"  %(entitlement_url)s\n"

#: ../server/rhnChannel.py:2303
#, python-format
msgid ""
"\n"
"  This system has been successfully registered, but no service entitlements\n"
"  were available.  To entitle this system to service, login to the web site "
"at:\n"
"\n"
"  %(entitlement_url)s\n"
msgstr ""
"\n"
"  SystÃ©m byl sice zaregistrovÃ¡n, ale jeÅ¡tÄ› nemÄ›l k dispozici\n"
"  Å¾Ã¡dnÃ© povolenÃ© sluÅ¾by.  Pro povolenÃ­ sluÅ¾by se pÅ™ihlaste na webovÃ© strÃ¡nky "
"na:\n"
"\n"
"  %(entitlement_url)s\n"

#: ../server/rhnHandler.py:62
msgid "Please run rhn_register as root on this client"
msgstr "SpusÅ¥te prosÃ­m rhn_register jako superuÅ¾ivatel (root) tohoto klienta"

#: ../server/rhnHandler.py:75
#, python-format
msgid "Service not enabled for system profile: \"%s\""
msgstr "Tato sluÅ¾ba nenÃ­ aktivovÃ¡na pro systÃ©movÃ½ profil: \"%s\""

#: ../server/rhnPackage.py:49 ../server/rhnPackage.py:87
#: ../server/rhnPackage.py:107 ../server/rhnPackage.py:158
#, python-format
msgid "Invalid RPM package %s requested"
msgstr "Byl vyÅ¾Ã¡dÃ¡n neplatnÃ½ RPM balÃ­k %s"

#: ../server/rhnPackage.py:112
msgid "Package not found"
msgstr "BalÃ­k nenalezen"

#: ../server/rhnServer/server_class.py:97
#, python-format
msgid "Architecture `%s' is not supported"
msgstr "Architektura '%s' nenÃ­ podporovÃ¡na"

#: ../server/rhnServer/server_token.py:78
#, python-format
msgid "Token `%s' has more than one base channel assigned"
msgstr "Token `%s' mÃ¡ pÅ™iÅ™azen vÃ­ce jak jeden kanÃ¡l"

#: ../server/rhnServer/server_token.py:80
msgid "Conflicting base channels"
msgstr "Konflikt hlavnÃ­ch kanÃ¡lÅ¯"

#: ../server/rhnServer/server_token.py:190
#, python-format
msgid "Failed to add server to group %s"
msgstr "NepodaÅ™ilo se pÅ™idat server do skupiny %s"

#: ../server/rhnServer/server_token.py:503
#, python-format
msgid "Maximum usage count of %s reached"
msgstr "Bylo dosaÅ¾eno maximÃ¡lnÃ­ho poÄtu uÅ¾Ã­vÃ¡nÃ­ %s"

#: ../server/rhnServer/server_token.py:744
msgid ""
"Stacking of re-registration tokens with different base entitlements is not "
"supported"
msgstr ""
"SklÃ¡dÃ¡nÃ­ re-registraÄnÃ­ch tokenÅ¯ s povolenÃ­mi na rÅ¯znÃ© hlavnÃ­ kanÃ¡ly nenÃ­ "
"podporovÃ¡no"

#: ../server/rhnServer/server_token.py:811
#, python-format
msgid "Could not find token '%s'"
msgstr "NepodaÅ™ilo se nalÃ©zt token '%s'"

#. Cannot use activation keys from different orgs
#: ../server/rhnServer/server_token.py:843
msgid "Tokens from mismatching orgs"
msgstr "Tokeny jsou z neodpovÃ­dajÃ­cÃ­ch si organizacÃ­"

#. Two tokens with different kickstart sessions
#: ../server/rhnServer/server_token.py:853
msgid "Kickstart session mismatch"
msgstr "NesouhlasÃ­ session kickstartu"

#: ../server/rhnServer/server_token.py:877
msgid "Stacking of re-registration tokens is not supported"
msgstr "SÄÃ­tÃ¡nÃ­ re-registraÄnÃ­ch tokenÅ¯ nenÃ­ podporovÃ¡no"

#: ../server/rhnUser.py:289 ../server/rhnUser.py:292
msgid "Invalid username/password combination"
msgstr "NeplatnÃ¡ kombinace uÅ¾ivatelskÃ©ho jmÃ©na a hesla"

#. nope, not reserved either
#: ../server/rhnUser.py:467
#, python-format
msgid "Username `%s' has not been reserved"
msgstr "UÅ¾ivatelskÃ© jmÃ©no `%s' nebylo rezerovÃ¡no"

#. New accounts have to specify an e-mail address
#: ../server/rhnUser.py:473
msgid "E-mail address not specified"
msgstr "Nebyla udÃ¡na e-mailovÃ¡ adresa"

#: ../server/rhnUser.py:509
#, python-format
msgid "username should be at least %d characters"
msgstr "uÅ¾ivatelskÃ© jmÃ©no musÃ­ mÃ­t minimÃ¡lnÄ› %d znakÅ¯"

#: ../server/rhnUser.py:512
#, python-format
msgid "username should be less than %d characters"
msgstr "uÅ¾ivatelskÃ© jmÃ©no musÃ­ bÃ½t kratÅ¡Ã­, neÅ¾ %d znakÅ¯"

#: ../server/rhnUser.py:523
#, python-format
msgid "username = `%s', invalid character `%s'"
msgstr "uÅ¾ivatelskÃ© jmÃ©no = `%s' obsahuje neplatnÃ½ znak `%s'"

#: ../server/rhnUser.py:542
#, python-format
msgid "Please limit your e-mail address to %s chars"
msgstr "ProsÃ­m, omezte e-mail adresu na znaky %s"

#: ../server/rhnUser.py:623
#, python-format
msgid "password must be at least %d characters"
msgstr "heslo musÃ­ mÃ­t nejmÃ©nÄ› %d znakÅ¯"

#: ../server/rhnUser.py:626
#, python-format
msgid "Password must be shorter than %d characters"
msgstr "Heslo musÃ­ bÃ½t kratÅ¡Ã­, neÅ¾ %d znakÅ¯"

#: ../server/rhnUser.py:644
#, python-format
msgid "password contains character `%s'"
msgstr "heslo obsahuje znak `%s'"

#: ../server/rhnUser.py:651
#, python-format
msgid "username should be at least %d characters long"
msgstr "uÅ¾ivatelskÃ© jmÃ©no by mÄ›lo mÃ­t alespoÅˆ %d znakÅ¯"

#: ../server/rhnUser.py:662
#, python-format
msgid "Cannot register usernames ending with %s"
msgstr "Nelze registrovat uÅ¾ivatelskÃ¡ jmÃ©na konÄÃ­cÃ­ na %s"

#. 0-999: Red Hat client/client-like interaction errors:
#: ../common/rhnException.py:53
msgid "This does not appear to be a valid username."
msgstr "Toto asi nenÃ­ platnÃ© uÅ¾ivatelskÃ© jmÃ©no."

#: ../common/rhnException.py:54
msgid "Invalid username and password combination."
msgstr "NeplatnÃ¡ kombinace uÅ¾ivatelskÃ©ho jmÃ©na a hesla."

#: ../common/rhnException.py:55
msgid "This login is already taken, or the password is incorrect."
msgstr "Tento login je jiÅ¾ pouÅ¾Ã­vÃ¡n nebo je heslo neplatnÃ©."

#: ../common/rhnException.py:56
msgid "Permission denied."
msgstr "PÅ™Ã­stup odepÅ™en."

#: ../common/rhnException.py:57
msgid "Object not found."
msgstr "Objekt nenalezen."

#: ../common/rhnException.py:58
msgid "Invalid System Digital ID."
msgstr "NeplatnÃ© ID systÃ©mu."

#: ../common/rhnException.py:59
msgid "Invalid System Credentials."
msgstr "NeplatnÃ© pÅ™ihlaÅ¡ovacÃ­ Ãºdaje do systÃ©mu."

#: ../common/rhnException.py:60
msgid "Could not retrieve user data from database."
msgstr "NepodaÅ™ilo se z databÃ¡ze zÃ­skat uÅ¾ivatelskÃ¡ data."

#: ../common/rhnException.py:61
msgid "Valid username required."
msgstr "VyÅ¾adovÃ¡no platnÃ© uÅ¾ivatelskÃ© jmÃ©no."

#: ../common/rhnException.py:62
msgid "Valid password required."
msgstr "VyÅ¾adovÃ¡no platnÃ© heslo."

#: ../common/rhnException.py:63
msgid "Minimum username length violation."
msgstr "NedostateÄnÃ¡ dÃ©lka uÅ¾ivatelskÃ©ho jmÃ©na."

#: ../common/rhnException.py:64
msgid "Minimum password length violation."
msgstr "NedostateÄnÃ¡ dÃ©lka hesla."

#: ../common/rhnException.py:65
msgid "The username contains invalid characters."
msgstr "UÅ¾ivatelskÃ© jmÃ©no obsahuje nepovolenÃ© znaky."

#: ../common/rhnException.py:66
msgid "File not found."
msgstr "Soubor nenalezen."

#: ../common/rhnException.py:67
msgid "Architecture and OS version combination is not supported."
msgstr ""
"Tato kombinace architektury a verze operaÄnÃ­ho systÃ©mu nenÃ­ podporovÃ¡na."

#: ../common/rhnException.py:68
msgid "Could not retrieve system data from database."
msgstr "NepodaÅ™ilo se zÃ­skat systÃ©movÃ¡ data z databÃ¡ze."

#: ../common/rhnException.py:69
msgid "Invalid arguments passed to function."
msgstr "Funkci byly pÅ™edÃ¡ny neplatnÃ© argumenty."

#: ../common/rhnException.py:70
msgid "Unable to retrieve requested entry."
msgstr "NepodaÅ™ilo se zÃ­skat poÅ¾adovanÃ½ zÃ¡znam."

#: ../common/rhnException.py:71
msgid "Could not update database entry."
msgstr "NepodaÅ™ilo se aktualizovat zÃ¡znam v databÃ¡zi."

#: ../common/rhnException.py:72
msgid "Unsupported server architecture."
msgstr "NepodporovanÃ¡ architektura serveru."

#: ../common/rhnException.py:73
#, python-format
msgid ""
"\n"
"     The anonymous server functionality is no longer available.\n"
"\n"
"     Please re-register this system by running mgr_register as root.\n"
"     Please visit https://%(hostname)s/rhn/systems/SystemEntitlements.do\n"
"     or login at https://%(hostname)s, and from the \"Overview\" tab,\n"
"     select \"Subscription Management\" to enable the service for this "
"system.\n"
"     "
msgstr ""
"\n"
"     Funkce anonymnÃ­ho serveru jiÅ¾ nenÃ­ dostupnÃ¡.\n"
"\n"
"     Znovu se zaregistrujte jako superuÅ¾ivatel root pÅ™Ã­kazem mgr_register.\n"
"     NavÅ¡tivte https://%(hostname)s/rhn/systems/SystemEntitlements.do\n"
"     nebo se pÅ™ihlaste na https://%(hostname)s a na kartÄ› \"PÅ™ehled"
"\" (Overview),\n"
"     zvolte \"SprÃ¡vu pÅ™edplatnÃ½ch\" (Subscription Management)\n"
"     pro aktivaci sluÅ¾by pro tento systÃ©m.\n"
"     "

#: ../common/rhnException.py:81
msgid "Record not available in the database."
msgstr "Tento zÃ¡znam v databÃ¡zi neexistuje."

#: ../common/rhnException.py:82
msgid "Invalid value for entry."
msgstr "NeplatnÃ¡ hodnota zÃ¡znamu."

#: ../common/rhnException.py:83
#, python-format
msgid ""
"\n"
"     This system does not have a valid entitlement for SUSE Manager.\n"
"     Please visit https://%(hostname)s/rhn/systems/SystemEntitlements.do\n"
"     or login at https://%(hostname)s, and from the \"Overview\" tab,\n"
"     select \"Subscription Management\" to enable the service for this "
"system.\n"
"     "
msgstr ""
"\n"
"     Tento systÃ©m nemÃ¡ platnÃ© oprÃ¡vnÄ›nÃ­ pro SprÃ¡vce SUSE.\n"
"     NavÅ¡tivte https://%(hostname)s/rhn/systems/SystemEntitlements.do\n"
"     nebo se pÅ™ihlaste na https://%(hostname)s a na kartÄ› \"PÅ™ehled"
"\" (Overview)\n"
"     zvolte \"SprÃ¡vu pÅ™edplatnÃ½ch\" (Subscription Management),\n"
"     abyste si aktivovali sluÅ¾bu pro tento systÃ©m.\n"
"     "

#: ../common/rhnException.py:89
msgid "Channel error"
msgstr "Chyba kanÃ¡lu"

#: ../common/rhnException.py:90
msgid "Client session token is invalid."
msgstr "Session token klient je neplatnÃ½."

#: ../common/rhnException.py:91
msgid "Client session token has expired."
msgstr "Session token klienta vyprÅ¡el."

#: ../common/rhnException.py:92
msgid "You are not authorized to retrieve the requested object."
msgstr "NemÃ¡te oprÃ¡vnÄ›nÃ­ k vyzvednutÃ­ poÅ¾adovanÃ©ho objektu."

#: ../common/rhnException.py:93
msgid "Invalid action"
msgstr "NeplatnÃ¡ operace"

#: ../common/rhnException.py:94
msgid "You are not allowed to perform administrative tasks on this system."
msgstr "NemÃ¡te oprÃ¡vnÄ›nÃ­ spravovat tento systÃ©m."

#: ../common/rhnException.py:96
msgid "The system is already subscribed to the specified channel."
msgstr "Tento systÃ©m je jiÅ¾ pÅ™ihlÃ¡Å¡en do danÃ©ho kanÃ¡lu."

#: ../common/rhnException.py:97
msgid "The system is not currently subscribed to the specified channel."
msgstr "Tento systÃ©m nenÃ­ momentÃ¡lnÄ› pÅ™ihlÃ¡Å¡enÃ½ do danÃ©ho kanÃ¡lu."

#: ../common/rhnException.py:98
msgid "The specified channel does not exist."
msgstr "PoÅ¾adovanÃ½ kanÃ¡l neexistuje."

#: ../common/rhnException.py:99
msgid "Invalid channel version."
msgstr "NeplatnÃ¡ verze kanÃ¡lu."

#: ../common/rhnException.py:100
msgid ""
"\n"
"     User group membership limits exceeded.\n"
"\n"
"     The current settings for your account do not allow you to add another\n"
"     user account. Please check with the organization administrator for "
"your\n"
"     account if the maximum number of users allowed to subscribe to server "
"needs\n"
"     to be changed.\n"
"     "
msgstr ""
"\n"
"     PÅ™ekroÄeny limity ÄlenstvÃ­ ve skupinÄ› uÅ¾ivatelÅ¯.\n"
"\n"
"     AktuÃ¡lnÃ­ nastavenÃ­ ÃºÄtu neumoÅ¾Åˆuje pÅ™idat dalÅ¡Ã­ uÅ¾ivatelskÃ½ ÃºÄet. "
"Zkontrolujte\n"
"     prosÃ­m u sprÃ¡vce vaÅ¡Ã­ organizace ÃºÄet, zda maximÃ¡lnÃ­ poÄet uÅ¾ivatelÅ¯,\n"
"     kteÅ™Ã­ se mohou pÅ™ihlÃ¡sit k odbÄ›ru serverovÃ½ch potÅ™eb, mÃ¡ bÃ½t zmÄ›nÄ›n.\n"
"     "

#: ../common/rhnException.py:108
msgid ""
"\n"
"     System group membership limits exceeded.\n"
"\n"
"     The current settings for your account do not allow you to add another\n"
"     system profile. Please check with the organization administrator for "
"your\n"
"     account for modifying the maximum number of system profiles that can "
"be\n"
"     subscribed to your account.\n"
"     "
msgstr ""
"\n"
"     PÅ™ekroÄeny limity ÄlenstvÃ­ ve skupinÄ› uÅ¾ivatelÅ¯.\n"
"\n"
"     AktuÃ¡lnÃ­ nastavenÃ­ ÃºÄtu VÃ¡m neumoÅ¾Åˆuje pÅ™idat dalÅ¡Ã­ uÅ¾ivatelskÃ½ ÃºÄet.\n"
"     Zkontrolujte u sprÃ¡vce vaÅ¡Ã­ organizace ÃºÄet, zda maximÃ¡lnÃ­ poÄet "
"uÅ¾ivatelÅ¯,\n"
"     kteÅ™Ã­ se mohou pÅ™ihlÃ¡sit k odbÄ›ru serverovÃ½ch potÅ™eb, mÃ¡ bÃ½t zmÄ›nÄ›n.\n"
"     "

#: ../common/rhnException.py:116
msgid ""
"\n"
"     Invalid architecture.\n"
"\n"
"     The architecture of the package is not supported by\n"
"     "
msgstr ""
"\n"
"     NeplatnÃ¡ architektura.\n"
"\n"
"     Architektura balÃ­Äku nenÃ­ podporovÃ¡na\n"
"     "

#: ../common/rhnException.py:121
msgid "Invalid RPM header"
msgstr "NeplatnÃ¡ hlaviÄka RPM"

#: ../common/rhnException.py:122
msgid ""
"\n"
"    This system is already registered as a Salt Minion. If you want to "
"register it as a traditional client\n"
"    please delete it first via the web UI or API and then register it using "
"the traditional tools.\n"
"    "
msgstr ""
"\n"
"    Tento systÃ©m je jiÅ¾ zaregistrovÃ¡n jako Salt Minion. Chcete-li se "
"zaregistrovat jako tradiÄnÃ­ klient,\n"
"    nejprve ho smaÅ¾te webovÃ½m rozhranÃ­m UI nebo API a pak ho registrujte "
"tradiÄnÃ­mi nÃ¡stroji.\n"
"    "

#. For the uploading tools
#: ../common/rhnException.py:127
msgid "Invalid information uploaded to the server"
msgstr "Na server byla nahrÃ¡na neplatnÃ¡ informace"

#: ../common/rhnException.py:128
msgid "Error uploading network interfaces configuration."
msgstr "Chyba pÅ™i nahrÃ¡vÃ¡nÃ­ konfigurace sÃ­Å¥ovÃ½ch rozhranÃ­."

#: ../common/rhnException.py:129
msgid ""
"\n"
"     Package Upload Failed due to uniqueness constraint violation.\n"
"     Make sure the package does not have any duplicate dependencies or\n"
"     does not already exists on the server\n"
"     "
msgstr ""
"\n"
"     NahrÃ¡vÃ¡nÃ­ balÃ­Äku se nezdaÅ™ilo kvÅ¯li poruÅ¡enÃ­ jedineÄnosti.\n"
"     UjistÄ›te se, Å¾e balÃ­Äek nemÃ¡ duplicitnÃ­ zÃ¡vislosti a je dosud na "
"serveru\n"
"     "

#: ../common/rhnException.py:134
msgid ""
"\n"
"     The --force rhnpush option is disabled on this server.\n"
"     Please contact your SUSE Manager administrator for more help.\n"
"     "
msgstr ""
"\n"
"     MoÅ¾nost --force rhnpush byla na tomto serveru deaktivovÃ¡na.\n"
"     Pro dalÅ¡Ã­ pomoc kontaktujte svÃ©ho sprÃ¡vce SUSE Manager.\n"
"     "

#. 60-70: token errors
#: ../common/rhnException.py:140
msgid ""
"\n"
"     The activation token specified could not be found on the server.\n"
"     Please retry with a valid key.\n"
"     "
msgstr ""
"\n"
"     ZadanÃ½ aktivaÄnÃ­ Å¾eton nebyl na serveru nalezen.\n"
"     Zkuste to prosÃ­m znovu s platnÃ½m klÃ­Äem.\n"
"     "

#: ../common/rhnException.py:144
msgid "Too many systems registered using this registration token"
msgstr ""
"PomocÃ­ tohoto registraÄnÃ­ho tokenu se registrovalo pÅ™Ã­liÅ¡ mnoho systÃ©mÅ¯"

#: ../common/rhnException.py:145
msgid "Token contains invalid, obsoleted or insufficient settings"
msgstr "Token obsahuje neplatnÃ©, zastaralÃ© nebo nedostateÄnÃ© nastavenÃ­"

#: ../common/rhnException.py:146
msgid "Conflicting activation tokens"
msgstr "Konflikt aktivaÄnÃ­ch tokenÅ¯"

#. 70-80: channel subscription errors
#: ../common/rhnException.py:149
msgid ""
"\n"
"     No matching base channel found for your system.\n"
"     "
msgstr ""
"\n"
"     Ve vaÅ¡em systÃ©mu nebyl nalezen Å¾Ã¡dnÃ½ odpovÃ­dajÃ­cÃ­ zÃ¡kladnÃ­ kanÃ¡l.\n"
"     "

#: ../common/rhnException.py:152
msgid ""
"\n"
"     You do not have subscription permission to the designated channel.\n"
"     Please refer to your organization's channel or organization\n"
"     administrators for further details.\n"
"     "
msgstr ""
"\n"
"     NemÃ¡te povolenÃ­ k odbÄ›ru urÄenÃ©ho kanÃ¡lu.\n"
"     Pro dalÅ¡Ã­ podrobnosti se prosÃ­m obraÅ¥te na\n"
"     kanÃ¡l vaÅ¡Ã­ organizace nebo na jejÃ­ sprÃ¡vce.\n"
"     "

#: ../common/rhnException.py:157
msgid "You can not unsubscribe from base channel."
msgstr "Z hlavnÃ­ho kanÃ¡lu se nelze odhlÃ¡sit."

#: ../common/rhnException.py:158
msgid "SUSE Manager or Proxy channel can not be subscribed."
msgstr "Nelze odebÃ­rat SUSE Manager nebo Proxy kanÃ¡l."

#. 80-90: server group errors
#: ../common/rhnException.py:161
msgid "There was an error while trying to join the system to its groups"
msgstr "PÅ™i pokusu o pÅ™ipojenÃ­ systÃ©mu do jeho skupin doÅ¡lo k chybÄ›"

#. 90-100: entitlement errors
#: ../common/rhnException.py:164
msgid "Unable to entitle system"
msgstr "Nelze pÅ™iÅ™adit oprÃ¡vnÄ›nÃ­ systÃ©mu"

#. 100-109: e-mail and uuid related faults
#: ../common/rhnException.py:167
msgid "Maximum e-mail length violation."
msgstr "PÅ™Ã­liÅ¡ dlouhÃ½ e-mail."

#: ../common/rhnException.py:168
msgid "This system has been previously registered."
msgstr "Tento systÃ©m jiÅ¾ byl registrovÃ¡n."

#: ../common/rhnException.py:169
msgid "Invalid username"
msgstr "NeplatnÃ© uÅ¾ivatelskÃ© jmÃ©no"

#. 140-159 applet errors
#: ../common/rhnException.py:172
msgid "Unable to look up server"
msgstr "NepodaÅ™ilo se dohledat server"

#. 160-179: OSAD errors
#: ../common/rhnException.py:175
msgid "Required argument is missing"
msgstr "ChybÃ½ poÅ¾adovanÃ½ argument"

#. 600-699: RHEL5+ EN errors
#: ../common/rhnException.py:178
msgid "No entitlement information tied to hardware"
msgstr "K hardwaru nejsou pÅ™ipojeny Å¾Ã¡dnÃ© informace o oprÃ¡vnÄ›nÃ­"

#: ../common/rhnException.py:179
msgid "Installation number is not entitling"
msgstr "ÄŒÃ­slo instalace nenÃ­ oprÃ¡vnÄ›nÃ­"

#. 700-799: Additional user input verification errors.
#: ../common/rhnException.py:182
msgid "Maximum username length violation"
msgstr "PÅ™Ã­liÅ¡ dlouhÃ© uÅ¾ivatelskÃ© jmÃ©no"

#: ../common/rhnException.py:183
msgid "Maximum password length violation"
msgstr "PÅ™Ã­liÅ¡ dlouhÃ© heslo"

#: ../common/rhnException.py:184
msgid "This user has read only API access. Action denied."
msgstr "Tento uÅ¾ivatel mÃ¡ k API pÅ™Ã­stup jen pro ÄtenÃ­. Akce je zamÃ­tnuta."

#: ../common/rhnException.py:186
msgid "System Name cannot be less than 1 character"
msgstr "NÃ¡zev systÃ©mu musÃ­ mÃ­t alespoÅˆ 1 znak"

#. 1000-1999: Proxy specific errors:
#. issued by a Proxy to the client
#: ../common/rhnException.py:190
msgid "SUSE Manager Proxy error."
msgstr "Chyba SUSE Manager Proxy."

#: ../common/rhnException.py:191
msgid "SUSE Manager Proxy unable to login."
msgstr "SUSE Manager Proxy nenÃ­ schopen se pÅ™ihlÃ¡sit."

#. issued by a SUSE Manager Server/Satellite to the proxy
#: ../common/rhnException.py:193
msgid ""
"\n"
"     SUSE Manager Proxy system ID does not match a Spacewalk Proxy Server\n"
"     in the database.\n"
"     "
msgstr ""
"\n"
"     ID systÃ©mu SUSE Manager Proxy neodpovÃ­dÃ¡ serveru Spacewalk Proxy\n"
"     v databÃ¡zi.\n"
"     "

#: ../common/rhnException.py:197
msgid "SUSE Manager Proxy session token is invalid."
msgstr "Å½eton relace SUSE Manager Proxy je neplatnÃ½."

#: ../common/rhnException.py:198
msgid "SUSE Manager Proxy session token has expired."
msgstr "Å½eton relace SUSE Manager Proxy vyprÅ¡el."

#. 2000-2999: Red Hat Satellite specific errors:
#: ../common/rhnException.py:202
msgid ""
"\n"
"      user creation is not allowed via mgr_register;\n"
"     please contact your sysadmin to have your account created.\n"
"     "
msgstr ""
"\n"
"      vytvoÅ™enÃ­ uÅ¾ivatele nenÃ­ povoleno pomocÃ­ mgr_register;\n"
"     obraÅ¥te se na svÃ©ho sysadmina a poÅ¾Ã¡dejte ho o vytvoÅ™enÃ­ ÃºÄtu.\n"
"     "

#: ../common/rhnException.py:206
msgid ""
"\n"
"     This SUSE Manager server is not allowed to use Inter Server Sync on "
"this server\n"
"     "
msgstr ""
"\n"
"     Tento server SUSE Manager nemÃ¡ na tomto serveru povoleno pouÅ¾Ã­vat Inter "
"Server Sync\n"
"     "

#: ../common/rhnException.py:209
msgid ""
"\n"
"     Inter Server Sync is disabled on this SUSE Manager Server.\n"
"     "
msgstr ""
"\n"
"     Funkce Inter Server Sync je na tomto serveru SUSE Manager zakÃ¡zÃ¡na.\n"
"     "

#. 3000-3999: XML dumper errors:
#: ../common/rhnException.py:214
msgid "Invalid datatype passed"
msgstr "PÅ™edÃ¡n neplatnÃ½ datovÃ½ typ"

#: ../common/rhnException.py:215
msgid "Unable to retrieve channel"
msgstr "NepodaÅ™ilo se naÄÃ­st kanÃ¡l"

#: ../common/rhnException.py:216
msgid "Unable to retrieve package"
msgstr "NepodaÅ™ilo se naÄÃ­st balÃ­Äek"

#: ../common/rhnException.py:217
msgid "Unable to retrieve erratum"
msgstr "NepodaÅ™ilo se naÄÃ­st erratu"

#: ../common/rhnException.py:218
msgid "File is missing"
msgstr "Soubor nenalezen"

#: ../common/rhnException.py:219
msgid "Function retrieval error"
msgstr "Chyba naÄÃ­tÃ¡nÃ­ funkce"

#: ../common/rhnException.py:220
msgid "Function execution error"
msgstr "Chyba provÃ¡dÄ›nÃ­ funkce"

#: ../common/rhnException.py:221
msgid "Missing version string"
msgstr "ChybÄ›jÃ­cÃ­ Å™etÄ›zec verze"

#: ../common/rhnException.py:222
msgid "Invalid version string"
msgstr "NeplatnÃ½ Å™etÄ›zec verze"

#: ../common/rhnException.py:223
msgid "Mismatching versions"
msgstr "NesouhlasÃ­cÃ­ verze"

#: ../common/rhnException.py:224
msgid "Invalid channel version"
msgstr "NeplatnÃ¡ verze kanÃ¡lu"

#: ../common/rhnException.py:225
msgid "No comps file for channel"
msgstr "Pro kanÃ¡l nenÃ­ k dispozici Å¾Ã¡dnÃ½ soubor comps"

#: ../common/rhnException.py:226
msgid "Unable to retrieve comps file"
msgstr "Nelze naÄÃ­st soubor comps"

#. 4000 - 4999: config management errors
#: ../common/rhnException.py:229
msgid "Configuration action missing"
msgstr "ChybÃ­ akce konfigurace"

#: ../common/rhnException.py:230
msgid "File too large"
msgstr "PÅ™Ã­liÅ¡ velkÃ½ soubor"

#: ../common/rhnException.py:231
msgid "File contains binary data"
msgstr "Soubor obsahuje binÃ¡rnÃ­ data"

#: ../common/rhnException.py:232
msgid "Configuration channel is not empty"
msgstr "KonfiguraÄnÃ­ kanÃ¡l nenÃ­ prÃ¡zdnÃ½"

#: ../common/rhnException.py:233
msgid "Permission error"
msgstr "Chyba oprÃ¡vnÄ›nÃ­"

#: ../common/rhnException.py:234
msgid "Content missing for configuration file"
msgstr "ChybÃ­ obsah konfiguraÄnÃ­ho souboru"

#: ../common/rhnException.py:235
msgid "Template delimiters not specified"
msgstr "OddÄ›lovaÄe Å¡ablon nejsou zadÃ¡ny"

#: ../common/rhnException.py:236
msgid "Configuration channel does not exist"
msgstr "KonfiguraÄnÃ­ kanÃ¡l neexistuje"

#: ../common/rhnException.py:237
msgid "Configuration channel already exists"
msgstr "KonfiguraÄnÃ­ kanÃ¡l jiÅ¾ existuje"

#: ../common/rhnException.py:238
msgid "File missing from configuration channel"
msgstr "Soubor z konfiguraÄnÃ­ho kanÃ¡lu chybÃ­"

#: ../common/rhnException.py:239
msgid "Different revision of this file is uploaded"
msgstr "Je nahrÃ¡na jinÃ¡ revize tohoto souboru"

#: ../common/rhnException.py:240
msgid "File already uploaded to configuration channel"
msgstr "Soubor jiÅ¾ byl nahrÃ¡n na konfiguraÄnÃ­ kanÃ¡l"

#: ../common/rhnException.py:241
msgid "File size exceeds remaining quota space"
msgstr "Velikost souboru pÅ™ekraÄuje zbÃ½vajÃ­cÃ­ prostor kvÃ³ty"

#: ../common/rhnException.py:242
msgid "Full path of file must be specified"
msgstr "MusÃ­ bÃ½t zadÃ¡na ÃºplnÃ¡ cesta k souboru"

#: ../common/rhnException.py:243
msgid "Invalid revision number"
msgstr "NeplatnÃ© ÄÃ­slo revize"

#: ../common/rhnException.py:244
msgid "Cannot compare files of different file type"
msgstr "Nelze porovnat soubory rÅ¯znÃ½ch typÅ¯"

#. 5000 - 5999: client content uploading errors
#. 5000 - 5099: crash reporting errors
#: ../common/rhnException.py:248
msgid "Crash information is invalid or incomplete"
msgstr "Ãšdaje o havÃ¡rii jsou neplatnÃ© nebo neÃºplnÃ©"

#: ../common/rhnException.py:249
msgid "Crash file information is invalid or incomplete"
msgstr "Ãšdaje souboru o havÃ¡rii jsou neplatnÃ© nebo neÃºplnÃ©"

#: ../common/rhnException.py:250
msgid "Error composing crash directory path"
msgstr "Chyba pÅ™i vytvÃ¡Å™enÃ­ cesty k adresÃ¡Å™i havÃ¡rie"

#: ../common/rhnException.py:251
msgid "Error composing crash file path"
msgstr "Chyba pÅ™i vytvÃ¡Å™enÃ­ cesty k souboru havÃ¡rie"

#: ../common/rhnException.py:252 ../common/rhnException.py:259
msgid "Invalid content encoding"
msgstr "NeplatnÃ© kÃ³dovÃ¡nÃ­ obsahu"

#: ../common/rhnException.py:253
msgid "Invalid crash name"
msgstr "NeplatnÃ½ nÃ¡zev havÃ¡rie"

#: ../common/rhnException.py:254
msgid "Crash reporting is disabled for this organization"
msgstr "HlÃ¡Å¡enÃ­ havÃ¡riÃ­ je pro tuto organizaci zakÃ¡zÃ¡no"

#. 5100 - 5199: scap results reporting error
#: ../common/rhnException.py:256
msgid "SCAP results file transfer is invalid or incomplete"
msgstr "PÅ™enos souboru vÃ½sledkÅ¯ SCAP je neplatnÃ½ nebo neÃºplnÃ½"

#: ../common/rhnException.py:257
msgid "Error composing directory path for detailed SCAP results"
msgstr "Chyba pÅ™i vytvÃ¡Å™enÃ­ cesty k adresÃ¡Å™i pro podrobnÃ© vÃ½sledky SCAP"

#: ../common/rhnException.py:258
msgid "Error composing file path for detailed SCAP results"
msgstr "Chyba pÅ™i vytvÃ¡Å™enÃ­ cesty souboru pro podrobnÃ© vÃ½sledky SCAP"

#: ../common/rhnException.py:306
msgid ""
"\n"
"     An error has occurred while processing your request. If this problem\n"
"     persists please enter a bug report at scc.suse.com.\n"
"     If you choose to submit the bug report, please be sure to include\n"
"     details of what you were trying to do when this error occurred and\n"
"     details on how to reproduce this problem.\n"
msgstr ""
"\n"
"     PÅ™i zpracovÃ¡nÃ­ vaÅ¡eho poÅ¾adavku doÅ¡lo k chybÄ›. PÅ™etrvÃ¡vÃ¡-li tento\n"
"     problÃ©m, ohlaste prosÃ­m chybu na scc.suse.com.\n"
"     Rozhodnete-li se odeslat zprÃ¡vu o chybÄ›, nezapomeÅˆte pÅ™ipojit\n"
"     podrobnosti o tom, co jste se pokusili udÄ›lat, kdyÅ¾ doÅ¡lo k tÃ©to chybÄ›\n"
"     a postup, jak tento problÃ©m reprodukovat.\n"

#: ../common/rhnException.py:358
#, python-format
msgid ""
"Error Message:\n"
"    %s\n"
msgstr ""
"ChybovÃ© hlÃ¡Å¡enÃ­:\n"
"    %s\n"

#: ../common/rhnException.py:360
#, python-format
msgid "Error Class Code: %s\n"
msgstr "KÃ³d tÅ™Ã­dy chyby: %s\n"

#: ../common/rhnException.py:363
#, python-format
msgid "Error Class Info: %s\n"
msgstr "Informace o tÅ™Ã­dÄ› chyb: %s\n"

#: ../common/rhnException.py:365
#, python-format
msgid "Explanation: %s"
msgstr "VysvÄ›tlenÃ­: %s"

#: ../common/rhnTB.py:205
#, python-format
msgid "ERROR: %s %s: %s"
msgstr "CHYBA: %s %s: %s"

#: ../common/rhnTB.py:207
#, python-format
msgid "TRACEBACK: %s"
msgstr "TRACE-BACK: %s"

#: ../satellite_tools/disk_dumper/iss.py:1294
#: ../satellite_tools/disk_dumper/iss.py:1298
#, python-format
msgid "format of %s should be at least YYYYMMDD.\n"
msgstr "formÃ¡t %s by mÄ›l bÃ½t alespoÅˆ RRRRMMDD.\n"

#: ../satellite_tools/messages.py:26
#, python-format
msgid ""
"\n"
"ERROR: executing step %s. Error is:\n"
"%s\n"
msgstr ""
"\n"
"CHYBA: pÅ™i provedenÃ­ kroku %s. Chyba je:\n"
"%s\n"

#: ../satellite_tools/messages.py:31
#, python-format
msgid ""
"\n"
"ERROR: there was a problem accessing the channel data from your temporary\n"
"       repository. Did you migrate all of the data from the channel ISOs\n"
"       do this directory? If so, please recheck the channels ISOs, ensure\n"
"       that you have them all, and then iteratively remount and repopulate\n"
"       the temporary repository (%s).\n"
msgstr ""
"\n"
"CHYBA: doÅ¡lo k problÃ©mu s pÅ™Ã­stupem k datÅ¯m kanÃ¡lu z vaÅ¡eho doÄasnÃ©ho\n"
"       ÃºloÅ¾iÅ¡tÄ›. PÅ™enesli jste vÅ¡echna data z ISO kanÃ¡lÅ¯ do tohoto "
"adresÃ¡Å™e?\n"
"       KdyÅ¾ ano, znovu zkontrolujte kanÃ¡ly ISO, zajistÄ›te, aby byly "
"vÅ¡echny,\n"
"       a pak iterativnÄ› znovu pÅ™ipojte a znovu naplÅˆte doÄasnÃ© ÃºloÅ¾iÅ¡tÄ› "
"(%s).\n"

#: ../satellite_tools/messages.py:39
#, python-format
msgid ""
"\n"
"ERROR: there was a problem synchronizing the information.\n"
"       Error message: %s\n"
msgstr ""
"\n"
"CHYBA: PÅ™i synchronizaci informacÃ­ doÅ¡lo k potÃ­Å¾Ã­m.\n"
"       ChybovÃ¡ zprÃ¡va: %s\n"

#: ../satellite_tools/messages.py:44
#, python-format
msgid ""
"\n"
"ERROR: There was a problem communicating with the ISS Master.\n"
"       Depending on the specific error details, please review your "
"configuration,\n"
"       basic network connectivity, and/or name resolution, and try again.\n"
"       Error message: %s\n"
msgstr ""
"\n"
"CHYBA: PÅ™i komunikaci s ISS Master doÅ¡lo k potÃ­Å¾Ã­m.\n"
"       V zÃ¡vislosti na konkrÃ©tnÃ­ch podrobnostech o chybÄ› ovÄ›Å™te "
"konfiguraci,\n"
"       zÃ¡kladnÃ­ sÃ­Å¥ovÃ© pÅ™ipojenÃ­ a/nebo pÅ™eklad nÃ¡zvÅ¯ (DNS) a akci "
"opakujte.\n"
"       ChybovÃ¡ zprÃ¡va: %s\n"

#: ../satellite_tools/messages.py:51
#, python-format
msgid ""
"\n"
"ERROR: There was a problem communicating with the ISS Master.\n"
"       If the master satellite is older than v5.3, it does not have ISS "
"capability.\n"
"       Otherwise, depending on the specific error details, please review "
"your\n"
"       configuration, basic network connectivity, and/or name resolution, "
"and try again.\n"
"       Error message: %s\n"
msgstr ""
"\n"
"CHYBA: PÅ™i komunikaci s ISS Master doÅ¡lo k potÃ­Å¾Ã­m.\n"
"       Pokud je Master Satellite starÅ¡Ã­ neÅ¾ v5.3, nemÃ¡ schopnost ISS.\n"
"       V opaÄnÃ©m pÅ™Ã­padÄ› zkontrolujte konkrÃ©tnÃ­ podrobnosti o chybÄ›,\n"
"       ovÄ›Å™te sprÃ¡vnost svÃ© konfigurace, zÃ¡kladnÃ­ pÅ™ipojenÃ­ k sÃ­ti nebo\n"
"       pÅ™eklad nÃ¡zvÅ¯ (DNS) a akci opakujte.\n"
"       ChybovÃ¡ zprÃ¡va: %s\n"

#: ../satellite_tools/messages.py:59
#, python-format
msgid ""
"\n"
"ERROR: a child-channel cannot be synced without its parent being synced as\n"
"       well. A parent needs to be either (a) previously synced or (b) "
"synced\n"
"       in tandem with the desired child-channel. Missing parents for this\n"
"       transaction:\n"
"       %s\n"
msgstr ""
"\n"
"CHYBA: podÅ™Ã­zenÃ½ kanÃ¡l nelze synchronizovat, aniÅ¾ je jeho rodiÄ takÃ© "
"synchronizovÃ¡n.\n"
"       RodiÄ musÃ­ bÃ½t (a) synchronizovÃ¡n pÅ™edem nebo (b) synchronizovÃ¡n\n"
"       spoleÄnÄ› s poÅ¾adovanÃ½m podÅ™Ã­zenÃ½m kanÃ¡lem. ChybÄ›jÃ­cÃ­ rodiÄe pro tuto\n"
"       transakci:\n"
"       %s\n"

#: ../satellite_tools/messages.py:67
#, python-format
msgid ""
"\n"
"ERROR: you are not entitled to sync a channel in this set of channels.\n"
"Please contact your SUSE Manager contact\n"
"%s"
msgstr ""
"\n"
"CHYBA: nemÃ¡te prÃ¡vo synchronizovat kanÃ¡l v tÃ©to sadÄ› kanÃ¡lÅ¯.\n"
"ObraÅ¥te se prosÃ­m na svÅ¯j kontakt u SUSE Manager\n"
"%s"

#: ../satellite_tools/messages.py:72
#, python-format
msgid "  ERROR: not enough free space (%s KB) on device."
msgstr "  CHYBA: na zaÅ™Ã­zenÃ­ nenÃ­ dostatek volnÃ©ho mÃ­sta (%s KB)."

#: ../satellite_tools/messages.py:74
#, python-format
msgid "    %3d/%s Fetch successful: %s (%s bytes)"
msgstr "    %3d/%s ÃºspÄ›Å¡nÃ© naÄtenÃ­: %s (%s bajtÅ¯)"

#: ../satellite_tools/messages.py:75
#, python-format
msgid "    Extinct package:  %s"
msgstr "    ZaniklÃ½ balÃ­Äek:  %s"

#: ../satellite_tools/messages.py:76
#, python-format
msgid "   Total size: %s"
msgstr "   CelkovÃ¡ velikost: %s"

#: ../satellite_tools/messages.py:77
#, python-format
msgid "      Downloaded %s of %s. Estimated remaining time: %s"
msgstr "      StaÅ¾eno %s z %s. OdhadovanÃ½ zbÃ½vajÃ­cÃ­ Äas: %s"

#: ../satellite_tools/messages.py:78
#, python-format
msgid "    Fetch unsuccessful: %s"
msgstr "    NaÄtenÃ­ neÃºspÄ›Å¡nÃ©: %s"

#: ../satellite_tools/messages.py:79
#, python-format
msgid "   RPM fetch summary: %s"
msgstr "   Souhrn naÄtenÃ­ RPM: %s"

#: ../satellite_tools/messages.py:80
#, python-format
msgid "       success: %d"
msgstr "       ÃºspÄ›ch: %d"

#: ../satellite_tools/messages.py:81
#, python-format
msgid "       failed:  %d"
msgstr "       neÃºspÄ›ch:  %d"

#: ../satellite_tools/messages.py:82
#, python-format
msgid "       extinct: %d"
msgstr "       zaniklo: %d"

#: ../satellite_tools/messages.py:84
#, python-format
msgid "   Retrieving / parsing *relevant* package metadata: %s (%s)"
msgstr "   NaÄÃ­tÃ¡nÃ­ / analÃ½za *relevantnÃ­ch* metadat balÃ­Äku: %s (%s)"

#: ../satellite_tools/messages.py:85
#, python-format
msgid "   Retrieving / parsing errata data: %s (%s)"
msgstr "   NaÄÃ­tÃ¡nÃ­ / analÃ½za dat chyb (errata): %s (%s)"

#: ../satellite_tools/messages.py:86
#, python-format
msgid "   Retrieving / parsing kickstart data: %s (%s)"
msgstr "   NaÄÃ­tÃ¡nÃ­ / analÃ½za dat kickstartu: %s (%s)"

#: ../satellite_tools/messages.py:87
#, python-format
msgid "   Retrieving / parsing kickstart tree files: %s (%s)"
msgstr "   NaÄÃ­tÃ¡nÃ­ / analÃ½za souborÅ¯ stromu kickstartu: %s (%s)"

#: ../satellite_tools/messages.py:88
#, python-format
msgid "   Importing *relevant* package metadata: %s (%s)"
msgstr "   Import *relevantnÃ­ch* metadat balÃ­ÄkÅ¯: %s (%s)"

#: ../satellite_tools/messages.py:89
msgid "   * WARNING: this may be a slow process."
msgstr "   * VÃSTRAHA: Toto mÅ¯Å¾e bÃ½t pomalÃ½ proces."

#: ../satellite_tools/messages.py:90
msgid "Linking packages to channels"
msgstr "PropojenÃ­ balÃ­ÄkÅ¯ ke kanÃ¡lÅ¯m"

#: ../satellite_tools/messages.py:91
#, python-format
msgid "   Importing *relevant* errata: %s (%s)"
msgstr "   Import *relevantnÃ­ch* errat: %s (%s)"

#: ../satellite_tools/messages.py:92
msgid "   No new kickstartable tree to import"
msgstr "   Å½Ã¡dnÃ½ novÃ½ spustitelnÃ½ strom k importu"

#: ../satellite_tools/messages.py:93
#, python-format
msgid "Importing kickstartable trees (%d)"
msgstr "Import spustitelnÃ½ch stromÅ¯ (%d)"

#: ../satellite_tools/messages.py:94
#, python-format
msgid "Imported kickstartable trees (%d)"
msgstr "ImportovanÃ© startovatelnÃ© stromy (%d)"

#: ../satellite_tools/reposync.py:111 ../satellite_tools/satsync.py:439
msgid "+++ sending log as an email +++"
msgstr "+++ odesÃ­lÃ¡nÃ­ protokolu jako e-mailu +++"

#: ../satellite_tools/reposync.py:114
#, python-format
msgid "%s sync. report from %s"
msgstr "%s synchronizaÄnÃ­ zprÃ¡va od %s"

#: ../satellite_tools/reposync.py:124 ../satellite_tools/satsync.py:449
msgid "+++ email requested, but there is nothing to send +++"
msgstr "+++ vyÅ¾adovÃ¡n e-mail, ale nenÃ­ nic k odeslÃ¡nÃ­ +++"

#: ../satellite_tools/rhn_satellite_activate.py:198
#, python-format
msgid ""
"\"%s\" (specified in commandline)\n"
"could not be opened and read:\n"
"%s"
msgstr ""
"\"%s\" (uvedeno v pÅ™Ã­kazovÃ©m Å™Ã¡dku)\n"
"nelze otevÅ™Ã­t a pÅ™eÄÃ­st:\n"
"%s"

#: ../satellite_tools/rhn_satellite_activate.py:205
#, python-format
msgid ""
"\"%s\" could not be opened\n"
"and/or written to:\n"
"%s"
msgstr ""
"\"%sâ€œ nelze otevÅ™Ã­t a/nebo\n"
"do nÄ›j zapisovat:\n"
"%s"

#: ../satellite_tools/satsync.py:258
#, python-format
msgid "No handler for step %s"
msgstr "Å½Ã¡dnÃ½ obsluÅ¾nÃ½ program pro krok %s"

#. Try one more time - this time it should be faster since
#. everything should be cached
#: ../satellite_tools/satsync.py:270
msgid "Environment changed, trying again..."
msgstr "ProstÅ™edÃ­ se zmÄ›nilo, novÃ½ pokus..."

#: ../satellite_tools/satsync.py:277
msgid "ERROR: Encountered IntegrityError: \n"
msgstr "CHYBA: DoÅ¡lo k chybÄ› integrity: \n"

#: ../satellite_tools/satsync.py:285
msgid "Repeated failures"
msgstr "OpakovanÃ© zÃ¡vady"

#: ../satellite_tools/satsync.py:290
#, python-format
msgid ""
"    Import complete:\n"
"        Begin time: %s\n"
"        End time:   %s\n"
"        Elapsed:    %s\n"
"          "
msgstr ""
"    Import dokonÄen:\n"
"        ZahÃ¡jeno:  %s\n"
"        UkonÄeno: %s\n"
"        Uplynulo:   %s\n"
"          "

#: ../satellite_tools/satsync.py:311
msgid "hours"
msgstr "hodin"

#: ../satellite_tools/satsync.py:311
msgid "minutes"
msgstr "minut"

#: ../satellite_tools/satsync.py:311
msgid "seconds"
msgstr "vteÅ™in"

#: ../satellite_tools/satsync.py:357
msgid ""
"ERROR: The dump is missing package data, use --no-rpms to skip this step or "
"fix the content to include package data."
msgstr ""
"CHYBA: Na vÃ½pisu chybÃ­ data balÃ­Äku; pouÅ¾ijte --no-rpms k pÅ™eskoÄenÃ­ tohoto "
"kroku nebo opravte obsah tak, aby obsahoval data balÃ­Äku."

#. the orgs() method doesn't exist; that's fine we just
#. won't sync the orgs
#: ../satellite_tools/satsync.py:404
msgid "The SUSE Manager master does not support syncing orgs data."
msgstr "HlavnÃ­ server SUSE Manager nepodporuje synchronizaci dat organizacÃ­."

#: ../satellite_tools/satsync.py:404
msgid "Skipping..."
msgstr "PÅ™eskakuji..."

#: ../satellite_tools/satsync.py:442
#, python-format
msgid "SUSE Manager Inter Server sync. report from %s"
msgstr "ZprÃ¡va o synchronizaci SUSE Manager Inter Server z %s"

#: ../satellite_tools/satsync.py:521
msgid " - file-system synchronization"
msgstr " - synchronizace systÃ©mu souborÅ¯"

#: ../satellite_tools/satsync.py:533 ../satellite_tools/satsync.py:541
msgid " - live synchronization"
msgstr " - Å¾ivÃ¡ synchronizace"

#: ../satellite_tools/satsync.py:534
#, python-brace-format
msgid ""
"ERROR: Live content synchronizing with RHN Classic Hosted is no longer "
"supported.\n"
"Please use the cdn-sync command instead unless you are attempting to sync "
"from another {PRODUCT_NAME} via Inter-Server-Sync (ISS), or from local "
"content on disk via Channel Dump ISOs."
msgstr ""
"CHYBA: Synchronizace Å¾ivÃ©ho obsahu s RHN Classic Hosted jiÅ¾ nenÃ­ "
"podporovÃ¡na.\n"
"PouÅ¾ijte pÅ™Ã­kaz cdn-sync, nepokouÅ¡Ã­te-li se synchronizovat z jinÃ©ho "
"{PRODUCT_NAME} pÅ™es Inter-Server-Sync (ISS), nebo z mÃ­stnÃ­ho obsahu na disku "
"pomocÃ­ obrazÅ¯ ISO z vÃ½pisu kanÃ¡lu (Channel Dump)."

#: ../satellite_tools/satsync.py:542
#, python-format
msgid "   url: %s"
msgstr "   url: %s"

#: ../satellite_tools/satsync.py:543
#, python-format
msgid "   debug/output level: %s"
msgstr "   ÃºroveÅˆ ladÄ›nÃ­/vÃ½stupu: %s"

#: ../satellite_tools/satsync.py:553
msgid "ERROR: this server must be registered with SUSE Manager."
msgstr "CHYBA: tento server musÃ­ bÃ½t zaregistrovÃ¡n u SUSE Manager."

#: ../satellite_tools/satsync.py:575
#, python-format
msgid "Retrieving / parsing %s data"
msgstr "NaÄÃ­tÃ¡nÃ­/analÃ½za dat %s"

#: ../satellite_tools/satsync.py:585 ../satellite_tools/satsync.py:600
msgid "*** SYSTEM INTERRUPT CALLED ***"
msgstr "*** VYVOLÃNO SYSTÃ‰MOVÃ‰ PÅ˜ERUÅ ENÃ ***"

#: ../satellite_tools/satsync.py:593
msgid "ERROR: fatal parser exception occurred "
msgstr "CHYBA: doÅ¡lo k fatÃ¡lnÃ­ vÃ½jimce analyzÃ¡toru "

#: ../satellite_tools/satsync.py:594
#, python-format
msgid "(line: %s, col: %s msg: %s)"
msgstr "(Å™Ã¡dek: %s, sloupec: %s zprÃ¡va: %s)"

#: ../satellite_tools/satsync.py:598
#, python-format
msgid "ERROR: parser exception occurred: %s"
msgstr "CHYBA: doÅ¡lo k vÃ½jimce analyzÃ¡toru: %s"

#: ../satellite_tools/satsync.py:603
msgid "ERROR: exception (during parse) occurred: "
msgstr "CHYBA: doÅ¡lo k vÃ½jimce (bÄ›hem analÃ½zy): "

#: ../satellite_tools/satsync.py:604
#, python-format
msgid ""
"   Encountered some errors with %s data (see logs (%s) for more information)"
msgstr ""
"   DoÅ¡lo k nÄ›kterÃ½m chybÃ¡m s daty %s (dalÅ¡Ã­ informace viz protokoly %s)"

#: ../satellite_tools/satsync.py:606
#, python-format
msgid "   Encountered some errors with %s data:"
msgstr "   DoÅ¡lo k nÄ›kolika chybÃ¡m s Ãºdaji %s:"

#: ../satellite_tools/satsync.py:607
#, python-format
msgid "   ------- %s PARSE/IMPORT ERROR -------"
msgstr "   ------- CHYBA ANALÃZY/IMPORTU %s -------"

#: ../satellite_tools/satsync.py:609
msgid "   ---------------------------------------"
msgstr "   ---------------------------------------"

#: ../satellite_tools/satsync.py:612
#, python-format
msgid "%s data complete"
msgstr "%s dat dokonÄeno"

#: ../satellite_tools/satsync.py:665
msgid "Retrieving / parsing channel data"
msgstr "NaÄÃ­tÃ¡nÃ­ / analÃ½za dat kanÃ¡lu"

#: ../satellite_tools/satsync.py:718
msgid "Channel data complete"
msgstr "Data kanÃ¡lu dokonÄena"

#: ../satellite_tools/satsync.py:736
#, python-format
msgid "%10s import from %s"
msgstr "%10s import z %s"

#: ../satellite_tools/satsync.py:739
#, python-format
msgid "%10s import from %s - %s"
msgstr "%10s import z %s - %s"

#: ../satellite_tools/satsync.py:743
#, python-format
msgid "%10s"
msgstr "%10s"

#: ../satellite_tools/satsync.py:750
msgid "p"
msgstr "p"

#: ../satellite_tools/satsync.py:752
msgid "."
msgstr "."

#: ../satellite_tools/satsync.py:758
msgid "   p = previously imported/synced channel"
msgstr "   p = dÅ™Ã­ve importovanÃ½ / synchronizovanÃ½ kanÃ¡l"

#: ../satellite_tools/satsync.py:759
msgid "   . = channel not yet imported/synced"
msgstr "   . = kanÃ¡l dosud nenÃ­ importovÃ¡n/synchronizovÃ¡n"

#: ../satellite_tools/satsync.py:765
msgid "   e = channel no longer supported (end-of-service)"
msgstr "   e = kanÃ¡l jiÅ¾ nenÃ­ podporovÃ¡n (ukonÄenÃ­ sluÅ¾by)"

#: ../satellite_tools/satsync.py:767
msgid "   ? = channel label invalid --- typo?"
msgstr "   ? = oznaÄenÃ­ kanÃ¡lu je neplatnÃ© --- pÅ™eklep?"

#: ../satellite_tools/satsync.py:771
#, python-format
msgid "   %s:"
msgstr "   %s:"

#: ../satellite_tools/satsync.py:772
#, python-format
msgid "      %s %-40s %4s %s"
msgstr "      %s %-40s %4s %s"

#: ../satellite_tools/satsync.py:773
msgid "base-channels"
msgstr "zÃ¡kladnÃ­-kanÃ¡ly"

#: ../satellite_tools/satsync.py:786 ../satellite_tools/satsync.py:1603
msgid "NONE RELEVANT"
msgstr "Å½ÃDNÃ RELEVANTNÃ"

#: ../satellite_tools/satsync.py:808
msgid "end-of-service"
msgstr "ukonÄenÃ­-sluÅ¾by"

#: ../satellite_tools/satsync.py:809
msgid "e"
msgstr "e"

#: ../satellite_tools/satsync.py:815
msgid "   typos:"
msgstr "   pÅ™eklepy:"

#: ../satellite_tools/satsync.py:816
msgid "?"
msgstr "?"

#: ../satellite_tools/satsync.py:831
#, python-format
msgid "XXX: imported channels: %s"
msgstr "XXX: importovanÃ© kanÃ¡ly: %s"

#: ../satellite_tools/satsync.py:832
#, python-format
msgid "XXX:   cached channels: %s"
msgstr "XXX: kanÃ¡ly v mezipamÄ›ti (keÅ¡i): %s"

#: ../satellite_tools/satsync.py:837
msgid "XXX: list channels called"
msgstr "XXX: seznam volanÃ½ch kanÃ¡lÅ¯"

#: ../satellite_tools/satsync.py:855
msgid "ERROR: these channels either do not exist or are not available:"
msgstr "CHYBA: tyto kanÃ¡ly neexistujÃ­, nebo nejsou dostupnÃ©:"

#: ../satellite_tools/satsync.py:859
#, python-format
msgid "       (to see a list of channel labels: %s --list-channels)"
msgstr "       (zobrazenÃ­ seznamu oznaÄenÃ­ kanÃ¡lÅ¯: %s --list-channels)"

#: ../satellite_tools/satsync.py:904
#, python-format
msgid "   Retrieving / parsing short package metadata: %s (%s)"
msgstr "   NaÄÃ­tÃ¡nÃ­ / analÃ½za metadat krÃ¡tkÃ½ch balÃ­ÄkÅ¯: %s (%s)"

#: ../satellite_tools/satsync.py:965
#, python-format
msgid "Diffing package metadata (what's missing locally?): %s"
msgstr "SrovnÃ¡nÃ­ metadat balÃ­ÄkÅ¯ (co lokÃ¡lnÄ› chybÃ­?): %s"

#: ../satellite_tools/satsync.py:971 ../satellite_tools/satsync.py:1254
msgid "Diffing:    "
msgstr "SrovnÃ¡vÃ¡nÃ­:    "

#: ../satellite_tools/satsync.py:988
msgid "ERROR: incremental dump skipped"
msgstr "CHYBA: vynechÃ¡n pÅ™Ã­rÅ¯stkovÃ½ vÃ½pis"

#: ../satellite_tools/satsync.py:1079
msgid "Downloading rpm packages"
msgstr "StahovÃ¡nÃ­ balÃ­ÄkÅ¯ rpm"

#: ../satellite_tools/satsync.py:1084
#, python-format
msgid "   Fetching any missing RPMs: %s (%s)"
msgstr "   NaÄÃ­tÃ¡nÃ­ chybÄ›jÃ­cÃ­ch RPM: %s (%s)"

#: ../satellite_tools/satsync.py:1085 ../satellite_tools/satsync.py:1153
msgid "NONE MISSING"
msgstr "NECHYBÃ Å½ÃDNÃ"

#: ../satellite_tools/satsync.py:1094
msgid "Processing rpm packages complete"
msgstr "ZpracovÃ¡nÃ­ balÃ­ÄkÅ¯ rpm bylo dokonÄeno"

#: ../satellite_tools/satsync.py:1121
msgid "Downloading package metadata"
msgstr "StahovÃ¡nÃ­ metadat balÃ­Äku"

#: ../satellite_tools/satsync.py:1146
msgid "Downloading srpm packages"
msgstr "StahovÃ¡nÃ­ balÃ­ÄkÅ¯ srpm"

#: ../satellite_tools/satsync.py:1152
#, python-format
msgid "   Fetching any missing SRPMs: %s (%s)"
msgstr "   NaÄÃ­tÃ¡nÃ­ chybÄ›jÃ­cÃ­ch SRPM: %s (%s)"

#: ../satellite_tools/satsync.py:1249
#, python-format
msgid "Diffing source package metadata (what's missing locally?): %s"
msgstr "SrovnÃ¡nÃ­ metadat zdrojovÃ½ch balÃ­ÄkÅ¯ (co lokÃ¡lnÄ› chybÃ­?): %s"

#: ../satellite_tools/satsync.py:1260
msgid "Downloading source package metadata"
msgstr "StahovÃ¡nÃ­ metadat zdrojovÃ©ho balÃ­Äku"

#: ../satellite_tools/satsync.py:1338 ../satellite_tools/satsync.py:2027
#, python-format
msgid "Unable to save file %s: %s"
msgstr "Nelze uloÅ¾it soubor %s: %s"

#. for
#. Retried a number of times and it still failed; log the
#. file as being failed and move on
#: ../satellite_tools/satsync.py:1345
#, python-format
msgid "Failed to fetch file %s"
msgstr "NaÄtenÃ­ souboru %s se nezdaÅ™ilo"

#: ../satellite_tools/satsync.py:1350
msgid "Downloading kickstartable trees metadata"
msgstr "StahovÃ¡nÃ­ metadat startovatelnÃ½ch stromÅ¯"

#: ../satellite_tools/satsync.py:1365
msgid "Downloading kickstartable trees files"
msgstr "StahovÃ¡nÃ­ souborÅ¯ startovatelnÃ½ch stromÅ¯"

#: ../satellite_tools/satsync.py:1504
#, python-format
msgid "Grabbing all patches for channel %s"
msgstr "ZÃ­skÃ¡nÃ­ vÅ¡ech zÃ¡plat pro kanÃ¡l %s"

#: ../satellite_tools/satsync.py:1554
msgid "Downloading patch data"
msgstr "StahovÃ¡nÃ­ dat zÃ¡platy"

#: ../satellite_tools/satsync.py:1556
msgid "Forcing download of all patch data for requested channels."
msgstr "Vynucuji staÅ¾enÃ­ vÅ¡ech dat zÃ¡plat pro poÅ¾adovanÃ© kanÃ¡ly."

#: ../satellite_tools/satsync.py:1571
msgid "Downloading patch data complete"
msgstr "StahovÃ¡nÃ­ dat zÃ¡platy dokonÄeno"

#: ../satellite_tools/satsync.py:1576 ../satellite_tools/satsync.py:1597
msgid "Downloading:"
msgstr "Stahuji:"

#: ../satellite_tools/satsync.py:1579
msgid " - complete"
msgstr " - dokonÄeno"

#: ../satellite_tools/satsync.py:1624
msgid "Importing source package metadata"
msgstr "Import metadat zdrojovÃ©ho balÃ­Äku"

#: ../satellite_tools/satsync.py:1627
msgid "Importing package metadata"
msgstr "Import metadat balÃ­Äku"

#: ../satellite_tools/satsync.py:1635
msgid "Importing:  "
msgstr "Importuji:  "

#. not in the cache
#: ../satellite_tools/satsync.py:1703
msgid ""
"Package Not Found in Cache, Clear the Cache "
"to                                  Regenerate it."
msgstr ""
"BalÃ­Äek nebyl v mezipamÄ›ti (keÅ¡i) nalezen; vymaÅ¾te mezipamÄ›Å¥ "
"do                                  Regenerujte ji."

#: ../satellite_tools/satsync.py:1709
msgid "Importing channel patches"
msgstr "Import zÃ¡plat kanÃ¡lu"

#: ../satellite_tools/satsync.py:1714
#, python-format
msgid "Importing %s patches for channel %s."
msgstr "Importuje se %s zÃ¡plat pro kanÃ¡l %s."

#. Incomplete configuration
#: ../satellite_tools/satsync.py:2113
msgid "ERROR: server.mount_point not set in the configuration file"
msgstr "CHYBA: v konfiguraÄnÃ­m souboru nenÃ­ nastaven server.mount_point"

#: ../satellite_tools/satsync.py:2117
#, python-format
msgid "ERROR: server.mount_point %s do not exist"
msgstr "CHYBA: server.mount_point %s neexistuje"

#: ../satellite_tools/satsync.py:2122
#, python-format
msgid "ERROR: path under server.mount_point (%s)  do not exist"
msgstr "CHYBA: cesta podle nastavenÃ­ server.mount_point (%s) neexistuje"

#: ../satellite_tools/satsync.py:2199
#, python-format
msgid "Commandline: %s"
msgstr "PÅ™Ã­kazovÃ½ Å™Ã¡dek: %s"

#: ../satellite_tools/satsync.py:2202
#, python-format
msgid ""
"DEBUG ONLY: max. batch-size for XML/database-import processing (1..%s).\"man "
"satellite-sync\" for more information."
msgstr ""
"POUZE DEBUG: max. velikost dÃ¡vky pro zpracovÃ¡nÃ­ importu XML/databÃ¡ze (1 .."
"%s). DalÅ¡Ã­ informace: \"man satellite-sync\"."

#: ../satellite_tools/satsync.py:2205
msgid "alternative SSL CA Cert (fullpath to cert file)"
msgstr "alternativnÃ­ certifikÃ¡t SSL CA (ÃºplnÃ¡ cesta k souboru certifikÃ¡tu)"

#: ../satellite_tools/satsync.py:2207
msgid "process data for this channel only"
msgstr "zpracovÃ¡vat data jen pro tento kanÃ¡l"

#: ../satellite_tools/satsync.py:2209
msgid ""
"disk dump will be considered to be a full export; see \"man satellite-sync\" "
"for more information."
msgstr ""
"vÃ½pis disku bude povaÅ¾ovÃ¡n za ÃºplnÃ½ export; dalÅ¡Ã­ informace viz \"man "
"satellite-syncâ€œ."

#: ../satellite_tools/satsync.py:2212
msgid "existing custom channels will also be synced (unless -c is used)"
msgstr ""
"stÃ¡vajÃ­cÃ­ vlastnÃ­ kanÃ¡ly budou takÃ© synchronizovÃ¡ny (nenÃ­-li pouÅ¾it parametr "
"-c)"

#: ../satellite_tools/satsync.py:2214
#, python-format
msgid ""
"override debug level set in /etc/rhn/rhn.conf (which is currently set at %s)."
msgstr ""
"pÅ™epsat ÃºroveÅˆ ladÄ›nÃ­ zadanou v /etc/rhn/rhn.conf (aktuÃ¡lnÄ› nastavena na %s)."

#: ../satellite_tools/satsync.py:2216
#, python-format
msgid "requested version of XML dump (default: %s)"
msgstr "poÅ¾adovanÃ¡ verze vÃ½pisu XML (vÃ½chozÃ­: %s)"

#: ../satellite_tools/satsync.py:2218
msgid "e-mail a report of what was synced/imported"
msgstr "poÅ¡lete e-mailem zprÃ¡vu o tom, co bylo synchronizovÃ¡no/importovÃ¡no"

#: ../satellite_tools/satsync.py:2220
msgid "forcibly process all (not a diff of) patch metadata"
msgstr "nucenÄ› zpracovat vÅ¡echna (nejen odliÅ¡nÃ¡) metadata zÃ¡plat"

#: ../satellite_tools/satsync.py:2222
msgid "Do not use an http proxy under any circumstances."
msgstr "Za Å¾Ã¡dnÃ½ch okolnostÃ­ nepouÅ¾Ã­vejte http proxy."

#: ../satellite_tools/satsync.py:2224
msgid "alternative http proxy (hostname:port)"
msgstr "alternativnÃ­ http proxy (nÃ¡zev_poÄÃ­taÄe_v_sÃ­ti: port)"

#: ../satellite_tools/satsync.py:2226
msgid "alternative http proxy username"
msgstr "alternativnÃ­ uÅ¾ivatelskÃ© jmÃ©no pro http proxy"

#: ../satellite_tools/satsync.py:2228
msgid "alternative http proxy password"
msgstr "alternativnÃ­ heslo pro http proxy"

#: ../satellite_tools/satsync.py:2230
msgid "parent SUSE Manager to import content from"
msgstr "nadÅ™Ã­zenÃ½ SUSE Manager, z nÄ›hoÅ¾ chcete importovat obsah"

#: ../satellite_tools/satsync.py:2232
msgid "list all available channels and exit"
msgstr "vÃ½pis vÅ¡ech dostupnÃ½ch kanÃ¡lÅ¯ a ukonÄenÃ­"

#: ../satellite_tools/satsync.py:2234
msgid "help on all error codes mgr-inter-sync returns"
msgstr "nÃ¡povÄ›da ke vÅ¡em kÃ³dÅ¯m chyb kterÃ© vracÃ­ mgr-inter-sync"

#: ../satellite_tools/satsync.py:2236
msgid "source mount point for import - disk update only"
msgstr "zdrojovÃ½ bod pÅ™ipojenÃ­ pro import - jen aktualizace disku"

#: ../satellite_tools/satsync.py:2238
msgid "do not process patch data"
msgstr "nezpracovÃ¡vat data zÃ¡plat"

#: ../satellite_tools/satsync.py:2240
msgid "do not process kickstart data (provisioning only)"
msgstr "nezpracovÃ¡vat data kickstartu (jen uklÃ¡dÃ¡nÃ­)"

#: ../satellite_tools/satsync.py:2242
msgid "do not process full package metadata"
msgstr "nezpracovÃ¡vat ÃºplnÃ¡ metadata balÃ­Äku"

#: ../satellite_tools/satsync.py:2244
msgid "do not download, or process any RPMs"
msgstr "nestahovat ani nezpracovÃ¡vat Å¾Ã¡dnÃ© balÃ­Äky RPM"

#: ../satellite_tools/satsync.py:2246
msgid "turn off SSL (not recommended)"
msgstr "vypnout SSL (nedoporuÄuje se)"

#: ../satellite_tools/satsync.py:2248
msgid "org to which the sync imports data. defaults to the admin account"
msgstr ""
"organizace, do nÃ­Å¾ synchronizace importuje data; vÃ½chozÃ­ nastavenÃ­ je ÃºÄet "
"sprÃ¡vce"

#: ../satellite_tools/satsync.py:2250
msgid "print the configuration and exit"
msgstr "vytisknout konfiguraci a skonÄit"

#: ../satellite_tools/satsync.py:2252
msgid "alternative server with which to connect (hostname)"
msgstr "alternativnÃ­ server, kam se chcete pÅ™ipojit (nÃ¡zev v sÃ­ti, hostname)"

#: ../satellite_tools/satsync.py:2254
msgid "synchronize to this step (man satellite-sync for more info)"
msgstr ""
"synchronizovat s tÃ­mto krokem (vÃ­ce informacÃ­ poskytne pÅ™Ã­kaz \"man "
"satellite-sync\")"

#: ../satellite_tools/satsync.py:2256
msgid "write complete data to tempfile before streaming to remainder of app"
msgstr ""
"pÅ™ed streamovÃ¡nÃ­m do zbytku aplikace zapiÅ¡te ÃºplnÃ¡ data do doÄasnÃ©ho souboru"

#: ../satellite_tools/satsync.py:2258
msgid "DEBUG ONLY: alternative path to digital system id"
msgstr "POUZE DEBUG: alternativnÃ­ cesta k ID digitÃ¡lnÃ­ho systÃ©mu"

#: ../satellite_tools/satsync.py:2260
msgid "alternative email address(es) for sync output (--email option)"
msgstr ""
"alternativnÃ­ e-mailovÃ© adresa(-y) pro vÃ½stup synchronizace (volba --email)"

#: ../satellite_tools/satsync.py:2262
msgid "do not remove rpms when importing from local dump"
msgstr "pÅ™i importu z lokÃ¡lnÃ­ho vÃ½pisu neodstraÅˆujte rpms"

#: ../satellite_tools/satsync.py:2264
msgid ""
"the fully qualified domain name of the master Satellite. Valid with --mount-"
"point only. Required if you want to import org data and channel permissions."
msgstr ""
"plnÄ› kvalifikovanÃ½ domÃ©novÃ½ nÃ¡zev serveru Master Satellite. PlatÃ­ pouze s --"
"mount-point. VyÅ¾adovÃ¡n, chcete-li importovat data organizace a oprÃ¡vnÄ›nÃ­ "
"kanÃ¡lu."

#: ../satellite_tools/satsync.py:2274
#, python-format
msgid "ERROR: these arguments make no sense in this context (try --help): %s"
msgstr ""
"CHYBA: tyto argumenty nedÃ¡vajÃ­ v tomto kontextu Å¾Ã¡dnÃ½ smysl (zkuste --help): "
"%s"

#. An SQL error is fatal... crash and burn
#: ../satellite_tools/satsync.py:2286
#, python-format
msgid "ERROR: Can't connect to the database: %s"
msgstr "CHYBA: Nelze se pÅ™ipojit k databÃ¡zi: %s"

#: ../satellite_tools/satsync.py:2287
msgid "ERROR: Check if your database is running."
msgstr "CHYBA: ProvÄ›Å™te, zda VaÅ¡e databÃ¡ze bÄ›Å¾Ã­."

#: ../satellite_tools/satsync.py:2322
#, python-format
msgid "ERROR: --debug-level takes an in integer value within the range %s."
msgstr "CHYBA: --debug-level mÅ¯Å¾e mÃ­t jen celoÄÃ­selnou hodnotu v rozsahu %s."

#: ../satellite_tools/satsync.py:2324
msgid "  0  - little logging/messaging."
msgstr "  0  - nÃ­zkÃ¡ ÃºroveÅˆ zaznamenÃ¡vÃ¡nÃ­/odesÃ­lÃ¡nÃ­ zprÃ¡v."

#: ../satellite_tools/satsync.py:2325
msgid "  1  - minimal logging/messaging."
msgstr "  1  - minimÃ¡lnÃ­ ÃºroveÅˆ zaznamenÃ¡vÃ¡nÃ­/odesÃ­lÃ¡nÃ­ zprÃ¡v."

#: ../satellite_tools/satsync.py:2326
msgid "  2  - normal level of logging/messaging."
msgstr "  2  - normÃ¡lnÃ­ ÃºroveÅˆ zaznamenÃ¡vÃ¡nÃ­/odesÃ­lÃ¡nÃ­ zprÃ¡v."

#: ../satellite_tools/satsync.py:2327
msgid "  3  - lots of logging/messaging."
msgstr "  3  - vysokÃ¡ ÃºroveÅˆ zaznamenÃ¡vÃ¡nÃ­/odesÃ­lÃ¡nÃ­ zprÃ¡v."

#: ../satellite_tools/satsync.py:2328
msgid "  4+ - excessive logging/messaging."
msgstr "  4+ - nadmÄ›rnÃ¡ ÃºroveÅˆ zaznamenÃ¡vÃ¡nÃ­/odesÃ­lÃ¡nÃ­ zprÃ¡v."

#: ../satellite_tools/satsync.py:2341
msgid "ERROR: The --master option is only valid with the --mount-point option"
msgstr "CHYBA: MoÅ¾nost --master je platnÃ¡ pouze s volbou --mount-point"

#: ../satellite_tools/satsync.py:2351
#, python-format
msgid "ERROR: Unable to lookup Org Id %s"
msgstr "CHYBA: Nelze vyhledat ID organizace %s"

#: ../satellite_tools/satsync.py:2360
msgid ""
"WARNING: --list-channels option overrides any --step option. --step ignored."
msgstr ""
"UPOZORNÄšNÃ: Volba --list-channels pÅ™epÃ­Å¡e jakoukoli volbu --step. Volba --"
"step ignorovÃ¡na."

#: ../satellite_tools/satsync.py:2375
#, python-format
msgid ""
"ERROR: '%s' is not a valid step. See 'man mgr-inter-sync' for more detail."
msgstr ""
"CHYBA: '%s' nenÃ­ platnÃ½ krok. DalÅ¡Ã­ podrobnosti viz 'man mgr-inter-sync'."

#: ../satellite_tools/satsync.py:2407
msgid ""
"ERROR: No channels currently imported; try mgr-inter-sync --list-channels; "
"then mgr-inter-sync -c chn0 -c chn1..."
msgstr ""
"CHYBA: MomentÃ¡lnÄ› nejsou importovÃ¡ny Å¾Ã¡dnÃ© kanÃ¡ly; zkuste mgr-inter-sync --"
"list-kanÃ¡ly; pak mgr-inter-sync -c chn0 -c chn1 ..."

#. int(None) --> TypeError
#. int('a')  --> ValueError
#: ../satellite_tools/satsync.py:2457 ../satellite_tools/satsync.py:2461
msgid "ERROR: --batch-size must have a value within the range: 1..50"
msgstr "CHYBA: - velikost dÃ¡vky musÃ­ mÃ­t hodnotu v rozsahu: 1..50"

#: ../satellite_tools/satsync.py:2469
#, python-format
msgid "ERROR: no such directory %s"
msgstr "CHYBA: adresÃ¡Å™ %s neexistuje"

#: ../satellite_tools/satsync.py:2474
msgid "Error Codes: Returned codes means:"
msgstr "ChybovÃ© kÃ³dy: VrÃ¡cenÃ© kÃ³dy znamenajÃ­:"

#: ../satellite_tools/satsync.py:2475
msgid " -1  - Could not lock file or KeyboardInterrupt or SystemExit"
msgstr " -1  - Nelze zamknout soubor nebo KeyboardInterrupt nebo SystemExit"

#: ../satellite_tools/satsync.py:2476
msgid "  0  - User interrupted or intentional exit"
msgstr "  0  - UÅ¾ivatel pÅ™eruÅ¡en nebo zÃ¡mÄ›rnÄ› ukonÄen"

#: ../satellite_tools/satsync.py:2477
msgid "  1  - attempting to run more than one instance of mgr-inter-sync."
msgstr "  1  - pokus spustit vÃ­ce neÅ¾ jednu instanci mgr-inter-sync."

#: ../satellite_tools/satsync.py:2478
msgid "  2  - Unable to find synchronization tools."
msgstr "  2  - Nelze najÃ­t synchronizaÄnÃ­ nÃ¡stroje."

#: ../satellite_tools/satsync.py:2479
msgid "  3  - a general socket exception occurred"
msgstr "  3  - doÅ¡lo k obecnÃ© vÃ½jimce soketu"

#: ../satellite_tools/satsync.py:2480
msgid "  4  - an SSL error occurred. Recheck your SSL settings."
msgstr "  4  - doÅ¡lo k chybÄ› SSL. Zkontrolujte nastavenÃ­ SSL."

#: ../satellite_tools/satsync.py:2481
msgid "  5  - ISS error"
msgstr "  5  - chyba ISS"

#: ../satellite_tools/satsync.py:2482
msgid "  6  - unhandled exception occurred"
msgstr "  6  - doÅ¡lo k neoÅ¡etÅ™enÃ© vÃ½jimce"

#: ../satellite_tools/satsync.py:2483
msgid "  7  - unknown sync error"
msgstr "  7  - neznÃ¡mÃ¡ chyba synchronizace"

#: ../satellite_tools/satsync.py:2484
msgid "  8  - ERROR: must be root to execute"
msgstr "  8  - CHYBA: pro spuÅ¡tÄ›nÃ­ musÃ­te bÃ½t root"

#: ../satellite_tools/satsync.py:2485
msgid "  9  - rpclib fault during synchronization init"
msgstr "  9  - chyba rpclib bÄ›hem zahÃ¡jenÃ­ synchronizace"

#: ../satellite_tools/satsync.py:2486
msgid "  10 - synchronization init error"
msgstr "  10 - chyba zahÃ¡jenÃ­ synchronizace"

#: ../satellite_tools/satsync.py:2487
msgid "  11 - Error parsing XML stream"
msgstr "  11 - Chyba pÅ™i analÃ½ze toku XML"

#: ../satellite_tools/satsync.py:2488
msgid "  12 - Channel do not exist"
msgstr "  12 - KanÃ¡l neexistuje"

#: ../satellite_tools/satsync.py:2489
msgid "  13 - SQL error during importing package metadata"
msgstr "  13 - Chyba SQL pÅ™i importu metadat balÃ­Äku"

#: ../satellite_tools/satsync.py:2490
msgid "  14 - SQL error during linking channel packages"
msgstr "  14 - Chyba SQL pÅ™i spojovÃ¡nÃ­ balÃ­ÄkÅ¯ kanÃ¡lÅ¯"

#: ../satellite_tools/satsync.py:2491
msgid "  15 - SQL error during xml processing"
msgstr "  15 - Chyba SQL bÄ›hem zpracovÃ¡nÃ­ xml"

#: ../satellite_tools/satsync.py:2492
msgid "  16 - server.mount_point not set in the configuration file"
msgstr "  16 - server.mount_point nenÃ­ v konfiguraÄnÃ­m souboru nastaven"

#: ../satellite_tools/satsync.py:2493
msgid ""
"  17 - SQL error during retrieving the channels already imported in the SUSE "
"Manager database"
msgstr ""
"  17 - Chyba SQL pÅ™i naÄÃ­tÃ¡nÃ­ kanÃ¡lÅ¯ jiÅ¾ importovanÃ½ch v databÃ¡zi SUSE "
"Manager"

#: ../satellite_tools/satsync.py:2494
msgid "  18 - Wrong db connection string in rhn.conf"
msgstr "  18 - ChybnÃ½ pÅ™ipojovacÃ­ Å™etÄ›zec db v rhn.conf"

#: ../satellite_tools/satsync.py:2495
msgid "  19 - Bad arguments"
msgstr "  19 - Å patnÃ© argumenty"

#: ../satellite_tools/satsync.py:2496
msgid "  20 - Could not connect to db."
msgstr "  20 - Nelze se pÅ™ipojit k databÃ¡zi."

#: ../satellite_tools/satsync.py:2497
msgid "  21 - Bad debug level"
msgstr "  21 - Å patnÃ¡ ÃºroveÅˆ ladÄ›nÃ­"

#: ../satellite_tools/satsync.py:2498
msgid "  22 - Not valid step"
msgstr "  22 - NeplatnÃ½ krok"

#: ../satellite_tools/satsync.py:2499
msgid "  24 - no such file"
msgstr "  24 - soubor neexistuje"

#: ../satellite_tools/satsync.py:2500
msgid "  25 - no such directory"
msgstr "  25 - adresÃ¡Å™ neexistuje"

#: ../satellite_tools/satsync.py:2501
msgid "  26 - mount_point does not exist"
msgstr "  26 - bod pÅ™ipojenÃ­ (mount_point) neexistuje"

#: ../satellite_tools/satsync.py:2502
msgid "  27 - No such org"
msgstr "  27 - Organizace neexistuje"

#: ../satellite_tools/satsync.py:2503
msgid "  28 - error: --master is only valid with --mount-point"
msgstr "  28 - chyba: --master je platnÃ½ pouze s --mount-point"

#: ../satellite_tools/satsync.py:2510
#, python-format
msgid "ERROR: unknown dump version, try one of %s"
msgstr "CHYBA: neznÃ¡mÃ¡ verze vÃ½pisu, zkuste jeden z %s"

#~ msgid "Your system was not found in the RHN database"
#~ msgstr "VÃ¡Å¡ systÃ©m nebyl v databÃ¡zi RHN nalezen"

#~ msgid "ISS is disabled on this satellite."
#~ msgstr "ISS je na tomto satelitu deaktivovÃ¡na."

#~ msgid "Spacewalk Proxy service not enabled for server profile: \"%s\""
#~ msgstr "Profil \"%s\" nemÃ¡ aktivovÃ¡nu sluÅ¾bu Spacewalk Proxy"

#~ msgid "Red Hat Satellite Welcome Message"
#~ msgstr "UvÃ­tacÃ­ zprÃ¡va Red Hat Satellite"

#~ msgid "Red Hat Satellite Privacy Statement"
#~ msgstr "Red Hat Satellite prohlÃ¡Å¡enÃ­ o soukromÃ­"
 07070100000064000081B40000000000000000000000016290A0C10000B685000000000000000000000000000000000000001B00000000spacewalk-backend/po/da.po    # SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
#
# Translators:
# Christian Rose <menthos@menthos.com>, 2002.
# Keld Simonsen <keld@dkuug.dk>, 2002, 2003, 2004, 2005.
# Keld Simonsen <keld@rap.dk>, 2005.
msgid ""
msgstr ""
"Project-Id-Version: Spacewalk\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-10-16 13:34+0200\n"
"PO-Revision-Date: 2011-03-04 16:08+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Danish <dansk@dansk-gruppen.dk>\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"

#: ../server/apacheAuth.py:66
#, python-format
msgid "incomplete proxy authentication token: %s"
msgstr ""

#: ../server/apacheAuth.py:84
#, python-format
msgid "Sent proxy signature %s does not match ours %s."
msgstr ""

#: ../server/apacheAuth.py:119
msgid "declined proxy authentication"
msgstr ""

#: ../server/apacheRequest.py:59
#, python-format
msgid "Invalid request received (%s)."
msgstr ""

#: ../server/apacheRequest.py:120
#, python-format
msgid ""
"IMPORTANT MESSAGE FOLLOWS:\n"
"%s"
msgstr ""

#: ../server/apacheRequest.py:149
#, python-format
msgid ""
"While running '%s': caught\n"
"%s : %s\n"
msgstr ""

#: ../server/apacheRequest.py:606
#, python-format
msgid "Invalid URI %s"
msgstr ""

#: ../server/configFilesHandler.py:129 ../server/handlers/app/packages.py:192
#: ../server/handlers/xmlrpc/registration.py:215
#: ../server/handlers/xmlrpc/registration.py:1168
#: ../server/handlers/xmlrpc/registration.py:1307
#, python-format
msgid ""
"\n"
"                   %s Account has been deactivated on this server.\n"
"                   Please contact your Org administrator for more help."
msgstr ""

#: ../server/handlers/applet/applet.py:78
#, python-brace-format
msgid "Your system was not found in the {PRODUCT_NAME} database"
msgstr ""

#: ../server/handlers/sat/auth.py:45
msgid "ISS is disabled on this server."
msgstr ""

#: ../server/handlers/sat/auth.py:50
#, python-format
msgid "Server \"%s\" is not enabled for ISS."
msgstr ""

#: ../server/handlers/xmlrpc/errata.py:64
#, python-format
msgid "Expected a package name, not: %s"
msgstr ""

#: ../server/handlers/xmlrpc/errata.py:115
#, python-format
msgid "Expected a package, not: %s"
msgstr ""

#: ../server/handlers/xmlrpc/proxy.py:65
#, python-format
msgid "SUSE Manager Proxy service not enabled for server profile: \"%s\""
msgstr ""

#: ../server/handlers/xmlrpc/proxy.py:85
msgid "Invalid session key"
msgstr ""

#: ../server/handlers/xmlrpc/proxy.py:93
msgid "This server ID no longer exists"
msgstr ""

#: ../server/handlers/xmlrpc/queue.py:433
#, python-format
msgid "Invalid action value type %s (%s)"
msgstr ""

#: ../server/handlers/xmlrpc/queue.py:464
#, python-format
msgid "Action %s does not belong to server %s"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:194
msgid "Required data missing"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:198
msgid "Required members missing"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:207
msgid "Attempt to register a system to an invalid username"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:839
msgid "Invalid system release version requested"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1063
msgid ""
"Unable to find a valid network interface, both ipaddr and ip6addr not found."
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1115
#, python-brace-format
msgid "{PRODUCT_NAME} Welcome Message"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1125
msgid "Privacy Statement"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1146
msgid "Expected a dictionary as a product argument"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1374
#, python-format
msgid "Invalid value '%s' for %s (%s)"
msgstr ""

#: ../server/handlers/xmlrpc/scap.py:104
msgid "Invalid system_id/action_id pair."
msgstr ""

#: ../server/handlers/xmlrpc/up2date.py:233
#, python-format
msgid "Invalid value %s (%s)"
msgstr ""

#: ../server/importlib/userAuth.py:98
msgid "You are not authorized to manage packages in the null org"
msgstr ""

#: ../server/importlib/userAuth.py:103
#, python-format
msgid "You are not allowed to manage packages in the %s org"
msgstr ""

#: ../server/importlib/userAuth.py:121
msgid "You are not allowed to perform administrative tasks"
msgstr ""

#: ../server/importlib/userAuth.py:144
#, python-format
msgid ""
"You are not allowed to manage channel %s, or that channel does not exist"
msgstr ""

#: ../server/importlib/userAuth.py:204
#, python-format
msgid ""
"\n"
"               %s Account has been deactivated on this server.\n"
"               Please contact your Org administrator for more help."
msgstr ""

#: ../server/rhnChannel.py:1992
#, python-format
msgid ""
"Your account does not have access to any channels matching "
"(release='%(release)s', arch='%(arch)s')%(www_activation)s"
msgstr ""

#: ../server/rhnChannel.py:2002
msgid ""
"\n"
"If you have a registration number, please register with it first at http://"
"www.redhat.com/apps/activate/ and then try again.\n"
"\n"
msgstr ""

#: ../server/rhnChannel.py:2012
#, python-format
msgid "Insufficient subscription permissions for release (%s, %s"
msgstr ""

#. Various messages that can be reused
#.
#. bretm 02/07/2007 -- when we have better old-client documentation, probably
#. will be safe to get rid of all this crap
#: ../server/rhnChannel.py:2276 ../server/rhnChannel.py:2287
#: ../server/rhnChannel.py:2302
msgid "System Registered but Inactive"
msgstr ""

#: ../server/rhnChannel.py:2277
#, python-format
msgid ""
"\n"
"Invalid Architecture and OS release combination (%s, %s).\n"
"Your system has been registered, but will not receive updates\n"
"because it is not subscribed to a channel. If you have not yet\n"
"activated your product for service, please visit our website at:\n"
"\n"
"     http://www.redhat.com/apps/activate/\n"
"\n"
"...to activate your product."
msgstr ""

#: ../server/rhnChannel.py:2288
#, python-format
msgid ""
"\n"
"Invalid Architecture and OS release combination (%s, %s).\n"
"Your system has been registered, but will not receive updates\n"
"because it could not be subscribed to a base channel.\n"
"Please contact your organization administrator for assistance.\n"
msgstr ""

#: ../server/rhnChannel.py:2295
#, python-format
msgid ""
"\n"
"  This system has been successfully registered, but is not yet entitled\n"
"  to service.  To entitle this system to service, login to the web site at:\n"
"\n"
"  %(entitlement_url)s\n"
msgstr ""

#: ../server/rhnChannel.py:2303
#, python-format
msgid ""
"\n"
"  This system has been successfully registered, but no service entitlements\n"
"  were available.  To entitle this system to service, login to the web site "
"at:\n"
"\n"
"  %(entitlement_url)s\n"
msgstr ""

#: ../server/rhnHandler.py:62
msgid "Please run rhn_register as root on this client"
msgstr ""

#: ../server/rhnHandler.py:75
#, python-format
msgid "Service not enabled for system profile: \"%s\""
msgstr ""

#: ../server/rhnPackage.py:49 ../server/rhnPackage.py:87
#: ../server/rhnPackage.py:107 ../server/rhnPackage.py:158
#, python-format
msgid "Invalid RPM package %s requested"
msgstr ""

#: ../server/rhnPackage.py:112
msgid "Package not found"
msgstr ""

#: ../server/rhnServer/server_class.py:97
#, python-format
msgid "Architecture `%s' is not supported"
msgstr ""

#: ../server/rhnServer/server_token.py:78
#, python-format
msgid "Token `%s' has more than one base channel assigned"
msgstr ""

#: ../server/rhnServer/server_token.py:80
msgid "Conflicting base channels"
msgstr ""

#: ../server/rhnServer/server_token.py:190
#, python-format
msgid "Failed to add server to group %s"
msgstr ""

#: ../server/rhnServer/server_token.py:503
#, python-format
msgid "Maximum usage count of %s reached"
msgstr ""

#: ../server/rhnServer/server_token.py:744
msgid ""
"Stacking of re-registration tokens with different base entitlements is not "
"supported"
msgstr ""

#: ../server/rhnServer/server_token.py:811
#, python-format
msgid "Could not find token '%s'"
msgstr ""

#. Cannot use activation keys from different orgs
#: ../server/rhnServer/server_token.py:843
msgid "Tokens from mismatching orgs"
msgstr ""

#. Two tokens with different kickstart sessions
#: ../server/rhnServer/server_token.py:853
msgid "Kickstart session mismatch"
msgstr ""

#: ../server/rhnServer/server_token.py:877
msgid "Stacking of re-registration tokens is not supported"
msgstr ""

#: ../server/rhnUser.py:289 ../server/rhnUser.py:292
msgid "Invalid username/password combination"
msgstr ""

#. nope, not reserved either
#: ../server/rhnUser.py:467
#, python-format
msgid "Username `%s' has not been reserved"
msgstr ""

#. New accounts have to specify an e-mail address
#: ../server/rhnUser.py:473
msgid "E-mail address not specified"
msgstr ""

#: ../server/rhnUser.py:509
#, python-format
msgid "username should be at least %d characters"
msgstr ""

#: ../server/rhnUser.py:512
#, python-format
msgid "username should be less than %d characters"
msgstr ""

#: ../server/rhnUser.py:523
#, python-format
msgid "username = `%s', invalid character `%s'"
msgstr ""

#: ../server/rhnUser.py:542
#, python-format
msgid "Please limit your e-mail address to %s chars"
msgstr ""

#: ../server/rhnUser.py:623
#, python-format
msgid "password must be at least %d characters"
msgstr ""

#: ../server/rhnUser.py:626
#, python-format
msgid "Password must be shorter than %d characters"
msgstr ""

#: ../server/rhnUser.py:644
#, python-format
msgid "password contains character `%s'"
msgstr ""

#: ../server/rhnUser.py:651
#, python-format
msgid "username should be at least %d characters long"
msgstr ""

#: ../server/rhnUser.py:662
#, python-format
msgid "Cannot register usernames ending with %s"
msgstr ""

#. 0-999: Red Hat client/client-like interaction errors:
#: ../common/rhnException.py:53
msgid "This does not appear to be a valid username."
msgstr ""

#: ../common/rhnException.py:54
msgid "Invalid username and password combination."
msgstr ""

#: ../common/rhnException.py:55
msgid "This login is already taken, or the password is incorrect."
msgstr ""

#: ../common/rhnException.py:56
msgid "Permission denied."
msgstr ""

#: ../common/rhnException.py:57
msgid "Object not found."
msgstr ""

#: ../common/rhnException.py:58
msgid "Invalid System Digital ID."
msgstr ""

#: ../common/rhnException.py:59
msgid "Invalid System Credentials."
msgstr ""

#: ../common/rhnException.py:60
msgid "Could not retrieve user data from database."
msgstr ""

#: ../common/rhnException.py:61
msgid "Valid username required."
msgstr ""

#: ../common/rhnException.py:62
msgid "Valid password required."
msgstr ""

#: ../common/rhnException.py:63
msgid "Minimum username length violation."
msgstr ""

#: ../common/rhnException.py:64
msgid "Minimum password length violation."
msgstr ""

#: ../common/rhnException.py:65
msgid "The username contains invalid characters."
msgstr ""

#: ../common/rhnException.py:66
msgid "File not found."
msgstr ""

#: ../common/rhnException.py:67
msgid "Architecture and OS version combination is not supported."
msgstr ""

#: ../common/rhnException.py:68
msgid "Could not retrieve system data from database."
msgstr ""

#: ../common/rhnException.py:69
msgid "Invalid arguments passed to function."
msgstr ""

#: ../common/rhnException.py:70
msgid "Unable to retrieve requested entry."
msgstr ""

#: ../common/rhnException.py:71
msgid "Could not update database entry."
msgstr ""

#: ../common/rhnException.py:72
msgid "Unsupported server architecture."
msgstr ""

#: ../common/rhnException.py:73
#, python-format
msgid ""
"\n"
"     The anonymous server functionality is no longer available.\n"
"\n"
"     Please re-register this system by running mgr_register as root.\n"
"     Please visit https://%(hostname)s/rhn/systems/SystemEntitlements.do\n"
"     or login at https://%(hostname)s, and from the \"Overview\" tab,\n"
"     select \"Subscription Management\" to enable the service for this "
"system.\n"
"     "
msgstr ""

#: ../common/rhnException.py:81
msgid "Record not available in the database."
msgstr ""

#: ../common/rhnException.py:82
msgid "Invalid value for entry."
msgstr ""

#: ../common/rhnException.py:83
#, python-format
msgid ""
"\n"
"     This system does not have a valid entitlement for SUSE Manager.\n"
"     Please visit https://%(hostname)s/rhn/systems/SystemEntitlements.do\n"
"     or login at https://%(hostname)s, and from the \"Overview\" tab,\n"
"     select \"Subscription Management\" to enable the service for this "
"system.\n"
"     "
msgstr ""

#: ../common/rhnException.py:89
msgid "Channel error"
msgstr ""

#: ../common/rhnException.py:90
msgid "Client session token is invalid."
msgstr ""

#: ../common/rhnException.py:91
msgid "Client session token has expired."
msgstr ""

#: ../common/rhnException.py:92
msgid "You are not authorized to retrieve the requested object."
msgstr ""

#: ../common/rhnException.py:93
msgid "Invalid action"
msgstr ""

#: ../common/rhnException.py:94
msgid "You are not allowed to perform administrative tasks on this system."
msgstr ""

#: ../common/rhnException.py:96
msgid "The system is already subscribed to the specified channel."
msgstr ""

#: ../common/rhnException.py:97
msgid "The system is not currently subscribed to the specified channel."
msgstr ""

#: ../common/rhnException.py:98
msgid "The specified channel does not exist."
msgstr ""

#: ../common/rhnException.py:99
msgid "Invalid channel version."
msgstr ""

#: ../common/rhnException.py:100
msgid ""
"\n"
"     User group membership limits exceeded.\n"
"\n"
"     The current settings for your account do not allow you to add another\n"
"     user account. Please check with the organization administrator for "
"your\n"
"     account if the maximum number of users allowed to subscribe to server "
"needs\n"
"     to be changed.\n"
"     "
msgstr ""

#: ../common/rhnException.py:108
msgid ""
"\n"
"     System group membership limits exceeded.\n"
"\n"
"     The current settings for your account do not allow you to add another\n"
"     system profile. Please check with the organization administrator for "
"your\n"
"     account for modifying the maximum number of system profiles that can "
"be\n"
"     subscribed to your account.\n"
"     "
msgstr ""

#: ../common/rhnException.py:116
msgid ""
"\n"
"     Invalid architecture.\n"
"\n"
"     The architecture of the package is not supported by\n"
"     "
msgstr ""

#: ../common/rhnException.py:121
msgid "Invalid RPM header"
msgstr ""

#: ../common/rhnException.py:122
msgid ""
"\n"
"    This system is already registered as a Salt Minion. If you want to "
"register it as a traditional client\n"
"    please delete it first via the web UI or API and then register it using "
"the traditional tools.\n"
"    "
msgstr ""

#. For the uploading tools
#: ../common/rhnException.py:127
msgid "Invalid information uploaded to the server"
msgstr ""

#: ../common/rhnException.py:128
msgid "Error uploading network interfaces configuration."
msgstr ""

#: ../common/rhnException.py:129
msgid ""
"\n"
"     Package Upload Failed due to uniqueness constraint violation.\n"
"     Make sure the package does not have any duplicate dependencies or\n"
"     does not already exists on the server\n"
"     "
msgstr ""

#: ../common/rhnException.py:134
msgid ""
"\n"
"     The --force rhnpush option is disabled on this server.\n"
"     Please contact your SUSE Manager administrator for more help.\n"
"     "
msgstr ""

#. 60-70: token errors
#: ../common/rhnException.py:140
msgid ""
"\n"
"     The activation token specified could not be found on the server.\n"
"     Please retry with a valid key.\n"
"     "
msgstr ""

#: ../common/rhnException.py:144
msgid "Too many systems registered using this registration token"
msgstr ""

#: ../common/rhnException.py:145
msgid "Token contains invalid, obsoleted or insufficient settings"
msgstr ""

#: ../common/rhnException.py:146
msgid "Conflicting activation tokens"
msgstr ""

#. 70-80: channel subscription errors
#: ../common/rhnException.py:149
msgid ""
"\n"
"     No matching base channel found for your system.\n"
"     "
msgstr ""

#: ../common/rhnException.py:152
msgid ""
"\n"
"     You do not have subscription permission to the designated channel.\n"
"     Please refer to your organization's channel or organization\n"
"     administrators for further details.\n"
"     "
msgstr ""

#: ../common/rhnException.py:157
msgid "You can not unsubscribe from base channel."
msgstr ""

#: ../common/rhnException.py:158
msgid "SUSE Manager or Proxy channel can not be subscribed."
msgstr ""

#. 80-90: server group errors
#: ../common/rhnException.py:161
msgid "There was an error while trying to join the system to its groups"
msgstr ""

#. 90-100: entitlement errors
#: ../common/rhnException.py:164
msgid "Unable to entitle system"
msgstr ""

#. 100-109: e-mail and uuid related faults
#: ../common/rhnException.py:167
msgid "Maximum e-mail length violation."
msgstr ""

#: ../common/rhnException.py:168
msgid "This system has been previously registered."
msgstr ""

#: ../common/rhnException.py:169
msgid "Invalid username"
msgstr ""

#. 140-159 applet errors
#: ../common/rhnException.py:172
msgid "Unable to look up server"
msgstr ""

#. 160-179: OSAD errors
#: ../common/rhnException.py:175
msgid "Required argument is missing"
msgstr ""

#. 600-699: RHEL5+ EN errors
#: ../common/rhnException.py:178
msgid "No entitlement information tied to hardware"
msgstr ""

#: ../common/rhnException.py:179
msgid "Installation number is not entitling"
msgstr ""

#. 700-799: Additional user input verification errors.
#: ../common/rhnException.py:182
msgid "Maximum username length violation"
msgstr ""

#: ../common/rhnException.py:183
msgid "Maximum password length violation"
msgstr ""

#: ../common/rhnException.py:184
msgid "This user has read only API access. Action denied."
msgstr ""

#: ../common/rhnException.py:186
msgid "System Name cannot be less than 1 character"
msgstr ""

#. 1000-1999: Proxy specific errors:
#. issued by a Proxy to the client
#: ../common/rhnException.py:190
msgid "SUSE Manager Proxy error."
msgstr ""

#: ../common/rhnException.py:191
msgid "SUSE Manager Proxy unable to login."
msgstr ""

#. issued by a SUSE Manager Server/Satellite to the proxy
#: ../common/rhnException.py:193
msgid ""
"\n"
"     SUSE Manager Proxy system ID does not match a Spacewalk Proxy Server\n"
"     in the database.\n"
"     "
msgstr ""

#: ../common/rhnException.py:197
msgid "SUSE Manager Proxy session token is invalid."
msgstr ""

#: ../common/rhnException.py:198
msgid "SUSE Manager Proxy session token has expired."
msgstr ""

#. 2000-2999: Red Hat Satellite specific errors:
#: ../common/rhnException.py:202
msgid ""
"\n"
"      user creation is not allowed via mgr_register;\n"
"     please contact your sysadmin to have your account created.\n"
"     "
msgstr ""

#: ../common/rhnException.py:206
msgid ""
"\n"
"     This SUSE Manager server is not allowed to use Inter Server Sync on "
"this server\n"
"     "
msgstr ""

#: ../common/rhnException.py:209
msgid ""
"\n"
"     Inter Server Sync is disabled on this SUSE Manager Server.\n"
"     "
msgstr ""

#. 3000-3999: XML dumper errors:
#: ../common/rhnException.py:214
msgid "Invalid datatype passed"
msgstr ""

#: ../common/rhnException.py:215
msgid "Unable to retrieve channel"
msgstr ""

#: ../common/rhnException.py:216
msgid "Unable to retrieve package"
msgstr ""

#: ../common/rhnException.py:217
msgid "Unable to retrieve erratum"
msgstr ""

#: ../common/rhnException.py:218
msgid "File is missing"
msgstr ""

#: ../common/rhnException.py:219
msgid "Function retrieval error"
msgstr ""

#: ../common/rhnException.py:220
msgid "Function execution error"
msgstr ""

#: ../common/rhnException.py:221
msgid "Missing version string"
msgstr ""

#: ../common/rhnException.py:222
msgid "Invalid version string"
msgstr ""

#: ../common/rhnException.py:223
msgid "Mismatching versions"
msgstr ""

#: ../common/rhnException.py:224
msgid "Invalid channel version"
msgstr ""

#: ../common/rhnException.py:225
msgid "No comps file for channel"
msgstr ""

#: ../common/rhnException.py:226
msgid "Unable to retrieve comps file"
msgstr ""

#. 4000 - 4999: config management errors
#: ../common/rhnException.py:229
msgid "Configuration action missing"
msgstr ""

#: ../common/rhnException.py:230
msgid "File too large"
msgstr ""

#: ../common/rhnException.py:231
msgid "File contains binary data"
msgstr ""

#: ../common/rhnException.py:232
msgid "Configuration channel is not empty"
msgstr ""

#: ../common/rhnException.py:233
msgid "Permission error"
msgstr ""

#: ../common/rhnException.py:234
msgid "Content missing for configuration file"
msgstr ""

#: ../common/rhnException.py:235
msgid "Template delimiters not specified"
msgstr ""

#: ../common/rhnException.py:236
msgid "Configuration channel does not exist"
msgstr ""

#: ../common/rhnException.py:237
msgid "Configuration channel already exists"
msgstr ""

#: ../common/rhnException.py:238
msgid "File missing from configuration channel"
msgstr ""

#: ../common/rhnException.py:239
msgid "Different revision of this file is uploaded"
msgstr ""

#: ../common/rhnException.py:240
msgid "File already uploaded to configuration channel"
msgstr ""

#: ../common/rhnException.py:241
msgid "File size exceeds remaining quota space"
msgstr ""

#: ../common/rhnException.py:242
msgid "Full path of file must be specified"
msgstr ""

#: ../common/rhnException.py:243
msgid "Invalid revision number"
msgstr ""

#: ../common/rhnException.py:244
msgid "Cannot compare files of different file type"
msgstr ""

#. 5000 - 5999: client content uploading errors
#. 5000 - 5099: crash reporting errors
#: ../common/rhnException.py:248
msgid "Crash information is invalid or incomplete"
msgstr ""

#: ../common/rhnException.py:249
msgid "Crash file information is invalid or incomplete"
msgstr ""

#: ../common/rhnException.py:250
msgid "Error composing crash directory path"
msgstr ""

#: ../common/rhnException.py:251
msgid "Error composing crash file path"
msgstr ""

#: ../common/rhnException.py:252 ../common/rhnException.py:259
msgid "Invalid content encoding"
msgstr ""

#: ../common/rhnException.py:253
msgid "Invalid crash name"
msgstr ""

#: ../common/rhnException.py:254
msgid "Crash reporting is disabled for this organization"
msgstr ""

#. 5100 - 5199: scap results reporting error
#: ../common/rhnException.py:256
msgid "SCAP results file transfer is invalid or incomplete"
msgstr ""

#: ../common/rhnException.py:257
msgid "Error composing directory path for detailed SCAP results"
msgstr ""

#: ../common/rhnException.py:258
msgid "Error composing file path for detailed SCAP results"
msgstr ""

#: ../common/rhnException.py:306
msgid ""
"\n"
"     An error has occurred while processing your request. If this problem\n"
"     persists please enter a bug report at scc.suse.com.\n"
"     If you choose to submit the bug report, please be sure to include\n"
"     details of what you were trying to do when this error occurred and\n"
"     details on how to reproduce this problem.\n"
msgstr ""

#: ../common/rhnException.py:358
#, python-format
msgid ""
"Error Message:\n"
"    %s\n"
msgstr ""

#: ../common/rhnException.py:360
#, python-format
msgid "Error Class Code: %s\n"
msgstr ""

#: ../common/rhnException.py:363
#, python-format
msgid "Error Class Info: %s\n"
msgstr ""

#: ../common/rhnException.py:365
#, python-format
msgid "Explanation: %s"
msgstr ""

#: ../common/rhnTB.py:205
#, python-format
msgid "ERROR: %s %s: %s"
msgstr ""

#: ../common/rhnTB.py:207
#, python-format
msgid "TRACEBACK: %s"
msgstr ""

#: ../satellite_tools/disk_dumper/iss.py:1294
#: ../satellite_tools/disk_dumper/iss.py:1298
#, python-format
msgid "format of %s should be at least YYYYMMDD.\n"
msgstr ""

#: ../satellite_tools/messages.py:26
#, python-format
msgid ""
"\n"
"ERROR: executing step %s. Error is:\n"
"%s\n"
msgstr ""

#: ../satellite_tools/messages.py:31
#, python-format
msgid ""
"\n"
"ERROR: there was a problem accessing the channel data from your temporary\n"
"       repository. Did you migrate all of the data from the channel ISOs\n"
"       do this directory? If so, please recheck the channels ISOs, ensure\n"
"       that you have them all, and then iteratively remount and repopulate\n"
"       the temporary repository (%s).\n"
msgstr ""

#: ../satellite_tools/messages.py:39
#, python-format
msgid ""
"\n"
"ERROR: there was a problem synchronizing the information.\n"
"       Error message: %s\n"
msgstr ""

#: ../satellite_tools/messages.py:44
#, python-format
msgid ""
"\n"
"ERROR: There was a problem communicating with the ISS Master.\n"
"       Depending on the specific error details, please review your "
"configuration,\n"
"       basic network connectivity, and/or name resolution, and try again.\n"
"       Error message: %s\n"
msgstr ""

#: ../satellite_tools/messages.py:51
#, python-format
msgid ""
"\n"
"ERROR: There was a problem communicating with the ISS Master.\n"
"       If the master satellite is older than v5.3, it does not have ISS "
"capability.\n"
"       Otherwise, depending on the specific error details, please review "
"your\n"
"       configuration, basic network connectivity, and/or name resolution, "
"and try again.\n"
"       Error message: %s\n"
msgstr ""

#: ../satellite_tools/messages.py:59
#, python-format
msgid ""
"\n"
"ERROR: a child-channel cannot be synced without its parent being synced as\n"
"       well. A parent needs to be either (a) previously synced or (b) "
"synced\n"
"       in tandem with the desired child-channel. Missing parents for this\n"
"       transaction:\n"
"       %s\n"
msgstr ""

#: ../satellite_tools/messages.py:67
#, python-format
msgid ""
"\n"
"ERROR: you are not entitled to sync a channel in this set of channels.\n"
"Please contact your SUSE Manager contact\n"
"%s"
msgstr ""

#: ../satellite_tools/messages.py:72
#, python-format
msgid "  ERROR: not enough free space (%s KB) on device."
msgstr ""

#: ../satellite_tools/messages.py:74
#, python-format
msgid "    %3d/%s Fetch successful: %s (%s bytes)"
msgstr ""

#: ../satellite_tools/messages.py:75
#, python-format
msgid "    Extinct package:  %s"
msgstr ""

#: ../satellite_tools/messages.py:76
#, python-format
msgid "   Total size: %s"
msgstr ""

#: ../satellite_tools/messages.py:77
#, python-format
msgid "      Downloaded %s of %s. Estimated remaining time: %s"
msgstr ""

#: ../satellite_tools/messages.py:78
#, python-format
msgid "    Fetch unsuccessful: %s"
msgstr ""

#: ../satellite_tools/messages.py:79
#, python-format
msgid "   RPM fetch summary: %s"
msgstr ""

#: ../satellite_tools/messages.py:80
#, python-format
msgid "       success: %d"
msgstr ""

#: ../satellite_tools/messages.py:81
#, python-format
msgid "       failed:  %d"
msgstr ""

#: ../satellite_tools/messages.py:82
#, python-format
msgid "       extinct: %d"
msgstr ""

#: ../satellite_tools/messages.py:84
#, python-format
msgid "   Retrieving / parsing *relevant* package metadata: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:85
#, python-format
msgid "   Retrieving / parsing errata data: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:86
#, python-format
msgid "   Retrieving / parsing kickstart data: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:87
#, python-format
msgid "   Retrieving / parsing kickstart tree files: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:88
#, python-format
msgid "   Importing *relevant* package metadata: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:89
msgid "   * WARNING: this may be a slow process."
msgstr ""

#: ../satellite_tools/messages.py:90
msgid "Linking packages to channels"
msgstr ""

#: ../satellite_tools/messages.py:91
#, python-format
msgid "   Importing *relevant* errata: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:92
msgid "   No new kickstartable tree to import"
msgstr ""

#: ../satellite_tools/messages.py:93
#, python-format
msgid "Importing kickstartable trees (%d)"
msgstr ""

#: ../satellite_tools/messages.py:94
#, python-format
msgid "Imported kickstartable trees (%d)"
msgstr ""

#: ../satellite_tools/reposync.py:111 ../satellite_tools/satsync.py:439
msgid "+++ sending log as an email +++"
msgstr ""

#: ../satellite_tools/reposync.py:114
#, python-format
msgid "%s sync. report from %s"
msgstr ""

#: ../satellite_tools/reposync.py:124 ../satellite_tools/satsync.py:449
msgid "+++ email requested, but there is nothing to send +++"
msgstr ""

#: ../satellite_tools/rhn_satellite_activate.py:198
#, python-format
msgid ""
"\"%s\" (specified in commandline)\n"
"could not be opened and read:\n"
"%s"
msgstr ""

#: ../satellite_tools/rhn_satellite_activate.py:205
#, python-format
msgid ""
"\"%s\" could not be opened\n"
"and/or written to:\n"
"%s"
msgstr ""

#: ../satellite_tools/satsync.py:258
#, python-format
msgid "No handler for step %s"
msgstr ""

#. Try one more time - this time it should be faster since
#. everything should be cached
#: ../satellite_tools/satsync.py:270
msgid "Environment changed, trying again..."
msgstr ""

#: ../satellite_tools/satsync.py:277
msgid "ERROR: Encountered IntegrityError: \n"
msgstr ""

#: ../satellite_tools/satsync.py:285
msgid "Repeated failures"
msgstr ""

#: ../satellite_tools/satsync.py:290
#, python-format
msgid ""
"    Import complete:\n"
"        Begin time: %s\n"
"        End time:   %s\n"
"        Elapsed:    %s\n"
"          "
msgstr ""

#: ../satellite_tools/satsync.py:311
msgid "hours"
msgstr ""

#: ../satellite_tools/satsync.py:311
msgid "minutes"
msgstr ""

#: ../satellite_tools/satsync.py:311
msgid "seconds"
msgstr ""

#: ../satellite_tools/satsync.py:357
msgid ""
"ERROR: The dump is missing package data, use --no-rpms to skip this step or "
"fix the content to include package data."
msgstr ""

#. the orgs() method doesn't exist; that's fine we just
#. won't sync the orgs
#: ../satellite_tools/satsync.py:404
msgid "The SUSE Manager master does not support syncing orgs data."
msgstr ""

#: ../satellite_tools/satsync.py:404
msgid "Skipping..."
msgstr ""

#: ../satellite_tools/satsync.py:442
#, python-format
msgid "SUSE Manager Inter Server sync. report from %s"
msgstr ""

#: ../satellite_tools/satsync.py:521
msgid " - file-system synchronization"
msgstr ""

#: ../satellite_tools/satsync.py:533 ../satellite_tools/satsync.py:541
msgid " - live synchronization"
msgstr ""

#: ../satellite_tools/satsync.py:534
#, python-brace-format
msgid ""
"ERROR: Live content synchronizing with RHN Classic Hosted is no longer "
"supported.\n"
"Please use the cdn-sync command instead unless you are attempting to sync "
"from another {PRODUCT_NAME} via Inter-Server-Sync (ISS), or from local "
"content on disk via Channel Dump ISOs."
msgstr ""

#: ../satellite_tools/satsync.py:542
#, python-format
msgid "   url: %s"
msgstr ""

#: ../satellite_tools/satsync.py:543
#, python-format
msgid "   debug/output level: %s"
msgstr ""

#: ../satellite_tools/satsync.py:553
msgid "ERROR: this server must be registered with SUSE Manager."
msgstr ""

#: ../satellite_tools/satsync.py:575
#, python-format
msgid "Retrieving / parsing %s data"
msgstr ""

#: ../satellite_tools/satsync.py:585 ../satellite_tools/satsync.py:600
msgid "*** SYSTEM INTERRUPT CALLED ***"
msgstr ""

#: ../satellite_tools/satsync.py:593
msgid "ERROR: fatal parser exception occurred "
msgstr ""

#: ../satellite_tools/satsync.py:594
#, python-format
msgid "(line: %s, col: %s msg: %s)"
msgstr ""

#: ../satellite_tools/satsync.py:598
#, python-format
msgid "ERROR: parser exception occurred: %s"
msgstr ""

#: ../satellite_tools/satsync.py:603
msgid "ERROR: exception (during parse) occurred: "
msgstr ""

#: ../satellite_tools/satsync.py:604
#, python-format
msgid ""
"   Encountered some errors with %s data (see logs (%s) for more information)"
msgstr ""

#: ../satellite_tools/satsync.py:606
#, python-format
msgid "   Encountered some errors with %s data:"
msgstr ""

#: ../satellite_tools/satsync.py:607
#, python-format
msgid "   ------- %s PARSE/IMPORT ERROR -------"
msgstr ""

#: ../satellite_tools/satsync.py:609
msgid "   ---------------------------------------"
msgstr ""

#: ../satellite_tools/satsync.py:612
#, python-format
msgid "%s data complete"
msgstr ""

#: ../satellite_tools/satsync.py:665
msgid "Retrieving / parsing channel data"
msgstr ""

#: ../satellite_tools/satsync.py:718
msgid "Channel data complete"
msgstr ""

#: ../satellite_tools/satsync.py:736
#, python-format
msgid "%10s import from %s"
msgstr ""

#: ../satellite_tools/satsync.py:739
#, python-format
msgid "%10s import from %s - %s"
msgstr ""

#: ../satellite_tools/satsync.py:743
#, python-format
msgid "%10s"
msgstr ""

#: ../satellite_tools/satsync.py:750
msgid "p"
msgstr ""

#: ../satellite_tools/satsync.py:752
msgid "."
msgstr ""

#: ../satellite_tools/satsync.py:758
msgid "   p = previously imported/synced channel"
msgstr ""

#: ../satellite_tools/satsync.py:759
msgid "   . = channel not yet imported/synced"
msgstr ""

#: ../satellite_tools/satsync.py:765
msgid "   e = channel no longer supported (end-of-service)"
msgstr ""

#: ../satellite_tools/satsync.py:767
msgid "   ? = channel label invalid --- typo?"
msgstr ""

#: ../satellite_tools/satsync.py:771
#, python-format
msgid "   %s:"
msgstr ""

#: ../satellite_tools/satsync.py:772
#, python-format
msgid "      %s %-40s %4s %s"
msgstr ""

#: ../satellite_tools/satsync.py:773
msgid "base-channels"
msgstr ""

#: ../satellite_tools/satsync.py:786 ../satellite_tools/satsync.py:1603
msgid "NONE RELEVANT"
msgstr ""

#: ../satellite_tools/satsync.py:808
msgid "end-of-service"
msgstr ""

#: ../satellite_tools/satsync.py:809
msgid "e"
msgstr ""

#: ../satellite_tools/satsync.py:815
msgid "   typos:"
msgstr ""

#: ../satellite_tools/satsync.py:816
msgid "?"
msgstr ""

#: ../satellite_tools/satsync.py:831
#, python-format
msgid "XXX: imported channels: %s"
msgstr ""

#: ../satellite_tools/satsync.py:832
#, python-format
msgid "XXX:   cached channels: %s"
msgstr ""

#: ../satellite_tools/satsync.py:837
msgid "XXX: list channels called"
msgstr ""

#: ../satellite_tools/satsync.py:855
msgid "ERROR: these channels either do not exist or are not available:"
msgstr ""

#: ../satellite_tools/satsync.py:859
#, python-format
msgid "       (to see a list of channel labels: %s --list-channels)"
msgstr ""

#: ../satellite_tools/satsync.py:904
#, python-format
msgid "   Retrieving / parsing short package metadata: %s (%s)"
msgstr ""

#: ../satellite_tools/satsync.py:965
#, python-format
msgid "Diffing package metadata (what's missing locally?): %s"
msgstr ""

#: ../satellite_tools/satsync.py:971 ../satellite_tools/satsync.py:1254
msgid "Diffing:    "
msgstr ""

#: ../satellite_tools/satsync.py:988
msgid "ERROR: incremental dump skipped"
msgstr ""

#: ../satellite_tools/satsync.py:1079
msgid "Downloading rpm packages"
msgstr ""

#: ../satellite_tools/satsync.py:1084
#, python-format
msgid "   Fetching any missing RPMs: %s (%s)"
msgstr ""

#: ../satellite_tools/satsync.py:1085 ../satellite_tools/satsync.py:1153
msgid "NONE MISSING"
msgstr ""

#: ../satellite_tools/satsync.py:1094
msgid "Processing rpm packages complete"
msgstr ""

#: ../satellite_tools/satsync.py:1121
msgid "Downloading package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1146
msgid "Downloading srpm packages"
msgstr ""

#: ../satellite_tools/satsync.py:1152
#, python-format
msgid "   Fetching any missing SRPMs: %s (%s)"
msgstr ""

#: ../satellite_tools/satsync.py:1249
#, python-format
msgid "Diffing source package metadata (what's missing locally?): %s"
msgstr ""

#: ../satellite_tools/satsync.py:1260
msgid "Downloading source package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1338 ../satellite_tools/satsync.py:2027
#, python-format
msgid "Unable to save file %s: %s"
msgstr ""

#. for
#. Retried a number of times and it still failed; log the
#. file as being failed and move on
#: ../satellite_tools/satsync.py:1345
#, python-format
msgid "Failed to fetch file %s"
msgstr ""

#: ../satellite_tools/satsync.py:1350
msgid "Downloading kickstartable trees metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1365
msgid "Downloading kickstartable trees files"
msgstr ""

#: ../satellite_tools/satsync.py:1504
#, python-format
msgid "Grabbing all patches for channel %s"
msgstr ""

#: ../satellite_tools/satsync.py:1554
msgid "Downloading patch data"
msgstr ""

#: ../satellite_tools/satsync.py:1556
msgid "Forcing download of all patch data for requested channels."
msgstr ""

#: ../satellite_tools/satsync.py:1571
msgid "Downloading patch data complete"
msgstr ""

#: ../satellite_tools/satsync.py:1576 ../satellite_tools/satsync.py:1597
msgid "Downloading:"
msgstr ""

#: ../satellite_tools/satsync.py:1579
msgid " - complete"
msgstr ""

#: ../satellite_tools/satsync.py:1624
msgid "Importing source package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1627
msgid "Importing package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1635
msgid "Importing:  "
msgstr ""

#. not in the cache
#: ../satellite_tools/satsync.py:1703
msgid ""
"Package Not Found in Cache, Clear the Cache "
"to                                  Regenerate it."
msgstr ""

#: ../satellite_tools/satsync.py:1709
msgid "Importing channel patches"
msgstr ""

#: ../satellite_tools/satsync.py:1714
#, python-format
msgid "Importing %s patches for channel %s."
msgstr ""

#. Incomplete configuration
#: ../satellite_tools/satsync.py:2113
msgid "ERROR: server.mount_point not set in the configuration file"
msgstr ""

#: ../satellite_tools/satsync.py:2117
#, python-format
msgid "ERROR: server.mount_point %s do not exist"
msgstr ""

#: ../satellite_tools/satsync.py:2122
#, python-format
msgid "ERROR: path under server.mount_point (%s)  do not exist"
msgstr ""

#: ../satellite_tools/satsync.py:2199
#, python-format
msgid "Commandline: %s"
msgstr ""

#: ../satellite_tools/satsync.py:2202
#, python-format
msgid ""
"DEBUG ONLY: max. batch-size for XML/database-import processing (1..%s).\"man "
"satellite-sync\" for more information."
msgstr ""

#: ../satellite_tools/satsync.py:2205
msgid "alternative SSL CA Cert (fullpath to cert file)"
msgstr ""

#: ../satellite_tools/satsync.py:2207
msgid "process data for this channel only"
msgstr ""

#: ../satellite_tools/satsync.py:2209
msgid ""
"disk dump will be considered to be a full export; see \"man satellite-sync\" "
"for more information."
msgstr ""

#: ../satellite_tools/satsync.py:2212
msgid "existing custom channels will also be synced (unless -c is used)"
msgstr ""

#: ../satellite_tools/satsync.py:2214
#, python-format
msgid ""
"override debug level set in /etc/rhn/rhn.conf (which is currently set at %s)."
msgstr ""

#: ../satellite_tools/satsync.py:2216
#, python-format
msgid "requested version of XML dump (default: %s)"
msgstr ""

#: ../satellite_tools/satsync.py:2218
msgid "e-mail a report of what was synced/imported"
msgstr ""

#: ../satellite_tools/satsync.py:2220
msgid "forcibly process all (not a diff of) patch metadata"
msgstr ""

#: ../satellite_tools/satsync.py:2222
msgid "Do not use an http proxy under any circumstances."
msgstr ""

#: ../satellite_tools/satsync.py:2224
msgid "alternative http proxy (hostname:port)"
msgstr ""

#: ../satellite_tools/satsync.py:2226
msgid "alternative http proxy username"
msgstr ""

#: ../satellite_tools/satsync.py:2228
msgid "alternative http proxy password"
msgstr ""

#: ../satellite_tools/satsync.py:2230
msgid "parent SUSE Manager to import content from"
msgstr ""

#: ../satellite_tools/satsync.py:2232
msgid "list all available channels and exit"
msgstr ""

#: ../satellite_tools/satsync.py:2234
msgid "help on all error codes mgr-inter-sync returns"
msgstr ""

#: ../satellite_tools/satsync.py:2236
msgid "source mount point for import - disk update only"
msgstr ""

#: ../satellite_tools/satsync.py:2238
msgid "do not process patch data"
msgstr ""

#: ../satellite_tools/satsync.py:2240
msgid "do not process kickstart data (provisioning only)"
msgstr ""

#: ../satellite_tools/satsync.py:2242
msgid "do not process full package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:2244
msgid "do not download, or process any RPMs"
msgstr ""

#: ../satellite_tools/satsync.py:2246
msgid "turn off SSL (not recommended)"
msgstr ""

#: ../satellite_tools/satsync.py:2248
msgid "org to which the sync imports data. defaults to the admin account"
msgstr ""

#: ../satellite_tools/satsync.py:2250
msgid "print the configuration and exit"
msgstr ""

#: ../satellite_tools/satsync.py:2252
msgid "alternative server with which to connect (hostname)"
msgstr ""

#: ../satellite_tools/satsync.py:2254
msgid "synchronize to this step (man satellite-sync for more info)"
msgstr ""

#: ../satellite_tools/satsync.py:2256
msgid "write complete data to tempfile before streaming to remainder of app"
msgstr ""

#: ../satellite_tools/satsync.py:2258
msgid "DEBUG ONLY: alternative path to digital system id"
msgstr ""

#: ../satellite_tools/satsync.py:2260
msgid "alternative email address(es) for sync output (--email option)"
msgstr ""

#: ../satellite_tools/satsync.py:2262
msgid "do not remove rpms when importing from local dump"
msgstr ""

#: ../satellite_tools/satsync.py:2264
msgid ""
"the fully qualified domain name of the master Satellite. Valid with --mount-"
"point only. Required if you want to import org data and channel permissions."
msgstr ""

#: ../satellite_tools/satsync.py:2274
#, python-format
msgid "ERROR: these arguments make no sense in this context (try --help): %s"
msgstr ""

#. An SQL error is fatal... crash and burn
#: ../satellite_tools/satsync.py:2286
#, python-format
msgid "ERROR: Can't connect to the database: %s"
msgstr ""

#: ../satellite_tools/satsync.py:2287
msgid "ERROR: Check if your database is running."
msgstr ""

#: ../satellite_tools/satsync.py:2322
#, python-format
msgid "ERROR: --debug-level takes an in integer value within the range %s."
msgstr ""

#: ../satellite_tools/satsync.py:2324
msgid "  0  - little logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2325
msgid "  1  - minimal logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2326
msgid "  2  - normal level of logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2327
msgid "  3  - lots of logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2328
msgid "  4+ - excessive logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2341
msgid "ERROR: The --master option is only valid with the --mount-point option"
msgstr ""

#: ../satellite_tools/satsync.py:2351
#, python-format
msgid "ERROR: Unable to lookup Org Id %s"
msgstr ""

#: ../satellite_tools/satsync.py:2360
msgid ""
"WARNING: --list-channels option overrides any --step option. --step ignored."
msgstr ""

#: ../satellite_tools/satsync.py:2375
#, python-format
msgid ""
"ERROR: '%s' is not a valid step. See 'man mgr-inter-sync' for more detail."
msgstr ""

#: ../satellite_tools/satsync.py:2407
msgid ""
"ERROR: No channels currently imported; try mgr-inter-sync --list-channels; "
"then mgr-inter-sync -c chn0 -c chn1..."
msgstr ""

#. int(None) --> TypeError
#. int('a')  --> ValueError
#: ../satellite_tools/satsync.py:2457 ../satellite_tools/satsync.py:2461
msgid "ERROR: --batch-size must have a value within the range: 1..50"
msgstr ""

#: ../satellite_tools/satsync.py:2469
#, python-format
msgid "ERROR: no such directory %s"
msgstr ""

#: ../satellite_tools/satsync.py:2474
msgid "Error Codes: Returned codes means:"
msgstr ""

#: ../satellite_tools/satsync.py:2475
msgid " -1  - Could not lock file or KeyboardInterrupt or SystemExit"
msgstr ""

#: ../satellite_tools/satsync.py:2476
msgid "  0  - User interrupted or intentional exit"
msgstr ""

#: ../satellite_tools/satsync.py:2477
msgid "  1  - attempting to run more than one instance of mgr-inter-sync."
msgstr ""

#: ../satellite_tools/satsync.py:2478
msgid "  2  - Unable to find synchronization tools."
msgstr ""

#: ../satellite_tools/satsync.py:2479
msgid "  3  - a general socket exception occurred"
msgstr ""

#: ../satellite_tools/satsync.py:2480
msgid "  4  - an SSL error occurred. Recheck your SSL settings."
msgstr ""

#: ../satellite_tools/satsync.py:2481
msgid "  5  - ISS error"
msgstr ""

#: ../satellite_tools/satsync.py:2482
msgid "  6  - unhandled exception occurred"
msgstr ""

#: ../satellite_tools/satsync.py:2483
msgid "  7  - unknown sync error"
msgstr ""

#: ../satellite_tools/satsync.py:2484
msgid "  8  - ERROR: must be root to execute"
msgstr ""

#: ../satellite_tools/satsync.py:2485
msgid "  9  - rpclib fault during synchronization init"
msgstr ""

#: ../satellite_tools/satsync.py:2486
msgid "  10 - synchronization init error"
msgstr ""

#: ../satellite_tools/satsync.py:2487
msgid "  11 - Error parsing XML stream"
msgstr ""

#: ../satellite_tools/satsync.py:2488
msgid "  12 - Channel do not exist"
msgstr ""

#: ../satellite_tools/satsync.py:2489
msgid "  13 - SQL error during importing package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:2490
msgid "  14 - SQL error during linking channel packages"
msgstr ""

#: ../satellite_tools/satsync.py:2491
msgid "  15 - SQL error during xml processing"
msgstr ""

#: ../satellite_tools/satsync.py:2492
msgid "  16 - server.mount_point not set in the configuration file"
msgstr ""

#: ../satellite_tools/satsync.py:2493
msgid ""
"  17 - SQL error during retrieving the channels already imported in the SUSE "
"Manager database"
msgstr ""

#: ../satellite_tools/satsync.py:2494
msgid "  18 - Wrong db connection string in rhn.conf"
msgstr ""

#: ../satellite_tools/satsync.py:2495
msgid "  19 - Bad arguments"
msgstr ""

#: ../satellite_tools/satsync.py:2496
msgid "  20 - Could not connect to db."
msgstr ""

#: ../satellite_tools/satsync.py:2497
msgid "  21 - Bad debug level"
msgstr ""

#: ../satellite_tools/satsync.py:2498
msgid "  22 - Not valid step"
msgstr ""

#: ../satellite_tools/satsync.py:2499
msgid "  24 - no such file"
msgstr ""

#: ../satellite_tools/satsync.py:2500
msgid "  25 - no such directory"
msgstr ""

#: ../satellite_tools/satsync.py:2501
msgid "  26 - mount_point does not exist"
msgstr ""

#: ../satellite_tools/satsync.py:2502
msgid "  27 - No such org"
msgstr ""

#: ../satellite_tools/satsync.py:2503
msgid "  28 - error: --master is only valid with --mount-point"
msgstr ""

#: ../satellite_tools/satsync.py:2510
#, python-format
msgid "ERROR: unknown dump version, try one of %s"
msgstr ""
   07070100000065000081B40000000000000000000000016290A0C10000DA30000000000000000000000000000000000000001B00000000spacewalk-backend/po/de.po    # SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
#
# Translators:
# Bernd Groh <bgroh@redhat.com>, 2003.
# Gerd Koenig <koenig.ulm@googlemail.com>, 2012.
# Miroslav SuchÃ½ <msuchy@redhat.com>, 2011.
# sknirT omiT <moc.tahder@sknirtt>, 2010.
# Timo Trinks <ttrinks@redhat.com>, 2006.
# Verena <vfuehrer@redhat.com>, 2004-2005.
# Jiri Dostal <jdostal@redhat.com>, 2018. #zanata
msgid ""
msgstr ""
"Project-Id-Version: Spacewalk\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-10-16 13:34+0200\n"
"PO-Revision-Date: 2020-09-25 10:29+0000\n"
"Last-Translator: Michael Calmer <mc@suse.com>\n"
"Language-Team: German <https://l10n.opensuse.org/projects/uyuni/backend/de/"
">\n"
"Language: de\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 3.6.1\n"

#: ../server/apacheAuth.py:66
#, python-format
msgid "incomplete proxy authentication token: %s"
msgstr "unvollstÃ¤ndige Kennung zur Proxyauthentisierung: %s"

#: ../server/apacheAuth.py:84
#, python-format
msgid "Sent proxy signature %s does not match ours %s."
msgstr "die gesendete Proxysignatur %s stimmt mit unserer (%s) nicht Ã¼berein"

#: ../server/apacheAuth.py:119
msgid "declined proxy authentication"
msgstr "abgewiesene Proxyauthentisierung"

#: ../server/apacheRequest.py:59
#, python-format
msgid "Invalid request received (%s)."
msgstr "UngÃ¼ltige Anfrage erhalten (%s)."

#: ../server/apacheRequest.py:120
#, python-format
msgid ""
"IMPORTANT MESSAGE FOLLOWS:\n"
"%s"
msgstr ""
"NACHFOLGEND EINE WICHTIGE NACHRICHT:\n"
"%s"

#: ../server/apacheRequest.py:149
#, python-format
msgid ""
"While running '%s': caught\n"
"%s : %s\n"
msgstr ""

#: ../server/apacheRequest.py:606
#, python-format
msgid "Invalid URI %s"
msgstr "UngÃ¼ltige URI %s"

#: ../server/configFilesHandler.py:129 ../server/handlers/app/packages.py:192
#: ../server/handlers/xmlrpc/registration.py:215
#: ../server/handlers/xmlrpc/registration.py:1168
#: ../server/handlers/xmlrpc/registration.py:1307
#, python-format
msgid ""
"\n"
"                   %s Account has been deactivated on this server.\n"
"                   Please contact your Org administrator for more help."
msgstr ""
"\n"
"                   %s Benutzer wurde auf diesem Server deaktiviert.\n"
"                   Bitte kontaktieren Sie Ihren Org-Administrator fÃ¼r Hilfe."

#: ../server/handlers/applet/applet.py:78
#, fuzzy, python-brace-format
msgid "Your system was not found in the {PRODUCT_NAME} database"
msgstr "Ihr System wurde in der RHN Datenbank nicht gefunden"

#: ../server/handlers/sat/auth.py:45
msgid "ISS is disabled on this server."
msgstr "ISS ist auf diesem Server deaktiviert."

#: ../server/handlers/sat/auth.py:50
#, python-format
msgid "Server \"%s\" is not enabled for ISS."
msgstr "Server \"%s\" nicht fÃ¼r ISS aktiviert."

#: ../server/handlers/xmlrpc/errata.py:64
#, python-format
msgid "Expected a package name, not: %s"
msgstr "Paketname erwartet, nicht: %s"

#: ../server/handlers/xmlrpc/errata.py:115
#, python-format
msgid "Expected a package, not: %s"
msgstr "Paket erwartet, nicht: %s"

#: ../server/handlers/xmlrpc/proxy.py:65
#, python-format
msgid "SUSE Manager Proxy service not enabled for server profile: \"%s\""
msgstr ""
"SUSE Manager Proxy Dienst ist nicht fÃ¼r das Server-Profil \"%s\" aktiviert"

#: ../server/handlers/xmlrpc/proxy.py:85
msgid "Invalid session key"
msgstr "UngÃ¼ltiger SitzungsschlÃ¼ssel"

#: ../server/handlers/xmlrpc/proxy.py:93
msgid "This server ID no longer exists"
msgstr "Diese Server-ID existiert nicht mehr"

#: ../server/handlers/xmlrpc/queue.py:433
#, python-format
msgid "Invalid action value type %s (%s)"
msgstr "UngÃ¼ltiger Aktionswerttyp %s (%s)"

#: ../server/handlers/xmlrpc/queue.py:464
#, python-format
msgid "Action %s does not belong to server %s"
msgstr "Aktion %s gehÃ¶rt nicht zu Server %s"

#: ../server/handlers/xmlrpc/registration.py:194
msgid "Required data missing"
msgstr "Erforderliche Daten nicht vorhanden"

#: ../server/handlers/xmlrpc/registration.py:198
msgid "Required members missing"
msgstr "Erforderliche Mitglieder fehlen"

#: ../server/handlers/xmlrpc/registration.py:207
msgid "Attempt to register a system to an invalid username"
msgstr "Versuch, ein System mit einem ungÃ¼ltigen Benutzernamen zu registrieren"

#: ../server/handlers/xmlrpc/registration.py:839
msgid "Invalid system release version requested"
msgstr "UngÃ¼ltige System-Release-Version angefordert"

#: ../server/handlers/xmlrpc/registration.py:1063
msgid ""
"Unable to find a valid network interface, both ipaddr and ip6addr not found."
msgstr ""
"Kein gÃ¼ltiges Netzwerk Interface gefunden. Sowohl ipaddr als auch ip6addr "
"konnten nicht gefunden werden."

#: ../server/handlers/xmlrpc/registration.py:1115
#, python-brace-format
msgid "{PRODUCT_NAME} Welcome Message"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1125
#, fuzzy
msgid "Privacy Statement"
msgstr "SUSE Manager DatenschutzerklÃ¤rung"

#: ../server/handlers/xmlrpc/registration.py:1146
msgid "Expected a dictionary as a product argument"
msgstr "Es wurde ein WÃ¶rterbuch als Produktargument erwartet"

#: ../server/handlers/xmlrpc/registration.py:1374
#, python-format
msgid "Invalid value '%s' for %s (%s)"
msgstr "UngÃ¼ltiger Wert '%s' fÃ¼r %s (%s)"

#: ../server/handlers/xmlrpc/scap.py:104
msgid "Invalid system_id/action_id pair."
msgstr "UngÃ¼ltiges system_id/action_id Paar."

#: ../server/handlers/xmlrpc/up2date.py:233
#, python-format
msgid "Invalid value %s (%s)"
msgstr "UngÃ¼ltiger Wert %s (%s)"

#: ../server/importlib/userAuth.py:98
msgid "You are not authorized to manage packages in the null org"
msgstr "Sie haben keine Berechtigungen, Pakete in der Null-Org zu verwalten"

#: ../server/importlib/userAuth.py:103
#, python-format
msgid "You are not allowed to manage packages in the %s org"
msgstr "Sie dÃ¼rfen keine Pakete in der %s-Org verwalten"

#: ../server/importlib/userAuth.py:121
msgid "You are not allowed to perform administrative tasks"
msgstr "Sie dÃ¼rfen keine administrativen Aufgaben durchfÃ¼hren"

#: ../server/importlib/userAuth.py:144
#, python-format
msgid ""
"You are not allowed to manage channel %s, or that channel does not exist"
msgstr ""
"Sie dÃ¼rfen Channel %s nicht verwalten, oder dieser Channel existiert nicht"

#: ../server/importlib/userAuth.py:204
#, fuzzy, python-format
msgid ""
"\n"
"               %s Account has been deactivated on this server.\n"
"               Please contact your Org administrator for more help."
msgstr ""
"\n"
"                   %s Benutzer wurde auf diesem Server deaktiviert.\n"
"                   Bitte kontaktieren Sie Ihren Org-Administrator fÃ¼r Hilfe."

#: ../server/rhnChannel.py:1992
#, python-format
msgid ""
"Your account does not have access to any channels matching "
"(release='%(release)s', arch='%(arch)s')%(www_activation)s"
msgstr ""

#: ../server/rhnChannel.py:2002
msgid ""
"\n"
"If you have a registration number, please register with it first at http://"
"www.redhat.com/apps/activate/ and then try again.\n"
"\n"
msgstr ""

#: ../server/rhnChannel.py:2012
#, python-format
msgid "Insufficient subscription permissions for release (%s, %s"
msgstr "UngenÃ¼gende Berechtigung fÃ¼r Release (%s, %s"

#. Various messages that can be reused
#.
#. bretm 02/07/2007 -- when we have better old-client documentation, probably
#. will be safe to get rid of all this crap
#: ../server/rhnChannel.py:2276 ../server/rhnChannel.py:2287
#: ../server/rhnChannel.py:2302
msgid "System Registered but Inactive"
msgstr "System registriert, aber inaktiv"

#: ../server/rhnChannel.py:2277
#, fuzzy, python-format
msgid ""
"\n"
"Invalid Architecture and OS release combination (%s, %s).\n"
"Your system has been registered, but will not receive updates\n"
"because it is not subscribed to a channel. If you have not yet\n"
"activated your product for service, please visit our website at:\n"
"\n"
"     http://www.redhat.com/apps/activate/\n"
"\n"
"...to activate your product."
msgstr ""
"\n"
"UngÃ¼ltige Kombination aus Architektur und Betriebssystemversion (%s, %s).\n"
"Ihr System wurde registriert, wird aber keine Updates erhalten, da es "
"keinen\n"
"Channel abonniert hat. Falls Sie Ihr System bislang nicht aktiviert haben,\n"
"besuchen Sie bitte unsere Webseite unter:\n"
"  \n"
"     http://www.redhat.com/apps/activate/\n"
"\n"
"...um Ihr Produkt zu aktivieren."

#: ../server/rhnChannel.py:2288
#, python-format
msgid ""
"\n"
"Invalid Architecture and OS release combination (%s, %s).\n"
"Your system has been registered, but will not receive updates\n"
"because it could not be subscribed to a base channel.\n"
"Please contact your organization administrator for assistance.\n"
msgstr ""
"\n"
"UngÃ¼ltige Kombination aus Architektur und Betriebssystemversion (%s, %s).\n"
"Ihr System wurde registriert, wird aber keine Updates erhalten da es keinen\n"
"Basis-Channel abonnieren konnte.\n"
"Bitte kontaktieren Sie zwecks UnterstÃ¼tzung den Org-Administrator.\n"

#: ../server/rhnChannel.py:2295
#, python-format
msgid ""
"\n"
"  This system has been successfully registered, but is not yet entitled\n"
"  to service.  To entitle this system to service, login to the web site at:\n"
"\n"
"  %(entitlement_url)s\n"
msgstr ""

#: ../server/rhnChannel.py:2303
#, python-format
msgid ""
"\n"
"  This system has been successfully registered, but no service entitlements\n"
"  were available.  To entitle this system to service, login to the web site "
"at:\n"
"\n"
"  %(entitlement_url)s\n"
msgstr ""

#: ../server/rhnHandler.py:62
msgid "Please run rhn_register as root on this client"
msgstr ""

#: ../server/rhnHandler.py:75
#, python-format
msgid "Service not enabled for system profile: \"%s\""
msgstr "Der Dienst ist fÃ¼r das Systemprofil: \"%s\" nicht aktiviert"

#: ../server/rhnPackage.py:49 ../server/rhnPackage.py:87
#: ../server/rhnPackage.py:107 ../server/rhnPackage.py:158
#, python-format
msgid "Invalid RPM package %s requested"
msgstr "ungÃ¼ltiges rpm Paket %s angefordert"

#: ../server/rhnPackage.py:112
msgid "Package not found"
msgstr "Paket nicht gefunden"

#: ../server/rhnServer/server_class.py:97
#, python-format
msgid "Architecture `%s' is not supported"
msgstr "die Architektur '%s' wird nicht unterstÃ¼tzt"

#: ../server/rhnServer/server_token.py:78
#, python-format
msgid "Token `%s' has more than one base channel assigned"
msgstr "Kennung '%s' hat mehr als einen zugewiesenen Channel"

#: ../server/rhnServer/server_token.py:80
msgid "Conflicting base channels"
msgstr "Konflikt zwischen Basis-Channels"

#: ../server/rhnServer/server_token.py:190
#, python-format
msgid "Failed to add server to group %s"
msgstr "Fehler beim HinzufÃ¼gen des Servers zur Gruppe %s"

#: ../server/rhnServer/server_token.py:503
#, python-format
msgid "Maximum usage count of %s reached"
msgstr "Maximale Nutzung von %s erreicht"

#: ../server/rhnServer/server_token.py:744
msgid ""
"Stacking of re-registration tokens with different base entitlements is not "
"supported"
msgstr ""

#: ../server/rhnServer/server_token.py:811
#, python-format
msgid "Could not find token '%s'"
msgstr "Konnte Token '%s' nicht finden"

#. Cannot use activation keys from different orgs
#: ../server/rhnServer/server_token.py:843
msgid "Tokens from mismatching orgs"
msgstr "Tokens von nicht Ã¼bereinstimmenden Orgs"

#. Two tokens with different kickstart sessions
#: ../server/rhnServer/server_token.py:853
msgid "Kickstart session mismatch"
msgstr "Kickstart-Sitzung stimmt nicht Ã¼berein"

#: ../server/rhnServer/server_token.py:877
msgid "Stacking of re-registration tokens is not supported"
msgstr ""

#: ../server/rhnUser.py:289 ../server/rhnUser.py:292
msgid "Invalid username/password combination"
msgstr "UngÃ¼ltige Kombination von Benutzername und Passwort"

#. nope, not reserved either
#: ../server/rhnUser.py:467
#, python-format
msgid "Username `%s' has not been reserved"
msgstr "der Benutzername '%s' wurde nicht reserviert"

#. New accounts have to specify an e-mail address
#: ../server/rhnUser.py:473
msgid "E-mail address not specified"
msgstr "die Emailadresse wurde nicht angegeben"

#: ../server/rhnUser.py:509
#, python-format
msgid "username should be at least %d characters"
msgstr "der Benutzername muss mindestens %d Zeichen lang sein"

#: ../server/rhnUser.py:512
#, python-format
msgid "username should be less than %d characters"
msgstr "der Benutzername darf hÃ¶chstens %d Zeichen lang sein"

#: ../server/rhnUser.py:523
#, python-format
msgid "username = `%s', invalid character `%s'"
msgstr "Benutzername = '%s', ungÃ¼ltiges Zeichen '%s'"

#: ../server/rhnUser.py:542
#, python-format
msgid "Please limit your e-mail address to %s chars"
msgstr "Bitte beschrÃ¤nken Sie Ihre Emailadresse auf %s Zeichen"

#: ../server/rhnUser.py:623
#, python-format
msgid "password must be at least %d characters"
msgstr "das Passwort muss mindestens %d Zeichen lang sein"

#: ../server/rhnUser.py:626
#, python-format
msgid "Password must be shorter than %d characters"
msgstr "Das Passwort darf hÃ¶chstens %d Zeichen lang sein"

#: ../server/rhnUser.py:644
#, python-format
msgid "password contains character `%s'"
msgstr "das Passwort enthÃ¤lt das Zeichen `%s'"

#: ../server/rhnUser.py:651
#, python-format
msgid "username should be at least %d characters long"
msgstr "der Benutzername muss mindestens %d Zeichen lang sein"

#: ../server/rhnUser.py:662
#, python-format
msgid "Cannot register usernames ending with %s"
msgstr "Benutzernamen, die auf %s enden kÃ¶nnen nicht registriert werden"

#. 0-999: Red Hat client/client-like interaction errors:
#: ../common/rhnException.py:53
msgid "This does not appear to be a valid username."
msgstr "Dies scheint kein gÃ¼ltiger Benutzername zu sein."

#: ../common/rhnException.py:54
msgid "Invalid username and password combination."
msgstr "UngÃ¼ltige Kombination von Benutzername und Passwort"

#: ../common/rhnException.py:55
msgid "This login is already taken, or the password is incorrect."
msgstr "Dieses Login wird bereits verwendet oder das Passwort ist falsch."

#: ../common/rhnException.py:56
msgid "Permission denied."
msgstr "Zugriff verweigert."

#: ../common/rhnException.py:57
msgid "Object not found."
msgstr "Objekt nicht gefunden."

#: ../common/rhnException.py:58
msgid "Invalid System Digital ID."
msgstr "UngÃ¼ltige System Digital-ID."

#: ../common/rhnException.py:59
msgid "Invalid System Credentials."
msgstr "UngÃ¼ltige System-Berechtigungsnachweise."

#: ../common/rhnException.py:60
msgid "Could not retrieve user data from database."
msgstr "Benutzerdaten konnten nicht von Datenbank abrufen werden."

#: ../common/rhnException.py:61
msgid "Valid username required."
msgstr "GÃ¼ltiger Benutzername erforderlich."

#: ../common/rhnException.py:62
msgid "Valid password required."
msgstr "GÃ¼ltiges Passwort erforderlich."

#: ../common/rhnException.py:63
msgid "Minimum username length violation."
msgstr "MinimallÃ¤nge des Benutzernamen nicht erfÃ¼llt."

#: ../common/rhnException.py:64
msgid "Minimum password length violation."
msgstr "MinimallÃ¤nge des Passworts nicht erfÃ¼llt."

#: ../common/rhnException.py:65
msgid "The username contains invalid characters."
msgstr "Der Benutzername enthÃ¤lt ungÃ¼ltige Zeichen."

#: ../common/rhnException.py:66
msgid "File not found."
msgstr "Datei nicht gefunden."

#: ../common/rhnException.py:67
msgid "Architecture and OS version combination is not supported."
msgstr ""
"Diese Kombination aus Architektur und OS Version wird nicht unterstÃ¼tzt."

#: ../common/rhnException.py:68
msgid "Could not retrieve system data from database."
msgstr "Systemdaten konnten in der Datenbank nicht gefunden werden."

#: ../common/rhnException.py:69
msgid "Invalid arguments passed to function."
msgstr "Der Funktion wurden ungÃ¼ltige Werte Ã¼bergeben."

#: ../common/rhnException.py:70
msgid "Unable to retrieve requested entry."
msgstr "Eintrag konnte nicht abgerufen werden."

#: ../common/rhnException.py:71
msgid "Could not update database entry."
msgstr "Datenbankeintrag konnte nicht aktualisiert werden."

#: ../common/rhnException.py:72
msgid "Unsupported server architecture."
msgstr "Serverarchitektur wird nicht unterstÃ¼tzt."

#: ../common/rhnException.py:73
#, python-format
msgid ""
"\n"
"     The anonymous server functionality is no longer available.\n"
"\n"
"     Please re-register this system by running mgr_register as root.\n"
"     Please visit https://%(hostname)s/rhn/systems/SystemEntitlements.do\n"
"     or login at https://%(hostname)s, and from the \"Overview\" tab,\n"
"     select \"Subscription Management\" to enable the service for this "
"system.\n"
"     "
msgstr ""

#: ../common/rhnException.py:81
msgid "Record not available in the database."
msgstr "Kein Eintrag in der Datenbank."

#: ../common/rhnException.py:82
msgid "Invalid value for entry."
msgstr "UngÃ¼ltiger Wert."

#: ../common/rhnException.py:83
#, python-format
msgid ""
"\n"
"     This system does not have a valid entitlement for SUSE Manager.\n"
"     Please visit https://%(hostname)s/rhn/systems/SystemEntitlements.do\n"
"     or login at https://%(hostname)s, and from the \"Overview\" tab,\n"
"     select \"Subscription Management\" to enable the service for this "
"system.\n"
"     "
msgstr ""

#: ../common/rhnException.py:89
msgid "Channel error"
msgstr "Channel Fehler"

#: ../common/rhnException.py:90
msgid "Client session token is invalid."
msgstr "Client Session Token ist ungÃ¼ltig."

#: ../common/rhnException.py:91
msgid "Client session token has expired."
msgstr "Client Session ist abgelaufen."

#: ../common/rhnException.py:92
msgid "You are not authorized to retrieve the requested object."
msgstr "Sie sind nicht berechtigt dieses Objekt abzurufen."

#: ../common/rhnException.py:93
msgid "Invalid action"
msgstr "UngÃ¼ltige Aktion"

#: ../common/rhnException.py:94
msgid "You are not allowed to perform administrative tasks on this system."
msgstr "Sie sind fÃ¼r Administative TÃ¤tigkeiten nicht freigegeben."

#: ../common/rhnException.py:96
msgid "The system is already subscribed to the specified channel."
msgstr "Dieses System ist bereits bei diesem Channel registriert."

#: ../common/rhnException.py:97
msgid "The system is not currently subscribed to the specified channel."
msgstr "Dieses System ist bei diesem Channel nicht registriert."

#: ../common/rhnException.py:98
msgid "The specified channel does not exist."
msgstr "Der angegebene Channel existiert nicht."

#: ../common/rhnException.py:99
msgid "Invalid channel version."
msgstr "UngÃ¼ltige Channel-Version."

#: ../common/rhnException.py:100
msgid ""
"\n"
"     User group membership limits exceeded.\n"
"\n"
"     The current settings for your account do not allow you to add another\n"
"     user account. Please check with the organization administrator for "
"your\n"
"     account if the maximum number of users allowed to subscribe to server "
"needs\n"
"     to be changed.\n"
"     "
msgstr ""

#: ../common/rhnException.py:108
msgid ""
"\n"
"     System group membership limits exceeded.\n"
"\n"
"     The current settings for your account do not allow you to add another\n"
"     system profile. Please check with the organization administrator for "
"your\n"
"     account for modifying the maximum number of system profiles that can "
"be\n"
"     subscribed to your account.\n"
"     "
msgstr ""

#: ../common/rhnException.py:116
#, fuzzy
msgid ""
"\n"
"     Invalid architecture.\n"
"\n"
"     The architecture of the package is not supported by\n"
"     "
msgstr ""
"\n"
"     UngÃ¼ltige Architektur.\n"
"\n"
"     Die Architektur dieses Paketes ist vom Red Hat Network nicht "
"unterstÃ¼tzt\n"
"     "

#: ../common/rhnException.py:121
msgid "Invalid RPM header"
msgstr "UngÃ¼ltiger RPM Header"

#: ../common/rhnException.py:122
msgid ""
"\n"
"    This system is already registered as a Salt Minion. If you want to "
"register it as a traditional client\n"
"    please delete it first via the web UI or API and then register it using "
"the traditional tools.\n"
"    "
msgstr ""

#. For the uploading tools
#: ../common/rhnException.py:127
msgid "Invalid information uploaded to the server"
msgstr "Es wurden ungÃ¼ltige Informationen hochgeladen"

#: ../common/rhnException.py:128
msgid "Error uploading network interfaces configuration."
msgstr "Fehler beim Hochladen der Konfiguration der Netzwerk-Schnittstellen."

#: ../common/rhnException.py:129
msgid ""
"\n"
"     Package Upload Failed due to uniqueness constraint violation.\n"
"     Make sure the package does not have any duplicate dependencies or\n"
"     does not already exists on the server\n"
"     "
msgstr ""
"\n"
"     Hochladen des Paketes fehlgeschlagen. \n"
"     Bitte prÃ¼fen Sie ob das Paket keine doppelten AbhÃ¤ngigkeiten besitzt\n"
"      und nicht schon bereits auf dem Server vorhanden ist\n"
"     "

#: ../common/rhnException.py:134
#, fuzzy
msgid ""
"\n"
"     The --force rhnpush option is disabled on this server.\n"
"     Please contact your SUSE Manager administrator for more help.\n"
"     "
msgstr ""
"\n"
"     Die Option --force fÃ¼r rhnpush wurde auf diesem Server deaktiviert. \n"
"     Bitte kontaktieren Sie den Satellite Administrator fÃ¼r Hilfestellung.\n"
"     "

#. 60-70: token errors
#: ../common/rhnException.py:140
msgid ""
"\n"
"     The activation token specified could not be found on the server.\n"
"     Please retry with a valid key.\n"
"     "
msgstr ""

#: ../common/rhnException.py:144
msgid "Too many systems registered using this registration token"
msgstr "Zuviele Systeme sind dieser Registration zugeordnet"

#: ../common/rhnException.py:145
msgid "Token contains invalid, obsoleted or insufficient settings"
msgstr ""
"Dieser Token enthÃ¤lt ungÃ¼ltige, obsolete oder nicht ausreichende "
"Einstellungen"

#: ../common/rhnException.py:146
msgid "Conflicting activation tokens"
msgstr "Aktivierungs-Tokens mit Konflikten"

#. 70-80: channel subscription errors
#: ../common/rhnException.py:149
msgid ""
"\n"
"     No matching base channel found for your system.\n"
"     "
msgstr ""

#: ../common/rhnException.py:152
msgid ""
"\n"
"     You do not have subscription permission to the designated channel.\n"
"     Please refer to your organization's channel or organization\n"
"     administrators for further details.\n"
"     "
msgstr ""

#: ../common/rhnException.py:157
msgid "You can not unsubscribe from base channel."
msgstr "Sie kÃ¶nnen sich von diesem Base-Channel nicht abmelden."

#: ../common/rhnException.py:158
msgid "SUSE Manager or Proxy channel can not be subscribed."
msgstr ""

#. 80-90: server group errors
#: ../common/rhnException.py:161
msgid "There was an error while trying to join the system to its groups"
msgstr "Fehler beim HinzufÃ¼gen des Systems in die entsprechenden Gruppen"

#. 90-100: entitlement errors
#: ../common/rhnException.py:164
msgid "Unable to entitle system"
msgstr "System kann nicht berechtigt werden"

#. 100-109: e-mail and uuid related faults
#: ../common/rhnException.py:167
msgid "Maximum e-mail length violation."
msgstr "Maximale LÃ¤nge der Email Ã¼berschritten."

#: ../common/rhnException.py:168
msgid "This system has been previously registered."
msgstr "Dieses System wurde bereits registriert."

#: ../common/rhnException.py:169
msgid "Invalid username"
msgstr "Benutzername ungÃ¼ltig"

#. 140-159 applet errors
#: ../common/rhnException.py:172
msgid "Unable to look up server"
msgstr ""

#. 160-179: OSAD errors
#: ../common/rhnException.py:175
msgid "Required argument is missing"
msgstr "BenÃ¶tigte Angabe fehlt"

#. 600-699: RHEL5+ EN errors
#: ../common/rhnException.py:178
msgid "No entitlement information tied to hardware"
msgstr ""

#: ../common/rhnException.py:179
msgid "Installation number is not entitling"
msgstr ""

#. 700-799: Additional user input verification errors.
#: ../common/rhnException.py:182
msgid "Maximum username length violation"
msgstr "Maximale LÃ¤nge des Benutzernamen Ã¼berschritten"

#: ../common/rhnException.py:183
msgid "Maximum password length violation"
msgstr "Maximale PasswortlÃ¤nge Ã¼berschritten"

#: ../common/rhnException.py:184
msgid "This user has read only API access. Action denied."
msgstr ""

#: ../common/rhnException.py:186
#, fuzzy
msgid "System Name cannot be less than 1 character"
msgstr "der Benutzername darf hÃ¶chstens %d Zeichen lang sein"

#. 1000-1999: Proxy specific errors:
#. issued by a Proxy to the client
#: ../common/rhnException.py:190
#, fuzzy
msgid "SUSE Manager Proxy error."
msgstr "RHN Proxy Fehler."

#: ../common/rhnException.py:191
#, fuzzy
msgid "SUSE Manager Proxy unable to login."
msgstr "Login zum RHN Proxy nicht mÃ¶glich."

#. issued by a SUSE Manager Server/Satellite to the proxy
#: ../common/rhnException.py:193
msgid ""
"\n"
"     SUSE Manager Proxy system ID does not match a Spacewalk Proxy Server\n"
"     in the database.\n"
"     "
msgstr ""

#: ../common/rhnException.py:197
#, fuzzy
msgid "SUSE Manager Proxy session token is invalid."
msgstr "RHN Proxy Session-Token ist ungÃ¼ltig."

#: ../common/rhnException.py:198
#, fuzzy
msgid "SUSE Manager Proxy session token has expired."
msgstr "RHN Proxy Session Token abgelaufen."

#. 2000-2999: Red Hat Satellite specific errors:
#: ../common/rhnException.py:202
msgid ""
"\n"
"      user creation is not allowed via mgr_register;\n"
"     please contact your sysadmin to have your account created.\n"
"     "
msgstr ""

#: ../common/rhnException.py:206
#, fuzzy
msgid ""
"\n"
"     This SUSE Manager server is not allowed to use Inter Server Sync on "
"this server\n"
"     "
msgstr ""
"\n"
"     Diesem Satellite Server fehlt die Berechtigung fÃ¼r Inter Satellite Sync "
"auf diesem Satellite\n"
"     "

#: ../common/rhnException.py:209
#, fuzzy
msgid ""
"\n"
"     Inter Server Sync is disabled on this SUSE Manager Server.\n"
"     "
msgstr ""
"\n"
"     Inter Satellite Sync ist auf diesem Satellite deaktiviert.\n"
"     "

#. 3000-3999: XML dumper errors:
#: ../common/rhnException.py:214
msgid "Invalid datatype passed"
msgstr "Es wurde ein ungÃ¼ltiger Datentyp Ã¼bergeben"

#: ../common/rhnException.py:215
msgid "Unable to retrieve channel"
msgstr "Channels konnten nicht abgerufen werden"

#: ../common/rhnException.py:216
msgid "Unable to retrieve package"
msgstr "Pakete konnten nicht abgerufen werden"

#: ../common/rhnException.py:217
msgid "Unable to retrieve erratum"
msgstr "Erratum konnte nicht abgerufen werden"

#: ../common/rhnException.py:218
msgid "File is missing"
msgstr "Datei nicht vorhanden"

#: ../common/rhnException.py:219
msgid "Function retrieval error"
msgstr ""

#: ../common/rhnException.py:220
msgid "Function execution error"
msgstr ""

#: ../common/rhnException.py:221
msgid "Missing version string"
msgstr "Es wurde keine Version angegeben"

#: ../common/rhnException.py:222
msgid "Invalid version string"
msgstr "UngÃ¼ltige Version"

#: ../common/rhnException.py:223
msgid "Mismatching versions"
msgstr "Versionen stimmen nicht Ã¼berein"

#: ../common/rhnException.py:224
msgid "Invalid channel version"
msgstr "UngÃ¼ltige Channel-Version"

#: ../common/rhnException.py:225
msgid "No comps file for channel"
msgstr "Keine Chomps-Datei fÃ¼r dem Channel"

#: ../common/rhnException.py:226
msgid "Unable to retrieve comps file"
msgstr "Comps-Datei kann nicht abgerufen werden."

#. 4000 - 4999: config management errors
#: ../common/rhnException.py:229
msgid "Configuration action missing"
msgstr ""

#: ../common/rhnException.py:230
msgid "File too large"
msgstr "Datei zu gross"

#: ../common/rhnException.py:231
msgid "File contains binary data"
msgstr "Datei enthÃ¤lt binÃ¤re Daten"

#: ../common/rhnException.py:232
msgid "Configuration channel is not empty"
msgstr "Konfigurations-Channel enthÃ¤lt Daten"

#: ../common/rhnException.py:233
msgid "Permission error"
msgstr "Zugriff nicht erlaubt"

#: ../common/rhnException.py:234
msgid "Content missing for configuration file"
msgstr "Kein Inhalt fÃ¼r Konfigurationsdatei"

#: ../common/rhnException.py:235
msgid "Template delimiters not specified"
msgstr "Die Template Trennzeichen sind nicht spezifiziert"

#: ../common/rhnException.py:236
msgid "Configuration channel does not exist"
msgstr "Konfigurations-Channel existiert nicht"

#: ../common/rhnException.py:237
msgid "Configuration channel already exists"
msgstr "Konfigrations-Channel bereits vorhanden"

#: ../common/rhnException.py:238
msgid "File missing from configuration channel"
msgstr "Die Datei aus dem Konfigurationskanal fehlt"

#: ../common/rhnException.py:239
msgid "Different revision of this file is uploaded"
msgstr "Eine andere Version dieser Datei wurde breits hochgeladen"

#: ../common/rhnException.py:240
msgid "File already uploaded to configuration channel"
msgstr "Datei wurde breits in den Konfigations-Channel hochgeladen"

#: ../common/rhnException.py:241
msgid "File size exceeds remaining quota space"
msgstr "Die DateigrÃ¶ÃŸe Ã¼berschreitet die verbleibende Quota (Speicherplatz)"

#: ../common/rhnException.py:242
msgid "Full path of file must be specified"
msgstr "Der vollstÃ¤ndige Datei-Pfad muss angegeben werden"

#: ../common/rhnException.py:243
msgid "Invalid revision number"
msgstr "UngÃ¼ltige Revisionsnummer"

#: ../common/rhnException.py:244
msgid "Cannot compare files of different file type"
msgstr ""
"Ein Vergeich zwischen verschiedenen Datei-Typen kann nicht erstellt werden"

#. 5000 - 5999: client content uploading errors
#. 5000 - 5099: crash reporting errors
#: ../common/rhnException.py:248
msgid "Crash information is invalid or incomplete"
msgstr ""

#: ../common/rhnException.py:249
msgid "Crash file information is invalid or incomplete"
msgstr ""

#: ../common/rhnException.py:250
msgid "Error composing crash directory path"
msgstr ""

#: ../common/rhnException.py:251
msgid "Error composing crash file path"
msgstr ""

#: ../common/rhnException.py:252 ../common/rhnException.py:259
#, fuzzy
msgid "Invalid content encoding"
msgstr "UngÃ¼ltiger Feldcode"

#: ../common/rhnException.py:253
#, fuzzy
msgid "Invalid crash name"
msgstr "UngÃ¼ltiger Paketname"

#: ../common/rhnException.py:254
msgid "Crash reporting is disabled for this organization"
msgstr ""

#. 5100 - 5199: scap results reporting error
#: ../common/rhnException.py:256
msgid "SCAP results file transfer is invalid or incomplete"
msgstr ""

#: ../common/rhnException.py:257
msgid "Error composing directory path for detailed SCAP results"
msgstr ""

#: ../common/rhnException.py:258
msgid "Error composing file path for detailed SCAP results"
msgstr ""

#: ../common/rhnException.py:306
#, fuzzy
msgid ""
"\n"
"     An error has occurred while processing your request. If this problem\n"
"     persists please enter a bug report at scc.suse.com.\n"
"     If you choose to submit the bug report, please be sure to include\n"
"     details of what you were trying to do when this error occurred and\n"
"     details on how to reproduce this problem.\n"
msgstr ""
"\n"
"     Bei der Bearbeitung Ihrer Anfrage trat ein Fehler auf. Falls dieses "
"Problem\n"
"     weiterhin auftritt, reichen Sie bitte einen Fehlerbericht unter "
"bugzilla.redhat.com ein.\n"
"     Falls Sie sich dazu entschlieÃŸen, einen Fehlerbericht einzureichen, "
"stellen Sie bitte sicher,\n"
"     dass Sie Details zu den von Ihnen durchgefÃ¼hrten Schritten liefern, als "
"dieser Fehler auftrat,\n"
"     sowie Informationen, wie dieses Problem reproduziert werden kann.\n"

#: ../common/rhnException.py:358
#, python-format
msgid ""
"Error Message:\n"
"    %s\n"
msgstr ""
"Fehlermeldung:\n"
"    %s\n"

#: ../common/rhnException.py:360
#, python-format
msgid "Error Class Code: %s\n"
msgstr "Fehlerklasse-Code: %s\n"

#: ../common/rhnException.py:363
#, python-format
msgid "Error Class Info: %s\n"
msgstr "Fehlerklasse-Information: %s\n"

#: ../common/rhnException.py:365
#, python-format
msgid "Explanation: %s"
msgstr "ErklÃ¤rung: %s"

#: ../common/rhnTB.py:205
#, python-format
msgid "ERROR: %s %s: %s"
msgstr ""

#: ../common/rhnTB.py:207
#, python-format
msgid "TRACEBACK: %s"
msgstr ""

#: ../satellite_tools/disk_dumper/iss.py:1294
#: ../satellite_tools/disk_dumper/iss.py:1298
#, python-format
msgid "format of %s should be at least YYYYMMDD.\n"
msgstr ""

#: ../satellite_tools/messages.py:26
#, python-format
msgid ""
"\n"
"ERROR: executing step %s. Error is:\n"
"%s\n"
msgstr ""

#: ../satellite_tools/messages.py:31
#, python-format
msgid ""
"\n"
"ERROR: there was a problem accessing the channel data from your temporary\n"
"       repository. Did you migrate all of the data from the channel ISOs\n"
"       do this directory? If so, please recheck the channels ISOs, ensure\n"
"       that you have them all, and then iteratively remount and repopulate\n"
"       the temporary repository (%s).\n"
msgstr ""

#: ../satellite_tools/messages.py:39
#, python-format
msgid ""
"\n"
"ERROR: there was a problem synchronizing the information.\n"
"       Error message: %s\n"
msgstr ""

#: ../satellite_tools/messages.py:44
#, python-format
msgid ""
"\n"
"ERROR: There was a problem communicating with the ISS Master.\n"
"       Depending on the specific error details, please review your "
"configuration,\n"
"       basic network connectivity, and/or name resolution, and try again.\n"
"       Error message: %s\n"
msgstr ""

#: ../satellite_tools/messages.py:51
#, python-format
msgid ""
"\n"
"ERROR: There was a problem communicating with the ISS Master.\n"
"       If the master satellite is older than v5.3, it does not have ISS "
"capability.\n"
"       Otherwise, depending on the specific error details, please review "
"your\n"
"       configuration, basic network connectivity, and/or name resolution, "
"and try again.\n"
"       Error message: %s\n"
msgstr ""

#: ../satellite_tools/messages.py:59
#, python-format
msgid ""
"\n"
"ERROR: a child-channel cannot be synced without its parent being synced as\n"
"       well. A parent needs to be either (a) previously synced or (b) "
"synced\n"
"       in tandem with the desired child-channel. Missing parents for this\n"
"       transaction:\n"
"       %s\n"
msgstr ""

#: ../satellite_tools/messages.py:67
#, python-format
msgid ""
"\n"
"ERROR: you are not entitled to sync a channel in this set of channels.\n"
"Please contact your SUSE Manager contact\n"
"%s"
msgstr ""

#: ../satellite_tools/messages.py:72
#, python-format
msgid "  ERROR: not enough free space (%s KB) on device."
msgstr ""

#: ../satellite_tools/messages.py:74
#, python-format
msgid "    %3d/%s Fetch successful: %s (%s bytes)"
msgstr ""

#: ../satellite_tools/messages.py:75
#, fuzzy, python-format
msgid "    Extinct package:  %s"
msgstr "Paket erwartet, nicht: %s"

#: ../satellite_tools/messages.py:76
#, python-format
msgid "   Total size: %s"
msgstr ""

#: ../satellite_tools/messages.py:77
#, python-format
msgid "      Downloaded %s of %s. Estimated remaining time: %s"
msgstr ""

#: ../satellite_tools/messages.py:78
#, python-format
msgid "    Fetch unsuccessful: %s"
msgstr ""

#: ../satellite_tools/messages.py:79
#, python-format
msgid "   RPM fetch summary: %s"
msgstr ""

#: ../satellite_tools/messages.py:80
#, python-format
msgid "       success: %d"
msgstr ""

#: ../satellite_tools/messages.py:81
#, python-format
msgid "       failed:  %d"
msgstr ""

#: ../satellite_tools/messages.py:82
#, python-format
msgid "       extinct: %d"
msgstr ""

#: ../satellite_tools/messages.py:84
#, python-format
msgid "   Retrieving / parsing *relevant* package metadata: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:85
#, python-format
msgid "   Retrieving / parsing errata data: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:86
#, python-format
msgid "   Retrieving / parsing kickstart data: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:87
#, python-format
msgid "   Retrieving / parsing kickstart tree files: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:88
#, python-format
msgid "   Importing *relevant* package metadata: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:89
msgid "   * WARNING: this may be a slow process."
msgstr ""

#: ../satellite_tools/messages.py:90
#, fuzzy
msgid "Linking packages to channels"
msgstr "Konflikt zwischen Basis-Channels"

#: ../satellite_tools/messages.py:91
#, python-format
msgid "   Importing *relevant* errata: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:92
msgid "   No new kickstartable tree to import"
msgstr ""

#: ../satellite_tools/messages.py:93
#, python-format
msgid "Importing kickstartable trees (%d)"
msgstr ""

#: ../satellite_tools/messages.py:94
#, python-format
msgid "Imported kickstartable trees (%d)"
msgstr ""

#: ../satellite_tools/reposync.py:111 ../satellite_tools/satsync.py:439
msgid "+++ sending log as an email +++"
msgstr ""

#: ../satellite_tools/reposync.py:114
#, python-format
msgid "%s sync. report from %s"
msgstr ""

#: ../satellite_tools/reposync.py:124 ../satellite_tools/satsync.py:449
msgid "+++ email requested, but there is nothing to send +++"
msgstr ""

#: ../satellite_tools/rhn_satellite_activate.py:198
#, python-format
msgid ""
"\"%s\" (specified in commandline)\n"
"could not be opened and read:\n"
"%s"
msgstr ""

#: ../satellite_tools/rhn_satellite_activate.py:205
#, python-format
msgid ""
"\"%s\" could not be opened\n"
"and/or written to:\n"
"%s"
msgstr ""

#: ../satellite_tools/satsync.py:258
#, python-format
msgid "No handler for step %s"
msgstr ""

#. Try one more time - this time it should be faster since
#. everything should be cached
#: ../satellite_tools/satsync.py:270
msgid "Environment changed, trying again..."
msgstr ""

#: ../satellite_tools/satsync.py:277
msgid "ERROR: Encountered IntegrityError: \n"
msgstr ""

#: ../satellite_tools/satsync.py:285
msgid "Repeated failures"
msgstr ""

#: ../satellite_tools/satsync.py:290
#, python-format
msgid ""
"    Import complete:\n"
"        Begin time: %s\n"
"        End time:   %s\n"
"        Elapsed:    %s\n"
"          "
msgstr ""

#: ../satellite_tools/satsync.py:311
msgid "hours"
msgstr ""

#: ../satellite_tools/satsync.py:311
msgid "minutes"
msgstr ""

#: ../satellite_tools/satsync.py:311
msgid "seconds"
msgstr ""

#: ../satellite_tools/satsync.py:357
msgid ""
"ERROR: The dump is missing package data, use --no-rpms to skip this step or "
"fix the content to include package data."
msgstr ""

#. the orgs() method doesn't exist; that's fine we just
#. won't sync the orgs
#: ../satellite_tools/satsync.py:404
msgid "The SUSE Manager master does not support syncing orgs data."
msgstr ""

#: ../satellite_tools/satsync.py:404
msgid "Skipping..."
msgstr ""

#: ../satellite_tools/satsync.py:442
#, python-format
msgid "SUSE Manager Inter Server sync. report from %s"
msgstr ""

#: ../satellite_tools/satsync.py:521
msgid " - file-system synchronization"
msgstr ""

#: ../satellite_tools/satsync.py:533 ../satellite_tools/satsync.py:541
msgid " - live synchronization"
msgstr ""

#: ../satellite_tools/satsync.py:534
#, python-brace-format
msgid ""
"ERROR: Live content synchronizing with RHN Classic Hosted is no longer "
"supported.\n"
"Please use the cdn-sync command instead unless you are attempting to sync "
"from another {PRODUCT_NAME} via Inter-Server-Sync (ISS), or from local "
"content on disk via Channel Dump ISOs."
msgstr ""

#: ../satellite_tools/satsync.py:542
#, python-format
msgid "   url: %s"
msgstr ""

#: ../satellite_tools/satsync.py:543
#, python-format
msgid "   debug/output level: %s"
msgstr ""

#: ../satellite_tools/satsync.py:553
msgid "ERROR: this server must be registered with SUSE Manager."
msgstr ""

#: ../satellite_tools/satsync.py:575
#, python-format
msgid "Retrieving / parsing %s data"
msgstr ""

#: ../satellite_tools/satsync.py:585 ../satellite_tools/satsync.py:600
msgid "*** SYSTEM INTERRUPT CALLED ***"
msgstr ""

#: ../satellite_tools/satsync.py:593
msgid "ERROR: fatal parser exception occurred "
msgstr ""

#: ../satellite_tools/satsync.py:594
#, python-format
msgid "(line: %s, col: %s msg: %s)"
msgstr ""

#: ../satellite_tools/satsync.py:598
#, python-format
msgid "ERROR: parser exception occurred: %s"
msgstr ""

#: ../satellite_tools/satsync.py:603
msgid "ERROR: exception (during parse) occurred: "
msgstr ""

#: ../satellite_tools/satsync.py:604
#, python-format
msgid ""
"   Encountered some errors with %s data (see logs (%s) for more information)"
msgstr ""

#: ../satellite_tools/satsync.py:606
#, python-format
msgid "   Encountered some errors with %s data:"
msgstr ""

#: ../satellite_tools/satsync.py:607
#, python-format
msgid "   ------- %s PARSE/IMPORT ERROR -------"
msgstr ""

#: ../satellite_tools/satsync.py:609
msgid "   ---------------------------------------"
msgstr ""

#: ../satellite_tools/satsync.py:612
#, python-format
msgid "%s data complete"
msgstr ""

#: ../satellite_tools/satsync.py:665
msgid "Retrieving / parsing channel data"
msgstr ""

#: ../satellite_tools/satsync.py:718
msgid "Channel data complete"
msgstr ""

#: ../satellite_tools/satsync.py:736
#, python-format
msgid "%10s import from %s"
msgstr ""

#: ../satellite_tools/satsync.py:739
#, python-format
msgid "%10s import from %s - %s"
msgstr ""

#: ../satellite_tools/satsync.py:743
#, python-format
msgid "%10s"
msgstr ""

#: ../satellite_tools/satsync.py:750
msgid "p"
msgstr ""

#: ../satellite_tools/satsync.py:752
msgid "."
msgstr ""

#: ../satellite_tools/satsync.py:758
msgid "   p = previously imported/synced channel"
msgstr ""

#: ../satellite_tools/satsync.py:759
msgid "   . = channel not yet imported/synced"
msgstr ""

#: ../satellite_tools/satsync.py:765
msgid "   e = channel no longer supported (end-of-service)"
msgstr ""

#: ../satellite_tools/satsync.py:767
msgid "   ? = channel label invalid --- typo?"
msgstr ""

#: ../satellite_tools/satsync.py:771
#, python-format
msgid "   %s:"
msgstr ""

#: ../satellite_tools/satsync.py:772
#, python-format
msgid "      %s %-40s %4s %s"
msgstr ""

#: ../satellite_tools/satsync.py:773
#, fuzzy
msgid "base-channels"
msgstr "Konflikt zwischen Basis-Channels"

#: ../satellite_tools/satsync.py:786 ../satellite_tools/satsync.py:1603
msgid "NONE RELEVANT"
msgstr ""

#: ../satellite_tools/satsync.py:808
msgid "end-of-service"
msgstr ""

#: ../satellite_tools/satsync.py:809
msgid "e"
msgstr ""

#: ../satellite_tools/satsync.py:815
msgid "   typos:"
msgstr ""

#: ../satellite_tools/satsync.py:816
msgid "?"
msgstr ""

#: ../satellite_tools/satsync.py:831
#, python-format
msgid "XXX: imported channels: %s"
msgstr ""

#: ../satellite_tools/satsync.py:832
#, python-format
msgid "XXX:   cached channels: %s"
msgstr ""

#: ../satellite_tools/satsync.py:837
msgid "XXX: list channels called"
msgstr ""

#: ../satellite_tools/satsync.py:855
msgid "ERROR: these channels either do not exist or are not available:"
msgstr ""

#: ../satellite_tools/satsync.py:859
#, python-format
msgid "       (to see a list of channel labels: %s --list-channels)"
msgstr ""

#: ../satellite_tools/satsync.py:904
#, python-format
msgid "   Retrieving / parsing short package metadata: %s (%s)"
msgstr ""

#: ../satellite_tools/satsync.py:965
#, python-format
msgid "Diffing package metadata (what's missing locally?): %s"
msgstr ""

#: ../satellite_tools/satsync.py:971 ../satellite_tools/satsync.py:1254
msgid "Diffing:    "
msgstr ""

#: ../satellite_tools/satsync.py:988
msgid "ERROR: incremental dump skipped"
msgstr ""

#: ../satellite_tools/satsync.py:1079
msgid "Downloading rpm packages"
msgstr ""

#: ../satellite_tools/satsync.py:1084
#, python-format
msgid "   Fetching any missing RPMs: %s (%s)"
msgstr ""

#: ../satellite_tools/satsync.py:1085 ../satellite_tools/satsync.py:1153
msgid "NONE MISSING"
msgstr ""

#: ../satellite_tools/satsync.py:1094
msgid "Processing rpm packages complete"
msgstr ""

#: ../satellite_tools/satsync.py:1121
msgid "Downloading package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1146
msgid "Downloading srpm packages"
msgstr ""

#: ../satellite_tools/satsync.py:1152
#, python-format
msgid "   Fetching any missing SRPMs: %s (%s)"
msgstr ""

#: ../satellite_tools/satsync.py:1249
#, python-format
msgid "Diffing source package metadata (what's missing locally?): %s"
msgstr ""

#: ../satellite_tools/satsync.py:1260
msgid "Downloading source package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1338 ../satellite_tools/satsync.py:2027
#, fuzzy, python-format
msgid "Unable to save file %s: %s"
msgstr "System kann nicht berechtigt werden"

#. for
#. Retried a number of times and it still failed; log the
#. file as being failed and move on
#: ../satellite_tools/satsync.py:1345
#, python-format
msgid "Failed to fetch file %s"
msgstr ""

#: ../satellite_tools/satsync.py:1350
msgid "Downloading kickstartable trees metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1365
msgid "Downloading kickstartable trees files"
msgstr ""

#: ../satellite_tools/satsync.py:1504
#, python-format
msgid "Grabbing all patches for channel %s"
msgstr ""

#: ../satellite_tools/satsync.py:1554
msgid "Downloading patch data"
msgstr ""

#: ../satellite_tools/satsync.py:1556
msgid "Forcing download of all patch data for requested channels."
msgstr ""

#: ../satellite_tools/satsync.py:1571
msgid "Downloading patch data complete"
msgstr ""

#: ../satellite_tools/satsync.py:1576 ../satellite_tools/satsync.py:1597
msgid "Downloading:"
msgstr ""

#: ../satellite_tools/satsync.py:1579
msgid " - complete"
msgstr ""

#: ../satellite_tools/satsync.py:1624
msgid "Importing source package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1627
msgid "Importing package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1635
msgid "Importing:  "
msgstr ""

#. not in the cache
#: ../satellite_tools/satsync.py:1703
msgid ""
"Package Not Found in Cache, Clear the Cache "
"to                                  Regenerate it."
msgstr ""

#: ../satellite_tools/satsync.py:1709
msgid "Importing channel patches"
msgstr ""

#: ../satellite_tools/satsync.py:1714
#, python-format
msgid "Importing %s patches for channel %s."
msgstr ""

#. Incomplete configuration
#: ../satellite_tools/satsync.py:2113
msgid "ERROR: server.mount_point not set in the configuration file"
msgstr ""

#: ../satellite_tools/satsync.py:2117
#, python-format
msgid "ERROR: server.mount_point %s do not exist"
msgstr ""

#: ../satellite_tools/satsync.py:2122
#, python-format
msgid "ERROR: path under server.mount_point (%s)  do not exist"
msgstr ""

#: ../satellite_tools/satsync.py:2199
#, python-format
msgid "Commandline: %s"
msgstr ""

#: ../satellite_tools/satsync.py:2202
#, python-format
msgid ""
"DEBUG ONLY: max. batch-size for XML/database-import processing (1..%s).\"man "
"satellite-sync\" for more information."
msgstr ""

#: ../satellite_tools/satsync.py:2205
msgid "alternative SSL CA Cert (fullpath to cert file)"
msgstr ""

#: ../satellite_tools/satsync.py:2207
msgid "process data for this channel only"
msgstr ""

#: ../satellite_tools/satsync.py:2209
msgid ""
"disk dump will be considered to be a full export; see \"man satellite-sync\" "
"for more information."
msgstr ""

#: ../satellite_tools/satsync.py:2212
msgid "existing custom channels will also be synced (unless -c is used)"
msgstr ""

#: ../satellite_tools/satsync.py:2214
#, python-format
msgid ""
"override debug level set in /etc/rhn/rhn.conf (which is currently set at %s)."
msgstr ""

#: ../satellite_tools/satsync.py:2216
#, python-format
msgid "requested version of XML dump (default: %s)"
msgstr ""

#: ../satellite_tools/satsync.py:2218
msgid "e-mail a report of what was synced/imported"
msgstr ""

#: ../satellite_tools/satsync.py:2220
msgid "forcibly process all (not a diff of) patch metadata"
msgstr ""

#: ../satellite_tools/satsync.py:2222
msgid "Do not use an http proxy under any circumstances."
msgstr ""

#: ../satellite_tools/satsync.py:2224
msgid "alternative http proxy (hostname:port)"
msgstr ""

#: ../satellite_tools/satsync.py:2226
msgid "alternative http proxy username"
msgstr ""

#: ../satellite_tools/satsync.py:2228
msgid "alternative http proxy password"
msgstr ""

#: ../satellite_tools/satsync.py:2230
msgid "parent SUSE Manager to import content from"
msgstr ""

#: ../satellite_tools/satsync.py:2232
msgid "list all available channels and exit"
msgstr ""

#: ../satellite_tools/satsync.py:2234
msgid "help on all error codes mgr-inter-sync returns"
msgstr ""

#: ../satellite_tools/satsync.py:2236
msgid "source mount point for import - disk update only"
msgstr ""

#: ../satellite_tools/satsync.py:2238
msgid "do not process patch data"
msgstr ""

#: ../satellite_tools/satsync.py:2240
msgid "do not process kickstart data (provisioning only)"
msgstr ""

#: ../satellite_tools/satsync.py:2242
msgid "do not process full package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:2244
msgid "do not download, or process any RPMs"
msgstr ""

#: ../satellite_tools/satsync.py:2246
msgid "turn off SSL (not recommended)"
msgstr ""

#: ../satellite_tools/satsync.py:2248
msgid "org to which the sync imports data. defaults to the admin account"
msgstr ""

#: ../satellite_tools/satsync.py:2250
#, fuzzy
msgid "print the configuration and exit"
msgstr "Konfigurations-Channel existiert nicht"

#: ../satellite_tools/satsync.py:2252
msgid "alternative server with which to connect (hostname)"
msgstr ""

#: ../satellite_tools/satsync.py:2254
msgid "synchronize to this step (man satellite-sync for more info)"
msgstr ""

#: ../satellite_tools/satsync.py:2256
msgid "write complete data to tempfile before streaming to remainder of app"
msgstr ""

#: ../satellite_tools/satsync.py:2258
msgid "DEBUG ONLY: alternative path to digital system id"
msgstr ""

#: ../satellite_tools/satsync.py:2260
msgid "alternative email address(es) for sync output (--email option)"
msgstr ""

#: ../satellite_tools/satsync.py:2262
msgid "do not remove rpms when importing from local dump"
msgstr ""

#: ../satellite_tools/satsync.py:2264
msgid ""
"the fully qualified domain name of the master Satellite. Valid with --mount-"
"point only. Required if you want to import org data and channel permissions."
msgstr ""

#: ../satellite_tools/satsync.py:2274
#, python-format
msgid "ERROR: these arguments make no sense in this context (try --help): %s"
msgstr ""

#. An SQL error is fatal... crash and burn
#: ../satellite_tools/satsync.py:2286
#, python-format
msgid "ERROR: Can't connect to the database: %s"
msgstr ""

#: ../satellite_tools/satsync.py:2287
msgid "ERROR: Check if your database is running."
msgstr ""

#: ../satellite_tools/satsync.py:2322
#, python-format
msgid "ERROR: --debug-level takes an in integer value within the range %s."
msgstr ""

#: ../satellite_tools/satsync.py:2324
msgid "  0  - little logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2325
msgid "  1  - minimal logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2326
msgid "  2  - normal level of logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2327
msgid "  3  - lots of logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2328
msgid "  4+ - excessive logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2341
msgid "ERROR: The --master option is only valid with the --mount-point option"
msgstr ""

#: ../satellite_tools/satsync.py:2351
#, python-format
msgid "ERROR: Unable to lookup Org Id %s"
msgstr ""

#: ../satellite_tools/satsync.py:2360
msgid ""
"WARNING: --list-channels option overrides any --step option. --step ignored."
msgstr ""

#: ../satellite_tools/satsync.py:2375
#, python-format
msgid ""
"ERROR: '%s' is not a valid step. See 'man mgr-inter-sync' for more detail."
msgstr ""

#: ../satellite_tools/satsync.py:2407
msgid ""
"ERROR: No channels currently imported; try mgr-inter-sync --list-channels; "
"then mgr-inter-sync -c chn0 -c chn1..."
msgstr ""

#. int(None) --> TypeError
#. int('a')  --> ValueError
#: ../satellite_tools/satsync.py:2457 ../satellite_tools/satsync.py:2461
msgid "ERROR: --batch-size must have a value within the range: 1..50"
msgstr ""

#: ../satellite_tools/satsync.py:2469
#, python-format
msgid "ERROR: no such directory %s"
msgstr ""

#: ../satellite_tools/satsync.py:2474
msgid "Error Codes: Returned codes means:"
msgstr ""

#: ../satellite_tools/satsync.py:2475
msgid " -1  - Could not lock file or KeyboardInterrupt or SystemExit"
msgstr ""

#: ../satellite_tools/satsync.py:2476
msgid "  0  - User interrupted or intentional exit"
msgstr ""

#: ../satellite_tools/satsync.py:2477
msgid "  1  - attempting to run more than one instance of mgr-inter-sync."
msgstr ""

#: ../satellite_tools/satsync.py:2478
msgid "  2  - Unable to find synchronization tools."
msgstr ""

#: ../satellite_tools/satsync.py:2479
msgid "  3  - a general socket exception occurred"
msgstr ""

#: ../satellite_tools/satsync.py:2480
msgid "  4  - an SSL error occurred. Recheck your SSL settings."
msgstr ""

#: ../satellite_tools/satsync.py:2481
msgid "  5  - ISS error"
msgstr ""

#: ../satellite_tools/satsync.py:2482
msgid "  6  - unhandled exception occurred"
msgstr ""

#: ../satellite_tools/satsync.py:2483
msgid "  7  - unknown sync error"
msgstr ""

#: ../satellite_tools/satsync.py:2484
msgid "  8  - ERROR: must be root to execute"
msgstr ""

#: ../satellite_tools/satsync.py:2485
msgid "  9  - rpclib fault during synchronization init"
msgstr ""

#: ../satellite_tools/satsync.py:2486
msgid "  10 - synchronization init error"
msgstr ""

#: ../satellite_tools/satsync.py:2487
msgid "  11 - Error parsing XML stream"
msgstr ""

#: ../satellite_tools/satsync.py:2488
#, fuzzy
msgid "  12 - Channel do not exist"
msgstr "Der angegebene Channel existiert nicht."

#: ../satellite_tools/satsync.py:2489
msgid "  13 - SQL error during importing package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:2490
msgid "  14 - SQL error during linking channel packages"
msgstr ""

#: ../satellite_tools/satsync.py:2491
msgid "  15 - SQL error during xml processing"
msgstr ""

#: ../satellite_tools/satsync.py:2492
msgid "  16 - server.mount_point not set in the configuration file"
msgstr ""

#: ../satellite_tools/satsync.py:2493
msgid ""
"  17 - SQL error during retrieving the channels already imported in the SUSE "
"Manager database"
msgstr ""

#: ../satellite_tools/satsync.py:2494
msgid "  18 - Wrong db connection string in rhn.conf"
msgstr ""

#: ../satellite_tools/satsync.py:2495
msgid "  19 - Bad arguments"
msgstr ""

#: ../satellite_tools/satsync.py:2496
msgid "  20 - Could not connect to db."
msgstr ""

#: ../satellite_tools/satsync.py:2497
msgid "  21 - Bad debug level"
msgstr ""

#: ../satellite_tools/satsync.py:2498
msgid "  22 - Not valid step"
msgstr ""

#: ../satellite_tools/satsync.py:2499
msgid "  24 - no such file"
msgstr ""

#: ../satellite_tools/satsync.py:2500
msgid "  25 - no such directory"
msgstr ""

#: ../satellite_tools/satsync.py:2501
msgid "  26 - mount_point does not exist"
msgstr ""

#: ../satellite_tools/satsync.py:2502
msgid "  27 - No such org"
msgstr ""

#: ../satellite_tools/satsync.py:2503
msgid "  28 - error: --master is only valid with --mount-point"
msgstr ""

#: ../satellite_tools/satsync.py:2510
#, python-format
msgid "ERROR: unknown dump version, try one of %s"
msgstr ""

#~ msgid "Your system was not found in the RHN database"
#~ msgstr "Ihr System wurde in der RHN Datenbank nicht gefunden"

#~ msgid "ISS is disabled on this satellite."
#~ msgstr "ISS ist auf diesem Satellite deaktiviert."

#~ msgid "Spacewalk Proxy service not enabled for server profile: \"%s\""
#~ msgstr "Spacewalk-Proxy-Dienst nicht fÃ¼r Server-Profil \"%s\" aktiviert"

#~ msgid "Red Hat Satellite Welcome Message"
#~ msgstr "Red Hat Network Willkommensmitteilung"

#~ msgid "Red Hat Satellite Privacy Statement"
#~ msgstr "SUSE Manager DatenschutzerklÃ¤rung"
07070100000066000081B40000000000000000000000016290A0C10000B5F0000000000000000000000000000000000000001E00000000spacewalk-backend/po/de_CH.po # SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
#
# Translators:
msgid ""
msgstr ""
"Project-Id-Version: Spacewalk\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-10-16 13:34+0200\n"
"PO-Revision-Date: 2011-03-04 16:08+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: de_CH\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"

#: ../server/apacheAuth.py:66
#, python-format
msgid "incomplete proxy authentication token: %s"
msgstr ""

#: ../server/apacheAuth.py:84
#, python-format
msgid "Sent proxy signature %s does not match ours %s."
msgstr ""

#: ../server/apacheAuth.py:119
msgid "declined proxy authentication"
msgstr ""

#: ../server/apacheRequest.py:59
#, python-format
msgid "Invalid request received (%s)."
msgstr ""

#: ../server/apacheRequest.py:120
#, python-format
msgid ""
"IMPORTANT MESSAGE FOLLOWS:\n"
"%s"
msgstr ""

#: ../server/apacheRequest.py:149
#, python-format
msgid ""
"While running '%s': caught\n"
"%s : %s\n"
msgstr ""

#: ../server/apacheRequest.py:606
#, python-format
msgid "Invalid URI %s"
msgstr ""

#: ../server/configFilesHandler.py:129 ../server/handlers/app/packages.py:192
#: ../server/handlers/xmlrpc/registration.py:215
#: ../server/handlers/xmlrpc/registration.py:1168
#: ../server/handlers/xmlrpc/registration.py:1307
#, python-format
msgid ""
"\n"
"                   %s Account has been deactivated on this server.\n"
"                   Please contact your Org administrator for more help."
msgstr ""

#: ../server/handlers/applet/applet.py:78
#, python-brace-format
msgid "Your system was not found in the {PRODUCT_NAME} database"
msgstr ""

#: ../server/handlers/sat/auth.py:45
msgid "ISS is disabled on this server."
msgstr ""

#: ../server/handlers/sat/auth.py:50
#, python-format
msgid "Server \"%s\" is not enabled for ISS."
msgstr ""

#: ../server/handlers/xmlrpc/errata.py:64
#, python-format
msgid "Expected a package name, not: %s"
msgstr ""

#: ../server/handlers/xmlrpc/errata.py:115
#, python-format
msgid "Expected a package, not: %s"
msgstr ""

#: ../server/handlers/xmlrpc/proxy.py:65
#, python-format
msgid "SUSE Manager Proxy service not enabled for server profile: \"%s\""
msgstr ""

#: ../server/handlers/xmlrpc/proxy.py:85
msgid "Invalid session key"
msgstr ""

#: ../server/handlers/xmlrpc/proxy.py:93
msgid "This server ID no longer exists"
msgstr ""

#: ../server/handlers/xmlrpc/queue.py:433
#, python-format
msgid "Invalid action value type %s (%s)"
msgstr ""

#: ../server/handlers/xmlrpc/queue.py:464
#, python-format
msgid "Action %s does not belong to server %s"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:194
msgid "Required data missing"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:198
msgid "Required members missing"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:207
msgid "Attempt to register a system to an invalid username"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:839
msgid "Invalid system release version requested"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1063
msgid ""
"Unable to find a valid network interface, both ipaddr and ip6addr not found."
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1115
#, python-brace-format
msgid "{PRODUCT_NAME} Welcome Message"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1125
msgid "Privacy Statement"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1146
msgid "Expected a dictionary as a product argument"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1374
#, python-format
msgid "Invalid value '%s' for %s (%s)"
msgstr ""

#: ../server/handlers/xmlrpc/scap.py:104
msgid "Invalid system_id/action_id pair."
msgstr ""

#: ../server/handlers/xmlrpc/up2date.py:233
#, python-format
msgid "Invalid value %s (%s)"
msgstr ""

#: ../server/importlib/userAuth.py:98
msgid "You are not authorized to manage packages in the null org"
msgstr ""

#: ../server/importlib/userAuth.py:103
#, python-format
msgid "You are not allowed to manage packages in the %s org"
msgstr ""

#: ../server/importlib/userAuth.py:121
msgid "You are not allowed to perform administrative tasks"
msgstr ""

#: ../server/importlib/userAuth.py:144
#, python-format
msgid ""
"You are not allowed to manage channel %s, or that channel does not exist"
msgstr ""

#: ../server/importlib/userAuth.py:204
#, python-format
msgid ""
"\n"
"               %s Account has been deactivated on this server.\n"
"               Please contact your Org administrator for more help."
msgstr ""

#: ../server/rhnChannel.py:1992
#, python-format
msgid ""
"Your account does not have access to any channels matching "
"(release='%(release)s', arch='%(arch)s')%(www_activation)s"
msgstr ""

#: ../server/rhnChannel.py:2002
msgid ""
"\n"
"If you have a registration number, please register with it first at http://"
"www.redhat.com/apps/activate/ and then try again.\n"
"\n"
msgstr ""

#: ../server/rhnChannel.py:2012
#, python-format
msgid "Insufficient subscription permissions for release (%s, %s"
msgstr ""

#. Various messages that can be reused
#.
#. bretm 02/07/2007 -- when we have better old-client documentation, probably
#. will be safe to get rid of all this crap
#: ../server/rhnChannel.py:2276 ../server/rhnChannel.py:2287
#: ../server/rhnChannel.py:2302
msgid "System Registered but Inactive"
msgstr ""

#: ../server/rhnChannel.py:2277
#, python-format
msgid ""
"\n"
"Invalid Architecture and OS release combination (%s, %s).\n"
"Your system has been registered, but will not receive updates\n"
"because it is not subscribed to a channel. If you have not yet\n"
"activated your product for service, please visit our website at:\n"
"\n"
"     http://www.redhat.com/apps/activate/\n"
"\n"
"...to activate your product."
msgstr ""

#: ../server/rhnChannel.py:2288
#, python-format
msgid ""
"\n"
"Invalid Architecture and OS release combination (%s, %s).\n"
"Your system has been registered, but will not receive updates\n"
"because it could not be subscribed to a base channel.\n"
"Please contact your organization administrator for assistance.\n"
msgstr ""

#: ../server/rhnChannel.py:2295
#, python-format
msgid ""
"\n"
"  This system has been successfully registered, but is not yet entitled\n"
"  to service.  To entitle this system to service, login to the web site at:\n"
"\n"
"  %(entitlement_url)s\n"
msgstr ""

#: ../server/rhnChannel.py:2303
#, python-format
msgid ""
"\n"
"  This system has been successfully registered, but no service entitlements\n"
"  were available.  To entitle this system to service, login to the web site "
"at:\n"
"\n"
"  %(entitlement_url)s\n"
msgstr ""

#: ../server/rhnHandler.py:62
msgid "Please run rhn_register as root on this client"
msgstr ""

#: ../server/rhnHandler.py:75
#, python-format
msgid "Service not enabled for system profile: \"%s\""
msgstr ""

#: ../server/rhnPackage.py:49 ../server/rhnPackage.py:87
#: ../server/rhnPackage.py:107 ../server/rhnPackage.py:158
#, python-format
msgid "Invalid RPM package %s requested"
msgstr ""

#: ../server/rhnPackage.py:112
msgid "Package not found"
msgstr ""

#: ../server/rhnServer/server_class.py:97
#, python-format
msgid "Architecture `%s' is not supported"
msgstr ""

#: ../server/rhnServer/server_token.py:78
#, python-format
msgid "Token `%s' has more than one base channel assigned"
msgstr ""

#: ../server/rhnServer/server_token.py:80
msgid "Conflicting base channels"
msgstr ""

#: ../server/rhnServer/server_token.py:190
#, python-format
msgid "Failed to add server to group %s"
msgstr ""

#: ../server/rhnServer/server_token.py:503
#, python-format
msgid "Maximum usage count of %s reached"
msgstr ""

#: ../server/rhnServer/server_token.py:744
msgid ""
"Stacking of re-registration tokens with different base entitlements is not "
"supported"
msgstr ""

#: ../server/rhnServer/server_token.py:811
#, python-format
msgid "Could not find token '%s'"
msgstr ""

#. Cannot use activation keys from different orgs
#: ../server/rhnServer/server_token.py:843
msgid "Tokens from mismatching orgs"
msgstr ""

#. Two tokens with different kickstart sessions
#: ../server/rhnServer/server_token.py:853
msgid "Kickstart session mismatch"
msgstr ""

#: ../server/rhnServer/server_token.py:877
msgid "Stacking of re-registration tokens is not supported"
msgstr ""

#: ../server/rhnUser.py:289 ../server/rhnUser.py:292
msgid "Invalid username/password combination"
msgstr ""

#. nope, not reserved either
#: ../server/rhnUser.py:467
#, python-format
msgid "Username `%s' has not been reserved"
msgstr ""

#. New accounts have to specify an e-mail address
#: ../server/rhnUser.py:473
msgid "E-mail address not specified"
msgstr ""

#: ../server/rhnUser.py:509
#, python-format
msgid "username should be at least %d characters"
msgstr ""

#: ../server/rhnUser.py:512
#, python-format
msgid "username should be less than %d characters"
msgstr ""

#: ../server/rhnUser.py:523
#, python-format
msgid "username = `%s', invalid character `%s'"
msgstr ""

#: ../server/rhnUser.py:542
#, python-format
msgid "Please limit your e-mail address to %s chars"
msgstr ""

#: ../server/rhnUser.py:623
#, python-format
msgid "password must be at least %d characters"
msgstr ""

#: ../server/rhnUser.py:626
#, python-format
msgid "Password must be shorter than %d characters"
msgstr ""

#: ../server/rhnUser.py:644
#, python-format
msgid "password contains character `%s'"
msgstr ""

#: ../server/rhnUser.py:651
#, python-format
msgid "username should be at least %d characters long"
msgstr ""

#: ../server/rhnUser.py:662
#, python-format
msgid "Cannot register usernames ending with %s"
msgstr ""

#. 0-999: Red Hat client/client-like interaction errors:
#: ../common/rhnException.py:53
msgid "This does not appear to be a valid username."
msgstr ""

#: ../common/rhnException.py:54
msgid "Invalid username and password combination."
msgstr ""

#: ../common/rhnException.py:55
msgid "This login is already taken, or the password is incorrect."
msgstr ""

#: ../common/rhnException.py:56
msgid "Permission denied."
msgstr ""

#: ../common/rhnException.py:57
msgid "Object not found."
msgstr ""

#: ../common/rhnException.py:58
msgid "Invalid System Digital ID."
msgstr ""

#: ../common/rhnException.py:59
msgid "Invalid System Credentials."
msgstr ""

#: ../common/rhnException.py:60
msgid "Could not retrieve user data from database."
msgstr ""

#: ../common/rhnException.py:61
msgid "Valid username required."
msgstr ""

#: ../common/rhnException.py:62
msgid "Valid password required."
msgstr ""

#: ../common/rhnException.py:63
msgid "Minimum username length violation."
msgstr ""

#: ../common/rhnException.py:64
msgid "Minimum password length violation."
msgstr ""

#: ../common/rhnException.py:65
msgid "The username contains invalid characters."
msgstr ""

#: ../common/rhnException.py:66
msgid "File not found."
msgstr ""

#: ../common/rhnException.py:67
msgid "Architecture and OS version combination is not supported."
msgstr ""

#: ../common/rhnException.py:68
msgid "Could not retrieve system data from database."
msgstr ""

#: ../common/rhnException.py:69
msgid "Invalid arguments passed to function."
msgstr ""

#: ../common/rhnException.py:70
msgid "Unable to retrieve requested entry."
msgstr ""

#: ../common/rhnException.py:71
msgid "Could not update database entry."
msgstr ""

#: ../common/rhnException.py:72
msgid "Unsupported server architecture."
msgstr ""

#: ../common/rhnException.py:73
#, python-format
msgid ""
"\n"
"     The anonymous server functionality is no longer available.\n"
"\n"
"     Please re-register this system by running mgr_register as root.\n"
"     Please visit https://%(hostname)s/rhn/systems/SystemEntitlements.do\n"
"     or login at https://%(hostname)s, and from the \"Overview\" tab,\n"
"     select \"Subscription Management\" to enable the service for this "
"system.\n"
"     "
msgstr ""

#: ../common/rhnException.py:81
msgid "Record not available in the database."
msgstr ""

#: ../common/rhnException.py:82
msgid "Invalid value for entry."
msgstr ""

#: ../common/rhnException.py:83
#, python-format
msgid ""
"\n"
"     This system does not have a valid entitlement for SUSE Manager.\n"
"     Please visit https://%(hostname)s/rhn/systems/SystemEntitlements.do\n"
"     or login at https://%(hostname)s, and from the \"Overview\" tab,\n"
"     select \"Subscription Management\" to enable the service for this "
"system.\n"
"     "
msgstr ""

#: ../common/rhnException.py:89
msgid "Channel error"
msgstr ""

#: ../common/rhnException.py:90
msgid "Client session token is invalid."
msgstr ""

#: ../common/rhnException.py:91
msgid "Client session token has expired."
msgstr ""

#: ../common/rhnException.py:92
msgid "You are not authorized to retrieve the requested object."
msgstr ""

#: ../common/rhnException.py:93
msgid "Invalid action"
msgstr ""

#: ../common/rhnException.py:94
msgid "You are not allowed to perform administrative tasks on this system."
msgstr ""

#: ../common/rhnException.py:96
msgid "The system is already subscribed to the specified channel."
msgstr ""

#: ../common/rhnException.py:97
msgid "The system is not currently subscribed to the specified channel."
msgstr ""

#: ../common/rhnException.py:98
msgid "The specified channel does not exist."
msgstr ""

#: ../common/rhnException.py:99
msgid "Invalid channel version."
msgstr ""

#: ../common/rhnException.py:100
msgid ""
"\n"
"     User group membership limits exceeded.\n"
"\n"
"     The current settings for your account do not allow you to add another\n"
"     user account. Please check with the organization administrator for "
"your\n"
"     account if the maximum number of users allowed to subscribe to server "
"needs\n"
"     to be changed.\n"
"     "
msgstr ""

#: ../common/rhnException.py:108
msgid ""
"\n"
"     System group membership limits exceeded.\n"
"\n"
"     The current settings for your account do not allow you to add another\n"
"     system profile. Please check with the organization administrator for "
"your\n"
"     account for modifying the maximum number of system profiles that can "
"be\n"
"     subscribed to your account.\n"
"     "
msgstr ""

#: ../common/rhnException.py:116
msgid ""
"\n"
"     Invalid architecture.\n"
"\n"
"     The architecture of the package is not supported by\n"
"     "
msgstr ""

#: ../common/rhnException.py:121
msgid "Invalid RPM header"
msgstr ""

#: ../common/rhnException.py:122
msgid ""
"\n"
"    This system is already registered as a Salt Minion. If you want to "
"register it as a traditional client\n"
"    please delete it first via the web UI or API and then register it using "
"the traditional tools.\n"
"    "
msgstr ""

#. For the uploading tools
#: ../common/rhnException.py:127
msgid "Invalid information uploaded to the server"
msgstr ""

#: ../common/rhnException.py:128
msgid "Error uploading network interfaces configuration."
msgstr ""

#: ../common/rhnException.py:129
msgid ""
"\n"
"     Package Upload Failed due to uniqueness constraint violation.\n"
"     Make sure the package does not have any duplicate dependencies or\n"
"     does not already exists on the server\n"
"     "
msgstr ""

#: ../common/rhnException.py:134
msgid ""
"\n"
"     The --force rhnpush option is disabled on this server.\n"
"     Please contact your SUSE Manager administrator for more help.\n"
"     "
msgstr ""

#. 60-70: token errors
#: ../common/rhnException.py:140
msgid ""
"\n"
"     The activation token specified could not be found on the server.\n"
"     Please retry with a valid key.\n"
"     "
msgstr ""

#: ../common/rhnException.py:144
msgid "Too many systems registered using this registration token"
msgstr ""

#: ../common/rhnException.py:145
msgid "Token contains invalid, obsoleted or insufficient settings"
msgstr ""

#: ../common/rhnException.py:146
msgid "Conflicting activation tokens"
msgstr ""

#. 70-80: channel subscription errors
#: ../common/rhnException.py:149
msgid ""
"\n"
"     No matching base channel found for your system.\n"
"     "
msgstr ""

#: ../common/rhnException.py:152
msgid ""
"\n"
"     You do not have subscription permission to the designated channel.\n"
"     Please refer to your organization's channel or organization\n"
"     administrators for further details.\n"
"     "
msgstr ""

#: ../common/rhnException.py:157
msgid "You can not unsubscribe from base channel."
msgstr ""

#: ../common/rhnException.py:158
msgid "SUSE Manager or Proxy channel can not be subscribed."
msgstr ""

#. 80-90: server group errors
#: ../common/rhnException.py:161
msgid "There was an error while trying to join the system to its groups"
msgstr ""

#. 90-100: entitlement errors
#: ../common/rhnException.py:164
msgid "Unable to entitle system"
msgstr ""

#. 100-109: e-mail and uuid related faults
#: ../common/rhnException.py:167
msgid "Maximum e-mail length violation."
msgstr ""

#: ../common/rhnException.py:168
msgid "This system has been previously registered."
msgstr ""

#: ../common/rhnException.py:169
msgid "Invalid username"
msgstr ""

#. 140-159 applet errors
#: ../common/rhnException.py:172
msgid "Unable to look up server"
msgstr ""

#. 160-179: OSAD errors
#: ../common/rhnException.py:175
msgid "Required argument is missing"
msgstr ""

#. 600-699: RHEL5+ EN errors
#: ../common/rhnException.py:178
msgid "No entitlement information tied to hardware"
msgstr ""

#: ../common/rhnException.py:179
msgid "Installation number is not entitling"
msgstr ""

#. 700-799: Additional user input verification errors.
#: ../common/rhnException.py:182
msgid "Maximum username length violation"
msgstr ""

#: ../common/rhnException.py:183
msgid "Maximum password length violation"
msgstr ""

#: ../common/rhnException.py:184
msgid "This user has read only API access. Action denied."
msgstr ""

#: ../common/rhnException.py:186
msgid "System Name cannot be less than 1 character"
msgstr ""

#. 1000-1999: Proxy specific errors:
#. issued by a Proxy to the client
#: ../common/rhnException.py:190
msgid "SUSE Manager Proxy error."
msgstr ""

#: ../common/rhnException.py:191
msgid "SUSE Manager Proxy unable to login."
msgstr ""

#. issued by a SUSE Manager Server/Satellite to the proxy
#: ../common/rhnException.py:193
msgid ""
"\n"
"     SUSE Manager Proxy system ID does not match a Spacewalk Proxy Server\n"
"     in the database.\n"
"     "
msgstr ""

#: ../common/rhnException.py:197
msgid "SUSE Manager Proxy session token is invalid."
msgstr ""

#: ../common/rhnException.py:198
msgid "SUSE Manager Proxy session token has expired."
msgstr ""

#. 2000-2999: Red Hat Satellite specific errors:
#: ../common/rhnException.py:202
msgid ""
"\n"
"      user creation is not allowed via mgr_register;\n"
"     please contact your sysadmin to have your account created.\n"
"     "
msgstr ""

#: ../common/rhnException.py:206
msgid ""
"\n"
"     This SUSE Manager server is not allowed to use Inter Server Sync on "
"this server\n"
"     "
msgstr ""

#: ../common/rhnException.py:209
msgid ""
"\n"
"     Inter Server Sync is disabled on this SUSE Manager Server.\n"
"     "
msgstr ""

#. 3000-3999: XML dumper errors:
#: ../common/rhnException.py:214
msgid "Invalid datatype passed"
msgstr ""

#: ../common/rhnException.py:215
msgid "Unable to retrieve channel"
msgstr ""

#: ../common/rhnException.py:216
msgid "Unable to retrieve package"
msgstr ""

#: ../common/rhnException.py:217
msgid "Unable to retrieve erratum"
msgstr ""

#: ../common/rhnException.py:218
msgid "File is missing"
msgstr ""

#: ../common/rhnException.py:219
msgid "Function retrieval error"
msgstr ""

#: ../common/rhnException.py:220
msgid "Function execution error"
msgstr ""

#: ../common/rhnException.py:221
msgid "Missing version string"
msgstr ""

#: ../common/rhnException.py:222
msgid "Invalid version string"
msgstr ""

#: ../common/rhnException.py:223
msgid "Mismatching versions"
msgstr ""

#: ../common/rhnException.py:224
msgid "Invalid channel version"
msgstr ""

#: ../common/rhnException.py:225
msgid "No comps file for channel"
msgstr ""

#: ../common/rhnException.py:226
msgid "Unable to retrieve comps file"
msgstr ""

#. 4000 - 4999: config management errors
#: ../common/rhnException.py:229
msgid "Configuration action missing"
msgstr ""

#: ../common/rhnException.py:230
msgid "File too large"
msgstr ""

#: ../common/rhnException.py:231
msgid "File contains binary data"
msgstr ""

#: ../common/rhnException.py:232
msgid "Configuration channel is not empty"
msgstr ""

#: ../common/rhnException.py:233
msgid "Permission error"
msgstr ""

#: ../common/rhnException.py:234
msgid "Content missing for configuration file"
msgstr ""

#: ../common/rhnException.py:235
msgid "Template delimiters not specified"
msgstr ""

#: ../common/rhnException.py:236
msgid "Configuration channel does not exist"
msgstr ""

#: ../common/rhnException.py:237
msgid "Configuration channel already exists"
msgstr ""

#: ../common/rhnException.py:238
msgid "File missing from configuration channel"
msgstr ""

#: ../common/rhnException.py:239
msgid "Different revision of this file is uploaded"
msgstr ""

#: ../common/rhnException.py:240
msgid "File already uploaded to configuration channel"
msgstr ""

#: ../common/rhnException.py:241
msgid "File size exceeds remaining quota space"
msgstr ""

#: ../common/rhnException.py:242
msgid "Full path of file must be specified"
msgstr ""

#: ../common/rhnException.py:243
msgid "Invalid revision number"
msgstr ""

#: ../common/rhnException.py:244
msgid "Cannot compare files of different file type"
msgstr ""

#. 5000 - 5999: client content uploading errors
#. 5000 - 5099: crash reporting errors
#: ../common/rhnException.py:248
msgid "Crash information is invalid or incomplete"
msgstr ""

#: ../common/rhnException.py:249
msgid "Crash file information is invalid or incomplete"
msgstr ""

#: ../common/rhnException.py:250
msgid "Error composing crash directory path"
msgstr ""

#: ../common/rhnException.py:251
msgid "Error composing crash file path"
msgstr ""

#: ../common/rhnException.py:252 ../common/rhnException.py:259
msgid "Invalid content encoding"
msgstr ""

#: ../common/rhnException.py:253
msgid "Invalid crash name"
msgstr ""

#: ../common/rhnException.py:254
msgid "Crash reporting is disabled for this organization"
msgstr ""

#. 5100 - 5199: scap results reporting error
#: ../common/rhnException.py:256
msgid "SCAP results file transfer is invalid or incomplete"
msgstr ""

#: ../common/rhnException.py:257
msgid "Error composing directory path for detailed SCAP results"
msgstr ""

#: ../common/rhnException.py:258
msgid "Error composing file path for detailed SCAP results"
msgstr ""

#: ../common/rhnException.py:306
msgid ""
"\n"
"     An error has occurred while processing your request. If this problem\n"
"     persists please enter a bug report at scc.suse.com.\n"
"     If you choose to submit the bug report, please be sure to include\n"
"     details of what you were trying to do when this error occurred and\n"
"     details on how to reproduce this problem.\n"
msgstr ""

#: ../common/rhnException.py:358
#, python-format
msgid ""
"Error Message:\n"
"    %s\n"
msgstr ""

#: ../common/rhnException.py:360
#, python-format
msgid "Error Class Code: %s\n"
msgstr ""

#: ../common/rhnException.py:363
#, python-format
msgid "Error Class Info: %s\n"
msgstr ""

#: ../common/rhnException.py:365
#, python-format
msgid "Explanation: %s"
msgstr ""

#: ../common/rhnTB.py:205
#, python-format
msgid "ERROR: %s %s: %s"
msgstr ""

#: ../common/rhnTB.py:207
#, python-format
msgid "TRACEBACK: %s"
msgstr ""

#: ../satellite_tools/disk_dumper/iss.py:1294
#: ../satellite_tools/disk_dumper/iss.py:1298
#, python-format
msgid "format of %s should be at least YYYYMMDD.\n"
msgstr ""

#: ../satellite_tools/messages.py:26
#, python-format
msgid ""
"\n"
"ERROR: executing step %s. Error is:\n"
"%s\n"
msgstr ""

#: ../satellite_tools/messages.py:31
#, python-format
msgid ""
"\n"
"ERROR: there was a problem accessing the channel data from your temporary\n"
"       repository. Did you migrate all of the data from the channel ISOs\n"
"       do this directory? If so, please recheck the channels ISOs, ensure\n"
"       that you have them all, and then iteratively remount and repopulate\n"
"       the temporary repository (%s).\n"
msgstr ""

#: ../satellite_tools/messages.py:39
#, python-format
msgid ""
"\n"
"ERROR: there was a problem synchronizing the information.\n"
"       Error message: %s\n"
msgstr ""

#: ../satellite_tools/messages.py:44
#, python-format
msgid ""
"\n"
"ERROR: There was a problem communicating with the ISS Master.\n"
"       Depending on the specific error details, please review your "
"configuration,\n"
"       basic network connectivity, and/or name resolution, and try again.\n"
"       Error message: %s\n"
msgstr ""

#: ../satellite_tools/messages.py:51
#, python-format
msgid ""
"\n"
"ERROR: There was a problem communicating with the ISS Master.\n"
"       If the master satellite is older than v5.3, it does not have ISS "
"capability.\n"
"       Otherwise, depending on the specific error details, please review "
"your\n"
"       configuration, basic network connectivity, and/or name resolution, "
"and try again.\n"
"       Error message: %s\n"
msgstr ""

#: ../satellite_tools/messages.py:59
#, python-format
msgid ""
"\n"
"ERROR: a child-channel cannot be synced without its parent being synced as\n"
"       well. A parent needs to be either (a) previously synced or (b) "
"synced\n"
"       in tandem with the desired child-channel. Missing parents for this\n"
"       transaction:\n"
"       %s\n"
msgstr ""

#: ../satellite_tools/messages.py:67
#, python-format
msgid ""
"\n"
"ERROR: you are not entitled to sync a channel in this set of channels.\n"
"Please contact your SUSE Manager contact\n"
"%s"
msgstr ""

#: ../satellite_tools/messages.py:72
#, python-format
msgid "  ERROR: not enough free space (%s KB) on device."
msgstr ""

#: ../satellite_tools/messages.py:74
#, python-format
msgid "    %3d/%s Fetch successful: %s (%s bytes)"
msgstr ""

#: ../satellite_tools/messages.py:75
#, python-format
msgid "    Extinct package:  %s"
msgstr ""

#: ../satellite_tools/messages.py:76
#, python-format
msgid "   Total size: %s"
msgstr ""

#: ../satellite_tools/messages.py:77
#, python-format
msgid "      Downloaded %s of %s. Estimated remaining time: %s"
msgstr ""

#: ../satellite_tools/messages.py:78
#, python-format
msgid "    Fetch unsuccessful: %s"
msgstr ""

#: ../satellite_tools/messages.py:79
#, python-format
msgid "   RPM fetch summary: %s"
msgstr ""

#: ../satellite_tools/messages.py:80
#, python-format
msgid "       success: %d"
msgstr ""

#: ../satellite_tools/messages.py:81
#, python-format
msgid "       failed:  %d"
msgstr ""

#: ../satellite_tools/messages.py:82
#, python-format
msgid "       extinct: %d"
msgstr ""

#: ../satellite_tools/messages.py:84
#, python-format
msgid "   Retrieving / parsing *relevant* package metadata: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:85
#, python-format
msgid "   Retrieving / parsing errata data: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:86
#, python-format
msgid "   Retrieving / parsing kickstart data: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:87
#, python-format
msgid "   Retrieving / parsing kickstart tree files: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:88
#, python-format
msgid "   Importing *relevant* package metadata: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:89
msgid "   * WARNING: this may be a slow process."
msgstr ""

#: ../satellite_tools/messages.py:90
msgid "Linking packages to channels"
msgstr ""

#: ../satellite_tools/messages.py:91
#, python-format
msgid "   Importing *relevant* errata: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:92
msgid "   No new kickstartable tree to import"
msgstr ""

#: ../satellite_tools/messages.py:93
#, python-format
msgid "Importing kickstartable trees (%d)"
msgstr ""

#: ../satellite_tools/messages.py:94
#, python-format
msgid "Imported kickstartable trees (%d)"
msgstr ""

#: ../satellite_tools/reposync.py:111 ../satellite_tools/satsync.py:439
msgid "+++ sending log as an email +++"
msgstr ""

#: ../satellite_tools/reposync.py:114
#, python-format
msgid "%s sync. report from %s"
msgstr ""

#: ../satellite_tools/reposync.py:124 ../satellite_tools/satsync.py:449
msgid "+++ email requested, but there is nothing to send +++"
msgstr ""

#: ../satellite_tools/rhn_satellite_activate.py:198
#, python-format
msgid ""
"\"%s\" (specified in commandline)\n"
"could not be opened and read:\n"
"%s"
msgstr ""

#: ../satellite_tools/rhn_satellite_activate.py:205
#, python-format
msgid ""
"\"%s\" could not be opened\n"
"and/or written to:\n"
"%s"
msgstr ""

#: ../satellite_tools/satsync.py:258
#, python-format
msgid "No handler for step %s"
msgstr ""

#. Try one more time - this time it should be faster since
#. everything should be cached
#: ../satellite_tools/satsync.py:270
msgid "Environment changed, trying again..."
msgstr ""

#: ../satellite_tools/satsync.py:277
msgid "ERROR: Encountered IntegrityError: \n"
msgstr ""

#: ../satellite_tools/satsync.py:285
msgid "Repeated failures"
msgstr ""

#: ../satellite_tools/satsync.py:290
#, python-format
msgid ""
"    Import complete:\n"
"        Begin time: %s\n"
"        End time:   %s\n"
"        Elapsed:    %s\n"
"          "
msgstr ""

#: ../satellite_tools/satsync.py:311
msgid "hours"
msgstr ""

#: ../satellite_tools/satsync.py:311
msgid "minutes"
msgstr ""

#: ../satellite_tools/satsync.py:311
msgid "seconds"
msgstr ""

#: ../satellite_tools/satsync.py:357
msgid ""
"ERROR: The dump is missing package data, use --no-rpms to skip this step or "
"fix the content to include package data."
msgstr ""

#. the orgs() method doesn't exist; that's fine we just
#. won't sync the orgs
#: ../satellite_tools/satsync.py:404
msgid "The SUSE Manager master does not support syncing orgs data."
msgstr ""

#: ../satellite_tools/satsync.py:404
msgid "Skipping..."
msgstr ""

#: ../satellite_tools/satsync.py:442
#, python-format
msgid "SUSE Manager Inter Server sync. report from %s"
msgstr ""

#: ../satellite_tools/satsync.py:521
msgid " - file-system synchronization"
msgstr ""

#: ../satellite_tools/satsync.py:533 ../satellite_tools/satsync.py:541
msgid " - live synchronization"
msgstr ""

#: ../satellite_tools/satsync.py:534
#, python-brace-format
msgid ""
"ERROR: Live content synchronizing with RHN Classic Hosted is no longer "
"supported.\n"
"Please use the cdn-sync command instead unless you are attempting to sync "
"from another {PRODUCT_NAME} via Inter-Server-Sync (ISS), or from local "
"content on disk via Channel Dump ISOs."
msgstr ""

#: ../satellite_tools/satsync.py:542
#, python-format
msgid "   url: %s"
msgstr ""

#: ../satellite_tools/satsync.py:543
#, python-format
msgid "   debug/output level: %s"
msgstr ""

#: ../satellite_tools/satsync.py:553
msgid "ERROR: this server must be registered with SUSE Manager."
msgstr ""

#: ../satellite_tools/satsync.py:575
#, python-format
msgid "Retrieving / parsing %s data"
msgstr ""

#: ../satellite_tools/satsync.py:585 ../satellite_tools/satsync.py:600
msgid "*** SYSTEM INTERRUPT CALLED ***"
msgstr ""

#: ../satellite_tools/satsync.py:593
msgid "ERROR: fatal parser exception occurred "
msgstr ""

#: ../satellite_tools/satsync.py:594
#, python-format
msgid "(line: %s, col: %s msg: %s)"
msgstr ""

#: ../satellite_tools/satsync.py:598
#, python-format
msgid "ERROR: parser exception occurred: %s"
msgstr ""

#: ../satellite_tools/satsync.py:603
msgid "ERROR: exception (during parse) occurred: "
msgstr ""

#: ../satellite_tools/satsync.py:604
#, python-format
msgid ""
"   Encountered some errors with %s data (see logs (%s) for more information)"
msgstr ""

#: ../satellite_tools/satsync.py:606
#, python-format
msgid "   Encountered some errors with %s data:"
msgstr ""

#: ../satellite_tools/satsync.py:607
#, python-format
msgid "   ------- %s PARSE/IMPORT ERROR -------"
msgstr ""

#: ../satellite_tools/satsync.py:609
msgid "   ---------------------------------------"
msgstr ""

#: ../satellite_tools/satsync.py:612
#, python-format
msgid "%s data complete"
msgstr ""

#: ../satellite_tools/satsync.py:665
msgid "Retrieving / parsing channel data"
msgstr ""

#: ../satellite_tools/satsync.py:718
msgid "Channel data complete"
msgstr ""

#: ../satellite_tools/satsync.py:736
#, python-format
msgid "%10s import from %s"
msgstr ""

#: ../satellite_tools/satsync.py:739
#, python-format
msgid "%10s import from %s - %s"
msgstr ""

#: ../satellite_tools/satsync.py:743
#, python-format
msgid "%10s"
msgstr ""

#: ../satellite_tools/satsync.py:750
msgid "p"
msgstr ""

#: ../satellite_tools/satsync.py:752
msgid "."
msgstr ""

#: ../satellite_tools/satsync.py:758
msgid "   p = previously imported/synced channel"
msgstr ""

#: ../satellite_tools/satsync.py:759
msgid "   . = channel not yet imported/synced"
msgstr ""

#: ../satellite_tools/satsync.py:765
msgid "   e = channel no longer supported (end-of-service)"
msgstr ""

#: ../satellite_tools/satsync.py:767
msgid "   ? = channel label invalid --- typo?"
msgstr ""

#: ../satellite_tools/satsync.py:771
#, python-format
msgid "   %s:"
msgstr ""

#: ../satellite_tools/satsync.py:772
#, python-format
msgid "      %s %-40s %4s %s"
msgstr ""

#: ../satellite_tools/satsync.py:773
msgid "base-channels"
msgstr ""

#: ../satellite_tools/satsync.py:786 ../satellite_tools/satsync.py:1603
msgid "NONE RELEVANT"
msgstr ""

#: ../satellite_tools/satsync.py:808
msgid "end-of-service"
msgstr ""

#: ../satellite_tools/satsync.py:809
msgid "e"
msgstr ""

#: ../satellite_tools/satsync.py:815
msgid "   typos:"
msgstr ""

#: ../satellite_tools/satsync.py:816
msgid "?"
msgstr ""

#: ../satellite_tools/satsync.py:831
#, python-format
msgid "XXX: imported channels: %s"
msgstr ""

#: ../satellite_tools/satsync.py:832
#, python-format
msgid "XXX:   cached channels: %s"
msgstr ""

#: ../satellite_tools/satsync.py:837
msgid "XXX: list channels called"
msgstr ""

#: ../satellite_tools/satsync.py:855
msgid "ERROR: these channels either do not exist or are not available:"
msgstr ""

#: ../satellite_tools/satsync.py:859
#, python-format
msgid "       (to see a list of channel labels: %s --list-channels)"
msgstr ""

#: ../satellite_tools/satsync.py:904
#, python-format
msgid "   Retrieving / parsing short package metadata: %s (%s)"
msgstr ""

#: ../satellite_tools/satsync.py:965
#, python-format
msgid "Diffing package metadata (what's missing locally?): %s"
msgstr ""

#: ../satellite_tools/satsync.py:971 ../satellite_tools/satsync.py:1254
msgid "Diffing:    "
msgstr ""

#: ../satellite_tools/satsync.py:988
msgid "ERROR: incremental dump skipped"
msgstr ""

#: ../satellite_tools/satsync.py:1079
msgid "Downloading rpm packages"
msgstr ""

#: ../satellite_tools/satsync.py:1084
#, python-format
msgid "   Fetching any missing RPMs: %s (%s)"
msgstr ""

#: ../satellite_tools/satsync.py:1085 ../satellite_tools/satsync.py:1153
msgid "NONE MISSING"
msgstr ""

#: ../satellite_tools/satsync.py:1094
msgid "Processing rpm packages complete"
msgstr ""

#: ../satellite_tools/satsync.py:1121
msgid "Downloading package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1146
msgid "Downloading srpm packages"
msgstr ""

#: ../satellite_tools/satsync.py:1152
#, python-format
msgid "   Fetching any missing SRPMs: %s (%s)"
msgstr ""

#: ../satellite_tools/satsync.py:1249
#, python-format
msgid "Diffing source package metadata (what's missing locally?): %s"
msgstr ""

#: ../satellite_tools/satsync.py:1260
msgid "Downloading source package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1338 ../satellite_tools/satsync.py:2027
#, python-format
msgid "Unable to save file %s: %s"
msgstr ""

#. for
#. Retried a number of times and it still failed; log the
#. file as being failed and move on
#: ../satellite_tools/satsync.py:1345
#, python-format
msgid "Failed to fetch file %s"
msgstr ""

#: ../satellite_tools/satsync.py:1350
msgid "Downloading kickstartable trees metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1365
msgid "Downloading kickstartable trees files"
msgstr ""

#: ../satellite_tools/satsync.py:1504
#, python-format
msgid "Grabbing all patches for channel %s"
msgstr ""

#: ../satellite_tools/satsync.py:1554
msgid "Downloading patch data"
msgstr ""

#: ../satellite_tools/satsync.py:1556
msgid "Forcing download of all patch data for requested channels."
msgstr ""

#: ../satellite_tools/satsync.py:1571
msgid "Downloading patch data complete"
msgstr ""

#: ../satellite_tools/satsync.py:1576 ../satellite_tools/satsync.py:1597
msgid "Downloading:"
msgstr ""

#: ../satellite_tools/satsync.py:1579
msgid " - complete"
msgstr ""

#: ../satellite_tools/satsync.py:1624
msgid "Importing source package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1627
msgid "Importing package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1635
msgid "Importing:  "
msgstr ""

#. not in the cache
#: ../satellite_tools/satsync.py:1703
msgid ""
"Package Not Found in Cache, Clear the Cache "
"to                                  Regenerate it."
msgstr ""

#: ../satellite_tools/satsync.py:1709
msgid "Importing channel patches"
msgstr ""

#: ../satellite_tools/satsync.py:1714
#, python-format
msgid "Importing %s patches for channel %s."
msgstr ""

#. Incomplete configuration
#: ../satellite_tools/satsync.py:2113
msgid "ERROR: server.mount_point not set in the configuration file"
msgstr ""

#: ../satellite_tools/satsync.py:2117
#, python-format
msgid "ERROR: server.mount_point %s do not exist"
msgstr ""

#: ../satellite_tools/satsync.py:2122
#, python-format
msgid "ERROR: path under server.mount_point (%s)  do not exist"
msgstr ""

#: ../satellite_tools/satsync.py:2199
#, python-format
msgid "Commandline: %s"
msgstr ""

#: ../satellite_tools/satsync.py:2202
#, python-format
msgid ""
"DEBUG ONLY: max. batch-size for XML/database-import processing (1..%s).\"man "
"satellite-sync\" for more information."
msgstr ""

#: ../satellite_tools/satsync.py:2205
msgid "alternative SSL CA Cert (fullpath to cert file)"
msgstr ""

#: ../satellite_tools/satsync.py:2207
msgid "process data for this channel only"
msgstr ""

#: ../satellite_tools/satsync.py:2209
msgid ""
"disk dump will be considered to be a full export; see \"man satellite-sync\" "
"for more information."
msgstr ""

#: ../satellite_tools/satsync.py:2212
msgid "existing custom channels will also be synced (unless -c is used)"
msgstr ""

#: ../satellite_tools/satsync.py:2214
#, python-format
msgid ""
"override debug level set in /etc/rhn/rhn.conf (which is currently set at %s)."
msgstr ""

#: ../satellite_tools/satsync.py:2216
#, python-format
msgid "requested version of XML dump (default: %s)"
msgstr ""

#: ../satellite_tools/satsync.py:2218
msgid "e-mail a report of what was synced/imported"
msgstr ""

#: ../satellite_tools/satsync.py:2220
msgid "forcibly process all (not a diff of) patch metadata"
msgstr ""

#: ../satellite_tools/satsync.py:2222
msgid "Do not use an http proxy under any circumstances."
msgstr ""

#: ../satellite_tools/satsync.py:2224
msgid "alternative http proxy (hostname:port)"
msgstr ""

#: ../satellite_tools/satsync.py:2226
msgid "alternative http proxy username"
msgstr ""

#: ../satellite_tools/satsync.py:2228
msgid "alternative http proxy password"
msgstr ""

#: ../satellite_tools/satsync.py:2230
msgid "parent SUSE Manager to import content from"
msgstr ""

#: ../satellite_tools/satsync.py:2232
msgid "list all available channels and exit"
msgstr ""

#: ../satellite_tools/satsync.py:2234
msgid "help on all error codes mgr-inter-sync returns"
msgstr ""

#: ../satellite_tools/satsync.py:2236
msgid "source mount point for import - disk update only"
msgstr ""

#: ../satellite_tools/satsync.py:2238
msgid "do not process patch data"
msgstr ""

#: ../satellite_tools/satsync.py:2240
msgid "do not process kickstart data (provisioning only)"
msgstr ""

#: ../satellite_tools/satsync.py:2242
msgid "do not process full package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:2244
msgid "do not download, or process any RPMs"
msgstr ""

#: ../satellite_tools/satsync.py:2246
msgid "turn off SSL (not recommended)"
msgstr ""

#: ../satellite_tools/satsync.py:2248
msgid "org to which the sync imports data. defaults to the admin account"
msgstr ""

#: ../satellite_tools/satsync.py:2250
msgid "print the configuration and exit"
msgstr ""

#: ../satellite_tools/satsync.py:2252
msgid "alternative server with which to connect (hostname)"
msgstr ""

#: ../satellite_tools/satsync.py:2254
msgid "synchronize to this step (man satellite-sync for more info)"
msgstr ""

#: ../satellite_tools/satsync.py:2256
msgid "write complete data to tempfile before streaming to remainder of app"
msgstr ""

#: ../satellite_tools/satsync.py:2258
msgid "DEBUG ONLY: alternative path to digital system id"
msgstr ""

#: ../satellite_tools/satsync.py:2260
msgid "alternative email address(es) for sync output (--email option)"
msgstr ""

#: ../satellite_tools/satsync.py:2262
msgid "do not remove rpms when importing from local dump"
msgstr ""

#: ../satellite_tools/satsync.py:2264
msgid ""
"the fully qualified domain name of the master Satellite. Valid with --mount-"
"point only. Required if you want to import org data and channel permissions."
msgstr ""

#: ../satellite_tools/satsync.py:2274
#, python-format
msgid "ERROR: these arguments make no sense in this context (try --help): %s"
msgstr ""

#. An SQL error is fatal... crash and burn
#: ../satellite_tools/satsync.py:2286
#, python-format
msgid "ERROR: Can't connect to the database: %s"
msgstr ""

#: ../satellite_tools/satsync.py:2287
msgid "ERROR: Check if your database is running."
msgstr ""

#: ../satellite_tools/satsync.py:2322
#, python-format
msgid "ERROR: --debug-level takes an in integer value within the range %s."
msgstr ""

#: ../satellite_tools/satsync.py:2324
msgid "  0  - little logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2325
msgid "  1  - minimal logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2326
msgid "  2  - normal level of logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2327
msgid "  3  - lots of logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2328
msgid "  4+ - excessive logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2341
msgid "ERROR: The --master option is only valid with the --mount-point option"
msgstr ""

#: ../satellite_tools/satsync.py:2351
#, python-format
msgid "ERROR: Unable to lookup Org Id %s"
msgstr ""

#: ../satellite_tools/satsync.py:2360
msgid ""
"WARNING: --list-channels option overrides any --step option. --step ignored."
msgstr ""

#: ../satellite_tools/satsync.py:2375
#, python-format
msgid ""
"ERROR: '%s' is not a valid step. See 'man mgr-inter-sync' for more detail."
msgstr ""

#: ../satellite_tools/satsync.py:2407
msgid ""
"ERROR: No channels currently imported; try mgr-inter-sync --list-channels; "
"then mgr-inter-sync -c chn0 -c chn1..."
msgstr ""

#. int(None) --> TypeError
#. int('a')  --> ValueError
#: ../satellite_tools/satsync.py:2457 ../satellite_tools/satsync.py:2461
msgid "ERROR: --batch-size must have a value within the range: 1..50"
msgstr ""

#: ../satellite_tools/satsync.py:2469
#, python-format
msgid "ERROR: no such directory %s"
msgstr ""

#: ../satellite_tools/satsync.py:2474
msgid "Error Codes: Returned codes means:"
msgstr ""

#: ../satellite_tools/satsync.py:2475
msgid " -1  - Could not lock file or KeyboardInterrupt or SystemExit"
msgstr ""

#: ../satellite_tools/satsync.py:2476
msgid "  0  - User interrupted or intentional exit"
msgstr ""

#: ../satellite_tools/satsync.py:2477
msgid "  1  - attempting to run more than one instance of mgr-inter-sync."
msgstr ""

#: ../satellite_tools/satsync.py:2478
msgid "  2  - Unable to find synchronization tools."
msgstr ""

#: ../satellite_tools/satsync.py:2479
msgid "  3  - a general socket exception occurred"
msgstr ""

#: ../satellite_tools/satsync.py:2480
msgid "  4  - an SSL error occurred. Recheck your SSL settings."
msgstr ""

#: ../satellite_tools/satsync.py:2481
msgid "  5  - ISS error"
msgstr ""

#: ../satellite_tools/satsync.py:2482
msgid "  6  - unhandled exception occurred"
msgstr ""

#: ../satellite_tools/satsync.py:2483
msgid "  7  - unknown sync error"
msgstr ""

#: ../satellite_tools/satsync.py:2484
msgid "  8  - ERROR: must be root to execute"
msgstr ""

#: ../satellite_tools/satsync.py:2485
msgid "  9  - rpclib fault during synchronization init"
msgstr ""

#: ../satellite_tools/satsync.py:2486
msgid "  10 - synchronization init error"
msgstr ""

#: ../satellite_tools/satsync.py:2487
msgid "  11 - Error parsing XML stream"
msgstr ""

#: ../satellite_tools/satsync.py:2488
msgid "  12 - Channel do not exist"
msgstr ""

#: ../satellite_tools/satsync.py:2489
msgid "  13 - SQL error during importing package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:2490
msgid "  14 - SQL error during linking channel packages"
msgstr ""

#: ../satellite_tools/satsync.py:2491
msgid "  15 - SQL error during xml processing"
msgstr ""

#: ../satellite_tools/satsync.py:2492
msgid "  16 - server.mount_point not set in the configuration file"
msgstr ""

#: ../satellite_tools/satsync.py:2493
msgid ""
"  17 - SQL error during retrieving the channels already imported in the SUSE "
"Manager database"
msgstr ""

#: ../satellite_tools/satsync.py:2494
msgid "  18 - Wrong db connection string in rhn.conf"
msgstr ""

#: ../satellite_tools/satsync.py:2495
msgid "  19 - Bad arguments"
msgstr ""

#: ../satellite_tools/satsync.py:2496
msgid "  20 - Could not connect to db."
msgstr ""

#: ../satellite_tools/satsync.py:2497
msgid "  21 - Bad debug level"
msgstr ""

#: ../satellite_tools/satsync.py:2498
msgid "  22 - Not valid step"
msgstr ""

#: ../satellite_tools/satsync.py:2499
msgid "  24 - no such file"
msgstr ""

#: ../satellite_tools/satsync.py:2500
msgid "  25 - no such directory"
msgstr ""

#: ../satellite_tools/satsync.py:2501
msgid "  26 - mount_point does not exist"
msgstr ""

#: ../satellite_tools/satsync.py:2502
msgid "  27 - No such org"
msgstr ""

#: ../satellite_tools/satsync.py:2503
msgid "  28 - error: --master is only valid with --mount-point"
msgstr ""

#: ../satellite_tools/satsync.py:2510
#, python-format
msgid "ERROR: unknown dump version, try one of %s"
msgstr ""
07070100000067000081B40000000000000000000000016290A0C10000B63E000000000000000000000000000000000000001B00000000spacewalk-backend/po/el.po    # SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
#
# Translators:
# Nikos Charonitakis <charosn@her.forthnet.gr>, 2002, 2004.
msgid ""
msgstr ""
"Project-Id-Version: Spacewalk\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-10-16 13:34+0200\n"
"PO-Revision-Date: 2011-03-04 16:08+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Greek <trans-el@lists.fedoraproject.org>\n"
"Language: el\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"

#: ../server/apacheAuth.py:66
#, python-format
msgid "incomplete proxy authentication token: %s"
msgstr ""

#: ../server/apacheAuth.py:84
#, python-format
msgid "Sent proxy signature %s does not match ours %s."
msgstr ""

#: ../server/apacheAuth.py:119
msgid "declined proxy authentication"
msgstr ""

#: ../server/apacheRequest.py:59
#, python-format
msgid "Invalid request received (%s)."
msgstr ""

#: ../server/apacheRequest.py:120
#, python-format
msgid ""
"IMPORTANT MESSAGE FOLLOWS:\n"
"%s"
msgstr ""

#: ../server/apacheRequest.py:149
#, python-format
msgid ""
"While running '%s': caught\n"
"%s : %s\n"
msgstr ""

#: ../server/apacheRequest.py:606
#, python-format
msgid "Invalid URI %s"
msgstr ""

#: ../server/configFilesHandler.py:129 ../server/handlers/app/packages.py:192
#: ../server/handlers/xmlrpc/registration.py:215
#: ../server/handlers/xmlrpc/registration.py:1168
#: ../server/handlers/xmlrpc/registration.py:1307
#, python-format
msgid ""
"\n"
"                   %s Account has been deactivated on this server.\n"
"                   Please contact your Org administrator for more help."
msgstr ""

#: ../server/handlers/applet/applet.py:78
#, python-brace-format
msgid "Your system was not found in the {PRODUCT_NAME} database"
msgstr ""

#: ../server/handlers/sat/auth.py:45
msgid "ISS is disabled on this server."
msgstr ""

#: ../server/handlers/sat/auth.py:50
#, python-format
msgid "Server \"%s\" is not enabled for ISS."
msgstr ""

#: ../server/handlers/xmlrpc/errata.py:64
#, python-format
msgid "Expected a package name, not: %s"
msgstr ""

#: ../server/handlers/xmlrpc/errata.py:115
#, python-format
msgid "Expected a package, not: %s"
msgstr ""

#: ../server/handlers/xmlrpc/proxy.py:65
#, python-format
msgid "SUSE Manager Proxy service not enabled for server profile: \"%s\""
msgstr ""

#: ../server/handlers/xmlrpc/proxy.py:85
msgid "Invalid session key"
msgstr ""

#: ../server/handlers/xmlrpc/proxy.py:93
msgid "This server ID no longer exists"
msgstr ""

#: ../server/handlers/xmlrpc/queue.py:433
#, python-format
msgid "Invalid action value type %s (%s)"
msgstr ""

#: ../server/handlers/xmlrpc/queue.py:464
#, python-format
msgid "Action %s does not belong to server %s"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:194
msgid "Required data missing"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:198
msgid "Required members missing"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:207
msgid "Attempt to register a system to an invalid username"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:839
msgid "Invalid system release version requested"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1063
msgid ""
"Unable to find a valid network interface, both ipaddr and ip6addr not found."
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1115
#, python-brace-format
msgid "{PRODUCT_NAME} Welcome Message"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1125
msgid "Privacy Statement"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1146
msgid "Expected a dictionary as a product argument"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1374
#, python-format
msgid "Invalid value '%s' for %s (%s)"
msgstr ""

#: ../server/handlers/xmlrpc/scap.py:104
msgid "Invalid system_id/action_id pair."
msgstr ""

#: ../server/handlers/xmlrpc/up2date.py:233
#, python-format
msgid "Invalid value %s (%s)"
msgstr ""

#: ../server/importlib/userAuth.py:98
msgid "You are not authorized to manage packages in the null org"
msgstr ""

#: ../server/importlib/userAuth.py:103
#, python-format
msgid "You are not allowed to manage packages in the %s org"
msgstr ""

#: ../server/importlib/userAuth.py:121
msgid "You are not allowed to perform administrative tasks"
msgstr ""

#: ../server/importlib/userAuth.py:144
#, python-format
msgid ""
"You are not allowed to manage channel %s, or that channel does not exist"
msgstr ""

#: ../server/importlib/userAuth.py:204
#, python-format
msgid ""
"\n"
"               %s Account has been deactivated on this server.\n"
"               Please contact your Org administrator for more help."
msgstr ""

#: ../server/rhnChannel.py:1992
#, python-format
msgid ""
"Your account does not have access to any channels matching "
"(release='%(release)s', arch='%(arch)s')%(www_activation)s"
msgstr ""

#: ../server/rhnChannel.py:2002
msgid ""
"\n"
"If you have a registration number, please register with it first at http://"
"www.redhat.com/apps/activate/ and then try again.\n"
"\n"
msgstr ""

#: ../server/rhnChannel.py:2012
#, python-format
msgid "Insufficient subscription permissions for release (%s, %s"
msgstr ""

#. Various messages that can be reused
#.
#. bretm 02/07/2007 -- when we have better old-client documentation, probably
#. will be safe to get rid of all this crap
#: ../server/rhnChannel.py:2276 ../server/rhnChannel.py:2287
#: ../server/rhnChannel.py:2302
msgid "System Registered but Inactive"
msgstr ""

#: ../server/rhnChannel.py:2277
#, python-format
msgid ""
"\n"
"Invalid Architecture and OS release combination (%s, %s).\n"
"Your system has been registered, but will not receive updates\n"
"because it is not subscribed to a channel. If you have not yet\n"
"activated your product for service, please visit our website at:\n"
"\n"
"     http://www.redhat.com/apps/activate/\n"
"\n"
"...to activate your product."
msgstr ""

#: ../server/rhnChannel.py:2288
#, python-format
msgid ""
"\n"
"Invalid Architecture and OS release combination (%s, %s).\n"
"Your system has been registered, but will not receive updates\n"
"because it could not be subscribed to a base channel.\n"
"Please contact your organization administrator for assistance.\n"
msgstr ""

#: ../server/rhnChannel.py:2295
#, python-format
msgid ""
"\n"
"  This system has been successfully registered, but is not yet entitled\n"
"  to service.  To entitle this system to service, login to the web site at:\n"
"\n"
"  %(entitlement_url)s\n"
msgstr ""

#: ../server/rhnChannel.py:2303
#, python-format
msgid ""
"\n"
"  This system has been successfully registered, but no service entitlements\n"
"  were available.  To entitle this system to service, login to the web site "
"at:\n"
"\n"
"  %(entitlement_url)s\n"
msgstr ""

#: ../server/rhnHandler.py:62
msgid "Please run rhn_register as root on this client"
msgstr ""

#: ../server/rhnHandler.py:75
#, python-format
msgid "Service not enabled for system profile: \"%s\""
msgstr ""

#: ../server/rhnPackage.py:49 ../server/rhnPackage.py:87
#: ../server/rhnPackage.py:107 ../server/rhnPackage.py:158
#, python-format
msgid "Invalid RPM package %s requested"
msgstr ""

#: ../server/rhnPackage.py:112
msgid "Package not found"
msgstr ""

#: ../server/rhnServer/server_class.py:97
#, python-format
msgid "Architecture `%s' is not supported"
msgstr ""

#: ../server/rhnServer/server_token.py:78
#, python-format
msgid "Token `%s' has more than one base channel assigned"
msgstr ""

#: ../server/rhnServer/server_token.py:80
msgid "Conflicting base channels"
msgstr ""

#: ../server/rhnServer/server_token.py:190
#, python-format
msgid "Failed to add server to group %s"
msgstr ""

#: ../server/rhnServer/server_token.py:503
#, python-format
msgid "Maximum usage count of %s reached"
msgstr ""

#: ../server/rhnServer/server_token.py:744
msgid ""
"Stacking of re-registration tokens with different base entitlements is not "
"supported"
msgstr ""

#: ../server/rhnServer/server_token.py:811
#, python-format
msgid "Could not find token '%s'"
msgstr ""

#. Cannot use activation keys from different orgs
#: ../server/rhnServer/server_token.py:843
msgid "Tokens from mismatching orgs"
msgstr ""

#. Two tokens with different kickstart sessions
#: ../server/rhnServer/server_token.py:853
msgid "Kickstart session mismatch"
msgstr ""

#: ../server/rhnServer/server_token.py:877
msgid "Stacking of re-registration tokens is not supported"
msgstr ""

#: ../server/rhnUser.py:289 ../server/rhnUser.py:292
msgid "Invalid username/password combination"
msgstr ""

#. nope, not reserved either
#: ../server/rhnUser.py:467
#, python-format
msgid "Username `%s' has not been reserved"
msgstr ""

#. New accounts have to specify an e-mail address
#: ../server/rhnUser.py:473
msgid "E-mail address not specified"
msgstr ""

#: ../server/rhnUser.py:509
#, python-format
msgid "username should be at least %d characters"
msgstr ""

#: ../server/rhnUser.py:512
#, python-format
msgid "username should be less than %d characters"
msgstr ""

#: ../server/rhnUser.py:523
#, python-format
msgid "username = `%s', invalid character `%s'"
msgstr ""

#: ../server/rhnUser.py:542
#, python-format
msgid "Please limit your e-mail address to %s chars"
msgstr ""

#: ../server/rhnUser.py:623
#, python-format
msgid "password must be at least %d characters"
msgstr ""

#: ../server/rhnUser.py:626
#, python-format
msgid "Password must be shorter than %d characters"
msgstr ""

#: ../server/rhnUser.py:644
#, python-format
msgid "password contains character `%s'"
msgstr ""

#: ../server/rhnUser.py:651
#, python-format
msgid "username should be at least %d characters long"
msgstr ""

#: ../server/rhnUser.py:662
#, python-format
msgid "Cannot register usernames ending with %s"
msgstr ""

#. 0-999: Red Hat client/client-like interaction errors:
#: ../common/rhnException.py:53
msgid "This does not appear to be a valid username."
msgstr ""

#: ../common/rhnException.py:54
msgid "Invalid username and password combination."
msgstr ""

#: ../common/rhnException.py:55
msgid "This login is already taken, or the password is incorrect."
msgstr ""

#: ../common/rhnException.py:56
msgid "Permission denied."
msgstr ""

#: ../common/rhnException.py:57
msgid "Object not found."
msgstr ""

#: ../common/rhnException.py:58
msgid "Invalid System Digital ID."
msgstr ""

#: ../common/rhnException.py:59
msgid "Invalid System Credentials."
msgstr ""

#: ../common/rhnException.py:60
msgid "Could not retrieve user data from database."
msgstr ""

#: ../common/rhnException.py:61
msgid "Valid username required."
msgstr ""

#: ../common/rhnException.py:62
msgid "Valid password required."
msgstr ""

#: ../common/rhnException.py:63
msgid "Minimum username length violation."
msgstr ""

#: ../common/rhnException.py:64
msgid "Minimum password length violation."
msgstr ""

#: ../common/rhnException.py:65
msgid "The username contains invalid characters."
msgstr ""

#: ../common/rhnException.py:66
msgid "File not found."
msgstr ""

#: ../common/rhnException.py:67
msgid "Architecture and OS version combination is not supported."
msgstr ""

#: ../common/rhnException.py:68
msgid "Could not retrieve system data from database."
msgstr ""

#: ../common/rhnException.py:69
msgid "Invalid arguments passed to function."
msgstr ""

#: ../common/rhnException.py:70
msgid "Unable to retrieve requested entry."
msgstr ""

#: ../common/rhnException.py:71
msgid "Could not update database entry."
msgstr ""

#: ../common/rhnException.py:72
msgid "Unsupported server architecture."
msgstr ""

#: ../common/rhnException.py:73
#, python-format
msgid ""
"\n"
"     The anonymous server functionality is no longer available.\n"
"\n"
"     Please re-register this system by running mgr_register as root.\n"
"     Please visit https://%(hostname)s/rhn/systems/SystemEntitlements.do\n"
"     or login at https://%(hostname)s, and from the \"Overview\" tab,\n"
"     select \"Subscription Management\" to enable the service for this "
"system.\n"
"     "
msgstr ""

#: ../common/rhnException.py:81
msgid "Record not available in the database."
msgstr ""

#: ../common/rhnException.py:82
msgid "Invalid value for entry."
msgstr ""

#: ../common/rhnException.py:83
#, python-format
msgid ""
"\n"
"     This system does not have a valid entitlement for SUSE Manager.\n"
"     Please visit https://%(hostname)s/rhn/systems/SystemEntitlements.do\n"
"     or login at https://%(hostname)s, and from the \"Overview\" tab,\n"
"     select \"Subscription Management\" to enable the service for this "
"system.\n"
"     "
msgstr ""

#: ../common/rhnException.py:89
msgid "Channel error"
msgstr ""

#: ../common/rhnException.py:90
msgid "Client session token is invalid."
msgstr ""

#: ../common/rhnException.py:91
msgid "Client session token has expired."
msgstr ""

#: ../common/rhnException.py:92
msgid "You are not authorized to retrieve the requested object."
msgstr ""

#: ../common/rhnException.py:93
msgid "Invalid action"
msgstr ""

#: ../common/rhnException.py:94
msgid "You are not allowed to perform administrative tasks on this system."
msgstr ""

#: ../common/rhnException.py:96
msgid "The system is already subscribed to the specified channel."
msgstr ""

#: ../common/rhnException.py:97
msgid "The system is not currently subscribed to the specified channel."
msgstr ""

#: ../common/rhnException.py:98
msgid "The specified channel does not exist."
msgstr ""

#: ../common/rhnException.py:99
msgid "Invalid channel version."
msgstr ""

#: ../common/rhnException.py:100
msgid ""
"\n"
"     User group membership limits exceeded.\n"
"\n"
"     The current settings for your account do not allow you to add another\n"
"     user account. Please check with the organization administrator for "
"your\n"
"     account if the maximum number of users allowed to subscribe to server "
"needs\n"
"     to be changed.\n"
"     "
msgstr ""

#: ../common/rhnException.py:108
msgid ""
"\n"
"     System group membership limits exceeded.\n"
"\n"
"     The current settings for your account do not allow you to add another\n"
"     system profile. Please check with the organization administrator for "
"your\n"
"     account for modifying the maximum number of system profiles that can "
"be\n"
"     subscribed to your account.\n"
"     "
msgstr ""

#: ../common/rhnException.py:116
msgid ""
"\n"
"     Invalid architecture.\n"
"\n"
"     The architecture of the package is not supported by\n"
"     "
msgstr ""

#: ../common/rhnException.py:121
msgid "Invalid RPM header"
msgstr ""

#: ../common/rhnException.py:122
msgid ""
"\n"
"    This system is already registered as a Salt Minion. If you want to "
"register it as a traditional client\n"
"    please delete it first via the web UI or API and then register it using "
"the traditional tools.\n"
"    "
msgstr ""

#. For the uploading tools
#: ../common/rhnException.py:127
msgid "Invalid information uploaded to the server"
msgstr ""

#: ../common/rhnException.py:128
msgid "Error uploading network interfaces configuration."
msgstr ""

#: ../common/rhnException.py:129
msgid ""
"\n"
"     Package Upload Failed due to uniqueness constraint violation.\n"
"     Make sure the package does not have any duplicate dependencies or\n"
"     does not already exists on the server\n"
"     "
msgstr ""

#: ../common/rhnException.py:134
msgid ""
"\n"
"     The --force rhnpush option is disabled on this server.\n"
"     Please contact your SUSE Manager administrator for more help.\n"
"     "
msgstr ""

#. 60-70: token errors
#: ../common/rhnException.py:140
msgid ""
"\n"
"     The activation token specified could not be found on the server.\n"
"     Please retry with a valid key.\n"
"     "
msgstr ""

#: ../common/rhnException.py:144
msgid "Too many systems registered using this registration token"
msgstr ""

#: ../common/rhnException.py:145
msgid "Token contains invalid, obsoleted or insufficient settings"
msgstr ""

#: ../common/rhnException.py:146
msgid "Conflicting activation tokens"
msgstr ""

#. 70-80: channel subscription errors
#: ../common/rhnException.py:149
msgid ""
"\n"
"     No matching base channel found for your system.\n"
"     "
msgstr ""

#: ../common/rhnException.py:152
msgid ""
"\n"
"     You do not have subscription permission to the designated channel.\n"
"     Please refer to your organization's channel or organization\n"
"     administrators for further details.\n"
"     "
msgstr ""

#: ../common/rhnException.py:157
msgid "You can not unsubscribe from base channel."
msgstr ""

#: ../common/rhnException.py:158
msgid "SUSE Manager or Proxy channel can not be subscribed."
msgstr ""

#. 80-90: server group errors
#: ../common/rhnException.py:161
msgid "There was an error while trying to join the system to its groups"
msgstr ""

#. 90-100: entitlement errors
#: ../common/rhnException.py:164
msgid "Unable to entitle system"
msgstr ""

#. 100-109: e-mail and uuid related faults
#: ../common/rhnException.py:167
msgid "Maximum e-mail length violation."
msgstr ""

#: ../common/rhnException.py:168
msgid "This system has been previously registered."
msgstr ""

#: ../common/rhnException.py:169
msgid "Invalid username"
msgstr ""

#. 140-159 applet errors
#: ../common/rhnException.py:172
msgid "Unable to look up server"
msgstr ""

#. 160-179: OSAD errors
#: ../common/rhnException.py:175
msgid "Required argument is missing"
msgstr ""

#. 600-699: RHEL5+ EN errors
#: ../common/rhnException.py:178
msgid "No entitlement information tied to hardware"
msgstr ""

#: ../common/rhnException.py:179
msgid "Installation number is not entitling"
msgstr ""

#. 700-799: Additional user input verification errors.
#: ../common/rhnException.py:182
msgid "Maximum username length violation"
msgstr ""

#: ../common/rhnException.py:183
msgid "Maximum password length violation"
msgstr ""

#: ../common/rhnException.py:184
msgid "This user has read only API access. Action denied."
msgstr ""

#: ../common/rhnException.py:186
msgid "System Name cannot be less than 1 character"
msgstr ""

#. 1000-1999: Proxy specific errors:
#. issued by a Proxy to the client
#: ../common/rhnException.py:190
msgid "SUSE Manager Proxy error."
msgstr ""

#: ../common/rhnException.py:191
msgid "SUSE Manager Proxy unable to login."
msgstr ""

#. issued by a SUSE Manager Server/Satellite to the proxy
#: ../common/rhnException.py:193
msgid ""
"\n"
"     SUSE Manager Proxy system ID does not match a Spacewalk Proxy Server\n"
"     in the database.\n"
"     "
msgstr ""

#: ../common/rhnException.py:197
msgid "SUSE Manager Proxy session token is invalid."
msgstr ""

#: ../common/rhnException.py:198
msgid "SUSE Manager Proxy session token has expired."
msgstr ""

#. 2000-2999: Red Hat Satellite specific errors:
#: ../common/rhnException.py:202
msgid ""
"\n"
"      user creation is not allowed via mgr_register;\n"
"     please contact your sysadmin to have your account created.\n"
"     "
msgstr ""

#: ../common/rhnException.py:206
msgid ""
"\n"
"     This SUSE Manager server is not allowed to use Inter Server Sync on "
"this server\n"
"     "
msgstr ""

#: ../common/rhnException.py:209
msgid ""
"\n"
"     Inter Server Sync is disabled on this SUSE Manager Server.\n"
"     "
msgstr ""

#. 3000-3999: XML dumper errors:
#: ../common/rhnException.py:214
msgid "Invalid datatype passed"
msgstr ""

#: ../common/rhnException.py:215
msgid "Unable to retrieve channel"
msgstr ""

#: ../common/rhnException.py:216
msgid "Unable to retrieve package"
msgstr ""

#: ../common/rhnException.py:217
msgid "Unable to retrieve erratum"
msgstr ""

#: ../common/rhnException.py:218
msgid "File is missing"
msgstr ""

#: ../common/rhnException.py:219
msgid "Function retrieval error"
msgstr ""

#: ../common/rhnException.py:220
msgid "Function execution error"
msgstr ""

#: ../common/rhnException.py:221
msgid "Missing version string"
msgstr ""

#: ../common/rhnException.py:222
msgid "Invalid version string"
msgstr ""

#: ../common/rhnException.py:223
msgid "Mismatching versions"
msgstr ""

#: ../common/rhnException.py:224
msgid "Invalid channel version"
msgstr ""

#: ../common/rhnException.py:225
msgid "No comps file for channel"
msgstr ""

#: ../common/rhnException.py:226
msgid "Unable to retrieve comps file"
msgstr ""

#. 4000 - 4999: config management errors
#: ../common/rhnException.py:229
msgid "Configuration action missing"
msgstr ""

#: ../common/rhnException.py:230
msgid "File too large"
msgstr ""

#: ../common/rhnException.py:231
msgid "File contains binary data"
msgstr ""

#: ../common/rhnException.py:232
msgid "Configuration channel is not empty"
msgstr ""

#: ../common/rhnException.py:233
msgid "Permission error"
msgstr ""

#: ../common/rhnException.py:234
msgid "Content missing for configuration file"
msgstr ""

#: ../common/rhnException.py:235
msgid "Template delimiters not specified"
msgstr ""

#: ../common/rhnException.py:236
msgid "Configuration channel does not exist"
msgstr ""

#: ../common/rhnException.py:237
msgid "Configuration channel already exists"
msgstr ""

#: ../common/rhnException.py:238
msgid "File missing from configuration channel"
msgstr ""

#: ../common/rhnException.py:239
msgid "Different revision of this file is uploaded"
msgstr ""

#: ../common/rhnException.py:240
msgid "File already uploaded to configuration channel"
msgstr ""

#: ../common/rhnException.py:241
msgid "File size exceeds remaining quota space"
msgstr ""

#: ../common/rhnException.py:242
msgid "Full path of file must be specified"
msgstr ""

#: ../common/rhnException.py:243
msgid "Invalid revision number"
msgstr ""

#: ../common/rhnException.py:244
msgid "Cannot compare files of different file type"
msgstr ""

#. 5000 - 5999: client content uploading errors
#. 5000 - 5099: crash reporting errors
#: ../common/rhnException.py:248
msgid "Crash information is invalid or incomplete"
msgstr ""

#: ../common/rhnException.py:249
msgid "Crash file information is invalid or incomplete"
msgstr ""

#: ../common/rhnException.py:250
msgid "Error composing crash directory path"
msgstr ""

#: ../common/rhnException.py:251
msgid "Error composing crash file path"
msgstr ""

#: ../common/rhnException.py:252 ../common/rhnException.py:259
msgid "Invalid content encoding"
msgstr ""

#: ../common/rhnException.py:253
msgid "Invalid crash name"
msgstr ""

#: ../common/rhnException.py:254
msgid "Crash reporting is disabled for this organization"
msgstr ""

#. 5100 - 5199: scap results reporting error
#: ../common/rhnException.py:256
msgid "SCAP results file transfer is invalid or incomplete"
msgstr ""

#: ../common/rhnException.py:257
msgid "Error composing directory path for detailed SCAP results"
msgstr ""

#: ../common/rhnException.py:258
msgid "Error composing file path for detailed SCAP results"
msgstr ""

#: ../common/rhnException.py:306
msgid ""
"\n"
"     An error has occurred while processing your request. If this problem\n"
"     persists please enter a bug report at scc.suse.com.\n"
"     If you choose to submit the bug report, please be sure to include\n"
"     details of what you were trying to do when this error occurred and\n"
"     details on how to reproduce this problem.\n"
msgstr ""

#: ../common/rhnException.py:358
#, python-format
msgid ""
"Error Message:\n"
"    %s\n"
msgstr ""

#: ../common/rhnException.py:360
#, python-format
msgid "Error Class Code: %s\n"
msgstr ""

#: ../common/rhnException.py:363
#, python-format
msgid "Error Class Info: %s\n"
msgstr ""

#: ../common/rhnException.py:365
#, python-format
msgid "Explanation: %s"
msgstr ""

#: ../common/rhnTB.py:205
#, python-format
msgid "ERROR: %s %s: %s"
msgstr ""

#: ../common/rhnTB.py:207
#, python-format
msgid "TRACEBACK: %s"
msgstr ""

#: ../satellite_tools/disk_dumper/iss.py:1294
#: ../satellite_tools/disk_dumper/iss.py:1298
#, python-format
msgid "format of %s should be at least YYYYMMDD.\n"
msgstr ""

#: ../satellite_tools/messages.py:26
#, python-format
msgid ""
"\n"
"ERROR: executing step %s. Error is:\n"
"%s\n"
msgstr ""

#: ../satellite_tools/messages.py:31
#, python-format
msgid ""
"\n"
"ERROR: there was a problem accessing the channel data from your temporary\n"
"       repository. Did you migrate all of the data from the channel ISOs\n"
"       do this directory? If so, please recheck the channels ISOs, ensure\n"
"       that you have them all, and then iteratively remount and repopulate\n"
"       the temporary repository (%s).\n"
msgstr ""

#: ../satellite_tools/messages.py:39
#, python-format
msgid ""
"\n"
"ERROR: there was a problem synchronizing the information.\n"
"       Error message: %s\n"
msgstr ""

#: ../satellite_tools/messages.py:44
#, python-format
msgid ""
"\n"
"ERROR: There was a problem communicating with the ISS Master.\n"
"       Depending on the specific error details, please review your "
"configuration,\n"
"       basic network connectivity, and/or name resolution, and try again.\n"
"       Error message: %s\n"
msgstr ""

#: ../satellite_tools/messages.py:51
#, python-format
msgid ""
"\n"
"ERROR: There was a problem communicating with the ISS Master.\n"
"       If the master satellite is older than v5.3, it does not have ISS "
"capability.\n"
"       Otherwise, depending on the specific error details, please review "
"your\n"
"       configuration, basic network connectivity, and/or name resolution, "
"and try again.\n"
"       Error message: %s\n"
msgstr ""

#: ../satellite_tools/messages.py:59
#, python-format
msgid ""
"\n"
"ERROR: a child-channel cannot be synced without its parent being synced as\n"
"       well. A parent needs to be either (a) previously synced or (b) "
"synced\n"
"       in tandem with the desired child-channel. Missing parents for this\n"
"       transaction:\n"
"       %s\n"
msgstr ""

#: ../satellite_tools/messages.py:67
#, python-format
msgid ""
"\n"
"ERROR: you are not entitled to sync a channel in this set of channels.\n"
"Please contact your SUSE Manager contact\n"
"%s"
msgstr ""

#: ../satellite_tools/messages.py:72
#, python-format
msgid "  ERROR: not enough free space (%s KB) on device."
msgstr ""

#: ../satellite_tools/messages.py:74
#, python-format
msgid "    %3d/%s Fetch successful: %s (%s bytes)"
msgstr ""

#: ../satellite_tools/messages.py:75
#, python-format
msgid "    Extinct package:  %s"
msgstr ""

#: ../satellite_tools/messages.py:76
#, python-format
msgid "   Total size: %s"
msgstr ""

#: ../satellite_tools/messages.py:77
#, python-format
msgid "      Downloaded %s of %s. Estimated remaining time: %s"
msgstr ""

#: ../satellite_tools/messages.py:78
#, python-format
msgid "    Fetch unsuccessful: %s"
msgstr ""

#: ../satellite_tools/messages.py:79
#, python-format
msgid "   RPM fetch summary: %s"
msgstr ""

#: ../satellite_tools/messages.py:80
#, python-format
msgid "       success: %d"
msgstr ""

#: ../satellite_tools/messages.py:81
#, python-format
msgid "       failed:  %d"
msgstr ""

#: ../satellite_tools/messages.py:82
#, python-format
msgid "       extinct: %d"
msgstr ""

#: ../satellite_tools/messages.py:84
#, python-format
msgid "   Retrieving / parsing *relevant* package metadata: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:85
#, python-format
msgid "   Retrieving / parsing errata data: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:86
#, python-format
msgid "   Retrieving / parsing kickstart data: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:87
#, python-format
msgid "   Retrieving / parsing kickstart tree files: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:88
#, python-format
msgid "   Importing *relevant* package metadata: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:89
msgid "   * WARNING: this may be a slow process."
msgstr ""

#: ../satellite_tools/messages.py:90
msgid "Linking packages to channels"
msgstr ""

#: ../satellite_tools/messages.py:91
#, python-format
msgid "   Importing *relevant* errata: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:92
msgid "   No new kickstartable tree to import"
msgstr ""

#: ../satellite_tools/messages.py:93
#, python-format
msgid "Importing kickstartable trees (%d)"
msgstr ""

#: ../satellite_tools/messages.py:94
#, python-format
msgid "Imported kickstartable trees (%d)"
msgstr ""

#: ../satellite_tools/reposync.py:111 ../satellite_tools/satsync.py:439
msgid "+++ sending log as an email +++"
msgstr ""

#: ../satellite_tools/reposync.py:114
#, python-format
msgid "%s sync. report from %s"
msgstr ""

#: ../satellite_tools/reposync.py:124 ../satellite_tools/satsync.py:449
msgid "+++ email requested, but there is nothing to send +++"
msgstr ""

#: ../satellite_tools/rhn_satellite_activate.py:198
#, python-format
msgid ""
"\"%s\" (specified in commandline)\n"
"could not be opened and read:\n"
"%s"
msgstr ""

#: ../satellite_tools/rhn_satellite_activate.py:205
#, python-format
msgid ""
"\"%s\" could not be opened\n"
"and/or written to:\n"
"%s"
msgstr ""

#: ../satellite_tools/satsync.py:258
#, python-format
msgid "No handler for step %s"
msgstr ""

#. Try one more time - this time it should be faster since
#. everything should be cached
#: ../satellite_tools/satsync.py:270
msgid "Environment changed, trying again..."
msgstr ""

#: ../satellite_tools/satsync.py:277
msgid "ERROR: Encountered IntegrityError: \n"
msgstr ""

#: ../satellite_tools/satsync.py:285
msgid "Repeated failures"
msgstr ""

#: ../satellite_tools/satsync.py:290
#, python-format
msgid ""
"    Import complete:\n"
"        Begin time: %s\n"
"        End time:   %s\n"
"        Elapsed:    %s\n"
"          "
msgstr ""

#: ../satellite_tools/satsync.py:311
msgid "hours"
msgstr ""

#: ../satellite_tools/satsync.py:311
msgid "minutes"
msgstr ""

#: ../satellite_tools/satsync.py:311
msgid "seconds"
msgstr ""

#: ../satellite_tools/satsync.py:357
msgid ""
"ERROR: The dump is missing package data, use --no-rpms to skip this step or "
"fix the content to include package data."
msgstr ""

#. the orgs() method doesn't exist; that's fine we just
#. won't sync the orgs
#: ../satellite_tools/satsync.py:404
msgid "The SUSE Manager master does not support syncing orgs data."
msgstr ""

#: ../satellite_tools/satsync.py:404
msgid "Skipping..."
msgstr ""

#: ../satellite_tools/satsync.py:442
#, python-format
msgid "SUSE Manager Inter Server sync. report from %s"
msgstr ""

#: ../satellite_tools/satsync.py:521
msgid " - file-system synchronization"
msgstr ""

#: ../satellite_tools/satsync.py:533 ../satellite_tools/satsync.py:541
msgid " - live synchronization"
msgstr ""

#: ../satellite_tools/satsync.py:534
#, python-brace-format
msgid ""
"ERROR: Live content synchronizing with RHN Classic Hosted is no longer "
"supported.\n"
"Please use the cdn-sync command instead unless you are attempting to sync "
"from another {PRODUCT_NAME} via Inter-Server-Sync (ISS), or from local "
"content on disk via Channel Dump ISOs."
msgstr ""

#: ../satellite_tools/satsync.py:542
#, python-format
msgid "   url: %s"
msgstr ""

#: ../satellite_tools/satsync.py:543
#, python-format
msgid "   debug/output level: %s"
msgstr ""

#: ../satellite_tools/satsync.py:553
msgid "ERROR: this server must be registered with SUSE Manager."
msgstr ""

#: ../satellite_tools/satsync.py:575
#, python-format
msgid "Retrieving / parsing %s data"
msgstr ""

#: ../satellite_tools/satsync.py:585 ../satellite_tools/satsync.py:600
msgid "*** SYSTEM INTERRUPT CALLED ***"
msgstr ""

#: ../satellite_tools/satsync.py:593
msgid "ERROR: fatal parser exception occurred "
msgstr ""

#: ../satellite_tools/satsync.py:594
#, python-format
msgid "(line: %s, col: %s msg: %s)"
msgstr ""

#: ../satellite_tools/satsync.py:598
#, python-format
msgid "ERROR: parser exception occurred: %s"
msgstr ""

#: ../satellite_tools/satsync.py:603
msgid "ERROR: exception (during parse) occurred: "
msgstr ""

#: ../satellite_tools/satsync.py:604
#, python-format
msgid ""
"   Encountered some errors with %s data (see logs (%s) for more information)"
msgstr ""

#: ../satellite_tools/satsync.py:606
#, python-format
msgid "   Encountered some errors with %s data:"
msgstr ""

#: ../satellite_tools/satsync.py:607
#, python-format
msgid "   ------- %s PARSE/IMPORT ERROR -------"
msgstr ""

#: ../satellite_tools/satsync.py:609
msgid "   ---------------------------------------"
msgstr ""

#: ../satellite_tools/satsync.py:612
#, python-format
msgid "%s data complete"
msgstr ""

#: ../satellite_tools/satsync.py:665
msgid "Retrieving / parsing channel data"
msgstr ""

#: ../satellite_tools/satsync.py:718
msgid "Channel data complete"
msgstr ""

#: ../satellite_tools/satsync.py:736
#, python-format
msgid "%10s import from %s"
msgstr ""

#: ../satellite_tools/satsync.py:739
#, python-format
msgid "%10s import from %s - %s"
msgstr ""

#: ../satellite_tools/satsync.py:743
#, python-format
msgid "%10s"
msgstr ""

#: ../satellite_tools/satsync.py:750
msgid "p"
msgstr ""

#: ../satellite_tools/satsync.py:752
msgid "."
msgstr ""

#: ../satellite_tools/satsync.py:758
msgid "   p = previously imported/synced channel"
msgstr ""

#: ../satellite_tools/satsync.py:759
msgid "   . = channel not yet imported/synced"
msgstr ""

#: ../satellite_tools/satsync.py:765
msgid "   e = channel no longer supported (end-of-service)"
msgstr ""

#: ../satellite_tools/satsync.py:767
msgid "   ? = channel label invalid --- typo?"
msgstr ""

#: ../satellite_tools/satsync.py:771
#, python-format
msgid "   %s:"
msgstr ""

#: ../satellite_tools/satsync.py:772
#, python-format
msgid "      %s %-40s %4s %s"
msgstr ""

#: ../satellite_tools/satsync.py:773
msgid "base-channels"
msgstr ""

#: ../satellite_tools/satsync.py:786 ../satellite_tools/satsync.py:1603
msgid "NONE RELEVANT"
msgstr ""

#: ../satellite_tools/satsync.py:808
msgid "end-of-service"
msgstr ""

#: ../satellite_tools/satsync.py:809
msgid "e"
msgstr ""

#: ../satellite_tools/satsync.py:815
msgid "   typos:"
msgstr ""

#: ../satellite_tools/satsync.py:816
msgid "?"
msgstr ""

#: ../satellite_tools/satsync.py:831
#, python-format
msgid "XXX: imported channels: %s"
msgstr ""

#: ../satellite_tools/satsync.py:832
#, python-format
msgid "XXX:   cached channels: %s"
msgstr ""

#: ../satellite_tools/satsync.py:837
msgid "XXX: list channels called"
msgstr ""

#: ../satellite_tools/satsync.py:855
msgid "ERROR: these channels either do not exist or are not available:"
msgstr ""

#: ../satellite_tools/satsync.py:859
#, python-format
msgid "       (to see a list of channel labels: %s --list-channels)"
msgstr ""

#: ../satellite_tools/satsync.py:904
#, python-format
msgid "   Retrieving / parsing short package metadata: %s (%s)"
msgstr ""

#: ../satellite_tools/satsync.py:965
#, python-format
msgid "Diffing package metadata (what's missing locally?): %s"
msgstr ""

#: ../satellite_tools/satsync.py:971 ../satellite_tools/satsync.py:1254
msgid "Diffing:    "
msgstr ""

#: ../satellite_tools/satsync.py:988
msgid "ERROR: incremental dump skipped"
msgstr ""

#: ../satellite_tools/satsync.py:1079
msgid "Downloading rpm packages"
msgstr ""

#: ../satellite_tools/satsync.py:1084
#, python-format
msgid "   Fetching any missing RPMs: %s (%s)"
msgstr ""

#: ../satellite_tools/satsync.py:1085 ../satellite_tools/satsync.py:1153
msgid "NONE MISSING"
msgstr ""

#: ../satellite_tools/satsync.py:1094
msgid "Processing rpm packages complete"
msgstr ""

#: ../satellite_tools/satsync.py:1121
msgid "Downloading package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1146
msgid "Downloading srpm packages"
msgstr ""

#: ../satellite_tools/satsync.py:1152
#, python-format
msgid "   Fetching any missing SRPMs: %s (%s)"
msgstr ""

#: ../satellite_tools/satsync.py:1249
#, python-format
msgid "Diffing source package metadata (what's missing locally?): %s"
msgstr ""

#: ../satellite_tools/satsync.py:1260
msgid "Downloading source package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1338 ../satellite_tools/satsync.py:2027
#, python-format
msgid "Unable to save file %s: %s"
msgstr ""

#. for
#. Retried a number of times and it still failed; log the
#. file as being failed and move on
#: ../satellite_tools/satsync.py:1345
#, python-format
msgid "Failed to fetch file %s"
msgstr ""

#: ../satellite_tools/satsync.py:1350
msgid "Downloading kickstartable trees metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1365
msgid "Downloading kickstartable trees files"
msgstr ""

#: ../satellite_tools/satsync.py:1504
#, python-format
msgid "Grabbing all patches for channel %s"
msgstr ""

#: ../satellite_tools/satsync.py:1554
msgid "Downloading patch data"
msgstr ""

#: ../satellite_tools/satsync.py:1556
msgid "Forcing download of all patch data for requested channels."
msgstr ""

#: ../satellite_tools/satsync.py:1571
msgid "Downloading patch data complete"
msgstr ""

#: ../satellite_tools/satsync.py:1576 ../satellite_tools/satsync.py:1597
msgid "Downloading:"
msgstr ""

#: ../satellite_tools/satsync.py:1579
msgid " - complete"
msgstr ""

#: ../satellite_tools/satsync.py:1624
msgid "Importing source package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1627
msgid "Importing package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1635
msgid "Importing:  "
msgstr ""

#. not in the cache
#: ../satellite_tools/satsync.py:1703
msgid ""
"Package Not Found in Cache, Clear the Cache "
"to                                  Regenerate it."
msgstr ""

#: ../satellite_tools/satsync.py:1709
msgid "Importing channel patches"
msgstr ""

#: ../satellite_tools/satsync.py:1714
#, python-format
msgid "Importing %s patches for channel %s."
msgstr ""

#. Incomplete configuration
#: ../satellite_tools/satsync.py:2113
msgid "ERROR: server.mount_point not set in the configuration file"
msgstr ""

#: ../satellite_tools/satsync.py:2117
#, python-format
msgid "ERROR: server.mount_point %s do not exist"
msgstr ""

#: ../satellite_tools/satsync.py:2122
#, python-format
msgid "ERROR: path under server.mount_point (%s)  do not exist"
msgstr ""

#: ../satellite_tools/satsync.py:2199
#, python-format
msgid "Commandline: %s"
msgstr ""

#: ../satellite_tools/satsync.py:2202
#, python-format
msgid ""
"DEBUG ONLY: max. batch-size for XML/database-import processing (1..%s).\"man "
"satellite-sync\" for more information."
msgstr ""

#: ../satellite_tools/satsync.py:2205
msgid "alternative SSL CA Cert (fullpath to cert file)"
msgstr ""

#: ../satellite_tools/satsync.py:2207
msgid "process data for this channel only"
msgstr ""

#: ../satellite_tools/satsync.py:2209
msgid ""
"disk dump will be considered to be a full export; see \"man satellite-sync\" "
"for more information."
msgstr ""

#: ../satellite_tools/satsync.py:2212
msgid "existing custom channels will also be synced (unless -c is used)"
msgstr ""

#: ../satellite_tools/satsync.py:2214
#, python-format
msgid ""
"override debug level set in /etc/rhn/rhn.conf (which is currently set at %s)."
msgstr ""

#: ../satellite_tools/satsync.py:2216
#, python-format
msgid "requested version of XML dump (default: %s)"
msgstr ""

#: ../satellite_tools/satsync.py:2218
msgid "e-mail a report of what was synced/imported"
msgstr ""

#: ../satellite_tools/satsync.py:2220
msgid "forcibly process all (not a diff of) patch metadata"
msgstr ""

#: ../satellite_tools/satsync.py:2222
msgid "Do not use an http proxy under any circumstances."
msgstr ""

#: ../satellite_tools/satsync.py:2224
msgid "alternative http proxy (hostname:port)"
msgstr ""

#: ../satellite_tools/satsync.py:2226
msgid "alternative http proxy username"
msgstr ""

#: ../satellite_tools/satsync.py:2228
msgid "alternative http proxy password"
msgstr ""

#: ../satellite_tools/satsync.py:2230
msgid "parent SUSE Manager to import content from"
msgstr ""

#: ../satellite_tools/satsync.py:2232
msgid "list all available channels and exit"
msgstr ""

#: ../satellite_tools/satsync.py:2234
msgid "help on all error codes mgr-inter-sync returns"
msgstr ""

#: ../satellite_tools/satsync.py:2236
msgid "source mount point for import - disk update only"
msgstr ""

#: ../satellite_tools/satsync.py:2238
msgid "do not process patch data"
msgstr ""

#: ../satellite_tools/satsync.py:2240
msgid "do not process kickstart data (provisioning only)"
msgstr ""

#: ../satellite_tools/satsync.py:2242
msgid "do not process full package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:2244
msgid "do not download, or process any RPMs"
msgstr ""

#: ../satellite_tools/satsync.py:2246
msgid "turn off SSL (not recommended)"
msgstr ""

#: ../satellite_tools/satsync.py:2248
msgid "org to which the sync imports data. defaults to the admin account"
msgstr ""

#: ../satellite_tools/satsync.py:2250
msgid "print the configuration and exit"
msgstr ""

#: ../satellite_tools/satsync.py:2252
msgid "alternative server with which to connect (hostname)"
msgstr ""

#: ../satellite_tools/satsync.py:2254
msgid "synchronize to this step (man satellite-sync for more info)"
msgstr ""

#: ../satellite_tools/satsync.py:2256
msgid "write complete data to tempfile before streaming to remainder of app"
msgstr ""

#: ../satellite_tools/satsync.py:2258
msgid "DEBUG ONLY: alternative path to digital system id"
msgstr ""

#: ../satellite_tools/satsync.py:2260
msgid "alternative email address(es) for sync output (--email option)"
msgstr ""

#: ../satellite_tools/satsync.py:2262
msgid "do not remove rpms when importing from local dump"
msgstr ""

#: ../satellite_tools/satsync.py:2264
msgid ""
"the fully qualified domain name of the master Satellite. Valid with --mount-"
"point only. Required if you want to import org data and channel permissions."
msgstr ""

#: ../satellite_tools/satsync.py:2274
#, python-format
msgid "ERROR: these arguments make no sense in this context (try --help): %s"
msgstr ""

#. An SQL error is fatal... crash and burn
#: ../satellite_tools/satsync.py:2286
#, python-format
msgid "ERROR: Can't connect to the database: %s"
msgstr ""

#: ../satellite_tools/satsync.py:2287
msgid "ERROR: Check if your database is running."
msgstr ""

#: ../satellite_tools/satsync.py:2322
#, python-format
msgid "ERROR: --debug-level takes an in integer value within the range %s."
msgstr ""

#: ../satellite_tools/satsync.py:2324
msgid "  0  - little logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2325
msgid "  1  - minimal logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2326
msgid "  2  - normal level of logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2327
msgid "  3  - lots of logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2328
msgid "  4+ - excessive logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2341
msgid "ERROR: The --master option is only valid with the --mount-point option"
msgstr ""

#: ../satellite_tools/satsync.py:2351
#, python-format
msgid "ERROR: Unable to lookup Org Id %s"
msgstr ""

#: ../satellite_tools/satsync.py:2360
msgid ""
"WARNING: --list-channels option overrides any --step option. --step ignored."
msgstr ""

#: ../satellite_tools/satsync.py:2375
#, python-format
msgid ""
"ERROR: '%s' is not a valid step. See 'man mgr-inter-sync' for more detail."
msgstr ""

#: ../satellite_tools/satsync.py:2407
msgid ""
"ERROR: No channels currently imported; try mgr-inter-sync --list-channels; "
"then mgr-inter-sync -c chn0 -c chn1..."
msgstr ""

#. int(None) --> TypeError
#. int('a')  --> ValueError
#: ../satellite_tools/satsync.py:2457 ../satellite_tools/satsync.py:2461
msgid "ERROR: --batch-size must have a value within the range: 1..50"
msgstr ""

#: ../satellite_tools/satsync.py:2469
#, python-format
msgid "ERROR: no such directory %s"
msgstr ""

#: ../satellite_tools/satsync.py:2474
msgid "Error Codes: Returned codes means:"
msgstr ""

#: ../satellite_tools/satsync.py:2475
msgid " -1  - Could not lock file or KeyboardInterrupt or SystemExit"
msgstr ""

#: ../satellite_tools/satsync.py:2476
msgid "  0  - User interrupted or intentional exit"
msgstr ""

#: ../satellite_tools/satsync.py:2477
msgid "  1  - attempting to run more than one instance of mgr-inter-sync."
msgstr ""

#: ../satellite_tools/satsync.py:2478
msgid "  2  - Unable to find synchronization tools."
msgstr ""

#: ../satellite_tools/satsync.py:2479
msgid "  3  - a general socket exception occurred"
msgstr ""

#: ../satellite_tools/satsync.py:2480
msgid "  4  - an SSL error occurred. Recheck your SSL settings."
msgstr ""

#: ../satellite_tools/satsync.py:2481
msgid "  5  - ISS error"
msgstr ""

#: ../satellite_tools/satsync.py:2482
msgid "  6  - unhandled exception occurred"
msgstr ""

#: ../satellite_tools/satsync.py:2483
msgid "  7  - unknown sync error"
msgstr ""

#: ../satellite_tools/satsync.py:2484
msgid "  8  - ERROR: must be root to execute"
msgstr ""

#: ../satellite_tools/satsync.py:2485
msgid "  9  - rpclib fault during synchronization init"
msgstr ""

#: ../satellite_tools/satsync.py:2486
msgid "  10 - synchronization init error"
msgstr ""

#: ../satellite_tools/satsync.py:2487
msgid "  11 - Error parsing XML stream"
msgstr ""

#: ../satellite_tools/satsync.py:2488
msgid "  12 - Channel do not exist"
msgstr ""

#: ../satellite_tools/satsync.py:2489
msgid "  13 - SQL error during importing package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:2490
msgid "  14 - SQL error during linking channel packages"
msgstr ""

#: ../satellite_tools/satsync.py:2491
msgid "  15 - SQL error during xml processing"
msgstr ""

#: ../satellite_tools/satsync.py:2492
msgid "  16 - server.mount_point not set in the configuration file"
msgstr ""

#: ../satellite_tools/satsync.py:2493
msgid ""
"  17 - SQL error during retrieving the channels already imported in the SUSE "
"Manager database"
msgstr ""

#: ../satellite_tools/satsync.py:2494
msgid "  18 - Wrong db connection string in rhn.conf"
msgstr ""

#: ../satellite_tools/satsync.py:2495
msgid "  19 - Bad arguments"
msgstr ""

#: ../satellite_tools/satsync.py:2496
msgid "  20 - Could not connect to db."
msgstr ""

#: ../satellite_tools/satsync.py:2497
msgid "  21 - Bad debug level"
msgstr ""

#: ../satellite_tools/satsync.py:2498
msgid "  22 - Not valid step"
msgstr ""

#: ../satellite_tools/satsync.py:2499
msgid "  24 - no such file"
msgstr ""

#: ../satellite_tools/satsync.py:2500
msgid "  25 - no such directory"
msgstr ""

#: ../satellite_tools/satsync.py:2501
msgid "  26 - mount_point does not exist"
msgstr ""

#: ../satellite_tools/satsync.py:2502
msgid "  27 - No such org"
msgstr ""

#: ../satellite_tools/satsync.py:2503
msgid "  28 - error: --master is only valid with --mount-point"
msgstr ""

#: ../satellite_tools/satsync.py:2510
#, python-format
msgid "ERROR: unknown dump version, try one of %s"
msgstr ""
  07070100000068000081B40000000000000000000000016290A0C10001155A000000000000000000000000000000000000001B00000000spacewalk-backend/po/en.po    # Red Hat Network.
# Copyright (c) 2000--2017 Red Hat, Inc.
# Cristian Gafton <gafton@redhat.com>, 2000, 2001.
#
msgid ""
msgstr ""
"Project-Id-Version: RHN 2.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-10-16 13:34+0200\n"
"PO-Revision-Date: 2000-08-08 16:51-0400\n"
"Last-Translator: Cristian Gafton <gafton@redhat.com>\n"
"Language-Team: English <rhns-i18n@redhat.com>\n"
"Language: en\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=ISO-8859-1\n"
"Content-Transfer-Encoding: 8bit\n"

#: ../server/apacheAuth.py:66
#, python-format
msgid "incomplete proxy authentication token: %s"
msgstr ""

#: ../server/apacheAuth.py:84
#, python-format
msgid "Sent proxy signature %s does not match ours %s."
msgstr ""

#: ../server/apacheAuth.py:119
msgid "declined proxy authentication"
msgstr ""

#: ../server/apacheRequest.py:59
#, python-format
msgid "Invalid request received (%s)."
msgstr ""

#: ../server/apacheRequest.py:120
#, python-format
msgid ""
"IMPORTANT MESSAGE FOLLOWS:\n"
"%s"
msgstr ""

#: ../server/apacheRequest.py:149
#, python-format
msgid ""
"While running '%s': caught\n"
"%s : %s\n"
msgstr ""

#: ../server/apacheRequest.py:606
#, python-format
msgid "Invalid URI %s"
msgstr ""

#: ../server/configFilesHandler.py:129 ../server/handlers/app/packages.py:192
#: ../server/handlers/xmlrpc/registration.py:215
#: ../server/handlers/xmlrpc/registration.py:1168
#: ../server/handlers/xmlrpc/registration.py:1307
#, python-format
msgid ""
"\n"
"                   %s Account has been deactivated on this server.\n"
"                   Please contact your Org administrator for more help."
msgstr ""

#: ../server/handlers/applet/applet.py:78
#, python-brace-format
msgid "Your system was not found in the {PRODUCT_NAME} database"
msgstr ""

#: ../server/handlers/sat/auth.py:45
msgid "ISS is disabled on this server."
msgstr ""

#: ../server/handlers/sat/auth.py:50
#, python-format
msgid "Server \"%s\" is not enabled for ISS."
msgstr ""

#: ../server/handlers/xmlrpc/errata.py:64
#, python-format
msgid "Expected a package name, not: %s"
msgstr ""

#: ../server/handlers/xmlrpc/errata.py:115
#, python-format
msgid "Expected a package, not: %s"
msgstr ""

#: ../server/handlers/xmlrpc/proxy.py:65
#, python-format
msgid "SUSE Manager Proxy service not enabled for server profile: \"%s\""
msgstr ""

#: ../server/handlers/xmlrpc/proxy.py:85
msgid "Invalid session key"
msgstr ""

#: ../server/handlers/xmlrpc/proxy.py:93
msgid "This server ID no longer exists"
msgstr ""

#: ../server/handlers/xmlrpc/queue.py:433
#, python-format
msgid "Invalid action value type %s (%s)"
msgstr ""

#: ../server/handlers/xmlrpc/queue.py:464
#, python-format
msgid "Action %s does not belong to server %s"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:194
msgid "Required data missing"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:198
msgid "Required members missing"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:207
msgid "Attempt to register a system to an invalid username"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:839
msgid "Invalid system release version requested"
msgstr "Invalid system release version requested"

#: ../server/handlers/xmlrpc/registration.py:1063
msgid ""
"Unable to find a valid network interface, both ipaddr and ip6addr not found."
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1115
#, python-brace-format
msgid "{PRODUCT_NAME} Welcome Message"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1125
#, fuzzy
msgid "Privacy Statement"
msgstr ""
" We think our customers understand better than anyone else how Red\n"
" Hat can most effectively serve their needs.  Because of this, Red\n"
" Hat makes every effort to allow our customers to define the\n"
" relationship they will have with us.  We ask customers how they\n"
" would like Red Hat to communicate with them, if at all.  We disclose\n"
" how we will be using our customers' information through documents\n"
" like this one, or by answering individual questions customers may\n"
" ask.  Our policy is not to sell or provide to others our customers'\n"
" information without making it clear that we intend to do to in this\n"
" statement or at the time the information is collected.  Note that\n"
" when you purchase a product or service from us, we may need to\n"
" contact you to follow up on the product or service.  However, our\n"
" policy is not to contact you for anything unrelated to the product\n"
" or service unless you have \"opted in\" to such contact when you\n"
" signed up.  You should be aware that in certain circumstances, Red\n"
" Hat may be required to disclose information pursuant to applicable\n"
" law or government orders.\n"
" \n"
" Red Hat has self-certified as adhering to the European Union \"safe\n"
" harbor\" principles with the United States Department of Commerce,\n"
" and has chosen to cooperate with the European Union Data Protection\n"
" Authorities for unresolved privacy complaints.  If you have any\n"
" questions or complaints regarding the use of your personal\n"
" information, please contact feedback@redhat.com.\n"
" \n"
" Below you will find a detailed account of Red Hat's privacy\n"
" practices.  If you have any questions about any of these practices\n"
" or Red Hat's use of your personal information, please feel free to\n"
" contact us at feedback@redhat.com.\n"
" \n"
" \n"
" Information Collected Online\n"
" \n"
" Our website sometimes requires you to give us personal information\n"
" when you do things like purchase products in our Web store or\n"
" register your products with redhat.com.  Red Hat uses your personal\n"
" information only for marketing, customer service, delivery of\n"
" products, aftercare service and related activities thereof.  In\n"
" situations such as these, you will be given a choice as to whether\n"
" you would like Red Hat or our business partners to contact you in\n"
" the future.  This is an \"opt-in\" process.  If you opt-in, we rely on\n"
" your consent to send you information, special offers, and\n"
" promotional materials.  In many cases, you may choose whether you\n"
" would like to be contacted via mail, email, phone, or not at all.\n"
" We will only contact you via the methods you choose.  An exception\n"
" will be made in the rare case that we find a significant issue with\n"
" a product or service that requires your immediate attention.  For\n"
" your protection, we may contact you via phone or email as the\n"
" situation warrants.\n"
" \n"
" Also, our website sometimes requires you to give us personal\n"
" information in order to do things like access webcasts, download\n"
" whitepapers, or participate in online surveys.  In situations like\n"
" these, where you are accessing free products and services from Red\n"
" Hat and/or our business partners, we recognize your interest in the\n"
" product or service and consider that  to be \"opting in\" to allow Red\n"
" Hat and appropriate business partners to contact you with\n"
" information, special offers, or promotional materials in the future.\n"
" Red Hat may transfer your personal information to or share it with\n"
" the business partner only for future marketing, development of new\n"
" products, customer service, delivery of products, aftercare service\n"
" and related activities thereof.  If you do not wish to be contacted,\n"
" we ask that you refrain from accessing these free products and\n"
" services offered to you by Red Hat and our partners.\n"
" \n"
" Red Hat trains its employees on our privacy policy guidelines and\n"
" makes our privacy policy available to our business partners. Also\n"
" our website uses Secure Socket Layer (SSL) which encrypts your\n"
" personal information when you send your personal information on our\n"
" website. In addition, Red Hat and its business partners enter into\n"
" confidentiality agreements which requires care and precautions be\n"
" taken to prevent loss, misuse, or disclosure of your personal\n"
" information.\n"
" \n"
" Out of special concern for children's privacy, we do not accept\n"
" personal information from children who are under the age of 13.\n"
" \n"
" \n"
" Information Collected On Red Hat Network\n"
" \n"
" If you register your system on Red Hat Network, you will be asked to\n"
" provide a system profile when you register. The system profile\n"
" consists of:\n"
" \n"
" 1) An inventory of the .rpm files installed on the system. This\n"
" information helps determine what new software updates may be\n"
" valuable to you in keeping your system secure and available.\n"
" \n"
" 2) An inventory of your system hardware. This information is also\n"
" used by Red Hat to determine what software and support information\n"
" might be useful to you.\n"
" \n"
" You can determine the information in your System Profile prior to\n"
" registering it on Red Hat Network by typing the following at the\n"
" command prompt:\n"
" \n"
" $rhn_register\n"
" \n"
" This command will start the registration program, and all of the\n"
" information contained in the system profile is presented to you for\n"
" review prior to submission to Red Hat.\n"
" \n"
" Once you have registered a system profile, you can browse and edit\n"
" your profile information from your Red Hat Network page.\n"
" \n"
" When requested by you with a command from Red Hat Network, certain\n"
" application configuration information about a particular system may\n"
" be provided to Red Hat and displayed to you in a Web page to assist\n"
" you in configuring your system. At your request, Red Hat may store\n"
" this information for a time to assist you in system recovery should\n"
" you make a mistake in the application configuration. In each case\n"
" where configuration information is stored by Red Hat, it will be at\n"
" your request and only for a period of time sufficient to confirm\n"
" acceptance of new configuration settings.\n"
" \n"
" Other than the System Profile and application configuration you\n"
" request as part of an online service, Red Hat will never retrieve or\n"
" store personal file information from your system as part of any Red\n"
" Hat service.\n"
" \n"
" \n"
" Information Collected in Other Ways\n"
" \n"
" We collect information in other ways, such as running contests on\n"
" our site and at trade shows, in which we ask you for contact\n"
" information (like your email address), unique identifiers (like your\n"
" password), and demographic information (like your occupation).  We\n"
" may use data from these contests and trade shows to contact you or\n"
" to allow appropriate business partners to contact you.  If you do\n"
" not wish to be contacted, we ask that you refrain from participating\n"
" in these promotions.\n"
" \n"
" \n"
" Cookies and Other Browser Information\n"
" \n"
" Our site automatically captures IP addresses.  We use IP addresses\n"
" to help diagnose problems with our server, to administer our\n"
" website, and to help ensure the security of your interaction with\n"
" the website.  Your IP address is used to help identify you and your\n"
" shopping cart.\n"
" \n"
" As part of offering and providing customizable and personalized\n"
" services, Red Hat uses cookies to store and sometimes track\n"
" information about you.  A cookie is a small amount of data that is\n"
" sent to your browser from a Web server and stored on your computer's\n"
" hard drive.  All sections of redhat.com where you are prompted to\n"
" log in or that are customizable require your browser to accept\n"
" cookies.  If you would like to know more about precisely how we use\n"
" cookies, click here.\n"
" \n"
" \n"
" Third Party and Aggregated Data\n"
" \n"
" Under confidentiality agreements, Red Hat may match user information\n"
" with third-party data.  Also, Red Hat discloses aggregated user\n"
" statistics in order to describe our services to current and\n"
" prospective partners and other third parties.  Red Hat has\n"
" agreements with some third parties to perform certain dedicated\n"
" tasks such as product fulfillment, payroll, credit card processing,\n"
" e-mail housing, and marketing, training, and customer service.  In\n"
" these situations, we share your information with these third parties\n"
" for the sole purpose of allowing them to perform these tasks.  Your\n"
" information is not used by the third party in any other way.\n"
" \n"
" \n"
" About Links to Other Sites\n"
" \n"
" This site contains links to other sites.  Red Hat does not control\n"
" the information collection of sites that can be reached through\n"
" links from redhat.com.  If you have questions about the data\n"
" collection procedures of linked sites, please contact those\n"
" companies directly.\n"
" \n"
" \n"
" Public Forums Reminder\n"
" \n"
" This site often makes chat rooms, forums, message boards, and/or\n"
" news groups available to its users.  Please remember that any\n"
" information that is disclosed in these areas becomes public\n"
" information.  Exercise caution when deciding to disclose your\n"
" personal information.  Although we value individual ideas and\n"
" encourage free expression, Red Hat reserves the right to take\n"
" necessary action to preserve the forum's integrity, such as removing\n"
" any posting that is vulgar or inappropriate.\n"
" \n"
" \n"
" Questions and Answers\n"
" \n"
" How Can I Opt Out?\n"
" Red Hat gives you the ability to opt out of receiving communications\n"
" from Red Hat and/or its partners if you choose.  When you register\n"
" or order a product or service, simply choose \"I do not wish to be\n"
" contacted\" underneath the Contact Method section.  If you decide\n"
" that you would like to opt out of communications at a later date,\n"
" you may log in to your account\n"
" (http://www.redhat.com/apps/user/login.html) and modify the Contact\n"
" Method section.  You may also simply unsubscribe to a specific email\n"
" communication by following the unsubscribe directions at the bottom\n"
" of the email or by contacting feedback@redhat.com and requesting\n"
" that you be unsubscribe from that specific communication.\n"
" \n"
" How Can I Modify or Update My Information?\n"
" Red Hat gives you the ability to modify or update your information.\n"
" Please log in and modify your information\n"
" (http://www.redhat.com/apps/user/login.html) or, if necessary,\n"
" contact us at feedback@redhat.com and describe the changes you want\n"
" made to the information you have previously provided.\n"
" \n"
" Red Hat reserves the right to change this policy from time to time.\n"
" If we do make changes, the revised Privacy Statement will be posted\n"
" on this site."

#: ../server/handlers/xmlrpc/registration.py:1146
msgid "Expected a dictionary as a product argument"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1374
#, python-format
msgid "Invalid value '%s' for %s (%s)"
msgstr ""

#: ../server/handlers/xmlrpc/scap.py:104
#, fuzzy
msgid "Invalid system_id/action_id pair."
msgstr "Invalid system release version requested"

#: ../server/handlers/xmlrpc/up2date.py:233
#, python-format
msgid "Invalid value %s (%s)"
msgstr ""

#: ../server/importlib/userAuth.py:98
msgid "You are not authorized to manage packages in the null org"
msgstr ""

#: ../server/importlib/userAuth.py:103
#, python-format
msgid "You are not allowed to manage packages in the %s org"
msgstr ""

#: ../server/importlib/userAuth.py:121
msgid "You are not allowed to perform administrative tasks"
msgstr ""

#: ../server/importlib/userAuth.py:144
#, python-format
msgid ""
"You are not allowed to manage channel %s, or that channel does not exist"
msgstr ""

#: ../server/importlib/userAuth.py:204
#, python-format
msgid ""
"\n"
"               %s Account has been deactivated on this server.\n"
"               Please contact your Org administrator for more help."
msgstr ""

#: ../server/rhnChannel.py:1992
#, python-format
msgid ""
"Your account does not have access to any channels matching "
"(release='%(release)s', arch='%(arch)s')%(www_activation)s"
msgstr ""

#: ../server/rhnChannel.py:2002
msgid ""
"\n"
"If you have a registration number, please register with it first at http://"
"www.redhat.com/apps/activate/ and then try again.\n"
"\n"
msgstr ""

#: ../server/rhnChannel.py:2012
#, python-format
msgid "Insufficient subscription permissions for release (%s, %s"
msgstr ""

#. Various messages that can be reused
#.
#. bretm 02/07/2007 -- when we have better old-client documentation, probably
#. will be safe to get rid of all this crap
#: ../server/rhnChannel.py:2276 ../server/rhnChannel.py:2287
#: ../server/rhnChannel.py:2302
msgid "System Registered but Inactive"
msgstr ""

#: ../server/rhnChannel.py:2277
#, python-format
msgid ""
"\n"
"Invalid Architecture and OS release combination (%s, %s).\n"
"Your system has been registered, but will not receive updates\n"
"because it is not subscribed to a channel. If you have not yet\n"
"activated your product for service, please visit our website at:\n"
"\n"
"     http://www.redhat.com/apps/activate/\n"
"\n"
"...to activate your product."
msgstr ""

#: ../server/rhnChannel.py:2288
#, python-format
msgid ""
"\n"
"Invalid Architecture and OS release combination (%s, %s).\n"
"Your system has been registered, but will not receive updates\n"
"because it could not be subscribed to a base channel.\n"
"Please contact your organization administrator for assistance.\n"
msgstr ""

#: ../server/rhnChannel.py:2295
#, python-format
msgid ""
"\n"
"  This system has been successfully registered, but is not yet entitled\n"
"  to service.  To entitle this system to service, login to the web site at:\n"
"\n"
"  %(entitlement_url)s\n"
msgstr ""

#: ../server/rhnChannel.py:2303
#, python-format
msgid ""
"\n"
"  This system has been successfully registered, but no service entitlements\n"
"  were available.  To entitle this system to service, login to the web site "
"at:\n"
"\n"
"  %(entitlement_url)s\n"
msgstr ""

#: ../server/rhnHandler.py:62
msgid "Please run rhn_register as root on this client"
msgstr ""

#: ../server/rhnHandler.py:75
#, python-format
msgid "Service not enabled for system profile: \"%s\""
msgstr ""

#: ../server/rhnPackage.py:49 ../server/rhnPackage.py:87
#: ../server/rhnPackage.py:107 ../server/rhnPackage.py:158
#, fuzzy, python-format
msgid "Invalid RPM package %s requested"
msgstr "Invalid system release version requested"

#: ../server/rhnPackage.py:112
msgid "Package not found"
msgstr ""

#: ../server/rhnServer/server_class.py:97
#, python-format
msgid "Architecture `%s' is not supported"
msgstr ""

#: ../server/rhnServer/server_token.py:78
#, python-format
msgid "Token `%s' has more than one base channel assigned"
msgstr ""

#: ../server/rhnServer/server_token.py:80
msgid "Conflicting base channels"
msgstr ""

#: ../server/rhnServer/server_token.py:190
#, python-format
msgid "Failed to add server to group %s"
msgstr ""

#: ../server/rhnServer/server_token.py:503
#, python-format
msgid "Maximum usage count of %s reached"
msgstr ""

#: ../server/rhnServer/server_token.py:744
msgid ""
"Stacking of re-registration tokens with different base entitlements is not "
"supported"
msgstr ""

#: ../server/rhnServer/server_token.py:811
#, python-format
msgid "Could not find token '%s'"
msgstr ""

#. Cannot use activation keys from different orgs
#: ../server/rhnServer/server_token.py:843
msgid "Tokens from mismatching orgs"
msgstr ""

#. Two tokens with different kickstart sessions
#: ../server/rhnServer/server_token.py:853
msgid "Kickstart session mismatch"
msgstr ""

#: ../server/rhnServer/server_token.py:877
msgid "Stacking of re-registration tokens is not supported"
msgstr ""

#: ../server/rhnUser.py:289 ../server/rhnUser.py:292
msgid "Invalid username/password combination"
msgstr ""

#. nope, not reserved either
#: ../server/rhnUser.py:467
#, python-format
msgid "Username `%s' has not been reserved"
msgstr ""

#. New accounts have to specify an e-mail address
#: ../server/rhnUser.py:473
msgid "E-mail address not specified"
msgstr ""

#: ../server/rhnUser.py:509
#, python-format
msgid "username should be at least %d characters"
msgstr ""

#: ../server/rhnUser.py:512
#, python-format
msgid "username should be less than %d characters"
msgstr ""

#: ../server/rhnUser.py:523
#, python-format
msgid "username = `%s', invalid character `%s'"
msgstr ""

#: ../server/rhnUser.py:542
#, python-format
msgid "Please limit your e-mail address to %s chars"
msgstr ""

#: ../server/rhnUser.py:623
#, python-format
msgid "password must be at least %d characters"
msgstr ""

#: ../server/rhnUser.py:626
#, python-format
msgid "Password must be shorter than %d characters"
msgstr ""

#: ../server/rhnUser.py:644
#, python-format
msgid "password contains character `%s'"
msgstr ""

#: ../server/rhnUser.py:651
#, python-format
msgid "username should be at least %d characters long"
msgstr ""

#: ../server/rhnUser.py:662
#, python-format
msgid "Cannot register usernames ending with %s"
msgstr ""

#. 0-999: Red Hat client/client-like interaction errors:
#: ../common/rhnException.py:53
msgid "This does not appear to be a valid username."
msgstr ""

#: ../common/rhnException.py:54
msgid "Invalid username and password combination."
msgstr ""

#: ../common/rhnException.py:55
msgid "This login is already taken, or the password is incorrect."
msgstr ""

#: ../common/rhnException.py:56
msgid "Permission denied."
msgstr ""

#: ../common/rhnException.py:57
msgid "Object not found."
msgstr ""

#: ../common/rhnException.py:58
#, fuzzy
msgid "Invalid System Digital ID."
msgstr "Invalid system release version requested"

#: ../common/rhnException.py:59
#, fuzzy
msgid "Invalid System Credentials."
msgstr "Invalid system release version requested"

#: ../common/rhnException.py:60
msgid "Could not retrieve user data from database."
msgstr ""

#: ../common/rhnException.py:61
msgid "Valid username required."
msgstr ""

#: ../common/rhnException.py:62
msgid "Valid password required."
msgstr ""

#: ../common/rhnException.py:63
msgid "Minimum username length violation."
msgstr ""

#: ../common/rhnException.py:64
msgid "Minimum password length violation."
msgstr ""

#: ../common/rhnException.py:65
msgid "The username contains invalid characters."
msgstr ""

#: ../common/rhnException.py:66
msgid "File not found."
msgstr ""

#: ../common/rhnException.py:67
msgid "Architecture and OS version combination is not supported."
msgstr ""

#: ../common/rhnException.py:68
msgid "Could not retrieve system data from database."
msgstr ""

#: ../common/rhnException.py:69
msgid "Invalid arguments passed to function."
msgstr ""

#: ../common/rhnException.py:70
msgid "Unable to retrieve requested entry."
msgstr ""

#: ../common/rhnException.py:71
msgid "Could not update database entry."
msgstr ""

#: ../common/rhnException.py:72
msgid "Unsupported server architecture."
msgstr ""

#: ../common/rhnException.py:73
#, python-format
msgid ""
"\n"
"     The anonymous server functionality is no longer available.\n"
"\n"
"     Please re-register this system by running mgr_register as root.\n"
"     Please visit https://%(hostname)s/rhn/systems/SystemEntitlements.do\n"
"     or login at https://%(hostname)s, and from the \"Overview\" tab,\n"
"     select \"Subscription Management\" to enable the service for this "
"system.\n"
"     "
msgstr ""

#: ../common/rhnException.py:81
msgid "Record not available in the database."
msgstr ""

#: ../common/rhnException.py:82
msgid "Invalid value for entry."
msgstr ""

#: ../common/rhnException.py:83
#, python-format
msgid ""
"\n"
"     This system does not have a valid entitlement for SUSE Manager.\n"
"     Please visit https://%(hostname)s/rhn/systems/SystemEntitlements.do\n"
"     or login at https://%(hostname)s, and from the \"Overview\" tab,\n"
"     select \"Subscription Management\" to enable the service for this "
"system.\n"
"     "
msgstr ""

#: ../common/rhnException.py:89
msgid "Channel error"
msgstr ""

#: ../common/rhnException.py:90
msgid "Client session token is invalid."
msgstr ""

#: ../common/rhnException.py:91
msgid "Client session token has expired."
msgstr ""

#: ../common/rhnException.py:92
msgid "You are not authorized to retrieve the requested object."
msgstr ""

#: ../common/rhnException.py:93
msgid "Invalid action"
msgstr ""

#: ../common/rhnException.py:94
msgid "You are not allowed to perform administrative tasks on this system."
msgstr ""

#: ../common/rhnException.py:96
msgid "The system is already subscribed to the specified channel."
msgstr ""

#: ../common/rhnException.py:97
msgid "The system is not currently subscribed to the specified channel."
msgstr ""

#: ../common/rhnException.py:98
msgid "The specified channel does not exist."
msgstr ""

#: ../common/rhnException.py:99
msgid "Invalid channel version."
msgstr ""

#: ../common/rhnException.py:100
msgid ""
"\n"
"     User group membership limits exceeded.\n"
"\n"
"     The current settings for your account do not allow you to add another\n"
"     user account. Please check with the organization administrator for "
"your\n"
"     account if the maximum number of users allowed to subscribe to server "
"needs\n"
"     to be changed.\n"
"     "
msgstr ""

#: ../common/rhnException.py:108
msgid ""
"\n"
"     System group membership limits exceeded.\n"
"\n"
"     The current settings for your account do not allow you to add another\n"
"     system profile. Please check with the organization administrator for "
"your\n"
"     account for modifying the maximum number of system profiles that can "
"be\n"
"     subscribed to your account.\n"
"     "
msgstr ""

#: ../common/rhnException.py:116
msgid ""
"\n"
"     Invalid architecture.\n"
"\n"
"     The architecture of the package is not supported by\n"
"     "
msgstr ""

#: ../common/rhnException.py:121
msgid "Invalid RPM header"
msgstr ""

#: ../common/rhnException.py:122
msgid ""
"\n"
"    This system is already registered as a Salt Minion. If you want to "
"register it as a traditional client\n"
"    please delete it first via the web UI or API and then register it using "
"the traditional tools.\n"
"    "
msgstr ""

#. For the uploading tools
#: ../common/rhnException.py:127
msgid "Invalid information uploaded to the server"
msgstr ""

#: ../common/rhnException.py:128
msgid "Error uploading network interfaces configuration."
msgstr ""

#: ../common/rhnException.py:129
msgid ""
"\n"
"     Package Upload Failed due to uniqueness constraint violation.\n"
"     Make sure the package does not have any duplicate dependencies or\n"
"     does not already exists on the server\n"
"     "
msgstr ""

#: ../common/rhnException.py:134
msgid ""
"\n"
"     The --force rhnpush option is disabled on this server.\n"
"     Please contact your SUSE Manager administrator for more help.\n"
"     "
msgstr ""

#. 60-70: token errors
#: ../common/rhnException.py:140
msgid ""
"\n"
"     The activation token specified could not be found on the server.\n"
"     Please retry with a valid key.\n"
"     "
msgstr ""

#: ../common/rhnException.py:144
msgid "Too many systems registered using this registration token"
msgstr ""

#: ../common/rhnException.py:145
msgid "Token contains invalid, obsoleted or insufficient settings"
msgstr ""

#: ../common/rhnException.py:146
msgid "Conflicting activation tokens"
msgstr ""

#. 70-80: channel subscription errors
#: ../common/rhnException.py:149
msgid ""
"\n"
"     No matching base channel found for your system.\n"
"     "
msgstr ""

#: ../common/rhnException.py:152
msgid ""
"\n"
"     You do not have subscription permission to the designated channel.\n"
"     Please refer to your organization's channel or organization\n"
"     administrators for further details.\n"
"     "
msgstr ""

#: ../common/rhnException.py:157
msgid "You can not unsubscribe from base channel."
msgstr ""

#: ../common/rhnException.py:158
msgid "SUSE Manager or Proxy channel can not be subscribed."
msgstr ""

#. 80-90: server group errors
#: ../common/rhnException.py:161
msgid "There was an error while trying to join the system to its groups"
msgstr ""

#. 90-100: entitlement errors
#: ../common/rhnException.py:164
msgid "Unable to entitle system"
msgstr ""

#. 100-109: e-mail and uuid related faults
#: ../common/rhnException.py:167
msgid "Maximum e-mail length violation."
msgstr ""

#: ../common/rhnException.py:168
msgid "This system has been previously registered."
msgstr ""

#: ../common/rhnException.py:169
msgid "Invalid username"
msgstr ""

#. 140-159 applet errors
#: ../common/rhnException.py:172
msgid "Unable to look up server"
msgstr ""

#. 160-179: OSAD errors
#: ../common/rhnException.py:175
msgid "Required argument is missing"
msgstr ""

#. 600-699: RHEL5+ EN errors
#: ../common/rhnException.py:178
msgid "No entitlement information tied to hardware"
msgstr ""

#: ../common/rhnException.py:179
msgid "Installation number is not entitling"
msgstr ""

#. 700-799: Additional user input verification errors.
#: ../common/rhnException.py:182
msgid "Maximum username length violation"
msgstr ""

#: ../common/rhnException.py:183
msgid "Maximum password length violation"
msgstr ""

#: ../common/rhnException.py:184
msgid "This user has read only API access. Action denied."
msgstr ""

#: ../common/rhnException.py:186
msgid "System Name cannot be less than 1 character"
msgstr ""

#. 1000-1999: Proxy specific errors:
#. issued by a Proxy to the client
#: ../common/rhnException.py:190
msgid "SUSE Manager Proxy error."
msgstr ""

#: ../common/rhnException.py:191
msgid "SUSE Manager Proxy unable to login."
msgstr ""

#. issued by a SUSE Manager Server/Satellite to the proxy
#: ../common/rhnException.py:193
msgid ""
"\n"
"     SUSE Manager Proxy system ID does not match a Spacewalk Proxy Server\n"
"     in the database.\n"
"     "
msgstr ""

#: ../common/rhnException.py:197
msgid "SUSE Manager Proxy session token is invalid."
msgstr ""

#: ../common/rhnException.py:198
msgid "SUSE Manager Proxy session token has expired."
msgstr ""

#. 2000-2999: Red Hat Satellite specific errors:
#: ../common/rhnException.py:202
msgid ""
"\n"
"      user creation is not allowed via mgr_register;\n"
"     please contact your sysadmin to have your account created.\n"
"     "
msgstr ""

#: ../common/rhnException.py:206
msgid ""
"\n"
"     This SUSE Manager server is not allowed to use Inter Server Sync on "
"this server\n"
"     "
msgstr ""

#: ../common/rhnException.py:209
msgid ""
"\n"
"     Inter Server Sync is disabled on this SUSE Manager Server.\n"
"     "
msgstr ""

#. 3000-3999: XML dumper errors:
#: ../common/rhnException.py:214
msgid "Invalid datatype passed"
msgstr ""

#: ../common/rhnException.py:215
msgid "Unable to retrieve channel"
msgstr ""

#: ../common/rhnException.py:216
msgid "Unable to retrieve package"
msgstr ""

#: ../common/rhnException.py:217
msgid "Unable to retrieve erratum"
msgstr ""

#: ../common/rhnException.py:218
msgid "File is missing"
msgstr ""

#: ../common/rhnException.py:219
msgid "Function retrieval error"
msgstr ""

#: ../common/rhnException.py:220
msgid "Function execution error"
msgstr ""

#: ../common/rhnException.py:221
msgid "Missing version string"
msgstr ""

#: ../common/rhnException.py:222
msgid "Invalid version string"
msgstr ""

#: ../common/rhnException.py:223
msgid "Mismatching versions"
msgstr ""

#: ../common/rhnException.py:224
msgid "Invalid channel version"
msgstr ""

#: ../common/rhnException.py:225
msgid "No comps file for channel"
msgstr ""

#: ../common/rhnException.py:226
msgid "Unable to retrieve comps file"
msgstr ""

#. 4000 - 4999: config management errors
#: ../common/rhnException.py:229
msgid "Configuration action missing"
msgstr ""

#: ../common/rhnException.py:230
msgid "File too large"
msgstr ""

#: ../common/rhnException.py:231
msgid "File contains binary data"
msgstr ""

#: ../common/rhnException.py:232
msgid "Configuration channel is not empty"
msgstr ""

#: ../common/rhnException.py:233
msgid "Permission error"
msgstr ""

#: ../common/rhnException.py:234
msgid "Content missing for configuration file"
msgstr ""

#: ../common/rhnException.py:235
msgid "Template delimiters not specified"
msgstr ""

#: ../common/rhnException.py:236
msgid "Configuration channel does not exist"
msgstr ""

#: ../common/rhnException.py:237
msgid "Configuration channel already exists"
msgstr ""

#: ../common/rhnException.py:238
msgid "File missing from configuration channel"
msgstr ""

#: ../common/rhnException.py:239
msgid "Different revision of this file is uploaded"
msgstr ""

#: ../common/rhnException.py:240
msgid "File already uploaded to configuration channel"
msgstr ""

#: ../common/rhnException.py:241
msgid "File size exceeds remaining quota space"
msgstr ""

#: ../common/rhnException.py:242
msgid "Full path of file must be specified"
msgstr ""

#: ../common/rhnException.py:243
#, fuzzy
msgid "Invalid revision number"
msgstr "Invalid system release version requested"

#: ../common/rhnException.py:244
msgid "Cannot compare files of different file type"
msgstr ""

#. 5000 - 5999: client content uploading errors
#. 5000 - 5099: crash reporting errors
#: ../common/rhnException.py:248
msgid "Crash information is invalid or incomplete"
msgstr ""

#: ../common/rhnException.py:249
msgid "Crash file information is invalid or incomplete"
msgstr ""

#: ../common/rhnException.py:250
msgid "Error composing crash directory path"
msgstr ""

#: ../common/rhnException.py:251
msgid "Error composing crash file path"
msgstr ""

#: ../common/rhnException.py:252 ../common/rhnException.py:259
#, fuzzy
msgid "Invalid content encoding"
msgstr "Invalid system release version requested"

#: ../common/rhnException.py:253
#, fuzzy
msgid "Invalid crash name"
msgstr "Invalid system release version requested"

#: ../common/rhnException.py:254
msgid "Crash reporting is disabled for this organization"
msgstr ""

#. 5100 - 5199: scap results reporting error
#: ../common/rhnException.py:256
msgid "SCAP results file transfer is invalid or incomplete"
msgstr ""

#: ../common/rhnException.py:257
msgid "Error composing directory path for detailed SCAP results"
msgstr ""

#: ../common/rhnException.py:258
msgid "Error composing file path for detailed SCAP results"
msgstr ""

#: ../common/rhnException.py:306
msgid ""
"\n"
"     An error has occurred while processing your request. If this problem\n"
"     persists please enter a bug report at scc.suse.com.\n"
"     If you choose to submit the bug report, please be sure to include\n"
"     details of what you were trying to do when this error occurred and\n"
"     details on how to reproduce this problem.\n"
msgstr ""

#: ../common/rhnException.py:358
#, python-format
msgid ""
"Error Message:\n"
"    %s\n"
msgstr ""

#: ../common/rhnException.py:360
#, python-format
msgid "Error Class Code: %s\n"
msgstr ""

#: ../common/rhnException.py:363
#, python-format
msgid "Error Class Info: %s\n"
msgstr ""

#: ../common/rhnException.py:365
#, python-format
msgid "Explanation: %s"
msgstr ""

#: ../common/rhnTB.py:205
#, python-format
msgid "ERROR: %s %s: %s"
msgstr ""

#: ../common/rhnTB.py:207
#, python-format
msgid "TRACEBACK: %s"
msgstr ""

#: ../satellite_tools/disk_dumper/iss.py:1294
#: ../satellite_tools/disk_dumper/iss.py:1298
#, python-format
msgid "format of %s should be at least YYYYMMDD.\n"
msgstr ""

#: ../satellite_tools/messages.py:26
#, python-format
msgid ""
"\n"
"ERROR: executing step %s. Error is:\n"
"%s\n"
msgstr ""

#: ../satellite_tools/messages.py:31
#, python-format
msgid ""
"\n"
"ERROR: there was a problem accessing the channel data from your temporary\n"
"       repository. Did you migrate all of the data from the channel ISOs\n"
"       do this directory? If so, please recheck the channels ISOs, ensure\n"
"       that you have them all, and then iteratively remount and repopulate\n"
"       the temporary repository (%s).\n"
msgstr ""

#: ../satellite_tools/messages.py:39
#, python-format
msgid ""
"\n"
"ERROR: there was a problem synchronizing the information.\n"
"       Error message: %s\n"
msgstr ""

#: ../satellite_tools/messages.py:44
#, python-format
msgid ""
"\n"
"ERROR: There was a problem communicating with the ISS Master.\n"
"       Depending on the specific error details, please review your "
"configuration,\n"
"       basic network connectivity, and/or name resolution, and try again.\n"
"       Error message: %s\n"
msgstr ""

#: ../satellite_tools/messages.py:51
#, python-format
msgid ""
"\n"
"ERROR: There was a problem communicating with the ISS Master.\n"
"       If the master satellite is older than v5.3, it does not have ISS "
"capability.\n"
"       Otherwise, depending on the specific error details, please review "
"your\n"
"       configuration, basic network connectivity, and/or name resolution, "
"and try again.\n"
"       Error message: %s\n"
msgstr ""

#: ../satellite_tools/messages.py:59
#, python-format
msgid ""
"\n"
"ERROR: a child-channel cannot be synced without its parent being synced as\n"
"       well. A parent needs to be either (a) previously synced or (b) "
"synced\n"
"       in tandem with the desired child-channel. Missing parents for this\n"
"       transaction:\n"
"       %s\n"
msgstr ""

#: ../satellite_tools/messages.py:67
#, python-format
msgid ""
"\n"
"ERROR: you are not entitled to sync a channel in this set of channels.\n"
"Please contact your SUSE Manager contact\n"
"%s"
msgstr ""

#: ../satellite_tools/messages.py:72
#, python-format
msgid "  ERROR: not enough free space (%s KB) on device."
msgstr ""

#: ../satellite_tools/messages.py:74
#, python-format
msgid "    %3d/%s Fetch successful: %s (%s bytes)"
msgstr ""

#: ../satellite_tools/messages.py:75
#, python-format
msgid "    Extinct package:  %s"
msgstr ""

#: ../satellite_tools/messages.py:76
#, python-format
msgid "   Total size: %s"
msgstr ""

#: ../satellite_tools/messages.py:77
#, python-format
msgid "      Downloaded %s of %s. Estimated remaining time: %s"
msgstr ""

#: ../satellite_tools/messages.py:78
#, python-format
msgid "    Fetch unsuccessful: %s"
msgstr ""

#: ../satellite_tools/messages.py:79
#, python-format
msgid "   RPM fetch summary: %s"
msgstr ""

#: ../satellite_tools/messages.py:80
#, python-format
msgid "       success: %d"
msgstr ""

#: ../satellite_tools/messages.py:81
#, python-format
msgid "       failed:  %d"
msgstr ""

#: ../satellite_tools/messages.py:82
#, python-format
msgid "       extinct: %d"
msgstr ""

#: ../satellite_tools/messages.py:84
#, python-format
msgid "   Retrieving / parsing *relevant* package metadata: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:85
#, python-format
msgid "   Retrieving / parsing errata data: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:86
#, python-format
msgid "   Retrieving / parsing kickstart data: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:87
#, python-format
msgid "   Retrieving / parsing kickstart tree files: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:88
#, python-format
msgid "   Importing *relevant* package metadata: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:89
msgid "   * WARNING: this may be a slow process."
msgstr ""

#: ../satellite_tools/messages.py:90
msgid "Linking packages to channels"
msgstr ""

#: ../satellite_tools/messages.py:91
#, python-format
msgid "   Importing *relevant* errata: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:92
msgid "   No new kickstartable tree to import"
msgstr ""

#: ../satellite_tools/messages.py:93
#, python-format
msgid "Importing kickstartable trees (%d)"
msgstr ""

#: ../satellite_tools/messages.py:94
#, python-format
msgid "Imported kickstartable trees (%d)"
msgstr ""

#: ../satellite_tools/reposync.py:111 ../satellite_tools/satsync.py:439
msgid "+++ sending log as an email +++"
msgstr ""

#: ../satellite_tools/reposync.py:114
#, python-format
msgid "%s sync. report from %s"
msgstr ""

#: ../satellite_tools/reposync.py:124 ../satellite_tools/satsync.py:449
msgid "+++ email requested, but there is nothing to send +++"
msgstr ""

#: ../satellite_tools/rhn_satellite_activate.py:198
#, python-format
msgid ""
"\"%s\" (specified in commandline)\n"
"could not be opened and read:\n"
"%s"
msgstr ""

#: ../satellite_tools/rhn_satellite_activate.py:205
#, python-format
msgid ""
"\"%s\" could not be opened\n"
"and/or written to:\n"
"%s"
msgstr ""

#: ../satellite_tools/satsync.py:258
#, python-format
msgid "No handler for step %s"
msgstr ""

#. Try one more time - this time it should be faster since
#. everything should be cached
#: ../satellite_tools/satsync.py:270
msgid "Environment changed, trying again..."
msgstr ""

#: ../satellite_tools/satsync.py:277
msgid "ERROR: Encountered IntegrityError: \n"
msgstr ""

#: ../satellite_tools/satsync.py:285
msgid "Repeated failures"
msgstr ""

#: ../satellite_tools/satsync.py:290
#, python-format
msgid ""
"    Import complete:\n"
"        Begin time: %s\n"
"        End time:   %s\n"
"        Elapsed:    %s\n"
"          "
msgstr ""

#: ../satellite_tools/satsync.py:311
msgid "hours"
msgstr ""

#: ../satellite_tools/satsync.py:311
msgid "minutes"
msgstr ""

#: ../satellite_tools/satsync.py:311
msgid "seconds"
msgstr ""

#: ../satellite_tools/satsync.py:357
msgid ""
"ERROR: The dump is missing package data, use --no-rpms to skip this step or "
"fix the content to include package data."
msgstr ""

#. the orgs() method doesn't exist; that's fine we just
#. won't sync the orgs
#: ../satellite_tools/satsync.py:404
msgid "The SUSE Manager master does not support syncing orgs data."
msgstr ""

#: ../satellite_tools/satsync.py:404
msgid "Skipping..."
msgstr ""

#: ../satellite_tools/satsync.py:442
#, python-format
msgid "SUSE Manager Inter Server sync. report from %s"
msgstr ""

#: ../satellite_tools/satsync.py:521
msgid " - file-system synchronization"
msgstr ""

#: ../satellite_tools/satsync.py:533 ../satellite_tools/satsync.py:541
msgid " - live synchronization"
msgstr ""

#: ../satellite_tools/satsync.py:534
#, python-brace-format
msgid ""
"ERROR: Live content synchronizing with RHN Classic Hosted is no longer "
"supported.\n"
"Please use the cdn-sync command instead unless you are attempting to sync "
"from another {PRODUCT_NAME} via Inter-Server-Sync (ISS), or from local "
"content on disk via Channel Dump ISOs."
msgstr ""

#: ../satellite_tools/satsync.py:542
#, python-format
msgid "   url: %s"
msgstr ""

#: ../satellite_tools/satsync.py:543
#, python-format
msgid "   debug/output level: %s"
msgstr ""

#: ../satellite_tools/satsync.py:553
msgid "ERROR: this server must be registered with SUSE Manager."
msgstr ""

#: ../satellite_tools/satsync.py:575
#, python-format
msgid "Retrieving / parsing %s data"
msgstr ""

#: ../satellite_tools/satsync.py:585 ../satellite_tools/satsync.py:600
msgid "*** SYSTEM INTERRUPT CALLED ***"
msgstr ""

#: ../satellite_tools/satsync.py:593
msgid "ERROR: fatal parser exception occurred "
msgstr ""

#: ../satellite_tools/satsync.py:594
#, python-format
msgid "(line: %s, col: %s msg: %s)"
msgstr ""

#: ../satellite_tools/satsync.py:598
#, python-format
msgid "ERROR: parser exception occurred: %s"
msgstr ""

#: ../satellite_tools/satsync.py:603
msgid "ERROR: exception (during parse) occurred: "
msgstr ""

#: ../satellite_tools/satsync.py:604
#, python-format
msgid ""
"   Encountered some errors with %s data (see logs (%s) for more information)"
msgstr ""

#: ../satellite_tools/satsync.py:606
#, python-format
msgid "   Encountered some errors with %s data:"
msgstr ""

#: ../satellite_tools/satsync.py:607
#, python-format
msgid "   ------- %s PARSE/IMPORT ERROR -------"
msgstr ""

#: ../satellite_tools/satsync.py:609
msgid "   ---------------------------------------"
msgstr ""

#: ../satellite_tools/satsync.py:612
#, python-format
msgid "%s data complete"
msgstr ""

#: ../satellite_tools/satsync.py:665
msgid "Retrieving / parsing channel data"
msgstr ""

#: ../satellite_tools/satsync.py:718
msgid "Channel data complete"
msgstr ""

#: ../satellite_tools/satsync.py:736
#, python-format
msgid "%10s import from %s"
msgstr ""

#: ../satellite_tools/satsync.py:739
#, python-format
msgid "%10s import from %s - %s"
msgstr ""

#: ../satellite_tools/satsync.py:743
#, python-format
msgid "%10s"
msgstr ""

#: ../satellite_tools/satsync.py:750
msgid "p"
msgstr ""

#: ../satellite_tools/satsync.py:752
msgid "."
msgstr ""

#: ../satellite_tools/satsync.py:758
msgid "   p = previously imported/synced channel"
msgstr ""

#: ../satellite_tools/satsync.py:759
msgid "   . = channel not yet imported/synced"
msgstr ""

#: ../satellite_tools/satsync.py:765
msgid "   e = channel no longer supported (end-of-service)"
msgstr ""

#: ../satellite_tools/satsync.py:767
msgid "   ? = channel label invalid --- typo?"
msgstr ""

#: ../satellite_tools/satsync.py:771
#, python-format
msgid "   %s:"
msgstr ""

#: ../satellite_tools/satsync.py:772
#, python-format
msgid "      %s %-40s %4s %s"
msgstr ""

#: ../satellite_tools/satsync.py:773
msgid "base-channels"
msgstr ""

#: ../satellite_tools/satsync.py:786 ../satellite_tools/satsync.py:1603
msgid "NONE RELEVANT"
msgstr ""

#: ../satellite_tools/satsync.py:808
msgid "end-of-service"
msgstr ""

#: ../satellite_tools/satsync.py:809
msgid "e"
msgstr ""

#: ../satellite_tools/satsync.py:815
msgid "   typos:"
msgstr ""

#: ../satellite_tools/satsync.py:816
msgid "?"
msgstr ""

#: ../satellite_tools/satsync.py:831
#, python-format
msgid "XXX: imported channels: %s"
msgstr ""

#: ../satellite_tools/satsync.py:832
#, python-format
msgid "XXX:   cached channels: %s"
msgstr ""

#: ../satellite_tools/satsync.py:837
msgid "XXX: list channels called"
msgstr ""

#: ../satellite_tools/satsync.py:855
msgid "ERROR: these channels either do not exist or are not available:"
msgstr ""

#: ../satellite_tools/satsync.py:859
#, python-format
msgid "       (to see a list of channel labels: %s --list-channels)"
msgstr ""

#: ../satellite_tools/satsync.py:904
#, python-format
msgid "   Retrieving / parsing short package metadata: %s (%s)"
msgstr ""

#: ../satellite_tools/satsync.py:965
#, python-format
msgid "Diffing package metadata (what's missing locally?): %s"
msgstr ""

#: ../satellite_tools/satsync.py:971 ../satellite_tools/satsync.py:1254
msgid "Diffing:    "
msgstr ""

#: ../satellite_tools/satsync.py:988
msgid "ERROR: incremental dump skipped"
msgstr ""

#: ../satellite_tools/satsync.py:1079
msgid "Downloading rpm packages"
msgstr ""

#: ../satellite_tools/satsync.py:1084
#, python-format
msgid "   Fetching any missing RPMs: %s (%s)"
msgstr ""

#: ../satellite_tools/satsync.py:1085 ../satellite_tools/satsync.py:1153
msgid "NONE MISSING"
msgstr ""

#: ../satellite_tools/satsync.py:1094
msgid "Processing rpm packages complete"
msgstr ""

#: ../satellite_tools/satsync.py:1121
msgid "Downloading package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1146
msgid "Downloading srpm packages"
msgstr ""

#: ../satellite_tools/satsync.py:1152
#, python-format
msgid "   Fetching any missing SRPMs: %s (%s)"
msgstr ""

#: ../satellite_tools/satsync.py:1249
#, python-format
msgid "Diffing source package metadata (what's missing locally?): %s"
msgstr ""

#: ../satellite_tools/satsync.py:1260
msgid "Downloading source package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1338 ../satellite_tools/satsync.py:2027
#, python-format
msgid "Unable to save file %s: %s"
msgstr ""

#. for
#. Retried a number of times and it still failed; log the
#. file as being failed and move on
#: ../satellite_tools/satsync.py:1345
#, python-format
msgid "Failed to fetch file %s"
msgstr ""

#: ../satellite_tools/satsync.py:1350
msgid "Downloading kickstartable trees metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1365
msgid "Downloading kickstartable trees files"
msgstr ""

#: ../satellite_tools/satsync.py:1504
#, python-format
msgid "Grabbing all patches for channel %s"
msgstr ""

#: ../satellite_tools/satsync.py:1554
msgid "Downloading patch data"
msgstr ""

#: ../satellite_tools/satsync.py:1556
msgid "Forcing download of all patch data for requested channels."
msgstr ""

#: ../satellite_tools/satsync.py:1571
msgid "Downloading patch data complete"
msgstr ""

#: ../satellite_tools/satsync.py:1576 ../satellite_tools/satsync.py:1597
msgid "Downloading:"
msgstr ""

#: ../satellite_tools/satsync.py:1579
msgid " - complete"
msgstr ""

#: ../satellite_tools/satsync.py:1624
msgid "Importing source package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1627
msgid "Importing package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1635
msgid "Importing:  "
msgstr ""

#. not in the cache
#: ../satellite_tools/satsync.py:1703
msgid ""
"Package Not Found in Cache, Clear the Cache "
"to                                  Regenerate it."
msgstr ""

#: ../satellite_tools/satsync.py:1709
msgid "Importing channel patches"
msgstr ""

#: ../satellite_tools/satsync.py:1714
#, python-format
msgid "Importing %s patches for channel %s."
msgstr ""

#. Incomplete configuration
#: ../satellite_tools/satsync.py:2113
msgid "ERROR: server.mount_point not set in the configuration file"
msgstr ""

#: ../satellite_tools/satsync.py:2117
#, python-format
msgid "ERROR: server.mount_point %s do not exist"
msgstr ""

#: ../satellite_tools/satsync.py:2122
#, python-format
msgid "ERROR: path under server.mount_point (%s)  do not exist"
msgstr ""

#: ../satellite_tools/satsync.py:2199
#, python-format
msgid "Commandline: %s"
msgstr ""

#: ../satellite_tools/satsync.py:2202
#, python-format
msgid ""
"DEBUG ONLY: max. batch-size for XML/database-import processing (1..%s).\"man "
"satellite-sync\" for more information."
msgstr ""

#: ../satellite_tools/satsync.py:2205
msgid "alternative SSL CA Cert (fullpath to cert file)"
msgstr ""

#: ../satellite_tools/satsync.py:2207
msgid "process data for this channel only"
msgstr ""

#: ../satellite_tools/satsync.py:2209
msgid ""
"disk dump will be considered to be a full export; see \"man satellite-sync\" "
"for more information."
msgstr ""

#: ../satellite_tools/satsync.py:2212
msgid "existing custom channels will also be synced (unless -c is used)"
msgstr ""

#: ../satellite_tools/satsync.py:2214
#, python-format
msgid ""
"override debug level set in /etc/rhn/rhn.conf (which is currently set at %s)."
msgstr ""

#: ../satellite_tools/satsync.py:2216
#, python-format
msgid "requested version of XML dump (default: %s)"
msgstr ""

#: ../satellite_tools/satsync.py:2218
msgid "e-mail a report of what was synced/imported"
msgstr ""

#: ../satellite_tools/satsync.py:2220
msgid "forcibly process all (not a diff of) patch metadata"
msgstr ""

#: ../satellite_tools/satsync.py:2222
msgid "Do not use an http proxy under any circumstances."
msgstr ""

#: ../satellite_tools/satsync.py:2224
msgid "alternative http proxy (hostname:port)"
msgstr ""

#: ../satellite_tools/satsync.py:2226
msgid "alternative http proxy username"
msgstr ""

#: ../satellite_tools/satsync.py:2228
msgid "alternative http proxy password"
msgstr ""

#: ../satellite_tools/satsync.py:2230
msgid "parent SUSE Manager to import content from"
msgstr ""

#: ../satellite_tools/satsync.py:2232
msgid "list all available channels and exit"
msgstr ""

#: ../satellite_tools/satsync.py:2234
msgid "help on all error codes mgr-inter-sync returns"
msgstr ""

#: ../satellite_tools/satsync.py:2236
msgid "source mount point for import - disk update only"
msgstr ""

#: ../satellite_tools/satsync.py:2238
msgid "do not process patch data"
msgstr ""

#: ../satellite_tools/satsync.py:2240
msgid "do not process kickstart data (provisioning only)"
msgstr ""

#: ../satellite_tools/satsync.py:2242
msgid "do not process full package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:2244
msgid "do not download, or process any RPMs"
msgstr ""

#: ../satellite_tools/satsync.py:2246
msgid "turn off SSL (not recommended)"
msgstr ""

#: ../satellite_tools/satsync.py:2248
msgid "org to which the sync imports data. defaults to the admin account"
msgstr ""

#: ../satellite_tools/satsync.py:2250
msgid "print the configuration and exit"
msgstr ""

#: ../satellite_tools/satsync.py:2252
msgid "alternative server with which to connect (hostname)"
msgstr ""

#: ../satellite_tools/satsync.py:2254
msgid "synchronize to this step (man satellite-sync for more info)"
msgstr ""

#: ../satellite_tools/satsync.py:2256
msgid "write complete data to tempfile before streaming to remainder of app"
msgstr ""

#: ../satellite_tools/satsync.py:2258
msgid "DEBUG ONLY: alternative path to digital system id"
msgstr ""

#: ../satellite_tools/satsync.py:2260
msgid "alternative email address(es) for sync output (--email option)"
msgstr ""

#: ../satellite_tools/satsync.py:2262
msgid "do not remove rpms when importing from local dump"
msgstr ""

#: ../satellite_tools/satsync.py:2264
msgid ""
"the fully qualified domain name of the master Satellite. Valid with --mount-"
"point only. Required if you want to import org data and channel permissions."
msgstr ""

#: ../satellite_tools/satsync.py:2274
#, python-format
msgid "ERROR: these arguments make no sense in this context (try --help): %s"
msgstr ""

#. An SQL error is fatal... crash and burn
#: ../satellite_tools/satsync.py:2286
#, python-format
msgid "ERROR: Can't connect to the database: %s"
msgstr ""

#: ../satellite_tools/satsync.py:2287
msgid "ERROR: Check if your database is running."
msgstr ""

#: ../satellite_tools/satsync.py:2322
#, python-format
msgid "ERROR: --debug-level takes an in integer value within the range %s."
msgstr ""

#: ../satellite_tools/satsync.py:2324
msgid "  0  - little logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2325
msgid "  1  - minimal logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2326
msgid "  2  - normal level of logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2327
msgid "  3  - lots of logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2328
msgid "  4+ - excessive logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2341
msgid "ERROR: The --master option is only valid with the --mount-point option"
msgstr ""

#: ../satellite_tools/satsync.py:2351
#, python-format
msgid "ERROR: Unable to lookup Org Id %s"
msgstr ""

#: ../satellite_tools/satsync.py:2360
msgid ""
"WARNING: --list-channels option overrides any --step option. --step ignored."
msgstr ""

#: ../satellite_tools/satsync.py:2375
#, python-format
msgid ""
"ERROR: '%s' is not a valid step. See 'man mgr-inter-sync' for more detail."
msgstr ""

#: ../satellite_tools/satsync.py:2407
msgid ""
"ERROR: No channels currently imported; try mgr-inter-sync --list-channels; "
"then mgr-inter-sync -c chn0 -c chn1..."
msgstr ""

#. int(None) --> TypeError
#. int('a')  --> ValueError
#: ../satellite_tools/satsync.py:2457 ../satellite_tools/satsync.py:2461
msgid "ERROR: --batch-size must have a value within the range: 1..50"
msgstr ""

#: ../satellite_tools/satsync.py:2469
#, python-format
msgid "ERROR: no such directory %s"
msgstr ""

#: ../satellite_tools/satsync.py:2474
msgid "Error Codes: Returned codes means:"
msgstr ""

#: ../satellite_tools/satsync.py:2475
msgid " -1  - Could not lock file or KeyboardInterrupt or SystemExit"
msgstr ""

#: ../satellite_tools/satsync.py:2476
msgid "  0  - User interrupted or intentional exit"
msgstr ""

#: ../satellite_tools/satsync.py:2477
msgid "  1  - attempting to run more than one instance of mgr-inter-sync."
msgstr ""

#: ../satellite_tools/satsync.py:2478
msgid "  2  - Unable to find synchronization tools."
msgstr ""

#: ../satellite_tools/satsync.py:2479
msgid "  3  - a general socket exception occurred"
msgstr ""

#: ../satellite_tools/satsync.py:2480
msgid "  4  - an SSL error occurred. Recheck your SSL settings."
msgstr ""

#: ../satellite_tools/satsync.py:2481
msgid "  5  - ISS error"
msgstr ""

#: ../satellite_tools/satsync.py:2482
msgid "  6  - unhandled exception occurred"
msgstr ""

#: ../satellite_tools/satsync.py:2483
msgid "  7  - unknown sync error"
msgstr ""

#: ../satellite_tools/satsync.py:2484
msgid "  8  - ERROR: must be root to execute"
msgstr ""

#: ../satellite_tools/satsync.py:2485
msgid "  9  - rpclib fault during synchronization init"
msgstr ""

#: ../satellite_tools/satsync.py:2486
msgid "  10 - synchronization init error"
msgstr ""

#: ../satellite_tools/satsync.py:2487
msgid "  11 - Error parsing XML stream"
msgstr ""

#: ../satellite_tools/satsync.py:2488
msgid "  12 - Channel do not exist"
msgstr ""

#: ../satellite_tools/satsync.py:2489
msgid "  13 - SQL error during importing package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:2490
msgid "  14 - SQL error during linking channel packages"
msgstr ""

#: ../satellite_tools/satsync.py:2491
msgid "  15 - SQL error during xml processing"
msgstr ""

#: ../satellite_tools/satsync.py:2492
msgid "  16 - server.mount_point not set in the configuration file"
msgstr ""

#: ../satellite_tools/satsync.py:2493
msgid ""
"  17 - SQL error during retrieving the channels already imported in the SUSE "
"Manager database"
msgstr ""

#: ../satellite_tools/satsync.py:2494
msgid "  18 - Wrong db connection string in rhn.conf"
msgstr ""

#: ../satellite_tools/satsync.py:2495
msgid "  19 - Bad arguments"
msgstr ""

#: ../satellite_tools/satsync.py:2496
msgid "  20 - Could not connect to db."
msgstr ""

#: ../satellite_tools/satsync.py:2497
msgid "  21 - Bad debug level"
msgstr ""

#: ../satellite_tools/satsync.py:2498
msgid "  22 - Not valid step"
msgstr ""

#: ../satellite_tools/satsync.py:2499
msgid "  24 - no such file"
msgstr ""

#: ../satellite_tools/satsync.py:2500
msgid "  25 - no such directory"
msgstr ""

#: ../satellite_tools/satsync.py:2501
msgid "  26 - mount_point does not exist"
msgstr ""

#: ../satellite_tools/satsync.py:2502
msgid "  27 - No such org"
msgstr ""

#: ../satellite_tools/satsync.py:2503
msgid "  28 - error: --master is only valid with --mount-point"
msgstr ""

#: ../satellite_tools/satsync.py:2510
#, python-format
msgid "ERROR: unknown dump version, try one of %s"
msgstr ""

#, fuzzy
#~ msgid "Red Hat Satellite Welcome Message"
#~ msgstr ""
#~ "Now for the first time ever, information, updates, and services\n"
#~ "that enhance the security and reliability of your Red Hat Linux\n"
#~ "systems are available to you in one place-- Red Hat Network.\n"
#~ "Check out these benefits:\n"
#~ "\n"
#~ "-- Red Hat Linux information, updates, and services specific to\n"
#~ "   your systems\n"
#~ "-- Fast access and proactive delivery of updates (security errata,\n"
#~ "   bug fixes, enhancements)\n"
#~ "-- The latest news from Red Hat when new products and services\n"
#~ "   are available\n"
#~ "\n"
#~ "Joining is easy-- just follow this three step process:\n"
#~ "\n"
#~ "Step 1: Review the Red Hat privacy policy\n"
#~ "Step 2: Register a user account with Red Hat.\n"
#~ "        a. This registration program can take care of that for you\n"
#~ "        b. You can also register an account by going to\n"
#~ "           https://rhn.redhat.com/newlogin.pxt\n"
#~ "Step 3: Register a system profile on Red Hat Network\n"
#~ "\n"
#~ "Click on the \"Next\" button to register now, or click \"Cancel\"\n"
#~ "to banish this program forever."

#, fuzzy
#~ msgid "Red Hat Satellite Privacy Statement"
#~ msgstr ""
#~ " We think our customers understand better than anyone else how Red\n"
#~ " Hat can most effectively serve their needs.  Because of this, Red\n"
#~ " Hat makes every effort to allow our customers to define the\n"
#~ " relationship they will have with us.  We ask customers how they\n"
#~ " would like Red Hat to communicate with them, if at all.  We disclose\n"
#~ " how we will be using our customers' information through documents\n"
#~ " like this one, or by answering individual questions customers may\n"
#~ " ask.  Our policy is not to sell or provide to others our customers'\n"
#~ " information without making it clear that we intend to do to in this\n"
#~ " statement or at the time the information is collected.  Note that\n"
#~ " when you purchase a product or service from us, we may need to\n"
#~ " contact you to follow up on the product or service.  However, our\n"
#~ " policy is not to contact you for anything unrelated to the product\n"
#~ " or service unless you have \"opted in\" to such contact when you\n"
#~ " signed up.  You should be aware that in certain circumstances, Red\n"
#~ " Hat may be required to disclose information pursuant to applicable\n"
#~ " law or government orders.\n"
#~ " \n"
#~ " Red Hat has self-certified as adhering to the European Union \"safe\n"
#~ " harbor\" principles with the United States Department of Commerce,\n"
#~ " and has chosen to cooperate with the European Union Data Protection\n"
#~ " Authorities for unresolved privacy complaints.  If you have any\n"
#~ " questions or complaints regarding the use of your personal\n"
#~ " information, please contact feedback@redhat.com.\n"
#~ " \n"
#~ " Below you will find a detailed account of Red Hat's privacy\n"
#~ " practices.  If you have any questions about any of these practices\n"
#~ " or Red Hat's use of your personal information, please feel free to\n"
#~ " contact us at feedback@redhat.com.\n"
#~ " \n"
#~ " \n"
#~ " Information Collected Online\n"
#~ " \n"
#~ " Our website sometimes requires you to give us personal information\n"
#~ " when you do things like purchase products in our Web store or\n"
#~ " register your products with redhat.com.  Red Hat uses your personal\n"
#~ " information only for marketing, customer service, delivery of\n"
#~ " products, aftercare service and related activities thereof.  In\n"
#~ " situations such as these, you will be given a choice as to whether\n"
#~ " you would like Red Hat or our business partners to contact you in\n"
#~ " the future.  This is an \"opt-in\" process.  If you opt-in, we rely on\n"
#~ " your consent to send you information, special offers, and\n"
#~ " promotional materials.  In many cases, you may choose whether you\n"
#~ " would like to be contacted via mail, email, phone, or not at all.\n"
#~ " We will only contact you via the methods you choose.  An exception\n"
#~ " will be made in the rare case that we find a significant issue with\n"
#~ " a product or service that requires your immediate attention.  For\n"
#~ " your protection, we may contact you via phone or email as the\n"
#~ " situation warrants.\n"
#~ " \n"
#~ " Also, our website sometimes requires you to give us personal\n"
#~ " information in order to do things like access webcasts, download\n"
#~ " whitepapers, or participate in online surveys.  In situations like\n"
#~ " these, where you are accessing free products and services from Red\n"
#~ " Hat and/or our business partners, we recognize your interest in the\n"
#~ " product or service and consider that  to be \"opting in\" to allow Red\n"
#~ " Hat and appropriate business partners to contact you with\n"
#~ " information, special offers, or promotional materials in the future.\n"
#~ " Red Hat may transfer your personal information to or share it with\n"
#~ " the business partner only for future marketing, development of new\n"
#~ " products, customer service, delivery of products, aftercare service\n"
#~ " and related activities thereof.  If you do not wish to be contacted,\n"
#~ " we ask that you refrain from accessing these free products and\n"
#~ " services offered to you by Red Hat and our partners.\n"
#~ " \n"
#~ " Red Hat trains its employees on our privacy policy guidelines and\n"
#~ " makes our privacy policy available to our business partners. Also\n"
#~ " our website uses Secure Socket Layer (SSL) which encrypts your\n"
#~ " personal information when you send your personal information on our\n"
#~ " website. In addition, Red Hat and its business partners enter into\n"
#~ " confidentiality agreements which requires care and precautions be\n"
#~ " taken to prevent loss, misuse, or disclosure of your personal\n"
#~ " information.\n"
#~ " \n"
#~ " Out of special concern for children's privacy, we do not accept\n"
#~ " personal information from children who are under the age of 13.\n"
#~ " \n"
#~ " \n"
#~ " Information Collected On Red Hat Network\n"
#~ " \n"
#~ " If you register your system on Red Hat Network, you will be asked to\n"
#~ " provide a system profile when you register. The system profile\n"
#~ " consists of:\n"
#~ " \n"
#~ " 1) An inventory of the .rpm files installed on the system. This\n"
#~ " information helps determine what new software updates may be\n"
#~ " valuable to you in keeping your system secure and available.\n"
#~ " \n"
#~ " 2) An inventory of your system hardware. This information is also\n"
#~ " used by Red Hat to determine what software and support information\n"
#~ " might be useful to you.\n"
#~ " \n"
#~ " You can determine the information in your System Profile prior to\n"
#~ " registering it on Red Hat Network by typing the following at the\n"
#~ " command prompt:\n"
#~ " \n"
#~ " $rhn_register\n"
#~ " \n"
#~ " This command will start the registration program, and all of the\n"
#~ " information contained in the system profile is presented to you for\n"
#~ " review prior to submission to Red Hat.\n"
#~ " \n"
#~ " Once you have registered a system profile, you can browse and edit\n"
#~ " your profile information from your Red Hat Network page.\n"
#~ " \n"
#~ " When requested by you with a command from Red Hat Network, certain\n"
#~ " application configuration information about a particular system may\n"
#~ " be provided to Red Hat and displayed to you in a Web page to assist\n"
#~ " you in configuring your system. At your request, Red Hat may store\n"
#~ " this information for a time to assist you in system recovery should\n"
#~ " you make a mistake in the application configuration. In each case\n"
#~ " where configuration information is stored by Red Hat, it will be at\n"
#~ " your request and only for a period of time sufficient to confirm\n"
#~ " acceptance of new configuration settings.\n"
#~ " \n"
#~ " Other than the System Profile and application configuration you\n"
#~ " request as part of an online service, Red Hat will never retrieve or\n"
#~ " store personal file information from your system as part of any Red\n"
#~ " Hat service.\n"
#~ " \n"
#~ " \n"
#~ " Information Collected in Other Ways\n"
#~ " \n"
#~ " We collect information in other ways, such as running contests on\n"
#~ " our site and at trade shows, in which we ask you for contact\n"
#~ " information (like your email address), unique identifiers (like your\n"
#~ " password), and demographic information (like your occupation).  We\n"
#~ " may use data from these contests and trade shows to contact you or\n"
#~ " to allow appropriate business partners to contact you.  If you do\n"
#~ " not wish to be contacted, we ask that you refrain from participating\n"
#~ " in these promotions.\n"
#~ " \n"
#~ " \n"
#~ " Cookies and Other Browser Information\n"
#~ " \n"
#~ " Our site automatically captures IP addresses.  We use IP addresses\n"
#~ " to help diagnose problems with our server, to administer our\n"
#~ " website, and to help ensure the security of your interaction with\n"
#~ " the website.  Your IP address is used to help identify you and your\n"
#~ " shopping cart.\n"
#~ " \n"
#~ " As part of offering and providing customizable and personalized\n"
#~ " services, Red Hat uses cookies to store and sometimes track\n"
#~ " information about you.  A cookie is a small amount of data that is\n"
#~ " sent to your browser from a Web server and stored on your computer's\n"
#~ " hard drive.  All sections of redhat.com where you are prompted to\n"
#~ " log in or that are customizable require your browser to accept\n"
#~ " cookies.  If you would like to know more about precisely how we use\n"
#~ " cookies, click here.\n"
#~ " \n"
#~ " \n"
#~ " Third Party and Aggregated Data\n"
#~ " \n"
#~ " Under confidentiality agreements, Red Hat may match user information\n"
#~ " with third-party data.  Also, Red Hat discloses aggregated user\n"
#~ " statistics in order to describe our services to current and\n"
#~ " prospective partners and other third parties.  Red Hat has\n"
#~ " agreements with some third parties to perform certain dedicated\n"
#~ " tasks such as product fulfillment, payroll, credit card processing,\n"
#~ " e-mail housing, and marketing, training, and customer service.  In\n"
#~ " these situations, we share your information with these third parties\n"
#~ " for the sole purpose of allowing them to perform these tasks.  Your\n"
#~ " information is not used by the third party in any other way.\n"
#~ " \n"
#~ " \n"
#~ " About Links to Other Sites\n"
#~ " \n"
#~ " This site contains links to other sites.  Red Hat does not control\n"
#~ " the information collection of sites that can be reached through\n"
#~ " links from redhat.com.  If you have questions about the data\n"
#~ " collection procedures of linked sites, please contact those\n"
#~ " companies directly.\n"
#~ " \n"
#~ " \n"
#~ " Public Forums Reminder\n"
#~ " \n"
#~ " This site often makes chat rooms, forums, message boards, and/or\n"
#~ " news groups available to its users.  Please remember that any\n"
#~ " information that is disclosed in these areas becomes public\n"
#~ " information.  Exercise caution when deciding to disclose your\n"
#~ " personal information.  Although we value individual ideas and\n"
#~ " encourage free expression, Red Hat reserves the right to take\n"
#~ " necessary action to preserve the forum's integrity, such as removing\n"
#~ " any posting that is vulgar or inappropriate.\n"
#~ " \n"
#~ " \n"
#~ " Questions and Answers\n"
#~ " \n"
#~ " How Can I Opt Out?\n"
#~ " Red Hat gives you the ability to opt out of receiving communications\n"
#~ " from Red Hat and/or its partners if you choose.  When you register\n"
#~ " or order a product or service, simply choose \"I do not wish to be\n"
#~ " contacted\" underneath the Contact Method section.  If you decide\n"
#~ " that you would like to opt out of communications at a later date,\n"
#~ " you may log in to your account\n"
#~ " (http://www.redhat.com/apps/user/login.html) and modify the Contact\n"
#~ " Method section.  You may also simply unsubscribe to a specific email\n"
#~ " communication by following the unsubscribe directions at the bottom\n"
#~ " of the email or by contacting feedback@redhat.com and requesting\n"
#~ " that you be unsubscribe from that specific communication.\n"
#~ " \n"
#~ " How Can I Modify or Update My Information?\n"
#~ " Red Hat gives you the ability to modify or update your information.\n"
#~ " Please log in and modify your information\n"
#~ " (http://www.redhat.com/apps/user/login.html) or, if necessary,\n"
#~ " contact us at feedback@redhat.com and describe the changes you want\n"
#~ " made to the information you have previously provided.\n"
#~ " \n"
#~ " Red Hat reserves the right to change this policy from time to time.\n"
#~ " If we do make changes, the revised Privacy Statement will be posted\n"
#~ " on this site."
  07070100000069000081B40000000000000000000000016290A0C10000B635000000000000000000000000000000000000001E00000000spacewalk-backend/po/en_GB.po # SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
#
# Translators:
msgid ""
msgstr ""
"Project-Id-Version: Spacewalk\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-10-16 13:34+0200\n"
"PO-Revision-Date: 2011-03-04 16:08+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: English (United Kingdom) (http://www.transifex.com/projects/p/"
"fedora/language/en_GB/)\n"
"Language: en_GB\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"

#: ../server/apacheAuth.py:66
#, python-format
msgid "incomplete proxy authentication token: %s"
msgstr ""

#: ../server/apacheAuth.py:84
#, python-format
msgid "Sent proxy signature %s does not match ours %s."
msgstr ""

#: ../server/apacheAuth.py:119
msgid "declined proxy authentication"
msgstr ""

#: ../server/apacheRequest.py:59
#, python-format
msgid "Invalid request received (%s)."
msgstr ""

#: ../server/apacheRequest.py:120
#, python-format
msgid ""
"IMPORTANT MESSAGE FOLLOWS:\n"
"%s"
msgstr ""

#: ../server/apacheRequest.py:149
#, python-format
msgid ""
"While running '%s': caught\n"
"%s : %s\n"
msgstr ""

#: ../server/apacheRequest.py:606
#, python-format
msgid "Invalid URI %s"
msgstr ""

#: ../server/configFilesHandler.py:129 ../server/handlers/app/packages.py:192
#: ../server/handlers/xmlrpc/registration.py:215
#: ../server/handlers/xmlrpc/registration.py:1168
#: ../server/handlers/xmlrpc/registration.py:1307
#, python-format
msgid ""
"\n"
"                   %s Account has been deactivated on this server.\n"
"                   Please contact your Org administrator for more help."
msgstr ""

#: ../server/handlers/applet/applet.py:78
#, python-brace-format
msgid "Your system was not found in the {PRODUCT_NAME} database"
msgstr ""

#: ../server/handlers/sat/auth.py:45
msgid "ISS is disabled on this server."
msgstr ""

#: ../server/handlers/sat/auth.py:50
#, python-format
msgid "Server \"%s\" is not enabled for ISS."
msgstr ""

#: ../server/handlers/xmlrpc/errata.py:64
#, python-format
msgid "Expected a package name, not: %s"
msgstr ""

#: ../server/handlers/xmlrpc/errata.py:115
#, python-format
msgid "Expected a package, not: %s"
msgstr ""

#: ../server/handlers/xmlrpc/proxy.py:65
#, python-format
msgid "SUSE Manager Proxy service not enabled for server profile: \"%s\""
msgstr ""

#: ../server/handlers/xmlrpc/proxy.py:85
msgid "Invalid session key"
msgstr ""

#: ../server/handlers/xmlrpc/proxy.py:93
msgid "This server ID no longer exists"
msgstr ""

#: ../server/handlers/xmlrpc/queue.py:433
#, python-format
msgid "Invalid action value type %s (%s)"
msgstr ""

#: ../server/handlers/xmlrpc/queue.py:464
#, python-format
msgid "Action %s does not belong to server %s"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:194
msgid "Required data missing"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:198
msgid "Required members missing"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:207
msgid "Attempt to register a system to an invalid username"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:839
msgid "Invalid system release version requested"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1063
msgid ""
"Unable to find a valid network interface, both ipaddr and ip6addr not found."
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1115
#, python-brace-format
msgid "{PRODUCT_NAME} Welcome Message"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1125
msgid "Privacy Statement"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1146
msgid "Expected a dictionary as a product argument"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1374
#, python-format
msgid "Invalid value '%s' for %s (%s)"
msgstr ""

#: ../server/handlers/xmlrpc/scap.py:104
msgid "Invalid system_id/action_id pair."
msgstr ""

#: ../server/handlers/xmlrpc/up2date.py:233
#, python-format
msgid "Invalid value %s (%s)"
msgstr ""

#: ../server/importlib/userAuth.py:98
msgid "You are not authorized to manage packages in the null org"
msgstr ""

#: ../server/importlib/userAuth.py:103
#, python-format
msgid "You are not allowed to manage packages in the %s org"
msgstr ""

#: ../server/importlib/userAuth.py:121
msgid "You are not allowed to perform administrative tasks"
msgstr ""

#: ../server/importlib/userAuth.py:144
#, python-format
msgid ""
"You are not allowed to manage channel %s, or that channel does not exist"
msgstr ""

#: ../server/importlib/userAuth.py:204
#, python-format
msgid ""
"\n"
"               %s Account has been deactivated on this server.\n"
"               Please contact your Org administrator for more help."
msgstr ""

#: ../server/rhnChannel.py:1992
#, python-format
msgid ""
"Your account does not have access to any channels matching "
"(release='%(release)s', arch='%(arch)s')%(www_activation)s"
msgstr ""

#: ../server/rhnChannel.py:2002
msgid ""
"\n"
"If you have a registration number, please register with it first at http://"
"www.redhat.com/apps/activate/ and then try again.\n"
"\n"
msgstr ""

#: ../server/rhnChannel.py:2012
#, python-format
msgid "Insufficient subscription permissions for release (%s, %s"
msgstr ""

#. Various messages that can be reused
#.
#. bretm 02/07/2007 -- when we have better old-client documentation, probably
#. will be safe to get rid of all this crap
#: ../server/rhnChannel.py:2276 ../server/rhnChannel.py:2287
#: ../server/rhnChannel.py:2302
msgid "System Registered but Inactive"
msgstr ""

#: ../server/rhnChannel.py:2277
#, python-format
msgid ""
"\n"
"Invalid Architecture and OS release combination (%s, %s).\n"
"Your system has been registered, but will not receive updates\n"
"because it is not subscribed to a channel. If you have not yet\n"
"activated your product for service, please visit our website at:\n"
"\n"
"     http://www.redhat.com/apps/activate/\n"
"\n"
"...to activate your product."
msgstr ""

#: ../server/rhnChannel.py:2288
#, python-format
msgid ""
"\n"
"Invalid Architecture and OS release combination (%s, %s).\n"
"Your system has been registered, but will not receive updates\n"
"because it could not be subscribed to a base channel.\n"
"Please contact your organization administrator for assistance.\n"
msgstr ""

#: ../server/rhnChannel.py:2295
#, python-format
msgid ""
"\n"
"  This system has been successfully registered, but is not yet entitled\n"
"  to service.  To entitle this system to service, login to the web site at:\n"
"\n"
"  %(entitlement_url)s\n"
msgstr ""

#: ../server/rhnChannel.py:2303
#, python-format
msgid ""
"\n"
"  This system has been successfully registered, but no service entitlements\n"
"  were available.  To entitle this system to service, login to the web site "
"at:\n"
"\n"
"  %(entitlement_url)s\n"
msgstr ""

#: ../server/rhnHandler.py:62
msgid "Please run rhn_register as root on this client"
msgstr ""

#: ../server/rhnHandler.py:75
#, python-format
msgid "Service not enabled for system profile: \"%s\""
msgstr ""

#: ../server/rhnPackage.py:49 ../server/rhnPackage.py:87
#: ../server/rhnPackage.py:107 ../server/rhnPackage.py:158
#, python-format
msgid "Invalid RPM package %s requested"
msgstr ""

#: ../server/rhnPackage.py:112
msgid "Package not found"
msgstr ""

#: ../server/rhnServer/server_class.py:97
#, python-format
msgid "Architecture `%s' is not supported"
msgstr ""

#: ../server/rhnServer/server_token.py:78
#, python-format
msgid "Token `%s' has more than one base channel assigned"
msgstr ""

#: ../server/rhnServer/server_token.py:80
msgid "Conflicting base channels"
msgstr ""

#: ../server/rhnServer/server_token.py:190
#, python-format
msgid "Failed to add server to group %s"
msgstr ""

#: ../server/rhnServer/server_token.py:503
#, python-format
msgid "Maximum usage count of %s reached"
msgstr ""

#: ../server/rhnServer/server_token.py:744
msgid ""
"Stacking of re-registration tokens with different base entitlements is not "
"supported"
msgstr ""

#: ../server/rhnServer/server_token.py:811
#, python-format
msgid "Could not find token '%s'"
msgstr ""

#. Cannot use activation keys from different orgs
#: ../server/rhnServer/server_token.py:843
msgid "Tokens from mismatching orgs"
msgstr ""

#. Two tokens with different kickstart sessions
#: ../server/rhnServer/server_token.py:853
msgid "Kickstart session mismatch"
msgstr ""

#: ../server/rhnServer/server_token.py:877
msgid "Stacking of re-registration tokens is not supported"
msgstr ""

#: ../server/rhnUser.py:289 ../server/rhnUser.py:292
msgid "Invalid username/password combination"
msgstr ""

#. nope, not reserved either
#: ../server/rhnUser.py:467
#, python-format
msgid "Username `%s' has not been reserved"
msgstr ""

#. New accounts have to specify an e-mail address
#: ../server/rhnUser.py:473
msgid "E-mail address not specified"
msgstr ""

#: ../server/rhnUser.py:509
#, python-format
msgid "username should be at least %d characters"
msgstr ""

#: ../server/rhnUser.py:512
#, python-format
msgid "username should be less than %d characters"
msgstr ""

#: ../server/rhnUser.py:523
#, python-format
msgid "username = `%s', invalid character `%s'"
msgstr ""

#: ../server/rhnUser.py:542
#, python-format
msgid "Please limit your e-mail address to %s chars"
msgstr ""

#: ../server/rhnUser.py:623
#, python-format
msgid "password must be at least %d characters"
msgstr ""

#: ../server/rhnUser.py:626
#, python-format
msgid "Password must be shorter than %d characters"
msgstr ""

#: ../server/rhnUser.py:644
#, python-format
msgid "password contains character `%s'"
msgstr ""

#: ../server/rhnUser.py:651
#, python-format
msgid "username should be at least %d characters long"
msgstr ""

#: ../server/rhnUser.py:662
#, python-format
msgid "Cannot register usernames ending with %s"
msgstr ""

#. 0-999: Red Hat client/client-like interaction errors:
#: ../common/rhnException.py:53
msgid "This does not appear to be a valid username."
msgstr ""

#: ../common/rhnException.py:54
msgid "Invalid username and password combination."
msgstr ""

#: ../common/rhnException.py:55
msgid "This login is already taken, or the password is incorrect."
msgstr ""

#: ../common/rhnException.py:56
msgid "Permission denied."
msgstr ""

#: ../common/rhnException.py:57
msgid "Object not found."
msgstr ""

#: ../common/rhnException.py:58
msgid "Invalid System Digital ID."
msgstr ""

#: ../common/rhnException.py:59
msgid "Invalid System Credentials."
msgstr ""

#: ../common/rhnException.py:60
msgid "Could not retrieve user data from database."
msgstr ""

#: ../common/rhnException.py:61
msgid "Valid username required."
msgstr ""

#: ../common/rhnException.py:62
msgid "Valid password required."
msgstr ""

#: ../common/rhnException.py:63
msgid "Minimum username length violation."
msgstr ""

#: ../common/rhnException.py:64
msgid "Minimum password length violation."
msgstr ""

#: ../common/rhnException.py:65
msgid "The username contains invalid characters."
msgstr ""

#: ../common/rhnException.py:66
msgid "File not found."
msgstr ""

#: ../common/rhnException.py:67
msgid "Architecture and OS version combination is not supported."
msgstr ""

#: ../common/rhnException.py:68
msgid "Could not retrieve system data from database."
msgstr ""

#: ../common/rhnException.py:69
msgid "Invalid arguments passed to function."
msgstr ""

#: ../common/rhnException.py:70
msgid "Unable to retrieve requested entry."
msgstr ""

#: ../common/rhnException.py:71
msgid "Could not update database entry."
msgstr ""

#: ../common/rhnException.py:72
msgid "Unsupported server architecture."
msgstr ""

#: ../common/rhnException.py:73
#, python-format
msgid ""
"\n"
"     The anonymous server functionality is no longer available.\n"
"\n"
"     Please re-register this system by running mgr_register as root.\n"
"     Please visit https://%(hostname)s/rhn/systems/SystemEntitlements.do\n"
"     or login at https://%(hostname)s, and from the \"Overview\" tab,\n"
"     select \"Subscription Management\" to enable the service for this "
"system.\n"
"     "
msgstr ""

#: ../common/rhnException.py:81
msgid "Record not available in the database."
msgstr ""

#: ../common/rhnException.py:82
msgid "Invalid value for entry."
msgstr ""

#: ../common/rhnException.py:83
#, python-format
msgid ""
"\n"
"     This system does not have a valid entitlement for SUSE Manager.\n"
"     Please visit https://%(hostname)s/rhn/systems/SystemEntitlements.do\n"
"     or login at https://%(hostname)s, and from the \"Overview\" tab,\n"
"     select \"Subscription Management\" to enable the service for this "
"system.\n"
"     "
msgstr ""

#: ../common/rhnException.py:89
msgid "Channel error"
msgstr ""

#: ../common/rhnException.py:90
msgid "Client session token is invalid."
msgstr ""

#: ../common/rhnException.py:91
msgid "Client session token has expired."
msgstr ""

#: ../common/rhnException.py:92
msgid "You are not authorized to retrieve the requested object."
msgstr ""

#: ../common/rhnException.py:93
msgid "Invalid action"
msgstr ""

#: ../common/rhnException.py:94
msgid "You are not allowed to perform administrative tasks on this system."
msgstr ""

#: ../common/rhnException.py:96
msgid "The system is already subscribed to the specified channel."
msgstr ""

#: ../common/rhnException.py:97
msgid "The system is not currently subscribed to the specified channel."
msgstr ""

#: ../common/rhnException.py:98
msgid "The specified channel does not exist."
msgstr ""

#: ../common/rhnException.py:99
msgid "Invalid channel version."
msgstr ""

#: ../common/rhnException.py:100
msgid ""
"\n"
"     User group membership limits exceeded.\n"
"\n"
"     The current settings for your account do not allow you to add another\n"
"     user account. Please check with the organization administrator for "
"your\n"
"     account if the maximum number of users allowed to subscribe to server "
"needs\n"
"     to be changed.\n"
"     "
msgstr ""

#: ../common/rhnException.py:108
msgid ""
"\n"
"     System group membership limits exceeded.\n"
"\n"
"     The current settings for your account do not allow you to add another\n"
"     system profile. Please check with the organization administrator for "
"your\n"
"     account for modifying the maximum number of system profiles that can "
"be\n"
"     subscribed to your account.\n"
"     "
msgstr ""

#: ../common/rhnException.py:116
msgid ""
"\n"
"     Invalid architecture.\n"
"\n"
"     The architecture of the package is not supported by\n"
"     "
msgstr ""

#: ../common/rhnException.py:121
msgid "Invalid RPM header"
msgstr ""

#: ../common/rhnException.py:122
msgid ""
"\n"
"    This system is already registered as a Salt Minion. If you want to "
"register it as a traditional client\n"
"    please delete it first via the web UI or API and then register it using "
"the traditional tools.\n"
"    "
msgstr ""

#. For the uploading tools
#: ../common/rhnException.py:127
msgid "Invalid information uploaded to the server"
msgstr ""

#: ../common/rhnException.py:128
msgid "Error uploading network interfaces configuration."
msgstr ""

#: ../common/rhnException.py:129
msgid ""
"\n"
"     Package Upload Failed due to uniqueness constraint violation.\n"
"     Make sure the package does not have any duplicate dependencies or\n"
"     does not already exists on the server\n"
"     "
msgstr ""

#: ../common/rhnException.py:134
msgid ""
"\n"
"     The --force rhnpush option is disabled on this server.\n"
"     Please contact your SUSE Manager administrator for more help.\n"
"     "
msgstr ""

#. 60-70: token errors
#: ../common/rhnException.py:140
msgid ""
"\n"
"     The activation token specified could not be found on the server.\n"
"     Please retry with a valid key.\n"
"     "
msgstr ""

#: ../common/rhnException.py:144
msgid "Too many systems registered using this registration token"
msgstr ""

#: ../common/rhnException.py:145
msgid "Token contains invalid, obsoleted or insufficient settings"
msgstr ""

#: ../common/rhnException.py:146
msgid "Conflicting activation tokens"
msgstr ""

#. 70-80: channel subscription errors
#: ../common/rhnException.py:149
msgid ""
"\n"
"     No matching base channel found for your system.\n"
"     "
msgstr ""

#: ../common/rhnException.py:152
msgid ""
"\n"
"     You do not have subscription permission to the designated channel.\n"
"     Please refer to your organization's channel or organization\n"
"     administrators for further details.\n"
"     "
msgstr ""

#: ../common/rhnException.py:157
msgid "You can not unsubscribe from base channel."
msgstr ""

#: ../common/rhnException.py:158
msgid "SUSE Manager or Proxy channel can not be subscribed."
msgstr ""

#. 80-90: server group errors
#: ../common/rhnException.py:161
msgid "There was an error while trying to join the system to its groups"
msgstr ""

#. 90-100: entitlement errors
#: ../common/rhnException.py:164
msgid "Unable to entitle system"
msgstr ""

#. 100-109: e-mail and uuid related faults
#: ../common/rhnException.py:167
msgid "Maximum e-mail length violation."
msgstr ""

#: ../common/rhnException.py:168
msgid "This system has been previously registered."
msgstr ""

#: ../common/rhnException.py:169
msgid "Invalid username"
msgstr ""

#. 140-159 applet errors
#: ../common/rhnException.py:172
msgid "Unable to look up server"
msgstr ""

#. 160-179: OSAD errors
#: ../common/rhnException.py:175
msgid "Required argument is missing"
msgstr ""

#. 600-699: RHEL5+ EN errors
#: ../common/rhnException.py:178
msgid "No entitlement information tied to hardware"
msgstr ""

#: ../common/rhnException.py:179
msgid "Installation number is not entitling"
msgstr ""

#. 700-799: Additional user input verification errors.
#: ../common/rhnException.py:182
msgid "Maximum username length violation"
msgstr ""

#: ../common/rhnException.py:183
msgid "Maximum password length violation"
msgstr ""

#: ../common/rhnException.py:184
msgid "This user has read only API access. Action denied."
msgstr ""

#: ../common/rhnException.py:186
msgid "System Name cannot be less than 1 character"
msgstr ""

#. 1000-1999: Proxy specific errors:
#. issued by a Proxy to the client
#: ../common/rhnException.py:190
msgid "SUSE Manager Proxy error."
msgstr ""

#: ../common/rhnException.py:191
msgid "SUSE Manager Proxy unable to login."
msgstr ""

#. issued by a SUSE Manager Server/Satellite to the proxy
#: ../common/rhnException.py:193
msgid ""
"\n"
"     SUSE Manager Proxy system ID does not match a Spacewalk Proxy Server\n"
"     in the database.\n"
"     "
msgstr ""

#: ../common/rhnException.py:197
msgid "SUSE Manager Proxy session token is invalid."
msgstr ""

#: ../common/rhnException.py:198
msgid "SUSE Manager Proxy session token has expired."
msgstr ""

#. 2000-2999: Red Hat Satellite specific errors:
#: ../common/rhnException.py:202
msgid ""
"\n"
"      user creation is not allowed via mgr_register;\n"
"     please contact your sysadmin to have your account created.\n"
"     "
msgstr ""

#: ../common/rhnException.py:206
msgid ""
"\n"
"     This SUSE Manager server is not allowed to use Inter Server Sync on "
"this server\n"
"     "
msgstr ""

#: ../common/rhnException.py:209
msgid ""
"\n"
"     Inter Server Sync is disabled on this SUSE Manager Server.\n"
"     "
msgstr ""

#. 3000-3999: XML dumper errors:
#: ../common/rhnException.py:214
msgid "Invalid datatype passed"
msgstr ""

#: ../common/rhnException.py:215
msgid "Unable to retrieve channel"
msgstr ""

#: ../common/rhnException.py:216
msgid "Unable to retrieve package"
msgstr ""

#: ../common/rhnException.py:217
msgid "Unable to retrieve erratum"
msgstr ""

#: ../common/rhnException.py:218
msgid "File is missing"
msgstr ""

#: ../common/rhnException.py:219
msgid "Function retrieval error"
msgstr ""

#: ../common/rhnException.py:220
msgid "Function execution error"
msgstr ""

#: ../common/rhnException.py:221
msgid "Missing version string"
msgstr ""

#: ../common/rhnException.py:222
msgid "Invalid version string"
msgstr ""

#: ../common/rhnException.py:223
msgid "Mismatching versions"
msgstr ""

#: ../common/rhnException.py:224
msgid "Invalid channel version"
msgstr ""

#: ../common/rhnException.py:225
msgid "No comps file for channel"
msgstr ""

#: ../common/rhnException.py:226
msgid "Unable to retrieve comps file"
msgstr ""

#. 4000 - 4999: config management errors
#: ../common/rhnException.py:229
msgid "Configuration action missing"
msgstr ""

#: ../common/rhnException.py:230
msgid "File too large"
msgstr ""

#: ../common/rhnException.py:231
msgid "File contains binary data"
msgstr ""

#: ../common/rhnException.py:232
msgid "Configuration channel is not empty"
msgstr ""

#: ../common/rhnException.py:233
msgid "Permission error"
msgstr ""

#: ../common/rhnException.py:234
msgid "Content missing for configuration file"
msgstr ""

#: ../common/rhnException.py:235
msgid "Template delimiters not specified"
msgstr ""

#: ../common/rhnException.py:236
msgid "Configuration channel does not exist"
msgstr ""

#: ../common/rhnException.py:237
msgid "Configuration channel already exists"
msgstr ""

#: ../common/rhnException.py:238
msgid "File missing from configuration channel"
msgstr ""

#: ../common/rhnException.py:239
msgid "Different revision of this file is uploaded"
msgstr ""

#: ../common/rhnException.py:240
msgid "File already uploaded to configuration channel"
msgstr ""

#: ../common/rhnException.py:241
msgid "File size exceeds remaining quota space"
msgstr ""

#: ../common/rhnException.py:242
msgid "Full path of file must be specified"
msgstr ""

#: ../common/rhnException.py:243
msgid "Invalid revision number"
msgstr ""

#: ../common/rhnException.py:244
msgid "Cannot compare files of different file type"
msgstr ""

#. 5000 - 5999: client content uploading errors
#. 5000 - 5099: crash reporting errors
#: ../common/rhnException.py:248
msgid "Crash information is invalid or incomplete"
msgstr ""

#: ../common/rhnException.py:249
msgid "Crash file information is invalid or incomplete"
msgstr ""

#: ../common/rhnException.py:250
msgid "Error composing crash directory path"
msgstr ""

#: ../common/rhnException.py:251
msgid "Error composing crash file path"
msgstr ""

#: ../common/rhnException.py:252 ../common/rhnException.py:259
msgid "Invalid content encoding"
msgstr ""

#: ../common/rhnException.py:253
msgid "Invalid crash name"
msgstr ""

#: ../common/rhnException.py:254
msgid "Crash reporting is disabled for this organization"
msgstr ""

#. 5100 - 5199: scap results reporting error
#: ../common/rhnException.py:256
msgid "SCAP results file transfer is invalid or incomplete"
msgstr ""

#: ../common/rhnException.py:257
msgid "Error composing directory path for detailed SCAP results"
msgstr ""

#: ../common/rhnException.py:258
msgid "Error composing file path for detailed SCAP results"
msgstr ""

#: ../common/rhnException.py:306
msgid ""
"\n"
"     An error has occurred while processing your request. If this problem\n"
"     persists please enter a bug report at scc.suse.com.\n"
"     If you choose to submit the bug report, please be sure to include\n"
"     details of what you were trying to do when this error occurred and\n"
"     details on how to reproduce this problem.\n"
msgstr ""

#: ../common/rhnException.py:358
#, python-format
msgid ""
"Error Message:\n"
"    %s\n"
msgstr ""

#: ../common/rhnException.py:360
#, python-format
msgid "Error Class Code: %s\n"
msgstr ""

#: ../common/rhnException.py:363
#, python-format
msgid "Error Class Info: %s\n"
msgstr ""

#: ../common/rhnException.py:365
#, python-format
msgid "Explanation: %s"
msgstr ""

#: ../common/rhnTB.py:205
#, python-format
msgid "ERROR: %s %s: %s"
msgstr ""

#: ../common/rhnTB.py:207
#, python-format
msgid "TRACEBACK: %s"
msgstr ""

#: ../satellite_tools/disk_dumper/iss.py:1294
#: ../satellite_tools/disk_dumper/iss.py:1298
#, python-format
msgid "format of %s should be at least YYYYMMDD.\n"
msgstr ""

#: ../satellite_tools/messages.py:26
#, python-format
msgid ""
"\n"
"ERROR: executing step %s. Error is:\n"
"%s\n"
msgstr ""

#: ../satellite_tools/messages.py:31
#, python-format
msgid ""
"\n"
"ERROR: there was a problem accessing the channel data from your temporary\n"
"       repository. Did you migrate all of the data from the channel ISOs\n"
"       do this directory? If so, please recheck the channels ISOs, ensure\n"
"       that you have them all, and then iteratively remount and repopulate\n"
"       the temporary repository (%s).\n"
msgstr ""

#: ../satellite_tools/messages.py:39
#, python-format
msgid ""
"\n"
"ERROR: there was a problem synchronizing the information.\n"
"       Error message: %s\n"
msgstr ""

#: ../satellite_tools/messages.py:44
#, python-format
msgid ""
"\n"
"ERROR: There was a problem communicating with the ISS Master.\n"
"       Depending on the specific error details, please review your "
"configuration,\n"
"       basic network connectivity, and/or name resolution, and try again.\n"
"       Error message: %s\n"
msgstr ""

#: ../satellite_tools/messages.py:51
#, python-format
msgid ""
"\n"
"ERROR: There was a problem communicating with the ISS Master.\n"
"       If the master satellite is older than v5.3, it does not have ISS "
"capability.\n"
"       Otherwise, depending on the specific error details, please review "
"your\n"
"       configuration, basic network connectivity, and/or name resolution, "
"and try again.\n"
"       Error message: %s\n"
msgstr ""

#: ../satellite_tools/messages.py:59
#, python-format
msgid ""
"\n"
"ERROR: a child-channel cannot be synced without its parent being synced as\n"
"       well. A parent needs to be either (a) previously synced or (b) "
"synced\n"
"       in tandem with the desired child-channel. Missing parents for this\n"
"       transaction:\n"
"       %s\n"
msgstr ""

#: ../satellite_tools/messages.py:67
#, python-format
msgid ""
"\n"
"ERROR: you are not entitled to sync a channel in this set of channels.\n"
"Please contact your SUSE Manager contact\n"
"%s"
msgstr ""

#: ../satellite_tools/messages.py:72
#, python-format
msgid "  ERROR: not enough free space (%s KB) on device."
msgstr ""

#: ../satellite_tools/messages.py:74
#, python-format
msgid "    %3d/%s Fetch successful: %s (%s bytes)"
msgstr ""

#: ../satellite_tools/messages.py:75
#, python-format
msgid "    Extinct package:  %s"
msgstr ""

#: ../satellite_tools/messages.py:76
#, python-format
msgid "   Total size: %s"
msgstr ""

#: ../satellite_tools/messages.py:77
#, python-format
msgid "      Downloaded %s of %s. Estimated remaining time: %s"
msgstr ""

#: ../satellite_tools/messages.py:78
#, python-format
msgid "    Fetch unsuccessful: %s"
msgstr ""

#: ../satellite_tools/messages.py:79
#, python-format
msgid "   RPM fetch summary: %s"
msgstr ""

#: ../satellite_tools/messages.py:80
#, python-format
msgid "       success: %d"
msgstr ""

#: ../satellite_tools/messages.py:81
#, python-format
msgid "       failed:  %d"
msgstr ""

#: ../satellite_tools/messages.py:82
#, python-format
msgid "       extinct: %d"
msgstr ""

#: ../satellite_tools/messages.py:84
#, python-format
msgid "   Retrieving / parsing *relevant* package metadata: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:85
#, python-format
msgid "   Retrieving / parsing errata data: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:86
#, python-format
msgid "   Retrieving / parsing kickstart data: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:87
#, python-format
msgid "   Retrieving / parsing kickstart tree files: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:88
#, python-format
msgid "   Importing *relevant* package metadata: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:89
msgid "   * WARNING: this may be a slow process."
msgstr ""

#: ../satellite_tools/messages.py:90
msgid "Linking packages to channels"
msgstr ""

#: ../satellite_tools/messages.py:91
#, python-format
msgid "   Importing *relevant* errata: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:92
msgid "   No new kickstartable tree to import"
msgstr ""

#: ../satellite_tools/messages.py:93
#, python-format
msgid "Importing kickstartable trees (%d)"
msgstr ""

#: ../satellite_tools/messages.py:94
#, python-format
msgid "Imported kickstartable trees (%d)"
msgstr ""

#: ../satellite_tools/reposync.py:111 ../satellite_tools/satsync.py:439
msgid "+++ sending log as an email +++"
msgstr ""

#: ../satellite_tools/reposync.py:114
#, python-format
msgid "%s sync. report from %s"
msgstr ""

#: ../satellite_tools/reposync.py:124 ../satellite_tools/satsync.py:449
msgid "+++ email requested, but there is nothing to send +++"
msgstr ""

#: ../satellite_tools/rhn_satellite_activate.py:198
#, python-format
msgid ""
"\"%s\" (specified in commandline)\n"
"could not be opened and read:\n"
"%s"
msgstr ""

#: ../satellite_tools/rhn_satellite_activate.py:205
#, python-format
msgid ""
"\"%s\" could not be opened\n"
"and/or written to:\n"
"%s"
msgstr ""

#: ../satellite_tools/satsync.py:258
#, python-format
msgid "No handler for step %s"
msgstr ""

#. Try one more time - this time it should be faster since
#. everything should be cached
#: ../satellite_tools/satsync.py:270
msgid "Environment changed, trying again..."
msgstr ""

#: ../satellite_tools/satsync.py:277
msgid "ERROR: Encountered IntegrityError: \n"
msgstr ""

#: ../satellite_tools/satsync.py:285
msgid "Repeated failures"
msgstr ""

#: ../satellite_tools/satsync.py:290
#, python-format
msgid ""
"    Import complete:\n"
"        Begin time: %s\n"
"        End time:   %s\n"
"        Elapsed:    %s\n"
"          "
msgstr ""

#: ../satellite_tools/satsync.py:311
msgid "hours"
msgstr ""

#: ../satellite_tools/satsync.py:311
msgid "minutes"
msgstr ""

#: ../satellite_tools/satsync.py:311
msgid "seconds"
msgstr ""

#: ../satellite_tools/satsync.py:357
msgid ""
"ERROR: The dump is missing package data, use --no-rpms to skip this step or "
"fix the content to include package data."
msgstr ""

#. the orgs() method doesn't exist; that's fine we just
#. won't sync the orgs
#: ../satellite_tools/satsync.py:404
msgid "The SUSE Manager master does not support syncing orgs data."
msgstr ""

#: ../satellite_tools/satsync.py:404
msgid "Skipping..."
msgstr ""

#: ../satellite_tools/satsync.py:442
#, python-format
msgid "SUSE Manager Inter Server sync. report from %s"
msgstr ""

#: ../satellite_tools/satsync.py:521
msgid " - file-system synchronization"
msgstr ""

#: ../satellite_tools/satsync.py:533 ../satellite_tools/satsync.py:541
msgid " - live synchronization"
msgstr ""

#: ../satellite_tools/satsync.py:534
#, python-brace-format
msgid ""
"ERROR: Live content synchronizing with RHN Classic Hosted is no longer "
"supported.\n"
"Please use the cdn-sync command instead unless you are attempting to sync "
"from another {PRODUCT_NAME} via Inter-Server-Sync (ISS), or from local "
"content on disk via Channel Dump ISOs."
msgstr ""

#: ../satellite_tools/satsync.py:542
#, python-format
msgid "   url: %s"
msgstr ""

#: ../satellite_tools/satsync.py:543
#, python-format
msgid "   debug/output level: %s"
msgstr ""

#: ../satellite_tools/satsync.py:553
msgid "ERROR: this server must be registered with SUSE Manager."
msgstr ""

#: ../satellite_tools/satsync.py:575
#, python-format
msgid "Retrieving / parsing %s data"
msgstr ""

#: ../satellite_tools/satsync.py:585 ../satellite_tools/satsync.py:600
msgid "*** SYSTEM INTERRUPT CALLED ***"
msgstr ""

#: ../satellite_tools/satsync.py:593
msgid "ERROR: fatal parser exception occurred "
msgstr ""

#: ../satellite_tools/satsync.py:594
#, python-format
msgid "(line: %s, col: %s msg: %s)"
msgstr ""

#: ../satellite_tools/satsync.py:598
#, python-format
msgid "ERROR: parser exception occurred: %s"
msgstr ""

#: ../satellite_tools/satsync.py:603
msgid "ERROR: exception (during parse) occurred: "
msgstr ""

#: ../satellite_tools/satsync.py:604
#, python-format
msgid ""
"   Encountered some errors with %s data (see logs (%s) for more information)"
msgstr ""

#: ../satellite_tools/satsync.py:606
#, python-format
msgid "   Encountered some errors with %s data:"
msgstr ""

#: ../satellite_tools/satsync.py:607
#, python-format
msgid "   ------- %s PARSE/IMPORT ERROR -------"
msgstr ""

#: ../satellite_tools/satsync.py:609
msgid "   ---------------------------------------"
msgstr ""

#: ../satellite_tools/satsync.py:612
#, python-format
msgid "%s data complete"
msgstr ""

#: ../satellite_tools/satsync.py:665
msgid "Retrieving / parsing channel data"
msgstr ""

#: ../satellite_tools/satsync.py:718
msgid "Channel data complete"
msgstr ""

#: ../satellite_tools/satsync.py:736
#, python-format
msgid "%10s import from %s"
msgstr ""

#: ../satellite_tools/satsync.py:739
#, python-format
msgid "%10s import from %s - %s"
msgstr ""

#: ../satellite_tools/satsync.py:743
#, python-format
msgid "%10s"
msgstr ""

#: ../satellite_tools/satsync.py:750
msgid "p"
msgstr ""

#: ../satellite_tools/satsync.py:752
msgid "."
msgstr ""

#: ../satellite_tools/satsync.py:758
msgid "   p = previously imported/synced channel"
msgstr ""

#: ../satellite_tools/satsync.py:759
msgid "   . = channel not yet imported/synced"
msgstr ""

#: ../satellite_tools/satsync.py:765
msgid "   e = channel no longer supported (end-of-service)"
msgstr ""

#: ../satellite_tools/satsync.py:767
msgid "   ? = channel label invalid --- typo?"
msgstr ""

#: ../satellite_tools/satsync.py:771
#, python-format
msgid "   %s:"
msgstr ""

#: ../satellite_tools/satsync.py:772
#, python-format
msgid "      %s %-40s %4s %s"
msgstr ""

#: ../satellite_tools/satsync.py:773
msgid "base-channels"
msgstr ""

#: ../satellite_tools/satsync.py:786 ../satellite_tools/satsync.py:1603
msgid "NONE RELEVANT"
msgstr ""

#: ../satellite_tools/satsync.py:808
msgid "end-of-service"
msgstr ""

#: ../satellite_tools/satsync.py:809
msgid "e"
msgstr ""

#: ../satellite_tools/satsync.py:815
msgid "   typos:"
msgstr ""

#: ../satellite_tools/satsync.py:816
msgid "?"
msgstr ""

#: ../satellite_tools/satsync.py:831
#, python-format
msgid "XXX: imported channels: %s"
msgstr ""

#: ../satellite_tools/satsync.py:832
#, python-format
msgid "XXX:   cached channels: %s"
msgstr ""

#: ../satellite_tools/satsync.py:837
msgid "XXX: list channels called"
msgstr ""

#: ../satellite_tools/satsync.py:855
msgid "ERROR: these channels either do not exist or are not available:"
msgstr ""

#: ../satellite_tools/satsync.py:859
#, python-format
msgid "       (to see a list of channel labels: %s --list-channels)"
msgstr ""

#: ../satellite_tools/satsync.py:904
#, python-format
msgid "   Retrieving / parsing short package metadata: %s (%s)"
msgstr ""

#: ../satellite_tools/satsync.py:965
#, python-format
msgid "Diffing package metadata (what's missing locally?): %s"
msgstr ""

#: ../satellite_tools/satsync.py:971 ../satellite_tools/satsync.py:1254
msgid "Diffing:    "
msgstr ""

#: ../satellite_tools/satsync.py:988
msgid "ERROR: incremental dump skipped"
msgstr ""

#: ../satellite_tools/satsync.py:1079
msgid "Downloading rpm packages"
msgstr ""

#: ../satellite_tools/satsync.py:1084
#, python-format
msgid "   Fetching any missing RPMs: %s (%s)"
msgstr ""

#: ../satellite_tools/satsync.py:1085 ../satellite_tools/satsync.py:1153
msgid "NONE MISSING"
msgstr ""

#: ../satellite_tools/satsync.py:1094
msgid "Processing rpm packages complete"
msgstr ""

#: ../satellite_tools/satsync.py:1121
msgid "Downloading package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1146
msgid "Downloading srpm packages"
msgstr ""

#: ../satellite_tools/satsync.py:1152
#, python-format
msgid "   Fetching any missing SRPMs: %s (%s)"
msgstr ""

#: ../satellite_tools/satsync.py:1249
#, python-format
msgid "Diffing source package metadata (what's missing locally?): %s"
msgstr ""

#: ../satellite_tools/satsync.py:1260
msgid "Downloading source package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1338 ../satellite_tools/satsync.py:2027
#, python-format
msgid "Unable to save file %s: %s"
msgstr ""

#. for
#. Retried a number of times and it still failed; log the
#. file as being failed and move on
#: ../satellite_tools/satsync.py:1345
#, python-format
msgid "Failed to fetch file %s"
msgstr ""

#: ../satellite_tools/satsync.py:1350
msgid "Downloading kickstartable trees metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1365
msgid "Downloading kickstartable trees files"
msgstr ""

#: ../satellite_tools/satsync.py:1504
#, python-format
msgid "Grabbing all patches for channel %s"
msgstr ""

#: ../satellite_tools/satsync.py:1554
msgid "Downloading patch data"
msgstr ""

#: ../satellite_tools/satsync.py:1556
msgid "Forcing download of all patch data for requested channels."
msgstr ""

#: ../satellite_tools/satsync.py:1571
msgid "Downloading patch data complete"
msgstr ""

#: ../satellite_tools/satsync.py:1576 ../satellite_tools/satsync.py:1597
msgid "Downloading:"
msgstr ""

#: ../satellite_tools/satsync.py:1579
msgid " - complete"
msgstr ""

#: ../satellite_tools/satsync.py:1624
msgid "Importing source package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1627
msgid "Importing package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1635
msgid "Importing:  "
msgstr ""

#. not in the cache
#: ../satellite_tools/satsync.py:1703
msgid ""
"Package Not Found in Cache, Clear the Cache "
"to                                  Regenerate it."
msgstr ""

#: ../satellite_tools/satsync.py:1709
msgid "Importing channel patches"
msgstr ""

#: ../satellite_tools/satsync.py:1714
#, python-format
msgid "Importing %s patches for channel %s."
msgstr ""

#. Incomplete configuration
#: ../satellite_tools/satsync.py:2113
msgid "ERROR: server.mount_point not set in the configuration file"
msgstr ""

#: ../satellite_tools/satsync.py:2117
#, python-format
msgid "ERROR: server.mount_point %s do not exist"
msgstr ""

#: ../satellite_tools/satsync.py:2122
#, python-format
msgid "ERROR: path under server.mount_point (%s)  do not exist"
msgstr ""

#: ../satellite_tools/satsync.py:2199
#, python-format
msgid "Commandline: %s"
msgstr ""

#: ../satellite_tools/satsync.py:2202
#, python-format
msgid ""
"DEBUG ONLY: max. batch-size for XML/database-import processing (1..%s).\"man "
"satellite-sync\" for more information."
msgstr ""

#: ../satellite_tools/satsync.py:2205
msgid "alternative SSL CA Cert (fullpath to cert file)"
msgstr ""

#: ../satellite_tools/satsync.py:2207
msgid "process data for this channel only"
msgstr ""

#: ../satellite_tools/satsync.py:2209
msgid ""
"disk dump will be considered to be a full export; see \"man satellite-sync\" "
"for more information."
msgstr ""

#: ../satellite_tools/satsync.py:2212
msgid "existing custom channels will also be synced (unless -c is used)"
msgstr ""

#: ../satellite_tools/satsync.py:2214
#, python-format
msgid ""
"override debug level set in /etc/rhn/rhn.conf (which is currently set at %s)."
msgstr ""

#: ../satellite_tools/satsync.py:2216
#, python-format
msgid "requested version of XML dump (default: %s)"
msgstr ""

#: ../satellite_tools/satsync.py:2218
msgid "e-mail a report of what was synced/imported"
msgstr ""

#: ../satellite_tools/satsync.py:2220
msgid "forcibly process all (not a diff of) patch metadata"
msgstr ""

#: ../satellite_tools/satsync.py:2222
msgid "Do not use an http proxy under any circumstances."
msgstr ""

#: ../satellite_tools/satsync.py:2224
msgid "alternative http proxy (hostname:port)"
msgstr ""

#: ../satellite_tools/satsync.py:2226
msgid "alternative http proxy username"
msgstr ""

#: ../satellite_tools/satsync.py:2228
msgid "alternative http proxy password"
msgstr ""

#: ../satellite_tools/satsync.py:2230
msgid "parent SUSE Manager to import content from"
msgstr ""

#: ../satellite_tools/satsync.py:2232
msgid "list all available channels and exit"
msgstr ""

#: ../satellite_tools/satsync.py:2234
msgid "help on all error codes mgr-inter-sync returns"
msgstr ""

#: ../satellite_tools/satsync.py:2236
msgid "source mount point for import - disk update only"
msgstr ""

#: ../satellite_tools/satsync.py:2238
msgid "do not process patch data"
msgstr ""

#: ../satellite_tools/satsync.py:2240
msgid "do not process kickstart data (provisioning only)"
msgstr ""

#: ../satellite_tools/satsync.py:2242
msgid "do not process full package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:2244
msgid "do not download, or process any RPMs"
msgstr ""

#: ../satellite_tools/satsync.py:2246
msgid "turn off SSL (not recommended)"
msgstr ""

#: ../satellite_tools/satsync.py:2248
msgid "org to which the sync imports data. defaults to the admin account"
msgstr ""

#: ../satellite_tools/satsync.py:2250
msgid "print the configuration and exit"
msgstr ""

#: ../satellite_tools/satsync.py:2252
msgid "alternative server with which to connect (hostname)"
msgstr ""

#: ../satellite_tools/satsync.py:2254
msgid "synchronize to this step (man satellite-sync for more info)"
msgstr ""

#: ../satellite_tools/satsync.py:2256
msgid "write complete data to tempfile before streaming to remainder of app"
msgstr ""

#: ../satellite_tools/satsync.py:2258
msgid "DEBUG ONLY: alternative path to digital system id"
msgstr ""

#: ../satellite_tools/satsync.py:2260
msgid "alternative email address(es) for sync output (--email option)"
msgstr ""

#: ../satellite_tools/satsync.py:2262
msgid "do not remove rpms when importing from local dump"
msgstr ""

#: ../satellite_tools/satsync.py:2264
msgid ""
"the fully qualified domain name of the master Satellite. Valid with --mount-"
"point only. Required if you want to import org data and channel permissions."
msgstr ""

#: ../satellite_tools/satsync.py:2274
#, python-format
msgid "ERROR: these arguments make no sense in this context (try --help): %s"
msgstr ""

#. An SQL error is fatal... crash and burn
#: ../satellite_tools/satsync.py:2286
#, python-format
msgid "ERROR: Can't connect to the database: %s"
msgstr ""

#: ../satellite_tools/satsync.py:2287
msgid "ERROR: Check if your database is running."
msgstr ""

#: ../satellite_tools/satsync.py:2322
#, python-format
msgid "ERROR: --debug-level takes an in integer value within the range %s."
msgstr ""

#: ../satellite_tools/satsync.py:2324
msgid "  0  - little logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2325
msgid "  1  - minimal logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2326
msgid "  2  - normal level of logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2327
msgid "  3  - lots of logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2328
msgid "  4+ - excessive logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2341
msgid "ERROR: The --master option is only valid with the --mount-point option"
msgstr ""

#: ../satellite_tools/satsync.py:2351
#, python-format
msgid "ERROR: Unable to lookup Org Id %s"
msgstr ""

#: ../satellite_tools/satsync.py:2360
msgid ""
"WARNING: --list-channels option overrides any --step option. --step ignored."
msgstr ""

#: ../satellite_tools/satsync.py:2375
#, python-format
msgid ""
"ERROR: '%s' is not a valid step. See 'man mgr-inter-sync' for more detail."
msgstr ""

#: ../satellite_tools/satsync.py:2407
msgid ""
"ERROR: No channels currently imported; try mgr-inter-sync --list-channels; "
"then mgr-inter-sync -c chn0 -c chn1..."
msgstr ""

#. int(None) --> TypeError
#. int('a')  --> ValueError
#: ../satellite_tools/satsync.py:2457 ../satellite_tools/satsync.py:2461
msgid "ERROR: --batch-size must have a value within the range: 1..50"
msgstr ""

#: ../satellite_tools/satsync.py:2469
#, python-format
msgid "ERROR: no such directory %s"
msgstr ""

#: ../satellite_tools/satsync.py:2474
msgid "Error Codes: Returned codes means:"
msgstr ""

#: ../satellite_tools/satsync.py:2475
msgid " -1  - Could not lock file or KeyboardInterrupt or SystemExit"
msgstr ""

#: ../satellite_tools/satsync.py:2476
msgid "  0  - User interrupted or intentional exit"
msgstr ""

#: ../satellite_tools/satsync.py:2477
msgid "  1  - attempting to run more than one instance of mgr-inter-sync."
msgstr ""

#: ../satellite_tools/satsync.py:2478
msgid "  2  - Unable to find synchronization tools."
msgstr ""

#: ../satellite_tools/satsync.py:2479
msgid "  3  - a general socket exception occurred"
msgstr ""

#: ../satellite_tools/satsync.py:2480
msgid "  4  - an SSL error occurred. Recheck your SSL settings."
msgstr ""

#: ../satellite_tools/satsync.py:2481
msgid "  5  - ISS error"
msgstr ""

#: ../satellite_tools/satsync.py:2482
msgid "  6  - unhandled exception occurred"
msgstr ""

#: ../satellite_tools/satsync.py:2483
msgid "  7  - unknown sync error"
msgstr ""

#: ../satellite_tools/satsync.py:2484
msgid "  8  - ERROR: must be root to execute"
msgstr ""

#: ../satellite_tools/satsync.py:2485
msgid "  9  - rpclib fault during synchronization init"
msgstr ""

#: ../satellite_tools/satsync.py:2486
msgid "  10 - synchronization init error"
msgstr ""

#: ../satellite_tools/satsync.py:2487
msgid "  11 - Error parsing XML stream"
msgstr ""

#: ../satellite_tools/satsync.py:2488
msgid "  12 - Channel do not exist"
msgstr ""

#: ../satellite_tools/satsync.py:2489
msgid "  13 - SQL error during importing package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:2490
msgid "  14 - SQL error during linking channel packages"
msgstr ""

#: ../satellite_tools/satsync.py:2491
msgid "  15 - SQL error during xml processing"
msgstr ""

#: ../satellite_tools/satsync.py:2492
msgid "  16 - server.mount_point not set in the configuration file"
msgstr ""

#: ../satellite_tools/satsync.py:2493
msgid ""
"  17 - SQL error during retrieving the channels already imported in the SUSE "
"Manager database"
msgstr ""

#: ../satellite_tools/satsync.py:2494
msgid "  18 - Wrong db connection string in rhn.conf"
msgstr ""

#: ../satellite_tools/satsync.py:2495
msgid "  19 - Bad arguments"
msgstr ""

#: ../satellite_tools/satsync.py:2496
msgid "  20 - Could not connect to db."
msgstr ""

#: ../satellite_tools/satsync.py:2497
msgid "  21 - Bad debug level"
msgstr ""

#: ../satellite_tools/satsync.py:2498
msgid "  22 - Not valid step"
msgstr ""

#: ../satellite_tools/satsync.py:2499
msgid "  24 - no such file"
msgstr ""

#: ../satellite_tools/satsync.py:2500
msgid "  25 - no such directory"
msgstr ""

#: ../satellite_tools/satsync.py:2501
msgid "  26 - mount_point does not exist"
msgstr ""

#: ../satellite_tools/satsync.py:2502
msgid "  27 - No such org"
msgstr ""

#: ../satellite_tools/satsync.py:2503
msgid "  28 - error: --master is only valid with --mount-point"
msgstr ""

#: ../satellite_tools/satsync.py:2510
#, python-format
msgid "ERROR: unknown dump version, try one of %s"
msgstr ""
   0707010000006A000081B40000000000000000000000016290A0C10000ED9F000000000000000000000000000000000000001B00000000spacewalk-backend/po/es.po    # SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
#
# Translators:
# David Barzilay <barzilay@redhat.com>, 2004.
#  <ehespinosa@ya.com>, 2013.
# Gladys Guerrero <gguerrer@redhat.com>, 2010.
# Luis Mayoral <mayoral@linuxadicto.org>, 2003.
# Manuel Ospina <mospina@redhat.com>, 2005, 2006, 2007.
# Nuria Soriano <nsoriano@redhat.es>, 2001.
# Yelitza Louze <ylouze@redhat.com>, 2004.
# Jiri Dostal <jdostal@redhat.com>, 2018. #zanata
msgid ""
msgstr ""
"Project-Id-Version: Spacewalk\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-10-16 13:34+0200\n"
"PO-Revision-Date: 2020-10-15 19:49+0000\n"
"Last-Translator: Pau Garcia Quiles <pau.garcia@suse.com>\n"
"Language-Team: Spanish <https://l10n.opensuse.org/projects/uyuni/backend/es/"
">\n"
"Language: es\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 3.6.1\n"

#: ../server/apacheAuth.py:66
#, python-format
msgid "incomplete proxy authentication token: %s"
msgstr "ficha de autenticaciÃ³n en proxy incompleta: %s"

#: ../server/apacheAuth.py:84
#, python-format
msgid "Sent proxy signature %s does not match ours %s."
msgstr "Enviada firma de proxy %s no coincide con la nuestra %s."

#: ../server/apacheAuth.py:119
msgid "declined proxy authentication"
msgstr "autenticaciÃ³n de proxy declinada"

#: ../server/apacheRequest.py:59
#, python-format
msgid "Invalid request received (%s)."
msgstr "PeticiÃ³n no vÃ¡lida recibida (%s)"

#: ../server/apacheRequest.py:120
#, python-format
msgid ""
"IMPORTANT MESSAGE FOLLOWS:\n"
"%s"
msgstr "SIGUE MENSAJE IMPORTANTE: %s"

#: ../server/apacheRequest.py:149
#, python-format
msgid ""
"While running '%s': caught\n"
"%s : %s\n"
msgstr "Mientras corre â€˜%sâ€™: capturado %s : %s\n"

#: ../server/apacheRequest.py:606
#, python-format
msgid "Invalid URI %s"
msgstr "URI no vÃ¡lido %s"

#: ../server/configFilesHandler.py:129 ../server/handlers/app/packages.py:192
#: ../server/handlers/xmlrpc/registration.py:215
#: ../server/handlers/xmlrpc/registration.py:1168
#: ../server/handlers/xmlrpc/registration.py:1307
#, python-format
msgid ""
"\n"
"                   %s Account has been deactivated on this server.\n"
"                   Please contact your Org administrator for more help."
msgstr ""
"\n"
"                   %s La cuenta ha sido desactivada en este servidor. \n"
"                   Por favor contacte con el administrador de su "
"organizaciÃ³n para mÃ¡s ayuda."

#: ../server/handlers/applet/applet.py:78
#, fuzzy, python-brace-format
msgid "Your system was not found in the {PRODUCT_NAME} database"
msgstr "Su sistema no se encuentra en la base de datos {PRODUCT_NAME}"

#: ../server/handlers/sat/auth.py:45
#, fuzzy
msgid "ISS is disabled on this server."
msgstr "ISS estÃ¡ deshabilitado en este servidor."

#: ../server/handlers/sat/auth.py:50
#, python-format
msgid "Server \"%s\" is not enabled for ISS."
msgstr "Servidor â€œ%sâ€ no estÃ¡ habilitado para ISS"

#: ../server/handlers/xmlrpc/errata.py:64
#, python-format
msgid "Expected a package name, not: %s"
msgstr "Se esperaba un nombre de paquete, no: %s"

#: ../server/handlers/xmlrpc/errata.py:115
#, python-format
msgid "Expected a package, not: %s"
msgstr "Se esperaba un paquete, no: %s"

#: ../server/handlers/xmlrpc/proxy.py:65
#, fuzzy, python-format
msgid "SUSE Manager Proxy service not enabled for server profile: \"%s\""
msgstr ""
"El servicio SUSE Manager Proxy no estÃ¡ habilitado para el perfil del "
"servidor: â€œ%sâ€"

#: ../server/handlers/xmlrpc/proxy.py:85
msgid "Invalid session key"
msgstr "Clave de sesiÃ³n no vÃ¡lida"

#: ../server/handlers/xmlrpc/proxy.py:93
msgid "This server ID no longer exists"
msgstr "El identificador de servidor ya no existe"

#: ../server/handlers/xmlrpc/queue.py:433
#, python-format
msgid "Invalid action value type %s (%s)"
msgstr "El tipo de valor de la acciÃ³n es invÃ¡lido %s (%s)"

#: ../server/handlers/xmlrpc/queue.py:464
#, python-format
msgid "Action %s does not belong to server %s"
msgstr "La acciÃ³n %s no pertenece al servidor %s"

#: ../server/handlers/xmlrpc/registration.py:194
msgid "Required data missing"
msgstr "Faltan datos requeridos"

#: ../server/handlers/xmlrpc/registration.py:198
msgid "Required members missing"
msgstr "Faltan miembros requeridos"

#: ../server/handlers/xmlrpc/registration.py:207
msgid "Attempt to register a system to an invalid username"
msgstr "Intentando registrar un sistema a un nombre de usuario no vÃ¡lido"

#: ../server/handlers/xmlrpc/registration.py:839
msgid "Invalid system release version requested"
msgstr "Solicitada versiÃ³n de sistema no vÃ¡lida"

#: ../server/handlers/xmlrpc/registration.py:1063
msgid ""
"Unable to find a valid network interface, both ipaddr and ip6addr not found."
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1115
#, python-brace-format
msgid "{PRODUCT_NAME} Welcome Message"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1125
#, fuzzy
msgid "Privacy Statement"
msgstr "DeclaraciÃ³n de Privacidad de la Red Red Hat"

#: ../server/handlers/xmlrpc/registration.py:1146
msgid "Expected a dictionary as a product argument"
msgstr "Se esperaba un diccionario como argumento de producto"

#: ../server/handlers/xmlrpc/registration.py:1374
#, python-format
msgid "Invalid value '%s' for %s (%s)"
msgstr "Valor no vÃ¡lido â€˜%sâ€™ para %s (%s)"

#: ../server/handlers/xmlrpc/scap.py:104
msgid "Invalid system_id/action_id pair."
msgstr "Par system_id/action_id invÃ¡lido."

#: ../server/handlers/xmlrpc/up2date.py:233
#, python-format
msgid "Invalid value %s (%s)"
msgstr "Valor no vÃ¡lido %s (%s)"

#: ../server/importlib/userAuth.py:98
msgid "You are not authorized to manage packages in the null org"
msgstr "Usted no estÃ¡ autorizado a gestionar paquetes en la organizaciÃ³n null"

#: ../server/importlib/userAuth.py:103
#, python-format
msgid "You are not allowed to manage packages in the %s org"
msgstr "Usted no tiene permitido gestionar paquetes en la organizaciÃ³n %s"

#: ../server/importlib/userAuth.py:121
msgid "You are not allowed to perform administrative tasks"
msgstr "Usted no tiene permitido llevar a cabo tareas administrativas"

#: ../server/importlib/userAuth.py:144
#, python-format
msgid ""
"You are not allowed to manage channel %s, or that channel does not exist"
msgstr "Usted no tiene permitido manejar el canal %s o ese canal no existe"

#: ../server/importlib/userAuth.py:204
#, fuzzy, python-format
msgid ""
"\n"
"               %s Account has been deactivated on this server.\n"
"               Please contact your Org administrator for more help."
msgstr ""
"\n"
"%s La cuenta ha sido desactivada en este servidor. Por favor contacte con su "
"administrador de sistema para mÃ¡s ayuda."

#: ../server/rhnChannel.py:1992
#, python-format
msgid ""
"Your account does not have access to any channels matching "
"(release='%(release)s', arch='%(arch)s')%(www_activation)s"
msgstr ""
"Su cuenta no tiene acceso a ninguno de los canales coincidentes "
"(lanzamiento=â€™%(release)sâ€™, arquitectura=%(arch)sâ€™)%(www_activation)s"

#: ../server/rhnChannel.py:2002
msgid ""
"\n"
"If you have a registration number, please register with it first at http://"
"www.redhat.com/apps/activate/ and then try again.\n"
"\n"
msgstr ""
"\n"
"Si usted tiene un nÃºmero de registro, por favor regÃ­strelo primero en http://"
"www.redhat.com/apps/activate/ y despuÃ©s intÃ©ntelo otra vez.\n"

#: ../server/rhnChannel.py:2012
#, python-format
msgid "Insufficient subscription permissions for release (%s, %s"
msgstr "Permisos de suscripciÃ³n insuficientes para lanzamiento (%s, %s"

#. Various messages that can be reused
#.
#. bretm 02/07/2007 -- when we have better old-client documentation, probably
#. will be safe to get rid of all this crap
#: ../server/rhnChannel.py:2276 ../server/rhnChannel.py:2287
#: ../server/rhnChannel.py:2302
msgid "System Registered but Inactive"
msgstr "Sistema Registrado pero Inactivo"

#: ../server/rhnChannel.py:2277
#, fuzzy, python-format
msgid ""
"\n"
"Invalid Architecture and OS release combination (%s, %s).\n"
"Your system has been registered, but will not receive updates\n"
"because it is not subscribed to a channel. If you have not yet\n"
"activated your product for service, please visit our website at:\n"
"\n"
"     http://www.redhat.com/apps/activate/\n"
"\n"
"...to activate your product."
msgstr ""
"\n"
"CombinaciÃ³n de Arquitectura y SO no vÃ¡lida (%s, %s). Su sistema ha sido "
"registrado, pero no recibirÃ¡ actualizaciones porque no estÃ¡ suscrito a un "
"canal. Si usted no tiene todavÃ­a activado su producto para servicio, por "
"favor visite nuestra web en: http://www.redhat.com/apps/activate/ â€¦para "
"activar su producto."

#: ../server/rhnChannel.py:2288
#, python-format
msgid ""
"\n"
"Invalid Architecture and OS release combination (%s, %s).\n"
"Your system has been registered, but will not receive updates\n"
"because it could not be subscribed to a base channel.\n"
"Please contact your organization administrator for assistance.\n"
msgstr ""
"\n"
"CombinaciÃ³n de Arquitectura y SO no vÃ¡lida (%s, %s). Su sistema ha sido "
"registrado, pero no recibirÃ¡ actualizaciones porque podrÃ­a no estar suscrito "
"a un canal base. Por favor contacte con el administrador de su organizaciÃ³n "
"para asistencia.\n"

#: ../server/rhnChannel.py:2295
#, python-format
msgid ""
"\n"
"  This system has been successfully registered, but is not yet entitled\n"
"  to service.  To entitle this system to service, login to the web site at:\n"
"\n"
"  %(entitlement_url)s\n"
msgstr ""
"\n"
"Este sistema ha sido registrado con Ã©xito, pero no todavÃ­a intitulado al "
"servicio. Para titular este sistema al servicio, acceda al sitio web en "
"%(entitlement_url)s\n"

#: ../server/rhnChannel.py:2303
#, python-format
msgid ""
"\n"
"  This system has been successfully registered, but no service entitlements\n"
"  were available.  To entitle this system to service, login to the web site "
"at:\n"
"\n"
"  %(entitlement_url)s\n"
msgstr ""
"\n"
"Este sistema ha sido registrado con Ã©xito, pero no hay disponibles derechos "
"al servicio. Para titular este sistema al servicio, acceda al sitio web en "
"%(entitlement_url)s\n"

#: ../server/rhnHandler.py:62
msgid "Please run rhn_register as root on this client"
msgstr ""

#: ../server/rhnHandler.py:75
#, python-format
msgid "Service not enabled for system profile: \"%s\""
msgstr "Servicio no habilitado para perfil del sistema: â€œ%sâ€"

#: ../server/rhnPackage.py:49 ../server/rhnPackage.py:87
#: ../server/rhnPackage.py:107 ../server/rhnPackage.py:158
#, python-format
msgid "Invalid RPM package %s requested"
msgstr "Paquete RPM %s pedido no vÃ¡lido"

#: ../server/rhnPackage.py:112
msgid "Package not found"
msgstr "Paquete no encontrado"

#: ../server/rhnServer/server_class.py:97
#, python-format
msgid "Architecture `%s' is not supported"
msgstr "Arquitectura '%s' no soportada"

#: ../server/rhnServer/server_token.py:78
#, python-format
msgid "Token `%s' has more than one base channel assigned"
msgstr "La ficha '%s' tiene mÃ¡s de un canal base asignado"

#: ../server/rhnServer/server_token.py:80
msgid "Conflicting base channels"
msgstr "Canales base en conflicto"

#: ../server/rhnServer/server_token.py:190
#, python-format
msgid "Failed to add server to group %s"
msgstr "Fallo al aÃ±adir servidor al grupo %s"

#: ../server/rhnServer/server_token.py:503
#, python-format
msgid "Maximum usage count of %s reached"
msgstr "La cuenta mÃ¡xima de utilizaciÃ³n de %s alcanzada"

#: ../server/rhnServer/server_token.py:744
msgid ""
"Stacking of re-registration tokens with different base entitlements is not "
"supported"
msgstr ""
"El apilado de vuelta a registrar fichas con diferentes tÃ­tulos de base no se "
"soporta"

#: ../server/rhnServer/server_token.py:811
#, python-format
msgid "Could not find token '%s'"
msgstr "No podrÃ­a encontrar ficha '%s'"

#. Cannot use activation keys from different orgs
#: ../server/rhnServer/server_token.py:843
msgid "Tokens from mismatching orgs"
msgstr "Fichas de organizaciones no coincidentes"

#. Two tokens with different kickstart sessions
#: ../server/rhnServer/server_token.py:853
msgid "Kickstart session mismatch"
msgstr "Kickstart de sesiÃ³n no coincidente"

#: ../server/rhnServer/server_token.py:877
msgid "Stacking of re-registration tokens is not supported"
msgstr "El apilado de vuelta a registrar fichas no se soporta"

#: ../server/rhnUser.py:289 ../server/rhnUser.py:292
msgid "Invalid username/password combination"
msgstr "CombinaciÃ³n de nombre de usuario/contraseÃ±a no vÃ¡lida"

#. nope, not reserved either
#: ../server/rhnUser.py:467
#, python-format
msgid "Username `%s' has not been reserved"
msgstr "Nombre de usuario â€˜%sâ€™ no ha sido reservado"

#. New accounts have to specify an e-mail address
#: ../server/rhnUser.py:473
msgid "E-mail address not specified"
msgstr "DirecciÃ³n de correo electrÃ³nico no especificada"

#: ../server/rhnUser.py:509
#, python-format
msgid "username should be at least %d characters"
msgstr "nombre de usuario deberÃ­a tener al menos %d caracteres"

#: ../server/rhnUser.py:512
#, python-format
msgid "username should be less than %d characters"
msgstr "nombre de usuario deberÃ­a ser menos de %d caracteres"

#: ../server/rhnUser.py:523
#, python-format
msgid "username = `%s', invalid character `%s'"
msgstr "nombre de usuario = â€˜%sâ€™, carÃ¡cter no vÃ¡lido â€˜%sâ€™"

#: ../server/rhnUser.py:542
#, python-format
msgid "Please limit your e-mail address to %s chars"
msgstr "Por favor limite su direcciÃ³n de correo electrÃ³nico a %s caracteres"

#: ../server/rhnUser.py:623
#, python-format
msgid "password must be at least %d characters"
msgstr "contraseÃ±a debe ser al menos %d caracteres"

#: ../server/rhnUser.py:626
#, python-format
msgid "Password must be shorter than %d characters"
msgstr "ContraseÃ±a debe ser mÃ¡s corta de %d caracteres"

#: ../server/rhnUser.py:644
#, python-format
msgid "password contains character `%s'"
msgstr "contraseÃ±a contiene carÃ¡cter â€˜%sâ€™"

#: ../server/rhnUser.py:651
#, python-format
msgid "username should be at least %d characters long"
msgstr "nombre de usuario deberÃ­a ser al menos %d caracteres de largo"

#: ../server/rhnUser.py:662
#, python-format
msgid "Cannot register usernames ending with %s"
msgstr "No puedo registrar nombres de usuario que terminen con %s"

#. 0-999: Red Hat client/client-like interaction errors:
#: ../common/rhnException.py:53
msgid "This does not appear to be a valid username."
msgstr "Esto no parece ser un nombre de usuario vÃ¡lido."

#: ../common/rhnException.py:54
msgid "Invalid username and password combination."
msgstr "CombinaciÃ³n de nombre de usuario y contraseÃ±a no vÃ¡lida."

#: ../common/rhnException.py:55
msgid "This login is already taken, or the password is incorrect."
msgstr "Este acceso ya estÃ¡ tomado, o la contraseÃ±a es incorrecta."

#: ../common/rhnException.py:56
msgid "Permission denied."
msgstr "Permiso denegado."

#: ../common/rhnException.py:57
msgid "Object not found."
msgstr "Objeto no encontrado."

#: ../common/rhnException.py:58
msgid "Invalid System Digital ID."
msgstr "ID de Sistema Digital no vÃ¡lida."

#: ../common/rhnException.py:59
msgid "Invalid System Credentials."
msgstr "Credenciales del Sistema no vÃ¡lidas."

#: ../common/rhnException.py:60
msgid "Could not retrieve user data from database."
msgstr "No puede recuperar datos del usuario de la base de datos."

#: ../common/rhnException.py:61
msgid "Valid username required."
msgstr "Se requiere nombre de usuario vÃ¡lido."

#: ../common/rhnException.py:62
msgid "Valid password required."
msgstr "Se requiere contraseÃ±a vÃ¡lida."

#: ../common/rhnException.py:63
msgid "Minimum username length violation."
msgstr "ViolaciÃ³n de la longitud mÃ­nima de nombre de usuario."

#: ../common/rhnException.py:64
msgid "Minimum password length violation."
msgstr "ViolaciÃ³n de la longitud mÃ­nima de contraseÃ±a."

#: ../common/rhnException.py:65
msgid "The username contains invalid characters."
msgstr "El nombre de usuario contiene caracteres no vÃ¡lidos."

#: ../common/rhnException.py:66
msgid "File not found."
msgstr "Fichero no encontrado."

#: ../common/rhnException.py:67
msgid "Architecture and OS version combination is not supported."
msgstr "CombinaciÃ³n de Arquitectura y versiÃ³n de SO no estÃ¡ soportada."

#: ../common/rhnException.py:68
msgid "Could not retrieve system data from database."
msgstr "CombinaciÃ³n de Arquitectura y versiÃ³n de SO no estÃ¡ soportada."

#: ../common/rhnException.py:69
msgid "Invalid arguments passed to function."
msgstr "Argumentos pasados a la funciÃ³n no vÃ¡lidos."

#: ../common/rhnException.py:70
msgid "Unable to retrieve requested entry."
msgstr "Incapaz de recuperar la entrada pedida."

#: ../common/rhnException.py:71
msgid "Could not update database entry."
msgstr "No podrÃ­a actualizar la entrada de la base de datos."

#: ../common/rhnException.py:72
msgid "Unsupported server architecture."
msgstr "Arquitectura de servidor no soportada."

#: ../common/rhnException.py:73
#, fuzzy, python-format
msgid ""
"\n"
"     The anonymous server functionality is no longer available.\n"
"\n"
"     Please re-register this system by running mgr_register as root.\n"
"     Please visit https://%(hostname)s/rhn/systems/SystemEntitlements.do\n"
"     or login at https://%(hostname)s, and from the \"Overview\" tab,\n"
"     select \"Subscription Management\" to enable the service for this "
"system.\n"
"     "
msgstr ""
"\n"
"La funcionalidad anÃ³nima del servidor no estÃ¡ ya disponible. Por favor "
"vuelva a registrar este sistema ejecutando rhn_register (o up2date â€“register "
"en Red Hat Enterprise Linux 3+) como root. Por favor visite https://"
"%(hostname)s/rhn/systems/SystemEntitlements.do o acceda a https://"
"%(hostname)s, y desde el tabular â€œOverviewâ€, seleccione â€œSubscription "
"Managementâ€ para habilitar el servicio RHN para este sistema"

#: ../common/rhnException.py:81
msgid "Record not available in the database."
msgstr "Registro no disponible en la base de datos."

#: ../common/rhnException.py:82
msgid "Invalid value for entry."
msgstr "Valor para la entrada no vÃ¡lido."

#: ../common/rhnException.py:83
#, fuzzy, python-format
msgid ""
"\n"
"     This system does not have a valid entitlement for SUSE Manager.\n"
"     Please visit https://%(hostname)s/rhn/systems/SystemEntitlements.do\n"
"     or login at https://%(hostname)s, and from the \"Overview\" tab,\n"
"     select \"Subscription Management\" to enable the service for this "
"system.\n"
"     "
msgstr ""
"\n"
"Este sistema no tiene un tÃ­tulo vÃ¡lido para Red Hat Network. Por favor "
"visite https://%(hostname)s/rhn/systems/SystemEntitlements.do o acceda a "
"https://%(hostname)s, y desde el tabular â€œOverviewâ€, seleccione "
"â€œSubscription Managementâ€ para habilitar el servicio RHN para este sistema"

#: ../common/rhnException.py:89
msgid "Channel error"
msgstr "Error de canal"

#: ../common/rhnException.py:90
msgid "Client session token is invalid."
msgstr "La ficha de la sesiÃ³n cliente no es vÃ¡lida."

#: ../common/rhnException.py:91
msgid "Client session token has expired."
msgstr "La ficha de la sesiÃ³n cliente ha expirado."

#: ../common/rhnException.py:92
msgid "You are not authorized to retrieve the requested object."
msgstr "Usted no estÃ¡ autorizado para recuperar el objeto pedido."

#: ../common/rhnException.py:93
msgid "Invalid action"
msgstr "AcciÃ³n no vÃ¡lida"

#: ../common/rhnException.py:94
msgid "You are not allowed to perform administrative tasks on this system."
msgstr ""
"Usted no tiene permitido llevar a cabo tareas administrativas sobre este "
"sistema."

#: ../common/rhnException.py:96
msgid "The system is already subscribed to the specified channel."
msgstr "El sistema ya estÃ¡ suscrito al canal especificado."

#: ../common/rhnException.py:97
msgid "The system is not currently subscribed to the specified channel."
msgstr "El sistema no estÃ¡ actualmente suscrito al canal especificado."

#: ../common/rhnException.py:98
msgid "The specified channel does not exist."
msgstr "El canal especificado no existe."

#: ../common/rhnException.py:99
msgid "Invalid channel version."
msgstr "VersiÃ³n del canal no vÃ¡lida."

#: ../common/rhnException.py:100
#, fuzzy
msgid ""
"\n"
"     User group membership limits exceeded.\n"
"\n"
"     The current settings for your account do not allow you to add another\n"
"     user account. Please check with the organization administrator for "
"your\n"
"     account if the maximum number of users allowed to subscribe to server "
"needs\n"
"     to be changed.\n"
"     "
msgstr ""
"\n"
"LÃ­mites de afiliaciÃ³n al grupo de usuario excedida. El ajuste actual de su "
"cuenta no le permite aÃ±adir otra cuenta de usuario. Por favor compruebe con "
"el administrador de su organizaciÃ³n para su cuenta si el nÃºmero mÃ¡ximo de "
"usuarios permitidos para suscribirse a RHN necesita ser cambiado."

#: ../common/rhnException.py:108
#, fuzzy
msgid ""
"\n"
"     System group membership limits exceeded.\n"
"\n"
"     The current settings for your account do not allow you to add another\n"
"     system profile. Please check with the organization administrator for "
"your\n"
"     account for modifying the maximum number of system profiles that can "
"be\n"
"     subscribed to your account.\n"
"     "
msgstr ""
"\n"
"LÃ­mites de afiliaciÃ³n a grupo de sistema excedido. El ajuste actual para su "
"cuenta no le permite aÃ±adir otro perfil de sistema. Por favor consulte con "
"el administrador de la organizaciÃ³n para su cuenta para modificar el nÃºmero "
"mÃ¡ximo de perfiles de sistema que pueden ser suscritos en su cuenta RHN."

#: ../common/rhnException.py:116
#, fuzzy
msgid ""
"\n"
"     Invalid architecture.\n"
"\n"
"     The architecture of the package is not supported by\n"
"     "
msgstr ""
"\n"
"Arquitectura no vÃ¡lida. El arquitectura del paquete no se soporta por Red "
"Hat Network"

#: ../common/rhnException.py:121
msgid "Invalid RPM header"
msgstr "Cabecera RPM no vÃ¡lida"

#: ../common/rhnException.py:122
msgid ""
"\n"
"    This system is already registered as a Salt Minion. If you want to "
"register it as a traditional client\n"
"    please delete it first via the web UI or API and then register it using "
"the traditional tools.\n"
"    "
msgstr ""

#. For the uploading tools
#: ../common/rhnException.py:127
msgid "Invalid information uploaded to the server"
msgstr "InformaciÃ³n no vÃ¡lida subida al servidor"

#: ../common/rhnException.py:128
msgid "Error uploading network interfaces configuration."
msgstr "Error subiendo la configuraciÃ³n de las interfaces de red."

#: ../common/rhnException.py:129
msgid ""
"\n"
"     Package Upload Failed due to uniqueness constraint violation.\n"
"     Make sure the package does not have any duplicate dependencies or\n"
"     does not already exists on the server\n"
"     "
msgstr ""
"\n"
"La Subida del Paquete Fallo debido a una violaciÃ³n de restricciÃ³n singular. "
"AsegÃºrese que el paquete no tiene ninguna dependencia duplicada o que no "
"existe ya en el servidor"

#: ../common/rhnException.py:134
#, fuzzy
msgid ""
"\n"
"     The --force rhnpush option is disabled on this server.\n"
"     Please contact your SUSE Manager administrator for more help.\n"
"     "
msgstr ""
"\n"
"La opciÃ³n â€“force rhnpush estÃ¡ deshabilitada en este servidor. Por favor "
"contacte con su administrador SatÃ©lite para mÃ¡s informaciÃ³n."

#. 60-70: token errors
#: ../common/rhnException.py:140
msgid ""
"\n"
"     The activation token specified could not be found on the server.\n"
"     Please retry with a valid key.\n"
"     "
msgstr ""
"\n"
"La ficha de activaciÃ³n especificada podrÃ­a no encontrarse en este servidor. "
"Por favor reintÃ©ntelo con una clave vÃ¡lida."

#: ../common/rhnException.py:144
msgid "Too many systems registered using this registration token"
msgstr "Demasiados sistemas registrados usando esta ficha de registro"

#: ../common/rhnException.py:145
msgid "Token contains invalid, obsoleted or insufficient settings"
msgstr "La ficha contiene ajustes no vÃ¡lidos, obsoletos o insuficientes"

#: ../common/rhnException.py:146
msgid "Conflicting activation tokens"
msgstr "Fichas de activaciÃ³n en conflicto"

#. 70-80: channel subscription errors
#: ../common/rhnException.py:149
msgid ""
"\n"
"     No matching base channel found for your system.\n"
"     "
msgstr ""

#: ../common/rhnException.py:152
msgid ""
"\n"
"     You do not have subscription permission to the designated channel.\n"
"     Please refer to your organization's channel or organization\n"
"     administrators for further details.\n"
"     "
msgstr ""
"\n"
"Usted no tiene permiso de suscripciÃ³n al cana designado. Por favor vaya a su "
"canal de organizaciÃ³n o administradores de organizaciÃ³n para mÃ¡s detalles."

#: ../common/rhnException.py:157
msgid "You can not unsubscribe from base channel."
msgstr "Usted no puede darse de baja del canal base."

#: ../common/rhnException.py:158
msgid "SUSE Manager or Proxy channel can not be subscribed."
msgstr ""

#. 80-90: server group errors
#: ../common/rhnException.py:161
msgid "There was an error while trying to join the system to its groups"
msgstr "Hubo un error mientras intentaba unir el sistema a sus grupos"

#. 90-100: entitlement errors
#: ../common/rhnException.py:164
msgid "Unable to entitle system"
msgstr "Incapaz de titular sistema"

#. 100-109: e-mail and uuid related faults
#: ../common/rhnException.py:167
msgid "Maximum e-mail length violation."
msgstr "ViolaciÃ³n de la longitud mÃ¡xima de correo electrÃ³nico."

#: ../common/rhnException.py:168
msgid "This system has been previously registered."
msgstr "Este sistema ha sido registrado previamente."

#: ../common/rhnException.py:169
msgid "Invalid username"
msgstr "Nombre de usuario no vÃ¡lido"

#. 140-159 applet errors
#: ../common/rhnException.py:172
msgid "Unable to look up server"
msgstr "Incapaz de buscar servidor"

#. 160-179: OSAD errors
#: ../common/rhnException.py:175
msgid "Required argument is missing"
msgstr "Argumento requerido desaparecido"

#. 600-699: RHEL5+ EN errors
#: ../common/rhnException.py:178
msgid "No entitlement information tied to hardware"
msgstr "No hay informaciÃ³n de derecho ligada al hardware"

#: ../common/rhnException.py:179
msgid "Installation number is not entitling"
msgstr "El nÃºmero de instalaciÃ³n no da derecho"

#. 700-799: Additional user input verification errors.
#: ../common/rhnException.py:182
msgid "Maximum username length violation"
msgstr "ViolaciÃ³n de la longitud mÃ¡xima del nombre de usuario"

#: ../common/rhnException.py:183
msgid "Maximum password length violation"
msgstr "ViolaciÃ³n de la longitud mÃ¡xima de la contraseÃ±a"

#: ../common/rhnException.py:184
msgid "This user has read only API access. Action denied."
msgstr ""

#: ../common/rhnException.py:186
#, fuzzy
msgid "System Name cannot be less than 1 character"
msgstr "nombre de usuario deberÃ­a ser menos de %d caracteres"

#. 1000-1999: Proxy specific errors:
#. issued by a Proxy to the client
#: ../common/rhnException.py:190
#, fuzzy
msgid "SUSE Manager Proxy error."
msgstr "Error del Proxy RHN."

#: ../common/rhnException.py:191
#, fuzzy
msgid "SUSE Manager Proxy unable to login."
msgstr "RHN Proxy incapaz de acceder"

#. issued by a SUSE Manager Server/Satellite to the proxy
#: ../common/rhnException.py:193
msgid ""
"\n"
"     SUSE Manager Proxy system ID does not match a Spacewalk Proxy Server\n"
"     in the database.\n"
"     "
msgstr ""

#: ../common/rhnException.py:197
#, fuzzy
msgid "SUSE Manager Proxy session token is invalid."
msgstr "La ficha de sesiÃ³n de Proxy RHN no es vÃ¡lida."

#: ../common/rhnException.py:198
#, fuzzy
msgid "SUSE Manager Proxy session token has expired."
msgstr "La ficha de sesiÃ³n de Proxy RHN ha expirado."

#. 2000-2999: Red Hat Satellite specific errors:
#: ../common/rhnException.py:202
#, fuzzy
msgid ""
"\n"
"      user creation is not allowed via mgr_register;\n"
"     please contact your sysadmin to have your account created.\n"
"     "
msgstr ""
"\n"
"La creaciÃ³n de un usuario de RHN Satellite no estÃ¡ permitida por medio de "
"rhn_register (o up2date â€“register sonre Red Hat Enterprise Linux 3 o "
"posteriores); por favor contacte con su administrador del sistema para tener "
"su cuenta creada."

#: ../common/rhnException.py:206
#, fuzzy
msgid ""
"\n"
"     This SUSE Manager server is not allowed to use Inter Server Sync on "
"this server\n"
"     "
msgstr ""
"\n"
"Este servidor satÃ©lite no tiene permitido usar Inter Satellite Sync sobre "
"este satÃ©lite"

#: ../common/rhnException.py:209
#, fuzzy
msgid ""
"\n"
"     Inter Server Sync is disabled on this SUSE Manager Server.\n"
"     "
msgstr ""
"\n"
"Inter Satellite Sync estÃ¡ deshabilitado sobre este satÃ©lite"

#. 3000-3999: XML dumper errors:
#: ../common/rhnException.py:214
msgid "Invalid datatype passed"
msgstr "Tipo de datos pasado no vÃ¡lido"

#: ../common/rhnException.py:215
msgid "Unable to retrieve channel"
msgstr "Incapaz de recuperar el canal"

#: ../common/rhnException.py:216
msgid "Unable to retrieve package"
msgstr "Incapaz de recuperar el paquete"

#: ../common/rhnException.py:217
msgid "Unable to retrieve erratum"
msgstr "Incapaz de recuperar errata"

#: ../common/rhnException.py:218
msgid "File is missing"
msgstr "Fichero desaparecido"

#: ../common/rhnException.py:219
msgid "Function retrieval error"
msgstr "Error en la recuperaciÃ³n de funciÃ³n"

#: ../common/rhnException.py:220
msgid "Function execution error"
msgstr "Error de ejecuciÃ³n de funciÃ³n"

#: ../common/rhnException.py:221
msgid "Missing version string"
msgstr "Cadena de versiÃ³n desaparecida"

#: ../common/rhnException.py:222
msgid "Invalid version string"
msgstr "Cadena de versiÃ³n no vÃ¡lida"

#: ../common/rhnException.py:223
msgid "Mismatching versions"
msgstr "Versiones no coincidentes"

#: ../common/rhnException.py:224
msgid "Invalid channel version"
msgstr "VersiÃ³n de canal no vÃ¡lida"

#: ../common/rhnException.py:225
msgid "No comps file for channel"
msgstr "NingÃºn archivo comps para el canal"

#: ../common/rhnException.py:226
msgid "Unable to retrieve comps file"
msgstr "Incapaz de recuperar fichero comps"

#. 4000 - 4999: config management errors
#: ../common/rhnException.py:229
msgid "Configuration action missing"
msgstr "ConfiguraciÃ³n de la acciÃ³n desaparecida"

#: ../common/rhnException.py:230
msgid "File too large"
msgstr "Fichero demasiado largo"

#: ../common/rhnException.py:231
msgid "File contains binary data"
msgstr "Fichero contiene datos binarios"

#: ../common/rhnException.py:232
msgid "Configuration channel is not empty"
msgstr "La configuraciÃ³n del canal no estÃ¡ vacÃ­a"

#: ../common/rhnException.py:233
msgid "Permission error"
msgstr "Error de permiso"

#: ../common/rhnException.py:234
msgid "Content missing for configuration file"
msgstr "Contenido desaparecido para el fichero de configuraciÃ³n"

#: ../common/rhnException.py:235
msgid "Template delimiters not specified"
msgstr "Delimitadores de la plantilla no especificados"

#: ../common/rhnException.py:236
msgid "Configuration channel does not exist"
msgstr "ConfiguraciÃ³n del canal no existe"

#: ../common/rhnException.py:237
msgid "Configuration channel already exists"
msgstr "ConfiguraciÃ³n del canal ya existe"

#: ../common/rhnException.py:238
msgid "File missing from configuration channel"
msgstr "Fichero desaparecido de la configuraciÃ³n del canal"

#: ../common/rhnException.py:239
msgid "Different revision of this file is uploaded"
msgstr "Un lanzamiento diferente de este archivo ha sido subido"

#: ../common/rhnException.py:240
msgid "File already uploaded to configuration channel"
msgstr "Fichero ya subido a la configuraciÃ³n del canal"

#: ../common/rhnException.py:241
msgid "File size exceeds remaining quota space"
msgstr "El fichero supera la cuota de espacio restante"

#: ../common/rhnException.py:242
msgid "Full path of file must be specified"
msgstr "La ruta completa del fichero debe ser especificada"

#: ../common/rhnException.py:243
msgid "Invalid revision number"
msgstr "NÃºmero de revisiÃ³n no vÃ¡lido"

#: ../common/rhnException.py:244
msgid "Cannot compare files of different file type"
msgstr "No puedo comparar ficheros con tipo de fichero diferente"

#. 5000 - 5999: client content uploading errors
#. 5000 - 5099: crash reporting errors
#: ../common/rhnException.py:248
msgid "Crash information is invalid or incomplete"
msgstr ""

#: ../common/rhnException.py:249
msgid "Crash file information is invalid or incomplete"
msgstr ""

#: ../common/rhnException.py:250
msgid "Error composing crash directory path"
msgstr ""

#: ../common/rhnException.py:251
msgid "Error composing crash file path"
msgstr ""

#: ../common/rhnException.py:252 ../common/rhnException.py:259
#, fuzzy
msgid "Invalid content encoding"
msgstr "CÃ³digo de hito no vÃ¡lido"

#: ../common/rhnException.py:253
#, fuzzy
msgid "Invalid crash name"
msgstr "Nombre de paquete no vÃ¡lido"

#: ../common/rhnException.py:254
msgid "Crash reporting is disabled for this organization"
msgstr ""

#. 5100 - 5199: scap results reporting error
#: ../common/rhnException.py:256
msgid "SCAP results file transfer is invalid or incomplete"
msgstr ""

#: ../common/rhnException.py:257
msgid "Error composing directory path for detailed SCAP results"
msgstr ""

#: ../common/rhnException.py:258
msgid "Error composing file path for detailed SCAP results"
msgstr ""

#: ../common/rhnException.py:306
#, fuzzy
msgid ""
"\n"
"     An error has occurred while processing your request. If this problem\n"
"     persists please enter a bug report at scc.suse.com.\n"
"     If you choose to submit the bug report, please be sure to include\n"
"     details of what you were trying to do when this error occurred and\n"
"     details on how to reproduce this problem.\n"
msgstr ""
"\n"
"     Ha ocurrido un error mientras se procesaba su peticiÃ³n. Si este "
"problema\n"
"     persiste por favor introduzca un reporte de error en bugzilla.redhat."
"com.\n"
"     Si usted elige enviar el reporte de error, por favor asegÃºrese de "
"incluir\n"
"     detalles de lo que estaba intentando hacer cuando ocurriÃ³ el error y \n"
"     detalles sobre como reproducir el problema.\n"

#: ../common/rhnException.py:358
#, python-format
msgid ""
"Error Message:\n"
"    %s\n"
msgstr ""
"Mensaje de Error:\n"
"    %s\n"

#: ../common/rhnException.py:360
#, python-format
msgid "Error Class Code: %s\n"
msgstr "CÃ³digo de Clase de Error: %s\n"

#: ../common/rhnException.py:363
#, python-format
msgid "Error Class Info: %s\n"
msgstr "InformaciÃ³n de Clase de Error: %s\n"

#: ../common/rhnException.py:365
#, python-format
msgid "Explanation: %s"
msgstr "ExplicaciÃ³n: %s"

#: ../common/rhnTB.py:205
#, python-format
msgid "ERROR: %s %s: %s"
msgstr ""

#: ../common/rhnTB.py:207
#, python-format
msgid "TRACEBACK: %s"
msgstr ""

#: ../satellite_tools/disk_dumper/iss.py:1294
#: ../satellite_tools/disk_dumper/iss.py:1298
#, python-format
msgid "format of %s should be at least YYYYMMDD.\n"
msgstr ""

#: ../satellite_tools/messages.py:26
#, python-format
msgid ""
"\n"
"ERROR: executing step %s. Error is:\n"
"%s\n"
msgstr ""

#: ../satellite_tools/messages.py:31
#, python-format
msgid ""
"\n"
"ERROR: there was a problem accessing the channel data from your temporary\n"
"       repository. Did you migrate all of the data from the channel ISOs\n"
"       do this directory? If so, please recheck the channels ISOs, ensure\n"
"       that you have them all, and then iteratively remount and repopulate\n"
"       the temporary repository (%s).\n"
msgstr ""

#: ../satellite_tools/messages.py:39
#, python-format
msgid ""
"\n"
"ERROR: there was a problem synchronizing the information.\n"
"       Error message: %s\n"
msgstr ""

#: ../satellite_tools/messages.py:44
#, python-format
msgid ""
"\n"
"ERROR: There was a problem communicating with the ISS Master.\n"
"       Depending on the specific error details, please review your "
"configuration,\n"
"       basic network connectivity, and/or name resolution, and try again.\n"
"       Error message: %s\n"
msgstr ""

#: ../satellite_tools/messages.py:51
#, python-format
msgid ""
"\n"
"ERROR: There was a problem communicating with the ISS Master.\n"
"       If the master satellite is older than v5.3, it does not have ISS "
"capability.\n"
"       Otherwise, depending on the specific error details, please review "
"your\n"
"       configuration, basic network connectivity, and/or name resolution, "
"and try again.\n"
"       Error message: %s\n"
msgstr ""

#: ../satellite_tools/messages.py:59
#, python-format
msgid ""
"\n"
"ERROR: a child-channel cannot be synced without its parent being synced as\n"
"       well. A parent needs to be either (a) previously synced or (b) "
"synced\n"
"       in tandem with the desired child-channel. Missing parents for this\n"
"       transaction:\n"
"       %s\n"
msgstr ""

#: ../satellite_tools/messages.py:67
#, python-format
msgid ""
"\n"
"ERROR: you are not entitled to sync a channel in this set of channels.\n"
"Please contact your SUSE Manager contact\n"
"%s"
msgstr ""

#: ../satellite_tools/messages.py:72
#, python-format
msgid "  ERROR: not enough free space (%s KB) on device."
msgstr ""

#: ../satellite_tools/messages.py:74
#, python-format
msgid "    %3d/%s Fetch successful: %s (%s bytes)"
msgstr ""

#: ../satellite_tools/messages.py:75
#, fuzzy, python-format
msgid "    Extinct package:  %s"
msgstr "Se esperaba un paquete, no: %s"

#: ../satellite_tools/messages.py:76
#, python-format
msgid "   Total size: %s"
msgstr ""

#: ../satellite_tools/messages.py:77
#, python-format
msgid "      Downloaded %s of %s. Estimated remaining time: %s"
msgstr ""

#: ../satellite_tools/messages.py:78
#, python-format
msgid "    Fetch unsuccessful: %s"
msgstr ""

#: ../satellite_tools/messages.py:79
#, python-format
msgid "   RPM fetch summary: %s"
msgstr ""

#: ../satellite_tools/messages.py:80
#, python-format
msgid "       success: %d"
msgstr ""

#: ../satellite_tools/messages.py:81
#, python-format
msgid "       failed:  %d"
msgstr ""

#: ../satellite_tools/messages.py:82
#, python-format
msgid "       extinct: %d"
msgstr ""

#: ../satellite_tools/messages.py:84
#, python-format
msgid "   Retrieving / parsing *relevant* package metadata: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:85
#, python-format
msgid "   Retrieving / parsing errata data: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:86
#, python-format
msgid "   Retrieving / parsing kickstart data: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:87
#, python-format
msgid "   Retrieving / parsing kickstart tree files: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:88
#, python-format
msgid "   Importing *relevant* package metadata: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:89
msgid "   * WARNING: this may be a slow process."
msgstr ""

#: ../satellite_tools/messages.py:90
#, fuzzy
msgid "Linking packages to channels"
msgstr "Canales base en conflicto"

#: ../satellite_tools/messages.py:91
#, python-format
msgid "   Importing *relevant* errata: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:92
msgid "   No new kickstartable tree to import"
msgstr ""

#: ../satellite_tools/messages.py:93
#, python-format
msgid "Importing kickstartable trees (%d)"
msgstr ""

#: ../satellite_tools/messages.py:94
#, python-format
msgid "Imported kickstartable trees (%d)"
msgstr ""

#: ../satellite_tools/reposync.py:111 ../satellite_tools/satsync.py:439
msgid "+++ sending log as an email +++"
msgstr ""

#: ../satellite_tools/reposync.py:114
#, python-format
msgid "%s sync. report from %s"
msgstr ""

#: ../satellite_tools/reposync.py:124 ../satellite_tools/satsync.py:449
msgid "+++ email requested, but there is nothing to send +++"
msgstr ""

#: ../satellite_tools/rhn_satellite_activate.py:198
#, python-format
msgid ""
"\"%s\" (specified in commandline)\n"
"could not be opened and read:\n"
"%s"
msgstr ""

#: ../satellite_tools/rhn_satellite_activate.py:205
#, python-format
msgid ""
"\"%s\" could not be opened\n"
"and/or written to:\n"
"%s"
msgstr ""

#: ../satellite_tools/satsync.py:258
#, python-format
msgid "No handler for step %s"
msgstr ""

#. Try one more time - this time it should be faster since
#. everything should be cached
#: ../satellite_tools/satsync.py:270
msgid "Environment changed, trying again..."
msgstr ""

#: ../satellite_tools/satsync.py:277
msgid "ERROR: Encountered IntegrityError: \n"
msgstr ""

#: ../satellite_tools/satsync.py:285
msgid "Repeated failures"
msgstr ""

#: ../satellite_tools/satsync.py:290
#, python-format
msgid ""
"    Import complete:\n"
"        Begin time: %s\n"
"        End time:   %s\n"
"        Elapsed:    %s\n"
"          "
msgstr ""

#: ../satellite_tools/satsync.py:311
msgid "hours"
msgstr ""

#: ../satellite_tools/satsync.py:311
msgid "minutes"
msgstr ""

#: ../satellite_tools/satsync.py:311
msgid "seconds"
msgstr ""

#: ../satellite_tools/satsync.py:357
msgid ""
"ERROR: The dump is missing package data, use --no-rpms to skip this step or "
"fix the content to include package data."
msgstr ""

#. the orgs() method doesn't exist; that's fine we just
#. won't sync the orgs
#: ../satellite_tools/satsync.py:404
msgid "The SUSE Manager master does not support syncing orgs data."
msgstr ""

#: ../satellite_tools/satsync.py:404
msgid "Skipping..."
msgstr ""

#: ../satellite_tools/satsync.py:442
#, python-format
msgid "SUSE Manager Inter Server sync. report from %s"
msgstr ""

#: ../satellite_tools/satsync.py:521
msgid " - file-system synchronization"
msgstr ""

#: ../satellite_tools/satsync.py:533 ../satellite_tools/satsync.py:541
msgid " - live synchronization"
msgstr ""

#: ../satellite_tools/satsync.py:534
#, python-brace-format
msgid ""
"ERROR: Live content synchronizing with RHN Classic Hosted is no longer "
"supported.\n"
"Please use the cdn-sync command instead unless you are attempting to sync "
"from another {PRODUCT_NAME} via Inter-Server-Sync (ISS), or from local "
"content on disk via Channel Dump ISOs."
msgstr ""

#: ../satellite_tools/satsync.py:542
#, python-format
msgid "   url: %s"
msgstr ""

#: ../satellite_tools/satsync.py:543
#, python-format
msgid "   debug/output level: %s"
msgstr ""

#: ../satellite_tools/satsync.py:553
msgid "ERROR: this server must be registered with SUSE Manager."
msgstr ""

#: ../satellite_tools/satsync.py:575
#, python-format
msgid "Retrieving / parsing %s data"
msgstr ""

#: ../satellite_tools/satsync.py:585 ../satellite_tools/satsync.py:600
msgid "*** SYSTEM INTERRUPT CALLED ***"
msgstr ""

#: ../satellite_tools/satsync.py:593
msgid "ERROR: fatal parser exception occurred "
msgstr ""

#: ../satellite_tools/satsync.py:594
#, python-format
msgid "(line: %s, col: %s msg: %s)"
msgstr ""

#: ../satellite_tools/satsync.py:598
#, python-format
msgid "ERROR: parser exception occurred: %s"
msgstr ""

#: ../satellite_tools/satsync.py:603
msgid "ERROR: exception (during parse) occurred: "
msgstr ""

#: ../satellite_tools/satsync.py:604
#, python-format
msgid ""
"   Encountered some errors with %s data (see logs (%s) for more information)"
msgstr ""

#: ../satellite_tools/satsync.py:606
#, python-format
msgid "   Encountered some errors with %s data:"
msgstr ""

#: ../satellite_tools/satsync.py:607
#, python-format
msgid "   ------- %s PARSE/IMPORT ERROR -------"
msgstr ""

#: ../satellite_tools/satsync.py:609
msgid "   ---------------------------------------"
msgstr ""

#: ../satellite_tools/satsync.py:612
#, python-format
msgid "%s data complete"
msgstr ""

#: ../satellite_tools/satsync.py:665
msgid "Retrieving / parsing channel data"
msgstr ""

#: ../satellite_tools/satsync.py:718
msgid "Channel data complete"
msgstr ""

#: ../satellite_tools/satsync.py:736
#, python-format
msgid "%10s import from %s"
msgstr ""

#: ../satellite_tools/satsync.py:739
#, python-format
msgid "%10s import from %s - %s"
msgstr ""

#: ../satellite_tools/satsync.py:743
#, python-format
msgid "%10s"
msgstr ""

#: ../satellite_tools/satsync.py:750
msgid "p"
msgstr ""

#: ../satellite_tools/satsync.py:752
msgid "."
msgstr ""

#: ../satellite_tools/satsync.py:758
msgid "   p = previously imported/synced channel"
msgstr ""

#: ../satellite_tools/satsync.py:759
msgid "   . = channel not yet imported/synced"
msgstr ""

#: ../satellite_tools/satsync.py:765
msgid "   e = channel no longer supported (end-of-service)"
msgstr ""

#: ../satellite_tools/satsync.py:767
msgid "   ? = channel label invalid --- typo?"
msgstr ""

#: ../satellite_tools/satsync.py:771
#, python-format
msgid "   %s:"
msgstr ""

#: ../satellite_tools/satsync.py:772
#, python-format
msgid "      %s %-40s %4s %s"
msgstr ""

#: ../satellite_tools/satsync.py:773
#, fuzzy
msgid "base-channels"
msgstr "Canales base en conflicto"

#: ../satellite_tools/satsync.py:786 ../satellite_tools/satsync.py:1603
msgid "NONE RELEVANT"
msgstr ""

#: ../satellite_tools/satsync.py:808
msgid "end-of-service"
msgstr ""

#: ../satellite_tools/satsync.py:809
msgid "e"
msgstr ""

#: ../satellite_tools/satsync.py:815
msgid "   typos:"
msgstr ""

#: ../satellite_tools/satsync.py:816
msgid "?"
msgstr ""

#: ../satellite_tools/satsync.py:831
#, python-format
msgid "XXX: imported channels: %s"
msgstr "XXX: canales importados: %s"

#: ../satellite_tools/satsync.py:832
#, python-format
msgid "XXX:   cached channels: %s"
msgstr "XXX:   canales en antememoria: %s"

#: ../satellite_tools/satsync.py:837
msgid "XXX: list channels called"
msgstr "XXX: enumerar canales llamados"

#: ../satellite_tools/satsync.py:855
msgid "ERROR: these channels either do not exist or are not available:"
msgstr "ERROR: estos canales o no existen o no estÃ¡n disponibles:"

#: ../satellite_tools/satsync.py:859
#, python-format
msgid "       (to see a list of channel labels: %s --list-channels)"
msgstr ""
"       (para ver una lista de etiquetas de canales: %s --list-channels)"

#: ../satellite_tools/satsync.py:904
#, python-format
msgid "   Retrieving / parsing short package metadata: %s (%s)"
msgstr ""

#: ../satellite_tools/satsync.py:965
#, python-format
msgid "Diffing package metadata (what's missing locally?): %s"
msgstr ""

#: ../satellite_tools/satsync.py:971 ../satellite_tools/satsync.py:1254
msgid "Diffing:    "
msgstr ""

#: ../satellite_tools/satsync.py:988
msgid "ERROR: incremental dump skipped"
msgstr ""

#: ../satellite_tools/satsync.py:1079
msgid "Downloading rpm packages"
msgstr "Descargando paquetes rpm"

#: ../satellite_tools/satsync.py:1084
#, python-format
msgid "   Fetching any missing RPMs: %s (%s)"
msgstr ""

#: ../satellite_tools/satsync.py:1085 ../satellite_tools/satsync.py:1153
msgid "NONE MISSING"
msgstr "NO FALTA NINGUNO"

#: ../satellite_tools/satsync.py:1094
msgid "Processing rpm packages complete"
msgstr "Se completÃ³ el procesamiento de los paquetes rpm"

#: ../satellite_tools/satsync.py:1121
msgid "Downloading package metadata"
msgstr "Descargando metadatos de paquetes"

#: ../satellite_tools/satsync.py:1146
msgid "Downloading srpm packages"
msgstr "Descargando paquetes srpm"

#: ../satellite_tools/satsync.py:1152
#, python-format
msgid "   Fetching any missing SRPMs: %s (%s)"
msgstr ""

#: ../satellite_tools/satsync.py:1249
#, python-format
msgid "Diffing source package metadata (what's missing locally?): %s"
msgstr ""

#: ../satellite_tools/satsync.py:1260
msgid "Downloading source package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1338 ../satellite_tools/satsync.py:2027
#, fuzzy, python-format
msgid "Unable to save file %s: %s"
msgstr "Incapaz de titular sistema"

#. for
#. Retried a number of times and it still failed; log the
#. file as being failed and move on
#: ../satellite_tools/satsync.py:1345
#, python-format
msgid "Failed to fetch file %s"
msgstr ""

#: ../satellite_tools/satsync.py:1350
msgid "Downloading kickstartable trees metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1365
msgid "Downloading kickstartable trees files"
msgstr ""

#: ../satellite_tools/satsync.py:1504
#, python-format
msgid "Grabbing all patches for channel %s"
msgstr ""

#: ../satellite_tools/satsync.py:1554
msgid "Downloading patch data"
msgstr ""

#: ../satellite_tools/satsync.py:1556
msgid "Forcing download of all patch data for requested channels."
msgstr ""

#: ../satellite_tools/satsync.py:1571
msgid "Downloading patch data complete"
msgstr ""

#: ../satellite_tools/satsync.py:1576 ../satellite_tools/satsync.py:1597
msgid "Downloading:"
msgstr ""

#: ../satellite_tools/satsync.py:1579
msgid " - complete"
msgstr ""

#: ../satellite_tools/satsync.py:1624
msgid "Importing source package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1627
msgid "Importing package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1635
msgid "Importing:  "
msgstr ""

#. not in the cache
#: ../satellite_tools/satsync.py:1703
msgid ""
"Package Not Found in Cache, Clear the Cache "
"to                                  Regenerate it."
msgstr ""

#: ../satellite_tools/satsync.py:1709
msgid "Importing channel patches"
msgstr ""

#: ../satellite_tools/satsync.py:1714
#, python-format
msgid "Importing %s patches for channel %s."
msgstr ""

#. Incomplete configuration
#: ../satellite_tools/satsync.py:2113
msgid "ERROR: server.mount_point not set in the configuration file"
msgstr ""

#: ../satellite_tools/satsync.py:2117
#, python-format
msgid "ERROR: server.mount_point %s do not exist"
msgstr ""

#: ../satellite_tools/satsync.py:2122
#, python-format
msgid "ERROR: path under server.mount_point (%s)  do not exist"
msgstr "ERROR: la ruta bajo server.mount_point (%s)  no existe"

#: ../satellite_tools/satsync.py:2199
#, python-format
msgid "Commandline: %s"
msgstr "LÃ­nea de comandos: %s"

#: ../satellite_tools/satsync.py:2202
#, python-format
msgid ""
"DEBUG ONLY: max. batch-size for XML/database-import processing (1..%s).\"man "
"satellite-sync\" for more information."
msgstr ""

#: ../satellite_tools/satsync.py:2205
msgid "alternative SSL CA Cert (fullpath to cert file)"
msgstr ""

#: ../satellite_tools/satsync.py:2207
msgid "process data for this channel only"
msgstr ""

#: ../satellite_tools/satsync.py:2209
msgid ""
"disk dump will be considered to be a full export; see \"man satellite-sync\" "
"for more information."
msgstr ""

#: ../satellite_tools/satsync.py:2212
msgid "existing custom channels will also be synced (unless -c is used)"
msgstr ""

#: ../satellite_tools/satsync.py:2214
#, python-format
msgid ""
"override debug level set in /etc/rhn/rhn.conf (which is currently set at %s)."
msgstr ""

#: ../satellite_tools/satsync.py:2216
#, python-format
msgid "requested version of XML dump (default: %s)"
msgstr ""

#: ../satellite_tools/satsync.py:2218
msgid "e-mail a report of what was synced/imported"
msgstr ""

#: ../satellite_tools/satsync.py:2220
msgid "forcibly process all (not a diff of) patch metadata"
msgstr ""

#: ../satellite_tools/satsync.py:2222
msgid "Do not use an http proxy under any circumstances."
msgstr ""

#: ../satellite_tools/satsync.py:2224
msgid "alternative http proxy (hostname:port)"
msgstr ""

#: ../satellite_tools/satsync.py:2226
msgid "alternative http proxy username"
msgstr ""

#: ../satellite_tools/satsync.py:2228
msgid "alternative http proxy password"
msgstr ""

#: ../satellite_tools/satsync.py:2230
msgid "parent SUSE Manager to import content from"
msgstr ""

#: ../satellite_tools/satsync.py:2232
msgid "list all available channels and exit"
msgstr ""

#: ../satellite_tools/satsync.py:2234
msgid "help on all error codes mgr-inter-sync returns"
msgstr ""

#: ../satellite_tools/satsync.py:2236
msgid "source mount point for import - disk update only"
msgstr ""

#: ../satellite_tools/satsync.py:2238
msgid "do not process patch data"
msgstr ""

#: ../satellite_tools/satsync.py:2240
msgid "do not process kickstart data (provisioning only)"
msgstr ""

#: ../satellite_tools/satsync.py:2242
msgid "do not process full package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:2244
msgid "do not download, or process any RPMs"
msgstr ""

#: ../satellite_tools/satsync.py:2246
msgid "turn off SSL (not recommended)"
msgstr ""

#: ../satellite_tools/satsync.py:2248
msgid "org to which the sync imports data. defaults to the admin account"
msgstr ""

#: ../satellite_tools/satsync.py:2250
#, fuzzy
msgid "print the configuration and exit"
msgstr "ConfiguraciÃ³n del canal no existe"

#: ../satellite_tools/satsync.py:2252
msgid "alternative server with which to connect (hostname)"
msgstr ""

#: ../satellite_tools/satsync.py:2254
msgid "synchronize to this step (man satellite-sync for more info)"
msgstr ""

#: ../satellite_tools/satsync.py:2256
msgid "write complete data to tempfile before streaming to remainder of app"
msgstr ""

#: ../satellite_tools/satsync.py:2258
msgid "DEBUG ONLY: alternative path to digital system id"
msgstr ""

#: ../satellite_tools/satsync.py:2260
msgid "alternative email address(es) for sync output (--email option)"
msgstr ""

#: ../satellite_tools/satsync.py:2262
msgid "do not remove rpms when importing from local dump"
msgstr ""

#: ../satellite_tools/satsync.py:2264
msgid ""
"the fully qualified domain name of the master Satellite. Valid with --mount-"
"point only. Required if you want to import org data and channel permissions."
msgstr ""

#: ../satellite_tools/satsync.py:2274
#, python-format
msgid "ERROR: these arguments make no sense in this context (try --help): %s"
msgstr ""

#. An SQL error is fatal... crash and burn
#: ../satellite_tools/satsync.py:2286
#, python-format
msgid "ERROR: Can't connect to the database: %s"
msgstr ""

#: ../satellite_tools/satsync.py:2287
msgid "ERROR: Check if your database is running."
msgstr ""

#: ../satellite_tools/satsync.py:2322
#, python-format
msgid "ERROR: --debug-level takes an in integer value within the range %s."
msgstr ""

#: ../satellite_tools/satsync.py:2324
msgid "  0  - little logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2325
msgid "  1  - minimal logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2326
msgid "  2  - normal level of logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2327
msgid "  3  - lots of logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2328
msgid "  4+ - excessive logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2341
msgid "ERROR: The --master option is only valid with the --mount-point option"
msgstr ""

#: ../satellite_tools/satsync.py:2351
#, fuzzy, python-format
msgid "ERROR: Unable to lookup Org Id %s"
msgstr "Incapaz de buscar servidor"

#: ../satellite_tools/satsync.py:2360
msgid ""
"WARNING: --list-channels option overrides any --step option. --step ignored."
msgstr ""

#: ../satellite_tools/satsync.py:2375
#, python-format
msgid ""
"ERROR: '%s' is not a valid step. See 'man mgr-inter-sync' for more detail."
msgstr ""

#: ../satellite_tools/satsync.py:2407
msgid ""
"ERROR: No channels currently imported; try mgr-inter-sync --list-channels; "
"then mgr-inter-sync -c chn0 -c chn1..."
msgstr ""

#. int(None) --> TypeError
#. int('a')  --> ValueError
#: ../satellite_tools/satsync.py:2457 ../satellite_tools/satsync.py:2461
msgid "ERROR: --batch-size must have a value within the range: 1..50"
msgstr ""

#: ../satellite_tools/satsync.py:2469
#, python-format
msgid "ERROR: no such directory %s"
msgstr ""

#: ../satellite_tools/satsync.py:2474
msgid "Error Codes: Returned codes means:"
msgstr "CÃ³digos de error: los cÃ³digos devueltos significan:"

#: ../satellite_tools/satsync.py:2475
msgid " -1  - Could not lock file or KeyboardInterrupt or SystemExit"
msgstr " -1.â€” No se pudo bloquear el archivo, KeyboardInterrupt o SystemExit"

#: ../satellite_tools/satsync.py:2476
msgid "  0  - User interrupted or intentional exit"
msgstr "  0.â€” InterrupciÃ³n de usuario o salida intencionada"

#: ../satellite_tools/satsync.py:2477
msgid "  1  - attempting to run more than one instance of mgr-inter-sync."
msgstr "  1.â€” Se intenta ejecutar mÃ¡s de una copia de mgr-inter-sync."

#: ../satellite_tools/satsync.py:2478
msgid "  2  - Unable to find synchronization tools."
msgstr "  2.â€” No pueden encontrarse las herramientas de sincronizaciÃ³n."

#: ../satellite_tools/satsync.py:2479
msgid "  3  - a general socket exception occurred"
msgstr "  3.â€” se produjo una excepciÃ³n general con el zÃ³calo"

#: ../satellite_tools/satsync.py:2480
msgid "  4  - an SSL error occurred. Recheck your SSL settings."
msgstr ""
"  4.â€” Se produjo un error SSL. Compruebe nuevamente su configuraciÃ³n de SSL."

#: ../satellite_tools/satsync.py:2481
msgid "  5  - ISS error"
msgstr "  5.â€” Error con ISS"

#: ../satellite_tools/satsync.py:2482
msgid "  6  - unhandled exception occurred"
msgstr "  6.â€” Se produjo una excepciÃ³n no controlada"

#: ../satellite_tools/satsync.py:2483
msgid "  7  - unknown sync error"
msgstr "  7.â€” Error de sincronizaciÃ³n desconocido"

#: ../satellite_tools/satsync.py:2484
msgid "  8  - ERROR: must be root to execute"
msgstr "  8.â€” ERROR: debe ser Â«rootÂ» para ejecutar"

#: ../satellite_tools/satsync.py:2485
msgid "  9  - rpclib fault during synchronization init"
msgstr "  9.â€” problema con rpclib durante el inicio de la sincronizaciÃ³n"

#: ../satellite_tools/satsync.py:2486
msgid "  10 - synchronization init error"
msgstr "  10.â€” error al iniciar la sincronizaciÃ³n"

#: ../satellite_tools/satsync.py:2487
msgid "  11 - Error parsing XML stream"
msgstr "  11.â€” Error al procesar la transmisiÃ³n de XML"

#: ../satellite_tools/satsync.py:2488
msgid "  12 - Channel do not exist"
msgstr "  12.â€” El canal no existe"

#: ../satellite_tools/satsync.py:2489
msgid "  13 - SQL error during importing package metadata"
msgstr "  13.â€” Error con SQL al importar los metadatos del paquete"

#: ../satellite_tools/satsync.py:2490
msgid "  14 - SQL error during linking channel packages"
msgstr "  14.â€” Error con SQL al enlazar los paquetes de canal"

#: ../satellite_tools/satsync.py:2491
msgid "  15 - SQL error during xml processing"
msgstr "  15.â€” Error con SQL al procesar el XML"

#: ../satellite_tools/satsync.py:2492
msgid "  16 - server.mount_point not set in the configuration file"
msgstr "  16.â€” No se definiÃ³ server.mount_point en el archivo de configuraciÃ³n"

#: ../satellite_tools/satsync.py:2493
msgid ""
"  17 - SQL error during retrieving the channels already imported in the SUSE "
"Manager database"
msgstr ""
"  17.â€” Error con SQL al recuperar los canales ya importados en la base de "
"datos de SUSE Manager"

#: ../satellite_tools/satsync.py:2494
msgid "  18 - Wrong db connection string in rhn.conf"
msgstr "  18.â€” Cadena de conexiÃ³n de BD incorrecta en rhn.conf"

#: ../satellite_tools/satsync.py:2495
msgid "  19 - Bad arguments"
msgstr "  19.â€” Argumentos incorrectos"

#: ../satellite_tools/satsync.py:2496
msgid "  20 - Could not connect to db."
msgstr "  20.â€” No se pudo conectar con la BD."

#: ../satellite_tools/satsync.py:2497
msgid "  21 - Bad debug level"
msgstr "  21.â€” Nivel de depuraciÃ³n incorrecto"

#: ../satellite_tools/satsync.py:2498
msgid "  22 - Not valid step"
msgstr "  22.â€” Paso no vÃ¡lido"

#: ../satellite_tools/satsync.py:2499
msgid "  24 - no such file"
msgstr "  24.â€” No existe este archivo"

#: ../satellite_tools/satsync.py:2500
msgid "  25 - no such directory"
msgstr "  25.â€” No existe este directorio"

#: ../satellite_tools/satsync.py:2501
msgid "  26 - mount_point does not exist"
msgstr "  26.â€” no existe mount_point"

#: ../satellite_tools/satsync.py:2502
msgid "  27 - No such org"
msgstr "  27.â€” No existe esta organizaciÃ³n"

#: ../satellite_tools/satsync.py:2503
msgid "  28 - error: --master is only valid with --mount-point"
msgstr "  28.â€” Error: --master solo es vÃ¡lido con --mount-point"

#: ../satellite_tools/satsync.py:2510
#, python-format
msgid "ERROR: unknown dump version, try one of %s"
msgstr "ERROR: versiÃ³n de volcado desconocida; pruebe una de %s"

#~ msgid "Your system was not found in the RHN database"
#~ msgstr "Su sistema no se encuentra en la base de datos RHN"

#~ msgid "ISS is disabled on this satellite."
#~ msgstr "ISS estÃ¡ deshabilitado en este satÃ©lite"

#, fuzzy
#~ msgid "Spacewalk Proxy service not enabled for server profile: \"%s\""
#~ msgstr ""
#~ "El servicio RHN Proxy no estÃ¡ habilitado para el perfil del servidor: â€œ%sâ€"

#, fuzzy
#~ msgid "Red Hat Satellite Welcome Message"
#~ msgstr "Mensaje de Bienvenida de la Red Red Hat"

#, fuzzy
#~ msgid "Red Hat Satellite Privacy Statement"
#~ msgstr "DeclaraciÃ³n de Privacidad de la Red Red Hat"
 0707010000006B000081B40000000000000000000000016290A0C10000B61F000000000000000000000000000000000000001B00000000spacewalk-backend/po/et.po    # SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
#
# Translators:
msgid ""
msgstr ""
"Project-Id-Version: Spacewalk\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-10-16 13:34+0200\n"
"PO-Revision-Date: 2011-03-04 16:08+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Estonian (http://www.transifex.com/projects/p/fedora/language/"
"et/)\n"
"Language: et\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"

#: ../server/apacheAuth.py:66
#, python-format
msgid "incomplete proxy authentication token: %s"
msgstr ""

#: ../server/apacheAuth.py:84
#, python-format
msgid "Sent proxy signature %s does not match ours %s."
msgstr ""

#: ../server/apacheAuth.py:119
msgid "declined proxy authentication"
msgstr ""

#: ../server/apacheRequest.py:59
#, python-format
msgid "Invalid request received (%s)."
msgstr ""

#: ../server/apacheRequest.py:120
#, python-format
msgid ""
"IMPORTANT MESSAGE FOLLOWS:\n"
"%s"
msgstr ""

#: ../server/apacheRequest.py:149
#, python-format
msgid ""
"While running '%s': caught\n"
"%s : %s\n"
msgstr ""

#: ../server/apacheRequest.py:606
#, python-format
msgid "Invalid URI %s"
msgstr ""

#: ../server/configFilesHandler.py:129 ../server/handlers/app/packages.py:192
#: ../server/handlers/xmlrpc/registration.py:215
#: ../server/handlers/xmlrpc/registration.py:1168
#: ../server/handlers/xmlrpc/registration.py:1307
#, python-format
msgid ""
"\n"
"                   %s Account has been deactivated on this server.\n"
"                   Please contact your Org administrator for more help."
msgstr ""

#: ../server/handlers/applet/applet.py:78
#, python-brace-format
msgid "Your system was not found in the {PRODUCT_NAME} database"
msgstr ""

#: ../server/handlers/sat/auth.py:45
msgid "ISS is disabled on this server."
msgstr ""

#: ../server/handlers/sat/auth.py:50
#, python-format
msgid "Server \"%s\" is not enabled for ISS."
msgstr ""

#: ../server/handlers/xmlrpc/errata.py:64
#, python-format
msgid "Expected a package name, not: %s"
msgstr ""

#: ../server/handlers/xmlrpc/errata.py:115
#, python-format
msgid "Expected a package, not: %s"
msgstr ""

#: ../server/handlers/xmlrpc/proxy.py:65
#, python-format
msgid "SUSE Manager Proxy service not enabled for server profile: \"%s\""
msgstr ""

#: ../server/handlers/xmlrpc/proxy.py:85
msgid "Invalid session key"
msgstr ""

#: ../server/handlers/xmlrpc/proxy.py:93
msgid "This server ID no longer exists"
msgstr ""

#: ../server/handlers/xmlrpc/queue.py:433
#, python-format
msgid "Invalid action value type %s (%s)"
msgstr ""

#: ../server/handlers/xmlrpc/queue.py:464
#, python-format
msgid "Action %s does not belong to server %s"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:194
msgid "Required data missing"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:198
msgid "Required members missing"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:207
msgid "Attempt to register a system to an invalid username"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:839
msgid "Invalid system release version requested"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1063
msgid ""
"Unable to find a valid network interface, both ipaddr and ip6addr not found."
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1115
#, python-brace-format
msgid "{PRODUCT_NAME} Welcome Message"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1125
msgid "Privacy Statement"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1146
msgid "Expected a dictionary as a product argument"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1374
#, python-format
msgid "Invalid value '%s' for %s (%s)"
msgstr ""

#: ../server/handlers/xmlrpc/scap.py:104
msgid "Invalid system_id/action_id pair."
msgstr ""

#: ../server/handlers/xmlrpc/up2date.py:233
#, python-format
msgid "Invalid value %s (%s)"
msgstr ""

#: ../server/importlib/userAuth.py:98
msgid "You are not authorized to manage packages in the null org"
msgstr ""

#: ../server/importlib/userAuth.py:103
#, python-format
msgid "You are not allowed to manage packages in the %s org"
msgstr ""

#: ../server/importlib/userAuth.py:121
msgid "You are not allowed to perform administrative tasks"
msgstr ""

#: ../server/importlib/userAuth.py:144
#, python-format
msgid ""
"You are not allowed to manage channel %s, or that channel does not exist"
msgstr ""

#: ../server/importlib/userAuth.py:204
#, python-format
msgid ""
"\n"
"               %s Account has been deactivated on this server.\n"
"               Please contact your Org administrator for more help."
msgstr ""

#: ../server/rhnChannel.py:1992
#, python-format
msgid ""
"Your account does not have access to any channels matching "
"(release='%(release)s', arch='%(arch)s')%(www_activation)s"
msgstr ""

#: ../server/rhnChannel.py:2002
msgid ""
"\n"
"If you have a registration number, please register with it first at http://"
"www.redhat.com/apps/activate/ and then try again.\n"
"\n"
msgstr ""

#: ../server/rhnChannel.py:2012
#, python-format
msgid "Insufficient subscription permissions for release (%s, %s"
msgstr ""

#. Various messages that can be reused
#.
#. bretm 02/07/2007 -- when we have better old-client documentation, probably
#. will be safe to get rid of all this crap
#: ../server/rhnChannel.py:2276 ../server/rhnChannel.py:2287
#: ../server/rhnChannel.py:2302
msgid "System Registered but Inactive"
msgstr ""

#: ../server/rhnChannel.py:2277
#, python-format
msgid ""
"\n"
"Invalid Architecture and OS release combination (%s, %s).\n"
"Your system has been registered, but will not receive updates\n"
"because it is not subscribed to a channel. If you have not yet\n"
"activated your product for service, please visit our website at:\n"
"\n"
"     http://www.redhat.com/apps/activate/\n"
"\n"
"...to activate your product."
msgstr ""

#: ../server/rhnChannel.py:2288
#, python-format
msgid ""
"\n"
"Invalid Architecture and OS release combination (%s, %s).\n"
"Your system has been registered, but will not receive updates\n"
"because it could not be subscribed to a base channel.\n"
"Please contact your organization administrator for assistance.\n"
msgstr ""

#: ../server/rhnChannel.py:2295
#, python-format
msgid ""
"\n"
"  This system has been successfully registered, but is not yet entitled\n"
"  to service.  To entitle this system to service, login to the web site at:\n"
"\n"
"  %(entitlement_url)s\n"
msgstr ""

#: ../server/rhnChannel.py:2303
#, python-format
msgid ""
"\n"
"  This system has been successfully registered, but no service entitlements\n"
"  were available.  To entitle this system to service, login to the web site "
"at:\n"
"\n"
"  %(entitlement_url)s\n"
msgstr ""

#: ../server/rhnHandler.py:62
msgid "Please run rhn_register as root on this client"
msgstr ""

#: ../server/rhnHandler.py:75
#, python-format
msgid "Service not enabled for system profile: \"%s\""
msgstr ""

#: ../server/rhnPackage.py:49 ../server/rhnPackage.py:87
#: ../server/rhnPackage.py:107 ../server/rhnPackage.py:158
#, python-format
msgid "Invalid RPM package %s requested"
msgstr ""

#: ../server/rhnPackage.py:112
msgid "Package not found"
msgstr ""

#: ../server/rhnServer/server_class.py:97
#, python-format
msgid "Architecture `%s' is not supported"
msgstr ""

#: ../server/rhnServer/server_token.py:78
#, python-format
msgid "Token `%s' has more than one base channel assigned"
msgstr ""

#: ../server/rhnServer/server_token.py:80
msgid "Conflicting base channels"
msgstr ""

#: ../server/rhnServer/server_token.py:190
#, python-format
msgid "Failed to add server to group %s"
msgstr ""

#: ../server/rhnServer/server_token.py:503
#, python-format
msgid "Maximum usage count of %s reached"
msgstr ""

#: ../server/rhnServer/server_token.py:744
msgid ""
"Stacking of re-registration tokens with different base entitlements is not "
"supported"
msgstr ""

#: ../server/rhnServer/server_token.py:811
#, python-format
msgid "Could not find token '%s'"
msgstr ""

#. Cannot use activation keys from different orgs
#: ../server/rhnServer/server_token.py:843
msgid "Tokens from mismatching orgs"
msgstr ""

#. Two tokens with different kickstart sessions
#: ../server/rhnServer/server_token.py:853
msgid "Kickstart session mismatch"
msgstr ""

#: ../server/rhnServer/server_token.py:877
msgid "Stacking of re-registration tokens is not supported"
msgstr ""

#: ../server/rhnUser.py:289 ../server/rhnUser.py:292
msgid "Invalid username/password combination"
msgstr ""

#. nope, not reserved either
#: ../server/rhnUser.py:467
#, python-format
msgid "Username `%s' has not been reserved"
msgstr ""

#. New accounts have to specify an e-mail address
#: ../server/rhnUser.py:473
msgid "E-mail address not specified"
msgstr ""

#: ../server/rhnUser.py:509
#, python-format
msgid "username should be at least %d characters"
msgstr ""

#: ../server/rhnUser.py:512
#, python-format
msgid "username should be less than %d characters"
msgstr ""

#: ../server/rhnUser.py:523
#, python-format
msgid "username = `%s', invalid character `%s'"
msgstr ""

#: ../server/rhnUser.py:542
#, python-format
msgid "Please limit your e-mail address to %s chars"
msgstr ""

#: ../server/rhnUser.py:623
#, python-format
msgid "password must be at least %d characters"
msgstr ""

#: ../server/rhnUser.py:626
#, python-format
msgid "Password must be shorter than %d characters"
msgstr ""

#: ../server/rhnUser.py:644
#, python-format
msgid "password contains character `%s'"
msgstr ""

#: ../server/rhnUser.py:651
#, python-format
msgid "username should be at least %d characters long"
msgstr ""

#: ../server/rhnUser.py:662
#, python-format
msgid "Cannot register usernames ending with %s"
msgstr ""

#. 0-999: Red Hat client/client-like interaction errors:
#: ../common/rhnException.py:53
msgid "This does not appear to be a valid username."
msgstr ""

#: ../common/rhnException.py:54
msgid "Invalid username and password combination."
msgstr ""

#: ../common/rhnException.py:55
msgid "This login is already taken, or the password is incorrect."
msgstr ""

#: ../common/rhnException.py:56
msgid "Permission denied."
msgstr ""

#: ../common/rhnException.py:57
msgid "Object not found."
msgstr ""

#: ../common/rhnException.py:58
msgid "Invalid System Digital ID."
msgstr ""

#: ../common/rhnException.py:59
msgid "Invalid System Credentials."
msgstr ""

#: ../common/rhnException.py:60
msgid "Could not retrieve user data from database."
msgstr ""

#: ../common/rhnException.py:61
msgid "Valid username required."
msgstr ""

#: ../common/rhnException.py:62
msgid "Valid password required."
msgstr ""

#: ../common/rhnException.py:63
msgid "Minimum username length violation."
msgstr ""

#: ../common/rhnException.py:64
msgid "Minimum password length violation."
msgstr ""

#: ../common/rhnException.py:65
msgid "The username contains invalid characters."
msgstr ""

#: ../common/rhnException.py:66
msgid "File not found."
msgstr ""

#: ../common/rhnException.py:67
msgid "Architecture and OS version combination is not supported."
msgstr ""

#: ../common/rhnException.py:68
msgid "Could not retrieve system data from database."
msgstr ""

#: ../common/rhnException.py:69
msgid "Invalid arguments passed to function."
msgstr ""

#: ../common/rhnException.py:70
msgid "Unable to retrieve requested entry."
msgstr ""

#: ../common/rhnException.py:71
msgid "Could not update database entry."
msgstr ""

#: ../common/rhnException.py:72
msgid "Unsupported server architecture."
msgstr ""

#: ../common/rhnException.py:73
#, python-format
msgid ""
"\n"
"     The anonymous server functionality is no longer available.\n"
"\n"
"     Please re-register this system by running mgr_register as root.\n"
"     Please visit https://%(hostname)s/rhn/systems/SystemEntitlements.do\n"
"     or login at https://%(hostname)s, and from the \"Overview\" tab,\n"
"     select \"Subscription Management\" to enable the service for this "
"system.\n"
"     "
msgstr ""

#: ../common/rhnException.py:81
msgid "Record not available in the database."
msgstr ""

#: ../common/rhnException.py:82
msgid "Invalid value for entry."
msgstr ""

#: ../common/rhnException.py:83
#, python-format
msgid ""
"\n"
"     This system does not have a valid entitlement for SUSE Manager.\n"
"     Please visit https://%(hostname)s/rhn/systems/SystemEntitlements.do\n"
"     or login at https://%(hostname)s, and from the \"Overview\" tab,\n"
"     select \"Subscription Management\" to enable the service for this "
"system.\n"
"     "
msgstr ""

#: ../common/rhnException.py:89
msgid "Channel error"
msgstr ""

#: ../common/rhnException.py:90
msgid "Client session token is invalid."
msgstr ""

#: ../common/rhnException.py:91
msgid "Client session token has expired."
msgstr ""

#: ../common/rhnException.py:92
msgid "You are not authorized to retrieve the requested object."
msgstr ""

#: ../common/rhnException.py:93
msgid "Invalid action"
msgstr ""

#: ../common/rhnException.py:94
msgid "You are not allowed to perform administrative tasks on this system."
msgstr ""

#: ../common/rhnException.py:96
msgid "The system is already subscribed to the specified channel."
msgstr ""

#: ../common/rhnException.py:97
msgid "The system is not currently subscribed to the specified channel."
msgstr ""

#: ../common/rhnException.py:98
msgid "The specified channel does not exist."
msgstr ""

#: ../common/rhnException.py:99
msgid "Invalid channel version."
msgstr ""

#: ../common/rhnException.py:100
msgid ""
"\n"
"     User group membership limits exceeded.\n"
"\n"
"     The current settings for your account do not allow you to add another\n"
"     user account. Please check with the organization administrator for "
"your\n"
"     account if the maximum number of users allowed to subscribe to server "
"needs\n"
"     to be changed.\n"
"     "
msgstr ""

#: ../common/rhnException.py:108
msgid ""
"\n"
"     System group membership limits exceeded.\n"
"\n"
"     The current settings for your account do not allow you to add another\n"
"     system profile. Please check with the organization administrator for "
"your\n"
"     account for modifying the maximum number of system profiles that can "
"be\n"
"     subscribed to your account.\n"
"     "
msgstr ""

#: ../common/rhnException.py:116
msgid ""
"\n"
"     Invalid architecture.\n"
"\n"
"     The architecture of the package is not supported by\n"
"     "
msgstr ""

#: ../common/rhnException.py:121
msgid "Invalid RPM header"
msgstr ""

#: ../common/rhnException.py:122
msgid ""
"\n"
"    This system is already registered as a Salt Minion. If you want to "
"register it as a traditional client\n"
"    please delete it first via the web UI or API and then register it using "
"the traditional tools.\n"
"    "
msgstr ""

#. For the uploading tools
#: ../common/rhnException.py:127
msgid "Invalid information uploaded to the server"
msgstr ""

#: ../common/rhnException.py:128
msgid "Error uploading network interfaces configuration."
msgstr ""

#: ../common/rhnException.py:129
msgid ""
"\n"
"     Package Upload Failed due to uniqueness constraint violation.\n"
"     Make sure the package does not have any duplicate dependencies or\n"
"     does not already exists on the server\n"
"     "
msgstr ""

#: ../common/rhnException.py:134
msgid ""
"\n"
"     The --force rhnpush option is disabled on this server.\n"
"     Please contact your SUSE Manager administrator for more help.\n"
"     "
msgstr ""

#. 60-70: token errors
#: ../common/rhnException.py:140
msgid ""
"\n"
"     The activation token specified could not be found on the server.\n"
"     Please retry with a valid key.\n"
"     "
msgstr ""

#: ../common/rhnException.py:144
msgid "Too many systems registered using this registration token"
msgstr ""

#: ../common/rhnException.py:145
msgid "Token contains invalid, obsoleted or insufficient settings"
msgstr ""

#: ../common/rhnException.py:146
msgid "Conflicting activation tokens"
msgstr ""

#. 70-80: channel subscription errors
#: ../common/rhnException.py:149
msgid ""
"\n"
"     No matching base channel found for your system.\n"
"     "
msgstr ""

#: ../common/rhnException.py:152
msgid ""
"\n"
"     You do not have subscription permission to the designated channel.\n"
"     Please refer to your organization's channel or organization\n"
"     administrators for further details.\n"
"     "
msgstr ""

#: ../common/rhnException.py:157
msgid "You can not unsubscribe from base channel."
msgstr ""

#: ../common/rhnException.py:158
msgid "SUSE Manager or Proxy channel can not be subscribed."
msgstr ""

#. 80-90: server group errors
#: ../common/rhnException.py:161
msgid "There was an error while trying to join the system to its groups"
msgstr ""

#. 90-100: entitlement errors
#: ../common/rhnException.py:164
msgid "Unable to entitle system"
msgstr ""

#. 100-109: e-mail and uuid related faults
#: ../common/rhnException.py:167
msgid "Maximum e-mail length violation."
msgstr ""

#: ../common/rhnException.py:168
msgid "This system has been previously registered."
msgstr ""

#: ../common/rhnException.py:169
msgid "Invalid username"
msgstr ""

#. 140-159 applet errors
#: ../common/rhnException.py:172
msgid "Unable to look up server"
msgstr ""

#. 160-179: OSAD errors
#: ../common/rhnException.py:175
msgid "Required argument is missing"
msgstr ""

#. 600-699: RHEL5+ EN errors
#: ../common/rhnException.py:178
msgid "No entitlement information tied to hardware"
msgstr ""

#: ../common/rhnException.py:179
msgid "Installation number is not entitling"
msgstr ""

#. 700-799: Additional user input verification errors.
#: ../common/rhnException.py:182
msgid "Maximum username length violation"
msgstr ""

#: ../common/rhnException.py:183
msgid "Maximum password length violation"
msgstr ""

#: ../common/rhnException.py:184
msgid "This user has read only API access. Action denied."
msgstr ""

#: ../common/rhnException.py:186
msgid "System Name cannot be less than 1 character"
msgstr ""

#. 1000-1999: Proxy specific errors:
#. issued by a Proxy to the client
#: ../common/rhnException.py:190
msgid "SUSE Manager Proxy error."
msgstr ""

#: ../common/rhnException.py:191
msgid "SUSE Manager Proxy unable to login."
msgstr ""

#. issued by a SUSE Manager Server/Satellite to the proxy
#: ../common/rhnException.py:193
msgid ""
"\n"
"     SUSE Manager Proxy system ID does not match a Spacewalk Proxy Server\n"
"     in the database.\n"
"     "
msgstr ""

#: ../common/rhnException.py:197
msgid "SUSE Manager Proxy session token is invalid."
msgstr ""

#: ../common/rhnException.py:198
msgid "SUSE Manager Proxy session token has expired."
msgstr ""

#. 2000-2999: Red Hat Satellite specific errors:
#: ../common/rhnException.py:202
msgid ""
"\n"
"      user creation is not allowed via mgr_register;\n"
"     please contact your sysadmin to have your account created.\n"
"     "
msgstr ""

#: ../common/rhnException.py:206
msgid ""
"\n"
"     This SUSE Manager server is not allowed to use Inter Server Sync on "
"this server\n"
"     "
msgstr ""

#: ../common/rhnException.py:209
msgid ""
"\n"
"     Inter Server Sync is disabled on this SUSE Manager Server.\n"
"     "
msgstr ""

#. 3000-3999: XML dumper errors:
#: ../common/rhnException.py:214
msgid "Invalid datatype passed"
msgstr ""

#: ../common/rhnException.py:215
msgid "Unable to retrieve channel"
msgstr ""

#: ../common/rhnException.py:216
msgid "Unable to retrieve package"
msgstr ""

#: ../common/rhnException.py:217
msgid "Unable to retrieve erratum"
msgstr ""

#: ../common/rhnException.py:218
msgid "File is missing"
msgstr ""

#: ../common/rhnException.py:219
msgid "Function retrieval error"
msgstr ""

#: ../common/rhnException.py:220
msgid "Function execution error"
msgstr ""

#: ../common/rhnException.py:221
msgid "Missing version string"
msgstr ""

#: ../common/rhnException.py:222
msgid "Invalid version string"
msgstr ""

#: ../common/rhnException.py:223
msgid "Mismatching versions"
msgstr ""

#: ../common/rhnException.py:224
msgid "Invalid channel version"
msgstr ""

#: ../common/rhnException.py:225
msgid "No comps file for channel"
msgstr ""

#: ../common/rhnException.py:226
msgid "Unable to retrieve comps file"
msgstr ""

#. 4000 - 4999: config management errors
#: ../common/rhnException.py:229
msgid "Configuration action missing"
msgstr ""

#: ../common/rhnException.py:230
msgid "File too large"
msgstr ""

#: ../common/rhnException.py:231
msgid "File contains binary data"
msgstr ""

#: ../common/rhnException.py:232
msgid "Configuration channel is not empty"
msgstr ""

#: ../common/rhnException.py:233
msgid "Permission error"
msgstr ""

#: ../common/rhnException.py:234
msgid "Content missing for configuration file"
msgstr ""

#: ../common/rhnException.py:235
msgid "Template delimiters not specified"
msgstr ""

#: ../common/rhnException.py:236
msgid "Configuration channel does not exist"
msgstr ""

#: ../common/rhnException.py:237
msgid "Configuration channel already exists"
msgstr ""

#: ../common/rhnException.py:238
msgid "File missing from configuration channel"
msgstr ""

#: ../common/rhnException.py:239
msgid "Different revision of this file is uploaded"
msgstr ""

#: ../common/rhnException.py:240
msgid "File already uploaded to configuration channel"
msgstr ""

#: ../common/rhnException.py:241
msgid "File size exceeds remaining quota space"
msgstr ""

#: ../common/rhnException.py:242
msgid "Full path of file must be specified"
msgstr ""

#: ../common/rhnException.py:243
msgid "Invalid revision number"
msgstr ""

#: ../common/rhnException.py:244
msgid "Cannot compare files of different file type"
msgstr ""

#. 5000 - 5999: client content uploading errors
#. 5000 - 5099: crash reporting errors
#: ../common/rhnException.py:248
msgid "Crash information is invalid or incomplete"
msgstr ""

#: ../common/rhnException.py:249
msgid "Crash file information is invalid or incomplete"
msgstr ""

#: ../common/rhnException.py:250
msgid "Error composing crash directory path"
msgstr ""

#: ../common/rhnException.py:251
msgid "Error composing crash file path"
msgstr ""

#: ../common/rhnException.py:252 ../common/rhnException.py:259
msgid "Invalid content encoding"
msgstr ""

#: ../common/rhnException.py:253
msgid "Invalid crash name"
msgstr ""

#: ../common/rhnException.py:254
msgid "Crash reporting is disabled for this organization"
msgstr ""

#. 5100 - 5199: scap results reporting error
#: ../common/rhnException.py:256
msgid "SCAP results file transfer is invalid or incomplete"
msgstr ""

#: ../common/rhnException.py:257
msgid "Error composing directory path for detailed SCAP results"
msgstr ""

#: ../common/rhnException.py:258
msgid "Error composing file path for detailed SCAP results"
msgstr ""

#: ../common/rhnException.py:306
msgid ""
"\n"
"     An error has occurred while processing your request. If this problem\n"
"     persists please enter a bug report at scc.suse.com.\n"
"     If you choose to submit the bug report, please be sure to include\n"
"     details of what you were trying to do when this error occurred and\n"
"     details on how to reproduce this problem.\n"
msgstr ""

#: ../common/rhnException.py:358
#, python-format
msgid ""
"Error Message:\n"
"    %s\n"
msgstr ""

#: ../common/rhnException.py:360
#, python-format
msgid "Error Class Code: %s\n"
msgstr ""

#: ../common/rhnException.py:363
#, python-format
msgid "Error Class Info: %s\n"
msgstr ""

#: ../common/rhnException.py:365
#, python-format
msgid "Explanation: %s"
msgstr ""

#: ../common/rhnTB.py:205
#, python-format
msgid "ERROR: %s %s: %s"
msgstr ""

#: ../common/rhnTB.py:207
#, python-format
msgid "TRACEBACK: %s"
msgstr ""

#: ../satellite_tools/disk_dumper/iss.py:1294
#: ../satellite_tools/disk_dumper/iss.py:1298
#, python-format
msgid "format of %s should be at least YYYYMMDD.\n"
msgstr ""

#: ../satellite_tools/messages.py:26
#, python-format
msgid ""
"\n"
"ERROR: executing step %s. Error is:\n"
"%s\n"
msgstr ""

#: ../satellite_tools/messages.py:31
#, python-format
msgid ""
"\n"
"ERROR: there was a problem accessing the channel data from your temporary\n"
"       repository. Did you migrate all of the data from the channel ISOs\n"
"       do this directory? If so, please recheck the channels ISOs, ensure\n"
"       that you have them all, and then iteratively remount and repopulate\n"
"       the temporary repository (%s).\n"
msgstr ""

#: ../satellite_tools/messages.py:39
#, python-format
msgid ""
"\n"
"ERROR: there was a problem synchronizing the information.\n"
"       Error message: %s\n"
msgstr ""

#: ../satellite_tools/messages.py:44
#, python-format
msgid ""
"\n"
"ERROR: There was a problem communicating with the ISS Master.\n"
"       Depending on the specific error details, please review your "
"configuration,\n"
"       basic network connectivity, and/or name resolution, and try again.\n"
"       Error message: %s\n"
msgstr ""

#: ../satellite_tools/messages.py:51
#, python-format
msgid ""
"\n"
"ERROR: There was a problem communicating with the ISS Master.\n"
"       If the master satellite is older than v5.3, it does not have ISS "
"capability.\n"
"       Otherwise, depending on the specific error details, please review "
"your\n"
"       configuration, basic network connectivity, and/or name resolution, "
"and try again.\n"
"       Error message: %s\n"
msgstr ""

#: ../satellite_tools/messages.py:59
#, python-format
msgid ""
"\n"
"ERROR: a child-channel cannot be synced without its parent being synced as\n"
"       well. A parent needs to be either (a) previously synced or (b) "
"synced\n"
"       in tandem with the desired child-channel. Missing parents for this\n"
"       transaction:\n"
"       %s\n"
msgstr ""

#: ../satellite_tools/messages.py:67
#, python-format
msgid ""
"\n"
"ERROR: you are not entitled to sync a channel in this set of channels.\n"
"Please contact your SUSE Manager contact\n"
"%s"
msgstr ""

#: ../satellite_tools/messages.py:72
#, python-format
msgid "  ERROR: not enough free space (%s KB) on device."
msgstr ""

#: ../satellite_tools/messages.py:74
#, python-format
msgid "    %3d/%s Fetch successful: %s (%s bytes)"
msgstr ""

#: ../satellite_tools/messages.py:75
#, python-format
msgid "    Extinct package:  %s"
msgstr ""

#: ../satellite_tools/messages.py:76
#, python-format
msgid "   Total size: %s"
msgstr ""

#: ../satellite_tools/messages.py:77
#, python-format
msgid "      Downloaded %s of %s. Estimated remaining time: %s"
msgstr ""

#: ../satellite_tools/messages.py:78
#, python-format
msgid "    Fetch unsuccessful: %s"
msgstr ""

#: ../satellite_tools/messages.py:79
#, python-format
msgid "   RPM fetch summary: %s"
msgstr ""

#: ../satellite_tools/messages.py:80
#, python-format
msgid "       success: %d"
msgstr ""

#: ../satellite_tools/messages.py:81
#, python-format
msgid "       failed:  %d"
msgstr ""

#: ../satellite_tools/messages.py:82
#, python-format
msgid "       extinct: %d"
msgstr ""

#: ../satellite_tools/messages.py:84
#, python-format
msgid "   Retrieving / parsing *relevant* package metadata: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:85
#, python-format
msgid "   Retrieving / parsing errata data: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:86
#, python-format
msgid "   Retrieving / parsing kickstart data: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:87
#, python-format
msgid "   Retrieving / parsing kickstart tree files: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:88
#, python-format
msgid "   Importing *relevant* package metadata: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:89
msgid "   * WARNING: this may be a slow process."
msgstr ""

#: ../satellite_tools/messages.py:90
msgid "Linking packages to channels"
msgstr ""

#: ../satellite_tools/messages.py:91
#, python-format
msgid "   Importing *relevant* errata: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:92
msgid "   No new kickstartable tree to import"
msgstr ""

#: ../satellite_tools/messages.py:93
#, python-format
msgid "Importing kickstartable trees (%d)"
msgstr ""

#: ../satellite_tools/messages.py:94
#, python-format
msgid "Imported kickstartable trees (%d)"
msgstr ""

#: ../satellite_tools/reposync.py:111 ../satellite_tools/satsync.py:439
msgid "+++ sending log as an email +++"
msgstr ""

#: ../satellite_tools/reposync.py:114
#, python-format
msgid "%s sync. report from %s"
msgstr ""

#: ../satellite_tools/reposync.py:124 ../satellite_tools/satsync.py:449
msgid "+++ email requested, but there is nothing to send +++"
msgstr ""

#: ../satellite_tools/rhn_satellite_activate.py:198
#, python-format
msgid ""
"\"%s\" (specified in commandline)\n"
"could not be opened and read:\n"
"%s"
msgstr ""

#: ../satellite_tools/rhn_satellite_activate.py:205
#, python-format
msgid ""
"\"%s\" could not be opened\n"
"and/or written to:\n"
"%s"
msgstr ""

#: ../satellite_tools/satsync.py:258
#, python-format
msgid "No handler for step %s"
msgstr ""

#. Try one more time - this time it should be faster since
#. everything should be cached
#: ../satellite_tools/satsync.py:270
msgid "Environment changed, trying again..."
msgstr ""

#: ../satellite_tools/satsync.py:277
msgid "ERROR: Encountered IntegrityError: \n"
msgstr ""

#: ../satellite_tools/satsync.py:285
msgid "Repeated failures"
msgstr ""

#: ../satellite_tools/satsync.py:290
#, python-format
msgid ""
"    Import complete:\n"
"        Begin time: %s\n"
"        End time:   %s\n"
"        Elapsed:    %s\n"
"          "
msgstr ""

#: ../satellite_tools/satsync.py:311
msgid "hours"
msgstr ""

#: ../satellite_tools/satsync.py:311
msgid "minutes"
msgstr ""

#: ../satellite_tools/satsync.py:311
msgid "seconds"
msgstr ""

#: ../satellite_tools/satsync.py:357
msgid ""
"ERROR: The dump is missing package data, use --no-rpms to skip this step or "
"fix the content to include package data."
msgstr ""

#. the orgs() method doesn't exist; that's fine we just
#. won't sync the orgs
#: ../satellite_tools/satsync.py:404
msgid "The SUSE Manager master does not support syncing orgs data."
msgstr ""

#: ../satellite_tools/satsync.py:404
msgid "Skipping..."
msgstr ""

#: ../satellite_tools/satsync.py:442
#, python-format
msgid "SUSE Manager Inter Server sync. report from %s"
msgstr ""

#: ../satellite_tools/satsync.py:521
msgid " - file-system synchronization"
msgstr ""

#: ../satellite_tools/satsync.py:533 ../satellite_tools/satsync.py:541
msgid " - live synchronization"
msgstr ""

#: ../satellite_tools/satsync.py:534
#, python-brace-format
msgid ""
"ERROR: Live content synchronizing with RHN Classic Hosted is no longer "
"supported.\n"
"Please use the cdn-sync command instead unless you are attempting to sync "
"from another {PRODUCT_NAME} via Inter-Server-Sync (ISS), or from local "
"content on disk via Channel Dump ISOs."
msgstr ""

#: ../satellite_tools/satsync.py:542
#, python-format
msgid "   url: %s"
msgstr ""

#: ../satellite_tools/satsync.py:543
#, python-format
msgid "   debug/output level: %s"
msgstr ""

#: ../satellite_tools/satsync.py:553
msgid "ERROR: this server must be registered with SUSE Manager."
msgstr ""

#: ../satellite_tools/satsync.py:575
#, python-format
msgid "Retrieving / parsing %s data"
msgstr ""

#: ../satellite_tools/satsync.py:585 ../satellite_tools/satsync.py:600
msgid "*** SYSTEM INTERRUPT CALLED ***"
msgstr ""

#: ../satellite_tools/satsync.py:593
msgid "ERROR: fatal parser exception occurred "
msgstr ""

#: ../satellite_tools/satsync.py:594
#, python-format
msgid "(line: %s, col: %s msg: %s)"
msgstr ""

#: ../satellite_tools/satsync.py:598
#, python-format
msgid "ERROR: parser exception occurred: %s"
msgstr ""

#: ../satellite_tools/satsync.py:603
msgid "ERROR: exception (during parse) occurred: "
msgstr ""

#: ../satellite_tools/satsync.py:604
#, python-format
msgid ""
"   Encountered some errors with %s data (see logs (%s) for more information)"
msgstr ""

#: ../satellite_tools/satsync.py:606
#, python-format
msgid "   Encountered some errors with %s data:"
msgstr ""

#: ../satellite_tools/satsync.py:607
#, python-format
msgid "   ------- %s PARSE/IMPORT ERROR -------"
msgstr ""

#: ../satellite_tools/satsync.py:609
msgid "   ---------------------------------------"
msgstr ""

#: ../satellite_tools/satsync.py:612
#, python-format
msgid "%s data complete"
msgstr ""

#: ../satellite_tools/satsync.py:665
msgid "Retrieving / parsing channel data"
msgstr ""

#: ../satellite_tools/satsync.py:718
msgid "Channel data complete"
msgstr ""

#: ../satellite_tools/satsync.py:736
#, python-format
msgid "%10s import from %s"
msgstr ""

#: ../satellite_tools/satsync.py:739
#, python-format
msgid "%10s import from %s - %s"
msgstr ""

#: ../satellite_tools/satsync.py:743
#, python-format
msgid "%10s"
msgstr ""

#: ../satellite_tools/satsync.py:750
msgid "p"
msgstr ""

#: ../satellite_tools/satsync.py:752
msgid "."
msgstr ""

#: ../satellite_tools/satsync.py:758
msgid "   p = previously imported/synced channel"
msgstr ""

#: ../satellite_tools/satsync.py:759
msgid "   . = channel not yet imported/synced"
msgstr ""

#: ../satellite_tools/satsync.py:765
msgid "   e = channel no longer supported (end-of-service)"
msgstr ""

#: ../satellite_tools/satsync.py:767
msgid "   ? = channel label invalid --- typo?"
msgstr ""

#: ../satellite_tools/satsync.py:771
#, python-format
msgid "   %s:"
msgstr ""

#: ../satellite_tools/satsync.py:772
#, python-format
msgid "      %s %-40s %4s %s"
msgstr ""

#: ../satellite_tools/satsync.py:773
msgid "base-channels"
msgstr ""

#: ../satellite_tools/satsync.py:786 ../satellite_tools/satsync.py:1603
msgid "NONE RELEVANT"
msgstr ""

#: ../satellite_tools/satsync.py:808
msgid "end-of-service"
msgstr ""

#: ../satellite_tools/satsync.py:809
msgid "e"
msgstr ""

#: ../satellite_tools/satsync.py:815
msgid "   typos:"
msgstr ""

#: ../satellite_tools/satsync.py:816
msgid "?"
msgstr ""

#: ../satellite_tools/satsync.py:831
#, python-format
msgid "XXX: imported channels: %s"
msgstr ""

#: ../satellite_tools/satsync.py:832
#, python-format
msgid "XXX:   cached channels: %s"
msgstr ""

#: ../satellite_tools/satsync.py:837
msgid "XXX: list channels called"
msgstr ""

#: ../satellite_tools/satsync.py:855
msgid "ERROR: these channels either do not exist or are not available:"
msgstr ""

#: ../satellite_tools/satsync.py:859
#, python-format
msgid "       (to see a list of channel labels: %s --list-channels)"
msgstr ""

#: ../satellite_tools/satsync.py:904
#, python-format
msgid "   Retrieving / parsing short package metadata: %s (%s)"
msgstr ""

#: ../satellite_tools/satsync.py:965
#, python-format
msgid "Diffing package metadata (what's missing locally?): %s"
msgstr ""

#: ../satellite_tools/satsync.py:971 ../satellite_tools/satsync.py:1254
msgid "Diffing:    "
msgstr ""

#: ../satellite_tools/satsync.py:988
msgid "ERROR: incremental dump skipped"
msgstr ""

#: ../satellite_tools/satsync.py:1079
msgid "Downloading rpm packages"
msgstr ""

#: ../satellite_tools/satsync.py:1084
#, python-format
msgid "   Fetching any missing RPMs: %s (%s)"
msgstr ""

#: ../satellite_tools/satsync.py:1085 ../satellite_tools/satsync.py:1153
msgid "NONE MISSING"
msgstr ""

#: ../satellite_tools/satsync.py:1094
msgid "Processing rpm packages complete"
msgstr ""

#: ../satellite_tools/satsync.py:1121
msgid "Downloading package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1146
msgid "Downloading srpm packages"
msgstr ""

#: ../satellite_tools/satsync.py:1152
#, python-format
msgid "   Fetching any missing SRPMs: %s (%s)"
msgstr ""

#: ../satellite_tools/satsync.py:1249
#, python-format
msgid "Diffing source package metadata (what's missing locally?): %s"
msgstr ""

#: ../satellite_tools/satsync.py:1260
msgid "Downloading source package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1338 ../satellite_tools/satsync.py:2027
#, python-format
msgid "Unable to save file %s: %s"
msgstr ""

#. for
#. Retried a number of times and it still failed; log the
#. file as being failed and move on
#: ../satellite_tools/satsync.py:1345
#, python-format
msgid "Failed to fetch file %s"
msgstr ""

#: ../satellite_tools/satsync.py:1350
msgid "Downloading kickstartable trees metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1365
msgid "Downloading kickstartable trees files"
msgstr ""

#: ../satellite_tools/satsync.py:1504
#, python-format
msgid "Grabbing all patches for channel %s"
msgstr ""

#: ../satellite_tools/satsync.py:1554
msgid "Downloading patch data"
msgstr ""

#: ../satellite_tools/satsync.py:1556
msgid "Forcing download of all patch data for requested channels."
msgstr ""

#: ../satellite_tools/satsync.py:1571
msgid "Downloading patch data complete"
msgstr ""

#: ../satellite_tools/satsync.py:1576 ../satellite_tools/satsync.py:1597
msgid "Downloading:"
msgstr ""

#: ../satellite_tools/satsync.py:1579
msgid " - complete"
msgstr ""

#: ../satellite_tools/satsync.py:1624
msgid "Importing source package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1627
msgid "Importing package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1635
msgid "Importing:  "
msgstr ""

#. not in the cache
#: ../satellite_tools/satsync.py:1703
msgid ""
"Package Not Found in Cache, Clear the Cache "
"to                                  Regenerate it."
msgstr ""

#: ../satellite_tools/satsync.py:1709
msgid "Importing channel patches"
msgstr ""

#: ../satellite_tools/satsync.py:1714
#, python-format
msgid "Importing %s patches for channel %s."
msgstr ""

#. Incomplete configuration
#: ../satellite_tools/satsync.py:2113
msgid "ERROR: server.mount_point not set in the configuration file"
msgstr ""

#: ../satellite_tools/satsync.py:2117
#, python-format
msgid "ERROR: server.mount_point %s do not exist"
msgstr ""

#: ../satellite_tools/satsync.py:2122
#, python-format
msgid "ERROR: path under server.mount_point (%s)  do not exist"
msgstr ""

#: ../satellite_tools/satsync.py:2199
#, python-format
msgid "Commandline: %s"
msgstr ""

#: ../satellite_tools/satsync.py:2202
#, python-format
msgid ""
"DEBUG ONLY: max. batch-size for XML/database-import processing (1..%s).\"man "
"satellite-sync\" for more information."
msgstr ""

#: ../satellite_tools/satsync.py:2205
msgid "alternative SSL CA Cert (fullpath to cert file)"
msgstr ""

#: ../satellite_tools/satsync.py:2207
msgid "process data for this channel only"
msgstr ""

#: ../satellite_tools/satsync.py:2209
msgid ""
"disk dump will be considered to be a full export; see \"man satellite-sync\" "
"for more information."
msgstr ""

#: ../satellite_tools/satsync.py:2212
msgid "existing custom channels will also be synced (unless -c is used)"
msgstr ""

#: ../satellite_tools/satsync.py:2214
#, python-format
msgid ""
"override debug level set in /etc/rhn/rhn.conf (which is currently set at %s)."
msgstr ""

#: ../satellite_tools/satsync.py:2216
#, python-format
msgid "requested version of XML dump (default: %s)"
msgstr ""

#: ../satellite_tools/satsync.py:2218
msgid "e-mail a report of what was synced/imported"
msgstr ""

#: ../satellite_tools/satsync.py:2220
msgid "forcibly process all (not a diff of) patch metadata"
msgstr ""

#: ../satellite_tools/satsync.py:2222
msgid "Do not use an http proxy under any circumstances."
msgstr ""

#: ../satellite_tools/satsync.py:2224
msgid "alternative http proxy (hostname:port)"
msgstr ""

#: ../satellite_tools/satsync.py:2226
msgid "alternative http proxy username"
msgstr ""

#: ../satellite_tools/satsync.py:2228
msgid "alternative http proxy password"
msgstr ""

#: ../satellite_tools/satsync.py:2230
msgid "parent SUSE Manager to import content from"
msgstr ""

#: ../satellite_tools/satsync.py:2232
msgid "list all available channels and exit"
msgstr ""

#: ../satellite_tools/satsync.py:2234
msgid "help on all error codes mgr-inter-sync returns"
msgstr ""

#: ../satellite_tools/satsync.py:2236
msgid "source mount point for import - disk update only"
msgstr ""

#: ../satellite_tools/satsync.py:2238
msgid "do not process patch data"
msgstr ""

#: ../satellite_tools/satsync.py:2240
msgid "do not process kickstart data (provisioning only)"
msgstr ""

#: ../satellite_tools/satsync.py:2242
msgid "do not process full package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:2244
msgid "do not download, or process any RPMs"
msgstr ""

#: ../satellite_tools/satsync.py:2246
msgid "turn off SSL (not recommended)"
msgstr ""

#: ../satellite_tools/satsync.py:2248
msgid "org to which the sync imports data. defaults to the admin account"
msgstr ""

#: ../satellite_tools/satsync.py:2250
msgid "print the configuration and exit"
msgstr ""

#: ../satellite_tools/satsync.py:2252
msgid "alternative server with which to connect (hostname)"
msgstr ""

#: ../satellite_tools/satsync.py:2254
msgid "synchronize to this step (man satellite-sync for more info)"
msgstr ""

#: ../satellite_tools/satsync.py:2256
msgid "write complete data to tempfile before streaming to remainder of app"
msgstr ""

#: ../satellite_tools/satsync.py:2258
msgid "DEBUG ONLY: alternative path to digital system id"
msgstr ""

#: ../satellite_tools/satsync.py:2260
msgid "alternative email address(es) for sync output (--email option)"
msgstr ""

#: ../satellite_tools/satsync.py:2262
msgid "do not remove rpms when importing from local dump"
msgstr ""

#: ../satellite_tools/satsync.py:2264
msgid ""
"the fully qualified domain name of the master Satellite. Valid with --mount-"
"point only. Required if you want to import org data and channel permissions."
msgstr ""

#: ../satellite_tools/satsync.py:2274
#, python-format
msgid "ERROR: these arguments make no sense in this context (try --help): %s"
msgstr ""

#. An SQL error is fatal... crash and burn
#: ../satellite_tools/satsync.py:2286
#, python-format
msgid "ERROR: Can't connect to the database: %s"
msgstr ""

#: ../satellite_tools/satsync.py:2287
msgid "ERROR: Check if your database is running."
msgstr ""

#: ../satellite_tools/satsync.py:2322
#, python-format
msgid "ERROR: --debug-level takes an in integer value within the range %s."
msgstr ""

#: ../satellite_tools/satsync.py:2324
msgid "  0  - little logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2325
msgid "  1  - minimal logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2326
msgid "  2  - normal level of logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2327
msgid "  3  - lots of logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2328
msgid "  4+ - excessive logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2341
msgid "ERROR: The --master option is only valid with the --mount-point option"
msgstr ""

#: ../satellite_tools/satsync.py:2351
#, python-format
msgid "ERROR: Unable to lookup Org Id %s"
msgstr ""

#: ../satellite_tools/satsync.py:2360
msgid ""
"WARNING: --list-channels option overrides any --step option. --step ignored."
msgstr ""

#: ../satellite_tools/satsync.py:2375
#, python-format
msgid ""
"ERROR: '%s' is not a valid step. See 'man mgr-inter-sync' for more detail."
msgstr ""

#: ../satellite_tools/satsync.py:2407
msgid ""
"ERROR: No channels currently imported; try mgr-inter-sync --list-channels; "
"then mgr-inter-sync -c chn0 -c chn1..."
msgstr ""

#. int(None) --> TypeError
#. int('a')  --> ValueError
#: ../satellite_tools/satsync.py:2457 ../satellite_tools/satsync.py:2461
msgid "ERROR: --batch-size must have a value within the range: 1..50"
msgstr ""

#: ../satellite_tools/satsync.py:2469
#, python-format
msgid "ERROR: no such directory %s"
msgstr ""

#: ../satellite_tools/satsync.py:2474
msgid "Error Codes: Returned codes means:"
msgstr ""

#: ../satellite_tools/satsync.py:2475
msgid " -1  - Could not lock file or KeyboardInterrupt or SystemExit"
msgstr ""

#: ../satellite_tools/satsync.py:2476
msgid "  0  - User interrupted or intentional exit"
msgstr ""

#: ../satellite_tools/satsync.py:2477
msgid "  1  - attempting to run more than one instance of mgr-inter-sync."
msgstr ""

#: ../satellite_tools/satsync.py:2478
msgid "  2  - Unable to find synchronization tools."
msgstr ""

#: ../satellite_tools/satsync.py:2479
msgid "  3  - a general socket exception occurred"
msgstr ""

#: ../satellite_tools/satsync.py:2480
msgid "  4  - an SSL error occurred. Recheck your SSL settings."
msgstr ""

#: ../satellite_tools/satsync.py:2481
msgid "  5  - ISS error"
msgstr ""

#: ../satellite_tools/satsync.py:2482
msgid "  6  - unhandled exception occurred"
msgstr ""

#: ../satellite_tools/satsync.py:2483
msgid "  7  - unknown sync error"
msgstr ""

#: ../satellite_tools/satsync.py:2484
msgid "  8  - ERROR: must be root to execute"
msgstr ""

#: ../satellite_tools/satsync.py:2485
msgid "  9  - rpclib fault during synchronization init"
msgstr ""

#: ../satellite_tools/satsync.py:2486
msgid "  10 - synchronization init error"
msgstr ""

#: ../satellite_tools/satsync.py:2487
msgid "  11 - Error parsing XML stream"
msgstr ""

#: ../satellite_tools/satsync.py:2488
msgid "  12 - Channel do not exist"
msgstr ""

#: ../satellite_tools/satsync.py:2489
msgid "  13 - SQL error during importing package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:2490
msgid "  14 - SQL error during linking channel packages"
msgstr ""

#: ../satellite_tools/satsync.py:2491
msgid "  15 - SQL error during xml processing"
msgstr ""

#: ../satellite_tools/satsync.py:2492
msgid "  16 - server.mount_point not set in the configuration file"
msgstr ""

#: ../satellite_tools/satsync.py:2493
msgid ""
"  17 - SQL error during retrieving the channels already imported in the SUSE "
"Manager database"
msgstr ""

#: ../satellite_tools/satsync.py:2494
msgid "  18 - Wrong db connection string in rhn.conf"
msgstr ""

#: ../satellite_tools/satsync.py:2495
msgid "  19 - Bad arguments"
msgstr ""

#: ../satellite_tools/satsync.py:2496
msgid "  20 - Could not connect to db."
msgstr ""

#: ../satellite_tools/satsync.py:2497
msgid "  21 - Bad debug level"
msgstr ""

#: ../satellite_tools/satsync.py:2498
msgid "  22 - Not valid step"
msgstr ""

#: ../satellite_tools/satsync.py:2499
msgid "  24 - no such file"
msgstr ""

#: ../satellite_tools/satsync.py:2500
msgid "  25 - no such directory"
msgstr ""

#: ../satellite_tools/satsync.py:2501
msgid "  26 - mount_point does not exist"
msgstr ""

#: ../satellite_tools/satsync.py:2502
msgid "  27 - No such org"
msgstr ""

#: ../satellite_tools/satsync.py:2503
msgid "  28 - error: --master is only valid with --mount-point"
msgstr ""

#: ../satellite_tools/satsync.py:2510
#, python-format
msgid "ERROR: unknown dump version, try one of %s"
msgstr ""
 0707010000006C000081B40000000000000000000000016290A0C10000B7F9000000000000000000000000000000000000001B00000000spacewalk-backend/po/eu.po    # SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
#
# Translators:
# Asier Iturralde Sarasola <asier.iturralde@gmail.com>, 2012.
# Jiri Dostal <jdostal@redhat.com>, 2018. #zanata
msgid ""
msgstr ""
"Project-Id-Version: Spacewalk\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-10-16 13:34+0200\n"
"PO-Revision-Date: 2018-03-16 10:54+0000\n"
"Last-Translator: Copied by Zanata <copied-by-zanata@zanata.org>\n"
"Language-Team: Basque (http://www.transifex.com/projects/p/fedora/language/"
"eu/)\n"
"Language: eu\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: Zanata 4.6.2\n"

#: ../server/apacheAuth.py:66
#, python-format
msgid "incomplete proxy authentication token: %s"
msgstr ""

#: ../server/apacheAuth.py:84
#, python-format
msgid "Sent proxy signature %s does not match ours %s."
msgstr ""

#: ../server/apacheAuth.py:119
msgid "declined proxy authentication"
msgstr ""

#: ../server/apacheRequest.py:59
#, python-format
msgid "Invalid request received (%s)."
msgstr ""

#: ../server/apacheRequest.py:120
#, python-format
msgid ""
"IMPORTANT MESSAGE FOLLOWS:\n"
"%s"
msgstr ""

#: ../server/apacheRequest.py:149
#, python-format
msgid ""
"While running '%s': caught\n"
"%s : %s\n"
msgstr ""

#: ../server/apacheRequest.py:606
#, python-format
msgid "Invalid URI %s"
msgstr "URI baliogabea %s"

#: ../server/configFilesHandler.py:129 ../server/handlers/app/packages.py:192
#: ../server/handlers/xmlrpc/registration.py:215
#: ../server/handlers/xmlrpc/registration.py:1168
#: ../server/handlers/xmlrpc/registration.py:1307
#, python-format
msgid ""
"\n"
"                   %s Account has been deactivated on this server.\n"
"                   Please contact your Org administrator for more help."
msgstr ""

#: ../server/handlers/applet/applet.py:78
#, python-brace-format
msgid "Your system was not found in the {PRODUCT_NAME} database"
msgstr ""

#: ../server/handlers/sat/auth.py:45
msgid "ISS is disabled on this server."
msgstr ""

#: ../server/handlers/sat/auth.py:50
#, python-format
msgid "Server \"%s\" is not enabled for ISS."
msgstr ""

#: ../server/handlers/xmlrpc/errata.py:64
#, python-format
msgid "Expected a package name, not: %s"
msgstr ""

#: ../server/handlers/xmlrpc/errata.py:115
#, python-format
msgid "Expected a package, not: %s"
msgstr ""

#: ../server/handlers/xmlrpc/proxy.py:65
#, python-format
msgid "SUSE Manager Proxy service not enabled for server profile: \"%s\""
msgstr ""

#: ../server/handlers/xmlrpc/proxy.py:85
msgid "Invalid session key"
msgstr ""

#: ../server/handlers/xmlrpc/proxy.py:93
msgid "This server ID no longer exists"
msgstr ""

#: ../server/handlers/xmlrpc/queue.py:433
#, python-format
msgid "Invalid action value type %s (%s)"
msgstr ""

#: ../server/handlers/xmlrpc/queue.py:464
#, python-format
msgid "Action %s does not belong to server %s"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:194
msgid "Required data missing"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:198
msgid "Required members missing"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:207
msgid "Attempt to register a system to an invalid username"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:839
msgid "Invalid system release version requested"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1063
msgid ""
"Unable to find a valid network interface, both ipaddr and ip6addr not found."
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1115
#, python-brace-format
msgid "{PRODUCT_NAME} Welcome Message"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1125
msgid "Privacy Statement"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1146
msgid "Expected a dictionary as a product argument"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1374
#, python-format
msgid "Invalid value '%s' for %s (%s)"
msgstr ""

#: ../server/handlers/xmlrpc/scap.py:104
msgid "Invalid system_id/action_id pair."
msgstr ""

#: ../server/handlers/xmlrpc/up2date.py:233
#, python-format
msgid "Invalid value %s (%s)"
msgstr ""

#: ../server/importlib/userAuth.py:98
msgid "You are not authorized to manage packages in the null org"
msgstr ""

#: ../server/importlib/userAuth.py:103
#, python-format
msgid "You are not allowed to manage packages in the %s org"
msgstr ""

#: ../server/importlib/userAuth.py:121
msgid "You are not allowed to perform administrative tasks"
msgstr ""

#: ../server/importlib/userAuth.py:144
#, python-format
msgid ""
"You are not allowed to manage channel %s, or that channel does not exist"
msgstr ""

#: ../server/importlib/userAuth.py:204
#, python-format
msgid ""
"\n"
"               %s Account has been deactivated on this server.\n"
"               Please contact your Org administrator for more help."
msgstr ""

#: ../server/rhnChannel.py:1992
#, python-format
msgid ""
"Your account does not have access to any channels matching "
"(release='%(release)s', arch='%(arch)s')%(www_activation)s"
msgstr ""

#: ../server/rhnChannel.py:2002
msgid ""
"\n"
"If you have a registration number, please register with it first at http://"
"www.redhat.com/apps/activate/ and then try again.\n"
"\n"
msgstr ""

#: ../server/rhnChannel.py:2012
#, python-format
msgid "Insufficient subscription permissions for release (%s, %s"
msgstr ""

#. Various messages that can be reused
#.
#. bretm 02/07/2007 -- when we have better old-client documentation, probably
#. will be safe to get rid of all this crap
#: ../server/rhnChannel.py:2276 ../server/rhnChannel.py:2287
#: ../server/rhnChannel.py:2302
msgid "System Registered but Inactive"
msgstr ""

#: ../server/rhnChannel.py:2277
#, python-format
msgid ""
"\n"
"Invalid Architecture and OS release combination (%s, %s).\n"
"Your system has been registered, but will not receive updates\n"
"because it is not subscribed to a channel. If you have not yet\n"
"activated your product for service, please visit our website at:\n"
"\n"
"     http://www.redhat.com/apps/activate/\n"
"\n"
"...to activate your product."
msgstr ""

#: ../server/rhnChannel.py:2288
#, python-format
msgid ""
"\n"
"Invalid Architecture and OS release combination (%s, %s).\n"
"Your system has been registered, but will not receive updates\n"
"because it could not be subscribed to a base channel.\n"
"Please contact your organization administrator for assistance.\n"
msgstr ""

#: ../server/rhnChannel.py:2295
#, python-format
msgid ""
"\n"
"  This system has been successfully registered, but is not yet entitled\n"
"  to service.  To entitle this system to service, login to the web site at:\n"
"\n"
"  %(entitlement_url)s\n"
msgstr ""

#: ../server/rhnChannel.py:2303
#, python-format
msgid ""
"\n"
"  This system has been successfully registered, but no service entitlements\n"
"  were available.  To entitle this system to service, login to the web site "
"at:\n"
"\n"
"  %(entitlement_url)s\n"
msgstr ""

#: ../server/rhnHandler.py:62
msgid "Please run rhn_register as root on this client"
msgstr ""

#: ../server/rhnHandler.py:75
#, python-format
msgid "Service not enabled for system profile: \"%s\""
msgstr ""

#: ../server/rhnPackage.py:49 ../server/rhnPackage.py:87
#: ../server/rhnPackage.py:107 ../server/rhnPackage.py:158
#, python-format
msgid "Invalid RPM package %s requested"
msgstr ""

#: ../server/rhnPackage.py:112
msgid "Package not found"
msgstr "Ez da paketea aurkitu"

#: ../server/rhnServer/server_class.py:97
#, python-format
msgid "Architecture `%s' is not supported"
msgstr ""

#: ../server/rhnServer/server_token.py:78
#, python-format
msgid "Token `%s' has more than one base channel assigned"
msgstr ""

#: ../server/rhnServer/server_token.py:80
msgid "Conflicting base channels"
msgstr ""

#: ../server/rhnServer/server_token.py:190
#, python-format
msgid "Failed to add server to group %s"
msgstr ""

#: ../server/rhnServer/server_token.py:503
#, python-format
msgid "Maximum usage count of %s reached"
msgstr ""

#: ../server/rhnServer/server_token.py:744
msgid ""
"Stacking of re-registration tokens with different base entitlements is not "
"supported"
msgstr ""

#: ../server/rhnServer/server_token.py:811
#, python-format
msgid "Could not find token '%s'"
msgstr ""

#. Cannot use activation keys from different orgs
#: ../server/rhnServer/server_token.py:843
msgid "Tokens from mismatching orgs"
msgstr ""

#. Two tokens with different kickstart sessions
#: ../server/rhnServer/server_token.py:853
msgid "Kickstart session mismatch"
msgstr ""

#: ../server/rhnServer/server_token.py:877
msgid "Stacking of re-registration tokens is not supported"
msgstr ""

#: ../server/rhnUser.py:289 ../server/rhnUser.py:292
msgid "Invalid username/password combination"
msgstr ""

#. nope, not reserved either
#: ../server/rhnUser.py:467
#, python-format
msgid "Username `%s' has not been reserved"
msgstr ""

#. New accounts have to specify an e-mail address
#: ../server/rhnUser.py:473
msgid "E-mail address not specified"
msgstr "E-posta helbidea ez da zehaztu"

#: ../server/rhnUser.py:509
#, python-format
msgid "username should be at least %d characters"
msgstr ""

#: ../server/rhnUser.py:512
#, python-format
msgid "username should be less than %d characters"
msgstr ""

#: ../server/rhnUser.py:523
#, python-format
msgid "username = `%s', invalid character `%s'"
msgstr ""

#: ../server/rhnUser.py:542
#, python-format
msgid "Please limit your e-mail address to %s chars"
msgstr ""

#: ../server/rhnUser.py:623
#, python-format
msgid "password must be at least %d characters"
msgstr ""

#: ../server/rhnUser.py:626
#, python-format
msgid "Password must be shorter than %d characters"
msgstr ""

#: ../server/rhnUser.py:644
#, python-format
msgid "password contains character `%s'"
msgstr ""

#: ../server/rhnUser.py:651
#, python-format
msgid "username should be at least %d characters long"
msgstr ""

#: ../server/rhnUser.py:662
#, python-format
msgid "Cannot register usernames ending with %s"
msgstr ""

#. 0-999: Red Hat client/client-like interaction errors:
#: ../common/rhnException.py:53
msgid "This does not appear to be a valid username."
msgstr ""

#: ../common/rhnException.py:54
msgid "Invalid username and password combination."
msgstr ""

#: ../common/rhnException.py:55
msgid "This login is already taken, or the password is incorrect."
msgstr ""

#: ../common/rhnException.py:56
msgid "Permission denied."
msgstr ""

#: ../common/rhnException.py:57
msgid "Object not found."
msgstr "Objektua ez da aurkitu."

#: ../common/rhnException.py:58
msgid "Invalid System Digital ID."
msgstr ""

#: ../common/rhnException.py:59
msgid "Invalid System Credentials."
msgstr ""

#: ../common/rhnException.py:60
msgid "Could not retrieve user data from database."
msgstr ""

#: ../common/rhnException.py:61
msgid "Valid username required."
msgstr "Baliozko erabiltzaile-izena behar da."

#: ../common/rhnException.py:62
msgid "Valid password required."
msgstr "Baliozko pasahitza behar da."

#: ../common/rhnException.py:63
msgid "Minimum username length violation."
msgstr ""

#: ../common/rhnException.py:64
msgid "Minimum password length violation."
msgstr ""

#: ../common/rhnException.py:65
msgid "The username contains invalid characters."
msgstr ""

#: ../common/rhnException.py:66
msgid "File not found."
msgstr "Fitxategia ez da aurkitu."

#: ../common/rhnException.py:67
msgid "Architecture and OS version combination is not supported."
msgstr ""

#: ../common/rhnException.py:68
msgid "Could not retrieve system data from database."
msgstr ""

#: ../common/rhnException.py:69
msgid "Invalid arguments passed to function."
msgstr ""

#: ../common/rhnException.py:70
msgid "Unable to retrieve requested entry."
msgstr ""

#: ../common/rhnException.py:71
msgid "Could not update database entry."
msgstr ""

#: ../common/rhnException.py:72
msgid "Unsupported server architecture."
msgstr ""

#: ../common/rhnException.py:73
#, python-format
msgid ""
"\n"
"     The anonymous server functionality is no longer available.\n"
"\n"
"     Please re-register this system by running mgr_register as root.\n"
"     Please visit https://%(hostname)s/rhn/systems/SystemEntitlements.do\n"
"     or login at https://%(hostname)s, and from the \"Overview\" tab,\n"
"     select \"Subscription Management\" to enable the service for this "
"system.\n"
"     "
msgstr ""

#: ../common/rhnException.py:81
msgid "Record not available in the database."
msgstr ""

#: ../common/rhnException.py:82
msgid "Invalid value for entry."
msgstr ""

#: ../common/rhnException.py:83
#, python-format
msgid ""
"\n"
"     This system does not have a valid entitlement for SUSE Manager.\n"
"     Please visit https://%(hostname)s/rhn/systems/SystemEntitlements.do\n"
"     or login at https://%(hostname)s, and from the \"Overview\" tab,\n"
"     select \"Subscription Management\" to enable the service for this "
"system.\n"
"     "
msgstr ""

#: ../common/rhnException.py:89
msgid "Channel error"
msgstr ""

#: ../common/rhnException.py:90
msgid "Client session token is invalid."
msgstr ""

#: ../common/rhnException.py:91
msgid "Client session token has expired."
msgstr ""

#: ../common/rhnException.py:92
msgid "You are not authorized to retrieve the requested object."
msgstr ""

#: ../common/rhnException.py:93
msgid "Invalid action"
msgstr "Ekintza baliogabea"

#: ../common/rhnException.py:94
msgid "You are not allowed to perform administrative tasks on this system."
msgstr ""

#: ../common/rhnException.py:96
msgid "The system is already subscribed to the specified channel."
msgstr ""

#: ../common/rhnException.py:97
msgid "The system is not currently subscribed to the specified channel."
msgstr ""

#: ../common/rhnException.py:98
msgid "The specified channel does not exist."
msgstr ""

#: ../common/rhnException.py:99
msgid "Invalid channel version."
msgstr ""

#: ../common/rhnException.py:100
msgid ""
"\n"
"     User group membership limits exceeded.\n"
"\n"
"     The current settings for your account do not allow you to add another\n"
"     user account. Please check with the organization administrator for "
"your\n"
"     account if the maximum number of users allowed to subscribe to server "
"needs\n"
"     to be changed.\n"
"     "
msgstr ""

#: ../common/rhnException.py:108
msgid ""
"\n"
"     System group membership limits exceeded.\n"
"\n"
"     The current settings for your account do not allow you to add another\n"
"     system profile. Please check with the organization administrator for "
"your\n"
"     account for modifying the maximum number of system profiles that can "
"be\n"
"     subscribed to your account.\n"
"     "
msgstr ""

#: ../common/rhnException.py:116
msgid ""
"\n"
"     Invalid architecture.\n"
"\n"
"     The architecture of the package is not supported by\n"
"     "
msgstr ""

#: ../common/rhnException.py:121
msgid "Invalid RPM header"
msgstr "RPM goiburu baliogabea"

#: ../common/rhnException.py:122
msgid ""
"\n"
"    This system is already registered as a Salt Minion. If you want to "
"register it as a traditional client\n"
"    please delete it first via the web UI or API and then register it using "
"the traditional tools.\n"
"    "
msgstr ""

#. For the uploading tools
#: ../common/rhnException.py:127
msgid "Invalid information uploaded to the server"
msgstr ""

#: ../common/rhnException.py:128
msgid "Error uploading network interfaces configuration."
msgstr ""

#: ../common/rhnException.py:129
msgid ""
"\n"
"     Package Upload Failed due to uniqueness constraint violation.\n"
"     Make sure the package does not have any duplicate dependencies or\n"
"     does not already exists on the server\n"
"     "
msgstr ""

#: ../common/rhnException.py:134
msgid ""
"\n"
"     The --force rhnpush option is disabled on this server.\n"
"     Please contact your SUSE Manager administrator for more help.\n"
"     "
msgstr ""

#. 60-70: token errors
#: ../common/rhnException.py:140
msgid ""
"\n"
"     The activation token specified could not be found on the server.\n"
"     Please retry with a valid key.\n"
"     "
msgstr ""

#: ../common/rhnException.py:144
msgid "Too many systems registered using this registration token"
msgstr ""

#: ../common/rhnException.py:145
msgid "Token contains invalid, obsoleted or insufficient settings"
msgstr ""

#: ../common/rhnException.py:146
msgid "Conflicting activation tokens"
msgstr ""

#. 70-80: channel subscription errors
#: ../common/rhnException.py:149
msgid ""
"\n"
"     No matching base channel found for your system.\n"
"     "
msgstr ""

#: ../common/rhnException.py:152
msgid ""
"\n"
"     You do not have subscription permission to the designated channel.\n"
"     Please refer to your organization's channel or organization\n"
"     administrators for further details.\n"
"     "
msgstr ""

#: ../common/rhnException.py:157
msgid "You can not unsubscribe from base channel."
msgstr ""

#: ../common/rhnException.py:158
msgid "SUSE Manager or Proxy channel can not be subscribed."
msgstr ""

#. 80-90: server group errors
#: ../common/rhnException.py:161
msgid "There was an error while trying to join the system to its groups"
msgstr ""

#. 90-100: entitlement errors
#: ../common/rhnException.py:164
msgid "Unable to entitle system"
msgstr ""

#. 100-109: e-mail and uuid related faults
#: ../common/rhnException.py:167
msgid "Maximum e-mail length violation."
msgstr ""

#: ../common/rhnException.py:168
msgid "This system has been previously registered."
msgstr ""

#: ../common/rhnException.py:169
msgid "Invalid username"
msgstr "Erabiltzaile-izen baliogabea"

#. 140-159 applet errors
#: ../common/rhnException.py:172
msgid "Unable to look up server"
msgstr ""

#. 160-179: OSAD errors
#: ../common/rhnException.py:175
msgid "Required argument is missing"
msgstr ""

#. 600-699: RHEL5+ EN errors
#: ../common/rhnException.py:178
msgid "No entitlement information tied to hardware"
msgstr ""

#: ../common/rhnException.py:179
msgid "Installation number is not entitling"
msgstr ""

#. 700-799: Additional user input verification errors.
#: ../common/rhnException.py:182
msgid "Maximum username length violation"
msgstr ""

#: ../common/rhnException.py:183
msgid "Maximum password length violation"
msgstr ""

#: ../common/rhnException.py:184
msgid "This user has read only API access. Action denied."
msgstr ""

#: ../common/rhnException.py:186
msgid "System Name cannot be less than 1 character"
msgstr ""

#. 1000-1999: Proxy specific errors:
#. issued by a Proxy to the client
#: ../common/rhnException.py:190
msgid "SUSE Manager Proxy error."
msgstr ""

#: ../common/rhnException.py:191
msgid "SUSE Manager Proxy unable to login."
msgstr ""

#. issued by a SUSE Manager Server/Satellite to the proxy
#: ../common/rhnException.py:193
msgid ""
"\n"
"     SUSE Manager Proxy system ID does not match a Spacewalk Proxy Server\n"
"     in the database.\n"
"     "
msgstr ""

#: ../common/rhnException.py:197
msgid "SUSE Manager Proxy session token is invalid."
msgstr ""

#: ../common/rhnException.py:198
msgid "SUSE Manager Proxy session token has expired."
msgstr ""

#. 2000-2999: Red Hat Satellite specific errors:
#: ../common/rhnException.py:202
msgid ""
"\n"
"      user creation is not allowed via mgr_register;\n"
"     please contact your sysadmin to have your account created.\n"
"     "
msgstr ""

#: ../common/rhnException.py:206
msgid ""
"\n"
"     This SUSE Manager server is not allowed to use Inter Server Sync on "
"this server\n"
"     "
msgstr ""

#: ../common/rhnException.py:209
msgid ""
"\n"
"     Inter Server Sync is disabled on this SUSE Manager Server.\n"
"     "
msgstr ""

#. 3000-3999: XML dumper errors:
#: ../common/rhnException.py:214
msgid "Invalid datatype passed"
msgstr ""

#: ../common/rhnException.py:215
msgid "Unable to retrieve channel"
msgstr ""

#: ../common/rhnException.py:216
msgid "Unable to retrieve package"
msgstr ""

#: ../common/rhnException.py:217
msgid "Unable to retrieve erratum"
msgstr ""

#: ../common/rhnException.py:218
msgid "File is missing"
msgstr ""

#: ../common/rhnException.py:219
msgid "Function retrieval error"
msgstr ""

#: ../common/rhnException.py:220
msgid "Function execution error"
msgstr ""

#: ../common/rhnException.py:221
msgid "Missing version string"
msgstr ""

#: ../common/rhnException.py:222
msgid "Invalid version string"
msgstr ""

#: ../common/rhnException.py:223
msgid "Mismatching versions"
msgstr ""

#: ../common/rhnException.py:224
msgid "Invalid channel version"
msgstr ""

#: ../common/rhnException.py:225
msgid "No comps file for channel"
msgstr ""

#: ../common/rhnException.py:226
msgid "Unable to retrieve comps file"
msgstr ""

#. 4000 - 4999: config management errors
#: ../common/rhnException.py:229
msgid "Configuration action missing"
msgstr ""

#: ../common/rhnException.py:230
msgid "File too large"
msgstr ""

#: ../common/rhnException.py:231
msgid "File contains binary data"
msgstr ""

#: ../common/rhnException.py:232
msgid "Configuration channel is not empty"
msgstr ""

#: ../common/rhnException.py:233
msgid "Permission error"
msgstr ""

#: ../common/rhnException.py:234
msgid "Content missing for configuration file"
msgstr ""

#: ../common/rhnException.py:235
msgid "Template delimiters not specified"
msgstr ""

#: ../common/rhnException.py:236
msgid "Configuration channel does not exist"
msgstr ""

#: ../common/rhnException.py:237
msgid "Configuration channel already exists"
msgstr ""

#: ../common/rhnException.py:238
msgid "File missing from configuration channel"
msgstr ""

#: ../common/rhnException.py:239
msgid "Different revision of this file is uploaded"
msgstr ""

#: ../common/rhnException.py:240
msgid "File already uploaded to configuration channel"
msgstr ""

#: ../common/rhnException.py:241
msgid "File size exceeds remaining quota space"
msgstr ""

#: ../common/rhnException.py:242
msgid "Full path of file must be specified"
msgstr ""

#: ../common/rhnException.py:243
msgid "Invalid revision number"
msgstr ""

#: ../common/rhnException.py:244
msgid "Cannot compare files of different file type"
msgstr ""

#. 5000 - 5999: client content uploading errors
#. 5000 - 5099: crash reporting errors
#: ../common/rhnException.py:248
msgid "Crash information is invalid or incomplete"
msgstr ""

#: ../common/rhnException.py:249
msgid "Crash file information is invalid or incomplete"
msgstr ""

#: ../common/rhnException.py:250
msgid "Error composing crash directory path"
msgstr ""

#: ../common/rhnException.py:251
msgid "Error composing crash file path"
msgstr ""

#: ../common/rhnException.py:252 ../common/rhnException.py:259
#, fuzzy
msgid "Invalid content encoding"
msgstr "Ekintza baliogabea"

#: ../common/rhnException.py:253
#, fuzzy
msgid "Invalid crash name"
msgstr "Erabiltzaile-izen baliogabea"

#: ../common/rhnException.py:254
msgid "Crash reporting is disabled for this organization"
msgstr ""

#. 5100 - 5199: scap results reporting error
#: ../common/rhnException.py:256
msgid "SCAP results file transfer is invalid or incomplete"
msgstr ""

#: ../common/rhnException.py:257
msgid "Error composing directory path for detailed SCAP results"
msgstr ""

#: ../common/rhnException.py:258
msgid "Error composing file path for detailed SCAP results"
msgstr ""

#: ../common/rhnException.py:306
msgid ""
"\n"
"     An error has occurred while processing your request. If this problem\n"
"     persists please enter a bug report at scc.suse.com.\n"
"     If you choose to submit the bug report, please be sure to include\n"
"     details of what you were trying to do when this error occurred and\n"
"     details on how to reproduce this problem.\n"
msgstr ""

#: ../common/rhnException.py:358
#, python-format
msgid ""
"Error Message:\n"
"    %s\n"
msgstr ""

#: ../common/rhnException.py:360
#, python-format
msgid "Error Class Code: %s\n"
msgstr ""

#: ../common/rhnException.py:363
#, python-format
msgid "Error Class Info: %s\n"
msgstr ""

#: ../common/rhnException.py:365
#, python-format
msgid "Explanation: %s"
msgstr ""

#: ../common/rhnTB.py:205
#, python-format
msgid "ERROR: %s %s: %s"
msgstr ""

#: ../common/rhnTB.py:207
#, python-format
msgid "TRACEBACK: %s"
msgstr ""

#: ../satellite_tools/disk_dumper/iss.py:1294
#: ../satellite_tools/disk_dumper/iss.py:1298
#, python-format
msgid "format of %s should be at least YYYYMMDD.\n"
msgstr ""

#: ../satellite_tools/messages.py:26
#, python-format
msgid ""
"\n"
"ERROR: executing step %s. Error is:\n"
"%s\n"
msgstr ""

#: ../satellite_tools/messages.py:31
#, python-format
msgid ""
"\n"
"ERROR: there was a problem accessing the channel data from your temporary\n"
"       repository. Did you migrate all of the data from the channel ISOs\n"
"       do this directory? If so, please recheck the channels ISOs, ensure\n"
"       that you have them all, and then iteratively remount and repopulate\n"
"       the temporary repository (%s).\n"
msgstr ""

#: ../satellite_tools/messages.py:39
#, python-format
msgid ""
"\n"
"ERROR: there was a problem synchronizing the information.\n"
"       Error message: %s\n"
msgstr ""

#: ../satellite_tools/messages.py:44
#, python-format
msgid ""
"\n"
"ERROR: There was a problem communicating with the ISS Master.\n"
"       Depending on the specific error details, please review your "
"configuration,\n"
"       basic network connectivity, and/or name resolution, and try again.\n"
"       Error message: %s\n"
msgstr ""

#: ../satellite_tools/messages.py:51
#, python-format
msgid ""
"\n"
"ERROR: There was a problem communicating with the ISS Master.\n"
"       If the master satellite is older than v5.3, it does not have ISS "
"capability.\n"
"       Otherwise, depending on the specific error details, please review "
"your\n"
"       configuration, basic network connectivity, and/or name resolution, "
"and try again.\n"
"       Error message: %s\n"
msgstr ""

#: ../satellite_tools/messages.py:59
#, python-format
msgid ""
"\n"
"ERROR: a child-channel cannot be synced without its parent being synced as\n"
"       well. A parent needs to be either (a) previously synced or (b) "
"synced\n"
"       in tandem with the desired child-channel. Missing parents for this\n"
"       transaction:\n"
"       %s\n"
msgstr ""

#: ../satellite_tools/messages.py:67
#, python-format
msgid ""
"\n"
"ERROR: you are not entitled to sync a channel in this set of channels.\n"
"Please contact your SUSE Manager contact\n"
"%s"
msgstr ""

#: ../satellite_tools/messages.py:72
#, python-format
msgid "  ERROR: not enough free space (%s KB) on device."
msgstr ""

#: ../satellite_tools/messages.py:74
#, python-format
msgid "    %3d/%s Fetch successful: %s (%s bytes)"
msgstr ""

#: ../satellite_tools/messages.py:75
#, python-format
msgid "    Extinct package:  %s"
msgstr ""

#: ../satellite_tools/messages.py:76
#, python-format
msgid "   Total size: %s"
msgstr ""

#: ../satellite_tools/messages.py:77
#, python-format
msgid "      Downloaded %s of %s. Estimated remaining time: %s"
msgstr ""

#: ../satellite_tools/messages.py:78
#, python-format
msgid "    Fetch unsuccessful: %s"
msgstr ""

#: ../satellite_tools/messages.py:79
#, python-format
msgid "   RPM fetch summary: %s"
msgstr ""

#: ../satellite_tools/messages.py:80
#, python-format
msgid "       success: %d"
msgstr ""

#: ../satellite_tools/messages.py:81
#, python-format
msgid "       failed:  %d"
msgstr ""

#: ../satellite_tools/messages.py:82
#, python-format
msgid "       extinct: %d"
msgstr ""

#: ../satellite_tools/messages.py:84
#, python-format
msgid "   Retrieving / parsing *relevant* package metadata: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:85
#, python-format
msgid "   Retrieving / parsing errata data: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:86
#, python-format
msgid "   Retrieving / parsing kickstart data: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:87
#, python-format
msgid "   Retrieving / parsing kickstart tree files: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:88
#, python-format
msgid "   Importing *relevant* package metadata: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:89
msgid "   * WARNING: this may be a slow process."
msgstr ""

#: ../satellite_tools/messages.py:90
msgid "Linking packages to channels"
msgstr ""

#: ../satellite_tools/messages.py:91
#, python-format
msgid "   Importing *relevant* errata: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:92
msgid "   No new kickstartable tree to import"
msgstr ""

#: ../satellite_tools/messages.py:93
#, python-format
msgid "Importing kickstartable trees (%d)"
msgstr ""

#: ../satellite_tools/messages.py:94
#, python-format
msgid "Imported kickstartable trees (%d)"
msgstr ""

#: ../satellite_tools/reposync.py:111 ../satellite_tools/satsync.py:439
msgid "+++ sending log as an email +++"
msgstr ""

#: ../satellite_tools/reposync.py:114
#, python-format
msgid "%s sync. report from %s"
msgstr ""

#: ../satellite_tools/reposync.py:124 ../satellite_tools/satsync.py:449
msgid "+++ email requested, but there is nothing to send +++"
msgstr ""

#: ../satellite_tools/rhn_satellite_activate.py:198
#, python-format
msgid ""
"\"%s\" (specified in commandline)\n"
"could not be opened and read:\n"
"%s"
msgstr ""

#: ../satellite_tools/rhn_satellite_activate.py:205
#, python-format
msgid ""
"\"%s\" could not be opened\n"
"and/or written to:\n"
"%s"
msgstr ""

#: ../satellite_tools/satsync.py:258
#, python-format
msgid "No handler for step %s"
msgstr ""

#. Try one more time - this time it should be faster since
#. everything should be cached
#: ../satellite_tools/satsync.py:270
msgid "Environment changed, trying again..."
msgstr ""

#: ../satellite_tools/satsync.py:277
msgid "ERROR: Encountered IntegrityError: \n"
msgstr ""

#: ../satellite_tools/satsync.py:285
msgid "Repeated failures"
msgstr ""

#: ../satellite_tools/satsync.py:290
#, python-format
msgid ""
"    Import complete:\n"
"        Begin time: %s\n"
"        End time:   %s\n"
"        Elapsed:    %s\n"
"          "
msgstr ""

#: ../satellite_tools/satsync.py:311
msgid "hours"
msgstr ""

#: ../satellite_tools/satsync.py:311
msgid "minutes"
msgstr ""

#: ../satellite_tools/satsync.py:311
msgid "seconds"
msgstr ""

#: ../satellite_tools/satsync.py:357
msgid ""
"ERROR: The dump is missing package data, use --no-rpms to skip this step or "
"fix the content to include package data."
msgstr ""

#. the orgs() method doesn't exist; that's fine we just
#. won't sync the orgs
#: ../satellite_tools/satsync.py:404
msgid "The SUSE Manager master does not support syncing orgs data."
msgstr ""

#: ../satellite_tools/satsync.py:404
msgid "Skipping..."
msgstr ""

#: ../satellite_tools/satsync.py:442
#, python-format
msgid "SUSE Manager Inter Server sync. report from %s"
msgstr ""

#: ../satellite_tools/satsync.py:521
msgid " - file-system synchronization"
msgstr ""

#: ../satellite_tools/satsync.py:533 ../satellite_tools/satsync.py:541
msgid " - live synchronization"
msgstr ""

#: ../satellite_tools/satsync.py:534
#, python-brace-format
msgid ""
"ERROR: Live content synchronizing with RHN Classic Hosted is no longer "
"supported.\n"
"Please use the cdn-sync command instead unless you are attempting to sync "
"from another {PRODUCT_NAME} via Inter-Server-Sync (ISS), or from local "
"content on disk via Channel Dump ISOs."
msgstr ""

#: ../satellite_tools/satsync.py:542
#, python-format
msgid "   url: %s"
msgstr ""

#: ../satellite_tools/satsync.py:543
#, python-format
msgid "   debug/output level: %s"
msgstr ""

#: ../satellite_tools/satsync.py:553
msgid "ERROR: this server must be registered with SUSE Manager."
msgstr ""

#: ../satellite_tools/satsync.py:575
#, python-format
msgid "Retrieving / parsing %s data"
msgstr ""

#: ../satellite_tools/satsync.py:585 ../satellite_tools/satsync.py:600
msgid "*** SYSTEM INTERRUPT CALLED ***"
msgstr ""

#: ../satellite_tools/satsync.py:593
msgid "ERROR: fatal parser exception occurred "
msgstr ""

#: ../satellite_tools/satsync.py:594
#, python-format
msgid "(line: %s, col: %s msg: %s)"
msgstr ""

#: ../satellite_tools/satsync.py:598
#, python-format
msgid "ERROR: parser exception occurred: %s"
msgstr ""

#: ../satellite_tools/satsync.py:603
msgid "ERROR: exception (during parse) occurred: "
msgstr ""

#: ../satellite_tools/satsync.py:604
#, python-format
msgid ""
"   Encountered some errors with %s data (see logs (%s) for more information)"
msgstr ""

#: ../satellite_tools/satsync.py:606
#, python-format
msgid "   Encountered some errors with %s data:"
msgstr ""

#: ../satellite_tools/satsync.py:607
#, python-format
msgid "   ------- %s PARSE/IMPORT ERROR -------"
msgstr ""

#: ../satellite_tools/satsync.py:609
msgid "   ---------------------------------------"
msgstr ""

#: ../satellite_tools/satsync.py:612
#, python-format
msgid "%s data complete"
msgstr ""

#: ../satellite_tools/satsync.py:665
msgid "Retrieving / parsing channel data"
msgstr ""

#: ../satellite_tools/satsync.py:718
msgid "Channel data complete"
msgstr ""

#: ../satellite_tools/satsync.py:736
#, python-format
msgid "%10s import from %s"
msgstr ""

#: ../satellite_tools/satsync.py:739
#, python-format
msgid "%10s import from %s - %s"
msgstr ""

#: ../satellite_tools/satsync.py:743
#, python-format
msgid "%10s"
msgstr ""

#: ../satellite_tools/satsync.py:750
msgid "p"
msgstr ""

#: ../satellite_tools/satsync.py:752
msgid "."
msgstr ""

#: ../satellite_tools/satsync.py:758
msgid "   p = previously imported/synced channel"
msgstr ""

#: ../satellite_tools/satsync.py:759
msgid "   . = channel not yet imported/synced"
msgstr ""

#: ../satellite_tools/satsync.py:765
msgid "   e = channel no longer supported (end-of-service)"
msgstr ""

#: ../satellite_tools/satsync.py:767
msgid "   ? = channel label invalid --- typo?"
msgstr ""

#: ../satellite_tools/satsync.py:771
#, python-format
msgid "   %s:"
msgstr ""

#: ../satellite_tools/satsync.py:772
#, python-format
msgid "      %s %-40s %4s %s"
msgstr ""

#: ../satellite_tools/satsync.py:773
msgid "base-channels"
msgstr ""

#: ../satellite_tools/satsync.py:786 ../satellite_tools/satsync.py:1603
msgid "NONE RELEVANT"
msgstr ""

#: ../satellite_tools/satsync.py:808
msgid "end-of-service"
msgstr ""

#: ../satellite_tools/satsync.py:809
msgid "e"
msgstr ""

#: ../satellite_tools/satsync.py:815
msgid "   typos:"
msgstr ""

#: ../satellite_tools/satsync.py:816
msgid "?"
msgstr ""

#: ../satellite_tools/satsync.py:831
#, python-format
msgid "XXX: imported channels: %s"
msgstr ""

#: ../satellite_tools/satsync.py:832
#, python-format
msgid "XXX:   cached channels: %s"
msgstr ""

#: ../satellite_tools/satsync.py:837
msgid "XXX: list channels called"
msgstr ""

#: ../satellite_tools/satsync.py:855
msgid "ERROR: these channels either do not exist or are not available:"
msgstr ""

#: ../satellite_tools/satsync.py:859
#, python-format
msgid "       (to see a list of channel labels: %s --list-channels)"
msgstr ""

#: ../satellite_tools/satsync.py:904
#, python-format
msgid "   Retrieving / parsing short package metadata: %s (%s)"
msgstr ""

#: ../satellite_tools/satsync.py:965
#, python-format
msgid "Diffing package metadata (what's missing locally?): %s"
msgstr ""

#: ../satellite_tools/satsync.py:971 ../satellite_tools/satsync.py:1254
msgid "Diffing:    "
msgstr ""

#: ../satellite_tools/satsync.py:988
msgid "ERROR: incremental dump skipped"
msgstr ""

#: ../satellite_tools/satsync.py:1079
msgid "Downloading rpm packages"
msgstr ""

#: ../satellite_tools/satsync.py:1084
#, python-format
msgid "   Fetching any missing RPMs: %s (%s)"
msgstr ""

#: ../satellite_tools/satsync.py:1085 ../satellite_tools/satsync.py:1153
msgid "NONE MISSING"
msgstr ""

#: ../satellite_tools/satsync.py:1094
msgid "Processing rpm packages complete"
msgstr ""

#: ../satellite_tools/satsync.py:1121
msgid "Downloading package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1146
msgid "Downloading srpm packages"
msgstr ""

#: ../satellite_tools/satsync.py:1152
#, python-format
msgid "   Fetching any missing SRPMs: %s (%s)"
msgstr ""

#: ../satellite_tools/satsync.py:1249
#, python-format
msgid "Diffing source package metadata (what's missing locally?): %s"
msgstr ""

#: ../satellite_tools/satsync.py:1260
msgid "Downloading source package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1338 ../satellite_tools/satsync.py:2027
#, python-format
msgid "Unable to save file %s: %s"
msgstr ""

#. for
#. Retried a number of times and it still failed; log the
#. file as being failed and move on
#: ../satellite_tools/satsync.py:1345
#, python-format
msgid "Failed to fetch file %s"
msgstr ""

#: ../satellite_tools/satsync.py:1350
msgid "Downloading kickstartable trees metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1365
msgid "Downloading kickstartable trees files"
msgstr ""

#: ../satellite_tools/satsync.py:1504
#, python-format
msgid "Grabbing all patches for channel %s"
msgstr ""

#: ../satellite_tools/satsync.py:1554
msgid "Downloading patch data"
msgstr ""

#: ../satellite_tools/satsync.py:1556
msgid "Forcing download of all patch data for requested channels."
msgstr ""

#: ../satellite_tools/satsync.py:1571
msgid "Downloading patch data complete"
msgstr ""

#: ../satellite_tools/satsync.py:1576 ../satellite_tools/satsync.py:1597
msgid "Downloading:"
msgstr ""

#: ../satellite_tools/satsync.py:1579
msgid " - complete"
msgstr ""

#: ../satellite_tools/satsync.py:1624
msgid "Importing source package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1627
msgid "Importing package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1635
msgid "Importing:  "
msgstr ""

#. not in the cache
#: ../satellite_tools/satsync.py:1703
msgid ""
"Package Not Found in Cache, Clear the Cache "
"to                                  Regenerate it."
msgstr ""

#: ../satellite_tools/satsync.py:1709
msgid "Importing channel patches"
msgstr ""

#: ../satellite_tools/satsync.py:1714
#, python-format
msgid "Importing %s patches for channel %s."
msgstr ""

#. Incomplete configuration
#: ../satellite_tools/satsync.py:2113
msgid "ERROR: server.mount_point not set in the configuration file"
msgstr ""

#: ../satellite_tools/satsync.py:2117
#, python-format
msgid "ERROR: server.mount_point %s do not exist"
msgstr ""

#: ../satellite_tools/satsync.py:2122
#, python-format
msgid "ERROR: path under server.mount_point (%s)  do not exist"
msgstr ""

#: ../satellite_tools/satsync.py:2199
#, python-format
msgid "Commandline: %s"
msgstr ""

#: ../satellite_tools/satsync.py:2202
#, python-format
msgid ""
"DEBUG ONLY: max. batch-size for XML/database-import processing (1..%s).\"man "
"satellite-sync\" for more information."
msgstr ""

#: ../satellite_tools/satsync.py:2205
msgid "alternative SSL CA Cert (fullpath to cert file)"
msgstr ""

#: ../satellite_tools/satsync.py:2207
msgid "process data for this channel only"
msgstr ""

#: ../satellite_tools/satsync.py:2209
msgid ""
"disk dump will be considered to be a full export; see \"man satellite-sync\" "
"for more information."
msgstr ""

#: ../satellite_tools/satsync.py:2212
msgid "existing custom channels will also be synced (unless -c is used)"
msgstr ""

#: ../satellite_tools/satsync.py:2214
#, python-format
msgid ""
"override debug level set in /etc/rhn/rhn.conf (which is currently set at %s)."
msgstr ""

#: ../satellite_tools/satsync.py:2216
#, python-format
msgid "requested version of XML dump (default: %s)"
msgstr ""

#: ../satellite_tools/satsync.py:2218
msgid "e-mail a report of what was synced/imported"
msgstr ""

#: ../satellite_tools/satsync.py:2220
msgid "forcibly process all (not a diff of) patch metadata"
msgstr ""

#: ../satellite_tools/satsync.py:2222
msgid "Do not use an http proxy under any circumstances."
msgstr ""

#: ../satellite_tools/satsync.py:2224
msgid "alternative http proxy (hostname:port)"
msgstr ""

#: ../satellite_tools/satsync.py:2226
msgid "alternative http proxy username"
msgstr ""

#: ../satellite_tools/satsync.py:2228
msgid "alternative http proxy password"
msgstr ""

#: ../satellite_tools/satsync.py:2230
msgid "parent SUSE Manager to import content from"
msgstr ""

#: ../satellite_tools/satsync.py:2232
msgid "list all available channels and exit"
msgstr ""

#: ../satellite_tools/satsync.py:2234
msgid "help on all error codes mgr-inter-sync returns"
msgstr ""

#: ../satellite_tools/satsync.py:2236
msgid "source mount point for import - disk update only"
msgstr ""

#: ../satellite_tools/satsync.py:2238
msgid "do not process patch data"
msgstr ""

#: ../satellite_tools/satsync.py:2240
msgid "do not process kickstart data (provisioning only)"
msgstr ""

#: ../satellite_tools/satsync.py:2242
msgid "do not process full package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:2244
msgid "do not download, or process any RPMs"
msgstr ""

#: ../satellite_tools/satsync.py:2246
msgid "turn off SSL (not recommended)"
msgstr ""

#: ../satellite_tools/satsync.py:2248
msgid "org to which the sync imports data. defaults to the admin account"
msgstr ""

#: ../satellite_tools/satsync.py:2250
msgid "print the configuration and exit"
msgstr ""

#: ../satellite_tools/satsync.py:2252
msgid "alternative server with which to connect (hostname)"
msgstr ""

#: ../satellite_tools/satsync.py:2254
msgid "synchronize to this step (man satellite-sync for more info)"
msgstr ""

#: ../satellite_tools/satsync.py:2256
msgid "write complete data to tempfile before streaming to remainder of app"
msgstr ""

#: ../satellite_tools/satsync.py:2258
msgid "DEBUG ONLY: alternative path to digital system id"
msgstr ""

#: ../satellite_tools/satsync.py:2260
msgid "alternative email address(es) for sync output (--email option)"
msgstr ""

#: ../satellite_tools/satsync.py:2262
msgid "do not remove rpms when importing from local dump"
msgstr ""

#: ../satellite_tools/satsync.py:2264
msgid ""
"the fully qualified domain name of the master Satellite. Valid with --mount-"
"point only. Required if you want to import org data and channel permissions."
msgstr ""

#: ../satellite_tools/satsync.py:2274
#, python-format
msgid "ERROR: these arguments make no sense in this context (try --help): %s"
msgstr ""

#. An SQL error is fatal... crash and burn
#: ../satellite_tools/satsync.py:2286
#, python-format
msgid "ERROR: Can't connect to the database: %s"
msgstr ""

#: ../satellite_tools/satsync.py:2287
msgid "ERROR: Check if your database is running."
msgstr ""

#: ../satellite_tools/satsync.py:2322
#, python-format
msgid "ERROR: --debug-level takes an in integer value within the range %s."
msgstr ""

#: ../satellite_tools/satsync.py:2324
msgid "  0  - little logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2325
msgid "  1  - minimal logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2326
msgid "  2  - normal level of logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2327
msgid "  3  - lots of logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2328
msgid "  4+ - excessive logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2341
msgid "ERROR: The --master option is only valid with the --mount-point option"
msgstr ""

#: ../satellite_tools/satsync.py:2351
#, python-format
msgid "ERROR: Unable to lookup Org Id %s"
msgstr ""

#: ../satellite_tools/satsync.py:2360
msgid ""
"WARNING: --list-channels option overrides any --step option. --step ignored."
msgstr ""

#: ../satellite_tools/satsync.py:2375
#, python-format
msgid ""
"ERROR: '%s' is not a valid step. See 'man mgr-inter-sync' for more detail."
msgstr ""

#: ../satellite_tools/satsync.py:2407
msgid ""
"ERROR: No channels currently imported; try mgr-inter-sync --list-channels; "
"then mgr-inter-sync -c chn0 -c chn1..."
msgstr ""

#. int(None) --> TypeError
#. int('a')  --> ValueError
#: ../satellite_tools/satsync.py:2457 ../satellite_tools/satsync.py:2461
msgid "ERROR: --batch-size must have a value within the range: 1..50"
msgstr ""

#: ../satellite_tools/satsync.py:2469
#, python-format
msgid "ERROR: no such directory %s"
msgstr ""

#: ../satellite_tools/satsync.py:2474
msgid "Error Codes: Returned codes means:"
msgstr ""

#: ../satellite_tools/satsync.py:2475
msgid " -1  - Could not lock file or KeyboardInterrupt or SystemExit"
msgstr ""

#: ../satellite_tools/satsync.py:2476
msgid "  0  - User interrupted or intentional exit"
msgstr ""

#: ../satellite_tools/satsync.py:2477
msgid "  1  - attempting to run more than one instance of mgr-inter-sync."
msgstr ""

#: ../satellite_tools/satsync.py:2478
msgid "  2  - Unable to find synchronization tools."
msgstr ""

#: ../satellite_tools/satsync.py:2479
msgid "  3  - a general socket exception occurred"
msgstr ""

#: ../satellite_tools/satsync.py:2480
msgid "  4  - an SSL error occurred. Recheck your SSL settings."
msgstr ""

#: ../satellite_tools/satsync.py:2481
msgid "  5  - ISS error"
msgstr ""

#: ../satellite_tools/satsync.py:2482
msgid "  6  - unhandled exception occurred"
msgstr ""

#: ../satellite_tools/satsync.py:2483
msgid "  7  - unknown sync error"
msgstr ""

#: ../satellite_tools/satsync.py:2484
msgid "  8  - ERROR: must be root to execute"
msgstr ""

#: ../satellite_tools/satsync.py:2485
msgid "  9  - rpclib fault during synchronization init"
msgstr ""

#: ../satellite_tools/satsync.py:2486
msgid "  10 - synchronization init error"
msgstr ""

#: ../satellite_tools/satsync.py:2487
msgid "  11 - Error parsing XML stream"
msgstr ""

#: ../satellite_tools/satsync.py:2488
msgid "  12 - Channel do not exist"
msgstr ""

#: ../satellite_tools/satsync.py:2489
msgid "  13 - SQL error during importing package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:2490
msgid "  14 - SQL error during linking channel packages"
msgstr ""

#: ../satellite_tools/satsync.py:2491
msgid "  15 - SQL error during xml processing"
msgstr ""

#: ../satellite_tools/satsync.py:2492
msgid "  16 - server.mount_point not set in the configuration file"
msgstr ""

#: ../satellite_tools/satsync.py:2493
msgid ""
"  17 - SQL error during retrieving the channels already imported in the SUSE "
"Manager database"
msgstr ""

#: ../satellite_tools/satsync.py:2494
msgid "  18 - Wrong db connection string in rhn.conf"
msgstr ""

#: ../satellite_tools/satsync.py:2495
msgid "  19 - Bad arguments"
msgstr ""

#: ../satellite_tools/satsync.py:2496
msgid "  20 - Could not connect to db."
msgstr ""

#: ../satellite_tools/satsync.py:2497
msgid "  21 - Bad debug level"
msgstr ""

#: ../satellite_tools/satsync.py:2498
msgid "  22 - Not valid step"
msgstr ""

#: ../satellite_tools/satsync.py:2499
msgid "  24 - no such file"
msgstr ""

#: ../satellite_tools/satsync.py:2500
msgid "  25 - no such directory"
msgstr ""

#: ../satellite_tools/satsync.py:2501
msgid "  26 - mount_point does not exist"
msgstr ""

#: ../satellite_tools/satsync.py:2502
msgid "  27 - No such org"
msgstr ""

#: ../satellite_tools/satsync.py:2503
msgid "  28 - error: --master is only valid with --mount-point"
msgstr ""

#: ../satellite_tools/satsync.py:2510
#, python-format
msgid "ERROR: unknown dump version, try one of %s"
msgstr ""
   0707010000006D000081B40000000000000000000000016290A0C10000B6D5000000000000000000000000000000000000001B00000000spacewalk-backend/po/fa.po    # SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
#
# Translators:
# Ali Yousefi Sabzevar <aysabzevar@gmail.com>, 2010.
msgid ""
msgstr ""
"Project-Id-Version: Spacewalk\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-10-16 13:34+0200\n"
"PO-Revision-Date: 2020-07-28 12:34+0000\n"
"Last-Translator: hayyan rostami <hayyan71@yahoo.com>\n"
"Language-Team: Persian <https://l10n.opensuse.org/projects/uyuni/backend/fa/"
">\n"
"Language: fa\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: Weblate 3.6.1\n"

#: ../server/apacheAuth.py:66
#, python-format
msgid "incomplete proxy authentication token: %s"
msgstr ""

#: ../server/apacheAuth.py:84
#, python-format
msgid "Sent proxy signature %s does not match ours %s."
msgstr ""

#: ../server/apacheAuth.py:119
msgid "declined proxy authentication"
msgstr ""

#: ../server/apacheRequest.py:59
#, python-format
msgid "Invalid request received (%s)."
msgstr ""

#: ../server/apacheRequest.py:120
#, python-format
msgid ""
"IMPORTANT MESSAGE FOLLOWS:\n"
"%s"
msgstr ""

#: ../server/apacheRequest.py:149
#, python-format
msgid ""
"While running '%s': caught\n"
"%s : %s\n"
msgstr ""

#: ../server/apacheRequest.py:606
#, python-format
msgid "Invalid URI %s"
msgstr ""

#: ../server/configFilesHandler.py:129 ../server/handlers/app/packages.py:192
#: ../server/handlers/xmlrpc/registration.py:215
#: ../server/handlers/xmlrpc/registration.py:1168
#: ../server/handlers/xmlrpc/registration.py:1307
#, python-format
msgid ""
"\n"
"                   %s Account has been deactivated on this server.\n"
"                   Please contact your Org administrator for more help."
msgstr ""

#: ../server/handlers/applet/applet.py:78
#, python-brace-format
msgid "Your system was not found in the {PRODUCT_NAME} database"
msgstr ""

#: ../server/handlers/sat/auth.py:45
msgid "ISS is disabled on this server."
msgstr ""

#: ../server/handlers/sat/auth.py:50
#, python-format
msgid "Server \"%s\" is not enabled for ISS."
msgstr ""

#: ../server/handlers/xmlrpc/errata.py:64
#, python-format
msgid "Expected a package name, not: %s"
msgstr ""

#: ../server/handlers/xmlrpc/errata.py:115
#, python-format
msgid "Expected a package, not: %s"
msgstr ""

#: ../server/handlers/xmlrpc/proxy.py:65
#, python-format
msgid "SUSE Manager Proxy service not enabled for server profile: \"%s\""
msgstr ""

#: ../server/handlers/xmlrpc/proxy.py:85
msgid "Invalid session key"
msgstr ""

#: ../server/handlers/xmlrpc/proxy.py:93
msgid "This server ID no longer exists"
msgstr ""

#: ../server/handlers/xmlrpc/queue.py:433
#, python-format
msgid "Invalid action value type %s (%s)"
msgstr ""

#: ../server/handlers/xmlrpc/queue.py:464
#, python-format
msgid "Action %s does not belong to server %s"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:194
msgid "Required data missing"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:198
msgid "Required members missing"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:207
msgid "Attempt to register a system to an invalid username"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:839
msgid "Invalid system release version requested"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1063
msgid ""
"Unable to find a valid network interface, both ipaddr and ip6addr not found."
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1115
#, python-brace-format
msgid "{PRODUCT_NAME} Welcome Message"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1125
msgid "Privacy Statement"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1146
msgid "Expected a dictionary as a product argument"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1374
#, python-format
msgid "Invalid value '%s' for %s (%s)"
msgstr ""

#: ../server/handlers/xmlrpc/scap.py:104
msgid "Invalid system_id/action_id pair."
msgstr ""

#: ../server/handlers/xmlrpc/up2date.py:233
#, python-format
msgid "Invalid value %s (%s)"
msgstr ""

#: ../server/importlib/userAuth.py:98
msgid "You are not authorized to manage packages in the null org"
msgstr ""

#: ../server/importlib/userAuth.py:103
#, python-format
msgid "You are not allowed to manage packages in the %s org"
msgstr ""

#: ../server/importlib/userAuth.py:121
msgid "You are not allowed to perform administrative tasks"
msgstr ""

#: ../server/importlib/userAuth.py:144
#, python-format
msgid ""
"You are not allowed to manage channel %s, or that channel does not exist"
msgstr ""

#: ../server/importlib/userAuth.py:204
#, python-format
msgid ""
"\n"
"               %s Account has been deactivated on this server.\n"
"               Please contact your Org administrator for more help."
msgstr ""

#: ../server/rhnChannel.py:1992
#, python-format
msgid ""
"Your account does not have access to any channels matching "
"(release='%(release)s', arch='%(arch)s')%(www_activation)s"
msgstr ""

#: ../server/rhnChannel.py:2002
msgid ""
"\n"
"If you have a registration number, please register with it first at http://"
"www.redhat.com/apps/activate/ and then try again.\n"
"\n"
msgstr ""

#: ../server/rhnChannel.py:2012
#, python-format
msgid "Insufficient subscription permissions for release (%s, %s"
msgstr ""

#. Various messages that can be reused
#.
#. bretm 02/07/2007 -- when we have better old-client documentation, probably
#. will be safe to get rid of all this crap
#: ../server/rhnChannel.py:2276 ../server/rhnChannel.py:2287
#: ../server/rhnChannel.py:2302
msgid "System Registered but Inactive"
msgstr ""

#: ../server/rhnChannel.py:2277
#, python-format
msgid ""
"\n"
"Invalid Architecture and OS release combination (%s, %s).\n"
"Your system has been registered, but will not receive updates\n"
"because it is not subscribed to a channel. If you have not yet\n"
"activated your product for service, please visit our website at:\n"
"\n"
"     http://www.redhat.com/apps/activate/\n"
"\n"
"...to activate your product."
msgstr ""

#: ../server/rhnChannel.py:2288
#, python-format
msgid ""
"\n"
"Invalid Architecture and OS release combination (%s, %s).\n"
"Your system has been registered, but will not receive updates\n"
"because it could not be subscribed to a base channel.\n"
"Please contact your organization administrator for assistance.\n"
msgstr ""

#: ../server/rhnChannel.py:2295
#, python-format
msgid ""
"\n"
"  This system has been successfully registered, but is not yet entitled\n"
"  to service.  To entitle this system to service, login to the web site at:\n"
"\n"
"  %(entitlement_url)s\n"
msgstr ""

#: ../server/rhnChannel.py:2303
#, python-format
msgid ""
"\n"
"  This system has been successfully registered, but no service entitlements\n"
"  were available.  To entitle this system to service, login to the web site "
"at:\n"
"\n"
"  %(entitlement_url)s\n"
msgstr ""

#: ../server/rhnHandler.py:62
msgid "Please run rhn_register as root on this client"
msgstr "Ù„Ø·ÙØ§ rhn_register Ø±Ø§ Ø¨Ù‡ Ø¹Ù†ÙˆØ§Ù† Ø±ÛŒØ´Ù‡ Ø¨Ø± Ø±ÙˆÛŒ Ø§ÛŒÙ† Ù…Ø´ØªØ±ÛŒ Ø§Ø¬Ø±Ø§ Ú©Ù†ÛŒØ¯"

#: ../server/rhnHandler.py:75
#, python-format
msgid "Service not enabled for system profile: \"%s\""
msgstr ""

#: ../server/rhnPackage.py:49 ../server/rhnPackage.py:87
#: ../server/rhnPackage.py:107 ../server/rhnPackage.py:158
#, python-format
msgid "Invalid RPM package %s requested"
msgstr ""

#: ../server/rhnPackage.py:112
msgid "Package not found"
msgstr ""

#: ../server/rhnServer/server_class.py:97
#, python-format
msgid "Architecture `%s' is not supported"
msgstr ""

#: ../server/rhnServer/server_token.py:78
#, python-format
msgid "Token `%s' has more than one base channel assigned"
msgstr ""

#: ../server/rhnServer/server_token.py:80
msgid "Conflicting base channels"
msgstr ""

#: ../server/rhnServer/server_token.py:190
#, python-format
msgid "Failed to add server to group %s"
msgstr ""

#: ../server/rhnServer/server_token.py:503
#, python-format
msgid "Maximum usage count of %s reached"
msgstr ""

#: ../server/rhnServer/server_token.py:744
msgid ""
"Stacking of re-registration tokens with different base entitlements is not "
"supported"
msgstr ""

#: ../server/rhnServer/server_token.py:811
#, python-format
msgid "Could not find token '%s'"
msgstr ""

#. Cannot use activation keys from different orgs
#: ../server/rhnServer/server_token.py:843
msgid "Tokens from mismatching orgs"
msgstr ""

#. Two tokens with different kickstart sessions
#: ../server/rhnServer/server_token.py:853
msgid "Kickstart session mismatch"
msgstr ""

#: ../server/rhnServer/server_token.py:877
msgid "Stacking of re-registration tokens is not supported"
msgstr ""

#: ../server/rhnUser.py:289 ../server/rhnUser.py:292
msgid "Invalid username/password combination"
msgstr ""

#. nope, not reserved either
#: ../server/rhnUser.py:467
#, python-format
msgid "Username `%s' has not been reserved"
msgstr ""

#. New accounts have to specify an e-mail address
#: ../server/rhnUser.py:473
msgid "E-mail address not specified"
msgstr ""

#: ../server/rhnUser.py:509
#, python-format
msgid "username should be at least %d characters"
msgstr ""

#: ../server/rhnUser.py:512
#, python-format
msgid "username should be less than %d characters"
msgstr ""

#: ../server/rhnUser.py:523
#, python-format
msgid "username = `%s', invalid character `%s'"
msgstr ""

#: ../server/rhnUser.py:542
#, python-format
msgid "Please limit your e-mail address to %s chars"
msgstr ""

#: ../server/rhnUser.py:623
#, python-format
msgid "password must be at least %d characters"
msgstr ""

#: ../server/rhnUser.py:626
#, python-format
msgid "Password must be shorter than %d characters"
msgstr ""

#: ../server/rhnUser.py:644
#, python-format
msgid "password contains character `%s'"
msgstr ""

#: ../server/rhnUser.py:651
#, python-format
msgid "username should be at least %d characters long"
msgstr ""

#: ../server/rhnUser.py:662
#, python-format
msgid "Cannot register usernames ending with %s"
msgstr ""

#. 0-999: Red Hat client/client-like interaction errors:
#: ../common/rhnException.py:53
msgid "This does not appear to be a valid username."
msgstr ""

#: ../common/rhnException.py:54
msgid "Invalid username and password combination."
msgstr ""

#: ../common/rhnException.py:55
msgid "This login is already taken, or the password is incorrect."
msgstr ""

#: ../common/rhnException.py:56
msgid "Permission denied."
msgstr ""

#: ../common/rhnException.py:57
msgid "Object not found."
msgstr ""

#: ../common/rhnException.py:58
msgid "Invalid System Digital ID."
msgstr ""

#: ../common/rhnException.py:59
msgid "Invalid System Credentials."
msgstr ""

#: ../common/rhnException.py:60
msgid "Could not retrieve user data from database."
msgstr ""

#: ../common/rhnException.py:61
msgid "Valid username required."
msgstr ""

#: ../common/rhnException.py:62
msgid "Valid password required."
msgstr ""

#: ../common/rhnException.py:63
msgid "Minimum username length violation."
msgstr ""

#: ../common/rhnException.py:64
msgid "Minimum password length violation."
msgstr ""

#: ../common/rhnException.py:65
msgid "The username contains invalid characters."
msgstr ""

#: ../common/rhnException.py:66
msgid "File not found."
msgstr ""

#: ../common/rhnException.py:67
msgid "Architecture and OS version combination is not supported."
msgstr ""

#: ../common/rhnException.py:68
msgid "Could not retrieve system data from database."
msgstr ""

#: ../common/rhnException.py:69
msgid "Invalid arguments passed to function."
msgstr ""

#: ../common/rhnException.py:70
msgid "Unable to retrieve requested entry."
msgstr ""

#: ../common/rhnException.py:71
msgid "Could not update database entry."
msgstr ""

#: ../common/rhnException.py:72
msgid "Unsupported server architecture."
msgstr ""

#: ../common/rhnException.py:73
#, python-format
msgid ""
"\n"
"     The anonymous server functionality is no longer available.\n"
"\n"
"     Please re-register this system by running mgr_register as root.\n"
"     Please visit https://%(hostname)s/rhn/systems/SystemEntitlements.do\n"
"     or login at https://%(hostname)s, and from the \"Overview\" tab,\n"
"     select \"Subscription Management\" to enable the service for this "
"system.\n"
"     "
msgstr ""

#: ../common/rhnException.py:81
msgid "Record not available in the database."
msgstr ""

#: ../common/rhnException.py:82
msgid "Invalid value for entry."
msgstr ""

#: ../common/rhnException.py:83
#, python-format
msgid ""
"\n"
"     This system does not have a valid entitlement for SUSE Manager.\n"
"     Please visit https://%(hostname)s/rhn/systems/SystemEntitlements.do\n"
"     or login at https://%(hostname)s, and from the \"Overview\" tab,\n"
"     select \"Subscription Management\" to enable the service for this "
"system.\n"
"     "
msgstr ""

#: ../common/rhnException.py:89
msgid "Channel error"
msgstr ""

#: ../common/rhnException.py:90
msgid "Client session token is invalid."
msgstr ""

#: ../common/rhnException.py:91
msgid "Client session token has expired."
msgstr ""

#: ../common/rhnException.py:92
msgid "You are not authorized to retrieve the requested object."
msgstr ""

#: ../common/rhnException.py:93
msgid "Invalid action"
msgstr ""

#: ../common/rhnException.py:94
msgid "You are not allowed to perform administrative tasks on this system."
msgstr ""

#: ../common/rhnException.py:96
msgid "The system is already subscribed to the specified channel."
msgstr ""

#: ../common/rhnException.py:97
msgid "The system is not currently subscribed to the specified channel."
msgstr ""

#: ../common/rhnException.py:98
msgid "The specified channel does not exist."
msgstr ""

#: ../common/rhnException.py:99
msgid "Invalid channel version."
msgstr ""

#: ../common/rhnException.py:100
msgid ""
"\n"
"     User group membership limits exceeded.\n"
"\n"
"     The current settings for your account do not allow you to add another\n"
"     user account. Please check with the organization administrator for "
"your\n"
"     account if the maximum number of users allowed to subscribe to server "
"needs\n"
"     to be changed.\n"
"     "
msgstr ""

#: ../common/rhnException.py:108
msgid ""
"\n"
"     System group membership limits exceeded.\n"
"\n"
"     The current settings for your account do not allow you to add another\n"
"     system profile. Please check with the organization administrator for "
"your\n"
"     account for modifying the maximum number of system profiles that can "
"be\n"
"     subscribed to your account.\n"
"     "
msgstr ""

#: ../common/rhnException.py:116
msgid ""
"\n"
"     Invalid architecture.\n"
"\n"
"     The architecture of the package is not supported by\n"
"     "
msgstr ""

#: ../common/rhnException.py:121
msgid "Invalid RPM header"
msgstr ""

#: ../common/rhnException.py:122
msgid ""
"\n"
"    This system is already registered as a Salt Minion. If you want to "
"register it as a traditional client\n"
"    please delete it first via the web UI or API and then register it using "
"the traditional tools.\n"
"    "
msgstr ""

#. For the uploading tools
#: ../common/rhnException.py:127
msgid "Invalid information uploaded to the server"
msgstr ""

#: ../common/rhnException.py:128
msgid "Error uploading network interfaces configuration."
msgstr ""

#: ../common/rhnException.py:129
msgid ""
"\n"
"     Package Upload Failed due to uniqueness constraint violation.\n"
"     Make sure the package does not have any duplicate dependencies or\n"
"     does not already exists on the server\n"
"     "
msgstr ""

#: ../common/rhnException.py:134
msgid ""
"\n"
"     The --force rhnpush option is disabled on this server.\n"
"     Please contact your SUSE Manager administrator for more help.\n"
"     "
msgstr ""

#. 60-70: token errors
#: ../common/rhnException.py:140
msgid ""
"\n"
"     The activation token specified could not be found on the server.\n"
"     Please retry with a valid key.\n"
"     "
msgstr ""

#: ../common/rhnException.py:144
msgid "Too many systems registered using this registration token"
msgstr ""

#: ../common/rhnException.py:145
msgid "Token contains invalid, obsoleted or insufficient settings"
msgstr ""

#: ../common/rhnException.py:146
msgid "Conflicting activation tokens"
msgstr ""

#. 70-80: channel subscription errors
#: ../common/rhnException.py:149
msgid ""
"\n"
"     No matching base channel found for your system.\n"
"     "
msgstr ""

#: ../common/rhnException.py:152
msgid ""
"\n"
"     You do not have subscription permission to the designated channel.\n"
"     Please refer to your organization's channel or organization\n"
"     administrators for further details.\n"
"     "
msgstr ""

#: ../common/rhnException.py:157
msgid "You can not unsubscribe from base channel."
msgstr ""

#: ../common/rhnException.py:158
msgid "SUSE Manager or Proxy channel can not be subscribed."
msgstr ""

#. 80-90: server group errors
#: ../common/rhnException.py:161
msgid "There was an error while trying to join the system to its groups"
msgstr ""

#. 90-100: entitlement errors
#: ../common/rhnException.py:164
msgid "Unable to entitle system"
msgstr ""

#. 100-109: e-mail and uuid related faults
#: ../common/rhnException.py:167
msgid "Maximum e-mail length violation."
msgstr ""

#: ../common/rhnException.py:168
msgid "This system has been previously registered."
msgstr ""

#: ../common/rhnException.py:169
msgid "Invalid username"
msgstr ""

#. 140-159 applet errors
#: ../common/rhnException.py:172
msgid "Unable to look up server"
msgstr ""

#. 160-179: OSAD errors
#: ../common/rhnException.py:175
msgid "Required argument is missing"
msgstr ""

#. 600-699: RHEL5+ EN errors
#: ../common/rhnException.py:178
msgid "No entitlement information tied to hardware"
msgstr ""

#: ../common/rhnException.py:179
msgid "Installation number is not entitling"
msgstr ""

#. 700-799: Additional user input verification errors.
#: ../common/rhnException.py:182
msgid "Maximum username length violation"
msgstr ""

#: ../common/rhnException.py:183
msgid "Maximum password length violation"
msgstr ""

#: ../common/rhnException.py:184
msgid "This user has read only API access. Action denied."
msgstr ""

#: ../common/rhnException.py:186
msgid "System Name cannot be less than 1 character"
msgstr ""

#. 1000-1999: Proxy specific errors:
#. issued by a Proxy to the client
#: ../common/rhnException.py:190
msgid "SUSE Manager Proxy error."
msgstr ""

#: ../common/rhnException.py:191
msgid "SUSE Manager Proxy unable to login."
msgstr ""

#. issued by a SUSE Manager Server/Satellite to the proxy
#: ../common/rhnException.py:193
msgid ""
"\n"
"     SUSE Manager Proxy system ID does not match a Spacewalk Proxy Server\n"
"     in the database.\n"
"     "
msgstr ""

#: ../common/rhnException.py:197
msgid "SUSE Manager Proxy session token is invalid."
msgstr ""

#: ../common/rhnException.py:198
msgid "SUSE Manager Proxy session token has expired."
msgstr ""

#. 2000-2999: Red Hat Satellite specific errors:
#: ../common/rhnException.py:202
msgid ""
"\n"
"      user creation is not allowed via mgr_register;\n"
"     please contact your sysadmin to have your account created.\n"
"     "
msgstr ""

#: ../common/rhnException.py:206
msgid ""
"\n"
"     This SUSE Manager server is not allowed to use Inter Server Sync on "
"this server\n"
"     "
msgstr ""

#: ../common/rhnException.py:209
msgid ""
"\n"
"     Inter Server Sync is disabled on this SUSE Manager Server.\n"
"     "
msgstr ""

#. 3000-3999: XML dumper errors:
#: ../common/rhnException.py:214
msgid "Invalid datatype passed"
msgstr ""

#: ../common/rhnException.py:215
msgid "Unable to retrieve channel"
msgstr ""

#: ../common/rhnException.py:216
msgid "Unable to retrieve package"
msgstr ""

#: ../common/rhnException.py:217
msgid "Unable to retrieve erratum"
msgstr ""

#: ../common/rhnException.py:218
msgid "File is missing"
msgstr ""

#: ../common/rhnException.py:219
msgid "Function retrieval error"
msgstr ""

#: ../common/rhnException.py:220
msgid "Function execution error"
msgstr ""

#: ../common/rhnException.py:221
msgid "Missing version string"
msgstr ""

#: ../common/rhnException.py:222
msgid "Invalid version string"
msgstr ""

#: ../common/rhnException.py:223
msgid "Mismatching versions"
msgstr ""

#: ../common/rhnException.py:224
msgid "Invalid channel version"
msgstr ""

#: ../common/rhnException.py:225
msgid "No comps file for channel"
msgstr ""

#: ../common/rhnException.py:226
msgid "Unable to retrieve comps file"
msgstr ""

#. 4000 - 4999: config management errors
#: ../common/rhnException.py:229
msgid "Configuration action missing"
msgstr ""

#: ../common/rhnException.py:230
msgid "File too large"
msgstr ""

#: ../common/rhnException.py:231
msgid "File contains binary data"
msgstr ""

#: ../common/rhnException.py:232
msgid "Configuration channel is not empty"
msgstr ""

#: ../common/rhnException.py:233
msgid "Permission error"
msgstr ""

#: ../common/rhnException.py:234
msgid "Content missing for configuration file"
msgstr ""

#: ../common/rhnException.py:235
msgid "Template delimiters not specified"
msgstr ""

#: ../common/rhnException.py:236
msgid "Configuration channel does not exist"
msgstr ""

#: ../common/rhnException.py:237
msgid "Configuration channel already exists"
msgstr ""

#: ../common/rhnException.py:238
msgid "File missing from configuration channel"
msgstr ""

#: ../common/rhnException.py:239
msgid "Different revision of this file is uploaded"
msgstr ""

#: ../common/rhnException.py:240
msgid "File already uploaded to configuration channel"
msgstr ""

#: ../common/rhnException.py:241
msgid "File size exceeds remaining quota space"
msgstr ""

#: ../common/rhnException.py:242
msgid "Full path of file must be specified"
msgstr ""

#: ../common/rhnException.py:243
msgid "Invalid revision number"
msgstr ""

#: ../common/rhnException.py:244
msgid "Cannot compare files of different file type"
msgstr ""

#. 5000 - 5999: client content uploading errors
#. 5000 - 5099: crash reporting errors
#: ../common/rhnException.py:248
msgid "Crash information is invalid or incomplete"
msgstr ""

#: ../common/rhnException.py:249
msgid "Crash file information is invalid or incomplete"
msgstr ""

#: ../common/rhnException.py:250
msgid "Error composing crash directory path"
msgstr ""

#: ../common/rhnException.py:251
msgid "Error composing crash file path"
msgstr ""

#: ../common/rhnException.py:252 ../common/rhnException.py:259
msgid "Invalid content encoding"
msgstr ""

#: ../common/rhnException.py:253
msgid "Invalid crash name"
msgstr ""

#: ../common/rhnException.py:254
msgid "Crash reporting is disabled for this organization"
msgstr ""

#. 5100 - 5199: scap results reporting error
#: ../common/rhnException.py:256
msgid "SCAP results file transfer is invalid or incomplete"
msgstr ""

#: ../common/rhnException.py:257
msgid "Error composing directory path for detailed SCAP results"
msgstr ""

#: ../common/rhnException.py:258
msgid "Error composing file path for detailed SCAP results"
msgstr ""

#: ../common/rhnException.py:306
msgid ""
"\n"
"     An error has occurred while processing your request. If this problem\n"
"     persists please enter a bug report at scc.suse.com.\n"
"     If you choose to submit the bug report, please be sure to include\n"
"     details of what you were trying to do when this error occurred and\n"
"     details on how to reproduce this problem.\n"
msgstr ""

#: ../common/rhnException.py:358
#, python-format
msgid ""
"Error Message:\n"
"    %s\n"
msgstr ""

#: ../common/rhnException.py:360
#, python-format
msgid "Error Class Code: %s\n"
msgstr ""

#: ../common/rhnException.py:363
#, python-format
msgid "Error Class Info: %s\n"
msgstr ""

#: ../common/rhnException.py:365
#, python-format
msgid "Explanation: %s"
msgstr ""

#: ../common/rhnTB.py:205
#, python-format
msgid "ERROR: %s %s: %s"
msgstr ""

#: ../common/rhnTB.py:207
#, python-format
msgid "TRACEBACK: %s"
msgstr ""

#: ../satellite_tools/disk_dumper/iss.py:1294
#: ../satellite_tools/disk_dumper/iss.py:1298
#, python-format
msgid "format of %s should be at least YYYYMMDD.\n"
msgstr ""

#: ../satellite_tools/messages.py:26
#, python-format
msgid ""
"\n"
"ERROR: executing step %s. Error is:\n"
"%s\n"
msgstr ""

#: ../satellite_tools/messages.py:31
#, python-format
msgid ""
"\n"
"ERROR: there was a problem accessing the channel data from your temporary\n"
"       repository. Did you migrate all of the data from the channel ISOs\n"
"       do this directory? If so, please recheck the channels ISOs, ensure\n"
"       that you have them all, and then iteratively remount and repopulate\n"
"       the temporary repository (%s).\n"
msgstr ""

#: ../satellite_tools/messages.py:39
#, python-format
msgid ""
"\n"
"ERROR: there was a problem synchronizing the information.\n"
"       Error message: %s\n"
msgstr ""

#: ../satellite_tools/messages.py:44
#, python-format
msgid ""
"\n"
"ERROR: There was a problem communicating with the ISS Master.\n"
"       Depending on the specific error details, please review your "
"configuration,\n"
"       basic network connectivity, and/or name resolution, and try again.\n"
"       Error message: %s\n"
msgstr ""

#: ../satellite_tools/messages.py:51
#, python-format
msgid ""
"\n"
"ERROR: There was a problem communicating with the ISS Master.\n"
"       If the master satellite is older than v5.3, it does not have ISS "
"capability.\n"
"       Otherwise, depending on the specific error details, please review "
"your\n"
"       configuration, basic network connectivity, and/or name resolution, "
"and try again.\n"
"       Error message: %s\n"
msgstr ""

#: ../satellite_tools/messages.py:59
#, python-format
msgid ""
"\n"
"ERROR: a child-channel cannot be synced without its parent being synced as\n"
"       well. A parent needs to be either (a) previously synced or (b) "
"synced\n"
"       in tandem with the desired child-channel. Missing parents for this\n"
"       transaction:\n"
"       %s\n"
msgstr ""

#: ../satellite_tools/messages.py:67
#, python-format
msgid ""
"\n"
"ERROR: you are not entitled to sync a channel in this set of channels.\n"
"Please contact your SUSE Manager contact\n"
"%s"
msgstr ""

#: ../satellite_tools/messages.py:72
#, python-format
msgid "  ERROR: not enough free space (%s KB) on device."
msgstr ""

#: ../satellite_tools/messages.py:74
#, python-format
msgid "    %3d/%s Fetch successful: %s (%s bytes)"
msgstr ""

#: ../satellite_tools/messages.py:75
#, python-format
msgid "    Extinct package:  %s"
msgstr ""

#: ../satellite_tools/messages.py:76
#, python-format
msgid "   Total size: %s"
msgstr ""

#: ../satellite_tools/messages.py:77
#, python-format
msgid "      Downloaded %s of %s. Estimated remaining time: %s"
msgstr ""

#: ../satellite_tools/messages.py:78
#, python-format
msgid "    Fetch unsuccessful: %s"
msgstr ""

#: ../satellite_tools/messages.py:79
#, python-format
msgid "   RPM fetch summary: %s"
msgstr ""

#: ../satellite_tools/messages.py:80
#, python-format
msgid "       success: %d"
msgstr ""

#: ../satellite_tools/messages.py:81
#, python-format
msgid "       failed:  %d"
msgstr ""

#: ../satellite_tools/messages.py:82
#, python-format
msgid "       extinct: %d"
msgstr ""

#: ../satellite_tools/messages.py:84
#, python-format
msgid "   Retrieving / parsing *relevant* package metadata: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:85
#, python-format
msgid "   Retrieving / parsing errata data: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:86
#, python-format
msgid "   Retrieving / parsing kickstart data: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:87
#, python-format
msgid "   Retrieving / parsing kickstart tree files: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:88
#, python-format
msgid "   Importing *relevant* package metadata: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:89
msgid "   * WARNING: this may be a slow process."
msgstr ""

#: ../satellite_tools/messages.py:90
msgid "Linking packages to channels"
msgstr ""

#: ../satellite_tools/messages.py:91
#, python-format
msgid "   Importing *relevant* errata: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:92
msgid "   No new kickstartable tree to import"
msgstr ""

#: ../satellite_tools/messages.py:93
#, python-format
msgid "Importing kickstartable trees (%d)"
msgstr ""

#: ../satellite_tools/messages.py:94
#, python-format
msgid "Imported kickstartable trees (%d)"
msgstr ""

#: ../satellite_tools/reposync.py:111 ../satellite_tools/satsync.py:439
msgid "+++ sending log as an email +++"
msgstr ""

#: ../satellite_tools/reposync.py:114
#, python-format
msgid "%s sync. report from %s"
msgstr ""

#: ../satellite_tools/reposync.py:124 ../satellite_tools/satsync.py:449
msgid "+++ email requested, but there is nothing to send +++"
msgstr ""

#: ../satellite_tools/rhn_satellite_activate.py:198
#, python-format
msgid ""
"\"%s\" (specified in commandline)\n"
"could not be opened and read:\n"
"%s"
msgstr ""

#: ../satellite_tools/rhn_satellite_activate.py:205
#, python-format
msgid ""
"\"%s\" could not be opened\n"
"and/or written to:\n"
"%s"
msgstr ""

#: ../satellite_tools/satsync.py:258
#, python-format
msgid "No handler for step %s"
msgstr ""

#. Try one more time - this time it should be faster since
#. everything should be cached
#: ../satellite_tools/satsync.py:270
msgid "Environment changed, trying again..."
msgstr ""

#: ../satellite_tools/satsync.py:277
msgid "ERROR: Encountered IntegrityError: \n"
msgstr ""

#: ../satellite_tools/satsync.py:285
msgid "Repeated failures"
msgstr ""

#: ../satellite_tools/satsync.py:290
#, python-format
msgid ""
"    Import complete:\n"
"        Begin time: %s\n"
"        End time:   %s\n"
"        Elapsed:    %s\n"
"          "
msgstr ""

#: ../satellite_tools/satsync.py:311
msgid "hours"
msgstr ""

#: ../satellite_tools/satsync.py:311
msgid "minutes"
msgstr ""

#: ../satellite_tools/satsync.py:311
msgid "seconds"
msgstr ""

#: ../satellite_tools/satsync.py:357
msgid ""
"ERROR: The dump is missing package data, use --no-rpms to skip this step or "
"fix the content to include package data."
msgstr ""

#. the orgs() method doesn't exist; that's fine we just
#. won't sync the orgs
#: ../satellite_tools/satsync.py:404
msgid "The SUSE Manager master does not support syncing orgs data."
msgstr ""

#: ../satellite_tools/satsync.py:404
msgid "Skipping..."
msgstr ""

#: ../satellite_tools/satsync.py:442
#, python-format
msgid "SUSE Manager Inter Server sync. report from %s"
msgstr ""

#: ../satellite_tools/satsync.py:521
msgid " - file-system synchronization"
msgstr ""

#: ../satellite_tools/satsync.py:533 ../satellite_tools/satsync.py:541
msgid " - live synchronization"
msgstr ""

#: ../satellite_tools/satsync.py:534
#, python-brace-format
msgid ""
"ERROR: Live content synchronizing with RHN Classic Hosted is no longer "
"supported.\n"
"Please use the cdn-sync command instead unless you are attempting to sync "
"from another {PRODUCT_NAME} via Inter-Server-Sync (ISS), or from local "
"content on disk via Channel Dump ISOs."
msgstr ""

#: ../satellite_tools/satsync.py:542
#, python-format
msgid "   url: %s"
msgstr ""

#: ../satellite_tools/satsync.py:543
#, python-format
msgid "   debug/output level: %s"
msgstr ""

#: ../satellite_tools/satsync.py:553
msgid "ERROR: this server must be registered with SUSE Manager."
msgstr ""

#: ../satellite_tools/satsync.py:575
#, python-format
msgid "Retrieving / parsing %s data"
msgstr ""

#: ../satellite_tools/satsync.py:585 ../satellite_tools/satsync.py:600
msgid "*** SYSTEM INTERRUPT CALLED ***"
msgstr ""

#: ../satellite_tools/satsync.py:593
msgid "ERROR: fatal parser exception occurred "
msgstr ""

#: ../satellite_tools/satsync.py:594
#, python-format
msgid "(line: %s, col: %s msg: %s)"
msgstr ""

#: ../satellite_tools/satsync.py:598
#, python-format
msgid "ERROR: parser exception occurred: %s"
msgstr ""

#: ../satellite_tools/satsync.py:603
msgid "ERROR: exception (during parse) occurred: "
msgstr ""

#: ../satellite_tools/satsync.py:604
#, python-format
msgid ""
"   Encountered some errors with %s data (see logs (%s) for more information)"
msgstr ""

#: ../satellite_tools/satsync.py:606
#, python-format
msgid "   Encountered some errors with %s data:"
msgstr ""

#: ../satellite_tools/satsync.py:607
#, python-format
msgid "   ------- %s PARSE/IMPORT ERROR -------"
msgstr ""

#: ../satellite_tools/satsync.py:609
msgid "   ---------------------------------------"
msgstr ""

#: ../satellite_tools/satsync.py:612
#, python-format
msgid "%s data complete"
msgstr ""

#: ../satellite_tools/satsync.py:665
msgid "Retrieving / parsing channel data"
msgstr ""

#: ../satellite_tools/satsync.py:718
msgid "Channel data complete"
msgstr ""

#: ../satellite_tools/satsync.py:736
#, python-format
msgid "%10s import from %s"
msgstr ""

#: ../satellite_tools/satsync.py:739
#, python-format
msgid "%10s import from %s - %s"
msgstr ""

#: ../satellite_tools/satsync.py:743
#, python-format
msgid "%10s"
msgstr ""

#: ../satellite_tools/satsync.py:750
msgid "p"
msgstr ""

#: ../satellite_tools/satsync.py:752
msgid "."
msgstr ""

#: ../satellite_tools/satsync.py:758
msgid "   p = previously imported/synced channel"
msgstr ""

#: ../satellite_tools/satsync.py:759
msgid "   . = channel not yet imported/synced"
msgstr ""

#: ../satellite_tools/satsync.py:765
msgid "   e = channel no longer supported (end-of-service)"
msgstr ""

#: ../satellite_tools/satsync.py:767
msgid "   ? = channel label invalid --- typo?"
msgstr ""

#: ../satellite_tools/satsync.py:771
#, python-format
msgid "   %s:"
msgstr ""

#: ../satellite_tools/satsync.py:772
#, python-format
msgid "      %s %-40s %4s %s"
msgstr ""

#: ../satellite_tools/satsync.py:773
msgid "base-channels"
msgstr ""

#: ../satellite_tools/satsync.py:786 ../satellite_tools/satsync.py:1603
msgid "NONE RELEVANT"
msgstr ""

#: ../satellite_tools/satsync.py:808
msgid "end-of-service"
msgstr ""

#: ../satellite_tools/satsync.py:809
msgid "e"
msgstr ""

#: ../satellite_tools/satsync.py:815
msgid "   typos:"
msgstr ""

#: ../satellite_tools/satsync.py:816
msgid "?"
msgstr ""

#: ../satellite_tools/satsync.py:831
#, python-format
msgid "XXX: imported channels: %s"
msgstr ""

#: ../satellite_tools/satsync.py:832
#, python-format
msgid "XXX:   cached channels: %s"
msgstr ""

#: ../satellite_tools/satsync.py:837
msgid "XXX: list channels called"
msgstr ""

#: ../satellite_tools/satsync.py:855
msgid "ERROR: these channels either do not exist or are not available:"
msgstr ""

#: ../satellite_tools/satsync.py:859
#, python-format
msgid "       (to see a list of channel labels: %s --list-channels)"
msgstr ""

#: ../satellite_tools/satsync.py:904
#, python-format
msgid "   Retrieving / parsing short package metadata: %s (%s)"
msgstr ""

#: ../satellite_tools/satsync.py:965
#, python-format
msgid "Diffing package metadata (what's missing locally?): %s"
msgstr ""

#: ../satellite_tools/satsync.py:971 ../satellite_tools/satsync.py:1254
msgid "Diffing:    "
msgstr ""

#: ../satellite_tools/satsync.py:988
msgid "ERROR: incremental dump skipped"
msgstr ""

#: ../satellite_tools/satsync.py:1079
msgid "Downloading rpm packages"
msgstr ""

#: ../satellite_tools/satsync.py:1084
#, python-format
msgid "   Fetching any missing RPMs: %s (%s)"
msgstr ""

#: ../satellite_tools/satsync.py:1085 ../satellite_tools/satsync.py:1153
msgid "NONE MISSING"
msgstr ""

#: ../satellite_tools/satsync.py:1094
msgid "Processing rpm packages complete"
msgstr ""

#: ../satellite_tools/satsync.py:1121
msgid "Downloading package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1146
msgid "Downloading srpm packages"
msgstr ""

#: ../satellite_tools/satsync.py:1152
#, python-format
msgid "   Fetching any missing SRPMs: %s (%s)"
msgstr ""

#: ../satellite_tools/satsync.py:1249
#, python-format
msgid "Diffing source package metadata (what's missing locally?): %s"
msgstr ""

#: ../satellite_tools/satsync.py:1260
msgid "Downloading source package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1338 ../satellite_tools/satsync.py:2027
#, python-format
msgid "Unable to save file %s: %s"
msgstr ""

#. for
#. Retried a number of times and it still failed; log the
#. file as being failed and move on
#: ../satellite_tools/satsync.py:1345
#, python-format
msgid "Failed to fetch file %s"
msgstr ""

#: ../satellite_tools/satsync.py:1350
msgid "Downloading kickstartable trees metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1365
msgid "Downloading kickstartable trees files"
msgstr ""

#: ../satellite_tools/satsync.py:1504
#, python-format
msgid "Grabbing all patches for channel %s"
msgstr ""

#: ../satellite_tools/satsync.py:1554
msgid "Downloading patch data"
msgstr ""

#: ../satellite_tools/satsync.py:1556
msgid "Forcing download of all patch data for requested channels."
msgstr ""

#: ../satellite_tools/satsync.py:1571
msgid "Downloading patch data complete"
msgstr ""

#: ../satellite_tools/satsync.py:1576 ../satellite_tools/satsync.py:1597
msgid "Downloading:"
msgstr ""

#: ../satellite_tools/satsync.py:1579
msgid " - complete"
msgstr ""

#: ../satellite_tools/satsync.py:1624
msgid "Importing source package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1627
msgid "Importing package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1635
msgid "Importing:  "
msgstr ""

#. not in the cache
#: ../satellite_tools/satsync.py:1703
msgid ""
"Package Not Found in Cache, Clear the Cache "
"to                                  Regenerate it."
msgstr ""

#: ../satellite_tools/satsync.py:1709
msgid "Importing channel patches"
msgstr ""

#: ../satellite_tools/satsync.py:1714
#, python-format
msgid "Importing %s patches for channel %s."
msgstr ""

#. Incomplete configuration
#: ../satellite_tools/satsync.py:2113
msgid "ERROR: server.mount_point not set in the configuration file"
msgstr ""

#: ../satellite_tools/satsync.py:2117
#, python-format
msgid "ERROR: server.mount_point %s do not exist"
msgstr ""

#: ../satellite_tools/satsync.py:2122
#, python-format
msgid "ERROR: path under server.mount_point (%s)  do not exist"
msgstr ""

#: ../satellite_tools/satsync.py:2199
#, python-format
msgid "Commandline: %s"
msgstr ""

#: ../satellite_tools/satsync.py:2202
#, python-format
msgid ""
"DEBUG ONLY: max. batch-size for XML/database-import processing (1..%s).\"man "
"satellite-sync\" for more information."
msgstr ""

#: ../satellite_tools/satsync.py:2205
msgid "alternative SSL CA Cert (fullpath to cert file)"
msgstr ""

#: ../satellite_tools/satsync.py:2207
msgid "process data for this channel only"
msgstr ""

#: ../satellite_tools/satsync.py:2209
msgid ""
"disk dump will be considered to be a full export; see \"man satellite-sync\" "
"for more information."
msgstr ""

#: ../satellite_tools/satsync.py:2212
msgid "existing custom channels will also be synced (unless -c is used)"
msgstr ""

#: ../satellite_tools/satsync.py:2214
#, python-format
msgid ""
"override debug level set in /etc/rhn/rhn.conf (which is currently set at %s)."
msgstr ""

#: ../satellite_tools/satsync.py:2216
#, python-format
msgid "requested version of XML dump (default: %s)"
msgstr ""

#: ../satellite_tools/satsync.py:2218
msgid "e-mail a report of what was synced/imported"
msgstr ""

#: ../satellite_tools/satsync.py:2220
msgid "forcibly process all (not a diff of) patch metadata"
msgstr ""

#: ../satellite_tools/satsync.py:2222
msgid "Do not use an http proxy under any circumstances."
msgstr ""

#: ../satellite_tools/satsync.py:2224
msgid "alternative http proxy (hostname:port)"
msgstr ""

#: ../satellite_tools/satsync.py:2226
msgid "alternative http proxy username"
msgstr ""

#: ../satellite_tools/satsync.py:2228
msgid "alternative http proxy password"
msgstr ""

#: ../satellite_tools/satsync.py:2230
msgid "parent SUSE Manager to import content from"
msgstr ""

#: ../satellite_tools/satsync.py:2232
msgid "list all available channels and exit"
msgstr ""

#: ../satellite_tools/satsync.py:2234
msgid "help on all error codes mgr-inter-sync returns"
msgstr ""

#: ../satellite_tools/satsync.py:2236
msgid "source mount point for import - disk update only"
msgstr ""

#: ../satellite_tools/satsync.py:2238
msgid "do not process patch data"
msgstr ""

#: ../satellite_tools/satsync.py:2240
msgid "do not process kickstart data (provisioning only)"
msgstr ""

#: ../satellite_tools/satsync.py:2242
msgid "do not process full package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:2244
msgid "do not download, or process any RPMs"
msgstr ""

#: ../satellite_tools/satsync.py:2246
msgid "turn off SSL (not recommended)"
msgstr ""

#: ../satellite_tools/satsync.py:2248
msgid "org to which the sync imports data. defaults to the admin account"
msgstr ""

#: ../satellite_tools/satsync.py:2250
msgid "print the configuration and exit"
msgstr ""

#: ../satellite_tools/satsync.py:2252
msgid "alternative server with which to connect (hostname)"
msgstr ""

#: ../satellite_tools/satsync.py:2254
msgid "synchronize to this step (man satellite-sync for more info)"
msgstr ""

#: ../satellite_tools/satsync.py:2256
msgid "write complete data to tempfile before streaming to remainder of app"
msgstr ""

#: ../satellite_tools/satsync.py:2258
msgid "DEBUG ONLY: alternative path to digital system id"
msgstr ""

#: ../satellite_tools/satsync.py:2260
msgid "alternative email address(es) for sync output (--email option)"
msgstr ""

#: ../satellite_tools/satsync.py:2262
msgid "do not remove rpms when importing from local dump"
msgstr ""

#: ../satellite_tools/satsync.py:2264
msgid ""
"the fully qualified domain name of the master Satellite. Valid with --mount-"
"point only. Required if you want to import org data and channel permissions."
msgstr ""

#: ../satellite_tools/satsync.py:2274
#, python-format
msgid "ERROR: these arguments make no sense in this context (try --help): %s"
msgstr ""

#. An SQL error is fatal... crash and burn
#: ../satellite_tools/satsync.py:2286
#, python-format
msgid "ERROR: Can't connect to the database: %s"
msgstr ""

#: ../satellite_tools/satsync.py:2287
msgid "ERROR: Check if your database is running."
msgstr ""

#: ../satellite_tools/satsync.py:2322
#, python-format
msgid "ERROR: --debug-level takes an in integer value within the range %s."
msgstr ""

#: ../satellite_tools/satsync.py:2324
msgid "  0  - little logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2325
msgid "  1  - minimal logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2326
msgid "  2  - normal level of logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2327
msgid "  3  - lots of logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2328
msgid "  4+ - excessive logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2341
msgid "ERROR: The --master option is only valid with the --mount-point option"
msgstr ""

#: ../satellite_tools/satsync.py:2351
#, python-format
msgid "ERROR: Unable to lookup Org Id %s"
msgstr ""

#: ../satellite_tools/satsync.py:2360
msgid ""
"WARNING: --list-channels option overrides any --step option. --step ignored."
msgstr ""

#: ../satellite_tools/satsync.py:2375
#, python-format
msgid ""
"ERROR: '%s' is not a valid step. See 'man mgr-inter-sync' for more detail."
msgstr ""

#: ../satellite_tools/satsync.py:2407
msgid ""
"ERROR: No channels currently imported; try mgr-inter-sync --list-channels; "
"then mgr-inter-sync -c chn0 -c chn1..."
msgstr ""

#. int(None) --> TypeError
#. int('a')  --> ValueError
#: ../satellite_tools/satsync.py:2457 ../satellite_tools/satsync.py:2461
msgid "ERROR: --batch-size must have a value within the range: 1..50"
msgstr ""

#: ../satellite_tools/satsync.py:2469
#, python-format
msgid "ERROR: no such directory %s"
msgstr ""

#: ../satellite_tools/satsync.py:2474
msgid "Error Codes: Returned codes means:"
msgstr ""

#: ../satellite_tools/satsync.py:2475
msgid " -1  - Could not lock file or KeyboardInterrupt or SystemExit"
msgstr ""

#: ../satellite_tools/satsync.py:2476
msgid "  0  - User interrupted or intentional exit"
msgstr ""

#: ../satellite_tools/satsync.py:2477
msgid "  1  - attempting to run more than one instance of mgr-inter-sync."
msgstr ""

#: ../satellite_tools/satsync.py:2478
msgid "  2  - Unable to find synchronization tools."
msgstr ""

#: ../satellite_tools/satsync.py:2479
msgid "  3  - a general socket exception occurred"
msgstr ""

#: ../satellite_tools/satsync.py:2480
msgid "  4  - an SSL error occurred. Recheck your SSL settings."
msgstr ""

#: ../satellite_tools/satsync.py:2481
msgid "  5  - ISS error"
msgstr ""

#: ../satellite_tools/satsync.py:2482
msgid "  6  - unhandled exception occurred"
msgstr ""

#: ../satellite_tools/satsync.py:2483
msgid "  7  - unknown sync error"
msgstr ""

#: ../satellite_tools/satsync.py:2484
msgid "  8  - ERROR: must be root to execute"
msgstr ""

#: ../satellite_tools/satsync.py:2485
msgid "  9  - rpclib fault during synchronization init"
msgstr ""

#: ../satellite_tools/satsync.py:2486
msgid "  10 - synchronization init error"
msgstr ""

#: ../satellite_tools/satsync.py:2487
msgid "  11 - Error parsing XML stream"
msgstr ""

#: ../satellite_tools/satsync.py:2488
msgid "  12 - Channel do not exist"
msgstr ""

#: ../satellite_tools/satsync.py:2489
msgid "  13 - SQL error during importing package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:2490
msgid "  14 - SQL error during linking channel packages"
msgstr ""

#: ../satellite_tools/satsync.py:2491
msgid "  15 - SQL error during xml processing"
msgstr ""

#: ../satellite_tools/satsync.py:2492
msgid "  16 - server.mount_point not set in the configuration file"
msgstr ""

#: ../satellite_tools/satsync.py:2493
msgid ""
"  17 - SQL error during retrieving the channels already imported in the SUSE "
"Manager database"
msgstr ""

#: ../satellite_tools/satsync.py:2494
msgid "  18 - Wrong db connection string in rhn.conf"
msgstr ""

#: ../satellite_tools/satsync.py:2495
msgid "  19 - Bad arguments"
msgstr ""

#: ../satellite_tools/satsync.py:2496
msgid "  20 - Could not connect to db."
msgstr ""

#: ../satellite_tools/satsync.py:2497
msgid "  21 - Bad debug level"
msgstr ""

#: ../satellite_tools/satsync.py:2498
msgid "  22 - Not valid step"
msgstr ""

#: ../satellite_tools/satsync.py:2499
msgid "  24 - no such file"
msgstr ""

#: ../satellite_tools/satsync.py:2500
msgid "  25 - no such directory"
msgstr ""

#: ../satellite_tools/satsync.py:2501
msgid "  26 - mount_point does not exist"
msgstr ""

#: ../satellite_tools/satsync.py:2502
msgid "  27 - No such org"
msgstr ""

#: ../satellite_tools/satsync.py:2503
msgid "  28 - error: --master is only valid with --mount-point"
msgstr ""

#: ../satellite_tools/satsync.py:2510
#, python-format
msgid "ERROR: unknown dump version, try one of %s"
msgstr ""
   0707010000006E000081B40000000000000000000000016290A0C10000B6A1000000000000000000000000000000000000001B00000000spacewalk-backend/po/fi.po    # SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
#
# Translators:
# Esa Aaltonen <esa.aaltonen@pp.sonera.net>, 2004.
# Lauri Nurmi <lanurmi@iki.fi>, 2003, 2005.
# Mikko Ikola <ikola@iki.fi>, 2004.
msgid ""
msgstr ""
"Project-Id-Version: Spacewalk\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-10-16 13:34+0200\n"
"PO-Revision-Date: 2011-03-04 16:08+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Finnish (http://www.transifex.com/projects/p/fedora/language/"
"fi/)\n"
"Language: fi\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"

#: ../server/apacheAuth.py:66
#, python-format
msgid "incomplete proxy authentication token: %s"
msgstr ""

#: ../server/apacheAuth.py:84
#, python-format
msgid "Sent proxy signature %s does not match ours %s."
msgstr ""

#: ../server/apacheAuth.py:119
msgid "declined proxy authentication"
msgstr ""

#: ../server/apacheRequest.py:59
#, python-format
msgid "Invalid request received (%s)."
msgstr ""

#: ../server/apacheRequest.py:120
#, python-format
msgid ""
"IMPORTANT MESSAGE FOLLOWS:\n"
"%s"
msgstr ""

#: ../server/apacheRequest.py:149
#, python-format
msgid ""
"While running '%s': caught\n"
"%s : %s\n"
msgstr ""

#: ../server/apacheRequest.py:606
#, python-format
msgid "Invalid URI %s"
msgstr ""

#: ../server/configFilesHandler.py:129 ../server/handlers/app/packages.py:192
#: ../server/handlers/xmlrpc/registration.py:215
#: ../server/handlers/xmlrpc/registration.py:1168
#: ../server/handlers/xmlrpc/registration.py:1307
#, python-format
msgid ""
"\n"
"                   %s Account has been deactivated on this server.\n"
"                   Please contact your Org administrator for more help."
msgstr ""

#: ../server/handlers/applet/applet.py:78
#, python-brace-format
msgid "Your system was not found in the {PRODUCT_NAME} database"
msgstr ""

#: ../server/handlers/sat/auth.py:45
msgid "ISS is disabled on this server."
msgstr ""

#: ../server/handlers/sat/auth.py:50
#, python-format
msgid "Server \"%s\" is not enabled for ISS."
msgstr ""

#: ../server/handlers/xmlrpc/errata.py:64
#, python-format
msgid "Expected a package name, not: %s"
msgstr ""

#: ../server/handlers/xmlrpc/errata.py:115
#, python-format
msgid "Expected a package, not: %s"
msgstr ""

#: ../server/handlers/xmlrpc/proxy.py:65
#, python-format
msgid "SUSE Manager Proxy service not enabled for server profile: \"%s\""
msgstr ""

#: ../server/handlers/xmlrpc/proxy.py:85
msgid "Invalid session key"
msgstr ""

#: ../server/handlers/xmlrpc/proxy.py:93
msgid "This server ID no longer exists"
msgstr ""

#: ../server/handlers/xmlrpc/queue.py:433
#, python-format
msgid "Invalid action value type %s (%s)"
msgstr ""

#: ../server/handlers/xmlrpc/queue.py:464
#, python-format
msgid "Action %s does not belong to server %s"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:194
msgid "Required data missing"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:198
msgid "Required members missing"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:207
msgid "Attempt to register a system to an invalid username"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:839
msgid "Invalid system release version requested"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1063
msgid ""
"Unable to find a valid network interface, both ipaddr and ip6addr not found."
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1115
#, python-brace-format
msgid "{PRODUCT_NAME} Welcome Message"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1125
msgid "Privacy Statement"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1146
msgid "Expected a dictionary as a product argument"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1374
#, python-format
msgid "Invalid value '%s' for %s (%s)"
msgstr ""

#: ../server/handlers/xmlrpc/scap.py:104
msgid "Invalid system_id/action_id pair."
msgstr ""

#: ../server/handlers/xmlrpc/up2date.py:233
#, python-format
msgid "Invalid value %s (%s)"
msgstr ""

#: ../server/importlib/userAuth.py:98
msgid "You are not authorized to manage packages in the null org"
msgstr ""

#: ../server/importlib/userAuth.py:103
#, python-format
msgid "You are not allowed to manage packages in the %s org"
msgstr ""

#: ../server/importlib/userAuth.py:121
msgid "You are not allowed to perform administrative tasks"
msgstr ""

#: ../server/importlib/userAuth.py:144
#, python-format
msgid ""
"You are not allowed to manage channel %s, or that channel does not exist"
msgstr ""

#: ../server/importlib/userAuth.py:204
#, python-format
msgid ""
"\n"
"               %s Account has been deactivated on this server.\n"
"               Please contact your Org administrator for more help."
msgstr ""

#: ../server/rhnChannel.py:1992
#, python-format
msgid ""
"Your account does not have access to any channels matching "
"(release='%(release)s', arch='%(arch)s')%(www_activation)s"
msgstr ""

#: ../server/rhnChannel.py:2002
msgid ""
"\n"
"If you have a registration number, please register with it first at http://"
"www.redhat.com/apps/activate/ and then try again.\n"
"\n"
msgstr ""

#: ../server/rhnChannel.py:2012
#, python-format
msgid "Insufficient subscription permissions for release (%s, %s"
msgstr ""

#. Various messages that can be reused
#.
#. bretm 02/07/2007 -- when we have better old-client documentation, probably
#. will be safe to get rid of all this crap
#: ../server/rhnChannel.py:2276 ../server/rhnChannel.py:2287
#: ../server/rhnChannel.py:2302
msgid "System Registered but Inactive"
msgstr ""

#: ../server/rhnChannel.py:2277
#, python-format
msgid ""
"\n"
"Invalid Architecture and OS release combination (%s, %s).\n"
"Your system has been registered, but will not receive updates\n"
"because it is not subscribed to a channel. If you have not yet\n"
"activated your product for service, please visit our website at:\n"
"\n"
"     http://www.redhat.com/apps/activate/\n"
"\n"
"...to activate your product."
msgstr ""

#: ../server/rhnChannel.py:2288
#, python-format
msgid ""
"\n"
"Invalid Architecture and OS release combination (%s, %s).\n"
"Your system has been registered, but will not receive updates\n"
"because it could not be subscribed to a base channel.\n"
"Please contact your organization administrator for assistance.\n"
msgstr ""

#: ../server/rhnChannel.py:2295
#, python-format
msgid ""
"\n"
"  This system has been successfully registered, but is not yet entitled\n"
"  to service.  To entitle this system to service, login to the web site at:\n"
"\n"
"  %(entitlement_url)s\n"
msgstr ""

#: ../server/rhnChannel.py:2303
#, python-format
msgid ""
"\n"
"  This system has been successfully registered, but no service entitlements\n"
"  were available.  To entitle this system to service, login to the web site "
"at:\n"
"\n"
"  %(entitlement_url)s\n"
msgstr ""

#: ../server/rhnHandler.py:62
msgid "Please run rhn_register as root on this client"
msgstr ""

#: ../server/rhnHandler.py:75
#, python-format
msgid "Service not enabled for system profile: \"%s\""
msgstr ""

#: ../server/rhnPackage.py:49 ../server/rhnPackage.py:87
#: ../server/rhnPackage.py:107 ../server/rhnPackage.py:158
#, python-format
msgid "Invalid RPM package %s requested"
msgstr ""

#: ../server/rhnPackage.py:112
msgid "Package not found"
msgstr ""

#: ../server/rhnServer/server_class.py:97
#, python-format
msgid "Architecture `%s' is not supported"
msgstr ""

#: ../server/rhnServer/server_token.py:78
#, python-format
msgid "Token `%s' has more than one base channel assigned"
msgstr ""

#: ../server/rhnServer/server_token.py:80
msgid "Conflicting base channels"
msgstr ""

#: ../server/rhnServer/server_token.py:190
#, python-format
msgid "Failed to add server to group %s"
msgstr ""

#: ../server/rhnServer/server_token.py:503
#, python-format
msgid "Maximum usage count of %s reached"
msgstr ""

#: ../server/rhnServer/server_token.py:744
msgid ""
"Stacking of re-registration tokens with different base entitlements is not "
"supported"
msgstr ""

#: ../server/rhnServer/server_token.py:811
#, python-format
msgid "Could not find token '%s'"
msgstr ""

#. Cannot use activation keys from different orgs
#: ../server/rhnServer/server_token.py:843
msgid "Tokens from mismatching orgs"
msgstr ""

#. Two tokens with different kickstart sessions
#: ../server/rhnServer/server_token.py:853
msgid "Kickstart session mismatch"
msgstr ""

#: ../server/rhnServer/server_token.py:877
msgid "Stacking of re-registration tokens is not supported"
msgstr ""

#: ../server/rhnUser.py:289 ../server/rhnUser.py:292
msgid "Invalid username/password combination"
msgstr ""

#. nope, not reserved either
#: ../server/rhnUser.py:467
#, python-format
msgid "Username `%s' has not been reserved"
msgstr ""

#. New accounts have to specify an e-mail address
#: ../server/rhnUser.py:473
msgid "E-mail address not specified"
msgstr ""

#: ../server/rhnUser.py:509
#, python-format
msgid "username should be at least %d characters"
msgstr ""

#: ../server/rhnUser.py:512
#, python-format
msgid "username should be less than %d characters"
msgstr ""

#: ../server/rhnUser.py:523
#, python-format
msgid "username = `%s', invalid character `%s'"
msgstr ""

#: ../server/rhnUser.py:542
#, python-format
msgid "Please limit your e-mail address to %s chars"
msgstr ""

#: ../server/rhnUser.py:623
#, python-format
msgid "password must be at least %d characters"
msgstr ""

#: ../server/rhnUser.py:626
#, python-format
msgid "Password must be shorter than %d characters"
msgstr ""

#: ../server/rhnUser.py:644
#, python-format
msgid "password contains character `%s'"
msgstr ""

#: ../server/rhnUser.py:651
#, python-format
msgid "username should be at least %d characters long"
msgstr ""

#: ../server/rhnUser.py:662
#, python-format
msgid "Cannot register usernames ending with %s"
msgstr ""

#. 0-999: Red Hat client/client-like interaction errors:
#: ../common/rhnException.py:53
msgid "This does not appear to be a valid username."
msgstr ""

#: ../common/rhnException.py:54
msgid "Invalid username and password combination."
msgstr ""

#: ../common/rhnException.py:55
msgid "This login is already taken, or the password is incorrect."
msgstr ""

#: ../common/rhnException.py:56
msgid "Permission denied."
msgstr ""

#: ../common/rhnException.py:57
msgid "Object not found."
msgstr ""

#: ../common/rhnException.py:58
msgid "Invalid System Digital ID."
msgstr ""

#: ../common/rhnException.py:59
msgid "Invalid System Credentials."
msgstr ""

#: ../common/rhnException.py:60
msgid "Could not retrieve user data from database."
msgstr ""

#: ../common/rhnException.py:61
msgid "Valid username required."
msgstr ""

#: ../common/rhnException.py:62
msgid "Valid password required."
msgstr ""

#: ../common/rhnException.py:63
msgid "Minimum username length violation."
msgstr ""

#: ../common/rhnException.py:64
msgid "Minimum password length violation."
msgstr ""

#: ../common/rhnException.py:65
msgid "The username contains invalid characters."
msgstr ""

#: ../common/rhnException.py:66
msgid "File not found."
msgstr ""

#: ../common/rhnException.py:67
msgid "Architecture and OS version combination is not supported."
msgstr ""

#: ../common/rhnException.py:68
msgid "Could not retrieve system data from database."
msgstr ""

#: ../common/rhnException.py:69
msgid "Invalid arguments passed to function."
msgstr ""

#: ../common/rhnException.py:70
msgid "Unable to retrieve requested entry."
msgstr ""

#: ../common/rhnException.py:71
msgid "Could not update database entry."
msgstr ""

#: ../common/rhnException.py:72
msgid "Unsupported server architecture."
msgstr ""

#: ../common/rhnException.py:73
#, python-format
msgid ""
"\n"
"     The anonymous server functionality is no longer available.\n"
"\n"
"     Please re-register this system by running mgr_register as root.\n"
"     Please visit https://%(hostname)s/rhn/systems/SystemEntitlements.do\n"
"     or login at https://%(hostname)s, and from the \"Overview\" tab,\n"
"     select \"Subscription Management\" to enable the service for this "
"system.\n"
"     "
msgstr ""

#: ../common/rhnException.py:81
msgid "Record not available in the database."
msgstr ""

#: ../common/rhnException.py:82
msgid "Invalid value for entry."
msgstr ""

#: ../common/rhnException.py:83
#, python-format
msgid ""
"\n"
"     This system does not have a valid entitlement for SUSE Manager.\n"
"     Please visit https://%(hostname)s/rhn/systems/SystemEntitlements.do\n"
"     or login at https://%(hostname)s, and from the \"Overview\" tab,\n"
"     select \"Subscription Management\" to enable the service for this "
"system.\n"
"     "
msgstr ""

#: ../common/rhnException.py:89
msgid "Channel error"
msgstr ""

#: ../common/rhnException.py:90
msgid "Client session token is invalid."
msgstr ""

#: ../common/rhnException.py:91
msgid "Client session token has expired."
msgstr ""

#: ../common/rhnException.py:92
msgid "You are not authorized to retrieve the requested object."
msgstr ""

#: ../common/rhnException.py:93
msgid "Invalid action"
msgstr ""

#: ../common/rhnException.py:94
msgid "You are not allowed to perform administrative tasks on this system."
msgstr ""

#: ../common/rhnException.py:96
msgid "The system is already subscribed to the specified channel."
msgstr ""

#: ../common/rhnException.py:97
msgid "The system is not currently subscribed to the specified channel."
msgstr ""

#: ../common/rhnException.py:98
msgid "The specified channel does not exist."
msgstr ""

#: ../common/rhnException.py:99
msgid "Invalid channel version."
msgstr ""

#: ../common/rhnException.py:100
msgid ""
"\n"
"     User group membership limits exceeded.\n"
"\n"
"     The current settings for your account do not allow you to add another\n"
"     user account. Please check with the organization administrator for "
"your\n"
"     account if the maximum number of users allowed to subscribe to server "
"needs\n"
"     to be changed.\n"
"     "
msgstr ""

#: ../common/rhnException.py:108
msgid ""
"\n"
"     System group membership limits exceeded.\n"
"\n"
"     The current settings for your account do not allow you to add another\n"
"     system profile. Please check with the organization administrator for "
"your\n"
"     account for modifying the maximum number of system profiles that can "
"be\n"
"     subscribed to your account.\n"
"     "
msgstr ""

#: ../common/rhnException.py:116
msgid ""
"\n"
"     Invalid architecture.\n"
"\n"
"     The architecture of the package is not supported by\n"
"     "
msgstr ""

#: ../common/rhnException.py:121
msgid "Invalid RPM header"
msgstr ""

#: ../common/rhnException.py:122
msgid ""
"\n"
"    This system is already registered as a Salt Minion. If you want to "
"register it as a traditional client\n"
"    please delete it first via the web UI or API and then register it using "
"the traditional tools.\n"
"    "
msgstr ""

#. For the uploading tools
#: ../common/rhnException.py:127
msgid "Invalid information uploaded to the server"
msgstr ""

#: ../common/rhnException.py:128
msgid "Error uploading network interfaces configuration."
msgstr ""

#: ../common/rhnException.py:129
msgid ""
"\n"
"     Package Upload Failed due to uniqueness constraint violation.\n"
"     Make sure the package does not have any duplicate dependencies or\n"
"     does not already exists on the server\n"
"     "
msgstr ""

#: ../common/rhnException.py:134
msgid ""
"\n"
"     The --force rhnpush option is disabled on this server.\n"
"     Please contact your SUSE Manager administrator for more help.\n"
"     "
msgstr ""

#. 60-70: token errors
#: ../common/rhnException.py:140
msgid ""
"\n"
"     The activation token specified could not be found on the server.\n"
"     Please retry with a valid key.\n"
"     "
msgstr ""

#: ../common/rhnException.py:144
msgid "Too many systems registered using this registration token"
msgstr ""

#: ../common/rhnException.py:145
msgid "Token contains invalid, obsoleted or insufficient settings"
msgstr ""

#: ../common/rhnException.py:146
msgid "Conflicting activation tokens"
msgstr ""

#. 70-80: channel subscription errors
#: ../common/rhnException.py:149
msgid ""
"\n"
"     No matching base channel found for your system.\n"
"     "
msgstr ""

#: ../common/rhnException.py:152
msgid ""
"\n"
"     You do not have subscription permission to the designated channel.\n"
"     Please refer to your organization's channel or organization\n"
"     administrators for further details.\n"
"     "
msgstr ""

#: ../common/rhnException.py:157
msgid "You can not unsubscribe from base channel."
msgstr ""

#: ../common/rhnException.py:158
msgid "SUSE Manager or Proxy channel can not be subscribed."
msgstr ""

#. 80-90: server group errors
#: ../common/rhnException.py:161
msgid "There was an error while trying to join the system to its groups"
msgstr ""

#. 90-100: entitlement errors
#: ../common/rhnException.py:164
msgid "Unable to entitle system"
msgstr ""

#. 100-109: e-mail and uuid related faults
#: ../common/rhnException.py:167
msgid "Maximum e-mail length violation."
msgstr ""

#: ../common/rhnException.py:168
msgid "This system has been previously registered."
msgstr ""

#: ../common/rhnException.py:169
msgid "Invalid username"
msgstr ""

#. 140-159 applet errors
#: ../common/rhnException.py:172
msgid "Unable to look up server"
msgstr ""

#. 160-179: OSAD errors
#: ../common/rhnException.py:175
msgid "Required argument is missing"
msgstr ""

#. 600-699: RHEL5+ EN errors
#: ../common/rhnException.py:178
msgid "No entitlement information tied to hardware"
msgstr ""

#: ../common/rhnException.py:179
msgid "Installation number is not entitling"
msgstr ""

#. 700-799: Additional user input verification errors.
#: ../common/rhnException.py:182
msgid "Maximum username length violation"
msgstr ""

#: ../common/rhnException.py:183
msgid "Maximum password length violation"
msgstr ""

#: ../common/rhnException.py:184
msgid "This user has read only API access. Action denied."
msgstr ""

#: ../common/rhnException.py:186
msgid "System Name cannot be less than 1 character"
msgstr ""

#. 1000-1999: Proxy specific errors:
#. issued by a Proxy to the client
#: ../common/rhnException.py:190
msgid "SUSE Manager Proxy error."
msgstr ""

#: ../common/rhnException.py:191
msgid "SUSE Manager Proxy unable to login."
msgstr ""

#. issued by a SUSE Manager Server/Satellite to the proxy
#: ../common/rhnException.py:193
msgid ""
"\n"
"     SUSE Manager Proxy system ID does not match a Spacewalk Proxy Server\n"
"     in the database.\n"
"     "
msgstr ""

#: ../common/rhnException.py:197
msgid "SUSE Manager Proxy session token is invalid."
msgstr ""

#: ../common/rhnException.py:198
msgid "SUSE Manager Proxy session token has expired."
msgstr ""

#. 2000-2999: Red Hat Satellite specific errors:
#: ../common/rhnException.py:202
msgid ""
"\n"
"      user creation is not allowed via mgr_register;\n"
"     please contact your sysadmin to have your account created.\n"
"     "
msgstr ""

#: ../common/rhnException.py:206
msgid ""
"\n"
"     This SUSE Manager server is not allowed to use Inter Server Sync on "
"this server\n"
"     "
msgstr ""

#: ../common/rhnException.py:209
msgid ""
"\n"
"     Inter Server Sync is disabled on this SUSE Manager Server.\n"
"     "
msgstr ""

#. 3000-3999: XML dumper errors:
#: ../common/rhnException.py:214
msgid "Invalid datatype passed"
msgstr ""

#: ../common/rhnException.py:215
msgid "Unable to retrieve channel"
msgstr ""

#: ../common/rhnException.py:216
msgid "Unable to retrieve package"
msgstr ""

#: ../common/rhnException.py:217
msgid "Unable to retrieve erratum"
msgstr ""

#: ../common/rhnException.py:218
msgid "File is missing"
msgstr ""

#: ../common/rhnException.py:219
msgid "Function retrieval error"
msgstr ""

#: ../common/rhnException.py:220
msgid "Function execution error"
msgstr ""

#: ../common/rhnException.py:221
msgid "Missing version string"
msgstr ""

#: ../common/rhnException.py:222
msgid "Invalid version string"
msgstr ""

#: ../common/rhnException.py:223
msgid "Mismatching versions"
msgstr ""

#: ../common/rhnException.py:224
msgid "Invalid channel version"
msgstr ""

#: ../common/rhnException.py:225
msgid "No comps file for channel"
msgstr ""

#: ../common/rhnException.py:226
msgid "Unable to retrieve comps file"
msgstr ""

#. 4000 - 4999: config management errors
#: ../common/rhnException.py:229
msgid "Configuration action missing"
msgstr ""

#: ../common/rhnException.py:230
msgid "File too large"
msgstr ""

#: ../common/rhnException.py:231
msgid "File contains binary data"
msgstr ""

#: ../common/rhnException.py:232
msgid "Configuration channel is not empty"
msgstr ""

#: ../common/rhnException.py:233
msgid "Permission error"
msgstr ""

#: ../common/rhnException.py:234
msgid "Content missing for configuration file"
msgstr ""

#: ../common/rhnException.py:235
msgid "Template delimiters not specified"
msgstr ""

#: ../common/rhnException.py:236
msgid "Configuration channel does not exist"
msgstr ""

#: ../common/rhnException.py:237
msgid "Configuration channel already exists"
msgstr ""

#: ../common/rhnException.py:238
msgid "File missing from configuration channel"
msgstr ""

#: ../common/rhnException.py:239
msgid "Different revision of this file is uploaded"
msgstr ""

#: ../common/rhnException.py:240
msgid "File already uploaded to configuration channel"
msgstr ""

#: ../common/rhnException.py:241
msgid "File size exceeds remaining quota space"
msgstr ""

#: ../common/rhnException.py:242
msgid "Full path of file must be specified"
msgstr ""

#: ../common/rhnException.py:243
msgid "Invalid revision number"
msgstr ""

#: ../common/rhnException.py:244
msgid "Cannot compare files of different file type"
msgstr ""

#. 5000 - 5999: client content uploading errors
#. 5000 - 5099: crash reporting errors
#: ../common/rhnException.py:248
msgid "Crash information is invalid or incomplete"
msgstr ""

#: ../common/rhnException.py:249
msgid "Crash file information is invalid or incomplete"
msgstr ""

#: ../common/rhnException.py:250
msgid "Error composing crash directory path"
msgstr ""

#: ../common/rhnException.py:251
msgid "Error composing crash file path"
msgstr ""

#: ../common/rhnException.py:252 ../common/rhnException.py:259
msgid "Invalid content encoding"
msgstr ""

#: ../common/rhnException.py:253
msgid "Invalid crash name"
msgstr ""

#: ../common/rhnException.py:254
msgid "Crash reporting is disabled for this organization"
msgstr ""

#. 5100 - 5199: scap results reporting error
#: ../common/rhnException.py:256
msgid "SCAP results file transfer is invalid or incomplete"
msgstr ""

#: ../common/rhnException.py:257
msgid "Error composing directory path for detailed SCAP results"
msgstr ""

#: ../common/rhnException.py:258
msgid "Error composing file path for detailed SCAP results"
msgstr ""

#: ../common/rhnException.py:306
msgid ""
"\n"
"     An error has occurred while processing your request. If this problem\n"
"     persists please enter a bug report at scc.suse.com.\n"
"     If you choose to submit the bug report, please be sure to include\n"
"     details of what you were trying to do when this error occurred and\n"
"     details on how to reproduce this problem.\n"
msgstr ""

#: ../common/rhnException.py:358
#, python-format
msgid ""
"Error Message:\n"
"    %s\n"
msgstr ""

#: ../common/rhnException.py:360
#, python-format
msgid "Error Class Code: %s\n"
msgstr ""

#: ../common/rhnException.py:363
#, python-format
msgid "Error Class Info: %s\n"
msgstr ""

#: ../common/rhnException.py:365
#, python-format
msgid "Explanation: %s"
msgstr ""

#: ../common/rhnTB.py:205
#, python-format
msgid "ERROR: %s %s: %s"
msgstr ""

#: ../common/rhnTB.py:207
#, python-format
msgid "TRACEBACK: %s"
msgstr ""

#: ../satellite_tools/disk_dumper/iss.py:1294
#: ../satellite_tools/disk_dumper/iss.py:1298
#, python-format
msgid "format of %s should be at least YYYYMMDD.\n"
msgstr ""

#: ../satellite_tools/messages.py:26
#, python-format
msgid ""
"\n"
"ERROR: executing step %s. Error is:\n"
"%s\n"
msgstr ""

#: ../satellite_tools/messages.py:31
#, python-format
msgid ""
"\n"
"ERROR: there was a problem accessing the channel data from your temporary\n"
"       repository. Did you migrate all of the data from the channel ISOs\n"
"       do this directory? If so, please recheck the channels ISOs, ensure\n"
"       that you have them all, and then iteratively remount and repopulate\n"
"       the temporary repository (%s).\n"
msgstr ""

#: ../satellite_tools/messages.py:39
#, python-format
msgid ""
"\n"
"ERROR: there was a problem synchronizing the information.\n"
"       Error message: %s\n"
msgstr ""

#: ../satellite_tools/messages.py:44
#, python-format
msgid ""
"\n"
"ERROR: There was a problem communicating with the ISS Master.\n"
"       Depending on the specific error details, please review your "
"configuration,\n"
"       basic network connectivity, and/or name resolution, and try again.\n"
"       Error message: %s\n"
msgstr ""

#: ../satellite_tools/messages.py:51
#, python-format
msgid ""
"\n"
"ERROR: There was a problem communicating with the ISS Master.\n"
"       If the master satellite is older than v5.3, it does not have ISS "
"capability.\n"
"       Otherwise, depending on the specific error details, please review "
"your\n"
"       configuration, basic network connectivity, and/or name resolution, "
"and try again.\n"
"       Error message: %s\n"
msgstr ""

#: ../satellite_tools/messages.py:59
#, python-format
msgid ""
"\n"
"ERROR: a child-channel cannot be synced without its parent being synced as\n"
"       well. A parent needs to be either (a) previously synced or (b) "
"synced\n"
"       in tandem with the desired child-channel. Missing parents for this\n"
"       transaction:\n"
"       %s\n"
msgstr ""

#: ../satellite_tools/messages.py:67
#, python-format
msgid ""
"\n"
"ERROR: you are not entitled to sync a channel in this set of channels.\n"
"Please contact your SUSE Manager contact\n"
"%s"
msgstr ""

#: ../satellite_tools/messages.py:72
#, python-format
msgid "  ERROR: not enough free space (%s KB) on device."
msgstr ""

#: ../satellite_tools/messages.py:74
#, python-format
msgid "    %3d/%s Fetch successful: %s (%s bytes)"
msgstr ""

#: ../satellite_tools/messages.py:75
#, python-format
msgid "    Extinct package:  %s"
msgstr ""

#: ../satellite_tools/messages.py:76
#, python-format
msgid "   Total size: %s"
msgstr ""

#: ../satellite_tools/messages.py:77
#, python-format
msgid "      Downloaded %s of %s. Estimated remaining time: %s"
msgstr ""

#: ../satellite_tools/messages.py:78
#, python-format
msgid "    Fetch unsuccessful: %s"
msgstr ""

#: ../satellite_tools/messages.py:79
#, python-format
msgid "   RPM fetch summary: %s"
msgstr ""

#: ../satellite_tools/messages.py:80
#, python-format
msgid "       success: %d"
msgstr ""

#: ../satellite_tools/messages.py:81
#, python-format
msgid "       failed:  %d"
msgstr ""

#: ../satellite_tools/messages.py:82
#, python-format
msgid "       extinct: %d"
msgstr ""

#: ../satellite_tools/messages.py:84
#, python-format
msgid "   Retrieving / parsing *relevant* package metadata: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:85
#, python-format
msgid "   Retrieving / parsing errata data: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:86
#, python-format
msgid "   Retrieving / parsing kickstart data: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:87
#, python-format
msgid "   Retrieving / parsing kickstart tree files: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:88
#, python-format
msgid "   Importing *relevant* package metadata: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:89
msgid "   * WARNING: this may be a slow process."
msgstr ""

#: ../satellite_tools/messages.py:90
msgid "Linking packages to channels"
msgstr ""

#: ../satellite_tools/messages.py:91
#, python-format
msgid "   Importing *relevant* errata: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:92
msgid "   No new kickstartable tree to import"
msgstr ""

#: ../satellite_tools/messages.py:93
#, python-format
msgid "Importing kickstartable trees (%d)"
msgstr ""

#: ../satellite_tools/messages.py:94
#, python-format
msgid "Imported kickstartable trees (%d)"
msgstr ""

#: ../satellite_tools/reposync.py:111 ../satellite_tools/satsync.py:439
msgid "+++ sending log as an email +++"
msgstr ""

#: ../satellite_tools/reposync.py:114
#, python-format
msgid "%s sync. report from %s"
msgstr ""

#: ../satellite_tools/reposync.py:124 ../satellite_tools/satsync.py:449
msgid "+++ email requested, but there is nothing to send +++"
msgstr ""

#: ../satellite_tools/rhn_satellite_activate.py:198
#, python-format
msgid ""
"\"%s\" (specified in commandline)\n"
"could not be opened and read:\n"
"%s"
msgstr ""

#: ../satellite_tools/rhn_satellite_activate.py:205
#, python-format
msgid ""
"\"%s\" could not be opened\n"
"and/or written to:\n"
"%s"
msgstr ""

#: ../satellite_tools/satsync.py:258
#, python-format
msgid "No handler for step %s"
msgstr ""

#. Try one more time - this time it should be faster since
#. everything should be cached
#: ../satellite_tools/satsync.py:270
msgid "Environment changed, trying again..."
msgstr ""

#: ../satellite_tools/satsync.py:277
msgid "ERROR: Encountered IntegrityError: \n"
msgstr ""

#: ../satellite_tools/satsync.py:285
msgid "Repeated failures"
msgstr ""

#: ../satellite_tools/satsync.py:290
#, python-format
msgid ""
"    Import complete:\n"
"        Begin time: %s\n"
"        End time:   %s\n"
"        Elapsed:    %s\n"
"          "
msgstr ""

#: ../satellite_tools/satsync.py:311
msgid "hours"
msgstr ""

#: ../satellite_tools/satsync.py:311
msgid "minutes"
msgstr ""

#: ../satellite_tools/satsync.py:311
msgid "seconds"
msgstr ""

#: ../satellite_tools/satsync.py:357
msgid ""
"ERROR: The dump is missing package data, use --no-rpms to skip this step or "
"fix the content to include package data."
msgstr ""

#. the orgs() method doesn't exist; that's fine we just
#. won't sync the orgs
#: ../satellite_tools/satsync.py:404
msgid "The SUSE Manager master does not support syncing orgs data."
msgstr ""

#: ../satellite_tools/satsync.py:404
msgid "Skipping..."
msgstr ""

#: ../satellite_tools/satsync.py:442
#, python-format
msgid "SUSE Manager Inter Server sync. report from %s"
msgstr ""

#: ../satellite_tools/satsync.py:521
msgid " - file-system synchronization"
msgstr ""

#: ../satellite_tools/satsync.py:533 ../satellite_tools/satsync.py:541
msgid " - live synchronization"
msgstr ""

#: ../satellite_tools/satsync.py:534
#, python-brace-format
msgid ""
"ERROR: Live content synchronizing with RHN Classic Hosted is no longer "
"supported.\n"
"Please use the cdn-sync command instead unless you are attempting to sync "
"from another {PRODUCT_NAME} via Inter-Server-Sync (ISS), or from local "
"content on disk via Channel Dump ISOs."
msgstr ""

#: ../satellite_tools/satsync.py:542
#, python-format
msgid "   url: %s"
msgstr ""

#: ../satellite_tools/satsync.py:543
#, python-format
msgid "   debug/output level: %s"
msgstr ""

#: ../satellite_tools/satsync.py:553
msgid "ERROR: this server must be registered with SUSE Manager."
msgstr ""

#: ../satellite_tools/satsync.py:575
#, python-format
msgid "Retrieving / parsing %s data"
msgstr ""

#: ../satellite_tools/satsync.py:585 ../satellite_tools/satsync.py:600
msgid "*** SYSTEM INTERRUPT CALLED ***"
msgstr ""

#: ../satellite_tools/satsync.py:593
msgid "ERROR: fatal parser exception occurred "
msgstr ""

#: ../satellite_tools/satsync.py:594
#, python-format
msgid "(line: %s, col: %s msg: %s)"
msgstr ""

#: ../satellite_tools/satsync.py:598
#, python-format
msgid "ERROR: parser exception occurred: %s"
msgstr ""

#: ../satellite_tools/satsync.py:603
msgid "ERROR: exception (during parse) occurred: "
msgstr ""

#: ../satellite_tools/satsync.py:604
#, python-format
msgid ""
"   Encountered some errors with %s data (see logs (%s) for more information)"
msgstr ""

#: ../satellite_tools/satsync.py:606
#, python-format
msgid "   Encountered some errors with %s data:"
msgstr ""

#: ../satellite_tools/satsync.py:607
#, python-format
msgid "   ------- %s PARSE/IMPORT ERROR -------"
msgstr ""

#: ../satellite_tools/satsync.py:609
msgid "   ---------------------------------------"
msgstr ""

#: ../satellite_tools/satsync.py:612
#, python-format
msgid "%s data complete"
msgstr ""

#: ../satellite_tools/satsync.py:665
msgid "Retrieving / parsing channel data"
msgstr ""

#: ../satellite_tools/satsync.py:718
msgid "Channel data complete"
msgstr ""

#: ../satellite_tools/satsync.py:736
#, python-format
msgid "%10s import from %s"
msgstr ""

#: ../satellite_tools/satsync.py:739
#, python-format
msgid "%10s import from %s - %s"
msgstr ""

#: ../satellite_tools/satsync.py:743
#, python-format
msgid "%10s"
msgstr ""

#: ../satellite_tools/satsync.py:750
msgid "p"
msgstr ""

#: ../satellite_tools/satsync.py:752
msgid "."
msgstr ""

#: ../satellite_tools/satsync.py:758
msgid "   p = previously imported/synced channel"
msgstr ""

#: ../satellite_tools/satsync.py:759
msgid "   . = channel not yet imported/synced"
msgstr ""

#: ../satellite_tools/satsync.py:765
msgid "   e = channel no longer supported (end-of-service)"
msgstr ""

#: ../satellite_tools/satsync.py:767
msgid "   ? = channel label invalid --- typo?"
msgstr ""

#: ../satellite_tools/satsync.py:771
#, python-format
msgid "   %s:"
msgstr ""

#: ../satellite_tools/satsync.py:772
#, python-format
msgid "      %s %-40s %4s %s"
msgstr ""

#: ../satellite_tools/satsync.py:773
msgid "base-channels"
msgstr ""

#: ../satellite_tools/satsync.py:786 ../satellite_tools/satsync.py:1603
msgid "NONE RELEVANT"
msgstr ""

#: ../satellite_tools/satsync.py:808
msgid "end-of-service"
msgstr ""

#: ../satellite_tools/satsync.py:809
msgid "e"
msgstr ""

#: ../satellite_tools/satsync.py:815
msgid "   typos:"
msgstr ""

#: ../satellite_tools/satsync.py:816
msgid "?"
msgstr ""

#: ../satellite_tools/satsync.py:831
#, python-format
msgid "XXX: imported channels: %s"
msgstr ""

#: ../satellite_tools/satsync.py:832
#, python-format
msgid "XXX:   cached channels: %s"
msgstr ""

#: ../satellite_tools/satsync.py:837
msgid "XXX: list channels called"
msgstr ""

#: ../satellite_tools/satsync.py:855
msgid "ERROR: these channels either do not exist or are not available:"
msgstr ""

#: ../satellite_tools/satsync.py:859
#, python-format
msgid "       (to see a list of channel labels: %s --list-channels)"
msgstr ""

#: ../satellite_tools/satsync.py:904
#, python-format
msgid "   Retrieving / parsing short package metadata: %s (%s)"
msgstr ""

#: ../satellite_tools/satsync.py:965
#, python-format
msgid "Diffing package metadata (what's missing locally?): %s"
msgstr ""

#: ../satellite_tools/satsync.py:971 ../satellite_tools/satsync.py:1254
msgid "Diffing:    "
msgstr ""

#: ../satellite_tools/satsync.py:988
msgid "ERROR: incremental dump skipped"
msgstr ""

#: ../satellite_tools/satsync.py:1079
msgid "Downloading rpm packages"
msgstr ""

#: ../satellite_tools/satsync.py:1084
#, python-format
msgid "   Fetching any missing RPMs: %s (%s)"
msgstr ""

#: ../satellite_tools/satsync.py:1085 ../satellite_tools/satsync.py:1153
msgid "NONE MISSING"
msgstr ""

#: ../satellite_tools/satsync.py:1094
msgid "Processing rpm packages complete"
msgstr ""

#: ../satellite_tools/satsync.py:1121
msgid "Downloading package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1146
msgid "Downloading srpm packages"
msgstr ""

#: ../satellite_tools/satsync.py:1152
#, python-format
msgid "   Fetching any missing SRPMs: %s (%s)"
msgstr ""

#: ../satellite_tools/satsync.py:1249
#, python-format
msgid "Diffing source package metadata (what's missing locally?): %s"
msgstr ""

#: ../satellite_tools/satsync.py:1260
msgid "Downloading source package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1338 ../satellite_tools/satsync.py:2027
#, python-format
msgid "Unable to save file %s: %s"
msgstr ""

#. for
#. Retried a number of times and it still failed; log the
#. file as being failed and move on
#: ../satellite_tools/satsync.py:1345
#, python-format
msgid "Failed to fetch file %s"
msgstr ""

#: ../satellite_tools/satsync.py:1350
msgid "Downloading kickstartable trees metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1365
msgid "Downloading kickstartable trees files"
msgstr ""

#: ../satellite_tools/satsync.py:1504
#, python-format
msgid "Grabbing all patches for channel %s"
msgstr ""

#: ../satellite_tools/satsync.py:1554
msgid "Downloading patch data"
msgstr ""

#: ../satellite_tools/satsync.py:1556
msgid "Forcing download of all patch data for requested channels."
msgstr ""

#: ../satellite_tools/satsync.py:1571
msgid "Downloading patch data complete"
msgstr ""

#: ../satellite_tools/satsync.py:1576 ../satellite_tools/satsync.py:1597
msgid "Downloading:"
msgstr ""

#: ../satellite_tools/satsync.py:1579
msgid " - complete"
msgstr ""

#: ../satellite_tools/satsync.py:1624
msgid "Importing source package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1627
msgid "Importing package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1635
msgid "Importing:  "
msgstr ""

#. not in the cache
#: ../satellite_tools/satsync.py:1703
msgid ""
"Package Not Found in Cache, Clear the Cache "
"to                                  Regenerate it."
msgstr ""

#: ../satellite_tools/satsync.py:1709
msgid "Importing channel patches"
msgstr ""

#: ../satellite_tools/satsync.py:1714
#, python-format
msgid "Importing %s patches for channel %s."
msgstr ""

#. Incomplete configuration
#: ../satellite_tools/satsync.py:2113
msgid "ERROR: server.mount_point not set in the configuration file"
msgstr ""

#: ../satellite_tools/satsync.py:2117
#, python-format
msgid "ERROR: server.mount_point %s do not exist"
msgstr ""

#: ../satellite_tools/satsync.py:2122
#, python-format
msgid "ERROR: path under server.mount_point (%s)  do not exist"
msgstr ""

#: ../satellite_tools/satsync.py:2199
#, python-format
msgid "Commandline: %s"
msgstr ""

#: ../satellite_tools/satsync.py:2202
#, python-format
msgid ""
"DEBUG ONLY: max. batch-size for XML/database-import processing (1..%s).\"man "
"satellite-sync\" for more information."
msgstr ""

#: ../satellite_tools/satsync.py:2205
msgid "alternative SSL CA Cert (fullpath to cert file)"
msgstr ""

#: ../satellite_tools/satsync.py:2207
msgid "process data for this channel only"
msgstr ""

#: ../satellite_tools/satsync.py:2209
msgid ""
"disk dump will be considered to be a full export; see \"man satellite-sync\" "
"for more information."
msgstr ""

#: ../satellite_tools/satsync.py:2212
msgid "existing custom channels will also be synced (unless -c is used)"
msgstr ""

#: ../satellite_tools/satsync.py:2214
#, python-format
msgid ""
"override debug level set in /etc/rhn/rhn.conf (which is currently set at %s)."
msgstr ""

#: ../satellite_tools/satsync.py:2216
#, python-format
msgid "requested version of XML dump (default: %s)"
msgstr ""

#: ../satellite_tools/satsync.py:2218
msgid "e-mail a report of what was synced/imported"
msgstr ""

#: ../satellite_tools/satsync.py:2220
msgid "forcibly process all (not a diff of) patch metadata"
msgstr ""

#: ../satellite_tools/satsync.py:2222
msgid "Do not use an http proxy under any circumstances."
msgstr ""

#: ../satellite_tools/satsync.py:2224
msgid "alternative http proxy (hostname:port)"
msgstr ""

#: ../satellite_tools/satsync.py:2226
msgid "alternative http proxy username"
msgstr ""

#: ../satellite_tools/satsync.py:2228
msgid "alternative http proxy password"
msgstr ""

#: ../satellite_tools/satsync.py:2230
msgid "parent SUSE Manager to import content from"
msgstr ""

#: ../satellite_tools/satsync.py:2232
msgid "list all available channels and exit"
msgstr ""

#: ../satellite_tools/satsync.py:2234
msgid "help on all error codes mgr-inter-sync returns"
msgstr ""

#: ../satellite_tools/satsync.py:2236
msgid "source mount point for import - disk update only"
msgstr ""

#: ../satellite_tools/satsync.py:2238
msgid "do not process patch data"
msgstr ""

#: ../satellite_tools/satsync.py:2240
msgid "do not process kickstart data (provisioning only)"
msgstr ""

#: ../satellite_tools/satsync.py:2242
msgid "do not process full package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:2244
msgid "do not download, or process any RPMs"
msgstr ""

#: ../satellite_tools/satsync.py:2246
msgid "turn off SSL (not recommended)"
msgstr ""

#: ../satellite_tools/satsync.py:2248
msgid "org to which the sync imports data. defaults to the admin account"
msgstr ""

#: ../satellite_tools/satsync.py:2250
msgid "print the configuration and exit"
msgstr ""

#: ../satellite_tools/satsync.py:2252
msgid "alternative server with which to connect (hostname)"
msgstr ""

#: ../satellite_tools/satsync.py:2254
msgid "synchronize to this step (man satellite-sync for more info)"
msgstr ""

#: ../satellite_tools/satsync.py:2256
msgid "write complete data to tempfile before streaming to remainder of app"
msgstr ""

#: ../satellite_tools/satsync.py:2258
msgid "DEBUG ONLY: alternative path to digital system id"
msgstr ""

#: ../satellite_tools/satsync.py:2260
msgid "alternative email address(es) for sync output (--email option)"
msgstr ""

#: ../satellite_tools/satsync.py:2262
msgid "do not remove rpms when importing from local dump"
msgstr ""

#: ../satellite_tools/satsync.py:2264
msgid ""
"the fully qualified domain name of the master Satellite. Valid with --mount-"
"point only. Required if you want to import org data and channel permissions."
msgstr ""

#: ../satellite_tools/satsync.py:2274
#, python-format
msgid "ERROR: these arguments make no sense in this context (try --help): %s"
msgstr ""

#. An SQL error is fatal... crash and burn
#: ../satellite_tools/satsync.py:2286
#, python-format
msgid "ERROR: Can't connect to the database: %s"
msgstr ""

#: ../satellite_tools/satsync.py:2287
msgid "ERROR: Check if your database is running."
msgstr ""

#: ../satellite_tools/satsync.py:2322
#, python-format
msgid "ERROR: --debug-level takes an in integer value within the range %s."
msgstr ""

#: ../satellite_tools/satsync.py:2324
msgid "  0  - little logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2325
msgid "  1  - minimal logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2326
msgid "  2  - normal level of logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2327
msgid "  3  - lots of logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2328
msgid "  4+ - excessive logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2341
msgid "ERROR: The --master option is only valid with the --mount-point option"
msgstr ""

#: ../satellite_tools/satsync.py:2351
#, python-format
msgid "ERROR: Unable to lookup Org Id %s"
msgstr ""

#: ../satellite_tools/satsync.py:2360
msgid ""
"WARNING: --list-channels option overrides any --step option. --step ignored."
msgstr ""

#: ../satellite_tools/satsync.py:2375
#, python-format
msgid ""
"ERROR: '%s' is not a valid step. See 'man mgr-inter-sync' for more detail."
msgstr ""

#: ../satellite_tools/satsync.py:2407
msgid ""
"ERROR: No channels currently imported; try mgr-inter-sync --list-channels; "
"then mgr-inter-sync -c chn0 -c chn1..."
msgstr ""

#. int(None) --> TypeError
#. int('a')  --> ValueError
#: ../satellite_tools/satsync.py:2457 ../satellite_tools/satsync.py:2461
msgid "ERROR: --batch-size must have a value within the range: 1..50"
msgstr ""

#: ../satellite_tools/satsync.py:2469
#, python-format
msgid "ERROR: no such directory %s"
msgstr ""

#: ../satellite_tools/satsync.py:2474
msgid "Error Codes: Returned codes means:"
msgstr ""

#: ../satellite_tools/satsync.py:2475
msgid " -1  - Could not lock file or KeyboardInterrupt or SystemExit"
msgstr ""

#: ../satellite_tools/satsync.py:2476
msgid "  0  - User interrupted or intentional exit"
msgstr ""

#: ../satellite_tools/satsync.py:2477
msgid "  1  - attempting to run more than one instance of mgr-inter-sync."
msgstr ""

#: ../satellite_tools/satsync.py:2478
msgid "  2  - Unable to find synchronization tools."
msgstr ""

#: ../satellite_tools/satsync.py:2479
msgid "  3  - a general socket exception occurred"
msgstr ""

#: ../satellite_tools/satsync.py:2480
msgid "  4  - an SSL error occurred. Recheck your SSL settings."
msgstr ""

#: ../satellite_tools/satsync.py:2481
msgid "  5  - ISS error"
msgstr ""

#: ../satellite_tools/satsync.py:2482
msgid "  6  - unhandled exception occurred"
msgstr ""

#: ../satellite_tools/satsync.py:2483
msgid "  7  - unknown sync error"
msgstr ""

#: ../satellite_tools/satsync.py:2484
msgid "  8  - ERROR: must be root to execute"
msgstr ""

#: ../satellite_tools/satsync.py:2485
msgid "  9  - rpclib fault during synchronization init"
msgstr ""

#: ../satellite_tools/satsync.py:2486
msgid "  10 - synchronization init error"
msgstr ""

#: ../satellite_tools/satsync.py:2487
msgid "  11 - Error parsing XML stream"
msgstr ""

#: ../satellite_tools/satsync.py:2488
msgid "  12 - Channel do not exist"
msgstr ""

#: ../satellite_tools/satsync.py:2489
msgid "  13 - SQL error during importing package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:2490
msgid "  14 - SQL error during linking channel packages"
msgstr ""

#: ../satellite_tools/satsync.py:2491
msgid "  15 - SQL error during xml processing"
msgstr ""

#: ../satellite_tools/satsync.py:2492
msgid "  16 - server.mount_point not set in the configuration file"
msgstr ""

#: ../satellite_tools/satsync.py:2493
msgid ""
"  17 - SQL error during retrieving the channels already imported in the SUSE "
"Manager database"
msgstr ""

#: ../satellite_tools/satsync.py:2494
msgid "  18 - Wrong db connection string in rhn.conf"
msgstr ""

#: ../satellite_tools/satsync.py:2495
msgid "  19 - Bad arguments"
msgstr ""

#: ../satellite_tools/satsync.py:2496
msgid "  20 - Could not connect to db."
msgstr ""

#: ../satellite_tools/satsync.py:2497
msgid "  21 - Bad debug level"
msgstr ""

#: ../satellite_tools/satsync.py:2498
msgid "  22 - Not valid step"
msgstr ""

#: ../satellite_tools/satsync.py:2499
msgid "  24 - no such file"
msgstr ""

#: ../satellite_tools/satsync.py:2500
msgid "  25 - no such directory"
msgstr ""

#: ../satellite_tools/satsync.py:2501
msgid "  26 - mount_point does not exist"
msgstr ""

#: ../satellite_tools/satsync.py:2502
msgid "  27 - No such org"
msgstr ""

#: ../satellite_tools/satsync.py:2503
msgid "  28 - error: --master is only valid with --mount-point"
msgstr ""

#: ../satellite_tools/satsync.py:2510
#, python-format
msgid "ERROR: unknown dump version, try one of %s"
msgstr ""
   0707010000006F000081B40000000000000000000000016290A0C10000EA6F000000000000000000000000000000000000001B00000000spacewalk-backend/po/fr.po    # SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
#
# Translators:
# Alain PORTAL <aportal@univ-montp2.fr>, 2006.
# Audrey Simons <asimons@redhat.com>, 2004-2005.
# Bettina De Monti <bdemonti@redhat.it>, 2001.
# Damien Durand <splinux@fedoraproject.org>, 2006.
# Decroux Fabien <fdecroux@redhat.com>, 2006-2007.
# JÃ©rÃ´me Fenal <jfenal@gmail.com>, 2012.
#   <jfenal@gmail.com>, 2011.
# jfenal <jfenal@gmail.com>, 2011.
# Myriam Malga <mmalga@redhat.com>, 2007.
# Stephane Raimbault <stephane.raimbault@free.fr>, 2004.
# Jiri Dostal <jdostal@redhat.com>, 2018. #zanata
msgid ""
msgstr ""
"Project-Id-Version: Spacewalk\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-10-16 13:34+0200\n"
"PO-Revision-Date: 2018-03-16 10:54+0000\n"
"Last-Translator: Copied by Zanata <copied-by-zanata@zanata.org>\n"
"Language-Team: French <trans-fr@lists.fedoraproject.org>\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: Zanata 4.6.2\n"

#: ../server/apacheAuth.py:66
#, python-format
msgid "incomplete proxy authentication token: %s"
msgstr "Jeton d'authentification proxy incomplet : %s"

#: ../server/apacheAuth.py:84
#, python-format
msgid "Sent proxy signature %s does not match ours %s."
msgstr "La signature de proxy envoyÃ©e %s ne correspond pas Ã  la nÃ´tre : %s."

#: ../server/apacheAuth.py:119
msgid "declined proxy authentication"
msgstr "authentification proxy rejetÃ©e"

#: ../server/apacheRequest.py:59
#, python-format
msgid "Invalid request received (%s)."
msgstr "RÃ©ception de requÃªte invalide (%s)"

#: ../server/apacheRequest.py:120
#, python-format
msgid ""
"IMPORTANT MESSAGE FOLLOWS:\n"
"%s"
msgstr ""
"UN MESSAGE IMPORTANT SUIT :\n"
"%s"

#: ../server/apacheRequest.py:149
#, python-format
msgid ""
"While running '%s': caught\n"
"%s : %s\n"
msgstr ""
"Lors de l'exÃ©cution de '%s': exception levÃ©e\n"
"%s : %s\n"

#: ../server/apacheRequest.py:606
#, python-format
msgid "Invalid URI %s"
msgstr "URI invalide %s"

#: ../server/configFilesHandler.py:129 ../server/handlers/app/packages.py:192
#: ../server/handlers/xmlrpc/registration.py:215
#: ../server/handlers/xmlrpc/registration.py:1168
#: ../server/handlers/xmlrpc/registration.py:1307
#, python-format
msgid ""
"\n"
"                   %s Account has been deactivated on this server.\n"
"                   Please contact your Org administrator for more help."
msgstr ""
"\n"
"                   Le compte %s a Ã©tÃ© dÃ©sactivÃ© sur ce serveur.\n"
"                   Veuillez contacter votre administrateur d'organisation "
"pour plus d'assistance."

#: ../server/handlers/applet/applet.py:78
#, fuzzy, python-brace-format
msgid "Your system was not found in the {PRODUCT_NAME} database"
msgstr "Votre systÃ¨me n'a pas Ã©tÃ© trouvÃ© dans la base de donnÃ©es RHN"

#: ../server/handlers/sat/auth.py:45
#, fuzzy
msgid "ISS is disabled on this server."
msgstr "ISS est dÃ©sactivÃ© sur ce satellite."

#: ../server/handlers/sat/auth.py:50
#, python-format
msgid "Server \"%s\" is not enabled for ISS."
msgstr "Serveur \"%s\" n'est pas autorisÃ© pour ISS."

#: ../server/handlers/xmlrpc/errata.py:64
#, python-format
msgid "Expected a package name, not: %s"
msgstr "Nom de paquet attendu, pas : %s"

#: ../server/handlers/xmlrpc/errata.py:115
#, python-format
msgid "Expected a package, not: %s"
msgstr "Paquet attendu, pas : %s"

#: ../server/handlers/xmlrpc/proxy.py:65
#, fuzzy, python-format
msgid "SUSE Manager Proxy service not enabled for server profile: \"%s\""
msgstr "Service RHN Proxy non activÃ© pour le profil de serveur : \"%s\""

#: ../server/handlers/xmlrpc/proxy.py:85
msgid "Invalid session key"
msgstr "ClÃ© de session invalide"

#: ../server/handlers/xmlrpc/proxy.py:93
msgid "This server ID no longer exists"
msgstr "Cet identifiant de serveur n'existe plus"

#: ../server/handlers/xmlrpc/queue.py:433
#, python-format
msgid "Invalid action value type %s (%s)"
msgstr "Type d'action %s invalide (%s)"

#: ../server/handlers/xmlrpc/queue.py:464
#, python-format
msgid "Action %s does not belong to server %s"
msgstr "L'action %s n'appartient pas au serveur %s"

#: ../server/handlers/xmlrpc/registration.py:194
msgid "Required data missing"
msgstr "DonnÃ©es requises manquantes"

#: ../server/handlers/xmlrpc/registration.py:198
msgid "Required members missing"
msgstr "Membres requis manquantes"

#: ../server/handlers/xmlrpc/registration.py:207
msgid "Attempt to register a system to an invalid username"
msgstr "Essai d'enregistrer un systÃ¨me avec un nom d'utilisateur invalide"

#: ../server/handlers/xmlrpc/registration.py:839
msgid "Invalid system release version requested"
msgstr "Version de systÃ¨me demandÃ©e invalide"

#: ../server/handlers/xmlrpc/registration.py:1063
msgid ""
"Unable to find a valid network interface, both ipaddr and ip6addr not found."
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1115
#, python-brace-format
msgid "{PRODUCT_NAME} Welcome Message"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1125
#, fuzzy
msgid "Privacy Statement"
msgstr "DÃ©claration de respect de la vie privÃ©e de Red Hat Network"

#: ../server/handlers/xmlrpc/registration.py:1146
msgid "Expected a dictionary as a product argument"
msgstr "J'attendais un dictionnaire en tant qu'arguement produit"

#: ../server/handlers/xmlrpc/registration.py:1374
#, python-format
msgid "Invalid value '%s' for %s (%s)"
msgstr "Valeur incorrecte '%s' pour %s (%s)"

#: ../server/handlers/xmlrpc/scap.py:104
#, fuzzy
msgid "Invalid system_id/action_id pair."
msgstr "Informations d'identification du systÃ¨me invalides."

#: ../server/handlers/xmlrpc/up2date.py:233
#, python-format
msgid "Invalid value %s (%s)"
msgstr "Valeur %s invalide (%s)"

#: ../server/importlib/userAuth.py:98
msgid "You are not authorized to manage packages in the null org"
msgstr ""
"Vous n'Ãªtes pas autorisÃ© Ã  administrer les paquets de l'organisation null"

#: ../server/importlib/userAuth.py:103
#, python-format
msgid "You are not allowed to manage packages in the %s org"
msgstr ""
"Vous n'Ãªtes pas autorisÃ© Ã  administrer les paquets de l'organisation %s"

#: ../server/importlib/userAuth.py:121
msgid "You are not allowed to perform administrative tasks"
msgstr "Vous n'Ãªtes pas autorisÃ© Ã  rÃ©aliser des tÃ¢ches d'administration"

#: ../server/importlib/userAuth.py:144
#, python-format
msgid ""
"You are not allowed to manage channel %s, or that channel does not exist"
msgstr ""
"Vous n'Ãªtes pas autorisÃ© Ã  administrer le canal %s, ou ce canal n'existe pas"

#: ../server/importlib/userAuth.py:204
#, fuzzy, python-format
msgid ""
"\n"
"               %s Account has been deactivated on this server.\n"
"               Please contact your Org administrator for more help."
msgstr ""
"\n"
"                   Le compte %s a Ã©tÃ© dÃ©sactivÃ© sur ce serveur.\n"
"                   Veuillez contacter votre administrateur d'organisation "
"pour plus d'assistance."

#: ../server/rhnChannel.py:1992
#, python-format
msgid ""
"Your account does not have access to any channels matching "
"(release='%(release)s', arch='%(arch)s')%(www_activation)s"
msgstr ""
"Votre compte n'a pas accÃ¨s Ã  aucun canal correspondant Ã  "
"(release='%(release)s', arch='%(arch)s')%(www_activation)s"

#: ../server/rhnChannel.py:2002
msgid ""
"\n"
"If you have a registration number, please register with it first at http://"
"www.redhat.com/apps/activate/ and then try again.\n"
"\n"
msgstr ""
"\n"
"Si vous avez un numÃ©ro d'installation, veuillez d'abord l'enregistrer Ã  "
"http://www.redhat.com/apps/activate/ puis de rÃ©essayer.\n"
"\n"

#: ../server/rhnChannel.py:2012
#, python-format
msgid "Insufficient subscription permissions for release (%s, %s"
msgstr "Permissions de souscriptions insuffisantes pour la version (%s, %s"

#. Various messages that can be reused
#.
#. bretm 02/07/2007 -- when we have better old-client documentation, probably
#. will be safe to get rid of all this crap
#: ../server/rhnChannel.py:2276 ../server/rhnChannel.py:2287
#: ../server/rhnChannel.py:2302
msgid "System Registered but Inactive"
msgstr "SystÃ¨me EnregistrÃ© mais Inactif"

#: ../server/rhnChannel.py:2277
#, fuzzy, python-format
msgid ""
"\n"
"Invalid Architecture and OS release combination (%s, %s).\n"
"Your system has been registered, but will not receive updates\n"
"because it is not subscribed to a channel. If you have not yet\n"
"activated your product for service, please visit our website at:\n"
"\n"
"     http://www.redhat.com/apps/activate/\n"
"\n"
"...to activate your product."
msgstr ""
"\n"
"Combinaison d'architecture et de version de l'OS (%s, %s) invalide.\n"
"Votre systÃ¨me a Ã©tÃ© enregistrÃ©, mais ne recevra pas de\n"
"mises Ã  jour car il n'est pas abonnÃ© Ã  un canal de base. Si vous n'avez\n"
"pas encore activÃ© votre produit pour le service, veuillez visiter notre site "
"web Ã  :\n"
"  \n"
"     http://www.redhat.com/apps/activate/\n"
"\n"
"...pour activer votre produit."

#: ../server/rhnChannel.py:2288
#, python-format
msgid ""
"\n"
"Invalid Architecture and OS release combination (%s, %s).\n"
"Your system has been registered, but will not receive updates\n"
"because it could not be subscribed to a base channel.\n"
"Please contact your organization administrator for assistance.\n"
msgstr ""
"\n"
"Combinaison d'architecture et de version de l'OS (%s, %s) invalide.\n"
"Votre systÃ¨me a Ã©tÃ© enregistrÃ©, mais ne recevra pas de\n"
"mises Ã  jour car il n'est pas abonnÃ© Ã  un canal de base.\n"
"Contacter l'administrateur de votre organisation pour une assistance.\n"

#: ../server/rhnChannel.py:2295
#, python-format
msgid ""
"\n"
"  This system has been successfully registered, but is not yet entitled\n"
"  to service.  To entitle this system to service, login to the web site at:\n"
"\n"
"  %(entitlement_url)s\n"
msgstr ""
"\n"
"  Ce systÃ¨me a Ã©tÃ© inscrit avec succÃ¨s, mais n'a aucun droit d'accÃ¨s\n"
"  au service. Pour attribuer Ã  ce systÃ¨me un droit d'accÃ¨s au service,\n"
"  se connecter au site web Ã  l'adresse suivanteÂ :\n"
"\n"
"  %(entitlement_url)s\n"

#: ../server/rhnChannel.py:2303
#, python-format
msgid ""
"\n"
"  This system has been successfully registered, but no service entitlements\n"
"  were available.  To entitle this system to service, login to the web site "
"at:\n"
"\n"
"  %(entitlement_url)s\n"
msgstr ""
"\n"
"  Ce systÃ¨me a Ã©tÃ© inscrit avec succÃ¨s, mais aucun droit d'accÃ¨s au service\n"
"  n'est disponible. Pour attribuer Ã  ce systÃ¨me un droit d'accÃ¨s au "
"service,\n"
"  se connecter au site web Ã  l'adresse suivanteÂ :\n"
"\n"
"  %(entitlement_url)s\n"

#: ../server/rhnHandler.py:62
msgid "Please run rhn_register as root on this client"
msgstr ""

#: ../server/rhnHandler.py:75
#, python-format
msgid "Service not enabled for system profile: \"%s\""
msgstr "Service dÃ©sactivÃ© pour le profil de systÃ¨me : \"%s\""

#: ../server/rhnPackage.py:49 ../server/rhnPackage.py:87
#: ../server/rhnPackage.py:107 ../server/rhnPackage.py:158
#, python-format
msgid "Invalid RPM package %s requested"
msgstr "Paquet RPM %s demandÃ© invalide"

#: ../server/rhnPackage.py:112
msgid "Package not found"
msgstr "Paquet non trouvÃ©"

#: ../server/rhnServer/server_class.py:97
#, python-format
msgid "Architecture `%s' is not supported"
msgstr "L'architecture `%s' n'est pas supportÃ©e"

#: ../server/rhnServer/server_token.py:78
#, python-format
msgid "Token `%s' has more than one base channel assigned"
msgstr "Le jeton `%s' a plus d'un canal de base assignÃ©"

#: ../server/rhnServer/server_token.py:80
msgid "Conflicting base channels"
msgstr "Canaux de base conflictuels"

#: ../server/rhnServer/server_token.py:190
#, python-format
msgid "Failed to add server to group %s"
msgstr "Ã‰chec dans l'ajout du serveur au groupe %s"

#: ../server/rhnServer/server_token.py:503
#, python-format
msgid "Maximum usage count of %s reached"
msgstr "Limite d'utilisation maximale de %s atteinte"

#: ../server/rhnServer/server_token.py:744
msgid ""
"Stacking of re-registration tokens with different base entitlements is not "
"supported"
msgstr ""
"L'empilement de jetons de rÃ©enregistrement avec des droits de base "
"diffÃ©rents n'est pas supportÃ©"

#: ../server/rhnServer/server_token.py:811
#, python-format
msgid "Could not find token '%s'"
msgstr "Jeton '%s' introuvable"

#. Cannot use activation keys from different orgs
#: ../server/rhnServer/server_token.py:843
msgid "Tokens from mismatching orgs"
msgstr "Jetons provenant d'organisation incompatibles"

#. Two tokens with different kickstart sessions
#: ../server/rhnServer/server_token.py:853
msgid "Kickstart session mismatch"
msgstr "InadÃ©quation de session kickstart"

#: ../server/rhnServer/server_token.py:877
msgid "Stacking of re-registration tokens is not supported"
msgstr "L'empilement de jetons de rÃ©enregistrement n'est pas supportÃ©"

#: ../server/rhnUser.py:289 ../server/rhnUser.py:292
msgid "Invalid username/password combination"
msgstr "Combinaison utilisateur/mot de passe invalide"

#. nope, not reserved either
#: ../server/rhnUser.py:467
#, python-format
msgid "Username `%s' has not been reserved"
msgstr "Le nom d'utilisateur `%s' n'a pas Ã©tÃ© rÃ©servÃ©"

#. New accounts have to specify an e-mail address
#: ../server/rhnUser.py:473
msgid "E-mail address not specified"
msgstr "Adresse courriel non spÃ©cifiÃ©e"

#: ../server/rhnUser.py:509
#, python-format
msgid "username should be at least %d characters"
msgstr "Le nom d'utilisateur doit comporter au moins %d caractÃ¨res"

#: ../server/rhnUser.py:512
#, python-format
msgid "username should be less than %d characters"
msgstr "Le nom d'utilisateur doit comporter au plus %d caractÃ¨res"

#: ../server/rhnUser.py:523
#, python-format
msgid "username = `%s', invalid character `%s'"
msgstr "nom d'utilisateur = `%s', caractÃ¨re invalide `%s'"

#: ../server/rhnUser.py:542
#, python-format
msgid "Please limit your e-mail address to %s chars"
msgstr "Veuillez limiter votre adresse courriel Ã  %s caractÃ¨res"

#: ../server/rhnUser.py:623
#, python-format
msgid "password must be at least %d characters"
msgstr "Le mot de passe doit comporter au moins %d caractÃ¨res"

#: ../server/rhnUser.py:626
#, python-format
msgid "Password must be shorter than %d characters"
msgstr "Le mot de passe doit comporter au plus %d caractÃ¨res"

#: ../server/rhnUser.py:644
#, python-format
msgid "password contains character `%s'"
msgstr "le mot de passe contient le caractÃ¨re `%s'"

#: ../server/rhnUser.py:651
#, python-format
msgid "username should be at least %d characters long"
msgstr "Le nom d'utilisateur doit comporter au moins %d caractÃ¨res"

#: ../server/rhnUser.py:662
#, python-format
msgid "Cannot register usernames ending with %s"
msgstr "Impossible d'enregistrer un nom d'utilisateur se terminant par %s"

#. 0-999: Red Hat client/client-like interaction errors:
#: ../common/rhnException.py:53
msgid "This does not appear to be a valid username."
msgstr "Ceci ne semble pas Ãªtre un nom d'utilisateur invalide."

#: ../common/rhnException.py:54
msgid "Invalid username and password combination."
msgstr "Combinaison utilisateur et mot de passe invalide."

#: ../common/rhnException.py:55
msgid "This login is already taken, or the password is incorrect."
msgstr "Cet identifiant est dÃ©jÃ  utilisÃ©, ou le mot de passe est incorrect."

#: ../common/rhnException.py:56
msgid "Permission denied."
msgstr "Permission refusÃ©e."

#: ../common/rhnException.py:57
msgid "Object not found."
msgstr "Objet non trouvÃ©."

#: ../common/rhnException.py:58
msgid "Invalid System Digital ID."
msgstr "Identifiant numÃ©rique de systÃ¨me invalide."

#: ../common/rhnException.py:59
msgid "Invalid System Credentials."
msgstr "Informations d'identification du systÃ¨me invalides."

#: ../common/rhnException.py:60
msgid "Could not retrieve user data from database."
msgstr "DonnÃ©es utilisateur non trouvÃ©es dans la base."

#: ../common/rhnException.py:61
msgid "Valid username required."
msgstr "Nom d'utilisateur valide requis."

#: ../common/rhnException.py:62
msgid "Valid password required."
msgstr "Mot de passe valide requis."

#: ../common/rhnException.py:63
msgid "Minimum username length violation."
msgstr "Violation de la limite minimale de longueur du nom d'utilisateur."

#: ../common/rhnException.py:64
msgid "Minimum password length violation."
msgstr "Violation de la limite minimale de longueur du mot de passe."

#: ../common/rhnException.py:65
msgid "The username contains invalid characters."
msgstr "Le nom d'utilisateur contient des caractÃ¨res invalides."

#: ../common/rhnException.py:66
msgid "File not found."
msgstr "Fichier non trouvÃ©."

#: ../common/rhnException.py:67
msgid "Architecture and OS version combination is not supported."
msgstr "Combinaison architecture et OS non supportÃ©e."

#: ../common/rhnException.py:68
msgid "Could not retrieve system data from database."
msgstr "Impossible de rÃ©cupÃ©rer les donnÃ©es du systÃ¨me."

#: ../common/rhnException.py:69
msgid "Invalid arguments passed to function."
msgstr "Arguments invalides passÃ©s Ã  la fonction."

#: ../common/rhnException.py:70
msgid "Unable to retrieve requested entry."
msgstr "Impossible de rÃ©cupÃ©rer l'entrÃ©e demandÃ©e."

#: ../common/rhnException.py:71
msgid "Could not update database entry."
msgstr "Impossible de mettre Ã  jour l'entrÃ©e de base de donnÃ©es."

#: ../common/rhnException.py:72
msgid "Unsupported server architecture."
msgstr "Architecture serveur non supportÃ©e."

#: ../common/rhnException.py:73
#, fuzzy, python-format
msgid ""
"\n"
"     The anonymous server functionality is no longer available.\n"
"\n"
"     Please re-register this system by running mgr_register as root.\n"
"     Please visit https://%(hostname)s/rhn/systems/SystemEntitlements.do\n"
"     or login at https://%(hostname)s, and from the \"Overview\" tab,\n"
"     select \"Subscription Management\" to enable the service for this "
"system.\n"
"     "
msgstr ""
"\n"
"     La fonctionnalitÃ© serveur anonyme n'est plus disponible.\n"
"\n"
"     Veuillez rÃ©inscrire ce systÃ¨me en utilisant rhn_register\n"
"     (ou up2date --register sur Red Hat Enterprise Linux 3+) en tant que "
"root.\n"
"     Veuillez consulter https://%(hostname)s/rhn/systems/SystemEntitlements."
"do\n"
"     ou vous connecter sur https://%(hostname)s, et depuis l'onglet AperÃ§u,\n"
"     sÃ©lectionner Â« Gestion des Abonnements Â» pour activer le service RHN "
"sur\n"
"     ce systÃ¨me.\n"
"     "

#: ../common/rhnException.py:81
msgid "Record not available in the database."
msgstr "Enregistrement non disponible dans la base de donnÃ©es."

#: ../common/rhnException.py:82
msgid "Invalid value for entry."
msgstr "Valeur invalide pour l'entrÃ©e."

#: ../common/rhnException.py:83
#, fuzzy, python-format
msgid ""
"\n"
"     This system does not have a valid entitlement for SUSE Manager.\n"
"     Please visit https://%(hostname)s/rhn/systems/SystemEntitlements.do\n"
"     or login at https://%(hostname)s, and from the \"Overview\" tab,\n"
"     select \"Subscription Management\" to enable the service for this "
"system.\n"
"     "
msgstr ""
"\n"
"     Ce systÃ¨me n'a pas de droit valide pour accÃ©der Ã  Red Hat Network.\n"
"     Veuillez consulter https://%(hostname)s/rhn/systems/SystemEntitlements."
"do\n"
"     ou vous connecter sur https://%(hostname)s, et depuis l'onglet AperÃ§u,\n"
"     sÃ©lectionner Â« Gestion des Abonnements Â» pour activer le service RHN "
"sur\n"
"     ce systÃ¨me.\n"
"     "

#: ../common/rhnException.py:89
msgid "Channel error"
msgstr "Erreur de canal"

#: ../common/rhnException.py:90
msgid "Client session token is invalid."
msgstr "Le jeton de session cliente est invalide."

#: ../common/rhnException.py:91
msgid "Client session token has expired."
msgstr "Le jeton de session cliente a expirÃ©."

#: ../common/rhnException.py:92
msgid "You are not authorized to retrieve the requested object."
msgstr "Vous n'Ãªtes pas autorisÃ© Ã  rÃ©cupÃ©rer l'objet demandÃ©."

#: ../common/rhnException.py:93
msgid "Invalid action"
msgstr "Action invalide"

#: ../common/rhnException.py:94
msgid "You are not allowed to perform administrative tasks on this system."
msgstr ""
"Vous n'Ãªtes pas autorisÃ© Ã  rÃ©aliser les tÃ¢ches d'administration sur ce "
"systÃ¨me."

#: ../common/rhnException.py:96
msgid "The system is already subscribed to the specified channel."
msgstr "Ce systÃ¨me est dÃ©jÃ  abonnÃ© au canal spÃ©cifiÃ©."

#: ../common/rhnException.py:97
msgid "The system is not currently subscribed to the specified channel."
msgstr "Ce systÃ¨me n'est pas abonnÃ© au canal spÃ©cifiÃ©."

#: ../common/rhnException.py:98
msgid "The specified channel does not exist."
msgstr "Le canal spÃ©cifiÃ© n'existe pas."

#: ../common/rhnException.py:99
msgid "Invalid channel version."
msgstr "Version de canal invalide."

#: ../common/rhnException.py:100
#, fuzzy
msgid ""
"\n"
"     User group membership limits exceeded.\n"
"\n"
"     The current settings for your account do not allow you to add another\n"
"     user account. Please check with the organization administrator for "
"your\n"
"     account if the maximum number of users allowed to subscribe to server "
"needs\n"
"     to be changed.\n"
"     "
msgstr ""
"\n"
"     DÃ©passement de la limite d'adhÃ©sion Ã  des groupes d'utilisateur.\n"
"\n"
"     Les rÃ©glages actuels de votre compte ne vous autorisent pas Ã  crÃ©er\n"
"     un compte utilisateur. Veuillez vÃ©rifier avec l'administrateur de "
"votre\n"
"     organisation de votre compte si le nombre maximal d'utilisateurs "
"autorisÃ©s\n"
"     Ã  se connecter Ã  RHN doit Ãªtre modifiÃ©.\n"
"     "

#: ../common/rhnException.py:108
#, fuzzy
msgid ""
"\n"
"     System group membership limits exceeded.\n"
"\n"
"     The current settings for your account do not allow you to add another\n"
"     system profile. Please check with the organization administrator for "
"your\n"
"     account for modifying the maximum number of system profiles that can "
"be\n"
"     subscribed to your account.\n"
"     "
msgstr ""
"\n"
"     DÃ©passement de la limite d'adhÃ©sion Ã  des groupes de systÃ¨mes.\n"
"\n"
"     Les rÃ©glages actuels de votre compte ne vous autorisent pas Ã  crÃ©er\n"
"     un nouveau profil de systÃ¨me. Veuillez vÃ©rifier avec l'administrateur\n"
"     de votre organisation de votre compte si le nombre maximal de systÃ¨mes\n"
"     autorisÃ©s Ã  s'inscrire sur RHN doit Ãªtre modifiÃ©.\n"
"     "

#: ../common/rhnException.py:116
#, fuzzy
msgid ""
"\n"
"     Invalid architecture.\n"
"\n"
"     The architecture of the package is not supported by\n"
"     "
msgstr ""
"\n"
"     Architecture invalide.\n"
"\n"
"     L'architecture de ce paquet n'est pas prise en charge par Red Hat "
"Network\n"
"     "

#: ../common/rhnException.py:121
msgid "Invalid RPM header"
msgstr "En-tÃªte RPM invalide"

#: ../common/rhnException.py:122
msgid ""
"\n"
"    This system is already registered as a Salt Minion. If you want to "
"register it as a traditional client\n"
"    please delete it first via the web UI or API and then register it using "
"the traditional tools.\n"
"    "
msgstr ""

#. For the uploading tools
#: ../common/rhnException.py:127
msgid "Invalid information uploaded to the server"
msgstr "Information invalide transmise au serveur"

#: ../common/rhnException.py:128
msgid "Error uploading network interfaces configuration."
msgstr "Erreur lors de l'envoi de la configuration des interfaces rÃ©seau."

#: ../common/rhnException.py:129
msgid ""
"\n"
"     Package Upload Failed due to uniqueness constraint violation.\n"
"     Make sure the package does not have any duplicate dependencies or\n"
"     does not already exists on the server\n"
"     "
msgstr ""
"\n"
"     Le transfert de paquet a Ã©chouÃ© du fait de la violation de la\n"
"     contrainte d'unicitÃ©. Assurez-vous que le paquet ne possÃ¨de pas\n"
"     de dÃ©pendance dupliquÃ©e ou n'existe pas dÃ©jÃ  sur le serveur.\n"
"     "

#: ../common/rhnException.py:134
#, fuzzy
msgid ""
"\n"
"     The --force rhnpush option is disabled on this server.\n"
"     Please contact your SUSE Manager administrator for more help.\n"
"     "
msgstr ""
"\n"
"     L'option --force de rhnpush est dÃ©sactivÃ©e sur ce serveur.\n"
"     Veuillez contacter votre administrateur de Satellite pour\n"
"     obtenir de l'aide.\n"
"     "

#. 60-70: token errors
#: ../common/rhnException.py:140
msgid ""
"\n"
"     The activation token specified could not be found on the server.\n"
"     Please retry with a valid key.\n"
"     "
msgstr ""
"\n"
"     La clÃ© d'activation spÃ©cifiÃ©e est introuvable sur le serveur.\n"
"     Retenter avec une clÃ© valide.\n"
"     "

#: ../common/rhnException.py:144
msgid "Too many systems registered using this registration token"
msgstr "Trop de systÃ¨mes enregistrÃ©s avec ce jeton d'enregistrement."

#: ../common/rhnException.py:145
msgid "Token contains invalid, obsoleted or insufficient settings"
msgstr ""
"Le jeton contient des configurations invalides, obsolÃ¨tes ou insuffisantes."

#: ../common/rhnException.py:146
msgid "Conflicting activation tokens"
msgstr "Jetons d'activation en conflit"

#. 70-80: channel subscription errors
#: ../common/rhnException.py:149
msgid ""
"\n"
"     No matching base channel found for your system.\n"
"     "
msgstr ""

#: ../common/rhnException.py:152
msgid ""
"\n"
"     You do not have subscription permission to the designated channel.\n"
"     Please refer to your organization's channel or organization\n"
"     administrators for further details.\n"
"     "
msgstr ""
"\n"
"     Vous n'avez pas d'abonnement autorisant l'accÃ¨s au canal dÃ©signÃ©.\n"
"     Veuillez consulter vos administrateurs de canaux ou d'organisation\n"
"     pour plus de dÃ©tails.\n"
"     "

#: ../common/rhnException.py:157
msgid "You can not unsubscribe from base channel."
msgstr "Vous ne pouvez pas vous dÃ©sabonner du canal de base."

#: ../common/rhnException.py:158
msgid "SUSE Manager or Proxy channel can not be subscribed."
msgstr ""

#. 80-90: server group errors
#: ../common/rhnException.py:161
msgid "There was an error while trying to join the system to its groups"
msgstr ""
"Une erreur est survenue en essayant de faire adhÃ©rer le systÃ¨me Ã  ses groupes"

#. 90-100: entitlement errors
#: ../common/rhnException.py:164
msgid "Unable to entitle system"
msgstr "Impossible d'accorder des droits au systÃ¨me"

#. 100-109: e-mail and uuid related faults
#: ../common/rhnException.py:167
msgid "Maximum e-mail length violation."
msgstr "Limite de taille de courriel dÃ©passÃ©e."

#: ../common/rhnException.py:168
msgid "This system has been previously registered."
msgstr "Ce systÃ¨me est dÃ©jÃ  enregistrÃ©."

#: ../common/rhnException.py:169
msgid "Invalid username"
msgstr "Nom d'utilisateur invalide"

#. 140-159 applet errors
#: ../common/rhnException.py:172
msgid "Unable to look up server"
msgstr "Impossible de rechercher le serveur"

#. 160-179: OSAD errors
#: ../common/rhnException.py:175
msgid "Required argument is missing"
msgstr "Un paramÃ¨tre indispensable est manquant"

#. 600-699: RHEL5+ EN errors
#: ../common/rhnException.py:178
msgid "No entitlement information tied to hardware"
msgstr "Aucune information de droit n'est liÃ©e au matÃ©riel"

#: ../common/rhnException.py:179
msgid "Installation number is not entitling"
msgstr "Le numÃ©ro d'installation n'ouvre aucun droit"

#. 700-799: Additional user input verification errors.
#: ../common/rhnException.py:182
msgid "Maximum username length violation"
msgstr "Violation de la limite maximale de longueur du nom d'utilisateur"

#: ../common/rhnException.py:183
msgid "Maximum password length violation"
msgstr "Violation de la limite minimale de longueur du mot de passe"

#: ../common/rhnException.py:184
msgid "This user has read only API access. Action denied."
msgstr ""

#: ../common/rhnException.py:186
#, fuzzy
msgid "System Name cannot be less than 1 character"
msgstr "Le nom d'utilisateur doit comporter au plus %d caractÃ¨res"

#. 1000-1999: Proxy specific errors:
#. issued by a Proxy to the client
#: ../common/rhnException.py:190
#, fuzzy
msgid "SUSE Manager Proxy error."
msgstr "Erreur de RHN Proxy."

#: ../common/rhnException.py:191
#, fuzzy
msgid "SUSE Manager Proxy unable to login."
msgstr "Le Proxy RHN est incapable de se connecter."

#. issued by a SUSE Manager Server/Satellite to the proxy
#: ../common/rhnException.py:193
msgid ""
"\n"
"     SUSE Manager Proxy system ID does not match a Spacewalk Proxy Server\n"
"     in the database.\n"
"     "
msgstr ""

#: ../common/rhnException.py:197
#, fuzzy
msgid "SUSE Manager Proxy session token is invalid."
msgstr "Le jeton de session du Proxy RHN est invalide."

#: ../common/rhnException.py:198
#, fuzzy
msgid "SUSE Manager Proxy session token has expired."
msgstr "Le jeton de session du Proxy RHN a expirÃ©."

#. 2000-2999: Red Hat Satellite specific errors:
#: ../common/rhnException.py:202
#, fuzzy
msgid ""
"\n"
"      user creation is not allowed via mgr_register;\n"
"     please contact your sysadmin to have your account created.\n"
"     "
msgstr ""
"\n"
"     La crÃ©ation d'un utilisateur sur RHN Satellite n'est pas autorisÃ©e\n"
"     via rhn_register (ou up2date --register sur Red Hat\n"
"     Enterprise Linux 3 ou plus) ; veuillez contacter votre      "
"administrateur systÃ¨me afin qu'il puisse crÃ©er votre\n"
"     compte utilisateur.\n"
"     "

#: ../common/rhnException.py:206
#, fuzzy
msgid ""
"\n"
"     This SUSE Manager server is not allowed to use Inter Server Sync on "
"this server\n"
"     "
msgstr ""
"\n"
"     Ce serveur satellite n'est pas autorisÃ© Ã  utiliser la synchronisation "
"inter-satellite\n"
"     "

#: ../common/rhnException.py:209
#, fuzzy
msgid ""
"\n"
"     Inter Server Sync is disabled on this SUSE Manager Server.\n"
"     "
msgstr ""
"\n"
"     La synchronisation inter-satellite est dÃ©sactivÃ©e sur ce satellite.\n"
"     "

#. 3000-3999: XML dumper errors:
#: ../common/rhnException.py:214
msgid "Invalid datatype passed"
msgstr "Type de donnÃ©es invalide passÃ©"

#: ../common/rhnException.py:215
msgid "Unable to retrieve channel"
msgstr "Impossible de rÃ©cupÃ©rer le canal"

#: ../common/rhnException.py:216
msgid "Unable to retrieve package"
msgstr "Impossible de rÃ©cupÃ©rer le paquet"

#: ../common/rhnException.py:217
msgid "Unable to retrieve erratum"
msgstr "Impossible de rÃ©cupÃ©rer l'erratum"

#: ../common/rhnException.py:218
msgid "File is missing"
msgstr "Le fichier est manquant"

#: ../common/rhnException.py:219
msgid "Function retrieval error"
msgstr "Erreur de rÃ©cupÃ©ration de la fonction"

#: ../common/rhnException.py:220
msgid "Function execution error"
msgstr "Erreur d'exÃ©cution de la fonction"

#: ../common/rhnException.py:221
msgid "Missing version string"
msgstr "ChaÃ®ne de version manquante"

#: ../common/rhnException.py:222
msgid "Invalid version string"
msgstr "ChaÃ®ne de version invalide"

#: ../common/rhnException.py:223
msgid "Mismatching versions"
msgstr "Versions incompatibles"

#: ../common/rhnException.py:224
msgid "Invalid channel version"
msgstr "Version de canal incompatible"

#: ../common/rhnException.py:225
msgid "No comps file for channel"
msgstr "Pas de fichier comps pour le canal"

#: ../common/rhnException.py:226
msgid "Unable to retrieve comps file"
msgstr "Impossible de rÃ©cupÃ©rer le fichier comps"

#. 4000 - 4999: config management errors
#: ../common/rhnException.py:229
msgid "Configuration action missing"
msgstr "Action de configuration manquante"

#: ../common/rhnException.py:230
msgid "File too large"
msgstr "Fichier trop grand"

#: ../common/rhnException.py:231
msgid "File contains binary data"
msgstr "Le fichier contient des donnÃ©es binaires"

#: ../common/rhnException.py:232
msgid "Configuration channel is not empty"
msgstr "Le canal de configuration n'est pas vide"

#: ../common/rhnException.py:233
msgid "Permission error"
msgstr "Erreur d'autorisation"

#: ../common/rhnException.py:234
msgid "Content missing for configuration file"
msgstr "Contenu du fichier de configuration absent"

#: ../common/rhnException.py:235
msgid "Template delimiters not specified"
msgstr "DÃ©limiteurs de macro non spÃ©cifiÃ©"

#: ../common/rhnException.py:236
msgid "Configuration channel does not exist"
msgstr "Le canal de configuration n'existe pas"

#: ../common/rhnException.py:237
msgid "Configuration channel already exists"
msgstr "Le canal de configuration existe dÃ©jÃ "

#: ../common/rhnException.py:238
msgid "File missing from configuration channel"
msgstr "Fichier absent du canal de configuration"

#: ../common/rhnException.py:239
msgid "Different revision of this file is uploaded"
msgstr "Une rÃ©vision diffÃ©rente de ce fichier a dÃ©jÃ  Ã©tÃ© transmise"

#: ../common/rhnException.py:240
msgid "File already uploaded to configuration channel"
msgstr "Ce fichier a dÃ©jÃ  Ã©tÃ© transmis Ã  ce canal de configuration"

#: ../common/rhnException.py:241
msgid "File size exceeds remaining quota space"
msgstr "La taille du fichier excÃ¨de le quota restant"

#: ../common/rhnException.py:242
msgid "Full path of file must be specified"
msgstr "Le chemin complet du fichier doit Ãªtre indiquÃ©"

#: ../common/rhnException.py:243
msgid "Invalid revision number"
msgstr "NumÃ©ro de rÃ©vision invalide"

#: ../common/rhnException.py:244
msgid "Cannot compare files of different file type"
msgstr "Impossible de comparer des fichiers de types diffÃ©rents"

#. 5000 - 5999: client content uploading errors
#. 5000 - 5099: crash reporting errors
#: ../common/rhnException.py:248
msgid "Crash information is invalid or incomplete"
msgstr ""

#: ../common/rhnException.py:249
msgid "Crash file information is invalid or incomplete"
msgstr ""

#: ../common/rhnException.py:250
msgid "Error composing crash directory path"
msgstr ""

#: ../common/rhnException.py:251
msgid "Error composing crash file path"
msgstr ""

#: ../common/rhnException.py:252 ../common/rhnException.py:259
#, fuzzy
msgid "Invalid content encoding"
msgstr "Code item invalide"

#: ../common/rhnException.py:253
#, fuzzy
msgid "Invalid crash name"
msgstr "Nom de paquetage invalide"

#: ../common/rhnException.py:254
msgid "Crash reporting is disabled for this organization"
msgstr ""

#. 5100 - 5199: scap results reporting error
#: ../common/rhnException.py:256
msgid "SCAP results file transfer is invalid or incomplete"
msgstr ""

#: ../common/rhnException.py:257
msgid "Error composing directory path for detailed SCAP results"
msgstr ""

#: ../common/rhnException.py:258
msgid "Error composing file path for detailed SCAP results"
msgstr ""

#: ../common/rhnException.py:306
#, fuzzy
msgid ""
"\n"
"     An error has occurred while processing your request. If this problem\n"
"     persists please enter a bug report at scc.suse.com.\n"
"     If you choose to submit the bug report, please be sure to include\n"
"     details of what you were trying to do when this error occurred and\n"
"     details on how to reproduce this problem.\n"
msgstr ""
"\n"
"     Une erreur est survenue pendant le traitement de votre demande. Si\n"
"     le problÃ¨me persiste, merci de crÃ©er un rapport d'anomalie sur\n"
"     bugzilla.redhat.com. Si vous choisissez de soumettre ce rapport\n"
"     d'anomalie, assurez-vous d'y adjoindre les dÃ©tails de ce que vous "
"Ã©tiez\n"
"     en train de faire lorsque l'erreur est survenue, ainsi que les dÃ©tails\n"
"     sur la faÃ§on de reproduire le problÃ¨me.\n"

#: ../common/rhnException.py:358
#, python-format
msgid ""
"Error Message:\n"
"    %s\n"
msgstr ""
"Message d'erreurÂ :\n"
"    %s\n"

#: ../common/rhnException.py:360
#, python-format
msgid "Error Class Code: %s\n"
msgstr "Code de classe d'erreurÂ : %s\n"

#: ../common/rhnException.py:363
#, python-format
msgid "Error Class Info: %s\n"
msgstr "Information de classe d'erreurÂ : %s\n"

#: ../common/rhnException.py:365
#, python-format
msgid "Explanation: %s"
msgstr "ExplicationÂ : %s"

#: ../common/rhnTB.py:205
#, python-format
msgid "ERROR: %s %s: %s"
msgstr ""

#: ../common/rhnTB.py:207
#, python-format
msgid "TRACEBACK: %s"
msgstr ""

#: ../satellite_tools/disk_dumper/iss.py:1294
#: ../satellite_tools/disk_dumper/iss.py:1298
#, python-format
msgid "format of %s should be at least YYYYMMDD.\n"
msgstr ""

#: ../satellite_tools/messages.py:26
#, python-format
msgid ""
"\n"
"ERROR: executing step %s. Error is:\n"
"%s\n"
msgstr ""

#: ../satellite_tools/messages.py:31
#, python-format
msgid ""
"\n"
"ERROR: there was a problem accessing the channel data from your temporary\n"
"       repository. Did you migrate all of the data from the channel ISOs\n"
"       do this directory? If so, please recheck the channels ISOs, ensure\n"
"       that you have them all, and then iteratively remount and repopulate\n"
"       the temporary repository (%s).\n"
msgstr ""

#: ../satellite_tools/messages.py:39
#, python-format
msgid ""
"\n"
"ERROR: there was a problem synchronizing the information.\n"
"       Error message: %s\n"
msgstr ""

#: ../satellite_tools/messages.py:44
#, python-format
msgid ""
"\n"
"ERROR: There was a problem communicating with the ISS Master.\n"
"       Depending on the specific error details, please review your "
"configuration,\n"
"       basic network connectivity, and/or name resolution, and try again.\n"
"       Error message: %s\n"
msgstr ""

#: ../satellite_tools/messages.py:51
#, python-format
msgid ""
"\n"
"ERROR: There was a problem communicating with the ISS Master.\n"
"       If the master satellite is older than v5.3, it does not have ISS "
"capability.\n"
"       Otherwise, depending on the specific error details, please review "
"your\n"
"       configuration, basic network connectivity, and/or name resolution, "
"and try again.\n"
"       Error message: %s\n"
msgstr ""

#: ../satellite_tools/messages.py:59
#, python-format
msgid ""
"\n"
"ERROR: a child-channel cannot be synced without its parent being synced as\n"
"       well. A parent needs to be either (a) previously synced or (b) "
"synced\n"
"       in tandem with the desired child-channel. Missing parents for this\n"
"       transaction:\n"
"       %s\n"
msgstr ""

#: ../satellite_tools/messages.py:67
#, python-format
msgid ""
"\n"
"ERROR: you are not entitled to sync a channel in this set of channels.\n"
"Please contact your SUSE Manager contact\n"
"%s"
msgstr ""

#: ../satellite_tools/messages.py:72
#, python-format
msgid "  ERROR: not enough free space (%s KB) on device."
msgstr ""

#: ../satellite_tools/messages.py:74
#, python-format
msgid "    %3d/%s Fetch successful: %s (%s bytes)"
msgstr ""

#: ../satellite_tools/messages.py:75
#, fuzzy, python-format
msgid "    Extinct package:  %s"
msgstr "Paquet attendu, pas : %s"

#: ../satellite_tools/messages.py:76
#, python-format
msgid "   Total size: %s"
msgstr ""

#: ../satellite_tools/messages.py:77
#, python-format
msgid "      Downloaded %s of %s. Estimated remaining time: %s"
msgstr ""

#: ../satellite_tools/messages.py:78
#, python-format
msgid "    Fetch unsuccessful: %s"
msgstr ""

#: ../satellite_tools/messages.py:79
#, python-format
msgid "   RPM fetch summary: %s"
msgstr ""

#: ../satellite_tools/messages.py:80
#, python-format
msgid "       success: %d"
msgstr ""

#: ../satellite_tools/messages.py:81
#, python-format
msgid "       failed:  %d"
msgstr ""

#: ../satellite_tools/messages.py:82
#, python-format
msgid "       extinct: %d"
msgstr ""

#: ../satellite_tools/messages.py:84
#, python-format
msgid "   Retrieving / parsing *relevant* package metadata: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:85
#, python-format
msgid "   Retrieving / parsing errata data: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:86
#, python-format
msgid "   Retrieving / parsing kickstart data: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:87
#, python-format
msgid "   Retrieving / parsing kickstart tree files: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:88
#, python-format
msgid "   Importing *relevant* package metadata: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:89
msgid "   * WARNING: this may be a slow process."
msgstr ""

#: ../satellite_tools/messages.py:90
#, fuzzy
msgid "Linking packages to channels"
msgstr "Canaux de base conflictuels"

#: ../satellite_tools/messages.py:91
#, python-format
msgid "   Importing *relevant* errata: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:92
msgid "   No new kickstartable tree to import"
msgstr ""

#: ../satellite_tools/messages.py:93
#, python-format
msgid "Importing kickstartable trees (%d)"
msgstr ""

#: ../satellite_tools/messages.py:94
#, python-format
msgid "Imported kickstartable trees (%d)"
msgstr ""

#: ../satellite_tools/reposync.py:111 ../satellite_tools/satsync.py:439
msgid "+++ sending log as an email +++"
msgstr ""

#: ../satellite_tools/reposync.py:114
#, python-format
msgid "%s sync. report from %s"
msgstr ""

#: ../satellite_tools/reposync.py:124 ../satellite_tools/satsync.py:449
msgid "+++ email requested, but there is nothing to send +++"
msgstr ""

#: ../satellite_tools/rhn_satellite_activate.py:198
#, python-format
msgid ""
"\"%s\" (specified in commandline)\n"
"could not be opened and read:\n"
"%s"
msgstr ""

#: ../satellite_tools/rhn_satellite_activate.py:205
#, python-format
msgid ""
"\"%s\" could not be opened\n"
"and/or written to:\n"
"%s"
msgstr ""

#: ../satellite_tools/satsync.py:258
#, python-format
msgid "No handler for step %s"
msgstr ""

#. Try one more time - this time it should be faster since
#. everything should be cached
#: ../satellite_tools/satsync.py:270
msgid "Environment changed, trying again..."
msgstr ""

#: ../satellite_tools/satsync.py:277
msgid "ERROR: Encountered IntegrityError: \n"
msgstr ""

#: ../satellite_tools/satsync.py:285
msgid "Repeated failures"
msgstr ""

#: ../satellite_tools/satsync.py:290
#, python-format
msgid ""
"    Import complete:\n"
"        Begin time: %s\n"
"        End time:   %s\n"
"        Elapsed:    %s\n"
"          "
msgstr ""

#: ../satellite_tools/satsync.py:311
msgid "hours"
msgstr ""

#: ../satellite_tools/satsync.py:311
msgid "minutes"
msgstr ""

#: ../satellite_tools/satsync.py:311
msgid "seconds"
msgstr ""

#: ../satellite_tools/satsync.py:357
msgid ""
"ERROR: The dump is missing package data, use --no-rpms to skip this step or "
"fix the content to include package data."
msgstr ""

#. the orgs() method doesn't exist; that's fine we just
#. won't sync the orgs
#: ../satellite_tools/satsync.py:404
msgid "The SUSE Manager master does not support syncing orgs data."
msgstr ""

#: ../satellite_tools/satsync.py:404
msgid "Skipping..."
msgstr ""

#: ../satellite_tools/satsync.py:442
#, python-format
msgid "SUSE Manager Inter Server sync. report from %s"
msgstr ""

#: ../satellite_tools/satsync.py:521
msgid " - file-system synchronization"
msgstr ""

#: ../satellite_tools/satsync.py:533 ../satellite_tools/satsync.py:541
msgid " - live synchronization"
msgstr ""

#: ../satellite_tools/satsync.py:534
#, python-brace-format
msgid ""
"ERROR: Live content synchronizing with RHN Classic Hosted is no longer "
"supported.\n"
"Please use the cdn-sync command instead unless you are attempting to sync "
"from another {PRODUCT_NAME} via Inter-Server-Sync (ISS), or from local "
"content on disk via Channel Dump ISOs."
msgstr ""

#: ../satellite_tools/satsync.py:542
#, python-format
msgid "   url: %s"
msgstr ""

#: ../satellite_tools/satsync.py:543
#, python-format
msgid "   debug/output level: %s"
msgstr ""

#: ../satellite_tools/satsync.py:553
msgid "ERROR: this server must be registered with SUSE Manager."
msgstr ""

#: ../satellite_tools/satsync.py:575
#, python-format
msgid "Retrieving / parsing %s data"
msgstr ""

#: ../satellite_tools/satsync.py:585 ../satellite_tools/satsync.py:600
msgid "*** SYSTEM INTERRUPT CALLED ***"
msgstr ""

#: ../satellite_tools/satsync.py:593
msgid "ERROR: fatal parser exception occurred "
msgstr ""

#: ../satellite_tools/satsync.py:594
#, python-format
msgid "(line: %s, col: %s msg: %s)"
msgstr ""

#: ../satellite_tools/satsync.py:598
#, python-format
msgid "ERROR: parser exception occurred: %s"
msgstr ""

#: ../satellite_tools/satsync.py:603
msgid "ERROR: exception (during parse) occurred: "
msgstr ""

#: ../satellite_tools/satsync.py:604
#, python-format
msgid ""
"   Encountered some errors with %s data (see logs (%s) for more information)"
msgstr ""

#: ../satellite_tools/satsync.py:606
#, python-format
msgid "   Encountered some errors with %s data:"
msgstr ""

#: ../satellite_tools/satsync.py:607
#, python-format
msgid "   ------- %s PARSE/IMPORT ERROR -------"
msgstr ""

#: ../satellite_tools/satsync.py:609
msgid "   ---------------------------------------"
msgstr ""

#: ../satellite_tools/satsync.py:612
#, python-format
msgid "%s data complete"
msgstr ""

#: ../satellite_tools/satsync.py:665
msgid "Retrieving / parsing channel data"
msgstr ""

#: ../satellite_tools/satsync.py:718
msgid "Channel data complete"
msgstr ""

#: ../satellite_tools/satsync.py:736
#, python-format
msgid "%10s import from %s"
msgstr ""

#: ../satellite_tools/satsync.py:739
#, python-format
msgid "%10s import from %s - %s"
msgstr ""

#: ../satellite_tools/satsync.py:743
#, python-format
msgid "%10s"
msgstr ""

#: ../satellite_tools/satsync.py:750
msgid "p"
msgstr ""

#: ../satellite_tools/satsync.py:752
msgid "."
msgstr ""

#: ../satellite_tools/satsync.py:758
msgid "   p = previously imported/synced channel"
msgstr ""

#: ../satellite_tools/satsync.py:759
msgid "   . = channel not yet imported/synced"
msgstr ""

#: ../satellite_tools/satsync.py:765
msgid "   e = channel no longer supported (end-of-service)"
msgstr ""

#: ../satellite_tools/satsync.py:767
msgid "   ? = channel label invalid --- typo?"
msgstr ""

#: ../satellite_tools/satsync.py:771
#, python-format
msgid "   %s:"
msgstr ""

#: ../satellite_tools/satsync.py:772
#, python-format
msgid "      %s %-40s %4s %s"
msgstr ""

#: ../satellite_tools/satsync.py:773
#, fuzzy
msgid "base-channels"
msgstr "Canaux de base conflictuels"

#: ../satellite_tools/satsync.py:786 ../satellite_tools/satsync.py:1603
msgid "NONE RELEVANT"
msgstr ""

#: ../satellite_tools/satsync.py:808
msgid "end-of-service"
msgstr ""

#: ../satellite_tools/satsync.py:809
msgid "e"
msgstr ""

#: ../satellite_tools/satsync.py:815
msgid "   typos:"
msgstr ""

#: ../satellite_tools/satsync.py:816
msgid "?"
msgstr ""

#: ../satellite_tools/satsync.py:831
#, python-format
msgid "XXX: imported channels: %s"
msgstr ""

#: ../satellite_tools/satsync.py:832
#, python-format
msgid "XXX:   cached channels: %s"
msgstr ""

#: ../satellite_tools/satsync.py:837
msgid "XXX: list channels called"
msgstr ""

#: ../satellite_tools/satsync.py:855
msgid "ERROR: these channels either do not exist or are not available:"
msgstr ""

#: ../satellite_tools/satsync.py:859
#, python-format
msgid "       (to see a list of channel labels: %s --list-channels)"
msgstr ""

#: ../satellite_tools/satsync.py:904
#, python-format
msgid "   Retrieving / parsing short package metadata: %s (%s)"
msgstr ""

#: ../satellite_tools/satsync.py:965
#, python-format
msgid "Diffing package metadata (what's missing locally?): %s"
msgstr ""

#: ../satellite_tools/satsync.py:971 ../satellite_tools/satsync.py:1254
msgid "Diffing:    "
msgstr ""

#: ../satellite_tools/satsync.py:988
msgid "ERROR: incremental dump skipped"
msgstr ""

#: ../satellite_tools/satsync.py:1079
msgid "Downloading rpm packages"
msgstr ""

#: ../satellite_tools/satsync.py:1084
#, python-format
msgid "   Fetching any missing RPMs: %s (%s)"
msgstr ""

#: ../satellite_tools/satsync.py:1085 ../satellite_tools/satsync.py:1153
msgid "NONE MISSING"
msgstr ""

#: ../satellite_tools/satsync.py:1094
msgid "Processing rpm packages complete"
msgstr ""

#: ../satellite_tools/satsync.py:1121
msgid "Downloading package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1146
msgid "Downloading srpm packages"
msgstr ""

#: ../satellite_tools/satsync.py:1152
#, python-format
msgid "   Fetching any missing SRPMs: %s (%s)"
msgstr ""

#: ../satellite_tools/satsync.py:1249
#, python-format
msgid "Diffing source package metadata (what's missing locally?): %s"
msgstr ""

#: ../satellite_tools/satsync.py:1260
msgid "Downloading source package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1338 ../satellite_tools/satsync.py:2027
#, fuzzy, python-format
msgid "Unable to save file %s: %s"
msgstr "Impossible d'accorder des droits au systÃ¨me"

#. for
#. Retried a number of times and it still failed; log the
#. file as being failed and move on
#: ../satellite_tools/satsync.py:1345
#, python-format
msgid "Failed to fetch file %s"
msgstr ""

#: ../satellite_tools/satsync.py:1350
msgid "Downloading kickstartable trees metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1365
msgid "Downloading kickstartable trees files"
msgstr ""

#: ../satellite_tools/satsync.py:1504
#, python-format
msgid "Grabbing all patches for channel %s"
msgstr ""

#: ../satellite_tools/satsync.py:1554
msgid "Downloading patch data"
msgstr ""

#: ../satellite_tools/satsync.py:1556
msgid "Forcing download of all patch data for requested channels."
msgstr ""

#: ../satellite_tools/satsync.py:1571
msgid "Downloading patch data complete"
msgstr ""

#: ../satellite_tools/satsync.py:1576 ../satellite_tools/satsync.py:1597
msgid "Downloading:"
msgstr ""

#: ../satellite_tools/satsync.py:1579
msgid " - complete"
msgstr ""

#: ../satellite_tools/satsync.py:1624
msgid "Importing source package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1627
msgid "Importing package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1635
msgid "Importing:  "
msgstr ""

#. not in the cache
#: ../satellite_tools/satsync.py:1703
msgid ""
"Package Not Found in Cache, Clear the Cache "
"to                                  Regenerate it."
msgstr ""

#: ../satellite_tools/satsync.py:1709
msgid "Importing channel patches"
msgstr ""

#: ../satellite_tools/satsync.py:1714
#, python-format
msgid "Importing %s patches for channel %s."
msgstr ""

#. Incomplete configuration
#: ../satellite_tools/satsync.py:2113
msgid "ERROR: server.mount_point not set in the configuration file"
msgstr ""

#: ../satellite_tools/satsync.py:2117
#, python-format
msgid "ERROR: server.mount_point %s do not exist"
msgstr ""

#: ../satellite_tools/satsync.py:2122
#, python-format
msgid "ERROR: path under server.mount_point (%s)  do not exist"
msgstr ""

#: ../satellite_tools/satsync.py:2199
#, python-format
msgid "Commandline: %s"
msgstr ""

#: ../satellite_tools/satsync.py:2202
#, python-format
msgid ""
"DEBUG ONLY: max. batch-size for XML/database-import processing (1..%s).\"man "
"satellite-sync\" for more information."
msgstr ""

#: ../satellite_tools/satsync.py:2205
msgid "alternative SSL CA Cert (fullpath to cert file)"
msgstr ""

#: ../satellite_tools/satsync.py:2207
msgid "process data for this channel only"
msgstr ""

#: ../satellite_tools/satsync.py:2209
msgid ""
"disk dump will be considered to be a full export; see \"man satellite-sync\" "
"for more information."
msgstr ""

#: ../satellite_tools/satsync.py:2212
msgid "existing custom channels will also be synced (unless -c is used)"
msgstr ""

#: ../satellite_tools/satsync.py:2214
#, python-format
msgid ""
"override debug level set in /etc/rhn/rhn.conf (which is currently set at %s)."
msgstr ""

#: ../satellite_tools/satsync.py:2216
#, python-format
msgid "requested version of XML dump (default: %s)"
msgstr ""

#: ../satellite_tools/satsync.py:2218
msgid "e-mail a report of what was synced/imported"
msgstr ""

#: ../satellite_tools/satsync.py:2220
msgid "forcibly process all (not a diff of) patch metadata"
msgstr ""

#: ../satellite_tools/satsync.py:2222
msgid "Do not use an http proxy under any circumstances."
msgstr ""

#: ../satellite_tools/satsync.py:2224
msgid "alternative http proxy (hostname:port)"
msgstr ""

#: ../satellite_tools/satsync.py:2226
msgid "alternative http proxy username"
msgstr ""

#: ../satellite_tools/satsync.py:2228
msgid "alternative http proxy password"
msgstr ""

#: ../satellite_tools/satsync.py:2230
msgid "parent SUSE Manager to import content from"
msgstr ""

#: ../satellite_tools/satsync.py:2232
msgid "list all available channels and exit"
msgstr ""

#: ../satellite_tools/satsync.py:2234
msgid "help on all error codes mgr-inter-sync returns"
msgstr ""

#: ../satellite_tools/satsync.py:2236
msgid "source mount point for import - disk update only"
msgstr ""

#: ../satellite_tools/satsync.py:2238
msgid "do not process patch data"
msgstr ""

#: ../satellite_tools/satsync.py:2240
msgid "do not process kickstart data (provisioning only)"
msgstr ""

#: ../satellite_tools/satsync.py:2242
msgid "do not process full package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:2244
msgid "do not download, or process any RPMs"
msgstr ""

#: ../satellite_tools/satsync.py:2246
msgid "turn off SSL (not recommended)"
msgstr ""

#: ../satellite_tools/satsync.py:2248
msgid "org to which the sync imports data. defaults to the admin account"
msgstr ""

#: ../satellite_tools/satsync.py:2250
#, fuzzy
msgid "print the configuration and exit"
msgstr "Le canal de configuration n'existe pas"

#: ../satellite_tools/satsync.py:2252
msgid "alternative server with which to connect (hostname)"
msgstr ""

#: ../satellite_tools/satsync.py:2254
msgid "synchronize to this step (man satellite-sync for more info)"
msgstr ""

#: ../satellite_tools/satsync.py:2256
msgid "write complete data to tempfile before streaming to remainder of app"
msgstr ""

#: ../satellite_tools/satsync.py:2258
msgid "DEBUG ONLY: alternative path to digital system id"
msgstr ""

#: ../satellite_tools/satsync.py:2260
msgid "alternative email address(es) for sync output (--email option)"
msgstr ""

#: ../satellite_tools/satsync.py:2262
msgid "do not remove rpms when importing from local dump"
msgstr ""

#: ../satellite_tools/satsync.py:2264
msgid ""
"the fully qualified domain name of the master Satellite. Valid with --mount-"
"point only. Required if you want to import org data and channel permissions."
msgstr ""

#: ../satellite_tools/satsync.py:2274
#, python-format
msgid "ERROR: these arguments make no sense in this context (try --help): %s"
msgstr ""

#. An SQL error is fatal... crash and burn
#: ../satellite_tools/satsync.py:2286
#, python-format
msgid "ERROR: Can't connect to the database: %s"
msgstr ""

#: ../satellite_tools/satsync.py:2287
msgid "ERROR: Check if your database is running."
msgstr ""

#: ../satellite_tools/satsync.py:2322
#, python-format
msgid "ERROR: --debug-level takes an in integer value within the range %s."
msgstr ""

#: ../satellite_tools/satsync.py:2324
msgid "  0  - little logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2325
msgid "  1  - minimal logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2326
msgid "  2  - normal level of logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2327
msgid "  3  - lots of logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2328
msgid "  4+ - excessive logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2341
msgid "ERROR: The --master option is only valid with the --mount-point option"
msgstr ""

#: ../satellite_tools/satsync.py:2351
#, fuzzy, python-format
msgid "ERROR: Unable to lookup Org Id %s"
msgstr "Impossible de rechercher le serveur"

#: ../satellite_tools/satsync.py:2360
msgid ""
"WARNING: --list-channels option overrides any --step option. --step ignored."
msgstr ""

#: ../satellite_tools/satsync.py:2375
#, python-format
msgid ""
"ERROR: '%s' is not a valid step. See 'man mgr-inter-sync' for more detail."
msgstr ""

#: ../satellite_tools/satsync.py:2407
msgid ""
"ERROR: No channels currently imported; try mgr-inter-sync --list-channels; "
"then mgr-inter-sync -c chn0 -c chn1..."
msgstr ""

#. int(None) --> TypeError
#. int('a')  --> ValueError
#: ../satellite_tools/satsync.py:2457 ../satellite_tools/satsync.py:2461
msgid "ERROR: --batch-size must have a value within the range: 1..50"
msgstr ""

#: ../satellite_tools/satsync.py:2469
#, python-format
msgid "ERROR: no such directory %s"
msgstr ""

#: ../satellite_tools/satsync.py:2474
msgid "Error Codes: Returned codes means:"
msgstr ""

#: ../satellite_tools/satsync.py:2475
msgid " -1  - Could not lock file or KeyboardInterrupt or SystemExit"
msgstr ""

#: ../satellite_tools/satsync.py:2476
msgid "  0  - User interrupted or intentional exit"
msgstr ""

#: ../satellite_tools/satsync.py:2477
msgid "  1  - attempting to run more than one instance of mgr-inter-sync."
msgstr ""

#: ../satellite_tools/satsync.py:2478
msgid "  2  - Unable to find synchronization tools."
msgstr ""

#: ../satellite_tools/satsync.py:2479
msgid "  3  - a general socket exception occurred"
msgstr ""

#: ../satellite_tools/satsync.py:2480
msgid "  4  - an SSL error occurred. Recheck your SSL settings."
msgstr ""

#: ../satellite_tools/satsync.py:2481
msgid "  5  - ISS error"
msgstr ""

#: ../satellite_tools/satsync.py:2482
msgid "  6  - unhandled exception occurred"
msgstr ""

#: ../satellite_tools/satsync.py:2483
msgid "  7  - unknown sync error"
msgstr ""

#: ../satellite_tools/satsync.py:2484
msgid "  8  - ERROR: must be root to execute"
msgstr ""

#: ../satellite_tools/satsync.py:2485
msgid "  9  - rpclib fault during synchronization init"
msgstr ""

#: ../satellite_tools/satsync.py:2486
msgid "  10 - synchronization init error"
msgstr ""

#: ../satellite_tools/satsync.py:2487
msgid "  11 - Error parsing XML stream"
msgstr ""

#: ../satellite_tools/satsync.py:2488
#, fuzzy
msgid "  12 - Channel do not exist"
msgstr "Le canal spÃ©cifiÃ© n'existe pas."

#: ../satellite_tools/satsync.py:2489
msgid "  13 - SQL error during importing package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:2490
msgid "  14 - SQL error during linking channel packages"
msgstr ""

#: ../satellite_tools/satsync.py:2491
msgid "  15 - SQL error during xml processing"
msgstr ""

#: ../satellite_tools/satsync.py:2492
msgid "  16 - server.mount_point not set in the configuration file"
msgstr ""

#: ../satellite_tools/satsync.py:2493
msgid ""
"  17 - SQL error during retrieving the channels already imported in the SUSE "
"Manager database"
msgstr ""

#: ../satellite_tools/satsync.py:2494
msgid "  18 - Wrong db connection string in rhn.conf"
msgstr ""

#: ../satellite_tools/satsync.py:2495
msgid "  19 - Bad arguments"
msgstr ""

#: ../satellite_tools/satsync.py:2496
msgid "  20 - Could not connect to db."
msgstr ""

#: ../satellite_tools/satsync.py:2497
msgid "  21 - Bad debug level"
msgstr ""

#: ../satellite_tools/satsync.py:2498
msgid "  22 - Not valid step"
msgstr ""

#: ../satellite_tools/satsync.py:2499
msgid "  24 - no such file"
msgstr ""

#: ../satellite_tools/satsync.py:2500
msgid "  25 - no such directory"
msgstr ""

#: ../satellite_tools/satsync.py:2501
msgid "  26 - mount_point does not exist"
msgstr ""

#: ../satellite_tools/satsync.py:2502
msgid "  27 - No such org"
msgstr ""

#: ../satellite_tools/satsync.py:2503
msgid "  28 - error: --master is only valid with --mount-point"
msgstr ""

#: ../satellite_tools/satsync.py:2510
#, python-format
msgid "ERROR: unknown dump version, try one of %s"
msgstr ""

#~ msgid "Your system was not found in the RHN database"
#~ msgstr "Votre systÃ¨me n'a pas Ã©tÃ© trouvÃ© dans la base de donnÃ©es RHN"

#~ msgid "ISS is disabled on this satellite."
#~ msgstr "ISS est dÃ©sactivÃ© sur ce satellite."

#, fuzzy
#~ msgid "Spacewalk Proxy service not enabled for server profile: \"%s\""
#~ msgstr "Service RHN Proxy non activÃ© pour le profil de serveur : \"%s\""

#, fuzzy
#~ msgid "Red Hat Satellite Welcome Message"
#~ msgstr "Message de bienvenue de Red Hat Network"

#, fuzzy
#~ msgid "Red Hat Satellite Privacy Statement"
#~ msgstr "DÃ©claration de respect de la vie privÃ©e de Red Hat Network"
 07070100000070000081B40000000000000000000000016290A0C10000B63F000000000000000000000000000000000000001B00000000spacewalk-backend/po/gu.po    # SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
#
# Translators:
# Ankit Patel <ankit@redhat.com>, 2004, 2005, 2006, 2007.
msgid ""
msgstr ""
"Project-Id-Version: Spacewalk\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-10-16 13:34+0200\n"
"PO-Revision-Date: 2011-03-04 16:08+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Gujarati <trans-gu@lists.fedoraproject.org>\n"
"Language: gu\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"

#: ../server/apacheAuth.py:66
#, python-format
msgid "incomplete proxy authentication token: %s"
msgstr ""

#: ../server/apacheAuth.py:84
#, python-format
msgid "Sent proxy signature %s does not match ours %s."
msgstr ""

#: ../server/apacheAuth.py:119
msgid "declined proxy authentication"
msgstr ""

#: ../server/apacheRequest.py:59
#, python-format
msgid "Invalid request received (%s)."
msgstr ""

#: ../server/apacheRequest.py:120
#, python-format
msgid ""
"IMPORTANT MESSAGE FOLLOWS:\n"
"%s"
msgstr ""

#: ../server/apacheRequest.py:149
#, python-format
msgid ""
"While running '%s': caught\n"
"%s : %s\n"
msgstr ""

#: ../server/apacheRequest.py:606
#, python-format
msgid "Invalid URI %s"
msgstr ""

#: ../server/configFilesHandler.py:129 ../server/handlers/app/packages.py:192
#: ../server/handlers/xmlrpc/registration.py:215
#: ../server/handlers/xmlrpc/registration.py:1168
#: ../server/handlers/xmlrpc/registration.py:1307
#, python-format
msgid ""
"\n"
"                   %s Account has been deactivated on this server.\n"
"                   Please contact your Org administrator for more help."
msgstr ""

#: ../server/handlers/applet/applet.py:78
#, python-brace-format
msgid "Your system was not found in the {PRODUCT_NAME} database"
msgstr ""

#: ../server/handlers/sat/auth.py:45
msgid "ISS is disabled on this server."
msgstr ""

#: ../server/handlers/sat/auth.py:50
#, python-format
msgid "Server \"%s\" is not enabled for ISS."
msgstr ""

#: ../server/handlers/xmlrpc/errata.py:64
#, python-format
msgid "Expected a package name, not: %s"
msgstr ""

#: ../server/handlers/xmlrpc/errata.py:115
#, python-format
msgid "Expected a package, not: %s"
msgstr ""

#: ../server/handlers/xmlrpc/proxy.py:65
#, python-format
msgid "SUSE Manager Proxy service not enabled for server profile: \"%s\""
msgstr ""

#: ../server/handlers/xmlrpc/proxy.py:85
msgid "Invalid session key"
msgstr ""

#: ../server/handlers/xmlrpc/proxy.py:93
msgid "This server ID no longer exists"
msgstr ""

#: ../server/handlers/xmlrpc/queue.py:433
#, python-format
msgid "Invalid action value type %s (%s)"
msgstr ""

#: ../server/handlers/xmlrpc/queue.py:464
#, python-format
msgid "Action %s does not belong to server %s"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:194
msgid "Required data missing"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:198
msgid "Required members missing"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:207
msgid "Attempt to register a system to an invalid username"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:839
msgid "Invalid system release version requested"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1063
msgid ""
"Unable to find a valid network interface, both ipaddr and ip6addr not found."
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1115
#, python-brace-format
msgid "{PRODUCT_NAME} Welcome Message"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1125
msgid "Privacy Statement"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1146
msgid "Expected a dictionary as a product argument"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1374
#, python-format
msgid "Invalid value '%s' for %s (%s)"
msgstr ""

#: ../server/handlers/xmlrpc/scap.py:104
msgid "Invalid system_id/action_id pair."
msgstr ""

#: ../server/handlers/xmlrpc/up2date.py:233
#, python-format
msgid "Invalid value %s (%s)"
msgstr ""

#: ../server/importlib/userAuth.py:98
msgid "You are not authorized to manage packages in the null org"
msgstr ""

#: ../server/importlib/userAuth.py:103
#, python-format
msgid "You are not allowed to manage packages in the %s org"
msgstr ""

#: ../server/importlib/userAuth.py:121
msgid "You are not allowed to perform administrative tasks"
msgstr ""

#: ../server/importlib/userAuth.py:144
#, python-format
msgid ""
"You are not allowed to manage channel %s, or that channel does not exist"
msgstr ""

#: ../server/importlib/userAuth.py:204
#, python-format
msgid ""
"\n"
"               %s Account has been deactivated on this server.\n"
"               Please contact your Org administrator for more help."
msgstr ""

#: ../server/rhnChannel.py:1992
#, python-format
msgid ""
"Your account does not have access to any channels matching "
"(release='%(release)s', arch='%(arch)s')%(www_activation)s"
msgstr ""

#: ../server/rhnChannel.py:2002
msgid ""
"\n"
"If you have a registration number, please register with it first at http://"
"www.redhat.com/apps/activate/ and then try again.\n"
"\n"
msgstr ""

#: ../server/rhnChannel.py:2012
#, python-format
msgid "Insufficient subscription permissions for release (%s, %s"
msgstr ""

#. Various messages that can be reused
#.
#. bretm 02/07/2007 -- when we have better old-client documentation, probably
#. will be safe to get rid of all this crap
#: ../server/rhnChannel.py:2276 ../server/rhnChannel.py:2287
#: ../server/rhnChannel.py:2302
msgid "System Registered but Inactive"
msgstr ""

#: ../server/rhnChannel.py:2277
#, python-format
msgid ""
"\n"
"Invalid Architecture and OS release combination (%s, %s).\n"
"Your system has been registered, but will not receive updates\n"
"because it is not subscribed to a channel. If you have not yet\n"
"activated your product for service, please visit our website at:\n"
"\n"
"     http://www.redhat.com/apps/activate/\n"
"\n"
"...to activate your product."
msgstr ""

#: ../server/rhnChannel.py:2288
#, python-format
msgid ""
"\n"
"Invalid Architecture and OS release combination (%s, %s).\n"
"Your system has been registered, but will not receive updates\n"
"because it could not be subscribed to a base channel.\n"
"Please contact your organization administrator for assistance.\n"
msgstr ""

#: ../server/rhnChannel.py:2295
#, python-format
msgid ""
"\n"
"  This system has been successfully registered, but is not yet entitled\n"
"  to service.  To entitle this system to service, login to the web site at:\n"
"\n"
"  %(entitlement_url)s\n"
msgstr ""

#: ../server/rhnChannel.py:2303
#, python-format
msgid ""
"\n"
"  This system has been successfully registered, but no service entitlements\n"
"  were available.  To entitle this system to service, login to the web site "
"at:\n"
"\n"
"  %(entitlement_url)s\n"
msgstr ""

#: ../server/rhnHandler.py:62
msgid "Please run rhn_register as root on this client"
msgstr ""

#: ../server/rhnHandler.py:75
#, python-format
msgid "Service not enabled for system profile: \"%s\""
msgstr ""

#: ../server/rhnPackage.py:49 ../server/rhnPackage.py:87
#: ../server/rhnPackage.py:107 ../server/rhnPackage.py:158
#, python-format
msgid "Invalid RPM package %s requested"
msgstr ""

#: ../server/rhnPackage.py:112
msgid "Package not found"
msgstr ""

#: ../server/rhnServer/server_class.py:97
#, python-format
msgid "Architecture `%s' is not supported"
msgstr ""

#: ../server/rhnServer/server_token.py:78
#, python-format
msgid "Token `%s' has more than one base channel assigned"
msgstr ""

#: ../server/rhnServer/server_token.py:80
msgid "Conflicting base channels"
msgstr ""

#: ../server/rhnServer/server_token.py:190
#, python-format
msgid "Failed to add server to group %s"
msgstr ""

#: ../server/rhnServer/server_token.py:503
#, python-format
msgid "Maximum usage count of %s reached"
msgstr ""

#: ../server/rhnServer/server_token.py:744
msgid ""
"Stacking of re-registration tokens with different base entitlements is not "
"supported"
msgstr ""

#: ../server/rhnServer/server_token.py:811
#, python-format
msgid "Could not find token '%s'"
msgstr ""

#. Cannot use activation keys from different orgs
#: ../server/rhnServer/server_token.py:843
msgid "Tokens from mismatching orgs"
msgstr ""

#. Two tokens with different kickstart sessions
#: ../server/rhnServer/server_token.py:853
msgid "Kickstart session mismatch"
msgstr ""

#: ../server/rhnServer/server_token.py:877
msgid "Stacking of re-registration tokens is not supported"
msgstr ""

#: ../server/rhnUser.py:289 ../server/rhnUser.py:292
msgid "Invalid username/password combination"
msgstr ""

#. nope, not reserved either
#: ../server/rhnUser.py:467
#, python-format
msgid "Username `%s' has not been reserved"
msgstr ""

#. New accounts have to specify an e-mail address
#: ../server/rhnUser.py:473
msgid "E-mail address not specified"
msgstr ""

#: ../server/rhnUser.py:509
#, python-format
msgid "username should be at least %d characters"
msgstr ""

#: ../server/rhnUser.py:512
#, python-format
msgid "username should be less than %d characters"
msgstr ""

#: ../server/rhnUser.py:523
#, python-format
msgid "username = `%s', invalid character `%s'"
msgstr ""

#: ../server/rhnUser.py:542
#, python-format
msgid "Please limit your e-mail address to %s chars"
msgstr ""

#: ../server/rhnUser.py:623
#, python-format
msgid "password must be at least %d characters"
msgstr ""

#: ../server/rhnUser.py:626
#, python-format
msgid "Password must be shorter than %d characters"
msgstr ""

#: ../server/rhnUser.py:644
#, python-format
msgid "password contains character `%s'"
msgstr ""

#: ../server/rhnUser.py:651
#, python-format
msgid "username should be at least %d characters long"
msgstr ""

#: ../server/rhnUser.py:662
#, python-format
msgid "Cannot register usernames ending with %s"
msgstr ""

#. 0-999: Red Hat client/client-like interaction errors:
#: ../common/rhnException.py:53
msgid "This does not appear to be a valid username."
msgstr ""

#: ../common/rhnException.py:54
msgid "Invalid username and password combination."
msgstr ""

#: ../common/rhnException.py:55
msgid "This login is already taken, or the password is incorrect."
msgstr ""

#: ../common/rhnException.py:56
msgid "Permission denied."
msgstr ""

#: ../common/rhnException.py:57
msgid "Object not found."
msgstr ""

#: ../common/rhnException.py:58
msgid "Invalid System Digital ID."
msgstr ""

#: ../common/rhnException.py:59
msgid "Invalid System Credentials."
msgstr ""

#: ../common/rhnException.py:60
msgid "Could not retrieve user data from database."
msgstr ""

#: ../common/rhnException.py:61
msgid "Valid username required."
msgstr ""

#: ../common/rhnException.py:62
msgid "Valid password required."
msgstr ""

#: ../common/rhnException.py:63
msgid "Minimum username length violation."
msgstr ""

#: ../common/rhnException.py:64
msgid "Minimum password length violation."
msgstr ""

#: ../common/rhnException.py:65
msgid "The username contains invalid characters."
msgstr ""

#: ../common/rhnException.py:66
msgid "File not found."
msgstr ""

#: ../common/rhnException.py:67
msgid "Architecture and OS version combination is not supported."
msgstr ""

#: ../common/rhnException.py:68
msgid "Could not retrieve system data from database."
msgstr ""

#: ../common/rhnException.py:69
msgid "Invalid arguments passed to function."
msgstr ""

#: ../common/rhnException.py:70
msgid "Unable to retrieve requested entry."
msgstr ""

#: ../common/rhnException.py:71
msgid "Could not update database entry."
msgstr ""

#: ../common/rhnException.py:72
msgid "Unsupported server architecture."
msgstr ""

#: ../common/rhnException.py:73
#, python-format
msgid ""
"\n"
"     The anonymous server functionality is no longer available.\n"
"\n"
"     Please re-register this system by running mgr_register as root.\n"
"     Please visit https://%(hostname)s/rhn/systems/SystemEntitlements.do\n"
"     or login at https://%(hostname)s, and from the \"Overview\" tab,\n"
"     select \"Subscription Management\" to enable the service for this "
"system.\n"
"     "
msgstr ""

#: ../common/rhnException.py:81
msgid "Record not available in the database."
msgstr ""

#: ../common/rhnException.py:82
msgid "Invalid value for entry."
msgstr ""

#: ../common/rhnException.py:83
#, python-format
msgid ""
"\n"
"     This system does not have a valid entitlement for SUSE Manager.\n"
"     Please visit https://%(hostname)s/rhn/systems/SystemEntitlements.do\n"
"     or login at https://%(hostname)s, and from the \"Overview\" tab,\n"
"     select \"Subscription Management\" to enable the service for this "
"system.\n"
"     "
msgstr ""

#: ../common/rhnException.py:89
msgid "Channel error"
msgstr ""

#: ../common/rhnException.py:90
msgid "Client session token is invalid."
msgstr ""

#: ../common/rhnException.py:91
msgid "Client session token has expired."
msgstr ""

#: ../common/rhnException.py:92
msgid "You are not authorized to retrieve the requested object."
msgstr ""

#: ../common/rhnException.py:93
msgid "Invalid action"
msgstr ""

#: ../common/rhnException.py:94
msgid "You are not allowed to perform administrative tasks on this system."
msgstr ""

#: ../common/rhnException.py:96
msgid "The system is already subscribed to the specified channel."
msgstr ""

#: ../common/rhnException.py:97
msgid "The system is not currently subscribed to the specified channel."
msgstr ""

#: ../common/rhnException.py:98
msgid "The specified channel does not exist."
msgstr ""

#: ../common/rhnException.py:99
msgid "Invalid channel version."
msgstr ""

#: ../common/rhnException.py:100
msgid ""
"\n"
"     User group membership limits exceeded.\n"
"\n"
"     The current settings for your account do not allow you to add another\n"
"     user account. Please check with the organization administrator for "
"your\n"
"     account if the maximum number of users allowed to subscribe to server "
"needs\n"
"     to be changed.\n"
"     "
msgstr ""

#: ../common/rhnException.py:108
msgid ""
"\n"
"     System group membership limits exceeded.\n"
"\n"
"     The current settings for your account do not allow you to add another\n"
"     system profile. Please check with the organization administrator for "
"your\n"
"     account for modifying the maximum number of system profiles that can "
"be\n"
"     subscribed to your account.\n"
"     "
msgstr ""

#: ../common/rhnException.py:116
msgid ""
"\n"
"     Invalid architecture.\n"
"\n"
"     The architecture of the package is not supported by\n"
"     "
msgstr ""

#: ../common/rhnException.py:121
msgid "Invalid RPM header"
msgstr ""

#: ../common/rhnException.py:122
msgid ""
"\n"
"    This system is already registered as a Salt Minion. If you want to "
"register it as a traditional client\n"
"    please delete it first via the web UI or API and then register it using "
"the traditional tools.\n"
"    "
msgstr ""

#. For the uploading tools
#: ../common/rhnException.py:127
msgid "Invalid information uploaded to the server"
msgstr ""

#: ../common/rhnException.py:128
msgid "Error uploading network interfaces configuration."
msgstr ""

#: ../common/rhnException.py:129
msgid ""
"\n"
"     Package Upload Failed due to uniqueness constraint violation.\n"
"     Make sure the package does not have any duplicate dependencies or\n"
"     does not already exists on the server\n"
"     "
msgstr ""

#: ../common/rhnException.py:134
msgid ""
"\n"
"     The --force rhnpush option is disabled on this server.\n"
"     Please contact your SUSE Manager administrator for more help.\n"
"     "
msgstr ""

#. 60-70: token errors
#: ../common/rhnException.py:140
msgid ""
"\n"
"     The activation token specified could not be found on the server.\n"
"     Please retry with a valid key.\n"
"     "
msgstr ""

#: ../common/rhnException.py:144
msgid "Too many systems registered using this registration token"
msgstr ""

#: ../common/rhnException.py:145
msgid "Token contains invalid, obsoleted or insufficient settings"
msgstr ""

#: ../common/rhnException.py:146
msgid "Conflicting activation tokens"
msgstr ""

#. 70-80: channel subscription errors
#: ../common/rhnException.py:149
msgid ""
"\n"
"     No matching base channel found for your system.\n"
"     "
msgstr ""

#: ../common/rhnException.py:152
msgid ""
"\n"
"     You do not have subscription permission to the designated channel.\n"
"     Please refer to your organization's channel or organization\n"
"     administrators for further details.\n"
"     "
msgstr ""

#: ../common/rhnException.py:157
msgid "You can not unsubscribe from base channel."
msgstr ""

#: ../common/rhnException.py:158
msgid "SUSE Manager or Proxy channel can not be subscribed."
msgstr ""

#. 80-90: server group errors
#: ../common/rhnException.py:161
msgid "There was an error while trying to join the system to its groups"
msgstr ""

#. 90-100: entitlement errors
#: ../common/rhnException.py:164
msgid "Unable to entitle system"
msgstr ""

#. 100-109: e-mail and uuid related faults
#: ../common/rhnException.py:167
msgid "Maximum e-mail length violation."
msgstr ""

#: ../common/rhnException.py:168
msgid "This system has been previously registered."
msgstr ""

#: ../common/rhnException.py:169
msgid "Invalid username"
msgstr ""

#. 140-159 applet errors
#: ../common/rhnException.py:172
msgid "Unable to look up server"
msgstr ""

#. 160-179: OSAD errors
#: ../common/rhnException.py:175
msgid "Required argument is missing"
msgstr ""

#. 600-699: RHEL5+ EN errors
#: ../common/rhnException.py:178
msgid "No entitlement information tied to hardware"
msgstr ""

#: ../common/rhnException.py:179
msgid "Installation number is not entitling"
msgstr ""

#. 700-799: Additional user input verification errors.
#: ../common/rhnException.py:182
msgid "Maximum username length violation"
msgstr ""

#: ../common/rhnException.py:183
msgid "Maximum password length violation"
msgstr ""

#: ../common/rhnException.py:184
msgid "This user has read only API access. Action denied."
msgstr ""

#: ../common/rhnException.py:186
msgid "System Name cannot be less than 1 character"
msgstr ""

#. 1000-1999: Proxy specific errors:
#. issued by a Proxy to the client
#: ../common/rhnException.py:190
msgid "SUSE Manager Proxy error."
msgstr ""

#: ../common/rhnException.py:191
msgid "SUSE Manager Proxy unable to login."
msgstr ""

#. issued by a SUSE Manager Server/Satellite to the proxy
#: ../common/rhnException.py:193
msgid ""
"\n"
"     SUSE Manager Proxy system ID does not match a Spacewalk Proxy Server\n"
"     in the database.\n"
"     "
msgstr ""

#: ../common/rhnException.py:197
msgid "SUSE Manager Proxy session token is invalid."
msgstr ""

#: ../common/rhnException.py:198
msgid "SUSE Manager Proxy session token has expired."
msgstr ""

#. 2000-2999: Red Hat Satellite specific errors:
#: ../common/rhnException.py:202
msgid ""
"\n"
"      user creation is not allowed via mgr_register;\n"
"     please contact your sysadmin to have your account created.\n"
"     "
msgstr ""

#: ../common/rhnException.py:206
msgid ""
"\n"
"     This SUSE Manager server is not allowed to use Inter Server Sync on "
"this server\n"
"     "
msgstr ""

#: ../common/rhnException.py:209
msgid ""
"\n"
"     Inter Server Sync is disabled on this SUSE Manager Server.\n"
"     "
msgstr ""

#. 3000-3999: XML dumper errors:
#: ../common/rhnException.py:214
msgid "Invalid datatype passed"
msgstr ""

#: ../common/rhnException.py:215
msgid "Unable to retrieve channel"
msgstr ""

#: ../common/rhnException.py:216
msgid "Unable to retrieve package"
msgstr ""

#: ../common/rhnException.py:217
msgid "Unable to retrieve erratum"
msgstr ""

#: ../common/rhnException.py:218
msgid "File is missing"
msgstr ""

#: ../common/rhnException.py:219
msgid "Function retrieval error"
msgstr ""

#: ../common/rhnException.py:220
msgid "Function execution error"
msgstr ""

#: ../common/rhnException.py:221
msgid "Missing version string"
msgstr ""

#: ../common/rhnException.py:222
msgid "Invalid version string"
msgstr ""

#: ../common/rhnException.py:223
msgid "Mismatching versions"
msgstr ""

#: ../common/rhnException.py:224
msgid "Invalid channel version"
msgstr ""

#: ../common/rhnException.py:225
msgid "No comps file for channel"
msgstr ""

#: ../common/rhnException.py:226
msgid "Unable to retrieve comps file"
msgstr ""

#. 4000 - 4999: config management errors
#: ../common/rhnException.py:229
msgid "Configuration action missing"
msgstr ""

#: ../common/rhnException.py:230
msgid "File too large"
msgstr ""

#: ../common/rhnException.py:231
msgid "File contains binary data"
msgstr ""

#: ../common/rhnException.py:232
msgid "Configuration channel is not empty"
msgstr ""

#: ../common/rhnException.py:233
msgid "Permission error"
msgstr ""

#: ../common/rhnException.py:234
msgid "Content missing for configuration file"
msgstr ""

#: ../common/rhnException.py:235
msgid "Template delimiters not specified"
msgstr ""

#: ../common/rhnException.py:236
msgid "Configuration channel does not exist"
msgstr ""

#: ../common/rhnException.py:237
msgid "Configuration channel already exists"
msgstr ""

#: ../common/rhnException.py:238
msgid "File missing from configuration channel"
msgstr ""

#: ../common/rhnException.py:239
msgid "Different revision of this file is uploaded"
msgstr ""

#: ../common/rhnException.py:240
msgid "File already uploaded to configuration channel"
msgstr ""

#: ../common/rhnException.py:241
msgid "File size exceeds remaining quota space"
msgstr ""

#: ../common/rhnException.py:242
msgid "Full path of file must be specified"
msgstr ""

#: ../common/rhnException.py:243
msgid "Invalid revision number"
msgstr ""

#: ../common/rhnException.py:244
msgid "Cannot compare files of different file type"
msgstr ""

#. 5000 - 5999: client content uploading errors
#. 5000 - 5099: crash reporting errors
#: ../common/rhnException.py:248
msgid "Crash information is invalid or incomplete"
msgstr ""

#: ../common/rhnException.py:249
msgid "Crash file information is invalid or incomplete"
msgstr ""

#: ../common/rhnException.py:250
msgid "Error composing crash directory path"
msgstr ""

#: ../common/rhnException.py:251
msgid "Error composing crash file path"
msgstr ""

#: ../common/rhnException.py:252 ../common/rhnException.py:259
msgid "Invalid content encoding"
msgstr ""

#: ../common/rhnException.py:253
msgid "Invalid crash name"
msgstr ""

#: ../common/rhnException.py:254
msgid "Crash reporting is disabled for this organization"
msgstr ""

#. 5100 - 5199: scap results reporting error
#: ../common/rhnException.py:256
msgid "SCAP results file transfer is invalid or incomplete"
msgstr ""

#: ../common/rhnException.py:257
msgid "Error composing directory path for detailed SCAP results"
msgstr ""

#: ../common/rhnException.py:258
msgid "Error composing file path for detailed SCAP results"
msgstr ""

#: ../common/rhnException.py:306
msgid ""
"\n"
"     An error has occurred while processing your request. If this problem\n"
"     persists please enter a bug report at scc.suse.com.\n"
"     If you choose to submit the bug report, please be sure to include\n"
"     details of what you were trying to do when this error occurred and\n"
"     details on how to reproduce this problem.\n"
msgstr ""

#: ../common/rhnException.py:358
#, python-format
msgid ""
"Error Message:\n"
"    %s\n"
msgstr ""

#: ../common/rhnException.py:360
#, python-format
msgid "Error Class Code: %s\n"
msgstr ""

#: ../common/rhnException.py:363
#, python-format
msgid "Error Class Info: %s\n"
msgstr ""

#: ../common/rhnException.py:365
#, python-format
msgid "Explanation: %s"
msgstr ""

#: ../common/rhnTB.py:205
#, python-format
msgid "ERROR: %s %s: %s"
msgstr ""

#: ../common/rhnTB.py:207
#, python-format
msgid "TRACEBACK: %s"
msgstr ""

#: ../satellite_tools/disk_dumper/iss.py:1294
#: ../satellite_tools/disk_dumper/iss.py:1298
#, python-format
msgid "format of %s should be at least YYYYMMDD.\n"
msgstr ""

#: ../satellite_tools/messages.py:26
#, python-format
msgid ""
"\n"
"ERROR: executing step %s. Error is:\n"
"%s\n"
msgstr ""

#: ../satellite_tools/messages.py:31
#, python-format
msgid ""
"\n"
"ERROR: there was a problem accessing the channel data from your temporary\n"
"       repository. Did you migrate all of the data from the channel ISOs\n"
"       do this directory? If so, please recheck the channels ISOs, ensure\n"
"       that you have them all, and then iteratively remount and repopulate\n"
"       the temporary repository (%s).\n"
msgstr ""

#: ../satellite_tools/messages.py:39
#, python-format
msgid ""
"\n"
"ERROR: there was a problem synchronizing the information.\n"
"       Error message: %s\n"
msgstr ""

#: ../satellite_tools/messages.py:44
#, python-format
msgid ""
"\n"
"ERROR: There was a problem communicating with the ISS Master.\n"
"       Depending on the specific error details, please review your "
"configuration,\n"
"       basic network connectivity, and/or name resolution, and try again.\n"
"       Error message: %s\n"
msgstr ""

#: ../satellite_tools/messages.py:51
#, python-format
msgid ""
"\n"
"ERROR: There was a problem communicating with the ISS Master.\n"
"       If the master satellite is older than v5.3, it does not have ISS "
"capability.\n"
"       Otherwise, depending on the specific error details, please review "
"your\n"
"       configuration, basic network connectivity, and/or name resolution, "
"and try again.\n"
"       Error message: %s\n"
msgstr ""

#: ../satellite_tools/messages.py:59
#, python-format
msgid ""
"\n"
"ERROR: a child-channel cannot be synced without its parent being synced as\n"
"       well. A parent needs to be either (a) previously synced or (b) "
"synced\n"
"       in tandem with the desired child-channel. Missing parents for this\n"
"       transaction:\n"
"       %s\n"
msgstr ""

#: ../satellite_tools/messages.py:67
#, python-format
msgid ""
"\n"
"ERROR: you are not entitled to sync a channel in this set of channels.\n"
"Please contact your SUSE Manager contact\n"
"%s"
msgstr ""

#: ../satellite_tools/messages.py:72
#, python-format
msgid "  ERROR: not enough free space (%s KB) on device."
msgstr ""

#: ../satellite_tools/messages.py:74
#, python-format
msgid "    %3d/%s Fetch successful: %s (%s bytes)"
msgstr ""

#: ../satellite_tools/messages.py:75
#, python-format
msgid "    Extinct package:  %s"
msgstr ""

#: ../satellite_tools/messages.py:76
#, python-format
msgid "   Total size: %s"
msgstr ""

#: ../satellite_tools/messages.py:77
#, python-format
msgid "      Downloaded %s of %s. Estimated remaining time: %s"
msgstr ""

#: ../satellite_tools/messages.py:78
#, python-format
msgid "    Fetch unsuccessful: %s"
msgstr ""

#: ../satellite_tools/messages.py:79
#, python-format
msgid "   RPM fetch summary: %s"
msgstr ""

#: ../satellite_tools/messages.py:80
#, python-format
msgid "       success: %d"
msgstr ""

#: ../satellite_tools/messages.py:81
#, python-format
msgid "       failed:  %d"
msgstr ""

#: ../satellite_tools/messages.py:82
#, python-format
msgid "       extinct: %d"
msgstr ""

#: ../satellite_tools/messages.py:84
#, python-format
msgid "   Retrieving / parsing *relevant* package metadata: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:85
#, python-format
msgid "   Retrieving / parsing errata data: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:86
#, python-format
msgid "   Retrieving / parsing kickstart data: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:87
#, python-format
msgid "   Retrieving / parsing kickstart tree files: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:88
#, python-format
msgid "   Importing *relevant* package metadata: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:89
msgid "   * WARNING: this may be a slow process."
msgstr ""

#: ../satellite_tools/messages.py:90
msgid "Linking packages to channels"
msgstr ""

#: ../satellite_tools/messages.py:91
#, python-format
msgid "   Importing *relevant* errata: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:92
msgid "   No new kickstartable tree to import"
msgstr ""

#: ../satellite_tools/messages.py:93
#, python-format
msgid "Importing kickstartable trees (%d)"
msgstr ""

#: ../satellite_tools/messages.py:94
#, python-format
msgid "Imported kickstartable trees (%d)"
msgstr ""

#: ../satellite_tools/reposync.py:111 ../satellite_tools/satsync.py:439
msgid "+++ sending log as an email +++"
msgstr ""

#: ../satellite_tools/reposync.py:114
#, python-format
msgid "%s sync. report from %s"
msgstr ""

#: ../satellite_tools/reposync.py:124 ../satellite_tools/satsync.py:449
msgid "+++ email requested, but there is nothing to send +++"
msgstr ""

#: ../satellite_tools/rhn_satellite_activate.py:198
#, python-format
msgid ""
"\"%s\" (specified in commandline)\n"
"could not be opened and read:\n"
"%s"
msgstr ""

#: ../satellite_tools/rhn_satellite_activate.py:205
#, python-format
msgid ""
"\"%s\" could not be opened\n"
"and/or written to:\n"
"%s"
msgstr ""

#: ../satellite_tools/satsync.py:258
#, python-format
msgid "No handler for step %s"
msgstr ""

#. Try one more time - this time it should be faster since
#. everything should be cached
#: ../satellite_tools/satsync.py:270
msgid "Environment changed, trying again..."
msgstr ""

#: ../satellite_tools/satsync.py:277
msgid "ERROR: Encountered IntegrityError: \n"
msgstr ""

#: ../satellite_tools/satsync.py:285
msgid "Repeated failures"
msgstr ""

#: ../satellite_tools/satsync.py:290
#, python-format
msgid ""
"    Import complete:\n"
"        Begin time: %s\n"
"        End time:   %s\n"
"        Elapsed:    %s\n"
"          "
msgstr ""

#: ../satellite_tools/satsync.py:311
msgid "hours"
msgstr ""

#: ../satellite_tools/satsync.py:311
msgid "minutes"
msgstr ""

#: ../satellite_tools/satsync.py:311
msgid "seconds"
msgstr ""

#: ../satellite_tools/satsync.py:357
msgid ""
"ERROR: The dump is missing package data, use --no-rpms to skip this step or "
"fix the content to include package data."
msgstr ""

#. the orgs() method doesn't exist; that's fine we just
#. won't sync the orgs
#: ../satellite_tools/satsync.py:404
msgid "The SUSE Manager master does not support syncing orgs data."
msgstr ""

#: ../satellite_tools/satsync.py:404
msgid "Skipping..."
msgstr ""

#: ../satellite_tools/satsync.py:442
#, python-format
msgid "SUSE Manager Inter Server sync. report from %s"
msgstr ""

#: ../satellite_tools/satsync.py:521
msgid " - file-system synchronization"
msgstr ""

#: ../satellite_tools/satsync.py:533 ../satellite_tools/satsync.py:541
msgid " - live synchronization"
msgstr ""

#: ../satellite_tools/satsync.py:534
#, python-brace-format
msgid ""
"ERROR: Live content synchronizing with RHN Classic Hosted is no longer "
"supported.\n"
"Please use the cdn-sync command instead unless you are attempting to sync "
"from another {PRODUCT_NAME} via Inter-Server-Sync (ISS), or from local "
"content on disk via Channel Dump ISOs."
msgstr ""

#: ../satellite_tools/satsync.py:542
#, python-format
msgid "   url: %s"
msgstr ""

#: ../satellite_tools/satsync.py:543
#, python-format
msgid "   debug/output level: %s"
msgstr ""

#: ../satellite_tools/satsync.py:553
msgid "ERROR: this server must be registered with SUSE Manager."
msgstr ""

#: ../satellite_tools/satsync.py:575
#, python-format
msgid "Retrieving / parsing %s data"
msgstr ""

#: ../satellite_tools/satsync.py:585 ../satellite_tools/satsync.py:600
msgid "*** SYSTEM INTERRUPT CALLED ***"
msgstr ""

#: ../satellite_tools/satsync.py:593
msgid "ERROR: fatal parser exception occurred "
msgstr ""

#: ../satellite_tools/satsync.py:594
#, python-format
msgid "(line: %s, col: %s msg: %s)"
msgstr ""

#: ../satellite_tools/satsync.py:598
#, python-format
msgid "ERROR: parser exception occurred: %s"
msgstr ""

#: ../satellite_tools/satsync.py:603
msgid "ERROR: exception (during parse) occurred: "
msgstr ""

#: ../satellite_tools/satsync.py:604
#, python-format
msgid ""
"   Encountered some errors with %s data (see logs (%s) for more information)"
msgstr ""

#: ../satellite_tools/satsync.py:606
#, python-format
msgid "   Encountered some errors with %s data:"
msgstr ""

#: ../satellite_tools/satsync.py:607
#, python-format
msgid "   ------- %s PARSE/IMPORT ERROR -------"
msgstr ""

#: ../satellite_tools/satsync.py:609
msgid "   ---------------------------------------"
msgstr ""

#: ../satellite_tools/satsync.py:612
#, python-format
msgid "%s data complete"
msgstr ""

#: ../satellite_tools/satsync.py:665
msgid "Retrieving / parsing channel data"
msgstr ""

#: ../satellite_tools/satsync.py:718
msgid "Channel data complete"
msgstr ""

#: ../satellite_tools/satsync.py:736
#, python-format
msgid "%10s import from %s"
msgstr ""

#: ../satellite_tools/satsync.py:739
#, python-format
msgid "%10s import from %s - %s"
msgstr ""

#: ../satellite_tools/satsync.py:743
#, python-format
msgid "%10s"
msgstr ""

#: ../satellite_tools/satsync.py:750
msgid "p"
msgstr ""

#: ../satellite_tools/satsync.py:752
msgid "."
msgstr ""

#: ../satellite_tools/satsync.py:758
msgid "   p = previously imported/synced channel"
msgstr ""

#: ../satellite_tools/satsync.py:759
msgid "   . = channel not yet imported/synced"
msgstr ""

#: ../satellite_tools/satsync.py:765
msgid "   e = channel no longer supported (end-of-service)"
msgstr ""

#: ../satellite_tools/satsync.py:767
msgid "   ? = channel label invalid --- typo?"
msgstr ""

#: ../satellite_tools/satsync.py:771
#, python-format
msgid "   %s:"
msgstr ""

#: ../satellite_tools/satsync.py:772
#, python-format
msgid "      %s %-40s %4s %s"
msgstr ""

#: ../satellite_tools/satsync.py:773
msgid "base-channels"
msgstr ""

#: ../satellite_tools/satsync.py:786 ../satellite_tools/satsync.py:1603
msgid "NONE RELEVANT"
msgstr ""

#: ../satellite_tools/satsync.py:808
msgid "end-of-service"
msgstr ""

#: ../satellite_tools/satsync.py:809
msgid "e"
msgstr ""

#: ../satellite_tools/satsync.py:815
msgid "   typos:"
msgstr ""

#: ../satellite_tools/satsync.py:816
msgid "?"
msgstr ""

#: ../satellite_tools/satsync.py:831
#, python-format
msgid "XXX: imported channels: %s"
msgstr ""

#: ../satellite_tools/satsync.py:832
#, python-format
msgid "XXX:   cached channels: %s"
msgstr ""

#: ../satellite_tools/satsync.py:837
msgid "XXX: list channels called"
msgstr ""

#: ../satellite_tools/satsync.py:855
msgid "ERROR: these channels either do not exist or are not available:"
msgstr ""

#: ../satellite_tools/satsync.py:859
#, python-format
msgid "       (to see a list of channel labels: %s --list-channels)"
msgstr ""

#: ../satellite_tools/satsync.py:904
#, python-format
msgid "   Retrieving / parsing short package metadata: %s (%s)"
msgstr ""

#: ../satellite_tools/satsync.py:965
#, python-format
msgid "Diffing package metadata (what's missing locally?): %s"
msgstr ""

#: ../satellite_tools/satsync.py:971 ../satellite_tools/satsync.py:1254
msgid "Diffing:    "
msgstr ""

#: ../satellite_tools/satsync.py:988
msgid "ERROR: incremental dump skipped"
msgstr ""

#: ../satellite_tools/satsync.py:1079
msgid "Downloading rpm packages"
msgstr ""

#: ../satellite_tools/satsync.py:1084
#, python-format
msgid "   Fetching any missing RPMs: %s (%s)"
msgstr ""

#: ../satellite_tools/satsync.py:1085 ../satellite_tools/satsync.py:1153
msgid "NONE MISSING"
msgstr ""

#: ../satellite_tools/satsync.py:1094
msgid "Processing rpm packages complete"
msgstr ""

#: ../satellite_tools/satsync.py:1121
msgid "Downloading package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1146
msgid "Downloading srpm packages"
msgstr ""

#: ../satellite_tools/satsync.py:1152
#, python-format
msgid "   Fetching any missing SRPMs: %s (%s)"
msgstr ""

#: ../satellite_tools/satsync.py:1249
#, python-format
msgid "Diffing source package metadata (what's missing locally?): %s"
msgstr ""

#: ../satellite_tools/satsync.py:1260
msgid "Downloading source package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1338 ../satellite_tools/satsync.py:2027
#, python-format
msgid "Unable to save file %s: %s"
msgstr ""

#. for
#. Retried a number of times and it still failed; log the
#. file as being failed and move on
#: ../satellite_tools/satsync.py:1345
#, python-format
msgid "Failed to fetch file %s"
msgstr ""

#: ../satellite_tools/satsync.py:1350
msgid "Downloading kickstartable trees metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1365
msgid "Downloading kickstartable trees files"
msgstr ""

#: ../satellite_tools/satsync.py:1504
#, python-format
msgid "Grabbing all patches for channel %s"
msgstr ""

#: ../satellite_tools/satsync.py:1554
msgid "Downloading patch data"
msgstr ""

#: ../satellite_tools/satsync.py:1556
msgid "Forcing download of all patch data for requested channels."
msgstr ""

#: ../satellite_tools/satsync.py:1571
msgid "Downloading patch data complete"
msgstr ""

#: ../satellite_tools/satsync.py:1576 ../satellite_tools/satsync.py:1597
msgid "Downloading:"
msgstr ""

#: ../satellite_tools/satsync.py:1579
msgid " - complete"
msgstr ""

#: ../satellite_tools/satsync.py:1624
msgid "Importing source package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1627
msgid "Importing package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1635
msgid "Importing:  "
msgstr ""

#. not in the cache
#: ../satellite_tools/satsync.py:1703
msgid ""
"Package Not Found in Cache, Clear the Cache "
"to                                  Regenerate it."
msgstr ""

#: ../satellite_tools/satsync.py:1709
msgid "Importing channel patches"
msgstr ""

#: ../satellite_tools/satsync.py:1714
#, python-format
msgid "Importing %s patches for channel %s."
msgstr ""

#. Incomplete configuration
#: ../satellite_tools/satsync.py:2113
msgid "ERROR: server.mount_point not set in the configuration file"
msgstr ""

#: ../satellite_tools/satsync.py:2117
#, python-format
msgid "ERROR: server.mount_point %s do not exist"
msgstr ""

#: ../satellite_tools/satsync.py:2122
#, python-format
msgid "ERROR: path under server.mount_point (%s)  do not exist"
msgstr ""

#: ../satellite_tools/satsync.py:2199
#, python-format
msgid "Commandline: %s"
msgstr ""

#: ../satellite_tools/satsync.py:2202
#, python-format
msgid ""
"DEBUG ONLY: max. batch-size for XML/database-import processing (1..%s).\"man "
"satellite-sync\" for more information."
msgstr ""

#: ../satellite_tools/satsync.py:2205
msgid "alternative SSL CA Cert (fullpath to cert file)"
msgstr ""

#: ../satellite_tools/satsync.py:2207
msgid "process data for this channel only"
msgstr ""

#: ../satellite_tools/satsync.py:2209
msgid ""
"disk dump will be considered to be a full export; see \"man satellite-sync\" "
"for more information."
msgstr ""

#: ../satellite_tools/satsync.py:2212
msgid "existing custom channels will also be synced (unless -c is used)"
msgstr ""

#: ../satellite_tools/satsync.py:2214
#, python-format
msgid ""
"override debug level set in /etc/rhn/rhn.conf (which is currently set at %s)."
msgstr ""

#: ../satellite_tools/satsync.py:2216
#, python-format
msgid "requested version of XML dump (default: %s)"
msgstr ""

#: ../satellite_tools/satsync.py:2218
msgid "e-mail a report of what was synced/imported"
msgstr ""

#: ../satellite_tools/satsync.py:2220
msgid "forcibly process all (not a diff of) patch metadata"
msgstr ""

#: ../satellite_tools/satsync.py:2222
msgid "Do not use an http proxy under any circumstances."
msgstr ""

#: ../satellite_tools/satsync.py:2224
msgid "alternative http proxy (hostname:port)"
msgstr ""

#: ../satellite_tools/satsync.py:2226
msgid "alternative http proxy username"
msgstr ""

#: ../satellite_tools/satsync.py:2228
msgid "alternative http proxy password"
msgstr ""

#: ../satellite_tools/satsync.py:2230
msgid "parent SUSE Manager to import content from"
msgstr ""

#: ../satellite_tools/satsync.py:2232
msgid "list all available channels and exit"
msgstr ""

#: ../satellite_tools/satsync.py:2234
msgid "help on all error codes mgr-inter-sync returns"
msgstr ""

#: ../satellite_tools/satsync.py:2236
msgid "source mount point for import - disk update only"
msgstr ""

#: ../satellite_tools/satsync.py:2238
msgid "do not process patch data"
msgstr ""

#: ../satellite_tools/satsync.py:2240
msgid "do not process kickstart data (provisioning only)"
msgstr ""

#: ../satellite_tools/satsync.py:2242
msgid "do not process full package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:2244
msgid "do not download, or process any RPMs"
msgstr ""

#: ../satellite_tools/satsync.py:2246
msgid "turn off SSL (not recommended)"
msgstr ""

#: ../satellite_tools/satsync.py:2248
msgid "org to which the sync imports data. defaults to the admin account"
msgstr ""

#: ../satellite_tools/satsync.py:2250
msgid "print the configuration and exit"
msgstr ""

#: ../satellite_tools/satsync.py:2252
msgid "alternative server with which to connect (hostname)"
msgstr ""

#: ../satellite_tools/satsync.py:2254
msgid "synchronize to this step (man satellite-sync for more info)"
msgstr ""

#: ../satellite_tools/satsync.py:2256
msgid "write complete data to tempfile before streaming to remainder of app"
msgstr ""

#: ../satellite_tools/satsync.py:2258
msgid "DEBUG ONLY: alternative path to digital system id"
msgstr ""

#: ../satellite_tools/satsync.py:2260
msgid "alternative email address(es) for sync output (--email option)"
msgstr ""

#: ../satellite_tools/satsync.py:2262
msgid "do not remove rpms when importing from local dump"
msgstr ""

#: ../satellite_tools/satsync.py:2264
msgid ""
"the fully qualified domain name of the master Satellite. Valid with --mount-"
"point only. Required if you want to import org data and channel permissions."
msgstr ""

#: ../satellite_tools/satsync.py:2274
#, python-format
msgid "ERROR: these arguments make no sense in this context (try --help): %s"
msgstr ""

#. An SQL error is fatal... crash and burn
#: ../satellite_tools/satsync.py:2286
#, python-format
msgid "ERROR: Can't connect to the database: %s"
msgstr ""

#: ../satellite_tools/satsync.py:2287
msgid "ERROR: Check if your database is running."
msgstr ""

#: ../satellite_tools/satsync.py:2322
#, python-format
msgid "ERROR: --debug-level takes an in integer value within the range %s."
msgstr ""

#: ../satellite_tools/satsync.py:2324
msgid "  0  - little logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2325
msgid "  1  - minimal logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2326
msgid "  2  - normal level of logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2327
msgid "  3  - lots of logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2328
msgid "  4+ - excessive logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2341
msgid "ERROR: The --master option is only valid with the --mount-point option"
msgstr ""

#: ../satellite_tools/satsync.py:2351
#, python-format
msgid "ERROR: Unable to lookup Org Id %s"
msgstr ""

#: ../satellite_tools/satsync.py:2360
msgid ""
"WARNING: --list-channels option overrides any --step option. --step ignored."
msgstr ""

#: ../satellite_tools/satsync.py:2375
#, python-format
msgid ""
"ERROR: '%s' is not a valid step. See 'man mgr-inter-sync' for more detail."
msgstr ""

#: ../satellite_tools/satsync.py:2407
msgid ""
"ERROR: No channels currently imported; try mgr-inter-sync --list-channels; "
"then mgr-inter-sync -c chn0 -c chn1..."
msgstr ""

#. int(None) --> TypeError
#. int('a')  --> ValueError
#: ../satellite_tools/satsync.py:2457 ../satellite_tools/satsync.py:2461
msgid "ERROR: --batch-size must have a value within the range: 1..50"
msgstr ""

#: ../satellite_tools/satsync.py:2469
#, python-format
msgid "ERROR: no such directory %s"
msgstr ""

#: ../satellite_tools/satsync.py:2474
msgid "Error Codes: Returned codes means:"
msgstr ""

#: ../satellite_tools/satsync.py:2475
msgid " -1  - Could not lock file or KeyboardInterrupt or SystemExit"
msgstr ""

#: ../satellite_tools/satsync.py:2476
msgid "  0  - User interrupted or intentional exit"
msgstr ""

#: ../satellite_tools/satsync.py:2477
msgid "  1  - attempting to run more than one instance of mgr-inter-sync."
msgstr ""

#: ../satellite_tools/satsync.py:2478
msgid "  2  - Unable to find synchronization tools."
msgstr ""

#: ../satellite_tools/satsync.py:2479
msgid "  3  - a general socket exception occurred"
msgstr ""

#: ../satellite_tools/satsync.py:2480
msgid "  4  - an SSL error occurred. Recheck your SSL settings."
msgstr ""

#: ../satellite_tools/satsync.py:2481
msgid "  5  - ISS error"
msgstr ""

#: ../satellite_tools/satsync.py:2482
msgid "  6  - unhandled exception occurred"
msgstr ""

#: ../satellite_tools/satsync.py:2483
msgid "  7  - unknown sync error"
msgstr ""

#: ../satellite_tools/satsync.py:2484
msgid "  8  - ERROR: must be root to execute"
msgstr ""

#: ../satellite_tools/satsync.py:2485
msgid "  9  - rpclib fault during synchronization init"
msgstr ""

#: ../satellite_tools/satsync.py:2486
msgid "  10 - synchronization init error"
msgstr ""

#: ../satellite_tools/satsync.py:2487
msgid "  11 - Error parsing XML stream"
msgstr ""

#: ../satellite_tools/satsync.py:2488
msgid "  12 - Channel do not exist"
msgstr ""

#: ../satellite_tools/satsync.py:2489
msgid "  13 - SQL error during importing package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:2490
msgid "  14 - SQL error during linking channel packages"
msgstr ""

#: ../satellite_tools/satsync.py:2491
msgid "  15 - SQL error during xml processing"
msgstr ""

#: ../satellite_tools/satsync.py:2492
msgid "  16 - server.mount_point not set in the configuration file"
msgstr ""

#: ../satellite_tools/satsync.py:2493
msgid ""
"  17 - SQL error during retrieving the channels already imported in the SUSE "
"Manager database"
msgstr ""

#: ../satellite_tools/satsync.py:2494
msgid "  18 - Wrong db connection string in rhn.conf"
msgstr ""

#: ../satellite_tools/satsync.py:2495
msgid "  19 - Bad arguments"
msgstr ""

#: ../satellite_tools/satsync.py:2496
msgid "  20 - Could not connect to db."
msgstr ""

#: ../satellite_tools/satsync.py:2497
msgid "  21 - Bad debug level"
msgstr ""

#: ../satellite_tools/satsync.py:2498
msgid "  22 - Not valid step"
msgstr ""

#: ../satellite_tools/satsync.py:2499
msgid "  24 - no such file"
msgstr ""

#: ../satellite_tools/satsync.py:2500
msgid "  25 - no such directory"
msgstr ""

#: ../satellite_tools/satsync.py:2501
msgid "  26 - mount_point does not exist"
msgstr ""

#: ../satellite_tools/satsync.py:2502
msgid "  27 - No such org"
msgstr ""

#: ../satellite_tools/satsync.py:2503
msgid "  28 - error: --master is only valid with --mount-point"
msgstr ""

#: ../satellite_tools/satsync.py:2510
#, python-format
msgid "ERROR: unknown dump version, try one of %s"
msgstr ""
 07070100000071000081B40000000000000000000000016290A0C10000B603000000000000000000000000000000000000001B00000000spacewalk-backend/po/he.po    # SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
#
# Translators:
msgid ""
msgstr ""
"Project-Id-Version: Spacewalk\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-10-16 13:34+0200\n"
"PO-Revision-Date: 2011-03-04 16:08+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Hebrew <he-users@lists.fedoraproject.org>\n"
"Language: he\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"

#: ../server/apacheAuth.py:66
#, python-format
msgid "incomplete proxy authentication token: %s"
msgstr ""

#: ../server/apacheAuth.py:84
#, python-format
msgid "Sent proxy signature %s does not match ours %s."
msgstr ""

#: ../server/apacheAuth.py:119
msgid "declined proxy authentication"
msgstr ""

#: ../server/apacheRequest.py:59
#, python-format
msgid "Invalid request received (%s)."
msgstr ""

#: ../server/apacheRequest.py:120
#, python-format
msgid ""
"IMPORTANT MESSAGE FOLLOWS:\n"
"%s"
msgstr ""

#: ../server/apacheRequest.py:149
#, python-format
msgid ""
"While running '%s': caught\n"
"%s : %s\n"
msgstr ""

#: ../server/apacheRequest.py:606
#, python-format
msgid "Invalid URI %s"
msgstr ""

#: ../server/configFilesHandler.py:129 ../server/handlers/app/packages.py:192
#: ../server/handlers/xmlrpc/registration.py:215
#: ../server/handlers/xmlrpc/registration.py:1168
#: ../server/handlers/xmlrpc/registration.py:1307
#, python-format
msgid ""
"\n"
"                   %s Account has been deactivated on this server.\n"
"                   Please contact your Org administrator for more help."
msgstr ""

#: ../server/handlers/applet/applet.py:78
#, python-brace-format
msgid "Your system was not found in the {PRODUCT_NAME} database"
msgstr ""

#: ../server/handlers/sat/auth.py:45
msgid "ISS is disabled on this server."
msgstr ""

#: ../server/handlers/sat/auth.py:50
#, python-format
msgid "Server \"%s\" is not enabled for ISS."
msgstr ""

#: ../server/handlers/xmlrpc/errata.py:64
#, python-format
msgid "Expected a package name, not: %s"
msgstr ""

#: ../server/handlers/xmlrpc/errata.py:115
#, python-format
msgid "Expected a package, not: %s"
msgstr ""

#: ../server/handlers/xmlrpc/proxy.py:65
#, python-format
msgid "SUSE Manager Proxy service not enabled for server profile: \"%s\""
msgstr ""

#: ../server/handlers/xmlrpc/proxy.py:85
msgid "Invalid session key"
msgstr ""

#: ../server/handlers/xmlrpc/proxy.py:93
msgid "This server ID no longer exists"
msgstr ""

#: ../server/handlers/xmlrpc/queue.py:433
#, python-format
msgid "Invalid action value type %s (%s)"
msgstr ""

#: ../server/handlers/xmlrpc/queue.py:464
#, python-format
msgid "Action %s does not belong to server %s"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:194
msgid "Required data missing"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:198
msgid "Required members missing"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:207
msgid "Attempt to register a system to an invalid username"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:839
msgid "Invalid system release version requested"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1063
msgid ""
"Unable to find a valid network interface, both ipaddr and ip6addr not found."
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1115
#, python-brace-format
msgid "{PRODUCT_NAME} Welcome Message"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1125
msgid "Privacy Statement"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1146
msgid "Expected a dictionary as a product argument"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1374
#, python-format
msgid "Invalid value '%s' for %s (%s)"
msgstr ""

#: ../server/handlers/xmlrpc/scap.py:104
msgid "Invalid system_id/action_id pair."
msgstr ""

#: ../server/handlers/xmlrpc/up2date.py:233
#, python-format
msgid "Invalid value %s (%s)"
msgstr ""

#: ../server/importlib/userAuth.py:98
msgid "You are not authorized to manage packages in the null org"
msgstr ""

#: ../server/importlib/userAuth.py:103
#, python-format
msgid "You are not allowed to manage packages in the %s org"
msgstr ""

#: ../server/importlib/userAuth.py:121
msgid "You are not allowed to perform administrative tasks"
msgstr ""

#: ../server/importlib/userAuth.py:144
#, python-format
msgid ""
"You are not allowed to manage channel %s, or that channel does not exist"
msgstr ""

#: ../server/importlib/userAuth.py:204
#, python-format
msgid ""
"\n"
"               %s Account has been deactivated on this server.\n"
"               Please contact your Org administrator for more help."
msgstr ""

#: ../server/rhnChannel.py:1992
#, python-format
msgid ""
"Your account does not have access to any channels matching "
"(release='%(release)s', arch='%(arch)s')%(www_activation)s"
msgstr ""

#: ../server/rhnChannel.py:2002
msgid ""
"\n"
"If you have a registration number, please register with it first at http://"
"www.redhat.com/apps/activate/ and then try again.\n"
"\n"
msgstr ""

#: ../server/rhnChannel.py:2012
#, python-format
msgid "Insufficient subscription permissions for release (%s, %s"
msgstr ""

#. Various messages that can be reused
#.
#. bretm 02/07/2007 -- when we have better old-client documentation, probably
#. will be safe to get rid of all this crap
#: ../server/rhnChannel.py:2276 ../server/rhnChannel.py:2287
#: ../server/rhnChannel.py:2302
msgid "System Registered but Inactive"
msgstr ""

#: ../server/rhnChannel.py:2277
#, python-format
msgid ""
"\n"
"Invalid Architecture and OS release combination (%s, %s).\n"
"Your system has been registered, but will not receive updates\n"
"because it is not subscribed to a channel. If you have not yet\n"
"activated your product for service, please visit our website at:\n"
"\n"
"     http://www.redhat.com/apps/activate/\n"
"\n"
"...to activate your product."
msgstr ""

#: ../server/rhnChannel.py:2288
#, python-format
msgid ""
"\n"
"Invalid Architecture and OS release combination (%s, %s).\n"
"Your system has been registered, but will not receive updates\n"
"because it could not be subscribed to a base channel.\n"
"Please contact your organization administrator for assistance.\n"
msgstr ""

#: ../server/rhnChannel.py:2295
#, python-format
msgid ""
"\n"
"  This system has been successfully registered, but is not yet entitled\n"
"  to service.  To entitle this system to service, login to the web site at:\n"
"\n"
"  %(entitlement_url)s\n"
msgstr ""

#: ../server/rhnChannel.py:2303
#, python-format
msgid ""
"\n"
"  This system has been successfully registered, but no service entitlements\n"
"  were available.  To entitle this system to service, login to the web site "
"at:\n"
"\n"
"  %(entitlement_url)s\n"
msgstr ""

#: ../server/rhnHandler.py:62
msgid "Please run rhn_register as root on this client"
msgstr ""

#: ../server/rhnHandler.py:75
#, python-format
msgid "Service not enabled for system profile: \"%s\""
msgstr ""

#: ../server/rhnPackage.py:49 ../server/rhnPackage.py:87
#: ../server/rhnPackage.py:107 ../server/rhnPackage.py:158
#, python-format
msgid "Invalid RPM package %s requested"
msgstr ""

#: ../server/rhnPackage.py:112
msgid "Package not found"
msgstr ""

#: ../server/rhnServer/server_class.py:97
#, python-format
msgid "Architecture `%s' is not supported"
msgstr ""

#: ../server/rhnServer/server_token.py:78
#, python-format
msgid "Token `%s' has more than one base channel assigned"
msgstr ""

#: ../server/rhnServer/server_token.py:80
msgid "Conflicting base channels"
msgstr ""

#: ../server/rhnServer/server_token.py:190
#, python-format
msgid "Failed to add server to group %s"
msgstr ""

#: ../server/rhnServer/server_token.py:503
#, python-format
msgid "Maximum usage count of %s reached"
msgstr ""

#: ../server/rhnServer/server_token.py:744
msgid ""
"Stacking of re-registration tokens with different base entitlements is not "
"supported"
msgstr ""

#: ../server/rhnServer/server_token.py:811
#, python-format
msgid "Could not find token '%s'"
msgstr ""

#. Cannot use activation keys from different orgs
#: ../server/rhnServer/server_token.py:843
msgid "Tokens from mismatching orgs"
msgstr ""

#. Two tokens with different kickstart sessions
#: ../server/rhnServer/server_token.py:853
msgid "Kickstart session mismatch"
msgstr ""

#: ../server/rhnServer/server_token.py:877
msgid "Stacking of re-registration tokens is not supported"
msgstr ""

#: ../server/rhnUser.py:289 ../server/rhnUser.py:292
msgid "Invalid username/password combination"
msgstr ""

#. nope, not reserved either
#: ../server/rhnUser.py:467
#, python-format
msgid "Username `%s' has not been reserved"
msgstr ""

#. New accounts have to specify an e-mail address
#: ../server/rhnUser.py:473
msgid "E-mail address not specified"
msgstr ""

#: ../server/rhnUser.py:509
#, python-format
msgid "username should be at least %d characters"
msgstr ""

#: ../server/rhnUser.py:512
#, python-format
msgid "username should be less than %d characters"
msgstr ""

#: ../server/rhnUser.py:523
#, python-format
msgid "username = `%s', invalid character `%s'"
msgstr ""

#: ../server/rhnUser.py:542
#, python-format
msgid "Please limit your e-mail address to %s chars"
msgstr ""

#: ../server/rhnUser.py:623
#, python-format
msgid "password must be at least %d characters"
msgstr ""

#: ../server/rhnUser.py:626
#, python-format
msgid "Password must be shorter than %d characters"
msgstr ""

#: ../server/rhnUser.py:644
#, python-format
msgid "password contains character `%s'"
msgstr ""

#: ../server/rhnUser.py:651
#, python-format
msgid "username should be at least %d characters long"
msgstr ""

#: ../server/rhnUser.py:662
#, python-format
msgid "Cannot register usernames ending with %s"
msgstr ""

#. 0-999: Red Hat client/client-like interaction errors:
#: ../common/rhnException.py:53
msgid "This does not appear to be a valid username."
msgstr ""

#: ../common/rhnException.py:54
msgid "Invalid username and password combination."
msgstr ""

#: ../common/rhnException.py:55
msgid "This login is already taken, or the password is incorrect."
msgstr ""

#: ../common/rhnException.py:56
msgid "Permission denied."
msgstr ""

#: ../common/rhnException.py:57
msgid "Object not found."
msgstr ""

#: ../common/rhnException.py:58
msgid "Invalid System Digital ID."
msgstr ""

#: ../common/rhnException.py:59
msgid "Invalid System Credentials."
msgstr ""

#: ../common/rhnException.py:60
msgid "Could not retrieve user data from database."
msgstr ""

#: ../common/rhnException.py:61
msgid "Valid username required."
msgstr ""

#: ../common/rhnException.py:62
msgid "Valid password required."
msgstr ""

#: ../common/rhnException.py:63
msgid "Minimum username length violation."
msgstr ""

#: ../common/rhnException.py:64
msgid "Minimum password length violation."
msgstr ""

#: ../common/rhnException.py:65
msgid "The username contains invalid characters."
msgstr ""

#: ../common/rhnException.py:66
msgid "File not found."
msgstr ""

#: ../common/rhnException.py:67
msgid "Architecture and OS version combination is not supported."
msgstr ""

#: ../common/rhnException.py:68
msgid "Could not retrieve system data from database."
msgstr ""

#: ../common/rhnException.py:69
msgid "Invalid arguments passed to function."
msgstr ""

#: ../common/rhnException.py:70
msgid "Unable to retrieve requested entry."
msgstr ""

#: ../common/rhnException.py:71
msgid "Could not update database entry."
msgstr ""

#: ../common/rhnException.py:72
msgid "Unsupported server architecture."
msgstr ""

#: ../common/rhnException.py:73
#, python-format
msgid ""
"\n"
"     The anonymous server functionality is no longer available.\n"
"\n"
"     Please re-register this system by running mgr_register as root.\n"
"     Please visit https://%(hostname)s/rhn/systems/SystemEntitlements.do\n"
"     or login at https://%(hostname)s, and from the \"Overview\" tab,\n"
"     select \"Subscription Management\" to enable the service for this "
"system.\n"
"     "
msgstr ""

#: ../common/rhnException.py:81
msgid "Record not available in the database."
msgstr ""

#: ../common/rhnException.py:82
msgid "Invalid value for entry."
msgstr ""

#: ../common/rhnException.py:83
#, python-format
msgid ""
"\n"
"     This system does not have a valid entitlement for SUSE Manager.\n"
"     Please visit https://%(hostname)s/rhn/systems/SystemEntitlements.do\n"
"     or login at https://%(hostname)s, and from the \"Overview\" tab,\n"
"     select \"Subscription Management\" to enable the service for this "
"system.\n"
"     "
msgstr ""

#: ../common/rhnException.py:89
msgid "Channel error"
msgstr ""

#: ../common/rhnException.py:90
msgid "Client session token is invalid."
msgstr ""

#: ../common/rhnException.py:91
msgid "Client session token has expired."
msgstr ""

#: ../common/rhnException.py:92
msgid "You are not authorized to retrieve the requested object."
msgstr ""

#: ../common/rhnException.py:93
msgid "Invalid action"
msgstr ""

#: ../common/rhnException.py:94
msgid "You are not allowed to perform administrative tasks on this system."
msgstr ""

#: ../common/rhnException.py:96
msgid "The system is already subscribed to the specified channel."
msgstr ""

#: ../common/rhnException.py:97
msgid "The system is not currently subscribed to the specified channel."
msgstr ""

#: ../common/rhnException.py:98
msgid "The specified channel does not exist."
msgstr ""

#: ../common/rhnException.py:99
msgid "Invalid channel version."
msgstr ""

#: ../common/rhnException.py:100
msgid ""
"\n"
"     User group membership limits exceeded.\n"
"\n"
"     The current settings for your account do not allow you to add another\n"
"     user account. Please check with the organization administrator for "
"your\n"
"     account if the maximum number of users allowed to subscribe to server "
"needs\n"
"     to be changed.\n"
"     "
msgstr ""

#: ../common/rhnException.py:108
msgid ""
"\n"
"     System group membership limits exceeded.\n"
"\n"
"     The current settings for your account do not allow you to add another\n"
"     system profile. Please check with the organization administrator for "
"your\n"
"     account for modifying the maximum number of system profiles that can "
"be\n"
"     subscribed to your account.\n"
"     "
msgstr ""

#: ../common/rhnException.py:116
msgid ""
"\n"
"     Invalid architecture.\n"
"\n"
"     The architecture of the package is not supported by\n"
"     "
msgstr ""

#: ../common/rhnException.py:121
msgid "Invalid RPM header"
msgstr ""

#: ../common/rhnException.py:122
msgid ""
"\n"
"    This system is already registered as a Salt Minion. If you want to "
"register it as a traditional client\n"
"    please delete it first via the web UI or API and then register it using "
"the traditional tools.\n"
"    "
msgstr ""

#. For the uploading tools
#: ../common/rhnException.py:127
msgid "Invalid information uploaded to the server"
msgstr ""

#: ../common/rhnException.py:128
msgid "Error uploading network interfaces configuration."
msgstr ""

#: ../common/rhnException.py:129
msgid ""
"\n"
"     Package Upload Failed due to uniqueness constraint violation.\n"
"     Make sure the package does not have any duplicate dependencies or\n"
"     does not already exists on the server\n"
"     "
msgstr ""

#: ../common/rhnException.py:134
msgid ""
"\n"
"     The --force rhnpush option is disabled on this server.\n"
"     Please contact your SUSE Manager administrator for more help.\n"
"     "
msgstr ""

#. 60-70: token errors
#: ../common/rhnException.py:140
msgid ""
"\n"
"     The activation token specified could not be found on the server.\n"
"     Please retry with a valid key.\n"
"     "
msgstr ""

#: ../common/rhnException.py:144
msgid "Too many systems registered using this registration token"
msgstr ""

#: ../common/rhnException.py:145
msgid "Token contains invalid, obsoleted or insufficient settings"
msgstr ""

#: ../common/rhnException.py:146
msgid "Conflicting activation tokens"
msgstr ""

#. 70-80: channel subscription errors
#: ../common/rhnException.py:149
msgid ""
"\n"
"     No matching base channel found for your system.\n"
"     "
msgstr ""

#: ../common/rhnException.py:152
msgid ""
"\n"
"     You do not have subscription permission to the designated channel.\n"
"     Please refer to your organization's channel or organization\n"
"     administrators for further details.\n"
"     "
msgstr ""

#: ../common/rhnException.py:157
msgid "You can not unsubscribe from base channel."
msgstr ""

#: ../common/rhnException.py:158
msgid "SUSE Manager or Proxy channel can not be subscribed."
msgstr ""

#. 80-90: server group errors
#: ../common/rhnException.py:161
msgid "There was an error while trying to join the system to its groups"
msgstr ""

#. 90-100: entitlement errors
#: ../common/rhnException.py:164
msgid "Unable to entitle system"
msgstr ""

#. 100-109: e-mail and uuid related faults
#: ../common/rhnException.py:167
msgid "Maximum e-mail length violation."
msgstr ""

#: ../common/rhnException.py:168
msgid "This system has been previously registered."
msgstr ""

#: ../common/rhnException.py:169
msgid "Invalid username"
msgstr ""

#. 140-159 applet errors
#: ../common/rhnException.py:172
msgid "Unable to look up server"
msgstr ""

#. 160-179: OSAD errors
#: ../common/rhnException.py:175
msgid "Required argument is missing"
msgstr ""

#. 600-699: RHEL5+ EN errors
#: ../common/rhnException.py:178
msgid "No entitlement information tied to hardware"
msgstr ""

#: ../common/rhnException.py:179
msgid "Installation number is not entitling"
msgstr ""

#. 700-799: Additional user input verification errors.
#: ../common/rhnException.py:182
msgid "Maximum username length violation"
msgstr ""

#: ../common/rhnException.py:183
msgid "Maximum password length violation"
msgstr ""

#: ../common/rhnException.py:184
msgid "This user has read only API access. Action denied."
msgstr ""

#: ../common/rhnException.py:186
msgid "System Name cannot be less than 1 character"
msgstr ""

#. 1000-1999: Proxy specific errors:
#. issued by a Proxy to the client
#: ../common/rhnException.py:190
msgid "SUSE Manager Proxy error."
msgstr ""

#: ../common/rhnException.py:191
msgid "SUSE Manager Proxy unable to login."
msgstr ""

#. issued by a SUSE Manager Server/Satellite to the proxy
#: ../common/rhnException.py:193
msgid ""
"\n"
"     SUSE Manager Proxy system ID does not match a Spacewalk Proxy Server\n"
"     in the database.\n"
"     "
msgstr ""

#: ../common/rhnException.py:197
msgid "SUSE Manager Proxy session token is invalid."
msgstr ""

#: ../common/rhnException.py:198
msgid "SUSE Manager Proxy session token has expired."
msgstr ""

#. 2000-2999: Red Hat Satellite specific errors:
#: ../common/rhnException.py:202
msgid ""
"\n"
"      user creation is not allowed via mgr_register;\n"
"     please contact your sysadmin to have your account created.\n"
"     "
msgstr ""

#: ../common/rhnException.py:206
msgid ""
"\n"
"     This SUSE Manager server is not allowed to use Inter Server Sync on "
"this server\n"
"     "
msgstr ""

#: ../common/rhnException.py:209
msgid ""
"\n"
"     Inter Server Sync is disabled on this SUSE Manager Server.\n"
"     "
msgstr ""

#. 3000-3999: XML dumper errors:
#: ../common/rhnException.py:214
msgid "Invalid datatype passed"
msgstr ""

#: ../common/rhnException.py:215
msgid "Unable to retrieve channel"
msgstr ""

#: ../common/rhnException.py:216
msgid "Unable to retrieve package"
msgstr ""

#: ../common/rhnException.py:217
msgid "Unable to retrieve erratum"
msgstr ""

#: ../common/rhnException.py:218
msgid "File is missing"
msgstr ""

#: ../common/rhnException.py:219
msgid "Function retrieval error"
msgstr ""

#: ../common/rhnException.py:220
msgid "Function execution error"
msgstr ""

#: ../common/rhnException.py:221
msgid "Missing version string"
msgstr ""

#: ../common/rhnException.py:222
msgid "Invalid version string"
msgstr ""

#: ../common/rhnException.py:223
msgid "Mismatching versions"
msgstr ""

#: ../common/rhnException.py:224
msgid "Invalid channel version"
msgstr ""

#: ../common/rhnException.py:225
msgid "No comps file for channel"
msgstr ""

#: ../common/rhnException.py:226
msgid "Unable to retrieve comps file"
msgstr ""

#. 4000 - 4999: config management errors
#: ../common/rhnException.py:229
msgid "Configuration action missing"
msgstr ""

#: ../common/rhnException.py:230
msgid "File too large"
msgstr ""

#: ../common/rhnException.py:231
msgid "File contains binary data"
msgstr ""

#: ../common/rhnException.py:232
msgid "Configuration channel is not empty"
msgstr ""

#: ../common/rhnException.py:233
msgid "Permission error"
msgstr ""

#: ../common/rhnException.py:234
msgid "Content missing for configuration file"
msgstr ""

#: ../common/rhnException.py:235
msgid "Template delimiters not specified"
msgstr ""

#: ../common/rhnException.py:236
msgid "Configuration channel does not exist"
msgstr ""

#: ../common/rhnException.py:237
msgid "Configuration channel already exists"
msgstr ""

#: ../common/rhnException.py:238
msgid "File missing from configuration channel"
msgstr ""

#: ../common/rhnException.py:239
msgid "Different revision of this file is uploaded"
msgstr ""

#: ../common/rhnException.py:240
msgid "File already uploaded to configuration channel"
msgstr ""

#: ../common/rhnException.py:241
msgid "File size exceeds remaining quota space"
msgstr ""

#: ../common/rhnException.py:242
msgid "Full path of file must be specified"
msgstr ""

#: ../common/rhnException.py:243
msgid "Invalid revision number"
msgstr ""

#: ../common/rhnException.py:244
msgid "Cannot compare files of different file type"
msgstr ""

#. 5000 - 5999: client content uploading errors
#. 5000 - 5099: crash reporting errors
#: ../common/rhnException.py:248
msgid "Crash information is invalid or incomplete"
msgstr ""

#: ../common/rhnException.py:249
msgid "Crash file information is invalid or incomplete"
msgstr ""

#: ../common/rhnException.py:250
msgid "Error composing crash directory path"
msgstr ""

#: ../common/rhnException.py:251
msgid "Error composing crash file path"
msgstr ""

#: ../common/rhnException.py:252 ../common/rhnException.py:259
msgid "Invalid content encoding"
msgstr ""

#: ../common/rhnException.py:253
msgid "Invalid crash name"
msgstr ""

#: ../common/rhnException.py:254
msgid "Crash reporting is disabled for this organization"
msgstr ""

#. 5100 - 5199: scap results reporting error
#: ../common/rhnException.py:256
msgid "SCAP results file transfer is invalid or incomplete"
msgstr ""

#: ../common/rhnException.py:257
msgid "Error composing directory path for detailed SCAP results"
msgstr ""

#: ../common/rhnException.py:258
msgid "Error composing file path for detailed SCAP results"
msgstr ""

#: ../common/rhnException.py:306
msgid ""
"\n"
"     An error has occurred while processing your request. If this problem\n"
"     persists please enter a bug report at scc.suse.com.\n"
"     If you choose to submit the bug report, please be sure to include\n"
"     details of what you were trying to do when this error occurred and\n"
"     details on how to reproduce this problem.\n"
msgstr ""

#: ../common/rhnException.py:358
#, python-format
msgid ""
"Error Message:\n"
"    %s\n"
msgstr ""

#: ../common/rhnException.py:360
#, python-format
msgid "Error Class Code: %s\n"
msgstr ""

#: ../common/rhnException.py:363
#, python-format
msgid "Error Class Info: %s\n"
msgstr ""

#: ../common/rhnException.py:365
#, python-format
msgid "Explanation: %s"
msgstr ""

#: ../common/rhnTB.py:205
#, python-format
msgid "ERROR: %s %s: %s"
msgstr ""

#: ../common/rhnTB.py:207
#, python-format
msgid "TRACEBACK: %s"
msgstr ""

#: ../satellite_tools/disk_dumper/iss.py:1294
#: ../satellite_tools/disk_dumper/iss.py:1298
#, python-format
msgid "format of %s should be at least YYYYMMDD.\n"
msgstr ""

#: ../satellite_tools/messages.py:26
#, python-format
msgid ""
"\n"
"ERROR: executing step %s. Error is:\n"
"%s\n"
msgstr ""

#: ../satellite_tools/messages.py:31
#, python-format
msgid ""
"\n"
"ERROR: there was a problem accessing the channel data from your temporary\n"
"       repository. Did you migrate all of the data from the channel ISOs\n"
"       do this directory? If so, please recheck the channels ISOs, ensure\n"
"       that you have them all, and then iteratively remount and repopulate\n"
"       the temporary repository (%s).\n"
msgstr ""

#: ../satellite_tools/messages.py:39
#, python-format
msgid ""
"\n"
"ERROR: there was a problem synchronizing the information.\n"
"       Error message: %s\n"
msgstr ""

#: ../satellite_tools/messages.py:44
#, python-format
msgid ""
"\n"
"ERROR: There was a problem communicating with the ISS Master.\n"
"       Depending on the specific error details, please review your "
"configuration,\n"
"       basic network connectivity, and/or name resolution, and try again.\n"
"       Error message: %s\n"
msgstr ""

#: ../satellite_tools/messages.py:51
#, python-format
msgid ""
"\n"
"ERROR: There was a problem communicating with the ISS Master.\n"
"       If the master satellite is older than v5.3, it does not have ISS "
"capability.\n"
"       Otherwise, depending on the specific error details, please review "
"your\n"
"       configuration, basic network connectivity, and/or name resolution, "
"and try again.\n"
"       Error message: %s\n"
msgstr ""

#: ../satellite_tools/messages.py:59
#, python-format
msgid ""
"\n"
"ERROR: a child-channel cannot be synced without its parent being synced as\n"
"       well. A parent needs to be either (a) previously synced or (b) "
"synced\n"
"       in tandem with the desired child-channel. Missing parents for this\n"
"       transaction:\n"
"       %s\n"
msgstr ""

#: ../satellite_tools/messages.py:67
#, python-format
msgid ""
"\n"
"ERROR: you are not entitled to sync a channel in this set of channels.\n"
"Please contact your SUSE Manager contact\n"
"%s"
msgstr ""

#: ../satellite_tools/messages.py:72
#, python-format
msgid "  ERROR: not enough free space (%s KB) on device."
msgstr ""

#: ../satellite_tools/messages.py:74
#, python-format
msgid "    %3d/%s Fetch successful: %s (%s bytes)"
msgstr ""

#: ../satellite_tools/messages.py:75
#, python-format
msgid "    Extinct package:  %s"
msgstr ""

#: ../satellite_tools/messages.py:76
#, python-format
msgid "   Total size: %s"
msgstr ""

#: ../satellite_tools/messages.py:77
#, python-format
msgid "      Downloaded %s of %s. Estimated remaining time: %s"
msgstr ""

#: ../satellite_tools/messages.py:78
#, python-format
msgid "    Fetch unsuccessful: %s"
msgstr ""

#: ../satellite_tools/messages.py:79
#, python-format
msgid "   RPM fetch summary: %s"
msgstr ""

#: ../satellite_tools/messages.py:80
#, python-format
msgid "       success: %d"
msgstr ""

#: ../satellite_tools/messages.py:81
#, python-format
msgid "       failed:  %d"
msgstr ""

#: ../satellite_tools/messages.py:82
#, python-format
msgid "       extinct: %d"
msgstr ""

#: ../satellite_tools/messages.py:84
#, python-format
msgid "   Retrieving / parsing *relevant* package metadata: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:85
#, python-format
msgid "   Retrieving / parsing errata data: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:86
#, python-format
msgid "   Retrieving / parsing kickstart data: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:87
#, python-format
msgid "   Retrieving / parsing kickstart tree files: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:88
#, python-format
msgid "   Importing *relevant* package metadata: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:89
msgid "   * WARNING: this may be a slow process."
msgstr ""

#: ../satellite_tools/messages.py:90
msgid "Linking packages to channels"
msgstr ""

#: ../satellite_tools/messages.py:91
#, python-format
msgid "   Importing *relevant* errata: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:92
msgid "   No new kickstartable tree to import"
msgstr ""

#: ../satellite_tools/messages.py:93
#, python-format
msgid "Importing kickstartable trees (%d)"
msgstr ""

#: ../satellite_tools/messages.py:94
#, python-format
msgid "Imported kickstartable trees (%d)"
msgstr ""

#: ../satellite_tools/reposync.py:111 ../satellite_tools/satsync.py:439
msgid "+++ sending log as an email +++"
msgstr ""

#: ../satellite_tools/reposync.py:114
#, python-format
msgid "%s sync. report from %s"
msgstr ""

#: ../satellite_tools/reposync.py:124 ../satellite_tools/satsync.py:449
msgid "+++ email requested, but there is nothing to send +++"
msgstr ""

#: ../satellite_tools/rhn_satellite_activate.py:198
#, python-format
msgid ""
"\"%s\" (specified in commandline)\n"
"could not be opened and read:\n"
"%s"
msgstr ""

#: ../satellite_tools/rhn_satellite_activate.py:205
#, python-format
msgid ""
"\"%s\" could not be opened\n"
"and/or written to:\n"
"%s"
msgstr ""

#: ../satellite_tools/satsync.py:258
#, python-format
msgid "No handler for step %s"
msgstr ""

#. Try one more time - this time it should be faster since
#. everything should be cached
#: ../satellite_tools/satsync.py:270
msgid "Environment changed, trying again..."
msgstr ""

#: ../satellite_tools/satsync.py:277
msgid "ERROR: Encountered IntegrityError: \n"
msgstr ""

#: ../satellite_tools/satsync.py:285
msgid "Repeated failures"
msgstr ""

#: ../satellite_tools/satsync.py:290
#, python-format
msgid ""
"    Import complete:\n"
"        Begin time: %s\n"
"        End time:   %s\n"
"        Elapsed:    %s\n"
"          "
msgstr ""

#: ../satellite_tools/satsync.py:311
msgid "hours"
msgstr ""

#: ../satellite_tools/satsync.py:311
msgid "minutes"
msgstr ""

#: ../satellite_tools/satsync.py:311
msgid "seconds"
msgstr ""

#: ../satellite_tools/satsync.py:357
msgid ""
"ERROR: The dump is missing package data, use --no-rpms to skip this step or "
"fix the content to include package data."
msgstr ""

#. the orgs() method doesn't exist; that's fine we just
#. won't sync the orgs
#: ../satellite_tools/satsync.py:404
msgid "The SUSE Manager master does not support syncing orgs data."
msgstr ""

#: ../satellite_tools/satsync.py:404
msgid "Skipping..."
msgstr ""

#: ../satellite_tools/satsync.py:442
#, python-format
msgid "SUSE Manager Inter Server sync. report from %s"
msgstr ""

#: ../satellite_tools/satsync.py:521
msgid " - file-system synchronization"
msgstr ""

#: ../satellite_tools/satsync.py:533 ../satellite_tools/satsync.py:541
msgid " - live synchronization"
msgstr ""

#: ../satellite_tools/satsync.py:534
#, python-brace-format
msgid ""
"ERROR: Live content synchronizing with RHN Classic Hosted is no longer "
"supported.\n"
"Please use the cdn-sync command instead unless you are attempting to sync "
"from another {PRODUCT_NAME} via Inter-Server-Sync (ISS), or from local "
"content on disk via Channel Dump ISOs."
msgstr ""

#: ../satellite_tools/satsync.py:542
#, python-format
msgid "   url: %s"
msgstr ""

#: ../satellite_tools/satsync.py:543
#, python-format
msgid "   debug/output level: %s"
msgstr ""

#: ../satellite_tools/satsync.py:553
msgid "ERROR: this server must be registered with SUSE Manager."
msgstr ""

#: ../satellite_tools/satsync.py:575
#, python-format
msgid "Retrieving / parsing %s data"
msgstr ""

#: ../satellite_tools/satsync.py:585 ../satellite_tools/satsync.py:600
msgid "*** SYSTEM INTERRUPT CALLED ***"
msgstr ""

#: ../satellite_tools/satsync.py:593
msgid "ERROR: fatal parser exception occurred "
msgstr ""

#: ../satellite_tools/satsync.py:594
#, python-format
msgid "(line: %s, col: %s msg: %s)"
msgstr ""

#: ../satellite_tools/satsync.py:598
#, python-format
msgid "ERROR: parser exception occurred: %s"
msgstr ""

#: ../satellite_tools/satsync.py:603
msgid "ERROR: exception (during parse) occurred: "
msgstr ""

#: ../satellite_tools/satsync.py:604
#, python-format
msgid ""
"   Encountered some errors with %s data (see logs (%s) for more information)"
msgstr ""

#: ../satellite_tools/satsync.py:606
#, python-format
msgid "   Encountered some errors with %s data:"
msgstr ""

#: ../satellite_tools/satsync.py:607
#, python-format
msgid "   ------- %s PARSE/IMPORT ERROR -------"
msgstr ""

#: ../satellite_tools/satsync.py:609
msgid "   ---------------------------------------"
msgstr ""

#: ../satellite_tools/satsync.py:612
#, python-format
msgid "%s data complete"
msgstr ""

#: ../satellite_tools/satsync.py:665
msgid "Retrieving / parsing channel data"
msgstr ""

#: ../satellite_tools/satsync.py:718
msgid "Channel data complete"
msgstr ""

#: ../satellite_tools/satsync.py:736
#, python-format
msgid "%10s import from %s"
msgstr ""

#: ../satellite_tools/satsync.py:739
#, python-format
msgid "%10s import from %s - %s"
msgstr ""

#: ../satellite_tools/satsync.py:743
#, python-format
msgid "%10s"
msgstr ""

#: ../satellite_tools/satsync.py:750
msgid "p"
msgstr ""

#: ../satellite_tools/satsync.py:752
msgid "."
msgstr ""

#: ../satellite_tools/satsync.py:758
msgid "   p = previously imported/synced channel"
msgstr ""

#: ../satellite_tools/satsync.py:759
msgid "   . = channel not yet imported/synced"
msgstr ""

#: ../satellite_tools/satsync.py:765
msgid "   e = channel no longer supported (end-of-service)"
msgstr ""

#: ../satellite_tools/satsync.py:767
msgid "   ? = channel label invalid --- typo?"
msgstr ""

#: ../satellite_tools/satsync.py:771
#, python-format
msgid "   %s:"
msgstr ""

#: ../satellite_tools/satsync.py:772
#, python-format
msgid "      %s %-40s %4s %s"
msgstr ""

#: ../satellite_tools/satsync.py:773
msgid "base-channels"
msgstr ""

#: ../satellite_tools/satsync.py:786 ../satellite_tools/satsync.py:1603
msgid "NONE RELEVANT"
msgstr ""

#: ../satellite_tools/satsync.py:808
msgid "end-of-service"
msgstr ""

#: ../satellite_tools/satsync.py:809
msgid "e"
msgstr ""

#: ../satellite_tools/satsync.py:815
msgid "   typos:"
msgstr ""

#: ../satellite_tools/satsync.py:816
msgid "?"
msgstr ""

#: ../satellite_tools/satsync.py:831
#, python-format
msgid "XXX: imported channels: %s"
msgstr ""

#: ../satellite_tools/satsync.py:832
#, python-format
msgid "XXX:   cached channels: %s"
msgstr ""

#: ../satellite_tools/satsync.py:837
msgid "XXX: list channels called"
msgstr ""

#: ../satellite_tools/satsync.py:855
msgid "ERROR: these channels either do not exist or are not available:"
msgstr ""

#: ../satellite_tools/satsync.py:859
#, python-format
msgid "       (to see a list of channel labels: %s --list-channels)"
msgstr ""

#: ../satellite_tools/satsync.py:904
#, python-format
msgid "   Retrieving / parsing short package metadata: %s (%s)"
msgstr ""

#: ../satellite_tools/satsync.py:965
#, python-format
msgid "Diffing package metadata (what's missing locally?): %s"
msgstr ""

#: ../satellite_tools/satsync.py:971 ../satellite_tools/satsync.py:1254
msgid "Diffing:    "
msgstr ""

#: ../satellite_tools/satsync.py:988
msgid "ERROR: incremental dump skipped"
msgstr ""

#: ../satellite_tools/satsync.py:1079
msgid "Downloading rpm packages"
msgstr ""

#: ../satellite_tools/satsync.py:1084
#, python-format
msgid "   Fetching any missing RPMs: %s (%s)"
msgstr ""

#: ../satellite_tools/satsync.py:1085 ../satellite_tools/satsync.py:1153
msgid "NONE MISSING"
msgstr ""

#: ../satellite_tools/satsync.py:1094
msgid "Processing rpm packages complete"
msgstr ""

#: ../satellite_tools/satsync.py:1121
msgid "Downloading package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1146
msgid "Downloading srpm packages"
msgstr ""

#: ../satellite_tools/satsync.py:1152
#, python-format
msgid "   Fetching any missing SRPMs: %s (%s)"
msgstr ""

#: ../satellite_tools/satsync.py:1249
#, python-format
msgid "Diffing source package metadata (what's missing locally?): %s"
msgstr ""

#: ../satellite_tools/satsync.py:1260
msgid "Downloading source package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1338 ../satellite_tools/satsync.py:2027
#, python-format
msgid "Unable to save file %s: %s"
msgstr ""

#. for
#. Retried a number of times and it still failed; log the
#. file as being failed and move on
#: ../satellite_tools/satsync.py:1345
#, python-format
msgid "Failed to fetch file %s"
msgstr ""

#: ../satellite_tools/satsync.py:1350
msgid "Downloading kickstartable trees metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1365
msgid "Downloading kickstartable trees files"
msgstr ""

#: ../satellite_tools/satsync.py:1504
#, python-format
msgid "Grabbing all patches for channel %s"
msgstr ""

#: ../satellite_tools/satsync.py:1554
msgid "Downloading patch data"
msgstr ""

#: ../satellite_tools/satsync.py:1556
msgid "Forcing download of all patch data for requested channels."
msgstr ""

#: ../satellite_tools/satsync.py:1571
msgid "Downloading patch data complete"
msgstr ""

#: ../satellite_tools/satsync.py:1576 ../satellite_tools/satsync.py:1597
msgid "Downloading:"
msgstr ""

#: ../satellite_tools/satsync.py:1579
msgid " - complete"
msgstr ""

#: ../satellite_tools/satsync.py:1624
msgid "Importing source package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1627
msgid "Importing package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1635
msgid "Importing:  "
msgstr ""

#. not in the cache
#: ../satellite_tools/satsync.py:1703
msgid ""
"Package Not Found in Cache, Clear the Cache "
"to                                  Regenerate it."
msgstr ""

#: ../satellite_tools/satsync.py:1709
msgid "Importing channel patches"
msgstr ""

#: ../satellite_tools/satsync.py:1714
#, python-format
msgid "Importing %s patches for channel %s."
msgstr ""

#. Incomplete configuration
#: ../satellite_tools/satsync.py:2113
msgid "ERROR: server.mount_point not set in the configuration file"
msgstr ""

#: ../satellite_tools/satsync.py:2117
#, python-format
msgid "ERROR: server.mount_point %s do not exist"
msgstr ""

#: ../satellite_tools/satsync.py:2122
#, python-format
msgid "ERROR: path under server.mount_point (%s)  do not exist"
msgstr ""

#: ../satellite_tools/satsync.py:2199
#, python-format
msgid "Commandline: %s"
msgstr ""

#: ../satellite_tools/satsync.py:2202
#, python-format
msgid ""
"DEBUG ONLY: max. batch-size for XML/database-import processing (1..%s).\"man "
"satellite-sync\" for more information."
msgstr ""

#: ../satellite_tools/satsync.py:2205
msgid "alternative SSL CA Cert (fullpath to cert file)"
msgstr ""

#: ../satellite_tools/satsync.py:2207
msgid "process data for this channel only"
msgstr ""

#: ../satellite_tools/satsync.py:2209
msgid ""
"disk dump will be considered to be a full export; see \"man satellite-sync\" "
"for more information."
msgstr ""

#: ../satellite_tools/satsync.py:2212
msgid "existing custom channels will also be synced (unless -c is used)"
msgstr ""

#: ../satellite_tools/satsync.py:2214
#, python-format
msgid ""
"override debug level set in /etc/rhn/rhn.conf (which is currently set at %s)."
msgstr ""

#: ../satellite_tools/satsync.py:2216
#, python-format
msgid "requested version of XML dump (default: %s)"
msgstr ""

#: ../satellite_tools/satsync.py:2218
msgid "e-mail a report of what was synced/imported"
msgstr ""

#: ../satellite_tools/satsync.py:2220
msgid "forcibly process all (not a diff of) patch metadata"
msgstr ""

#: ../satellite_tools/satsync.py:2222
msgid "Do not use an http proxy under any circumstances."
msgstr ""

#: ../satellite_tools/satsync.py:2224
msgid "alternative http proxy (hostname:port)"
msgstr ""

#: ../satellite_tools/satsync.py:2226
msgid "alternative http proxy username"
msgstr ""

#: ../satellite_tools/satsync.py:2228
msgid "alternative http proxy password"
msgstr ""

#: ../satellite_tools/satsync.py:2230
msgid "parent SUSE Manager to import content from"
msgstr ""

#: ../satellite_tools/satsync.py:2232
msgid "list all available channels and exit"
msgstr ""

#: ../satellite_tools/satsync.py:2234
msgid "help on all error codes mgr-inter-sync returns"
msgstr ""

#: ../satellite_tools/satsync.py:2236
msgid "source mount point for import - disk update only"
msgstr ""

#: ../satellite_tools/satsync.py:2238
msgid "do not process patch data"
msgstr ""

#: ../satellite_tools/satsync.py:2240
msgid "do not process kickstart data (provisioning only)"
msgstr ""

#: ../satellite_tools/satsync.py:2242
msgid "do not process full package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:2244
msgid "do not download, or process any RPMs"
msgstr ""

#: ../satellite_tools/satsync.py:2246
msgid "turn off SSL (not recommended)"
msgstr ""

#: ../satellite_tools/satsync.py:2248
msgid "org to which the sync imports data. defaults to the admin account"
msgstr ""

#: ../satellite_tools/satsync.py:2250
msgid "print the configuration and exit"
msgstr ""

#: ../satellite_tools/satsync.py:2252
msgid "alternative server with which to connect (hostname)"
msgstr ""

#: ../satellite_tools/satsync.py:2254
msgid "synchronize to this step (man satellite-sync for more info)"
msgstr ""

#: ../satellite_tools/satsync.py:2256
msgid "write complete data to tempfile before streaming to remainder of app"
msgstr ""

#: ../satellite_tools/satsync.py:2258
msgid "DEBUG ONLY: alternative path to digital system id"
msgstr ""

#: ../satellite_tools/satsync.py:2260
msgid "alternative email address(es) for sync output (--email option)"
msgstr ""

#: ../satellite_tools/satsync.py:2262
msgid "do not remove rpms when importing from local dump"
msgstr ""

#: ../satellite_tools/satsync.py:2264
msgid ""
"the fully qualified domain name of the master Satellite. Valid with --mount-"
"point only. Required if you want to import org data and channel permissions."
msgstr ""

#: ../satellite_tools/satsync.py:2274
#, python-format
msgid "ERROR: these arguments make no sense in this context (try --help): %s"
msgstr ""

#. An SQL error is fatal... crash and burn
#: ../satellite_tools/satsync.py:2286
#, python-format
msgid "ERROR: Can't connect to the database: %s"
msgstr ""

#: ../satellite_tools/satsync.py:2287
msgid "ERROR: Check if your database is running."
msgstr ""

#: ../satellite_tools/satsync.py:2322
#, python-format
msgid "ERROR: --debug-level takes an in integer value within the range %s."
msgstr ""

#: ../satellite_tools/satsync.py:2324
msgid "  0  - little logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2325
msgid "  1  - minimal logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2326
msgid "  2  - normal level of logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2327
msgid "  3  - lots of logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2328
msgid "  4+ - excessive logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2341
msgid "ERROR: The --master option is only valid with the --mount-point option"
msgstr ""

#: ../satellite_tools/satsync.py:2351
#, python-format
msgid "ERROR: Unable to lookup Org Id %s"
msgstr ""

#: ../satellite_tools/satsync.py:2360
msgid ""
"WARNING: --list-channels option overrides any --step option. --step ignored."
msgstr ""

#: ../satellite_tools/satsync.py:2375
#, python-format
msgid ""
"ERROR: '%s' is not a valid step. See 'man mgr-inter-sync' for more detail."
msgstr ""

#: ../satellite_tools/satsync.py:2407
msgid ""
"ERROR: No channels currently imported; try mgr-inter-sync --list-channels; "
"then mgr-inter-sync -c chn0 -c chn1..."
msgstr ""

#. int(None) --> TypeError
#. int('a')  --> ValueError
#: ../satellite_tools/satsync.py:2457 ../satellite_tools/satsync.py:2461
msgid "ERROR: --batch-size must have a value within the range: 1..50"
msgstr ""

#: ../satellite_tools/satsync.py:2469
#, python-format
msgid "ERROR: no such directory %s"
msgstr ""

#: ../satellite_tools/satsync.py:2474
msgid "Error Codes: Returned codes means:"
msgstr ""

#: ../satellite_tools/satsync.py:2475
msgid " -1  - Could not lock file or KeyboardInterrupt or SystemExit"
msgstr ""

#: ../satellite_tools/satsync.py:2476
msgid "  0  - User interrupted or intentional exit"
msgstr ""

#: ../satellite_tools/satsync.py:2477
msgid "  1  - attempting to run more than one instance of mgr-inter-sync."
msgstr ""

#: ../satellite_tools/satsync.py:2478
msgid "  2  - Unable to find synchronization tools."
msgstr ""

#: ../satellite_tools/satsync.py:2479
msgid "  3  - a general socket exception occurred"
msgstr ""

#: ../satellite_tools/satsync.py:2480
msgid "  4  - an SSL error occurred. Recheck your SSL settings."
msgstr ""

#: ../satellite_tools/satsync.py:2481
msgid "  5  - ISS error"
msgstr ""

#: ../satellite_tools/satsync.py:2482
msgid "  6  - unhandled exception occurred"
msgstr ""

#: ../satellite_tools/satsync.py:2483
msgid "  7  - unknown sync error"
msgstr ""

#: ../satellite_tools/satsync.py:2484
msgid "  8  - ERROR: must be root to execute"
msgstr ""

#: ../satellite_tools/satsync.py:2485
msgid "  9  - rpclib fault during synchronization init"
msgstr ""

#: ../satellite_tools/satsync.py:2486
msgid "  10 - synchronization init error"
msgstr ""

#: ../satellite_tools/satsync.py:2487
msgid "  11 - Error parsing XML stream"
msgstr ""

#: ../satellite_tools/satsync.py:2488
msgid "  12 - Channel do not exist"
msgstr ""

#: ../satellite_tools/satsync.py:2489
msgid "  13 - SQL error during importing package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:2490
msgid "  14 - SQL error during linking channel packages"
msgstr ""

#: ../satellite_tools/satsync.py:2491
msgid "  15 - SQL error during xml processing"
msgstr ""

#: ../satellite_tools/satsync.py:2492
msgid "  16 - server.mount_point not set in the configuration file"
msgstr ""

#: ../satellite_tools/satsync.py:2493
msgid ""
"  17 - SQL error during retrieving the channels already imported in the SUSE "
"Manager database"
msgstr ""

#: ../satellite_tools/satsync.py:2494
msgid "  18 - Wrong db connection string in rhn.conf"
msgstr ""

#: ../satellite_tools/satsync.py:2495
msgid "  19 - Bad arguments"
msgstr ""

#: ../satellite_tools/satsync.py:2496
msgid "  20 - Could not connect to db."
msgstr ""

#: ../satellite_tools/satsync.py:2497
msgid "  21 - Bad debug level"
msgstr ""

#: ../satellite_tools/satsync.py:2498
msgid "  22 - Not valid step"
msgstr ""

#: ../satellite_tools/satsync.py:2499
msgid "  24 - no such file"
msgstr ""

#: ../satellite_tools/satsync.py:2500
msgid "  25 - no such directory"
msgstr ""

#: ../satellite_tools/satsync.py:2501
msgid "  26 - mount_point does not exist"
msgstr ""

#: ../satellite_tools/satsync.py:2502
msgid "  27 - No such org"
msgstr ""

#: ../satellite_tools/satsync.py:2503
msgid "  28 - error: --master is only valid with --mount-point"
msgstr ""

#: ../satellite_tools/satsync.py:2510
#, python-format
msgid "ERROR: unknown dump version, try one of %s"
msgstr ""
 07070100000072000081B40000000000000000000000016290A0C10000B644000000000000000000000000000000000000001B00000000spacewalk-backend/po/hi.po    # SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
#
# Translators:
# Rajesh Ranjan <rranjan@redhat.com>, 2004, 2005, 2006, 2007.
msgid ""
msgstr ""
"Project-Id-Version: Spacewalk\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-10-16 13:34+0200\n"
"PO-Revision-Date: 2011-03-04 16:08+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Hindi <indlinux-hindi@lists.sourceforge.net>\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"

#: ../server/apacheAuth.py:66
#, python-format
msgid "incomplete proxy authentication token: %s"
msgstr ""

#: ../server/apacheAuth.py:84
#, python-format
msgid "Sent proxy signature %s does not match ours %s."
msgstr ""

#: ../server/apacheAuth.py:119
msgid "declined proxy authentication"
msgstr ""

#: ../server/apacheRequest.py:59
#, python-format
msgid "Invalid request received (%s)."
msgstr ""

#: ../server/apacheRequest.py:120
#, python-format
msgid ""
"IMPORTANT MESSAGE FOLLOWS:\n"
"%s"
msgstr ""

#: ../server/apacheRequest.py:149
#, python-format
msgid ""
"While running '%s': caught\n"
"%s : %s\n"
msgstr ""

#: ../server/apacheRequest.py:606
#, python-format
msgid "Invalid URI %s"
msgstr ""

#: ../server/configFilesHandler.py:129 ../server/handlers/app/packages.py:192
#: ../server/handlers/xmlrpc/registration.py:215
#: ../server/handlers/xmlrpc/registration.py:1168
#: ../server/handlers/xmlrpc/registration.py:1307
#, python-format
msgid ""
"\n"
"                   %s Account has been deactivated on this server.\n"
"                   Please contact your Org administrator for more help."
msgstr ""

#: ../server/handlers/applet/applet.py:78
#, python-brace-format
msgid "Your system was not found in the {PRODUCT_NAME} database"
msgstr ""

#: ../server/handlers/sat/auth.py:45
msgid "ISS is disabled on this server."
msgstr ""

#: ../server/handlers/sat/auth.py:50
#, python-format
msgid "Server \"%s\" is not enabled for ISS."
msgstr ""

#: ../server/handlers/xmlrpc/errata.py:64
#, python-format
msgid "Expected a package name, not: %s"
msgstr ""

#: ../server/handlers/xmlrpc/errata.py:115
#, python-format
msgid "Expected a package, not: %s"
msgstr ""

#: ../server/handlers/xmlrpc/proxy.py:65
#, python-format
msgid "SUSE Manager Proxy service not enabled for server profile: \"%s\""
msgstr ""

#: ../server/handlers/xmlrpc/proxy.py:85
msgid "Invalid session key"
msgstr ""

#: ../server/handlers/xmlrpc/proxy.py:93
msgid "This server ID no longer exists"
msgstr ""

#: ../server/handlers/xmlrpc/queue.py:433
#, python-format
msgid "Invalid action value type %s (%s)"
msgstr ""

#: ../server/handlers/xmlrpc/queue.py:464
#, python-format
msgid "Action %s does not belong to server %s"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:194
msgid "Required data missing"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:198
msgid "Required members missing"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:207
msgid "Attempt to register a system to an invalid username"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:839
msgid "Invalid system release version requested"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1063
msgid ""
"Unable to find a valid network interface, both ipaddr and ip6addr not found."
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1115
#, python-brace-format
msgid "{PRODUCT_NAME} Welcome Message"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1125
msgid "Privacy Statement"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1146
msgid "Expected a dictionary as a product argument"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1374
#, python-format
msgid "Invalid value '%s' for %s (%s)"
msgstr ""

#: ../server/handlers/xmlrpc/scap.py:104
msgid "Invalid system_id/action_id pair."
msgstr ""

#: ../server/handlers/xmlrpc/up2date.py:233
#, python-format
msgid "Invalid value %s (%s)"
msgstr ""

#: ../server/importlib/userAuth.py:98
msgid "You are not authorized to manage packages in the null org"
msgstr ""

#: ../server/importlib/userAuth.py:103
#, python-format
msgid "You are not allowed to manage packages in the %s org"
msgstr ""

#: ../server/importlib/userAuth.py:121
msgid "You are not allowed to perform administrative tasks"
msgstr ""

#: ../server/importlib/userAuth.py:144
#, python-format
msgid ""
"You are not allowed to manage channel %s, or that channel does not exist"
msgstr ""

#: ../server/importlib/userAuth.py:204
#, python-format
msgid ""
"\n"
"               %s Account has been deactivated on this server.\n"
"               Please contact your Org administrator for more help."
msgstr ""

#: ../server/rhnChannel.py:1992
#, python-format
msgid ""
"Your account does not have access to any channels matching "
"(release='%(release)s', arch='%(arch)s')%(www_activation)s"
msgstr ""

#: ../server/rhnChannel.py:2002
msgid ""
"\n"
"If you have a registration number, please register with it first at http://"
"www.redhat.com/apps/activate/ and then try again.\n"
"\n"
msgstr ""

#: ../server/rhnChannel.py:2012
#, python-format
msgid "Insufficient subscription permissions for release (%s, %s"
msgstr ""

#. Various messages that can be reused
#.
#. bretm 02/07/2007 -- when we have better old-client documentation, probably
#. will be safe to get rid of all this crap
#: ../server/rhnChannel.py:2276 ../server/rhnChannel.py:2287
#: ../server/rhnChannel.py:2302
msgid "System Registered but Inactive"
msgstr ""

#: ../server/rhnChannel.py:2277
#, python-format
msgid ""
"\n"
"Invalid Architecture and OS release combination (%s, %s).\n"
"Your system has been registered, but will not receive updates\n"
"because it is not subscribed to a channel. If you have not yet\n"
"activated your product for service, please visit our website at:\n"
"\n"
"     http://www.redhat.com/apps/activate/\n"
"\n"
"...to activate your product."
msgstr ""

#: ../server/rhnChannel.py:2288
#, python-format
msgid ""
"\n"
"Invalid Architecture and OS release combination (%s, %s).\n"
"Your system has been registered, but will not receive updates\n"
"because it could not be subscribed to a base channel.\n"
"Please contact your organization administrator for assistance.\n"
msgstr ""

#: ../server/rhnChannel.py:2295
#, python-format
msgid ""
"\n"
"  This system has been successfully registered, but is not yet entitled\n"
"  to service.  To entitle this system to service, login to the web site at:\n"
"\n"
"  %(entitlement_url)s\n"
msgstr ""

#: ../server/rhnChannel.py:2303
#, python-format
msgid ""
"\n"
"  This system has been successfully registered, but no service entitlements\n"
"  were available.  To entitle this system to service, login to the web site "
"at:\n"
"\n"
"  %(entitlement_url)s\n"
msgstr ""

#: ../server/rhnHandler.py:62
msgid "Please run rhn_register as root on this client"
msgstr ""

#: ../server/rhnHandler.py:75
#, python-format
msgid "Service not enabled for system profile: \"%s\""
msgstr ""

#: ../server/rhnPackage.py:49 ../server/rhnPackage.py:87
#: ../server/rhnPackage.py:107 ../server/rhnPackage.py:158
#, python-format
msgid "Invalid RPM package %s requested"
msgstr ""

#: ../server/rhnPackage.py:112
msgid "Package not found"
msgstr ""

#: ../server/rhnServer/server_class.py:97
#, python-format
msgid "Architecture `%s' is not supported"
msgstr ""

#: ../server/rhnServer/server_token.py:78
#, python-format
msgid "Token `%s' has more than one base channel assigned"
msgstr ""

#: ../server/rhnServer/server_token.py:80
msgid "Conflicting base channels"
msgstr ""

#: ../server/rhnServer/server_token.py:190
#, python-format
msgid "Failed to add server to group %s"
msgstr ""

#: ../server/rhnServer/server_token.py:503
#, python-format
msgid "Maximum usage count of %s reached"
msgstr ""

#: ../server/rhnServer/server_token.py:744
msgid ""
"Stacking of re-registration tokens with different base entitlements is not "
"supported"
msgstr ""

#: ../server/rhnServer/server_token.py:811
#, python-format
msgid "Could not find token '%s'"
msgstr ""

#. Cannot use activation keys from different orgs
#: ../server/rhnServer/server_token.py:843
msgid "Tokens from mismatching orgs"
msgstr ""

#. Two tokens with different kickstart sessions
#: ../server/rhnServer/server_token.py:853
msgid "Kickstart session mismatch"
msgstr ""

#: ../server/rhnServer/server_token.py:877
msgid "Stacking of re-registration tokens is not supported"
msgstr ""

#: ../server/rhnUser.py:289 ../server/rhnUser.py:292
msgid "Invalid username/password combination"
msgstr ""

#. nope, not reserved either
#: ../server/rhnUser.py:467
#, python-format
msgid "Username `%s' has not been reserved"
msgstr ""

#. New accounts have to specify an e-mail address
#: ../server/rhnUser.py:473
msgid "E-mail address not specified"
msgstr ""

#: ../server/rhnUser.py:509
#, python-format
msgid "username should be at least %d characters"
msgstr ""

#: ../server/rhnUser.py:512
#, python-format
msgid "username should be less than %d characters"
msgstr ""

#: ../server/rhnUser.py:523
#, python-format
msgid "username = `%s', invalid character `%s'"
msgstr ""

#: ../server/rhnUser.py:542
#, python-format
msgid "Please limit your e-mail address to %s chars"
msgstr ""

#: ../server/rhnUser.py:623
#, python-format
msgid "password must be at least %d characters"
msgstr ""

#: ../server/rhnUser.py:626
#, python-format
msgid "Password must be shorter than %d characters"
msgstr ""

#: ../server/rhnUser.py:644
#, python-format
msgid "password contains character `%s'"
msgstr ""

#: ../server/rhnUser.py:651
#, python-format
msgid "username should be at least %d characters long"
msgstr ""

#: ../server/rhnUser.py:662
#, python-format
msgid "Cannot register usernames ending with %s"
msgstr ""

#. 0-999: Red Hat client/client-like interaction errors:
#: ../common/rhnException.py:53
msgid "This does not appear to be a valid username."
msgstr ""

#: ../common/rhnException.py:54
msgid "Invalid username and password combination."
msgstr ""

#: ../common/rhnException.py:55
msgid "This login is already taken, or the password is incorrect."
msgstr ""

#: ../common/rhnException.py:56
msgid "Permission denied."
msgstr ""

#: ../common/rhnException.py:57
msgid "Object not found."
msgstr ""

#: ../common/rhnException.py:58
msgid "Invalid System Digital ID."
msgstr ""

#: ../common/rhnException.py:59
msgid "Invalid System Credentials."
msgstr ""

#: ../common/rhnException.py:60
msgid "Could not retrieve user data from database."
msgstr ""

#: ../common/rhnException.py:61
msgid "Valid username required."
msgstr ""

#: ../common/rhnException.py:62
msgid "Valid password required."
msgstr ""

#: ../common/rhnException.py:63
msgid "Minimum username length violation."
msgstr ""

#: ../common/rhnException.py:64
msgid "Minimum password length violation."
msgstr ""

#: ../common/rhnException.py:65
msgid "The username contains invalid characters."
msgstr ""

#: ../common/rhnException.py:66
msgid "File not found."
msgstr ""

#: ../common/rhnException.py:67
msgid "Architecture and OS version combination is not supported."
msgstr ""

#: ../common/rhnException.py:68
msgid "Could not retrieve system data from database."
msgstr ""

#: ../common/rhnException.py:69
msgid "Invalid arguments passed to function."
msgstr ""

#: ../common/rhnException.py:70
msgid "Unable to retrieve requested entry."
msgstr ""

#: ../common/rhnException.py:71
msgid "Could not update database entry."
msgstr ""

#: ../common/rhnException.py:72
msgid "Unsupported server architecture."
msgstr ""

#: ../common/rhnException.py:73
#, python-format
msgid ""
"\n"
"     The anonymous server functionality is no longer available.\n"
"\n"
"     Please re-register this system by running mgr_register as root.\n"
"     Please visit https://%(hostname)s/rhn/systems/SystemEntitlements.do\n"
"     or login at https://%(hostname)s, and from the \"Overview\" tab,\n"
"     select \"Subscription Management\" to enable the service for this "
"system.\n"
"     "
msgstr ""

#: ../common/rhnException.py:81
msgid "Record not available in the database."
msgstr ""

#: ../common/rhnException.py:82
msgid "Invalid value for entry."
msgstr ""

#: ../common/rhnException.py:83
#, python-format
msgid ""
"\n"
"     This system does not have a valid entitlement for SUSE Manager.\n"
"     Please visit https://%(hostname)s/rhn/systems/SystemEntitlements.do\n"
"     or login at https://%(hostname)s, and from the \"Overview\" tab,\n"
"     select \"Subscription Management\" to enable the service for this "
"system.\n"
"     "
msgstr ""

#: ../common/rhnException.py:89
msgid "Channel error"
msgstr ""

#: ../common/rhnException.py:90
msgid "Client session token is invalid."
msgstr ""

#: ../common/rhnException.py:91
msgid "Client session token has expired."
msgstr ""

#: ../common/rhnException.py:92
msgid "You are not authorized to retrieve the requested object."
msgstr ""

#: ../common/rhnException.py:93
msgid "Invalid action"
msgstr ""

#: ../common/rhnException.py:94
msgid "You are not allowed to perform administrative tasks on this system."
msgstr ""

#: ../common/rhnException.py:96
msgid "The system is already subscribed to the specified channel."
msgstr ""

#: ../common/rhnException.py:97
msgid "The system is not currently subscribed to the specified channel."
msgstr ""

#: ../common/rhnException.py:98
msgid "The specified channel does not exist."
msgstr ""

#: ../common/rhnException.py:99
msgid "Invalid channel version."
msgstr ""

#: ../common/rhnException.py:100
msgid ""
"\n"
"     User group membership limits exceeded.\n"
"\n"
"     The current settings for your account do not allow you to add another\n"
"     user account. Please check with the organization administrator for "
"your\n"
"     account if the maximum number of users allowed to subscribe to server "
"needs\n"
"     to be changed.\n"
"     "
msgstr ""

#: ../common/rhnException.py:108
msgid ""
"\n"
"     System group membership limits exceeded.\n"
"\n"
"     The current settings for your account do not allow you to add another\n"
"     system profile. Please check with the organization administrator for "
"your\n"
"     account for modifying the maximum number of system profiles that can "
"be\n"
"     subscribed to your account.\n"
"     "
msgstr ""

#: ../common/rhnException.py:116
msgid ""
"\n"
"     Invalid architecture.\n"
"\n"
"     The architecture of the package is not supported by\n"
"     "
msgstr ""

#: ../common/rhnException.py:121
msgid "Invalid RPM header"
msgstr ""

#: ../common/rhnException.py:122
msgid ""
"\n"
"    This system is already registered as a Salt Minion. If you want to "
"register it as a traditional client\n"
"    please delete it first via the web UI or API and then register it using "
"the traditional tools.\n"
"    "
msgstr ""

#. For the uploading tools
#: ../common/rhnException.py:127
msgid "Invalid information uploaded to the server"
msgstr ""

#: ../common/rhnException.py:128
msgid "Error uploading network interfaces configuration."
msgstr ""

#: ../common/rhnException.py:129
msgid ""
"\n"
"     Package Upload Failed due to uniqueness constraint violation.\n"
"     Make sure the package does not have any duplicate dependencies or\n"
"     does not already exists on the server\n"
"     "
msgstr ""

#: ../common/rhnException.py:134
msgid ""
"\n"
"     The --force rhnpush option is disabled on this server.\n"
"     Please contact your SUSE Manager administrator for more help.\n"
"     "
msgstr ""

#. 60-70: token errors
#: ../common/rhnException.py:140
msgid ""
"\n"
"     The activation token specified could not be found on the server.\n"
"     Please retry with a valid key.\n"
"     "
msgstr ""

#: ../common/rhnException.py:144
msgid "Too many systems registered using this registration token"
msgstr ""

#: ../common/rhnException.py:145
msgid "Token contains invalid, obsoleted or insufficient settings"
msgstr ""

#: ../common/rhnException.py:146
msgid "Conflicting activation tokens"
msgstr ""

#. 70-80: channel subscription errors
#: ../common/rhnException.py:149
msgid ""
"\n"
"     No matching base channel found for your system.\n"
"     "
msgstr ""

#: ../common/rhnException.py:152
msgid ""
"\n"
"     You do not have subscription permission to the designated channel.\n"
"     Please refer to your organization's channel or organization\n"
"     administrators for further details.\n"
"     "
msgstr ""

#: ../common/rhnException.py:157
msgid "You can not unsubscribe from base channel."
msgstr ""

#: ../common/rhnException.py:158
msgid "SUSE Manager or Proxy channel can not be subscribed."
msgstr ""

#. 80-90: server group errors
#: ../common/rhnException.py:161
msgid "There was an error while trying to join the system to its groups"
msgstr ""

#. 90-100: entitlement errors
#: ../common/rhnException.py:164
msgid "Unable to entitle system"
msgstr ""

#. 100-109: e-mail and uuid related faults
#: ../common/rhnException.py:167
msgid "Maximum e-mail length violation."
msgstr ""

#: ../common/rhnException.py:168
msgid "This system has been previously registered."
msgstr ""

#: ../common/rhnException.py:169
msgid "Invalid username"
msgstr ""

#. 140-159 applet errors
#: ../common/rhnException.py:172
msgid "Unable to look up server"
msgstr ""

#. 160-179: OSAD errors
#: ../common/rhnException.py:175
msgid "Required argument is missing"
msgstr ""

#. 600-699: RHEL5+ EN errors
#: ../common/rhnException.py:178
msgid "No entitlement information tied to hardware"
msgstr ""

#: ../common/rhnException.py:179
msgid "Installation number is not entitling"
msgstr ""

#. 700-799: Additional user input verification errors.
#: ../common/rhnException.py:182
msgid "Maximum username length violation"
msgstr ""

#: ../common/rhnException.py:183
msgid "Maximum password length violation"
msgstr ""

#: ../common/rhnException.py:184
msgid "This user has read only API access. Action denied."
msgstr ""

#: ../common/rhnException.py:186
msgid "System Name cannot be less than 1 character"
msgstr ""

#. 1000-1999: Proxy specific errors:
#. issued by a Proxy to the client
#: ../common/rhnException.py:190
msgid "SUSE Manager Proxy error."
msgstr ""

#: ../common/rhnException.py:191
msgid "SUSE Manager Proxy unable to login."
msgstr ""

#. issued by a SUSE Manager Server/Satellite to the proxy
#: ../common/rhnException.py:193
msgid ""
"\n"
"     SUSE Manager Proxy system ID does not match a Spacewalk Proxy Server\n"
"     in the database.\n"
"     "
msgstr ""

#: ../common/rhnException.py:197
msgid "SUSE Manager Proxy session token is invalid."
msgstr ""

#: ../common/rhnException.py:198
msgid "SUSE Manager Proxy session token has expired."
msgstr ""

#. 2000-2999: Red Hat Satellite specific errors:
#: ../common/rhnException.py:202
msgid ""
"\n"
"      user creation is not allowed via mgr_register;\n"
"     please contact your sysadmin to have your account created.\n"
"     "
msgstr ""

#: ../common/rhnException.py:206
msgid ""
"\n"
"     This SUSE Manager server is not allowed to use Inter Server Sync on "
"this server\n"
"     "
msgstr ""

#: ../common/rhnException.py:209
msgid ""
"\n"
"     Inter Server Sync is disabled on this SUSE Manager Server.\n"
"     "
msgstr ""

#. 3000-3999: XML dumper errors:
#: ../common/rhnException.py:214
msgid "Invalid datatype passed"
msgstr ""

#: ../common/rhnException.py:215
msgid "Unable to retrieve channel"
msgstr ""

#: ../common/rhnException.py:216
msgid "Unable to retrieve package"
msgstr ""

#: ../common/rhnException.py:217
msgid "Unable to retrieve erratum"
msgstr ""

#: ../common/rhnException.py:218
msgid "File is missing"
msgstr ""

#: ../common/rhnException.py:219
msgid "Function retrieval error"
msgstr ""

#: ../common/rhnException.py:220
msgid "Function execution error"
msgstr ""

#: ../common/rhnException.py:221
msgid "Missing version string"
msgstr ""

#: ../common/rhnException.py:222
msgid "Invalid version string"
msgstr ""

#: ../common/rhnException.py:223
msgid "Mismatching versions"
msgstr ""

#: ../common/rhnException.py:224
msgid "Invalid channel version"
msgstr ""

#: ../common/rhnException.py:225
msgid "No comps file for channel"
msgstr ""

#: ../common/rhnException.py:226
msgid "Unable to retrieve comps file"
msgstr ""

#. 4000 - 4999: config management errors
#: ../common/rhnException.py:229
msgid "Configuration action missing"
msgstr ""

#: ../common/rhnException.py:230
msgid "File too large"
msgstr ""

#: ../common/rhnException.py:231
msgid "File contains binary data"
msgstr ""

#: ../common/rhnException.py:232
msgid "Configuration channel is not empty"
msgstr ""

#: ../common/rhnException.py:233
msgid "Permission error"
msgstr ""

#: ../common/rhnException.py:234
msgid "Content missing for configuration file"
msgstr ""

#: ../common/rhnException.py:235
msgid "Template delimiters not specified"
msgstr ""

#: ../common/rhnException.py:236
msgid "Configuration channel does not exist"
msgstr ""

#: ../common/rhnException.py:237
msgid "Configuration channel already exists"
msgstr ""

#: ../common/rhnException.py:238
msgid "File missing from configuration channel"
msgstr ""

#: ../common/rhnException.py:239
msgid "Different revision of this file is uploaded"
msgstr ""

#: ../common/rhnException.py:240
msgid "File already uploaded to configuration channel"
msgstr ""

#: ../common/rhnException.py:241
msgid "File size exceeds remaining quota space"
msgstr ""

#: ../common/rhnException.py:242
msgid "Full path of file must be specified"
msgstr ""

#: ../common/rhnException.py:243
msgid "Invalid revision number"
msgstr ""

#: ../common/rhnException.py:244
msgid "Cannot compare files of different file type"
msgstr ""

#. 5000 - 5999: client content uploading errors
#. 5000 - 5099: crash reporting errors
#: ../common/rhnException.py:248
msgid "Crash information is invalid or incomplete"
msgstr ""

#: ../common/rhnException.py:249
msgid "Crash file information is invalid or incomplete"
msgstr ""

#: ../common/rhnException.py:250
msgid "Error composing crash directory path"
msgstr ""

#: ../common/rhnException.py:251
msgid "Error composing crash file path"
msgstr ""

#: ../common/rhnException.py:252 ../common/rhnException.py:259
msgid "Invalid content encoding"
msgstr ""

#: ../common/rhnException.py:253
msgid "Invalid crash name"
msgstr ""

#: ../common/rhnException.py:254
msgid "Crash reporting is disabled for this organization"
msgstr ""

#. 5100 - 5199: scap results reporting error
#: ../common/rhnException.py:256
msgid "SCAP results file transfer is invalid or incomplete"
msgstr ""

#: ../common/rhnException.py:257
msgid "Error composing directory path for detailed SCAP results"
msgstr ""

#: ../common/rhnException.py:258
msgid "Error composing file path for detailed SCAP results"
msgstr ""

#: ../common/rhnException.py:306
msgid ""
"\n"
"     An error has occurred while processing your request. If this problem\n"
"     persists please enter a bug report at scc.suse.com.\n"
"     If you choose to submit the bug report, please be sure to include\n"
"     details of what you were trying to do when this error occurred and\n"
"     details on how to reproduce this problem.\n"
msgstr ""

#: ../common/rhnException.py:358
#, python-format
msgid ""
"Error Message:\n"
"    %s\n"
msgstr ""

#: ../common/rhnException.py:360
#, python-format
msgid "Error Class Code: %s\n"
msgstr ""

#: ../common/rhnException.py:363
#, python-format
msgid "Error Class Info: %s\n"
msgstr ""

#: ../common/rhnException.py:365
#, python-format
msgid "Explanation: %s"
msgstr ""

#: ../common/rhnTB.py:205
#, python-format
msgid "ERROR: %s %s: %s"
msgstr ""

#: ../common/rhnTB.py:207
#, python-format
msgid "TRACEBACK: %s"
msgstr ""

#: ../satellite_tools/disk_dumper/iss.py:1294
#: ../satellite_tools/disk_dumper/iss.py:1298
#, python-format
msgid "format of %s should be at least YYYYMMDD.\n"
msgstr ""

#: ../satellite_tools/messages.py:26
#, python-format
msgid ""
"\n"
"ERROR: executing step %s. Error is:\n"
"%s\n"
msgstr ""

#: ../satellite_tools/messages.py:31
#, python-format
msgid ""
"\n"
"ERROR: there was a problem accessing the channel data from your temporary\n"
"       repository. Did you migrate all of the data from the channel ISOs\n"
"       do this directory? If so, please recheck the channels ISOs, ensure\n"
"       that you have them all, and then iteratively remount and repopulate\n"
"       the temporary repository (%s).\n"
msgstr ""

#: ../satellite_tools/messages.py:39
#, python-format
msgid ""
"\n"
"ERROR: there was a problem synchronizing the information.\n"
"       Error message: %s\n"
msgstr ""

#: ../satellite_tools/messages.py:44
#, python-format
msgid ""
"\n"
"ERROR: There was a problem communicating with the ISS Master.\n"
"       Depending on the specific error details, please review your "
"configuration,\n"
"       basic network connectivity, and/or name resolution, and try again.\n"
"       Error message: %s\n"
msgstr ""

#: ../satellite_tools/messages.py:51
#, python-format
msgid ""
"\n"
"ERROR: There was a problem communicating with the ISS Master.\n"
"       If the master satellite is older than v5.3, it does not have ISS "
"capability.\n"
"       Otherwise, depending on the specific error details, please review "
"your\n"
"       configuration, basic network connectivity, and/or name resolution, "
"and try again.\n"
"       Error message: %s\n"
msgstr ""

#: ../satellite_tools/messages.py:59
#, python-format
msgid ""
"\n"
"ERROR: a child-channel cannot be synced without its parent being synced as\n"
"       well. A parent needs to be either (a) previously synced or (b) "
"synced\n"
"       in tandem with the desired child-channel. Missing parents for this\n"
"       transaction:\n"
"       %s\n"
msgstr ""

#: ../satellite_tools/messages.py:67
#, python-format
msgid ""
"\n"
"ERROR: you are not entitled to sync a channel in this set of channels.\n"
"Please contact your SUSE Manager contact\n"
"%s"
msgstr ""

#: ../satellite_tools/messages.py:72
#, python-format
msgid "  ERROR: not enough free space (%s KB) on device."
msgstr ""

#: ../satellite_tools/messages.py:74
#, python-format
msgid "    %3d/%s Fetch successful: %s (%s bytes)"
msgstr ""

#: ../satellite_tools/messages.py:75
#, python-format
msgid "    Extinct package:  %s"
msgstr ""

#: ../satellite_tools/messages.py:76
#, python-format
msgid "   Total size: %s"
msgstr ""

#: ../satellite_tools/messages.py:77
#, python-format
msgid "      Downloaded %s of %s. Estimated remaining time: %s"
msgstr ""

#: ../satellite_tools/messages.py:78
#, python-format
msgid "    Fetch unsuccessful: %s"
msgstr ""

#: ../satellite_tools/messages.py:79
#, python-format
msgid "   RPM fetch summary: %s"
msgstr ""

#: ../satellite_tools/messages.py:80
#, python-format
msgid "       success: %d"
msgstr ""

#: ../satellite_tools/messages.py:81
#, python-format
msgid "       failed:  %d"
msgstr ""

#: ../satellite_tools/messages.py:82
#, python-format
msgid "       extinct: %d"
msgstr ""

#: ../satellite_tools/messages.py:84
#, python-format
msgid "   Retrieving / parsing *relevant* package metadata: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:85
#, python-format
msgid "   Retrieving / parsing errata data: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:86
#, python-format
msgid "   Retrieving / parsing kickstart data: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:87
#, python-format
msgid "   Retrieving / parsing kickstart tree files: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:88
#, python-format
msgid "   Importing *relevant* package metadata: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:89
msgid "   * WARNING: this may be a slow process."
msgstr ""

#: ../satellite_tools/messages.py:90
msgid "Linking packages to channels"
msgstr ""

#: ../satellite_tools/messages.py:91
#, python-format
msgid "   Importing *relevant* errata: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:92
msgid "   No new kickstartable tree to import"
msgstr ""

#: ../satellite_tools/messages.py:93
#, python-format
msgid "Importing kickstartable trees (%d)"
msgstr ""

#: ../satellite_tools/messages.py:94
#, python-format
msgid "Imported kickstartable trees (%d)"
msgstr ""

#: ../satellite_tools/reposync.py:111 ../satellite_tools/satsync.py:439
msgid "+++ sending log as an email +++"
msgstr ""

#: ../satellite_tools/reposync.py:114
#, python-format
msgid "%s sync. report from %s"
msgstr ""

#: ../satellite_tools/reposync.py:124 ../satellite_tools/satsync.py:449
msgid "+++ email requested, but there is nothing to send +++"
msgstr ""

#: ../satellite_tools/rhn_satellite_activate.py:198
#, python-format
msgid ""
"\"%s\" (specified in commandline)\n"
"could not be opened and read:\n"
"%s"
msgstr ""

#: ../satellite_tools/rhn_satellite_activate.py:205
#, python-format
msgid ""
"\"%s\" could not be opened\n"
"and/or written to:\n"
"%s"
msgstr ""

#: ../satellite_tools/satsync.py:258
#, python-format
msgid "No handler for step %s"
msgstr ""

#. Try one more time - this time it should be faster since
#. everything should be cached
#: ../satellite_tools/satsync.py:270
msgid "Environment changed, trying again..."
msgstr ""

#: ../satellite_tools/satsync.py:277
msgid "ERROR: Encountered IntegrityError: \n"
msgstr ""

#: ../satellite_tools/satsync.py:285
msgid "Repeated failures"
msgstr ""

#: ../satellite_tools/satsync.py:290
#, python-format
msgid ""
"    Import complete:\n"
"        Begin time: %s\n"
"        End time:   %s\n"
"        Elapsed:    %s\n"
"          "
msgstr ""

#: ../satellite_tools/satsync.py:311
msgid "hours"
msgstr ""

#: ../satellite_tools/satsync.py:311
msgid "minutes"
msgstr ""

#: ../satellite_tools/satsync.py:311
msgid "seconds"
msgstr ""

#: ../satellite_tools/satsync.py:357
msgid ""
"ERROR: The dump is missing package data, use --no-rpms to skip this step or "
"fix the content to include package data."
msgstr ""

#. the orgs() method doesn't exist; that's fine we just
#. won't sync the orgs
#: ../satellite_tools/satsync.py:404
msgid "The SUSE Manager master does not support syncing orgs data."
msgstr ""

#: ../satellite_tools/satsync.py:404
msgid "Skipping..."
msgstr ""

#: ../satellite_tools/satsync.py:442
#, python-format
msgid "SUSE Manager Inter Server sync. report from %s"
msgstr ""

#: ../satellite_tools/satsync.py:521
msgid " - file-system synchronization"
msgstr ""

#: ../satellite_tools/satsync.py:533 ../satellite_tools/satsync.py:541
msgid " - live synchronization"
msgstr ""

#: ../satellite_tools/satsync.py:534
#, python-brace-format
msgid ""
"ERROR: Live content synchronizing with RHN Classic Hosted is no longer "
"supported.\n"
"Please use the cdn-sync command instead unless you are attempting to sync "
"from another {PRODUCT_NAME} via Inter-Server-Sync (ISS), or from local "
"content on disk via Channel Dump ISOs."
msgstr ""

#: ../satellite_tools/satsync.py:542
#, python-format
msgid "   url: %s"
msgstr ""

#: ../satellite_tools/satsync.py:543
#, python-format
msgid "   debug/output level: %s"
msgstr ""

#: ../satellite_tools/satsync.py:553
msgid "ERROR: this server must be registered with SUSE Manager."
msgstr ""

#: ../satellite_tools/satsync.py:575
#, python-format
msgid "Retrieving / parsing %s data"
msgstr ""

#: ../satellite_tools/satsync.py:585 ../satellite_tools/satsync.py:600
msgid "*** SYSTEM INTERRUPT CALLED ***"
msgstr ""

#: ../satellite_tools/satsync.py:593
msgid "ERROR: fatal parser exception occurred "
msgstr ""

#: ../satellite_tools/satsync.py:594
#, python-format
msgid "(line: %s, col: %s msg: %s)"
msgstr ""

#: ../satellite_tools/satsync.py:598
#, python-format
msgid "ERROR: parser exception occurred: %s"
msgstr ""

#: ../satellite_tools/satsync.py:603
msgid "ERROR: exception (during parse) occurred: "
msgstr ""

#: ../satellite_tools/satsync.py:604
#, python-format
msgid ""
"   Encountered some errors with %s data (see logs (%s) for more information)"
msgstr ""

#: ../satellite_tools/satsync.py:606
#, python-format
msgid "   Encountered some errors with %s data:"
msgstr ""

#: ../satellite_tools/satsync.py:607
#, python-format
msgid "   ------- %s PARSE/IMPORT ERROR -------"
msgstr ""

#: ../satellite_tools/satsync.py:609
msgid "   ---------------------------------------"
msgstr ""

#: ../satellite_tools/satsync.py:612
#, python-format
msgid "%s data complete"
msgstr ""

#: ../satellite_tools/satsync.py:665
msgid "Retrieving / parsing channel data"
msgstr ""

#: ../satellite_tools/satsync.py:718
msgid "Channel data complete"
msgstr ""

#: ../satellite_tools/satsync.py:736
#, python-format
msgid "%10s import from %s"
msgstr ""

#: ../satellite_tools/satsync.py:739
#, python-format
msgid "%10s import from %s - %s"
msgstr ""

#: ../satellite_tools/satsync.py:743
#, python-format
msgid "%10s"
msgstr ""

#: ../satellite_tools/satsync.py:750
msgid "p"
msgstr ""

#: ../satellite_tools/satsync.py:752
msgid "."
msgstr ""

#: ../satellite_tools/satsync.py:758
msgid "   p = previously imported/synced channel"
msgstr ""

#: ../satellite_tools/satsync.py:759
msgid "   . = channel not yet imported/synced"
msgstr ""

#: ../satellite_tools/satsync.py:765
msgid "   e = channel no longer supported (end-of-service)"
msgstr ""

#: ../satellite_tools/satsync.py:767
msgid "   ? = channel label invalid --- typo?"
msgstr ""

#: ../satellite_tools/satsync.py:771
#, python-format
msgid "   %s:"
msgstr ""

#: ../satellite_tools/satsync.py:772
#, python-format
msgid "      %s %-40s %4s %s"
msgstr ""

#: ../satellite_tools/satsync.py:773
msgid "base-channels"
msgstr ""

#: ../satellite_tools/satsync.py:786 ../satellite_tools/satsync.py:1603
msgid "NONE RELEVANT"
msgstr ""

#: ../satellite_tools/satsync.py:808
msgid "end-of-service"
msgstr ""

#: ../satellite_tools/satsync.py:809
msgid "e"
msgstr ""

#: ../satellite_tools/satsync.py:815
msgid "   typos:"
msgstr ""

#: ../satellite_tools/satsync.py:816
msgid "?"
msgstr ""

#: ../satellite_tools/satsync.py:831
#, python-format
msgid "XXX: imported channels: %s"
msgstr ""

#: ../satellite_tools/satsync.py:832
#, python-format
msgid "XXX:   cached channels: %s"
msgstr ""

#: ../satellite_tools/satsync.py:837
msgid "XXX: list channels called"
msgstr ""

#: ../satellite_tools/satsync.py:855
msgid "ERROR: these channels either do not exist or are not available:"
msgstr ""

#: ../satellite_tools/satsync.py:859
#, python-format
msgid "       (to see a list of channel labels: %s --list-channels)"
msgstr ""

#: ../satellite_tools/satsync.py:904
#, python-format
msgid "   Retrieving / parsing short package metadata: %s (%s)"
msgstr ""

#: ../satellite_tools/satsync.py:965
#, python-format
msgid "Diffing package metadata (what's missing locally?): %s"
msgstr ""

#: ../satellite_tools/satsync.py:971 ../satellite_tools/satsync.py:1254
msgid "Diffing:    "
msgstr ""

#: ../satellite_tools/satsync.py:988
msgid "ERROR: incremental dump skipped"
msgstr ""

#: ../satellite_tools/satsync.py:1079
msgid "Downloading rpm packages"
msgstr ""

#: ../satellite_tools/satsync.py:1084
#, python-format
msgid "   Fetching any missing RPMs: %s (%s)"
msgstr ""

#: ../satellite_tools/satsync.py:1085 ../satellite_tools/satsync.py:1153
msgid "NONE MISSING"
msgstr ""

#: ../satellite_tools/satsync.py:1094
msgid "Processing rpm packages complete"
msgstr ""

#: ../satellite_tools/satsync.py:1121
msgid "Downloading package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1146
msgid "Downloading srpm packages"
msgstr ""

#: ../satellite_tools/satsync.py:1152
#, python-format
msgid "   Fetching any missing SRPMs: %s (%s)"
msgstr ""

#: ../satellite_tools/satsync.py:1249
#, python-format
msgid "Diffing source package metadata (what's missing locally?): %s"
msgstr ""

#: ../satellite_tools/satsync.py:1260
msgid "Downloading source package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1338 ../satellite_tools/satsync.py:2027
#, python-format
msgid "Unable to save file %s: %s"
msgstr ""

#. for
#. Retried a number of times and it still failed; log the
#. file as being failed and move on
#: ../satellite_tools/satsync.py:1345
#, python-format
msgid "Failed to fetch file %s"
msgstr ""

#: ../satellite_tools/satsync.py:1350
msgid "Downloading kickstartable trees metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1365
msgid "Downloading kickstartable trees files"
msgstr ""

#: ../satellite_tools/satsync.py:1504
#, python-format
msgid "Grabbing all patches for channel %s"
msgstr ""

#: ../satellite_tools/satsync.py:1554
msgid "Downloading patch data"
msgstr ""

#: ../satellite_tools/satsync.py:1556
msgid "Forcing download of all patch data for requested channels."
msgstr ""

#: ../satellite_tools/satsync.py:1571
msgid "Downloading patch data complete"
msgstr ""

#: ../satellite_tools/satsync.py:1576 ../satellite_tools/satsync.py:1597
msgid "Downloading:"
msgstr ""

#: ../satellite_tools/satsync.py:1579
msgid " - complete"
msgstr ""

#: ../satellite_tools/satsync.py:1624
msgid "Importing source package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1627
msgid "Importing package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1635
msgid "Importing:  "
msgstr ""

#. not in the cache
#: ../satellite_tools/satsync.py:1703
msgid ""
"Package Not Found in Cache, Clear the Cache "
"to                                  Regenerate it."
msgstr ""

#: ../satellite_tools/satsync.py:1709
msgid "Importing channel patches"
msgstr ""

#: ../satellite_tools/satsync.py:1714
#, python-format
msgid "Importing %s patches for channel %s."
msgstr ""

#. Incomplete configuration
#: ../satellite_tools/satsync.py:2113
msgid "ERROR: server.mount_point not set in the configuration file"
msgstr ""

#: ../satellite_tools/satsync.py:2117
#, python-format
msgid "ERROR: server.mount_point %s do not exist"
msgstr ""

#: ../satellite_tools/satsync.py:2122
#, python-format
msgid "ERROR: path under server.mount_point (%s)  do not exist"
msgstr ""

#: ../satellite_tools/satsync.py:2199
#, python-format
msgid "Commandline: %s"
msgstr ""

#: ../satellite_tools/satsync.py:2202
#, python-format
msgid ""
"DEBUG ONLY: max. batch-size for XML/database-import processing (1..%s).\"man "
"satellite-sync\" for more information."
msgstr ""

#: ../satellite_tools/satsync.py:2205
msgid "alternative SSL CA Cert (fullpath to cert file)"
msgstr ""

#: ../satellite_tools/satsync.py:2207
msgid "process data for this channel only"
msgstr ""

#: ../satellite_tools/satsync.py:2209
msgid ""
"disk dump will be considered to be a full export; see \"man satellite-sync\" "
"for more information."
msgstr ""

#: ../satellite_tools/satsync.py:2212
msgid "existing custom channels will also be synced (unless -c is used)"
msgstr ""

#: ../satellite_tools/satsync.py:2214
#, python-format
msgid ""
"override debug level set in /etc/rhn/rhn.conf (which is currently set at %s)."
msgstr ""

#: ../satellite_tools/satsync.py:2216
#, python-format
msgid "requested version of XML dump (default: %s)"
msgstr ""

#: ../satellite_tools/satsync.py:2218
msgid "e-mail a report of what was synced/imported"
msgstr ""

#: ../satellite_tools/satsync.py:2220
msgid "forcibly process all (not a diff of) patch metadata"
msgstr ""

#: ../satellite_tools/satsync.py:2222
msgid "Do not use an http proxy under any circumstances."
msgstr ""

#: ../satellite_tools/satsync.py:2224
msgid "alternative http proxy (hostname:port)"
msgstr ""

#: ../satellite_tools/satsync.py:2226
msgid "alternative http proxy username"
msgstr ""

#: ../satellite_tools/satsync.py:2228
msgid "alternative http proxy password"
msgstr ""

#: ../satellite_tools/satsync.py:2230
msgid "parent SUSE Manager to import content from"
msgstr ""

#: ../satellite_tools/satsync.py:2232
msgid "list all available channels and exit"
msgstr ""

#: ../satellite_tools/satsync.py:2234
msgid "help on all error codes mgr-inter-sync returns"
msgstr ""

#: ../satellite_tools/satsync.py:2236
msgid "source mount point for import - disk update only"
msgstr ""

#: ../satellite_tools/satsync.py:2238
msgid "do not process patch data"
msgstr ""

#: ../satellite_tools/satsync.py:2240
msgid "do not process kickstart data (provisioning only)"
msgstr ""

#: ../satellite_tools/satsync.py:2242
msgid "do not process full package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:2244
msgid "do not download, or process any RPMs"
msgstr ""

#: ../satellite_tools/satsync.py:2246
msgid "turn off SSL (not recommended)"
msgstr ""

#: ../satellite_tools/satsync.py:2248
msgid "org to which the sync imports data. defaults to the admin account"
msgstr ""

#: ../satellite_tools/satsync.py:2250
msgid "print the configuration and exit"
msgstr ""

#: ../satellite_tools/satsync.py:2252
msgid "alternative server with which to connect (hostname)"
msgstr ""

#: ../satellite_tools/satsync.py:2254
msgid "synchronize to this step (man satellite-sync for more info)"
msgstr ""

#: ../satellite_tools/satsync.py:2256
msgid "write complete data to tempfile before streaming to remainder of app"
msgstr ""

#: ../satellite_tools/satsync.py:2258
msgid "DEBUG ONLY: alternative path to digital system id"
msgstr ""

#: ../satellite_tools/satsync.py:2260
msgid "alternative email address(es) for sync output (--email option)"
msgstr ""

#: ../satellite_tools/satsync.py:2262
msgid "do not remove rpms when importing from local dump"
msgstr ""

#: ../satellite_tools/satsync.py:2264
msgid ""
"the fully qualified domain name of the master Satellite. Valid with --mount-"
"point only. Required if you want to import org data and channel permissions."
msgstr ""

#: ../satellite_tools/satsync.py:2274
#, python-format
msgid "ERROR: these arguments make no sense in this context (try --help): %s"
msgstr ""

#. An SQL error is fatal... crash and burn
#: ../satellite_tools/satsync.py:2286
#, python-format
msgid "ERROR: Can't connect to the database: %s"
msgstr ""

#: ../satellite_tools/satsync.py:2287
msgid "ERROR: Check if your database is running."
msgstr ""

#: ../satellite_tools/satsync.py:2322
#, python-format
msgid "ERROR: --debug-level takes an in integer value within the range %s."
msgstr ""

#: ../satellite_tools/satsync.py:2324
msgid "  0  - little logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2325
msgid "  1  - minimal logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2326
msgid "  2  - normal level of logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2327
msgid "  3  - lots of logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2328
msgid "  4+ - excessive logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2341
msgid "ERROR: The --master option is only valid with the --mount-point option"
msgstr ""

#: ../satellite_tools/satsync.py:2351
#, python-format
msgid "ERROR: Unable to lookup Org Id %s"
msgstr ""

#: ../satellite_tools/satsync.py:2360
msgid ""
"WARNING: --list-channels option overrides any --step option. --step ignored."
msgstr ""

#: ../satellite_tools/satsync.py:2375
#, python-format
msgid ""
"ERROR: '%s' is not a valid step. See 'man mgr-inter-sync' for more detail."
msgstr ""

#: ../satellite_tools/satsync.py:2407
msgid ""
"ERROR: No channels currently imported; try mgr-inter-sync --list-channels; "
"then mgr-inter-sync -c chn0 -c chn1..."
msgstr ""

#. int(None) --> TypeError
#. int('a')  --> ValueError
#: ../satellite_tools/satsync.py:2457 ../satellite_tools/satsync.py:2461
msgid "ERROR: --batch-size must have a value within the range: 1..50"
msgstr ""

#: ../satellite_tools/satsync.py:2469
#, python-format
msgid "ERROR: no such directory %s"
msgstr ""

#: ../satellite_tools/satsync.py:2474
msgid "Error Codes: Returned codes means:"
msgstr ""

#: ../satellite_tools/satsync.py:2475
msgid " -1  - Could not lock file or KeyboardInterrupt or SystemExit"
msgstr ""

#: ../satellite_tools/satsync.py:2476
msgid "  0  - User interrupted or intentional exit"
msgstr ""

#: ../satellite_tools/satsync.py:2477
msgid "  1  - attempting to run more than one instance of mgr-inter-sync."
msgstr ""

#: ../satellite_tools/satsync.py:2478
msgid "  2  - Unable to find synchronization tools."
msgstr ""

#: ../satellite_tools/satsync.py:2479
msgid "  3  - a general socket exception occurred"
msgstr ""

#: ../satellite_tools/satsync.py:2480
msgid "  4  - an SSL error occurred. Recheck your SSL settings."
msgstr ""

#: ../satellite_tools/satsync.py:2481
msgid "  5  - ISS error"
msgstr ""

#: ../satellite_tools/satsync.py:2482
msgid "  6  - unhandled exception occurred"
msgstr ""

#: ../satellite_tools/satsync.py:2483
msgid "  7  - unknown sync error"
msgstr ""

#: ../satellite_tools/satsync.py:2484
msgid "  8  - ERROR: must be root to execute"
msgstr ""

#: ../satellite_tools/satsync.py:2485
msgid "  9  - rpclib fault during synchronization init"
msgstr ""

#: ../satellite_tools/satsync.py:2486
msgid "  10 - synchronization init error"
msgstr ""

#: ../satellite_tools/satsync.py:2487
msgid "  11 - Error parsing XML stream"
msgstr ""

#: ../satellite_tools/satsync.py:2488
msgid "  12 - Channel do not exist"
msgstr ""

#: ../satellite_tools/satsync.py:2489
msgid "  13 - SQL error during importing package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:2490
msgid "  14 - SQL error during linking channel packages"
msgstr ""

#: ../satellite_tools/satsync.py:2491
msgid "  15 - SQL error during xml processing"
msgstr ""

#: ../satellite_tools/satsync.py:2492
msgid "  16 - server.mount_point not set in the configuration file"
msgstr ""

#: ../satellite_tools/satsync.py:2493
msgid ""
"  17 - SQL error during retrieving the channels already imported in the SUSE "
"Manager database"
msgstr ""

#: ../satellite_tools/satsync.py:2494
msgid "  18 - Wrong db connection string in rhn.conf"
msgstr ""

#: ../satellite_tools/satsync.py:2495
msgid "  19 - Bad arguments"
msgstr ""

#: ../satellite_tools/satsync.py:2496
msgid "  20 - Could not connect to db."
msgstr ""

#: ../satellite_tools/satsync.py:2497
msgid "  21 - Bad debug level"
msgstr ""

#: ../satellite_tools/satsync.py:2498
msgid "  22 - Not valid step"
msgstr ""

#: ../satellite_tools/satsync.py:2499
msgid "  24 - no such file"
msgstr ""

#: ../satellite_tools/satsync.py:2500
msgid "  25 - no such directory"
msgstr ""

#: ../satellite_tools/satsync.py:2501
msgid "  26 - mount_point does not exist"
msgstr ""

#: ../satellite_tools/satsync.py:2502
msgid "  27 - No such org"
msgstr ""

#: ../satellite_tools/satsync.py:2503
msgid "  28 - error: --master is only valid with --mount-point"
msgstr ""

#: ../satellite_tools/satsync.py:2510
#, python-format
msgid "ERROR: unknown dump version, try one of %s"
msgstr ""
07070100000073000081B40000000000000000000000016290A0C10000B907000000000000000000000000000000000000001B00000000spacewalk-backend/po/hu.po    # SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
#
# Translators:
# Arpad Biro <biro_arpad@yahoo.com>, 2004, 2005.
# Tamas Szanto <tszanto@mol.hu>, 2004.
# Zoltan HoppÃ¡r <hopparz@gmail.com>, 2012.
# Jiri Dostal <jdostal@redhat.com>, 2018. #zanata
msgid ""
msgstr ""
"Project-Id-Version: Spacewalk\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-10-16 13:34+0200\n"
"PO-Revision-Date: 2018-03-16 10:54+0000\n"
"Last-Translator: Copied by Zanata <copied-by-zanata@zanata.org>\n"
"Language-Team: Hungarian <trans-hu@lists.fedoraproject.org>\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: Zanata 4.6.2\n"

#: ../server/apacheAuth.py:66
#, python-format
msgid "incomplete proxy authentication token: %s"
msgstr ""

#: ../server/apacheAuth.py:84
#, python-format
msgid "Sent proxy signature %s does not match ours %s."
msgstr ""

#: ../server/apacheAuth.py:119
msgid "declined proxy authentication"
msgstr ""

#: ../server/apacheRequest.py:59
#, python-format
msgid "Invalid request received (%s)."
msgstr ""

#: ../server/apacheRequest.py:120
#, python-format
msgid ""
"IMPORTANT MESSAGE FOLLOWS:\n"
"%s"
msgstr ""

#: ../server/apacheRequest.py:149
#, python-format
msgid ""
"While running '%s': caught\n"
"%s : %s\n"
msgstr ""

#: ../server/apacheRequest.py:606
#, python-format
msgid "Invalid URI %s"
msgstr ""

#: ../server/configFilesHandler.py:129 ../server/handlers/app/packages.py:192
#: ../server/handlers/xmlrpc/registration.py:215
#: ../server/handlers/xmlrpc/registration.py:1168
#: ../server/handlers/xmlrpc/registration.py:1307
#, python-format
msgid ""
"\n"
"                   %s Account has been deactivated on this server.\n"
"                   Please contact your Org administrator for more help."
msgstr ""

#: ../server/handlers/applet/applet.py:78
#, python-brace-format
msgid "Your system was not found in the {PRODUCT_NAME} database"
msgstr ""

#: ../server/handlers/sat/auth.py:45
msgid "ISS is disabled on this server."
msgstr ""

#: ../server/handlers/sat/auth.py:50
#, python-format
msgid "Server \"%s\" is not enabled for ISS."
msgstr ""

#: ../server/handlers/xmlrpc/errata.py:64
#, python-format
msgid "Expected a package name, not: %s"
msgstr "CsomagnÃ©vre szÃ¡mÃ­tott a rendszer, nem erre: %s "

#: ../server/handlers/xmlrpc/errata.py:115
#, python-format
msgid "Expected a package, not: %s"
msgstr "Csomagra szÃ¡mÃ­tott a rendszer, nem erre: %s"

#: ../server/handlers/xmlrpc/proxy.py:65
#, python-format
msgid "SUSE Manager Proxy service not enabled for server profile: \"%s\""
msgstr ""

#: ../server/handlers/xmlrpc/proxy.py:85
msgid "Invalid session key"
msgstr "Ã‰rvÃ©nytelen folyamat azonosÃ­tÃ³"

#: ../server/handlers/xmlrpc/proxy.py:93
msgid "This server ID no longer exists"
msgstr "Ez a kiszolgÃ¡lÃ³ ID nem lÃ©tezik tÃ¶bbÃ©"

#: ../server/handlers/xmlrpc/queue.py:433
#, python-format
msgid "Invalid action value type %s (%s)"
msgstr ""

#: ../server/handlers/xmlrpc/queue.py:464
#, python-format
msgid "Action %s does not belong to server %s"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:194
msgid "Required data missing"
msgstr "SzÃ¼ksÃ©ges adat hiÃ¡nyzik"

#: ../server/handlers/xmlrpc/registration.py:198
msgid "Required members missing"
msgstr "SzÃ¼ksÃ©ges tagok hiÃ¡nyoznak"

#: ../server/handlers/xmlrpc/registration.py:207
msgid "Attempt to register a system to an invalid username"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:839
msgid "Invalid system release version requested"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1063
msgid ""
"Unable to find a valid network interface, both ipaddr and ip6addr not found."
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1115
#, python-brace-format
msgid "{PRODUCT_NAME} Welcome Message"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1125
#, fuzzy
msgid "Privacy Statement"
msgstr "Red Hat Network Privacy Statement"

#: ../server/handlers/xmlrpc/registration.py:1146
msgid "Expected a dictionary as a product argument"
msgstr "SzÃ³tÃ¡rra szÃ¡mÃ­tott mint termÃ©kparamÃ©terre"

#: ../server/handlers/xmlrpc/registration.py:1374
#, python-format
msgid "Invalid value '%s' for %s (%s)"
msgstr "Ã‰rvÃ©nytelen Ã©rtÃ©k '%s' for %s (%s)"

#: ../server/handlers/xmlrpc/scap.py:104
msgid "Invalid system_id/action_id pair."
msgstr ""

#: ../server/handlers/xmlrpc/up2date.py:233
#, python-format
msgid "Invalid value %s (%s)"
msgstr "Ã‰rvÃ©nytelen Ã©rtÃ©k %s (%s)"

#: ../server/importlib/userAuth.py:98
msgid "You are not authorized to manage packages in the null org"
msgstr ""

#: ../server/importlib/userAuth.py:103
#, python-format
msgid "You are not allowed to manage packages in the %s org"
msgstr ""

#: ../server/importlib/userAuth.py:121
msgid "You are not allowed to perform administrative tasks"
msgstr ""

#: ../server/importlib/userAuth.py:144
#, python-format
msgid ""
"You are not allowed to manage channel %s, or that channel does not exist"
msgstr ""

#: ../server/importlib/userAuth.py:204
#, python-format
msgid ""
"\n"
"               %s Account has been deactivated on this server.\n"
"               Please contact your Org administrator for more help."
msgstr ""

#: ../server/rhnChannel.py:1992
#, python-format
msgid ""
"Your account does not have access to any channels matching "
"(release='%(release)s', arch='%(arch)s')%(www_activation)s"
msgstr ""

#: ../server/rhnChannel.py:2002
msgid ""
"\n"
"If you have a registration number, please register with it first at http://"
"www.redhat.com/apps/activate/ and then try again.\n"
"\n"
msgstr ""

#: ../server/rhnChannel.py:2012
#, python-format
msgid "Insufficient subscription permissions for release (%s, %s"
msgstr ""

#. Various messages that can be reused
#.
#. bretm 02/07/2007 -- when we have better old-client documentation, probably
#. will be safe to get rid of all this crap
#: ../server/rhnChannel.py:2276 ../server/rhnChannel.py:2287
#: ../server/rhnChannel.py:2302
msgid "System Registered but Inactive"
msgstr ""

#: ../server/rhnChannel.py:2277
#, python-format
msgid ""
"\n"
"Invalid Architecture and OS release combination (%s, %s).\n"
"Your system has been registered, but will not receive updates\n"
"because it is not subscribed to a channel. If you have not yet\n"
"activated your product for service, please visit our website at:\n"
"\n"
"     http://www.redhat.com/apps/activate/\n"
"\n"
"...to activate your product."
msgstr ""

#: ../server/rhnChannel.py:2288
#, python-format
msgid ""
"\n"
"Invalid Architecture and OS release combination (%s, %s).\n"
"Your system has been registered, but will not receive updates\n"
"because it could not be subscribed to a base channel.\n"
"Please contact your organization administrator for assistance.\n"
msgstr ""

#: ../server/rhnChannel.py:2295
#, python-format
msgid ""
"\n"
"  This system has been successfully registered, but is not yet entitled\n"
"  to service.  To entitle this system to service, login to the web site at:\n"
"\n"
"  %(entitlement_url)s\n"
msgstr ""

#: ../server/rhnChannel.py:2303
#, python-format
msgid ""
"\n"
"  This system has been successfully registered, but no service entitlements\n"
"  were available.  To entitle this system to service, login to the web site "
"at:\n"
"\n"
"  %(entitlement_url)s\n"
msgstr ""

#: ../server/rhnHandler.py:62
msgid "Please run rhn_register as root on this client"
msgstr ""

#: ../server/rhnHandler.py:75
#, python-format
msgid "Service not enabled for system profile: \"%s\""
msgstr ""

#: ../server/rhnPackage.py:49 ../server/rhnPackage.py:87
#: ../server/rhnPackage.py:107 ../server/rhnPackage.py:158
#, python-format
msgid "Invalid RPM package %s requested"
msgstr ""

#: ../server/rhnPackage.py:112
msgid "Package not found"
msgstr ""

#: ../server/rhnServer/server_class.py:97
#, python-format
msgid "Architecture `%s' is not supported"
msgstr ""

#: ../server/rhnServer/server_token.py:78
#, python-format
msgid "Token `%s' has more than one base channel assigned"
msgstr ""

#: ../server/rhnServer/server_token.py:80
msgid "Conflicting base channels"
msgstr ""

#: ../server/rhnServer/server_token.py:190
#, python-format
msgid "Failed to add server to group %s"
msgstr ""

#: ../server/rhnServer/server_token.py:503
#, python-format
msgid "Maximum usage count of %s reached"
msgstr ""

#: ../server/rhnServer/server_token.py:744
msgid ""
"Stacking of re-registration tokens with different base entitlements is not "
"supported"
msgstr ""

#: ../server/rhnServer/server_token.py:811
#, python-format
msgid "Could not find token '%s'"
msgstr ""

#. Cannot use activation keys from different orgs
#: ../server/rhnServer/server_token.py:843
msgid "Tokens from mismatching orgs"
msgstr ""

#. Two tokens with different kickstart sessions
#: ../server/rhnServer/server_token.py:853
msgid "Kickstart session mismatch"
msgstr ""

#: ../server/rhnServer/server_token.py:877
msgid "Stacking of re-registration tokens is not supported"
msgstr ""

#: ../server/rhnUser.py:289 ../server/rhnUser.py:292
msgid "Invalid username/password combination"
msgstr ""

#. nope, not reserved either
#: ../server/rhnUser.py:467
#, python-format
msgid "Username `%s' has not been reserved"
msgstr ""

#. New accounts have to specify an e-mail address
#: ../server/rhnUser.py:473
msgid "E-mail address not specified"
msgstr ""

#: ../server/rhnUser.py:509
#, python-format
msgid "username should be at least %d characters"
msgstr ""

#: ../server/rhnUser.py:512
#, python-format
msgid "username should be less than %d characters"
msgstr ""

#: ../server/rhnUser.py:523
#, python-format
msgid "username = `%s', invalid character `%s'"
msgstr ""

#: ../server/rhnUser.py:542
#, python-format
msgid "Please limit your e-mail address to %s chars"
msgstr ""

#: ../server/rhnUser.py:623
#, python-format
msgid "password must be at least %d characters"
msgstr ""

#: ../server/rhnUser.py:626
#, python-format
msgid "Password must be shorter than %d characters"
msgstr ""

#: ../server/rhnUser.py:644
#, python-format
msgid "password contains character `%s'"
msgstr ""

#: ../server/rhnUser.py:651
#, python-format
msgid "username should be at least %d characters long"
msgstr ""

#: ../server/rhnUser.py:662
#, python-format
msgid "Cannot register usernames ending with %s"
msgstr ""

#. 0-999: Red Hat client/client-like interaction errors:
#: ../common/rhnException.py:53
msgid "This does not appear to be a valid username."
msgstr ""

#: ../common/rhnException.py:54
msgid "Invalid username and password combination."
msgstr ""

#: ../common/rhnException.py:55
msgid "This login is already taken, or the password is incorrect."
msgstr ""

#: ../common/rhnException.py:56
msgid "Permission denied."
msgstr ""

#: ../common/rhnException.py:57
msgid "Object not found."
msgstr ""

#: ../common/rhnException.py:58
msgid "Invalid System Digital ID."
msgstr ""

#: ../common/rhnException.py:59
msgid "Invalid System Credentials."
msgstr ""

#: ../common/rhnException.py:60
msgid "Could not retrieve user data from database."
msgstr ""

#: ../common/rhnException.py:61
msgid "Valid username required."
msgstr ""

#: ../common/rhnException.py:62
msgid "Valid password required."
msgstr ""

#: ../common/rhnException.py:63
msgid "Minimum username length violation."
msgstr ""

#: ../common/rhnException.py:64
msgid "Minimum password length violation."
msgstr ""

#: ../common/rhnException.py:65
msgid "The username contains invalid characters."
msgstr ""

#: ../common/rhnException.py:66
msgid "File not found."
msgstr ""

#: ../common/rhnException.py:67
msgid "Architecture and OS version combination is not supported."
msgstr ""

#: ../common/rhnException.py:68
msgid "Could not retrieve system data from database."
msgstr ""

#: ../common/rhnException.py:69
msgid "Invalid arguments passed to function."
msgstr ""

#: ../common/rhnException.py:70
msgid "Unable to retrieve requested entry."
msgstr ""

#: ../common/rhnException.py:71
msgid "Could not update database entry."
msgstr ""

#: ../common/rhnException.py:72
msgid "Unsupported server architecture."
msgstr ""

#: ../common/rhnException.py:73
#, python-format
msgid ""
"\n"
"     The anonymous server functionality is no longer available.\n"
"\n"
"     Please re-register this system by running mgr_register as root.\n"
"     Please visit https://%(hostname)s/rhn/systems/SystemEntitlements.do\n"
"     or login at https://%(hostname)s, and from the \"Overview\" tab,\n"
"     select \"Subscription Management\" to enable the service for this "
"system.\n"
"     "
msgstr ""

#: ../common/rhnException.py:81
msgid "Record not available in the database."
msgstr ""

#: ../common/rhnException.py:82
msgid "Invalid value for entry."
msgstr ""

#: ../common/rhnException.py:83
#, python-format
msgid ""
"\n"
"     This system does not have a valid entitlement for SUSE Manager.\n"
"     Please visit https://%(hostname)s/rhn/systems/SystemEntitlements.do\n"
"     or login at https://%(hostname)s, and from the \"Overview\" tab,\n"
"     select \"Subscription Management\" to enable the service for this "
"system.\n"
"     "
msgstr ""

#: ../common/rhnException.py:89
msgid "Channel error"
msgstr ""

#: ../common/rhnException.py:90
msgid "Client session token is invalid."
msgstr ""

#: ../common/rhnException.py:91
msgid "Client session token has expired."
msgstr ""

#: ../common/rhnException.py:92
msgid "You are not authorized to retrieve the requested object."
msgstr ""

#: ../common/rhnException.py:93
msgid "Invalid action"
msgstr ""

#: ../common/rhnException.py:94
msgid "You are not allowed to perform administrative tasks on this system."
msgstr ""

#: ../common/rhnException.py:96
msgid "The system is already subscribed to the specified channel."
msgstr ""

#: ../common/rhnException.py:97
msgid "The system is not currently subscribed to the specified channel."
msgstr ""

#: ../common/rhnException.py:98
msgid "The specified channel does not exist."
msgstr ""

#: ../common/rhnException.py:99
msgid "Invalid channel version."
msgstr ""

#: ../common/rhnException.py:100
msgid ""
"\n"
"     User group membership limits exceeded.\n"
"\n"
"     The current settings for your account do not allow you to add another\n"
"     user account. Please check with the organization administrator for "
"your\n"
"     account if the maximum number of users allowed to subscribe to server "
"needs\n"
"     to be changed.\n"
"     "
msgstr ""

#: ../common/rhnException.py:108
msgid ""
"\n"
"     System group membership limits exceeded.\n"
"\n"
"     The current settings for your account do not allow you to add another\n"
"     system profile. Please check with the organization administrator for "
"your\n"
"     account for modifying the maximum number of system profiles that can "
"be\n"
"     subscribed to your account.\n"
"     "
msgstr ""

#: ../common/rhnException.py:116
msgid ""
"\n"
"     Invalid architecture.\n"
"\n"
"     The architecture of the package is not supported by\n"
"     "
msgstr ""

#: ../common/rhnException.py:121
msgid "Invalid RPM header"
msgstr ""

#: ../common/rhnException.py:122
msgid ""
"\n"
"    This system is already registered as a Salt Minion. If you want to "
"register it as a traditional client\n"
"    please delete it first via the web UI or API and then register it using "
"the traditional tools.\n"
"    "
msgstr ""

#. For the uploading tools
#: ../common/rhnException.py:127
msgid "Invalid information uploaded to the server"
msgstr ""

#: ../common/rhnException.py:128
msgid "Error uploading network interfaces configuration."
msgstr ""

#: ../common/rhnException.py:129
msgid ""
"\n"
"     Package Upload Failed due to uniqueness constraint violation.\n"
"     Make sure the package does not have any duplicate dependencies or\n"
"     does not already exists on the server\n"
"     "
msgstr ""

#: ../common/rhnException.py:134
msgid ""
"\n"
"     The --force rhnpush option is disabled on this server.\n"
"     Please contact your SUSE Manager administrator for more help.\n"
"     "
msgstr ""

#. 60-70: token errors
#: ../common/rhnException.py:140
msgid ""
"\n"
"     The activation token specified could not be found on the server.\n"
"     Please retry with a valid key.\n"
"     "
msgstr ""

#: ../common/rhnException.py:144
msgid "Too many systems registered using this registration token"
msgstr ""

#: ../common/rhnException.py:145
msgid "Token contains invalid, obsoleted or insufficient settings"
msgstr ""

#: ../common/rhnException.py:146
msgid "Conflicting activation tokens"
msgstr ""

#. 70-80: channel subscription errors
#: ../common/rhnException.py:149
msgid ""
"\n"
"     No matching base channel found for your system.\n"
"     "
msgstr ""

#: ../common/rhnException.py:152
msgid ""
"\n"
"     You do not have subscription permission to the designated channel.\n"
"     Please refer to your organization's channel or organization\n"
"     administrators for further details.\n"
"     "
msgstr ""

#: ../common/rhnException.py:157
msgid "You can not unsubscribe from base channel."
msgstr ""

#: ../common/rhnException.py:158
msgid "SUSE Manager or Proxy channel can not be subscribed."
msgstr ""

#. 80-90: server group errors
#: ../common/rhnException.py:161
msgid "There was an error while trying to join the system to its groups"
msgstr ""

#. 90-100: entitlement errors
#: ../common/rhnException.py:164
msgid "Unable to entitle system"
msgstr ""

#. 100-109: e-mail and uuid related faults
#: ../common/rhnException.py:167
msgid "Maximum e-mail length violation."
msgstr ""

#: ../common/rhnException.py:168
msgid "This system has been previously registered."
msgstr ""

#: ../common/rhnException.py:169
msgid "Invalid username"
msgstr ""

#. 140-159 applet errors
#: ../common/rhnException.py:172
msgid "Unable to look up server"
msgstr ""

#. 160-179: OSAD errors
#: ../common/rhnException.py:175
msgid "Required argument is missing"
msgstr ""

#. 600-699: RHEL5+ EN errors
#: ../common/rhnException.py:178
msgid "No entitlement information tied to hardware"
msgstr ""

#: ../common/rhnException.py:179
msgid "Installation number is not entitling"
msgstr ""

#. 700-799: Additional user input verification errors.
#: ../common/rhnException.py:182
msgid "Maximum username length violation"
msgstr ""

#: ../common/rhnException.py:183
msgid "Maximum password length violation"
msgstr ""

#: ../common/rhnException.py:184
msgid "This user has read only API access. Action denied."
msgstr ""

#: ../common/rhnException.py:186
msgid "System Name cannot be less than 1 character"
msgstr ""

#. 1000-1999: Proxy specific errors:
#. issued by a Proxy to the client
#: ../common/rhnException.py:190
msgid "SUSE Manager Proxy error."
msgstr ""

#: ../common/rhnException.py:191
msgid "SUSE Manager Proxy unable to login."
msgstr ""

#. issued by a SUSE Manager Server/Satellite to the proxy
#: ../common/rhnException.py:193
msgid ""
"\n"
"     SUSE Manager Proxy system ID does not match a Spacewalk Proxy Server\n"
"     in the database.\n"
"     "
msgstr ""

#: ../common/rhnException.py:197
msgid "SUSE Manager Proxy session token is invalid."
msgstr ""

#: ../common/rhnException.py:198
msgid "SUSE Manager Proxy session token has expired."
msgstr ""

#. 2000-2999: Red Hat Satellite specific errors:
#: ../common/rhnException.py:202
msgid ""
"\n"
"      user creation is not allowed via mgr_register;\n"
"     please contact your sysadmin to have your account created.\n"
"     "
msgstr ""

#: ../common/rhnException.py:206
msgid ""
"\n"
"     This SUSE Manager server is not allowed to use Inter Server Sync on "
"this server\n"
"     "
msgstr ""

#: ../common/rhnException.py:209
msgid ""
"\n"
"     Inter Server Sync is disabled on this SUSE Manager Server.\n"
"     "
msgstr ""

#. 3000-3999: XML dumper errors:
#: ../common/rhnException.py:214
msgid "Invalid datatype passed"
msgstr ""

#: ../common/rhnException.py:215
msgid "Unable to retrieve channel"
msgstr ""

#: ../common/rhnException.py:216
msgid "Unable to retrieve package"
msgstr ""

#: ../common/rhnException.py:217
msgid "Unable to retrieve erratum"
msgstr ""

#: ../common/rhnException.py:218
msgid "File is missing"
msgstr ""

#: ../common/rhnException.py:219
msgid "Function retrieval error"
msgstr ""

#: ../common/rhnException.py:220
msgid "Function execution error"
msgstr ""

#: ../common/rhnException.py:221
msgid "Missing version string"
msgstr ""

#: ../common/rhnException.py:222
msgid "Invalid version string"
msgstr ""

#: ../common/rhnException.py:223
msgid "Mismatching versions"
msgstr ""

#: ../common/rhnException.py:224
msgid "Invalid channel version"
msgstr ""

#: ../common/rhnException.py:225
msgid "No comps file for channel"
msgstr ""

#: ../common/rhnException.py:226
msgid "Unable to retrieve comps file"
msgstr ""

#. 4000 - 4999: config management errors
#: ../common/rhnException.py:229
msgid "Configuration action missing"
msgstr ""

#: ../common/rhnException.py:230
msgid "File too large"
msgstr ""

#: ../common/rhnException.py:231
msgid "File contains binary data"
msgstr ""

#: ../common/rhnException.py:232
msgid "Configuration channel is not empty"
msgstr ""

#: ../common/rhnException.py:233
msgid "Permission error"
msgstr ""

#: ../common/rhnException.py:234
msgid "Content missing for configuration file"
msgstr ""

#: ../common/rhnException.py:235
msgid "Template delimiters not specified"
msgstr ""

#: ../common/rhnException.py:236
msgid "Configuration channel does not exist"
msgstr ""

#: ../common/rhnException.py:237
msgid "Configuration channel already exists"
msgstr ""

#: ../common/rhnException.py:238
msgid "File missing from configuration channel"
msgstr ""

#: ../common/rhnException.py:239
msgid "Different revision of this file is uploaded"
msgstr ""

#: ../common/rhnException.py:240
msgid "File already uploaded to configuration channel"
msgstr ""

#: ../common/rhnException.py:241
msgid "File size exceeds remaining quota space"
msgstr ""

#: ../common/rhnException.py:242
msgid "Full path of file must be specified"
msgstr ""

#: ../common/rhnException.py:243
msgid "Invalid revision number"
msgstr ""

#: ../common/rhnException.py:244
msgid "Cannot compare files of different file type"
msgstr ""

#. 5000 - 5999: client content uploading errors
#. 5000 - 5099: crash reporting errors
#: ../common/rhnException.py:248
msgid "Crash information is invalid or incomplete"
msgstr ""

#: ../common/rhnException.py:249
msgid "Crash file information is invalid or incomplete"
msgstr ""

#: ../common/rhnException.py:250
msgid "Error composing crash directory path"
msgstr ""

#: ../common/rhnException.py:251
msgid "Error composing crash file path"
msgstr ""

#: ../common/rhnException.py:252 ../common/rhnException.py:259
msgid "Invalid content encoding"
msgstr ""

#: ../common/rhnException.py:253
msgid "Invalid crash name"
msgstr ""

#: ../common/rhnException.py:254
msgid "Crash reporting is disabled for this organization"
msgstr ""

#. 5100 - 5199: scap results reporting error
#: ../common/rhnException.py:256
msgid "SCAP results file transfer is invalid or incomplete"
msgstr ""

#: ../common/rhnException.py:257
msgid "Error composing directory path for detailed SCAP results"
msgstr ""

#: ../common/rhnException.py:258
msgid "Error composing file path for detailed SCAP results"
msgstr ""

#: ../common/rhnException.py:306
msgid ""
"\n"
"     An error has occurred while processing your request. If this problem\n"
"     persists please enter a bug report at scc.suse.com.\n"
"     If you choose to submit the bug report, please be sure to include\n"
"     details of what you were trying to do when this error occurred and\n"
"     details on how to reproduce this problem.\n"
msgstr ""

#: ../common/rhnException.py:358
#, python-format
msgid ""
"Error Message:\n"
"    %s\n"
msgstr ""

#: ../common/rhnException.py:360
#, python-format
msgid "Error Class Code: %s\n"
msgstr ""

#: ../common/rhnException.py:363
#, python-format
msgid "Error Class Info: %s\n"
msgstr ""

#: ../common/rhnException.py:365
#, python-format
msgid "Explanation: %s"
msgstr ""

#: ../common/rhnTB.py:205
#, python-format
msgid "ERROR: %s %s: %s"
msgstr ""

#: ../common/rhnTB.py:207
#, python-format
msgid "TRACEBACK: %s"
msgstr ""

#: ../satellite_tools/disk_dumper/iss.py:1294
#: ../satellite_tools/disk_dumper/iss.py:1298
#, python-format
msgid "format of %s should be at least YYYYMMDD.\n"
msgstr ""

#: ../satellite_tools/messages.py:26
#, python-format
msgid ""
"\n"
"ERROR: executing step %s. Error is:\n"
"%s\n"
msgstr ""

#: ../satellite_tools/messages.py:31
#, python-format
msgid ""
"\n"
"ERROR: there was a problem accessing the channel data from your temporary\n"
"       repository. Did you migrate all of the data from the channel ISOs\n"
"       do this directory? If so, please recheck the channels ISOs, ensure\n"
"       that you have them all, and then iteratively remount and repopulate\n"
"       the temporary repository (%s).\n"
msgstr ""

#: ../satellite_tools/messages.py:39
#, python-format
msgid ""
"\n"
"ERROR: there was a problem synchronizing the information.\n"
"       Error message: %s\n"
msgstr ""

#: ../satellite_tools/messages.py:44
#, python-format
msgid ""
"\n"
"ERROR: There was a problem communicating with the ISS Master.\n"
"       Depending on the specific error details, please review your "
"configuration,\n"
"       basic network connectivity, and/or name resolution, and try again.\n"
"       Error message: %s\n"
msgstr ""

#: ../satellite_tools/messages.py:51
#, python-format
msgid ""
"\n"
"ERROR: There was a problem communicating with the ISS Master.\n"
"       If the master satellite is older than v5.3, it does not have ISS "
"capability.\n"
"       Otherwise, depending on the specific error details, please review "
"your\n"
"       configuration, basic network connectivity, and/or name resolution, "
"and try again.\n"
"       Error message: %s\n"
msgstr ""

#: ../satellite_tools/messages.py:59
#, python-format
msgid ""
"\n"
"ERROR: a child-channel cannot be synced without its parent being synced as\n"
"       well. A parent needs to be either (a) previously synced or (b) "
"synced\n"
"       in tandem with the desired child-channel. Missing parents for this\n"
"       transaction:\n"
"       %s\n"
msgstr ""

#: ../satellite_tools/messages.py:67
#, python-format
msgid ""
"\n"
"ERROR: you are not entitled to sync a channel in this set of channels.\n"
"Please contact your SUSE Manager contact\n"
"%s"
msgstr ""

#: ../satellite_tools/messages.py:72
#, python-format
msgid "  ERROR: not enough free space (%s KB) on device."
msgstr ""

#: ../satellite_tools/messages.py:74
#, python-format
msgid "    %3d/%s Fetch successful: %s (%s bytes)"
msgstr ""

#: ../satellite_tools/messages.py:75
#, fuzzy, python-format
msgid "    Extinct package:  %s"
msgstr "Csomagra szÃ¡mÃ­tott a rendszer, nem erre: %s"

#: ../satellite_tools/messages.py:76
#, python-format
msgid "   Total size: %s"
msgstr ""

#: ../satellite_tools/messages.py:77
#, python-format
msgid "      Downloaded %s of %s. Estimated remaining time: %s"
msgstr ""

#: ../satellite_tools/messages.py:78
#, python-format
msgid "    Fetch unsuccessful: %s"
msgstr ""

#: ../satellite_tools/messages.py:79
#, python-format
msgid "   RPM fetch summary: %s"
msgstr ""

#: ../satellite_tools/messages.py:80
#, python-format
msgid "       success: %d"
msgstr ""

#: ../satellite_tools/messages.py:81
#, python-format
msgid "       failed:  %d"
msgstr ""

#: ../satellite_tools/messages.py:82
#, python-format
msgid "       extinct: %d"
msgstr ""

#: ../satellite_tools/messages.py:84
#, python-format
msgid "   Retrieving / parsing *relevant* package metadata: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:85
#, python-format
msgid "   Retrieving / parsing errata data: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:86
#, python-format
msgid "   Retrieving / parsing kickstart data: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:87
#, python-format
msgid "   Retrieving / parsing kickstart tree files: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:88
#, python-format
msgid "   Importing *relevant* package metadata: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:89
msgid "   * WARNING: this may be a slow process."
msgstr ""

#: ../satellite_tools/messages.py:90
msgid "Linking packages to channels"
msgstr ""

#: ../satellite_tools/messages.py:91
#, python-format
msgid "   Importing *relevant* errata: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:92
msgid "   No new kickstartable tree to import"
msgstr ""

#: ../satellite_tools/messages.py:93
#, python-format
msgid "Importing kickstartable trees (%d)"
msgstr ""

#: ../satellite_tools/messages.py:94
#, python-format
msgid "Imported kickstartable trees (%d)"
msgstr ""

#: ../satellite_tools/reposync.py:111 ../satellite_tools/satsync.py:439
msgid "+++ sending log as an email +++"
msgstr ""

#: ../satellite_tools/reposync.py:114
#, python-format
msgid "%s sync. report from %s"
msgstr ""

#: ../satellite_tools/reposync.py:124 ../satellite_tools/satsync.py:449
msgid "+++ email requested, but there is nothing to send +++"
msgstr ""

#: ../satellite_tools/rhn_satellite_activate.py:198
#, python-format
msgid ""
"\"%s\" (specified in commandline)\n"
"could not be opened and read:\n"
"%s"
msgstr ""

#: ../satellite_tools/rhn_satellite_activate.py:205
#, python-format
msgid ""
"\"%s\" could not be opened\n"
"and/or written to:\n"
"%s"
msgstr ""

#: ../satellite_tools/satsync.py:258
#, python-format
msgid "No handler for step %s"
msgstr ""

#. Try one more time - this time it should be faster since
#. everything should be cached
#: ../satellite_tools/satsync.py:270
msgid "Environment changed, trying again..."
msgstr ""

#: ../satellite_tools/satsync.py:277
msgid "ERROR: Encountered IntegrityError: \n"
msgstr ""

#: ../satellite_tools/satsync.py:285
msgid "Repeated failures"
msgstr ""

#: ../satellite_tools/satsync.py:290
#, python-format
msgid ""
"    Import complete:\n"
"        Begin time: %s\n"
"        End time:   %s\n"
"        Elapsed:    %s\n"
"          "
msgstr ""

#: ../satellite_tools/satsync.py:311
msgid "hours"
msgstr ""

#: ../satellite_tools/satsync.py:311
msgid "minutes"
msgstr ""

#: ../satellite_tools/satsync.py:311
msgid "seconds"
msgstr ""

#: ../satellite_tools/satsync.py:357
msgid ""
"ERROR: The dump is missing package data, use --no-rpms to skip this step or "
"fix the content to include package data."
msgstr ""

#. the orgs() method doesn't exist; that's fine we just
#. won't sync the orgs
#: ../satellite_tools/satsync.py:404
msgid "The SUSE Manager master does not support syncing orgs data."
msgstr ""

#: ../satellite_tools/satsync.py:404
msgid "Skipping..."
msgstr ""

#: ../satellite_tools/satsync.py:442
#, python-format
msgid "SUSE Manager Inter Server sync. report from %s"
msgstr ""

#: ../satellite_tools/satsync.py:521
msgid " - file-system synchronization"
msgstr ""

#: ../satellite_tools/satsync.py:533 ../satellite_tools/satsync.py:541
msgid " - live synchronization"
msgstr ""

#: ../satellite_tools/satsync.py:534
#, python-brace-format
msgid ""
"ERROR: Live content synchronizing with RHN Classic Hosted is no longer "
"supported.\n"
"Please use the cdn-sync command instead unless you are attempting to sync "
"from another {PRODUCT_NAME} via Inter-Server-Sync (ISS), or from local "
"content on disk via Channel Dump ISOs."
msgstr ""

#: ../satellite_tools/satsync.py:542
#, python-format
msgid "   url: %s"
msgstr ""

#: ../satellite_tools/satsync.py:543
#, python-format
msgid "   debug/output level: %s"
msgstr ""

#: ../satellite_tools/satsync.py:553
msgid "ERROR: this server must be registered with SUSE Manager."
msgstr ""

#: ../satellite_tools/satsync.py:575
#, python-format
msgid "Retrieving / parsing %s data"
msgstr ""

#: ../satellite_tools/satsync.py:585 ../satellite_tools/satsync.py:600
msgid "*** SYSTEM INTERRUPT CALLED ***"
msgstr ""

#: ../satellite_tools/satsync.py:593
msgid "ERROR: fatal parser exception occurred "
msgstr ""

#: ../satellite_tools/satsync.py:594
#, python-format
msgid "(line: %s, col: %s msg: %s)"
msgstr ""

#: ../satellite_tools/satsync.py:598
#, python-format
msgid "ERROR: parser exception occurred: %s"
msgstr ""

#: ../satellite_tools/satsync.py:603
msgid "ERROR: exception (during parse) occurred: "
msgstr ""

#: ../satellite_tools/satsync.py:604
#, python-format
msgid ""
"   Encountered some errors with %s data (see logs (%s) for more information)"
msgstr ""

#: ../satellite_tools/satsync.py:606
#, python-format
msgid "   Encountered some errors with %s data:"
msgstr ""

#: ../satellite_tools/satsync.py:607
#, python-format
msgid "   ------- %s PARSE/IMPORT ERROR -------"
msgstr ""

#: ../satellite_tools/satsync.py:609
msgid "   ---------------------------------------"
msgstr ""

#: ../satellite_tools/satsync.py:612
#, python-format
msgid "%s data complete"
msgstr ""

#: ../satellite_tools/satsync.py:665
msgid "Retrieving / parsing channel data"
msgstr ""

#: ../satellite_tools/satsync.py:718
msgid "Channel data complete"
msgstr ""

#: ../satellite_tools/satsync.py:736
#, python-format
msgid "%10s import from %s"
msgstr ""

#: ../satellite_tools/satsync.py:739
#, python-format
msgid "%10s import from %s - %s"
msgstr ""

#: ../satellite_tools/satsync.py:743
#, python-format
msgid "%10s"
msgstr ""

#: ../satellite_tools/satsync.py:750
msgid "p"
msgstr ""

#: ../satellite_tools/satsync.py:752
msgid "."
msgstr ""

#: ../satellite_tools/satsync.py:758
msgid "   p = previously imported/synced channel"
msgstr ""

#: ../satellite_tools/satsync.py:759
msgid "   . = channel not yet imported/synced"
msgstr ""

#: ../satellite_tools/satsync.py:765
msgid "   e = channel no longer supported (end-of-service)"
msgstr ""

#: ../satellite_tools/satsync.py:767
msgid "   ? = channel label invalid --- typo?"
msgstr ""

#: ../satellite_tools/satsync.py:771
#, python-format
msgid "   %s:"
msgstr ""

#: ../satellite_tools/satsync.py:772
#, python-format
msgid "      %s %-40s %4s %s"
msgstr ""

#: ../satellite_tools/satsync.py:773
msgid "base-channels"
msgstr ""

#: ../satellite_tools/satsync.py:786 ../satellite_tools/satsync.py:1603
msgid "NONE RELEVANT"
msgstr ""

#: ../satellite_tools/satsync.py:808
msgid "end-of-service"
msgstr ""

#: ../satellite_tools/satsync.py:809
msgid "e"
msgstr ""

#: ../satellite_tools/satsync.py:815
msgid "   typos:"
msgstr ""

#: ../satellite_tools/satsync.py:816
msgid "?"
msgstr ""

#: ../satellite_tools/satsync.py:831
#, python-format
msgid "XXX: imported channels: %s"
msgstr ""

#: ../satellite_tools/satsync.py:832
#, python-format
msgid "XXX:   cached channels: %s"
msgstr ""

#: ../satellite_tools/satsync.py:837
msgid "XXX: list channels called"
msgstr ""

#: ../satellite_tools/satsync.py:855
msgid "ERROR: these channels either do not exist or are not available:"
msgstr ""

#: ../satellite_tools/satsync.py:859
#, python-format
msgid "       (to see a list of channel labels: %s --list-channels)"
msgstr ""

#: ../satellite_tools/satsync.py:904
#, python-format
msgid "   Retrieving / parsing short package metadata: %s (%s)"
msgstr ""

#: ../satellite_tools/satsync.py:965
#, python-format
msgid "Diffing package metadata (what's missing locally?): %s"
msgstr ""

#: ../satellite_tools/satsync.py:971 ../satellite_tools/satsync.py:1254
msgid "Diffing:    "
msgstr ""

#: ../satellite_tools/satsync.py:988
msgid "ERROR: incremental dump skipped"
msgstr ""

#: ../satellite_tools/satsync.py:1079
msgid "Downloading rpm packages"
msgstr ""

#: ../satellite_tools/satsync.py:1084
#, python-format
msgid "   Fetching any missing RPMs: %s (%s)"
msgstr ""

#: ../satellite_tools/satsync.py:1085 ../satellite_tools/satsync.py:1153
msgid "NONE MISSING"
msgstr ""

#: ../satellite_tools/satsync.py:1094
msgid "Processing rpm packages complete"
msgstr ""

#: ../satellite_tools/satsync.py:1121
msgid "Downloading package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1146
msgid "Downloading srpm packages"
msgstr ""

#: ../satellite_tools/satsync.py:1152
#, python-format
msgid "   Fetching any missing SRPMs: %s (%s)"
msgstr ""

#: ../satellite_tools/satsync.py:1249
#, python-format
msgid "Diffing source package metadata (what's missing locally?): %s"
msgstr ""

#: ../satellite_tools/satsync.py:1260
msgid "Downloading source package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1338 ../satellite_tools/satsync.py:2027
#, python-format
msgid "Unable to save file %s: %s"
msgstr ""

#. for
#. Retried a number of times and it still failed; log the
#. file as being failed and move on
#: ../satellite_tools/satsync.py:1345
#, python-format
msgid "Failed to fetch file %s"
msgstr ""

#: ../satellite_tools/satsync.py:1350
msgid "Downloading kickstartable trees metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1365
msgid "Downloading kickstartable trees files"
msgstr ""

#: ../satellite_tools/satsync.py:1504
#, python-format
msgid "Grabbing all patches for channel %s"
msgstr ""

#: ../satellite_tools/satsync.py:1554
msgid "Downloading patch data"
msgstr ""

#: ../satellite_tools/satsync.py:1556
msgid "Forcing download of all patch data for requested channels."
msgstr ""

#: ../satellite_tools/satsync.py:1571
msgid "Downloading patch data complete"
msgstr ""

#: ../satellite_tools/satsync.py:1576 ../satellite_tools/satsync.py:1597
msgid "Downloading:"
msgstr ""

#: ../satellite_tools/satsync.py:1579
msgid " - complete"
msgstr ""

#: ../satellite_tools/satsync.py:1624
msgid "Importing source package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1627
msgid "Importing package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1635
msgid "Importing:  "
msgstr ""

#. not in the cache
#: ../satellite_tools/satsync.py:1703
msgid ""
"Package Not Found in Cache, Clear the Cache "
"to                                  Regenerate it."
msgstr ""

#: ../satellite_tools/satsync.py:1709
msgid "Importing channel patches"
msgstr ""

#: ../satellite_tools/satsync.py:1714
#, python-format
msgid "Importing %s patches for channel %s."
msgstr ""

#. Incomplete configuration
#: ../satellite_tools/satsync.py:2113
msgid "ERROR: server.mount_point not set in the configuration file"
msgstr ""

#: ../satellite_tools/satsync.py:2117
#, python-format
msgid "ERROR: server.mount_point %s do not exist"
msgstr ""

#: ../satellite_tools/satsync.py:2122
#, python-format
msgid "ERROR: path under server.mount_point (%s)  do not exist"
msgstr ""

#: ../satellite_tools/satsync.py:2199
#, python-format
msgid "Commandline: %s"
msgstr ""

#: ../satellite_tools/satsync.py:2202
#, python-format
msgid ""
"DEBUG ONLY: max. batch-size for XML/database-import processing (1..%s).\"man "
"satellite-sync\" for more information."
msgstr ""

#: ../satellite_tools/satsync.py:2205
msgid "alternative SSL CA Cert (fullpath to cert file)"
msgstr ""

#: ../satellite_tools/satsync.py:2207
msgid "process data for this channel only"
msgstr ""

#: ../satellite_tools/satsync.py:2209
msgid ""
"disk dump will be considered to be a full export; see \"man satellite-sync\" "
"for more information."
msgstr ""

#: ../satellite_tools/satsync.py:2212
msgid "existing custom channels will also be synced (unless -c is used)"
msgstr ""

#: ../satellite_tools/satsync.py:2214
#, python-format
msgid ""
"override debug level set in /etc/rhn/rhn.conf (which is currently set at %s)."
msgstr ""

#: ../satellite_tools/satsync.py:2216
#, python-format
msgid "requested version of XML dump (default: %s)"
msgstr ""

#: ../satellite_tools/satsync.py:2218
msgid "e-mail a report of what was synced/imported"
msgstr ""

#: ../satellite_tools/satsync.py:2220
msgid "forcibly process all (not a diff of) patch metadata"
msgstr ""

#: ../satellite_tools/satsync.py:2222
msgid "Do not use an http proxy under any circumstances."
msgstr ""

#: ../satellite_tools/satsync.py:2224
msgid "alternative http proxy (hostname:port)"
msgstr ""

#: ../satellite_tools/satsync.py:2226
msgid "alternative http proxy username"
msgstr ""

#: ../satellite_tools/satsync.py:2228
msgid "alternative http proxy password"
msgstr ""

#: ../satellite_tools/satsync.py:2230
msgid "parent SUSE Manager to import content from"
msgstr ""

#: ../satellite_tools/satsync.py:2232
msgid "list all available channels and exit"
msgstr ""

#: ../satellite_tools/satsync.py:2234
msgid "help on all error codes mgr-inter-sync returns"
msgstr ""

#: ../satellite_tools/satsync.py:2236
msgid "source mount point for import - disk update only"
msgstr ""

#: ../satellite_tools/satsync.py:2238
msgid "do not process patch data"
msgstr ""

#: ../satellite_tools/satsync.py:2240
msgid "do not process kickstart data (provisioning only)"
msgstr ""

#: ../satellite_tools/satsync.py:2242
msgid "do not process full package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:2244
msgid "do not download, or process any RPMs"
msgstr ""

#: ../satellite_tools/satsync.py:2246
msgid "turn off SSL (not recommended)"
msgstr ""

#: ../satellite_tools/satsync.py:2248
msgid "org to which the sync imports data. defaults to the admin account"
msgstr ""

#: ../satellite_tools/satsync.py:2250
msgid "print the configuration and exit"
msgstr ""

#: ../satellite_tools/satsync.py:2252
msgid "alternative server with which to connect (hostname)"
msgstr ""

#: ../satellite_tools/satsync.py:2254
msgid "synchronize to this step (man satellite-sync for more info)"
msgstr ""

#: ../satellite_tools/satsync.py:2256
msgid "write complete data to tempfile before streaming to remainder of app"
msgstr ""

#: ../satellite_tools/satsync.py:2258
msgid "DEBUG ONLY: alternative path to digital system id"
msgstr ""

#: ../satellite_tools/satsync.py:2260
msgid "alternative email address(es) for sync output (--email option)"
msgstr ""

#: ../satellite_tools/satsync.py:2262
msgid "do not remove rpms when importing from local dump"
msgstr ""

#: ../satellite_tools/satsync.py:2264
msgid ""
"the fully qualified domain name of the master Satellite. Valid with --mount-"
"point only. Required if you want to import org data and channel permissions."
msgstr ""

#: ../satellite_tools/satsync.py:2274
#, python-format
msgid "ERROR: these arguments make no sense in this context (try --help): %s"
msgstr ""

#. An SQL error is fatal... crash and burn
#: ../satellite_tools/satsync.py:2286
#, python-format
msgid "ERROR: Can't connect to the database: %s"
msgstr ""

#: ../satellite_tools/satsync.py:2287
msgid "ERROR: Check if your database is running."
msgstr ""

#: ../satellite_tools/satsync.py:2322
#, python-format
msgid "ERROR: --debug-level takes an in integer value within the range %s."
msgstr ""

#: ../satellite_tools/satsync.py:2324
msgid "  0  - little logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2325
msgid "  1  - minimal logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2326
msgid "  2  - normal level of logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2327
msgid "  3  - lots of logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2328
msgid "  4+ - excessive logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2341
msgid "ERROR: The --master option is only valid with the --mount-point option"
msgstr ""

#: ../satellite_tools/satsync.py:2351
#, python-format
msgid "ERROR: Unable to lookup Org Id %s"
msgstr ""

#: ../satellite_tools/satsync.py:2360
msgid ""
"WARNING: --list-channels option overrides any --step option. --step ignored."
msgstr ""

#: ../satellite_tools/satsync.py:2375
#, python-format
msgid ""
"ERROR: '%s' is not a valid step. See 'man mgr-inter-sync' for more detail."
msgstr ""

#: ../satellite_tools/satsync.py:2407
msgid ""
"ERROR: No channels currently imported; try mgr-inter-sync --list-channels; "
"then mgr-inter-sync -c chn0 -c chn1..."
msgstr ""

#. int(None) --> TypeError
#. int('a')  --> ValueError
#: ../satellite_tools/satsync.py:2457 ../satellite_tools/satsync.py:2461
msgid "ERROR: --batch-size must have a value within the range: 1..50"
msgstr ""

#: ../satellite_tools/satsync.py:2469
#, python-format
msgid "ERROR: no such directory %s"
msgstr ""

#: ../satellite_tools/satsync.py:2474
msgid "Error Codes: Returned codes means:"
msgstr ""

#: ../satellite_tools/satsync.py:2475
msgid " -1  - Could not lock file or KeyboardInterrupt or SystemExit"
msgstr ""

#: ../satellite_tools/satsync.py:2476
msgid "  0  - User interrupted or intentional exit"
msgstr ""

#: ../satellite_tools/satsync.py:2477
msgid "  1  - attempting to run more than one instance of mgr-inter-sync."
msgstr ""

#: ../satellite_tools/satsync.py:2478
msgid "  2  - Unable to find synchronization tools."
msgstr ""

#: ../satellite_tools/satsync.py:2479
msgid "  3  - a general socket exception occurred"
msgstr ""

#: ../satellite_tools/satsync.py:2480
msgid "  4  - an SSL error occurred. Recheck your SSL settings."
msgstr ""

#: ../satellite_tools/satsync.py:2481
msgid "  5  - ISS error"
msgstr ""

#: ../satellite_tools/satsync.py:2482
msgid "  6  - unhandled exception occurred"
msgstr ""

#: ../satellite_tools/satsync.py:2483
msgid "  7  - unknown sync error"
msgstr ""

#: ../satellite_tools/satsync.py:2484
msgid "  8  - ERROR: must be root to execute"
msgstr ""

#: ../satellite_tools/satsync.py:2485
msgid "  9  - rpclib fault during synchronization init"
msgstr ""

#: ../satellite_tools/satsync.py:2486
msgid "  10 - synchronization init error"
msgstr ""

#: ../satellite_tools/satsync.py:2487
msgid "  11 - Error parsing XML stream"
msgstr ""

#: ../satellite_tools/satsync.py:2488
msgid "  12 - Channel do not exist"
msgstr ""

#: ../satellite_tools/satsync.py:2489
msgid "  13 - SQL error during importing package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:2490
msgid "  14 - SQL error during linking channel packages"
msgstr ""

#: ../satellite_tools/satsync.py:2491
msgid "  15 - SQL error during xml processing"
msgstr ""

#: ../satellite_tools/satsync.py:2492
msgid "  16 - server.mount_point not set in the configuration file"
msgstr ""

#: ../satellite_tools/satsync.py:2493
msgid ""
"  17 - SQL error during retrieving the channels already imported in the SUSE "
"Manager database"
msgstr ""

#: ../satellite_tools/satsync.py:2494
msgid "  18 - Wrong db connection string in rhn.conf"
msgstr ""

#: ../satellite_tools/satsync.py:2495
msgid "  19 - Bad arguments"
msgstr ""

#: ../satellite_tools/satsync.py:2496
msgid "  20 - Could not connect to db."
msgstr ""

#: ../satellite_tools/satsync.py:2497
msgid "  21 - Bad debug level"
msgstr ""

#: ../satellite_tools/satsync.py:2498
msgid "  22 - Not valid step"
msgstr ""

#: ../satellite_tools/satsync.py:2499
msgid "  24 - no such file"
msgstr ""

#: ../satellite_tools/satsync.py:2500
msgid "  25 - no such directory"
msgstr ""

#: ../satellite_tools/satsync.py:2501
msgid "  26 - mount_point does not exist"
msgstr ""

#: ../satellite_tools/satsync.py:2502
msgid "  27 - No such org"
msgstr ""

#: ../satellite_tools/satsync.py:2503
msgid "  28 - error: --master is only valid with --mount-point"
msgstr ""

#: ../satellite_tools/satsync.py:2510
#, python-format
msgid "ERROR: unknown dump version, try one of %s"
msgstr ""

#, fuzzy
#~ msgid "Red Hat Satellite Privacy Statement"
#~ msgstr "Red Hat Network Privacy Statement"
 07070100000074000081B40000000000000000000000016290A0C10001141D000000000000000000000000000000000000001B00000000spacewalk-backend/po/id.po    # SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
#
# Translators:
msgid ""
msgstr ""
"Project-Id-Version: Spacewalk\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-10-16 13:34+0200\n"
"PO-Revision-Date: 2020-09-12 19:48+0000\n"
"Last-Translator: Kukuh Syafaat <syafaatkukuh@gmail.com>\n"
"Language-Team: Indonesian <https://l10n.opensuse.org/projects/uyuni/backend/"
"id/>\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=1; plural=0;\n"
"X-Generator: Weblate 3.6.1\n"

#: ../server/apacheAuth.py:66
#, fuzzy, python-format
msgid "incomplete proxy authentication token: %s"
msgstr "token otentikasi proksi tidak lengkap: %s"

#: ../server/apacheAuth.py:84
#, fuzzy, python-format
msgid "Sent proxy signature %s does not match ours %s."
msgstr "Tanda tangan proksi terkirim %s tidak cocok dengan %s kita."

#: ../server/apacheAuth.py:119
#, fuzzy
msgid "declined proxy authentication"
msgstr "otentikasi proxy yang ditolak"

#: ../server/apacheRequest.py:59
#, fuzzy, python-format
msgid "Invalid request received (%s)."
msgstr "Permintaan tidak valid diterima (%s)."

#: ../server/apacheRequest.py:120
#, fuzzy, python-format
msgid ""
"IMPORTANT MESSAGE FOLLOWS:\n"
"%s"
msgstr ""
"PESAN PENTING BERIKUT:\n"
"%s"

#: ../server/apacheRequest.py:149
#, fuzzy, python-format
msgid ""
"While running '%s': caught\n"
"%s : %s\n"
msgstr ""
"Saat menjalankan '%s': tertangkap\n"
"%s : %s (Dalam Bahasa Inggris)"

#: ../server/apacheRequest.py:606
#, fuzzy, python-format
msgid "Invalid URI %s"
msgstr "URI â€œ%sâ€ Tidak Sah"

#: ../server/configFilesHandler.py:129 ../server/handlers/app/packages.py:192
#: ../server/handlers/xmlrpc/registration.py:215
#: ../server/handlers/xmlrpc/registration.py:1168
#: ../server/handlers/xmlrpc/registration.py:1307
#, fuzzy, python-format
msgid ""
"\n"
"                   %s Account has been deactivated on this server.\n"
"                   Please contact your Org administrator for more help."
msgstr ""
"Akun %s telah dinonaktifkan pada server ini.\n"
"                   Silakan hubungi administrator Organisasi Anda untuk "
"bantuan lebih lanjut."

#: ../server/handlers/applet/applet.py:78
#, fuzzy, python-brace-format
msgid "Your system was not found in the {PRODUCT_NAME} database"
msgstr "Sistem Anda tidak ditemukan dalam rhn database"

#: ../server/handlers/sat/auth.py:45
#, fuzzy
msgid "ISS is disabled on this server."
msgstr "ISS dinonaktifkan di server ini."

#: ../server/handlers/sat/auth.py:50
#, fuzzy, python-format
msgid "Server \"%s\" is not enabled for ISS."
msgstr "Server \"%s\" tidak diaktifkan untuk ISS."

#: ../server/handlers/xmlrpc/errata.py:64
#, fuzzy, python-format
msgid "Expected a package name, not: %s"
msgstr "Diduga sebuah nama paket, bukan: %s"

#: ../server/handlers/xmlrpc/errata.py:115
#, fuzzy, python-format
msgid "Expected a package, not: %s"
msgstr "Diduga sebuah paket, bukan: %s"

#: ../server/handlers/xmlrpc/proxy.py:65
#, fuzzy, python-format
msgid "SUSE Manager Proxy service not enabled for server profile: \"%s\""
msgstr ""
"Layanan Proksi Manajer SUSE tidak diaktifkan untuk profil server: \"%s\""

#: ../server/handlers/xmlrpc/proxy.py:85
#, fuzzy
msgid "Invalid session key"
msgstr "Kunci sesi tidak valid"

#: ../server/handlers/xmlrpc/proxy.py:93
#, fuzzy
msgid "This server ID no longer exists"
msgstr "ID server ini tidak ada lagi"

#: ../server/handlers/xmlrpc/queue.py:433
#, fuzzy, python-format
msgid "Invalid action value type %s (%s)"
msgstr "Tipe nilai tindakan %s (%s) tidak valid"

#: ../server/handlers/xmlrpc/queue.py:464
#, fuzzy, python-format
msgid "Action %s does not belong to server %s"
msgstr "Tindakan %s bukan milik server %s"

#: ../server/handlers/xmlrpc/registration.py:194
#, fuzzy
msgid "Required data missing"
msgstr "Data yang diperlukan hilang"

#: ../server/handlers/xmlrpc/registration.py:198
#, fuzzy
msgid "Required members missing"
msgstr "Anggota yang diperlukan hilang"

#: ../server/handlers/xmlrpc/registration.py:207
#, fuzzy
msgid "Attempt to register a system to an invalid username"
msgstr "Mencoba mendaftarkan sistem ke nama pengguna yang tidak valid"

#: ../server/handlers/xmlrpc/registration.py:839
#, fuzzy
msgid "Invalid system release version requested"
msgstr "Versi rilis sistem tidak valid yang diminta"

#: ../server/handlers/xmlrpc/registration.py:1063
#, fuzzy
msgid ""
"Unable to find a valid network interface, both ipaddr and ip6addr not found."
msgstr ""
"Tidak dapat menemukan antarmuka jaringan yang valid, ipaddr dan ip6addr "
"tidak ditemukan."

#: ../server/handlers/xmlrpc/registration.py:1115
#, python-brace-format
msgid "{PRODUCT_NAME} Welcome Message"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1125
#, fuzzy
msgid "Privacy Statement"
msgstr "Red Hat Pernyataan Privasi Satelit"

#: ../server/handlers/xmlrpc/registration.py:1146
#, fuzzy
msgid "Expected a dictionary as a product argument"
msgstr "Mengharapkan kamus sebagai argumen produk"

#: ../server/handlers/xmlrpc/registration.py:1374
#, fuzzy, python-format
msgid "Invalid value '%s' for %s (%s)"
msgstr "Nilai '%s' tidak valid untuk %s (%s)"

#: ../server/handlers/xmlrpc/scap.py:104
#, fuzzy
msgid "Invalid system_id/action_id pair."
msgstr "Pasangan system_id/action_id tidak valid."

#: ../server/handlers/xmlrpc/up2date.py:233
#, fuzzy, python-format
msgid "Invalid value %s (%s)"
msgstr "Nilai %s (%s) tidak valid"

#: ../server/importlib/userAuth.py:98
#, fuzzy
msgid "You are not authorized to manage packages in the null org"
msgstr "Anda tidak berwenang untuk mengelola paket di null org"

#: ../server/importlib/userAuth.py:103
#, fuzzy, python-format
msgid "You are not allowed to manage packages in the %s org"
msgstr "Anda tidak diizinkan untuk mengelola paket dalam organisasi %s"

#: ../server/importlib/userAuth.py:121
#, fuzzy
msgid "You are not allowed to perform administrative tasks"
msgstr "Anda tidak diizinkan untuk melakukan tugas administratif"

#: ../server/importlib/userAuth.py:144
#, fuzzy, python-format
msgid ""
"You are not allowed to manage channel %s, or that channel does not exist"
msgstr ""
"Anda tidak diizinkan untuk mengelola saluran %s, atau saluran tersebut tidak "
"ada"

#: ../server/importlib/userAuth.py:204
#, fuzzy, python-format
msgid ""
"\n"
"               %s Account has been deactivated on this server.\n"
"               Please contact your Org administrator for more help."
msgstr ""
"Akun %s telah dinonaktifkan pada server ini.\n"
"               Silakan hubungi administrator Organisasi Anda untuk bantuan "
"lebih lanjut."

#: ../server/rhnChannel.py:1992
#, fuzzy, python-format
msgid ""
"Your account does not have access to any channels matching "
"(release='%(release)s', arch='%(arch)s')%(www_activation)s"
msgstr ""
"Akun Anda tidak memiliki akses ke saluran apa pun yang cocok "
"(release='%(release)s', arch='%(arch)s')%(www_activation)s"

#: ../server/rhnChannel.py:2002
#, fuzzy
msgid ""
"\n"
"If you have a registration number, please register with it first at http://"
"www.redhat.com/apps/activate/ and then try again.\n"
"\n"
msgstr ""
"Jika Anda memiliki nomor registrasi, silakan mendaftar dengan terlebih "
"dahulu di http://www.redhat.com/apps/activate/ dan kemudian coba lagi."

#: ../server/rhnChannel.py:2012
#, fuzzy, python-format
msgid "Insufficient subscription permissions for release (%s, %s"
msgstr "Izin berlangganan tidak cukup untuk rilis (%s, %s"

#. Various messages that can be reused
#.
#. bretm 02/07/2007 -- when we have better old-client documentation, probably
#. will be safe to get rid of all this crap
#: ../server/rhnChannel.py:2276 ../server/rhnChannel.py:2287
#: ../server/rhnChannel.py:2302
#, fuzzy
msgid "System Registered but Inactive"
msgstr "Sistem Terdaftar tetapi Tidak Aktif"

#: ../server/rhnChannel.py:2277
#, fuzzy, python-format
msgid ""
"\n"
"Invalid Architecture and OS release combination (%s, %s).\n"
"Your system has been registered, but will not receive updates\n"
"because it is not subscribed to a channel. If you have not yet\n"
"activated your product for service, please visit our website at:\n"
"\n"
"     http://www.redhat.com/apps/activate/\n"
"\n"
"...to activate your product."
msgstr ""
"Kombinasi pelepas Arsitektur dan OS tidak valid (%s, %s).\n"
"Sistem Anda telah terdaftar, tetapi tidak akan menerima pembaruan\n"
"karena tidak berlangganan saluran. Jika Anda belum\n"
"mengaktifkan produk Anda untuk layanan, silakan kunjungi website kami di:\n"
"\n"
"http://www.redhat.com/apps/activate/\n"
"\n"
"... untuk mengaktifkan produk Anda."

#: ../server/rhnChannel.py:2288
#, fuzzy, python-format
msgid ""
"\n"
"Invalid Architecture and OS release combination (%s, %s).\n"
"Your system has been registered, but will not receive updates\n"
"because it could not be subscribed to a base channel.\n"
"Please contact your organization administrator for assistance.\n"
msgstr ""
"Kombinasi pelepas Arsitektur dan OS tidak valid (%s, %s).\n"
"Sistem Anda telah terdaftar, tetapi tidak akan menerima pembaruan\n"
"karena tidak dapat di subscribe ke base channel.\n"
"Hubungi administrator organisasi Anda untuk mendapatkan bantuan."

#: ../server/rhnChannel.py:2295
#, fuzzy, python-format
msgid ""
"\n"
"  This system has been successfully registered, but is not yet entitled\n"
"  to service.  To entitle this system to service, login to the web site at:\n"
"\n"
"  %(entitlement_url)s\n"
msgstr ""
"Sistem ini telah berhasil didaftarkan, namun belum\n"
"  layanan.  Untuk memberikan hak sistem ini ke layanan, login ke situs web "
"di:\n"
"\n"
"%(entitlement_url)s (Dalam Bahasa Inggris)"

#: ../server/rhnChannel.py:2303
#, fuzzy, python-format
msgid ""
"\n"
"  This system has been successfully registered, but no service entitlements\n"
"  were available.  To entitle this system to service, login to the web site "
"at:\n"
"\n"
"  %(entitlement_url)s\n"
msgstr ""
"Sistem ini telah berhasil didaftarkan, tetapi tidak ada hak layanan\n"
"  tersedia.  Untuk memberikan hak sistem ini ke layanan, login ke situs web "
"di:\n"
"\n"
"%(entitlement_url)s (Dalam Bahasa Inggris)"

#: ../server/rhnHandler.py:62
#, fuzzy
msgid "Please run rhn_register as root on this client"
msgstr "Silakan jalankan rhn_register sebagai root pada klien ini"

#: ../server/rhnHandler.py:75
#, fuzzy, python-format
msgid "Service not enabled for system profile: \"%s\""
msgstr "Layanan tidak diaktifkan untuk profil sistem: \"%s\""

#: ../server/rhnPackage.py:49 ../server/rhnPackage.py:87
#: ../server/rhnPackage.py:107 ../server/rhnPackage.py:158
#, fuzzy, python-format
msgid "Invalid RPM package %s requested"
msgstr "Paket RPM %s tidak valid diminta"

#: ../server/rhnPackage.py:112
#, fuzzy
msgid "Package not found"
msgstr "Paket tidak ditemukan"

#: ../server/rhnServer/server_class.py:97
#, fuzzy, python-format
msgid "Architecture `%s' is not supported"
msgstr "Arsitektur '%s' tidak didukung"

#: ../server/rhnServer/server_token.py:78
#, fuzzy, python-format
msgid "Token `%s' has more than one base channel assigned"
msgstr "Token '%s' memiliki lebih dari satu saluran dasar yang ditugaskan"

#: ../server/rhnServer/server_token.py:80
#, fuzzy
msgid "Conflicting base channels"
msgstr "Saluran dasar yang bertentangan"

#: ../server/rhnServer/server_token.py:190
#, fuzzy, python-format
msgid "Failed to add server to group %s"
msgstr "Gagal menambahkan server ke grup %s"

#: ../server/rhnServer/server_token.py:503
#, fuzzy, python-format
msgid "Maximum usage count of %s reached"
msgstr "Jumlah penggunaan maksimum dari %s tercapai"

#: ../server/rhnServer/server_token.py:744
#, fuzzy
msgid ""
"Stacking of re-registration tokens with different base entitlements is not "
"supported"
msgstr ""
"Penumpukan token pendaftaran ulang dengan hak dasar yang berbeda tidak "
"didukung"

#: ../server/rhnServer/server_token.py:811
#, fuzzy, python-format
msgid "Could not find token '%s'"
msgstr "Tidak dapat menemukan token '%s'"

#. Cannot use activation keys from different orgs
#: ../server/rhnServer/server_token.py:843
#, fuzzy
msgid "Tokens from mismatching orgs"
msgstr "Token dari organisasi yang tidak cocok"

#. Two tokens with different kickstart sessions
#: ../server/rhnServer/server_token.py:853
#, fuzzy
msgid "Kickstart session mismatch"
msgstr "Ketidakcocokan sesi kickstart"

#: ../server/rhnServer/server_token.py:877
#, fuzzy
msgid "Stacking of re-registration tokens is not supported"
msgstr "Penumpukan token pendaftaran ulang tidak didukung"

#: ../server/rhnUser.py:289 ../server/rhnUser.py:292
#, fuzzy
msgid "Invalid username/password combination"
msgstr "Kombinasi nama pengguna/kata sandi tidak valid"

#. nope, not reserved either
#: ../server/rhnUser.py:467
#, fuzzy, python-format
msgid "Username `%s' has not been reserved"
msgstr "Nama pengguna '%s' belum dicadangkan"

#. New accounts have to specify an e-mail address
#: ../server/rhnUser.py:473
#, fuzzy
msgid "E-mail address not specified"
msgstr "Alamat e-mail tidak ditentukan"

#: ../server/rhnUser.py:509
#, fuzzy, python-format
msgid "username should be at least %d characters"
msgstr "nama pengguna harus setidaknya %d karakter"

#: ../server/rhnUser.py:512
#, fuzzy, python-format
msgid "username should be less than %d characters"
msgstr "nama pengguna harus kurang dari %d karakter"

#: ../server/rhnUser.py:523
#, fuzzy, python-format
msgid "username = `%s', invalid character `%s'"
msgstr "username = '%s', karakter '%s' tidak valid"

#: ../server/rhnUser.py:542
#, fuzzy, python-format
msgid "Please limit your e-mail address to %s chars"
msgstr "Batasi alamat e-mail Anda ke %s chars"

#: ../server/rhnUser.py:623
#, fuzzy, python-format
msgid "password must be at least %d characters"
msgstr "kata sandi harus setidaknya %d karakter"

#: ../server/rhnUser.py:626
#, fuzzy, python-format
msgid "Password must be shorter than %d characters"
msgstr "Kata sandi harus lebih pendek dari karakter %d"

#: ../server/rhnUser.py:644
#, fuzzy, python-format
msgid "password contains character `%s'"
msgstr "kata sandi berisi karakter '%s'"

#: ../server/rhnUser.py:651
#, fuzzy, python-format
msgid "username should be at least %d characters long"
msgstr "username harus setidaknya %d karakter panjang"

#: ../server/rhnUser.py:662
#, fuzzy, python-format
msgid "Cannot register usernames ending with %s"
msgstr "Tidak dapat mendaftarkan nama pengguna yang diakhiri dengan %s"

#. 0-999: Red Hat client/client-like interaction errors:
#: ../common/rhnException.py:53
#, fuzzy
msgid "This does not appear to be a valid username."
msgstr "Ini tampaknya tidak menjadi nama pengguna yang valid."

#: ../common/rhnException.py:54
#, fuzzy
msgid "Invalid username and password combination."
msgstr "Kombinasi nama pengguna dan kata sandi tidak valid."

#: ../common/rhnException.py:55
#, fuzzy
msgid "This login is already taken, or the password is incorrect."
msgstr "Login ini sudah diambil, atau sandi tidak benar."

#: ../common/rhnException.py:56
#, fuzzy
msgid "Permission denied."
msgstr "Hak akses ditolak."

#: ../common/rhnException.py:57
#, fuzzy
msgid "Object not found."
msgstr "Objek tidak ditemukan"

#: ../common/rhnException.py:58
#, fuzzy
msgid "Invalid System Digital ID."
msgstr "ID Digital sistem tidak valid."

#: ../common/rhnException.py:59
#, fuzzy
msgid "Invalid System Credentials."
msgstr "Kredensial sistem tidak valid."

#: ../common/rhnException.py:60
#, fuzzy
msgid "Could not retrieve user data from database."
msgstr "Tak bisa mengambil data pengguna dari pangkalan data."

#: ../common/rhnException.py:61
#, fuzzy
msgid "Valid username required."
msgstr "Diperlukan nama pengguna yang valid."

#: ../common/rhnException.py:62
#, fuzzy
msgid "Valid password required."
msgstr "Diperlukan kata sandi yang valid."

#: ../common/rhnException.py:63
#, fuzzy
msgid "Minimum username length violation."
msgstr "Pelanggaran panjang nama pengguna minimum."

#: ../common/rhnException.py:64
#, fuzzy
msgid "Minimum password length violation."
msgstr "Pelanggaran panjang kata sandi minimum."

#: ../common/rhnException.py:65
#, fuzzy
msgid "The username contains invalid characters."
msgstr "Nama pengguna berisi karakter yang tidak valid."

#: ../common/rhnException.py:66
#, fuzzy
msgid "File not found."
msgstr "Berkas tidak ditemukan."

#: ../common/rhnException.py:67
#, fuzzy
msgid "Architecture and OS version combination is not supported."
msgstr "Kombinasi versi arsitektur dan OS tidak didukung."

#: ../common/rhnException.py:68
#, fuzzy
msgid "Could not retrieve system data from database."
msgstr "Tidak dapat mengambil data sistem dari database."

#: ../common/rhnException.py:69
#, fuzzy
msgid "Invalid arguments passed to function."
msgstr "Argumen tidak valid diteruskan ke fungsi."

#: ../common/rhnException.py:70
#, fuzzy
msgid "Unable to retrieve requested entry."
msgstr "Tidak dapat mengambil entri yang diminta."

#: ../common/rhnException.py:71
#, fuzzy
msgid "Could not update database entry."
msgstr "Tidak dapat memperbarui entri database."

#: ../common/rhnException.py:72
#, fuzzy
msgid "Unsupported server architecture."
msgstr "Arsitektur server yang tidak didukung."

#: ../common/rhnException.py:73
#, fuzzy, python-format
msgid ""
"\n"
"     The anonymous server functionality is no longer available.\n"
"\n"
"     Please re-register this system by running mgr_register as root.\n"
"     Please visit https://%(hostname)s/rhn/systems/SystemEntitlements.do\n"
"     or login at https://%(hostname)s, and from the \"Overview\" tab,\n"
"     select \"Subscription Management\" to enable the service for this "
"system.\n"
"     "
msgstr ""
"Fungsionalitas server anonim tidak lagi tersedia.\n"
"\n"
"Silakan mendaftar ulang sistem ini dengan menjalankan mgr_register sebagai "
"root.\n"
"     Silakan kunjungi https://%(hostname)s/rhn/systems/SystemEntitlements."
"do\n"
"     atau login di https://%(hostname)s, dan dari tab \"Ikhtisar\",\n"
"     pilih \"Manajemen Langganan\" untuk mengaktifkan layanan untuk sistem "
"ini."

#: ../common/rhnException.py:81
#, fuzzy
msgid "Record not available in the database."
msgstr "Catatan tidak tersedia dalam database."

#: ../common/rhnException.py:82
#, fuzzy
msgid "Invalid value for entry."
msgstr "Nilai tidak valid untuk entri."

#: ../common/rhnException.py:83
#, fuzzy, python-format
msgid ""
"\n"
"     This system does not have a valid entitlement for SUSE Manager.\n"
"     Please visit https://%(hostname)s/rhn/systems/SystemEntitlements.do\n"
"     or login at https://%(hostname)s, and from the \"Overview\" tab,\n"
"     select \"Subscription Management\" to enable the service for this "
"system.\n"
"     "
msgstr ""
"Sistem ini tidak memiliki hak yang valid untuk Manajer SUSE.\n"
"     Silakan kunjungi https://%(hostname)s/rhn/systems/SystemEntitlements."
"do\n"
"     atau login di https://%(hostname)s, dan dari tab \"Ikhtisar\",\n"
"     pilih \"Manajemen Langganan\" untuk mengaktifkan layanan untuk sistem "
"ini."

#: ../common/rhnException.py:89
#, fuzzy
msgid "Channel error"
msgstr "Kesalahan saluran"

#: ../common/rhnException.py:90
#, fuzzy
msgid "Client session token is invalid."
msgstr "Token sesi klien tidak valid."

#: ../common/rhnException.py:91
#, fuzzy
msgid "Client session token has expired."
msgstr "Token sesi klien telah kedaluwarsa."

#: ../common/rhnException.py:92
#, fuzzy
msgid "You are not authorized to retrieve the requested object."
msgstr "Anda tidak berwenang untuk mengambil objek yang diminta."

#: ../common/rhnException.py:93
#, fuzzy
msgid "Invalid action"
msgstr "Tindakan tidak sah"

#: ../common/rhnException.py:94
#, fuzzy
msgid "You are not allowed to perform administrative tasks on this system."
msgstr ""
"Anda tidak diizinkan untuk melakukan tugas administratif pada sistem ini."

#: ../common/rhnException.py:96
#, fuzzy
msgid "The system is already subscribed to the specified channel."
msgstr "Sistem ini sudah berlangganan ke saluran yang ditentukan."

#: ../common/rhnException.py:97
#, fuzzy
msgid "The system is not currently subscribed to the specified channel."
msgstr "Sistem saat ini tidak berlangganan saluran yang ditentukan."

#: ../common/rhnException.py:98
#, fuzzy
msgid "The specified channel does not exist."
msgstr "Saluran yang ditentukan tidak ada."

#: ../common/rhnException.py:99
#, fuzzy
msgid "Invalid channel version."
msgstr "Versi saluran tidak valid."

#: ../common/rhnException.py:100
#, fuzzy
msgid ""
"\n"
"     User group membership limits exceeded.\n"
"\n"
"     The current settings for your account do not allow you to add another\n"
"     user account. Please check with the organization administrator for "
"your\n"
"     account if the maximum number of users allowed to subscribe to server "
"needs\n"
"     to be changed.\n"
"     "
msgstr ""
"Batas keanggotaan grup pengguna terlampaui.\n"
"\n"
"Pengaturan saat ini untuk akun Anda tidak memungkinkan Anda menambahkan\n"
"     akun pengguna. Silakan hubungi administrator organisasi untuk\n"
"     akun jika jumlah maksimum pengguna yang diizinkan untuk berlangganan "
"kebutuhan server\n"
"     untuk diubah."

#: ../common/rhnException.py:108
#, fuzzy
msgid ""
"\n"
"     System group membership limits exceeded.\n"
"\n"
"     The current settings for your account do not allow you to add another\n"
"     system profile. Please check with the organization administrator for "
"your\n"
"     account for modifying the maximum number of system profiles that can "
"be\n"
"     subscribed to your account.\n"
"     "
msgstr ""
"Batas keanggotaan grup sistem terlampaui.\n"
"\n"
"Pengaturan saat ini untuk akun Anda tidak memungkinkan Anda menambahkan\n"
"     profil sistem. Silakan hubungi administrator organisasi untuk\n"
"     akun untuk memodifikasi jumlah maksimum profil sistem yang dapat\n"
"     berlangganan akun Anda."

#: ../common/rhnException.py:116
#, fuzzy
msgid ""
"\n"
"     Invalid architecture.\n"
"\n"
"     The architecture of the package is not supported by\n"
"     "
msgstr ""
"Arsitektur tidak valid.\n"
"\n"
"Arsitektur paket tidak didukung oleh"

#: ../common/rhnException.py:121
#, fuzzy
msgid "Invalid RPM header"
msgstr "Header RPM tidak valid"

#: ../common/rhnException.py:122
#, fuzzy
msgid ""
"\n"
"    This system is already registered as a Salt Minion. If you want to "
"register it as a traditional client\n"
"    please delete it first via the web UI or API and then register it using "
"the traditional tools.\n"
"    "
msgstr ""
"Sistem ini sudah terdaftar sebagai Salt Minion. Jika Anda ingin "
"mendaftarkannya sebagai klien tradisional\n"
"    silakan hapus terlebih dahulu melalui UI web atau API dan kemudian "
"daftarkan menggunakan alat tradisional."

#. For the uploading tools
#: ../common/rhnException.py:127
#, fuzzy
msgid "Invalid information uploaded to the server"
msgstr "Informasi tidak valid yang diunggah ke server"

#: ../common/rhnException.py:128
#, fuzzy
msgid "Error uploading network interfaces configuration."
msgstr "Galat saat mengunggah konfigurasi antarmuka jaringan."

#: ../common/rhnException.py:129
#, fuzzy
msgid ""
"\n"
"     Package Upload Failed due to uniqueness constraint violation.\n"
"     Make sure the package does not have any duplicate dependencies or\n"
"     does not already exists on the server\n"
"     "
msgstr ""
"Upload Paket Gagal karena pelanggaran kendala keunikan.\n"
"     Pastikan paket tidak memiliki dependensi duplikat atau\n"
"     belum ada di server"

#: ../common/rhnException.py:134
#, fuzzy
msgid ""
"\n"
"     The --force rhnpush option is disabled on this server.\n"
"     Please contact your SUSE Manager administrator for more help.\n"
"     "
msgstr ""
"Opsi --force rhnpush dinonaktifkan di server ini.\n"
"     Hubungi administrator SUSE Manager Anda untuk bantuan lebih lanjut."

#. 60-70: token errors
#: ../common/rhnException.py:140
#, fuzzy
msgid ""
"\n"
"     The activation token specified could not be found on the server.\n"
"     Please retry with a valid key.\n"
"     "
msgstr ""
"Token aktivasi yang ditentukan tidak dapat ditemukan di server.\n"
"     Silakan coba lagi dengan kunci yang valid."

#: ../common/rhnException.py:144
#, fuzzy
msgid "Too many systems registered using this registration token"
msgstr "Terlalu banyak sistem yang terdaftar menggunakan token pendaftaran ini"

#: ../common/rhnException.py:145
#, fuzzy
msgid "Token contains invalid, obsoleted or insufficient settings"
msgstr "Token berisi pengaturan yang tidak valid, usang, atau tidak memadai"

#: ../common/rhnException.py:146
#, fuzzy
msgid "Conflicting activation tokens"
msgstr "Token aktivasi yang bertentangan"

#. 70-80: channel subscription errors
#: ../common/rhnException.py:149
#, fuzzy
msgid ""
"\n"
"     No matching base channel found for your system.\n"
"     "
msgstr "Tidak ada saluran dasar yang cocok yang ditemukan untuk sistem Anda."

#: ../common/rhnException.py:152
#, fuzzy
msgid ""
"\n"
"     You do not have subscription permission to the designated channel.\n"
"     Please refer to your organization's channel or organization\n"
"     administrators for further details.\n"
"     "
msgstr ""
"Anda tidak memiliki izin berlangganan ke saluran yang ditentukan.\n"
"     Lihat channel atau organisasi organisasi Anda\n"
"     administrator untuk rincian lebih lanjut."

#: ../common/rhnException.py:157
#, fuzzy
msgid "You can not unsubscribe from base channel."
msgstr "Anda tidak dapat berhenti berlangganan dari saluran dasar."

#: ../common/rhnException.py:158
#, fuzzy
msgid "SUSE Manager or Proxy channel can not be subscribed."
msgstr "Manajer SUSE atau saluran Proxy tidak dapat di subscribe."

#. 80-90: server group errors
#: ../common/rhnException.py:161
#, fuzzy
msgid "There was an error while trying to join the system to its groups"
msgstr ""
"Ada kesalahan saat mencoba untuk bergabung dengan sistem untuk kelompok-"
"kelompok"

#. 90-100: entitlement errors
#: ../common/rhnException.py:164
#, fuzzy
msgid "Unable to entitle system"
msgstr "Tidak dapat memberikan hak sistem"

#. 100-109: e-mail and uuid related faults
#: ../common/rhnException.py:167
#, fuzzy
msgid "Maximum e-mail length violation."
msgstr "Pelanggaran panjang e-mail maksimum."

#: ../common/rhnException.py:168
#, fuzzy
msgid "This system has been previously registered."
msgstr "Sistem ini sebelumnya telah terdaftar."

#: ../common/rhnException.py:169
#, fuzzy
msgid "Invalid username"
msgstr "Username tidak valid"

#. 140-159 applet errors
#: ../common/rhnException.py:172
#, fuzzy
msgid "Unable to look up server"
msgstr "Tidak dapat mencari server"

#. 160-179: OSAD errors
#: ../common/rhnException.py:175
#, fuzzy
msgid "Required argument is missing"
msgstr "Diperlukan argumen yang hilang."

#. 600-699: RHEL5+ EN errors
#: ../common/rhnException.py:178
#, fuzzy
msgid "No entitlement information tied to hardware"
msgstr "Tidak ada informasi penetapan yang terkait dengan perangkat keras"

#: ../common/rhnException.py:179
#, fuzzy
msgid "Installation number is not entitling"
msgstr "Nomor instalasi tidak entitling"

#. 700-799: Additional user input verification errors.
#: ../common/rhnException.py:182
#, fuzzy
msgid "Maximum username length violation"
msgstr "Pelanggaran panjang nama pengguna maksimum"

#: ../common/rhnException.py:183
#, fuzzy
msgid "Maximum password length violation"
msgstr "Pelanggaran panjang kata sandi maksimum"

#: ../common/rhnException.py:184
#, fuzzy
msgid "This user has read only API access. Action denied."
msgstr "Pengguna ini hanya memiliki akses API. Tindakan ditolak."

#: ../common/rhnException.py:186
#, fuzzy
msgid "System Name cannot be less than 1 character"
msgstr "Nama sistem tidak boleh kurang dari 1 karakter"

#. 1000-1999: Proxy specific errors:
#. issued by a Proxy to the client
#: ../common/rhnException.py:190
#, fuzzy
msgid "SUSE Manager Proxy error."
msgstr "Galat Proksi Manajer SUSE."

#: ../common/rhnException.py:191
#, fuzzy
msgid "SUSE Manager Proxy unable to login."
msgstr "SUSE Manager Proxy tidak dapat login."

#. issued by a SUSE Manager Server/Satellite to the proxy
#: ../common/rhnException.py:193
#, fuzzy
msgid ""
"\n"
"     SUSE Manager Proxy system ID does not match a Spacewalk Proxy Server\n"
"     in the database.\n"
"     "
msgstr ""
"ID sistem Proksi Manajer SUSE tidak cocok dengan Server Proksi Spacewalk\n"
"     dalam database."

#: ../common/rhnException.py:197
#, fuzzy
msgid "SUSE Manager Proxy session token is invalid."
msgstr "Token sesi Proksi Manajer SUSE tidak valid."

#: ../common/rhnException.py:198
#, fuzzy
msgid "SUSE Manager Proxy session token has expired."
msgstr "Token sesi Proxy Manajer SUSE telah kedaluwarsa."

#. 2000-2999: Red Hat Satellite specific errors:
#: ../common/rhnException.py:202
#, fuzzy
msgid ""
"\n"
"      user creation is not allowed via mgr_register;\n"
"     please contact your sysadmin to have your account created.\n"
"     "
msgstr ""
"pembuatan pengguna tidak diperbolehkan melalui mgr_register;\n"
"     silahkan hubungi sysadmin Anda untuk memiliki account Anda dibuat."

#: ../common/rhnException.py:206
#, fuzzy
msgid ""
"\n"
"     This SUSE Manager server is not allowed to use Inter Server Sync on "
"this server\n"
"     "
msgstr ""
"Server Manajer SUSE ini tidak diizinkan untuk menggunakan Inter Server Sync "
"di server ini"

#: ../common/rhnException.py:209
#, fuzzy
msgid ""
"\n"
"     Inter Server Sync is disabled on this SUSE Manager Server.\n"
"     "
msgstr "Inter Server sync dinonaktifkan pada Server manajer SUSE ini."

#. 3000-3999: XML dumper errors:
#: ../common/rhnException.py:214
#, fuzzy
msgid "Invalid datatype passed"
msgstr "Tipe data tidak valid dilewatkan"

#: ../common/rhnException.py:215
#, fuzzy
msgid "Unable to retrieve channel"
msgstr "Tidak dapat mengambil saluran"

#: ../common/rhnException.py:216
#, fuzzy
msgid "Unable to retrieve package"
msgstr "Tidak dapat mengambil paket"

#: ../common/rhnException.py:217
#, fuzzy
msgid "Unable to retrieve erratum"
msgstr "Tidak dapat mengambil erratum"

#: ../common/rhnException.py:218
#, fuzzy
msgid "File is missing"
msgstr "Berkas hilang"

#: ../common/rhnException.py:219
#, fuzzy
msgid "Function retrieval error"
msgstr "Galat pengambilan fungsi"

#: ../common/rhnException.py:220
#, fuzzy
msgid "Function execution error"
msgstr "Galat eksekusi fungsi"

#: ../common/rhnException.py:221
#, fuzzy
msgid "Missing version string"
msgstr "String versi hilang"

#: ../common/rhnException.py:222
#, fuzzy
msgid "Invalid version string"
msgstr "String versi tidak valid"

#: ../common/rhnException.py:223
#, fuzzy
msgid "Mismatching versions"
msgstr "Versi yang tidak cocok"

#: ../common/rhnException.py:224
#, fuzzy
msgid "Invalid channel version"
msgstr "Versi saluran tidak valid"

#: ../common/rhnException.py:225
#, fuzzy
msgid "No comps file for channel"
msgstr "Tidak ada file comps untuk saluran"

#: ../common/rhnException.py:226
#, fuzzy
msgid "Unable to retrieve comps file"
msgstr "Tidak dapat mengambil berkas comps"

#. 4000 - 4999: config management errors
#: ../common/rhnException.py:229
#, fuzzy
msgid "Configuration action missing"
msgstr "Tindakan konfigurasi hilang"

#: ../common/rhnException.py:230
#, fuzzy
msgid "File too large"
msgstr "Berkas terlalu besar"

#: ../common/rhnException.py:231
#, fuzzy
msgid "File contains binary data"
msgstr "File berisi data biner"

#: ../common/rhnException.py:232
#, fuzzy
msgid "Configuration channel is not empty"
msgstr "Saluran konfigurasi tidak kosong"

#: ../common/rhnException.py:233
#, fuzzy
msgid "Permission error"
msgstr "Galat izin"

#: ../common/rhnException.py:234
#, fuzzy
msgid "Content missing for configuration file"
msgstr "Konten hilang untuk file konfigurasi"

#: ../common/rhnException.py:235
#, fuzzy
msgid "Template delimiters not specified"
msgstr "Pembatas templat tidak ditentukan"

#: ../common/rhnException.py:236
#, fuzzy
msgid "Configuration channel does not exist"
msgstr "Saluran konfigurasi tidak ada"

#: ../common/rhnException.py:237
#, fuzzy
msgid "Configuration channel already exists"
msgstr "Saluran konfigurasi sudah ada"

#: ../common/rhnException.py:238
#, fuzzy
msgid "File missing from configuration channel"
msgstr "File hilang dari saluran konfigurasi"

#: ../common/rhnException.py:239
#, fuzzy
msgid "Different revision of this file is uploaded"
msgstr "Revisi yang berbeda dari file ini diunggah"

#: ../common/rhnException.py:240
#, fuzzy
msgid "File already uploaded to configuration channel"
msgstr "File yang sudah diunggah ke saluran konfigurasi"

#: ../common/rhnException.py:241
#, fuzzy
msgid "File size exceeds remaining quota space"
msgstr "Ukuran file melebihi ruang kuota yang tersisa"

#: ../common/rhnException.py:242
#, fuzzy
msgid "Full path of file must be specified"
msgstr "Path lengkap file harus ditentukan"

#: ../common/rhnException.py:243
#, fuzzy
msgid "Invalid revision number"
msgstr "Nomor revisi tidak valid"

#: ../common/rhnException.py:244
#, fuzzy
msgid "Cannot compare files of different file type"
msgstr "Tidak dapat membandingkan berkas jenis berkas yang berbeda"

#. 5000 - 5999: client content uploading errors
#. 5000 - 5099: crash reporting errors
#: ../common/rhnException.py:248
#, fuzzy
msgid "Crash information is invalid or incomplete"
msgstr "Informasi kerusakan tidak valid atau tidak lengkap"

#: ../common/rhnException.py:249
#, fuzzy
msgid "Crash file information is invalid or incomplete"
msgstr "Informasi berkas lumpuh tidak valid atau tidak lengkap"

#: ../common/rhnException.py:250
#, fuzzy
msgid "Error composing crash directory path"
msgstr "Galat saat menyusun jalur direktori crash"

#: ../common/rhnException.py:251
#, fuzzy
msgid "Error composing crash file path"
msgstr "Galat saat menyusun jalur berkas lumpuh"

#: ../common/rhnException.py:252 ../common/rhnException.py:259
#, fuzzy
msgid "Invalid content encoding"
msgstr "Pengkodean konten tidak valid"

#: ../common/rhnException.py:253
#, fuzzy
msgid "Invalid crash name"
msgstr "Nama crash tidak valid"

#: ../common/rhnException.py:254
#, fuzzy
msgid "Crash reporting is disabled for this organization"
msgstr "Pelaporan kerusakan dinonaktifkan untuk organisasi ini"

#. 5100 - 5199: scap results reporting error
#: ../common/rhnException.py:256
#, fuzzy
msgid "SCAP results file transfer is invalid or incomplete"
msgstr "Transfer berkas hasil SCAP tidak valid atau tidak lengkap"

#: ../common/rhnException.py:257
#, fuzzy
msgid "Error composing directory path for detailed SCAP results"
msgstr "Galat saat menyusun jalur direktori untuk hasil SCAP terperinci"

#: ../common/rhnException.py:258
#, fuzzy
msgid "Error composing file path for detailed SCAP results"
msgstr "Galat saat menyusun jalur berkas untuk hasil SCAP rinci"

#: ../common/rhnException.py:306
#, fuzzy
msgid ""
"\n"
"     An error has occurred while processing your request. If this problem\n"
"     persists please enter a bug report at scc.suse.com.\n"
"     If you choose to submit the bug report, please be sure to include\n"
"     details of what you were trying to do when this error occurred and\n"
"     details on how to reproduce this problem.\n"
msgstr ""
"Telah terjadi galat saat memproses permintaan Anda. Jika masalah ini\n"
"     tetap ada, silakan masukkan laporan bug di scc.suse.com.\n"
"     Jika Anda memilih untuk mengirimkan laporan bug, pastikan untuk\n"
"     rincian dari apa yang Anda coba lakukan ketika kesalahan ini terjadi "
"dan\n"
"     rincian tentang cara mereproduksi masalah ini."

#: ../common/rhnException.py:358
#, fuzzy, python-format
msgid ""
"Error Message:\n"
"    %s\n"
msgstr "Pesan kesalahan tak tertangani: %s"

#: ../common/rhnException.py:360
#, fuzzy, python-format
msgid "Error Class Code: %s\n"
msgstr "Kode Kelas Galat: %s"

#: ../common/rhnException.py:363
#, fuzzy, python-format
msgid "Error Class Info: %s\n"
msgstr "Galat Info Kelas: %s"

#: ../common/rhnException.py:365
#, fuzzy, python-format
msgid "Explanation: %s"
msgstr "Penjelasan: %s"

#: ../common/rhnTB.py:205
#, fuzzy, python-format
msgid "ERROR: %s %s: %s"
msgstr "GALAT: %s %s: %s"

#: ../common/rhnTB.py:207
#, fuzzy, python-format
msgid "TRACEBACK: %s"
msgstr "TRACEBACK: %s (Dalam Bahasa Inggris)"

#: ../satellite_tools/disk_dumper/iss.py:1294
#: ../satellite_tools/disk_dumper/iss.py:1298
#, fuzzy, python-format
msgid "format of %s should be at least YYYYMMDD.\n"
msgstr "format dari %s harus setidaknya YYYYMMDD."

#: ../satellite_tools/messages.py:26
#, fuzzy, python-format
msgid ""
"\n"
"ERROR: executing step %s. Error is:\n"
"%s\n"
msgstr ""
"GALAT: menjalankan langkah %s. Galat adalah:\n"
"%s"

#: ../satellite_tools/messages.py:31
#, fuzzy, python-format
msgid ""
"\n"
"ERROR: there was a problem accessing the channel data from your temporary\n"
"       repository. Did you migrate all of the data from the channel ISOs\n"
"       do this directory? If so, please recheck the channels ISOs, ensure\n"
"       that you have them all, and then iteratively remount and repopulate\n"
"       the temporary repository (%s).\n"
msgstr ""
"ERROR: ada masalah saat mengakses data channel dari\n"
"       Repositori. Apakah Anda memigrasikan semua data dari ISO saluran\n"
"       melakukan direktori ini? Jika demikian, silakan periksa kembali "
"saluran ISOs, pastikan\n"
"       bahwa Anda memiliki mereka semua, dan kemudian berulang-ulang dan "
"mengisi kembali\n"
"       repositori sementara (%s)."

#: ../satellite_tools/messages.py:39
#, fuzzy, python-format
msgid ""
"\n"
"ERROR: there was a problem synchronizing the information.\n"
"       Error message: %s\n"
msgstr ""
"GALAT: ada masalah sinkronisasi informasi.\n"
"       Pesan galat: %s"

#: ../satellite_tools/messages.py:44
#, fuzzy, python-format
msgid ""
"\n"
"ERROR: There was a problem communicating with the ISS Master.\n"
"       Depending on the specific error details, please review your "
"configuration,\n"
"       basic network connectivity, and/or name resolution, and try again.\n"
"       Error message: %s\n"
msgstr ""
"GALAT: Ada masalah berkomunikasi dengan ISS Master.\n"
"       Tergantung pada rincian kesalahan tertentu, silakan tinjau "
"konfigurasi Anda,\n"
"       konektivitas jaringan dasar, dan/atau resolusi nama, dan coba lagi.\n"
"       Pesan galat: %s"

#: ../satellite_tools/messages.py:51
#, fuzzy, python-format
msgid ""
"\n"
"ERROR: There was a problem communicating with the ISS Master.\n"
"       If the master satellite is older than v5.3, it does not have ISS "
"capability.\n"
"       Otherwise, depending on the specific error details, please review "
"your\n"
"       configuration, basic network connectivity, and/or name resolution, "
"and try again.\n"
"       Error message: %s\n"
msgstr ""
"GALAT: Ada masalah berkomunikasi dengan ISS Master.\n"
"       Jika satelit master lebih tua dari v5.3, itu tidak memiliki kemampuan "
"ISS.\n"
"       Jika tidak, tergantung pada rincian kesalahan tertentu, harap tinjau\n"
"       konfigurasi, konektivitas jaringan dasar, dan/atau resolusi nama, dan "
"coba lagi.\n"
"       Pesan galat: %s"

#: ../satellite_tools/messages.py:59
#, fuzzy, python-format
msgid ""
"\n"
"ERROR: a child-channel cannot be synced without its parent being synced as\n"
"       well. A parent needs to be either (a) previously synced or (b) "
"synced\n"
"       in tandem with the desired child-channel. Missing parents for this\n"
"       transaction:\n"
"       %s\n"
msgstr ""
"GALAT: saluran anak tidak dapat disinkronkan tanpa induknya disinkronkan "
"sebagai\n"
"       Baik. Orang tua harus (a) sebelumnya disinkronkan atau (b) "
"disinkronkan\n"
"       bersama-sama dengan saluran anak yang diinginkan. Orang tua yang "
"hilang untuk ini\n"
"       Transaksi:\n"
"       %s"

#: ../satellite_tools/messages.py:67
#, fuzzy, python-format
msgid ""
"\n"
"ERROR: you are not entitled to sync a channel in this set of channels.\n"
"Please contact your SUSE Manager contact\n"
"%s"
msgstr ""
"ERROR: Anda tidak berhak menyinkronkan saluran dalam serangkaian saluran "
"ini.\n"
"Silakan hubungi kontak SUSE Manager Anda\n"
"%s"

#: ../satellite_tools/messages.py:72
#, fuzzy, python-format
msgid "  ERROR: not enough free space (%s KB) on device."
msgstr "GALAT: tidak cukup ruang kosong (%s KB) pada perangkat."

#: ../satellite_tools/messages.py:74
#, fuzzy, python-format
msgid "    %3d/%s Fetch successful: %s (%s bytes)"
msgstr "%3d/%s Fetch berhasil: %s (%s bytes)"

#: ../satellite_tools/messages.py:75
#, fuzzy, python-format
msgid "    Extinct package:  %s"
msgstr "Paket punah: %s"

#: ../satellite_tools/messages.py:76
#, fuzzy, python-format
msgid "   Total size: %s"
msgstr "Total ukuran: %s"

#: ../satellite_tools/messages.py:77
#, fuzzy, python-format
msgid "      Downloaded %s of %s. Estimated remaining time: %s"
msgstr "Diunduh %s dari %s. Perkiraan sisa waktu: %s"

#: ../satellite_tools/messages.py:78
#, fuzzy, python-format
msgid "    Fetch unsuccessful: %s"
msgstr "Fetch gagal: %s"

#: ../satellite_tools/messages.py:79
#, fuzzy, python-format
msgid "   RPM fetch summary: %s"
msgstr "Ringkasan pengambilan RPM: %s"

#: ../satellite_tools/messages.py:80
#, fuzzy, python-format
msgid "       success: %d"
msgstr "sukses: %d"

#: ../satellite_tools/messages.py:81
#, fuzzy, python-format
msgid "       failed:  %d"
msgstr "Impor yang gagal (%d)"

#: ../satellite_tools/messages.py:82
#, fuzzy, python-format
msgid "       extinct: %d"
msgstr "punah: %d"

#: ../satellite_tools/messages.py:84
#, fuzzy, python-format
msgid "   Retrieving / parsing *relevant* package metadata: %s (%s)"
msgstr "Mengambil / mem-parsing *relevan* metadata paket: %s (%s)"

#: ../satellite_tools/messages.py:85
#, fuzzy, python-format
msgid "   Retrieving / parsing errata data: %s (%s)"
msgstr "Mengambil / mengurai data errata: %s (%s)"

#: ../satellite_tools/messages.py:86
#, fuzzy, python-format
msgid "   Retrieving / parsing kickstart data: %s (%s)"
msgstr "Mengambil / mengurai data kickstart: %s (%s)"

#: ../satellite_tools/messages.py:87
#, fuzzy, python-format
msgid "   Retrieving / parsing kickstart tree files: %s (%s)"
msgstr "Mengambil / mengurai berkas pohon kickstart: %s (%s)"

#: ../satellite_tools/messages.py:88
#, fuzzy, python-format
msgid "   Importing *relevant* package metadata: %s (%s)"
msgstr "Mengimpor metadata paket *relevant*: %s (%s)"

#: ../satellite_tools/messages.py:89
#, fuzzy
msgid "   * WARNING: this may be a slow process."
msgstr "* PERINGATAN: ini mungkin proses yang lambat."

#: ../satellite_tools/messages.py:90
#, fuzzy
msgid "Linking packages to channels"
msgstr "Menautkan paket ke saluran"

#: ../satellite_tools/messages.py:91
#, fuzzy, python-format
msgid "   Importing *relevant* errata: %s (%s)"
msgstr "Mengimpor *relevan* errata: %s (%s)"

#: ../satellite_tools/messages.py:92
#, fuzzy
msgid "   No new kickstartable tree to import"
msgstr "Tidak ada pohon kickstartable baru untuk mengimpor"

#: ../satellite_tools/messages.py:93
#, fuzzy, python-format
msgid "Importing kickstartable trees (%d)"
msgstr "Mengimpor pohon kickstartable (%d)"

#: ../satellite_tools/messages.py:94
#, fuzzy, python-format
msgid "Imported kickstartable trees (%d)"
msgstr "Pohon kickstartable impor (%d)"

#: ../satellite_tools/reposync.py:111 ../satellite_tools/satsync.py:439
#, fuzzy
msgid "+++ sending log as an email +++"
msgstr "+++ mengirim log sebagai email +++"

#: ../satellite_tools/reposync.py:114
#, fuzzy, python-format
msgid "%s sync. report from %s"
msgstr "Sinkronisasi %s. laporan dari %s"

#: ../satellite_tools/reposync.py:124 ../satellite_tools/satsync.py:449
#, fuzzy
msgid "+++ email requested, but there is nothing to send +++"
msgstr "+++ email yang diminta, tetapi tidak ada yang bisa dikirim +++"

#: ../satellite_tools/rhn_satellite_activate.py:198
#, fuzzy, python-format
msgid ""
"\"%s\" (specified in commandline)\n"
"could not be opened and read:\n"
"%s"
msgstr ""
"\"%s\" (ditentukan dalam baris perintah)\n"
"tidak dapat dibuka dan dibaca:\n"
"%s"

#: ../satellite_tools/rhn_satellite_activate.py:205
#, fuzzy, python-format
msgid ""
"\"%s\" could not be opened\n"
"and/or written to:\n"
"%s"
msgstr ""
"\"%s\" tidak dapat dibuka\n"
"dan/atau tertulis kepada:\n"
"%s"

#: ../satellite_tools/satsync.py:258
#, fuzzy, python-format
msgid "No handler for step %s"
msgstr "Tidak ada handler untuk langkah %s"

#. Try one more time - this time it should be faster since
#. everything should be cached
#: ../satellite_tools/satsync.py:270
#, fuzzy
msgid "Environment changed, trying again..."
msgstr "Lingkungan berubah, mencoba lagi ..."

#: ../satellite_tools/satsync.py:277
#, fuzzy
msgid "ERROR: Encountered IntegrityError: \n"
msgstr "GALAT: Mengalami IntegrityError:"

#: ../satellite_tools/satsync.py:285
#, fuzzy
msgid "Repeated failures"
msgstr "Kegagalan berulang"

#: ../satellite_tools/satsync.py:290
#, fuzzy, python-format
msgid ""
"    Import complete:\n"
"        Begin time: %s\n"
"        End time:   %s\n"
"        Elapsed:    %s\n"
"          "
msgstr ""
"Impor selesai:\n"
"        Waktu mulai: %s\n"
"        Waktu akhir: %s\n"
"        Berlalu: %s"

#: ../satellite_tools/satsync.py:311
#, fuzzy
msgid "hours"
msgstr "jam"

#: ../satellite_tools/satsync.py:311
#, fuzzy
msgid "minutes"
msgstr "menit"

#: ../satellite_tools/satsync.py:311
#, fuzzy
msgid "seconds"
msgstr "detik"

#: ../satellite_tools/satsync.py:357
#, fuzzy
msgid ""
"ERROR: The dump is missing package data, use --no-rpms to skip this step or "
"fix the content to include package data."
msgstr ""
"GALAT: Dump hilang paket data, gunakan --no-rpms untuk melewati langkah ini "
"atau memperbaiki konten untuk menyertakan paket data."

#. the orgs() method doesn't exist; that's fine we just
#. won't sync the orgs
#: ../satellite_tools/satsync.py:404
#, fuzzy
msgid "The SUSE Manager master does not support syncing orgs data."
msgstr "Master Manajer SUSE tidak mendukung sinkronisasi data organisasi."

#: ../satellite_tools/satsync.py:404
#, fuzzy
msgid "Skipping..."
msgstr "Melewatkan: %s\n"

#: ../satellite_tools/satsync.py:442
#, fuzzy, python-format
msgid "SUSE Manager Inter Server sync. report from %s"
msgstr "Sinkronisasi SUSE Manager Inter Server. laporan dari %s"

#: ../satellite_tools/satsync.py:521
#, fuzzy
msgid " - file-system synchronization"
msgstr "- Sinkronisasi sistem file"

#: ../satellite_tools/satsync.py:533 ../satellite_tools/satsync.py:541
#, fuzzy
msgid " - live synchronization"
msgstr "- Sinkronisasi langsung"

#: ../satellite_tools/satsync.py:534
#, fuzzy, python-brace-format
msgid ""
"ERROR: Live content synchronizing with RHN Classic Hosted is no longer "
"supported.\n"
"Please use the cdn-sync command instead unless you are attempting to sync "
"from another {PRODUCT_NAME} via Inter-Server-Sync (ISS), or from local "
"content on disk via Channel Dump ISOs."
msgstr ""
"KESALAHAN: Sinkronisasi konten langsung dengan RHN Classic Hosted tidak lagi "
"didukung.\n"
"Silakan gunakan perintah cdn-sync sebagai gantinya kecuali Jika Anda mencoba "
"untuk menyinkronkan dari Satelit lain melalui Inter-Satelite-Sync (ISS), "
"atau dari konten lokal pada disk melalui Channel Dump ISOs."

#: ../satellite_tools/satsync.py:542
#, fuzzy, python-format
msgid "   url: %s"
msgstr "URL: %s"

#: ../satellite_tools/satsync.py:543
#, fuzzy, python-format
msgid "   debug/output level: %s"
msgstr "tingkat debug/keluaran: %s"

#: ../satellite_tools/satsync.py:553
#, fuzzy
msgid "ERROR: this server must be registered with SUSE Manager."
msgstr "GALAT: server ini harus terdaftar di SUSE Manager."

#: ../satellite_tools/satsync.py:575
#, fuzzy, python-format
msgid "Retrieving / parsing %s data"
msgstr "Mengambil / mengurai data %s"

#: ../satellite_tools/satsync.py:585 ../satellite_tools/satsync.py:600
#, fuzzy
msgid "*** SYSTEM INTERRUPT CALLED ***"
msgstr "SISTEM INTERUPSI DISEBUT ***"

#: ../satellite_tools/satsync.py:593
#, fuzzy
msgid "ERROR: fatal parser exception occurred "
msgstr "GALAT: pengecualian parser fatal terjadi"

#: ../satellite_tools/satsync.py:594
#, fuzzy, python-format
msgid "(line: %s, col: %s msg: %s)"
msgstr "(baris: %s, col: %s msg: %s)"

#: ../satellite_tools/satsync.py:598
#, fuzzy, python-format
msgid "ERROR: parser exception occurred: %s"
msgstr "GALAT: pengecualian parser terjadi: %s"

#: ../satellite_tools/satsync.py:603
#, fuzzy
msgid "ERROR: exception (during parse) occurred: "
msgstr "GALAT: pengecualian (selama parse) terjadi:"

#: ../satellite_tools/satsync.py:604
#, fuzzy, python-format
msgid ""
"   Encountered some errors with %s data (see logs (%s) for more information)"
msgstr ""
"Mengalami beberapa kesalahan dengan data %s (lihat log (%s) untuk informasi "
"lebih lanjut)"

#: ../satellite_tools/satsync.py:606
#, fuzzy, python-format
msgid "   Encountered some errors with %s data:"
msgstr "Mengalami beberapa kesalahan dengan data %s:"

#: ../satellite_tools/satsync.py:607
#, fuzzy, python-format
msgid "   ------- %s PARSE/IMPORT ERROR -------"
msgstr "------- GALAT PARSE/IMPORT %s -------"

#: ../satellite_tools/satsync.py:609
#, fuzzy
msgid "   ---------------------------------------"
msgstr "---------------------------------------"

#: ../satellite_tools/satsync.py:612
#, fuzzy, python-format
msgid "%s data complete"
msgstr "%s data selesai"

#: ../satellite_tools/satsync.py:665
#, fuzzy
msgid "Retrieving / parsing channel data"
msgstr "Mengambil / mengurai data saluran"

#: ../satellite_tools/satsync.py:718
#, fuzzy
msgid "Channel data complete"
msgstr "Data saluran selesai"

#: ../satellite_tools/satsync.py:736
#, fuzzy, python-format
msgid "%10s import from %s"
msgstr "%10s mengimpor dari %s"

#: ../satellite_tools/satsync.py:739
#, fuzzy, python-format
msgid "%10s import from %s - %s"
msgstr "%10s mengimpor dari %s - %s"

#: ../satellite_tools/satsync.py:743
#, fuzzy, python-format
msgid "%10s"
msgstr "-10s"

#: ../satellite_tools/satsync.py:750
#, fuzzy
msgid "p"
msgstr "P"

#: ../satellite_tools/satsync.py:752
#, fuzzy
msgid "."
msgstr "."

#: ../satellite_tools/satsync.py:758
#, fuzzy
msgid "   p = previously imported/synced channel"
msgstr "p = saluran yang diimpor/disinkronkan sebelumnya"

#: ../satellite_tools/satsync.py:759
#, fuzzy
msgid "   . = channel not yet imported/synced"
msgstr ". = saluran belum diimpor / disinkronkan"

#: ../satellite_tools/satsync.py:765
#, fuzzy
msgid "   e = channel no longer supported (end-of-service)"
msgstr "e = saluran tidak lagi didukung (akhir layanan)"

#: ../satellite_tools/satsync.py:767
#, fuzzy
msgid "   ? = channel label invalid --- typo?"
msgstr "? = label saluran tidak --- kesalahan ketik?"

#: ../satellite_tools/satsync.py:771
#, fuzzy, python-format
msgid "   %s:"
msgstr "Untuk: %s"

#: ../satellite_tools/satsync.py:772
#, fuzzy, python-format
msgid "      %s %-40s %4s %s"
msgstr "%s %-40s %4s %s"

#: ../satellite_tools/satsync.py:773
#, fuzzy
msgid "base-channels"
msgstr "saluran dasar"

#: ../satellite_tools/satsync.py:786 ../satellite_tools/satsync.py:1603
#, fuzzy
msgid "NONE RELEVANT"
msgstr "TIDAK ADA YANG RELEVAN"

#: ../satellite_tools/satsync.py:808
#, fuzzy
msgid "end-of-service"
msgstr "akhir layanan"

#: ../satellite_tools/satsync.py:809
#, fuzzy
msgid "e"
msgstr "e"

#: ../satellite_tools/satsync.py:815
#, fuzzy
msgid "   typos:"
msgstr "Typos:"

#: ../satellite_tools/satsync.py:816
#, fuzzy
msgid "?"
msgstr "?"

#: ../satellite_tools/satsync.py:831
#, fuzzy, python-format
msgid "XXX: imported channels: %s"
msgstr "XXX: saluran yang diimpor: %s"

#: ../satellite_tools/satsync.py:832
#, fuzzy, python-format
msgid "XXX:   cached channels: %s"
msgstr "XXX: saluran cache: %s"

#: ../satellite_tools/satsync.py:837
#, fuzzy
msgid "XXX: list channels called"
msgstr "XXX: daftar saluran yang disebut"

#: ../satellite_tools/satsync.py:855
#, fuzzy
msgid "ERROR: these channels either do not exist or are not available:"
msgstr "GALAT: saluran ini tidak ada atau tidak tersedia:"

#: ../satellite_tools/satsync.py:859
#, fuzzy, python-format
msgid "       (to see a list of channel labels: %s --list-channels)"
msgstr "(untuk melihat daftar label saluran: %s --list-channels)"

#: ../satellite_tools/satsync.py:904
#, fuzzy, python-format
msgid "   Retrieving / parsing short package metadata: %s (%s)"
msgstr "Mengambil / mengurai metadata paket pendek: %s (%s)"

#: ../satellite_tools/satsync.py:965
#, fuzzy, python-format
msgid "Diffing package metadata (what's missing locally?): %s"
msgstr "Metadata paket diffing (apa yang hilang secara lokal?): %s"

#: ../satellite_tools/satsync.py:971 ../satellite_tools/satsync.py:1254
#, fuzzy
msgid "Diffing:    "
msgstr "Diffing:"

#: ../satellite_tools/satsync.py:988
#, fuzzy
msgid "ERROR: incremental dump skipped"
msgstr "GALAT: inkremental dump dilewati"

#: ../satellite_tools/satsync.py:1079
#, fuzzy
msgid "Downloading rpm packages"
msgstr "Mengunduh paket rpm"

#: ../satellite_tools/satsync.py:1084
#, fuzzy, python-format
msgid "   Fetching any missing RPMs: %s (%s)"
msgstr "Mengambil RPM yang hilang: %s (%s)"

#: ../satellite_tools/satsync.py:1085 ../satellite_tools/satsync.py:1153
#, fuzzy
msgid "NONE MISSING"
msgstr "TIDAK ADA YANG HILANG"

#: ../satellite_tools/satsync.py:1094
#, fuzzy
msgid "Processing rpm packages complete"
msgstr "Memproses paket rpm lengkap"

#: ../satellite_tools/satsync.py:1121
#, fuzzy
msgid "Downloading package metadata"
msgstr "Mengunduh metadata paket"

#: ../satellite_tools/satsync.py:1146
#, fuzzy
msgid "Downloading srpm packages"
msgstr "Mengunduh paket srpm"

#: ../satellite_tools/satsync.py:1152
#, fuzzy, python-format
msgid "   Fetching any missing SRPMs: %s (%s)"
msgstr "Mengambil SRPM yang hilang: %s (%s)"

#: ../satellite_tools/satsync.py:1249
#, fuzzy, python-format
msgid "Diffing source package metadata (what's missing locally?): %s"
msgstr "Metadata paket sumber diffing (apa yang hilang secara lokal?): %s"

#: ../satellite_tools/satsync.py:1260
#, fuzzy
msgid "Downloading source package metadata"
msgstr "Mengunduh metadata paket sumber"

#: ../satellite_tools/satsync.py:1338 ../satellite_tools/satsync.py:2027
#, fuzzy, python-format
msgid "Unable to save file %s: %s"
msgstr "Tidak dapat menyimpan berkas %s: %s"

#. for
#. Retried a number of times and it still failed; log the
#. file as being failed and move on
#: ../satellite_tools/satsync.py:1345
#, fuzzy, python-format
msgid "Failed to fetch file %s"
msgstr "Gagal mengambil berkas %s"

#: ../satellite_tools/satsync.py:1350
#, fuzzy
msgid "Downloading kickstartable trees metadata"
msgstr "Mengunduh metadata pohon kickstartable"

#: ../satellite_tools/satsync.py:1365
#, fuzzy
msgid "Downloading kickstartable trees files"
msgstr "Mengunduh file pohon kickstartable"

#: ../satellite_tools/satsync.py:1504
#, fuzzy, python-format
msgid "Grabbing all patches for channel %s"
msgstr "Meraih semua patch untuk saluran %s"

#: ../satellite_tools/satsync.py:1554
#, fuzzy
msgid "Downloading patch data"
msgstr "Mengunduh data patch"

#: ../satellite_tools/satsync.py:1556
#, fuzzy
msgid "Forcing download of all patch data for requested channels."
msgstr "Memaksa pengunduhan semua data patch untuk saluran yang diminta."

#: ../satellite_tools/satsync.py:1571
#, fuzzy
msgid "Downloading patch data complete"
msgstr "Mengunduh data patch selesai"

#: ../satellite_tools/satsync.py:1576 ../satellite_tools/satsync.py:1597
#, fuzzy
msgid "Downloading:"
msgstr "Unduh:"

#: ../satellite_tools/satsync.py:1579
#, fuzzy
msgid " - complete"
msgstr "%s Selesai"

#: ../satellite_tools/satsync.py:1624
#, fuzzy
msgid "Importing source package metadata"
msgstr "Mengimpor metadata paket sumber"

#: ../satellite_tools/satsync.py:1627
#, fuzzy
msgid "Importing package metadata"
msgstr "Mengimpor metadata paket"

#: ../satellite_tools/satsync.py:1635
#, fuzzy
msgid "Importing:  "
msgstr "Mengimpor..."

#. not in the cache
#: ../satellite_tools/satsync.py:1703
#, fuzzy
msgid ""
"Package Not Found in Cache, Clear the Cache "
"to                                  Regenerate it."
msgstr ""
"Paket tidak ditemukan di Cache, Kosongkan Cache untuk meregenerasi itu.Paket "
"tidak ditemukan di Cache, Kosongkan Cache untuk meregenerasi itu."

#: ../satellite_tools/satsync.py:1709
#, fuzzy
msgid "Importing channel patches"
msgstr "Mengimpor patch saluran"

#: ../satellite_tools/satsync.py:1714
#, fuzzy, python-format
msgid "Importing %s patches for channel %s."
msgstr "Mengimpor patch %s untuk saluran %s."

#. Incomplete configuration
#: ../satellite_tools/satsync.py:2113
#, fuzzy
msgid "ERROR: server.mount_point not set in the configuration file"
msgstr "GALAT: server.mount_point tidak ditetapkan dalam berkas konfigurasi"

#: ../satellite_tools/satsync.py:2117
#, fuzzy, python-format
msgid "ERROR: server.mount_point %s do not exist"
msgstr "GALAT: server.mount_point %s tidak ada"

#: ../satellite_tools/satsync.py:2122
#, fuzzy, python-format
msgid "ERROR: path under server.mount_point (%s)  do not exist"
msgstr "GALAT: jalur di server.mount_point (%s) tidak ada"

#: ../satellite_tools/satsync.py:2199
#, fuzzy, python-format
msgid "Commandline: %s"
msgstr "Baris perintah: %s"

#: ../satellite_tools/satsync.py:2202
#, fuzzy, python-format
msgid ""
"DEBUG ONLY: max. batch-size for XML/database-import processing (1..%s).\"man "
"satellite-sync\" for more information."
msgstr ""
"DEBUG HANYA: max. batch-size untuk XML/database-import processing (1..%s).\" "
"manusia satelit-sync\" untuk informasi lebih lanjut."

#: ../satellite_tools/satsync.py:2205
#, fuzzy
msgid "alternative SSL CA Cert (fullpath to cert file)"
msgstr "alternatif SSL CA Cert (fullpath ke cert file)"

#: ../satellite_tools/satsync.py:2207
#, fuzzy
msgid "process data for this channel only"
msgstr "data proses untuk saluran ini saja"

#: ../satellite_tools/satsync.py:2209
#, fuzzy
msgid ""
"disk dump will be considered to be a full export; see \"man satellite-sync\" "
"for more information."
msgstr ""
"dump disk akan dianggap sebagai ekspor penuh; lihat \"man satellite-sync\" "
"untuk informasi lebih lanjut."

#: ../satellite_tools/satsync.py:2212
#, fuzzy
msgid "existing custom channels will also be synced (unless -c is used)"
msgstr "saluran kustom yang ada juga akan disinkronkan (kecuali -c digunakan)"

#: ../satellite_tools/satsync.py:2214
#, fuzzy, python-format
msgid ""
"override debug level set in /etc/rhn/rhn.conf (which is currently set at %s)."
msgstr ""
"menimpa tingkat debug yang ditetapkan dalam /etc/rhn/rhn.conf (yang saat ini "
"disedingkan di %s)."

#: ../satellite_tools/satsync.py:2216
#, fuzzy, python-format
msgid "requested version of XML dump (default: %s)"
msgstr "versi yang diminta dari dump XML (default: %s)"

#: ../satellite_tools/satsync.py:2218
#, fuzzy
msgid "e-mail a report of what was synced/imported"
msgstr "e-mail laporan tentang apa yang disinkronkan / diimpor"

#: ../satellite_tools/satsync.py:2220
#, fuzzy
msgid "forcibly process all (not a diff of) patch metadata"
msgstr "secara paksa memproses semua (bukan diff) patch metadata"

#: ../satellite_tools/satsync.py:2222
#, fuzzy
msgid "Do not use an http proxy under any circumstances."
msgstr "Jangan gunakan proxy http dalam keadaan apa pun."

#: ../satellite_tools/satsync.py:2224
#, fuzzy
msgid "alternative http proxy (hostname:port)"
msgstr "alternatif http proxy (hostname:port)"

#: ../satellite_tools/satsync.py:2226
#, fuzzy
msgid "alternative http proxy username"
msgstr "alternatif http proxy username"

#: ../satellite_tools/satsync.py:2228
#, fuzzy
msgid "alternative http proxy password"
msgstr "kata sandi proxy http alternatif"

#: ../satellite_tools/satsync.py:2230
#, fuzzy
msgid "parent SUSE Manager to import content from"
msgstr "induk SUSE Manager untuk mengimpor konten dari"

#: ../satellite_tools/satsync.py:2232
#, fuzzy
msgid "list all available channels and exit"
msgstr "daftar semua saluran yang tersedia dan keluar"

#: ../satellite_tools/satsync.py:2234
#, fuzzy
msgid "help on all error codes mgr-inter-sync returns"
msgstr "bantuan pada semua kode kesalahan mgr-inter-sync kembali"

#: ../satellite_tools/satsync.py:2236
#, fuzzy
msgid "source mount point for import - disk update only"
msgstr "titik pasang sumber untuk impor - hanya pembaruan disk"

#: ../satellite_tools/satsync.py:2238
#, fuzzy
msgid "do not process patch data"
msgstr "jangan memproses data patch"

#: ../satellite_tools/satsync.py:2240
#, fuzzy
msgid "do not process kickstart data (provisioning only)"
msgstr "jangan memproses data kickstart (hanya penyediaan)"

#: ../satellite_tools/satsync.py:2242
#, fuzzy
msgid "do not process full package metadata"
msgstr "tidak memproses metadata paket lengkap"

#: ../satellite_tools/satsync.py:2244
#, fuzzy
msgid "do not download, or process any RPMs"
msgstr "tidak mengunduh, atau memproses RPM apa pun"

#: ../satellite_tools/satsync.py:2246
#, fuzzy
msgid "turn off SSL (not recommended)"
msgstr "menonaktifkan SSL (tidak disarankan)"

#: ../satellite_tools/satsync.py:2248
#, fuzzy
msgid "org to which the sync imports data. defaults to the admin account"
msgstr "organisasi tempat sinkronisasi mengimpor data. default ke akun admin"

#: ../satellite_tools/satsync.py:2250
#, fuzzy
msgid "print the configuration and exit"
msgstr "mencetak konfigurasi dan keluar"

#: ../satellite_tools/satsync.py:2252
#, fuzzy
msgid "alternative server with which to connect (hostname)"
msgstr "server alternatif yang digunakan untuk menghubungkan (nama host)"

#: ../satellite_tools/satsync.py:2254
#, fuzzy
msgid "synchronize to this step (man satellite-sync for more info)"
msgstr ""
"sinkronisasi ke langkah ini (man satellite-sync untuk info lebih lanjut)"

#: ../satellite_tools/satsync.py:2256
#, fuzzy
msgid "write complete data to tempfile before streaming to remainder of app"
msgstr "menulis data lengkap ke tempfile sebelum streaming ke sisa aplikasi"

#: ../satellite_tools/satsync.py:2258
#, fuzzy
msgid "DEBUG ONLY: alternative path to digital system id"
msgstr "DEBUG HANYA: jalur alternatif ke id sistem digital"

#: ../satellite_tools/satsync.py:2260
#, fuzzy
msgid "alternative email address(es) for sync output (--email option)"
msgstr "alamat email alternatif untuk output sinkronisasi (--opsi email)"

#: ../satellite_tools/satsync.py:2262
#, fuzzy
msgid "do not remove rpms when importing from local dump"
msgstr "tidak menghapus rpm saat mengimpor dari dump lokal"

#: ../satellite_tools/satsync.py:2264
#, fuzzy
msgid ""
"the fully qualified domain name of the master Satellite. Valid with --mount-"
"point only. Required if you want to import org data and channel permissions."
msgstr ""
"nama domain yang memenuhi syarat dari satelit master. Hanya valid dengan --"
"mount-point. Diperlukan jika Anda ingin mengimpor data organisasi dan izin "
"saluran."

#: ../satellite_tools/satsync.py:2274
#, fuzzy, python-format
msgid "ERROR: these arguments make no sense in this context (try --help): %s"
msgstr ""
"GALAT: argumen ini tidak masuk akal dalam konteks ini (coba --help): "
"%sGALAT: argumen ini tidak masuk akal dalam konteks ini (coba --help): %s"

#. An SQL error is fatal... crash and burn
#: ../satellite_tools/satsync.py:2286
#, fuzzy, python-format
msgid "ERROR: Can't connect to the database: %s"
msgstr "GALAT: Tidak dapat menyambung ke pangkalan data: %s"

#: ../satellite_tools/satsync.py:2287
#, fuzzy
msgid "ERROR: Check if your database is running."
msgstr "GALAT: Periksa apakah database Anda berjalan."

#: ../satellite_tools/satsync.py:2322
#, fuzzy, python-format
msgid "ERROR: --debug-level takes an in integer value within the range %s."
msgstr "GALAT: --debug-level mengambil nilai bilangan bulat dalam kisaran %s."

#: ../satellite_tools/satsync.py:2324
#, fuzzy
msgid "  0  - little logging/messaging."
msgstr "0 - sedikit penebangan / pesan."

#: ../satellite_tools/satsync.py:2325
#, fuzzy
msgid "  1  - minimal logging/messaging."
msgstr "1 - minimal penebangan / pesan."

#: ../satellite_tools/satsync.py:2326
#, fuzzy
msgid "  2  - normal level of logging/messaging."
msgstr "2 - tingkat normal penebangan / pesan."

#: ../satellite_tools/satsync.py:2327
#, fuzzy
msgid "  3  - lots of logging/messaging."
msgstr "3 - banyak penebangan / pesan."

#: ../satellite_tools/satsync.py:2328
#, fuzzy
msgid "  4+ - excessive logging/messaging."
msgstr "4+ - penebangan/pesan yang berlebihan."

#: ../satellite_tools/satsync.py:2341
#, fuzzy
msgid "ERROR: The --master option is only valid with the --mount-point option"
msgstr "GALAT: Opsi --master hanya berlaku dengan opsi --mount-point"

#: ../satellite_tools/satsync.py:2351
#, fuzzy, python-format
msgid "ERROR: Unable to lookup Org Id %s"
msgstr "GALAT: Tidak dapat mencari Id Organisasi %s"

#: ../satellite_tools/satsync.py:2360
#, fuzzy
msgid ""
"WARNING: --list-channels option overrides any --step option. --step ignored."
msgstr ""
"PERINGATAN: Opsi --list-channels menimpa opsi --step apa pun. --langkah "
"diabaikan."

#: ../satellite_tools/satsync.py:2375
#, fuzzy, python-format
msgid ""
"ERROR: '%s' is not a valid step. See 'man mgr-inter-sync' for more detail."
msgstr ""
"GALAT: '%s' bukan langkah yang valid. Lihat 'man satellite-sync' untuk "
"detail lebih lanjut."

#: ../satellite_tools/satsync.py:2407
#, fuzzy
msgid ""
"ERROR: No channels currently imported; try mgr-inter-sync --list-channels; "
"then mgr-inter-sync -c chn0 -c chn1..."
msgstr ""
"GALAT: Tidak ada saluran yang saat ini diimpor; coba mgr-inter-sync --list-"
"channels; kemudian mgr-inter-sync -c chn0 -c chn1..."

#. int(None) --> TypeError
#. int('a')  --> ValueError
#: ../satellite_tools/satsync.py:2457 ../satellite_tools/satsync.py:2461
#, fuzzy
msgid "ERROR: --batch-size must have a value within the range: 1..50"
msgstr "GALAT: --batch-size harus memiliki nilai dalam kisaran: 1..50"

#: ../satellite_tools/satsync.py:2469
#, fuzzy, python-format
msgid "ERROR: no such directory %s"
msgstr "Galat sewaktu membuat direktori %s."

#: ../satellite_tools/satsync.py:2474
#, fuzzy
msgid "Error Codes: Returned codes means:"
msgstr "Kode kesalahan: Kode yang dikembalikan berarti:"

#: ../satellite_tools/satsync.py:2475
#, fuzzy
msgid " -1  - Could not lock file or KeyboardInterrupt or SystemExit"
msgstr "-1 - Tidak dapat mengunci file atau KeyboardInterrupt atau SystemExit"

#: ../satellite_tools/satsync.py:2476
#, fuzzy
msgid "  0  - User interrupted or intentional exit"
msgstr "0 - Pengguna terganggu atau disengaja keluar"

#: ../satellite_tools/satsync.py:2477
#, fuzzy
msgid "  1  - attempting to run more than one instance of mgr-inter-sync."
msgstr "1 - mencoba untuk menjalankan lebih dari satu contoh mgr-inter-sync."

#: ../satellite_tools/satsync.py:2478
#, fuzzy
msgid "  2  - Unable to find synchronization tools."
msgstr "2 - Tidak dapat menemukan alat sinkronisasi."

#: ../satellite_tools/satsync.py:2479
#, fuzzy
msgid "  3  - a general socket exception occurred"
msgstr "3 - pengecualian soket umum terjadi"

#: ../satellite_tools/satsync.py:2480
#, fuzzy
msgid "  4  - an SSL error occurred. Recheck your SSL settings."
msgstr "4 - terjadi kesalahan SSL. Periksa kembali pengaturan SSL Anda."

#: ../satellite_tools/satsync.py:2481
#, fuzzy
msgid "  5  - ISS error"
msgstr "5 - Kesalahan ISS"

#: ../satellite_tools/satsync.py:2482
#, fuzzy
msgid "  6  - unhandled exception occurred"
msgstr "6 - pengecualian ditangani terjadi"

#: ../satellite_tools/satsync.py:2483
#, fuzzy
msgid "  7  - unknown sync error"
msgstr "7 - kesalahan sinkronisasi tidak diketahui"

#: ../satellite_tools/satsync.py:2484
#, fuzzy
msgid "  8  - ERROR: must be root to execute"
msgstr "8 - ERROR: harus root untuk mengeksekusi"

#: ../satellite_tools/satsync.py:2485
#, fuzzy
msgid "  9  - rpclib fault during synchronization init"
msgstr "9 - rpclib kesalahan selama sinkronisasi init"

#: ../satellite_tools/satsync.py:2486
#, fuzzy
msgid "  10 - synchronization init error"
msgstr "10 - sinkronisasi init kesalahan"

#: ../satellite_tools/satsync.py:2487
#, fuzzy
msgid "  11 - Error parsing XML stream"
msgstr "11 - Kesalahan parsing XML stream"

#: ../satellite_tools/satsync.py:2488
#, fuzzy
msgid "  12 - Channel do not exist"
msgstr "12 - Saluran tidak ada"

#: ../satellite_tools/satsync.py:2489
#, fuzzy
msgid "  13 - SQL error during importing package metadata"
msgstr "13 - Galat SQL selama mengimpor metadata paket"

#: ../satellite_tools/satsync.py:2490
#, fuzzy
msgid "  14 - SQL error during linking channel packages"
msgstr "14 - Galat SQL selama menghubungkan paket saluran"

#: ../satellite_tools/satsync.py:2491
#, fuzzy
msgid "  15 - SQL error during xml processing"
msgstr "15 - Galat SQL selama pemrosesan xml"

#: ../satellite_tools/satsync.py:2492
#, fuzzy
msgid "  16 - server.mount_point not set in the configuration file"
msgstr "16 - server.mount_point tidak ditetapkan dalam file konfigurasi"

#: ../satellite_tools/satsync.py:2493
#, fuzzy
msgid ""
"  17 - SQL error during retrieving the channels already imported in the SUSE "
"Manager database"
msgstr ""
"17 - GALAT SQL selama mengambil saluran yang sudah diimpor dalam database "
"SUSE Manager"

#: ../satellite_tools/satsync.py:2494
#, fuzzy
msgid "  18 - Wrong db connection string in rhn.conf"
msgstr "18 - String koneksi db salah di rhn.conf"

#: ../satellite_tools/satsync.py:2495
#, fuzzy
msgid "  19 - Bad arguments"
msgstr "19 - Argumen buruk"

#: ../satellite_tools/satsync.py:2496
#, fuzzy
msgid "  20 - Could not connect to db."
msgstr "20 - Tidak dapat terhubung ke db."

#: ../satellite_tools/satsync.py:2497
#, fuzzy
msgid "  21 - Bad debug level"
msgstr "21 - Tingkat debug buruk"

#: ../satellite_tools/satsync.py:2498
#, fuzzy
msgid "  22 - Not valid step"
msgstr "22 - Tidak berlaku langkah"

#: ../satellite_tools/satsync.py:2499
#, fuzzy
msgid "  24 - no such file"
msgstr "24 - tidak ada file tersebut"

#: ../satellite_tools/satsync.py:2500
#, fuzzy
msgid "  25 - no such directory"
msgstr "25 - tidak ada direktori tersebut"

#: ../satellite_tools/satsync.py:2501
#, fuzzy
msgid "  26 - mount_point does not exist"
msgstr "26 - mount_point tidak ada"

#: ../satellite_tools/satsync.py:2502
#, fuzzy
msgid "  27 - No such org"
msgstr "27 - Tidak ada organisasi seperti itu"

#: ../satellite_tools/satsync.py:2503
#, fuzzy
msgid "  28 - error: --master is only valid with --mount-point"
msgstr "28 - error: --master hanya berlaku dengan --mount-point"

#: ../satellite_tools/satsync.py:2510
#, fuzzy, python-format
msgid "ERROR: unknown dump version, try one of %s"
msgstr "GALAT: versi dump tidak diketahui, coba salah satu dari %s"

#, fuzzy
#~ msgid "Red Hat Satellite Welcome Message"
#~ msgstr "Red Hat Satelit Selamat Datang Pesan"
   07070100000075000081B40000000000000000000000016290A0C10000B648000000000000000000000000000000000000001B00000000spacewalk-backend/po/is.po    # SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
#
# Translators:
# Richard Allen <ra@ra.is>, 2002, 2006.
msgid ""
msgstr ""
"Project-Id-Version: Spacewalk\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-10-16 13:34+0200\n"
"PO-Revision-Date: 2011-03-04 16:08+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Icelandic (http://www.transifex.com/projects/p/fedora/"
"language/is/)\n"
"Language: is\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"

#: ../server/apacheAuth.py:66
#, python-format
msgid "incomplete proxy authentication token: %s"
msgstr ""

#: ../server/apacheAuth.py:84
#, python-format
msgid "Sent proxy signature %s does not match ours %s."
msgstr ""

#: ../server/apacheAuth.py:119
msgid "declined proxy authentication"
msgstr ""

#: ../server/apacheRequest.py:59
#, python-format
msgid "Invalid request received (%s)."
msgstr ""

#: ../server/apacheRequest.py:120
#, python-format
msgid ""
"IMPORTANT MESSAGE FOLLOWS:\n"
"%s"
msgstr ""

#: ../server/apacheRequest.py:149
#, python-format
msgid ""
"While running '%s': caught\n"
"%s : %s\n"
msgstr ""

#: ../server/apacheRequest.py:606
#, python-format
msgid "Invalid URI %s"
msgstr ""

#: ../server/configFilesHandler.py:129 ../server/handlers/app/packages.py:192
#: ../server/handlers/xmlrpc/registration.py:215
#: ../server/handlers/xmlrpc/registration.py:1168
#: ../server/handlers/xmlrpc/registration.py:1307
#, python-format
msgid ""
"\n"
"                   %s Account has been deactivated on this server.\n"
"                   Please contact your Org administrator for more help."
msgstr ""

#: ../server/handlers/applet/applet.py:78
#, python-brace-format
msgid "Your system was not found in the {PRODUCT_NAME} database"
msgstr ""

#: ../server/handlers/sat/auth.py:45
msgid "ISS is disabled on this server."
msgstr ""

#: ../server/handlers/sat/auth.py:50
#, python-format
msgid "Server \"%s\" is not enabled for ISS."
msgstr ""

#: ../server/handlers/xmlrpc/errata.py:64
#, python-format
msgid "Expected a package name, not: %s"
msgstr ""

#: ../server/handlers/xmlrpc/errata.py:115
#, python-format
msgid "Expected a package, not: %s"
msgstr ""

#: ../server/handlers/xmlrpc/proxy.py:65
#, python-format
msgid "SUSE Manager Proxy service not enabled for server profile: \"%s\""
msgstr ""

#: ../server/handlers/xmlrpc/proxy.py:85
msgid "Invalid session key"
msgstr ""

#: ../server/handlers/xmlrpc/proxy.py:93
msgid "This server ID no longer exists"
msgstr ""

#: ../server/handlers/xmlrpc/queue.py:433
#, python-format
msgid "Invalid action value type %s (%s)"
msgstr ""

#: ../server/handlers/xmlrpc/queue.py:464
#, python-format
msgid "Action %s does not belong to server %s"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:194
msgid "Required data missing"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:198
msgid "Required members missing"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:207
msgid "Attempt to register a system to an invalid username"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:839
msgid "Invalid system release version requested"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1063
msgid ""
"Unable to find a valid network interface, both ipaddr and ip6addr not found."
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1115
#, python-brace-format
msgid "{PRODUCT_NAME} Welcome Message"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1125
msgid "Privacy Statement"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1146
msgid "Expected a dictionary as a product argument"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1374
#, python-format
msgid "Invalid value '%s' for %s (%s)"
msgstr ""

#: ../server/handlers/xmlrpc/scap.py:104
msgid "Invalid system_id/action_id pair."
msgstr ""

#: ../server/handlers/xmlrpc/up2date.py:233
#, python-format
msgid "Invalid value %s (%s)"
msgstr ""

#: ../server/importlib/userAuth.py:98
msgid "You are not authorized to manage packages in the null org"
msgstr ""

#: ../server/importlib/userAuth.py:103
#, python-format
msgid "You are not allowed to manage packages in the %s org"
msgstr ""

#: ../server/importlib/userAuth.py:121
msgid "You are not allowed to perform administrative tasks"
msgstr ""

#: ../server/importlib/userAuth.py:144
#, python-format
msgid ""
"You are not allowed to manage channel %s, or that channel does not exist"
msgstr ""

#: ../server/importlib/userAuth.py:204
#, python-format
msgid ""
"\n"
"               %s Account has been deactivated on this server.\n"
"               Please contact your Org administrator for more help."
msgstr ""

#: ../server/rhnChannel.py:1992
#, python-format
msgid ""
"Your account does not have access to any channels matching "
"(release='%(release)s', arch='%(arch)s')%(www_activation)s"
msgstr ""

#: ../server/rhnChannel.py:2002
msgid ""
"\n"
"If you have a registration number, please register with it first at http://"
"www.redhat.com/apps/activate/ and then try again.\n"
"\n"
msgstr ""

#: ../server/rhnChannel.py:2012
#, python-format
msgid "Insufficient subscription permissions for release (%s, %s"
msgstr ""

#. Various messages that can be reused
#.
#. bretm 02/07/2007 -- when we have better old-client documentation, probably
#. will be safe to get rid of all this crap
#: ../server/rhnChannel.py:2276 ../server/rhnChannel.py:2287
#: ../server/rhnChannel.py:2302
msgid "System Registered but Inactive"
msgstr ""

#: ../server/rhnChannel.py:2277
#, python-format
msgid ""
"\n"
"Invalid Architecture and OS release combination (%s, %s).\n"
"Your system has been registered, but will not receive updates\n"
"because it is not subscribed to a channel. If you have not yet\n"
"activated your product for service, please visit our website at:\n"
"\n"
"     http://www.redhat.com/apps/activate/\n"
"\n"
"...to activate your product."
msgstr ""

#: ../server/rhnChannel.py:2288
#, python-format
msgid ""
"\n"
"Invalid Architecture and OS release combination (%s, %s).\n"
"Your system has been registered, but will not receive updates\n"
"because it could not be subscribed to a base channel.\n"
"Please contact your organization administrator for assistance.\n"
msgstr ""

#: ../server/rhnChannel.py:2295
#, python-format
msgid ""
"\n"
"  This system has been successfully registered, but is not yet entitled\n"
"  to service.  To entitle this system to service, login to the web site at:\n"
"\n"
"  %(entitlement_url)s\n"
msgstr ""

#: ../server/rhnChannel.py:2303
#, python-format
msgid ""
"\n"
"  This system has been successfully registered, but no service entitlements\n"
"  were available.  To entitle this system to service, login to the web site "
"at:\n"
"\n"
"  %(entitlement_url)s\n"
msgstr ""

#: ../server/rhnHandler.py:62
msgid "Please run rhn_register as root on this client"
msgstr ""

#: ../server/rhnHandler.py:75
#, python-format
msgid "Service not enabled for system profile: \"%s\""
msgstr ""

#: ../server/rhnPackage.py:49 ../server/rhnPackage.py:87
#: ../server/rhnPackage.py:107 ../server/rhnPackage.py:158
#, python-format
msgid "Invalid RPM package %s requested"
msgstr ""

#: ../server/rhnPackage.py:112
msgid "Package not found"
msgstr ""

#: ../server/rhnServer/server_class.py:97
#, python-format
msgid "Architecture `%s' is not supported"
msgstr ""

#: ../server/rhnServer/server_token.py:78
#, python-format
msgid "Token `%s' has more than one base channel assigned"
msgstr ""

#: ../server/rhnServer/server_token.py:80
msgid "Conflicting base channels"
msgstr ""

#: ../server/rhnServer/server_token.py:190
#, python-format
msgid "Failed to add server to group %s"
msgstr ""

#: ../server/rhnServer/server_token.py:503
#, python-format
msgid "Maximum usage count of %s reached"
msgstr ""

#: ../server/rhnServer/server_token.py:744
msgid ""
"Stacking of re-registration tokens with different base entitlements is not "
"supported"
msgstr ""

#: ../server/rhnServer/server_token.py:811
#, python-format
msgid "Could not find token '%s'"
msgstr ""

#. Cannot use activation keys from different orgs
#: ../server/rhnServer/server_token.py:843
msgid "Tokens from mismatching orgs"
msgstr ""

#. Two tokens with different kickstart sessions
#: ../server/rhnServer/server_token.py:853
msgid "Kickstart session mismatch"
msgstr ""

#: ../server/rhnServer/server_token.py:877
msgid "Stacking of re-registration tokens is not supported"
msgstr ""

#: ../server/rhnUser.py:289 ../server/rhnUser.py:292
msgid "Invalid username/password combination"
msgstr ""

#. nope, not reserved either
#: ../server/rhnUser.py:467
#, python-format
msgid "Username `%s' has not been reserved"
msgstr ""

#. New accounts have to specify an e-mail address
#: ../server/rhnUser.py:473
msgid "E-mail address not specified"
msgstr ""

#: ../server/rhnUser.py:509
#, python-format
msgid "username should be at least %d characters"
msgstr ""

#: ../server/rhnUser.py:512
#, python-format
msgid "username should be less than %d characters"
msgstr ""

#: ../server/rhnUser.py:523
#, python-format
msgid "username = `%s', invalid character `%s'"
msgstr ""

#: ../server/rhnUser.py:542
#, python-format
msgid "Please limit your e-mail address to %s chars"
msgstr ""

#: ../server/rhnUser.py:623
#, python-format
msgid "password must be at least %d characters"
msgstr ""

#: ../server/rhnUser.py:626
#, python-format
msgid "Password must be shorter than %d characters"
msgstr ""

#: ../server/rhnUser.py:644
#, python-format
msgid "password contains character `%s'"
msgstr ""

#: ../server/rhnUser.py:651
#, python-format
msgid "username should be at least %d characters long"
msgstr ""

#: ../server/rhnUser.py:662
#, python-format
msgid "Cannot register usernames ending with %s"
msgstr ""

#. 0-999: Red Hat client/client-like interaction errors:
#: ../common/rhnException.py:53
msgid "This does not appear to be a valid username."
msgstr ""

#: ../common/rhnException.py:54
msgid "Invalid username and password combination."
msgstr ""

#: ../common/rhnException.py:55
msgid "This login is already taken, or the password is incorrect."
msgstr ""

#: ../common/rhnException.py:56
msgid "Permission denied."
msgstr ""

#: ../common/rhnException.py:57
msgid "Object not found."
msgstr ""

#: ../common/rhnException.py:58
msgid "Invalid System Digital ID."
msgstr ""

#: ../common/rhnException.py:59
msgid "Invalid System Credentials."
msgstr ""

#: ../common/rhnException.py:60
msgid "Could not retrieve user data from database."
msgstr ""

#: ../common/rhnException.py:61
msgid "Valid username required."
msgstr ""

#: ../common/rhnException.py:62
msgid "Valid password required."
msgstr ""

#: ../common/rhnException.py:63
msgid "Minimum username length violation."
msgstr ""

#: ../common/rhnException.py:64
msgid "Minimum password length violation."
msgstr ""

#: ../common/rhnException.py:65
msgid "The username contains invalid characters."
msgstr ""

#: ../common/rhnException.py:66
msgid "File not found."
msgstr ""

#: ../common/rhnException.py:67
msgid "Architecture and OS version combination is not supported."
msgstr ""

#: ../common/rhnException.py:68
msgid "Could not retrieve system data from database."
msgstr ""

#: ../common/rhnException.py:69
msgid "Invalid arguments passed to function."
msgstr ""

#: ../common/rhnException.py:70
msgid "Unable to retrieve requested entry."
msgstr ""

#: ../common/rhnException.py:71
msgid "Could not update database entry."
msgstr ""

#: ../common/rhnException.py:72
msgid "Unsupported server architecture."
msgstr ""

#: ../common/rhnException.py:73
#, python-format
msgid ""
"\n"
"     The anonymous server functionality is no longer available.\n"
"\n"
"     Please re-register this system by running mgr_register as root.\n"
"     Please visit https://%(hostname)s/rhn/systems/SystemEntitlements.do\n"
"     or login at https://%(hostname)s, and from the \"Overview\" tab,\n"
"     select \"Subscription Management\" to enable the service for this "
"system.\n"
"     "
msgstr ""

#: ../common/rhnException.py:81
msgid "Record not available in the database."
msgstr ""

#: ../common/rhnException.py:82
msgid "Invalid value for entry."
msgstr ""

#: ../common/rhnException.py:83
#, python-format
msgid ""
"\n"
"     This system does not have a valid entitlement for SUSE Manager.\n"
"     Please visit https://%(hostname)s/rhn/systems/SystemEntitlements.do\n"
"     or login at https://%(hostname)s, and from the \"Overview\" tab,\n"
"     select \"Subscription Management\" to enable the service for this "
"system.\n"
"     "
msgstr ""

#: ../common/rhnException.py:89
msgid "Channel error"
msgstr ""

#: ../common/rhnException.py:90
msgid "Client session token is invalid."
msgstr ""

#: ../common/rhnException.py:91
msgid "Client session token has expired."
msgstr ""

#: ../common/rhnException.py:92
msgid "You are not authorized to retrieve the requested object."
msgstr ""

#: ../common/rhnException.py:93
msgid "Invalid action"
msgstr ""

#: ../common/rhnException.py:94
msgid "You are not allowed to perform administrative tasks on this system."
msgstr ""

#: ../common/rhnException.py:96
msgid "The system is already subscribed to the specified channel."
msgstr ""

#: ../common/rhnException.py:97
msgid "The system is not currently subscribed to the specified channel."
msgstr ""

#: ../common/rhnException.py:98
msgid "The specified channel does not exist."
msgstr ""

#: ../common/rhnException.py:99
msgid "Invalid channel version."
msgstr ""

#: ../common/rhnException.py:100
msgid ""
"\n"
"     User group membership limits exceeded.\n"
"\n"
"     The current settings for your account do not allow you to add another\n"
"     user account. Please check with the organization administrator for "
"your\n"
"     account if the maximum number of users allowed to subscribe to server "
"needs\n"
"     to be changed.\n"
"     "
msgstr ""

#: ../common/rhnException.py:108
msgid ""
"\n"
"     System group membership limits exceeded.\n"
"\n"
"     The current settings for your account do not allow you to add another\n"
"     system profile. Please check with the organization administrator for "
"your\n"
"     account for modifying the maximum number of system profiles that can "
"be\n"
"     subscribed to your account.\n"
"     "
msgstr ""

#: ../common/rhnException.py:116
msgid ""
"\n"
"     Invalid architecture.\n"
"\n"
"     The architecture of the package is not supported by\n"
"     "
msgstr ""

#: ../common/rhnException.py:121
msgid "Invalid RPM header"
msgstr ""

#: ../common/rhnException.py:122
msgid ""
"\n"
"    This system is already registered as a Salt Minion. If you want to "
"register it as a traditional client\n"
"    please delete it first via the web UI or API and then register it using "
"the traditional tools.\n"
"    "
msgstr ""

#. For the uploading tools
#: ../common/rhnException.py:127
msgid "Invalid information uploaded to the server"
msgstr ""

#: ../common/rhnException.py:128
msgid "Error uploading network interfaces configuration."
msgstr ""

#: ../common/rhnException.py:129
msgid ""
"\n"
"     Package Upload Failed due to uniqueness constraint violation.\n"
"     Make sure the package does not have any duplicate dependencies or\n"
"     does not already exists on the server\n"
"     "
msgstr ""

#: ../common/rhnException.py:134
msgid ""
"\n"
"     The --force rhnpush option is disabled on this server.\n"
"     Please contact your SUSE Manager administrator for more help.\n"
"     "
msgstr ""

#. 60-70: token errors
#: ../common/rhnException.py:140
msgid ""
"\n"
"     The activation token specified could not be found on the server.\n"
"     Please retry with a valid key.\n"
"     "
msgstr ""

#: ../common/rhnException.py:144
msgid "Too many systems registered using this registration token"
msgstr ""

#: ../common/rhnException.py:145
msgid "Token contains invalid, obsoleted or insufficient settings"
msgstr ""

#: ../common/rhnException.py:146
msgid "Conflicting activation tokens"
msgstr ""

#. 70-80: channel subscription errors
#: ../common/rhnException.py:149
msgid ""
"\n"
"     No matching base channel found for your system.\n"
"     "
msgstr ""

#: ../common/rhnException.py:152
msgid ""
"\n"
"     You do not have subscription permission to the designated channel.\n"
"     Please refer to your organization's channel or organization\n"
"     administrators for further details.\n"
"     "
msgstr ""

#: ../common/rhnException.py:157
msgid "You can not unsubscribe from base channel."
msgstr ""

#: ../common/rhnException.py:158
msgid "SUSE Manager or Proxy channel can not be subscribed."
msgstr ""

#. 80-90: server group errors
#: ../common/rhnException.py:161
msgid "There was an error while trying to join the system to its groups"
msgstr ""

#. 90-100: entitlement errors
#: ../common/rhnException.py:164
msgid "Unable to entitle system"
msgstr ""

#. 100-109: e-mail and uuid related faults
#: ../common/rhnException.py:167
msgid "Maximum e-mail length violation."
msgstr ""

#: ../common/rhnException.py:168
msgid "This system has been previously registered."
msgstr ""

#: ../common/rhnException.py:169
msgid "Invalid username"
msgstr ""

#. 140-159 applet errors
#: ../common/rhnException.py:172
msgid "Unable to look up server"
msgstr ""

#. 160-179: OSAD errors
#: ../common/rhnException.py:175
msgid "Required argument is missing"
msgstr ""

#. 600-699: RHEL5+ EN errors
#: ../common/rhnException.py:178
msgid "No entitlement information tied to hardware"
msgstr ""

#: ../common/rhnException.py:179
msgid "Installation number is not entitling"
msgstr ""

#. 700-799: Additional user input verification errors.
#: ../common/rhnException.py:182
msgid "Maximum username length violation"
msgstr ""

#: ../common/rhnException.py:183
msgid "Maximum password length violation"
msgstr ""

#: ../common/rhnException.py:184
msgid "This user has read only API access. Action denied."
msgstr ""

#: ../common/rhnException.py:186
msgid "System Name cannot be less than 1 character"
msgstr ""

#. 1000-1999: Proxy specific errors:
#. issued by a Proxy to the client
#: ../common/rhnException.py:190
msgid "SUSE Manager Proxy error."
msgstr ""

#: ../common/rhnException.py:191
msgid "SUSE Manager Proxy unable to login."
msgstr ""

#. issued by a SUSE Manager Server/Satellite to the proxy
#: ../common/rhnException.py:193
msgid ""
"\n"
"     SUSE Manager Proxy system ID does not match a Spacewalk Proxy Server\n"
"     in the database.\n"
"     "
msgstr ""

#: ../common/rhnException.py:197
msgid "SUSE Manager Proxy session token is invalid."
msgstr ""

#: ../common/rhnException.py:198
msgid "SUSE Manager Proxy session token has expired."
msgstr ""

#. 2000-2999: Red Hat Satellite specific errors:
#: ../common/rhnException.py:202
msgid ""
"\n"
"      user creation is not allowed via mgr_register;\n"
"     please contact your sysadmin to have your account created.\n"
"     "
msgstr ""

#: ../common/rhnException.py:206
msgid ""
"\n"
"     This SUSE Manager server is not allowed to use Inter Server Sync on "
"this server\n"
"     "
msgstr ""

#: ../common/rhnException.py:209
msgid ""
"\n"
"     Inter Server Sync is disabled on this SUSE Manager Server.\n"
"     "
msgstr ""

#. 3000-3999: XML dumper errors:
#: ../common/rhnException.py:214
msgid "Invalid datatype passed"
msgstr ""

#: ../common/rhnException.py:215
msgid "Unable to retrieve channel"
msgstr ""

#: ../common/rhnException.py:216
msgid "Unable to retrieve package"
msgstr ""

#: ../common/rhnException.py:217
msgid "Unable to retrieve erratum"
msgstr ""

#: ../common/rhnException.py:218
msgid "File is missing"
msgstr ""

#: ../common/rhnException.py:219
msgid "Function retrieval error"
msgstr ""

#: ../common/rhnException.py:220
msgid "Function execution error"
msgstr ""

#: ../common/rhnException.py:221
msgid "Missing version string"
msgstr ""

#: ../common/rhnException.py:222
msgid "Invalid version string"
msgstr ""

#: ../common/rhnException.py:223
msgid "Mismatching versions"
msgstr ""

#: ../common/rhnException.py:224
msgid "Invalid channel version"
msgstr ""

#: ../common/rhnException.py:225
msgid "No comps file for channel"
msgstr ""

#: ../common/rhnException.py:226
msgid "Unable to retrieve comps file"
msgstr ""

#. 4000 - 4999: config management errors
#: ../common/rhnException.py:229
msgid "Configuration action missing"
msgstr ""

#: ../common/rhnException.py:230
msgid "File too large"
msgstr ""

#: ../common/rhnException.py:231
msgid "File contains binary data"
msgstr ""

#: ../common/rhnException.py:232
msgid "Configuration channel is not empty"
msgstr ""

#: ../common/rhnException.py:233
msgid "Permission error"
msgstr ""

#: ../common/rhnException.py:234
msgid "Content missing for configuration file"
msgstr ""

#: ../common/rhnException.py:235
msgid "Template delimiters not specified"
msgstr ""

#: ../common/rhnException.py:236
msgid "Configuration channel does not exist"
msgstr ""

#: ../common/rhnException.py:237
msgid "Configuration channel already exists"
msgstr ""

#: ../common/rhnException.py:238
msgid "File missing from configuration channel"
msgstr ""

#: ../common/rhnException.py:239
msgid "Different revision of this file is uploaded"
msgstr ""

#: ../common/rhnException.py:240
msgid "File already uploaded to configuration channel"
msgstr ""

#: ../common/rhnException.py:241
msgid "File size exceeds remaining quota space"
msgstr ""

#: ../common/rhnException.py:242
msgid "Full path of file must be specified"
msgstr ""

#: ../common/rhnException.py:243
msgid "Invalid revision number"
msgstr ""

#: ../common/rhnException.py:244
msgid "Cannot compare files of different file type"
msgstr ""

#. 5000 - 5999: client content uploading errors
#. 5000 - 5099: crash reporting errors
#: ../common/rhnException.py:248
msgid "Crash information is invalid or incomplete"
msgstr ""

#: ../common/rhnException.py:249
msgid "Crash file information is invalid or incomplete"
msgstr ""

#: ../common/rhnException.py:250
msgid "Error composing crash directory path"
msgstr ""

#: ../common/rhnException.py:251
msgid "Error composing crash file path"
msgstr ""

#: ../common/rhnException.py:252 ../common/rhnException.py:259
msgid "Invalid content encoding"
msgstr ""

#: ../common/rhnException.py:253
msgid "Invalid crash name"
msgstr ""

#: ../common/rhnException.py:254
msgid "Crash reporting is disabled for this organization"
msgstr ""

#. 5100 - 5199: scap results reporting error
#: ../common/rhnException.py:256
msgid "SCAP results file transfer is invalid or incomplete"
msgstr ""

#: ../common/rhnException.py:257
msgid "Error composing directory path for detailed SCAP results"
msgstr ""

#: ../common/rhnException.py:258
msgid "Error composing file path for detailed SCAP results"
msgstr ""

#: ../common/rhnException.py:306
msgid ""
"\n"
"     An error has occurred while processing your request. If this problem\n"
"     persists please enter a bug report at scc.suse.com.\n"
"     If you choose to submit the bug report, please be sure to include\n"
"     details of what you were trying to do when this error occurred and\n"
"     details on how to reproduce this problem.\n"
msgstr ""

#: ../common/rhnException.py:358
#, python-format
msgid ""
"Error Message:\n"
"    %s\n"
msgstr ""

#: ../common/rhnException.py:360
#, python-format
msgid "Error Class Code: %s\n"
msgstr ""

#: ../common/rhnException.py:363
#, python-format
msgid "Error Class Info: %s\n"
msgstr ""

#: ../common/rhnException.py:365
#, python-format
msgid "Explanation: %s"
msgstr ""

#: ../common/rhnTB.py:205
#, python-format
msgid "ERROR: %s %s: %s"
msgstr ""

#: ../common/rhnTB.py:207
#, python-format
msgid "TRACEBACK: %s"
msgstr ""

#: ../satellite_tools/disk_dumper/iss.py:1294
#: ../satellite_tools/disk_dumper/iss.py:1298
#, python-format
msgid "format of %s should be at least YYYYMMDD.\n"
msgstr ""

#: ../satellite_tools/messages.py:26
#, python-format
msgid ""
"\n"
"ERROR: executing step %s. Error is:\n"
"%s\n"
msgstr ""

#: ../satellite_tools/messages.py:31
#, python-format
msgid ""
"\n"
"ERROR: there was a problem accessing the channel data from your temporary\n"
"       repository. Did you migrate all of the data from the channel ISOs\n"
"       do this directory? If so, please recheck the channels ISOs, ensure\n"
"       that you have them all, and then iteratively remount and repopulate\n"
"       the temporary repository (%s).\n"
msgstr ""

#: ../satellite_tools/messages.py:39
#, python-format
msgid ""
"\n"
"ERROR: there was a problem synchronizing the information.\n"
"       Error message: %s\n"
msgstr ""

#: ../satellite_tools/messages.py:44
#, python-format
msgid ""
"\n"
"ERROR: There was a problem communicating with the ISS Master.\n"
"       Depending on the specific error details, please review your "
"configuration,\n"
"       basic network connectivity, and/or name resolution, and try again.\n"
"       Error message: %s\n"
msgstr ""

#: ../satellite_tools/messages.py:51
#, python-format
msgid ""
"\n"
"ERROR: There was a problem communicating with the ISS Master.\n"
"       If the master satellite is older than v5.3, it does not have ISS "
"capability.\n"
"       Otherwise, depending on the specific error details, please review "
"your\n"
"       configuration, basic network connectivity, and/or name resolution, "
"and try again.\n"
"       Error message: %s\n"
msgstr ""

#: ../satellite_tools/messages.py:59
#, python-format
msgid ""
"\n"
"ERROR: a child-channel cannot be synced without its parent being synced as\n"
"       well. A parent needs to be either (a) previously synced or (b) "
"synced\n"
"       in tandem with the desired child-channel. Missing parents for this\n"
"       transaction:\n"
"       %s\n"
msgstr ""

#: ../satellite_tools/messages.py:67
#, python-format
msgid ""
"\n"
"ERROR: you are not entitled to sync a channel in this set of channels.\n"
"Please contact your SUSE Manager contact\n"
"%s"
msgstr ""

#: ../satellite_tools/messages.py:72
#, python-format
msgid "  ERROR: not enough free space (%s KB) on device."
msgstr ""

#: ../satellite_tools/messages.py:74
#, python-format
msgid "    %3d/%s Fetch successful: %s (%s bytes)"
msgstr ""

#: ../satellite_tools/messages.py:75
#, python-format
msgid "    Extinct package:  %s"
msgstr ""

#: ../satellite_tools/messages.py:76
#, python-format
msgid "   Total size: %s"
msgstr ""

#: ../satellite_tools/messages.py:77
#, python-format
msgid "      Downloaded %s of %s. Estimated remaining time: %s"
msgstr ""

#: ../satellite_tools/messages.py:78
#, python-format
msgid "    Fetch unsuccessful: %s"
msgstr ""

#: ../satellite_tools/messages.py:79
#, python-format
msgid "   RPM fetch summary: %s"
msgstr ""

#: ../satellite_tools/messages.py:80
#, python-format
msgid "       success: %d"
msgstr ""

#: ../satellite_tools/messages.py:81
#, python-format
msgid "       failed:  %d"
msgstr ""

#: ../satellite_tools/messages.py:82
#, python-format
msgid "       extinct: %d"
msgstr ""

#: ../satellite_tools/messages.py:84
#, python-format
msgid "   Retrieving / parsing *relevant* package metadata: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:85
#, python-format
msgid "   Retrieving / parsing errata data: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:86
#, python-format
msgid "   Retrieving / parsing kickstart data: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:87
#, python-format
msgid "   Retrieving / parsing kickstart tree files: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:88
#, python-format
msgid "   Importing *relevant* package metadata: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:89
msgid "   * WARNING: this may be a slow process."
msgstr ""

#: ../satellite_tools/messages.py:90
msgid "Linking packages to channels"
msgstr ""

#: ../satellite_tools/messages.py:91
#, python-format
msgid "   Importing *relevant* errata: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:92
msgid "   No new kickstartable tree to import"
msgstr ""

#: ../satellite_tools/messages.py:93
#, python-format
msgid "Importing kickstartable trees (%d)"
msgstr ""

#: ../satellite_tools/messages.py:94
#, python-format
msgid "Imported kickstartable trees (%d)"
msgstr ""

#: ../satellite_tools/reposync.py:111 ../satellite_tools/satsync.py:439
msgid "+++ sending log as an email +++"
msgstr ""

#: ../satellite_tools/reposync.py:114
#, python-format
msgid "%s sync. report from %s"
msgstr ""

#: ../satellite_tools/reposync.py:124 ../satellite_tools/satsync.py:449
msgid "+++ email requested, but there is nothing to send +++"
msgstr ""

#: ../satellite_tools/rhn_satellite_activate.py:198
#, python-format
msgid ""
"\"%s\" (specified in commandline)\n"
"could not be opened and read:\n"
"%s"
msgstr ""

#: ../satellite_tools/rhn_satellite_activate.py:205
#, python-format
msgid ""
"\"%s\" could not be opened\n"
"and/or written to:\n"
"%s"
msgstr ""

#: ../satellite_tools/satsync.py:258
#, python-format
msgid "No handler for step %s"
msgstr ""

#. Try one more time - this time it should be faster since
#. everything should be cached
#: ../satellite_tools/satsync.py:270
msgid "Environment changed, trying again..."
msgstr ""

#: ../satellite_tools/satsync.py:277
msgid "ERROR: Encountered IntegrityError: \n"
msgstr ""

#: ../satellite_tools/satsync.py:285
msgid "Repeated failures"
msgstr ""

#: ../satellite_tools/satsync.py:290
#, python-format
msgid ""
"    Import complete:\n"
"        Begin time: %s\n"
"        End time:   %s\n"
"        Elapsed:    %s\n"
"          "
msgstr ""

#: ../satellite_tools/satsync.py:311
msgid "hours"
msgstr ""

#: ../satellite_tools/satsync.py:311
msgid "minutes"
msgstr ""

#: ../satellite_tools/satsync.py:311
msgid "seconds"
msgstr ""

#: ../satellite_tools/satsync.py:357
msgid ""
"ERROR: The dump is missing package data, use --no-rpms to skip this step or "
"fix the content to include package data."
msgstr ""

#. the orgs() method doesn't exist; that's fine we just
#. won't sync the orgs
#: ../satellite_tools/satsync.py:404
msgid "The SUSE Manager master does not support syncing orgs data."
msgstr ""

#: ../satellite_tools/satsync.py:404
msgid "Skipping..."
msgstr ""

#: ../satellite_tools/satsync.py:442
#, python-format
msgid "SUSE Manager Inter Server sync. report from %s"
msgstr ""

#: ../satellite_tools/satsync.py:521
msgid " - file-system synchronization"
msgstr ""

#: ../satellite_tools/satsync.py:533 ../satellite_tools/satsync.py:541
msgid " - live synchronization"
msgstr ""

#: ../satellite_tools/satsync.py:534
#, python-brace-format
msgid ""
"ERROR: Live content synchronizing with RHN Classic Hosted is no longer "
"supported.\n"
"Please use the cdn-sync command instead unless you are attempting to sync "
"from another {PRODUCT_NAME} via Inter-Server-Sync (ISS), or from local "
"content on disk via Channel Dump ISOs."
msgstr ""

#: ../satellite_tools/satsync.py:542
#, python-format
msgid "   url: %s"
msgstr ""

#: ../satellite_tools/satsync.py:543
#, python-format
msgid "   debug/output level: %s"
msgstr ""

#: ../satellite_tools/satsync.py:553
msgid "ERROR: this server must be registered with SUSE Manager."
msgstr ""

#: ../satellite_tools/satsync.py:575
#, python-format
msgid "Retrieving / parsing %s data"
msgstr ""

#: ../satellite_tools/satsync.py:585 ../satellite_tools/satsync.py:600
msgid "*** SYSTEM INTERRUPT CALLED ***"
msgstr ""

#: ../satellite_tools/satsync.py:593
msgid "ERROR: fatal parser exception occurred "
msgstr ""

#: ../satellite_tools/satsync.py:594
#, python-format
msgid "(line: %s, col: %s msg: %s)"
msgstr ""

#: ../satellite_tools/satsync.py:598
#, python-format
msgid "ERROR: parser exception occurred: %s"
msgstr ""

#: ../satellite_tools/satsync.py:603
msgid "ERROR: exception (during parse) occurred: "
msgstr ""

#: ../satellite_tools/satsync.py:604
#, python-format
msgid ""
"   Encountered some errors with %s data (see logs (%s) for more information)"
msgstr ""

#: ../satellite_tools/satsync.py:606
#, python-format
msgid "   Encountered some errors with %s data:"
msgstr ""

#: ../satellite_tools/satsync.py:607
#, python-format
msgid "   ------- %s PARSE/IMPORT ERROR -------"
msgstr ""

#: ../satellite_tools/satsync.py:609
msgid "   ---------------------------------------"
msgstr ""

#: ../satellite_tools/satsync.py:612
#, python-format
msgid "%s data complete"
msgstr ""

#: ../satellite_tools/satsync.py:665
msgid "Retrieving / parsing channel data"
msgstr ""

#: ../satellite_tools/satsync.py:718
msgid "Channel data complete"
msgstr ""

#: ../satellite_tools/satsync.py:736
#, python-format
msgid "%10s import from %s"
msgstr ""

#: ../satellite_tools/satsync.py:739
#, python-format
msgid "%10s import from %s - %s"
msgstr ""

#: ../satellite_tools/satsync.py:743
#, python-format
msgid "%10s"
msgstr ""

#: ../satellite_tools/satsync.py:750
msgid "p"
msgstr ""

#: ../satellite_tools/satsync.py:752
msgid "."
msgstr ""

#: ../satellite_tools/satsync.py:758
msgid "   p = previously imported/synced channel"
msgstr ""

#: ../satellite_tools/satsync.py:759
msgid "   . = channel not yet imported/synced"
msgstr ""

#: ../satellite_tools/satsync.py:765
msgid "   e = channel no longer supported (end-of-service)"
msgstr ""

#: ../satellite_tools/satsync.py:767
msgid "   ? = channel label invalid --- typo?"
msgstr ""

#: ../satellite_tools/satsync.py:771
#, python-format
msgid "   %s:"
msgstr ""

#: ../satellite_tools/satsync.py:772
#, python-format
msgid "      %s %-40s %4s %s"
msgstr ""

#: ../satellite_tools/satsync.py:773
msgid "base-channels"
msgstr ""

#: ../satellite_tools/satsync.py:786 ../satellite_tools/satsync.py:1603
msgid "NONE RELEVANT"
msgstr ""

#: ../satellite_tools/satsync.py:808
msgid "end-of-service"
msgstr ""

#: ../satellite_tools/satsync.py:809
msgid "e"
msgstr ""

#: ../satellite_tools/satsync.py:815
msgid "   typos:"
msgstr ""

#: ../satellite_tools/satsync.py:816
msgid "?"
msgstr ""

#: ../satellite_tools/satsync.py:831
#, python-format
msgid "XXX: imported channels: %s"
msgstr ""

#: ../satellite_tools/satsync.py:832
#, python-format
msgid "XXX:   cached channels: %s"
msgstr ""

#: ../satellite_tools/satsync.py:837
msgid "XXX: list channels called"
msgstr ""

#: ../satellite_tools/satsync.py:855
msgid "ERROR: these channels either do not exist or are not available:"
msgstr ""

#: ../satellite_tools/satsync.py:859
#, python-format
msgid "       (to see a list of channel labels: %s --list-channels)"
msgstr ""

#: ../satellite_tools/satsync.py:904
#, python-format
msgid "   Retrieving / parsing short package metadata: %s (%s)"
msgstr ""

#: ../satellite_tools/satsync.py:965
#, python-format
msgid "Diffing package metadata (what's missing locally?): %s"
msgstr ""

#: ../satellite_tools/satsync.py:971 ../satellite_tools/satsync.py:1254
msgid "Diffing:    "
msgstr ""

#: ../satellite_tools/satsync.py:988
msgid "ERROR: incremental dump skipped"
msgstr ""

#: ../satellite_tools/satsync.py:1079
msgid "Downloading rpm packages"
msgstr ""

#: ../satellite_tools/satsync.py:1084
#, python-format
msgid "   Fetching any missing RPMs: %s (%s)"
msgstr ""

#: ../satellite_tools/satsync.py:1085 ../satellite_tools/satsync.py:1153
msgid "NONE MISSING"
msgstr ""

#: ../satellite_tools/satsync.py:1094
msgid "Processing rpm packages complete"
msgstr ""

#: ../satellite_tools/satsync.py:1121
msgid "Downloading package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1146
msgid "Downloading srpm packages"
msgstr ""

#: ../satellite_tools/satsync.py:1152
#, python-format
msgid "   Fetching any missing SRPMs: %s (%s)"
msgstr ""

#: ../satellite_tools/satsync.py:1249
#, python-format
msgid "Diffing source package metadata (what's missing locally?): %s"
msgstr ""

#: ../satellite_tools/satsync.py:1260
msgid "Downloading source package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1338 ../satellite_tools/satsync.py:2027
#, python-format
msgid "Unable to save file %s: %s"
msgstr ""

#. for
#. Retried a number of times and it still failed; log the
#. file as being failed and move on
#: ../satellite_tools/satsync.py:1345
#, python-format
msgid "Failed to fetch file %s"
msgstr ""

#: ../satellite_tools/satsync.py:1350
msgid "Downloading kickstartable trees metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1365
msgid "Downloading kickstartable trees files"
msgstr ""

#: ../satellite_tools/satsync.py:1504
#, python-format
msgid "Grabbing all patches for channel %s"
msgstr ""

#: ../satellite_tools/satsync.py:1554
msgid "Downloading patch data"
msgstr ""

#: ../satellite_tools/satsync.py:1556
msgid "Forcing download of all patch data for requested channels."
msgstr ""

#: ../satellite_tools/satsync.py:1571
msgid "Downloading patch data complete"
msgstr ""

#: ../satellite_tools/satsync.py:1576 ../satellite_tools/satsync.py:1597
msgid "Downloading:"
msgstr ""

#: ../satellite_tools/satsync.py:1579
msgid " - complete"
msgstr ""

#: ../satellite_tools/satsync.py:1624
msgid "Importing source package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1627
msgid "Importing package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1635
msgid "Importing:  "
msgstr ""

#. not in the cache
#: ../satellite_tools/satsync.py:1703
msgid ""
"Package Not Found in Cache, Clear the Cache "
"to                                  Regenerate it."
msgstr ""

#: ../satellite_tools/satsync.py:1709
msgid "Importing channel patches"
msgstr ""

#: ../satellite_tools/satsync.py:1714
#, python-format
msgid "Importing %s patches for channel %s."
msgstr ""

#. Incomplete configuration
#: ../satellite_tools/satsync.py:2113
msgid "ERROR: server.mount_point not set in the configuration file"
msgstr ""

#: ../satellite_tools/satsync.py:2117
#, python-format
msgid "ERROR: server.mount_point %s do not exist"
msgstr ""

#: ../satellite_tools/satsync.py:2122
#, python-format
msgid "ERROR: path under server.mount_point (%s)  do not exist"
msgstr ""

#: ../satellite_tools/satsync.py:2199
#, python-format
msgid "Commandline: %s"
msgstr ""

#: ../satellite_tools/satsync.py:2202
#, python-format
msgid ""
"DEBUG ONLY: max. batch-size for XML/database-import processing (1..%s).\"man "
"satellite-sync\" for more information."
msgstr ""

#: ../satellite_tools/satsync.py:2205
msgid "alternative SSL CA Cert (fullpath to cert file)"
msgstr ""

#: ../satellite_tools/satsync.py:2207
msgid "process data for this channel only"
msgstr ""

#: ../satellite_tools/satsync.py:2209
msgid ""
"disk dump will be considered to be a full export; see \"man satellite-sync\" "
"for more information."
msgstr ""

#: ../satellite_tools/satsync.py:2212
msgid "existing custom channels will also be synced (unless -c is used)"
msgstr ""

#: ../satellite_tools/satsync.py:2214
#, python-format
msgid ""
"override debug level set in /etc/rhn/rhn.conf (which is currently set at %s)."
msgstr ""

#: ../satellite_tools/satsync.py:2216
#, python-format
msgid "requested version of XML dump (default: %s)"
msgstr ""

#: ../satellite_tools/satsync.py:2218
msgid "e-mail a report of what was synced/imported"
msgstr ""

#: ../satellite_tools/satsync.py:2220
msgid "forcibly process all (not a diff of) patch metadata"
msgstr ""

#: ../satellite_tools/satsync.py:2222
msgid "Do not use an http proxy under any circumstances."
msgstr ""

#: ../satellite_tools/satsync.py:2224
msgid "alternative http proxy (hostname:port)"
msgstr ""

#: ../satellite_tools/satsync.py:2226
msgid "alternative http proxy username"
msgstr ""

#: ../satellite_tools/satsync.py:2228
msgid "alternative http proxy password"
msgstr ""

#: ../satellite_tools/satsync.py:2230
msgid "parent SUSE Manager to import content from"
msgstr ""

#: ../satellite_tools/satsync.py:2232
msgid "list all available channels and exit"
msgstr ""

#: ../satellite_tools/satsync.py:2234
msgid "help on all error codes mgr-inter-sync returns"
msgstr ""

#: ../satellite_tools/satsync.py:2236
msgid "source mount point for import - disk update only"
msgstr ""

#: ../satellite_tools/satsync.py:2238
msgid "do not process patch data"
msgstr ""

#: ../satellite_tools/satsync.py:2240
msgid "do not process kickstart data (provisioning only)"
msgstr ""

#: ../satellite_tools/satsync.py:2242
msgid "do not process full package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:2244
msgid "do not download, or process any RPMs"
msgstr ""

#: ../satellite_tools/satsync.py:2246
msgid "turn off SSL (not recommended)"
msgstr ""

#: ../satellite_tools/satsync.py:2248
msgid "org to which the sync imports data. defaults to the admin account"
msgstr ""

#: ../satellite_tools/satsync.py:2250
msgid "print the configuration and exit"
msgstr ""

#: ../satellite_tools/satsync.py:2252
msgid "alternative server with which to connect (hostname)"
msgstr ""

#: ../satellite_tools/satsync.py:2254
msgid "synchronize to this step (man satellite-sync for more info)"
msgstr ""

#: ../satellite_tools/satsync.py:2256
msgid "write complete data to tempfile before streaming to remainder of app"
msgstr ""

#: ../satellite_tools/satsync.py:2258
msgid "DEBUG ONLY: alternative path to digital system id"
msgstr ""

#: ../satellite_tools/satsync.py:2260
msgid "alternative email address(es) for sync output (--email option)"
msgstr ""

#: ../satellite_tools/satsync.py:2262
msgid "do not remove rpms when importing from local dump"
msgstr ""

#: ../satellite_tools/satsync.py:2264
msgid ""
"the fully qualified domain name of the master Satellite. Valid with --mount-"
"point only. Required if you want to import org data and channel permissions."
msgstr ""

#: ../satellite_tools/satsync.py:2274
#, python-format
msgid "ERROR: these arguments make no sense in this context (try --help): %s"
msgstr ""

#. An SQL error is fatal... crash and burn
#: ../satellite_tools/satsync.py:2286
#, python-format
msgid "ERROR: Can't connect to the database: %s"
msgstr ""

#: ../satellite_tools/satsync.py:2287
msgid "ERROR: Check if your database is running."
msgstr ""

#: ../satellite_tools/satsync.py:2322
#, python-format
msgid "ERROR: --debug-level takes an in integer value within the range %s."
msgstr ""

#: ../satellite_tools/satsync.py:2324
msgid "  0  - little logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2325
msgid "  1  - minimal logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2326
msgid "  2  - normal level of logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2327
msgid "  3  - lots of logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2328
msgid "  4+ - excessive logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2341
msgid "ERROR: The --master option is only valid with the --mount-point option"
msgstr ""

#: ../satellite_tools/satsync.py:2351
#, python-format
msgid "ERROR: Unable to lookup Org Id %s"
msgstr ""

#: ../satellite_tools/satsync.py:2360
msgid ""
"WARNING: --list-channels option overrides any --step option. --step ignored."
msgstr ""

#: ../satellite_tools/satsync.py:2375
#, python-format
msgid ""
"ERROR: '%s' is not a valid step. See 'man mgr-inter-sync' for more detail."
msgstr ""

#: ../satellite_tools/satsync.py:2407
msgid ""
"ERROR: No channels currently imported; try mgr-inter-sync --list-channels; "
"then mgr-inter-sync -c chn0 -c chn1..."
msgstr ""

#. int(None) --> TypeError
#. int('a')  --> ValueError
#: ../satellite_tools/satsync.py:2457 ../satellite_tools/satsync.py:2461
msgid "ERROR: --batch-size must have a value within the range: 1..50"
msgstr ""

#: ../satellite_tools/satsync.py:2469
#, python-format
msgid "ERROR: no such directory %s"
msgstr ""

#: ../satellite_tools/satsync.py:2474
msgid "Error Codes: Returned codes means:"
msgstr ""

#: ../satellite_tools/satsync.py:2475
msgid " -1  - Could not lock file or KeyboardInterrupt or SystemExit"
msgstr ""

#: ../satellite_tools/satsync.py:2476
msgid "  0  - User interrupted or intentional exit"
msgstr ""

#: ../satellite_tools/satsync.py:2477
msgid "  1  - attempting to run more than one instance of mgr-inter-sync."
msgstr ""

#: ../satellite_tools/satsync.py:2478
msgid "  2  - Unable to find synchronization tools."
msgstr ""

#: ../satellite_tools/satsync.py:2479
msgid "  3  - a general socket exception occurred"
msgstr ""

#: ../satellite_tools/satsync.py:2480
msgid "  4  - an SSL error occurred. Recheck your SSL settings."
msgstr ""

#: ../satellite_tools/satsync.py:2481
msgid "  5  - ISS error"
msgstr ""

#: ../satellite_tools/satsync.py:2482
msgid "  6  - unhandled exception occurred"
msgstr ""

#: ../satellite_tools/satsync.py:2483
msgid "  7  - unknown sync error"
msgstr ""

#: ../satellite_tools/satsync.py:2484
msgid "  8  - ERROR: must be root to execute"
msgstr ""

#: ../satellite_tools/satsync.py:2485
msgid "  9  - rpclib fault during synchronization init"
msgstr ""

#: ../satellite_tools/satsync.py:2486
msgid "  10 - synchronization init error"
msgstr ""

#: ../satellite_tools/satsync.py:2487
msgid "  11 - Error parsing XML stream"
msgstr ""

#: ../satellite_tools/satsync.py:2488
msgid "  12 - Channel do not exist"
msgstr ""

#: ../satellite_tools/satsync.py:2489
msgid "  13 - SQL error during importing package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:2490
msgid "  14 - SQL error during linking channel packages"
msgstr ""

#: ../satellite_tools/satsync.py:2491
msgid "  15 - SQL error during xml processing"
msgstr ""

#: ../satellite_tools/satsync.py:2492
msgid "  16 - server.mount_point not set in the configuration file"
msgstr ""

#: ../satellite_tools/satsync.py:2493
msgid ""
"  17 - SQL error during retrieving the channels already imported in the SUSE "
"Manager database"
msgstr ""

#: ../satellite_tools/satsync.py:2494
msgid "  18 - Wrong db connection string in rhn.conf"
msgstr ""

#: ../satellite_tools/satsync.py:2495
msgid "  19 - Bad arguments"
msgstr ""

#: ../satellite_tools/satsync.py:2496
msgid "  20 - Could not connect to db."
msgstr ""

#: ../satellite_tools/satsync.py:2497
msgid "  21 - Bad debug level"
msgstr ""

#: ../satellite_tools/satsync.py:2498
msgid "  22 - Not valid step"
msgstr ""

#: ../satellite_tools/satsync.py:2499
msgid "  24 - no such file"
msgstr ""

#: ../satellite_tools/satsync.py:2500
msgid "  25 - no such directory"
msgstr ""

#: ../satellite_tools/satsync.py:2501
msgid "  26 - mount_point does not exist"
msgstr ""

#: ../satellite_tools/satsync.py:2502
msgid "  27 - No such org"
msgstr ""

#: ../satellite_tools/satsync.py:2503
msgid "  28 - error: --master is only valid with --mount-point"
msgstr ""

#: ../satellite_tools/satsync.py:2510
#, python-format
msgid "ERROR: unknown dump version, try one of %s"
msgstr ""
07070100000076000081B40000000000000000000000016290A0C10000B8A8000000000000000000000000000000000000001B00000000spacewalk-backend/po/it.po    # SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
#
# Translators:
# Bettina De Monti <bdemonti@redhat.it>, 2001.
# Francesco Valente <fvalen@redhat.com>, 2003, 2004.
# Lorenzo Stobbione <lorenzo.stobbione@clsengineering.it>, 2004, 2005, 2006, 2007.
# Valentina Besi <valentina@redhat.it>, 2001.
msgid ""
msgstr ""
"Project-Id-Version: Spacewalk\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-10-16 13:34+0200\n"
"PO-Revision-Date: 2020-10-15 23:49+0000\n"
"Last-Translator: Marina Latini <marina.latini@suse.com>\n"
"Language-Team: Italian <https://l10n.opensuse.org/projects/uyuni/backend/it/"
">\n"
"Language: it\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 3.6.1\n"

#: ../server/apacheAuth.py:66
#, python-format
msgid "incomplete proxy authentication token: %s"
msgstr "token di autenticazione del proxy incompleto: %s"

#: ../server/apacheAuth.py:84
#, python-format
msgid "Sent proxy signature %s does not match ours %s."
msgstr "La firma inviata del proxy %s non corrisponde alla nostra %s."

#: ../server/apacheAuth.py:119
msgid "declined proxy authentication"
msgstr "autenticazione proxy respinta"

#: ../server/apacheRequest.py:59
#, python-format
msgid "Invalid request received (%s)."
msgstr ""

#: ../server/apacheRequest.py:120
#, python-format
msgid ""
"IMPORTANT MESSAGE FOLLOWS:\n"
"%s"
msgstr ""

#: ../server/apacheRequest.py:149
#, python-format
msgid ""
"While running '%s': caught\n"
"%s : %s\n"
msgstr ""

#: ../server/apacheRequest.py:606
#, python-format
msgid "Invalid URI %s"
msgstr ""

#: ../server/configFilesHandler.py:129 ../server/handlers/app/packages.py:192
#: ../server/handlers/xmlrpc/registration.py:215
#: ../server/handlers/xmlrpc/registration.py:1168
#: ../server/handlers/xmlrpc/registration.py:1307
#, python-format
msgid ""
"\n"
"                   %s Account has been deactivated on this server.\n"
"                   Please contact your Org administrator for more help."
msgstr ""
"\n"
"                   %s account Ã¨ stato disattivato su questo server.\n"
"                   Per favore, rivolgiti al tuo amministratore dell'Org per "
"ulteriori informazioni."

#: ../server/handlers/applet/applet.py:78
#, python-brace-format
msgid "Your system was not found in the {PRODUCT_NAME} database"
msgstr "Il tuo sistema non Ã¨ presente nel database di {PRODUCT_NAME}"

#: ../server/handlers/sat/auth.py:45
msgid "ISS is disabled on this server."
msgstr ""

#: ../server/handlers/sat/auth.py:50
#, python-format
msgid "Server \"%s\" is not enabled for ISS."
msgstr ""

#: ../server/handlers/xmlrpc/errata.py:64
#, python-format
msgid "Expected a package name, not: %s"
msgstr ""

#: ../server/handlers/xmlrpc/errata.py:115
#, python-format
msgid "Expected a package, not: %s"
msgstr ""

#: ../server/handlers/xmlrpc/proxy.py:65
#, python-format
msgid "SUSE Manager Proxy service not enabled for server profile: \"%s\""
msgstr ""

#: ../server/handlers/xmlrpc/proxy.py:85
msgid "Invalid session key"
msgstr ""

#: ../server/handlers/xmlrpc/proxy.py:93
msgid "This server ID no longer exists"
msgstr ""

#: ../server/handlers/xmlrpc/queue.py:433
#, python-format
msgid "Invalid action value type %s (%s)"
msgstr ""

#: ../server/handlers/xmlrpc/queue.py:464
#, python-format
msgid "Action %s does not belong to server %s"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:194
msgid "Required data missing"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:198
msgid "Required members missing"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:207
msgid "Attempt to register a system to an invalid username"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:839
msgid "Invalid system release version requested"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1063
msgid ""
"Unable to find a valid network interface, both ipaddr and ip6addr not found."
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1115
#, python-brace-format
msgid "{PRODUCT_NAME} Welcome Message"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1125
msgid "Privacy Statement"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1146
msgid "Expected a dictionary as a product argument"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1374
#, python-format
msgid "Invalid value '%s' for %s (%s)"
msgstr ""

#: ../server/handlers/xmlrpc/scap.py:104
msgid "Invalid system_id/action_id pair."
msgstr ""

#: ../server/handlers/xmlrpc/up2date.py:233
#, python-format
msgid "Invalid value %s (%s)"
msgstr ""

#: ../server/importlib/userAuth.py:98
msgid "You are not authorized to manage packages in the null org"
msgstr ""

#: ../server/importlib/userAuth.py:103
#, python-format
msgid "You are not allowed to manage packages in the %s org"
msgstr ""

#: ../server/importlib/userAuth.py:121
msgid "You are not allowed to perform administrative tasks"
msgstr ""

#: ../server/importlib/userAuth.py:144
#, python-format
msgid ""
"You are not allowed to manage channel %s, or that channel does not exist"
msgstr ""

#: ../server/importlib/userAuth.py:204
#, python-format
msgid ""
"\n"
"               %s Account has been deactivated on this server.\n"
"               Please contact your Org administrator for more help."
msgstr ""

#: ../server/rhnChannel.py:1992
#, python-format
msgid ""
"Your account does not have access to any channels matching "
"(release='%(release)s', arch='%(arch)s')%(www_activation)s"
msgstr ""

#: ../server/rhnChannel.py:2002
msgid ""
"\n"
"If you have a registration number, please register with it first at http://"
"www.redhat.com/apps/activate/ and then try again.\n"
"\n"
msgstr ""

#: ../server/rhnChannel.py:2012
#, python-format
msgid "Insufficient subscription permissions for release (%s, %s"
msgstr ""

#. Various messages that can be reused
#.
#. bretm 02/07/2007 -- when we have better old-client documentation, probably
#. will be safe to get rid of all this crap
#: ../server/rhnChannel.py:2276 ../server/rhnChannel.py:2287
#: ../server/rhnChannel.py:2302
msgid "System Registered but Inactive"
msgstr ""

#: ../server/rhnChannel.py:2277
#, python-format
msgid ""
"\n"
"Invalid Architecture and OS release combination (%s, %s).\n"
"Your system has been registered, but will not receive updates\n"
"because it is not subscribed to a channel. If you have not yet\n"
"activated your product for service, please visit our website at:\n"
"\n"
"     http://www.redhat.com/apps/activate/\n"
"\n"
"...to activate your product."
msgstr ""

#: ../server/rhnChannel.py:2288
#, python-format
msgid ""
"\n"
"Invalid Architecture and OS release combination (%s, %s).\n"
"Your system has been registered, but will not receive updates\n"
"because it could not be subscribed to a base channel.\n"
"Please contact your organization administrator for assistance.\n"
msgstr ""

#: ../server/rhnChannel.py:2295
#, python-format
msgid ""
"\n"
"  This system has been successfully registered, but is not yet entitled\n"
"  to service.  To entitle this system to service, login to the web site at:\n"
"\n"
"  %(entitlement_url)s\n"
msgstr ""

#: ../server/rhnChannel.py:2303
#, python-format
msgid ""
"\n"
"  This system has been successfully registered, but no service entitlements\n"
"  were available.  To entitle this system to service, login to the web site "
"at:\n"
"\n"
"  %(entitlement_url)s\n"
msgstr ""

#: ../server/rhnHandler.py:62
msgid "Please run rhn_register as root on this client"
msgstr ""

#: ../server/rhnHandler.py:75
#, python-format
msgid "Service not enabled for system profile: \"%s\""
msgstr ""

#: ../server/rhnPackage.py:49 ../server/rhnPackage.py:87
#: ../server/rhnPackage.py:107 ../server/rhnPackage.py:158
#, python-format
msgid "Invalid RPM package %s requested"
msgstr ""

#: ../server/rhnPackage.py:112
msgid "Package not found"
msgstr ""

#: ../server/rhnServer/server_class.py:97
#, python-format
msgid "Architecture `%s' is not supported"
msgstr ""

#: ../server/rhnServer/server_token.py:78
#, python-format
msgid "Token `%s' has more than one base channel assigned"
msgstr ""

#: ../server/rhnServer/server_token.py:80
msgid "Conflicting base channels"
msgstr ""

#: ../server/rhnServer/server_token.py:190
#, python-format
msgid "Failed to add server to group %s"
msgstr ""

#: ../server/rhnServer/server_token.py:503
#, python-format
msgid "Maximum usage count of %s reached"
msgstr ""

#: ../server/rhnServer/server_token.py:744
msgid ""
"Stacking of re-registration tokens with different base entitlements is not "
"supported"
msgstr ""

#: ../server/rhnServer/server_token.py:811
#, python-format
msgid "Could not find token '%s'"
msgstr ""

#. Cannot use activation keys from different orgs
#: ../server/rhnServer/server_token.py:843
msgid "Tokens from mismatching orgs"
msgstr ""

#. Two tokens with different kickstart sessions
#: ../server/rhnServer/server_token.py:853
msgid "Kickstart session mismatch"
msgstr ""

#: ../server/rhnServer/server_token.py:877
msgid "Stacking of re-registration tokens is not supported"
msgstr ""

#: ../server/rhnUser.py:289 ../server/rhnUser.py:292
msgid "Invalid username/password combination"
msgstr ""

#. nope, not reserved either
#: ../server/rhnUser.py:467
#, python-format
msgid "Username `%s' has not been reserved"
msgstr ""

#. New accounts have to specify an e-mail address
#: ../server/rhnUser.py:473
msgid "E-mail address not specified"
msgstr ""

#: ../server/rhnUser.py:509
#, python-format
msgid "username should be at least %d characters"
msgstr ""

#: ../server/rhnUser.py:512
#, python-format
msgid "username should be less than %d characters"
msgstr ""

#: ../server/rhnUser.py:523
#, python-format
msgid "username = `%s', invalid character `%s'"
msgstr ""

#: ../server/rhnUser.py:542
#, python-format
msgid "Please limit your e-mail address to %s chars"
msgstr ""

#: ../server/rhnUser.py:623
#, python-format
msgid "password must be at least %d characters"
msgstr ""

#: ../server/rhnUser.py:626
#, python-format
msgid "Password must be shorter than %d characters"
msgstr ""

#: ../server/rhnUser.py:644
#, python-format
msgid "password contains character `%s'"
msgstr ""

#: ../server/rhnUser.py:651
#, python-format
msgid "username should be at least %d characters long"
msgstr ""

#: ../server/rhnUser.py:662
#, python-format
msgid "Cannot register usernames ending with %s"
msgstr ""

#. 0-999: Red Hat client/client-like interaction errors:
#: ../common/rhnException.py:53
msgid "This does not appear to be a valid username."
msgstr ""

#: ../common/rhnException.py:54
msgid "Invalid username and password combination."
msgstr ""

#: ../common/rhnException.py:55
msgid "This login is already taken, or the password is incorrect."
msgstr ""

#: ../common/rhnException.py:56
msgid "Permission denied."
msgstr ""

#: ../common/rhnException.py:57
msgid "Object not found."
msgstr ""

#: ../common/rhnException.py:58
msgid "Invalid System Digital ID."
msgstr ""

#: ../common/rhnException.py:59
msgid "Invalid System Credentials."
msgstr ""

#: ../common/rhnException.py:60
msgid "Could not retrieve user data from database."
msgstr ""

#: ../common/rhnException.py:61
msgid "Valid username required."
msgstr ""

#: ../common/rhnException.py:62
msgid "Valid password required."
msgstr ""

#: ../common/rhnException.py:63
msgid "Minimum username length violation."
msgstr ""

#: ../common/rhnException.py:64
msgid "Minimum password length violation."
msgstr ""

#: ../common/rhnException.py:65
msgid "The username contains invalid characters."
msgstr ""

#: ../common/rhnException.py:66
msgid "File not found."
msgstr ""

#: ../common/rhnException.py:67
msgid "Architecture and OS version combination is not supported."
msgstr ""

#: ../common/rhnException.py:68
msgid "Could not retrieve system data from database."
msgstr ""

#: ../common/rhnException.py:69
msgid "Invalid arguments passed to function."
msgstr ""

#: ../common/rhnException.py:70
msgid "Unable to retrieve requested entry."
msgstr ""

#: ../common/rhnException.py:71
msgid "Could not update database entry."
msgstr ""

#: ../common/rhnException.py:72
msgid "Unsupported server architecture."
msgstr ""

#: ../common/rhnException.py:73
#, python-format
msgid ""
"\n"
"     The anonymous server functionality is no longer available.\n"
"\n"
"     Please re-register this system by running mgr_register as root.\n"
"     Please visit https://%(hostname)s/rhn/systems/SystemEntitlements.do\n"
"     or login at https://%(hostname)s, and from the \"Overview\" tab,\n"
"     select \"Subscription Management\" to enable the service for this "
"system.\n"
"     "
msgstr ""

#: ../common/rhnException.py:81
msgid "Record not available in the database."
msgstr ""

#: ../common/rhnException.py:82
msgid "Invalid value for entry."
msgstr ""

#: ../common/rhnException.py:83
#, python-format
msgid ""
"\n"
"     This system does not have a valid entitlement for SUSE Manager.\n"
"     Please visit https://%(hostname)s/rhn/systems/SystemEntitlements.do\n"
"     or login at https://%(hostname)s, and from the \"Overview\" tab,\n"
"     select \"Subscription Management\" to enable the service for this "
"system.\n"
"     "
msgstr ""

#: ../common/rhnException.py:89
msgid "Channel error"
msgstr ""

#: ../common/rhnException.py:90
msgid "Client session token is invalid."
msgstr ""

#: ../common/rhnException.py:91
msgid "Client session token has expired."
msgstr ""

#: ../common/rhnException.py:92
msgid "You are not authorized to retrieve the requested object."
msgstr ""

#: ../common/rhnException.py:93
msgid "Invalid action"
msgstr ""

#: ../common/rhnException.py:94
msgid "You are not allowed to perform administrative tasks on this system."
msgstr ""

#: ../common/rhnException.py:96
msgid "The system is already subscribed to the specified channel."
msgstr ""

#: ../common/rhnException.py:97
msgid "The system is not currently subscribed to the specified channel."
msgstr ""

#: ../common/rhnException.py:98
msgid "The specified channel does not exist."
msgstr ""

#: ../common/rhnException.py:99
msgid "Invalid channel version."
msgstr ""

#: ../common/rhnException.py:100
msgid ""
"\n"
"     User group membership limits exceeded.\n"
"\n"
"     The current settings for your account do not allow you to add another\n"
"     user account. Please check with the organization administrator for "
"your\n"
"     account if the maximum number of users allowed to subscribe to server "
"needs\n"
"     to be changed.\n"
"     "
msgstr ""

#: ../common/rhnException.py:108
msgid ""
"\n"
"     System group membership limits exceeded.\n"
"\n"
"     The current settings for your account do not allow you to add another\n"
"     system profile. Please check with the organization administrator for "
"your\n"
"     account for modifying the maximum number of system profiles that can "
"be\n"
"     subscribed to your account.\n"
"     "
msgstr ""

#: ../common/rhnException.py:116
msgid ""
"\n"
"     Invalid architecture.\n"
"\n"
"     The architecture of the package is not supported by\n"
"     "
msgstr ""

#: ../common/rhnException.py:121
msgid "Invalid RPM header"
msgstr ""

#: ../common/rhnException.py:122
msgid ""
"\n"
"    This system is already registered as a Salt Minion. If you want to "
"register it as a traditional client\n"
"    please delete it first via the web UI or API and then register it using "
"the traditional tools.\n"
"    "
msgstr ""

#. For the uploading tools
#: ../common/rhnException.py:127
msgid "Invalid information uploaded to the server"
msgstr ""

#: ../common/rhnException.py:128
msgid "Error uploading network interfaces configuration."
msgstr ""

#: ../common/rhnException.py:129
msgid ""
"\n"
"     Package Upload Failed due to uniqueness constraint violation.\n"
"     Make sure the package does not have any duplicate dependencies or\n"
"     does not already exists on the server\n"
"     "
msgstr ""

#: ../common/rhnException.py:134
msgid ""
"\n"
"     The --force rhnpush option is disabled on this server.\n"
"     Please contact your SUSE Manager administrator for more help.\n"
"     "
msgstr ""

#. 60-70: token errors
#: ../common/rhnException.py:140
msgid ""
"\n"
"     The activation token specified could not be found on the server.\n"
"     Please retry with a valid key.\n"
"     "
msgstr ""

#: ../common/rhnException.py:144
msgid "Too many systems registered using this registration token"
msgstr ""

#: ../common/rhnException.py:145
msgid "Token contains invalid, obsoleted or insufficient settings"
msgstr ""

#: ../common/rhnException.py:146
msgid "Conflicting activation tokens"
msgstr ""

#. 70-80: channel subscription errors
#: ../common/rhnException.py:149
msgid ""
"\n"
"     No matching base channel found for your system.\n"
"     "
msgstr ""

#: ../common/rhnException.py:152
msgid ""
"\n"
"     You do not have subscription permission to the designated channel.\n"
"     Please refer to your organization's channel or organization\n"
"     administrators for further details.\n"
"     "
msgstr ""

#: ../common/rhnException.py:157
msgid "You can not unsubscribe from base channel."
msgstr ""

#: ../common/rhnException.py:158
msgid "SUSE Manager or Proxy channel can not be subscribed."
msgstr ""

#. 80-90: server group errors
#: ../common/rhnException.py:161
msgid "There was an error while trying to join the system to its groups"
msgstr ""

#. 90-100: entitlement errors
#: ../common/rhnException.py:164
msgid "Unable to entitle system"
msgstr ""

#. 100-109: e-mail and uuid related faults
#: ../common/rhnException.py:167
msgid "Maximum e-mail length violation."
msgstr ""

#: ../common/rhnException.py:168
msgid "This system has been previously registered."
msgstr ""

#: ../common/rhnException.py:169
msgid "Invalid username"
msgstr ""

#. 140-159 applet errors
#: ../common/rhnException.py:172
msgid "Unable to look up server"
msgstr ""

#. 160-179: OSAD errors
#: ../common/rhnException.py:175
msgid "Required argument is missing"
msgstr ""

#. 600-699: RHEL5+ EN errors
#: ../common/rhnException.py:178
msgid "No entitlement information tied to hardware"
msgstr ""

#: ../common/rhnException.py:179
msgid "Installation number is not entitling"
msgstr ""

#. 700-799: Additional user input verification errors.
#: ../common/rhnException.py:182
msgid "Maximum username length violation"
msgstr ""

#: ../common/rhnException.py:183
msgid "Maximum password length violation"
msgstr ""

#: ../common/rhnException.py:184
msgid "This user has read only API access. Action denied."
msgstr ""

#: ../common/rhnException.py:186
msgid "System Name cannot be less than 1 character"
msgstr ""

#. 1000-1999: Proxy specific errors:
#. issued by a Proxy to the client
#: ../common/rhnException.py:190
msgid "SUSE Manager Proxy error."
msgstr ""

#: ../common/rhnException.py:191
msgid "SUSE Manager Proxy unable to login."
msgstr ""

#. issued by a SUSE Manager Server/Satellite to the proxy
#: ../common/rhnException.py:193
msgid ""
"\n"
"     SUSE Manager Proxy system ID does not match a Spacewalk Proxy Server\n"
"     in the database.\n"
"     "
msgstr ""

#: ../common/rhnException.py:197
msgid "SUSE Manager Proxy session token is invalid."
msgstr ""

#: ../common/rhnException.py:198
msgid "SUSE Manager Proxy session token has expired."
msgstr ""

#. 2000-2999: Red Hat Satellite specific errors:
#: ../common/rhnException.py:202
msgid ""
"\n"
"      user creation is not allowed via mgr_register;\n"
"     please contact your sysadmin to have your account created.\n"
"     "
msgstr ""

#: ../common/rhnException.py:206
msgid ""
"\n"
"     This SUSE Manager server is not allowed to use Inter Server Sync on "
"this server\n"
"     "
msgstr ""

#: ../common/rhnException.py:209
msgid ""
"\n"
"     Inter Server Sync is disabled on this SUSE Manager Server.\n"
"     "
msgstr ""

#. 3000-3999: XML dumper errors:
#: ../common/rhnException.py:214
msgid "Invalid datatype passed"
msgstr ""

#: ../common/rhnException.py:215
msgid "Unable to retrieve channel"
msgstr ""

#: ../common/rhnException.py:216
msgid "Unable to retrieve package"
msgstr ""

#: ../common/rhnException.py:217
msgid "Unable to retrieve erratum"
msgstr ""

#: ../common/rhnException.py:218
msgid "File is missing"
msgstr ""

#: ../common/rhnException.py:219
msgid "Function retrieval error"
msgstr ""

#: ../common/rhnException.py:220
msgid "Function execution error"
msgstr ""

#: ../common/rhnException.py:221
msgid "Missing version string"
msgstr ""

#: ../common/rhnException.py:222
msgid "Invalid version string"
msgstr ""

#: ../common/rhnException.py:223
msgid "Mismatching versions"
msgstr ""

#: ../common/rhnException.py:224
msgid "Invalid channel version"
msgstr ""

#: ../common/rhnException.py:225
msgid "No comps file for channel"
msgstr ""

#: ../common/rhnException.py:226
msgid "Unable to retrieve comps file"
msgstr ""

#. 4000 - 4999: config management errors
#: ../common/rhnException.py:229
msgid "Configuration action missing"
msgstr ""

#: ../common/rhnException.py:230
msgid "File too large"
msgstr ""

#: ../common/rhnException.py:231
msgid "File contains binary data"
msgstr ""

#: ../common/rhnException.py:232
msgid "Configuration channel is not empty"
msgstr ""

#: ../common/rhnException.py:233
msgid "Permission error"
msgstr ""

#: ../common/rhnException.py:234
msgid "Content missing for configuration file"
msgstr ""

#: ../common/rhnException.py:235
msgid "Template delimiters not specified"
msgstr ""

#: ../common/rhnException.py:236
msgid "Configuration channel does not exist"
msgstr ""

#: ../common/rhnException.py:237
msgid "Configuration channel already exists"
msgstr ""

#: ../common/rhnException.py:238
msgid "File missing from configuration channel"
msgstr ""

#: ../common/rhnException.py:239
msgid "Different revision of this file is uploaded"
msgstr ""

#: ../common/rhnException.py:240
msgid "File already uploaded to configuration channel"
msgstr ""

#: ../common/rhnException.py:241
msgid "File size exceeds remaining quota space"
msgstr ""

#: ../common/rhnException.py:242
msgid "Full path of file must be specified"
msgstr ""

#: ../common/rhnException.py:243
msgid "Invalid revision number"
msgstr ""

#: ../common/rhnException.py:244
msgid "Cannot compare files of different file type"
msgstr ""

#. 5000 - 5999: client content uploading errors
#. 5000 - 5099: crash reporting errors
#: ../common/rhnException.py:248
msgid "Crash information is invalid or incomplete"
msgstr ""

#: ../common/rhnException.py:249
msgid "Crash file information is invalid or incomplete"
msgstr ""

#: ../common/rhnException.py:250
msgid "Error composing crash directory path"
msgstr ""

#: ../common/rhnException.py:251
msgid "Error composing crash file path"
msgstr ""

#: ../common/rhnException.py:252 ../common/rhnException.py:259
msgid "Invalid content encoding"
msgstr ""

#: ../common/rhnException.py:253
msgid "Invalid crash name"
msgstr ""

#: ../common/rhnException.py:254
msgid "Crash reporting is disabled for this organization"
msgstr ""

#. 5100 - 5199: scap results reporting error
#: ../common/rhnException.py:256
msgid "SCAP results file transfer is invalid or incomplete"
msgstr ""

#: ../common/rhnException.py:257
msgid "Error composing directory path for detailed SCAP results"
msgstr ""

#: ../common/rhnException.py:258
msgid "Error composing file path for detailed SCAP results"
msgstr ""

#: ../common/rhnException.py:306
msgid ""
"\n"
"     An error has occurred while processing your request. If this problem\n"
"     persists please enter a bug report at scc.suse.com.\n"
"     If you choose to submit the bug report, please be sure to include\n"
"     details of what you were trying to do when this error occurred and\n"
"     details on how to reproduce this problem.\n"
msgstr ""

#: ../common/rhnException.py:358
#, python-format
msgid ""
"Error Message:\n"
"    %s\n"
msgstr ""

#: ../common/rhnException.py:360
#, python-format
msgid "Error Class Code: %s\n"
msgstr ""

#: ../common/rhnException.py:363
#, python-format
msgid "Error Class Info: %s\n"
msgstr ""

#: ../common/rhnException.py:365
#, python-format
msgid "Explanation: %s"
msgstr ""

#: ../common/rhnTB.py:205
#, python-format
msgid "ERROR: %s %s: %s"
msgstr ""

#: ../common/rhnTB.py:207
#, python-format
msgid "TRACEBACK: %s"
msgstr ""

#: ../satellite_tools/disk_dumper/iss.py:1294
#: ../satellite_tools/disk_dumper/iss.py:1298
#, python-format
msgid "format of %s should be at least YYYYMMDD.\n"
msgstr ""

#: ../satellite_tools/messages.py:26
#, python-format
msgid ""
"\n"
"ERROR: executing step %s. Error is:\n"
"%s\n"
msgstr ""

#: ../satellite_tools/messages.py:31
#, python-format
msgid ""
"\n"
"ERROR: there was a problem accessing the channel data from your temporary\n"
"       repository. Did you migrate all of the data from the channel ISOs\n"
"       do this directory? If so, please recheck the channels ISOs, ensure\n"
"       that you have them all, and then iteratively remount and repopulate\n"
"       the temporary repository (%s).\n"
msgstr ""

#: ../satellite_tools/messages.py:39
#, python-format
msgid ""
"\n"
"ERROR: there was a problem synchronizing the information.\n"
"       Error message: %s\n"
msgstr ""

#: ../satellite_tools/messages.py:44
#, python-format
msgid ""
"\n"
"ERROR: There was a problem communicating with the ISS Master.\n"
"       Depending on the specific error details, please review your "
"configuration,\n"
"       basic network connectivity, and/or name resolution, and try again.\n"
"       Error message: %s\n"
msgstr ""

#: ../satellite_tools/messages.py:51
#, python-format
msgid ""
"\n"
"ERROR: There was a problem communicating with the ISS Master.\n"
"       If the master satellite is older than v5.3, it does not have ISS "
"capability.\n"
"       Otherwise, depending on the specific error details, please review "
"your\n"
"       configuration, basic network connectivity, and/or name resolution, "
"and try again.\n"
"       Error message: %s\n"
msgstr ""

#: ../satellite_tools/messages.py:59
#, python-format
msgid ""
"\n"
"ERROR: a child-channel cannot be synced without its parent being synced as\n"
"       well. A parent needs to be either (a) previously synced or (b) "
"synced\n"
"       in tandem with the desired child-channel. Missing parents for this\n"
"       transaction:\n"
"       %s\n"
msgstr ""

#: ../satellite_tools/messages.py:67
#, python-format
msgid ""
"\n"
"ERROR: you are not entitled to sync a channel in this set of channels.\n"
"Please contact your SUSE Manager contact\n"
"%s"
msgstr ""

#: ../satellite_tools/messages.py:72
#, python-format
msgid "  ERROR: not enough free space (%s KB) on device."
msgstr ""

#: ../satellite_tools/messages.py:74
#, python-format
msgid "    %3d/%s Fetch successful: %s (%s bytes)"
msgstr ""

#: ../satellite_tools/messages.py:75
#, python-format
msgid "    Extinct package:  %s"
msgstr ""

#: ../satellite_tools/messages.py:76
#, python-format
msgid "   Total size: %s"
msgstr ""

#: ../satellite_tools/messages.py:77
#, python-format
msgid "      Downloaded %s of %s. Estimated remaining time: %s"
msgstr ""

#: ../satellite_tools/messages.py:78
#, python-format
msgid "    Fetch unsuccessful: %s"
msgstr ""

#: ../satellite_tools/messages.py:79
#, python-format
msgid "   RPM fetch summary: %s"
msgstr ""

#: ../satellite_tools/messages.py:80
#, python-format
msgid "       success: %d"
msgstr ""

#: ../satellite_tools/messages.py:81
#, python-format
msgid "       failed:  %d"
msgstr ""

#: ../satellite_tools/messages.py:82
#, python-format
msgid "       extinct: %d"
msgstr ""

#: ../satellite_tools/messages.py:84
#, python-format
msgid "   Retrieving / parsing *relevant* package metadata: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:85
#, python-format
msgid "   Retrieving / parsing errata data: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:86
#, python-format
msgid "   Retrieving / parsing kickstart data: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:87
#, python-format
msgid "   Retrieving / parsing kickstart tree files: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:88
#, python-format
msgid "   Importing *relevant* package metadata: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:89
msgid "   * WARNING: this may be a slow process."
msgstr ""

#: ../satellite_tools/messages.py:90
msgid "Linking packages to channels"
msgstr ""

#: ../satellite_tools/messages.py:91
#, python-format
msgid "   Importing *relevant* errata: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:92
msgid "   No new kickstartable tree to import"
msgstr ""

#: ../satellite_tools/messages.py:93
#, python-format
msgid "Importing kickstartable trees (%d)"
msgstr ""

#: ../satellite_tools/messages.py:94
#, python-format
msgid "Imported kickstartable trees (%d)"
msgstr ""

#: ../satellite_tools/reposync.py:111 ../satellite_tools/satsync.py:439
msgid "+++ sending log as an email +++"
msgstr ""

#: ../satellite_tools/reposync.py:114
#, python-format
msgid "%s sync. report from %s"
msgstr ""

#: ../satellite_tools/reposync.py:124 ../satellite_tools/satsync.py:449
msgid "+++ email requested, but there is nothing to send +++"
msgstr ""

#: ../satellite_tools/rhn_satellite_activate.py:198
#, python-format
msgid ""
"\"%s\" (specified in commandline)\n"
"could not be opened and read:\n"
"%s"
msgstr ""

#: ../satellite_tools/rhn_satellite_activate.py:205
#, python-format
msgid ""
"\"%s\" could not be opened\n"
"and/or written to:\n"
"%s"
msgstr ""

#: ../satellite_tools/satsync.py:258
#, python-format
msgid "No handler for step %s"
msgstr ""

#. Try one more time - this time it should be faster since
#. everything should be cached
#: ../satellite_tools/satsync.py:270
msgid "Environment changed, trying again..."
msgstr ""

#: ../satellite_tools/satsync.py:277
msgid "ERROR: Encountered IntegrityError: \n"
msgstr ""

#: ../satellite_tools/satsync.py:285
msgid "Repeated failures"
msgstr ""

#: ../satellite_tools/satsync.py:290
#, python-format
msgid ""
"    Import complete:\n"
"        Begin time: %s\n"
"        End time:   %s\n"
"        Elapsed:    %s\n"
"          "
msgstr ""

#: ../satellite_tools/satsync.py:311
msgid "hours"
msgstr ""

#: ../satellite_tools/satsync.py:311
msgid "minutes"
msgstr ""

#: ../satellite_tools/satsync.py:311
msgid "seconds"
msgstr ""

#: ../satellite_tools/satsync.py:357
msgid ""
"ERROR: The dump is missing package data, use --no-rpms to skip this step or "
"fix the content to include package data."
msgstr ""

#. the orgs() method doesn't exist; that's fine we just
#. won't sync the orgs
#: ../satellite_tools/satsync.py:404
msgid "The SUSE Manager master does not support syncing orgs data."
msgstr ""

#: ../satellite_tools/satsync.py:404
msgid "Skipping..."
msgstr ""

#: ../satellite_tools/satsync.py:442
#, python-format
msgid "SUSE Manager Inter Server sync. report from %s"
msgstr ""

#: ../satellite_tools/satsync.py:521
msgid " - file-system synchronization"
msgstr ""

#: ../satellite_tools/satsync.py:533 ../satellite_tools/satsync.py:541
msgid " - live synchronization"
msgstr ""

#: ../satellite_tools/satsync.py:534
#, python-brace-format
msgid ""
"ERROR: Live content synchronizing with RHN Classic Hosted is no longer "
"supported.\n"
"Please use the cdn-sync command instead unless you are attempting to sync "
"from another {PRODUCT_NAME} via Inter-Server-Sync (ISS), or from local "
"content on disk via Channel Dump ISOs."
msgstr ""

#: ../satellite_tools/satsync.py:542
#, python-format
msgid "   url: %s"
msgstr ""

#: ../satellite_tools/satsync.py:543
#, python-format
msgid "   debug/output level: %s"
msgstr ""

#: ../satellite_tools/satsync.py:553
msgid "ERROR: this server must be registered with SUSE Manager."
msgstr ""

#: ../satellite_tools/satsync.py:575
#, python-format
msgid "Retrieving / parsing %s data"
msgstr ""

#: ../satellite_tools/satsync.py:585 ../satellite_tools/satsync.py:600
msgid "*** SYSTEM INTERRUPT CALLED ***"
msgstr ""

#: ../satellite_tools/satsync.py:593
msgid "ERROR: fatal parser exception occurred "
msgstr ""

#: ../satellite_tools/satsync.py:594
#, python-format
msgid "(line: %s, col: %s msg: %s)"
msgstr ""

#: ../satellite_tools/satsync.py:598
#, python-format
msgid "ERROR: parser exception occurred: %s"
msgstr ""

#: ../satellite_tools/satsync.py:603
msgid "ERROR: exception (during parse) occurred: "
msgstr ""

#: ../satellite_tools/satsync.py:604
#, python-format
msgid ""
"   Encountered some errors with %s data (see logs (%s) for more information)"
msgstr ""

#: ../satellite_tools/satsync.py:606
#, python-format
msgid "   Encountered some errors with %s data:"
msgstr ""

#: ../satellite_tools/satsync.py:607
#, python-format
msgid "   ------- %s PARSE/IMPORT ERROR -------"
msgstr ""

#: ../satellite_tools/satsync.py:609
msgid "   ---------------------------------------"
msgstr ""

#: ../satellite_tools/satsync.py:612
#, python-format
msgid "%s data complete"
msgstr ""

#: ../satellite_tools/satsync.py:665
msgid "Retrieving / parsing channel data"
msgstr ""

#: ../satellite_tools/satsync.py:718
msgid "Channel data complete"
msgstr ""

#: ../satellite_tools/satsync.py:736
#, python-format
msgid "%10s import from %s"
msgstr ""

#: ../satellite_tools/satsync.py:739
#, python-format
msgid "%10s import from %s - %s"
msgstr ""

#: ../satellite_tools/satsync.py:743
#, python-format
msgid "%10s"
msgstr ""

#: ../satellite_tools/satsync.py:750
msgid "p"
msgstr ""

#: ../satellite_tools/satsync.py:752
msgid "."
msgstr ""

#: ../satellite_tools/satsync.py:758
msgid "   p = previously imported/synced channel"
msgstr ""

#: ../satellite_tools/satsync.py:759
msgid "   . = channel not yet imported/synced"
msgstr ""

#: ../satellite_tools/satsync.py:765
msgid "   e = channel no longer supported (end-of-service)"
msgstr ""

#: ../satellite_tools/satsync.py:767
msgid "   ? = channel label invalid --- typo?"
msgstr ""

#: ../satellite_tools/satsync.py:771
#, python-format
msgid "   %s:"
msgstr ""

#: ../satellite_tools/satsync.py:772
#, python-format
msgid "      %s %-40s %4s %s"
msgstr ""

#: ../satellite_tools/satsync.py:773
msgid "base-channels"
msgstr ""

#: ../satellite_tools/satsync.py:786 ../satellite_tools/satsync.py:1603
msgid "NONE RELEVANT"
msgstr ""

#: ../satellite_tools/satsync.py:808
msgid "end-of-service"
msgstr ""

#: ../satellite_tools/satsync.py:809
msgid "e"
msgstr ""

#: ../satellite_tools/satsync.py:815
msgid "   typos:"
msgstr ""

#: ../satellite_tools/satsync.py:816
msgid "?"
msgstr ""

#: ../satellite_tools/satsync.py:831
#, python-format
msgid "XXX: imported channels: %s"
msgstr ""

#: ../satellite_tools/satsync.py:832
#, python-format
msgid "XXX:   cached channels: %s"
msgstr ""

#: ../satellite_tools/satsync.py:837
msgid "XXX: list channels called"
msgstr ""

#: ../satellite_tools/satsync.py:855
msgid "ERROR: these channels either do not exist or are not available:"
msgstr ""

#: ../satellite_tools/satsync.py:859
#, python-format
msgid "       (to see a list of channel labels: %s --list-channels)"
msgstr ""

#: ../satellite_tools/satsync.py:904
#, python-format
msgid "   Retrieving / parsing short package metadata: %s (%s)"
msgstr ""

#: ../satellite_tools/satsync.py:965
#, python-format
msgid "Diffing package metadata (what's missing locally?): %s"
msgstr ""

#: ../satellite_tools/satsync.py:971 ../satellite_tools/satsync.py:1254
msgid "Diffing:    "
msgstr ""

#: ../satellite_tools/satsync.py:988
msgid "ERROR: incremental dump skipped"
msgstr ""

#: ../satellite_tools/satsync.py:1079
msgid "Downloading rpm packages"
msgstr ""

#: ../satellite_tools/satsync.py:1084
#, python-format
msgid "   Fetching any missing RPMs: %s (%s)"
msgstr ""

#: ../satellite_tools/satsync.py:1085 ../satellite_tools/satsync.py:1153
msgid "NONE MISSING"
msgstr ""

#: ../satellite_tools/satsync.py:1094
msgid "Processing rpm packages complete"
msgstr ""

#: ../satellite_tools/satsync.py:1121
msgid "Downloading package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1146
msgid "Downloading srpm packages"
msgstr ""

#: ../satellite_tools/satsync.py:1152
#, python-format
msgid "   Fetching any missing SRPMs: %s (%s)"
msgstr ""

#: ../satellite_tools/satsync.py:1249
#, python-format
msgid "Diffing source package metadata (what's missing locally?): %s"
msgstr ""

#: ../satellite_tools/satsync.py:1260
msgid "Downloading source package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1338 ../satellite_tools/satsync.py:2027
#, python-format
msgid "Unable to save file %s: %s"
msgstr ""

#. for
#. Retried a number of times and it still failed; log the
#. file as being failed and move on
#: ../satellite_tools/satsync.py:1345
#, python-format
msgid "Failed to fetch file %s"
msgstr ""

#: ../satellite_tools/satsync.py:1350
msgid "Downloading kickstartable trees metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1365
msgid "Downloading kickstartable trees files"
msgstr ""

#: ../satellite_tools/satsync.py:1504
#, python-format
msgid "Grabbing all patches for channel %s"
msgstr ""

#: ../satellite_tools/satsync.py:1554
msgid "Downloading patch data"
msgstr ""

#: ../satellite_tools/satsync.py:1556
msgid "Forcing download of all patch data for requested channels."
msgstr ""

#: ../satellite_tools/satsync.py:1571
msgid "Downloading patch data complete"
msgstr ""

#: ../satellite_tools/satsync.py:1576 ../satellite_tools/satsync.py:1597
msgid "Downloading:"
msgstr ""

#: ../satellite_tools/satsync.py:1579
msgid " - complete"
msgstr ""

#: ../satellite_tools/satsync.py:1624
msgid "Importing source package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1627
msgid "Importing package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1635
msgid "Importing:  "
msgstr ""

#. not in the cache
#: ../satellite_tools/satsync.py:1703
msgid ""
"Package Not Found in Cache, Clear the Cache "
"to                                  Regenerate it."
msgstr ""

#: ../satellite_tools/satsync.py:1709
msgid "Importing channel patches"
msgstr ""

#: ../satellite_tools/satsync.py:1714
#, python-format
msgid "Importing %s patches for channel %s."
msgstr ""

#. Incomplete configuration
#: ../satellite_tools/satsync.py:2113
msgid "ERROR: server.mount_point not set in the configuration file"
msgstr ""

#: ../satellite_tools/satsync.py:2117
#, python-format
msgid "ERROR: server.mount_point %s do not exist"
msgstr ""

#: ../satellite_tools/satsync.py:2122
#, python-format
msgid "ERROR: path under server.mount_point (%s)  do not exist"
msgstr ""

#: ../satellite_tools/satsync.py:2199
#, python-format
msgid "Commandline: %s"
msgstr ""

#: ../satellite_tools/satsync.py:2202
#, python-format
msgid ""
"DEBUG ONLY: max. batch-size for XML/database-import processing (1..%s).\"man "
"satellite-sync\" for more information."
msgstr ""

#: ../satellite_tools/satsync.py:2205
msgid "alternative SSL CA Cert (fullpath to cert file)"
msgstr ""

#: ../satellite_tools/satsync.py:2207
msgid "process data for this channel only"
msgstr ""

#: ../satellite_tools/satsync.py:2209
msgid ""
"disk dump will be considered to be a full export; see \"man satellite-sync\" "
"for more information."
msgstr ""

#: ../satellite_tools/satsync.py:2212
msgid "existing custom channels will also be synced (unless -c is used)"
msgstr ""

#: ../satellite_tools/satsync.py:2214
#, python-format
msgid ""
"override debug level set in /etc/rhn/rhn.conf (which is currently set at %s)."
msgstr ""

#: ../satellite_tools/satsync.py:2216
#, python-format
msgid "requested version of XML dump (default: %s)"
msgstr ""

#: ../satellite_tools/satsync.py:2218
msgid "e-mail a report of what was synced/imported"
msgstr ""

#: ../satellite_tools/satsync.py:2220
msgid "forcibly process all (not a diff of) patch metadata"
msgstr ""

#: ../satellite_tools/satsync.py:2222
msgid "Do not use an http proxy under any circumstances."
msgstr ""

#: ../satellite_tools/satsync.py:2224
msgid "alternative http proxy (hostname:port)"
msgstr ""

#: ../satellite_tools/satsync.py:2226
msgid "alternative http proxy username"
msgstr ""

#: ../satellite_tools/satsync.py:2228
msgid "alternative http proxy password"
msgstr ""

#: ../satellite_tools/satsync.py:2230
msgid "parent SUSE Manager to import content from"
msgstr ""

#: ../satellite_tools/satsync.py:2232
msgid "list all available channels and exit"
msgstr ""

#: ../satellite_tools/satsync.py:2234
msgid "help on all error codes mgr-inter-sync returns"
msgstr ""

#: ../satellite_tools/satsync.py:2236
msgid "source mount point for import - disk update only"
msgstr ""

#: ../satellite_tools/satsync.py:2238
msgid "do not process patch data"
msgstr ""

#: ../satellite_tools/satsync.py:2240
msgid "do not process kickstart data (provisioning only)"
msgstr ""

#: ../satellite_tools/satsync.py:2242
msgid "do not process full package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:2244
msgid "do not download, or process any RPMs"
msgstr ""

#: ../satellite_tools/satsync.py:2246
msgid "turn off SSL (not recommended)"
msgstr ""

#: ../satellite_tools/satsync.py:2248
msgid "org to which the sync imports data. defaults to the admin account"
msgstr ""

#: ../satellite_tools/satsync.py:2250
msgid "print the configuration and exit"
msgstr ""

#: ../satellite_tools/satsync.py:2252
msgid "alternative server with which to connect (hostname)"
msgstr ""

#: ../satellite_tools/satsync.py:2254
msgid "synchronize to this step (man satellite-sync for more info)"
msgstr ""

#: ../satellite_tools/satsync.py:2256
msgid "write complete data to tempfile before streaming to remainder of app"
msgstr ""

#: ../satellite_tools/satsync.py:2258
msgid "DEBUG ONLY: alternative path to digital system id"
msgstr ""

#: ../satellite_tools/satsync.py:2260
msgid "alternative email address(es) for sync output (--email option)"
msgstr ""

#: ../satellite_tools/satsync.py:2262
msgid "do not remove rpms when importing from local dump"
msgstr ""

#: ../satellite_tools/satsync.py:2264
msgid ""
"the fully qualified domain name of the master Satellite. Valid with --mount-"
"point only. Required if you want to import org data and channel permissions."
msgstr ""

#: ../satellite_tools/satsync.py:2274
#, python-format
msgid "ERROR: these arguments make no sense in this context (try --help): %s"
msgstr ""

#. An SQL error is fatal... crash and burn
#: ../satellite_tools/satsync.py:2286
#, python-format
msgid "ERROR: Can't connect to the database: %s"
msgstr ""

#: ../satellite_tools/satsync.py:2287
msgid "ERROR: Check if your database is running."
msgstr ""

#: ../satellite_tools/satsync.py:2322
#, python-format
msgid "ERROR: --debug-level takes an in integer value within the range %s."
msgstr ""

#: ../satellite_tools/satsync.py:2324
msgid "  0  - little logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2325
msgid "  1  - minimal logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2326
msgid "  2  - normal level of logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2327
msgid "  3  - lots of logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2328
msgid "  4+ - excessive logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2341
msgid "ERROR: The --master option is only valid with the --mount-point option"
msgstr ""

#: ../satellite_tools/satsync.py:2351
#, python-format
msgid "ERROR: Unable to lookup Org Id %s"
msgstr ""

#: ../satellite_tools/satsync.py:2360
msgid ""
"WARNING: --list-channels option overrides any --step option. --step ignored."
msgstr ""

#: ../satellite_tools/satsync.py:2375
#, python-format
msgid ""
"ERROR: '%s' is not a valid step. See 'man mgr-inter-sync' for more detail."
msgstr ""

#: ../satellite_tools/satsync.py:2407
msgid ""
"ERROR: No channels currently imported; try mgr-inter-sync --list-channels; "
"then mgr-inter-sync -c chn0 -c chn1..."
msgstr ""

#. int(None) --> TypeError
#. int('a')  --> ValueError
#: ../satellite_tools/satsync.py:2457 ../satellite_tools/satsync.py:2461
msgid "ERROR: --batch-size must have a value within the range: 1..50"
msgstr ""

#: ../satellite_tools/satsync.py:2469
#, python-format
msgid "ERROR: no such directory %s"
msgstr ""

#: ../satellite_tools/satsync.py:2474
msgid "Error Codes: Returned codes means:"
msgstr ""

#: ../satellite_tools/satsync.py:2475
msgid " -1  - Could not lock file or KeyboardInterrupt or SystemExit"
msgstr ""

#: ../satellite_tools/satsync.py:2476
msgid "  0  - User interrupted or intentional exit"
msgstr ""

#: ../satellite_tools/satsync.py:2477
msgid "  1  - attempting to run more than one instance of mgr-inter-sync."
msgstr ""

#: ../satellite_tools/satsync.py:2478
msgid "  2  - Unable to find synchronization tools."
msgstr ""

#: ../satellite_tools/satsync.py:2479
msgid "  3  - a general socket exception occurred"
msgstr ""

#: ../satellite_tools/satsync.py:2480
msgid "  4  - an SSL error occurred. Recheck your SSL settings."
msgstr ""

#: ../satellite_tools/satsync.py:2481
msgid "  5  - ISS error"
msgstr ""

#: ../satellite_tools/satsync.py:2482
msgid "  6  - unhandled exception occurred"
msgstr ""

#: ../satellite_tools/satsync.py:2483
msgid "  7  - unknown sync error"
msgstr ""

#: ../satellite_tools/satsync.py:2484
msgid "  8  - ERROR: must be root to execute"
msgstr ""

#: ../satellite_tools/satsync.py:2485
msgid "  9  - rpclib fault during synchronization init"
msgstr ""

#: ../satellite_tools/satsync.py:2486
msgid "  10 - synchronization init error"
msgstr ""

#: ../satellite_tools/satsync.py:2487
msgid "  11 - Error parsing XML stream"
msgstr ""

#: ../satellite_tools/satsync.py:2488
msgid "  12 - Channel do not exist"
msgstr ""

#: ../satellite_tools/satsync.py:2489
msgid "  13 - SQL error during importing package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:2490
msgid "  14 - SQL error during linking channel packages"
msgstr ""

#: ../satellite_tools/satsync.py:2491
msgid "  15 - SQL error during xml processing"
msgstr ""

#: ../satellite_tools/satsync.py:2492
msgid "  16 - server.mount_point not set in the configuration file"
msgstr ""

#: ../satellite_tools/satsync.py:2493
msgid ""
"  17 - SQL error during retrieving the channels already imported in the SUSE "
"Manager database"
msgstr ""

#: ../satellite_tools/satsync.py:2494
msgid "  18 - Wrong db connection string in rhn.conf"
msgstr ""

#: ../satellite_tools/satsync.py:2495
msgid "  19 - Bad arguments"
msgstr ""

#: ../satellite_tools/satsync.py:2496
msgid "  20 - Could not connect to db."
msgstr ""

#: ../satellite_tools/satsync.py:2497
msgid "  21 - Bad debug level"
msgstr ""

#: ../satellite_tools/satsync.py:2498
msgid "  22 - Not valid step"
msgstr ""

#: ../satellite_tools/satsync.py:2499
msgid "  24 - no such file"
msgstr ""

#: ../satellite_tools/satsync.py:2500
msgid "  25 - no such directory"
msgstr ""

#: ../satellite_tools/satsync.py:2501
msgid "  26 - mount_point does not exist"
msgstr ""

#: ../satellite_tools/satsync.py:2502
msgid "  27 - No such org"
msgstr ""

#: ../satellite_tools/satsync.py:2503
msgid "  28 - error: --master is only valid with --mount-point"
msgstr ""

#: ../satellite_tools/satsync.py:2510
#, python-format
msgid "ERROR: unknown dump version, try one of %s"
msgstr ""
07070100000077000081B40000000000000000000000016290A0C100013510000000000000000000000000000000000000001B00000000spacewalk-backend/po/ja.po    # SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
#
# Translators:
# Hirofumi Saito <hi_saito@yk.rim.or.jp>, 2004.
# kiyoto james hashida <khashida@brisbane.redhat.com>, 2007.
# Kiyoto James Hashida <khashida@redhat.com>, 2006.
# Noriko Mizumoto <noriko@redhat.com>, 2004-2007.
# noriko <noriko@fedoraproject.org>, 2011.
# Tadashi Jokagi <fedora@elf.no-ip.org>, 2005.
# Yukihiro Nakai <ynakai@redhat.com>, 2001.
# Jiri Dostal <jdostal@redhat.com>, 2018. #zanata
msgid ""
msgstr ""
"Project-Id-Version: Spacewalk\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-10-16 13:34+0200\n"
"PO-Revision-Date: 2020-09-26 01:48+0000\n"
"Last-Translator: Yasuhiko Kamata <belphegor@belbel.or.jp>\n"
"Language-Team: Japanese <https://l10n.opensuse.org/projects/uyuni/backend/ja/"
">\n"
"Language: ja\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: Weblate 3.6.1\n"

#: ../server/apacheAuth.py:66
#, python-format
msgid "incomplete proxy authentication token: %s"
msgstr "ä¸å®Œå…¨ãªãƒ—ãƒ­ã‚­ã‚·èªè¨¼ãƒˆãƒ¼ã‚¯ãƒ³ã§ã™: %s"

#: ../server/apacheAuth.py:84
#, python-format
msgid "Sent proxy signature %s does not match ours %s."
msgstr "é€ä¿¡ã•ã‚ŒãŸãƒ—ãƒ­ã‚­ã‚·ç½²å %s ãŒã“ã¡ã‚‰å´ã® %s ã¨ä¸€è‡´ã—ã¾ã›ã‚“ã€‚"

#: ../server/apacheAuth.py:119
msgid "declined proxy authentication"
msgstr "ãƒ—ãƒ­ã‚­ã‚·èªè¨¼ãŒæ‹’å¦ã•ã‚Œã¾ã—ãŸ"

#: ../server/apacheRequest.py:59
#, python-format
msgid "Invalid request received (%s)."
msgstr "ç„¡åŠ¹ãªè¦æ±‚ã‚’å—ã‘å–ã‚Šã¾ã—ãŸ (%s)ã€‚"

#: ../server/apacheRequest.py:120
#, python-format
msgid ""
"IMPORTANT MESSAGE FOLLOWS:\n"
"%s"
msgstr ""
"é‡è¦ãªãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã§ã™:\n"
"%s"

#: ../server/apacheRequest.py:149
#, python-format
msgid ""
"While running '%s': caught\n"
"%s : %s\n"
msgstr ""
"ã€Œ%sã€ã®å®Ÿè¡Œä¸­: æ¬¡ã‚’ã‚­ãƒ£ãƒƒãƒã—ã¾ã—ãŸ\n"
"%s : %s\n"

#: ../server/apacheRequest.py:606
#, python-format
msgid "Invalid URI %s"
msgstr "ç„¡åŠ¹ãª URI %s"

#: ../server/configFilesHandler.py:129 ../server/handlers/app/packages.py:192
#: ../server/handlers/xmlrpc/registration.py:215
#: ../server/handlers/xmlrpc/registration.py:1168
#: ../server/handlers/xmlrpc/registration.py:1307
#, python-format
msgid ""
"\n"
"                   %s Account has been deactivated on this server.\n"
"                   Please contact your Org administrator for more help."
msgstr ""
"\n"
"                   %s ã‚¢ã‚«ã‚¦ãƒ³ãƒˆã¯æœ¬ã‚µãƒ¼ãƒãƒ¼ä¸Šã§ã¯éžã‚¢ã‚¯ãƒ†ã‚£ãƒ–ã«ãªã£ã¦ã„ã¾"
"ã™ã€‚\n"
"                   çµ„ç¹”ã®ç®¡ç†è€…ã«ãŠå•ã„åˆã‚ã›ãã ã•ã„ã€‚"

#: ../server/handlers/applet/applet.py:78
#, python-brace-format
msgid "Your system was not found in the {PRODUCT_NAME} database"
msgstr "ã‚·ã‚¹ãƒ†ãƒ ãŒ {PRODUCT_NAME} ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹å†…ã«ã¯è¦‹ã¤ã‹ã‚Šã¾ã›ã‚“ã§ã—ãŸ"

#: ../server/handlers/sat/auth.py:45
msgid "ISS is disabled on this server."
msgstr "ã“ã®ã‚µãƒ¼ãƒã§ã¯ ISS ãŒç„¡åŠ¹åŒ–ã•ã‚Œã¦ã„ã¾ã™ã€‚"

#: ../server/handlers/sat/auth.py:50
#, python-format
msgid "Server \"%s\" is not enabled for ISS."
msgstr "ã‚µãƒ¼ãƒãƒ¼ã€Œ%sã€ã¯ ISS ã«æœ‰åŠ¹ã«ãªã£ã¦ã„ã¾ã›ã‚“ã€‚"

#: ../server/handlers/xmlrpc/errata.py:64
#, python-format
msgid "Expected a package name, not: %s"
msgstr "ãƒ‘ãƒƒã‚±ãƒ¼ã‚¸åãŒæœŸå¾…ã•ã‚Œã¦ã„ã¾ã™ã€æ¬¡ã§ã¯ã‚ã‚Šã¾ã›ã‚“: %s"

#: ../server/handlers/xmlrpc/errata.py:115
#, python-format
msgid "Expected a package, not: %s"
msgstr "ãƒ‘ãƒƒã‚±ãƒ¼ã‚¸ãŒæœŸå¾…ã•ã‚Œã¦ã„ã¾ã™ã€ æ¬¡ã§ã¯ã‚ã‚Šã¾ã›ã‚“: %s"

#: ../server/handlers/xmlrpc/proxy.py:65
#, python-format
msgid "SUSE Manager Proxy service not enabled for server profile: \"%s\""
msgstr ""
"ã‚µãƒ¼ãƒãƒ—ãƒ­ãƒ•ã‚¡ã‚¤ãƒ«ã«å¯¾ã—ã¦ SUSE Manager Proxy ã‚µãƒ¼ãƒ“ã‚¹ãŒæœ‰åŠ¹åŒ–ã•ã‚Œã¦ã„ã¾ã›"
"ã‚“: \"%s\""

#: ../server/handlers/xmlrpc/proxy.py:85
msgid "Invalid session key"
msgstr "ç„¡åŠ¹ãªã‚»ãƒƒã‚·ãƒ§ãƒ³ã‚­ãƒ¼"

#: ../server/handlers/xmlrpc/proxy.py:93
msgid "This server ID no longer exists"
msgstr "ã“ã®ã‚µãƒ¼ãƒãƒ¼ ID ã¯æ—¢ã«ãªããªã‚Šã¾ã—ãŸ"

#: ../server/handlers/xmlrpc/queue.py:433
#, python-format
msgid "Invalid action value type %s (%s)"
msgstr "ç„¡åŠ¹ãªå‹•ä½œå€¤ã‚¿ã‚¤ãƒ— %s (%s)"

#: ../server/handlers/xmlrpc/queue.py:464
#, python-format
msgid "Action %s does not belong to server %s"
msgstr "å‹•ä½œ %s ã¯ã‚µãƒ¼ãƒãƒ¼ %s ã«å±žã—ã¦ã„ã¾ã›ã‚“"

#: ../server/handlers/xmlrpc/registration.py:194
msgid "Required data missing"
msgstr "å¿…è¦ãªãƒ‡ãƒ¼ã‚¿ãŒè¶³ã‚Šã¾ã›ã‚“"

#: ../server/handlers/xmlrpc/registration.py:198
msgid "Required members missing"
msgstr "å¿…è¦ãªãƒ¡ãƒ³ãƒãƒ¼ãŒè¶³ã‚Šã¾ã›ã‚“"

#: ../server/handlers/xmlrpc/registration.py:207
msgid "Attempt to register a system to an invalid username"
msgstr "ã‚·ã‚¹ãƒ†ãƒ ã‚’ç„¡åŠ¹ãªãƒ¦ãƒ¼ã‚¶ãƒ¼åã«ç™»éŒ²ã—ã‚ˆã†ã¨ã—ã¦ã„ã¾ã™"

#: ../server/handlers/xmlrpc/registration.py:839
msgid "Invalid system release version requested"
msgstr "ç„¡åŠ¹ãªã‚·ã‚¹ãƒ†ãƒ ãƒªãƒªãƒ¼ã‚¹ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã‚’è¦æ±‚ã—ã¦ã„ã¾ã™"

#: ../server/handlers/xmlrpc/registration.py:1063
msgid ""
"Unable to find a valid network interface, both ipaddr and ip6addr not found."
msgstr ""
"é©åˆ‡ãªãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ã‚¤ãƒ³ã‚¿ãƒ¼ãƒ•ã‚§ã‚¤ã‚¹ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“ã§ã—ãŸã€‚ ipaddr ã¨ ip6addr "
"ã®ä¸¡æ–¹ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“ã€‚"

#: ../server/handlers/xmlrpc/registration.py:1115
#, python-brace-format
msgid "{PRODUCT_NAME} Welcome Message"
msgstr "{PRODUCT_NAME} ã‚ˆã†ã“ããƒ¡ãƒƒã‚»ãƒ¼ã‚¸"

#: ../server/handlers/xmlrpc/registration.py:1125
msgid "Privacy Statement"
msgstr "ãƒ—ãƒ©ã‚¤ãƒã‚·ãƒ¼ã‚¹ãƒ†ãƒ¼ãƒˆãƒ¡ãƒ³ãƒˆ"

#: ../server/handlers/xmlrpc/registration.py:1146
msgid "Expected a dictionary as a product argument"
msgstr "è£½å“ã®å¼•æ•°ã¨ã—ã¦ãƒ‡ã‚£ã‚¯ã‚·ãƒ§ãƒŠãƒªãŒæœŸå¾…ã•ã‚Œã¦ã„ã¾ã™"

#: ../server/handlers/xmlrpc/registration.py:1374
#, python-format
msgid "Invalid value '%s' for %s (%s)"
msgstr "ç„¡åŠ¹ãªå€¤ '%s' âˆ’ %s (%s)"

#: ../server/handlers/xmlrpc/scap.py:104
msgid "Invalid system_id/action_id pair."
msgstr "system_id/action_id ã®å¯¾ãŒæ­£ã—ãã‚ã‚Šã¾ã›ã‚“ã€‚"

#: ../server/handlers/xmlrpc/up2date.py:233
#, python-format
msgid "Invalid value %s (%s)"
msgstr "ç„¡åŠ¹ãªå€¤  %s (%s)"

#: ../server/importlib/userAuth.py:98
msgid "You are not authorized to manage packages in the null org"
msgstr "null org ã«ã‚ã‚‹ãƒ‘ãƒƒã‚±ãƒ¼ã‚¸ã‚’ç®¡ç†ã™ã‚‹æ¨©é™ãŒä¸Žãˆã‚‰ã‚Œã¦ã„ã¾ã›ã‚“"

#: ../server/importlib/userAuth.py:103
#, python-format
msgid "You are not allowed to manage packages in the %s org"
msgstr "%s org å†…ã®ãƒ‘ãƒƒã‚±ãƒ¼ã‚¸ã®ç®¡ç†ã¯è¨±å¯ã•ã‚Œã¦ã„ã¾ã›ã‚“"

#: ../server/importlib/userAuth.py:121
msgid "You are not allowed to perform administrative tasks"
msgstr "ç®¡ç†ã«é–¢ã™ã‚‹ä½œæ¥­ã‚’è¡Œã†è¨±å¯ãŒã‚ã‚Šã¾ã›ã‚“"

#: ../server/importlib/userAuth.py:144
#, python-format
msgid ""
"You are not allowed to manage channel %s, or that channel does not exist"
msgstr ""
"ãƒãƒ£ãƒ³ãƒãƒ« %s ã®ç®¡ç†ã¯è¨±å¯ã•ã‚Œã¦ã„ãªã„ã‹ã€ ã¾ãŸã¯ã“ã®ãƒãƒ£ãƒ³ãƒãƒ«ã¯å­˜åœ¨ã—ã¦ã„ã¾"
"ã›ã‚“"

#: ../server/importlib/userAuth.py:204
#, python-format
msgid ""
"\n"
"               %s Account has been deactivated on this server.\n"
"               Please contact your Org administrator for more help."
msgstr ""
"\n"
"               %s ã‚¢ã‚«ã‚¦ãƒ³ãƒˆã¯æœ¬ã‚µãƒ¼ãƒãƒ¼ä¸Šã§ã¯ç„¡åŠ¹åŒ–ã•ã‚Œã¦ã„ã¾ã™ã€‚\n"
"                   è©³ã—ãã¯çµ„ç¹”ã®ç®¡ç†è€…ã«ãŠå•ã„åˆã‚ã›ãã ã•ã„ã€‚"

#: ../server/rhnChannel.py:1992
#, python-format
msgid ""
"Your account does not have access to any channels matching "
"(release='%(release)s', arch='%(arch)s')%(www_activation)s"
msgstr ""
"ã”ä½¿ç”¨ã®ã‚¢ã‚«ã‚¦ãƒ³ãƒˆã«ã¯ (release='%(release)s', "
"arch='%(arch)s')%(www_activation)s ã«ä¸€è‡´ã™ã‚‹ãƒãƒ£ãƒ³ãƒãƒ«ã®ã„ãšã‚Œã«ã‚‚ã‚¢ã‚¯ã‚»ã‚¹ãŒ"
"ã‚ã‚Šã¾ã›ã‚“"

#: ../server/rhnChannel.py:2002
msgid ""
"\n"
"If you have a registration number, please register with it first at http://"
"www.redhat.com/apps/activate/ and then try again.\n"
"\n"
msgstr ""
"\n"
"ç™»éŒ²ç•ªå·ã‚’ãŠæŒã¡ã®å ´åˆã¯ã€ ã¾ãšãã®ç•ªå·ã‚’ http://www.redhat.com/apps/"
"activate/ ã«ã¦ç™»éŒ²ã—ã¦ã‹ã‚‰ã‚„ã‚Šç›´ã—ã¦ãã ã•ã„ã€‚\n"
"\n"

#: ../server/rhnChannel.py:2012
#, python-format
msgid "Insufficient subscription permissions for release (%s, %s"
msgstr "ãƒªãƒªãƒ¼ã‚¹ (%s, %s ã«ã¯ã‚µãƒ–ã‚¹ã‚¯ãƒªãƒ—ã‚·ãƒ§ãƒ³è¨±å¯ãŒä¸è¶³ã—ã¦ã„ã¾ã™"

#. Various messages that can be reused
#.
#. bretm 02/07/2007 -- when we have better old-client documentation, probably
#. will be safe to get rid of all this crap
#: ../server/rhnChannel.py:2276 ../server/rhnChannel.py:2287
#: ../server/rhnChannel.py:2302
msgid "System Registered but Inactive"
msgstr "ã‚·ã‚¹ãƒ†ãƒ ã¯ç™»éŒ²ã•ã‚Œã¦ã„ã¾ã™ãŒéžã‚¢ã‚¯ãƒ†ã‚£ãƒ–ã«ãªã£ã¦ã„ã¾ã™"

#: ../server/rhnChannel.py:2277
#, python-format
msgid ""
"\n"
"Invalid Architecture and OS release combination (%s, %s).\n"
"Your system has been registered, but will not receive updates\n"
"because it is not subscribed to a channel. If you have not yet\n"
"activated your product for service, please visit our website at:\n"
"\n"
"     http://www.redhat.com/apps/activate/\n"
"\n"
"...to activate your product."
msgstr ""
"\n"
"ã‚¢ãƒ¼ã‚­ãƒ†ã‚¯ãƒãƒ£ã¨ã‚ªãƒšãƒ¬ãƒ¼ãƒ†ã‚£ãƒ³ã‚°ã‚·ã‚¹ãƒ†ãƒ ã®ãƒªãƒªãƒ¼ã‚¹ã®çµ„ã¿åˆã‚ã› (%sã€ %s)\n"
"ãŒæ­£ã—ãã‚ã‚Šã¾ã›ã‚“ã€‚ã‚·ã‚¹ãƒ†ãƒ ã¯ç™»éŒ²ã•ã‚Œã¦ã„ã¾ã™ãŒã€ãƒãƒ£ãƒ³ãƒãƒ«ã®ã‚µãƒ–ã‚¹ã‚¯ãƒªãƒ—"
"ã‚·ãƒ§ãƒ³\n"
"ãŒè¡Œãªã‚ã‚Œã¦ã„ãªã„ãŸã‚æ›´æ–°ã¯è¡Œã‚ã‚Œã¾ã›ã‚“ã€‚ è£½å“ã®ã‚¢ã‚¯ãƒ†ã‚£ãƒ™ãƒ¼ã‚·ãƒ§ãƒ³ãŒ\n"
"æœªå®Ÿæ–½ã®å ´åˆã¯ã€ä¸‹è¨˜ã® Web ã‚µã‚¤ãƒˆã«ã‚¢ã‚¯ã‚»ã‚¹ã—ã¦ã‚¢ã‚¯ãƒ†ã‚£ãƒ™ãƒ¼ã‚·ãƒ§ãƒ³ã‚’\n"
"è¡Œãªã£ã¦ãã ã•ã„:\n"
"  \n"
"     http://www.redhat.com/apps/activate/"

#: ../server/rhnChannel.py:2288
#, python-format
msgid ""
"\n"
"Invalid Architecture and OS release combination (%s, %s).\n"
"Your system has been registered, but will not receive updates\n"
"because it could not be subscribed to a base channel.\n"
"Please contact your organization administrator for assistance.\n"
msgstr ""
"\n"
"ã‚¢ãƒ¼ã‚­ãƒ†ã‚¯ãƒãƒ£ã¨ã‚ªãƒšãƒ¬ãƒ¼ãƒ†ã‚£ãƒ³ã‚°ã‚·ã‚¹ãƒ†ãƒ ã®ãƒªãƒªãƒ¼ã‚¹ã®çµ„ã¿åˆã‚ã› (%sã€ %s)\n"
"ãŒç„¡åŠ¹ã§ã™ã€‚ ã‚·ã‚¹ãƒ†ãƒ ã¯ç™»éŒ²ã•ã‚Œã¦ã„ã¾ã™ãŒã€ ãƒ™ãƒ¼ã‚¹ãƒãƒ£ãƒ³ãƒãƒ«ã«ã‚µãƒ–ã‚¹ã‚¯ãƒ©ã‚¤"
"ãƒ–\n"
"ã•ã›ã‚‹ã“ã¨ãŒã§ããªã‹ã£ãŸãŸã‚æ›´æ–°ã¯è¡Œã‚ã‚Œã¾ã›ã‚“ã€‚ è©³ç´°ã«ã¤ã„ã¦ã¯çµ„ç¹”ã®ç®¡ç†è€…"
"ã«\n"
"ãŠå•ã„åˆã‚ã›ãã ã•ã„ã€‚\n"

#: ../server/rhnChannel.py:2295
#, python-format
msgid ""
"\n"
"  This system has been successfully registered, but is not yet entitled\n"
"  to service.  To entitle this system to service, login to the web site at:\n"
"\n"
"  %(entitlement_url)s\n"
msgstr ""
"\n"
"  ã“ã®ã‚·ã‚¹ãƒ†ãƒ ã¯æ­£å¸¸ã«ç™»éŒ²ã•ã‚Œã¦ã„ã¾ã™ãŒã€ ã‚¨ãƒ³ã‚¿ã‚¤ãƒˆãƒ«ãƒ¡ãƒ³ãƒˆãŒã¾ã ä»˜ä¸Žã•ã‚Œã¦"
"ã„ã¾ã›ã‚“ã€‚\n"
"  ã‚·ã‚¹ãƒ†ãƒ ã«ã‚¨ãƒ³ã‚¿ã‚¤ãƒˆãƒ«ãƒ¡ãƒ³ãƒˆã‚’ä»˜ä¸Žã™ã‚‹ã«ã¯æ¬¡ã® Web ã‚µã‚¤ãƒˆã«ãƒ­ã‚°ã‚¤ãƒ³ã—ã¦ãã "
"ã•ã„ã€‚\n"
"\n"
"  %(entitlement_url)s\n"

#: ../server/rhnChannel.py:2303
#, python-format
msgid ""
"\n"
"  This system has been successfully registered, but no service entitlements\n"
"  were available.  To entitle this system to service, login to the web site "
"at:\n"
"\n"
"  %(entitlement_url)s\n"
msgstr ""
"\n"
"  ã“ã®ã‚·ã‚¹ãƒ†ãƒ ã¯æ­£å¸¸ã«ç™»éŒ²ã•ã‚Œã¦ã„ã¾ã™ãŒã€ åˆ©ç”¨ã§ãã‚‹ã‚¨ãƒ³ã‚¿ã‚¤ãƒˆãƒ«ãƒ¡ãƒ³ãƒˆãŒã‚ã‚Š"
"ã¾ã›ã‚“ã§ã—ãŸã€‚\n"
"  ã‚·ã‚¹ãƒ†ãƒ ã«ã‚¨ãƒ³ã‚¿ã‚¤ãƒˆãƒ«ãƒ¡ãƒ³ãƒˆã‚’ä»˜ä¸Žã™ã‚‹ã«ã¯æ¬¡ã® Web ã‚µã‚¤ãƒˆã«ãƒ­ã‚°ã‚¤ãƒ³ã—ã¦ãã "
"ã•ã„ã€‚\n"
"\n"
"  %(entitlement_url)s\n"

#: ../server/rhnHandler.py:62
msgid "Please run rhn_register as root on this client"
msgstr ""
"ã“ã®ã‚¯ãƒ©ã‚¤ã‚¢ãƒ³ãƒˆä¸Šã§ root ãƒ¦ãƒ¼ã‚¶ãƒ¼ã«ãªã‚Šã€ rhn_register ã‚’å®Ÿè¡Œã—ã¦ãã ã•ã„"

#: ../server/rhnHandler.py:75
#, python-format
msgid "Service not enabled for system profile: \"%s\""
msgstr "ã‚·ã‚¹ãƒ†ãƒ ãƒ—ãƒ­ãƒ•ã‚¡ã‚¤ãƒ«ã«å¯¾ã—ã¦ã‚µãƒ¼ãƒ“ã‚¹ãŒæœ‰åŠ¹ã«ãªã£ã¦ã„ã¾ã›ã‚“: ã€Œ%sã€"

#: ../server/rhnPackage.py:49 ../server/rhnPackage.py:87
#: ../server/rhnPackage.py:107 ../server/rhnPackage.py:158
#, python-format
msgid "Invalid RPM package %s requested"
msgstr "ç„¡åŠ¹ãª RPM ãƒ‘ãƒƒã‚±ãƒ¼ã‚¸ %s ã‚’è¦æ±‚ã—ã¦ã„ã¾ã™"

#: ../server/rhnPackage.py:112
msgid "Package not found"
msgstr "ãƒ‘ãƒƒã‚±ãƒ¼ã‚¸ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“"

#: ../server/rhnServer/server_class.py:97
#, python-format
msgid "Architecture `%s' is not supported"
msgstr "ã‚¢ãƒ¼ã‚­ãƒ†ã‚¯ãƒãƒ£ `%s' ã¯ã‚µãƒãƒ¼ãƒˆã•ã‚Œã¦ã„ã¾ã›ã‚“"

#: ../server/rhnServer/server_token.py:78
#, python-format
msgid "Token `%s' has more than one base channel assigned"
msgstr "ãƒˆãƒ¼ã‚¯ãƒ³ `%s' ã«ã¯ 1 ã¤ä»¥ä¸Šã®ãƒ™ãƒ¼ã‚¹ãƒãƒ£ãƒ³ãƒãƒ«ãŒå‰²ã‚Šå½“ã¦ã‚‰ã‚Œã¦ã„ã¾ã™"

#: ../server/rhnServer/server_token.py:80
msgid "Conflicting base channels"
msgstr "ç«¶åˆã—ã¦ã„ã‚‹ãƒ™ãƒ¼ã‚¹ãƒãƒ£ãƒ³ãƒãƒ«"

#: ../server/rhnServer/server_token.py:190
#, python-format
msgid "Failed to add server to group %s"
msgstr "ã‚°ãƒ«ãƒ¼ãƒ— %s ã¸ã®ã‚µãƒ¼ãƒãƒ¼ã®è¿½åŠ ã«å¤±æ•—ã—ã¾ã—ãŸ"

#: ../server/rhnServer/server_token.py:503
#, python-format
msgid "Maximum usage count of %s reached"
msgstr "æœ€å¤§ä½¿ç”¨æ•° %s ã«é”ã—ã¾ã—ãŸ"

#: ../server/rhnServer/server_token.py:744
msgid ""
"Stacking of re-registration tokens with different base entitlements is not "
"supported"
msgstr ""
"ç•°ãªã‚‹ãƒ™ãƒ¼ã‚¹ã‚¨ãƒ³ã‚¿ã‚¤ãƒˆãƒ«ãƒ¡ãƒ³ãƒˆã§ã®å†ç™»éŒ²ãƒˆãƒ¼ã‚¯ãƒ³ã®ç©ã¿é‡ã­ã«ã¯å¯¾å¿œã—ã¦ã„ã¾ã›"
"ã‚“"

#: ../server/rhnServer/server_token.py:811
#, python-format
msgid "Could not find token '%s'"
msgstr "ãƒˆãƒ¼ã‚¯ãƒ³ã€Œ%sã€ã¯è¦‹ã¤ã‹ã‚Šã¾ã›ã‚“ã§ã—ãŸ"

#. Cannot use activation keys from different orgs
#: ../server/rhnServer/server_token.py:843
msgid "Tokens from mismatching orgs"
msgstr "ä¸ä¸€è‡´ã® ã€€org ã‹ã‚‰ã®ãƒˆãƒ¼ã‚¯ãƒ³ã§ã™"

#. Two tokens with different kickstart sessions
#: ../server/rhnServer/server_token.py:853
msgid "Kickstart session mismatch"
msgstr "ã‚­ãƒƒã‚¯ã‚¹ã‚¿ãƒ¼ãƒˆã‚»ãƒƒã‚·ãƒ§ãƒ³ã®ä¸ä¸€è‡´ã§ã™"

#: ../server/rhnServer/server_token.py:877
msgid "Stacking of re-registration tokens is not supported"
msgstr "å†ç™»éŒ²ãƒˆãƒ¼ã‚¯ãƒ³ã®ç©ã¿é‡ã­ã«ã¯å¯¾å¿œã—ã¦ã„ã¾ã›ã‚“"

#: ../server/rhnUser.py:289 ../server/rhnUser.py:292
msgid "Invalid username/password combination"
msgstr "ç„¡åŠ¹ãªãƒ¦ãƒ¼ã‚¶ãƒ¼åã¨ãƒ‘ã‚¹ãƒ¯ãƒ¼ãƒ‰ã®çµ„ã¿åˆã‚ã›ã§ã™"

#. nope, not reserved either
#: ../server/rhnUser.py:467
#, python-format
msgid "Username `%s' has not been reserved"
msgstr "ãƒ¦ãƒ¼ã‚¶ãƒ¼å `%s' ã¯äºˆç´„ã•ã‚Œã¦ã„ã¾ã›ã‚“"

#. New accounts have to specify an e-mail address
#: ../server/rhnUser.py:473
msgid "E-mail address not specified"
msgstr "Email ã‚¢ãƒ‰ãƒ¬ã‚¹ãŒæŒ‡å®šã•ã‚Œã¦ã„ã¾ã›ã‚“"

#: ../server/rhnUser.py:509
#, python-format
msgid "username should be at least %d characters"
msgstr "ãƒ¦ãƒ¼ã‚¶ãƒ¼åã¯å°‘ãªãã¨ã‚‚ %d æ–‡å­—ä»¥ä¸Šã«ã—ã¦ãã ã•ã„"

#: ../server/rhnUser.py:512
#, python-format
msgid "username should be less than %d characters"
msgstr "ãƒ¦ãƒ¼ã‚¶ãƒ¼åã¯ %d æ–‡å­—æœªæº€ã«ã—ã¦ãã ã•ã„"

#: ../server/rhnUser.py:523
#, python-format
msgid "username = `%s', invalid character `%s'"
msgstr "ãƒ¦ãƒ¼ã‚¶ãƒ¼å = `%s'ã€ ç„¡åŠ¹ãªæ–‡å­— `%s'"

#: ../server/rhnUser.py:542
#, python-format
msgid "Please limit your e-mail address to %s chars"
msgstr "Email ã‚¢ãƒ‰ãƒ¬ã‚¹ã¯ %s æ–‡å­—ä»¥å†…ã«ã—ã¦ãã ã•ã„"

#: ../server/rhnUser.py:623
#, python-format
msgid "password must be at least %d characters"
msgstr "ãƒ‘ã‚¹ãƒ¯ãƒ¼ãƒ‰ã¯å°‘ãªãã¨ã‚‚ %d æ–‡å­—ã«ä»¥ä¸Šã«ã—ã¦ãã ã•ã„"

#: ../server/rhnUser.py:626
#, python-format
msgid "Password must be shorter than %d characters"
msgstr "ãƒ‘ã‚¹ãƒ¯ãƒ¼ãƒ‰ã¯ %d æ–‡å­—ä»¥å†…ã«ã—ã¦ãã ã•ã„"

#: ../server/rhnUser.py:644
#, python-format
msgid "password contains character `%s'"
msgstr "ãƒ‘ã‚¹ãƒ¯ãƒ¼ãƒ‰ã« `%s' æ–‡å­—ãŒå«ã¾ã‚Œã¦ã„ã¾ã™"

#: ../server/rhnUser.py:651
#, python-format
msgid "username should be at least %d characters long"
msgstr "ãƒ¦ãƒ¼ã‚¶ãƒ¼åã¯å°‘ãªãã¨ã‚‚ %d æ–‡å­—ä»¥ä¸Šã®é•·ã•ã«ã—ã¦ãã ã•ã„"

#: ../server/rhnUser.py:662
#, python-format
msgid "Cannot register usernames ending with %s"
msgstr "%s ã§çµ‚ã‚ã‚‹ãƒ¦ãƒ¼ã‚¶ãƒ¼åã¯ç™»éŒ²ã§ãã¾ã›ã‚“"

#. 0-999: Red Hat client/client-like interaction errors:
#: ../common/rhnException.py:53
msgid "This does not appear to be a valid username."
msgstr "æœ‰åŠ¹ãªãƒ¦ãƒ¼ã‚¶ãƒ¼åã§ã¯ãªã„ã‚ˆã†ã§ã™ã€‚"

#: ../common/rhnException.py:54
msgid "Invalid username and password combination."
msgstr "ãƒ¦ãƒ¼ã‚¶ãƒ¼åã¨ãƒ‘ã‚¹ãƒ¯ãƒ¼ãƒ‰ã®çµ„ã¿åˆã‚ã›ãŒç„¡åŠ¹ã§ã™ã€‚"

#: ../common/rhnException.py:55
msgid "This login is already taken, or the password is incorrect."
msgstr "ã“ã®ãƒ­ã‚°ã‚¤ãƒ³ã¯æ—¢ã«ä½¿ç”¨æ¸ˆã‹ã€ ã¾ãŸã¯ãƒ‘ã‚¹ãƒ¯ãƒ¼ãƒ‰ãŒé–“é•ã£ã¦ã„ã¾ã™ã€‚"

#: ../common/rhnException.py:56
msgid "Permission denied."
msgstr "ãƒ‘ãƒ¼ãƒŸãƒƒã‚·ãƒ§ãƒ³ãŒæ‹’å¦ã•ã‚Œã¾ã—ãŸã€‚"

#: ../common/rhnException.py:57
msgid "Object not found."
msgstr "ã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“ã€‚"

#: ../common/rhnException.py:58
msgid "Invalid System Digital ID."
msgstr "ç„¡åŠ¹ãªã‚·ã‚¹ãƒ†ãƒ ãƒ‡ã‚¸ã‚¿ãƒ« ID ã§ã™ã€‚"

#: ../common/rhnException.py:59
msgid "Invalid System Credentials."
msgstr "ç„¡åŠ¹ãªã‚·ã‚¹ãƒ†ãƒ èªè¨¼æƒ…å ±ã§ã™ã€‚"

#: ../common/rhnException.py:60
msgid "Could not retrieve user data from database."
msgstr "ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã‹ã‚‰ãƒ¦ãƒ¼ã‚¶ãƒ¼ã®ãƒ‡ãƒ¼ã‚¿ã‚’èª­ã¿å‡ºã™ã“ã¨ãŒã§ãã¾ã›ã‚“ã§ã—ãŸã€‚"

#: ../common/rhnException.py:61
msgid "Valid username required."
msgstr "æœ‰åŠ¹ãªãƒ¦ãƒ¼ã‚¶ãƒ¼åãŒå¿…è¦ã§ã™ã€‚"

#: ../common/rhnException.py:62
msgid "Valid password required."
msgstr "æœ‰åŠ¹ãªãƒ‘ã‚¹ãƒ¯ãƒ¼ãƒ‰ãŒå¿…è¦ã§ã™ã€‚"

#: ../common/rhnException.py:63
msgid "Minimum username length violation."
msgstr "ãƒ¦ãƒ¼ã‚¶ãƒ¼åã®æœ€çŸ­ã®é•·ã•ã‚’é•åã—ã¦ã„ã¾ã™ã€‚"

#: ../common/rhnException.py:64
msgid "Minimum password length violation."
msgstr "ãƒ‘ã‚¹ãƒ¯ãƒ¼ãƒ‰ã®æœ€çŸ­ã®é•·ã•ã‚’é•åã—ã¦ã„ã¾ã™ã€‚"

#: ../common/rhnException.py:65
msgid "The username contains invalid characters."
msgstr "ãƒ¦ãƒ¼ã‚¶ãƒ¼åã«ç„¡åŠ¹ãªæ–‡å­—ãŒå«ã¾ã‚Œã¦ã„ã¾ã™ã€‚"

#: ../common/rhnException.py:66
msgid "File not found."
msgstr "ãƒ•ã‚¡ã‚¤ãƒ«ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“ã€‚"

#: ../common/rhnException.py:67
msgid "Architecture and OS version combination is not supported."
msgstr ""
"ã‚¢ãƒ¼ã‚­ãƒ†ã‚¯ãƒãƒ£ã¨ã‚ªãƒšãƒ¬ãƒ¼ãƒ†ã‚£ãƒ³ã‚°ã‚·ã‚¹ãƒ†ãƒ ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã®çµ„ã¿åˆã‚ã›ã¯å¯¾å¿œã—ã¦ã„"
"ã¾ã›ã‚“ã€‚"

#: ../common/rhnException.py:68
msgid "Could not retrieve system data from database."
msgstr "ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã‹ã‚‰ã‚·ã‚¹ãƒ†ãƒ ã®ãƒ‡ãƒ¼ã‚¿ã‚’èª­ã¿å‡ºã™ã“ã¨ãŒã§ãã¾ã›ã‚“ã§ã—ãŸã€‚"

#: ../common/rhnException.py:69
msgid "Invalid arguments passed to function."
msgstr "é–¢æ•°ã«ç„¡åŠ¹ãªå¼•æ•°ãŒæ¸¡ã•ã‚Œã¾ã—ãŸã€‚"

#: ../common/rhnException.py:70
msgid "Unable to retrieve requested entry."
msgstr "è¦æ±‚ã•ã‚ŒãŸã‚¨ãƒ³ãƒˆãƒªã‚’èª­ã¿å‡ºã›ã¾ã›ã‚“ã€‚"

#: ../common/rhnException.py:71
msgid "Could not update database entry."
msgstr "ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã®ã‚¨ãƒ³ãƒˆãƒªã‚’æ›´æ–°ã§ãã¾ã›ã‚“ã§ã—ãŸã€‚"

#: ../common/rhnException.py:72
msgid "Unsupported server architecture."
msgstr "æœªå¯¾å¿œã®ã‚µãƒ¼ãƒãƒ¼ã‚¢ãƒ¼ã‚­ãƒ†ã‚¯ãƒãƒ£ã§ã™ã€‚"

#: ../common/rhnException.py:73
#, python-format
msgid ""
"\n"
"     The anonymous server functionality is no longer available.\n"
"\n"
"     Please re-register this system by running mgr_register as root.\n"
"     Please visit https://%(hostname)s/rhn/systems/SystemEntitlements.do\n"
"     or login at https://%(hostname)s, and from the \"Overview\" tab,\n"
"     select \"Subscription Management\" to enable the service for this "
"system.\n"
"     "
msgstr ""
"\n"
"     åŒ¿åã‚µãƒ¼ãƒãƒ¼æ©Ÿèƒ½ã¯åˆ©ç”¨ã§ããªããªã£ã¦ã„ã¾ã™ã€‚\n"
"\n"
"     root ã«ãªã‚Š mgr_register ã‚’å®Ÿè¡Œã—ã¦ã“ã®ã‚·ã‚¹ãƒ†ãƒ ã®å†ç™»éŒ²ã‚’è¡Œã£ã¦ãã ã•"
"ã„ã€‚\n"
"     ã“ã®ã‚·ã‚¹ãƒ†ãƒ ã«å¯¾ã—ã¦ã‚µãƒ¼ãƒ“ã‚¹ã‚’æœ‰åŠ¹ã«ã™ã‚‹å ´åˆã¯ã€ \n"
"     https://%(hostname)s/rhn/systems/SystemEntitlements.do ã«ã‚¢ã‚¯ã‚»ã‚¹ã™ã‚‹"
"ã‹ã€\n"
"     https://%(hostname)s ã§ãƒ­ã‚°ã‚¤ãƒ³ã—ã¦ã‹ã‚‰ \"æ¦‚è¦\" ã‚¿ãƒ–å†…ã® \"ã‚µãƒ–ã‚¹ã‚¯ãƒªãƒ—"
"ã‚·ãƒ§ãƒ³ç®¡ç†\"\n"
"     ã‚’é¸æŠžã—ã¦ãã ã•ã„ã€‚\n"
"     "

#: ../common/rhnException.py:81
msgid "Record not available in the database."
msgstr "ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã«ä½¿ç”¨ã§ãã‚‹è¨˜éŒ²ãŒã‚ã‚Šã¾ã›ã‚“ã€‚"

#: ../common/rhnException.py:82
msgid "Invalid value for entry."
msgstr "ã‚¨ãƒ³ãƒˆãƒªã«ã¯ç„¡åŠ¹ãªå€¤ã§ã™ã€‚"

#: ../common/rhnException.py:83
#, python-format
msgid ""
"\n"
"     This system does not have a valid entitlement for SUSE Manager.\n"
"     Please visit https://%(hostname)s/rhn/systems/SystemEntitlements.do\n"
"     or login at https://%(hostname)s, and from the \"Overview\" tab,\n"
"     select \"Subscription Management\" to enable the service for this "
"system.\n"
"     "
msgstr ""
"\n"
"     ã“ã®ã‚·ã‚¹ãƒ†ãƒ ã«ã¯ SUSE Manager ç”¨ã®æœ‰åŠ¹ãªã‚¨ãƒ³ã‚¿ã‚¤ãƒˆãƒ«ãƒ¡ãƒ³ãƒˆãŒã‚ã‚Šã¾ã›"
"ã‚“ã€‚\n"
"     ã“ã®ã‚·ã‚¹ãƒ†ãƒ ã«å¯¾ã—ã¦ã‚µãƒ¼ãƒ“ã‚¹ã‚’æœ‰åŠ¹ã«ã™ã‚‹å ´åˆã¯ã€\n"
"     https://%(hostname)s/rhn/systems/SystemEntitlements.do ã«ã‚¢ã‚¯ã‚»ã‚¹ã™ã‚‹"
"ã‹ã€\n"
"     https://%(hostname)s ã§ãƒ­ã‚°ã‚¤ãƒ³ã—ã¦ã‹ã‚‰ \"æ¦‚è¦\" ã‚¿ãƒ–å†…ã«ã‚ã‚‹ \"ã‚µãƒ–ã‚¹ã‚¯"
"ãƒªãƒ—ã‚·ãƒ§ãƒ³ç®¡ç†\"\n"
"     ã‚’é¸æŠžã—ã¦ãã ã•ã„ã€‚\n"
"     "

#: ../common/rhnException.py:89
msgid "Channel error"
msgstr "ãƒãƒ£ãƒ³ãƒãƒ«ã‚¨ãƒ©ãƒ¼"

#: ../common/rhnException.py:90
msgid "Client session token is invalid."
msgstr "ã‚¯ãƒ©ã‚¤ã‚¢ãƒ³ãƒˆã®ã‚»ãƒƒã‚·ãƒ§ãƒ³ãƒˆãƒ¼ã‚¯ãƒ³ãŒç„¡åŠ¹ã§ã™ã€‚"

#: ../common/rhnException.py:91
msgid "Client session token has expired."
msgstr "ã‚¯ãƒ©ã‚¤ã‚¢ãƒ³ãƒˆã®ã‚»ãƒƒã‚·ãƒ§ãƒ³ãƒˆãƒ¼ã‚¯ãƒ³ã®æœ‰åŠ¹æœŸé™ãŒåˆ‡ã‚Œã¦ã„ã¾ã™ã€‚"

#: ../common/rhnException.py:92
msgid "You are not authorized to retrieve the requested object."
msgstr "è¦æ±‚ã•ã‚ŒãŸã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆã‚’èª­ã¿å‡ºã™æ¨©é™ãŒä¸Žãˆã‚‰ã‚Œã¦ã„ã¾ã›ã‚“ã€‚"

#: ../common/rhnException.py:93
msgid "Invalid action"
msgstr "ç„¡åŠ¹ãªå‹•ä½œ"

#: ../common/rhnException.py:94
msgid "You are not allowed to perform administrative tasks on this system."
msgstr "ã“ã®ã‚·ã‚¹ãƒ†ãƒ ã§ç®¡ç†é–¢é€£ã®ä½œæ¥­ã‚’è¡Œã†è¨±å¯ãŒã‚ã‚Šã¾ã›ã‚“ã€‚"

#: ../common/rhnException.py:96
msgid "The system is already subscribed to the specified channel."
msgstr "ã‚·ã‚¹ãƒ†ãƒ ã¯æ—¢ã«æŒ‡å®šãƒãƒ£ãƒ³ãƒãƒ«ã«ã‚µãƒ–ã‚¹ã‚¯ãƒ©ã‚¤ãƒ–ã•ã‚Œã¦ã„ã¾ã™ã€‚"

#: ../common/rhnException.py:97
msgid "The system is not currently subscribed to the specified channel."
msgstr "ç¾åœ¨ã€ ã‚·ã‚¹ãƒ†ãƒ ã¯æŒ‡å®šãƒãƒ£ãƒ³ãƒãƒ«ã«ã‚µãƒ–ã‚¹ã‚¯ãƒ©ã‚¤ãƒ–ã•ã‚Œã¦ã„ã¾ã›ã‚“ã€‚"

#: ../common/rhnException.py:98
msgid "The specified channel does not exist."
msgstr "æŒ‡å®šã•ã‚ŒãŸãƒãƒ£ãƒ³ãƒãƒ«ãŒå­˜åœ¨ã—ã¦ã„ã¾ã›ã‚“ã€‚"

#: ../common/rhnException.py:99
msgid "Invalid channel version."
msgstr "ç„¡åŠ¹ãªãƒãƒ£ãƒ³ãƒãƒ«ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã§ã™ã€‚"

#: ../common/rhnException.py:100
msgid ""
"\n"
"     User group membership limits exceeded.\n"
"\n"
"     The current settings for your account do not allow you to add another\n"
"     user account. Please check with the organization administrator for "
"your\n"
"     account if the maximum number of users allowed to subscribe to server "
"needs\n"
"     to be changed.\n"
"     "
msgstr ""
"\n"
"     ãƒ¦ãƒ¼ã‚¶ãƒ¼ã‚°ãƒ«ãƒ¼ãƒ—ã®ãƒ¡ãƒ³ãƒãƒ¼ã‚·ãƒƒãƒ—ã®ä¸Šé™ã‚’è¶…ãˆã¦ã„ã¾ã™ã€‚\n"
"\n"
"     ãŠä½¿ã„ã®ã‚¢ã‚«ã‚¦ãƒ³ãƒˆã®ç¾åœ¨ã®è¨­å®šã§ã¯ã€ã“ã‚Œä»¥ä¸Šã®ãƒ¦ãƒ¼ã‚¶ãƒ¼ã‚¢ã‚«ã‚¦ãƒ³ãƒˆã®è¿½åŠ ã¯"
"ã§ãã¾ã›ã‚“ã€‚\n"
"     ã‚µãƒ¼ãƒã«å¯¾ã—ã¦ã‚µãƒ–ã‚¹ã‚¯ãƒªãƒ—ã‚·ãƒ§ãƒ³ã‚’è¨­å®šã§ãã‚‹æœ€å¤§ãƒ¦ãƒ¼ã‚¶æ•°ã‚’å¤‰æ›´ã™ã‚‹å¿…è¦ãŒ"
"ã‚ã‚‹å ´åˆã¯ã€\n"
"     çµ„ç¹”ã®ç®¡ç†è€…ã«ã”ç¢ºèªãã ã•ã„ã€‚\n"
"     "

#: ../common/rhnException.py:108
msgid ""
"\n"
"     System group membership limits exceeded.\n"
"\n"
"     The current settings for your account do not allow you to add another\n"
"     system profile. Please check with the organization administrator for "
"your\n"
"     account for modifying the maximum number of system profiles that can "
"be\n"
"     subscribed to your account.\n"
"     "
msgstr ""
"\n"
"     ã‚·ã‚¹ãƒ†ãƒ ã‚°ãƒ«ãƒ¼ãƒ—ã®ãƒ¡ãƒ³ãƒãƒ¼ã‚·ãƒƒãƒ—ã®ä¸Šé™ã‚’è¶…ãˆã¦ã„ã¾ã™ã€‚\n"
"\n"
"     ãŠä½¿ã„ã®ã‚¢ã‚«ã‚¦ãƒ³ãƒˆã®ç¾åœ¨ã®è¨­å®šã§ã¯ã€ã“ã‚Œä»¥ä¸Šã®ã‚·ã‚¹ãƒ†ãƒ ãƒ—ãƒ­ãƒ•ã‚¡ã‚¤ãƒ«ã®è¿½åŠ "
"ã¯ã§ãã¾ã›ã‚“ã€‚\n"
"     ãŠä½¿ã„ã®ã‚¢ã‚«ã‚¦ãƒ³ãƒˆã§ã‚µãƒ–ã‚¹ã‚¯ãƒªãƒ—ã‚·ãƒ§ãƒ³ã‚’è¨­å®šã§ãã‚‹ã‚·ã‚¹ãƒ†ãƒ ãƒ—ãƒ­ãƒ•ã‚¡ã‚¤ãƒ«æ•°"
"ã®æœ€å¤§å€¤ã‚’\n"
"     å¤‰æ›´ã™ã‚‹å¿…è¦ãŒã‚ã‚‹å ´åˆã¯ã€çµ„ç¹”ã®ç®¡ç†è€…ã«ã”ç¢ºèªãã ã•ã„ã€‚\n"
"     "

#: ../common/rhnException.py:116
msgid ""
"\n"
"     Invalid architecture.\n"
"\n"
"     The architecture of the package is not supported by\n"
"     "
msgstr ""
"\n"
"     ã‚¢ãƒ¼ã‚­ãƒ†ã‚¯ãƒãƒ£ãŒæ­£ã—ãã‚ã‚Šã¾ã›ã‚“ã€‚\n"
"\n"
"     ã“ã®ãƒ‘ãƒƒã‚±ãƒ¼ã‚¸ã®ã‚¢ãƒ¼ã‚­ãƒ†ã‚¯ãƒãƒ£ã¯å¯¾å¿œã—ã¦ã„ã¾ã›ã‚“ã€‚\n"
"     "

#: ../common/rhnException.py:121
msgid "Invalid RPM header"
msgstr "ç„¡åŠ¹ãª RPM ãƒ˜ãƒƒãƒ€ãƒ¼ã§ã™"

#: ../common/rhnException.py:122
msgid ""
"\n"
"    This system is already registered as a Salt Minion. If you want to "
"register it as a traditional client\n"
"    please delete it first via the web UI or API and then register it using "
"the traditional tools.\n"
"    "
msgstr ""
"\n"
"    ã“ã®ã‚·ã‚¹ãƒ†ãƒ ã¯æ—¢ã« Salt Minion ã¨ã—ã¦ç™»éŒ²ã•ã‚Œã¦ã„ã¾ã™ã€‚å¾“æ¥åž‹ã®ã‚¯ãƒ©ã‚¤ã‚¢ãƒ³"
"ãƒˆã¨ã—ã¦ç™»éŒ²ã—ãŸã„å ´åˆã¯ã€\n"
"    Web UI ã‚„ API ã§ã„ã£ãŸã‚“å‰Šé™¤ã‚’è¡Œãªã£ãŸã‚ã¨ã€å†åº¦å¾“æ¥ã®ãƒ„ãƒ¼ãƒ«ã§ç™»éŒ²ã‚’è¡Œ"
"ãªã£ã¦ãã ã•ã„ã€‚\n"
"    "

#. For the uploading tools
#: ../common/rhnException.py:127
msgid "Invalid information uploaded to the server"
msgstr "ã‚µãƒ¼ãƒãƒ¼ã«ç„¡åŠ¹ãªæƒ…å ±ãŒã‚¢ãƒƒãƒ—ãƒ­ãƒ¼ãƒ‰ã•ã‚Œã¾ã—ãŸ"

#: ../common/rhnException.py:128
msgid "Error uploading network interfaces configuration."
msgstr ""
"ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ã‚¤ãƒ³ã‚¿ãƒ¼ãƒ•ã‚§ãƒ¼ã‚¹ã®è¨­å®šã‚’ã‚¢ãƒƒãƒ—ãƒ­ãƒ¼ãƒ‰ä¸­ã«ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ã¾ã—ãŸã€‚"

#: ../common/rhnException.py:129
msgid ""
"\n"
"     Package Upload Failed due to uniqueness constraint violation.\n"
"     Make sure the package does not have any duplicate dependencies or\n"
"     does not already exists on the server\n"
"     "
msgstr ""
"\n"
"     ä¸€æ„æ€§åˆ¶ç´„ã®é•åã«ã‚ˆã‚Šãƒ‘ãƒƒã‚±ãƒ¼ã‚¸ã®ã‚¢ãƒƒãƒ—ãƒ­ãƒ¼ãƒ‰ãŒå¤±æ•—ã—ã¾ã—ãŸã€‚\n"
"     ãƒ‘ãƒƒã‚±ãƒ¼ã‚¸ã«é‡è¤‡ã™ã‚‹ä¾å­˜é–¢ä¿‚ãŒãªã„ã“ã¨ã€ ã¾ãŸã¯ã“ã®ãƒ‘ãƒƒã‚±ãƒ¼ã‚¸ãŒ\n"
"     ã¾ã ã‚µãƒ¼ãƒãƒ¼ã«å­˜åœ¨ã—ã¦ã„ãªã„ã“ã¨ã‚’ç¢ºèªã—ã¦ãã ã•ã„ã€‚\n"
"     "

#: ../common/rhnException.py:134
msgid ""
"\n"
"     The --force rhnpush option is disabled on this server.\n"
"     Please contact your SUSE Manager administrator for more help.\n"
"     "
msgstr ""
"\n"
"     ã“ã®ã‚µãƒ¼ãƒãƒ¼ã§ã¯ --force rhnpush ã®ã‚ªãƒ—ã‚·ãƒ§ãƒ³ã¯ç„¡åŠ¹ã«ãªã£ã¦ã„ã¾ã™ã€‚\n"
"     è©³ç´°ã«ã¤ã„ã¦ã¯ SUSE Manager ã®ç®¡ç†è€…ã«ãŠå•ã„åˆã‚ã›ãã ã•ã„ã€‚\n"
"     "

#. 60-70: token errors
#: ../common/rhnException.py:140
msgid ""
"\n"
"     The activation token specified could not be found on the server.\n"
"     Please retry with a valid key.\n"
"     "
msgstr ""
"\n"
"     æŒ‡å®šã•ã‚ŒãŸã‚¢ã‚¯ãƒ†ã‚£ãƒ™ãƒ¼ã‚·ãƒ§ãƒ³ãƒˆãƒ¼ã‚¯ãƒ³ãŒã‚µãƒ¼ãƒãƒ¼ã«è¦‹ã¤ã‹ã‚Šã¾ã›ã‚“ã§ã—ãŸã€‚\n"
"     æœ‰åŠ¹ãªã‚­ãƒ¼ã§ã‚„ã‚Šç›´ã—ã¦ãã ã•ã„ã€‚\n"
"     "

#: ../common/rhnException.py:144
msgid "Too many systems registered using this registration token"
msgstr "ã“ã®ç™»éŒ²ãƒˆãƒ¼ã‚¯ãƒ³ã‚’ä½¿ç”¨ã—ã¦ç™»éŒ²ã•ã‚ŒãŸã‚·ã‚¹ãƒ†ãƒ ãŒå¤šã™ãŽã¾ã™"

#: ../common/rhnException.py:145
msgid "Token contains invalid, obsoleted or insufficient settings"
msgstr ""
"ç„¡åŠ¹ãªè¨­å®šã€ ã¾ãŸã¯ã‚µãƒãƒ¼ãƒˆã•ã‚Œã¦ã„ãªã„ã‹ä¸é©åˆ‡ãªè¨­å®šã‚’å«ã‚€ãƒˆãƒ¼ã‚¯ãƒ³ã§ã™"

#: ../common/rhnException.py:146
msgid "Conflicting activation tokens"
msgstr "ã‚¢ã‚¯ãƒ†ã‚£ãƒ™ãƒ¼ã‚·ãƒ§ãƒ³ãƒˆãƒ¼ã‚¯ãƒ³ãŒç«¶åˆã—ã¦ã„ã¾ã™"

#. 70-80: channel subscription errors
#: ../common/rhnException.py:149
msgid ""
"\n"
"     No matching base channel found for your system.\n"
"     "
msgstr ""
"\n"
"     ãŠä½¿ã„ã®ã‚·ã‚¹ãƒ†ãƒ ã«è©²å½“ã™ã‚‹ãƒ™ãƒ¼ã‚¹ãƒãƒ£ãƒ³ãƒãƒ«ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“ã§ã—ãŸã€‚\n"
"     "

#: ../common/rhnException.py:152
msgid ""
"\n"
"     You do not have subscription permission to the designated channel.\n"
"     Please refer to your organization's channel or organization\n"
"     administrators for further details.\n"
"     "
msgstr ""
"\n"
"     æŒ‡å®šãƒãƒ£ãƒ³ãƒãƒ«ã¸ã®ã‚µãƒ–ã‚¹ã‚¯ãƒªãƒ—ã‚·ãƒ§ãƒ³ãƒ‘ãƒ¼ãƒŸãƒƒã‚·ãƒ§ãƒ³ãŒã‚ã‚Šã¾ã›ã‚“ã€‚\n"
"     è©³ç´°ã«ã¤ã„ã¦ã¯çµ„ç¹”ã®ç®¡ç†è€…ã¾ãŸã¯ãƒãƒ£ãƒ³ãƒãƒ«ç®¡ç†è€…ã«ãŠå•ã„åˆã‚ã›ãã ã•"
"ã„ã€‚\n"
"     \n"
"     "

#: ../common/rhnException.py:157
msgid "You can not unsubscribe from base channel."
msgstr "ãƒ™ãƒ¼ã‚¹ãƒãƒ£ãƒ³ãƒãƒ«ã®ã‚µãƒ–ã‚¹ã‚¯ãƒªãƒ—ã‚·ãƒ§ãƒ³ã‚’è§£é™¤ã™ã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“ã€‚"

#: ../common/rhnException.py:158
msgid "SUSE Manager or Proxy channel can not be subscribed."
msgstr ""
"SUSE Manager ã‚‚ã—ãã¯ Proxy ãƒãƒ£ãƒ³ãƒãƒ«ã¯ã‚µãƒ–ã‚¹ã‚¯ãƒªãƒ—ã‚·ãƒ§ãƒ³ã‚’è¨­å®šã§ãã¾ã›ã‚“ã€‚"

#. 80-90: server group errors
#: ../common/rhnException.py:161
msgid "There was an error while trying to join the system to its groups"
msgstr "ã‚·ã‚¹ãƒ†ãƒ ã‚’ãã®ã‚°ãƒ«ãƒ¼ãƒ—ã«å‚åŠ ã•ã›ã‚‹é€”ä¸­ã§ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ã¾ã—ãŸ"

#. 90-100: entitlement errors
#: ../common/rhnException.py:164
msgid "Unable to entitle system"
msgstr "ã‚·ã‚¹ãƒ†ãƒ ã«ã‚¨ãƒ³ã‚¿ã‚¤ãƒˆãƒ«ãƒ¡ãƒ³ãƒˆã‚’ä»˜ä¸Žã§ãã¾ã›ã‚“"

#. 100-109: e-mail and uuid related faults
#: ../common/rhnException.py:167
msgid "Maximum e-mail length violation."
msgstr "Email ã®æœ€å¤§é•·ã‚’è¶…ãˆã¦ã„ã¾ã™ã€‚"

#: ../common/rhnException.py:168
msgid "This system has been previously registered."
msgstr "ã“ã®ã‚·ã‚¹ãƒ†ãƒ ã¯æ—¢ã«ç™»éŒ²ã•ã‚Œã¦ã„ã¾ã™ã€‚"

#: ../common/rhnException.py:169
msgid "Invalid username"
msgstr "ç„¡åŠ¹ãªãƒ¦ãƒ¼ã‚¶ãƒ¼å"

#. 140-159 applet errors
#: ../common/rhnException.py:172
msgid "Unable to look up server"
msgstr "ã‚µãƒ¼ãƒãƒ¼ã‚’æ¤œå‡ºã§ãã¾ã›ã‚“"

#. 160-179: OSAD errors
#: ../common/rhnException.py:175
msgid "Required argument is missing"
msgstr "å¿…è¦ãªå¼•æ•°ãŒã‚ã‚Šã¾ã›ã‚“"

#. 600-699: RHEL5+ EN errors
#: ../common/rhnException.py:178
msgid "No entitlement information tied to hardware"
msgstr "ãƒãƒ¼ãƒ‰ã‚¦ã‚§ã‚¢ã«é–¢é€£ã¥ã‘ã‚‰ã‚Œã¦ã„ã‚‹ã‚¨ãƒ³ã‚¿ã‚¤ãƒˆãƒ«ãƒ¡ãƒ³ãƒˆæƒ…å ±ãŒã‚ã‚Šã¾ã›ã‚“"

#: ../common/rhnException.py:179
msgid "Installation number is not entitling"
msgstr "ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ç•ªå·ã«ã‚¨ãƒ³ã‚¿ã‚¤ãƒˆãƒ«ãƒ¡ãƒ³ãƒˆãŒä»˜ä¸Žã•ã‚Œã¦ã„ã¾ã›ã‚“"

#. 700-799: Additional user input verification errors.
#: ../common/rhnException.py:182
msgid "Maximum username length violation"
msgstr "ãƒ¦ãƒ¼ã‚¶ãƒ¼åã®æœ€å¤§é•·ã‚’è¶…ãˆã¦ã„ã¾ã™"

#: ../common/rhnException.py:183
msgid "Maximum password length violation"
msgstr "ãƒ‘ã‚¹ãƒ¯ãƒ¼ãƒ‰ã®æœ€å¤§é•·ã‚’è¶…ãˆã¦ã„ã¾ã™"

#: ../common/rhnException.py:184
msgid "This user has read only API access. Action denied."
msgstr ""
"ã“ã®ãƒ¦ãƒ¼ã‚¶ã«å¯¾ã—ã¦ã¯èª­ã¿è¾¼ã¿å°‚ç”¨ã® API ã‚¢ã‚¯ã‚»ã‚¹ã®ã¿ãŒæä¾›ã•ã‚Œã¦ã„ã¾ã™ã€‚ã‚¢ã‚¯ã‚»"
"ã‚¹ãŒæ‹’å¦ã•ã‚Œã¾ã—ãŸã€‚"

#: ../common/rhnException.py:186
msgid "System Name cannot be less than 1 character"
msgstr "ã‚·ã‚¹ãƒ†ãƒ åã‚’ 1 æ–‡å­—æœªæº€ã«ã™ã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“"

#. 1000-1999: Proxy specific errors:
#. issued by a Proxy to the client
#: ../common/rhnException.py:190
msgid "SUSE Manager Proxy error."
msgstr "SUSE Manager Proxy ã®ã‚¨ãƒ©ãƒ¼ã§ã™ã€‚"

#: ../common/rhnException.py:191
msgid "SUSE Manager Proxy unable to login."
msgstr "SUSE Manager Proxy ã«ã‚ˆã‚‹ãƒ­ã‚°ã‚¤ãƒ³ãŒã§ãã¾ã›ã‚“ã€‚"

#. issued by a SUSE Manager Server/Satellite to the proxy
#: ../common/rhnException.py:193
msgid ""
"\n"
"     SUSE Manager Proxy system ID does not match a Spacewalk Proxy Server\n"
"     in the database.\n"
"     "
msgstr ""
"\n"
"     SUSE Manager Proxy ã®ã‚·ã‚¹ãƒ†ãƒ  ID ã¨ã€ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹å†…ã® Spacewalk Proxy "
"Server\n"
"     ã®æƒ…å ±ãŒåˆè‡´ã—ã¾ã›ã‚“ã€‚\n"
"     "

#: ../common/rhnException.py:197
msgid "SUSE Manager Proxy session token is invalid."
msgstr "SUSE Manager Proxy ã‚»ãƒƒã‚·ãƒ§ãƒ³ãƒˆãƒ¼ã‚¯ãƒ³ãŒæ­£ã—ãã‚ã‚Šã¾ã›ã‚“ã€‚"

#: ../common/rhnException.py:198
msgid "SUSE Manager Proxy session token has expired."
msgstr "SUSE Manager Proxy ã‚»ãƒƒã‚·ãƒ§ãƒ³ãƒˆãƒ¼ã‚¯ãƒ³ã®æœŸé™ãŒåˆ‡ã‚Œã¦ã„ã¾ã™ã€‚"

#. 2000-2999: Red Hat Satellite specific errors:
#: ../common/rhnException.py:202
msgid ""
"\n"
"      user creation is not allowed via mgr_register;\n"
"     please contact your sysadmin to have your account created.\n"
"     "
msgstr ""
"\n"
"      mgr_register çµŒç”±ã§ã®ãƒ¦ãƒ¼ã‚¶ä½œæˆã¯è¨±å¯ã•ã‚Œã¦ã„ã¾ã›ã‚“;\n"
"     ã‚·ã‚¹ãƒ†ãƒ ç®¡ç†è€…ã«ã‚¢ã‚«ã‚¦ãƒ³ãƒˆã®ä½œæˆã‚’ä¾é ¼ã—ã¦ãã ã•ã„ã€‚\n"
"     "

#: ../common/rhnException.py:206
msgid ""
"\n"
"     This SUSE Manager server is not allowed to use Inter Server Sync on "
"this server\n"
"     "
msgstr ""
"\n"
"     ã“ã® SUSE Manager ã‚µãƒ¼ãƒãƒ¼ã§ã¯ã€ã“ã®ã‚µãƒ¼ãƒã§ã® Inter Server Sync ã®ä½¿ç”¨"
"ãŒè¨±å¯ã•ã‚Œã¦ã„ã¾ã›ã‚“\n"
"     "

#: ../common/rhnException.py:209
msgid ""
"\n"
"     Inter Server Sync is disabled on this SUSE Manager Server.\n"
"     "
msgstr ""
"\n"
"     Inter Server Sync ã¯ã€ã“ã® SUSE Manager ã‚µãƒ¼ãƒã§ã¯ç„¡åŠ¹åŒ–ã•ã‚Œã¦ã„ã¾ã™ã€‚\n"
"     "

#. 3000-3999: XML dumper errors:
#: ../common/rhnException.py:214
msgid "Invalid datatype passed"
msgstr "ç„¡åŠ¹ãªãƒ‡ãƒ¼ã‚¿ã‚¿ã‚¤ãƒ—ãŒæ¸¡ã•ã‚Œã¦ã„ã¾ã™"

#: ../common/rhnException.py:215
msgid "Unable to retrieve channel"
msgstr "ãƒãƒ£ãƒ³ãƒãƒ«ãŒèª­ã¿å‡ºã›ã¾ã›ã‚“"

#: ../common/rhnException.py:216
msgid "Unable to retrieve package"
msgstr "ãƒ‘ãƒƒã‚±ãƒ¼ã‚¸ãŒèª­ã¿å‡ºã›ã¾ã›ã‚“"

#: ../common/rhnException.py:217
msgid "Unable to retrieve erratum"
msgstr "ã‚¨ãƒ©ãƒ¼ã‚¿ãŒèª­ã¿å‡ºã›ã¾ã›ã‚“"

#: ../common/rhnException.py:218
msgid "File is missing"
msgstr "ãƒ•ã‚¡ã‚¤ãƒ«ãŒã‚ã‚Šã¾ã›ã‚“"

#: ../common/rhnException.py:219
msgid "Function retrieval error"
msgstr "é–¢æ•°èª­ã¿å‡ºã—ã®ã‚¨ãƒ©ãƒ¼ã§ã™"

#: ../common/rhnException.py:220
msgid "Function execution error"
msgstr "é–¢æ•°å®Ÿè¡Œã‚¨ãƒ©ãƒ¼ã§ã™"

#: ../common/rhnException.py:221
msgid "Missing version string"
msgstr "ãƒãƒ¼ã‚¸ãƒ§ãƒ³æ–‡å­—åˆ—ãŒã‚ã‚Šã¾ã›ã‚“"

#: ../common/rhnException.py:222
msgid "Invalid version string"
msgstr "ç„¡åŠ¹ãªãƒãƒ¼ã‚¸ãƒ§ãƒ³æ–‡å­—åˆ—ã§ã™"

#: ../common/rhnException.py:223
msgid "Mismatching versions"
msgstr "ãƒãƒ¼ã‚¸ãƒ§ãƒ³ãŒä¸€è‡´ã—ã¾ã›ã‚“"

#: ../common/rhnException.py:224
msgid "Invalid channel version"
msgstr "ç„¡åŠ¹ãªãƒãƒ£ãƒ³ãƒãƒ«ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã§ã™"

#: ../common/rhnException.py:225
msgid "No comps file for channel"
msgstr "ãƒãƒ£ãƒ³ãƒãƒ«ç”¨ã® comps ãƒ•ã‚¡ã‚¤ãƒ«ãŒã‚ã‚Šã¾ã›ã‚“"

#: ../common/rhnException.py:226
msgid "Unable to retrieve comps file"
msgstr "comps ãƒ•ã‚¡ã‚¤ãƒ«ãŒèª­ã¿å‡ºã›ã¾ã›ã‚“"

#. 4000 - 4999: config management errors
#: ../common/rhnException.py:229
msgid "Configuration action missing"
msgstr "è¨­å®šå‹•ä½œãŒã‚ã‚Šã¾ã›ã‚“"

#: ../common/rhnException.py:230
msgid "File too large"
msgstr "ãƒ•ã‚¡ã‚¤ãƒ«ãŒé•·ã™ãŽã¾ã™"

#: ../common/rhnException.py:231
msgid "File contains binary data"
msgstr "ãƒ•ã‚¡ã‚¤ãƒ«ã«ãƒã‚¤ãƒŠãƒªãƒ‡ãƒ¼ã‚¿ãŒå«ã¾ã‚Œã¦ã„ã¾ã™"

#: ../common/rhnException.py:232
msgid "Configuration channel is not empty"
msgstr "è¨­å®šãƒãƒ£ãƒ³ãƒãƒ«ãŒç©ºã«ãªã£ã¦ã„ã¾ã›ã‚“"

#: ../common/rhnException.py:233
msgid "Permission error"
msgstr "ãƒ‘ãƒ¼ãƒŸãƒƒã‚·ãƒ§ãƒ³ã‚¨ãƒ©ãƒ¼ã§ã™"

#: ../common/rhnException.py:234
msgid "Content missing for configuration file"
msgstr "è¨­å®šãƒ•ã‚¡ã‚¤ãƒ«ã®å†…å®¹ãŒã‚ã‚Šã¾ã›ã‚“"

#: ../common/rhnException.py:235
msgid "Template delimiters not specified"
msgstr "ãƒ†ãƒ³ãƒ—ãƒ¬ãƒ¼ãƒˆã®åŒºåˆ‡ã‚Šæ–‡å­—ãŒæŒ‡å®šã•ã‚Œã¦ã„ã¾ã›ã‚“"

#: ../common/rhnException.py:236
msgid "Configuration channel does not exist"
msgstr "è¨­å®šãƒãƒ£ãƒ³ãƒãƒ«ãŒå­˜åœ¨ã—ã¦ã„ã¾ã›ã‚“"

#: ../common/rhnException.py:237
msgid "Configuration channel already exists"
msgstr "è¨­å®šãƒãƒ£ãƒ³ãƒãƒ«ã¯æ—¢ã«å­˜åœ¨ã—ã¦ã„ã¾ã™"

#: ../common/rhnException.py:238
msgid "File missing from configuration channel"
msgstr "è¨­å®šãƒãƒ£ãƒ³ãƒãƒ«ã‹ã‚‰ã®ãƒ•ã‚¡ã‚¤ãƒ«ãŒã‚ã‚Šã¾ã›ã‚“"

#: ../common/rhnException.py:239
msgid "Different revision of this file is uploaded"
msgstr "ã“ã®ãƒ•ã‚¡ã‚¤ãƒ«ã®åˆ¥ã®æ”¹è¨‚ç‰ˆãŒã‚¢ãƒƒãƒ—ãƒ­ãƒ¼ãƒ‰ã•ã‚Œã¦ã„ã¾ã™"

#: ../common/rhnException.py:240
msgid "File already uploaded to configuration channel"
msgstr "ãƒ•ã‚¡ã‚¤ãƒ«ã¯æ—¢ã«è¨­å®šãƒãƒ£ãƒ³ãƒãƒ«ã«ã‚¢ãƒƒãƒ—ãƒ­ãƒ¼ãƒ‰ã•ã‚Œã¦ã„ã¾ã™"

#: ../common/rhnException.py:241
msgid "File size exceeds remaining quota space"
msgstr "ãƒ•ã‚¡ã‚¤ãƒ«ã‚µã‚¤ã‚ºãŒæ®‹ã‚Šã®ä¸Šé™é ˜åŸŸã‚’è¶…ãˆã¦ã„ã¾ã™"

#: ../common/rhnException.py:242
msgid "Full path of file must be specified"
msgstr "ãƒ•ã‚¡ã‚¤ãƒ«ã®å®Œå…¨ãƒ‘ã‚¹ã‚’æŒ‡å®šã—ã¦ãã ã•ã„"

#: ../common/rhnException.py:243
msgid "Invalid revision number"
msgstr "ç„¡åŠ¹ãªæ”¹è¨‚ç‰ˆç•ªå·ã§ã™"

#: ../common/rhnException.py:244
msgid "Cannot compare files of different file type"
msgstr "ã‚¿ã‚¤ãƒ—ãŒç•°ãªã‚‹ãƒ•ã‚¡ã‚¤ãƒ«åŒå£«ã¯æ¯”è¼ƒã§ãã¾ã›ã‚“"

#. 5000 - 5999: client content uploading errors
#. 5000 - 5099: crash reporting errors
#: ../common/rhnException.py:248
msgid "Crash information is invalid or incomplete"
msgstr "ã‚¯ãƒ©ãƒƒã‚·ãƒ¥æƒ…å ±ãŒæ­£ã—ããªã„ã‹ã€ä¸å®Œå…¨ã§ã™"

#: ../common/rhnException.py:249
msgid "Crash file information is invalid or incomplete"
msgstr "ã‚¯ãƒ©ãƒƒã‚·ãƒ¥ãƒ•ã‚¡ã‚¤ãƒ«ã®æƒ…å ±ãŒæ­£ã—ããªã„ã‹ã€ä¸å®Œå…¨ã§ã™"

#: ../common/rhnException.py:250
msgid "Error composing crash directory path"
msgstr "ã‚¯ãƒ©ãƒƒã‚·ãƒ¥ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªãƒ‘ã‚¹ã®ç”Ÿæˆæ™‚ã«ã‚¨ãƒ©ãƒ¼"

#: ../common/rhnException.py:251
msgid "Error composing crash file path"
msgstr "ã‚¯ãƒ©ãƒƒã‚·ãƒ¥ãƒ•ã‚¡ã‚¤ãƒ«ãƒ‘ã‚¹ã®ç”Ÿæˆæ™‚ã«ã‚¨ãƒ©ãƒ¼"

#: ../common/rhnException.py:252 ../common/rhnException.py:259
msgid "Invalid content encoding"
msgstr "ã‚³ãƒ³ãƒ†ãƒ³ãƒ„ã‚¨ãƒ³ã‚³ãƒ¼ãƒ‡ã‚£ãƒ³ã‚°ãŒæ­£ã—ãã‚ã‚Šã¾ã›ã‚“"

#: ../common/rhnException.py:253
msgid "Invalid crash name"
msgstr "ã‚¯ãƒ©ãƒƒã‚·ãƒ¥åãŒæ­£ã—ãã‚ã‚Šã¾ã›ã‚“"

#: ../common/rhnException.py:254
msgid "Crash reporting is disabled for this organization"
msgstr "ã“ã®çµ„ç¹”ã«å¯¾ã—ã¦ã¯ã‚¯ãƒ©ãƒƒã‚·ãƒ¥å ±å‘Šæ©Ÿèƒ½ãŒç„¡åŠ¹åŒ–ã•ã‚Œã¦ã„ã¾ã™"

#. 5100 - 5199: scap results reporting error
#: ../common/rhnException.py:256
msgid "SCAP results file transfer is invalid or incomplete"
msgstr "SCAP results ã®ãƒ•ã‚¡ã‚¤ãƒ«è»¢é€ãŒæ­£ã—ããªã„ã‹ã€ä¸å®Œå…¨ã§ã™"

#: ../common/rhnException.py:257
msgid "Error composing directory path for detailed SCAP results"
msgstr "è©³ç´°ãª SCAP results ã«å¯¾ã™ã‚‹ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªãƒ‘ã‚¹ã®ç”Ÿæˆæ™‚ã«ã‚¨ãƒ©ãƒ¼"

#: ../common/rhnException.py:258
msgid "Error composing file path for detailed SCAP results"
msgstr "è©³ç´°ãª SCAP results ã«å¯¾ã™ã‚‹ãƒ•ã‚¡ã‚¤ãƒ«ãƒ‘ã‚¹ã®ç”Ÿæˆæ™‚ã«ã‚¨ãƒ©ãƒ¼"

#: ../common/rhnException.py:306
msgid ""
"\n"
"     An error has occurred while processing your request. If this problem\n"
"     persists please enter a bug report at scc.suse.com.\n"
"     If you choose to submit the bug report, please be sure to include\n"
"     details of what you were trying to do when this error occurred and\n"
"     details on how to reproduce this problem.\n"
msgstr ""
"\n"
"     è¦æ±‚ã®å‡¦ç†ä¸­ã«ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ã¾ã—ãŸã€‚ å•é¡ŒãŒè§£æ±ºã—ãªã„å ´åˆã¯ã€\n"
"     scc.suse.com ã«ã¦ãƒã‚°å ±å‘Šã‚’æå‡ºã—ã¦ãã ã•ã„ã€‚\n"
"     ãƒã‚°å ±å‘Šã‚’è¡Œãªã†å ´åˆã¯ã€ ã‚¨ãƒ©ãƒ¼ãŒèµ·ããŸã¨ãã«ä½•ã‚’è¡ŒãªãŠã†ã¨ã—ã¦ã„ãŸã®"
"ã‹ã€\n"
"     ã¾ãŸå•é¡Œã‚’å†ç¾ã™ã‚‹å ´åˆã®æ‰‹é †ãªã©ã‚’è©³ã—ãè¨˜å…¥ã—ã¦ã„ãŸã ã‘ã‚‹ã‚ˆã†\n"
"     ãŠé¡˜ã„ã—ã¾ã™ã€‚\n"

#: ../common/rhnException.py:358
#, python-format
msgid ""
"Error Message:\n"
"    %s\n"
msgstr ""
"ã‚¨ãƒ©ãƒ¼ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸:\n"
"    %s\n"

#: ../common/rhnException.py:360
#, python-format
msgid "Error Class Code: %s\n"
msgstr "ã‚¨ãƒ©ãƒ¼ã‚¯ãƒ©ã‚¹ã‚³ãƒ¼ãƒ‰: %s\n"

#: ../common/rhnException.py:363
#, python-format
msgid "Error Class Info: %s\n"
msgstr "ã‚¨ãƒ©ãƒ¼ã‚¯ãƒ©ã‚¹æƒ…å ±: %s\n"

#: ../common/rhnException.py:365
#, python-format
msgid "Explanation: %s"
msgstr "èª¬æ˜Ž: %s"

#: ../common/rhnTB.py:205
#, python-format
msgid "ERROR: %s %s: %s"
msgstr "ã‚¨ãƒ©ãƒ¼: %s %s: %s"

#: ../common/rhnTB.py:207
#, python-format
msgid "TRACEBACK: %s"
msgstr "ãƒˆãƒ¬ãƒ¼ã‚¹ãƒãƒƒã‚¯: %s"

#: ../satellite_tools/disk_dumper/iss.py:1294
#: ../satellite_tools/disk_dumper/iss.py:1298
#, python-format
msgid "format of %s should be at least YYYYMMDD.\n"
msgstr "%s ã®æ›¸å¼ã¯å°‘ãªãã¨ã‚‚ YYYYMMDD ã§ã‚ã‚‹ã¹ãã§ã™ã€‚\n"

#: ../satellite_tools/messages.py:26
#, python-format
msgid ""
"\n"
"ERROR: executing step %s. Error is:\n"
"%s\n"
msgstr ""
"\n"
"ã‚¨ãƒ©ãƒ¼: ã‚¹ãƒ†ãƒƒãƒ— %s ã®å®Ÿè¡Œæ™‚ã«ã‚¨ãƒ©ãƒ¼:\n"
"%s\n"

#: ../satellite_tools/messages.py:31
#, python-format
msgid ""
"\n"
"ERROR: there was a problem accessing the channel data from your temporary\n"
"       repository. Did you migrate all of the data from the channel ISOs\n"
"       do this directory? If so, please recheck the channels ISOs, ensure\n"
"       that you have them all, and then iteratively remount and repopulate\n"
"       the temporary repository (%s).\n"
msgstr ""
"\n"
"ã‚¨ãƒ©ãƒ¼: ä¸€æ™‚ãƒªãƒã‚¸ãƒˆãƒªãƒ¼ã‹ã‚‰ãƒãƒ£ãƒ³ãƒãƒ«ãƒ‡ãƒ¼ã‚¿ã«ã‚¢ã‚¯ã‚»ã‚¹ã™ã‚‹éš›ã«å•é¡ŒãŒã‚ã‚Šã¾ã—"
"ãŸã€‚\n"
"       ã“ã®ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã«å¯¾ã—ã¦ã€ãƒãƒ£ãƒ³ãƒãƒ« ISO ã‹ã‚‰ã®å…¨ã¦ã®ãƒ‡ãƒ¼ã‚¿ã‚’ç§»è¡Œã—ã¦"
"ã‚ã‚Šã¾ã™ã‹ï¼Ÿ\n"
"       ãƒãƒ£ãƒ³ãƒãƒ« ISO ã®å†…å®¹ãŒå…¨ã¦ç§»è¡Œã•ã‚Œã¦ã„ã‚‹ã“ã¨ã‚’ç¢ºèªã—ã¦å†åº¦ãƒžã‚¦ãƒ³ãƒˆã‚’"
"è¡Œãªã„ã€\n"
"       ä¸€æ™‚ãƒªãƒã‚¸ãƒˆãƒªãƒ¼ (%s) å†…ã«å†æŠ•å…¥ã—ã¦ãã ã•ã„ã€‚\n"

#: ../satellite_tools/messages.py:39
#, python-format
msgid ""
"\n"
"ERROR: there was a problem synchronizing the information.\n"
"       Error message: %s\n"
msgstr ""
"\n"
"ã‚¨ãƒ©ãƒ¼: æƒ…å ±ã‚’åŒæœŸã™ã‚‹éš›ã«å•é¡ŒãŒã‚ã‚Šã¾ã—ãŸã€‚\n"
"       ã‚¨ãƒ©ãƒ¼ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸: %s\n"

#: ../satellite_tools/messages.py:44
#, python-format
msgid ""
"\n"
"ERROR: There was a problem communicating with the ISS Master.\n"
"       Depending on the specific error details, please review your "
"configuration,\n"
"       basic network connectivity, and/or name resolution, and try again.\n"
"       Error message: %s\n"
msgstr ""
"\n"
"ã‚¨ãƒ©ãƒ¼: ISS Master ã¨é€šä¿¡ã™ã‚‹éš›ã«å•é¡ŒãŒã‚ã‚Šã¾ã—ãŸã€‚\n"
"       ã‚¨ãƒ©ãƒ¼ã®è©³ç´°ã«ã‚‚ã‚ˆã‚Šã¾ã™ãŒã€è¨­å®šã‚„ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ã®æŽ¥ç¶šã€åå‰è§£æ±ºãªã©ãŒæ­£"
"ã—ãå‹•ä½œ\n"
"       ã™ã‚‹ã“ã¨ã‚’ã”ç¢ºèªã®ã†ãˆã€ã‚„ã‚Šç›´ã—ã¦ãã ã•ã„ã€‚\n"
"       ã‚¨ãƒ©ãƒ¼ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸: %s\n"

#: ../satellite_tools/messages.py:51
#, python-format
msgid ""
"\n"
"ERROR: There was a problem communicating with the ISS Master.\n"
"       If the master satellite is older than v5.3, it does not have ISS "
"capability.\n"
"       Otherwise, depending on the specific error details, please review "
"your\n"
"       configuration, basic network connectivity, and/or name resolution, "
"and try again.\n"
"       Error message: %s\n"
msgstr ""
"\n"
"ã‚¨ãƒ©ãƒ¼: ISS Master ã¨ã®é€šä¿¡ã™ã‚‹éš›ã«ã‚¨ãƒ©ãƒ¼ãŒã‚ã‚Šã¾ã—ãŸã€‚\n"
"       ãƒžã‚¹ã‚¿ãƒ¼ Satellite ãŒãƒãƒ¼ã‚¸ãƒ§ãƒ³ 5.3 ã‚ˆã‚Šã‚‚å¤ã„å ´åˆã€ ISS ã®æ©Ÿèƒ½ã¯æä¾›"
"ã•ã‚Œã¦ã„ã¾ã›ã‚“ã€‚\n"
"       ãƒžã‚¹ã‚¿ãƒ¼ Satellite ãŒãƒãƒ¼ã‚¸ãƒ§ãƒ³ 5.3 ã‚‚ã—ãã¯ãã‚Œä»¥é™ã®å ´åˆã¯ã€ã‚¨ãƒ©ãƒ¼ã®"
"è©³ç´°ã«ã‚‚ã‚ˆã‚Šã¾ã™ãŒã€\n"
"       è¨­å®šã‚„ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ã®æŽ¥ç¶šã€åå‰è§£æ±ºãªã©ãŒæ­£ã—ãå‹•ä½œã™ã‚‹ã“ã¨ã‚’ã”ç¢ºèªã®ã†"
"ãˆã€ã‚„ã‚Šç›´ã—ã¦ãã ã•ã„ã€‚\n"
"       ã‚¨ãƒ©ãƒ¼ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸: %s\n"

#: ../satellite_tools/messages.py:59
#, python-format
msgid ""
"\n"
"ERROR: a child-channel cannot be synced without its parent being synced as\n"
"       well. A parent needs to be either (a) previously synced or (b) "
"synced\n"
"       in tandem with the desired child-channel. Missing parents for this\n"
"       transaction:\n"
"       %s\n"
msgstr ""
"\n"
"ã‚¨ãƒ©ãƒ¼: å­ãƒãƒ£ãƒ³ãƒãƒ«ã‚’åŒæœŸã™ã‚‹ã«ã‚ãŸã£ã¦ã¯ã€è¦ªãƒãƒ£ãƒ³ãƒãƒ«ã‚‚åŒæœŸã™ã‚‹å¿…è¦ãŒã‚ã‚Š"
"ã¾ã™ã€‚\n"
"       è¦ªãƒãƒ£ãƒ³ãƒãƒ«ã¯ä»¥å‰ã«åŒæœŸã•ã‚Œã¦ã„ã‚‹ã‹ã€ã‚‚ã—ãã¯å­ãƒãƒ£ãƒ³ãƒãƒ«ã¨ä¸¦è¡Œã—ã¦åŒ"
"æœŸã•ã›ã‚‹\n"
"       å¿…è¦ãŒã‚ã‚Šã¾ã™ã€‚ã“ã®ãƒˆãƒ©ãƒ³ã‚¶ã‚¯ã‚·ãƒ§ãƒ³ã«å¯¾ã™ã‚‹è¦ªãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“:\n"
"       %s\n"

#: ../satellite_tools/messages.py:67
#, python-format
msgid ""
"\n"
"ERROR: you are not entitled to sync a channel in this set of channels.\n"
"Please contact your SUSE Manager contact\n"
"%s"
msgstr ""
"\n"
"ã‚¨ãƒ©ãƒ¼: ã“ã®ãƒãƒ£ãƒ³ãƒãƒ«ã‚»ãƒƒãƒˆå†…ã§ãƒãƒ£ãƒ³ãƒãƒ«ã‚’åŒæœŸã™ã‚‹ãŸã‚ã®ã‚¨ãƒ³ã‚¿ã‚¤ãƒˆãƒ«ãƒ¡ãƒ³ãƒˆ"
"ãŒã‚ã‚Šã¾ã›ã‚“ã€‚\n"
"SUSE Manager ã«é€£çµ¡ã‚’è¡Œãªã£ã¦ãã ã•ã„\n"
"%s"

#: ../satellite_tools/messages.py:72
#, python-format
msgid "  ERROR: not enough free space (%s KB) on device."
msgstr "  ã‚¨ãƒ©ãƒ¼: ãƒ‡ãƒã‚¤ã‚¹ã«ååˆ†ãªç©ºãå®¹é‡ (%s KB) ãŒã‚ã‚Šã¾ã›ã‚“ã€‚"

#: ../satellite_tools/messages.py:74
#, python-format
msgid "    %3d/%s Fetch successful: %s (%s bytes)"
msgstr "    %3d/%s ãƒ•ã‚§ãƒƒãƒæˆåŠŸ: %s (%s ãƒã‚¤ãƒˆ)"

#: ../satellite_tools/messages.py:75
#, python-format
msgid "    Extinct package:  %s"
msgstr "    å»ƒæ­¢ã•ã‚ŒãŸãƒ‘ãƒƒã‚±ãƒ¼ã‚¸:  %s"

#: ../satellite_tools/messages.py:76
#, python-format
msgid "   Total size: %s"
msgstr "   åˆè¨ˆã‚µã‚¤ã‚º: %s"

#: ../satellite_tools/messages.py:77
#, python-format
msgid "      Downloaded %s of %s. Estimated remaining time: %s"
msgstr "      %s / %s ã‚’ãƒ€ã‚¦ãƒ³ãƒ­ãƒ¼ãƒ‰æ¸ˆã¿ã§ã™ã€‚äºˆæ¸¬ã•ã‚Œã‚‹æ®‹ã‚Šæ™‚é–“: %s"

#: ../satellite_tools/messages.py:78
#, python-format
msgid "    Fetch unsuccessful: %s"
msgstr "    ãƒ•ã‚§ãƒƒãƒæœªæˆåŠŸ: %s"

#: ../satellite_tools/messages.py:79
#, python-format
msgid "   RPM fetch summary: %s"
msgstr "   RPM ãƒ•ã‚§ãƒƒãƒæ¦‚è¦: %s"

#: ../satellite_tools/messages.py:80
#, python-format
msgid "       success: %d"
msgstr "       æˆåŠŸ: %d"

#: ../satellite_tools/messages.py:81
#, python-format
msgid "       failed:  %d"
msgstr "       å¤±æ•—:  %d"

#: ../satellite_tools/messages.py:82
#, python-format
msgid "       extinct: %d"
msgstr "       æ¶ˆæ»…: %d"

#: ../satellite_tools/messages.py:84
#, python-format
msgid "   Retrieving / parsing *relevant* package metadata: %s (%s)"
msgstr "   *é–¢é€£ã™ã‚‹* ãƒ‘ãƒƒã‚±ãƒ¼ã‚¸ã®ãƒ¡ã‚¿ãƒ‡ãƒ¼ã‚¿ã‚’å–å¾—ï¼å‡¦ç†ã—ã¦ã„ã¾ã™: %s (%s)"

#: ../satellite_tools/messages.py:85
#, python-format
msgid "   Retrieving / parsing errata data: %s (%s)"
msgstr "   ã‚¨ãƒ©ãƒ¼ã‚¿ã®ãƒ‡ãƒ¼ã‚¿ã‚’å–å¾—ï¼å‡¦ç†ã—ã¦ã„ã¾ã™: %s (%s)"

#: ../satellite_tools/messages.py:86
#, python-format
msgid "   Retrieving / parsing kickstart data: %s (%s)"
msgstr "   ã‚­ãƒƒã‚¯ã‚¹ã‚¿ãƒ¼ãƒˆã®ãƒ‡ãƒ¼ã‚¿ã‚’å–å¾—ï¼å‡¦ç†ã—ã¦ã„ã¾ã™: %s (%s)"

#: ../satellite_tools/messages.py:87
#, python-format
msgid "   Retrieving / parsing kickstart tree files: %s (%s)"
msgstr "   ã‚­ãƒƒã‚¯ã‚¹ã‚¿ãƒ¼ãƒˆã®ãƒ„ãƒªãƒ¼ãƒ•ã‚¡ã‚¤ãƒ«ã‚’å–å¾—ï¼å‡¦ç†ã—ã¦ã„ã¾ã™: %s (%s)"

#: ../satellite_tools/messages.py:88
#, python-format
msgid "   Importing *relevant* package metadata: %s (%s)"
msgstr "   *é–¢é€£ã™ã‚‹* ãƒ‘ãƒƒã‚±ãƒ¼ã‚¸ã®ãƒ¡ã‚¿ãƒ‡ãƒ¼ã‚¿ã‚’å–ã‚Šè¾¼ã‚“ã§ã„ã¾ã™: %s (%s)"

#: ../satellite_tools/messages.py:89
msgid "   * WARNING: this may be a slow process."
msgstr "   * è­¦å‘Š: ã“ã®å‡¦ç†ã«ã¯æ™‚é–“ãŒã‹ã‹ã‚‹ã‹ã‚‚ã—ã‚Œã¾ã›ã‚“ã€‚"

#: ../satellite_tools/messages.py:90
msgid "Linking packages to channels"
msgstr "ãƒãƒ£ãƒ³ãƒãƒ«ã«å¯¾ã—ã¦ãƒ‘ãƒƒã‚±ãƒ¼ã‚¸ã®ãƒªãƒ³ã‚¯ã‚’ä½œæˆã—ã¦ã„ã¾ã™"

#: ../satellite_tools/messages.py:91
#, python-format
msgid "   Importing *relevant* errata: %s (%s)"
msgstr "   *é–¢é€£ã™ã‚‹* ã‚¨ãƒ©ãƒ¼ã‚¿ã‚’å–ã‚Šè¾¼ã‚“ã§ã„ã¾ã™: %s (%s)"

#: ../satellite_tools/messages.py:92
msgid "   No new kickstartable tree to import"
msgstr "   å–ã‚Šè¾¼ã‚€ã¹ãæ–°ã—ã„ã‚­ãƒƒã‚¯ã‚¹ã‚¿ãƒ¼ãƒˆå¯èƒ½ãªãƒ„ãƒªãƒ¼ã¯ã‚ã‚Šã¾ã›ã‚“"

#: ../satellite_tools/messages.py:93
#, python-format
msgid "Importing kickstartable trees (%d)"
msgstr "ã‚­ãƒƒã‚¯ã‚¹ã‚¿ãƒ¼ãƒˆå¯èƒ½ãªãƒ„ãƒªãƒ¼ã‚’å–ã‚Šè¾¼ã‚“ã§ã„ã¾ã™ (%d)"

#: ../satellite_tools/messages.py:94
#, python-format
msgid "Imported kickstartable trees (%d)"
msgstr "ã‚­ãƒƒã‚¯ã‚¹ã‚¿ãƒ¼ãƒˆå¯èƒ½ãªãƒ„ãƒªãƒ¼ã‚’å–ã‚Šè¾¼ã¿ã¾ã—ãŸ (%d)"

#: ../satellite_tools/reposync.py:111 ../satellite_tools/satsync.py:439
msgid "+++ sending log as an email +++"
msgstr "+++ é›»å­ãƒ¡ãƒ¼ãƒ«ã§ãƒ­ã‚°ã‚’é€ä¿¡ +++"

#: ../satellite_tools/reposync.py:114
#, python-format
msgid "%s sync. report from %s"
msgstr "%s åŒæœŸã€‚ %s ã‹ã‚‰ã®ãƒ¬ãƒãƒ¼ãƒˆ"

#: ../satellite_tools/reposync.py:124 ../satellite_tools/satsync.py:449
msgid "+++ email requested, but there is nothing to send +++"
msgstr "+++ é›»å­ãƒ¡ãƒ¼ãƒ«ã®è¦æ±‚ãŒã‚ã‚Šã¾ã—ãŸãŒã€é€ä¿¡ã™ã¹ãå†…å®¹ãŒã‚ã‚Šã¾ã›ã‚“ +++"

#: ../satellite_tools/rhn_satellite_activate.py:198
#, python-format
msgid ""
"\"%s\" (specified in commandline)\n"
"could not be opened and read:\n"
"%s"
msgstr ""
"\"%s\" (ã‚³ãƒžãƒ³ãƒ‰ãƒ©ã‚¤ãƒ³å†…ã§æŒ‡å®šã•ã‚Œã¦ã„ã¾ã™)\n"
"ã‚’é–‹ã„ã¦èª­ã¿è¾¼ã‚€ã“ã¨ãŒã§ãã¾ã›ã‚“:\n"
"%s"

#: ../satellite_tools/rhn_satellite_activate.py:205
#, python-format
msgid ""
"\"%s\" could not be opened\n"
"and/or written to:\n"
"%s"
msgstr ""
"\"%s\" ã‚’é–‹ã„ãŸã‚Šæ›¸ãè¾¼ã‚“ã ã‚Šã™ã‚‹\n"
"ã“ã¨ãŒã§ãã¾ã›ã‚“:\n"
"%s"

#: ../satellite_tools/satsync.py:258
#, python-format
msgid "No handler for step %s"
msgstr "ã‚¹ãƒ†ãƒƒãƒ— %s ã«å¯¾ã™ã‚‹ãƒãƒ³ãƒ‰ãƒ©ãŒã‚ã‚Šã¾ã›ã‚“"

#. Try one more time - this time it should be faster since
#. everything should be cached
#: ../satellite_tools/satsync.py:270
msgid "Environment changed, trying again..."
msgstr "ç’°å¢ƒãŒå¤‰æ›´ã•ã‚Œã¾ã—ãŸã€‚å†è©¦è¡Œã—ã¦ã„ã¾ã™..."

#: ../satellite_tools/satsync.py:277
msgid "ERROR: Encountered IntegrityError: \n"
msgstr "ã‚¨ãƒ©ãƒ¼: IntegrityError ã«é­é‡ã—ã¾ã—ãŸ: \n"

#: ../satellite_tools/satsync.py:285
msgid "Repeated failures"
msgstr "ç¹°ã‚Šè¿”ã—ã®å¤±æ•—"

#: ../satellite_tools/satsync.py:290
#, python-format
msgid ""
"    Import complete:\n"
"        Begin time: %s\n"
"        End time:   %s\n"
"        Elapsed:    %s\n"
"          "
msgstr ""
"    å–ã‚Šè¾¼ã¿ãŒå®Œäº†ã—ã¾ã—ãŸ:\n"
"        é–‹å§‹æ™‚åˆ»: %s\n"
"        çµ‚äº†æ™‚åˆ»: %s\n"
"        çµŒéŽæ™‚é–“: %s\n"
"          "

#: ../satellite_tools/satsync.py:311
msgid "hours"
msgstr "æ™‚é–“"

#: ../satellite_tools/satsync.py:311
msgid "minutes"
msgstr "åˆ†"

#: ../satellite_tools/satsync.py:311
msgid "seconds"
msgstr "ç§’"

#: ../satellite_tools/satsync.py:357
msgid ""
"ERROR: The dump is missing package data, use --no-rpms to skip this step or "
"fix the content to include package data."
msgstr ""
"ã‚¨ãƒ©ãƒ¼: ãƒ€ãƒ³ãƒ—ã«ã¯ãƒ‘ãƒƒã‚±ãƒ¼ã‚¸ãƒ‡ãƒ¼ã‚¿ãŒã‚ã‚Šã¾ã›ã‚“ã€‚ --no-rpms ã‚’æŒ‡å®šã—ã¦ã“ã®ã‚¹"
"ãƒ†ãƒƒãƒ—ã‚’é£›ã°ã™ã‹ã€ãƒ‘ãƒƒã‚±ãƒ¼ã‚¸ãƒ‡ãƒ¼ã‚¿ãŒå«ã¾ã‚Œã‚‹ã‚ˆã†ã«å†…å®¹ã‚’ä¿®æ­£ã—ã¦ãã ã•ã„ã€‚"

#. the orgs() method doesn't exist; that's fine we just
#. won't sync the orgs
#: ../satellite_tools/satsync.py:404
msgid "The SUSE Manager master does not support syncing orgs data."
msgstr "SUSE Manager ãƒžã‚¹ã‚¿ãƒ¼ã¯çµ„ç¹”ãƒ‡ãƒ¼ã‚¿ã®åŒæœŸã‚’ã‚µãƒãƒ¼ãƒˆã—ã¦ã„ã¾ã›ã‚“ã€‚"

#: ../satellite_tools/satsync.py:404
msgid "Skipping..."
msgstr "é£›ã°ã—ã¦ã„ã¾ã™..."

#: ../satellite_tools/satsync.py:442
#, python-format
msgid "SUSE Manager Inter Server sync. report from %s"
msgstr "SUSE Manager ã‚µãƒ¼ãƒé–“åŒæœŸã§ã™ã€‚ %s ã‹ã‚‰ã®ãƒ¬ãƒãƒ¼ãƒˆ"

#: ../satellite_tools/satsync.py:521
msgid " - file-system synchronization"
msgstr " - ãƒ•ã‚¡ã‚¤ãƒ«ã‚·ã‚¹ãƒ†ãƒ ã®åŒæœŸ"

#: ../satellite_tools/satsync.py:533 ../satellite_tools/satsync.py:541
msgid " - live synchronization"
msgstr " - ãƒ©ã‚¤ãƒ–åŒæœŸ"

#: ../satellite_tools/satsync.py:534
#, python-brace-format
msgid ""
"ERROR: Live content synchronizing with RHN Classic Hosted is no longer "
"supported.\n"
"Please use the cdn-sync command instead unless you are attempting to sync "
"from another {PRODUCT_NAME} via Inter-Server-Sync (ISS), or from local "
"content on disk via Channel Dump ISOs."
msgstr ""
"ã‚¨ãƒ©ãƒ¼: RHN Classic Hosted ã‚’åˆ©ç”¨ã—ãŸãƒ©ã‚¤ãƒ–ã‚³ãƒ³ãƒ†ãƒ³ãƒ„ã®åŒæœŸã¯ã€ã‚‚ã¯ã‚„ã‚µãƒãƒ¼ãƒˆ"
"ã•ã‚Œã¦ã„ã¾ã›ã‚“ã€‚\n"
"ã‚µãƒ¼ãƒé–“åŒæœŸ (ISS) ã‚’ä»‹ã—ã¦ä»–ã® {PRODUCT_NAME} ã‹ã‚‰åŒæœŸã‚’è¡Œãªã£ã¦ã„ã‚‹å ´åˆã‚„ã€"
"ãƒãƒ£ãƒ³ãƒãƒ«ãƒ€ãƒ³ãƒ— ISO ã‚’åˆ©ç”¨ã—ã¦ãƒ‡ã‚£ã‚¹ã‚¯å†…ã®ãƒ­ãƒ¼ã‚«ãƒ«ã‚³ãƒ³ãƒ†ãƒ³ãƒ„ã‹ã‚‰åŒæœŸã‚’è¡Œãªã£"
"ã¦ã„ã‚‹å ´åˆã‚’é™¤ãã€ä»£ã‚ã‚Šã« cdn-sync ã‚³ãƒžãƒ³ãƒ‰ã‚’ä½¿ç”¨ã—ã¦ãã ã•ã„ã€‚"

#: ../satellite_tools/satsync.py:542
#, python-format
msgid "   url: %s"
msgstr "   URL: %s"

#: ../satellite_tools/satsync.py:543
#, python-format
msgid "   debug/output level: %s"
msgstr "   ãƒ‡ãƒãƒƒã‚°ï¼å‡ºåŠ›ãƒ¬ãƒ™ãƒ«: %s"

#: ../satellite_tools/satsync.py:553
msgid "ERROR: this server must be registered with SUSE Manager."
msgstr "ã‚¨ãƒ©ãƒ¼: ã“ã®ã‚µãƒ¼ãƒã‚’ SUSE Manager ã§ç™»éŒ²ã—ãªã‘ã‚Œã°ãªã‚Šã¾ã›ã‚“ã€‚"

#: ../satellite_tools/satsync.py:575
#, python-format
msgid "Retrieving / parsing %s data"
msgstr "%s ã®ãƒ‡ãƒ¼ã‚¿ã‚’å–å¾—ï¼å‡¦ç†ã—ã¦ã„ã¾ã™"

#: ../satellite_tools/satsync.py:585 ../satellite_tools/satsync.py:600
msgid "*** SYSTEM INTERRUPT CALLED ***"
msgstr "*** ã‚·ã‚¹ãƒ†ãƒ å‰²ã‚Šè¾¼ã¿ãŒå‘¼ã³å‡ºã•ã‚Œã¾ã—ãŸ ***"

#: ../satellite_tools/satsync.py:593
msgid "ERROR: fatal parser exception occurred "
msgstr "ã‚¨ãƒ©ãƒ¼: è‡´å‘½çš„ãªå‡¦ç†ä¾‹å¤–ãŒç™ºç”Ÿã—ã¾ã—ãŸ "

#: ../satellite_tools/satsync.py:594
#, python-format
msgid "(line: %s, col: %s msg: %s)"
msgstr "(è¡Œ: %s, åˆ—: %s ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸: %s)"

#: ../satellite_tools/satsync.py:598
#, python-format
msgid "ERROR: parser exception occurred: %s"
msgstr "ã‚¨ãƒ©ãƒ¼: å‡¦ç†ä¾‹å¤–ãŒç™ºç”Ÿã—ã¾ã—ãŸ: %s"

#: ../satellite_tools/satsync.py:603
msgid "ERROR: exception (during parse) occurred: "
msgstr "ã‚¨ãƒ©ãƒ¼: ä¾‹å¤– (å‡¦ç†æ™‚) ãŒç™ºç”Ÿã—ã¾ã—ãŸ: "

#: ../satellite_tools/satsync.py:604
#, python-format
msgid ""
"   Encountered some errors with %s data (see logs (%s) for more information)"
msgstr ""
"   %s ãƒ‡ãƒ¼ã‚¿ã§ã„ãã¤ã‹ã®ã‚¨ãƒ©ãƒ¼ã«é­é‡ã—ã¾ã—ãŸ (è©³ã—ãã¯ãƒ­ã‚° (%s) ã‚’ãŠèª­ã¿ãã "
"ã•ã„)"

#: ../satellite_tools/satsync.py:606
#, python-format
msgid "   Encountered some errors with %s data:"
msgstr "   %s ãƒ‡ãƒ¼ã‚¿ã§ã„ãã¤ã‹ã®ã‚¨ãƒ©ãƒ¼ã«é­é‡ã—ã¾ã—ãŸ:"

#: ../satellite_tools/satsync.py:607
#, python-format
msgid "   ------- %s PARSE/IMPORT ERROR -------"
msgstr "   ------- %s å‡¦ç†ï¼å–ã‚Šè¾¼ã¿ã‚¨ãƒ©ãƒ¼ -------"

#: ../satellite_tools/satsync.py:609
msgid "   ---------------------------------------"
msgstr "   ---------------------------------------"

#: ../satellite_tools/satsync.py:612
#, python-format
msgid "%s data complete"
msgstr "%s ãƒ‡ãƒ¼ã‚¿å®Œäº†"

#: ../satellite_tools/satsync.py:665
msgid "Retrieving / parsing channel data"
msgstr "ãƒãƒ£ãƒ³ãƒãƒ«ãƒ‡ãƒ¼ã‚¿ã®å–å¾—ï¼å‡¦ç†ã‚’è¡Œãªã£ã¦ã„ã¾ã™"

#: ../satellite_tools/satsync.py:718
msgid "Channel data complete"
msgstr "ãƒãƒ£ãƒ³ãƒãƒ«ãƒ‡ãƒ¼ã‚¿å®Œäº†"

#: ../satellite_tools/satsync.py:736
#, python-format
msgid "%10s import from %s"
msgstr "%10s %s ã‹ã‚‰å–ã‚Šè¾¼ã¿"

#: ../satellite_tools/satsync.py:739
#, python-format
msgid "%10s import from %s - %s"
msgstr "%10s %s - %s ã‹ã‚‰å–ã‚Šè¾¼ã¿"

#: ../satellite_tools/satsync.py:743
#, python-format
msgid "%10s"
msgstr "%10s"

#: ../satellite_tools/satsync.py:750
msgid "p"
msgstr "p"

#: ../satellite_tools/satsync.py:752
msgid "."
msgstr "."

#: ../satellite_tools/satsync.py:758
msgid "   p = previously imported/synced channel"
msgstr "   p = ä»¥å‰ã«å–ã‚Šè¾¼ã¿ï¼åŒæœŸã—ãŸãƒãƒ£ãƒ³ãƒãƒ«"

#: ../satellite_tools/satsync.py:759
msgid "   . = channel not yet imported/synced"
msgstr "   . = ã¾ã å–ã‚Šè¾¼ã¿ï¼åŒæœŸã—ã¦ã„ãªã„ãƒãƒ£ãƒ³ãƒãƒ«"

#: ../satellite_tools/satsync.py:765
msgid "   e = channel no longer supported (end-of-service)"
msgstr "   e = ã‚µãƒãƒ¼ãƒˆå¯¾è±¡å¤–ã®ãƒãƒ£ãƒ³ãƒãƒ« (ã‚µãƒ¼ãƒ“ã‚¹çµ‚äº†æ¸ˆã¿)"

#: ../satellite_tools/satsync.py:767
msgid "   ? = channel label invalid --- typo?"
msgstr "   ? = ãƒãƒ£ãƒ³ãƒãƒ«ãƒ©ãƒ™ãƒ«ãŒæ­£ã—ããªã„ã‚‚ã® (æŒ‡å®šãƒŸã‚¹ï¼Ÿ)"

#: ../satellite_tools/satsync.py:771
#, python-format
msgid "   %s:"
msgstr "   %s:"

#: ../satellite_tools/satsync.py:772
#, python-format
msgid "      %s %-40s %4s %s"
msgstr "      %s %-40s %4s %s"

#: ../satellite_tools/satsync.py:773
msgid "base-channels"
msgstr "ãƒ™ãƒ¼ã‚¹ãƒãƒ£ãƒ³ãƒãƒ«"

#: ../satellite_tools/satsync.py:786 ../satellite_tools/satsync.py:1603
msgid "NONE RELEVANT"
msgstr "é–¢ä¿‚ãªã—"

#: ../satellite_tools/satsync.py:808
msgid "end-of-service"
msgstr "ã‚µãƒ¼ãƒ“ã‚¹çµ‚äº†"

#: ../satellite_tools/satsync.py:809
msgid "e"
msgstr "e"

#: ../satellite_tools/satsync.py:815
msgid "   typos:"
msgstr "   èª¤è¨˜:"

#: ../satellite_tools/satsync.py:816
msgid "?"
msgstr "?"

#: ../satellite_tools/satsync.py:831
#, python-format
msgid "XXX: imported channels: %s"
msgstr "XXX: å–ã‚Šè¾¼ã‚“ã ãƒãƒ£ãƒ³ãƒãƒ«: %s"

#: ../satellite_tools/satsync.py:832
#, python-format
msgid "XXX:   cached channels: %s"
msgstr "XXX:   ã‚­ãƒ£ãƒƒã‚·ãƒ¥ã—ãŸãƒãƒ£ãƒ³ãƒãƒ«: %s"

#: ../satellite_tools/satsync.py:837
msgid "XXX: list channels called"
msgstr "XXX: å‘¼ã³å‡ºã—ãŸãƒãƒ£ãƒ³ãƒãƒ«ã®ä¸€è¦§"

#: ../satellite_tools/satsync.py:855
msgid "ERROR: these channels either do not exist or are not available:"
msgstr "ã‚¨ãƒ©ãƒ¼: ã“ã‚Œã‚‰ã®ãƒãƒ£ãƒ³ãƒãƒ«ã¯å­˜åœ¨ã—ã¦ã„ãªã„ã‹ã€åˆ©ç”¨ãŒã§ãã¾ã›ã‚“:"

#: ../satellite_tools/satsync.py:859
#, python-format
msgid "       (to see a list of channel labels: %s --list-channels)"
msgstr "       (ãƒãƒ£ãƒ³ãƒãƒ«ãƒ©ãƒ™ãƒ«ã®ä¸€è¦§ã‚’è¡¨ç¤ºã™ã‚‹ã«ã¯: %s --list-channels)"

#: ../satellite_tools/satsync.py:904
#, python-format
msgid "   Retrieving / parsing short package metadata: %s (%s)"
msgstr "   çŸ­ã„ãƒ‘ãƒƒã‚±ãƒ¼ã‚¸ã®ãƒ¡ã‚¿ãƒ‡ãƒ¼ã‚¿ã‚’å–å¾—ï¼å‡¦ç†ã—ã¦ã„ã¾ã™: %s (%s)"

#: ../satellite_tools/satsync.py:965
#, python-format
msgid "Diffing package metadata (what's missing locally?): %s"
msgstr ""
"ãƒ‘ãƒƒã‚±ãƒ¼ã‚¸ã®ãƒ¡ã‚¿ãƒ‡ãƒ¼ã‚¿ã®å·®åˆ†ã‚’æŠ½å‡ºã—ã¦ã„ã¾ã™ (ãƒ­ãƒ¼ã‚«ãƒ«å´ã«ä½•ãŒç„¡ã„ã®ã‹ã‚’èª¿ã¹"
"ã¦ã„ã¾ã™): %s"

#: ../satellite_tools/satsync.py:971 ../satellite_tools/satsync.py:1254
msgid "Diffing:    "
msgstr "å·®åˆ†ã‚’æŠ½å‡ºã—ã¦ã„ã¾ã™:    "

#: ../satellite_tools/satsync.py:988
msgid "ERROR: incremental dump skipped"
msgstr "ã‚¨ãƒ©ãƒ¼: å¢—åˆ†ãƒ€ãƒ³ãƒ—ã‚’é£›ã°ã—ã¾ã—ãŸ"

#: ../satellite_tools/satsync.py:1079
msgid "Downloading rpm packages"
msgstr "rpm ãƒ‘ãƒƒã‚±ãƒ¼ã‚¸ã‚’ãƒ€ã‚¦ãƒ³ãƒ­ãƒ¼ãƒ‰ã—ã¦ã„ã¾ã™"

#: ../satellite_tools/satsync.py:1084
#, python-format
msgid "   Fetching any missing RPMs: %s (%s)"
msgstr "   å­˜åœ¨ã—ã¦ã„ãªã„ RPM ã‚’ãƒ•ã‚§ãƒƒãƒã—ã¦ã„ã¾ã™: %s (%s)"

#: ../satellite_tools/satsync.py:1085 ../satellite_tools/satsync.py:1153
msgid "NONE MISSING"
msgstr "å­˜åœ¨ã—ãªã„ã‚‚ã®ã¯ã‚ã‚Šã¾ã›ã‚“"

#: ../satellite_tools/satsync.py:1094
msgid "Processing rpm packages complete"
msgstr "rpm ãƒ‘ãƒƒã‚±ãƒ¼ã‚¸ã®å‡¦ç†ãŒå®Œäº†ã—ã¾ã—ãŸ"

#: ../satellite_tools/satsync.py:1121
msgid "Downloading package metadata"
msgstr "ãƒ‘ãƒƒã‚±ãƒ¼ã‚¸ã®ãƒ¡ã‚¿ãƒ‡ãƒ¼ã‚¿ã‚’ãƒ€ã‚¦ãƒ³ãƒ­ãƒ¼ãƒ‰ã—ã¦ã„ã¾ã™"

#: ../satellite_tools/satsync.py:1146
msgid "Downloading srpm packages"
msgstr "srpm ãƒ‘ãƒƒã‚±ãƒ¼ã‚¸ã‚’ãƒ€ã‚¦ãƒ³ãƒ­ãƒ¼ãƒ‰ã—ã¦ã„ã¾ã™"

#: ../satellite_tools/satsync.py:1152
#, python-format
msgid "   Fetching any missing SRPMs: %s (%s)"
msgstr "   å­˜åœ¨ã—ã¦ã„ãªã„ SRPM ã‚’ãƒ•ã‚§ãƒƒãƒã—ã¦ã„ã¾ã™: %s (%s)"

#: ../satellite_tools/satsync.py:1249
#, python-format
msgid "Diffing source package metadata (what's missing locally?): %s"
msgstr ""
"ã‚½ãƒ¼ã‚¹ãƒ‘ãƒƒã‚±ãƒ¼ã‚¸ã®ãƒ¡ã‚¿ãƒ‡ãƒ¼ã‚¿ã®å·®åˆ†ã‚’æŠ½å‡ºã—ã¦ã„ã¾ã™ (ãƒ­ãƒ¼ã‚«ãƒ«å´ã«ä½•ãŒç„¡ã„ã®ã‹"
"ã‚’èª¿ã¹ã¦ã„ã¾ã™): %s"

#: ../satellite_tools/satsync.py:1260
msgid "Downloading source package metadata"
msgstr "ã‚½ãƒ¼ã‚¹ãƒ‘ãƒƒã‚±ãƒ¼ã‚¸ã®ãƒ¡ã‚¿ãƒ‡ãƒ¼ã‚¿ã‚’ãƒ€ã‚¦ãƒ³ãƒ­ãƒ¼ãƒ‰ã—ã¦ã„ã¾ã™"

#: ../satellite_tools/satsync.py:1338 ../satellite_tools/satsync.py:2027
#, python-format
msgid "Unable to save file %s: %s"
msgstr "ãƒ•ã‚¡ã‚¤ãƒ« %s ã‚’ä¿å­˜ã§ãã¾ã›ã‚“: %s"

#. for
#. Retried a number of times and it still failed; log the
#. file as being failed and move on
#: ../satellite_tools/satsync.py:1345
#, python-format
msgid "Failed to fetch file %s"
msgstr "ãƒ•ã‚¡ã‚¤ãƒ« %s ã®ãƒ•ã‚§ãƒƒãƒãŒå¤±æ•—ã—ã¾ã—ãŸ"

#: ../satellite_tools/satsync.py:1350
msgid "Downloading kickstartable trees metadata"
msgstr "ã‚­ãƒƒã‚¯ã‚¹ã‚¿ãƒ¼ãƒˆå¯èƒ½ãªãƒ„ãƒªãƒ¼ã®ãƒ¡ã‚¿ãƒ‡ãƒ¼ã‚¿ã‚’ãƒ€ã‚¦ãƒ³ãƒ­ãƒ¼ãƒ‰ã—ã¦ã„ã¾ã™"

#: ../satellite_tools/satsync.py:1365
msgid "Downloading kickstartable trees files"
msgstr "ã‚­ãƒƒã‚¯ã‚¹ã‚¿ãƒ¼ãƒˆå¯èƒ½ãªãƒ„ãƒªãƒ¼ãƒ•ã‚¡ã‚¤ãƒ«ã‚’ãƒ€ã‚¦ãƒ³ãƒ­ãƒ¼ãƒ‰ã—ã¦ã„ã¾ã™"

#: ../satellite_tools/satsync.py:1504
#, python-format
msgid "Grabbing all patches for channel %s"
msgstr "ãƒãƒ£ãƒ³ãƒãƒ« %s ã«å¯¾ã™ã‚‹å…¨ã¦ã®ãƒ‘ãƒƒãƒã‚’ã¤ã‹ã‚“ã§ã„ã¾ã™"

#: ../satellite_tools/satsync.py:1554
msgid "Downloading patch data"
msgstr "ãƒ‘ãƒƒãƒãƒ‡ãƒ¼ã‚¿ã‚’ãƒ€ã‚¦ãƒ³ãƒ­ãƒ¼ãƒ‰ã—ã¦ã„ã¾ã™"

#: ../satellite_tools/satsync.py:1556
msgid "Forcing download of all patch data for requested channels."
msgstr ""
"è¦æ±‚ã—ãŸãƒãƒ£ãƒ³ãƒãƒ«ã«å¯¾ã™ã‚‹å…¨ã¦ã®ãƒ‘ãƒƒãƒãƒ‡ãƒ¼ã‚¿ã‚’å¼·åˆ¶ãƒ€ã‚¦ãƒ³ãƒ­ãƒ¼ãƒ‰ã—ã¦ã„ã¾ã™ã€‚"

#: ../satellite_tools/satsync.py:1571
msgid "Downloading patch data complete"
msgstr "ãƒ‘ãƒƒãƒãƒ‡ãƒ¼ã‚¿ã®ãƒ€ã‚¦ãƒ³ãƒ­ãƒ¼ãƒ‰ãŒå®Œäº†ã—ã¾ã—ãŸ"

#: ../satellite_tools/satsync.py:1576 ../satellite_tools/satsync.py:1597
msgid "Downloading:"
msgstr "ãƒ€ã‚¦ãƒ³ãƒ­ãƒ¼ãƒ‰ã—ã¦ã„ã¾ã™:"

#: ../satellite_tools/satsync.py:1579
msgid " - complete"
msgstr " - å®Œäº†"

#: ../satellite_tools/satsync.py:1624
msgid "Importing source package metadata"
msgstr "ã‚½ãƒ¼ã‚¹ãƒ‘ãƒƒã‚±ãƒ¼ã‚¸ã®ãƒ¡ã‚¿ãƒ‡ãƒ¼ã‚¿ã‚’å–ã‚Šè¾¼ã‚“ã§ã„ã¾ã™"

#: ../satellite_tools/satsync.py:1627
msgid "Importing package metadata"
msgstr "ãƒ‘ãƒƒã‚±ãƒ¼ã‚¸ã®ãƒ¡ã‚¿ãƒ‡ãƒ¼ã‚¿ã‚’å–ã‚Šè¾¼ã‚“ã§ã„ã¾ã™"

#: ../satellite_tools/satsync.py:1635
msgid "Importing:  "
msgstr "å–ã‚Šè¾¼ã‚“ã§ã„ã¾ã™:  "

#. not in the cache
#: ../satellite_tools/satsync.py:1703
msgid ""
"Package Not Found in Cache, Clear the Cache "
"to                                  Regenerate it."
msgstr ""
"ã‚­ãƒ£ãƒƒã‚·ãƒ¥å†…ã«ã¯ãƒ‘ãƒƒã‚±ãƒ¼ã‚¸ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“ã€‚ã‚­ãƒ£ãƒƒã‚·ãƒ¥ã‚’å†ç”Ÿæˆã™ã‚‹ã«ã¯ã‚¯ãƒªã‚¢"
"ã—ã¦ãã ã•ã„ã€‚"

#: ../satellite_tools/satsync.py:1709
msgid "Importing channel patches"
msgstr "ãƒãƒ£ãƒ³ãƒãƒ«ãƒ‘ãƒƒãƒã‚’å–ã‚Šè¾¼ã‚“ã§ã„ã¾ã™"

#: ../satellite_tools/satsync.py:1714
#, python-format
msgid "Importing %s patches for channel %s."
msgstr "%s å€‹ã®ãƒ‘ãƒƒãƒã‚’ãƒãƒ£ãƒ³ãƒãƒ« %s ã«å¯¾ã—ã¦å–ã‚Šè¾¼ã‚“ã§ã„ã¾ã™ã€‚"

#. Incomplete configuration
#: ../satellite_tools/satsync.py:2113
msgid "ERROR: server.mount_point not set in the configuration file"
msgstr "ã‚¨ãƒ©ãƒ¼: è¨­å®šãƒ•ã‚¡ã‚¤ãƒ«å†…ã§ server.mount_point ãŒè¨­å®šã•ã‚Œã¦ã„ã¾ã›ã‚“"

#: ../satellite_tools/satsync.py:2117
#, python-format
msgid "ERROR: server.mount_point %s do not exist"
msgstr "ã‚¨ãƒ©ãƒ¼: server.mount_point %s ãŒå­˜åœ¨ã—ã¾ã›ã‚“"

#: ../satellite_tools/satsync.py:2122
#, python-format
msgid "ERROR: path under server.mount_point (%s)  do not exist"
msgstr "ã‚¨ãƒ©ãƒ¼: server.mount_point (%s) ä»¥ä¸‹ã®ãƒ‘ã‚¹ãŒå­˜åœ¨ã—ã¦ã„ã¾ã›ã‚“"

#: ../satellite_tools/satsync.py:2199
#, python-format
msgid "Commandline: %s"
msgstr "ã‚³ãƒžãƒ³ãƒ‰ãƒ©ã‚¤ãƒ³: %s"

#: ../satellite_tools/satsync.py:2202
#, python-format
msgid ""
"DEBUG ONLY: max. batch-size for XML/database-import processing (1..%s).\"man "
"satellite-sync\" for more information."
msgstr ""
"ãƒ‡ãƒãƒƒã‚°ã®ã¿: XMLï¼ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹å–ã‚Šè¾¼ã¿ã«å¯¾ã™ã‚‹æœ€å¤§ãƒãƒƒãƒã‚µã‚¤ã‚º (1..%s) ã€‚è©³"
"ã—ãã¯ \"man satellite-sync\" ã‚’ãŠèª­ã¿ãã ã•ã„ã€‚"

#: ../satellite_tools/satsync.py:2205
msgid "alternative SSL CA Cert (fullpath to cert file)"
msgstr "ä»£æ›¿ SSL CA è¨¼æ˜Žæ›¸ (è¨¼æ˜Žæ›¸ãƒ•ã‚¡ã‚¤ãƒ«ã«å¯¾ã™ã‚‹ãƒ•ãƒ«ãƒ‘ã‚¹)"

#: ../satellite_tools/satsync.py:2207
msgid "process data for this channel only"
msgstr "ã“ã®ãƒãƒ£ãƒ³ãƒãƒ«ã«å¯¾ã—ã¦ã®ã¿ãƒ‡ãƒ¼ã‚¿ã‚’å‡¦ç†"

#: ../satellite_tools/satsync.py:2209
msgid ""
"disk dump will be considered to be a full export; see \"man satellite-sync\" "
"for more information."
msgstr ""
"ãƒ‡ã‚£ã‚¹ã‚¯ãƒ€ãƒ³ãƒ—ã¯å®Œå…¨ã‚¨ã‚¯ã‚¹ãƒãƒ¼ãƒˆã¨è€ƒãˆã‚‰ã‚Œã¾ã™ã€‚è©³ã—ãã¯ \"man satellite-sync"
"\" ã‚’ãŠèª­ã¿ãã ã•ã„ã€‚"

#: ../satellite_tools/satsync.py:2212
msgid "existing custom channels will also be synced (unless -c is used)"
msgstr "æ—¢å­˜ã®ç‹¬è‡ªãƒãƒ£ãƒ³ãƒãƒ«ã«ã¤ã„ã¦ã‚‚åŒæœŸãŒè¡Œãªã‚ã‚Œã¾ã™ (-c ã‚’æŒ‡å®šã—ãªã„é™ã‚Š)"

#: ../satellite_tools/satsync.py:2214
#, python-format
msgid ""
"override debug level set in /etc/rhn/rhn.conf (which is currently set at %s)."
msgstr ""
"/etc/rhn/rhn.conf  å†…ã§ãƒ‡ãƒãƒƒã‚°ãƒ¬ãƒ™ãƒ«ã‚’ä¸Šæ›¸ã (ç¾åœ¨ %s ã«è¨­å®šã•ã‚Œã¦ã„ã¾ã™) ã€‚"

#: ../satellite_tools/satsync.py:2216
#, python-format
msgid "requested version of XML dump (default: %s)"
msgstr "XML ãƒ€ãƒ³ãƒ—ã®è¦æ±‚ãƒãƒ¼ã‚¸ãƒ§ãƒ³ (æ—¢å®šå€¤: %s)"

#: ../satellite_tools/satsync.py:2218
msgid "e-mail a report of what was synced/imported"
msgstr "åŒæœŸãŠã‚ˆã³å–ã‚Šè¾¼ã‚“ã ã‚‚ã®ã®ãƒ¬ãƒãƒ¼ãƒˆã‚’é›»å­ãƒ¡ãƒ¼ãƒ«é€ä¿¡"

#: ../satellite_tools/satsync.py:2220
msgid "forcibly process all (not a diff of) patch metadata"
msgstr "å…¨ã¦ã®ãƒ‘ãƒƒãƒã®ãƒ¡ã‚¿ãƒ‡ãƒ¼ã‚¿ã‚’ (å·®åˆ†å‡¦ç†ã§ã¯ãªã) å¼·åˆ¶å‡¦ç†"

#: ../satellite_tools/satsync.py:2222
msgid "Do not use an http proxy under any circumstances."
msgstr "ã©ã®ã‚ˆã†ãªçŠ¶æ³ä¸‹ã§ã‚‚ http ãƒ—ãƒ­ã‚­ã‚·ã‚’ä½¿ç”¨ã—ã¾ã›ã‚“ã€‚"

#: ../satellite_tools/satsync.py:2224
msgid "alternative http proxy (hostname:port)"
msgstr "ä»£æ›¿ http ãƒ—ãƒ­ã‚­ã‚· (ãƒ›ã‚¹ãƒˆå:ãƒãƒ¼ãƒˆ)"

#: ../satellite_tools/satsync.py:2226
msgid "alternative http proxy username"
msgstr "ä»£æ›¿ http ãƒ—ãƒ­ã‚­ã‚·ã®ãƒ¦ãƒ¼ã‚¶å"

#: ../satellite_tools/satsync.py:2228
msgid "alternative http proxy password"
msgstr "ä»£æ›¿ http ãƒ—ãƒ­ã‚­ã‚·ã®ãƒ‘ã‚¹ãƒ¯ãƒ¼ãƒ‰"

#: ../satellite_tools/satsync.py:2230
msgid "parent SUSE Manager to import content from"
msgstr "ã‚³ãƒ³ãƒ†ãƒ³ãƒ„ã®ã‚¤ãƒ³ãƒãƒ¼ãƒˆå…ƒã¨ãªã‚‹è¦ª SUSE Manager"

#: ../satellite_tools/satsync.py:2232
msgid "list all available channels and exit"
msgstr "åˆ©ç”¨å¯èƒ½ãªå…¨ã¦ã®ãƒãƒ£ãƒ³ãƒãƒ«ã‚’ä¸€è¦§è¡¨ç¤ºã—ã¦çµ‚äº†"

#: ../satellite_tools/satsync.py:2234
msgid "help on all error codes mgr-inter-sync returns"
msgstr "mgr-inter-sync ãŒè¿”ã™å…¨ã¦ã®ã‚¨ãƒ©ãƒ¼ã‚³ãƒ¼ãƒ‰ã«å¯¾ã™ã‚‹ãƒ˜ãƒ«ãƒ—"

#: ../satellite_tools/satsync.py:2236
msgid "source mount point for import - disk update only"
msgstr "å–ã‚Šè¾¼ã¿å…ƒã¨ãªã‚‹ãƒžã‚¦ãƒ³ãƒˆãƒã‚¤ãƒ³ãƒˆ - ãƒ‡ã‚£ã‚¹ã‚¯æ›´æ–°ã®å ´åˆã®ã¿"

#: ../satellite_tools/satsync.py:2238
msgid "do not process patch data"
msgstr "ãƒ‘ãƒƒãƒãƒ‡ãƒ¼ã‚¿ã‚’å‡¦ç†ã—ãªã„"

#: ../satellite_tools/satsync.py:2240
msgid "do not process kickstart data (provisioning only)"
msgstr "ã‚­ãƒƒã‚¯ã‚¹ã‚¿ãƒ¼ãƒˆãƒ‡ãƒ¼ã‚¿ã‚’å‡¦ç†ã—ãªã„ (ãƒ—ãƒ­ãƒ“ã‚¸ãƒ§ãƒ‹ãƒ³ã‚°ã®ã¿)"

#: ../satellite_tools/satsync.py:2242
msgid "do not process full package metadata"
msgstr "å®Œå…¨ãƒ‘ãƒƒã‚±ãƒ¼ã‚¸ãƒ¡ã‚¿ãƒ‡ãƒ¼ã‚¿ã‚’å‡¦ç†ã—ãªã„"

#: ../satellite_tools/satsync.py:2244
msgid "do not download, or process any RPMs"
msgstr "RPM ã®ãƒ€ã‚¦ãƒ³ãƒ­ãƒ¼ãƒ‰ã¨å‡¦ç†ã‚’è¡Œãªã‚ãªã„"

#: ../satellite_tools/satsync.py:2246
msgid "turn off SSL (not recommended)"
msgstr "SSL ã‚’ç„¡åŠ¹åŒ–ã™ã‚‹ (éžæŽ¨å¥¨)"

#: ../satellite_tools/satsync.py:2248
msgid "org to which the sync imports data. defaults to the admin account"
msgstr "sync ã®ãƒ‡ãƒ¼ã‚¿ã®å–ã‚Šè¾¼ã¿å…ˆã¨ãªã‚‹çµ„ç¹”ã€‚æ—¢å®šå€¤ã¯ç®¡ç†è€…ã‚¢ã‚«ã‚¦ãƒ³ãƒˆ"

#: ../satellite_tools/satsync.py:2250
msgid "print the configuration and exit"
msgstr "è¨­å®šã‚’å°åˆ·ã—ã¦çµ‚äº†"

#: ../satellite_tools/satsync.py:2252
msgid "alternative server with which to connect (hostname)"
msgstr "æŽ¥ç¶šå…ˆã®ä»£æ›¿ã‚µãƒ¼ãƒ (ãƒ›ã‚¹ãƒˆå)"

#: ../satellite_tools/satsync.py:2254
msgid "synchronize to this step (man satellite-sync for more info)"
msgstr "ã“ã®ã‚¹ãƒ†ãƒƒãƒ—ã¾ã§åŒæœŸ (è©³ã—ãã¯ man satellite-sync ã‚’å‚ç…§)"

#: ../satellite_tools/satsync.py:2256
msgid "write complete data to tempfile before streaming to remainder of app"
msgstr ""
"ã‚¢ãƒ—ãƒªã®æ®‹ã‚Šéƒ¨åˆ†ã«ã‚¹ãƒˆãƒªãƒ¼ãƒŸãƒ³ã‚°ã™ã‚‹å‰ã«ãƒ†ãƒ³ãƒãƒ©ãƒªãƒ•ã‚¡ã‚¤ãƒ«ã«å®Œå…¨ãªãƒ‡ãƒ¼ã‚¿ã‚’æ›¸"
"ãè¾¼ã‚€"

#: ../satellite_tools/satsync.py:2258
msgid "DEBUG ONLY: alternative path to digital system id"
msgstr "ãƒ‡ãƒãƒƒã‚°ã®ã¿: ãƒ‡ã‚¸ã‚¿ãƒ«ã‚·ã‚¹ãƒ†ãƒ  ID ã¸ã®ä»£æ›¿ãƒ‘ã‚¹"

#: ../satellite_tools/satsync.py:2260
msgid "alternative email address(es) for sync output (--email option)"
msgstr "åŒæœŸå‡ºåŠ›å‘ã‘ã®ä»£æ›¿é›»å­ãƒ¡ãƒ¼ãƒ«ã‚¢ãƒ‰ãƒ¬ã‚¹ (--email ã‚ªãƒ—ã‚·ãƒ§ãƒ³)"

#: ../satellite_tools/satsync.py:2262
msgid "do not remove rpms when importing from local dump"
msgstr "ãƒ­ãƒ¼ã‚«ãƒ«ãƒ€ãƒ³ãƒ—ã‹ã‚‰ã®å–ã‚Šè¾¼ã¿æ™‚ã« rpm ã‚’å‰Šé™¤ã—ãªã„"

#: ../satellite_tools/satsync.py:2264
msgid ""
"the fully qualified domain name of the master Satellite. Valid with --mount-"
"point only. Required if you want to import org data and channel permissions."
msgstr ""
"ãƒžã‚¹ã‚¿ãƒ¼ Satellite ã®å®Œå…¨ä¿®é£¾ãƒ‰ãƒ¡ã‚¤ãƒ³åã§ã™ã€‚ --mount-point ã¨ä½µç”¨ã—ãŸå ´åˆã«"
"ã®ã¿æœ‰åŠ¹ã§ã™ã€‚çµ„ç¹”ãƒ‡ãƒ¼ã‚¿ã¨ãƒãƒ£ãƒ³ãƒãƒ«è¨±å¯ã‚’å–ã‚Šè¾¼ã¿ãŸã„å ´åˆã«ã¯å¿…è¦ã§ã™ã€‚"

#: ../satellite_tools/satsync.py:2274
#, python-format
msgid "ERROR: these arguments make no sense in this context (try --help): %s"
msgstr ""
"ã‚¨ãƒ©ãƒ¼: ã“ã‚Œã‚‰ã®ãƒ‘ãƒ©ãƒ¡ãƒ¼ã‚¿ã¯ã€ã“ã®çŠ¶æ³ä¸‹ã§ã¯æ„å‘³ãŒã‚ã‚Šã¾ã›ã‚“ (è©³ã—ãã¯ --"
"help ã‚’å‚ç…§): %s"

#. An SQL error is fatal... crash and burn
#: ../satellite_tools/satsync.py:2286
#, python-format
msgid "ERROR: Can't connect to the database: %s"
msgstr "ã‚¨ãƒ©ãƒ¼: ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã«æŽ¥ç¶šã§ãã¾ã›ã‚“: %s"

#: ../satellite_tools/satsync.py:2287
msgid "ERROR: Check if your database is running."
msgstr "ã‚¨ãƒ©ãƒ¼: ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ãŒå‹•ä½œã—ã¦ã„ã‚‹ã‹ã©ã†ã‹ã”ç¢ºèªãã ã•ã„ã€‚"

#: ../satellite_tools/satsync.py:2322
#, python-format
msgid "ERROR: --debug-level takes an in integer value within the range %s."
msgstr "ã‚¨ãƒ©ãƒ¼: --debug-level ã«ã¯ %s ã®ç¯„å›²å†…ã®æ•´æ•°å€¤ã‚’æŒ‡å®šã—ã¾ã™ã€‚"

#: ../satellite_tools/satsync.py:2324
msgid "  0  - little logging/messaging."
msgstr "  0  - ã”ãã‚ãšã‹ãªãƒ­ã‚°ï¼ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã®ã¿ã€‚"

#: ../satellite_tools/satsync.py:2325
msgid "  1  - minimal logging/messaging."
msgstr "  1  - æœ€å°é™ã®ãƒ­ã‚°ï¼ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã®ã¿ã€‚"

#: ../satellite_tools/satsync.py:2326
msgid "  2  - normal level of logging/messaging."
msgstr "  2  - é€šå¸¸ãƒ¬ãƒ™ãƒ«ã®ãƒ­ã‚°ï¼ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã€‚"

#: ../satellite_tools/satsync.py:2327
msgid "  3  - lots of logging/messaging."
msgstr "  3  - å¤šãã®ãƒ­ã‚°ï¼ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã€‚"

#: ../satellite_tools/satsync.py:2328
msgid "  4+ - excessive logging/messaging."
msgstr "  4+ - éžå¸¸ã«å¤šãã®ãƒ­ã‚°ï¼ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã€‚"

#: ../satellite_tools/satsync.py:2341
msgid "ERROR: The --master option is only valid with the --mount-point option"
msgstr ""
"ã‚¨ãƒ©ãƒ¼: --master ã‚ªãƒ—ã‚·ãƒ§ãƒ³ã¯ --mount-point ã‚ªãƒ—ã‚·ãƒ§ãƒ³ã¨ä½µç”¨ã—ãŸå ´åˆã«ã®ã¿æœ‰"
"åŠ¹ã§ã™"

#: ../satellite_tools/satsync.py:2351
#, python-format
msgid "ERROR: Unable to lookup Org Id %s"
msgstr "ã‚¨ãƒ©ãƒ¼: çµ„ç¹” ID %s ã‚’å‚ç…§ã§ãã¾ã›ã‚“"

#: ../satellite_tools/satsync.py:2360
msgid ""
"WARNING: --list-channels option overrides any --step option. --step ignored."
msgstr ""
"è­¦å‘Š: --list-channels ã‚ªãƒ—ã‚·ãƒ§ãƒ³ã¯ --step ã‚ªãƒ—ã‚·ãƒ§ãƒ³ã‚’ä¸Šæ›¸ãã—ã¦ã—ã¾ã„ã¾ã™ã€‚ "
"--step å´ãŒç„¡è¦–ã•ã‚Œã¾ã™ã€‚"

#: ../satellite_tools/satsync.py:2375
#, python-format
msgid ""
"ERROR: '%s' is not a valid step. See 'man mgr-inter-sync' for more detail."
msgstr ""
"ã‚¨ãƒ©ãƒ¼: '%s' ã®ã‚¹ãƒ†ãƒƒãƒ—ãŒæ­£ã—ãã‚ã‚Šã¾ã›ã‚“ã€‚è©³ã—ãã¯ 'man mgr-inter-sync' ã‚’ãŠ"
"èª­ã¿ãã ã•ã„ã€‚"

#: ../satellite_tools/satsync.py:2407
msgid ""
"ERROR: No channels currently imported; try mgr-inter-sync --list-channels; "
"then mgr-inter-sync -c chn0 -c chn1..."
msgstr ""
"ã‚¨ãƒ©ãƒ¼: ç¾æ™‚ç‚¹ã§ã¯ä½•ã‚‚ãƒãƒ£ãƒ³ãƒãƒ«ã‚’å–ã‚Šè¾¼ã‚“ã§ã„ã¾ã›ã‚“ã€‚ mgr-inter-sync --list-"
"channels ã‚’å®Ÿè¡Œã—ãŸã‚ã¨ mgr-inter-sync -c chn0 -c chn1... ã®ã‚ˆã†ã«å®Ÿè¡Œã—ã¦ã"
"ã ã•ã„ã€‚"

#. int(None) --> TypeError
#. int('a')  --> ValueError
#: ../satellite_tools/satsync.py:2457 ../satellite_tools/satsync.py:2461
msgid "ERROR: --batch-size must have a value within the range: 1..50"
msgstr "ã‚¨ãƒ©ãƒ¼: --batch-size ã®å€¤ã¯ 1..50 ã¾ã§ã®å€¤ã§ãªã‘ã‚Œã°ãªã‚Šã¾ã›ã‚“"

#: ../satellite_tools/satsync.py:2469
#, python-format
msgid "ERROR: no such directory %s"
msgstr "ã‚¨ãƒ©ãƒ¼: ãã®ã‚ˆã†ãªãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã¯ã‚ã‚Šã¾ã›ã‚“ %s"

#: ../satellite_tools/satsync.py:2474
msgid "Error Codes: Returned codes means:"
msgstr "ã‚¨ãƒ©ãƒ¼ã‚³ãƒ¼ãƒ‰: è¿”ã•ã‚ŒãŸå€¤ã®æ„å‘³ã¯ä¸‹è¨˜ã®ã¨ãŠã‚Šã§ã™:"

#: ../satellite_tools/satsync.py:2475
msgid " -1  - Could not lock file or KeyboardInterrupt or SystemExit"
msgstr ""
" -1  - ãƒ•ã‚¡ã‚¤ãƒ«ã‚’ãƒ­ãƒƒã‚¯ã§ããªã‹ã£ãŸã‹ã€ã‚­ãƒ¼ãƒœãƒ¼ãƒ‰å‰²ã‚Šè¾¼ã¿ã‚„ã‚·ã‚¹ãƒ†ãƒ ã®çµ‚äº†ãŒç™º"
"ç”Ÿã—ã¦ã„ã¾ã™"

#: ../satellite_tools/satsync.py:2476
msgid "  0  - User interrupted or intentional exit"
msgstr "  0  - ãƒ¦ãƒ¼ã‚¶å´ã§ã®å‰²ã‚Šè¾¼ã¿ã‹çµ‚äº†æŒ‡ç¤ºãŒè¡Œãªã‚ã‚Œã¾ã—ãŸ"

#: ../satellite_tools/satsync.py:2477
msgid "  1  - attempting to run more than one instance of mgr-inter-sync."
msgstr "  1  - mgr-inter-sync ã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã‚’è¤‡æ•°å€‹å®Ÿè¡Œã—ã‚ˆã†ã¨ã—ã¦ã„ã¾ã™ã€‚"

#: ../satellite_tools/satsync.py:2478
msgid "  2  - Unable to find synchronization tools."
msgstr "  2  - åŒæœŸãƒ„ãƒ¼ãƒ«ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“ã§ã—ãŸã€‚"

#: ../satellite_tools/satsync.py:2479
msgid "  3  - a general socket exception occurred"
msgstr "  3  - ä¸€èˆ¬çš„ãªã‚½ã‚±ãƒƒãƒˆä¾‹å¤–ãŒç™ºç”Ÿã—ã¾ã—ãŸ"

#: ../satellite_tools/satsync.py:2480
msgid "  4  - an SSL error occurred. Recheck your SSL settings."
msgstr "  4  - SSL ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ã¾ã—ãŸã€‚ SSL ã®è¨­å®šã‚’å†ç¢ºèªã—ã¦ãã ã•ã„ã€‚"

#: ../satellite_tools/satsync.py:2481
msgid "  5  - ISS error"
msgstr "  5  - ISS ã‚¨ãƒ©ãƒ¼"

#: ../satellite_tools/satsync.py:2482
msgid "  6  - unhandled exception occurred"
msgstr "  6  - ãƒãƒ³ãƒ‰ãƒ«ã•ã‚Œã¦ã„ãªã„ä¾‹å¤–ãŒç™ºç”Ÿã—ã¾ã—ãŸ"

#: ../satellite_tools/satsync.py:2483
msgid "  7  - unknown sync error"
msgstr "  7  - æœªçŸ¥ã®åŒæœŸã‚¨ãƒ©ãƒ¼ã§ã™"

#: ../satellite_tools/satsync.py:2484
msgid "  8  - ERROR: must be root to execute"
msgstr "  8  - ã‚¨ãƒ©ãƒ¼: å®Ÿè¡Œã™ã‚‹ã«ã¯ root ã§ãªã‘ã‚Œã°ãªã‚Šã¾ã›ã‚“"

#: ../satellite_tools/satsync.py:2485
msgid "  9  - rpclib fault during synchronization init"
msgstr "  9  - åŒæœŸã®æº–å‚™æ™‚ã« rpclib ã®ä¾‹å¤–ãŒç™ºç”Ÿã—ã¾ã—ãŸ"

#: ../satellite_tools/satsync.py:2486
msgid "  10 - synchronization init error"
msgstr "  10 - åŒæœŸã®æº–å‚™æ™‚ã«ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ã¾ã—ãŸ"

#: ../satellite_tools/satsync.py:2487
msgid "  11 - Error parsing XML stream"
msgstr "  11 - XML ã‚¹ãƒˆãƒªãƒ¼ãƒ ã®å‡¦ç†æ™‚ã«ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ã¾ã—ãŸ"

#: ../satellite_tools/satsync.py:2488
msgid "  12 - Channel do not exist"
msgstr "  12 - ãƒãƒ£ãƒ³ãƒãƒ«ãŒå­˜åœ¨ã—ã¦ã„ã¾ã›ã‚“"

#: ../satellite_tools/satsync.py:2489
msgid "  13 - SQL error during importing package metadata"
msgstr "  13 - ãƒ‘ãƒƒã‚±ãƒ¼ã‚¸ã®ãƒ¡ã‚¿ãƒ‡ãƒ¼ã‚¿ã‚’å‡¦ç†ã™ã‚‹éš›ã« SQL ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ã¾ã—ãŸ"

#: ../satellite_tools/satsync.py:2490
msgid "  14 - SQL error during linking channel packages"
msgstr "  14 - ãƒãƒ£ãƒ³ãƒãƒ«ãƒ‘ãƒƒã‚±ãƒ¼ã‚¸ã®ãƒªãƒ³ã‚¯æ™‚ã« SQL ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ã¾ã—ãŸ"

#: ../satellite_tools/satsync.py:2491
msgid "  15 - SQL error during xml processing"
msgstr "  15 - XML å‡¦ç†æ™‚ã« SQL ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ã¾ã—ãŸ"

#: ../satellite_tools/satsync.py:2492
msgid "  16 - server.mount_point not set in the configuration file"
msgstr "  16 - è¨­å®šãƒ•ã‚¡ã‚¤ãƒ«å†…ã§ server.mount_point ãŒè¨­å®šã•ã‚Œã¦ã„ã¾ã›ã‚“"

#: ../satellite_tools/satsync.py:2493
msgid ""
"  17 - SQL error during retrieving the channels already imported in the SUSE "
"Manager database"
msgstr ""
"  17 - SUSE Manager ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹å†…ã«æ—¢ã«å–ã‚Šè¾¼ã¾ã‚Œã¦ã„ã‚‹ãƒãƒ£ãƒ³ãƒãƒ«ã‚’å–å¾—ã™ã‚‹"
"éš›ã«ã€ SQL ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ã¾ã—ãŸ"

#: ../satellite_tools/satsync.py:2494
msgid "  18 - Wrong db connection string in rhn.conf"
msgstr "  18 - rhn.conf å†…ã® DB æŽ¥ç¶šæ–‡å­—åˆ—ãŒæ­£ã—ãã‚ã‚Šã¾ã›ã‚“"

#: ../satellite_tools/satsync.py:2495
msgid "  19 - Bad arguments"
msgstr "  19 - ãƒ‘ãƒ©ãƒ¡ãƒ¼ã‚¿ãŒæ­£ã—ãã‚ã‚Šã¾ã›ã‚“"

#: ../satellite_tools/satsync.py:2496
msgid "  20 - Could not connect to db."
msgstr "  20 - DB ã«æŽ¥ç¶šã§ãã¾ã›ã‚“ã§ã—ãŸã€‚"

#: ../satellite_tools/satsync.py:2497
msgid "  21 - Bad debug level"
msgstr "  21 - ãƒ‡ãƒãƒƒã‚°ãƒ¬ãƒ™ãƒ«ãŒæ­£ã—ãã‚ã‚Šã¾ã›ã‚“"

#: ../satellite_tools/satsync.py:2498
msgid "  22 - Not valid step"
msgstr "  22 - ã‚¹ãƒ†ãƒƒãƒ—ãŒæ­£ã—ãã‚ã‚Šã¾ã›ã‚“"

#: ../satellite_tools/satsync.py:2499
msgid "  24 - no such file"
msgstr "  24 - ãã®ã‚ˆã†ãªãƒ•ã‚¡ã‚¤ãƒ«ã¯ã‚ã‚Šã¾ã›ã‚“"

#: ../satellite_tools/satsync.py:2500
msgid "  25 - no such directory"
msgstr "  25 - ãã®ã‚ˆã†ãªãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã¯ã‚ã‚Šã¾ã›ã‚“"

#: ../satellite_tools/satsync.py:2501
msgid "  26 - mount_point does not exist"
msgstr "  26 - mount_point ãŒå­˜åœ¨ã—ã¾ã›ã‚“"

#: ../satellite_tools/satsync.py:2502
msgid "  27 - No such org"
msgstr "  27 - ãã®ã‚ˆã†ãªçµ„ç¹”ã¯ã‚ã‚Šã¾ã›ã‚“"

#: ../satellite_tools/satsync.py:2503
msgid "  28 - error: --master is only valid with --mount-point"
msgstr ""
"  28 - ã‚¨ãƒ©ãƒ¼: --master ã¯ --mount-point ã¨ã¨ã‚‚ã«æŒ‡å®šã—ãŸå ´åˆã«ã®ã¿æœ‰åŠ¹ã§ã™"

#: ../satellite_tools/satsync.py:2510
#, python-format
msgid "ERROR: unknown dump version, try one of %s"
msgstr "ã‚¨ãƒ©ãƒ¼: æœªçŸ¥ã®ãƒ€ãƒ³ãƒ—ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã§ã™ã€‚ %s ã®ã„ãšã‚Œã‹ã‚’ãŠè©¦ã—ãã ã•ã„"

#~ msgid "Your system was not found in the RHN database"
#~ msgstr "ã‚·ã‚¹ãƒ†ãƒ ãŒ RHN ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹å†…ã«ã¯è¦‹ã¤ã‹ã‚Šã¾ã›ã‚“ã§ã—ãŸã€‚"

#~ msgid "ISS is disabled on this satellite."
#~ msgstr "ISS ãŒã“ã® Satellite ã§ã¯ç„¡åŠ¹ã«ãªã£ã¦ã„ã¾ã™ã€‚"

#, fuzzy
#~ msgid "Spacewalk Proxy service not enabled for server profile: \"%s\""
#~ msgstr ""
#~ "RHN Proxy ã‚µãƒ¼ãƒ“ã‚¹ãŒã‚µãƒ¼ãƒãƒ¼ãƒ—ãƒ­ãƒ•ã‚¡ã‚¤ãƒ«ã«å¯¾ã—ã¦æœ‰åŠ¹ã«ãªã£ã¦ã„ã¾ã›ã‚“: "
#~ "ã€Œ%sã€"

#~ msgid "Red Hat Satellite Welcome Message"
#~ msgstr "Red Hat Satellite ã®ã‚ˆã†ã“ããƒ¡ãƒƒã‚»ãƒ¼ã‚¸"

#, fuzzy
#~ msgid "Red Hat Satellite Privacy Statement"
#~ msgstr "Red Hat Network ãƒ—ãƒ©ã‚¤ãƒã‚·ãƒ¼ã‚¹ãƒ†ãƒ¼ãƒˆãƒ¡ãƒ³ãƒˆ"
07070100000078000081B40000000000000000000000016290A0C10000B6A1000000000000000000000000000000000000001B00000000spacewalk-backend/po/kn.po    # SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
#
# Translators:
# shankar prasad <svenkate@redhat.com>, 2006.
# shankar Prasad <svenkate@redhat.com>, 2006.
# Shankar Prasad <svenkate@redhat.com>, 2007.
msgid ""
msgstr ""
"Project-Id-Version: Spacewalk\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-10-16 13:34+0200\n"
"PO-Revision-Date: 2011-03-04 16:08+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Kannada (http://www.transifex.com/projects/p/fedora/language/"
"kn/)\n"
"Language: kn\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"

#: ../server/apacheAuth.py:66
#, python-format
msgid "incomplete proxy authentication token: %s"
msgstr ""

#: ../server/apacheAuth.py:84
#, python-format
msgid "Sent proxy signature %s does not match ours %s."
msgstr ""

#: ../server/apacheAuth.py:119
msgid "declined proxy authentication"
msgstr ""

#: ../server/apacheRequest.py:59
#, python-format
msgid "Invalid request received (%s)."
msgstr ""

#: ../server/apacheRequest.py:120
#, python-format
msgid ""
"IMPORTANT MESSAGE FOLLOWS:\n"
"%s"
msgstr ""

#: ../server/apacheRequest.py:149
#, python-format
msgid ""
"While running '%s': caught\n"
"%s : %s\n"
msgstr ""

#: ../server/apacheRequest.py:606
#, python-format
msgid "Invalid URI %s"
msgstr ""

#: ../server/configFilesHandler.py:129 ../server/handlers/app/packages.py:192
#: ../server/handlers/xmlrpc/registration.py:215
#: ../server/handlers/xmlrpc/registration.py:1168
#: ../server/handlers/xmlrpc/registration.py:1307
#, python-format
msgid ""
"\n"
"                   %s Account has been deactivated on this server.\n"
"                   Please contact your Org administrator for more help."
msgstr ""

#: ../server/handlers/applet/applet.py:78
#, python-brace-format
msgid "Your system was not found in the {PRODUCT_NAME} database"
msgstr ""

#: ../server/handlers/sat/auth.py:45
msgid "ISS is disabled on this server."
msgstr ""

#: ../server/handlers/sat/auth.py:50
#, python-format
msgid "Server \"%s\" is not enabled for ISS."
msgstr ""

#: ../server/handlers/xmlrpc/errata.py:64
#, python-format
msgid "Expected a package name, not: %s"
msgstr ""

#: ../server/handlers/xmlrpc/errata.py:115
#, python-format
msgid "Expected a package, not: %s"
msgstr ""

#: ../server/handlers/xmlrpc/proxy.py:65
#, python-format
msgid "SUSE Manager Proxy service not enabled for server profile: \"%s\""
msgstr ""

#: ../server/handlers/xmlrpc/proxy.py:85
msgid "Invalid session key"
msgstr ""

#: ../server/handlers/xmlrpc/proxy.py:93
msgid "This server ID no longer exists"
msgstr ""

#: ../server/handlers/xmlrpc/queue.py:433
#, python-format
msgid "Invalid action value type %s (%s)"
msgstr ""

#: ../server/handlers/xmlrpc/queue.py:464
#, python-format
msgid "Action %s does not belong to server %s"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:194
msgid "Required data missing"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:198
msgid "Required members missing"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:207
msgid "Attempt to register a system to an invalid username"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:839
msgid "Invalid system release version requested"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1063
msgid ""
"Unable to find a valid network interface, both ipaddr and ip6addr not found."
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1115
#, python-brace-format
msgid "{PRODUCT_NAME} Welcome Message"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1125
msgid "Privacy Statement"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1146
msgid "Expected a dictionary as a product argument"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1374
#, python-format
msgid "Invalid value '%s' for %s (%s)"
msgstr ""

#: ../server/handlers/xmlrpc/scap.py:104
msgid "Invalid system_id/action_id pair."
msgstr ""

#: ../server/handlers/xmlrpc/up2date.py:233
#, python-format
msgid "Invalid value %s (%s)"
msgstr ""

#: ../server/importlib/userAuth.py:98
msgid "You are not authorized to manage packages in the null org"
msgstr ""

#: ../server/importlib/userAuth.py:103
#, python-format
msgid "You are not allowed to manage packages in the %s org"
msgstr ""

#: ../server/importlib/userAuth.py:121
msgid "You are not allowed to perform administrative tasks"
msgstr ""

#: ../server/importlib/userAuth.py:144
#, python-format
msgid ""
"You are not allowed to manage channel %s, or that channel does not exist"
msgstr ""

#: ../server/importlib/userAuth.py:204
#, python-format
msgid ""
"\n"
"               %s Account has been deactivated on this server.\n"
"               Please contact your Org administrator for more help."
msgstr ""

#: ../server/rhnChannel.py:1992
#, python-format
msgid ""
"Your account does not have access to any channels matching "
"(release='%(release)s', arch='%(arch)s')%(www_activation)s"
msgstr ""

#: ../server/rhnChannel.py:2002
msgid ""
"\n"
"If you have a registration number, please register with it first at http://"
"www.redhat.com/apps/activate/ and then try again.\n"
"\n"
msgstr ""

#: ../server/rhnChannel.py:2012
#, python-format
msgid "Insufficient subscription permissions for release (%s, %s"
msgstr ""

#. Various messages that can be reused
#.
#. bretm 02/07/2007 -- when we have better old-client documentation, probably
#. will be safe to get rid of all this crap
#: ../server/rhnChannel.py:2276 ../server/rhnChannel.py:2287
#: ../server/rhnChannel.py:2302
msgid "System Registered but Inactive"
msgstr ""

#: ../server/rhnChannel.py:2277
#, python-format
msgid ""
"\n"
"Invalid Architecture and OS release combination (%s, %s).\n"
"Your system has been registered, but will not receive updates\n"
"because it is not subscribed to a channel. If you have not yet\n"
"activated your product for service, please visit our website at:\n"
"\n"
"     http://www.redhat.com/apps/activate/\n"
"\n"
"...to activate your product."
msgstr ""

#: ../server/rhnChannel.py:2288
#, python-format
msgid ""
"\n"
"Invalid Architecture and OS release combination (%s, %s).\n"
"Your system has been registered, but will not receive updates\n"
"because it could not be subscribed to a base channel.\n"
"Please contact your organization administrator for assistance.\n"
msgstr ""

#: ../server/rhnChannel.py:2295
#, python-format
msgid ""
"\n"
"  This system has been successfully registered, but is not yet entitled\n"
"  to service.  To entitle this system to service, login to the web site at:\n"
"\n"
"  %(entitlement_url)s\n"
msgstr ""

#: ../server/rhnChannel.py:2303
#, python-format
msgid ""
"\n"
"  This system has been successfully registered, but no service entitlements\n"
"  were available.  To entitle this system to service, login to the web site "
"at:\n"
"\n"
"  %(entitlement_url)s\n"
msgstr ""

#: ../server/rhnHandler.py:62
msgid "Please run rhn_register as root on this client"
msgstr ""

#: ../server/rhnHandler.py:75
#, python-format
msgid "Service not enabled for system profile: \"%s\""
msgstr ""

#: ../server/rhnPackage.py:49 ../server/rhnPackage.py:87
#: ../server/rhnPackage.py:107 ../server/rhnPackage.py:158
#, python-format
msgid "Invalid RPM package %s requested"
msgstr ""

#: ../server/rhnPackage.py:112
msgid "Package not found"
msgstr ""

#: ../server/rhnServer/server_class.py:97
#, python-format
msgid "Architecture `%s' is not supported"
msgstr ""

#: ../server/rhnServer/server_token.py:78
#, python-format
msgid "Token `%s' has more than one base channel assigned"
msgstr ""

#: ../server/rhnServer/server_token.py:80
msgid "Conflicting base channels"
msgstr ""

#: ../server/rhnServer/server_token.py:190
#, python-format
msgid "Failed to add server to group %s"
msgstr ""

#: ../server/rhnServer/server_token.py:503
#, python-format
msgid "Maximum usage count of %s reached"
msgstr ""

#: ../server/rhnServer/server_token.py:744
msgid ""
"Stacking of re-registration tokens with different base entitlements is not "
"supported"
msgstr ""

#: ../server/rhnServer/server_token.py:811
#, python-format
msgid "Could not find token '%s'"
msgstr ""

#. Cannot use activation keys from different orgs
#: ../server/rhnServer/server_token.py:843
msgid "Tokens from mismatching orgs"
msgstr ""

#. Two tokens with different kickstart sessions
#: ../server/rhnServer/server_token.py:853
msgid "Kickstart session mismatch"
msgstr ""

#: ../server/rhnServer/server_token.py:877
msgid "Stacking of re-registration tokens is not supported"
msgstr ""

#: ../server/rhnUser.py:289 ../server/rhnUser.py:292
msgid "Invalid username/password combination"
msgstr ""

#. nope, not reserved either
#: ../server/rhnUser.py:467
#, python-format
msgid "Username `%s' has not been reserved"
msgstr ""

#. New accounts have to specify an e-mail address
#: ../server/rhnUser.py:473
msgid "E-mail address not specified"
msgstr ""

#: ../server/rhnUser.py:509
#, python-format
msgid "username should be at least %d characters"
msgstr ""

#: ../server/rhnUser.py:512
#, python-format
msgid "username should be less than %d characters"
msgstr ""

#: ../server/rhnUser.py:523
#, python-format
msgid "username = `%s', invalid character `%s'"
msgstr ""

#: ../server/rhnUser.py:542
#, python-format
msgid "Please limit your e-mail address to %s chars"
msgstr ""

#: ../server/rhnUser.py:623
#, python-format
msgid "password must be at least %d characters"
msgstr ""

#: ../server/rhnUser.py:626
#, python-format
msgid "Password must be shorter than %d characters"
msgstr ""

#: ../server/rhnUser.py:644
#, python-format
msgid "password contains character `%s'"
msgstr ""

#: ../server/rhnUser.py:651
#, python-format
msgid "username should be at least %d characters long"
msgstr ""

#: ../server/rhnUser.py:662
#, python-format
msgid "Cannot register usernames ending with %s"
msgstr ""

#. 0-999: Red Hat client/client-like interaction errors:
#: ../common/rhnException.py:53
msgid "This does not appear to be a valid username."
msgstr ""

#: ../common/rhnException.py:54
msgid "Invalid username and password combination."
msgstr ""

#: ../common/rhnException.py:55
msgid "This login is already taken, or the password is incorrect."
msgstr ""

#: ../common/rhnException.py:56
msgid "Permission denied."
msgstr ""

#: ../common/rhnException.py:57
msgid "Object not found."
msgstr ""

#: ../common/rhnException.py:58
msgid "Invalid System Digital ID."
msgstr ""

#: ../common/rhnException.py:59
msgid "Invalid System Credentials."
msgstr ""

#: ../common/rhnException.py:60
msgid "Could not retrieve user data from database."
msgstr ""

#: ../common/rhnException.py:61
msgid "Valid username required."
msgstr ""

#: ../common/rhnException.py:62
msgid "Valid password required."
msgstr ""

#: ../common/rhnException.py:63
msgid "Minimum username length violation."
msgstr ""

#: ../common/rhnException.py:64
msgid "Minimum password length violation."
msgstr ""

#: ../common/rhnException.py:65
msgid "The username contains invalid characters."
msgstr ""

#: ../common/rhnException.py:66
msgid "File not found."
msgstr ""

#: ../common/rhnException.py:67
msgid "Architecture and OS version combination is not supported."
msgstr ""

#: ../common/rhnException.py:68
msgid "Could not retrieve system data from database."
msgstr ""

#: ../common/rhnException.py:69
msgid "Invalid arguments passed to function."
msgstr ""

#: ../common/rhnException.py:70
msgid "Unable to retrieve requested entry."
msgstr ""

#: ../common/rhnException.py:71
msgid "Could not update database entry."
msgstr ""

#: ../common/rhnException.py:72
msgid "Unsupported server architecture."
msgstr ""

#: ../common/rhnException.py:73
#, python-format
msgid ""
"\n"
"     The anonymous server functionality is no longer available.\n"
"\n"
"     Please re-register this system by running mgr_register as root.\n"
"     Please visit https://%(hostname)s/rhn/systems/SystemEntitlements.do\n"
"     or login at https://%(hostname)s, and from the \"Overview\" tab,\n"
"     select \"Subscription Management\" to enable the service for this "
"system.\n"
"     "
msgstr ""

#: ../common/rhnException.py:81
msgid "Record not available in the database."
msgstr ""

#: ../common/rhnException.py:82
msgid "Invalid value for entry."
msgstr ""

#: ../common/rhnException.py:83
#, python-format
msgid ""
"\n"
"     This system does not have a valid entitlement for SUSE Manager.\n"
"     Please visit https://%(hostname)s/rhn/systems/SystemEntitlements.do\n"
"     or login at https://%(hostname)s, and from the \"Overview\" tab,\n"
"     select \"Subscription Management\" to enable the service for this "
"system.\n"
"     "
msgstr ""

#: ../common/rhnException.py:89
msgid "Channel error"
msgstr ""

#: ../common/rhnException.py:90
msgid "Client session token is invalid."
msgstr ""

#: ../common/rhnException.py:91
msgid "Client session token has expired."
msgstr ""

#: ../common/rhnException.py:92
msgid "You are not authorized to retrieve the requested object."
msgstr ""

#: ../common/rhnException.py:93
msgid "Invalid action"
msgstr ""

#: ../common/rhnException.py:94
msgid "You are not allowed to perform administrative tasks on this system."
msgstr ""

#: ../common/rhnException.py:96
msgid "The system is already subscribed to the specified channel."
msgstr ""

#: ../common/rhnException.py:97
msgid "The system is not currently subscribed to the specified channel."
msgstr ""

#: ../common/rhnException.py:98
msgid "The specified channel does not exist."
msgstr ""

#: ../common/rhnException.py:99
msgid "Invalid channel version."
msgstr ""

#: ../common/rhnException.py:100
msgid ""
"\n"
"     User group membership limits exceeded.\n"
"\n"
"     The current settings for your account do not allow you to add another\n"
"     user account. Please check with the organization administrator for "
"your\n"
"     account if the maximum number of users allowed to subscribe to server "
"needs\n"
"     to be changed.\n"
"     "
msgstr ""

#: ../common/rhnException.py:108
msgid ""
"\n"
"     System group membership limits exceeded.\n"
"\n"
"     The current settings for your account do not allow you to add another\n"
"     system profile. Please check with the organization administrator for "
"your\n"
"     account for modifying the maximum number of system profiles that can "
"be\n"
"     subscribed to your account.\n"
"     "
msgstr ""

#: ../common/rhnException.py:116
msgid ""
"\n"
"     Invalid architecture.\n"
"\n"
"     The architecture of the package is not supported by\n"
"     "
msgstr ""

#: ../common/rhnException.py:121
msgid "Invalid RPM header"
msgstr ""

#: ../common/rhnException.py:122
msgid ""
"\n"
"    This system is already registered as a Salt Minion. If you want to "
"register it as a traditional client\n"
"    please delete it first via the web UI or API and then register it using "
"the traditional tools.\n"
"    "
msgstr ""

#. For the uploading tools
#: ../common/rhnException.py:127
msgid "Invalid information uploaded to the server"
msgstr ""

#: ../common/rhnException.py:128
msgid "Error uploading network interfaces configuration."
msgstr ""

#: ../common/rhnException.py:129
msgid ""
"\n"
"     Package Upload Failed due to uniqueness constraint violation.\n"
"     Make sure the package does not have any duplicate dependencies or\n"
"     does not already exists on the server\n"
"     "
msgstr ""

#: ../common/rhnException.py:134
msgid ""
"\n"
"     The --force rhnpush option is disabled on this server.\n"
"     Please contact your SUSE Manager administrator for more help.\n"
"     "
msgstr ""

#. 60-70: token errors
#: ../common/rhnException.py:140
msgid ""
"\n"
"     The activation token specified could not be found on the server.\n"
"     Please retry with a valid key.\n"
"     "
msgstr ""

#: ../common/rhnException.py:144
msgid "Too many systems registered using this registration token"
msgstr ""

#: ../common/rhnException.py:145
msgid "Token contains invalid, obsoleted or insufficient settings"
msgstr ""

#: ../common/rhnException.py:146
msgid "Conflicting activation tokens"
msgstr ""

#. 70-80: channel subscription errors
#: ../common/rhnException.py:149
msgid ""
"\n"
"     No matching base channel found for your system.\n"
"     "
msgstr ""

#: ../common/rhnException.py:152
msgid ""
"\n"
"     You do not have subscription permission to the designated channel.\n"
"     Please refer to your organization's channel or organization\n"
"     administrators for further details.\n"
"     "
msgstr ""

#: ../common/rhnException.py:157
msgid "You can not unsubscribe from base channel."
msgstr ""

#: ../common/rhnException.py:158
msgid "SUSE Manager or Proxy channel can not be subscribed."
msgstr ""

#. 80-90: server group errors
#: ../common/rhnException.py:161
msgid "There was an error while trying to join the system to its groups"
msgstr ""

#. 90-100: entitlement errors
#: ../common/rhnException.py:164
msgid "Unable to entitle system"
msgstr ""

#. 100-109: e-mail and uuid related faults
#: ../common/rhnException.py:167
msgid "Maximum e-mail length violation."
msgstr ""

#: ../common/rhnException.py:168
msgid "This system has been previously registered."
msgstr ""

#: ../common/rhnException.py:169
msgid "Invalid username"
msgstr ""

#. 140-159 applet errors
#: ../common/rhnException.py:172
msgid "Unable to look up server"
msgstr ""

#. 160-179: OSAD errors
#: ../common/rhnException.py:175
msgid "Required argument is missing"
msgstr ""

#. 600-699: RHEL5+ EN errors
#: ../common/rhnException.py:178
msgid "No entitlement information tied to hardware"
msgstr ""

#: ../common/rhnException.py:179
msgid "Installation number is not entitling"
msgstr ""

#. 700-799: Additional user input verification errors.
#: ../common/rhnException.py:182
msgid "Maximum username length violation"
msgstr ""

#: ../common/rhnException.py:183
msgid "Maximum password length violation"
msgstr ""

#: ../common/rhnException.py:184
msgid "This user has read only API access. Action denied."
msgstr ""

#: ../common/rhnException.py:186
msgid "System Name cannot be less than 1 character"
msgstr ""

#. 1000-1999: Proxy specific errors:
#. issued by a Proxy to the client
#: ../common/rhnException.py:190
msgid "SUSE Manager Proxy error."
msgstr ""

#: ../common/rhnException.py:191
msgid "SUSE Manager Proxy unable to login."
msgstr ""

#. issued by a SUSE Manager Server/Satellite to the proxy
#: ../common/rhnException.py:193
msgid ""
"\n"
"     SUSE Manager Proxy system ID does not match a Spacewalk Proxy Server\n"
"     in the database.\n"
"     "
msgstr ""

#: ../common/rhnException.py:197
msgid "SUSE Manager Proxy session token is invalid."
msgstr ""

#: ../common/rhnException.py:198
msgid "SUSE Manager Proxy session token has expired."
msgstr ""

#. 2000-2999: Red Hat Satellite specific errors:
#: ../common/rhnException.py:202
msgid ""
"\n"
"      user creation is not allowed via mgr_register;\n"
"     please contact your sysadmin to have your account created.\n"
"     "
msgstr ""

#: ../common/rhnException.py:206
msgid ""
"\n"
"     This SUSE Manager server is not allowed to use Inter Server Sync on "
"this server\n"
"     "
msgstr ""

#: ../common/rhnException.py:209
msgid ""
"\n"
"     Inter Server Sync is disabled on this SUSE Manager Server.\n"
"     "
msgstr ""

#. 3000-3999: XML dumper errors:
#: ../common/rhnException.py:214
msgid "Invalid datatype passed"
msgstr ""

#: ../common/rhnException.py:215
msgid "Unable to retrieve channel"
msgstr ""

#: ../common/rhnException.py:216
msgid "Unable to retrieve package"
msgstr ""

#: ../common/rhnException.py:217
msgid "Unable to retrieve erratum"
msgstr ""

#: ../common/rhnException.py:218
msgid "File is missing"
msgstr ""

#: ../common/rhnException.py:219
msgid "Function retrieval error"
msgstr ""

#: ../common/rhnException.py:220
msgid "Function execution error"
msgstr ""

#: ../common/rhnException.py:221
msgid "Missing version string"
msgstr ""

#: ../common/rhnException.py:222
msgid "Invalid version string"
msgstr ""

#: ../common/rhnException.py:223
msgid "Mismatching versions"
msgstr ""

#: ../common/rhnException.py:224
msgid "Invalid channel version"
msgstr ""

#: ../common/rhnException.py:225
msgid "No comps file for channel"
msgstr ""

#: ../common/rhnException.py:226
msgid "Unable to retrieve comps file"
msgstr ""

#. 4000 - 4999: config management errors
#: ../common/rhnException.py:229
msgid "Configuration action missing"
msgstr ""

#: ../common/rhnException.py:230
msgid "File too large"
msgstr ""

#: ../common/rhnException.py:231
msgid "File contains binary data"
msgstr ""

#: ../common/rhnException.py:232
msgid "Configuration channel is not empty"
msgstr ""

#: ../common/rhnException.py:233
msgid "Permission error"
msgstr ""

#: ../common/rhnException.py:234
msgid "Content missing for configuration file"
msgstr ""

#: ../common/rhnException.py:235
msgid "Template delimiters not specified"
msgstr ""

#: ../common/rhnException.py:236
msgid "Configuration channel does not exist"
msgstr ""

#: ../common/rhnException.py:237
msgid "Configuration channel already exists"
msgstr ""

#: ../common/rhnException.py:238
msgid "File missing from configuration channel"
msgstr ""

#: ../common/rhnException.py:239
msgid "Different revision of this file is uploaded"
msgstr ""

#: ../common/rhnException.py:240
msgid "File already uploaded to configuration channel"
msgstr ""

#: ../common/rhnException.py:241
msgid "File size exceeds remaining quota space"
msgstr ""

#: ../common/rhnException.py:242
msgid "Full path of file must be specified"
msgstr ""

#: ../common/rhnException.py:243
msgid "Invalid revision number"
msgstr ""

#: ../common/rhnException.py:244
msgid "Cannot compare files of different file type"
msgstr ""

#. 5000 - 5999: client content uploading errors
#. 5000 - 5099: crash reporting errors
#: ../common/rhnException.py:248
msgid "Crash information is invalid or incomplete"
msgstr ""

#: ../common/rhnException.py:249
msgid "Crash file information is invalid or incomplete"
msgstr ""

#: ../common/rhnException.py:250
msgid "Error composing crash directory path"
msgstr ""

#: ../common/rhnException.py:251
msgid "Error composing crash file path"
msgstr ""

#: ../common/rhnException.py:252 ../common/rhnException.py:259
msgid "Invalid content encoding"
msgstr ""

#: ../common/rhnException.py:253
msgid "Invalid crash name"
msgstr ""

#: ../common/rhnException.py:254
msgid "Crash reporting is disabled for this organization"
msgstr ""

#. 5100 - 5199: scap results reporting error
#: ../common/rhnException.py:256
msgid "SCAP results file transfer is invalid or incomplete"
msgstr ""

#: ../common/rhnException.py:257
msgid "Error composing directory path for detailed SCAP results"
msgstr ""

#: ../common/rhnException.py:258
msgid "Error composing file path for detailed SCAP results"
msgstr ""

#: ../common/rhnException.py:306
msgid ""
"\n"
"     An error has occurred while processing your request. If this problem\n"
"     persists please enter a bug report at scc.suse.com.\n"
"     If you choose to submit the bug report, please be sure to include\n"
"     details of what you were trying to do when this error occurred and\n"
"     details on how to reproduce this problem.\n"
msgstr ""

#: ../common/rhnException.py:358
#, python-format
msgid ""
"Error Message:\n"
"    %s\n"
msgstr ""

#: ../common/rhnException.py:360
#, python-format
msgid "Error Class Code: %s\n"
msgstr ""

#: ../common/rhnException.py:363
#, python-format
msgid "Error Class Info: %s\n"
msgstr ""

#: ../common/rhnException.py:365
#, python-format
msgid "Explanation: %s"
msgstr ""

#: ../common/rhnTB.py:205
#, python-format
msgid "ERROR: %s %s: %s"
msgstr ""

#: ../common/rhnTB.py:207
#, python-format
msgid "TRACEBACK: %s"
msgstr ""

#: ../satellite_tools/disk_dumper/iss.py:1294
#: ../satellite_tools/disk_dumper/iss.py:1298
#, python-format
msgid "format of %s should be at least YYYYMMDD.\n"
msgstr ""

#: ../satellite_tools/messages.py:26
#, python-format
msgid ""
"\n"
"ERROR: executing step %s. Error is:\n"
"%s\n"
msgstr ""

#: ../satellite_tools/messages.py:31
#, python-format
msgid ""
"\n"
"ERROR: there was a problem accessing the channel data from your temporary\n"
"       repository. Did you migrate all of the data from the channel ISOs\n"
"       do this directory? If so, please recheck the channels ISOs, ensure\n"
"       that you have them all, and then iteratively remount and repopulate\n"
"       the temporary repository (%s).\n"
msgstr ""

#: ../satellite_tools/messages.py:39
#, python-format
msgid ""
"\n"
"ERROR: there was a problem synchronizing the information.\n"
"       Error message: %s\n"
msgstr ""

#: ../satellite_tools/messages.py:44
#, python-format
msgid ""
"\n"
"ERROR: There was a problem communicating with the ISS Master.\n"
"       Depending on the specific error details, please review your "
"configuration,\n"
"       basic network connectivity, and/or name resolution, and try again.\n"
"       Error message: %s\n"
msgstr ""

#: ../satellite_tools/messages.py:51
#, python-format
msgid ""
"\n"
"ERROR: There was a problem communicating with the ISS Master.\n"
"       If the master satellite is older than v5.3, it does not have ISS "
"capability.\n"
"       Otherwise, depending on the specific error details, please review "
"your\n"
"       configuration, basic network connectivity, and/or name resolution, "
"and try again.\n"
"       Error message: %s\n"
msgstr ""

#: ../satellite_tools/messages.py:59
#, python-format
msgid ""
"\n"
"ERROR: a child-channel cannot be synced without its parent being synced as\n"
"       well. A parent needs to be either (a) previously synced or (b) "
"synced\n"
"       in tandem with the desired child-channel. Missing parents for this\n"
"       transaction:\n"
"       %s\n"
msgstr ""

#: ../satellite_tools/messages.py:67
#, python-format
msgid ""
"\n"
"ERROR: you are not entitled to sync a channel in this set of channels.\n"
"Please contact your SUSE Manager contact\n"
"%s"
msgstr ""

#: ../satellite_tools/messages.py:72
#, python-format
msgid "  ERROR: not enough free space (%s KB) on device."
msgstr ""

#: ../satellite_tools/messages.py:74
#, python-format
msgid "    %3d/%s Fetch successful: %s (%s bytes)"
msgstr ""

#: ../satellite_tools/messages.py:75
#, python-format
msgid "    Extinct package:  %s"
msgstr ""

#: ../satellite_tools/messages.py:76
#, python-format
msgid "   Total size: %s"
msgstr ""

#: ../satellite_tools/messages.py:77
#, python-format
msgid "      Downloaded %s of %s. Estimated remaining time: %s"
msgstr ""

#: ../satellite_tools/messages.py:78
#, python-format
msgid "    Fetch unsuccessful: %s"
msgstr ""

#: ../satellite_tools/messages.py:79
#, python-format
msgid "   RPM fetch summary: %s"
msgstr ""

#: ../satellite_tools/messages.py:80
#, python-format
msgid "       success: %d"
msgstr ""

#: ../satellite_tools/messages.py:81
#, python-format
msgid "       failed:  %d"
msgstr ""

#: ../satellite_tools/messages.py:82
#, python-format
msgid "       extinct: %d"
msgstr ""

#: ../satellite_tools/messages.py:84
#, python-format
msgid "   Retrieving / parsing *relevant* package metadata: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:85
#, python-format
msgid "   Retrieving / parsing errata data: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:86
#, python-format
msgid "   Retrieving / parsing kickstart data: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:87
#, python-format
msgid "   Retrieving / parsing kickstart tree files: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:88
#, python-format
msgid "   Importing *relevant* package metadata: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:89
msgid "   * WARNING: this may be a slow process."
msgstr ""

#: ../satellite_tools/messages.py:90
msgid "Linking packages to channels"
msgstr ""

#: ../satellite_tools/messages.py:91
#, python-format
msgid "   Importing *relevant* errata: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:92
msgid "   No new kickstartable tree to import"
msgstr ""

#: ../satellite_tools/messages.py:93
#, python-format
msgid "Importing kickstartable trees (%d)"
msgstr ""

#: ../satellite_tools/messages.py:94
#, python-format
msgid "Imported kickstartable trees (%d)"
msgstr ""

#: ../satellite_tools/reposync.py:111 ../satellite_tools/satsync.py:439
msgid "+++ sending log as an email +++"
msgstr ""

#: ../satellite_tools/reposync.py:114
#, python-format
msgid "%s sync. report from %s"
msgstr ""

#: ../satellite_tools/reposync.py:124 ../satellite_tools/satsync.py:449
msgid "+++ email requested, but there is nothing to send +++"
msgstr ""

#: ../satellite_tools/rhn_satellite_activate.py:198
#, python-format
msgid ""
"\"%s\" (specified in commandline)\n"
"could not be opened and read:\n"
"%s"
msgstr ""

#: ../satellite_tools/rhn_satellite_activate.py:205
#, python-format
msgid ""
"\"%s\" could not be opened\n"
"and/or written to:\n"
"%s"
msgstr ""

#: ../satellite_tools/satsync.py:258
#, python-format
msgid "No handler for step %s"
msgstr ""

#. Try one more time - this time it should be faster since
#. everything should be cached
#: ../satellite_tools/satsync.py:270
msgid "Environment changed, trying again..."
msgstr ""

#: ../satellite_tools/satsync.py:277
msgid "ERROR: Encountered IntegrityError: \n"
msgstr ""

#: ../satellite_tools/satsync.py:285
msgid "Repeated failures"
msgstr ""

#: ../satellite_tools/satsync.py:290
#, python-format
msgid ""
"    Import complete:\n"
"        Begin time: %s\n"
"        End time:   %s\n"
"        Elapsed:    %s\n"
"          "
msgstr ""

#: ../satellite_tools/satsync.py:311
msgid "hours"
msgstr ""

#: ../satellite_tools/satsync.py:311
msgid "minutes"
msgstr ""

#: ../satellite_tools/satsync.py:311
msgid "seconds"
msgstr ""

#: ../satellite_tools/satsync.py:357
msgid ""
"ERROR: The dump is missing package data, use --no-rpms to skip this step or "
"fix the content to include package data."
msgstr ""

#. the orgs() method doesn't exist; that's fine we just
#. won't sync the orgs
#: ../satellite_tools/satsync.py:404
msgid "The SUSE Manager master does not support syncing orgs data."
msgstr ""

#: ../satellite_tools/satsync.py:404
msgid "Skipping..."
msgstr ""

#: ../satellite_tools/satsync.py:442
#, python-format
msgid "SUSE Manager Inter Server sync. report from %s"
msgstr ""

#: ../satellite_tools/satsync.py:521
msgid " - file-system synchronization"
msgstr ""

#: ../satellite_tools/satsync.py:533 ../satellite_tools/satsync.py:541
msgid " - live synchronization"
msgstr ""

#: ../satellite_tools/satsync.py:534
#, python-brace-format
msgid ""
"ERROR: Live content synchronizing with RHN Classic Hosted is no longer "
"supported.\n"
"Please use the cdn-sync command instead unless you are attempting to sync "
"from another {PRODUCT_NAME} via Inter-Server-Sync (ISS), or from local "
"content on disk via Channel Dump ISOs."
msgstr ""

#: ../satellite_tools/satsync.py:542
#, python-format
msgid "   url: %s"
msgstr ""

#: ../satellite_tools/satsync.py:543
#, python-format
msgid "   debug/output level: %s"
msgstr ""

#: ../satellite_tools/satsync.py:553
msgid "ERROR: this server must be registered with SUSE Manager."
msgstr ""

#: ../satellite_tools/satsync.py:575
#, python-format
msgid "Retrieving / parsing %s data"
msgstr ""

#: ../satellite_tools/satsync.py:585 ../satellite_tools/satsync.py:600
msgid "*** SYSTEM INTERRUPT CALLED ***"
msgstr ""

#: ../satellite_tools/satsync.py:593
msgid "ERROR: fatal parser exception occurred "
msgstr ""

#: ../satellite_tools/satsync.py:594
#, python-format
msgid "(line: %s, col: %s msg: %s)"
msgstr ""

#: ../satellite_tools/satsync.py:598
#, python-format
msgid "ERROR: parser exception occurred: %s"
msgstr ""

#: ../satellite_tools/satsync.py:603
msgid "ERROR: exception (during parse) occurred: "
msgstr ""

#: ../satellite_tools/satsync.py:604
#, python-format
msgid ""
"   Encountered some errors with %s data (see logs (%s) for more information)"
msgstr ""

#: ../satellite_tools/satsync.py:606
#, python-format
msgid "   Encountered some errors with %s data:"
msgstr ""

#: ../satellite_tools/satsync.py:607
#, python-format
msgid "   ------- %s PARSE/IMPORT ERROR -------"
msgstr ""

#: ../satellite_tools/satsync.py:609
msgid "   ---------------------------------------"
msgstr ""

#: ../satellite_tools/satsync.py:612
#, python-format
msgid "%s data complete"
msgstr ""

#: ../satellite_tools/satsync.py:665
msgid "Retrieving / parsing channel data"
msgstr ""

#: ../satellite_tools/satsync.py:718
msgid "Channel data complete"
msgstr ""

#: ../satellite_tools/satsync.py:736
#, python-format
msgid "%10s import from %s"
msgstr ""

#: ../satellite_tools/satsync.py:739
#, python-format
msgid "%10s import from %s - %s"
msgstr ""

#: ../satellite_tools/satsync.py:743
#, python-format
msgid "%10s"
msgstr ""

#: ../satellite_tools/satsync.py:750
msgid "p"
msgstr ""

#: ../satellite_tools/satsync.py:752
msgid "."
msgstr ""

#: ../satellite_tools/satsync.py:758
msgid "   p = previously imported/synced channel"
msgstr ""

#: ../satellite_tools/satsync.py:759
msgid "   . = channel not yet imported/synced"
msgstr ""

#: ../satellite_tools/satsync.py:765
msgid "   e = channel no longer supported (end-of-service)"
msgstr ""

#: ../satellite_tools/satsync.py:767
msgid "   ? = channel label invalid --- typo?"
msgstr ""

#: ../satellite_tools/satsync.py:771
#, python-format
msgid "   %s:"
msgstr ""

#: ../satellite_tools/satsync.py:772
#, python-format
msgid "      %s %-40s %4s %s"
msgstr ""

#: ../satellite_tools/satsync.py:773
msgid "base-channels"
msgstr ""

#: ../satellite_tools/satsync.py:786 ../satellite_tools/satsync.py:1603
msgid "NONE RELEVANT"
msgstr ""

#: ../satellite_tools/satsync.py:808
msgid "end-of-service"
msgstr ""

#: ../satellite_tools/satsync.py:809
msgid "e"
msgstr ""

#: ../satellite_tools/satsync.py:815
msgid "   typos:"
msgstr ""

#: ../satellite_tools/satsync.py:816
msgid "?"
msgstr ""

#: ../satellite_tools/satsync.py:831
#, python-format
msgid "XXX: imported channels: %s"
msgstr ""

#: ../satellite_tools/satsync.py:832
#, python-format
msgid "XXX:   cached channels: %s"
msgstr ""

#: ../satellite_tools/satsync.py:837
msgid "XXX: list channels called"
msgstr ""

#: ../satellite_tools/satsync.py:855
msgid "ERROR: these channels either do not exist or are not available:"
msgstr ""

#: ../satellite_tools/satsync.py:859
#, python-format
msgid "       (to see a list of channel labels: %s --list-channels)"
msgstr ""

#: ../satellite_tools/satsync.py:904
#, python-format
msgid "   Retrieving / parsing short package metadata: %s (%s)"
msgstr ""

#: ../satellite_tools/satsync.py:965
#, python-format
msgid "Diffing package metadata (what's missing locally?): %s"
msgstr ""

#: ../satellite_tools/satsync.py:971 ../satellite_tools/satsync.py:1254
msgid "Diffing:    "
msgstr ""

#: ../satellite_tools/satsync.py:988
msgid "ERROR: incremental dump skipped"
msgstr ""

#: ../satellite_tools/satsync.py:1079
msgid "Downloading rpm packages"
msgstr ""

#: ../satellite_tools/satsync.py:1084
#, python-format
msgid "   Fetching any missing RPMs: %s (%s)"
msgstr ""

#: ../satellite_tools/satsync.py:1085 ../satellite_tools/satsync.py:1153
msgid "NONE MISSING"
msgstr ""

#: ../satellite_tools/satsync.py:1094
msgid "Processing rpm packages complete"
msgstr ""

#: ../satellite_tools/satsync.py:1121
msgid "Downloading package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1146
msgid "Downloading srpm packages"
msgstr ""

#: ../satellite_tools/satsync.py:1152
#, python-format
msgid "   Fetching any missing SRPMs: %s (%s)"
msgstr ""

#: ../satellite_tools/satsync.py:1249
#, python-format
msgid "Diffing source package metadata (what's missing locally?): %s"
msgstr ""

#: ../satellite_tools/satsync.py:1260
msgid "Downloading source package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1338 ../satellite_tools/satsync.py:2027
#, python-format
msgid "Unable to save file %s: %s"
msgstr ""

#. for
#. Retried a number of times and it still failed; log the
#. file as being failed and move on
#: ../satellite_tools/satsync.py:1345
#, python-format
msgid "Failed to fetch file %s"
msgstr ""

#: ../satellite_tools/satsync.py:1350
msgid "Downloading kickstartable trees metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1365
msgid "Downloading kickstartable trees files"
msgstr ""

#: ../satellite_tools/satsync.py:1504
#, python-format
msgid "Grabbing all patches for channel %s"
msgstr ""

#: ../satellite_tools/satsync.py:1554
msgid "Downloading patch data"
msgstr ""

#: ../satellite_tools/satsync.py:1556
msgid "Forcing download of all patch data for requested channels."
msgstr ""

#: ../satellite_tools/satsync.py:1571
msgid "Downloading patch data complete"
msgstr ""

#: ../satellite_tools/satsync.py:1576 ../satellite_tools/satsync.py:1597
msgid "Downloading:"
msgstr ""

#: ../satellite_tools/satsync.py:1579
msgid " - complete"
msgstr ""

#: ../satellite_tools/satsync.py:1624
msgid "Importing source package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1627
msgid "Importing package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1635
msgid "Importing:  "
msgstr ""

#. not in the cache
#: ../satellite_tools/satsync.py:1703
msgid ""
"Package Not Found in Cache, Clear the Cache "
"to                                  Regenerate it."
msgstr ""

#: ../satellite_tools/satsync.py:1709
msgid "Importing channel patches"
msgstr ""

#: ../satellite_tools/satsync.py:1714
#, python-format
msgid "Importing %s patches for channel %s."
msgstr ""

#. Incomplete configuration
#: ../satellite_tools/satsync.py:2113
msgid "ERROR: server.mount_point not set in the configuration file"
msgstr ""

#: ../satellite_tools/satsync.py:2117
#, python-format
msgid "ERROR: server.mount_point %s do not exist"
msgstr ""

#: ../satellite_tools/satsync.py:2122
#, python-format
msgid "ERROR: path under server.mount_point (%s)  do not exist"
msgstr ""

#: ../satellite_tools/satsync.py:2199
#, python-format
msgid "Commandline: %s"
msgstr ""

#: ../satellite_tools/satsync.py:2202
#, python-format
msgid ""
"DEBUG ONLY: max. batch-size for XML/database-import processing (1..%s).\"man "
"satellite-sync\" for more information."
msgstr ""

#: ../satellite_tools/satsync.py:2205
msgid "alternative SSL CA Cert (fullpath to cert file)"
msgstr ""

#: ../satellite_tools/satsync.py:2207
msgid "process data for this channel only"
msgstr ""

#: ../satellite_tools/satsync.py:2209
msgid ""
"disk dump will be considered to be a full export; see \"man satellite-sync\" "
"for more information."
msgstr ""

#: ../satellite_tools/satsync.py:2212
msgid "existing custom channels will also be synced (unless -c is used)"
msgstr ""

#: ../satellite_tools/satsync.py:2214
#, python-format
msgid ""
"override debug level set in /etc/rhn/rhn.conf (which is currently set at %s)."
msgstr ""

#: ../satellite_tools/satsync.py:2216
#, python-format
msgid "requested version of XML dump (default: %s)"
msgstr ""

#: ../satellite_tools/satsync.py:2218
msgid "e-mail a report of what was synced/imported"
msgstr ""

#: ../satellite_tools/satsync.py:2220
msgid "forcibly process all (not a diff of) patch metadata"
msgstr ""

#: ../satellite_tools/satsync.py:2222
msgid "Do not use an http proxy under any circumstances."
msgstr ""

#: ../satellite_tools/satsync.py:2224
msgid "alternative http proxy (hostname:port)"
msgstr ""

#: ../satellite_tools/satsync.py:2226
msgid "alternative http proxy username"
msgstr ""

#: ../satellite_tools/satsync.py:2228
msgid "alternative http proxy password"
msgstr ""

#: ../satellite_tools/satsync.py:2230
msgid "parent SUSE Manager to import content from"
msgstr ""

#: ../satellite_tools/satsync.py:2232
msgid "list all available channels and exit"
msgstr ""

#: ../satellite_tools/satsync.py:2234
msgid "help on all error codes mgr-inter-sync returns"
msgstr ""

#: ../satellite_tools/satsync.py:2236
msgid "source mount point for import - disk update only"
msgstr ""

#: ../satellite_tools/satsync.py:2238
msgid "do not process patch data"
msgstr ""

#: ../satellite_tools/satsync.py:2240
msgid "do not process kickstart data (provisioning only)"
msgstr ""

#: ../satellite_tools/satsync.py:2242
msgid "do not process full package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:2244
msgid "do not download, or process any RPMs"
msgstr ""

#: ../satellite_tools/satsync.py:2246
msgid "turn off SSL (not recommended)"
msgstr ""

#: ../satellite_tools/satsync.py:2248
msgid "org to which the sync imports data. defaults to the admin account"
msgstr ""

#: ../satellite_tools/satsync.py:2250
msgid "print the configuration and exit"
msgstr ""

#: ../satellite_tools/satsync.py:2252
msgid "alternative server with which to connect (hostname)"
msgstr ""

#: ../satellite_tools/satsync.py:2254
msgid "synchronize to this step (man satellite-sync for more info)"
msgstr ""

#: ../satellite_tools/satsync.py:2256
msgid "write complete data to tempfile before streaming to remainder of app"
msgstr ""

#: ../satellite_tools/satsync.py:2258
msgid "DEBUG ONLY: alternative path to digital system id"
msgstr ""

#: ../satellite_tools/satsync.py:2260
msgid "alternative email address(es) for sync output (--email option)"
msgstr ""

#: ../satellite_tools/satsync.py:2262
msgid "do not remove rpms when importing from local dump"
msgstr ""

#: ../satellite_tools/satsync.py:2264
msgid ""
"the fully qualified domain name of the master Satellite. Valid with --mount-"
"point only. Required if you want to import org data and channel permissions."
msgstr ""

#: ../satellite_tools/satsync.py:2274
#, python-format
msgid "ERROR: these arguments make no sense in this context (try --help): %s"
msgstr ""

#. An SQL error is fatal... crash and burn
#: ../satellite_tools/satsync.py:2286
#, python-format
msgid "ERROR: Can't connect to the database: %s"
msgstr ""

#: ../satellite_tools/satsync.py:2287
msgid "ERROR: Check if your database is running."
msgstr ""

#: ../satellite_tools/satsync.py:2322
#, python-format
msgid "ERROR: --debug-level takes an in integer value within the range %s."
msgstr ""

#: ../satellite_tools/satsync.py:2324
msgid "  0  - little logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2325
msgid "  1  - minimal logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2326
msgid "  2  - normal level of logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2327
msgid "  3  - lots of logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2328
msgid "  4+ - excessive logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2341
msgid "ERROR: The --master option is only valid with the --mount-point option"
msgstr ""

#: ../satellite_tools/satsync.py:2351
#, python-format
msgid "ERROR: Unable to lookup Org Id %s"
msgstr ""

#: ../satellite_tools/satsync.py:2360
msgid ""
"WARNING: --list-channels option overrides any --step option. --step ignored."
msgstr ""

#: ../satellite_tools/satsync.py:2375
#, python-format
msgid ""
"ERROR: '%s' is not a valid step. See 'man mgr-inter-sync' for more detail."
msgstr ""

#: ../satellite_tools/satsync.py:2407
msgid ""
"ERROR: No channels currently imported; try mgr-inter-sync --list-channels; "
"then mgr-inter-sync -c chn0 -c chn1..."
msgstr ""

#. int(None) --> TypeError
#. int('a')  --> ValueError
#: ../satellite_tools/satsync.py:2457 ../satellite_tools/satsync.py:2461
msgid "ERROR: --batch-size must have a value within the range: 1..50"
msgstr ""

#: ../satellite_tools/satsync.py:2469
#, python-format
msgid "ERROR: no such directory %s"
msgstr ""

#: ../satellite_tools/satsync.py:2474
msgid "Error Codes: Returned codes means:"
msgstr ""

#: ../satellite_tools/satsync.py:2475
msgid " -1  - Could not lock file or KeyboardInterrupt or SystemExit"
msgstr ""

#: ../satellite_tools/satsync.py:2476
msgid "  0  - User interrupted or intentional exit"
msgstr ""

#: ../satellite_tools/satsync.py:2477
msgid "  1  - attempting to run more than one instance of mgr-inter-sync."
msgstr ""

#: ../satellite_tools/satsync.py:2478
msgid "  2  - Unable to find synchronization tools."
msgstr ""

#: ../satellite_tools/satsync.py:2479
msgid "  3  - a general socket exception occurred"
msgstr ""

#: ../satellite_tools/satsync.py:2480
msgid "  4  - an SSL error occurred. Recheck your SSL settings."
msgstr ""

#: ../satellite_tools/satsync.py:2481
msgid "  5  - ISS error"
msgstr ""

#: ../satellite_tools/satsync.py:2482
msgid "  6  - unhandled exception occurred"
msgstr ""

#: ../satellite_tools/satsync.py:2483
msgid "  7  - unknown sync error"
msgstr ""

#: ../satellite_tools/satsync.py:2484
msgid "  8  - ERROR: must be root to execute"
msgstr ""

#: ../satellite_tools/satsync.py:2485
msgid "  9  - rpclib fault during synchronization init"
msgstr ""

#: ../satellite_tools/satsync.py:2486
msgid "  10 - synchronization init error"
msgstr ""

#: ../satellite_tools/satsync.py:2487
msgid "  11 - Error parsing XML stream"
msgstr ""

#: ../satellite_tools/satsync.py:2488
msgid "  12 - Channel do not exist"
msgstr ""

#: ../satellite_tools/satsync.py:2489
msgid "  13 - SQL error during importing package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:2490
msgid "  14 - SQL error during linking channel packages"
msgstr ""

#: ../satellite_tools/satsync.py:2491
msgid "  15 - SQL error during xml processing"
msgstr ""

#: ../satellite_tools/satsync.py:2492
msgid "  16 - server.mount_point not set in the configuration file"
msgstr ""

#: ../satellite_tools/satsync.py:2493
msgid ""
"  17 - SQL error during retrieving the channels already imported in the SUSE "
"Manager database"
msgstr ""

#: ../satellite_tools/satsync.py:2494
msgid "  18 - Wrong db connection string in rhn.conf"
msgstr ""

#: ../satellite_tools/satsync.py:2495
msgid "  19 - Bad arguments"
msgstr ""

#: ../satellite_tools/satsync.py:2496
msgid "  20 - Could not connect to db."
msgstr ""

#: ../satellite_tools/satsync.py:2497
msgid "  21 - Bad debug level"
msgstr ""

#: ../satellite_tools/satsync.py:2498
msgid "  22 - Not valid step"
msgstr ""

#: ../satellite_tools/satsync.py:2499
msgid "  24 - no such file"
msgstr ""

#: ../satellite_tools/satsync.py:2500
msgid "  25 - no such directory"
msgstr ""

#: ../satellite_tools/satsync.py:2501
msgid "  26 - mount_point does not exist"
msgstr ""

#: ../satellite_tools/satsync.py:2502
msgid "  27 - No such org"
msgstr ""

#: ../satellite_tools/satsync.py:2503
msgid "  28 - error: --master is only valid with --mount-point"
msgstr ""

#: ../satellite_tools/satsync.py:2510
#, python-format
msgid "ERROR: unknown dump version, try one of %s"
msgstr ""
   07070100000079000081B40000000000000000000000016290A0C10000B6CA000000000000000000000000000000000000001B00000000spacewalk-backend/po/ko.po    # SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
#
# Translators:
# Eunju Kim <eukim@redhat.com>, 2006, 2007.
# Michelle Ji Yeen Kim <mkim@redhat.com>, 2005.
# Michelle J Kim <mkim@redhat.com>, 2003, 2004.
# Michelle Kim <mkim@redhat.com>, 2002.
msgid ""
msgstr ""
"Project-Id-Version: Spacewalk\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-10-16 13:34+0200\n"
"PO-Revision-Date: 2011-03-04 16:08+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Korean (http://www.transifex.com/projects/p/fedora/language/"
"ko/)\n"
"Language: ko\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"

#: ../server/apacheAuth.py:66
#, python-format
msgid "incomplete proxy authentication token: %s"
msgstr ""

#: ../server/apacheAuth.py:84
#, python-format
msgid "Sent proxy signature %s does not match ours %s."
msgstr ""

#: ../server/apacheAuth.py:119
msgid "declined proxy authentication"
msgstr ""

#: ../server/apacheRequest.py:59
#, python-format
msgid "Invalid request received (%s)."
msgstr ""

#: ../server/apacheRequest.py:120
#, python-format
msgid ""
"IMPORTANT MESSAGE FOLLOWS:\n"
"%s"
msgstr ""

#: ../server/apacheRequest.py:149
#, python-format
msgid ""
"While running '%s': caught\n"
"%s : %s\n"
msgstr ""

#: ../server/apacheRequest.py:606
#, python-format
msgid "Invalid URI %s"
msgstr ""

#: ../server/configFilesHandler.py:129 ../server/handlers/app/packages.py:192
#: ../server/handlers/xmlrpc/registration.py:215
#: ../server/handlers/xmlrpc/registration.py:1168
#: ../server/handlers/xmlrpc/registration.py:1307
#, python-format
msgid ""
"\n"
"                   %s Account has been deactivated on this server.\n"
"                   Please contact your Org administrator for more help."
msgstr ""

#: ../server/handlers/applet/applet.py:78
#, python-brace-format
msgid "Your system was not found in the {PRODUCT_NAME} database"
msgstr ""

#: ../server/handlers/sat/auth.py:45
msgid "ISS is disabled on this server."
msgstr ""

#: ../server/handlers/sat/auth.py:50
#, python-format
msgid "Server \"%s\" is not enabled for ISS."
msgstr ""

#: ../server/handlers/xmlrpc/errata.py:64
#, python-format
msgid "Expected a package name, not: %s"
msgstr ""

#: ../server/handlers/xmlrpc/errata.py:115
#, python-format
msgid "Expected a package, not: %s"
msgstr ""

#: ../server/handlers/xmlrpc/proxy.py:65
#, python-format
msgid "SUSE Manager Proxy service not enabled for server profile: \"%s\""
msgstr ""

#: ../server/handlers/xmlrpc/proxy.py:85
msgid "Invalid session key"
msgstr ""

#: ../server/handlers/xmlrpc/proxy.py:93
msgid "This server ID no longer exists"
msgstr ""

#: ../server/handlers/xmlrpc/queue.py:433
#, python-format
msgid "Invalid action value type %s (%s)"
msgstr ""

#: ../server/handlers/xmlrpc/queue.py:464
#, python-format
msgid "Action %s does not belong to server %s"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:194
msgid "Required data missing"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:198
msgid "Required members missing"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:207
msgid "Attempt to register a system to an invalid username"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:839
msgid "Invalid system release version requested"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1063
msgid ""
"Unable to find a valid network interface, both ipaddr and ip6addr not found."
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1115
#, python-brace-format
msgid "{PRODUCT_NAME} Welcome Message"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1125
msgid "Privacy Statement"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1146
msgid "Expected a dictionary as a product argument"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1374
#, python-format
msgid "Invalid value '%s' for %s (%s)"
msgstr ""

#: ../server/handlers/xmlrpc/scap.py:104
msgid "Invalid system_id/action_id pair."
msgstr ""

#: ../server/handlers/xmlrpc/up2date.py:233
#, python-format
msgid "Invalid value %s (%s)"
msgstr ""

#: ../server/importlib/userAuth.py:98
msgid "You are not authorized to manage packages in the null org"
msgstr ""

#: ../server/importlib/userAuth.py:103
#, python-format
msgid "You are not allowed to manage packages in the %s org"
msgstr ""

#: ../server/importlib/userAuth.py:121
msgid "You are not allowed to perform administrative tasks"
msgstr ""

#: ../server/importlib/userAuth.py:144
#, python-format
msgid ""
"You are not allowed to manage channel %s, or that channel does not exist"
msgstr ""

#: ../server/importlib/userAuth.py:204
#, python-format
msgid ""
"\n"
"               %s Account has been deactivated on this server.\n"
"               Please contact your Org administrator for more help."
msgstr ""

#: ../server/rhnChannel.py:1992
#, python-format
msgid ""
"Your account does not have access to any channels matching "
"(release='%(release)s', arch='%(arch)s')%(www_activation)s"
msgstr ""

#: ../server/rhnChannel.py:2002
msgid ""
"\n"
"If you have a registration number, please register with it first at http://"
"www.redhat.com/apps/activate/ and then try again.\n"
"\n"
msgstr ""

#: ../server/rhnChannel.py:2012
#, python-format
msgid "Insufficient subscription permissions for release (%s, %s"
msgstr ""

#. Various messages that can be reused
#.
#. bretm 02/07/2007 -- when we have better old-client documentation, probably
#. will be safe to get rid of all this crap
#: ../server/rhnChannel.py:2276 ../server/rhnChannel.py:2287
#: ../server/rhnChannel.py:2302
msgid "System Registered but Inactive"
msgstr ""

#: ../server/rhnChannel.py:2277
#, python-format
msgid ""
"\n"
"Invalid Architecture and OS release combination (%s, %s).\n"
"Your system has been registered, but will not receive updates\n"
"because it is not subscribed to a channel. If you have not yet\n"
"activated your product for service, please visit our website at:\n"
"\n"
"     http://www.redhat.com/apps/activate/\n"
"\n"
"...to activate your product."
msgstr ""

#: ../server/rhnChannel.py:2288
#, python-format
msgid ""
"\n"
"Invalid Architecture and OS release combination (%s, %s).\n"
"Your system has been registered, but will not receive updates\n"
"because it could not be subscribed to a base channel.\n"
"Please contact your organization administrator for assistance.\n"
msgstr ""

#: ../server/rhnChannel.py:2295
#, python-format
msgid ""
"\n"
"  This system has been successfully registered, but is not yet entitled\n"
"  to service.  To entitle this system to service, login to the web site at:\n"
"\n"
"  %(entitlement_url)s\n"
msgstr ""

#: ../server/rhnChannel.py:2303
#, python-format
msgid ""
"\n"
"  This system has been successfully registered, but no service entitlements\n"
"  were available.  To entitle this system to service, login to the web site "
"at:\n"
"\n"
"  %(entitlement_url)s\n"
msgstr ""

#: ../server/rhnHandler.py:62
msgid "Please run rhn_register as root on this client"
msgstr ""

#: ../server/rhnHandler.py:75
#, python-format
msgid "Service not enabled for system profile: \"%s\""
msgstr ""

#: ../server/rhnPackage.py:49 ../server/rhnPackage.py:87
#: ../server/rhnPackage.py:107 ../server/rhnPackage.py:158
#, python-format
msgid "Invalid RPM package %s requested"
msgstr ""

#: ../server/rhnPackage.py:112
msgid "Package not found"
msgstr ""

#: ../server/rhnServer/server_class.py:97
#, python-format
msgid "Architecture `%s' is not supported"
msgstr ""

#: ../server/rhnServer/server_token.py:78
#, python-format
msgid "Token `%s' has more than one base channel assigned"
msgstr ""

#: ../server/rhnServer/server_token.py:80
msgid "Conflicting base channels"
msgstr ""

#: ../server/rhnServer/server_token.py:190
#, python-format
msgid "Failed to add server to group %s"
msgstr ""

#: ../server/rhnServer/server_token.py:503
#, python-format
msgid "Maximum usage count of %s reached"
msgstr ""

#: ../server/rhnServer/server_token.py:744
msgid ""
"Stacking of re-registration tokens with different base entitlements is not "
"supported"
msgstr ""

#: ../server/rhnServer/server_token.py:811
#, python-format
msgid "Could not find token '%s'"
msgstr ""

#. Cannot use activation keys from different orgs
#: ../server/rhnServer/server_token.py:843
msgid "Tokens from mismatching orgs"
msgstr ""

#. Two tokens with different kickstart sessions
#: ../server/rhnServer/server_token.py:853
msgid "Kickstart session mismatch"
msgstr ""

#: ../server/rhnServer/server_token.py:877
msgid "Stacking of re-registration tokens is not supported"
msgstr ""

#: ../server/rhnUser.py:289 ../server/rhnUser.py:292
msgid "Invalid username/password combination"
msgstr ""

#. nope, not reserved either
#: ../server/rhnUser.py:467
#, python-format
msgid "Username `%s' has not been reserved"
msgstr ""

#. New accounts have to specify an e-mail address
#: ../server/rhnUser.py:473
msgid "E-mail address not specified"
msgstr ""

#: ../server/rhnUser.py:509
#, python-format
msgid "username should be at least %d characters"
msgstr ""

#: ../server/rhnUser.py:512
#, python-format
msgid "username should be less than %d characters"
msgstr ""

#: ../server/rhnUser.py:523
#, python-format
msgid "username = `%s', invalid character `%s'"
msgstr ""

#: ../server/rhnUser.py:542
#, python-format
msgid "Please limit your e-mail address to %s chars"
msgstr ""

#: ../server/rhnUser.py:623
#, python-format
msgid "password must be at least %d characters"
msgstr ""

#: ../server/rhnUser.py:626
#, python-format
msgid "Password must be shorter than %d characters"
msgstr ""

#: ../server/rhnUser.py:644
#, python-format
msgid "password contains character `%s'"
msgstr ""

#: ../server/rhnUser.py:651
#, python-format
msgid "username should be at least %d characters long"
msgstr ""

#: ../server/rhnUser.py:662
#, python-format
msgid "Cannot register usernames ending with %s"
msgstr ""

#. 0-999: Red Hat client/client-like interaction errors:
#: ../common/rhnException.py:53
msgid "This does not appear to be a valid username."
msgstr ""

#: ../common/rhnException.py:54
msgid "Invalid username and password combination."
msgstr ""

#: ../common/rhnException.py:55
msgid "This login is already taken, or the password is incorrect."
msgstr ""

#: ../common/rhnException.py:56
msgid "Permission denied."
msgstr ""

#: ../common/rhnException.py:57
msgid "Object not found."
msgstr ""

#: ../common/rhnException.py:58
msgid "Invalid System Digital ID."
msgstr ""

#: ../common/rhnException.py:59
msgid "Invalid System Credentials."
msgstr ""

#: ../common/rhnException.py:60
msgid "Could not retrieve user data from database."
msgstr ""

#: ../common/rhnException.py:61
msgid "Valid username required."
msgstr ""

#: ../common/rhnException.py:62
msgid "Valid password required."
msgstr ""

#: ../common/rhnException.py:63
msgid "Minimum username length violation."
msgstr ""

#: ../common/rhnException.py:64
msgid "Minimum password length violation."
msgstr ""

#: ../common/rhnException.py:65
msgid "The username contains invalid characters."
msgstr ""

#: ../common/rhnException.py:66
msgid "File not found."
msgstr ""

#: ../common/rhnException.py:67
msgid "Architecture and OS version combination is not supported."
msgstr ""

#: ../common/rhnException.py:68
msgid "Could not retrieve system data from database."
msgstr ""

#: ../common/rhnException.py:69
msgid "Invalid arguments passed to function."
msgstr ""

#: ../common/rhnException.py:70
msgid "Unable to retrieve requested entry."
msgstr ""

#: ../common/rhnException.py:71
msgid "Could not update database entry."
msgstr ""

#: ../common/rhnException.py:72
msgid "Unsupported server architecture."
msgstr ""

#: ../common/rhnException.py:73
#, python-format
msgid ""
"\n"
"     The anonymous server functionality is no longer available.\n"
"\n"
"     Please re-register this system by running mgr_register as root.\n"
"     Please visit https://%(hostname)s/rhn/systems/SystemEntitlements.do\n"
"     or login at https://%(hostname)s, and from the \"Overview\" tab,\n"
"     select \"Subscription Management\" to enable the service for this "
"system.\n"
"     "
msgstr ""

#: ../common/rhnException.py:81
msgid "Record not available in the database."
msgstr ""

#: ../common/rhnException.py:82
msgid "Invalid value for entry."
msgstr ""

#: ../common/rhnException.py:83
#, python-format
msgid ""
"\n"
"     This system does not have a valid entitlement for SUSE Manager.\n"
"     Please visit https://%(hostname)s/rhn/systems/SystemEntitlements.do\n"
"     or login at https://%(hostname)s, and from the \"Overview\" tab,\n"
"     select \"Subscription Management\" to enable the service for this "
"system.\n"
"     "
msgstr ""

#: ../common/rhnException.py:89
msgid "Channel error"
msgstr ""

#: ../common/rhnException.py:90
msgid "Client session token is invalid."
msgstr ""

#: ../common/rhnException.py:91
msgid "Client session token has expired."
msgstr ""

#: ../common/rhnException.py:92
msgid "You are not authorized to retrieve the requested object."
msgstr ""

#: ../common/rhnException.py:93
msgid "Invalid action"
msgstr ""

#: ../common/rhnException.py:94
msgid "You are not allowed to perform administrative tasks on this system."
msgstr ""

#: ../common/rhnException.py:96
msgid "The system is already subscribed to the specified channel."
msgstr ""

#: ../common/rhnException.py:97
msgid "The system is not currently subscribed to the specified channel."
msgstr ""

#: ../common/rhnException.py:98
msgid "The specified channel does not exist."
msgstr ""

#: ../common/rhnException.py:99
msgid "Invalid channel version."
msgstr ""

#: ../common/rhnException.py:100
msgid ""
"\n"
"     User group membership limits exceeded.\n"
"\n"
"     The current settings for your account do not allow you to add another\n"
"     user account. Please check with the organization administrator for "
"your\n"
"     account if the maximum number of users allowed to subscribe to server "
"needs\n"
"     to be changed.\n"
"     "
msgstr ""

#: ../common/rhnException.py:108
msgid ""
"\n"
"     System group membership limits exceeded.\n"
"\n"
"     The current settings for your account do not allow you to add another\n"
"     system profile. Please check with the organization administrator for "
"your\n"
"     account for modifying the maximum number of system profiles that can "
"be\n"
"     subscribed to your account.\n"
"     "
msgstr ""

#: ../common/rhnException.py:116
msgid ""
"\n"
"     Invalid architecture.\n"
"\n"
"     The architecture of the package is not supported by\n"
"     "
msgstr ""

#: ../common/rhnException.py:121
msgid "Invalid RPM header"
msgstr ""

#: ../common/rhnException.py:122
msgid ""
"\n"
"    This system is already registered as a Salt Minion. If you want to "
"register it as a traditional client\n"
"    please delete it first via the web UI or API and then register it using "
"the traditional tools.\n"
"    "
msgstr ""

#. For the uploading tools
#: ../common/rhnException.py:127
msgid "Invalid information uploaded to the server"
msgstr ""

#: ../common/rhnException.py:128
msgid "Error uploading network interfaces configuration."
msgstr ""

#: ../common/rhnException.py:129
msgid ""
"\n"
"     Package Upload Failed due to uniqueness constraint violation.\n"
"     Make sure the package does not have any duplicate dependencies or\n"
"     does not already exists on the server\n"
"     "
msgstr ""

#: ../common/rhnException.py:134
msgid ""
"\n"
"     The --force rhnpush option is disabled on this server.\n"
"     Please contact your SUSE Manager administrator for more help.\n"
"     "
msgstr ""

#. 60-70: token errors
#: ../common/rhnException.py:140
msgid ""
"\n"
"     The activation token specified could not be found on the server.\n"
"     Please retry with a valid key.\n"
"     "
msgstr ""

#: ../common/rhnException.py:144
msgid "Too many systems registered using this registration token"
msgstr ""

#: ../common/rhnException.py:145
msgid "Token contains invalid, obsoleted or insufficient settings"
msgstr ""

#: ../common/rhnException.py:146
msgid "Conflicting activation tokens"
msgstr ""

#. 70-80: channel subscription errors
#: ../common/rhnException.py:149
msgid ""
"\n"
"     No matching base channel found for your system.\n"
"     "
msgstr ""

#: ../common/rhnException.py:152
msgid ""
"\n"
"     You do not have subscription permission to the designated channel.\n"
"     Please refer to your organization's channel or organization\n"
"     administrators for further details.\n"
"     "
msgstr ""

#: ../common/rhnException.py:157
msgid "You can not unsubscribe from base channel."
msgstr ""

#: ../common/rhnException.py:158
msgid "SUSE Manager or Proxy channel can not be subscribed."
msgstr ""

#. 80-90: server group errors
#: ../common/rhnException.py:161
msgid "There was an error while trying to join the system to its groups"
msgstr ""

#. 90-100: entitlement errors
#: ../common/rhnException.py:164
msgid "Unable to entitle system"
msgstr ""

#. 100-109: e-mail and uuid related faults
#: ../common/rhnException.py:167
msgid "Maximum e-mail length violation."
msgstr ""

#: ../common/rhnException.py:168
msgid "This system has been previously registered."
msgstr ""

#: ../common/rhnException.py:169
msgid "Invalid username"
msgstr ""

#. 140-159 applet errors
#: ../common/rhnException.py:172
msgid "Unable to look up server"
msgstr ""

#. 160-179: OSAD errors
#: ../common/rhnException.py:175
msgid "Required argument is missing"
msgstr ""

#. 600-699: RHEL5+ EN errors
#: ../common/rhnException.py:178
msgid "No entitlement information tied to hardware"
msgstr ""

#: ../common/rhnException.py:179
msgid "Installation number is not entitling"
msgstr ""

#. 700-799: Additional user input verification errors.
#: ../common/rhnException.py:182
msgid "Maximum username length violation"
msgstr ""

#: ../common/rhnException.py:183
msgid "Maximum password length violation"
msgstr ""

#: ../common/rhnException.py:184
msgid "This user has read only API access. Action denied."
msgstr ""

#: ../common/rhnException.py:186
msgid "System Name cannot be less than 1 character"
msgstr ""

#. 1000-1999: Proxy specific errors:
#. issued by a Proxy to the client
#: ../common/rhnException.py:190
msgid "SUSE Manager Proxy error."
msgstr ""

#: ../common/rhnException.py:191
msgid "SUSE Manager Proxy unable to login."
msgstr ""

#. issued by a SUSE Manager Server/Satellite to the proxy
#: ../common/rhnException.py:193
msgid ""
"\n"
"     SUSE Manager Proxy system ID does not match a Spacewalk Proxy Server\n"
"     in the database.\n"
"     "
msgstr ""

#: ../common/rhnException.py:197
msgid "SUSE Manager Proxy session token is invalid."
msgstr ""

#: ../common/rhnException.py:198
msgid "SUSE Manager Proxy session token has expired."
msgstr ""

#. 2000-2999: Red Hat Satellite specific errors:
#: ../common/rhnException.py:202
msgid ""
"\n"
"      user creation is not allowed via mgr_register;\n"
"     please contact your sysadmin to have your account created.\n"
"     "
msgstr ""

#: ../common/rhnException.py:206
msgid ""
"\n"
"     This SUSE Manager server is not allowed to use Inter Server Sync on "
"this server\n"
"     "
msgstr ""

#: ../common/rhnException.py:209
msgid ""
"\n"
"     Inter Server Sync is disabled on this SUSE Manager Server.\n"
"     "
msgstr ""

#. 3000-3999: XML dumper errors:
#: ../common/rhnException.py:214
msgid "Invalid datatype passed"
msgstr ""

#: ../common/rhnException.py:215
msgid "Unable to retrieve channel"
msgstr ""

#: ../common/rhnException.py:216
msgid "Unable to retrieve package"
msgstr ""

#: ../common/rhnException.py:217
msgid "Unable to retrieve erratum"
msgstr ""

#: ../common/rhnException.py:218
msgid "File is missing"
msgstr ""

#: ../common/rhnException.py:219
msgid "Function retrieval error"
msgstr ""

#: ../common/rhnException.py:220
msgid "Function execution error"
msgstr ""

#: ../common/rhnException.py:221
msgid "Missing version string"
msgstr ""

#: ../common/rhnException.py:222
msgid "Invalid version string"
msgstr ""

#: ../common/rhnException.py:223
msgid "Mismatching versions"
msgstr ""

#: ../common/rhnException.py:224
msgid "Invalid channel version"
msgstr ""

#: ../common/rhnException.py:225
msgid "No comps file for channel"
msgstr ""

#: ../common/rhnException.py:226
msgid "Unable to retrieve comps file"
msgstr ""

#. 4000 - 4999: config management errors
#: ../common/rhnException.py:229
msgid "Configuration action missing"
msgstr ""

#: ../common/rhnException.py:230
msgid "File too large"
msgstr ""

#: ../common/rhnException.py:231
msgid "File contains binary data"
msgstr ""

#: ../common/rhnException.py:232
msgid "Configuration channel is not empty"
msgstr ""

#: ../common/rhnException.py:233
msgid "Permission error"
msgstr ""

#: ../common/rhnException.py:234
msgid "Content missing for configuration file"
msgstr ""

#: ../common/rhnException.py:235
msgid "Template delimiters not specified"
msgstr ""

#: ../common/rhnException.py:236
msgid "Configuration channel does not exist"
msgstr ""

#: ../common/rhnException.py:237
msgid "Configuration channel already exists"
msgstr ""

#: ../common/rhnException.py:238
msgid "File missing from configuration channel"
msgstr ""

#: ../common/rhnException.py:239
msgid "Different revision of this file is uploaded"
msgstr ""

#: ../common/rhnException.py:240
msgid "File already uploaded to configuration channel"
msgstr ""

#: ../common/rhnException.py:241
msgid "File size exceeds remaining quota space"
msgstr ""

#: ../common/rhnException.py:242
msgid "Full path of file must be specified"
msgstr ""

#: ../common/rhnException.py:243
msgid "Invalid revision number"
msgstr ""

#: ../common/rhnException.py:244
msgid "Cannot compare files of different file type"
msgstr ""

#. 5000 - 5999: client content uploading errors
#. 5000 - 5099: crash reporting errors
#: ../common/rhnException.py:248
msgid "Crash information is invalid or incomplete"
msgstr ""

#: ../common/rhnException.py:249
msgid "Crash file information is invalid or incomplete"
msgstr ""

#: ../common/rhnException.py:250
msgid "Error composing crash directory path"
msgstr ""

#: ../common/rhnException.py:251
msgid "Error composing crash file path"
msgstr ""

#: ../common/rhnException.py:252 ../common/rhnException.py:259
msgid "Invalid content encoding"
msgstr ""

#: ../common/rhnException.py:253
msgid "Invalid crash name"
msgstr ""

#: ../common/rhnException.py:254
msgid "Crash reporting is disabled for this organization"
msgstr ""

#. 5100 - 5199: scap results reporting error
#: ../common/rhnException.py:256
msgid "SCAP results file transfer is invalid or incomplete"
msgstr ""

#: ../common/rhnException.py:257
msgid "Error composing directory path for detailed SCAP results"
msgstr ""

#: ../common/rhnException.py:258
msgid "Error composing file path for detailed SCAP results"
msgstr ""

#: ../common/rhnException.py:306
msgid ""
"\n"
"     An error has occurred while processing your request. If this problem\n"
"     persists please enter a bug report at scc.suse.com.\n"
"     If you choose to submit the bug report, please be sure to include\n"
"     details of what you were trying to do when this error occurred and\n"
"     details on how to reproduce this problem.\n"
msgstr ""

#: ../common/rhnException.py:358
#, python-format
msgid ""
"Error Message:\n"
"    %s\n"
msgstr ""

#: ../common/rhnException.py:360
#, python-format
msgid "Error Class Code: %s\n"
msgstr ""

#: ../common/rhnException.py:363
#, python-format
msgid "Error Class Info: %s\n"
msgstr ""

#: ../common/rhnException.py:365
#, python-format
msgid "Explanation: %s"
msgstr ""

#: ../common/rhnTB.py:205
#, python-format
msgid "ERROR: %s %s: %s"
msgstr ""

#: ../common/rhnTB.py:207
#, python-format
msgid "TRACEBACK: %s"
msgstr ""

#: ../satellite_tools/disk_dumper/iss.py:1294
#: ../satellite_tools/disk_dumper/iss.py:1298
#, python-format
msgid "format of %s should be at least YYYYMMDD.\n"
msgstr ""

#: ../satellite_tools/messages.py:26
#, python-format
msgid ""
"\n"
"ERROR: executing step %s. Error is:\n"
"%s\n"
msgstr ""

#: ../satellite_tools/messages.py:31
#, python-format
msgid ""
"\n"
"ERROR: there was a problem accessing the channel data from your temporary\n"
"       repository. Did you migrate all of the data from the channel ISOs\n"
"       do this directory? If so, please recheck the channels ISOs, ensure\n"
"       that you have them all, and then iteratively remount and repopulate\n"
"       the temporary repository (%s).\n"
msgstr ""

#: ../satellite_tools/messages.py:39
#, python-format
msgid ""
"\n"
"ERROR: there was a problem synchronizing the information.\n"
"       Error message: %s\n"
msgstr ""

#: ../satellite_tools/messages.py:44
#, python-format
msgid ""
"\n"
"ERROR: There was a problem communicating with the ISS Master.\n"
"       Depending on the specific error details, please review your "
"configuration,\n"
"       basic network connectivity, and/or name resolution, and try again.\n"
"       Error message: %s\n"
msgstr ""

#: ../satellite_tools/messages.py:51
#, python-format
msgid ""
"\n"
"ERROR: There was a problem communicating with the ISS Master.\n"
"       If the master satellite is older than v5.3, it does not have ISS "
"capability.\n"
"       Otherwise, depending on the specific error details, please review "
"your\n"
"       configuration, basic network connectivity, and/or name resolution, "
"and try again.\n"
"       Error message: %s\n"
msgstr ""

#: ../satellite_tools/messages.py:59
#, python-format
msgid ""
"\n"
"ERROR: a child-channel cannot be synced without its parent being synced as\n"
"       well. A parent needs to be either (a) previously synced or (b) "
"synced\n"
"       in tandem with the desired child-channel. Missing parents for this\n"
"       transaction:\n"
"       %s\n"
msgstr ""

#: ../satellite_tools/messages.py:67
#, python-format
msgid ""
"\n"
"ERROR: you are not entitled to sync a channel in this set of channels.\n"
"Please contact your SUSE Manager contact\n"
"%s"
msgstr ""

#: ../satellite_tools/messages.py:72
#, python-format
msgid "  ERROR: not enough free space (%s KB) on device."
msgstr ""

#: ../satellite_tools/messages.py:74
#, python-format
msgid "    %3d/%s Fetch successful: %s (%s bytes)"
msgstr ""

#: ../satellite_tools/messages.py:75
#, python-format
msgid "    Extinct package:  %s"
msgstr ""

#: ../satellite_tools/messages.py:76
#, python-format
msgid "   Total size: %s"
msgstr ""

#: ../satellite_tools/messages.py:77
#, python-format
msgid "      Downloaded %s of %s. Estimated remaining time: %s"
msgstr ""

#: ../satellite_tools/messages.py:78
#, python-format
msgid "    Fetch unsuccessful: %s"
msgstr ""

#: ../satellite_tools/messages.py:79
#, python-format
msgid "   RPM fetch summary: %s"
msgstr ""

#: ../satellite_tools/messages.py:80
#, python-format
msgid "       success: %d"
msgstr ""

#: ../satellite_tools/messages.py:81
#, python-format
msgid "       failed:  %d"
msgstr ""

#: ../satellite_tools/messages.py:82
#, python-format
msgid "       extinct: %d"
msgstr ""

#: ../satellite_tools/messages.py:84
#, python-format
msgid "   Retrieving / parsing *relevant* package metadata: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:85
#, python-format
msgid "   Retrieving / parsing errata data: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:86
#, python-format
msgid "   Retrieving / parsing kickstart data: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:87
#, python-format
msgid "   Retrieving / parsing kickstart tree files: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:88
#, python-format
msgid "   Importing *relevant* package metadata: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:89
msgid "   * WARNING: this may be a slow process."
msgstr ""

#: ../satellite_tools/messages.py:90
msgid "Linking packages to channels"
msgstr ""

#: ../satellite_tools/messages.py:91
#, python-format
msgid "   Importing *relevant* errata: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:92
msgid "   No new kickstartable tree to import"
msgstr ""

#: ../satellite_tools/messages.py:93
#, python-format
msgid "Importing kickstartable trees (%d)"
msgstr ""

#: ../satellite_tools/messages.py:94
#, python-format
msgid "Imported kickstartable trees (%d)"
msgstr ""

#: ../satellite_tools/reposync.py:111 ../satellite_tools/satsync.py:439
msgid "+++ sending log as an email +++"
msgstr ""

#: ../satellite_tools/reposync.py:114
#, python-format
msgid "%s sync. report from %s"
msgstr ""

#: ../satellite_tools/reposync.py:124 ../satellite_tools/satsync.py:449
msgid "+++ email requested, but there is nothing to send +++"
msgstr ""

#: ../satellite_tools/rhn_satellite_activate.py:198
#, python-format
msgid ""
"\"%s\" (specified in commandline)\n"
"could not be opened and read:\n"
"%s"
msgstr ""

#: ../satellite_tools/rhn_satellite_activate.py:205
#, python-format
msgid ""
"\"%s\" could not be opened\n"
"and/or written to:\n"
"%s"
msgstr ""

#: ../satellite_tools/satsync.py:258
#, python-format
msgid "No handler for step %s"
msgstr ""

#. Try one more time - this time it should be faster since
#. everything should be cached
#: ../satellite_tools/satsync.py:270
msgid "Environment changed, trying again..."
msgstr ""

#: ../satellite_tools/satsync.py:277
msgid "ERROR: Encountered IntegrityError: \n"
msgstr ""

#: ../satellite_tools/satsync.py:285
msgid "Repeated failures"
msgstr ""

#: ../satellite_tools/satsync.py:290
#, python-format
msgid ""
"    Import complete:\n"
"        Begin time: %s\n"
"        End time:   %s\n"
"        Elapsed:    %s\n"
"          "
msgstr ""

#: ../satellite_tools/satsync.py:311
msgid "hours"
msgstr ""

#: ../satellite_tools/satsync.py:311
msgid "minutes"
msgstr ""

#: ../satellite_tools/satsync.py:311
msgid "seconds"
msgstr ""

#: ../satellite_tools/satsync.py:357
msgid ""
"ERROR: The dump is missing package data, use --no-rpms to skip this step or "
"fix the content to include package data."
msgstr ""

#. the orgs() method doesn't exist; that's fine we just
#. won't sync the orgs
#: ../satellite_tools/satsync.py:404
msgid "The SUSE Manager master does not support syncing orgs data."
msgstr ""

#: ../satellite_tools/satsync.py:404
msgid "Skipping..."
msgstr ""

#: ../satellite_tools/satsync.py:442
#, python-format
msgid "SUSE Manager Inter Server sync. report from %s"
msgstr ""

#: ../satellite_tools/satsync.py:521
msgid " - file-system synchronization"
msgstr ""

#: ../satellite_tools/satsync.py:533 ../satellite_tools/satsync.py:541
msgid " - live synchronization"
msgstr ""

#: ../satellite_tools/satsync.py:534
#, python-brace-format
msgid ""
"ERROR: Live content synchronizing with RHN Classic Hosted is no longer "
"supported.\n"
"Please use the cdn-sync command instead unless you are attempting to sync "
"from another {PRODUCT_NAME} via Inter-Server-Sync (ISS), or from local "
"content on disk via Channel Dump ISOs."
msgstr ""

#: ../satellite_tools/satsync.py:542
#, python-format
msgid "   url: %s"
msgstr ""

#: ../satellite_tools/satsync.py:543
#, python-format
msgid "   debug/output level: %s"
msgstr ""

#: ../satellite_tools/satsync.py:553
msgid "ERROR: this server must be registered with SUSE Manager."
msgstr ""

#: ../satellite_tools/satsync.py:575
#, python-format
msgid "Retrieving / parsing %s data"
msgstr ""

#: ../satellite_tools/satsync.py:585 ../satellite_tools/satsync.py:600
msgid "*** SYSTEM INTERRUPT CALLED ***"
msgstr ""

#: ../satellite_tools/satsync.py:593
msgid "ERROR: fatal parser exception occurred "
msgstr ""

#: ../satellite_tools/satsync.py:594
#, python-format
msgid "(line: %s, col: %s msg: %s)"
msgstr ""

#: ../satellite_tools/satsync.py:598
#, python-format
msgid "ERROR: parser exception occurred: %s"
msgstr ""

#: ../satellite_tools/satsync.py:603
msgid "ERROR: exception (during parse) occurred: "
msgstr ""

#: ../satellite_tools/satsync.py:604
#, python-format
msgid ""
"   Encountered some errors with %s data (see logs (%s) for more information)"
msgstr ""

#: ../satellite_tools/satsync.py:606
#, python-format
msgid "   Encountered some errors with %s data:"
msgstr ""

#: ../satellite_tools/satsync.py:607
#, python-format
msgid "   ------- %s PARSE/IMPORT ERROR -------"
msgstr ""

#: ../satellite_tools/satsync.py:609
msgid "   ---------------------------------------"
msgstr ""

#: ../satellite_tools/satsync.py:612
#, python-format
msgid "%s data complete"
msgstr ""

#: ../satellite_tools/satsync.py:665
msgid "Retrieving / parsing channel data"
msgstr ""

#: ../satellite_tools/satsync.py:718
msgid "Channel data complete"
msgstr ""

#: ../satellite_tools/satsync.py:736
#, python-format
msgid "%10s import from %s"
msgstr ""

#: ../satellite_tools/satsync.py:739
#, python-format
msgid "%10s import from %s - %s"
msgstr ""

#: ../satellite_tools/satsync.py:743
#, python-format
msgid "%10s"
msgstr ""

#: ../satellite_tools/satsync.py:750
msgid "p"
msgstr ""

#: ../satellite_tools/satsync.py:752
msgid "."
msgstr ""

#: ../satellite_tools/satsync.py:758
msgid "   p = previously imported/synced channel"
msgstr ""

#: ../satellite_tools/satsync.py:759
msgid "   . = channel not yet imported/synced"
msgstr ""

#: ../satellite_tools/satsync.py:765
msgid "   e = channel no longer supported (end-of-service)"
msgstr ""

#: ../satellite_tools/satsync.py:767
msgid "   ? = channel label invalid --- typo?"
msgstr ""

#: ../satellite_tools/satsync.py:771
#, python-format
msgid "   %s:"
msgstr ""

#: ../satellite_tools/satsync.py:772
#, python-format
msgid "      %s %-40s %4s %s"
msgstr ""

#: ../satellite_tools/satsync.py:773
msgid "base-channels"
msgstr ""

#: ../satellite_tools/satsync.py:786 ../satellite_tools/satsync.py:1603
msgid "NONE RELEVANT"
msgstr ""

#: ../satellite_tools/satsync.py:808
msgid "end-of-service"
msgstr ""

#: ../satellite_tools/satsync.py:809
msgid "e"
msgstr ""

#: ../satellite_tools/satsync.py:815
msgid "   typos:"
msgstr ""

#: ../satellite_tools/satsync.py:816
msgid "?"
msgstr ""

#: ../satellite_tools/satsync.py:831
#, python-format
msgid "XXX: imported channels: %s"
msgstr ""

#: ../satellite_tools/satsync.py:832
#, python-format
msgid "XXX:   cached channels: %s"
msgstr ""

#: ../satellite_tools/satsync.py:837
msgid "XXX: list channels called"
msgstr ""

#: ../satellite_tools/satsync.py:855
msgid "ERROR: these channels either do not exist or are not available:"
msgstr ""

#: ../satellite_tools/satsync.py:859
#, python-format
msgid "       (to see a list of channel labels: %s --list-channels)"
msgstr ""

#: ../satellite_tools/satsync.py:904
#, python-format
msgid "   Retrieving / parsing short package metadata: %s (%s)"
msgstr ""

#: ../satellite_tools/satsync.py:965
#, python-format
msgid "Diffing package metadata (what's missing locally?): %s"
msgstr ""

#: ../satellite_tools/satsync.py:971 ../satellite_tools/satsync.py:1254
msgid "Diffing:    "
msgstr ""

#: ../satellite_tools/satsync.py:988
msgid "ERROR: incremental dump skipped"
msgstr ""

#: ../satellite_tools/satsync.py:1079
msgid "Downloading rpm packages"
msgstr ""

#: ../satellite_tools/satsync.py:1084
#, python-format
msgid "   Fetching any missing RPMs: %s (%s)"
msgstr ""

#: ../satellite_tools/satsync.py:1085 ../satellite_tools/satsync.py:1153
msgid "NONE MISSING"
msgstr ""

#: ../satellite_tools/satsync.py:1094
msgid "Processing rpm packages complete"
msgstr ""

#: ../satellite_tools/satsync.py:1121
msgid "Downloading package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1146
msgid "Downloading srpm packages"
msgstr ""

#: ../satellite_tools/satsync.py:1152
#, python-format
msgid "   Fetching any missing SRPMs: %s (%s)"
msgstr ""

#: ../satellite_tools/satsync.py:1249
#, python-format
msgid "Diffing source package metadata (what's missing locally?): %s"
msgstr ""

#: ../satellite_tools/satsync.py:1260
msgid "Downloading source package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1338 ../satellite_tools/satsync.py:2027
#, python-format
msgid "Unable to save file %s: %s"
msgstr ""

#. for
#. Retried a number of times and it still failed; log the
#. file as being failed and move on
#: ../satellite_tools/satsync.py:1345
#, python-format
msgid "Failed to fetch file %s"
msgstr ""

#: ../satellite_tools/satsync.py:1350
msgid "Downloading kickstartable trees metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1365
msgid "Downloading kickstartable trees files"
msgstr ""

#: ../satellite_tools/satsync.py:1504
#, python-format
msgid "Grabbing all patches for channel %s"
msgstr ""

#: ../satellite_tools/satsync.py:1554
msgid "Downloading patch data"
msgstr ""

#: ../satellite_tools/satsync.py:1556
msgid "Forcing download of all patch data for requested channels."
msgstr ""

#: ../satellite_tools/satsync.py:1571
msgid "Downloading patch data complete"
msgstr ""

#: ../satellite_tools/satsync.py:1576 ../satellite_tools/satsync.py:1597
msgid "Downloading:"
msgstr ""

#: ../satellite_tools/satsync.py:1579
msgid " - complete"
msgstr ""

#: ../satellite_tools/satsync.py:1624
msgid "Importing source package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1627
msgid "Importing package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1635
msgid "Importing:  "
msgstr ""

#. not in the cache
#: ../satellite_tools/satsync.py:1703
msgid ""
"Package Not Found in Cache, Clear the Cache "
"to                                  Regenerate it."
msgstr ""

#: ../satellite_tools/satsync.py:1709
msgid "Importing channel patches"
msgstr ""

#: ../satellite_tools/satsync.py:1714
#, python-format
msgid "Importing %s patches for channel %s."
msgstr ""

#. Incomplete configuration
#: ../satellite_tools/satsync.py:2113
msgid "ERROR: server.mount_point not set in the configuration file"
msgstr ""

#: ../satellite_tools/satsync.py:2117
#, python-format
msgid "ERROR: server.mount_point %s do not exist"
msgstr ""

#: ../satellite_tools/satsync.py:2122
#, python-format
msgid "ERROR: path under server.mount_point (%s)  do not exist"
msgstr ""

#: ../satellite_tools/satsync.py:2199
#, python-format
msgid "Commandline: %s"
msgstr ""

#: ../satellite_tools/satsync.py:2202
#, python-format
msgid ""
"DEBUG ONLY: max. batch-size for XML/database-import processing (1..%s).\"man "
"satellite-sync\" for more information."
msgstr ""

#: ../satellite_tools/satsync.py:2205
msgid "alternative SSL CA Cert (fullpath to cert file)"
msgstr ""

#: ../satellite_tools/satsync.py:2207
msgid "process data for this channel only"
msgstr ""

#: ../satellite_tools/satsync.py:2209
msgid ""
"disk dump will be considered to be a full export; see \"man satellite-sync\" "
"for more information."
msgstr ""

#: ../satellite_tools/satsync.py:2212
msgid "existing custom channels will also be synced (unless -c is used)"
msgstr ""

#: ../satellite_tools/satsync.py:2214
#, python-format
msgid ""
"override debug level set in /etc/rhn/rhn.conf (which is currently set at %s)."
msgstr ""

#: ../satellite_tools/satsync.py:2216
#, python-format
msgid "requested version of XML dump (default: %s)"
msgstr ""

#: ../satellite_tools/satsync.py:2218
msgid "e-mail a report of what was synced/imported"
msgstr ""

#: ../satellite_tools/satsync.py:2220
msgid "forcibly process all (not a diff of) patch metadata"
msgstr ""

#: ../satellite_tools/satsync.py:2222
msgid "Do not use an http proxy under any circumstances."
msgstr ""

#: ../satellite_tools/satsync.py:2224
msgid "alternative http proxy (hostname:port)"
msgstr ""

#: ../satellite_tools/satsync.py:2226
msgid "alternative http proxy username"
msgstr ""

#: ../satellite_tools/satsync.py:2228
msgid "alternative http proxy password"
msgstr ""

#: ../satellite_tools/satsync.py:2230
msgid "parent SUSE Manager to import content from"
msgstr ""

#: ../satellite_tools/satsync.py:2232
msgid "list all available channels and exit"
msgstr ""

#: ../satellite_tools/satsync.py:2234
msgid "help on all error codes mgr-inter-sync returns"
msgstr ""

#: ../satellite_tools/satsync.py:2236
msgid "source mount point for import - disk update only"
msgstr ""

#: ../satellite_tools/satsync.py:2238
msgid "do not process patch data"
msgstr ""

#: ../satellite_tools/satsync.py:2240
msgid "do not process kickstart data (provisioning only)"
msgstr ""

#: ../satellite_tools/satsync.py:2242
msgid "do not process full package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:2244
msgid "do not download, or process any RPMs"
msgstr ""

#: ../satellite_tools/satsync.py:2246
msgid "turn off SSL (not recommended)"
msgstr ""

#: ../satellite_tools/satsync.py:2248
msgid "org to which the sync imports data. defaults to the admin account"
msgstr ""

#: ../satellite_tools/satsync.py:2250
msgid "print the configuration and exit"
msgstr ""

#: ../satellite_tools/satsync.py:2252
msgid "alternative server with which to connect (hostname)"
msgstr ""

#: ../satellite_tools/satsync.py:2254
msgid "synchronize to this step (man satellite-sync for more info)"
msgstr ""

#: ../satellite_tools/satsync.py:2256
msgid "write complete data to tempfile before streaming to remainder of app"
msgstr ""

#: ../satellite_tools/satsync.py:2258
msgid "DEBUG ONLY: alternative path to digital system id"
msgstr ""

#: ../satellite_tools/satsync.py:2260
msgid "alternative email address(es) for sync output (--email option)"
msgstr ""

#: ../satellite_tools/satsync.py:2262
msgid "do not remove rpms when importing from local dump"
msgstr ""

#: ../satellite_tools/satsync.py:2264
msgid ""
"the fully qualified domain name of the master Satellite. Valid with --mount-"
"point only. Required if you want to import org data and channel permissions."
msgstr ""

#: ../satellite_tools/satsync.py:2274
#, python-format
msgid "ERROR: these arguments make no sense in this context (try --help): %s"
msgstr ""

#. An SQL error is fatal... crash and burn
#: ../satellite_tools/satsync.py:2286
#, python-format
msgid "ERROR: Can't connect to the database: %s"
msgstr ""

#: ../satellite_tools/satsync.py:2287
msgid "ERROR: Check if your database is running."
msgstr ""

#: ../satellite_tools/satsync.py:2322
#, python-format
msgid "ERROR: --debug-level takes an in integer value within the range %s."
msgstr ""

#: ../satellite_tools/satsync.py:2324
msgid "  0  - little logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2325
msgid "  1  - minimal logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2326
msgid "  2  - normal level of logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2327
msgid "  3  - lots of logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2328
msgid "  4+ - excessive logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2341
msgid "ERROR: The --master option is only valid with the --mount-point option"
msgstr ""

#: ../satellite_tools/satsync.py:2351
#, python-format
msgid "ERROR: Unable to lookup Org Id %s"
msgstr ""

#: ../satellite_tools/satsync.py:2360
msgid ""
"WARNING: --list-channels option overrides any --step option. --step ignored."
msgstr ""

#: ../satellite_tools/satsync.py:2375
#, python-format
msgid ""
"ERROR: '%s' is not a valid step. See 'man mgr-inter-sync' for more detail."
msgstr ""

#: ../satellite_tools/satsync.py:2407
msgid ""
"ERROR: No channels currently imported; try mgr-inter-sync --list-channels; "
"then mgr-inter-sync -c chn0 -c chn1..."
msgstr ""

#. int(None) --> TypeError
#. int('a')  --> ValueError
#: ../satellite_tools/satsync.py:2457 ../satellite_tools/satsync.py:2461
msgid "ERROR: --batch-size must have a value within the range: 1..50"
msgstr ""

#: ../satellite_tools/satsync.py:2469
#, python-format
msgid "ERROR: no such directory %s"
msgstr ""

#: ../satellite_tools/satsync.py:2474
msgid "Error Codes: Returned codes means:"
msgstr ""

#: ../satellite_tools/satsync.py:2475
msgid " -1  - Could not lock file or KeyboardInterrupt or SystemExit"
msgstr ""

#: ../satellite_tools/satsync.py:2476
msgid "  0  - User interrupted or intentional exit"
msgstr ""

#: ../satellite_tools/satsync.py:2477
msgid "  1  - attempting to run more than one instance of mgr-inter-sync."
msgstr ""

#: ../satellite_tools/satsync.py:2478
msgid "  2  - Unable to find synchronization tools."
msgstr ""

#: ../satellite_tools/satsync.py:2479
msgid "  3  - a general socket exception occurred"
msgstr ""

#: ../satellite_tools/satsync.py:2480
msgid "  4  - an SSL error occurred. Recheck your SSL settings."
msgstr ""

#: ../satellite_tools/satsync.py:2481
msgid "  5  - ISS error"
msgstr ""

#: ../satellite_tools/satsync.py:2482
msgid "  6  - unhandled exception occurred"
msgstr ""

#: ../satellite_tools/satsync.py:2483
msgid "  7  - unknown sync error"
msgstr ""

#: ../satellite_tools/satsync.py:2484
msgid "  8  - ERROR: must be root to execute"
msgstr ""

#: ../satellite_tools/satsync.py:2485
msgid "  9  - rpclib fault during synchronization init"
msgstr ""

#: ../satellite_tools/satsync.py:2486
msgid "  10 - synchronization init error"
msgstr ""

#: ../satellite_tools/satsync.py:2487
msgid "  11 - Error parsing XML stream"
msgstr ""

#: ../satellite_tools/satsync.py:2488
msgid "  12 - Channel do not exist"
msgstr ""

#: ../satellite_tools/satsync.py:2489
msgid "  13 - SQL error during importing package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:2490
msgid "  14 - SQL error during linking channel packages"
msgstr ""

#: ../satellite_tools/satsync.py:2491
msgid "  15 - SQL error during xml processing"
msgstr ""

#: ../satellite_tools/satsync.py:2492
msgid "  16 - server.mount_point not set in the configuration file"
msgstr ""

#: ../satellite_tools/satsync.py:2493
msgid ""
"  17 - SQL error during retrieving the channels already imported in the SUSE "
"Manager database"
msgstr ""

#: ../satellite_tools/satsync.py:2494
msgid "  18 - Wrong db connection string in rhn.conf"
msgstr ""

#: ../satellite_tools/satsync.py:2495
msgid "  19 - Bad arguments"
msgstr ""

#: ../satellite_tools/satsync.py:2496
msgid "  20 - Could not connect to db."
msgstr ""

#: ../satellite_tools/satsync.py:2497
msgid "  21 - Bad debug level"
msgstr ""

#: ../satellite_tools/satsync.py:2498
msgid "  22 - Not valid step"
msgstr ""

#: ../satellite_tools/satsync.py:2499
msgid "  24 - no such file"
msgstr ""

#: ../satellite_tools/satsync.py:2500
msgid "  25 - no such directory"
msgstr ""

#: ../satellite_tools/satsync.py:2501
msgid "  26 - mount_point does not exist"
msgstr ""

#: ../satellite_tools/satsync.py:2502
msgid "  27 - No such org"
msgstr ""

#: ../satellite_tools/satsync.py:2503
msgid "  28 - error: --master is only valid with --mount-point"
msgstr ""

#: ../satellite_tools/satsync.py:2510
#, python-format
msgid "ERROR: unknown dump version, try one of %s"
msgstr ""
  0707010000007A000081B40000000000000000000000016290A0C10000B663000000000000000000000000000000000000001B00000000spacewalk-backend/po/lt.po    # SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
#
# Translators:
msgid ""
msgstr ""
"Project-Id-Version: Spacewalk\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-10-16 13:34+0200\n"
"PO-Revision-Date: 2011-03-04 16:08+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Lithuanian (http://www.transifex.com/projects/p/fedora/"
"language/lt/)\n"
"Language: lt\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"
"%100<10 || n%100>=20) ? 1 : 2);\n"

#: ../server/apacheAuth.py:66
#, python-format
msgid "incomplete proxy authentication token: %s"
msgstr ""

#: ../server/apacheAuth.py:84
#, python-format
msgid "Sent proxy signature %s does not match ours %s."
msgstr ""

#: ../server/apacheAuth.py:119
msgid "declined proxy authentication"
msgstr ""

#: ../server/apacheRequest.py:59
#, python-format
msgid "Invalid request received (%s)."
msgstr ""

#: ../server/apacheRequest.py:120
#, python-format
msgid ""
"IMPORTANT MESSAGE FOLLOWS:\n"
"%s"
msgstr ""

#: ../server/apacheRequest.py:149
#, python-format
msgid ""
"While running '%s': caught\n"
"%s : %s\n"
msgstr ""

#: ../server/apacheRequest.py:606
#, python-format
msgid "Invalid URI %s"
msgstr ""

#: ../server/configFilesHandler.py:129 ../server/handlers/app/packages.py:192
#: ../server/handlers/xmlrpc/registration.py:215
#: ../server/handlers/xmlrpc/registration.py:1168
#: ../server/handlers/xmlrpc/registration.py:1307
#, python-format
msgid ""
"\n"
"                   %s Account has been deactivated on this server.\n"
"                   Please contact your Org administrator for more help."
msgstr ""

#: ../server/handlers/applet/applet.py:78
#, python-brace-format
msgid "Your system was not found in the {PRODUCT_NAME} database"
msgstr ""

#: ../server/handlers/sat/auth.py:45
msgid "ISS is disabled on this server."
msgstr ""

#: ../server/handlers/sat/auth.py:50
#, python-format
msgid "Server \"%s\" is not enabled for ISS."
msgstr ""

#: ../server/handlers/xmlrpc/errata.py:64
#, python-format
msgid "Expected a package name, not: %s"
msgstr ""

#: ../server/handlers/xmlrpc/errata.py:115
#, python-format
msgid "Expected a package, not: %s"
msgstr ""

#: ../server/handlers/xmlrpc/proxy.py:65
#, python-format
msgid "SUSE Manager Proxy service not enabled for server profile: \"%s\""
msgstr ""

#: ../server/handlers/xmlrpc/proxy.py:85
msgid "Invalid session key"
msgstr ""

#: ../server/handlers/xmlrpc/proxy.py:93
msgid "This server ID no longer exists"
msgstr ""

#: ../server/handlers/xmlrpc/queue.py:433
#, python-format
msgid "Invalid action value type %s (%s)"
msgstr ""

#: ../server/handlers/xmlrpc/queue.py:464
#, python-format
msgid "Action %s does not belong to server %s"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:194
msgid "Required data missing"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:198
msgid "Required members missing"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:207
msgid "Attempt to register a system to an invalid username"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:839
msgid "Invalid system release version requested"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1063
msgid ""
"Unable to find a valid network interface, both ipaddr and ip6addr not found."
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1115
#, python-brace-format
msgid "{PRODUCT_NAME} Welcome Message"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1125
msgid "Privacy Statement"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1146
msgid "Expected a dictionary as a product argument"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1374
#, python-format
msgid "Invalid value '%s' for %s (%s)"
msgstr ""

#: ../server/handlers/xmlrpc/scap.py:104
msgid "Invalid system_id/action_id pair."
msgstr ""

#: ../server/handlers/xmlrpc/up2date.py:233
#, python-format
msgid "Invalid value %s (%s)"
msgstr ""

#: ../server/importlib/userAuth.py:98
msgid "You are not authorized to manage packages in the null org"
msgstr ""

#: ../server/importlib/userAuth.py:103
#, python-format
msgid "You are not allowed to manage packages in the %s org"
msgstr ""

#: ../server/importlib/userAuth.py:121
msgid "You are not allowed to perform administrative tasks"
msgstr ""

#: ../server/importlib/userAuth.py:144
#, python-format
msgid ""
"You are not allowed to manage channel %s, or that channel does not exist"
msgstr ""

#: ../server/importlib/userAuth.py:204
#, python-format
msgid ""
"\n"
"               %s Account has been deactivated on this server.\n"
"               Please contact your Org administrator for more help."
msgstr ""

#: ../server/rhnChannel.py:1992
#, python-format
msgid ""
"Your account does not have access to any channels matching "
"(release='%(release)s', arch='%(arch)s')%(www_activation)s"
msgstr ""

#: ../server/rhnChannel.py:2002
msgid ""
"\n"
"If you have a registration number, please register with it first at http://"
"www.redhat.com/apps/activate/ and then try again.\n"
"\n"
msgstr ""

#: ../server/rhnChannel.py:2012
#, python-format
msgid "Insufficient subscription permissions for release (%s, %s"
msgstr ""

#. Various messages that can be reused
#.
#. bretm 02/07/2007 -- when we have better old-client documentation, probably
#. will be safe to get rid of all this crap
#: ../server/rhnChannel.py:2276 ../server/rhnChannel.py:2287
#: ../server/rhnChannel.py:2302
msgid "System Registered but Inactive"
msgstr ""

#: ../server/rhnChannel.py:2277
#, python-format
msgid ""
"\n"
"Invalid Architecture and OS release combination (%s, %s).\n"
"Your system has been registered, but will not receive updates\n"
"because it is not subscribed to a channel. If you have not yet\n"
"activated your product for service, please visit our website at:\n"
"\n"
"     http://www.redhat.com/apps/activate/\n"
"\n"
"...to activate your product."
msgstr ""

#: ../server/rhnChannel.py:2288
#, python-format
msgid ""
"\n"
"Invalid Architecture and OS release combination (%s, %s).\n"
"Your system has been registered, but will not receive updates\n"
"because it could not be subscribed to a base channel.\n"
"Please contact your organization administrator for assistance.\n"
msgstr ""

#: ../server/rhnChannel.py:2295
#, python-format
msgid ""
"\n"
"  This system has been successfully registered, but is not yet entitled\n"
"  to service.  To entitle this system to service, login to the web site at:\n"
"\n"
"  %(entitlement_url)s\n"
msgstr ""

#: ../server/rhnChannel.py:2303
#, python-format
msgid ""
"\n"
"  This system has been successfully registered, but no service entitlements\n"
"  were available.  To entitle this system to service, login to the web site "
"at:\n"
"\n"
"  %(entitlement_url)s\n"
msgstr ""

#: ../server/rhnHandler.py:62
msgid "Please run rhn_register as root on this client"
msgstr ""

#: ../server/rhnHandler.py:75
#, python-format
msgid "Service not enabled for system profile: \"%s\""
msgstr ""

#: ../server/rhnPackage.py:49 ../server/rhnPackage.py:87
#: ../server/rhnPackage.py:107 ../server/rhnPackage.py:158
#, python-format
msgid "Invalid RPM package %s requested"
msgstr ""

#: ../server/rhnPackage.py:112
msgid "Package not found"
msgstr ""

#: ../server/rhnServer/server_class.py:97
#, python-format
msgid "Architecture `%s' is not supported"
msgstr ""

#: ../server/rhnServer/server_token.py:78
#, python-format
msgid "Token `%s' has more than one base channel assigned"
msgstr ""

#: ../server/rhnServer/server_token.py:80
msgid "Conflicting base channels"
msgstr ""

#: ../server/rhnServer/server_token.py:190
#, python-format
msgid "Failed to add server to group %s"
msgstr ""

#: ../server/rhnServer/server_token.py:503
#, python-format
msgid "Maximum usage count of %s reached"
msgstr ""

#: ../server/rhnServer/server_token.py:744
msgid ""
"Stacking of re-registration tokens with different base entitlements is not "
"supported"
msgstr ""

#: ../server/rhnServer/server_token.py:811
#, python-format
msgid "Could not find token '%s'"
msgstr ""

#. Cannot use activation keys from different orgs
#: ../server/rhnServer/server_token.py:843
msgid "Tokens from mismatching orgs"
msgstr ""

#. Two tokens with different kickstart sessions
#: ../server/rhnServer/server_token.py:853
msgid "Kickstart session mismatch"
msgstr ""

#: ../server/rhnServer/server_token.py:877
msgid "Stacking of re-registration tokens is not supported"
msgstr ""

#: ../server/rhnUser.py:289 ../server/rhnUser.py:292
msgid "Invalid username/password combination"
msgstr ""

#. nope, not reserved either
#: ../server/rhnUser.py:467
#, python-format
msgid "Username `%s' has not been reserved"
msgstr ""

#. New accounts have to specify an e-mail address
#: ../server/rhnUser.py:473
msgid "E-mail address not specified"
msgstr ""

#: ../server/rhnUser.py:509
#, python-format
msgid "username should be at least %d characters"
msgstr ""

#: ../server/rhnUser.py:512
#, python-format
msgid "username should be less than %d characters"
msgstr ""

#: ../server/rhnUser.py:523
#, python-format
msgid "username = `%s', invalid character `%s'"
msgstr ""

#: ../server/rhnUser.py:542
#, python-format
msgid "Please limit your e-mail address to %s chars"
msgstr ""

#: ../server/rhnUser.py:623
#, python-format
msgid "password must be at least %d characters"
msgstr ""

#: ../server/rhnUser.py:626
#, python-format
msgid "Password must be shorter than %d characters"
msgstr ""

#: ../server/rhnUser.py:644
#, python-format
msgid "password contains character `%s'"
msgstr ""

#: ../server/rhnUser.py:651
#, python-format
msgid "username should be at least %d characters long"
msgstr ""

#: ../server/rhnUser.py:662
#, python-format
msgid "Cannot register usernames ending with %s"
msgstr ""

#. 0-999: Red Hat client/client-like interaction errors:
#: ../common/rhnException.py:53
msgid "This does not appear to be a valid username."
msgstr ""

#: ../common/rhnException.py:54
msgid "Invalid username and password combination."
msgstr ""

#: ../common/rhnException.py:55
msgid "This login is already taken, or the password is incorrect."
msgstr ""

#: ../common/rhnException.py:56
msgid "Permission denied."
msgstr ""

#: ../common/rhnException.py:57
msgid "Object not found."
msgstr ""

#: ../common/rhnException.py:58
msgid "Invalid System Digital ID."
msgstr ""

#: ../common/rhnException.py:59
msgid "Invalid System Credentials."
msgstr ""

#: ../common/rhnException.py:60
msgid "Could not retrieve user data from database."
msgstr ""

#: ../common/rhnException.py:61
msgid "Valid username required."
msgstr ""

#: ../common/rhnException.py:62
msgid "Valid password required."
msgstr ""

#: ../common/rhnException.py:63
msgid "Minimum username length violation."
msgstr ""

#: ../common/rhnException.py:64
msgid "Minimum password length violation."
msgstr ""

#: ../common/rhnException.py:65
msgid "The username contains invalid characters."
msgstr ""

#: ../common/rhnException.py:66
msgid "File not found."
msgstr ""

#: ../common/rhnException.py:67
msgid "Architecture and OS version combination is not supported."
msgstr ""

#: ../common/rhnException.py:68
msgid "Could not retrieve system data from database."
msgstr ""

#: ../common/rhnException.py:69
msgid "Invalid arguments passed to function."
msgstr ""

#: ../common/rhnException.py:70
msgid "Unable to retrieve requested entry."
msgstr ""

#: ../common/rhnException.py:71
msgid "Could not update database entry."
msgstr ""

#: ../common/rhnException.py:72
msgid "Unsupported server architecture."
msgstr ""

#: ../common/rhnException.py:73
#, python-format
msgid ""
"\n"
"     The anonymous server functionality is no longer available.\n"
"\n"
"     Please re-register this system by running mgr_register as root.\n"
"     Please visit https://%(hostname)s/rhn/systems/SystemEntitlements.do\n"
"     or login at https://%(hostname)s, and from the \"Overview\" tab,\n"
"     select \"Subscription Management\" to enable the service for this "
"system.\n"
"     "
msgstr ""

#: ../common/rhnException.py:81
msgid "Record not available in the database."
msgstr ""

#: ../common/rhnException.py:82
msgid "Invalid value for entry."
msgstr ""

#: ../common/rhnException.py:83
#, python-format
msgid ""
"\n"
"     This system does not have a valid entitlement for SUSE Manager.\n"
"     Please visit https://%(hostname)s/rhn/systems/SystemEntitlements.do\n"
"     or login at https://%(hostname)s, and from the \"Overview\" tab,\n"
"     select \"Subscription Management\" to enable the service for this "
"system.\n"
"     "
msgstr ""

#: ../common/rhnException.py:89
msgid "Channel error"
msgstr ""

#: ../common/rhnException.py:90
msgid "Client session token is invalid."
msgstr ""

#: ../common/rhnException.py:91
msgid "Client session token has expired."
msgstr ""

#: ../common/rhnException.py:92
msgid "You are not authorized to retrieve the requested object."
msgstr ""

#: ../common/rhnException.py:93
msgid "Invalid action"
msgstr ""

#: ../common/rhnException.py:94
msgid "You are not allowed to perform administrative tasks on this system."
msgstr ""

#: ../common/rhnException.py:96
msgid "The system is already subscribed to the specified channel."
msgstr ""

#: ../common/rhnException.py:97
msgid "The system is not currently subscribed to the specified channel."
msgstr ""

#: ../common/rhnException.py:98
msgid "The specified channel does not exist."
msgstr ""

#: ../common/rhnException.py:99
msgid "Invalid channel version."
msgstr ""

#: ../common/rhnException.py:100
msgid ""
"\n"
"     User group membership limits exceeded.\n"
"\n"
"     The current settings for your account do not allow you to add another\n"
"     user account. Please check with the organization administrator for "
"your\n"
"     account if the maximum number of users allowed to subscribe to server "
"needs\n"
"     to be changed.\n"
"     "
msgstr ""

#: ../common/rhnException.py:108
msgid ""
"\n"
"     System group membership limits exceeded.\n"
"\n"
"     The current settings for your account do not allow you to add another\n"
"     system profile. Please check with the organization administrator for "
"your\n"
"     account for modifying the maximum number of system profiles that can "
"be\n"
"     subscribed to your account.\n"
"     "
msgstr ""

#: ../common/rhnException.py:116
msgid ""
"\n"
"     Invalid architecture.\n"
"\n"
"     The architecture of the package is not supported by\n"
"     "
msgstr ""

#: ../common/rhnException.py:121
msgid "Invalid RPM header"
msgstr ""

#: ../common/rhnException.py:122
msgid ""
"\n"
"    This system is already registered as a Salt Minion. If you want to "
"register it as a traditional client\n"
"    please delete it first via the web UI or API and then register it using "
"the traditional tools.\n"
"    "
msgstr ""

#. For the uploading tools
#: ../common/rhnException.py:127
msgid "Invalid information uploaded to the server"
msgstr ""

#: ../common/rhnException.py:128
msgid "Error uploading network interfaces configuration."
msgstr ""

#: ../common/rhnException.py:129
msgid ""
"\n"
"     Package Upload Failed due to uniqueness constraint violation.\n"
"     Make sure the package does not have any duplicate dependencies or\n"
"     does not already exists on the server\n"
"     "
msgstr ""

#: ../common/rhnException.py:134
msgid ""
"\n"
"     The --force rhnpush option is disabled on this server.\n"
"     Please contact your SUSE Manager administrator for more help.\n"
"     "
msgstr ""

#. 60-70: token errors
#: ../common/rhnException.py:140
msgid ""
"\n"
"     The activation token specified could not be found on the server.\n"
"     Please retry with a valid key.\n"
"     "
msgstr ""

#: ../common/rhnException.py:144
msgid "Too many systems registered using this registration token"
msgstr ""

#: ../common/rhnException.py:145
msgid "Token contains invalid, obsoleted or insufficient settings"
msgstr ""

#: ../common/rhnException.py:146
msgid "Conflicting activation tokens"
msgstr ""

#. 70-80: channel subscription errors
#: ../common/rhnException.py:149
msgid ""
"\n"
"     No matching base channel found for your system.\n"
"     "
msgstr ""

#: ../common/rhnException.py:152
msgid ""
"\n"
"     You do not have subscription permission to the designated channel.\n"
"     Please refer to your organization's channel or organization\n"
"     administrators for further details.\n"
"     "
msgstr ""

#: ../common/rhnException.py:157
msgid "You can not unsubscribe from base channel."
msgstr ""

#: ../common/rhnException.py:158
msgid "SUSE Manager or Proxy channel can not be subscribed."
msgstr ""

#. 80-90: server group errors
#: ../common/rhnException.py:161
msgid "There was an error while trying to join the system to its groups"
msgstr ""

#. 90-100: entitlement errors
#: ../common/rhnException.py:164
msgid "Unable to entitle system"
msgstr ""

#. 100-109: e-mail and uuid related faults
#: ../common/rhnException.py:167
msgid "Maximum e-mail length violation."
msgstr ""

#: ../common/rhnException.py:168
msgid "This system has been previously registered."
msgstr ""

#: ../common/rhnException.py:169
msgid "Invalid username"
msgstr ""

#. 140-159 applet errors
#: ../common/rhnException.py:172
msgid "Unable to look up server"
msgstr ""

#. 160-179: OSAD errors
#: ../common/rhnException.py:175
msgid "Required argument is missing"
msgstr ""

#. 600-699: RHEL5+ EN errors
#: ../common/rhnException.py:178
msgid "No entitlement information tied to hardware"
msgstr ""

#: ../common/rhnException.py:179
msgid "Installation number is not entitling"
msgstr ""

#. 700-799: Additional user input verification errors.
#: ../common/rhnException.py:182
msgid "Maximum username length violation"
msgstr ""

#: ../common/rhnException.py:183
msgid "Maximum password length violation"
msgstr ""

#: ../common/rhnException.py:184
msgid "This user has read only API access. Action denied."
msgstr ""

#: ../common/rhnException.py:186
msgid "System Name cannot be less than 1 character"
msgstr ""

#. 1000-1999: Proxy specific errors:
#. issued by a Proxy to the client
#: ../common/rhnException.py:190
msgid "SUSE Manager Proxy error."
msgstr ""

#: ../common/rhnException.py:191
msgid "SUSE Manager Proxy unable to login."
msgstr ""

#. issued by a SUSE Manager Server/Satellite to the proxy
#: ../common/rhnException.py:193
msgid ""
"\n"
"     SUSE Manager Proxy system ID does not match a Spacewalk Proxy Server\n"
"     in the database.\n"
"     "
msgstr ""

#: ../common/rhnException.py:197
msgid "SUSE Manager Proxy session token is invalid."
msgstr ""

#: ../common/rhnException.py:198
msgid "SUSE Manager Proxy session token has expired."
msgstr ""

#. 2000-2999: Red Hat Satellite specific errors:
#: ../common/rhnException.py:202
msgid ""
"\n"
"      user creation is not allowed via mgr_register;\n"
"     please contact your sysadmin to have your account created.\n"
"     "
msgstr ""

#: ../common/rhnException.py:206
msgid ""
"\n"
"     This SUSE Manager server is not allowed to use Inter Server Sync on "
"this server\n"
"     "
msgstr ""

#: ../common/rhnException.py:209
msgid ""
"\n"
"     Inter Server Sync is disabled on this SUSE Manager Server.\n"
"     "
msgstr ""

#. 3000-3999: XML dumper errors:
#: ../common/rhnException.py:214
msgid "Invalid datatype passed"
msgstr ""

#: ../common/rhnException.py:215
msgid "Unable to retrieve channel"
msgstr ""

#: ../common/rhnException.py:216
msgid "Unable to retrieve package"
msgstr ""

#: ../common/rhnException.py:217
msgid "Unable to retrieve erratum"
msgstr ""

#: ../common/rhnException.py:218
msgid "File is missing"
msgstr ""

#: ../common/rhnException.py:219
msgid "Function retrieval error"
msgstr ""

#: ../common/rhnException.py:220
msgid "Function execution error"
msgstr ""

#: ../common/rhnException.py:221
msgid "Missing version string"
msgstr ""

#: ../common/rhnException.py:222
msgid "Invalid version string"
msgstr ""

#: ../common/rhnException.py:223
msgid "Mismatching versions"
msgstr ""

#: ../common/rhnException.py:224
msgid "Invalid channel version"
msgstr ""

#: ../common/rhnException.py:225
msgid "No comps file for channel"
msgstr ""

#: ../common/rhnException.py:226
msgid "Unable to retrieve comps file"
msgstr ""

#. 4000 - 4999: config management errors
#: ../common/rhnException.py:229
msgid "Configuration action missing"
msgstr ""

#: ../common/rhnException.py:230
msgid "File too large"
msgstr ""

#: ../common/rhnException.py:231
msgid "File contains binary data"
msgstr ""

#: ../common/rhnException.py:232
msgid "Configuration channel is not empty"
msgstr ""

#: ../common/rhnException.py:233
msgid "Permission error"
msgstr ""

#: ../common/rhnException.py:234
msgid "Content missing for configuration file"
msgstr ""

#: ../common/rhnException.py:235
msgid "Template delimiters not specified"
msgstr ""

#: ../common/rhnException.py:236
msgid "Configuration channel does not exist"
msgstr ""

#: ../common/rhnException.py:237
msgid "Configuration channel already exists"
msgstr ""

#: ../common/rhnException.py:238
msgid "File missing from configuration channel"
msgstr ""

#: ../common/rhnException.py:239
msgid "Different revision of this file is uploaded"
msgstr ""

#: ../common/rhnException.py:240
msgid "File already uploaded to configuration channel"
msgstr ""

#: ../common/rhnException.py:241
msgid "File size exceeds remaining quota space"
msgstr ""

#: ../common/rhnException.py:242
msgid "Full path of file must be specified"
msgstr ""

#: ../common/rhnException.py:243
msgid "Invalid revision number"
msgstr ""

#: ../common/rhnException.py:244
msgid "Cannot compare files of different file type"
msgstr ""

#. 5000 - 5999: client content uploading errors
#. 5000 - 5099: crash reporting errors
#: ../common/rhnException.py:248
msgid "Crash information is invalid or incomplete"
msgstr ""

#: ../common/rhnException.py:249
msgid "Crash file information is invalid or incomplete"
msgstr ""

#: ../common/rhnException.py:250
msgid "Error composing crash directory path"
msgstr ""

#: ../common/rhnException.py:251
msgid "Error composing crash file path"
msgstr ""

#: ../common/rhnException.py:252 ../common/rhnException.py:259
msgid "Invalid content encoding"
msgstr ""

#: ../common/rhnException.py:253
msgid "Invalid crash name"
msgstr ""

#: ../common/rhnException.py:254
msgid "Crash reporting is disabled for this organization"
msgstr ""

#. 5100 - 5199: scap results reporting error
#: ../common/rhnException.py:256
msgid "SCAP results file transfer is invalid or incomplete"
msgstr ""

#: ../common/rhnException.py:257
msgid "Error composing directory path for detailed SCAP results"
msgstr ""

#: ../common/rhnException.py:258
msgid "Error composing file path for detailed SCAP results"
msgstr ""

#: ../common/rhnException.py:306
msgid ""
"\n"
"     An error has occurred while processing your request. If this problem\n"
"     persists please enter a bug report at scc.suse.com.\n"
"     If you choose to submit the bug report, please be sure to include\n"
"     details of what you were trying to do when this error occurred and\n"
"     details on how to reproduce this problem.\n"
msgstr ""

#: ../common/rhnException.py:358
#, python-format
msgid ""
"Error Message:\n"
"    %s\n"
msgstr ""

#: ../common/rhnException.py:360
#, python-format
msgid "Error Class Code: %s\n"
msgstr ""

#: ../common/rhnException.py:363
#, python-format
msgid "Error Class Info: %s\n"
msgstr ""

#: ../common/rhnException.py:365
#, python-format
msgid "Explanation: %s"
msgstr ""

#: ../common/rhnTB.py:205
#, python-format
msgid "ERROR: %s %s: %s"
msgstr ""

#: ../common/rhnTB.py:207
#, python-format
msgid "TRACEBACK: %s"
msgstr ""

#: ../satellite_tools/disk_dumper/iss.py:1294
#: ../satellite_tools/disk_dumper/iss.py:1298
#, python-format
msgid "format of %s should be at least YYYYMMDD.\n"
msgstr ""

#: ../satellite_tools/messages.py:26
#, python-format
msgid ""
"\n"
"ERROR: executing step %s. Error is:\n"
"%s\n"
msgstr ""

#: ../satellite_tools/messages.py:31
#, python-format
msgid ""
"\n"
"ERROR: there was a problem accessing the channel data from your temporary\n"
"       repository. Did you migrate all of the data from the channel ISOs\n"
"       do this directory? If so, please recheck the channels ISOs, ensure\n"
"       that you have them all, and then iteratively remount and repopulate\n"
"       the temporary repository (%s).\n"
msgstr ""

#: ../satellite_tools/messages.py:39
#, python-format
msgid ""
"\n"
"ERROR: there was a problem synchronizing the information.\n"
"       Error message: %s\n"
msgstr ""

#: ../satellite_tools/messages.py:44
#, python-format
msgid ""
"\n"
"ERROR: There was a problem communicating with the ISS Master.\n"
"       Depending on the specific error details, please review your "
"configuration,\n"
"       basic network connectivity, and/or name resolution, and try again.\n"
"       Error message: %s\n"
msgstr ""

#: ../satellite_tools/messages.py:51
#, python-format
msgid ""
"\n"
"ERROR: There was a problem communicating with the ISS Master.\n"
"       If the master satellite is older than v5.3, it does not have ISS "
"capability.\n"
"       Otherwise, depending on the specific error details, please review "
"your\n"
"       configuration, basic network connectivity, and/or name resolution, "
"and try again.\n"
"       Error message: %s\n"
msgstr ""

#: ../satellite_tools/messages.py:59
#, python-format
msgid ""
"\n"
"ERROR: a child-channel cannot be synced without its parent being synced as\n"
"       well. A parent needs to be either (a) previously synced or (b) "
"synced\n"
"       in tandem with the desired child-channel. Missing parents for this\n"
"       transaction:\n"
"       %s\n"
msgstr ""

#: ../satellite_tools/messages.py:67
#, python-format
msgid ""
"\n"
"ERROR: you are not entitled to sync a channel in this set of channels.\n"
"Please contact your SUSE Manager contact\n"
"%s"
msgstr ""

#: ../satellite_tools/messages.py:72
#, python-format
msgid "  ERROR: not enough free space (%s KB) on device."
msgstr ""

#: ../satellite_tools/messages.py:74
#, python-format
msgid "    %3d/%s Fetch successful: %s (%s bytes)"
msgstr ""

#: ../satellite_tools/messages.py:75
#, python-format
msgid "    Extinct package:  %s"
msgstr ""

#: ../satellite_tools/messages.py:76
#, python-format
msgid "   Total size: %s"
msgstr ""

#: ../satellite_tools/messages.py:77
#, python-format
msgid "      Downloaded %s of %s. Estimated remaining time: %s"
msgstr ""

#: ../satellite_tools/messages.py:78
#, python-format
msgid "    Fetch unsuccessful: %s"
msgstr ""

#: ../satellite_tools/messages.py:79
#, python-format
msgid "   RPM fetch summary: %s"
msgstr ""

#: ../satellite_tools/messages.py:80
#, python-format
msgid "       success: %d"
msgstr ""

#: ../satellite_tools/messages.py:81
#, python-format
msgid "       failed:  %d"
msgstr ""

#: ../satellite_tools/messages.py:82
#, python-format
msgid "       extinct: %d"
msgstr ""

#: ../satellite_tools/messages.py:84
#, python-format
msgid "   Retrieving / parsing *relevant* package metadata: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:85
#, python-format
msgid "   Retrieving / parsing errata data: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:86
#, python-format
msgid "   Retrieving / parsing kickstart data: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:87
#, python-format
msgid "   Retrieving / parsing kickstart tree files: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:88
#, python-format
msgid "   Importing *relevant* package metadata: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:89
msgid "   * WARNING: this may be a slow process."
msgstr ""

#: ../satellite_tools/messages.py:90
msgid "Linking packages to channels"
msgstr ""

#: ../satellite_tools/messages.py:91
#, python-format
msgid "   Importing *relevant* errata: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:92
msgid "   No new kickstartable tree to import"
msgstr ""

#: ../satellite_tools/messages.py:93
#, python-format
msgid "Importing kickstartable trees (%d)"
msgstr ""

#: ../satellite_tools/messages.py:94
#, python-format
msgid "Imported kickstartable trees (%d)"
msgstr ""

#: ../satellite_tools/reposync.py:111 ../satellite_tools/satsync.py:439
msgid "+++ sending log as an email +++"
msgstr ""

#: ../satellite_tools/reposync.py:114
#, python-format
msgid "%s sync. report from %s"
msgstr ""

#: ../satellite_tools/reposync.py:124 ../satellite_tools/satsync.py:449
msgid "+++ email requested, but there is nothing to send +++"
msgstr ""

#: ../satellite_tools/rhn_satellite_activate.py:198
#, python-format
msgid ""
"\"%s\" (specified in commandline)\n"
"could not be opened and read:\n"
"%s"
msgstr ""

#: ../satellite_tools/rhn_satellite_activate.py:205
#, python-format
msgid ""
"\"%s\" could not be opened\n"
"and/or written to:\n"
"%s"
msgstr ""

#: ../satellite_tools/satsync.py:258
#, python-format
msgid "No handler for step %s"
msgstr ""

#. Try one more time - this time it should be faster since
#. everything should be cached
#: ../satellite_tools/satsync.py:270
msgid "Environment changed, trying again..."
msgstr ""

#: ../satellite_tools/satsync.py:277
msgid "ERROR: Encountered IntegrityError: \n"
msgstr ""

#: ../satellite_tools/satsync.py:285
msgid "Repeated failures"
msgstr ""

#: ../satellite_tools/satsync.py:290
#, python-format
msgid ""
"    Import complete:\n"
"        Begin time: %s\n"
"        End time:   %s\n"
"        Elapsed:    %s\n"
"          "
msgstr ""

#: ../satellite_tools/satsync.py:311
msgid "hours"
msgstr ""

#: ../satellite_tools/satsync.py:311
msgid "minutes"
msgstr ""

#: ../satellite_tools/satsync.py:311
msgid "seconds"
msgstr ""

#: ../satellite_tools/satsync.py:357
msgid ""
"ERROR: The dump is missing package data, use --no-rpms to skip this step or "
"fix the content to include package data."
msgstr ""

#. the orgs() method doesn't exist; that's fine we just
#. won't sync the orgs
#: ../satellite_tools/satsync.py:404
msgid "The SUSE Manager master does not support syncing orgs data."
msgstr ""

#: ../satellite_tools/satsync.py:404
msgid "Skipping..."
msgstr ""

#: ../satellite_tools/satsync.py:442
#, python-format
msgid "SUSE Manager Inter Server sync. report from %s"
msgstr ""

#: ../satellite_tools/satsync.py:521
msgid " - file-system synchronization"
msgstr ""

#: ../satellite_tools/satsync.py:533 ../satellite_tools/satsync.py:541
msgid " - live synchronization"
msgstr ""

#: ../satellite_tools/satsync.py:534
#, python-brace-format
msgid ""
"ERROR: Live content synchronizing with RHN Classic Hosted is no longer "
"supported.\n"
"Please use the cdn-sync command instead unless you are attempting to sync "
"from another {PRODUCT_NAME} via Inter-Server-Sync (ISS), or from local "
"content on disk via Channel Dump ISOs."
msgstr ""

#: ../satellite_tools/satsync.py:542
#, python-format
msgid "   url: %s"
msgstr ""

#: ../satellite_tools/satsync.py:543
#, python-format
msgid "   debug/output level: %s"
msgstr ""

#: ../satellite_tools/satsync.py:553
msgid "ERROR: this server must be registered with SUSE Manager."
msgstr ""

#: ../satellite_tools/satsync.py:575
#, python-format
msgid "Retrieving / parsing %s data"
msgstr ""

#: ../satellite_tools/satsync.py:585 ../satellite_tools/satsync.py:600
msgid "*** SYSTEM INTERRUPT CALLED ***"
msgstr ""

#: ../satellite_tools/satsync.py:593
msgid "ERROR: fatal parser exception occurred "
msgstr ""

#: ../satellite_tools/satsync.py:594
#, python-format
msgid "(line: %s, col: %s msg: %s)"
msgstr ""

#: ../satellite_tools/satsync.py:598
#, python-format
msgid "ERROR: parser exception occurred: %s"
msgstr ""

#: ../satellite_tools/satsync.py:603
msgid "ERROR: exception (during parse) occurred: "
msgstr ""

#: ../satellite_tools/satsync.py:604
#, python-format
msgid ""
"   Encountered some errors with %s data (see logs (%s) for more information)"
msgstr ""

#: ../satellite_tools/satsync.py:606
#, python-format
msgid "   Encountered some errors with %s data:"
msgstr ""

#: ../satellite_tools/satsync.py:607
#, python-format
msgid "   ------- %s PARSE/IMPORT ERROR -------"
msgstr ""

#: ../satellite_tools/satsync.py:609
msgid "   ---------------------------------------"
msgstr ""

#: ../satellite_tools/satsync.py:612
#, python-format
msgid "%s data complete"
msgstr ""

#: ../satellite_tools/satsync.py:665
msgid "Retrieving / parsing channel data"
msgstr ""

#: ../satellite_tools/satsync.py:718
msgid "Channel data complete"
msgstr ""

#: ../satellite_tools/satsync.py:736
#, python-format
msgid "%10s import from %s"
msgstr ""

#: ../satellite_tools/satsync.py:739
#, python-format
msgid "%10s import from %s - %s"
msgstr ""

#: ../satellite_tools/satsync.py:743
#, python-format
msgid "%10s"
msgstr ""

#: ../satellite_tools/satsync.py:750
msgid "p"
msgstr ""

#: ../satellite_tools/satsync.py:752
msgid "."
msgstr ""

#: ../satellite_tools/satsync.py:758
msgid "   p = previously imported/synced channel"
msgstr ""

#: ../satellite_tools/satsync.py:759
msgid "   . = channel not yet imported/synced"
msgstr ""

#: ../satellite_tools/satsync.py:765
msgid "   e = channel no longer supported (end-of-service)"
msgstr ""

#: ../satellite_tools/satsync.py:767
msgid "   ? = channel label invalid --- typo?"
msgstr ""

#: ../satellite_tools/satsync.py:771
#, python-format
msgid "   %s:"
msgstr ""

#: ../satellite_tools/satsync.py:772
#, python-format
msgid "      %s %-40s %4s %s"
msgstr ""

#: ../satellite_tools/satsync.py:773
msgid "base-channels"
msgstr ""

#: ../satellite_tools/satsync.py:786 ../satellite_tools/satsync.py:1603
msgid "NONE RELEVANT"
msgstr ""

#: ../satellite_tools/satsync.py:808
msgid "end-of-service"
msgstr ""

#: ../satellite_tools/satsync.py:809
msgid "e"
msgstr ""

#: ../satellite_tools/satsync.py:815
msgid "   typos:"
msgstr ""

#: ../satellite_tools/satsync.py:816
msgid "?"
msgstr ""

#: ../satellite_tools/satsync.py:831
#, python-format
msgid "XXX: imported channels: %s"
msgstr ""

#: ../satellite_tools/satsync.py:832
#, python-format
msgid "XXX:   cached channels: %s"
msgstr ""

#: ../satellite_tools/satsync.py:837
msgid "XXX: list channels called"
msgstr ""

#: ../satellite_tools/satsync.py:855
msgid "ERROR: these channels either do not exist or are not available:"
msgstr ""

#: ../satellite_tools/satsync.py:859
#, python-format
msgid "       (to see a list of channel labels: %s --list-channels)"
msgstr ""

#: ../satellite_tools/satsync.py:904
#, python-format
msgid "   Retrieving / parsing short package metadata: %s (%s)"
msgstr ""

#: ../satellite_tools/satsync.py:965
#, python-format
msgid "Diffing package metadata (what's missing locally?): %s"
msgstr ""

#: ../satellite_tools/satsync.py:971 ../satellite_tools/satsync.py:1254
msgid "Diffing:    "
msgstr ""

#: ../satellite_tools/satsync.py:988
msgid "ERROR: incremental dump skipped"
msgstr ""

#: ../satellite_tools/satsync.py:1079
msgid "Downloading rpm packages"
msgstr ""

#: ../satellite_tools/satsync.py:1084
#, python-format
msgid "   Fetching any missing RPMs: %s (%s)"
msgstr ""

#: ../satellite_tools/satsync.py:1085 ../satellite_tools/satsync.py:1153
msgid "NONE MISSING"
msgstr ""

#: ../satellite_tools/satsync.py:1094
msgid "Processing rpm packages complete"
msgstr ""

#: ../satellite_tools/satsync.py:1121
msgid "Downloading package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1146
msgid "Downloading srpm packages"
msgstr ""

#: ../satellite_tools/satsync.py:1152
#, python-format
msgid "   Fetching any missing SRPMs: %s (%s)"
msgstr ""

#: ../satellite_tools/satsync.py:1249
#, python-format
msgid "Diffing source package metadata (what's missing locally?): %s"
msgstr ""

#: ../satellite_tools/satsync.py:1260
msgid "Downloading source package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1338 ../satellite_tools/satsync.py:2027
#, python-format
msgid "Unable to save file %s: %s"
msgstr ""

#. for
#. Retried a number of times and it still failed; log the
#. file as being failed and move on
#: ../satellite_tools/satsync.py:1345
#, python-format
msgid "Failed to fetch file %s"
msgstr ""

#: ../satellite_tools/satsync.py:1350
msgid "Downloading kickstartable trees metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1365
msgid "Downloading kickstartable trees files"
msgstr ""

#: ../satellite_tools/satsync.py:1504
#, python-format
msgid "Grabbing all patches for channel %s"
msgstr ""

#: ../satellite_tools/satsync.py:1554
msgid "Downloading patch data"
msgstr ""

#: ../satellite_tools/satsync.py:1556
msgid "Forcing download of all patch data for requested channels."
msgstr ""

#: ../satellite_tools/satsync.py:1571
msgid "Downloading patch data complete"
msgstr ""

#: ../satellite_tools/satsync.py:1576 ../satellite_tools/satsync.py:1597
msgid "Downloading:"
msgstr ""

#: ../satellite_tools/satsync.py:1579
msgid " - complete"
msgstr ""

#: ../satellite_tools/satsync.py:1624
msgid "Importing source package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1627
msgid "Importing package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1635
msgid "Importing:  "
msgstr ""

#. not in the cache
#: ../satellite_tools/satsync.py:1703
msgid ""
"Package Not Found in Cache, Clear the Cache "
"to                                  Regenerate it."
msgstr ""

#: ../satellite_tools/satsync.py:1709
msgid "Importing channel patches"
msgstr ""

#: ../satellite_tools/satsync.py:1714
#, python-format
msgid "Importing %s patches for channel %s."
msgstr ""

#. Incomplete configuration
#: ../satellite_tools/satsync.py:2113
msgid "ERROR: server.mount_point not set in the configuration file"
msgstr ""

#: ../satellite_tools/satsync.py:2117
#, python-format
msgid "ERROR: server.mount_point %s do not exist"
msgstr ""

#: ../satellite_tools/satsync.py:2122
#, python-format
msgid "ERROR: path under server.mount_point (%s)  do not exist"
msgstr ""

#: ../satellite_tools/satsync.py:2199
#, python-format
msgid "Commandline: %s"
msgstr ""

#: ../satellite_tools/satsync.py:2202
#, python-format
msgid ""
"DEBUG ONLY: max. batch-size for XML/database-import processing (1..%s).\"man "
"satellite-sync\" for more information."
msgstr ""

#: ../satellite_tools/satsync.py:2205
msgid "alternative SSL CA Cert (fullpath to cert file)"
msgstr ""

#: ../satellite_tools/satsync.py:2207
msgid "process data for this channel only"
msgstr ""

#: ../satellite_tools/satsync.py:2209
msgid ""
"disk dump will be considered to be a full export; see \"man satellite-sync\" "
"for more information."
msgstr ""

#: ../satellite_tools/satsync.py:2212
msgid "existing custom channels will also be synced (unless -c is used)"
msgstr ""

#: ../satellite_tools/satsync.py:2214
#, python-format
msgid ""
"override debug level set in /etc/rhn/rhn.conf (which is currently set at %s)."
msgstr ""

#: ../satellite_tools/satsync.py:2216
#, python-format
msgid "requested version of XML dump (default: %s)"
msgstr ""

#: ../satellite_tools/satsync.py:2218
msgid "e-mail a report of what was synced/imported"
msgstr ""

#: ../satellite_tools/satsync.py:2220
msgid "forcibly process all (not a diff of) patch metadata"
msgstr ""

#: ../satellite_tools/satsync.py:2222
msgid "Do not use an http proxy under any circumstances."
msgstr ""

#: ../satellite_tools/satsync.py:2224
msgid "alternative http proxy (hostname:port)"
msgstr ""

#: ../satellite_tools/satsync.py:2226
msgid "alternative http proxy username"
msgstr ""

#: ../satellite_tools/satsync.py:2228
msgid "alternative http proxy password"
msgstr ""

#: ../satellite_tools/satsync.py:2230
msgid "parent SUSE Manager to import content from"
msgstr ""

#: ../satellite_tools/satsync.py:2232
msgid "list all available channels and exit"
msgstr ""

#: ../satellite_tools/satsync.py:2234
msgid "help on all error codes mgr-inter-sync returns"
msgstr ""

#: ../satellite_tools/satsync.py:2236
msgid "source mount point for import - disk update only"
msgstr ""

#: ../satellite_tools/satsync.py:2238
msgid "do not process patch data"
msgstr ""

#: ../satellite_tools/satsync.py:2240
msgid "do not process kickstart data (provisioning only)"
msgstr ""

#: ../satellite_tools/satsync.py:2242
msgid "do not process full package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:2244
msgid "do not download, or process any RPMs"
msgstr ""

#: ../satellite_tools/satsync.py:2246
msgid "turn off SSL (not recommended)"
msgstr ""

#: ../satellite_tools/satsync.py:2248
msgid "org to which the sync imports data. defaults to the admin account"
msgstr ""

#: ../satellite_tools/satsync.py:2250
msgid "print the configuration and exit"
msgstr ""

#: ../satellite_tools/satsync.py:2252
msgid "alternative server with which to connect (hostname)"
msgstr ""

#: ../satellite_tools/satsync.py:2254
msgid "synchronize to this step (man satellite-sync for more info)"
msgstr ""

#: ../satellite_tools/satsync.py:2256
msgid "write complete data to tempfile before streaming to remainder of app"
msgstr ""

#: ../satellite_tools/satsync.py:2258
msgid "DEBUG ONLY: alternative path to digital system id"
msgstr ""

#: ../satellite_tools/satsync.py:2260
msgid "alternative email address(es) for sync output (--email option)"
msgstr ""

#: ../satellite_tools/satsync.py:2262
msgid "do not remove rpms when importing from local dump"
msgstr ""

#: ../satellite_tools/satsync.py:2264
msgid ""
"the fully qualified domain name of the master Satellite. Valid with --mount-"
"point only. Required if you want to import org data and channel permissions."
msgstr ""

#: ../satellite_tools/satsync.py:2274
#, python-format
msgid "ERROR: these arguments make no sense in this context (try --help): %s"
msgstr ""

#. An SQL error is fatal... crash and burn
#: ../satellite_tools/satsync.py:2286
#, python-format
msgid "ERROR: Can't connect to the database: %s"
msgstr ""

#: ../satellite_tools/satsync.py:2287
msgid "ERROR: Check if your database is running."
msgstr ""

#: ../satellite_tools/satsync.py:2322
#, python-format
msgid "ERROR: --debug-level takes an in integer value within the range %s."
msgstr ""

#: ../satellite_tools/satsync.py:2324
msgid "  0  - little logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2325
msgid "  1  - minimal logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2326
msgid "  2  - normal level of logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2327
msgid "  3  - lots of logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2328
msgid "  4+ - excessive logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2341
msgid "ERROR: The --master option is only valid with the --mount-point option"
msgstr ""

#: ../satellite_tools/satsync.py:2351
#, python-format
msgid "ERROR: Unable to lookup Org Id %s"
msgstr ""

#: ../satellite_tools/satsync.py:2360
msgid ""
"WARNING: --list-channels option overrides any --step option. --step ignored."
msgstr ""

#: ../satellite_tools/satsync.py:2375
#, python-format
msgid ""
"ERROR: '%s' is not a valid step. See 'man mgr-inter-sync' for more detail."
msgstr ""

#: ../satellite_tools/satsync.py:2407
msgid ""
"ERROR: No channels currently imported; try mgr-inter-sync --list-channels; "
"then mgr-inter-sync -c chn0 -c chn1..."
msgstr ""

#. int(None) --> TypeError
#. int('a')  --> ValueError
#: ../satellite_tools/satsync.py:2457 ../satellite_tools/satsync.py:2461
msgid "ERROR: --batch-size must have a value within the range: 1..50"
msgstr ""

#: ../satellite_tools/satsync.py:2469
#, python-format
msgid "ERROR: no such directory %s"
msgstr ""

#: ../satellite_tools/satsync.py:2474
msgid "Error Codes: Returned codes means:"
msgstr ""

#: ../satellite_tools/satsync.py:2475
msgid " -1  - Could not lock file or KeyboardInterrupt or SystemExit"
msgstr ""

#: ../satellite_tools/satsync.py:2476
msgid "  0  - User interrupted or intentional exit"
msgstr ""

#: ../satellite_tools/satsync.py:2477
msgid "  1  - attempting to run more than one instance of mgr-inter-sync."
msgstr ""

#: ../satellite_tools/satsync.py:2478
msgid "  2  - Unable to find synchronization tools."
msgstr ""

#: ../satellite_tools/satsync.py:2479
msgid "  3  - a general socket exception occurred"
msgstr ""

#: ../satellite_tools/satsync.py:2480
msgid "  4  - an SSL error occurred. Recheck your SSL settings."
msgstr ""

#: ../satellite_tools/satsync.py:2481
msgid "  5  - ISS error"
msgstr ""

#: ../satellite_tools/satsync.py:2482
msgid "  6  - unhandled exception occurred"
msgstr ""

#: ../satellite_tools/satsync.py:2483
msgid "  7  - unknown sync error"
msgstr ""

#: ../satellite_tools/satsync.py:2484
msgid "  8  - ERROR: must be root to execute"
msgstr ""

#: ../satellite_tools/satsync.py:2485
msgid "  9  - rpclib fault during synchronization init"
msgstr ""

#: ../satellite_tools/satsync.py:2486
msgid "  10 - synchronization init error"
msgstr ""

#: ../satellite_tools/satsync.py:2487
msgid "  11 - Error parsing XML stream"
msgstr ""

#: ../satellite_tools/satsync.py:2488
msgid "  12 - Channel do not exist"
msgstr ""

#: ../satellite_tools/satsync.py:2489
msgid "  13 - SQL error during importing package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:2490
msgid "  14 - SQL error during linking channel packages"
msgstr ""

#: ../satellite_tools/satsync.py:2491
msgid "  15 - SQL error during xml processing"
msgstr ""

#: ../satellite_tools/satsync.py:2492
msgid "  16 - server.mount_point not set in the configuration file"
msgstr ""

#: ../satellite_tools/satsync.py:2493
msgid ""
"  17 - SQL error during retrieving the channels already imported in the SUSE "
"Manager database"
msgstr ""

#: ../satellite_tools/satsync.py:2494
msgid "  18 - Wrong db connection string in rhn.conf"
msgstr ""

#: ../satellite_tools/satsync.py:2495
msgid "  19 - Bad arguments"
msgstr ""

#: ../satellite_tools/satsync.py:2496
msgid "  20 - Could not connect to db."
msgstr ""

#: ../satellite_tools/satsync.py:2497
msgid "  21 - Bad debug level"
msgstr ""

#: ../satellite_tools/satsync.py:2498
msgid "  22 - Not valid step"
msgstr ""

#: ../satellite_tools/satsync.py:2499
msgid "  24 - no such file"
msgstr ""

#: ../satellite_tools/satsync.py:2500
msgid "  25 - no such directory"
msgstr ""

#: ../satellite_tools/satsync.py:2501
msgid "  26 - mount_point does not exist"
msgstr ""

#: ../satellite_tools/satsync.py:2502
msgid "  27 - No such org"
msgstr ""

#: ../satellite_tools/satsync.py:2503
msgid "  28 - error: --master is only valid with --mount-point"
msgstr ""

#: ../satellite_tools/satsync.py:2510
#, python-format
msgid "ERROR: unknown dump version, try one of %s"
msgstr ""
 0707010000007B000081B40000000000000000000000016290A0C10000B621000000000000000000000000000000000000001C00000000spacewalk-backend/po/mai.po   # SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
#
# Translators:
msgid ""
msgstr ""
"Project-Id-Version: Spacewalk\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-10-16 13:34+0200\n"
"PO-Revision-Date: 2011-03-04 16:08+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Maithili (http://www.transifex.com/projects/p/fedora/language/"
"mai/)\n"
"Language: mai\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"

#: ../server/apacheAuth.py:66
#, python-format
msgid "incomplete proxy authentication token: %s"
msgstr ""

#: ../server/apacheAuth.py:84
#, python-format
msgid "Sent proxy signature %s does not match ours %s."
msgstr ""

#: ../server/apacheAuth.py:119
msgid "declined proxy authentication"
msgstr ""

#: ../server/apacheRequest.py:59
#, python-format
msgid "Invalid request received (%s)."
msgstr ""

#: ../server/apacheRequest.py:120
#, python-format
msgid ""
"IMPORTANT MESSAGE FOLLOWS:\n"
"%s"
msgstr ""

#: ../server/apacheRequest.py:149
#, python-format
msgid ""
"While running '%s': caught\n"
"%s : %s\n"
msgstr ""

#: ../server/apacheRequest.py:606
#, python-format
msgid "Invalid URI %s"
msgstr ""

#: ../server/configFilesHandler.py:129 ../server/handlers/app/packages.py:192
#: ../server/handlers/xmlrpc/registration.py:215
#: ../server/handlers/xmlrpc/registration.py:1168
#: ../server/handlers/xmlrpc/registration.py:1307
#, python-format
msgid ""
"\n"
"                   %s Account has been deactivated on this server.\n"
"                   Please contact your Org administrator for more help."
msgstr ""

#: ../server/handlers/applet/applet.py:78
#, python-brace-format
msgid "Your system was not found in the {PRODUCT_NAME} database"
msgstr ""

#: ../server/handlers/sat/auth.py:45
msgid "ISS is disabled on this server."
msgstr ""

#: ../server/handlers/sat/auth.py:50
#, python-format
msgid "Server \"%s\" is not enabled for ISS."
msgstr ""

#: ../server/handlers/xmlrpc/errata.py:64
#, python-format
msgid "Expected a package name, not: %s"
msgstr ""

#: ../server/handlers/xmlrpc/errata.py:115
#, python-format
msgid "Expected a package, not: %s"
msgstr ""

#: ../server/handlers/xmlrpc/proxy.py:65
#, python-format
msgid "SUSE Manager Proxy service not enabled for server profile: \"%s\""
msgstr ""

#: ../server/handlers/xmlrpc/proxy.py:85
msgid "Invalid session key"
msgstr ""

#: ../server/handlers/xmlrpc/proxy.py:93
msgid "This server ID no longer exists"
msgstr ""

#: ../server/handlers/xmlrpc/queue.py:433
#, python-format
msgid "Invalid action value type %s (%s)"
msgstr ""

#: ../server/handlers/xmlrpc/queue.py:464
#, python-format
msgid "Action %s does not belong to server %s"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:194
msgid "Required data missing"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:198
msgid "Required members missing"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:207
msgid "Attempt to register a system to an invalid username"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:839
msgid "Invalid system release version requested"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1063
msgid ""
"Unable to find a valid network interface, both ipaddr and ip6addr not found."
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1115
#, python-brace-format
msgid "{PRODUCT_NAME} Welcome Message"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1125
msgid "Privacy Statement"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1146
msgid "Expected a dictionary as a product argument"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1374
#, python-format
msgid "Invalid value '%s' for %s (%s)"
msgstr ""

#: ../server/handlers/xmlrpc/scap.py:104
msgid "Invalid system_id/action_id pair."
msgstr ""

#: ../server/handlers/xmlrpc/up2date.py:233
#, python-format
msgid "Invalid value %s (%s)"
msgstr ""

#: ../server/importlib/userAuth.py:98
msgid "You are not authorized to manage packages in the null org"
msgstr ""

#: ../server/importlib/userAuth.py:103
#, python-format
msgid "You are not allowed to manage packages in the %s org"
msgstr ""

#: ../server/importlib/userAuth.py:121
msgid "You are not allowed to perform administrative tasks"
msgstr ""

#: ../server/importlib/userAuth.py:144
#, python-format
msgid ""
"You are not allowed to manage channel %s, or that channel does not exist"
msgstr ""

#: ../server/importlib/userAuth.py:204
#, python-format
msgid ""
"\n"
"               %s Account has been deactivated on this server.\n"
"               Please contact your Org administrator for more help."
msgstr ""

#: ../server/rhnChannel.py:1992
#, python-format
msgid ""
"Your account does not have access to any channels matching "
"(release='%(release)s', arch='%(arch)s')%(www_activation)s"
msgstr ""

#: ../server/rhnChannel.py:2002
msgid ""
"\n"
"If you have a registration number, please register with it first at http://"
"www.redhat.com/apps/activate/ and then try again.\n"
"\n"
msgstr ""

#: ../server/rhnChannel.py:2012
#, python-format
msgid "Insufficient subscription permissions for release (%s, %s"
msgstr ""

#. Various messages that can be reused
#.
#. bretm 02/07/2007 -- when we have better old-client documentation, probably
#. will be safe to get rid of all this crap
#: ../server/rhnChannel.py:2276 ../server/rhnChannel.py:2287
#: ../server/rhnChannel.py:2302
msgid "System Registered but Inactive"
msgstr ""

#: ../server/rhnChannel.py:2277
#, python-format
msgid ""
"\n"
"Invalid Architecture and OS release combination (%s, %s).\n"
"Your system has been registered, but will not receive updates\n"
"because it is not subscribed to a channel. If you have not yet\n"
"activated your product for service, please visit our website at:\n"
"\n"
"     http://www.redhat.com/apps/activate/\n"
"\n"
"...to activate your product."
msgstr ""

#: ../server/rhnChannel.py:2288
#, python-format
msgid ""
"\n"
"Invalid Architecture and OS release combination (%s, %s).\n"
"Your system has been registered, but will not receive updates\n"
"because it could not be subscribed to a base channel.\n"
"Please contact your organization administrator for assistance.\n"
msgstr ""

#: ../server/rhnChannel.py:2295
#, python-format
msgid ""
"\n"
"  This system has been successfully registered, but is not yet entitled\n"
"  to service.  To entitle this system to service, login to the web site at:\n"
"\n"
"  %(entitlement_url)s\n"
msgstr ""

#: ../server/rhnChannel.py:2303
#, python-format
msgid ""
"\n"
"  This system has been successfully registered, but no service entitlements\n"
"  were available.  To entitle this system to service, login to the web site "
"at:\n"
"\n"
"  %(entitlement_url)s\n"
msgstr ""

#: ../server/rhnHandler.py:62
msgid "Please run rhn_register as root on this client"
msgstr ""

#: ../server/rhnHandler.py:75
#, python-format
msgid "Service not enabled for system profile: \"%s\""
msgstr ""

#: ../server/rhnPackage.py:49 ../server/rhnPackage.py:87
#: ../server/rhnPackage.py:107 ../server/rhnPackage.py:158
#, python-format
msgid "Invalid RPM package %s requested"
msgstr ""

#: ../server/rhnPackage.py:112
msgid "Package not found"
msgstr ""

#: ../server/rhnServer/server_class.py:97
#, python-format
msgid "Architecture `%s' is not supported"
msgstr ""

#: ../server/rhnServer/server_token.py:78
#, python-format
msgid "Token `%s' has more than one base channel assigned"
msgstr ""

#: ../server/rhnServer/server_token.py:80
msgid "Conflicting base channels"
msgstr ""

#: ../server/rhnServer/server_token.py:190
#, python-format
msgid "Failed to add server to group %s"
msgstr ""

#: ../server/rhnServer/server_token.py:503
#, python-format
msgid "Maximum usage count of %s reached"
msgstr ""

#: ../server/rhnServer/server_token.py:744
msgid ""
"Stacking of re-registration tokens with different base entitlements is not "
"supported"
msgstr ""

#: ../server/rhnServer/server_token.py:811
#, python-format
msgid "Could not find token '%s'"
msgstr ""

#. Cannot use activation keys from different orgs
#: ../server/rhnServer/server_token.py:843
msgid "Tokens from mismatching orgs"
msgstr ""

#. Two tokens with different kickstart sessions
#: ../server/rhnServer/server_token.py:853
msgid "Kickstart session mismatch"
msgstr ""

#: ../server/rhnServer/server_token.py:877
msgid "Stacking of re-registration tokens is not supported"
msgstr ""

#: ../server/rhnUser.py:289 ../server/rhnUser.py:292
msgid "Invalid username/password combination"
msgstr ""

#. nope, not reserved either
#: ../server/rhnUser.py:467
#, python-format
msgid "Username `%s' has not been reserved"
msgstr ""

#. New accounts have to specify an e-mail address
#: ../server/rhnUser.py:473
msgid "E-mail address not specified"
msgstr ""

#: ../server/rhnUser.py:509
#, python-format
msgid "username should be at least %d characters"
msgstr ""

#: ../server/rhnUser.py:512
#, python-format
msgid "username should be less than %d characters"
msgstr ""

#: ../server/rhnUser.py:523
#, python-format
msgid "username = `%s', invalid character `%s'"
msgstr ""

#: ../server/rhnUser.py:542
#, python-format
msgid "Please limit your e-mail address to %s chars"
msgstr ""

#: ../server/rhnUser.py:623
#, python-format
msgid "password must be at least %d characters"
msgstr ""

#: ../server/rhnUser.py:626
#, python-format
msgid "Password must be shorter than %d characters"
msgstr ""

#: ../server/rhnUser.py:644
#, python-format
msgid "password contains character `%s'"
msgstr ""

#: ../server/rhnUser.py:651
#, python-format
msgid "username should be at least %d characters long"
msgstr ""

#: ../server/rhnUser.py:662
#, python-format
msgid "Cannot register usernames ending with %s"
msgstr ""

#. 0-999: Red Hat client/client-like interaction errors:
#: ../common/rhnException.py:53
msgid "This does not appear to be a valid username."
msgstr ""

#: ../common/rhnException.py:54
msgid "Invalid username and password combination."
msgstr ""

#: ../common/rhnException.py:55
msgid "This login is already taken, or the password is incorrect."
msgstr ""

#: ../common/rhnException.py:56
msgid "Permission denied."
msgstr ""

#: ../common/rhnException.py:57
msgid "Object not found."
msgstr ""

#: ../common/rhnException.py:58
msgid "Invalid System Digital ID."
msgstr ""

#: ../common/rhnException.py:59
msgid "Invalid System Credentials."
msgstr ""

#: ../common/rhnException.py:60
msgid "Could not retrieve user data from database."
msgstr ""

#: ../common/rhnException.py:61
msgid "Valid username required."
msgstr ""

#: ../common/rhnException.py:62
msgid "Valid password required."
msgstr ""

#: ../common/rhnException.py:63
msgid "Minimum username length violation."
msgstr ""

#: ../common/rhnException.py:64
msgid "Minimum password length violation."
msgstr ""

#: ../common/rhnException.py:65
msgid "The username contains invalid characters."
msgstr ""

#: ../common/rhnException.py:66
msgid "File not found."
msgstr ""

#: ../common/rhnException.py:67
msgid "Architecture and OS version combination is not supported."
msgstr ""

#: ../common/rhnException.py:68
msgid "Could not retrieve system data from database."
msgstr ""

#: ../common/rhnException.py:69
msgid "Invalid arguments passed to function."
msgstr ""

#: ../common/rhnException.py:70
msgid "Unable to retrieve requested entry."
msgstr ""

#: ../common/rhnException.py:71
msgid "Could not update database entry."
msgstr ""

#: ../common/rhnException.py:72
msgid "Unsupported server architecture."
msgstr ""

#: ../common/rhnException.py:73
#, python-format
msgid ""
"\n"
"     The anonymous server functionality is no longer available.\n"
"\n"
"     Please re-register this system by running mgr_register as root.\n"
"     Please visit https://%(hostname)s/rhn/systems/SystemEntitlements.do\n"
"     or login at https://%(hostname)s, and from the \"Overview\" tab,\n"
"     select \"Subscription Management\" to enable the service for this "
"system.\n"
"     "
msgstr ""

#: ../common/rhnException.py:81
msgid "Record not available in the database."
msgstr ""

#: ../common/rhnException.py:82
msgid "Invalid value for entry."
msgstr ""

#: ../common/rhnException.py:83
#, python-format
msgid ""
"\n"
"     This system does not have a valid entitlement for SUSE Manager.\n"
"     Please visit https://%(hostname)s/rhn/systems/SystemEntitlements.do\n"
"     or login at https://%(hostname)s, and from the \"Overview\" tab,\n"
"     select \"Subscription Management\" to enable the service for this "
"system.\n"
"     "
msgstr ""

#: ../common/rhnException.py:89
msgid "Channel error"
msgstr ""

#: ../common/rhnException.py:90
msgid "Client session token is invalid."
msgstr ""

#: ../common/rhnException.py:91
msgid "Client session token has expired."
msgstr ""

#: ../common/rhnException.py:92
msgid "You are not authorized to retrieve the requested object."
msgstr ""

#: ../common/rhnException.py:93
msgid "Invalid action"
msgstr ""

#: ../common/rhnException.py:94
msgid "You are not allowed to perform administrative tasks on this system."
msgstr ""

#: ../common/rhnException.py:96
msgid "The system is already subscribed to the specified channel."
msgstr ""

#: ../common/rhnException.py:97
msgid "The system is not currently subscribed to the specified channel."
msgstr ""

#: ../common/rhnException.py:98
msgid "The specified channel does not exist."
msgstr ""

#: ../common/rhnException.py:99
msgid "Invalid channel version."
msgstr ""

#: ../common/rhnException.py:100
msgid ""
"\n"
"     User group membership limits exceeded.\n"
"\n"
"     The current settings for your account do not allow you to add another\n"
"     user account. Please check with the organization administrator for "
"your\n"
"     account if the maximum number of users allowed to subscribe to server "
"needs\n"
"     to be changed.\n"
"     "
msgstr ""

#: ../common/rhnException.py:108
msgid ""
"\n"
"     System group membership limits exceeded.\n"
"\n"
"     The current settings for your account do not allow you to add another\n"
"     system profile. Please check with the organization administrator for "
"your\n"
"     account for modifying the maximum number of system profiles that can "
"be\n"
"     subscribed to your account.\n"
"     "
msgstr ""

#: ../common/rhnException.py:116
msgid ""
"\n"
"     Invalid architecture.\n"
"\n"
"     The architecture of the package is not supported by\n"
"     "
msgstr ""

#: ../common/rhnException.py:121
msgid "Invalid RPM header"
msgstr ""

#: ../common/rhnException.py:122
msgid ""
"\n"
"    This system is already registered as a Salt Minion. If you want to "
"register it as a traditional client\n"
"    please delete it first via the web UI or API and then register it using "
"the traditional tools.\n"
"    "
msgstr ""

#. For the uploading tools
#: ../common/rhnException.py:127
msgid "Invalid information uploaded to the server"
msgstr ""

#: ../common/rhnException.py:128
msgid "Error uploading network interfaces configuration."
msgstr ""

#: ../common/rhnException.py:129
msgid ""
"\n"
"     Package Upload Failed due to uniqueness constraint violation.\n"
"     Make sure the package does not have any duplicate dependencies or\n"
"     does not already exists on the server\n"
"     "
msgstr ""

#: ../common/rhnException.py:134
msgid ""
"\n"
"     The --force rhnpush option is disabled on this server.\n"
"     Please contact your SUSE Manager administrator for more help.\n"
"     "
msgstr ""

#. 60-70: token errors
#: ../common/rhnException.py:140
msgid ""
"\n"
"     The activation token specified could not be found on the server.\n"
"     Please retry with a valid key.\n"
"     "
msgstr ""

#: ../common/rhnException.py:144
msgid "Too many systems registered using this registration token"
msgstr ""

#: ../common/rhnException.py:145
msgid "Token contains invalid, obsoleted or insufficient settings"
msgstr ""

#: ../common/rhnException.py:146
msgid "Conflicting activation tokens"
msgstr ""

#. 70-80: channel subscription errors
#: ../common/rhnException.py:149
msgid ""
"\n"
"     No matching base channel found for your system.\n"
"     "
msgstr ""

#: ../common/rhnException.py:152
msgid ""
"\n"
"     You do not have subscription permission to the designated channel.\n"
"     Please refer to your organization's channel or organization\n"
"     administrators for further details.\n"
"     "
msgstr ""

#: ../common/rhnException.py:157
msgid "You can not unsubscribe from base channel."
msgstr ""

#: ../common/rhnException.py:158
msgid "SUSE Manager or Proxy channel can not be subscribed."
msgstr ""

#. 80-90: server group errors
#: ../common/rhnException.py:161
msgid "There was an error while trying to join the system to its groups"
msgstr ""

#. 90-100: entitlement errors
#: ../common/rhnException.py:164
msgid "Unable to entitle system"
msgstr ""

#. 100-109: e-mail and uuid related faults
#: ../common/rhnException.py:167
msgid "Maximum e-mail length violation."
msgstr ""

#: ../common/rhnException.py:168
msgid "This system has been previously registered."
msgstr ""

#: ../common/rhnException.py:169
msgid "Invalid username"
msgstr ""

#. 140-159 applet errors
#: ../common/rhnException.py:172
msgid "Unable to look up server"
msgstr ""

#. 160-179: OSAD errors
#: ../common/rhnException.py:175
msgid "Required argument is missing"
msgstr ""

#. 600-699: RHEL5+ EN errors
#: ../common/rhnException.py:178
msgid "No entitlement information tied to hardware"
msgstr ""

#: ../common/rhnException.py:179
msgid "Installation number is not entitling"
msgstr ""

#. 700-799: Additional user input verification errors.
#: ../common/rhnException.py:182
msgid "Maximum username length violation"
msgstr ""

#: ../common/rhnException.py:183
msgid "Maximum password length violation"
msgstr ""

#: ../common/rhnException.py:184
msgid "This user has read only API access. Action denied."
msgstr ""

#: ../common/rhnException.py:186
msgid "System Name cannot be less than 1 character"
msgstr ""

#. 1000-1999: Proxy specific errors:
#. issued by a Proxy to the client
#: ../common/rhnException.py:190
msgid "SUSE Manager Proxy error."
msgstr ""

#: ../common/rhnException.py:191
msgid "SUSE Manager Proxy unable to login."
msgstr ""

#. issued by a SUSE Manager Server/Satellite to the proxy
#: ../common/rhnException.py:193
msgid ""
"\n"
"     SUSE Manager Proxy system ID does not match a Spacewalk Proxy Server\n"
"     in the database.\n"
"     "
msgstr ""

#: ../common/rhnException.py:197
msgid "SUSE Manager Proxy session token is invalid."
msgstr ""

#: ../common/rhnException.py:198
msgid "SUSE Manager Proxy session token has expired."
msgstr ""

#. 2000-2999: Red Hat Satellite specific errors:
#: ../common/rhnException.py:202
msgid ""
"\n"
"      user creation is not allowed via mgr_register;\n"
"     please contact your sysadmin to have your account created.\n"
"     "
msgstr ""

#: ../common/rhnException.py:206
msgid ""
"\n"
"     This SUSE Manager server is not allowed to use Inter Server Sync on "
"this server\n"
"     "
msgstr ""

#: ../common/rhnException.py:209
msgid ""
"\n"
"     Inter Server Sync is disabled on this SUSE Manager Server.\n"
"     "
msgstr ""

#. 3000-3999: XML dumper errors:
#: ../common/rhnException.py:214
msgid "Invalid datatype passed"
msgstr ""

#: ../common/rhnException.py:215
msgid "Unable to retrieve channel"
msgstr ""

#: ../common/rhnException.py:216
msgid "Unable to retrieve package"
msgstr ""

#: ../common/rhnException.py:217
msgid "Unable to retrieve erratum"
msgstr ""

#: ../common/rhnException.py:218
msgid "File is missing"
msgstr ""

#: ../common/rhnException.py:219
msgid "Function retrieval error"
msgstr ""

#: ../common/rhnException.py:220
msgid "Function execution error"
msgstr ""

#: ../common/rhnException.py:221
msgid "Missing version string"
msgstr ""

#: ../common/rhnException.py:222
msgid "Invalid version string"
msgstr ""

#: ../common/rhnException.py:223
msgid "Mismatching versions"
msgstr ""

#: ../common/rhnException.py:224
msgid "Invalid channel version"
msgstr ""

#: ../common/rhnException.py:225
msgid "No comps file for channel"
msgstr ""

#: ../common/rhnException.py:226
msgid "Unable to retrieve comps file"
msgstr ""

#. 4000 - 4999: config management errors
#: ../common/rhnException.py:229
msgid "Configuration action missing"
msgstr ""

#: ../common/rhnException.py:230
msgid "File too large"
msgstr ""

#: ../common/rhnException.py:231
msgid "File contains binary data"
msgstr ""

#: ../common/rhnException.py:232
msgid "Configuration channel is not empty"
msgstr ""

#: ../common/rhnException.py:233
msgid "Permission error"
msgstr ""

#: ../common/rhnException.py:234
msgid "Content missing for configuration file"
msgstr ""

#: ../common/rhnException.py:235
msgid "Template delimiters not specified"
msgstr ""

#: ../common/rhnException.py:236
msgid "Configuration channel does not exist"
msgstr ""

#: ../common/rhnException.py:237
msgid "Configuration channel already exists"
msgstr ""

#: ../common/rhnException.py:238
msgid "File missing from configuration channel"
msgstr ""

#: ../common/rhnException.py:239
msgid "Different revision of this file is uploaded"
msgstr ""

#: ../common/rhnException.py:240
msgid "File already uploaded to configuration channel"
msgstr ""

#: ../common/rhnException.py:241
msgid "File size exceeds remaining quota space"
msgstr ""

#: ../common/rhnException.py:242
msgid "Full path of file must be specified"
msgstr ""

#: ../common/rhnException.py:243
msgid "Invalid revision number"
msgstr ""

#: ../common/rhnException.py:244
msgid "Cannot compare files of different file type"
msgstr ""

#. 5000 - 5999: client content uploading errors
#. 5000 - 5099: crash reporting errors
#: ../common/rhnException.py:248
msgid "Crash information is invalid or incomplete"
msgstr ""

#: ../common/rhnException.py:249
msgid "Crash file information is invalid or incomplete"
msgstr ""

#: ../common/rhnException.py:250
msgid "Error composing crash directory path"
msgstr ""

#: ../common/rhnException.py:251
msgid "Error composing crash file path"
msgstr ""

#: ../common/rhnException.py:252 ../common/rhnException.py:259
msgid "Invalid content encoding"
msgstr ""

#: ../common/rhnException.py:253
msgid "Invalid crash name"
msgstr ""

#: ../common/rhnException.py:254
msgid "Crash reporting is disabled for this organization"
msgstr ""

#. 5100 - 5199: scap results reporting error
#: ../common/rhnException.py:256
msgid "SCAP results file transfer is invalid or incomplete"
msgstr ""

#: ../common/rhnException.py:257
msgid "Error composing directory path for detailed SCAP results"
msgstr ""

#: ../common/rhnException.py:258
msgid "Error composing file path for detailed SCAP results"
msgstr ""

#: ../common/rhnException.py:306
msgid ""
"\n"
"     An error has occurred while processing your request. If this problem\n"
"     persists please enter a bug report at scc.suse.com.\n"
"     If you choose to submit the bug report, please be sure to include\n"
"     details of what you were trying to do when this error occurred and\n"
"     details on how to reproduce this problem.\n"
msgstr ""

#: ../common/rhnException.py:358
#, python-format
msgid ""
"Error Message:\n"
"    %s\n"
msgstr ""

#: ../common/rhnException.py:360
#, python-format
msgid "Error Class Code: %s\n"
msgstr ""

#: ../common/rhnException.py:363
#, python-format
msgid "Error Class Info: %s\n"
msgstr ""

#: ../common/rhnException.py:365
#, python-format
msgid "Explanation: %s"
msgstr ""

#: ../common/rhnTB.py:205
#, python-format
msgid "ERROR: %s %s: %s"
msgstr ""

#: ../common/rhnTB.py:207
#, python-format
msgid "TRACEBACK: %s"
msgstr ""

#: ../satellite_tools/disk_dumper/iss.py:1294
#: ../satellite_tools/disk_dumper/iss.py:1298
#, python-format
msgid "format of %s should be at least YYYYMMDD.\n"
msgstr ""

#: ../satellite_tools/messages.py:26
#, python-format
msgid ""
"\n"
"ERROR: executing step %s. Error is:\n"
"%s\n"
msgstr ""

#: ../satellite_tools/messages.py:31
#, python-format
msgid ""
"\n"
"ERROR: there was a problem accessing the channel data from your temporary\n"
"       repository. Did you migrate all of the data from the channel ISOs\n"
"       do this directory? If so, please recheck the channels ISOs, ensure\n"
"       that you have them all, and then iteratively remount and repopulate\n"
"       the temporary repository (%s).\n"
msgstr ""

#: ../satellite_tools/messages.py:39
#, python-format
msgid ""
"\n"
"ERROR: there was a problem synchronizing the information.\n"
"       Error message: %s\n"
msgstr ""

#: ../satellite_tools/messages.py:44
#, python-format
msgid ""
"\n"
"ERROR: There was a problem communicating with the ISS Master.\n"
"       Depending on the specific error details, please review your "
"configuration,\n"
"       basic network connectivity, and/or name resolution, and try again.\n"
"       Error message: %s\n"
msgstr ""

#: ../satellite_tools/messages.py:51
#, python-format
msgid ""
"\n"
"ERROR: There was a problem communicating with the ISS Master.\n"
"       If the master satellite is older than v5.3, it does not have ISS "
"capability.\n"
"       Otherwise, depending on the specific error details, please review "
"your\n"
"       configuration, basic network connectivity, and/or name resolution, "
"and try again.\n"
"       Error message: %s\n"
msgstr ""

#: ../satellite_tools/messages.py:59
#, python-format
msgid ""
"\n"
"ERROR: a child-channel cannot be synced without its parent being synced as\n"
"       well. A parent needs to be either (a) previously synced or (b) "
"synced\n"
"       in tandem with the desired child-channel. Missing parents for this\n"
"       transaction:\n"
"       %s\n"
msgstr ""

#: ../satellite_tools/messages.py:67
#, python-format
msgid ""
"\n"
"ERROR: you are not entitled to sync a channel in this set of channels.\n"
"Please contact your SUSE Manager contact\n"
"%s"
msgstr ""

#: ../satellite_tools/messages.py:72
#, python-format
msgid "  ERROR: not enough free space (%s KB) on device."
msgstr ""

#: ../satellite_tools/messages.py:74
#, python-format
msgid "    %3d/%s Fetch successful: %s (%s bytes)"
msgstr ""

#: ../satellite_tools/messages.py:75
#, python-format
msgid "    Extinct package:  %s"
msgstr ""

#: ../satellite_tools/messages.py:76
#, python-format
msgid "   Total size: %s"
msgstr ""

#: ../satellite_tools/messages.py:77
#, python-format
msgid "      Downloaded %s of %s. Estimated remaining time: %s"
msgstr ""

#: ../satellite_tools/messages.py:78
#, python-format
msgid "    Fetch unsuccessful: %s"
msgstr ""

#: ../satellite_tools/messages.py:79
#, python-format
msgid "   RPM fetch summary: %s"
msgstr ""

#: ../satellite_tools/messages.py:80
#, python-format
msgid "       success: %d"
msgstr ""

#: ../satellite_tools/messages.py:81
#, python-format
msgid "       failed:  %d"
msgstr ""

#: ../satellite_tools/messages.py:82
#, python-format
msgid "       extinct: %d"
msgstr ""

#: ../satellite_tools/messages.py:84
#, python-format
msgid "   Retrieving / parsing *relevant* package metadata: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:85
#, python-format
msgid "   Retrieving / parsing errata data: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:86
#, python-format
msgid "   Retrieving / parsing kickstart data: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:87
#, python-format
msgid "   Retrieving / parsing kickstart tree files: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:88
#, python-format
msgid "   Importing *relevant* package metadata: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:89
msgid "   * WARNING: this may be a slow process."
msgstr ""

#: ../satellite_tools/messages.py:90
msgid "Linking packages to channels"
msgstr ""

#: ../satellite_tools/messages.py:91
#, python-format
msgid "   Importing *relevant* errata: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:92
msgid "   No new kickstartable tree to import"
msgstr ""

#: ../satellite_tools/messages.py:93
#, python-format
msgid "Importing kickstartable trees (%d)"
msgstr ""

#: ../satellite_tools/messages.py:94
#, python-format
msgid "Imported kickstartable trees (%d)"
msgstr ""

#: ../satellite_tools/reposync.py:111 ../satellite_tools/satsync.py:439
msgid "+++ sending log as an email +++"
msgstr ""

#: ../satellite_tools/reposync.py:114
#, python-format
msgid "%s sync. report from %s"
msgstr ""

#: ../satellite_tools/reposync.py:124 ../satellite_tools/satsync.py:449
msgid "+++ email requested, but there is nothing to send +++"
msgstr ""

#: ../satellite_tools/rhn_satellite_activate.py:198
#, python-format
msgid ""
"\"%s\" (specified in commandline)\n"
"could not be opened and read:\n"
"%s"
msgstr ""

#: ../satellite_tools/rhn_satellite_activate.py:205
#, python-format
msgid ""
"\"%s\" could not be opened\n"
"and/or written to:\n"
"%s"
msgstr ""

#: ../satellite_tools/satsync.py:258
#, python-format
msgid "No handler for step %s"
msgstr ""

#. Try one more time - this time it should be faster since
#. everything should be cached
#: ../satellite_tools/satsync.py:270
msgid "Environment changed, trying again..."
msgstr ""

#: ../satellite_tools/satsync.py:277
msgid "ERROR: Encountered IntegrityError: \n"
msgstr ""

#: ../satellite_tools/satsync.py:285
msgid "Repeated failures"
msgstr ""

#: ../satellite_tools/satsync.py:290
#, python-format
msgid ""
"    Import complete:\n"
"        Begin time: %s\n"
"        End time:   %s\n"
"        Elapsed:    %s\n"
"          "
msgstr ""

#: ../satellite_tools/satsync.py:311
msgid "hours"
msgstr ""

#: ../satellite_tools/satsync.py:311
msgid "minutes"
msgstr ""

#: ../satellite_tools/satsync.py:311
msgid "seconds"
msgstr ""

#: ../satellite_tools/satsync.py:357
msgid ""
"ERROR: The dump is missing package data, use --no-rpms to skip this step or "
"fix the content to include package data."
msgstr ""

#. the orgs() method doesn't exist; that's fine we just
#. won't sync the orgs
#: ../satellite_tools/satsync.py:404
msgid "The SUSE Manager master does not support syncing orgs data."
msgstr ""

#: ../satellite_tools/satsync.py:404
msgid "Skipping..."
msgstr ""

#: ../satellite_tools/satsync.py:442
#, python-format
msgid "SUSE Manager Inter Server sync. report from %s"
msgstr ""

#: ../satellite_tools/satsync.py:521
msgid " - file-system synchronization"
msgstr ""

#: ../satellite_tools/satsync.py:533 ../satellite_tools/satsync.py:541
msgid " - live synchronization"
msgstr ""

#: ../satellite_tools/satsync.py:534
#, python-brace-format
msgid ""
"ERROR: Live content synchronizing with RHN Classic Hosted is no longer "
"supported.\n"
"Please use the cdn-sync command instead unless you are attempting to sync "
"from another {PRODUCT_NAME} via Inter-Server-Sync (ISS), or from local "
"content on disk via Channel Dump ISOs."
msgstr ""

#: ../satellite_tools/satsync.py:542
#, python-format
msgid "   url: %s"
msgstr ""

#: ../satellite_tools/satsync.py:543
#, python-format
msgid "   debug/output level: %s"
msgstr ""

#: ../satellite_tools/satsync.py:553
msgid "ERROR: this server must be registered with SUSE Manager."
msgstr ""

#: ../satellite_tools/satsync.py:575
#, python-format
msgid "Retrieving / parsing %s data"
msgstr ""

#: ../satellite_tools/satsync.py:585 ../satellite_tools/satsync.py:600
msgid "*** SYSTEM INTERRUPT CALLED ***"
msgstr ""

#: ../satellite_tools/satsync.py:593
msgid "ERROR: fatal parser exception occurred "
msgstr ""

#: ../satellite_tools/satsync.py:594
#, python-format
msgid "(line: %s, col: %s msg: %s)"
msgstr ""

#: ../satellite_tools/satsync.py:598
#, python-format
msgid "ERROR: parser exception occurred: %s"
msgstr ""

#: ../satellite_tools/satsync.py:603
msgid "ERROR: exception (during parse) occurred: "
msgstr ""

#: ../satellite_tools/satsync.py:604
#, python-format
msgid ""
"   Encountered some errors with %s data (see logs (%s) for more information)"
msgstr ""

#: ../satellite_tools/satsync.py:606
#, python-format
msgid "   Encountered some errors with %s data:"
msgstr ""

#: ../satellite_tools/satsync.py:607
#, python-format
msgid "   ------- %s PARSE/IMPORT ERROR -------"
msgstr ""

#: ../satellite_tools/satsync.py:609
msgid "   ---------------------------------------"
msgstr ""

#: ../satellite_tools/satsync.py:612
#, python-format
msgid "%s data complete"
msgstr ""

#: ../satellite_tools/satsync.py:665
msgid "Retrieving / parsing channel data"
msgstr ""

#: ../satellite_tools/satsync.py:718
msgid "Channel data complete"
msgstr ""

#: ../satellite_tools/satsync.py:736
#, python-format
msgid "%10s import from %s"
msgstr ""

#: ../satellite_tools/satsync.py:739
#, python-format
msgid "%10s import from %s - %s"
msgstr ""

#: ../satellite_tools/satsync.py:743
#, python-format
msgid "%10s"
msgstr ""

#: ../satellite_tools/satsync.py:750
msgid "p"
msgstr ""

#: ../satellite_tools/satsync.py:752
msgid "."
msgstr ""

#: ../satellite_tools/satsync.py:758
msgid "   p = previously imported/synced channel"
msgstr ""

#: ../satellite_tools/satsync.py:759
msgid "   . = channel not yet imported/synced"
msgstr ""

#: ../satellite_tools/satsync.py:765
msgid "   e = channel no longer supported (end-of-service)"
msgstr ""

#: ../satellite_tools/satsync.py:767
msgid "   ? = channel label invalid --- typo?"
msgstr ""

#: ../satellite_tools/satsync.py:771
#, python-format
msgid "   %s:"
msgstr ""

#: ../satellite_tools/satsync.py:772
#, python-format
msgid "      %s %-40s %4s %s"
msgstr ""

#: ../satellite_tools/satsync.py:773
msgid "base-channels"
msgstr ""

#: ../satellite_tools/satsync.py:786 ../satellite_tools/satsync.py:1603
msgid "NONE RELEVANT"
msgstr ""

#: ../satellite_tools/satsync.py:808
msgid "end-of-service"
msgstr ""

#: ../satellite_tools/satsync.py:809
msgid "e"
msgstr ""

#: ../satellite_tools/satsync.py:815
msgid "   typos:"
msgstr ""

#: ../satellite_tools/satsync.py:816
msgid "?"
msgstr ""

#: ../satellite_tools/satsync.py:831
#, python-format
msgid "XXX: imported channels: %s"
msgstr ""

#: ../satellite_tools/satsync.py:832
#, python-format
msgid "XXX:   cached channels: %s"
msgstr ""

#: ../satellite_tools/satsync.py:837
msgid "XXX: list channels called"
msgstr ""

#: ../satellite_tools/satsync.py:855
msgid "ERROR: these channels either do not exist or are not available:"
msgstr ""

#: ../satellite_tools/satsync.py:859
#, python-format
msgid "       (to see a list of channel labels: %s --list-channels)"
msgstr ""

#: ../satellite_tools/satsync.py:904
#, python-format
msgid "   Retrieving / parsing short package metadata: %s (%s)"
msgstr ""

#: ../satellite_tools/satsync.py:965
#, python-format
msgid "Diffing package metadata (what's missing locally?): %s"
msgstr ""

#: ../satellite_tools/satsync.py:971 ../satellite_tools/satsync.py:1254
msgid "Diffing:    "
msgstr ""

#: ../satellite_tools/satsync.py:988
msgid "ERROR: incremental dump skipped"
msgstr ""

#: ../satellite_tools/satsync.py:1079
msgid "Downloading rpm packages"
msgstr ""

#: ../satellite_tools/satsync.py:1084
#, python-format
msgid "   Fetching any missing RPMs: %s (%s)"
msgstr ""

#: ../satellite_tools/satsync.py:1085 ../satellite_tools/satsync.py:1153
msgid "NONE MISSING"
msgstr ""

#: ../satellite_tools/satsync.py:1094
msgid "Processing rpm packages complete"
msgstr ""

#: ../satellite_tools/satsync.py:1121
msgid "Downloading package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1146
msgid "Downloading srpm packages"
msgstr ""

#: ../satellite_tools/satsync.py:1152
#, python-format
msgid "   Fetching any missing SRPMs: %s (%s)"
msgstr ""

#: ../satellite_tools/satsync.py:1249
#, python-format
msgid "Diffing source package metadata (what's missing locally?): %s"
msgstr ""

#: ../satellite_tools/satsync.py:1260
msgid "Downloading source package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1338 ../satellite_tools/satsync.py:2027
#, python-format
msgid "Unable to save file %s: %s"
msgstr ""

#. for
#. Retried a number of times and it still failed; log the
#. file as being failed and move on
#: ../satellite_tools/satsync.py:1345
#, python-format
msgid "Failed to fetch file %s"
msgstr ""

#: ../satellite_tools/satsync.py:1350
msgid "Downloading kickstartable trees metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1365
msgid "Downloading kickstartable trees files"
msgstr ""

#: ../satellite_tools/satsync.py:1504
#, python-format
msgid "Grabbing all patches for channel %s"
msgstr ""

#: ../satellite_tools/satsync.py:1554
msgid "Downloading patch data"
msgstr ""

#: ../satellite_tools/satsync.py:1556
msgid "Forcing download of all patch data for requested channels."
msgstr ""

#: ../satellite_tools/satsync.py:1571
msgid "Downloading patch data complete"
msgstr ""

#: ../satellite_tools/satsync.py:1576 ../satellite_tools/satsync.py:1597
msgid "Downloading:"
msgstr ""

#: ../satellite_tools/satsync.py:1579
msgid " - complete"
msgstr ""

#: ../satellite_tools/satsync.py:1624
msgid "Importing source package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1627
msgid "Importing package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1635
msgid "Importing:  "
msgstr ""

#. not in the cache
#: ../satellite_tools/satsync.py:1703
msgid ""
"Package Not Found in Cache, Clear the Cache "
"to                                  Regenerate it."
msgstr ""

#: ../satellite_tools/satsync.py:1709
msgid "Importing channel patches"
msgstr ""

#: ../satellite_tools/satsync.py:1714
#, python-format
msgid "Importing %s patches for channel %s."
msgstr ""

#. Incomplete configuration
#: ../satellite_tools/satsync.py:2113
msgid "ERROR: server.mount_point not set in the configuration file"
msgstr ""

#: ../satellite_tools/satsync.py:2117
#, python-format
msgid "ERROR: server.mount_point %s do not exist"
msgstr ""

#: ../satellite_tools/satsync.py:2122
#, python-format
msgid "ERROR: path under server.mount_point (%s)  do not exist"
msgstr ""

#: ../satellite_tools/satsync.py:2199
#, python-format
msgid "Commandline: %s"
msgstr ""

#: ../satellite_tools/satsync.py:2202
#, python-format
msgid ""
"DEBUG ONLY: max. batch-size for XML/database-import processing (1..%s).\"man "
"satellite-sync\" for more information."
msgstr ""

#: ../satellite_tools/satsync.py:2205
msgid "alternative SSL CA Cert (fullpath to cert file)"
msgstr ""

#: ../satellite_tools/satsync.py:2207
msgid "process data for this channel only"
msgstr ""

#: ../satellite_tools/satsync.py:2209
msgid ""
"disk dump will be considered to be a full export; see \"man satellite-sync\" "
"for more information."
msgstr ""

#: ../satellite_tools/satsync.py:2212
msgid "existing custom channels will also be synced (unless -c is used)"
msgstr ""

#: ../satellite_tools/satsync.py:2214
#, python-format
msgid ""
"override debug level set in /etc/rhn/rhn.conf (which is currently set at %s)."
msgstr ""

#: ../satellite_tools/satsync.py:2216
#, python-format
msgid "requested version of XML dump (default: %s)"
msgstr ""

#: ../satellite_tools/satsync.py:2218
msgid "e-mail a report of what was synced/imported"
msgstr ""

#: ../satellite_tools/satsync.py:2220
msgid "forcibly process all (not a diff of) patch metadata"
msgstr ""

#: ../satellite_tools/satsync.py:2222
msgid "Do not use an http proxy under any circumstances."
msgstr ""

#: ../satellite_tools/satsync.py:2224
msgid "alternative http proxy (hostname:port)"
msgstr ""

#: ../satellite_tools/satsync.py:2226
msgid "alternative http proxy username"
msgstr ""

#: ../satellite_tools/satsync.py:2228
msgid "alternative http proxy password"
msgstr ""

#: ../satellite_tools/satsync.py:2230
msgid "parent SUSE Manager to import content from"
msgstr ""

#: ../satellite_tools/satsync.py:2232
msgid "list all available channels and exit"
msgstr ""

#: ../satellite_tools/satsync.py:2234
msgid "help on all error codes mgr-inter-sync returns"
msgstr ""

#: ../satellite_tools/satsync.py:2236
msgid "source mount point for import - disk update only"
msgstr ""

#: ../satellite_tools/satsync.py:2238
msgid "do not process patch data"
msgstr ""

#: ../satellite_tools/satsync.py:2240
msgid "do not process kickstart data (provisioning only)"
msgstr ""

#: ../satellite_tools/satsync.py:2242
msgid "do not process full package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:2244
msgid "do not download, or process any RPMs"
msgstr ""

#: ../satellite_tools/satsync.py:2246
msgid "turn off SSL (not recommended)"
msgstr ""

#: ../satellite_tools/satsync.py:2248
msgid "org to which the sync imports data. defaults to the admin account"
msgstr ""

#: ../satellite_tools/satsync.py:2250
msgid "print the configuration and exit"
msgstr ""

#: ../satellite_tools/satsync.py:2252
msgid "alternative server with which to connect (hostname)"
msgstr ""

#: ../satellite_tools/satsync.py:2254
msgid "synchronize to this step (man satellite-sync for more info)"
msgstr ""

#: ../satellite_tools/satsync.py:2256
msgid "write complete data to tempfile before streaming to remainder of app"
msgstr ""

#: ../satellite_tools/satsync.py:2258
msgid "DEBUG ONLY: alternative path to digital system id"
msgstr ""

#: ../satellite_tools/satsync.py:2260
msgid "alternative email address(es) for sync output (--email option)"
msgstr ""

#: ../satellite_tools/satsync.py:2262
msgid "do not remove rpms when importing from local dump"
msgstr ""

#: ../satellite_tools/satsync.py:2264
msgid ""
"the fully qualified domain name of the master Satellite. Valid with --mount-"
"point only. Required if you want to import org data and channel permissions."
msgstr ""

#: ../satellite_tools/satsync.py:2274
#, python-format
msgid "ERROR: these arguments make no sense in this context (try --help): %s"
msgstr ""

#. An SQL error is fatal... crash and burn
#: ../satellite_tools/satsync.py:2286
#, python-format
msgid "ERROR: Can't connect to the database: %s"
msgstr ""

#: ../satellite_tools/satsync.py:2287
msgid "ERROR: Check if your database is running."
msgstr ""

#: ../satellite_tools/satsync.py:2322
#, python-format
msgid "ERROR: --debug-level takes an in integer value within the range %s."
msgstr ""

#: ../satellite_tools/satsync.py:2324
msgid "  0  - little logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2325
msgid "  1  - minimal logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2326
msgid "  2  - normal level of logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2327
msgid "  3  - lots of logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2328
msgid "  4+ - excessive logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2341
msgid "ERROR: The --master option is only valid with the --mount-point option"
msgstr ""

#: ../satellite_tools/satsync.py:2351
#, python-format
msgid "ERROR: Unable to lookup Org Id %s"
msgstr ""

#: ../satellite_tools/satsync.py:2360
msgid ""
"WARNING: --list-channels option overrides any --step option. --step ignored."
msgstr ""

#: ../satellite_tools/satsync.py:2375
#, python-format
msgid ""
"ERROR: '%s' is not a valid step. See 'man mgr-inter-sync' for more detail."
msgstr ""

#: ../satellite_tools/satsync.py:2407
msgid ""
"ERROR: No channels currently imported; try mgr-inter-sync --list-channels; "
"then mgr-inter-sync -c chn0 -c chn1..."
msgstr ""

#. int(None) --> TypeError
#. int('a')  --> ValueError
#: ../satellite_tools/satsync.py:2457 ../satellite_tools/satsync.py:2461
msgid "ERROR: --batch-size must have a value within the range: 1..50"
msgstr ""

#: ../satellite_tools/satsync.py:2469
#, python-format
msgid "ERROR: no such directory %s"
msgstr ""

#: ../satellite_tools/satsync.py:2474
msgid "Error Codes: Returned codes means:"
msgstr ""

#: ../satellite_tools/satsync.py:2475
msgid " -1  - Could not lock file or KeyboardInterrupt or SystemExit"
msgstr ""

#: ../satellite_tools/satsync.py:2476
msgid "  0  - User interrupted or intentional exit"
msgstr ""

#: ../satellite_tools/satsync.py:2477
msgid "  1  - attempting to run more than one instance of mgr-inter-sync."
msgstr ""

#: ../satellite_tools/satsync.py:2478
msgid "  2  - Unable to find synchronization tools."
msgstr ""

#: ../satellite_tools/satsync.py:2479
msgid "  3  - a general socket exception occurred"
msgstr ""

#: ../satellite_tools/satsync.py:2480
msgid "  4  - an SSL error occurred. Recheck your SSL settings."
msgstr ""

#: ../satellite_tools/satsync.py:2481
msgid "  5  - ISS error"
msgstr ""

#: ../satellite_tools/satsync.py:2482
msgid "  6  - unhandled exception occurred"
msgstr ""

#: ../satellite_tools/satsync.py:2483
msgid "  7  - unknown sync error"
msgstr ""

#: ../satellite_tools/satsync.py:2484
msgid "  8  - ERROR: must be root to execute"
msgstr ""

#: ../satellite_tools/satsync.py:2485
msgid "  9  - rpclib fault during synchronization init"
msgstr ""

#: ../satellite_tools/satsync.py:2486
msgid "  10 - synchronization init error"
msgstr ""

#: ../satellite_tools/satsync.py:2487
msgid "  11 - Error parsing XML stream"
msgstr ""

#: ../satellite_tools/satsync.py:2488
msgid "  12 - Channel do not exist"
msgstr ""

#: ../satellite_tools/satsync.py:2489
msgid "  13 - SQL error during importing package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:2490
msgid "  14 - SQL error during linking channel packages"
msgstr ""

#: ../satellite_tools/satsync.py:2491
msgid "  15 - SQL error during xml processing"
msgstr ""

#: ../satellite_tools/satsync.py:2492
msgid "  16 - server.mount_point not set in the configuration file"
msgstr ""

#: ../satellite_tools/satsync.py:2493
msgid ""
"  17 - SQL error during retrieving the channels already imported in the SUSE "
"Manager database"
msgstr ""

#: ../satellite_tools/satsync.py:2494
msgid "  18 - Wrong db connection string in rhn.conf"
msgstr ""

#: ../satellite_tools/satsync.py:2495
msgid "  19 - Bad arguments"
msgstr ""

#: ../satellite_tools/satsync.py:2496
msgid "  20 - Could not connect to db."
msgstr ""

#: ../satellite_tools/satsync.py:2497
msgid "  21 - Bad debug level"
msgstr ""

#: ../satellite_tools/satsync.py:2498
msgid "  22 - Not valid step"
msgstr ""

#: ../satellite_tools/satsync.py:2499
msgid "  24 - no such file"
msgstr ""

#: ../satellite_tools/satsync.py:2500
msgid "  25 - no such directory"
msgstr ""

#: ../satellite_tools/satsync.py:2501
msgid "  26 - mount_point does not exist"
msgstr ""

#: ../satellite_tools/satsync.py:2502
msgid "  27 - No such org"
msgstr ""

#: ../satellite_tools/satsync.py:2503
msgid "  28 - error: --master is only valid with --mount-point"
msgstr ""

#: ../satellite_tools/satsync.py:2510
#, python-format
msgid "ERROR: unknown dump version, try one of %s"
msgstr ""
   0707010000007C000081B40000000000000000000000016290A0C10000B62B000000000000000000000000000000000000001B00000000spacewalk-backend/po/ml.po    # SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
#
# Translators:
# Ani Peter <apeter@redhat.com>, 2006, 2007.
msgid ""
msgstr ""
"Project-Id-Version: Spacewalk\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-10-16 13:34+0200\n"
"PO-Revision-Date: 2011-03-04 16:08+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Malayalam <discuss@lists.smc.org.in>\n"
"Language: ml\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"

#: ../server/apacheAuth.py:66
#, python-format
msgid "incomplete proxy authentication token: %s"
msgstr ""

#: ../server/apacheAuth.py:84
#, python-format
msgid "Sent proxy signature %s does not match ours %s."
msgstr ""

#: ../server/apacheAuth.py:119
msgid "declined proxy authentication"
msgstr ""

#: ../server/apacheRequest.py:59
#, python-format
msgid "Invalid request received (%s)."
msgstr ""

#: ../server/apacheRequest.py:120
#, python-format
msgid ""
"IMPORTANT MESSAGE FOLLOWS:\n"
"%s"
msgstr ""

#: ../server/apacheRequest.py:149
#, python-format
msgid ""
"While running '%s': caught\n"
"%s : %s\n"
msgstr ""

#: ../server/apacheRequest.py:606
#, python-format
msgid "Invalid URI %s"
msgstr ""

#: ../server/configFilesHandler.py:129 ../server/handlers/app/packages.py:192
#: ../server/handlers/xmlrpc/registration.py:215
#: ../server/handlers/xmlrpc/registration.py:1168
#: ../server/handlers/xmlrpc/registration.py:1307
#, python-format
msgid ""
"\n"
"                   %s Account has been deactivated on this server.\n"
"                   Please contact your Org administrator for more help."
msgstr ""

#: ../server/handlers/applet/applet.py:78
#, python-brace-format
msgid "Your system was not found in the {PRODUCT_NAME} database"
msgstr ""

#: ../server/handlers/sat/auth.py:45
msgid "ISS is disabled on this server."
msgstr ""

#: ../server/handlers/sat/auth.py:50
#, python-format
msgid "Server \"%s\" is not enabled for ISS."
msgstr ""

#: ../server/handlers/xmlrpc/errata.py:64
#, python-format
msgid "Expected a package name, not: %s"
msgstr ""

#: ../server/handlers/xmlrpc/errata.py:115
#, python-format
msgid "Expected a package, not: %s"
msgstr ""

#: ../server/handlers/xmlrpc/proxy.py:65
#, python-format
msgid "SUSE Manager Proxy service not enabled for server profile: \"%s\""
msgstr ""

#: ../server/handlers/xmlrpc/proxy.py:85
msgid "Invalid session key"
msgstr ""

#: ../server/handlers/xmlrpc/proxy.py:93
msgid "This server ID no longer exists"
msgstr ""

#: ../server/handlers/xmlrpc/queue.py:433
#, python-format
msgid "Invalid action value type %s (%s)"
msgstr ""

#: ../server/handlers/xmlrpc/queue.py:464
#, python-format
msgid "Action %s does not belong to server %s"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:194
msgid "Required data missing"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:198
msgid "Required members missing"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:207
msgid "Attempt to register a system to an invalid username"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:839
msgid "Invalid system release version requested"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1063
msgid ""
"Unable to find a valid network interface, both ipaddr and ip6addr not found."
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1115
#, python-brace-format
msgid "{PRODUCT_NAME} Welcome Message"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1125
msgid "Privacy Statement"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1146
msgid "Expected a dictionary as a product argument"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1374
#, python-format
msgid "Invalid value '%s' for %s (%s)"
msgstr ""

#: ../server/handlers/xmlrpc/scap.py:104
msgid "Invalid system_id/action_id pair."
msgstr ""

#: ../server/handlers/xmlrpc/up2date.py:233
#, python-format
msgid "Invalid value %s (%s)"
msgstr ""

#: ../server/importlib/userAuth.py:98
msgid "You are not authorized to manage packages in the null org"
msgstr ""

#: ../server/importlib/userAuth.py:103
#, python-format
msgid "You are not allowed to manage packages in the %s org"
msgstr ""

#: ../server/importlib/userAuth.py:121
msgid "You are not allowed to perform administrative tasks"
msgstr ""

#: ../server/importlib/userAuth.py:144
#, python-format
msgid ""
"You are not allowed to manage channel %s, or that channel does not exist"
msgstr ""

#: ../server/importlib/userAuth.py:204
#, python-format
msgid ""
"\n"
"               %s Account has been deactivated on this server.\n"
"               Please contact your Org administrator for more help."
msgstr ""

#: ../server/rhnChannel.py:1992
#, python-format
msgid ""
"Your account does not have access to any channels matching "
"(release='%(release)s', arch='%(arch)s')%(www_activation)s"
msgstr ""

#: ../server/rhnChannel.py:2002
msgid ""
"\n"
"If you have a registration number, please register with it first at http://"
"www.redhat.com/apps/activate/ and then try again.\n"
"\n"
msgstr ""

#: ../server/rhnChannel.py:2012
#, python-format
msgid "Insufficient subscription permissions for release (%s, %s"
msgstr ""

#. Various messages that can be reused
#.
#. bretm 02/07/2007 -- when we have better old-client documentation, probably
#. will be safe to get rid of all this crap
#: ../server/rhnChannel.py:2276 ../server/rhnChannel.py:2287
#: ../server/rhnChannel.py:2302
msgid "System Registered but Inactive"
msgstr ""

#: ../server/rhnChannel.py:2277
#, python-format
msgid ""
"\n"
"Invalid Architecture and OS release combination (%s, %s).\n"
"Your system has been registered, but will not receive updates\n"
"because it is not subscribed to a channel. If you have not yet\n"
"activated your product for service, please visit our website at:\n"
"\n"
"     http://www.redhat.com/apps/activate/\n"
"\n"
"...to activate your product."
msgstr ""

#: ../server/rhnChannel.py:2288
#, python-format
msgid ""
"\n"
"Invalid Architecture and OS release combination (%s, %s).\n"
"Your system has been registered, but will not receive updates\n"
"because it could not be subscribed to a base channel.\n"
"Please contact your organization administrator for assistance.\n"
msgstr ""

#: ../server/rhnChannel.py:2295
#, python-format
msgid ""
"\n"
"  This system has been successfully registered, but is not yet entitled\n"
"  to service.  To entitle this system to service, login to the web site at:\n"
"\n"
"  %(entitlement_url)s\n"
msgstr ""

#: ../server/rhnChannel.py:2303
#, python-format
msgid ""
"\n"
"  This system has been successfully registered, but no service entitlements\n"
"  were available.  To entitle this system to service, login to the web site "
"at:\n"
"\n"
"  %(entitlement_url)s\n"
msgstr ""

#: ../server/rhnHandler.py:62
msgid "Please run rhn_register as root on this client"
msgstr ""

#: ../server/rhnHandler.py:75
#, python-format
msgid "Service not enabled for system profile: \"%s\""
msgstr ""

#: ../server/rhnPackage.py:49 ../server/rhnPackage.py:87
#: ../server/rhnPackage.py:107 ../server/rhnPackage.py:158
#, python-format
msgid "Invalid RPM package %s requested"
msgstr ""

#: ../server/rhnPackage.py:112
msgid "Package not found"
msgstr ""

#: ../server/rhnServer/server_class.py:97
#, python-format
msgid "Architecture `%s' is not supported"
msgstr ""

#: ../server/rhnServer/server_token.py:78
#, python-format
msgid "Token `%s' has more than one base channel assigned"
msgstr ""

#: ../server/rhnServer/server_token.py:80
msgid "Conflicting base channels"
msgstr ""

#: ../server/rhnServer/server_token.py:190
#, python-format
msgid "Failed to add server to group %s"
msgstr ""

#: ../server/rhnServer/server_token.py:503
#, python-format
msgid "Maximum usage count of %s reached"
msgstr ""

#: ../server/rhnServer/server_token.py:744
msgid ""
"Stacking of re-registration tokens with different base entitlements is not "
"supported"
msgstr ""

#: ../server/rhnServer/server_token.py:811
#, python-format
msgid "Could not find token '%s'"
msgstr ""

#. Cannot use activation keys from different orgs
#: ../server/rhnServer/server_token.py:843
msgid "Tokens from mismatching orgs"
msgstr ""

#. Two tokens with different kickstart sessions
#: ../server/rhnServer/server_token.py:853
msgid "Kickstart session mismatch"
msgstr ""

#: ../server/rhnServer/server_token.py:877
msgid "Stacking of re-registration tokens is not supported"
msgstr ""

#: ../server/rhnUser.py:289 ../server/rhnUser.py:292
msgid "Invalid username/password combination"
msgstr ""

#. nope, not reserved either
#: ../server/rhnUser.py:467
#, python-format
msgid "Username `%s' has not been reserved"
msgstr ""

#. New accounts have to specify an e-mail address
#: ../server/rhnUser.py:473
msgid "E-mail address not specified"
msgstr ""

#: ../server/rhnUser.py:509
#, python-format
msgid "username should be at least %d characters"
msgstr ""

#: ../server/rhnUser.py:512
#, python-format
msgid "username should be less than %d characters"
msgstr ""

#: ../server/rhnUser.py:523
#, python-format
msgid "username = `%s', invalid character `%s'"
msgstr ""

#: ../server/rhnUser.py:542
#, python-format
msgid "Please limit your e-mail address to %s chars"
msgstr ""

#: ../server/rhnUser.py:623
#, python-format
msgid "password must be at least %d characters"
msgstr ""

#: ../server/rhnUser.py:626
#, python-format
msgid "Password must be shorter than %d characters"
msgstr ""

#: ../server/rhnUser.py:644
#, python-format
msgid "password contains character `%s'"
msgstr ""

#: ../server/rhnUser.py:651
#, python-format
msgid "username should be at least %d characters long"
msgstr ""

#: ../server/rhnUser.py:662
#, python-format
msgid "Cannot register usernames ending with %s"
msgstr ""

#. 0-999: Red Hat client/client-like interaction errors:
#: ../common/rhnException.py:53
msgid "This does not appear to be a valid username."
msgstr ""

#: ../common/rhnException.py:54
msgid "Invalid username and password combination."
msgstr ""

#: ../common/rhnException.py:55
msgid "This login is already taken, or the password is incorrect."
msgstr ""

#: ../common/rhnException.py:56
msgid "Permission denied."
msgstr ""

#: ../common/rhnException.py:57
msgid "Object not found."
msgstr ""

#: ../common/rhnException.py:58
msgid "Invalid System Digital ID."
msgstr ""

#: ../common/rhnException.py:59
msgid "Invalid System Credentials."
msgstr ""

#: ../common/rhnException.py:60
msgid "Could not retrieve user data from database."
msgstr ""

#: ../common/rhnException.py:61
msgid "Valid username required."
msgstr ""

#: ../common/rhnException.py:62
msgid "Valid password required."
msgstr ""

#: ../common/rhnException.py:63
msgid "Minimum username length violation."
msgstr ""

#: ../common/rhnException.py:64
msgid "Minimum password length violation."
msgstr ""

#: ../common/rhnException.py:65
msgid "The username contains invalid characters."
msgstr ""

#: ../common/rhnException.py:66
msgid "File not found."
msgstr ""

#: ../common/rhnException.py:67
msgid "Architecture and OS version combination is not supported."
msgstr ""

#: ../common/rhnException.py:68
msgid "Could not retrieve system data from database."
msgstr ""

#: ../common/rhnException.py:69
msgid "Invalid arguments passed to function."
msgstr ""

#: ../common/rhnException.py:70
msgid "Unable to retrieve requested entry."
msgstr ""

#: ../common/rhnException.py:71
msgid "Could not update database entry."
msgstr ""

#: ../common/rhnException.py:72
msgid "Unsupported server architecture."
msgstr ""

#: ../common/rhnException.py:73
#, python-format
msgid ""
"\n"
"     The anonymous server functionality is no longer available.\n"
"\n"
"     Please re-register this system by running mgr_register as root.\n"
"     Please visit https://%(hostname)s/rhn/systems/SystemEntitlements.do\n"
"     or login at https://%(hostname)s, and from the \"Overview\" tab,\n"
"     select \"Subscription Management\" to enable the service for this "
"system.\n"
"     "
msgstr ""

#: ../common/rhnException.py:81
msgid "Record not available in the database."
msgstr ""

#: ../common/rhnException.py:82
msgid "Invalid value for entry."
msgstr ""

#: ../common/rhnException.py:83
#, python-format
msgid ""
"\n"
"     This system does not have a valid entitlement for SUSE Manager.\n"
"     Please visit https://%(hostname)s/rhn/systems/SystemEntitlements.do\n"
"     or login at https://%(hostname)s, and from the \"Overview\" tab,\n"
"     select \"Subscription Management\" to enable the service for this "
"system.\n"
"     "
msgstr ""

#: ../common/rhnException.py:89
msgid "Channel error"
msgstr ""

#: ../common/rhnException.py:90
msgid "Client session token is invalid."
msgstr ""

#: ../common/rhnException.py:91
msgid "Client session token has expired."
msgstr ""

#: ../common/rhnException.py:92
msgid "You are not authorized to retrieve the requested object."
msgstr ""

#: ../common/rhnException.py:93
msgid "Invalid action"
msgstr ""

#: ../common/rhnException.py:94
msgid "You are not allowed to perform administrative tasks on this system."
msgstr ""

#: ../common/rhnException.py:96
msgid "The system is already subscribed to the specified channel."
msgstr ""

#: ../common/rhnException.py:97
msgid "The system is not currently subscribed to the specified channel."
msgstr ""

#: ../common/rhnException.py:98
msgid "The specified channel does not exist."
msgstr ""

#: ../common/rhnException.py:99
msgid "Invalid channel version."
msgstr ""

#: ../common/rhnException.py:100
msgid ""
"\n"
"     User group membership limits exceeded.\n"
"\n"
"     The current settings for your account do not allow you to add another\n"
"     user account. Please check with the organization administrator for "
"your\n"
"     account if the maximum number of users allowed to subscribe to server "
"needs\n"
"     to be changed.\n"
"     "
msgstr ""

#: ../common/rhnException.py:108
msgid ""
"\n"
"     System group membership limits exceeded.\n"
"\n"
"     The current settings for your account do not allow you to add another\n"
"     system profile. Please check with the organization administrator for "
"your\n"
"     account for modifying the maximum number of system profiles that can "
"be\n"
"     subscribed to your account.\n"
"     "
msgstr ""

#: ../common/rhnException.py:116
msgid ""
"\n"
"     Invalid architecture.\n"
"\n"
"     The architecture of the package is not supported by\n"
"     "
msgstr ""

#: ../common/rhnException.py:121
msgid "Invalid RPM header"
msgstr ""

#: ../common/rhnException.py:122
msgid ""
"\n"
"    This system is already registered as a Salt Minion. If you want to "
"register it as a traditional client\n"
"    please delete it first via the web UI or API and then register it using "
"the traditional tools.\n"
"    "
msgstr ""

#. For the uploading tools
#: ../common/rhnException.py:127
msgid "Invalid information uploaded to the server"
msgstr ""

#: ../common/rhnException.py:128
msgid "Error uploading network interfaces configuration."
msgstr ""

#: ../common/rhnException.py:129
msgid ""
"\n"
"     Package Upload Failed due to uniqueness constraint violation.\n"
"     Make sure the package does not have any duplicate dependencies or\n"
"     does not already exists on the server\n"
"     "
msgstr ""

#: ../common/rhnException.py:134
msgid ""
"\n"
"     The --force rhnpush option is disabled on this server.\n"
"     Please contact your SUSE Manager administrator for more help.\n"
"     "
msgstr ""

#. 60-70: token errors
#: ../common/rhnException.py:140
msgid ""
"\n"
"     The activation token specified could not be found on the server.\n"
"     Please retry with a valid key.\n"
"     "
msgstr ""

#: ../common/rhnException.py:144
msgid "Too many systems registered using this registration token"
msgstr ""

#: ../common/rhnException.py:145
msgid "Token contains invalid, obsoleted or insufficient settings"
msgstr ""

#: ../common/rhnException.py:146
msgid "Conflicting activation tokens"
msgstr ""

#. 70-80: channel subscription errors
#: ../common/rhnException.py:149
msgid ""
"\n"
"     No matching base channel found for your system.\n"
"     "
msgstr ""

#: ../common/rhnException.py:152
msgid ""
"\n"
"     You do not have subscription permission to the designated channel.\n"
"     Please refer to your organization's channel or organization\n"
"     administrators for further details.\n"
"     "
msgstr ""

#: ../common/rhnException.py:157
msgid "You can not unsubscribe from base channel."
msgstr ""

#: ../common/rhnException.py:158
msgid "SUSE Manager or Proxy channel can not be subscribed."
msgstr ""

#. 80-90: server group errors
#: ../common/rhnException.py:161
msgid "There was an error while trying to join the system to its groups"
msgstr ""

#. 90-100: entitlement errors
#: ../common/rhnException.py:164
msgid "Unable to entitle system"
msgstr ""

#. 100-109: e-mail and uuid related faults
#: ../common/rhnException.py:167
msgid "Maximum e-mail length violation."
msgstr ""

#: ../common/rhnException.py:168
msgid "This system has been previously registered."
msgstr ""

#: ../common/rhnException.py:169
msgid "Invalid username"
msgstr ""

#. 140-159 applet errors
#: ../common/rhnException.py:172
msgid "Unable to look up server"
msgstr ""

#. 160-179: OSAD errors
#: ../common/rhnException.py:175
msgid "Required argument is missing"
msgstr ""

#. 600-699: RHEL5+ EN errors
#: ../common/rhnException.py:178
msgid "No entitlement information tied to hardware"
msgstr ""

#: ../common/rhnException.py:179
msgid "Installation number is not entitling"
msgstr ""

#. 700-799: Additional user input verification errors.
#: ../common/rhnException.py:182
msgid "Maximum username length violation"
msgstr ""

#: ../common/rhnException.py:183
msgid "Maximum password length violation"
msgstr ""

#: ../common/rhnException.py:184
msgid "This user has read only API access. Action denied."
msgstr ""

#: ../common/rhnException.py:186
msgid "System Name cannot be less than 1 character"
msgstr ""

#. 1000-1999: Proxy specific errors:
#. issued by a Proxy to the client
#: ../common/rhnException.py:190
msgid "SUSE Manager Proxy error."
msgstr ""

#: ../common/rhnException.py:191
msgid "SUSE Manager Proxy unable to login."
msgstr ""

#. issued by a SUSE Manager Server/Satellite to the proxy
#: ../common/rhnException.py:193
msgid ""
"\n"
"     SUSE Manager Proxy system ID does not match a Spacewalk Proxy Server\n"
"     in the database.\n"
"     "
msgstr ""

#: ../common/rhnException.py:197
msgid "SUSE Manager Proxy session token is invalid."
msgstr ""

#: ../common/rhnException.py:198
msgid "SUSE Manager Proxy session token has expired."
msgstr ""

#. 2000-2999: Red Hat Satellite specific errors:
#: ../common/rhnException.py:202
msgid ""
"\n"
"      user creation is not allowed via mgr_register;\n"
"     please contact your sysadmin to have your account created.\n"
"     "
msgstr ""

#: ../common/rhnException.py:206
msgid ""
"\n"
"     This SUSE Manager server is not allowed to use Inter Server Sync on "
"this server\n"
"     "
msgstr ""

#: ../common/rhnException.py:209
msgid ""
"\n"
"     Inter Server Sync is disabled on this SUSE Manager Server.\n"
"     "
msgstr ""

#. 3000-3999: XML dumper errors:
#: ../common/rhnException.py:214
msgid "Invalid datatype passed"
msgstr ""

#: ../common/rhnException.py:215
msgid "Unable to retrieve channel"
msgstr ""

#: ../common/rhnException.py:216
msgid "Unable to retrieve package"
msgstr ""

#: ../common/rhnException.py:217
msgid "Unable to retrieve erratum"
msgstr ""

#: ../common/rhnException.py:218
msgid "File is missing"
msgstr ""

#: ../common/rhnException.py:219
msgid "Function retrieval error"
msgstr ""

#: ../common/rhnException.py:220
msgid "Function execution error"
msgstr ""

#: ../common/rhnException.py:221
msgid "Missing version string"
msgstr ""

#: ../common/rhnException.py:222
msgid "Invalid version string"
msgstr ""

#: ../common/rhnException.py:223
msgid "Mismatching versions"
msgstr ""

#: ../common/rhnException.py:224
msgid "Invalid channel version"
msgstr ""

#: ../common/rhnException.py:225
msgid "No comps file for channel"
msgstr ""

#: ../common/rhnException.py:226
msgid "Unable to retrieve comps file"
msgstr ""

#. 4000 - 4999: config management errors
#: ../common/rhnException.py:229
msgid "Configuration action missing"
msgstr ""

#: ../common/rhnException.py:230
msgid "File too large"
msgstr ""

#: ../common/rhnException.py:231
msgid "File contains binary data"
msgstr ""

#: ../common/rhnException.py:232
msgid "Configuration channel is not empty"
msgstr ""

#: ../common/rhnException.py:233
msgid "Permission error"
msgstr ""

#: ../common/rhnException.py:234
msgid "Content missing for configuration file"
msgstr ""

#: ../common/rhnException.py:235
msgid "Template delimiters not specified"
msgstr ""

#: ../common/rhnException.py:236
msgid "Configuration channel does not exist"
msgstr ""

#: ../common/rhnException.py:237
msgid "Configuration channel already exists"
msgstr ""

#: ../common/rhnException.py:238
msgid "File missing from configuration channel"
msgstr ""

#: ../common/rhnException.py:239
msgid "Different revision of this file is uploaded"
msgstr ""

#: ../common/rhnException.py:240
msgid "File already uploaded to configuration channel"
msgstr ""

#: ../common/rhnException.py:241
msgid "File size exceeds remaining quota space"
msgstr ""

#: ../common/rhnException.py:242
msgid "Full path of file must be specified"
msgstr ""

#: ../common/rhnException.py:243
msgid "Invalid revision number"
msgstr ""

#: ../common/rhnException.py:244
msgid "Cannot compare files of different file type"
msgstr ""

#. 5000 - 5999: client content uploading errors
#. 5000 - 5099: crash reporting errors
#: ../common/rhnException.py:248
msgid "Crash information is invalid or incomplete"
msgstr ""

#: ../common/rhnException.py:249
msgid "Crash file information is invalid or incomplete"
msgstr ""

#: ../common/rhnException.py:250
msgid "Error composing crash directory path"
msgstr ""

#: ../common/rhnException.py:251
msgid "Error composing crash file path"
msgstr ""

#: ../common/rhnException.py:252 ../common/rhnException.py:259
msgid "Invalid content encoding"
msgstr ""

#: ../common/rhnException.py:253
msgid "Invalid crash name"
msgstr ""

#: ../common/rhnException.py:254
msgid "Crash reporting is disabled for this organization"
msgstr ""

#. 5100 - 5199: scap results reporting error
#: ../common/rhnException.py:256
msgid "SCAP results file transfer is invalid or incomplete"
msgstr ""

#: ../common/rhnException.py:257
msgid "Error composing directory path for detailed SCAP results"
msgstr ""

#: ../common/rhnException.py:258
msgid "Error composing file path for detailed SCAP results"
msgstr ""

#: ../common/rhnException.py:306
msgid ""
"\n"
"     An error has occurred while processing your request. If this problem\n"
"     persists please enter a bug report at scc.suse.com.\n"
"     If you choose to submit the bug report, please be sure to include\n"
"     details of what you were trying to do when this error occurred and\n"
"     details on how to reproduce this problem.\n"
msgstr ""

#: ../common/rhnException.py:358
#, python-format
msgid ""
"Error Message:\n"
"    %s\n"
msgstr ""

#: ../common/rhnException.py:360
#, python-format
msgid "Error Class Code: %s\n"
msgstr ""

#: ../common/rhnException.py:363
#, python-format
msgid "Error Class Info: %s\n"
msgstr ""

#: ../common/rhnException.py:365
#, python-format
msgid "Explanation: %s"
msgstr ""

#: ../common/rhnTB.py:205
#, python-format
msgid "ERROR: %s %s: %s"
msgstr ""

#: ../common/rhnTB.py:207
#, python-format
msgid "TRACEBACK: %s"
msgstr ""

#: ../satellite_tools/disk_dumper/iss.py:1294
#: ../satellite_tools/disk_dumper/iss.py:1298
#, python-format
msgid "format of %s should be at least YYYYMMDD.\n"
msgstr ""

#: ../satellite_tools/messages.py:26
#, python-format
msgid ""
"\n"
"ERROR: executing step %s. Error is:\n"
"%s\n"
msgstr ""

#: ../satellite_tools/messages.py:31
#, python-format
msgid ""
"\n"
"ERROR: there was a problem accessing the channel data from your temporary\n"
"       repository. Did you migrate all of the data from the channel ISOs\n"
"       do this directory? If so, please recheck the channels ISOs, ensure\n"
"       that you have them all, and then iteratively remount and repopulate\n"
"       the temporary repository (%s).\n"
msgstr ""

#: ../satellite_tools/messages.py:39
#, python-format
msgid ""
"\n"
"ERROR: there was a problem synchronizing the information.\n"
"       Error message: %s\n"
msgstr ""

#: ../satellite_tools/messages.py:44
#, python-format
msgid ""
"\n"
"ERROR: There was a problem communicating with the ISS Master.\n"
"       Depending on the specific error details, please review your "
"configuration,\n"
"       basic network connectivity, and/or name resolution, and try again.\n"
"       Error message: %s\n"
msgstr ""

#: ../satellite_tools/messages.py:51
#, python-format
msgid ""
"\n"
"ERROR: There was a problem communicating with the ISS Master.\n"
"       If the master satellite is older than v5.3, it does not have ISS "
"capability.\n"
"       Otherwise, depending on the specific error details, please review "
"your\n"
"       configuration, basic network connectivity, and/or name resolution, "
"and try again.\n"
"       Error message: %s\n"
msgstr ""

#: ../satellite_tools/messages.py:59
#, python-format
msgid ""
"\n"
"ERROR: a child-channel cannot be synced without its parent being synced as\n"
"       well. A parent needs to be either (a) previously synced or (b) "
"synced\n"
"       in tandem with the desired child-channel. Missing parents for this\n"
"       transaction:\n"
"       %s\n"
msgstr ""

#: ../satellite_tools/messages.py:67
#, python-format
msgid ""
"\n"
"ERROR: you are not entitled to sync a channel in this set of channels.\n"
"Please contact your SUSE Manager contact\n"
"%s"
msgstr ""

#: ../satellite_tools/messages.py:72
#, python-format
msgid "  ERROR: not enough free space (%s KB) on device."
msgstr ""

#: ../satellite_tools/messages.py:74
#, python-format
msgid "    %3d/%s Fetch successful: %s (%s bytes)"
msgstr ""

#: ../satellite_tools/messages.py:75
#, python-format
msgid "    Extinct package:  %s"
msgstr ""

#: ../satellite_tools/messages.py:76
#, python-format
msgid "   Total size: %s"
msgstr ""

#: ../satellite_tools/messages.py:77
#, python-format
msgid "      Downloaded %s of %s. Estimated remaining time: %s"
msgstr ""

#: ../satellite_tools/messages.py:78
#, python-format
msgid "    Fetch unsuccessful: %s"
msgstr ""

#: ../satellite_tools/messages.py:79
#, python-format
msgid "   RPM fetch summary: %s"
msgstr ""

#: ../satellite_tools/messages.py:80
#, python-format
msgid "       success: %d"
msgstr ""

#: ../satellite_tools/messages.py:81
#, python-format
msgid "       failed:  %d"
msgstr ""

#: ../satellite_tools/messages.py:82
#, python-format
msgid "       extinct: %d"
msgstr ""

#: ../satellite_tools/messages.py:84
#, python-format
msgid "   Retrieving / parsing *relevant* package metadata: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:85
#, python-format
msgid "   Retrieving / parsing errata data: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:86
#, python-format
msgid "   Retrieving / parsing kickstart data: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:87
#, python-format
msgid "   Retrieving / parsing kickstart tree files: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:88
#, python-format
msgid "   Importing *relevant* package metadata: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:89
msgid "   * WARNING: this may be a slow process."
msgstr ""

#: ../satellite_tools/messages.py:90
msgid "Linking packages to channels"
msgstr ""

#: ../satellite_tools/messages.py:91
#, python-format
msgid "   Importing *relevant* errata: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:92
msgid "   No new kickstartable tree to import"
msgstr ""

#: ../satellite_tools/messages.py:93
#, python-format
msgid "Importing kickstartable trees (%d)"
msgstr ""

#: ../satellite_tools/messages.py:94
#, python-format
msgid "Imported kickstartable trees (%d)"
msgstr ""

#: ../satellite_tools/reposync.py:111 ../satellite_tools/satsync.py:439
msgid "+++ sending log as an email +++"
msgstr ""

#: ../satellite_tools/reposync.py:114
#, python-format
msgid "%s sync. report from %s"
msgstr ""

#: ../satellite_tools/reposync.py:124 ../satellite_tools/satsync.py:449
msgid "+++ email requested, but there is nothing to send +++"
msgstr ""

#: ../satellite_tools/rhn_satellite_activate.py:198
#, python-format
msgid ""
"\"%s\" (specified in commandline)\n"
"could not be opened and read:\n"
"%s"
msgstr ""

#: ../satellite_tools/rhn_satellite_activate.py:205
#, python-format
msgid ""
"\"%s\" could not be opened\n"
"and/or written to:\n"
"%s"
msgstr ""

#: ../satellite_tools/satsync.py:258
#, python-format
msgid "No handler for step %s"
msgstr ""

#. Try one more time - this time it should be faster since
#. everything should be cached
#: ../satellite_tools/satsync.py:270
msgid "Environment changed, trying again..."
msgstr ""

#: ../satellite_tools/satsync.py:277
msgid "ERROR: Encountered IntegrityError: \n"
msgstr ""

#: ../satellite_tools/satsync.py:285
msgid "Repeated failures"
msgstr ""

#: ../satellite_tools/satsync.py:290
#, python-format
msgid ""
"    Import complete:\n"
"        Begin time: %s\n"
"        End time:   %s\n"
"        Elapsed:    %s\n"
"          "
msgstr ""

#: ../satellite_tools/satsync.py:311
msgid "hours"
msgstr ""

#: ../satellite_tools/satsync.py:311
msgid "minutes"
msgstr ""

#: ../satellite_tools/satsync.py:311
msgid "seconds"
msgstr ""

#: ../satellite_tools/satsync.py:357
msgid ""
"ERROR: The dump is missing package data, use --no-rpms to skip this step or "
"fix the content to include package data."
msgstr ""

#. the orgs() method doesn't exist; that's fine we just
#. won't sync the orgs
#: ../satellite_tools/satsync.py:404
msgid "The SUSE Manager master does not support syncing orgs data."
msgstr ""

#: ../satellite_tools/satsync.py:404
msgid "Skipping..."
msgstr ""

#: ../satellite_tools/satsync.py:442
#, python-format
msgid "SUSE Manager Inter Server sync. report from %s"
msgstr ""

#: ../satellite_tools/satsync.py:521
msgid " - file-system synchronization"
msgstr ""

#: ../satellite_tools/satsync.py:533 ../satellite_tools/satsync.py:541
msgid " - live synchronization"
msgstr ""

#: ../satellite_tools/satsync.py:534
#, python-brace-format
msgid ""
"ERROR: Live content synchronizing with RHN Classic Hosted is no longer "
"supported.\n"
"Please use the cdn-sync command instead unless you are attempting to sync "
"from another {PRODUCT_NAME} via Inter-Server-Sync (ISS), or from local "
"content on disk via Channel Dump ISOs."
msgstr ""

#: ../satellite_tools/satsync.py:542
#, python-format
msgid "   url: %s"
msgstr ""

#: ../satellite_tools/satsync.py:543
#, python-format
msgid "   debug/output level: %s"
msgstr ""

#: ../satellite_tools/satsync.py:553
msgid "ERROR: this server must be registered with SUSE Manager."
msgstr ""

#: ../satellite_tools/satsync.py:575
#, python-format
msgid "Retrieving / parsing %s data"
msgstr ""

#: ../satellite_tools/satsync.py:585 ../satellite_tools/satsync.py:600
msgid "*** SYSTEM INTERRUPT CALLED ***"
msgstr ""

#: ../satellite_tools/satsync.py:593
msgid "ERROR: fatal parser exception occurred "
msgstr ""

#: ../satellite_tools/satsync.py:594
#, python-format
msgid "(line: %s, col: %s msg: %s)"
msgstr ""

#: ../satellite_tools/satsync.py:598
#, python-format
msgid "ERROR: parser exception occurred: %s"
msgstr ""

#: ../satellite_tools/satsync.py:603
msgid "ERROR: exception (during parse) occurred: "
msgstr ""

#: ../satellite_tools/satsync.py:604
#, python-format
msgid ""
"   Encountered some errors with %s data (see logs (%s) for more information)"
msgstr ""

#: ../satellite_tools/satsync.py:606
#, python-format
msgid "   Encountered some errors with %s data:"
msgstr ""

#: ../satellite_tools/satsync.py:607
#, python-format
msgid "   ------- %s PARSE/IMPORT ERROR -------"
msgstr ""

#: ../satellite_tools/satsync.py:609
msgid "   ---------------------------------------"
msgstr ""

#: ../satellite_tools/satsync.py:612
#, python-format
msgid "%s data complete"
msgstr ""

#: ../satellite_tools/satsync.py:665
msgid "Retrieving / parsing channel data"
msgstr ""

#: ../satellite_tools/satsync.py:718
msgid "Channel data complete"
msgstr ""

#: ../satellite_tools/satsync.py:736
#, python-format
msgid "%10s import from %s"
msgstr ""

#: ../satellite_tools/satsync.py:739
#, python-format
msgid "%10s import from %s - %s"
msgstr ""

#: ../satellite_tools/satsync.py:743
#, python-format
msgid "%10s"
msgstr ""

#: ../satellite_tools/satsync.py:750
msgid "p"
msgstr ""

#: ../satellite_tools/satsync.py:752
msgid "."
msgstr ""

#: ../satellite_tools/satsync.py:758
msgid "   p = previously imported/synced channel"
msgstr ""

#: ../satellite_tools/satsync.py:759
msgid "   . = channel not yet imported/synced"
msgstr ""

#: ../satellite_tools/satsync.py:765
msgid "   e = channel no longer supported (end-of-service)"
msgstr ""

#: ../satellite_tools/satsync.py:767
msgid "   ? = channel label invalid --- typo?"
msgstr ""

#: ../satellite_tools/satsync.py:771
#, python-format
msgid "   %s:"
msgstr ""

#: ../satellite_tools/satsync.py:772
#, python-format
msgid "      %s %-40s %4s %s"
msgstr ""

#: ../satellite_tools/satsync.py:773
msgid "base-channels"
msgstr ""

#: ../satellite_tools/satsync.py:786 ../satellite_tools/satsync.py:1603
msgid "NONE RELEVANT"
msgstr ""

#: ../satellite_tools/satsync.py:808
msgid "end-of-service"
msgstr ""

#: ../satellite_tools/satsync.py:809
msgid "e"
msgstr ""

#: ../satellite_tools/satsync.py:815
msgid "   typos:"
msgstr ""

#: ../satellite_tools/satsync.py:816
msgid "?"
msgstr ""

#: ../satellite_tools/satsync.py:831
#, python-format
msgid "XXX: imported channels: %s"
msgstr ""

#: ../satellite_tools/satsync.py:832
#, python-format
msgid "XXX:   cached channels: %s"
msgstr ""

#: ../satellite_tools/satsync.py:837
msgid "XXX: list channels called"
msgstr ""

#: ../satellite_tools/satsync.py:855
msgid "ERROR: these channels either do not exist or are not available:"
msgstr ""

#: ../satellite_tools/satsync.py:859
#, python-format
msgid "       (to see a list of channel labels: %s --list-channels)"
msgstr ""

#: ../satellite_tools/satsync.py:904
#, python-format
msgid "   Retrieving / parsing short package metadata: %s (%s)"
msgstr ""

#: ../satellite_tools/satsync.py:965
#, python-format
msgid "Diffing package metadata (what's missing locally?): %s"
msgstr ""

#: ../satellite_tools/satsync.py:971 ../satellite_tools/satsync.py:1254
msgid "Diffing:    "
msgstr ""

#: ../satellite_tools/satsync.py:988
msgid "ERROR: incremental dump skipped"
msgstr ""

#: ../satellite_tools/satsync.py:1079
msgid "Downloading rpm packages"
msgstr ""

#: ../satellite_tools/satsync.py:1084
#, python-format
msgid "   Fetching any missing RPMs: %s (%s)"
msgstr ""

#: ../satellite_tools/satsync.py:1085 ../satellite_tools/satsync.py:1153
msgid "NONE MISSING"
msgstr ""

#: ../satellite_tools/satsync.py:1094
msgid "Processing rpm packages complete"
msgstr ""

#: ../satellite_tools/satsync.py:1121
msgid "Downloading package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1146
msgid "Downloading srpm packages"
msgstr ""

#: ../satellite_tools/satsync.py:1152
#, python-format
msgid "   Fetching any missing SRPMs: %s (%s)"
msgstr ""

#: ../satellite_tools/satsync.py:1249
#, python-format
msgid "Diffing source package metadata (what's missing locally?): %s"
msgstr ""

#: ../satellite_tools/satsync.py:1260
msgid "Downloading source package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1338 ../satellite_tools/satsync.py:2027
#, python-format
msgid "Unable to save file %s: %s"
msgstr ""

#. for
#. Retried a number of times and it still failed; log the
#. file as being failed and move on
#: ../satellite_tools/satsync.py:1345
#, python-format
msgid "Failed to fetch file %s"
msgstr ""

#: ../satellite_tools/satsync.py:1350
msgid "Downloading kickstartable trees metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1365
msgid "Downloading kickstartable trees files"
msgstr ""

#: ../satellite_tools/satsync.py:1504
#, python-format
msgid "Grabbing all patches for channel %s"
msgstr ""

#: ../satellite_tools/satsync.py:1554
msgid "Downloading patch data"
msgstr ""

#: ../satellite_tools/satsync.py:1556
msgid "Forcing download of all patch data for requested channels."
msgstr ""

#: ../satellite_tools/satsync.py:1571
msgid "Downloading patch data complete"
msgstr ""

#: ../satellite_tools/satsync.py:1576 ../satellite_tools/satsync.py:1597
msgid "Downloading:"
msgstr ""

#: ../satellite_tools/satsync.py:1579
msgid " - complete"
msgstr ""

#: ../satellite_tools/satsync.py:1624
msgid "Importing source package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1627
msgid "Importing package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1635
msgid "Importing:  "
msgstr ""

#. not in the cache
#: ../satellite_tools/satsync.py:1703
msgid ""
"Package Not Found in Cache, Clear the Cache "
"to                                  Regenerate it."
msgstr ""

#: ../satellite_tools/satsync.py:1709
msgid "Importing channel patches"
msgstr ""

#: ../satellite_tools/satsync.py:1714
#, python-format
msgid "Importing %s patches for channel %s."
msgstr ""

#. Incomplete configuration
#: ../satellite_tools/satsync.py:2113
msgid "ERROR: server.mount_point not set in the configuration file"
msgstr ""

#: ../satellite_tools/satsync.py:2117
#, python-format
msgid "ERROR: server.mount_point %s do not exist"
msgstr ""

#: ../satellite_tools/satsync.py:2122
#, python-format
msgid "ERROR: path under server.mount_point (%s)  do not exist"
msgstr ""

#: ../satellite_tools/satsync.py:2199
#, python-format
msgid "Commandline: %s"
msgstr ""

#: ../satellite_tools/satsync.py:2202
#, python-format
msgid ""
"DEBUG ONLY: max. batch-size for XML/database-import processing (1..%s).\"man "
"satellite-sync\" for more information."
msgstr ""

#: ../satellite_tools/satsync.py:2205
msgid "alternative SSL CA Cert (fullpath to cert file)"
msgstr ""

#: ../satellite_tools/satsync.py:2207
msgid "process data for this channel only"
msgstr ""

#: ../satellite_tools/satsync.py:2209
msgid ""
"disk dump will be considered to be a full export; see \"man satellite-sync\" "
"for more information."
msgstr ""

#: ../satellite_tools/satsync.py:2212
msgid "existing custom channels will also be synced (unless -c is used)"
msgstr ""

#: ../satellite_tools/satsync.py:2214
#, python-format
msgid ""
"override debug level set in /etc/rhn/rhn.conf (which is currently set at %s)."
msgstr ""

#: ../satellite_tools/satsync.py:2216
#, python-format
msgid "requested version of XML dump (default: %s)"
msgstr ""

#: ../satellite_tools/satsync.py:2218
msgid "e-mail a report of what was synced/imported"
msgstr ""

#: ../satellite_tools/satsync.py:2220
msgid "forcibly process all (not a diff of) patch metadata"
msgstr ""

#: ../satellite_tools/satsync.py:2222
msgid "Do not use an http proxy under any circumstances."
msgstr ""

#: ../satellite_tools/satsync.py:2224
msgid "alternative http proxy (hostname:port)"
msgstr ""

#: ../satellite_tools/satsync.py:2226
msgid "alternative http proxy username"
msgstr ""

#: ../satellite_tools/satsync.py:2228
msgid "alternative http proxy password"
msgstr ""

#: ../satellite_tools/satsync.py:2230
msgid "parent SUSE Manager to import content from"
msgstr ""

#: ../satellite_tools/satsync.py:2232
msgid "list all available channels and exit"
msgstr ""

#: ../satellite_tools/satsync.py:2234
msgid "help on all error codes mgr-inter-sync returns"
msgstr ""

#: ../satellite_tools/satsync.py:2236
msgid "source mount point for import - disk update only"
msgstr ""

#: ../satellite_tools/satsync.py:2238
msgid "do not process patch data"
msgstr ""

#: ../satellite_tools/satsync.py:2240
msgid "do not process kickstart data (provisioning only)"
msgstr ""

#: ../satellite_tools/satsync.py:2242
msgid "do not process full package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:2244
msgid "do not download, or process any RPMs"
msgstr ""

#: ../satellite_tools/satsync.py:2246
msgid "turn off SSL (not recommended)"
msgstr ""

#: ../satellite_tools/satsync.py:2248
msgid "org to which the sync imports data. defaults to the admin account"
msgstr ""

#: ../satellite_tools/satsync.py:2250
msgid "print the configuration and exit"
msgstr ""

#: ../satellite_tools/satsync.py:2252
msgid "alternative server with which to connect (hostname)"
msgstr ""

#: ../satellite_tools/satsync.py:2254
msgid "synchronize to this step (man satellite-sync for more info)"
msgstr ""

#: ../satellite_tools/satsync.py:2256
msgid "write complete data to tempfile before streaming to remainder of app"
msgstr ""

#: ../satellite_tools/satsync.py:2258
msgid "DEBUG ONLY: alternative path to digital system id"
msgstr ""

#: ../satellite_tools/satsync.py:2260
msgid "alternative email address(es) for sync output (--email option)"
msgstr ""

#: ../satellite_tools/satsync.py:2262
msgid "do not remove rpms when importing from local dump"
msgstr ""

#: ../satellite_tools/satsync.py:2264
msgid ""
"the fully qualified domain name of the master Satellite. Valid with --mount-"
"point only. Required if you want to import org data and channel permissions."
msgstr ""

#: ../satellite_tools/satsync.py:2274
#, python-format
msgid "ERROR: these arguments make no sense in this context (try --help): %s"
msgstr ""

#. An SQL error is fatal... crash and burn
#: ../satellite_tools/satsync.py:2286
#, python-format
msgid "ERROR: Can't connect to the database: %s"
msgstr ""

#: ../satellite_tools/satsync.py:2287
msgid "ERROR: Check if your database is running."
msgstr ""

#: ../satellite_tools/satsync.py:2322
#, python-format
msgid "ERROR: --debug-level takes an in integer value within the range %s."
msgstr ""

#: ../satellite_tools/satsync.py:2324
msgid "  0  - little logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2325
msgid "  1  - minimal logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2326
msgid "  2  - normal level of logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2327
msgid "  3  - lots of logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2328
msgid "  4+ - excessive logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2341
msgid "ERROR: The --master option is only valid with the --mount-point option"
msgstr ""

#: ../satellite_tools/satsync.py:2351
#, python-format
msgid "ERROR: Unable to lookup Org Id %s"
msgstr ""

#: ../satellite_tools/satsync.py:2360
msgid ""
"WARNING: --list-channels option overrides any --step option. --step ignored."
msgstr ""

#: ../satellite_tools/satsync.py:2375
#, python-format
msgid ""
"ERROR: '%s' is not a valid step. See 'man mgr-inter-sync' for more detail."
msgstr ""

#: ../satellite_tools/satsync.py:2407
msgid ""
"ERROR: No channels currently imported; try mgr-inter-sync --list-channels; "
"then mgr-inter-sync -c chn0 -c chn1..."
msgstr ""

#. int(None) --> TypeError
#. int('a')  --> ValueError
#: ../satellite_tools/satsync.py:2457 ../satellite_tools/satsync.py:2461
msgid "ERROR: --batch-size must have a value within the range: 1..50"
msgstr ""

#: ../satellite_tools/satsync.py:2469
#, python-format
msgid "ERROR: no such directory %s"
msgstr ""

#: ../satellite_tools/satsync.py:2474
msgid "Error Codes: Returned codes means:"
msgstr ""

#: ../satellite_tools/satsync.py:2475
msgid " -1  - Could not lock file or KeyboardInterrupt or SystemExit"
msgstr ""

#: ../satellite_tools/satsync.py:2476
msgid "  0  - User interrupted or intentional exit"
msgstr ""

#: ../satellite_tools/satsync.py:2477
msgid "  1  - attempting to run more than one instance of mgr-inter-sync."
msgstr ""

#: ../satellite_tools/satsync.py:2478
msgid "  2  - Unable to find synchronization tools."
msgstr ""

#: ../satellite_tools/satsync.py:2479
msgid "  3  - a general socket exception occurred"
msgstr ""

#: ../satellite_tools/satsync.py:2480
msgid "  4  - an SSL error occurred. Recheck your SSL settings."
msgstr ""

#: ../satellite_tools/satsync.py:2481
msgid "  5  - ISS error"
msgstr ""

#: ../satellite_tools/satsync.py:2482
msgid "  6  - unhandled exception occurred"
msgstr ""

#: ../satellite_tools/satsync.py:2483
msgid "  7  - unknown sync error"
msgstr ""

#: ../satellite_tools/satsync.py:2484
msgid "  8  - ERROR: must be root to execute"
msgstr ""

#: ../satellite_tools/satsync.py:2485
msgid "  9  - rpclib fault during synchronization init"
msgstr ""

#: ../satellite_tools/satsync.py:2486
msgid "  10 - synchronization init error"
msgstr ""

#: ../satellite_tools/satsync.py:2487
msgid "  11 - Error parsing XML stream"
msgstr ""

#: ../satellite_tools/satsync.py:2488
msgid "  12 - Channel do not exist"
msgstr ""

#: ../satellite_tools/satsync.py:2489
msgid "  13 - SQL error during importing package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:2490
msgid "  14 - SQL error during linking channel packages"
msgstr ""

#: ../satellite_tools/satsync.py:2491
msgid "  15 - SQL error during xml processing"
msgstr ""

#: ../satellite_tools/satsync.py:2492
msgid "  16 - server.mount_point not set in the configuration file"
msgstr ""

#: ../satellite_tools/satsync.py:2493
msgid ""
"  17 - SQL error during retrieving the channels already imported in the SUSE "
"Manager database"
msgstr ""

#: ../satellite_tools/satsync.py:2494
msgid "  18 - Wrong db connection string in rhn.conf"
msgstr ""

#: ../satellite_tools/satsync.py:2495
msgid "  19 - Bad arguments"
msgstr ""

#: ../satellite_tools/satsync.py:2496
msgid "  20 - Could not connect to db."
msgstr ""

#: ../satellite_tools/satsync.py:2497
msgid "  21 - Bad debug level"
msgstr ""

#: ../satellite_tools/satsync.py:2498
msgid "  22 - Not valid step"
msgstr ""

#: ../satellite_tools/satsync.py:2499
msgid "  24 - no such file"
msgstr ""

#: ../satellite_tools/satsync.py:2500
msgid "  25 - no such directory"
msgstr ""

#: ../satellite_tools/satsync.py:2501
msgid "  26 - mount_point does not exist"
msgstr ""

#: ../satellite_tools/satsync.py:2502
msgid "  27 - No such org"
msgstr ""

#: ../satellite_tools/satsync.py:2503
msgid "  28 - error: --master is only valid with --mount-point"
msgstr ""

#: ../satellite_tools/satsync.py:2510
#, python-format
msgid "ERROR: unknown dump version, try one of %s"
msgstr ""
 0707010000007D000081B40000000000000000000000016290A0C10000B681000000000000000000000000000000000000001B00000000spacewalk-backend/po/mr.po    # SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
#
# Translators:
# Rahul Bhalerao <b.rahul.pm@gmail.com>, 2006.
# Rahul Bhalerao <rahul.bhalerao@redhat.com>, 2007.
msgid ""
msgstr ""
"Project-Id-Version: Spacewalk\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-10-16 13:34+0200\n"
"PO-Revision-Date: 2011-03-04 16:08+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Marathi (http://www.transifex.com/projects/p/fedora/language/"
"mr/)\n"
"Language: mr\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"

#: ../server/apacheAuth.py:66
#, python-format
msgid "incomplete proxy authentication token: %s"
msgstr ""

#: ../server/apacheAuth.py:84
#, python-format
msgid "Sent proxy signature %s does not match ours %s."
msgstr ""

#: ../server/apacheAuth.py:119
msgid "declined proxy authentication"
msgstr ""

#: ../server/apacheRequest.py:59
#, python-format
msgid "Invalid request received (%s)."
msgstr ""

#: ../server/apacheRequest.py:120
#, python-format
msgid ""
"IMPORTANT MESSAGE FOLLOWS:\n"
"%s"
msgstr ""

#: ../server/apacheRequest.py:149
#, python-format
msgid ""
"While running '%s': caught\n"
"%s : %s\n"
msgstr ""

#: ../server/apacheRequest.py:606
#, python-format
msgid "Invalid URI %s"
msgstr ""

#: ../server/configFilesHandler.py:129 ../server/handlers/app/packages.py:192
#: ../server/handlers/xmlrpc/registration.py:215
#: ../server/handlers/xmlrpc/registration.py:1168
#: ../server/handlers/xmlrpc/registration.py:1307
#, python-format
msgid ""
"\n"
"                   %s Account has been deactivated on this server.\n"
"                   Please contact your Org administrator for more help."
msgstr ""

#: ../server/handlers/applet/applet.py:78
#, python-brace-format
msgid "Your system was not found in the {PRODUCT_NAME} database"
msgstr ""

#: ../server/handlers/sat/auth.py:45
msgid "ISS is disabled on this server."
msgstr ""

#: ../server/handlers/sat/auth.py:50
#, python-format
msgid "Server \"%s\" is not enabled for ISS."
msgstr ""

#: ../server/handlers/xmlrpc/errata.py:64
#, python-format
msgid "Expected a package name, not: %s"
msgstr ""

#: ../server/handlers/xmlrpc/errata.py:115
#, python-format
msgid "Expected a package, not: %s"
msgstr ""

#: ../server/handlers/xmlrpc/proxy.py:65
#, python-format
msgid "SUSE Manager Proxy service not enabled for server profile: \"%s\""
msgstr ""

#: ../server/handlers/xmlrpc/proxy.py:85
msgid "Invalid session key"
msgstr ""

#: ../server/handlers/xmlrpc/proxy.py:93
msgid "This server ID no longer exists"
msgstr ""

#: ../server/handlers/xmlrpc/queue.py:433
#, python-format
msgid "Invalid action value type %s (%s)"
msgstr ""

#: ../server/handlers/xmlrpc/queue.py:464
#, python-format
msgid "Action %s does not belong to server %s"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:194
msgid "Required data missing"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:198
msgid "Required members missing"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:207
msgid "Attempt to register a system to an invalid username"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:839
msgid "Invalid system release version requested"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1063
msgid ""
"Unable to find a valid network interface, both ipaddr and ip6addr not found."
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1115
#, python-brace-format
msgid "{PRODUCT_NAME} Welcome Message"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1125
msgid "Privacy Statement"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1146
msgid "Expected a dictionary as a product argument"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1374
#, python-format
msgid "Invalid value '%s' for %s (%s)"
msgstr ""

#: ../server/handlers/xmlrpc/scap.py:104
msgid "Invalid system_id/action_id pair."
msgstr ""

#: ../server/handlers/xmlrpc/up2date.py:233
#, python-format
msgid "Invalid value %s (%s)"
msgstr ""

#: ../server/importlib/userAuth.py:98
msgid "You are not authorized to manage packages in the null org"
msgstr ""

#: ../server/importlib/userAuth.py:103
#, python-format
msgid "You are not allowed to manage packages in the %s org"
msgstr ""

#: ../server/importlib/userAuth.py:121
msgid "You are not allowed to perform administrative tasks"
msgstr ""

#: ../server/importlib/userAuth.py:144
#, python-format
msgid ""
"You are not allowed to manage channel %s, or that channel does not exist"
msgstr ""

#: ../server/importlib/userAuth.py:204
#, python-format
msgid ""
"\n"
"               %s Account has been deactivated on this server.\n"
"               Please contact your Org administrator for more help."
msgstr ""

#: ../server/rhnChannel.py:1992
#, python-format
msgid ""
"Your account does not have access to any channels matching "
"(release='%(release)s', arch='%(arch)s')%(www_activation)s"
msgstr ""

#: ../server/rhnChannel.py:2002
msgid ""
"\n"
"If you have a registration number, please register with it first at http://"
"www.redhat.com/apps/activate/ and then try again.\n"
"\n"
msgstr ""

#: ../server/rhnChannel.py:2012
#, python-format
msgid "Insufficient subscription permissions for release (%s, %s"
msgstr ""

#. Various messages that can be reused
#.
#. bretm 02/07/2007 -- when we have better old-client documentation, probably
#. will be safe to get rid of all this crap
#: ../server/rhnChannel.py:2276 ../server/rhnChannel.py:2287
#: ../server/rhnChannel.py:2302
msgid "System Registered but Inactive"
msgstr ""

#: ../server/rhnChannel.py:2277
#, python-format
msgid ""
"\n"
"Invalid Architecture and OS release combination (%s, %s).\n"
"Your system has been registered, but will not receive updates\n"
"because it is not subscribed to a channel. If you have not yet\n"
"activated your product for service, please visit our website at:\n"
"\n"
"     http://www.redhat.com/apps/activate/\n"
"\n"
"...to activate your product."
msgstr ""

#: ../server/rhnChannel.py:2288
#, python-format
msgid ""
"\n"
"Invalid Architecture and OS release combination (%s, %s).\n"
"Your system has been registered, but will not receive updates\n"
"because it could not be subscribed to a base channel.\n"
"Please contact your organization administrator for assistance.\n"
msgstr ""

#: ../server/rhnChannel.py:2295
#, python-format
msgid ""
"\n"
"  This system has been successfully registered, but is not yet entitled\n"
"  to service.  To entitle this system to service, login to the web site at:\n"
"\n"
"  %(entitlement_url)s\n"
msgstr ""

#: ../server/rhnChannel.py:2303
#, python-format
msgid ""
"\n"
"  This system has been successfully registered, but no service entitlements\n"
"  were available.  To entitle this system to service, login to the web site "
"at:\n"
"\n"
"  %(entitlement_url)s\n"
msgstr ""

#: ../server/rhnHandler.py:62
msgid "Please run rhn_register as root on this client"
msgstr ""

#: ../server/rhnHandler.py:75
#, python-format
msgid "Service not enabled for system profile: \"%s\""
msgstr ""

#: ../server/rhnPackage.py:49 ../server/rhnPackage.py:87
#: ../server/rhnPackage.py:107 ../server/rhnPackage.py:158
#, python-format
msgid "Invalid RPM package %s requested"
msgstr ""

#: ../server/rhnPackage.py:112
msgid "Package not found"
msgstr ""

#: ../server/rhnServer/server_class.py:97
#, python-format
msgid "Architecture `%s' is not supported"
msgstr ""

#: ../server/rhnServer/server_token.py:78
#, python-format
msgid "Token `%s' has more than one base channel assigned"
msgstr ""

#: ../server/rhnServer/server_token.py:80
msgid "Conflicting base channels"
msgstr ""

#: ../server/rhnServer/server_token.py:190
#, python-format
msgid "Failed to add server to group %s"
msgstr ""

#: ../server/rhnServer/server_token.py:503
#, python-format
msgid "Maximum usage count of %s reached"
msgstr ""

#: ../server/rhnServer/server_token.py:744
msgid ""
"Stacking of re-registration tokens with different base entitlements is not "
"supported"
msgstr ""

#: ../server/rhnServer/server_token.py:811
#, python-format
msgid "Could not find token '%s'"
msgstr ""

#. Cannot use activation keys from different orgs
#: ../server/rhnServer/server_token.py:843
msgid "Tokens from mismatching orgs"
msgstr ""

#. Two tokens with different kickstart sessions
#: ../server/rhnServer/server_token.py:853
msgid "Kickstart session mismatch"
msgstr ""

#: ../server/rhnServer/server_token.py:877
msgid "Stacking of re-registration tokens is not supported"
msgstr ""

#: ../server/rhnUser.py:289 ../server/rhnUser.py:292
msgid "Invalid username/password combination"
msgstr ""

#. nope, not reserved either
#: ../server/rhnUser.py:467
#, python-format
msgid "Username `%s' has not been reserved"
msgstr ""

#. New accounts have to specify an e-mail address
#: ../server/rhnUser.py:473
msgid "E-mail address not specified"
msgstr ""

#: ../server/rhnUser.py:509
#, python-format
msgid "username should be at least %d characters"
msgstr ""

#: ../server/rhnUser.py:512
#, python-format
msgid "username should be less than %d characters"
msgstr ""

#: ../server/rhnUser.py:523
#, python-format
msgid "username = `%s', invalid character `%s'"
msgstr ""

#: ../server/rhnUser.py:542
#, python-format
msgid "Please limit your e-mail address to %s chars"
msgstr ""

#: ../server/rhnUser.py:623
#, python-format
msgid "password must be at least %d characters"
msgstr ""

#: ../server/rhnUser.py:626
#, python-format
msgid "Password must be shorter than %d characters"
msgstr ""

#: ../server/rhnUser.py:644
#, python-format
msgid "password contains character `%s'"
msgstr ""

#: ../server/rhnUser.py:651
#, python-format
msgid "username should be at least %d characters long"
msgstr ""

#: ../server/rhnUser.py:662
#, python-format
msgid "Cannot register usernames ending with %s"
msgstr ""

#. 0-999: Red Hat client/client-like interaction errors:
#: ../common/rhnException.py:53
msgid "This does not appear to be a valid username."
msgstr ""

#: ../common/rhnException.py:54
msgid "Invalid username and password combination."
msgstr ""

#: ../common/rhnException.py:55
msgid "This login is already taken, or the password is incorrect."
msgstr ""

#: ../common/rhnException.py:56
msgid "Permission denied."
msgstr ""

#: ../common/rhnException.py:57
msgid "Object not found."
msgstr ""

#: ../common/rhnException.py:58
msgid "Invalid System Digital ID."
msgstr ""

#: ../common/rhnException.py:59
msgid "Invalid System Credentials."
msgstr ""

#: ../common/rhnException.py:60
msgid "Could not retrieve user data from database."
msgstr ""

#: ../common/rhnException.py:61
msgid "Valid username required."
msgstr ""

#: ../common/rhnException.py:62
msgid "Valid password required."
msgstr ""

#: ../common/rhnException.py:63
msgid "Minimum username length violation."
msgstr ""

#: ../common/rhnException.py:64
msgid "Minimum password length violation."
msgstr ""

#: ../common/rhnException.py:65
msgid "The username contains invalid characters."
msgstr ""

#: ../common/rhnException.py:66
msgid "File not found."
msgstr ""

#: ../common/rhnException.py:67
msgid "Architecture and OS version combination is not supported."
msgstr ""

#: ../common/rhnException.py:68
msgid "Could not retrieve system data from database."
msgstr ""

#: ../common/rhnException.py:69
msgid "Invalid arguments passed to function."
msgstr ""

#: ../common/rhnException.py:70
msgid "Unable to retrieve requested entry."
msgstr ""

#: ../common/rhnException.py:71
msgid "Could not update database entry."
msgstr ""

#: ../common/rhnException.py:72
msgid "Unsupported server architecture."
msgstr ""

#: ../common/rhnException.py:73
#, python-format
msgid ""
"\n"
"     The anonymous server functionality is no longer available.\n"
"\n"
"     Please re-register this system by running mgr_register as root.\n"
"     Please visit https://%(hostname)s/rhn/systems/SystemEntitlements.do\n"
"     or login at https://%(hostname)s, and from the \"Overview\" tab,\n"
"     select \"Subscription Management\" to enable the service for this "
"system.\n"
"     "
msgstr ""

#: ../common/rhnException.py:81
msgid "Record not available in the database."
msgstr ""

#: ../common/rhnException.py:82
msgid "Invalid value for entry."
msgstr ""

#: ../common/rhnException.py:83
#, python-format
msgid ""
"\n"
"     This system does not have a valid entitlement for SUSE Manager.\n"
"     Please visit https://%(hostname)s/rhn/systems/SystemEntitlements.do\n"
"     or login at https://%(hostname)s, and from the \"Overview\" tab,\n"
"     select \"Subscription Management\" to enable the service for this "
"system.\n"
"     "
msgstr ""

#: ../common/rhnException.py:89
msgid "Channel error"
msgstr ""

#: ../common/rhnException.py:90
msgid "Client session token is invalid."
msgstr ""

#: ../common/rhnException.py:91
msgid "Client session token has expired."
msgstr ""

#: ../common/rhnException.py:92
msgid "You are not authorized to retrieve the requested object."
msgstr ""

#: ../common/rhnException.py:93
msgid "Invalid action"
msgstr ""

#: ../common/rhnException.py:94
msgid "You are not allowed to perform administrative tasks on this system."
msgstr ""

#: ../common/rhnException.py:96
msgid "The system is already subscribed to the specified channel."
msgstr ""

#: ../common/rhnException.py:97
msgid "The system is not currently subscribed to the specified channel."
msgstr ""

#: ../common/rhnException.py:98
msgid "The specified channel does not exist."
msgstr ""

#: ../common/rhnException.py:99
msgid "Invalid channel version."
msgstr ""

#: ../common/rhnException.py:100
msgid ""
"\n"
"     User group membership limits exceeded.\n"
"\n"
"     The current settings for your account do not allow you to add another\n"
"     user account. Please check with the organization administrator for "
"your\n"
"     account if the maximum number of users allowed to subscribe to server "
"needs\n"
"     to be changed.\n"
"     "
msgstr ""

#: ../common/rhnException.py:108
msgid ""
"\n"
"     System group membership limits exceeded.\n"
"\n"
"     The current settings for your account do not allow you to add another\n"
"     system profile. Please check with the organization administrator for "
"your\n"
"     account for modifying the maximum number of system profiles that can "
"be\n"
"     subscribed to your account.\n"
"     "
msgstr ""

#: ../common/rhnException.py:116
msgid ""
"\n"
"     Invalid architecture.\n"
"\n"
"     The architecture of the package is not supported by\n"
"     "
msgstr ""

#: ../common/rhnException.py:121
msgid "Invalid RPM header"
msgstr ""

#: ../common/rhnException.py:122
msgid ""
"\n"
"    This system is already registered as a Salt Minion. If you want to "
"register it as a traditional client\n"
"    please delete it first via the web UI or API and then register it using "
"the traditional tools.\n"
"    "
msgstr ""

#. For the uploading tools
#: ../common/rhnException.py:127
msgid "Invalid information uploaded to the server"
msgstr ""

#: ../common/rhnException.py:128
msgid "Error uploading network interfaces configuration."
msgstr ""

#: ../common/rhnException.py:129
msgid ""
"\n"
"     Package Upload Failed due to uniqueness constraint violation.\n"
"     Make sure the package does not have any duplicate dependencies or\n"
"     does not already exists on the server\n"
"     "
msgstr ""

#: ../common/rhnException.py:134
msgid ""
"\n"
"     The --force rhnpush option is disabled on this server.\n"
"     Please contact your SUSE Manager administrator for more help.\n"
"     "
msgstr ""

#. 60-70: token errors
#: ../common/rhnException.py:140
msgid ""
"\n"
"     The activation token specified could not be found on the server.\n"
"     Please retry with a valid key.\n"
"     "
msgstr ""

#: ../common/rhnException.py:144
msgid "Too many systems registered using this registration token"
msgstr ""

#: ../common/rhnException.py:145
msgid "Token contains invalid, obsoleted or insufficient settings"
msgstr ""

#: ../common/rhnException.py:146
msgid "Conflicting activation tokens"
msgstr ""

#. 70-80: channel subscription errors
#: ../common/rhnException.py:149
msgid ""
"\n"
"     No matching base channel found for your system.\n"
"     "
msgstr ""

#: ../common/rhnException.py:152
msgid ""
"\n"
"     You do not have subscription permission to the designated channel.\n"
"     Please refer to your organization's channel or organization\n"
"     administrators for further details.\n"
"     "
msgstr ""

#: ../common/rhnException.py:157
msgid "You can not unsubscribe from base channel."
msgstr ""

#: ../common/rhnException.py:158
msgid "SUSE Manager or Proxy channel can not be subscribed."
msgstr ""

#. 80-90: server group errors
#: ../common/rhnException.py:161
msgid "There was an error while trying to join the system to its groups"
msgstr ""

#. 90-100: entitlement errors
#: ../common/rhnException.py:164
msgid "Unable to entitle system"
msgstr ""

#. 100-109: e-mail and uuid related faults
#: ../common/rhnException.py:167
msgid "Maximum e-mail length violation."
msgstr ""

#: ../common/rhnException.py:168
msgid "This system has been previously registered."
msgstr ""

#: ../common/rhnException.py:169
msgid "Invalid username"
msgstr ""

#. 140-159 applet errors
#: ../common/rhnException.py:172
msgid "Unable to look up server"
msgstr ""

#. 160-179: OSAD errors
#: ../common/rhnException.py:175
msgid "Required argument is missing"
msgstr ""

#. 600-699: RHEL5+ EN errors
#: ../common/rhnException.py:178
msgid "No entitlement information tied to hardware"
msgstr ""

#: ../common/rhnException.py:179
msgid "Installation number is not entitling"
msgstr ""

#. 700-799: Additional user input verification errors.
#: ../common/rhnException.py:182
msgid "Maximum username length violation"
msgstr ""

#: ../common/rhnException.py:183
msgid "Maximum password length violation"
msgstr ""

#: ../common/rhnException.py:184
msgid "This user has read only API access. Action denied."
msgstr ""

#: ../common/rhnException.py:186
msgid "System Name cannot be less than 1 character"
msgstr ""

#. 1000-1999: Proxy specific errors:
#. issued by a Proxy to the client
#: ../common/rhnException.py:190
msgid "SUSE Manager Proxy error."
msgstr ""

#: ../common/rhnException.py:191
msgid "SUSE Manager Proxy unable to login."
msgstr ""

#. issued by a SUSE Manager Server/Satellite to the proxy
#: ../common/rhnException.py:193
msgid ""
"\n"
"     SUSE Manager Proxy system ID does not match a Spacewalk Proxy Server\n"
"     in the database.\n"
"     "
msgstr ""

#: ../common/rhnException.py:197
msgid "SUSE Manager Proxy session token is invalid."
msgstr ""

#: ../common/rhnException.py:198
msgid "SUSE Manager Proxy session token has expired."
msgstr ""

#. 2000-2999: Red Hat Satellite specific errors:
#: ../common/rhnException.py:202
msgid ""
"\n"
"      user creation is not allowed via mgr_register;\n"
"     please contact your sysadmin to have your account created.\n"
"     "
msgstr ""

#: ../common/rhnException.py:206
msgid ""
"\n"
"     This SUSE Manager server is not allowed to use Inter Server Sync on "
"this server\n"
"     "
msgstr ""

#: ../common/rhnException.py:209
msgid ""
"\n"
"     Inter Server Sync is disabled on this SUSE Manager Server.\n"
"     "
msgstr ""

#. 3000-3999: XML dumper errors:
#: ../common/rhnException.py:214
msgid "Invalid datatype passed"
msgstr ""

#: ../common/rhnException.py:215
msgid "Unable to retrieve channel"
msgstr ""

#: ../common/rhnException.py:216
msgid "Unable to retrieve package"
msgstr ""

#: ../common/rhnException.py:217
msgid "Unable to retrieve erratum"
msgstr ""

#: ../common/rhnException.py:218
msgid "File is missing"
msgstr ""

#: ../common/rhnException.py:219
msgid "Function retrieval error"
msgstr ""

#: ../common/rhnException.py:220
msgid "Function execution error"
msgstr ""

#: ../common/rhnException.py:221
msgid "Missing version string"
msgstr ""

#: ../common/rhnException.py:222
msgid "Invalid version string"
msgstr ""

#: ../common/rhnException.py:223
msgid "Mismatching versions"
msgstr ""

#: ../common/rhnException.py:224
msgid "Invalid channel version"
msgstr ""

#: ../common/rhnException.py:225
msgid "No comps file for channel"
msgstr ""

#: ../common/rhnException.py:226
msgid "Unable to retrieve comps file"
msgstr ""

#. 4000 - 4999: config management errors
#: ../common/rhnException.py:229
msgid "Configuration action missing"
msgstr ""

#: ../common/rhnException.py:230
msgid "File too large"
msgstr ""

#: ../common/rhnException.py:231
msgid "File contains binary data"
msgstr ""

#: ../common/rhnException.py:232
msgid "Configuration channel is not empty"
msgstr ""

#: ../common/rhnException.py:233
msgid "Permission error"
msgstr ""

#: ../common/rhnException.py:234
msgid "Content missing for configuration file"
msgstr ""

#: ../common/rhnException.py:235
msgid "Template delimiters not specified"
msgstr ""

#: ../common/rhnException.py:236
msgid "Configuration channel does not exist"
msgstr ""

#: ../common/rhnException.py:237
msgid "Configuration channel already exists"
msgstr ""

#: ../common/rhnException.py:238
msgid "File missing from configuration channel"
msgstr ""

#: ../common/rhnException.py:239
msgid "Different revision of this file is uploaded"
msgstr ""

#: ../common/rhnException.py:240
msgid "File already uploaded to configuration channel"
msgstr ""

#: ../common/rhnException.py:241
msgid "File size exceeds remaining quota space"
msgstr ""

#: ../common/rhnException.py:242
msgid "Full path of file must be specified"
msgstr ""

#: ../common/rhnException.py:243
msgid "Invalid revision number"
msgstr ""

#: ../common/rhnException.py:244
msgid "Cannot compare files of different file type"
msgstr ""

#. 5000 - 5999: client content uploading errors
#. 5000 - 5099: crash reporting errors
#: ../common/rhnException.py:248
msgid "Crash information is invalid or incomplete"
msgstr ""

#: ../common/rhnException.py:249
msgid "Crash file information is invalid or incomplete"
msgstr ""

#: ../common/rhnException.py:250
msgid "Error composing crash directory path"
msgstr ""

#: ../common/rhnException.py:251
msgid "Error composing crash file path"
msgstr ""

#: ../common/rhnException.py:252 ../common/rhnException.py:259
msgid "Invalid content encoding"
msgstr ""

#: ../common/rhnException.py:253
msgid "Invalid crash name"
msgstr ""

#: ../common/rhnException.py:254
msgid "Crash reporting is disabled for this organization"
msgstr ""

#. 5100 - 5199: scap results reporting error
#: ../common/rhnException.py:256
msgid "SCAP results file transfer is invalid or incomplete"
msgstr ""

#: ../common/rhnException.py:257
msgid "Error composing directory path for detailed SCAP results"
msgstr ""

#: ../common/rhnException.py:258
msgid "Error composing file path for detailed SCAP results"
msgstr ""

#: ../common/rhnException.py:306
msgid ""
"\n"
"     An error has occurred while processing your request. If this problem\n"
"     persists please enter a bug report at scc.suse.com.\n"
"     If you choose to submit the bug report, please be sure to include\n"
"     details of what you were trying to do when this error occurred and\n"
"     details on how to reproduce this problem.\n"
msgstr ""

#: ../common/rhnException.py:358
#, python-format
msgid ""
"Error Message:\n"
"    %s\n"
msgstr ""

#: ../common/rhnException.py:360
#, python-format
msgid "Error Class Code: %s\n"
msgstr ""

#: ../common/rhnException.py:363
#, python-format
msgid "Error Class Info: %s\n"
msgstr ""

#: ../common/rhnException.py:365
#, python-format
msgid "Explanation: %s"
msgstr ""

#: ../common/rhnTB.py:205
#, python-format
msgid "ERROR: %s %s: %s"
msgstr ""

#: ../common/rhnTB.py:207
#, python-format
msgid "TRACEBACK: %s"
msgstr ""

#: ../satellite_tools/disk_dumper/iss.py:1294
#: ../satellite_tools/disk_dumper/iss.py:1298
#, python-format
msgid "format of %s should be at least YYYYMMDD.\n"
msgstr ""

#: ../satellite_tools/messages.py:26
#, python-format
msgid ""
"\n"
"ERROR: executing step %s. Error is:\n"
"%s\n"
msgstr ""

#: ../satellite_tools/messages.py:31
#, python-format
msgid ""
"\n"
"ERROR: there was a problem accessing the channel data from your temporary\n"
"       repository. Did you migrate all of the data from the channel ISOs\n"
"       do this directory? If so, please recheck the channels ISOs, ensure\n"
"       that you have them all, and then iteratively remount and repopulate\n"
"       the temporary repository (%s).\n"
msgstr ""

#: ../satellite_tools/messages.py:39
#, python-format
msgid ""
"\n"
"ERROR: there was a problem synchronizing the information.\n"
"       Error message: %s\n"
msgstr ""

#: ../satellite_tools/messages.py:44
#, python-format
msgid ""
"\n"
"ERROR: There was a problem communicating with the ISS Master.\n"
"       Depending on the specific error details, please review your "
"configuration,\n"
"       basic network connectivity, and/or name resolution, and try again.\n"
"       Error message: %s\n"
msgstr ""

#: ../satellite_tools/messages.py:51
#, python-format
msgid ""
"\n"
"ERROR: There was a problem communicating with the ISS Master.\n"
"       If the master satellite is older than v5.3, it does not have ISS "
"capability.\n"
"       Otherwise, depending on the specific error details, please review "
"your\n"
"       configuration, basic network connectivity, and/or name resolution, "
"and try again.\n"
"       Error message: %s\n"
msgstr ""

#: ../satellite_tools/messages.py:59
#, python-format
msgid ""
"\n"
"ERROR: a child-channel cannot be synced without its parent being synced as\n"
"       well. A parent needs to be either (a) previously synced or (b) "
"synced\n"
"       in tandem with the desired child-channel. Missing parents for this\n"
"       transaction:\n"
"       %s\n"
msgstr ""

#: ../satellite_tools/messages.py:67
#, python-format
msgid ""
"\n"
"ERROR: you are not entitled to sync a channel in this set of channels.\n"
"Please contact your SUSE Manager contact\n"
"%s"
msgstr ""

#: ../satellite_tools/messages.py:72
#, python-format
msgid "  ERROR: not enough free space (%s KB) on device."
msgstr ""

#: ../satellite_tools/messages.py:74
#, python-format
msgid "    %3d/%s Fetch successful: %s (%s bytes)"
msgstr ""

#: ../satellite_tools/messages.py:75
#, python-format
msgid "    Extinct package:  %s"
msgstr ""

#: ../satellite_tools/messages.py:76
#, python-format
msgid "   Total size: %s"
msgstr ""

#: ../satellite_tools/messages.py:77
#, python-format
msgid "      Downloaded %s of %s. Estimated remaining time: %s"
msgstr ""

#: ../satellite_tools/messages.py:78
#, python-format
msgid "    Fetch unsuccessful: %s"
msgstr ""

#: ../satellite_tools/messages.py:79
#, python-format
msgid "   RPM fetch summary: %s"
msgstr ""

#: ../satellite_tools/messages.py:80
#, python-format
msgid "       success: %d"
msgstr ""

#: ../satellite_tools/messages.py:81
#, python-format
msgid "       failed:  %d"
msgstr ""

#: ../satellite_tools/messages.py:82
#, python-format
msgid "       extinct: %d"
msgstr ""

#: ../satellite_tools/messages.py:84
#, python-format
msgid "   Retrieving / parsing *relevant* package metadata: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:85
#, python-format
msgid "   Retrieving / parsing errata data: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:86
#, python-format
msgid "   Retrieving / parsing kickstart data: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:87
#, python-format
msgid "   Retrieving / parsing kickstart tree files: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:88
#, python-format
msgid "   Importing *relevant* package metadata: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:89
msgid "   * WARNING: this may be a slow process."
msgstr ""

#: ../satellite_tools/messages.py:90
msgid "Linking packages to channels"
msgstr ""

#: ../satellite_tools/messages.py:91
#, python-format
msgid "   Importing *relevant* errata: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:92
msgid "   No new kickstartable tree to import"
msgstr ""

#: ../satellite_tools/messages.py:93
#, python-format
msgid "Importing kickstartable trees (%d)"
msgstr ""

#: ../satellite_tools/messages.py:94
#, python-format
msgid "Imported kickstartable trees (%d)"
msgstr ""

#: ../satellite_tools/reposync.py:111 ../satellite_tools/satsync.py:439
msgid "+++ sending log as an email +++"
msgstr ""

#: ../satellite_tools/reposync.py:114
#, python-format
msgid "%s sync. report from %s"
msgstr ""

#: ../satellite_tools/reposync.py:124 ../satellite_tools/satsync.py:449
msgid "+++ email requested, but there is nothing to send +++"
msgstr ""

#: ../satellite_tools/rhn_satellite_activate.py:198
#, python-format
msgid ""
"\"%s\" (specified in commandline)\n"
"could not be opened and read:\n"
"%s"
msgstr ""

#: ../satellite_tools/rhn_satellite_activate.py:205
#, python-format
msgid ""
"\"%s\" could not be opened\n"
"and/or written to:\n"
"%s"
msgstr ""

#: ../satellite_tools/satsync.py:258
#, python-format
msgid "No handler for step %s"
msgstr ""

#. Try one more time - this time it should be faster since
#. everything should be cached
#: ../satellite_tools/satsync.py:270
msgid "Environment changed, trying again..."
msgstr ""

#: ../satellite_tools/satsync.py:277
msgid "ERROR: Encountered IntegrityError: \n"
msgstr ""

#: ../satellite_tools/satsync.py:285
msgid "Repeated failures"
msgstr ""

#: ../satellite_tools/satsync.py:290
#, python-format
msgid ""
"    Import complete:\n"
"        Begin time: %s\n"
"        End time:   %s\n"
"        Elapsed:    %s\n"
"          "
msgstr ""

#: ../satellite_tools/satsync.py:311
msgid "hours"
msgstr ""

#: ../satellite_tools/satsync.py:311
msgid "minutes"
msgstr ""

#: ../satellite_tools/satsync.py:311
msgid "seconds"
msgstr ""

#: ../satellite_tools/satsync.py:357
msgid ""
"ERROR: The dump is missing package data, use --no-rpms to skip this step or "
"fix the content to include package data."
msgstr ""

#. the orgs() method doesn't exist; that's fine we just
#. won't sync the orgs
#: ../satellite_tools/satsync.py:404
msgid "The SUSE Manager master does not support syncing orgs data."
msgstr ""

#: ../satellite_tools/satsync.py:404
msgid "Skipping..."
msgstr ""

#: ../satellite_tools/satsync.py:442
#, python-format
msgid "SUSE Manager Inter Server sync. report from %s"
msgstr ""

#: ../satellite_tools/satsync.py:521
msgid " - file-system synchronization"
msgstr ""

#: ../satellite_tools/satsync.py:533 ../satellite_tools/satsync.py:541
msgid " - live synchronization"
msgstr ""

#: ../satellite_tools/satsync.py:534
#, python-brace-format
msgid ""
"ERROR: Live content synchronizing with RHN Classic Hosted is no longer "
"supported.\n"
"Please use the cdn-sync command instead unless you are attempting to sync "
"from another {PRODUCT_NAME} via Inter-Server-Sync (ISS), or from local "
"content on disk via Channel Dump ISOs."
msgstr ""

#: ../satellite_tools/satsync.py:542
#, python-format
msgid "   url: %s"
msgstr ""

#: ../satellite_tools/satsync.py:543
#, python-format
msgid "   debug/output level: %s"
msgstr ""

#: ../satellite_tools/satsync.py:553
msgid "ERROR: this server must be registered with SUSE Manager."
msgstr ""

#: ../satellite_tools/satsync.py:575
#, python-format
msgid "Retrieving / parsing %s data"
msgstr ""

#: ../satellite_tools/satsync.py:585 ../satellite_tools/satsync.py:600
msgid "*** SYSTEM INTERRUPT CALLED ***"
msgstr ""

#: ../satellite_tools/satsync.py:593
msgid "ERROR: fatal parser exception occurred "
msgstr ""

#: ../satellite_tools/satsync.py:594
#, python-format
msgid "(line: %s, col: %s msg: %s)"
msgstr ""

#: ../satellite_tools/satsync.py:598
#, python-format
msgid "ERROR: parser exception occurred: %s"
msgstr ""

#: ../satellite_tools/satsync.py:603
msgid "ERROR: exception (during parse) occurred: "
msgstr ""

#: ../satellite_tools/satsync.py:604
#, python-format
msgid ""
"   Encountered some errors with %s data (see logs (%s) for more information)"
msgstr ""

#: ../satellite_tools/satsync.py:606
#, python-format
msgid "   Encountered some errors with %s data:"
msgstr ""

#: ../satellite_tools/satsync.py:607
#, python-format
msgid "   ------- %s PARSE/IMPORT ERROR -------"
msgstr ""

#: ../satellite_tools/satsync.py:609
msgid "   ---------------------------------------"
msgstr ""

#: ../satellite_tools/satsync.py:612
#, python-format
msgid "%s data complete"
msgstr ""

#: ../satellite_tools/satsync.py:665
msgid "Retrieving / parsing channel data"
msgstr ""

#: ../satellite_tools/satsync.py:718
msgid "Channel data complete"
msgstr ""

#: ../satellite_tools/satsync.py:736
#, python-format
msgid "%10s import from %s"
msgstr ""

#: ../satellite_tools/satsync.py:739
#, python-format
msgid "%10s import from %s - %s"
msgstr ""

#: ../satellite_tools/satsync.py:743
#, python-format
msgid "%10s"
msgstr ""

#: ../satellite_tools/satsync.py:750
msgid "p"
msgstr ""

#: ../satellite_tools/satsync.py:752
msgid "."
msgstr ""

#: ../satellite_tools/satsync.py:758
msgid "   p = previously imported/synced channel"
msgstr ""

#: ../satellite_tools/satsync.py:759
msgid "   . = channel not yet imported/synced"
msgstr ""

#: ../satellite_tools/satsync.py:765
msgid "   e = channel no longer supported (end-of-service)"
msgstr ""

#: ../satellite_tools/satsync.py:767
msgid "   ? = channel label invalid --- typo?"
msgstr ""

#: ../satellite_tools/satsync.py:771
#, python-format
msgid "   %s:"
msgstr ""

#: ../satellite_tools/satsync.py:772
#, python-format
msgid "      %s %-40s %4s %s"
msgstr ""

#: ../satellite_tools/satsync.py:773
msgid "base-channels"
msgstr ""

#: ../satellite_tools/satsync.py:786 ../satellite_tools/satsync.py:1603
msgid "NONE RELEVANT"
msgstr ""

#: ../satellite_tools/satsync.py:808
msgid "end-of-service"
msgstr ""

#: ../satellite_tools/satsync.py:809
msgid "e"
msgstr ""

#: ../satellite_tools/satsync.py:815
msgid "   typos:"
msgstr ""

#: ../satellite_tools/satsync.py:816
msgid "?"
msgstr ""

#: ../satellite_tools/satsync.py:831
#, python-format
msgid "XXX: imported channels: %s"
msgstr ""

#: ../satellite_tools/satsync.py:832
#, python-format
msgid "XXX:   cached channels: %s"
msgstr ""

#: ../satellite_tools/satsync.py:837
msgid "XXX: list channels called"
msgstr ""

#: ../satellite_tools/satsync.py:855
msgid "ERROR: these channels either do not exist or are not available:"
msgstr ""

#: ../satellite_tools/satsync.py:859
#, python-format
msgid "       (to see a list of channel labels: %s --list-channels)"
msgstr ""

#: ../satellite_tools/satsync.py:904
#, python-format
msgid "   Retrieving / parsing short package metadata: %s (%s)"
msgstr ""

#: ../satellite_tools/satsync.py:965
#, python-format
msgid "Diffing package metadata (what's missing locally?): %s"
msgstr ""

#: ../satellite_tools/satsync.py:971 ../satellite_tools/satsync.py:1254
msgid "Diffing:    "
msgstr ""

#: ../satellite_tools/satsync.py:988
msgid "ERROR: incremental dump skipped"
msgstr ""

#: ../satellite_tools/satsync.py:1079
msgid "Downloading rpm packages"
msgstr ""

#: ../satellite_tools/satsync.py:1084
#, python-format
msgid "   Fetching any missing RPMs: %s (%s)"
msgstr ""

#: ../satellite_tools/satsync.py:1085 ../satellite_tools/satsync.py:1153
msgid "NONE MISSING"
msgstr ""

#: ../satellite_tools/satsync.py:1094
msgid "Processing rpm packages complete"
msgstr ""

#: ../satellite_tools/satsync.py:1121
msgid "Downloading package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1146
msgid "Downloading srpm packages"
msgstr ""

#: ../satellite_tools/satsync.py:1152
#, python-format
msgid "   Fetching any missing SRPMs: %s (%s)"
msgstr ""

#: ../satellite_tools/satsync.py:1249
#, python-format
msgid "Diffing source package metadata (what's missing locally?): %s"
msgstr ""

#: ../satellite_tools/satsync.py:1260
msgid "Downloading source package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1338 ../satellite_tools/satsync.py:2027
#, python-format
msgid "Unable to save file %s: %s"
msgstr ""

#. for
#. Retried a number of times and it still failed; log the
#. file as being failed and move on
#: ../satellite_tools/satsync.py:1345
#, python-format
msgid "Failed to fetch file %s"
msgstr ""

#: ../satellite_tools/satsync.py:1350
msgid "Downloading kickstartable trees metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1365
msgid "Downloading kickstartable trees files"
msgstr ""

#: ../satellite_tools/satsync.py:1504
#, python-format
msgid "Grabbing all patches for channel %s"
msgstr ""

#: ../satellite_tools/satsync.py:1554
msgid "Downloading patch data"
msgstr ""

#: ../satellite_tools/satsync.py:1556
msgid "Forcing download of all patch data for requested channels."
msgstr ""

#: ../satellite_tools/satsync.py:1571
msgid "Downloading patch data complete"
msgstr ""

#: ../satellite_tools/satsync.py:1576 ../satellite_tools/satsync.py:1597
msgid "Downloading:"
msgstr ""

#: ../satellite_tools/satsync.py:1579
msgid " - complete"
msgstr ""

#: ../satellite_tools/satsync.py:1624
msgid "Importing source package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1627
msgid "Importing package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1635
msgid "Importing:  "
msgstr ""

#. not in the cache
#: ../satellite_tools/satsync.py:1703
msgid ""
"Package Not Found in Cache, Clear the Cache "
"to                                  Regenerate it."
msgstr ""

#: ../satellite_tools/satsync.py:1709
msgid "Importing channel patches"
msgstr ""

#: ../satellite_tools/satsync.py:1714
#, python-format
msgid "Importing %s patches for channel %s."
msgstr ""

#. Incomplete configuration
#: ../satellite_tools/satsync.py:2113
msgid "ERROR: server.mount_point not set in the configuration file"
msgstr ""

#: ../satellite_tools/satsync.py:2117
#, python-format
msgid "ERROR: server.mount_point %s do not exist"
msgstr ""

#: ../satellite_tools/satsync.py:2122
#, python-format
msgid "ERROR: path under server.mount_point (%s)  do not exist"
msgstr ""

#: ../satellite_tools/satsync.py:2199
#, python-format
msgid "Commandline: %s"
msgstr ""

#: ../satellite_tools/satsync.py:2202
#, python-format
msgid ""
"DEBUG ONLY: max. batch-size for XML/database-import processing (1..%s).\"man "
"satellite-sync\" for more information."
msgstr ""

#: ../satellite_tools/satsync.py:2205
msgid "alternative SSL CA Cert (fullpath to cert file)"
msgstr ""

#: ../satellite_tools/satsync.py:2207
msgid "process data for this channel only"
msgstr ""

#: ../satellite_tools/satsync.py:2209
msgid ""
"disk dump will be considered to be a full export; see \"man satellite-sync\" "
"for more information."
msgstr ""

#: ../satellite_tools/satsync.py:2212
msgid "existing custom channels will also be synced (unless -c is used)"
msgstr ""

#: ../satellite_tools/satsync.py:2214
#, python-format
msgid ""
"override debug level set in /etc/rhn/rhn.conf (which is currently set at %s)."
msgstr ""

#: ../satellite_tools/satsync.py:2216
#, python-format
msgid "requested version of XML dump (default: %s)"
msgstr ""

#: ../satellite_tools/satsync.py:2218
msgid "e-mail a report of what was synced/imported"
msgstr ""

#: ../satellite_tools/satsync.py:2220
msgid "forcibly process all (not a diff of) patch metadata"
msgstr ""

#: ../satellite_tools/satsync.py:2222
msgid "Do not use an http proxy under any circumstances."
msgstr ""

#: ../satellite_tools/satsync.py:2224
msgid "alternative http proxy (hostname:port)"
msgstr ""

#: ../satellite_tools/satsync.py:2226
msgid "alternative http proxy username"
msgstr ""

#: ../satellite_tools/satsync.py:2228
msgid "alternative http proxy password"
msgstr ""

#: ../satellite_tools/satsync.py:2230
msgid "parent SUSE Manager to import content from"
msgstr ""

#: ../satellite_tools/satsync.py:2232
msgid "list all available channels and exit"
msgstr ""

#: ../satellite_tools/satsync.py:2234
msgid "help on all error codes mgr-inter-sync returns"
msgstr ""

#: ../satellite_tools/satsync.py:2236
msgid "source mount point for import - disk update only"
msgstr ""

#: ../satellite_tools/satsync.py:2238
msgid "do not process patch data"
msgstr ""

#: ../satellite_tools/satsync.py:2240
msgid "do not process kickstart data (provisioning only)"
msgstr ""

#: ../satellite_tools/satsync.py:2242
msgid "do not process full package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:2244
msgid "do not download, or process any RPMs"
msgstr ""

#: ../satellite_tools/satsync.py:2246
msgid "turn off SSL (not recommended)"
msgstr ""

#: ../satellite_tools/satsync.py:2248
msgid "org to which the sync imports data. defaults to the admin account"
msgstr ""

#: ../satellite_tools/satsync.py:2250
msgid "print the configuration and exit"
msgstr ""

#: ../satellite_tools/satsync.py:2252
msgid "alternative server with which to connect (hostname)"
msgstr ""

#: ../satellite_tools/satsync.py:2254
msgid "synchronize to this step (man satellite-sync for more info)"
msgstr ""

#: ../satellite_tools/satsync.py:2256
msgid "write complete data to tempfile before streaming to remainder of app"
msgstr ""

#: ../satellite_tools/satsync.py:2258
msgid "DEBUG ONLY: alternative path to digital system id"
msgstr ""

#: ../satellite_tools/satsync.py:2260
msgid "alternative email address(es) for sync output (--email option)"
msgstr ""

#: ../satellite_tools/satsync.py:2262
msgid "do not remove rpms when importing from local dump"
msgstr ""

#: ../satellite_tools/satsync.py:2264
msgid ""
"the fully qualified domain name of the master Satellite. Valid with --mount-"
"point only. Required if you want to import org data and channel permissions."
msgstr ""

#: ../satellite_tools/satsync.py:2274
#, python-format
msgid "ERROR: these arguments make no sense in this context (try --help): %s"
msgstr ""

#. An SQL error is fatal... crash and burn
#: ../satellite_tools/satsync.py:2286
#, python-format
msgid "ERROR: Can't connect to the database: %s"
msgstr ""

#: ../satellite_tools/satsync.py:2287
msgid "ERROR: Check if your database is running."
msgstr ""

#: ../satellite_tools/satsync.py:2322
#, python-format
msgid "ERROR: --debug-level takes an in integer value within the range %s."
msgstr ""

#: ../satellite_tools/satsync.py:2324
msgid "  0  - little logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2325
msgid "  1  - minimal logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2326
msgid "  2  - normal level of logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2327
msgid "  3  - lots of logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2328
msgid "  4+ - excessive logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2341
msgid "ERROR: The --master option is only valid with the --mount-point option"
msgstr ""

#: ../satellite_tools/satsync.py:2351
#, python-format
msgid "ERROR: Unable to lookup Org Id %s"
msgstr ""

#: ../satellite_tools/satsync.py:2360
msgid ""
"WARNING: --list-channels option overrides any --step option. --step ignored."
msgstr ""

#: ../satellite_tools/satsync.py:2375
#, python-format
msgid ""
"ERROR: '%s' is not a valid step. See 'man mgr-inter-sync' for more detail."
msgstr ""

#: ../satellite_tools/satsync.py:2407
msgid ""
"ERROR: No channels currently imported; try mgr-inter-sync --list-channels; "
"then mgr-inter-sync -c chn0 -c chn1..."
msgstr ""

#. int(None) --> TypeError
#. int('a')  --> ValueError
#: ../satellite_tools/satsync.py:2457 ../satellite_tools/satsync.py:2461
msgid "ERROR: --batch-size must have a value within the range: 1..50"
msgstr ""

#: ../satellite_tools/satsync.py:2469
#, python-format
msgid "ERROR: no such directory %s"
msgstr ""

#: ../satellite_tools/satsync.py:2474
msgid "Error Codes: Returned codes means:"
msgstr ""

#: ../satellite_tools/satsync.py:2475
msgid " -1  - Could not lock file or KeyboardInterrupt or SystemExit"
msgstr ""

#: ../satellite_tools/satsync.py:2476
msgid "  0  - User interrupted or intentional exit"
msgstr ""

#: ../satellite_tools/satsync.py:2477
msgid "  1  - attempting to run more than one instance of mgr-inter-sync."
msgstr ""

#: ../satellite_tools/satsync.py:2478
msgid "  2  - Unable to find synchronization tools."
msgstr ""

#: ../satellite_tools/satsync.py:2479
msgid "  3  - a general socket exception occurred"
msgstr ""

#: ../satellite_tools/satsync.py:2480
msgid "  4  - an SSL error occurred. Recheck your SSL settings."
msgstr ""

#: ../satellite_tools/satsync.py:2481
msgid "  5  - ISS error"
msgstr ""

#: ../satellite_tools/satsync.py:2482
msgid "  6  - unhandled exception occurred"
msgstr ""

#: ../satellite_tools/satsync.py:2483
msgid "  7  - unknown sync error"
msgstr ""

#: ../satellite_tools/satsync.py:2484
msgid "  8  - ERROR: must be root to execute"
msgstr ""

#: ../satellite_tools/satsync.py:2485
msgid "  9  - rpclib fault during synchronization init"
msgstr ""

#: ../satellite_tools/satsync.py:2486
msgid "  10 - synchronization init error"
msgstr ""

#: ../satellite_tools/satsync.py:2487
msgid "  11 - Error parsing XML stream"
msgstr ""

#: ../satellite_tools/satsync.py:2488
msgid "  12 - Channel do not exist"
msgstr ""

#: ../satellite_tools/satsync.py:2489
msgid "  13 - SQL error during importing package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:2490
msgid "  14 - SQL error during linking channel packages"
msgstr ""

#: ../satellite_tools/satsync.py:2491
msgid "  15 - SQL error during xml processing"
msgstr ""

#: ../satellite_tools/satsync.py:2492
msgid "  16 - server.mount_point not set in the configuration file"
msgstr ""

#: ../satellite_tools/satsync.py:2493
msgid ""
"  17 - SQL error during retrieving the channels already imported in the SUSE "
"Manager database"
msgstr ""

#: ../satellite_tools/satsync.py:2494
msgid "  18 - Wrong db connection string in rhn.conf"
msgstr ""

#: ../satellite_tools/satsync.py:2495
msgid "  19 - Bad arguments"
msgstr ""

#: ../satellite_tools/satsync.py:2496
msgid "  20 - Could not connect to db."
msgstr ""

#: ../satellite_tools/satsync.py:2497
msgid "  21 - Bad debug level"
msgstr ""

#: ../satellite_tools/satsync.py:2498
msgid "  22 - Not valid step"
msgstr ""

#: ../satellite_tools/satsync.py:2499
msgid "  24 - no such file"
msgstr ""

#: ../satellite_tools/satsync.py:2500
msgid "  25 - no such directory"
msgstr ""

#: ../satellite_tools/satsync.py:2501
msgid "  26 - mount_point does not exist"
msgstr ""

#: ../satellite_tools/satsync.py:2502
msgid "  27 - No such org"
msgstr ""

#: ../satellite_tools/satsync.py:2503
msgid "  28 - error: --master is only valid with --mount-point"
msgstr ""

#: ../satellite_tools/satsync.py:2510
#, python-format
msgid "ERROR: unknown dump version, try one of %s"
msgstr ""
   0707010000007E000081B40000000000000000000000016290A0C10000B661000000000000000000000000000000000000001B00000000spacewalk-backend/po/nb.po    # SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
#
# Translators:
# Espen Stefansen <espenas@gmail.com>, 2006.
# Kjartan Maraas <kmaraas@gnome.org>, 2003.
msgid ""
msgstr ""
"Project-Id-Version: Spacewalk\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-10-16 13:34+0200\n"
"PO-Revision-Date: 2011-03-04 16:08+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Norwegian BokmÃ¥l <i18n-nb@lister.ping.uio.no>\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"

#: ../server/apacheAuth.py:66
#, python-format
msgid "incomplete proxy authentication token: %s"
msgstr ""

#: ../server/apacheAuth.py:84
#, python-format
msgid "Sent proxy signature %s does not match ours %s."
msgstr ""

#: ../server/apacheAuth.py:119
msgid "declined proxy authentication"
msgstr ""

#: ../server/apacheRequest.py:59
#, python-format
msgid "Invalid request received (%s)."
msgstr ""

#: ../server/apacheRequest.py:120
#, python-format
msgid ""
"IMPORTANT MESSAGE FOLLOWS:\n"
"%s"
msgstr ""

#: ../server/apacheRequest.py:149
#, python-format
msgid ""
"While running '%s': caught\n"
"%s : %s\n"
msgstr ""

#: ../server/apacheRequest.py:606
#, python-format
msgid "Invalid URI %s"
msgstr ""

#: ../server/configFilesHandler.py:129 ../server/handlers/app/packages.py:192
#: ../server/handlers/xmlrpc/registration.py:215
#: ../server/handlers/xmlrpc/registration.py:1168
#: ../server/handlers/xmlrpc/registration.py:1307
#, python-format
msgid ""
"\n"
"                   %s Account has been deactivated on this server.\n"
"                   Please contact your Org administrator for more help."
msgstr ""

#: ../server/handlers/applet/applet.py:78
#, python-brace-format
msgid "Your system was not found in the {PRODUCT_NAME} database"
msgstr ""

#: ../server/handlers/sat/auth.py:45
msgid "ISS is disabled on this server."
msgstr ""

#: ../server/handlers/sat/auth.py:50
#, python-format
msgid "Server \"%s\" is not enabled for ISS."
msgstr ""

#: ../server/handlers/xmlrpc/errata.py:64
#, python-format
msgid "Expected a package name, not: %s"
msgstr ""

#: ../server/handlers/xmlrpc/errata.py:115
#, python-format
msgid "Expected a package, not: %s"
msgstr ""

#: ../server/handlers/xmlrpc/proxy.py:65
#, python-format
msgid "SUSE Manager Proxy service not enabled for server profile: \"%s\""
msgstr ""

#: ../server/handlers/xmlrpc/proxy.py:85
msgid "Invalid session key"
msgstr ""

#: ../server/handlers/xmlrpc/proxy.py:93
msgid "This server ID no longer exists"
msgstr ""

#: ../server/handlers/xmlrpc/queue.py:433
#, python-format
msgid "Invalid action value type %s (%s)"
msgstr ""

#: ../server/handlers/xmlrpc/queue.py:464
#, python-format
msgid "Action %s does not belong to server %s"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:194
msgid "Required data missing"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:198
msgid "Required members missing"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:207
msgid "Attempt to register a system to an invalid username"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:839
msgid "Invalid system release version requested"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1063
msgid ""
"Unable to find a valid network interface, both ipaddr and ip6addr not found."
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1115
#, python-brace-format
msgid "{PRODUCT_NAME} Welcome Message"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1125
msgid "Privacy Statement"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1146
msgid "Expected a dictionary as a product argument"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1374
#, python-format
msgid "Invalid value '%s' for %s (%s)"
msgstr ""

#: ../server/handlers/xmlrpc/scap.py:104
msgid "Invalid system_id/action_id pair."
msgstr ""

#: ../server/handlers/xmlrpc/up2date.py:233
#, python-format
msgid "Invalid value %s (%s)"
msgstr ""

#: ../server/importlib/userAuth.py:98
msgid "You are not authorized to manage packages in the null org"
msgstr ""

#: ../server/importlib/userAuth.py:103
#, python-format
msgid "You are not allowed to manage packages in the %s org"
msgstr ""

#: ../server/importlib/userAuth.py:121
msgid "You are not allowed to perform administrative tasks"
msgstr ""

#: ../server/importlib/userAuth.py:144
#, python-format
msgid ""
"You are not allowed to manage channel %s, or that channel does not exist"
msgstr ""

#: ../server/importlib/userAuth.py:204
#, python-format
msgid ""
"\n"
"               %s Account has been deactivated on this server.\n"
"               Please contact your Org administrator for more help."
msgstr ""

#: ../server/rhnChannel.py:1992
#, python-format
msgid ""
"Your account does not have access to any channels matching "
"(release='%(release)s', arch='%(arch)s')%(www_activation)s"
msgstr ""

#: ../server/rhnChannel.py:2002
msgid ""
"\n"
"If you have a registration number, please register with it first at http://"
"www.redhat.com/apps/activate/ and then try again.\n"
"\n"
msgstr ""

#: ../server/rhnChannel.py:2012
#, python-format
msgid "Insufficient subscription permissions for release (%s, %s"
msgstr ""

#. Various messages that can be reused
#.
#. bretm 02/07/2007 -- when we have better old-client documentation, probably
#. will be safe to get rid of all this crap
#: ../server/rhnChannel.py:2276 ../server/rhnChannel.py:2287
#: ../server/rhnChannel.py:2302
msgid "System Registered but Inactive"
msgstr ""

#: ../server/rhnChannel.py:2277
#, python-format
msgid ""
"\n"
"Invalid Architecture and OS release combination (%s, %s).\n"
"Your system has been registered, but will not receive updates\n"
"because it is not subscribed to a channel. If you have not yet\n"
"activated your product for service, please visit our website at:\n"
"\n"
"     http://www.redhat.com/apps/activate/\n"
"\n"
"...to activate your product."
msgstr ""

#: ../server/rhnChannel.py:2288
#, python-format
msgid ""
"\n"
"Invalid Architecture and OS release combination (%s, %s).\n"
"Your system has been registered, but will not receive updates\n"
"because it could not be subscribed to a base channel.\n"
"Please contact your organization administrator for assistance.\n"
msgstr ""

#: ../server/rhnChannel.py:2295
#, python-format
msgid ""
"\n"
"  This system has been successfully registered, but is not yet entitled\n"
"  to service.  To entitle this system to service, login to the web site at:\n"
"\n"
"  %(entitlement_url)s\n"
msgstr ""

#: ../server/rhnChannel.py:2303
#, python-format
msgid ""
"\n"
"  This system has been successfully registered, but no service entitlements\n"
"  were available.  To entitle this system to service, login to the web site "
"at:\n"
"\n"
"  %(entitlement_url)s\n"
msgstr ""

#: ../server/rhnHandler.py:62
msgid "Please run rhn_register as root on this client"
msgstr ""

#: ../server/rhnHandler.py:75
#, python-format
msgid "Service not enabled for system profile: \"%s\""
msgstr ""

#: ../server/rhnPackage.py:49 ../server/rhnPackage.py:87
#: ../server/rhnPackage.py:107 ../server/rhnPackage.py:158
#, python-format
msgid "Invalid RPM package %s requested"
msgstr ""

#: ../server/rhnPackage.py:112
msgid "Package not found"
msgstr ""

#: ../server/rhnServer/server_class.py:97
#, python-format
msgid "Architecture `%s' is not supported"
msgstr ""

#: ../server/rhnServer/server_token.py:78
#, python-format
msgid "Token `%s' has more than one base channel assigned"
msgstr ""

#: ../server/rhnServer/server_token.py:80
msgid "Conflicting base channels"
msgstr ""

#: ../server/rhnServer/server_token.py:190
#, python-format
msgid "Failed to add server to group %s"
msgstr ""

#: ../server/rhnServer/server_token.py:503
#, python-format
msgid "Maximum usage count of %s reached"
msgstr ""

#: ../server/rhnServer/server_token.py:744
msgid ""
"Stacking of re-registration tokens with different base entitlements is not "
"supported"
msgstr ""

#: ../server/rhnServer/server_token.py:811
#, python-format
msgid "Could not find token '%s'"
msgstr ""

#. Cannot use activation keys from different orgs
#: ../server/rhnServer/server_token.py:843
msgid "Tokens from mismatching orgs"
msgstr ""

#. Two tokens with different kickstart sessions
#: ../server/rhnServer/server_token.py:853
msgid "Kickstart session mismatch"
msgstr ""

#: ../server/rhnServer/server_token.py:877
msgid "Stacking of re-registration tokens is not supported"
msgstr ""

#: ../server/rhnUser.py:289 ../server/rhnUser.py:292
msgid "Invalid username/password combination"
msgstr ""

#. nope, not reserved either
#: ../server/rhnUser.py:467
#, python-format
msgid "Username `%s' has not been reserved"
msgstr ""

#. New accounts have to specify an e-mail address
#: ../server/rhnUser.py:473
msgid "E-mail address not specified"
msgstr ""

#: ../server/rhnUser.py:509
#, python-format
msgid "username should be at least %d characters"
msgstr ""

#: ../server/rhnUser.py:512
#, python-format
msgid "username should be less than %d characters"
msgstr ""

#: ../server/rhnUser.py:523
#, python-format
msgid "username = `%s', invalid character `%s'"
msgstr ""

#: ../server/rhnUser.py:542
#, python-format
msgid "Please limit your e-mail address to %s chars"
msgstr ""

#: ../server/rhnUser.py:623
#, python-format
msgid "password must be at least %d characters"
msgstr ""

#: ../server/rhnUser.py:626
#, python-format
msgid "Password must be shorter than %d characters"
msgstr ""

#: ../server/rhnUser.py:644
#, python-format
msgid "password contains character `%s'"
msgstr ""

#: ../server/rhnUser.py:651
#, python-format
msgid "username should be at least %d characters long"
msgstr ""

#: ../server/rhnUser.py:662
#, python-format
msgid "Cannot register usernames ending with %s"
msgstr ""

#. 0-999: Red Hat client/client-like interaction errors:
#: ../common/rhnException.py:53
msgid "This does not appear to be a valid username."
msgstr ""

#: ../common/rhnException.py:54
msgid "Invalid username and password combination."
msgstr ""

#: ../common/rhnException.py:55
msgid "This login is already taken, or the password is incorrect."
msgstr ""

#: ../common/rhnException.py:56
msgid "Permission denied."
msgstr ""

#: ../common/rhnException.py:57
msgid "Object not found."
msgstr ""

#: ../common/rhnException.py:58
msgid "Invalid System Digital ID."
msgstr ""

#: ../common/rhnException.py:59
msgid "Invalid System Credentials."
msgstr ""

#: ../common/rhnException.py:60
msgid "Could not retrieve user data from database."
msgstr ""

#: ../common/rhnException.py:61
msgid "Valid username required."
msgstr ""

#: ../common/rhnException.py:62
msgid "Valid password required."
msgstr ""

#: ../common/rhnException.py:63
msgid "Minimum username length violation."
msgstr ""

#: ../common/rhnException.py:64
msgid "Minimum password length violation."
msgstr ""

#: ../common/rhnException.py:65
msgid "The username contains invalid characters."
msgstr ""

#: ../common/rhnException.py:66
msgid "File not found."
msgstr ""

#: ../common/rhnException.py:67
msgid "Architecture and OS version combination is not supported."
msgstr ""

#: ../common/rhnException.py:68
msgid "Could not retrieve system data from database."
msgstr ""

#: ../common/rhnException.py:69
msgid "Invalid arguments passed to function."
msgstr ""

#: ../common/rhnException.py:70
msgid "Unable to retrieve requested entry."
msgstr ""

#: ../common/rhnException.py:71
msgid "Could not update database entry."
msgstr ""

#: ../common/rhnException.py:72
msgid "Unsupported server architecture."
msgstr ""

#: ../common/rhnException.py:73
#, python-format
msgid ""
"\n"
"     The anonymous server functionality is no longer available.\n"
"\n"
"     Please re-register this system by running mgr_register as root.\n"
"     Please visit https://%(hostname)s/rhn/systems/SystemEntitlements.do\n"
"     or login at https://%(hostname)s, and from the \"Overview\" tab,\n"
"     select \"Subscription Management\" to enable the service for this "
"system.\n"
"     "
msgstr ""

#: ../common/rhnException.py:81
msgid "Record not available in the database."
msgstr ""

#: ../common/rhnException.py:82
msgid "Invalid value for entry."
msgstr ""

#: ../common/rhnException.py:83
#, python-format
msgid ""
"\n"
"     This system does not have a valid entitlement for SUSE Manager.\n"
"     Please visit https://%(hostname)s/rhn/systems/SystemEntitlements.do\n"
"     or login at https://%(hostname)s, and from the \"Overview\" tab,\n"
"     select \"Subscription Management\" to enable the service for this "
"system.\n"
"     "
msgstr ""

#: ../common/rhnException.py:89
msgid "Channel error"
msgstr ""

#: ../common/rhnException.py:90
msgid "Client session token is invalid."
msgstr ""

#: ../common/rhnException.py:91
msgid "Client session token has expired."
msgstr ""

#: ../common/rhnException.py:92
msgid "You are not authorized to retrieve the requested object."
msgstr ""

#: ../common/rhnException.py:93
msgid "Invalid action"
msgstr ""

#: ../common/rhnException.py:94
msgid "You are not allowed to perform administrative tasks on this system."
msgstr ""

#: ../common/rhnException.py:96
msgid "The system is already subscribed to the specified channel."
msgstr ""

#: ../common/rhnException.py:97
msgid "The system is not currently subscribed to the specified channel."
msgstr ""

#: ../common/rhnException.py:98
msgid "The specified channel does not exist."
msgstr ""

#: ../common/rhnException.py:99
msgid "Invalid channel version."
msgstr ""

#: ../common/rhnException.py:100
msgid ""
"\n"
"     User group membership limits exceeded.\n"
"\n"
"     The current settings for your account do not allow you to add another\n"
"     user account. Please check with the organization administrator for "
"your\n"
"     account if the maximum number of users allowed to subscribe to server "
"needs\n"
"     to be changed.\n"
"     "
msgstr ""

#: ../common/rhnException.py:108
msgid ""
"\n"
"     System group membership limits exceeded.\n"
"\n"
"     The current settings for your account do not allow you to add another\n"
"     system profile. Please check with the organization administrator for "
"your\n"
"     account for modifying the maximum number of system profiles that can "
"be\n"
"     subscribed to your account.\n"
"     "
msgstr ""

#: ../common/rhnException.py:116
msgid ""
"\n"
"     Invalid architecture.\n"
"\n"
"     The architecture of the package is not supported by\n"
"     "
msgstr ""

#: ../common/rhnException.py:121
msgid "Invalid RPM header"
msgstr ""

#: ../common/rhnException.py:122
msgid ""
"\n"
"    This system is already registered as a Salt Minion. If you want to "
"register it as a traditional client\n"
"    please delete it first via the web UI or API and then register it using "
"the traditional tools.\n"
"    "
msgstr ""

#. For the uploading tools
#: ../common/rhnException.py:127
msgid "Invalid information uploaded to the server"
msgstr ""

#: ../common/rhnException.py:128
msgid "Error uploading network interfaces configuration."
msgstr ""

#: ../common/rhnException.py:129
msgid ""
"\n"
"     Package Upload Failed due to uniqueness constraint violation.\n"
"     Make sure the package does not have any duplicate dependencies or\n"
"     does not already exists on the server\n"
"     "
msgstr ""

#: ../common/rhnException.py:134
msgid ""
"\n"
"     The --force rhnpush option is disabled on this server.\n"
"     Please contact your SUSE Manager administrator for more help.\n"
"     "
msgstr ""

#. 60-70: token errors
#: ../common/rhnException.py:140
msgid ""
"\n"
"     The activation token specified could not be found on the server.\n"
"     Please retry with a valid key.\n"
"     "
msgstr ""

#: ../common/rhnException.py:144
msgid "Too many systems registered using this registration token"
msgstr ""

#: ../common/rhnException.py:145
msgid "Token contains invalid, obsoleted or insufficient settings"
msgstr ""

#: ../common/rhnException.py:146
msgid "Conflicting activation tokens"
msgstr ""

#. 70-80: channel subscription errors
#: ../common/rhnException.py:149
msgid ""
"\n"
"     No matching base channel found for your system.\n"
"     "
msgstr ""

#: ../common/rhnException.py:152
msgid ""
"\n"
"     You do not have subscription permission to the designated channel.\n"
"     Please refer to your organization's channel or organization\n"
"     administrators for further details.\n"
"     "
msgstr ""

#: ../common/rhnException.py:157
msgid "You can not unsubscribe from base channel."
msgstr ""

#: ../common/rhnException.py:158
msgid "SUSE Manager or Proxy channel can not be subscribed."
msgstr ""

#. 80-90: server group errors
#: ../common/rhnException.py:161
msgid "There was an error while trying to join the system to its groups"
msgstr ""

#. 90-100: entitlement errors
#: ../common/rhnException.py:164
msgid "Unable to entitle system"
msgstr ""

#. 100-109: e-mail and uuid related faults
#: ../common/rhnException.py:167
msgid "Maximum e-mail length violation."
msgstr ""

#: ../common/rhnException.py:168
msgid "This system has been previously registered."
msgstr ""

#: ../common/rhnException.py:169
msgid "Invalid username"
msgstr ""

#. 140-159 applet errors
#: ../common/rhnException.py:172
msgid "Unable to look up server"
msgstr ""

#. 160-179: OSAD errors
#: ../common/rhnException.py:175
msgid "Required argument is missing"
msgstr ""

#. 600-699: RHEL5+ EN errors
#: ../common/rhnException.py:178
msgid "No entitlement information tied to hardware"
msgstr ""

#: ../common/rhnException.py:179
msgid "Installation number is not entitling"
msgstr ""

#. 700-799: Additional user input verification errors.
#: ../common/rhnException.py:182
msgid "Maximum username length violation"
msgstr ""

#: ../common/rhnException.py:183
msgid "Maximum password length violation"
msgstr ""

#: ../common/rhnException.py:184
msgid "This user has read only API access. Action denied."
msgstr ""

#: ../common/rhnException.py:186
msgid "System Name cannot be less than 1 character"
msgstr ""

#. 1000-1999: Proxy specific errors:
#. issued by a Proxy to the client
#: ../common/rhnException.py:190
msgid "SUSE Manager Proxy error."
msgstr ""

#: ../common/rhnException.py:191
msgid "SUSE Manager Proxy unable to login."
msgstr ""

#. issued by a SUSE Manager Server/Satellite to the proxy
#: ../common/rhnException.py:193
msgid ""
"\n"
"     SUSE Manager Proxy system ID does not match a Spacewalk Proxy Server\n"
"     in the database.\n"
"     "
msgstr ""

#: ../common/rhnException.py:197
msgid "SUSE Manager Proxy session token is invalid."
msgstr ""

#: ../common/rhnException.py:198
msgid "SUSE Manager Proxy session token has expired."
msgstr ""

#. 2000-2999: Red Hat Satellite specific errors:
#: ../common/rhnException.py:202
msgid ""
"\n"
"      user creation is not allowed via mgr_register;\n"
"     please contact your sysadmin to have your account created.\n"
"     "
msgstr ""

#: ../common/rhnException.py:206
msgid ""
"\n"
"     This SUSE Manager server is not allowed to use Inter Server Sync on "
"this server\n"
"     "
msgstr ""

#: ../common/rhnException.py:209
msgid ""
"\n"
"     Inter Server Sync is disabled on this SUSE Manager Server.\n"
"     "
msgstr ""

#. 3000-3999: XML dumper errors:
#: ../common/rhnException.py:214
msgid "Invalid datatype passed"
msgstr ""

#: ../common/rhnException.py:215
msgid "Unable to retrieve channel"
msgstr ""

#: ../common/rhnException.py:216
msgid "Unable to retrieve package"
msgstr ""

#: ../common/rhnException.py:217
msgid "Unable to retrieve erratum"
msgstr ""

#: ../common/rhnException.py:218
msgid "File is missing"
msgstr ""

#: ../common/rhnException.py:219
msgid "Function retrieval error"
msgstr ""

#: ../common/rhnException.py:220
msgid "Function execution error"
msgstr ""

#: ../common/rhnException.py:221
msgid "Missing version string"
msgstr ""

#: ../common/rhnException.py:222
msgid "Invalid version string"
msgstr ""

#: ../common/rhnException.py:223
msgid "Mismatching versions"
msgstr ""

#: ../common/rhnException.py:224
msgid "Invalid channel version"
msgstr ""

#: ../common/rhnException.py:225
msgid "No comps file for channel"
msgstr ""

#: ../common/rhnException.py:226
msgid "Unable to retrieve comps file"
msgstr ""

#. 4000 - 4999: config management errors
#: ../common/rhnException.py:229
msgid "Configuration action missing"
msgstr ""

#: ../common/rhnException.py:230
msgid "File too large"
msgstr ""

#: ../common/rhnException.py:231
msgid "File contains binary data"
msgstr ""

#: ../common/rhnException.py:232
msgid "Configuration channel is not empty"
msgstr ""

#: ../common/rhnException.py:233
msgid "Permission error"
msgstr ""

#: ../common/rhnException.py:234
msgid "Content missing for configuration file"
msgstr ""

#: ../common/rhnException.py:235
msgid "Template delimiters not specified"
msgstr ""

#: ../common/rhnException.py:236
msgid "Configuration channel does not exist"
msgstr ""

#: ../common/rhnException.py:237
msgid "Configuration channel already exists"
msgstr ""

#: ../common/rhnException.py:238
msgid "File missing from configuration channel"
msgstr ""

#: ../common/rhnException.py:239
msgid "Different revision of this file is uploaded"
msgstr ""

#: ../common/rhnException.py:240
msgid "File already uploaded to configuration channel"
msgstr ""

#: ../common/rhnException.py:241
msgid "File size exceeds remaining quota space"
msgstr ""

#: ../common/rhnException.py:242
msgid "Full path of file must be specified"
msgstr ""

#: ../common/rhnException.py:243
msgid "Invalid revision number"
msgstr ""

#: ../common/rhnException.py:244
msgid "Cannot compare files of different file type"
msgstr ""

#. 5000 - 5999: client content uploading errors
#. 5000 - 5099: crash reporting errors
#: ../common/rhnException.py:248
msgid "Crash information is invalid or incomplete"
msgstr ""

#: ../common/rhnException.py:249
msgid "Crash file information is invalid or incomplete"
msgstr ""

#: ../common/rhnException.py:250
msgid "Error composing crash directory path"
msgstr ""

#: ../common/rhnException.py:251
msgid "Error composing crash file path"
msgstr ""

#: ../common/rhnException.py:252 ../common/rhnException.py:259
msgid "Invalid content encoding"
msgstr ""

#: ../common/rhnException.py:253
msgid "Invalid crash name"
msgstr ""

#: ../common/rhnException.py:254
msgid "Crash reporting is disabled for this organization"
msgstr ""

#. 5100 - 5199: scap results reporting error
#: ../common/rhnException.py:256
msgid "SCAP results file transfer is invalid or incomplete"
msgstr ""

#: ../common/rhnException.py:257
msgid "Error composing directory path for detailed SCAP results"
msgstr ""

#: ../common/rhnException.py:258
msgid "Error composing file path for detailed SCAP results"
msgstr ""

#: ../common/rhnException.py:306
msgid ""
"\n"
"     An error has occurred while processing your request. If this problem\n"
"     persists please enter a bug report at scc.suse.com.\n"
"     If you choose to submit the bug report, please be sure to include\n"
"     details of what you were trying to do when this error occurred and\n"
"     details on how to reproduce this problem.\n"
msgstr ""

#: ../common/rhnException.py:358
#, python-format
msgid ""
"Error Message:\n"
"    %s\n"
msgstr ""

#: ../common/rhnException.py:360
#, python-format
msgid "Error Class Code: %s\n"
msgstr ""

#: ../common/rhnException.py:363
#, python-format
msgid "Error Class Info: %s\n"
msgstr ""

#: ../common/rhnException.py:365
#, python-format
msgid "Explanation: %s"
msgstr ""

#: ../common/rhnTB.py:205
#, python-format
msgid "ERROR: %s %s: %s"
msgstr ""

#: ../common/rhnTB.py:207
#, python-format
msgid "TRACEBACK: %s"
msgstr ""

#: ../satellite_tools/disk_dumper/iss.py:1294
#: ../satellite_tools/disk_dumper/iss.py:1298
#, python-format
msgid "format of %s should be at least YYYYMMDD.\n"
msgstr ""

#: ../satellite_tools/messages.py:26
#, python-format
msgid ""
"\n"
"ERROR: executing step %s. Error is:\n"
"%s\n"
msgstr ""

#: ../satellite_tools/messages.py:31
#, python-format
msgid ""
"\n"
"ERROR: there was a problem accessing the channel data from your temporary\n"
"       repository. Did you migrate all of the data from the channel ISOs\n"
"       do this directory? If so, please recheck the channels ISOs, ensure\n"
"       that you have them all, and then iteratively remount and repopulate\n"
"       the temporary repository (%s).\n"
msgstr ""

#: ../satellite_tools/messages.py:39
#, python-format
msgid ""
"\n"
"ERROR: there was a problem synchronizing the information.\n"
"       Error message: %s\n"
msgstr ""

#: ../satellite_tools/messages.py:44
#, python-format
msgid ""
"\n"
"ERROR: There was a problem communicating with the ISS Master.\n"
"       Depending on the specific error details, please review your "
"configuration,\n"
"       basic network connectivity, and/or name resolution, and try again.\n"
"       Error message: %s\n"
msgstr ""

#: ../satellite_tools/messages.py:51
#, python-format
msgid ""
"\n"
"ERROR: There was a problem communicating with the ISS Master.\n"
"       If the master satellite is older than v5.3, it does not have ISS "
"capability.\n"
"       Otherwise, depending on the specific error details, please review "
"your\n"
"       configuration, basic network connectivity, and/or name resolution, "
"and try again.\n"
"       Error message: %s\n"
msgstr ""

#: ../satellite_tools/messages.py:59
#, python-format
msgid ""
"\n"
"ERROR: a child-channel cannot be synced without its parent being synced as\n"
"       well. A parent needs to be either (a) previously synced or (b) "
"synced\n"
"       in tandem with the desired child-channel. Missing parents for this\n"
"       transaction:\n"
"       %s\n"
msgstr ""

#: ../satellite_tools/messages.py:67
#, python-format
msgid ""
"\n"
"ERROR: you are not entitled to sync a channel in this set of channels.\n"
"Please contact your SUSE Manager contact\n"
"%s"
msgstr ""

#: ../satellite_tools/messages.py:72
#, python-format
msgid "  ERROR: not enough free space (%s KB) on device."
msgstr ""

#: ../satellite_tools/messages.py:74
#, python-format
msgid "    %3d/%s Fetch successful: %s (%s bytes)"
msgstr ""

#: ../satellite_tools/messages.py:75
#, python-format
msgid "    Extinct package:  %s"
msgstr ""

#: ../satellite_tools/messages.py:76
#, python-format
msgid "   Total size: %s"
msgstr ""

#: ../satellite_tools/messages.py:77
#, python-format
msgid "      Downloaded %s of %s. Estimated remaining time: %s"
msgstr ""

#: ../satellite_tools/messages.py:78
#, python-format
msgid "    Fetch unsuccessful: %s"
msgstr ""

#: ../satellite_tools/messages.py:79
#, python-format
msgid "   RPM fetch summary: %s"
msgstr ""

#: ../satellite_tools/messages.py:80
#, python-format
msgid "       success: %d"
msgstr ""

#: ../satellite_tools/messages.py:81
#, python-format
msgid "       failed:  %d"
msgstr ""

#: ../satellite_tools/messages.py:82
#, python-format
msgid "       extinct: %d"
msgstr ""

#: ../satellite_tools/messages.py:84
#, python-format
msgid "   Retrieving / parsing *relevant* package metadata: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:85
#, python-format
msgid "   Retrieving / parsing errata data: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:86
#, python-format
msgid "   Retrieving / parsing kickstart data: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:87
#, python-format
msgid "   Retrieving / parsing kickstart tree files: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:88
#, python-format
msgid "   Importing *relevant* package metadata: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:89
msgid "   * WARNING: this may be a slow process."
msgstr ""

#: ../satellite_tools/messages.py:90
msgid "Linking packages to channels"
msgstr ""

#: ../satellite_tools/messages.py:91
#, python-format
msgid "   Importing *relevant* errata: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:92
msgid "   No new kickstartable tree to import"
msgstr ""

#: ../satellite_tools/messages.py:93
#, python-format
msgid "Importing kickstartable trees (%d)"
msgstr ""

#: ../satellite_tools/messages.py:94
#, python-format
msgid "Imported kickstartable trees (%d)"
msgstr ""

#: ../satellite_tools/reposync.py:111 ../satellite_tools/satsync.py:439
msgid "+++ sending log as an email +++"
msgstr ""

#: ../satellite_tools/reposync.py:114
#, python-format
msgid "%s sync. report from %s"
msgstr ""

#: ../satellite_tools/reposync.py:124 ../satellite_tools/satsync.py:449
msgid "+++ email requested, but there is nothing to send +++"
msgstr ""

#: ../satellite_tools/rhn_satellite_activate.py:198
#, python-format
msgid ""
"\"%s\" (specified in commandline)\n"
"could not be opened and read:\n"
"%s"
msgstr ""

#: ../satellite_tools/rhn_satellite_activate.py:205
#, python-format
msgid ""
"\"%s\" could not be opened\n"
"and/or written to:\n"
"%s"
msgstr ""

#: ../satellite_tools/satsync.py:258
#, python-format
msgid "No handler for step %s"
msgstr ""

#. Try one more time - this time it should be faster since
#. everything should be cached
#: ../satellite_tools/satsync.py:270
msgid "Environment changed, trying again..."
msgstr ""

#: ../satellite_tools/satsync.py:277
msgid "ERROR: Encountered IntegrityError: \n"
msgstr ""

#: ../satellite_tools/satsync.py:285
msgid "Repeated failures"
msgstr ""

#: ../satellite_tools/satsync.py:290
#, python-format
msgid ""
"    Import complete:\n"
"        Begin time: %s\n"
"        End time:   %s\n"
"        Elapsed:    %s\n"
"          "
msgstr ""

#: ../satellite_tools/satsync.py:311
msgid "hours"
msgstr ""

#: ../satellite_tools/satsync.py:311
msgid "minutes"
msgstr ""

#: ../satellite_tools/satsync.py:311
msgid "seconds"
msgstr ""

#: ../satellite_tools/satsync.py:357
msgid ""
"ERROR: The dump is missing package data, use --no-rpms to skip this step or "
"fix the content to include package data."
msgstr ""

#. the orgs() method doesn't exist; that's fine we just
#. won't sync the orgs
#: ../satellite_tools/satsync.py:404
msgid "The SUSE Manager master does not support syncing orgs data."
msgstr ""

#: ../satellite_tools/satsync.py:404
msgid "Skipping..."
msgstr ""

#: ../satellite_tools/satsync.py:442
#, python-format
msgid "SUSE Manager Inter Server sync. report from %s"
msgstr ""

#: ../satellite_tools/satsync.py:521
msgid " - file-system synchronization"
msgstr ""

#: ../satellite_tools/satsync.py:533 ../satellite_tools/satsync.py:541
msgid " - live synchronization"
msgstr ""

#: ../satellite_tools/satsync.py:534
#, python-brace-format
msgid ""
"ERROR: Live content synchronizing with RHN Classic Hosted is no longer "
"supported.\n"
"Please use the cdn-sync command instead unless you are attempting to sync "
"from another {PRODUCT_NAME} via Inter-Server-Sync (ISS), or from local "
"content on disk via Channel Dump ISOs."
msgstr ""

#: ../satellite_tools/satsync.py:542
#, python-format
msgid "   url: %s"
msgstr ""

#: ../satellite_tools/satsync.py:543
#, python-format
msgid "   debug/output level: %s"
msgstr ""

#: ../satellite_tools/satsync.py:553
msgid "ERROR: this server must be registered with SUSE Manager."
msgstr ""

#: ../satellite_tools/satsync.py:575
#, python-format
msgid "Retrieving / parsing %s data"
msgstr ""

#: ../satellite_tools/satsync.py:585 ../satellite_tools/satsync.py:600
msgid "*** SYSTEM INTERRUPT CALLED ***"
msgstr ""

#: ../satellite_tools/satsync.py:593
msgid "ERROR: fatal parser exception occurred "
msgstr ""

#: ../satellite_tools/satsync.py:594
#, python-format
msgid "(line: %s, col: %s msg: %s)"
msgstr ""

#: ../satellite_tools/satsync.py:598
#, python-format
msgid "ERROR: parser exception occurred: %s"
msgstr ""

#: ../satellite_tools/satsync.py:603
msgid "ERROR: exception (during parse) occurred: "
msgstr ""

#: ../satellite_tools/satsync.py:604
#, python-format
msgid ""
"   Encountered some errors with %s data (see logs (%s) for more information)"
msgstr ""

#: ../satellite_tools/satsync.py:606
#, python-format
msgid "   Encountered some errors with %s data:"
msgstr ""

#: ../satellite_tools/satsync.py:607
#, python-format
msgid "   ------- %s PARSE/IMPORT ERROR -------"
msgstr ""

#: ../satellite_tools/satsync.py:609
msgid "   ---------------------------------------"
msgstr ""

#: ../satellite_tools/satsync.py:612
#, python-format
msgid "%s data complete"
msgstr ""

#: ../satellite_tools/satsync.py:665
msgid "Retrieving / parsing channel data"
msgstr ""

#: ../satellite_tools/satsync.py:718
msgid "Channel data complete"
msgstr ""

#: ../satellite_tools/satsync.py:736
#, python-format
msgid "%10s import from %s"
msgstr ""

#: ../satellite_tools/satsync.py:739
#, python-format
msgid "%10s import from %s - %s"
msgstr ""

#: ../satellite_tools/satsync.py:743
#, python-format
msgid "%10s"
msgstr ""

#: ../satellite_tools/satsync.py:750
msgid "p"
msgstr ""

#: ../satellite_tools/satsync.py:752
msgid "."
msgstr ""

#: ../satellite_tools/satsync.py:758
msgid "   p = previously imported/synced channel"
msgstr ""

#: ../satellite_tools/satsync.py:759
msgid "   . = channel not yet imported/synced"
msgstr ""

#: ../satellite_tools/satsync.py:765
msgid "   e = channel no longer supported (end-of-service)"
msgstr ""

#: ../satellite_tools/satsync.py:767
msgid "   ? = channel label invalid --- typo?"
msgstr ""

#: ../satellite_tools/satsync.py:771
#, python-format
msgid "   %s:"
msgstr ""

#: ../satellite_tools/satsync.py:772
#, python-format
msgid "      %s %-40s %4s %s"
msgstr ""

#: ../satellite_tools/satsync.py:773
msgid "base-channels"
msgstr ""

#: ../satellite_tools/satsync.py:786 ../satellite_tools/satsync.py:1603
msgid "NONE RELEVANT"
msgstr ""

#: ../satellite_tools/satsync.py:808
msgid "end-of-service"
msgstr ""

#: ../satellite_tools/satsync.py:809
msgid "e"
msgstr ""

#: ../satellite_tools/satsync.py:815
msgid "   typos:"
msgstr ""

#: ../satellite_tools/satsync.py:816
msgid "?"
msgstr ""

#: ../satellite_tools/satsync.py:831
#, python-format
msgid "XXX: imported channels: %s"
msgstr ""

#: ../satellite_tools/satsync.py:832
#, python-format
msgid "XXX:   cached channels: %s"
msgstr ""

#: ../satellite_tools/satsync.py:837
msgid "XXX: list channels called"
msgstr ""

#: ../satellite_tools/satsync.py:855
msgid "ERROR: these channels either do not exist or are not available:"
msgstr ""

#: ../satellite_tools/satsync.py:859
#, python-format
msgid "       (to see a list of channel labels: %s --list-channels)"
msgstr ""

#: ../satellite_tools/satsync.py:904
#, python-format
msgid "   Retrieving / parsing short package metadata: %s (%s)"
msgstr ""

#: ../satellite_tools/satsync.py:965
#, python-format
msgid "Diffing package metadata (what's missing locally?): %s"
msgstr ""

#: ../satellite_tools/satsync.py:971 ../satellite_tools/satsync.py:1254
msgid "Diffing:    "
msgstr ""

#: ../satellite_tools/satsync.py:988
msgid "ERROR: incremental dump skipped"
msgstr ""

#: ../satellite_tools/satsync.py:1079
msgid "Downloading rpm packages"
msgstr ""

#: ../satellite_tools/satsync.py:1084
#, python-format
msgid "   Fetching any missing RPMs: %s (%s)"
msgstr ""

#: ../satellite_tools/satsync.py:1085 ../satellite_tools/satsync.py:1153
msgid "NONE MISSING"
msgstr ""

#: ../satellite_tools/satsync.py:1094
msgid "Processing rpm packages complete"
msgstr ""

#: ../satellite_tools/satsync.py:1121
msgid "Downloading package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1146
msgid "Downloading srpm packages"
msgstr ""

#: ../satellite_tools/satsync.py:1152
#, python-format
msgid "   Fetching any missing SRPMs: %s (%s)"
msgstr ""

#: ../satellite_tools/satsync.py:1249
#, python-format
msgid "Diffing source package metadata (what's missing locally?): %s"
msgstr ""

#: ../satellite_tools/satsync.py:1260
msgid "Downloading source package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1338 ../satellite_tools/satsync.py:2027
#, python-format
msgid "Unable to save file %s: %s"
msgstr ""

#. for
#. Retried a number of times and it still failed; log the
#. file as being failed and move on
#: ../satellite_tools/satsync.py:1345
#, python-format
msgid "Failed to fetch file %s"
msgstr ""

#: ../satellite_tools/satsync.py:1350
msgid "Downloading kickstartable trees metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1365
msgid "Downloading kickstartable trees files"
msgstr ""

#: ../satellite_tools/satsync.py:1504
#, python-format
msgid "Grabbing all patches for channel %s"
msgstr ""

#: ../satellite_tools/satsync.py:1554
msgid "Downloading patch data"
msgstr ""

#: ../satellite_tools/satsync.py:1556
msgid "Forcing download of all patch data for requested channels."
msgstr ""

#: ../satellite_tools/satsync.py:1571
msgid "Downloading patch data complete"
msgstr ""

#: ../satellite_tools/satsync.py:1576 ../satellite_tools/satsync.py:1597
msgid "Downloading:"
msgstr ""

#: ../satellite_tools/satsync.py:1579
msgid " - complete"
msgstr ""

#: ../satellite_tools/satsync.py:1624
msgid "Importing source package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1627
msgid "Importing package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1635
msgid "Importing:  "
msgstr ""

#. not in the cache
#: ../satellite_tools/satsync.py:1703
msgid ""
"Package Not Found in Cache, Clear the Cache "
"to                                  Regenerate it."
msgstr ""

#: ../satellite_tools/satsync.py:1709
msgid "Importing channel patches"
msgstr ""

#: ../satellite_tools/satsync.py:1714
#, python-format
msgid "Importing %s patches for channel %s."
msgstr ""

#. Incomplete configuration
#: ../satellite_tools/satsync.py:2113
msgid "ERROR: server.mount_point not set in the configuration file"
msgstr ""

#: ../satellite_tools/satsync.py:2117
#, python-format
msgid "ERROR: server.mount_point %s do not exist"
msgstr ""

#: ../satellite_tools/satsync.py:2122
#, python-format
msgid "ERROR: path under server.mount_point (%s)  do not exist"
msgstr ""

#: ../satellite_tools/satsync.py:2199
#, python-format
msgid "Commandline: %s"
msgstr ""

#: ../satellite_tools/satsync.py:2202
#, python-format
msgid ""
"DEBUG ONLY: max. batch-size for XML/database-import processing (1..%s).\"man "
"satellite-sync\" for more information."
msgstr ""

#: ../satellite_tools/satsync.py:2205
msgid "alternative SSL CA Cert (fullpath to cert file)"
msgstr ""

#: ../satellite_tools/satsync.py:2207
msgid "process data for this channel only"
msgstr ""

#: ../satellite_tools/satsync.py:2209
msgid ""
"disk dump will be considered to be a full export; see \"man satellite-sync\" "
"for more information."
msgstr ""

#: ../satellite_tools/satsync.py:2212
msgid "existing custom channels will also be synced (unless -c is used)"
msgstr ""

#: ../satellite_tools/satsync.py:2214
#, python-format
msgid ""
"override debug level set in /etc/rhn/rhn.conf (which is currently set at %s)."
msgstr ""

#: ../satellite_tools/satsync.py:2216
#, python-format
msgid "requested version of XML dump (default: %s)"
msgstr ""

#: ../satellite_tools/satsync.py:2218
msgid "e-mail a report of what was synced/imported"
msgstr ""

#: ../satellite_tools/satsync.py:2220
msgid "forcibly process all (not a diff of) patch metadata"
msgstr ""

#: ../satellite_tools/satsync.py:2222
msgid "Do not use an http proxy under any circumstances."
msgstr ""

#: ../satellite_tools/satsync.py:2224
msgid "alternative http proxy (hostname:port)"
msgstr ""

#: ../satellite_tools/satsync.py:2226
msgid "alternative http proxy username"
msgstr ""

#: ../satellite_tools/satsync.py:2228
msgid "alternative http proxy password"
msgstr ""

#: ../satellite_tools/satsync.py:2230
msgid "parent SUSE Manager to import content from"
msgstr ""

#: ../satellite_tools/satsync.py:2232
msgid "list all available channels and exit"
msgstr ""

#: ../satellite_tools/satsync.py:2234
msgid "help on all error codes mgr-inter-sync returns"
msgstr ""

#: ../satellite_tools/satsync.py:2236
msgid "source mount point for import - disk update only"
msgstr ""

#: ../satellite_tools/satsync.py:2238
msgid "do not process patch data"
msgstr ""

#: ../satellite_tools/satsync.py:2240
msgid "do not process kickstart data (provisioning only)"
msgstr ""

#: ../satellite_tools/satsync.py:2242
msgid "do not process full package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:2244
msgid "do not download, or process any RPMs"
msgstr ""

#: ../satellite_tools/satsync.py:2246
msgid "turn off SSL (not recommended)"
msgstr ""

#: ../satellite_tools/satsync.py:2248
msgid "org to which the sync imports data. defaults to the admin account"
msgstr ""

#: ../satellite_tools/satsync.py:2250
msgid "print the configuration and exit"
msgstr ""

#: ../satellite_tools/satsync.py:2252
msgid "alternative server with which to connect (hostname)"
msgstr ""

#: ../satellite_tools/satsync.py:2254
msgid "synchronize to this step (man satellite-sync for more info)"
msgstr ""

#: ../satellite_tools/satsync.py:2256
msgid "write complete data to tempfile before streaming to remainder of app"
msgstr ""

#: ../satellite_tools/satsync.py:2258
msgid "DEBUG ONLY: alternative path to digital system id"
msgstr ""

#: ../satellite_tools/satsync.py:2260
msgid "alternative email address(es) for sync output (--email option)"
msgstr ""

#: ../satellite_tools/satsync.py:2262
msgid "do not remove rpms when importing from local dump"
msgstr ""

#: ../satellite_tools/satsync.py:2264
msgid ""
"the fully qualified domain name of the master Satellite. Valid with --mount-"
"point only. Required if you want to import org data and channel permissions."
msgstr ""

#: ../satellite_tools/satsync.py:2274
#, python-format
msgid "ERROR: these arguments make no sense in this context (try --help): %s"
msgstr ""

#. An SQL error is fatal... crash and burn
#: ../satellite_tools/satsync.py:2286
#, python-format
msgid "ERROR: Can't connect to the database: %s"
msgstr ""

#: ../satellite_tools/satsync.py:2287
msgid "ERROR: Check if your database is running."
msgstr ""

#: ../satellite_tools/satsync.py:2322
#, python-format
msgid "ERROR: --debug-level takes an in integer value within the range %s."
msgstr ""

#: ../satellite_tools/satsync.py:2324
msgid "  0  - little logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2325
msgid "  1  - minimal logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2326
msgid "  2  - normal level of logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2327
msgid "  3  - lots of logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2328
msgid "  4+ - excessive logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2341
msgid "ERROR: The --master option is only valid with the --mount-point option"
msgstr ""

#: ../satellite_tools/satsync.py:2351
#, python-format
msgid "ERROR: Unable to lookup Org Id %s"
msgstr ""

#: ../satellite_tools/satsync.py:2360
msgid ""
"WARNING: --list-channels option overrides any --step option. --step ignored."
msgstr ""

#: ../satellite_tools/satsync.py:2375
#, python-format
msgid ""
"ERROR: '%s' is not a valid step. See 'man mgr-inter-sync' for more detail."
msgstr ""

#: ../satellite_tools/satsync.py:2407
msgid ""
"ERROR: No channels currently imported; try mgr-inter-sync --list-channels; "
"then mgr-inter-sync -c chn0 -c chn1..."
msgstr ""

#. int(None) --> TypeError
#. int('a')  --> ValueError
#: ../satellite_tools/satsync.py:2457 ../satellite_tools/satsync.py:2461
msgid "ERROR: --batch-size must have a value within the range: 1..50"
msgstr ""

#: ../satellite_tools/satsync.py:2469
#, python-format
msgid "ERROR: no such directory %s"
msgstr ""

#: ../satellite_tools/satsync.py:2474
msgid "Error Codes: Returned codes means:"
msgstr ""

#: ../satellite_tools/satsync.py:2475
msgid " -1  - Could not lock file or KeyboardInterrupt or SystemExit"
msgstr ""

#: ../satellite_tools/satsync.py:2476
msgid "  0  - User interrupted or intentional exit"
msgstr ""

#: ../satellite_tools/satsync.py:2477
msgid "  1  - attempting to run more than one instance of mgr-inter-sync."
msgstr ""

#: ../satellite_tools/satsync.py:2478
msgid "  2  - Unable to find synchronization tools."
msgstr ""

#: ../satellite_tools/satsync.py:2479
msgid "  3  - a general socket exception occurred"
msgstr ""

#: ../satellite_tools/satsync.py:2480
msgid "  4  - an SSL error occurred. Recheck your SSL settings."
msgstr ""

#: ../satellite_tools/satsync.py:2481
msgid "  5  - ISS error"
msgstr ""

#: ../satellite_tools/satsync.py:2482
msgid "  6  - unhandled exception occurred"
msgstr ""

#: ../satellite_tools/satsync.py:2483
msgid "  7  - unknown sync error"
msgstr ""

#: ../satellite_tools/satsync.py:2484
msgid "  8  - ERROR: must be root to execute"
msgstr ""

#: ../satellite_tools/satsync.py:2485
msgid "  9  - rpclib fault during synchronization init"
msgstr ""

#: ../satellite_tools/satsync.py:2486
msgid "  10 - synchronization init error"
msgstr ""

#: ../satellite_tools/satsync.py:2487
msgid "  11 - Error parsing XML stream"
msgstr ""

#: ../satellite_tools/satsync.py:2488
msgid "  12 - Channel do not exist"
msgstr ""

#: ../satellite_tools/satsync.py:2489
msgid "  13 - SQL error during importing package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:2490
msgid "  14 - SQL error during linking channel packages"
msgstr ""

#: ../satellite_tools/satsync.py:2491
msgid "  15 - SQL error during xml processing"
msgstr ""

#: ../satellite_tools/satsync.py:2492
msgid "  16 - server.mount_point not set in the configuration file"
msgstr ""

#: ../satellite_tools/satsync.py:2493
msgid ""
"  17 - SQL error during retrieving the channels already imported in the SUSE "
"Manager database"
msgstr ""

#: ../satellite_tools/satsync.py:2494
msgid "  18 - Wrong db connection string in rhn.conf"
msgstr ""

#: ../satellite_tools/satsync.py:2495
msgid "  19 - Bad arguments"
msgstr ""

#: ../satellite_tools/satsync.py:2496
msgid "  20 - Could not connect to db."
msgstr ""

#: ../satellite_tools/satsync.py:2497
msgid "  21 - Bad debug level"
msgstr ""

#: ../satellite_tools/satsync.py:2498
msgid "  22 - Not valid step"
msgstr ""

#: ../satellite_tools/satsync.py:2499
msgid "  24 - no such file"
msgstr ""

#: ../satellite_tools/satsync.py:2500
msgid "  25 - no such directory"
msgstr ""

#: ../satellite_tools/satsync.py:2501
msgid "  26 - mount_point does not exist"
msgstr ""

#: ../satellite_tools/satsync.py:2502
msgid "  27 - No such org"
msgstr ""

#: ../satellite_tools/satsync.py:2503
msgid "  28 - error: --master is only valid with --mount-point"
msgstr ""

#: ../satellite_tools/satsync.py:2510
#, python-format
msgid "ERROR: unknown dump version, try one of %s"
msgstr ""
   0707010000007F000081B40000000000000000000000016290A0C10000B60B000000000000000000000000000000000000001C00000000spacewalk-backend/po/nds.po   # SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
#
# Translators:
msgid ""
msgstr ""
"Project-Id-Version: Spacewalk\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-10-16 13:34+0200\n"
"PO-Revision-Date: 2011-03-04 16:08+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Low German <nds-lowgerman@lists.sourceforge.net>\n"
"Language: nds\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"

#: ../server/apacheAuth.py:66
#, python-format
msgid "incomplete proxy authentication token: %s"
msgstr ""

#: ../server/apacheAuth.py:84
#, python-format
msgid "Sent proxy signature %s does not match ours %s."
msgstr ""

#: ../server/apacheAuth.py:119
msgid "declined proxy authentication"
msgstr ""

#: ../server/apacheRequest.py:59
#, python-format
msgid "Invalid request received (%s)."
msgstr ""

#: ../server/apacheRequest.py:120
#, python-format
msgid ""
"IMPORTANT MESSAGE FOLLOWS:\n"
"%s"
msgstr ""

#: ../server/apacheRequest.py:149
#, python-format
msgid ""
"While running '%s': caught\n"
"%s : %s\n"
msgstr ""

#: ../server/apacheRequest.py:606
#, python-format
msgid "Invalid URI %s"
msgstr ""

#: ../server/configFilesHandler.py:129 ../server/handlers/app/packages.py:192
#: ../server/handlers/xmlrpc/registration.py:215
#: ../server/handlers/xmlrpc/registration.py:1168
#: ../server/handlers/xmlrpc/registration.py:1307
#, python-format
msgid ""
"\n"
"                   %s Account has been deactivated on this server.\n"
"                   Please contact your Org administrator for more help."
msgstr ""

#: ../server/handlers/applet/applet.py:78
#, python-brace-format
msgid "Your system was not found in the {PRODUCT_NAME} database"
msgstr ""

#: ../server/handlers/sat/auth.py:45
msgid "ISS is disabled on this server."
msgstr ""

#: ../server/handlers/sat/auth.py:50
#, python-format
msgid "Server \"%s\" is not enabled for ISS."
msgstr ""

#: ../server/handlers/xmlrpc/errata.py:64
#, python-format
msgid "Expected a package name, not: %s"
msgstr ""

#: ../server/handlers/xmlrpc/errata.py:115
#, python-format
msgid "Expected a package, not: %s"
msgstr ""

#: ../server/handlers/xmlrpc/proxy.py:65
#, python-format
msgid "SUSE Manager Proxy service not enabled for server profile: \"%s\""
msgstr ""

#: ../server/handlers/xmlrpc/proxy.py:85
msgid "Invalid session key"
msgstr ""

#: ../server/handlers/xmlrpc/proxy.py:93
msgid "This server ID no longer exists"
msgstr ""

#: ../server/handlers/xmlrpc/queue.py:433
#, python-format
msgid "Invalid action value type %s (%s)"
msgstr ""

#: ../server/handlers/xmlrpc/queue.py:464
#, python-format
msgid "Action %s does not belong to server %s"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:194
msgid "Required data missing"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:198
msgid "Required members missing"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:207
msgid "Attempt to register a system to an invalid username"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:839
msgid "Invalid system release version requested"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1063
msgid ""
"Unable to find a valid network interface, both ipaddr and ip6addr not found."
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1115
#, python-brace-format
msgid "{PRODUCT_NAME} Welcome Message"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1125
msgid "Privacy Statement"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1146
msgid "Expected a dictionary as a product argument"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1374
#, python-format
msgid "Invalid value '%s' for %s (%s)"
msgstr ""

#: ../server/handlers/xmlrpc/scap.py:104
msgid "Invalid system_id/action_id pair."
msgstr ""

#: ../server/handlers/xmlrpc/up2date.py:233
#, python-format
msgid "Invalid value %s (%s)"
msgstr ""

#: ../server/importlib/userAuth.py:98
msgid "You are not authorized to manage packages in the null org"
msgstr ""

#: ../server/importlib/userAuth.py:103
#, python-format
msgid "You are not allowed to manage packages in the %s org"
msgstr ""

#: ../server/importlib/userAuth.py:121
msgid "You are not allowed to perform administrative tasks"
msgstr ""

#: ../server/importlib/userAuth.py:144
#, python-format
msgid ""
"You are not allowed to manage channel %s, or that channel does not exist"
msgstr ""

#: ../server/importlib/userAuth.py:204
#, python-format
msgid ""
"\n"
"               %s Account has been deactivated on this server.\n"
"               Please contact your Org administrator for more help."
msgstr ""

#: ../server/rhnChannel.py:1992
#, python-format
msgid ""
"Your account does not have access to any channels matching "
"(release='%(release)s', arch='%(arch)s')%(www_activation)s"
msgstr ""

#: ../server/rhnChannel.py:2002
msgid ""
"\n"
"If you have a registration number, please register with it first at http://"
"www.redhat.com/apps/activate/ and then try again.\n"
"\n"
msgstr ""

#: ../server/rhnChannel.py:2012
#, python-format
msgid "Insufficient subscription permissions for release (%s, %s"
msgstr ""

#. Various messages that can be reused
#.
#. bretm 02/07/2007 -- when we have better old-client documentation, probably
#. will be safe to get rid of all this crap
#: ../server/rhnChannel.py:2276 ../server/rhnChannel.py:2287
#: ../server/rhnChannel.py:2302
msgid "System Registered but Inactive"
msgstr ""

#: ../server/rhnChannel.py:2277
#, python-format
msgid ""
"\n"
"Invalid Architecture and OS release combination (%s, %s).\n"
"Your system has been registered, but will not receive updates\n"
"because it is not subscribed to a channel. If you have not yet\n"
"activated your product for service, please visit our website at:\n"
"\n"
"     http://www.redhat.com/apps/activate/\n"
"\n"
"...to activate your product."
msgstr ""

#: ../server/rhnChannel.py:2288
#, python-format
msgid ""
"\n"
"Invalid Architecture and OS release combination (%s, %s).\n"
"Your system has been registered, but will not receive updates\n"
"because it could not be subscribed to a base channel.\n"
"Please contact your organization administrator for assistance.\n"
msgstr ""

#: ../server/rhnChannel.py:2295
#, python-format
msgid ""
"\n"
"  This system has been successfully registered, but is not yet entitled\n"
"  to service.  To entitle this system to service, login to the web site at:\n"
"\n"
"  %(entitlement_url)s\n"
msgstr ""

#: ../server/rhnChannel.py:2303
#, python-format
msgid ""
"\n"
"  This system has been successfully registered, but no service entitlements\n"
"  were available.  To entitle this system to service, login to the web site "
"at:\n"
"\n"
"  %(entitlement_url)s\n"
msgstr ""

#: ../server/rhnHandler.py:62
msgid "Please run rhn_register as root on this client"
msgstr ""

#: ../server/rhnHandler.py:75
#, python-format
msgid "Service not enabled for system profile: \"%s\""
msgstr ""

#: ../server/rhnPackage.py:49 ../server/rhnPackage.py:87
#: ../server/rhnPackage.py:107 ../server/rhnPackage.py:158
#, python-format
msgid "Invalid RPM package %s requested"
msgstr ""

#: ../server/rhnPackage.py:112
msgid "Package not found"
msgstr ""

#: ../server/rhnServer/server_class.py:97
#, python-format
msgid "Architecture `%s' is not supported"
msgstr ""

#: ../server/rhnServer/server_token.py:78
#, python-format
msgid "Token `%s' has more than one base channel assigned"
msgstr ""

#: ../server/rhnServer/server_token.py:80
msgid "Conflicting base channels"
msgstr ""

#: ../server/rhnServer/server_token.py:190
#, python-format
msgid "Failed to add server to group %s"
msgstr ""

#: ../server/rhnServer/server_token.py:503
#, python-format
msgid "Maximum usage count of %s reached"
msgstr ""

#: ../server/rhnServer/server_token.py:744
msgid ""
"Stacking of re-registration tokens with different base entitlements is not "
"supported"
msgstr ""

#: ../server/rhnServer/server_token.py:811
#, python-format
msgid "Could not find token '%s'"
msgstr ""

#. Cannot use activation keys from different orgs
#: ../server/rhnServer/server_token.py:843
msgid "Tokens from mismatching orgs"
msgstr ""

#. Two tokens with different kickstart sessions
#: ../server/rhnServer/server_token.py:853
msgid "Kickstart session mismatch"
msgstr ""

#: ../server/rhnServer/server_token.py:877
msgid "Stacking of re-registration tokens is not supported"
msgstr ""

#: ../server/rhnUser.py:289 ../server/rhnUser.py:292
msgid "Invalid username/password combination"
msgstr ""

#. nope, not reserved either
#: ../server/rhnUser.py:467
#, python-format
msgid "Username `%s' has not been reserved"
msgstr ""

#. New accounts have to specify an e-mail address
#: ../server/rhnUser.py:473
msgid "E-mail address not specified"
msgstr ""

#: ../server/rhnUser.py:509
#, python-format
msgid "username should be at least %d characters"
msgstr ""

#: ../server/rhnUser.py:512
#, python-format
msgid "username should be less than %d characters"
msgstr ""

#: ../server/rhnUser.py:523
#, python-format
msgid "username = `%s', invalid character `%s'"
msgstr ""

#: ../server/rhnUser.py:542
#, python-format
msgid "Please limit your e-mail address to %s chars"
msgstr ""

#: ../server/rhnUser.py:623
#, python-format
msgid "password must be at least %d characters"
msgstr ""

#: ../server/rhnUser.py:626
#, python-format
msgid "Password must be shorter than %d characters"
msgstr ""

#: ../server/rhnUser.py:644
#, python-format
msgid "password contains character `%s'"
msgstr ""

#: ../server/rhnUser.py:651
#, python-format
msgid "username should be at least %d characters long"
msgstr ""

#: ../server/rhnUser.py:662
#, python-format
msgid "Cannot register usernames ending with %s"
msgstr ""

#. 0-999: Red Hat client/client-like interaction errors:
#: ../common/rhnException.py:53
msgid "This does not appear to be a valid username."
msgstr ""

#: ../common/rhnException.py:54
msgid "Invalid username and password combination."
msgstr ""

#: ../common/rhnException.py:55
msgid "This login is already taken, or the password is incorrect."
msgstr ""

#: ../common/rhnException.py:56
msgid "Permission denied."
msgstr ""

#: ../common/rhnException.py:57
msgid "Object not found."
msgstr ""

#: ../common/rhnException.py:58
msgid "Invalid System Digital ID."
msgstr ""

#: ../common/rhnException.py:59
msgid "Invalid System Credentials."
msgstr ""

#: ../common/rhnException.py:60
msgid "Could not retrieve user data from database."
msgstr ""

#: ../common/rhnException.py:61
msgid "Valid username required."
msgstr ""

#: ../common/rhnException.py:62
msgid "Valid password required."
msgstr ""

#: ../common/rhnException.py:63
msgid "Minimum username length violation."
msgstr ""

#: ../common/rhnException.py:64
msgid "Minimum password length violation."
msgstr ""

#: ../common/rhnException.py:65
msgid "The username contains invalid characters."
msgstr ""

#: ../common/rhnException.py:66
msgid "File not found."
msgstr ""

#: ../common/rhnException.py:67
msgid "Architecture and OS version combination is not supported."
msgstr ""

#: ../common/rhnException.py:68
msgid "Could not retrieve system data from database."
msgstr ""

#: ../common/rhnException.py:69
msgid "Invalid arguments passed to function."
msgstr ""

#: ../common/rhnException.py:70
msgid "Unable to retrieve requested entry."
msgstr ""

#: ../common/rhnException.py:71
msgid "Could not update database entry."
msgstr ""

#: ../common/rhnException.py:72
msgid "Unsupported server architecture."
msgstr ""

#: ../common/rhnException.py:73
#, python-format
msgid ""
"\n"
"     The anonymous server functionality is no longer available.\n"
"\n"
"     Please re-register this system by running mgr_register as root.\n"
"     Please visit https://%(hostname)s/rhn/systems/SystemEntitlements.do\n"
"     or login at https://%(hostname)s, and from the \"Overview\" tab,\n"
"     select \"Subscription Management\" to enable the service for this "
"system.\n"
"     "
msgstr ""

#: ../common/rhnException.py:81
msgid "Record not available in the database."
msgstr ""

#: ../common/rhnException.py:82
msgid "Invalid value for entry."
msgstr ""

#: ../common/rhnException.py:83
#, python-format
msgid ""
"\n"
"     This system does not have a valid entitlement for SUSE Manager.\n"
"     Please visit https://%(hostname)s/rhn/systems/SystemEntitlements.do\n"
"     or login at https://%(hostname)s, and from the \"Overview\" tab,\n"
"     select \"Subscription Management\" to enable the service for this "
"system.\n"
"     "
msgstr ""

#: ../common/rhnException.py:89
msgid "Channel error"
msgstr ""

#: ../common/rhnException.py:90
msgid "Client session token is invalid."
msgstr ""

#: ../common/rhnException.py:91
msgid "Client session token has expired."
msgstr ""

#: ../common/rhnException.py:92
msgid "You are not authorized to retrieve the requested object."
msgstr ""

#: ../common/rhnException.py:93
msgid "Invalid action"
msgstr ""

#: ../common/rhnException.py:94
msgid "You are not allowed to perform administrative tasks on this system."
msgstr ""

#: ../common/rhnException.py:96
msgid "The system is already subscribed to the specified channel."
msgstr ""

#: ../common/rhnException.py:97
msgid "The system is not currently subscribed to the specified channel."
msgstr ""

#: ../common/rhnException.py:98
msgid "The specified channel does not exist."
msgstr ""

#: ../common/rhnException.py:99
msgid "Invalid channel version."
msgstr ""

#: ../common/rhnException.py:100
msgid ""
"\n"
"     User group membership limits exceeded.\n"
"\n"
"     The current settings for your account do not allow you to add another\n"
"     user account. Please check with the organization administrator for "
"your\n"
"     account if the maximum number of users allowed to subscribe to server "
"needs\n"
"     to be changed.\n"
"     "
msgstr ""

#: ../common/rhnException.py:108
msgid ""
"\n"
"     System group membership limits exceeded.\n"
"\n"
"     The current settings for your account do not allow you to add another\n"
"     system profile. Please check with the organization administrator for "
"your\n"
"     account for modifying the maximum number of system profiles that can "
"be\n"
"     subscribed to your account.\n"
"     "
msgstr ""

#: ../common/rhnException.py:116
msgid ""
"\n"
"     Invalid architecture.\n"
"\n"
"     The architecture of the package is not supported by\n"
"     "
msgstr ""

#: ../common/rhnException.py:121
msgid "Invalid RPM header"
msgstr ""

#: ../common/rhnException.py:122
msgid ""
"\n"
"    This system is already registered as a Salt Minion. If you want to "
"register it as a traditional client\n"
"    please delete it first via the web UI or API and then register it using "
"the traditional tools.\n"
"    "
msgstr ""

#. For the uploading tools
#: ../common/rhnException.py:127
msgid "Invalid information uploaded to the server"
msgstr ""

#: ../common/rhnException.py:128
msgid "Error uploading network interfaces configuration."
msgstr ""

#: ../common/rhnException.py:129
msgid ""
"\n"
"     Package Upload Failed due to uniqueness constraint violation.\n"
"     Make sure the package does not have any duplicate dependencies or\n"
"     does not already exists on the server\n"
"     "
msgstr ""

#: ../common/rhnException.py:134
msgid ""
"\n"
"     The --force rhnpush option is disabled on this server.\n"
"     Please contact your SUSE Manager administrator for more help.\n"
"     "
msgstr ""

#. 60-70: token errors
#: ../common/rhnException.py:140
msgid ""
"\n"
"     The activation token specified could not be found on the server.\n"
"     Please retry with a valid key.\n"
"     "
msgstr ""

#: ../common/rhnException.py:144
msgid "Too many systems registered using this registration token"
msgstr ""

#: ../common/rhnException.py:145
msgid "Token contains invalid, obsoleted or insufficient settings"
msgstr ""

#: ../common/rhnException.py:146
msgid "Conflicting activation tokens"
msgstr ""

#. 70-80: channel subscription errors
#: ../common/rhnException.py:149
msgid ""
"\n"
"     No matching base channel found for your system.\n"
"     "
msgstr ""

#: ../common/rhnException.py:152
msgid ""
"\n"
"     You do not have subscription permission to the designated channel.\n"
"     Please refer to your organization's channel or organization\n"
"     administrators for further details.\n"
"     "
msgstr ""

#: ../common/rhnException.py:157
msgid "You can not unsubscribe from base channel."
msgstr ""

#: ../common/rhnException.py:158
msgid "SUSE Manager or Proxy channel can not be subscribed."
msgstr ""

#. 80-90: server group errors
#: ../common/rhnException.py:161
msgid "There was an error while trying to join the system to its groups"
msgstr ""

#. 90-100: entitlement errors
#: ../common/rhnException.py:164
msgid "Unable to entitle system"
msgstr ""

#. 100-109: e-mail and uuid related faults
#: ../common/rhnException.py:167
msgid "Maximum e-mail length violation."
msgstr ""

#: ../common/rhnException.py:168
msgid "This system has been previously registered."
msgstr ""

#: ../common/rhnException.py:169
msgid "Invalid username"
msgstr ""

#. 140-159 applet errors
#: ../common/rhnException.py:172
msgid "Unable to look up server"
msgstr ""

#. 160-179: OSAD errors
#: ../common/rhnException.py:175
msgid "Required argument is missing"
msgstr ""

#. 600-699: RHEL5+ EN errors
#: ../common/rhnException.py:178
msgid "No entitlement information tied to hardware"
msgstr ""

#: ../common/rhnException.py:179
msgid "Installation number is not entitling"
msgstr ""

#. 700-799: Additional user input verification errors.
#: ../common/rhnException.py:182
msgid "Maximum username length violation"
msgstr ""

#: ../common/rhnException.py:183
msgid "Maximum password length violation"
msgstr ""

#: ../common/rhnException.py:184
msgid "This user has read only API access. Action denied."
msgstr ""

#: ../common/rhnException.py:186
msgid "System Name cannot be less than 1 character"
msgstr ""

#. 1000-1999: Proxy specific errors:
#. issued by a Proxy to the client
#: ../common/rhnException.py:190
msgid "SUSE Manager Proxy error."
msgstr ""

#: ../common/rhnException.py:191
msgid "SUSE Manager Proxy unable to login."
msgstr ""

#. issued by a SUSE Manager Server/Satellite to the proxy
#: ../common/rhnException.py:193
msgid ""
"\n"
"     SUSE Manager Proxy system ID does not match a Spacewalk Proxy Server\n"
"     in the database.\n"
"     "
msgstr ""

#: ../common/rhnException.py:197
msgid "SUSE Manager Proxy session token is invalid."
msgstr ""

#: ../common/rhnException.py:198
msgid "SUSE Manager Proxy session token has expired."
msgstr ""

#. 2000-2999: Red Hat Satellite specific errors:
#: ../common/rhnException.py:202
msgid ""
"\n"
"      user creation is not allowed via mgr_register;\n"
"     please contact your sysadmin to have your account created.\n"
"     "
msgstr ""

#: ../common/rhnException.py:206
msgid ""
"\n"
"     This SUSE Manager server is not allowed to use Inter Server Sync on "
"this server\n"
"     "
msgstr ""

#: ../common/rhnException.py:209
msgid ""
"\n"
"     Inter Server Sync is disabled on this SUSE Manager Server.\n"
"     "
msgstr ""

#. 3000-3999: XML dumper errors:
#: ../common/rhnException.py:214
msgid "Invalid datatype passed"
msgstr ""

#: ../common/rhnException.py:215
msgid "Unable to retrieve channel"
msgstr ""

#: ../common/rhnException.py:216
msgid "Unable to retrieve package"
msgstr ""

#: ../common/rhnException.py:217
msgid "Unable to retrieve erratum"
msgstr ""

#: ../common/rhnException.py:218
msgid "File is missing"
msgstr ""

#: ../common/rhnException.py:219
msgid "Function retrieval error"
msgstr ""

#: ../common/rhnException.py:220
msgid "Function execution error"
msgstr ""

#: ../common/rhnException.py:221
msgid "Missing version string"
msgstr ""

#: ../common/rhnException.py:222
msgid "Invalid version string"
msgstr ""

#: ../common/rhnException.py:223
msgid "Mismatching versions"
msgstr ""

#: ../common/rhnException.py:224
msgid "Invalid channel version"
msgstr ""

#: ../common/rhnException.py:225
msgid "No comps file for channel"
msgstr ""

#: ../common/rhnException.py:226
msgid "Unable to retrieve comps file"
msgstr ""

#. 4000 - 4999: config management errors
#: ../common/rhnException.py:229
msgid "Configuration action missing"
msgstr ""

#: ../common/rhnException.py:230
msgid "File too large"
msgstr ""

#: ../common/rhnException.py:231
msgid "File contains binary data"
msgstr ""

#: ../common/rhnException.py:232
msgid "Configuration channel is not empty"
msgstr ""

#: ../common/rhnException.py:233
msgid "Permission error"
msgstr ""

#: ../common/rhnException.py:234
msgid "Content missing for configuration file"
msgstr ""

#: ../common/rhnException.py:235
msgid "Template delimiters not specified"
msgstr ""

#: ../common/rhnException.py:236
msgid "Configuration channel does not exist"
msgstr ""

#: ../common/rhnException.py:237
msgid "Configuration channel already exists"
msgstr ""

#: ../common/rhnException.py:238
msgid "File missing from configuration channel"
msgstr ""

#: ../common/rhnException.py:239
msgid "Different revision of this file is uploaded"
msgstr ""

#: ../common/rhnException.py:240
msgid "File already uploaded to configuration channel"
msgstr ""

#: ../common/rhnException.py:241
msgid "File size exceeds remaining quota space"
msgstr ""

#: ../common/rhnException.py:242
msgid "Full path of file must be specified"
msgstr ""

#: ../common/rhnException.py:243
msgid "Invalid revision number"
msgstr ""

#: ../common/rhnException.py:244
msgid "Cannot compare files of different file type"
msgstr ""

#. 5000 - 5999: client content uploading errors
#. 5000 - 5099: crash reporting errors
#: ../common/rhnException.py:248
msgid "Crash information is invalid or incomplete"
msgstr ""

#: ../common/rhnException.py:249
msgid "Crash file information is invalid or incomplete"
msgstr ""

#: ../common/rhnException.py:250
msgid "Error composing crash directory path"
msgstr ""

#: ../common/rhnException.py:251
msgid "Error composing crash file path"
msgstr ""

#: ../common/rhnException.py:252 ../common/rhnException.py:259
msgid "Invalid content encoding"
msgstr ""

#: ../common/rhnException.py:253
msgid "Invalid crash name"
msgstr ""

#: ../common/rhnException.py:254
msgid "Crash reporting is disabled for this organization"
msgstr ""

#. 5100 - 5199: scap results reporting error
#: ../common/rhnException.py:256
msgid "SCAP results file transfer is invalid or incomplete"
msgstr ""

#: ../common/rhnException.py:257
msgid "Error composing directory path for detailed SCAP results"
msgstr ""

#: ../common/rhnException.py:258
msgid "Error composing file path for detailed SCAP results"
msgstr ""

#: ../common/rhnException.py:306
msgid ""
"\n"
"     An error has occurred while processing your request. If this problem\n"
"     persists please enter a bug report at scc.suse.com.\n"
"     If you choose to submit the bug report, please be sure to include\n"
"     details of what you were trying to do when this error occurred and\n"
"     details on how to reproduce this problem.\n"
msgstr ""

#: ../common/rhnException.py:358
#, python-format
msgid ""
"Error Message:\n"
"    %s\n"
msgstr ""

#: ../common/rhnException.py:360
#, python-format
msgid "Error Class Code: %s\n"
msgstr ""

#: ../common/rhnException.py:363
#, python-format
msgid "Error Class Info: %s\n"
msgstr ""

#: ../common/rhnException.py:365
#, python-format
msgid "Explanation: %s"
msgstr ""

#: ../common/rhnTB.py:205
#, python-format
msgid "ERROR: %s %s: %s"
msgstr ""

#: ../common/rhnTB.py:207
#, python-format
msgid "TRACEBACK: %s"
msgstr ""

#: ../satellite_tools/disk_dumper/iss.py:1294
#: ../satellite_tools/disk_dumper/iss.py:1298
#, python-format
msgid "format of %s should be at least YYYYMMDD.\n"
msgstr ""

#: ../satellite_tools/messages.py:26
#, python-format
msgid ""
"\n"
"ERROR: executing step %s. Error is:\n"
"%s\n"
msgstr ""

#: ../satellite_tools/messages.py:31
#, python-format
msgid ""
"\n"
"ERROR: there was a problem accessing the channel data from your temporary\n"
"       repository. Did you migrate all of the data from the channel ISOs\n"
"       do this directory? If so, please recheck the channels ISOs, ensure\n"
"       that you have them all, and then iteratively remount and repopulate\n"
"       the temporary repository (%s).\n"
msgstr ""

#: ../satellite_tools/messages.py:39
#, python-format
msgid ""
"\n"
"ERROR: there was a problem synchronizing the information.\n"
"       Error message: %s\n"
msgstr ""

#: ../satellite_tools/messages.py:44
#, python-format
msgid ""
"\n"
"ERROR: There was a problem communicating with the ISS Master.\n"
"       Depending on the specific error details, please review your "
"configuration,\n"
"       basic network connectivity, and/or name resolution, and try again.\n"
"       Error message: %s\n"
msgstr ""

#: ../satellite_tools/messages.py:51
#, python-format
msgid ""
"\n"
"ERROR: There was a problem communicating with the ISS Master.\n"
"       If the master satellite is older than v5.3, it does not have ISS "
"capability.\n"
"       Otherwise, depending on the specific error details, please review "
"your\n"
"       configuration, basic network connectivity, and/or name resolution, "
"and try again.\n"
"       Error message: %s\n"
msgstr ""

#: ../satellite_tools/messages.py:59
#, python-format
msgid ""
"\n"
"ERROR: a child-channel cannot be synced without its parent being synced as\n"
"       well. A parent needs to be either (a) previously synced or (b) "
"synced\n"
"       in tandem with the desired child-channel. Missing parents for this\n"
"       transaction:\n"
"       %s\n"
msgstr ""

#: ../satellite_tools/messages.py:67
#, python-format
msgid ""
"\n"
"ERROR: you are not entitled to sync a channel in this set of channels.\n"
"Please contact your SUSE Manager contact\n"
"%s"
msgstr ""

#: ../satellite_tools/messages.py:72
#, python-format
msgid "  ERROR: not enough free space (%s KB) on device."
msgstr ""

#: ../satellite_tools/messages.py:74
#, python-format
msgid "    %3d/%s Fetch successful: %s (%s bytes)"
msgstr ""

#: ../satellite_tools/messages.py:75
#, python-format
msgid "    Extinct package:  %s"
msgstr ""

#: ../satellite_tools/messages.py:76
#, python-format
msgid "   Total size: %s"
msgstr ""

#: ../satellite_tools/messages.py:77
#, python-format
msgid "      Downloaded %s of %s. Estimated remaining time: %s"
msgstr ""

#: ../satellite_tools/messages.py:78
#, python-format
msgid "    Fetch unsuccessful: %s"
msgstr ""

#: ../satellite_tools/messages.py:79
#, python-format
msgid "   RPM fetch summary: %s"
msgstr ""

#: ../satellite_tools/messages.py:80
#, python-format
msgid "       success: %d"
msgstr ""

#: ../satellite_tools/messages.py:81
#, python-format
msgid "       failed:  %d"
msgstr ""

#: ../satellite_tools/messages.py:82
#, python-format
msgid "       extinct: %d"
msgstr ""

#: ../satellite_tools/messages.py:84
#, python-format
msgid "   Retrieving / parsing *relevant* package metadata: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:85
#, python-format
msgid "   Retrieving / parsing errata data: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:86
#, python-format
msgid "   Retrieving / parsing kickstart data: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:87
#, python-format
msgid "   Retrieving / parsing kickstart tree files: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:88
#, python-format
msgid "   Importing *relevant* package metadata: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:89
msgid "   * WARNING: this may be a slow process."
msgstr ""

#: ../satellite_tools/messages.py:90
msgid "Linking packages to channels"
msgstr ""

#: ../satellite_tools/messages.py:91
#, python-format
msgid "   Importing *relevant* errata: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:92
msgid "   No new kickstartable tree to import"
msgstr ""

#: ../satellite_tools/messages.py:93
#, python-format
msgid "Importing kickstartable trees (%d)"
msgstr ""

#: ../satellite_tools/messages.py:94
#, python-format
msgid "Imported kickstartable trees (%d)"
msgstr ""

#: ../satellite_tools/reposync.py:111 ../satellite_tools/satsync.py:439
msgid "+++ sending log as an email +++"
msgstr ""

#: ../satellite_tools/reposync.py:114
#, python-format
msgid "%s sync. report from %s"
msgstr ""

#: ../satellite_tools/reposync.py:124 ../satellite_tools/satsync.py:449
msgid "+++ email requested, but there is nothing to send +++"
msgstr ""

#: ../satellite_tools/rhn_satellite_activate.py:198
#, python-format
msgid ""
"\"%s\" (specified in commandline)\n"
"could not be opened and read:\n"
"%s"
msgstr ""

#: ../satellite_tools/rhn_satellite_activate.py:205
#, python-format
msgid ""
"\"%s\" could not be opened\n"
"and/or written to:\n"
"%s"
msgstr ""

#: ../satellite_tools/satsync.py:258
#, python-format
msgid "No handler for step %s"
msgstr ""

#. Try one more time - this time it should be faster since
#. everything should be cached
#: ../satellite_tools/satsync.py:270
msgid "Environment changed, trying again..."
msgstr ""

#: ../satellite_tools/satsync.py:277
msgid "ERROR: Encountered IntegrityError: \n"
msgstr ""

#: ../satellite_tools/satsync.py:285
msgid "Repeated failures"
msgstr ""

#: ../satellite_tools/satsync.py:290
#, python-format
msgid ""
"    Import complete:\n"
"        Begin time: %s\n"
"        End time:   %s\n"
"        Elapsed:    %s\n"
"          "
msgstr ""

#: ../satellite_tools/satsync.py:311
msgid "hours"
msgstr ""

#: ../satellite_tools/satsync.py:311
msgid "minutes"
msgstr ""

#: ../satellite_tools/satsync.py:311
msgid "seconds"
msgstr ""

#: ../satellite_tools/satsync.py:357
msgid ""
"ERROR: The dump is missing package data, use --no-rpms to skip this step or "
"fix the content to include package data."
msgstr ""

#. the orgs() method doesn't exist; that's fine we just
#. won't sync the orgs
#: ../satellite_tools/satsync.py:404
msgid "The SUSE Manager master does not support syncing orgs data."
msgstr ""

#: ../satellite_tools/satsync.py:404
msgid "Skipping..."
msgstr ""

#: ../satellite_tools/satsync.py:442
#, python-format
msgid "SUSE Manager Inter Server sync. report from %s"
msgstr ""

#: ../satellite_tools/satsync.py:521
msgid " - file-system synchronization"
msgstr ""

#: ../satellite_tools/satsync.py:533 ../satellite_tools/satsync.py:541
msgid " - live synchronization"
msgstr ""

#: ../satellite_tools/satsync.py:534
#, python-brace-format
msgid ""
"ERROR: Live content synchronizing with RHN Classic Hosted is no longer "
"supported.\n"
"Please use the cdn-sync command instead unless you are attempting to sync "
"from another {PRODUCT_NAME} via Inter-Server-Sync (ISS), or from local "
"content on disk via Channel Dump ISOs."
msgstr ""

#: ../satellite_tools/satsync.py:542
#, python-format
msgid "   url: %s"
msgstr ""

#: ../satellite_tools/satsync.py:543
#, python-format
msgid "   debug/output level: %s"
msgstr ""

#: ../satellite_tools/satsync.py:553
msgid "ERROR: this server must be registered with SUSE Manager."
msgstr ""

#: ../satellite_tools/satsync.py:575
#, python-format
msgid "Retrieving / parsing %s data"
msgstr ""

#: ../satellite_tools/satsync.py:585 ../satellite_tools/satsync.py:600
msgid "*** SYSTEM INTERRUPT CALLED ***"
msgstr ""

#: ../satellite_tools/satsync.py:593
msgid "ERROR: fatal parser exception occurred "
msgstr ""

#: ../satellite_tools/satsync.py:594
#, python-format
msgid "(line: %s, col: %s msg: %s)"
msgstr ""

#: ../satellite_tools/satsync.py:598
#, python-format
msgid "ERROR: parser exception occurred: %s"
msgstr ""

#: ../satellite_tools/satsync.py:603
msgid "ERROR: exception (during parse) occurred: "
msgstr ""

#: ../satellite_tools/satsync.py:604
#, python-format
msgid ""
"   Encountered some errors with %s data (see logs (%s) for more information)"
msgstr ""

#: ../satellite_tools/satsync.py:606
#, python-format
msgid "   Encountered some errors with %s data:"
msgstr ""

#: ../satellite_tools/satsync.py:607
#, python-format
msgid "   ------- %s PARSE/IMPORT ERROR -------"
msgstr ""

#: ../satellite_tools/satsync.py:609
msgid "   ---------------------------------------"
msgstr ""

#: ../satellite_tools/satsync.py:612
#, python-format
msgid "%s data complete"
msgstr ""

#: ../satellite_tools/satsync.py:665
msgid "Retrieving / parsing channel data"
msgstr ""

#: ../satellite_tools/satsync.py:718
msgid "Channel data complete"
msgstr ""

#: ../satellite_tools/satsync.py:736
#, python-format
msgid "%10s import from %s"
msgstr ""

#: ../satellite_tools/satsync.py:739
#, python-format
msgid "%10s import from %s - %s"
msgstr ""

#: ../satellite_tools/satsync.py:743
#, python-format
msgid "%10s"
msgstr ""

#: ../satellite_tools/satsync.py:750
msgid "p"
msgstr ""

#: ../satellite_tools/satsync.py:752
msgid "."
msgstr ""

#: ../satellite_tools/satsync.py:758
msgid "   p = previously imported/synced channel"
msgstr ""

#: ../satellite_tools/satsync.py:759
msgid "   . = channel not yet imported/synced"
msgstr ""

#: ../satellite_tools/satsync.py:765
msgid "   e = channel no longer supported (end-of-service)"
msgstr ""

#: ../satellite_tools/satsync.py:767
msgid "   ? = channel label invalid --- typo?"
msgstr ""

#: ../satellite_tools/satsync.py:771
#, python-format
msgid "   %s:"
msgstr ""

#: ../satellite_tools/satsync.py:772
#, python-format
msgid "      %s %-40s %4s %s"
msgstr ""

#: ../satellite_tools/satsync.py:773
msgid "base-channels"
msgstr ""

#: ../satellite_tools/satsync.py:786 ../satellite_tools/satsync.py:1603
msgid "NONE RELEVANT"
msgstr ""

#: ../satellite_tools/satsync.py:808
msgid "end-of-service"
msgstr ""

#: ../satellite_tools/satsync.py:809
msgid "e"
msgstr ""

#: ../satellite_tools/satsync.py:815
msgid "   typos:"
msgstr ""

#: ../satellite_tools/satsync.py:816
msgid "?"
msgstr ""

#: ../satellite_tools/satsync.py:831
#, python-format
msgid "XXX: imported channels: %s"
msgstr ""

#: ../satellite_tools/satsync.py:832
#, python-format
msgid "XXX:   cached channels: %s"
msgstr ""

#: ../satellite_tools/satsync.py:837
msgid "XXX: list channels called"
msgstr ""

#: ../satellite_tools/satsync.py:855
msgid "ERROR: these channels either do not exist or are not available:"
msgstr ""

#: ../satellite_tools/satsync.py:859
#, python-format
msgid "       (to see a list of channel labels: %s --list-channels)"
msgstr ""

#: ../satellite_tools/satsync.py:904
#, python-format
msgid "   Retrieving / parsing short package metadata: %s (%s)"
msgstr ""

#: ../satellite_tools/satsync.py:965
#, python-format
msgid "Diffing package metadata (what's missing locally?): %s"
msgstr ""

#: ../satellite_tools/satsync.py:971 ../satellite_tools/satsync.py:1254
msgid "Diffing:    "
msgstr ""

#: ../satellite_tools/satsync.py:988
msgid "ERROR: incremental dump skipped"
msgstr ""

#: ../satellite_tools/satsync.py:1079
msgid "Downloading rpm packages"
msgstr ""

#: ../satellite_tools/satsync.py:1084
#, python-format
msgid "   Fetching any missing RPMs: %s (%s)"
msgstr ""

#: ../satellite_tools/satsync.py:1085 ../satellite_tools/satsync.py:1153
msgid "NONE MISSING"
msgstr ""

#: ../satellite_tools/satsync.py:1094
msgid "Processing rpm packages complete"
msgstr ""

#: ../satellite_tools/satsync.py:1121
msgid "Downloading package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1146
msgid "Downloading srpm packages"
msgstr ""

#: ../satellite_tools/satsync.py:1152
#, python-format
msgid "   Fetching any missing SRPMs: %s (%s)"
msgstr ""

#: ../satellite_tools/satsync.py:1249
#, python-format
msgid "Diffing source package metadata (what's missing locally?): %s"
msgstr ""

#: ../satellite_tools/satsync.py:1260
msgid "Downloading source package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1338 ../satellite_tools/satsync.py:2027
#, python-format
msgid "Unable to save file %s: %s"
msgstr ""

#. for
#. Retried a number of times and it still failed; log the
#. file as being failed and move on
#: ../satellite_tools/satsync.py:1345
#, python-format
msgid "Failed to fetch file %s"
msgstr ""

#: ../satellite_tools/satsync.py:1350
msgid "Downloading kickstartable trees metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1365
msgid "Downloading kickstartable trees files"
msgstr ""

#: ../satellite_tools/satsync.py:1504
#, python-format
msgid "Grabbing all patches for channel %s"
msgstr ""

#: ../satellite_tools/satsync.py:1554
msgid "Downloading patch data"
msgstr ""

#: ../satellite_tools/satsync.py:1556
msgid "Forcing download of all patch data for requested channels."
msgstr ""

#: ../satellite_tools/satsync.py:1571
msgid "Downloading patch data complete"
msgstr ""

#: ../satellite_tools/satsync.py:1576 ../satellite_tools/satsync.py:1597
msgid "Downloading:"
msgstr ""

#: ../satellite_tools/satsync.py:1579
msgid " - complete"
msgstr ""

#: ../satellite_tools/satsync.py:1624
msgid "Importing source package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1627
msgid "Importing package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1635
msgid "Importing:  "
msgstr ""

#. not in the cache
#: ../satellite_tools/satsync.py:1703
msgid ""
"Package Not Found in Cache, Clear the Cache "
"to                                  Regenerate it."
msgstr ""

#: ../satellite_tools/satsync.py:1709
msgid "Importing channel patches"
msgstr ""

#: ../satellite_tools/satsync.py:1714
#, python-format
msgid "Importing %s patches for channel %s."
msgstr ""

#. Incomplete configuration
#: ../satellite_tools/satsync.py:2113
msgid "ERROR: server.mount_point not set in the configuration file"
msgstr ""

#: ../satellite_tools/satsync.py:2117
#, python-format
msgid "ERROR: server.mount_point %s do not exist"
msgstr ""

#: ../satellite_tools/satsync.py:2122
#, python-format
msgid "ERROR: path under server.mount_point (%s)  do not exist"
msgstr ""

#: ../satellite_tools/satsync.py:2199
#, python-format
msgid "Commandline: %s"
msgstr ""

#: ../satellite_tools/satsync.py:2202
#, python-format
msgid ""
"DEBUG ONLY: max. batch-size for XML/database-import processing (1..%s).\"man "
"satellite-sync\" for more information."
msgstr ""

#: ../satellite_tools/satsync.py:2205
msgid "alternative SSL CA Cert (fullpath to cert file)"
msgstr ""

#: ../satellite_tools/satsync.py:2207
msgid "process data for this channel only"
msgstr ""

#: ../satellite_tools/satsync.py:2209
msgid ""
"disk dump will be considered to be a full export; see \"man satellite-sync\" "
"for more information."
msgstr ""

#: ../satellite_tools/satsync.py:2212
msgid "existing custom channels will also be synced (unless -c is used)"
msgstr ""

#: ../satellite_tools/satsync.py:2214
#, python-format
msgid ""
"override debug level set in /etc/rhn/rhn.conf (which is currently set at %s)."
msgstr ""

#: ../satellite_tools/satsync.py:2216
#, python-format
msgid "requested version of XML dump (default: %s)"
msgstr ""

#: ../satellite_tools/satsync.py:2218
msgid "e-mail a report of what was synced/imported"
msgstr ""

#: ../satellite_tools/satsync.py:2220
msgid "forcibly process all (not a diff of) patch metadata"
msgstr ""

#: ../satellite_tools/satsync.py:2222
msgid "Do not use an http proxy under any circumstances."
msgstr ""

#: ../satellite_tools/satsync.py:2224
msgid "alternative http proxy (hostname:port)"
msgstr ""

#: ../satellite_tools/satsync.py:2226
msgid "alternative http proxy username"
msgstr ""

#: ../satellite_tools/satsync.py:2228
msgid "alternative http proxy password"
msgstr ""

#: ../satellite_tools/satsync.py:2230
msgid "parent SUSE Manager to import content from"
msgstr ""

#: ../satellite_tools/satsync.py:2232
msgid "list all available channels and exit"
msgstr ""

#: ../satellite_tools/satsync.py:2234
msgid "help on all error codes mgr-inter-sync returns"
msgstr ""

#: ../satellite_tools/satsync.py:2236
msgid "source mount point for import - disk update only"
msgstr ""

#: ../satellite_tools/satsync.py:2238
msgid "do not process patch data"
msgstr ""

#: ../satellite_tools/satsync.py:2240
msgid "do not process kickstart data (provisioning only)"
msgstr ""

#: ../satellite_tools/satsync.py:2242
msgid "do not process full package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:2244
msgid "do not download, or process any RPMs"
msgstr ""

#: ../satellite_tools/satsync.py:2246
msgid "turn off SSL (not recommended)"
msgstr ""

#: ../satellite_tools/satsync.py:2248
msgid "org to which the sync imports data. defaults to the admin account"
msgstr ""

#: ../satellite_tools/satsync.py:2250
msgid "print the configuration and exit"
msgstr ""

#: ../satellite_tools/satsync.py:2252
msgid "alternative server with which to connect (hostname)"
msgstr ""

#: ../satellite_tools/satsync.py:2254
msgid "synchronize to this step (man satellite-sync for more info)"
msgstr ""

#: ../satellite_tools/satsync.py:2256
msgid "write complete data to tempfile before streaming to remainder of app"
msgstr ""

#: ../satellite_tools/satsync.py:2258
msgid "DEBUG ONLY: alternative path to digital system id"
msgstr ""

#: ../satellite_tools/satsync.py:2260
msgid "alternative email address(es) for sync output (--email option)"
msgstr ""

#: ../satellite_tools/satsync.py:2262
msgid "do not remove rpms when importing from local dump"
msgstr ""

#: ../satellite_tools/satsync.py:2264
msgid ""
"the fully qualified domain name of the master Satellite. Valid with --mount-"
"point only. Required if you want to import org data and channel permissions."
msgstr ""

#: ../satellite_tools/satsync.py:2274
#, python-format
msgid "ERROR: these arguments make no sense in this context (try --help): %s"
msgstr ""

#. An SQL error is fatal... crash and burn
#: ../satellite_tools/satsync.py:2286
#, python-format
msgid "ERROR: Can't connect to the database: %s"
msgstr ""

#: ../satellite_tools/satsync.py:2287
msgid "ERROR: Check if your database is running."
msgstr ""

#: ../satellite_tools/satsync.py:2322
#, python-format
msgid "ERROR: --debug-level takes an in integer value within the range %s."
msgstr ""

#: ../satellite_tools/satsync.py:2324
msgid "  0  - little logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2325
msgid "  1  - minimal logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2326
msgid "  2  - normal level of logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2327
msgid "  3  - lots of logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2328
msgid "  4+ - excessive logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2341
msgid "ERROR: The --master option is only valid with the --mount-point option"
msgstr ""

#: ../satellite_tools/satsync.py:2351
#, python-format
msgid "ERROR: Unable to lookup Org Id %s"
msgstr ""

#: ../satellite_tools/satsync.py:2360
msgid ""
"WARNING: --list-channels option overrides any --step option. --step ignored."
msgstr ""

#: ../satellite_tools/satsync.py:2375
#, python-format
msgid ""
"ERROR: '%s' is not a valid step. See 'man mgr-inter-sync' for more detail."
msgstr ""

#: ../satellite_tools/satsync.py:2407
msgid ""
"ERROR: No channels currently imported; try mgr-inter-sync --list-channels; "
"then mgr-inter-sync -c chn0 -c chn1..."
msgstr ""

#. int(None) --> TypeError
#. int('a')  --> ValueError
#: ../satellite_tools/satsync.py:2457 ../satellite_tools/satsync.py:2461
msgid "ERROR: --batch-size must have a value within the range: 1..50"
msgstr ""

#: ../satellite_tools/satsync.py:2469
#, python-format
msgid "ERROR: no such directory %s"
msgstr ""

#: ../satellite_tools/satsync.py:2474
msgid "Error Codes: Returned codes means:"
msgstr ""

#: ../satellite_tools/satsync.py:2475
msgid " -1  - Could not lock file or KeyboardInterrupt or SystemExit"
msgstr ""

#: ../satellite_tools/satsync.py:2476
msgid "  0  - User interrupted or intentional exit"
msgstr ""

#: ../satellite_tools/satsync.py:2477
msgid "  1  - attempting to run more than one instance of mgr-inter-sync."
msgstr ""

#: ../satellite_tools/satsync.py:2478
msgid "  2  - Unable to find synchronization tools."
msgstr ""

#: ../satellite_tools/satsync.py:2479
msgid "  3  - a general socket exception occurred"
msgstr ""

#: ../satellite_tools/satsync.py:2480
msgid "  4  - an SSL error occurred. Recheck your SSL settings."
msgstr ""

#: ../satellite_tools/satsync.py:2481
msgid "  5  - ISS error"
msgstr ""

#: ../satellite_tools/satsync.py:2482
msgid "  6  - unhandled exception occurred"
msgstr ""

#: ../satellite_tools/satsync.py:2483
msgid "  7  - unknown sync error"
msgstr ""

#: ../satellite_tools/satsync.py:2484
msgid "  8  - ERROR: must be root to execute"
msgstr ""

#: ../satellite_tools/satsync.py:2485
msgid "  9  - rpclib fault during synchronization init"
msgstr ""

#: ../satellite_tools/satsync.py:2486
msgid "  10 - synchronization init error"
msgstr ""

#: ../satellite_tools/satsync.py:2487
msgid "  11 - Error parsing XML stream"
msgstr ""

#: ../satellite_tools/satsync.py:2488
msgid "  12 - Channel do not exist"
msgstr ""

#: ../satellite_tools/satsync.py:2489
msgid "  13 - SQL error during importing package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:2490
msgid "  14 - SQL error during linking channel packages"
msgstr ""

#: ../satellite_tools/satsync.py:2491
msgid "  15 - SQL error during xml processing"
msgstr ""

#: ../satellite_tools/satsync.py:2492
msgid "  16 - server.mount_point not set in the configuration file"
msgstr ""

#: ../satellite_tools/satsync.py:2493
msgid ""
"  17 - SQL error during retrieving the channels already imported in the SUSE "
"Manager database"
msgstr ""

#: ../satellite_tools/satsync.py:2494
msgid "  18 - Wrong db connection string in rhn.conf"
msgstr ""

#: ../satellite_tools/satsync.py:2495
msgid "  19 - Bad arguments"
msgstr ""

#: ../satellite_tools/satsync.py:2496
msgid "  20 - Could not connect to db."
msgstr ""

#: ../satellite_tools/satsync.py:2497
msgid "  21 - Bad debug level"
msgstr ""

#: ../satellite_tools/satsync.py:2498
msgid "  22 - Not valid step"
msgstr ""

#: ../satellite_tools/satsync.py:2499
msgid "  24 - no such file"
msgstr ""

#: ../satellite_tools/satsync.py:2500
msgid "  25 - no such directory"
msgstr ""

#: ../satellite_tools/satsync.py:2501
msgid "  26 - mount_point does not exist"
msgstr ""

#: ../satellite_tools/satsync.py:2502
msgid "  27 - No such org"
msgstr ""

#: ../satellite_tools/satsync.py:2503
msgid "  28 - error: --master is only valid with --mount-point"
msgstr ""

#: ../satellite_tools/satsync.py:2510
#, python-format
msgid "ERROR: unknown dump version, try one of %s"
msgstr ""
 07070100000080000081B40000000000000000000000016290A0C10000B6C2000000000000000000000000000000000000001B00000000spacewalk-backend/po/nl.po    # SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
#
# Translators:
# Bart Couvreur <bercie23@yahoo.com>, 2005.
# Peter van Egdom <p.van.egdom@gmail.com>, 2003, 2004, 2005, 2006, 2007.
# Petit Gregory <thunderbirds@pandora.be>, 2003.
msgid ""
msgstr ""
"Project-Id-Version: Spacewalk\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-10-16 13:34+0200\n"
"PO-Revision-Date: 2011-03-04 16:08+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Dutch (http://www.transifex.com/projects/p/fedora/language/"
"nl/)\n"
"Language: nl\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"

#: ../server/apacheAuth.py:66
#, python-format
msgid "incomplete proxy authentication token: %s"
msgstr ""

#: ../server/apacheAuth.py:84
#, python-format
msgid "Sent proxy signature %s does not match ours %s."
msgstr ""

#: ../server/apacheAuth.py:119
msgid "declined proxy authentication"
msgstr ""

#: ../server/apacheRequest.py:59
#, python-format
msgid "Invalid request received (%s)."
msgstr ""

#: ../server/apacheRequest.py:120
#, python-format
msgid ""
"IMPORTANT MESSAGE FOLLOWS:\n"
"%s"
msgstr ""

#: ../server/apacheRequest.py:149
#, python-format
msgid ""
"While running '%s': caught\n"
"%s : %s\n"
msgstr ""

#: ../server/apacheRequest.py:606
#, python-format
msgid "Invalid URI %s"
msgstr ""

#: ../server/configFilesHandler.py:129 ../server/handlers/app/packages.py:192
#: ../server/handlers/xmlrpc/registration.py:215
#: ../server/handlers/xmlrpc/registration.py:1168
#: ../server/handlers/xmlrpc/registration.py:1307
#, python-format
msgid ""
"\n"
"                   %s Account has been deactivated on this server.\n"
"                   Please contact your Org administrator for more help."
msgstr ""

#: ../server/handlers/applet/applet.py:78
#, python-brace-format
msgid "Your system was not found in the {PRODUCT_NAME} database"
msgstr ""

#: ../server/handlers/sat/auth.py:45
msgid "ISS is disabled on this server."
msgstr ""

#: ../server/handlers/sat/auth.py:50
#, python-format
msgid "Server \"%s\" is not enabled for ISS."
msgstr ""

#: ../server/handlers/xmlrpc/errata.py:64
#, python-format
msgid "Expected a package name, not: %s"
msgstr ""

#: ../server/handlers/xmlrpc/errata.py:115
#, python-format
msgid "Expected a package, not: %s"
msgstr ""

#: ../server/handlers/xmlrpc/proxy.py:65
#, python-format
msgid "SUSE Manager Proxy service not enabled for server profile: \"%s\""
msgstr ""

#: ../server/handlers/xmlrpc/proxy.py:85
msgid "Invalid session key"
msgstr ""

#: ../server/handlers/xmlrpc/proxy.py:93
msgid "This server ID no longer exists"
msgstr ""

#: ../server/handlers/xmlrpc/queue.py:433
#, python-format
msgid "Invalid action value type %s (%s)"
msgstr ""

#: ../server/handlers/xmlrpc/queue.py:464
#, python-format
msgid "Action %s does not belong to server %s"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:194
msgid "Required data missing"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:198
msgid "Required members missing"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:207
msgid "Attempt to register a system to an invalid username"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:839
msgid "Invalid system release version requested"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1063
msgid ""
"Unable to find a valid network interface, both ipaddr and ip6addr not found."
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1115
#, python-brace-format
msgid "{PRODUCT_NAME} Welcome Message"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1125
msgid "Privacy Statement"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1146
msgid "Expected a dictionary as a product argument"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1374
#, python-format
msgid "Invalid value '%s' for %s (%s)"
msgstr ""

#: ../server/handlers/xmlrpc/scap.py:104
msgid "Invalid system_id/action_id pair."
msgstr ""

#: ../server/handlers/xmlrpc/up2date.py:233
#, python-format
msgid "Invalid value %s (%s)"
msgstr ""

#: ../server/importlib/userAuth.py:98
msgid "You are not authorized to manage packages in the null org"
msgstr ""

#: ../server/importlib/userAuth.py:103
#, python-format
msgid "You are not allowed to manage packages in the %s org"
msgstr ""

#: ../server/importlib/userAuth.py:121
msgid "You are not allowed to perform administrative tasks"
msgstr ""

#: ../server/importlib/userAuth.py:144
#, python-format
msgid ""
"You are not allowed to manage channel %s, or that channel does not exist"
msgstr ""

#: ../server/importlib/userAuth.py:204
#, python-format
msgid ""
"\n"
"               %s Account has been deactivated on this server.\n"
"               Please contact your Org administrator for more help."
msgstr ""

#: ../server/rhnChannel.py:1992
#, python-format
msgid ""
"Your account does not have access to any channels matching "
"(release='%(release)s', arch='%(arch)s')%(www_activation)s"
msgstr ""

#: ../server/rhnChannel.py:2002
msgid ""
"\n"
"If you have a registration number, please register with it first at http://"
"www.redhat.com/apps/activate/ and then try again.\n"
"\n"
msgstr ""

#: ../server/rhnChannel.py:2012
#, python-format
msgid "Insufficient subscription permissions for release (%s, %s"
msgstr ""

#. Various messages that can be reused
#.
#. bretm 02/07/2007 -- when we have better old-client documentation, probably
#. will be safe to get rid of all this crap
#: ../server/rhnChannel.py:2276 ../server/rhnChannel.py:2287
#: ../server/rhnChannel.py:2302
msgid "System Registered but Inactive"
msgstr ""

#: ../server/rhnChannel.py:2277
#, python-format
msgid ""
"\n"
"Invalid Architecture and OS release combination (%s, %s).\n"
"Your system has been registered, but will not receive updates\n"
"because it is not subscribed to a channel. If you have not yet\n"
"activated your product for service, please visit our website at:\n"
"\n"
"     http://www.redhat.com/apps/activate/\n"
"\n"
"...to activate your product."
msgstr ""

#: ../server/rhnChannel.py:2288
#, python-format
msgid ""
"\n"
"Invalid Architecture and OS release combination (%s, %s).\n"
"Your system has been registered, but will not receive updates\n"
"because it could not be subscribed to a base channel.\n"
"Please contact your organization administrator for assistance.\n"
msgstr ""

#: ../server/rhnChannel.py:2295
#, python-format
msgid ""
"\n"
"  This system has been successfully registered, but is not yet entitled\n"
"  to service.  To entitle this system to service, login to the web site at:\n"
"\n"
"  %(entitlement_url)s\n"
msgstr ""

#: ../server/rhnChannel.py:2303
#, python-format
msgid ""
"\n"
"  This system has been successfully registered, but no service entitlements\n"
"  were available.  To entitle this system to service, login to the web site "
"at:\n"
"\n"
"  %(entitlement_url)s\n"
msgstr ""

#: ../server/rhnHandler.py:62
msgid "Please run rhn_register as root on this client"
msgstr ""

#: ../server/rhnHandler.py:75
#, python-format
msgid "Service not enabled for system profile: \"%s\""
msgstr ""

#: ../server/rhnPackage.py:49 ../server/rhnPackage.py:87
#: ../server/rhnPackage.py:107 ../server/rhnPackage.py:158
#, python-format
msgid "Invalid RPM package %s requested"
msgstr ""

#: ../server/rhnPackage.py:112
msgid "Package not found"
msgstr ""

#: ../server/rhnServer/server_class.py:97
#, python-format
msgid "Architecture `%s' is not supported"
msgstr ""

#: ../server/rhnServer/server_token.py:78
#, python-format
msgid "Token `%s' has more than one base channel assigned"
msgstr ""

#: ../server/rhnServer/server_token.py:80
msgid "Conflicting base channels"
msgstr ""

#: ../server/rhnServer/server_token.py:190
#, python-format
msgid "Failed to add server to group %s"
msgstr ""

#: ../server/rhnServer/server_token.py:503
#, python-format
msgid "Maximum usage count of %s reached"
msgstr ""

#: ../server/rhnServer/server_token.py:744
msgid ""
"Stacking of re-registration tokens with different base entitlements is not "
"supported"
msgstr ""

#: ../server/rhnServer/server_token.py:811
#, python-format
msgid "Could not find token '%s'"
msgstr ""

#. Cannot use activation keys from different orgs
#: ../server/rhnServer/server_token.py:843
msgid "Tokens from mismatching orgs"
msgstr ""

#. Two tokens with different kickstart sessions
#: ../server/rhnServer/server_token.py:853
msgid "Kickstart session mismatch"
msgstr ""

#: ../server/rhnServer/server_token.py:877
msgid "Stacking of re-registration tokens is not supported"
msgstr ""

#: ../server/rhnUser.py:289 ../server/rhnUser.py:292
msgid "Invalid username/password combination"
msgstr ""

#. nope, not reserved either
#: ../server/rhnUser.py:467
#, python-format
msgid "Username `%s' has not been reserved"
msgstr ""

#. New accounts have to specify an e-mail address
#: ../server/rhnUser.py:473
msgid "E-mail address not specified"
msgstr ""

#: ../server/rhnUser.py:509
#, python-format
msgid "username should be at least %d characters"
msgstr ""

#: ../server/rhnUser.py:512
#, python-format
msgid "username should be less than %d characters"
msgstr ""

#: ../server/rhnUser.py:523
#, python-format
msgid "username = `%s', invalid character `%s'"
msgstr ""

#: ../server/rhnUser.py:542
#, python-format
msgid "Please limit your e-mail address to %s chars"
msgstr ""

#: ../server/rhnUser.py:623
#, python-format
msgid "password must be at least %d characters"
msgstr ""

#: ../server/rhnUser.py:626
#, python-format
msgid "Password must be shorter than %d characters"
msgstr ""

#: ../server/rhnUser.py:644
#, python-format
msgid "password contains character `%s'"
msgstr ""

#: ../server/rhnUser.py:651
#, python-format
msgid "username should be at least %d characters long"
msgstr ""

#: ../server/rhnUser.py:662
#, python-format
msgid "Cannot register usernames ending with %s"
msgstr ""

#. 0-999: Red Hat client/client-like interaction errors:
#: ../common/rhnException.py:53
msgid "This does not appear to be a valid username."
msgstr ""

#: ../common/rhnException.py:54
msgid "Invalid username and password combination."
msgstr ""

#: ../common/rhnException.py:55
msgid "This login is already taken, or the password is incorrect."
msgstr ""

#: ../common/rhnException.py:56
msgid "Permission denied."
msgstr ""

#: ../common/rhnException.py:57
msgid "Object not found."
msgstr ""

#: ../common/rhnException.py:58
msgid "Invalid System Digital ID."
msgstr ""

#: ../common/rhnException.py:59
msgid "Invalid System Credentials."
msgstr ""

#: ../common/rhnException.py:60
msgid "Could not retrieve user data from database."
msgstr ""

#: ../common/rhnException.py:61
msgid "Valid username required."
msgstr ""

#: ../common/rhnException.py:62
msgid "Valid password required."
msgstr ""

#: ../common/rhnException.py:63
msgid "Minimum username length violation."
msgstr ""

#: ../common/rhnException.py:64
msgid "Minimum password length violation."
msgstr ""

#: ../common/rhnException.py:65
msgid "The username contains invalid characters."
msgstr ""

#: ../common/rhnException.py:66
msgid "File not found."
msgstr ""

#: ../common/rhnException.py:67
msgid "Architecture and OS version combination is not supported."
msgstr ""

#: ../common/rhnException.py:68
msgid "Could not retrieve system data from database."
msgstr ""

#: ../common/rhnException.py:69
msgid "Invalid arguments passed to function."
msgstr ""

#: ../common/rhnException.py:70
msgid "Unable to retrieve requested entry."
msgstr ""

#: ../common/rhnException.py:71
msgid "Could not update database entry."
msgstr ""

#: ../common/rhnException.py:72
msgid "Unsupported server architecture."
msgstr ""

#: ../common/rhnException.py:73
#, python-format
msgid ""
"\n"
"     The anonymous server functionality is no longer available.\n"
"\n"
"     Please re-register this system by running mgr_register as root.\n"
"     Please visit https://%(hostname)s/rhn/systems/SystemEntitlements.do\n"
"     or login at https://%(hostname)s, and from the \"Overview\" tab,\n"
"     select \"Subscription Management\" to enable the service for this "
"system.\n"
"     "
msgstr ""

#: ../common/rhnException.py:81
msgid "Record not available in the database."
msgstr ""

#: ../common/rhnException.py:82
msgid "Invalid value for entry."
msgstr ""

#: ../common/rhnException.py:83
#, python-format
msgid ""
"\n"
"     This system does not have a valid entitlement for SUSE Manager.\n"
"     Please visit https://%(hostname)s/rhn/systems/SystemEntitlements.do\n"
"     or login at https://%(hostname)s, and from the \"Overview\" tab,\n"
"     select \"Subscription Management\" to enable the service for this "
"system.\n"
"     "
msgstr ""

#: ../common/rhnException.py:89
msgid "Channel error"
msgstr ""

#: ../common/rhnException.py:90
msgid "Client session token is invalid."
msgstr ""

#: ../common/rhnException.py:91
msgid "Client session token has expired."
msgstr ""

#: ../common/rhnException.py:92
msgid "You are not authorized to retrieve the requested object."
msgstr ""

#: ../common/rhnException.py:93
msgid "Invalid action"
msgstr ""

#: ../common/rhnException.py:94
msgid "You are not allowed to perform administrative tasks on this system."
msgstr ""

#: ../common/rhnException.py:96
msgid "The system is already subscribed to the specified channel."
msgstr ""

#: ../common/rhnException.py:97
msgid "The system is not currently subscribed to the specified channel."
msgstr ""

#: ../common/rhnException.py:98
msgid "The specified channel does not exist."
msgstr ""

#: ../common/rhnException.py:99
msgid "Invalid channel version."
msgstr ""

#: ../common/rhnException.py:100
msgid ""
"\n"
"     User group membership limits exceeded.\n"
"\n"
"     The current settings for your account do not allow you to add another\n"
"     user account. Please check with the organization administrator for "
"your\n"
"     account if the maximum number of users allowed to subscribe to server "
"needs\n"
"     to be changed.\n"
"     "
msgstr ""

#: ../common/rhnException.py:108
msgid ""
"\n"
"     System group membership limits exceeded.\n"
"\n"
"     The current settings for your account do not allow you to add another\n"
"     system profile. Please check with the organization administrator for "
"your\n"
"     account for modifying the maximum number of system profiles that can "
"be\n"
"     subscribed to your account.\n"
"     "
msgstr ""

#: ../common/rhnException.py:116
msgid ""
"\n"
"     Invalid architecture.\n"
"\n"
"     The architecture of the package is not supported by\n"
"     "
msgstr ""

#: ../common/rhnException.py:121
msgid "Invalid RPM header"
msgstr ""

#: ../common/rhnException.py:122
msgid ""
"\n"
"    This system is already registered as a Salt Minion. If you want to "
"register it as a traditional client\n"
"    please delete it first via the web UI or API and then register it using "
"the traditional tools.\n"
"    "
msgstr ""

#. For the uploading tools
#: ../common/rhnException.py:127
msgid "Invalid information uploaded to the server"
msgstr ""

#: ../common/rhnException.py:128
msgid "Error uploading network interfaces configuration."
msgstr ""

#: ../common/rhnException.py:129
msgid ""
"\n"
"     Package Upload Failed due to uniqueness constraint violation.\n"
"     Make sure the package does not have any duplicate dependencies or\n"
"     does not already exists on the server\n"
"     "
msgstr ""

#: ../common/rhnException.py:134
msgid ""
"\n"
"     The --force rhnpush option is disabled on this server.\n"
"     Please contact your SUSE Manager administrator for more help.\n"
"     "
msgstr ""

#. 60-70: token errors
#: ../common/rhnException.py:140
msgid ""
"\n"
"     The activation token specified could not be found on the server.\n"
"     Please retry with a valid key.\n"
"     "
msgstr ""

#: ../common/rhnException.py:144
msgid "Too many systems registered using this registration token"
msgstr ""

#: ../common/rhnException.py:145
msgid "Token contains invalid, obsoleted or insufficient settings"
msgstr ""

#: ../common/rhnException.py:146
msgid "Conflicting activation tokens"
msgstr ""

#. 70-80: channel subscription errors
#: ../common/rhnException.py:149
msgid ""
"\n"
"     No matching base channel found for your system.\n"
"     "
msgstr ""

#: ../common/rhnException.py:152
msgid ""
"\n"
"     You do not have subscription permission to the designated channel.\n"
"     Please refer to your organization's channel or organization\n"
"     administrators for further details.\n"
"     "
msgstr ""

#: ../common/rhnException.py:157
msgid "You can not unsubscribe from base channel."
msgstr ""

#: ../common/rhnException.py:158
msgid "SUSE Manager or Proxy channel can not be subscribed."
msgstr ""

#. 80-90: server group errors
#: ../common/rhnException.py:161
msgid "There was an error while trying to join the system to its groups"
msgstr ""

#. 90-100: entitlement errors
#: ../common/rhnException.py:164
msgid "Unable to entitle system"
msgstr ""

#. 100-109: e-mail and uuid related faults
#: ../common/rhnException.py:167
msgid "Maximum e-mail length violation."
msgstr ""

#: ../common/rhnException.py:168
msgid "This system has been previously registered."
msgstr ""

#: ../common/rhnException.py:169
msgid "Invalid username"
msgstr ""

#. 140-159 applet errors
#: ../common/rhnException.py:172
msgid "Unable to look up server"
msgstr ""

#. 160-179: OSAD errors
#: ../common/rhnException.py:175
msgid "Required argument is missing"
msgstr ""

#. 600-699: RHEL5+ EN errors
#: ../common/rhnException.py:178
msgid "No entitlement information tied to hardware"
msgstr ""

#: ../common/rhnException.py:179
msgid "Installation number is not entitling"
msgstr ""

#. 700-799: Additional user input verification errors.
#: ../common/rhnException.py:182
msgid "Maximum username length violation"
msgstr ""

#: ../common/rhnException.py:183
msgid "Maximum password length violation"
msgstr ""

#: ../common/rhnException.py:184
msgid "This user has read only API access. Action denied."
msgstr ""

#: ../common/rhnException.py:186
msgid "System Name cannot be less than 1 character"
msgstr ""

#. 1000-1999: Proxy specific errors:
#. issued by a Proxy to the client
#: ../common/rhnException.py:190
msgid "SUSE Manager Proxy error."
msgstr ""

#: ../common/rhnException.py:191
msgid "SUSE Manager Proxy unable to login."
msgstr ""

#. issued by a SUSE Manager Server/Satellite to the proxy
#: ../common/rhnException.py:193
msgid ""
"\n"
"     SUSE Manager Proxy system ID does not match a Spacewalk Proxy Server\n"
"     in the database.\n"
"     "
msgstr ""

#: ../common/rhnException.py:197
msgid "SUSE Manager Proxy session token is invalid."
msgstr ""

#: ../common/rhnException.py:198
msgid "SUSE Manager Proxy session token has expired."
msgstr ""

#. 2000-2999: Red Hat Satellite specific errors:
#: ../common/rhnException.py:202
msgid ""
"\n"
"      user creation is not allowed via mgr_register;\n"
"     please contact your sysadmin to have your account created.\n"
"     "
msgstr ""

#: ../common/rhnException.py:206
msgid ""
"\n"
"     This SUSE Manager server is not allowed to use Inter Server Sync on "
"this server\n"
"     "
msgstr ""

#: ../common/rhnException.py:209
msgid ""
"\n"
"     Inter Server Sync is disabled on this SUSE Manager Server.\n"
"     "
msgstr ""

#. 3000-3999: XML dumper errors:
#: ../common/rhnException.py:214
msgid "Invalid datatype passed"
msgstr ""

#: ../common/rhnException.py:215
msgid "Unable to retrieve channel"
msgstr ""

#: ../common/rhnException.py:216
msgid "Unable to retrieve package"
msgstr ""

#: ../common/rhnException.py:217
msgid "Unable to retrieve erratum"
msgstr ""

#: ../common/rhnException.py:218
msgid "File is missing"
msgstr ""

#: ../common/rhnException.py:219
msgid "Function retrieval error"
msgstr ""

#: ../common/rhnException.py:220
msgid "Function execution error"
msgstr ""

#: ../common/rhnException.py:221
msgid "Missing version string"
msgstr ""

#: ../common/rhnException.py:222
msgid "Invalid version string"
msgstr ""

#: ../common/rhnException.py:223
msgid "Mismatching versions"
msgstr ""

#: ../common/rhnException.py:224
msgid "Invalid channel version"
msgstr ""

#: ../common/rhnException.py:225
msgid "No comps file for channel"
msgstr ""

#: ../common/rhnException.py:226
msgid "Unable to retrieve comps file"
msgstr ""

#. 4000 - 4999: config management errors
#: ../common/rhnException.py:229
msgid "Configuration action missing"
msgstr ""

#: ../common/rhnException.py:230
msgid "File too large"
msgstr ""

#: ../common/rhnException.py:231
msgid "File contains binary data"
msgstr ""

#: ../common/rhnException.py:232
msgid "Configuration channel is not empty"
msgstr ""

#: ../common/rhnException.py:233
msgid "Permission error"
msgstr ""

#: ../common/rhnException.py:234
msgid "Content missing for configuration file"
msgstr ""

#: ../common/rhnException.py:235
msgid "Template delimiters not specified"
msgstr ""

#: ../common/rhnException.py:236
msgid "Configuration channel does not exist"
msgstr ""

#: ../common/rhnException.py:237
msgid "Configuration channel already exists"
msgstr ""

#: ../common/rhnException.py:238
msgid "File missing from configuration channel"
msgstr ""

#: ../common/rhnException.py:239
msgid "Different revision of this file is uploaded"
msgstr ""

#: ../common/rhnException.py:240
msgid "File already uploaded to configuration channel"
msgstr ""

#: ../common/rhnException.py:241
msgid "File size exceeds remaining quota space"
msgstr ""

#: ../common/rhnException.py:242
msgid "Full path of file must be specified"
msgstr ""

#: ../common/rhnException.py:243
msgid "Invalid revision number"
msgstr ""

#: ../common/rhnException.py:244
msgid "Cannot compare files of different file type"
msgstr ""

#. 5000 - 5999: client content uploading errors
#. 5000 - 5099: crash reporting errors
#: ../common/rhnException.py:248
msgid "Crash information is invalid or incomplete"
msgstr ""

#: ../common/rhnException.py:249
msgid "Crash file information is invalid or incomplete"
msgstr ""

#: ../common/rhnException.py:250
msgid "Error composing crash directory path"
msgstr ""

#: ../common/rhnException.py:251
msgid "Error composing crash file path"
msgstr ""

#: ../common/rhnException.py:252 ../common/rhnException.py:259
msgid "Invalid content encoding"
msgstr ""

#: ../common/rhnException.py:253
msgid "Invalid crash name"
msgstr ""

#: ../common/rhnException.py:254
msgid "Crash reporting is disabled for this organization"
msgstr ""

#. 5100 - 5199: scap results reporting error
#: ../common/rhnException.py:256
msgid "SCAP results file transfer is invalid or incomplete"
msgstr ""

#: ../common/rhnException.py:257
msgid "Error composing directory path for detailed SCAP results"
msgstr ""

#: ../common/rhnException.py:258
msgid "Error composing file path for detailed SCAP results"
msgstr ""

#: ../common/rhnException.py:306
msgid ""
"\n"
"     An error has occurred while processing your request. If this problem\n"
"     persists please enter a bug report at scc.suse.com.\n"
"     If you choose to submit the bug report, please be sure to include\n"
"     details of what you were trying to do when this error occurred and\n"
"     details on how to reproduce this problem.\n"
msgstr ""

#: ../common/rhnException.py:358
#, python-format
msgid ""
"Error Message:\n"
"    %s\n"
msgstr ""

#: ../common/rhnException.py:360
#, python-format
msgid "Error Class Code: %s\n"
msgstr ""

#: ../common/rhnException.py:363
#, python-format
msgid "Error Class Info: %s\n"
msgstr ""

#: ../common/rhnException.py:365
#, python-format
msgid "Explanation: %s"
msgstr ""

#: ../common/rhnTB.py:205
#, python-format
msgid "ERROR: %s %s: %s"
msgstr ""

#: ../common/rhnTB.py:207
#, python-format
msgid "TRACEBACK: %s"
msgstr ""

#: ../satellite_tools/disk_dumper/iss.py:1294
#: ../satellite_tools/disk_dumper/iss.py:1298
#, python-format
msgid "format of %s should be at least YYYYMMDD.\n"
msgstr ""

#: ../satellite_tools/messages.py:26
#, python-format
msgid ""
"\n"
"ERROR: executing step %s. Error is:\n"
"%s\n"
msgstr ""

#: ../satellite_tools/messages.py:31
#, python-format
msgid ""
"\n"
"ERROR: there was a problem accessing the channel data from your temporary\n"
"       repository. Did you migrate all of the data from the channel ISOs\n"
"       do this directory? If so, please recheck the channels ISOs, ensure\n"
"       that you have them all, and then iteratively remount and repopulate\n"
"       the temporary repository (%s).\n"
msgstr ""

#: ../satellite_tools/messages.py:39
#, python-format
msgid ""
"\n"
"ERROR: there was a problem synchronizing the information.\n"
"       Error message: %s\n"
msgstr ""

#: ../satellite_tools/messages.py:44
#, python-format
msgid ""
"\n"
"ERROR: There was a problem communicating with the ISS Master.\n"
"       Depending on the specific error details, please review your "
"configuration,\n"
"       basic network connectivity, and/or name resolution, and try again.\n"
"       Error message: %s\n"
msgstr ""

#: ../satellite_tools/messages.py:51
#, python-format
msgid ""
"\n"
"ERROR: There was a problem communicating with the ISS Master.\n"
"       If the master satellite is older than v5.3, it does not have ISS "
"capability.\n"
"       Otherwise, depending on the specific error details, please review "
"your\n"
"       configuration, basic network connectivity, and/or name resolution, "
"and try again.\n"
"       Error message: %s\n"
msgstr ""

#: ../satellite_tools/messages.py:59
#, python-format
msgid ""
"\n"
"ERROR: a child-channel cannot be synced without its parent being synced as\n"
"       well. A parent needs to be either (a) previously synced or (b) "
"synced\n"
"       in tandem with the desired child-channel. Missing parents for this\n"
"       transaction:\n"
"       %s\n"
msgstr ""

#: ../satellite_tools/messages.py:67
#, python-format
msgid ""
"\n"
"ERROR: you are not entitled to sync a channel in this set of channels.\n"
"Please contact your SUSE Manager contact\n"
"%s"
msgstr ""

#: ../satellite_tools/messages.py:72
#, python-format
msgid "  ERROR: not enough free space (%s KB) on device."
msgstr ""

#: ../satellite_tools/messages.py:74
#, python-format
msgid "    %3d/%s Fetch successful: %s (%s bytes)"
msgstr ""

#: ../satellite_tools/messages.py:75
#, python-format
msgid "    Extinct package:  %s"
msgstr ""

#: ../satellite_tools/messages.py:76
#, python-format
msgid "   Total size: %s"
msgstr ""

#: ../satellite_tools/messages.py:77
#, python-format
msgid "      Downloaded %s of %s. Estimated remaining time: %s"
msgstr ""

#: ../satellite_tools/messages.py:78
#, python-format
msgid "    Fetch unsuccessful: %s"
msgstr ""

#: ../satellite_tools/messages.py:79
#, python-format
msgid "   RPM fetch summary: %s"
msgstr ""

#: ../satellite_tools/messages.py:80
#, python-format
msgid "       success: %d"
msgstr ""

#: ../satellite_tools/messages.py:81
#, python-format
msgid "       failed:  %d"
msgstr ""

#: ../satellite_tools/messages.py:82
#, python-format
msgid "       extinct: %d"
msgstr ""

#: ../satellite_tools/messages.py:84
#, python-format
msgid "   Retrieving / parsing *relevant* package metadata: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:85
#, python-format
msgid "   Retrieving / parsing errata data: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:86
#, python-format
msgid "   Retrieving / parsing kickstart data: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:87
#, python-format
msgid "   Retrieving / parsing kickstart tree files: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:88
#, python-format
msgid "   Importing *relevant* package metadata: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:89
msgid "   * WARNING: this may be a slow process."
msgstr ""

#: ../satellite_tools/messages.py:90
msgid "Linking packages to channels"
msgstr ""

#: ../satellite_tools/messages.py:91
#, python-format
msgid "   Importing *relevant* errata: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:92
msgid "   No new kickstartable tree to import"
msgstr ""

#: ../satellite_tools/messages.py:93
#, python-format
msgid "Importing kickstartable trees (%d)"
msgstr ""

#: ../satellite_tools/messages.py:94
#, python-format
msgid "Imported kickstartable trees (%d)"
msgstr ""

#: ../satellite_tools/reposync.py:111 ../satellite_tools/satsync.py:439
msgid "+++ sending log as an email +++"
msgstr ""

#: ../satellite_tools/reposync.py:114
#, python-format
msgid "%s sync. report from %s"
msgstr ""

#: ../satellite_tools/reposync.py:124 ../satellite_tools/satsync.py:449
msgid "+++ email requested, but there is nothing to send +++"
msgstr ""

#: ../satellite_tools/rhn_satellite_activate.py:198
#, python-format
msgid ""
"\"%s\" (specified in commandline)\n"
"could not be opened and read:\n"
"%s"
msgstr ""

#: ../satellite_tools/rhn_satellite_activate.py:205
#, python-format
msgid ""
"\"%s\" could not be opened\n"
"and/or written to:\n"
"%s"
msgstr ""

#: ../satellite_tools/satsync.py:258
#, python-format
msgid "No handler for step %s"
msgstr ""

#. Try one more time - this time it should be faster since
#. everything should be cached
#: ../satellite_tools/satsync.py:270
msgid "Environment changed, trying again..."
msgstr ""

#: ../satellite_tools/satsync.py:277
msgid "ERROR: Encountered IntegrityError: \n"
msgstr ""

#: ../satellite_tools/satsync.py:285
msgid "Repeated failures"
msgstr ""

#: ../satellite_tools/satsync.py:290
#, python-format
msgid ""
"    Import complete:\n"
"        Begin time: %s\n"
"        End time:   %s\n"
"        Elapsed:    %s\n"
"          "
msgstr ""

#: ../satellite_tools/satsync.py:311
msgid "hours"
msgstr ""

#: ../satellite_tools/satsync.py:311
msgid "minutes"
msgstr ""

#: ../satellite_tools/satsync.py:311
msgid "seconds"
msgstr ""

#: ../satellite_tools/satsync.py:357
msgid ""
"ERROR: The dump is missing package data, use --no-rpms to skip this step or "
"fix the content to include package data."
msgstr ""

#. the orgs() method doesn't exist; that's fine we just
#. won't sync the orgs
#: ../satellite_tools/satsync.py:404
msgid "The SUSE Manager master does not support syncing orgs data."
msgstr ""

#: ../satellite_tools/satsync.py:404
msgid "Skipping..."
msgstr ""

#: ../satellite_tools/satsync.py:442
#, python-format
msgid "SUSE Manager Inter Server sync. report from %s"
msgstr ""

#: ../satellite_tools/satsync.py:521
msgid " - file-system synchronization"
msgstr ""

#: ../satellite_tools/satsync.py:533 ../satellite_tools/satsync.py:541
msgid " - live synchronization"
msgstr ""

#: ../satellite_tools/satsync.py:534
#, python-brace-format
msgid ""
"ERROR: Live content synchronizing with RHN Classic Hosted is no longer "
"supported.\n"
"Please use the cdn-sync command instead unless you are attempting to sync "
"from another {PRODUCT_NAME} via Inter-Server-Sync (ISS), or from local "
"content on disk via Channel Dump ISOs."
msgstr ""

#: ../satellite_tools/satsync.py:542
#, python-format
msgid "   url: %s"
msgstr ""

#: ../satellite_tools/satsync.py:543
#, python-format
msgid "   debug/output level: %s"
msgstr ""

#: ../satellite_tools/satsync.py:553
msgid "ERROR: this server must be registered with SUSE Manager."
msgstr ""

#: ../satellite_tools/satsync.py:575
#, python-format
msgid "Retrieving / parsing %s data"
msgstr ""

#: ../satellite_tools/satsync.py:585 ../satellite_tools/satsync.py:600
msgid "*** SYSTEM INTERRUPT CALLED ***"
msgstr ""

#: ../satellite_tools/satsync.py:593
msgid "ERROR: fatal parser exception occurred "
msgstr ""

#: ../satellite_tools/satsync.py:594
#, python-format
msgid "(line: %s, col: %s msg: %s)"
msgstr ""

#: ../satellite_tools/satsync.py:598
#, python-format
msgid "ERROR: parser exception occurred: %s"
msgstr ""

#: ../satellite_tools/satsync.py:603
msgid "ERROR: exception (during parse) occurred: "
msgstr ""

#: ../satellite_tools/satsync.py:604
#, python-format
msgid ""
"   Encountered some errors with %s data (see logs (%s) for more information)"
msgstr ""

#: ../satellite_tools/satsync.py:606
#, python-format
msgid "   Encountered some errors with %s data:"
msgstr ""

#: ../satellite_tools/satsync.py:607
#, python-format
msgid "   ------- %s PARSE/IMPORT ERROR -------"
msgstr ""

#: ../satellite_tools/satsync.py:609
msgid "   ---------------------------------------"
msgstr ""

#: ../satellite_tools/satsync.py:612
#, python-format
msgid "%s data complete"
msgstr ""

#: ../satellite_tools/satsync.py:665
msgid "Retrieving / parsing channel data"
msgstr ""

#: ../satellite_tools/satsync.py:718
msgid "Channel data complete"
msgstr ""

#: ../satellite_tools/satsync.py:736
#, python-format
msgid "%10s import from %s"
msgstr ""

#: ../satellite_tools/satsync.py:739
#, python-format
msgid "%10s import from %s - %s"
msgstr ""

#: ../satellite_tools/satsync.py:743
#, python-format
msgid "%10s"
msgstr ""

#: ../satellite_tools/satsync.py:750
msgid "p"
msgstr ""

#: ../satellite_tools/satsync.py:752
msgid "."
msgstr ""

#: ../satellite_tools/satsync.py:758
msgid "   p = previously imported/synced channel"
msgstr ""

#: ../satellite_tools/satsync.py:759
msgid "   . = channel not yet imported/synced"
msgstr ""

#: ../satellite_tools/satsync.py:765
msgid "   e = channel no longer supported (end-of-service)"
msgstr ""

#: ../satellite_tools/satsync.py:767
msgid "   ? = channel label invalid --- typo?"
msgstr ""

#: ../satellite_tools/satsync.py:771
#, python-format
msgid "   %s:"
msgstr ""

#: ../satellite_tools/satsync.py:772
#, python-format
msgid "      %s %-40s %4s %s"
msgstr ""

#: ../satellite_tools/satsync.py:773
msgid "base-channels"
msgstr ""

#: ../satellite_tools/satsync.py:786 ../satellite_tools/satsync.py:1603
msgid "NONE RELEVANT"
msgstr ""

#: ../satellite_tools/satsync.py:808
msgid "end-of-service"
msgstr ""

#: ../satellite_tools/satsync.py:809
msgid "e"
msgstr ""

#: ../satellite_tools/satsync.py:815
msgid "   typos:"
msgstr ""

#: ../satellite_tools/satsync.py:816
msgid "?"
msgstr ""

#: ../satellite_tools/satsync.py:831
#, python-format
msgid "XXX: imported channels: %s"
msgstr ""

#: ../satellite_tools/satsync.py:832
#, python-format
msgid "XXX:   cached channels: %s"
msgstr ""

#: ../satellite_tools/satsync.py:837
msgid "XXX: list channels called"
msgstr ""

#: ../satellite_tools/satsync.py:855
msgid "ERROR: these channels either do not exist or are not available:"
msgstr ""

#: ../satellite_tools/satsync.py:859
#, python-format
msgid "       (to see a list of channel labels: %s --list-channels)"
msgstr ""

#: ../satellite_tools/satsync.py:904
#, python-format
msgid "   Retrieving / parsing short package metadata: %s (%s)"
msgstr ""

#: ../satellite_tools/satsync.py:965
#, python-format
msgid "Diffing package metadata (what's missing locally?): %s"
msgstr ""

#: ../satellite_tools/satsync.py:971 ../satellite_tools/satsync.py:1254
msgid "Diffing:    "
msgstr ""

#: ../satellite_tools/satsync.py:988
msgid "ERROR: incremental dump skipped"
msgstr ""

#: ../satellite_tools/satsync.py:1079
msgid "Downloading rpm packages"
msgstr ""

#: ../satellite_tools/satsync.py:1084
#, python-format
msgid "   Fetching any missing RPMs: %s (%s)"
msgstr ""

#: ../satellite_tools/satsync.py:1085 ../satellite_tools/satsync.py:1153
msgid "NONE MISSING"
msgstr ""

#: ../satellite_tools/satsync.py:1094
msgid "Processing rpm packages complete"
msgstr ""

#: ../satellite_tools/satsync.py:1121
msgid "Downloading package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1146
msgid "Downloading srpm packages"
msgstr ""

#: ../satellite_tools/satsync.py:1152
#, python-format
msgid "   Fetching any missing SRPMs: %s (%s)"
msgstr ""

#: ../satellite_tools/satsync.py:1249
#, python-format
msgid "Diffing source package metadata (what's missing locally?): %s"
msgstr ""

#: ../satellite_tools/satsync.py:1260
msgid "Downloading source package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1338 ../satellite_tools/satsync.py:2027
#, python-format
msgid "Unable to save file %s: %s"
msgstr ""

#. for
#. Retried a number of times and it still failed; log the
#. file as being failed and move on
#: ../satellite_tools/satsync.py:1345
#, python-format
msgid "Failed to fetch file %s"
msgstr ""

#: ../satellite_tools/satsync.py:1350
msgid "Downloading kickstartable trees metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1365
msgid "Downloading kickstartable trees files"
msgstr ""

#: ../satellite_tools/satsync.py:1504
#, python-format
msgid "Grabbing all patches for channel %s"
msgstr ""

#: ../satellite_tools/satsync.py:1554
msgid "Downloading patch data"
msgstr ""

#: ../satellite_tools/satsync.py:1556
msgid "Forcing download of all patch data for requested channels."
msgstr ""

#: ../satellite_tools/satsync.py:1571
msgid "Downloading patch data complete"
msgstr ""

#: ../satellite_tools/satsync.py:1576 ../satellite_tools/satsync.py:1597
msgid "Downloading:"
msgstr ""

#: ../satellite_tools/satsync.py:1579
msgid " - complete"
msgstr ""

#: ../satellite_tools/satsync.py:1624
msgid "Importing source package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1627
msgid "Importing package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1635
msgid "Importing:  "
msgstr ""

#. not in the cache
#: ../satellite_tools/satsync.py:1703
msgid ""
"Package Not Found in Cache, Clear the Cache "
"to                                  Regenerate it."
msgstr ""

#: ../satellite_tools/satsync.py:1709
msgid "Importing channel patches"
msgstr ""

#: ../satellite_tools/satsync.py:1714
#, python-format
msgid "Importing %s patches for channel %s."
msgstr ""

#. Incomplete configuration
#: ../satellite_tools/satsync.py:2113
msgid "ERROR: server.mount_point not set in the configuration file"
msgstr ""

#: ../satellite_tools/satsync.py:2117
#, python-format
msgid "ERROR: server.mount_point %s do not exist"
msgstr ""

#: ../satellite_tools/satsync.py:2122
#, python-format
msgid "ERROR: path under server.mount_point (%s)  do not exist"
msgstr ""

#: ../satellite_tools/satsync.py:2199
#, python-format
msgid "Commandline: %s"
msgstr ""

#: ../satellite_tools/satsync.py:2202
#, python-format
msgid ""
"DEBUG ONLY: max. batch-size for XML/database-import processing (1..%s).\"man "
"satellite-sync\" for more information."
msgstr ""

#: ../satellite_tools/satsync.py:2205
msgid "alternative SSL CA Cert (fullpath to cert file)"
msgstr ""

#: ../satellite_tools/satsync.py:2207
msgid "process data for this channel only"
msgstr ""

#: ../satellite_tools/satsync.py:2209
msgid ""
"disk dump will be considered to be a full export; see \"man satellite-sync\" "
"for more information."
msgstr ""

#: ../satellite_tools/satsync.py:2212
msgid "existing custom channels will also be synced (unless -c is used)"
msgstr ""

#: ../satellite_tools/satsync.py:2214
#, python-format
msgid ""
"override debug level set in /etc/rhn/rhn.conf (which is currently set at %s)."
msgstr ""

#: ../satellite_tools/satsync.py:2216
#, python-format
msgid "requested version of XML dump (default: %s)"
msgstr ""

#: ../satellite_tools/satsync.py:2218
msgid "e-mail a report of what was synced/imported"
msgstr ""

#: ../satellite_tools/satsync.py:2220
msgid "forcibly process all (not a diff of) patch metadata"
msgstr ""

#: ../satellite_tools/satsync.py:2222
msgid "Do not use an http proxy under any circumstances."
msgstr ""

#: ../satellite_tools/satsync.py:2224
msgid "alternative http proxy (hostname:port)"
msgstr ""

#: ../satellite_tools/satsync.py:2226
msgid "alternative http proxy username"
msgstr ""

#: ../satellite_tools/satsync.py:2228
msgid "alternative http proxy password"
msgstr ""

#: ../satellite_tools/satsync.py:2230
msgid "parent SUSE Manager to import content from"
msgstr ""

#: ../satellite_tools/satsync.py:2232
msgid "list all available channels and exit"
msgstr ""

#: ../satellite_tools/satsync.py:2234
msgid "help on all error codes mgr-inter-sync returns"
msgstr ""

#: ../satellite_tools/satsync.py:2236
msgid "source mount point for import - disk update only"
msgstr ""

#: ../satellite_tools/satsync.py:2238
msgid "do not process patch data"
msgstr ""

#: ../satellite_tools/satsync.py:2240
msgid "do not process kickstart data (provisioning only)"
msgstr ""

#: ../satellite_tools/satsync.py:2242
msgid "do not process full package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:2244
msgid "do not download, or process any RPMs"
msgstr ""

#: ../satellite_tools/satsync.py:2246
msgid "turn off SSL (not recommended)"
msgstr ""

#: ../satellite_tools/satsync.py:2248
msgid "org to which the sync imports data. defaults to the admin account"
msgstr ""

#: ../satellite_tools/satsync.py:2250
msgid "print the configuration and exit"
msgstr ""

#: ../satellite_tools/satsync.py:2252
msgid "alternative server with which to connect (hostname)"
msgstr ""

#: ../satellite_tools/satsync.py:2254
msgid "synchronize to this step (man satellite-sync for more info)"
msgstr ""

#: ../satellite_tools/satsync.py:2256
msgid "write complete data to tempfile before streaming to remainder of app"
msgstr ""

#: ../satellite_tools/satsync.py:2258
msgid "DEBUG ONLY: alternative path to digital system id"
msgstr ""

#: ../satellite_tools/satsync.py:2260
msgid "alternative email address(es) for sync output (--email option)"
msgstr ""

#: ../satellite_tools/satsync.py:2262
msgid "do not remove rpms when importing from local dump"
msgstr ""

#: ../satellite_tools/satsync.py:2264
msgid ""
"the fully qualified domain name of the master Satellite. Valid with --mount-"
"point only. Required if you want to import org data and channel permissions."
msgstr ""

#: ../satellite_tools/satsync.py:2274
#, python-format
msgid "ERROR: these arguments make no sense in this context (try --help): %s"
msgstr ""

#. An SQL error is fatal... crash and burn
#: ../satellite_tools/satsync.py:2286
#, python-format
msgid "ERROR: Can't connect to the database: %s"
msgstr ""

#: ../satellite_tools/satsync.py:2287
msgid "ERROR: Check if your database is running."
msgstr ""

#: ../satellite_tools/satsync.py:2322
#, python-format
msgid "ERROR: --debug-level takes an in integer value within the range %s."
msgstr ""

#: ../satellite_tools/satsync.py:2324
msgid "  0  - little logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2325
msgid "  1  - minimal logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2326
msgid "  2  - normal level of logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2327
msgid "  3  - lots of logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2328
msgid "  4+ - excessive logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2341
msgid "ERROR: The --master option is only valid with the --mount-point option"
msgstr ""

#: ../satellite_tools/satsync.py:2351
#, python-format
msgid "ERROR: Unable to lookup Org Id %s"
msgstr ""

#: ../satellite_tools/satsync.py:2360
msgid ""
"WARNING: --list-channels option overrides any --step option. --step ignored."
msgstr ""

#: ../satellite_tools/satsync.py:2375
#, python-format
msgid ""
"ERROR: '%s' is not a valid step. See 'man mgr-inter-sync' for more detail."
msgstr ""

#: ../satellite_tools/satsync.py:2407
msgid ""
"ERROR: No channels currently imported; try mgr-inter-sync --list-channels; "
"then mgr-inter-sync -c chn0 -c chn1..."
msgstr ""

#. int(None) --> TypeError
#. int('a')  --> ValueError
#: ../satellite_tools/satsync.py:2457 ../satellite_tools/satsync.py:2461
msgid "ERROR: --batch-size must have a value within the range: 1..50"
msgstr ""

#: ../satellite_tools/satsync.py:2469
#, python-format
msgid "ERROR: no such directory %s"
msgstr ""

#: ../satellite_tools/satsync.py:2474
msgid "Error Codes: Returned codes means:"
msgstr ""

#: ../satellite_tools/satsync.py:2475
msgid " -1  - Could not lock file or KeyboardInterrupt or SystemExit"
msgstr ""

#: ../satellite_tools/satsync.py:2476
msgid "  0  - User interrupted or intentional exit"
msgstr ""

#: ../satellite_tools/satsync.py:2477
msgid "  1  - attempting to run more than one instance of mgr-inter-sync."
msgstr ""

#: ../satellite_tools/satsync.py:2478
msgid "  2  - Unable to find synchronization tools."
msgstr ""

#: ../satellite_tools/satsync.py:2479
msgid "  3  - a general socket exception occurred"
msgstr ""

#: ../satellite_tools/satsync.py:2480
msgid "  4  - an SSL error occurred. Recheck your SSL settings."
msgstr ""

#: ../satellite_tools/satsync.py:2481
msgid "  5  - ISS error"
msgstr ""

#: ../satellite_tools/satsync.py:2482
msgid "  6  - unhandled exception occurred"
msgstr ""

#: ../satellite_tools/satsync.py:2483
msgid "  7  - unknown sync error"
msgstr ""

#: ../satellite_tools/satsync.py:2484
msgid "  8  - ERROR: must be root to execute"
msgstr ""

#: ../satellite_tools/satsync.py:2485
msgid "  9  - rpclib fault during synchronization init"
msgstr ""

#: ../satellite_tools/satsync.py:2486
msgid "  10 - synchronization init error"
msgstr ""

#: ../satellite_tools/satsync.py:2487
msgid "  11 - Error parsing XML stream"
msgstr ""

#: ../satellite_tools/satsync.py:2488
msgid "  12 - Channel do not exist"
msgstr ""

#: ../satellite_tools/satsync.py:2489
msgid "  13 - SQL error during importing package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:2490
msgid "  14 - SQL error during linking channel packages"
msgstr ""

#: ../satellite_tools/satsync.py:2491
msgid "  15 - SQL error during xml processing"
msgstr ""

#: ../satellite_tools/satsync.py:2492
msgid "  16 - server.mount_point not set in the configuration file"
msgstr ""

#: ../satellite_tools/satsync.py:2493
msgid ""
"  17 - SQL error during retrieving the channels already imported in the SUSE "
"Manager database"
msgstr ""

#: ../satellite_tools/satsync.py:2494
msgid "  18 - Wrong db connection string in rhn.conf"
msgstr ""

#: ../satellite_tools/satsync.py:2495
msgid "  19 - Bad arguments"
msgstr ""

#: ../satellite_tools/satsync.py:2496
msgid "  20 - Could not connect to db."
msgstr ""

#: ../satellite_tools/satsync.py:2497
msgid "  21 - Bad debug level"
msgstr ""

#: ../satellite_tools/satsync.py:2498
msgid "  22 - Not valid step"
msgstr ""

#: ../satellite_tools/satsync.py:2499
msgid "  24 - no such file"
msgstr ""

#: ../satellite_tools/satsync.py:2500
msgid "  25 - no such directory"
msgstr ""

#: ../satellite_tools/satsync.py:2501
msgid "  26 - mount_point does not exist"
msgstr ""

#: ../satellite_tools/satsync.py:2502
msgid "  27 - No such org"
msgstr ""

#: ../satellite_tools/satsync.py:2503
msgid "  28 - error: --master is only valid with --mount-point"
msgstr ""

#: ../satellite_tools/satsync.py:2510
#, python-format
msgid "ERROR: unknown dump version, try one of %s"
msgstr ""
  07070100000081000081B40000000000000000000000016290A0C10000B608000000000000000000000000000000000000001B00000000spacewalk-backend/po/nn.po    # SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
#
# Translators:
msgid ""
msgstr ""
"Project-Id-Version: Spacewalk\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-10-16 13:34+0200\n"
"PO-Revision-Date: 2011-03-04 16:08+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Norwegian Nynorsk <i18n-nn@lister.ping.uio.no>\n"
"Language: nn\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"

#: ../server/apacheAuth.py:66
#, python-format
msgid "incomplete proxy authentication token: %s"
msgstr ""

#: ../server/apacheAuth.py:84
#, python-format
msgid "Sent proxy signature %s does not match ours %s."
msgstr ""

#: ../server/apacheAuth.py:119
msgid "declined proxy authentication"
msgstr ""

#: ../server/apacheRequest.py:59
#, python-format
msgid "Invalid request received (%s)."
msgstr ""

#: ../server/apacheRequest.py:120
#, python-format
msgid ""
"IMPORTANT MESSAGE FOLLOWS:\n"
"%s"
msgstr ""

#: ../server/apacheRequest.py:149
#, python-format
msgid ""
"While running '%s': caught\n"
"%s : %s\n"
msgstr ""

#: ../server/apacheRequest.py:606
#, python-format
msgid "Invalid URI %s"
msgstr ""

#: ../server/configFilesHandler.py:129 ../server/handlers/app/packages.py:192
#: ../server/handlers/xmlrpc/registration.py:215
#: ../server/handlers/xmlrpc/registration.py:1168
#: ../server/handlers/xmlrpc/registration.py:1307
#, python-format
msgid ""
"\n"
"                   %s Account has been deactivated on this server.\n"
"                   Please contact your Org administrator for more help."
msgstr ""

#: ../server/handlers/applet/applet.py:78
#, python-brace-format
msgid "Your system was not found in the {PRODUCT_NAME} database"
msgstr ""

#: ../server/handlers/sat/auth.py:45
msgid "ISS is disabled on this server."
msgstr ""

#: ../server/handlers/sat/auth.py:50
#, python-format
msgid "Server \"%s\" is not enabled for ISS."
msgstr ""

#: ../server/handlers/xmlrpc/errata.py:64
#, python-format
msgid "Expected a package name, not: %s"
msgstr ""

#: ../server/handlers/xmlrpc/errata.py:115
#, python-format
msgid "Expected a package, not: %s"
msgstr ""

#: ../server/handlers/xmlrpc/proxy.py:65
#, python-format
msgid "SUSE Manager Proxy service not enabled for server profile: \"%s\""
msgstr ""

#: ../server/handlers/xmlrpc/proxy.py:85
msgid "Invalid session key"
msgstr ""

#: ../server/handlers/xmlrpc/proxy.py:93
msgid "This server ID no longer exists"
msgstr ""

#: ../server/handlers/xmlrpc/queue.py:433
#, python-format
msgid "Invalid action value type %s (%s)"
msgstr ""

#: ../server/handlers/xmlrpc/queue.py:464
#, python-format
msgid "Action %s does not belong to server %s"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:194
msgid "Required data missing"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:198
msgid "Required members missing"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:207
msgid "Attempt to register a system to an invalid username"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:839
msgid "Invalid system release version requested"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1063
msgid ""
"Unable to find a valid network interface, both ipaddr and ip6addr not found."
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1115
#, python-brace-format
msgid "{PRODUCT_NAME} Welcome Message"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1125
msgid "Privacy Statement"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1146
msgid "Expected a dictionary as a product argument"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1374
#, python-format
msgid "Invalid value '%s' for %s (%s)"
msgstr ""

#: ../server/handlers/xmlrpc/scap.py:104
msgid "Invalid system_id/action_id pair."
msgstr ""

#: ../server/handlers/xmlrpc/up2date.py:233
#, python-format
msgid "Invalid value %s (%s)"
msgstr ""

#: ../server/importlib/userAuth.py:98
msgid "You are not authorized to manage packages in the null org"
msgstr ""

#: ../server/importlib/userAuth.py:103
#, python-format
msgid "You are not allowed to manage packages in the %s org"
msgstr ""

#: ../server/importlib/userAuth.py:121
msgid "You are not allowed to perform administrative tasks"
msgstr ""

#: ../server/importlib/userAuth.py:144
#, python-format
msgid ""
"You are not allowed to manage channel %s, or that channel does not exist"
msgstr ""

#: ../server/importlib/userAuth.py:204
#, python-format
msgid ""
"\n"
"               %s Account has been deactivated on this server.\n"
"               Please contact your Org administrator for more help."
msgstr ""

#: ../server/rhnChannel.py:1992
#, python-format
msgid ""
"Your account does not have access to any channels matching "
"(release='%(release)s', arch='%(arch)s')%(www_activation)s"
msgstr ""

#: ../server/rhnChannel.py:2002
msgid ""
"\n"
"If you have a registration number, please register with it first at http://"
"www.redhat.com/apps/activate/ and then try again.\n"
"\n"
msgstr ""

#: ../server/rhnChannel.py:2012
#, python-format
msgid "Insufficient subscription permissions for release (%s, %s"
msgstr ""

#. Various messages that can be reused
#.
#. bretm 02/07/2007 -- when we have better old-client documentation, probably
#. will be safe to get rid of all this crap
#: ../server/rhnChannel.py:2276 ../server/rhnChannel.py:2287
#: ../server/rhnChannel.py:2302
msgid "System Registered but Inactive"
msgstr ""

#: ../server/rhnChannel.py:2277
#, python-format
msgid ""
"\n"
"Invalid Architecture and OS release combination (%s, %s).\n"
"Your system has been registered, but will not receive updates\n"
"because it is not subscribed to a channel. If you have not yet\n"
"activated your product for service, please visit our website at:\n"
"\n"
"     http://www.redhat.com/apps/activate/\n"
"\n"
"...to activate your product."
msgstr ""

#: ../server/rhnChannel.py:2288
#, python-format
msgid ""
"\n"
"Invalid Architecture and OS release combination (%s, %s).\n"
"Your system has been registered, but will not receive updates\n"
"because it could not be subscribed to a base channel.\n"
"Please contact your organization administrator for assistance.\n"
msgstr ""

#: ../server/rhnChannel.py:2295
#, python-format
msgid ""
"\n"
"  This system has been successfully registered, but is not yet entitled\n"
"  to service.  To entitle this system to service, login to the web site at:\n"
"\n"
"  %(entitlement_url)s\n"
msgstr ""

#: ../server/rhnChannel.py:2303
#, python-format
msgid ""
"\n"
"  This system has been successfully registered, but no service entitlements\n"
"  were available.  To entitle this system to service, login to the web site "
"at:\n"
"\n"
"  %(entitlement_url)s\n"
msgstr ""

#: ../server/rhnHandler.py:62
msgid "Please run rhn_register as root on this client"
msgstr ""

#: ../server/rhnHandler.py:75
#, python-format
msgid "Service not enabled for system profile: \"%s\""
msgstr ""

#: ../server/rhnPackage.py:49 ../server/rhnPackage.py:87
#: ../server/rhnPackage.py:107 ../server/rhnPackage.py:158
#, python-format
msgid "Invalid RPM package %s requested"
msgstr ""

#: ../server/rhnPackage.py:112
msgid "Package not found"
msgstr ""

#: ../server/rhnServer/server_class.py:97
#, python-format
msgid "Architecture `%s' is not supported"
msgstr ""

#: ../server/rhnServer/server_token.py:78
#, python-format
msgid "Token `%s' has more than one base channel assigned"
msgstr ""

#: ../server/rhnServer/server_token.py:80
msgid "Conflicting base channels"
msgstr ""

#: ../server/rhnServer/server_token.py:190
#, python-format
msgid "Failed to add server to group %s"
msgstr ""

#: ../server/rhnServer/server_token.py:503
#, python-format
msgid "Maximum usage count of %s reached"
msgstr ""

#: ../server/rhnServer/server_token.py:744
msgid ""
"Stacking of re-registration tokens with different base entitlements is not "
"supported"
msgstr ""

#: ../server/rhnServer/server_token.py:811
#, python-format
msgid "Could not find token '%s'"
msgstr ""

#. Cannot use activation keys from different orgs
#: ../server/rhnServer/server_token.py:843
msgid "Tokens from mismatching orgs"
msgstr ""

#. Two tokens with different kickstart sessions
#: ../server/rhnServer/server_token.py:853
msgid "Kickstart session mismatch"
msgstr ""

#: ../server/rhnServer/server_token.py:877
msgid "Stacking of re-registration tokens is not supported"
msgstr ""

#: ../server/rhnUser.py:289 ../server/rhnUser.py:292
msgid "Invalid username/password combination"
msgstr ""

#. nope, not reserved either
#: ../server/rhnUser.py:467
#, python-format
msgid "Username `%s' has not been reserved"
msgstr ""

#. New accounts have to specify an e-mail address
#: ../server/rhnUser.py:473
msgid "E-mail address not specified"
msgstr ""

#: ../server/rhnUser.py:509
#, python-format
msgid "username should be at least %d characters"
msgstr ""

#: ../server/rhnUser.py:512
#, python-format
msgid "username should be less than %d characters"
msgstr ""

#: ../server/rhnUser.py:523
#, python-format
msgid "username = `%s', invalid character `%s'"
msgstr ""

#: ../server/rhnUser.py:542
#, python-format
msgid "Please limit your e-mail address to %s chars"
msgstr ""

#: ../server/rhnUser.py:623
#, python-format
msgid "password must be at least %d characters"
msgstr ""

#: ../server/rhnUser.py:626
#, python-format
msgid "Password must be shorter than %d characters"
msgstr ""

#: ../server/rhnUser.py:644
#, python-format
msgid "password contains character `%s'"
msgstr ""

#: ../server/rhnUser.py:651
#, python-format
msgid "username should be at least %d characters long"
msgstr ""

#: ../server/rhnUser.py:662
#, python-format
msgid "Cannot register usernames ending with %s"
msgstr ""

#. 0-999: Red Hat client/client-like interaction errors:
#: ../common/rhnException.py:53
msgid "This does not appear to be a valid username."
msgstr ""

#: ../common/rhnException.py:54
msgid "Invalid username and password combination."
msgstr ""

#: ../common/rhnException.py:55
msgid "This login is already taken, or the password is incorrect."
msgstr ""

#: ../common/rhnException.py:56
msgid "Permission denied."
msgstr ""

#: ../common/rhnException.py:57
msgid "Object not found."
msgstr ""

#: ../common/rhnException.py:58
msgid "Invalid System Digital ID."
msgstr ""

#: ../common/rhnException.py:59
msgid "Invalid System Credentials."
msgstr ""

#: ../common/rhnException.py:60
msgid "Could not retrieve user data from database."
msgstr ""

#: ../common/rhnException.py:61
msgid "Valid username required."
msgstr ""

#: ../common/rhnException.py:62
msgid "Valid password required."
msgstr ""

#: ../common/rhnException.py:63
msgid "Minimum username length violation."
msgstr ""

#: ../common/rhnException.py:64
msgid "Minimum password length violation."
msgstr ""

#: ../common/rhnException.py:65
msgid "The username contains invalid characters."
msgstr ""

#: ../common/rhnException.py:66
msgid "File not found."
msgstr ""

#: ../common/rhnException.py:67
msgid "Architecture and OS version combination is not supported."
msgstr ""

#: ../common/rhnException.py:68
msgid "Could not retrieve system data from database."
msgstr ""

#: ../common/rhnException.py:69
msgid "Invalid arguments passed to function."
msgstr ""

#: ../common/rhnException.py:70
msgid "Unable to retrieve requested entry."
msgstr ""

#: ../common/rhnException.py:71
msgid "Could not update database entry."
msgstr ""

#: ../common/rhnException.py:72
msgid "Unsupported server architecture."
msgstr ""

#: ../common/rhnException.py:73
#, python-format
msgid ""
"\n"
"     The anonymous server functionality is no longer available.\n"
"\n"
"     Please re-register this system by running mgr_register as root.\n"
"     Please visit https://%(hostname)s/rhn/systems/SystemEntitlements.do\n"
"     or login at https://%(hostname)s, and from the \"Overview\" tab,\n"
"     select \"Subscription Management\" to enable the service for this "
"system.\n"
"     "
msgstr ""

#: ../common/rhnException.py:81
msgid "Record not available in the database."
msgstr ""

#: ../common/rhnException.py:82
msgid "Invalid value for entry."
msgstr ""

#: ../common/rhnException.py:83
#, python-format
msgid ""
"\n"
"     This system does not have a valid entitlement for SUSE Manager.\n"
"     Please visit https://%(hostname)s/rhn/systems/SystemEntitlements.do\n"
"     or login at https://%(hostname)s, and from the \"Overview\" tab,\n"
"     select \"Subscription Management\" to enable the service for this "
"system.\n"
"     "
msgstr ""

#: ../common/rhnException.py:89
msgid "Channel error"
msgstr ""

#: ../common/rhnException.py:90
msgid "Client session token is invalid."
msgstr ""

#: ../common/rhnException.py:91
msgid "Client session token has expired."
msgstr ""

#: ../common/rhnException.py:92
msgid "You are not authorized to retrieve the requested object."
msgstr ""

#: ../common/rhnException.py:93
msgid "Invalid action"
msgstr ""

#: ../common/rhnException.py:94
msgid "You are not allowed to perform administrative tasks on this system."
msgstr ""

#: ../common/rhnException.py:96
msgid "The system is already subscribed to the specified channel."
msgstr ""

#: ../common/rhnException.py:97
msgid "The system is not currently subscribed to the specified channel."
msgstr ""

#: ../common/rhnException.py:98
msgid "The specified channel does not exist."
msgstr ""

#: ../common/rhnException.py:99
msgid "Invalid channel version."
msgstr ""

#: ../common/rhnException.py:100
msgid ""
"\n"
"     User group membership limits exceeded.\n"
"\n"
"     The current settings for your account do not allow you to add another\n"
"     user account. Please check with the organization administrator for "
"your\n"
"     account if the maximum number of users allowed to subscribe to server "
"needs\n"
"     to be changed.\n"
"     "
msgstr ""

#: ../common/rhnException.py:108
msgid ""
"\n"
"     System group membership limits exceeded.\n"
"\n"
"     The current settings for your account do not allow you to add another\n"
"     system profile. Please check with the organization administrator for "
"your\n"
"     account for modifying the maximum number of system profiles that can "
"be\n"
"     subscribed to your account.\n"
"     "
msgstr ""

#: ../common/rhnException.py:116
msgid ""
"\n"
"     Invalid architecture.\n"
"\n"
"     The architecture of the package is not supported by\n"
"     "
msgstr ""

#: ../common/rhnException.py:121
msgid "Invalid RPM header"
msgstr ""

#: ../common/rhnException.py:122
msgid ""
"\n"
"    This system is already registered as a Salt Minion. If you want to "
"register it as a traditional client\n"
"    please delete it first via the web UI or API and then register it using "
"the traditional tools.\n"
"    "
msgstr ""

#. For the uploading tools
#: ../common/rhnException.py:127
msgid "Invalid information uploaded to the server"
msgstr ""

#: ../common/rhnException.py:128
msgid "Error uploading network interfaces configuration."
msgstr ""

#: ../common/rhnException.py:129
msgid ""
"\n"
"     Package Upload Failed due to uniqueness constraint violation.\n"
"     Make sure the package does not have any duplicate dependencies or\n"
"     does not already exists on the server\n"
"     "
msgstr ""

#: ../common/rhnException.py:134
msgid ""
"\n"
"     The --force rhnpush option is disabled on this server.\n"
"     Please contact your SUSE Manager administrator for more help.\n"
"     "
msgstr ""

#. 60-70: token errors
#: ../common/rhnException.py:140
msgid ""
"\n"
"     The activation token specified could not be found on the server.\n"
"     Please retry with a valid key.\n"
"     "
msgstr ""

#: ../common/rhnException.py:144
msgid "Too many systems registered using this registration token"
msgstr ""

#: ../common/rhnException.py:145
msgid "Token contains invalid, obsoleted or insufficient settings"
msgstr ""

#: ../common/rhnException.py:146
msgid "Conflicting activation tokens"
msgstr ""

#. 70-80: channel subscription errors
#: ../common/rhnException.py:149
msgid ""
"\n"
"     No matching base channel found for your system.\n"
"     "
msgstr ""

#: ../common/rhnException.py:152
msgid ""
"\n"
"     You do not have subscription permission to the designated channel.\n"
"     Please refer to your organization's channel or organization\n"
"     administrators for further details.\n"
"     "
msgstr ""

#: ../common/rhnException.py:157
msgid "You can not unsubscribe from base channel."
msgstr ""

#: ../common/rhnException.py:158
msgid "SUSE Manager or Proxy channel can not be subscribed."
msgstr ""

#. 80-90: server group errors
#: ../common/rhnException.py:161
msgid "There was an error while trying to join the system to its groups"
msgstr ""

#. 90-100: entitlement errors
#: ../common/rhnException.py:164
msgid "Unable to entitle system"
msgstr ""

#. 100-109: e-mail and uuid related faults
#: ../common/rhnException.py:167
msgid "Maximum e-mail length violation."
msgstr ""

#: ../common/rhnException.py:168
msgid "This system has been previously registered."
msgstr ""

#: ../common/rhnException.py:169
msgid "Invalid username"
msgstr ""

#. 140-159 applet errors
#: ../common/rhnException.py:172
msgid "Unable to look up server"
msgstr ""

#. 160-179: OSAD errors
#: ../common/rhnException.py:175
msgid "Required argument is missing"
msgstr ""

#. 600-699: RHEL5+ EN errors
#: ../common/rhnException.py:178
msgid "No entitlement information tied to hardware"
msgstr ""

#: ../common/rhnException.py:179
msgid "Installation number is not entitling"
msgstr ""

#. 700-799: Additional user input verification errors.
#: ../common/rhnException.py:182
msgid "Maximum username length violation"
msgstr ""

#: ../common/rhnException.py:183
msgid "Maximum password length violation"
msgstr ""

#: ../common/rhnException.py:184
msgid "This user has read only API access. Action denied."
msgstr ""

#: ../common/rhnException.py:186
msgid "System Name cannot be less than 1 character"
msgstr ""

#. 1000-1999: Proxy specific errors:
#. issued by a Proxy to the client
#: ../common/rhnException.py:190
msgid "SUSE Manager Proxy error."
msgstr ""

#: ../common/rhnException.py:191
msgid "SUSE Manager Proxy unable to login."
msgstr ""

#. issued by a SUSE Manager Server/Satellite to the proxy
#: ../common/rhnException.py:193
msgid ""
"\n"
"     SUSE Manager Proxy system ID does not match a Spacewalk Proxy Server\n"
"     in the database.\n"
"     "
msgstr ""

#: ../common/rhnException.py:197
msgid "SUSE Manager Proxy session token is invalid."
msgstr ""

#: ../common/rhnException.py:198
msgid "SUSE Manager Proxy session token has expired."
msgstr ""

#. 2000-2999: Red Hat Satellite specific errors:
#: ../common/rhnException.py:202
msgid ""
"\n"
"      user creation is not allowed via mgr_register;\n"
"     please contact your sysadmin to have your account created.\n"
"     "
msgstr ""

#: ../common/rhnException.py:206
msgid ""
"\n"
"     This SUSE Manager server is not allowed to use Inter Server Sync on "
"this server\n"
"     "
msgstr ""

#: ../common/rhnException.py:209
msgid ""
"\n"
"     Inter Server Sync is disabled on this SUSE Manager Server.\n"
"     "
msgstr ""

#. 3000-3999: XML dumper errors:
#: ../common/rhnException.py:214
msgid "Invalid datatype passed"
msgstr ""

#: ../common/rhnException.py:215
msgid "Unable to retrieve channel"
msgstr ""

#: ../common/rhnException.py:216
msgid "Unable to retrieve package"
msgstr ""

#: ../common/rhnException.py:217
msgid "Unable to retrieve erratum"
msgstr ""

#: ../common/rhnException.py:218
msgid "File is missing"
msgstr ""

#: ../common/rhnException.py:219
msgid "Function retrieval error"
msgstr ""

#: ../common/rhnException.py:220
msgid "Function execution error"
msgstr ""

#: ../common/rhnException.py:221
msgid "Missing version string"
msgstr ""

#: ../common/rhnException.py:222
msgid "Invalid version string"
msgstr ""

#: ../common/rhnException.py:223
msgid "Mismatching versions"
msgstr ""

#: ../common/rhnException.py:224
msgid "Invalid channel version"
msgstr ""

#: ../common/rhnException.py:225
msgid "No comps file for channel"
msgstr ""

#: ../common/rhnException.py:226
msgid "Unable to retrieve comps file"
msgstr ""

#. 4000 - 4999: config management errors
#: ../common/rhnException.py:229
msgid "Configuration action missing"
msgstr ""

#: ../common/rhnException.py:230
msgid "File too large"
msgstr ""

#: ../common/rhnException.py:231
msgid "File contains binary data"
msgstr ""

#: ../common/rhnException.py:232
msgid "Configuration channel is not empty"
msgstr ""

#: ../common/rhnException.py:233
msgid "Permission error"
msgstr ""

#: ../common/rhnException.py:234
msgid "Content missing for configuration file"
msgstr ""

#: ../common/rhnException.py:235
msgid "Template delimiters not specified"
msgstr ""

#: ../common/rhnException.py:236
msgid "Configuration channel does not exist"
msgstr ""

#: ../common/rhnException.py:237
msgid "Configuration channel already exists"
msgstr ""

#: ../common/rhnException.py:238
msgid "File missing from configuration channel"
msgstr ""

#: ../common/rhnException.py:239
msgid "Different revision of this file is uploaded"
msgstr ""

#: ../common/rhnException.py:240
msgid "File already uploaded to configuration channel"
msgstr ""

#: ../common/rhnException.py:241
msgid "File size exceeds remaining quota space"
msgstr ""

#: ../common/rhnException.py:242
msgid "Full path of file must be specified"
msgstr ""

#: ../common/rhnException.py:243
msgid "Invalid revision number"
msgstr ""

#: ../common/rhnException.py:244
msgid "Cannot compare files of different file type"
msgstr ""

#. 5000 - 5999: client content uploading errors
#. 5000 - 5099: crash reporting errors
#: ../common/rhnException.py:248
msgid "Crash information is invalid or incomplete"
msgstr ""

#: ../common/rhnException.py:249
msgid "Crash file information is invalid or incomplete"
msgstr ""

#: ../common/rhnException.py:250
msgid "Error composing crash directory path"
msgstr ""

#: ../common/rhnException.py:251
msgid "Error composing crash file path"
msgstr ""

#: ../common/rhnException.py:252 ../common/rhnException.py:259
msgid "Invalid content encoding"
msgstr ""

#: ../common/rhnException.py:253
msgid "Invalid crash name"
msgstr ""

#: ../common/rhnException.py:254
msgid "Crash reporting is disabled for this organization"
msgstr ""

#. 5100 - 5199: scap results reporting error
#: ../common/rhnException.py:256
msgid "SCAP results file transfer is invalid or incomplete"
msgstr ""

#: ../common/rhnException.py:257
msgid "Error composing directory path for detailed SCAP results"
msgstr ""

#: ../common/rhnException.py:258
msgid "Error composing file path for detailed SCAP results"
msgstr ""

#: ../common/rhnException.py:306
msgid ""
"\n"
"     An error has occurred while processing your request. If this problem\n"
"     persists please enter a bug report at scc.suse.com.\n"
"     If you choose to submit the bug report, please be sure to include\n"
"     details of what you were trying to do when this error occurred and\n"
"     details on how to reproduce this problem.\n"
msgstr ""

#: ../common/rhnException.py:358
#, python-format
msgid ""
"Error Message:\n"
"    %s\n"
msgstr ""

#: ../common/rhnException.py:360
#, python-format
msgid "Error Class Code: %s\n"
msgstr ""

#: ../common/rhnException.py:363
#, python-format
msgid "Error Class Info: %s\n"
msgstr ""

#: ../common/rhnException.py:365
#, python-format
msgid "Explanation: %s"
msgstr ""

#: ../common/rhnTB.py:205
#, python-format
msgid "ERROR: %s %s: %s"
msgstr ""

#: ../common/rhnTB.py:207
#, python-format
msgid "TRACEBACK: %s"
msgstr ""

#: ../satellite_tools/disk_dumper/iss.py:1294
#: ../satellite_tools/disk_dumper/iss.py:1298
#, python-format
msgid "format of %s should be at least YYYYMMDD.\n"
msgstr ""

#: ../satellite_tools/messages.py:26
#, python-format
msgid ""
"\n"
"ERROR: executing step %s. Error is:\n"
"%s\n"
msgstr ""

#: ../satellite_tools/messages.py:31
#, python-format
msgid ""
"\n"
"ERROR: there was a problem accessing the channel data from your temporary\n"
"       repository. Did you migrate all of the data from the channel ISOs\n"
"       do this directory? If so, please recheck the channels ISOs, ensure\n"
"       that you have them all, and then iteratively remount and repopulate\n"
"       the temporary repository (%s).\n"
msgstr ""

#: ../satellite_tools/messages.py:39
#, python-format
msgid ""
"\n"
"ERROR: there was a problem synchronizing the information.\n"
"       Error message: %s\n"
msgstr ""

#: ../satellite_tools/messages.py:44
#, python-format
msgid ""
"\n"
"ERROR: There was a problem communicating with the ISS Master.\n"
"       Depending on the specific error details, please review your "
"configuration,\n"
"       basic network connectivity, and/or name resolution, and try again.\n"
"       Error message: %s\n"
msgstr ""

#: ../satellite_tools/messages.py:51
#, python-format
msgid ""
"\n"
"ERROR: There was a problem communicating with the ISS Master.\n"
"       If the master satellite is older than v5.3, it does not have ISS "
"capability.\n"
"       Otherwise, depending on the specific error details, please review "
"your\n"
"       configuration, basic network connectivity, and/or name resolution, "
"and try again.\n"
"       Error message: %s\n"
msgstr ""

#: ../satellite_tools/messages.py:59
#, python-format
msgid ""
"\n"
"ERROR: a child-channel cannot be synced without its parent being synced as\n"
"       well. A parent needs to be either (a) previously synced or (b) "
"synced\n"
"       in tandem with the desired child-channel. Missing parents for this\n"
"       transaction:\n"
"       %s\n"
msgstr ""

#: ../satellite_tools/messages.py:67
#, python-format
msgid ""
"\n"
"ERROR: you are not entitled to sync a channel in this set of channels.\n"
"Please contact your SUSE Manager contact\n"
"%s"
msgstr ""

#: ../satellite_tools/messages.py:72
#, python-format
msgid "  ERROR: not enough free space (%s KB) on device."
msgstr ""

#: ../satellite_tools/messages.py:74
#, python-format
msgid "    %3d/%s Fetch successful: %s (%s bytes)"
msgstr ""

#: ../satellite_tools/messages.py:75
#, python-format
msgid "    Extinct package:  %s"
msgstr ""

#: ../satellite_tools/messages.py:76
#, python-format
msgid "   Total size: %s"
msgstr ""

#: ../satellite_tools/messages.py:77
#, python-format
msgid "      Downloaded %s of %s. Estimated remaining time: %s"
msgstr ""

#: ../satellite_tools/messages.py:78
#, python-format
msgid "    Fetch unsuccessful: %s"
msgstr ""

#: ../satellite_tools/messages.py:79
#, python-format
msgid "   RPM fetch summary: %s"
msgstr ""

#: ../satellite_tools/messages.py:80
#, python-format
msgid "       success: %d"
msgstr ""

#: ../satellite_tools/messages.py:81
#, python-format
msgid "       failed:  %d"
msgstr ""

#: ../satellite_tools/messages.py:82
#, python-format
msgid "       extinct: %d"
msgstr ""

#: ../satellite_tools/messages.py:84
#, python-format
msgid "   Retrieving / parsing *relevant* package metadata: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:85
#, python-format
msgid "   Retrieving / parsing errata data: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:86
#, python-format
msgid "   Retrieving / parsing kickstart data: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:87
#, python-format
msgid "   Retrieving / parsing kickstart tree files: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:88
#, python-format
msgid "   Importing *relevant* package metadata: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:89
msgid "   * WARNING: this may be a slow process."
msgstr ""

#: ../satellite_tools/messages.py:90
msgid "Linking packages to channels"
msgstr ""

#: ../satellite_tools/messages.py:91
#, python-format
msgid "   Importing *relevant* errata: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:92
msgid "   No new kickstartable tree to import"
msgstr ""

#: ../satellite_tools/messages.py:93
#, python-format
msgid "Importing kickstartable trees (%d)"
msgstr ""

#: ../satellite_tools/messages.py:94
#, python-format
msgid "Imported kickstartable trees (%d)"
msgstr ""

#: ../satellite_tools/reposync.py:111 ../satellite_tools/satsync.py:439
msgid "+++ sending log as an email +++"
msgstr ""

#: ../satellite_tools/reposync.py:114
#, python-format
msgid "%s sync. report from %s"
msgstr ""

#: ../satellite_tools/reposync.py:124 ../satellite_tools/satsync.py:449
msgid "+++ email requested, but there is nothing to send +++"
msgstr ""

#: ../satellite_tools/rhn_satellite_activate.py:198
#, python-format
msgid ""
"\"%s\" (specified in commandline)\n"
"could not be opened and read:\n"
"%s"
msgstr ""

#: ../satellite_tools/rhn_satellite_activate.py:205
#, python-format
msgid ""
"\"%s\" could not be opened\n"
"and/or written to:\n"
"%s"
msgstr ""

#: ../satellite_tools/satsync.py:258
#, python-format
msgid "No handler for step %s"
msgstr ""

#. Try one more time - this time it should be faster since
#. everything should be cached
#: ../satellite_tools/satsync.py:270
msgid "Environment changed, trying again..."
msgstr ""

#: ../satellite_tools/satsync.py:277
msgid "ERROR: Encountered IntegrityError: \n"
msgstr ""

#: ../satellite_tools/satsync.py:285
msgid "Repeated failures"
msgstr ""

#: ../satellite_tools/satsync.py:290
#, python-format
msgid ""
"    Import complete:\n"
"        Begin time: %s\n"
"        End time:   %s\n"
"        Elapsed:    %s\n"
"          "
msgstr ""

#: ../satellite_tools/satsync.py:311
msgid "hours"
msgstr ""

#: ../satellite_tools/satsync.py:311
msgid "minutes"
msgstr ""

#: ../satellite_tools/satsync.py:311
msgid "seconds"
msgstr ""

#: ../satellite_tools/satsync.py:357
msgid ""
"ERROR: The dump is missing package data, use --no-rpms to skip this step or "
"fix the content to include package data."
msgstr ""

#. the orgs() method doesn't exist; that's fine we just
#. won't sync the orgs
#: ../satellite_tools/satsync.py:404
msgid "The SUSE Manager master does not support syncing orgs data."
msgstr ""

#: ../satellite_tools/satsync.py:404
msgid "Skipping..."
msgstr ""

#: ../satellite_tools/satsync.py:442
#, python-format
msgid "SUSE Manager Inter Server sync. report from %s"
msgstr ""

#: ../satellite_tools/satsync.py:521
msgid " - file-system synchronization"
msgstr ""

#: ../satellite_tools/satsync.py:533 ../satellite_tools/satsync.py:541
msgid " - live synchronization"
msgstr ""

#: ../satellite_tools/satsync.py:534
#, python-brace-format
msgid ""
"ERROR: Live content synchronizing with RHN Classic Hosted is no longer "
"supported.\n"
"Please use the cdn-sync command instead unless you are attempting to sync "
"from another {PRODUCT_NAME} via Inter-Server-Sync (ISS), or from local "
"content on disk via Channel Dump ISOs."
msgstr ""

#: ../satellite_tools/satsync.py:542
#, python-format
msgid "   url: %s"
msgstr ""

#: ../satellite_tools/satsync.py:543
#, python-format
msgid "   debug/output level: %s"
msgstr ""

#: ../satellite_tools/satsync.py:553
msgid "ERROR: this server must be registered with SUSE Manager."
msgstr ""

#: ../satellite_tools/satsync.py:575
#, python-format
msgid "Retrieving / parsing %s data"
msgstr ""

#: ../satellite_tools/satsync.py:585 ../satellite_tools/satsync.py:600
msgid "*** SYSTEM INTERRUPT CALLED ***"
msgstr ""

#: ../satellite_tools/satsync.py:593
msgid "ERROR: fatal parser exception occurred "
msgstr ""

#: ../satellite_tools/satsync.py:594
#, python-format
msgid "(line: %s, col: %s msg: %s)"
msgstr ""

#: ../satellite_tools/satsync.py:598
#, python-format
msgid "ERROR: parser exception occurred: %s"
msgstr ""

#: ../satellite_tools/satsync.py:603
msgid "ERROR: exception (during parse) occurred: "
msgstr ""

#: ../satellite_tools/satsync.py:604
#, python-format
msgid ""
"   Encountered some errors with %s data (see logs (%s) for more information)"
msgstr ""

#: ../satellite_tools/satsync.py:606
#, python-format
msgid "   Encountered some errors with %s data:"
msgstr ""

#: ../satellite_tools/satsync.py:607
#, python-format
msgid "   ------- %s PARSE/IMPORT ERROR -------"
msgstr ""

#: ../satellite_tools/satsync.py:609
msgid "   ---------------------------------------"
msgstr ""

#: ../satellite_tools/satsync.py:612
#, python-format
msgid "%s data complete"
msgstr ""

#: ../satellite_tools/satsync.py:665
msgid "Retrieving / parsing channel data"
msgstr ""

#: ../satellite_tools/satsync.py:718
msgid "Channel data complete"
msgstr ""

#: ../satellite_tools/satsync.py:736
#, python-format
msgid "%10s import from %s"
msgstr ""

#: ../satellite_tools/satsync.py:739
#, python-format
msgid "%10s import from %s - %s"
msgstr ""

#: ../satellite_tools/satsync.py:743
#, python-format
msgid "%10s"
msgstr ""

#: ../satellite_tools/satsync.py:750
msgid "p"
msgstr ""

#: ../satellite_tools/satsync.py:752
msgid "."
msgstr ""

#: ../satellite_tools/satsync.py:758
msgid "   p = previously imported/synced channel"
msgstr ""

#: ../satellite_tools/satsync.py:759
msgid "   . = channel not yet imported/synced"
msgstr ""

#: ../satellite_tools/satsync.py:765
msgid "   e = channel no longer supported (end-of-service)"
msgstr ""

#: ../satellite_tools/satsync.py:767
msgid "   ? = channel label invalid --- typo?"
msgstr ""

#: ../satellite_tools/satsync.py:771
#, python-format
msgid "   %s:"
msgstr ""

#: ../satellite_tools/satsync.py:772
#, python-format
msgid "      %s %-40s %4s %s"
msgstr ""

#: ../satellite_tools/satsync.py:773
msgid "base-channels"
msgstr ""

#: ../satellite_tools/satsync.py:786 ../satellite_tools/satsync.py:1603
msgid "NONE RELEVANT"
msgstr ""

#: ../satellite_tools/satsync.py:808
msgid "end-of-service"
msgstr ""

#: ../satellite_tools/satsync.py:809
msgid "e"
msgstr ""

#: ../satellite_tools/satsync.py:815
msgid "   typos:"
msgstr ""

#: ../satellite_tools/satsync.py:816
msgid "?"
msgstr ""

#: ../satellite_tools/satsync.py:831
#, python-format
msgid "XXX: imported channels: %s"
msgstr ""

#: ../satellite_tools/satsync.py:832
#, python-format
msgid "XXX:   cached channels: %s"
msgstr ""

#: ../satellite_tools/satsync.py:837
msgid "XXX: list channels called"
msgstr ""

#: ../satellite_tools/satsync.py:855
msgid "ERROR: these channels either do not exist or are not available:"
msgstr ""

#: ../satellite_tools/satsync.py:859
#, python-format
msgid "       (to see a list of channel labels: %s --list-channels)"
msgstr ""

#: ../satellite_tools/satsync.py:904
#, python-format
msgid "   Retrieving / parsing short package metadata: %s (%s)"
msgstr ""

#: ../satellite_tools/satsync.py:965
#, python-format
msgid "Diffing package metadata (what's missing locally?): %s"
msgstr ""

#: ../satellite_tools/satsync.py:971 ../satellite_tools/satsync.py:1254
msgid "Diffing:    "
msgstr ""

#: ../satellite_tools/satsync.py:988
msgid "ERROR: incremental dump skipped"
msgstr ""

#: ../satellite_tools/satsync.py:1079
msgid "Downloading rpm packages"
msgstr ""

#: ../satellite_tools/satsync.py:1084
#, python-format
msgid "   Fetching any missing RPMs: %s (%s)"
msgstr ""

#: ../satellite_tools/satsync.py:1085 ../satellite_tools/satsync.py:1153
msgid "NONE MISSING"
msgstr ""

#: ../satellite_tools/satsync.py:1094
msgid "Processing rpm packages complete"
msgstr ""

#: ../satellite_tools/satsync.py:1121
msgid "Downloading package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1146
msgid "Downloading srpm packages"
msgstr ""

#: ../satellite_tools/satsync.py:1152
#, python-format
msgid "   Fetching any missing SRPMs: %s (%s)"
msgstr ""

#: ../satellite_tools/satsync.py:1249
#, python-format
msgid "Diffing source package metadata (what's missing locally?): %s"
msgstr ""

#: ../satellite_tools/satsync.py:1260
msgid "Downloading source package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1338 ../satellite_tools/satsync.py:2027
#, python-format
msgid "Unable to save file %s: %s"
msgstr ""

#. for
#. Retried a number of times and it still failed; log the
#. file as being failed and move on
#: ../satellite_tools/satsync.py:1345
#, python-format
msgid "Failed to fetch file %s"
msgstr ""

#: ../satellite_tools/satsync.py:1350
msgid "Downloading kickstartable trees metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1365
msgid "Downloading kickstartable trees files"
msgstr ""

#: ../satellite_tools/satsync.py:1504
#, python-format
msgid "Grabbing all patches for channel %s"
msgstr ""

#: ../satellite_tools/satsync.py:1554
msgid "Downloading patch data"
msgstr ""

#: ../satellite_tools/satsync.py:1556
msgid "Forcing download of all patch data for requested channels."
msgstr ""

#: ../satellite_tools/satsync.py:1571
msgid "Downloading patch data complete"
msgstr ""

#: ../satellite_tools/satsync.py:1576 ../satellite_tools/satsync.py:1597
msgid "Downloading:"
msgstr ""

#: ../satellite_tools/satsync.py:1579
msgid " - complete"
msgstr ""

#: ../satellite_tools/satsync.py:1624
msgid "Importing source package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1627
msgid "Importing package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1635
msgid "Importing:  "
msgstr ""

#. not in the cache
#: ../satellite_tools/satsync.py:1703
msgid ""
"Package Not Found in Cache, Clear the Cache "
"to                                  Regenerate it."
msgstr ""

#: ../satellite_tools/satsync.py:1709
msgid "Importing channel patches"
msgstr ""

#: ../satellite_tools/satsync.py:1714
#, python-format
msgid "Importing %s patches for channel %s."
msgstr ""

#. Incomplete configuration
#: ../satellite_tools/satsync.py:2113
msgid "ERROR: server.mount_point not set in the configuration file"
msgstr ""

#: ../satellite_tools/satsync.py:2117
#, python-format
msgid "ERROR: server.mount_point %s do not exist"
msgstr ""

#: ../satellite_tools/satsync.py:2122
#, python-format
msgid "ERROR: path under server.mount_point (%s)  do not exist"
msgstr ""

#: ../satellite_tools/satsync.py:2199
#, python-format
msgid "Commandline: %s"
msgstr ""

#: ../satellite_tools/satsync.py:2202
#, python-format
msgid ""
"DEBUG ONLY: max. batch-size for XML/database-import processing (1..%s).\"man "
"satellite-sync\" for more information."
msgstr ""

#: ../satellite_tools/satsync.py:2205
msgid "alternative SSL CA Cert (fullpath to cert file)"
msgstr ""

#: ../satellite_tools/satsync.py:2207
msgid "process data for this channel only"
msgstr ""

#: ../satellite_tools/satsync.py:2209
msgid ""
"disk dump will be considered to be a full export; see \"man satellite-sync\" "
"for more information."
msgstr ""

#: ../satellite_tools/satsync.py:2212
msgid "existing custom channels will also be synced (unless -c is used)"
msgstr ""

#: ../satellite_tools/satsync.py:2214
#, python-format
msgid ""
"override debug level set in /etc/rhn/rhn.conf (which is currently set at %s)."
msgstr ""

#: ../satellite_tools/satsync.py:2216
#, python-format
msgid "requested version of XML dump (default: %s)"
msgstr ""

#: ../satellite_tools/satsync.py:2218
msgid "e-mail a report of what was synced/imported"
msgstr ""

#: ../satellite_tools/satsync.py:2220
msgid "forcibly process all (not a diff of) patch metadata"
msgstr ""

#: ../satellite_tools/satsync.py:2222
msgid "Do not use an http proxy under any circumstances."
msgstr ""

#: ../satellite_tools/satsync.py:2224
msgid "alternative http proxy (hostname:port)"
msgstr ""

#: ../satellite_tools/satsync.py:2226
msgid "alternative http proxy username"
msgstr ""

#: ../satellite_tools/satsync.py:2228
msgid "alternative http proxy password"
msgstr ""

#: ../satellite_tools/satsync.py:2230
msgid "parent SUSE Manager to import content from"
msgstr ""

#: ../satellite_tools/satsync.py:2232
msgid "list all available channels and exit"
msgstr ""

#: ../satellite_tools/satsync.py:2234
msgid "help on all error codes mgr-inter-sync returns"
msgstr ""

#: ../satellite_tools/satsync.py:2236
msgid "source mount point for import - disk update only"
msgstr ""

#: ../satellite_tools/satsync.py:2238
msgid "do not process patch data"
msgstr ""

#: ../satellite_tools/satsync.py:2240
msgid "do not process kickstart data (provisioning only)"
msgstr ""

#: ../satellite_tools/satsync.py:2242
msgid "do not process full package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:2244
msgid "do not download, or process any RPMs"
msgstr ""

#: ../satellite_tools/satsync.py:2246
msgid "turn off SSL (not recommended)"
msgstr ""

#: ../satellite_tools/satsync.py:2248
msgid "org to which the sync imports data. defaults to the admin account"
msgstr ""

#: ../satellite_tools/satsync.py:2250
msgid "print the configuration and exit"
msgstr ""

#: ../satellite_tools/satsync.py:2252
msgid "alternative server with which to connect (hostname)"
msgstr ""

#: ../satellite_tools/satsync.py:2254
msgid "synchronize to this step (man satellite-sync for more info)"
msgstr ""

#: ../satellite_tools/satsync.py:2256
msgid "write complete data to tempfile before streaming to remainder of app"
msgstr ""

#: ../satellite_tools/satsync.py:2258
msgid "DEBUG ONLY: alternative path to digital system id"
msgstr ""

#: ../satellite_tools/satsync.py:2260
msgid "alternative email address(es) for sync output (--email option)"
msgstr ""

#: ../satellite_tools/satsync.py:2262
msgid "do not remove rpms when importing from local dump"
msgstr ""

#: ../satellite_tools/satsync.py:2264
msgid ""
"the fully qualified domain name of the master Satellite. Valid with --mount-"
"point only. Required if you want to import org data and channel permissions."
msgstr ""

#: ../satellite_tools/satsync.py:2274
#, python-format
msgid "ERROR: these arguments make no sense in this context (try --help): %s"
msgstr ""

#. An SQL error is fatal... crash and burn
#: ../satellite_tools/satsync.py:2286
#, python-format
msgid "ERROR: Can't connect to the database: %s"
msgstr ""

#: ../satellite_tools/satsync.py:2287
msgid "ERROR: Check if your database is running."
msgstr ""

#: ../satellite_tools/satsync.py:2322
#, python-format
msgid "ERROR: --debug-level takes an in integer value within the range %s."
msgstr ""

#: ../satellite_tools/satsync.py:2324
msgid "  0  - little logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2325
msgid "  1  - minimal logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2326
msgid "  2  - normal level of logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2327
msgid "  3  - lots of logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2328
msgid "  4+ - excessive logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2341
msgid "ERROR: The --master option is only valid with the --mount-point option"
msgstr ""

#: ../satellite_tools/satsync.py:2351
#, python-format
msgid "ERROR: Unable to lookup Org Id %s"
msgstr ""

#: ../satellite_tools/satsync.py:2360
msgid ""
"WARNING: --list-channels option overrides any --step option. --step ignored."
msgstr ""

#: ../satellite_tools/satsync.py:2375
#, python-format
msgid ""
"ERROR: '%s' is not a valid step. See 'man mgr-inter-sync' for more detail."
msgstr ""

#: ../satellite_tools/satsync.py:2407
msgid ""
"ERROR: No channels currently imported; try mgr-inter-sync --list-channels; "
"then mgr-inter-sync -c chn0 -c chn1..."
msgstr ""

#. int(None) --> TypeError
#. int('a')  --> ValueError
#: ../satellite_tools/satsync.py:2457 ../satellite_tools/satsync.py:2461
msgid "ERROR: --batch-size must have a value within the range: 1..50"
msgstr ""

#: ../satellite_tools/satsync.py:2469
#, python-format
msgid "ERROR: no such directory %s"
msgstr ""

#: ../satellite_tools/satsync.py:2474
msgid "Error Codes: Returned codes means:"
msgstr ""

#: ../satellite_tools/satsync.py:2475
msgid " -1  - Could not lock file or KeyboardInterrupt or SystemExit"
msgstr ""

#: ../satellite_tools/satsync.py:2476
msgid "  0  - User interrupted or intentional exit"
msgstr ""

#: ../satellite_tools/satsync.py:2477
msgid "  1  - attempting to run more than one instance of mgr-inter-sync."
msgstr ""

#: ../satellite_tools/satsync.py:2478
msgid "  2  - Unable to find synchronization tools."
msgstr ""

#: ../satellite_tools/satsync.py:2479
msgid "  3  - a general socket exception occurred"
msgstr ""

#: ../satellite_tools/satsync.py:2480
msgid "  4  - an SSL error occurred. Recheck your SSL settings."
msgstr ""

#: ../satellite_tools/satsync.py:2481
msgid "  5  - ISS error"
msgstr ""

#: ../satellite_tools/satsync.py:2482
msgid "  6  - unhandled exception occurred"
msgstr ""

#: ../satellite_tools/satsync.py:2483
msgid "  7  - unknown sync error"
msgstr ""

#: ../satellite_tools/satsync.py:2484
msgid "  8  - ERROR: must be root to execute"
msgstr ""

#: ../satellite_tools/satsync.py:2485
msgid "  9  - rpclib fault during synchronization init"
msgstr ""

#: ../satellite_tools/satsync.py:2486
msgid "  10 - synchronization init error"
msgstr ""

#: ../satellite_tools/satsync.py:2487
msgid "  11 - Error parsing XML stream"
msgstr ""

#: ../satellite_tools/satsync.py:2488
msgid "  12 - Channel do not exist"
msgstr ""

#: ../satellite_tools/satsync.py:2489
msgid "  13 - SQL error during importing package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:2490
msgid "  14 - SQL error during linking channel packages"
msgstr ""

#: ../satellite_tools/satsync.py:2491
msgid "  15 - SQL error during xml processing"
msgstr ""

#: ../satellite_tools/satsync.py:2492
msgid "  16 - server.mount_point not set in the configuration file"
msgstr ""

#: ../satellite_tools/satsync.py:2493
msgid ""
"  17 - SQL error during retrieving the channels already imported in the SUSE "
"Manager database"
msgstr ""

#: ../satellite_tools/satsync.py:2494
msgid "  18 - Wrong db connection string in rhn.conf"
msgstr ""

#: ../satellite_tools/satsync.py:2495
msgid "  19 - Bad arguments"
msgstr ""

#: ../satellite_tools/satsync.py:2496
msgid "  20 - Could not connect to db."
msgstr ""

#: ../satellite_tools/satsync.py:2497
msgid "  21 - Bad debug level"
msgstr ""

#: ../satellite_tools/satsync.py:2498
msgid "  22 - Not valid step"
msgstr ""

#: ../satellite_tools/satsync.py:2499
msgid "  24 - no such file"
msgstr ""

#: ../satellite_tools/satsync.py:2500
msgid "  25 - no such directory"
msgstr ""

#: ../satellite_tools/satsync.py:2501
msgid "  26 - mount_point does not exist"
msgstr ""

#: ../satellite_tools/satsync.py:2502
msgid "  27 - No such org"
msgstr ""

#: ../satellite_tools/satsync.py:2503
msgid "  28 - error: --master is only valid with --mount-point"
msgstr ""

#: ../satellite_tools/satsync.py:2510
#, python-format
msgid "ERROR: unknown dump version, try one of %s"
msgstr ""
07070100000082000081B40000000000000000000000016290A0C10000B651000000000000000000000000000000000000001B00000000spacewalk-backend/po/or.po    # SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
#
# Translators:
# Subhransu Behera <sbehera@redhat.com>, 2006, 2007.
msgid ""
msgstr ""
"Project-Id-Version: Spacewalk\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-10-16 13:34+0200\n"
"PO-Revision-Date: 2011-03-04 16:08+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Oriya (http://www.transifex.com/projects/p/fedora/language/"
"or/)\n"
"Language: or\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"

#: ../server/apacheAuth.py:66
#, python-format
msgid "incomplete proxy authentication token: %s"
msgstr ""

#: ../server/apacheAuth.py:84
#, python-format
msgid "Sent proxy signature %s does not match ours %s."
msgstr ""

#: ../server/apacheAuth.py:119
msgid "declined proxy authentication"
msgstr ""

#: ../server/apacheRequest.py:59
#, python-format
msgid "Invalid request received (%s)."
msgstr ""

#: ../server/apacheRequest.py:120
#, python-format
msgid ""
"IMPORTANT MESSAGE FOLLOWS:\n"
"%s"
msgstr ""

#: ../server/apacheRequest.py:149
#, python-format
msgid ""
"While running '%s': caught\n"
"%s : %s\n"
msgstr ""

#: ../server/apacheRequest.py:606
#, python-format
msgid "Invalid URI %s"
msgstr ""

#: ../server/configFilesHandler.py:129 ../server/handlers/app/packages.py:192
#: ../server/handlers/xmlrpc/registration.py:215
#: ../server/handlers/xmlrpc/registration.py:1168
#: ../server/handlers/xmlrpc/registration.py:1307
#, python-format
msgid ""
"\n"
"                   %s Account has been deactivated on this server.\n"
"                   Please contact your Org administrator for more help."
msgstr ""

#: ../server/handlers/applet/applet.py:78
#, python-brace-format
msgid "Your system was not found in the {PRODUCT_NAME} database"
msgstr ""

#: ../server/handlers/sat/auth.py:45
msgid "ISS is disabled on this server."
msgstr ""

#: ../server/handlers/sat/auth.py:50
#, python-format
msgid "Server \"%s\" is not enabled for ISS."
msgstr ""

#: ../server/handlers/xmlrpc/errata.py:64
#, python-format
msgid "Expected a package name, not: %s"
msgstr ""

#: ../server/handlers/xmlrpc/errata.py:115
#, python-format
msgid "Expected a package, not: %s"
msgstr ""

#: ../server/handlers/xmlrpc/proxy.py:65
#, python-format
msgid "SUSE Manager Proxy service not enabled for server profile: \"%s\""
msgstr ""

#: ../server/handlers/xmlrpc/proxy.py:85
msgid "Invalid session key"
msgstr ""

#: ../server/handlers/xmlrpc/proxy.py:93
msgid "This server ID no longer exists"
msgstr ""

#: ../server/handlers/xmlrpc/queue.py:433
#, python-format
msgid "Invalid action value type %s (%s)"
msgstr ""

#: ../server/handlers/xmlrpc/queue.py:464
#, python-format
msgid "Action %s does not belong to server %s"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:194
msgid "Required data missing"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:198
msgid "Required members missing"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:207
msgid "Attempt to register a system to an invalid username"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:839
msgid "Invalid system release version requested"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1063
msgid ""
"Unable to find a valid network interface, both ipaddr and ip6addr not found."
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1115
#, python-brace-format
msgid "{PRODUCT_NAME} Welcome Message"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1125
msgid "Privacy Statement"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1146
msgid "Expected a dictionary as a product argument"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1374
#, python-format
msgid "Invalid value '%s' for %s (%s)"
msgstr ""

#: ../server/handlers/xmlrpc/scap.py:104
msgid "Invalid system_id/action_id pair."
msgstr ""

#: ../server/handlers/xmlrpc/up2date.py:233
#, python-format
msgid "Invalid value %s (%s)"
msgstr ""

#: ../server/importlib/userAuth.py:98
msgid "You are not authorized to manage packages in the null org"
msgstr ""

#: ../server/importlib/userAuth.py:103
#, python-format
msgid "You are not allowed to manage packages in the %s org"
msgstr ""

#: ../server/importlib/userAuth.py:121
msgid "You are not allowed to perform administrative tasks"
msgstr ""

#: ../server/importlib/userAuth.py:144
#, python-format
msgid ""
"You are not allowed to manage channel %s, or that channel does not exist"
msgstr ""

#: ../server/importlib/userAuth.py:204
#, python-format
msgid ""
"\n"
"               %s Account has been deactivated on this server.\n"
"               Please contact your Org administrator for more help."
msgstr ""

#: ../server/rhnChannel.py:1992
#, python-format
msgid ""
"Your account does not have access to any channels matching "
"(release='%(release)s', arch='%(arch)s')%(www_activation)s"
msgstr ""

#: ../server/rhnChannel.py:2002
msgid ""
"\n"
"If you have a registration number, please register with it first at http://"
"www.redhat.com/apps/activate/ and then try again.\n"
"\n"
msgstr ""

#: ../server/rhnChannel.py:2012
#, python-format
msgid "Insufficient subscription permissions for release (%s, %s"
msgstr ""

#. Various messages that can be reused
#.
#. bretm 02/07/2007 -- when we have better old-client documentation, probably
#. will be safe to get rid of all this crap
#: ../server/rhnChannel.py:2276 ../server/rhnChannel.py:2287
#: ../server/rhnChannel.py:2302
msgid "System Registered but Inactive"
msgstr ""

#: ../server/rhnChannel.py:2277
#, python-format
msgid ""
"\n"
"Invalid Architecture and OS release combination (%s, %s).\n"
"Your system has been registered, but will not receive updates\n"
"because it is not subscribed to a channel. If you have not yet\n"
"activated your product for service, please visit our website at:\n"
"\n"
"     http://www.redhat.com/apps/activate/\n"
"\n"
"...to activate your product."
msgstr ""

#: ../server/rhnChannel.py:2288
#, python-format
msgid ""
"\n"
"Invalid Architecture and OS release combination (%s, %s).\n"
"Your system has been registered, but will not receive updates\n"
"because it could not be subscribed to a base channel.\n"
"Please contact your organization administrator for assistance.\n"
msgstr ""

#: ../server/rhnChannel.py:2295
#, python-format
msgid ""
"\n"
"  This system has been successfully registered, but is not yet entitled\n"
"  to service.  To entitle this system to service, login to the web site at:\n"
"\n"
"  %(entitlement_url)s\n"
msgstr ""

#: ../server/rhnChannel.py:2303
#, python-format
msgid ""
"\n"
"  This system has been successfully registered, but no service entitlements\n"
"  were available.  To entitle this system to service, login to the web site "
"at:\n"
"\n"
"  %(entitlement_url)s\n"
msgstr ""

#: ../server/rhnHandler.py:62
msgid "Please run rhn_register as root on this client"
msgstr ""

#: ../server/rhnHandler.py:75
#, python-format
msgid "Service not enabled for system profile: \"%s\""
msgstr ""

#: ../server/rhnPackage.py:49 ../server/rhnPackage.py:87
#: ../server/rhnPackage.py:107 ../server/rhnPackage.py:158
#, python-format
msgid "Invalid RPM package %s requested"
msgstr ""

#: ../server/rhnPackage.py:112
msgid "Package not found"
msgstr ""

#: ../server/rhnServer/server_class.py:97
#, python-format
msgid "Architecture `%s' is not supported"
msgstr ""

#: ../server/rhnServer/server_token.py:78
#, python-format
msgid "Token `%s' has more than one base channel assigned"
msgstr ""

#: ../server/rhnServer/server_token.py:80
msgid "Conflicting base channels"
msgstr ""

#: ../server/rhnServer/server_token.py:190
#, python-format
msgid "Failed to add server to group %s"
msgstr ""

#: ../server/rhnServer/server_token.py:503
#, python-format
msgid "Maximum usage count of %s reached"
msgstr ""

#: ../server/rhnServer/server_token.py:744
msgid ""
"Stacking of re-registration tokens with different base entitlements is not "
"supported"
msgstr ""

#: ../server/rhnServer/server_token.py:811
#, python-format
msgid "Could not find token '%s'"
msgstr ""

#. Cannot use activation keys from different orgs
#: ../server/rhnServer/server_token.py:843
msgid "Tokens from mismatching orgs"
msgstr ""

#. Two tokens with different kickstart sessions
#: ../server/rhnServer/server_token.py:853
msgid "Kickstart session mismatch"
msgstr ""

#: ../server/rhnServer/server_token.py:877
msgid "Stacking of re-registration tokens is not supported"
msgstr ""

#: ../server/rhnUser.py:289 ../server/rhnUser.py:292
msgid "Invalid username/password combination"
msgstr ""

#. nope, not reserved either
#: ../server/rhnUser.py:467
#, python-format
msgid "Username `%s' has not been reserved"
msgstr ""

#. New accounts have to specify an e-mail address
#: ../server/rhnUser.py:473
msgid "E-mail address not specified"
msgstr ""

#: ../server/rhnUser.py:509
#, python-format
msgid "username should be at least %d characters"
msgstr ""

#: ../server/rhnUser.py:512
#, python-format
msgid "username should be less than %d characters"
msgstr ""

#: ../server/rhnUser.py:523
#, python-format
msgid "username = `%s', invalid character `%s'"
msgstr ""

#: ../server/rhnUser.py:542
#, python-format
msgid "Please limit your e-mail address to %s chars"
msgstr ""

#: ../server/rhnUser.py:623
#, python-format
msgid "password must be at least %d characters"
msgstr ""

#: ../server/rhnUser.py:626
#, python-format
msgid "Password must be shorter than %d characters"
msgstr ""

#: ../server/rhnUser.py:644
#, python-format
msgid "password contains character `%s'"
msgstr ""

#: ../server/rhnUser.py:651
#, python-format
msgid "username should be at least %d characters long"
msgstr ""

#: ../server/rhnUser.py:662
#, python-format
msgid "Cannot register usernames ending with %s"
msgstr ""

#. 0-999: Red Hat client/client-like interaction errors:
#: ../common/rhnException.py:53
msgid "This does not appear to be a valid username."
msgstr ""

#: ../common/rhnException.py:54
msgid "Invalid username and password combination."
msgstr ""

#: ../common/rhnException.py:55
msgid "This login is already taken, or the password is incorrect."
msgstr ""

#: ../common/rhnException.py:56
msgid "Permission denied."
msgstr ""

#: ../common/rhnException.py:57
msgid "Object not found."
msgstr ""

#: ../common/rhnException.py:58
msgid "Invalid System Digital ID."
msgstr ""

#: ../common/rhnException.py:59
msgid "Invalid System Credentials."
msgstr ""

#: ../common/rhnException.py:60
msgid "Could not retrieve user data from database."
msgstr ""

#: ../common/rhnException.py:61
msgid "Valid username required."
msgstr ""

#: ../common/rhnException.py:62
msgid "Valid password required."
msgstr ""

#: ../common/rhnException.py:63
msgid "Minimum username length violation."
msgstr ""

#: ../common/rhnException.py:64
msgid "Minimum password length violation."
msgstr ""

#: ../common/rhnException.py:65
msgid "The username contains invalid characters."
msgstr ""

#: ../common/rhnException.py:66
msgid "File not found."
msgstr ""

#: ../common/rhnException.py:67
msgid "Architecture and OS version combination is not supported."
msgstr ""

#: ../common/rhnException.py:68
msgid "Could not retrieve system data from database."
msgstr ""

#: ../common/rhnException.py:69
msgid "Invalid arguments passed to function."
msgstr ""

#: ../common/rhnException.py:70
msgid "Unable to retrieve requested entry."
msgstr ""

#: ../common/rhnException.py:71
msgid "Could not update database entry."
msgstr ""

#: ../common/rhnException.py:72
msgid "Unsupported server architecture."
msgstr ""

#: ../common/rhnException.py:73
#, python-format
msgid ""
"\n"
"     The anonymous server functionality is no longer available.\n"
"\n"
"     Please re-register this system by running mgr_register as root.\n"
"     Please visit https://%(hostname)s/rhn/systems/SystemEntitlements.do\n"
"     or login at https://%(hostname)s, and from the \"Overview\" tab,\n"
"     select \"Subscription Management\" to enable the service for this "
"system.\n"
"     "
msgstr ""

#: ../common/rhnException.py:81
msgid "Record not available in the database."
msgstr ""

#: ../common/rhnException.py:82
msgid "Invalid value for entry."
msgstr ""

#: ../common/rhnException.py:83
#, python-format
msgid ""
"\n"
"     This system does not have a valid entitlement for SUSE Manager.\n"
"     Please visit https://%(hostname)s/rhn/systems/SystemEntitlements.do\n"
"     or login at https://%(hostname)s, and from the \"Overview\" tab,\n"
"     select \"Subscription Management\" to enable the service for this "
"system.\n"
"     "
msgstr ""

#: ../common/rhnException.py:89
msgid "Channel error"
msgstr ""

#: ../common/rhnException.py:90
msgid "Client session token is invalid."
msgstr ""

#: ../common/rhnException.py:91
msgid "Client session token has expired."
msgstr ""

#: ../common/rhnException.py:92
msgid "You are not authorized to retrieve the requested object."
msgstr ""

#: ../common/rhnException.py:93
msgid "Invalid action"
msgstr ""

#: ../common/rhnException.py:94
msgid "You are not allowed to perform administrative tasks on this system."
msgstr ""

#: ../common/rhnException.py:96
msgid "The system is already subscribed to the specified channel."
msgstr ""

#: ../common/rhnException.py:97
msgid "The system is not currently subscribed to the specified channel."
msgstr ""

#: ../common/rhnException.py:98
msgid "The specified channel does not exist."
msgstr ""

#: ../common/rhnException.py:99
msgid "Invalid channel version."
msgstr ""

#: ../common/rhnException.py:100
msgid ""
"\n"
"     User group membership limits exceeded.\n"
"\n"
"     The current settings for your account do not allow you to add another\n"
"     user account. Please check with the organization administrator for "
"your\n"
"     account if the maximum number of users allowed to subscribe to server "
"needs\n"
"     to be changed.\n"
"     "
msgstr ""

#: ../common/rhnException.py:108
msgid ""
"\n"
"     System group membership limits exceeded.\n"
"\n"
"     The current settings for your account do not allow you to add another\n"
"     system profile. Please check with the organization administrator for "
"your\n"
"     account for modifying the maximum number of system profiles that can "
"be\n"
"     subscribed to your account.\n"
"     "
msgstr ""

#: ../common/rhnException.py:116
msgid ""
"\n"
"     Invalid architecture.\n"
"\n"
"     The architecture of the package is not supported by\n"
"     "
msgstr ""

#: ../common/rhnException.py:121
msgid "Invalid RPM header"
msgstr ""

#: ../common/rhnException.py:122
msgid ""
"\n"
"    This system is already registered as a Salt Minion. If you want to "
"register it as a traditional client\n"
"    please delete it first via the web UI or API and then register it using "
"the traditional tools.\n"
"    "
msgstr ""

#. For the uploading tools
#: ../common/rhnException.py:127
msgid "Invalid information uploaded to the server"
msgstr ""

#: ../common/rhnException.py:128
msgid "Error uploading network interfaces configuration."
msgstr ""

#: ../common/rhnException.py:129
msgid ""
"\n"
"     Package Upload Failed due to uniqueness constraint violation.\n"
"     Make sure the package does not have any duplicate dependencies or\n"
"     does not already exists on the server\n"
"     "
msgstr ""

#: ../common/rhnException.py:134
msgid ""
"\n"
"     The --force rhnpush option is disabled on this server.\n"
"     Please contact your SUSE Manager administrator for more help.\n"
"     "
msgstr ""

#. 60-70: token errors
#: ../common/rhnException.py:140
msgid ""
"\n"
"     The activation token specified could not be found on the server.\n"
"     Please retry with a valid key.\n"
"     "
msgstr ""

#: ../common/rhnException.py:144
msgid "Too many systems registered using this registration token"
msgstr ""

#: ../common/rhnException.py:145
msgid "Token contains invalid, obsoleted or insufficient settings"
msgstr ""

#: ../common/rhnException.py:146
msgid "Conflicting activation tokens"
msgstr ""

#. 70-80: channel subscription errors
#: ../common/rhnException.py:149
msgid ""
"\n"
"     No matching base channel found for your system.\n"
"     "
msgstr ""

#: ../common/rhnException.py:152
msgid ""
"\n"
"     You do not have subscription permission to the designated channel.\n"
"     Please refer to your organization's channel or organization\n"
"     administrators for further details.\n"
"     "
msgstr ""

#: ../common/rhnException.py:157
msgid "You can not unsubscribe from base channel."
msgstr ""

#: ../common/rhnException.py:158
msgid "SUSE Manager or Proxy channel can not be subscribed."
msgstr ""

#. 80-90: server group errors
#: ../common/rhnException.py:161
msgid "There was an error while trying to join the system to its groups"
msgstr ""

#. 90-100: entitlement errors
#: ../common/rhnException.py:164
msgid "Unable to entitle system"
msgstr ""

#. 100-109: e-mail and uuid related faults
#: ../common/rhnException.py:167
msgid "Maximum e-mail length violation."
msgstr ""

#: ../common/rhnException.py:168
msgid "This system has been previously registered."
msgstr ""

#: ../common/rhnException.py:169
msgid "Invalid username"
msgstr ""

#. 140-159 applet errors
#: ../common/rhnException.py:172
msgid "Unable to look up server"
msgstr ""

#. 160-179: OSAD errors
#: ../common/rhnException.py:175
msgid "Required argument is missing"
msgstr ""

#. 600-699: RHEL5+ EN errors
#: ../common/rhnException.py:178
msgid "No entitlement information tied to hardware"
msgstr ""

#: ../common/rhnException.py:179
msgid "Installation number is not entitling"
msgstr ""

#. 700-799: Additional user input verification errors.
#: ../common/rhnException.py:182
msgid "Maximum username length violation"
msgstr ""

#: ../common/rhnException.py:183
msgid "Maximum password length violation"
msgstr ""

#: ../common/rhnException.py:184
msgid "This user has read only API access. Action denied."
msgstr ""

#: ../common/rhnException.py:186
msgid "System Name cannot be less than 1 character"
msgstr ""

#. 1000-1999: Proxy specific errors:
#. issued by a Proxy to the client
#: ../common/rhnException.py:190
msgid "SUSE Manager Proxy error."
msgstr ""

#: ../common/rhnException.py:191
msgid "SUSE Manager Proxy unable to login."
msgstr ""

#. issued by a SUSE Manager Server/Satellite to the proxy
#: ../common/rhnException.py:193
msgid ""
"\n"
"     SUSE Manager Proxy system ID does not match a Spacewalk Proxy Server\n"
"     in the database.\n"
"     "
msgstr ""

#: ../common/rhnException.py:197
msgid "SUSE Manager Proxy session token is invalid."
msgstr ""

#: ../common/rhnException.py:198
msgid "SUSE Manager Proxy session token has expired."
msgstr ""

#. 2000-2999: Red Hat Satellite specific errors:
#: ../common/rhnException.py:202
msgid ""
"\n"
"      user creation is not allowed via mgr_register;\n"
"     please contact your sysadmin to have your account created.\n"
"     "
msgstr ""

#: ../common/rhnException.py:206
msgid ""
"\n"
"     This SUSE Manager server is not allowed to use Inter Server Sync on "
"this server\n"
"     "
msgstr ""

#: ../common/rhnException.py:209
msgid ""
"\n"
"     Inter Server Sync is disabled on this SUSE Manager Server.\n"
"     "
msgstr ""

#. 3000-3999: XML dumper errors:
#: ../common/rhnException.py:214
msgid "Invalid datatype passed"
msgstr ""

#: ../common/rhnException.py:215
msgid "Unable to retrieve channel"
msgstr ""

#: ../common/rhnException.py:216
msgid "Unable to retrieve package"
msgstr ""

#: ../common/rhnException.py:217
msgid "Unable to retrieve erratum"
msgstr ""

#: ../common/rhnException.py:218
msgid "File is missing"
msgstr ""

#: ../common/rhnException.py:219
msgid "Function retrieval error"
msgstr ""

#: ../common/rhnException.py:220
msgid "Function execution error"
msgstr ""

#: ../common/rhnException.py:221
msgid "Missing version string"
msgstr ""

#: ../common/rhnException.py:222
msgid "Invalid version string"
msgstr ""

#: ../common/rhnException.py:223
msgid "Mismatching versions"
msgstr ""

#: ../common/rhnException.py:224
msgid "Invalid channel version"
msgstr ""

#: ../common/rhnException.py:225
msgid "No comps file for channel"
msgstr ""

#: ../common/rhnException.py:226
msgid "Unable to retrieve comps file"
msgstr ""

#. 4000 - 4999: config management errors
#: ../common/rhnException.py:229
msgid "Configuration action missing"
msgstr ""

#: ../common/rhnException.py:230
msgid "File too large"
msgstr ""

#: ../common/rhnException.py:231
msgid "File contains binary data"
msgstr ""

#: ../common/rhnException.py:232
msgid "Configuration channel is not empty"
msgstr ""

#: ../common/rhnException.py:233
msgid "Permission error"
msgstr ""

#: ../common/rhnException.py:234
msgid "Content missing for configuration file"
msgstr ""

#: ../common/rhnException.py:235
msgid "Template delimiters not specified"
msgstr ""

#: ../common/rhnException.py:236
msgid "Configuration channel does not exist"
msgstr ""

#: ../common/rhnException.py:237
msgid "Configuration channel already exists"
msgstr ""

#: ../common/rhnException.py:238
msgid "File missing from configuration channel"
msgstr ""

#: ../common/rhnException.py:239
msgid "Different revision of this file is uploaded"
msgstr ""

#: ../common/rhnException.py:240
msgid "File already uploaded to configuration channel"
msgstr ""

#: ../common/rhnException.py:241
msgid "File size exceeds remaining quota space"
msgstr ""

#: ../common/rhnException.py:242
msgid "Full path of file must be specified"
msgstr ""

#: ../common/rhnException.py:243
msgid "Invalid revision number"
msgstr ""

#: ../common/rhnException.py:244
msgid "Cannot compare files of different file type"
msgstr ""

#. 5000 - 5999: client content uploading errors
#. 5000 - 5099: crash reporting errors
#: ../common/rhnException.py:248
msgid "Crash information is invalid or incomplete"
msgstr ""

#: ../common/rhnException.py:249
msgid "Crash file information is invalid or incomplete"
msgstr ""

#: ../common/rhnException.py:250
msgid "Error composing crash directory path"
msgstr ""

#: ../common/rhnException.py:251
msgid "Error composing crash file path"
msgstr ""

#: ../common/rhnException.py:252 ../common/rhnException.py:259
msgid "Invalid content encoding"
msgstr ""

#: ../common/rhnException.py:253
msgid "Invalid crash name"
msgstr ""

#: ../common/rhnException.py:254
msgid "Crash reporting is disabled for this organization"
msgstr ""

#. 5100 - 5199: scap results reporting error
#: ../common/rhnException.py:256
msgid "SCAP results file transfer is invalid or incomplete"
msgstr ""

#: ../common/rhnException.py:257
msgid "Error composing directory path for detailed SCAP results"
msgstr ""

#: ../common/rhnException.py:258
msgid "Error composing file path for detailed SCAP results"
msgstr ""

#: ../common/rhnException.py:306
msgid ""
"\n"
"     An error has occurred while processing your request. If this problem\n"
"     persists please enter a bug report at scc.suse.com.\n"
"     If you choose to submit the bug report, please be sure to include\n"
"     details of what you were trying to do when this error occurred and\n"
"     details on how to reproduce this problem.\n"
msgstr ""

#: ../common/rhnException.py:358
#, python-format
msgid ""
"Error Message:\n"
"    %s\n"
msgstr ""

#: ../common/rhnException.py:360
#, python-format
msgid "Error Class Code: %s\n"
msgstr ""

#: ../common/rhnException.py:363
#, python-format
msgid "Error Class Info: %s\n"
msgstr ""

#: ../common/rhnException.py:365
#, python-format
msgid "Explanation: %s"
msgstr ""

#: ../common/rhnTB.py:205
#, python-format
msgid "ERROR: %s %s: %s"
msgstr ""

#: ../common/rhnTB.py:207
#, python-format
msgid "TRACEBACK: %s"
msgstr ""

#: ../satellite_tools/disk_dumper/iss.py:1294
#: ../satellite_tools/disk_dumper/iss.py:1298
#, python-format
msgid "format of %s should be at least YYYYMMDD.\n"
msgstr ""

#: ../satellite_tools/messages.py:26
#, python-format
msgid ""
"\n"
"ERROR: executing step %s. Error is:\n"
"%s\n"
msgstr ""

#: ../satellite_tools/messages.py:31
#, python-format
msgid ""
"\n"
"ERROR: there was a problem accessing the channel data from your temporary\n"
"       repository. Did you migrate all of the data from the channel ISOs\n"
"       do this directory? If so, please recheck the channels ISOs, ensure\n"
"       that you have them all, and then iteratively remount and repopulate\n"
"       the temporary repository (%s).\n"
msgstr ""

#: ../satellite_tools/messages.py:39
#, python-format
msgid ""
"\n"
"ERROR: there was a problem synchronizing the information.\n"
"       Error message: %s\n"
msgstr ""

#: ../satellite_tools/messages.py:44
#, python-format
msgid ""
"\n"
"ERROR: There was a problem communicating with the ISS Master.\n"
"       Depending on the specific error details, please review your "
"configuration,\n"
"       basic network connectivity, and/or name resolution, and try again.\n"
"       Error message: %s\n"
msgstr ""

#: ../satellite_tools/messages.py:51
#, python-format
msgid ""
"\n"
"ERROR: There was a problem communicating with the ISS Master.\n"
"       If the master satellite is older than v5.3, it does not have ISS "
"capability.\n"
"       Otherwise, depending on the specific error details, please review "
"your\n"
"       configuration, basic network connectivity, and/or name resolution, "
"and try again.\n"
"       Error message: %s\n"
msgstr ""

#: ../satellite_tools/messages.py:59
#, python-format
msgid ""
"\n"
"ERROR: a child-channel cannot be synced without its parent being synced as\n"
"       well. A parent needs to be either (a) previously synced or (b) "
"synced\n"
"       in tandem with the desired child-channel. Missing parents for this\n"
"       transaction:\n"
"       %s\n"
msgstr ""

#: ../satellite_tools/messages.py:67
#, python-format
msgid ""
"\n"
"ERROR: you are not entitled to sync a channel in this set of channels.\n"
"Please contact your SUSE Manager contact\n"
"%s"
msgstr ""

#: ../satellite_tools/messages.py:72
#, python-format
msgid "  ERROR: not enough free space (%s KB) on device."
msgstr ""

#: ../satellite_tools/messages.py:74
#, python-format
msgid "    %3d/%s Fetch successful: %s (%s bytes)"
msgstr ""

#: ../satellite_tools/messages.py:75
#, python-format
msgid "    Extinct package:  %s"
msgstr ""

#: ../satellite_tools/messages.py:76
#, python-format
msgid "   Total size: %s"
msgstr ""

#: ../satellite_tools/messages.py:77
#, python-format
msgid "      Downloaded %s of %s. Estimated remaining time: %s"
msgstr ""

#: ../satellite_tools/messages.py:78
#, python-format
msgid "    Fetch unsuccessful: %s"
msgstr ""

#: ../satellite_tools/messages.py:79
#, python-format
msgid "   RPM fetch summary: %s"
msgstr ""

#: ../satellite_tools/messages.py:80
#, python-format
msgid "       success: %d"
msgstr ""

#: ../satellite_tools/messages.py:81
#, python-format
msgid "       failed:  %d"
msgstr ""

#: ../satellite_tools/messages.py:82
#, python-format
msgid "       extinct: %d"
msgstr ""

#: ../satellite_tools/messages.py:84
#, python-format
msgid "   Retrieving / parsing *relevant* package metadata: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:85
#, python-format
msgid "   Retrieving / parsing errata data: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:86
#, python-format
msgid "   Retrieving / parsing kickstart data: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:87
#, python-format
msgid "   Retrieving / parsing kickstart tree files: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:88
#, python-format
msgid "   Importing *relevant* package metadata: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:89
msgid "   * WARNING: this may be a slow process."
msgstr ""

#: ../satellite_tools/messages.py:90
msgid "Linking packages to channels"
msgstr ""

#: ../satellite_tools/messages.py:91
#, python-format
msgid "   Importing *relevant* errata: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:92
msgid "   No new kickstartable tree to import"
msgstr ""

#: ../satellite_tools/messages.py:93
#, python-format
msgid "Importing kickstartable trees (%d)"
msgstr ""

#: ../satellite_tools/messages.py:94
#, python-format
msgid "Imported kickstartable trees (%d)"
msgstr ""

#: ../satellite_tools/reposync.py:111 ../satellite_tools/satsync.py:439
msgid "+++ sending log as an email +++"
msgstr ""

#: ../satellite_tools/reposync.py:114
#, python-format
msgid "%s sync. report from %s"
msgstr ""

#: ../satellite_tools/reposync.py:124 ../satellite_tools/satsync.py:449
msgid "+++ email requested, but there is nothing to send +++"
msgstr ""

#: ../satellite_tools/rhn_satellite_activate.py:198
#, python-format
msgid ""
"\"%s\" (specified in commandline)\n"
"could not be opened and read:\n"
"%s"
msgstr ""

#: ../satellite_tools/rhn_satellite_activate.py:205
#, python-format
msgid ""
"\"%s\" could not be opened\n"
"and/or written to:\n"
"%s"
msgstr ""

#: ../satellite_tools/satsync.py:258
#, python-format
msgid "No handler for step %s"
msgstr ""

#. Try one more time - this time it should be faster since
#. everything should be cached
#: ../satellite_tools/satsync.py:270
msgid "Environment changed, trying again..."
msgstr ""

#: ../satellite_tools/satsync.py:277
msgid "ERROR: Encountered IntegrityError: \n"
msgstr ""

#: ../satellite_tools/satsync.py:285
msgid "Repeated failures"
msgstr ""

#: ../satellite_tools/satsync.py:290
#, python-format
msgid ""
"    Import complete:\n"
"        Begin time: %s\n"
"        End time:   %s\n"
"        Elapsed:    %s\n"
"          "
msgstr ""

#: ../satellite_tools/satsync.py:311
msgid "hours"
msgstr ""

#: ../satellite_tools/satsync.py:311
msgid "minutes"
msgstr ""

#: ../satellite_tools/satsync.py:311
msgid "seconds"
msgstr ""

#: ../satellite_tools/satsync.py:357
msgid ""
"ERROR: The dump is missing package data, use --no-rpms to skip this step or "
"fix the content to include package data."
msgstr ""

#. the orgs() method doesn't exist; that's fine we just
#. won't sync the orgs
#: ../satellite_tools/satsync.py:404
msgid "The SUSE Manager master does not support syncing orgs data."
msgstr ""

#: ../satellite_tools/satsync.py:404
msgid "Skipping..."
msgstr ""

#: ../satellite_tools/satsync.py:442
#, python-format
msgid "SUSE Manager Inter Server sync. report from %s"
msgstr ""

#: ../satellite_tools/satsync.py:521
msgid " - file-system synchronization"
msgstr ""

#: ../satellite_tools/satsync.py:533 ../satellite_tools/satsync.py:541
msgid " - live synchronization"
msgstr ""

#: ../satellite_tools/satsync.py:534
#, python-brace-format
msgid ""
"ERROR: Live content synchronizing with RHN Classic Hosted is no longer "
"supported.\n"
"Please use the cdn-sync command instead unless you are attempting to sync "
"from another {PRODUCT_NAME} via Inter-Server-Sync (ISS), or from local "
"content on disk via Channel Dump ISOs."
msgstr ""

#: ../satellite_tools/satsync.py:542
#, python-format
msgid "   url: %s"
msgstr ""

#: ../satellite_tools/satsync.py:543
#, python-format
msgid "   debug/output level: %s"
msgstr ""

#: ../satellite_tools/satsync.py:553
msgid "ERROR: this server must be registered with SUSE Manager."
msgstr ""

#: ../satellite_tools/satsync.py:575
#, python-format
msgid "Retrieving / parsing %s data"
msgstr ""

#: ../satellite_tools/satsync.py:585 ../satellite_tools/satsync.py:600
msgid "*** SYSTEM INTERRUPT CALLED ***"
msgstr ""

#: ../satellite_tools/satsync.py:593
msgid "ERROR: fatal parser exception occurred "
msgstr ""

#: ../satellite_tools/satsync.py:594
#, python-format
msgid "(line: %s, col: %s msg: %s)"
msgstr ""

#: ../satellite_tools/satsync.py:598
#, python-format
msgid "ERROR: parser exception occurred: %s"
msgstr ""

#: ../satellite_tools/satsync.py:603
msgid "ERROR: exception (during parse) occurred: "
msgstr ""

#: ../satellite_tools/satsync.py:604
#, python-format
msgid ""
"   Encountered some errors with %s data (see logs (%s) for more information)"
msgstr ""

#: ../satellite_tools/satsync.py:606
#, python-format
msgid "   Encountered some errors with %s data:"
msgstr ""

#: ../satellite_tools/satsync.py:607
#, python-format
msgid "   ------- %s PARSE/IMPORT ERROR -------"
msgstr ""

#: ../satellite_tools/satsync.py:609
msgid "   ---------------------------------------"
msgstr ""

#: ../satellite_tools/satsync.py:612
#, python-format
msgid "%s data complete"
msgstr ""

#: ../satellite_tools/satsync.py:665
msgid "Retrieving / parsing channel data"
msgstr ""

#: ../satellite_tools/satsync.py:718
msgid "Channel data complete"
msgstr ""

#: ../satellite_tools/satsync.py:736
#, python-format
msgid "%10s import from %s"
msgstr ""

#: ../satellite_tools/satsync.py:739
#, python-format
msgid "%10s import from %s - %s"
msgstr ""

#: ../satellite_tools/satsync.py:743
#, python-format
msgid "%10s"
msgstr ""

#: ../satellite_tools/satsync.py:750
msgid "p"
msgstr ""

#: ../satellite_tools/satsync.py:752
msgid "."
msgstr ""

#: ../satellite_tools/satsync.py:758
msgid "   p = previously imported/synced channel"
msgstr ""

#: ../satellite_tools/satsync.py:759
msgid "   . = channel not yet imported/synced"
msgstr ""

#: ../satellite_tools/satsync.py:765
msgid "   e = channel no longer supported (end-of-service)"
msgstr ""

#: ../satellite_tools/satsync.py:767
msgid "   ? = channel label invalid --- typo?"
msgstr ""

#: ../satellite_tools/satsync.py:771
#, python-format
msgid "   %s:"
msgstr ""

#: ../satellite_tools/satsync.py:772
#, python-format
msgid "      %s %-40s %4s %s"
msgstr ""

#: ../satellite_tools/satsync.py:773
msgid "base-channels"
msgstr ""

#: ../satellite_tools/satsync.py:786 ../satellite_tools/satsync.py:1603
msgid "NONE RELEVANT"
msgstr ""

#: ../satellite_tools/satsync.py:808
msgid "end-of-service"
msgstr ""

#: ../satellite_tools/satsync.py:809
msgid "e"
msgstr ""

#: ../satellite_tools/satsync.py:815
msgid "   typos:"
msgstr ""

#: ../satellite_tools/satsync.py:816
msgid "?"
msgstr ""

#: ../satellite_tools/satsync.py:831
#, python-format
msgid "XXX: imported channels: %s"
msgstr ""

#: ../satellite_tools/satsync.py:832
#, python-format
msgid "XXX:   cached channels: %s"
msgstr ""

#: ../satellite_tools/satsync.py:837
msgid "XXX: list channels called"
msgstr ""

#: ../satellite_tools/satsync.py:855
msgid "ERROR: these channels either do not exist or are not available:"
msgstr ""

#: ../satellite_tools/satsync.py:859
#, python-format
msgid "       (to see a list of channel labels: %s --list-channels)"
msgstr ""

#: ../satellite_tools/satsync.py:904
#, python-format
msgid "   Retrieving / parsing short package metadata: %s (%s)"
msgstr ""

#: ../satellite_tools/satsync.py:965
#, python-format
msgid "Diffing package metadata (what's missing locally?): %s"
msgstr ""

#: ../satellite_tools/satsync.py:971 ../satellite_tools/satsync.py:1254
msgid "Diffing:    "
msgstr ""

#: ../satellite_tools/satsync.py:988
msgid "ERROR: incremental dump skipped"
msgstr ""

#: ../satellite_tools/satsync.py:1079
msgid "Downloading rpm packages"
msgstr ""

#: ../satellite_tools/satsync.py:1084
#, python-format
msgid "   Fetching any missing RPMs: %s (%s)"
msgstr ""

#: ../satellite_tools/satsync.py:1085 ../satellite_tools/satsync.py:1153
msgid "NONE MISSING"
msgstr ""

#: ../satellite_tools/satsync.py:1094
msgid "Processing rpm packages complete"
msgstr ""

#: ../satellite_tools/satsync.py:1121
msgid "Downloading package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1146
msgid "Downloading srpm packages"
msgstr ""

#: ../satellite_tools/satsync.py:1152
#, python-format
msgid "   Fetching any missing SRPMs: %s (%s)"
msgstr ""

#: ../satellite_tools/satsync.py:1249
#, python-format
msgid "Diffing source package metadata (what's missing locally?): %s"
msgstr ""

#: ../satellite_tools/satsync.py:1260
msgid "Downloading source package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1338 ../satellite_tools/satsync.py:2027
#, python-format
msgid "Unable to save file %s: %s"
msgstr ""

#. for
#. Retried a number of times and it still failed; log the
#. file as being failed and move on
#: ../satellite_tools/satsync.py:1345
#, python-format
msgid "Failed to fetch file %s"
msgstr ""

#: ../satellite_tools/satsync.py:1350
msgid "Downloading kickstartable trees metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1365
msgid "Downloading kickstartable trees files"
msgstr ""

#: ../satellite_tools/satsync.py:1504
#, python-format
msgid "Grabbing all patches for channel %s"
msgstr ""

#: ../satellite_tools/satsync.py:1554
msgid "Downloading patch data"
msgstr ""

#: ../satellite_tools/satsync.py:1556
msgid "Forcing download of all patch data for requested channels."
msgstr ""

#: ../satellite_tools/satsync.py:1571
msgid "Downloading patch data complete"
msgstr ""

#: ../satellite_tools/satsync.py:1576 ../satellite_tools/satsync.py:1597
msgid "Downloading:"
msgstr ""

#: ../satellite_tools/satsync.py:1579
msgid " - complete"
msgstr ""

#: ../satellite_tools/satsync.py:1624
msgid "Importing source package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1627
msgid "Importing package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1635
msgid "Importing:  "
msgstr ""

#. not in the cache
#: ../satellite_tools/satsync.py:1703
msgid ""
"Package Not Found in Cache, Clear the Cache "
"to                                  Regenerate it."
msgstr ""

#: ../satellite_tools/satsync.py:1709
msgid "Importing channel patches"
msgstr ""

#: ../satellite_tools/satsync.py:1714
#, python-format
msgid "Importing %s patches for channel %s."
msgstr ""

#. Incomplete configuration
#: ../satellite_tools/satsync.py:2113
msgid "ERROR: server.mount_point not set in the configuration file"
msgstr ""

#: ../satellite_tools/satsync.py:2117
#, python-format
msgid "ERROR: server.mount_point %s do not exist"
msgstr ""

#: ../satellite_tools/satsync.py:2122
#, python-format
msgid "ERROR: path under server.mount_point (%s)  do not exist"
msgstr ""

#: ../satellite_tools/satsync.py:2199
#, python-format
msgid "Commandline: %s"
msgstr ""

#: ../satellite_tools/satsync.py:2202
#, python-format
msgid ""
"DEBUG ONLY: max. batch-size for XML/database-import processing (1..%s).\"man "
"satellite-sync\" for more information."
msgstr ""

#: ../satellite_tools/satsync.py:2205
msgid "alternative SSL CA Cert (fullpath to cert file)"
msgstr ""

#: ../satellite_tools/satsync.py:2207
msgid "process data for this channel only"
msgstr ""

#: ../satellite_tools/satsync.py:2209
msgid ""
"disk dump will be considered to be a full export; see \"man satellite-sync\" "
"for more information."
msgstr ""

#: ../satellite_tools/satsync.py:2212
msgid "existing custom channels will also be synced (unless -c is used)"
msgstr ""

#: ../satellite_tools/satsync.py:2214
#, python-format
msgid ""
"override debug level set in /etc/rhn/rhn.conf (which is currently set at %s)."
msgstr ""

#: ../satellite_tools/satsync.py:2216
#, python-format
msgid "requested version of XML dump (default: %s)"
msgstr ""

#: ../satellite_tools/satsync.py:2218
msgid "e-mail a report of what was synced/imported"
msgstr ""

#: ../satellite_tools/satsync.py:2220
msgid "forcibly process all (not a diff of) patch metadata"
msgstr ""

#: ../satellite_tools/satsync.py:2222
msgid "Do not use an http proxy under any circumstances."
msgstr ""

#: ../satellite_tools/satsync.py:2224
msgid "alternative http proxy (hostname:port)"
msgstr ""

#: ../satellite_tools/satsync.py:2226
msgid "alternative http proxy username"
msgstr ""

#: ../satellite_tools/satsync.py:2228
msgid "alternative http proxy password"
msgstr ""

#: ../satellite_tools/satsync.py:2230
msgid "parent SUSE Manager to import content from"
msgstr ""

#: ../satellite_tools/satsync.py:2232
msgid "list all available channels and exit"
msgstr ""

#: ../satellite_tools/satsync.py:2234
msgid "help on all error codes mgr-inter-sync returns"
msgstr ""

#: ../satellite_tools/satsync.py:2236
msgid "source mount point for import - disk update only"
msgstr ""

#: ../satellite_tools/satsync.py:2238
msgid "do not process patch data"
msgstr ""

#: ../satellite_tools/satsync.py:2240
msgid "do not process kickstart data (provisioning only)"
msgstr ""

#: ../satellite_tools/satsync.py:2242
msgid "do not process full package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:2244
msgid "do not download, or process any RPMs"
msgstr ""

#: ../satellite_tools/satsync.py:2246
msgid "turn off SSL (not recommended)"
msgstr ""

#: ../satellite_tools/satsync.py:2248
msgid "org to which the sync imports data. defaults to the admin account"
msgstr ""

#: ../satellite_tools/satsync.py:2250
msgid "print the configuration and exit"
msgstr ""

#: ../satellite_tools/satsync.py:2252
msgid "alternative server with which to connect (hostname)"
msgstr ""

#: ../satellite_tools/satsync.py:2254
msgid "synchronize to this step (man satellite-sync for more info)"
msgstr ""

#: ../satellite_tools/satsync.py:2256
msgid "write complete data to tempfile before streaming to remainder of app"
msgstr ""

#: ../satellite_tools/satsync.py:2258
msgid "DEBUG ONLY: alternative path to digital system id"
msgstr ""

#: ../satellite_tools/satsync.py:2260
msgid "alternative email address(es) for sync output (--email option)"
msgstr ""

#: ../satellite_tools/satsync.py:2262
msgid "do not remove rpms when importing from local dump"
msgstr ""

#: ../satellite_tools/satsync.py:2264
msgid ""
"the fully qualified domain name of the master Satellite. Valid with --mount-"
"point only. Required if you want to import org data and channel permissions."
msgstr ""

#: ../satellite_tools/satsync.py:2274
#, python-format
msgid "ERROR: these arguments make no sense in this context (try --help): %s"
msgstr ""

#. An SQL error is fatal... crash and burn
#: ../satellite_tools/satsync.py:2286
#, python-format
msgid "ERROR: Can't connect to the database: %s"
msgstr ""

#: ../satellite_tools/satsync.py:2287
msgid "ERROR: Check if your database is running."
msgstr ""

#: ../satellite_tools/satsync.py:2322
#, python-format
msgid "ERROR: --debug-level takes an in integer value within the range %s."
msgstr ""

#: ../satellite_tools/satsync.py:2324
msgid "  0  - little logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2325
msgid "  1  - minimal logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2326
msgid "  2  - normal level of logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2327
msgid "  3  - lots of logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2328
msgid "  4+ - excessive logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2341
msgid "ERROR: The --master option is only valid with the --mount-point option"
msgstr ""

#: ../satellite_tools/satsync.py:2351
#, python-format
msgid "ERROR: Unable to lookup Org Id %s"
msgstr ""

#: ../satellite_tools/satsync.py:2360
msgid ""
"WARNING: --list-channels option overrides any --step option. --step ignored."
msgstr ""

#: ../satellite_tools/satsync.py:2375
#, python-format
msgid ""
"ERROR: '%s' is not a valid step. See 'man mgr-inter-sync' for more detail."
msgstr ""

#: ../satellite_tools/satsync.py:2407
msgid ""
"ERROR: No channels currently imported; try mgr-inter-sync --list-channels; "
"then mgr-inter-sync -c chn0 -c chn1..."
msgstr ""

#. int(None) --> TypeError
#. int('a')  --> ValueError
#: ../satellite_tools/satsync.py:2457 ../satellite_tools/satsync.py:2461
msgid "ERROR: --batch-size must have a value within the range: 1..50"
msgstr ""

#: ../satellite_tools/satsync.py:2469
#, python-format
msgid "ERROR: no such directory %s"
msgstr ""

#: ../satellite_tools/satsync.py:2474
msgid "Error Codes: Returned codes means:"
msgstr ""

#: ../satellite_tools/satsync.py:2475
msgid " -1  - Could not lock file or KeyboardInterrupt or SystemExit"
msgstr ""

#: ../satellite_tools/satsync.py:2476
msgid "  0  - User interrupted or intentional exit"
msgstr ""

#: ../satellite_tools/satsync.py:2477
msgid "  1  - attempting to run more than one instance of mgr-inter-sync."
msgstr ""

#: ../satellite_tools/satsync.py:2478
msgid "  2  - Unable to find synchronization tools."
msgstr ""

#: ../satellite_tools/satsync.py:2479
msgid "  3  - a general socket exception occurred"
msgstr ""

#: ../satellite_tools/satsync.py:2480
msgid "  4  - an SSL error occurred. Recheck your SSL settings."
msgstr ""

#: ../satellite_tools/satsync.py:2481
msgid "  5  - ISS error"
msgstr ""

#: ../satellite_tools/satsync.py:2482
msgid "  6  - unhandled exception occurred"
msgstr ""

#: ../satellite_tools/satsync.py:2483
msgid "  7  - unknown sync error"
msgstr ""

#: ../satellite_tools/satsync.py:2484
msgid "  8  - ERROR: must be root to execute"
msgstr ""

#: ../satellite_tools/satsync.py:2485
msgid "  9  - rpclib fault during synchronization init"
msgstr ""

#: ../satellite_tools/satsync.py:2486
msgid "  10 - synchronization init error"
msgstr ""

#: ../satellite_tools/satsync.py:2487
msgid "  11 - Error parsing XML stream"
msgstr ""

#: ../satellite_tools/satsync.py:2488
msgid "  12 - Channel do not exist"
msgstr ""

#: ../satellite_tools/satsync.py:2489
msgid "  13 - SQL error during importing package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:2490
msgid "  14 - SQL error during linking channel packages"
msgstr ""

#: ../satellite_tools/satsync.py:2491
msgid "  15 - SQL error during xml processing"
msgstr ""

#: ../satellite_tools/satsync.py:2492
msgid "  16 - server.mount_point not set in the configuration file"
msgstr ""

#: ../satellite_tools/satsync.py:2493
msgid ""
"  17 - SQL error during retrieving the channels already imported in the SUSE "
"Manager database"
msgstr ""

#: ../satellite_tools/satsync.py:2494
msgid "  18 - Wrong db connection string in rhn.conf"
msgstr ""

#: ../satellite_tools/satsync.py:2495
msgid "  19 - Bad arguments"
msgstr ""

#: ../satellite_tools/satsync.py:2496
msgid "  20 - Could not connect to db."
msgstr ""

#: ../satellite_tools/satsync.py:2497
msgid "  21 - Bad debug level"
msgstr ""

#: ../satellite_tools/satsync.py:2498
msgid "  22 - Not valid step"
msgstr ""

#: ../satellite_tools/satsync.py:2499
msgid "  24 - no such file"
msgstr ""

#: ../satellite_tools/satsync.py:2500
msgid "  25 - no such directory"
msgstr ""

#: ../satellite_tools/satsync.py:2501
msgid "  26 - mount_point does not exist"
msgstr ""

#: ../satellite_tools/satsync.py:2502
msgid "  27 - No such org"
msgstr ""

#: ../satellite_tools/satsync.py:2503
msgid "  28 - error: --master is only valid with --mount-point"
msgstr ""

#: ../satellite_tools/satsync.py:2510
#, python-format
msgid "ERROR: unknown dump version, try one of %s"
msgstr ""
   07070100000083000081B40000000000000000000000016290A0C10000B71E000000000000000000000000000000000000001B00000000spacewalk-backend/po/pa.po    # SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
#
# Translators:
# Amanpreet Singh Alam <aalam@redhat.com>, 2004.
# Amanpreet Singh Brar <amanpreetalam@yahoo.com>, 2005.
# Automatically generated <punjablinux@netscape.net>, 2004.
# Harmeet Singh Phulewala <harmeetphulewala@yahoo.com>, 2005.
# Jaswinder Singh <jsingh@redhat.com>, 2006, 2007.
msgid ""
msgstr ""
"Project-Id-Version: Spacewalk\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-10-16 13:34+0200\n"
"PO-Revision-Date: 2011-03-04 16:08+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Panjabi (Punjabi) <punjabi-users@lists.sf.net>\n"
"Language: pa\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"

#: ../server/apacheAuth.py:66
#, python-format
msgid "incomplete proxy authentication token: %s"
msgstr ""

#: ../server/apacheAuth.py:84
#, python-format
msgid "Sent proxy signature %s does not match ours %s."
msgstr ""

#: ../server/apacheAuth.py:119
msgid "declined proxy authentication"
msgstr ""

#: ../server/apacheRequest.py:59
#, python-format
msgid "Invalid request received (%s)."
msgstr ""

#: ../server/apacheRequest.py:120
#, python-format
msgid ""
"IMPORTANT MESSAGE FOLLOWS:\n"
"%s"
msgstr ""

#: ../server/apacheRequest.py:149
#, python-format
msgid ""
"While running '%s': caught\n"
"%s : %s\n"
msgstr ""

#: ../server/apacheRequest.py:606
#, python-format
msgid "Invalid URI %s"
msgstr ""

#: ../server/configFilesHandler.py:129 ../server/handlers/app/packages.py:192
#: ../server/handlers/xmlrpc/registration.py:215
#: ../server/handlers/xmlrpc/registration.py:1168
#: ../server/handlers/xmlrpc/registration.py:1307
#, python-format
msgid ""
"\n"
"                   %s Account has been deactivated on this server.\n"
"                   Please contact your Org administrator for more help."
msgstr ""

#: ../server/handlers/applet/applet.py:78
#, python-brace-format
msgid "Your system was not found in the {PRODUCT_NAME} database"
msgstr ""

#: ../server/handlers/sat/auth.py:45
msgid "ISS is disabled on this server."
msgstr ""

#: ../server/handlers/sat/auth.py:50
#, python-format
msgid "Server \"%s\" is not enabled for ISS."
msgstr ""

#: ../server/handlers/xmlrpc/errata.py:64
#, python-format
msgid "Expected a package name, not: %s"
msgstr ""

#: ../server/handlers/xmlrpc/errata.py:115
#, python-format
msgid "Expected a package, not: %s"
msgstr ""

#: ../server/handlers/xmlrpc/proxy.py:65
#, python-format
msgid "SUSE Manager Proxy service not enabled for server profile: \"%s\""
msgstr ""

#: ../server/handlers/xmlrpc/proxy.py:85
msgid "Invalid session key"
msgstr ""

#: ../server/handlers/xmlrpc/proxy.py:93
msgid "This server ID no longer exists"
msgstr ""

#: ../server/handlers/xmlrpc/queue.py:433
#, python-format
msgid "Invalid action value type %s (%s)"
msgstr ""

#: ../server/handlers/xmlrpc/queue.py:464
#, python-format
msgid "Action %s does not belong to server %s"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:194
msgid "Required data missing"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:198
msgid "Required members missing"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:207
msgid "Attempt to register a system to an invalid username"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:839
msgid "Invalid system release version requested"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1063
msgid ""
"Unable to find a valid network interface, both ipaddr and ip6addr not found."
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1115
#, python-brace-format
msgid "{PRODUCT_NAME} Welcome Message"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1125
msgid "Privacy Statement"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1146
msgid "Expected a dictionary as a product argument"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1374
#, python-format
msgid "Invalid value '%s' for %s (%s)"
msgstr ""

#: ../server/handlers/xmlrpc/scap.py:104
msgid "Invalid system_id/action_id pair."
msgstr ""

#: ../server/handlers/xmlrpc/up2date.py:233
#, python-format
msgid "Invalid value %s (%s)"
msgstr ""

#: ../server/importlib/userAuth.py:98
msgid "You are not authorized to manage packages in the null org"
msgstr ""

#: ../server/importlib/userAuth.py:103
#, python-format
msgid "You are not allowed to manage packages in the %s org"
msgstr ""

#: ../server/importlib/userAuth.py:121
msgid "You are not allowed to perform administrative tasks"
msgstr ""

#: ../server/importlib/userAuth.py:144
#, python-format
msgid ""
"You are not allowed to manage channel %s, or that channel does not exist"
msgstr ""

#: ../server/importlib/userAuth.py:204
#, python-format
msgid ""
"\n"
"               %s Account has been deactivated on this server.\n"
"               Please contact your Org administrator for more help."
msgstr ""

#: ../server/rhnChannel.py:1992
#, python-format
msgid ""
"Your account does not have access to any channels matching "
"(release='%(release)s', arch='%(arch)s')%(www_activation)s"
msgstr ""

#: ../server/rhnChannel.py:2002
msgid ""
"\n"
"If you have a registration number, please register with it first at http://"
"www.redhat.com/apps/activate/ and then try again.\n"
"\n"
msgstr ""

#: ../server/rhnChannel.py:2012
#, python-format
msgid "Insufficient subscription permissions for release (%s, %s"
msgstr ""

#. Various messages that can be reused
#.
#. bretm 02/07/2007 -- when we have better old-client documentation, probably
#. will be safe to get rid of all this crap
#: ../server/rhnChannel.py:2276 ../server/rhnChannel.py:2287
#: ../server/rhnChannel.py:2302
msgid "System Registered but Inactive"
msgstr ""

#: ../server/rhnChannel.py:2277
#, python-format
msgid ""
"\n"
"Invalid Architecture and OS release combination (%s, %s).\n"
"Your system has been registered, but will not receive updates\n"
"because it is not subscribed to a channel. If you have not yet\n"
"activated your product for service, please visit our website at:\n"
"\n"
"     http://www.redhat.com/apps/activate/\n"
"\n"
"...to activate your product."
msgstr ""

#: ../server/rhnChannel.py:2288
#, python-format
msgid ""
"\n"
"Invalid Architecture and OS release combination (%s, %s).\n"
"Your system has been registered, but will not receive updates\n"
"because it could not be subscribed to a base channel.\n"
"Please contact your organization administrator for assistance.\n"
msgstr ""

#: ../server/rhnChannel.py:2295
#, python-format
msgid ""
"\n"
"  This system has been successfully registered, but is not yet entitled\n"
"  to service.  To entitle this system to service, login to the web site at:\n"
"\n"
"  %(entitlement_url)s\n"
msgstr ""

#: ../server/rhnChannel.py:2303
#, python-format
msgid ""
"\n"
"  This system has been successfully registered, but no service entitlements\n"
"  were available.  To entitle this system to service, login to the web site "
"at:\n"
"\n"
"  %(entitlement_url)s\n"
msgstr ""

#: ../server/rhnHandler.py:62
msgid "Please run rhn_register as root on this client"
msgstr ""

#: ../server/rhnHandler.py:75
#, python-format
msgid "Service not enabled for system profile: \"%s\""
msgstr ""

#: ../server/rhnPackage.py:49 ../server/rhnPackage.py:87
#: ../server/rhnPackage.py:107 ../server/rhnPackage.py:158
#, python-format
msgid "Invalid RPM package %s requested"
msgstr ""

#: ../server/rhnPackage.py:112
msgid "Package not found"
msgstr ""

#: ../server/rhnServer/server_class.py:97
#, python-format
msgid "Architecture `%s' is not supported"
msgstr ""

#: ../server/rhnServer/server_token.py:78
#, python-format
msgid "Token `%s' has more than one base channel assigned"
msgstr ""

#: ../server/rhnServer/server_token.py:80
msgid "Conflicting base channels"
msgstr ""

#: ../server/rhnServer/server_token.py:190
#, python-format
msgid "Failed to add server to group %s"
msgstr ""

#: ../server/rhnServer/server_token.py:503
#, python-format
msgid "Maximum usage count of %s reached"
msgstr ""

#: ../server/rhnServer/server_token.py:744
msgid ""
"Stacking of re-registration tokens with different base entitlements is not "
"supported"
msgstr ""

#: ../server/rhnServer/server_token.py:811
#, python-format
msgid "Could not find token '%s'"
msgstr ""

#. Cannot use activation keys from different orgs
#: ../server/rhnServer/server_token.py:843
msgid "Tokens from mismatching orgs"
msgstr ""

#. Two tokens with different kickstart sessions
#: ../server/rhnServer/server_token.py:853
msgid "Kickstart session mismatch"
msgstr ""

#: ../server/rhnServer/server_token.py:877
msgid "Stacking of re-registration tokens is not supported"
msgstr ""

#: ../server/rhnUser.py:289 ../server/rhnUser.py:292
msgid "Invalid username/password combination"
msgstr ""

#. nope, not reserved either
#: ../server/rhnUser.py:467
#, python-format
msgid "Username `%s' has not been reserved"
msgstr ""

#. New accounts have to specify an e-mail address
#: ../server/rhnUser.py:473
msgid "E-mail address not specified"
msgstr ""

#: ../server/rhnUser.py:509
#, python-format
msgid "username should be at least %d characters"
msgstr ""

#: ../server/rhnUser.py:512
#, python-format
msgid "username should be less than %d characters"
msgstr ""

#: ../server/rhnUser.py:523
#, python-format
msgid "username = `%s', invalid character `%s'"
msgstr ""

#: ../server/rhnUser.py:542
#, python-format
msgid "Please limit your e-mail address to %s chars"
msgstr ""

#: ../server/rhnUser.py:623
#, python-format
msgid "password must be at least %d characters"
msgstr ""

#: ../server/rhnUser.py:626
#, python-format
msgid "Password must be shorter than %d characters"
msgstr ""

#: ../server/rhnUser.py:644
#, python-format
msgid "password contains character `%s'"
msgstr ""

#: ../server/rhnUser.py:651
#, python-format
msgid "username should be at least %d characters long"
msgstr ""

#: ../server/rhnUser.py:662
#, python-format
msgid "Cannot register usernames ending with %s"
msgstr ""

#. 0-999: Red Hat client/client-like interaction errors:
#: ../common/rhnException.py:53
msgid "This does not appear to be a valid username."
msgstr ""

#: ../common/rhnException.py:54
msgid "Invalid username and password combination."
msgstr ""

#: ../common/rhnException.py:55
msgid "This login is already taken, or the password is incorrect."
msgstr ""

#: ../common/rhnException.py:56
msgid "Permission denied."
msgstr ""

#: ../common/rhnException.py:57
msgid "Object not found."
msgstr ""

#: ../common/rhnException.py:58
msgid "Invalid System Digital ID."
msgstr ""

#: ../common/rhnException.py:59
msgid "Invalid System Credentials."
msgstr ""

#: ../common/rhnException.py:60
msgid "Could not retrieve user data from database."
msgstr ""

#: ../common/rhnException.py:61
msgid "Valid username required."
msgstr ""

#: ../common/rhnException.py:62
msgid "Valid password required."
msgstr ""

#: ../common/rhnException.py:63
msgid "Minimum username length violation."
msgstr ""

#: ../common/rhnException.py:64
msgid "Minimum password length violation."
msgstr ""

#: ../common/rhnException.py:65
msgid "The username contains invalid characters."
msgstr ""

#: ../common/rhnException.py:66
msgid "File not found."
msgstr ""

#: ../common/rhnException.py:67
msgid "Architecture and OS version combination is not supported."
msgstr ""

#: ../common/rhnException.py:68
msgid "Could not retrieve system data from database."
msgstr ""

#: ../common/rhnException.py:69
msgid "Invalid arguments passed to function."
msgstr ""

#: ../common/rhnException.py:70
msgid "Unable to retrieve requested entry."
msgstr ""

#: ../common/rhnException.py:71
msgid "Could not update database entry."
msgstr ""

#: ../common/rhnException.py:72
msgid "Unsupported server architecture."
msgstr ""

#: ../common/rhnException.py:73
#, python-format
msgid ""
"\n"
"     The anonymous server functionality is no longer available.\n"
"\n"
"     Please re-register this system by running mgr_register as root.\n"
"     Please visit https://%(hostname)s/rhn/systems/SystemEntitlements.do\n"
"     or login at https://%(hostname)s, and from the \"Overview\" tab,\n"
"     select \"Subscription Management\" to enable the service for this "
"system.\n"
"     "
msgstr ""

#: ../common/rhnException.py:81
msgid "Record not available in the database."
msgstr ""

#: ../common/rhnException.py:82
msgid "Invalid value for entry."
msgstr ""

#: ../common/rhnException.py:83
#, python-format
msgid ""
"\n"
"     This system does not have a valid entitlement for SUSE Manager.\n"
"     Please visit https://%(hostname)s/rhn/systems/SystemEntitlements.do\n"
"     or login at https://%(hostname)s, and from the \"Overview\" tab,\n"
"     select \"Subscription Management\" to enable the service for this "
"system.\n"
"     "
msgstr ""

#: ../common/rhnException.py:89
msgid "Channel error"
msgstr ""

#: ../common/rhnException.py:90
msgid "Client session token is invalid."
msgstr ""

#: ../common/rhnException.py:91
msgid "Client session token has expired."
msgstr ""

#: ../common/rhnException.py:92
msgid "You are not authorized to retrieve the requested object."
msgstr ""

#: ../common/rhnException.py:93
msgid "Invalid action"
msgstr ""

#: ../common/rhnException.py:94
msgid "You are not allowed to perform administrative tasks on this system."
msgstr ""

#: ../common/rhnException.py:96
msgid "The system is already subscribed to the specified channel."
msgstr ""

#: ../common/rhnException.py:97
msgid "The system is not currently subscribed to the specified channel."
msgstr ""

#: ../common/rhnException.py:98
msgid "The specified channel does not exist."
msgstr ""

#: ../common/rhnException.py:99
msgid "Invalid channel version."
msgstr ""

#: ../common/rhnException.py:100
msgid ""
"\n"
"     User group membership limits exceeded.\n"
"\n"
"     The current settings for your account do not allow you to add another\n"
"     user account. Please check with the organization administrator for "
"your\n"
"     account if the maximum number of users allowed to subscribe to server "
"needs\n"
"     to be changed.\n"
"     "
msgstr ""

#: ../common/rhnException.py:108
msgid ""
"\n"
"     System group membership limits exceeded.\n"
"\n"
"     The current settings for your account do not allow you to add another\n"
"     system profile. Please check with the organization administrator for "
"your\n"
"     account for modifying the maximum number of system profiles that can "
"be\n"
"     subscribed to your account.\n"
"     "
msgstr ""

#: ../common/rhnException.py:116
msgid ""
"\n"
"     Invalid architecture.\n"
"\n"
"     The architecture of the package is not supported by\n"
"     "
msgstr ""

#: ../common/rhnException.py:121
msgid "Invalid RPM header"
msgstr ""

#: ../common/rhnException.py:122
msgid ""
"\n"
"    This system is already registered as a Salt Minion. If you want to "
"register it as a traditional client\n"
"    please delete it first via the web UI or API and then register it using "
"the traditional tools.\n"
"    "
msgstr ""

#. For the uploading tools
#: ../common/rhnException.py:127
msgid "Invalid information uploaded to the server"
msgstr ""

#: ../common/rhnException.py:128
msgid "Error uploading network interfaces configuration."
msgstr ""

#: ../common/rhnException.py:129
msgid ""
"\n"
"     Package Upload Failed due to uniqueness constraint violation.\n"
"     Make sure the package does not have any duplicate dependencies or\n"
"     does not already exists on the server\n"
"     "
msgstr ""

#: ../common/rhnException.py:134
msgid ""
"\n"
"     The --force rhnpush option is disabled on this server.\n"
"     Please contact your SUSE Manager administrator for more help.\n"
"     "
msgstr ""

#. 60-70: token errors
#: ../common/rhnException.py:140
msgid ""
"\n"
"     The activation token specified could not be found on the server.\n"
"     Please retry with a valid key.\n"
"     "
msgstr ""

#: ../common/rhnException.py:144
msgid "Too many systems registered using this registration token"
msgstr ""

#: ../common/rhnException.py:145
msgid "Token contains invalid, obsoleted or insufficient settings"
msgstr ""

#: ../common/rhnException.py:146
msgid "Conflicting activation tokens"
msgstr ""

#. 70-80: channel subscription errors
#: ../common/rhnException.py:149
msgid ""
"\n"
"     No matching base channel found for your system.\n"
"     "
msgstr ""

#: ../common/rhnException.py:152
msgid ""
"\n"
"     You do not have subscription permission to the designated channel.\n"
"     Please refer to your organization's channel or organization\n"
"     administrators for further details.\n"
"     "
msgstr ""

#: ../common/rhnException.py:157
msgid "You can not unsubscribe from base channel."
msgstr ""

#: ../common/rhnException.py:158
msgid "SUSE Manager or Proxy channel can not be subscribed."
msgstr ""

#. 80-90: server group errors
#: ../common/rhnException.py:161
msgid "There was an error while trying to join the system to its groups"
msgstr ""

#. 90-100: entitlement errors
#: ../common/rhnException.py:164
msgid "Unable to entitle system"
msgstr ""

#. 100-109: e-mail and uuid related faults
#: ../common/rhnException.py:167
msgid "Maximum e-mail length violation."
msgstr ""

#: ../common/rhnException.py:168
msgid "This system has been previously registered."
msgstr ""

#: ../common/rhnException.py:169
msgid "Invalid username"
msgstr ""

#. 140-159 applet errors
#: ../common/rhnException.py:172
msgid "Unable to look up server"
msgstr ""

#. 160-179: OSAD errors
#: ../common/rhnException.py:175
msgid "Required argument is missing"
msgstr ""

#. 600-699: RHEL5+ EN errors
#: ../common/rhnException.py:178
msgid "No entitlement information tied to hardware"
msgstr ""

#: ../common/rhnException.py:179
msgid "Installation number is not entitling"
msgstr ""

#. 700-799: Additional user input verification errors.
#: ../common/rhnException.py:182
msgid "Maximum username length violation"
msgstr ""

#: ../common/rhnException.py:183
msgid "Maximum password length violation"
msgstr ""

#: ../common/rhnException.py:184
msgid "This user has read only API access. Action denied."
msgstr ""

#: ../common/rhnException.py:186
msgid "System Name cannot be less than 1 character"
msgstr ""

#. 1000-1999: Proxy specific errors:
#. issued by a Proxy to the client
#: ../common/rhnException.py:190
msgid "SUSE Manager Proxy error."
msgstr ""

#: ../common/rhnException.py:191
msgid "SUSE Manager Proxy unable to login."
msgstr ""

#. issued by a SUSE Manager Server/Satellite to the proxy
#: ../common/rhnException.py:193
msgid ""
"\n"
"     SUSE Manager Proxy system ID does not match a Spacewalk Proxy Server\n"
"     in the database.\n"
"     "
msgstr ""

#: ../common/rhnException.py:197
msgid "SUSE Manager Proxy session token is invalid."
msgstr ""

#: ../common/rhnException.py:198
msgid "SUSE Manager Proxy session token has expired."
msgstr ""

#. 2000-2999: Red Hat Satellite specific errors:
#: ../common/rhnException.py:202
msgid ""
"\n"
"      user creation is not allowed via mgr_register;\n"
"     please contact your sysadmin to have your account created.\n"
"     "
msgstr ""

#: ../common/rhnException.py:206
msgid ""
"\n"
"     This SUSE Manager server is not allowed to use Inter Server Sync on "
"this server\n"
"     "
msgstr ""

#: ../common/rhnException.py:209
msgid ""
"\n"
"     Inter Server Sync is disabled on this SUSE Manager Server.\n"
"     "
msgstr ""

#. 3000-3999: XML dumper errors:
#: ../common/rhnException.py:214
msgid "Invalid datatype passed"
msgstr ""

#: ../common/rhnException.py:215
msgid "Unable to retrieve channel"
msgstr ""

#: ../common/rhnException.py:216
msgid "Unable to retrieve package"
msgstr ""

#: ../common/rhnException.py:217
msgid "Unable to retrieve erratum"
msgstr ""

#: ../common/rhnException.py:218
msgid "File is missing"
msgstr ""

#: ../common/rhnException.py:219
msgid "Function retrieval error"
msgstr ""

#: ../common/rhnException.py:220
msgid "Function execution error"
msgstr ""

#: ../common/rhnException.py:221
msgid "Missing version string"
msgstr ""

#: ../common/rhnException.py:222
msgid "Invalid version string"
msgstr ""

#: ../common/rhnException.py:223
msgid "Mismatching versions"
msgstr ""

#: ../common/rhnException.py:224
msgid "Invalid channel version"
msgstr ""

#: ../common/rhnException.py:225
msgid "No comps file for channel"
msgstr ""

#: ../common/rhnException.py:226
msgid "Unable to retrieve comps file"
msgstr ""

#. 4000 - 4999: config management errors
#: ../common/rhnException.py:229
msgid "Configuration action missing"
msgstr ""

#: ../common/rhnException.py:230
msgid "File too large"
msgstr ""

#: ../common/rhnException.py:231
msgid "File contains binary data"
msgstr ""

#: ../common/rhnException.py:232
msgid "Configuration channel is not empty"
msgstr ""

#: ../common/rhnException.py:233
msgid "Permission error"
msgstr ""

#: ../common/rhnException.py:234
msgid "Content missing for configuration file"
msgstr ""

#: ../common/rhnException.py:235
msgid "Template delimiters not specified"
msgstr ""

#: ../common/rhnException.py:236
msgid "Configuration channel does not exist"
msgstr ""

#: ../common/rhnException.py:237
msgid "Configuration channel already exists"
msgstr ""

#: ../common/rhnException.py:238
msgid "File missing from configuration channel"
msgstr ""

#: ../common/rhnException.py:239
msgid "Different revision of this file is uploaded"
msgstr ""

#: ../common/rhnException.py:240
msgid "File already uploaded to configuration channel"
msgstr ""

#: ../common/rhnException.py:241
msgid "File size exceeds remaining quota space"
msgstr ""

#: ../common/rhnException.py:242
msgid "Full path of file must be specified"
msgstr ""

#: ../common/rhnException.py:243
msgid "Invalid revision number"
msgstr ""

#: ../common/rhnException.py:244
msgid "Cannot compare files of different file type"
msgstr ""

#. 5000 - 5999: client content uploading errors
#. 5000 - 5099: crash reporting errors
#: ../common/rhnException.py:248
msgid "Crash information is invalid or incomplete"
msgstr ""

#: ../common/rhnException.py:249
msgid "Crash file information is invalid or incomplete"
msgstr ""

#: ../common/rhnException.py:250
msgid "Error composing crash directory path"
msgstr ""

#: ../common/rhnException.py:251
msgid "Error composing crash file path"
msgstr ""

#: ../common/rhnException.py:252 ../common/rhnException.py:259
msgid "Invalid content encoding"
msgstr ""

#: ../common/rhnException.py:253
msgid "Invalid crash name"
msgstr ""

#: ../common/rhnException.py:254
msgid "Crash reporting is disabled for this organization"
msgstr ""

#. 5100 - 5199: scap results reporting error
#: ../common/rhnException.py:256
msgid "SCAP results file transfer is invalid or incomplete"
msgstr ""

#: ../common/rhnException.py:257
msgid "Error composing directory path for detailed SCAP results"
msgstr ""

#: ../common/rhnException.py:258
msgid "Error composing file path for detailed SCAP results"
msgstr ""

#: ../common/rhnException.py:306
msgid ""
"\n"
"     An error has occurred while processing your request. If this problem\n"
"     persists please enter a bug report at scc.suse.com.\n"
"     If you choose to submit the bug report, please be sure to include\n"
"     details of what you were trying to do when this error occurred and\n"
"     details on how to reproduce this problem.\n"
msgstr ""

#: ../common/rhnException.py:358
#, python-format
msgid ""
"Error Message:\n"
"    %s\n"
msgstr ""

#: ../common/rhnException.py:360
#, python-format
msgid "Error Class Code: %s\n"
msgstr ""

#: ../common/rhnException.py:363
#, python-format
msgid "Error Class Info: %s\n"
msgstr ""

#: ../common/rhnException.py:365
#, python-format
msgid "Explanation: %s"
msgstr ""

#: ../common/rhnTB.py:205
#, python-format
msgid "ERROR: %s %s: %s"
msgstr ""

#: ../common/rhnTB.py:207
#, python-format
msgid "TRACEBACK: %s"
msgstr ""

#: ../satellite_tools/disk_dumper/iss.py:1294
#: ../satellite_tools/disk_dumper/iss.py:1298
#, python-format
msgid "format of %s should be at least YYYYMMDD.\n"
msgstr ""

#: ../satellite_tools/messages.py:26
#, python-format
msgid ""
"\n"
"ERROR: executing step %s. Error is:\n"
"%s\n"
msgstr ""

#: ../satellite_tools/messages.py:31
#, python-format
msgid ""
"\n"
"ERROR: there was a problem accessing the channel data from your temporary\n"
"       repository. Did you migrate all of the data from the channel ISOs\n"
"       do this directory? If so, please recheck the channels ISOs, ensure\n"
"       that you have them all, and then iteratively remount and repopulate\n"
"       the temporary repository (%s).\n"
msgstr ""

#: ../satellite_tools/messages.py:39
#, python-format
msgid ""
"\n"
"ERROR: there was a problem synchronizing the information.\n"
"       Error message: %s\n"
msgstr ""

#: ../satellite_tools/messages.py:44
#, python-format
msgid ""
"\n"
"ERROR: There was a problem communicating with the ISS Master.\n"
"       Depending on the specific error details, please review your "
"configuration,\n"
"       basic network connectivity, and/or name resolution, and try again.\n"
"       Error message: %s\n"
msgstr ""

#: ../satellite_tools/messages.py:51
#, python-format
msgid ""
"\n"
"ERROR: There was a problem communicating with the ISS Master.\n"
"       If the master satellite is older than v5.3, it does not have ISS "
"capability.\n"
"       Otherwise, depending on the specific error details, please review "
"your\n"
"       configuration, basic network connectivity, and/or name resolution, "
"and try again.\n"
"       Error message: %s\n"
msgstr ""

#: ../satellite_tools/messages.py:59
#, python-format
msgid ""
"\n"
"ERROR: a child-channel cannot be synced without its parent being synced as\n"
"       well. A parent needs to be either (a) previously synced or (b) "
"synced\n"
"       in tandem with the desired child-channel. Missing parents for this\n"
"       transaction:\n"
"       %s\n"
msgstr ""

#: ../satellite_tools/messages.py:67
#, python-format
msgid ""
"\n"
"ERROR: you are not entitled to sync a channel in this set of channels.\n"
"Please contact your SUSE Manager contact\n"
"%s"
msgstr ""

#: ../satellite_tools/messages.py:72
#, python-format
msgid "  ERROR: not enough free space (%s KB) on device."
msgstr ""

#: ../satellite_tools/messages.py:74
#, python-format
msgid "    %3d/%s Fetch successful: %s (%s bytes)"
msgstr ""

#: ../satellite_tools/messages.py:75
#, python-format
msgid "    Extinct package:  %s"
msgstr ""

#: ../satellite_tools/messages.py:76
#, python-format
msgid "   Total size: %s"
msgstr ""

#: ../satellite_tools/messages.py:77
#, python-format
msgid "      Downloaded %s of %s. Estimated remaining time: %s"
msgstr ""

#: ../satellite_tools/messages.py:78
#, python-format
msgid "    Fetch unsuccessful: %s"
msgstr ""

#: ../satellite_tools/messages.py:79
#, python-format
msgid "   RPM fetch summary: %s"
msgstr ""

#: ../satellite_tools/messages.py:80
#, python-format
msgid "       success: %d"
msgstr ""

#: ../satellite_tools/messages.py:81
#, python-format
msgid "       failed:  %d"
msgstr ""

#: ../satellite_tools/messages.py:82
#, python-format
msgid "       extinct: %d"
msgstr ""

#: ../satellite_tools/messages.py:84
#, python-format
msgid "   Retrieving / parsing *relevant* package metadata: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:85
#, python-format
msgid "   Retrieving / parsing errata data: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:86
#, python-format
msgid "   Retrieving / parsing kickstart data: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:87
#, python-format
msgid "   Retrieving / parsing kickstart tree files: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:88
#, python-format
msgid "   Importing *relevant* package metadata: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:89
msgid "   * WARNING: this may be a slow process."
msgstr ""

#: ../satellite_tools/messages.py:90
msgid "Linking packages to channels"
msgstr ""

#: ../satellite_tools/messages.py:91
#, python-format
msgid "   Importing *relevant* errata: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:92
msgid "   No new kickstartable tree to import"
msgstr ""

#: ../satellite_tools/messages.py:93
#, python-format
msgid "Importing kickstartable trees (%d)"
msgstr ""

#: ../satellite_tools/messages.py:94
#, python-format
msgid "Imported kickstartable trees (%d)"
msgstr ""

#: ../satellite_tools/reposync.py:111 ../satellite_tools/satsync.py:439
msgid "+++ sending log as an email +++"
msgstr ""

#: ../satellite_tools/reposync.py:114
#, python-format
msgid "%s sync. report from %s"
msgstr ""

#: ../satellite_tools/reposync.py:124 ../satellite_tools/satsync.py:449
msgid "+++ email requested, but there is nothing to send +++"
msgstr ""

#: ../satellite_tools/rhn_satellite_activate.py:198
#, python-format
msgid ""
"\"%s\" (specified in commandline)\n"
"could not be opened and read:\n"
"%s"
msgstr ""

#: ../satellite_tools/rhn_satellite_activate.py:205
#, python-format
msgid ""
"\"%s\" could not be opened\n"
"and/or written to:\n"
"%s"
msgstr ""

#: ../satellite_tools/satsync.py:258
#, python-format
msgid "No handler for step %s"
msgstr ""

#. Try one more time - this time it should be faster since
#. everything should be cached
#: ../satellite_tools/satsync.py:270
msgid "Environment changed, trying again..."
msgstr ""

#: ../satellite_tools/satsync.py:277
msgid "ERROR: Encountered IntegrityError: \n"
msgstr ""

#: ../satellite_tools/satsync.py:285
msgid "Repeated failures"
msgstr ""

#: ../satellite_tools/satsync.py:290
#, python-format
msgid ""
"    Import complete:\n"
"        Begin time: %s\n"
"        End time:   %s\n"
"        Elapsed:    %s\n"
"          "
msgstr ""

#: ../satellite_tools/satsync.py:311
msgid "hours"
msgstr ""

#: ../satellite_tools/satsync.py:311
msgid "minutes"
msgstr ""

#: ../satellite_tools/satsync.py:311
msgid "seconds"
msgstr ""

#: ../satellite_tools/satsync.py:357
msgid ""
"ERROR: The dump is missing package data, use --no-rpms to skip this step or "
"fix the content to include package data."
msgstr ""

#. the orgs() method doesn't exist; that's fine we just
#. won't sync the orgs
#: ../satellite_tools/satsync.py:404
msgid "The SUSE Manager master does not support syncing orgs data."
msgstr ""

#: ../satellite_tools/satsync.py:404
msgid "Skipping..."
msgstr ""

#: ../satellite_tools/satsync.py:442
#, python-format
msgid "SUSE Manager Inter Server sync. report from %s"
msgstr ""

#: ../satellite_tools/satsync.py:521
msgid " - file-system synchronization"
msgstr ""

#: ../satellite_tools/satsync.py:533 ../satellite_tools/satsync.py:541
msgid " - live synchronization"
msgstr ""

#: ../satellite_tools/satsync.py:534
#, python-brace-format
msgid ""
"ERROR: Live content synchronizing with RHN Classic Hosted is no longer "
"supported.\n"
"Please use the cdn-sync command instead unless you are attempting to sync "
"from another {PRODUCT_NAME} via Inter-Server-Sync (ISS), or from local "
"content on disk via Channel Dump ISOs."
msgstr ""

#: ../satellite_tools/satsync.py:542
#, python-format
msgid "   url: %s"
msgstr ""

#: ../satellite_tools/satsync.py:543
#, python-format
msgid "   debug/output level: %s"
msgstr ""

#: ../satellite_tools/satsync.py:553
msgid "ERROR: this server must be registered with SUSE Manager."
msgstr ""

#: ../satellite_tools/satsync.py:575
#, python-format
msgid "Retrieving / parsing %s data"
msgstr ""

#: ../satellite_tools/satsync.py:585 ../satellite_tools/satsync.py:600
msgid "*** SYSTEM INTERRUPT CALLED ***"
msgstr ""

#: ../satellite_tools/satsync.py:593
msgid "ERROR: fatal parser exception occurred "
msgstr ""

#: ../satellite_tools/satsync.py:594
#, python-format
msgid "(line: %s, col: %s msg: %s)"
msgstr ""

#: ../satellite_tools/satsync.py:598
#, python-format
msgid "ERROR: parser exception occurred: %s"
msgstr ""

#: ../satellite_tools/satsync.py:603
msgid "ERROR: exception (during parse) occurred: "
msgstr ""

#: ../satellite_tools/satsync.py:604
#, python-format
msgid ""
"   Encountered some errors with %s data (see logs (%s) for more information)"
msgstr ""

#: ../satellite_tools/satsync.py:606
#, python-format
msgid "   Encountered some errors with %s data:"
msgstr ""

#: ../satellite_tools/satsync.py:607
#, python-format
msgid "   ------- %s PARSE/IMPORT ERROR -------"
msgstr ""

#: ../satellite_tools/satsync.py:609
msgid "   ---------------------------------------"
msgstr ""

#: ../satellite_tools/satsync.py:612
#, python-format
msgid "%s data complete"
msgstr ""

#: ../satellite_tools/satsync.py:665
msgid "Retrieving / parsing channel data"
msgstr ""

#: ../satellite_tools/satsync.py:718
msgid "Channel data complete"
msgstr ""

#: ../satellite_tools/satsync.py:736
#, python-format
msgid "%10s import from %s"
msgstr ""

#: ../satellite_tools/satsync.py:739
#, python-format
msgid "%10s import from %s - %s"
msgstr ""

#: ../satellite_tools/satsync.py:743
#, python-format
msgid "%10s"
msgstr ""

#: ../satellite_tools/satsync.py:750
msgid "p"
msgstr ""

#: ../satellite_tools/satsync.py:752
msgid "."
msgstr ""

#: ../satellite_tools/satsync.py:758
msgid "   p = previously imported/synced channel"
msgstr ""

#: ../satellite_tools/satsync.py:759
msgid "   . = channel not yet imported/synced"
msgstr ""

#: ../satellite_tools/satsync.py:765
msgid "   e = channel no longer supported (end-of-service)"
msgstr ""

#: ../satellite_tools/satsync.py:767
msgid "   ? = channel label invalid --- typo?"
msgstr ""

#: ../satellite_tools/satsync.py:771
#, python-format
msgid "   %s:"
msgstr ""

#: ../satellite_tools/satsync.py:772
#, python-format
msgid "      %s %-40s %4s %s"
msgstr ""

#: ../satellite_tools/satsync.py:773
msgid "base-channels"
msgstr ""

#: ../satellite_tools/satsync.py:786 ../satellite_tools/satsync.py:1603
msgid "NONE RELEVANT"
msgstr ""

#: ../satellite_tools/satsync.py:808
msgid "end-of-service"
msgstr ""

#: ../satellite_tools/satsync.py:809
msgid "e"
msgstr ""

#: ../satellite_tools/satsync.py:815
msgid "   typos:"
msgstr ""

#: ../satellite_tools/satsync.py:816
msgid "?"
msgstr ""

#: ../satellite_tools/satsync.py:831
#, python-format
msgid "XXX: imported channels: %s"
msgstr ""

#: ../satellite_tools/satsync.py:832
#, python-format
msgid "XXX:   cached channels: %s"
msgstr ""

#: ../satellite_tools/satsync.py:837
msgid "XXX: list channels called"
msgstr ""

#: ../satellite_tools/satsync.py:855
msgid "ERROR: these channels either do not exist or are not available:"
msgstr ""

#: ../satellite_tools/satsync.py:859
#, python-format
msgid "       (to see a list of channel labels: %s --list-channels)"
msgstr ""

#: ../satellite_tools/satsync.py:904
#, python-format
msgid "   Retrieving / parsing short package metadata: %s (%s)"
msgstr ""

#: ../satellite_tools/satsync.py:965
#, python-format
msgid "Diffing package metadata (what's missing locally?): %s"
msgstr ""

#: ../satellite_tools/satsync.py:971 ../satellite_tools/satsync.py:1254
msgid "Diffing:    "
msgstr ""

#: ../satellite_tools/satsync.py:988
msgid "ERROR: incremental dump skipped"
msgstr ""

#: ../satellite_tools/satsync.py:1079
msgid "Downloading rpm packages"
msgstr ""

#: ../satellite_tools/satsync.py:1084
#, python-format
msgid "   Fetching any missing RPMs: %s (%s)"
msgstr ""

#: ../satellite_tools/satsync.py:1085 ../satellite_tools/satsync.py:1153
msgid "NONE MISSING"
msgstr ""

#: ../satellite_tools/satsync.py:1094
msgid "Processing rpm packages complete"
msgstr ""

#: ../satellite_tools/satsync.py:1121
msgid "Downloading package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1146
msgid "Downloading srpm packages"
msgstr ""

#: ../satellite_tools/satsync.py:1152
#, python-format
msgid "   Fetching any missing SRPMs: %s (%s)"
msgstr ""

#: ../satellite_tools/satsync.py:1249
#, python-format
msgid "Diffing source package metadata (what's missing locally?): %s"
msgstr ""

#: ../satellite_tools/satsync.py:1260
msgid "Downloading source package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1338 ../satellite_tools/satsync.py:2027
#, python-format
msgid "Unable to save file %s: %s"
msgstr ""

#. for
#. Retried a number of times and it still failed; log the
#. file as being failed and move on
#: ../satellite_tools/satsync.py:1345
#, python-format
msgid "Failed to fetch file %s"
msgstr ""

#: ../satellite_tools/satsync.py:1350
msgid "Downloading kickstartable trees metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1365
msgid "Downloading kickstartable trees files"
msgstr ""

#: ../satellite_tools/satsync.py:1504
#, python-format
msgid "Grabbing all patches for channel %s"
msgstr ""

#: ../satellite_tools/satsync.py:1554
msgid "Downloading patch data"
msgstr ""

#: ../satellite_tools/satsync.py:1556
msgid "Forcing download of all patch data for requested channels."
msgstr ""

#: ../satellite_tools/satsync.py:1571
msgid "Downloading patch data complete"
msgstr ""

#: ../satellite_tools/satsync.py:1576 ../satellite_tools/satsync.py:1597
msgid "Downloading:"
msgstr ""

#: ../satellite_tools/satsync.py:1579
msgid " - complete"
msgstr ""

#: ../satellite_tools/satsync.py:1624
msgid "Importing source package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1627
msgid "Importing package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1635
msgid "Importing:  "
msgstr ""

#. not in the cache
#: ../satellite_tools/satsync.py:1703
msgid ""
"Package Not Found in Cache, Clear the Cache "
"to                                  Regenerate it."
msgstr ""

#: ../satellite_tools/satsync.py:1709
msgid "Importing channel patches"
msgstr ""

#: ../satellite_tools/satsync.py:1714
#, python-format
msgid "Importing %s patches for channel %s."
msgstr ""

#. Incomplete configuration
#: ../satellite_tools/satsync.py:2113
msgid "ERROR: server.mount_point not set in the configuration file"
msgstr ""

#: ../satellite_tools/satsync.py:2117
#, python-format
msgid "ERROR: server.mount_point %s do not exist"
msgstr ""

#: ../satellite_tools/satsync.py:2122
#, python-format
msgid "ERROR: path under server.mount_point (%s)  do not exist"
msgstr ""

#: ../satellite_tools/satsync.py:2199
#, python-format
msgid "Commandline: %s"
msgstr ""

#: ../satellite_tools/satsync.py:2202
#, python-format
msgid ""
"DEBUG ONLY: max. batch-size for XML/database-import processing (1..%s).\"man "
"satellite-sync\" for more information."
msgstr ""

#: ../satellite_tools/satsync.py:2205
msgid "alternative SSL CA Cert (fullpath to cert file)"
msgstr ""

#: ../satellite_tools/satsync.py:2207
msgid "process data for this channel only"
msgstr ""

#: ../satellite_tools/satsync.py:2209
msgid ""
"disk dump will be considered to be a full export; see \"man satellite-sync\" "
"for more information."
msgstr ""

#: ../satellite_tools/satsync.py:2212
msgid "existing custom channels will also be synced (unless -c is used)"
msgstr ""

#: ../satellite_tools/satsync.py:2214
#, python-format
msgid ""
"override debug level set in /etc/rhn/rhn.conf (which is currently set at %s)."
msgstr ""

#: ../satellite_tools/satsync.py:2216
#, python-format
msgid "requested version of XML dump (default: %s)"
msgstr ""

#: ../satellite_tools/satsync.py:2218
msgid "e-mail a report of what was synced/imported"
msgstr ""

#: ../satellite_tools/satsync.py:2220
msgid "forcibly process all (not a diff of) patch metadata"
msgstr ""

#: ../satellite_tools/satsync.py:2222
msgid "Do not use an http proxy under any circumstances."
msgstr ""

#: ../satellite_tools/satsync.py:2224
msgid "alternative http proxy (hostname:port)"
msgstr ""

#: ../satellite_tools/satsync.py:2226
msgid "alternative http proxy username"
msgstr ""

#: ../satellite_tools/satsync.py:2228
msgid "alternative http proxy password"
msgstr ""

#: ../satellite_tools/satsync.py:2230
msgid "parent SUSE Manager to import content from"
msgstr ""

#: ../satellite_tools/satsync.py:2232
msgid "list all available channels and exit"
msgstr ""

#: ../satellite_tools/satsync.py:2234
msgid "help on all error codes mgr-inter-sync returns"
msgstr ""

#: ../satellite_tools/satsync.py:2236
msgid "source mount point for import - disk update only"
msgstr ""

#: ../satellite_tools/satsync.py:2238
msgid "do not process patch data"
msgstr ""

#: ../satellite_tools/satsync.py:2240
msgid "do not process kickstart data (provisioning only)"
msgstr ""

#: ../satellite_tools/satsync.py:2242
msgid "do not process full package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:2244
msgid "do not download, or process any RPMs"
msgstr ""

#: ../satellite_tools/satsync.py:2246
msgid "turn off SSL (not recommended)"
msgstr ""

#: ../satellite_tools/satsync.py:2248
msgid "org to which the sync imports data. defaults to the admin account"
msgstr ""

#: ../satellite_tools/satsync.py:2250
msgid "print the configuration and exit"
msgstr ""

#: ../satellite_tools/satsync.py:2252
msgid "alternative server with which to connect (hostname)"
msgstr ""

#: ../satellite_tools/satsync.py:2254
msgid "synchronize to this step (man satellite-sync for more info)"
msgstr ""

#: ../satellite_tools/satsync.py:2256
msgid "write complete data to tempfile before streaming to remainder of app"
msgstr ""

#: ../satellite_tools/satsync.py:2258
msgid "DEBUG ONLY: alternative path to digital system id"
msgstr ""

#: ../satellite_tools/satsync.py:2260
msgid "alternative email address(es) for sync output (--email option)"
msgstr ""

#: ../satellite_tools/satsync.py:2262
msgid "do not remove rpms when importing from local dump"
msgstr ""

#: ../satellite_tools/satsync.py:2264
msgid ""
"the fully qualified domain name of the master Satellite. Valid with --mount-"
"point only. Required if you want to import org data and channel permissions."
msgstr ""

#: ../satellite_tools/satsync.py:2274
#, python-format
msgid "ERROR: these arguments make no sense in this context (try --help): %s"
msgstr ""

#. An SQL error is fatal... crash and burn
#: ../satellite_tools/satsync.py:2286
#, python-format
msgid "ERROR: Can't connect to the database: %s"
msgstr ""

#: ../satellite_tools/satsync.py:2287
msgid "ERROR: Check if your database is running."
msgstr ""

#: ../satellite_tools/satsync.py:2322
#, python-format
msgid "ERROR: --debug-level takes an in integer value within the range %s."
msgstr ""

#: ../satellite_tools/satsync.py:2324
msgid "  0  - little logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2325
msgid "  1  - minimal logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2326
msgid "  2  - normal level of logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2327
msgid "  3  - lots of logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2328
msgid "  4+ - excessive logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2341
msgid "ERROR: The --master option is only valid with the --mount-point option"
msgstr ""

#: ../satellite_tools/satsync.py:2351
#, python-format
msgid "ERROR: Unable to lookup Org Id %s"
msgstr ""

#: ../satellite_tools/satsync.py:2360
msgid ""
"WARNING: --list-channels option overrides any --step option. --step ignored."
msgstr ""

#: ../satellite_tools/satsync.py:2375
#, python-format
msgid ""
"ERROR: '%s' is not a valid step. See 'man mgr-inter-sync' for more detail."
msgstr ""

#: ../satellite_tools/satsync.py:2407
msgid ""
"ERROR: No channels currently imported; try mgr-inter-sync --list-channels; "
"then mgr-inter-sync -c chn0 -c chn1..."
msgstr ""

#. int(None) --> TypeError
#. int('a')  --> ValueError
#: ../satellite_tools/satsync.py:2457 ../satellite_tools/satsync.py:2461
msgid "ERROR: --batch-size must have a value within the range: 1..50"
msgstr ""

#: ../satellite_tools/satsync.py:2469
#, python-format
msgid "ERROR: no such directory %s"
msgstr ""

#: ../satellite_tools/satsync.py:2474
msgid "Error Codes: Returned codes means:"
msgstr ""

#: ../satellite_tools/satsync.py:2475
msgid " -1  - Could not lock file or KeyboardInterrupt or SystemExit"
msgstr ""

#: ../satellite_tools/satsync.py:2476
msgid "  0  - User interrupted or intentional exit"
msgstr ""

#: ../satellite_tools/satsync.py:2477
msgid "  1  - attempting to run more than one instance of mgr-inter-sync."
msgstr ""

#: ../satellite_tools/satsync.py:2478
msgid "  2  - Unable to find synchronization tools."
msgstr ""

#: ../satellite_tools/satsync.py:2479
msgid "  3  - a general socket exception occurred"
msgstr ""

#: ../satellite_tools/satsync.py:2480
msgid "  4  - an SSL error occurred. Recheck your SSL settings."
msgstr ""

#: ../satellite_tools/satsync.py:2481
msgid "  5  - ISS error"
msgstr ""

#: ../satellite_tools/satsync.py:2482
msgid "  6  - unhandled exception occurred"
msgstr ""

#: ../satellite_tools/satsync.py:2483
msgid "  7  - unknown sync error"
msgstr ""

#: ../satellite_tools/satsync.py:2484
msgid "  8  - ERROR: must be root to execute"
msgstr ""

#: ../satellite_tools/satsync.py:2485
msgid "  9  - rpclib fault during synchronization init"
msgstr ""

#: ../satellite_tools/satsync.py:2486
msgid "  10 - synchronization init error"
msgstr ""

#: ../satellite_tools/satsync.py:2487
msgid "  11 - Error parsing XML stream"
msgstr ""

#: ../satellite_tools/satsync.py:2488
msgid "  12 - Channel do not exist"
msgstr ""

#: ../satellite_tools/satsync.py:2489
msgid "  13 - SQL error during importing package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:2490
msgid "  14 - SQL error during linking channel packages"
msgstr ""

#: ../satellite_tools/satsync.py:2491
msgid "  15 - SQL error during xml processing"
msgstr ""

#: ../satellite_tools/satsync.py:2492
msgid "  16 - server.mount_point not set in the configuration file"
msgstr ""

#: ../satellite_tools/satsync.py:2493
msgid ""
"  17 - SQL error during retrieving the channels already imported in the SUSE "
"Manager database"
msgstr ""

#: ../satellite_tools/satsync.py:2494
msgid "  18 - Wrong db connection string in rhn.conf"
msgstr ""

#: ../satellite_tools/satsync.py:2495
msgid "  19 - Bad arguments"
msgstr ""

#: ../satellite_tools/satsync.py:2496
msgid "  20 - Could not connect to db."
msgstr ""

#: ../satellite_tools/satsync.py:2497
msgid "  21 - Bad debug level"
msgstr ""

#: ../satellite_tools/satsync.py:2498
msgid "  22 - Not valid step"
msgstr ""

#: ../satellite_tools/satsync.py:2499
msgid "  24 - no such file"
msgstr ""

#: ../satellite_tools/satsync.py:2500
msgid "  25 - no such directory"
msgstr ""

#: ../satellite_tools/satsync.py:2501
msgid "  26 - mount_point does not exist"
msgstr ""

#: ../satellite_tools/satsync.py:2502
msgid "  27 - No such org"
msgstr ""

#: ../satellite_tools/satsync.py:2503
msgid "  28 - error: --master is only valid with --mount-point"
msgstr ""

#: ../satellite_tools/satsync.py:2510
#, python-format
msgid "ERROR: unknown dump version, try one of %s"
msgstr ""
  07070100000084000081B40000000000000000000000016290A0C10000E86F000000000000000000000000000000000000001B00000000spacewalk-backend/po/pl.po    # Piotr DrÄ…g <piotrdrag@gmail.com>, 2016. #zanata
# Piotr DrÄ…g <piotrdrag@gmail.com>, 2018. #zanata
msgid ""
msgstr ""
"Project-Id-Version: Spacewalk\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-10-16 13:34+0200\n"
"PO-Revision-Date: 2018-03-16 04:50+0000\n"
"Last-Translator: Piotr DrÄ…g <piotrdrag@gmail.com>\n"
"Language-Team: Polish\n"
"Language: pl\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 "
"|| n%100>=20) ? 1 : 2)\n"
"X-Generator: Zanata 4.6.2\n"

#: ../server/apacheAuth.py:66
#, python-format
msgid "incomplete proxy authentication token: %s"
msgstr "niepeÅ‚ny token uwierzytelnienia poÅ›rednika: %s"

#: ../server/apacheAuth.py:84
#, python-format
msgid "Sent proxy signature %s does not match ours %s."
msgstr "WysÅ‚any podpis poÅ›rednika %s nie zgadza siÄ™ zÂ naszym %s."

#: ../server/apacheAuth.py:119
msgid "declined proxy authentication"
msgstr "odmÃ³wiono uwierzytelnienia poÅ›rednika"

#: ../server/apacheRequest.py:59
#, python-format
msgid "Invalid request received (%s)."
msgstr "Otrzymano nieprawidÅ‚owe Å¼Ä…danie (%s)."

#: ../server/apacheRequest.py:120
#, python-format
msgid ""
"IMPORTANT MESSAGE FOLLOWS:\n"
"%s"
msgstr ""
"WAÅ»NY KOMUNIKAT:\n"
"%s"

#: ../server/apacheRequest.py:149
#, python-format
msgid ""
"While running '%s': caught\n"
"%s : %s\n"
msgstr ""
"Podczas wykonywania â€ž%sâ€: przechwycono\n"
"%s: %s\n"

#: ../server/apacheRequest.py:606
#, python-format
msgid "Invalid URI %s"
msgstr "NieprawidÅ‚owy adres URI %s"

#: ../server/configFilesHandler.py:129 ../server/handlers/app/packages.py:192
#: ../server/handlers/xmlrpc/registration.py:215
#: ../server/handlers/xmlrpc/registration.py:1168
#: ../server/handlers/xmlrpc/registration.py:1307
#, python-format
msgid ""
"\n"
"                   %s Account has been deactivated on this server.\n"
"                   Please contact your Org administrator for more help."
msgstr ""
"\n"
"                   Konto %s zostaÅ‚o dezaktywowane na tym serwerze.\n"
"                   ProszÄ™ skontaktowaÄ‡ siÄ™ zÂ administratorem organizacji po "
"wiÄ™cej pomocy."

#: ../server/handlers/applet/applet.py:78
#, fuzzy, python-brace-format
msgid "Your system was not found in the {PRODUCT_NAME} database"
msgstr "Nie odnaleziono systemu wÂ bazie danych usÅ‚ugi RHN"

#: ../server/handlers/sat/auth.py:45
#, fuzzy
msgid "ISS is disabled on this server."
msgstr "WÂ tej usÅ‚udze Satellite wyÅ‚Ä…czono ISS."

#: ../server/handlers/sat/auth.py:50
#, python-format
msgid "Server \"%s\" is not enabled for ISS."
msgstr "Nie wÅ‚Ä…czono serwera â€ž%sâ€ dla ISS."

#: ../server/handlers/xmlrpc/errata.py:64
#, python-format
msgid "Expected a package name, not: %s"
msgstr "Oczekiwano nazwy pakietu, nie: %s"

#: ../server/handlers/xmlrpc/errata.py:115
#, python-format
msgid "Expected a package, not: %s"
msgstr "Oczekiwano pakietu, nie: %s"

#: ../server/handlers/xmlrpc/proxy.py:65
#, fuzzy, python-format
msgid "SUSE Manager Proxy service not enabled for server profile: \"%s\""
msgstr "UsÅ‚uga Spacewalk Proxy nie jest wÅ‚Ä…czona dla profilu serwera: â€ž%sâ€"

#: ../server/handlers/xmlrpc/proxy.py:85
msgid "Invalid session key"
msgstr "NieprawidÅ‚owy klucz sesji"

#: ../server/handlers/xmlrpc/proxy.py:93
msgid "This server ID no longer exists"
msgstr "Ten identyfikator serwera juÅ¼ nie istnieje"

#: ../server/handlers/xmlrpc/queue.py:433
#, python-format
msgid "Invalid action value type %s (%s)"
msgstr "NieprawidÅ‚owy typ wartoÅ›ci dziaÅ‚ania %s (%s)"

#: ../server/handlers/xmlrpc/queue.py:464
#, python-format
msgid "Action %s does not belong to server %s"
msgstr "DziaÅ‚anie %s nie naleÅ¼y do serwera %s"

#: ../server/handlers/xmlrpc/registration.py:194
msgid "Required data missing"
msgstr "Brak wymaganych danych"

#: ../server/handlers/xmlrpc/registration.py:198
msgid "Required members missing"
msgstr "Brak wymaganych czÅ‚onkÃ³w"

#: ../server/handlers/xmlrpc/registration.py:207
msgid "Attempt to register a system to an invalid username"
msgstr "PrÃ³ba zarejestrowania systemu do nieprawidÅ‚owej nazwy uÅ¼ytkownika"

#: ../server/handlers/xmlrpc/registration.py:839
msgid "Invalid system release version requested"
msgstr "ZaÅ¼Ä…dano nieprawidÅ‚owej wersji wydania systemu"

#: ../server/handlers/xmlrpc/registration.py:1063
msgid ""
"Unable to find a valid network interface, both ipaddr and ip6addr not found."
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1115
#, python-brace-format
msgid "{PRODUCT_NAME} Welcome Message"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1125
#, fuzzy
msgid "Privacy Statement"
msgstr "OÅ›wiadczenie oÂ prywatnoÅ›ci usÅ‚ugi Red Hat Satellite"

#: ../server/handlers/xmlrpc/registration.py:1146
msgid "Expected a dictionary as a product argument"
msgstr "Oczekiwano sÅ‚ownika jako parametr produktu"

#: ../server/handlers/xmlrpc/registration.py:1374
#, python-format
msgid "Invalid value '%s' for %s (%s)"
msgstr "NieprawidÅ‚owa wartoÅ›Ä‡ â€ž%sâ€ dla %s (%s)"

#: ../server/handlers/xmlrpc/scap.py:104
msgid "Invalid system_id/action_id pair."
msgstr "NieprawidÅ‚owa para system_id/action_id."

#: ../server/handlers/xmlrpc/up2date.py:233
#, python-format
msgid "Invalid value %s (%s)"
msgstr "NieprawidÅ‚owa wartoÅ›Ä‡ %s (%s)"

#: ../server/importlib/userAuth.py:98
msgid "You are not authorized to manage packages in the null org"
msgstr "Brak upowaÅ¼nienia do zarzÄ…dzania pakietami wÂ pustej organizacji"

#: ../server/importlib/userAuth.py:103
#, python-format
msgid "You are not allowed to manage packages in the %s org"
msgstr "UÅ¼ytkownik nie moÅ¼e zarzÄ…dzaÄ‡ pakietami wÂ organizacji %s"

#: ../server/importlib/userAuth.py:121
msgid "You are not allowed to perform administrative tasks"
msgstr "UÅ¼ytkownik nie moÅ¼e wykonywaÄ‡ zadaÅ„ administracyjnych"

#: ../server/importlib/userAuth.py:144
#, python-format
msgid ""
"You are not allowed to manage channel %s, or that channel does not exist"
msgstr "UÅ¼ytkownik nie moÅ¼e zarzÄ…dzaÄ‡ kanaÅ‚em %s lub ten kanaÅ‚ nie istnieje"

#: ../server/importlib/userAuth.py:204
#, fuzzy, python-format
msgid ""
"\n"
"               %s Account has been deactivated on this server.\n"
"               Please contact your Org administrator for more help."
msgstr ""
"\n"
"                   Konto %s zostaÅ‚o dezaktywowane na tym serwerze.\n"
"                   ProszÄ™ skontaktowaÄ‡ siÄ™ zÂ administratorem organizacji po "
"wiÄ™cej pomocy."

#: ../server/rhnChannel.py:1992
#, python-format
msgid ""
"Your account does not have access to any channels matching "
"(release='%(release)s', arch='%(arch)s')%(www_activation)s"
msgstr ""
"Konto nie ma dostÄ™pu do Å¼adnych kanaÅ‚Ã³w pasujÄ…cych do (wydanie: "
"â€ž%(release)sâ€, architektura: â€ž%(arch)sâ€)%(www_activation)s"

#: ../server/rhnChannel.py:2002
msgid ""
"\n"
"If you have a registration number, please register with it first at http://"
"www.redhat.com/apps/activate/ and then try again.\n"
"\n"
msgstr ""
"\n"
"Numer rejestracji naleÅ¼y najpierw zarejestrowaÄ‡ pod adresem http://www."
"redhat.com/apps/activate/ iÂ sprÃ³bowaÄ‡ ponownie.\n"
"\n"

#: ../server/rhnChannel.py:2012
#, python-format
msgid "Insufficient subscription permissions for release (%s, %s"
msgstr "NiewystarczajÄ…ce uprawnienia subskrypcji dla wydania (%s, %s"

#. Various messages that can be reused
#.
#. bretm 02/07/2007 -- when we have better old-client documentation, probably
#. will be safe to get rid of all this crap
#: ../server/rhnChannel.py:2276 ../server/rhnChannel.py:2287
#: ../server/rhnChannel.py:2302
msgid "System Registered but Inactive"
msgstr "Zarejestrowano system, ale nie jest aktywny"

#: ../server/rhnChannel.py:2277
#, python-format
msgid ""
"\n"
"Invalid Architecture and OS release combination (%s, %s).\n"
"Your system has been registered, but will not receive updates\n"
"because it is not subscribed to a channel. If you have not yet\n"
"activated your product for service, please visit our website at:\n"
"\n"
"     http://www.redhat.com/apps/activate/\n"
"\n"
"...to activate your product."
msgstr ""
"\n"
"NieprawidÅ‚owe poÅ‚Ä…czenie architektury iÂ wydania systemu operacyjnego (%s, "
"%s).\n"
"System zostaÅ‚ zarejestrowany, ale nie bÄ™dzie otrzymywaÅ‚ aktualizacji,\n"
"poniewaÅ¼ nie jest subskrybowany do kanaÅ‚u. JeÅ›li jeszcze nie\n"
"aktywowano produktu do usÅ‚ugi, naleÅ¼y odwiedziÄ‡ naszÄ… stronÄ™ na:\n"
" \n"
"     http://www.redhat.com/apps/activate/\n"
"\n"
"â€¦aby aktywowaÄ‡ produkt."

#: ../server/rhnChannel.py:2288
#, python-format
msgid ""
"\n"
"Invalid Architecture and OS release combination (%s, %s).\n"
"Your system has been registered, but will not receive updates\n"
"because it could not be subscribed to a base channel.\n"
"Please contact your organization administrator for assistance.\n"
msgstr ""
"\n"
"NieprawidÅ‚owe poÅ‚Ä…czenie architektury iÂ wydania systemu operacyjnego (%s, "
"%s).\n"
"System zostaÅ‚ zarejestrowany , ale nie bÄ™dzie otrzymywaÅ‚ aktualizacji,\n"
"poniewaÅ¼ nie jest subskrybowany do podstawowego kanaÅ‚u.\n"
"ProszÄ™ skontaktowaÄ‡ siÄ™ zÂ administratorem organizacji po pomoc.\n"

#: ../server/rhnChannel.py:2295
#, python-format
msgid ""
"\n"
"  This system has been successfully registered, but is not yet entitled\n"
"  to service.  To entitle this system to service, login to the web site at:\n"
"\n"
"  %(entitlement_url)s\n"
msgstr ""
"\n"
"  Ten system zostaÅ‚ pomyÅ›lnie zarejestrowany, ale nie ma waÅ¼noÅ›ci\n"
"  do usÅ‚ugi. Aby uprawniÄ‡ ten system do usÅ‚ugi, naleÅ¼y zalogowaÄ‡ siÄ™ na "
"stronie WWW pod adresem:\n"
"\n"
"  %(entitlement_url)s\n"

#: ../server/rhnChannel.py:2303
#, python-format
msgid ""
"\n"
"  This system has been successfully registered, but no service entitlements\n"
"  were available.  To entitle this system to service, login to the web site "
"at:\n"
"\n"
"  %(entitlement_url)s\n"
msgstr ""
"\n"
"  Ten system zostaÅ‚ pomyÅ›lnie zarejestrowany, ale Å¼adne waÅ¼noÅ›ci\n"
"  nie byÅ‚y dostÄ™pne. Aby uprawniÄ‡ ten system do usÅ‚ugi, naleÅ¼y zalogowaÄ‡ siÄ™ "
"na stronie WWW pod adresem:\n"
"\n"
"  %(entitlement_url)s\n"

#: ../server/rhnHandler.py:62
msgid "Please run rhn_register as root on this client"
msgstr "ProszÄ™ wykonaÄ‡ polecenie rhn_register jako root na tym kliencie"

#: ../server/rhnHandler.py:75
#, python-format
msgid "Service not enabled for system profile: \"%s\""
msgstr "UsÅ‚uga jest niedostÄ™pna dla profilu systemu: â€ž%sâ€"

#: ../server/rhnPackage.py:49 ../server/rhnPackage.py:87
#: ../server/rhnPackage.py:107 ../server/rhnPackage.py:158
#, python-format
msgid "Invalid RPM package %s requested"
msgstr "ZaÅ¼Ä…dano nieprawidÅ‚owego pakietu RPM %s"

#: ../server/rhnPackage.py:112
msgid "Package not found"
msgstr "Nie odnaleziono pakietu"

#: ../server/rhnServer/server_class.py:97
#, python-format
msgid "Architecture `%s' is not supported"
msgstr "Architektura â€ž%sâ€ jest nieobsÅ‚ugiwana"

#: ../server/rhnServer/server_token.py:78
#, python-format
msgid "Token `%s' has more than one base channel assigned"
msgstr "Token â€ž%sâ€ ma przydzielony wiÄ™cej niÅ¼ jeden kanaÅ‚ podstawowy"

#: ../server/rhnServer/server_token.py:80
msgid "Conflicting base channels"
msgstr "Sprzeczne kanaÅ‚y podstawowe"

#: ../server/rhnServer/server_token.py:190
#, python-format
msgid "Failed to add server to group %s"
msgstr "Dodanie serwera do grupy %s siÄ™ nie powiodÅ‚o"

#: ../server/rhnServer/server_token.py:503
#, python-format
msgid "Maximum usage count of %s reached"
msgstr "OsiÄ…gniÄ™to maksymalne uÅ¼ycie %s"

#: ../server/rhnServer/server_token.py:744
msgid ""
"Stacking of re-registration tokens with different base entitlements is not "
"supported"
msgstr ""
"NakÅ‚adanie tokenÃ³w ponownej rejestracji na stos zÂ rÃ³Å¼nymi podstawowymi "
"waÅ¼noÅ›ciami jest nieobsÅ‚ugiwane"

#: ../server/rhnServer/server_token.py:811
#, python-format
msgid "Could not find token '%s'"
msgstr "Nie moÅ¼na odnaleÅºÄ‡ tokenu â€ž%sâ€"

#. Cannot use activation keys from different orgs
#: ../server/rhnServer/server_token.py:843
msgid "Tokens from mismatching orgs"
msgstr "Tokeny zÂ niepasujÄ…cych organizacji"

#. Two tokens with different kickstart sessions
#: ../server/rhnServer/server_token.py:853
msgid "Kickstart session mismatch"
msgstr "NiepasujÄ…ca sesja kickstart"

#: ../server/rhnServer/server_token.py:877
msgid "Stacking of re-registration tokens is not supported"
msgstr "NakÅ‚adanie tokenÃ³w ponownej rejestracji na stos jest nieobsÅ‚ugiwane"

#: ../server/rhnUser.py:289 ../server/rhnUser.py:292
msgid "Invalid username/password combination"
msgstr "NieprawidÅ‚owe poÅ‚Ä…czenie nazwy uÅ¼ytkownika iÂ hasÅ‚a"

#. nope, not reserved either
#: ../server/rhnUser.py:467
#, python-format
msgid "Username `%s' has not been reserved"
msgstr "Nazwa uÅ¼ytkownika â€ž%sâ€ nie zostaÅ‚a zastrzeÅ¼ona"

#. New accounts have to specify an e-mail address
#: ../server/rhnUser.py:473
msgid "E-mail address not specified"
msgstr "Nie podano adresu e-mail"

#: ../server/rhnUser.py:509
#, python-format
msgid "username should be at least %d characters"
msgstr "nazwa uÅ¼ytkownika musi mieÄ‡ co najmniej %d znakÃ³w"

#: ../server/rhnUser.py:512
#, python-format
msgid "username should be less than %d characters"
msgstr "nazwa uÅ¼ytkownika musi mieÄ‡ mniej niÅ¼ %d znakÃ³w"

#: ../server/rhnUser.py:523
#, python-format
msgid "username = `%s', invalid character `%s'"
msgstr "nazwa uÅ¼ytkownika to â€ž%sâ€, nieprawidÅ‚owy znak â€ž%sâ€"

#: ../server/rhnUser.py:542
#, python-format
msgid "Please limit your e-mail address to %s chars"
msgstr "ProszÄ™ ograniczyÄ‡ adres e-mail do %s znakÃ³w"

#: ../server/rhnUser.py:623
#, python-format
msgid "password must be at least %d characters"
msgstr "hasÅ‚o musi mieÄ‡ co najmniej %d znakÃ³w"

#: ../server/rhnUser.py:626
#, python-format
msgid "Password must be shorter than %d characters"
msgstr "HasÅ‚o musi byÄ‡ krÃ³tsze niÅ¼ %d znakÃ³w"

#: ../server/rhnUser.py:644
#, python-format
msgid "password contains character `%s'"
msgstr "hasÅ‚o zawiera znak â€ž%sâ€"

#: ../server/rhnUser.py:651
#, python-format
msgid "username should be at least %d characters long"
msgstr "nazwa uÅ¼ytkownika musi mieÄ‡ co najmniej %d znakÃ³w"

#: ../server/rhnUser.py:662
#, python-format
msgid "Cannot register usernames ending with %s"
msgstr "Nie moÅ¼na rejestrowaÄ‡ nazw uÅ¼ytkownikÃ³w koÅ„czÄ…cych siÄ™ znakiem %s"

#. 0-999: Red Hat client/client-like interaction errors:
#: ../common/rhnException.py:53
msgid "This does not appear to be a valid username."
msgstr "To nie jest prawidÅ‚owa nazwa uÅ¼ytkownika."

#: ../common/rhnException.py:54
msgid "Invalid username and password combination."
msgstr "NieprawidÅ‚owe poÅ‚Ä…czenie nazwy uÅ¼ytkownika iÂ hasÅ‚a."

#: ../common/rhnException.py:55
msgid "This login is already taken, or the password is incorrect."
msgstr "Ten login jest zajÄ™ty lub hasÅ‚o jest niepoprawne."

#: ../common/rhnException.py:56
msgid "Permission denied."
msgstr "Odmowa uprawnieÅ„."

#: ../common/rhnException.py:57
msgid "Object not found."
msgstr "Nie odnaleziono obiektu."

#: ../common/rhnException.py:58
msgid "Invalid System Digital ID."
msgstr "NieprawidÅ‚owy cyfrowy identyfikator systemu."

#: ../common/rhnException.py:59
msgid "Invalid System Credentials."
msgstr "NieprawidÅ‚owe dane uwierzytelniajÄ…ce systemu."

#: ../common/rhnException.py:60
msgid "Could not retrieve user data from database."
msgstr "Nie moÅ¼na pobraÄ‡ danych uÅ¼ytkownika zÂ bazy danych."

#: ../common/rhnException.py:61
msgid "Valid username required."
msgstr "Wymagana jest prawidÅ‚owa nazwa uÅ¼ytkownika."

#: ../common/rhnException.py:62
msgid "Valid password required."
msgstr "Wymagane jest prawidÅ‚owe hasÅ‚o."

#: ../common/rhnException.py:63
msgid "Minimum username length violation."
msgstr "Naruszono minimalnÄ… dÅ‚ugoÅ›Ä‡ nazwy uÅ¼ytkownika."

#: ../common/rhnException.py:64
msgid "Minimum password length violation."
msgstr "Naruszono minimalnÄ… dÅ‚ugoÅ›Ä‡ hasÅ‚a."

#: ../common/rhnException.py:65
msgid "The username contains invalid characters."
msgstr "Nazwa uÅ¼ytkownika zawiera nieprawidÅ‚owe znaki."

#: ../common/rhnException.py:66
msgid "File not found."
msgstr "Nie odnaleziono pliku."

#: ../common/rhnException.py:67
msgid "Architecture and OS version combination is not supported."
msgstr "NieobsÅ‚ugiwane poÅ‚Ä…czenie architektury iÂ wersji systemu operacyjnego."

#: ../common/rhnException.py:68
msgid "Could not retrieve system data from database."
msgstr "Nie moÅ¼na pobraÄ‡ danych systemu zÂ bazy danych."

#: ../common/rhnException.py:69
msgid "Invalid arguments passed to function."
msgstr "Do funkcji przekazano nieprawidÅ‚owe parametry."

#: ../common/rhnException.py:70
msgid "Unable to retrieve requested entry."
msgstr "Nie moÅ¼na pobraÄ‡ Å¼Ä…danego wpisu."

#: ../common/rhnException.py:71
msgid "Could not update database entry."
msgstr "Nie moÅ¼na zaktualizowaÄ‡ wpisu bazy danych."

#: ../common/rhnException.py:72
msgid "Unsupported server architecture."
msgstr "NieobsÅ‚ugiwana architektura serwera."

#: ../common/rhnException.py:73
#, fuzzy, python-format
msgid ""
"\n"
"     The anonymous server functionality is no longer available.\n"
"\n"
"     Please re-register this system by running mgr_register as root.\n"
"     Please visit https://%(hostname)s/rhn/systems/SystemEntitlements.do\n"
"     or login at https://%(hostname)s, and from the \"Overview\" tab,\n"
"     select \"Subscription Management\" to enable the service for this "
"system.\n"
"     "
msgstr ""
"\n"
"     Funkcja anonimowego serwera nie jest juÅ¼ dostÄ™pna.\n"
"\n"
"     ProszÄ™ ponownie zarejestrowaÄ‡ ten system wykonujÄ…c polecenie "
"rhn_register\n"
"     jako root.\n"
"     ProszÄ™ odwiedziÄ‡ https://%(hostname)s/rhn/systems/SystemEntitlements."
"do\n"
"     lub zalogowaÄ‡ siÄ™ na https://%(hostname)s iÂ zÂ karty â€žPrzeglÄ…dâ€\n"
"     wybraÄ‡ â€žZarzÄ…dzanie subskrypcjÄ…â€, aby wÅ‚Ä…czyÄ‡ usÅ‚ugÄ™ dla tego systemu.\n"
"     "

#: ../common/rhnException.py:81
msgid "Record not available in the database."
msgstr "Wpis jest niedostÄ™pny wÂ bazie danych."

#: ../common/rhnException.py:82
msgid "Invalid value for entry."
msgstr "NieprawidÅ‚owa wartoÅ›Ä‡ wpisu."

#: ../common/rhnException.py:83
#, fuzzy, python-format
msgid ""
"\n"
"     This system does not have a valid entitlement for SUSE Manager.\n"
"     Please visit https://%(hostname)s/rhn/systems/SystemEntitlements.do\n"
"     or login at https://%(hostname)s, and from the \"Overview\" tab,\n"
"     select \"Subscription Management\" to enable the service for this "
"system.\n"
"     "
msgstr ""
"\n"
"     Ten system nie ma prawidÅ‚owej waÅ¼noÅ›ci dla usÅ‚ugi Red Hat Satellite.\n"
"     ProszÄ™ odwiedziÄ‡ https://%(hostname)s/rhn/systems/SystemEntitlements."
"do\n"
"     lub zalogowaÄ‡ siÄ™ na https://%(hostname)s iÂ zÂ karty â€žPrzeglÄ…dâ€\n"
"     wybraÄ‡ â€žZarzÄ…dzanie subskrypcjÄ…â€, aby wÅ‚Ä…czyÄ‡ usÅ‚ugÄ™ dla tego systemu.\n"
"     "

#: ../common/rhnException.py:89
msgid "Channel error"
msgstr "BÅ‚Ä…d kanaÅ‚u"

#: ../common/rhnException.py:90
msgid "Client session token is invalid."
msgstr "NieprawidÅ‚owy token sesji klienta."

#: ../common/rhnException.py:91
msgid "Client session token has expired."
msgstr "Token sesji klienta wygasÅ‚."

#: ../common/rhnException.py:92
msgid "You are not authorized to retrieve the requested object."
msgstr "Brak upowaÅ¼nienia do pobierania Å¼Ä…danego obiektu."

#: ../common/rhnException.py:93
msgid "Invalid action"
msgstr "NieprawidÅ‚owe dziaÅ‚anie"

#: ../common/rhnException.py:94
msgid "You are not allowed to perform administrative tasks on this system."
msgstr "UÅ¼ytkownik nie moÅ¼e wykonywaÄ‡ zadaÅ„ administracyjnych wÂ tym systemie."

#: ../common/rhnException.py:96
msgid "The system is already subscribed to the specified channel."
msgstr "Ten system juÅ¼ subskrybuje podany kanaÅ‚."

#: ../common/rhnException.py:97
msgid "The system is not currently subscribed to the specified channel."
msgstr "Ten system obecnie nie subskrybuje podanego kanaÅ‚u."

#: ../common/rhnException.py:98
msgid "The specified channel does not exist."
msgstr "Podany kanaÅ‚ nie istnieje."

#: ../common/rhnException.py:99
msgid "Invalid channel version."
msgstr "NieprawidÅ‚owa wersja kanaÅ‚u."

#: ../common/rhnException.py:100
msgid ""
"\n"
"     User group membership limits exceeded.\n"
"\n"
"     The current settings for your account do not allow you to add another\n"
"     user account. Please check with the organization administrator for "
"your\n"
"     account if the maximum number of users allowed to subscribe to server "
"needs\n"
"     to be changed.\n"
"     "
msgstr ""
"\n"
"     Przekroczono ograniczenia czÅ‚onkostwa wÂ grupach uÅ¼ytkownikÃ³w.\n"
"\n"
"     Obecne ustawienia konta nie pozwalajÄ… na dodawanie kolejnego\n"
"     konta uÅ¼ytkownika. ProszÄ™ zapytaÄ‡ administratora organizacji oÂ konto,\n"
"     jeÅ›li maksymalna liczba uÅ¼ytkownikÃ³w mogÄ…cych subskrybowaÄ‡ serwer\n"
"     musi zostaÄ‡ zmieniona.\n"
"     "

#: ../common/rhnException.py:108
msgid ""
"\n"
"     System group membership limits exceeded.\n"
"\n"
"     The current settings for your account do not allow you to add another\n"
"     system profile. Please check with the organization administrator for "
"your\n"
"     account for modifying the maximum number of system profiles that can "
"be\n"
"     subscribed to your account.\n"
"     "
msgstr ""
"\n"
"     Przekroczono ograniczenia czÅ‚onkostwa wÂ grupach systemu.\n"
"\n"
"     Obecne ustawienia konta nie pozwalajÄ… na dodawanie kolejnego\n"
"     profilu systemu. ProszÄ™ zapytaÄ‡ administratora organizacji\n"
"     oÂ zmodyfikowanie maksymalnej liczby profili systemÃ³w, jaka moÅ¼e\n"
"     subskrybowaÄ‡ konto.\n"
"     "

#: ../common/rhnException.py:116
msgid ""
"\n"
"     Invalid architecture.\n"
"\n"
"     The architecture of the package is not supported by\n"
"     "
msgstr ""
"\n"
"     NieprawidÅ‚owa architektura.\n"
"\n"
"     Architektura pakietu nie jest obsÅ‚ugiwana przez\n"
"     "

#: ../common/rhnException.py:121
msgid "Invalid RPM header"
msgstr "NieprawidÅ‚owy nagÅ‚Ã³wek pakietu RPM"

#: ../common/rhnException.py:122
msgid ""
"\n"
"    This system is already registered as a Salt Minion. If you want to "
"register it as a traditional client\n"
"    please delete it first via the web UI or API and then register it using "
"the traditional tools.\n"
"    "
msgstr ""

#. For the uploading tools
#: ../common/rhnException.py:127
msgid "Invalid information uploaded to the server"
msgstr "Do serwera wysÅ‚ano nieprawidÅ‚owe informacje"

#: ../common/rhnException.py:128
msgid "Error uploading network interfaces configuration."
msgstr "BÅ‚Ä…d podczas wysyÅ‚ania konfiguracji interfejsÃ³w sieciowych."

#: ../common/rhnException.py:129
msgid ""
"\n"
"     Package Upload Failed due to uniqueness constraint violation.\n"
"     Make sure the package does not have any duplicate dependencies or\n"
"     does not already exists on the server\n"
"     "
msgstr ""
"\n"
"     WysÅ‚anie pakietu siÄ™ nie powiodÅ‚o zÂ powodu naruszenia ograniczenia "
"unikalnoÅ›ci.\n"
"     ProszÄ™ siÄ™ upewniÄ‡, Å¼e pakiet nie ma podwÃ³jnych zaleÅ¼noÅ›ci lub\n"
"     nie istnieje juÅ¼ na serwerze\n"
"     "

#: ../common/rhnException.py:134
#, fuzzy
msgid ""
"\n"
"     The --force rhnpush option is disabled on this server.\n"
"     Please contact your SUSE Manager administrator for more help.\n"
"     "
msgstr ""
"\n"
"     Na tym serwerze wyÅ‚Ä…czono opcjÄ™ â€ž--force rhnpushâ€.\n"
"     ProszÄ™ skontaktowaÄ‡ siÄ™ zÂ administratorem usÅ‚ugi Satellite po wiÄ™cej "
"pomocy.\n"
"     "

#. 60-70: token errors
#: ../common/rhnException.py:140
msgid ""
"\n"
"     The activation token specified could not be found on the server.\n"
"     Please retry with a valid key.\n"
"     "
msgstr ""
"\n"
"     Nie moÅ¼na odnaleÅºÄ‡ podanego tokenu aktywacji na serwerze.\n"
"     ProszÄ™ sprÃ³bowaÄ‡ ponownie za pomocÄ… prawidÅ‚owego klucza.\n"
"     "

#: ../common/rhnException.py:144
msgid "Too many systems registered using this registration token"
msgstr "Za pomocÄ… tego tokenu rejestracji zarejestrowano za duÅ¼o systemÃ³w"

#: ../common/rhnException.py:145
msgid "Token contains invalid, obsoleted or insufficient settings"
msgstr ""
"Token zawiera nieprawidÅ‚owe, przestarzaÅ‚e lub niewystarczajÄ…ce ustawienia"

#: ../common/rhnException.py:146
msgid "Conflicting activation tokens"
msgstr "Sprzeczne tokeny aktywacji"

#. 70-80: channel subscription errors
#: ../common/rhnException.py:149
msgid ""
"\n"
"     No matching base channel found for your system.\n"
"     "
msgstr ""
"\n"
"     Nie odnaleziono pasujÄ…cego kanaÅ‚u podstawowego dla systemu.\n"
"     "

#: ../common/rhnException.py:152
msgid ""
"\n"
"     You do not have subscription permission to the designated channel.\n"
"     Please refer to your organization's channel or organization\n"
"     administrators for further details.\n"
"     "
msgstr ""
"\n"
"     Nie ma uprawnienia subskrypcji dla wyznaczonego kanaÅ‚u.\n"
"     KanaÅ‚ organizacji lub administratorzy organizacji majÄ… wiÄ™cej "
"informacji.\n"
"     "

#: ../common/rhnException.py:157
msgid "You can not unsubscribe from base channel."
msgstr "Nie moÅ¼na zrezygnowaÄ‡ zÂ subskrypcji podstawowego kanaÅ‚u."

#: ../common/rhnException.py:158
#, fuzzy
msgid "SUSE Manager or Proxy channel can not be subscribed."
msgstr "Nie moÅ¼na subskrybowaÄ‡ kanaÅ‚u Satellite lub Proxy."

#. 80-90: server group errors
#: ../common/rhnException.py:161
msgid "There was an error while trying to join the system to its groups"
msgstr "WystÄ…piÅ‚ bÅ‚Ä…d podczas prÃ³by doÅ‚Ä…czenia systemu do jego grup"

#. 90-100: entitlement errors
#: ../common/rhnException.py:164
msgid "Unable to entitle system"
msgstr "Nie moÅ¼na upowaÅ¼niÄ‡ systemu"

#. 100-109: e-mail and uuid related faults
#: ../common/rhnException.py:167
msgid "Maximum e-mail length violation."
msgstr "Naruszono maksymalnÄ… dÅ‚ugoÅ›Ä‡ adresu e-mail."

#: ../common/rhnException.py:168
msgid "This system has been previously registered."
msgstr "Ten system zostaÅ‚ poprzednio zarejestrowany."

#: ../common/rhnException.py:169
msgid "Invalid username"
msgstr "NieprawidÅ‚owa nazwa uÅ¼ytkownika"

#. 140-159 applet errors
#: ../common/rhnException.py:172
msgid "Unable to look up server"
msgstr "Nie moÅ¼na odnaleÅºÄ‡ serwera"

#. 160-179: OSAD errors
#: ../common/rhnException.py:175
msgid "Required argument is missing"
msgstr "Brak wymaganego parametru"

#. 600-699: RHEL5+ EN errors
#: ../common/rhnException.py:178
msgid "No entitlement information tied to hardware"
msgstr "Brak informacji oÂ waÅ¼noÅ›ci powiÄ…zanych zÂ tym sprzÄ™tem"

#: ../common/rhnException.py:179
msgid "Installation number is not entitling"
msgstr "Numer instalacji nie jest waÅ¼ny"

#. 700-799: Additional user input verification errors.
#: ../common/rhnException.py:182
msgid "Maximum username length violation"
msgstr "Naruszono maksymalnÄ… dÅ‚ugoÅ›Ä‡ nazwy uÅ¼ytkownika"

#: ../common/rhnException.py:183
msgid "Maximum password length violation"
msgstr "Naruszono maksymalnÄ… dÅ‚ugoÅ›Ä‡ hasÅ‚a"

#: ../common/rhnException.py:184
msgid "This user has read only API access. Action denied."
msgstr "Ten uÅ¼ytkownik ma dostÄ™p do API tylko do odczytu. Odmowa dziaÅ‚ania."

#: ../common/rhnException.py:186
msgid "System Name cannot be less than 1 character"
msgstr "Nazwa systemu nie moÅ¼e byÄ‡ krÃ³tsza niÅ¼ 1 znak"

#. 1000-1999: Proxy specific errors:
#. issued by a Proxy to the client
#: ../common/rhnException.py:190
#, fuzzy
msgid "SUSE Manager Proxy error."
msgstr "BÅ‚Ä…d usÅ‚ugi Spacewalk Proxy."

#: ../common/rhnException.py:191
#, fuzzy
msgid "SUSE Manager Proxy unable to login."
msgstr "Nie moÅ¼na zalogowaÄ‡ usÅ‚ugi Spacewalk Proxy."

#. issued by a SUSE Manager Server/Satellite to the proxy
#: ../common/rhnException.py:193
#, fuzzy
msgid ""
"\n"
"     SUSE Manager Proxy system ID does not match a Spacewalk Proxy Server\n"
"     in the database.\n"
"     "
msgstr ""
"\n"
"     Identyfikator systemu usÅ‚ugi Spacewalk Proxy nie pasuje do serwera "
"Spacewalk Proxy\n"
"     wÂ bazie danych.\n"
"     "

#: ../common/rhnException.py:197
#, fuzzy
msgid "SUSE Manager Proxy session token is invalid."
msgstr "Token sesji usÅ‚ugi Spacewalk Proxy jest nieprawidÅ‚owy."

#: ../common/rhnException.py:198
#, fuzzy
msgid "SUSE Manager Proxy session token has expired."
msgstr "Token sesji usÅ‚ugi Spacewalk Proxy wygasÅ‚."

#. 2000-2999: Red Hat Satellite specific errors:
#: ../common/rhnException.py:202
#, fuzzy
msgid ""
"\n"
"      user creation is not allowed via mgr_register;\n"
"     please contact your sysadmin to have your account created.\n"
"     "
msgstr ""
"\n"
"     tworzenie uÅ¼ytkownika za pomocÄ… polecenia rhn_register nie jest "
"dozwolone.\n"
"     ProszÄ™ skontaktowaÄ‡ siÄ™ zÂ administratorem systemu wÂ celu utworzenia "
"konta.\n"
"     "

#: ../common/rhnException.py:206
#, fuzzy
msgid ""
"\n"
"     This SUSE Manager server is not allowed to use Inter Server Sync on "
"this server\n"
"     "
msgstr ""
"\n"
"     Ten serwer usÅ‚ugi Satellite ne moÅ¼e uÅ¼ywaÄ‡ Inter Satellite Sync na tej "
"usÅ‚udze Satellite\n"
"     "

#: ../common/rhnException.py:209
#, fuzzy
msgid ""
"\n"
"     Inter Server Sync is disabled on this SUSE Manager Server.\n"
"     "
msgstr ""
"\n"
"     Inter Satellite Sync jest wyÅ‚Ä…czone na tej usÅ‚udze Satellite.\n"
"     "

#. 3000-3999: XML dumper errors:
#: ../common/rhnException.py:214
msgid "Invalid datatype passed"
msgstr "Przekazano nieprawidÅ‚owy typ danych"

#: ../common/rhnException.py:215
msgid "Unable to retrieve channel"
msgstr "Nie moÅ¼na pobraÄ‡ kanaÅ‚u"

#: ../common/rhnException.py:216
msgid "Unable to retrieve package"
msgstr "Nie moÅ¼na pobraÄ‡ pakietu"

#: ../common/rhnException.py:217
msgid "Unable to retrieve erratum"
msgstr "Nie moÅ¼na pobraÄ‡ poprawki"

#: ../common/rhnException.py:218
msgid "File is missing"
msgstr "Brak pliku"

#: ../common/rhnException.py:219
msgid "Function retrieval error"
msgstr "BÅ‚Ä…d pobierania funkcji"

#: ../common/rhnException.py:220
msgid "Function execution error"
msgstr "BÅ‚Ä…d wykonywania funkcji"

#: ../common/rhnException.py:221
msgid "Missing version string"
msgstr "Brak ciÄ…gu wersji"

#: ../common/rhnException.py:222
msgid "Invalid version string"
msgstr "NieprawidÅ‚owy ciÄ…g wersji"

#: ../common/rhnException.py:223
msgid "Mismatching versions"
msgstr "NiepasujÄ…ce wersje"

#: ../common/rhnException.py:224
msgid "Invalid channel version"
msgstr "NieprawidÅ‚owa wersja kanaÅ‚u"

#: ../common/rhnException.py:225
msgid "No comps file for channel"
msgstr "Brak pliku comps dla kanaÅ‚u"

#: ../common/rhnException.py:226
msgid "Unable to retrieve comps file"
msgstr "Nie moÅ¼na pobraÄ‡ pliku comps"

#. 4000 - 4999: config management errors
#: ../common/rhnException.py:229
msgid "Configuration action missing"
msgstr "Brak dziaÅ‚ania konfiguracji"

#: ../common/rhnException.py:230
msgid "File too large"
msgstr "Plik jest za duÅ¼y"

#: ../common/rhnException.py:231
msgid "File contains binary data"
msgstr "Plik zawiera binarne dane"

#: ../common/rhnException.py:232
msgid "Configuration channel is not empty"
msgstr "KanaÅ‚ konfiguracji nie jest pusty"

#: ../common/rhnException.py:233
msgid "Permission error"
msgstr "BÅ‚Ä…d uprawnieÅ„"

#: ../common/rhnException.py:234
msgid "Content missing for configuration file"
msgstr "Brak treÅ›ci pliku konfiguracji"

#: ../common/rhnException.py:235
msgid "Template delimiters not specified"
msgstr "Nie podano separatorÃ³w szablonu"

#: ../common/rhnException.py:236
msgid "Configuration channel does not exist"
msgstr "KanaÅ‚ konfiguracji nie istnieje"

#: ../common/rhnException.py:237
msgid "Configuration channel already exists"
msgstr "KanaÅ‚ konfiguracji juÅ¼ istnieje"

#: ../common/rhnException.py:238
msgid "File missing from configuration channel"
msgstr "Brak pliku zÂ kanaÅ‚u konfiguracji"

#: ../common/rhnException.py:239
msgid "Different revision of this file is uploaded"
msgstr "Inna wersja tego pliku zostaÅ‚a wysÅ‚ana"

#: ../common/rhnException.py:240
msgid "File already uploaded to configuration channel"
msgstr "JuÅ¼ wysÅ‚ano plik do kanaÅ‚u konfiguracji"

#: ../common/rhnException.py:241
msgid "File size exceeds remaining quota space"
msgstr "Rozmiar pliku przekracza pozostaÅ‚e miejsce przydziaÅ‚u"

#: ../common/rhnException.py:242
msgid "Full path of file must be specified"
msgstr "NaleÅ¼y podaÄ‡ peÅ‚nÄ… Å›cieÅ¼kÄ™ do pliku"

#: ../common/rhnException.py:243
msgid "Invalid revision number"
msgstr "NieprawidÅ‚owy numer wersji"

#: ../common/rhnException.py:244
msgid "Cannot compare files of different file type"
msgstr "Nie moÅ¼na porÃ³wnywaÄ‡ plikÃ³w rÃ³Å¼nego typu"

#. 5000 - 5999: client content uploading errors
#. 5000 - 5099: crash reporting errors
#: ../common/rhnException.py:248
msgid "Crash information is invalid or incomplete"
msgstr "Informacje oÂ awarii sÄ… nieprawidÅ‚owe lub niepeÅ‚ne"

#: ../common/rhnException.py:249
msgid "Crash file information is invalid or incomplete"
msgstr "Plik zÂ informacjami oÂ awarii jest nieprawidÅ‚owy lub niepeÅ‚ny"

#: ../common/rhnException.py:250
msgid "Error composing crash directory path"
msgstr "BÅ‚Ä…d podczas skÅ‚adania Å›cieÅ¼ki do katalogu awarii"

#: ../common/rhnException.py:251
msgid "Error composing crash file path"
msgstr "BÅ‚Ä…d podczas skÅ‚adania Å›cieÅ¼ki do pliku awarii"

#: ../common/rhnException.py:252 ../common/rhnException.py:259
msgid "Invalid content encoding"
msgstr "NieprawidÅ‚owe kodowanie treÅ›ci"

#: ../common/rhnException.py:253
msgid "Invalid crash name"
msgstr "NieprawidÅ‚owa nazwa awarii"

#: ../common/rhnException.py:254
msgid "Crash reporting is disabled for this organization"
msgstr "ZgÅ‚aszanie awarii jest wyÅ‚Ä…czone dla tej organizacji"

#. 5100 - 5199: scap results reporting error
#: ../common/rhnException.py:256
msgid "SCAP results file transfer is invalid or incomplete"
msgstr "PrzesyÅ‚anie pliku wynikÃ³w SCAP jest nieprawidÅ‚owe lub niepeÅ‚ne"

#: ../common/rhnException.py:257
msgid "Error composing directory path for detailed SCAP results"
msgstr ""
"BÅ‚Ä…d podczas skÅ‚adania Å›cieÅ¼ki do katalogu dla szczegÃ³Å‚owych wynikÃ³w SCAP"

#: ../common/rhnException.py:258
msgid "Error composing file path for detailed SCAP results"
msgstr "BÅ‚Ä…d podczas skÅ‚adania Å›cieÅ¼ki do pliku dla szczegÃ³Å‚owych wynikÃ³w SCAP"

#: ../common/rhnException.py:306
#, fuzzy
msgid ""
"\n"
"     An error has occurred while processing your request. If this problem\n"
"     persists please enter a bug report at scc.suse.com.\n"
"     If you choose to submit the bug report, please be sure to include\n"
"     details of what you were trying to do when this error occurred and\n"
"     details on how to reproduce this problem.\n"
msgstr ""
"\n"
"     WystÄ…piÅ‚ bÅ‚Ä…d podczas przetwarzania Å¼Ä…dania. JeÅ›li problem\n"
"     siÄ™ powtarza, proszÄ™ zgÅ‚osiÄ‡ bÅ‚Ä…d na stronie bugzilla.redhat.com.\n"
"     JeÅ›li bÅ‚Ä…d zostanie zgÅ‚oszony, to proszÄ™ doÅ‚Ä…czyÄ‡ informacje\n"
"     oÂ prÃ³bowanym dziaÅ‚aniu, kiedy wystÄ…piÅ‚ bÅ‚Ä…d iÂ informacje oÂ sposobie\n"
"     powtÃ³rzenia tego problemu.\n"

#: ../common/rhnException.py:358
#, python-format
msgid ""
"Error Message:\n"
"    %s\n"
msgstr ""
"Komunikat oÂ bÅ‚Ä™dzie:\n"
"    %s\n"

#: ../common/rhnException.py:360
#, python-format
msgid "Error Class Code: %s\n"
msgstr "Kod klasy bÅ‚Ä™du: %s\n"

#: ../common/rhnException.py:363
#, python-format
msgid "Error Class Info: %s\n"
msgstr "Informacje oÂ klasie bÅ‚Ä™du: %s\n"

#: ../common/rhnException.py:365
#, python-format
msgid "Explanation: %s"
msgstr "WyjaÅ›nienie: %s"

#: ../common/rhnTB.py:205
#, python-format
msgid "ERROR: %s %s: %s"
msgstr "BÅÄ„D: %s %s: %s"

#: ../common/rhnTB.py:207
#, python-format
msgid "TRACEBACK: %s"
msgstr "WYJÄ„TEK: %s"

#: ../satellite_tools/disk_dumper/iss.py:1294
#: ../satellite_tools/disk_dumper/iss.py:1298
#, python-format
msgid "format of %s should be at least YYYYMMDD.\n"
msgstr ""

#: ../satellite_tools/messages.py:26
#, python-format
msgid ""
"\n"
"ERROR: executing step %s. Error is:\n"
"%s\n"
msgstr ""

#: ../satellite_tools/messages.py:31
#, python-format
msgid ""
"\n"
"ERROR: there was a problem accessing the channel data from your temporary\n"
"       repository. Did you migrate all of the data from the channel ISOs\n"
"       do this directory? If so, please recheck the channels ISOs, ensure\n"
"       that you have them all, and then iteratively remount and repopulate\n"
"       the temporary repository (%s).\n"
msgstr ""

#: ../satellite_tools/messages.py:39
#, python-format
msgid ""
"\n"
"ERROR: there was a problem synchronizing the information.\n"
"       Error message: %s\n"
msgstr ""

#: ../satellite_tools/messages.py:44
#, python-format
msgid ""
"\n"
"ERROR: There was a problem communicating with the ISS Master.\n"
"       Depending on the specific error details, please review your "
"configuration,\n"
"       basic network connectivity, and/or name resolution, and try again.\n"
"       Error message: %s\n"
msgstr ""

#: ../satellite_tools/messages.py:51
#, python-format
msgid ""
"\n"
"ERROR: There was a problem communicating with the ISS Master.\n"
"       If the master satellite is older than v5.3, it does not have ISS "
"capability.\n"
"       Otherwise, depending on the specific error details, please review "
"your\n"
"       configuration, basic network connectivity, and/or name resolution, "
"and try again.\n"
"       Error message: %s\n"
msgstr ""

#: ../satellite_tools/messages.py:59
#, python-format
msgid ""
"\n"
"ERROR: a child-channel cannot be synced without its parent being synced as\n"
"       well. A parent needs to be either (a) previously synced or (b) "
"synced\n"
"       in tandem with the desired child-channel. Missing parents for this\n"
"       transaction:\n"
"       %s\n"
msgstr ""

#: ../satellite_tools/messages.py:67
#, python-format
msgid ""
"\n"
"ERROR: you are not entitled to sync a channel in this set of channels.\n"
"Please contact your SUSE Manager contact\n"
"%s"
msgstr ""

#: ../satellite_tools/messages.py:72
#, python-format
msgid "  ERROR: not enough free space (%s KB) on device."
msgstr ""

#: ../satellite_tools/messages.py:74
#, python-format
msgid "    %3d/%s Fetch successful: %s (%s bytes)"
msgstr ""

#: ../satellite_tools/messages.py:75
#, fuzzy, python-format
msgid "    Extinct package:  %s"
msgstr "Oczekiwano pakietu, nie: %s"

#: ../satellite_tools/messages.py:76
#, python-format
msgid "   Total size: %s"
msgstr ""

#: ../satellite_tools/messages.py:77
#, python-format
msgid "      Downloaded %s of %s. Estimated remaining time: %s"
msgstr ""

#: ../satellite_tools/messages.py:78
#, python-format
msgid "    Fetch unsuccessful: %s"
msgstr ""

#: ../satellite_tools/messages.py:79
#, python-format
msgid "   RPM fetch summary: %s"
msgstr ""

#: ../satellite_tools/messages.py:80
#, python-format
msgid "       success: %d"
msgstr ""

#: ../satellite_tools/messages.py:81
#, python-format
msgid "       failed:  %d"
msgstr ""

#: ../satellite_tools/messages.py:82
#, python-format
msgid "       extinct: %d"
msgstr ""

#: ../satellite_tools/messages.py:84
#, python-format
msgid "   Retrieving / parsing *relevant* package metadata: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:85
#, python-format
msgid "   Retrieving / parsing errata data: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:86
#, python-format
msgid "   Retrieving / parsing kickstart data: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:87
#, python-format
msgid "   Retrieving / parsing kickstart tree files: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:88
#, python-format
msgid "   Importing *relevant* package metadata: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:89
msgid "   * WARNING: this may be a slow process."
msgstr ""

#: ../satellite_tools/messages.py:90
#, fuzzy
msgid "Linking packages to channels"
msgstr "Sprzeczne kanaÅ‚y podstawowe"

#: ../satellite_tools/messages.py:91
#, python-format
msgid "   Importing *relevant* errata: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:92
msgid "   No new kickstartable tree to import"
msgstr ""

#: ../satellite_tools/messages.py:93
#, python-format
msgid "Importing kickstartable trees (%d)"
msgstr ""

#: ../satellite_tools/messages.py:94
#, python-format
msgid "Imported kickstartable trees (%d)"
msgstr ""

#: ../satellite_tools/reposync.py:111 ../satellite_tools/satsync.py:439
msgid "+++ sending log as an email +++"
msgstr ""

#: ../satellite_tools/reposync.py:114
#, python-format
msgid "%s sync. report from %s"
msgstr ""

#: ../satellite_tools/reposync.py:124 ../satellite_tools/satsync.py:449
msgid "+++ email requested, but there is nothing to send +++"
msgstr ""

#: ../satellite_tools/rhn_satellite_activate.py:198
#, python-format
msgid ""
"\"%s\" (specified in commandline)\n"
"could not be opened and read:\n"
"%s"
msgstr ""

#: ../satellite_tools/rhn_satellite_activate.py:205
#, python-format
msgid ""
"\"%s\" could not be opened\n"
"and/or written to:\n"
"%s"
msgstr ""

#: ../satellite_tools/satsync.py:258
#, python-format
msgid "No handler for step %s"
msgstr ""

#. Try one more time - this time it should be faster since
#. everything should be cached
#: ../satellite_tools/satsync.py:270
msgid "Environment changed, trying again..."
msgstr ""

#: ../satellite_tools/satsync.py:277
msgid "ERROR: Encountered IntegrityError: \n"
msgstr ""

#: ../satellite_tools/satsync.py:285
msgid "Repeated failures"
msgstr ""

#: ../satellite_tools/satsync.py:290
#, python-format
msgid ""
"    Import complete:\n"
"        Begin time: %s\n"
"        End time:   %s\n"
"        Elapsed:    %s\n"
"          "
msgstr ""

#: ../satellite_tools/satsync.py:311
msgid "hours"
msgstr ""

#: ../satellite_tools/satsync.py:311
msgid "minutes"
msgstr ""

#: ../satellite_tools/satsync.py:311
msgid "seconds"
msgstr ""

#: ../satellite_tools/satsync.py:357
msgid ""
"ERROR: The dump is missing package data, use --no-rpms to skip this step or "
"fix the content to include package data."
msgstr ""

#. the orgs() method doesn't exist; that's fine we just
#. won't sync the orgs
#: ../satellite_tools/satsync.py:404
msgid "The SUSE Manager master does not support syncing orgs data."
msgstr ""

#: ../satellite_tools/satsync.py:404
msgid "Skipping..."
msgstr ""

#: ../satellite_tools/satsync.py:442
#, python-format
msgid "SUSE Manager Inter Server sync. report from %s"
msgstr ""

#: ../satellite_tools/satsync.py:521
msgid " - file-system synchronization"
msgstr ""

#: ../satellite_tools/satsync.py:533 ../satellite_tools/satsync.py:541
msgid " - live synchronization"
msgstr ""

#: ../satellite_tools/satsync.py:534
#, python-brace-format
msgid ""
"ERROR: Live content synchronizing with RHN Classic Hosted is no longer "
"supported.\n"
"Please use the cdn-sync command instead unless you are attempting to sync "
"from another {PRODUCT_NAME} via Inter-Server-Sync (ISS), or from local "
"content on disk via Channel Dump ISOs."
msgstr ""

#: ../satellite_tools/satsync.py:542
#, python-format
msgid "   url: %s"
msgstr ""

#: ../satellite_tools/satsync.py:543
#, python-format
msgid "   debug/output level: %s"
msgstr ""

#: ../satellite_tools/satsync.py:553
msgid "ERROR: this server must be registered with SUSE Manager."
msgstr ""

#: ../satellite_tools/satsync.py:575
#, python-format
msgid "Retrieving / parsing %s data"
msgstr ""

#: ../satellite_tools/satsync.py:585 ../satellite_tools/satsync.py:600
msgid "*** SYSTEM INTERRUPT CALLED ***"
msgstr ""

#: ../satellite_tools/satsync.py:593
msgid "ERROR: fatal parser exception occurred "
msgstr ""

#: ../satellite_tools/satsync.py:594
#, python-format
msgid "(line: %s, col: %s msg: %s)"
msgstr ""

#: ../satellite_tools/satsync.py:598
#, python-format
msgid "ERROR: parser exception occurred: %s"
msgstr ""

#: ../satellite_tools/satsync.py:603
msgid "ERROR: exception (during parse) occurred: "
msgstr ""

#: ../satellite_tools/satsync.py:604
#, python-format
msgid ""
"   Encountered some errors with %s data (see logs (%s) for more information)"
msgstr ""

#: ../satellite_tools/satsync.py:606
#, python-format
msgid "   Encountered some errors with %s data:"
msgstr ""

#: ../satellite_tools/satsync.py:607
#, python-format
msgid "   ------- %s PARSE/IMPORT ERROR -------"
msgstr ""

#: ../satellite_tools/satsync.py:609
msgid "   ---------------------------------------"
msgstr ""

#: ../satellite_tools/satsync.py:612
#, python-format
msgid "%s data complete"
msgstr ""

#: ../satellite_tools/satsync.py:665
msgid "Retrieving / parsing channel data"
msgstr ""

#: ../satellite_tools/satsync.py:718
msgid "Channel data complete"
msgstr ""

#: ../satellite_tools/satsync.py:736
#, python-format
msgid "%10s import from %s"
msgstr ""

#: ../satellite_tools/satsync.py:739
#, python-format
msgid "%10s import from %s - %s"
msgstr ""

#: ../satellite_tools/satsync.py:743
#, python-format
msgid "%10s"
msgstr ""

#: ../satellite_tools/satsync.py:750
msgid "p"
msgstr ""

#: ../satellite_tools/satsync.py:752
msgid "."
msgstr ""

#: ../satellite_tools/satsync.py:758
msgid "   p = previously imported/synced channel"
msgstr ""

#: ../satellite_tools/satsync.py:759
msgid "   . = channel not yet imported/synced"
msgstr ""

#: ../satellite_tools/satsync.py:765
msgid "   e = channel no longer supported (end-of-service)"
msgstr ""

#: ../satellite_tools/satsync.py:767
msgid "   ? = channel label invalid --- typo?"
msgstr ""

#: ../satellite_tools/satsync.py:771
#, python-format
msgid "   %s:"
msgstr ""

#: ../satellite_tools/satsync.py:772
#, python-format
msgid "      %s %-40s %4s %s"
msgstr ""

#: ../satellite_tools/satsync.py:773
#, fuzzy
msgid "base-channels"
msgstr "Sprzeczne kanaÅ‚y podstawowe"

#: ../satellite_tools/satsync.py:786 ../satellite_tools/satsync.py:1603
msgid "NONE RELEVANT"
msgstr ""

#: ../satellite_tools/satsync.py:808
msgid "end-of-service"
msgstr ""

#: ../satellite_tools/satsync.py:809
msgid "e"
msgstr ""

#: ../satellite_tools/satsync.py:815
msgid "   typos:"
msgstr ""

#: ../satellite_tools/satsync.py:816
msgid "?"
msgstr ""

#: ../satellite_tools/satsync.py:831
#, python-format
msgid "XXX: imported channels: %s"
msgstr ""

#: ../satellite_tools/satsync.py:832
#, python-format
msgid "XXX:   cached channels: %s"
msgstr ""

#: ../satellite_tools/satsync.py:837
msgid "XXX: list channels called"
msgstr ""

#: ../satellite_tools/satsync.py:855
msgid "ERROR: these channels either do not exist or are not available:"
msgstr ""

#: ../satellite_tools/satsync.py:859
#, python-format
msgid "       (to see a list of channel labels: %s --list-channels)"
msgstr ""

#: ../satellite_tools/satsync.py:904
#, python-format
msgid "   Retrieving / parsing short package metadata: %s (%s)"
msgstr ""

#: ../satellite_tools/satsync.py:965
#, python-format
msgid "Diffing package metadata (what's missing locally?): %s"
msgstr ""

#: ../satellite_tools/satsync.py:971 ../satellite_tools/satsync.py:1254
msgid "Diffing:    "
msgstr ""

#: ../satellite_tools/satsync.py:988
msgid "ERROR: incremental dump skipped"
msgstr ""

#: ../satellite_tools/satsync.py:1079
msgid "Downloading rpm packages"
msgstr ""

#: ../satellite_tools/satsync.py:1084
#, python-format
msgid "   Fetching any missing RPMs: %s (%s)"
msgstr ""

#: ../satellite_tools/satsync.py:1085 ../satellite_tools/satsync.py:1153
msgid "NONE MISSING"
msgstr ""

#: ../satellite_tools/satsync.py:1094
msgid "Processing rpm packages complete"
msgstr ""

#: ../satellite_tools/satsync.py:1121
msgid "Downloading package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1146
msgid "Downloading srpm packages"
msgstr ""

#: ../satellite_tools/satsync.py:1152
#, python-format
msgid "   Fetching any missing SRPMs: %s (%s)"
msgstr ""

#: ../satellite_tools/satsync.py:1249
#, python-format
msgid "Diffing source package metadata (what's missing locally?): %s"
msgstr ""

#: ../satellite_tools/satsync.py:1260
msgid "Downloading source package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1338 ../satellite_tools/satsync.py:2027
#, fuzzy, python-format
msgid "Unable to save file %s: %s"
msgstr "Nie moÅ¼na upowaÅ¼niÄ‡ systemu"

#. for
#. Retried a number of times and it still failed; log the
#. file as being failed and move on
#: ../satellite_tools/satsync.py:1345
#, python-format
msgid "Failed to fetch file %s"
msgstr ""

#: ../satellite_tools/satsync.py:1350
msgid "Downloading kickstartable trees metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1365
msgid "Downloading kickstartable trees files"
msgstr ""

#: ../satellite_tools/satsync.py:1504
#, python-format
msgid "Grabbing all patches for channel %s"
msgstr ""

#: ../satellite_tools/satsync.py:1554
msgid "Downloading patch data"
msgstr ""

#: ../satellite_tools/satsync.py:1556
msgid "Forcing download of all patch data for requested channels."
msgstr ""

#: ../satellite_tools/satsync.py:1571
msgid "Downloading patch data complete"
msgstr ""

#: ../satellite_tools/satsync.py:1576 ../satellite_tools/satsync.py:1597
msgid "Downloading:"
msgstr ""

#: ../satellite_tools/satsync.py:1579
msgid " - complete"
msgstr ""

#: ../satellite_tools/satsync.py:1624
msgid "Importing source package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1627
msgid "Importing package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1635
msgid "Importing:  "
msgstr ""

#. not in the cache
#: ../satellite_tools/satsync.py:1703
msgid ""
"Package Not Found in Cache, Clear the Cache "
"to                                  Regenerate it."
msgstr ""

#: ../satellite_tools/satsync.py:1709
msgid "Importing channel patches"
msgstr ""

#: ../satellite_tools/satsync.py:1714
#, python-format
msgid "Importing %s patches for channel %s."
msgstr ""

#. Incomplete configuration
#: ../satellite_tools/satsync.py:2113
msgid "ERROR: server.mount_point not set in the configuration file"
msgstr ""

#: ../satellite_tools/satsync.py:2117
#, python-format
msgid "ERROR: server.mount_point %s do not exist"
msgstr ""

#: ../satellite_tools/satsync.py:2122
#, python-format
msgid "ERROR: path under server.mount_point (%s)  do not exist"
msgstr ""

#: ../satellite_tools/satsync.py:2199
#, python-format
msgid "Commandline: %s"
msgstr ""

#: ../satellite_tools/satsync.py:2202
#, python-format
msgid ""
"DEBUG ONLY: max. batch-size for XML/database-import processing (1..%s).\"man "
"satellite-sync\" for more information."
msgstr ""

#: ../satellite_tools/satsync.py:2205
msgid "alternative SSL CA Cert (fullpath to cert file)"
msgstr ""

#: ../satellite_tools/satsync.py:2207
msgid "process data for this channel only"
msgstr ""

#: ../satellite_tools/satsync.py:2209
msgid ""
"disk dump will be considered to be a full export; see \"man satellite-sync\" "
"for more information."
msgstr ""

#: ../satellite_tools/satsync.py:2212
msgid "existing custom channels will also be synced (unless -c is used)"
msgstr ""

#: ../satellite_tools/satsync.py:2214
#, python-format
msgid ""
"override debug level set in /etc/rhn/rhn.conf (which is currently set at %s)."
msgstr ""

#: ../satellite_tools/satsync.py:2216
#, python-format
msgid "requested version of XML dump (default: %s)"
msgstr ""

#: ../satellite_tools/satsync.py:2218
msgid "e-mail a report of what was synced/imported"
msgstr ""

#: ../satellite_tools/satsync.py:2220
msgid "forcibly process all (not a diff of) patch metadata"
msgstr ""

#: ../satellite_tools/satsync.py:2222
msgid "Do not use an http proxy under any circumstances."
msgstr ""

#: ../satellite_tools/satsync.py:2224
msgid "alternative http proxy (hostname:port)"
msgstr ""

#: ../satellite_tools/satsync.py:2226
msgid "alternative http proxy username"
msgstr ""

#: ../satellite_tools/satsync.py:2228
msgid "alternative http proxy password"
msgstr ""

#: ../satellite_tools/satsync.py:2230
msgid "parent SUSE Manager to import content from"
msgstr ""

#: ../satellite_tools/satsync.py:2232
msgid "list all available channels and exit"
msgstr ""

#: ../satellite_tools/satsync.py:2234
msgid "help on all error codes mgr-inter-sync returns"
msgstr ""

#: ../satellite_tools/satsync.py:2236
msgid "source mount point for import - disk update only"
msgstr ""

#: ../satellite_tools/satsync.py:2238
msgid "do not process patch data"
msgstr ""

#: ../satellite_tools/satsync.py:2240
msgid "do not process kickstart data (provisioning only)"
msgstr ""

#: ../satellite_tools/satsync.py:2242
msgid "do not process full package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:2244
msgid "do not download, or process any RPMs"
msgstr ""

#: ../satellite_tools/satsync.py:2246
msgid "turn off SSL (not recommended)"
msgstr ""

#: ../satellite_tools/satsync.py:2248
msgid "org to which the sync imports data. defaults to the admin account"
msgstr ""

#: ../satellite_tools/satsync.py:2250
#, fuzzy
msgid "print the configuration and exit"
msgstr "KanaÅ‚ konfiguracji nie istnieje"

#: ../satellite_tools/satsync.py:2252
msgid "alternative server with which to connect (hostname)"
msgstr ""

#: ../satellite_tools/satsync.py:2254
msgid "synchronize to this step (man satellite-sync for more info)"
msgstr ""

#: ../satellite_tools/satsync.py:2256
msgid "write complete data to tempfile before streaming to remainder of app"
msgstr ""

#: ../satellite_tools/satsync.py:2258
msgid "DEBUG ONLY: alternative path to digital system id"
msgstr ""

#: ../satellite_tools/satsync.py:2260
msgid "alternative email address(es) for sync output (--email option)"
msgstr ""

#: ../satellite_tools/satsync.py:2262
msgid "do not remove rpms when importing from local dump"
msgstr ""

#: ../satellite_tools/satsync.py:2264
msgid ""
"the fully qualified domain name of the master Satellite. Valid with --mount-"
"point only. Required if you want to import org data and channel permissions."
msgstr ""

#: ../satellite_tools/satsync.py:2274
#, python-format
msgid "ERROR: these arguments make no sense in this context (try --help): %s"
msgstr ""

#. An SQL error is fatal... crash and burn
#: ../satellite_tools/satsync.py:2286
#, python-format
msgid "ERROR: Can't connect to the database: %s"
msgstr ""

#: ../satellite_tools/satsync.py:2287
msgid "ERROR: Check if your database is running."
msgstr ""

#: ../satellite_tools/satsync.py:2322
#, python-format
msgid "ERROR: --debug-level takes an in integer value within the range %s."
msgstr ""

#: ../satellite_tools/satsync.py:2324
msgid "  0  - little logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2325
msgid "  1  - minimal logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2326
msgid "  2  - normal level of logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2327
msgid "  3  - lots of logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2328
msgid "  4+ - excessive logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2341
msgid "ERROR: The --master option is only valid with the --mount-point option"
msgstr ""

#: ../satellite_tools/satsync.py:2351
#, fuzzy, python-format
msgid "ERROR: Unable to lookup Org Id %s"
msgstr "Nie moÅ¼na odnaleÅºÄ‡ serwera"

#: ../satellite_tools/satsync.py:2360
msgid ""
"WARNING: --list-channels option overrides any --step option. --step ignored."
msgstr ""

#: ../satellite_tools/satsync.py:2375
#, python-format
msgid ""
"ERROR: '%s' is not a valid step. See 'man mgr-inter-sync' for more detail."
msgstr ""

#: ../satellite_tools/satsync.py:2407
msgid ""
"ERROR: No channels currently imported; try mgr-inter-sync --list-channels; "
"then mgr-inter-sync -c chn0 -c chn1..."
msgstr ""

#. int(None) --> TypeError
#. int('a')  --> ValueError
#: ../satellite_tools/satsync.py:2457 ../satellite_tools/satsync.py:2461
msgid "ERROR: --batch-size must have a value within the range: 1..50"
msgstr ""

#: ../satellite_tools/satsync.py:2469
#, python-format
msgid "ERROR: no such directory %s"
msgstr ""

#: ../satellite_tools/satsync.py:2474
msgid "Error Codes: Returned codes means:"
msgstr ""

#: ../satellite_tools/satsync.py:2475
msgid " -1  - Could not lock file or KeyboardInterrupt or SystemExit"
msgstr ""

#: ../satellite_tools/satsync.py:2476
msgid "  0  - User interrupted or intentional exit"
msgstr ""

#: ../satellite_tools/satsync.py:2477
msgid "  1  - attempting to run more than one instance of mgr-inter-sync."
msgstr ""

#: ../satellite_tools/satsync.py:2478
msgid "  2  - Unable to find synchronization tools."
msgstr ""

#: ../satellite_tools/satsync.py:2479
msgid "  3  - a general socket exception occurred"
msgstr ""

#: ../satellite_tools/satsync.py:2480
msgid "  4  - an SSL error occurred. Recheck your SSL settings."
msgstr ""

#: ../satellite_tools/satsync.py:2481
msgid "  5  - ISS error"
msgstr ""

#: ../satellite_tools/satsync.py:2482
msgid "  6  - unhandled exception occurred"
msgstr ""

#: ../satellite_tools/satsync.py:2483
msgid "  7  - unknown sync error"
msgstr ""

#: ../satellite_tools/satsync.py:2484
msgid "  8  - ERROR: must be root to execute"
msgstr ""

#: ../satellite_tools/satsync.py:2485
msgid "  9  - rpclib fault during synchronization init"
msgstr ""

#: ../satellite_tools/satsync.py:2486
msgid "  10 - synchronization init error"
msgstr ""

#: ../satellite_tools/satsync.py:2487
msgid "  11 - Error parsing XML stream"
msgstr ""

#: ../satellite_tools/satsync.py:2488
#, fuzzy
msgid "  12 - Channel do not exist"
msgstr "Podany kanaÅ‚ nie istnieje."

#: ../satellite_tools/satsync.py:2489
msgid "  13 - SQL error during importing package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:2490
msgid "  14 - SQL error during linking channel packages"
msgstr ""

#: ../satellite_tools/satsync.py:2491
msgid "  15 - SQL error during xml processing"
msgstr ""

#: ../satellite_tools/satsync.py:2492
msgid "  16 - server.mount_point not set in the configuration file"
msgstr ""

#: ../satellite_tools/satsync.py:2493
msgid ""
"  17 - SQL error during retrieving the channels already imported in the SUSE "
"Manager database"
msgstr ""

#: ../satellite_tools/satsync.py:2494
msgid "  18 - Wrong db connection string in rhn.conf"
msgstr ""

#: ../satellite_tools/satsync.py:2495
msgid "  19 - Bad arguments"
msgstr ""

#: ../satellite_tools/satsync.py:2496
msgid "  20 - Could not connect to db."
msgstr ""

#: ../satellite_tools/satsync.py:2497
msgid "  21 - Bad debug level"
msgstr ""

#: ../satellite_tools/satsync.py:2498
msgid "  22 - Not valid step"
msgstr ""

#: ../satellite_tools/satsync.py:2499
msgid "  24 - no such file"
msgstr ""

#: ../satellite_tools/satsync.py:2500
msgid "  25 - no such directory"
msgstr ""

#: ../satellite_tools/satsync.py:2501
msgid "  26 - mount_point does not exist"
msgstr ""

#: ../satellite_tools/satsync.py:2502
msgid "  27 - No such org"
msgstr ""

#: ../satellite_tools/satsync.py:2503
msgid "  28 - error: --master is only valid with --mount-point"
msgstr ""

#: ../satellite_tools/satsync.py:2510
#, python-format
msgid "ERROR: unknown dump version, try one of %s"
msgstr ""

#~ msgid "Your system was not found in the RHN database"
#~ msgstr "Nie odnaleziono systemu wÂ bazie danych usÅ‚ugi RHN"

#~ msgid "ISS is disabled on this satellite."
#~ msgstr "WÂ tej usÅ‚udze Satellite wyÅ‚Ä…czono ISS."

#~ msgid "Spacewalk Proxy service not enabled for server profile: \"%s\""
#~ msgstr "UsÅ‚uga Spacewalk Proxy nie jest wÅ‚Ä…czona dla profilu serwera: â€ž%sâ€"

#~ msgid "Red Hat Satellite Welcome Message"
#~ msgstr "Komunikat powitalny usÅ‚ugi Red Hat Satellite"

#~ msgid "Red Hat Satellite Privacy Statement"
#~ msgstr "OÅ›wiadczenie oÂ prywatnoÅ›ci usÅ‚ugi Red Hat Satellite"
 07070100000085000081B40000000000000000000000016290A0C10000B674000000000000000000000000000000000000001B00000000spacewalk-backend/po/pt.po    # SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
#
# Translators:
msgid ""
msgstr ""
"Project-Id-Version: Spacewalk\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-10-16 13:34+0200\n"
"PO-Revision-Date: 2020-08-17 13:26+0000\n"
"Last-Translator: Ricardo Mateus <rmateus@suse.com>\n"
"Language-Team: Portuguese <https://l10n.opensuse.org/projects/uyuni/backend/"
"pt/>\n"
"Language: pt\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: Weblate 3.6.1\n"

#: ../server/apacheAuth.py:66
#, python-format
msgid "incomplete proxy authentication token: %s"
msgstr "Token de autenticaÃ§Ã£o de proxy incompleto: %s"

#: ../server/apacheAuth.py:84
#, python-format
msgid "Sent proxy signature %s does not match ours %s."
msgstr ""

#: ../server/apacheAuth.py:119
msgid "declined proxy authentication"
msgstr ""

#: ../server/apacheRequest.py:59
#, python-format
msgid "Invalid request received (%s)."
msgstr ""

#: ../server/apacheRequest.py:120
#, python-format
msgid ""
"IMPORTANT MESSAGE FOLLOWS:\n"
"%s"
msgstr ""

#: ../server/apacheRequest.py:149
#, python-format
msgid ""
"While running '%s': caught\n"
"%s : %s\n"
msgstr ""

#: ../server/apacheRequest.py:606
#, python-format
msgid "Invalid URI %s"
msgstr ""

#: ../server/configFilesHandler.py:129 ../server/handlers/app/packages.py:192
#: ../server/handlers/xmlrpc/registration.py:215
#: ../server/handlers/xmlrpc/registration.py:1168
#: ../server/handlers/xmlrpc/registration.py:1307
#, python-format
msgid ""
"\n"
"                   %s Account has been deactivated on this server.\n"
"                   Please contact your Org administrator for more help."
msgstr ""

#: ../server/handlers/applet/applet.py:78
#, python-brace-format
msgid "Your system was not found in the {PRODUCT_NAME} database"
msgstr ""

#: ../server/handlers/sat/auth.py:45
msgid "ISS is disabled on this server."
msgstr ""

#: ../server/handlers/sat/auth.py:50
#, python-format
msgid "Server \"%s\" is not enabled for ISS."
msgstr ""

#: ../server/handlers/xmlrpc/errata.py:64
#, python-format
msgid "Expected a package name, not: %s"
msgstr ""

#: ../server/handlers/xmlrpc/errata.py:115
#, python-format
msgid "Expected a package, not: %s"
msgstr ""

#: ../server/handlers/xmlrpc/proxy.py:65
#, python-format
msgid "SUSE Manager Proxy service not enabled for server profile: \"%s\""
msgstr ""

#: ../server/handlers/xmlrpc/proxy.py:85
msgid "Invalid session key"
msgstr ""

#: ../server/handlers/xmlrpc/proxy.py:93
msgid "This server ID no longer exists"
msgstr ""

#: ../server/handlers/xmlrpc/queue.py:433
#, python-format
msgid "Invalid action value type %s (%s)"
msgstr ""

#: ../server/handlers/xmlrpc/queue.py:464
#, python-format
msgid "Action %s does not belong to server %s"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:194
msgid "Required data missing"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:198
msgid "Required members missing"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:207
msgid "Attempt to register a system to an invalid username"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:839
msgid "Invalid system release version requested"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1063
msgid ""
"Unable to find a valid network interface, both ipaddr and ip6addr not found."
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1115
#, python-brace-format
msgid "{PRODUCT_NAME} Welcome Message"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1125
msgid "Privacy Statement"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1146
msgid "Expected a dictionary as a product argument"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1374
#, python-format
msgid "Invalid value '%s' for %s (%s)"
msgstr ""

#: ../server/handlers/xmlrpc/scap.py:104
msgid "Invalid system_id/action_id pair."
msgstr ""

#: ../server/handlers/xmlrpc/up2date.py:233
#, python-format
msgid "Invalid value %s (%s)"
msgstr ""

#: ../server/importlib/userAuth.py:98
msgid "You are not authorized to manage packages in the null org"
msgstr ""

#: ../server/importlib/userAuth.py:103
#, python-format
msgid "You are not allowed to manage packages in the %s org"
msgstr ""

#: ../server/importlib/userAuth.py:121
msgid "You are not allowed to perform administrative tasks"
msgstr ""

#: ../server/importlib/userAuth.py:144
#, python-format
msgid ""
"You are not allowed to manage channel %s, or that channel does not exist"
msgstr ""

#: ../server/importlib/userAuth.py:204
#, python-format
msgid ""
"\n"
"               %s Account has been deactivated on this server.\n"
"               Please contact your Org administrator for more help."
msgstr ""

#: ../server/rhnChannel.py:1992
#, python-format
msgid ""
"Your account does not have access to any channels matching "
"(release='%(release)s', arch='%(arch)s')%(www_activation)s"
msgstr ""

#: ../server/rhnChannel.py:2002
msgid ""
"\n"
"If you have a registration number, please register with it first at http://"
"www.redhat.com/apps/activate/ and then try again.\n"
"\n"
msgstr ""

#: ../server/rhnChannel.py:2012
#, python-format
msgid "Insufficient subscription permissions for release (%s, %s"
msgstr ""

#. Various messages that can be reused
#.
#. bretm 02/07/2007 -- when we have better old-client documentation, probably
#. will be safe to get rid of all this crap
#: ../server/rhnChannel.py:2276 ../server/rhnChannel.py:2287
#: ../server/rhnChannel.py:2302
msgid "System Registered but Inactive"
msgstr ""

#: ../server/rhnChannel.py:2277
#, python-format
msgid ""
"\n"
"Invalid Architecture and OS release combination (%s, %s).\n"
"Your system has been registered, but will not receive updates\n"
"because it is not subscribed to a channel. If you have not yet\n"
"activated your product for service, please visit our website at:\n"
"\n"
"     http://www.redhat.com/apps/activate/\n"
"\n"
"...to activate your product."
msgstr ""

#: ../server/rhnChannel.py:2288
#, python-format
msgid ""
"\n"
"Invalid Architecture and OS release combination (%s, %s).\n"
"Your system has been registered, but will not receive updates\n"
"because it could not be subscribed to a base channel.\n"
"Please contact your organization administrator for assistance.\n"
msgstr ""

#: ../server/rhnChannel.py:2295
#, python-format
msgid ""
"\n"
"  This system has been successfully registered, but is not yet entitled\n"
"  to service.  To entitle this system to service, login to the web site at:\n"
"\n"
"  %(entitlement_url)s\n"
msgstr ""

#: ../server/rhnChannel.py:2303
#, python-format
msgid ""
"\n"
"  This system has been successfully registered, but no service entitlements\n"
"  were available.  To entitle this system to service, login to the web site "
"at:\n"
"\n"
"  %(entitlement_url)s\n"
msgstr ""

#: ../server/rhnHandler.py:62
msgid "Please run rhn_register as root on this client"
msgstr ""

#: ../server/rhnHandler.py:75
#, python-format
msgid "Service not enabled for system profile: \"%s\""
msgstr ""

#: ../server/rhnPackage.py:49 ../server/rhnPackage.py:87
#: ../server/rhnPackage.py:107 ../server/rhnPackage.py:158
#, python-format
msgid "Invalid RPM package %s requested"
msgstr ""

#: ../server/rhnPackage.py:112
msgid "Package not found"
msgstr ""

#: ../server/rhnServer/server_class.py:97
#, python-format
msgid "Architecture `%s' is not supported"
msgstr ""

#: ../server/rhnServer/server_token.py:78
#, python-format
msgid "Token `%s' has more than one base channel assigned"
msgstr ""

#: ../server/rhnServer/server_token.py:80
msgid "Conflicting base channels"
msgstr ""

#: ../server/rhnServer/server_token.py:190
#, python-format
msgid "Failed to add server to group %s"
msgstr ""

#: ../server/rhnServer/server_token.py:503
#, python-format
msgid "Maximum usage count of %s reached"
msgstr ""

#: ../server/rhnServer/server_token.py:744
msgid ""
"Stacking of re-registration tokens with different base entitlements is not "
"supported"
msgstr ""

#: ../server/rhnServer/server_token.py:811
#, python-format
msgid "Could not find token '%s'"
msgstr ""

#. Cannot use activation keys from different orgs
#: ../server/rhnServer/server_token.py:843
msgid "Tokens from mismatching orgs"
msgstr ""

#. Two tokens with different kickstart sessions
#: ../server/rhnServer/server_token.py:853
msgid "Kickstart session mismatch"
msgstr ""

#: ../server/rhnServer/server_token.py:877
msgid "Stacking of re-registration tokens is not supported"
msgstr ""

#: ../server/rhnUser.py:289 ../server/rhnUser.py:292
msgid "Invalid username/password combination"
msgstr ""

#. nope, not reserved either
#: ../server/rhnUser.py:467
#, python-format
msgid "Username `%s' has not been reserved"
msgstr ""

#. New accounts have to specify an e-mail address
#: ../server/rhnUser.py:473
msgid "E-mail address not specified"
msgstr ""

#: ../server/rhnUser.py:509
#, python-format
msgid "username should be at least %d characters"
msgstr ""

#: ../server/rhnUser.py:512
#, python-format
msgid "username should be less than %d characters"
msgstr ""

#: ../server/rhnUser.py:523
#, python-format
msgid "username = `%s', invalid character `%s'"
msgstr ""

#: ../server/rhnUser.py:542
#, python-format
msgid "Please limit your e-mail address to %s chars"
msgstr ""

#: ../server/rhnUser.py:623
#, python-format
msgid "password must be at least %d characters"
msgstr ""

#: ../server/rhnUser.py:626
#, python-format
msgid "Password must be shorter than %d characters"
msgstr ""

#: ../server/rhnUser.py:644
#, python-format
msgid "password contains character `%s'"
msgstr ""

#: ../server/rhnUser.py:651
#, python-format
msgid "username should be at least %d characters long"
msgstr ""

#: ../server/rhnUser.py:662
#, python-format
msgid "Cannot register usernames ending with %s"
msgstr ""

#. 0-999: Red Hat client/client-like interaction errors:
#: ../common/rhnException.py:53
msgid "This does not appear to be a valid username."
msgstr ""

#: ../common/rhnException.py:54
msgid "Invalid username and password combination."
msgstr ""

#: ../common/rhnException.py:55
msgid "This login is already taken, or the password is incorrect."
msgstr ""

#: ../common/rhnException.py:56
msgid "Permission denied."
msgstr ""

#: ../common/rhnException.py:57
msgid "Object not found."
msgstr ""

#: ../common/rhnException.py:58
msgid "Invalid System Digital ID."
msgstr ""

#: ../common/rhnException.py:59
msgid "Invalid System Credentials."
msgstr ""

#: ../common/rhnException.py:60
msgid "Could not retrieve user data from database."
msgstr ""

#: ../common/rhnException.py:61
msgid "Valid username required."
msgstr ""

#: ../common/rhnException.py:62
msgid "Valid password required."
msgstr ""

#: ../common/rhnException.py:63
msgid "Minimum username length violation."
msgstr ""

#: ../common/rhnException.py:64
msgid "Minimum password length violation."
msgstr ""

#: ../common/rhnException.py:65
msgid "The username contains invalid characters."
msgstr ""

#: ../common/rhnException.py:66
msgid "File not found."
msgstr ""

#: ../common/rhnException.py:67
msgid "Architecture and OS version combination is not supported."
msgstr ""

#: ../common/rhnException.py:68
msgid "Could not retrieve system data from database."
msgstr ""

#: ../common/rhnException.py:69
msgid "Invalid arguments passed to function."
msgstr ""

#: ../common/rhnException.py:70
msgid "Unable to retrieve requested entry."
msgstr ""

#: ../common/rhnException.py:71
msgid "Could not update database entry."
msgstr ""

#: ../common/rhnException.py:72
msgid "Unsupported server architecture."
msgstr ""

#: ../common/rhnException.py:73
#, python-format
msgid ""
"\n"
"     The anonymous server functionality is no longer available.\n"
"\n"
"     Please re-register this system by running mgr_register as root.\n"
"     Please visit https://%(hostname)s/rhn/systems/SystemEntitlements.do\n"
"     or login at https://%(hostname)s, and from the \"Overview\" tab,\n"
"     select \"Subscription Management\" to enable the service for this "
"system.\n"
"     "
msgstr ""

#: ../common/rhnException.py:81
msgid "Record not available in the database."
msgstr ""

#: ../common/rhnException.py:82
msgid "Invalid value for entry."
msgstr ""

#: ../common/rhnException.py:83
#, python-format
msgid ""
"\n"
"     This system does not have a valid entitlement for SUSE Manager.\n"
"     Please visit https://%(hostname)s/rhn/systems/SystemEntitlements.do\n"
"     or login at https://%(hostname)s, and from the \"Overview\" tab,\n"
"     select \"Subscription Management\" to enable the service for this "
"system.\n"
"     "
msgstr ""

#: ../common/rhnException.py:89
msgid "Channel error"
msgstr ""

#: ../common/rhnException.py:90
msgid "Client session token is invalid."
msgstr ""

#: ../common/rhnException.py:91
msgid "Client session token has expired."
msgstr ""

#: ../common/rhnException.py:92
msgid "You are not authorized to retrieve the requested object."
msgstr ""

#: ../common/rhnException.py:93
msgid "Invalid action"
msgstr ""

#: ../common/rhnException.py:94
msgid "You are not allowed to perform administrative tasks on this system."
msgstr ""

#: ../common/rhnException.py:96
msgid "The system is already subscribed to the specified channel."
msgstr ""

#: ../common/rhnException.py:97
msgid "The system is not currently subscribed to the specified channel."
msgstr ""

#: ../common/rhnException.py:98
msgid "The specified channel does not exist."
msgstr ""

#: ../common/rhnException.py:99
msgid "Invalid channel version."
msgstr ""

#: ../common/rhnException.py:100
msgid ""
"\n"
"     User group membership limits exceeded.\n"
"\n"
"     The current settings for your account do not allow you to add another\n"
"     user account. Please check with the organization administrator for "
"your\n"
"     account if the maximum number of users allowed to subscribe to server "
"needs\n"
"     to be changed.\n"
"     "
msgstr ""

#: ../common/rhnException.py:108
msgid ""
"\n"
"     System group membership limits exceeded.\n"
"\n"
"     The current settings for your account do not allow you to add another\n"
"     system profile. Please check with the organization administrator for "
"your\n"
"     account for modifying the maximum number of system profiles that can "
"be\n"
"     subscribed to your account.\n"
"     "
msgstr ""

#: ../common/rhnException.py:116
msgid ""
"\n"
"     Invalid architecture.\n"
"\n"
"     The architecture of the package is not supported by\n"
"     "
msgstr ""

#: ../common/rhnException.py:121
msgid "Invalid RPM header"
msgstr ""

#: ../common/rhnException.py:122
msgid ""
"\n"
"    This system is already registered as a Salt Minion. If you want to "
"register it as a traditional client\n"
"    please delete it first via the web UI or API and then register it using "
"the traditional tools.\n"
"    "
msgstr ""

#. For the uploading tools
#: ../common/rhnException.py:127
msgid "Invalid information uploaded to the server"
msgstr ""

#: ../common/rhnException.py:128
msgid "Error uploading network interfaces configuration."
msgstr ""

#: ../common/rhnException.py:129
msgid ""
"\n"
"     Package Upload Failed due to uniqueness constraint violation.\n"
"     Make sure the package does not have any duplicate dependencies or\n"
"     does not already exists on the server\n"
"     "
msgstr ""

#: ../common/rhnException.py:134
msgid ""
"\n"
"     The --force rhnpush option is disabled on this server.\n"
"     Please contact your SUSE Manager administrator for more help.\n"
"     "
msgstr ""

#. 60-70: token errors
#: ../common/rhnException.py:140
msgid ""
"\n"
"     The activation token specified could not be found on the server.\n"
"     Please retry with a valid key.\n"
"     "
msgstr ""

#: ../common/rhnException.py:144
msgid "Too many systems registered using this registration token"
msgstr ""

#: ../common/rhnException.py:145
msgid "Token contains invalid, obsoleted or insufficient settings"
msgstr ""

#: ../common/rhnException.py:146
msgid "Conflicting activation tokens"
msgstr ""

#. 70-80: channel subscription errors
#: ../common/rhnException.py:149
msgid ""
"\n"
"     No matching base channel found for your system.\n"
"     "
msgstr ""

#: ../common/rhnException.py:152
msgid ""
"\n"
"     You do not have subscription permission to the designated channel.\n"
"     Please refer to your organization's channel or organization\n"
"     administrators for further details.\n"
"     "
msgstr ""

#: ../common/rhnException.py:157
msgid "You can not unsubscribe from base channel."
msgstr ""

#: ../common/rhnException.py:158
msgid "SUSE Manager or Proxy channel can not be subscribed."
msgstr ""

#. 80-90: server group errors
#: ../common/rhnException.py:161
msgid "There was an error while trying to join the system to its groups"
msgstr ""

#. 90-100: entitlement errors
#: ../common/rhnException.py:164
msgid "Unable to entitle system"
msgstr ""

#. 100-109: e-mail and uuid related faults
#: ../common/rhnException.py:167
msgid "Maximum e-mail length violation."
msgstr ""

#: ../common/rhnException.py:168
msgid "This system has been previously registered."
msgstr ""

#: ../common/rhnException.py:169
msgid "Invalid username"
msgstr ""

#. 140-159 applet errors
#: ../common/rhnException.py:172
msgid "Unable to look up server"
msgstr ""

#. 160-179: OSAD errors
#: ../common/rhnException.py:175
msgid "Required argument is missing"
msgstr ""

#. 600-699: RHEL5+ EN errors
#: ../common/rhnException.py:178
msgid "No entitlement information tied to hardware"
msgstr ""

#: ../common/rhnException.py:179
msgid "Installation number is not entitling"
msgstr ""

#. 700-799: Additional user input verification errors.
#: ../common/rhnException.py:182
msgid "Maximum username length violation"
msgstr ""

#: ../common/rhnException.py:183
msgid "Maximum password length violation"
msgstr ""

#: ../common/rhnException.py:184
msgid "This user has read only API access. Action denied."
msgstr ""

#: ../common/rhnException.py:186
msgid "System Name cannot be less than 1 character"
msgstr ""

#. 1000-1999: Proxy specific errors:
#. issued by a Proxy to the client
#: ../common/rhnException.py:190
msgid "SUSE Manager Proxy error."
msgstr ""

#: ../common/rhnException.py:191
msgid "SUSE Manager Proxy unable to login."
msgstr ""

#. issued by a SUSE Manager Server/Satellite to the proxy
#: ../common/rhnException.py:193
msgid ""
"\n"
"     SUSE Manager Proxy system ID does not match a Spacewalk Proxy Server\n"
"     in the database.\n"
"     "
msgstr ""

#: ../common/rhnException.py:197
msgid "SUSE Manager Proxy session token is invalid."
msgstr ""

#: ../common/rhnException.py:198
msgid "SUSE Manager Proxy session token has expired."
msgstr ""

#. 2000-2999: Red Hat Satellite specific errors:
#: ../common/rhnException.py:202
msgid ""
"\n"
"      user creation is not allowed via mgr_register;\n"
"     please contact your sysadmin to have your account created.\n"
"     "
msgstr ""

#: ../common/rhnException.py:206
msgid ""
"\n"
"     This SUSE Manager server is not allowed to use Inter Server Sync on "
"this server\n"
"     "
msgstr ""

#: ../common/rhnException.py:209
msgid ""
"\n"
"     Inter Server Sync is disabled on this SUSE Manager Server.\n"
"     "
msgstr ""

#. 3000-3999: XML dumper errors:
#: ../common/rhnException.py:214
msgid "Invalid datatype passed"
msgstr ""

#: ../common/rhnException.py:215
msgid "Unable to retrieve channel"
msgstr ""

#: ../common/rhnException.py:216
msgid "Unable to retrieve package"
msgstr ""

#: ../common/rhnException.py:217
msgid "Unable to retrieve erratum"
msgstr ""

#: ../common/rhnException.py:218
msgid "File is missing"
msgstr ""

#: ../common/rhnException.py:219
msgid "Function retrieval error"
msgstr ""

#: ../common/rhnException.py:220
msgid "Function execution error"
msgstr ""

#: ../common/rhnException.py:221
msgid "Missing version string"
msgstr ""

#: ../common/rhnException.py:222
msgid "Invalid version string"
msgstr ""

#: ../common/rhnException.py:223
msgid "Mismatching versions"
msgstr ""

#: ../common/rhnException.py:224
msgid "Invalid channel version"
msgstr ""

#: ../common/rhnException.py:225
msgid "No comps file for channel"
msgstr ""

#: ../common/rhnException.py:226
msgid "Unable to retrieve comps file"
msgstr ""

#. 4000 - 4999: config management errors
#: ../common/rhnException.py:229
msgid "Configuration action missing"
msgstr ""

#: ../common/rhnException.py:230
msgid "File too large"
msgstr ""

#: ../common/rhnException.py:231
msgid "File contains binary data"
msgstr ""

#: ../common/rhnException.py:232
msgid "Configuration channel is not empty"
msgstr ""

#: ../common/rhnException.py:233
msgid "Permission error"
msgstr ""

#: ../common/rhnException.py:234
msgid "Content missing for configuration file"
msgstr ""

#: ../common/rhnException.py:235
msgid "Template delimiters not specified"
msgstr ""

#: ../common/rhnException.py:236
msgid "Configuration channel does not exist"
msgstr ""

#: ../common/rhnException.py:237
msgid "Configuration channel already exists"
msgstr ""

#: ../common/rhnException.py:238
msgid "File missing from configuration channel"
msgstr ""

#: ../common/rhnException.py:239
msgid "Different revision of this file is uploaded"
msgstr ""

#: ../common/rhnException.py:240
msgid "File already uploaded to configuration channel"
msgstr ""

#: ../common/rhnException.py:241
msgid "File size exceeds remaining quota space"
msgstr ""

#: ../common/rhnException.py:242
msgid "Full path of file must be specified"
msgstr ""

#: ../common/rhnException.py:243
msgid "Invalid revision number"
msgstr ""

#: ../common/rhnException.py:244
msgid "Cannot compare files of different file type"
msgstr ""

#. 5000 - 5999: client content uploading errors
#. 5000 - 5099: crash reporting errors
#: ../common/rhnException.py:248
msgid "Crash information is invalid or incomplete"
msgstr ""

#: ../common/rhnException.py:249
msgid "Crash file information is invalid or incomplete"
msgstr ""

#: ../common/rhnException.py:250
msgid "Error composing crash directory path"
msgstr ""

#: ../common/rhnException.py:251
msgid "Error composing crash file path"
msgstr ""

#: ../common/rhnException.py:252 ../common/rhnException.py:259
msgid "Invalid content encoding"
msgstr ""

#: ../common/rhnException.py:253
msgid "Invalid crash name"
msgstr ""

#: ../common/rhnException.py:254
msgid "Crash reporting is disabled for this organization"
msgstr ""

#. 5100 - 5199: scap results reporting error
#: ../common/rhnException.py:256
msgid "SCAP results file transfer is invalid or incomplete"
msgstr ""

#: ../common/rhnException.py:257
msgid "Error composing directory path for detailed SCAP results"
msgstr ""

#: ../common/rhnException.py:258
msgid "Error composing file path for detailed SCAP results"
msgstr ""

#: ../common/rhnException.py:306
msgid ""
"\n"
"     An error has occurred while processing your request. If this problem\n"
"     persists please enter a bug report at scc.suse.com.\n"
"     If you choose to submit the bug report, please be sure to include\n"
"     details of what you were trying to do when this error occurred and\n"
"     details on how to reproduce this problem.\n"
msgstr ""

#: ../common/rhnException.py:358
#, python-format
msgid ""
"Error Message:\n"
"    %s\n"
msgstr ""

#: ../common/rhnException.py:360
#, python-format
msgid "Error Class Code: %s\n"
msgstr ""

#: ../common/rhnException.py:363
#, python-format
msgid "Error Class Info: %s\n"
msgstr ""

#: ../common/rhnException.py:365
#, python-format
msgid "Explanation: %s"
msgstr ""

#: ../common/rhnTB.py:205
#, python-format
msgid "ERROR: %s %s: %s"
msgstr ""

#: ../common/rhnTB.py:207
#, python-format
msgid "TRACEBACK: %s"
msgstr ""

#: ../satellite_tools/disk_dumper/iss.py:1294
#: ../satellite_tools/disk_dumper/iss.py:1298
#, python-format
msgid "format of %s should be at least YYYYMMDD.\n"
msgstr ""

#: ../satellite_tools/messages.py:26
#, python-format
msgid ""
"\n"
"ERROR: executing step %s. Error is:\n"
"%s\n"
msgstr ""

#: ../satellite_tools/messages.py:31
#, python-format
msgid ""
"\n"
"ERROR: there was a problem accessing the channel data from your temporary\n"
"       repository. Did you migrate all of the data from the channel ISOs\n"
"       do this directory? If so, please recheck the channels ISOs, ensure\n"
"       that you have them all, and then iteratively remount and repopulate\n"
"       the temporary repository (%s).\n"
msgstr ""

#: ../satellite_tools/messages.py:39
#, python-format
msgid ""
"\n"
"ERROR: there was a problem synchronizing the information.\n"
"       Error message: %s\n"
msgstr ""

#: ../satellite_tools/messages.py:44
#, python-format
msgid ""
"\n"
"ERROR: There was a problem communicating with the ISS Master.\n"
"       Depending on the specific error details, please review your "
"configuration,\n"
"       basic network connectivity, and/or name resolution, and try again.\n"
"       Error message: %s\n"
msgstr ""

#: ../satellite_tools/messages.py:51
#, python-format
msgid ""
"\n"
"ERROR: There was a problem communicating with the ISS Master.\n"
"       If the master satellite is older than v5.3, it does not have ISS "
"capability.\n"
"       Otherwise, depending on the specific error details, please review "
"your\n"
"       configuration, basic network connectivity, and/or name resolution, "
"and try again.\n"
"       Error message: %s\n"
msgstr ""

#: ../satellite_tools/messages.py:59
#, python-format
msgid ""
"\n"
"ERROR: a child-channel cannot be synced without its parent being synced as\n"
"       well. A parent needs to be either (a) previously synced or (b) "
"synced\n"
"       in tandem with the desired child-channel. Missing parents for this\n"
"       transaction:\n"
"       %s\n"
msgstr ""

#: ../satellite_tools/messages.py:67
#, python-format
msgid ""
"\n"
"ERROR: you are not entitled to sync a channel in this set of channels.\n"
"Please contact your SUSE Manager contact\n"
"%s"
msgstr ""

#: ../satellite_tools/messages.py:72
#, python-format
msgid "  ERROR: not enough free space (%s KB) on device."
msgstr ""

#: ../satellite_tools/messages.py:74
#, python-format
msgid "    %3d/%s Fetch successful: %s (%s bytes)"
msgstr ""

#: ../satellite_tools/messages.py:75
#, python-format
msgid "    Extinct package:  %s"
msgstr ""

#: ../satellite_tools/messages.py:76
#, python-format
msgid "   Total size: %s"
msgstr ""

#: ../satellite_tools/messages.py:77
#, python-format
msgid "      Downloaded %s of %s. Estimated remaining time: %s"
msgstr ""

#: ../satellite_tools/messages.py:78
#, python-format
msgid "    Fetch unsuccessful: %s"
msgstr ""

#: ../satellite_tools/messages.py:79
#, python-format
msgid "   RPM fetch summary: %s"
msgstr ""

#: ../satellite_tools/messages.py:80
#, python-format
msgid "       success: %d"
msgstr ""

#: ../satellite_tools/messages.py:81
#, python-format
msgid "       failed:  %d"
msgstr ""

#: ../satellite_tools/messages.py:82
#, python-format
msgid "       extinct: %d"
msgstr ""

#: ../satellite_tools/messages.py:84
#, python-format
msgid "   Retrieving / parsing *relevant* package metadata: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:85
#, python-format
msgid "   Retrieving / parsing errata data: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:86
#, python-format
msgid "   Retrieving / parsing kickstart data: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:87
#, python-format
msgid "   Retrieving / parsing kickstart tree files: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:88
#, python-format
msgid "   Importing *relevant* package metadata: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:89
msgid "   * WARNING: this may be a slow process."
msgstr ""

#: ../satellite_tools/messages.py:90
msgid "Linking packages to channels"
msgstr ""

#: ../satellite_tools/messages.py:91
#, python-format
msgid "   Importing *relevant* errata: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:92
msgid "   No new kickstartable tree to import"
msgstr ""

#: ../satellite_tools/messages.py:93
#, python-format
msgid "Importing kickstartable trees (%d)"
msgstr ""

#: ../satellite_tools/messages.py:94
#, python-format
msgid "Imported kickstartable trees (%d)"
msgstr ""

#: ../satellite_tools/reposync.py:111 ../satellite_tools/satsync.py:439
msgid "+++ sending log as an email +++"
msgstr ""

#: ../satellite_tools/reposync.py:114
#, python-format
msgid "%s sync. report from %s"
msgstr ""

#: ../satellite_tools/reposync.py:124 ../satellite_tools/satsync.py:449
msgid "+++ email requested, but there is nothing to send +++"
msgstr ""

#: ../satellite_tools/rhn_satellite_activate.py:198
#, python-format
msgid ""
"\"%s\" (specified in commandline)\n"
"could not be opened and read:\n"
"%s"
msgstr ""

#: ../satellite_tools/rhn_satellite_activate.py:205
#, python-format
msgid ""
"\"%s\" could not be opened\n"
"and/or written to:\n"
"%s"
msgstr ""

#: ../satellite_tools/satsync.py:258
#, python-format
msgid "No handler for step %s"
msgstr ""

#. Try one more time - this time it should be faster since
#. everything should be cached
#: ../satellite_tools/satsync.py:270
msgid "Environment changed, trying again..."
msgstr ""

#: ../satellite_tools/satsync.py:277
msgid "ERROR: Encountered IntegrityError: \n"
msgstr ""

#: ../satellite_tools/satsync.py:285
msgid "Repeated failures"
msgstr ""

#: ../satellite_tools/satsync.py:290
#, python-format
msgid ""
"    Import complete:\n"
"        Begin time: %s\n"
"        End time:   %s\n"
"        Elapsed:    %s\n"
"          "
msgstr ""

#: ../satellite_tools/satsync.py:311
msgid "hours"
msgstr ""

#: ../satellite_tools/satsync.py:311
msgid "minutes"
msgstr ""

#: ../satellite_tools/satsync.py:311
msgid "seconds"
msgstr ""

#: ../satellite_tools/satsync.py:357
msgid ""
"ERROR: The dump is missing package data, use --no-rpms to skip this step or "
"fix the content to include package data."
msgstr ""

#. the orgs() method doesn't exist; that's fine we just
#. won't sync the orgs
#: ../satellite_tools/satsync.py:404
msgid "The SUSE Manager master does not support syncing orgs data."
msgstr ""

#: ../satellite_tools/satsync.py:404
msgid "Skipping..."
msgstr ""

#: ../satellite_tools/satsync.py:442
#, python-format
msgid "SUSE Manager Inter Server sync. report from %s"
msgstr ""

#: ../satellite_tools/satsync.py:521
msgid " - file-system synchronization"
msgstr ""

#: ../satellite_tools/satsync.py:533 ../satellite_tools/satsync.py:541
msgid " - live synchronization"
msgstr ""

#: ../satellite_tools/satsync.py:534
#, python-brace-format
msgid ""
"ERROR: Live content synchronizing with RHN Classic Hosted is no longer "
"supported.\n"
"Please use the cdn-sync command instead unless you are attempting to sync "
"from another {PRODUCT_NAME} via Inter-Server-Sync (ISS), or from local "
"content on disk via Channel Dump ISOs."
msgstr ""

#: ../satellite_tools/satsync.py:542
#, python-format
msgid "   url: %s"
msgstr ""

#: ../satellite_tools/satsync.py:543
#, python-format
msgid "   debug/output level: %s"
msgstr ""

#: ../satellite_tools/satsync.py:553
msgid "ERROR: this server must be registered with SUSE Manager."
msgstr ""

#: ../satellite_tools/satsync.py:575
#, python-format
msgid "Retrieving / parsing %s data"
msgstr ""

#: ../satellite_tools/satsync.py:585 ../satellite_tools/satsync.py:600
msgid "*** SYSTEM INTERRUPT CALLED ***"
msgstr ""

#: ../satellite_tools/satsync.py:593
msgid "ERROR: fatal parser exception occurred "
msgstr ""

#: ../satellite_tools/satsync.py:594
#, python-format
msgid "(line: %s, col: %s msg: %s)"
msgstr ""

#: ../satellite_tools/satsync.py:598
#, python-format
msgid "ERROR: parser exception occurred: %s"
msgstr ""

#: ../satellite_tools/satsync.py:603
msgid "ERROR: exception (during parse) occurred: "
msgstr ""

#: ../satellite_tools/satsync.py:604
#, python-format
msgid ""
"   Encountered some errors with %s data (see logs (%s) for more information)"
msgstr ""

#: ../satellite_tools/satsync.py:606
#, python-format
msgid "   Encountered some errors with %s data:"
msgstr ""

#: ../satellite_tools/satsync.py:607
#, python-format
msgid "   ------- %s PARSE/IMPORT ERROR -------"
msgstr ""

#: ../satellite_tools/satsync.py:609
msgid "   ---------------------------------------"
msgstr ""

#: ../satellite_tools/satsync.py:612
#, python-format
msgid "%s data complete"
msgstr ""

#: ../satellite_tools/satsync.py:665
msgid "Retrieving / parsing channel data"
msgstr ""

#: ../satellite_tools/satsync.py:718
msgid "Channel data complete"
msgstr ""

#: ../satellite_tools/satsync.py:736
#, python-format
msgid "%10s import from %s"
msgstr ""

#: ../satellite_tools/satsync.py:739
#, python-format
msgid "%10s import from %s - %s"
msgstr ""

#: ../satellite_tools/satsync.py:743
#, python-format
msgid "%10s"
msgstr ""

#: ../satellite_tools/satsync.py:750
msgid "p"
msgstr ""

#: ../satellite_tools/satsync.py:752
msgid "."
msgstr ""

#: ../satellite_tools/satsync.py:758
msgid "   p = previously imported/synced channel"
msgstr ""

#: ../satellite_tools/satsync.py:759
msgid "   . = channel not yet imported/synced"
msgstr ""

#: ../satellite_tools/satsync.py:765
msgid "   e = channel no longer supported (end-of-service)"
msgstr ""

#: ../satellite_tools/satsync.py:767
msgid "   ? = channel label invalid --- typo?"
msgstr ""

#: ../satellite_tools/satsync.py:771
#, python-format
msgid "   %s:"
msgstr ""

#: ../satellite_tools/satsync.py:772
#, python-format
msgid "      %s %-40s %4s %s"
msgstr ""

#: ../satellite_tools/satsync.py:773
msgid "base-channels"
msgstr ""

#: ../satellite_tools/satsync.py:786 ../satellite_tools/satsync.py:1603
msgid "NONE RELEVANT"
msgstr ""

#: ../satellite_tools/satsync.py:808
msgid "end-of-service"
msgstr ""

#: ../satellite_tools/satsync.py:809
msgid "e"
msgstr ""

#: ../satellite_tools/satsync.py:815
msgid "   typos:"
msgstr ""

#: ../satellite_tools/satsync.py:816
msgid "?"
msgstr ""

#: ../satellite_tools/satsync.py:831
#, python-format
msgid "XXX: imported channels: %s"
msgstr ""

#: ../satellite_tools/satsync.py:832
#, python-format
msgid "XXX:   cached channels: %s"
msgstr ""

#: ../satellite_tools/satsync.py:837
msgid "XXX: list channels called"
msgstr ""

#: ../satellite_tools/satsync.py:855
msgid "ERROR: these channels either do not exist or are not available:"
msgstr ""

#: ../satellite_tools/satsync.py:859
#, python-format
msgid "       (to see a list of channel labels: %s --list-channels)"
msgstr ""

#: ../satellite_tools/satsync.py:904
#, python-format
msgid "   Retrieving / parsing short package metadata: %s (%s)"
msgstr ""

#: ../satellite_tools/satsync.py:965
#, python-format
msgid "Diffing package metadata (what's missing locally?): %s"
msgstr ""

#: ../satellite_tools/satsync.py:971 ../satellite_tools/satsync.py:1254
msgid "Diffing:    "
msgstr ""

#: ../satellite_tools/satsync.py:988
msgid "ERROR: incremental dump skipped"
msgstr ""

#: ../satellite_tools/satsync.py:1079
msgid "Downloading rpm packages"
msgstr ""

#: ../satellite_tools/satsync.py:1084
#, python-format
msgid "   Fetching any missing RPMs: %s (%s)"
msgstr ""

#: ../satellite_tools/satsync.py:1085 ../satellite_tools/satsync.py:1153
msgid "NONE MISSING"
msgstr ""

#: ../satellite_tools/satsync.py:1094
msgid "Processing rpm packages complete"
msgstr ""

#: ../satellite_tools/satsync.py:1121
msgid "Downloading package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1146
msgid "Downloading srpm packages"
msgstr ""

#: ../satellite_tools/satsync.py:1152
#, python-format
msgid "   Fetching any missing SRPMs: %s (%s)"
msgstr ""

#: ../satellite_tools/satsync.py:1249
#, python-format
msgid "Diffing source package metadata (what's missing locally?): %s"
msgstr ""

#: ../satellite_tools/satsync.py:1260
msgid "Downloading source package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1338 ../satellite_tools/satsync.py:2027
#, python-format
msgid "Unable to save file %s: %s"
msgstr ""

#. for
#. Retried a number of times and it still failed; log the
#. file as being failed and move on
#: ../satellite_tools/satsync.py:1345
#, python-format
msgid "Failed to fetch file %s"
msgstr ""

#: ../satellite_tools/satsync.py:1350
msgid "Downloading kickstartable trees metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1365
msgid "Downloading kickstartable trees files"
msgstr ""

#: ../satellite_tools/satsync.py:1504
#, python-format
msgid "Grabbing all patches for channel %s"
msgstr ""

#: ../satellite_tools/satsync.py:1554
msgid "Downloading patch data"
msgstr ""

#: ../satellite_tools/satsync.py:1556
msgid "Forcing download of all patch data for requested channels."
msgstr ""

#: ../satellite_tools/satsync.py:1571
msgid "Downloading patch data complete"
msgstr ""

#: ../satellite_tools/satsync.py:1576 ../satellite_tools/satsync.py:1597
msgid "Downloading:"
msgstr ""

#: ../satellite_tools/satsync.py:1579
msgid " - complete"
msgstr ""

#: ../satellite_tools/satsync.py:1624
msgid "Importing source package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1627
msgid "Importing package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1635
msgid "Importing:  "
msgstr ""

#. not in the cache
#: ../satellite_tools/satsync.py:1703
msgid ""
"Package Not Found in Cache, Clear the Cache "
"to                                  Regenerate it."
msgstr ""

#: ../satellite_tools/satsync.py:1709
msgid "Importing channel patches"
msgstr ""

#: ../satellite_tools/satsync.py:1714
#, python-format
msgid "Importing %s patches for channel %s."
msgstr ""

#. Incomplete configuration
#: ../satellite_tools/satsync.py:2113
msgid "ERROR: server.mount_point not set in the configuration file"
msgstr ""

#: ../satellite_tools/satsync.py:2117
#, python-format
msgid "ERROR: server.mount_point %s do not exist"
msgstr ""

#: ../satellite_tools/satsync.py:2122
#, python-format
msgid "ERROR: path under server.mount_point (%s)  do not exist"
msgstr ""

#: ../satellite_tools/satsync.py:2199
#, python-format
msgid "Commandline: %s"
msgstr ""

#: ../satellite_tools/satsync.py:2202
#, python-format
msgid ""
"DEBUG ONLY: max. batch-size for XML/database-import processing (1..%s).\"man "
"satellite-sync\" for more information."
msgstr ""

#: ../satellite_tools/satsync.py:2205
msgid "alternative SSL CA Cert (fullpath to cert file)"
msgstr ""

#: ../satellite_tools/satsync.py:2207
msgid "process data for this channel only"
msgstr ""

#: ../satellite_tools/satsync.py:2209
msgid ""
"disk dump will be considered to be a full export; see \"man satellite-sync\" "
"for more information."
msgstr ""

#: ../satellite_tools/satsync.py:2212
msgid "existing custom channels will also be synced (unless -c is used)"
msgstr ""

#: ../satellite_tools/satsync.py:2214
#, python-format
msgid ""
"override debug level set in /etc/rhn/rhn.conf (which is currently set at %s)."
msgstr ""

#: ../satellite_tools/satsync.py:2216
#, python-format
msgid "requested version of XML dump (default: %s)"
msgstr ""

#: ../satellite_tools/satsync.py:2218
msgid "e-mail a report of what was synced/imported"
msgstr ""

#: ../satellite_tools/satsync.py:2220
msgid "forcibly process all (not a diff of) patch metadata"
msgstr ""

#: ../satellite_tools/satsync.py:2222
msgid "Do not use an http proxy under any circumstances."
msgstr ""

#: ../satellite_tools/satsync.py:2224
msgid "alternative http proxy (hostname:port)"
msgstr ""

#: ../satellite_tools/satsync.py:2226
msgid "alternative http proxy username"
msgstr ""

#: ../satellite_tools/satsync.py:2228
msgid "alternative http proxy password"
msgstr ""

#: ../satellite_tools/satsync.py:2230
msgid "parent SUSE Manager to import content from"
msgstr ""

#: ../satellite_tools/satsync.py:2232
msgid "list all available channels and exit"
msgstr ""

#: ../satellite_tools/satsync.py:2234
msgid "help on all error codes mgr-inter-sync returns"
msgstr ""

#: ../satellite_tools/satsync.py:2236
msgid "source mount point for import - disk update only"
msgstr ""

#: ../satellite_tools/satsync.py:2238
msgid "do not process patch data"
msgstr ""

#: ../satellite_tools/satsync.py:2240
msgid "do not process kickstart data (provisioning only)"
msgstr ""

#: ../satellite_tools/satsync.py:2242
msgid "do not process full package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:2244
msgid "do not download, or process any RPMs"
msgstr ""

#: ../satellite_tools/satsync.py:2246
msgid "turn off SSL (not recommended)"
msgstr ""

#: ../satellite_tools/satsync.py:2248
msgid "org to which the sync imports data. defaults to the admin account"
msgstr ""

#: ../satellite_tools/satsync.py:2250
msgid "print the configuration and exit"
msgstr ""

#: ../satellite_tools/satsync.py:2252
msgid "alternative server with which to connect (hostname)"
msgstr ""

#: ../satellite_tools/satsync.py:2254
msgid "synchronize to this step (man satellite-sync for more info)"
msgstr ""

#: ../satellite_tools/satsync.py:2256
msgid "write complete data to tempfile before streaming to remainder of app"
msgstr ""

#: ../satellite_tools/satsync.py:2258
msgid "DEBUG ONLY: alternative path to digital system id"
msgstr ""

#: ../satellite_tools/satsync.py:2260
msgid "alternative email address(es) for sync output (--email option)"
msgstr ""

#: ../satellite_tools/satsync.py:2262
msgid "do not remove rpms when importing from local dump"
msgstr ""

#: ../satellite_tools/satsync.py:2264
msgid ""
"the fully qualified domain name of the master Satellite. Valid with --mount-"
"point only. Required if you want to import org data and channel permissions."
msgstr ""

#: ../satellite_tools/satsync.py:2274
#, python-format
msgid "ERROR: these arguments make no sense in this context (try --help): %s"
msgstr ""

#. An SQL error is fatal... crash and burn
#: ../satellite_tools/satsync.py:2286
#, python-format
msgid "ERROR: Can't connect to the database: %s"
msgstr ""

#: ../satellite_tools/satsync.py:2287
msgid "ERROR: Check if your database is running."
msgstr ""

#: ../satellite_tools/satsync.py:2322
#, python-format
msgid "ERROR: --debug-level takes an in integer value within the range %s."
msgstr ""

#: ../satellite_tools/satsync.py:2324
msgid "  0  - little logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2325
msgid "  1  - minimal logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2326
msgid "  2  - normal level of logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2327
msgid "  3  - lots of logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2328
msgid "  4+ - excessive logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2341
msgid "ERROR: The --master option is only valid with the --mount-point option"
msgstr ""

#: ../satellite_tools/satsync.py:2351
#, python-format
msgid "ERROR: Unable to lookup Org Id %s"
msgstr ""

#: ../satellite_tools/satsync.py:2360
msgid ""
"WARNING: --list-channels option overrides any --step option. --step ignored."
msgstr ""

#: ../satellite_tools/satsync.py:2375
#, python-format
msgid ""
"ERROR: '%s' is not a valid step. See 'man mgr-inter-sync' for more detail."
msgstr ""

#: ../satellite_tools/satsync.py:2407
msgid ""
"ERROR: No channels currently imported; try mgr-inter-sync --list-channels; "
"then mgr-inter-sync -c chn0 -c chn1..."
msgstr ""

#. int(None) --> TypeError
#. int('a')  --> ValueError
#: ../satellite_tools/satsync.py:2457 ../satellite_tools/satsync.py:2461
msgid "ERROR: --batch-size must have a value within the range: 1..50"
msgstr ""

#: ../satellite_tools/satsync.py:2469
#, python-format
msgid "ERROR: no such directory %s"
msgstr ""

#: ../satellite_tools/satsync.py:2474
msgid "Error Codes: Returned codes means:"
msgstr ""

#: ../satellite_tools/satsync.py:2475
msgid " -1  - Could not lock file or KeyboardInterrupt or SystemExit"
msgstr ""

#: ../satellite_tools/satsync.py:2476
msgid "  0  - User interrupted or intentional exit"
msgstr ""

#: ../satellite_tools/satsync.py:2477
msgid "  1  - attempting to run more than one instance of mgr-inter-sync."
msgstr ""

#: ../satellite_tools/satsync.py:2478
msgid "  2  - Unable to find synchronization tools."
msgstr ""

#: ../satellite_tools/satsync.py:2479
msgid "  3  - a general socket exception occurred"
msgstr ""

#: ../satellite_tools/satsync.py:2480
msgid "  4  - an SSL error occurred. Recheck your SSL settings."
msgstr ""

#: ../satellite_tools/satsync.py:2481
msgid "  5  - ISS error"
msgstr ""

#: ../satellite_tools/satsync.py:2482
msgid "  6  - unhandled exception occurred"
msgstr ""

#: ../satellite_tools/satsync.py:2483
msgid "  7  - unknown sync error"
msgstr ""

#: ../satellite_tools/satsync.py:2484
msgid "  8  - ERROR: must be root to execute"
msgstr ""

#: ../satellite_tools/satsync.py:2485
msgid "  9  - rpclib fault during synchronization init"
msgstr ""

#: ../satellite_tools/satsync.py:2486
msgid "  10 - synchronization init error"
msgstr ""

#: ../satellite_tools/satsync.py:2487
msgid "  11 - Error parsing XML stream"
msgstr ""

#: ../satellite_tools/satsync.py:2488
msgid "  12 - Channel do not exist"
msgstr ""

#: ../satellite_tools/satsync.py:2489
msgid "  13 - SQL error during importing package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:2490
msgid "  14 - SQL error during linking channel packages"
msgstr ""

#: ../satellite_tools/satsync.py:2491
msgid "  15 - SQL error during xml processing"
msgstr ""

#: ../satellite_tools/satsync.py:2492
msgid "  16 - server.mount_point not set in the configuration file"
msgstr ""

#: ../satellite_tools/satsync.py:2493
msgid ""
"  17 - SQL error during retrieving the channels already imported in the SUSE "
"Manager database"
msgstr ""

#: ../satellite_tools/satsync.py:2494
msgid "  18 - Wrong db connection string in rhn.conf"
msgstr ""

#: ../satellite_tools/satsync.py:2495
msgid "  19 - Bad arguments"
msgstr ""

#: ../satellite_tools/satsync.py:2496
msgid "  20 - Could not connect to db."
msgstr ""

#: ../satellite_tools/satsync.py:2497
msgid "  21 - Bad debug level"
msgstr ""

#: ../satellite_tools/satsync.py:2498
msgid "  22 - Not valid step"
msgstr ""

#: ../satellite_tools/satsync.py:2499
msgid "  24 - no such file"
msgstr ""

#: ../satellite_tools/satsync.py:2500
msgid "  25 - no such directory"
msgstr ""

#: ../satellite_tools/satsync.py:2501
msgid "  26 - mount_point does not exist"
msgstr ""

#: ../satellite_tools/satsync.py:2502
msgid "  27 - No such org"
msgstr ""

#: ../satellite_tools/satsync.py:2503
msgid "  28 - error: --master is only valid with --mount-point"
msgstr ""

#: ../satellite_tools/satsync.py:2510
#, python-format
msgid "ERROR: unknown dump version, try one of %s"
msgstr ""
07070100000086000081B40000000000000000000000016290A0C100011790000000000000000000000000000000000000001E00000000spacewalk-backend/po/pt_BR.po # SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
#
# Translators:
# David Barzilay <barzilay@redhat.com>, 2004, 2005.
# Igor Pires Soares <igor@projetofedora.org>, 2007.
# Pedro Fernandes Macedo <webmaster@margo.bijoux.nom.br>, 2004.
# Pedro Macedo <pmacedo@intel.dcc.ufmg.br>, 2005.
msgid ""
msgstr ""
"Project-Id-Version: Spacewalk\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-10-16 13:34+0200\n"
"PO-Revision-Date: 2020-10-15 01:49+0000\n"
"Last-Translator: Rodrigo Macedo <rmsolucoeseminformatic4@gmail.com>\n"
"Language-Team: Portuguese (Brazil) <https://l10n.opensuse.org/projects/uyuni/"
"backend/pt_BR/>\n"
"Language: pt_BR\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n > 1;\n"
"X-Generator: Weblate 3.6.1\n"

#: ../server/apacheAuth.py:66
#, python-format
msgid "incomplete proxy authentication token: %s"
msgstr "token de autenticaÃ§Ã£o de proxy incompleto: %s"

#: ../server/apacheAuth.py:84
#, python-format
msgid "Sent proxy signature %s does not match ours %s."
msgstr "A assinatura de proxy enviada %s nÃ£o corresponde Ã  nossa %s."

#: ../server/apacheAuth.py:119
msgid "declined proxy authentication"
msgstr "autenticaÃ§Ã£o de proxy recusada"

#: ../server/apacheRequest.py:59
#, python-format
msgid "Invalid request received (%s)."
msgstr "SolicitaÃ§Ã£o invÃ¡lida recebida (%s)."

#: ../server/apacheRequest.py:120
#, python-format
msgid ""
"IMPORTANT MESSAGE FOLLOWS:\n"
"%s"
msgstr ""
"SEGUINTE MENSAGEM IMPORTANTE:\n"
"%s"

#: ../server/apacheRequest.py:149
#, python-format
msgid ""
"While running '%s': caught\n"
"%s : %s\n"
msgstr ""
"Durante a execuÃ§Ã£o de '%s': capturado\n"
"%s : %s\n"

#: ../server/apacheRequest.py:606
#, python-format
msgid "Invalid URI %s"
msgstr "URI %s invÃ¡lida"

#: ../server/configFilesHandler.py:129 ../server/handlers/app/packages.py:192
#: ../server/handlers/xmlrpc/registration.py:215
#: ../server/handlers/xmlrpc/registration.py:1168
#: ../server/handlers/xmlrpc/registration.py:1307
#, python-format
msgid ""
"\n"
"                   %s Account has been deactivated on this server.\n"
"                   Please contact your Org administrator for more help."
msgstr ""
"\n"
"                   A conta %s foi desativada neste servidor.\n"
"                   Entre em contato com o administrador da organizaÃ§Ã£o para "
"obter mais ajuda."

#: ../server/handlers/applet/applet.py:78
#, python-brace-format
msgid "Your system was not found in the {PRODUCT_NAME} database"
msgstr "Seu sistema nÃ£o foi encontrado no banco de dados do {PRODUCT_NAME}"

#: ../server/handlers/sat/auth.py:45
msgid "ISS is disabled on this server."
msgstr "O ISS estÃ¡ desativado neste servidor."

#: ../server/handlers/sat/auth.py:50
#, python-format
msgid "Server \"%s\" is not enabled for ISS."
msgstr "O servidor \"%s\" nÃ£o estÃ¡ ativado para o ISS."

#: ../server/handlers/xmlrpc/errata.py:64
#, python-format
msgid "Expected a package name, not: %s"
msgstr "Esperado um nome de pacote, nÃ£o: %s"

#: ../server/handlers/xmlrpc/errata.py:115
#, python-format
msgid "Expected a package, not: %s"
msgstr "Esperado um pacote, nÃ£o: %s"

#: ../server/handlers/xmlrpc/proxy.py:65
#, python-format
msgid "SUSE Manager Proxy service not enabled for server profile: \"%s\""
msgstr ""
"O serviÃ§o SUSE Manager Proxy nÃ£o estÃ¡ habilitado para o perfil do servidor: "
"\"%s\""

#: ../server/handlers/xmlrpc/proxy.py:85
msgid "Invalid session key"
msgstr "Chave de sessÃ£o invÃ¡lida"

#: ../server/handlers/xmlrpc/proxy.py:93
msgid "This server ID no longer exists"
msgstr "Esse ID de servidor nÃ£o existe mais"

#: ../server/handlers/xmlrpc/queue.py:433
#, python-format
msgid "Invalid action value type %s (%s)"
msgstr "Tipo de valor de aÃ§Ã£o invÃ¡lido%s (%s)"

#: ../server/handlers/xmlrpc/queue.py:464
#, python-format
msgid "Action %s does not belong to server %s"
msgstr "A aÃ§Ã£o %s nÃ£o pertence ao servidor %s"

#: ../server/handlers/xmlrpc/registration.py:194
msgid "Required data missing"
msgstr "Dados necessÃ¡rios ausentes"

#: ../server/handlers/xmlrpc/registration.py:198
msgid "Required members missing"
msgstr "Membros necessÃ¡rios ausentes"

#: ../server/handlers/xmlrpc/registration.py:207
msgid "Attempt to register a system to an invalid username"
msgstr "Tentativa de registrar um sistema para um nome de usuÃ¡rio invÃ¡lido"

#: ../server/handlers/xmlrpc/registration.py:839
msgid "Invalid system release version requested"
msgstr "VersÃ£o de lanÃ§amento do sistema solicitada invÃ¡lida"

#: ../server/handlers/xmlrpc/registration.py:1063
msgid ""
"Unable to find a valid network interface, both ipaddr and ip6addr not found."
msgstr ""
"NÃ£o foi possÃ­vel encontrar uma interface de rede vÃ¡lida, ipaddr e ip6addr "
"nÃ£o encontrados."

#: ../server/handlers/xmlrpc/registration.py:1115
#, python-brace-format
msgid "{PRODUCT_NAME} Welcome Message"
msgstr "{PRODUCT_NAME} Mensagem de Boas vindas"

#: ../server/handlers/xmlrpc/registration.py:1125
msgid "Privacy Statement"
msgstr "DeclaraÃ§Ã£o de Privacidade"

#: ../server/handlers/xmlrpc/registration.py:1146
msgid "Expected a dictionary as a product argument"
msgstr "Esperado um dicionÃ¡rio como argumento do produto"

#: ../server/handlers/xmlrpc/registration.py:1374
#, python-format
msgid "Invalid value '%s' for %s (%s)"
msgstr "Valor invÃ¡lido '%s' para %s (%s)"

#: ../server/handlers/xmlrpc/scap.py:104
msgid "Invalid system_id/action_id pair."
msgstr "Par system_id / action_id invÃ¡lido."

#: ../server/handlers/xmlrpc/up2date.py:233
#, python-format
msgid "Invalid value %s (%s)"
msgstr "Valor invÃ¡lido %s (%s)"

#: ../server/importlib/userAuth.py:98
msgid "You are not authorized to manage packages in the null org"
msgstr "VocÃª nÃ£o estÃ¡ autorizado a gerenciar pacotes na organizaÃ§Ã£o nula"

#: ../server/importlib/userAuth.py:103
#, python-format
msgid "You are not allowed to manage packages in the %s org"
msgstr "VocÃª nÃ£o tem permissÃ£o para gerenciar pacotes na organizaÃ§Ã£o %s"

#: ../server/importlib/userAuth.py:121
msgid "You are not allowed to perform administrative tasks"
msgstr "VocÃª nÃ£o tem permissÃ£o para executar tarefas administrativas"

#: ../server/importlib/userAuth.py:144
#, python-format
msgid ""
"You are not allowed to manage channel %s, or that channel does not exist"
msgstr ""
"VocÃª nÃ£o tem permissÃ£o para gerenciar o canal %s, ou esse canal nÃ£o existe"

#: ../server/importlib/userAuth.py:204
#, python-format
msgid ""
"\n"
"               %s Account has been deactivated on this server.\n"
"               Please contact your Org administrator for more help."
msgstr ""
"\n"
"               A conta %s foi desativada neste servidor.\n"
"Â Â Â Â Â Â Â Â Â Â Â Â Â Â  Entre em contato com o administrador da organizaÃ§Ã£o para "
"obter mais ajuda."

#: ../server/rhnChannel.py:1992
#, python-format
msgid ""
"Your account does not have access to any channels matching "
"(release='%(release)s', arch='%(arch)s')%(www_activation)s"
msgstr ""
"Sua conta nÃ£o tem acesso a nenhum canal correspondente (release "
"='%(release)s', arch='%(arch)s')%(www_activation)s"

#: ../server/rhnChannel.py:2002
msgid ""
"\n"
"If you have a registration number, please register with it first at http://"
"www.redhat.com/apps/activate/ and then try again.\n"
"\n"
msgstr ""
"\n"
"Se vocÃª tiver um nÃºmero de registro, registre-se primeiro em http://www."
"redhat.com/apps/activate/ e tente novamente.\n"
"\n"

#: ../server/rhnChannel.py:2012
#, python-format
msgid "Insufficient subscription permissions for release (%s, %s"
msgstr "PermissÃµes de assinatura insuficientes para liberaÃ§Ã£o (%s, %s"

#. Various messages that can be reused
#.
#. bretm 02/07/2007 -- when we have better old-client documentation, probably
#. will be safe to get rid of all this crap
#: ../server/rhnChannel.py:2276 ../server/rhnChannel.py:2287
#: ../server/rhnChannel.py:2302
msgid "System Registered but Inactive"
msgstr "Sistema Registrado, mas Inativo"

#: ../server/rhnChannel.py:2277
#, python-format
msgid ""
"\n"
"Invalid Architecture and OS release combination (%s, %s).\n"
"Your system has been registered, but will not receive updates\n"
"because it is not subscribed to a channel. If you have not yet\n"
"activated your product for service, please visit our website at:\n"
"\n"
"     http://www.redhat.com/apps/activate/\n"
"\n"
"...to activate your product."
msgstr ""
"\n"
"CombinaÃ§Ã£o de liberaÃ§Ã£o de arquitetura e sistema operacional invÃ¡lida (%s, "
"%s).\n"
"Seu sistema foi registrado, mas nÃ£o receberÃ¡ atualizaÃ§Ãµes\n"
"porque nÃ£o estÃ¡ inscrito em um canal. Se vocÃª ainda nÃ£o\n"
"ativou seu produto para manutenÃ§Ã£o, visite nosso site em:\n"
"\n"
"       http://www.redhat.com/apps/activate/\n"
"\n"
"... para ativar seu produto."

#: ../server/rhnChannel.py:2288
#, python-format
msgid ""
"\n"
"Invalid Architecture and OS release combination (%s, %s).\n"
"Your system has been registered, but will not receive updates\n"
"because it could not be subscribed to a base channel.\n"
"Please contact your organization administrator for assistance.\n"
msgstr ""
"\n"
"CombinaÃ§Ã£o de liberaÃ§Ã£o de arquitetura e sistema operacional invÃ¡lida (%s, "
"%s).\n"
"Seu sistema foi registrado, mas nÃ£o receberÃ¡ atualizaÃ§Ãµes\n"
"porque nÃ£o pÃ´de ser inscrito em um canal base.\n"
"Por favor entre em contato com o administrador da organizaÃ§Ã£o para obter "
"assistÃªncia.\n"

#: ../server/rhnChannel.py:2295
#, python-format
msgid ""
"\n"
"  This system has been successfully registered, but is not yet entitled\n"
"  to service.  To entitle this system to service, login to the web site at:\n"
"\n"
"  %(entitlement_url)s\n"
msgstr ""
"\n"
"  Este sistema foi registrado com sucesso, mas ainda nÃ£o tem direito\n"
"  para servir.  Para autorizar esse sistema a fazer serviÃ§o, faÃ§a login no "
"site em:\n"
"\n"
"  %(entitlement_url)s\n"

#: ../server/rhnChannel.py:2303
#, python-format
msgid ""
"\n"
"  This system has been successfully registered, but no service entitlements\n"
"  were available.  To entitle this system to service, login to the web site "
"at:\n"
"\n"
"  %(entitlement_url)s\n"
msgstr ""
"\n"
"  Este sistema foi registrado com sucesso, mas nenhum direito ao serviÃ§o\n"
"  estavam disponÃ­veis.  Para autorizar esse sistema a fazer serviÃ§o, faÃ§a "
"login no site em:\n"
"\n"
"  %(entitlement_url)s\n"

#: ../server/rhnHandler.py:62
msgid "Please run rhn_register as root on this client"
msgstr "Execute rhn_register como root neste cliente"

#: ../server/rhnHandler.py:75
#, python-format
msgid "Service not enabled for system profile: \"%s\""
msgstr "ServiÃ§o nÃ£o ativado para o perfil do sistema: \"%s\""

#: ../server/rhnPackage.py:49 ../server/rhnPackage.py:87
#: ../server/rhnPackage.py:107 ../server/rhnPackage.py:158
#, python-format
msgid "Invalid RPM package %s requested"
msgstr "Pacote RPM invÃ¡lido %s solicitado"

#: ../server/rhnPackage.py:112
msgid "Package not found"
msgstr "Pacote nÃ£o encontrado"

#: ../server/rhnServer/server_class.py:97
#, python-format
msgid "Architecture `%s' is not supported"
msgstr "A arquitetura `%s' nÃ£o Ã© suportada"

#: ../server/rhnServer/server_token.py:78
#, python-format
msgid "Token `%s' has more than one base channel assigned"
msgstr "O token `%s' possui mais de um canal base atribuÃ­do"

#: ../server/rhnServer/server_token.py:80
msgid "Conflicting base channels"
msgstr "Canais bÃ¡sicos conflitantes"

#: ../server/rhnServer/server_token.py:190
#, python-format
msgid "Failed to add server to group %s"
msgstr "Falha ao adicionar servidor ao grupo %s"

#: ../server/rhnServer/server_token.py:503
#, python-format
msgid "Maximum usage count of %s reached"
msgstr "Contagem mÃ¡xima de uso de %s atingida"

#: ../server/rhnServer/server_token.py:744
msgid ""
"Stacking of re-registration tokens with different base entitlements is not "
"supported"
msgstr ""
"O empilhamento de tokens de recadastramento com diferentes direitos de base "
"nÃ£o Ã© suportado"

#: ../server/rhnServer/server_token.py:811
#, python-format
msgid "Could not find token '%s'"
msgstr "NÃ£o foi possÃ­vel encontrar o token '%s'"

#. Cannot use activation keys from different orgs
#: ../server/rhnServer/server_token.py:843
msgid "Tokens from mismatching orgs"
msgstr "Tokens de organizaÃ§Ãµes incompatÃ­veis"

#. Two tokens with different kickstart sessions
#: ../server/rhnServer/server_token.py:853
msgid "Kickstart session mismatch"
msgstr "Incompatibilidade de sessÃ£o do Kickstart"

#: ../server/rhnServer/server_token.py:877
msgid "Stacking of re-registration tokens is not supported"
msgstr "O empilhamento de tokens de re-registro nÃ£o Ã© suportado"

#: ../server/rhnUser.py:289 ../server/rhnUser.py:292
msgid "Invalid username/password combination"
msgstr "CombinaÃ§Ã£o de nome de usuÃ¡rio/senha invÃ¡lido"

#. nope, not reserved either
#: ../server/rhnUser.py:467
#, python-format
msgid "Username `%s' has not been reserved"
msgstr "O nome de usuÃ¡rio `%s 'nÃ£o foi reservado"

#. New accounts have to specify an e-mail address
#: ../server/rhnUser.py:473
msgid "E-mail address not specified"
msgstr "EndereÃ§o de email nÃ£o especificado"

#: ../server/rhnUser.py:509
#, python-format
msgid "username should be at least %d characters"
msgstr "o nome de usuÃ¡rio deve ter pelo menos %d caracteres"

#: ../server/rhnUser.py:512
#, python-format
msgid "username should be less than %d characters"
msgstr "o nome de usuÃ¡rio deve ter menos de %d caracteres"

#: ../server/rhnUser.py:523
#, python-format
msgid "username = `%s', invalid character `%s'"
msgstr "nome de usuÃ¡rio = `%s', caractere invÃ¡lido`%s'"

#: ../server/rhnUser.py:542
#, python-format
msgid "Please limit your e-mail address to %s chars"
msgstr "Por favor limite seu endereÃ§o de e-mail a %s caracteres"

#: ../server/rhnUser.py:623
#, python-format
msgid "password must be at least %d characters"
msgstr "a senha deve ter pelo menos %d caracteres"

#: ../server/rhnUser.py:626
#, python-format
msgid "Password must be shorter than %d characters"
msgstr "A senha deve ter menos de %d caracteres"

#: ../server/rhnUser.py:644
#, python-format
msgid "password contains character `%s'"
msgstr "a senha contÃ©m o caractere `%s '"

#: ../server/rhnUser.py:651
#, python-format
msgid "username should be at least %d characters long"
msgstr "o nome de usuÃ¡rio deve ter pelo menos %d caracteres"

#: ../server/rhnUser.py:662
#, python-format
msgid "Cannot register usernames ending with %s"
msgstr "NÃ£o Ã© possÃ­vel registrar nomes de usuÃ¡rio que terminem com %s"

#. 0-999: Red Hat client/client-like interaction errors:
#: ../common/rhnException.py:53
msgid "This does not appear to be a valid username."
msgstr "Este nÃ£o parece ser um nome de usuÃ¡rio vÃ¡lido."

#: ../common/rhnException.py:54
msgid "Invalid username and password combination."
msgstr "CombinaÃ§Ã£o de nome de usuÃ¡rio e senha invÃ¡lida."

#: ../common/rhnException.py:55
msgid "This login is already taken, or the password is incorrect."
msgstr "Este login jÃ¡ foi realizado ou a senha estÃ¡ incorreta."

#: ../common/rhnException.py:56
msgid "Permission denied."
msgstr "PermissÃ£o negada."

#: ../common/rhnException.py:57
msgid "Object not found."
msgstr "Objeto nÃ£o encontrado."

#: ../common/rhnException.py:58
msgid "Invalid System Digital ID."
msgstr "ID digital do sistema invÃ¡lido."

#: ../common/rhnException.py:59
msgid "Invalid System Credentials."
msgstr "Credenciais do sistema invÃ¡lidas."

#: ../common/rhnException.py:60
msgid "Could not retrieve user data from database."
msgstr "NÃ£o foi possÃ­vel recuperar os dados do usuÃ¡rio do banco de dados."

#: ../common/rhnException.py:61
msgid "Valid username required."
msgstr "Nome de usuÃ¡rio vÃ¡lido necessÃ¡rio."

#: ../common/rhnException.py:62
msgid "Valid password required."
msgstr "Senha vÃ¡lida necessÃ¡ria."

#: ../common/rhnException.py:63
msgid "Minimum username length violation."
msgstr "ViolaÃ§Ã£o mÃ­nima do comprimento do nome de usuÃ¡rio."

#: ../common/rhnException.py:64
msgid "Minimum password length violation."
msgstr "ViolaÃ§Ã£o mÃ­nima do comprimento da senha."

#: ../common/rhnException.py:65
msgid "The username contains invalid characters."
msgstr "O nome de usuÃ¡rio contÃ©m caracteres invÃ¡lidos."

#: ../common/rhnException.py:66
msgid "File not found."
msgstr "Arquivo nÃ£o encontrado."

#: ../common/rhnException.py:67
msgid "Architecture and OS version combination is not supported."
msgstr "A combinaÃ§Ã£o de arquitetura e versÃ£o do SO nÃ£o Ã© suportada."

#: ../common/rhnException.py:68
msgid "Could not retrieve system data from database."
msgstr "NÃ£o foi possÃ­vel recuperar os dados do sistema do banco de dados."

#: ../common/rhnException.py:69
msgid "Invalid arguments passed to function."
msgstr "Argumentos invÃ¡lidos transmitidos para a funÃ§Ã£o."

#: ../common/rhnException.py:70
msgid "Unable to retrieve requested entry."
msgstr "NÃ£o foi possÃ­vel recuperar a entrada solicitada."

#: ../common/rhnException.py:71
msgid "Could not update database entry."
msgstr "NÃ£o foi possÃ­vel atualizar a entrada do banco de dados."

#: ../common/rhnException.py:72
msgid "Unsupported server architecture."
msgstr "Arquitetura de servidor nÃ£o suportada."

#: ../common/rhnException.py:73
#, python-format
msgid ""
"\n"
"     The anonymous server functionality is no longer available.\n"
"\n"
"     Please re-register this system by running mgr_register as root.\n"
"     Please visit https://%(hostname)s/rhn/systems/SystemEntitlements.do\n"
"     or login at https://%(hostname)s, and from the \"Overview\" tab,\n"
"     select \"Subscription Management\" to enable the service for this "
"system.\n"
"     "
msgstr ""
"\n"
"     A funcionalidade do servidor anÃ´nimo nÃ£o estÃ¡ mais disponÃ­vel.\n"
"\n"
"     Por favor, registre novamente este sistema executando mgr_register como "
"root.\n"
"     Por favor visite https://%(hostname)s/rhn/systems/SystemEntitlements."
"do\n"
"     ou faÃ§a login em https://%(hostname)s, e na guia \"VisÃ£o geral\",\n"
"     selecione \"Gerenciamento de assinatura\" para ativar o serviÃ§o para "
"este sistema.\n"
"     "

#: ../common/rhnException.py:81
msgid "Record not available in the database."
msgstr "Registro nÃ£o disponÃ­vel no banco de dados."

#: ../common/rhnException.py:82
msgid "Invalid value for entry."
msgstr "Valor invÃ¡lido para entrada."

#: ../common/rhnException.py:83
#, python-format
msgid ""
"\n"
"     This system does not have a valid entitlement for SUSE Manager.\n"
"     Please visit https://%(hostname)s/rhn/systems/SystemEntitlements.do\n"
"     or login at https://%(hostname)s, and from the \"Overview\" tab,\n"
"     select \"Subscription Management\" to enable the service for this "
"system.\n"
"     "
msgstr ""
"\n"
"     Este sistema nÃ£o possui um direito vÃ¡lido para o SUSE Manager.\n"
"     Por favor visite https://%(hostname)s/rhn/systems/SystemEntitlements."
"do\n"
"     ou faÃ§a login em https://%(hostname)s, e na guia \"VisÃ£o geral\",\n"
"     selecione \"Gerenciamento de assinatura\" para ativar o serviÃ§o para "
"este sistema.\n"
"     "

#: ../common/rhnException.py:89
msgid "Channel error"
msgstr "Erro no canal"

#: ../common/rhnException.py:90
msgid "Client session token is invalid."
msgstr "O token da sessÃ£o do cliente Ã© invÃ¡lido."

#: ../common/rhnException.py:91
msgid "Client session token has expired."
msgstr "O token da sessÃ£o do cliente expirou."

#: ../common/rhnException.py:92
msgid "You are not authorized to retrieve the requested object."
msgstr "VocÃª nÃ£o estÃ¡ autorizado a recuperar o objeto solicitado."

#: ../common/rhnException.py:93
msgid "Invalid action"
msgstr "AÃ§Ã£o invÃ¡lida"

#: ../common/rhnException.py:94
msgid "You are not allowed to perform administrative tasks on this system."
msgstr ""
"VocÃª nÃ£o tem permissÃ£o para executar tarefas administrativas neste sistema."

#: ../common/rhnException.py:96
msgid "The system is already subscribed to the specified channel."
msgstr "O sistema jÃ¡ estÃ¡ inscrito no canal especificado."

#: ../common/rhnException.py:97
msgid "The system is not currently subscribed to the specified channel."
msgstr "O sistema nÃ£o estÃ¡ atualmente inscrito no canal especificado."

#: ../common/rhnException.py:98
msgid "The specified channel does not exist."
msgstr "O canal especificado nÃ£o existe."

#: ../common/rhnException.py:99
msgid "Invalid channel version."
msgstr "VersÃ£o do canal invÃ¡lida."

#: ../common/rhnException.py:100
msgid ""
"\n"
"     User group membership limits exceeded.\n"
"\n"
"     The current settings for your account do not allow you to add another\n"
"     user account. Please check with the organization administrator for "
"your\n"
"     account if the maximum number of users allowed to subscribe to server "
"needs\n"
"     to be changed.\n"
"     "
msgstr ""
"\n"
"     Limites de associaÃ§Ã£o ao grupo de usuÃ¡rios excedidos.\n"
"\n"
"      As configuraÃ§Ãµes atuais da sua conta nÃ£o permitem adicionar outro\n"
"      conta de usuÃ¡rio. Verifique com o administrador da organizaÃ§Ã£o o seu\n"
"      conta se o nÃºmero mÃ¡ximo de usuÃ¡rios com permissÃ£o para se inscrever "
"nas necessidades do servidor\n"
"      para ser mudado.\n"
"     "

#: ../common/rhnException.py:108
msgid ""
"\n"
"     System group membership limits exceeded.\n"
"\n"
"     The current settings for your account do not allow you to add another\n"
"     system profile. Please check with the organization administrator for "
"your\n"
"     account for modifying the maximum number of system profiles that can "
"be\n"
"     subscribed to your account.\n"
"     "
msgstr ""
"\n"
"     Limites de associaÃ§Ã£o ao grupo do sistema excedidos.\n"
"     As configuraÃ§Ãµes atuais da sua conta nÃ£o permitem adicionar outro\n"
"     perfil do sistema. Verifique com o administrador da organizaÃ§Ã£o\n"
"     para modificar o nÃºmero mÃ¡ximo de perfis do sistema que podem ser\n"
"     inscrito na sua conta.\n"
"     "

#: ../common/rhnException.py:116
msgid ""
"\n"
"     Invalid architecture.\n"
"\n"
"     The architecture of the package is not supported by\n"
"     "
msgstr ""
"\n"
"     Arquitetura invÃ¡lida.\n"
"\n"
"     A arquitetura do pacote nÃ£o Ã© suportada por\n"
"     "

#: ../common/rhnException.py:121
msgid "Invalid RPM header"
msgstr "CabeÃ§alho RPM invÃ¡lido"

#: ../common/rhnException.py:122
msgid ""
"\n"
"    This system is already registered as a Salt Minion. If you want to "
"register it as a traditional client\n"
"    please delete it first via the web UI or API and then register it using "
"the traditional tools.\n"
"    "
msgstr ""
"\n"
"    Esse sistema jÃ¡ estÃ¡ registrado como Salt Minion. Se vocÃª deseja "
"registrÃ¡-lo como um cliente tradicional\n"
"     por favor exclua-o primeiro pela interface da Web ou API da Web e "
"depois registre-o usando as ferramentas tradicionais.\n"
"    "

#. For the uploading tools
#: ../common/rhnException.py:127
msgid "Invalid information uploaded to the server"
msgstr "InformaÃ§Ãµes invÃ¡lidas carregadas no servidor"

#: ../common/rhnException.py:128
msgid "Error uploading network interfaces configuration."
msgstr "Erro ao carregar a configuraÃ§Ã£o de interfaces de rede."

#: ../common/rhnException.py:129
msgid ""
"\n"
"     Package Upload Failed due to uniqueness constraint violation.\n"
"     Make sure the package does not have any duplicate dependencies or\n"
"     does not already exists on the server\n"
"     "
msgstr ""
"\n"
"     Falha no upload do pacote devido a violaÃ§Ã£o de restriÃ§Ã£o de "
"exclusividade.\n"
"     Verifique se o pacote nÃ£o possui dependÃªncias duplicadas ou\n"
"     se jÃ¡ nÃ£o existe no servidor\n"
"     "

#: ../common/rhnException.py:134
msgid ""
"\n"
"     The --force rhnpush option is disabled on this server.\n"
"     Please contact your SUSE Manager administrator for more help.\n"
"     "
msgstr ""
"\n"
"     A opÃ§Ã£o --force rhnpush estÃ¡ desativada neste servidor.\n"
"     Entre em contato com o administrador do SUSE Manager para obter mais "
"ajuda.\n"
"     "

#. 60-70: token errors
#: ../common/rhnException.py:140
msgid ""
"\n"
"     The activation token specified could not be found on the server.\n"
"     Please retry with a valid key.\n"
"     "
msgstr ""
"\n"
"     O token de ativaÃ§Ã£o especificado nÃ£o pÃ´de ser encontrado no servidor.\n"
"     Tente novamente com uma chave vÃ¡lida.\n"
"     "

#: ../common/rhnException.py:144
msgid "Too many systems registered using this registration token"
msgstr "Muitos sistemas registrados usando esse token de registro"

#: ../common/rhnException.py:145
msgid "Token contains invalid, obsoleted or insufficient settings"
msgstr "O token contÃ©m configuraÃ§Ãµes invÃ¡lidas, obsoletas ou insuficientes"

#: ../common/rhnException.py:146
msgid "Conflicting activation tokens"
msgstr "Tokens de ativaÃ§Ã£o conflitantes"

#. 70-80: channel subscription errors
#: ../common/rhnException.py:149
msgid ""
"\n"
"     No matching base channel found for your system.\n"
"     "
msgstr ""
"\n"
"     Nenhum canal base correspondente encontrado para o seu sistema.\n"
"     "

#: ../common/rhnException.py:152
msgid ""
"\n"
"     You do not have subscription permission to the designated channel.\n"
"     Please refer to your organization's channel or organization\n"
"     administrators for further details.\n"
"     "
msgstr ""
"\n"
"     VocÃª nÃ£o tem permissÃ£o de assinatura para o canal designado.\n"
"     Por favor consulte o canal ou os administradores da organizaÃ§Ã£o\n"
"     para obter mais detalhes.\n"
"     "

#: ../common/rhnException.py:157
msgid "You can not unsubscribe from base channel."
msgstr "VocÃª nÃ£o pode cancelar a inscriÃ§Ã£o no canal base."

#: ../common/rhnException.py:158
msgid "SUSE Manager or Proxy channel can not be subscribed."
msgstr "O canal SUSE Manager ou Proxy nÃ£o pode ser assinado."

#. 80-90: server group errors
#: ../common/rhnException.py:161
msgid "There was an error while trying to join the system to its groups"
msgstr "Ocorreu um erro ao tentar ingressar no sistema em seus grupos"

#. 90-100: entitlement errors
#: ../common/rhnException.py:164
msgid "Unable to entitle system"
msgstr "NÃ£o foi possÃ­vel habilitar o sistema"

#. 100-109: e-mail and uuid related faults
#: ../common/rhnException.py:167
msgid "Maximum e-mail length violation."
msgstr "ViolaÃ§Ã£o de tamanho mÃ¡ximo de email."

#: ../common/rhnException.py:168
msgid "This system has been previously registered."
msgstr "Este sistema foi registrado anteriormente."

#: ../common/rhnException.py:169
msgid "Invalid username"
msgstr "Nome de usuÃ¡rio InvÃ¡lido"

#. 140-159 applet errors
#: ../common/rhnException.py:172
msgid "Unable to look up server"
msgstr "NÃ£o foi possÃ­vel procurar o servidor"

#. 160-179: OSAD errors
#: ../common/rhnException.py:175
msgid "Required argument is missing"
msgstr "O argumento necessÃ¡rio estÃ¡ ausente"

#. 600-699: RHEL5+ EN errors
#: ../common/rhnException.py:178
msgid "No entitlement information tied to hardware"
msgstr "Nenhuma informaÃ§Ã£o de direito vinculada ao hardware"

#: ../common/rhnException.py:179
msgid "Installation number is not entitling"
msgstr "O nÃºmero da instalaÃ§Ã£o nÃ£o estÃ¡ autorizado"

#. 700-799: Additional user input verification errors.
#: ../common/rhnException.py:182
msgid "Maximum username length violation"
msgstr "ViolaÃ§Ã£o mÃ¡xima do tamanho do nome de usuÃ¡rio"

#: ../common/rhnException.py:183
msgid "Maximum password length violation"
msgstr "ViolaÃ§Ã£o mÃ¡xima do comprimento da senha"

#: ../common/rhnException.py:184
msgid "This user has read only API access. Action denied."
msgstr "Este usuÃ¡rio possui acesso apenas Ã  API. AÃ§Ã£o negada."

#: ../common/rhnException.py:186
msgid "System Name cannot be less than 1 character"
msgstr "O nome do sistema nÃ£o pode ter menos de 1 caractere"

#. 1000-1999: Proxy specific errors:
#. issued by a Proxy to the client
#: ../common/rhnException.py:190
msgid "SUSE Manager Proxy error."
msgstr "Erro de proxy do SUSE Manager."

#: ../common/rhnException.py:191
msgid "SUSE Manager Proxy unable to login."
msgstr "Proxy do SUSE Manager nÃ£o pode efetuar login."

#. issued by a SUSE Manager Server/Satellite to the proxy
#: ../common/rhnException.py:193
msgid ""
"\n"
"     SUSE Manager Proxy system ID does not match a Spacewalk Proxy Server\n"
"     in the database.\n"
"     "
msgstr ""
"\n"
"     O ID do sistema SUSE Manager Proxy nÃ£o corresponde a um Spacewalk Proxy "
"Server\n"
"     no banco de dados.\n"
"     "

#: ../common/rhnException.py:197
msgid "SUSE Manager Proxy session token is invalid."
msgstr "O token de sessÃ£o do SUSE Manager Proxy Ã© invÃ¡lido."

#: ../common/rhnException.py:198
msgid "SUSE Manager Proxy session token has expired."
msgstr "O token de sessÃ£o do SUSE Manager Proxy expirou."

#. 2000-2999: Red Hat Satellite specific errors:
#: ../common/rhnException.py:202
msgid ""
"\n"
"      user creation is not allowed via mgr_register;\n"
"     please contact your sysadmin to have your account created.\n"
"     "
msgstr ""
"\n"
"      a criaÃ§Ã£o do usuÃ¡rio nÃ£o Ã© permitida via mgr_register;\n"
"     entre em contato com o administrador do sistema para criar sua conta.\n"
"     "

#: ../common/rhnException.py:206
msgid ""
"\n"
"     This SUSE Manager server is not allowed to use Inter Server Sync on "
"this server\n"
"     "
msgstr ""
"\n"
"     Este servidor do SUSE Manager nÃ£o tem permissÃ£o para usar o Inter "
"Server Sync neste servidor\n"
"     "

#: ../common/rhnException.py:209
msgid ""
"\n"
"     Inter Server Sync is disabled on this SUSE Manager Server.\n"
"     "
msgstr ""
"\n"
"     A sincronizaÃ§Ã£o entre servidores estÃ¡ desabilitada neste servidor do "
"SUSE Manager.\n"
"     "

#. 3000-3999: XML dumper errors:
#: ../common/rhnException.py:214
msgid "Invalid datatype passed"
msgstr "Tipo de dados invÃ¡lido passado"

#: ../common/rhnException.py:215
msgid "Unable to retrieve channel"
msgstr "NÃ£o foi possÃ­vel recuperar o canal"

#: ../common/rhnException.py:216
msgid "Unable to retrieve package"
msgstr "NÃ£o foi possÃ­vel recuperar o pacote"

#: ../common/rhnException.py:217
msgid "Unable to retrieve erratum"
msgstr "NÃ£o foi possÃ­vel recuperar a errata"

#: ../common/rhnException.py:218
msgid "File is missing"
msgstr "Falta o arquivo"

#: ../common/rhnException.py:219
msgid "Function retrieval error"
msgstr "Erro de recuperaÃ§Ã£o de funÃ§Ã£o"

#: ../common/rhnException.py:220
msgid "Function execution error"
msgstr "Erro de execuÃ§Ã£o da funÃ§Ã£o"

#: ../common/rhnException.py:221
msgid "Missing version string"
msgstr "String de versÃ£o ausente"

#: ../common/rhnException.py:222
msgid "Invalid version string"
msgstr "String de versÃ£o invÃ¡lida"

#: ../common/rhnException.py:223
msgid "Mismatching versions"
msgstr "VersÃµes incompatÃ­veis"

#: ../common/rhnException.py:224
msgid "Invalid channel version"
msgstr "VersÃ£o do canal invÃ¡lida"

#: ../common/rhnException.py:225
msgid "No comps file for channel"
msgstr "Nenhum arquivo de comps para o canal"

#: ../common/rhnException.py:226
msgid "Unable to retrieve comps file"
msgstr "NÃ£o foi possÃ­vel recuperar o arquivo comps"

#. 4000 - 4999: config management errors
#: ../common/rhnException.py:229
msgid "Configuration action missing"
msgstr "AÃ§Ã£o de configuraÃ§Ã£o ausente"

#: ../common/rhnException.py:230
msgid "File too large"
msgstr "Arquivo muito grande"

#: ../common/rhnException.py:231
msgid "File contains binary data"
msgstr "O arquivo contÃ©m dado binÃ¡rio"

#: ../common/rhnException.py:232
msgid "Configuration channel is not empty"
msgstr "Canal de configuraÃ§Ã£o nÃ£o estÃ¡ vazio"

#: ../common/rhnException.py:233
msgid "Permission error"
msgstr "Erro de permissÃ£o"

#: ../common/rhnException.py:234
msgid "Content missing for configuration file"
msgstr "ConteÃºdo ausente para o arquivo de configuraÃ§Ã£o"

#: ../common/rhnException.py:235
msgid "Template delimiters not specified"
msgstr "Delimitadores de modelo nÃ£o especificados"

#: ../common/rhnException.py:236
msgid "Configuration channel does not exist"
msgstr "O canal de configuraÃ§Ã£o nÃ£o existe"

#: ../common/rhnException.py:237
msgid "Configuration channel already exists"
msgstr "O canal de configuraÃ§Ã£o jÃ¡ existe"

#: ../common/rhnException.py:238
msgid "File missing from configuration channel"
msgstr "Arquivo ausente no canal de configuraÃ§Ã£o"

#: ../common/rhnException.py:239
msgid "Different revision of this file is uploaded"
msgstr "Upload diferente da revisÃ£o deste arquivo"

#: ../common/rhnException.py:240
msgid "File already uploaded to configuration channel"
msgstr "Arquivo jÃ¡ carregado no canal de configuraÃ§Ã£o"

#: ../common/rhnException.py:241
msgid "File size exceeds remaining quota space"
msgstr "O tamanho do arquivo excede o espaÃ§o restante da cota"

#: ../common/rhnException.py:242
msgid "Full path of file must be specified"
msgstr "O caminho completo do arquivo deve ser especificado"

#: ../common/rhnException.py:243
msgid "Invalid revision number"
msgstr "NÃºmero de revisÃ£o invÃ¡lido"

#: ../common/rhnException.py:244
msgid "Cannot compare files of different file type"
msgstr "NÃ£o Ã© possÃ­vel comparar arquivos de outro tipo"

#. 5000 - 5999: client content uploading errors
#. 5000 - 5099: crash reporting errors
#: ../common/rhnException.py:248
msgid "Crash information is invalid or incomplete"
msgstr "As informaÃ§Ãµes de falha sÃ£o invÃ¡lidas ou incompletas"

#: ../common/rhnException.py:249
msgid "Crash file information is invalid or incomplete"
msgstr "As informaÃ§Ãµes do arquivo de falha sÃ£o invÃ¡lidas ou incompletas"

#: ../common/rhnException.py:250
msgid "Error composing crash directory path"
msgstr "Erro ao compor o caminho do diretÃ³rio de falha"

#: ../common/rhnException.py:251
msgid "Error composing crash file path"
msgstr "Erro ao compor o caminho do arquivo de falha"

#: ../common/rhnException.py:252 ../common/rhnException.py:259
msgid "Invalid content encoding"
msgstr "CodificaÃ§Ã£o de conteÃºdo invÃ¡lida"

#: ../common/rhnException.py:253
msgid "Invalid crash name"
msgstr "Nome de falha invÃ¡lido"

#: ../common/rhnException.py:254
msgid "Crash reporting is disabled for this organization"
msgstr "Os relatÃ³rios de falhas estÃ£o desativados para esta organizaÃ§Ã£o"

#. 5100 - 5199: scap results reporting error
#: ../common/rhnException.py:256
msgid "SCAP results file transfer is invalid or incomplete"
msgstr "A transferÃªncia do arquivo de resultados SCAP Ã© invÃ¡lida ou incompleta"

#: ../common/rhnException.py:257
msgid "Error composing directory path for detailed SCAP results"
msgstr ""
"Erro ao compor o caminho do diretÃ³rio para obter resultados detalhados do "
"SCAP"

#: ../common/rhnException.py:258
msgid "Error composing file path for detailed SCAP results"
msgstr ""
"Erro ao compor o caminho do arquivo para obter resultados detalhados do SCAP"

#: ../common/rhnException.py:306
msgid ""
"\n"
"     An error has occurred while processing your request. If this problem\n"
"     persists please enter a bug report at scc.suse.com.\n"
"     If you choose to submit the bug report, please be sure to include\n"
"     details of what you were trying to do when this error occurred and\n"
"     details on how to reproduce this problem.\n"
msgstr ""
"\n"
"     Ocorreu um erro ao processar o seu pedido. Se esse problema\n"
"     persistir, envie um relatÃ³rio de erro em scc.suse.com.\n"
"     Se vocÃª optar por enviar o relatÃ³rio de bug, por favor nÃ£o deixe de "
"incluir\n"
"     detalhes do que estava tentando fazer quando esse erro ocorreu e\n"
"     detalhes sobre como reproduzir esse problema.\n"

#: ../common/rhnException.py:358
#, python-format
msgid ""
"Error Message:\n"
"    %s\n"
msgstr ""
"Mensagem De Erro:\n"
"     %s\n"

#: ../common/rhnException.py:360
#, python-format
msgid "Error Class Code: %s\n"
msgstr "CÃ³digo da classe de erro: %s\n"

#: ../common/rhnException.py:363
#, python-format
msgid "Error Class Info: %s\n"
msgstr "InformaÃ§Ãµes da classe de erro: %s\n"

#: ../common/rhnException.py:365
#, python-format
msgid "Explanation: %s"
msgstr "ExplicaÃ§Ã£o: %s"

#: ../common/rhnTB.py:205
#, python-format
msgid "ERROR: %s %s: %s"
msgstr "ERRO: %s %s: %s"

#: ../common/rhnTB.py:207
#, python-format
msgid "TRACEBACK: %s"
msgstr "RASTREAR: %s"

#: ../satellite_tools/disk_dumper/iss.py:1294
#: ../satellite_tools/disk_dumper/iss.py:1298
#, python-format
msgid "format of %s should be at least YYYYMMDD.\n"
msgstr "formato de %s deve ser pelo menos AAAAMMDD.\n"

#: ../satellite_tools/messages.py:26
#, python-format
msgid ""
"\n"
"ERROR: executing step %s. Error is:\n"
"%s\n"
msgstr ""
"\n"
"ERRO: executando a etapa %s. O erro Ã©:\n"
"%s\n"

#: ../satellite_tools/messages.py:31
#, python-format
msgid ""
"\n"
"ERROR: there was a problem accessing the channel data from your temporary\n"
"       repository. Did you migrate all of the data from the channel ISOs\n"
"       do this directory? If so, please recheck the channels ISOs, ensure\n"
"       that you have them all, and then iteratively remount and repopulate\n"
"       the temporary repository (%s).\n"
msgstr ""
"\n"
"ERRO: Teve um problema acessando o canal de dados do seu repositÃ³rio\n"
"     temporÃ¡rio. VocÃª migrou todos os dados do seu canal de ISOs\n"
"     para esse diretÃ³rio? Se sim, por favor verificar os canais de ISOs, "
"Assegure\n"
"    que vocÃª tem todos, e entÃ£o remontar e repovoar iterativamente\n"
"    o repositÃ³rio temporÃ¡rio (%s).\n"

#: ../satellite_tools/messages.py:39
#, python-format
msgid ""
"\n"
"ERROR: there was a problem synchronizing the information.\n"
"       Error message: %s\n"
msgstr ""
"\n"
"ERRO: Teve um problema sincronizando as informaÃ§Ãµes.\n"
"     Mensagem de erro: %s\n"

#: ../satellite_tools/messages.py:44
#, python-format
msgid ""
"\n"
"ERROR: There was a problem communicating with the ISS Master.\n"
"       Depending on the specific error details, please review your "
"configuration,\n"
"       basic network connectivity, and/or name resolution, and try again.\n"
"       Error message: %s\n"
msgstr ""
"\n"
"ERRO: Ocorreu um problema na comunicaÃ§Ã£o com o ISS Master.\n"
"     Dependendo dos detalhes especÃ­ficos do erro, revise sua configuraÃ§Ã£o,\n"
"     conectividade bÃ¡sica de rede e / ou resoluÃ§Ã£o de nomes e tente "
"novamente.\n"
"     Mensagem de erro: %s\n"

#: ../satellite_tools/messages.py:51
#, python-format
msgid ""
"\n"
"ERROR: There was a problem communicating with the ISS Master.\n"
"       If the master satellite is older than v5.3, it does not have ISS "
"capability.\n"
"       Otherwise, depending on the specific error details, please review "
"your\n"
"       configuration, basic network connectivity, and/or name resolution, "
"and try again.\n"
"       Error message: %s\n"
msgstr ""
"\n"
"ERRO: Ocorreu um problema na comunicaÃ§Ã£o com o ISS Master.\n"
"     Se o satÃ©lite principal for anterior Ã  v5.3, ele nÃ£o possui capacidade "
"ISS.\n"
"     Caso contrÃ¡rio, dependendo dos detalhes especÃ­ficos do erro, revise "
"sua\n"
"     configuraÃ§Ã£o, conectividade bÃ¡sica de rede e / ou resoluÃ§Ã£o de nomes e "
"tente novamente.\n"
"     Mensagens de erro; %s\n"

#: ../satellite_tools/messages.py:59
#, python-format
msgid ""
"\n"
"ERROR: a child-channel cannot be synced without its parent being synced as\n"
"       well. A parent needs to be either (a) previously synced or (b) "
"synced\n"
"       in tandem with the desired child-channel. Missing parents for this\n"
"       transaction:\n"
"       %s\n"
msgstr ""
"\n"
"ERRO: um canal filho nÃ£o pode ser sincronizado sem que seu pai tambÃ©m seja\n"
"     sincronizado. Um pai precisa ser (a) sincronizado anteriormente ou (b) "
"sincronizado\n"
"     em conjunto com o canal filho desejado. Pais ausentes para esta\n"
"     transaÃ§Ã£o:\n"
"     %s\n"

#: ../satellite_tools/messages.py:67
#, python-format
msgid ""
"\n"
"ERROR: you are not entitled to sync a channel in this set of channels.\n"
"Please contact your SUSE Manager contact\n"
"%s"
msgstr ""
"\n"
"ERRO: vocÃª nÃ£o tem o direito de sincronizar um canal neste conjunto de "
"canais.\n"
"Entre em contato com seu contato do SUSE Manager\n"
"%s"

#: ../satellite_tools/messages.py:72
#, python-format
msgid "  ERROR: not enough free space (%s KB) on device."
msgstr "  ERRO: sem espaÃ§o suficiente (%s KB) no dispostivo."

#: ../satellite_tools/messages.py:74
#, python-format
msgid "    %3d/%s Fetch successful: %s (%s bytes)"
msgstr "    %3d/%s Busca bem sucedida: %s (%s bytes)"

#: ../satellite_tools/messages.py:75
#, python-format
msgid "    Extinct package:  %s"
msgstr "    Pacote extinto:  %s"

#: ../satellite_tools/messages.py:76
#, python-format
msgid "   Total size: %s"
msgstr "   Tamanho total: %s"

#: ../satellite_tools/messages.py:77
#, python-format
msgid "      Downloaded %s of %s. Estimated remaining time: %s"
msgstr "      Baixado %s de %s. Tempo restante estimado: %s"

#: ../satellite_tools/messages.py:78
#, python-format
msgid "    Fetch unsuccessful: %s"
msgstr "    Busca mal sucedida: %s"

#: ../satellite_tools/messages.py:79
#, python-format
msgid "   RPM fetch summary: %s"
msgstr "   Busca de sumÃ¡rio RPM: %s"

#: ../satellite_tools/messages.py:80
#, python-format
msgid "       success: %d"
msgstr "       sucesso: %d"

#: ../satellite_tools/messages.py:81
#, python-format
msgid "       failed:  %d"
msgstr "       falhou:  %d"

#: ../satellite_tools/messages.py:82
#, python-format
msgid "       extinct: %d"
msgstr "       extinto: %d"

#: ../satellite_tools/messages.py:84
#, python-format
msgid "   Retrieving / parsing *relevant* package metadata: %s (%s)"
msgstr "   Recuperando/analisando metadados do pacote *relevantes*: %s (%s)"

#: ../satellite_tools/messages.py:85
#, python-format
msgid "   Retrieving / parsing errata data: %s (%s)"
msgstr "   Recuperando/analisando dados de erratas: %s (%s)"

#: ../satellite_tools/messages.py:86
#, python-format
msgid "   Retrieving / parsing kickstart data: %s (%s)"
msgstr "   Recuperando/analisando dados do kickstart: %s (%s)"

#: ../satellite_tools/messages.py:87
#, python-format
msgid "   Retrieving / parsing kickstart tree files: %s (%s)"
msgstr "   Recuperando/analisando arquivos da Ã¡rvore do kickstart: %s (%s)"

#: ../satellite_tools/messages.py:88
#, python-format
msgid "   Importing *relevant* package metadata: %s (%s)"
msgstr "   Importando metadados *relevantes* do pacote: %s (%s)"

#: ../satellite_tools/messages.py:89
msgid "   * WARNING: this may be a slow process."
msgstr "   * AVISO: este pode ser um processo lento."

#: ../satellite_tools/messages.py:90
msgid "Linking packages to channels"
msgstr "Vinculando pacotes aos canais"

#: ../satellite_tools/messages.py:91
#, python-format
msgid "   Importing *relevant* errata: %s (%s)"
msgstr "   Importando errata *relevante*: %s (%s)"

#: ../satellite_tools/messages.py:92
msgid "   No new kickstartable tree to import"
msgstr "   Nenhuma nova Ã¡rvore kickstartable para importar"

#: ../satellite_tools/messages.py:93
#, python-format
msgid "Importing kickstartable trees (%d)"
msgstr "Importando Ã¡rvores kickstartable (%d)"

#: ../satellite_tools/messages.py:94
#, python-format
msgid "Imported kickstartable trees (%d)"
msgstr "Ãrvores kickstartable importadas (%d)"

#: ../satellite_tools/reposync.py:111 ../satellite_tools/satsync.py:439
msgid "+++ sending log as an email +++"
msgstr "+++ enviar log como um email +++"

#: ../satellite_tools/reposync.py:114
#, python-format
msgid "%s sync. report from %s"
msgstr "%s sincronizado. relatÃ³rio de %s"

#: ../satellite_tools/reposync.py:124 ../satellite_tools/satsync.py:449
msgid "+++ email requested, but there is nothing to send +++"
msgstr "+++ email solicitado, mas nÃ£o hÃ¡ nada para enviar +++"

#: ../satellite_tools/rhn_satellite_activate.py:198
#, python-format
msgid ""
"\"%s\" (specified in commandline)\n"
"could not be opened and read:\n"
"%s"
msgstr ""
"\"%s\" (especificado na linha de comando)\n"
"nÃ£o pÃ´de ser aberto e lido:\n"
"%s"

#: ../satellite_tools/rhn_satellite_activate.py:205
#, python-format
msgid ""
"\"%s\" could not be opened\n"
"and/or written to:\n"
"%s"
msgstr ""
"NÃ£o foi possÃ­vel abrir \"%s\"\n"
"e/ou escrito para:\n"
"%s"

#: ../satellite_tools/satsync.py:258
#, python-format
msgid "No handler for step %s"
msgstr "Nenhum manipulador para a etapa %s"

#. Try one more time - this time it should be faster since
#. everything should be cached
#: ../satellite_tools/satsync.py:270
msgid "Environment changed, trying again..."
msgstr "Ambiente alterado, tentando novamente..."

#: ../satellite_tools/satsync.py:277
msgid "ERROR: Encountered IntegrityError: \n"
msgstr "ERRO: Erro de integridade encontrado: \n"

#: ../satellite_tools/satsync.py:285
msgid "Repeated failures"
msgstr "Falhas repetidas"

#: ../satellite_tools/satsync.py:290
#, python-format
msgid ""
"    Import complete:\n"
"        Begin time: %s\n"
"        End time:   %s\n"
"        Elapsed:    %s\n"
"          "
msgstr ""
"    ImportaÃ§Ã£o concluÃ­da:\n"
"        Hora de inÃ­cio: %s\n"
"        Hora de tÃ©rmino: %s\n"
"        Decorrido: %s\n"
"          "

#: ../satellite_tools/satsync.py:311
msgid "hours"
msgstr "horas"

#: ../satellite_tools/satsync.py:311
msgid "minutes"
msgstr "minutos"

#: ../satellite_tools/satsync.py:311
msgid "seconds"
msgstr "segundos"

#: ../satellite_tools/satsync.py:357
msgid ""
"ERROR: The dump is missing package data, use --no-rpms to skip this step or "
"fix the content to include package data."
msgstr ""
"ERRO: O dump estÃ¡ faltando dados do pacote, use --no-rpms para ignorar esta "
"etapa ou corrigir o conteÃºdo para incluir dados do pacote."

#. the orgs() method doesn't exist; that's fine we just
#. won't sync the orgs
#: ../satellite_tools/satsync.py:404
msgid "The SUSE Manager master does not support syncing orgs data."
msgstr ""
"O mestre do SUSE Manager nÃ£o suporta a sincronizaÃ§Ã£o de dados da organizaÃ§Ã£o."

#: ../satellite_tools/satsync.py:404
msgid "Skipping..."
msgstr "Pulando..."

#: ../satellite_tools/satsync.py:442
#, python-format
msgid "SUSE Manager Inter Server sync. report from %s"
msgstr "SincronizaÃ§Ã£o do SUSE Manager Inter Server. relatÃ³rio de %s"

#: ../satellite_tools/satsync.py:521
msgid " - file-system synchronization"
msgstr " - sincronizaÃ§Ã£o do sistema de arquivos"

#: ../satellite_tools/satsync.py:533 ../satellite_tools/satsync.py:541
msgid " - live synchronization"
msgstr " - sincronizaÃ§Ã£o ao vivo"

#: ../satellite_tools/satsync.py:534
#, python-brace-format
msgid ""
"ERROR: Live content synchronizing with RHN Classic Hosted is no longer "
"supported.\n"
"Please use the cdn-sync command instead unless you are attempting to sync "
"from another {PRODUCT_NAME} via Inter-Server-Sync (ISS), or from local "
"content on disk via Channel Dump ISOs."
msgstr ""
"ERRO: A sincronizaÃ§Ã£o de conteÃºdo Live com o RHN Classic Hosted nÃ£o Ã© mais "
"suportada.\n"
"Use o comando cdn-sync em vez disso, a menos que vocÃª esteja tentando "
"sincronizar de outro {PRODUCT_NAME} via Inter-Server-Sync (ISS), ou de "
"conteÃºdo local no disco via Channel Dump ISOs."

#: ../satellite_tools/satsync.py:542
#, python-format
msgid "   url: %s"
msgstr "   url: %s"

#: ../satellite_tools/satsync.py:543
#, python-format
msgid "   debug/output level: %s"
msgstr "   depuraÃ§Ã£o/nÃ­vel de saÃ­da: %s"

#: ../satellite_tools/satsync.py:553
msgid "ERROR: this server must be registered with SUSE Manager."
msgstr "ERRO: este servidor deve ser registrado no SUSE Manager."

#: ../satellite_tools/satsync.py:575
#, python-format
msgid "Retrieving / parsing %s data"
msgstr "Recuperando/analisando %s dados"

#: ../satellite_tools/satsync.py:585 ../satellite_tools/satsync.py:600
msgid "*** SYSTEM INTERRUPT CALLED ***"
msgstr "*** INTERRUPÃ‡ÃƒO DO SISTEMA CHAMADO ***"

#: ../satellite_tools/satsync.py:593
msgid "ERROR: fatal parser exception occurred "
msgstr "ERRO: ocorreu uma exceÃ§Ã£o fatal do analisador "

#: ../satellite_tools/satsync.py:594
#, python-format
msgid "(line: %s, col: %s msg: %s)"
msgstr "(linha: %s, col: %s msg: %s)"

#: ../satellite_tools/satsync.py:598
#, python-format
msgid "ERROR: parser exception occurred: %s"
msgstr "ERRO: ocorreu uma exceÃ§Ã£o do analisador: %s"

#: ../satellite_tools/satsync.py:603
msgid "ERROR: exception (during parse) occurred: "
msgstr "ERRO: ocorreu uma exceÃ§Ã£o (durante a anÃ¡lise): "

#: ../satellite_tools/satsync.py:604
#, python-format
msgid ""
"   Encountered some errors with %s data (see logs (%s) for more information)"
msgstr ""
"   Foram encontrados alguns erros com os dados %s (consulte os logs (%s) "
"para obter mais informaÃ§Ãµes)"

#: ../satellite_tools/satsync.py:606
#, python-format
msgid "   Encountered some errors with %s data:"
msgstr "   Foram encontrados alguns erros com %s dados:"

#: ../satellite_tools/satsync.py:607
#, python-format
msgid "   ------- %s PARSE/IMPORT ERROR -------"
msgstr "   ------- %s ANALISAR/IMPORTAR ERRO -------"

#: ../satellite_tools/satsync.py:609
msgid "   ---------------------------------------"
msgstr "   ---------------------------------------"

#: ../satellite_tools/satsync.py:612
#, python-format
msgid "%s data complete"
msgstr "%s dados concluÃ­dos"

#: ../satellite_tools/satsync.py:665
msgid "Retrieving / parsing channel data"
msgstr "Recuperando / analisando dados do canal"

#: ../satellite_tools/satsync.py:718
msgid "Channel data complete"
msgstr "Dados do canal concluÃ­dos"

#: ../satellite_tools/satsync.py:736
#, python-format
msgid "%10s import from %s"
msgstr "%10s importado de %s"

#: ../satellite_tools/satsync.py:739
#, python-format
msgid "%10s import from %s - %s"
msgstr "%10s importado de %s - %s"

#: ../satellite_tools/satsync.py:743
#, python-format
msgid "%10s"
msgstr "%10s"

#: ../satellite_tools/satsync.py:750
msgid "p"
msgstr "p"

#: ../satellite_tools/satsync.py:752
msgid "."
msgstr "."

#: ../satellite_tools/satsync.py:758
msgid "   p = previously imported/synced channel"
msgstr "   p = canal importado/sincronizado anteriormente"

#: ../satellite_tools/satsync.py:759
msgid "   . = channel not yet imported/synced"
msgstr "   . = canal ainda nÃ£o importado/sincronizado"

#: ../satellite_tools/satsync.py:765
msgid "   e = channel no longer supported (end-of-service)"
msgstr "   e = canal nÃ£o Ã© mais suportado (fim de serviÃ§o)"

#: ../satellite_tools/satsync.py:767
msgid "   ? = channel label invalid --- typo?"
msgstr "   ? = etiqueta do canal invÃ¡lida --- erro de digitaÃ§Ã£o?"

#: ../satellite_tools/satsync.py:771
#, python-format
msgid "   %s:"
msgstr "   %s:"

#: ../satellite_tools/satsync.py:772
#, python-format
msgid "      %s %-40s %4s %s"
msgstr "      %s %-40s %4s %s"

#: ../satellite_tools/satsync.py:773
msgid "base-channels"
msgstr "canais-base"

#: ../satellite_tools/satsync.py:786 ../satellite_tools/satsync.py:1603
msgid "NONE RELEVANT"
msgstr "NADA RELEVANTE"

#: ../satellite_tools/satsync.py:808
msgid "end-of-service"
msgstr "fim-do-serviÃ§o"

#: ../satellite_tools/satsync.py:809
msgid "e"
msgstr "e"

#: ../satellite_tools/satsync.py:815
msgid "   typos:"
msgstr "   erros de digitaÃ§Ã£o:"

#: ../satellite_tools/satsync.py:816
msgid "?"
msgstr "?"

#: ../satellite_tools/satsync.py:831
#, python-format
msgid "XXX: imported channels: %s"
msgstr "XXX: canais importados: %s"

#: ../satellite_tools/satsync.py:832
#, python-format
msgid "XXX:   cached channels: %s"
msgstr "XXX:   canais em cache: %s"

#: ../satellite_tools/satsync.py:837
msgid "XXX: list channels called"
msgstr "XXX: listar canais cancelados"

#: ../satellite_tools/satsync.py:855
msgid "ERROR: these channels either do not exist or are not available:"
msgstr "ERRO: esses canais nÃ£o existem ou nÃ£o estÃ£o disponÃ­veis:"

#: ../satellite_tools/satsync.py:859
#, python-format
msgid "       (to see a list of channel labels: %s --list-channels)"
msgstr "       (para ver uma lista de rÃ³tulos de canais: %s --list-channels)"

#: ../satellite_tools/satsync.py:904
#, python-format
msgid "   Retrieving / parsing short package metadata: %s (%s)"
msgstr "   Recuperando/analisando metadados curtos do pacote: %s (%s)"

#: ../satellite_tools/satsync.py:965
#, python-format
msgid "Diffing package metadata (what's missing locally?): %s"
msgstr ""
"Diferenciar os metadados do pacote (o que estÃ¡ faltando localmente?): %s"

#: ../satellite_tools/satsync.py:971 ../satellite_tools/satsync.py:1254
msgid "Diffing:    "
msgstr "DiferenÃ§a:    "

#: ../satellite_tools/satsync.py:988
msgid "ERROR: incremental dump skipped"
msgstr "ERRO: despejo incremental ignorado"

#: ../satellite_tools/satsync.py:1079
msgid "Downloading rpm packages"
msgstr "Fazendo download de pacotes rpm"

#: ../satellite_tools/satsync.py:1084
#, python-format
msgid "   Fetching any missing RPMs: %s (%s)"
msgstr "   Buscando RPMs ausentes: %s (%s)"

#: ../satellite_tools/satsync.py:1085 ../satellite_tools/satsync.py:1153
msgid "NONE MISSING"
msgstr "NENHUM AUSENTE"

#: ../satellite_tools/satsync.py:1094
msgid "Processing rpm packages complete"
msgstr "Processando pacotes rpm completos"

#: ../satellite_tools/satsync.py:1121
msgid "Downloading package metadata"
msgstr "Fazendo Download de Metadados do Pacote"

#: ../satellite_tools/satsync.py:1146
msgid "Downloading srpm packages"
msgstr "Fazendo download de pacotes srpm"

#: ../satellite_tools/satsync.py:1152
#, python-format
msgid "   Fetching any missing SRPMs: %s (%s)"
msgstr "   Buscando quaisquer SRPMs ausentes: %s (%s)"

#: ../satellite_tools/satsync.py:1249
#, python-format
msgid "Diffing source package metadata (what's missing locally?): %s"
msgstr ""
"Diferenciar os metadados do pacote de origem (o que estÃ¡ faltando "
"localmente?): %s"

#: ../satellite_tools/satsync.py:1260
msgid "Downloading source package metadata"
msgstr "Fazendo Download de Metadados do Pacote de Origem"

#: ../satellite_tools/satsync.py:1338 ../satellite_tools/satsync.py:2027
#, python-format
msgid "Unable to save file %s: %s"
msgstr "NÃ£o foi possÃ­vel salvar o arquivo %s: %s"

#. for
#. Retried a number of times and it still failed; log the
#. file as being failed and move on
#: ../satellite_tools/satsync.py:1345
#, python-format
msgid "Failed to fetch file %s"
msgstr "Falha ao buscar o arquivo %s"

#: ../satellite_tools/satsync.py:1350
msgid "Downloading kickstartable trees metadata"
msgstr "Download de metadados de Ã¡rvores kickstartable"

#: ../satellite_tools/satsync.py:1365
msgid "Downloading kickstartable trees files"
msgstr "Download de arquivos de Ã¡rvores kickstartable"

#: ../satellite_tools/satsync.py:1504
#, python-format
msgid "Grabbing all patches for channel %s"
msgstr "Transferindo todos os patches para o canal %s"

#: ../satellite_tools/satsync.py:1554
msgid "Downloading patch data"
msgstr "Fazendo download de dados de patch"

#: ../satellite_tools/satsync.py:1556
msgid "Forcing download of all patch data for requested channels."
msgstr ""
"ForÃ§ar o download de todos os dados do patch para os canais solicitados."

#: ../satellite_tools/satsync.py:1571
msgid "Downloading patch data complete"
msgstr "Download dos dados do patch concluÃ­dos"

#: ../satellite_tools/satsync.py:1576 ../satellite_tools/satsync.py:1597
msgid "Downloading:"
msgstr "Baixando:"

#: ../satellite_tools/satsync.py:1579
msgid " - complete"
msgstr " - completo"

#: ../satellite_tools/satsync.py:1624
msgid "Importing source package metadata"
msgstr "Importando Metadados do Pacote de Origem"

#: ../satellite_tools/satsync.py:1627
msgid "Importing package metadata"
msgstr "Importando Metadados do Pacote"

#: ../satellite_tools/satsync.py:1635
msgid "Importing:  "
msgstr "ImportaÃ§Ã£o:  "

#. not in the cache
#: ../satellite_tools/satsync.py:1703
msgid ""
"Package Not Found in Cache, Clear the Cache "
"to                                  Regenerate it."
msgstr "Pacote nÃ£o encontrado no cache, limpe o cache para regenerÃ¡-lo."

#: ../satellite_tools/satsync.py:1709
msgid "Importing channel patches"
msgstr "Importando patches de canal"

#: ../satellite_tools/satsync.py:1714
#, python-format
msgid "Importing %s patches for channel %s."
msgstr "Importando %s patches para o canal %s."

#. Incomplete configuration
#: ../satellite_tools/satsync.py:2113
msgid "ERROR: server.mount_point not set in the configuration file"
msgstr "ERRO: server.mount_point nÃ£o definido no arquivo de configuraÃ§Ã£o"

#: ../satellite_tools/satsync.py:2117
#, python-format
msgid "ERROR: server.mount_point %s do not exist"
msgstr "ERRO: server.mount_point %s nÃ£o existe"

#: ../satellite_tools/satsync.py:2122
#, python-format
msgid "ERROR: path under server.mount_point (%s)  do not exist"
msgstr "ERRO: o caminho em server.mount_point (%s) nÃ£o existe"

#: ../satellite_tools/satsync.py:2199
#, python-format
msgid "Commandline: %s"
msgstr "Linha de comando: %s"

#: ../satellite_tools/satsync.py:2202
#, python-format
msgid ""
"DEBUG ONLY: max. batch-size for XML/database-import processing (1..%s).\"man "
"satellite-sync\" for more information."
msgstr ""
"APENAS PARA DEBUGAR: mÃ¡x. tamanho do lote para processamento de importaÃ§Ã£o "
"XML/banco de dados (1..%s).\"man satellite-sync\" para obter mais "
"informaÃ§Ãµes."

#: ../satellite_tools/satsync.py:2205
msgid "alternative SSL CA Cert (fullpath to cert file)"
msgstr ""
"certificado alternativo da CA SSL (caminho completo para o arquivo cert)"

#: ../satellite_tools/satsync.py:2207
msgid "process data for this channel only"
msgstr "processar dados apenas para este canal"

#: ../satellite_tools/satsync.py:2209
msgid ""
"disk dump will be considered to be a full export; see \"man satellite-sync\" "
"for more information."
msgstr ""
"despejo de disco serÃ¡ considerado uma exportaÃ§Ã£o completa; veja \"man "
"satellite-sync\" para mais informaÃ§Ãµes."

#: ../satellite_tools/satsync.py:2212
msgid "existing custom channels will also be synced (unless -c is used)"
msgstr ""
"os canais personalizados existentes tambÃ©m serÃ£o sincronizados (a menos que -"
"c seja usado)"

#: ../satellite_tools/satsync.py:2214
#, python-format
msgid ""
"override debug level set in /etc/rhn/rhn.conf (which is currently set at %s)."
msgstr ""
"substitua o nÃ­vel de depuraÃ§Ã£o definido em /etc/rhn/rhn.conf (atualmente "
"definido em %s)."

#: ../satellite_tools/satsync.py:2216
#, python-format
msgid "requested version of XML dump (default: %s)"
msgstr "versÃ£o solicitada do dump XML (padrÃ£o: %s)"

#: ../satellite_tools/satsync.py:2218
msgid "e-mail a report of what was synced/imported"
msgstr "envie por e-mail um relatÃ³rio do que foi sincronizado/importado"

#: ../satellite_tools/satsync.py:2220
msgid "forcibly process all (not a diff of) patch metadata"
msgstr "forÃ§osamente processar todos os metadados (nÃ£o diferentes) dos patches"

#: ../satellite_tools/satsync.py:2222
msgid "Do not use an http proxy under any circumstances."
msgstr "NÃ£o use um proxy http em nenhuma circunstÃ¢ncia."

#: ../satellite_tools/satsync.py:2224
msgid "alternative http proxy (hostname:port)"
msgstr "http proxy alternativo (hostname:port)"

#: ../satellite_tools/satsync.py:2226
msgid "alternative http proxy username"
msgstr "nome de usuÃ¡rio do proxy http alternativo"

#: ../satellite_tools/satsync.py:2228
msgid "alternative http proxy password"
msgstr "senha alternativa do proxy http"

#: ../satellite_tools/satsync.py:2230
msgid "parent SUSE Manager to import content from"
msgstr "SUSE Manager pai para importar conteÃºdo de"

#: ../satellite_tools/satsync.py:2232
msgid "list all available channels and exit"
msgstr "listar todos os canais disponÃ­veis e sair"

#: ../satellite_tools/satsync.py:2234
msgid "help on all error codes mgr-inter-sync returns"
msgstr "ajuda em todos os cÃ³digos de erro retornos de mgr-inter-sync"

#: ../satellite_tools/satsync.py:2236
msgid "source mount point for import - disk update only"
msgstr ""
"ponto de montagem de origem para importaÃ§Ã£o - somente atualizaÃ§Ã£o de disco"

#: ../satellite_tools/satsync.py:2238
msgid "do not process patch data"
msgstr "nÃ£o processe dados de correÃ§Ã£o"

#: ../satellite_tools/satsync.py:2240
msgid "do not process kickstart data (provisioning only)"
msgstr "nÃ£o processe dados do kickstart (apenas provisionamento)"

#: ../satellite_tools/satsync.py:2242
msgid "do not process full package metadata"
msgstr "nÃ£o processe metadados de pacote completo"

#: ../satellite_tools/satsync.py:2244
msgid "do not download, or process any RPMs"
msgstr "nÃ£o faÃ§a o download ou processe quaisquer RPMs"

#: ../satellite_tools/satsync.py:2246
msgid "turn off SSL (not recommended)"
msgstr "desativar o SSL (nÃ£o recomendado)"

#: ../satellite_tools/satsync.py:2248
msgid "org to which the sync imports data. defaults to the admin account"
msgstr ""
"organizaÃ§Ã£o para a qual a sincronizaÃ§Ã£o importa dados. o padrÃ£o Ã© a conta de "
"administrador"

#: ../satellite_tools/satsync.py:2250
msgid "print the configuration and exit"
msgstr "imprima a configuraÃ§Ã£o e saia"

#: ../satellite_tools/satsync.py:2252
msgid "alternative server with which to connect (hostname)"
msgstr "servidor alternativo ao qual se conectar (nome do host)"

#: ../satellite_tools/satsync.py:2254
msgid "synchronize to this step (man satellite-sync for more info)"
msgstr "sincronize com esta etapa (man satellite-sync para mais informaÃ§Ãµes)"

#: ../satellite_tools/satsync.py:2256
msgid "write complete data to tempfile before streaming to remainder of app"
msgstr ""
"gravar dados completos no arquivo temporÃ¡rio antes de transmitir para o "
"restante do aplicativo"

#: ../satellite_tools/satsync.py:2258
msgid "DEBUG ONLY: alternative path to digital system id"
msgstr ""
"APENAS DEBUG: caminho alternativo para a identificaÃ§Ã£o do sistema digital"

#: ../satellite_tools/satsync.py:2260
msgid "alternative email address(es) for sync output (--email option)"
msgstr ""
"endereÃ§os de email alternativos para saÃ­da de sincronizaÃ§Ã£o (opÃ§Ã£o --email)"

#: ../satellite_tools/satsync.py:2262
msgid "do not remove rpms when importing from local dump"
msgstr "nÃ£o remova rpms ao importar do dump local"

#: ../satellite_tools/satsync.py:2264
msgid ""
"the fully qualified domain name of the master Satellite. Valid with --mount-"
"point only. Required if you want to import org data and channel permissions."
msgstr ""
"o nome de domÃ­nio totalmente qualificado do Satellite principal. VÃ¡lido "
"apenas com --mount-point. NecessÃ¡rio se vocÃª deseja importar dados da "
"organizaÃ§Ã£o e permissÃµes de canal."

#: ../satellite_tools/satsync.py:2274
#, python-format
msgid "ERROR: these arguments make no sense in this context (try --help): %s"
msgstr ""
"ERRO: esses argumentos nÃ£o fazem sentido neste contexto (tente --help): %s"

#. An SQL error is fatal... crash and burn
#: ../satellite_tools/satsync.py:2286
#, python-format
msgid "ERROR: Can't connect to the database: %s"
msgstr "ERRO: NÃ£o Ã© possÃ­vel conectar ao banco de dados: %s"

#: ../satellite_tools/satsync.py:2287
msgid "ERROR: Check if your database is running."
msgstr "ERRO: Verifique se o seu banco de dados estÃ¡ em execuÃ§Ã£o."

#: ../satellite_tools/satsync.py:2322
#, python-format
msgid "ERROR: --debug-level takes an in integer value within the range %s."
msgstr "ERRO: --debug-level aceita um valor inteiro dentro do intervalo %s."

#: ../satellite_tools/satsync.py:2324
msgid "  0  - little logging/messaging."
msgstr "  0  - pouco registro/mensagens."

#: ../satellite_tools/satsync.py:2325
msgid "  1  - minimal logging/messaging."
msgstr "  1  - registro/mensagens mÃ­nimos."

#: ../satellite_tools/satsync.py:2326
msgid "  2  - normal level of logging/messaging."
msgstr "  2  - nÃ­vel normal de registro/mensagens."

#: ../satellite_tools/satsync.py:2327
msgid "  3  - lots of logging/messaging."
msgstr "  3  - muitos registros/mensagens."

#: ../satellite_tools/satsync.py:2328
msgid "  4+ - excessive logging/messaging."
msgstr "  4+ - registro/mensagens excessivos."

#: ../satellite_tools/satsync.py:2341
msgid "ERROR: The --master option is only valid with the --mount-point option"
msgstr "ERRO: A opÃ§Ã£o --master Ã© vÃ¡lida apenas com a opÃ§Ã£o --mount-point"

#: ../satellite_tools/satsync.py:2351
#, python-format
msgid "ERROR: Unable to lookup Org Id %s"
msgstr "ERRO: NÃ£o foi possÃ­vel procurar a ID da organizaÃ§Ã£o %s"

#: ../satellite_tools/satsync.py:2360
msgid ""
"WARNING: --list-channels option overrides any --step option. --step ignored."
msgstr ""
"AVISO: a opÃ§Ã£o --list-channels substitui qualquer opÃ§Ã£o --step. - passo "
"ignorado."

#: ../satellite_tools/satsync.py:2375
#, python-format
msgid ""
"ERROR: '%s' is not a valid step. See 'man mgr-inter-sync' for more detail."
msgstr ""
"ERRO: '%s' nÃ£o Ã© uma etapa vÃ¡lida. Veja 'man mgr-inter-sync' para mais "
"detalhes."

#: ../satellite_tools/satsync.py:2407
msgid ""
"ERROR: No channels currently imported; try mgr-inter-sync --list-channels; "
"then mgr-inter-sync -c chn0 -c chn1..."
msgstr ""
"ERRO: nenhum canal importado no momento; tente mgr-inter-sync --list-"
"channels; entÃ£o mgr-inter-sync -c chn0 -c chn1 ..."

#. int(None) --> TypeError
#. int('a')  --> ValueError
#: ../satellite_tools/satsync.py:2457 ../satellite_tools/satsync.py:2461
msgid "ERROR: --batch-size must have a value within the range: 1..50"
msgstr "ERRO: - o tamanho do lote deve ter um valor dentro do intervalo: 1..50"

#: ../satellite_tools/satsync.py:2469
#, python-format
msgid "ERROR: no such directory %s"
msgstr "ERRO: nenhum diretÃ³rio %s"

#: ../satellite_tools/satsync.py:2474
msgid "Error Codes: Returned codes means:"
msgstr "CÃ³digos de erro: cÃ³digos retornados significa:"

#: ../satellite_tools/satsync.py:2475
msgid " -1  - Could not lock file or KeyboardInterrupt or SystemExit"
msgstr ""
" -1  - NÃ£o foi possÃ­vel bloquear o arquivo ou KeyboardInterrupt ou SystemExit"

#: ../satellite_tools/satsync.py:2476
msgid "  0  - User interrupted or intentional exit"
msgstr "  0  - SaÃ­da interrompida ou intencional pelo usuÃ¡rio"

#: ../satellite_tools/satsync.py:2477
msgid "  1  - attempting to run more than one instance of mgr-inter-sync."
msgstr "  1  - tentando executar mais de uma instÃ¢ncia do mgr-inter-sync."

#: ../satellite_tools/satsync.py:2478
msgid "  2  - Unable to find synchronization tools."
msgstr "  2  - NÃ£o foi possÃ­vel encontrar as ferramentas de sincronizaÃ§Ã£o."

#: ../satellite_tools/satsync.py:2479
msgid "  3  - a general socket exception occurred"
msgstr "  3  - ocorreu uma exceÃ§Ã£o geral do soquete"

#: ../satellite_tools/satsync.py:2480
msgid "  4  - an SSL error occurred. Recheck your SSL settings."
msgstr ""
"  4  - ocorreu um erro de SSL. Verifique novamente suas configuraÃ§Ãµes de SSL."

#: ../satellite_tools/satsync.py:2481
msgid "  5  - ISS error"
msgstr "  5  - Erro ISS"

#: ../satellite_tools/satsync.py:2482
msgid "  6  - unhandled exception occurred"
msgstr "  6  - ocorreu uma exceÃ§Ã£o nÃ£o tratada"

#: ../satellite_tools/satsync.py:2483
msgid "  7  - unknown sync error"
msgstr "  7  - erro de sincronizaÃ§Ã£o desconhecido"

#: ../satellite_tools/satsync.py:2484
msgid "  8  - ERROR: must be root to execute"
msgstr "  8  - ERRO: deve ser root para executar"

#: ../satellite_tools/satsync.py:2485
msgid "  9  - rpclib fault during synchronization init"
msgstr "  9  - falha rpclib durante a sincronizaÃ§Ã£o init"

#: ../satellite_tools/satsync.py:2486
msgid "  10 - synchronization init error"
msgstr "  10 - erro de inicializaÃ§Ã£o de sincronizaÃ§Ã£o"

#: ../satellite_tools/satsync.py:2487
msgid "  11 - Error parsing XML stream"
msgstr "  11 - Erro ao analisar o fluxo XML"

#: ../satellite_tools/satsync.py:2488
msgid "  12 - Channel do not exist"
msgstr "  12 - O canal nÃ£o existe"

#: ../satellite_tools/satsync.py:2489
msgid "  13 - SQL error during importing package metadata"
msgstr "  13 - Erro SQL durante a importaÃ§Ã£o de metadados do pacote"

#: ../satellite_tools/satsync.py:2490
msgid "  14 - SQL error during linking channel packages"
msgstr "  14 - Erro SQL durante a vinculaÃ§Ã£o de pacotes de canais"

#: ../satellite_tools/satsync.py:2491
msgid "  15 - SQL error during xml processing"
msgstr "  15 - Erro SQL durante o processamento xml"

#: ../satellite_tools/satsync.py:2492
msgid "  16 - server.mount_point not set in the configuration file"
msgstr "  16 - server.mount_point nÃ£o definido no arquivo de configuraÃ§Ã£o"

#: ../satellite_tools/satsync.py:2493
msgid ""
"  17 - SQL error during retrieving the channels already imported in the SUSE "
"Manager database"
msgstr ""
"  17 - Erro SQL durante a recuperaÃ§Ã£o dos canais jÃ¡ importados no banco de "
"dados do SUSE Manager"

#: ../satellite_tools/satsync.py:2494
msgid "  18 - Wrong db connection string in rhn.conf"
msgstr "  18 - Cadeia de conexÃ£o db incorreta no rhn.conf"

#: ../satellite_tools/satsync.py:2495
msgid "  19 - Bad arguments"
msgstr "  19 - Argumentos incorretos"

#: ../satellite_tools/satsync.py:2496
msgid "  20 - Could not connect to db."
msgstr "  20 - NÃ£o foi possÃ­vel conectar ao db."

#: ../satellite_tools/satsync.py:2497
msgid "  21 - Bad debug level"
msgstr "  21 - NÃ­vel de depuraÃ§Ã£o incorreto"

#: ../satellite_tools/satsync.py:2498
msgid "  22 - Not valid step"
msgstr "  22 - Etapa invÃ¡lida"

#: ../satellite_tools/satsync.py:2499
msgid "  24 - no such file"
msgstr "  24 - arquivo inexistente"

#: ../satellite_tools/satsync.py:2500
msgid "  25 - no such directory"
msgstr "  25 - nenhum diretÃ³rio"

#: ../satellite_tools/satsync.py:2501
msgid "  26 - mount_point does not exist"
msgstr "  26 - mount_point nÃ£o existe"

#: ../satellite_tools/satsync.py:2502
msgid "  27 - No such org"
msgstr "  27 - Essa organizaÃ§Ã£o nÃ£o existe"

#: ../satellite_tools/satsync.py:2503
msgid "  28 - error: --master is only valid with --mount-point"
msgstr "  28 - erro: --master Ã© vÃ¡lido apenas com --mount-point"

#: ../satellite_tools/satsync.py:2510
#, python-format
msgid "ERROR: unknown dump version, try one of %s"
msgstr "ERRO: versÃ£o de despejo desconhecida, tente um dos %s"

#~ msgid "Your system was not found in the RHN database"
#~ msgstr "Seu sistema nÃ£o foi encontrado no banco de dados RHN"

#~ msgid "ISS is disabled on this satellite."
#~ msgstr "O ISS estÃ¡ desativado neste satÃ©lite."

#~ msgid "Spacewalk Proxy service not enabled for server profile: \"%s\""
#~ msgstr ""
#~ "ServiÃ§o Spacewalk Proxy nÃ£o ativado para o perfil do servidor: \"%s\""

#~ msgid "Red Hat Satellite Welcome Message"
#~ msgstr "Mensagem de Boas-vindas do Red Hat Satellite"

#~ msgid "Red Hat Satellite Privacy Statement"
#~ msgstr "DeclaraÃ§Ã£o de Privacidade do Red Hat Satellite"

#~ msgid ""
#~ "ERROR: Live content synchronizing with RHN Classic Hosted is no longer "
#~ "supported.\n"
#~ "Please use the cdn-sync command instead unless you are attempting to sync "
#~ "from another Satellite via Inter-Satelite-Sync (ISS), or from local "
#~ "content on disk via Channel Dump ISOs."
#~ msgstr ""
#~ "ERRO: A sincronizaÃ§Ã£o de conteÃºdo ao vivo com o RHN Classic Hosted nÃ£o Ã© "
#~ "mais suportada.\n"
#~ "Em vez disso, use o comando cdn-sync, a menos que vocÃª esteja tentando "
#~ "sincronizar a partir de outro satÃ©lite via Inter-Satelite-Sync (ISS) ou a "
#~ "partir de conteÃºdo local em disco via ISOs de despejo de canal."

#~ msgid ""
#~ "ERROR: '%s' is not a valid step. See 'man satellite-sync' for more detail."
#~ msgstr ""
#~ "ERRO: '%s' nÃ£o Ã© uma etapa vÃ¡lida. Veja 'man satellite-sync' para mais "
#~ "detalhes."
07070100000087000081B40000000000000000000000016290A0C10000B88A000000000000000000000000000000000000001B00000000spacewalk-backend/po/ro.po    # SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
#
# Translators:
# Alexandru Szasz <alexxed@gmail.com>, 2006.
# Cristian Gafton <gafton@redhat.com>, 2000-2001.
# Mihai Ibanescu <misa@redhat.com>, 2005.
# Mircea Daniel <daniel@reywind.tranceaddict>, 2006.
# Miroslav SuchÃ½ <msuchy@redhat.com>, 2011.
# Jiri Dostal <jdostal@redhat.com>, 2018. #zanata
msgid ""
msgstr ""
"Project-Id-Version: Spacewalk\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-10-16 13:34+0200\n"
"PO-Revision-Date: 2018-03-16 10:54+0000\n"
"Last-Translator: Copied by Zanata <copied-by-zanata@zanata.org>\n"
"Language-Team: Romanian (http://www.transifex.com/projects/p/fedora/language/"
"ro/)\n"
"Language: ro\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?"
"2:1));\n"
"X-Generator: Zanata 4.6.2\n"

#: ../server/apacheAuth.py:66
#, python-format
msgid "incomplete proxy authentication token: %s"
msgstr ""

#: ../server/apacheAuth.py:84
#, python-format
msgid "Sent proxy signature %s does not match ours %s."
msgstr ""

#: ../server/apacheAuth.py:119
msgid "declined proxy authentication"
msgstr ""

#: ../server/apacheRequest.py:59
#, python-format
msgid "Invalid request received (%s)."
msgstr ""

#: ../server/apacheRequest.py:120
#, python-format
msgid ""
"IMPORTANT MESSAGE FOLLOWS:\n"
"%s"
msgstr ""

#: ../server/apacheRequest.py:149
#, python-format
msgid ""
"While running '%s': caught\n"
"%s : %s\n"
msgstr ""

#: ../server/apacheRequest.py:606
#, python-format
msgid "Invalid URI %s"
msgstr ""

#: ../server/configFilesHandler.py:129 ../server/handlers/app/packages.py:192
#: ../server/handlers/xmlrpc/registration.py:215
#: ../server/handlers/xmlrpc/registration.py:1168
#: ../server/handlers/xmlrpc/registration.py:1307
#, python-format
msgid ""
"\n"
"                   %s Account has been deactivated on this server.\n"
"                   Please contact your Org administrator for more help."
msgstr ""

#: ../server/handlers/applet/applet.py:78
#, python-brace-format
msgid "Your system was not found in the {PRODUCT_NAME} database"
msgstr ""

#: ../server/handlers/sat/auth.py:45
msgid "ISS is disabled on this server."
msgstr ""

#: ../server/handlers/sat/auth.py:50
#, python-format
msgid "Server \"%s\" is not enabled for ISS."
msgstr ""

#: ../server/handlers/xmlrpc/errata.py:64
#, python-format
msgid "Expected a package name, not: %s"
msgstr ""

#: ../server/handlers/xmlrpc/errata.py:115
#, python-format
msgid "Expected a package, not: %s"
msgstr ""

#: ../server/handlers/xmlrpc/proxy.py:65
#, python-format
msgid "SUSE Manager Proxy service not enabled for server profile: \"%s\""
msgstr ""

#: ../server/handlers/xmlrpc/proxy.py:85
msgid "Invalid session key"
msgstr ""

#: ../server/handlers/xmlrpc/proxy.py:93
msgid "This server ID no longer exists"
msgstr ""

#: ../server/handlers/xmlrpc/queue.py:433
#, python-format
msgid "Invalid action value type %s (%s)"
msgstr ""

#: ../server/handlers/xmlrpc/queue.py:464
#, python-format
msgid "Action %s does not belong to server %s"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:194
msgid "Required data missing"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:198
msgid "Required members missing"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:207
msgid "Attempt to register a system to an invalid username"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:839
msgid "Invalid system release version requested"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1063
msgid ""
"Unable to find a valid network interface, both ipaddr and ip6addr not found."
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1115
#, python-brace-format
msgid "{PRODUCT_NAME} Welcome Message"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1125
msgid "Privacy Statement"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1146
msgid "Expected a dictionary as a product argument"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1374
#, python-format
msgid "Invalid value '%s' for %s (%s)"
msgstr ""

#: ../server/handlers/xmlrpc/scap.py:104
msgid "Invalid system_id/action_id pair."
msgstr ""

#: ../server/handlers/xmlrpc/up2date.py:233
#, python-format
msgid "Invalid value %s (%s)"
msgstr ""

#: ../server/importlib/userAuth.py:98
msgid "You are not authorized to manage packages in the null org"
msgstr ""

#: ../server/importlib/userAuth.py:103
#, python-format
msgid "You are not allowed to manage packages in the %s org"
msgstr ""

#: ../server/importlib/userAuth.py:121
msgid "You are not allowed to perform administrative tasks"
msgstr ""

#: ../server/importlib/userAuth.py:144
#, python-format
msgid ""
"You are not allowed to manage channel %s, or that channel does not exist"
msgstr ""

#: ../server/importlib/userAuth.py:204
#, python-format
msgid ""
"\n"
"               %s Account has been deactivated on this server.\n"
"               Please contact your Org administrator for more help."
msgstr ""

#: ../server/rhnChannel.py:1992
#, python-format
msgid ""
"Your account does not have access to any channels matching "
"(release='%(release)s', arch='%(arch)s')%(www_activation)s"
msgstr ""

#: ../server/rhnChannel.py:2002
msgid ""
"\n"
"If you have a registration number, please register with it first at http://"
"www.redhat.com/apps/activate/ and then try again.\n"
"\n"
msgstr ""

#: ../server/rhnChannel.py:2012
#, python-format
msgid "Insufficient subscription permissions for release (%s, %s"
msgstr ""

#. Various messages that can be reused
#.
#. bretm 02/07/2007 -- when we have better old-client documentation, probably
#. will be safe to get rid of all this crap
#: ../server/rhnChannel.py:2276 ../server/rhnChannel.py:2287
#: ../server/rhnChannel.py:2302
msgid "System Registered but Inactive"
msgstr ""

#: ../server/rhnChannel.py:2277
#, python-format
msgid ""
"\n"
"Invalid Architecture and OS release combination (%s, %s).\n"
"Your system has been registered, but will not receive updates\n"
"because it is not subscribed to a channel. If you have not yet\n"
"activated your product for service, please visit our website at:\n"
"\n"
"     http://www.redhat.com/apps/activate/\n"
"\n"
"...to activate your product."
msgstr ""

#: ../server/rhnChannel.py:2288
#, python-format
msgid ""
"\n"
"Invalid Architecture and OS release combination (%s, %s).\n"
"Your system has been registered, but will not receive updates\n"
"because it could not be subscribed to a base channel.\n"
"Please contact your organization administrator for assistance.\n"
msgstr ""

#: ../server/rhnChannel.py:2295
#, python-format
msgid ""
"\n"
"  This system has been successfully registered, but is not yet entitled\n"
"  to service.  To entitle this system to service, login to the web site at:\n"
"\n"
"  %(entitlement_url)s\n"
msgstr ""

#: ../server/rhnChannel.py:2303
#, python-format
msgid ""
"\n"
"  This system has been successfully registered, but no service entitlements\n"
"  were available.  To entitle this system to service, login to the web site "
"at:\n"
"\n"
"  %(entitlement_url)s\n"
msgstr ""

#: ../server/rhnHandler.py:62
msgid "Please run rhn_register as root on this client"
msgstr ""

#: ../server/rhnHandler.py:75
#, python-format
msgid "Service not enabled for system profile: \"%s\""
msgstr ""

#: ../server/rhnPackage.py:49 ../server/rhnPackage.py:87
#: ../server/rhnPackage.py:107 ../server/rhnPackage.py:158
#, python-format
msgid "Invalid RPM package %s requested"
msgstr ""

#: ../server/rhnPackage.py:112
msgid "Package not found"
msgstr ""

#: ../server/rhnServer/server_class.py:97
#, python-format
msgid "Architecture `%s' is not supported"
msgstr ""

#: ../server/rhnServer/server_token.py:78
#, python-format
msgid "Token `%s' has more than one base channel assigned"
msgstr ""

#: ../server/rhnServer/server_token.py:80
msgid "Conflicting base channels"
msgstr ""

#: ../server/rhnServer/server_token.py:190
#, python-format
msgid "Failed to add server to group %s"
msgstr ""

#: ../server/rhnServer/server_token.py:503
#, python-format
msgid "Maximum usage count of %s reached"
msgstr ""

#: ../server/rhnServer/server_token.py:744
msgid ""
"Stacking of re-registration tokens with different base entitlements is not "
"supported"
msgstr ""

#: ../server/rhnServer/server_token.py:811
#, python-format
msgid "Could not find token '%s'"
msgstr ""

#. Cannot use activation keys from different orgs
#: ../server/rhnServer/server_token.py:843
msgid "Tokens from mismatching orgs"
msgstr ""

#. Two tokens with different kickstart sessions
#: ../server/rhnServer/server_token.py:853
msgid "Kickstart session mismatch"
msgstr ""

#: ../server/rhnServer/server_token.py:877
msgid "Stacking of re-registration tokens is not supported"
msgstr ""

#: ../server/rhnUser.py:289 ../server/rhnUser.py:292
msgid "Invalid username/password combination"
msgstr ""

#. nope, not reserved either
#: ../server/rhnUser.py:467
#, python-format
msgid "Username `%s' has not been reserved"
msgstr ""

#. New accounts have to specify an e-mail address
#: ../server/rhnUser.py:473
msgid "E-mail address not specified"
msgstr ""

#: ../server/rhnUser.py:509
#, python-format
msgid "username should be at least %d characters"
msgstr ""

#: ../server/rhnUser.py:512
#, python-format
msgid "username should be less than %d characters"
msgstr ""

#: ../server/rhnUser.py:523
#, python-format
msgid "username = `%s', invalid character `%s'"
msgstr ""

#: ../server/rhnUser.py:542
#, python-format
msgid "Please limit your e-mail address to %s chars"
msgstr ""

#: ../server/rhnUser.py:623
#, python-format
msgid "password must be at least %d characters"
msgstr ""

#: ../server/rhnUser.py:626
#, python-format
msgid "Password must be shorter than %d characters"
msgstr ""

#: ../server/rhnUser.py:644
#, python-format
msgid "password contains character `%s'"
msgstr ""

#: ../server/rhnUser.py:651
#, python-format
msgid "username should be at least %d characters long"
msgstr ""

#: ../server/rhnUser.py:662
#, python-format
msgid "Cannot register usernames ending with %s"
msgstr ""

#. 0-999: Red Hat client/client-like interaction errors:
#: ../common/rhnException.py:53
msgid "This does not appear to be a valid username."
msgstr ""

#: ../common/rhnException.py:54
msgid "Invalid username and password combination."
msgstr ""

#: ../common/rhnException.py:55
msgid "This login is already taken, or the password is incorrect."
msgstr ""

#: ../common/rhnException.py:56
msgid "Permission denied."
msgstr ""

#: ../common/rhnException.py:57
msgid "Object not found."
msgstr ""

#: ../common/rhnException.py:58
msgid "Invalid System Digital ID."
msgstr ""

#: ../common/rhnException.py:59
msgid "Invalid System Credentials."
msgstr ""

#: ../common/rhnException.py:60
msgid "Could not retrieve user data from database."
msgstr ""

#: ../common/rhnException.py:61
msgid "Valid username required."
msgstr ""

#: ../common/rhnException.py:62
msgid "Valid password required."
msgstr ""

#: ../common/rhnException.py:63
msgid "Minimum username length violation."
msgstr ""

#: ../common/rhnException.py:64
msgid "Minimum password length violation."
msgstr ""

#: ../common/rhnException.py:65
msgid "The username contains invalid characters."
msgstr ""

#: ../common/rhnException.py:66
msgid "File not found."
msgstr ""

#: ../common/rhnException.py:67
msgid "Architecture and OS version combination is not supported."
msgstr ""

#: ../common/rhnException.py:68
msgid "Could not retrieve system data from database."
msgstr ""

#: ../common/rhnException.py:69
msgid "Invalid arguments passed to function."
msgstr ""

#: ../common/rhnException.py:70
msgid "Unable to retrieve requested entry."
msgstr ""

#: ../common/rhnException.py:71
msgid "Could not update database entry."
msgstr ""

#: ../common/rhnException.py:72
msgid "Unsupported server architecture."
msgstr ""

#: ../common/rhnException.py:73
#, python-format
msgid ""
"\n"
"     The anonymous server functionality is no longer available.\n"
"\n"
"     Please re-register this system by running mgr_register as root.\n"
"     Please visit https://%(hostname)s/rhn/systems/SystemEntitlements.do\n"
"     or login at https://%(hostname)s, and from the \"Overview\" tab,\n"
"     select \"Subscription Management\" to enable the service for this "
"system.\n"
"     "
msgstr ""

#: ../common/rhnException.py:81
msgid "Record not available in the database."
msgstr ""

#: ../common/rhnException.py:82
msgid "Invalid value for entry."
msgstr ""

#: ../common/rhnException.py:83
#, python-format
msgid ""
"\n"
"     This system does not have a valid entitlement for SUSE Manager.\n"
"     Please visit https://%(hostname)s/rhn/systems/SystemEntitlements.do\n"
"     or login at https://%(hostname)s, and from the \"Overview\" tab,\n"
"     select \"Subscription Management\" to enable the service for this "
"system.\n"
"     "
msgstr ""

#: ../common/rhnException.py:89
msgid "Channel error"
msgstr ""

#: ../common/rhnException.py:90
msgid "Client session token is invalid."
msgstr ""

#: ../common/rhnException.py:91
msgid "Client session token has expired."
msgstr ""

#: ../common/rhnException.py:92
msgid "You are not authorized to retrieve the requested object."
msgstr ""

#: ../common/rhnException.py:93
msgid "Invalid action"
msgstr ""

#: ../common/rhnException.py:94
msgid "You are not allowed to perform administrative tasks on this system."
msgstr ""

#: ../common/rhnException.py:96
msgid "The system is already subscribed to the specified channel."
msgstr ""

#: ../common/rhnException.py:97
msgid "The system is not currently subscribed to the specified channel."
msgstr ""

#: ../common/rhnException.py:98
msgid "The specified channel does not exist."
msgstr ""

#: ../common/rhnException.py:99
msgid "Invalid channel version."
msgstr ""

#: ../common/rhnException.py:100
msgid ""
"\n"
"     User group membership limits exceeded.\n"
"\n"
"     The current settings for your account do not allow you to add another\n"
"     user account. Please check with the organization administrator for "
"your\n"
"     account if the maximum number of users allowed to subscribe to server "
"needs\n"
"     to be changed.\n"
"     "
msgstr ""

#: ../common/rhnException.py:108
msgid ""
"\n"
"     System group membership limits exceeded.\n"
"\n"
"     The current settings for your account do not allow you to add another\n"
"     system profile. Please check with the organization administrator for "
"your\n"
"     account for modifying the maximum number of system profiles that can "
"be\n"
"     subscribed to your account.\n"
"     "
msgstr ""

#: ../common/rhnException.py:116
msgid ""
"\n"
"     Invalid architecture.\n"
"\n"
"     The architecture of the package is not supported by\n"
"     "
msgstr ""

#: ../common/rhnException.py:121
msgid "Invalid RPM header"
msgstr ""

#: ../common/rhnException.py:122
msgid ""
"\n"
"    This system is already registered as a Salt Minion. If you want to "
"register it as a traditional client\n"
"    please delete it first via the web UI or API and then register it using "
"the traditional tools.\n"
"    "
msgstr ""

#. For the uploading tools
#: ../common/rhnException.py:127
msgid "Invalid information uploaded to the server"
msgstr ""

#: ../common/rhnException.py:128
msgid "Error uploading network interfaces configuration."
msgstr ""

#: ../common/rhnException.py:129
msgid ""
"\n"
"     Package Upload Failed due to uniqueness constraint violation.\n"
"     Make sure the package does not have any duplicate dependencies or\n"
"     does not already exists on the server\n"
"     "
msgstr ""

#: ../common/rhnException.py:134
msgid ""
"\n"
"     The --force rhnpush option is disabled on this server.\n"
"     Please contact your SUSE Manager administrator for more help.\n"
"     "
msgstr ""

#. 60-70: token errors
#: ../common/rhnException.py:140
msgid ""
"\n"
"     The activation token specified could not be found on the server.\n"
"     Please retry with a valid key.\n"
"     "
msgstr ""

#: ../common/rhnException.py:144
msgid "Too many systems registered using this registration token"
msgstr ""

#: ../common/rhnException.py:145
msgid "Token contains invalid, obsoleted or insufficient settings"
msgstr ""

#: ../common/rhnException.py:146
msgid "Conflicting activation tokens"
msgstr ""

#. 70-80: channel subscription errors
#: ../common/rhnException.py:149
msgid ""
"\n"
"     No matching base channel found for your system.\n"
"     "
msgstr ""

#: ../common/rhnException.py:152
msgid ""
"\n"
"     You do not have subscription permission to the designated channel.\n"
"     Please refer to your organization's channel or organization\n"
"     administrators for further details.\n"
"     "
msgstr ""

#: ../common/rhnException.py:157
msgid "You can not unsubscribe from base channel."
msgstr ""

#: ../common/rhnException.py:158
msgid "SUSE Manager or Proxy channel can not be subscribed."
msgstr ""

#. 80-90: server group errors
#: ../common/rhnException.py:161
msgid "There was an error while trying to join the system to its groups"
msgstr ""

#. 90-100: entitlement errors
#: ../common/rhnException.py:164
msgid "Unable to entitle system"
msgstr ""

#. 100-109: e-mail and uuid related faults
#: ../common/rhnException.py:167
msgid "Maximum e-mail length violation."
msgstr ""

#: ../common/rhnException.py:168
msgid "This system has been previously registered."
msgstr ""

#: ../common/rhnException.py:169
msgid "Invalid username"
msgstr ""

#. 140-159 applet errors
#: ../common/rhnException.py:172
msgid "Unable to look up server"
msgstr ""

#. 160-179: OSAD errors
#: ../common/rhnException.py:175
msgid "Required argument is missing"
msgstr ""

#. 600-699: RHEL5+ EN errors
#: ../common/rhnException.py:178
msgid "No entitlement information tied to hardware"
msgstr ""

#: ../common/rhnException.py:179
msgid "Installation number is not entitling"
msgstr ""

#. 700-799: Additional user input verification errors.
#: ../common/rhnException.py:182
msgid "Maximum username length violation"
msgstr ""

#: ../common/rhnException.py:183
msgid "Maximum password length violation"
msgstr ""

#: ../common/rhnException.py:184
msgid "This user has read only API access. Action denied."
msgstr ""

#: ../common/rhnException.py:186
msgid "System Name cannot be less than 1 character"
msgstr ""

#. 1000-1999: Proxy specific errors:
#. issued by a Proxy to the client
#: ../common/rhnException.py:190
msgid "SUSE Manager Proxy error."
msgstr ""

#: ../common/rhnException.py:191
msgid "SUSE Manager Proxy unable to login."
msgstr ""

#. issued by a SUSE Manager Server/Satellite to the proxy
#: ../common/rhnException.py:193
msgid ""
"\n"
"     SUSE Manager Proxy system ID does not match a Spacewalk Proxy Server\n"
"     in the database.\n"
"     "
msgstr ""

#: ../common/rhnException.py:197
msgid "SUSE Manager Proxy session token is invalid."
msgstr ""

#: ../common/rhnException.py:198
msgid "SUSE Manager Proxy session token has expired."
msgstr ""

#. 2000-2999: Red Hat Satellite specific errors:
#: ../common/rhnException.py:202
msgid ""
"\n"
"      user creation is not allowed via mgr_register;\n"
"     please contact your sysadmin to have your account created.\n"
"     "
msgstr ""

#: ../common/rhnException.py:206
msgid ""
"\n"
"     This SUSE Manager server is not allowed to use Inter Server Sync on "
"this server\n"
"     "
msgstr ""

#: ../common/rhnException.py:209
msgid ""
"\n"
"     Inter Server Sync is disabled on this SUSE Manager Server.\n"
"     "
msgstr ""

#. 3000-3999: XML dumper errors:
#: ../common/rhnException.py:214
msgid "Invalid datatype passed"
msgstr ""

#: ../common/rhnException.py:215
msgid "Unable to retrieve channel"
msgstr ""

#: ../common/rhnException.py:216
msgid "Unable to retrieve package"
msgstr ""

#: ../common/rhnException.py:217
msgid "Unable to retrieve erratum"
msgstr ""

#: ../common/rhnException.py:218
msgid "File is missing"
msgstr ""

#: ../common/rhnException.py:219
msgid "Function retrieval error"
msgstr ""

#: ../common/rhnException.py:220
msgid "Function execution error"
msgstr ""

#: ../common/rhnException.py:221
msgid "Missing version string"
msgstr ""

#: ../common/rhnException.py:222
msgid "Invalid version string"
msgstr ""

#: ../common/rhnException.py:223
msgid "Mismatching versions"
msgstr ""

#: ../common/rhnException.py:224
msgid "Invalid channel version"
msgstr ""

#: ../common/rhnException.py:225
msgid "No comps file for channel"
msgstr ""

#: ../common/rhnException.py:226
msgid "Unable to retrieve comps file"
msgstr ""

#. 4000 - 4999: config management errors
#: ../common/rhnException.py:229
msgid "Configuration action missing"
msgstr ""

#: ../common/rhnException.py:230
msgid "File too large"
msgstr ""

#: ../common/rhnException.py:231
msgid "File contains binary data"
msgstr ""

#: ../common/rhnException.py:232
msgid "Configuration channel is not empty"
msgstr ""

#: ../common/rhnException.py:233
msgid "Permission error"
msgstr ""

#: ../common/rhnException.py:234
msgid "Content missing for configuration file"
msgstr ""

#: ../common/rhnException.py:235
msgid "Template delimiters not specified"
msgstr ""

#: ../common/rhnException.py:236
msgid "Configuration channel does not exist"
msgstr ""

#: ../common/rhnException.py:237
msgid "Configuration channel already exists"
msgstr ""

#: ../common/rhnException.py:238
msgid "File missing from configuration channel"
msgstr ""

#: ../common/rhnException.py:239
msgid "Different revision of this file is uploaded"
msgstr ""

#: ../common/rhnException.py:240
msgid "File already uploaded to configuration channel"
msgstr ""

#: ../common/rhnException.py:241
msgid "File size exceeds remaining quota space"
msgstr ""

#: ../common/rhnException.py:242
msgid "Full path of file must be specified"
msgstr ""

#: ../common/rhnException.py:243
msgid "Invalid revision number"
msgstr ""

#: ../common/rhnException.py:244
msgid "Cannot compare files of different file type"
msgstr ""

#. 5000 - 5999: client content uploading errors
#. 5000 - 5099: crash reporting errors
#: ../common/rhnException.py:248
msgid "Crash information is invalid or incomplete"
msgstr ""

#: ../common/rhnException.py:249
msgid "Crash file information is invalid or incomplete"
msgstr ""

#: ../common/rhnException.py:250
msgid "Error composing crash directory path"
msgstr ""

#: ../common/rhnException.py:251
msgid "Error composing crash file path"
msgstr ""

#: ../common/rhnException.py:252 ../common/rhnException.py:259
msgid "Invalid content encoding"
msgstr ""

#: ../common/rhnException.py:253
msgid "Invalid crash name"
msgstr ""

#: ../common/rhnException.py:254
msgid "Crash reporting is disabled for this organization"
msgstr ""

#. 5100 - 5199: scap results reporting error
#: ../common/rhnException.py:256
msgid "SCAP results file transfer is invalid or incomplete"
msgstr ""

#: ../common/rhnException.py:257
msgid "Error composing directory path for detailed SCAP results"
msgstr ""

#: ../common/rhnException.py:258
msgid "Error composing file path for detailed SCAP results"
msgstr ""

#: ../common/rhnException.py:306
msgid ""
"\n"
"     An error has occurred while processing your request. If this problem\n"
"     persists please enter a bug report at scc.suse.com.\n"
"     If you choose to submit the bug report, please be sure to include\n"
"     details of what you were trying to do when this error occurred and\n"
"     details on how to reproduce this problem.\n"
msgstr ""

#: ../common/rhnException.py:358
#, python-format
msgid ""
"Error Message:\n"
"    %s\n"
msgstr ""

#: ../common/rhnException.py:360
#, python-format
msgid "Error Class Code: %s\n"
msgstr ""

#: ../common/rhnException.py:363
#, python-format
msgid "Error Class Info: %s\n"
msgstr ""

#: ../common/rhnException.py:365
#, python-format
msgid "Explanation: %s"
msgstr ""

#: ../common/rhnTB.py:205
#, python-format
msgid "ERROR: %s %s: %s"
msgstr ""

#: ../common/rhnTB.py:207
#, python-format
msgid "TRACEBACK: %s"
msgstr ""

#: ../satellite_tools/disk_dumper/iss.py:1294
#: ../satellite_tools/disk_dumper/iss.py:1298
#, python-format
msgid "format of %s should be at least YYYYMMDD.\n"
msgstr ""

#: ../satellite_tools/messages.py:26
#, python-format
msgid ""
"\n"
"ERROR: executing step %s. Error is:\n"
"%s\n"
msgstr ""

#: ../satellite_tools/messages.py:31
#, python-format
msgid ""
"\n"
"ERROR: there was a problem accessing the channel data from your temporary\n"
"       repository. Did you migrate all of the data from the channel ISOs\n"
"       do this directory? If so, please recheck the channels ISOs, ensure\n"
"       that you have them all, and then iteratively remount and repopulate\n"
"       the temporary repository (%s).\n"
msgstr ""

#: ../satellite_tools/messages.py:39
#, python-format
msgid ""
"\n"
"ERROR: there was a problem synchronizing the information.\n"
"       Error message: %s\n"
msgstr ""

#: ../satellite_tools/messages.py:44
#, python-format
msgid ""
"\n"
"ERROR: There was a problem communicating with the ISS Master.\n"
"       Depending on the specific error details, please review your "
"configuration,\n"
"       basic network connectivity, and/or name resolution, and try again.\n"
"       Error message: %s\n"
msgstr ""

#: ../satellite_tools/messages.py:51
#, python-format
msgid ""
"\n"
"ERROR: There was a problem communicating with the ISS Master.\n"
"       If the master satellite is older than v5.3, it does not have ISS "
"capability.\n"
"       Otherwise, depending on the specific error details, please review "
"your\n"
"       configuration, basic network connectivity, and/or name resolution, "
"and try again.\n"
"       Error message: %s\n"
msgstr ""

#: ../satellite_tools/messages.py:59
#, python-format
msgid ""
"\n"
"ERROR: a child-channel cannot be synced without its parent being synced as\n"
"       well. A parent needs to be either (a) previously synced or (b) "
"synced\n"
"       in tandem with the desired child-channel. Missing parents for this\n"
"       transaction:\n"
"       %s\n"
msgstr ""

#: ../satellite_tools/messages.py:67
#, python-format
msgid ""
"\n"
"ERROR: you are not entitled to sync a channel in this set of channels.\n"
"Please contact your SUSE Manager contact\n"
"%s"
msgstr ""

#: ../satellite_tools/messages.py:72
#, python-format
msgid "  ERROR: not enough free space (%s KB) on device."
msgstr ""

#: ../satellite_tools/messages.py:74
#, python-format
msgid "    %3d/%s Fetch successful: %s (%s bytes)"
msgstr ""

#: ../satellite_tools/messages.py:75
#, python-format
msgid "    Extinct package:  %s"
msgstr ""

#: ../satellite_tools/messages.py:76
#, python-format
msgid "   Total size: %s"
msgstr ""

#: ../satellite_tools/messages.py:77
#, python-format
msgid "      Downloaded %s of %s. Estimated remaining time: %s"
msgstr ""

#: ../satellite_tools/messages.py:78
#, python-format
msgid "    Fetch unsuccessful: %s"
msgstr ""

#: ../satellite_tools/messages.py:79
#, python-format
msgid "   RPM fetch summary: %s"
msgstr ""

#: ../satellite_tools/messages.py:80
#, python-format
msgid "       success: %d"
msgstr ""

#: ../satellite_tools/messages.py:81
#, python-format
msgid "       failed:  %d"
msgstr ""

#: ../satellite_tools/messages.py:82
#, python-format
msgid "       extinct: %d"
msgstr ""

#: ../satellite_tools/messages.py:84
#, python-format
msgid "   Retrieving / parsing *relevant* package metadata: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:85
#, python-format
msgid "   Retrieving / parsing errata data: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:86
#, python-format
msgid "   Retrieving / parsing kickstart data: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:87
#, python-format
msgid "   Retrieving / parsing kickstart tree files: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:88
#, python-format
msgid "   Importing *relevant* package metadata: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:89
msgid "   * WARNING: this may be a slow process."
msgstr ""

#: ../satellite_tools/messages.py:90
msgid "Linking packages to channels"
msgstr ""

#: ../satellite_tools/messages.py:91
#, python-format
msgid "   Importing *relevant* errata: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:92
msgid "   No new kickstartable tree to import"
msgstr ""

#: ../satellite_tools/messages.py:93
#, python-format
msgid "Importing kickstartable trees (%d)"
msgstr ""

#: ../satellite_tools/messages.py:94
#, python-format
msgid "Imported kickstartable trees (%d)"
msgstr ""

#: ../satellite_tools/reposync.py:111 ../satellite_tools/satsync.py:439
msgid "+++ sending log as an email +++"
msgstr ""

#: ../satellite_tools/reposync.py:114
#, python-format
msgid "%s sync. report from %s"
msgstr ""

#: ../satellite_tools/reposync.py:124 ../satellite_tools/satsync.py:449
msgid "+++ email requested, but there is nothing to send +++"
msgstr ""

#: ../satellite_tools/rhn_satellite_activate.py:198
#, python-format
msgid ""
"\"%s\" (specified in commandline)\n"
"could not be opened and read:\n"
"%s"
msgstr ""

#: ../satellite_tools/rhn_satellite_activate.py:205
#, python-format
msgid ""
"\"%s\" could not be opened\n"
"and/or written to:\n"
"%s"
msgstr ""

#: ../satellite_tools/satsync.py:258
#, python-format
msgid "No handler for step %s"
msgstr ""

#. Try one more time - this time it should be faster since
#. everything should be cached
#: ../satellite_tools/satsync.py:270
msgid "Environment changed, trying again..."
msgstr ""

#: ../satellite_tools/satsync.py:277
msgid "ERROR: Encountered IntegrityError: \n"
msgstr ""

#: ../satellite_tools/satsync.py:285
msgid "Repeated failures"
msgstr ""

#: ../satellite_tools/satsync.py:290
#, python-format
msgid ""
"    Import complete:\n"
"        Begin time: %s\n"
"        End time:   %s\n"
"        Elapsed:    %s\n"
"          "
msgstr ""

#: ../satellite_tools/satsync.py:311
msgid "hours"
msgstr ""

#: ../satellite_tools/satsync.py:311
msgid "minutes"
msgstr ""

#: ../satellite_tools/satsync.py:311
msgid "seconds"
msgstr ""

#: ../satellite_tools/satsync.py:357
msgid ""
"ERROR: The dump is missing package data, use --no-rpms to skip this step or "
"fix the content to include package data."
msgstr ""

#. the orgs() method doesn't exist; that's fine we just
#. won't sync the orgs
#: ../satellite_tools/satsync.py:404
msgid "The SUSE Manager master does not support syncing orgs data."
msgstr ""

#: ../satellite_tools/satsync.py:404
msgid "Skipping..."
msgstr ""

#: ../satellite_tools/satsync.py:442
#, python-format
msgid "SUSE Manager Inter Server sync. report from %s"
msgstr ""

#: ../satellite_tools/satsync.py:521
msgid " - file-system synchronization"
msgstr ""

#: ../satellite_tools/satsync.py:533 ../satellite_tools/satsync.py:541
msgid " - live synchronization"
msgstr ""

#: ../satellite_tools/satsync.py:534
#, python-brace-format
msgid ""
"ERROR: Live content synchronizing with RHN Classic Hosted is no longer "
"supported.\n"
"Please use the cdn-sync command instead unless you are attempting to sync "
"from another {PRODUCT_NAME} via Inter-Server-Sync (ISS), or from local "
"content on disk via Channel Dump ISOs."
msgstr ""

#: ../satellite_tools/satsync.py:542
#, python-format
msgid "   url: %s"
msgstr ""

#: ../satellite_tools/satsync.py:543
#, python-format
msgid "   debug/output level: %s"
msgstr ""

#: ../satellite_tools/satsync.py:553
msgid "ERROR: this server must be registered with SUSE Manager."
msgstr ""

#: ../satellite_tools/satsync.py:575
#, python-format
msgid "Retrieving / parsing %s data"
msgstr ""

#: ../satellite_tools/satsync.py:585 ../satellite_tools/satsync.py:600
msgid "*** SYSTEM INTERRUPT CALLED ***"
msgstr ""

#: ../satellite_tools/satsync.py:593
msgid "ERROR: fatal parser exception occurred "
msgstr ""

#: ../satellite_tools/satsync.py:594
#, python-format
msgid "(line: %s, col: %s msg: %s)"
msgstr ""

#: ../satellite_tools/satsync.py:598
#, python-format
msgid "ERROR: parser exception occurred: %s"
msgstr ""

#: ../satellite_tools/satsync.py:603
msgid "ERROR: exception (during parse) occurred: "
msgstr ""

#: ../satellite_tools/satsync.py:604
#, python-format
msgid ""
"   Encountered some errors with %s data (see logs (%s) for more information)"
msgstr ""

#: ../satellite_tools/satsync.py:606
#, python-format
msgid "   Encountered some errors with %s data:"
msgstr ""

#: ../satellite_tools/satsync.py:607
#, python-format
msgid "   ------- %s PARSE/IMPORT ERROR -------"
msgstr ""

#: ../satellite_tools/satsync.py:609
msgid "   ---------------------------------------"
msgstr ""

#: ../satellite_tools/satsync.py:612
#, python-format
msgid "%s data complete"
msgstr ""

#: ../satellite_tools/satsync.py:665
msgid "Retrieving / parsing channel data"
msgstr ""

#: ../satellite_tools/satsync.py:718
msgid "Channel data complete"
msgstr ""

#: ../satellite_tools/satsync.py:736
#, python-format
msgid "%10s import from %s"
msgstr ""

#: ../satellite_tools/satsync.py:739
#, python-format
msgid "%10s import from %s - %s"
msgstr ""

#: ../satellite_tools/satsync.py:743
#, python-format
msgid "%10s"
msgstr ""

#: ../satellite_tools/satsync.py:750
msgid "p"
msgstr ""

#: ../satellite_tools/satsync.py:752
msgid "."
msgstr ""

#: ../satellite_tools/satsync.py:758
msgid "   p = previously imported/synced channel"
msgstr ""

#: ../satellite_tools/satsync.py:759
msgid "   . = channel not yet imported/synced"
msgstr ""

#: ../satellite_tools/satsync.py:765
msgid "   e = channel no longer supported (end-of-service)"
msgstr ""

#: ../satellite_tools/satsync.py:767
msgid "   ? = channel label invalid --- typo?"
msgstr ""

#: ../satellite_tools/satsync.py:771
#, python-format
msgid "   %s:"
msgstr ""

#: ../satellite_tools/satsync.py:772
#, python-format
msgid "      %s %-40s %4s %s"
msgstr ""

#: ../satellite_tools/satsync.py:773
msgid "base-channels"
msgstr ""

#: ../satellite_tools/satsync.py:786 ../satellite_tools/satsync.py:1603
msgid "NONE RELEVANT"
msgstr ""

#: ../satellite_tools/satsync.py:808
msgid "end-of-service"
msgstr ""

#: ../satellite_tools/satsync.py:809
msgid "e"
msgstr ""

#: ../satellite_tools/satsync.py:815
msgid "   typos:"
msgstr ""

#: ../satellite_tools/satsync.py:816
msgid "?"
msgstr ""

#: ../satellite_tools/satsync.py:831
#, python-format
msgid "XXX: imported channels: %s"
msgstr ""

#: ../satellite_tools/satsync.py:832
#, python-format
msgid "XXX:   cached channels: %s"
msgstr ""

#: ../satellite_tools/satsync.py:837
msgid "XXX: list channels called"
msgstr ""

#: ../satellite_tools/satsync.py:855
msgid "ERROR: these channels either do not exist or are not available:"
msgstr ""

#: ../satellite_tools/satsync.py:859
#, python-format
msgid "       (to see a list of channel labels: %s --list-channels)"
msgstr ""

#: ../satellite_tools/satsync.py:904
#, python-format
msgid "   Retrieving / parsing short package metadata: %s (%s)"
msgstr ""

#: ../satellite_tools/satsync.py:965
#, python-format
msgid "Diffing package metadata (what's missing locally?): %s"
msgstr ""

#: ../satellite_tools/satsync.py:971 ../satellite_tools/satsync.py:1254
msgid "Diffing:    "
msgstr ""

#: ../satellite_tools/satsync.py:988
msgid "ERROR: incremental dump skipped"
msgstr ""

#: ../satellite_tools/satsync.py:1079
msgid "Downloading rpm packages"
msgstr ""

#: ../satellite_tools/satsync.py:1084
#, python-format
msgid "   Fetching any missing RPMs: %s (%s)"
msgstr ""

#: ../satellite_tools/satsync.py:1085 ../satellite_tools/satsync.py:1153
msgid "NONE MISSING"
msgstr ""

#: ../satellite_tools/satsync.py:1094
msgid "Processing rpm packages complete"
msgstr ""

#: ../satellite_tools/satsync.py:1121
msgid "Downloading package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1146
msgid "Downloading srpm packages"
msgstr ""

#: ../satellite_tools/satsync.py:1152
#, python-format
msgid "   Fetching any missing SRPMs: %s (%s)"
msgstr ""

#: ../satellite_tools/satsync.py:1249
#, python-format
msgid "Diffing source package metadata (what's missing locally?): %s"
msgstr ""

#: ../satellite_tools/satsync.py:1260
msgid "Downloading source package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1338 ../satellite_tools/satsync.py:2027
#, python-format
msgid "Unable to save file %s: %s"
msgstr ""

#. for
#. Retried a number of times and it still failed; log the
#. file as being failed and move on
#: ../satellite_tools/satsync.py:1345
#, python-format
msgid "Failed to fetch file %s"
msgstr ""

#: ../satellite_tools/satsync.py:1350
msgid "Downloading kickstartable trees metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1365
msgid "Downloading kickstartable trees files"
msgstr ""

#: ../satellite_tools/satsync.py:1504
#, python-format
msgid "Grabbing all patches for channel %s"
msgstr ""

#: ../satellite_tools/satsync.py:1554
msgid "Downloading patch data"
msgstr ""

#: ../satellite_tools/satsync.py:1556
msgid "Forcing download of all patch data for requested channels."
msgstr ""

#: ../satellite_tools/satsync.py:1571
msgid "Downloading patch data complete"
msgstr ""

#: ../satellite_tools/satsync.py:1576 ../satellite_tools/satsync.py:1597
msgid "Downloading:"
msgstr ""

#: ../satellite_tools/satsync.py:1579
msgid " - complete"
msgstr ""

#: ../satellite_tools/satsync.py:1624
msgid "Importing source package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1627
msgid "Importing package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1635
msgid "Importing:  "
msgstr ""

#. not in the cache
#: ../satellite_tools/satsync.py:1703
msgid ""
"Package Not Found in Cache, Clear the Cache "
"to                                  Regenerate it."
msgstr ""

#: ../satellite_tools/satsync.py:1709
msgid "Importing channel patches"
msgstr ""

#: ../satellite_tools/satsync.py:1714
#, python-format
msgid "Importing %s patches for channel %s."
msgstr ""

#. Incomplete configuration
#: ../satellite_tools/satsync.py:2113
msgid "ERROR: server.mount_point not set in the configuration file"
msgstr ""

#: ../satellite_tools/satsync.py:2117
#, python-format
msgid "ERROR: server.mount_point %s do not exist"
msgstr ""

#: ../satellite_tools/satsync.py:2122
#, python-format
msgid "ERROR: path under server.mount_point (%s)  do not exist"
msgstr ""

#: ../satellite_tools/satsync.py:2199
#, python-format
msgid "Commandline: %s"
msgstr ""

#: ../satellite_tools/satsync.py:2202
#, python-format
msgid ""
"DEBUG ONLY: max. batch-size for XML/database-import processing (1..%s).\"man "
"satellite-sync\" for more information."
msgstr ""

#: ../satellite_tools/satsync.py:2205
msgid "alternative SSL CA Cert (fullpath to cert file)"
msgstr ""

#: ../satellite_tools/satsync.py:2207
msgid "process data for this channel only"
msgstr ""

#: ../satellite_tools/satsync.py:2209
msgid ""
"disk dump will be considered to be a full export; see \"man satellite-sync\" "
"for more information."
msgstr ""

#: ../satellite_tools/satsync.py:2212
msgid "existing custom channels will also be synced (unless -c is used)"
msgstr ""

#: ../satellite_tools/satsync.py:2214
#, python-format
msgid ""
"override debug level set in /etc/rhn/rhn.conf (which is currently set at %s)."
msgstr ""

#: ../satellite_tools/satsync.py:2216
#, python-format
msgid "requested version of XML dump (default: %s)"
msgstr ""

#: ../satellite_tools/satsync.py:2218
msgid "e-mail a report of what was synced/imported"
msgstr ""

#: ../satellite_tools/satsync.py:2220
msgid "forcibly process all (not a diff of) patch metadata"
msgstr ""

#: ../satellite_tools/satsync.py:2222
msgid "Do not use an http proxy under any circumstances."
msgstr ""

#: ../satellite_tools/satsync.py:2224
msgid "alternative http proxy (hostname:port)"
msgstr ""

#: ../satellite_tools/satsync.py:2226
msgid "alternative http proxy username"
msgstr ""

#: ../satellite_tools/satsync.py:2228
msgid "alternative http proxy password"
msgstr ""

#: ../satellite_tools/satsync.py:2230
msgid "parent SUSE Manager to import content from"
msgstr ""

#: ../satellite_tools/satsync.py:2232
msgid "list all available channels and exit"
msgstr ""

#: ../satellite_tools/satsync.py:2234
msgid "help on all error codes mgr-inter-sync returns"
msgstr ""

#: ../satellite_tools/satsync.py:2236
msgid "source mount point for import - disk update only"
msgstr ""

#: ../satellite_tools/satsync.py:2238
msgid "do not process patch data"
msgstr ""

#: ../satellite_tools/satsync.py:2240
msgid "do not process kickstart data (provisioning only)"
msgstr ""

#: ../satellite_tools/satsync.py:2242
msgid "do not process full package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:2244
msgid "do not download, or process any RPMs"
msgstr ""

#: ../satellite_tools/satsync.py:2246
msgid "turn off SSL (not recommended)"
msgstr ""

#: ../satellite_tools/satsync.py:2248
msgid "org to which the sync imports data. defaults to the admin account"
msgstr ""

#: ../satellite_tools/satsync.py:2250
msgid "print the configuration and exit"
msgstr ""

#: ../satellite_tools/satsync.py:2252
msgid "alternative server with which to connect (hostname)"
msgstr ""

#: ../satellite_tools/satsync.py:2254
msgid "synchronize to this step (man satellite-sync for more info)"
msgstr ""

#: ../satellite_tools/satsync.py:2256
msgid "write complete data to tempfile before streaming to remainder of app"
msgstr ""

#: ../satellite_tools/satsync.py:2258
msgid "DEBUG ONLY: alternative path to digital system id"
msgstr ""

#: ../satellite_tools/satsync.py:2260
msgid "alternative email address(es) for sync output (--email option)"
msgstr ""

#: ../satellite_tools/satsync.py:2262
msgid "do not remove rpms when importing from local dump"
msgstr ""

#: ../satellite_tools/satsync.py:2264
msgid ""
"the fully qualified domain name of the master Satellite. Valid with --mount-"
"point only. Required if you want to import org data and channel permissions."
msgstr ""

#: ../satellite_tools/satsync.py:2274
#, python-format
msgid "ERROR: these arguments make no sense in this context (try --help): %s"
msgstr ""

#. An SQL error is fatal... crash and burn
#: ../satellite_tools/satsync.py:2286
#, python-format
msgid "ERROR: Can't connect to the database: %s"
msgstr ""

#: ../satellite_tools/satsync.py:2287
msgid "ERROR: Check if your database is running."
msgstr ""

#: ../satellite_tools/satsync.py:2322
#, python-format
msgid "ERROR: --debug-level takes an in integer value within the range %s."
msgstr ""

#: ../satellite_tools/satsync.py:2324
msgid "  0  - little logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2325
msgid "  1  - minimal logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2326
msgid "  2  - normal level of logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2327
msgid "  3  - lots of logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2328
msgid "  4+ - excessive logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2341
msgid "ERROR: The --master option is only valid with the --mount-point option"
msgstr ""

#: ../satellite_tools/satsync.py:2351
#, python-format
msgid "ERROR: Unable to lookup Org Id %s"
msgstr ""

#: ../satellite_tools/satsync.py:2360
msgid ""
"WARNING: --list-channels option overrides any --step option. --step ignored."
msgstr ""

#: ../satellite_tools/satsync.py:2375
#, python-format
msgid ""
"ERROR: '%s' is not a valid step. See 'man mgr-inter-sync' for more detail."
msgstr ""

#: ../satellite_tools/satsync.py:2407
msgid ""
"ERROR: No channels currently imported; try mgr-inter-sync --list-channels; "
"then mgr-inter-sync -c chn0 -c chn1..."
msgstr ""

#. int(None) --> TypeError
#. int('a')  --> ValueError
#: ../satellite_tools/satsync.py:2457 ../satellite_tools/satsync.py:2461
msgid "ERROR: --batch-size must have a value within the range: 1..50"
msgstr ""

#: ../satellite_tools/satsync.py:2469
#, python-format
msgid "ERROR: no such directory %s"
msgstr ""

#: ../satellite_tools/satsync.py:2474
msgid "Error Codes: Returned codes means:"
msgstr ""

#: ../satellite_tools/satsync.py:2475
msgid " -1  - Could not lock file or KeyboardInterrupt or SystemExit"
msgstr ""

#: ../satellite_tools/satsync.py:2476
msgid "  0  - User interrupted or intentional exit"
msgstr ""

#: ../satellite_tools/satsync.py:2477
msgid "  1  - attempting to run more than one instance of mgr-inter-sync."
msgstr ""

#: ../satellite_tools/satsync.py:2478
msgid "  2  - Unable to find synchronization tools."
msgstr ""

#: ../satellite_tools/satsync.py:2479
msgid "  3  - a general socket exception occurred"
msgstr ""

#: ../satellite_tools/satsync.py:2480
msgid "  4  - an SSL error occurred. Recheck your SSL settings."
msgstr ""

#: ../satellite_tools/satsync.py:2481
msgid "  5  - ISS error"
msgstr ""

#: ../satellite_tools/satsync.py:2482
msgid "  6  - unhandled exception occurred"
msgstr ""

#: ../satellite_tools/satsync.py:2483
msgid "  7  - unknown sync error"
msgstr ""

#: ../satellite_tools/satsync.py:2484
msgid "  8  - ERROR: must be root to execute"
msgstr ""

#: ../satellite_tools/satsync.py:2485
msgid "  9  - rpclib fault during synchronization init"
msgstr ""

#: ../satellite_tools/satsync.py:2486
msgid "  10 - synchronization init error"
msgstr ""

#: ../satellite_tools/satsync.py:2487
msgid "  11 - Error parsing XML stream"
msgstr ""

#: ../satellite_tools/satsync.py:2488
msgid "  12 - Channel do not exist"
msgstr ""

#: ../satellite_tools/satsync.py:2489
msgid "  13 - SQL error during importing package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:2490
msgid "  14 - SQL error during linking channel packages"
msgstr ""

#: ../satellite_tools/satsync.py:2491
msgid "  15 - SQL error during xml processing"
msgstr ""

#: ../satellite_tools/satsync.py:2492
msgid "  16 - server.mount_point not set in the configuration file"
msgstr ""

#: ../satellite_tools/satsync.py:2493
msgid ""
"  17 - SQL error during retrieving the channels already imported in the SUSE "
"Manager database"
msgstr ""

#: ../satellite_tools/satsync.py:2494
msgid "  18 - Wrong db connection string in rhn.conf"
msgstr ""

#: ../satellite_tools/satsync.py:2495
msgid "  19 - Bad arguments"
msgstr ""

#: ../satellite_tools/satsync.py:2496
msgid "  20 - Could not connect to db."
msgstr ""

#: ../satellite_tools/satsync.py:2497
msgid "  21 - Bad debug level"
msgstr ""

#: ../satellite_tools/satsync.py:2498
msgid "  22 - Not valid step"
msgstr ""

#: ../satellite_tools/satsync.py:2499
msgid "  24 - no such file"
msgstr ""

#: ../satellite_tools/satsync.py:2500
msgid "  25 - no such directory"
msgstr ""

#: ../satellite_tools/satsync.py:2501
msgid "  26 - mount_point does not exist"
msgstr ""

#: ../satellite_tools/satsync.py:2502
msgid "  27 - No such org"
msgstr ""

#: ../satellite_tools/satsync.py:2503
msgid "  28 - error: --master is only valid with --mount-point"
msgstr ""

#: ../satellite_tools/satsync.py:2510
#, python-format
msgid "ERROR: unknown dump version, try one of %s"
msgstr ""

#, fuzzy
#~ msgid "Red Hat Satellite Welcome Message"
#~ msgstr ""
#~ "Bine aÅ£i venit Ã®n programul de subscriere ÅŸi Ã®nregistrare pentru\n"
#~ "serviciul Red Hat Network.\n"
#~ "\n"
#~ "UrmeazÃ£ mesaj de completat Ã®n limba romÃ¢nÃ£."
  07070100000088000081B40000000000000000000000016290A0C10000C111000000000000000000000000000000000000001B00000000spacewalk-backend/po/ru.po    # SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
#
# Translators:
# Andrew Martynov <andrewm@inventa.ru>, 2004-2005.
# Leonid Kanter <leon@geon.donetsk.ua>, 2003.
# Miroslav SuchÃ½ <msuchy@redhat.com>, 2011.
# Vladimir Lazarenko <vlad@lazarenko.net>, 2004.
# Yulia Poyarkova <ypoyarko@redhat.com>, 2006.
# Yulia <ypoyarko@redhat.com>, 2006-2007,2010.
# Jiri Dostal <jdostal@redhat.com>, 2018. #zanata
msgid ""
msgstr ""
"Project-Id-Version: Spacewalk\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-10-16 13:34+0200\n"
"PO-Revision-Date: 2018-03-16 10:54+0000\n"
"Last-Translator: Copied by Zanata <copied-by-zanata@zanata.org>\n"
"Language-Team: Russian <trans-ru@lists.fedoraproject.org>\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: Zanata 4.6.2\n"

#: ../server/apacheAuth.py:66
#, python-format
msgid "incomplete proxy authentication token: %s"
msgstr ""

#: ../server/apacheAuth.py:84
#, python-format
msgid "Sent proxy signature %s does not match ours %s."
msgstr "ÐžÑ‚Ð¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð½Ð°Ñ Ð¿Ð¾Ð´Ð¿Ð¸ÑÑŒ Ð¿Ñ€Ð¾ÐºÑÐ¸-ÑÐµÑ€Ð²ÐµÑ€Ð° %s Ð½Ðµ ÑÐ¾Ð¾Ñ‚Ð²ÐµÑ‚ÑÑ‚Ð²ÑƒÐµÑ‚ %s."

#: ../server/apacheAuth.py:119
msgid "declined proxy authentication"
msgstr "Ð¾Ñ‚ÐºÐ°Ð·Ð°Ð½Ð¾ Ð² Ð°ÑƒÑ‚ÐµÐ½Ñ‚Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸Ð¸ Ð¿Ñ€Ð¾ÐºÑÐ¸"

#: ../server/apacheRequest.py:59
#, python-format
msgid "Invalid request received (%s)."
msgstr "ÐŸÐ¾Ð»ÑƒÑ‡ÐµÐ½ Ð½ÐµÐ´Ð¾Ð¿ÑƒÑÑ‚Ð¸Ð¼Ñ‹Ð¹ Ð·Ð°Ð¿Ñ€Ð¾Ñ (%s)."

#: ../server/apacheRequest.py:120
#, python-format
msgid ""
"IMPORTANT MESSAGE FOLLOWS:\n"
"%s"
msgstr ""
"Ð’ÐÐ–ÐÐž:\n"
"%s"

#: ../server/apacheRequest.py:149
#, python-format
msgid ""
"While running '%s': caught\n"
"%s : %s\n"
msgstr ""

#: ../server/apacheRequest.py:606
#, python-format
msgid "Invalid URI %s"
msgstr "ÐÐµÐ´Ð¾Ð¿ÑƒÑÑ‚Ð¸Ð¼Ñ‹Ð¹ URI %s"

#: ../server/configFilesHandler.py:129 ../server/handlers/app/packages.py:192
#: ../server/handlers/xmlrpc/registration.py:215
#: ../server/handlers/xmlrpc/registration.py:1168
#: ../server/handlers/xmlrpc/registration.py:1307
#, python-format
msgid ""
"\n"
"                   %s Account has been deactivated on this server.\n"
"                   Please contact your Org administrator for more help."
msgstr ""

#: ../server/handlers/applet/applet.py:78
#, python-brace-format
msgid "Your system was not found in the {PRODUCT_NAME} database"
msgstr ""

#: ../server/handlers/sat/auth.py:45
msgid "ISS is disabled on this server."
msgstr ""

#: ../server/handlers/sat/auth.py:50
#, python-format
msgid "Server \"%s\" is not enabled for ISS."
msgstr ""

#: ../server/handlers/xmlrpc/errata.py:64
#, python-format
msgid "Expected a package name, not: %s"
msgstr ""

#: ../server/handlers/xmlrpc/errata.py:115
#, python-format
msgid "Expected a package, not: %s"
msgstr ""

#: ../server/handlers/xmlrpc/proxy.py:65
#, python-format
msgid "SUSE Manager Proxy service not enabled for server profile: \"%s\""
msgstr ""

#: ../server/handlers/xmlrpc/proxy.py:85
msgid "Invalid session key"
msgstr ""

#: ../server/handlers/xmlrpc/proxy.py:93
msgid "This server ID no longer exists"
msgstr ""

#: ../server/handlers/xmlrpc/queue.py:433
#, python-format
msgid "Invalid action value type %s (%s)"
msgstr ""

#: ../server/handlers/xmlrpc/queue.py:464
#, python-format
msgid "Action %s does not belong to server %s"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:194
msgid "Required data missing"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:198
msgid "Required members missing"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:207
msgid "Attempt to register a system to an invalid username"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:839
msgid "Invalid system release version requested"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1063
msgid ""
"Unable to find a valid network interface, both ipaddr and ip6addr not found."
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1115
#, python-brace-format
msgid "{PRODUCT_NAME} Welcome Message"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1125
msgid "Privacy Statement"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1146
msgid "Expected a dictionary as a product argument"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1374
#, python-format
msgid "Invalid value '%s' for %s (%s)"
msgstr ""

#: ../server/handlers/xmlrpc/scap.py:104
msgid "Invalid system_id/action_id pair."
msgstr ""

#: ../server/handlers/xmlrpc/up2date.py:233
#, python-format
msgid "Invalid value %s (%s)"
msgstr ""

#: ../server/importlib/userAuth.py:98
msgid "You are not authorized to manage packages in the null org"
msgstr ""

#: ../server/importlib/userAuth.py:103
#, python-format
msgid "You are not allowed to manage packages in the %s org"
msgstr ""

#: ../server/importlib/userAuth.py:121
msgid "You are not allowed to perform administrative tasks"
msgstr ""

#: ../server/importlib/userAuth.py:144
#, python-format
msgid ""
"You are not allowed to manage channel %s, or that channel does not exist"
msgstr ""

#: ../server/importlib/userAuth.py:204
#, python-format
msgid ""
"\n"
"               %s Account has been deactivated on this server.\n"
"               Please contact your Org administrator for more help."
msgstr ""

#: ../server/rhnChannel.py:1992
#, python-format
msgid ""
"Your account does not have access to any channels matching "
"(release='%(release)s', arch='%(arch)s')%(www_activation)s"
msgstr ""

#: ../server/rhnChannel.py:2002
msgid ""
"\n"
"If you have a registration number, please register with it first at http://"
"www.redhat.com/apps/activate/ and then try again.\n"
"\n"
msgstr ""

#: ../server/rhnChannel.py:2012
#, python-format
msgid "Insufficient subscription permissions for release (%s, %s"
msgstr "ÐÐµÐ´Ð¾ÑÑ‚Ð°Ñ‚Ð¾Ñ‡Ð½Ñ‹Ðµ Ñ€Ð°Ð·Ñ€ÐµÑˆÐµÐ½Ð¸Ñ Ð¿Ð¾Ð´Ð¿Ð¸ÑÐºÐ¸ (%s, %s"

#. Various messages that can be reused
#.
#. bretm 02/07/2007 -- when we have better old-client documentation, probably
#. will be safe to get rid of all this crap
#: ../server/rhnChannel.py:2276 ../server/rhnChannel.py:2287
#: ../server/rhnChannel.py:2302
msgid "System Registered but Inactive"
msgstr "Ð¡Ð¸ÑÑ‚ÐµÐ¼Ð° Ð·Ð°Ñ€ÐµÐ³Ð¸ÑÑ‚Ñ€Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð°, Ð½Ð¾ Ð½ÐµÐ°ÐºÑ‚Ð¸Ð²Ð½Ð°"

#: ../server/rhnChannel.py:2277
#, python-format
msgid ""
"\n"
"Invalid Architecture and OS release combination (%s, %s).\n"
"Your system has been registered, but will not receive updates\n"
"because it is not subscribed to a channel. If you have not yet\n"
"activated your product for service, please visit our website at:\n"
"\n"
"     http://www.redhat.com/apps/activate/\n"
"\n"
"...to activate your product."
msgstr ""

#: ../server/rhnChannel.py:2288
#, python-format
msgid ""
"\n"
"Invalid Architecture and OS release combination (%s, %s).\n"
"Your system has been registered, but will not receive updates\n"
"because it could not be subscribed to a base channel.\n"
"Please contact your organization administrator for assistance.\n"
msgstr ""

#: ../server/rhnChannel.py:2295
#, python-format
msgid ""
"\n"
"  This system has been successfully registered, but is not yet entitled\n"
"  to service.  To entitle this system to service, login to the web site at:\n"
"\n"
"  %(entitlement_url)s\n"
msgstr ""

#: ../server/rhnChannel.py:2303
#, python-format
msgid ""
"\n"
"  This system has been successfully registered, but no service entitlements\n"
"  were available.  To entitle this system to service, login to the web site "
"at:\n"
"\n"
"  %(entitlement_url)s\n"
msgstr ""

#: ../server/rhnHandler.py:62
msgid "Please run rhn_register as root on this client"
msgstr ""

#: ../server/rhnHandler.py:75
#, python-format
msgid "Service not enabled for system profile: \"%s\""
msgstr ""

#: ../server/rhnPackage.py:49 ../server/rhnPackage.py:87
#: ../server/rhnPackage.py:107 ../server/rhnPackage.py:158
#, python-format
msgid "Invalid RPM package %s requested"
msgstr ""

#: ../server/rhnPackage.py:112
msgid "Package not found"
msgstr "ÐŸÐ°ÐºÐµÑ‚ Ð½Ðµ Ð½Ð°Ð¹Ð´ÐµÐ½"

#: ../server/rhnServer/server_class.py:97
#, python-format
msgid "Architecture `%s' is not supported"
msgstr "ÐÑ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð° Â«%sÂ» Ð½Ðµ Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÑ‚ÑÑ"

#: ../server/rhnServer/server_token.py:78
#, python-format
msgid "Token `%s' has more than one base channel assigned"
msgstr ""

#: ../server/rhnServer/server_token.py:80
msgid "Conflicting base channels"
msgstr "ÐšÐ¾Ð½Ñ„Ð»Ð¸ÐºÑ‚ Ð¾ÑÐ½Ð¾Ð²Ð½Ñ‹Ñ… ÐºÐ°Ð½Ð°Ð»Ð¾Ð²"

#: ../server/rhnServer/server_token.py:190
#, python-format
msgid "Failed to add server to group %s"
msgstr "ÐÐµ ÑƒÐ´Ð°Ð»Ð¾ÑÑŒ Ð´Ð¾Ð±Ð°Ð²Ð¸Ñ‚ÑŒ ÑÐµÑ€Ð²ÐµÑ€ Ð² Ð³Ñ€ÑƒÐ¿Ð¿Ñƒ %s"

#: ../server/rhnServer/server_token.py:503
#, python-format
msgid "Maximum usage count of %s reached"
msgstr ""

#: ../server/rhnServer/server_token.py:744
msgid ""
"Stacking of re-registration tokens with different base entitlements is not "
"supported"
msgstr ""

#: ../server/rhnServer/server_token.py:811
#, python-format
msgid "Could not find token '%s'"
msgstr "Ð¢Ð¾ÐºÐµÐ½ Â«%sÂ» Ð½Ðµ Ð½Ð°Ð¹Ð´ÐµÐ½"

#. Cannot use activation keys from different orgs
#: ../server/rhnServer/server_token.py:843
msgid "Tokens from mismatching orgs"
msgstr ""

#. Two tokens with different kickstart sessions
#: ../server/rhnServer/server_token.py:853
msgid "Kickstart session mismatch"
msgstr "ÐÐµÑÐ¾Ð¾Ñ‚Ð²ÐµÑ‚ÑÑ‚Ð²Ð¸Ðµ ÑÐµÐ°Ð½ÑÐ° ÐºÐ¸ÐºÑÑ‚Ð°Ñ€Ñ‚Ð°"

#: ../server/rhnServer/server_token.py:877
msgid "Stacking of re-registration tokens is not supported"
msgstr ""

#: ../server/rhnUser.py:289 ../server/rhnUser.py:292
msgid "Invalid username/password combination"
msgstr "ÐÐµÐ²ÐµÑ€Ð½Ð°Ñ ÐºÐ¾Ð¼Ð±Ð¸Ð½Ð°Ñ†Ð¸Ñ Ð¸Ð¼ÐµÐ½Ð¸ Ð¸ Ð¿Ð°Ñ€Ð¾Ð»Ñ"

#. nope, not reserved either
#: ../server/rhnUser.py:467
#, python-format
msgid "Username `%s' has not been reserved"
msgstr ""

#. New accounts have to specify an e-mail address
#: ../server/rhnUser.py:473
msgid "E-mail address not specified"
msgstr "ÐÐµ ÑƒÐºÐ°Ð·Ð°Ð½ ÑÐ»ÐµÐºÑ‚Ñ€Ð¾Ð½Ð½Ñ‹Ð¹ Ð°Ð´Ñ€ÐµÑ"

#: ../server/rhnUser.py:509
#, python-format
msgid "username should be at least %d characters"
msgstr "Ð¸Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð´Ð¾Ð»Ð¶Ð½Ð¾ ÑÐ¾Ð´ÐµÑ€Ð¶Ð°Ñ‚ÑŒ Ð½Ðµ Ð¼ÐµÐ½ÑŒÑˆÐµ %d ÑÐ¸Ð¼Ð²Ð¾Ð»Ð¾Ð²"

#: ../server/rhnUser.py:512
#, python-format
msgid "username should be less than %d characters"
msgstr "Ð¸Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð´Ð¾Ð»Ð¶Ð½Ð¾ ÑÐ¾Ð´ÐµÑ€Ð¶Ð°Ñ‚ÑŒ Ð½Ðµ Ð±Ð¾Ð»ÑŒÑˆÐµ %d ÑÐ¸Ð¼Ð²Ð¾Ð»Ð¾Ð²"

#: ../server/rhnUser.py:523
#, python-format
msgid "username = `%s', invalid character `%s'"
msgstr "Ð¸Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ &mdash; Â«%sÂ», Ð½ÐµÐ´Ð¾Ð¿ÑƒÑÑ‚Ð¸Ð¼Ñ‹Ð¹ ÑÐ¸Ð¼Ð²Ð¾Ð» &mdash; Â«%sÂ»"

#: ../server/rhnUser.py:542
#, python-format
msgid "Please limit your e-mail address to %s chars"
msgstr ""

#: ../server/rhnUser.py:623
#, python-format
msgid "password must be at least %d characters"
msgstr "Ð¿Ð°Ñ€Ð¾Ð»ÑŒ Ð´Ð¾Ð»Ð¶ÐµÐ½ ÑÐ¾Ð´ÐµÑ€Ð¶Ð°Ñ‚ÑŒ Ð½Ðµ Ð¼ÐµÐ½ÑŒÑˆÐµ %d ÑÐ¸Ð¼Ð²Ð¾Ð»Ð¾Ð²"

#: ../server/rhnUser.py:626
#, python-format
msgid "Password must be shorter than %d characters"
msgstr "Ð¿Ð°Ñ€Ð¾Ð»ÑŒ Ð´Ð¾Ð»Ð¶ÐµÐ½ ÑÐ¾Ð´ÐµÑ€Ð¶Ð°Ñ‚ÑŒ Ð½Ðµ Ð±Ð¾Ð»ÑŒÑˆÐµ %d ÑÐ¸Ð¼Ð²Ð¾Ð»Ð¾Ð²"

#: ../server/rhnUser.py:644
#, python-format
msgid "password contains character `%s'"
msgstr "Ð¿Ð°Ñ€Ð¾Ð»ÑŒ ÑÐ¾Ð´ÐµÑ€Ð¶Ð¸Ñ‚ ÑÐ¸Ð¼Ð²Ð¾Ð» Â«%sÂ»"

#: ../server/rhnUser.py:651
#, python-format
msgid "username should be at least %d characters long"
msgstr "Ð¸Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð´Ð¾Ð»Ð¶Ð½Ð¾ ÑÐ¾Ð´ÐµÑ€Ð¶Ð°Ñ‚ÑŒ Ð½Ðµ Ð¼ÐµÐ½ÑŒÑˆÐµ %d ÑÐ¸Ð¼Ð²Ð¾Ð»Ð¾Ð²"

#: ../server/rhnUser.py:662
#, python-format
msgid "Cannot register usernames ending with %s"
msgstr "ÐÐµ ÑƒÐ´Ð°Ð»Ð¾ÑÑŒ Ð·Ð°Ñ€ÐµÐ³Ð¸ÑÑ‚Ñ€Ð¸Ñ€Ð¾Ð²Ð°Ñ‚ÑŒ Ð¸Ð¼ÐµÐ½Ð°, Ð·Ð°ÐºÐ°Ð½Ñ‡Ð¸Ð²Ð°ÑŽÑ‰Ð¸ÐµÑÑ Ð½Ð° %s"

#. 0-999: Red Hat client/client-like interaction errors:
#: ../common/rhnException.py:53
msgid "This does not appear to be a valid username."
msgstr ""

#: ../common/rhnException.py:54
msgid "Invalid username and password combination."
msgstr ""

#: ../common/rhnException.py:55
msgid "This login is already taken, or the password is incorrect."
msgstr ""

#: ../common/rhnException.py:56
msgid "Permission denied."
msgstr ""

#: ../common/rhnException.py:57
msgid "Object not found."
msgstr ""

#: ../common/rhnException.py:58
msgid "Invalid System Digital ID."
msgstr ""

#: ../common/rhnException.py:59
msgid "Invalid System Credentials."
msgstr ""

#: ../common/rhnException.py:60
msgid "Could not retrieve user data from database."
msgstr ""

#: ../common/rhnException.py:61
msgid "Valid username required."
msgstr ""

#: ../common/rhnException.py:62
msgid "Valid password required."
msgstr ""

#: ../common/rhnException.py:63
msgid "Minimum username length violation."
msgstr ""

#: ../common/rhnException.py:64
msgid "Minimum password length violation."
msgstr ""

#: ../common/rhnException.py:65
msgid "The username contains invalid characters."
msgstr ""

#: ../common/rhnException.py:66
msgid "File not found."
msgstr ""

#: ../common/rhnException.py:67
msgid "Architecture and OS version combination is not supported."
msgstr ""

#: ../common/rhnException.py:68
msgid "Could not retrieve system data from database."
msgstr ""

#: ../common/rhnException.py:69
msgid "Invalid arguments passed to function."
msgstr ""

#: ../common/rhnException.py:70
msgid "Unable to retrieve requested entry."
msgstr ""

#: ../common/rhnException.py:71
msgid "Could not update database entry."
msgstr ""

#: ../common/rhnException.py:72
msgid "Unsupported server architecture."
msgstr ""

#: ../common/rhnException.py:73
#, python-format
msgid ""
"\n"
"     The anonymous server functionality is no longer available.\n"
"\n"
"     Please re-register this system by running mgr_register as root.\n"
"     Please visit https://%(hostname)s/rhn/systems/SystemEntitlements.do\n"
"     or login at https://%(hostname)s, and from the \"Overview\" tab,\n"
"     select \"Subscription Management\" to enable the service for this "
"system.\n"
"     "
msgstr ""

#: ../common/rhnException.py:81
msgid "Record not available in the database."
msgstr ""

#: ../common/rhnException.py:82
msgid "Invalid value for entry."
msgstr ""

#: ../common/rhnException.py:83
#, python-format
msgid ""
"\n"
"     This system does not have a valid entitlement for SUSE Manager.\n"
"     Please visit https://%(hostname)s/rhn/systems/SystemEntitlements.do\n"
"     or login at https://%(hostname)s, and from the \"Overview\" tab,\n"
"     select \"Subscription Management\" to enable the service for this "
"system.\n"
"     "
msgstr ""

#: ../common/rhnException.py:89
msgid "Channel error"
msgstr ""

#: ../common/rhnException.py:90
msgid "Client session token is invalid."
msgstr ""

#: ../common/rhnException.py:91
msgid "Client session token has expired."
msgstr ""

#: ../common/rhnException.py:92
msgid "You are not authorized to retrieve the requested object."
msgstr ""

#: ../common/rhnException.py:93
msgid "Invalid action"
msgstr ""

#: ../common/rhnException.py:94
msgid "You are not allowed to perform administrative tasks on this system."
msgstr ""

#: ../common/rhnException.py:96
msgid "The system is already subscribed to the specified channel."
msgstr ""

#: ../common/rhnException.py:97
msgid "The system is not currently subscribed to the specified channel."
msgstr ""

#: ../common/rhnException.py:98
msgid "The specified channel does not exist."
msgstr ""

#: ../common/rhnException.py:99
msgid "Invalid channel version."
msgstr ""

#: ../common/rhnException.py:100
msgid ""
"\n"
"     User group membership limits exceeded.\n"
"\n"
"     The current settings for your account do not allow you to add another\n"
"     user account. Please check with the organization administrator for "
"your\n"
"     account if the maximum number of users allowed to subscribe to server "
"needs\n"
"     to be changed.\n"
"     "
msgstr ""

#: ../common/rhnException.py:108
msgid ""
"\n"
"     System group membership limits exceeded.\n"
"\n"
"     The current settings for your account do not allow you to add another\n"
"     system profile. Please check with the organization administrator for "
"your\n"
"     account for modifying the maximum number of system profiles that can "
"be\n"
"     subscribed to your account.\n"
"     "
msgstr ""

#: ../common/rhnException.py:116
msgid ""
"\n"
"     Invalid architecture.\n"
"\n"
"     The architecture of the package is not supported by\n"
"     "
msgstr ""

#: ../common/rhnException.py:121
msgid "Invalid RPM header"
msgstr ""

#: ../common/rhnException.py:122
msgid ""
"\n"
"    This system is already registered as a Salt Minion. If you want to "
"register it as a traditional client\n"
"    please delete it first via the web UI or API and then register it using "
"the traditional tools.\n"
"    "
msgstr ""

#. For the uploading tools
#: ../common/rhnException.py:127
msgid "Invalid information uploaded to the server"
msgstr ""

#: ../common/rhnException.py:128
msgid "Error uploading network interfaces configuration."
msgstr ""

#: ../common/rhnException.py:129
msgid ""
"\n"
"     Package Upload Failed due to uniqueness constraint violation.\n"
"     Make sure the package does not have any duplicate dependencies or\n"
"     does not already exists on the server\n"
"     "
msgstr ""

#: ../common/rhnException.py:134
msgid ""
"\n"
"     The --force rhnpush option is disabled on this server.\n"
"     Please contact your SUSE Manager administrator for more help.\n"
"     "
msgstr ""

#. 60-70: token errors
#: ../common/rhnException.py:140
msgid ""
"\n"
"     The activation token specified could not be found on the server.\n"
"     Please retry with a valid key.\n"
"     "
msgstr ""

#: ../common/rhnException.py:144
msgid "Too many systems registered using this registration token"
msgstr ""

#: ../common/rhnException.py:145
msgid "Token contains invalid, obsoleted or insufficient settings"
msgstr ""

#: ../common/rhnException.py:146
msgid "Conflicting activation tokens"
msgstr ""

#. 70-80: channel subscription errors
#: ../common/rhnException.py:149
msgid ""
"\n"
"     No matching base channel found for your system.\n"
"     "
msgstr ""

#: ../common/rhnException.py:152
msgid ""
"\n"
"     You do not have subscription permission to the designated channel.\n"
"     Please refer to your organization's channel or organization\n"
"     administrators for further details.\n"
"     "
msgstr ""

#: ../common/rhnException.py:157
msgid "You can not unsubscribe from base channel."
msgstr ""

#: ../common/rhnException.py:158
msgid "SUSE Manager or Proxy channel can not be subscribed."
msgstr ""

#. 80-90: server group errors
#: ../common/rhnException.py:161
msgid "There was an error while trying to join the system to its groups"
msgstr ""

#. 90-100: entitlement errors
#: ../common/rhnException.py:164
msgid "Unable to entitle system"
msgstr ""

#. 100-109: e-mail and uuid related faults
#: ../common/rhnException.py:167
msgid "Maximum e-mail length violation."
msgstr ""

#: ../common/rhnException.py:168
msgid "This system has been previously registered."
msgstr ""

#: ../common/rhnException.py:169
msgid "Invalid username"
msgstr ""

#. 140-159 applet errors
#: ../common/rhnException.py:172
msgid "Unable to look up server"
msgstr ""

#. 160-179: OSAD errors
#: ../common/rhnException.py:175
msgid "Required argument is missing"
msgstr ""

#. 600-699: RHEL5+ EN errors
#: ../common/rhnException.py:178
msgid "No entitlement information tied to hardware"
msgstr ""

#: ../common/rhnException.py:179
msgid "Installation number is not entitling"
msgstr ""

#. 700-799: Additional user input verification errors.
#: ../common/rhnException.py:182
msgid "Maximum username length violation"
msgstr ""

#: ../common/rhnException.py:183
msgid "Maximum password length violation"
msgstr ""

#: ../common/rhnException.py:184
msgid "This user has read only API access. Action denied."
msgstr ""

#: ../common/rhnException.py:186
#, fuzzy
msgid "System Name cannot be less than 1 character"
msgstr "Ð¸Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð´Ð¾Ð»Ð¶Ð½Ð¾ ÑÐ¾Ð´ÐµÑ€Ð¶Ð°Ñ‚ÑŒ Ð½Ðµ Ð±Ð¾Ð»ÑŒÑˆÐµ %d ÑÐ¸Ð¼Ð²Ð¾Ð»Ð¾Ð²"

#. 1000-1999: Proxy specific errors:
#. issued by a Proxy to the client
#: ../common/rhnException.py:190
msgid "SUSE Manager Proxy error."
msgstr ""

#: ../common/rhnException.py:191
msgid "SUSE Manager Proxy unable to login."
msgstr ""

#. issued by a SUSE Manager Server/Satellite to the proxy
#: ../common/rhnException.py:193
msgid ""
"\n"
"     SUSE Manager Proxy system ID does not match a Spacewalk Proxy Server\n"
"     in the database.\n"
"     "
msgstr ""

#: ../common/rhnException.py:197
msgid "SUSE Manager Proxy session token is invalid."
msgstr ""

#: ../common/rhnException.py:198
msgid "SUSE Manager Proxy session token has expired."
msgstr ""

#. 2000-2999: Red Hat Satellite specific errors:
#: ../common/rhnException.py:202
msgid ""
"\n"
"      user creation is not allowed via mgr_register;\n"
"     please contact your sysadmin to have your account created.\n"
"     "
msgstr ""

#: ../common/rhnException.py:206
msgid ""
"\n"
"     This SUSE Manager server is not allowed to use Inter Server Sync on "
"this server\n"
"     "
msgstr ""

#: ../common/rhnException.py:209
msgid ""
"\n"
"     Inter Server Sync is disabled on this SUSE Manager Server.\n"
"     "
msgstr ""

#. 3000-3999: XML dumper errors:
#: ../common/rhnException.py:214
msgid "Invalid datatype passed"
msgstr ""

#: ../common/rhnException.py:215
msgid "Unable to retrieve channel"
msgstr ""

#: ../common/rhnException.py:216
msgid "Unable to retrieve package"
msgstr ""

#: ../common/rhnException.py:217
msgid "Unable to retrieve erratum"
msgstr ""

#: ../common/rhnException.py:218
msgid "File is missing"
msgstr ""

#: ../common/rhnException.py:219
msgid "Function retrieval error"
msgstr ""

#: ../common/rhnException.py:220
msgid "Function execution error"
msgstr ""

#: ../common/rhnException.py:221
msgid "Missing version string"
msgstr ""

#: ../common/rhnException.py:222
msgid "Invalid version string"
msgstr ""

#: ../common/rhnException.py:223
msgid "Mismatching versions"
msgstr ""

#: ../common/rhnException.py:224
msgid "Invalid channel version"
msgstr ""

#: ../common/rhnException.py:225
msgid "No comps file for channel"
msgstr ""

#: ../common/rhnException.py:226
msgid "Unable to retrieve comps file"
msgstr ""

#. 4000 - 4999: config management errors
#: ../common/rhnException.py:229
msgid "Configuration action missing"
msgstr ""

#: ../common/rhnException.py:230
msgid "File too large"
msgstr ""

#: ../common/rhnException.py:231
msgid "File contains binary data"
msgstr "Ð¤Ð°Ð¹Ð» ÑÐ¾Ð´ÐµÑ€Ð¶Ð¸Ñ‚ Ð´Ð²Ð¾Ð¸Ñ‡Ð½Ñ‹Ðµ Ð´Ð°Ð½Ð½Ñ‹Ðµ"

#: ../common/rhnException.py:232
msgid "Configuration channel is not empty"
msgstr "ÐÐµÐ¿ÑƒÑÑ‚Ð¾Ð¹ ÐºÐ°Ð½Ð°Ð» ÐºÐ¾Ð½Ñ„Ð¸Ð³ÑƒÑ€Ð°Ñ†Ð¸Ð¸"

#: ../common/rhnException.py:233
msgid "Permission error"
msgstr "ÐžÑˆÐ¸Ð±ÐºÐ° Ñ€Ð°Ð·Ñ€ÐµÑˆÐµÐ½Ð¸Ð¹"

#: ../common/rhnException.py:234
msgid "Content missing for configuration file"
msgstr ""

#: ../common/rhnException.py:235
msgid "Template delimiters not specified"
msgstr ""

#: ../common/rhnException.py:236
msgid "Configuration channel does not exist"
msgstr "ÐšÐ°Ð½Ð°Ð» ÐºÐ¾Ð½Ñ„Ð¸Ð³ÑƒÑ€Ð°Ñ†Ð¸Ð¸ Ð½Ðµ ÑÑƒÑ‰ÐµÑÑ‚Ð²ÑƒÐµÑ‚"

#: ../common/rhnException.py:237
msgid "Configuration channel already exists"
msgstr "ÐšÐ°Ð½Ð°Ð» ÐºÐ¾Ð½Ñ„Ð¸Ð³ÑƒÑ€Ð°Ñ†Ð¸Ð¸ ÑƒÐ¶Ðµ ÑÑƒÑ‰ÐµÑÑ‚Ð²ÑƒÐµÑ‚"

#: ../common/rhnException.py:238
msgid "File missing from configuration channel"
msgstr ""

#: ../common/rhnException.py:239
msgid "Different revision of this file is uploaded"
msgstr ""

#: ../common/rhnException.py:240
msgid "File already uploaded to configuration channel"
msgstr ""

#: ../common/rhnException.py:241
msgid "File size exceeds remaining quota space"
msgstr ""

#: ../common/rhnException.py:242
msgid "Full path of file must be specified"
msgstr "ÐÐµÐ¾Ð±Ñ…Ð¾Ð´Ð¸Ð¼Ð¾ ÑƒÐºÐ°Ð·Ð°Ñ‚ÑŒ Ð°Ð±ÑÐ¾Ð»ÑŽÑ‚Ð½Ñ‹Ð¹ Ð¿ÑƒÑ‚ÑŒ Ðº Ñ„Ð°Ð¹Ð»Ñƒ"

#: ../common/rhnException.py:243
msgid "Invalid revision number"
msgstr ""

#: ../common/rhnException.py:244
msgid "Cannot compare files of different file type"
msgstr ""

#. 5000 - 5999: client content uploading errors
#. 5000 - 5099: crash reporting errors
#: ../common/rhnException.py:248
msgid "Crash information is invalid or incomplete"
msgstr ""

#: ../common/rhnException.py:249
msgid "Crash file information is invalid or incomplete"
msgstr ""

#: ../common/rhnException.py:250
msgid "Error composing crash directory path"
msgstr ""

#: ../common/rhnException.py:251
msgid "Error composing crash file path"
msgstr ""

#: ../common/rhnException.py:252 ../common/rhnException.py:259
msgid "Invalid content encoding"
msgstr ""

#: ../common/rhnException.py:253
#, fuzzy
msgid "Invalid crash name"
msgstr "ÐÐµÐ´Ð¾Ð¿ÑƒÑÑ‚Ð¸Ð¼Ð°Ñ Ñ€Ð¾Ð»ÑŒ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ"

#: ../common/rhnException.py:254
msgid "Crash reporting is disabled for this organization"
msgstr ""

#. 5100 - 5199: scap results reporting error
#: ../common/rhnException.py:256
msgid "SCAP results file transfer is invalid or incomplete"
msgstr ""

#: ../common/rhnException.py:257
msgid "Error composing directory path for detailed SCAP results"
msgstr ""

#: ../common/rhnException.py:258
msgid "Error composing file path for detailed SCAP results"
msgstr ""

#: ../common/rhnException.py:306
msgid ""
"\n"
"     An error has occurred while processing your request. If this problem\n"
"     persists please enter a bug report at scc.suse.com.\n"
"     If you choose to submit the bug report, please be sure to include\n"
"     details of what you were trying to do when this error occurred and\n"
"     details on how to reproduce this problem.\n"
msgstr ""

#: ../common/rhnException.py:358
#, python-format
msgid ""
"Error Message:\n"
"    %s\n"
msgstr ""
"Ð¡Ð¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ðµ:\n"
"    %s\n"

#: ../common/rhnException.py:360
#, python-format
msgid "Error Class Code: %s\n"
msgstr ""

#: ../common/rhnException.py:363
#, python-format
msgid "Error Class Info: %s\n"
msgstr ""

#: ../common/rhnException.py:365
#, python-format
msgid "Explanation: %s"
msgstr ""

#: ../common/rhnTB.py:205
#, python-format
msgid "ERROR: %s %s: %s"
msgstr ""

#: ../common/rhnTB.py:207
#, python-format
msgid "TRACEBACK: %s"
msgstr ""

#: ../satellite_tools/disk_dumper/iss.py:1294
#: ../satellite_tools/disk_dumper/iss.py:1298
#, python-format
msgid "format of %s should be at least YYYYMMDD.\n"
msgstr ""

#: ../satellite_tools/messages.py:26
#, python-format
msgid ""
"\n"
"ERROR: executing step %s. Error is:\n"
"%s\n"
msgstr ""

#: ../satellite_tools/messages.py:31
#, python-format
msgid ""
"\n"
"ERROR: there was a problem accessing the channel data from your temporary\n"
"       repository. Did you migrate all of the data from the channel ISOs\n"
"       do this directory? If so, please recheck the channels ISOs, ensure\n"
"       that you have them all, and then iteratively remount and repopulate\n"
"       the temporary repository (%s).\n"
msgstr ""

#: ../satellite_tools/messages.py:39
#, python-format
msgid ""
"\n"
"ERROR: there was a problem synchronizing the information.\n"
"       Error message: %s\n"
msgstr ""

#: ../satellite_tools/messages.py:44
#, python-format
msgid ""
"\n"
"ERROR: There was a problem communicating with the ISS Master.\n"
"       Depending on the specific error details, please review your "
"configuration,\n"
"       basic network connectivity, and/or name resolution, and try again.\n"
"       Error message: %s\n"
msgstr ""

#: ../satellite_tools/messages.py:51
#, python-format
msgid ""
"\n"
"ERROR: There was a problem communicating with the ISS Master.\n"
"       If the master satellite is older than v5.3, it does not have ISS "
"capability.\n"
"       Otherwise, depending on the specific error details, please review "
"your\n"
"       configuration, basic network connectivity, and/or name resolution, "
"and try again.\n"
"       Error message: %s\n"
msgstr ""

#: ../satellite_tools/messages.py:59
#, python-format
msgid ""
"\n"
"ERROR: a child-channel cannot be synced without its parent being synced as\n"
"       well. A parent needs to be either (a) previously synced or (b) "
"synced\n"
"       in tandem with the desired child-channel. Missing parents for this\n"
"       transaction:\n"
"       %s\n"
msgstr ""

#: ../satellite_tools/messages.py:67
#, python-format
msgid ""
"\n"
"ERROR: you are not entitled to sync a channel in this set of channels.\n"
"Please contact your SUSE Manager contact\n"
"%s"
msgstr ""

#: ../satellite_tools/messages.py:72
#, python-format
msgid "  ERROR: not enough free space (%s KB) on device."
msgstr ""

#: ../satellite_tools/messages.py:74
#, python-format
msgid "    %3d/%s Fetch successful: %s (%s bytes)"
msgstr ""

#: ../satellite_tools/messages.py:75
#, python-format
msgid "    Extinct package:  %s"
msgstr ""

#: ../satellite_tools/messages.py:76
#, python-format
msgid "   Total size: %s"
msgstr ""

#: ../satellite_tools/messages.py:77
#, python-format
msgid "      Downloaded %s of %s. Estimated remaining time: %s"
msgstr ""

#: ../satellite_tools/messages.py:78
#, python-format
msgid "    Fetch unsuccessful: %s"
msgstr ""

#: ../satellite_tools/messages.py:79
#, python-format
msgid "   RPM fetch summary: %s"
msgstr ""

#: ../satellite_tools/messages.py:80
#, python-format
msgid "       success: %d"
msgstr ""

#: ../satellite_tools/messages.py:81
#, python-format
msgid "       failed:  %d"
msgstr ""

#: ../satellite_tools/messages.py:82
#, python-format
msgid "       extinct: %d"
msgstr ""

#: ../satellite_tools/messages.py:84
#, python-format
msgid "   Retrieving / parsing *relevant* package metadata: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:85
#, python-format
msgid "   Retrieving / parsing errata data: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:86
#, python-format
msgid "   Retrieving / parsing kickstart data: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:87
#, python-format
msgid "   Retrieving / parsing kickstart tree files: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:88
#, python-format
msgid "   Importing *relevant* package metadata: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:89
msgid "   * WARNING: this may be a slow process."
msgstr ""

#: ../satellite_tools/messages.py:90
#, fuzzy
msgid "Linking packages to channels"
msgstr "ÐšÐ¾Ð½Ñ„Ð»Ð¸ÐºÑ‚ Ð¾ÑÐ½Ð¾Ð²Ð½Ñ‹Ñ… ÐºÐ°Ð½Ð°Ð»Ð¾Ð²"

#: ../satellite_tools/messages.py:91
#, python-format
msgid "   Importing *relevant* errata: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:92
msgid "   No new kickstartable tree to import"
msgstr ""

#: ../satellite_tools/messages.py:93
#, python-format
msgid "Importing kickstartable trees (%d)"
msgstr ""

#: ../satellite_tools/messages.py:94
#, python-format
msgid "Imported kickstartable trees (%d)"
msgstr ""

#: ../satellite_tools/reposync.py:111 ../satellite_tools/satsync.py:439
msgid "+++ sending log as an email +++"
msgstr ""

#: ../satellite_tools/reposync.py:114
#, python-format
msgid "%s sync. report from %s"
msgstr ""

#: ../satellite_tools/reposync.py:124 ../satellite_tools/satsync.py:449
msgid "+++ email requested, but there is nothing to send +++"
msgstr ""

#: ../satellite_tools/rhn_satellite_activate.py:198
#, python-format
msgid ""
"\"%s\" (specified in commandline)\n"
"could not be opened and read:\n"
"%s"
msgstr ""

#: ../satellite_tools/rhn_satellite_activate.py:205
#, python-format
msgid ""
"\"%s\" could not be opened\n"
"and/or written to:\n"
"%s"
msgstr ""

#: ../satellite_tools/satsync.py:258
#, python-format
msgid "No handler for step %s"
msgstr ""

#. Try one more time - this time it should be faster since
#. everything should be cached
#: ../satellite_tools/satsync.py:270
msgid "Environment changed, trying again..."
msgstr ""

#: ../satellite_tools/satsync.py:277
msgid "ERROR: Encountered IntegrityError: \n"
msgstr ""

#: ../satellite_tools/satsync.py:285
msgid "Repeated failures"
msgstr ""

#: ../satellite_tools/satsync.py:290
#, python-format
msgid ""
"    Import complete:\n"
"        Begin time: %s\n"
"        End time:   %s\n"
"        Elapsed:    %s\n"
"          "
msgstr ""

#: ../satellite_tools/satsync.py:311
msgid "hours"
msgstr ""

#: ../satellite_tools/satsync.py:311
msgid "minutes"
msgstr ""

#: ../satellite_tools/satsync.py:311
msgid "seconds"
msgstr ""

#: ../satellite_tools/satsync.py:357
msgid ""
"ERROR: The dump is missing package data, use --no-rpms to skip this step or "
"fix the content to include package data."
msgstr ""

#. the orgs() method doesn't exist; that's fine we just
#. won't sync the orgs
#: ../satellite_tools/satsync.py:404
msgid "The SUSE Manager master does not support syncing orgs data."
msgstr ""

#: ../satellite_tools/satsync.py:404
msgid "Skipping..."
msgstr ""

#: ../satellite_tools/satsync.py:442
#, python-format
msgid "SUSE Manager Inter Server sync. report from %s"
msgstr ""

#: ../satellite_tools/satsync.py:521
msgid " - file-system synchronization"
msgstr ""

#: ../satellite_tools/satsync.py:533 ../satellite_tools/satsync.py:541
msgid " - live synchronization"
msgstr ""

#: ../satellite_tools/satsync.py:534
#, python-brace-format
msgid ""
"ERROR: Live content synchronizing with RHN Classic Hosted is no longer "
"supported.\n"
"Please use the cdn-sync command instead unless you are attempting to sync "
"from another {PRODUCT_NAME} via Inter-Server-Sync (ISS), or from local "
"content on disk via Channel Dump ISOs."
msgstr ""

#: ../satellite_tools/satsync.py:542
#, python-format
msgid "   url: %s"
msgstr ""

#: ../satellite_tools/satsync.py:543
#, python-format
msgid "   debug/output level: %s"
msgstr ""

#: ../satellite_tools/satsync.py:553
msgid "ERROR: this server must be registered with SUSE Manager."
msgstr ""

#: ../satellite_tools/satsync.py:575
#, python-format
msgid "Retrieving / parsing %s data"
msgstr ""

#: ../satellite_tools/satsync.py:585 ../satellite_tools/satsync.py:600
msgid "*** SYSTEM INTERRUPT CALLED ***"
msgstr ""

#: ../satellite_tools/satsync.py:593
msgid "ERROR: fatal parser exception occurred "
msgstr ""

#: ../satellite_tools/satsync.py:594
#, python-format
msgid "(line: %s, col: %s msg: %s)"
msgstr ""

#: ../satellite_tools/satsync.py:598
#, python-format
msgid "ERROR: parser exception occurred: %s"
msgstr ""

#: ../satellite_tools/satsync.py:603
msgid "ERROR: exception (during parse) occurred: "
msgstr ""

#: ../satellite_tools/satsync.py:604
#, python-format
msgid ""
"   Encountered some errors with %s data (see logs (%s) for more information)"
msgstr ""

#: ../satellite_tools/satsync.py:606
#, python-format
msgid "   Encountered some errors with %s data:"
msgstr ""

#: ../satellite_tools/satsync.py:607
#, python-format
msgid "   ------- %s PARSE/IMPORT ERROR -------"
msgstr ""

#: ../satellite_tools/satsync.py:609
msgid "   ---------------------------------------"
msgstr ""

#: ../satellite_tools/satsync.py:612
#, python-format
msgid "%s data complete"
msgstr ""

#: ../satellite_tools/satsync.py:665
msgid "Retrieving / parsing channel data"
msgstr ""

#: ../satellite_tools/satsync.py:718
msgid "Channel data complete"
msgstr ""

#: ../satellite_tools/satsync.py:736
#, python-format
msgid "%10s import from %s"
msgstr ""

#: ../satellite_tools/satsync.py:739
#, python-format
msgid "%10s import from %s - %s"
msgstr ""

#: ../satellite_tools/satsync.py:743
#, python-format
msgid "%10s"
msgstr ""

#: ../satellite_tools/satsync.py:750
msgid "p"
msgstr ""

#: ../satellite_tools/satsync.py:752
msgid "."
msgstr ""

#: ../satellite_tools/satsync.py:758
msgid "   p = previously imported/synced channel"
msgstr ""

#: ../satellite_tools/satsync.py:759
msgid "   . = channel not yet imported/synced"
msgstr ""

#: ../satellite_tools/satsync.py:765
msgid "   e = channel no longer supported (end-of-service)"
msgstr ""

#: ../satellite_tools/satsync.py:767
msgid "   ? = channel label invalid --- typo?"
msgstr ""

#: ../satellite_tools/satsync.py:771
#, python-format
msgid "   %s:"
msgstr ""

#: ../satellite_tools/satsync.py:772
#, python-format
msgid "      %s %-40s %4s %s"
msgstr ""

#: ../satellite_tools/satsync.py:773
#, fuzzy
msgid "base-channels"
msgstr "ÐšÐ¾Ð½Ñ„Ð»Ð¸ÐºÑ‚ Ð¾ÑÐ½Ð¾Ð²Ð½Ñ‹Ñ… ÐºÐ°Ð½Ð°Ð»Ð¾Ð²"

#: ../satellite_tools/satsync.py:786 ../satellite_tools/satsync.py:1603
msgid "NONE RELEVANT"
msgstr ""

#: ../satellite_tools/satsync.py:808
msgid "end-of-service"
msgstr ""

#: ../satellite_tools/satsync.py:809
msgid "e"
msgstr ""

#: ../satellite_tools/satsync.py:815
msgid "   typos:"
msgstr ""

#: ../satellite_tools/satsync.py:816
msgid "?"
msgstr ""

#: ../satellite_tools/satsync.py:831
#, python-format
msgid "XXX: imported channels: %s"
msgstr ""

#: ../satellite_tools/satsync.py:832
#, python-format
msgid "XXX:   cached channels: %s"
msgstr ""

#: ../satellite_tools/satsync.py:837
msgid "XXX: list channels called"
msgstr ""

#: ../satellite_tools/satsync.py:855
msgid "ERROR: these channels either do not exist or are not available:"
msgstr ""

#: ../satellite_tools/satsync.py:859
#, python-format
msgid "       (to see a list of channel labels: %s --list-channels)"
msgstr ""

#: ../satellite_tools/satsync.py:904
#, python-format
msgid "   Retrieving / parsing short package metadata: %s (%s)"
msgstr ""

#: ../satellite_tools/satsync.py:965
#, python-format
msgid "Diffing package metadata (what's missing locally?): %s"
msgstr ""

#: ../satellite_tools/satsync.py:971 ../satellite_tools/satsync.py:1254
msgid "Diffing:    "
msgstr ""

#: ../satellite_tools/satsync.py:988
msgid "ERROR: incremental dump skipped"
msgstr ""

#: ../satellite_tools/satsync.py:1079
msgid "Downloading rpm packages"
msgstr ""

#: ../satellite_tools/satsync.py:1084
#, python-format
msgid "   Fetching any missing RPMs: %s (%s)"
msgstr ""

#: ../satellite_tools/satsync.py:1085 ../satellite_tools/satsync.py:1153
msgid "NONE MISSING"
msgstr ""

#: ../satellite_tools/satsync.py:1094
msgid "Processing rpm packages complete"
msgstr ""

#: ../satellite_tools/satsync.py:1121
msgid "Downloading package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1146
msgid "Downloading srpm packages"
msgstr ""

#: ../satellite_tools/satsync.py:1152
#, python-format
msgid "   Fetching any missing SRPMs: %s (%s)"
msgstr ""

#: ../satellite_tools/satsync.py:1249
#, python-format
msgid "Diffing source package metadata (what's missing locally?): %s"
msgstr ""

#: ../satellite_tools/satsync.py:1260
msgid "Downloading source package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1338 ../satellite_tools/satsync.py:2027
#, python-format
msgid "Unable to save file %s: %s"
msgstr ""

#. for
#. Retried a number of times and it still failed; log the
#. file as being failed and move on
#: ../satellite_tools/satsync.py:1345
#, python-format
msgid "Failed to fetch file %s"
msgstr ""

#: ../satellite_tools/satsync.py:1350
msgid "Downloading kickstartable trees metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1365
msgid "Downloading kickstartable trees files"
msgstr ""

#: ../satellite_tools/satsync.py:1504
#, python-format
msgid "Grabbing all patches for channel %s"
msgstr ""

#: ../satellite_tools/satsync.py:1554
msgid "Downloading patch data"
msgstr ""

#: ../satellite_tools/satsync.py:1556
msgid "Forcing download of all patch data for requested channels."
msgstr ""

#: ../satellite_tools/satsync.py:1571
msgid "Downloading patch data complete"
msgstr ""

#: ../satellite_tools/satsync.py:1576 ../satellite_tools/satsync.py:1597
msgid "Downloading:"
msgstr ""

#: ../satellite_tools/satsync.py:1579
msgid " - complete"
msgstr ""

#: ../satellite_tools/satsync.py:1624
msgid "Importing source package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1627
msgid "Importing package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1635
msgid "Importing:  "
msgstr ""

#. not in the cache
#: ../satellite_tools/satsync.py:1703
msgid ""
"Package Not Found in Cache, Clear the Cache "
"to                                  Regenerate it."
msgstr ""

#: ../satellite_tools/satsync.py:1709
msgid "Importing channel patches"
msgstr ""

#: ../satellite_tools/satsync.py:1714
#, python-format
msgid "Importing %s patches for channel %s."
msgstr ""

#. Incomplete configuration
#: ../satellite_tools/satsync.py:2113
msgid "ERROR: server.mount_point not set in the configuration file"
msgstr ""

#: ../satellite_tools/satsync.py:2117
#, python-format
msgid "ERROR: server.mount_point %s do not exist"
msgstr ""

#: ../satellite_tools/satsync.py:2122
#, python-format
msgid "ERROR: path under server.mount_point (%s)  do not exist"
msgstr ""

#: ../satellite_tools/satsync.py:2199
#, python-format
msgid "Commandline: %s"
msgstr ""

#: ../satellite_tools/satsync.py:2202
#, python-format
msgid ""
"DEBUG ONLY: max. batch-size for XML/database-import processing (1..%s).\"man "
"satellite-sync\" for more information."
msgstr ""

#: ../satellite_tools/satsync.py:2205
msgid "alternative SSL CA Cert (fullpath to cert file)"
msgstr ""

#: ../satellite_tools/satsync.py:2207
msgid "process data for this channel only"
msgstr ""

#: ../satellite_tools/satsync.py:2209
msgid ""
"disk dump will be considered to be a full export; see \"man satellite-sync\" "
"for more information."
msgstr ""

#: ../satellite_tools/satsync.py:2212
msgid "existing custom channels will also be synced (unless -c is used)"
msgstr ""

#: ../satellite_tools/satsync.py:2214
#, python-format
msgid ""
"override debug level set in /etc/rhn/rhn.conf (which is currently set at %s)."
msgstr ""

#: ../satellite_tools/satsync.py:2216
#, python-format
msgid "requested version of XML dump (default: %s)"
msgstr ""

#: ../satellite_tools/satsync.py:2218
msgid "e-mail a report of what was synced/imported"
msgstr ""

#: ../satellite_tools/satsync.py:2220
msgid "forcibly process all (not a diff of) patch metadata"
msgstr ""

#: ../satellite_tools/satsync.py:2222
msgid "Do not use an http proxy under any circumstances."
msgstr ""

#: ../satellite_tools/satsync.py:2224
msgid "alternative http proxy (hostname:port)"
msgstr ""

#: ../satellite_tools/satsync.py:2226
msgid "alternative http proxy username"
msgstr ""

#: ../satellite_tools/satsync.py:2228
msgid "alternative http proxy password"
msgstr ""

#: ../satellite_tools/satsync.py:2230
msgid "parent SUSE Manager to import content from"
msgstr ""

#: ../satellite_tools/satsync.py:2232
msgid "list all available channels and exit"
msgstr ""

#: ../satellite_tools/satsync.py:2234
msgid "help on all error codes mgr-inter-sync returns"
msgstr ""

#: ../satellite_tools/satsync.py:2236
msgid "source mount point for import - disk update only"
msgstr ""

#: ../satellite_tools/satsync.py:2238
msgid "do not process patch data"
msgstr ""

#: ../satellite_tools/satsync.py:2240
msgid "do not process kickstart data (provisioning only)"
msgstr ""

#: ../satellite_tools/satsync.py:2242
msgid "do not process full package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:2244
msgid "do not download, or process any RPMs"
msgstr ""

#: ../satellite_tools/satsync.py:2246
msgid "turn off SSL (not recommended)"
msgstr ""

#: ../satellite_tools/satsync.py:2248
msgid "org to which the sync imports data. defaults to the admin account"
msgstr ""

#: ../satellite_tools/satsync.py:2250
#, fuzzy
msgid "print the configuration and exit"
msgstr "ÐšÐ°Ð½Ð°Ð» ÐºÐ¾Ð½Ñ„Ð¸Ð³ÑƒÑ€Ð°Ñ†Ð¸Ð¸ Ð½Ðµ ÑÑƒÑ‰ÐµÑÑ‚Ð²ÑƒÐµÑ‚"

#: ../satellite_tools/satsync.py:2252
msgid "alternative server with which to connect (hostname)"
msgstr ""

#: ../satellite_tools/satsync.py:2254
msgid "synchronize to this step (man satellite-sync for more info)"
msgstr ""

#: ../satellite_tools/satsync.py:2256
msgid "write complete data to tempfile before streaming to remainder of app"
msgstr ""

#: ../satellite_tools/satsync.py:2258
msgid "DEBUG ONLY: alternative path to digital system id"
msgstr ""

#: ../satellite_tools/satsync.py:2260
msgid "alternative email address(es) for sync output (--email option)"
msgstr ""

#: ../satellite_tools/satsync.py:2262
msgid "do not remove rpms when importing from local dump"
msgstr ""

#: ../satellite_tools/satsync.py:2264
msgid ""
"the fully qualified domain name of the master Satellite. Valid with --mount-"
"point only. Required if you want to import org data and channel permissions."
msgstr ""

#: ../satellite_tools/satsync.py:2274
#, python-format
msgid "ERROR: these arguments make no sense in this context (try --help): %s"
msgstr ""

#. An SQL error is fatal... crash and burn
#: ../satellite_tools/satsync.py:2286
#, python-format
msgid "ERROR: Can't connect to the database: %s"
msgstr ""

#: ../satellite_tools/satsync.py:2287
msgid "ERROR: Check if your database is running."
msgstr ""

#: ../satellite_tools/satsync.py:2322
#, python-format
msgid "ERROR: --debug-level takes an in integer value within the range %s."
msgstr ""

#: ../satellite_tools/satsync.py:2324
msgid "  0  - little logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2325
msgid "  1  - minimal logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2326
msgid "  2  - normal level of logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2327
msgid "  3  - lots of logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2328
msgid "  4+ - excessive logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2341
msgid "ERROR: The --master option is only valid with the --mount-point option"
msgstr ""

#: ../satellite_tools/satsync.py:2351
#, python-format
msgid "ERROR: Unable to lookup Org Id %s"
msgstr ""

#: ../satellite_tools/satsync.py:2360
msgid ""
"WARNING: --list-channels option overrides any --step option. --step ignored."
msgstr ""

#: ../satellite_tools/satsync.py:2375
#, python-format
msgid ""
"ERROR: '%s' is not a valid step. See 'man mgr-inter-sync' for more detail."
msgstr ""

#: ../satellite_tools/satsync.py:2407
msgid ""
"ERROR: No channels currently imported; try mgr-inter-sync --list-channels; "
"then mgr-inter-sync -c chn0 -c chn1..."
msgstr ""

#. int(None) --> TypeError
#. int('a')  --> ValueError
#: ../satellite_tools/satsync.py:2457 ../satellite_tools/satsync.py:2461
msgid "ERROR: --batch-size must have a value within the range: 1..50"
msgstr ""

#: ../satellite_tools/satsync.py:2469
#, python-format
msgid "ERROR: no such directory %s"
msgstr ""

#: ../satellite_tools/satsync.py:2474
msgid "Error Codes: Returned codes means:"
msgstr ""

#: ../satellite_tools/satsync.py:2475
msgid " -1  - Could not lock file or KeyboardInterrupt or SystemExit"
msgstr ""

#: ../satellite_tools/satsync.py:2476
msgid "  0  - User interrupted or intentional exit"
msgstr ""

#: ../satellite_tools/satsync.py:2477
msgid "  1  - attempting to run more than one instance of mgr-inter-sync."
msgstr ""

#: ../satellite_tools/satsync.py:2478
msgid "  2  - Unable to find synchronization tools."
msgstr ""

#: ../satellite_tools/satsync.py:2479
msgid "  3  - a general socket exception occurred"
msgstr ""

#: ../satellite_tools/satsync.py:2480
msgid "  4  - an SSL error occurred. Recheck your SSL settings."
msgstr ""

#: ../satellite_tools/satsync.py:2481
msgid "  5  - ISS error"
msgstr ""

#: ../satellite_tools/satsync.py:2482
msgid "  6  - unhandled exception occurred"
msgstr ""

#: ../satellite_tools/satsync.py:2483
msgid "  7  - unknown sync error"
msgstr ""

#: ../satellite_tools/satsync.py:2484
msgid "  8  - ERROR: must be root to execute"
msgstr ""

#: ../satellite_tools/satsync.py:2485
msgid "  9  - rpclib fault during synchronization init"
msgstr ""

#: ../satellite_tools/satsync.py:2486
msgid "  10 - synchronization init error"
msgstr ""

#: ../satellite_tools/satsync.py:2487
msgid "  11 - Error parsing XML stream"
msgstr ""

#: ../satellite_tools/satsync.py:2488
#, fuzzy
msgid "  12 - Channel do not exist"
msgstr "ÐšÐ°Ð½Ð°Ð» ÐºÐ¾Ð½Ñ„Ð¸Ð³ÑƒÑ€Ð°Ñ†Ð¸Ð¸ Ð½Ðµ ÑÑƒÑ‰ÐµÑÑ‚Ð²ÑƒÐµÑ‚"

#: ../satellite_tools/satsync.py:2489
msgid "  13 - SQL error during importing package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:2490
msgid "  14 - SQL error during linking channel packages"
msgstr ""

#: ../satellite_tools/satsync.py:2491
msgid "  15 - SQL error during xml processing"
msgstr ""

#: ../satellite_tools/satsync.py:2492
msgid "  16 - server.mount_point not set in the configuration file"
msgstr ""

#: ../satellite_tools/satsync.py:2493
msgid ""
"  17 - SQL error during retrieving the channels already imported in the SUSE "
"Manager database"
msgstr ""

#: ../satellite_tools/satsync.py:2494
msgid "  18 - Wrong db connection string in rhn.conf"
msgstr ""

#: ../satellite_tools/satsync.py:2495
msgid "  19 - Bad arguments"
msgstr ""

#: ../satellite_tools/satsync.py:2496
msgid "  20 - Could not connect to db."
msgstr ""

#: ../satellite_tools/satsync.py:2497
msgid "  21 - Bad debug level"
msgstr ""

#: ../satellite_tools/satsync.py:2498
msgid "  22 - Not valid step"
msgstr ""

#: ../satellite_tools/satsync.py:2499
msgid "  24 - no such file"
msgstr ""

#: ../satellite_tools/satsync.py:2500
msgid "  25 - no such directory"
msgstr ""

#: ../satellite_tools/satsync.py:2501
msgid "  26 - mount_point does not exist"
msgstr ""

#: ../satellite_tools/satsync.py:2502
msgid "  27 - No such org"
msgstr ""

#: ../satellite_tools/satsync.py:2503
msgid "  28 - error: --master is only valid with --mount-point"
msgstr ""

#: ../satellite_tools/satsync.py:2510
#, python-format
msgid "ERROR: unknown dump version, try one of %s"
msgstr ""
   07070100000089000081B40000000000000000000000016290A0C10000B688000000000000000000000000000000000000001B00000000spacewalk-backend/po/si.po    # SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
#
# Translators:
# Ankit Patel <ankit@redhat.com>, 2006, 2007.
# Tyronne Wickramarathne <tywickra@redhat.com>, 2006, 2007.
msgid ""
msgstr ""
"Project-Id-Version: Spacewalk\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-10-16 13:34+0200\n"
"PO-Revision-Date: 2011-03-04 16:08+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Sinhala (http://www.transifex.com/projects/p/fedora/language/"
"si/)\n"
"Language: si\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"

#: ../server/apacheAuth.py:66
#, python-format
msgid "incomplete proxy authentication token: %s"
msgstr ""

#: ../server/apacheAuth.py:84
#, python-format
msgid "Sent proxy signature %s does not match ours %s."
msgstr ""

#: ../server/apacheAuth.py:119
msgid "declined proxy authentication"
msgstr ""

#: ../server/apacheRequest.py:59
#, python-format
msgid "Invalid request received (%s)."
msgstr ""

#: ../server/apacheRequest.py:120
#, python-format
msgid ""
"IMPORTANT MESSAGE FOLLOWS:\n"
"%s"
msgstr ""

#: ../server/apacheRequest.py:149
#, python-format
msgid ""
"While running '%s': caught\n"
"%s : %s\n"
msgstr ""

#: ../server/apacheRequest.py:606
#, python-format
msgid "Invalid URI %s"
msgstr ""

#: ../server/configFilesHandler.py:129 ../server/handlers/app/packages.py:192
#: ../server/handlers/xmlrpc/registration.py:215
#: ../server/handlers/xmlrpc/registration.py:1168
#: ../server/handlers/xmlrpc/registration.py:1307
#, python-format
msgid ""
"\n"
"                   %s Account has been deactivated on this server.\n"
"                   Please contact your Org administrator for more help."
msgstr ""

#: ../server/handlers/applet/applet.py:78
#, python-brace-format
msgid "Your system was not found in the {PRODUCT_NAME} database"
msgstr ""

#: ../server/handlers/sat/auth.py:45
msgid "ISS is disabled on this server."
msgstr ""

#: ../server/handlers/sat/auth.py:50
#, python-format
msgid "Server \"%s\" is not enabled for ISS."
msgstr ""

#: ../server/handlers/xmlrpc/errata.py:64
#, python-format
msgid "Expected a package name, not: %s"
msgstr ""

#: ../server/handlers/xmlrpc/errata.py:115
#, python-format
msgid "Expected a package, not: %s"
msgstr ""

#: ../server/handlers/xmlrpc/proxy.py:65
#, python-format
msgid "SUSE Manager Proxy service not enabled for server profile: \"%s\""
msgstr ""

#: ../server/handlers/xmlrpc/proxy.py:85
msgid "Invalid session key"
msgstr ""

#: ../server/handlers/xmlrpc/proxy.py:93
msgid "This server ID no longer exists"
msgstr ""

#: ../server/handlers/xmlrpc/queue.py:433
#, python-format
msgid "Invalid action value type %s (%s)"
msgstr ""

#: ../server/handlers/xmlrpc/queue.py:464
#, python-format
msgid "Action %s does not belong to server %s"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:194
msgid "Required data missing"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:198
msgid "Required members missing"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:207
msgid "Attempt to register a system to an invalid username"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:839
msgid "Invalid system release version requested"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1063
msgid ""
"Unable to find a valid network interface, both ipaddr and ip6addr not found."
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1115
#, python-brace-format
msgid "{PRODUCT_NAME} Welcome Message"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1125
msgid "Privacy Statement"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1146
msgid "Expected a dictionary as a product argument"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1374
#, python-format
msgid "Invalid value '%s' for %s (%s)"
msgstr ""

#: ../server/handlers/xmlrpc/scap.py:104
msgid "Invalid system_id/action_id pair."
msgstr ""

#: ../server/handlers/xmlrpc/up2date.py:233
#, python-format
msgid "Invalid value %s (%s)"
msgstr ""

#: ../server/importlib/userAuth.py:98
msgid "You are not authorized to manage packages in the null org"
msgstr ""

#: ../server/importlib/userAuth.py:103
#, python-format
msgid "You are not allowed to manage packages in the %s org"
msgstr ""

#: ../server/importlib/userAuth.py:121
msgid "You are not allowed to perform administrative tasks"
msgstr ""

#: ../server/importlib/userAuth.py:144
#, python-format
msgid ""
"You are not allowed to manage channel %s, or that channel does not exist"
msgstr ""

#: ../server/importlib/userAuth.py:204
#, python-format
msgid ""
"\n"
"               %s Account has been deactivated on this server.\n"
"               Please contact your Org administrator for more help."
msgstr ""

#: ../server/rhnChannel.py:1992
#, python-format
msgid ""
"Your account does not have access to any channels matching "
"(release='%(release)s', arch='%(arch)s')%(www_activation)s"
msgstr ""

#: ../server/rhnChannel.py:2002
msgid ""
"\n"
"If you have a registration number, please register with it first at http://"
"www.redhat.com/apps/activate/ and then try again.\n"
"\n"
msgstr ""

#: ../server/rhnChannel.py:2012
#, python-format
msgid "Insufficient subscription permissions for release (%s, %s"
msgstr ""

#. Various messages that can be reused
#.
#. bretm 02/07/2007 -- when we have better old-client documentation, probably
#. will be safe to get rid of all this crap
#: ../server/rhnChannel.py:2276 ../server/rhnChannel.py:2287
#: ../server/rhnChannel.py:2302
msgid "System Registered but Inactive"
msgstr ""

#: ../server/rhnChannel.py:2277
#, python-format
msgid ""
"\n"
"Invalid Architecture and OS release combination (%s, %s).\n"
"Your system has been registered, but will not receive updates\n"
"because it is not subscribed to a channel. If you have not yet\n"
"activated your product for service, please visit our website at:\n"
"\n"
"     http://www.redhat.com/apps/activate/\n"
"\n"
"...to activate your product."
msgstr ""

#: ../server/rhnChannel.py:2288
#, python-format
msgid ""
"\n"
"Invalid Architecture and OS release combination (%s, %s).\n"
"Your system has been registered, but will not receive updates\n"
"because it could not be subscribed to a base channel.\n"
"Please contact your organization administrator for assistance.\n"
msgstr ""

#: ../server/rhnChannel.py:2295
#, python-format
msgid ""
"\n"
"  This system has been successfully registered, but is not yet entitled\n"
"  to service.  To entitle this system to service, login to the web site at:\n"
"\n"
"  %(entitlement_url)s\n"
msgstr ""

#: ../server/rhnChannel.py:2303
#, python-format
msgid ""
"\n"
"  This system has been successfully registered, but no service entitlements\n"
"  were available.  To entitle this system to service, login to the web site "
"at:\n"
"\n"
"  %(entitlement_url)s\n"
msgstr ""

#: ../server/rhnHandler.py:62
msgid "Please run rhn_register as root on this client"
msgstr ""

#: ../server/rhnHandler.py:75
#, python-format
msgid "Service not enabled for system profile: \"%s\""
msgstr ""

#: ../server/rhnPackage.py:49 ../server/rhnPackage.py:87
#: ../server/rhnPackage.py:107 ../server/rhnPackage.py:158
#, python-format
msgid "Invalid RPM package %s requested"
msgstr ""

#: ../server/rhnPackage.py:112
msgid "Package not found"
msgstr ""

#: ../server/rhnServer/server_class.py:97
#, python-format
msgid "Architecture `%s' is not supported"
msgstr ""

#: ../server/rhnServer/server_token.py:78
#, python-format
msgid "Token `%s' has more than one base channel assigned"
msgstr ""

#: ../server/rhnServer/server_token.py:80
msgid "Conflicting base channels"
msgstr ""

#: ../server/rhnServer/server_token.py:190
#, python-format
msgid "Failed to add server to group %s"
msgstr ""

#: ../server/rhnServer/server_token.py:503
#, python-format
msgid "Maximum usage count of %s reached"
msgstr ""

#: ../server/rhnServer/server_token.py:744
msgid ""
"Stacking of re-registration tokens with different base entitlements is not "
"supported"
msgstr ""

#: ../server/rhnServer/server_token.py:811
#, python-format
msgid "Could not find token '%s'"
msgstr ""

#. Cannot use activation keys from different orgs
#: ../server/rhnServer/server_token.py:843
msgid "Tokens from mismatching orgs"
msgstr ""

#. Two tokens with different kickstart sessions
#: ../server/rhnServer/server_token.py:853
msgid "Kickstart session mismatch"
msgstr ""

#: ../server/rhnServer/server_token.py:877
msgid "Stacking of re-registration tokens is not supported"
msgstr ""

#: ../server/rhnUser.py:289 ../server/rhnUser.py:292
msgid "Invalid username/password combination"
msgstr ""

#. nope, not reserved either
#: ../server/rhnUser.py:467
#, python-format
msgid "Username `%s' has not been reserved"
msgstr ""

#. New accounts have to specify an e-mail address
#: ../server/rhnUser.py:473
msgid "E-mail address not specified"
msgstr ""

#: ../server/rhnUser.py:509
#, python-format
msgid "username should be at least %d characters"
msgstr ""

#: ../server/rhnUser.py:512
#, python-format
msgid "username should be less than %d characters"
msgstr ""

#: ../server/rhnUser.py:523
#, python-format
msgid "username = `%s', invalid character `%s'"
msgstr ""

#: ../server/rhnUser.py:542
#, python-format
msgid "Please limit your e-mail address to %s chars"
msgstr ""

#: ../server/rhnUser.py:623
#, python-format
msgid "password must be at least %d characters"
msgstr ""

#: ../server/rhnUser.py:626
#, python-format
msgid "Password must be shorter than %d characters"
msgstr ""

#: ../server/rhnUser.py:644
#, python-format
msgid "password contains character `%s'"
msgstr ""

#: ../server/rhnUser.py:651
#, python-format
msgid "username should be at least %d characters long"
msgstr ""

#: ../server/rhnUser.py:662
#, python-format
msgid "Cannot register usernames ending with %s"
msgstr ""

#. 0-999: Red Hat client/client-like interaction errors:
#: ../common/rhnException.py:53
msgid "This does not appear to be a valid username."
msgstr ""

#: ../common/rhnException.py:54
msgid "Invalid username and password combination."
msgstr ""

#: ../common/rhnException.py:55
msgid "This login is already taken, or the password is incorrect."
msgstr ""

#: ../common/rhnException.py:56
msgid "Permission denied."
msgstr ""

#: ../common/rhnException.py:57
msgid "Object not found."
msgstr ""

#: ../common/rhnException.py:58
msgid "Invalid System Digital ID."
msgstr ""

#: ../common/rhnException.py:59
msgid "Invalid System Credentials."
msgstr ""

#: ../common/rhnException.py:60
msgid "Could not retrieve user data from database."
msgstr ""

#: ../common/rhnException.py:61
msgid "Valid username required."
msgstr ""

#: ../common/rhnException.py:62
msgid "Valid password required."
msgstr ""

#: ../common/rhnException.py:63
msgid "Minimum username length violation."
msgstr ""

#: ../common/rhnException.py:64
msgid "Minimum password length violation."
msgstr ""

#: ../common/rhnException.py:65
msgid "The username contains invalid characters."
msgstr ""

#: ../common/rhnException.py:66
msgid "File not found."
msgstr ""

#: ../common/rhnException.py:67
msgid "Architecture and OS version combination is not supported."
msgstr ""

#: ../common/rhnException.py:68
msgid "Could not retrieve system data from database."
msgstr ""

#: ../common/rhnException.py:69
msgid "Invalid arguments passed to function."
msgstr ""

#: ../common/rhnException.py:70
msgid "Unable to retrieve requested entry."
msgstr ""

#: ../common/rhnException.py:71
msgid "Could not update database entry."
msgstr ""

#: ../common/rhnException.py:72
msgid "Unsupported server architecture."
msgstr ""

#: ../common/rhnException.py:73
#, python-format
msgid ""
"\n"
"     The anonymous server functionality is no longer available.\n"
"\n"
"     Please re-register this system by running mgr_register as root.\n"
"     Please visit https://%(hostname)s/rhn/systems/SystemEntitlements.do\n"
"     or login at https://%(hostname)s, and from the \"Overview\" tab,\n"
"     select \"Subscription Management\" to enable the service for this "
"system.\n"
"     "
msgstr ""

#: ../common/rhnException.py:81
msgid "Record not available in the database."
msgstr ""

#: ../common/rhnException.py:82
msgid "Invalid value for entry."
msgstr ""

#: ../common/rhnException.py:83
#, python-format
msgid ""
"\n"
"     This system does not have a valid entitlement for SUSE Manager.\n"
"     Please visit https://%(hostname)s/rhn/systems/SystemEntitlements.do\n"
"     or login at https://%(hostname)s, and from the \"Overview\" tab,\n"
"     select \"Subscription Management\" to enable the service for this "
"system.\n"
"     "
msgstr ""

#: ../common/rhnException.py:89
msgid "Channel error"
msgstr ""

#: ../common/rhnException.py:90
msgid "Client session token is invalid."
msgstr ""

#: ../common/rhnException.py:91
msgid "Client session token has expired."
msgstr ""

#: ../common/rhnException.py:92
msgid "You are not authorized to retrieve the requested object."
msgstr ""

#: ../common/rhnException.py:93
msgid "Invalid action"
msgstr ""

#: ../common/rhnException.py:94
msgid "You are not allowed to perform administrative tasks on this system."
msgstr ""

#: ../common/rhnException.py:96
msgid "The system is already subscribed to the specified channel."
msgstr ""

#: ../common/rhnException.py:97
msgid "The system is not currently subscribed to the specified channel."
msgstr ""

#: ../common/rhnException.py:98
msgid "The specified channel does not exist."
msgstr ""

#: ../common/rhnException.py:99
msgid "Invalid channel version."
msgstr ""

#: ../common/rhnException.py:100
msgid ""
"\n"
"     User group membership limits exceeded.\n"
"\n"
"     The current settings for your account do not allow you to add another\n"
"     user account. Please check with the organization administrator for "
"your\n"
"     account if the maximum number of users allowed to subscribe to server "
"needs\n"
"     to be changed.\n"
"     "
msgstr ""

#: ../common/rhnException.py:108
msgid ""
"\n"
"     System group membership limits exceeded.\n"
"\n"
"     The current settings for your account do not allow you to add another\n"
"     system profile. Please check with the organization administrator for "
"your\n"
"     account for modifying the maximum number of system profiles that can "
"be\n"
"     subscribed to your account.\n"
"     "
msgstr ""

#: ../common/rhnException.py:116
msgid ""
"\n"
"     Invalid architecture.\n"
"\n"
"     The architecture of the package is not supported by\n"
"     "
msgstr ""

#: ../common/rhnException.py:121
msgid "Invalid RPM header"
msgstr ""

#: ../common/rhnException.py:122
msgid ""
"\n"
"    This system is already registered as a Salt Minion. If you want to "
"register it as a traditional client\n"
"    please delete it first via the web UI or API and then register it using "
"the traditional tools.\n"
"    "
msgstr ""

#. For the uploading tools
#: ../common/rhnException.py:127
msgid "Invalid information uploaded to the server"
msgstr ""

#: ../common/rhnException.py:128
msgid "Error uploading network interfaces configuration."
msgstr ""

#: ../common/rhnException.py:129
msgid ""
"\n"
"     Package Upload Failed due to uniqueness constraint violation.\n"
"     Make sure the package does not have any duplicate dependencies or\n"
"     does not already exists on the server\n"
"     "
msgstr ""

#: ../common/rhnException.py:134
msgid ""
"\n"
"     The --force rhnpush option is disabled on this server.\n"
"     Please contact your SUSE Manager administrator for more help.\n"
"     "
msgstr ""

#. 60-70: token errors
#: ../common/rhnException.py:140
msgid ""
"\n"
"     The activation token specified could not be found on the server.\n"
"     Please retry with a valid key.\n"
"     "
msgstr ""

#: ../common/rhnException.py:144
msgid "Too many systems registered using this registration token"
msgstr ""

#: ../common/rhnException.py:145
msgid "Token contains invalid, obsoleted or insufficient settings"
msgstr ""

#: ../common/rhnException.py:146
msgid "Conflicting activation tokens"
msgstr ""

#. 70-80: channel subscription errors
#: ../common/rhnException.py:149
msgid ""
"\n"
"     No matching base channel found for your system.\n"
"     "
msgstr ""

#: ../common/rhnException.py:152
msgid ""
"\n"
"     You do not have subscription permission to the designated channel.\n"
"     Please refer to your organization's channel or organization\n"
"     administrators for further details.\n"
"     "
msgstr ""

#: ../common/rhnException.py:157
msgid "You can not unsubscribe from base channel."
msgstr ""

#: ../common/rhnException.py:158
msgid "SUSE Manager or Proxy channel can not be subscribed."
msgstr ""

#. 80-90: server group errors
#: ../common/rhnException.py:161
msgid "There was an error while trying to join the system to its groups"
msgstr ""

#. 90-100: entitlement errors
#: ../common/rhnException.py:164
msgid "Unable to entitle system"
msgstr ""

#. 100-109: e-mail and uuid related faults
#: ../common/rhnException.py:167
msgid "Maximum e-mail length violation."
msgstr ""

#: ../common/rhnException.py:168
msgid "This system has been previously registered."
msgstr ""

#: ../common/rhnException.py:169
msgid "Invalid username"
msgstr ""

#. 140-159 applet errors
#: ../common/rhnException.py:172
msgid "Unable to look up server"
msgstr ""

#. 160-179: OSAD errors
#: ../common/rhnException.py:175
msgid "Required argument is missing"
msgstr ""

#. 600-699: RHEL5+ EN errors
#: ../common/rhnException.py:178
msgid "No entitlement information tied to hardware"
msgstr ""

#: ../common/rhnException.py:179
msgid "Installation number is not entitling"
msgstr ""

#. 700-799: Additional user input verification errors.
#: ../common/rhnException.py:182
msgid "Maximum username length violation"
msgstr ""

#: ../common/rhnException.py:183
msgid "Maximum password length violation"
msgstr ""

#: ../common/rhnException.py:184
msgid "This user has read only API access. Action denied."
msgstr ""

#: ../common/rhnException.py:186
msgid "System Name cannot be less than 1 character"
msgstr ""

#. 1000-1999: Proxy specific errors:
#. issued by a Proxy to the client
#: ../common/rhnException.py:190
msgid "SUSE Manager Proxy error."
msgstr ""

#: ../common/rhnException.py:191
msgid "SUSE Manager Proxy unable to login."
msgstr ""

#. issued by a SUSE Manager Server/Satellite to the proxy
#: ../common/rhnException.py:193
msgid ""
"\n"
"     SUSE Manager Proxy system ID does not match a Spacewalk Proxy Server\n"
"     in the database.\n"
"     "
msgstr ""

#: ../common/rhnException.py:197
msgid "SUSE Manager Proxy session token is invalid."
msgstr ""

#: ../common/rhnException.py:198
msgid "SUSE Manager Proxy session token has expired."
msgstr ""

#. 2000-2999: Red Hat Satellite specific errors:
#: ../common/rhnException.py:202
msgid ""
"\n"
"      user creation is not allowed via mgr_register;\n"
"     please contact your sysadmin to have your account created.\n"
"     "
msgstr ""

#: ../common/rhnException.py:206
msgid ""
"\n"
"     This SUSE Manager server is not allowed to use Inter Server Sync on "
"this server\n"
"     "
msgstr ""

#: ../common/rhnException.py:209
msgid ""
"\n"
"     Inter Server Sync is disabled on this SUSE Manager Server.\n"
"     "
msgstr ""

#. 3000-3999: XML dumper errors:
#: ../common/rhnException.py:214
msgid "Invalid datatype passed"
msgstr ""

#: ../common/rhnException.py:215
msgid "Unable to retrieve channel"
msgstr ""

#: ../common/rhnException.py:216
msgid "Unable to retrieve package"
msgstr ""

#: ../common/rhnException.py:217
msgid "Unable to retrieve erratum"
msgstr ""

#: ../common/rhnException.py:218
msgid "File is missing"
msgstr ""

#: ../common/rhnException.py:219
msgid "Function retrieval error"
msgstr ""

#: ../common/rhnException.py:220
msgid "Function execution error"
msgstr ""

#: ../common/rhnException.py:221
msgid "Missing version string"
msgstr ""

#: ../common/rhnException.py:222
msgid "Invalid version string"
msgstr ""

#: ../common/rhnException.py:223
msgid "Mismatching versions"
msgstr ""

#: ../common/rhnException.py:224
msgid "Invalid channel version"
msgstr ""

#: ../common/rhnException.py:225
msgid "No comps file for channel"
msgstr ""

#: ../common/rhnException.py:226
msgid "Unable to retrieve comps file"
msgstr ""

#. 4000 - 4999: config management errors
#: ../common/rhnException.py:229
msgid "Configuration action missing"
msgstr ""

#: ../common/rhnException.py:230
msgid "File too large"
msgstr ""

#: ../common/rhnException.py:231
msgid "File contains binary data"
msgstr ""

#: ../common/rhnException.py:232
msgid "Configuration channel is not empty"
msgstr ""

#: ../common/rhnException.py:233
msgid "Permission error"
msgstr ""

#: ../common/rhnException.py:234
msgid "Content missing for configuration file"
msgstr ""

#: ../common/rhnException.py:235
msgid "Template delimiters not specified"
msgstr ""

#: ../common/rhnException.py:236
msgid "Configuration channel does not exist"
msgstr ""

#: ../common/rhnException.py:237
msgid "Configuration channel already exists"
msgstr ""

#: ../common/rhnException.py:238
msgid "File missing from configuration channel"
msgstr ""

#: ../common/rhnException.py:239
msgid "Different revision of this file is uploaded"
msgstr ""

#: ../common/rhnException.py:240
msgid "File already uploaded to configuration channel"
msgstr ""

#: ../common/rhnException.py:241
msgid "File size exceeds remaining quota space"
msgstr ""

#: ../common/rhnException.py:242
msgid "Full path of file must be specified"
msgstr ""

#: ../common/rhnException.py:243
msgid "Invalid revision number"
msgstr ""

#: ../common/rhnException.py:244
msgid "Cannot compare files of different file type"
msgstr ""

#. 5000 - 5999: client content uploading errors
#. 5000 - 5099: crash reporting errors
#: ../common/rhnException.py:248
msgid "Crash information is invalid or incomplete"
msgstr ""

#: ../common/rhnException.py:249
msgid "Crash file information is invalid or incomplete"
msgstr ""

#: ../common/rhnException.py:250
msgid "Error composing crash directory path"
msgstr ""

#: ../common/rhnException.py:251
msgid "Error composing crash file path"
msgstr ""

#: ../common/rhnException.py:252 ../common/rhnException.py:259
msgid "Invalid content encoding"
msgstr ""

#: ../common/rhnException.py:253
msgid "Invalid crash name"
msgstr ""

#: ../common/rhnException.py:254
msgid "Crash reporting is disabled for this organization"
msgstr ""

#. 5100 - 5199: scap results reporting error
#: ../common/rhnException.py:256
msgid "SCAP results file transfer is invalid or incomplete"
msgstr ""

#: ../common/rhnException.py:257
msgid "Error composing directory path for detailed SCAP results"
msgstr ""

#: ../common/rhnException.py:258
msgid "Error composing file path for detailed SCAP results"
msgstr ""

#: ../common/rhnException.py:306
msgid ""
"\n"
"     An error has occurred while processing your request. If this problem\n"
"     persists please enter a bug report at scc.suse.com.\n"
"     If you choose to submit the bug report, please be sure to include\n"
"     details of what you were trying to do when this error occurred and\n"
"     details on how to reproduce this problem.\n"
msgstr ""

#: ../common/rhnException.py:358
#, python-format
msgid ""
"Error Message:\n"
"    %s\n"
msgstr ""

#: ../common/rhnException.py:360
#, python-format
msgid "Error Class Code: %s\n"
msgstr ""

#: ../common/rhnException.py:363
#, python-format
msgid "Error Class Info: %s\n"
msgstr ""

#: ../common/rhnException.py:365
#, python-format
msgid "Explanation: %s"
msgstr ""

#: ../common/rhnTB.py:205
#, python-format
msgid "ERROR: %s %s: %s"
msgstr ""

#: ../common/rhnTB.py:207
#, python-format
msgid "TRACEBACK: %s"
msgstr ""

#: ../satellite_tools/disk_dumper/iss.py:1294
#: ../satellite_tools/disk_dumper/iss.py:1298
#, python-format
msgid "format of %s should be at least YYYYMMDD.\n"
msgstr ""

#: ../satellite_tools/messages.py:26
#, python-format
msgid ""
"\n"
"ERROR: executing step %s. Error is:\n"
"%s\n"
msgstr ""

#: ../satellite_tools/messages.py:31
#, python-format
msgid ""
"\n"
"ERROR: there was a problem accessing the channel data from your temporary\n"
"       repository. Did you migrate all of the data from the channel ISOs\n"
"       do this directory? If so, please recheck the channels ISOs, ensure\n"
"       that you have them all, and then iteratively remount and repopulate\n"
"       the temporary repository (%s).\n"
msgstr ""

#: ../satellite_tools/messages.py:39
#, python-format
msgid ""
"\n"
"ERROR: there was a problem synchronizing the information.\n"
"       Error message: %s\n"
msgstr ""

#: ../satellite_tools/messages.py:44
#, python-format
msgid ""
"\n"
"ERROR: There was a problem communicating with the ISS Master.\n"
"       Depending on the specific error details, please review your "
"configuration,\n"
"       basic network connectivity, and/or name resolution, and try again.\n"
"       Error message: %s\n"
msgstr ""

#: ../satellite_tools/messages.py:51
#, python-format
msgid ""
"\n"
"ERROR: There was a problem communicating with the ISS Master.\n"
"       If the master satellite is older than v5.3, it does not have ISS "
"capability.\n"
"       Otherwise, depending on the specific error details, please review "
"your\n"
"       configuration, basic network connectivity, and/or name resolution, "
"and try again.\n"
"       Error message: %s\n"
msgstr ""

#: ../satellite_tools/messages.py:59
#, python-format
msgid ""
"\n"
"ERROR: a child-channel cannot be synced without its parent being synced as\n"
"       well. A parent needs to be either (a) previously synced or (b) "
"synced\n"
"       in tandem with the desired child-channel. Missing parents for this\n"
"       transaction:\n"
"       %s\n"
msgstr ""

#: ../satellite_tools/messages.py:67
#, python-format
msgid ""
"\n"
"ERROR: you are not entitled to sync a channel in this set of channels.\n"
"Please contact your SUSE Manager contact\n"
"%s"
msgstr ""

#: ../satellite_tools/messages.py:72
#, python-format
msgid "  ERROR: not enough free space (%s KB) on device."
msgstr ""

#: ../satellite_tools/messages.py:74
#, python-format
msgid "    %3d/%s Fetch successful: %s (%s bytes)"
msgstr ""

#: ../satellite_tools/messages.py:75
#, python-format
msgid "    Extinct package:  %s"
msgstr ""

#: ../satellite_tools/messages.py:76
#, python-format
msgid "   Total size: %s"
msgstr ""

#: ../satellite_tools/messages.py:77
#, python-format
msgid "      Downloaded %s of %s. Estimated remaining time: %s"
msgstr ""

#: ../satellite_tools/messages.py:78
#, python-format
msgid "    Fetch unsuccessful: %s"
msgstr ""

#: ../satellite_tools/messages.py:79
#, python-format
msgid "   RPM fetch summary: %s"
msgstr ""

#: ../satellite_tools/messages.py:80
#, python-format
msgid "       success: %d"
msgstr ""

#: ../satellite_tools/messages.py:81
#, python-format
msgid "       failed:  %d"
msgstr ""

#: ../satellite_tools/messages.py:82
#, python-format
msgid "       extinct: %d"
msgstr ""

#: ../satellite_tools/messages.py:84
#, python-format
msgid "   Retrieving / parsing *relevant* package metadata: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:85
#, python-format
msgid "   Retrieving / parsing errata data: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:86
#, python-format
msgid "   Retrieving / parsing kickstart data: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:87
#, python-format
msgid "   Retrieving / parsing kickstart tree files: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:88
#, python-format
msgid "   Importing *relevant* package metadata: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:89
msgid "   * WARNING: this may be a slow process."
msgstr ""

#: ../satellite_tools/messages.py:90
msgid "Linking packages to channels"
msgstr ""

#: ../satellite_tools/messages.py:91
#, python-format
msgid "   Importing *relevant* errata: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:92
msgid "   No new kickstartable tree to import"
msgstr ""

#: ../satellite_tools/messages.py:93
#, python-format
msgid "Importing kickstartable trees (%d)"
msgstr ""

#: ../satellite_tools/messages.py:94
#, python-format
msgid "Imported kickstartable trees (%d)"
msgstr ""

#: ../satellite_tools/reposync.py:111 ../satellite_tools/satsync.py:439
msgid "+++ sending log as an email +++"
msgstr ""

#: ../satellite_tools/reposync.py:114
#, python-format
msgid "%s sync. report from %s"
msgstr ""

#: ../satellite_tools/reposync.py:124 ../satellite_tools/satsync.py:449
msgid "+++ email requested, but there is nothing to send +++"
msgstr ""

#: ../satellite_tools/rhn_satellite_activate.py:198
#, python-format
msgid ""
"\"%s\" (specified in commandline)\n"
"could not be opened and read:\n"
"%s"
msgstr ""

#: ../satellite_tools/rhn_satellite_activate.py:205
#, python-format
msgid ""
"\"%s\" could not be opened\n"
"and/or written to:\n"
"%s"
msgstr ""

#: ../satellite_tools/satsync.py:258
#, python-format
msgid "No handler for step %s"
msgstr ""

#. Try one more time - this time it should be faster since
#. everything should be cached
#: ../satellite_tools/satsync.py:270
msgid "Environment changed, trying again..."
msgstr ""

#: ../satellite_tools/satsync.py:277
msgid "ERROR: Encountered IntegrityError: \n"
msgstr ""

#: ../satellite_tools/satsync.py:285
msgid "Repeated failures"
msgstr ""

#: ../satellite_tools/satsync.py:290
#, python-format
msgid ""
"    Import complete:\n"
"        Begin time: %s\n"
"        End time:   %s\n"
"        Elapsed:    %s\n"
"          "
msgstr ""

#: ../satellite_tools/satsync.py:311
msgid "hours"
msgstr ""

#: ../satellite_tools/satsync.py:311
msgid "minutes"
msgstr ""

#: ../satellite_tools/satsync.py:311
msgid "seconds"
msgstr ""

#: ../satellite_tools/satsync.py:357
msgid ""
"ERROR: The dump is missing package data, use --no-rpms to skip this step or "
"fix the content to include package data."
msgstr ""

#. the orgs() method doesn't exist; that's fine we just
#. won't sync the orgs
#: ../satellite_tools/satsync.py:404
msgid "The SUSE Manager master does not support syncing orgs data."
msgstr ""

#: ../satellite_tools/satsync.py:404
msgid "Skipping..."
msgstr ""

#: ../satellite_tools/satsync.py:442
#, python-format
msgid "SUSE Manager Inter Server sync. report from %s"
msgstr ""

#: ../satellite_tools/satsync.py:521
msgid " - file-system synchronization"
msgstr ""

#: ../satellite_tools/satsync.py:533 ../satellite_tools/satsync.py:541
msgid " - live synchronization"
msgstr ""

#: ../satellite_tools/satsync.py:534
#, python-brace-format
msgid ""
"ERROR: Live content synchronizing with RHN Classic Hosted is no longer "
"supported.\n"
"Please use the cdn-sync command instead unless you are attempting to sync "
"from another {PRODUCT_NAME} via Inter-Server-Sync (ISS), or from local "
"content on disk via Channel Dump ISOs."
msgstr ""

#: ../satellite_tools/satsync.py:542
#, python-format
msgid "   url: %s"
msgstr ""

#: ../satellite_tools/satsync.py:543
#, python-format
msgid "   debug/output level: %s"
msgstr ""

#: ../satellite_tools/satsync.py:553
msgid "ERROR: this server must be registered with SUSE Manager."
msgstr ""

#: ../satellite_tools/satsync.py:575
#, python-format
msgid "Retrieving / parsing %s data"
msgstr ""

#: ../satellite_tools/satsync.py:585 ../satellite_tools/satsync.py:600
msgid "*** SYSTEM INTERRUPT CALLED ***"
msgstr ""

#: ../satellite_tools/satsync.py:593
msgid "ERROR: fatal parser exception occurred "
msgstr ""

#: ../satellite_tools/satsync.py:594
#, python-format
msgid "(line: %s, col: %s msg: %s)"
msgstr ""

#: ../satellite_tools/satsync.py:598
#, python-format
msgid "ERROR: parser exception occurred: %s"
msgstr ""

#: ../satellite_tools/satsync.py:603
msgid "ERROR: exception (during parse) occurred: "
msgstr ""

#: ../satellite_tools/satsync.py:604
#, python-format
msgid ""
"   Encountered some errors with %s data (see logs (%s) for more information)"
msgstr ""

#: ../satellite_tools/satsync.py:606
#, python-format
msgid "   Encountered some errors with %s data:"
msgstr ""

#: ../satellite_tools/satsync.py:607
#, python-format
msgid "   ------- %s PARSE/IMPORT ERROR -------"
msgstr ""

#: ../satellite_tools/satsync.py:609
msgid "   ---------------------------------------"
msgstr ""

#: ../satellite_tools/satsync.py:612
#, python-format
msgid "%s data complete"
msgstr ""

#: ../satellite_tools/satsync.py:665
msgid "Retrieving / parsing channel data"
msgstr ""

#: ../satellite_tools/satsync.py:718
msgid "Channel data complete"
msgstr ""

#: ../satellite_tools/satsync.py:736
#, python-format
msgid "%10s import from %s"
msgstr ""

#: ../satellite_tools/satsync.py:739
#, python-format
msgid "%10s import from %s - %s"
msgstr ""

#: ../satellite_tools/satsync.py:743
#, python-format
msgid "%10s"
msgstr ""

#: ../satellite_tools/satsync.py:750
msgid "p"
msgstr ""

#: ../satellite_tools/satsync.py:752
msgid "."
msgstr ""

#: ../satellite_tools/satsync.py:758
msgid "   p = previously imported/synced channel"
msgstr ""

#: ../satellite_tools/satsync.py:759
msgid "   . = channel not yet imported/synced"
msgstr ""

#: ../satellite_tools/satsync.py:765
msgid "   e = channel no longer supported (end-of-service)"
msgstr ""

#: ../satellite_tools/satsync.py:767
msgid "   ? = channel label invalid --- typo?"
msgstr ""

#: ../satellite_tools/satsync.py:771
#, python-format
msgid "   %s:"
msgstr ""

#: ../satellite_tools/satsync.py:772
#, python-format
msgid "      %s %-40s %4s %s"
msgstr ""

#: ../satellite_tools/satsync.py:773
msgid "base-channels"
msgstr ""

#: ../satellite_tools/satsync.py:786 ../satellite_tools/satsync.py:1603
msgid "NONE RELEVANT"
msgstr ""

#: ../satellite_tools/satsync.py:808
msgid "end-of-service"
msgstr ""

#: ../satellite_tools/satsync.py:809
msgid "e"
msgstr ""

#: ../satellite_tools/satsync.py:815
msgid "   typos:"
msgstr ""

#: ../satellite_tools/satsync.py:816
msgid "?"
msgstr ""

#: ../satellite_tools/satsync.py:831
#, python-format
msgid "XXX: imported channels: %s"
msgstr ""

#: ../satellite_tools/satsync.py:832
#, python-format
msgid "XXX:   cached channels: %s"
msgstr ""

#: ../satellite_tools/satsync.py:837
msgid "XXX: list channels called"
msgstr ""

#: ../satellite_tools/satsync.py:855
msgid "ERROR: these channels either do not exist or are not available:"
msgstr ""

#: ../satellite_tools/satsync.py:859
#, python-format
msgid "       (to see a list of channel labels: %s --list-channels)"
msgstr ""

#: ../satellite_tools/satsync.py:904
#, python-format
msgid "   Retrieving / parsing short package metadata: %s (%s)"
msgstr ""

#: ../satellite_tools/satsync.py:965
#, python-format
msgid "Diffing package metadata (what's missing locally?): %s"
msgstr ""

#: ../satellite_tools/satsync.py:971 ../satellite_tools/satsync.py:1254
msgid "Diffing:    "
msgstr ""

#: ../satellite_tools/satsync.py:988
msgid "ERROR: incremental dump skipped"
msgstr ""

#: ../satellite_tools/satsync.py:1079
msgid "Downloading rpm packages"
msgstr ""

#: ../satellite_tools/satsync.py:1084
#, python-format
msgid "   Fetching any missing RPMs: %s (%s)"
msgstr ""

#: ../satellite_tools/satsync.py:1085 ../satellite_tools/satsync.py:1153
msgid "NONE MISSING"
msgstr ""

#: ../satellite_tools/satsync.py:1094
msgid "Processing rpm packages complete"
msgstr ""

#: ../satellite_tools/satsync.py:1121
msgid "Downloading package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1146
msgid "Downloading srpm packages"
msgstr ""

#: ../satellite_tools/satsync.py:1152
#, python-format
msgid "   Fetching any missing SRPMs: %s (%s)"
msgstr ""

#: ../satellite_tools/satsync.py:1249
#, python-format
msgid "Diffing source package metadata (what's missing locally?): %s"
msgstr ""

#: ../satellite_tools/satsync.py:1260
msgid "Downloading source package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1338 ../satellite_tools/satsync.py:2027
#, python-format
msgid "Unable to save file %s: %s"
msgstr ""

#. for
#. Retried a number of times and it still failed; log the
#. file as being failed and move on
#: ../satellite_tools/satsync.py:1345
#, python-format
msgid "Failed to fetch file %s"
msgstr ""

#: ../satellite_tools/satsync.py:1350
msgid "Downloading kickstartable trees metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1365
msgid "Downloading kickstartable trees files"
msgstr ""

#: ../satellite_tools/satsync.py:1504
#, python-format
msgid "Grabbing all patches for channel %s"
msgstr ""

#: ../satellite_tools/satsync.py:1554
msgid "Downloading patch data"
msgstr ""

#: ../satellite_tools/satsync.py:1556
msgid "Forcing download of all patch data for requested channels."
msgstr ""

#: ../satellite_tools/satsync.py:1571
msgid "Downloading patch data complete"
msgstr ""

#: ../satellite_tools/satsync.py:1576 ../satellite_tools/satsync.py:1597
msgid "Downloading:"
msgstr ""

#: ../satellite_tools/satsync.py:1579
msgid " - complete"
msgstr ""

#: ../satellite_tools/satsync.py:1624
msgid "Importing source package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1627
msgid "Importing package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1635
msgid "Importing:  "
msgstr ""

#. not in the cache
#: ../satellite_tools/satsync.py:1703
msgid ""
"Package Not Found in Cache, Clear the Cache "
"to                                  Regenerate it."
msgstr ""

#: ../satellite_tools/satsync.py:1709
msgid "Importing channel patches"
msgstr ""

#: ../satellite_tools/satsync.py:1714
#, python-format
msgid "Importing %s patches for channel %s."
msgstr ""

#. Incomplete configuration
#: ../satellite_tools/satsync.py:2113
msgid "ERROR: server.mount_point not set in the configuration file"
msgstr ""

#: ../satellite_tools/satsync.py:2117
#, python-format
msgid "ERROR: server.mount_point %s do not exist"
msgstr ""

#: ../satellite_tools/satsync.py:2122
#, python-format
msgid "ERROR: path under server.mount_point (%s)  do not exist"
msgstr ""

#: ../satellite_tools/satsync.py:2199
#, python-format
msgid "Commandline: %s"
msgstr ""

#: ../satellite_tools/satsync.py:2202
#, python-format
msgid ""
"DEBUG ONLY: max. batch-size for XML/database-import processing (1..%s).\"man "
"satellite-sync\" for more information."
msgstr ""

#: ../satellite_tools/satsync.py:2205
msgid "alternative SSL CA Cert (fullpath to cert file)"
msgstr ""

#: ../satellite_tools/satsync.py:2207
msgid "process data for this channel only"
msgstr ""

#: ../satellite_tools/satsync.py:2209
msgid ""
"disk dump will be considered to be a full export; see \"man satellite-sync\" "
"for more information."
msgstr ""

#: ../satellite_tools/satsync.py:2212
msgid "existing custom channels will also be synced (unless -c is used)"
msgstr ""

#: ../satellite_tools/satsync.py:2214
#, python-format
msgid ""
"override debug level set in /etc/rhn/rhn.conf (which is currently set at %s)."
msgstr ""

#: ../satellite_tools/satsync.py:2216
#, python-format
msgid "requested version of XML dump (default: %s)"
msgstr ""

#: ../satellite_tools/satsync.py:2218
msgid "e-mail a report of what was synced/imported"
msgstr ""

#: ../satellite_tools/satsync.py:2220
msgid "forcibly process all (not a diff of) patch metadata"
msgstr ""

#: ../satellite_tools/satsync.py:2222
msgid "Do not use an http proxy under any circumstances."
msgstr ""

#: ../satellite_tools/satsync.py:2224
msgid "alternative http proxy (hostname:port)"
msgstr ""

#: ../satellite_tools/satsync.py:2226
msgid "alternative http proxy username"
msgstr ""

#: ../satellite_tools/satsync.py:2228
msgid "alternative http proxy password"
msgstr ""

#: ../satellite_tools/satsync.py:2230
msgid "parent SUSE Manager to import content from"
msgstr ""

#: ../satellite_tools/satsync.py:2232
msgid "list all available channels and exit"
msgstr ""

#: ../satellite_tools/satsync.py:2234
msgid "help on all error codes mgr-inter-sync returns"
msgstr ""

#: ../satellite_tools/satsync.py:2236
msgid "source mount point for import - disk update only"
msgstr ""

#: ../satellite_tools/satsync.py:2238
msgid "do not process patch data"
msgstr ""

#: ../satellite_tools/satsync.py:2240
msgid "do not process kickstart data (provisioning only)"
msgstr ""

#: ../satellite_tools/satsync.py:2242
msgid "do not process full package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:2244
msgid "do not download, or process any RPMs"
msgstr ""

#: ../satellite_tools/satsync.py:2246
msgid "turn off SSL (not recommended)"
msgstr ""

#: ../satellite_tools/satsync.py:2248
msgid "org to which the sync imports data. defaults to the admin account"
msgstr ""

#: ../satellite_tools/satsync.py:2250
msgid "print the configuration and exit"
msgstr ""

#: ../satellite_tools/satsync.py:2252
msgid "alternative server with which to connect (hostname)"
msgstr ""

#: ../satellite_tools/satsync.py:2254
msgid "synchronize to this step (man satellite-sync for more info)"
msgstr ""

#: ../satellite_tools/satsync.py:2256
msgid "write complete data to tempfile before streaming to remainder of app"
msgstr ""

#: ../satellite_tools/satsync.py:2258
msgid "DEBUG ONLY: alternative path to digital system id"
msgstr ""

#: ../satellite_tools/satsync.py:2260
msgid "alternative email address(es) for sync output (--email option)"
msgstr ""

#: ../satellite_tools/satsync.py:2262
msgid "do not remove rpms when importing from local dump"
msgstr ""

#: ../satellite_tools/satsync.py:2264
msgid ""
"the fully qualified domain name of the master Satellite. Valid with --mount-"
"point only. Required if you want to import org data and channel permissions."
msgstr ""

#: ../satellite_tools/satsync.py:2274
#, python-format
msgid "ERROR: these arguments make no sense in this context (try --help): %s"
msgstr ""

#. An SQL error is fatal... crash and burn
#: ../satellite_tools/satsync.py:2286
#, python-format
msgid "ERROR: Can't connect to the database: %s"
msgstr ""

#: ../satellite_tools/satsync.py:2287
msgid "ERROR: Check if your database is running."
msgstr ""

#: ../satellite_tools/satsync.py:2322
#, python-format
msgid "ERROR: --debug-level takes an in integer value within the range %s."
msgstr ""

#: ../satellite_tools/satsync.py:2324
msgid "  0  - little logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2325
msgid "  1  - minimal logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2326
msgid "  2  - normal level of logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2327
msgid "  3  - lots of logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2328
msgid "  4+ - excessive logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2341
msgid "ERROR: The --master option is only valid with the --mount-point option"
msgstr ""

#: ../satellite_tools/satsync.py:2351
#, python-format
msgid "ERROR: Unable to lookup Org Id %s"
msgstr ""

#: ../satellite_tools/satsync.py:2360
msgid ""
"WARNING: --list-channels option overrides any --step option. --step ignored."
msgstr ""

#: ../satellite_tools/satsync.py:2375
#, python-format
msgid ""
"ERROR: '%s' is not a valid step. See 'man mgr-inter-sync' for more detail."
msgstr ""

#: ../satellite_tools/satsync.py:2407
msgid ""
"ERROR: No channels currently imported; try mgr-inter-sync --list-channels; "
"then mgr-inter-sync -c chn0 -c chn1..."
msgstr ""

#. int(None) --> TypeError
#. int('a')  --> ValueError
#: ../satellite_tools/satsync.py:2457 ../satellite_tools/satsync.py:2461
msgid "ERROR: --batch-size must have a value within the range: 1..50"
msgstr ""

#: ../satellite_tools/satsync.py:2469
#, python-format
msgid "ERROR: no such directory %s"
msgstr ""

#: ../satellite_tools/satsync.py:2474
msgid "Error Codes: Returned codes means:"
msgstr ""

#: ../satellite_tools/satsync.py:2475
msgid " -1  - Could not lock file or KeyboardInterrupt or SystemExit"
msgstr ""

#: ../satellite_tools/satsync.py:2476
msgid "  0  - User interrupted or intentional exit"
msgstr ""

#: ../satellite_tools/satsync.py:2477
msgid "  1  - attempting to run more than one instance of mgr-inter-sync."
msgstr ""

#: ../satellite_tools/satsync.py:2478
msgid "  2  - Unable to find synchronization tools."
msgstr ""

#: ../satellite_tools/satsync.py:2479
msgid "  3  - a general socket exception occurred"
msgstr ""

#: ../satellite_tools/satsync.py:2480
msgid "  4  - an SSL error occurred. Recheck your SSL settings."
msgstr ""

#: ../satellite_tools/satsync.py:2481
msgid "  5  - ISS error"
msgstr ""

#: ../satellite_tools/satsync.py:2482
msgid "  6  - unhandled exception occurred"
msgstr ""

#: ../satellite_tools/satsync.py:2483
msgid "  7  - unknown sync error"
msgstr ""

#: ../satellite_tools/satsync.py:2484
msgid "  8  - ERROR: must be root to execute"
msgstr ""

#: ../satellite_tools/satsync.py:2485
msgid "  9  - rpclib fault during synchronization init"
msgstr ""

#: ../satellite_tools/satsync.py:2486
msgid "  10 - synchronization init error"
msgstr ""

#: ../satellite_tools/satsync.py:2487
msgid "  11 - Error parsing XML stream"
msgstr ""

#: ../satellite_tools/satsync.py:2488
msgid "  12 - Channel do not exist"
msgstr ""

#: ../satellite_tools/satsync.py:2489
msgid "  13 - SQL error during importing package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:2490
msgid "  14 - SQL error during linking channel packages"
msgstr ""

#: ../satellite_tools/satsync.py:2491
msgid "  15 - SQL error during xml processing"
msgstr ""

#: ../satellite_tools/satsync.py:2492
msgid "  16 - server.mount_point not set in the configuration file"
msgstr ""

#: ../satellite_tools/satsync.py:2493
msgid ""
"  17 - SQL error during retrieving the channels already imported in the SUSE "
"Manager database"
msgstr ""

#: ../satellite_tools/satsync.py:2494
msgid "  18 - Wrong db connection string in rhn.conf"
msgstr ""

#: ../satellite_tools/satsync.py:2495
msgid "  19 - Bad arguments"
msgstr ""

#: ../satellite_tools/satsync.py:2496
msgid "  20 - Could not connect to db."
msgstr ""

#: ../satellite_tools/satsync.py:2497
msgid "  21 - Bad debug level"
msgstr ""

#: ../satellite_tools/satsync.py:2498
msgid "  22 - Not valid step"
msgstr ""

#: ../satellite_tools/satsync.py:2499
msgid "  24 - no such file"
msgstr ""

#: ../satellite_tools/satsync.py:2500
msgid "  25 - no such directory"
msgstr ""

#: ../satellite_tools/satsync.py:2501
msgid "  26 - mount_point does not exist"
msgstr ""

#: ../satellite_tools/satsync.py:2502
msgid "  27 - No such org"
msgstr ""

#: ../satellite_tools/satsync.py:2503
msgid "  28 - error: --master is only valid with --mount-point"
msgstr ""

#: ../satellite_tools/satsync.py:2510
#, python-format
msgid "ERROR: unknown dump version, try one of %s"
msgstr ""
0707010000008A000081B40000000000000000000000016290A0C1000115BE000000000000000000000000000000000000001B00000000spacewalk-backend/po/sk.po    # SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
#
# Translators:
# Mike Karas <zoliqe@gmail.com>, 2005.
msgid ""
msgstr ""
"Project-Id-Version: Spacewalk\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-10-16 13:34+0200\n"
"PO-Revision-Date: 2020-09-25 13:48+0000\n"
"Last-Translator: Ferdinand Galko <galko.ferdinand@gmail.com>\n"
"Language-Team: Slovak <https://l10n.opensuse.org/projects/uyuni/backend/sk/"
">\n"
"Language: sk\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: Weblate 3.6.1\n"

#: ../server/apacheAuth.py:66
#, python-format
msgid "incomplete proxy authentication token: %s"
msgstr "neÃºplnÃ½ token overenia proxy: %s"

#: ../server/apacheAuth.py:84
#, python-format
msgid "Sent proxy signature %s does not match ours %s."
msgstr "ZaslanÃ½ podpis proxy %s nezodpovedÃ¡ nÃ¡Å¡mu %s."

#: ../server/apacheAuth.py:119
msgid "declined proxy authentication"
msgstr "zamietnutÃ© overenie proxy"

#: ../server/apacheRequest.py:59
#, python-format
msgid "Invalid request received (%s)."
msgstr "PrijatÃ¡ neplatnÃ¡ poÅ¾iadavka (%s)."

#: ../server/apacheRequest.py:120
#, python-format
msgid ""
"IMPORTANT MESSAGE FOLLOWS:\n"
"%s"
msgstr ""
"DÃ”LEÅ½ITÃ SPRÃVA NASLEDUJE:\n"
"%s"

#: ../server/apacheRequest.py:149
#, python-format
msgid ""
"While running '%s': caught\n"
"%s : %s\n"
msgstr ""
"PoÄas behu '%s': zachytenÃ©\n"
"%s : %s\n"

#: ../server/apacheRequest.py:606
#, python-format
msgid "Invalid URI %s"
msgstr "NeplatnÃ© URI %s"

#: ../server/configFilesHandler.py:129 ../server/handlers/app/packages.py:192
#: ../server/handlers/xmlrpc/registration.py:215
#: ../server/handlers/xmlrpc/registration.py:1168
#: ../server/handlers/xmlrpc/registration.py:1307
#, python-format
msgid ""
"\n"
"                   %s Account has been deactivated on this server.\n"
"                   Please contact your Org administrator for more help."
msgstr ""
"\n"
"                   Na tomto serveri bol ÃºÄet %s deaktivovanÃ½.\n"
"                   Pre ÄalÅ¡iu pomoc kontaktujte administrÃ¡tora svojej "
"organizÃ¡cie."

#: ../server/handlers/applet/applet.py:78
#, python-brace-format
msgid "Your system was not found in the {PRODUCT_NAME} database"
msgstr "VÃ¡Å¡ systÃ©m sa nenaÅ¡iel v databÃ¡ze {PRODUCT_NAME}"

#: ../server/handlers/sat/auth.py:45
msgid "ISS is disabled on this server."
msgstr "Na tomto serveri je ISS zakÃ¡zanÃ©."

#: ../server/handlers/sat/auth.py:50
#, python-format
msgid "Server \"%s\" is not enabled for ISS."
msgstr "Server \"%s\" nie je povolenÃ½ pre ISS."

#: ../server/handlers/xmlrpc/errata.py:64
#, python-format
msgid "Expected a package name, not: %s"
msgstr "OÄakÃ¡vanÃ½ nÃ¡zov balÃ­ka, nie: %s"

#: ../server/handlers/xmlrpc/errata.py:115
#, python-format
msgid "Expected a package, not: %s"
msgstr "OÄakÃ¡vanÃ½ balÃ­k, nie: %s"

#: ../server/handlers/xmlrpc/proxy.py:65
#, python-format
msgid "SUSE Manager Proxy service not enabled for server profile: \"%s\""
msgstr "SluÅ¾ba SUSE Manager Proxy nie je povolenÃ¡ pre profil servera: \"%s\""

#: ../server/handlers/xmlrpc/proxy.py:85
msgid "Invalid session key"
msgstr "NeplatnÃ½ kÄ¾ÃºÄ sedenia"

#: ../server/handlers/xmlrpc/proxy.py:93
msgid "This server ID no longer exists"
msgstr "Toto ID servera uÅ¾ neexistuje"

#: ../server/handlers/xmlrpc/queue.py:433
#, python-format
msgid "Invalid action value type %s (%s)"
msgstr "NeplatnÃ½ typ hodnoty akcie %s (%s)"

#: ../server/handlers/xmlrpc/queue.py:464
#, python-format
msgid "Action %s does not belong to server %s"
msgstr "Akcia %s nepatrÃ­ k serveru %s"

#: ../server/handlers/xmlrpc/registration.py:194
msgid "Required data missing"
msgstr "ChÃ½bajÃº poÅ¾adovanÃ© dÃ¡ta"

#: ../server/handlers/xmlrpc/registration.py:198
msgid "Required members missing"
msgstr "ChÃ½bajÃº poÅ¾adovanÃ­ Älenovia"

#: ../server/handlers/xmlrpc/registration.py:207
msgid "Attempt to register a system to an invalid username"
msgstr "Pokus o registrÃ¡ciu systÃ©mu na neplatnÃ© pouÅ¾Ã­vateÄ¾skÃ© meno"

#: ../server/handlers/xmlrpc/registration.py:839
msgid "Invalid system release version requested"
msgstr "PoÅ¾aduje sa neplatnÃ¡ verzia vydania systÃ©mu"

#: ../server/handlers/xmlrpc/registration.py:1063
msgid ""
"Unable to find a valid network interface, both ipaddr and ip6addr not found."
msgstr ""
"Nepodarilo sa nÃ¡jsÅ¥ platnÃ© sieÅ¥ovÃ© rozhranie, ipaddr a ip6addr sa nenaÅ¡li."

#: ../server/handlers/xmlrpc/registration.py:1115
#, python-brace-format
msgid "{PRODUCT_NAME} Welcome Message"
msgstr "UvÃ­tacia sprÃ¡va {PRODUCT_NAME}"

#: ../server/handlers/xmlrpc/registration.py:1125
msgid "Privacy Statement"
msgstr "VyhlÃ¡senie o ochrane sÃºkromia"

#: ../server/handlers/xmlrpc/registration.py:1146
msgid "Expected a dictionary as a product argument"
msgstr "OÄakÃ¡vanÃ½ slovnÃ­k ako argument produktu"

#: ../server/handlers/xmlrpc/registration.py:1374
#, python-format
msgid "Invalid value '%s' for %s (%s)"
msgstr "NeplatnÃ¡ hodnota '%s' pre %s (%s)"

#: ../server/handlers/xmlrpc/scap.py:104
msgid "Invalid system_id/action_id pair."
msgstr "NeplatnÃ½ pÃ¡r system_id/action_id."

#: ../server/handlers/xmlrpc/up2date.py:233
#, python-format
msgid "Invalid value %s (%s)"
msgstr "NeplatnÃ¡ hodnota %s (%s)"

#: ../server/importlib/userAuth.py:98
msgid "You are not authorized to manage packages in the null org"
msgstr "NemÃ¡te oprÃ¡vnenie spravovaÅ¥ balÃ­ky v null org"

#: ../server/importlib/userAuth.py:103
#, python-format
msgid "You are not allowed to manage packages in the %s org"
msgstr "NemÃ¡te oprÃ¡vnenie spravovaÅ¥ balÃ­ky v %s org"

#: ../server/importlib/userAuth.py:121
msgid "You are not allowed to perform administrative tasks"
msgstr "NemÃ¡te oprÃ¡vnenie vykonÃ¡vaÅ¥ administratÃ­vne Ãºlohy"

#: ../server/importlib/userAuth.py:144
#, python-format
msgid ""
"You are not allowed to manage channel %s, or that channel does not exist"
msgstr "NemÃ¡te oprÃ¡vnenie spravovaÅ¥ kanÃ¡l %s, alebo tento kanÃ¡l neexistuje"

#: ../server/importlib/userAuth.py:204
#, python-format
msgid ""
"\n"
"               %s Account has been deactivated on this server.\n"
"               Please contact your Org administrator for more help."
msgstr ""
"\n"
"               Na tomto serveri bol ÃºÄet %s deaktivovanÃ½.\n"
"               Pre ÄalÅ¡iu pomoc kontaktujte administrÃ¡tora svojej "
"organizÃ¡cie."

#: ../server/rhnChannel.py:1992
#, python-format
msgid ""
"Your account does not have access to any channels matching "
"(release='%(release)s', arch='%(arch)s')%(www_activation)s"
msgstr ""
"VÃ¡Å¡ ÃºÄet nemÃ¡ prÃ­stup k Å¾iadnym kanÃ¡lom, ktorÃ© zodpovedajÃº "
"(vydanie='%(release)s', arch='%(arch)s')%(www_activation)s"

#: ../server/rhnChannel.py:2002
msgid ""
"\n"
"If you have a registration number, please register with it first at http://"
"www.redhat.com/apps/activate/ and then try again.\n"
"\n"
msgstr ""
"\n"
"Ak mÃ¡te registraÄnÃ© ÄÃ­slo, zaregistrujte sa s nÃ­m najskÃ´r na http://www."
"redhat.com/apps/activate/ a potom skÃºste znova.\n"
"\n"

#: ../server/rhnChannel.py:2012
#, python-format
msgid "Insufficient subscription permissions for release (%s, %s"
msgstr "NedostatoÄnÃ© prÃ¡va predplatnÃ©ho na vydanie (%s, %s"

#. Various messages that can be reused
#.
#. bretm 02/07/2007 -- when we have better old-client documentation, probably
#. will be safe to get rid of all this crap
#: ../server/rhnChannel.py:2276 ../server/rhnChannel.py:2287
#: ../server/rhnChannel.py:2302
msgid "System Registered but Inactive"
msgstr "SystÃ©m je registrovanÃ½, ale neaktÃ­vny"

#: ../server/rhnChannel.py:2277
#, python-format
msgid ""
"\n"
"Invalid Architecture and OS release combination (%s, %s).\n"
"Your system has been registered, but will not receive updates\n"
"because it is not subscribed to a channel. If you have not yet\n"
"activated your product for service, please visit our website at:\n"
"\n"
"     http://www.redhat.com/apps/activate/\n"
"\n"
"...to activate your product."
msgstr ""
"\n"
"NeplatnÃ¡ kombinÃ¡cia architektÃºry a vydania OS (%s, %s).\n"
"VÃ¡Å¡ systÃ©m bol zaregistrovanÃ½, ale nebude dostÃ¡vaÅ¥ aktualizÃ¡cie,\n"
"pretoÅ¾e nie je prihlÃ¡senÃ½ ku kanÃ¡lu. Ak ste eÅ¡te svoj produkt\n"
"neaktivovali pre servis, prosÃ­m, navÅ¡tÃ­vte naÅ¡u webovÃº strÃ¡nku na:\n"
"\n"
"     http://www.redhat.com/apps/activate/\n"
"\n"
"...na aktivÃ¡ciu vÃ¡Å¡ho produktu."

#: ../server/rhnChannel.py:2288
#, python-format
msgid ""
"\n"
"Invalid Architecture and OS release combination (%s, %s).\n"
"Your system has been registered, but will not receive updates\n"
"because it could not be subscribed to a base channel.\n"
"Please contact your organization administrator for assistance.\n"
msgstr ""
"\n"
"NeplatnÃ¡ kombinÃ¡cia architektÃºry a vydania OS (%s, %s).\n"
"VÃ¡Å¡ systÃ©m bol zaregistrovanÃ½, ale nebude dostÃ¡vaÅ¥ aktualizÃ¡cie,\n"
"pretoÅ¾e sa nemohol prihlÃ¡siÅ¥ k zÃ¡kladnÃ©mu kanÃ¡lu.\n"
"PoÅ¾iadajte o pomoc administrÃ¡tora svojej organizÃ¡cie.\n"

#: ../server/rhnChannel.py:2295
#, python-format
msgid ""
"\n"
"  This system has been successfully registered, but is not yet entitled\n"
"  to service.  To entitle this system to service, login to the web site at:\n"
"\n"
"  %(entitlement_url)s\n"
msgstr ""
"\n"
"  Tento systÃ©m bol ÃºspeÅ¡ne zaregistrovanÃ½, ale zatiaÄ¾ nie je oprÃ¡vnenÃ½ na "
"sluÅ¾bu.\n"
"  Na oprÃ¡vnenie tohto systÃ©mu na servis sa prihlÃ¡ste na webovej strÃ¡nke:\n"
"\n"
"  %(entitlement_url)s\n"

#: ../server/rhnChannel.py:2303
#, python-format
msgid ""
"\n"
"  This system has been successfully registered, but no service entitlements\n"
"  were available.  To entitle this system to service, login to the web site "
"at:\n"
"\n"
"  %(entitlement_url)s\n"
msgstr ""
"\n"
"  Tento systÃ©m bol ÃºspeÅ¡ne zaregistrovanÃ½, ale neboli k dispozÃ­cii Å¾iadne "
"oprÃ¡vnenia\n"
"  na sluÅ¾bu.  Na oprÃ¡vnenie tohto systÃ©mu na servis sa prihlÃ¡ste na webovej "
"strÃ¡nke:\n"
"\n"
"  %(entitlement_url)s\n"

#: ../server/rhnHandler.py:62
msgid "Please run rhn_register as root on this client"
msgstr "ProsÃ­m, spustite rhn_register ako sprÃ¡vca systÃ©mu na tomto klientovi"

#: ../server/rhnHandler.py:75
#, python-format
msgid "Service not enabled for system profile: \"%s\""
msgstr "SluÅ¾ba nie je povolenÃ¡ pre systÃ©movÃ½ profil: \"%s\""

#: ../server/rhnPackage.py:49 ../server/rhnPackage.py:87
#: ../server/rhnPackage.py:107 ../server/rhnPackage.py:158
#, python-format
msgid "Invalid RPM package %s requested"
msgstr "PoÅ¾aduje sa neplatnÃ½ balÃ­k RPM %s"

#: ../server/rhnPackage.py:112
msgid "Package not found"
msgstr "BalÃ­k nebol nÃ¡jdenÃ½"

#: ../server/rhnServer/server_class.py:97
#, python-format
msgid "Architecture `%s' is not supported"
msgstr "ArchitektÃºra `%s' nie je podporovanÃ¡"

#: ../server/rhnServer/server_token.py:78
#, python-format
msgid "Token `%s' has more than one base channel assigned"
msgstr "Token `%s' mÃ¡ priradenÃ½ viac ako jeden zÃ¡kladnÃ½ kanÃ¡l"

#: ../server/rhnServer/server_token.py:80
msgid "Conflicting base channels"
msgstr "KonfliktnÃ© zÃ¡kladnÃ© kanÃ¡ly"

#: ../server/rhnServer/server_token.py:190
#, python-format
msgid "Failed to add server to group %s"
msgstr "Zlyhalo pridanie servera do skupiny %s"

#: ../server/rhnServer/server_token.py:503
#, python-format
msgid "Maximum usage count of %s reached"
msgstr "Dosiahol sa maximÃ¡lny poÄet pouÅ¾itÃ­ %s"

#: ../server/rhnServer/server_token.py:744
msgid ""
"Stacking of re-registration tokens with different base entitlements is not "
"supported"
msgstr ""
"Skladanie tokenov opÃ¤tovnej registrÃ¡cie s rÃ´znymi zÃ¡kladnÃ½mi oprÃ¡vneniami "
"nie je podporovanÃ©"

#: ../server/rhnServer/server_token.py:811
#, python-format
msgid "Could not find token '%s'"
msgstr "Nepodarilo sa nÃ¡jsÅ¥ token '%s'"

#. Cannot use activation keys from different orgs
#: ../server/rhnServer/server_token.py:843
msgid "Tokens from mismatching orgs"
msgstr "Å½etÃ³ny z nezhodujÃºcich sa organizÃ¡ciÃ­"

#. Two tokens with different kickstart sessions
#: ../server/rhnServer/server_token.py:853
msgid "Kickstart session mismatch"
msgstr "NesÃºlad sedenia kickstart"

#: ../server/rhnServer/server_token.py:877
msgid "Stacking of re-registration tokens is not supported"
msgstr "Skladanie tokenov opÃ¤tovnej registrÃ¡cie nie je podporovanÃ©"

#: ../server/rhnUser.py:289 ../server/rhnUser.py:292
msgid "Invalid username/password combination"
msgstr "NeplatnÃ¡ kombinÃ¡cia pouÅ¾Ã­vateÄ¾skÃ©ho mena/hesla"

#. nope, not reserved either
#: ../server/rhnUser.py:467
#, python-format
msgid "Username `%s' has not been reserved"
msgstr "PouÅ¾Ã­vateÄ¾skÃ© meno `%s' nebolo rezervovanÃ©"

#. New accounts have to specify an e-mail address
#: ../server/rhnUser.py:473
msgid "E-mail address not specified"
msgstr "E-mailovÃ¡ adresa nie je uvedenÃ¡"

#: ../server/rhnUser.py:509
#, python-format
msgid "username should be at least %d characters"
msgstr "pouÅ¾Ã­vateÄ¾skÃ© meno by malo maÅ¥ najmenej %d znakov"

#: ../server/rhnUser.py:512
#, python-format
msgid "username should be less than %d characters"
msgstr "pouÅ¾Ã­vateÄ¾skÃ© meno by malo maÅ¥ menej ako %d znakov"

#: ../server/rhnUser.py:523
#, python-format
msgid "username = `%s', invalid character `%s'"
msgstr "pouÅ¾Ã­vateÄ¾skÃ© meno = `%s', neplatnÃ½ znak `%s'"

#: ../server/rhnUser.py:542
#, python-format
msgid "Please limit your e-mail address to %s chars"
msgstr "ProsÃ­m, obmedzte svoju e-mailovÃº adresu na %s znakov"

#: ../server/rhnUser.py:623
#, python-format
msgid "password must be at least %d characters"
msgstr "heslo musÃ­ maÅ¥ najmenej %d znakov"

#: ../server/rhnUser.py:626
#, python-format
msgid "Password must be shorter than %d characters"
msgstr "Heslo musÃ­ byÅ¥ kratÅ¡ie ako %d znakov"

#: ../server/rhnUser.py:644
#, python-format
msgid "password contains character `%s'"
msgstr "heslo obsahuje znak `%s'"

#: ../server/rhnUser.py:651
#, python-format
msgid "username should be at least %d characters long"
msgstr "pouÅ¾Ã­vateÄ¾skÃ© meno by malo byÅ¥ najmenej %d znakov dlhÃ©"

#: ../server/rhnUser.py:662
#, python-format
msgid "Cannot register usernames ending with %s"
msgstr "Nie je moÅ¾nÃ© zaregistrovaÅ¥ pouÅ¾Ã­vateÄ¾skÃ© menÃ¡ konÄiace s %s"

#. 0-999: Red Hat client/client-like interaction errors:
#: ../common/rhnException.py:53
msgid "This does not appear to be a valid username."
msgstr "NezdÃ¡ sa, Å¾e je to platnÃ© pouÅ¾Ã­vateÄ¾skÃ© meno."

#: ../common/rhnException.py:54
msgid "Invalid username and password combination."
msgstr "NeplatnÃ¡ kombinÃ¡cia pouÅ¾Ã­vateÄ¾skÃ©ho mena a hesla."

#: ../common/rhnException.py:55
msgid "This login is already taken, or the password is incorrect."
msgstr "Toto prihlasovacie meno je uÅ¾ obsadenÃ©, alebo je heslo nesprÃ¡vne."

#: ../common/rhnException.py:56
msgid "Permission denied."
msgstr "PrÃ­stup zamietnutÃ½."

#: ../common/rhnException.py:57
msgid "Object not found."
msgstr "Objekt nebol nÃ¡jdenÃ½."

#: ../common/rhnException.py:58
msgid "Invalid System Digital ID."
msgstr "NeplatnÃ© digitÃ¡lne ID systÃ©mu."

#: ../common/rhnException.py:59
msgid "Invalid System Credentials."
msgstr "NeplatnÃ© prihlasovanie Ãºdaje do systÃ©mu."

#: ../common/rhnException.py:60
msgid "Could not retrieve user data from database."
msgstr "Nepodarilo zÃ­skaÅ¥ z databÃ¡zy pouÅ¾Ã­vateÄ¾skÃ© dÃ¡ta."

#: ../common/rhnException.py:61
msgid "Valid username required."
msgstr "VyÅ¾aduje sa platnÃ© pouÅ¾Ã­vateÄ¾skÃ© meno."

#: ../common/rhnException.py:62
msgid "Valid password required."
msgstr "VyÅ¾aduje sa platnÃ© heslo."

#: ../common/rhnException.py:63
msgid "Minimum username length violation."
msgstr "NedodrÅ¾anie minimÃ¡lnej dÄºÅ¾ky pouÅ¾Ã­vateÄ¾skÃ©ho mena."

#: ../common/rhnException.py:64
msgid "Minimum password length violation."
msgstr "NedodrÅ¾anie minimÃ¡lnej dÄºÅ¾ky hesla."

#: ../common/rhnException.py:65
msgid "The username contains invalid characters."
msgstr "PouÅ¾Ã­vateÄ¾skÃ© meno obsahuje neplatnÃ© znaky."

#: ../common/rhnException.py:66
msgid "File not found."
msgstr "SÃºbor nebol nÃ¡jdenÃ½."

#: ../common/rhnException.py:67
msgid "Architecture and OS version combination is not supported."
msgstr "KombinÃ¡cia architektÃºry a verzie OS nie je podporovanÃ¡."

#: ../common/rhnException.py:68
msgid "Could not retrieve system data from database."
msgstr "Nepodarilo zÃ­skaÅ¥ z databÃ¡zy systÃ©movÃ© dÃ¡ta."

#: ../common/rhnException.py:69
msgid "Invalid arguments passed to function."
msgstr "Funkcii boli odovzdanÃ© neplatnÃ© argumenty."

#: ../common/rhnException.py:70
msgid "Unable to retrieve requested entry."
msgstr "PoÅ¾adovanÃº poloÅ¾ku sa nepodarilo zÃ­skaÅ¥."

#: ../common/rhnException.py:71
msgid "Could not update database entry."
msgstr "Nepodarilo sa aktualizovaÅ¥ poloÅ¾ku databÃ¡zy."

#: ../common/rhnException.py:72
msgid "Unsupported server architecture."
msgstr "NepodporovanÃ¡ architektÃºra servera."

#: ../common/rhnException.py:73
#, python-format
msgid ""
"\n"
"     The anonymous server functionality is no longer available.\n"
"\n"
"     Please re-register this system by running mgr_register as root.\n"
"     Please visit https://%(hostname)s/rhn/systems/SystemEntitlements.do\n"
"     or login at https://%(hostname)s, and from the \"Overview\" tab,\n"
"     select \"Subscription Management\" to enable the service for this "
"system.\n"
"     "
msgstr ""
"\n"
"     Funkcia anonymnÃ©ho servera uÅ¾ nie je k dispozÃ­cii.\n"
"\n"
"     Znova zaregistrujte tento systÃ©m spustenÃ­m mgr_register ako root.\n"
"     ProsÃ­m navÅ¡tÃ­vte https://%(hostname)s/rhn/systems/SystemEntitlements."
"do\n"
"     alebo sa prihlÃ¡ste na https://%(hostname)s a z karty \"PrehÄ¾ad\" "
"vyberte\n"
"     \"SprÃ¡va predplatnÃ©ho\" na aktivÃ¡ciu sluÅ¾by pre tento systÃ©m.\n"
"     "

#: ../common/rhnException.py:81
msgid "Record not available in the database."
msgstr "ZÃ¡znam nie je dostupnÃ½ v databÃ¡ze."

#: ../common/rhnException.py:82
msgid "Invalid value for entry."
msgstr "NeplatnÃ¡ hodnota pre poloÅ¾ku."

#: ../common/rhnException.py:83
#, python-format
msgid ""
"\n"
"     This system does not have a valid entitlement for SUSE Manager.\n"
"     Please visit https://%(hostname)s/rhn/systems/SystemEntitlements.do\n"
"     or login at https://%(hostname)s, and from the \"Overview\" tab,\n"
"     select \"Subscription Management\" to enable the service for this "
"system.\n"
"     "
msgstr ""
"\n"
"     Tento systÃ©m nemÃ¡ platnÃ© oprÃ¡vnenie pre SUSE Manager.\n"
"     ProsÃ­m navÅ¡tÃ­vte https://%(hostname)s/rhn/systems/SystemEntitlements."
"do\n"
"     alebo sa prihlÃ¡ste na https://%(hostname)s a z karty \"PrehÄ¾ad\" "
"vyberte\n"
"     \"SprÃ¡va predplatnÃ©ho\"vna aktivÃ¡ciu sluÅ¾by pre tento systÃ©m.\n"
"     "

#: ../common/rhnException.py:89
msgid "Channel error"
msgstr "Chyba kanÃ¡la"

#: ../common/rhnException.py:90
msgid "Client session token is invalid."
msgstr "Token klientskÃ©ho sedenia je neplatnÃ½."

#: ../common/rhnException.py:91
msgid "Client session token has expired."
msgstr "PlatnosÅ¥ tokenu klientskÃ©ho sedenia vyprÅ¡ala."

#: ../common/rhnException.py:92
msgid "You are not authorized to retrieve the requested object."
msgstr "NemÃ¡te oprÃ¡vnenie zÃ­skaÅ¥ poÅ¾adovanÃ½ objekt."

#: ../common/rhnException.py:93
msgid "Invalid action"
msgstr "NeplatnÃ¡ akcia"

#: ../common/rhnException.py:94
msgid "You are not allowed to perform administrative tasks on this system."
msgstr "NemÃ¡te oprÃ¡vnenie vykonÃ¡vaÅ¥ administratÃ­vne Ãºlohy v tomto systÃ©me."

#: ../common/rhnException.py:96
msgid "The system is already subscribed to the specified channel."
msgstr "SystÃ©m je uÅ¾ prihlÃ¡senÃ½ k zadanÃ©mu kanÃ¡lu."

#: ../common/rhnException.py:97
msgid "The system is not currently subscribed to the specified channel."
msgstr "SystÃ©m nie je momentÃ¡lne prihlÃ¡senÃ½ k zadanÃ©mu kanÃ¡lu."

#: ../common/rhnException.py:98
msgid "The specified channel does not exist."
msgstr "ZadanÃ½ kanÃ¡l neexistuje."

#: ../common/rhnException.py:99
msgid "Invalid channel version."
msgstr "NeplatnÃ¡ verzia kanÃ¡la."

#: ../common/rhnException.py:100
msgid ""
"\n"
"     User group membership limits exceeded.\n"
"\n"
"     The current settings for your account do not allow you to add another\n"
"     user account. Please check with the organization administrator for "
"your\n"
"     account if the maximum number of users allowed to subscribe to server "
"needs\n"
"     to be changed.\n"
"     "
msgstr ""
"\n"
"     Limity Älenstva v pouÅ¾Ã­vateÄ¾skÃ½ch skupinÃ¡ch boli prekroÄenÃ©.\n"
"\n"
"     AktuÃ¡lne nastavenia vÃ¡Å¡ho ÃºÄtu vÃ¡m neumoÅ¾ÅˆujÃº pridaÅ¥ ÄalÅ¡Ã­ "
"pouÅ¾Ã­vateÄ¾skÃ½\n"
"     ÃºÄet. ProsÃ­m, overte si u administrÃ¡tora organizÃ¡cie pre vÃ¡Å¡ ÃºÄet, Äi "
"sa\n"
"     musÃ­ zmeniÅ¥ maximÃ¡lny poÄet pouÅ¾Ã­vateÄ¾ov, ktorÃ­ sa mÃ´Å¾u prihlÃ¡siÅ¥ k "
"serveru.\n"
"     k serveru.\n"
"     "

#: ../common/rhnException.py:108
msgid ""
"\n"
"     System group membership limits exceeded.\n"
"\n"
"     The current settings for your account do not allow you to add another\n"
"     system profile. Please check with the organization administrator for "
"your\n"
"     account for modifying the maximum number of system profiles that can "
"be\n"
"     subscribed to your account.\n"
"     "
msgstr ""
"\n"
"     Limity Älenstva v systÃ©movÃ½ch skupinÃ¡ch boli prekroÄenÃ©.\n"
"\n"
"     AktuÃ¡lne nastavenia vÃ¡Å¡ho ÃºÄtu vÃ¡m neumoÅ¾ÅˆujÃº pridaÅ¥ ÄalÅ¡Ã­ systÃ©movÃ½\n"
"     profil. ProsÃ­m, obrÃ¡Å¥te sa na administrÃ¡tora organizÃ¡cie pre vÃ¡Å¡ ÃºÄet,\n"
"     ak chcete upraviÅ¥ maximÃ¡lny poÄet systÃ©movÃ½ch profilov, ktorÃ© je mÃ´Å¾u "
"byÅ¥\n"
"     prihlÃ¡senÃ© k vÃ¡Å¡mu ÃºÄtu.\n"
"     "

#: ../common/rhnException.py:116
msgid ""
"\n"
"     Invalid architecture.\n"
"\n"
"     The architecture of the package is not supported by\n"
"     "
msgstr ""
"\n"
"     NeplatnÃ¡ architektÃºra.\n"
"\n"
"     ArchitektÃºru balÃ­ka nie je podporovanÃ¡\n"
"     "

#: ../common/rhnException.py:121
msgid "Invalid RPM header"
msgstr "NeplatnÃ¡ hlaviÄka RPM"

#: ../common/rhnException.py:122
msgid ""
"\n"
"    This system is already registered as a Salt Minion. If you want to "
"register it as a traditional client\n"
"    please delete it first via the web UI or API and then register it using "
"the traditional tools.\n"
"    "
msgstr ""
"\n"
"    Tento systÃ©m je uÅ¾ zaregistrovanÃ½ ako Salt Minion. Ak ho chcete "
"zaregistrovaÅ¥ ako tradiÄnÃ©ho klienta,\n"
"    najskÃ´r ho vymaÅ¾te cez webovÃ© UI alebo API a potom ho zaregistrujte "
"pomocou tradiÄnÃ½ch nÃ¡strojov.\n"
"    "

#. For the uploading tools
#: ../common/rhnException.py:127
msgid "Invalid information uploaded to the server"
msgstr "Na server boli nahranÃ© neplatnÃ© informÃ¡cie"

#: ../common/rhnException.py:128
msgid "Error uploading network interfaces configuration."
msgstr "Chyba pri nahrÃ¡vanÃ­ konfigurÃ¡cie sieÅ¥ovÃ½ch rozhranÃ­."

#: ../common/rhnException.py:129
msgid ""
"\n"
"     Package Upload Failed due to uniqueness constraint violation.\n"
"     Make sure the package does not have any duplicate dependencies or\n"
"     does not already exists on the server\n"
"     "
msgstr ""
"\n"
"     Nahranie balÃ­ka zlyhalo z dÃ´vodu poruÅ¡enia obmedzenÃ­ jedineÄnosti.\n"
"     Uistite sa, Å¾e balÃ­k nemÃ¡ duplicitnÃ© zÃ¡vislosti alebo uÅ¾ neexistuje\n"
"     na serveri.\n"
"     "

#: ../common/rhnException.py:134
msgid ""
"\n"
"     The --force rhnpush option is disabled on this server.\n"
"     Please contact your SUSE Manager administrator for more help.\n"
"     "
msgstr ""
"\n"
"     Na tomto serveri je zakÃ¡zanÃ¡ voÄ¾ba --force rhnpush.\n"
"     Pre ÄalÅ¡iu pomoc kontaktujte svojho administrÃ¡tora SUSE Manager.\n"
"     "

#. 60-70: token errors
#: ../common/rhnException.py:140
msgid ""
"\n"
"     The activation token specified could not be found on the server.\n"
"     Please retry with a valid key.\n"
"     "
msgstr ""
"\n"
"     ZadanÃ½ aktivaÄnÃ½ token nebolo moÅ¾nÃ© nÃ¡jsÅ¥ na serveri.\n"
"     ProsÃ­m, skÃºste to znova s platnÃ½m kÄ¾ÃºÄom.\n"
"     "

#: ../common/rhnException.py:144
msgid "Too many systems registered using this registration token"
msgstr ""
"Pomocou tohto registraÄnÃ©ho tokenu bolo zaregistrovanÃ½ch prÃ­liÅ¡ veÄ¾a systÃ©mov"

#: ../common/rhnException.py:145
msgid "Token contains invalid, obsoleted or insufficient settings"
msgstr "Token obsahuje neplatnÃ©, zastaranÃ© alebo nedostatoÄnÃ© nastavenia"

#: ../common/rhnException.py:146
msgid "Conflicting activation tokens"
msgstr "KonfliktnÃ© aktivaÄnÃ© tokeny"

#. 70-80: channel subscription errors
#: ../common/rhnException.py:149
msgid ""
"\n"
"     No matching base channel found for your system.\n"
"     "
msgstr ""
"\n"
"     Pre vÃ¡Å¡ systÃ©m sa nenaÅ¡iel Å¾iadny zodpovedajÃºci zÃ¡kladnÃ½ kanÃ¡l.\n"
"     "

#: ../common/rhnException.py:152
msgid ""
"\n"
"     You do not have subscription permission to the designated channel.\n"
"     Please refer to your organization's channel or organization\n"
"     administrators for further details.\n"
"     "
msgstr ""
"\n"
"     NemÃ¡te oprÃ¡vnenie predplatnÃ©ho k urÄenÃ©mu kanÃ¡lu.\n"
"     ÄŽalÅ¡ie podrobnosti nÃ¡jdete v kanÃ¡li svojej organizÃ¡cie alebo\n"
"     administrÃ¡tora organizÃ¡cie.\n"
"     "

#: ../common/rhnException.py:157
msgid "You can not unsubscribe from base channel."
msgstr "NemÃ´Å¾ete sa odhlÃ¡siÅ¥ zo zÃ¡kladnÃ©ho kanÃ¡la."

#: ../common/rhnException.py:158
msgid "SUSE Manager or Proxy channel can not be subscribed."
msgstr "Nie je moÅ¾nÃ© prihlÃ¡siÅ¥ sa k SUSE Manager alebo Proxy kanÃ¡lu."

#. 80-90: server group errors
#: ../common/rhnException.py:161
msgid "There was an error while trying to join the system to its groups"
msgstr "Pri pokuse o pripojenie systÃ©mu k jeho skupinÃ¡m sa vyskytla chyba"

#. 90-100: entitlement errors
#: ../common/rhnException.py:164
msgid "Unable to entitle system"
msgstr "Nie je moÅ¾nÃ© priradiÅ¥ oprÃ¡vnenie systÃ©mu"

#. 100-109: e-mail and uuid related faults
#: ../common/rhnException.py:167
msgid "Maximum e-mail length violation."
msgstr "NedodrÅ¾anie maximÃ¡lnej dÄºÅ¾ky e-mailu."

#: ../common/rhnException.py:168
msgid "This system has been previously registered."
msgstr "Tento systÃ©m bol predtÃ½m zaregistrovanÃ½."

#: ../common/rhnException.py:169
msgid "Invalid username"
msgstr "NeplatnÃ© pouÅ¾Ã­vateÄ¾skÃ© meno"

#. 140-159 applet errors
#: ../common/rhnException.py:172
msgid "Unable to look up server"
msgstr "Server sa nepodarilo vyhÄ¾adaÅ¥"

#. 160-179: OSAD errors
#: ../common/rhnException.py:175
msgid "Required argument is missing"
msgstr "ChÃ½ba poÅ¾adovanÃ½ argument"

#. 600-699: RHEL5+ EN errors
#: ../common/rhnException.py:178
msgid "No entitlement information tied to hardware"
msgstr "S hardvÃ©rom nie sÃº spojenÃ© Å¾iadne informÃ¡cie o oprÃ¡vneniach"

#: ../common/rhnException.py:179
msgid "Installation number is not entitling"
msgstr "InÅ¡talaÄnÃ© ÄÃ­slo nie je oprÃ¡vÅˆujÃºce"

#. 700-799: Additional user input verification errors.
#: ../common/rhnException.py:182
msgid "Maximum username length violation"
msgstr "NedodrÅ¾anie maximÃ¡lnej dÄºÅ¾ky pouÅ¾Ã­vateÄ¾skÃ©ho mena"

#: ../common/rhnException.py:183
msgid "Maximum password length violation"
msgstr "NedodrÅ¾anie maximÃ¡lnej dÄºÅ¾ky hesla"

#: ../common/rhnException.py:184
msgid "This user has read only API access. Action denied."
msgstr "Tento pouÅ¾Ã­vateÄ¾ mÃ¡ prÃ­stup iba na ÄÃ­tanie API. Akcia zamietnutÃ¡."

#: ../common/rhnException.py:186
msgid "System Name cannot be less than 1 character"
msgstr "NÃ¡zov systÃ©mu nesmie maÅ¥ menej ako 1 znak"

#. 1000-1999: Proxy specific errors:
#. issued by a Proxy to the client
#: ../common/rhnException.py:190
msgid "SUSE Manager Proxy error."
msgstr "Chyba SUSE Manager Proxy."

#: ../common/rhnException.py:191
msgid "SUSE Manager Proxy unable to login."
msgstr "SUSE Manager Proxy sa nemÃ´Å¾e prihlÃ¡siÅ¥."

#. issued by a SUSE Manager Server/Satellite to the proxy
#: ../common/rhnException.py:193
msgid ""
"\n"
"     SUSE Manager Proxy system ID does not match a Spacewalk Proxy Server\n"
"     in the database.\n"
"     "
msgstr ""
"\n"
"     ID systÃ©mu SUSE Manager Proxy nezodpovedÃ¡ Spacewalk Proxy Server\n"
"     v databÃ¡ze.\n"
"     "

#: ../common/rhnException.py:197
msgid "SUSE Manager Proxy session token is invalid."
msgstr "Token sedenia SUSE Manager Proxy je neplatnÃ½."

#: ../common/rhnException.py:198
msgid "SUSE Manager Proxy session token has expired."
msgstr "PlatnosÅ¥ tokenu sedenia SUSE Manager Proxy vyprÅ¡ala."

#. 2000-2999: Red Hat Satellite specific errors:
#: ../common/rhnException.py:202
msgid ""
"\n"
"      user creation is not allowed via mgr_register;\n"
"     please contact your sysadmin to have your account created.\n"
"     "
msgstr ""
"\n"
"      vytvÃ¡ranie pouÅ¾Ã­vateÄ¾ov nie je povolenÃ© cez mgr_register;\n"
"     kontaktujte svojho sprÃ¡vcu systÃ©mov a poÅ¾iadajte ho o vytvorenie ÃºÄtu.\n"
"     "

#: ../common/rhnException.py:206
msgid ""
"\n"
"     This SUSE Manager server is not allowed to use Inter Server Sync on "
"this server\n"
"     "
msgstr ""
"\n"
"     Tento server SUSE Manager nemÃ¡ povolenie na tomto serveri pouÅ¾Ã­vaÅ¥ "
"Inter Server Sync\n"
"     "

#: ../common/rhnException.py:209
msgid ""
"\n"
"     Inter Server Sync is disabled on this SUSE Manager Server.\n"
"     "
msgstr ""
"\n"
"     Inter Server Sync je zakÃ¡zanÃ½ na tomto SUSE Manager Server.\n"
"     "

#. 3000-3999: XML dumper errors:
#: ../common/rhnException.py:214
msgid "Invalid datatype passed"
msgstr "OdovzdanÃ½ neplatnÃ½ dÃ¡tovÃ½ typ"

#: ../common/rhnException.py:215
msgid "Unable to retrieve channel"
msgstr "Nie je moÅ¾nÃ© zÃ­skaÅ¥ kanÃ¡l"

#: ../common/rhnException.py:216
msgid "Unable to retrieve package"
msgstr "Nie je moÅ¾nÃ© zÃ­skaÅ¥ balÃ­k"

#: ../common/rhnException.py:217
msgid "Unable to retrieve erratum"
msgstr "Nie je moÅ¾nÃ© zÃ­skaÅ¥ tlaÄovÃº chybu"

#: ../common/rhnException.py:218
msgid "File is missing"
msgstr "SÃºbor chÃ½ba"

#: ../common/rhnException.py:219
msgid "Function retrieval error"
msgstr "Chyba naÄÃ­tania funkcie"

#: ../common/rhnException.py:220
msgid "Function execution error"
msgstr "Chyba vykonÃ¡vania funkcie"

#: ../common/rhnException.py:221
msgid "Missing version string"
msgstr "ChÃ½ba reÅ¥azec verzie"

#: ../common/rhnException.py:222
msgid "Invalid version string"
msgstr "NeplatnÃ½ reÅ¥azec verzie"

#: ../common/rhnException.py:223
msgid "Mismatching versions"
msgstr "NezhodnÃ© verzie"

#: ../common/rhnException.py:224
msgid "Invalid channel version"
msgstr "NeplatnÃ¡ verzia kanÃ¡la"

#: ../common/rhnException.py:225
msgid "No comps file for channel"
msgstr "Å½iadny sÃºbor comps pre kanÃ¡l"

#: ../common/rhnException.py:226
msgid "Unable to retrieve comps file"
msgstr "Nie je moÅ¾nÃ© zÃ­skaÅ¥ sÃºbor comps"

#. 4000 - 4999: config management errors
#: ../common/rhnException.py:229
msgid "Configuration action missing"
msgstr "ChÃ½ba konfiguraÄnÃ¡ akcia"

#: ../common/rhnException.py:230
msgid "File too large"
msgstr "SÃºbor je prÃ­liÅ¡ veÄ¾kÃ½"

#: ../common/rhnException.py:231
msgid "File contains binary data"
msgstr "SÃºbor obsahuje binÃ¡rne dÃ¡ta"

#: ../common/rhnException.py:232
msgid "Configuration channel is not empty"
msgstr "KonfiguraÄnÃ½ kanÃ¡l nie je prÃ¡zdny"

#: ../common/rhnException.py:233
msgid "Permission error"
msgstr "Chyba oprÃ¡vnenÃ­"

#: ../common/rhnException.py:234
msgid "Content missing for configuration file"
msgstr "ChÃ½ba obsah konfiguraÄnÃ©ho sÃºboru"

#: ../common/rhnException.py:235
msgid "Template delimiters not specified"
msgstr "OddeÄ¾ovaÄe Å¡ablÃ³n nie sÃº uvedenÃ©"

#: ../common/rhnException.py:236
msgid "Configuration channel does not exist"
msgstr "KonfiguraÄnÃ½ kanÃ¡l neexistuje"

#: ../common/rhnException.py:237
msgid "Configuration channel already exists"
msgstr "KonfiguraÄnÃ½ kanÃ¡l uÅ¾ existuje"

#: ../common/rhnException.py:238
msgid "File missing from configuration channel"
msgstr "ChÃ½ba sÃºbor z konfiguraÄnÃ©ho kanÃ¡la"

#: ../common/rhnException.py:239
msgid "Different revision of this file is uploaded"
msgstr "NahranÃ¡ je inÃ¡ revÃ­zia tohto sÃºboru"

#: ../common/rhnException.py:240
msgid "File already uploaded to configuration channel"
msgstr "SÃºbor uÅ¾ bol nahranÃ½ na konfiguraÄnÃ½ kanÃ¡l"

#: ../common/rhnException.py:241
msgid "File size exceeds remaining quota space"
msgstr "VeÄ¾kosÅ¥ sÃºboru presahuje zostÃ¡vajÃºci priestor kvÃ³ty"

#: ../common/rhnException.py:242
msgid "Full path of file must be specified"
msgstr "MusÃ­ byÅ¥ zadanÃ¡ ÃºplnÃ¡ cesta k sÃºboru"

#: ../common/rhnException.py:243
msgid "Invalid revision number"
msgstr "NeplatnÃ© ÄÃ­slo revÃ­zie"

#: ../common/rhnException.py:244
msgid "Cannot compare files of different file type"
msgstr "Nie je moÅ¾nÃ© porovnÃ¡vaÅ¥ sÃºbory rÃ´znych sÃºborovÃ½ch typov"

#. 5000 - 5999: client content uploading errors
#. 5000 - 5099: crash reporting errors
#: ../common/rhnException.py:248
msgid "Crash information is invalid or incomplete"
msgstr "InformÃ¡cie o zlyhanÃ­ sÃº neplatnÃ© alebo neÃºplnÃ©"

#: ../common/rhnException.py:249
msgid "Crash file information is invalid or incomplete"
msgstr "InformÃ¡cie o zlyhanÃ­ sÃºboru sÃº neplatnÃ© alebo neÃºplnÃ©"

#: ../common/rhnException.py:250
msgid "Error composing crash directory path"
msgstr "Chyba pri vytvÃ¡ranÃ­ cesty adresÃ¡ra zlyhania"

#: ../common/rhnException.py:251
msgid "Error composing crash file path"
msgstr "Chyba pri vytvÃ¡ranÃ­ cesty sÃºboru zlyhania"

#: ../common/rhnException.py:252 ../common/rhnException.py:259
msgid "Invalid content encoding"
msgstr "NeplatnÃ© kÃ³dovanie obsahu"

#: ../common/rhnException.py:253
msgid "Invalid crash name"
msgstr "NeplatnÃ½ nÃ¡zov zlyhania"

#: ../common/rhnException.py:254
msgid "Crash reporting is disabled for this organization"
msgstr "HlÃ¡senie zlyhanÃ­ je pre tÃºto organizÃ¡ciu zakÃ¡zanÃ©"

#. 5100 - 5199: scap results reporting error
#: ../common/rhnException.py:256
msgid "SCAP results file transfer is invalid or incomplete"
msgstr "Prenos sÃºboru vÃ½sledkov SCAP je neplatnÃ½ alebo neÃºplnÃ½"

#: ../common/rhnException.py:257
msgid "Error composing directory path for detailed SCAP results"
msgstr "Chyba pri vytvÃ¡ranÃ­ cesty adresÃ¡ra pre podrobnÃ© vÃ½sledky SCAP"

#: ../common/rhnException.py:258
msgid "Error composing file path for detailed SCAP results"
msgstr "Chyba pri vytvÃ¡ranÃ­ cesty sÃºboru pre podrobnÃ© vÃ½sledky SCAP"

#: ../common/rhnException.py:306
msgid ""
"\n"
"     An error has occurred while processing your request. If this problem\n"
"     persists please enter a bug report at scc.suse.com.\n"
"     If you choose to submit the bug report, please be sure to include\n"
"     details of what you were trying to do when this error occurred and\n"
"     details on how to reproduce this problem.\n"
msgstr ""
"\n"
"     Pri spracovanÃ­ vaÅ¡ej poÅ¾iadavky sa vyskytla chyba. Ak problÃ©m\n"
"     pretrvÃ¡va, zadajte, prosÃ­m, hlÃ¡senie o chybe na scc.suse.com.\n"
"     Ak sa rozhodnete odoslaÅ¥ hlÃ¡senie o chybe, nezabudnite uviesÅ¥\n"
"     podrobnosti o tom, Äo ste sa pokÃºsili urobiÅ¥, keÄ sa vyskytla tÃ¡to\n"
"     chyba, a podrobnosti o tom, ako tento problÃ©m reprodukovaÅ¥.\n"

#: ../common/rhnException.py:358
#, python-format
msgid ""
"Error Message:\n"
"    %s\n"
msgstr ""
"ChybovÃ¡ sprÃ¡va:\n"
"    %s\n"

#: ../common/rhnException.py:360
#, python-format
msgid "Error Class Code: %s\n"
msgstr "KÃ³d triedy chyby: %s\n"

#: ../common/rhnException.py:363
#, python-format
msgid "Error Class Info: %s\n"
msgstr "InformÃ¡cia o triede chÃ½b: %s\n"

#: ../common/rhnException.py:365
#, python-format
msgid "Explanation: %s"
msgstr "Vysvetlenie: %s"

#: ../common/rhnTB.py:205
#, python-format
msgid "ERROR: %s %s: %s"
msgstr "CHYBA: %s %s: %s"

#: ../common/rhnTB.py:207
#, python-format
msgid "TRACEBACK: %s"
msgstr "TRACEBACK: %s"

#: ../satellite_tools/disk_dumper/iss.py:1294
#: ../satellite_tools/disk_dumper/iss.py:1298
#, python-format
msgid "format of %s should be at least YYYYMMDD.\n"
msgstr "formÃ¡t %s by mal byÅ¥ aspoÅˆ RRRRMMDD.\n"

#: ../satellite_tools/messages.py:26
#, python-format
msgid ""
"\n"
"ERROR: executing step %s. Error is:\n"
"%s\n"
msgstr ""
"\n"
"CHYBA: vykonanie kroku %s. Chyba je:\n"
"%s\n"

#: ../satellite_tools/messages.py:31
#, python-format
msgid ""
"\n"
"ERROR: there was a problem accessing the channel data from your temporary\n"
"       repository. Did you migrate all of the data from the channel ISOs\n"
"       do this directory? If so, please recheck the channels ISOs, ensure\n"
"       that you have them all, and then iteratively remount and repopulate\n"
"       the temporary repository (%s).\n"
msgstr ""
"\n"
"CHYBA: pri prÃ­stupe k Ãºdajom kanÃ¡la z doÄasnÃ©ho ÃºloÅ¾iska sa vyskytol\n"
"       problÃ©m. Migrovali ste vÅ¡etky dÃ¡ta z kanÃ¡lovÃ½ch ISO do tohto\n"
"       adresÃ¡ra? Ak Ã¡no, znovu skontrolujte kanÃ¡lovÃ© ISO, uistite sa,\n"
"       Å¾e ich mÃ¡te vÅ¡etky a potom iteratÃ­vne znovu pripojte a znovu\n"
"       naplÅˆte doÄasnÃ© ÃºloÅ¾isko (%s).\n"

#: ../satellite_tools/messages.py:39
#, python-format
msgid ""
"\n"
"ERROR: there was a problem synchronizing the information.\n"
"       Error message: %s\n"
msgstr ""
"\n"
"CHYBA: pri synchronizÃ¡cii informÃ¡ciÃ­ sa vyskytol problÃ©m.\n"
"       ChybovÃ¡ sprÃ¡va: %s\n"

#: ../satellite_tools/messages.py:44
#, python-format
msgid ""
"\n"
"ERROR: There was a problem communicating with the ISS Master.\n"
"       Depending on the specific error details, please review your "
"configuration,\n"
"       basic network connectivity, and/or name resolution, and try again.\n"
"       Error message: %s\n"
msgstr ""
"\n"
"CHYBA: Pri komunikÃ¡cii s ISS Master sa vyskytol problÃ©m.\n"
"       V zÃ¡vislosti od konkrÃ©tnych podrobnostÃ­ o chybe skontrolujte svoju "
"konfigurÃ¡ciu,\n"
"       zÃ¡kladnÃ© sieÅ¥ovÃ© pripojenie a/alebo rozlÃ­Å¡enie nÃ¡zvov a skÃºste "
"znova.\n"
"       ChybovÃ¡ sprÃ¡va: %s\n"

#: ../satellite_tools/messages.py:51
#, python-format
msgid ""
"\n"
"ERROR: There was a problem communicating with the ISS Master.\n"
"       If the master satellite is older than v5.3, it does not have ISS "
"capability.\n"
"       Otherwise, depending on the specific error details, please review "
"your\n"
"       configuration, basic network connectivity, and/or name resolution, "
"and try again.\n"
"       Error message: %s\n"
msgstr ""
"\n"
"CHYBA: Pri komunikÃ¡cii s ISS Master sa vyskytol problÃ©m.\n"
"       Ak je hlavnÃ½ satellite starÅ¡Ã­ ako v5.3, nemÃ¡ schopnosÅ¥ ISS.\n"
"       Inak v zÃ¡vislosti od konkrÃ©tnych podrobnostÃ­ o chybe skontrolujte "
"svoju\n"
"       konfigurÃ¡ciu, zÃ¡kladnÃ© sieÅ¥ovÃ© pripojenie a/alebo rozlÃ­Å¡enie nÃ¡zvov a "
"skÃºste znova.\n"
"       ChybovÃ¡ sprÃ¡va: %s\n"

#: ../satellite_tools/messages.py:59
#, python-format
msgid ""
"\n"
"ERROR: a child-channel cannot be synced without its parent being synced as\n"
"       well. A parent needs to be either (a) previously synced or (b) "
"synced\n"
"       in tandem with the desired child-channel. Missing parents for this\n"
"       transaction:\n"
"       %s\n"
msgstr ""
"\n"
"CHYBA: kanÃ¡l potomka nie je moÅ¾nÃ© synchronizovaÅ¥ bez synchronizÃ¡cie jeho\n"
"       rodiÄa. RodiÄ musÃ­ byÅ¥ buÄ (a) predtÃ½m synchronizovanÃ½ alebo (b) "
"synchronizovanÃ½\n"
"       spolu s poÅ¾adovanÃ½m kanÃ¡lom potomka. ChÃ½bajÃºci rodiÄia pre tÃºto\n"
"       transakciu:\n"
"       %s\n"

#: ../satellite_tools/messages.py:67
#, python-format
msgid ""
"\n"
"ERROR: you are not entitled to sync a channel in this set of channels.\n"
"Please contact your SUSE Manager contact\n"
"%s"
msgstr ""
"\n"
"CHYBA: nemÃ¡te prÃ¡vo synchronizovaÅ¥ kanÃ¡l v tejto skupine kanÃ¡lov.\n"
"ObrÃ¡Å¥te sa na svoj kontakt pre SUSE Manager\n"
"%s"

#: ../satellite_tools/messages.py:72
#, python-format
msgid "  ERROR: not enough free space (%s KB) on device."
msgstr "  CHYBA: na zariadenÃ­ nie je dostatok voÄ¾nÃ©ho miesta (%s KB)."

#: ../satellite_tools/messages.py:74
#, python-format
msgid "    %3d/%s Fetch successful: %s (%s bytes)"
msgstr "    %3d/%s Stiahnutie ÃºspeÅ¡nÃ©: %s (%s bajtov)"

#: ../satellite_tools/messages.py:75
#, python-format
msgid "    Extinct package:  %s"
msgstr "    ZaniknutÃ½ balÃ­k:  %s"

#: ../satellite_tools/messages.py:76
#, python-format
msgid "   Total size: %s"
msgstr "   CelkovÃ¡ veÄ¾kosÅ¥: %s"

#: ../satellite_tools/messages.py:77
#, python-format
msgid "      Downloaded %s of %s. Estimated remaining time: %s"
msgstr "      StiahnutÃ½ch %s z %s. OdhadovanÃ½ zostÃ¡vajÃºci Äas: %s"

#: ../satellite_tools/messages.py:78
#, python-format
msgid "    Fetch unsuccessful: %s"
msgstr "    Stiahnutie neÃºspeÅ¡nÃ©: %s"

#: ../satellite_tools/messages.py:79
#, python-format
msgid "   RPM fetch summary: %s"
msgstr "   Zhrnutie stiahnutia RPM: %s"

#: ../satellite_tools/messages.py:80
#, python-format
msgid "       success: %d"
msgstr "       Ãºspech: %d"

#: ../satellite_tools/messages.py:81
#, python-format
msgid "       failed:  %d"
msgstr "       neÃºspeÅ¡nÃ©:  %d"

#: ../satellite_tools/messages.py:82
#, python-format
msgid "       extinct: %d"
msgstr "       zaniknutÃ©: %d"

#: ../satellite_tools/messages.py:84
#, python-format
msgid "   Retrieving / parsing *relevant* package metadata: %s (%s)"
msgstr "   ZÃ­skavanie / analyzovanie metadÃ¡t *relevantnÃ½ch* balÃ­kov: %s (%s)"

#: ../satellite_tools/messages.py:85
#, python-format
msgid "   Retrieving / parsing errata data: %s (%s)"
msgstr "   ZÃ­skavanie / analyzovanie dÃ¡t tlaÄovÃ½ch chÃ½b: %s (%s)"

#: ../satellite_tools/messages.py:86
#, python-format
msgid "   Retrieving / parsing kickstart data: %s (%s)"
msgstr "   ZÃ­skavanie / analyzovanie dÃ¡t kickstart: %s (%s)"

#: ../satellite_tools/messages.py:87
#, python-format
msgid "   Retrieving / parsing kickstart tree files: %s (%s)"
msgstr "   ZÃ­skavanie / analyzovanie sÃºborov stromov kickstart: %s (%s)"

#: ../satellite_tools/messages.py:88
#, python-format
msgid "   Importing *relevant* package metadata: %s (%s)"
msgstr "   Importovanie metadÃ¡t *relevantnÃ½ch* balÃ­kov: %s (%s)"

#: ../satellite_tools/messages.py:89
msgid "   * WARNING: this may be a slow process."
msgstr "   * UPOZORNENIE: toto mÃ´Å¾e byÅ¥ pomalÃ½ proces."

#: ../satellite_tools/messages.py:90
msgid "Linking packages to channels"
msgstr "Prepojenie balÃ­kov ku kanÃ¡lom"

#: ../satellite_tools/messages.py:91
#, python-format
msgid "   Importing *relevant* errata: %s (%s)"
msgstr "   Importovanie *relevantnÃ½ch* tlaÄovÃ½ch chÃ½b: %s (%s)"

#: ../satellite_tools/messages.py:92
msgid "   No new kickstartable tree to import"
msgstr "   Å½iadny novÃ½ strom schopnÃ½ kickstart na import"

#: ../satellite_tools/messages.py:93
#, python-format
msgid "Importing kickstartable trees (%d)"
msgstr "Importovanie stromov schopnÃ½ch kickstart (%d)"

#: ../satellite_tools/messages.py:94
#, python-format
msgid "Imported kickstartable trees (%d)"
msgstr "ImportovanÃ© stromy schopnÃ© kickstart (%d)"

#: ../satellite_tools/reposync.py:111 ../satellite_tools/satsync.py:439
msgid "+++ sending log as an email +++"
msgstr "+++ odosielanie zÃ¡znamu ako e-mail +++"

#: ../satellite_tools/reposync.py:114
#, python-format
msgid "%s sync. report from %s"
msgstr "%s sync. sprÃ¡va od %s"

#: ../satellite_tools/reposync.py:124 ../satellite_tools/satsync.py:449
msgid "+++ email requested, but there is nothing to send +++"
msgstr "+++ poÅ¾adovanÃ½ e-mail, ale nie je Äo +++"

#: ../satellite_tools/rhn_satellite_activate.py:198
#, python-format
msgid ""
"\"%s\" (specified in commandline)\n"
"could not be opened and read:\n"
"%s"
msgstr ""
"\"%s\" (uvedenÃ© v prÃ­kazovom riadku)\n"
"sa nepodarilo otvoriÅ¥ a ÄÃ­taÅ¥:\n"
"%s"

#: ../satellite_tools/rhn_satellite_activate.py:205
#, python-format
msgid ""
"\"%s\" could not be opened\n"
"and/or written to:\n"
"%s"
msgstr ""
"\"%s\" sa nepodarilo otvoriÅ¥\n"
"a/alebo zapÃ­saÅ¥ do:\n"
"%s"

#: ../satellite_tools/satsync.py:258
#, python-format
msgid "No handler for step %s"
msgstr "Å½iadna obsluha pre krok %s"

#. Try one more time - this time it should be faster since
#. everything should be cached
#: ../satellite_tools/satsync.py:270
msgid "Environment changed, trying again..."
msgstr "Prostredie sa zmenilo, opÃ¤tovnÃ© skÃºÅ¡anie..."

#: ../satellite_tools/satsync.py:277
msgid "ERROR: Encountered IntegrityError: \n"
msgstr "CHYBA: Vyskytla sa ChybaIntegrity: \n"

#: ../satellite_tools/satsync.py:285
msgid "Repeated failures"
msgstr "OpakovanÃ© zlyhania"

#: ../satellite_tools/satsync.py:290
#, python-format
msgid ""
"    Import complete:\n"
"        Begin time: %s\n"
"        End time:   %s\n"
"        Elapsed:    %s\n"
"          "
msgstr ""
"    Import je dokonÄenÃ½:\n"
"        ZaÄiatoÄnÃ½ Äas: %s\n"
"        KoncovÃ½ Äas:   %s\n"
"        UplynulÃ½:    %s\n"
"          "

#: ../satellite_tools/satsync.py:311
msgid "hours"
msgstr "hodiny"

#: ../satellite_tools/satsync.py:311
msgid "minutes"
msgstr "minÃºty"

#: ../satellite_tools/satsync.py:311
msgid "seconds"
msgstr "sekundy"

#: ../satellite_tools/satsync.py:357
msgid ""
"ERROR: The dump is missing package data, use --no-rpms to skip this step or "
"fix the content to include package data."
msgstr ""
"CHYBA: Na vÃ½pise chÃ½bajÃº dÃ¡ta balÃ­kov, pouÅ¾ite --no-rpms na preskoÄenie "
"tohto kroku alebo opravte obsah tak, aby obsahoval dÃ¡ta balÃ­kov."

#. the orgs() method doesn't exist; that's fine we just
#. won't sync the orgs
#: ../satellite_tools/satsync.py:404
msgid "The SUSE Manager master does not support syncing orgs data."
msgstr "SUSE Manager master nepodporuje synchronizÃ¡ciu Ãºdajov organizÃ¡ciÃ­."

#: ../satellite_tools/satsync.py:404
msgid "Skipping..."
msgstr "Preskakovanie..."

#: ../satellite_tools/satsync.py:442
#, python-format
msgid "SUSE Manager Inter Server sync. report from %s"
msgstr "SprÃ¡va synchronizÃ¡cie pre SUSE Manager Inter Server od %s"

#: ../satellite_tools/satsync.py:521
msgid " - file-system synchronization"
msgstr " - synchronizÃ¡cia sÃºborovÃ©ho systÃ©mu"

#: ../satellite_tools/satsync.py:533 ../satellite_tools/satsync.py:541
msgid " - live synchronization"
msgstr " - Å¾ivÃ¡ synchronizÃ¡cia"

#: ../satellite_tools/satsync.py:534
#, python-brace-format
msgid ""
"ERROR: Live content synchronizing with RHN Classic Hosted is no longer "
"supported.\n"
"Please use the cdn-sync command instead unless you are attempting to sync "
"from another {PRODUCT_NAME} via Inter-Server-Sync (ISS), or from local "
"content on disk via Channel Dump ISOs."
msgstr ""
"CHYBA: SynchronizÃ¡cia Å¾ivÃ©ho obsahu so serverom RHN Classic Hosted uÅ¾ nie je "
"podporovanÃ¡.\n"
"Namiesto toho pouÅ¾ite prÃ­kaz cdn-sync, pokiaÄ¾ sa nepokÃºÅ¡ate synchronizovaÅ¥ s "
"ÄalÅ¡Ã­m {PRODUCT_NAME} cez Inter-Satelite-Sync (ISS) alebo s lokÃ¡lnym obsahom "
"na disku cez Channel Dump ISO."

#: ../satellite_tools/satsync.py:542
#, python-format
msgid "   url: %s"
msgstr "   url: %s"

#: ../satellite_tools/satsync.py:543
#, python-format
msgid "   debug/output level: %s"
msgstr "   ladiaca/vÃ½stupnÃ¡ ÃºroveÅˆ: %s"

#: ../satellite_tools/satsync.py:553
msgid "ERROR: this server must be registered with SUSE Manager."
msgstr "CHYBA: tento server musÃ­ byÅ¥ zaregistrovanÃ½ v SUSE Manager."

#: ../satellite_tools/satsync.py:575
#, python-format
msgid "Retrieving / parsing %s data"
msgstr "ZÃ­skavanie / analyzovanie dÃ¡t %s"

#: ../satellite_tools/satsync.py:585 ../satellite_tools/satsync.py:600
msgid "*** SYSTEM INTERRUPT CALLED ***"
msgstr "*** VOLANÃ‰ SYSTÃ‰MOVÃ‰ PRERUÅ ENIE ***"

#: ../satellite_tools/satsync.py:593
msgid "ERROR: fatal parser exception occurred "
msgstr "CHYBA: vyskytla sa kritickÃ¡ vÃ½nimka analyzÃ¡tora "

#: ../satellite_tools/satsync.py:594
#, python-format
msgid "(line: %s, col: %s msg: %s)"
msgstr "(riadok: %s, stÄºpec: %s sprÃ¡va: %s)"

#: ../satellite_tools/satsync.py:598
#, python-format
msgid "ERROR: parser exception occurred: %s"
msgstr "CHYBA: vyskytla sa vÃ½nimka analyzÃ¡tora: %s"

#: ../satellite_tools/satsync.py:603
msgid "ERROR: exception (during parse) occurred: "
msgstr "CHYBA: vyskytla sa vÃ½nimka (poÄas analÃ½zy): "

#: ../satellite_tools/satsync.py:604
#, python-format
msgid ""
"   Encountered some errors with %s data (see logs (%s) for more information)"
msgstr ""
"   Vyskytli sa nejakÃ© chyby s dÃ¡tami %s (ÄalÅ¡ie informÃ¡cie nÃ¡jdete v "
"zÃ¡znamoch (%s))"

#: ../satellite_tools/satsync.py:606
#, python-format
msgid "   Encountered some errors with %s data:"
msgstr "   Vyskytli sa nejakÃ© chyby s dÃ¡tami %s:"

#: ../satellite_tools/satsync.py:607
#, python-format
msgid "   ------- %s PARSE/IMPORT ERROR -------"
msgstr "   ------- CHYBA ANALÃZY / IMPORTU %s -------"

#: ../satellite_tools/satsync.py:609
msgid "   ---------------------------------------"
msgstr "   ---------------------------------------"

#: ../satellite_tools/satsync.py:612
#, python-format
msgid "%s data complete"
msgstr "dÃ¡ta %s sÃº kompletnÃ©"

#: ../satellite_tools/satsync.py:665
msgid "Retrieving / parsing channel data"
msgstr "ZÃ­skavanie / analyzovanie dÃ¡t kanÃ¡la"

#: ../satellite_tools/satsync.py:718
msgid "Channel data complete"
msgstr "DÃ¡ta kanÃ¡la sÃº kompletnÃ©"

#: ../satellite_tools/satsync.py:736
#, python-format
msgid "%10s import from %s"
msgstr "%10s import z %s"

#: ../satellite_tools/satsync.py:739
#, python-format
msgid "%10s import from %s - %s"
msgstr "%10s import z %s - %s"

#: ../satellite_tools/satsync.py:743
#, python-format
msgid "%10s"
msgstr "%10s"

#: ../satellite_tools/satsync.py:750
msgid "p"
msgstr "p"

#: ../satellite_tools/satsync.py:752
msgid "."
msgstr "."

#: ../satellite_tools/satsync.py:758
msgid "   p = previously imported/synced channel"
msgstr "   p = predtÃ½m importovanÃ½/synchronizovanÃ½ kanÃ¡l"

#: ../satellite_tools/satsync.py:759
msgid "   . = channel not yet imported/synced"
msgstr "   . = kanÃ¡l eÅ¡te nebol importovanÃ½/synchronizovanÃ½"

#: ../satellite_tools/satsync.py:765
msgid "   e = channel no longer supported (end-of-service)"
msgstr "   e = kanÃ¡l uÅ¾ nie je podporovanÃ½ (koniec sluÅ¾by)"

#: ../satellite_tools/satsync.py:767
msgid "   ? = channel label invalid --- typo?"
msgstr "   ? = Å¡tÃ­tok kanÃ¡la je neplatnÃ½ --- preklep?"

#: ../satellite_tools/satsync.py:771
#, python-format
msgid "   %s:"
msgstr "   %s:"

#: ../satellite_tools/satsync.py:772
#, python-format
msgid "      %s %-40s %4s %s"
msgstr "      %s %-40s %4s %s"

#: ../satellite_tools/satsync.py:773
msgid "base-channels"
msgstr "zÃ¡kladnÃ©-kanÃ¡ly"

#: ../satellite_tools/satsync.py:786 ../satellite_tools/satsync.py:1603
msgid "NONE RELEVANT"
msgstr "Å½IADNE RELEVANTNÃ‰"

#: ../satellite_tools/satsync.py:808
msgid "end-of-service"
msgstr "koniec-sluÅ¾by"

#: ../satellite_tools/satsync.py:809
msgid "e"
msgstr "e"

#: ../satellite_tools/satsync.py:815
msgid "   typos:"
msgstr "   preklepy:"

#: ../satellite_tools/satsync.py:816
msgid "?"
msgstr "?"

#: ../satellite_tools/satsync.py:831
#, python-format
msgid "XXX: imported channels: %s"
msgstr "XXX: importovanÃ© kanÃ¡ly: %s"

#: ../satellite_tools/satsync.py:832
#, python-format
msgid "XXX:   cached channels: %s"
msgstr "XXX:   kanÃ¡ly vo vyrovnÃ¡vacej pamÃ¤ti: %s"

#: ../satellite_tools/satsync.py:837
msgid "XXX: list channels called"
msgstr "XXX: zoznam volanÃ½ch kanÃ¡lov"

#: ../satellite_tools/satsync.py:855
msgid "ERROR: these channels either do not exist or are not available:"
msgstr "CHYBA: tieto kanÃ¡ly buÄ neexistujÃº, alebo nie sÃº k dispozÃ­cii:"

#: ../satellite_tools/satsync.py:859
#, python-format
msgid "       (to see a list of channel labels: %s --list-channels)"
msgstr "       (pozrieÅ¥ si zoznam Å¡tÃ­tkov kanÃ¡lov: %s --list-channels)"

#: ../satellite_tools/satsync.py:904
#, python-format
msgid "   Retrieving / parsing short package metadata: %s (%s)"
msgstr "   ZÃ­skavanie / analyzovanie metadÃ¡t krÃ¡tkych balÃ­kov: %s (%s)"

#: ../satellite_tools/satsync.py:965
#, python-format
msgid "Diffing package metadata (what's missing locally?): %s"
msgstr "PorovnÃ¡vanie metadÃ¡t balÃ­kov (Äo chÃ½ba lokÃ¡lne?): %s"

#: ../satellite_tools/satsync.py:971 ../satellite_tools/satsync.py:1254
msgid "Diffing:    "
msgstr "PorovnÃ¡vanie:    "

#: ../satellite_tools/satsync.py:988
msgid "ERROR: incremental dump skipped"
msgstr "CHYBA: preskoÄenÃ½ prÃ­rastkovÃ½ vÃ½pis"

#: ../satellite_tools/satsync.py:1079
msgid "Downloading rpm packages"
msgstr "SÅ¥ahovanie rpm balÃ­kov"

#: ../satellite_tools/satsync.py:1084
#, python-format
msgid "   Fetching any missing RPMs: %s (%s)"
msgstr "   SÅ¥ahovanie vÅ¡etkÃ½ch chÃ½bajÃºcich RPM: %s (%s)"

#: ../satellite_tools/satsync.py:1085 ../satellite_tools/satsync.py:1153
msgid "NONE MISSING"
msgstr "Å½IADNY NECHÃBA"

#: ../satellite_tools/satsync.py:1094
msgid "Processing rpm packages complete"
msgstr "Spracovanie rpm balÃ­kov je dokonÄenÃ©"

#: ../satellite_tools/satsync.py:1121
msgid "Downloading package metadata"
msgstr "SÅ¥ahovanie metadÃ¡t balÃ­kov"

#: ../satellite_tools/satsync.py:1146
msgid "Downloading srpm packages"
msgstr "SÅ¥ahovanie srpm balÃ­kov"

#: ../satellite_tools/satsync.py:1152
#, python-format
msgid "   Fetching any missing SRPMs: %s (%s)"
msgstr "   SÅ¥ahovanie vÅ¡etkÃ½ch chÃ½bajÃºcich SRPM: %s (%s)"

#: ../satellite_tools/satsync.py:1249
#, python-format
msgid "Diffing source package metadata (what's missing locally?): %s"
msgstr "PorovnÃ¡vanie metadÃ¡t zdrojovÃ½ch balÃ­kov (Äo chÃ½ba lokÃ¡lne?): %s"

#: ../satellite_tools/satsync.py:1260
msgid "Downloading source package metadata"
msgstr "SÅ¥ahovanie metadÃ¡t zdrojovÃ½ch balÃ­kov"

#: ../satellite_tools/satsync.py:1338 ../satellite_tools/satsync.py:2027
#, python-format
msgid "Unable to save file %s: %s"
msgstr "Nepodarilo sa uloÅ¾iÅ¥ sÃºbor %s: %s"

#. for
#. Retried a number of times and it still failed; log the
#. file as being failed and move on
#: ../satellite_tools/satsync.py:1345
#, python-format
msgid "Failed to fetch file %s"
msgstr "Zlyhalo stiahnutie sÃºboru %s"

#: ../satellite_tools/satsync.py:1350
msgid "Downloading kickstartable trees metadata"
msgstr "SÅ¥ahovanie metadÃ¡t stromov schopnÃ½ch kickstart"

#: ../satellite_tools/satsync.py:1365
msgid "Downloading kickstartable trees files"
msgstr "SÅ¥ahovanie sÃºborov stromov schopnÃ½ch kickstart"

#: ../satellite_tools/satsync.py:1504
#, python-format
msgid "Grabbing all patches for channel %s"
msgstr "ZÃ­skanie vÅ¡etkÃ½ch oprÃ¡v pre kanÃ¡l %s"

#: ../satellite_tools/satsync.py:1554
msgid "Downloading patch data"
msgstr "SÅ¥ahovanie dÃ¡t oprÃ¡v"

#: ../satellite_tools/satsync.py:1556
msgid "Forcing download of all patch data for requested channels."
msgstr "VynÃºtenie stiahnutia vÅ¡etkÃ½ch dÃ¡t oprÃ¡v pre poÅ¾adovanÃ© kanÃ¡ly."

#: ../satellite_tools/satsync.py:1571
msgid "Downloading patch data complete"
msgstr "SÅ¥ahovanie dÃ¡t oprÃ¡v je dokonÄenÃ©"

#: ../satellite_tools/satsync.py:1576 ../satellite_tools/satsync.py:1597
msgid "Downloading:"
msgstr "SÅ¥ahovanie:"

#: ../satellite_tools/satsync.py:1579
msgid " - complete"
msgstr " - dokonÄenÃ©"

#: ../satellite_tools/satsync.py:1624
msgid "Importing source package metadata"
msgstr "Importovanie metadÃ¡t zdrojovÃ½ch balÃ­kov"

#: ../satellite_tools/satsync.py:1627
msgid "Importing package metadata"
msgstr "Importovanie metadÃ¡t balÃ­kov"

#: ../satellite_tools/satsync.py:1635
msgid "Importing:  "
msgstr "Importovanie:  "

#. not in the cache
#: ../satellite_tools/satsync.py:1703
msgid ""
"Package Not Found in Cache, Clear the Cache "
"to                                  Regenerate it."
msgstr ""
"BalÃ­k sa nenaÅ¡iel vo vyrovnÃ¡vacej pamÃ¤ti, vyÄistite vyrovnÃ¡vaciu pamÃ¤Å¥ "
"do                                  Obnovte ju."

#: ../satellite_tools/satsync.py:1709
msgid "Importing channel patches"
msgstr "Importovanie oprÃ¡v kanÃ¡lov"

#: ../satellite_tools/satsync.py:1714
#, python-format
msgid "Importing %s patches for channel %s."
msgstr "Importovanie %s oprÃ¡v pre kanÃ¡l %s."

#. Incomplete configuration
#: ../satellite_tools/satsync.py:2113
msgid "ERROR: server.mount_point not set in the configuration file"
msgstr "CHYBA: server.bod_pripojenia nie je nastavenÃ½ v konfiguraÄnom sÃºbore"

#: ../satellite_tools/satsync.py:2117
#, python-format
msgid "ERROR: server.mount_point %s do not exist"
msgstr "CHYBA: server.bod_pripojenia %s neexistuje"

#: ../satellite_tools/satsync.py:2122
#, python-format
msgid "ERROR: path under server.mount_point (%s)  do not exist"
msgstr "CHYBA: cesta pod server.bod_pripojenia (%s)  neexistuje"

#: ../satellite_tools/satsync.py:2199
#, python-format
msgid "Commandline: %s"
msgstr "PrÃ­kazovÃ½ riadok: %s"

#: ../satellite_tools/satsync.py:2202
#, python-format
msgid ""
"DEBUG ONLY: max. batch-size for XML/database-import processing (1..%s).\"man "
"satellite-sync\" for more information."
msgstr ""
"IBA LADIÅ¤: max. veÄ¾kosÅ¥-dÃ¡vky pre spracovanie XML/database-import (1..%s). "
"Viac informÃ¡ciÃ­ v \"man satellite-sync\"."

#: ../satellite_tools/satsync.py:2205
msgid "alternative SSL CA Cert (fullpath to cert file)"
msgstr "alternatÃ­vny SSL CA certifikÃ¡t (ÃºplnÃ¡ cesta k certifikaÄnÃ©mu sÃºboru)"

#: ../satellite_tools/satsync.py:2207
msgid "process data for this channel only"
msgstr "spracovaÅ¥ dÃ¡ta iba pre tento kanÃ¡l"

#: ../satellite_tools/satsync.py:2209
msgid ""
"disk dump will be considered to be a full export; see \"man satellite-sync\" "
"for more information."
msgstr ""
"vÃ½pis disku sa bude povaÅ¾ovaÅ¥ za ÃºplnÃ½ export; ÄalÅ¡ie informÃ¡cie nÃ¡jdete v "
"\"man satellite-sync\"."

#: ../satellite_tools/satsync.py:2212
msgid "existing custom channels will also be synced (unless -c is used)"
msgstr ""
"existujÃºce vlastnÃ© kanÃ¡ly budÃº tieÅ¾ synchronizovanÃ© (pokiaÄ¾ sa nepouÅ¾ije -c)"

#: ../satellite_tools/satsync.py:2214
#, python-format
msgid ""
"override debug level set in /etc/rhn/rhn.conf (which is currently set at %s)."
msgstr ""
"prepÃ­saÅ¥ nastavenie Ãºrovne ladenia v /etc/rhn/rhn.conf (ktorÃ© je momentÃ¡lne "
"nastavenÃ© na %s)."

#: ../satellite_tools/satsync.py:2216
#, python-format
msgid "requested version of XML dump (default: %s)"
msgstr "poÅ¾adovanÃ¡ verzia vÃ½pisu XML (predvolenÃ©: %s)"

#: ../satellite_tools/satsync.py:2218
msgid "e-mail a report of what was synced/imported"
msgstr "poslaÅ¥ e-mailom sprÃ¡vu o tom, Äo bolo synchronizovanÃ©/importovanÃ©"

#: ../satellite_tools/satsync.py:2220
msgid "forcibly process all (not a diff of) patch metadata"
msgstr "nÃºtene spracovaÅ¥ vÅ¡etky (nie odliÅ¡nÃ©) metadÃ¡ta oprÃ¡v"

#: ../satellite_tools/satsync.py:2222
msgid "Do not use an http proxy under any circumstances."
msgstr "Za Å¾iadnych okolnostÃ­ nepouÅ¾iÅ¥ http proxy."

#: ../satellite_tools/satsync.py:2224
msgid "alternative http proxy (hostname:port)"
msgstr "alternatÃ­vne http proxy (nÃ¡zov_hostiteÄ¾a:port)"

#: ../satellite_tools/satsync.py:2226
msgid "alternative http proxy username"
msgstr "pouÅ¾Ã­vateÄ¾skÃ© meno alternatÃ­vneho http proxy"

#: ../satellite_tools/satsync.py:2228
msgid "alternative http proxy password"
msgstr "heslo alternatÃ­vneho http proxy"

#: ../satellite_tools/satsync.py:2230
msgid "parent SUSE Manager to import content from"
msgstr "rodiÄovskÃ½ SUSE Manager, z ktorÃ©ho sa mÃ¡ importovaÅ¥ obsah"

#: ../satellite_tools/satsync.py:2232
msgid "list all available channels and exit"
msgstr "vypÃ­saÅ¥ zoznam vÅ¡etkÃ½ch dostupnÃ½ch kanÃ¡lov a ukonÄiÅ¥"

#: ../satellite_tools/satsync.py:2234
msgid "help on all error codes mgr-inter-sync returns"
msgstr "pomocnÃ­k pri vÅ¡etkÃ½ch chybovÃ½ch kÃ³doch, ktorÃ© vracia mgr-inter-sync"

#: ../satellite_tools/satsync.py:2236
msgid "source mount point for import - disk update only"
msgstr "zdrojovÃ½ bod pripojenia pre import - iba aktualizÃ¡cia disku"

#: ../satellite_tools/satsync.py:2238
msgid "do not process patch data"
msgstr "nespracovÃ¡vaÅ¥ dÃ¡ta oprÃ¡v"

#: ../satellite_tools/satsync.py:2240
msgid "do not process kickstart data (provisioning only)"
msgstr "nespracovÃ¡vaÅ¥ dÃ¡ta kickstart (iba poskytovanie)"

#: ../satellite_tools/satsync.py:2242
msgid "do not process full package metadata"
msgstr "nespracovÃ¡vaÅ¥ ÃºplnÃ© metadÃ¡ta balÃ­kov"

#: ../satellite_tools/satsync.py:2244
msgid "do not download, or process any RPMs"
msgstr "nesÅ¥ahovaÅ¥ ani nespracovÃ¡vaÅ¥ Å¾iadne RPM"

#: ../satellite_tools/satsync.py:2246
msgid "turn off SSL (not recommended)"
msgstr "vypnÃºÅ¥ SSL (neodporÃºÄa sa)"

#: ../satellite_tools/satsync.py:2248
msgid "org to which the sync imports data. defaults to the admin account"
msgstr ""
"organizÃ¡cia, do ktorej synchronizÃ¡cia importuje dÃ¡ta. predvolenÃ© nastavenia "
"pre ÃºÄet administrÃ¡tora"

#: ../satellite_tools/satsync.py:2250
msgid "print the configuration and exit"
msgstr "vytlaÄiÅ¥ konfigurÃ¡ciu a ukonÄiÅ¥"

#: ../satellite_tools/satsync.py:2252
msgid "alternative server with which to connect (hostname)"
msgstr "alternatÃ­vny server, s ktorÃ½m sa moÅ¾no spojiÅ¥ (nÃ¡zov hostiteÄ¾a)"

#: ../satellite_tools/satsync.py:2254
msgid "synchronize to this step (man satellite-sync for more info)"
msgstr "synchronizovaÅ¥ s tÃ½mto krokom (viac informÃ¡ciÃ­ v man satellite-sync)"

#: ../satellite_tools/satsync.py:2256
msgid "write complete data to tempfile before streaming to remainder of app"
msgstr ""
"zapÃ­saÅ¥ kompletnÃ© dÃ¡ta do doÄasnÃ©ho sÃºboru pred streamovanÃ­m do zvyÅ¡ku "
"aplikÃ¡cie"

#: ../satellite_tools/satsync.py:2258
msgid "DEBUG ONLY: alternative path to digital system id"
msgstr "IBA LADIÅ¤: alternatÃ­vna cesta k digitÃ¡lnemu systÃ©movÃ©mu id"

#: ../satellite_tools/satsync.py:2260
msgid "alternative email address(es) for sync output (--email option)"
msgstr ""
"alternatÃ­vne emailovÃ© adresa(y) pre synchronizovanÃ½ vÃ½stup (voÄ¾ba --email)"

#: ../satellite_tools/satsync.py:2262
msgid "do not remove rpms when importing from local dump"
msgstr "neodstraÅˆovaÅ¥ rpm pri importe z lokÃ¡lneho vÃ½pisu"

#: ../satellite_tools/satsync.py:2264
msgid ""
"the fully qualified domain name of the master Satellite. Valid with --mount-"
"point only. Required if you want to import org data and channel permissions."
msgstr ""
"plne kvalifikovanÃ½ nÃ¡zov domÃ©ny hlavnÃ©ho Satellite. PlatnÃ© iba s --mount-"
"point. VyÅ¾aduje sa, ak chcete importovaÅ¥ dÃ¡ta organizÃ¡cie a oprÃ¡vnenia "
"kanÃ¡lov."

#: ../satellite_tools/satsync.py:2274
#, python-format
msgid "ERROR: these arguments make no sense in this context (try --help): %s"
msgstr ""
"CHYBA: tieto argumenty nedÃ¡vajÃº v tejto sÃºvislosti Å¾iadny zmysel (skÃºste --"
"help): %s"

#. An SQL error is fatal... crash and burn
#: ../satellite_tools/satsync.py:2286
#, python-format
msgid "ERROR: Can't connect to the database: %s"
msgstr "ERROR: NedÃ¡ sa pripojiÅ¥ k databÃ¡ze: %s"

#: ../satellite_tools/satsync.py:2287
msgid "ERROR: Check if your database is running."
msgstr "CHYBA: Skontrolujte, Äi je vaÅ¡a databÃ¡za spustenÃ¡."

#: ../satellite_tools/satsync.py:2322
#, python-format
msgid "ERROR: --debug-level takes an in integer value within the range %s."
msgstr "CHYBA: --debug-level vezme celÃ© ÄÃ­slo v rozsahu %s."

#: ../satellite_tools/satsync.py:2324
msgid "  0  - little logging/messaging."
msgstr "  0  - mÃ¡lo zaznamenÃ¡vania/odosielania sprÃ¡v."

#: ../satellite_tools/satsync.py:2325
msgid "  1  - minimal logging/messaging."
msgstr "  1  - minimÃ¡lne zaznamenÃ¡vanie/odosielanie sprÃ¡v."

#: ../satellite_tools/satsync.py:2326
msgid "  2  - normal level of logging/messaging."
msgstr "  2  - normÃ¡lna ÃºroveÅˆ zaznamenÃ¡vania/odosielania sprÃ¡v."

#: ../satellite_tools/satsync.py:2327
msgid "  3  - lots of logging/messaging."
msgstr "  3  - veÄ¾a zaznamenÃ¡vania/odosielania sprÃ¡v."

#: ../satellite_tools/satsync.py:2328
msgid "  4+ - excessive logging/messaging."
msgstr "  4+ - nadmernÃ© zaznamenÃ¡vanie/odosielanie sprÃ¡v."

#: ../satellite_tools/satsync.py:2341
msgid "ERROR: The --master option is only valid with the --mount-point option"
msgstr "CHYBA: VoÄ¾ba --master je platnÃ¡ iba s voÄ¾bou --mount-point"

#: ../satellite_tools/satsync.py:2351
#, python-format
msgid "ERROR: Unable to lookup Org Id %s"
msgstr "CHYBA: Nepodarilo sa nÃ¡jsÅ¥ Org Id %s"

#: ../satellite_tools/satsync.py:2360
msgid ""
"WARNING: --list-channels option overrides any --step option. --step ignored."
msgstr ""
"UPOZORNENIE: VoÄ¾ba --list-channels prepÃ­Å¡e akÃºkoÄ¾vek voÄ¾bu --step. --step "
"ignorovanÃ©."

#: ../satellite_tools/satsync.py:2375
#, python-format
msgid ""
"ERROR: '%s' is not a valid step. See 'man mgr-inter-sync' for more detail."
msgstr ""
"CHYBA: '%s' nie je platnÃ½ krok. ÄŽalÅ¡ie informÃ¡cie nÃ¡jdete v 'man mgr-inter-"
"sync'."

#: ../satellite_tools/satsync.py:2407
msgid ""
"ERROR: No channels currently imported; try mgr-inter-sync --list-channels; "
"then mgr-inter-sync -c chn0 -c chn1..."
msgstr ""
"CHYBA: MomentÃ¡lne nie sÃº importovanÃ© Å¾iadne kanÃ¡ly; skÃºste mgr-inter-sync --"
"list-channels; potom mgr-inter-sync -c chn0 -c chn1..."

#. int(None) --> TypeError
#. int('a')  --> ValueError
#: ../satellite_tools/satsync.py:2457 ../satellite_tools/satsync.py:2461
msgid "ERROR: --batch-size must have a value within the range: 1..50"
msgstr "CHYBA: --batch-size musÃ­ maÅ¥ hodnotu v rozsahu: 1..50"

#: ../satellite_tools/satsync.py:2469
#, python-format
msgid "ERROR: no such directory %s"
msgstr "CHYBA: adresÃ¡r %s neexistuje"

#: ../satellite_tools/satsync.py:2474
msgid "Error Codes: Returned codes means:"
msgstr "ChybovÃ© kÃ³dy: VrÃ¡tenÃ© kÃ³dy znamenajÃº:"

#: ../satellite_tools/satsync.py:2475
msgid " -1  - Could not lock file or KeyboardInterrupt or SystemExit"
msgstr ""
" -1  - Nepodarilo sa zamknÃºÅ¥ sÃºbor alebo PreruÅ¡enieKlÃ¡vesnice alebo "
"UkonÄenieSystÃ©m"

#: ../satellite_tools/satsync.py:2476
msgid "  0  - User interrupted or intentional exit"
msgstr "  0  - PouÅ¾Ã­vateÄ¾ preruÅ¡il alebo Ãºmyselne ukonÄil"

#: ../satellite_tools/satsync.py:2477
msgid "  1  - attempting to run more than one instance of mgr-inter-sync."
msgstr "  1  - pokus o spustenie viac ako jednej inÅ¡tancie mgr-inter-sync."

#: ../satellite_tools/satsync.py:2478
msgid "  2  - Unable to find synchronization tools."
msgstr "  2  - Nepodarilo sa nÃ¡jsÅ¥ synchronizaÄnÃ© nÃ¡stroje."

#: ../satellite_tools/satsync.py:2479
msgid "  3  - a general socket exception occurred"
msgstr "  3  - vyskytla sa vÅ¡eobecnÃ¡ vÃ½nimka soketu"

#: ../satellite_tools/satsync.py:2480
msgid "  4  - an SSL error occurred. Recheck your SSL settings."
msgstr "  4  - vyskytla sa chyba SSL. Prekontrolujte svoje nastavenia SSL."

#: ../satellite_tools/satsync.py:2481
msgid "  5  - ISS error"
msgstr "  5  - chyba ISS"

#: ../satellite_tools/satsync.py:2482
msgid "  6  - unhandled exception occurred"
msgstr "  6  - vyskytla sa neoÅ¡etrenÃ¡ vÃ½nimka"

#: ../satellite_tools/satsync.py:2483
msgid "  7  - unknown sync error"
msgstr "  7  - neznÃ¡ma chyba synchronizÃ¡cie"

#: ../satellite_tools/satsync.py:2484
msgid "  8  - ERROR: must be root to execute"
msgstr "  8  - CHYBA: na vykonanie musÃ­ byÅ¥ sprÃ¡vca systÃ©mu"

#: ../satellite_tools/satsync.py:2485
msgid "  9  - rpclib fault during synchronization init"
msgstr "  9  - zlyhanie rpclib poÄas inicializÃ¡cie synchronizÃ¡cie"

#: ../satellite_tools/satsync.py:2486
msgid "  10 - synchronization init error"
msgstr "  10 - chyba inicializÃ¡cie synchronizÃ¡cie"

#: ../satellite_tools/satsync.py:2487
msgid "  11 - Error parsing XML stream"
msgstr "  11 - Chyba analÃ½zy prÃºdu XML"

#: ../satellite_tools/satsync.py:2488
msgid "  12 - Channel do not exist"
msgstr "  12 - KanÃ¡l neexistuje"

#: ../satellite_tools/satsync.py:2489
msgid "  13 - SQL error during importing package metadata"
msgstr "  13 - Chyba SQL poÄas importovania metadÃ¡t balÃ­ka"

#: ../satellite_tools/satsync.py:2490
msgid "  14 - SQL error during linking channel packages"
msgstr "  14 - Chyba SQL poÄas prepÃ¡jania balÃ­kov kanÃ¡lov"

#: ../satellite_tools/satsync.py:2491
msgid "  15 - SQL error during xml processing"
msgstr "  15 - chyba SQL poÄas spracovania xml"

#: ../satellite_tools/satsync.py:2492
msgid "  16 - server.mount_point not set in the configuration file"
msgstr "  16 - server.bod_pripojenia nie je nastavenÃ© v konfiguraÄnom sÃºbore"

#: ../satellite_tools/satsync.py:2493
msgid ""
"  17 - SQL error during retrieving the channels already imported in the SUSE "
"Manager database"
msgstr ""
"  17 - chyba SQL poÄas zÃ­skavania kanÃ¡lov uÅ¾ importovanÃ½ch v databÃ¡ze SUSE "
"Manager"

#: ../satellite_tools/satsync.py:2494
msgid "  18 - Wrong db connection string in rhn.conf"
msgstr "  18 - NesprÃ¡vny reÅ¥azec pripojenia db v rhn.conf"

#: ../satellite_tools/satsync.py:2495
msgid "  19 - Bad arguments"
msgstr "  19 - ZlÃ© argumenty"

#: ../satellite_tools/satsync.py:2496
msgid "  20 - Could not connect to db."
msgstr "  20 - Nepodarilo sa pripojiÅ¥ k db."

#: ../satellite_tools/satsync.py:2497
msgid "  21 - Bad debug level"
msgstr "  21 - ZlÃ¡ ÃºroveÅˆ ladenia"

#: ../satellite_tools/satsync.py:2498
msgid "  22 - Not valid step"
msgstr "  22 - NeplatnÃ½ krok"

#: ../satellite_tools/satsync.py:2499
msgid "  24 - no such file"
msgstr "  24 - sÃºbor neexistuje"

#: ../satellite_tools/satsync.py:2500
msgid "  25 - no such directory"
msgstr "  25 - adresÃ¡r neexistuje"

#: ../satellite_tools/satsync.py:2501
msgid "  26 - mount_point does not exist"
msgstr "  26 - bod_pripojenia neexistuje"

#: ../satellite_tools/satsync.py:2502
msgid "  27 - No such org"
msgstr "  27 - OrganizÃ¡cia neexistuje"

#: ../satellite_tools/satsync.py:2503
msgid "  28 - error: --master is only valid with --mount-point"
msgstr "  28 - chyba: --master je platnÃ© iba s --mount-point"

#: ../satellite_tools/satsync.py:2510
#, python-format
msgid "ERROR: unknown dump version, try one of %s"
msgstr "CHYBA: neznÃ¡ma verzia vÃ½pisu, vyskÃºÅ¡ajte jeden z %s"

#~ msgid "Your system was not found in the RHN database"
#~ msgstr "VÃ¡Å¡ systÃ©m sa nenaÅ¡iel v databÃ¡ze RHN"

#~ msgid "ISS is disabled on this satellite."
#~ msgstr "Na tomto satellite je ISS zakÃ¡zanÃ©."

#~ msgid "Spacewalk Proxy service not enabled for server profile: \"%s\""
#~ msgstr "SluÅ¾ba Spacewalk Proxy nie je povolenÃ¡ pre profil servera: \"%s\""

#~ msgid "Red Hat Satellite Welcome Message"
#~ msgstr "UvÃ­tacia sprÃ¡va Red Hat Satellite"

#~ msgid "Red Hat Satellite Privacy Statement"
#~ msgstr "VyhlÃ¡senie o ochrane sÃºkromia Red Hat Satellite"

#~ msgid ""
#~ "ERROR: Live content synchronizing with RHN Classic Hosted is no longer "
#~ "supported.\n"
#~ "Please use the cdn-sync command instead unless you are attempting to sync "
#~ "from another Satellite via Inter-Satelite-Sync (ISS), or from local "
#~ "content on disk via Channel Dump ISOs."
#~ msgstr ""
#~ "CHYBA: SynchronizÃ¡cia Å¾ivÃ©ho obsahu so serverom RHN Classic Hosted uÅ¾ nie "
#~ "je podporovanÃ¡.\n"
#~ "Namiesto toho pouÅ¾ite prÃ­kaz cdn-sync, pokiaÄ¾ sa nepokÃºÅ¡ate "
#~ "synchronizovaÅ¥ s ÄalÅ¡Ã­m Satellite cez Inter-Satelite-Sync (ISS) alebo s "
#~ "lokÃ¡lnym obsahom na disku cez Channel Dump ISO."

#~ msgid ""
#~ "ERROR: '%s' is not a valid step. See 'man satellite-sync' for more detail."
#~ msgstr ""
#~ "CHYBA: '%s' nie je platnÃ½ krok. ÄŽalÅ¡ie informÃ¡cie nÃ¡jdete v 'man "
#~ "satellite-sync'."
  0707010000008B000081B40000000000000000000000016290A0C10000B64C000000000000000000000000000000000000001B00000000spacewalk-backend/po/sl.po    # SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
#
# Translators:
# Rok Papez <rok.papez@lugos.si>, 2004.
msgid ""
msgstr ""
"Project-Id-Version: Spacewalk\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-10-16 13:34+0200\n"
"PO-Revision-Date: 2011-03-04 16:08+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: sl\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%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n"
"%100==4 ? 2 : 3)\n"

#: ../server/apacheAuth.py:66
#, python-format
msgid "incomplete proxy authentication token: %s"
msgstr ""

#: ../server/apacheAuth.py:84
#, python-format
msgid "Sent proxy signature %s does not match ours %s."
msgstr ""

#: ../server/apacheAuth.py:119
msgid "declined proxy authentication"
msgstr ""

#: ../server/apacheRequest.py:59
#, python-format
msgid "Invalid request received (%s)."
msgstr ""

#: ../server/apacheRequest.py:120
#, python-format
msgid ""
"IMPORTANT MESSAGE FOLLOWS:\n"
"%s"
msgstr ""

#: ../server/apacheRequest.py:149
#, python-format
msgid ""
"While running '%s': caught\n"
"%s : %s\n"
msgstr ""

#: ../server/apacheRequest.py:606
#, python-format
msgid "Invalid URI %s"
msgstr ""

#: ../server/configFilesHandler.py:129 ../server/handlers/app/packages.py:192
#: ../server/handlers/xmlrpc/registration.py:215
#: ../server/handlers/xmlrpc/registration.py:1168
#: ../server/handlers/xmlrpc/registration.py:1307
#, python-format
msgid ""
"\n"
"                   %s Account has been deactivated on this server.\n"
"                   Please contact your Org administrator for more help."
msgstr ""

#: ../server/handlers/applet/applet.py:78
#, python-brace-format
msgid "Your system was not found in the {PRODUCT_NAME} database"
msgstr ""

#: ../server/handlers/sat/auth.py:45
msgid "ISS is disabled on this server."
msgstr ""

#: ../server/handlers/sat/auth.py:50
#, python-format
msgid "Server \"%s\" is not enabled for ISS."
msgstr ""

#: ../server/handlers/xmlrpc/errata.py:64
#, python-format
msgid "Expected a package name, not: %s"
msgstr ""

#: ../server/handlers/xmlrpc/errata.py:115
#, python-format
msgid "Expected a package, not: %s"
msgstr ""

#: ../server/handlers/xmlrpc/proxy.py:65
#, python-format
msgid "SUSE Manager Proxy service not enabled for server profile: \"%s\""
msgstr ""

#: ../server/handlers/xmlrpc/proxy.py:85
msgid "Invalid session key"
msgstr ""

#: ../server/handlers/xmlrpc/proxy.py:93
msgid "This server ID no longer exists"
msgstr ""

#: ../server/handlers/xmlrpc/queue.py:433
#, python-format
msgid "Invalid action value type %s (%s)"
msgstr ""

#: ../server/handlers/xmlrpc/queue.py:464
#, python-format
msgid "Action %s does not belong to server %s"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:194
msgid "Required data missing"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:198
msgid "Required members missing"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:207
msgid "Attempt to register a system to an invalid username"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:839
msgid "Invalid system release version requested"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1063
msgid ""
"Unable to find a valid network interface, both ipaddr and ip6addr not found."
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1115
#, python-brace-format
msgid "{PRODUCT_NAME} Welcome Message"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1125
msgid "Privacy Statement"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1146
msgid "Expected a dictionary as a product argument"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1374
#, python-format
msgid "Invalid value '%s' for %s (%s)"
msgstr ""

#: ../server/handlers/xmlrpc/scap.py:104
msgid "Invalid system_id/action_id pair."
msgstr ""

#: ../server/handlers/xmlrpc/up2date.py:233
#, python-format
msgid "Invalid value %s (%s)"
msgstr ""

#: ../server/importlib/userAuth.py:98
msgid "You are not authorized to manage packages in the null org"
msgstr ""

#: ../server/importlib/userAuth.py:103
#, python-format
msgid "You are not allowed to manage packages in the %s org"
msgstr ""

#: ../server/importlib/userAuth.py:121
msgid "You are not allowed to perform administrative tasks"
msgstr ""

#: ../server/importlib/userAuth.py:144
#, python-format
msgid ""
"You are not allowed to manage channel %s, or that channel does not exist"
msgstr ""

#: ../server/importlib/userAuth.py:204
#, python-format
msgid ""
"\n"
"               %s Account has been deactivated on this server.\n"
"               Please contact your Org administrator for more help."
msgstr ""

#: ../server/rhnChannel.py:1992
#, python-format
msgid ""
"Your account does not have access to any channels matching "
"(release='%(release)s', arch='%(arch)s')%(www_activation)s"
msgstr ""

#: ../server/rhnChannel.py:2002
msgid ""
"\n"
"If you have a registration number, please register with it first at http://"
"www.redhat.com/apps/activate/ and then try again.\n"
"\n"
msgstr ""

#: ../server/rhnChannel.py:2012
#, python-format
msgid "Insufficient subscription permissions for release (%s, %s"
msgstr ""

#. Various messages that can be reused
#.
#. bretm 02/07/2007 -- when we have better old-client documentation, probably
#. will be safe to get rid of all this crap
#: ../server/rhnChannel.py:2276 ../server/rhnChannel.py:2287
#: ../server/rhnChannel.py:2302
msgid "System Registered but Inactive"
msgstr ""

#: ../server/rhnChannel.py:2277
#, python-format
msgid ""
"\n"
"Invalid Architecture and OS release combination (%s, %s).\n"
"Your system has been registered, but will not receive updates\n"
"because it is not subscribed to a channel. If you have not yet\n"
"activated your product for service, please visit our website at:\n"
"\n"
"     http://www.redhat.com/apps/activate/\n"
"\n"
"...to activate your product."
msgstr ""

#: ../server/rhnChannel.py:2288
#, python-format
msgid ""
"\n"
"Invalid Architecture and OS release combination (%s, %s).\n"
"Your system has been registered, but will not receive updates\n"
"because it could not be subscribed to a base channel.\n"
"Please contact your organization administrator for assistance.\n"
msgstr ""

#: ../server/rhnChannel.py:2295
#, python-format
msgid ""
"\n"
"  This system has been successfully registered, but is not yet entitled\n"
"  to service.  To entitle this system to service, login to the web site at:\n"
"\n"
"  %(entitlement_url)s\n"
msgstr ""

#: ../server/rhnChannel.py:2303
#, python-format
msgid ""
"\n"
"  This system has been successfully registered, but no service entitlements\n"
"  were available.  To entitle this system to service, login to the web site "
"at:\n"
"\n"
"  %(entitlement_url)s\n"
msgstr ""

#: ../server/rhnHandler.py:62
msgid "Please run rhn_register as root on this client"
msgstr ""

#: ../server/rhnHandler.py:75
#, python-format
msgid "Service not enabled for system profile: \"%s\""
msgstr ""

#: ../server/rhnPackage.py:49 ../server/rhnPackage.py:87
#: ../server/rhnPackage.py:107 ../server/rhnPackage.py:158
#, python-format
msgid "Invalid RPM package %s requested"
msgstr ""

#: ../server/rhnPackage.py:112
msgid "Package not found"
msgstr ""

#: ../server/rhnServer/server_class.py:97
#, python-format
msgid "Architecture `%s' is not supported"
msgstr ""

#: ../server/rhnServer/server_token.py:78
#, python-format
msgid "Token `%s' has more than one base channel assigned"
msgstr ""

#: ../server/rhnServer/server_token.py:80
msgid "Conflicting base channels"
msgstr ""

#: ../server/rhnServer/server_token.py:190
#, python-format
msgid "Failed to add server to group %s"
msgstr ""

#: ../server/rhnServer/server_token.py:503
#, python-format
msgid "Maximum usage count of %s reached"
msgstr ""

#: ../server/rhnServer/server_token.py:744
msgid ""
"Stacking of re-registration tokens with different base entitlements is not "
"supported"
msgstr ""

#: ../server/rhnServer/server_token.py:811
#, python-format
msgid "Could not find token '%s'"
msgstr ""

#. Cannot use activation keys from different orgs
#: ../server/rhnServer/server_token.py:843
msgid "Tokens from mismatching orgs"
msgstr ""

#. Two tokens with different kickstart sessions
#: ../server/rhnServer/server_token.py:853
msgid "Kickstart session mismatch"
msgstr ""

#: ../server/rhnServer/server_token.py:877
msgid "Stacking of re-registration tokens is not supported"
msgstr ""

#: ../server/rhnUser.py:289 ../server/rhnUser.py:292
msgid "Invalid username/password combination"
msgstr ""

#. nope, not reserved either
#: ../server/rhnUser.py:467
#, python-format
msgid "Username `%s' has not been reserved"
msgstr ""

#. New accounts have to specify an e-mail address
#: ../server/rhnUser.py:473
msgid "E-mail address not specified"
msgstr ""

#: ../server/rhnUser.py:509
#, python-format
msgid "username should be at least %d characters"
msgstr ""

#: ../server/rhnUser.py:512
#, python-format
msgid "username should be less than %d characters"
msgstr ""

#: ../server/rhnUser.py:523
#, python-format
msgid "username = `%s', invalid character `%s'"
msgstr ""

#: ../server/rhnUser.py:542
#, python-format
msgid "Please limit your e-mail address to %s chars"
msgstr ""

#: ../server/rhnUser.py:623
#, python-format
msgid "password must be at least %d characters"
msgstr ""

#: ../server/rhnUser.py:626
#, python-format
msgid "Password must be shorter than %d characters"
msgstr ""

#: ../server/rhnUser.py:644
#, python-format
msgid "password contains character `%s'"
msgstr ""

#: ../server/rhnUser.py:651
#, python-format
msgid "username should be at least %d characters long"
msgstr ""

#: ../server/rhnUser.py:662
#, python-format
msgid "Cannot register usernames ending with %s"
msgstr ""

#. 0-999: Red Hat client/client-like interaction errors:
#: ../common/rhnException.py:53
msgid "This does not appear to be a valid username."
msgstr ""

#: ../common/rhnException.py:54
msgid "Invalid username and password combination."
msgstr ""

#: ../common/rhnException.py:55
msgid "This login is already taken, or the password is incorrect."
msgstr ""

#: ../common/rhnException.py:56
msgid "Permission denied."
msgstr ""

#: ../common/rhnException.py:57
msgid "Object not found."
msgstr ""

#: ../common/rhnException.py:58
msgid "Invalid System Digital ID."
msgstr ""

#: ../common/rhnException.py:59
msgid "Invalid System Credentials."
msgstr ""

#: ../common/rhnException.py:60
msgid "Could not retrieve user data from database."
msgstr ""

#: ../common/rhnException.py:61
msgid "Valid username required."
msgstr ""

#: ../common/rhnException.py:62
msgid "Valid password required."
msgstr ""

#: ../common/rhnException.py:63
msgid "Minimum username length violation."
msgstr ""

#: ../common/rhnException.py:64
msgid "Minimum password length violation."
msgstr ""

#: ../common/rhnException.py:65
msgid "The username contains invalid characters."
msgstr ""

#: ../common/rhnException.py:66
msgid "File not found."
msgstr ""

#: ../common/rhnException.py:67
msgid "Architecture and OS version combination is not supported."
msgstr ""

#: ../common/rhnException.py:68
msgid "Could not retrieve system data from database."
msgstr ""

#: ../common/rhnException.py:69
msgid "Invalid arguments passed to function."
msgstr ""

#: ../common/rhnException.py:70
msgid "Unable to retrieve requested entry."
msgstr ""

#: ../common/rhnException.py:71
msgid "Could not update database entry."
msgstr ""

#: ../common/rhnException.py:72
msgid "Unsupported server architecture."
msgstr ""

#: ../common/rhnException.py:73
#, python-format
msgid ""
"\n"
"     The anonymous server functionality is no longer available.\n"
"\n"
"     Please re-register this system by running mgr_register as root.\n"
"     Please visit https://%(hostname)s/rhn/systems/SystemEntitlements.do\n"
"     or login at https://%(hostname)s, and from the \"Overview\" tab,\n"
"     select \"Subscription Management\" to enable the service for this "
"system.\n"
"     "
msgstr ""

#: ../common/rhnException.py:81
msgid "Record not available in the database."
msgstr ""

#: ../common/rhnException.py:82
msgid "Invalid value for entry."
msgstr ""

#: ../common/rhnException.py:83
#, python-format
msgid ""
"\n"
"     This system does not have a valid entitlement for SUSE Manager.\n"
"     Please visit https://%(hostname)s/rhn/systems/SystemEntitlements.do\n"
"     or login at https://%(hostname)s, and from the \"Overview\" tab,\n"
"     select \"Subscription Management\" to enable the service for this "
"system.\n"
"     "
msgstr ""

#: ../common/rhnException.py:89
msgid "Channel error"
msgstr ""

#: ../common/rhnException.py:90
msgid "Client session token is invalid."
msgstr ""

#: ../common/rhnException.py:91
msgid "Client session token has expired."
msgstr ""

#: ../common/rhnException.py:92
msgid "You are not authorized to retrieve the requested object."
msgstr ""

#: ../common/rhnException.py:93
msgid "Invalid action"
msgstr ""

#: ../common/rhnException.py:94
msgid "You are not allowed to perform administrative tasks on this system."
msgstr ""

#: ../common/rhnException.py:96
msgid "The system is already subscribed to the specified channel."
msgstr ""

#: ../common/rhnException.py:97
msgid "The system is not currently subscribed to the specified channel."
msgstr ""

#: ../common/rhnException.py:98
msgid "The specified channel does not exist."
msgstr ""

#: ../common/rhnException.py:99
msgid "Invalid channel version."
msgstr ""

#: ../common/rhnException.py:100
msgid ""
"\n"
"     User group membership limits exceeded.\n"
"\n"
"     The current settings for your account do not allow you to add another\n"
"     user account. Please check with the organization administrator for "
"your\n"
"     account if the maximum number of users allowed to subscribe to server "
"needs\n"
"     to be changed.\n"
"     "
msgstr ""

#: ../common/rhnException.py:108
msgid ""
"\n"
"     System group membership limits exceeded.\n"
"\n"
"     The current settings for your account do not allow you to add another\n"
"     system profile. Please check with the organization administrator for "
"your\n"
"     account for modifying the maximum number of system profiles that can "
"be\n"
"     subscribed to your account.\n"
"     "
msgstr ""

#: ../common/rhnException.py:116
msgid ""
"\n"
"     Invalid architecture.\n"
"\n"
"     The architecture of the package is not supported by\n"
"     "
msgstr ""

#: ../common/rhnException.py:121
msgid "Invalid RPM header"
msgstr ""

#: ../common/rhnException.py:122
msgid ""
"\n"
"    This system is already registered as a Salt Minion. If you want to "
"register it as a traditional client\n"
"    please delete it first via the web UI or API and then register it using "
"the traditional tools.\n"
"    "
msgstr ""

#. For the uploading tools
#: ../common/rhnException.py:127
msgid "Invalid information uploaded to the server"
msgstr ""

#: ../common/rhnException.py:128
msgid "Error uploading network interfaces configuration."
msgstr ""

#: ../common/rhnException.py:129
msgid ""
"\n"
"     Package Upload Failed due to uniqueness constraint violation.\n"
"     Make sure the package does not have any duplicate dependencies or\n"
"     does not already exists on the server\n"
"     "
msgstr ""

#: ../common/rhnException.py:134
msgid ""
"\n"
"     The --force rhnpush option is disabled on this server.\n"
"     Please contact your SUSE Manager administrator for more help.\n"
"     "
msgstr ""

#. 60-70: token errors
#: ../common/rhnException.py:140
msgid ""
"\n"
"     The activation token specified could not be found on the server.\n"
"     Please retry with a valid key.\n"
"     "
msgstr ""

#: ../common/rhnException.py:144
msgid "Too many systems registered using this registration token"
msgstr ""

#: ../common/rhnException.py:145
msgid "Token contains invalid, obsoleted or insufficient settings"
msgstr ""

#: ../common/rhnException.py:146
msgid "Conflicting activation tokens"
msgstr ""

#. 70-80: channel subscription errors
#: ../common/rhnException.py:149
msgid ""
"\n"
"     No matching base channel found for your system.\n"
"     "
msgstr ""

#: ../common/rhnException.py:152
msgid ""
"\n"
"     You do not have subscription permission to the designated channel.\n"
"     Please refer to your organization's channel or organization\n"
"     administrators for further details.\n"
"     "
msgstr ""

#: ../common/rhnException.py:157
msgid "You can not unsubscribe from base channel."
msgstr ""

#: ../common/rhnException.py:158
msgid "SUSE Manager or Proxy channel can not be subscribed."
msgstr ""

#. 80-90: server group errors
#: ../common/rhnException.py:161
msgid "There was an error while trying to join the system to its groups"
msgstr ""

#. 90-100: entitlement errors
#: ../common/rhnException.py:164
msgid "Unable to entitle system"
msgstr ""

#. 100-109: e-mail and uuid related faults
#: ../common/rhnException.py:167
msgid "Maximum e-mail length violation."
msgstr ""

#: ../common/rhnException.py:168
msgid "This system has been previously registered."
msgstr ""

#: ../common/rhnException.py:169
msgid "Invalid username"
msgstr ""

#. 140-159 applet errors
#: ../common/rhnException.py:172
msgid "Unable to look up server"
msgstr ""

#. 160-179: OSAD errors
#: ../common/rhnException.py:175
msgid "Required argument is missing"
msgstr ""

#. 600-699: RHEL5+ EN errors
#: ../common/rhnException.py:178
msgid "No entitlement information tied to hardware"
msgstr ""

#: ../common/rhnException.py:179
msgid "Installation number is not entitling"
msgstr ""

#. 700-799: Additional user input verification errors.
#: ../common/rhnException.py:182
msgid "Maximum username length violation"
msgstr ""

#: ../common/rhnException.py:183
msgid "Maximum password length violation"
msgstr ""

#: ../common/rhnException.py:184
msgid "This user has read only API access. Action denied."
msgstr ""

#: ../common/rhnException.py:186
msgid "System Name cannot be less than 1 character"
msgstr ""

#. 1000-1999: Proxy specific errors:
#. issued by a Proxy to the client
#: ../common/rhnException.py:190
msgid "SUSE Manager Proxy error."
msgstr ""

#: ../common/rhnException.py:191
msgid "SUSE Manager Proxy unable to login."
msgstr ""

#. issued by a SUSE Manager Server/Satellite to the proxy
#: ../common/rhnException.py:193
msgid ""
"\n"
"     SUSE Manager Proxy system ID does not match a Spacewalk Proxy Server\n"
"     in the database.\n"
"     "
msgstr ""

#: ../common/rhnException.py:197
msgid "SUSE Manager Proxy session token is invalid."
msgstr ""

#: ../common/rhnException.py:198
msgid "SUSE Manager Proxy session token has expired."
msgstr ""

#. 2000-2999: Red Hat Satellite specific errors:
#: ../common/rhnException.py:202
msgid ""
"\n"
"      user creation is not allowed via mgr_register;\n"
"     please contact your sysadmin to have your account created.\n"
"     "
msgstr ""

#: ../common/rhnException.py:206
msgid ""
"\n"
"     This SUSE Manager server is not allowed to use Inter Server Sync on "
"this server\n"
"     "
msgstr ""

#: ../common/rhnException.py:209
msgid ""
"\n"
"     Inter Server Sync is disabled on this SUSE Manager Server.\n"
"     "
msgstr ""

#. 3000-3999: XML dumper errors:
#: ../common/rhnException.py:214
msgid "Invalid datatype passed"
msgstr ""

#: ../common/rhnException.py:215
msgid "Unable to retrieve channel"
msgstr ""

#: ../common/rhnException.py:216
msgid "Unable to retrieve package"
msgstr ""

#: ../common/rhnException.py:217
msgid "Unable to retrieve erratum"
msgstr ""

#: ../common/rhnException.py:218
msgid "File is missing"
msgstr ""

#: ../common/rhnException.py:219
msgid "Function retrieval error"
msgstr ""

#: ../common/rhnException.py:220
msgid "Function execution error"
msgstr ""

#: ../common/rhnException.py:221
msgid "Missing version string"
msgstr ""

#: ../common/rhnException.py:222
msgid "Invalid version string"
msgstr ""

#: ../common/rhnException.py:223
msgid "Mismatching versions"
msgstr ""

#: ../common/rhnException.py:224
msgid "Invalid channel version"
msgstr ""

#: ../common/rhnException.py:225
msgid "No comps file for channel"
msgstr ""

#: ../common/rhnException.py:226
msgid "Unable to retrieve comps file"
msgstr ""

#. 4000 - 4999: config management errors
#: ../common/rhnException.py:229
msgid "Configuration action missing"
msgstr ""

#: ../common/rhnException.py:230
msgid "File too large"
msgstr ""

#: ../common/rhnException.py:231
msgid "File contains binary data"
msgstr ""

#: ../common/rhnException.py:232
msgid "Configuration channel is not empty"
msgstr ""

#: ../common/rhnException.py:233
msgid "Permission error"
msgstr ""

#: ../common/rhnException.py:234
msgid "Content missing for configuration file"
msgstr ""

#: ../common/rhnException.py:235
msgid "Template delimiters not specified"
msgstr ""

#: ../common/rhnException.py:236
msgid "Configuration channel does not exist"
msgstr ""

#: ../common/rhnException.py:237
msgid "Configuration channel already exists"
msgstr ""

#: ../common/rhnException.py:238
msgid "File missing from configuration channel"
msgstr ""

#: ../common/rhnException.py:239
msgid "Different revision of this file is uploaded"
msgstr ""

#: ../common/rhnException.py:240
msgid "File already uploaded to configuration channel"
msgstr ""

#: ../common/rhnException.py:241
msgid "File size exceeds remaining quota space"
msgstr ""

#: ../common/rhnException.py:242
msgid "Full path of file must be specified"
msgstr ""

#: ../common/rhnException.py:243
msgid "Invalid revision number"
msgstr ""

#: ../common/rhnException.py:244
msgid "Cannot compare files of different file type"
msgstr ""

#. 5000 - 5999: client content uploading errors
#. 5000 - 5099: crash reporting errors
#: ../common/rhnException.py:248
msgid "Crash information is invalid or incomplete"
msgstr ""

#: ../common/rhnException.py:249
msgid "Crash file information is invalid or incomplete"
msgstr ""

#: ../common/rhnException.py:250
msgid "Error composing crash directory path"
msgstr ""

#: ../common/rhnException.py:251
msgid "Error composing crash file path"
msgstr ""

#: ../common/rhnException.py:252 ../common/rhnException.py:259
msgid "Invalid content encoding"
msgstr ""

#: ../common/rhnException.py:253
msgid "Invalid crash name"
msgstr ""

#: ../common/rhnException.py:254
msgid "Crash reporting is disabled for this organization"
msgstr ""

#. 5100 - 5199: scap results reporting error
#: ../common/rhnException.py:256
msgid "SCAP results file transfer is invalid or incomplete"
msgstr ""

#: ../common/rhnException.py:257
msgid "Error composing directory path for detailed SCAP results"
msgstr ""

#: ../common/rhnException.py:258
msgid "Error composing file path for detailed SCAP results"
msgstr ""

#: ../common/rhnException.py:306
msgid ""
"\n"
"     An error has occurred while processing your request. If this problem\n"
"     persists please enter a bug report at scc.suse.com.\n"
"     If you choose to submit the bug report, please be sure to include\n"
"     details of what you were trying to do when this error occurred and\n"
"     details on how to reproduce this problem.\n"
msgstr ""

#: ../common/rhnException.py:358
#, python-format
msgid ""
"Error Message:\n"
"    %s\n"
msgstr ""

#: ../common/rhnException.py:360
#, python-format
msgid "Error Class Code: %s\n"
msgstr ""

#: ../common/rhnException.py:363
#, python-format
msgid "Error Class Info: %s\n"
msgstr ""

#: ../common/rhnException.py:365
#, python-format
msgid "Explanation: %s"
msgstr ""

#: ../common/rhnTB.py:205
#, python-format
msgid "ERROR: %s %s: %s"
msgstr ""

#: ../common/rhnTB.py:207
#, python-format
msgid "TRACEBACK: %s"
msgstr ""

#: ../satellite_tools/disk_dumper/iss.py:1294
#: ../satellite_tools/disk_dumper/iss.py:1298
#, python-format
msgid "format of %s should be at least YYYYMMDD.\n"
msgstr ""

#: ../satellite_tools/messages.py:26
#, python-format
msgid ""
"\n"
"ERROR: executing step %s. Error is:\n"
"%s\n"
msgstr ""

#: ../satellite_tools/messages.py:31
#, python-format
msgid ""
"\n"
"ERROR: there was a problem accessing the channel data from your temporary\n"
"       repository. Did you migrate all of the data from the channel ISOs\n"
"       do this directory? If so, please recheck the channels ISOs, ensure\n"
"       that you have them all, and then iteratively remount and repopulate\n"
"       the temporary repository (%s).\n"
msgstr ""

#: ../satellite_tools/messages.py:39
#, python-format
msgid ""
"\n"
"ERROR: there was a problem synchronizing the information.\n"
"       Error message: %s\n"
msgstr ""

#: ../satellite_tools/messages.py:44
#, python-format
msgid ""
"\n"
"ERROR: There was a problem communicating with the ISS Master.\n"
"       Depending on the specific error details, please review your "
"configuration,\n"
"       basic network connectivity, and/or name resolution, and try again.\n"
"       Error message: %s\n"
msgstr ""

#: ../satellite_tools/messages.py:51
#, python-format
msgid ""
"\n"
"ERROR: There was a problem communicating with the ISS Master.\n"
"       If the master satellite is older than v5.3, it does not have ISS "
"capability.\n"
"       Otherwise, depending on the specific error details, please review "
"your\n"
"       configuration, basic network connectivity, and/or name resolution, "
"and try again.\n"
"       Error message: %s\n"
msgstr ""

#: ../satellite_tools/messages.py:59
#, python-format
msgid ""
"\n"
"ERROR: a child-channel cannot be synced without its parent being synced as\n"
"       well. A parent needs to be either (a) previously synced or (b) "
"synced\n"
"       in tandem with the desired child-channel. Missing parents for this\n"
"       transaction:\n"
"       %s\n"
msgstr ""

#: ../satellite_tools/messages.py:67
#, python-format
msgid ""
"\n"
"ERROR: you are not entitled to sync a channel in this set of channels.\n"
"Please contact your SUSE Manager contact\n"
"%s"
msgstr ""

#: ../satellite_tools/messages.py:72
#, python-format
msgid "  ERROR: not enough free space (%s KB) on device."
msgstr ""

#: ../satellite_tools/messages.py:74
#, python-format
msgid "    %3d/%s Fetch successful: %s (%s bytes)"
msgstr ""

#: ../satellite_tools/messages.py:75
#, python-format
msgid "    Extinct package:  %s"
msgstr ""

#: ../satellite_tools/messages.py:76
#, python-format
msgid "   Total size: %s"
msgstr ""

#: ../satellite_tools/messages.py:77
#, python-format
msgid "      Downloaded %s of %s. Estimated remaining time: %s"
msgstr ""

#: ../satellite_tools/messages.py:78
#, python-format
msgid "    Fetch unsuccessful: %s"
msgstr ""

#: ../satellite_tools/messages.py:79
#, python-format
msgid "   RPM fetch summary: %s"
msgstr ""

#: ../satellite_tools/messages.py:80
#, python-format
msgid "       success: %d"
msgstr ""

#: ../satellite_tools/messages.py:81
#, python-format
msgid "       failed:  %d"
msgstr ""

#: ../satellite_tools/messages.py:82
#, python-format
msgid "       extinct: %d"
msgstr ""

#: ../satellite_tools/messages.py:84
#, python-format
msgid "   Retrieving / parsing *relevant* package metadata: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:85
#, python-format
msgid "   Retrieving / parsing errata data: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:86
#, python-format
msgid "   Retrieving / parsing kickstart data: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:87
#, python-format
msgid "   Retrieving / parsing kickstart tree files: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:88
#, python-format
msgid "   Importing *relevant* package metadata: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:89
msgid "   * WARNING: this may be a slow process."
msgstr ""

#: ../satellite_tools/messages.py:90
msgid "Linking packages to channels"
msgstr ""

#: ../satellite_tools/messages.py:91
#, python-format
msgid "   Importing *relevant* errata: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:92
msgid "   No new kickstartable tree to import"
msgstr ""

#: ../satellite_tools/messages.py:93
#, python-format
msgid "Importing kickstartable trees (%d)"
msgstr ""

#: ../satellite_tools/messages.py:94
#, python-format
msgid "Imported kickstartable trees (%d)"
msgstr ""

#: ../satellite_tools/reposync.py:111 ../satellite_tools/satsync.py:439
msgid "+++ sending log as an email +++"
msgstr ""

#: ../satellite_tools/reposync.py:114
#, python-format
msgid "%s sync. report from %s"
msgstr ""

#: ../satellite_tools/reposync.py:124 ../satellite_tools/satsync.py:449
msgid "+++ email requested, but there is nothing to send +++"
msgstr ""

#: ../satellite_tools/rhn_satellite_activate.py:198
#, python-format
msgid ""
"\"%s\" (specified in commandline)\n"
"could not be opened and read:\n"
"%s"
msgstr ""

#: ../satellite_tools/rhn_satellite_activate.py:205
#, python-format
msgid ""
"\"%s\" could not be opened\n"
"and/or written to:\n"
"%s"
msgstr ""

#: ../satellite_tools/satsync.py:258
#, python-format
msgid "No handler for step %s"
msgstr ""

#. Try one more time - this time it should be faster since
#. everything should be cached
#: ../satellite_tools/satsync.py:270
msgid "Environment changed, trying again..."
msgstr ""

#: ../satellite_tools/satsync.py:277
msgid "ERROR: Encountered IntegrityError: \n"
msgstr ""

#: ../satellite_tools/satsync.py:285
msgid "Repeated failures"
msgstr ""

#: ../satellite_tools/satsync.py:290
#, python-format
msgid ""
"    Import complete:\n"
"        Begin time: %s\n"
"        End time:   %s\n"
"        Elapsed:    %s\n"
"          "
msgstr ""

#: ../satellite_tools/satsync.py:311
msgid "hours"
msgstr ""

#: ../satellite_tools/satsync.py:311
msgid "minutes"
msgstr ""

#: ../satellite_tools/satsync.py:311
msgid "seconds"
msgstr ""

#: ../satellite_tools/satsync.py:357
msgid ""
"ERROR: The dump is missing package data, use --no-rpms to skip this step or "
"fix the content to include package data."
msgstr ""

#. the orgs() method doesn't exist; that's fine we just
#. won't sync the orgs
#: ../satellite_tools/satsync.py:404
msgid "The SUSE Manager master does not support syncing orgs data."
msgstr ""

#: ../satellite_tools/satsync.py:404
msgid "Skipping..."
msgstr ""

#: ../satellite_tools/satsync.py:442
#, python-format
msgid "SUSE Manager Inter Server sync. report from %s"
msgstr ""

#: ../satellite_tools/satsync.py:521
msgid " - file-system synchronization"
msgstr ""

#: ../satellite_tools/satsync.py:533 ../satellite_tools/satsync.py:541
msgid " - live synchronization"
msgstr ""

#: ../satellite_tools/satsync.py:534
#, python-brace-format
msgid ""
"ERROR: Live content synchronizing with RHN Classic Hosted is no longer "
"supported.\n"
"Please use the cdn-sync command instead unless you are attempting to sync "
"from another {PRODUCT_NAME} via Inter-Server-Sync (ISS), or from local "
"content on disk via Channel Dump ISOs."
msgstr ""

#: ../satellite_tools/satsync.py:542
#, python-format
msgid "   url: %s"
msgstr ""

#: ../satellite_tools/satsync.py:543
#, python-format
msgid "   debug/output level: %s"
msgstr ""

#: ../satellite_tools/satsync.py:553
msgid "ERROR: this server must be registered with SUSE Manager."
msgstr ""

#: ../satellite_tools/satsync.py:575
#, python-format
msgid "Retrieving / parsing %s data"
msgstr ""

#: ../satellite_tools/satsync.py:585 ../satellite_tools/satsync.py:600
msgid "*** SYSTEM INTERRUPT CALLED ***"
msgstr ""

#: ../satellite_tools/satsync.py:593
msgid "ERROR: fatal parser exception occurred "
msgstr ""

#: ../satellite_tools/satsync.py:594
#, python-format
msgid "(line: %s, col: %s msg: %s)"
msgstr ""

#: ../satellite_tools/satsync.py:598
#, python-format
msgid "ERROR: parser exception occurred: %s"
msgstr ""

#: ../satellite_tools/satsync.py:603
msgid "ERROR: exception (during parse) occurred: "
msgstr ""

#: ../satellite_tools/satsync.py:604
#, python-format
msgid ""
"   Encountered some errors with %s data (see logs (%s) for more information)"
msgstr ""

#: ../satellite_tools/satsync.py:606
#, python-format
msgid "   Encountered some errors with %s data:"
msgstr ""

#: ../satellite_tools/satsync.py:607
#, python-format
msgid "   ------- %s PARSE/IMPORT ERROR -------"
msgstr ""

#: ../satellite_tools/satsync.py:609
msgid "   ---------------------------------------"
msgstr ""

#: ../satellite_tools/satsync.py:612
#, python-format
msgid "%s data complete"
msgstr ""

#: ../satellite_tools/satsync.py:665
msgid "Retrieving / parsing channel data"
msgstr ""

#: ../satellite_tools/satsync.py:718
msgid "Channel data complete"
msgstr ""

#: ../satellite_tools/satsync.py:736
#, python-format
msgid "%10s import from %s"
msgstr ""

#: ../satellite_tools/satsync.py:739
#, python-format
msgid "%10s import from %s - %s"
msgstr ""

#: ../satellite_tools/satsync.py:743
#, python-format
msgid "%10s"
msgstr ""

#: ../satellite_tools/satsync.py:750
msgid "p"
msgstr ""

#: ../satellite_tools/satsync.py:752
msgid "."
msgstr ""

#: ../satellite_tools/satsync.py:758
msgid "   p = previously imported/synced channel"
msgstr ""

#: ../satellite_tools/satsync.py:759
msgid "   . = channel not yet imported/synced"
msgstr ""

#: ../satellite_tools/satsync.py:765
msgid "   e = channel no longer supported (end-of-service)"
msgstr ""

#: ../satellite_tools/satsync.py:767
msgid "   ? = channel label invalid --- typo?"
msgstr ""

#: ../satellite_tools/satsync.py:771
#, python-format
msgid "   %s:"
msgstr ""

#: ../satellite_tools/satsync.py:772
#, python-format
msgid "      %s %-40s %4s %s"
msgstr ""

#: ../satellite_tools/satsync.py:773
msgid "base-channels"
msgstr ""

#: ../satellite_tools/satsync.py:786 ../satellite_tools/satsync.py:1603
msgid "NONE RELEVANT"
msgstr ""

#: ../satellite_tools/satsync.py:808
msgid "end-of-service"
msgstr ""

#: ../satellite_tools/satsync.py:809
msgid "e"
msgstr ""

#: ../satellite_tools/satsync.py:815
msgid "   typos:"
msgstr ""

#: ../satellite_tools/satsync.py:816
msgid "?"
msgstr ""

#: ../satellite_tools/satsync.py:831
#, python-format
msgid "XXX: imported channels: %s"
msgstr ""

#: ../satellite_tools/satsync.py:832
#, python-format
msgid "XXX:   cached channels: %s"
msgstr ""

#: ../satellite_tools/satsync.py:837
msgid "XXX: list channels called"
msgstr ""

#: ../satellite_tools/satsync.py:855
msgid "ERROR: these channels either do not exist or are not available:"
msgstr ""

#: ../satellite_tools/satsync.py:859
#, python-format
msgid "       (to see a list of channel labels: %s --list-channels)"
msgstr ""

#: ../satellite_tools/satsync.py:904
#, python-format
msgid "   Retrieving / parsing short package metadata: %s (%s)"
msgstr ""

#: ../satellite_tools/satsync.py:965
#, python-format
msgid "Diffing package metadata (what's missing locally?): %s"
msgstr ""

#: ../satellite_tools/satsync.py:971 ../satellite_tools/satsync.py:1254
msgid "Diffing:    "
msgstr ""

#: ../satellite_tools/satsync.py:988
msgid "ERROR: incremental dump skipped"
msgstr ""

#: ../satellite_tools/satsync.py:1079
msgid "Downloading rpm packages"
msgstr ""

#: ../satellite_tools/satsync.py:1084
#, python-format
msgid "   Fetching any missing RPMs: %s (%s)"
msgstr ""

#: ../satellite_tools/satsync.py:1085 ../satellite_tools/satsync.py:1153
msgid "NONE MISSING"
msgstr ""

#: ../satellite_tools/satsync.py:1094
msgid "Processing rpm packages complete"
msgstr ""

#: ../satellite_tools/satsync.py:1121
msgid "Downloading package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1146
msgid "Downloading srpm packages"
msgstr ""

#: ../satellite_tools/satsync.py:1152
#, python-format
msgid "   Fetching any missing SRPMs: %s (%s)"
msgstr ""

#: ../satellite_tools/satsync.py:1249
#, python-format
msgid "Diffing source package metadata (what's missing locally?): %s"
msgstr ""

#: ../satellite_tools/satsync.py:1260
msgid "Downloading source package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1338 ../satellite_tools/satsync.py:2027
#, python-format
msgid "Unable to save file %s: %s"
msgstr ""

#. for
#. Retried a number of times and it still failed; log the
#. file as being failed and move on
#: ../satellite_tools/satsync.py:1345
#, python-format
msgid "Failed to fetch file %s"
msgstr ""

#: ../satellite_tools/satsync.py:1350
msgid "Downloading kickstartable trees metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1365
msgid "Downloading kickstartable trees files"
msgstr ""

#: ../satellite_tools/satsync.py:1504
#, python-format
msgid "Grabbing all patches for channel %s"
msgstr ""

#: ../satellite_tools/satsync.py:1554
msgid "Downloading patch data"
msgstr ""

#: ../satellite_tools/satsync.py:1556
msgid "Forcing download of all patch data for requested channels."
msgstr ""

#: ../satellite_tools/satsync.py:1571
msgid "Downloading patch data complete"
msgstr ""

#: ../satellite_tools/satsync.py:1576 ../satellite_tools/satsync.py:1597
msgid "Downloading:"
msgstr ""

#: ../satellite_tools/satsync.py:1579
msgid " - complete"
msgstr ""

#: ../satellite_tools/satsync.py:1624
msgid "Importing source package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1627
msgid "Importing package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1635
msgid "Importing:  "
msgstr ""

#. not in the cache
#: ../satellite_tools/satsync.py:1703
msgid ""
"Package Not Found in Cache, Clear the Cache "
"to                                  Regenerate it."
msgstr ""

#: ../satellite_tools/satsync.py:1709
msgid "Importing channel patches"
msgstr ""

#: ../satellite_tools/satsync.py:1714
#, python-format
msgid "Importing %s patches for channel %s."
msgstr ""

#. Incomplete configuration
#: ../satellite_tools/satsync.py:2113
msgid "ERROR: server.mount_point not set in the configuration file"
msgstr ""

#: ../satellite_tools/satsync.py:2117
#, python-format
msgid "ERROR: server.mount_point %s do not exist"
msgstr ""

#: ../satellite_tools/satsync.py:2122
#, python-format
msgid "ERROR: path under server.mount_point (%s)  do not exist"
msgstr ""

#: ../satellite_tools/satsync.py:2199
#, python-format
msgid "Commandline: %s"
msgstr ""

#: ../satellite_tools/satsync.py:2202
#, python-format
msgid ""
"DEBUG ONLY: max. batch-size for XML/database-import processing (1..%s).\"man "
"satellite-sync\" for more information."
msgstr ""

#: ../satellite_tools/satsync.py:2205
msgid "alternative SSL CA Cert (fullpath to cert file)"
msgstr ""

#: ../satellite_tools/satsync.py:2207
msgid "process data for this channel only"
msgstr ""

#: ../satellite_tools/satsync.py:2209
msgid ""
"disk dump will be considered to be a full export; see \"man satellite-sync\" "
"for more information."
msgstr ""

#: ../satellite_tools/satsync.py:2212
msgid "existing custom channels will also be synced (unless -c is used)"
msgstr ""

#: ../satellite_tools/satsync.py:2214
#, python-format
msgid ""
"override debug level set in /etc/rhn/rhn.conf (which is currently set at %s)."
msgstr ""

#: ../satellite_tools/satsync.py:2216
#, python-format
msgid "requested version of XML dump (default: %s)"
msgstr ""

#: ../satellite_tools/satsync.py:2218
msgid "e-mail a report of what was synced/imported"
msgstr ""

#: ../satellite_tools/satsync.py:2220
msgid "forcibly process all (not a diff of) patch metadata"
msgstr ""

#: ../satellite_tools/satsync.py:2222
msgid "Do not use an http proxy under any circumstances."
msgstr ""

#: ../satellite_tools/satsync.py:2224
msgid "alternative http proxy (hostname:port)"
msgstr ""

#: ../satellite_tools/satsync.py:2226
msgid "alternative http proxy username"
msgstr ""

#: ../satellite_tools/satsync.py:2228
msgid "alternative http proxy password"
msgstr ""

#: ../satellite_tools/satsync.py:2230
msgid "parent SUSE Manager to import content from"
msgstr ""

#: ../satellite_tools/satsync.py:2232
msgid "list all available channels and exit"
msgstr ""

#: ../satellite_tools/satsync.py:2234
msgid "help on all error codes mgr-inter-sync returns"
msgstr ""

#: ../satellite_tools/satsync.py:2236
msgid "source mount point for import - disk update only"
msgstr ""

#: ../satellite_tools/satsync.py:2238
msgid "do not process patch data"
msgstr ""

#: ../satellite_tools/satsync.py:2240
msgid "do not process kickstart data (provisioning only)"
msgstr ""

#: ../satellite_tools/satsync.py:2242
msgid "do not process full package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:2244
msgid "do not download, or process any RPMs"
msgstr ""

#: ../satellite_tools/satsync.py:2246
msgid "turn off SSL (not recommended)"
msgstr ""

#: ../satellite_tools/satsync.py:2248
msgid "org to which the sync imports data. defaults to the admin account"
msgstr ""

#: ../satellite_tools/satsync.py:2250
msgid "print the configuration and exit"
msgstr ""

#: ../satellite_tools/satsync.py:2252
msgid "alternative server with which to connect (hostname)"
msgstr ""

#: ../satellite_tools/satsync.py:2254
msgid "synchronize to this step (man satellite-sync for more info)"
msgstr ""

#: ../satellite_tools/satsync.py:2256
msgid "write complete data to tempfile before streaming to remainder of app"
msgstr ""

#: ../satellite_tools/satsync.py:2258
msgid "DEBUG ONLY: alternative path to digital system id"
msgstr ""

#: ../satellite_tools/satsync.py:2260
msgid "alternative email address(es) for sync output (--email option)"
msgstr ""

#: ../satellite_tools/satsync.py:2262
msgid "do not remove rpms when importing from local dump"
msgstr ""

#: ../satellite_tools/satsync.py:2264
msgid ""
"the fully qualified domain name of the master Satellite. Valid with --mount-"
"point only. Required if you want to import org data and channel permissions."
msgstr ""

#: ../satellite_tools/satsync.py:2274
#, python-format
msgid "ERROR: these arguments make no sense in this context (try --help): %s"
msgstr ""

#. An SQL error is fatal... crash and burn
#: ../satellite_tools/satsync.py:2286
#, python-format
msgid "ERROR: Can't connect to the database: %s"
msgstr ""

#: ../satellite_tools/satsync.py:2287
msgid "ERROR: Check if your database is running."
msgstr ""

#: ../satellite_tools/satsync.py:2322
#, python-format
msgid "ERROR: --debug-level takes an in integer value within the range %s."
msgstr ""

#: ../satellite_tools/satsync.py:2324
msgid "  0  - little logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2325
msgid "  1  - minimal logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2326
msgid "  2  - normal level of logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2327
msgid "  3  - lots of logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2328
msgid "  4+ - excessive logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2341
msgid "ERROR: The --master option is only valid with the --mount-point option"
msgstr ""

#: ../satellite_tools/satsync.py:2351
#, python-format
msgid "ERROR: Unable to lookup Org Id %s"
msgstr ""

#: ../satellite_tools/satsync.py:2360
msgid ""
"WARNING: --list-channels option overrides any --step option. --step ignored."
msgstr ""

#: ../satellite_tools/satsync.py:2375
#, python-format
msgid ""
"ERROR: '%s' is not a valid step. See 'man mgr-inter-sync' for more detail."
msgstr ""

#: ../satellite_tools/satsync.py:2407
msgid ""
"ERROR: No channels currently imported; try mgr-inter-sync --list-channels; "
"then mgr-inter-sync -c chn0 -c chn1..."
msgstr ""

#. int(None) --> TypeError
#. int('a')  --> ValueError
#: ../satellite_tools/satsync.py:2457 ../satellite_tools/satsync.py:2461
msgid "ERROR: --batch-size must have a value within the range: 1..50"
msgstr ""

#: ../satellite_tools/satsync.py:2469
#, python-format
msgid "ERROR: no such directory %s"
msgstr ""

#: ../satellite_tools/satsync.py:2474
msgid "Error Codes: Returned codes means:"
msgstr ""

#: ../satellite_tools/satsync.py:2475
msgid " -1  - Could not lock file or KeyboardInterrupt or SystemExit"
msgstr ""

#: ../satellite_tools/satsync.py:2476
msgid "  0  - User interrupted or intentional exit"
msgstr ""

#: ../satellite_tools/satsync.py:2477
msgid "  1  - attempting to run more than one instance of mgr-inter-sync."
msgstr ""

#: ../satellite_tools/satsync.py:2478
msgid "  2  - Unable to find synchronization tools."
msgstr ""

#: ../satellite_tools/satsync.py:2479
msgid "  3  - a general socket exception occurred"
msgstr ""

#: ../satellite_tools/satsync.py:2480
msgid "  4  - an SSL error occurred. Recheck your SSL settings."
msgstr ""

#: ../satellite_tools/satsync.py:2481
msgid "  5  - ISS error"
msgstr ""

#: ../satellite_tools/satsync.py:2482
msgid "  6  - unhandled exception occurred"
msgstr ""

#: ../satellite_tools/satsync.py:2483
msgid "  7  - unknown sync error"
msgstr ""

#: ../satellite_tools/satsync.py:2484
msgid "  8  - ERROR: must be root to execute"
msgstr ""

#: ../satellite_tools/satsync.py:2485
msgid "  9  - rpclib fault during synchronization init"
msgstr ""

#: ../satellite_tools/satsync.py:2486
msgid "  10 - synchronization init error"
msgstr ""

#: ../satellite_tools/satsync.py:2487
msgid "  11 - Error parsing XML stream"
msgstr ""

#: ../satellite_tools/satsync.py:2488
msgid "  12 - Channel do not exist"
msgstr ""

#: ../satellite_tools/satsync.py:2489
msgid "  13 - SQL error during importing package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:2490
msgid "  14 - SQL error during linking channel packages"
msgstr ""

#: ../satellite_tools/satsync.py:2491
msgid "  15 - SQL error during xml processing"
msgstr ""

#: ../satellite_tools/satsync.py:2492
msgid "  16 - server.mount_point not set in the configuration file"
msgstr ""

#: ../satellite_tools/satsync.py:2493
msgid ""
"  17 - SQL error during retrieving the channels already imported in the SUSE "
"Manager database"
msgstr ""

#: ../satellite_tools/satsync.py:2494
msgid "  18 - Wrong db connection string in rhn.conf"
msgstr ""

#: ../satellite_tools/satsync.py:2495
msgid "  19 - Bad arguments"
msgstr ""

#: ../satellite_tools/satsync.py:2496
msgid "  20 - Could not connect to db."
msgstr ""

#: ../satellite_tools/satsync.py:2497
msgid "  21 - Bad debug level"
msgstr ""

#: ../satellite_tools/satsync.py:2498
msgid "  22 - Not valid step"
msgstr ""

#: ../satellite_tools/satsync.py:2499
msgid "  24 - no such file"
msgstr ""

#: ../satellite_tools/satsync.py:2500
msgid "  25 - no such directory"
msgstr ""

#: ../satellite_tools/satsync.py:2501
msgid "  26 - mount_point does not exist"
msgstr ""

#: ../satellite_tools/satsync.py:2502
msgid "  27 - No such org"
msgstr ""

#: ../satellite_tools/satsync.py:2503
msgid "  28 - error: --master is only valid with --mount-point"
msgstr ""

#: ../satellite_tools/satsync.py:2510
#, python-format
msgid "ERROR: unknown dump version, try one of %s"
msgstr ""
0707010000008C000081B40000000000000000000000016290A0C10000B5E5000000000000000000000000000000000000003200000000spacewalk-backend/po/spacewalk-backend-server.pot # SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-10-16 13:34+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=CHARSET\n"
"Content-Transfer-Encoding: 8bit\n"

#: ../server/apacheAuth.py:66
#, python-format
msgid "incomplete proxy authentication token: %s"
msgstr ""

#: ../server/apacheAuth.py:84
#, python-format
msgid "Sent proxy signature %s does not match ours %s."
msgstr ""

#: ../server/apacheAuth.py:119
msgid "declined proxy authentication"
msgstr ""

#: ../server/apacheRequest.py:59
#, python-format
msgid "Invalid request received (%s)."
msgstr ""

#: ../server/apacheRequest.py:120
#, python-format
msgid ""
"IMPORTANT MESSAGE FOLLOWS:\n"
"%s"
msgstr ""

#: ../server/apacheRequest.py:149
#, python-format
msgid ""
"While running '%s': caught\n"
"%s : %s\n"
msgstr ""

#: ../server/apacheRequest.py:606
#, python-format
msgid "Invalid URI %s"
msgstr ""

#: ../server/configFilesHandler.py:129 ../server/handlers/app/packages.py:192
#: ../server/handlers/xmlrpc/registration.py:215
#: ../server/handlers/xmlrpc/registration.py:1168
#: ../server/handlers/xmlrpc/registration.py:1307
#, python-format
msgid ""
"\n"
"                   %s Account has been deactivated on this server.\n"
"                   Please contact your Org administrator for more help."
msgstr ""

#: ../server/handlers/applet/applet.py:78
#, python-brace-format
msgid "Your system was not found in the {PRODUCT_NAME} database"
msgstr ""

#: ../server/handlers/sat/auth.py:45
msgid "ISS is disabled on this server."
msgstr ""

#: ../server/handlers/sat/auth.py:50
#, python-format
msgid "Server \"%s\" is not enabled for ISS."
msgstr ""

#: ../server/handlers/xmlrpc/errata.py:64
#, python-format
msgid "Expected a package name, not: %s"
msgstr ""

#: ../server/handlers/xmlrpc/errata.py:115
#, python-format
msgid "Expected a package, not: %s"
msgstr ""

#: ../server/handlers/xmlrpc/proxy.py:65
#, python-format
msgid "SUSE Manager Proxy service not enabled for server profile: \"%s\""
msgstr ""

#: ../server/handlers/xmlrpc/proxy.py:85
msgid "Invalid session key"
msgstr ""

#: ../server/handlers/xmlrpc/proxy.py:93
msgid "This server ID no longer exists"
msgstr ""

#: ../server/handlers/xmlrpc/queue.py:433
#, python-format
msgid "Invalid action value type %s (%s)"
msgstr ""

#: ../server/handlers/xmlrpc/queue.py:464
#, python-format
msgid "Action %s does not belong to server %s"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:194
msgid "Required data missing"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:198
msgid "Required members missing"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:207
msgid "Attempt to register a system to an invalid username"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:839
msgid "Invalid system release version requested"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1063
msgid ""
"Unable to find a valid network interface, both ipaddr and ip6addr not found."
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1115
#, python-brace-format
msgid "{PRODUCT_NAME} Welcome Message"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1125
msgid "Privacy Statement"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1146
msgid "Expected a dictionary as a product argument"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1374
#, python-format
msgid "Invalid value '%s' for %s (%s)"
msgstr ""

#: ../server/handlers/xmlrpc/scap.py:104
msgid "Invalid system_id/action_id pair."
msgstr ""

#: ../server/handlers/xmlrpc/up2date.py:233
#, python-format
msgid "Invalid value %s (%s)"
msgstr ""

#: ../server/importlib/userAuth.py:98
msgid "You are not authorized to manage packages in the null org"
msgstr ""

#: ../server/importlib/userAuth.py:103
#, python-format
msgid "You are not allowed to manage packages in the %s org"
msgstr ""

#: ../server/importlib/userAuth.py:121
msgid "You are not allowed to perform administrative tasks"
msgstr ""

#: ../server/importlib/userAuth.py:144
#, python-format
msgid ""
"You are not allowed to manage channel %s, or that channel does not exist"
msgstr ""

#: ../server/importlib/userAuth.py:204
#, python-format
msgid ""
"\n"
"               %s Account has been deactivated on this server.\n"
"               Please contact your Org administrator for more help."
msgstr ""

#: ../server/rhnChannel.py:1992
#, python-format
msgid ""
"Your account does not have access to any channels matching "
"(release='%(release)s', arch='%(arch)s')%(www_activation)s"
msgstr ""

#: ../server/rhnChannel.py:2002
msgid ""
"\n"
"If you have a registration number, please register with it first at http://"
"www.redhat.com/apps/activate/ and then try again.\n"
"\n"
msgstr ""

#: ../server/rhnChannel.py:2012
#, python-format
msgid "Insufficient subscription permissions for release (%s, %s"
msgstr ""

#. Various messages that can be reused
#.
#. bretm 02/07/2007 -- when we have better old-client documentation, probably
#. will be safe to get rid of all this crap
#: ../server/rhnChannel.py:2276 ../server/rhnChannel.py:2287
#: ../server/rhnChannel.py:2302
msgid "System Registered but Inactive"
msgstr ""

#: ../server/rhnChannel.py:2277
#, python-format
msgid ""
"\n"
"Invalid Architecture and OS release combination (%s, %s).\n"
"Your system has been registered, but will not receive updates\n"
"because it is not subscribed to a channel. If you have not yet\n"
"activated your product for service, please visit our website at:\n"
"\n"
"     http://www.redhat.com/apps/activate/\n"
"\n"
"...to activate your product."
msgstr ""

#: ../server/rhnChannel.py:2288
#, python-format
msgid ""
"\n"
"Invalid Architecture and OS release combination (%s, %s).\n"
"Your system has been registered, but will not receive updates\n"
"because it could not be subscribed to a base channel.\n"
"Please contact your organization administrator for assistance.\n"
msgstr ""

#: ../server/rhnChannel.py:2295
#, python-format
msgid ""
"\n"
"  This system has been successfully registered, but is not yet entitled\n"
"  to service.  To entitle this system to service, login to the web site at:\n"
"\n"
"  %(entitlement_url)s\n"
msgstr ""

#: ../server/rhnChannel.py:2303
#, python-format
msgid ""
"\n"
"  This system has been successfully registered, but no service entitlements\n"
"  were available.  To entitle this system to service, login to the web site "
"at:\n"
"\n"
"  %(entitlement_url)s\n"
msgstr ""

#: ../server/rhnHandler.py:62
msgid "Please run rhn_register as root on this client"
msgstr ""

#: ../server/rhnHandler.py:75
#, python-format
msgid "Service not enabled for system profile: \"%s\""
msgstr ""

#: ../server/rhnPackage.py:49 ../server/rhnPackage.py:87
#: ../server/rhnPackage.py:107 ../server/rhnPackage.py:158
#, python-format
msgid "Invalid RPM package %s requested"
msgstr ""

#: ../server/rhnPackage.py:112
msgid "Package not found"
msgstr ""

#: ../server/rhnServer/server_class.py:97
#, python-format
msgid "Architecture `%s' is not supported"
msgstr ""

#: ../server/rhnServer/server_token.py:78
#, python-format
msgid "Token `%s' has more than one base channel assigned"
msgstr ""

#: ../server/rhnServer/server_token.py:80
msgid "Conflicting base channels"
msgstr ""

#: ../server/rhnServer/server_token.py:190
#, python-format
msgid "Failed to add server to group %s"
msgstr ""

#: ../server/rhnServer/server_token.py:503
#, python-format
msgid "Maximum usage count of %s reached"
msgstr ""

#: ../server/rhnServer/server_token.py:744
msgid ""
"Stacking of re-registration tokens with different base entitlements is not "
"supported"
msgstr ""

#: ../server/rhnServer/server_token.py:811
#, python-format
msgid "Could not find token '%s'"
msgstr ""

#. Cannot use activation keys from different orgs
#: ../server/rhnServer/server_token.py:843
msgid "Tokens from mismatching orgs"
msgstr ""

#. Two tokens with different kickstart sessions
#: ../server/rhnServer/server_token.py:853
msgid "Kickstart session mismatch"
msgstr ""

#: ../server/rhnServer/server_token.py:877
msgid "Stacking of re-registration tokens is not supported"
msgstr ""

#: ../server/rhnUser.py:289 ../server/rhnUser.py:292
msgid "Invalid username/password combination"
msgstr ""

#. nope, not reserved either
#: ../server/rhnUser.py:467
#, python-format
msgid "Username `%s' has not been reserved"
msgstr ""

#. New accounts have to specify an e-mail address
#: ../server/rhnUser.py:473
msgid "E-mail address not specified"
msgstr ""

#: ../server/rhnUser.py:509
#, python-format
msgid "username should be at least %d characters"
msgstr ""

#: ../server/rhnUser.py:512
#, python-format
msgid "username should be less than %d characters"
msgstr ""

#: ../server/rhnUser.py:523
#, python-format
msgid "username = `%s', invalid character `%s'"
msgstr ""

#: ../server/rhnUser.py:542
#, python-format
msgid "Please limit your e-mail address to %s chars"
msgstr ""

#: ../server/rhnUser.py:623
#, python-format
msgid "password must be at least %d characters"
msgstr ""

#: ../server/rhnUser.py:626
#, python-format
msgid "Password must be shorter than %d characters"
msgstr ""

#: ../server/rhnUser.py:644
#, python-format
msgid "password contains character `%s'"
msgstr ""

#: ../server/rhnUser.py:651
#, python-format
msgid "username should be at least %d characters long"
msgstr ""

#: ../server/rhnUser.py:662
#, python-format
msgid "Cannot register usernames ending with %s"
msgstr ""

#. 0-999: Red Hat client/client-like interaction errors:
#: ../common/rhnException.py:53
msgid "This does not appear to be a valid username."
msgstr ""

#: ../common/rhnException.py:54
msgid "Invalid username and password combination."
msgstr ""

#: ../common/rhnException.py:55
msgid "This login is already taken, or the password is incorrect."
msgstr ""

#: ../common/rhnException.py:56
msgid "Permission denied."
msgstr ""

#: ../common/rhnException.py:57
msgid "Object not found."
msgstr ""

#: ../common/rhnException.py:58
msgid "Invalid System Digital ID."
msgstr ""

#: ../common/rhnException.py:59
msgid "Invalid System Credentials."
msgstr ""

#: ../common/rhnException.py:60
msgid "Could not retrieve user data from database."
msgstr ""

#: ../common/rhnException.py:61
msgid "Valid username required."
msgstr ""

#: ../common/rhnException.py:62
msgid "Valid password required."
msgstr ""

#: ../common/rhnException.py:63
msgid "Minimum username length violation."
msgstr ""

#: ../common/rhnException.py:64
msgid "Minimum password length violation."
msgstr ""

#: ../common/rhnException.py:65
msgid "The username contains invalid characters."
msgstr ""

#: ../common/rhnException.py:66
msgid "File not found."
msgstr ""

#: ../common/rhnException.py:67
msgid "Architecture and OS version combination is not supported."
msgstr ""

#: ../common/rhnException.py:68
msgid "Could not retrieve system data from database."
msgstr ""

#: ../common/rhnException.py:69
msgid "Invalid arguments passed to function."
msgstr ""

#: ../common/rhnException.py:70
msgid "Unable to retrieve requested entry."
msgstr ""

#: ../common/rhnException.py:71
msgid "Could not update database entry."
msgstr ""

#: ../common/rhnException.py:72
msgid "Unsupported server architecture."
msgstr ""

#: ../common/rhnException.py:73
#, python-format
msgid ""
"\n"
"     The anonymous server functionality is no longer available.\n"
"\n"
"     Please re-register this system by running mgr_register as root.\n"
"     Please visit https://%(hostname)s/rhn/systems/SystemEntitlements.do\n"
"     or login at https://%(hostname)s, and from the \"Overview\" tab,\n"
"     select \"Subscription Management\" to enable the service for this "
"system.\n"
"     "
msgstr ""

#: ../common/rhnException.py:81
msgid "Record not available in the database."
msgstr ""

#: ../common/rhnException.py:82
msgid "Invalid value for entry."
msgstr ""

#: ../common/rhnException.py:83
#, python-format
msgid ""
"\n"
"     This system does not have a valid entitlement for SUSE Manager.\n"
"     Please visit https://%(hostname)s/rhn/systems/SystemEntitlements.do\n"
"     or login at https://%(hostname)s, and from the \"Overview\" tab,\n"
"     select \"Subscription Management\" to enable the service for this "
"system.\n"
"     "
msgstr ""

#: ../common/rhnException.py:89
msgid "Channel error"
msgstr ""

#: ../common/rhnException.py:90
msgid "Client session token is invalid."
msgstr ""

#: ../common/rhnException.py:91
msgid "Client session token has expired."
msgstr ""

#: ../common/rhnException.py:92
msgid "You are not authorized to retrieve the requested object."
msgstr ""

#: ../common/rhnException.py:93
msgid "Invalid action"
msgstr ""

#: ../common/rhnException.py:94
msgid "You are not allowed to perform administrative tasks on this system."
msgstr ""

#: ../common/rhnException.py:96
msgid "The system is already subscribed to the specified channel."
msgstr ""

#: ../common/rhnException.py:97
msgid "The system is not currently subscribed to the specified channel."
msgstr ""

#: ../common/rhnException.py:98
msgid "The specified channel does not exist."
msgstr ""

#: ../common/rhnException.py:99
msgid "Invalid channel version."
msgstr ""

#: ../common/rhnException.py:100
msgid ""
"\n"
"     User group membership limits exceeded.\n"
"\n"
"     The current settings for your account do not allow you to add another\n"
"     user account. Please check with the organization administrator for "
"your\n"
"     account if the maximum number of users allowed to subscribe to server "
"needs\n"
"     to be changed.\n"
"     "
msgstr ""

#: ../common/rhnException.py:108
msgid ""
"\n"
"     System group membership limits exceeded.\n"
"\n"
"     The current settings for your account do not allow you to add another\n"
"     system profile. Please check with the organization administrator for "
"your\n"
"     account for modifying the maximum number of system profiles that can "
"be\n"
"     subscribed to your account.\n"
"     "
msgstr ""

#: ../common/rhnException.py:116
msgid ""
"\n"
"     Invalid architecture.\n"
"\n"
"     The architecture of the package is not supported by\n"
"     "
msgstr ""

#: ../common/rhnException.py:121
msgid "Invalid RPM header"
msgstr ""

#: ../common/rhnException.py:122
msgid ""
"\n"
"    This system is already registered as a Salt Minion. If you want to "
"register it as a traditional client\n"
"    please delete it first via the web UI or API and then register it using "
"the traditional tools.\n"
"    "
msgstr ""

#. For the uploading tools
#: ../common/rhnException.py:127
msgid "Invalid information uploaded to the server"
msgstr ""

#: ../common/rhnException.py:128
msgid "Error uploading network interfaces configuration."
msgstr ""

#: ../common/rhnException.py:129
msgid ""
"\n"
"     Package Upload Failed due to uniqueness constraint violation.\n"
"     Make sure the package does not have any duplicate dependencies or\n"
"     does not already exists on the server\n"
"     "
msgstr ""

#: ../common/rhnException.py:134
msgid ""
"\n"
"     The --force rhnpush option is disabled on this server.\n"
"     Please contact your SUSE Manager administrator for more help.\n"
"     "
msgstr ""

#. 60-70: token errors
#: ../common/rhnException.py:140
msgid ""
"\n"
"     The activation token specified could not be found on the server.\n"
"     Please retry with a valid key.\n"
"     "
msgstr ""

#: ../common/rhnException.py:144
msgid "Too many systems registered using this registration token"
msgstr ""

#: ../common/rhnException.py:145
msgid "Token contains invalid, obsoleted or insufficient settings"
msgstr ""

#: ../common/rhnException.py:146
msgid "Conflicting activation tokens"
msgstr ""

#. 70-80: channel subscription errors
#: ../common/rhnException.py:149
msgid ""
"\n"
"     No matching base channel found for your system.\n"
"     "
msgstr ""

#: ../common/rhnException.py:152
msgid ""
"\n"
"     You do not have subscription permission to the designated channel.\n"
"     Please refer to your organization's channel or organization\n"
"     administrators for further details.\n"
"     "
msgstr ""

#: ../common/rhnException.py:157
msgid "You can not unsubscribe from base channel."
msgstr ""

#: ../common/rhnException.py:158
msgid "SUSE Manager or Proxy channel can not be subscribed."
msgstr ""

#. 80-90: server group errors
#: ../common/rhnException.py:161
msgid "There was an error while trying to join the system to its groups"
msgstr ""

#. 90-100: entitlement errors
#: ../common/rhnException.py:164
msgid "Unable to entitle system"
msgstr ""

#. 100-109: e-mail and uuid related faults
#: ../common/rhnException.py:167
msgid "Maximum e-mail length violation."
msgstr ""

#: ../common/rhnException.py:168
msgid "This system has been previously registered."
msgstr ""

#: ../common/rhnException.py:169
msgid "Invalid username"
msgstr ""

#. 140-159 applet errors
#: ../common/rhnException.py:172
msgid "Unable to look up server"
msgstr ""

#. 160-179: OSAD errors
#: ../common/rhnException.py:175
msgid "Required argument is missing"
msgstr ""

#. 600-699: RHEL5+ EN errors
#: ../common/rhnException.py:178
msgid "No entitlement information tied to hardware"
msgstr ""

#: ../common/rhnException.py:179
msgid "Installation number is not entitling"
msgstr ""

#. 700-799: Additional user input verification errors.
#: ../common/rhnException.py:182
msgid "Maximum username length violation"
msgstr ""

#: ../common/rhnException.py:183
msgid "Maximum password length violation"
msgstr ""

#: ../common/rhnException.py:184
msgid "This user has read only API access. Action denied."
msgstr ""

#: ../common/rhnException.py:186
msgid "System Name cannot be less than 1 character"
msgstr ""

#. 1000-1999: Proxy specific errors:
#. issued by a Proxy to the client
#: ../common/rhnException.py:190
msgid "SUSE Manager Proxy error."
msgstr ""

#: ../common/rhnException.py:191
msgid "SUSE Manager Proxy unable to login."
msgstr ""

#. issued by a SUSE Manager Server/Satellite to the proxy
#: ../common/rhnException.py:193
msgid ""
"\n"
"     SUSE Manager Proxy system ID does not match a Spacewalk Proxy Server\n"
"     in the database.\n"
"     "
msgstr ""

#: ../common/rhnException.py:197
msgid "SUSE Manager Proxy session token is invalid."
msgstr ""

#: ../common/rhnException.py:198
msgid "SUSE Manager Proxy session token has expired."
msgstr ""

#. 2000-2999: Red Hat Satellite specific errors:
#: ../common/rhnException.py:202
msgid ""
"\n"
"      user creation is not allowed via mgr_register;\n"
"     please contact your sysadmin to have your account created.\n"
"     "
msgstr ""

#: ../common/rhnException.py:206
msgid ""
"\n"
"     This SUSE Manager server is not allowed to use Inter Server Sync on "
"this server\n"
"     "
msgstr ""

#: ../common/rhnException.py:209
msgid ""
"\n"
"     Inter Server Sync is disabled on this SUSE Manager Server.\n"
"     "
msgstr ""

#. 3000-3999: XML dumper errors:
#: ../common/rhnException.py:214
msgid "Invalid datatype passed"
msgstr ""

#: ../common/rhnException.py:215
msgid "Unable to retrieve channel"
msgstr ""

#: ../common/rhnException.py:216
msgid "Unable to retrieve package"
msgstr ""

#: ../common/rhnException.py:217
msgid "Unable to retrieve erratum"
msgstr ""

#: ../common/rhnException.py:218
msgid "File is missing"
msgstr ""

#: ../common/rhnException.py:219
msgid "Function retrieval error"
msgstr ""

#: ../common/rhnException.py:220
msgid "Function execution error"
msgstr ""

#: ../common/rhnException.py:221
msgid "Missing version string"
msgstr ""

#: ../common/rhnException.py:222
msgid "Invalid version string"
msgstr ""

#: ../common/rhnException.py:223
msgid "Mismatching versions"
msgstr ""

#: ../common/rhnException.py:224
msgid "Invalid channel version"
msgstr ""

#: ../common/rhnException.py:225
msgid "No comps file for channel"
msgstr ""

#: ../common/rhnException.py:226
msgid "Unable to retrieve comps file"
msgstr ""

#. 4000 - 4999: config management errors
#: ../common/rhnException.py:229
msgid "Configuration action missing"
msgstr ""

#: ../common/rhnException.py:230
msgid "File too large"
msgstr ""

#: ../common/rhnException.py:231
msgid "File contains binary data"
msgstr ""

#: ../common/rhnException.py:232
msgid "Configuration channel is not empty"
msgstr ""

#: ../common/rhnException.py:233
msgid "Permission error"
msgstr ""

#: ../common/rhnException.py:234
msgid "Content missing for configuration file"
msgstr ""

#: ../common/rhnException.py:235
msgid "Template delimiters not specified"
msgstr ""

#: ../common/rhnException.py:236
msgid "Configuration channel does not exist"
msgstr ""

#: ../common/rhnException.py:237
msgid "Configuration channel already exists"
msgstr ""

#: ../common/rhnException.py:238
msgid "File missing from configuration channel"
msgstr ""

#: ../common/rhnException.py:239
msgid "Different revision of this file is uploaded"
msgstr ""

#: ../common/rhnException.py:240
msgid "File already uploaded to configuration channel"
msgstr ""

#: ../common/rhnException.py:241
msgid "File size exceeds remaining quota space"
msgstr ""

#: ../common/rhnException.py:242
msgid "Full path of file must be specified"
msgstr ""

#: ../common/rhnException.py:243
msgid "Invalid revision number"
msgstr ""

#: ../common/rhnException.py:244
msgid "Cannot compare files of different file type"
msgstr ""

#. 5000 - 5999: client content uploading errors
#. 5000 - 5099: crash reporting errors
#: ../common/rhnException.py:248
msgid "Crash information is invalid or incomplete"
msgstr ""

#: ../common/rhnException.py:249
msgid "Crash file information is invalid or incomplete"
msgstr ""

#: ../common/rhnException.py:250
msgid "Error composing crash directory path"
msgstr ""

#: ../common/rhnException.py:251
msgid "Error composing crash file path"
msgstr ""

#: ../common/rhnException.py:252 ../common/rhnException.py:259
msgid "Invalid content encoding"
msgstr ""

#: ../common/rhnException.py:253
msgid "Invalid crash name"
msgstr ""

#: ../common/rhnException.py:254
msgid "Crash reporting is disabled for this organization"
msgstr ""

#. 5100 - 5199: scap results reporting error
#: ../common/rhnException.py:256
msgid "SCAP results file transfer is invalid or incomplete"
msgstr ""

#: ../common/rhnException.py:257
msgid "Error composing directory path for detailed SCAP results"
msgstr ""

#: ../common/rhnException.py:258
msgid "Error composing file path for detailed SCAP results"
msgstr ""

#: ../common/rhnException.py:306
msgid ""
"\n"
"     An error has occurred while processing your request. If this problem\n"
"     persists please enter a bug report at scc.suse.com.\n"
"     If you choose to submit the bug report, please be sure to include\n"
"     details of what you were trying to do when this error occurred and\n"
"     details on how to reproduce this problem.\n"
msgstr ""

#: ../common/rhnException.py:358
#, python-format
msgid ""
"Error Message:\n"
"    %s\n"
msgstr ""

#: ../common/rhnException.py:360
#, python-format
msgid "Error Class Code: %s\n"
msgstr ""

#: ../common/rhnException.py:363
#, python-format
msgid "Error Class Info: %s\n"
msgstr ""

#: ../common/rhnException.py:365
#, python-format
msgid "Explanation: %s"
msgstr ""

#: ../common/rhnTB.py:205
#, python-format
msgid "ERROR: %s %s: %s"
msgstr ""

#: ../common/rhnTB.py:207
#, python-format
msgid "TRACEBACK: %s"
msgstr ""

#: ../satellite_tools/disk_dumper/iss.py:1294
#: ../satellite_tools/disk_dumper/iss.py:1298
#, python-format
msgid "format of %s should be at least YYYYMMDD.\n"
msgstr ""

#: ../satellite_tools/messages.py:26
#, python-format
msgid ""
"\n"
"ERROR: executing step %s. Error is:\n"
"%s\n"
msgstr ""

#: ../satellite_tools/messages.py:31
#, python-format
msgid ""
"\n"
"ERROR: there was a problem accessing the channel data from your temporary\n"
"       repository. Did you migrate all of the data from the channel ISOs\n"
"       do this directory? If so, please recheck the channels ISOs, ensure\n"
"       that you have them all, and then iteratively remount and repopulate\n"
"       the temporary repository (%s).\n"
msgstr ""

#: ../satellite_tools/messages.py:39
#, python-format
msgid ""
"\n"
"ERROR: there was a problem synchronizing the information.\n"
"       Error message: %s\n"
msgstr ""

#: ../satellite_tools/messages.py:44
#, python-format
msgid ""
"\n"
"ERROR: There was a problem communicating with the ISS Master.\n"
"       Depending on the specific error details, please review your "
"configuration,\n"
"       basic network connectivity, and/or name resolution, and try again.\n"
"       Error message: %s\n"
msgstr ""

#: ../satellite_tools/messages.py:51
#, python-format
msgid ""
"\n"
"ERROR: There was a problem communicating with the ISS Master.\n"
"       If the master satellite is older than v5.3, it does not have ISS "
"capability.\n"
"       Otherwise, depending on the specific error details, please review "
"your\n"
"       configuration, basic network connectivity, and/or name resolution, "
"and try again.\n"
"       Error message: %s\n"
msgstr ""

#: ../satellite_tools/messages.py:59
#, python-format
msgid ""
"\n"
"ERROR: a child-channel cannot be synced without its parent being synced as\n"
"       well. A parent needs to be either (a) previously synced or (b) "
"synced\n"
"       in tandem with the desired child-channel. Missing parents for this\n"
"       transaction:\n"
"       %s\n"
msgstr ""

#: ../satellite_tools/messages.py:67
#, python-format
msgid ""
"\n"
"ERROR: you are not entitled to sync a channel in this set of channels.\n"
"Please contact your SUSE Manager contact\n"
"%s"
msgstr ""

#: ../satellite_tools/messages.py:72
#, python-format
msgid "  ERROR: not enough free space (%s KB) on device."
msgstr ""

#: ../satellite_tools/messages.py:74
#, python-format
msgid "    %3d/%s Fetch successful: %s (%s bytes)"
msgstr ""

#: ../satellite_tools/messages.py:75
#, python-format
msgid "    Extinct package:  %s"
msgstr ""

#: ../satellite_tools/messages.py:76
#, python-format
msgid "   Total size: %s"
msgstr ""

#: ../satellite_tools/messages.py:77
#, python-format
msgid "      Downloaded %s of %s. Estimated remaining time: %s"
msgstr ""

#: ../satellite_tools/messages.py:78
#, python-format
msgid "    Fetch unsuccessful: %s"
msgstr ""

#: ../satellite_tools/messages.py:79
#, python-format
msgid "   RPM fetch summary: %s"
msgstr ""

#: ../satellite_tools/messages.py:80
#, python-format
msgid "       success: %d"
msgstr ""

#: ../satellite_tools/messages.py:81
#, python-format
msgid "       failed:  %d"
msgstr ""

#: ../satellite_tools/messages.py:82
#, python-format
msgid "       extinct: %d"
msgstr ""

#: ../satellite_tools/messages.py:84
#, python-format
msgid "   Retrieving / parsing *relevant* package metadata: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:85
#, python-format
msgid "   Retrieving / parsing errata data: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:86
#, python-format
msgid "   Retrieving / parsing kickstart data: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:87
#, python-format
msgid "   Retrieving / parsing kickstart tree files: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:88
#, python-format
msgid "   Importing *relevant* package metadata: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:89
msgid "   * WARNING: this may be a slow process."
msgstr ""

#: ../satellite_tools/messages.py:90
msgid "Linking packages to channels"
msgstr ""

#: ../satellite_tools/messages.py:91
#, python-format
msgid "   Importing *relevant* errata: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:92
msgid "   No new kickstartable tree to import"
msgstr ""

#: ../satellite_tools/messages.py:93
#, python-format
msgid "Importing kickstartable trees (%d)"
msgstr ""

#: ../satellite_tools/messages.py:94
#, python-format
msgid "Imported kickstartable trees (%d)"
msgstr ""

#: ../satellite_tools/reposync.py:111 ../satellite_tools/satsync.py:439
msgid "+++ sending log as an email +++"
msgstr ""

#: ../satellite_tools/reposync.py:114
#, python-format
msgid "%s sync. report from %s"
msgstr ""

#: ../satellite_tools/reposync.py:124 ../satellite_tools/satsync.py:449
msgid "+++ email requested, but there is nothing to send +++"
msgstr ""

#: ../satellite_tools/rhn_satellite_activate.py:198
#, python-format
msgid ""
"\"%s\" (specified in commandline)\n"
"could not be opened and read:\n"
"%s"
msgstr ""

#: ../satellite_tools/rhn_satellite_activate.py:205
#, python-format
msgid ""
"\"%s\" could not be opened\n"
"and/or written to:\n"
"%s"
msgstr ""

#: ../satellite_tools/satsync.py:258
#, python-format
msgid "No handler for step %s"
msgstr ""

#. Try one more time - this time it should be faster since
#. everything should be cached
#: ../satellite_tools/satsync.py:270
msgid "Environment changed, trying again..."
msgstr ""

#: ../satellite_tools/satsync.py:277
msgid "ERROR: Encountered IntegrityError: \n"
msgstr ""

#: ../satellite_tools/satsync.py:285
msgid "Repeated failures"
msgstr ""

#: ../satellite_tools/satsync.py:290
#, python-format
msgid ""
"    Import complete:\n"
"        Begin time: %s\n"
"        End time:   %s\n"
"        Elapsed:    %s\n"
"          "
msgstr ""

#: ../satellite_tools/satsync.py:311
msgid "hours"
msgstr ""

#: ../satellite_tools/satsync.py:311
msgid "minutes"
msgstr ""

#: ../satellite_tools/satsync.py:311
msgid "seconds"
msgstr ""

#: ../satellite_tools/satsync.py:357
msgid ""
"ERROR: The dump is missing package data, use --no-rpms to skip this step or "
"fix the content to include package data."
msgstr ""

#. the orgs() method doesn't exist; that's fine we just
#. won't sync the orgs
#: ../satellite_tools/satsync.py:404
msgid "The SUSE Manager master does not support syncing orgs data."
msgstr ""

#: ../satellite_tools/satsync.py:404
msgid "Skipping..."
msgstr ""

#: ../satellite_tools/satsync.py:442
#, python-format
msgid "SUSE Manager Inter Server sync. report from %s"
msgstr ""

#: ../satellite_tools/satsync.py:521
msgid " - file-system synchronization"
msgstr ""

#: ../satellite_tools/satsync.py:533 ../satellite_tools/satsync.py:541
msgid " - live synchronization"
msgstr ""

#: ../satellite_tools/satsync.py:534
#, python-brace-format
msgid ""
"ERROR: Live content synchronizing with RHN Classic Hosted is no longer "
"supported.\n"
"Please use the cdn-sync command instead unless you are attempting to sync "
"from another {PRODUCT_NAME} via Inter-Server-Sync (ISS), or from local "
"content on disk via Channel Dump ISOs."
msgstr ""

#: ../satellite_tools/satsync.py:542
#, python-format
msgid "   url: %s"
msgstr ""

#: ../satellite_tools/satsync.py:543
#, python-format
msgid "   debug/output level: %s"
msgstr ""

#: ../satellite_tools/satsync.py:553
msgid "ERROR: this server must be registered with SUSE Manager."
msgstr ""

#: ../satellite_tools/satsync.py:575
#, python-format
msgid "Retrieving / parsing %s data"
msgstr ""

#: ../satellite_tools/satsync.py:585 ../satellite_tools/satsync.py:600
msgid "*** SYSTEM INTERRUPT CALLED ***"
msgstr ""

#: ../satellite_tools/satsync.py:593
msgid "ERROR: fatal parser exception occurred "
msgstr ""

#: ../satellite_tools/satsync.py:594
#, python-format
msgid "(line: %s, col: %s msg: %s)"
msgstr ""

#: ../satellite_tools/satsync.py:598
#, python-format
msgid "ERROR: parser exception occurred: %s"
msgstr ""

#: ../satellite_tools/satsync.py:603
msgid "ERROR: exception (during parse) occurred: "
msgstr ""

#: ../satellite_tools/satsync.py:604
#, python-format
msgid ""
"   Encountered some errors with %s data (see logs (%s) for more information)"
msgstr ""

#: ../satellite_tools/satsync.py:606
#, python-format
msgid "   Encountered some errors with %s data:"
msgstr ""

#: ../satellite_tools/satsync.py:607
#, python-format
msgid "   ------- %s PARSE/IMPORT ERROR -------"
msgstr ""

#: ../satellite_tools/satsync.py:609
msgid "   ---------------------------------------"
msgstr ""

#: ../satellite_tools/satsync.py:612
#, python-format
msgid "%s data complete"
msgstr ""

#: ../satellite_tools/satsync.py:665
msgid "Retrieving / parsing channel data"
msgstr ""

#: ../satellite_tools/satsync.py:718
msgid "Channel data complete"
msgstr ""

#: ../satellite_tools/satsync.py:736
#, python-format
msgid "%10s import from %s"
msgstr ""

#: ../satellite_tools/satsync.py:739
#, python-format
msgid "%10s import from %s - %s"
msgstr ""

#: ../satellite_tools/satsync.py:743
#, python-format
msgid "%10s"
msgstr ""

#: ../satellite_tools/satsync.py:750
msgid "p"
msgstr ""

#: ../satellite_tools/satsync.py:752
msgid "."
msgstr ""

#: ../satellite_tools/satsync.py:758
msgid "   p = previously imported/synced channel"
msgstr ""

#: ../satellite_tools/satsync.py:759
msgid "   . = channel not yet imported/synced"
msgstr ""

#: ../satellite_tools/satsync.py:765
msgid "   e = channel no longer supported (end-of-service)"
msgstr ""

#: ../satellite_tools/satsync.py:767
msgid "   ? = channel label invalid --- typo?"
msgstr ""

#: ../satellite_tools/satsync.py:771
#, python-format
msgid "   %s:"
msgstr ""

#: ../satellite_tools/satsync.py:772
#, python-format
msgid "      %s %-40s %4s %s"
msgstr ""

#: ../satellite_tools/satsync.py:773
msgid "base-channels"
msgstr ""

#: ../satellite_tools/satsync.py:786 ../satellite_tools/satsync.py:1603
msgid "NONE RELEVANT"
msgstr ""

#: ../satellite_tools/satsync.py:808
msgid "end-of-service"
msgstr ""

#: ../satellite_tools/satsync.py:809
msgid "e"
msgstr ""

#: ../satellite_tools/satsync.py:815
msgid "   typos:"
msgstr ""

#: ../satellite_tools/satsync.py:816
msgid "?"
msgstr ""

#: ../satellite_tools/satsync.py:831
#, python-format
msgid "XXX: imported channels: %s"
msgstr ""

#: ../satellite_tools/satsync.py:832
#, python-format
msgid "XXX:   cached channels: %s"
msgstr ""

#: ../satellite_tools/satsync.py:837
msgid "XXX: list channels called"
msgstr ""

#: ../satellite_tools/satsync.py:855
msgid "ERROR: these channels either do not exist or are not available:"
msgstr ""

#: ../satellite_tools/satsync.py:859
#, python-format
msgid "       (to see a list of channel labels: %s --list-channels)"
msgstr ""

#: ../satellite_tools/satsync.py:904
#, python-format
msgid "   Retrieving / parsing short package metadata: %s (%s)"
msgstr ""

#: ../satellite_tools/satsync.py:965
#, python-format
msgid "Diffing package metadata (what's missing locally?): %s"
msgstr ""

#: ../satellite_tools/satsync.py:971 ../satellite_tools/satsync.py:1254
msgid "Diffing:    "
msgstr ""

#: ../satellite_tools/satsync.py:988
msgid "ERROR: incremental dump skipped"
msgstr ""

#: ../satellite_tools/satsync.py:1079
msgid "Downloading rpm packages"
msgstr ""

#: ../satellite_tools/satsync.py:1084
#, python-format
msgid "   Fetching any missing RPMs: %s (%s)"
msgstr ""

#: ../satellite_tools/satsync.py:1085 ../satellite_tools/satsync.py:1153
msgid "NONE MISSING"
msgstr ""

#: ../satellite_tools/satsync.py:1094
msgid "Processing rpm packages complete"
msgstr ""

#: ../satellite_tools/satsync.py:1121
msgid "Downloading package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1146
msgid "Downloading srpm packages"
msgstr ""

#: ../satellite_tools/satsync.py:1152
#, python-format
msgid "   Fetching any missing SRPMs: %s (%s)"
msgstr ""

#: ../satellite_tools/satsync.py:1249
#, python-format
msgid "Diffing source package metadata (what's missing locally?): %s"
msgstr ""

#: ../satellite_tools/satsync.py:1260
msgid "Downloading source package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1338 ../satellite_tools/satsync.py:2027
#, python-format
msgid "Unable to save file %s: %s"
msgstr ""

#. for
#. Retried a number of times and it still failed; log the
#. file as being failed and move on
#: ../satellite_tools/satsync.py:1345
#, python-format
msgid "Failed to fetch file %s"
msgstr ""

#: ../satellite_tools/satsync.py:1350
msgid "Downloading kickstartable trees metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1365
msgid "Downloading kickstartable trees files"
msgstr ""

#: ../satellite_tools/satsync.py:1504
#, python-format
msgid "Grabbing all patches for channel %s"
msgstr ""

#: ../satellite_tools/satsync.py:1554
msgid "Downloading patch data"
msgstr ""

#: ../satellite_tools/satsync.py:1556
msgid "Forcing download of all patch data for requested channels."
msgstr ""

#: ../satellite_tools/satsync.py:1571
msgid "Downloading patch data complete"
msgstr ""

#: ../satellite_tools/satsync.py:1576 ../satellite_tools/satsync.py:1597
msgid "Downloading:"
msgstr ""

#: ../satellite_tools/satsync.py:1579
msgid " - complete"
msgstr ""

#: ../satellite_tools/satsync.py:1624
msgid "Importing source package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1627
msgid "Importing package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1635
msgid "Importing:  "
msgstr ""

#. not in the cache
#: ../satellite_tools/satsync.py:1703
msgid ""
"Package Not Found in Cache, Clear the Cache "
"to                                  Regenerate it."
msgstr ""

#: ../satellite_tools/satsync.py:1709
msgid "Importing channel patches"
msgstr ""

#: ../satellite_tools/satsync.py:1714
#, python-format
msgid "Importing %s patches for channel %s."
msgstr ""

#. Incomplete configuration
#: ../satellite_tools/satsync.py:2113
msgid "ERROR: server.mount_point not set in the configuration file"
msgstr ""

#: ../satellite_tools/satsync.py:2117
#, python-format
msgid "ERROR: server.mount_point %s do not exist"
msgstr ""

#: ../satellite_tools/satsync.py:2122
#, python-format
msgid "ERROR: path under server.mount_point (%s)  do not exist"
msgstr ""

#: ../satellite_tools/satsync.py:2199
#, python-format
msgid "Commandline: %s"
msgstr ""

#: ../satellite_tools/satsync.py:2202
#, python-format
msgid ""
"DEBUG ONLY: max. batch-size for XML/database-import processing (1..%s).\"man "
"satellite-sync\" for more information."
msgstr ""

#: ../satellite_tools/satsync.py:2205
msgid "alternative SSL CA Cert (fullpath to cert file)"
msgstr ""

#: ../satellite_tools/satsync.py:2207
msgid "process data for this channel only"
msgstr ""

#: ../satellite_tools/satsync.py:2209
msgid ""
"disk dump will be considered to be a full export; see \"man satellite-sync\" "
"for more information."
msgstr ""

#: ../satellite_tools/satsync.py:2212
msgid "existing custom channels will also be synced (unless -c is used)"
msgstr ""

#: ../satellite_tools/satsync.py:2214
#, python-format
msgid ""
"override debug level set in /etc/rhn/rhn.conf (which is currently set at %s)."
msgstr ""

#: ../satellite_tools/satsync.py:2216
#, python-format
msgid "requested version of XML dump (default: %s)"
msgstr ""

#: ../satellite_tools/satsync.py:2218
msgid "e-mail a report of what was synced/imported"
msgstr ""

#: ../satellite_tools/satsync.py:2220
msgid "forcibly process all (not a diff of) patch metadata"
msgstr ""

#: ../satellite_tools/satsync.py:2222
msgid "Do not use an http proxy under any circumstances."
msgstr ""

#: ../satellite_tools/satsync.py:2224
msgid "alternative http proxy (hostname:port)"
msgstr ""

#: ../satellite_tools/satsync.py:2226
msgid "alternative http proxy username"
msgstr ""

#: ../satellite_tools/satsync.py:2228
msgid "alternative http proxy password"
msgstr ""

#: ../satellite_tools/satsync.py:2230
msgid "parent SUSE Manager to import content from"
msgstr ""

#: ../satellite_tools/satsync.py:2232
msgid "list all available channels and exit"
msgstr ""

#: ../satellite_tools/satsync.py:2234
msgid "help on all error codes mgr-inter-sync returns"
msgstr ""

#: ../satellite_tools/satsync.py:2236
msgid "source mount point for import - disk update only"
msgstr ""

#: ../satellite_tools/satsync.py:2238
msgid "do not process patch data"
msgstr ""

#: ../satellite_tools/satsync.py:2240
msgid "do not process kickstart data (provisioning only)"
msgstr ""

#: ../satellite_tools/satsync.py:2242
msgid "do not process full package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:2244
msgid "do not download, or process any RPMs"
msgstr ""

#: ../satellite_tools/satsync.py:2246
msgid "turn off SSL (not recommended)"
msgstr ""

#: ../satellite_tools/satsync.py:2248
msgid "org to which the sync imports data. defaults to the admin account"
msgstr ""

#: ../satellite_tools/satsync.py:2250
msgid "print the configuration and exit"
msgstr ""

#: ../satellite_tools/satsync.py:2252
msgid "alternative server with which to connect (hostname)"
msgstr ""

#: ../satellite_tools/satsync.py:2254
msgid "synchronize to this step (man satellite-sync for more info)"
msgstr ""

#: ../satellite_tools/satsync.py:2256
msgid "write complete data to tempfile before streaming to remainder of app"
msgstr ""

#: ../satellite_tools/satsync.py:2258
msgid "DEBUG ONLY: alternative path to digital system id"
msgstr ""

#: ../satellite_tools/satsync.py:2260
msgid "alternative email address(es) for sync output (--email option)"
msgstr ""

#: ../satellite_tools/satsync.py:2262
msgid "do not remove rpms when importing from local dump"
msgstr ""

#: ../satellite_tools/satsync.py:2264
msgid ""
"the fully qualified domain name of the master Satellite. Valid with --mount-"
"point only. Required if you want to import org data and channel permissions."
msgstr ""

#: ../satellite_tools/satsync.py:2274
#, python-format
msgid "ERROR: these arguments make no sense in this context (try --help): %s"
msgstr ""

#. An SQL error is fatal... crash and burn
#: ../satellite_tools/satsync.py:2286
#, python-format
msgid "ERROR: Can't connect to the database: %s"
msgstr ""

#: ../satellite_tools/satsync.py:2287
msgid "ERROR: Check if your database is running."
msgstr ""

#: ../satellite_tools/satsync.py:2322
#, python-format
msgid "ERROR: --debug-level takes an in integer value within the range %s."
msgstr ""

#: ../satellite_tools/satsync.py:2324
msgid "  0  - little logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2325
msgid "  1  - minimal logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2326
msgid "  2  - normal level of logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2327
msgid "  3  - lots of logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2328
msgid "  4+ - excessive logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2341
msgid "ERROR: The --master option is only valid with the --mount-point option"
msgstr ""

#: ../satellite_tools/satsync.py:2351
#, python-format
msgid "ERROR: Unable to lookup Org Id %s"
msgstr ""

#: ../satellite_tools/satsync.py:2360
msgid ""
"WARNING: --list-channels option overrides any --step option. --step ignored."
msgstr ""

#: ../satellite_tools/satsync.py:2375
#, python-format
msgid ""
"ERROR: '%s' is not a valid step. See 'man mgr-inter-sync' for more detail."
msgstr ""

#: ../satellite_tools/satsync.py:2407
msgid ""
"ERROR: No channels currently imported; try mgr-inter-sync --list-channels; "
"then mgr-inter-sync -c chn0 -c chn1..."
msgstr ""

#. int(None) --> TypeError
#. int('a')  --> ValueError
#: ../satellite_tools/satsync.py:2457 ../satellite_tools/satsync.py:2461
msgid "ERROR: --batch-size must have a value within the range: 1..50"
msgstr ""

#: ../satellite_tools/satsync.py:2469
#, python-format
msgid "ERROR: no such directory %s"
msgstr ""

#: ../satellite_tools/satsync.py:2474
msgid "Error Codes: Returned codes means:"
msgstr ""

#: ../satellite_tools/satsync.py:2475
msgid " -1  - Could not lock file or KeyboardInterrupt or SystemExit"
msgstr ""

#: ../satellite_tools/satsync.py:2476
msgid "  0  - User interrupted or intentional exit"
msgstr ""

#: ../satellite_tools/satsync.py:2477
msgid "  1  - attempting to run more than one instance of mgr-inter-sync."
msgstr ""

#: ../satellite_tools/satsync.py:2478
msgid "  2  - Unable to find synchronization tools."
msgstr ""

#: ../satellite_tools/satsync.py:2479
msgid "  3  - a general socket exception occurred"
msgstr ""

#: ../satellite_tools/satsync.py:2480
msgid "  4  - an SSL error occurred. Recheck your SSL settings."
msgstr ""

#: ../satellite_tools/satsync.py:2481
msgid "  5  - ISS error"
msgstr ""

#: ../satellite_tools/satsync.py:2482
msgid "  6  - unhandled exception occurred"
msgstr ""

#: ../satellite_tools/satsync.py:2483
msgid "  7  - unknown sync error"
msgstr ""

#: ../satellite_tools/satsync.py:2484
msgid "  8  - ERROR: must be root to execute"
msgstr ""

#: ../satellite_tools/satsync.py:2485
msgid "  9  - rpclib fault during synchronization init"
msgstr ""

#: ../satellite_tools/satsync.py:2486
msgid "  10 - synchronization init error"
msgstr ""

#: ../satellite_tools/satsync.py:2487
msgid "  11 - Error parsing XML stream"
msgstr ""

#: ../satellite_tools/satsync.py:2488
msgid "  12 - Channel do not exist"
msgstr ""

#: ../satellite_tools/satsync.py:2489
msgid "  13 - SQL error during importing package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:2490
msgid "  14 - SQL error during linking channel packages"
msgstr ""

#: ../satellite_tools/satsync.py:2491
msgid "  15 - SQL error during xml processing"
msgstr ""

#: ../satellite_tools/satsync.py:2492
msgid "  16 - server.mount_point not set in the configuration file"
msgstr ""

#: ../satellite_tools/satsync.py:2493
msgid ""
"  17 - SQL error during retrieving the channels already imported in the SUSE "
"Manager database"
msgstr ""

#: ../satellite_tools/satsync.py:2494
msgid "  18 - Wrong db connection string in rhn.conf"
msgstr ""

#: ../satellite_tools/satsync.py:2495
msgid "  19 - Bad arguments"
msgstr ""

#: ../satellite_tools/satsync.py:2496
msgid "  20 - Could not connect to db."
msgstr ""

#: ../satellite_tools/satsync.py:2497
msgid "  21 - Bad debug level"
msgstr ""

#: ../satellite_tools/satsync.py:2498
msgid "  22 - Not valid step"
msgstr ""

#: ../satellite_tools/satsync.py:2499
msgid "  24 - no such file"
msgstr ""

#: ../satellite_tools/satsync.py:2500
msgid "  25 - no such directory"
msgstr ""

#: ../satellite_tools/satsync.py:2501
msgid "  26 - mount_point does not exist"
msgstr ""

#: ../satellite_tools/satsync.py:2502
msgid "  27 - No such org"
msgstr ""

#: ../satellite_tools/satsync.py:2503
msgid "  28 - error: --master is only valid with --mount-point"
msgstr ""

#: ../satellite_tools/satsync.py:2510
#, python-format
msgid "ERROR: unknown dump version, try one of %s"
msgstr ""
   0707010000008D000081B40000000000000000000000016290A0C10000B61F000000000000000000000000000000000000001B00000000spacewalk-backend/po/sq.po    # SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
#
# Translators:
msgid ""
msgstr ""
"Project-Id-Version: Spacewalk\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-10-16 13:34+0200\n"
"PO-Revision-Date: 2011-03-04 16:08+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Albanian (http://www.transifex.com/projects/p/fedora/language/"
"sq/)\n"
"Language: sq\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"

#: ../server/apacheAuth.py:66
#, python-format
msgid "incomplete proxy authentication token: %s"
msgstr ""

#: ../server/apacheAuth.py:84
#, python-format
msgid "Sent proxy signature %s does not match ours %s."
msgstr ""

#: ../server/apacheAuth.py:119
msgid "declined proxy authentication"
msgstr ""

#: ../server/apacheRequest.py:59
#, python-format
msgid "Invalid request received (%s)."
msgstr ""

#: ../server/apacheRequest.py:120
#, python-format
msgid ""
"IMPORTANT MESSAGE FOLLOWS:\n"
"%s"
msgstr ""

#: ../server/apacheRequest.py:149
#, python-format
msgid ""
"While running '%s': caught\n"
"%s : %s\n"
msgstr ""

#: ../server/apacheRequest.py:606
#, python-format
msgid "Invalid URI %s"
msgstr ""

#: ../server/configFilesHandler.py:129 ../server/handlers/app/packages.py:192
#: ../server/handlers/xmlrpc/registration.py:215
#: ../server/handlers/xmlrpc/registration.py:1168
#: ../server/handlers/xmlrpc/registration.py:1307
#, python-format
msgid ""
"\n"
"                   %s Account has been deactivated on this server.\n"
"                   Please contact your Org administrator for more help."
msgstr ""

#: ../server/handlers/applet/applet.py:78
#, python-brace-format
msgid "Your system was not found in the {PRODUCT_NAME} database"
msgstr ""

#: ../server/handlers/sat/auth.py:45
msgid "ISS is disabled on this server."
msgstr ""

#: ../server/handlers/sat/auth.py:50
#, python-format
msgid "Server \"%s\" is not enabled for ISS."
msgstr ""

#: ../server/handlers/xmlrpc/errata.py:64
#, python-format
msgid "Expected a package name, not: %s"
msgstr ""

#: ../server/handlers/xmlrpc/errata.py:115
#, python-format
msgid "Expected a package, not: %s"
msgstr ""

#: ../server/handlers/xmlrpc/proxy.py:65
#, python-format
msgid "SUSE Manager Proxy service not enabled for server profile: \"%s\""
msgstr ""

#: ../server/handlers/xmlrpc/proxy.py:85
msgid "Invalid session key"
msgstr ""

#: ../server/handlers/xmlrpc/proxy.py:93
msgid "This server ID no longer exists"
msgstr ""

#: ../server/handlers/xmlrpc/queue.py:433
#, python-format
msgid "Invalid action value type %s (%s)"
msgstr ""

#: ../server/handlers/xmlrpc/queue.py:464
#, python-format
msgid "Action %s does not belong to server %s"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:194
msgid "Required data missing"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:198
msgid "Required members missing"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:207
msgid "Attempt to register a system to an invalid username"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:839
msgid "Invalid system release version requested"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1063
msgid ""
"Unable to find a valid network interface, both ipaddr and ip6addr not found."
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1115
#, python-brace-format
msgid "{PRODUCT_NAME} Welcome Message"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1125
msgid "Privacy Statement"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1146
msgid "Expected a dictionary as a product argument"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1374
#, python-format
msgid "Invalid value '%s' for %s (%s)"
msgstr ""

#: ../server/handlers/xmlrpc/scap.py:104
msgid "Invalid system_id/action_id pair."
msgstr ""

#: ../server/handlers/xmlrpc/up2date.py:233
#, python-format
msgid "Invalid value %s (%s)"
msgstr ""

#: ../server/importlib/userAuth.py:98
msgid "You are not authorized to manage packages in the null org"
msgstr ""

#: ../server/importlib/userAuth.py:103
#, python-format
msgid "You are not allowed to manage packages in the %s org"
msgstr ""

#: ../server/importlib/userAuth.py:121
msgid "You are not allowed to perform administrative tasks"
msgstr ""

#: ../server/importlib/userAuth.py:144
#, python-format
msgid ""
"You are not allowed to manage channel %s, or that channel does not exist"
msgstr ""

#: ../server/importlib/userAuth.py:204
#, python-format
msgid ""
"\n"
"               %s Account has been deactivated on this server.\n"
"               Please contact your Org administrator for more help."
msgstr ""

#: ../server/rhnChannel.py:1992
#, python-format
msgid ""
"Your account does not have access to any channels matching "
"(release='%(release)s', arch='%(arch)s')%(www_activation)s"
msgstr ""

#: ../server/rhnChannel.py:2002
msgid ""
"\n"
"If you have a registration number, please register with it first at http://"
"www.redhat.com/apps/activate/ and then try again.\n"
"\n"
msgstr ""

#: ../server/rhnChannel.py:2012
#, python-format
msgid "Insufficient subscription permissions for release (%s, %s"
msgstr ""

#. Various messages that can be reused
#.
#. bretm 02/07/2007 -- when we have better old-client documentation, probably
#. will be safe to get rid of all this crap
#: ../server/rhnChannel.py:2276 ../server/rhnChannel.py:2287
#: ../server/rhnChannel.py:2302
msgid "System Registered but Inactive"
msgstr ""

#: ../server/rhnChannel.py:2277
#, python-format
msgid ""
"\n"
"Invalid Architecture and OS release combination (%s, %s).\n"
"Your system has been registered, but will not receive updates\n"
"because it is not subscribed to a channel. If you have not yet\n"
"activated your product for service, please visit our website at:\n"
"\n"
"     http://www.redhat.com/apps/activate/\n"
"\n"
"...to activate your product."
msgstr ""

#: ../server/rhnChannel.py:2288
#, python-format
msgid ""
"\n"
"Invalid Architecture and OS release combination (%s, %s).\n"
"Your system has been registered, but will not receive updates\n"
"because it could not be subscribed to a base channel.\n"
"Please contact your organization administrator for assistance.\n"
msgstr ""

#: ../server/rhnChannel.py:2295
#, python-format
msgid ""
"\n"
"  This system has been successfully registered, but is not yet entitled\n"
"  to service.  To entitle this system to service, login to the web site at:\n"
"\n"
"  %(entitlement_url)s\n"
msgstr ""

#: ../server/rhnChannel.py:2303
#, python-format
msgid ""
"\n"
"  This system has been successfully registered, but no service entitlements\n"
"  were available.  To entitle this system to service, login to the web site "
"at:\n"
"\n"
"  %(entitlement_url)s\n"
msgstr ""

#: ../server/rhnHandler.py:62
msgid "Please run rhn_register as root on this client"
msgstr ""

#: ../server/rhnHandler.py:75
#, python-format
msgid "Service not enabled for system profile: \"%s\""
msgstr ""

#: ../server/rhnPackage.py:49 ../server/rhnPackage.py:87
#: ../server/rhnPackage.py:107 ../server/rhnPackage.py:158
#, python-format
msgid "Invalid RPM package %s requested"
msgstr ""

#: ../server/rhnPackage.py:112
msgid "Package not found"
msgstr ""

#: ../server/rhnServer/server_class.py:97
#, python-format
msgid "Architecture `%s' is not supported"
msgstr ""

#: ../server/rhnServer/server_token.py:78
#, python-format
msgid "Token `%s' has more than one base channel assigned"
msgstr ""

#: ../server/rhnServer/server_token.py:80
msgid "Conflicting base channels"
msgstr ""

#: ../server/rhnServer/server_token.py:190
#, python-format
msgid "Failed to add server to group %s"
msgstr ""

#: ../server/rhnServer/server_token.py:503
#, python-format
msgid "Maximum usage count of %s reached"
msgstr ""

#: ../server/rhnServer/server_token.py:744
msgid ""
"Stacking of re-registration tokens with different base entitlements is not "
"supported"
msgstr ""

#: ../server/rhnServer/server_token.py:811
#, python-format
msgid "Could not find token '%s'"
msgstr ""

#. Cannot use activation keys from different orgs
#: ../server/rhnServer/server_token.py:843
msgid "Tokens from mismatching orgs"
msgstr ""

#. Two tokens with different kickstart sessions
#: ../server/rhnServer/server_token.py:853
msgid "Kickstart session mismatch"
msgstr ""

#: ../server/rhnServer/server_token.py:877
msgid "Stacking of re-registration tokens is not supported"
msgstr ""

#: ../server/rhnUser.py:289 ../server/rhnUser.py:292
msgid "Invalid username/password combination"
msgstr ""

#. nope, not reserved either
#: ../server/rhnUser.py:467
#, python-format
msgid "Username `%s' has not been reserved"
msgstr ""

#. New accounts have to specify an e-mail address
#: ../server/rhnUser.py:473
msgid "E-mail address not specified"
msgstr ""

#: ../server/rhnUser.py:509
#, python-format
msgid "username should be at least %d characters"
msgstr ""

#: ../server/rhnUser.py:512
#, python-format
msgid "username should be less than %d characters"
msgstr ""

#: ../server/rhnUser.py:523
#, python-format
msgid "username = `%s', invalid character `%s'"
msgstr ""

#: ../server/rhnUser.py:542
#, python-format
msgid "Please limit your e-mail address to %s chars"
msgstr ""

#: ../server/rhnUser.py:623
#, python-format
msgid "password must be at least %d characters"
msgstr ""

#: ../server/rhnUser.py:626
#, python-format
msgid "Password must be shorter than %d characters"
msgstr ""

#: ../server/rhnUser.py:644
#, python-format
msgid "password contains character `%s'"
msgstr ""

#: ../server/rhnUser.py:651
#, python-format
msgid "username should be at least %d characters long"
msgstr ""

#: ../server/rhnUser.py:662
#, python-format
msgid "Cannot register usernames ending with %s"
msgstr ""

#. 0-999: Red Hat client/client-like interaction errors:
#: ../common/rhnException.py:53
msgid "This does not appear to be a valid username."
msgstr ""

#: ../common/rhnException.py:54
msgid "Invalid username and password combination."
msgstr ""

#: ../common/rhnException.py:55
msgid "This login is already taken, or the password is incorrect."
msgstr ""

#: ../common/rhnException.py:56
msgid "Permission denied."
msgstr ""

#: ../common/rhnException.py:57
msgid "Object not found."
msgstr ""

#: ../common/rhnException.py:58
msgid "Invalid System Digital ID."
msgstr ""

#: ../common/rhnException.py:59
msgid "Invalid System Credentials."
msgstr ""

#: ../common/rhnException.py:60
msgid "Could not retrieve user data from database."
msgstr ""

#: ../common/rhnException.py:61
msgid "Valid username required."
msgstr ""

#: ../common/rhnException.py:62
msgid "Valid password required."
msgstr ""

#: ../common/rhnException.py:63
msgid "Minimum username length violation."
msgstr ""

#: ../common/rhnException.py:64
msgid "Minimum password length violation."
msgstr ""

#: ../common/rhnException.py:65
msgid "The username contains invalid characters."
msgstr ""

#: ../common/rhnException.py:66
msgid "File not found."
msgstr ""

#: ../common/rhnException.py:67
msgid "Architecture and OS version combination is not supported."
msgstr ""

#: ../common/rhnException.py:68
msgid "Could not retrieve system data from database."
msgstr ""

#: ../common/rhnException.py:69
msgid "Invalid arguments passed to function."
msgstr ""

#: ../common/rhnException.py:70
msgid "Unable to retrieve requested entry."
msgstr ""

#: ../common/rhnException.py:71
msgid "Could not update database entry."
msgstr ""

#: ../common/rhnException.py:72
msgid "Unsupported server architecture."
msgstr ""

#: ../common/rhnException.py:73
#, python-format
msgid ""
"\n"
"     The anonymous server functionality is no longer available.\n"
"\n"
"     Please re-register this system by running mgr_register as root.\n"
"     Please visit https://%(hostname)s/rhn/systems/SystemEntitlements.do\n"
"     or login at https://%(hostname)s, and from the \"Overview\" tab,\n"
"     select \"Subscription Management\" to enable the service for this "
"system.\n"
"     "
msgstr ""

#: ../common/rhnException.py:81
msgid "Record not available in the database."
msgstr ""

#: ../common/rhnException.py:82
msgid "Invalid value for entry."
msgstr ""

#: ../common/rhnException.py:83
#, python-format
msgid ""
"\n"
"     This system does not have a valid entitlement for SUSE Manager.\n"
"     Please visit https://%(hostname)s/rhn/systems/SystemEntitlements.do\n"
"     or login at https://%(hostname)s, and from the \"Overview\" tab,\n"
"     select \"Subscription Management\" to enable the service for this "
"system.\n"
"     "
msgstr ""

#: ../common/rhnException.py:89
msgid "Channel error"
msgstr ""

#: ../common/rhnException.py:90
msgid "Client session token is invalid."
msgstr ""

#: ../common/rhnException.py:91
msgid "Client session token has expired."
msgstr ""

#: ../common/rhnException.py:92
msgid "You are not authorized to retrieve the requested object."
msgstr ""

#: ../common/rhnException.py:93
msgid "Invalid action"
msgstr ""

#: ../common/rhnException.py:94
msgid "You are not allowed to perform administrative tasks on this system."
msgstr ""

#: ../common/rhnException.py:96
msgid "The system is already subscribed to the specified channel."
msgstr ""

#: ../common/rhnException.py:97
msgid "The system is not currently subscribed to the specified channel."
msgstr ""

#: ../common/rhnException.py:98
msgid "The specified channel does not exist."
msgstr ""

#: ../common/rhnException.py:99
msgid "Invalid channel version."
msgstr ""

#: ../common/rhnException.py:100
msgid ""
"\n"
"     User group membership limits exceeded.\n"
"\n"
"     The current settings for your account do not allow you to add another\n"
"     user account. Please check with the organization administrator for "
"your\n"
"     account if the maximum number of users allowed to subscribe to server "
"needs\n"
"     to be changed.\n"
"     "
msgstr ""

#: ../common/rhnException.py:108
msgid ""
"\n"
"     System group membership limits exceeded.\n"
"\n"
"     The current settings for your account do not allow you to add another\n"
"     system profile. Please check with the organization administrator for "
"your\n"
"     account for modifying the maximum number of system profiles that can "
"be\n"
"     subscribed to your account.\n"
"     "
msgstr ""

#: ../common/rhnException.py:116
msgid ""
"\n"
"     Invalid architecture.\n"
"\n"
"     The architecture of the package is not supported by\n"
"     "
msgstr ""

#: ../common/rhnException.py:121
msgid "Invalid RPM header"
msgstr ""

#: ../common/rhnException.py:122
msgid ""
"\n"
"    This system is already registered as a Salt Minion. If you want to "
"register it as a traditional client\n"
"    please delete it first via the web UI or API and then register it using "
"the traditional tools.\n"
"    "
msgstr ""

#. For the uploading tools
#: ../common/rhnException.py:127
msgid "Invalid information uploaded to the server"
msgstr ""

#: ../common/rhnException.py:128
msgid "Error uploading network interfaces configuration."
msgstr ""

#: ../common/rhnException.py:129
msgid ""
"\n"
"     Package Upload Failed due to uniqueness constraint violation.\n"
"     Make sure the package does not have any duplicate dependencies or\n"
"     does not already exists on the server\n"
"     "
msgstr ""

#: ../common/rhnException.py:134
msgid ""
"\n"
"     The --force rhnpush option is disabled on this server.\n"
"     Please contact your SUSE Manager administrator for more help.\n"
"     "
msgstr ""

#. 60-70: token errors
#: ../common/rhnException.py:140
msgid ""
"\n"
"     The activation token specified could not be found on the server.\n"
"     Please retry with a valid key.\n"
"     "
msgstr ""

#: ../common/rhnException.py:144
msgid "Too many systems registered using this registration token"
msgstr ""

#: ../common/rhnException.py:145
msgid "Token contains invalid, obsoleted or insufficient settings"
msgstr ""

#: ../common/rhnException.py:146
msgid "Conflicting activation tokens"
msgstr ""

#. 70-80: channel subscription errors
#: ../common/rhnException.py:149
msgid ""
"\n"
"     No matching base channel found for your system.\n"
"     "
msgstr ""

#: ../common/rhnException.py:152
msgid ""
"\n"
"     You do not have subscription permission to the designated channel.\n"
"     Please refer to your organization's channel or organization\n"
"     administrators for further details.\n"
"     "
msgstr ""

#: ../common/rhnException.py:157
msgid "You can not unsubscribe from base channel."
msgstr ""

#: ../common/rhnException.py:158
msgid "SUSE Manager or Proxy channel can not be subscribed."
msgstr ""

#. 80-90: server group errors
#: ../common/rhnException.py:161
msgid "There was an error while trying to join the system to its groups"
msgstr ""

#. 90-100: entitlement errors
#: ../common/rhnException.py:164
msgid "Unable to entitle system"
msgstr ""

#. 100-109: e-mail and uuid related faults
#: ../common/rhnException.py:167
msgid "Maximum e-mail length violation."
msgstr ""

#: ../common/rhnException.py:168
msgid "This system has been previously registered."
msgstr ""

#: ../common/rhnException.py:169
msgid "Invalid username"
msgstr ""

#. 140-159 applet errors
#: ../common/rhnException.py:172
msgid "Unable to look up server"
msgstr ""

#. 160-179: OSAD errors
#: ../common/rhnException.py:175
msgid "Required argument is missing"
msgstr ""

#. 600-699: RHEL5+ EN errors
#: ../common/rhnException.py:178
msgid "No entitlement information tied to hardware"
msgstr ""

#: ../common/rhnException.py:179
msgid "Installation number is not entitling"
msgstr ""

#. 700-799: Additional user input verification errors.
#: ../common/rhnException.py:182
msgid "Maximum username length violation"
msgstr ""

#: ../common/rhnException.py:183
msgid "Maximum password length violation"
msgstr ""

#: ../common/rhnException.py:184
msgid "This user has read only API access. Action denied."
msgstr ""

#: ../common/rhnException.py:186
msgid "System Name cannot be less than 1 character"
msgstr ""

#. 1000-1999: Proxy specific errors:
#. issued by a Proxy to the client
#: ../common/rhnException.py:190
msgid "SUSE Manager Proxy error."
msgstr ""

#: ../common/rhnException.py:191
msgid "SUSE Manager Proxy unable to login."
msgstr ""

#. issued by a SUSE Manager Server/Satellite to the proxy
#: ../common/rhnException.py:193
msgid ""
"\n"
"     SUSE Manager Proxy system ID does not match a Spacewalk Proxy Server\n"
"     in the database.\n"
"     "
msgstr ""

#: ../common/rhnException.py:197
msgid "SUSE Manager Proxy session token is invalid."
msgstr ""

#: ../common/rhnException.py:198
msgid "SUSE Manager Proxy session token has expired."
msgstr ""

#. 2000-2999: Red Hat Satellite specific errors:
#: ../common/rhnException.py:202
msgid ""
"\n"
"      user creation is not allowed via mgr_register;\n"
"     please contact your sysadmin to have your account created.\n"
"     "
msgstr ""

#: ../common/rhnException.py:206
msgid ""
"\n"
"     This SUSE Manager server is not allowed to use Inter Server Sync on "
"this server\n"
"     "
msgstr ""

#: ../common/rhnException.py:209
msgid ""
"\n"
"     Inter Server Sync is disabled on this SUSE Manager Server.\n"
"     "
msgstr ""

#. 3000-3999: XML dumper errors:
#: ../common/rhnException.py:214
msgid "Invalid datatype passed"
msgstr ""

#: ../common/rhnException.py:215
msgid "Unable to retrieve channel"
msgstr ""

#: ../common/rhnException.py:216
msgid "Unable to retrieve package"
msgstr ""

#: ../common/rhnException.py:217
msgid "Unable to retrieve erratum"
msgstr ""

#: ../common/rhnException.py:218
msgid "File is missing"
msgstr ""

#: ../common/rhnException.py:219
msgid "Function retrieval error"
msgstr ""

#: ../common/rhnException.py:220
msgid "Function execution error"
msgstr ""

#: ../common/rhnException.py:221
msgid "Missing version string"
msgstr ""

#: ../common/rhnException.py:222
msgid "Invalid version string"
msgstr ""

#: ../common/rhnException.py:223
msgid "Mismatching versions"
msgstr ""

#: ../common/rhnException.py:224
msgid "Invalid channel version"
msgstr ""

#: ../common/rhnException.py:225
msgid "No comps file for channel"
msgstr ""

#: ../common/rhnException.py:226
msgid "Unable to retrieve comps file"
msgstr ""

#. 4000 - 4999: config management errors
#: ../common/rhnException.py:229
msgid "Configuration action missing"
msgstr ""

#: ../common/rhnException.py:230
msgid "File too large"
msgstr ""

#: ../common/rhnException.py:231
msgid "File contains binary data"
msgstr ""

#: ../common/rhnException.py:232
msgid "Configuration channel is not empty"
msgstr ""

#: ../common/rhnException.py:233
msgid "Permission error"
msgstr ""

#: ../common/rhnException.py:234
msgid "Content missing for configuration file"
msgstr ""

#: ../common/rhnException.py:235
msgid "Template delimiters not specified"
msgstr ""

#: ../common/rhnException.py:236
msgid "Configuration channel does not exist"
msgstr ""

#: ../common/rhnException.py:237
msgid "Configuration channel already exists"
msgstr ""

#: ../common/rhnException.py:238
msgid "File missing from configuration channel"
msgstr ""

#: ../common/rhnException.py:239
msgid "Different revision of this file is uploaded"
msgstr ""

#: ../common/rhnException.py:240
msgid "File already uploaded to configuration channel"
msgstr ""

#: ../common/rhnException.py:241
msgid "File size exceeds remaining quota space"
msgstr ""

#: ../common/rhnException.py:242
msgid "Full path of file must be specified"
msgstr ""

#: ../common/rhnException.py:243
msgid "Invalid revision number"
msgstr ""

#: ../common/rhnException.py:244
msgid "Cannot compare files of different file type"
msgstr ""

#. 5000 - 5999: client content uploading errors
#. 5000 - 5099: crash reporting errors
#: ../common/rhnException.py:248
msgid "Crash information is invalid or incomplete"
msgstr ""

#: ../common/rhnException.py:249
msgid "Crash file information is invalid or incomplete"
msgstr ""

#: ../common/rhnException.py:250
msgid "Error composing crash directory path"
msgstr ""

#: ../common/rhnException.py:251
msgid "Error composing crash file path"
msgstr ""

#: ../common/rhnException.py:252 ../common/rhnException.py:259
msgid "Invalid content encoding"
msgstr ""

#: ../common/rhnException.py:253
msgid "Invalid crash name"
msgstr ""

#: ../common/rhnException.py:254
msgid "Crash reporting is disabled for this organization"
msgstr ""

#. 5100 - 5199: scap results reporting error
#: ../common/rhnException.py:256
msgid "SCAP results file transfer is invalid or incomplete"
msgstr ""

#: ../common/rhnException.py:257
msgid "Error composing directory path for detailed SCAP results"
msgstr ""

#: ../common/rhnException.py:258
msgid "Error composing file path for detailed SCAP results"
msgstr ""

#: ../common/rhnException.py:306
msgid ""
"\n"
"     An error has occurred while processing your request. If this problem\n"
"     persists please enter a bug report at scc.suse.com.\n"
"     If you choose to submit the bug report, please be sure to include\n"
"     details of what you were trying to do when this error occurred and\n"
"     details on how to reproduce this problem.\n"
msgstr ""

#: ../common/rhnException.py:358
#, python-format
msgid ""
"Error Message:\n"
"    %s\n"
msgstr ""

#: ../common/rhnException.py:360
#, python-format
msgid "Error Class Code: %s\n"
msgstr ""

#: ../common/rhnException.py:363
#, python-format
msgid "Error Class Info: %s\n"
msgstr ""

#: ../common/rhnException.py:365
#, python-format
msgid "Explanation: %s"
msgstr ""

#: ../common/rhnTB.py:205
#, python-format
msgid "ERROR: %s %s: %s"
msgstr ""

#: ../common/rhnTB.py:207
#, python-format
msgid "TRACEBACK: %s"
msgstr ""

#: ../satellite_tools/disk_dumper/iss.py:1294
#: ../satellite_tools/disk_dumper/iss.py:1298
#, python-format
msgid "format of %s should be at least YYYYMMDD.\n"
msgstr ""

#: ../satellite_tools/messages.py:26
#, python-format
msgid ""
"\n"
"ERROR: executing step %s. Error is:\n"
"%s\n"
msgstr ""

#: ../satellite_tools/messages.py:31
#, python-format
msgid ""
"\n"
"ERROR: there was a problem accessing the channel data from your temporary\n"
"       repository. Did you migrate all of the data from the channel ISOs\n"
"       do this directory? If so, please recheck the channels ISOs, ensure\n"
"       that you have them all, and then iteratively remount and repopulate\n"
"       the temporary repository (%s).\n"
msgstr ""

#: ../satellite_tools/messages.py:39
#, python-format
msgid ""
"\n"
"ERROR: there was a problem synchronizing the information.\n"
"       Error message: %s\n"
msgstr ""

#: ../satellite_tools/messages.py:44
#, python-format
msgid ""
"\n"
"ERROR: There was a problem communicating with the ISS Master.\n"
"       Depending on the specific error details, please review your "
"configuration,\n"
"       basic network connectivity, and/or name resolution, and try again.\n"
"       Error message: %s\n"
msgstr ""

#: ../satellite_tools/messages.py:51
#, python-format
msgid ""
"\n"
"ERROR: There was a problem communicating with the ISS Master.\n"
"       If the master satellite is older than v5.3, it does not have ISS "
"capability.\n"
"       Otherwise, depending on the specific error details, please review "
"your\n"
"       configuration, basic network connectivity, and/or name resolution, "
"and try again.\n"
"       Error message: %s\n"
msgstr ""

#: ../satellite_tools/messages.py:59
#, python-format
msgid ""
"\n"
"ERROR: a child-channel cannot be synced without its parent being synced as\n"
"       well. A parent needs to be either (a) previously synced or (b) "
"synced\n"
"       in tandem with the desired child-channel. Missing parents for this\n"
"       transaction:\n"
"       %s\n"
msgstr ""

#: ../satellite_tools/messages.py:67
#, python-format
msgid ""
"\n"
"ERROR: you are not entitled to sync a channel in this set of channels.\n"
"Please contact your SUSE Manager contact\n"
"%s"
msgstr ""

#: ../satellite_tools/messages.py:72
#, python-format
msgid "  ERROR: not enough free space (%s KB) on device."
msgstr ""

#: ../satellite_tools/messages.py:74
#, python-format
msgid "    %3d/%s Fetch successful: %s (%s bytes)"
msgstr ""

#: ../satellite_tools/messages.py:75
#, python-format
msgid "    Extinct package:  %s"
msgstr ""

#: ../satellite_tools/messages.py:76
#, python-format
msgid "   Total size: %s"
msgstr ""

#: ../satellite_tools/messages.py:77
#, python-format
msgid "      Downloaded %s of %s. Estimated remaining time: %s"
msgstr ""

#: ../satellite_tools/messages.py:78
#, python-format
msgid "    Fetch unsuccessful: %s"
msgstr ""

#: ../satellite_tools/messages.py:79
#, python-format
msgid "   RPM fetch summary: %s"
msgstr ""

#: ../satellite_tools/messages.py:80
#, python-format
msgid "       success: %d"
msgstr ""

#: ../satellite_tools/messages.py:81
#, python-format
msgid "       failed:  %d"
msgstr ""

#: ../satellite_tools/messages.py:82
#, python-format
msgid "       extinct: %d"
msgstr ""

#: ../satellite_tools/messages.py:84
#, python-format
msgid "   Retrieving / parsing *relevant* package metadata: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:85
#, python-format
msgid "   Retrieving / parsing errata data: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:86
#, python-format
msgid "   Retrieving / parsing kickstart data: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:87
#, python-format
msgid "   Retrieving / parsing kickstart tree files: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:88
#, python-format
msgid "   Importing *relevant* package metadata: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:89
msgid "   * WARNING: this may be a slow process."
msgstr ""

#: ../satellite_tools/messages.py:90
msgid "Linking packages to channels"
msgstr ""

#: ../satellite_tools/messages.py:91
#, python-format
msgid "   Importing *relevant* errata: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:92
msgid "   No new kickstartable tree to import"
msgstr ""

#: ../satellite_tools/messages.py:93
#, python-format
msgid "Importing kickstartable trees (%d)"
msgstr ""

#: ../satellite_tools/messages.py:94
#, python-format
msgid "Imported kickstartable trees (%d)"
msgstr ""

#: ../satellite_tools/reposync.py:111 ../satellite_tools/satsync.py:439
msgid "+++ sending log as an email +++"
msgstr ""

#: ../satellite_tools/reposync.py:114
#, python-format
msgid "%s sync. report from %s"
msgstr ""

#: ../satellite_tools/reposync.py:124 ../satellite_tools/satsync.py:449
msgid "+++ email requested, but there is nothing to send +++"
msgstr ""

#: ../satellite_tools/rhn_satellite_activate.py:198
#, python-format
msgid ""
"\"%s\" (specified in commandline)\n"
"could not be opened and read:\n"
"%s"
msgstr ""

#: ../satellite_tools/rhn_satellite_activate.py:205
#, python-format
msgid ""
"\"%s\" could not be opened\n"
"and/or written to:\n"
"%s"
msgstr ""

#: ../satellite_tools/satsync.py:258
#, python-format
msgid "No handler for step %s"
msgstr ""

#. Try one more time - this time it should be faster since
#. everything should be cached
#: ../satellite_tools/satsync.py:270
msgid "Environment changed, trying again..."
msgstr ""

#: ../satellite_tools/satsync.py:277
msgid "ERROR: Encountered IntegrityError: \n"
msgstr ""

#: ../satellite_tools/satsync.py:285
msgid "Repeated failures"
msgstr ""

#: ../satellite_tools/satsync.py:290
#, python-format
msgid ""
"    Import complete:\n"
"        Begin time: %s\n"
"        End time:   %s\n"
"        Elapsed:    %s\n"
"          "
msgstr ""

#: ../satellite_tools/satsync.py:311
msgid "hours"
msgstr ""

#: ../satellite_tools/satsync.py:311
msgid "minutes"
msgstr ""

#: ../satellite_tools/satsync.py:311
msgid "seconds"
msgstr ""

#: ../satellite_tools/satsync.py:357
msgid ""
"ERROR: The dump is missing package data, use --no-rpms to skip this step or "
"fix the content to include package data."
msgstr ""

#. the orgs() method doesn't exist; that's fine we just
#. won't sync the orgs
#: ../satellite_tools/satsync.py:404
msgid "The SUSE Manager master does not support syncing orgs data."
msgstr ""

#: ../satellite_tools/satsync.py:404
msgid "Skipping..."
msgstr ""

#: ../satellite_tools/satsync.py:442
#, python-format
msgid "SUSE Manager Inter Server sync. report from %s"
msgstr ""

#: ../satellite_tools/satsync.py:521
msgid " - file-system synchronization"
msgstr ""

#: ../satellite_tools/satsync.py:533 ../satellite_tools/satsync.py:541
msgid " - live synchronization"
msgstr ""

#: ../satellite_tools/satsync.py:534
#, python-brace-format
msgid ""
"ERROR: Live content synchronizing with RHN Classic Hosted is no longer "
"supported.\n"
"Please use the cdn-sync command instead unless you are attempting to sync "
"from another {PRODUCT_NAME} via Inter-Server-Sync (ISS), or from local "
"content on disk via Channel Dump ISOs."
msgstr ""

#: ../satellite_tools/satsync.py:542
#, python-format
msgid "   url: %s"
msgstr ""

#: ../satellite_tools/satsync.py:543
#, python-format
msgid "   debug/output level: %s"
msgstr ""

#: ../satellite_tools/satsync.py:553
msgid "ERROR: this server must be registered with SUSE Manager."
msgstr ""

#: ../satellite_tools/satsync.py:575
#, python-format
msgid "Retrieving / parsing %s data"
msgstr ""

#: ../satellite_tools/satsync.py:585 ../satellite_tools/satsync.py:600
msgid "*** SYSTEM INTERRUPT CALLED ***"
msgstr ""

#: ../satellite_tools/satsync.py:593
msgid "ERROR: fatal parser exception occurred "
msgstr ""

#: ../satellite_tools/satsync.py:594
#, python-format
msgid "(line: %s, col: %s msg: %s)"
msgstr ""

#: ../satellite_tools/satsync.py:598
#, python-format
msgid "ERROR: parser exception occurred: %s"
msgstr ""

#: ../satellite_tools/satsync.py:603
msgid "ERROR: exception (during parse) occurred: "
msgstr ""

#: ../satellite_tools/satsync.py:604
#, python-format
msgid ""
"   Encountered some errors with %s data (see logs (%s) for more information)"
msgstr ""

#: ../satellite_tools/satsync.py:606
#, python-format
msgid "   Encountered some errors with %s data:"
msgstr ""

#: ../satellite_tools/satsync.py:607
#, python-format
msgid "   ------- %s PARSE/IMPORT ERROR -------"
msgstr ""

#: ../satellite_tools/satsync.py:609
msgid "   ---------------------------------------"
msgstr ""

#: ../satellite_tools/satsync.py:612
#, python-format
msgid "%s data complete"
msgstr ""

#: ../satellite_tools/satsync.py:665
msgid "Retrieving / parsing channel data"
msgstr ""

#: ../satellite_tools/satsync.py:718
msgid "Channel data complete"
msgstr ""

#: ../satellite_tools/satsync.py:736
#, python-format
msgid "%10s import from %s"
msgstr ""

#: ../satellite_tools/satsync.py:739
#, python-format
msgid "%10s import from %s - %s"
msgstr ""

#: ../satellite_tools/satsync.py:743
#, python-format
msgid "%10s"
msgstr ""

#: ../satellite_tools/satsync.py:750
msgid "p"
msgstr ""

#: ../satellite_tools/satsync.py:752
msgid "."
msgstr ""

#: ../satellite_tools/satsync.py:758
msgid "   p = previously imported/synced channel"
msgstr ""

#: ../satellite_tools/satsync.py:759
msgid "   . = channel not yet imported/synced"
msgstr ""

#: ../satellite_tools/satsync.py:765
msgid "   e = channel no longer supported (end-of-service)"
msgstr ""

#: ../satellite_tools/satsync.py:767
msgid "   ? = channel label invalid --- typo?"
msgstr ""

#: ../satellite_tools/satsync.py:771
#, python-format
msgid "   %s:"
msgstr ""

#: ../satellite_tools/satsync.py:772
#, python-format
msgid "      %s %-40s %4s %s"
msgstr ""

#: ../satellite_tools/satsync.py:773
msgid "base-channels"
msgstr ""

#: ../satellite_tools/satsync.py:786 ../satellite_tools/satsync.py:1603
msgid "NONE RELEVANT"
msgstr ""

#: ../satellite_tools/satsync.py:808
msgid "end-of-service"
msgstr ""

#: ../satellite_tools/satsync.py:809
msgid "e"
msgstr ""

#: ../satellite_tools/satsync.py:815
msgid "   typos:"
msgstr ""

#: ../satellite_tools/satsync.py:816
msgid "?"
msgstr ""

#: ../satellite_tools/satsync.py:831
#, python-format
msgid "XXX: imported channels: %s"
msgstr ""

#: ../satellite_tools/satsync.py:832
#, python-format
msgid "XXX:   cached channels: %s"
msgstr ""

#: ../satellite_tools/satsync.py:837
msgid "XXX: list channels called"
msgstr ""

#: ../satellite_tools/satsync.py:855
msgid "ERROR: these channels either do not exist or are not available:"
msgstr ""

#: ../satellite_tools/satsync.py:859
#, python-format
msgid "       (to see a list of channel labels: %s --list-channels)"
msgstr ""

#: ../satellite_tools/satsync.py:904
#, python-format
msgid "   Retrieving / parsing short package metadata: %s (%s)"
msgstr ""

#: ../satellite_tools/satsync.py:965
#, python-format
msgid "Diffing package metadata (what's missing locally?): %s"
msgstr ""

#: ../satellite_tools/satsync.py:971 ../satellite_tools/satsync.py:1254
msgid "Diffing:    "
msgstr ""

#: ../satellite_tools/satsync.py:988
msgid "ERROR: incremental dump skipped"
msgstr ""

#: ../satellite_tools/satsync.py:1079
msgid "Downloading rpm packages"
msgstr ""

#: ../satellite_tools/satsync.py:1084
#, python-format
msgid "   Fetching any missing RPMs: %s (%s)"
msgstr ""

#: ../satellite_tools/satsync.py:1085 ../satellite_tools/satsync.py:1153
msgid "NONE MISSING"
msgstr ""

#: ../satellite_tools/satsync.py:1094
msgid "Processing rpm packages complete"
msgstr ""

#: ../satellite_tools/satsync.py:1121
msgid "Downloading package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1146
msgid "Downloading srpm packages"
msgstr ""

#: ../satellite_tools/satsync.py:1152
#, python-format
msgid "   Fetching any missing SRPMs: %s (%s)"
msgstr ""

#: ../satellite_tools/satsync.py:1249
#, python-format
msgid "Diffing source package metadata (what's missing locally?): %s"
msgstr ""

#: ../satellite_tools/satsync.py:1260
msgid "Downloading source package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1338 ../satellite_tools/satsync.py:2027
#, python-format
msgid "Unable to save file %s: %s"
msgstr ""

#. for
#. Retried a number of times and it still failed; log the
#. file as being failed and move on
#: ../satellite_tools/satsync.py:1345
#, python-format
msgid "Failed to fetch file %s"
msgstr ""

#: ../satellite_tools/satsync.py:1350
msgid "Downloading kickstartable trees metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1365
msgid "Downloading kickstartable trees files"
msgstr ""

#: ../satellite_tools/satsync.py:1504
#, python-format
msgid "Grabbing all patches for channel %s"
msgstr ""

#: ../satellite_tools/satsync.py:1554
msgid "Downloading patch data"
msgstr ""

#: ../satellite_tools/satsync.py:1556
msgid "Forcing download of all patch data for requested channels."
msgstr ""

#: ../satellite_tools/satsync.py:1571
msgid "Downloading patch data complete"
msgstr ""

#: ../satellite_tools/satsync.py:1576 ../satellite_tools/satsync.py:1597
msgid "Downloading:"
msgstr ""

#: ../satellite_tools/satsync.py:1579
msgid " - complete"
msgstr ""

#: ../satellite_tools/satsync.py:1624
msgid "Importing source package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1627
msgid "Importing package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1635
msgid "Importing:  "
msgstr ""

#. not in the cache
#: ../satellite_tools/satsync.py:1703
msgid ""
"Package Not Found in Cache, Clear the Cache "
"to                                  Regenerate it."
msgstr ""

#: ../satellite_tools/satsync.py:1709
msgid "Importing channel patches"
msgstr ""

#: ../satellite_tools/satsync.py:1714
#, python-format
msgid "Importing %s patches for channel %s."
msgstr ""

#. Incomplete configuration
#: ../satellite_tools/satsync.py:2113
msgid "ERROR: server.mount_point not set in the configuration file"
msgstr ""

#: ../satellite_tools/satsync.py:2117
#, python-format
msgid "ERROR: server.mount_point %s do not exist"
msgstr ""

#: ../satellite_tools/satsync.py:2122
#, python-format
msgid "ERROR: path under server.mount_point (%s)  do not exist"
msgstr ""

#: ../satellite_tools/satsync.py:2199
#, python-format
msgid "Commandline: %s"
msgstr ""

#: ../satellite_tools/satsync.py:2202
#, python-format
msgid ""
"DEBUG ONLY: max. batch-size for XML/database-import processing (1..%s).\"man "
"satellite-sync\" for more information."
msgstr ""

#: ../satellite_tools/satsync.py:2205
msgid "alternative SSL CA Cert (fullpath to cert file)"
msgstr ""

#: ../satellite_tools/satsync.py:2207
msgid "process data for this channel only"
msgstr ""

#: ../satellite_tools/satsync.py:2209
msgid ""
"disk dump will be considered to be a full export; see \"man satellite-sync\" "
"for more information."
msgstr ""

#: ../satellite_tools/satsync.py:2212
msgid "existing custom channels will also be synced (unless -c is used)"
msgstr ""

#: ../satellite_tools/satsync.py:2214
#, python-format
msgid ""
"override debug level set in /etc/rhn/rhn.conf (which is currently set at %s)."
msgstr ""

#: ../satellite_tools/satsync.py:2216
#, python-format
msgid "requested version of XML dump (default: %s)"
msgstr ""

#: ../satellite_tools/satsync.py:2218
msgid "e-mail a report of what was synced/imported"
msgstr ""

#: ../satellite_tools/satsync.py:2220
msgid "forcibly process all (not a diff of) patch metadata"
msgstr ""

#: ../satellite_tools/satsync.py:2222
msgid "Do not use an http proxy under any circumstances."
msgstr ""

#: ../satellite_tools/satsync.py:2224
msgid "alternative http proxy (hostname:port)"
msgstr ""

#: ../satellite_tools/satsync.py:2226
msgid "alternative http proxy username"
msgstr ""

#: ../satellite_tools/satsync.py:2228
msgid "alternative http proxy password"
msgstr ""

#: ../satellite_tools/satsync.py:2230
msgid "parent SUSE Manager to import content from"
msgstr ""

#: ../satellite_tools/satsync.py:2232
msgid "list all available channels and exit"
msgstr ""

#: ../satellite_tools/satsync.py:2234
msgid "help on all error codes mgr-inter-sync returns"
msgstr ""

#: ../satellite_tools/satsync.py:2236
msgid "source mount point for import - disk update only"
msgstr ""

#: ../satellite_tools/satsync.py:2238
msgid "do not process patch data"
msgstr ""

#: ../satellite_tools/satsync.py:2240
msgid "do not process kickstart data (provisioning only)"
msgstr ""

#: ../satellite_tools/satsync.py:2242
msgid "do not process full package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:2244
msgid "do not download, or process any RPMs"
msgstr ""

#: ../satellite_tools/satsync.py:2246
msgid "turn off SSL (not recommended)"
msgstr ""

#: ../satellite_tools/satsync.py:2248
msgid "org to which the sync imports data. defaults to the admin account"
msgstr ""

#: ../satellite_tools/satsync.py:2250
msgid "print the configuration and exit"
msgstr ""

#: ../satellite_tools/satsync.py:2252
msgid "alternative server with which to connect (hostname)"
msgstr ""

#: ../satellite_tools/satsync.py:2254
msgid "synchronize to this step (man satellite-sync for more info)"
msgstr ""

#: ../satellite_tools/satsync.py:2256
msgid "write complete data to tempfile before streaming to remainder of app"
msgstr ""

#: ../satellite_tools/satsync.py:2258
msgid "DEBUG ONLY: alternative path to digital system id"
msgstr ""

#: ../satellite_tools/satsync.py:2260
msgid "alternative email address(es) for sync output (--email option)"
msgstr ""

#: ../satellite_tools/satsync.py:2262
msgid "do not remove rpms when importing from local dump"
msgstr ""

#: ../satellite_tools/satsync.py:2264
msgid ""
"the fully qualified domain name of the master Satellite. Valid with --mount-"
"point only. Required if you want to import org data and channel permissions."
msgstr ""

#: ../satellite_tools/satsync.py:2274
#, python-format
msgid "ERROR: these arguments make no sense in this context (try --help): %s"
msgstr ""

#. An SQL error is fatal... crash and burn
#: ../satellite_tools/satsync.py:2286
#, python-format
msgid "ERROR: Can't connect to the database: %s"
msgstr ""

#: ../satellite_tools/satsync.py:2287
msgid "ERROR: Check if your database is running."
msgstr ""

#: ../satellite_tools/satsync.py:2322
#, python-format
msgid "ERROR: --debug-level takes an in integer value within the range %s."
msgstr ""

#: ../satellite_tools/satsync.py:2324
msgid "  0  - little logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2325
msgid "  1  - minimal logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2326
msgid "  2  - normal level of logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2327
msgid "  3  - lots of logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2328
msgid "  4+ - excessive logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2341
msgid "ERROR: The --master option is only valid with the --mount-point option"
msgstr ""

#: ../satellite_tools/satsync.py:2351
#, python-format
msgid "ERROR: Unable to lookup Org Id %s"
msgstr ""

#: ../satellite_tools/satsync.py:2360
msgid ""
"WARNING: --list-channels option overrides any --step option. --step ignored."
msgstr ""

#: ../satellite_tools/satsync.py:2375
#, python-format
msgid ""
"ERROR: '%s' is not a valid step. See 'man mgr-inter-sync' for more detail."
msgstr ""

#: ../satellite_tools/satsync.py:2407
msgid ""
"ERROR: No channels currently imported; try mgr-inter-sync --list-channels; "
"then mgr-inter-sync -c chn0 -c chn1..."
msgstr ""

#. int(None) --> TypeError
#. int('a')  --> ValueError
#: ../satellite_tools/satsync.py:2457 ../satellite_tools/satsync.py:2461
msgid "ERROR: --batch-size must have a value within the range: 1..50"
msgstr ""

#: ../satellite_tools/satsync.py:2469
#, python-format
msgid "ERROR: no such directory %s"
msgstr ""

#: ../satellite_tools/satsync.py:2474
msgid "Error Codes: Returned codes means:"
msgstr ""

#: ../satellite_tools/satsync.py:2475
msgid " -1  - Could not lock file or KeyboardInterrupt or SystemExit"
msgstr ""

#: ../satellite_tools/satsync.py:2476
msgid "  0  - User interrupted or intentional exit"
msgstr ""

#: ../satellite_tools/satsync.py:2477
msgid "  1  - attempting to run more than one instance of mgr-inter-sync."
msgstr ""

#: ../satellite_tools/satsync.py:2478
msgid "  2  - Unable to find synchronization tools."
msgstr ""

#: ../satellite_tools/satsync.py:2479
msgid "  3  - a general socket exception occurred"
msgstr ""

#: ../satellite_tools/satsync.py:2480
msgid "  4  - an SSL error occurred. Recheck your SSL settings."
msgstr ""

#: ../satellite_tools/satsync.py:2481
msgid "  5  - ISS error"
msgstr ""

#: ../satellite_tools/satsync.py:2482
msgid "  6  - unhandled exception occurred"
msgstr ""

#: ../satellite_tools/satsync.py:2483
msgid "  7  - unknown sync error"
msgstr ""

#: ../satellite_tools/satsync.py:2484
msgid "  8  - ERROR: must be root to execute"
msgstr ""

#: ../satellite_tools/satsync.py:2485
msgid "  9  - rpclib fault during synchronization init"
msgstr ""

#: ../satellite_tools/satsync.py:2486
msgid "  10 - synchronization init error"
msgstr ""

#: ../satellite_tools/satsync.py:2487
msgid "  11 - Error parsing XML stream"
msgstr ""

#: ../satellite_tools/satsync.py:2488
msgid "  12 - Channel do not exist"
msgstr ""

#: ../satellite_tools/satsync.py:2489
msgid "  13 - SQL error during importing package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:2490
msgid "  14 - SQL error during linking channel packages"
msgstr ""

#: ../satellite_tools/satsync.py:2491
msgid "  15 - SQL error during xml processing"
msgstr ""

#: ../satellite_tools/satsync.py:2492
msgid "  16 - server.mount_point not set in the configuration file"
msgstr ""

#: ../satellite_tools/satsync.py:2493
msgid ""
"  17 - SQL error during retrieving the channels already imported in the SUSE "
"Manager database"
msgstr ""

#: ../satellite_tools/satsync.py:2494
msgid "  18 - Wrong db connection string in rhn.conf"
msgstr ""

#: ../satellite_tools/satsync.py:2495
msgid "  19 - Bad arguments"
msgstr ""

#: ../satellite_tools/satsync.py:2496
msgid "  20 - Could not connect to db."
msgstr ""

#: ../satellite_tools/satsync.py:2497
msgid "  21 - Bad debug level"
msgstr ""

#: ../satellite_tools/satsync.py:2498
msgid "  22 - Not valid step"
msgstr ""

#: ../satellite_tools/satsync.py:2499
msgid "  24 - no such file"
msgstr ""

#: ../satellite_tools/satsync.py:2500
msgid "  25 - no such directory"
msgstr ""

#: ../satellite_tools/satsync.py:2501
msgid "  26 - mount_point does not exist"
msgstr ""

#: ../satellite_tools/satsync.py:2502
msgid "  27 - No such org"
msgstr ""

#: ../satellite_tools/satsync.py:2503
msgid "  28 - error: --master is only valid with --mount-point"
msgstr ""

#: ../satellite_tools/satsync.py:2510
#, python-format
msgid "ERROR: unknown dump version, try one of %s"
msgstr ""
 0707010000008E000081B40000000000000000000000016290A0C10000B651000000000000000000000000000000000000001B00000000spacewalk-backend/po/sr.po    # SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
#
# Translators:
msgid ""
msgstr ""
"Project-Id-Version: Spacewalk\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-10-16 13:34+0200\n"
"PO-Revision-Date: 2011-03-04 16:08+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Serbian <trans-sr@lists.fedoraproject.org>\n"
"Language: sr\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"

#: ../server/apacheAuth.py:66
#, python-format
msgid "incomplete proxy authentication token: %s"
msgstr ""

#: ../server/apacheAuth.py:84
#, python-format
msgid "Sent proxy signature %s does not match ours %s."
msgstr ""

#: ../server/apacheAuth.py:119
msgid "declined proxy authentication"
msgstr ""

#: ../server/apacheRequest.py:59
#, python-format
msgid "Invalid request received (%s)."
msgstr ""

#: ../server/apacheRequest.py:120
#, python-format
msgid ""
"IMPORTANT MESSAGE FOLLOWS:\n"
"%s"
msgstr ""

#: ../server/apacheRequest.py:149
#, python-format
msgid ""
"While running '%s': caught\n"
"%s : %s\n"
msgstr ""

#: ../server/apacheRequest.py:606
#, python-format
msgid "Invalid URI %s"
msgstr ""

#: ../server/configFilesHandler.py:129 ../server/handlers/app/packages.py:192
#: ../server/handlers/xmlrpc/registration.py:215
#: ../server/handlers/xmlrpc/registration.py:1168
#: ../server/handlers/xmlrpc/registration.py:1307
#, python-format
msgid ""
"\n"
"                   %s Account has been deactivated on this server.\n"
"                   Please contact your Org administrator for more help."
msgstr ""

#: ../server/handlers/applet/applet.py:78
#, python-brace-format
msgid "Your system was not found in the {PRODUCT_NAME} database"
msgstr ""

#: ../server/handlers/sat/auth.py:45
msgid "ISS is disabled on this server."
msgstr ""

#: ../server/handlers/sat/auth.py:50
#, python-format
msgid "Server \"%s\" is not enabled for ISS."
msgstr ""

#: ../server/handlers/xmlrpc/errata.py:64
#, python-format
msgid "Expected a package name, not: %s"
msgstr ""

#: ../server/handlers/xmlrpc/errata.py:115
#, python-format
msgid "Expected a package, not: %s"
msgstr ""

#: ../server/handlers/xmlrpc/proxy.py:65
#, python-format
msgid "SUSE Manager Proxy service not enabled for server profile: \"%s\""
msgstr ""

#: ../server/handlers/xmlrpc/proxy.py:85
msgid "Invalid session key"
msgstr ""

#: ../server/handlers/xmlrpc/proxy.py:93
msgid "This server ID no longer exists"
msgstr ""

#: ../server/handlers/xmlrpc/queue.py:433
#, python-format
msgid "Invalid action value type %s (%s)"
msgstr ""

#: ../server/handlers/xmlrpc/queue.py:464
#, python-format
msgid "Action %s does not belong to server %s"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:194
msgid "Required data missing"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:198
msgid "Required members missing"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:207
msgid "Attempt to register a system to an invalid username"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:839
msgid "Invalid system release version requested"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1063
msgid ""
"Unable to find a valid network interface, both ipaddr and ip6addr not found."
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1115
#, python-brace-format
msgid "{PRODUCT_NAME} Welcome Message"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1125
msgid "Privacy Statement"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1146
msgid "Expected a dictionary as a product argument"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1374
#, python-format
msgid "Invalid value '%s' for %s (%s)"
msgstr ""

#: ../server/handlers/xmlrpc/scap.py:104
msgid "Invalid system_id/action_id pair."
msgstr ""

#: ../server/handlers/xmlrpc/up2date.py:233
#, python-format
msgid "Invalid value %s (%s)"
msgstr ""

#: ../server/importlib/userAuth.py:98
msgid "You are not authorized to manage packages in the null org"
msgstr ""

#: ../server/importlib/userAuth.py:103
#, python-format
msgid "You are not allowed to manage packages in the %s org"
msgstr ""

#: ../server/importlib/userAuth.py:121
msgid "You are not allowed to perform administrative tasks"
msgstr ""

#: ../server/importlib/userAuth.py:144
#, python-format
msgid ""
"You are not allowed to manage channel %s, or that channel does not exist"
msgstr ""

#: ../server/importlib/userAuth.py:204
#, python-format
msgid ""
"\n"
"               %s Account has been deactivated on this server.\n"
"               Please contact your Org administrator for more help."
msgstr ""

#: ../server/rhnChannel.py:1992
#, python-format
msgid ""
"Your account does not have access to any channels matching "
"(release='%(release)s', arch='%(arch)s')%(www_activation)s"
msgstr ""

#: ../server/rhnChannel.py:2002
msgid ""
"\n"
"If you have a registration number, please register with it first at http://"
"www.redhat.com/apps/activate/ and then try again.\n"
"\n"
msgstr ""

#: ../server/rhnChannel.py:2012
#, python-format
msgid "Insufficient subscription permissions for release (%s, %s"
msgstr ""

#. Various messages that can be reused
#.
#. bretm 02/07/2007 -- when we have better old-client documentation, probably
#. will be safe to get rid of all this crap
#: ../server/rhnChannel.py:2276 ../server/rhnChannel.py:2287
#: ../server/rhnChannel.py:2302
msgid "System Registered but Inactive"
msgstr ""

#: ../server/rhnChannel.py:2277
#, python-format
msgid ""
"\n"
"Invalid Architecture and OS release combination (%s, %s).\n"
"Your system has been registered, but will not receive updates\n"
"because it is not subscribed to a channel. If you have not yet\n"
"activated your product for service, please visit our website at:\n"
"\n"
"     http://www.redhat.com/apps/activate/\n"
"\n"
"...to activate your product."
msgstr ""

#: ../server/rhnChannel.py:2288
#, python-format
msgid ""
"\n"
"Invalid Architecture and OS release combination (%s, %s).\n"
"Your system has been registered, but will not receive updates\n"
"because it could not be subscribed to a base channel.\n"
"Please contact your organization administrator for assistance.\n"
msgstr ""

#: ../server/rhnChannel.py:2295
#, python-format
msgid ""
"\n"
"  This system has been successfully registered, but is not yet entitled\n"
"  to service.  To entitle this system to service, login to the web site at:\n"
"\n"
"  %(entitlement_url)s\n"
msgstr ""

#: ../server/rhnChannel.py:2303
#, python-format
msgid ""
"\n"
"  This system has been successfully registered, but no service entitlements\n"
"  were available.  To entitle this system to service, login to the web site "
"at:\n"
"\n"
"  %(entitlement_url)s\n"
msgstr ""

#: ../server/rhnHandler.py:62
msgid "Please run rhn_register as root on this client"
msgstr ""

#: ../server/rhnHandler.py:75
#, python-format
msgid "Service not enabled for system profile: \"%s\""
msgstr ""

#: ../server/rhnPackage.py:49 ../server/rhnPackage.py:87
#: ../server/rhnPackage.py:107 ../server/rhnPackage.py:158
#, python-format
msgid "Invalid RPM package %s requested"
msgstr ""

#: ../server/rhnPackage.py:112
msgid "Package not found"
msgstr ""

#: ../server/rhnServer/server_class.py:97
#, python-format
msgid "Architecture `%s' is not supported"
msgstr ""

#: ../server/rhnServer/server_token.py:78
#, python-format
msgid "Token `%s' has more than one base channel assigned"
msgstr ""

#: ../server/rhnServer/server_token.py:80
msgid "Conflicting base channels"
msgstr ""

#: ../server/rhnServer/server_token.py:190
#, python-format
msgid "Failed to add server to group %s"
msgstr ""

#: ../server/rhnServer/server_token.py:503
#, python-format
msgid "Maximum usage count of %s reached"
msgstr ""

#: ../server/rhnServer/server_token.py:744
msgid ""
"Stacking of re-registration tokens with different base entitlements is not "
"supported"
msgstr ""

#: ../server/rhnServer/server_token.py:811
#, python-format
msgid "Could not find token '%s'"
msgstr ""

#. Cannot use activation keys from different orgs
#: ../server/rhnServer/server_token.py:843
msgid "Tokens from mismatching orgs"
msgstr ""

#. Two tokens with different kickstart sessions
#: ../server/rhnServer/server_token.py:853
msgid "Kickstart session mismatch"
msgstr ""

#: ../server/rhnServer/server_token.py:877
msgid "Stacking of re-registration tokens is not supported"
msgstr ""

#: ../server/rhnUser.py:289 ../server/rhnUser.py:292
msgid "Invalid username/password combination"
msgstr ""

#. nope, not reserved either
#: ../server/rhnUser.py:467
#, python-format
msgid "Username `%s' has not been reserved"
msgstr ""

#. New accounts have to specify an e-mail address
#: ../server/rhnUser.py:473
msgid "E-mail address not specified"
msgstr ""

#: ../server/rhnUser.py:509
#, python-format
msgid "username should be at least %d characters"
msgstr ""

#: ../server/rhnUser.py:512
#, python-format
msgid "username should be less than %d characters"
msgstr ""

#: ../server/rhnUser.py:523
#, python-format
msgid "username = `%s', invalid character `%s'"
msgstr ""

#: ../server/rhnUser.py:542
#, python-format
msgid "Please limit your e-mail address to %s chars"
msgstr ""

#: ../server/rhnUser.py:623
#, python-format
msgid "password must be at least %d characters"
msgstr ""

#: ../server/rhnUser.py:626
#, python-format
msgid "Password must be shorter than %d characters"
msgstr ""

#: ../server/rhnUser.py:644
#, python-format
msgid "password contains character `%s'"
msgstr ""

#: ../server/rhnUser.py:651
#, python-format
msgid "username should be at least %d characters long"
msgstr ""

#: ../server/rhnUser.py:662
#, python-format
msgid "Cannot register usernames ending with %s"
msgstr ""

#. 0-999: Red Hat client/client-like interaction errors:
#: ../common/rhnException.py:53
msgid "This does not appear to be a valid username."
msgstr ""

#: ../common/rhnException.py:54
msgid "Invalid username and password combination."
msgstr ""

#: ../common/rhnException.py:55
msgid "This login is already taken, or the password is incorrect."
msgstr ""

#: ../common/rhnException.py:56
msgid "Permission denied."
msgstr ""

#: ../common/rhnException.py:57
msgid "Object not found."
msgstr ""

#: ../common/rhnException.py:58
msgid "Invalid System Digital ID."
msgstr ""

#: ../common/rhnException.py:59
msgid "Invalid System Credentials."
msgstr ""

#: ../common/rhnException.py:60
msgid "Could not retrieve user data from database."
msgstr ""

#: ../common/rhnException.py:61
msgid "Valid username required."
msgstr ""

#: ../common/rhnException.py:62
msgid "Valid password required."
msgstr ""

#: ../common/rhnException.py:63
msgid "Minimum username length violation."
msgstr ""

#: ../common/rhnException.py:64
msgid "Minimum password length violation."
msgstr ""

#: ../common/rhnException.py:65
msgid "The username contains invalid characters."
msgstr ""

#: ../common/rhnException.py:66
msgid "File not found."
msgstr ""

#: ../common/rhnException.py:67
msgid "Architecture and OS version combination is not supported."
msgstr ""

#: ../common/rhnException.py:68
msgid "Could not retrieve system data from database."
msgstr ""

#: ../common/rhnException.py:69
msgid "Invalid arguments passed to function."
msgstr ""

#: ../common/rhnException.py:70
msgid "Unable to retrieve requested entry."
msgstr ""

#: ../common/rhnException.py:71
msgid "Could not update database entry."
msgstr ""

#: ../common/rhnException.py:72
msgid "Unsupported server architecture."
msgstr ""

#: ../common/rhnException.py:73
#, python-format
msgid ""
"\n"
"     The anonymous server functionality is no longer available.\n"
"\n"
"     Please re-register this system by running mgr_register as root.\n"
"     Please visit https://%(hostname)s/rhn/systems/SystemEntitlements.do\n"
"     or login at https://%(hostname)s, and from the \"Overview\" tab,\n"
"     select \"Subscription Management\" to enable the service for this "
"system.\n"
"     "
msgstr ""

#: ../common/rhnException.py:81
msgid "Record not available in the database."
msgstr ""

#: ../common/rhnException.py:82
msgid "Invalid value for entry."
msgstr ""

#: ../common/rhnException.py:83
#, python-format
msgid ""
"\n"
"     This system does not have a valid entitlement for SUSE Manager.\n"
"     Please visit https://%(hostname)s/rhn/systems/SystemEntitlements.do\n"
"     or login at https://%(hostname)s, and from the \"Overview\" tab,\n"
"     select \"Subscription Management\" to enable the service for this "
"system.\n"
"     "
msgstr ""

#: ../common/rhnException.py:89
msgid "Channel error"
msgstr ""

#: ../common/rhnException.py:90
msgid "Client session token is invalid."
msgstr ""

#: ../common/rhnException.py:91
msgid "Client session token has expired."
msgstr ""

#: ../common/rhnException.py:92
msgid "You are not authorized to retrieve the requested object."
msgstr ""

#: ../common/rhnException.py:93
msgid "Invalid action"
msgstr ""

#: ../common/rhnException.py:94
msgid "You are not allowed to perform administrative tasks on this system."
msgstr ""

#: ../common/rhnException.py:96
msgid "The system is already subscribed to the specified channel."
msgstr ""

#: ../common/rhnException.py:97
msgid "The system is not currently subscribed to the specified channel."
msgstr ""

#: ../common/rhnException.py:98
msgid "The specified channel does not exist."
msgstr ""

#: ../common/rhnException.py:99
msgid "Invalid channel version."
msgstr ""

#: ../common/rhnException.py:100
msgid ""
"\n"
"     User group membership limits exceeded.\n"
"\n"
"     The current settings for your account do not allow you to add another\n"
"     user account. Please check with the organization administrator for "
"your\n"
"     account if the maximum number of users allowed to subscribe to server "
"needs\n"
"     to be changed.\n"
"     "
msgstr ""

#: ../common/rhnException.py:108
msgid ""
"\n"
"     System group membership limits exceeded.\n"
"\n"
"     The current settings for your account do not allow you to add another\n"
"     system profile. Please check with the organization administrator for "
"your\n"
"     account for modifying the maximum number of system profiles that can "
"be\n"
"     subscribed to your account.\n"
"     "
msgstr ""

#: ../common/rhnException.py:116
msgid ""
"\n"
"     Invalid architecture.\n"
"\n"
"     The architecture of the package is not supported by\n"
"     "
msgstr ""

#: ../common/rhnException.py:121
msgid "Invalid RPM header"
msgstr ""

#: ../common/rhnException.py:122
msgid ""
"\n"
"    This system is already registered as a Salt Minion. If you want to "
"register it as a traditional client\n"
"    please delete it first via the web UI or API and then register it using "
"the traditional tools.\n"
"    "
msgstr ""

#. For the uploading tools
#: ../common/rhnException.py:127
msgid "Invalid information uploaded to the server"
msgstr ""

#: ../common/rhnException.py:128
msgid "Error uploading network interfaces configuration."
msgstr ""

#: ../common/rhnException.py:129
msgid ""
"\n"
"     Package Upload Failed due to uniqueness constraint violation.\n"
"     Make sure the package does not have any duplicate dependencies or\n"
"     does not already exists on the server\n"
"     "
msgstr ""

#: ../common/rhnException.py:134
msgid ""
"\n"
"     The --force rhnpush option is disabled on this server.\n"
"     Please contact your SUSE Manager administrator for more help.\n"
"     "
msgstr ""

#. 60-70: token errors
#: ../common/rhnException.py:140
msgid ""
"\n"
"     The activation token specified could not be found on the server.\n"
"     Please retry with a valid key.\n"
"     "
msgstr ""

#: ../common/rhnException.py:144
msgid "Too many systems registered using this registration token"
msgstr ""

#: ../common/rhnException.py:145
msgid "Token contains invalid, obsoleted or insufficient settings"
msgstr ""

#: ../common/rhnException.py:146
msgid "Conflicting activation tokens"
msgstr ""

#. 70-80: channel subscription errors
#: ../common/rhnException.py:149
msgid ""
"\n"
"     No matching base channel found for your system.\n"
"     "
msgstr ""

#: ../common/rhnException.py:152
msgid ""
"\n"
"     You do not have subscription permission to the designated channel.\n"
"     Please refer to your organization's channel or organization\n"
"     administrators for further details.\n"
"     "
msgstr ""

#: ../common/rhnException.py:157
msgid "You can not unsubscribe from base channel."
msgstr ""

#: ../common/rhnException.py:158
msgid "SUSE Manager or Proxy channel can not be subscribed."
msgstr ""

#. 80-90: server group errors
#: ../common/rhnException.py:161
msgid "There was an error while trying to join the system to its groups"
msgstr ""

#. 90-100: entitlement errors
#: ../common/rhnException.py:164
msgid "Unable to entitle system"
msgstr ""

#. 100-109: e-mail and uuid related faults
#: ../common/rhnException.py:167
msgid "Maximum e-mail length violation."
msgstr ""

#: ../common/rhnException.py:168
msgid "This system has been previously registered."
msgstr ""

#: ../common/rhnException.py:169
msgid "Invalid username"
msgstr ""

#. 140-159 applet errors
#: ../common/rhnException.py:172
msgid "Unable to look up server"
msgstr ""

#. 160-179: OSAD errors
#: ../common/rhnException.py:175
msgid "Required argument is missing"
msgstr ""

#. 600-699: RHEL5+ EN errors
#: ../common/rhnException.py:178
msgid "No entitlement information tied to hardware"
msgstr ""

#: ../common/rhnException.py:179
msgid "Installation number is not entitling"
msgstr ""

#. 700-799: Additional user input verification errors.
#: ../common/rhnException.py:182
msgid "Maximum username length violation"
msgstr ""

#: ../common/rhnException.py:183
msgid "Maximum password length violation"
msgstr ""

#: ../common/rhnException.py:184
msgid "This user has read only API access. Action denied."
msgstr ""

#: ../common/rhnException.py:186
msgid "System Name cannot be less than 1 character"
msgstr ""

#. 1000-1999: Proxy specific errors:
#. issued by a Proxy to the client
#: ../common/rhnException.py:190
msgid "SUSE Manager Proxy error."
msgstr ""

#: ../common/rhnException.py:191
msgid "SUSE Manager Proxy unable to login."
msgstr ""

#. issued by a SUSE Manager Server/Satellite to the proxy
#: ../common/rhnException.py:193
msgid ""
"\n"
"     SUSE Manager Proxy system ID does not match a Spacewalk Proxy Server\n"
"     in the database.\n"
"     "
msgstr ""

#: ../common/rhnException.py:197
msgid "SUSE Manager Proxy session token is invalid."
msgstr ""

#: ../common/rhnException.py:198
msgid "SUSE Manager Proxy session token has expired."
msgstr ""

#. 2000-2999: Red Hat Satellite specific errors:
#: ../common/rhnException.py:202
msgid ""
"\n"
"      user creation is not allowed via mgr_register;\n"
"     please contact your sysadmin to have your account created.\n"
"     "
msgstr ""

#: ../common/rhnException.py:206
msgid ""
"\n"
"     This SUSE Manager server is not allowed to use Inter Server Sync on "
"this server\n"
"     "
msgstr ""

#: ../common/rhnException.py:209
msgid ""
"\n"
"     Inter Server Sync is disabled on this SUSE Manager Server.\n"
"     "
msgstr ""

#. 3000-3999: XML dumper errors:
#: ../common/rhnException.py:214
msgid "Invalid datatype passed"
msgstr ""

#: ../common/rhnException.py:215
msgid "Unable to retrieve channel"
msgstr ""

#: ../common/rhnException.py:216
msgid "Unable to retrieve package"
msgstr ""

#: ../common/rhnException.py:217
msgid "Unable to retrieve erratum"
msgstr ""

#: ../common/rhnException.py:218
msgid "File is missing"
msgstr ""

#: ../common/rhnException.py:219
msgid "Function retrieval error"
msgstr ""

#: ../common/rhnException.py:220
msgid "Function execution error"
msgstr ""

#: ../common/rhnException.py:221
msgid "Missing version string"
msgstr ""

#: ../common/rhnException.py:222
msgid "Invalid version string"
msgstr ""

#: ../common/rhnException.py:223
msgid "Mismatching versions"
msgstr ""

#: ../common/rhnException.py:224
msgid "Invalid channel version"
msgstr ""

#: ../common/rhnException.py:225
msgid "No comps file for channel"
msgstr ""

#: ../common/rhnException.py:226
msgid "Unable to retrieve comps file"
msgstr ""

#. 4000 - 4999: config management errors
#: ../common/rhnException.py:229
msgid "Configuration action missing"
msgstr ""

#: ../common/rhnException.py:230
msgid "File too large"
msgstr ""

#: ../common/rhnException.py:231
msgid "File contains binary data"
msgstr ""

#: ../common/rhnException.py:232
msgid "Configuration channel is not empty"
msgstr ""

#: ../common/rhnException.py:233
msgid "Permission error"
msgstr ""

#: ../common/rhnException.py:234
msgid "Content missing for configuration file"
msgstr ""

#: ../common/rhnException.py:235
msgid "Template delimiters not specified"
msgstr ""

#: ../common/rhnException.py:236
msgid "Configuration channel does not exist"
msgstr ""

#: ../common/rhnException.py:237
msgid "Configuration channel already exists"
msgstr ""

#: ../common/rhnException.py:238
msgid "File missing from configuration channel"
msgstr ""

#: ../common/rhnException.py:239
msgid "Different revision of this file is uploaded"
msgstr ""

#: ../common/rhnException.py:240
msgid "File already uploaded to configuration channel"
msgstr ""

#: ../common/rhnException.py:241
msgid "File size exceeds remaining quota space"
msgstr ""

#: ../common/rhnException.py:242
msgid "Full path of file must be specified"
msgstr ""

#: ../common/rhnException.py:243
msgid "Invalid revision number"
msgstr ""

#: ../common/rhnException.py:244
msgid "Cannot compare files of different file type"
msgstr ""

#. 5000 - 5999: client content uploading errors
#. 5000 - 5099: crash reporting errors
#: ../common/rhnException.py:248
msgid "Crash information is invalid or incomplete"
msgstr ""

#: ../common/rhnException.py:249
msgid "Crash file information is invalid or incomplete"
msgstr ""

#: ../common/rhnException.py:250
msgid "Error composing crash directory path"
msgstr ""

#: ../common/rhnException.py:251
msgid "Error composing crash file path"
msgstr ""

#: ../common/rhnException.py:252 ../common/rhnException.py:259
msgid "Invalid content encoding"
msgstr ""

#: ../common/rhnException.py:253
msgid "Invalid crash name"
msgstr ""

#: ../common/rhnException.py:254
msgid "Crash reporting is disabled for this organization"
msgstr ""

#. 5100 - 5199: scap results reporting error
#: ../common/rhnException.py:256
msgid "SCAP results file transfer is invalid or incomplete"
msgstr ""

#: ../common/rhnException.py:257
msgid "Error composing directory path for detailed SCAP results"
msgstr ""

#: ../common/rhnException.py:258
msgid "Error composing file path for detailed SCAP results"
msgstr ""

#: ../common/rhnException.py:306
msgid ""
"\n"
"     An error has occurred while processing your request. If this problem\n"
"     persists please enter a bug report at scc.suse.com.\n"
"     If you choose to submit the bug report, please be sure to include\n"
"     details of what you were trying to do when this error occurred and\n"
"     details on how to reproduce this problem.\n"
msgstr ""

#: ../common/rhnException.py:358
#, python-format
msgid ""
"Error Message:\n"
"    %s\n"
msgstr ""

#: ../common/rhnException.py:360
#, python-format
msgid "Error Class Code: %s\n"
msgstr ""

#: ../common/rhnException.py:363
#, python-format
msgid "Error Class Info: %s\n"
msgstr ""

#: ../common/rhnException.py:365
#, python-format
msgid "Explanation: %s"
msgstr ""

#: ../common/rhnTB.py:205
#, python-format
msgid "ERROR: %s %s: %s"
msgstr ""

#: ../common/rhnTB.py:207
#, python-format
msgid "TRACEBACK: %s"
msgstr ""

#: ../satellite_tools/disk_dumper/iss.py:1294
#: ../satellite_tools/disk_dumper/iss.py:1298
#, python-format
msgid "format of %s should be at least YYYYMMDD.\n"
msgstr ""

#: ../satellite_tools/messages.py:26
#, python-format
msgid ""
"\n"
"ERROR: executing step %s. Error is:\n"
"%s\n"
msgstr ""

#: ../satellite_tools/messages.py:31
#, python-format
msgid ""
"\n"
"ERROR: there was a problem accessing the channel data from your temporary\n"
"       repository. Did you migrate all of the data from the channel ISOs\n"
"       do this directory? If so, please recheck the channels ISOs, ensure\n"
"       that you have them all, and then iteratively remount and repopulate\n"
"       the temporary repository (%s).\n"
msgstr ""

#: ../satellite_tools/messages.py:39
#, python-format
msgid ""
"\n"
"ERROR: there was a problem synchronizing the information.\n"
"       Error message: %s\n"
msgstr ""

#: ../satellite_tools/messages.py:44
#, python-format
msgid ""
"\n"
"ERROR: There was a problem communicating with the ISS Master.\n"
"       Depending on the specific error details, please review your "
"configuration,\n"
"       basic network connectivity, and/or name resolution, and try again.\n"
"       Error message: %s\n"
msgstr ""

#: ../satellite_tools/messages.py:51
#, python-format
msgid ""
"\n"
"ERROR: There was a problem communicating with the ISS Master.\n"
"       If the master satellite is older than v5.3, it does not have ISS "
"capability.\n"
"       Otherwise, depending on the specific error details, please review "
"your\n"
"       configuration, basic network connectivity, and/or name resolution, "
"and try again.\n"
"       Error message: %s\n"
msgstr ""

#: ../satellite_tools/messages.py:59
#, python-format
msgid ""
"\n"
"ERROR: a child-channel cannot be synced without its parent being synced as\n"
"       well. A parent needs to be either (a) previously synced or (b) "
"synced\n"
"       in tandem with the desired child-channel. Missing parents for this\n"
"       transaction:\n"
"       %s\n"
msgstr ""

#: ../satellite_tools/messages.py:67
#, python-format
msgid ""
"\n"
"ERROR: you are not entitled to sync a channel in this set of channels.\n"
"Please contact your SUSE Manager contact\n"
"%s"
msgstr ""

#: ../satellite_tools/messages.py:72
#, python-format
msgid "  ERROR: not enough free space (%s KB) on device."
msgstr ""

#: ../satellite_tools/messages.py:74
#, python-format
msgid "    %3d/%s Fetch successful: %s (%s bytes)"
msgstr ""

#: ../satellite_tools/messages.py:75
#, python-format
msgid "    Extinct package:  %s"
msgstr ""

#: ../satellite_tools/messages.py:76
#, python-format
msgid "   Total size: %s"
msgstr ""

#: ../satellite_tools/messages.py:77
#, python-format
msgid "      Downloaded %s of %s. Estimated remaining time: %s"
msgstr ""

#: ../satellite_tools/messages.py:78
#, python-format
msgid "    Fetch unsuccessful: %s"
msgstr ""

#: ../satellite_tools/messages.py:79
#, python-format
msgid "   RPM fetch summary: %s"
msgstr ""

#: ../satellite_tools/messages.py:80
#, python-format
msgid "       success: %d"
msgstr ""

#: ../satellite_tools/messages.py:81
#, python-format
msgid "       failed:  %d"
msgstr ""

#: ../satellite_tools/messages.py:82
#, python-format
msgid "       extinct: %d"
msgstr ""

#: ../satellite_tools/messages.py:84
#, python-format
msgid "   Retrieving / parsing *relevant* package metadata: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:85
#, python-format
msgid "   Retrieving / parsing errata data: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:86
#, python-format
msgid "   Retrieving / parsing kickstart data: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:87
#, python-format
msgid "   Retrieving / parsing kickstart tree files: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:88
#, python-format
msgid "   Importing *relevant* package metadata: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:89
msgid "   * WARNING: this may be a slow process."
msgstr ""

#: ../satellite_tools/messages.py:90
msgid "Linking packages to channels"
msgstr ""

#: ../satellite_tools/messages.py:91
#, python-format
msgid "   Importing *relevant* errata: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:92
msgid "   No new kickstartable tree to import"
msgstr ""

#: ../satellite_tools/messages.py:93
#, python-format
msgid "Importing kickstartable trees (%d)"
msgstr ""

#: ../satellite_tools/messages.py:94
#, python-format
msgid "Imported kickstartable trees (%d)"
msgstr ""

#: ../satellite_tools/reposync.py:111 ../satellite_tools/satsync.py:439
msgid "+++ sending log as an email +++"
msgstr ""

#: ../satellite_tools/reposync.py:114
#, python-format
msgid "%s sync. report from %s"
msgstr ""

#: ../satellite_tools/reposync.py:124 ../satellite_tools/satsync.py:449
msgid "+++ email requested, but there is nothing to send +++"
msgstr ""

#: ../satellite_tools/rhn_satellite_activate.py:198
#, python-format
msgid ""
"\"%s\" (specified in commandline)\n"
"could not be opened and read:\n"
"%s"
msgstr ""

#: ../satellite_tools/rhn_satellite_activate.py:205
#, python-format
msgid ""
"\"%s\" could not be opened\n"
"and/or written to:\n"
"%s"
msgstr ""

#: ../satellite_tools/satsync.py:258
#, python-format
msgid "No handler for step %s"
msgstr ""

#. Try one more time - this time it should be faster since
#. everything should be cached
#: ../satellite_tools/satsync.py:270
msgid "Environment changed, trying again..."
msgstr ""

#: ../satellite_tools/satsync.py:277
msgid "ERROR: Encountered IntegrityError: \n"
msgstr ""

#: ../satellite_tools/satsync.py:285
msgid "Repeated failures"
msgstr ""

#: ../satellite_tools/satsync.py:290
#, python-format
msgid ""
"    Import complete:\n"
"        Begin time: %s\n"
"        End time:   %s\n"
"        Elapsed:    %s\n"
"          "
msgstr ""

#: ../satellite_tools/satsync.py:311
msgid "hours"
msgstr ""

#: ../satellite_tools/satsync.py:311
msgid "minutes"
msgstr ""

#: ../satellite_tools/satsync.py:311
msgid "seconds"
msgstr ""

#: ../satellite_tools/satsync.py:357
msgid ""
"ERROR: The dump is missing package data, use --no-rpms to skip this step or "
"fix the content to include package data."
msgstr ""

#. the orgs() method doesn't exist; that's fine we just
#. won't sync the orgs
#: ../satellite_tools/satsync.py:404
msgid "The SUSE Manager master does not support syncing orgs data."
msgstr ""

#: ../satellite_tools/satsync.py:404
msgid "Skipping..."
msgstr ""

#: ../satellite_tools/satsync.py:442
#, python-format
msgid "SUSE Manager Inter Server sync. report from %s"
msgstr ""

#: ../satellite_tools/satsync.py:521
msgid " - file-system synchronization"
msgstr ""

#: ../satellite_tools/satsync.py:533 ../satellite_tools/satsync.py:541
msgid " - live synchronization"
msgstr ""

#: ../satellite_tools/satsync.py:534
#, python-brace-format
msgid ""
"ERROR: Live content synchronizing with RHN Classic Hosted is no longer "
"supported.\n"
"Please use the cdn-sync command instead unless you are attempting to sync "
"from another {PRODUCT_NAME} via Inter-Server-Sync (ISS), or from local "
"content on disk via Channel Dump ISOs."
msgstr ""

#: ../satellite_tools/satsync.py:542
#, python-format
msgid "   url: %s"
msgstr ""

#: ../satellite_tools/satsync.py:543
#, python-format
msgid "   debug/output level: %s"
msgstr ""

#: ../satellite_tools/satsync.py:553
msgid "ERROR: this server must be registered with SUSE Manager."
msgstr ""

#: ../satellite_tools/satsync.py:575
#, python-format
msgid "Retrieving / parsing %s data"
msgstr ""

#: ../satellite_tools/satsync.py:585 ../satellite_tools/satsync.py:600
msgid "*** SYSTEM INTERRUPT CALLED ***"
msgstr ""

#: ../satellite_tools/satsync.py:593
msgid "ERROR: fatal parser exception occurred "
msgstr ""

#: ../satellite_tools/satsync.py:594
#, python-format
msgid "(line: %s, col: %s msg: %s)"
msgstr ""

#: ../satellite_tools/satsync.py:598
#, python-format
msgid "ERROR: parser exception occurred: %s"
msgstr ""

#: ../satellite_tools/satsync.py:603
msgid "ERROR: exception (during parse) occurred: "
msgstr ""

#: ../satellite_tools/satsync.py:604
#, python-format
msgid ""
"   Encountered some errors with %s data (see logs (%s) for more information)"
msgstr ""

#: ../satellite_tools/satsync.py:606
#, python-format
msgid "   Encountered some errors with %s data:"
msgstr ""

#: ../satellite_tools/satsync.py:607
#, python-format
msgid "   ------- %s PARSE/IMPORT ERROR -------"
msgstr ""

#: ../satellite_tools/satsync.py:609
msgid "   ---------------------------------------"
msgstr ""

#: ../satellite_tools/satsync.py:612
#, python-format
msgid "%s data complete"
msgstr ""

#: ../satellite_tools/satsync.py:665
msgid "Retrieving / parsing channel data"
msgstr ""

#: ../satellite_tools/satsync.py:718
msgid "Channel data complete"
msgstr ""

#: ../satellite_tools/satsync.py:736
#, python-format
msgid "%10s import from %s"
msgstr ""

#: ../satellite_tools/satsync.py:739
#, python-format
msgid "%10s import from %s - %s"
msgstr ""

#: ../satellite_tools/satsync.py:743
#, python-format
msgid "%10s"
msgstr ""

#: ../satellite_tools/satsync.py:750
msgid "p"
msgstr ""

#: ../satellite_tools/satsync.py:752
msgid "."
msgstr ""

#: ../satellite_tools/satsync.py:758
msgid "   p = previously imported/synced channel"
msgstr ""

#: ../satellite_tools/satsync.py:759
msgid "   . = channel not yet imported/synced"
msgstr ""

#: ../satellite_tools/satsync.py:765
msgid "   e = channel no longer supported (end-of-service)"
msgstr ""

#: ../satellite_tools/satsync.py:767
msgid "   ? = channel label invalid --- typo?"
msgstr ""

#: ../satellite_tools/satsync.py:771
#, python-format
msgid "   %s:"
msgstr ""

#: ../satellite_tools/satsync.py:772
#, python-format
msgid "      %s %-40s %4s %s"
msgstr ""

#: ../satellite_tools/satsync.py:773
msgid "base-channels"
msgstr ""

#: ../satellite_tools/satsync.py:786 ../satellite_tools/satsync.py:1603
msgid "NONE RELEVANT"
msgstr ""

#: ../satellite_tools/satsync.py:808
msgid "end-of-service"
msgstr ""

#: ../satellite_tools/satsync.py:809
msgid "e"
msgstr ""

#: ../satellite_tools/satsync.py:815
msgid "   typos:"
msgstr ""

#: ../satellite_tools/satsync.py:816
msgid "?"
msgstr ""

#: ../satellite_tools/satsync.py:831
#, python-format
msgid "XXX: imported channels: %s"
msgstr ""

#: ../satellite_tools/satsync.py:832
#, python-format
msgid "XXX:   cached channels: %s"
msgstr ""

#: ../satellite_tools/satsync.py:837
msgid "XXX: list channels called"
msgstr ""

#: ../satellite_tools/satsync.py:855
msgid "ERROR: these channels either do not exist or are not available:"
msgstr ""

#: ../satellite_tools/satsync.py:859
#, python-format
msgid "       (to see a list of channel labels: %s --list-channels)"
msgstr ""

#: ../satellite_tools/satsync.py:904
#, python-format
msgid "   Retrieving / parsing short package metadata: %s (%s)"
msgstr ""

#: ../satellite_tools/satsync.py:965
#, python-format
msgid "Diffing package metadata (what's missing locally?): %s"
msgstr ""

#: ../satellite_tools/satsync.py:971 ../satellite_tools/satsync.py:1254
msgid "Diffing:    "
msgstr ""

#: ../satellite_tools/satsync.py:988
msgid "ERROR: incremental dump skipped"
msgstr ""

#: ../satellite_tools/satsync.py:1079
msgid "Downloading rpm packages"
msgstr ""

#: ../satellite_tools/satsync.py:1084
#, python-format
msgid "   Fetching any missing RPMs: %s (%s)"
msgstr ""

#: ../satellite_tools/satsync.py:1085 ../satellite_tools/satsync.py:1153
msgid "NONE MISSING"
msgstr ""

#: ../satellite_tools/satsync.py:1094
msgid "Processing rpm packages complete"
msgstr ""

#: ../satellite_tools/satsync.py:1121
msgid "Downloading package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1146
msgid "Downloading srpm packages"
msgstr ""

#: ../satellite_tools/satsync.py:1152
#, python-format
msgid "   Fetching any missing SRPMs: %s (%s)"
msgstr ""

#: ../satellite_tools/satsync.py:1249
#, python-format
msgid "Diffing source package metadata (what's missing locally?): %s"
msgstr ""

#: ../satellite_tools/satsync.py:1260
msgid "Downloading source package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1338 ../satellite_tools/satsync.py:2027
#, python-format
msgid "Unable to save file %s: %s"
msgstr ""

#. for
#. Retried a number of times and it still failed; log the
#. file as being failed and move on
#: ../satellite_tools/satsync.py:1345
#, python-format
msgid "Failed to fetch file %s"
msgstr ""

#: ../satellite_tools/satsync.py:1350
msgid "Downloading kickstartable trees metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1365
msgid "Downloading kickstartable trees files"
msgstr ""

#: ../satellite_tools/satsync.py:1504
#, python-format
msgid "Grabbing all patches for channel %s"
msgstr ""

#: ../satellite_tools/satsync.py:1554
msgid "Downloading patch data"
msgstr ""

#: ../satellite_tools/satsync.py:1556
msgid "Forcing download of all patch data for requested channels."
msgstr ""

#: ../satellite_tools/satsync.py:1571
msgid "Downloading patch data complete"
msgstr ""

#: ../satellite_tools/satsync.py:1576 ../satellite_tools/satsync.py:1597
msgid "Downloading:"
msgstr ""

#: ../satellite_tools/satsync.py:1579
msgid " - complete"
msgstr ""

#: ../satellite_tools/satsync.py:1624
msgid "Importing source package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1627
msgid "Importing package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1635
msgid "Importing:  "
msgstr ""

#. not in the cache
#: ../satellite_tools/satsync.py:1703
msgid ""
"Package Not Found in Cache, Clear the Cache "
"to                                  Regenerate it."
msgstr ""

#: ../satellite_tools/satsync.py:1709
msgid "Importing channel patches"
msgstr ""

#: ../satellite_tools/satsync.py:1714
#, python-format
msgid "Importing %s patches for channel %s."
msgstr ""

#. Incomplete configuration
#: ../satellite_tools/satsync.py:2113
msgid "ERROR: server.mount_point not set in the configuration file"
msgstr ""

#: ../satellite_tools/satsync.py:2117
#, python-format
msgid "ERROR: server.mount_point %s do not exist"
msgstr ""

#: ../satellite_tools/satsync.py:2122
#, python-format
msgid "ERROR: path under server.mount_point (%s)  do not exist"
msgstr ""

#: ../satellite_tools/satsync.py:2199
#, python-format
msgid "Commandline: %s"
msgstr ""

#: ../satellite_tools/satsync.py:2202
#, python-format
msgid ""
"DEBUG ONLY: max. batch-size for XML/database-import processing (1..%s).\"man "
"satellite-sync\" for more information."
msgstr ""

#: ../satellite_tools/satsync.py:2205
msgid "alternative SSL CA Cert (fullpath to cert file)"
msgstr ""

#: ../satellite_tools/satsync.py:2207
msgid "process data for this channel only"
msgstr ""

#: ../satellite_tools/satsync.py:2209
msgid ""
"disk dump will be considered to be a full export; see \"man satellite-sync\" "
"for more information."
msgstr ""

#: ../satellite_tools/satsync.py:2212
msgid "existing custom channels will also be synced (unless -c is used)"
msgstr ""

#: ../satellite_tools/satsync.py:2214
#, python-format
msgid ""
"override debug level set in /etc/rhn/rhn.conf (which is currently set at %s)."
msgstr ""

#: ../satellite_tools/satsync.py:2216
#, python-format
msgid "requested version of XML dump (default: %s)"
msgstr ""

#: ../satellite_tools/satsync.py:2218
msgid "e-mail a report of what was synced/imported"
msgstr ""

#: ../satellite_tools/satsync.py:2220
msgid "forcibly process all (not a diff of) patch metadata"
msgstr ""

#: ../satellite_tools/satsync.py:2222
msgid "Do not use an http proxy under any circumstances."
msgstr ""

#: ../satellite_tools/satsync.py:2224
msgid "alternative http proxy (hostname:port)"
msgstr ""

#: ../satellite_tools/satsync.py:2226
msgid "alternative http proxy username"
msgstr ""

#: ../satellite_tools/satsync.py:2228
msgid "alternative http proxy password"
msgstr ""

#: ../satellite_tools/satsync.py:2230
msgid "parent SUSE Manager to import content from"
msgstr ""

#: ../satellite_tools/satsync.py:2232
msgid "list all available channels and exit"
msgstr ""

#: ../satellite_tools/satsync.py:2234
msgid "help on all error codes mgr-inter-sync returns"
msgstr ""

#: ../satellite_tools/satsync.py:2236
msgid "source mount point for import - disk update only"
msgstr ""

#: ../satellite_tools/satsync.py:2238
msgid "do not process patch data"
msgstr ""

#: ../satellite_tools/satsync.py:2240
msgid "do not process kickstart data (provisioning only)"
msgstr ""

#: ../satellite_tools/satsync.py:2242
msgid "do not process full package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:2244
msgid "do not download, or process any RPMs"
msgstr ""

#: ../satellite_tools/satsync.py:2246
msgid "turn off SSL (not recommended)"
msgstr ""

#: ../satellite_tools/satsync.py:2248
msgid "org to which the sync imports data. defaults to the admin account"
msgstr ""

#: ../satellite_tools/satsync.py:2250
msgid "print the configuration and exit"
msgstr ""

#: ../satellite_tools/satsync.py:2252
msgid "alternative server with which to connect (hostname)"
msgstr ""

#: ../satellite_tools/satsync.py:2254
msgid "synchronize to this step (man satellite-sync for more info)"
msgstr ""

#: ../satellite_tools/satsync.py:2256
msgid "write complete data to tempfile before streaming to remainder of app"
msgstr ""

#: ../satellite_tools/satsync.py:2258
msgid "DEBUG ONLY: alternative path to digital system id"
msgstr ""

#: ../satellite_tools/satsync.py:2260
msgid "alternative email address(es) for sync output (--email option)"
msgstr ""

#: ../satellite_tools/satsync.py:2262
msgid "do not remove rpms when importing from local dump"
msgstr ""

#: ../satellite_tools/satsync.py:2264
msgid ""
"the fully qualified domain name of the master Satellite. Valid with --mount-"
"point only. Required if you want to import org data and channel permissions."
msgstr ""

#: ../satellite_tools/satsync.py:2274
#, python-format
msgid "ERROR: these arguments make no sense in this context (try --help): %s"
msgstr ""

#. An SQL error is fatal... crash and burn
#: ../satellite_tools/satsync.py:2286
#, python-format
msgid "ERROR: Can't connect to the database: %s"
msgstr ""

#: ../satellite_tools/satsync.py:2287
msgid "ERROR: Check if your database is running."
msgstr ""

#: ../satellite_tools/satsync.py:2322
#, python-format
msgid "ERROR: --debug-level takes an in integer value within the range %s."
msgstr ""

#: ../satellite_tools/satsync.py:2324
msgid "  0  - little logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2325
msgid "  1  - minimal logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2326
msgid "  2  - normal level of logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2327
msgid "  3  - lots of logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2328
msgid "  4+ - excessive logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2341
msgid "ERROR: The --master option is only valid with the --mount-point option"
msgstr ""

#: ../satellite_tools/satsync.py:2351
#, python-format
msgid "ERROR: Unable to lookup Org Id %s"
msgstr ""

#: ../satellite_tools/satsync.py:2360
msgid ""
"WARNING: --list-channels option overrides any --step option. --step ignored."
msgstr ""

#: ../satellite_tools/satsync.py:2375
#, python-format
msgid ""
"ERROR: '%s' is not a valid step. See 'man mgr-inter-sync' for more detail."
msgstr ""

#: ../satellite_tools/satsync.py:2407
msgid ""
"ERROR: No channels currently imported; try mgr-inter-sync --list-channels; "
"then mgr-inter-sync -c chn0 -c chn1..."
msgstr ""

#. int(None) --> TypeError
#. int('a')  --> ValueError
#: ../satellite_tools/satsync.py:2457 ../satellite_tools/satsync.py:2461
msgid "ERROR: --batch-size must have a value within the range: 1..50"
msgstr ""

#: ../satellite_tools/satsync.py:2469
#, python-format
msgid "ERROR: no such directory %s"
msgstr ""

#: ../satellite_tools/satsync.py:2474
msgid "Error Codes: Returned codes means:"
msgstr ""

#: ../satellite_tools/satsync.py:2475
msgid " -1  - Could not lock file or KeyboardInterrupt or SystemExit"
msgstr ""

#: ../satellite_tools/satsync.py:2476
msgid "  0  - User interrupted or intentional exit"
msgstr ""

#: ../satellite_tools/satsync.py:2477
msgid "  1  - attempting to run more than one instance of mgr-inter-sync."
msgstr ""

#: ../satellite_tools/satsync.py:2478
msgid "  2  - Unable to find synchronization tools."
msgstr ""

#: ../satellite_tools/satsync.py:2479
msgid "  3  - a general socket exception occurred"
msgstr ""

#: ../satellite_tools/satsync.py:2480
msgid "  4  - an SSL error occurred. Recheck your SSL settings."
msgstr ""

#: ../satellite_tools/satsync.py:2481
msgid "  5  - ISS error"
msgstr ""

#: ../satellite_tools/satsync.py:2482
msgid "  6  - unhandled exception occurred"
msgstr ""

#: ../satellite_tools/satsync.py:2483
msgid "  7  - unknown sync error"
msgstr ""

#: ../satellite_tools/satsync.py:2484
msgid "  8  - ERROR: must be root to execute"
msgstr ""

#: ../satellite_tools/satsync.py:2485
msgid "  9  - rpclib fault during synchronization init"
msgstr ""

#: ../satellite_tools/satsync.py:2486
msgid "  10 - synchronization init error"
msgstr ""

#: ../satellite_tools/satsync.py:2487
msgid "  11 - Error parsing XML stream"
msgstr ""

#: ../satellite_tools/satsync.py:2488
msgid "  12 - Channel do not exist"
msgstr ""

#: ../satellite_tools/satsync.py:2489
msgid "  13 - SQL error during importing package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:2490
msgid "  14 - SQL error during linking channel packages"
msgstr ""

#: ../satellite_tools/satsync.py:2491
msgid "  15 - SQL error during xml processing"
msgstr ""

#: ../satellite_tools/satsync.py:2492
msgid "  16 - server.mount_point not set in the configuration file"
msgstr ""

#: ../satellite_tools/satsync.py:2493
msgid ""
"  17 - SQL error during retrieving the channels already imported in the SUSE "
"Manager database"
msgstr ""

#: ../satellite_tools/satsync.py:2494
msgid "  18 - Wrong db connection string in rhn.conf"
msgstr ""

#: ../satellite_tools/satsync.py:2495
msgid "  19 - Bad arguments"
msgstr ""

#: ../satellite_tools/satsync.py:2496
msgid "  20 - Could not connect to db."
msgstr ""

#: ../satellite_tools/satsync.py:2497
msgid "  21 - Bad debug level"
msgstr ""

#: ../satellite_tools/satsync.py:2498
msgid "  22 - Not valid step"
msgstr ""

#: ../satellite_tools/satsync.py:2499
msgid "  24 - no such file"
msgstr ""

#: ../satellite_tools/satsync.py:2500
msgid "  25 - no such directory"
msgstr ""

#: ../satellite_tools/satsync.py:2501
msgid "  26 - mount_point does not exist"
msgstr ""

#: ../satellite_tools/satsync.py:2502
msgid "  27 - No such org"
msgstr ""

#: ../satellite_tools/satsync.py:2503
msgid "  28 - error: --master is only valid with --mount-point"
msgstr ""

#: ../satellite_tools/satsync.py:2510
#, python-format
msgid "ERROR: unknown dump version, try one of %s"
msgstr ""
   0707010000008F000081B40000000000000000000000016290A0C10000E3B6000000000000000000000000000000000000001B00000000spacewalk-backend/po/sv.po    # SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
#
# Translators:
# Christian Rose <menthos@menthos.com>, 2002-2005.
# GÃ¶ran Uddeborg <goeran@uddeborg.se>, 2012.
# Magnus Larsson <fedoratrans@gmail.com>, 2006-2007.
# Miroslav SuchÃ½ <msuchy@redhat.com>, 2011.
# Jiri Dostal <jdostal@redhat.com>, 2018. #zanata
msgid ""
msgstr ""
"Project-Id-Version: Spacewalk\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-10-16 13:34+0200\n"
"PO-Revision-Date: 2018-03-16 10:54+0000\n"
"Last-Translator: Copied by Zanata <copied-by-zanata@zanata.org>\n"
"Language-Team: Swedish (http://www.transifex.com/projects/p/fedora/language/"
"sv/)\n"
"Language: sv\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: Zanata 4.6.2\n"

#: ../server/apacheAuth.py:66
#, python-format
msgid "incomplete proxy authentication token: %s"
msgstr "ofullstÃ¤ndig proxy-autenticeringsnyckel: %s"

#: ../server/apacheAuth.py:84
#, python-format
msgid "Sent proxy signature %s does not match ours %s."
msgstr "Skickad proxy-signatur %s stÃ¤mmer inte med vÃ¥ran %s."

#: ../server/apacheAuth.py:119
msgid "declined proxy authentication"
msgstr "nekad proxy-autenticering"

#: ../server/apacheRequest.py:59
#, python-format
msgid "Invalid request received (%s)."
msgstr "Ogiltig begÃ¤ran mottagen (%s)."

#: ../server/apacheRequest.py:120
#, python-format
msgid ""
"IMPORTANT MESSAGE FOLLOWS:\n"
"%s"
msgstr ""
"VIKTIGT MEDDELANDE FÃ–LJER:\n"
"%s"

#: ../server/apacheRequest.py:149
#, python-format
msgid ""
"While running '%s': caught\n"
"%s : %s\n"
msgstr ""
"NÃ¤r \"%s\" kÃ¶rdes: fÃ¥ngade\n"
"%s : %s\n"

#: ../server/apacheRequest.py:606
#, python-format
msgid "Invalid URI %s"
msgstr "Ogiltig URI %s"

#: ../server/configFilesHandler.py:129 ../server/handlers/app/packages.py:192
#: ../server/handlers/xmlrpc/registration.py:215
#: ../server/handlers/xmlrpc/registration.py:1168
#: ../server/handlers/xmlrpc/registration.py:1307
#, python-format
msgid ""
"\n"
"                   %s Account has been deactivated on this server.\n"
"                   Please contact your Org administrator for more help."
msgstr ""
"\n"
"                   %s-kontot har avaktiverats pÃ¥ denna server.\n"
"                   Kontakta din organisationsadministratÃ¶r fÃ¶r mer hjÃ¤lp."

#: ../server/handlers/applet/applet.py:78
#, fuzzy, python-brace-format
msgid "Your system was not found in the {PRODUCT_NAME} database"
msgstr "Ditt system fanns inte i RHN-databasen"

#: ../server/handlers/sat/auth.py:45
#, fuzzy
msgid "ISS is disabled on this server."
msgstr "ISS Ã¤r inaktiverat pÃ¥ denna satellit."

#: ../server/handlers/sat/auth.py:50
#, python-format
msgid "Server \"%s\" is not enabled for ISS."
msgstr "Servern \"%s\" har inte ISS aktiverat."

#: ../server/handlers/xmlrpc/errata.py:64
#, python-format
msgid "Expected a package name, not: %s"
msgstr "Ett paketnamn fÃ¶rvÃ¤ntades, inte: %s"

#: ../server/handlers/xmlrpc/errata.py:115
#, python-format
msgid "Expected a package, not: %s"
msgstr "Ett paket fÃ¶rvÃ¤ntades, inte: %s"

#: ../server/handlers/xmlrpc/proxy.py:65
#, fuzzy, python-format
msgid "SUSE Manager Proxy service not enabled for server profile: \"%s\""
msgstr "RHN-proxy-tjÃ¤nst inte aktiverat fÃ¶r serverprofilen: \"%s\""

#: ../server/handlers/xmlrpc/proxy.py:85
msgid "Invalid session key"
msgstr "Ogiltig sessionsnyckel"

#: ../server/handlers/xmlrpc/proxy.py:93
msgid "This server ID no longer exists"
msgstr "Denna server-ID finns inte lÃ¤ngre"

#: ../server/handlers/xmlrpc/queue.py:433
#, python-format
msgid "Invalid action value type %s (%s)"
msgstr "Otiltig typ pÃ¥ Ã¥tgÃ¤rsvÃ¤rde %s (%s)"

#: ../server/handlers/xmlrpc/queue.py:464
#, python-format
msgid "Action %s does not belong to server %s"
msgstr "Ã…tgÃ¤rd %s hÃ¶r inte till server %s"

#: ../server/handlers/xmlrpc/registration.py:194
msgid "Required data missing"
msgstr "NÃ¶dvÃ¤ndiga data saknas"

#: ../server/handlers/xmlrpc/registration.py:198
msgid "Required members missing"
msgstr "NÃ¶dvÃ¤ndiga medlemmar saknas"

#: ../server/handlers/xmlrpc/registration.py:207
msgid "Attempt to register a system to an invalid username"
msgstr "FÃ¶rsÃ¶k att registrera ett system med ett ogiltigt anvÃ¤ndarnamn"

#: ../server/handlers/xmlrpc/registration.py:839
msgid "Invalid system release version requested"
msgstr "Ogiltig systemutgÃ¥veversion begÃ¤rd"

#: ../server/handlers/xmlrpc/registration.py:1063
msgid ""
"Unable to find a valid network interface, both ipaddr and ip6addr not found."
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1115
#, python-brace-format
msgid "{PRODUCT_NAME} Welcome Message"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1125
#, fuzzy
msgid "Privacy Statement"
msgstr "Red Hat Network integritetspolicy"

#: ../server/handlers/xmlrpc/registration.py:1146
msgid "Expected a dictionary as a product argument"
msgstr "FÃ¶rvÃ¤ntade ett lexikon som ett produktargument"

#: ../server/handlers/xmlrpc/registration.py:1374
#, python-format
msgid "Invalid value '%s' for %s (%s)"
msgstr "Ogiltigt vÃ¤rde \"%s\" pÃ¥ %s (%s)"

#: ../server/handlers/xmlrpc/scap.py:104
#, fuzzy
msgid "Invalid system_id/action_id pair."
msgstr "Ogiltiga systemrÃ¤ttigheter."

#: ../server/handlers/xmlrpc/up2date.py:233
#, python-format
msgid "Invalid value %s (%s)"
msgstr "Ogiltigt vÃ¤rde %s (%s)"

#: ../server/importlib/userAuth.py:98
msgid "You are not authorized to manage packages in the null org"
msgstr "Du har inte rÃ¤ttigheter att hantera paket i den tomma organisationen"

#: ../server/importlib/userAuth.py:103
#, python-format
msgid "You are not allowed to manage packages in the %s org"
msgstr "Du har inte tillÃ¥telse att hantera paket i organisationen %s"

#: ../server/importlib/userAuth.py:121
msgid "You are not allowed to perform administrative tasks"
msgstr "Du har inte tillÃ¥telse att utfÃ¶ra administrativa uppgifter"

#: ../server/importlib/userAuth.py:144
#, python-format
msgid ""
"You are not allowed to manage channel %s, or that channel does not exist"
msgstr ""
"Du har inte tillÃ¥telse att hantera kanal %s, eller sÃ¥ finns inte kanalen"

#: ../server/importlib/userAuth.py:204
#, fuzzy, python-format
msgid ""
"\n"
"               %s Account has been deactivated on this server.\n"
"               Please contact your Org administrator for more help."
msgstr ""
"\n"
"                   %s-kontot har avaktiverats pÃ¥ denna server.\n"
"                   Kontakta din organisationsadministratÃ¶r fÃ¶r mer hjÃ¤lp."

#: ../server/rhnChannel.py:1992
#, python-format
msgid ""
"Your account does not have access to any channels matching "
"(release='%(release)s', arch='%(arch)s')%(www_activation)s"
msgstr ""
"Ditt konto har inte tillgÃ¥ng till nÃ¥gra kanaler som stÃ¤mmer "
"(utgÃ¥va='%(release)s', ark='%(arch)s')%(www_activation)s"

#: ../server/rhnChannel.py:2002
msgid ""
"\n"
"If you have a registration number, please register with it first at http://"
"www.redhat.com/apps/activate/ and then try again.\n"
"\n"
msgstr ""
"\n"
"Om du har ett registreringsnummer, registrera det fÃ¶rst pÃ¥ http://www.redhat."
"com/apps/activate/ och fÃ¶rsÃ¶k sedan igen.\n"
"\n"

#: ../server/rhnChannel.py:2012
#, python-format
msgid "Insufficient subscription permissions for release (%s, %s"
msgstr "OfullstÃ¤ndiga prenumerationsrÃ¤ttigheter fÃ¶r utgÃ¥van (%s, %s"

#. Various messages that can be reused
#.
#. bretm 02/07/2007 -- when we have better old-client documentation, probably
#. will be safe to get rid of all this crap
#: ../server/rhnChannel.py:2276 ../server/rhnChannel.py:2287
#: ../server/rhnChannel.py:2302
msgid "System Registered but Inactive"
msgstr "Systemet registrerat men inaktivt"

#: ../server/rhnChannel.py:2277
#, fuzzy, python-format
msgid ""
"\n"
"Invalid Architecture and OS release combination (%s, %s).\n"
"Your system has been registered, but will not receive updates\n"
"because it is not subscribed to a channel. If you have not yet\n"
"activated your product for service, please visit our website at:\n"
"\n"
"     http://www.redhat.com/apps/activate/\n"
"\n"
"...to activate your product."
msgstr ""
"\n"
"Ogiltig kombination av arkitektur och OS-utgÃ¥va (%s, %s).\n"
"Ditt system har registrerats, men kommer inte fÃ¥ nÃ¥gra uppdateringar\n"
"eftersom det inte prenumererar pÃ¥ nÃ¥gon kanal.  Om du Ã¤nnu inte\n"
"aktiverat din produkt fÃ¶r drift, besÃ¶k vÃ¥r webbsida pÃ¥:\n"
"  \n"
"     http://www.redhat.com/apps/activate/\n"
"\n"
"â€¦ fÃ¶r att aktivera din produkt."

#: ../server/rhnChannel.py:2288
#, python-format
msgid ""
"\n"
"Invalid Architecture and OS release combination (%s, %s).\n"
"Your system has been registered, but will not receive updates\n"
"because it could not be subscribed to a base channel.\n"
"Please contact your organization administrator for assistance.\n"
msgstr ""
"\n"
"Ogiltig kombination av arkitektur och OS-utgÃ¥va (%s, %s).\n"
"Ditt system har registrerats, men kommer inte fÃ¥ nÃ¥gra uppdateringar\n"
"eftersom det inte kunde prenumerera pÃ¥ nÃ¥gon baskanal.\n"
"Kontakta din organisationsadministratÃ¶r fÃ¶r assistans.\n"

#: ../server/rhnChannel.py:2295
#, python-format
msgid ""
"\n"
"  This system has been successfully registered, but is not yet entitled\n"
"  to service.  To entitle this system to service, login to the web site at:\n"
"\n"
"  %(entitlement_url)s\n"
msgstr ""
"\n"
"  Detta system har nu kunnat registreras, men har Ã¤nnu inte rÃ¤ttigheter fÃ¶r\n"
"  drift.  FÃ¶r att ge detta system driftsrÃ¤ttigheter, logga in pÃ¥ webbsajten "
"pÃ¥:\n"
"\n"
"  %(entitlement_url)s\n"

#: ../server/rhnChannel.py:2303
#, python-format
msgid ""
"\n"
"  This system has been successfully registered, but no service entitlements\n"
"  were available.  To entitle this system to service, login to the web site "
"at:\n"
"\n"
"  %(entitlement_url)s\n"
msgstr ""
"\n"
"  Detta system har nu kunnat registreras, men inga driftsrÃ¤ttigheter fanns\n"
"  tillgÃ¤ngliga.  FÃ¶r att ge detta system driftsrÃ¤ttigheter, logga in pÃ¥\n"
"  webbsajten pÃ¥:\n"
"\n"
"  %(entitlement_url)s\n"

#: ../server/rhnHandler.py:62
msgid "Please run rhn_register as root on this client"
msgstr ""

#: ../server/rhnHandler.py:75
#, python-format
msgid "Service not enabled for system profile: \"%s\""
msgstr "Drift ej aktiverat fÃ¶r systemprofilen: \"%s\""

#: ../server/rhnPackage.py:49 ../server/rhnPackage.py:87
#: ../server/rhnPackage.py:107 ../server/rhnPackage.py:158
#, python-format
msgid "Invalid RPM package %s requested"
msgstr "Ogiltigt RPM-paket %s begÃ¤rt"

#: ../server/rhnPackage.py:112
msgid "Package not found"
msgstr "Paketet finns inte"

#: ../server/rhnServer/server_class.py:97
#, python-format
msgid "Architecture `%s' is not supported"
msgstr "Arkitekturen \"%s\" stÃ¶ds inte"

#: ../server/rhnServer/server_token.py:78
#, python-format
msgid "Token `%s' has more than one base channel assigned"
msgstr "Nyckeln \"%s\" har mer Ã¤n en baskanal tilldelad"

#: ../server/rhnServer/server_token.py:80
msgid "Conflicting base channels"
msgstr "Baskanaler i konflikt"

#: ../server/rhnServer/server_token.py:190
#, python-format
msgid "Failed to add server to group %s"
msgstr "Kunde inte lÃ¤gga till en server till gruppen %s"

#: ../server/rhnServer/server_token.py:503
#, python-format
msgid "Maximum usage count of %s reached"
msgstr "Maximalt antal anvÃ¤ndingar pÃ¥ %s uppnÃ¥tt"

#: ../server/rhnServer/server_token.py:744
msgid ""
"Stacking of re-registration tokens with different base entitlements is not "
"supported"
msgstr ""
"Att lÃ¤gga samman omregistreringsnycklar med olika baskanalrÃ¤ttigheter stÃ¶ds "
"inte"

#: ../server/rhnServer/server_token.py:811
#, python-format
msgid "Could not find token '%s'"
msgstr "Nyckeln \"%s\" finns inte"

#. Cannot use activation keys from different orgs
#: ../server/rhnServer/server_token.py:843
msgid "Tokens from mismatching orgs"
msgstr "Nycklar frÃ¥n organisationer som inte stÃ¤mmer Ã¶verens"

#. Two tokens with different kickstart sessions
#: ../server/rhnServer/server_token.py:853
msgid "Kickstart session mismatch"
msgstr "Kickstart-sessioner stÃ¤mmer inte Ã¶verens"

#: ../server/rhnServer/server_token.py:877
msgid "Stacking of re-registration tokens is not supported"
msgstr "Att lÃ¤gga samman omregistreringsnycklar stÃ¶ds inte"

#: ../server/rhnUser.py:289 ../server/rhnUser.py:292
msgid "Invalid username/password combination"
msgstr "Ogiltigt anvÃ¤ndarnamn/lÃ¶senords-kombination"

#. nope, not reserved either
#: ../server/rhnUser.py:467
#, python-format
msgid "Username `%s' has not been reserved"
msgstr "AnvÃ¤ndarnamnet \"%s\" har inte reserverats"

#. New accounts have to specify an e-mail address
#: ../server/rhnUser.py:473
msgid "E-mail address not specified"
msgstr "E-postadress inte angiven"

#: ../server/rhnUser.py:509
#, python-format
msgid "username should be at least %d characters"
msgstr "anvÃ¤ndarnamn skall vara Ã¥tminstone %d tecken"

#: ../server/rhnUser.py:512
#, python-format
msgid "username should be less than %d characters"
msgstr "anvÃ¤ndarman skall vara mindre Ã¤n %d tecken"

#: ../server/rhnUser.py:523
#, python-format
msgid "username = `%s', invalid character `%s'"
msgstr "anvÃ¤ndarnamn = \"%s\", otiltigt tecken \"%s\""

#: ../server/rhnUser.py:542
#, python-format
msgid "Please limit your e-mail address to %s chars"
msgstr "BegrÃ¤nsa din e-postadress till %s tecken"

#: ../server/rhnUser.py:623
#, python-format
msgid "password must be at least %d characters"
msgstr "lÃ¶senord mÃ¥ste vara Ã¥tminstone %d tecken"

#: ../server/rhnUser.py:626
#, python-format
msgid "Password must be shorter than %d characters"
msgstr "LÃ¶senord mÃ¥ste vara kortare Ã¤n %d tecken"

#: ../server/rhnUser.py:644
#, python-format
msgid "password contains character `%s'"
msgstr "lÃ¶senordet innehÃ¥ller tecknet \"%s\""

#: ../server/rhnUser.py:651
#, python-format
msgid "username should be at least %d characters long"
msgstr "anvÃ¤ndarnamn skall vara Ã¥tminstone %d tecken lÃ¥nga"

#: ../server/rhnUser.py:662
#, python-format
msgid "Cannot register usernames ending with %s"
msgstr "Det gÃ¥r inte att registrera anvÃ¤ndarnamn som slutar med %s"

#. 0-999: Red Hat client/client-like interaction errors:
#: ../common/rhnException.py:53
msgid "This does not appear to be a valid username."
msgstr "Detta tycks inte vara ett giltigt anvÃ¤ndarnamn."

#: ../common/rhnException.py:54
msgid "Invalid username and password combination."
msgstr "Ogiltig kombination av anvÃ¤ndarnamn och lÃ¶senord."

#: ../common/rhnException.py:55
msgid "This login is already taken, or the password is incorrect."
msgstr "Denna inloggning Ã¤r redan tagen, eller sÃ¥ Ã¤r lÃ¶senordet felaktigt."

#: ../common/rhnException.py:56
msgid "Permission denied."
msgstr "Ã…tkomst nekas."

#: ../common/rhnException.py:57
msgid "Object not found."
msgstr "Objektet finns inte."

#: ../common/rhnException.py:58
msgid "Invalid System Digital ID."
msgstr "Ogiltig digital ID fÃ¶r system."

#: ../common/rhnException.py:59
msgid "Invalid System Credentials."
msgstr "Ogiltiga systemrÃ¤ttigheter."

#: ../common/rhnException.py:60
msgid "Could not retrieve user data from database."
msgstr "Det gick inte att hÃ¤mta anvÃ¤ndardata frÃ¥n databasen."

#: ../common/rhnException.py:61
msgid "Valid username required."
msgstr "Giltigt anvÃ¤ndarnamn krÃ¤vs."

#: ../common/rhnException.py:62
msgid "Valid password required."
msgstr "Giltigt lÃ¶senord krÃ¤vs."

#: ../common/rhnException.py:63
msgid "Minimum username length violation."
msgstr "MinimigrÃ¤nsen pÃ¥ anvÃ¤ndarnamn bruten."

#: ../common/rhnException.py:64
msgid "Minimum password length violation."
msgstr "MinimigrÃ¤nsen pÃ¥ lÃ¶senordslÃ¤ngt bruten."

#: ../common/rhnException.py:65
msgid "The username contains invalid characters."
msgstr "AnvÃ¤ndarnamnet innehÃ¥ller otillÃ¥tna tecken."

#: ../common/rhnException.py:66
msgid "File not found."
msgstr "Filen finns inte."

#: ../common/rhnException.py:67
msgid "Architecture and OS version combination is not supported."
msgstr "Kombinationen av arkitektur och OS-utgÃ¥va stÃ¶ds inte."

#: ../common/rhnException.py:68
msgid "Could not retrieve system data from database."
msgstr "Det gick inte att hÃ¤mta systemdata frÃ¥n databasen."

#: ../common/rhnException.py:69
msgid "Invalid arguments passed to function."
msgstr "Ogiltigt argument skickad till funktionen."

#: ../common/rhnException.py:70
msgid "Unable to retrieve requested entry."
msgstr "Det gÃ¥r inte att hÃ¤mta den begÃ¤rda posten."

#: ../common/rhnException.py:71
msgid "Could not update database entry."
msgstr "Det gick inte att uppdatera databasposten."

#: ../common/rhnException.py:72
msgid "Unsupported server architecture."
msgstr "Ej stÃ¶dd serverarkitektur."

#: ../common/rhnException.py:73
#, fuzzy, python-format
msgid ""
"\n"
"     The anonymous server functionality is no longer available.\n"
"\n"
"     Please re-register this system by running mgr_register as root.\n"
"     Please visit https://%(hostname)s/rhn/systems/SystemEntitlements.do\n"
"     or login at https://%(hostname)s, and from the \"Overview\" tab,\n"
"     select \"Subscription Management\" to enable the service for this "
"system.\n"
"     "
msgstr ""
"\n"
"     Den anonyma serverfunktionen Ã¤r inte tillgÃ¤nglig lÃ¤ngre.\n"
"\n"
"     Registrera om detta system genom att kÃ¶ra rhn_register (eller\n"
"     up2date --register pÃ¥ Red Hat Enterprise Linux 3+) som root.\n"
"     BesÃ¶k https://%(hostname)s/rhn/systems/SystemEntitlements.do eller\n"
"     logga in pÃ¥ https://%(hostname)s, och frÃ¥n fliken \"Overview\", vÃ¤lj\n"
"     \"Subscription Management\" fÃ¶r att aktivera RHN-tjÃ¤nsten fÃ¶r detta "
"system.\n"
"     "

#: ../common/rhnException.py:81
msgid "Record not available in the database."
msgstr "Posten inte tillgÃ¤nglig i databasen."

#: ../common/rhnException.py:82
msgid "Invalid value for entry."
msgstr "Ogiltigt vÃ¤rde pÃ¥ post."

#: ../common/rhnException.py:83
#, fuzzy, python-format
msgid ""
"\n"
"     This system does not have a valid entitlement for SUSE Manager.\n"
"     Please visit https://%(hostname)s/rhn/systems/SystemEntitlements.do\n"
"     or login at https://%(hostname)s, and from the \"Overview\" tab,\n"
"     select \"Subscription Management\" to enable the service for this "
"system.\n"
"     "
msgstr ""
"\n"
"     Detta system har inte en giltiga driftsrÃ¤ttigheter fÃ¶r Red Hat "
"Network.\n"
"     BesÃ¶k https://%(hostname)s/rhn/systems/SystemEntitlements.do eller\n"
"     logga in pÃ¥ https://%(hostname)s, och frÃ¥n fliken \"Overview\", vÃ¤lj\n"
"     \"Subscription Management\" fÃ¶r att aktivera RHN-tjÃ¤nsten fÃ¶r detta "
"system.\n"
"     "

#: ../common/rhnException.py:89
msgid "Channel error"
msgstr "Kanalfel"

#: ../common/rhnException.py:90
msgid "Client session token is invalid."
msgstr "Klientsessionsnyckeln Ã¤r ogiltig."

#: ../common/rhnException.py:91
msgid "Client session token has expired."
msgstr "Klientsessionsnyckeln har gÃ¥tt ut."

#: ../common/rhnException.py:92
msgid "You are not authorized to retrieve the requested object."
msgstr "Du har inte rÃ¤ttigheter att hÃ¤mta det begÃ¤rda objektet."

#: ../common/rhnException.py:93
msgid "Invalid action"
msgstr "Ogiltig Ã¥tgÃ¤rd"

#: ../common/rhnException.py:94
msgid "You are not allowed to perform administrative tasks on this system."
msgstr "Du har inte rÃ¤tt att utfÃ¶ra administrativa Ã¥tgÃ¤rder pÃ¥ detta system."

#: ../common/rhnException.py:96
msgid "The system is already subscribed to the specified channel."
msgstr "Systemet prenumererar redan pÃ¥ den angivna kanalen."

#: ../common/rhnException.py:97
msgid "The system is not currently subscribed to the specified channel."
msgstr "Systemet prenumererar fÃ¶r nÃ¤rvarande inte pÃ¥ den angivna kanalen."

#: ../common/rhnException.py:98
msgid "The specified channel does not exist."
msgstr "Den angivna kanalen finns inte."

#: ../common/rhnException.py:99
msgid "Invalid channel version."
msgstr "Ogiltig kanalversion."

#: ../common/rhnException.py:100
#, fuzzy
msgid ""
"\n"
"     User group membership limits exceeded.\n"
"\n"
"     The current settings for your account do not allow you to add another\n"
"     user account. Please check with the organization administrator for "
"your\n"
"     account if the maximum number of users allowed to subscribe to server "
"needs\n"
"     to be changed.\n"
"     "
msgstr ""
"\n"
"     BegrÃ¤nsningen pÃ¥ medlemskap i anvÃ¤ndargrupper Ã¶verskriden.\n"
"\n"
"     De nuvarande instÃ¤llningarna fÃ¶r ditt konto tillÃ¥ter inte att du "
"lÃ¤gger\n"
"     till ett ytterligare anvÃ¤ndarkonto.  Kontrollera med organisationens\n"
"     administratÃ¶r fÃ¶r ditt konto om det maximala antalet anvÃ¤ndare som fÃ¥r\n"
"     prenumerera pÃ¥ RHN behÃ¶ver Ã¤ndras.\n"
"     "

#: ../common/rhnException.py:108
#, fuzzy
msgid ""
"\n"
"     System group membership limits exceeded.\n"
"\n"
"     The current settings for your account do not allow you to add another\n"
"     system profile. Please check with the organization administrator for "
"your\n"
"     account for modifying the maximum number of system profiles that can "
"be\n"
"     subscribed to your account.\n"
"     "
msgstr ""
"\n"
"     BegrÃ¤nsningen pÃ¥ medlemskap i sysmgrupper Ã¶verskriden.\n"
"\n"
"     De nuvarande instÃ¤llningarna fÃ¶r ditt konto tillÃ¥ter inte att du "
"lÃ¤gger\n"
"     till en ytterligare systemprofil.  Kontrollera med organisationens\n"
"     administratÃ¶r fÃ¶r ditt konto fÃ¶r att Ã¤ndra det maximala antalet\n"
"     systemprofiler som kan prenumerera pÃ¥ ditt RHN-konto.\n"
"     "

#: ../common/rhnException.py:116
#, fuzzy
msgid ""
"\n"
"     Invalid architecture.\n"
"\n"
"     The architecture of the package is not supported by\n"
"     "
msgstr ""
"\n"
"     Ogiltig arkitektur.\n"
"\n"
"     Paketets arkitektur stÃ¶ds inte av Red Hat Network\n"
"     "

#: ../common/rhnException.py:121
msgid "Invalid RPM header"
msgstr "Ogiltigt RPM-huvud"

#: ../common/rhnException.py:122
msgid ""
"\n"
"    This system is already registered as a Salt Minion. If you want to "
"register it as a traditional client\n"
"    please delete it first via the web UI or API and then register it using "
"the traditional tools.\n"
"    "
msgstr ""

#. For the uploading tools
#: ../common/rhnException.py:127
msgid "Invalid information uploaded to the server"
msgstr "Ogiltig information skickad till servern"

#: ../common/rhnException.py:128
msgid "Error uploading network interfaces configuration."
msgstr "Fel nÃ¤r konfiguration av nÃ¤tverksgrÃ¤nssnitt skickades."

#: ../common/rhnException.py:129
msgid ""
"\n"
"     Package Upload Failed due to uniqueness constraint violation.\n"
"     Make sure the package does not have any duplicate dependencies or\n"
"     does not already exists on the server\n"
"     "
msgstr ""
"\n"
"     Det gick inte att skicka paket fÃ¶r att regeln om unika paket brÃ¶ts.\n"
"     Se till att paketet inte har nÃ¥gra dubblerade beroenden eller redan\n"
"     rinns pÃ¥ servern\n"
"     "

#: ../common/rhnException.py:134
#, fuzzy
msgid ""
"\n"
"     The --force rhnpush option is disabled on this server.\n"
"     Please contact your SUSE Manager administrator for more help.\n"
"     "
msgstr ""
"\n"
"     Flaggan --force till rhnpush Ã¤r avstÃ¤ngt pÃ¥ denna server.\n"
"     Kontakta din satellitadministratÃ¶r fÃ¶r mer hjÃ¤lp.\n"
"     "

#. 60-70: token errors
#: ../common/rhnException.py:140
msgid ""
"\n"
"     The activation token specified could not be found on the server.\n"
"     Please retry with a valid key.\n"
"     "
msgstr ""
"\n"
"     Den angivna aktiveringsnyckeln fanns inte pÃ¥ servern.  FÃ¶rsÃ¶k igen med\n"
"     en giltig nyckel.\n"
"     "

#: ../common/rhnException.py:144
msgid "Too many systems registered using this registration token"
msgstr "FÃ¶r mÃ¥nga system registrerade med denna registreringsnyckel"

#: ../common/rhnException.py:145
msgid "Token contains invalid, obsoleted or insufficient settings"
msgstr ""
"Nyckeln innehÃ¥ller ogiltiga, fÃ¶rÃ¥ldrade eller ofullstÃ¤ndiga instÃ¤llningar"

#: ../common/rhnException.py:146
msgid "Conflicting activation tokens"
msgstr "Konflikt mellan aktiveringsnycklar"

#. 70-80: channel subscription errors
#: ../common/rhnException.py:149
msgid ""
"\n"
"     No matching base channel found for your system.\n"
"     "
msgstr ""

#: ../common/rhnException.py:152
msgid ""
"\n"
"     You do not have subscription permission to the designated channel.\n"
"     Please refer to your organization's channel or organization\n"
"     administrators for further details.\n"
"     "
msgstr ""
"\n"
"     Du har inte rÃ¤ttigheter att prenumerera pÃ¥ den angivna kanalen.\n"
"     Kontakta din organisations kanal- eller organisationsadministratÃ¶rer\n"
"     fÃ¶r ytterligare detaljer.\n"
"     "

#: ../common/rhnException.py:157
msgid "You can not unsubscribe from base channel."
msgstr "Du kan inte avsluta prenumererationen pÃ¥ baskanalen."

#: ../common/rhnException.py:158
msgid "SUSE Manager or Proxy channel can not be subscribed."
msgstr ""

#. 80-90: server group errors
#: ../common/rhnException.py:161
msgid "There was an error while trying to join the system to its groups"
msgstr "Ett fel uppstod vid fÃ¶rsÃ¶k att lÃ¤gga till systemet till dess grupper"

#. 90-100: entitlement errors
#: ../common/rhnException.py:164
msgid "Unable to entitle system"
msgstr "Kan inte ge systemet driftsrÃ¤ttigheter"

#. 100-109: e-mail and uuid related faults
#: ../common/rhnException.py:167
msgid "Maximum e-mail length violation."
msgstr "Maximal lÃ¤ngd pÃ¥ e-post Ã¶verskriden."

#: ../common/rhnException.py:168
msgid "This system has been previously registered."
msgstr "Detta system har registrerats tidigare."

#: ../common/rhnException.py:169
msgid "Invalid username"
msgstr "Ogiltigt anvÃ¤ndarnamn"

#. 140-159 applet errors
#: ../common/rhnException.py:172
msgid "Unable to look up server"
msgstr "Kan inte slÃ¥ upp servern"

#. 160-179: OSAD errors
#: ../common/rhnException.py:175
msgid "Required argument is missing"
msgstr "NÃ¶dvÃ¤ndigt argument saknas"

#. 600-699: RHEL5+ EN errors
#: ../common/rhnException.py:178
msgid "No entitlement information tied to hardware"
msgstr "Ingen driftsrÃ¤ttighetsinformation bunden till hÃ¥rdvaran"

#: ../common/rhnException.py:179
msgid "Installation number is not entitling"
msgstr "Installationsnumret ger inte driftsrÃ¤ttigheter"

#. 700-799: Additional user input verification errors.
#: ../common/rhnException.py:182
msgid "Maximum username length violation"
msgstr "Maximal lÃ¤ngd pÃ¥ anvÃ¤ndarnamn Ã¶verskriden"

#: ../common/rhnException.py:183
msgid "Maximum password length violation"
msgstr "Maximal lÃ¤ngd pÃ¥ lÃ¶senord Ã¶verskriden"

#: ../common/rhnException.py:184
msgid "This user has read only API access. Action denied."
msgstr ""

#: ../common/rhnException.py:186
#, fuzzy
msgid "System Name cannot be less than 1 character"
msgstr "anvÃ¤ndarman skall vara mindre Ã¤n %d tecken"

#. 1000-1999: Proxy specific errors:
#. issued by a Proxy to the client
#: ../common/rhnException.py:190
#, fuzzy
msgid "SUSE Manager Proxy error."
msgstr "RHN-proxyfel."

#: ../common/rhnException.py:191
#, fuzzy
msgid "SUSE Manager Proxy unable to login."
msgstr "Kan inte logga in pÃ¥ RHN-proxy."

#. issued by a SUSE Manager Server/Satellite to the proxy
#: ../common/rhnException.py:193
msgid ""
"\n"
"     SUSE Manager Proxy system ID does not match a Spacewalk Proxy Server\n"
"     in the database.\n"
"     "
msgstr ""

#: ../common/rhnException.py:197
#, fuzzy
msgid "SUSE Manager Proxy session token is invalid."
msgstr "RHN-proxysessionsnyckeln Ã¤r ogiltig."

#: ../common/rhnException.py:198
#, fuzzy
msgid "SUSE Manager Proxy session token has expired."
msgstr "RHN-proxysessionsnyckeln har gÃ¥tt ut."

#. 2000-2999: Red Hat Satellite specific errors:
#: ../common/rhnException.py:202
#, fuzzy
msgid ""
"\n"
"      user creation is not allowed via mgr_register;\n"
"     please contact your sysadmin to have your account created.\n"
"     "
msgstr ""
"\n"
"     Att skapa anvÃ¤ndare pÃ¥ RHN-satelliten Ã¤r inte tillÃ¥tet via "
"rhn_register\n"
"     (eller up2date --register pÃ¥ Red Hat Enterprise Linux 3 och senare);\n"
"     kontakta din systemadministratÃ¶r fÃ¶r att fÃ¥ ditt konto skapat.\n"
"     "

#: ../common/rhnException.py:206
#, fuzzy
msgid ""
"\n"
"     This SUSE Manager server is not allowed to use Inter Server Sync on "
"this server\n"
"     "
msgstr ""
"\n"
"     Denna satellitserver fÃ¥r inte anvÃ¤nda Inter Satellite Sync pÃ¥ denna "
"satellit\n"
"     "

#: ../common/rhnException.py:209
#, fuzzy
msgid ""
"\n"
"     Inter Server Sync is disabled on this SUSE Manager Server.\n"
"     "
msgstr ""
"\n"
"     Inter Satellite Sync Ã¤r avslaged pÃ¥ dena satellit.\n"
"     "

#. 3000-3999: XML dumper errors:
#: ../common/rhnException.py:214
msgid "Invalid datatype passed"
msgstr "Ogiltig datatyp skickad"

#: ../common/rhnException.py:215
msgid "Unable to retrieve channel"
msgstr "Kan inte hÃ¤mta kanalen"

#: ../common/rhnException.py:216
msgid "Unable to retrieve package"
msgstr "Kan inte hÃ¤mta paketet"

#: ../common/rhnException.py:217
msgid "Unable to retrieve erratum"
msgstr "Kan inte hÃ¤mta erratan"

#: ../common/rhnException.py:218
msgid "File is missing"
msgstr "Filen saknas"

#: ../common/rhnException.py:219
msgid "Function retrieval error"
msgstr "Fel nÃ¤r funktion hÃ¤mtades"

#: ../common/rhnException.py:220
msgid "Function execution error"
msgstr "Fel nÃ¤r funktion kÃ¶rdes"

#: ../common/rhnException.py:221
msgid "Missing version string"
msgstr "VersionsstrÃ¤ng saknas"

#: ../common/rhnException.py:222
msgid "Invalid version string"
msgstr "Ogiltig versionsstrÃ¤ng"

#: ../common/rhnException.py:223
msgid "Mismatching versions"
msgstr "Versioner stÃ¤mmer inte"

#: ../common/rhnException.py:224
msgid "Invalid channel version"
msgstr "Ogiltig kanalversion"

#: ../common/rhnException.py:225
msgid "No comps file for channel"
msgstr "Ingen comps-fil fÃ¶r kanalen"

#: ../common/rhnException.py:226
msgid "Unable to retrieve comps file"
msgstr "Kan inte hÃ¤mta comps-filen"

#. 4000 - 4999: config management errors
#: ../common/rhnException.py:229
msgid "Configuration action missing"
msgstr "KonfigurationsÃ¥tgÃ¤rd saknas"

#: ../common/rhnException.py:230
msgid "File too large"
msgstr "Filen Ã¤r fÃ¶r stor"

#: ../common/rhnException.py:231
msgid "File contains binary data"
msgstr "Filen innehÃ¥ller binÃ¤rdata"

#: ../common/rhnException.py:232
msgid "Configuration channel is not empty"
msgstr "Konfigurationskanalen Ã¤r inte tom"

#: ../common/rhnException.py:233
msgid "Permission error"
msgstr "RÃ¤ttighetsfel"

#: ../common/rhnException.py:234
msgid "Content missing for configuration file"
msgstr "InnehÃ¥ll saknas fÃ¶r konfigurationsfilen"

#: ../common/rhnException.py:235
msgid "Template delimiters not specified"
msgstr "MallavgrÃ¤nsare inte angivna"

#: ../common/rhnException.py:236
msgid "Configuration channel does not exist"
msgstr "Konfigurationskanalen finns inte"

#: ../common/rhnException.py:237
msgid "Configuration channel already exists"
msgstr "Konfigurationskanalen finns redan"

#: ../common/rhnException.py:238
msgid "File missing from configuration channel"
msgstr "Fil saknas i konfigurationskanalen"

#: ../common/rhnException.py:239
msgid "Different revision of this file is uploaded"
msgstr "Olika versioner av denna fil Ã¤r skickade"

#: ../common/rhnException.py:240
msgid "File already uploaded to configuration channel"
msgstr "Filen Ã¤r redan skickad till konfigurationskanalen"

#: ../common/rhnException.py:241
msgid "File size exceeds remaining quota space"
msgstr "Filen Ã¶verskrider Ã¥terstÃ¥ende utrymmeskvota"

#: ../common/rhnException.py:242
msgid "Full path of file must be specified"
msgstr "FullstÃ¤ndig sÃ¶kvÃ¤g till filen mÃ¥ste anges"

#: ../common/rhnException.py:243
msgid "Invalid revision number"
msgstr "Ogiltigt revisionsnummer"

#: ../common/rhnException.py:244
msgid "Cannot compare files of different file type"
msgstr "Kan inte jÃ¤mfÃ¶ra filer med olika filtyp"

#. 5000 - 5999: client content uploading errors
#. 5000 - 5099: crash reporting errors
#: ../common/rhnException.py:248
msgid "Crash information is invalid or incomplete"
msgstr ""

#: ../common/rhnException.py:249
msgid "Crash file information is invalid or incomplete"
msgstr ""

#: ../common/rhnException.py:250
msgid "Error composing crash directory path"
msgstr ""

#: ../common/rhnException.py:251
msgid "Error composing crash file path"
msgstr ""

#: ../common/rhnException.py:252 ../common/rhnException.py:259
#, fuzzy
msgid "Invalid content encoding"
msgstr "Ogiltig elementkod"

#: ../common/rhnException.py:253
#, fuzzy
msgid "Invalid crash name"
msgstr "Ogiltigt paketnamn"

#: ../common/rhnException.py:254
msgid "Crash reporting is disabled for this organization"
msgstr ""

#. 5100 - 5199: scap results reporting error
#: ../common/rhnException.py:256
msgid "SCAP results file transfer is invalid or incomplete"
msgstr ""

#: ../common/rhnException.py:257
msgid "Error composing directory path for detailed SCAP results"
msgstr ""

#: ../common/rhnException.py:258
msgid "Error composing file path for detailed SCAP results"
msgstr ""

#: ../common/rhnException.py:306
#, fuzzy
msgid ""
"\n"
"     An error has occurred while processing your request. If this problem\n"
"     persists please enter a bug report at scc.suse.com.\n"
"     If you choose to submit the bug report, please be sure to include\n"
"     details of what you were trying to do when this error occurred and\n"
"     details on how to reproduce this problem.\n"
msgstr ""
"\n"
"     Ett fel uppstod nÃ¤r din begÃ¤ran behandlades.  Om detta problem "
"kvarstÃ¥r,\n"
"     fyll dÃ¥ i en felrapport pÃ¥ bugzilla.redhat.com.  Om du vÃ¤ljer att "
"skicka\n"
"     felrapporten, se dÃ¥ till att ta med detaljer om vad du fÃ¶rsÃ¶kte gÃ¶ra "
"nÃ¤r\n"
"     detta fel uppstod och detaljer om hur man Ã¥terupprepar problemet.\n"

#: ../common/rhnException.py:358
#, python-format
msgid ""
"Error Message:\n"
"    %s\n"
msgstr ""
"Felmeddelande:\n"
"    %s\n"

#: ../common/rhnException.py:360
#, python-format
msgid "Error Class Code: %s\n"
msgstr "Felklasskod: %s\n"

#: ../common/rhnException.py:363
#, python-format
msgid "Error Class Info: %s\n"
msgstr "Felklassinformation: %s\n"

#: ../common/rhnException.py:365
#, python-format
msgid "Explanation: %s"
msgstr "FÃ¶rklaring: %s"

#: ../common/rhnTB.py:205
#, python-format
msgid "ERROR: %s %s: %s"
msgstr ""

#: ../common/rhnTB.py:207
#, python-format
msgid "TRACEBACK: %s"
msgstr ""

#: ../satellite_tools/disk_dumper/iss.py:1294
#: ../satellite_tools/disk_dumper/iss.py:1298
#, python-format
msgid "format of %s should be at least YYYYMMDD.\n"
msgstr ""

#: ../satellite_tools/messages.py:26
#, python-format
msgid ""
"\n"
"ERROR: executing step %s. Error is:\n"
"%s\n"
msgstr ""

#: ../satellite_tools/messages.py:31
#, python-format
msgid ""
"\n"
"ERROR: there was a problem accessing the channel data from your temporary\n"
"       repository. Did you migrate all of the data from the channel ISOs\n"
"       do this directory? If so, please recheck the channels ISOs, ensure\n"
"       that you have them all, and then iteratively remount and repopulate\n"
"       the temporary repository (%s).\n"
msgstr ""

#: ../satellite_tools/messages.py:39
#, python-format
msgid ""
"\n"
"ERROR: there was a problem synchronizing the information.\n"
"       Error message: %s\n"
msgstr ""

#: ../satellite_tools/messages.py:44
#, python-format
msgid ""
"\n"
"ERROR: There was a problem communicating with the ISS Master.\n"
"       Depending on the specific error details, please review your "
"configuration,\n"
"       basic network connectivity, and/or name resolution, and try again.\n"
"       Error message: %s\n"
msgstr ""

#: ../satellite_tools/messages.py:51
#, python-format
msgid ""
"\n"
"ERROR: There was a problem communicating with the ISS Master.\n"
"       If the master satellite is older than v5.3, it does not have ISS "
"capability.\n"
"       Otherwise, depending on the specific error details, please review "
"your\n"
"       configuration, basic network connectivity, and/or name resolution, "
"and try again.\n"
"       Error message: %s\n"
msgstr ""

#: ../satellite_tools/messages.py:59
#, python-format
msgid ""
"\n"
"ERROR: a child-channel cannot be synced without its parent being synced as\n"
"       well. A parent needs to be either (a) previously synced or (b) "
"synced\n"
"       in tandem with the desired child-channel. Missing parents for this\n"
"       transaction:\n"
"       %s\n"
msgstr ""

#: ../satellite_tools/messages.py:67
#, python-format
msgid ""
"\n"
"ERROR: you are not entitled to sync a channel in this set of channels.\n"
"Please contact your SUSE Manager contact\n"
"%s"
msgstr ""

#: ../satellite_tools/messages.py:72
#, python-format
msgid "  ERROR: not enough free space (%s KB) on device."
msgstr ""

#: ../satellite_tools/messages.py:74
#, python-format
msgid "    %3d/%s Fetch successful: %s (%s bytes)"
msgstr ""

#: ../satellite_tools/messages.py:75
#, fuzzy, python-format
msgid "    Extinct package:  %s"
msgstr "Ett paket fÃ¶rvÃ¤ntades, inte: %s"

#: ../satellite_tools/messages.py:76
#, python-format
msgid "   Total size: %s"
msgstr ""

#: ../satellite_tools/messages.py:77
#, python-format
msgid "      Downloaded %s of %s. Estimated remaining time: %s"
msgstr ""

#: ../satellite_tools/messages.py:78
#, python-format
msgid "    Fetch unsuccessful: %s"
msgstr ""

#: ../satellite_tools/messages.py:79
#, python-format
msgid "   RPM fetch summary: %s"
msgstr ""

#: ../satellite_tools/messages.py:80
#, python-format
msgid "       success: %d"
msgstr ""

#: ../satellite_tools/messages.py:81
#, python-format
msgid "       failed:  %d"
msgstr ""

#: ../satellite_tools/messages.py:82
#, python-format
msgid "       extinct: %d"
msgstr ""

#: ../satellite_tools/messages.py:84
#, python-format
msgid "   Retrieving / parsing *relevant* package metadata: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:85
#, python-format
msgid "   Retrieving / parsing errata data: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:86
#, python-format
msgid "   Retrieving / parsing kickstart data: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:87
#, python-format
msgid "   Retrieving / parsing kickstart tree files: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:88
#, python-format
msgid "   Importing *relevant* package metadata: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:89
msgid "   * WARNING: this may be a slow process."
msgstr ""

#: ../satellite_tools/messages.py:90
#, fuzzy
msgid "Linking packages to channels"
msgstr "Baskanaler i konflikt"

#: ../satellite_tools/messages.py:91
#, python-format
msgid "   Importing *relevant* errata: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:92
msgid "   No new kickstartable tree to import"
msgstr ""

#: ../satellite_tools/messages.py:93
#, python-format
msgid "Importing kickstartable trees (%d)"
msgstr ""

#: ../satellite_tools/messages.py:94
#, python-format
msgid "Imported kickstartable trees (%d)"
msgstr ""

#: ../satellite_tools/reposync.py:111 ../satellite_tools/satsync.py:439
msgid "+++ sending log as an email +++"
msgstr ""

#: ../satellite_tools/reposync.py:114
#, python-format
msgid "%s sync. report from %s"
msgstr ""

#: ../satellite_tools/reposync.py:124 ../satellite_tools/satsync.py:449
msgid "+++ email requested, but there is nothing to send +++"
msgstr ""

#: ../satellite_tools/rhn_satellite_activate.py:198
#, python-format
msgid ""
"\"%s\" (specified in commandline)\n"
"could not be opened and read:\n"
"%s"
msgstr ""

#: ../satellite_tools/rhn_satellite_activate.py:205
#, python-format
msgid ""
"\"%s\" could not be opened\n"
"and/or written to:\n"
"%s"
msgstr ""

#: ../satellite_tools/satsync.py:258
#, python-format
msgid "No handler for step %s"
msgstr ""

#. Try one more time - this time it should be faster since
#. everything should be cached
#: ../satellite_tools/satsync.py:270
msgid "Environment changed, trying again..."
msgstr ""

#: ../satellite_tools/satsync.py:277
msgid "ERROR: Encountered IntegrityError: \n"
msgstr ""

#: ../satellite_tools/satsync.py:285
msgid "Repeated failures"
msgstr ""

#: ../satellite_tools/satsync.py:290
#, python-format
msgid ""
"    Import complete:\n"
"        Begin time: %s\n"
"        End time:   %s\n"
"        Elapsed:    %s\n"
"          "
msgstr ""

#: ../satellite_tools/satsync.py:311
msgid "hours"
msgstr ""

#: ../satellite_tools/satsync.py:311
msgid "minutes"
msgstr ""

#: ../satellite_tools/satsync.py:311
msgid "seconds"
msgstr ""

#: ../satellite_tools/satsync.py:357
msgid ""
"ERROR: The dump is missing package data, use --no-rpms to skip this step or "
"fix the content to include package data."
msgstr ""

#. the orgs() method doesn't exist; that's fine we just
#. won't sync the orgs
#: ../satellite_tools/satsync.py:404
msgid "The SUSE Manager master does not support syncing orgs data."
msgstr ""

#: ../satellite_tools/satsync.py:404
msgid "Skipping..."
msgstr ""

#: ../satellite_tools/satsync.py:442
#, python-format
msgid "SUSE Manager Inter Server sync. report from %s"
msgstr ""

#: ../satellite_tools/satsync.py:521
msgid " - file-system synchronization"
msgstr ""

#: ../satellite_tools/satsync.py:533 ../satellite_tools/satsync.py:541
msgid " - live synchronization"
msgstr ""

#: ../satellite_tools/satsync.py:534
#, python-brace-format
msgid ""
"ERROR: Live content synchronizing with RHN Classic Hosted is no longer "
"supported.\n"
"Please use the cdn-sync command instead unless you are attempting to sync "
"from another {PRODUCT_NAME} via Inter-Server-Sync (ISS), or from local "
"content on disk via Channel Dump ISOs."
msgstr ""

#: ../satellite_tools/satsync.py:542
#, python-format
msgid "   url: %s"
msgstr ""

#: ../satellite_tools/satsync.py:543
#, python-format
msgid "   debug/output level: %s"
msgstr ""

#: ../satellite_tools/satsync.py:553
msgid "ERROR: this server must be registered with SUSE Manager."
msgstr ""

#: ../satellite_tools/satsync.py:575
#, python-format
msgid "Retrieving / parsing %s data"
msgstr ""

#: ../satellite_tools/satsync.py:585 ../satellite_tools/satsync.py:600
msgid "*** SYSTEM INTERRUPT CALLED ***"
msgstr ""

#: ../satellite_tools/satsync.py:593
msgid "ERROR: fatal parser exception occurred "
msgstr ""

#: ../satellite_tools/satsync.py:594
#, python-format
msgid "(line: %s, col: %s msg: %s)"
msgstr ""

#: ../satellite_tools/satsync.py:598
#, python-format
msgid "ERROR: parser exception occurred: %s"
msgstr ""

#: ../satellite_tools/satsync.py:603
msgid "ERROR: exception (during parse) occurred: "
msgstr ""

#: ../satellite_tools/satsync.py:604
#, python-format
msgid ""
"   Encountered some errors with %s data (see logs (%s) for more information)"
msgstr ""

#: ../satellite_tools/satsync.py:606
#, python-format
msgid "   Encountered some errors with %s data:"
msgstr ""

#: ../satellite_tools/satsync.py:607
#, python-format
msgid "   ------- %s PARSE/IMPORT ERROR -------"
msgstr ""

#: ../satellite_tools/satsync.py:609
msgid "   ---------------------------------------"
msgstr ""

#: ../satellite_tools/satsync.py:612
#, python-format
msgid "%s data complete"
msgstr ""

#: ../satellite_tools/satsync.py:665
msgid "Retrieving / parsing channel data"
msgstr ""

#: ../satellite_tools/satsync.py:718
msgid "Channel data complete"
msgstr ""

#: ../satellite_tools/satsync.py:736
#, python-format
msgid "%10s import from %s"
msgstr ""

#: ../satellite_tools/satsync.py:739
#, python-format
msgid "%10s import from %s - %s"
msgstr ""

#: ../satellite_tools/satsync.py:743
#, python-format
msgid "%10s"
msgstr ""

#: ../satellite_tools/satsync.py:750
msgid "p"
msgstr ""

#: ../satellite_tools/satsync.py:752
msgid "."
msgstr ""

#: ../satellite_tools/satsync.py:758
msgid "   p = previously imported/synced channel"
msgstr ""

#: ../satellite_tools/satsync.py:759
msgid "   . = channel not yet imported/synced"
msgstr ""

#: ../satellite_tools/satsync.py:765
msgid "   e = channel no longer supported (end-of-service)"
msgstr ""

#: ../satellite_tools/satsync.py:767
msgid "   ? = channel label invalid --- typo?"
msgstr ""

#: ../satellite_tools/satsync.py:771
#, python-format
msgid "   %s:"
msgstr ""

#: ../satellite_tools/satsync.py:772
#, python-format
msgid "      %s %-40s %4s %s"
msgstr ""

#: ../satellite_tools/satsync.py:773
#, fuzzy
msgid "base-channels"
msgstr "Baskanaler i konflikt"

#: ../satellite_tools/satsync.py:786 ../satellite_tools/satsync.py:1603
msgid "NONE RELEVANT"
msgstr ""

#: ../satellite_tools/satsync.py:808
msgid "end-of-service"
msgstr ""

#: ../satellite_tools/satsync.py:809
msgid "e"
msgstr ""

#: ../satellite_tools/satsync.py:815
msgid "   typos:"
msgstr ""

#: ../satellite_tools/satsync.py:816
msgid "?"
msgstr ""

#: ../satellite_tools/satsync.py:831
#, python-format
msgid "XXX: imported channels: %s"
msgstr ""

#: ../satellite_tools/satsync.py:832
#, python-format
msgid "XXX:   cached channels: %s"
msgstr ""

#: ../satellite_tools/satsync.py:837
msgid "XXX: list channels called"
msgstr ""

#: ../satellite_tools/satsync.py:855
msgid "ERROR: these channels either do not exist or are not available:"
msgstr ""

#: ../satellite_tools/satsync.py:859
#, python-format
msgid "       (to see a list of channel labels: %s --list-channels)"
msgstr ""

#: ../satellite_tools/satsync.py:904
#, python-format
msgid "   Retrieving / parsing short package metadata: %s (%s)"
msgstr ""

#: ../satellite_tools/satsync.py:965
#, python-format
msgid "Diffing package metadata (what's missing locally?): %s"
msgstr ""

#: ../satellite_tools/satsync.py:971 ../satellite_tools/satsync.py:1254
msgid "Diffing:    "
msgstr ""

#: ../satellite_tools/satsync.py:988
msgid "ERROR: incremental dump skipped"
msgstr ""

#: ../satellite_tools/satsync.py:1079
msgid "Downloading rpm packages"
msgstr ""

#: ../satellite_tools/satsync.py:1084
#, python-format
msgid "   Fetching any missing RPMs: %s (%s)"
msgstr ""

#: ../satellite_tools/satsync.py:1085 ../satellite_tools/satsync.py:1153
msgid "NONE MISSING"
msgstr ""

#: ../satellite_tools/satsync.py:1094
msgid "Processing rpm packages complete"
msgstr ""

#: ../satellite_tools/satsync.py:1121
msgid "Downloading package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1146
msgid "Downloading srpm packages"
msgstr ""

#: ../satellite_tools/satsync.py:1152
#, python-format
msgid "   Fetching any missing SRPMs: %s (%s)"
msgstr ""

#: ../satellite_tools/satsync.py:1249
#, python-format
msgid "Diffing source package metadata (what's missing locally?): %s"
msgstr ""

#: ../satellite_tools/satsync.py:1260
msgid "Downloading source package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1338 ../satellite_tools/satsync.py:2027
#, fuzzy, python-format
msgid "Unable to save file %s: %s"
msgstr "Kan inte ge systemet driftsrÃ¤ttigheter"

#. for
#. Retried a number of times and it still failed; log the
#. file as being failed and move on
#: ../satellite_tools/satsync.py:1345
#, python-format
msgid "Failed to fetch file %s"
msgstr ""

#: ../satellite_tools/satsync.py:1350
msgid "Downloading kickstartable trees metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1365
msgid "Downloading kickstartable trees files"
msgstr ""

#: ../satellite_tools/satsync.py:1504
#, python-format
msgid "Grabbing all patches for channel %s"
msgstr ""

#: ../satellite_tools/satsync.py:1554
msgid "Downloading patch data"
msgstr ""

#: ../satellite_tools/satsync.py:1556
msgid "Forcing download of all patch data for requested channels."
msgstr ""

#: ../satellite_tools/satsync.py:1571
msgid "Downloading patch data complete"
msgstr ""

#: ../satellite_tools/satsync.py:1576 ../satellite_tools/satsync.py:1597
msgid "Downloading:"
msgstr ""

#: ../satellite_tools/satsync.py:1579
msgid " - complete"
msgstr ""

#: ../satellite_tools/satsync.py:1624
msgid "Importing source package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1627
msgid "Importing package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1635
msgid "Importing:  "
msgstr ""

#. not in the cache
#: ../satellite_tools/satsync.py:1703
msgid ""
"Package Not Found in Cache, Clear the Cache "
"to                                  Regenerate it."
msgstr ""

#: ../satellite_tools/satsync.py:1709
msgid "Importing channel patches"
msgstr ""

#: ../satellite_tools/satsync.py:1714
#, python-format
msgid "Importing %s patches for channel %s."
msgstr ""

#. Incomplete configuration
#: ../satellite_tools/satsync.py:2113
msgid "ERROR: server.mount_point not set in the configuration file"
msgstr ""

#: ../satellite_tools/satsync.py:2117
#, python-format
msgid "ERROR: server.mount_point %s do not exist"
msgstr ""

#: ../satellite_tools/satsync.py:2122
#, python-format
msgid "ERROR: path under server.mount_point (%s)  do not exist"
msgstr ""

#: ../satellite_tools/satsync.py:2199
#, python-format
msgid "Commandline: %s"
msgstr ""

#: ../satellite_tools/satsync.py:2202
#, python-format
msgid ""
"DEBUG ONLY: max. batch-size for XML/database-import processing (1..%s).\"man "
"satellite-sync\" for more information."
msgstr ""

#: ../satellite_tools/satsync.py:2205
msgid "alternative SSL CA Cert (fullpath to cert file)"
msgstr ""

#: ../satellite_tools/satsync.py:2207
msgid "process data for this channel only"
msgstr ""

#: ../satellite_tools/satsync.py:2209
msgid ""
"disk dump will be considered to be a full export; see \"man satellite-sync\" "
"for more information."
msgstr ""

#: ../satellite_tools/satsync.py:2212
msgid "existing custom channels will also be synced (unless -c is used)"
msgstr ""

#: ../satellite_tools/satsync.py:2214
#, python-format
msgid ""
"override debug level set in /etc/rhn/rhn.conf (which is currently set at %s)."
msgstr ""

#: ../satellite_tools/satsync.py:2216
#, python-format
msgid "requested version of XML dump (default: %s)"
msgstr ""

#: ../satellite_tools/satsync.py:2218
msgid "e-mail a report of what was synced/imported"
msgstr ""

#: ../satellite_tools/satsync.py:2220
msgid "forcibly process all (not a diff of) patch metadata"
msgstr ""

#: ../satellite_tools/satsync.py:2222
msgid "Do not use an http proxy under any circumstances."
msgstr ""

#: ../satellite_tools/satsync.py:2224
msgid "alternative http proxy (hostname:port)"
msgstr ""

#: ../satellite_tools/satsync.py:2226
msgid "alternative http proxy username"
msgstr ""

#: ../satellite_tools/satsync.py:2228
msgid "alternative http proxy password"
msgstr ""

#: ../satellite_tools/satsync.py:2230
msgid "parent SUSE Manager to import content from"
msgstr ""

#: ../satellite_tools/satsync.py:2232
msgid "list all available channels and exit"
msgstr ""

#: ../satellite_tools/satsync.py:2234
msgid "help on all error codes mgr-inter-sync returns"
msgstr ""

#: ../satellite_tools/satsync.py:2236
msgid "source mount point for import - disk update only"
msgstr ""

#: ../satellite_tools/satsync.py:2238
msgid "do not process patch data"
msgstr ""

#: ../satellite_tools/satsync.py:2240
msgid "do not process kickstart data (provisioning only)"
msgstr ""

#: ../satellite_tools/satsync.py:2242
msgid "do not process full package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:2244
msgid "do not download, or process any RPMs"
msgstr ""

#: ../satellite_tools/satsync.py:2246
msgid "turn off SSL (not recommended)"
msgstr ""

#: ../satellite_tools/satsync.py:2248
msgid "org to which the sync imports data. defaults to the admin account"
msgstr ""

#: ../satellite_tools/satsync.py:2250
#, fuzzy
msgid "print the configuration and exit"
msgstr "Konfigurationskanalen finns inte"

#: ../satellite_tools/satsync.py:2252
msgid "alternative server with which to connect (hostname)"
msgstr ""

#: ../satellite_tools/satsync.py:2254
msgid "synchronize to this step (man satellite-sync for more info)"
msgstr ""

#: ../satellite_tools/satsync.py:2256
msgid "write complete data to tempfile before streaming to remainder of app"
msgstr ""

#: ../satellite_tools/satsync.py:2258
msgid "DEBUG ONLY: alternative path to digital system id"
msgstr ""

#: ../satellite_tools/satsync.py:2260
msgid "alternative email address(es) for sync output (--email option)"
msgstr ""

#: ../satellite_tools/satsync.py:2262
msgid "do not remove rpms when importing from local dump"
msgstr ""

#: ../satellite_tools/satsync.py:2264
msgid ""
"the fully qualified domain name of the master Satellite. Valid with --mount-"
"point only. Required if you want to import org data and channel permissions."
msgstr ""

#: ../satellite_tools/satsync.py:2274
#, python-format
msgid "ERROR: these arguments make no sense in this context (try --help): %s"
msgstr ""

#. An SQL error is fatal... crash and burn
#: ../satellite_tools/satsync.py:2286
#, python-format
msgid "ERROR: Can't connect to the database: %s"
msgstr ""

#: ../satellite_tools/satsync.py:2287
msgid "ERROR: Check if your database is running."
msgstr ""

#: ../satellite_tools/satsync.py:2322
#, python-format
msgid "ERROR: --debug-level takes an in integer value within the range %s."
msgstr ""

#: ../satellite_tools/satsync.py:2324
msgid "  0  - little logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2325
msgid "  1  - minimal logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2326
msgid "  2  - normal level of logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2327
msgid "  3  - lots of logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2328
msgid "  4+ - excessive logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2341
msgid "ERROR: The --master option is only valid with the --mount-point option"
msgstr ""

#: ../satellite_tools/satsync.py:2351
#, fuzzy, python-format
msgid "ERROR: Unable to lookup Org Id %s"
msgstr "Kan inte slÃ¥ upp servern"

#: ../satellite_tools/satsync.py:2360
msgid ""
"WARNING: --list-channels option overrides any --step option. --step ignored."
msgstr ""

#: ../satellite_tools/satsync.py:2375
#, python-format
msgid ""
"ERROR: '%s' is not a valid step. See 'man mgr-inter-sync' for more detail."
msgstr ""

#: ../satellite_tools/satsync.py:2407
msgid ""
"ERROR: No channels currently imported; try mgr-inter-sync --list-channels; "
"then mgr-inter-sync -c chn0 -c chn1..."
msgstr ""

#. int(None) --> TypeError
#. int('a')  --> ValueError
#: ../satellite_tools/satsync.py:2457 ../satellite_tools/satsync.py:2461
msgid "ERROR: --batch-size must have a value within the range: 1..50"
msgstr ""

#: ../satellite_tools/satsync.py:2469
#, python-format
msgid "ERROR: no such directory %s"
msgstr ""

#: ../satellite_tools/satsync.py:2474
msgid "Error Codes: Returned codes means:"
msgstr ""

#: ../satellite_tools/satsync.py:2475
msgid " -1  - Could not lock file or KeyboardInterrupt or SystemExit"
msgstr ""

#: ../satellite_tools/satsync.py:2476
msgid "  0  - User interrupted or intentional exit"
msgstr ""

#: ../satellite_tools/satsync.py:2477
msgid "  1  - attempting to run more than one instance of mgr-inter-sync."
msgstr ""

#: ../satellite_tools/satsync.py:2478
msgid "  2  - Unable to find synchronization tools."
msgstr ""

#: ../satellite_tools/satsync.py:2479
msgid "  3  - a general socket exception occurred"
msgstr ""

#: ../satellite_tools/satsync.py:2480
msgid "  4  - an SSL error occurred. Recheck your SSL settings."
msgstr ""

#: ../satellite_tools/satsync.py:2481
msgid "  5  - ISS error"
msgstr ""

#: ../satellite_tools/satsync.py:2482
msgid "  6  - unhandled exception occurred"
msgstr ""

#: ../satellite_tools/satsync.py:2483
msgid "  7  - unknown sync error"
msgstr ""

#: ../satellite_tools/satsync.py:2484
msgid "  8  - ERROR: must be root to execute"
msgstr ""

#: ../satellite_tools/satsync.py:2485
msgid "  9  - rpclib fault during synchronization init"
msgstr ""

#: ../satellite_tools/satsync.py:2486
msgid "  10 - synchronization init error"
msgstr ""

#: ../satellite_tools/satsync.py:2487
msgid "  11 - Error parsing XML stream"
msgstr ""

#: ../satellite_tools/satsync.py:2488
#, fuzzy
msgid "  12 - Channel do not exist"
msgstr "Den angivna kanalen finns inte."

#: ../satellite_tools/satsync.py:2489
msgid "  13 - SQL error during importing package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:2490
msgid "  14 - SQL error during linking channel packages"
msgstr ""

#: ../satellite_tools/satsync.py:2491
msgid "  15 - SQL error during xml processing"
msgstr ""

#: ../satellite_tools/satsync.py:2492
msgid "  16 - server.mount_point not set in the configuration file"
msgstr ""

#: ../satellite_tools/satsync.py:2493
msgid ""
"  17 - SQL error during retrieving the channels already imported in the SUSE "
"Manager database"
msgstr ""

#: ../satellite_tools/satsync.py:2494
msgid "  18 - Wrong db connection string in rhn.conf"
msgstr ""

#: ../satellite_tools/satsync.py:2495
msgid "  19 - Bad arguments"
msgstr ""

#: ../satellite_tools/satsync.py:2496
msgid "  20 - Could not connect to db."
msgstr ""

#: ../satellite_tools/satsync.py:2497
msgid "  21 - Bad debug level"
msgstr ""

#: ../satellite_tools/satsync.py:2498
msgid "  22 - Not valid step"
msgstr ""

#: ../satellite_tools/satsync.py:2499
msgid "  24 - no such file"
msgstr ""

#: ../satellite_tools/satsync.py:2500
msgid "  25 - no such directory"
msgstr ""

#: ../satellite_tools/satsync.py:2501
msgid "  26 - mount_point does not exist"
msgstr ""

#: ../satellite_tools/satsync.py:2502
msgid "  27 - No such org"
msgstr ""

#: ../satellite_tools/satsync.py:2503
msgid "  28 - error: --master is only valid with --mount-point"
msgstr ""

#: ../satellite_tools/satsync.py:2510
#, python-format
msgid "ERROR: unknown dump version, try one of %s"
msgstr ""

#~ msgid "Your system was not found in the RHN database"
#~ msgstr "Ditt system fanns inte i RHN-databasen"

#~ msgid "ISS is disabled on this satellite."
#~ msgstr "ISS Ã¤r inaktiverat pÃ¥ denna satellit."

#, fuzzy
#~ msgid "Spacewalk Proxy service not enabled for server profile: \"%s\""
#~ msgstr "RHN-proxy-tjÃ¤nst inte aktiverat fÃ¶r serverprofilen: \"%s\""

#, fuzzy
#~ msgid "Red Hat Satellite Welcome Message"
#~ msgstr "Red Hat Network vÃ¤lkomstmeddelande"

#, fuzzy
#~ msgid "Red Hat Satellite Privacy Statement"
#~ msgstr "Red Hat Network integritetspolicy"
  07070100000090000081B40000000000000000000000016290A0C10000B682000000000000000000000000000000000000001B00000000spacewalk-backend/po/ta.po    # SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
#
# Translators:
# Felix <ifelix@redhat.com>, 2006, 2007.
# Jayaradha N <jaya@pune.redhat.com>, 2004.
# Jayaradha N <njaya@redhat.com>, 2004.
msgid ""
msgstr ""
"Project-Id-Version: Spacewalk\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-10-16 13:34+0200\n"
"PO-Revision-Date: 2011-03-04 16:08+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Tamil <tamil-users@lists.fedoraproject.org>\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"

#: ../server/apacheAuth.py:66
#, python-format
msgid "incomplete proxy authentication token: %s"
msgstr ""

#: ../server/apacheAuth.py:84
#, python-format
msgid "Sent proxy signature %s does not match ours %s."
msgstr ""

#: ../server/apacheAuth.py:119
msgid "declined proxy authentication"
msgstr ""

#: ../server/apacheRequest.py:59
#, python-format
msgid "Invalid request received (%s)."
msgstr ""

#: ../server/apacheRequest.py:120
#, python-format
msgid ""
"IMPORTANT MESSAGE FOLLOWS:\n"
"%s"
msgstr ""

#: ../server/apacheRequest.py:149
#, python-format
msgid ""
"While running '%s': caught\n"
"%s : %s\n"
msgstr ""

#: ../server/apacheRequest.py:606
#, python-format
msgid "Invalid URI %s"
msgstr ""

#: ../server/configFilesHandler.py:129 ../server/handlers/app/packages.py:192
#: ../server/handlers/xmlrpc/registration.py:215
#: ../server/handlers/xmlrpc/registration.py:1168
#: ../server/handlers/xmlrpc/registration.py:1307
#, python-format
msgid ""
"\n"
"                   %s Account has been deactivated on this server.\n"
"                   Please contact your Org administrator for more help."
msgstr ""

#: ../server/handlers/applet/applet.py:78
#, python-brace-format
msgid "Your system was not found in the {PRODUCT_NAME} database"
msgstr ""

#: ../server/handlers/sat/auth.py:45
msgid "ISS is disabled on this server."
msgstr ""

#: ../server/handlers/sat/auth.py:50
#, python-format
msgid "Server \"%s\" is not enabled for ISS."
msgstr ""

#: ../server/handlers/xmlrpc/errata.py:64
#, python-format
msgid "Expected a package name, not: %s"
msgstr ""

#: ../server/handlers/xmlrpc/errata.py:115
#, python-format
msgid "Expected a package, not: %s"
msgstr ""

#: ../server/handlers/xmlrpc/proxy.py:65
#, python-format
msgid "SUSE Manager Proxy service not enabled for server profile: \"%s\""
msgstr ""

#: ../server/handlers/xmlrpc/proxy.py:85
msgid "Invalid session key"
msgstr ""

#: ../server/handlers/xmlrpc/proxy.py:93
msgid "This server ID no longer exists"
msgstr ""

#: ../server/handlers/xmlrpc/queue.py:433
#, python-format
msgid "Invalid action value type %s (%s)"
msgstr ""

#: ../server/handlers/xmlrpc/queue.py:464
#, python-format
msgid "Action %s does not belong to server %s"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:194
msgid "Required data missing"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:198
msgid "Required members missing"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:207
msgid "Attempt to register a system to an invalid username"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:839
msgid "Invalid system release version requested"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1063
msgid ""
"Unable to find a valid network interface, both ipaddr and ip6addr not found."
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1115
#, python-brace-format
msgid "{PRODUCT_NAME} Welcome Message"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1125
msgid "Privacy Statement"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1146
msgid "Expected a dictionary as a product argument"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1374
#, python-format
msgid "Invalid value '%s' for %s (%s)"
msgstr ""

#: ../server/handlers/xmlrpc/scap.py:104
msgid "Invalid system_id/action_id pair."
msgstr ""

#: ../server/handlers/xmlrpc/up2date.py:233
#, python-format
msgid "Invalid value %s (%s)"
msgstr ""

#: ../server/importlib/userAuth.py:98
msgid "You are not authorized to manage packages in the null org"
msgstr ""

#: ../server/importlib/userAuth.py:103
#, python-format
msgid "You are not allowed to manage packages in the %s org"
msgstr ""

#: ../server/importlib/userAuth.py:121
msgid "You are not allowed to perform administrative tasks"
msgstr ""

#: ../server/importlib/userAuth.py:144
#, python-format
msgid ""
"You are not allowed to manage channel %s, or that channel does not exist"
msgstr ""

#: ../server/importlib/userAuth.py:204
#, python-format
msgid ""
"\n"
"               %s Account has been deactivated on this server.\n"
"               Please contact your Org administrator for more help."
msgstr ""

#: ../server/rhnChannel.py:1992
#, python-format
msgid ""
"Your account does not have access to any channels matching "
"(release='%(release)s', arch='%(arch)s')%(www_activation)s"
msgstr ""

#: ../server/rhnChannel.py:2002
msgid ""
"\n"
"If you have a registration number, please register with it first at http://"
"www.redhat.com/apps/activate/ and then try again.\n"
"\n"
msgstr ""

#: ../server/rhnChannel.py:2012
#, python-format
msgid "Insufficient subscription permissions for release (%s, %s"
msgstr ""

#. Various messages that can be reused
#.
#. bretm 02/07/2007 -- when we have better old-client documentation, probably
#. will be safe to get rid of all this crap
#: ../server/rhnChannel.py:2276 ../server/rhnChannel.py:2287
#: ../server/rhnChannel.py:2302
msgid "System Registered but Inactive"
msgstr ""

#: ../server/rhnChannel.py:2277
#, python-format
msgid ""
"\n"
"Invalid Architecture and OS release combination (%s, %s).\n"
"Your system has been registered, but will not receive updates\n"
"because it is not subscribed to a channel. If you have not yet\n"
"activated your product for service, please visit our website at:\n"
"\n"
"     http://www.redhat.com/apps/activate/\n"
"\n"
"...to activate your product."
msgstr ""

#: ../server/rhnChannel.py:2288
#, python-format
msgid ""
"\n"
"Invalid Architecture and OS release combination (%s, %s).\n"
"Your system has been registered, but will not receive updates\n"
"because it could not be subscribed to a base channel.\n"
"Please contact your organization administrator for assistance.\n"
msgstr ""

#: ../server/rhnChannel.py:2295
#, python-format
msgid ""
"\n"
"  This system has been successfully registered, but is not yet entitled\n"
"  to service.  To entitle this system to service, login to the web site at:\n"
"\n"
"  %(entitlement_url)s\n"
msgstr ""

#: ../server/rhnChannel.py:2303
#, python-format
msgid ""
"\n"
"  This system has been successfully registered, but no service entitlements\n"
"  were available.  To entitle this system to service, login to the web site "
"at:\n"
"\n"
"  %(entitlement_url)s\n"
msgstr ""

#: ../server/rhnHandler.py:62
msgid "Please run rhn_register as root on this client"
msgstr ""

#: ../server/rhnHandler.py:75
#, python-format
msgid "Service not enabled for system profile: \"%s\""
msgstr ""

#: ../server/rhnPackage.py:49 ../server/rhnPackage.py:87
#: ../server/rhnPackage.py:107 ../server/rhnPackage.py:158
#, python-format
msgid "Invalid RPM package %s requested"
msgstr ""

#: ../server/rhnPackage.py:112
msgid "Package not found"
msgstr ""

#: ../server/rhnServer/server_class.py:97
#, python-format
msgid "Architecture `%s' is not supported"
msgstr ""

#: ../server/rhnServer/server_token.py:78
#, python-format
msgid "Token `%s' has more than one base channel assigned"
msgstr ""

#: ../server/rhnServer/server_token.py:80
msgid "Conflicting base channels"
msgstr ""

#: ../server/rhnServer/server_token.py:190
#, python-format
msgid "Failed to add server to group %s"
msgstr ""

#: ../server/rhnServer/server_token.py:503
#, python-format
msgid "Maximum usage count of %s reached"
msgstr ""

#: ../server/rhnServer/server_token.py:744
msgid ""
"Stacking of re-registration tokens with different base entitlements is not "
"supported"
msgstr ""

#: ../server/rhnServer/server_token.py:811
#, python-format
msgid "Could not find token '%s'"
msgstr ""

#. Cannot use activation keys from different orgs
#: ../server/rhnServer/server_token.py:843
msgid "Tokens from mismatching orgs"
msgstr ""

#. Two tokens with different kickstart sessions
#: ../server/rhnServer/server_token.py:853
msgid "Kickstart session mismatch"
msgstr ""

#: ../server/rhnServer/server_token.py:877
msgid "Stacking of re-registration tokens is not supported"
msgstr ""

#: ../server/rhnUser.py:289 ../server/rhnUser.py:292
msgid "Invalid username/password combination"
msgstr ""

#. nope, not reserved either
#: ../server/rhnUser.py:467
#, python-format
msgid "Username `%s' has not been reserved"
msgstr ""

#. New accounts have to specify an e-mail address
#: ../server/rhnUser.py:473
msgid "E-mail address not specified"
msgstr ""

#: ../server/rhnUser.py:509
#, python-format
msgid "username should be at least %d characters"
msgstr ""

#: ../server/rhnUser.py:512
#, python-format
msgid "username should be less than %d characters"
msgstr ""

#: ../server/rhnUser.py:523
#, python-format
msgid "username = `%s', invalid character `%s'"
msgstr ""

#: ../server/rhnUser.py:542
#, python-format
msgid "Please limit your e-mail address to %s chars"
msgstr ""

#: ../server/rhnUser.py:623
#, python-format
msgid "password must be at least %d characters"
msgstr ""

#: ../server/rhnUser.py:626
#, python-format
msgid "Password must be shorter than %d characters"
msgstr ""

#: ../server/rhnUser.py:644
#, python-format
msgid "password contains character `%s'"
msgstr ""

#: ../server/rhnUser.py:651
#, python-format
msgid "username should be at least %d characters long"
msgstr ""

#: ../server/rhnUser.py:662
#, python-format
msgid "Cannot register usernames ending with %s"
msgstr ""

#. 0-999: Red Hat client/client-like interaction errors:
#: ../common/rhnException.py:53
msgid "This does not appear to be a valid username."
msgstr ""

#: ../common/rhnException.py:54
msgid "Invalid username and password combination."
msgstr ""

#: ../common/rhnException.py:55
msgid "This login is already taken, or the password is incorrect."
msgstr ""

#: ../common/rhnException.py:56
msgid "Permission denied."
msgstr ""

#: ../common/rhnException.py:57
msgid "Object not found."
msgstr ""

#: ../common/rhnException.py:58
msgid "Invalid System Digital ID."
msgstr ""

#: ../common/rhnException.py:59
msgid "Invalid System Credentials."
msgstr ""

#: ../common/rhnException.py:60
msgid "Could not retrieve user data from database."
msgstr ""

#: ../common/rhnException.py:61
msgid "Valid username required."
msgstr ""

#: ../common/rhnException.py:62
msgid "Valid password required."
msgstr ""

#: ../common/rhnException.py:63
msgid "Minimum username length violation."
msgstr ""

#: ../common/rhnException.py:64
msgid "Minimum password length violation."
msgstr ""

#: ../common/rhnException.py:65
msgid "The username contains invalid characters."
msgstr ""

#: ../common/rhnException.py:66
msgid "File not found."
msgstr ""

#: ../common/rhnException.py:67
msgid "Architecture and OS version combination is not supported."
msgstr ""

#: ../common/rhnException.py:68
msgid "Could not retrieve system data from database."
msgstr ""

#: ../common/rhnException.py:69
msgid "Invalid arguments passed to function."
msgstr ""

#: ../common/rhnException.py:70
msgid "Unable to retrieve requested entry."
msgstr ""

#: ../common/rhnException.py:71
msgid "Could not update database entry."
msgstr ""

#: ../common/rhnException.py:72
msgid "Unsupported server architecture."
msgstr ""

#: ../common/rhnException.py:73
#, python-format
msgid ""
"\n"
"     The anonymous server functionality is no longer available.\n"
"\n"
"     Please re-register this system by running mgr_register as root.\n"
"     Please visit https://%(hostname)s/rhn/systems/SystemEntitlements.do\n"
"     or login at https://%(hostname)s, and from the \"Overview\" tab,\n"
"     select \"Subscription Management\" to enable the service for this "
"system.\n"
"     "
msgstr ""

#: ../common/rhnException.py:81
msgid "Record not available in the database."
msgstr ""

#: ../common/rhnException.py:82
msgid "Invalid value for entry."
msgstr ""

#: ../common/rhnException.py:83
#, python-format
msgid ""
"\n"
"     This system does not have a valid entitlement for SUSE Manager.\n"
"     Please visit https://%(hostname)s/rhn/systems/SystemEntitlements.do\n"
"     or login at https://%(hostname)s, and from the \"Overview\" tab,\n"
"     select \"Subscription Management\" to enable the service for this "
"system.\n"
"     "
msgstr ""

#: ../common/rhnException.py:89
msgid "Channel error"
msgstr ""

#: ../common/rhnException.py:90
msgid "Client session token is invalid."
msgstr ""

#: ../common/rhnException.py:91
msgid "Client session token has expired."
msgstr ""

#: ../common/rhnException.py:92
msgid "You are not authorized to retrieve the requested object."
msgstr ""

#: ../common/rhnException.py:93
msgid "Invalid action"
msgstr ""

#: ../common/rhnException.py:94
msgid "You are not allowed to perform administrative tasks on this system."
msgstr ""

#: ../common/rhnException.py:96
msgid "The system is already subscribed to the specified channel."
msgstr ""

#: ../common/rhnException.py:97
msgid "The system is not currently subscribed to the specified channel."
msgstr ""

#: ../common/rhnException.py:98
msgid "The specified channel does not exist."
msgstr ""

#: ../common/rhnException.py:99
msgid "Invalid channel version."
msgstr ""

#: ../common/rhnException.py:100
msgid ""
"\n"
"     User group membership limits exceeded.\n"
"\n"
"     The current settings for your account do not allow you to add another\n"
"     user account. Please check with the organization administrator for "
"your\n"
"     account if the maximum number of users allowed to subscribe to server "
"needs\n"
"     to be changed.\n"
"     "
msgstr ""

#: ../common/rhnException.py:108
msgid ""
"\n"
"     System group membership limits exceeded.\n"
"\n"
"     The current settings for your account do not allow you to add another\n"
"     system profile. Please check with the organization administrator for "
"your\n"
"     account for modifying the maximum number of system profiles that can "
"be\n"
"     subscribed to your account.\n"
"     "
msgstr ""

#: ../common/rhnException.py:116
msgid ""
"\n"
"     Invalid architecture.\n"
"\n"
"     The architecture of the package is not supported by\n"
"     "
msgstr ""

#: ../common/rhnException.py:121
msgid "Invalid RPM header"
msgstr ""

#: ../common/rhnException.py:122
msgid ""
"\n"
"    This system is already registered as a Salt Minion. If you want to "
"register it as a traditional client\n"
"    please delete it first via the web UI or API and then register it using "
"the traditional tools.\n"
"    "
msgstr ""

#. For the uploading tools
#: ../common/rhnException.py:127
msgid "Invalid information uploaded to the server"
msgstr ""

#: ../common/rhnException.py:128
msgid "Error uploading network interfaces configuration."
msgstr ""

#: ../common/rhnException.py:129
msgid ""
"\n"
"     Package Upload Failed due to uniqueness constraint violation.\n"
"     Make sure the package does not have any duplicate dependencies or\n"
"     does not already exists on the server\n"
"     "
msgstr ""

#: ../common/rhnException.py:134
msgid ""
"\n"
"     The --force rhnpush option is disabled on this server.\n"
"     Please contact your SUSE Manager administrator for more help.\n"
"     "
msgstr ""

#. 60-70: token errors
#: ../common/rhnException.py:140
msgid ""
"\n"
"     The activation token specified could not be found on the server.\n"
"     Please retry with a valid key.\n"
"     "
msgstr ""

#: ../common/rhnException.py:144
msgid "Too many systems registered using this registration token"
msgstr ""

#: ../common/rhnException.py:145
msgid "Token contains invalid, obsoleted or insufficient settings"
msgstr ""

#: ../common/rhnException.py:146
msgid "Conflicting activation tokens"
msgstr ""

#. 70-80: channel subscription errors
#: ../common/rhnException.py:149
msgid ""
"\n"
"     No matching base channel found for your system.\n"
"     "
msgstr ""

#: ../common/rhnException.py:152
msgid ""
"\n"
"     You do not have subscription permission to the designated channel.\n"
"     Please refer to your organization's channel or organization\n"
"     administrators for further details.\n"
"     "
msgstr ""

#: ../common/rhnException.py:157
msgid "You can not unsubscribe from base channel."
msgstr ""

#: ../common/rhnException.py:158
msgid "SUSE Manager or Proxy channel can not be subscribed."
msgstr ""

#. 80-90: server group errors
#: ../common/rhnException.py:161
msgid "There was an error while trying to join the system to its groups"
msgstr ""

#. 90-100: entitlement errors
#: ../common/rhnException.py:164
msgid "Unable to entitle system"
msgstr ""

#. 100-109: e-mail and uuid related faults
#: ../common/rhnException.py:167
msgid "Maximum e-mail length violation."
msgstr ""

#: ../common/rhnException.py:168
msgid "This system has been previously registered."
msgstr ""

#: ../common/rhnException.py:169
msgid "Invalid username"
msgstr ""

#. 140-159 applet errors
#: ../common/rhnException.py:172
msgid "Unable to look up server"
msgstr ""

#. 160-179: OSAD errors
#: ../common/rhnException.py:175
msgid "Required argument is missing"
msgstr ""

#. 600-699: RHEL5+ EN errors
#: ../common/rhnException.py:178
msgid "No entitlement information tied to hardware"
msgstr ""

#: ../common/rhnException.py:179
msgid "Installation number is not entitling"
msgstr ""

#. 700-799: Additional user input verification errors.
#: ../common/rhnException.py:182
msgid "Maximum username length violation"
msgstr ""

#: ../common/rhnException.py:183
msgid "Maximum password length violation"
msgstr ""

#: ../common/rhnException.py:184
msgid "This user has read only API access. Action denied."
msgstr ""

#: ../common/rhnException.py:186
msgid "System Name cannot be less than 1 character"
msgstr ""

#. 1000-1999: Proxy specific errors:
#. issued by a Proxy to the client
#: ../common/rhnException.py:190
msgid "SUSE Manager Proxy error."
msgstr ""

#: ../common/rhnException.py:191
msgid "SUSE Manager Proxy unable to login."
msgstr ""

#. issued by a SUSE Manager Server/Satellite to the proxy
#: ../common/rhnException.py:193
msgid ""
"\n"
"     SUSE Manager Proxy system ID does not match a Spacewalk Proxy Server\n"
"     in the database.\n"
"     "
msgstr ""

#: ../common/rhnException.py:197
msgid "SUSE Manager Proxy session token is invalid."
msgstr ""

#: ../common/rhnException.py:198
msgid "SUSE Manager Proxy session token has expired."
msgstr ""

#. 2000-2999: Red Hat Satellite specific errors:
#: ../common/rhnException.py:202
msgid ""
"\n"
"      user creation is not allowed via mgr_register;\n"
"     please contact your sysadmin to have your account created.\n"
"     "
msgstr ""

#: ../common/rhnException.py:206
msgid ""
"\n"
"     This SUSE Manager server is not allowed to use Inter Server Sync on "
"this server\n"
"     "
msgstr ""

#: ../common/rhnException.py:209
msgid ""
"\n"
"     Inter Server Sync is disabled on this SUSE Manager Server.\n"
"     "
msgstr ""

#. 3000-3999: XML dumper errors:
#: ../common/rhnException.py:214
msgid "Invalid datatype passed"
msgstr ""

#: ../common/rhnException.py:215
msgid "Unable to retrieve channel"
msgstr ""

#: ../common/rhnException.py:216
msgid "Unable to retrieve package"
msgstr ""

#: ../common/rhnException.py:217
msgid "Unable to retrieve erratum"
msgstr ""

#: ../common/rhnException.py:218
msgid "File is missing"
msgstr ""

#: ../common/rhnException.py:219
msgid "Function retrieval error"
msgstr ""

#: ../common/rhnException.py:220
msgid "Function execution error"
msgstr ""

#: ../common/rhnException.py:221
msgid "Missing version string"
msgstr ""

#: ../common/rhnException.py:222
msgid "Invalid version string"
msgstr ""

#: ../common/rhnException.py:223
msgid "Mismatching versions"
msgstr ""

#: ../common/rhnException.py:224
msgid "Invalid channel version"
msgstr ""

#: ../common/rhnException.py:225
msgid "No comps file for channel"
msgstr ""

#: ../common/rhnException.py:226
msgid "Unable to retrieve comps file"
msgstr ""

#. 4000 - 4999: config management errors
#: ../common/rhnException.py:229
msgid "Configuration action missing"
msgstr ""

#: ../common/rhnException.py:230
msgid "File too large"
msgstr ""

#: ../common/rhnException.py:231
msgid "File contains binary data"
msgstr ""

#: ../common/rhnException.py:232
msgid "Configuration channel is not empty"
msgstr ""

#: ../common/rhnException.py:233
msgid "Permission error"
msgstr ""

#: ../common/rhnException.py:234
msgid "Content missing for configuration file"
msgstr ""

#: ../common/rhnException.py:235
msgid "Template delimiters not specified"
msgstr ""

#: ../common/rhnException.py:236
msgid "Configuration channel does not exist"
msgstr ""

#: ../common/rhnException.py:237
msgid "Configuration channel already exists"
msgstr ""

#: ../common/rhnException.py:238
msgid "File missing from configuration channel"
msgstr ""

#: ../common/rhnException.py:239
msgid "Different revision of this file is uploaded"
msgstr ""

#: ../common/rhnException.py:240
msgid "File already uploaded to configuration channel"
msgstr ""

#: ../common/rhnException.py:241
msgid "File size exceeds remaining quota space"
msgstr ""

#: ../common/rhnException.py:242
msgid "Full path of file must be specified"
msgstr ""

#: ../common/rhnException.py:243
msgid "Invalid revision number"
msgstr ""

#: ../common/rhnException.py:244
msgid "Cannot compare files of different file type"
msgstr ""

#. 5000 - 5999: client content uploading errors
#. 5000 - 5099: crash reporting errors
#: ../common/rhnException.py:248
msgid "Crash information is invalid or incomplete"
msgstr ""

#: ../common/rhnException.py:249
msgid "Crash file information is invalid or incomplete"
msgstr ""

#: ../common/rhnException.py:250
msgid "Error composing crash directory path"
msgstr ""

#: ../common/rhnException.py:251
msgid "Error composing crash file path"
msgstr ""

#: ../common/rhnException.py:252 ../common/rhnException.py:259
msgid "Invalid content encoding"
msgstr ""

#: ../common/rhnException.py:253
msgid "Invalid crash name"
msgstr ""

#: ../common/rhnException.py:254
msgid "Crash reporting is disabled for this organization"
msgstr ""

#. 5100 - 5199: scap results reporting error
#: ../common/rhnException.py:256
msgid "SCAP results file transfer is invalid or incomplete"
msgstr ""

#: ../common/rhnException.py:257
msgid "Error composing directory path for detailed SCAP results"
msgstr ""

#: ../common/rhnException.py:258
msgid "Error composing file path for detailed SCAP results"
msgstr ""

#: ../common/rhnException.py:306
msgid ""
"\n"
"     An error has occurred while processing your request. If this problem\n"
"     persists please enter a bug report at scc.suse.com.\n"
"     If you choose to submit the bug report, please be sure to include\n"
"     details of what you were trying to do when this error occurred and\n"
"     details on how to reproduce this problem.\n"
msgstr ""

#: ../common/rhnException.py:358
#, python-format
msgid ""
"Error Message:\n"
"    %s\n"
msgstr ""

#: ../common/rhnException.py:360
#, python-format
msgid "Error Class Code: %s\n"
msgstr ""

#: ../common/rhnException.py:363
#, python-format
msgid "Error Class Info: %s\n"
msgstr ""

#: ../common/rhnException.py:365
#, python-format
msgid "Explanation: %s"
msgstr ""

#: ../common/rhnTB.py:205
#, python-format
msgid "ERROR: %s %s: %s"
msgstr ""

#: ../common/rhnTB.py:207
#, python-format
msgid "TRACEBACK: %s"
msgstr ""

#: ../satellite_tools/disk_dumper/iss.py:1294
#: ../satellite_tools/disk_dumper/iss.py:1298
#, python-format
msgid "format of %s should be at least YYYYMMDD.\n"
msgstr ""

#: ../satellite_tools/messages.py:26
#, python-format
msgid ""
"\n"
"ERROR: executing step %s. Error is:\n"
"%s\n"
msgstr ""

#: ../satellite_tools/messages.py:31
#, python-format
msgid ""
"\n"
"ERROR: there was a problem accessing the channel data from your temporary\n"
"       repository. Did you migrate all of the data from the channel ISOs\n"
"       do this directory? If so, please recheck the channels ISOs, ensure\n"
"       that you have them all, and then iteratively remount and repopulate\n"
"       the temporary repository (%s).\n"
msgstr ""

#: ../satellite_tools/messages.py:39
#, python-format
msgid ""
"\n"
"ERROR: there was a problem synchronizing the information.\n"
"       Error message: %s\n"
msgstr ""

#: ../satellite_tools/messages.py:44
#, python-format
msgid ""
"\n"
"ERROR: There was a problem communicating with the ISS Master.\n"
"       Depending on the specific error details, please review your "
"configuration,\n"
"       basic network connectivity, and/or name resolution, and try again.\n"
"       Error message: %s\n"
msgstr ""

#: ../satellite_tools/messages.py:51
#, python-format
msgid ""
"\n"
"ERROR: There was a problem communicating with the ISS Master.\n"
"       If the master satellite is older than v5.3, it does not have ISS "
"capability.\n"
"       Otherwise, depending on the specific error details, please review "
"your\n"
"       configuration, basic network connectivity, and/or name resolution, "
"and try again.\n"
"       Error message: %s\n"
msgstr ""

#: ../satellite_tools/messages.py:59
#, python-format
msgid ""
"\n"
"ERROR: a child-channel cannot be synced without its parent being synced as\n"
"       well. A parent needs to be either (a) previously synced or (b) "
"synced\n"
"       in tandem with the desired child-channel. Missing parents for this\n"
"       transaction:\n"
"       %s\n"
msgstr ""

#: ../satellite_tools/messages.py:67
#, python-format
msgid ""
"\n"
"ERROR: you are not entitled to sync a channel in this set of channels.\n"
"Please contact your SUSE Manager contact\n"
"%s"
msgstr ""

#: ../satellite_tools/messages.py:72
#, python-format
msgid "  ERROR: not enough free space (%s KB) on device."
msgstr ""

#: ../satellite_tools/messages.py:74
#, python-format
msgid "    %3d/%s Fetch successful: %s (%s bytes)"
msgstr ""

#: ../satellite_tools/messages.py:75
#, python-format
msgid "    Extinct package:  %s"
msgstr ""

#: ../satellite_tools/messages.py:76
#, python-format
msgid "   Total size: %s"
msgstr ""

#: ../satellite_tools/messages.py:77
#, python-format
msgid "      Downloaded %s of %s. Estimated remaining time: %s"
msgstr ""

#: ../satellite_tools/messages.py:78
#, python-format
msgid "    Fetch unsuccessful: %s"
msgstr ""

#: ../satellite_tools/messages.py:79
#, python-format
msgid "   RPM fetch summary: %s"
msgstr ""

#: ../satellite_tools/messages.py:80
#, python-format
msgid "       success: %d"
msgstr ""

#: ../satellite_tools/messages.py:81
#, python-format
msgid "       failed:  %d"
msgstr ""

#: ../satellite_tools/messages.py:82
#, python-format
msgid "       extinct: %d"
msgstr ""

#: ../satellite_tools/messages.py:84
#, python-format
msgid "   Retrieving / parsing *relevant* package metadata: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:85
#, python-format
msgid "   Retrieving / parsing errata data: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:86
#, python-format
msgid "   Retrieving / parsing kickstart data: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:87
#, python-format
msgid "   Retrieving / parsing kickstart tree files: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:88
#, python-format
msgid "   Importing *relevant* package metadata: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:89
msgid "   * WARNING: this may be a slow process."
msgstr ""

#: ../satellite_tools/messages.py:90
msgid "Linking packages to channels"
msgstr ""

#: ../satellite_tools/messages.py:91
#, python-format
msgid "   Importing *relevant* errata: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:92
msgid "   No new kickstartable tree to import"
msgstr ""

#: ../satellite_tools/messages.py:93
#, python-format
msgid "Importing kickstartable trees (%d)"
msgstr ""

#: ../satellite_tools/messages.py:94
#, python-format
msgid "Imported kickstartable trees (%d)"
msgstr ""

#: ../satellite_tools/reposync.py:111 ../satellite_tools/satsync.py:439
msgid "+++ sending log as an email +++"
msgstr ""

#: ../satellite_tools/reposync.py:114
#, python-format
msgid "%s sync. report from %s"
msgstr ""

#: ../satellite_tools/reposync.py:124 ../satellite_tools/satsync.py:449
msgid "+++ email requested, but there is nothing to send +++"
msgstr ""

#: ../satellite_tools/rhn_satellite_activate.py:198
#, python-format
msgid ""
"\"%s\" (specified in commandline)\n"
"could not be opened and read:\n"
"%s"
msgstr ""

#: ../satellite_tools/rhn_satellite_activate.py:205
#, python-format
msgid ""
"\"%s\" could not be opened\n"
"and/or written to:\n"
"%s"
msgstr ""

#: ../satellite_tools/satsync.py:258
#, python-format
msgid "No handler for step %s"
msgstr ""

#. Try one more time - this time it should be faster since
#. everything should be cached
#: ../satellite_tools/satsync.py:270
msgid "Environment changed, trying again..."
msgstr ""

#: ../satellite_tools/satsync.py:277
msgid "ERROR: Encountered IntegrityError: \n"
msgstr ""

#: ../satellite_tools/satsync.py:285
msgid "Repeated failures"
msgstr ""

#: ../satellite_tools/satsync.py:290
#, python-format
msgid ""
"    Import complete:\n"
"        Begin time: %s\n"
"        End time:   %s\n"
"        Elapsed:    %s\n"
"          "
msgstr ""

#: ../satellite_tools/satsync.py:311
msgid "hours"
msgstr ""

#: ../satellite_tools/satsync.py:311
msgid "minutes"
msgstr ""

#: ../satellite_tools/satsync.py:311
msgid "seconds"
msgstr ""

#: ../satellite_tools/satsync.py:357
msgid ""
"ERROR: The dump is missing package data, use --no-rpms to skip this step or "
"fix the content to include package data."
msgstr ""

#. the orgs() method doesn't exist; that's fine we just
#. won't sync the orgs
#: ../satellite_tools/satsync.py:404
msgid "The SUSE Manager master does not support syncing orgs data."
msgstr ""

#: ../satellite_tools/satsync.py:404
msgid "Skipping..."
msgstr ""

#: ../satellite_tools/satsync.py:442
#, python-format
msgid "SUSE Manager Inter Server sync. report from %s"
msgstr ""

#: ../satellite_tools/satsync.py:521
msgid " - file-system synchronization"
msgstr ""

#: ../satellite_tools/satsync.py:533 ../satellite_tools/satsync.py:541
msgid " - live synchronization"
msgstr ""

#: ../satellite_tools/satsync.py:534
#, python-brace-format
msgid ""
"ERROR: Live content synchronizing with RHN Classic Hosted is no longer "
"supported.\n"
"Please use the cdn-sync command instead unless you are attempting to sync "
"from another {PRODUCT_NAME} via Inter-Server-Sync (ISS), or from local "
"content on disk via Channel Dump ISOs."
msgstr ""

#: ../satellite_tools/satsync.py:542
#, python-format
msgid "   url: %s"
msgstr ""

#: ../satellite_tools/satsync.py:543
#, python-format
msgid "   debug/output level: %s"
msgstr ""

#: ../satellite_tools/satsync.py:553
msgid "ERROR: this server must be registered with SUSE Manager."
msgstr ""

#: ../satellite_tools/satsync.py:575
#, python-format
msgid "Retrieving / parsing %s data"
msgstr ""

#: ../satellite_tools/satsync.py:585 ../satellite_tools/satsync.py:600
msgid "*** SYSTEM INTERRUPT CALLED ***"
msgstr ""

#: ../satellite_tools/satsync.py:593
msgid "ERROR: fatal parser exception occurred "
msgstr ""

#: ../satellite_tools/satsync.py:594
#, python-format
msgid "(line: %s, col: %s msg: %s)"
msgstr ""

#: ../satellite_tools/satsync.py:598
#, python-format
msgid "ERROR: parser exception occurred: %s"
msgstr ""

#: ../satellite_tools/satsync.py:603
msgid "ERROR: exception (during parse) occurred: "
msgstr ""

#: ../satellite_tools/satsync.py:604
#, python-format
msgid ""
"   Encountered some errors with %s data (see logs (%s) for more information)"
msgstr ""

#: ../satellite_tools/satsync.py:606
#, python-format
msgid "   Encountered some errors with %s data:"
msgstr ""

#: ../satellite_tools/satsync.py:607
#, python-format
msgid "   ------- %s PARSE/IMPORT ERROR -------"
msgstr ""

#: ../satellite_tools/satsync.py:609
msgid "   ---------------------------------------"
msgstr ""

#: ../satellite_tools/satsync.py:612
#, python-format
msgid "%s data complete"
msgstr ""

#: ../satellite_tools/satsync.py:665
msgid "Retrieving / parsing channel data"
msgstr ""

#: ../satellite_tools/satsync.py:718
msgid "Channel data complete"
msgstr ""

#: ../satellite_tools/satsync.py:736
#, python-format
msgid "%10s import from %s"
msgstr ""

#: ../satellite_tools/satsync.py:739
#, python-format
msgid "%10s import from %s - %s"
msgstr ""

#: ../satellite_tools/satsync.py:743
#, python-format
msgid "%10s"
msgstr ""

#: ../satellite_tools/satsync.py:750
msgid "p"
msgstr ""

#: ../satellite_tools/satsync.py:752
msgid "."
msgstr ""

#: ../satellite_tools/satsync.py:758
msgid "   p = previously imported/synced channel"
msgstr ""

#: ../satellite_tools/satsync.py:759
msgid "   . = channel not yet imported/synced"
msgstr ""

#: ../satellite_tools/satsync.py:765
msgid "   e = channel no longer supported (end-of-service)"
msgstr ""

#: ../satellite_tools/satsync.py:767
msgid "   ? = channel label invalid --- typo?"
msgstr ""

#: ../satellite_tools/satsync.py:771
#, python-format
msgid "   %s:"
msgstr ""

#: ../satellite_tools/satsync.py:772
#, python-format
msgid "      %s %-40s %4s %s"
msgstr ""

#: ../satellite_tools/satsync.py:773
msgid "base-channels"
msgstr ""

#: ../satellite_tools/satsync.py:786 ../satellite_tools/satsync.py:1603
msgid "NONE RELEVANT"
msgstr ""

#: ../satellite_tools/satsync.py:808
msgid "end-of-service"
msgstr ""

#: ../satellite_tools/satsync.py:809
msgid "e"
msgstr ""

#: ../satellite_tools/satsync.py:815
msgid "   typos:"
msgstr ""

#: ../satellite_tools/satsync.py:816
msgid "?"
msgstr ""

#: ../satellite_tools/satsync.py:831
#, python-format
msgid "XXX: imported channels: %s"
msgstr ""

#: ../satellite_tools/satsync.py:832
#, python-format
msgid "XXX:   cached channels: %s"
msgstr ""

#: ../satellite_tools/satsync.py:837
msgid "XXX: list channels called"
msgstr ""

#: ../satellite_tools/satsync.py:855
msgid "ERROR: these channels either do not exist or are not available:"
msgstr ""

#: ../satellite_tools/satsync.py:859
#, python-format
msgid "       (to see a list of channel labels: %s --list-channels)"
msgstr ""

#: ../satellite_tools/satsync.py:904
#, python-format
msgid "   Retrieving / parsing short package metadata: %s (%s)"
msgstr ""

#: ../satellite_tools/satsync.py:965
#, python-format
msgid "Diffing package metadata (what's missing locally?): %s"
msgstr ""

#: ../satellite_tools/satsync.py:971 ../satellite_tools/satsync.py:1254
msgid "Diffing:    "
msgstr ""

#: ../satellite_tools/satsync.py:988
msgid "ERROR: incremental dump skipped"
msgstr ""

#: ../satellite_tools/satsync.py:1079
msgid "Downloading rpm packages"
msgstr ""

#: ../satellite_tools/satsync.py:1084
#, python-format
msgid "   Fetching any missing RPMs: %s (%s)"
msgstr ""

#: ../satellite_tools/satsync.py:1085 ../satellite_tools/satsync.py:1153
msgid "NONE MISSING"
msgstr ""

#: ../satellite_tools/satsync.py:1094
msgid "Processing rpm packages complete"
msgstr ""

#: ../satellite_tools/satsync.py:1121
msgid "Downloading package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1146
msgid "Downloading srpm packages"
msgstr ""

#: ../satellite_tools/satsync.py:1152
#, python-format
msgid "   Fetching any missing SRPMs: %s (%s)"
msgstr ""

#: ../satellite_tools/satsync.py:1249
#, python-format
msgid "Diffing source package metadata (what's missing locally?): %s"
msgstr ""

#: ../satellite_tools/satsync.py:1260
msgid "Downloading source package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1338 ../satellite_tools/satsync.py:2027
#, python-format
msgid "Unable to save file %s: %s"
msgstr ""

#. for
#. Retried a number of times and it still failed; log the
#. file as being failed and move on
#: ../satellite_tools/satsync.py:1345
#, python-format
msgid "Failed to fetch file %s"
msgstr ""

#: ../satellite_tools/satsync.py:1350
msgid "Downloading kickstartable trees metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1365
msgid "Downloading kickstartable trees files"
msgstr ""

#: ../satellite_tools/satsync.py:1504
#, python-format
msgid "Grabbing all patches for channel %s"
msgstr ""

#: ../satellite_tools/satsync.py:1554
msgid "Downloading patch data"
msgstr ""

#: ../satellite_tools/satsync.py:1556
msgid "Forcing download of all patch data for requested channels."
msgstr ""

#: ../satellite_tools/satsync.py:1571
msgid "Downloading patch data complete"
msgstr ""

#: ../satellite_tools/satsync.py:1576 ../satellite_tools/satsync.py:1597
msgid "Downloading:"
msgstr ""

#: ../satellite_tools/satsync.py:1579
msgid " - complete"
msgstr ""

#: ../satellite_tools/satsync.py:1624
msgid "Importing source package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1627
msgid "Importing package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1635
msgid "Importing:  "
msgstr ""

#. not in the cache
#: ../satellite_tools/satsync.py:1703
msgid ""
"Package Not Found in Cache, Clear the Cache "
"to                                  Regenerate it."
msgstr ""

#: ../satellite_tools/satsync.py:1709
msgid "Importing channel patches"
msgstr ""

#: ../satellite_tools/satsync.py:1714
#, python-format
msgid "Importing %s patches for channel %s."
msgstr ""

#. Incomplete configuration
#: ../satellite_tools/satsync.py:2113
msgid "ERROR: server.mount_point not set in the configuration file"
msgstr ""

#: ../satellite_tools/satsync.py:2117
#, python-format
msgid "ERROR: server.mount_point %s do not exist"
msgstr ""

#: ../satellite_tools/satsync.py:2122
#, python-format
msgid "ERROR: path under server.mount_point (%s)  do not exist"
msgstr ""

#: ../satellite_tools/satsync.py:2199
#, python-format
msgid "Commandline: %s"
msgstr ""

#: ../satellite_tools/satsync.py:2202
#, python-format
msgid ""
"DEBUG ONLY: max. batch-size for XML/database-import processing (1..%s).\"man "
"satellite-sync\" for more information."
msgstr ""

#: ../satellite_tools/satsync.py:2205
msgid "alternative SSL CA Cert (fullpath to cert file)"
msgstr ""

#: ../satellite_tools/satsync.py:2207
msgid "process data for this channel only"
msgstr ""

#: ../satellite_tools/satsync.py:2209
msgid ""
"disk dump will be considered to be a full export; see \"man satellite-sync\" "
"for more information."
msgstr ""

#: ../satellite_tools/satsync.py:2212
msgid "existing custom channels will also be synced (unless -c is used)"
msgstr ""

#: ../satellite_tools/satsync.py:2214
#, python-format
msgid ""
"override debug level set in /etc/rhn/rhn.conf (which is currently set at %s)."
msgstr ""

#: ../satellite_tools/satsync.py:2216
#, python-format
msgid "requested version of XML dump (default: %s)"
msgstr ""

#: ../satellite_tools/satsync.py:2218
msgid "e-mail a report of what was synced/imported"
msgstr ""

#: ../satellite_tools/satsync.py:2220
msgid "forcibly process all (not a diff of) patch metadata"
msgstr ""

#: ../satellite_tools/satsync.py:2222
msgid "Do not use an http proxy under any circumstances."
msgstr ""

#: ../satellite_tools/satsync.py:2224
msgid "alternative http proxy (hostname:port)"
msgstr ""

#: ../satellite_tools/satsync.py:2226
msgid "alternative http proxy username"
msgstr ""

#: ../satellite_tools/satsync.py:2228
msgid "alternative http proxy password"
msgstr ""

#: ../satellite_tools/satsync.py:2230
msgid "parent SUSE Manager to import content from"
msgstr ""

#: ../satellite_tools/satsync.py:2232
msgid "list all available channels and exit"
msgstr ""

#: ../satellite_tools/satsync.py:2234
msgid "help on all error codes mgr-inter-sync returns"
msgstr ""

#: ../satellite_tools/satsync.py:2236
msgid "source mount point for import - disk update only"
msgstr ""

#: ../satellite_tools/satsync.py:2238
msgid "do not process patch data"
msgstr ""

#: ../satellite_tools/satsync.py:2240
msgid "do not process kickstart data (provisioning only)"
msgstr ""

#: ../satellite_tools/satsync.py:2242
msgid "do not process full package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:2244
msgid "do not download, or process any RPMs"
msgstr ""

#: ../satellite_tools/satsync.py:2246
msgid "turn off SSL (not recommended)"
msgstr ""

#: ../satellite_tools/satsync.py:2248
msgid "org to which the sync imports data. defaults to the admin account"
msgstr ""

#: ../satellite_tools/satsync.py:2250
msgid "print the configuration and exit"
msgstr ""

#: ../satellite_tools/satsync.py:2252
msgid "alternative server with which to connect (hostname)"
msgstr ""

#: ../satellite_tools/satsync.py:2254
msgid "synchronize to this step (man satellite-sync for more info)"
msgstr ""

#: ../satellite_tools/satsync.py:2256
msgid "write complete data to tempfile before streaming to remainder of app"
msgstr ""

#: ../satellite_tools/satsync.py:2258
msgid "DEBUG ONLY: alternative path to digital system id"
msgstr ""

#: ../satellite_tools/satsync.py:2260
msgid "alternative email address(es) for sync output (--email option)"
msgstr ""

#: ../satellite_tools/satsync.py:2262
msgid "do not remove rpms when importing from local dump"
msgstr ""

#: ../satellite_tools/satsync.py:2264
msgid ""
"the fully qualified domain name of the master Satellite. Valid with --mount-"
"point only. Required if you want to import org data and channel permissions."
msgstr ""

#: ../satellite_tools/satsync.py:2274
#, python-format
msgid "ERROR: these arguments make no sense in this context (try --help): %s"
msgstr ""

#. An SQL error is fatal... crash and burn
#: ../satellite_tools/satsync.py:2286
#, python-format
msgid "ERROR: Can't connect to the database: %s"
msgstr ""

#: ../satellite_tools/satsync.py:2287
msgid "ERROR: Check if your database is running."
msgstr ""

#: ../satellite_tools/satsync.py:2322
#, python-format
msgid "ERROR: --debug-level takes an in integer value within the range %s."
msgstr ""

#: ../satellite_tools/satsync.py:2324
msgid "  0  - little logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2325
msgid "  1  - minimal logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2326
msgid "  2  - normal level of logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2327
msgid "  3  - lots of logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2328
msgid "  4+ - excessive logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2341
msgid "ERROR: The --master option is only valid with the --mount-point option"
msgstr ""

#: ../satellite_tools/satsync.py:2351
#, python-format
msgid "ERROR: Unable to lookup Org Id %s"
msgstr ""

#: ../satellite_tools/satsync.py:2360
msgid ""
"WARNING: --list-channels option overrides any --step option. --step ignored."
msgstr ""

#: ../satellite_tools/satsync.py:2375
#, python-format
msgid ""
"ERROR: '%s' is not a valid step. See 'man mgr-inter-sync' for more detail."
msgstr ""

#: ../satellite_tools/satsync.py:2407
msgid ""
"ERROR: No channels currently imported; try mgr-inter-sync --list-channels; "
"then mgr-inter-sync -c chn0 -c chn1..."
msgstr ""

#. int(None) --> TypeError
#. int('a')  --> ValueError
#: ../satellite_tools/satsync.py:2457 ../satellite_tools/satsync.py:2461
msgid "ERROR: --batch-size must have a value within the range: 1..50"
msgstr ""

#: ../satellite_tools/satsync.py:2469
#, python-format
msgid "ERROR: no such directory %s"
msgstr ""

#: ../satellite_tools/satsync.py:2474
msgid "Error Codes: Returned codes means:"
msgstr ""

#: ../satellite_tools/satsync.py:2475
msgid " -1  - Could not lock file or KeyboardInterrupt or SystemExit"
msgstr ""

#: ../satellite_tools/satsync.py:2476
msgid "  0  - User interrupted or intentional exit"
msgstr ""

#: ../satellite_tools/satsync.py:2477
msgid "  1  - attempting to run more than one instance of mgr-inter-sync."
msgstr ""

#: ../satellite_tools/satsync.py:2478
msgid "  2  - Unable to find synchronization tools."
msgstr ""

#: ../satellite_tools/satsync.py:2479
msgid "  3  - a general socket exception occurred"
msgstr ""

#: ../satellite_tools/satsync.py:2480
msgid "  4  - an SSL error occurred. Recheck your SSL settings."
msgstr ""

#: ../satellite_tools/satsync.py:2481
msgid "  5  - ISS error"
msgstr ""

#: ../satellite_tools/satsync.py:2482
msgid "  6  - unhandled exception occurred"
msgstr ""

#: ../satellite_tools/satsync.py:2483
msgid "  7  - unknown sync error"
msgstr ""

#: ../satellite_tools/satsync.py:2484
msgid "  8  - ERROR: must be root to execute"
msgstr ""

#: ../satellite_tools/satsync.py:2485
msgid "  9  - rpclib fault during synchronization init"
msgstr ""

#: ../satellite_tools/satsync.py:2486
msgid "  10 - synchronization init error"
msgstr ""

#: ../satellite_tools/satsync.py:2487
msgid "  11 - Error parsing XML stream"
msgstr ""

#: ../satellite_tools/satsync.py:2488
msgid "  12 - Channel do not exist"
msgstr ""

#: ../satellite_tools/satsync.py:2489
msgid "  13 - SQL error during importing package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:2490
msgid "  14 - SQL error during linking channel packages"
msgstr ""

#: ../satellite_tools/satsync.py:2491
msgid "  15 - SQL error during xml processing"
msgstr ""

#: ../satellite_tools/satsync.py:2492
msgid "  16 - server.mount_point not set in the configuration file"
msgstr ""

#: ../satellite_tools/satsync.py:2493
msgid ""
"  17 - SQL error during retrieving the channels already imported in the SUSE "
"Manager database"
msgstr ""

#: ../satellite_tools/satsync.py:2494
msgid "  18 - Wrong db connection string in rhn.conf"
msgstr ""

#: ../satellite_tools/satsync.py:2495
msgid "  19 - Bad arguments"
msgstr ""

#: ../satellite_tools/satsync.py:2496
msgid "  20 - Could not connect to db."
msgstr ""

#: ../satellite_tools/satsync.py:2497
msgid "  21 - Bad debug level"
msgstr ""

#: ../satellite_tools/satsync.py:2498
msgid "  22 - Not valid step"
msgstr ""

#: ../satellite_tools/satsync.py:2499
msgid "  24 - no such file"
msgstr ""

#: ../satellite_tools/satsync.py:2500
msgid "  25 - no such directory"
msgstr ""

#: ../satellite_tools/satsync.py:2501
msgid "  26 - mount_point does not exist"
msgstr ""

#: ../satellite_tools/satsync.py:2502
msgid "  27 - No such org"
msgstr ""

#: ../satellite_tools/satsync.py:2503
msgid "  28 - error: --master is only valid with --mount-point"
msgstr ""

#: ../satellite_tools/satsync.py:2510
#, python-format
msgid "ERROR: unknown dump version, try one of %s"
msgstr ""
  07070100000091000081B40000000000000000000000016290A0C10000B67C000000000000000000000000000000000000001B00000000spacewalk-backend/po/te.po    # SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
#
# Translators:
# Krishna Babu K <kkrothap@redhat.com>, 2010.
# Sree Ganesh <sthottem@redhat.com>, 2006, 2007.
msgid ""
msgstr ""
"Project-Id-Version: Spacewalk\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-10-16 13:34+0200\n"
"PO-Revision-Date: 2011-03-04 16:08+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Telugu (http://www.transifex.com/projects/p/fedora/language/"
"te/)\n"
"Language: te\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"

#: ../server/apacheAuth.py:66
#, python-format
msgid "incomplete proxy authentication token: %s"
msgstr ""

#: ../server/apacheAuth.py:84
#, python-format
msgid "Sent proxy signature %s does not match ours %s."
msgstr ""

#: ../server/apacheAuth.py:119
msgid "declined proxy authentication"
msgstr ""

#: ../server/apacheRequest.py:59
#, python-format
msgid "Invalid request received (%s)."
msgstr ""

#: ../server/apacheRequest.py:120
#, python-format
msgid ""
"IMPORTANT MESSAGE FOLLOWS:\n"
"%s"
msgstr ""

#: ../server/apacheRequest.py:149
#, python-format
msgid ""
"While running '%s': caught\n"
"%s : %s\n"
msgstr ""

#: ../server/apacheRequest.py:606
#, python-format
msgid "Invalid URI %s"
msgstr ""

#: ../server/configFilesHandler.py:129 ../server/handlers/app/packages.py:192
#: ../server/handlers/xmlrpc/registration.py:215
#: ../server/handlers/xmlrpc/registration.py:1168
#: ../server/handlers/xmlrpc/registration.py:1307
#, python-format
msgid ""
"\n"
"                   %s Account has been deactivated on this server.\n"
"                   Please contact your Org administrator for more help."
msgstr ""

#: ../server/handlers/applet/applet.py:78
#, python-brace-format
msgid "Your system was not found in the {PRODUCT_NAME} database"
msgstr ""

#: ../server/handlers/sat/auth.py:45
msgid "ISS is disabled on this server."
msgstr ""

#: ../server/handlers/sat/auth.py:50
#, python-format
msgid "Server \"%s\" is not enabled for ISS."
msgstr ""

#: ../server/handlers/xmlrpc/errata.py:64
#, python-format
msgid "Expected a package name, not: %s"
msgstr ""

#: ../server/handlers/xmlrpc/errata.py:115
#, python-format
msgid "Expected a package, not: %s"
msgstr ""

#: ../server/handlers/xmlrpc/proxy.py:65
#, python-format
msgid "SUSE Manager Proxy service not enabled for server profile: \"%s\""
msgstr ""

#: ../server/handlers/xmlrpc/proxy.py:85
msgid "Invalid session key"
msgstr ""

#: ../server/handlers/xmlrpc/proxy.py:93
msgid "This server ID no longer exists"
msgstr ""

#: ../server/handlers/xmlrpc/queue.py:433
#, python-format
msgid "Invalid action value type %s (%s)"
msgstr ""

#: ../server/handlers/xmlrpc/queue.py:464
#, python-format
msgid "Action %s does not belong to server %s"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:194
msgid "Required data missing"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:198
msgid "Required members missing"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:207
msgid "Attempt to register a system to an invalid username"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:839
msgid "Invalid system release version requested"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1063
msgid ""
"Unable to find a valid network interface, both ipaddr and ip6addr not found."
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1115
#, python-brace-format
msgid "{PRODUCT_NAME} Welcome Message"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1125
msgid "Privacy Statement"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1146
msgid "Expected a dictionary as a product argument"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1374
#, python-format
msgid "Invalid value '%s' for %s (%s)"
msgstr ""

#: ../server/handlers/xmlrpc/scap.py:104
msgid "Invalid system_id/action_id pair."
msgstr ""

#: ../server/handlers/xmlrpc/up2date.py:233
#, python-format
msgid "Invalid value %s (%s)"
msgstr ""

#: ../server/importlib/userAuth.py:98
msgid "You are not authorized to manage packages in the null org"
msgstr ""

#: ../server/importlib/userAuth.py:103
#, python-format
msgid "You are not allowed to manage packages in the %s org"
msgstr ""

#: ../server/importlib/userAuth.py:121
msgid "You are not allowed to perform administrative tasks"
msgstr ""

#: ../server/importlib/userAuth.py:144
#, python-format
msgid ""
"You are not allowed to manage channel %s, or that channel does not exist"
msgstr ""

#: ../server/importlib/userAuth.py:204
#, python-format
msgid ""
"\n"
"               %s Account has been deactivated on this server.\n"
"               Please contact your Org administrator for more help."
msgstr ""

#: ../server/rhnChannel.py:1992
#, python-format
msgid ""
"Your account does not have access to any channels matching "
"(release='%(release)s', arch='%(arch)s')%(www_activation)s"
msgstr ""

#: ../server/rhnChannel.py:2002
msgid ""
"\n"
"If you have a registration number, please register with it first at http://"
"www.redhat.com/apps/activate/ and then try again.\n"
"\n"
msgstr ""

#: ../server/rhnChannel.py:2012
#, python-format
msgid "Insufficient subscription permissions for release (%s, %s"
msgstr ""

#. Various messages that can be reused
#.
#. bretm 02/07/2007 -- when we have better old-client documentation, probably
#. will be safe to get rid of all this crap
#: ../server/rhnChannel.py:2276 ../server/rhnChannel.py:2287
#: ../server/rhnChannel.py:2302
msgid "System Registered but Inactive"
msgstr ""

#: ../server/rhnChannel.py:2277
#, python-format
msgid ""
"\n"
"Invalid Architecture and OS release combination (%s, %s).\n"
"Your system has been registered, but will not receive updates\n"
"because it is not subscribed to a channel. If you have not yet\n"
"activated your product for service, please visit our website at:\n"
"\n"
"     http://www.redhat.com/apps/activate/\n"
"\n"
"...to activate your product."
msgstr ""

#: ../server/rhnChannel.py:2288
#, python-format
msgid ""
"\n"
"Invalid Architecture and OS release combination (%s, %s).\n"
"Your system has been registered, but will not receive updates\n"
"because it could not be subscribed to a base channel.\n"
"Please contact your organization administrator for assistance.\n"
msgstr ""

#: ../server/rhnChannel.py:2295
#, python-format
msgid ""
"\n"
"  This system has been successfully registered, but is not yet entitled\n"
"  to service.  To entitle this system to service, login to the web site at:\n"
"\n"
"  %(entitlement_url)s\n"
msgstr ""

#: ../server/rhnChannel.py:2303
#, python-format
msgid ""
"\n"
"  This system has been successfully registered, but no service entitlements\n"
"  were available.  To entitle this system to service, login to the web site "
"at:\n"
"\n"
"  %(entitlement_url)s\n"
msgstr ""

#: ../server/rhnHandler.py:62
msgid "Please run rhn_register as root on this client"
msgstr ""

#: ../server/rhnHandler.py:75
#, python-format
msgid "Service not enabled for system profile: \"%s\""
msgstr ""

#: ../server/rhnPackage.py:49 ../server/rhnPackage.py:87
#: ../server/rhnPackage.py:107 ../server/rhnPackage.py:158
#, python-format
msgid "Invalid RPM package %s requested"
msgstr ""

#: ../server/rhnPackage.py:112
msgid "Package not found"
msgstr ""

#: ../server/rhnServer/server_class.py:97
#, python-format
msgid "Architecture `%s' is not supported"
msgstr ""

#: ../server/rhnServer/server_token.py:78
#, python-format
msgid "Token `%s' has more than one base channel assigned"
msgstr ""

#: ../server/rhnServer/server_token.py:80
msgid "Conflicting base channels"
msgstr ""

#: ../server/rhnServer/server_token.py:190
#, python-format
msgid "Failed to add server to group %s"
msgstr ""

#: ../server/rhnServer/server_token.py:503
#, python-format
msgid "Maximum usage count of %s reached"
msgstr ""

#: ../server/rhnServer/server_token.py:744
msgid ""
"Stacking of re-registration tokens with different base entitlements is not "
"supported"
msgstr ""

#: ../server/rhnServer/server_token.py:811
#, python-format
msgid "Could not find token '%s'"
msgstr ""

#. Cannot use activation keys from different orgs
#: ../server/rhnServer/server_token.py:843
msgid "Tokens from mismatching orgs"
msgstr ""

#. Two tokens with different kickstart sessions
#: ../server/rhnServer/server_token.py:853
msgid "Kickstart session mismatch"
msgstr ""

#: ../server/rhnServer/server_token.py:877
msgid "Stacking of re-registration tokens is not supported"
msgstr ""

#: ../server/rhnUser.py:289 ../server/rhnUser.py:292
msgid "Invalid username/password combination"
msgstr ""

#. nope, not reserved either
#: ../server/rhnUser.py:467
#, python-format
msgid "Username `%s' has not been reserved"
msgstr ""

#. New accounts have to specify an e-mail address
#: ../server/rhnUser.py:473
msgid "E-mail address not specified"
msgstr ""

#: ../server/rhnUser.py:509
#, python-format
msgid "username should be at least %d characters"
msgstr ""

#: ../server/rhnUser.py:512
#, python-format
msgid "username should be less than %d characters"
msgstr ""

#: ../server/rhnUser.py:523
#, python-format
msgid "username = `%s', invalid character `%s'"
msgstr ""

#: ../server/rhnUser.py:542
#, python-format
msgid "Please limit your e-mail address to %s chars"
msgstr ""

#: ../server/rhnUser.py:623
#, python-format
msgid "password must be at least %d characters"
msgstr ""

#: ../server/rhnUser.py:626
#, python-format
msgid "Password must be shorter than %d characters"
msgstr ""

#: ../server/rhnUser.py:644
#, python-format
msgid "password contains character `%s'"
msgstr ""

#: ../server/rhnUser.py:651
#, python-format
msgid "username should be at least %d characters long"
msgstr ""

#: ../server/rhnUser.py:662
#, python-format
msgid "Cannot register usernames ending with %s"
msgstr ""

#. 0-999: Red Hat client/client-like interaction errors:
#: ../common/rhnException.py:53
msgid "This does not appear to be a valid username."
msgstr ""

#: ../common/rhnException.py:54
msgid "Invalid username and password combination."
msgstr ""

#: ../common/rhnException.py:55
msgid "This login is already taken, or the password is incorrect."
msgstr ""

#: ../common/rhnException.py:56
msgid "Permission denied."
msgstr ""

#: ../common/rhnException.py:57
msgid "Object not found."
msgstr ""

#: ../common/rhnException.py:58
msgid "Invalid System Digital ID."
msgstr ""

#: ../common/rhnException.py:59
msgid "Invalid System Credentials."
msgstr ""

#: ../common/rhnException.py:60
msgid "Could not retrieve user data from database."
msgstr ""

#: ../common/rhnException.py:61
msgid "Valid username required."
msgstr ""

#: ../common/rhnException.py:62
msgid "Valid password required."
msgstr ""

#: ../common/rhnException.py:63
msgid "Minimum username length violation."
msgstr ""

#: ../common/rhnException.py:64
msgid "Minimum password length violation."
msgstr ""

#: ../common/rhnException.py:65
msgid "The username contains invalid characters."
msgstr ""

#: ../common/rhnException.py:66
msgid "File not found."
msgstr ""

#: ../common/rhnException.py:67
msgid "Architecture and OS version combination is not supported."
msgstr ""

#: ../common/rhnException.py:68
msgid "Could not retrieve system data from database."
msgstr ""

#: ../common/rhnException.py:69
msgid "Invalid arguments passed to function."
msgstr ""

#: ../common/rhnException.py:70
msgid "Unable to retrieve requested entry."
msgstr ""

#: ../common/rhnException.py:71
msgid "Could not update database entry."
msgstr ""

#: ../common/rhnException.py:72
msgid "Unsupported server architecture."
msgstr ""

#: ../common/rhnException.py:73
#, python-format
msgid ""
"\n"
"     The anonymous server functionality is no longer available.\n"
"\n"
"     Please re-register this system by running mgr_register as root.\n"
"     Please visit https://%(hostname)s/rhn/systems/SystemEntitlements.do\n"
"     or login at https://%(hostname)s, and from the \"Overview\" tab,\n"
"     select \"Subscription Management\" to enable the service for this "
"system.\n"
"     "
msgstr ""

#: ../common/rhnException.py:81
msgid "Record not available in the database."
msgstr ""

#: ../common/rhnException.py:82
msgid "Invalid value for entry."
msgstr ""

#: ../common/rhnException.py:83
#, python-format
msgid ""
"\n"
"     This system does not have a valid entitlement for SUSE Manager.\n"
"     Please visit https://%(hostname)s/rhn/systems/SystemEntitlements.do\n"
"     or login at https://%(hostname)s, and from the \"Overview\" tab,\n"
"     select \"Subscription Management\" to enable the service for this "
"system.\n"
"     "
msgstr ""

#: ../common/rhnException.py:89
msgid "Channel error"
msgstr ""

#: ../common/rhnException.py:90
msgid "Client session token is invalid."
msgstr ""

#: ../common/rhnException.py:91
msgid "Client session token has expired."
msgstr ""

#: ../common/rhnException.py:92
msgid "You are not authorized to retrieve the requested object."
msgstr ""

#: ../common/rhnException.py:93
msgid "Invalid action"
msgstr ""

#: ../common/rhnException.py:94
msgid "You are not allowed to perform administrative tasks on this system."
msgstr ""

#: ../common/rhnException.py:96
msgid "The system is already subscribed to the specified channel."
msgstr ""

#: ../common/rhnException.py:97
msgid "The system is not currently subscribed to the specified channel."
msgstr ""

#: ../common/rhnException.py:98
msgid "The specified channel does not exist."
msgstr ""

#: ../common/rhnException.py:99
msgid "Invalid channel version."
msgstr ""

#: ../common/rhnException.py:100
msgid ""
"\n"
"     User group membership limits exceeded.\n"
"\n"
"     The current settings for your account do not allow you to add another\n"
"     user account. Please check with the organization administrator for "
"your\n"
"     account if the maximum number of users allowed to subscribe to server "
"needs\n"
"     to be changed.\n"
"     "
msgstr ""

#: ../common/rhnException.py:108
msgid ""
"\n"
"     System group membership limits exceeded.\n"
"\n"
"     The current settings for your account do not allow you to add another\n"
"     system profile. Please check with the organization administrator for "
"your\n"
"     account for modifying the maximum number of system profiles that can "
"be\n"
"     subscribed to your account.\n"
"     "
msgstr ""

#: ../common/rhnException.py:116
msgid ""
"\n"
"     Invalid architecture.\n"
"\n"
"     The architecture of the package is not supported by\n"
"     "
msgstr ""

#: ../common/rhnException.py:121
msgid "Invalid RPM header"
msgstr ""

#: ../common/rhnException.py:122
msgid ""
"\n"
"    This system is already registered as a Salt Minion. If you want to "
"register it as a traditional client\n"
"    please delete it first via the web UI or API and then register it using "
"the traditional tools.\n"
"    "
msgstr ""

#. For the uploading tools
#: ../common/rhnException.py:127
msgid "Invalid information uploaded to the server"
msgstr ""

#: ../common/rhnException.py:128
msgid "Error uploading network interfaces configuration."
msgstr ""

#: ../common/rhnException.py:129
msgid ""
"\n"
"     Package Upload Failed due to uniqueness constraint violation.\n"
"     Make sure the package does not have any duplicate dependencies or\n"
"     does not already exists on the server\n"
"     "
msgstr ""

#: ../common/rhnException.py:134
msgid ""
"\n"
"     The --force rhnpush option is disabled on this server.\n"
"     Please contact your SUSE Manager administrator for more help.\n"
"     "
msgstr ""

#. 60-70: token errors
#: ../common/rhnException.py:140
msgid ""
"\n"
"     The activation token specified could not be found on the server.\n"
"     Please retry with a valid key.\n"
"     "
msgstr ""

#: ../common/rhnException.py:144
msgid "Too many systems registered using this registration token"
msgstr ""

#: ../common/rhnException.py:145
msgid "Token contains invalid, obsoleted or insufficient settings"
msgstr ""

#: ../common/rhnException.py:146
msgid "Conflicting activation tokens"
msgstr ""

#. 70-80: channel subscription errors
#: ../common/rhnException.py:149
msgid ""
"\n"
"     No matching base channel found for your system.\n"
"     "
msgstr ""

#: ../common/rhnException.py:152
msgid ""
"\n"
"     You do not have subscription permission to the designated channel.\n"
"     Please refer to your organization's channel or organization\n"
"     administrators for further details.\n"
"     "
msgstr ""

#: ../common/rhnException.py:157
msgid "You can not unsubscribe from base channel."
msgstr ""

#: ../common/rhnException.py:158
msgid "SUSE Manager or Proxy channel can not be subscribed."
msgstr ""

#. 80-90: server group errors
#: ../common/rhnException.py:161
msgid "There was an error while trying to join the system to its groups"
msgstr ""

#. 90-100: entitlement errors
#: ../common/rhnException.py:164
msgid "Unable to entitle system"
msgstr ""

#. 100-109: e-mail and uuid related faults
#: ../common/rhnException.py:167
msgid "Maximum e-mail length violation."
msgstr ""

#: ../common/rhnException.py:168
msgid "This system has been previously registered."
msgstr ""

#: ../common/rhnException.py:169
msgid "Invalid username"
msgstr ""

#. 140-159 applet errors
#: ../common/rhnException.py:172
msgid "Unable to look up server"
msgstr ""

#. 160-179: OSAD errors
#: ../common/rhnException.py:175
msgid "Required argument is missing"
msgstr ""

#. 600-699: RHEL5+ EN errors
#: ../common/rhnException.py:178
msgid "No entitlement information tied to hardware"
msgstr ""

#: ../common/rhnException.py:179
msgid "Installation number is not entitling"
msgstr ""

#. 700-799: Additional user input verification errors.
#: ../common/rhnException.py:182
msgid "Maximum username length violation"
msgstr ""

#: ../common/rhnException.py:183
msgid "Maximum password length violation"
msgstr ""

#: ../common/rhnException.py:184
msgid "This user has read only API access. Action denied."
msgstr ""

#: ../common/rhnException.py:186
msgid "System Name cannot be less than 1 character"
msgstr ""

#. 1000-1999: Proxy specific errors:
#. issued by a Proxy to the client
#: ../common/rhnException.py:190
msgid "SUSE Manager Proxy error."
msgstr ""

#: ../common/rhnException.py:191
msgid "SUSE Manager Proxy unable to login."
msgstr ""

#. issued by a SUSE Manager Server/Satellite to the proxy
#: ../common/rhnException.py:193
msgid ""
"\n"
"     SUSE Manager Proxy system ID does not match a Spacewalk Proxy Server\n"
"     in the database.\n"
"     "
msgstr ""

#: ../common/rhnException.py:197
msgid "SUSE Manager Proxy session token is invalid."
msgstr ""

#: ../common/rhnException.py:198
msgid "SUSE Manager Proxy session token has expired."
msgstr ""

#. 2000-2999: Red Hat Satellite specific errors:
#: ../common/rhnException.py:202
msgid ""
"\n"
"      user creation is not allowed via mgr_register;\n"
"     please contact your sysadmin to have your account created.\n"
"     "
msgstr ""

#: ../common/rhnException.py:206
msgid ""
"\n"
"     This SUSE Manager server is not allowed to use Inter Server Sync on "
"this server\n"
"     "
msgstr ""

#: ../common/rhnException.py:209
msgid ""
"\n"
"     Inter Server Sync is disabled on this SUSE Manager Server.\n"
"     "
msgstr ""

#. 3000-3999: XML dumper errors:
#: ../common/rhnException.py:214
msgid "Invalid datatype passed"
msgstr ""

#: ../common/rhnException.py:215
msgid "Unable to retrieve channel"
msgstr ""

#: ../common/rhnException.py:216
msgid "Unable to retrieve package"
msgstr ""

#: ../common/rhnException.py:217
msgid "Unable to retrieve erratum"
msgstr ""

#: ../common/rhnException.py:218
msgid "File is missing"
msgstr ""

#: ../common/rhnException.py:219
msgid "Function retrieval error"
msgstr ""

#: ../common/rhnException.py:220
msgid "Function execution error"
msgstr ""

#: ../common/rhnException.py:221
msgid "Missing version string"
msgstr ""

#: ../common/rhnException.py:222
msgid "Invalid version string"
msgstr ""

#: ../common/rhnException.py:223
msgid "Mismatching versions"
msgstr ""

#: ../common/rhnException.py:224
msgid "Invalid channel version"
msgstr ""

#: ../common/rhnException.py:225
msgid "No comps file for channel"
msgstr ""

#: ../common/rhnException.py:226
msgid "Unable to retrieve comps file"
msgstr ""

#. 4000 - 4999: config management errors
#: ../common/rhnException.py:229
msgid "Configuration action missing"
msgstr ""

#: ../common/rhnException.py:230
msgid "File too large"
msgstr ""

#: ../common/rhnException.py:231
msgid "File contains binary data"
msgstr ""

#: ../common/rhnException.py:232
msgid "Configuration channel is not empty"
msgstr ""

#: ../common/rhnException.py:233
msgid "Permission error"
msgstr ""

#: ../common/rhnException.py:234
msgid "Content missing for configuration file"
msgstr ""

#: ../common/rhnException.py:235
msgid "Template delimiters not specified"
msgstr ""

#: ../common/rhnException.py:236
msgid "Configuration channel does not exist"
msgstr ""

#: ../common/rhnException.py:237
msgid "Configuration channel already exists"
msgstr ""

#: ../common/rhnException.py:238
msgid "File missing from configuration channel"
msgstr ""

#: ../common/rhnException.py:239
msgid "Different revision of this file is uploaded"
msgstr ""

#: ../common/rhnException.py:240
msgid "File already uploaded to configuration channel"
msgstr ""

#: ../common/rhnException.py:241
msgid "File size exceeds remaining quota space"
msgstr ""

#: ../common/rhnException.py:242
msgid "Full path of file must be specified"
msgstr ""

#: ../common/rhnException.py:243
msgid "Invalid revision number"
msgstr ""

#: ../common/rhnException.py:244
msgid "Cannot compare files of different file type"
msgstr ""

#. 5000 - 5999: client content uploading errors
#. 5000 - 5099: crash reporting errors
#: ../common/rhnException.py:248
msgid "Crash information is invalid or incomplete"
msgstr ""

#: ../common/rhnException.py:249
msgid "Crash file information is invalid or incomplete"
msgstr ""

#: ../common/rhnException.py:250
msgid "Error composing crash directory path"
msgstr ""

#: ../common/rhnException.py:251
msgid "Error composing crash file path"
msgstr ""

#: ../common/rhnException.py:252 ../common/rhnException.py:259
msgid "Invalid content encoding"
msgstr ""

#: ../common/rhnException.py:253
msgid "Invalid crash name"
msgstr ""

#: ../common/rhnException.py:254
msgid "Crash reporting is disabled for this organization"
msgstr ""

#. 5100 - 5199: scap results reporting error
#: ../common/rhnException.py:256
msgid "SCAP results file transfer is invalid or incomplete"
msgstr ""

#: ../common/rhnException.py:257
msgid "Error composing directory path for detailed SCAP results"
msgstr ""

#: ../common/rhnException.py:258
msgid "Error composing file path for detailed SCAP results"
msgstr ""

#: ../common/rhnException.py:306
msgid ""
"\n"
"     An error has occurred while processing your request. If this problem\n"
"     persists please enter a bug report at scc.suse.com.\n"
"     If you choose to submit the bug report, please be sure to include\n"
"     details of what you were trying to do when this error occurred and\n"
"     details on how to reproduce this problem.\n"
msgstr ""

#: ../common/rhnException.py:358
#, python-format
msgid ""
"Error Message:\n"
"    %s\n"
msgstr ""

#: ../common/rhnException.py:360
#, python-format
msgid "Error Class Code: %s\n"
msgstr ""

#: ../common/rhnException.py:363
#, python-format
msgid "Error Class Info: %s\n"
msgstr ""

#: ../common/rhnException.py:365
#, python-format
msgid "Explanation: %s"
msgstr ""

#: ../common/rhnTB.py:205
#, python-format
msgid "ERROR: %s %s: %s"
msgstr ""

#: ../common/rhnTB.py:207
#, python-format
msgid "TRACEBACK: %s"
msgstr ""

#: ../satellite_tools/disk_dumper/iss.py:1294
#: ../satellite_tools/disk_dumper/iss.py:1298
#, python-format
msgid "format of %s should be at least YYYYMMDD.\n"
msgstr ""

#: ../satellite_tools/messages.py:26
#, python-format
msgid ""
"\n"
"ERROR: executing step %s. Error is:\n"
"%s\n"
msgstr ""

#: ../satellite_tools/messages.py:31
#, python-format
msgid ""
"\n"
"ERROR: there was a problem accessing the channel data from your temporary\n"
"       repository. Did you migrate all of the data from the channel ISOs\n"
"       do this directory? If so, please recheck the channels ISOs, ensure\n"
"       that you have them all, and then iteratively remount and repopulate\n"
"       the temporary repository (%s).\n"
msgstr ""

#: ../satellite_tools/messages.py:39
#, python-format
msgid ""
"\n"
"ERROR: there was a problem synchronizing the information.\n"
"       Error message: %s\n"
msgstr ""

#: ../satellite_tools/messages.py:44
#, python-format
msgid ""
"\n"
"ERROR: There was a problem communicating with the ISS Master.\n"
"       Depending on the specific error details, please review your "
"configuration,\n"
"       basic network connectivity, and/or name resolution, and try again.\n"
"       Error message: %s\n"
msgstr ""

#: ../satellite_tools/messages.py:51
#, python-format
msgid ""
"\n"
"ERROR: There was a problem communicating with the ISS Master.\n"
"       If the master satellite is older than v5.3, it does not have ISS "
"capability.\n"
"       Otherwise, depending on the specific error details, please review "
"your\n"
"       configuration, basic network connectivity, and/or name resolution, "
"and try again.\n"
"       Error message: %s\n"
msgstr ""

#: ../satellite_tools/messages.py:59
#, python-format
msgid ""
"\n"
"ERROR: a child-channel cannot be synced without its parent being synced as\n"
"       well. A parent needs to be either (a) previously synced or (b) "
"synced\n"
"       in tandem with the desired child-channel. Missing parents for this\n"
"       transaction:\n"
"       %s\n"
msgstr ""

#: ../satellite_tools/messages.py:67
#, python-format
msgid ""
"\n"
"ERROR: you are not entitled to sync a channel in this set of channels.\n"
"Please contact your SUSE Manager contact\n"
"%s"
msgstr ""

#: ../satellite_tools/messages.py:72
#, python-format
msgid "  ERROR: not enough free space (%s KB) on device."
msgstr ""

#: ../satellite_tools/messages.py:74
#, python-format
msgid "    %3d/%s Fetch successful: %s (%s bytes)"
msgstr ""

#: ../satellite_tools/messages.py:75
#, python-format
msgid "    Extinct package:  %s"
msgstr ""

#: ../satellite_tools/messages.py:76
#, python-format
msgid "   Total size: %s"
msgstr ""

#: ../satellite_tools/messages.py:77
#, python-format
msgid "      Downloaded %s of %s. Estimated remaining time: %s"
msgstr ""

#: ../satellite_tools/messages.py:78
#, python-format
msgid "    Fetch unsuccessful: %s"
msgstr ""

#: ../satellite_tools/messages.py:79
#, python-format
msgid "   RPM fetch summary: %s"
msgstr ""

#: ../satellite_tools/messages.py:80
#, python-format
msgid "       success: %d"
msgstr ""

#: ../satellite_tools/messages.py:81
#, python-format
msgid "       failed:  %d"
msgstr ""

#: ../satellite_tools/messages.py:82
#, python-format
msgid "       extinct: %d"
msgstr ""

#: ../satellite_tools/messages.py:84
#, python-format
msgid "   Retrieving / parsing *relevant* package metadata: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:85
#, python-format
msgid "   Retrieving / parsing errata data: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:86
#, python-format
msgid "   Retrieving / parsing kickstart data: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:87
#, python-format
msgid "   Retrieving / parsing kickstart tree files: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:88
#, python-format
msgid "   Importing *relevant* package metadata: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:89
msgid "   * WARNING: this may be a slow process."
msgstr ""

#: ../satellite_tools/messages.py:90
msgid "Linking packages to channels"
msgstr ""

#: ../satellite_tools/messages.py:91
#, python-format
msgid "   Importing *relevant* errata: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:92
msgid "   No new kickstartable tree to import"
msgstr ""

#: ../satellite_tools/messages.py:93
#, python-format
msgid "Importing kickstartable trees (%d)"
msgstr ""

#: ../satellite_tools/messages.py:94
#, python-format
msgid "Imported kickstartable trees (%d)"
msgstr ""

#: ../satellite_tools/reposync.py:111 ../satellite_tools/satsync.py:439
msgid "+++ sending log as an email +++"
msgstr ""

#: ../satellite_tools/reposync.py:114
#, python-format
msgid "%s sync. report from %s"
msgstr ""

#: ../satellite_tools/reposync.py:124 ../satellite_tools/satsync.py:449
msgid "+++ email requested, but there is nothing to send +++"
msgstr ""

#: ../satellite_tools/rhn_satellite_activate.py:198
#, python-format
msgid ""
"\"%s\" (specified in commandline)\n"
"could not be opened and read:\n"
"%s"
msgstr ""

#: ../satellite_tools/rhn_satellite_activate.py:205
#, python-format
msgid ""
"\"%s\" could not be opened\n"
"and/or written to:\n"
"%s"
msgstr ""

#: ../satellite_tools/satsync.py:258
#, python-format
msgid "No handler for step %s"
msgstr ""

#. Try one more time - this time it should be faster since
#. everything should be cached
#: ../satellite_tools/satsync.py:270
msgid "Environment changed, trying again..."
msgstr ""

#: ../satellite_tools/satsync.py:277
msgid "ERROR: Encountered IntegrityError: \n"
msgstr ""

#: ../satellite_tools/satsync.py:285
msgid "Repeated failures"
msgstr ""

#: ../satellite_tools/satsync.py:290
#, python-format
msgid ""
"    Import complete:\n"
"        Begin time: %s\n"
"        End time:   %s\n"
"        Elapsed:    %s\n"
"          "
msgstr ""

#: ../satellite_tools/satsync.py:311
msgid "hours"
msgstr ""

#: ../satellite_tools/satsync.py:311
msgid "minutes"
msgstr ""

#: ../satellite_tools/satsync.py:311
msgid "seconds"
msgstr ""

#: ../satellite_tools/satsync.py:357
msgid ""
"ERROR: The dump is missing package data, use --no-rpms to skip this step or "
"fix the content to include package data."
msgstr ""

#. the orgs() method doesn't exist; that's fine we just
#. won't sync the orgs
#: ../satellite_tools/satsync.py:404
msgid "The SUSE Manager master does not support syncing orgs data."
msgstr ""

#: ../satellite_tools/satsync.py:404
msgid "Skipping..."
msgstr ""

#: ../satellite_tools/satsync.py:442
#, python-format
msgid "SUSE Manager Inter Server sync. report from %s"
msgstr ""

#: ../satellite_tools/satsync.py:521
msgid " - file-system synchronization"
msgstr ""

#: ../satellite_tools/satsync.py:533 ../satellite_tools/satsync.py:541
msgid " - live synchronization"
msgstr ""

#: ../satellite_tools/satsync.py:534
#, python-brace-format
msgid ""
"ERROR: Live content synchronizing with RHN Classic Hosted is no longer "
"supported.\n"
"Please use the cdn-sync command instead unless you are attempting to sync "
"from another {PRODUCT_NAME} via Inter-Server-Sync (ISS), or from local "
"content on disk via Channel Dump ISOs."
msgstr ""

#: ../satellite_tools/satsync.py:542
#, python-format
msgid "   url: %s"
msgstr ""

#: ../satellite_tools/satsync.py:543
#, python-format
msgid "   debug/output level: %s"
msgstr ""

#: ../satellite_tools/satsync.py:553
msgid "ERROR: this server must be registered with SUSE Manager."
msgstr ""

#: ../satellite_tools/satsync.py:575
#, python-format
msgid "Retrieving / parsing %s data"
msgstr ""

#: ../satellite_tools/satsync.py:585 ../satellite_tools/satsync.py:600
msgid "*** SYSTEM INTERRUPT CALLED ***"
msgstr ""

#: ../satellite_tools/satsync.py:593
msgid "ERROR: fatal parser exception occurred "
msgstr ""

#: ../satellite_tools/satsync.py:594
#, python-format
msgid "(line: %s, col: %s msg: %s)"
msgstr ""

#: ../satellite_tools/satsync.py:598
#, python-format
msgid "ERROR: parser exception occurred: %s"
msgstr ""

#: ../satellite_tools/satsync.py:603
msgid "ERROR: exception (during parse) occurred: "
msgstr ""

#: ../satellite_tools/satsync.py:604
#, python-format
msgid ""
"   Encountered some errors with %s data (see logs (%s) for more information)"
msgstr ""

#: ../satellite_tools/satsync.py:606
#, python-format
msgid "   Encountered some errors with %s data:"
msgstr ""

#: ../satellite_tools/satsync.py:607
#, python-format
msgid "   ------- %s PARSE/IMPORT ERROR -------"
msgstr ""

#: ../satellite_tools/satsync.py:609
msgid "   ---------------------------------------"
msgstr ""

#: ../satellite_tools/satsync.py:612
#, python-format
msgid "%s data complete"
msgstr ""

#: ../satellite_tools/satsync.py:665
msgid "Retrieving / parsing channel data"
msgstr ""

#: ../satellite_tools/satsync.py:718
msgid "Channel data complete"
msgstr ""

#: ../satellite_tools/satsync.py:736
#, python-format
msgid "%10s import from %s"
msgstr ""

#: ../satellite_tools/satsync.py:739
#, python-format
msgid "%10s import from %s - %s"
msgstr ""

#: ../satellite_tools/satsync.py:743
#, python-format
msgid "%10s"
msgstr ""

#: ../satellite_tools/satsync.py:750
msgid "p"
msgstr ""

#: ../satellite_tools/satsync.py:752
msgid "."
msgstr ""

#: ../satellite_tools/satsync.py:758
msgid "   p = previously imported/synced channel"
msgstr ""

#: ../satellite_tools/satsync.py:759
msgid "   . = channel not yet imported/synced"
msgstr ""

#: ../satellite_tools/satsync.py:765
msgid "   e = channel no longer supported (end-of-service)"
msgstr ""

#: ../satellite_tools/satsync.py:767
msgid "   ? = channel label invalid --- typo?"
msgstr ""

#: ../satellite_tools/satsync.py:771
#, python-format
msgid "   %s:"
msgstr ""

#: ../satellite_tools/satsync.py:772
#, python-format
msgid "      %s %-40s %4s %s"
msgstr ""

#: ../satellite_tools/satsync.py:773
msgid "base-channels"
msgstr ""

#: ../satellite_tools/satsync.py:786 ../satellite_tools/satsync.py:1603
msgid "NONE RELEVANT"
msgstr ""

#: ../satellite_tools/satsync.py:808
msgid "end-of-service"
msgstr ""

#: ../satellite_tools/satsync.py:809
msgid "e"
msgstr ""

#: ../satellite_tools/satsync.py:815
msgid "   typos:"
msgstr ""

#: ../satellite_tools/satsync.py:816
msgid "?"
msgstr ""

#: ../satellite_tools/satsync.py:831
#, python-format
msgid "XXX: imported channels: %s"
msgstr ""

#: ../satellite_tools/satsync.py:832
#, python-format
msgid "XXX:   cached channels: %s"
msgstr ""

#: ../satellite_tools/satsync.py:837
msgid "XXX: list channels called"
msgstr ""

#: ../satellite_tools/satsync.py:855
msgid "ERROR: these channels either do not exist or are not available:"
msgstr ""

#: ../satellite_tools/satsync.py:859
#, python-format
msgid "       (to see a list of channel labels: %s --list-channels)"
msgstr ""

#: ../satellite_tools/satsync.py:904
#, python-format
msgid "   Retrieving / parsing short package metadata: %s (%s)"
msgstr ""

#: ../satellite_tools/satsync.py:965
#, python-format
msgid "Diffing package metadata (what's missing locally?): %s"
msgstr ""

#: ../satellite_tools/satsync.py:971 ../satellite_tools/satsync.py:1254
msgid "Diffing:    "
msgstr ""

#: ../satellite_tools/satsync.py:988
msgid "ERROR: incremental dump skipped"
msgstr ""

#: ../satellite_tools/satsync.py:1079
msgid "Downloading rpm packages"
msgstr ""

#: ../satellite_tools/satsync.py:1084
#, python-format
msgid "   Fetching any missing RPMs: %s (%s)"
msgstr ""

#: ../satellite_tools/satsync.py:1085 ../satellite_tools/satsync.py:1153
msgid "NONE MISSING"
msgstr ""

#: ../satellite_tools/satsync.py:1094
msgid "Processing rpm packages complete"
msgstr ""

#: ../satellite_tools/satsync.py:1121
msgid "Downloading package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1146
msgid "Downloading srpm packages"
msgstr ""

#: ../satellite_tools/satsync.py:1152
#, python-format
msgid "   Fetching any missing SRPMs: %s (%s)"
msgstr ""

#: ../satellite_tools/satsync.py:1249
#, python-format
msgid "Diffing source package metadata (what's missing locally?): %s"
msgstr ""

#: ../satellite_tools/satsync.py:1260
msgid "Downloading source package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1338 ../satellite_tools/satsync.py:2027
#, python-format
msgid "Unable to save file %s: %s"
msgstr ""

#. for
#. Retried a number of times and it still failed; log the
#. file as being failed and move on
#: ../satellite_tools/satsync.py:1345
#, python-format
msgid "Failed to fetch file %s"
msgstr ""

#: ../satellite_tools/satsync.py:1350
msgid "Downloading kickstartable trees metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1365
msgid "Downloading kickstartable trees files"
msgstr ""

#: ../satellite_tools/satsync.py:1504
#, python-format
msgid "Grabbing all patches for channel %s"
msgstr ""

#: ../satellite_tools/satsync.py:1554
msgid "Downloading patch data"
msgstr ""

#: ../satellite_tools/satsync.py:1556
msgid "Forcing download of all patch data for requested channels."
msgstr ""

#: ../satellite_tools/satsync.py:1571
msgid "Downloading patch data complete"
msgstr ""

#: ../satellite_tools/satsync.py:1576 ../satellite_tools/satsync.py:1597
msgid "Downloading:"
msgstr ""

#: ../satellite_tools/satsync.py:1579
msgid " - complete"
msgstr ""

#: ../satellite_tools/satsync.py:1624
msgid "Importing source package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1627
msgid "Importing package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1635
msgid "Importing:  "
msgstr ""

#. not in the cache
#: ../satellite_tools/satsync.py:1703
msgid ""
"Package Not Found in Cache, Clear the Cache "
"to                                  Regenerate it."
msgstr ""

#: ../satellite_tools/satsync.py:1709
msgid "Importing channel patches"
msgstr ""

#: ../satellite_tools/satsync.py:1714
#, python-format
msgid "Importing %s patches for channel %s."
msgstr ""

#. Incomplete configuration
#: ../satellite_tools/satsync.py:2113
msgid "ERROR: server.mount_point not set in the configuration file"
msgstr ""

#: ../satellite_tools/satsync.py:2117
#, python-format
msgid "ERROR: server.mount_point %s do not exist"
msgstr ""

#: ../satellite_tools/satsync.py:2122
#, python-format
msgid "ERROR: path under server.mount_point (%s)  do not exist"
msgstr ""

#: ../satellite_tools/satsync.py:2199
#, python-format
msgid "Commandline: %s"
msgstr ""

#: ../satellite_tools/satsync.py:2202
#, python-format
msgid ""
"DEBUG ONLY: max. batch-size for XML/database-import processing (1..%s).\"man "
"satellite-sync\" for more information."
msgstr ""

#: ../satellite_tools/satsync.py:2205
msgid "alternative SSL CA Cert (fullpath to cert file)"
msgstr ""

#: ../satellite_tools/satsync.py:2207
msgid "process data for this channel only"
msgstr ""

#: ../satellite_tools/satsync.py:2209
msgid ""
"disk dump will be considered to be a full export; see \"man satellite-sync\" "
"for more information."
msgstr ""

#: ../satellite_tools/satsync.py:2212
msgid "existing custom channels will also be synced (unless -c is used)"
msgstr ""

#: ../satellite_tools/satsync.py:2214
#, python-format
msgid ""
"override debug level set in /etc/rhn/rhn.conf (which is currently set at %s)."
msgstr ""

#: ../satellite_tools/satsync.py:2216
#, python-format
msgid "requested version of XML dump (default: %s)"
msgstr ""

#: ../satellite_tools/satsync.py:2218
msgid "e-mail a report of what was synced/imported"
msgstr ""

#: ../satellite_tools/satsync.py:2220
msgid "forcibly process all (not a diff of) patch metadata"
msgstr ""

#: ../satellite_tools/satsync.py:2222
msgid "Do not use an http proxy under any circumstances."
msgstr ""

#: ../satellite_tools/satsync.py:2224
msgid "alternative http proxy (hostname:port)"
msgstr ""

#: ../satellite_tools/satsync.py:2226
msgid "alternative http proxy username"
msgstr ""

#: ../satellite_tools/satsync.py:2228
msgid "alternative http proxy password"
msgstr ""

#: ../satellite_tools/satsync.py:2230
msgid "parent SUSE Manager to import content from"
msgstr ""

#: ../satellite_tools/satsync.py:2232
msgid "list all available channels and exit"
msgstr ""

#: ../satellite_tools/satsync.py:2234
msgid "help on all error codes mgr-inter-sync returns"
msgstr ""

#: ../satellite_tools/satsync.py:2236
msgid "source mount point for import - disk update only"
msgstr ""

#: ../satellite_tools/satsync.py:2238
msgid "do not process patch data"
msgstr ""

#: ../satellite_tools/satsync.py:2240
msgid "do not process kickstart data (provisioning only)"
msgstr ""

#: ../satellite_tools/satsync.py:2242
msgid "do not process full package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:2244
msgid "do not download, or process any RPMs"
msgstr ""

#: ../satellite_tools/satsync.py:2246
msgid "turn off SSL (not recommended)"
msgstr ""

#: ../satellite_tools/satsync.py:2248
msgid "org to which the sync imports data. defaults to the admin account"
msgstr ""

#: ../satellite_tools/satsync.py:2250
msgid "print the configuration and exit"
msgstr ""

#: ../satellite_tools/satsync.py:2252
msgid "alternative server with which to connect (hostname)"
msgstr ""

#: ../satellite_tools/satsync.py:2254
msgid "synchronize to this step (man satellite-sync for more info)"
msgstr ""

#: ../satellite_tools/satsync.py:2256
msgid "write complete data to tempfile before streaming to remainder of app"
msgstr ""

#: ../satellite_tools/satsync.py:2258
msgid "DEBUG ONLY: alternative path to digital system id"
msgstr ""

#: ../satellite_tools/satsync.py:2260
msgid "alternative email address(es) for sync output (--email option)"
msgstr ""

#: ../satellite_tools/satsync.py:2262
msgid "do not remove rpms when importing from local dump"
msgstr ""

#: ../satellite_tools/satsync.py:2264
msgid ""
"the fully qualified domain name of the master Satellite. Valid with --mount-"
"point only. Required if you want to import org data and channel permissions."
msgstr ""

#: ../satellite_tools/satsync.py:2274
#, python-format
msgid "ERROR: these arguments make no sense in this context (try --help): %s"
msgstr ""

#. An SQL error is fatal... crash and burn
#: ../satellite_tools/satsync.py:2286
#, python-format
msgid "ERROR: Can't connect to the database: %s"
msgstr ""

#: ../satellite_tools/satsync.py:2287
msgid "ERROR: Check if your database is running."
msgstr ""

#: ../satellite_tools/satsync.py:2322
#, python-format
msgid "ERROR: --debug-level takes an in integer value within the range %s."
msgstr ""

#: ../satellite_tools/satsync.py:2324
msgid "  0  - little logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2325
msgid "  1  - minimal logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2326
msgid "  2  - normal level of logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2327
msgid "  3  - lots of logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2328
msgid "  4+ - excessive logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2341
msgid "ERROR: The --master option is only valid with the --mount-point option"
msgstr ""

#: ../satellite_tools/satsync.py:2351
#, python-format
msgid "ERROR: Unable to lookup Org Id %s"
msgstr ""

#: ../satellite_tools/satsync.py:2360
msgid ""
"WARNING: --list-channels option overrides any --step option. --step ignored."
msgstr ""

#: ../satellite_tools/satsync.py:2375
#, python-format
msgid ""
"ERROR: '%s' is not a valid step. See 'man mgr-inter-sync' for more detail."
msgstr ""

#: ../satellite_tools/satsync.py:2407
msgid ""
"ERROR: No channels currently imported; try mgr-inter-sync --list-channels; "
"then mgr-inter-sync -c chn0 -c chn1..."
msgstr ""

#. int(None) --> TypeError
#. int('a')  --> ValueError
#: ../satellite_tools/satsync.py:2457 ../satellite_tools/satsync.py:2461
msgid "ERROR: --batch-size must have a value within the range: 1..50"
msgstr ""

#: ../satellite_tools/satsync.py:2469
#, python-format
msgid "ERROR: no such directory %s"
msgstr ""

#: ../satellite_tools/satsync.py:2474
msgid "Error Codes: Returned codes means:"
msgstr ""

#: ../satellite_tools/satsync.py:2475
msgid " -1  - Could not lock file or KeyboardInterrupt or SystemExit"
msgstr ""

#: ../satellite_tools/satsync.py:2476
msgid "  0  - User interrupted or intentional exit"
msgstr ""

#: ../satellite_tools/satsync.py:2477
msgid "  1  - attempting to run more than one instance of mgr-inter-sync."
msgstr ""

#: ../satellite_tools/satsync.py:2478
msgid "  2  - Unable to find synchronization tools."
msgstr ""

#: ../satellite_tools/satsync.py:2479
msgid "  3  - a general socket exception occurred"
msgstr ""

#: ../satellite_tools/satsync.py:2480
msgid "  4  - an SSL error occurred. Recheck your SSL settings."
msgstr ""

#: ../satellite_tools/satsync.py:2481
msgid "  5  - ISS error"
msgstr ""

#: ../satellite_tools/satsync.py:2482
msgid "  6  - unhandled exception occurred"
msgstr ""

#: ../satellite_tools/satsync.py:2483
msgid "  7  - unknown sync error"
msgstr ""

#: ../satellite_tools/satsync.py:2484
msgid "  8  - ERROR: must be root to execute"
msgstr ""

#: ../satellite_tools/satsync.py:2485
msgid "  9  - rpclib fault during synchronization init"
msgstr ""

#: ../satellite_tools/satsync.py:2486
msgid "  10 - synchronization init error"
msgstr ""

#: ../satellite_tools/satsync.py:2487
msgid "  11 - Error parsing XML stream"
msgstr ""

#: ../satellite_tools/satsync.py:2488
msgid "  12 - Channel do not exist"
msgstr ""

#: ../satellite_tools/satsync.py:2489
msgid "  13 - SQL error during importing package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:2490
msgid "  14 - SQL error during linking channel packages"
msgstr ""

#: ../satellite_tools/satsync.py:2491
msgid "  15 - SQL error during xml processing"
msgstr ""

#: ../satellite_tools/satsync.py:2492
msgid "  16 - server.mount_point not set in the configuration file"
msgstr ""

#: ../satellite_tools/satsync.py:2493
msgid ""
"  17 - SQL error during retrieving the channels already imported in the SUSE "
"Manager database"
msgstr ""

#: ../satellite_tools/satsync.py:2494
msgid "  18 - Wrong db connection string in rhn.conf"
msgstr ""

#: ../satellite_tools/satsync.py:2495
msgid "  19 - Bad arguments"
msgstr ""

#: ../satellite_tools/satsync.py:2496
msgid "  20 - Could not connect to db."
msgstr ""

#: ../satellite_tools/satsync.py:2497
msgid "  21 - Bad debug level"
msgstr ""

#: ../satellite_tools/satsync.py:2498
msgid "  22 - Not valid step"
msgstr ""

#: ../satellite_tools/satsync.py:2499
msgid "  24 - no such file"
msgstr ""

#: ../satellite_tools/satsync.py:2500
msgid "  25 - no such directory"
msgstr ""

#: ../satellite_tools/satsync.py:2501
msgid "  26 - mount_point does not exist"
msgstr ""

#: ../satellite_tools/satsync.py:2502
msgid "  27 - No such org"
msgstr ""

#: ../satellite_tools/satsync.py:2503
msgid "  28 - error: --master is only valid with --mount-point"
msgstr ""

#: ../satellite_tools/satsync.py:2510
#, python-format
msgid "ERROR: unknown dump version, try one of %s"
msgstr ""
07070100000092000081B40000000000000000000000016290A0C10000B61C000000000000000000000000000000000000001B00000000spacewalk-backend/po/tg.po    # SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
#
# Translators:
msgid ""
msgstr ""
"Project-Id-Version: Spacewalk\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-10-16 13:34+0200\n"
"PO-Revision-Date: 2011-03-04 16:08+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Tajik (http://www.transifex.com/projects/p/fedora/language/"
"tg/)\n"
"Language: tg\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"

#: ../server/apacheAuth.py:66
#, python-format
msgid "incomplete proxy authentication token: %s"
msgstr ""

#: ../server/apacheAuth.py:84
#, python-format
msgid "Sent proxy signature %s does not match ours %s."
msgstr ""

#: ../server/apacheAuth.py:119
msgid "declined proxy authentication"
msgstr ""

#: ../server/apacheRequest.py:59
#, python-format
msgid "Invalid request received (%s)."
msgstr ""

#: ../server/apacheRequest.py:120
#, python-format
msgid ""
"IMPORTANT MESSAGE FOLLOWS:\n"
"%s"
msgstr ""

#: ../server/apacheRequest.py:149
#, python-format
msgid ""
"While running '%s': caught\n"
"%s : %s\n"
msgstr ""

#: ../server/apacheRequest.py:606
#, python-format
msgid "Invalid URI %s"
msgstr ""

#: ../server/configFilesHandler.py:129 ../server/handlers/app/packages.py:192
#: ../server/handlers/xmlrpc/registration.py:215
#: ../server/handlers/xmlrpc/registration.py:1168
#: ../server/handlers/xmlrpc/registration.py:1307
#, python-format
msgid ""
"\n"
"                   %s Account has been deactivated on this server.\n"
"                   Please contact your Org administrator for more help."
msgstr ""

#: ../server/handlers/applet/applet.py:78
#, python-brace-format
msgid "Your system was not found in the {PRODUCT_NAME} database"
msgstr ""

#: ../server/handlers/sat/auth.py:45
msgid "ISS is disabled on this server."
msgstr ""

#: ../server/handlers/sat/auth.py:50
#, python-format
msgid "Server \"%s\" is not enabled for ISS."
msgstr ""

#: ../server/handlers/xmlrpc/errata.py:64
#, python-format
msgid "Expected a package name, not: %s"
msgstr ""

#: ../server/handlers/xmlrpc/errata.py:115
#, python-format
msgid "Expected a package, not: %s"
msgstr ""

#: ../server/handlers/xmlrpc/proxy.py:65
#, python-format
msgid "SUSE Manager Proxy service not enabled for server profile: \"%s\""
msgstr ""

#: ../server/handlers/xmlrpc/proxy.py:85
msgid "Invalid session key"
msgstr ""

#: ../server/handlers/xmlrpc/proxy.py:93
msgid "This server ID no longer exists"
msgstr ""

#: ../server/handlers/xmlrpc/queue.py:433
#, python-format
msgid "Invalid action value type %s (%s)"
msgstr ""

#: ../server/handlers/xmlrpc/queue.py:464
#, python-format
msgid "Action %s does not belong to server %s"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:194
msgid "Required data missing"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:198
msgid "Required members missing"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:207
msgid "Attempt to register a system to an invalid username"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:839
msgid "Invalid system release version requested"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1063
msgid ""
"Unable to find a valid network interface, both ipaddr and ip6addr not found."
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1115
#, python-brace-format
msgid "{PRODUCT_NAME} Welcome Message"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1125
msgid "Privacy Statement"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1146
msgid "Expected a dictionary as a product argument"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1374
#, python-format
msgid "Invalid value '%s' for %s (%s)"
msgstr ""

#: ../server/handlers/xmlrpc/scap.py:104
msgid "Invalid system_id/action_id pair."
msgstr ""

#: ../server/handlers/xmlrpc/up2date.py:233
#, python-format
msgid "Invalid value %s (%s)"
msgstr ""

#: ../server/importlib/userAuth.py:98
msgid "You are not authorized to manage packages in the null org"
msgstr ""

#: ../server/importlib/userAuth.py:103
#, python-format
msgid "You are not allowed to manage packages in the %s org"
msgstr ""

#: ../server/importlib/userAuth.py:121
msgid "You are not allowed to perform administrative tasks"
msgstr ""

#: ../server/importlib/userAuth.py:144
#, python-format
msgid ""
"You are not allowed to manage channel %s, or that channel does not exist"
msgstr ""

#: ../server/importlib/userAuth.py:204
#, python-format
msgid ""
"\n"
"               %s Account has been deactivated on this server.\n"
"               Please contact your Org administrator for more help."
msgstr ""

#: ../server/rhnChannel.py:1992
#, python-format
msgid ""
"Your account does not have access to any channels matching "
"(release='%(release)s', arch='%(arch)s')%(www_activation)s"
msgstr ""

#: ../server/rhnChannel.py:2002
msgid ""
"\n"
"If you have a registration number, please register with it first at http://"
"www.redhat.com/apps/activate/ and then try again.\n"
"\n"
msgstr ""

#: ../server/rhnChannel.py:2012
#, python-format
msgid "Insufficient subscription permissions for release (%s, %s"
msgstr ""

#. Various messages that can be reused
#.
#. bretm 02/07/2007 -- when we have better old-client documentation, probably
#. will be safe to get rid of all this crap
#: ../server/rhnChannel.py:2276 ../server/rhnChannel.py:2287
#: ../server/rhnChannel.py:2302
msgid "System Registered but Inactive"
msgstr ""

#: ../server/rhnChannel.py:2277
#, python-format
msgid ""
"\n"
"Invalid Architecture and OS release combination (%s, %s).\n"
"Your system has been registered, but will not receive updates\n"
"because it is not subscribed to a channel. If you have not yet\n"
"activated your product for service, please visit our website at:\n"
"\n"
"     http://www.redhat.com/apps/activate/\n"
"\n"
"...to activate your product."
msgstr ""

#: ../server/rhnChannel.py:2288
#, python-format
msgid ""
"\n"
"Invalid Architecture and OS release combination (%s, %s).\n"
"Your system has been registered, but will not receive updates\n"
"because it could not be subscribed to a base channel.\n"
"Please contact your organization administrator for assistance.\n"
msgstr ""

#: ../server/rhnChannel.py:2295
#, python-format
msgid ""
"\n"
"  This system has been successfully registered, but is not yet entitled\n"
"  to service.  To entitle this system to service, login to the web site at:\n"
"\n"
"  %(entitlement_url)s\n"
msgstr ""

#: ../server/rhnChannel.py:2303
#, python-format
msgid ""
"\n"
"  This system has been successfully registered, but no service entitlements\n"
"  were available.  To entitle this system to service, login to the web site "
"at:\n"
"\n"
"  %(entitlement_url)s\n"
msgstr ""

#: ../server/rhnHandler.py:62
msgid "Please run rhn_register as root on this client"
msgstr ""

#: ../server/rhnHandler.py:75
#, python-format
msgid "Service not enabled for system profile: \"%s\""
msgstr ""

#: ../server/rhnPackage.py:49 ../server/rhnPackage.py:87
#: ../server/rhnPackage.py:107 ../server/rhnPackage.py:158
#, python-format
msgid "Invalid RPM package %s requested"
msgstr ""

#: ../server/rhnPackage.py:112
msgid "Package not found"
msgstr ""

#: ../server/rhnServer/server_class.py:97
#, python-format
msgid "Architecture `%s' is not supported"
msgstr ""

#: ../server/rhnServer/server_token.py:78
#, python-format
msgid "Token `%s' has more than one base channel assigned"
msgstr ""

#: ../server/rhnServer/server_token.py:80
msgid "Conflicting base channels"
msgstr ""

#: ../server/rhnServer/server_token.py:190
#, python-format
msgid "Failed to add server to group %s"
msgstr ""

#: ../server/rhnServer/server_token.py:503
#, python-format
msgid "Maximum usage count of %s reached"
msgstr ""

#: ../server/rhnServer/server_token.py:744
msgid ""
"Stacking of re-registration tokens with different base entitlements is not "
"supported"
msgstr ""

#: ../server/rhnServer/server_token.py:811
#, python-format
msgid "Could not find token '%s'"
msgstr ""

#. Cannot use activation keys from different orgs
#: ../server/rhnServer/server_token.py:843
msgid "Tokens from mismatching orgs"
msgstr ""

#. Two tokens with different kickstart sessions
#: ../server/rhnServer/server_token.py:853
msgid "Kickstart session mismatch"
msgstr ""

#: ../server/rhnServer/server_token.py:877
msgid "Stacking of re-registration tokens is not supported"
msgstr ""

#: ../server/rhnUser.py:289 ../server/rhnUser.py:292
msgid "Invalid username/password combination"
msgstr ""

#. nope, not reserved either
#: ../server/rhnUser.py:467
#, python-format
msgid "Username `%s' has not been reserved"
msgstr ""

#. New accounts have to specify an e-mail address
#: ../server/rhnUser.py:473
msgid "E-mail address not specified"
msgstr ""

#: ../server/rhnUser.py:509
#, python-format
msgid "username should be at least %d characters"
msgstr ""

#: ../server/rhnUser.py:512
#, python-format
msgid "username should be less than %d characters"
msgstr ""

#: ../server/rhnUser.py:523
#, python-format
msgid "username = `%s', invalid character `%s'"
msgstr ""

#: ../server/rhnUser.py:542
#, python-format
msgid "Please limit your e-mail address to %s chars"
msgstr ""

#: ../server/rhnUser.py:623
#, python-format
msgid "password must be at least %d characters"
msgstr ""

#: ../server/rhnUser.py:626
#, python-format
msgid "Password must be shorter than %d characters"
msgstr ""

#: ../server/rhnUser.py:644
#, python-format
msgid "password contains character `%s'"
msgstr ""

#: ../server/rhnUser.py:651
#, python-format
msgid "username should be at least %d characters long"
msgstr ""

#: ../server/rhnUser.py:662
#, python-format
msgid "Cannot register usernames ending with %s"
msgstr ""

#. 0-999: Red Hat client/client-like interaction errors:
#: ../common/rhnException.py:53
msgid "This does not appear to be a valid username."
msgstr ""

#: ../common/rhnException.py:54
msgid "Invalid username and password combination."
msgstr ""

#: ../common/rhnException.py:55
msgid "This login is already taken, or the password is incorrect."
msgstr ""

#: ../common/rhnException.py:56
msgid "Permission denied."
msgstr ""

#: ../common/rhnException.py:57
msgid "Object not found."
msgstr ""

#: ../common/rhnException.py:58
msgid "Invalid System Digital ID."
msgstr ""

#: ../common/rhnException.py:59
msgid "Invalid System Credentials."
msgstr ""

#: ../common/rhnException.py:60
msgid "Could not retrieve user data from database."
msgstr ""

#: ../common/rhnException.py:61
msgid "Valid username required."
msgstr ""

#: ../common/rhnException.py:62
msgid "Valid password required."
msgstr ""

#: ../common/rhnException.py:63
msgid "Minimum username length violation."
msgstr ""

#: ../common/rhnException.py:64
msgid "Minimum password length violation."
msgstr ""

#: ../common/rhnException.py:65
msgid "The username contains invalid characters."
msgstr ""

#: ../common/rhnException.py:66
msgid "File not found."
msgstr ""

#: ../common/rhnException.py:67
msgid "Architecture and OS version combination is not supported."
msgstr ""

#: ../common/rhnException.py:68
msgid "Could not retrieve system data from database."
msgstr ""

#: ../common/rhnException.py:69
msgid "Invalid arguments passed to function."
msgstr ""

#: ../common/rhnException.py:70
msgid "Unable to retrieve requested entry."
msgstr ""

#: ../common/rhnException.py:71
msgid "Could not update database entry."
msgstr ""

#: ../common/rhnException.py:72
msgid "Unsupported server architecture."
msgstr ""

#: ../common/rhnException.py:73
#, python-format
msgid ""
"\n"
"     The anonymous server functionality is no longer available.\n"
"\n"
"     Please re-register this system by running mgr_register as root.\n"
"     Please visit https://%(hostname)s/rhn/systems/SystemEntitlements.do\n"
"     or login at https://%(hostname)s, and from the \"Overview\" tab,\n"
"     select \"Subscription Management\" to enable the service for this "
"system.\n"
"     "
msgstr ""

#: ../common/rhnException.py:81
msgid "Record not available in the database."
msgstr ""

#: ../common/rhnException.py:82
msgid "Invalid value for entry."
msgstr ""

#: ../common/rhnException.py:83
#, python-format
msgid ""
"\n"
"     This system does not have a valid entitlement for SUSE Manager.\n"
"     Please visit https://%(hostname)s/rhn/systems/SystemEntitlements.do\n"
"     or login at https://%(hostname)s, and from the \"Overview\" tab,\n"
"     select \"Subscription Management\" to enable the service for this "
"system.\n"
"     "
msgstr ""

#: ../common/rhnException.py:89
msgid "Channel error"
msgstr ""

#: ../common/rhnException.py:90
msgid "Client session token is invalid."
msgstr ""

#: ../common/rhnException.py:91
msgid "Client session token has expired."
msgstr ""

#: ../common/rhnException.py:92
msgid "You are not authorized to retrieve the requested object."
msgstr ""

#: ../common/rhnException.py:93
msgid "Invalid action"
msgstr ""

#: ../common/rhnException.py:94
msgid "You are not allowed to perform administrative tasks on this system."
msgstr ""

#: ../common/rhnException.py:96
msgid "The system is already subscribed to the specified channel."
msgstr ""

#: ../common/rhnException.py:97
msgid "The system is not currently subscribed to the specified channel."
msgstr ""

#: ../common/rhnException.py:98
msgid "The specified channel does not exist."
msgstr ""

#: ../common/rhnException.py:99
msgid "Invalid channel version."
msgstr ""

#: ../common/rhnException.py:100
msgid ""
"\n"
"     User group membership limits exceeded.\n"
"\n"
"     The current settings for your account do not allow you to add another\n"
"     user account. Please check with the organization administrator for "
"your\n"
"     account if the maximum number of users allowed to subscribe to server "
"needs\n"
"     to be changed.\n"
"     "
msgstr ""

#: ../common/rhnException.py:108
msgid ""
"\n"
"     System group membership limits exceeded.\n"
"\n"
"     The current settings for your account do not allow you to add another\n"
"     system profile. Please check with the organization administrator for "
"your\n"
"     account for modifying the maximum number of system profiles that can "
"be\n"
"     subscribed to your account.\n"
"     "
msgstr ""

#: ../common/rhnException.py:116
msgid ""
"\n"
"     Invalid architecture.\n"
"\n"
"     The architecture of the package is not supported by\n"
"     "
msgstr ""

#: ../common/rhnException.py:121
msgid "Invalid RPM header"
msgstr ""

#: ../common/rhnException.py:122
msgid ""
"\n"
"    This system is already registered as a Salt Minion. If you want to "
"register it as a traditional client\n"
"    please delete it first via the web UI or API and then register it using "
"the traditional tools.\n"
"    "
msgstr ""

#. For the uploading tools
#: ../common/rhnException.py:127
msgid "Invalid information uploaded to the server"
msgstr ""

#: ../common/rhnException.py:128
msgid "Error uploading network interfaces configuration."
msgstr ""

#: ../common/rhnException.py:129
msgid ""
"\n"
"     Package Upload Failed due to uniqueness constraint violation.\n"
"     Make sure the package does not have any duplicate dependencies or\n"
"     does not already exists on the server\n"
"     "
msgstr ""

#: ../common/rhnException.py:134
msgid ""
"\n"
"     The --force rhnpush option is disabled on this server.\n"
"     Please contact your SUSE Manager administrator for more help.\n"
"     "
msgstr ""

#. 60-70: token errors
#: ../common/rhnException.py:140
msgid ""
"\n"
"     The activation token specified could not be found on the server.\n"
"     Please retry with a valid key.\n"
"     "
msgstr ""

#: ../common/rhnException.py:144
msgid "Too many systems registered using this registration token"
msgstr ""

#: ../common/rhnException.py:145
msgid "Token contains invalid, obsoleted or insufficient settings"
msgstr ""

#: ../common/rhnException.py:146
msgid "Conflicting activation tokens"
msgstr ""

#. 70-80: channel subscription errors
#: ../common/rhnException.py:149
msgid ""
"\n"
"     No matching base channel found for your system.\n"
"     "
msgstr ""

#: ../common/rhnException.py:152
msgid ""
"\n"
"     You do not have subscription permission to the designated channel.\n"
"     Please refer to your organization's channel or organization\n"
"     administrators for further details.\n"
"     "
msgstr ""

#: ../common/rhnException.py:157
msgid "You can not unsubscribe from base channel."
msgstr ""

#: ../common/rhnException.py:158
msgid "SUSE Manager or Proxy channel can not be subscribed."
msgstr ""

#. 80-90: server group errors
#: ../common/rhnException.py:161
msgid "There was an error while trying to join the system to its groups"
msgstr ""

#. 90-100: entitlement errors
#: ../common/rhnException.py:164
msgid "Unable to entitle system"
msgstr ""

#. 100-109: e-mail and uuid related faults
#: ../common/rhnException.py:167
msgid "Maximum e-mail length violation."
msgstr ""

#: ../common/rhnException.py:168
msgid "This system has been previously registered."
msgstr ""

#: ../common/rhnException.py:169
msgid "Invalid username"
msgstr ""

#. 140-159 applet errors
#: ../common/rhnException.py:172
msgid "Unable to look up server"
msgstr ""

#. 160-179: OSAD errors
#: ../common/rhnException.py:175
msgid "Required argument is missing"
msgstr ""

#. 600-699: RHEL5+ EN errors
#: ../common/rhnException.py:178
msgid "No entitlement information tied to hardware"
msgstr ""

#: ../common/rhnException.py:179
msgid "Installation number is not entitling"
msgstr ""

#. 700-799: Additional user input verification errors.
#: ../common/rhnException.py:182
msgid "Maximum username length violation"
msgstr ""

#: ../common/rhnException.py:183
msgid "Maximum password length violation"
msgstr ""

#: ../common/rhnException.py:184
msgid "This user has read only API access. Action denied."
msgstr ""

#: ../common/rhnException.py:186
msgid "System Name cannot be less than 1 character"
msgstr ""

#. 1000-1999: Proxy specific errors:
#. issued by a Proxy to the client
#: ../common/rhnException.py:190
msgid "SUSE Manager Proxy error."
msgstr ""

#: ../common/rhnException.py:191
msgid "SUSE Manager Proxy unable to login."
msgstr ""

#. issued by a SUSE Manager Server/Satellite to the proxy
#: ../common/rhnException.py:193
msgid ""
"\n"
"     SUSE Manager Proxy system ID does not match a Spacewalk Proxy Server\n"
"     in the database.\n"
"     "
msgstr ""

#: ../common/rhnException.py:197
msgid "SUSE Manager Proxy session token is invalid."
msgstr ""

#: ../common/rhnException.py:198
msgid "SUSE Manager Proxy session token has expired."
msgstr ""

#. 2000-2999: Red Hat Satellite specific errors:
#: ../common/rhnException.py:202
msgid ""
"\n"
"      user creation is not allowed via mgr_register;\n"
"     please contact your sysadmin to have your account created.\n"
"     "
msgstr ""

#: ../common/rhnException.py:206
msgid ""
"\n"
"     This SUSE Manager server is not allowed to use Inter Server Sync on "
"this server\n"
"     "
msgstr ""

#: ../common/rhnException.py:209
msgid ""
"\n"
"     Inter Server Sync is disabled on this SUSE Manager Server.\n"
"     "
msgstr ""

#. 3000-3999: XML dumper errors:
#: ../common/rhnException.py:214
msgid "Invalid datatype passed"
msgstr ""

#: ../common/rhnException.py:215
msgid "Unable to retrieve channel"
msgstr ""

#: ../common/rhnException.py:216
msgid "Unable to retrieve package"
msgstr ""

#: ../common/rhnException.py:217
msgid "Unable to retrieve erratum"
msgstr ""

#: ../common/rhnException.py:218
msgid "File is missing"
msgstr ""

#: ../common/rhnException.py:219
msgid "Function retrieval error"
msgstr ""

#: ../common/rhnException.py:220
msgid "Function execution error"
msgstr ""

#: ../common/rhnException.py:221
msgid "Missing version string"
msgstr ""

#: ../common/rhnException.py:222
msgid "Invalid version string"
msgstr ""

#: ../common/rhnException.py:223
msgid "Mismatching versions"
msgstr ""

#: ../common/rhnException.py:224
msgid "Invalid channel version"
msgstr ""

#: ../common/rhnException.py:225
msgid "No comps file for channel"
msgstr ""

#: ../common/rhnException.py:226
msgid "Unable to retrieve comps file"
msgstr ""

#. 4000 - 4999: config management errors
#: ../common/rhnException.py:229
msgid "Configuration action missing"
msgstr ""

#: ../common/rhnException.py:230
msgid "File too large"
msgstr ""

#: ../common/rhnException.py:231
msgid "File contains binary data"
msgstr ""

#: ../common/rhnException.py:232
msgid "Configuration channel is not empty"
msgstr ""

#: ../common/rhnException.py:233
msgid "Permission error"
msgstr ""

#: ../common/rhnException.py:234
msgid "Content missing for configuration file"
msgstr ""

#: ../common/rhnException.py:235
msgid "Template delimiters not specified"
msgstr ""

#: ../common/rhnException.py:236
msgid "Configuration channel does not exist"
msgstr ""

#: ../common/rhnException.py:237
msgid "Configuration channel already exists"
msgstr ""

#: ../common/rhnException.py:238
msgid "File missing from configuration channel"
msgstr ""

#: ../common/rhnException.py:239
msgid "Different revision of this file is uploaded"
msgstr ""

#: ../common/rhnException.py:240
msgid "File already uploaded to configuration channel"
msgstr ""

#: ../common/rhnException.py:241
msgid "File size exceeds remaining quota space"
msgstr ""

#: ../common/rhnException.py:242
msgid "Full path of file must be specified"
msgstr ""

#: ../common/rhnException.py:243
msgid "Invalid revision number"
msgstr ""

#: ../common/rhnException.py:244
msgid "Cannot compare files of different file type"
msgstr ""

#. 5000 - 5999: client content uploading errors
#. 5000 - 5099: crash reporting errors
#: ../common/rhnException.py:248
msgid "Crash information is invalid or incomplete"
msgstr ""

#: ../common/rhnException.py:249
msgid "Crash file information is invalid or incomplete"
msgstr ""

#: ../common/rhnException.py:250
msgid "Error composing crash directory path"
msgstr ""

#: ../common/rhnException.py:251
msgid "Error composing crash file path"
msgstr ""

#: ../common/rhnException.py:252 ../common/rhnException.py:259
msgid "Invalid content encoding"
msgstr ""

#: ../common/rhnException.py:253
msgid "Invalid crash name"
msgstr ""

#: ../common/rhnException.py:254
msgid "Crash reporting is disabled for this organization"
msgstr ""

#. 5100 - 5199: scap results reporting error
#: ../common/rhnException.py:256
msgid "SCAP results file transfer is invalid or incomplete"
msgstr ""

#: ../common/rhnException.py:257
msgid "Error composing directory path for detailed SCAP results"
msgstr ""

#: ../common/rhnException.py:258
msgid "Error composing file path for detailed SCAP results"
msgstr ""

#: ../common/rhnException.py:306
msgid ""
"\n"
"     An error has occurred while processing your request. If this problem\n"
"     persists please enter a bug report at scc.suse.com.\n"
"     If you choose to submit the bug report, please be sure to include\n"
"     details of what you were trying to do when this error occurred and\n"
"     details on how to reproduce this problem.\n"
msgstr ""

#: ../common/rhnException.py:358
#, python-format
msgid ""
"Error Message:\n"
"    %s\n"
msgstr ""

#: ../common/rhnException.py:360
#, python-format
msgid "Error Class Code: %s\n"
msgstr ""

#: ../common/rhnException.py:363
#, python-format
msgid "Error Class Info: %s\n"
msgstr ""

#: ../common/rhnException.py:365
#, python-format
msgid "Explanation: %s"
msgstr ""

#: ../common/rhnTB.py:205
#, python-format
msgid "ERROR: %s %s: %s"
msgstr ""

#: ../common/rhnTB.py:207
#, python-format
msgid "TRACEBACK: %s"
msgstr ""

#: ../satellite_tools/disk_dumper/iss.py:1294
#: ../satellite_tools/disk_dumper/iss.py:1298
#, python-format
msgid "format of %s should be at least YYYYMMDD.\n"
msgstr ""

#: ../satellite_tools/messages.py:26
#, python-format
msgid ""
"\n"
"ERROR: executing step %s. Error is:\n"
"%s\n"
msgstr ""

#: ../satellite_tools/messages.py:31
#, python-format
msgid ""
"\n"
"ERROR: there was a problem accessing the channel data from your temporary\n"
"       repository. Did you migrate all of the data from the channel ISOs\n"
"       do this directory? If so, please recheck the channels ISOs, ensure\n"
"       that you have them all, and then iteratively remount and repopulate\n"
"       the temporary repository (%s).\n"
msgstr ""

#: ../satellite_tools/messages.py:39
#, python-format
msgid ""
"\n"
"ERROR: there was a problem synchronizing the information.\n"
"       Error message: %s\n"
msgstr ""

#: ../satellite_tools/messages.py:44
#, python-format
msgid ""
"\n"
"ERROR: There was a problem communicating with the ISS Master.\n"
"       Depending on the specific error details, please review your "
"configuration,\n"
"       basic network connectivity, and/or name resolution, and try again.\n"
"       Error message: %s\n"
msgstr ""

#: ../satellite_tools/messages.py:51
#, python-format
msgid ""
"\n"
"ERROR: There was a problem communicating with the ISS Master.\n"
"       If the master satellite is older than v5.3, it does not have ISS "
"capability.\n"
"       Otherwise, depending on the specific error details, please review "
"your\n"
"       configuration, basic network connectivity, and/or name resolution, "
"and try again.\n"
"       Error message: %s\n"
msgstr ""

#: ../satellite_tools/messages.py:59
#, python-format
msgid ""
"\n"
"ERROR: a child-channel cannot be synced without its parent being synced as\n"
"       well. A parent needs to be either (a) previously synced or (b) "
"synced\n"
"       in tandem with the desired child-channel. Missing parents for this\n"
"       transaction:\n"
"       %s\n"
msgstr ""

#: ../satellite_tools/messages.py:67
#, python-format
msgid ""
"\n"
"ERROR: you are not entitled to sync a channel in this set of channels.\n"
"Please contact your SUSE Manager contact\n"
"%s"
msgstr ""

#: ../satellite_tools/messages.py:72
#, python-format
msgid "  ERROR: not enough free space (%s KB) on device."
msgstr ""

#: ../satellite_tools/messages.py:74
#, python-format
msgid "    %3d/%s Fetch successful: %s (%s bytes)"
msgstr ""

#: ../satellite_tools/messages.py:75
#, python-format
msgid "    Extinct package:  %s"
msgstr ""

#: ../satellite_tools/messages.py:76
#, python-format
msgid "   Total size: %s"
msgstr ""

#: ../satellite_tools/messages.py:77
#, python-format
msgid "      Downloaded %s of %s. Estimated remaining time: %s"
msgstr ""

#: ../satellite_tools/messages.py:78
#, python-format
msgid "    Fetch unsuccessful: %s"
msgstr ""

#: ../satellite_tools/messages.py:79
#, python-format
msgid "   RPM fetch summary: %s"
msgstr ""

#: ../satellite_tools/messages.py:80
#, python-format
msgid "       success: %d"
msgstr ""

#: ../satellite_tools/messages.py:81
#, python-format
msgid "       failed:  %d"
msgstr ""

#: ../satellite_tools/messages.py:82
#, python-format
msgid "       extinct: %d"
msgstr ""

#: ../satellite_tools/messages.py:84
#, python-format
msgid "   Retrieving / parsing *relevant* package metadata: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:85
#, python-format
msgid "   Retrieving / parsing errata data: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:86
#, python-format
msgid "   Retrieving / parsing kickstart data: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:87
#, python-format
msgid "   Retrieving / parsing kickstart tree files: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:88
#, python-format
msgid "   Importing *relevant* package metadata: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:89
msgid "   * WARNING: this may be a slow process."
msgstr ""

#: ../satellite_tools/messages.py:90
msgid "Linking packages to channels"
msgstr ""

#: ../satellite_tools/messages.py:91
#, python-format
msgid "   Importing *relevant* errata: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:92
msgid "   No new kickstartable tree to import"
msgstr ""

#: ../satellite_tools/messages.py:93
#, python-format
msgid "Importing kickstartable trees (%d)"
msgstr ""

#: ../satellite_tools/messages.py:94
#, python-format
msgid "Imported kickstartable trees (%d)"
msgstr ""

#: ../satellite_tools/reposync.py:111 ../satellite_tools/satsync.py:439
msgid "+++ sending log as an email +++"
msgstr ""

#: ../satellite_tools/reposync.py:114
#, python-format
msgid "%s sync. report from %s"
msgstr ""

#: ../satellite_tools/reposync.py:124 ../satellite_tools/satsync.py:449
msgid "+++ email requested, but there is nothing to send +++"
msgstr ""

#: ../satellite_tools/rhn_satellite_activate.py:198
#, python-format
msgid ""
"\"%s\" (specified in commandline)\n"
"could not be opened and read:\n"
"%s"
msgstr ""

#: ../satellite_tools/rhn_satellite_activate.py:205
#, python-format
msgid ""
"\"%s\" could not be opened\n"
"and/or written to:\n"
"%s"
msgstr ""

#: ../satellite_tools/satsync.py:258
#, python-format
msgid "No handler for step %s"
msgstr ""

#. Try one more time - this time it should be faster since
#. everything should be cached
#: ../satellite_tools/satsync.py:270
msgid "Environment changed, trying again..."
msgstr ""

#: ../satellite_tools/satsync.py:277
msgid "ERROR: Encountered IntegrityError: \n"
msgstr ""

#: ../satellite_tools/satsync.py:285
msgid "Repeated failures"
msgstr ""

#: ../satellite_tools/satsync.py:290
#, python-format
msgid ""
"    Import complete:\n"
"        Begin time: %s\n"
"        End time:   %s\n"
"        Elapsed:    %s\n"
"          "
msgstr ""

#: ../satellite_tools/satsync.py:311
msgid "hours"
msgstr ""

#: ../satellite_tools/satsync.py:311
msgid "minutes"
msgstr ""

#: ../satellite_tools/satsync.py:311
msgid "seconds"
msgstr ""

#: ../satellite_tools/satsync.py:357
msgid ""
"ERROR: The dump is missing package data, use --no-rpms to skip this step or "
"fix the content to include package data."
msgstr ""

#. the orgs() method doesn't exist; that's fine we just
#. won't sync the orgs
#: ../satellite_tools/satsync.py:404
msgid "The SUSE Manager master does not support syncing orgs data."
msgstr ""

#: ../satellite_tools/satsync.py:404
msgid "Skipping..."
msgstr ""

#: ../satellite_tools/satsync.py:442
#, python-format
msgid "SUSE Manager Inter Server sync. report from %s"
msgstr ""

#: ../satellite_tools/satsync.py:521
msgid " - file-system synchronization"
msgstr ""

#: ../satellite_tools/satsync.py:533 ../satellite_tools/satsync.py:541
msgid " - live synchronization"
msgstr ""

#: ../satellite_tools/satsync.py:534
#, python-brace-format
msgid ""
"ERROR: Live content synchronizing with RHN Classic Hosted is no longer "
"supported.\n"
"Please use the cdn-sync command instead unless you are attempting to sync "
"from another {PRODUCT_NAME} via Inter-Server-Sync (ISS), or from local "
"content on disk via Channel Dump ISOs."
msgstr ""

#: ../satellite_tools/satsync.py:542
#, python-format
msgid "   url: %s"
msgstr ""

#: ../satellite_tools/satsync.py:543
#, python-format
msgid "   debug/output level: %s"
msgstr ""

#: ../satellite_tools/satsync.py:553
msgid "ERROR: this server must be registered with SUSE Manager."
msgstr ""

#: ../satellite_tools/satsync.py:575
#, python-format
msgid "Retrieving / parsing %s data"
msgstr ""

#: ../satellite_tools/satsync.py:585 ../satellite_tools/satsync.py:600
msgid "*** SYSTEM INTERRUPT CALLED ***"
msgstr ""

#: ../satellite_tools/satsync.py:593
msgid "ERROR: fatal parser exception occurred "
msgstr ""

#: ../satellite_tools/satsync.py:594
#, python-format
msgid "(line: %s, col: %s msg: %s)"
msgstr ""

#: ../satellite_tools/satsync.py:598
#, python-format
msgid "ERROR: parser exception occurred: %s"
msgstr ""

#: ../satellite_tools/satsync.py:603
msgid "ERROR: exception (during parse) occurred: "
msgstr ""

#: ../satellite_tools/satsync.py:604
#, python-format
msgid ""
"   Encountered some errors with %s data (see logs (%s) for more information)"
msgstr ""

#: ../satellite_tools/satsync.py:606
#, python-format
msgid "   Encountered some errors with %s data:"
msgstr ""

#: ../satellite_tools/satsync.py:607
#, python-format
msgid "   ------- %s PARSE/IMPORT ERROR -------"
msgstr ""

#: ../satellite_tools/satsync.py:609
msgid "   ---------------------------------------"
msgstr ""

#: ../satellite_tools/satsync.py:612
#, python-format
msgid "%s data complete"
msgstr ""

#: ../satellite_tools/satsync.py:665
msgid "Retrieving / parsing channel data"
msgstr ""

#: ../satellite_tools/satsync.py:718
msgid "Channel data complete"
msgstr ""

#: ../satellite_tools/satsync.py:736
#, python-format
msgid "%10s import from %s"
msgstr ""

#: ../satellite_tools/satsync.py:739
#, python-format
msgid "%10s import from %s - %s"
msgstr ""

#: ../satellite_tools/satsync.py:743
#, python-format
msgid "%10s"
msgstr ""

#: ../satellite_tools/satsync.py:750
msgid "p"
msgstr ""

#: ../satellite_tools/satsync.py:752
msgid "."
msgstr ""

#: ../satellite_tools/satsync.py:758
msgid "   p = previously imported/synced channel"
msgstr ""

#: ../satellite_tools/satsync.py:759
msgid "   . = channel not yet imported/synced"
msgstr ""

#: ../satellite_tools/satsync.py:765
msgid "   e = channel no longer supported (end-of-service)"
msgstr ""

#: ../satellite_tools/satsync.py:767
msgid "   ? = channel label invalid --- typo?"
msgstr ""

#: ../satellite_tools/satsync.py:771
#, python-format
msgid "   %s:"
msgstr ""

#: ../satellite_tools/satsync.py:772
#, python-format
msgid "      %s %-40s %4s %s"
msgstr ""

#: ../satellite_tools/satsync.py:773
msgid "base-channels"
msgstr ""

#: ../satellite_tools/satsync.py:786 ../satellite_tools/satsync.py:1603
msgid "NONE RELEVANT"
msgstr ""

#: ../satellite_tools/satsync.py:808
msgid "end-of-service"
msgstr ""

#: ../satellite_tools/satsync.py:809
msgid "e"
msgstr ""

#: ../satellite_tools/satsync.py:815
msgid "   typos:"
msgstr ""

#: ../satellite_tools/satsync.py:816
msgid "?"
msgstr ""

#: ../satellite_tools/satsync.py:831
#, python-format
msgid "XXX: imported channels: %s"
msgstr ""

#: ../satellite_tools/satsync.py:832
#, python-format
msgid "XXX:   cached channels: %s"
msgstr ""

#: ../satellite_tools/satsync.py:837
msgid "XXX: list channels called"
msgstr ""

#: ../satellite_tools/satsync.py:855
msgid "ERROR: these channels either do not exist or are not available:"
msgstr ""

#: ../satellite_tools/satsync.py:859
#, python-format
msgid "       (to see a list of channel labels: %s --list-channels)"
msgstr ""

#: ../satellite_tools/satsync.py:904
#, python-format
msgid "   Retrieving / parsing short package metadata: %s (%s)"
msgstr ""

#: ../satellite_tools/satsync.py:965
#, python-format
msgid "Diffing package metadata (what's missing locally?): %s"
msgstr ""

#: ../satellite_tools/satsync.py:971 ../satellite_tools/satsync.py:1254
msgid "Diffing:    "
msgstr ""

#: ../satellite_tools/satsync.py:988
msgid "ERROR: incremental dump skipped"
msgstr ""

#: ../satellite_tools/satsync.py:1079
msgid "Downloading rpm packages"
msgstr ""

#: ../satellite_tools/satsync.py:1084
#, python-format
msgid "   Fetching any missing RPMs: %s (%s)"
msgstr ""

#: ../satellite_tools/satsync.py:1085 ../satellite_tools/satsync.py:1153
msgid "NONE MISSING"
msgstr ""

#: ../satellite_tools/satsync.py:1094
msgid "Processing rpm packages complete"
msgstr ""

#: ../satellite_tools/satsync.py:1121
msgid "Downloading package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1146
msgid "Downloading srpm packages"
msgstr ""

#: ../satellite_tools/satsync.py:1152
#, python-format
msgid "   Fetching any missing SRPMs: %s (%s)"
msgstr ""

#: ../satellite_tools/satsync.py:1249
#, python-format
msgid "Diffing source package metadata (what's missing locally?): %s"
msgstr ""

#: ../satellite_tools/satsync.py:1260
msgid "Downloading source package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1338 ../satellite_tools/satsync.py:2027
#, python-format
msgid "Unable to save file %s: %s"
msgstr ""

#. for
#. Retried a number of times and it still failed; log the
#. file as being failed and move on
#: ../satellite_tools/satsync.py:1345
#, python-format
msgid "Failed to fetch file %s"
msgstr ""

#: ../satellite_tools/satsync.py:1350
msgid "Downloading kickstartable trees metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1365
msgid "Downloading kickstartable trees files"
msgstr ""

#: ../satellite_tools/satsync.py:1504
#, python-format
msgid "Grabbing all patches for channel %s"
msgstr ""

#: ../satellite_tools/satsync.py:1554
msgid "Downloading patch data"
msgstr ""

#: ../satellite_tools/satsync.py:1556
msgid "Forcing download of all patch data for requested channels."
msgstr ""

#: ../satellite_tools/satsync.py:1571
msgid "Downloading patch data complete"
msgstr ""

#: ../satellite_tools/satsync.py:1576 ../satellite_tools/satsync.py:1597
msgid "Downloading:"
msgstr ""

#: ../satellite_tools/satsync.py:1579
msgid " - complete"
msgstr ""

#: ../satellite_tools/satsync.py:1624
msgid "Importing source package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1627
msgid "Importing package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1635
msgid "Importing:  "
msgstr ""

#. not in the cache
#: ../satellite_tools/satsync.py:1703
msgid ""
"Package Not Found in Cache, Clear the Cache "
"to                                  Regenerate it."
msgstr ""

#: ../satellite_tools/satsync.py:1709
msgid "Importing channel patches"
msgstr ""

#: ../satellite_tools/satsync.py:1714
#, python-format
msgid "Importing %s patches for channel %s."
msgstr ""

#. Incomplete configuration
#: ../satellite_tools/satsync.py:2113
msgid "ERROR: server.mount_point not set in the configuration file"
msgstr ""

#: ../satellite_tools/satsync.py:2117
#, python-format
msgid "ERROR: server.mount_point %s do not exist"
msgstr ""

#: ../satellite_tools/satsync.py:2122
#, python-format
msgid "ERROR: path under server.mount_point (%s)  do not exist"
msgstr ""

#: ../satellite_tools/satsync.py:2199
#, python-format
msgid "Commandline: %s"
msgstr ""

#: ../satellite_tools/satsync.py:2202
#, python-format
msgid ""
"DEBUG ONLY: max. batch-size for XML/database-import processing (1..%s).\"man "
"satellite-sync\" for more information."
msgstr ""

#: ../satellite_tools/satsync.py:2205
msgid "alternative SSL CA Cert (fullpath to cert file)"
msgstr ""

#: ../satellite_tools/satsync.py:2207
msgid "process data for this channel only"
msgstr ""

#: ../satellite_tools/satsync.py:2209
msgid ""
"disk dump will be considered to be a full export; see \"man satellite-sync\" "
"for more information."
msgstr ""

#: ../satellite_tools/satsync.py:2212
msgid "existing custom channels will also be synced (unless -c is used)"
msgstr ""

#: ../satellite_tools/satsync.py:2214
#, python-format
msgid ""
"override debug level set in /etc/rhn/rhn.conf (which is currently set at %s)."
msgstr ""

#: ../satellite_tools/satsync.py:2216
#, python-format
msgid "requested version of XML dump (default: %s)"
msgstr ""

#: ../satellite_tools/satsync.py:2218
msgid "e-mail a report of what was synced/imported"
msgstr ""

#: ../satellite_tools/satsync.py:2220
msgid "forcibly process all (not a diff of) patch metadata"
msgstr ""

#: ../satellite_tools/satsync.py:2222
msgid "Do not use an http proxy under any circumstances."
msgstr ""

#: ../satellite_tools/satsync.py:2224
msgid "alternative http proxy (hostname:port)"
msgstr ""

#: ../satellite_tools/satsync.py:2226
msgid "alternative http proxy username"
msgstr ""

#: ../satellite_tools/satsync.py:2228
msgid "alternative http proxy password"
msgstr ""

#: ../satellite_tools/satsync.py:2230
msgid "parent SUSE Manager to import content from"
msgstr ""

#: ../satellite_tools/satsync.py:2232
msgid "list all available channels and exit"
msgstr ""

#: ../satellite_tools/satsync.py:2234
msgid "help on all error codes mgr-inter-sync returns"
msgstr ""

#: ../satellite_tools/satsync.py:2236
msgid "source mount point for import - disk update only"
msgstr ""

#: ../satellite_tools/satsync.py:2238
msgid "do not process patch data"
msgstr ""

#: ../satellite_tools/satsync.py:2240
msgid "do not process kickstart data (provisioning only)"
msgstr ""

#: ../satellite_tools/satsync.py:2242
msgid "do not process full package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:2244
msgid "do not download, or process any RPMs"
msgstr ""

#: ../satellite_tools/satsync.py:2246
msgid "turn off SSL (not recommended)"
msgstr ""

#: ../satellite_tools/satsync.py:2248
msgid "org to which the sync imports data. defaults to the admin account"
msgstr ""

#: ../satellite_tools/satsync.py:2250
msgid "print the configuration and exit"
msgstr ""

#: ../satellite_tools/satsync.py:2252
msgid "alternative server with which to connect (hostname)"
msgstr ""

#: ../satellite_tools/satsync.py:2254
msgid "synchronize to this step (man satellite-sync for more info)"
msgstr ""

#: ../satellite_tools/satsync.py:2256
msgid "write complete data to tempfile before streaming to remainder of app"
msgstr ""

#: ../satellite_tools/satsync.py:2258
msgid "DEBUG ONLY: alternative path to digital system id"
msgstr ""

#: ../satellite_tools/satsync.py:2260
msgid "alternative email address(es) for sync output (--email option)"
msgstr ""

#: ../satellite_tools/satsync.py:2262
msgid "do not remove rpms when importing from local dump"
msgstr ""

#: ../satellite_tools/satsync.py:2264
msgid ""
"the fully qualified domain name of the master Satellite. Valid with --mount-"
"point only. Required if you want to import org data and channel permissions."
msgstr ""

#: ../satellite_tools/satsync.py:2274
#, python-format
msgid "ERROR: these arguments make no sense in this context (try --help): %s"
msgstr ""

#. An SQL error is fatal... crash and burn
#: ../satellite_tools/satsync.py:2286
#, python-format
msgid "ERROR: Can't connect to the database: %s"
msgstr ""

#: ../satellite_tools/satsync.py:2287
msgid "ERROR: Check if your database is running."
msgstr ""

#: ../satellite_tools/satsync.py:2322
#, python-format
msgid "ERROR: --debug-level takes an in integer value within the range %s."
msgstr ""

#: ../satellite_tools/satsync.py:2324
msgid "  0  - little logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2325
msgid "  1  - minimal logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2326
msgid "  2  - normal level of logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2327
msgid "  3  - lots of logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2328
msgid "  4+ - excessive logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2341
msgid "ERROR: The --master option is only valid with the --mount-point option"
msgstr ""

#: ../satellite_tools/satsync.py:2351
#, python-format
msgid "ERROR: Unable to lookup Org Id %s"
msgstr ""

#: ../satellite_tools/satsync.py:2360
msgid ""
"WARNING: --list-channels option overrides any --step option. --step ignored."
msgstr ""

#: ../satellite_tools/satsync.py:2375
#, python-format
msgid ""
"ERROR: '%s' is not a valid step. See 'man mgr-inter-sync' for more detail."
msgstr ""

#: ../satellite_tools/satsync.py:2407
msgid ""
"ERROR: No channels currently imported; try mgr-inter-sync --list-channels; "
"then mgr-inter-sync -c chn0 -c chn1..."
msgstr ""

#. int(None) --> TypeError
#. int('a')  --> ValueError
#: ../satellite_tools/satsync.py:2457 ../satellite_tools/satsync.py:2461
msgid "ERROR: --batch-size must have a value within the range: 1..50"
msgstr ""

#: ../satellite_tools/satsync.py:2469
#, python-format
msgid "ERROR: no such directory %s"
msgstr ""

#: ../satellite_tools/satsync.py:2474
msgid "Error Codes: Returned codes means:"
msgstr ""

#: ../satellite_tools/satsync.py:2475
msgid " -1  - Could not lock file or KeyboardInterrupt or SystemExit"
msgstr ""

#: ../satellite_tools/satsync.py:2476
msgid "  0  - User interrupted or intentional exit"
msgstr ""

#: ../satellite_tools/satsync.py:2477
msgid "  1  - attempting to run more than one instance of mgr-inter-sync."
msgstr ""

#: ../satellite_tools/satsync.py:2478
msgid "  2  - Unable to find synchronization tools."
msgstr ""

#: ../satellite_tools/satsync.py:2479
msgid "  3  - a general socket exception occurred"
msgstr ""

#: ../satellite_tools/satsync.py:2480
msgid "  4  - an SSL error occurred. Recheck your SSL settings."
msgstr ""

#: ../satellite_tools/satsync.py:2481
msgid "  5  - ISS error"
msgstr ""

#: ../satellite_tools/satsync.py:2482
msgid "  6  - unhandled exception occurred"
msgstr ""

#: ../satellite_tools/satsync.py:2483
msgid "  7  - unknown sync error"
msgstr ""

#: ../satellite_tools/satsync.py:2484
msgid "  8  - ERROR: must be root to execute"
msgstr ""

#: ../satellite_tools/satsync.py:2485
msgid "  9  - rpclib fault during synchronization init"
msgstr ""

#: ../satellite_tools/satsync.py:2486
msgid "  10 - synchronization init error"
msgstr ""

#: ../satellite_tools/satsync.py:2487
msgid "  11 - Error parsing XML stream"
msgstr ""

#: ../satellite_tools/satsync.py:2488
msgid "  12 - Channel do not exist"
msgstr ""

#: ../satellite_tools/satsync.py:2489
msgid "  13 - SQL error during importing package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:2490
msgid "  14 - SQL error during linking channel packages"
msgstr ""

#: ../satellite_tools/satsync.py:2491
msgid "  15 - SQL error during xml processing"
msgstr ""

#: ../satellite_tools/satsync.py:2492
msgid "  16 - server.mount_point not set in the configuration file"
msgstr ""

#: ../satellite_tools/satsync.py:2493
msgid ""
"  17 - SQL error during retrieving the channels already imported in the SUSE "
"Manager database"
msgstr ""

#: ../satellite_tools/satsync.py:2494
msgid "  18 - Wrong db connection string in rhn.conf"
msgstr ""

#: ../satellite_tools/satsync.py:2495
msgid "  19 - Bad arguments"
msgstr ""

#: ../satellite_tools/satsync.py:2496
msgid "  20 - Could not connect to db."
msgstr ""

#: ../satellite_tools/satsync.py:2497
msgid "  21 - Bad debug level"
msgstr ""

#: ../satellite_tools/satsync.py:2498
msgid "  22 - Not valid step"
msgstr ""

#: ../satellite_tools/satsync.py:2499
msgid "  24 - no such file"
msgstr ""

#: ../satellite_tools/satsync.py:2500
msgid "  25 - no such directory"
msgstr ""

#: ../satellite_tools/satsync.py:2501
msgid "  26 - mount_point does not exist"
msgstr ""

#: ../satellite_tools/satsync.py:2502
msgid "  27 - No such org"
msgstr ""

#: ../satellite_tools/satsync.py:2503
msgid "  28 - error: --master is only valid with --mount-point"
msgstr ""

#: ../satellite_tools/satsync.py:2510
#, python-format
msgid "ERROR: unknown dump version, try one of %s"
msgstr ""
07070100000093000081B40000000000000000000000016290A0C10000B644000000000000000000000000000000000000001B00000000spacewalk-backend/po/tr.po    # SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
#
# Translators:
# Ismail ASCI <ismail.asci@gmail.com>, 2006.
msgid ""
msgstr ""
"Project-Id-Version: Spacewalk\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-10-16 13:34+0200\n"
"PO-Revision-Date: 2011-03-04 16:08+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Turkish (http://www.transifex.com/projects/p/fedora/language/"
"tr/)\n"
"Language: tr\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"

#: ../server/apacheAuth.py:66
#, python-format
msgid "incomplete proxy authentication token: %s"
msgstr ""

#: ../server/apacheAuth.py:84
#, python-format
msgid "Sent proxy signature %s does not match ours %s."
msgstr ""

#: ../server/apacheAuth.py:119
msgid "declined proxy authentication"
msgstr ""

#: ../server/apacheRequest.py:59
#, python-format
msgid "Invalid request received (%s)."
msgstr ""

#: ../server/apacheRequest.py:120
#, python-format
msgid ""
"IMPORTANT MESSAGE FOLLOWS:\n"
"%s"
msgstr ""

#: ../server/apacheRequest.py:149
#, python-format
msgid ""
"While running '%s': caught\n"
"%s : %s\n"
msgstr ""

#: ../server/apacheRequest.py:606
#, python-format
msgid "Invalid URI %s"
msgstr ""

#: ../server/configFilesHandler.py:129 ../server/handlers/app/packages.py:192
#: ../server/handlers/xmlrpc/registration.py:215
#: ../server/handlers/xmlrpc/registration.py:1168
#: ../server/handlers/xmlrpc/registration.py:1307
#, python-format
msgid ""
"\n"
"                   %s Account has been deactivated on this server.\n"
"                   Please contact your Org administrator for more help."
msgstr ""

#: ../server/handlers/applet/applet.py:78
#, python-brace-format
msgid "Your system was not found in the {PRODUCT_NAME} database"
msgstr ""

#: ../server/handlers/sat/auth.py:45
msgid "ISS is disabled on this server."
msgstr ""

#: ../server/handlers/sat/auth.py:50
#, python-format
msgid "Server \"%s\" is not enabled for ISS."
msgstr ""

#: ../server/handlers/xmlrpc/errata.py:64
#, python-format
msgid "Expected a package name, not: %s"
msgstr ""

#: ../server/handlers/xmlrpc/errata.py:115
#, python-format
msgid "Expected a package, not: %s"
msgstr ""

#: ../server/handlers/xmlrpc/proxy.py:65
#, python-format
msgid "SUSE Manager Proxy service not enabled for server profile: \"%s\""
msgstr ""

#: ../server/handlers/xmlrpc/proxy.py:85
msgid "Invalid session key"
msgstr ""

#: ../server/handlers/xmlrpc/proxy.py:93
msgid "This server ID no longer exists"
msgstr ""

#: ../server/handlers/xmlrpc/queue.py:433
#, python-format
msgid "Invalid action value type %s (%s)"
msgstr ""

#: ../server/handlers/xmlrpc/queue.py:464
#, python-format
msgid "Action %s does not belong to server %s"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:194
msgid "Required data missing"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:198
msgid "Required members missing"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:207
msgid "Attempt to register a system to an invalid username"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:839
msgid "Invalid system release version requested"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1063
msgid ""
"Unable to find a valid network interface, both ipaddr and ip6addr not found."
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1115
#, python-brace-format
msgid "{PRODUCT_NAME} Welcome Message"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1125
msgid "Privacy Statement"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1146
msgid "Expected a dictionary as a product argument"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1374
#, python-format
msgid "Invalid value '%s' for %s (%s)"
msgstr ""

#: ../server/handlers/xmlrpc/scap.py:104
msgid "Invalid system_id/action_id pair."
msgstr ""

#: ../server/handlers/xmlrpc/up2date.py:233
#, python-format
msgid "Invalid value %s (%s)"
msgstr ""

#: ../server/importlib/userAuth.py:98
msgid "You are not authorized to manage packages in the null org"
msgstr ""

#: ../server/importlib/userAuth.py:103
#, python-format
msgid "You are not allowed to manage packages in the %s org"
msgstr ""

#: ../server/importlib/userAuth.py:121
msgid "You are not allowed to perform administrative tasks"
msgstr ""

#: ../server/importlib/userAuth.py:144
#, python-format
msgid ""
"You are not allowed to manage channel %s, or that channel does not exist"
msgstr ""

#: ../server/importlib/userAuth.py:204
#, python-format
msgid ""
"\n"
"               %s Account has been deactivated on this server.\n"
"               Please contact your Org administrator for more help."
msgstr ""

#: ../server/rhnChannel.py:1992
#, python-format
msgid ""
"Your account does not have access to any channels matching "
"(release='%(release)s', arch='%(arch)s')%(www_activation)s"
msgstr ""

#: ../server/rhnChannel.py:2002
msgid ""
"\n"
"If you have a registration number, please register with it first at http://"
"www.redhat.com/apps/activate/ and then try again.\n"
"\n"
msgstr ""

#: ../server/rhnChannel.py:2012
#, python-format
msgid "Insufficient subscription permissions for release (%s, %s"
msgstr ""

#. Various messages that can be reused
#.
#. bretm 02/07/2007 -- when we have better old-client documentation, probably
#. will be safe to get rid of all this crap
#: ../server/rhnChannel.py:2276 ../server/rhnChannel.py:2287
#: ../server/rhnChannel.py:2302
msgid "System Registered but Inactive"
msgstr ""

#: ../server/rhnChannel.py:2277
#, python-format
msgid ""
"\n"
"Invalid Architecture and OS release combination (%s, %s).\n"
"Your system has been registered, but will not receive updates\n"
"because it is not subscribed to a channel. If you have not yet\n"
"activated your product for service, please visit our website at:\n"
"\n"
"     http://www.redhat.com/apps/activate/\n"
"\n"
"...to activate your product."
msgstr ""

#: ../server/rhnChannel.py:2288
#, python-format
msgid ""
"\n"
"Invalid Architecture and OS release combination (%s, %s).\n"
"Your system has been registered, but will not receive updates\n"
"because it could not be subscribed to a base channel.\n"
"Please contact your organization administrator for assistance.\n"
msgstr ""

#: ../server/rhnChannel.py:2295
#, python-format
msgid ""
"\n"
"  This system has been successfully registered, but is not yet entitled\n"
"  to service.  To entitle this system to service, login to the web site at:\n"
"\n"
"  %(entitlement_url)s\n"
msgstr ""

#: ../server/rhnChannel.py:2303
#, python-format
msgid ""
"\n"
"  This system has been successfully registered, but no service entitlements\n"
"  were available.  To entitle this system to service, login to the web site "
"at:\n"
"\n"
"  %(entitlement_url)s\n"
msgstr ""

#: ../server/rhnHandler.py:62
msgid "Please run rhn_register as root on this client"
msgstr ""

#: ../server/rhnHandler.py:75
#, python-format
msgid "Service not enabled for system profile: \"%s\""
msgstr ""

#: ../server/rhnPackage.py:49 ../server/rhnPackage.py:87
#: ../server/rhnPackage.py:107 ../server/rhnPackage.py:158
#, python-format
msgid "Invalid RPM package %s requested"
msgstr ""

#: ../server/rhnPackage.py:112
msgid "Package not found"
msgstr ""

#: ../server/rhnServer/server_class.py:97
#, python-format
msgid "Architecture `%s' is not supported"
msgstr ""

#: ../server/rhnServer/server_token.py:78
#, python-format
msgid "Token `%s' has more than one base channel assigned"
msgstr ""

#: ../server/rhnServer/server_token.py:80
msgid "Conflicting base channels"
msgstr ""

#: ../server/rhnServer/server_token.py:190
#, python-format
msgid "Failed to add server to group %s"
msgstr ""

#: ../server/rhnServer/server_token.py:503
#, python-format
msgid "Maximum usage count of %s reached"
msgstr ""

#: ../server/rhnServer/server_token.py:744
msgid ""
"Stacking of re-registration tokens with different base entitlements is not "
"supported"
msgstr ""

#: ../server/rhnServer/server_token.py:811
#, python-format
msgid "Could not find token '%s'"
msgstr ""

#. Cannot use activation keys from different orgs
#: ../server/rhnServer/server_token.py:843
msgid "Tokens from mismatching orgs"
msgstr ""

#. Two tokens with different kickstart sessions
#: ../server/rhnServer/server_token.py:853
msgid "Kickstart session mismatch"
msgstr ""

#: ../server/rhnServer/server_token.py:877
msgid "Stacking of re-registration tokens is not supported"
msgstr ""

#: ../server/rhnUser.py:289 ../server/rhnUser.py:292
msgid "Invalid username/password combination"
msgstr ""

#. nope, not reserved either
#: ../server/rhnUser.py:467
#, python-format
msgid "Username `%s' has not been reserved"
msgstr ""

#. New accounts have to specify an e-mail address
#: ../server/rhnUser.py:473
msgid "E-mail address not specified"
msgstr ""

#: ../server/rhnUser.py:509
#, python-format
msgid "username should be at least %d characters"
msgstr ""

#: ../server/rhnUser.py:512
#, python-format
msgid "username should be less than %d characters"
msgstr ""

#: ../server/rhnUser.py:523
#, python-format
msgid "username = `%s', invalid character `%s'"
msgstr ""

#: ../server/rhnUser.py:542
#, python-format
msgid "Please limit your e-mail address to %s chars"
msgstr ""

#: ../server/rhnUser.py:623
#, python-format
msgid "password must be at least %d characters"
msgstr ""

#: ../server/rhnUser.py:626
#, python-format
msgid "Password must be shorter than %d characters"
msgstr ""

#: ../server/rhnUser.py:644
#, python-format
msgid "password contains character `%s'"
msgstr ""

#: ../server/rhnUser.py:651
#, python-format
msgid "username should be at least %d characters long"
msgstr ""

#: ../server/rhnUser.py:662
#, python-format
msgid "Cannot register usernames ending with %s"
msgstr ""

#. 0-999: Red Hat client/client-like interaction errors:
#: ../common/rhnException.py:53
msgid "This does not appear to be a valid username."
msgstr ""

#: ../common/rhnException.py:54
msgid "Invalid username and password combination."
msgstr ""

#: ../common/rhnException.py:55
msgid "This login is already taken, or the password is incorrect."
msgstr ""

#: ../common/rhnException.py:56
msgid "Permission denied."
msgstr ""

#: ../common/rhnException.py:57
msgid "Object not found."
msgstr ""

#: ../common/rhnException.py:58
msgid "Invalid System Digital ID."
msgstr ""

#: ../common/rhnException.py:59
msgid "Invalid System Credentials."
msgstr ""

#: ../common/rhnException.py:60
msgid "Could not retrieve user data from database."
msgstr ""

#: ../common/rhnException.py:61
msgid "Valid username required."
msgstr ""

#: ../common/rhnException.py:62
msgid "Valid password required."
msgstr ""

#: ../common/rhnException.py:63
msgid "Minimum username length violation."
msgstr ""

#: ../common/rhnException.py:64
msgid "Minimum password length violation."
msgstr ""

#: ../common/rhnException.py:65
msgid "The username contains invalid characters."
msgstr ""

#: ../common/rhnException.py:66
msgid "File not found."
msgstr ""

#: ../common/rhnException.py:67
msgid "Architecture and OS version combination is not supported."
msgstr ""

#: ../common/rhnException.py:68
msgid "Could not retrieve system data from database."
msgstr ""

#: ../common/rhnException.py:69
msgid "Invalid arguments passed to function."
msgstr ""

#: ../common/rhnException.py:70
msgid "Unable to retrieve requested entry."
msgstr ""

#: ../common/rhnException.py:71
msgid "Could not update database entry."
msgstr ""

#: ../common/rhnException.py:72
msgid "Unsupported server architecture."
msgstr ""

#: ../common/rhnException.py:73
#, python-format
msgid ""
"\n"
"     The anonymous server functionality is no longer available.\n"
"\n"
"     Please re-register this system by running mgr_register as root.\n"
"     Please visit https://%(hostname)s/rhn/systems/SystemEntitlements.do\n"
"     or login at https://%(hostname)s, and from the \"Overview\" tab,\n"
"     select \"Subscription Management\" to enable the service for this "
"system.\n"
"     "
msgstr ""

#: ../common/rhnException.py:81
msgid "Record not available in the database."
msgstr ""

#: ../common/rhnException.py:82
msgid "Invalid value for entry."
msgstr ""

#: ../common/rhnException.py:83
#, python-format
msgid ""
"\n"
"     This system does not have a valid entitlement for SUSE Manager.\n"
"     Please visit https://%(hostname)s/rhn/systems/SystemEntitlements.do\n"
"     or login at https://%(hostname)s, and from the \"Overview\" tab,\n"
"     select \"Subscription Management\" to enable the service for this "
"system.\n"
"     "
msgstr ""

#: ../common/rhnException.py:89
msgid "Channel error"
msgstr ""

#: ../common/rhnException.py:90
msgid "Client session token is invalid."
msgstr ""

#: ../common/rhnException.py:91
msgid "Client session token has expired."
msgstr ""

#: ../common/rhnException.py:92
msgid "You are not authorized to retrieve the requested object."
msgstr ""

#: ../common/rhnException.py:93
msgid "Invalid action"
msgstr ""

#: ../common/rhnException.py:94
msgid "You are not allowed to perform administrative tasks on this system."
msgstr ""

#: ../common/rhnException.py:96
msgid "The system is already subscribed to the specified channel."
msgstr ""

#: ../common/rhnException.py:97
msgid "The system is not currently subscribed to the specified channel."
msgstr ""

#: ../common/rhnException.py:98
msgid "The specified channel does not exist."
msgstr ""

#: ../common/rhnException.py:99
msgid "Invalid channel version."
msgstr ""

#: ../common/rhnException.py:100
msgid ""
"\n"
"     User group membership limits exceeded.\n"
"\n"
"     The current settings for your account do not allow you to add another\n"
"     user account. Please check with the organization administrator for "
"your\n"
"     account if the maximum number of users allowed to subscribe to server "
"needs\n"
"     to be changed.\n"
"     "
msgstr ""

#: ../common/rhnException.py:108
msgid ""
"\n"
"     System group membership limits exceeded.\n"
"\n"
"     The current settings for your account do not allow you to add another\n"
"     system profile. Please check with the organization administrator for "
"your\n"
"     account for modifying the maximum number of system profiles that can "
"be\n"
"     subscribed to your account.\n"
"     "
msgstr ""

#: ../common/rhnException.py:116
msgid ""
"\n"
"     Invalid architecture.\n"
"\n"
"     The architecture of the package is not supported by\n"
"     "
msgstr ""

#: ../common/rhnException.py:121
msgid "Invalid RPM header"
msgstr ""

#: ../common/rhnException.py:122
msgid ""
"\n"
"    This system is already registered as a Salt Minion. If you want to "
"register it as a traditional client\n"
"    please delete it first via the web UI or API and then register it using "
"the traditional tools.\n"
"    "
msgstr ""

#. For the uploading tools
#: ../common/rhnException.py:127
msgid "Invalid information uploaded to the server"
msgstr ""

#: ../common/rhnException.py:128
msgid "Error uploading network interfaces configuration."
msgstr ""

#: ../common/rhnException.py:129
msgid ""
"\n"
"     Package Upload Failed due to uniqueness constraint violation.\n"
"     Make sure the package does not have any duplicate dependencies or\n"
"     does not already exists on the server\n"
"     "
msgstr ""

#: ../common/rhnException.py:134
msgid ""
"\n"
"     The --force rhnpush option is disabled on this server.\n"
"     Please contact your SUSE Manager administrator for more help.\n"
"     "
msgstr ""

#. 60-70: token errors
#: ../common/rhnException.py:140
msgid ""
"\n"
"     The activation token specified could not be found on the server.\n"
"     Please retry with a valid key.\n"
"     "
msgstr ""

#: ../common/rhnException.py:144
msgid "Too many systems registered using this registration token"
msgstr ""

#: ../common/rhnException.py:145
msgid "Token contains invalid, obsoleted or insufficient settings"
msgstr ""

#: ../common/rhnException.py:146
msgid "Conflicting activation tokens"
msgstr ""

#. 70-80: channel subscription errors
#: ../common/rhnException.py:149
msgid ""
"\n"
"     No matching base channel found for your system.\n"
"     "
msgstr ""

#: ../common/rhnException.py:152
msgid ""
"\n"
"     You do not have subscription permission to the designated channel.\n"
"     Please refer to your organization's channel or organization\n"
"     administrators for further details.\n"
"     "
msgstr ""

#: ../common/rhnException.py:157
msgid "You can not unsubscribe from base channel."
msgstr ""

#: ../common/rhnException.py:158
msgid "SUSE Manager or Proxy channel can not be subscribed."
msgstr ""

#. 80-90: server group errors
#: ../common/rhnException.py:161
msgid "There was an error while trying to join the system to its groups"
msgstr ""

#. 90-100: entitlement errors
#: ../common/rhnException.py:164
msgid "Unable to entitle system"
msgstr ""

#. 100-109: e-mail and uuid related faults
#: ../common/rhnException.py:167
msgid "Maximum e-mail length violation."
msgstr ""

#: ../common/rhnException.py:168
msgid "This system has been previously registered."
msgstr ""

#: ../common/rhnException.py:169
msgid "Invalid username"
msgstr ""

#. 140-159 applet errors
#: ../common/rhnException.py:172
msgid "Unable to look up server"
msgstr ""

#. 160-179: OSAD errors
#: ../common/rhnException.py:175
msgid "Required argument is missing"
msgstr ""

#. 600-699: RHEL5+ EN errors
#: ../common/rhnException.py:178
msgid "No entitlement information tied to hardware"
msgstr ""

#: ../common/rhnException.py:179
msgid "Installation number is not entitling"
msgstr ""

#. 700-799: Additional user input verification errors.
#: ../common/rhnException.py:182
msgid "Maximum username length violation"
msgstr ""

#: ../common/rhnException.py:183
msgid "Maximum password length violation"
msgstr ""

#: ../common/rhnException.py:184
msgid "This user has read only API access. Action denied."
msgstr ""

#: ../common/rhnException.py:186
msgid "System Name cannot be less than 1 character"
msgstr ""

#. 1000-1999: Proxy specific errors:
#. issued by a Proxy to the client
#: ../common/rhnException.py:190
msgid "SUSE Manager Proxy error."
msgstr ""

#: ../common/rhnException.py:191
msgid "SUSE Manager Proxy unable to login."
msgstr ""

#. issued by a SUSE Manager Server/Satellite to the proxy
#: ../common/rhnException.py:193
msgid ""
"\n"
"     SUSE Manager Proxy system ID does not match a Spacewalk Proxy Server\n"
"     in the database.\n"
"     "
msgstr ""

#: ../common/rhnException.py:197
msgid "SUSE Manager Proxy session token is invalid."
msgstr ""

#: ../common/rhnException.py:198
msgid "SUSE Manager Proxy session token has expired."
msgstr ""

#. 2000-2999: Red Hat Satellite specific errors:
#: ../common/rhnException.py:202
msgid ""
"\n"
"      user creation is not allowed via mgr_register;\n"
"     please contact your sysadmin to have your account created.\n"
"     "
msgstr ""

#: ../common/rhnException.py:206
msgid ""
"\n"
"     This SUSE Manager server is not allowed to use Inter Server Sync on "
"this server\n"
"     "
msgstr ""

#: ../common/rhnException.py:209
msgid ""
"\n"
"     Inter Server Sync is disabled on this SUSE Manager Server.\n"
"     "
msgstr ""

#. 3000-3999: XML dumper errors:
#: ../common/rhnException.py:214
msgid "Invalid datatype passed"
msgstr ""

#: ../common/rhnException.py:215
msgid "Unable to retrieve channel"
msgstr ""

#: ../common/rhnException.py:216
msgid "Unable to retrieve package"
msgstr ""

#: ../common/rhnException.py:217
msgid "Unable to retrieve erratum"
msgstr ""

#: ../common/rhnException.py:218
msgid "File is missing"
msgstr ""

#: ../common/rhnException.py:219
msgid "Function retrieval error"
msgstr ""

#: ../common/rhnException.py:220
msgid "Function execution error"
msgstr ""

#: ../common/rhnException.py:221
msgid "Missing version string"
msgstr ""

#: ../common/rhnException.py:222
msgid "Invalid version string"
msgstr ""

#: ../common/rhnException.py:223
msgid "Mismatching versions"
msgstr ""

#: ../common/rhnException.py:224
msgid "Invalid channel version"
msgstr ""

#: ../common/rhnException.py:225
msgid "No comps file for channel"
msgstr ""

#: ../common/rhnException.py:226
msgid "Unable to retrieve comps file"
msgstr ""

#. 4000 - 4999: config management errors
#: ../common/rhnException.py:229
msgid "Configuration action missing"
msgstr ""

#: ../common/rhnException.py:230
msgid "File too large"
msgstr ""

#: ../common/rhnException.py:231
msgid "File contains binary data"
msgstr ""

#: ../common/rhnException.py:232
msgid "Configuration channel is not empty"
msgstr ""

#: ../common/rhnException.py:233
msgid "Permission error"
msgstr ""

#: ../common/rhnException.py:234
msgid "Content missing for configuration file"
msgstr ""

#: ../common/rhnException.py:235
msgid "Template delimiters not specified"
msgstr ""

#: ../common/rhnException.py:236
msgid "Configuration channel does not exist"
msgstr ""

#: ../common/rhnException.py:237
msgid "Configuration channel already exists"
msgstr ""

#: ../common/rhnException.py:238
msgid "File missing from configuration channel"
msgstr ""

#: ../common/rhnException.py:239
msgid "Different revision of this file is uploaded"
msgstr ""

#: ../common/rhnException.py:240
msgid "File already uploaded to configuration channel"
msgstr ""

#: ../common/rhnException.py:241
msgid "File size exceeds remaining quota space"
msgstr ""

#: ../common/rhnException.py:242
msgid "Full path of file must be specified"
msgstr ""

#: ../common/rhnException.py:243
msgid "Invalid revision number"
msgstr ""

#: ../common/rhnException.py:244
msgid "Cannot compare files of different file type"
msgstr ""

#. 5000 - 5999: client content uploading errors
#. 5000 - 5099: crash reporting errors
#: ../common/rhnException.py:248
msgid "Crash information is invalid or incomplete"
msgstr ""

#: ../common/rhnException.py:249
msgid "Crash file information is invalid or incomplete"
msgstr ""

#: ../common/rhnException.py:250
msgid "Error composing crash directory path"
msgstr ""

#: ../common/rhnException.py:251
msgid "Error composing crash file path"
msgstr ""

#: ../common/rhnException.py:252 ../common/rhnException.py:259
msgid "Invalid content encoding"
msgstr ""

#: ../common/rhnException.py:253
msgid "Invalid crash name"
msgstr ""

#: ../common/rhnException.py:254
msgid "Crash reporting is disabled for this organization"
msgstr ""

#. 5100 - 5199: scap results reporting error
#: ../common/rhnException.py:256
msgid "SCAP results file transfer is invalid or incomplete"
msgstr ""

#: ../common/rhnException.py:257
msgid "Error composing directory path for detailed SCAP results"
msgstr ""

#: ../common/rhnException.py:258
msgid "Error composing file path for detailed SCAP results"
msgstr ""

#: ../common/rhnException.py:306
msgid ""
"\n"
"     An error has occurred while processing your request. If this problem\n"
"     persists please enter a bug report at scc.suse.com.\n"
"     If you choose to submit the bug report, please be sure to include\n"
"     details of what you were trying to do when this error occurred and\n"
"     details on how to reproduce this problem.\n"
msgstr ""

#: ../common/rhnException.py:358
#, python-format
msgid ""
"Error Message:\n"
"    %s\n"
msgstr ""

#: ../common/rhnException.py:360
#, python-format
msgid "Error Class Code: %s\n"
msgstr ""

#: ../common/rhnException.py:363
#, python-format
msgid "Error Class Info: %s\n"
msgstr ""

#: ../common/rhnException.py:365
#, python-format
msgid "Explanation: %s"
msgstr ""

#: ../common/rhnTB.py:205
#, python-format
msgid "ERROR: %s %s: %s"
msgstr ""

#: ../common/rhnTB.py:207
#, python-format
msgid "TRACEBACK: %s"
msgstr ""

#: ../satellite_tools/disk_dumper/iss.py:1294
#: ../satellite_tools/disk_dumper/iss.py:1298
#, python-format
msgid "format of %s should be at least YYYYMMDD.\n"
msgstr ""

#: ../satellite_tools/messages.py:26
#, python-format
msgid ""
"\n"
"ERROR: executing step %s. Error is:\n"
"%s\n"
msgstr ""

#: ../satellite_tools/messages.py:31
#, python-format
msgid ""
"\n"
"ERROR: there was a problem accessing the channel data from your temporary\n"
"       repository. Did you migrate all of the data from the channel ISOs\n"
"       do this directory? If so, please recheck the channels ISOs, ensure\n"
"       that you have them all, and then iteratively remount and repopulate\n"
"       the temporary repository (%s).\n"
msgstr ""

#: ../satellite_tools/messages.py:39
#, python-format
msgid ""
"\n"
"ERROR: there was a problem synchronizing the information.\n"
"       Error message: %s\n"
msgstr ""

#: ../satellite_tools/messages.py:44
#, python-format
msgid ""
"\n"
"ERROR: There was a problem communicating with the ISS Master.\n"
"       Depending on the specific error details, please review your "
"configuration,\n"
"       basic network connectivity, and/or name resolution, and try again.\n"
"       Error message: %s\n"
msgstr ""

#: ../satellite_tools/messages.py:51
#, python-format
msgid ""
"\n"
"ERROR: There was a problem communicating with the ISS Master.\n"
"       If the master satellite is older than v5.3, it does not have ISS "
"capability.\n"
"       Otherwise, depending on the specific error details, please review "
"your\n"
"       configuration, basic network connectivity, and/or name resolution, "
"and try again.\n"
"       Error message: %s\n"
msgstr ""

#: ../satellite_tools/messages.py:59
#, python-format
msgid ""
"\n"
"ERROR: a child-channel cannot be synced without its parent being synced as\n"
"       well. A parent needs to be either (a) previously synced or (b) "
"synced\n"
"       in tandem with the desired child-channel. Missing parents for this\n"
"       transaction:\n"
"       %s\n"
msgstr ""

#: ../satellite_tools/messages.py:67
#, python-format
msgid ""
"\n"
"ERROR: you are not entitled to sync a channel in this set of channels.\n"
"Please contact your SUSE Manager contact\n"
"%s"
msgstr ""

#: ../satellite_tools/messages.py:72
#, python-format
msgid "  ERROR: not enough free space (%s KB) on device."
msgstr ""

#: ../satellite_tools/messages.py:74
#, python-format
msgid "    %3d/%s Fetch successful: %s (%s bytes)"
msgstr ""

#: ../satellite_tools/messages.py:75
#, python-format
msgid "    Extinct package:  %s"
msgstr ""

#: ../satellite_tools/messages.py:76
#, python-format
msgid "   Total size: %s"
msgstr ""

#: ../satellite_tools/messages.py:77
#, python-format
msgid "      Downloaded %s of %s. Estimated remaining time: %s"
msgstr ""

#: ../satellite_tools/messages.py:78
#, python-format
msgid "    Fetch unsuccessful: %s"
msgstr ""

#: ../satellite_tools/messages.py:79
#, python-format
msgid "   RPM fetch summary: %s"
msgstr ""

#: ../satellite_tools/messages.py:80
#, python-format
msgid "       success: %d"
msgstr ""

#: ../satellite_tools/messages.py:81
#, python-format
msgid "       failed:  %d"
msgstr ""

#: ../satellite_tools/messages.py:82
#, python-format
msgid "       extinct: %d"
msgstr ""

#: ../satellite_tools/messages.py:84
#, python-format
msgid "   Retrieving / parsing *relevant* package metadata: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:85
#, python-format
msgid "   Retrieving / parsing errata data: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:86
#, python-format
msgid "   Retrieving / parsing kickstart data: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:87
#, python-format
msgid "   Retrieving / parsing kickstart tree files: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:88
#, python-format
msgid "   Importing *relevant* package metadata: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:89
msgid "   * WARNING: this may be a slow process."
msgstr ""

#: ../satellite_tools/messages.py:90
msgid "Linking packages to channels"
msgstr ""

#: ../satellite_tools/messages.py:91
#, python-format
msgid "   Importing *relevant* errata: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:92
msgid "   No new kickstartable tree to import"
msgstr ""

#: ../satellite_tools/messages.py:93
#, python-format
msgid "Importing kickstartable trees (%d)"
msgstr ""

#: ../satellite_tools/messages.py:94
#, python-format
msgid "Imported kickstartable trees (%d)"
msgstr ""

#: ../satellite_tools/reposync.py:111 ../satellite_tools/satsync.py:439
msgid "+++ sending log as an email +++"
msgstr ""

#: ../satellite_tools/reposync.py:114
#, python-format
msgid "%s sync. report from %s"
msgstr ""

#: ../satellite_tools/reposync.py:124 ../satellite_tools/satsync.py:449
msgid "+++ email requested, but there is nothing to send +++"
msgstr ""

#: ../satellite_tools/rhn_satellite_activate.py:198
#, python-format
msgid ""
"\"%s\" (specified in commandline)\n"
"could not be opened and read:\n"
"%s"
msgstr ""

#: ../satellite_tools/rhn_satellite_activate.py:205
#, python-format
msgid ""
"\"%s\" could not be opened\n"
"and/or written to:\n"
"%s"
msgstr ""

#: ../satellite_tools/satsync.py:258
#, python-format
msgid "No handler for step %s"
msgstr ""

#. Try one more time - this time it should be faster since
#. everything should be cached
#: ../satellite_tools/satsync.py:270
msgid "Environment changed, trying again..."
msgstr ""

#: ../satellite_tools/satsync.py:277
msgid "ERROR: Encountered IntegrityError: \n"
msgstr ""

#: ../satellite_tools/satsync.py:285
msgid "Repeated failures"
msgstr ""

#: ../satellite_tools/satsync.py:290
#, python-format
msgid ""
"    Import complete:\n"
"        Begin time: %s\n"
"        End time:   %s\n"
"        Elapsed:    %s\n"
"          "
msgstr ""

#: ../satellite_tools/satsync.py:311
msgid "hours"
msgstr ""

#: ../satellite_tools/satsync.py:311
msgid "minutes"
msgstr ""

#: ../satellite_tools/satsync.py:311
msgid "seconds"
msgstr ""

#: ../satellite_tools/satsync.py:357
msgid ""
"ERROR: The dump is missing package data, use --no-rpms to skip this step or "
"fix the content to include package data."
msgstr ""

#. the orgs() method doesn't exist; that's fine we just
#. won't sync the orgs
#: ../satellite_tools/satsync.py:404
msgid "The SUSE Manager master does not support syncing orgs data."
msgstr ""

#: ../satellite_tools/satsync.py:404
msgid "Skipping..."
msgstr ""

#: ../satellite_tools/satsync.py:442
#, python-format
msgid "SUSE Manager Inter Server sync. report from %s"
msgstr ""

#: ../satellite_tools/satsync.py:521
msgid " - file-system synchronization"
msgstr ""

#: ../satellite_tools/satsync.py:533 ../satellite_tools/satsync.py:541
msgid " - live synchronization"
msgstr ""

#: ../satellite_tools/satsync.py:534
#, python-brace-format
msgid ""
"ERROR: Live content synchronizing with RHN Classic Hosted is no longer "
"supported.\n"
"Please use the cdn-sync command instead unless you are attempting to sync "
"from another {PRODUCT_NAME} via Inter-Server-Sync (ISS), or from local "
"content on disk via Channel Dump ISOs."
msgstr ""

#: ../satellite_tools/satsync.py:542
#, python-format
msgid "   url: %s"
msgstr ""

#: ../satellite_tools/satsync.py:543
#, python-format
msgid "   debug/output level: %s"
msgstr ""

#: ../satellite_tools/satsync.py:553
msgid "ERROR: this server must be registered with SUSE Manager."
msgstr ""

#: ../satellite_tools/satsync.py:575
#, python-format
msgid "Retrieving / parsing %s data"
msgstr ""

#: ../satellite_tools/satsync.py:585 ../satellite_tools/satsync.py:600
msgid "*** SYSTEM INTERRUPT CALLED ***"
msgstr ""

#: ../satellite_tools/satsync.py:593
msgid "ERROR: fatal parser exception occurred "
msgstr ""

#: ../satellite_tools/satsync.py:594
#, python-format
msgid "(line: %s, col: %s msg: %s)"
msgstr ""

#: ../satellite_tools/satsync.py:598
#, python-format
msgid "ERROR: parser exception occurred: %s"
msgstr ""

#: ../satellite_tools/satsync.py:603
msgid "ERROR: exception (during parse) occurred: "
msgstr ""

#: ../satellite_tools/satsync.py:604
#, python-format
msgid ""
"   Encountered some errors with %s data (see logs (%s) for more information)"
msgstr ""

#: ../satellite_tools/satsync.py:606
#, python-format
msgid "   Encountered some errors with %s data:"
msgstr ""

#: ../satellite_tools/satsync.py:607
#, python-format
msgid "   ------- %s PARSE/IMPORT ERROR -------"
msgstr ""

#: ../satellite_tools/satsync.py:609
msgid "   ---------------------------------------"
msgstr ""

#: ../satellite_tools/satsync.py:612
#, python-format
msgid "%s data complete"
msgstr ""

#: ../satellite_tools/satsync.py:665
msgid "Retrieving / parsing channel data"
msgstr ""

#: ../satellite_tools/satsync.py:718
msgid "Channel data complete"
msgstr ""

#: ../satellite_tools/satsync.py:736
#, python-format
msgid "%10s import from %s"
msgstr ""

#: ../satellite_tools/satsync.py:739
#, python-format
msgid "%10s import from %s - %s"
msgstr ""

#: ../satellite_tools/satsync.py:743
#, python-format
msgid "%10s"
msgstr ""

#: ../satellite_tools/satsync.py:750
msgid "p"
msgstr ""

#: ../satellite_tools/satsync.py:752
msgid "."
msgstr ""

#: ../satellite_tools/satsync.py:758
msgid "   p = previously imported/synced channel"
msgstr ""

#: ../satellite_tools/satsync.py:759
msgid "   . = channel not yet imported/synced"
msgstr ""

#: ../satellite_tools/satsync.py:765
msgid "   e = channel no longer supported (end-of-service)"
msgstr ""

#: ../satellite_tools/satsync.py:767
msgid "   ? = channel label invalid --- typo?"
msgstr ""

#: ../satellite_tools/satsync.py:771
#, python-format
msgid "   %s:"
msgstr ""

#: ../satellite_tools/satsync.py:772
#, python-format
msgid "      %s %-40s %4s %s"
msgstr ""

#: ../satellite_tools/satsync.py:773
msgid "base-channels"
msgstr ""

#: ../satellite_tools/satsync.py:786 ../satellite_tools/satsync.py:1603
msgid "NONE RELEVANT"
msgstr ""

#: ../satellite_tools/satsync.py:808
msgid "end-of-service"
msgstr ""

#: ../satellite_tools/satsync.py:809
msgid "e"
msgstr ""

#: ../satellite_tools/satsync.py:815
msgid "   typos:"
msgstr ""

#: ../satellite_tools/satsync.py:816
msgid "?"
msgstr ""

#: ../satellite_tools/satsync.py:831
#, python-format
msgid "XXX: imported channels: %s"
msgstr ""

#: ../satellite_tools/satsync.py:832
#, python-format
msgid "XXX:   cached channels: %s"
msgstr ""

#: ../satellite_tools/satsync.py:837
msgid "XXX: list channels called"
msgstr ""

#: ../satellite_tools/satsync.py:855
msgid "ERROR: these channels either do not exist or are not available:"
msgstr ""

#: ../satellite_tools/satsync.py:859
#, python-format
msgid "       (to see a list of channel labels: %s --list-channels)"
msgstr ""

#: ../satellite_tools/satsync.py:904
#, python-format
msgid "   Retrieving / parsing short package metadata: %s (%s)"
msgstr ""

#: ../satellite_tools/satsync.py:965
#, python-format
msgid "Diffing package metadata (what's missing locally?): %s"
msgstr ""

#: ../satellite_tools/satsync.py:971 ../satellite_tools/satsync.py:1254
msgid "Diffing:    "
msgstr ""

#: ../satellite_tools/satsync.py:988
msgid "ERROR: incremental dump skipped"
msgstr ""

#: ../satellite_tools/satsync.py:1079
msgid "Downloading rpm packages"
msgstr ""

#: ../satellite_tools/satsync.py:1084
#, python-format
msgid "   Fetching any missing RPMs: %s (%s)"
msgstr ""

#: ../satellite_tools/satsync.py:1085 ../satellite_tools/satsync.py:1153
msgid "NONE MISSING"
msgstr ""

#: ../satellite_tools/satsync.py:1094
msgid "Processing rpm packages complete"
msgstr ""

#: ../satellite_tools/satsync.py:1121
msgid "Downloading package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1146
msgid "Downloading srpm packages"
msgstr ""

#: ../satellite_tools/satsync.py:1152
#, python-format
msgid "   Fetching any missing SRPMs: %s (%s)"
msgstr ""

#: ../satellite_tools/satsync.py:1249
#, python-format
msgid "Diffing source package metadata (what's missing locally?): %s"
msgstr ""

#: ../satellite_tools/satsync.py:1260
msgid "Downloading source package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1338 ../satellite_tools/satsync.py:2027
#, python-format
msgid "Unable to save file %s: %s"
msgstr ""

#. for
#. Retried a number of times and it still failed; log the
#. file as being failed and move on
#: ../satellite_tools/satsync.py:1345
#, python-format
msgid "Failed to fetch file %s"
msgstr ""

#: ../satellite_tools/satsync.py:1350
msgid "Downloading kickstartable trees metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1365
msgid "Downloading kickstartable trees files"
msgstr ""

#: ../satellite_tools/satsync.py:1504
#, python-format
msgid "Grabbing all patches for channel %s"
msgstr ""

#: ../satellite_tools/satsync.py:1554
msgid "Downloading patch data"
msgstr ""

#: ../satellite_tools/satsync.py:1556
msgid "Forcing download of all patch data for requested channels."
msgstr ""

#: ../satellite_tools/satsync.py:1571
msgid "Downloading patch data complete"
msgstr ""

#: ../satellite_tools/satsync.py:1576 ../satellite_tools/satsync.py:1597
msgid "Downloading:"
msgstr ""

#: ../satellite_tools/satsync.py:1579
msgid " - complete"
msgstr ""

#: ../satellite_tools/satsync.py:1624
msgid "Importing source package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1627
msgid "Importing package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1635
msgid "Importing:  "
msgstr ""

#. not in the cache
#: ../satellite_tools/satsync.py:1703
msgid ""
"Package Not Found in Cache, Clear the Cache "
"to                                  Regenerate it."
msgstr ""

#: ../satellite_tools/satsync.py:1709
msgid "Importing channel patches"
msgstr ""

#: ../satellite_tools/satsync.py:1714
#, python-format
msgid "Importing %s patches for channel %s."
msgstr ""

#. Incomplete configuration
#: ../satellite_tools/satsync.py:2113
msgid "ERROR: server.mount_point not set in the configuration file"
msgstr ""

#: ../satellite_tools/satsync.py:2117
#, python-format
msgid "ERROR: server.mount_point %s do not exist"
msgstr ""

#: ../satellite_tools/satsync.py:2122
#, python-format
msgid "ERROR: path under server.mount_point (%s)  do not exist"
msgstr ""

#: ../satellite_tools/satsync.py:2199
#, python-format
msgid "Commandline: %s"
msgstr ""

#: ../satellite_tools/satsync.py:2202
#, python-format
msgid ""
"DEBUG ONLY: max. batch-size for XML/database-import processing (1..%s).\"man "
"satellite-sync\" for more information."
msgstr ""

#: ../satellite_tools/satsync.py:2205
msgid "alternative SSL CA Cert (fullpath to cert file)"
msgstr ""

#: ../satellite_tools/satsync.py:2207
msgid "process data for this channel only"
msgstr ""

#: ../satellite_tools/satsync.py:2209
msgid ""
"disk dump will be considered to be a full export; see \"man satellite-sync\" "
"for more information."
msgstr ""

#: ../satellite_tools/satsync.py:2212
msgid "existing custom channels will also be synced (unless -c is used)"
msgstr ""

#: ../satellite_tools/satsync.py:2214
#, python-format
msgid ""
"override debug level set in /etc/rhn/rhn.conf (which is currently set at %s)."
msgstr ""

#: ../satellite_tools/satsync.py:2216
#, python-format
msgid "requested version of XML dump (default: %s)"
msgstr ""

#: ../satellite_tools/satsync.py:2218
msgid "e-mail a report of what was synced/imported"
msgstr ""

#: ../satellite_tools/satsync.py:2220
msgid "forcibly process all (not a diff of) patch metadata"
msgstr ""

#: ../satellite_tools/satsync.py:2222
msgid "Do not use an http proxy under any circumstances."
msgstr ""

#: ../satellite_tools/satsync.py:2224
msgid "alternative http proxy (hostname:port)"
msgstr ""

#: ../satellite_tools/satsync.py:2226
msgid "alternative http proxy username"
msgstr ""

#: ../satellite_tools/satsync.py:2228
msgid "alternative http proxy password"
msgstr ""

#: ../satellite_tools/satsync.py:2230
msgid "parent SUSE Manager to import content from"
msgstr ""

#: ../satellite_tools/satsync.py:2232
msgid "list all available channels and exit"
msgstr ""

#: ../satellite_tools/satsync.py:2234
msgid "help on all error codes mgr-inter-sync returns"
msgstr ""

#: ../satellite_tools/satsync.py:2236
msgid "source mount point for import - disk update only"
msgstr ""

#: ../satellite_tools/satsync.py:2238
msgid "do not process patch data"
msgstr ""

#: ../satellite_tools/satsync.py:2240
msgid "do not process kickstart data (provisioning only)"
msgstr ""

#: ../satellite_tools/satsync.py:2242
msgid "do not process full package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:2244
msgid "do not download, or process any RPMs"
msgstr ""

#: ../satellite_tools/satsync.py:2246
msgid "turn off SSL (not recommended)"
msgstr ""

#: ../satellite_tools/satsync.py:2248
msgid "org to which the sync imports data. defaults to the admin account"
msgstr ""

#: ../satellite_tools/satsync.py:2250
msgid "print the configuration and exit"
msgstr ""

#: ../satellite_tools/satsync.py:2252
msgid "alternative server with which to connect (hostname)"
msgstr ""

#: ../satellite_tools/satsync.py:2254
msgid "synchronize to this step (man satellite-sync for more info)"
msgstr ""

#: ../satellite_tools/satsync.py:2256
msgid "write complete data to tempfile before streaming to remainder of app"
msgstr ""

#: ../satellite_tools/satsync.py:2258
msgid "DEBUG ONLY: alternative path to digital system id"
msgstr ""

#: ../satellite_tools/satsync.py:2260
msgid "alternative email address(es) for sync output (--email option)"
msgstr ""

#: ../satellite_tools/satsync.py:2262
msgid "do not remove rpms when importing from local dump"
msgstr ""

#: ../satellite_tools/satsync.py:2264
msgid ""
"the fully qualified domain name of the master Satellite. Valid with --mount-"
"point only. Required if you want to import org data and channel permissions."
msgstr ""

#: ../satellite_tools/satsync.py:2274
#, python-format
msgid "ERROR: these arguments make no sense in this context (try --help): %s"
msgstr ""

#. An SQL error is fatal... crash and burn
#: ../satellite_tools/satsync.py:2286
#, python-format
msgid "ERROR: Can't connect to the database: %s"
msgstr ""

#: ../satellite_tools/satsync.py:2287
msgid "ERROR: Check if your database is running."
msgstr ""

#: ../satellite_tools/satsync.py:2322
#, python-format
msgid "ERROR: --debug-level takes an in integer value within the range %s."
msgstr ""

#: ../satellite_tools/satsync.py:2324
msgid "  0  - little logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2325
msgid "  1  - minimal logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2326
msgid "  2  - normal level of logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2327
msgid "  3  - lots of logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2328
msgid "  4+ - excessive logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2341
msgid "ERROR: The --master option is only valid with the --mount-point option"
msgstr ""

#: ../satellite_tools/satsync.py:2351
#, python-format
msgid "ERROR: Unable to lookup Org Id %s"
msgstr ""

#: ../satellite_tools/satsync.py:2360
msgid ""
"WARNING: --list-channels option overrides any --step option. --step ignored."
msgstr ""

#: ../satellite_tools/satsync.py:2375
#, python-format
msgid ""
"ERROR: '%s' is not a valid step. See 'man mgr-inter-sync' for more detail."
msgstr ""

#: ../satellite_tools/satsync.py:2407
msgid ""
"ERROR: No channels currently imported; try mgr-inter-sync --list-channels; "
"then mgr-inter-sync -c chn0 -c chn1..."
msgstr ""

#. int(None) --> TypeError
#. int('a')  --> ValueError
#: ../satellite_tools/satsync.py:2457 ../satellite_tools/satsync.py:2461
msgid "ERROR: --batch-size must have a value within the range: 1..50"
msgstr ""

#: ../satellite_tools/satsync.py:2469
#, python-format
msgid "ERROR: no such directory %s"
msgstr ""

#: ../satellite_tools/satsync.py:2474
msgid "Error Codes: Returned codes means:"
msgstr ""

#: ../satellite_tools/satsync.py:2475
msgid " -1  - Could not lock file or KeyboardInterrupt or SystemExit"
msgstr ""

#: ../satellite_tools/satsync.py:2476
msgid "  0  - User interrupted or intentional exit"
msgstr ""

#: ../satellite_tools/satsync.py:2477
msgid "  1  - attempting to run more than one instance of mgr-inter-sync."
msgstr ""

#: ../satellite_tools/satsync.py:2478
msgid "  2  - Unable to find synchronization tools."
msgstr ""

#: ../satellite_tools/satsync.py:2479
msgid "  3  - a general socket exception occurred"
msgstr ""

#: ../satellite_tools/satsync.py:2480
msgid "  4  - an SSL error occurred. Recheck your SSL settings."
msgstr ""

#: ../satellite_tools/satsync.py:2481
msgid "  5  - ISS error"
msgstr ""

#: ../satellite_tools/satsync.py:2482
msgid "  6  - unhandled exception occurred"
msgstr ""

#: ../satellite_tools/satsync.py:2483
msgid "  7  - unknown sync error"
msgstr ""

#: ../satellite_tools/satsync.py:2484
msgid "  8  - ERROR: must be root to execute"
msgstr ""

#: ../satellite_tools/satsync.py:2485
msgid "  9  - rpclib fault during synchronization init"
msgstr ""

#: ../satellite_tools/satsync.py:2486
msgid "  10 - synchronization init error"
msgstr ""

#: ../satellite_tools/satsync.py:2487
msgid "  11 - Error parsing XML stream"
msgstr ""

#: ../satellite_tools/satsync.py:2488
msgid "  12 - Channel do not exist"
msgstr ""

#: ../satellite_tools/satsync.py:2489
msgid "  13 - SQL error during importing package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:2490
msgid "  14 - SQL error during linking channel packages"
msgstr ""

#: ../satellite_tools/satsync.py:2491
msgid "  15 - SQL error during xml processing"
msgstr ""

#: ../satellite_tools/satsync.py:2492
msgid "  16 - server.mount_point not set in the configuration file"
msgstr ""

#: ../satellite_tools/satsync.py:2493
msgid ""
"  17 - SQL error during retrieving the channels already imported in the SUSE "
"Manager database"
msgstr ""

#: ../satellite_tools/satsync.py:2494
msgid "  18 - Wrong db connection string in rhn.conf"
msgstr ""

#: ../satellite_tools/satsync.py:2495
msgid "  19 - Bad arguments"
msgstr ""

#: ../satellite_tools/satsync.py:2496
msgid "  20 - Could not connect to db."
msgstr ""

#: ../satellite_tools/satsync.py:2497
msgid "  21 - Bad debug level"
msgstr ""

#: ../satellite_tools/satsync.py:2498
msgid "  22 - Not valid step"
msgstr ""

#: ../satellite_tools/satsync.py:2499
msgid "  24 - no such file"
msgstr ""

#: ../satellite_tools/satsync.py:2500
msgid "  25 - no such directory"
msgstr ""

#: ../satellite_tools/satsync.py:2501
msgid "  26 - mount_point does not exist"
msgstr ""

#: ../satellite_tools/satsync.py:2502
msgid "  27 - No such org"
msgstr ""

#: ../satellite_tools/satsync.py:2503
msgid "  28 - error: --master is only valid with --mount-point"
msgstr ""

#: ../satellite_tools/satsync.py:2510
#, python-format
msgid "ERROR: unknown dump version, try one of %s"
msgstr ""
07070100000094000081B40000000000000000000000016290A0C100010E50000000000000000000000000000000000000001B00000000spacewalk-backend/po/uk.po    # SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
#
# Translators:
#   <jonny_nut@hotmail.com>, 2012.
# Maxim Dziumanenko <dziumanenko@gmail.com>, 2003.
# Yuri Chornoivan <yurchor@ukr.net>, 2012.
# Yuri Chornoivan <yurchor@ukr.net>, 2015. #zanata
# Yuri Chornoivan <yurchor@ukr.net>, 2016. #zanata
# Yuri Chornoivan <yurchor@ukr.net>, 2018. #zanata
msgid ""
msgstr ""
"Project-Id-Version: Spacewalk\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-10-16 13:34+0200\n"
"PO-Revision-Date: 2018-03-16 12:50+0000\n"
"Last-Translator: Yuri Chornoivan <yurchor@ukr.net>\n"
"Language-Team: Ukrainian <trans-uk@lists.fedoraproject.org>\n"
"Language: uk\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
"X-Generator: Zanata 4.6.2\n"

#: ../server/apacheAuth.py:66
#, python-format
msgid "incomplete proxy authentication token: %s"
msgstr "Ð½ÐµÐ¿Ð¾Ð²Ð½Ð¸Ð¹ ÐºÐ»ÑŽÑ‡ Ñ€Ð¾Ð·Ð¿Ñ–Ð·Ð½Ð°Ð²Ð°Ð½Ð½Ñ Ð½Ð° Ð¿Ñ€Ð¾ÐºÑÑ–: %s"

#: ../server/apacheAuth.py:84
#, python-format
msgid "Sent proxy signature %s does not match ours %s."
msgstr "ÐÐ°Ð´Ñ–ÑÐ»Ð°Ð½Ð¸Ð¹ â€‹â€‹Ð¿Ñ–Ð´Ð¿Ð¸Ñ Ð¿Ñ€Ð¾ÐºÑÑ– %s Ð½Ðµ Ð·Ð±Ñ–Ð³Ð°Ñ”Ñ‚ÑŒÑÑ Ð· Ð½Ð°ÑˆÐ¸Ð¼ %s."

#: ../server/apacheAuth.py:119
msgid "declined proxy authentication"
msgstr "Ñƒ Ñ€Ð¾Ð·Ð¿Ñ–Ð·Ð½Ð°Ð²Ð°Ð½Ð½Ñ– Ð½Ð° Ð¿Ñ€Ð¾ÐºÑÑ–-ÑÐµÑ€Ð²ÐµÑ€Ñ– Ð²Ñ–Ð´Ð¼Ð¾Ð²Ð»ÐµÐ½Ð¾"

#: ../server/apacheRequest.py:59
#, python-format
msgid "Invalid request received (%s)."
msgstr "ÐžÑ‚Ñ€Ð¸Ð¼Ð°Ð½Ð¾ Ð½ÐµÐ¿Ñ€Ð¸Ð¿ÑƒÑÑ‚Ð¸Ð¼Ð¸Ð¹ Ð·Ð°Ð¿Ð¸Ñ‚ (%s)."

#: ../server/apacheRequest.py:120
#, python-format
msgid ""
"IMPORTANT MESSAGE FOLLOWS:\n"
"%s"
msgstr ""
"Ð”ÐÐ›Ð† Ð’ÐšÐÐ—ÐÐÐž Ð’ÐÐ–Ð›Ð˜Ð’Ð• ÐŸÐžÐ’Ð†Ð”ÐžÐœÐ›Ð•ÐÐÐ¯:\n"
"%s"

#: ../server/apacheRequest.py:149
#, python-format
msgid ""
"While running '%s': caught\n"
"%s : %s\n"
msgstr ""
"ÐŸÑ–Ð´ Ñ‡Ð°Ñ Ñ€Ð¾Ð±Ð¾Ñ‚Ð¸ Â«%sÂ» Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ð½Ð¾\n"
"%s : %s\n"

#: ../server/apacheRequest.py:606
#, python-format
msgid "Invalid URI %s"
msgstr "ÐÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð° Ð°Ð´Ñ€ÐµÑÐ° %s"

#: ../server/configFilesHandler.py:129 ../server/handlers/app/packages.py:192
#: ../server/handlers/xmlrpc/registration.py:215
#: ../server/handlers/xmlrpc/registration.py:1168
#: ../server/handlers/xmlrpc/registration.py:1307
#, python-format
msgid ""
"\n"
"                   %s Account has been deactivated on this server.\n"
"                   Please contact your Org administrator for more help."
msgstr ""
"\n"
"                   ÐÐ° Ñ†ÑŒÐ¾Ð¼Ñƒ ÑÐµÑ€Ð²ÐµÑ€Ñ– Ð²Ð¸Ð¼ÐºÐ½ÐµÐ½Ð¾ Ð¾Ð±Ð»Ñ–ÐºÐ¾Ð²Ð¸Ð¹ Ð·Ð°Ð¿Ð¸Ñ %s.\n"
"                   Ð©Ð¾Ð± Ð´Ñ–Ð·Ð½Ð°Ñ‚Ð¸ÑÑ Ð±Ñ–Ð»ÑŒÑˆÐµ, Ð±ÑƒÐ´ÑŒ Ð»Ð°ÑÐºÐ°, Ð·Ð²ÐµÑ€Ð½Ñ–Ñ‚ÑŒÑÑ Ð´Ð¾ "
"Ð°Ð´Ð¼Ñ–Ð½Ñ–ÑÑ‚Ñ€Ð°Ñ‚Ð¾Ñ€Ð° Ð²Ð°ÑˆÐ¾Ñ— Ð¾Ñ€Ð³Ð°Ð½Ñ–Ð·Ð°Ñ†Ñ–Ñ—."

#: ../server/handlers/applet/applet.py:78
#, fuzzy, python-brace-format
msgid "Your system was not found in the {PRODUCT_NAME} database"
msgstr "Ð’Ð°ÑˆÐ¾Ñ— ÑÐ¸ÑÑ‚ÐµÐ¼Ð¸ Ð½Ðµ Ð·Ð½Ð°Ð¹Ð´ÐµÐ½Ð¾ Ñƒ Ð±Ð°Ð·Ñ– Ð´Ð°Ð½Ð¸Ñ… RHN"

#: ../server/handlers/sat/auth.py:45
#, fuzzy
msgid "ISS is disabled on this server."
msgstr "ISS Ð²Ð¸Ð¼ÐºÐ½ÐµÐ½Ð¾ Ð´Ð»Ñ Ñ†ÑŒÐ¾Ð³Ð¾ satellite."

#: ../server/handlers/sat/auth.py:50
#, python-format
msgid "Server \"%s\" is not enabled for ISS."
msgstr "Ð¡ÐµÑ€Ð²ÐµÑ€ Â«%sÂ» Ð½Ðµ ÑƒÐ²Ñ–Ð¼ÐºÐ½ÐµÐ½Ð¾ Ð´Ð»Ñ ISS."

#: ../server/handlers/xmlrpc/errata.py:64
#, python-format
msgid "Expected a package name, not: %s"
msgstr "ÐœÐ°Ð»Ð¾ Ð±ÑƒÑ‚Ð¸ Ð²ÐºÐ°Ð·Ð°Ð½Ð¾ Ð½Ð°Ð·Ð²Ñƒ Ð¿Ð°ÐºÑƒÐ½ÐºÐ°, Ð° Ð½Ðµ: %s"

#: ../server/handlers/xmlrpc/errata.py:115
#, python-format
msgid "Expected a package, not: %s"
msgstr "ÐœÐ°Ð»Ð¾ Ð±ÑƒÑ‚Ð¸ Ð²ÐºÐ°Ð·Ð°Ð½Ð¾ Ð¿Ð°ÐºÑƒÐ½Ð¾Ðº, Ð° Ð½Ðµ: %s"

#: ../server/handlers/xmlrpc/proxy.py:65
#, fuzzy, python-format
msgid "SUSE Manager Proxy service not enabled for server profile: \"%s\""
msgstr "ÐŸÑ€Ð¾ÐºÑÑ–-ÑÐµÑ€Ð²Ñ–Ñ Spacewalk Ð½Ðµ Ð²ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ð¹ Ð´Ð»Ñ Ð¿Ñ€Ð¾Ñ„Ñ–Ð»ÑŽ ÑÐµÑ€Ð²ÐµÑ€Ð°: Â«%sÂ»"

#: ../server/handlers/xmlrpc/proxy.py:85
msgid "Invalid session key"
msgstr "ÐÐµÐ¿Ñ€Ð¸Ð¿ÑƒÑÑ‚Ð¸Ð¼Ð¸Ð¹ ÐºÐ»ÑŽÑ‡ ÑÐµÐ°Ð½ÑÑƒ"

#: ../server/handlers/xmlrpc/proxy.py:93
msgid "This server ID no longer exists"
msgstr "Ð¦ÑŒÐ¾Ð³Ð¾ Ñ–Ð´ÐµÐ½Ñ‚Ð¸Ñ„Ñ–ÐºÐ°Ñ‚Ð¾Ñ€Ð° ÑÐµÑ€Ð²ÐµÑ€Ð° Ð±Ñ–Ð»ÑŒÑˆÐµ Ð½Ðµ Ñ–ÑÐ½ÑƒÑ”"

#: ../server/handlers/xmlrpc/queue.py:433
#, python-format
msgid "Invalid action value type %s (%s)"
msgstr "ÐÐµÐ¿Ñ€Ð¸Ð¿ÑƒÑÑ‚Ð¸Ð¼Ðµ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð´Ñ–Ñ— Ñ‚Ð¸Ð¿Ñƒ %s (%s)"

#: ../server/handlers/xmlrpc/queue.py:464
#, python-format
msgid "Action %s does not belong to server %s"
msgstr "Ð”Ñ–Ñ %s Ð½Ðµ Ð½Ð°Ð»ÐµÐ¶Ð¸Ñ‚ÑŒ Ð´Ð¾ ÑÐµÑ€Ð²ÐµÑ€Ð° %s"

#: ../server/handlers/xmlrpc/registration.py:194
msgid "Required data missing"
msgstr "ÐÐµ Ð²Ð¸ÑÑ‚Ð°Ñ‡Ð°Ñ” Ð¿Ð¾Ñ‚Ñ€Ñ–Ð±Ð½Ð¸Ñ… Ð´Ð°Ð½Ð¸Ñ…"

#: ../server/handlers/xmlrpc/registration.py:198
msgid "Required members missing"
msgstr "ÐÐµ Ð²Ð¸ÑÑ‚Ð°Ñ‡Ð°Ñ” Ð¿Ð¾Ñ‚Ñ€Ñ–Ð±Ð½Ð¸Ñ… ÐµÐ»ÐµÐ¼ÐµÐ½Ñ‚Ñ–Ð²"

#: ../server/handlers/xmlrpc/registration.py:207
msgid "Attempt to register a system to an invalid username"
msgstr "Ð¡Ð¿Ñ€Ð¾Ð±Ð° Ð·Ð°Ñ€ÐµÑ”ÑÑ‚Ñ€ÑƒÐ²Ð°Ñ‚Ð¸ ÑÐ¸ÑÑ‚ÐµÐ¼Ñƒ Ð½Ð° Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ðµ Ñ–Ð¼â€™Ñ ÐºÐ¾Ñ€Ð¸ÑÑ‚ÑƒÐ²Ð°Ñ‡Ð°"

#: ../server/handlers/xmlrpc/registration.py:839
msgid "Invalid system release version requested"
msgstr "ÐÐ°Ð´Ñ–ÑÐ»Ð°Ð½Ð¾ Ð·Ð°Ð¿Ð¸Ñ‚ Ñ‰Ð¾Ð´Ð¾ Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð¾Ñ— Ð²ÐµÑ€ÑÑ–Ñ— Ð²Ð¸Ð¿ÑƒÑÐºÑƒ ÑÐ¸ÑÑ‚ÐµÐ¼Ð¸"

#: ../server/handlers/xmlrpc/registration.py:1063
msgid ""
"Unable to find a valid network interface, both ipaddr and ip6addr not found."
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1115
#, python-brace-format
msgid "{PRODUCT_NAME} Welcome Message"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1125
#, fuzzy
msgid "Privacy Statement"
msgstr "Ð£Ð³Ð¾Ð´Ð° Ñ‰Ð¾Ð´Ð¾ ÐºÐ¾Ð½Ñ„Ñ–Ð´ÐµÐ½Ñ†Ñ–Ð¹Ð½Ð¾ÑÑ‚Ñ– Red Hat Satellite"

#: ../server/handlers/xmlrpc/registration.py:1146
msgid "Expected a dictionary as a product argument"
msgstr "ÐœÐ°Ð»Ð¾ Ð±ÑƒÑ‚Ð¸ Ð²ÐºÐ°Ð·Ð°Ð½Ð¾ ÑÐ»Ð¾Ð²Ð½Ð¸Ðº ÑÐº Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚ Ð¿Ñ€Ð¾Ð´ÑƒÐºÑ‚Ñƒ"

#: ../server/handlers/xmlrpc/registration.py:1374
#, python-format
msgid "Invalid value '%s' for %s (%s)"
msgstr "ÐÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ðµ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Â«%sÂ» Ð´Ð»Ñ %s (%s)"

#: ../server/handlers/xmlrpc/scap.py:104
msgid "Invalid system_id/action_id pair."
msgstr "ÐÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð° Ð¿Ð°Ñ€Ð° Ñ–Ð´ÐµÐ½Ñ‚Ð¸Ñ„Ñ–ÐºÐ°Ñ‚Ð¾Ñ€ ÑÐ¸ÑÑ‚ÐµÐ¼Ð¸/Ñ–Ð´ÐµÐ½Ñ‚Ð¸Ñ„Ñ–ÐºÐ°Ñ‚Ð¾Ñ€ Ð´Ñ–Ñ—."

#: ../server/handlers/xmlrpc/up2date.py:233
#, python-format
msgid "Invalid value %s (%s)"
msgstr "ÐÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ðµ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ %s (%s)"

#: ../server/importlib/userAuth.py:98
msgid "You are not authorized to manage packages in the null org"
msgstr ""
"Ð£ Ð²Ð°Ñ Ð½ÐµÐ¼Ð°Ñ” ÑƒÐ¿Ð¾Ð²Ð½Ð¾Ð²Ð°Ð¶ÐµÐ½ÑŒ Ð½Ð° ÐºÐµÑ€ÑƒÐ²Ð°Ð½Ð½Ñ Ð¿Ð°ÐºÑƒÐ½ÐºÐ°Ð¼Ð¸ Ñƒ Ð¾Ñ€Ð³Ð°Ð½Ñ–Ð·Ð°Ñ†Ñ–Ñ— Ñ–Ð· Ð¿Ð¾Ñ€Ð¾Ð¶Ð½ÑŒÐ¾ÑŽ "
"Ð½Ð°Ð·Ð²Ð¾ÑŽ"

#: ../server/importlib/userAuth.py:103
#, python-format
msgid "You are not allowed to manage packages in the %s org"
msgstr "Ð£ Ð²Ð°Ñ Ð½ÐµÐ¼Ð°Ñ” Ð¿Ñ€Ð°Ð² Ð½Ð° ÐºÐµÑ€ÑƒÐ²Ð°Ð½Ð½Ñ Ð¿Ð°ÐºÑƒÐ½ÐºÐ°Ð¼Ð¸ Ñƒ Ð¾Ñ€Ð³Ð°Ð½Ñ–Ð·Ð°Ñ†Ñ–Ñ— %s"

#: ../server/importlib/userAuth.py:121
msgid "You are not allowed to perform administrative tasks"
msgstr "Ð’Ð¸ Ð½Ðµ Ð¼Ð°Ñ”Ñ‚Ðµ Ð¿Ñ€Ð°Ð²Ð° Ð²Ð¸ÐºÐ¾Ð½ÑƒÐ²Ð°Ñ‚Ð¸ Ð·Ð°Ð²Ð´Ð°Ð½Ð½Ñ Ð· Ð°Ð´Ð¼Ñ–Ð½Ñ–ÑÑ‚Ñ€ÑƒÐ²Ð°Ð½Ð½Ñ"

#: ../server/importlib/userAuth.py:144
#, python-format
msgid ""
"You are not allowed to manage channel %s, or that channel does not exist"
msgstr "Ð£ Ð²Ð°Ñ Ð½ÐµÐ¼Ð°Ñ” Ð¿Ñ€Ð°Ð²Ð° ÐºÐµÑ€ÑƒÐ²Ð°Ñ‚Ð¸ ÐºÐ°Ð½Ð°Ð»Ð¾Ð¼ %s Ð°Ð±Ð¾ Ñ†ÑŒÐ¾Ð³Ð¾ ÐºÐ°Ð½Ð°Ð»Ñƒ Ð½Ðµ Ñ–ÑÐ½ÑƒÑ”"

#: ../server/importlib/userAuth.py:204
#, fuzzy, python-format
msgid ""
"\n"
"               %s Account has been deactivated on this server.\n"
"               Please contact your Org administrator for more help."
msgstr ""
"\n"
"                   ÐÐ° Ñ†ÑŒÐ¾Ð¼Ñƒ ÑÐµÑ€Ð²ÐµÑ€Ñ– Ð²Ð¸Ð¼ÐºÐ½ÐµÐ½Ð¾ Ð¾Ð±Ð»Ñ–ÐºÐ¾Ð²Ð¸Ð¹ Ð·Ð°Ð¿Ð¸Ñ %s.\n"
"                   Ð©Ð¾Ð± Ð´Ñ–Ð·Ð½Ð°Ñ‚Ð¸ÑÑ Ð±Ñ–Ð»ÑŒÑˆÐµ, Ð±ÑƒÐ´ÑŒ Ð»Ð°ÑÐºÐ°, Ð·Ð²ÐµÑ€Ð½Ñ–Ñ‚ÑŒÑÑ Ð´Ð¾ "
"Ð°Ð´Ð¼Ñ–Ð½Ñ–ÑÑ‚Ñ€Ð°Ñ‚Ð¾Ñ€Ð° Ð²Ð°ÑˆÐ¾Ñ— Ð¾Ñ€Ð³Ð°Ð½Ñ–Ð·Ð°Ñ†Ñ–Ñ—."

#: ../server/rhnChannel.py:1992
#, python-format
msgid ""
"Your account does not have access to any channels matching "
"(release='%(release)s', arch='%(arch)s')%(www_activation)s"
msgstr ""
"Ð’Ð°Ñˆ Ð¾Ð±Ð»Ñ–ÐºÐ¾Ð²Ð¸Ð¹ Ð·Ð°Ð¿Ð¸Ñ Ð½Ðµ Ð¼Ð°Ñ” Ð´Ð¾ÑÑ‚ÑƒÐ¿Ñƒ Ð´Ð¾ Ð¶Ð¾Ð´Ð½Ð¾Ð³Ð¾ Ñ–Ð· Ð²Ñ–Ð´Ð¿Ð¾Ð²Ñ–Ð´Ð½Ð¸Ñ… ÐºÐ°Ð½Ð°Ð»Ñ–Ð² "
"(Ð²Ð¸Ð¿ÑƒÑÐº=Â«%(release)sÂ», Ð°Ñ€Ñ…Ñ–Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð°=Â«%(arch)sÂ»)%(www_activation)s"

#: ../server/rhnChannel.py:2002
msgid ""
"\n"
"If you have a registration number, please register with it first at http://"
"www.redhat.com/apps/activate/ and then try again.\n"
"\n"
msgstr ""
"\n"
"Ð¯ÐºÑ‰Ð¾ Ñƒ Ð²Ð°Ñ Ñ” Ñ€ÐµÑ”ÑÑ‚Ñ€Ð°Ñ†Ñ–Ð¹Ð½Ð¸Ð¹ Ð½Ð¾Ð¼ÐµÑ€, Ð±ÑƒÐ´ÑŒ Ð»Ð°ÑÐºÐ°, ÑÐ¿ÐµÑ€ÑˆÑƒ Ð·Ð°Ñ€ÐµÑ”ÑÑ‚Ñ€ÑƒÐ¹Ñ‚Ðµ Ð¹Ð¾Ð³Ð¾ Ð½Ð° "
"http://www.redhat.com/apps/activate/, Ð° Ð¿Ð¾Ñ‚Ñ–Ð¼ Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€Ñ–Ñ‚ÑŒ ÑÐ¿Ñ€Ð¾Ð±Ñƒ.\n"
"\n"

#: ../server/rhnChannel.py:2012
#, python-format
msgid "Insufficient subscription permissions for release (%s, %s"
msgstr "ÐÐµÐ´Ð¾ÑÑ‚Ð°Ñ‚Ð½Ñ– Ð¿Ñ€Ð°Ð²Ð° Ð¿ÐµÑ€ÐµÐ´Ð¿Ð»Ð°Ñ‚Ð¸ Ð½Ð° Ð²Ð¸Ð¿ÑƒÑÐº (%s, %s"

#. Various messages that can be reused
#.
#. bretm 02/07/2007 -- when we have better old-client documentation, probably
#. will be safe to get rid of all this crap
#: ../server/rhnChannel.py:2276 ../server/rhnChannel.py:2287
#: ../server/rhnChannel.py:2302
msgid "System Registered but Inactive"
msgstr "Ð¡Ð¸ÑÑ‚ÐµÐ¼Ñƒ Ð·Ð°Ñ€ÐµÑ”ÑÑ‚Ñ€Ð¾Ð²Ð°Ð½Ð¾, Ð°Ð»Ðµ Ð½Ðµ Ð°ÐºÑ‚Ð¸Ð²Ð¾Ð²Ð°Ð½Ð¾"

#: ../server/rhnChannel.py:2277
#, python-format
msgid ""
"\n"
"Invalid Architecture and OS release combination (%s, %s).\n"
"Your system has been registered, but will not receive updates\n"
"because it is not subscribed to a channel. If you have not yet\n"
"activated your product for service, please visit our website at:\n"
"\n"
"     http://www.redhat.com/apps/activate/\n"
"\n"
"...to activate your product."
msgstr ""
"\n"
"ÐÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð° ÐºÐ¾Ð¼Ð±Ñ–Ð½Ð°Ñ†Ñ–Ñ Ð°Ñ€Ñ…Ñ–Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð¸ Ñ– Ð²Ð¸Ð¿ÑƒÑÐºÑƒ Ð¾Ð¿ÐµÑ€Ð°Ñ†Ñ–Ð¹Ð½Ð¾Ñ— ÑÐ¸ÑÑ‚ÐµÐ¼Ð¸ (%s, %s).\n"
"Ð’Ð°ÑˆÑƒ ÑÐ¸ÑÑ‚ÐµÐ¼Ñƒ Ð·Ð°Ñ€ÐµÑ”ÑÑ‚Ñ€Ð¾Ð²Ð°Ð½Ð¾, Ð°Ð»Ðµ Ð²Ð¾Ð½Ð° Ð½Ðµ Ð¾Ñ‚Ñ€Ð¸Ð¼ÑƒÐ²Ð°Ñ‚Ð¸Ð¼Ðµ Ð¾Ð½Ð¾Ð²Ð»ÐµÐ½ÑŒ, Ð¾ÑÐºÑ–Ð»ÑŒÐºÐ¸\n"
"Ñ—Ñ— Ð½Ðµ Ð¿Ñ–Ð´Ð¿Ð¸ÑÐ°Ð½Ð¾ Ð½Ð° ÐºÐ°Ð½Ð°Ð». Ð¯ÐºÑ‰Ð¾ Ð²Ð¸ Ñ‰Ðµ Ð½Ðµ Ð°ÐºÑ‚Ð¸Ð²ÑƒÐ²Ð°Ð»Ð¸ Ð²Ð°Ñˆ Ð¿Ñ€Ð¾Ð´ÑƒÐºÑ‚\n"
"Ð´Ð»Ñ Ð¾Ð±ÑÐ»ÑƒÐ³Ð¾Ð²ÑƒÐ²Ð°Ð½Ð½Ñ, Ð±ÑƒÐ´ÑŒ Ð»Ð°ÑÐºÐ°, Ð²Ñ–Ð´Ð²Ñ–Ð´Ð°Ð¹Ñ‚Ðµ Ð½Ð°Ñˆ ÑÐ°Ð¹Ñ‚ Ð·Ð° Ð°Ð´Ñ€ÐµÑÐ¾ÑŽ:\n"
"\n"
"     http://www.redhat.com/apps/activate/\n"
"\n"
"...Ñ‰Ð¾Ð± Ð°ÐºÑ‚Ð¸Ð²ÑƒÐ²Ð°Ñ‚Ð¸ Ð²Ð°Ñˆ Ð¿Ñ€Ð¾Ð´ÑƒÐºÑ‚."

#: ../server/rhnChannel.py:2288
#, python-format
msgid ""
"\n"
"Invalid Architecture and OS release combination (%s, %s).\n"
"Your system has been registered, but will not receive updates\n"
"because it could not be subscribed to a base channel.\n"
"Please contact your organization administrator for assistance.\n"
msgstr ""
"\n"
"ÐÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð° ÐºÐ¾Ð¼Ð±Ñ–Ð½Ð°Ñ†Ñ–Ñ Ð°Ñ€Ñ…Ñ–Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð¸ Ñ– Ð²Ð¸Ð¿ÑƒÑÐºÑƒ Ð¾Ð¿ÐµÑ€Ð°Ñ†Ñ–Ð¹Ð½Ð¾Ñ— ÑÐ¸ÑÑ‚ÐµÐ¼Ð¸ (%s, %s).\n"
"Ð’Ð°ÑˆÑƒ ÑÐ¸ÑÑ‚ÐµÐ¼Ñƒ Ð·Ð°Ñ€ÐµÑ”ÑÑ‚Ñ€Ð¾Ð²Ð°Ð½Ð¾, Ð°Ð»Ðµ Ð²Ð¾Ð½Ð° Ð½Ðµ Ð¾Ñ‚Ñ€Ð¸Ð¼ÑƒÐ²Ð°Ñ‚Ð¸Ð¼Ðµ Ð¾Ð½Ð¾Ð²Ð»ÐµÐ½ÑŒ, Ð¾ÑÐºÑ–Ð»ÑŒÐºÐ¸\n"
"Ñ—Ñ— Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾ÑÑ Ð¿Ñ–Ð´Ð¿Ð¸ÑÐ°Ñ‚Ð¸ Ð½Ð° Ð±Ð°Ð·Ð¾Ð²Ð¸Ð¹ ÐºÐ°Ð½Ð°Ð».\n"
"Ð‘ÑƒÐ´ÑŒ Ð»Ð°ÑÐºÐ°, Ð·Ð²â€™ÑÐ¶Ñ–Ñ‚ÑŒÑÑ Ñ–Ð· Ð°Ð´Ð¼Ñ–Ð½Ñ–ÑÑ‚Ñ€Ð°Ñ‚Ð¾Ñ€Ð¾Ð¼ Ð²Ð°ÑˆÐ¾Ñ— Ð¾Ñ€Ð³Ð°Ð½Ñ–Ð·Ð°Ñ†Ñ–Ñ—, Ñ‰Ð¾Ð± Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ "
"Ð´Ð¾Ð¿Ð¾Ð¼Ð¾Ð³Ñƒ.\n"

#: ../server/rhnChannel.py:2295
#, python-format
msgid ""
"\n"
"  This system has been successfully registered, but is not yet entitled\n"
"  to service.  To entitle this system to service, login to the web site at:\n"
"\n"
"  %(entitlement_url)s\n"
msgstr ""
"\n"
"  Ð¦ÑŽ ÑÐ¸ÑÑ‚ÐµÐ¼Ñƒ ÑƒÑÐ¿Ñ–ÑˆÐ½Ð¾ Ð·Ð°Ñ€ÐµÑ”ÑÑ‚Ñ€Ð¾Ð²Ð°Ð½Ð¾, Ð°Ð»Ðµ Ñ—Ñ— Ñ‰Ðµ Ð½Ðµ Ð´Ð¾Ð¿ÑƒÑ‰ÐµÐ½Ð¾ Ð´Ð¾\n"
"  Ð¾Ð±ÑÐ»ÑƒÐ³Ð¾Ð²ÑƒÐ²Ð°Ð½Ð½Ñ. Ð©Ð¾Ð± Ð´Ð¾Ð¿ÑƒÑÑ‚Ð¸Ñ‚Ð¸ Ñ†ÑŽ ÑÐ¸ÑÑ‚ÐµÐ¼Ñƒ Ð´Ð¾ Ð¾Ð±ÑÐ»ÑƒÐ³Ð¾Ð²ÑƒÐ²Ð°Ð½Ð½Ñ, ÑƒÐ²Ñ–Ð¹Ð´Ñ–Ñ‚ÑŒ Ð´Ð¾ "
"ÑÐ¸ÑÑ‚ÐµÐ¼Ð¸ Ð½Ð° Ñ†ÑŒÐ¾Ð¼Ñƒ ÑÐ°Ð¹Ñ‚Ñ–:\n"
"\n"
"  %(entitlement_url)s\n"

#: ../server/rhnChannel.py:2303
#, python-format
msgid ""
"\n"
"  This system has been successfully registered, but no service entitlements\n"
"  were available.  To entitle this system to service, login to the web site "
"at:\n"
"\n"
"  %(entitlement_url)s\n"
msgstr ""
"\n"
"  Ð¦ÑŽ ÑÐ¸ÑÑ‚ÐµÐ¼Ñƒ ÑƒÑÐ¿Ñ–ÑˆÐ½Ð¾ Ð·Ð°Ñ€ÐµÑ”ÑÑ‚Ñ€Ð¾Ð²Ð°Ð½Ð¾, Ð°Ð»Ðµ Ð½Ðµ Ð²Ð¸ÑÐ²Ð»ÐµÐ½Ð¾ Ð´Ð¾Ð¿ÑƒÑÐºÑ–Ð² Ð´Ð¾ "
"Ð¾Ð±ÑÐ»ÑƒÐ³Ð¾Ð²ÑƒÐ²Ð°Ð½Ð½Ñ.\n"
"  Ð©Ð¾Ð± Ð´Ð¾Ð¿ÑƒÑÑ‚Ð¸Ñ‚Ð¸ Ñ†ÑŽ ÑÐ¸ÑÑ‚ÐµÐ¼Ñƒ Ð´Ð¾ Ð¾Ð±ÑÐ»ÑƒÐ³Ð¾Ð²ÑƒÐ²Ð°Ð½Ð½Ñ, ÑƒÐ²Ñ–Ð¹Ð´Ñ–Ñ‚ÑŒ Ð´Ð¾ ÑÐ¸ÑÑ‚ÐµÐ¼Ð¸ Ð½Ð° Ñ†ÑŒÐ¾Ð¼Ñƒ "
"ÑÐ°Ð¹Ñ‚Ñ–:\n"
"\n"
"  %(entitlement_url)s\n"

#: ../server/rhnHandler.py:62
msgid "Please run rhn_register as root on this client"
msgstr ""
"Ð‘ÑƒÐ´ÑŒ Ð»Ð°ÑÐºÐ°, Ð·Ð°Ð¿ÑƒÑÑ‚Ñ–Ñ‚ÑŒ Ð´Ð»Ñ Ñ†Ñ–Ñ”Ñ— ÐºÐ»Ñ–Ñ”Ð½Ñ‚ÑÑŒÐºÐ¾Ñ— ÑÐ¸ÑÑ‚ÐµÐ¼Ð¸ rhn_register Ð²Ñ–Ð´ Ñ–Ð¼ÐµÐ½Ñ– "
"Ð°Ð´Ð¼Ñ–Ð½Ñ–ÑÑ‚Ñ€Ð°Ñ‚Ð¾Ñ€Ð° (root)"

#: ../server/rhnHandler.py:75
#, python-format
msgid "Service not enabled for system profile: \"%s\""
msgstr "Ð¡Ð»ÑƒÐ¶Ð±Ñƒ Ð½Ðµ ÑƒÐ²Ñ–Ð¼ÐºÐ½ÐµÐ½Ð¾ Ð´Ð»Ñ Ð¿Ñ€Ð¾Ñ„Ñ–Ð»ÑŽ ÑÐ¸ÑÑ‚ÐµÐ¼Ð¸: Â«%sÂ»"

#: ../server/rhnPackage.py:49 ../server/rhnPackage.py:87
#: ../server/rhnPackage.py:107 ../server/rhnPackage.py:158
#, python-format
msgid "Invalid RPM package %s requested"
msgstr "ÐÐ°Ð´Ñ–ÑÐ»Ð°Ð½Ð¾ Ð·Ð°Ð¿Ð¸Ñ‚ Ñ‰Ð¾Ð´Ð¾ Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð¾Ð³Ð¾ Ð¿Ð°ÐºÑƒÐ½ÐºÐ° RPM %s"

#: ../server/rhnPackage.py:112
msgid "Package not found"
msgstr "ÐŸÐ°ÐºÑƒÐ½Ð¾Ðº Ð½Ðµ Ð·Ð½Ð°Ð¹Ð´ÐµÐ½Ð¾"

#: ../server/rhnServer/server_class.py:97
#, python-format
msgid "Architecture `%s' is not supported"
msgstr "ÐŸÑ–Ð´Ñ‚Ñ€Ð¸Ð¼ÐºÐ¸ Ð°Ñ€Ñ…Ñ–Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð¸ Â«%sÂ» Ð½Ðµ Ð¿ÐµÑ€ÐµÐ´Ð±Ð°Ñ‡ÐµÐ½Ð¾"

#: ../server/rhnServer/server_token.py:78
#, python-format
msgid "Token `%s' has more than one base channel assigned"
msgstr "Ð†Ð· ÐºÐ»ÑŽÑ‡ÐµÐ¼ Â«%sÂ» Ð¿Ð¾Ð²â€™ÑÐ·Ð°Ð½Ð¾ Ð´ÐµÐºÑ–Ð»ÑŒÐºÐ° Ð±Ð°Ð·Ð¾Ð²Ð¸Ñ… ÐºÐ°Ð½Ð°Ð»Ñ–Ð²"

#: ../server/rhnServer/server_token.py:80
msgid "Conflicting base channels"
msgstr "ÐšÐ¾Ð½Ñ„Ð»Ñ–ÐºÑ‚ Ð¾ÑÐ½Ð¾Ð²Ð½Ð¸Ñ… ÐºÐ°Ð½Ð°Ð»Ñ–Ð²"

#: ../server/rhnServer/server_token.py:190
#, python-format
msgid "Failed to add server to group %s"
msgstr "ÐÐµ Ð²Ð´Ð°Ð»Ð¾ÑÑ Ð´Ð¾Ð´Ð°Ñ‚Ð¸ ÑÐµÑ€Ð²ÐµÑ€ Ð´Ð¾ Ð³Ñ€ÑƒÐ¿Ð¸ %s"

#: ../server/rhnServer/server_token.py:503
#, python-format
msgid "Maximum usage count of %s reached"
msgstr "ÐŸÐµÑ€ÐµÐ²Ð¸Ñ‰ÐµÐ½Ð¾ Ð¼Ð°ÐºÑÐ¸Ð¼Ð°Ð»ÑŒÐ½Ñƒ ÐºÑ–Ð»ÑŒÐºÑ–ÑÑ‚ÑŒ Ð²Ð¸ÐºÐ¾Ñ€Ð¸ÑÑ‚Ð°Ð½Ð¾ %s"

#: ../server/rhnServer/server_token.py:744
msgid ""
"Stacking of re-registration tokens with different base entitlements is not "
"supported"
msgstr ""
"ÐŸÑ–Ð´Ñ‚Ñ€Ð¸Ð¼ÐºÐ¸ ÑÑ‚Ð¾ÑÑƒÐ²Ð°Ð½Ð½Ñ Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€Ð½Ð¸Ñ… Ñ€ÐµÑ”ÑÑ‚Ñ€Ð°Ñ†Ñ–Ð¹Ð½Ð¸Ñ… ÐºÐ»ÑŽÑ‡Ñ–Ð² Ñ–Ð· Ñ€Ñ–Ð·Ð½Ð¸Ð¼Ð¸ Ð±Ð°Ð·Ð¾Ð²Ð¸Ð¼Ð¸ "
"Ð¿Ñ€Ð¸Ð²â€™ÑÐ·ÐºÐ°Ð¼Ð¸ Ð½Ðµ Ð¿ÐµÑ€ÐµÐ´Ð±Ð°Ñ‡ÐµÐ½Ð¾"

#: ../server/rhnServer/server_token.py:811
#, python-format
msgid "Could not find token '%s'"
msgstr "ÐÐµ Ð²Ð´Ð°Ð»Ð¾ÑÑ Ð·Ð½Ð°Ð¹Ñ‚Ð¸ ÐºÐ»ÑŽÑ‡ Â«%sÂ»"

#. Cannot use activation keys from different orgs
#: ../server/rhnServer/server_token.py:843
msgid "Tokens from mismatching orgs"
msgstr "ÐšÐ»ÑŽÑ‡Ñ– Ð· Ð½ÐµÐ²Ñ–Ð´Ð¿Ð¾Ð²Ñ–Ð´Ð½Ð¸Ñ… ÑƒÑÑ‚Ð°Ð½Ð¾Ð²"

#. Two tokens with different kickstart sessions
#: ../server/rhnServer/server_token.py:853
msgid "Kickstart session mismatch"
msgstr "ÐÐµÐ²Ñ–Ð´Ð¿Ð¾Ð²Ñ–Ð´Ð½Ñ–ÑÑ‚ÑŒ ÑÐµÐ°Ð½ÑÑ–Ð² kickstart"

#: ../server/rhnServer/server_token.py:877
msgid "Stacking of re-registration tokens is not supported"
msgstr "ÐŸÑ–Ð´Ñ‚Ñ€Ð¸Ð¼ÐºÐ¸ ÑÑ‚Ð¾ÑÑƒÐ²Ð°Ð½Ð½Ñ Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€Ð½Ð¸Ñ… Ñ€ÐµÑ”ÑÑ‚Ñ€Ð°Ñ†Ñ–Ð¹Ð½Ð¸Ñ… ÐºÐ»ÑŽÑ‡Ñ–Ð² Ð½Ðµ Ð¿ÐµÑ€ÐµÐ´Ð±Ð°Ñ‡ÐµÐ½Ð¾"

#: ../server/rhnUser.py:289 ../server/rhnUser.py:292
msgid "Invalid username/password combination"
msgstr "ÐÐµÐ¿Ñ€Ð¸Ð¿ÑƒÑÑ‚Ð¸Ð¼Ð° ÐºÐ¾Ð¼Ð±Ñ–Ð½Ð°Ñ†Ñ–Ñ Ñ–Ð¼'Ñ/Ð¿Ð°Ñ€Ð¾Ð»ÑŒ"

#. nope, not reserved either
#: ../server/rhnUser.py:467
#, python-format
msgid "Username `%s' has not been reserved"
msgstr "Ð†Ð¼â€™Ñ ÐºÐ¾Ñ€Ð¸ÑÑ‚ÑƒÐ²Ð°Ñ‡Ð° Â«%sÂ» Ð½Ðµ Ð±ÑƒÐ»Ð¾ Ð·Ð°Ñ€ÐµÐ·ÐµÑ€Ð²Ð¾Ð²Ð°Ð½Ð¾"

#. New accounts have to specify an e-mail address
#: ../server/rhnUser.py:473
msgid "E-mail address not specified"
msgstr "ÐÐµ Ð²ÐºÐ°Ð·Ð°Ð½Ð¾ Ð°Ð´Ñ€ÐµÑÑƒ ÐµÐ»ÐµÐºÑ‚Ñ€Ð¾Ð½Ð½Ð¾Ñ— Ð¿Ð¾ÑˆÑ‚Ð¸"

#: ../server/rhnUser.py:509
#, python-format
msgid "username should be at least %d characters"
msgstr "Ñ–Ð¼â€™Ñ ÐºÐ¾Ñ€Ð¸ÑÑ‚ÑƒÐ²Ð°Ñ‡Ð° Ð¼Ð°Ñ” ÑÐºÐ»Ð°Ð´Ð°Ñ‚Ð¸ÑÑ Ð¿Ñ€Ð¸Ð½Ð°Ð¹Ð¼Ð½Ñ– Ð· %d ÑÐ¸Ð¼Ð²Ð¾Ð»Ñ–Ð²"

#: ../server/rhnUser.py:512
#, python-format
msgid "username should be less than %d characters"
msgstr "Ð´Ð¾Ð²Ð¶Ð¸Ð½Ð° Ñ–Ð¼ÐµÐ½Ñ– ÐºÐ¾Ñ€Ð¸ÑÑ‚ÑƒÐ²Ð°Ñ‡Ð° Ð½Ðµ Ð¿Ð¾Ð²Ð¸Ð½Ð½Ð° Ð¿ÐµÑ€ÐµÐ²Ð¸Ñ‰ÑƒÐ²Ð°Ñ‚Ð¸ %d ÑÐ¸Ð¼Ð²Ð¾Ð»Ñ–Ð²"

#: ../server/rhnUser.py:523
#, python-format
msgid "username = `%s', invalid character `%s'"
msgstr "Ñ–Ð¼'Ñ ÐºÐ¾Ñ€Ð¸ÑÑ‚ÑƒÐ²Ð°Ñ‡Ð° = Â«%sÂ», Ð½ÐµÐ¿Ñ€Ð¸Ð¿ÑƒÑÑ‚Ð¸Ð¼Ð¸Ð¹ ÑÐ¸Ð¼Ð²Ð¾Ð» Â«%sÂ»"

#: ../server/rhnUser.py:542
#, python-format
msgid "Please limit your e-mail address to %s chars"
msgstr ""
"Ð‘ÑƒÐ´ÑŒ Ð»Ð°ÑÐºÐ°, Ð²ÐºÐ°Ð¶Ñ–Ñ‚ÑŒ Ð°Ð´Ñ€ÐµÑÑƒ ÐµÐ»ÐµÐºÑ‚Ñ€Ð¾Ð½Ð½Ð¾Ñ— Ð¿Ð¾ÑˆÑ‚Ð¸, Ñ‰Ð¾ Ð½Ðµ Ð¿ÐµÑ€ÐµÐ²Ð¸Ñ‰ÑƒÑ” %s ÑÐ¸Ð¼Ð²Ð¾Ð»Ñ–Ð² Ñƒ "
"Ð´Ð¾Ð²Ð¶Ð¸Ð½Ñƒ"

#: ../server/rhnUser.py:623
#, python-format
msgid "password must be at least %d characters"
msgstr "Ð¿Ð°Ñ€Ð¾Ð»ÑŒ Ð¼Ð°Ñ” ÑÐºÐ»Ð°Ð´Ð°Ñ‚Ð¸ÑÑ Ð¿Ñ€Ð¸Ð½Ð°Ð¹Ð¼Ð½Ñ– Ð· %d ÑÐ¸Ð¼Ð²Ð¾Ð»Ñ–Ð²"

#: ../server/rhnUser.py:626
#, python-format
msgid "Password must be shorter than %d characters"
msgstr "ÐŸÐ°Ñ€Ð¾Ð»ÑŒ Ð¼Ð°Ñ” Ð½Ðµ Ð¿ÐµÑ€ÐµÐ²Ð¸Ñ‰ÑƒÐ²Ð°Ñ‚Ð¸ %d ÑÐ¸Ð¼Ð²Ð¾Ð»Ñ–Ð² Ñƒ Ð´Ð¾Ð²Ð¶Ð¸Ð½Ñƒ"

#: ../server/rhnUser.py:644
#, python-format
msgid "password contains character `%s'"
msgstr "Ð¿Ð°Ñ€Ð¾Ð»ÑŒ Ð¼Ñ–ÑÑ‚Ð¸Ñ‚ÑŒ ÑÐ¸Ð¼Ð²Ð¾Ð» Â«%sÂ»"

#: ../server/rhnUser.py:651
#, python-format
msgid "username should be at least %d characters long"
msgstr "Ñ–Ð¼â€™Ñ ÐºÐ¾Ñ€Ð¸ÑÑ‚ÑƒÐ²Ð°Ñ‡Ð° Ð¼Ð°Ñ” ÑÐºÐ»Ð°Ð´Ð°Ñ‚Ð¸ÑÑ Ð¿Ñ€Ð¸Ð½Ð°Ð¹Ð¼Ð½Ñ– Ð· %d ÑÐ¸Ð¼Ð²Ð¾Ð»Ñ–Ð²"

#: ../server/rhnUser.py:662
#, python-format
msgid "Cannot register usernames ending with %s"
msgstr "ÐÐµ Ð¼Ð¾Ð¶Ð½Ð° Ñ€ÐµÑ”ÑÑ‚Ñ€ÑƒÐ²Ð°Ñ‚Ð¸ Ñ–Ð¼â€™Ñ ÐºÐ¾Ñ€Ð¸ÑÑ‚ÑƒÐ²Ð°Ñ‡Ð°, Ñ‰Ð¾ Ð·Ð°Ð²ÐµÑ€ÑˆÑƒÑ”Ñ‚ÑŒÑÑ Ð½Ð° %s"

#. 0-999: Red Hat client/client-like interaction errors:
#: ../common/rhnException.py:53
msgid "This does not appear to be a valid username."
msgstr "Ð—Ð´Ð°Ñ”Ñ‚ÑŒÑÑ, Ñ†Ðµ Ð½Ðµ Ñ” ÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð¸Ð¼ Ñ–Ð¼ÐµÐ½ÐµÐ¼ ÐºÐ¾Ñ€Ð¸ÑÑ‚ÑƒÐ²Ð°Ñ‡Ð°."

#: ../common/rhnException.py:54
msgid "Invalid username and password combination."
msgstr "ÐÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ðµ Ð¿Ð¾Ñ”Ð´Ð½Ð°Ð½Ð½Ñ Ñ–Ð¼ÐµÐ½Ñ– ÐºÐ¾Ñ€Ð¸ÑÑ‚ÑƒÐ²Ð°Ñ‡Ð° Ñ– Ð¿Ð°Ñ€Ð¾Ð»Ñ."

#: ../common/rhnException.py:55
msgid "This login is already taken, or the password is incorrect."
msgstr "Ð¦Ðµ Ñ–Ð¼â€™Ñ ÐºÐ¾Ñ€Ð¸ÑÑ‚ÑƒÐ²Ð°Ñ‡Ð° Ð²Ð¶Ðµ Ð²Ð¸ÐºÐ¾Ñ€Ð¸ÑÑ‚Ð°Ð½Ð¾ Ð°Ð±Ð¾ Ð²ÐºÐ°Ð·Ð°Ð½Ð¾ Ð½ÐµÐ¿Ñ€Ð°Ð²Ð¸Ð»ÑŒÐ½Ð¸Ð¹ Ð¿Ð°Ñ€Ð¾Ð»ÑŒ."

#: ../common/rhnException.py:56
msgid "Permission denied."
msgstr "Ð”Ð¾ÑÑ‚ÑƒÐ¿ Ð·Ð°Ð±Ð¾Ñ€Ð¾Ð½ÐµÐ½Ð¾."

#: ../common/rhnException.py:57
msgid "Object not found."
msgstr "ÐžÐ±â€™Ñ”ÐºÑ‚ Ð½Ðµ Ð·Ð½Ð°Ð¹Ð´ÐµÐ½Ð¾."

#: ../common/rhnException.py:58
msgid "Invalid System Digital ID."
msgstr "ÐÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð¸Ð¹ Ñ†Ð¸Ñ„Ñ€Ð¾Ð²Ð¸Ð¹ Ñ–Ð´ÐµÐ½Ñ‚Ð¸Ñ„Ñ–ÐºÐ°Ñ‚Ð¾Ñ€ ÑÐ¸ÑÑ‚ÐµÐ¼Ð¸."

#: ../common/rhnException.py:59
msgid "Invalid System Credentials."
msgstr "ÐÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ñ– Ñ€ÐµÑ”ÑÑ‚Ñ€Ð°Ñ†Ñ–Ð¹Ð½Ñ– Ð´Ð°Ð½Ñ– ÑÐ¸ÑÑ‚ÐµÐ¼Ð¸."

#: ../common/rhnException.py:60
msgid "Could not retrieve user data from database."
msgstr "ÐÐµ Ð²Ð´Ð°Ð»Ð¾ÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ Ð´Ð°Ð½Ñ– ÐºÐ¾Ñ€Ð¸ÑÑ‚ÑƒÐ²Ð°Ñ‡Ð° Ð· Ð±Ð°Ð·Ð¸ Ð´Ð°Ð½Ð¸Ñ…."

#: ../common/rhnException.py:61
msgid "Valid username required."
msgstr "ÐŸÐ¾Ñ‚Ñ€Ñ–Ð±Ð½Ðµ ÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ðµ Ñ–Ð¼â€™Ñ ÐºÐ¾Ñ€Ð¸ÑÑ‚ÑƒÐ²Ð°Ñ‡Ð°."

#: ../common/rhnException.py:62
msgid "Valid password required."
msgstr "ÐŸÐ¾Ñ‚Ñ€Ñ–Ð±ÐµÐ½ ÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð¸Ð¹ Ð¿Ð°Ñ€Ð¾Ð»ÑŒ."

#: ../common/rhnException.py:63
msgid "Minimum username length violation."
msgstr "ÐŸÐ¾Ñ€ÑƒÑˆÐµÐ½Ð¾ Ð¾Ð±Ð¼ÐµÐ¶ÐµÐ½Ð½Ñ Ð½Ð° Ð¼Ñ–Ð½Ñ–Ð¼Ð°Ð»ÑŒÐ½Ñƒ Ð´Ð¾Ð²Ð¶Ð¸Ð½Ñƒ Ñ–Ð¼ÐµÐ½Ñ– ÐºÐ¾Ñ€Ð¸ÑÑ‚ÑƒÐ²Ð°Ñ‡Ð°."

#: ../common/rhnException.py:64
msgid "Minimum password length violation."
msgstr "ÐŸÐ¾Ñ€ÑƒÑˆÐµÐ½Ð½Ñ Ð¾Ð±Ð¼ÐµÐ¶ÐµÐ½Ð½Ñ Ð½Ð° Ð¼Ñ–Ð½Ñ–Ð¼Ð°Ð»ÑŒÐ½Ñƒ Ð´Ð¾Ð²Ð¶Ð¸Ð½Ñƒ Ð¿Ð°Ñ€Ð¾Ð»Ñ."

#: ../common/rhnException.py:65
msgid "The username contains invalid characters."
msgstr "Ð£ Ñ–Ð¼ÐµÐ½Ñ– ÐºÐ¾Ñ€Ð¸ÑÑ‚ÑƒÐ²Ð°Ñ‡Ð° Ð¼Ñ–ÑÑ‚ÑÑ‚ÑŒÑÑ Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ñ– ÑÐ¸Ð¼Ð²Ð¾Ð»Ð¸."

#: ../common/rhnException.py:66
msgid "File not found."
msgstr "Ð¤Ð°Ð¹Ð» Ð½Ðµ Ð·Ð½Ð°Ð¹Ð´ÐµÐ½Ð¾."

#: ../common/rhnException.py:67
msgid "Architecture and OS version combination is not supported."
msgstr ""
"ÐŸÑ–Ð´Ñ‚Ñ€Ð¸Ð¼ÐºÐ¸ Ñ‚Ð°ÐºÐ¾Ñ— ÐºÐ¾Ð¼Ð±Ñ–Ð½Ð°Ñ†Ñ–Ñ— Ð°Ñ€Ñ…Ñ–Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð¸ Ñ– Ð²ÐµÑ€ÑÑ–Ñ— Ð¾Ð¿ÐµÑ€Ð°Ñ†Ñ–Ð¹Ð½Ð¾Ñ— ÑÐ¸ÑÑ‚ÐµÐ¼Ð¸ Ð½Ðµ "
"Ð¿ÐµÑ€ÐµÐ´Ð±Ð°Ñ‡ÐµÐ½Ð¾."

#: ../common/rhnException.py:68
msgid "Could not retrieve system data from database."
msgstr "ÐÐµ Ð²Ð´Ð°Ð»Ð¾ÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ Ð´Ð°Ð½Ñ– Ñ‰Ð¾Ð´Ð¾ ÑÐ¸ÑÑ‚ÐµÐ¼Ð¸ Ñ–Ð· Ð±Ð°Ð·Ð¸ Ð´Ð°Ð½Ð¸Ñ…."

#: ../common/rhnException.py:69
msgid "Invalid arguments passed to function."
msgstr "Ð¤ÑƒÐ½ÐºÑ†Ñ–Ñ— Ð¿ÐµÑ€ÐµÐ´Ð°Ð½Ð¾ Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ñ– Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð¸."

#: ../common/rhnException.py:70
msgid "Unable to retrieve requested entry."
msgstr "ÐÐµ Ð²Ð´Ð°Ð»Ð¾ÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ Ð¿Ð¾Ñ‚Ñ€Ñ–Ð±Ð½Ð¸Ð¹ Ð·Ð°Ð¿Ð¸Ñ."

#: ../common/rhnException.py:71
msgid "Could not update database entry."
msgstr "ÐÐµ Ð²Ð´Ð°Ð»Ð¾ÑÑ Ð¾Ð½Ð¾Ð²Ð¸Ñ‚Ð¸ Ð·Ð°Ð¿Ð¸Ñ Ñƒ Ð±Ð°Ð·Ñ– Ð´Ð°Ð½Ð¸Ñ…."

#: ../common/rhnException.py:72
msgid "Unsupported server architecture."
msgstr "ÐÐµÐ¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÑƒÐ²Ð°Ð½Ð° Ð°Ñ€Ñ…Ñ–Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð° ÑÐµÑ€Ð²ÐµÑ€Ð°."

#: ../common/rhnException.py:73
#, fuzzy, python-format
msgid ""
"\n"
"     The anonymous server functionality is no longer available.\n"
"\n"
"     Please re-register this system by running mgr_register as root.\n"
"     Please visit https://%(hostname)s/rhn/systems/SystemEntitlements.do\n"
"     or login at https://%(hostname)s, and from the \"Overview\" tab,\n"
"     select \"Subscription Management\" to enable the service for this "
"system.\n"
"     "
msgstr ""
"\n"
"     Ð¤ÑƒÐ½ÐºÑ†Ñ–Ð¾Ð½Ð°Ð»ÑŒÐ½Ñ– Ð¼Ð¾Ð¶Ð»Ð¸Ð²Ð¾ÑÑ‚Ñ– Ð°Ð½Ð¾Ð½Ñ–Ð¼Ð½Ð¾Ð³Ð¾ ÑÐµÑ€Ð²ÐµÑ€Ð° Ð±Ñ–Ð»ÑŒÑˆÐµ Ð½Ðµ Ð´Ð¾ÑÑ‚ÑƒÐ¿Ð½Ñ–.\n"
"\n"
"     Ð‘ÑƒÐ´ÑŒ Ð»Ð°ÑÐºÐ°, Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€Ð½Ð¾ Ð·Ð°Ñ€ÐµÑ”ÑÑ‚Ñ€ÑƒÐ¹Ñ‚Ðµ Ñ†ÑŽ ÑÐ¸ÑÑ‚ÐµÐ¼Ñƒ Ð·Ð° Ð´Ð¾Ð¿Ð¾Ð¼Ð¾Ð³Ð¾ÑŽ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð¸ "
"rhn_register,\n"
"     Ð²Ñ–Ð´Ð´Ð°Ð½Ð¾Ñ— Ð²Ñ–Ð´ Ñ–Ð¼ÐµÐ½Ñ– ÐºÐ¾Ñ€Ð¸ÑÑ‚ÑƒÐ²Ð°Ñ‡Ð° root.\n"
"     Ð‘ÑƒÐ´ÑŒ Ð»Ð°ÑÐºÐ°, Ð²Ñ–Ð´Ð²Ñ–Ð´Ð°Ð¹Ñ‚Ðµ https://%(hostname)s/rhn/systems/"
"SystemEntitlements.do\n"
"     Ð°Ð±Ð¾ ÑƒÐ²Ñ–Ð¹Ð´Ñ–Ñ‚ÑŒ Ð´Ð¾ ÑÐ¸ÑÑ‚ÐµÐ¼Ð¸ Ð½Ð° ÑÑ‚Ð¾Ñ€Ñ–Ð½Ñ†Ñ– https://%(hostname)s, Ð° Ð¿Ð¾Ñ‚Ñ–Ð¼ Ð½Ð° "
"Ð²ÐºÐ»Ð°Ð´Ñ†Ñ– Â«ÐžÐ³Ð»ÑÐ´Â» (Â«OverviewÂ»),\n"
"     Ð²Ð¸Ð±ÐµÑ€Ñ–Ñ‚ÑŒ Â«ÐšÐµÑ€ÑƒÐ²Ð°Ð½Ð½Ñ Ð¿ÐµÑ€ÐµÐ´Ð¿Ð»Ð°Ñ‚Ð°Ð¼Ð¸Â» (Â«Subscription ManagementÂ»), Ñ‰Ð¾Ð± "
"ÑƒÐ²Ñ–Ð¼ÐºÐ½ÑƒÑ‚Ð¸ ÑÐ»ÑƒÐ¶Ð±Ñƒ Ð´Ð»Ñ Ñ†Ñ–Ñ”Ñ— ÑÐ¸ÑÑ‚ÐµÐ¼Ð¸.\n"
"     "

#: ../common/rhnException.py:81
msgid "Record not available in the database."
msgstr "Ð—Ð°Ð¿Ð¸Ñ Ñƒ Ð±Ð°Ð·Ñ– Ð´Ð°Ð½Ð¸Ñ… Ñ” Ð½ÐµÐ´Ð¾ÑÑ‚ÑƒÐ¿Ð½Ð¸Ð¼."

#: ../common/rhnException.py:82
msgid "Invalid value for entry."
msgstr "ÐÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ðµ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð´Ð»Ñ Ð·Ð°Ð¿Ð¸ÑÑƒ."

#: ../common/rhnException.py:83
#, fuzzy, python-format
msgid ""
"\n"
"     This system does not have a valid entitlement for SUSE Manager.\n"
"     Please visit https://%(hostname)s/rhn/systems/SystemEntitlements.do\n"
"     or login at https://%(hostname)s, and from the \"Overview\" tab,\n"
"     select \"Subscription Management\" to enable the service for this "
"system.\n"
"     "
msgstr ""
"\n"
"     Ð¦Ñ ÑÐ¸ÑÑ‚ÐµÐ¼Ð° Ð½Ðµ Ð¼Ð°Ñ” ÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð¾Ñ— Ñ€ÐµÑ”ÑÑ‚Ñ€Ð°Ñ†Ñ–Ñ— Ñƒ Red Hat Satellite.\n"
"     Ð‘ÑƒÐ´ÑŒ Ð»Ð°ÑÐºÐ°, Ð²Ñ–Ð´Ð²Ñ–Ð´Ð°Ð¹Ñ‚Ðµ https://%(hostname)s/rhn/systems/"
"SystemEntitlements.do\n"
"     Ð°Ð±Ð¾ ÑƒÐ²Ñ–Ð¹Ð´Ñ–Ñ‚ÑŒ Ð´Ð¾ ÑÐ¸ÑÑ‚ÐµÐ¼Ð¸ Ð½Ð° ÑÑ‚Ð¾Ñ€Ñ–Ð½Ñ†Ñ– https://%(hostname)s, Ð° Ð¿Ð¾Ñ‚Ñ–Ð¼ Ð½Ð° "
"Ð²ÐºÐ»Ð°Ð´Ñ†Ñ– Â«ÐžÐ³Ð»ÑÐ´Â» (Â«OverviewÂ»),\n"
"     Ð²Ð¸Ð±ÐµÑ€Ñ–Ñ‚ÑŒ Â«ÐšÐµÑ€ÑƒÐ²Ð°Ð½Ð½Ñ Ð¿ÐµÑ€ÐµÐ´Ð¿Ð»Ð°Ñ‚Ð°Ð¼Ð¸Â» (Â«Subscription ManagementÂ»), Ñ‰Ð¾Ð± "
"ÑƒÐ²Ñ–Ð¼ÐºÐ½ÑƒÑ‚Ð¸ ÑÐ»ÑƒÐ¶Ð±Ñƒ Ð´Ð»Ñ Ñ†Ñ–Ñ”Ñ— ÑÐ¸ÑÑ‚ÐµÐ¼Ð¸.\n"
"     \n"
"     "

#: ../common/rhnException.py:89
msgid "Channel error"
msgstr "ÐŸÐ¾Ð¼Ð¸Ð»ÐºÐ° ÐºÐ°Ð½Ð°Ð»Ñƒ"

#: ../common/rhnException.py:90
msgid "Client session token is invalid."
msgstr "ÐšÐ»ÑŽÑ‡ ÑÐµÐ°Ð½ÑÑƒ ÐºÐ»Ñ–Ñ”Ð½Ñ‚Ð° Ñ” Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð¸Ð¼."

#: ../common/rhnException.py:91
msgid "Client session token has expired."
msgstr "Ð¡Ñ‚Ñ€Ð¾Ðº Ð´Ñ–Ñ— ÐºÐ»ÑŽÑ‡Ð° ÑÐµÐ°Ð½ÑÑƒ ÐºÐ»Ñ–Ñ”Ð½Ñ‚Ð° Ð²Ð¸Ñ‡ÐµÑ€Ð¿Ð°Ð½Ð¾."

#: ../common/rhnException.py:92
msgid "You are not authorized to retrieve the requested object."
msgstr "Ð£ Ð²Ð°Ñ Ð½ÐµÐ¼Ð°Ñ” Ð¿Ñ€Ð°Ð² Ð´Ð»Ñ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ð½Ð½Ñ Ð·Ð°Ð¿Ð¸Ñ‚Ð°Ð½Ð¾Ð³Ð¾ Ð¾Ð±â€™Ñ”ÐºÑ‚Ð°."

#: ../common/rhnException.py:93
msgid "Invalid action"
msgstr "ÐÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð° Ð´Ñ–Ñ"

#: ../common/rhnException.py:94
msgid "You are not allowed to perform administrative tasks on this system."
msgstr "Ð’Ð¸ Ð½Ðµ Ð¼Ð°Ñ”Ñ‚Ðµ Ð¿Ñ€Ð°Ð²Ð° Ð²Ð¸ÐºÐ¾Ð½ÑƒÐ²Ð°Ñ‚Ð¸ Ð·Ð°Ð²Ð´Ð°Ð½Ð½Ñ Ð· Ð°Ð´Ð¼Ñ–Ð½Ñ–ÑÑ‚Ñ€ÑƒÐ²Ð°Ð½Ð½Ñ Ñƒ Ñ†Ñ–Ð¹ ÑÐ¸ÑÑ‚ÐµÐ¼Ñ–."

#: ../common/rhnException.py:96
msgid "The system is already subscribed to the specified channel."
msgstr "Ð¡Ð¸ÑÑ‚ÐµÐ¼Ñƒ Ð²Ð¶Ðµ Ð¿Ñ–Ð´Ð¿Ð¸ÑÐ°Ð½Ð¾ Ð½Ð° Ð²ÐºÐ°Ð·Ð°Ð½Ð¸Ð¹ ÐºÐ°Ð½Ð°Ð»."

#: ../common/rhnException.py:97
msgid "The system is not currently subscribed to the specified channel."
msgstr "Ð¡Ð¸ÑÑ‚ÐµÐ¼Ñƒ Ð·Ð°Ñ€Ð°Ð· Ð½Ðµ Ð¿Ñ–Ð´Ð¿Ð¸ÑÐ°Ð½Ð¾ Ð½Ð° Ð²ÐºÐ°Ð·Ð°Ð½Ð¸Ð¹ ÐºÐ°Ð½Ð°Ð»."

#: ../common/rhnException.py:98
msgid "The specified channel does not exist."
msgstr "Ð’ÐºÐ°Ð·Ð°Ð½Ð¾Ð³Ð¾ ÐºÐ°Ð½Ð°Ð»Ñƒ Ð½Ðµ Ñ–ÑÐ½ÑƒÑ”."

#: ../common/rhnException.py:99
msgid "Invalid channel version."
msgstr "ÐÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð° Ð²ÐµÑ€ÑÑ–Ñ ÐºÐ°Ð½Ð°Ð»Ñƒ."

#: ../common/rhnException.py:100
msgid ""
"\n"
"     User group membership limits exceeded.\n"
"\n"
"     The current settings for your account do not allow you to add another\n"
"     user account. Please check with the organization administrator for "
"your\n"
"     account if the maximum number of users allowed to subscribe to server "
"needs\n"
"     to be changed.\n"
"     "
msgstr ""
"\n"
"     ÐŸÐµÑ€ÐµÐ²Ð¸Ñ‰ÐµÐ½Ð¾ Ð¾Ð±Ð¼ÐµÐ¶ÐµÐ½Ð½Ñ Ð½Ð° ÑƒÑ‡Ð°ÑÑ‚ÑŒ Ñƒ Ð³Ñ€ÑƒÐ¿Ñ–.\n"
"\n"
"     ÐŸÐ¾Ñ‚Ð¾Ñ‡Ð½Ñ– Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð¸ Ð´Ð»Ñ Ð²Ð°ÑˆÐ¾Ð³Ð¾ Ð¾Ð±Ð»Ñ–ÐºÐ¾Ð²Ð¾Ð³Ð¾ Ð·Ð°Ð¿Ð¸ÑÑƒ Ð½Ðµ Ð´Ð¾Ð·Ð²Ð¾Ð»ÑÑŽÑ‚ÑŒ\n"
"     Ð´Ð¾Ð´Ð°Ð²Ð°Ð½Ð½Ñ Ñ‰Ðµ Ð¾Ð´Ð½Ð¾Ð³Ð¾ Ð¾Ð±Ð»Ñ–ÐºÐ¾Ð²Ð¾Ð³Ð¾ Ð·Ð°Ð¿Ð¸ÑÑƒ ÐºÐ¾Ñ€Ð¸ÑÑ‚ÑƒÐ²Ð°Ñ‡Ð°. Ð‘ÑƒÐ´ÑŒ Ð»Ð°ÑÐºÐ°, "
"Ð¿ÐµÑ€ÐµÐ²Ñ–Ñ€Ñ‚Ðµ\n"
"     Ñ€Ð°Ð·Ð¾Ð¼ Ñ–Ð· Ð°Ð´Ð¼Ñ–Ð½Ñ–ÑÑ‚Ñ€Ð°Ñ‚Ð¾Ñ€Ð¾Ð¼ Ð²Ð°ÑˆÐ¾Ð³Ð¾ Ð¾Ð±Ð»Ñ–ÐºÐ¾Ð²Ð¾Ð³Ð¾ Ð·Ð°Ð¿Ð¸ÑÑƒ Ñƒ Ð²Ð°ÑˆÑ–Ð¹ ÑƒÑÑ‚Ð°Ð½Ð¾Ð²Ñ–,\n"
"     Ñ‡Ð¸ ÑÐ»Ñ–Ð´ Ð·Ð¼Ñ–Ð½ÑŽÐ²Ð°Ñ‚Ð¸ Ð´Ð¾Ð·Ð²Ð¾Ð»ÐµÐ½Ñƒ Ð¼Ð°ÐºÑÐ¸Ð¼Ð°Ð»ÑŒÐ½Ñƒ ÐºÑ–Ð»ÑŒÐºÑ–ÑÑ‚ÑŒ ÐºÐ¾Ñ€Ð¸ÑÑ‚ÑƒÐ²Ð°Ñ‡Ñ–Ð²,\n"
"     ÑÐºÑ– Ð¼Ð¾Ð¶ÑƒÑ‚ÑŒ Ð¿ÐµÑ€ÐµÐ´Ð¿Ð»Ð°Ñ‡ÑƒÐ²Ð°Ñ‚Ð¸ Ð¿Ð¾ÑÐ»ÑƒÐ³Ð¸ ÑÐµÑ€Ð²ÐµÑ€Ð°.\n"
"     "

#: ../common/rhnException.py:108
msgid ""
"\n"
"     System group membership limits exceeded.\n"
"\n"
"     The current settings for your account do not allow you to add another\n"
"     system profile. Please check with the organization administrator for "
"your\n"
"     account for modifying the maximum number of system profiles that can "
"be\n"
"     subscribed to your account.\n"
"     "
msgstr ""
"\n"
"     ÐŸÐµÑ€ÐµÐ²Ð¸Ñ‰ÐµÐ½Ð¾ Ð¾Ð±Ð¼ÐµÐ¶ÐµÐ½Ð½Ñ Ð½Ð° ÑƒÑ‡Ð°ÑÑ‚ÑŒ ÑÐ¸ÑÑ‚ÐµÐ¼ Ñƒ Ð³Ñ€ÑƒÐ¿Ñ–.\n"
"\n"
"     ÐŸÐ¾Ñ‚Ð¾Ñ‡Ð½Ñ– Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð¸ Ð²Ð°ÑˆÐ¾Ð³Ð¾ Ð¾Ð±Ð»Ñ–ÐºÐ¾Ð²Ð¾Ð³Ð¾ Ð·Ð°Ð¿Ð¸ÑÑƒ Ð·Ð°Ð±Ð¾Ñ€Ð¾Ð½ÑÑŽÑ‚ÑŒ Ð´Ð¾Ð´Ð°Ð²Ð°Ð½Ð½Ñ\n"
"     Ñ‰Ðµ Ð¾Ð´Ð½Ð¾Ð³Ð¾ Ð¿Ñ€Ð¾Ñ„Ñ–Ð»ÑŽ ÑÐ¸ÑÑ‚ÐµÐ¼Ð¸. Ð‘ÑƒÐ´ÑŒ Ð»Ð°ÑÐºÐ°, Ð¿ÐµÑ€ÐµÐ²Ñ–Ñ€Ñ‚Ðµ Ñ€Ð°Ð·Ð¾Ð¼ Ñ–Ð· "
"Ð°Ð´Ð¼Ñ–Ð½Ñ–ÑÑ‚Ñ€Ð°Ñ‚Ð¾Ñ€Ð¾Ð¼\n"
"     Ð²Ð°ÑˆÐ¾Ð³Ð¾ Ð¾Ð±Ð»Ñ–ÐºÐ¾Ð²Ð¾Ð³Ð¾ Ð·Ð°Ð¿Ð¸ÑÑƒ Ð² ÑƒÑÑ‚Ð°Ð½Ð¾Ð²Ñ–, Ñ‡Ð¸ ÑÐ»Ñ–Ð´ Ð·Ð¼Ñ–Ð½Ð¸Ñ‚Ð¸ Ð¼Ð°ÐºÑÐ¸Ð¼Ð°Ð»ÑŒÐ½Ñƒ "
"ÐºÑ–Ð»ÑŒÐºÑ–ÑÑ‚ÑŒ\n"
"     Ð¿Ñ€Ð¾Ñ„Ñ–Ð»Ñ–Ð² ÑÐ¸ÑÑ‚ÐµÐ¼, ÑÐºÑ– Ð¼Ð¾Ð¶ÑƒÑ‚ÑŒ Ð¿Ñ€Ð°Ñ†ÑŽÐ²Ð°Ñ‚Ð¸ Ñƒ Ð¼ÐµÐ¶Ð°Ñ… Ð¿ÐµÑ€ÐµÐ´Ð¿Ð»Ð°Ñ‚Ð¸ Ð²Ð°ÑˆÐ¾Ð³Ð¾ "
"Ð¾Ð±Ð»Ñ–ÐºÐ¾Ð²Ð¾Ð³Ð¾ Ð·Ð°Ð¿Ð¸ÑÑƒ.\n"
"     "

#: ../common/rhnException.py:116
msgid ""
"\n"
"     Invalid architecture.\n"
"\n"
"     The architecture of the package is not supported by\n"
"     "
msgstr ""
"\n"
"     ÐÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð° Ð°Ñ€Ñ…Ñ–Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð°.\n"
"\n"
"     ÐŸÑ–Ð´Ñ‚Ñ€Ð¸Ð¼ÐºÐ¸ Ð°Ñ€Ñ…Ñ–Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð¸ Ð¿Ð°ÐºÑƒÐ½ÐºÐ° Ð½Ðµ Ð¿ÐµÑ€ÐµÐ´Ð±Ð°Ñ‡ÐµÐ½Ð¾ Ñƒ\n"
"     "

#: ../common/rhnException.py:121
msgid "Invalid RPM header"
msgstr "ÐÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð¸Ð¹ Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²Ð¾Ðº RPM"

#: ../common/rhnException.py:122
msgid ""
"\n"
"    This system is already registered as a Salt Minion. If you want to "
"register it as a traditional client\n"
"    please delete it first via the web UI or API and then register it using "
"the traditional tools.\n"
"    "
msgstr ""

#. For the uploading tools
#: ../common/rhnException.py:127
msgid "Invalid information uploaded to the server"
msgstr "ÐÐ° ÑÐµÑ€Ð²ÐµÑ€ Ð²Ð¸Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð¾ Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ñ– Ð´Ð°Ð½Ñ–"

#: ../common/rhnException.py:128
msgid "Error uploading network interfaces configuration."
msgstr "ÐŸÐ¾Ð¼Ð¸Ð»ÐºÐ° Ð¿Ñ–Ð´ Ñ‡Ð°Ñ ÑÐ¿Ñ€Ð¾Ð±Ð¸ Ð²Ð¸Ð²Ð°Ð½Ñ‚Ð°Ð¶Ð¸Ñ‚Ð¸ Ð½Ð°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ñ–Ð½Ñ‚ÐµÑ€Ñ„ÐµÐ¹ÑÑ–Ð² Ð¼ÐµÑ€ÐµÐ¶Ñ–."

#: ../common/rhnException.py:129
msgid ""
"\n"
"     Package Upload Failed due to uniqueness constraint violation.\n"
"     Make sure the package does not have any duplicate dependencies or\n"
"     does not already exists on the server\n"
"     "
msgstr ""
"\n"
"     Ð¡Ð¿Ñ€Ð¾Ð±Ð° Ð²Ð¸Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ Ð¿Ð°ÐºÑƒÐ½ÐºÐ° Ð·Ð°Ð·Ð½Ð°Ð»Ð° Ð½ÐµÐ²Ð´Ð°Ñ‡Ñ– Ñ‡ÐµÑ€ÐµÐ· Ð¿Ð¾Ñ€ÑƒÑˆÐµÐ½Ð½Ñ ÑƒÐ¼Ð¾Ð² "
"Ð¾Ð´Ð½Ð¾Ð·Ð½Ð°Ñ‡Ð½Ð¾ÑÑ‚Ñ–.\n"
"     ÐŸÐµÑ€ÐµÐºÐ¾Ð½Ð°Ð¹Ñ‚ÐµÑÑ, Ñ‰Ð¾ Ñƒ Ð¿Ð°ÐºÑƒÐ½ÐºÐ° Ð½ÐµÐ¼Ð°Ñ” Ð¿Ð¾Ð´Ð²Ñ–Ð¹Ð½Ð¸Ñ… Ð·Ð°Ð»ÐµÐ¶Ð½Ð¾ÑÑ‚ÐµÐ¹ Ñ– Ñ‰Ð¾\n"
"     Ð¿Ð°ÐºÑƒÐ½Ð¾Ðº Ð²Ð¶Ðµ Ð½Ðµ Ð·Ð±ÐµÑ€Ñ–Ð³Ð°Ñ”Ñ‚ÑŒÑÑ Ð½Ð° ÑÐµÑ€Ð²ÐµÑ€Ñ–.\n"
"     "

#: ../common/rhnException.py:134
#, fuzzy
msgid ""
"\n"
"     The --force rhnpush option is disabled on this server.\n"
"     Please contact your SUSE Manager administrator for more help.\n"
"     "
msgstr ""
"\n"
"     ÐÐ° Ñ†ÑŒÐ¾Ð¼Ñƒ ÑÐµÑ€Ð²ÐµÑ€Ñ– Ð²Ð¸Ð¼ÐºÐ½ÐµÐ½Ð¾ Ð¼Ð¾Ð¶Ð»Ð¸Ð²Ñ–ÑÑ‚ÑŒ Ð²Ð¸ÐºÐ¾Ñ€Ð¸ÑÑ‚Ð°Ð½Ð½Ñ --force rhnpush. \n"
"     Ð‘ÑƒÐ´ÑŒ Ð»Ð°ÑÐºÐ°, Ð·Ð²â€™ÑÐ¶Ñ–Ñ‚ÑŒÑÑ Ñ–Ð· Ð²Ð°ÑˆÐ¸Ð¼ Ð°Ð´Ð¼Ñ–Ð½Ñ–ÑÑ‚Ñ€Ð°Ñ‚Ð¾Ñ€Ð¾Ð¼ Satellite, Ñ‰Ð¾Ð± Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ "
"Ð´Ð¾Ð´Ð°Ñ‚ÐºÐ¾Ð²Ñ– Ð²Ñ–Ð´Ð¾Ð¼Ð¾ÑÑ‚Ñ–.\n"
"     "

#. 60-70: token errors
#: ../common/rhnException.py:140
msgid ""
"\n"
"     The activation token specified could not be found on the server.\n"
"     Please retry with a valid key.\n"
"     "
msgstr ""
"\n"
"     ÐÐµ Ð²Ð´Ð°Ð»Ð¾ÑÑ Ð·Ð½Ð°Ð¹Ñ‚Ð¸ Ð²ÐºÐ°Ð·Ð°Ð½Ð¸Ð¹ ÐºÐ»ÑŽÑ‡ Ð°ÐºÑ‚Ð¸Ð²Ð°Ñ†Ñ–Ñ— Ð½Ð° ÑÐµÑ€Ð²ÐµÑ€Ñ–.\n"
"     Ð‘ÑƒÐ´ÑŒ Ð»Ð°ÑÐºÐ°, Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€Ñ–Ñ‚ÑŒ ÑÐ¿Ñ€Ð¾Ð±Ñƒ Ñ–Ð· ÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð¸Ð¼ ÐºÐ»ÑŽÑ‡ÐµÐ¼.\n"
"     "

#: ../common/rhnException.py:144
msgid "Too many systems registered using this registration token"
msgstr ""
"Ð—Ð° Ð´Ð¾Ð¿Ð¾Ð¼Ð¾Ð³Ð¾ÑŽ Ñ†ÑŒÐ¾Ð³Ð¾ Ñ€ÐµÑ”ÑÑ‚Ñ€Ð°Ñ†Ñ–Ð¹Ð½Ð¾Ð³Ð¾ ÐºÐ»ÑŽÑ‡Ð° Ð·Ð°Ñ€ÐµÑ”ÑÑ‚Ñ€Ð¾Ð²Ð°Ð½Ð¾ Ð½Ð°Ð´Ñ‚Ð¾ Ð±Ð°Ð³Ð°Ñ‚Ð¾ ÑÐ¸ÑÑ‚ÐµÐ¼"

#: ../common/rhnException.py:145
msgid "Token contains invalid, obsoleted or insufficient settings"
msgstr "Ð£ ÐºÐ»ÑŽÑ‡Ñ– Ð¼Ñ–ÑÑ‚ÑÑ‚ÑŒÑÑ Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ñ–, Ð·Ð°ÑÑ‚Ð°Ñ€Ñ–Ð»Ñ– Ð°Ð±Ð¾ Ð½ÐµÐ´Ð¾ÑÑ‚Ð°Ñ‚Ð½Ñ– Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð¸"

#: ../common/rhnException.py:146
msgid "Conflicting activation tokens"
msgstr "ÐšÐ¾Ð½Ñ„Ð»Ñ–ÐºÑ‚ ÐºÐ»ÑŽÑ‡Ñ–Ð² Ð°ÐºÑ‚Ð¸Ð²Ð°Ñ†Ñ–Ñ—"

#. 70-80: channel subscription errors
#: ../common/rhnException.py:149
msgid ""
"\n"
"     No matching base channel found for your system.\n"
"     "
msgstr ""
"\n"
"     Ð”Ð»Ñ Ð²Ð°ÑˆÐ¾Ñ— ÑÐ¸ÑÑ‚ÐµÐ¼Ð¸ Ð½Ðµ Ð·Ð½Ð°Ð¹Ð´ÐµÐ½Ð¾ Ð²Ñ–Ð´Ð¿Ð¾Ð²Ñ–Ð´Ð½Ð¾Ð³Ð¾ Ð±Ð°Ð·Ð¾Ð²Ð¾Ð³Ð¾ ÐºÐ°Ð½Ð°Ð»Ñƒ.\n"
"     "

#: ../common/rhnException.py:152
msgid ""
"\n"
"     You do not have subscription permission to the designated channel.\n"
"     Please refer to your organization's channel or organization\n"
"     administrators for further details.\n"
"     "
msgstr ""
"\n"
"     Ð£ Ð²Ð°Ñ Ð½ÐµÐ¼Ð°Ñ” Ð¿Ñ€Ð°Ð²Ð° Ð¿Ñ–Ð´Ð¿Ð¸ÑÑƒÐ²Ð°Ñ‚Ð¸ÑÑ Ð½Ð° Ð²ÐºÐ°Ð·Ð°Ð½Ð¸Ð¹ ÐºÐ°Ð½Ð°Ð».\n"
"     Ð‘ÑƒÐ´ÑŒ Ð»Ð°ÑÐºÐ°, Ð·Ð²ÐµÑ€Ð½Ñ–Ñ‚ÑŒÑÑ Ð´Ð¾ Ð¾Ð¿Ð¸ÑÑƒ ÐºÐ°Ð½Ð°Ð»Ñƒ Ð²Ð°ÑˆÐ¾Ñ— Ð¾Ñ€Ð³Ð°Ð½Ñ–Ð·Ð°Ñ†Ñ–Ñ— Ð°Ð±Ð¾\n"
"     Ð´Ð¾ Ð°Ð´Ð¼Ñ–Ð½Ñ–ÑÑ‚Ñ€Ð°Ñ‚Ð¾Ñ€Ñ–Ð² Ð¾Ñ€Ð³Ð°Ð½Ñ–Ð·Ð°Ñ†Ñ–Ñ—, Ñ‰Ð¾Ð± Ð´Ñ–Ð·Ð½Ð°Ñ‚Ð¸ÑÑ Ð±Ñ–Ð»ÑŒÑˆÐµ.\n"
"     "

#: ../common/rhnException.py:157
msgid "You can not unsubscribe from base channel."
msgstr "ÐÐµ Ð¼Ð¾Ð¶Ð½Ð° Ð²Ñ–Ð´Ð¿Ð¸ÑÐ°Ñ‚Ð¸ÑÑ Ð²Ñ–Ð´ Ð±Ð°Ð·Ð¾Ð²Ð¾Ð³Ð¾ ÐºÐ°Ð½Ð°Ð»Ñƒ."

#: ../common/rhnException.py:158
#, fuzzy
msgid "SUSE Manager or Proxy channel can not be subscribed."
msgstr "ÐÐµ Ð²Ð´Ð°Ð»Ð¾ÑÑ Ð¿ÐµÑ€ÐµÐ´Ð¿Ð»Ð°Ñ‚Ð¸Ñ‚Ð¸ ÐºÐ°Ð½Ð°Ð» Satellite Ð°Ð±Ð¾ Proxy."

#. 80-90: server group errors
#: ../common/rhnException.py:161
msgid "There was an error while trying to join the system to its groups"
msgstr "ÐŸÑ–Ð´ Ñ‡Ð°Ñ ÑÐ¿Ñ€Ð¾Ð±Ð¸ Ð´Ð¾Ð»ÑƒÑ‡Ð¸Ñ‚Ð¸ ÑÐ¸ÑÑ‚ÐµÐ¼Ñƒ Ð´Ð¾ Ñ—Ñ— Ð³Ñ€ÑƒÐ¿ ÑÑ‚Ð°Ð»Ð°ÑÑ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°"

#. 90-100: entitlement errors
#: ../common/rhnException.py:164
msgid "Unable to entitle system"
msgstr "ÐÐµ Ð²Ð´Ð°Ð»Ð¾ÑÑ Ð¿Ñ€Ð¸Ð²â€™ÑÐ·Ð°Ñ‚Ð¸ ÑÐ¸ÑÑ‚ÐµÐ¼Ñƒ"

#. 100-109: e-mail and uuid related faults
#: ../common/rhnException.py:167
msgid "Maximum e-mail length violation."
msgstr "ÐŸÐµÑ€ÐµÐ²Ð¸Ñ‰ÐµÐ½Ð½Ñ Ð¾Ð±Ð¼ÐµÐ¶ÐµÐ½Ð½Ñ Ð½Ð° Ð¼Ð°ÐºÑÐ¸Ð¼Ð°Ð»ÑŒÐ½Ð¸Ð¹ Ñ€Ð¾Ð·Ð¼Ñ–Ñ€ Ð¿Ð¾ÑˆÑ‚Ð¾Ð²Ð¾Ð³Ð¾ Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ."

#: ../common/rhnException.py:168
msgid "This system has been previously registered."
msgstr "Ð¦ÑŽ ÑÐ¸ÑÑ‚ÐµÐ¼Ñƒ Ð²Ð¶Ðµ Ð±ÑƒÐ»Ð¾ Ð·Ð°Ñ€ÐµÑ”ÑÑ‚Ñ€Ð¾Ð²Ð°Ð½Ð¾."

#: ../common/rhnException.py:169
msgid "Invalid username"
msgstr "ÐÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ðµ Ñ–Ð¼â€™Ñ ÐºÐ¾Ñ€Ð¸ÑÑ‚ÑƒÐ²Ð°Ñ‡Ð°"

#. 140-159 applet errors
#: ../common/rhnException.py:172
msgid "Unable to look up server"
msgstr "ÐÐµ Ð²Ð´Ð°Ð»Ð¾ÑÑ Ð·Ð½Ð°Ð¹Ñ‚Ð¸ ÑÐµÑ€Ð²ÐµÑ€"

#. 160-179: OSAD errors
#: ../common/rhnException.py:175
msgid "Required argument is missing"
msgstr "ÐŸÑ€Ð¾Ð¿ÑƒÑ‰ÐµÐ½Ð¾ Ð¾Ð±Ð¾Ð²â€™ÑÐ·ÐºÐ¾Ð²Ð¸Ð¹ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚"

#. 600-699: RHEL5+ EN errors
#: ../common/rhnException.py:178
msgid "No entitlement information tied to hardware"
msgstr "Ð— Ð¾Ð±Ð»Ð°Ð´Ð½Ð°Ð½Ð½ÑÐ¼ Ð½Ðµ Ð¿Ð¾Ð²â€™ÑÐ·Ð°Ð½Ð¾ Ñ€ÐµÑ”ÑÑ‚Ñ€Ð°Ñ†Ñ–Ð¹Ð½Ð¸Ñ… Ð´Ð°Ð½Ð¸Ñ…"

#: ../common/rhnException.py:179
msgid "Installation number is not entitling"
msgstr "ÐšÑ–Ð»ÑŒÐºÑ–ÑÑ‚ÑŒ Ð²ÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½ÑŒ Ð½Ðµ Ð´Ð¾Ð¿ÑƒÑÐºÐ°Ñ” Ð´Ð¾ Ð¾Ð±ÑÐ»ÑƒÐ³Ð¾Ð²ÑƒÐ²Ð°Ð½Ð½Ñ"

#. 700-799: Additional user input verification errors.
#: ../common/rhnException.py:182
msgid "Maximum username length violation"
msgstr "ÐŸÐµÑ€ÐµÐ²Ð¸Ñ‰ÐµÐ½Ð¾ Ð¼Ð°ÐºÑÐ¸Ð¼Ð°Ð»ÑŒÐ½Ñƒ Ð´Ð¾Ð²Ð¶Ð¸Ð½Ñƒ Ñ–Ð¼ÐµÐ½Ñ– ÐºÐ¾Ñ€Ð¸ÑÑ‚ÑƒÐ²Ð°Ñ‡Ð°"

#: ../common/rhnException.py:183
msgid "Maximum password length violation"
msgstr "ÐŸÐµÑ€ÐµÐ²Ð¸Ñ‰ÐµÐ½Ð½Ñ Ð¼Ð°ÐºÑÐ¸Ð¼Ð°Ð»ÑŒÐ½Ð¾Ñ— Ð´Ð¾Ð²Ð¶Ð¸Ð½Ð¸ Ð¿Ð°Ñ€Ð¾Ð»Ñ"

#: ../common/rhnException.py:184
msgid "This user has read only API access. Action denied."
msgstr ""
"Ð£ Ñ†ÑŒÐ¾Ð³Ð¾ ÐºÐ¾Ñ€Ð¸ÑÑ‚ÑƒÐ²Ð°Ñ‡Ð° Ñ” Ð´Ð¾ÑÑ‚ÑƒÐ¿ Ð»Ð¸ÑˆÐµ Ð´Ð¾ Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ Ð·Ð° Ð´Ð¾Ð¿Ð¾Ð¼Ð¾Ð³Ð¾ÑŽ API. Ð”Ñ–ÑŽ "
"Ð·Ð°Ð±Ð¾Ñ€Ð¾Ð½ÐµÐ½Ð¾."

#: ../common/rhnException.py:186
msgid "System Name cannot be less than 1 character"
msgstr "ÐÐ°Ð·Ð²Ð° ÑÐ¸ÑÑ‚ÐµÐ¼Ð¸ Ð¼Ð°Ñ” ÑÐºÐ»Ð°Ð´Ð°Ñ‚Ð¸ÑÑ Ñ–Ð· Ð¿Ñ€Ð¸Ð½Ð°Ð¹Ð¼Ð½Ñ– 1 ÑÐ¸Ð¼Ð²Ð¾Ð»Ñƒ"

#. 1000-1999: Proxy specific errors:
#. issued by a Proxy to the client
#: ../common/rhnException.py:190
#, fuzzy
msgid "SUSE Manager Proxy error."
msgstr "ÐŸÐ¾Ð¼Ð¸Ð»ÐºÐ° Ð¿Ñ€Ð¾ÐºÑÑ–-ÑÐµÑ€Ð²ÐµÑ€Ð° Spacewalk."

#: ../common/rhnException.py:191
#, fuzzy
msgid "SUSE Manager Proxy unable to login."
msgstr "ÐÐµ Ð²Ð´Ð°Ð»Ð¾ÑÑ ÑƒÐ²Ñ–Ð¹Ñ‚Ð¸ Ð´Ð¾ ÑÐ¸ÑÑ‚ÐµÐ¼Ð¸ Ð¿Ñ€Ð¾ÐºÑÑ–-ÑÐµÑ€Ð²ÐµÑ€Ð° Spacewalk."

#. issued by a SUSE Manager Server/Satellite to the proxy
#: ../common/rhnException.py:193
#, fuzzy
msgid ""
"\n"
"     SUSE Manager Proxy system ID does not match a Spacewalk Proxy Server\n"
"     in the database.\n"
"     "
msgstr ""
"\n"
"     Ð†Ð´ÐµÐ½Ñ‚Ð¸Ñ„Ñ–ÐºÐ°Ñ‚Ð¾Ñ€ ÑÐ¸ÑÑ‚ÐµÐ¼Ð¸ Ð¿Ñ€Ð¾ÐºÑÑ– Spacewalk Ð½Ðµ Ð²Ñ–Ð´Ð¿Ð¾Ð²Ñ–Ð´Ð°Ñ” Ð·Ð°Ð¿Ð¸ÑÑƒ Ð¿Ñ€Ð¾ÐºÑÑ–-"
"ÑÐµÑ€Ð²ÐµÑ€Ð° Spacewalk\n"
"     Ñƒ Ð±Ð°Ð·Ñ– Ð´Ð°Ð½Ð¸Ñ….\n"
"     "

#: ../common/rhnException.py:197
#, fuzzy
msgid "SUSE Manager Proxy session token is invalid."
msgstr "ÐÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð¸Ð¹ ÐºÐ»ÑŽÑ‡ ÑÐµÐ°Ð½ÑÑƒ Proxy Spacewalk."

#: ../common/rhnException.py:198
#, fuzzy
msgid "SUSE Manager Proxy session token has expired."
msgstr "Ð¡Ñ‚Ñ€Ð¾Ðº Ð´Ñ–Ñ— ÐºÐ»ÑŽÑ‡Ð° ÑÐµÐ°Ð½ÑÑƒ Proxy Spacewalk Ð²Ð¸Ñ‡ÐµÑ€Ð¿Ð°Ð½Ð¾."

#. 2000-2999: Red Hat Satellite specific errors:
#: ../common/rhnException.py:202
#, fuzzy
msgid ""
"\n"
"      user creation is not allowed via mgr_register;\n"
"     please contact your sysadmin to have your account created.\n"
"     "
msgstr ""
"\n"
"     Ð¡Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ð·Ð°Ð¿Ð¸ÑÑ–Ð² ÐºÐ¾Ñ€Ð¸ÑÑ‚ÑƒÐ²Ð°Ñ‡Ñ–Ð² Ð·Ð° Ð´Ð¾Ð¿Ð¾Ð¼Ð¾Ð³Ð¾ÑŽ rhn_register Ð·Ð°Ð±Ð¾Ñ€Ð¾Ð½ÐµÐ½Ð¾;\n"
"     Ð±ÑƒÐ´ÑŒ Ð»Ð°ÑÐºÐ°, Ð·Ð²â€™ÑÐ¶Ñ–Ñ‚ÑŒÑÑ Ñ–Ð· Ð²Ð°ÑˆÐ¸Ð¼ ÑÐ¸ÑÑ‚ÐµÐ¼Ð½Ð¸Ð¼ Ð°Ð´Ð¼Ñ–Ð½Ñ–ÑÑ‚Ñ€Ð°Ñ‚Ð¾Ñ€Ð¾Ð¼ Ð´Ð»Ñ ÑÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ "
"Ð²Ð°ÑˆÐ¾Ð³Ð¾ Ð¾Ð±Ð»Ñ–ÐºÐ¾Ð²Ð¾Ð³Ð¾ Ð·Ð°Ð¿Ð¸ÑÑƒ.\n"
"     "

#: ../common/rhnException.py:206
#, fuzzy
msgid ""
"\n"
"     This SUSE Manager server is not allowed to use Inter Server Sync on "
"this server\n"
"     "
msgstr ""
"\n"
"     Ð¦ÑŒÐ¾Ð¼Ñƒ ÑÐµÑ€Ð²ÐµÑ€Ñƒ satellite Ð·Ð°Ð±Ð¾Ñ€Ð¾Ð½ÐµÐ½Ð¾ Ð²Ð¸ÐºÐ¾Ñ€Ð¸ÑÑ‚Ð°Ð½Ð½Ñ ÑÐ¸Ð½Ñ…Ñ€Ð¾Ð½Ñ–Ð·Ð°Ñ†Ñ–Ñ— Inter "
"Satellite Ð½Ð° Ñ†ÑŒÐ¾Ð¼Ñƒ satellite\n"
"     "

#: ../common/rhnException.py:209
#, fuzzy
msgid ""
"\n"
"     Inter Server Sync is disabled on this SUSE Manager Server.\n"
"     "
msgstr ""
"\n"
"     Ð¡Ð¸Ð½Ñ…Ñ€Ð¾Ð½Ñ–Ð·Ð°Ñ†Ñ–ÑŽ Inter Satellite Ð²Ð¸Ð¼ÐºÐ½ÐµÐ½Ð¾ Ð½Ð° Ñ†ÑŒÐ¾Ð¼Ñƒ satellite.\n"
"     "

#. 3000-3999: XML dumper errors:
#: ../common/rhnException.py:214
msgid "Invalid datatype passed"
msgstr "ÐŸÐµÑ€ÐµÐ´Ð°Ð½Ð¾ Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð¸Ð¹ Ñ‚Ð¸Ð¿ Ð´Ð°Ð½Ð¸Ñ…"

#: ../common/rhnException.py:215
msgid "Unable to retrieve channel"
msgstr "ÐÐµ Ð²Ð´Ð°Ð»Ð¾ÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ ÐºÐ°Ð½Ð°Ð»"

#: ../common/rhnException.py:216
msgid "Unable to retrieve package"
msgstr "ÐÐµ Ð²Ð´Ð°Ð»Ð¾ÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ Ð¿Ð°ÐºÑƒÐ½Ð¾Ðº"

#: ../common/rhnException.py:217
msgid "Unable to retrieve erratum"
msgstr "ÐÐµ Ð²Ð´Ð°Ð»Ð¾ÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ ÑÐ¿Ð¸ÑÐ¾Ðº Ð¿Ð¾Ð¼Ð¸Ð»Ð¾Ðº"

#: ../common/rhnException.py:218
msgid "File is missing"
msgstr "ÐÐµ Ð²Ð¸ÑÑ‚Ð°Ñ‡Ð°Ñ” Ñ„Ð°Ð¹Ð»Ð°"

#: ../common/rhnException.py:219
msgid "Function retrieval error"
msgstr "ÐŸÐ¾Ð¼Ð¸Ð»ÐºÐ° Ð¿Ñ–Ð´ Ñ‡Ð°Ñ ÑÐ¿Ñ€Ð¾Ð±Ð¸ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ð½Ð½Ñ Ð´Ð°Ð½Ð¸Ñ… Ñ„ÑƒÐ½ÐºÑ†Ñ–Ñ—"

#: ../common/rhnException.py:220
msgid "Function execution error"
msgstr "ÐŸÐ¾Ð¼Ð¸Ð»ÐºÐ° Ð¿Ñ–Ð´ Ñ‡Ð°Ñ ÑÐ¿Ñ€Ð¾Ð±Ð¸ Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ Ñ„ÑƒÐ½ÐºÑ†Ñ–Ñ—"

#: ../common/rhnException.py:221
msgid "Missing version string"
msgstr "ÐÐµ Ð²Ð¸ÑÑ‚Ð°Ñ‡Ð°Ñ” Ñ€ÑÐ´ÐºÐ° Ð²ÐµÑ€ÑÑ–Ñ—"

#: ../common/rhnException.py:222
msgid "Invalid version string"
msgstr "ÐÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð¸Ð¹ Ñ€ÑÐ´Ð¾Ðº Ð²ÐµÑ€ÑÑ–Ñ—"

#: ../common/rhnException.py:223
msgid "Mismatching versions"
msgstr "ÐÐµÐ²Ñ–Ð´Ð¿Ð¾Ð²Ñ–Ð´Ð½Ñ–ÑÑ‚ÑŒ Ð²ÐµÑ€ÑÑ–Ð¹"

#: ../common/rhnException.py:224
msgid "Invalid channel version"
msgstr "ÐÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð° Ð²ÐµÑ€ÑÑ–Ñ ÐºÐ°Ð½Ð°Ð»Ñƒ"

#: ../common/rhnException.py:225
msgid "No comps file for channel"
msgstr "ÐÐ° ÐºÐ°Ð½Ð°Ð»Ñ– Ð½ÐµÐ¼Ð°Ñ” Ñ„Ð°Ð¹Ð»Ð° comps"

#: ../common/rhnException.py:226
msgid "Unable to retrieve comps file"
msgstr "ÐÐµ Ð²Ð´Ð°Ð»Ð¾ÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ Ñ„Ð°Ð¹Ð» comps"

#. 4000 - 4999: config management errors
#: ../common/rhnException.py:229
msgid "Configuration action missing"
msgstr "ÐÐµ Ð²ÐºÐ°Ð·Ð°Ð½Ð¾ Ð´Ñ–Ñ— Ð· Ð½Ð°Ð»Ð°ÑˆÑ‚Ð¾Ð²ÑƒÐ²Ð°Ð½Ð½Ñ"

#: ../common/rhnException.py:230
msgid "File too large"
msgstr "Ð¤Ð°Ð¹Ð» Ñ” Ð½Ð°Ð´Ñ‚Ð¾ Ð²ÐµÐ»Ð¸ÐºÐ¸Ð¼"

#: ../common/rhnException.py:231
msgid "File contains binary data"
msgstr "Ð£ Ñ„Ð°Ð¹Ð»Ñ– Ð¼Ñ–ÑÑ‚ÑÑ‚ÑŒÑÑ Ð±Ñ–Ð½Ð°Ñ€Ð½Ñ– Ð´Ð°Ð½Ñ–"

#: ../common/rhnException.py:232
msgid "Configuration channel is not empty"
msgstr "ÐšÐ°Ð½Ð°Ð» Ð½Ð°Ð»Ð°ÑˆÑ‚Ð¾Ð²ÑƒÐ²Ð°Ð½Ð½Ñ Ð½Ðµ Ñ” Ð¿Ð¾Ñ€Ð¾Ð¶Ð½Ñ–Ð¼"

#: ../common/rhnException.py:233
msgid "Permission error"
msgstr "ÐŸÐ¾Ð¼Ð¸Ð»ÐºÐ° Ð´Ð¾ÑÑ‚ÑƒÐ¿Ñƒ"

#: ../common/rhnException.py:234
msgid "Content missing for configuration file"
msgstr "Ð£ Ñ„Ð°Ð¹Ð»Ñ– Ð½Ð°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½ÑŒ Ð½Ðµ Ð¼Ñ–ÑÑ‚Ð¸Ñ‚ÑŒÑÑ Ð´Ð°Ð½Ð¸Ñ…"

#: ../common/rhnException.py:235
msgid "Template delimiters not specified"
msgstr "ÐÐµ Ð²ÐºÐ°Ð·Ð°Ð½Ð¾ Ñ€Ð¾Ð·Ð´Ñ–Ð»ÑŒÐ½Ð¸ÐºÐ¸ ÑˆÐ°Ð±Ð»Ð¾Ð½Ð°"

#: ../common/rhnException.py:236
msgid "Configuration channel does not exist"
msgstr "ÐšÐ°Ð½Ð°Ð»Ñƒ Ð½Ð°Ð»Ð°ÑˆÑ‚Ð¾Ð²ÑƒÐ²Ð°Ð½Ð½Ñ Ð½Ðµ Ñ–ÑÐ½ÑƒÑ”"

#: ../common/rhnException.py:237
msgid "Configuration channel already exists"
msgstr "ÐšÐ°Ð½Ð°Ð» Ð½Ð°Ð»Ð°ÑˆÑ‚Ð¾Ð²ÑƒÐ²Ð°Ð½Ð½Ñ Ð²Ð¶Ðµ Ñ–ÑÐ½ÑƒÑ”"

#: ../common/rhnException.py:238
msgid "File missing from configuration channel"
msgstr "ÐÐ° ÐºÐ°Ð½Ð°Ð»Ñ– Ð½Ð°Ð»Ð°ÑˆÑ‚Ð¾Ð²ÑƒÐ²Ð°Ð½Ð½Ñ Ð½Ðµ Ð²Ð¸ÑÑ‚Ð°Ñ‡Ð°Ñ” Ñ„Ð°Ð¹Ð»Ð°"

#: ../common/rhnException.py:239
msgid "Different revision of this file is uploaded"
msgstr "Ð’Ð¸Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð¾ Ñ–Ð½ÑˆÑƒ Ð¼Ð¾Ð´Ð¸Ñ„Ñ–ÐºÐ°Ñ†Ñ–ÑŽ Ñ†ÑŒÐ¾Ð³Ð¾ Ñ„Ð°Ð¹Ð»Ð°"

#: ../common/rhnException.py:240
msgid "File already uploaded to configuration channel"
msgstr "Ð¤Ð°Ð¹Ð» Ð²Ð¶Ðµ Ð²Ð¸Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð¾ Ð´Ð¾ ÐºÐ°Ð½Ð°Ð»Ñƒ Ð½Ð°Ð»Ð°ÑˆÑ‚Ð¾Ð²ÑƒÐ²Ð°Ð½Ð½Ñ"

#: ../common/rhnException.py:241
msgid "File size exceeds remaining quota space"
msgstr "Ð Ð¾Ð·Ð¼Ñ–Ñ€ Ñ„Ð°Ð¹Ð»Ð° Ð¿ÐµÑ€ÐµÐ²Ð¸Ñ‰ÑƒÑ” Ð·Ð°Ð»Ð¸ÑˆÐ¾Ðº ÐºÐ²Ð¾Ñ‚Ð¸ Ñƒ ÑÑ…Ð¾Ð²Ð¸Ñ‰Ñ– Ð´Ð°Ð½Ð¸Ñ…"

#: ../common/rhnException.py:242
msgid "Full path of file must be specified"
msgstr "Ð¨Ð»ÑÑ… Ð´Ð¾ Ñ„Ð°Ð¹Ð»Ð° Ð¼Ð°Ñ” Ð±ÑƒÑ‚Ð¸ Ð²ÐºÐ°Ð·Ð°Ð½Ð¾ Ð¿Ð¾Ð²Ð½Ñ–ÑÑ‚ÑŽ"

#: ../common/rhnException.py:243
msgid "Invalid revision number"
msgstr "ÐÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð¸Ð¹ Ð½Ð¾Ð¼ÐµÑ€ Ð¼Ð¾Ð´Ð¸Ñ„Ñ–ÐºÐ°Ñ†Ñ–Ñ—"

#: ../common/rhnException.py:244
msgid "Cannot compare files of different file type"
msgstr "ÐÐµ Ð¼Ð¾Ð¶Ð½Ð° Ð¿Ð¾Ñ€Ñ–Ð²Ð½ÑŽÐ²Ð°Ñ‚Ð¸ Ñ„Ð°Ð¹Ð»Ð¸ Ñ€Ñ–Ð·Ð½Ð¸Ñ… Ñ‚Ð¸Ð¿Ñ–Ð²"

#. 5000 - 5999: client content uploading errors
#. 5000 - 5099: crash reporting errors
#: ../common/rhnException.py:248
msgid "Crash information is invalid or incomplete"
msgstr "Ð”Ð°Ð½Ñ– Ñ‰Ð¾Ð´Ð¾ Ð°Ð²Ð°Ñ€Ñ–Ñ— Ñ” Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð¸Ð¼Ð¸ Ð°Ð±Ð¾ Ð½ÐµÐ¿Ð¾Ð²Ð½Ð¸Ð¼Ð¸"

#: ../common/rhnException.py:249
msgid "Crash file information is invalid or incomplete"
msgstr "Ð”Ð°Ð½Ñ– Ð· Ñ„Ð°Ð¹Ð»Ð° Ð´Ð°Ð½Ð¸Ñ… Ð°Ð²Ð°Ñ€Ñ–Ñ— Ñ” Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð¸Ð¼Ð¸ Ð°Ð±Ð¾ Ð½ÐµÐ¿Ð¾Ð²Ð½Ð¸Ð¼Ð¸"

#: ../common/rhnException.py:250
msgid "Error composing crash directory path"
msgstr "ÐŸÐ¾Ð¼Ð¸Ð»ÐºÐ° Ð¿Ñ–Ð´ Ñ‡Ð°Ñ ÑÐ¿Ñ€Ð¾Ð±Ð¸ ÑƒÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ ÑˆÐ»ÑÑ…Ñƒ Ð´Ð¾ ÐºÐ°Ñ‚Ð°Ð»Ð¾Ð³Ñƒ Ð´Ð°Ð½Ð¸Ñ… Ð°Ð²Ð°Ñ€Ñ–Ñ—"

#: ../common/rhnException.py:251
msgid "Error composing crash file path"
msgstr "ÐŸÐ¾Ð¼Ð¸Ð»ÐºÐ° Ð¿Ñ–Ð´ Ñ‡Ð°Ñ ÑÐ¿Ñ€Ð¾Ð±Ð¸ ÑƒÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ ÑˆÐ»ÑÑ…Ñƒ Ð´Ð¾ Ñ„Ð°Ð¹Ð»Ð° Ð´Ð°Ð½Ð¸Ñ… Ð°Ð²Ð°Ñ€Ñ–Ñ—"

#: ../common/rhnException.py:252 ../common/rhnException.py:259
msgid "Invalid content encoding"
msgstr "ÐÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ðµ ÐºÐ¾Ð´ÑƒÐ²Ð°Ð½Ð½Ñ Ð´Ð°Ð½Ð¸Ñ…"

#: ../common/rhnException.py:253
msgid "Invalid crash name"
msgstr "ÐÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð° Ð½Ð°Ð·Ð²Ð° Ð°Ð²Ð°Ñ€Ñ–Ñ—"

#: ../common/rhnException.py:254
msgid "Crash reporting is disabled for this organization"
msgstr "Ð”Ð»Ñ Ñ†Ñ–Ñ”Ñ— Ð¾Ñ€Ð³Ð°Ð½Ñ–Ð·Ð°Ñ†Ñ–Ñ— Ð·Ð²Ñ–Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð¿Ñ€Ð¾ Ð²Ð°Ð´Ð¸ Ð²Ð¸Ð¼ÐºÐ½ÐµÐ½Ð¾"

#. 5100 - 5199: scap results reporting error
#: ../common/rhnException.py:256
msgid "SCAP results file transfer is invalid or incomplete"
msgstr "ÐŸÐµÑ€ÐµÐ´Ð°Ð²Ð°Ð½Ð½Ñ Ñ„Ð°Ð¹Ð»Ð° Ñ€ÐµÐ·ÑƒÐ»ÑŒÑ‚Ð°Ñ‚Ñ–Ð² SCAP Ñ” Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð¸Ð¼ Ð°Ð±Ð¾ Ð½ÐµÐ¿Ð¾Ð²Ð½Ð¸Ð¼"

#: ../common/rhnException.py:257
msgid "Error composing directory path for detailed SCAP results"
msgstr ""
"ÐŸÐ¾Ð¼Ð¸Ð»ÐºÐ° Ð¿Ñ–Ð´ Ñ‡Ð°Ñ ÑÐ¿Ñ€Ð¾Ð±Ð¸ ÑƒÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ ÑˆÐ»ÑÑ…Ñƒ Ð´Ð¾ ÐºÐ°Ñ‚Ð°Ð»Ð¾Ð³Ñƒ Ð´Ð»Ñ Ð´Ð¾ÐºÐ»Ð°Ð´Ð½Ð¸Ñ… Ñ€ÐµÐ·ÑƒÐ»ÑŒÑ‚Ð°Ñ‚Ñ–Ð² "
"SCAP"

#: ../common/rhnException.py:258
msgid "Error composing file path for detailed SCAP results"
msgstr ""
"ÐŸÐ¾Ð¼Ð¸Ð»ÐºÐ° Ð¿Ñ–Ð´ Ñ‡Ð°Ñ ÑÐ¿Ñ€Ð¾Ð±Ð¸ ÑƒÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ ÑˆÐ»ÑÑ…Ñƒ Ð´Ð¾ Ñ„Ð°Ð¹Ð»Ð° Ð´Ð»Ñ Ð´Ð¾ÐºÐ»Ð°Ð´Ð½Ð¸Ñ… Ñ€ÐµÐ·ÑƒÐ»ÑŒÑ‚Ð°Ñ‚Ñ–Ð² "
"SCAP"

#: ../common/rhnException.py:306
#, fuzzy
msgid ""
"\n"
"     An error has occurred while processing your request. If this problem\n"
"     persists please enter a bug report at scc.suse.com.\n"
"     If you choose to submit the bug report, please be sure to include\n"
"     details of what you were trying to do when this error occurred and\n"
"     details on how to reproduce this problem.\n"
msgstr ""
"\n"
"     ÐŸÑ–Ð´ Ñ‡Ð°Ñ ÑÐ¿Ñ€Ð¾Ð±Ð¸ Ð¾Ð±Ñ€Ð¾Ð±Ð¸Ñ‚Ð¸ Ð²Ð°Ñˆ Ð·Ð°Ð¿Ð¸Ñ‚ ÑÑ‚Ð°Ð»Ð°ÑÑ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°. Ð¯ÐºÑ‰Ð¾ Ñ†ÑŽ\n"
"     Ð¿Ñ€Ð¾Ð±Ð»ÐµÐ¼Ñƒ Ð½Ðµ Ð²Ð´Ð°ÑÑ‚ÑŒÑÑ Ð²Ð¸Ñ€Ñ–ÑˆÐ¸Ñ‚Ð¸, Ð±ÑƒÐ´ÑŒ Ð»Ð°ÑÐºÐ°, ÑÑ‚Ð²Ð¾Ñ€Ñ–Ñ‚ÑŒ Ð·Ð²Ñ–Ñ‚ Ñ‰Ð¾Ð´Ð¾ Ð²Ð°Ð´Ð¸ Ð½Ð° "
"bugzilla.redhat.com.\n"
"     Ð¯ÐºÑ‰Ð¾ Ð²Ð¸ Ð²Ð¸Ñ€Ñ–ÑˆÐ¸Ñ‚Ðµ ÑÑ‚Ð²Ð¾Ñ€Ð¸Ñ‚Ð¸ Ñ‚Ð°ÐºÐ¸Ð¹ Ð·Ð²Ñ–Ñ‚ Ñ‰Ð¾Ð´Ð¾ Ð²Ð°Ð´Ð¸, Ð±ÑƒÐ´ÑŒ Ð»Ð°ÑÐºÐ°, Ð½Ðµ Ð·Ð°Ð±ÑƒÐ´ÑŒÑ‚Ðµ "
"Ð²ÐºÐ°Ð·Ð°Ñ‚Ð¸ Ñƒ Ð½ÑŒÐ¾Ð¼Ñƒ\n"
"     Ð¿Ð¾Ð´Ñ€Ð¾Ð±Ð¸Ñ†Ñ– Ñ‰Ð¾Ð´Ð¾ Ñ‚Ð¾Ð³Ð¾, Ñ‰Ð¾ ÑÐ°Ð¼Ðµ Ð²Ð¸ Ñ€Ð¾Ð±Ð¸Ð»Ð¸, ÐºÐ¾Ð»Ð¸ ÑÑ‚Ð°Ð»Ð°ÑÑ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°, Ð° Ñ‚Ð°ÐºÐ¾Ð¶ "
"ÑÐ¿Ð¾ÑÑ–Ð±, Ñƒ ÑÐºÐ¸Ð¹\n"
"     Ñ†ÑŽ Ð¿Ñ€Ð¾Ð±Ð»ÐµÐ¼Ñƒ Ð¼Ð¾Ð¶Ð½Ð° Ð²Ñ–Ð´Ñ‚Ð²Ð¾Ñ€Ð¸Ñ‚Ð¸.\n"

#: ../common/rhnException.py:358
#, python-format
msgid ""
"Error Message:\n"
"    %s\n"
msgstr ""
"ÐŸÐ¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ Ð¿Ñ€Ð¾ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÑƒ:\n"
"    %s\n"

#: ../common/rhnException.py:360
#, python-format
msgid "Error Class Code: %s\n"
msgstr "ÐšÐ¾Ð´ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¾Ð²Ð¾Ð³Ð¾ ÐºÐ»Ð°ÑÑƒ: %s\n"

#: ../common/rhnException.py:363
#, python-format
msgid "Error Class Info: %s\n"
msgstr "Ð”Ð°Ð½Ñ– Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¾Ð²Ð¾Ð³Ð¾ ÐºÐ»Ð°ÑÑƒ: %s\n"

#: ../common/rhnException.py:365
#, python-format
msgid "Explanation: %s"
msgstr "ÐŸÐ¾ÑÑÐ½ÐµÐ½Ð½Ñ: %s"

#: ../common/rhnTB.py:205
#, python-format
msgid "ERROR: %s %s: %s"
msgstr "ÐŸÐžÐœÐ˜Ð›ÐšÐ: %s %s: %s"

#: ../common/rhnTB.py:207
#, python-format
msgid "TRACEBACK: %s"
msgstr "Ð¢Ð ÐÐ¡Ð£Ð’ÐÐÐÐ¯: %s"

#: ../satellite_tools/disk_dumper/iss.py:1294
#: ../satellite_tools/disk_dumper/iss.py:1298
#, python-format
msgid "format of %s should be at least YYYYMMDD.\n"
msgstr ""

#: ../satellite_tools/messages.py:26
#, python-format
msgid ""
"\n"
"ERROR: executing step %s. Error is:\n"
"%s\n"
msgstr ""

#: ../satellite_tools/messages.py:31
#, python-format
msgid ""
"\n"
"ERROR: there was a problem accessing the channel data from your temporary\n"
"       repository. Did you migrate all of the data from the channel ISOs\n"
"       do this directory? If so, please recheck the channels ISOs, ensure\n"
"       that you have them all, and then iteratively remount and repopulate\n"
"       the temporary repository (%s).\n"
msgstr ""

#: ../satellite_tools/messages.py:39
#, python-format
msgid ""
"\n"
"ERROR: there was a problem synchronizing the information.\n"
"       Error message: %s\n"
msgstr ""

#: ../satellite_tools/messages.py:44
#, python-format
msgid ""
"\n"
"ERROR: There was a problem communicating with the ISS Master.\n"
"       Depending on the specific error details, please review your "
"configuration,\n"
"       basic network connectivity, and/or name resolution, and try again.\n"
"       Error message: %s\n"
msgstr ""

#: ../satellite_tools/messages.py:51
#, python-format
msgid ""
"\n"
"ERROR: There was a problem communicating with the ISS Master.\n"
"       If the master satellite is older than v5.3, it does not have ISS "
"capability.\n"
"       Otherwise, depending on the specific error details, please review "
"your\n"
"       configuration, basic network connectivity, and/or name resolution, "
"and try again.\n"
"       Error message: %s\n"
msgstr ""

#: ../satellite_tools/messages.py:59
#, python-format
msgid ""
"\n"
"ERROR: a child-channel cannot be synced without its parent being synced as\n"
"       well. A parent needs to be either (a) previously synced or (b) "
"synced\n"
"       in tandem with the desired child-channel. Missing parents for this\n"
"       transaction:\n"
"       %s\n"
msgstr ""

#: ../satellite_tools/messages.py:67
#, python-format
msgid ""
"\n"
"ERROR: you are not entitled to sync a channel in this set of channels.\n"
"Please contact your SUSE Manager contact\n"
"%s"
msgstr ""

#: ../satellite_tools/messages.py:72
#, python-format
msgid "  ERROR: not enough free space (%s KB) on device."
msgstr ""

#: ../satellite_tools/messages.py:74
#, python-format
msgid "    %3d/%s Fetch successful: %s (%s bytes)"
msgstr ""

#: ../satellite_tools/messages.py:75
#, fuzzy, python-format
msgid "    Extinct package:  %s"
msgstr "ÐœÐ°Ð»Ð¾ Ð±ÑƒÑ‚Ð¸ Ð²ÐºÐ°Ð·Ð°Ð½Ð¾ Ð¿Ð°ÐºÑƒÐ½Ð¾Ðº, Ð° Ð½Ðµ: %s"

#: ../satellite_tools/messages.py:76
#, python-format
msgid "   Total size: %s"
msgstr ""

#: ../satellite_tools/messages.py:77
#, python-format
msgid "      Downloaded %s of %s. Estimated remaining time: %s"
msgstr ""

#: ../satellite_tools/messages.py:78
#, python-format
msgid "    Fetch unsuccessful: %s"
msgstr ""

#: ../satellite_tools/messages.py:79
#, python-format
msgid "   RPM fetch summary: %s"
msgstr ""

#: ../satellite_tools/messages.py:80
#, python-format
msgid "       success: %d"
msgstr ""

#: ../satellite_tools/messages.py:81
#, python-format
msgid "       failed:  %d"
msgstr ""

#: ../satellite_tools/messages.py:82
#, python-format
msgid "       extinct: %d"
msgstr ""

#: ../satellite_tools/messages.py:84
#, python-format
msgid "   Retrieving / parsing *relevant* package metadata: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:85
#, python-format
msgid "   Retrieving / parsing errata data: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:86
#, python-format
msgid "   Retrieving / parsing kickstart data: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:87
#, python-format
msgid "   Retrieving / parsing kickstart tree files: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:88
#, python-format
msgid "   Importing *relevant* package metadata: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:89
msgid "   * WARNING: this may be a slow process."
msgstr ""

#: ../satellite_tools/messages.py:90
#, fuzzy
msgid "Linking packages to channels"
msgstr "ÐšÐ¾Ð½Ñ„Ð»Ñ–ÐºÑ‚ Ð¾ÑÐ½Ð¾Ð²Ð½Ð¸Ñ… ÐºÐ°Ð½Ð°Ð»Ñ–Ð²"

#: ../satellite_tools/messages.py:91
#, python-format
msgid "   Importing *relevant* errata: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:92
msgid "   No new kickstartable tree to import"
msgstr ""

#: ../satellite_tools/messages.py:93
#, python-format
msgid "Importing kickstartable trees (%d)"
msgstr ""

#: ../satellite_tools/messages.py:94
#, python-format
msgid "Imported kickstartable trees (%d)"
msgstr ""

#: ../satellite_tools/reposync.py:111 ../satellite_tools/satsync.py:439
msgid "+++ sending log as an email +++"
msgstr ""

#: ../satellite_tools/reposync.py:114
#, python-format
msgid "%s sync. report from %s"
msgstr ""

#: ../satellite_tools/reposync.py:124 ../satellite_tools/satsync.py:449
msgid "+++ email requested, but there is nothing to send +++"
msgstr ""

#: ../satellite_tools/rhn_satellite_activate.py:198
#, python-format
msgid ""
"\"%s\" (specified in commandline)\n"
"could not be opened and read:\n"
"%s"
msgstr ""

#: ../satellite_tools/rhn_satellite_activate.py:205
#, python-format
msgid ""
"\"%s\" could not be opened\n"
"and/or written to:\n"
"%s"
msgstr ""

#: ../satellite_tools/satsync.py:258
#, python-format
msgid "No handler for step %s"
msgstr ""

#. Try one more time - this time it should be faster since
#. everything should be cached
#: ../satellite_tools/satsync.py:270
msgid "Environment changed, trying again..."
msgstr ""

#: ../satellite_tools/satsync.py:277
msgid "ERROR: Encountered IntegrityError: \n"
msgstr ""

#: ../satellite_tools/satsync.py:285
msgid "Repeated failures"
msgstr ""

#: ../satellite_tools/satsync.py:290
#, python-format
msgid ""
"    Import complete:\n"
"        Begin time: %s\n"
"        End time:   %s\n"
"        Elapsed:    %s\n"
"          "
msgstr ""

#: ../satellite_tools/satsync.py:311
msgid "hours"
msgstr ""

#: ../satellite_tools/satsync.py:311
msgid "minutes"
msgstr ""

#: ../satellite_tools/satsync.py:311
msgid "seconds"
msgstr ""

#: ../satellite_tools/satsync.py:357
msgid ""
"ERROR: The dump is missing package data, use --no-rpms to skip this step or "
"fix the content to include package data."
msgstr ""

#. the orgs() method doesn't exist; that's fine we just
#. won't sync the orgs
#: ../satellite_tools/satsync.py:404
msgid "The SUSE Manager master does not support syncing orgs data."
msgstr ""

#: ../satellite_tools/satsync.py:404
msgid "Skipping..."
msgstr ""

#: ../satellite_tools/satsync.py:442
#, python-format
msgid "SUSE Manager Inter Server sync. report from %s"
msgstr ""

#: ../satellite_tools/satsync.py:521
msgid " - file-system synchronization"
msgstr ""

#: ../satellite_tools/satsync.py:533 ../satellite_tools/satsync.py:541
msgid " - live synchronization"
msgstr ""

#: ../satellite_tools/satsync.py:534
#, python-brace-format
msgid ""
"ERROR: Live content synchronizing with RHN Classic Hosted is no longer "
"supported.\n"
"Please use the cdn-sync command instead unless you are attempting to sync "
"from another {PRODUCT_NAME} via Inter-Server-Sync (ISS), or from local "
"content on disk via Channel Dump ISOs."
msgstr ""

#: ../satellite_tools/satsync.py:542
#, python-format
msgid "   url: %s"
msgstr ""

#: ../satellite_tools/satsync.py:543
#, python-format
msgid "   debug/output level: %s"
msgstr ""

#: ../satellite_tools/satsync.py:553
msgid "ERROR: this server must be registered with SUSE Manager."
msgstr ""

#: ../satellite_tools/satsync.py:575
#, python-format
msgid "Retrieving / parsing %s data"
msgstr ""

#: ../satellite_tools/satsync.py:585 ../satellite_tools/satsync.py:600
msgid "*** SYSTEM INTERRUPT CALLED ***"
msgstr ""

#: ../satellite_tools/satsync.py:593
msgid "ERROR: fatal parser exception occurred "
msgstr ""

#: ../satellite_tools/satsync.py:594
#, python-format
msgid "(line: %s, col: %s msg: %s)"
msgstr ""

#: ../satellite_tools/satsync.py:598
#, python-format
msgid "ERROR: parser exception occurred: %s"
msgstr ""

#: ../satellite_tools/satsync.py:603
msgid "ERROR: exception (during parse) occurred: "
msgstr ""

#: ../satellite_tools/satsync.py:604
#, python-format
msgid ""
"   Encountered some errors with %s data (see logs (%s) for more information)"
msgstr ""

#: ../satellite_tools/satsync.py:606
#, python-format
msgid "   Encountered some errors with %s data:"
msgstr ""

#: ../satellite_tools/satsync.py:607
#, python-format
msgid "   ------- %s PARSE/IMPORT ERROR -------"
msgstr ""

#: ../satellite_tools/satsync.py:609
msgid "   ---------------------------------------"
msgstr ""

#: ../satellite_tools/satsync.py:612
#, python-format
msgid "%s data complete"
msgstr ""

#: ../satellite_tools/satsync.py:665
msgid "Retrieving / parsing channel data"
msgstr ""

#: ../satellite_tools/satsync.py:718
msgid "Channel data complete"
msgstr ""

#: ../satellite_tools/satsync.py:736
#, python-format
msgid "%10s import from %s"
msgstr ""

#: ../satellite_tools/satsync.py:739
#, python-format
msgid "%10s import from %s - %s"
msgstr ""

#: ../satellite_tools/satsync.py:743
#, python-format
msgid "%10s"
msgstr ""

#: ../satellite_tools/satsync.py:750
msgid "p"
msgstr ""

#: ../satellite_tools/satsync.py:752
msgid "."
msgstr ""

#: ../satellite_tools/satsync.py:758
msgid "   p = previously imported/synced channel"
msgstr ""

#: ../satellite_tools/satsync.py:759
msgid "   . = channel not yet imported/synced"
msgstr ""

#: ../satellite_tools/satsync.py:765
msgid "   e = channel no longer supported (end-of-service)"
msgstr ""

#: ../satellite_tools/satsync.py:767
msgid "   ? = channel label invalid --- typo?"
msgstr ""

#: ../satellite_tools/satsync.py:771
#, python-format
msgid "   %s:"
msgstr ""

#: ../satellite_tools/satsync.py:772
#, python-format
msgid "      %s %-40s %4s %s"
msgstr ""

#: ../satellite_tools/satsync.py:773
#, fuzzy
msgid "base-channels"
msgstr "ÐšÐ¾Ð½Ñ„Ð»Ñ–ÐºÑ‚ Ð¾ÑÐ½Ð¾Ð²Ð½Ð¸Ñ… ÐºÐ°Ð½Ð°Ð»Ñ–Ð²"

#: ../satellite_tools/satsync.py:786 ../satellite_tools/satsync.py:1603
msgid "NONE RELEVANT"
msgstr ""

#: ../satellite_tools/satsync.py:808
msgid "end-of-service"
msgstr ""

#: ../satellite_tools/satsync.py:809
msgid "e"
msgstr ""

#: ../satellite_tools/satsync.py:815
msgid "   typos:"
msgstr ""

#: ../satellite_tools/satsync.py:816
msgid "?"
msgstr ""

#: ../satellite_tools/satsync.py:831
#, python-format
msgid "XXX: imported channels: %s"
msgstr ""

#: ../satellite_tools/satsync.py:832
#, python-format
msgid "XXX:   cached channels: %s"
msgstr ""

#: ../satellite_tools/satsync.py:837
msgid "XXX: list channels called"
msgstr ""

#: ../satellite_tools/satsync.py:855
msgid "ERROR: these channels either do not exist or are not available:"
msgstr ""

#: ../satellite_tools/satsync.py:859
#, python-format
msgid "       (to see a list of channel labels: %s --list-channels)"
msgstr ""

#: ../satellite_tools/satsync.py:904
#, python-format
msgid "   Retrieving / parsing short package metadata: %s (%s)"
msgstr ""

#: ../satellite_tools/satsync.py:965
#, python-format
msgid "Diffing package metadata (what's missing locally?): %s"
msgstr ""

#: ../satellite_tools/satsync.py:971 ../satellite_tools/satsync.py:1254
msgid "Diffing:    "
msgstr ""

#: ../satellite_tools/satsync.py:988
msgid "ERROR: incremental dump skipped"
msgstr ""

#: ../satellite_tools/satsync.py:1079
msgid "Downloading rpm packages"
msgstr ""

#: ../satellite_tools/satsync.py:1084
#, python-format
msgid "   Fetching any missing RPMs: %s (%s)"
msgstr ""

#: ../satellite_tools/satsync.py:1085 ../satellite_tools/satsync.py:1153
msgid "NONE MISSING"
msgstr ""

#: ../satellite_tools/satsync.py:1094
msgid "Processing rpm packages complete"
msgstr ""

#: ../satellite_tools/satsync.py:1121
msgid "Downloading package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1146
msgid "Downloading srpm packages"
msgstr ""

#: ../satellite_tools/satsync.py:1152
#, python-format
msgid "   Fetching any missing SRPMs: %s (%s)"
msgstr ""

#: ../satellite_tools/satsync.py:1249
#, python-format
msgid "Diffing source package metadata (what's missing locally?): %s"
msgstr ""

#: ../satellite_tools/satsync.py:1260
msgid "Downloading source package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1338 ../satellite_tools/satsync.py:2027
#, fuzzy, python-format
msgid "Unable to save file %s: %s"
msgstr "ÐÐµ Ð²Ð´Ð°Ð»Ð¾ÑÑ Ð¿Ñ€Ð¸Ð²â€™ÑÐ·Ð°Ñ‚Ð¸ ÑÐ¸ÑÑ‚ÐµÐ¼Ñƒ"

#. for
#. Retried a number of times and it still failed; log the
#. file as being failed and move on
#: ../satellite_tools/satsync.py:1345
#, python-format
msgid "Failed to fetch file %s"
msgstr ""

#: ../satellite_tools/satsync.py:1350
msgid "Downloading kickstartable trees metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1365
msgid "Downloading kickstartable trees files"
msgstr ""

#: ../satellite_tools/satsync.py:1504
#, python-format
msgid "Grabbing all patches for channel %s"
msgstr ""

#: ../satellite_tools/satsync.py:1554
msgid "Downloading patch data"
msgstr ""

#: ../satellite_tools/satsync.py:1556
msgid "Forcing download of all patch data for requested channels."
msgstr ""

#: ../satellite_tools/satsync.py:1571
msgid "Downloading patch data complete"
msgstr ""

#: ../satellite_tools/satsync.py:1576 ../satellite_tools/satsync.py:1597
msgid "Downloading:"
msgstr ""

#: ../satellite_tools/satsync.py:1579
msgid " - complete"
msgstr ""

#: ../satellite_tools/satsync.py:1624
msgid "Importing source package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1627
msgid "Importing package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1635
msgid "Importing:  "
msgstr ""

#. not in the cache
#: ../satellite_tools/satsync.py:1703
msgid ""
"Package Not Found in Cache, Clear the Cache "
"to                                  Regenerate it."
msgstr ""

#: ../satellite_tools/satsync.py:1709
msgid "Importing channel patches"
msgstr ""

#: ../satellite_tools/satsync.py:1714
#, python-format
msgid "Importing %s patches for channel %s."
msgstr ""

#. Incomplete configuration
#: ../satellite_tools/satsync.py:2113
msgid "ERROR: server.mount_point not set in the configuration file"
msgstr ""

#: ../satellite_tools/satsync.py:2117
#, python-format
msgid "ERROR: server.mount_point %s do not exist"
msgstr ""

#: ../satellite_tools/satsync.py:2122
#, python-format
msgid "ERROR: path under server.mount_point (%s)  do not exist"
msgstr ""

#: ../satellite_tools/satsync.py:2199
#, python-format
msgid "Commandline: %s"
msgstr ""

#: ../satellite_tools/satsync.py:2202
#, python-format
msgid ""
"DEBUG ONLY: max. batch-size for XML/database-import processing (1..%s).\"man "
"satellite-sync\" for more information."
msgstr ""

#: ../satellite_tools/satsync.py:2205
msgid "alternative SSL CA Cert (fullpath to cert file)"
msgstr ""

#: ../satellite_tools/satsync.py:2207
msgid "process data for this channel only"
msgstr ""

#: ../satellite_tools/satsync.py:2209
msgid ""
"disk dump will be considered to be a full export; see \"man satellite-sync\" "
"for more information."
msgstr ""

#: ../satellite_tools/satsync.py:2212
msgid "existing custom channels will also be synced (unless -c is used)"
msgstr ""

#: ../satellite_tools/satsync.py:2214
#, python-format
msgid ""
"override debug level set in /etc/rhn/rhn.conf (which is currently set at %s)."
msgstr ""

#: ../satellite_tools/satsync.py:2216
#, python-format
msgid "requested version of XML dump (default: %s)"
msgstr ""

#: ../satellite_tools/satsync.py:2218
msgid "e-mail a report of what was synced/imported"
msgstr ""

#: ../satellite_tools/satsync.py:2220
msgid "forcibly process all (not a diff of) patch metadata"
msgstr ""

#: ../satellite_tools/satsync.py:2222
msgid "Do not use an http proxy under any circumstances."
msgstr ""

#: ../satellite_tools/satsync.py:2224
msgid "alternative http proxy (hostname:port)"
msgstr ""

#: ../satellite_tools/satsync.py:2226
msgid "alternative http proxy username"
msgstr ""

#: ../satellite_tools/satsync.py:2228
msgid "alternative http proxy password"
msgstr ""

#: ../satellite_tools/satsync.py:2230
msgid "parent SUSE Manager to import content from"
msgstr ""

#: ../satellite_tools/satsync.py:2232
msgid "list all available channels and exit"
msgstr ""

#: ../satellite_tools/satsync.py:2234
msgid "help on all error codes mgr-inter-sync returns"
msgstr ""

#: ../satellite_tools/satsync.py:2236
msgid "source mount point for import - disk update only"
msgstr ""

#: ../satellite_tools/satsync.py:2238
msgid "do not process patch data"
msgstr ""

#: ../satellite_tools/satsync.py:2240
msgid "do not process kickstart data (provisioning only)"
msgstr ""

#: ../satellite_tools/satsync.py:2242
msgid "do not process full package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:2244
msgid "do not download, or process any RPMs"
msgstr ""

#: ../satellite_tools/satsync.py:2246
msgid "turn off SSL (not recommended)"
msgstr ""

#: ../satellite_tools/satsync.py:2248
msgid "org to which the sync imports data. defaults to the admin account"
msgstr ""

#: ../satellite_tools/satsync.py:2250
#, fuzzy
msgid "print the configuration and exit"
msgstr "ÐšÐ°Ð½Ð°Ð»Ñƒ Ð½Ð°Ð»Ð°ÑˆÑ‚Ð¾Ð²ÑƒÐ²Ð°Ð½Ð½Ñ Ð½Ðµ Ñ–ÑÐ½ÑƒÑ”"

#: ../satellite_tools/satsync.py:2252
msgid "alternative server with which to connect (hostname)"
msgstr ""

#: ../satellite_tools/satsync.py:2254
msgid "synchronize to this step (man satellite-sync for more info)"
msgstr ""

#: ../satellite_tools/satsync.py:2256
msgid "write complete data to tempfile before streaming to remainder of app"
msgstr ""

#: ../satellite_tools/satsync.py:2258
msgid "DEBUG ONLY: alternative path to digital system id"
msgstr ""

#: ../satellite_tools/satsync.py:2260
msgid "alternative email address(es) for sync output (--email option)"
msgstr ""

#: ../satellite_tools/satsync.py:2262
msgid "do not remove rpms when importing from local dump"
msgstr ""

#: ../satellite_tools/satsync.py:2264
msgid ""
"the fully qualified domain name of the master Satellite. Valid with --mount-"
"point only. Required if you want to import org data and channel permissions."
msgstr ""

#: ../satellite_tools/satsync.py:2274
#, python-format
msgid "ERROR: these arguments make no sense in this context (try --help): %s"
msgstr ""

#. An SQL error is fatal... crash and burn
#: ../satellite_tools/satsync.py:2286
#, python-format
msgid "ERROR: Can't connect to the database: %s"
msgstr ""

#: ../satellite_tools/satsync.py:2287
msgid "ERROR: Check if your database is running."
msgstr ""

#: ../satellite_tools/satsync.py:2322
#, python-format
msgid "ERROR: --debug-level takes an in integer value within the range %s."
msgstr ""

#: ../satellite_tools/satsync.py:2324
msgid "  0  - little logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2325
msgid "  1  - minimal logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2326
msgid "  2  - normal level of logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2327
msgid "  3  - lots of logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2328
msgid "  4+ - excessive logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2341
msgid "ERROR: The --master option is only valid with the --mount-point option"
msgstr ""

#: ../satellite_tools/satsync.py:2351
#, fuzzy, python-format
msgid "ERROR: Unable to lookup Org Id %s"
msgstr "ÐÐµ Ð²Ð´Ð°Ð»Ð¾ÑÑ Ð·Ð½Ð°Ð¹Ñ‚Ð¸ ÑÐµÑ€Ð²ÐµÑ€"

#: ../satellite_tools/satsync.py:2360
msgid ""
"WARNING: --list-channels option overrides any --step option. --step ignored."
msgstr ""

#: ../satellite_tools/satsync.py:2375
#, python-format
msgid ""
"ERROR: '%s' is not a valid step. See 'man mgr-inter-sync' for more detail."
msgstr ""

#: ../satellite_tools/satsync.py:2407
msgid ""
"ERROR: No channels currently imported; try mgr-inter-sync --list-channels; "
"then mgr-inter-sync -c chn0 -c chn1..."
msgstr ""

#. int(None) --> TypeError
#. int('a')  --> ValueError
#: ../satellite_tools/satsync.py:2457 ../satellite_tools/satsync.py:2461
msgid "ERROR: --batch-size must have a value within the range: 1..50"
msgstr ""

#: ../satellite_tools/satsync.py:2469
#, python-format
msgid "ERROR: no such directory %s"
msgstr ""

#: ../satellite_tools/satsync.py:2474
msgid "Error Codes: Returned codes means:"
msgstr ""

#: ../satellite_tools/satsync.py:2475
msgid " -1  - Could not lock file or KeyboardInterrupt or SystemExit"
msgstr ""

#: ../satellite_tools/satsync.py:2476
msgid "  0  - User interrupted or intentional exit"
msgstr ""

#: ../satellite_tools/satsync.py:2477
msgid "  1  - attempting to run more than one instance of mgr-inter-sync."
msgstr ""

#: ../satellite_tools/satsync.py:2478
msgid "  2  - Unable to find synchronization tools."
msgstr ""

#: ../satellite_tools/satsync.py:2479
msgid "  3  - a general socket exception occurred"
msgstr ""

#: ../satellite_tools/satsync.py:2480
msgid "  4  - an SSL error occurred. Recheck your SSL settings."
msgstr ""

#: ../satellite_tools/satsync.py:2481
msgid "  5  - ISS error"
msgstr ""

#: ../satellite_tools/satsync.py:2482
msgid "  6  - unhandled exception occurred"
msgstr ""

#: ../satellite_tools/satsync.py:2483
msgid "  7  - unknown sync error"
msgstr ""

#: ../satellite_tools/satsync.py:2484
msgid "  8  - ERROR: must be root to execute"
msgstr ""

#: ../satellite_tools/satsync.py:2485
msgid "  9  - rpclib fault during synchronization init"
msgstr ""

#: ../satellite_tools/satsync.py:2486
msgid "  10 - synchronization init error"
msgstr ""

#: ../satellite_tools/satsync.py:2487
msgid "  11 - Error parsing XML stream"
msgstr ""

#: ../satellite_tools/satsync.py:2488
#, fuzzy
msgid "  12 - Channel do not exist"
msgstr "Ð’ÐºÐ°Ð·Ð°Ð½Ð¾Ð³Ð¾ ÐºÐ°Ð½Ð°Ð»Ñƒ Ð½Ðµ Ñ–ÑÐ½ÑƒÑ”."

#: ../satellite_tools/satsync.py:2489
msgid "  13 - SQL error during importing package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:2490
msgid "  14 - SQL error during linking channel packages"
msgstr ""

#: ../satellite_tools/satsync.py:2491
msgid "  15 - SQL error during xml processing"
msgstr ""

#: ../satellite_tools/satsync.py:2492
msgid "  16 - server.mount_point not set in the configuration file"
msgstr ""

#: ../satellite_tools/satsync.py:2493
msgid ""
"  17 - SQL error during retrieving the channels already imported in the SUSE "
"Manager database"
msgstr ""

#: ../satellite_tools/satsync.py:2494
msgid "  18 - Wrong db connection string in rhn.conf"
msgstr ""

#: ../satellite_tools/satsync.py:2495
msgid "  19 - Bad arguments"
msgstr ""

#: ../satellite_tools/satsync.py:2496
msgid "  20 - Could not connect to db."
msgstr ""

#: ../satellite_tools/satsync.py:2497
msgid "  21 - Bad debug level"
msgstr ""

#: ../satellite_tools/satsync.py:2498
msgid "  22 - Not valid step"
msgstr ""

#: ../satellite_tools/satsync.py:2499
msgid "  24 - no such file"
msgstr ""

#: ../satellite_tools/satsync.py:2500
msgid "  25 - no such directory"
msgstr ""

#: ../satellite_tools/satsync.py:2501
msgid "  26 - mount_point does not exist"
msgstr ""

#: ../satellite_tools/satsync.py:2502
msgid "  27 - No such org"
msgstr ""

#: ../satellite_tools/satsync.py:2503
msgid "  28 - error: --master is only valid with --mount-point"
msgstr ""

#: ../satellite_tools/satsync.py:2510
#, python-format
msgid "ERROR: unknown dump version, try one of %s"
msgstr ""

#~ msgid "Your system was not found in the RHN database"
#~ msgstr "Ð’Ð°ÑˆÐ¾Ñ— ÑÐ¸ÑÑ‚ÐµÐ¼Ð¸ Ð½Ðµ Ð·Ð½Ð°Ð¹Ð´ÐµÐ½Ð¾ Ñƒ Ð±Ð°Ð·Ñ– Ð´Ð°Ð½Ð¸Ñ… RHN"

#~ msgid "ISS is disabled on this satellite."
#~ msgstr "ISS Ð²Ð¸Ð¼ÐºÐ½ÐµÐ½Ð¾ Ð´Ð»Ñ Ñ†ÑŒÐ¾Ð³Ð¾ satellite."

#~ msgid "Spacewalk Proxy service not enabled for server profile: \"%s\""
#~ msgstr "ÐŸÑ€Ð¾ÐºÑÑ–-ÑÐµÑ€Ð²Ñ–Ñ Spacewalk Ð½Ðµ Ð²ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ð¹ Ð´Ð»Ñ Ð¿Ñ€Ð¾Ñ„Ñ–Ð»ÑŽ ÑÐµÑ€Ð²ÐµÑ€Ð°: Â«%sÂ»"

#~ msgid "Red Hat Satellite Welcome Message"
#~ msgstr "Ð’Ñ–Ñ‚Ð°Ð»ÑŒÐ½Ðµ Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ Red Hat Satellite"

#~ msgid "Red Hat Satellite Privacy Statement"
#~ msgstr "Ð£Ð³Ð¾Ð´Ð° Ñ‰Ð¾Ð´Ð¾ ÐºÐ¾Ð½Ñ„Ñ–Ð´ÐµÐ½Ñ†Ñ–Ð¹Ð½Ð¾ÑÑ‚Ñ– Red Hat Satellite"
07070100000095000081B40000000000000000000000016290A0C10000B603000000000000000000000000000000000000001B00000000spacewalk-backend/po/ur.po    # SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
#
# Translators:
msgid ""
msgstr ""
"Project-Id-Version: Spacewalk\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-10-16 13:34+0200\n"
"PO-Revision-Date: 2011-03-04 16:08+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Urdu <trans-urdu@lists.fedoraproject.org>\n"
"Language: ur\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"

#: ../server/apacheAuth.py:66
#, python-format
msgid "incomplete proxy authentication token: %s"
msgstr ""

#: ../server/apacheAuth.py:84
#, python-format
msgid "Sent proxy signature %s does not match ours %s."
msgstr ""

#: ../server/apacheAuth.py:119
msgid "declined proxy authentication"
msgstr ""

#: ../server/apacheRequest.py:59
#, python-format
msgid "Invalid request received (%s)."
msgstr ""

#: ../server/apacheRequest.py:120
#, python-format
msgid ""
"IMPORTANT MESSAGE FOLLOWS:\n"
"%s"
msgstr ""

#: ../server/apacheRequest.py:149
#, python-format
msgid ""
"While running '%s': caught\n"
"%s : %s\n"
msgstr ""

#: ../server/apacheRequest.py:606
#, python-format
msgid "Invalid URI %s"
msgstr ""

#: ../server/configFilesHandler.py:129 ../server/handlers/app/packages.py:192
#: ../server/handlers/xmlrpc/registration.py:215
#: ../server/handlers/xmlrpc/registration.py:1168
#: ../server/handlers/xmlrpc/registration.py:1307
#, python-format
msgid ""
"\n"
"                   %s Account has been deactivated on this server.\n"
"                   Please contact your Org administrator for more help."
msgstr ""

#: ../server/handlers/applet/applet.py:78
#, python-brace-format
msgid "Your system was not found in the {PRODUCT_NAME} database"
msgstr ""

#: ../server/handlers/sat/auth.py:45
msgid "ISS is disabled on this server."
msgstr ""

#: ../server/handlers/sat/auth.py:50
#, python-format
msgid "Server \"%s\" is not enabled for ISS."
msgstr ""

#: ../server/handlers/xmlrpc/errata.py:64
#, python-format
msgid "Expected a package name, not: %s"
msgstr ""

#: ../server/handlers/xmlrpc/errata.py:115
#, python-format
msgid "Expected a package, not: %s"
msgstr ""

#: ../server/handlers/xmlrpc/proxy.py:65
#, python-format
msgid "SUSE Manager Proxy service not enabled for server profile: \"%s\""
msgstr ""

#: ../server/handlers/xmlrpc/proxy.py:85
msgid "Invalid session key"
msgstr ""

#: ../server/handlers/xmlrpc/proxy.py:93
msgid "This server ID no longer exists"
msgstr ""

#: ../server/handlers/xmlrpc/queue.py:433
#, python-format
msgid "Invalid action value type %s (%s)"
msgstr ""

#: ../server/handlers/xmlrpc/queue.py:464
#, python-format
msgid "Action %s does not belong to server %s"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:194
msgid "Required data missing"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:198
msgid "Required members missing"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:207
msgid "Attempt to register a system to an invalid username"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:839
msgid "Invalid system release version requested"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1063
msgid ""
"Unable to find a valid network interface, both ipaddr and ip6addr not found."
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1115
#, python-brace-format
msgid "{PRODUCT_NAME} Welcome Message"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1125
msgid "Privacy Statement"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1146
msgid "Expected a dictionary as a product argument"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1374
#, python-format
msgid "Invalid value '%s' for %s (%s)"
msgstr ""

#: ../server/handlers/xmlrpc/scap.py:104
msgid "Invalid system_id/action_id pair."
msgstr ""

#: ../server/handlers/xmlrpc/up2date.py:233
#, python-format
msgid "Invalid value %s (%s)"
msgstr ""

#: ../server/importlib/userAuth.py:98
msgid "You are not authorized to manage packages in the null org"
msgstr ""

#: ../server/importlib/userAuth.py:103
#, python-format
msgid "You are not allowed to manage packages in the %s org"
msgstr ""

#: ../server/importlib/userAuth.py:121
msgid "You are not allowed to perform administrative tasks"
msgstr ""

#: ../server/importlib/userAuth.py:144
#, python-format
msgid ""
"You are not allowed to manage channel %s, or that channel does not exist"
msgstr ""

#: ../server/importlib/userAuth.py:204
#, python-format
msgid ""
"\n"
"               %s Account has been deactivated on this server.\n"
"               Please contact your Org administrator for more help."
msgstr ""

#: ../server/rhnChannel.py:1992
#, python-format
msgid ""
"Your account does not have access to any channels matching "
"(release='%(release)s', arch='%(arch)s')%(www_activation)s"
msgstr ""

#: ../server/rhnChannel.py:2002
msgid ""
"\n"
"If you have a registration number, please register with it first at http://"
"www.redhat.com/apps/activate/ and then try again.\n"
"\n"
msgstr ""

#: ../server/rhnChannel.py:2012
#, python-format
msgid "Insufficient subscription permissions for release (%s, %s"
msgstr ""

#. Various messages that can be reused
#.
#. bretm 02/07/2007 -- when we have better old-client documentation, probably
#. will be safe to get rid of all this crap
#: ../server/rhnChannel.py:2276 ../server/rhnChannel.py:2287
#: ../server/rhnChannel.py:2302
msgid "System Registered but Inactive"
msgstr ""

#: ../server/rhnChannel.py:2277
#, python-format
msgid ""
"\n"
"Invalid Architecture and OS release combination (%s, %s).\n"
"Your system has been registered, but will not receive updates\n"
"because it is not subscribed to a channel. If you have not yet\n"
"activated your product for service, please visit our website at:\n"
"\n"
"     http://www.redhat.com/apps/activate/\n"
"\n"
"...to activate your product."
msgstr ""

#: ../server/rhnChannel.py:2288
#, python-format
msgid ""
"\n"
"Invalid Architecture and OS release combination (%s, %s).\n"
"Your system has been registered, but will not receive updates\n"
"because it could not be subscribed to a base channel.\n"
"Please contact your organization administrator for assistance.\n"
msgstr ""

#: ../server/rhnChannel.py:2295
#, python-format
msgid ""
"\n"
"  This system has been successfully registered, but is not yet entitled\n"
"  to service.  To entitle this system to service, login to the web site at:\n"
"\n"
"  %(entitlement_url)s\n"
msgstr ""

#: ../server/rhnChannel.py:2303
#, python-format
msgid ""
"\n"
"  This system has been successfully registered, but no service entitlements\n"
"  were available.  To entitle this system to service, login to the web site "
"at:\n"
"\n"
"  %(entitlement_url)s\n"
msgstr ""

#: ../server/rhnHandler.py:62
msgid "Please run rhn_register as root on this client"
msgstr ""

#: ../server/rhnHandler.py:75
#, python-format
msgid "Service not enabled for system profile: \"%s\""
msgstr ""

#: ../server/rhnPackage.py:49 ../server/rhnPackage.py:87
#: ../server/rhnPackage.py:107 ../server/rhnPackage.py:158
#, python-format
msgid "Invalid RPM package %s requested"
msgstr ""

#: ../server/rhnPackage.py:112
msgid "Package not found"
msgstr ""

#: ../server/rhnServer/server_class.py:97
#, python-format
msgid "Architecture `%s' is not supported"
msgstr ""

#: ../server/rhnServer/server_token.py:78
#, python-format
msgid "Token `%s' has more than one base channel assigned"
msgstr ""

#: ../server/rhnServer/server_token.py:80
msgid "Conflicting base channels"
msgstr ""

#: ../server/rhnServer/server_token.py:190
#, python-format
msgid "Failed to add server to group %s"
msgstr ""

#: ../server/rhnServer/server_token.py:503
#, python-format
msgid "Maximum usage count of %s reached"
msgstr ""

#: ../server/rhnServer/server_token.py:744
msgid ""
"Stacking of re-registration tokens with different base entitlements is not "
"supported"
msgstr ""

#: ../server/rhnServer/server_token.py:811
#, python-format
msgid "Could not find token '%s'"
msgstr ""

#. Cannot use activation keys from different orgs
#: ../server/rhnServer/server_token.py:843
msgid "Tokens from mismatching orgs"
msgstr ""

#. Two tokens with different kickstart sessions
#: ../server/rhnServer/server_token.py:853
msgid "Kickstart session mismatch"
msgstr ""

#: ../server/rhnServer/server_token.py:877
msgid "Stacking of re-registration tokens is not supported"
msgstr ""

#: ../server/rhnUser.py:289 ../server/rhnUser.py:292
msgid "Invalid username/password combination"
msgstr ""

#. nope, not reserved either
#: ../server/rhnUser.py:467
#, python-format
msgid "Username `%s' has not been reserved"
msgstr ""

#. New accounts have to specify an e-mail address
#: ../server/rhnUser.py:473
msgid "E-mail address not specified"
msgstr ""

#: ../server/rhnUser.py:509
#, python-format
msgid "username should be at least %d characters"
msgstr ""

#: ../server/rhnUser.py:512
#, python-format
msgid "username should be less than %d characters"
msgstr ""

#: ../server/rhnUser.py:523
#, python-format
msgid "username = `%s', invalid character `%s'"
msgstr ""

#: ../server/rhnUser.py:542
#, python-format
msgid "Please limit your e-mail address to %s chars"
msgstr ""

#: ../server/rhnUser.py:623
#, python-format
msgid "password must be at least %d characters"
msgstr ""

#: ../server/rhnUser.py:626
#, python-format
msgid "Password must be shorter than %d characters"
msgstr ""

#: ../server/rhnUser.py:644
#, python-format
msgid "password contains character `%s'"
msgstr ""

#: ../server/rhnUser.py:651
#, python-format
msgid "username should be at least %d characters long"
msgstr ""

#: ../server/rhnUser.py:662
#, python-format
msgid "Cannot register usernames ending with %s"
msgstr ""

#. 0-999: Red Hat client/client-like interaction errors:
#: ../common/rhnException.py:53
msgid "This does not appear to be a valid username."
msgstr ""

#: ../common/rhnException.py:54
msgid "Invalid username and password combination."
msgstr ""

#: ../common/rhnException.py:55
msgid "This login is already taken, or the password is incorrect."
msgstr ""

#: ../common/rhnException.py:56
msgid "Permission denied."
msgstr ""

#: ../common/rhnException.py:57
msgid "Object not found."
msgstr ""

#: ../common/rhnException.py:58
msgid "Invalid System Digital ID."
msgstr ""

#: ../common/rhnException.py:59
msgid "Invalid System Credentials."
msgstr ""

#: ../common/rhnException.py:60
msgid "Could not retrieve user data from database."
msgstr ""

#: ../common/rhnException.py:61
msgid "Valid username required."
msgstr ""

#: ../common/rhnException.py:62
msgid "Valid password required."
msgstr ""

#: ../common/rhnException.py:63
msgid "Minimum username length violation."
msgstr ""

#: ../common/rhnException.py:64
msgid "Minimum password length violation."
msgstr ""

#: ../common/rhnException.py:65
msgid "The username contains invalid characters."
msgstr ""

#: ../common/rhnException.py:66
msgid "File not found."
msgstr ""

#: ../common/rhnException.py:67
msgid "Architecture and OS version combination is not supported."
msgstr ""

#: ../common/rhnException.py:68
msgid "Could not retrieve system data from database."
msgstr ""

#: ../common/rhnException.py:69
msgid "Invalid arguments passed to function."
msgstr ""

#: ../common/rhnException.py:70
msgid "Unable to retrieve requested entry."
msgstr ""

#: ../common/rhnException.py:71
msgid "Could not update database entry."
msgstr ""

#: ../common/rhnException.py:72
msgid "Unsupported server architecture."
msgstr ""

#: ../common/rhnException.py:73
#, python-format
msgid ""
"\n"
"     The anonymous server functionality is no longer available.\n"
"\n"
"     Please re-register this system by running mgr_register as root.\n"
"     Please visit https://%(hostname)s/rhn/systems/SystemEntitlements.do\n"
"     or login at https://%(hostname)s, and from the \"Overview\" tab,\n"
"     select \"Subscription Management\" to enable the service for this "
"system.\n"
"     "
msgstr ""

#: ../common/rhnException.py:81
msgid "Record not available in the database."
msgstr ""

#: ../common/rhnException.py:82
msgid "Invalid value for entry."
msgstr ""

#: ../common/rhnException.py:83
#, python-format
msgid ""
"\n"
"     This system does not have a valid entitlement for SUSE Manager.\n"
"     Please visit https://%(hostname)s/rhn/systems/SystemEntitlements.do\n"
"     or login at https://%(hostname)s, and from the \"Overview\" tab,\n"
"     select \"Subscription Management\" to enable the service for this "
"system.\n"
"     "
msgstr ""

#: ../common/rhnException.py:89
msgid "Channel error"
msgstr ""

#: ../common/rhnException.py:90
msgid "Client session token is invalid."
msgstr ""

#: ../common/rhnException.py:91
msgid "Client session token has expired."
msgstr ""

#: ../common/rhnException.py:92
msgid "You are not authorized to retrieve the requested object."
msgstr ""

#: ../common/rhnException.py:93
msgid "Invalid action"
msgstr ""

#: ../common/rhnException.py:94
msgid "You are not allowed to perform administrative tasks on this system."
msgstr ""

#: ../common/rhnException.py:96
msgid "The system is already subscribed to the specified channel."
msgstr ""

#: ../common/rhnException.py:97
msgid "The system is not currently subscribed to the specified channel."
msgstr ""

#: ../common/rhnException.py:98
msgid "The specified channel does not exist."
msgstr ""

#: ../common/rhnException.py:99
msgid "Invalid channel version."
msgstr ""

#: ../common/rhnException.py:100
msgid ""
"\n"
"     User group membership limits exceeded.\n"
"\n"
"     The current settings for your account do not allow you to add another\n"
"     user account. Please check with the organization administrator for "
"your\n"
"     account if the maximum number of users allowed to subscribe to server "
"needs\n"
"     to be changed.\n"
"     "
msgstr ""

#: ../common/rhnException.py:108
msgid ""
"\n"
"     System group membership limits exceeded.\n"
"\n"
"     The current settings for your account do not allow you to add another\n"
"     system profile. Please check with the organization administrator for "
"your\n"
"     account for modifying the maximum number of system profiles that can "
"be\n"
"     subscribed to your account.\n"
"     "
msgstr ""

#: ../common/rhnException.py:116
msgid ""
"\n"
"     Invalid architecture.\n"
"\n"
"     The architecture of the package is not supported by\n"
"     "
msgstr ""

#: ../common/rhnException.py:121
msgid "Invalid RPM header"
msgstr ""

#: ../common/rhnException.py:122
msgid ""
"\n"
"    This system is already registered as a Salt Minion. If you want to "
"register it as a traditional client\n"
"    please delete it first via the web UI or API and then register it using "
"the traditional tools.\n"
"    "
msgstr ""

#. For the uploading tools
#: ../common/rhnException.py:127
msgid "Invalid information uploaded to the server"
msgstr ""

#: ../common/rhnException.py:128
msgid "Error uploading network interfaces configuration."
msgstr ""

#: ../common/rhnException.py:129
msgid ""
"\n"
"     Package Upload Failed due to uniqueness constraint violation.\n"
"     Make sure the package does not have any duplicate dependencies or\n"
"     does not already exists on the server\n"
"     "
msgstr ""

#: ../common/rhnException.py:134
msgid ""
"\n"
"     The --force rhnpush option is disabled on this server.\n"
"     Please contact your SUSE Manager administrator for more help.\n"
"     "
msgstr ""

#. 60-70: token errors
#: ../common/rhnException.py:140
msgid ""
"\n"
"     The activation token specified could not be found on the server.\n"
"     Please retry with a valid key.\n"
"     "
msgstr ""

#: ../common/rhnException.py:144
msgid "Too many systems registered using this registration token"
msgstr ""

#: ../common/rhnException.py:145
msgid "Token contains invalid, obsoleted or insufficient settings"
msgstr ""

#: ../common/rhnException.py:146
msgid "Conflicting activation tokens"
msgstr ""

#. 70-80: channel subscription errors
#: ../common/rhnException.py:149
msgid ""
"\n"
"     No matching base channel found for your system.\n"
"     "
msgstr ""

#: ../common/rhnException.py:152
msgid ""
"\n"
"     You do not have subscription permission to the designated channel.\n"
"     Please refer to your organization's channel or organization\n"
"     administrators for further details.\n"
"     "
msgstr ""

#: ../common/rhnException.py:157
msgid "You can not unsubscribe from base channel."
msgstr ""

#: ../common/rhnException.py:158
msgid "SUSE Manager or Proxy channel can not be subscribed."
msgstr ""

#. 80-90: server group errors
#: ../common/rhnException.py:161
msgid "There was an error while trying to join the system to its groups"
msgstr ""

#. 90-100: entitlement errors
#: ../common/rhnException.py:164
msgid "Unable to entitle system"
msgstr ""

#. 100-109: e-mail and uuid related faults
#: ../common/rhnException.py:167
msgid "Maximum e-mail length violation."
msgstr ""

#: ../common/rhnException.py:168
msgid "This system has been previously registered."
msgstr ""

#: ../common/rhnException.py:169
msgid "Invalid username"
msgstr ""

#. 140-159 applet errors
#: ../common/rhnException.py:172
msgid "Unable to look up server"
msgstr ""

#. 160-179: OSAD errors
#: ../common/rhnException.py:175
msgid "Required argument is missing"
msgstr ""

#. 600-699: RHEL5+ EN errors
#: ../common/rhnException.py:178
msgid "No entitlement information tied to hardware"
msgstr ""

#: ../common/rhnException.py:179
msgid "Installation number is not entitling"
msgstr ""

#. 700-799: Additional user input verification errors.
#: ../common/rhnException.py:182
msgid "Maximum username length violation"
msgstr ""

#: ../common/rhnException.py:183
msgid "Maximum password length violation"
msgstr ""

#: ../common/rhnException.py:184
msgid "This user has read only API access. Action denied."
msgstr ""

#: ../common/rhnException.py:186
msgid "System Name cannot be less than 1 character"
msgstr ""

#. 1000-1999: Proxy specific errors:
#. issued by a Proxy to the client
#: ../common/rhnException.py:190
msgid "SUSE Manager Proxy error."
msgstr ""

#: ../common/rhnException.py:191
msgid "SUSE Manager Proxy unable to login."
msgstr ""

#. issued by a SUSE Manager Server/Satellite to the proxy
#: ../common/rhnException.py:193
msgid ""
"\n"
"     SUSE Manager Proxy system ID does not match a Spacewalk Proxy Server\n"
"     in the database.\n"
"     "
msgstr ""

#: ../common/rhnException.py:197
msgid "SUSE Manager Proxy session token is invalid."
msgstr ""

#: ../common/rhnException.py:198
msgid "SUSE Manager Proxy session token has expired."
msgstr ""

#. 2000-2999: Red Hat Satellite specific errors:
#: ../common/rhnException.py:202
msgid ""
"\n"
"      user creation is not allowed via mgr_register;\n"
"     please contact your sysadmin to have your account created.\n"
"     "
msgstr ""

#: ../common/rhnException.py:206
msgid ""
"\n"
"     This SUSE Manager server is not allowed to use Inter Server Sync on "
"this server\n"
"     "
msgstr ""

#: ../common/rhnException.py:209
msgid ""
"\n"
"     Inter Server Sync is disabled on this SUSE Manager Server.\n"
"     "
msgstr ""

#. 3000-3999: XML dumper errors:
#: ../common/rhnException.py:214
msgid "Invalid datatype passed"
msgstr ""

#: ../common/rhnException.py:215
msgid "Unable to retrieve channel"
msgstr ""

#: ../common/rhnException.py:216
msgid "Unable to retrieve package"
msgstr ""

#: ../common/rhnException.py:217
msgid "Unable to retrieve erratum"
msgstr ""

#: ../common/rhnException.py:218
msgid "File is missing"
msgstr ""

#: ../common/rhnException.py:219
msgid "Function retrieval error"
msgstr ""

#: ../common/rhnException.py:220
msgid "Function execution error"
msgstr ""

#: ../common/rhnException.py:221
msgid "Missing version string"
msgstr ""

#: ../common/rhnException.py:222
msgid "Invalid version string"
msgstr ""

#: ../common/rhnException.py:223
msgid "Mismatching versions"
msgstr ""

#: ../common/rhnException.py:224
msgid "Invalid channel version"
msgstr ""

#: ../common/rhnException.py:225
msgid "No comps file for channel"
msgstr ""

#: ../common/rhnException.py:226
msgid "Unable to retrieve comps file"
msgstr ""

#. 4000 - 4999: config management errors
#: ../common/rhnException.py:229
msgid "Configuration action missing"
msgstr ""

#: ../common/rhnException.py:230
msgid "File too large"
msgstr ""

#: ../common/rhnException.py:231
msgid "File contains binary data"
msgstr ""

#: ../common/rhnException.py:232
msgid "Configuration channel is not empty"
msgstr ""

#: ../common/rhnException.py:233
msgid "Permission error"
msgstr ""

#: ../common/rhnException.py:234
msgid "Content missing for configuration file"
msgstr ""

#: ../common/rhnException.py:235
msgid "Template delimiters not specified"
msgstr ""

#: ../common/rhnException.py:236
msgid "Configuration channel does not exist"
msgstr ""

#: ../common/rhnException.py:237
msgid "Configuration channel already exists"
msgstr ""

#: ../common/rhnException.py:238
msgid "File missing from configuration channel"
msgstr ""

#: ../common/rhnException.py:239
msgid "Different revision of this file is uploaded"
msgstr ""

#: ../common/rhnException.py:240
msgid "File already uploaded to configuration channel"
msgstr ""

#: ../common/rhnException.py:241
msgid "File size exceeds remaining quota space"
msgstr ""

#: ../common/rhnException.py:242
msgid "Full path of file must be specified"
msgstr ""

#: ../common/rhnException.py:243
msgid "Invalid revision number"
msgstr ""

#: ../common/rhnException.py:244
msgid "Cannot compare files of different file type"
msgstr ""

#. 5000 - 5999: client content uploading errors
#. 5000 - 5099: crash reporting errors
#: ../common/rhnException.py:248
msgid "Crash information is invalid or incomplete"
msgstr ""

#: ../common/rhnException.py:249
msgid "Crash file information is invalid or incomplete"
msgstr ""

#: ../common/rhnException.py:250
msgid "Error composing crash directory path"
msgstr ""

#: ../common/rhnException.py:251
msgid "Error composing crash file path"
msgstr ""

#: ../common/rhnException.py:252 ../common/rhnException.py:259
msgid "Invalid content encoding"
msgstr ""

#: ../common/rhnException.py:253
msgid "Invalid crash name"
msgstr ""

#: ../common/rhnException.py:254
msgid "Crash reporting is disabled for this organization"
msgstr ""

#. 5100 - 5199: scap results reporting error
#: ../common/rhnException.py:256
msgid "SCAP results file transfer is invalid or incomplete"
msgstr ""

#: ../common/rhnException.py:257
msgid "Error composing directory path for detailed SCAP results"
msgstr ""

#: ../common/rhnException.py:258
msgid "Error composing file path for detailed SCAP results"
msgstr ""

#: ../common/rhnException.py:306
msgid ""
"\n"
"     An error has occurred while processing your request. If this problem\n"
"     persists please enter a bug report at scc.suse.com.\n"
"     If you choose to submit the bug report, please be sure to include\n"
"     details of what you were trying to do when this error occurred and\n"
"     details on how to reproduce this problem.\n"
msgstr ""

#: ../common/rhnException.py:358
#, python-format
msgid ""
"Error Message:\n"
"    %s\n"
msgstr ""

#: ../common/rhnException.py:360
#, python-format
msgid "Error Class Code: %s\n"
msgstr ""

#: ../common/rhnException.py:363
#, python-format
msgid "Error Class Info: %s\n"
msgstr ""

#: ../common/rhnException.py:365
#, python-format
msgid "Explanation: %s"
msgstr ""

#: ../common/rhnTB.py:205
#, python-format
msgid "ERROR: %s %s: %s"
msgstr ""

#: ../common/rhnTB.py:207
#, python-format
msgid "TRACEBACK: %s"
msgstr ""

#: ../satellite_tools/disk_dumper/iss.py:1294
#: ../satellite_tools/disk_dumper/iss.py:1298
#, python-format
msgid "format of %s should be at least YYYYMMDD.\n"
msgstr ""

#: ../satellite_tools/messages.py:26
#, python-format
msgid ""
"\n"
"ERROR: executing step %s. Error is:\n"
"%s\n"
msgstr ""

#: ../satellite_tools/messages.py:31
#, python-format
msgid ""
"\n"
"ERROR: there was a problem accessing the channel data from your temporary\n"
"       repository. Did you migrate all of the data from the channel ISOs\n"
"       do this directory? If so, please recheck the channels ISOs, ensure\n"
"       that you have them all, and then iteratively remount and repopulate\n"
"       the temporary repository (%s).\n"
msgstr ""

#: ../satellite_tools/messages.py:39
#, python-format
msgid ""
"\n"
"ERROR: there was a problem synchronizing the information.\n"
"       Error message: %s\n"
msgstr ""

#: ../satellite_tools/messages.py:44
#, python-format
msgid ""
"\n"
"ERROR: There was a problem communicating with the ISS Master.\n"
"       Depending on the specific error details, please review your "
"configuration,\n"
"       basic network connectivity, and/or name resolution, and try again.\n"
"       Error message: %s\n"
msgstr ""

#: ../satellite_tools/messages.py:51
#, python-format
msgid ""
"\n"
"ERROR: There was a problem communicating with the ISS Master.\n"
"       If the master satellite is older than v5.3, it does not have ISS "
"capability.\n"
"       Otherwise, depending on the specific error details, please review "
"your\n"
"       configuration, basic network connectivity, and/or name resolution, "
"and try again.\n"
"       Error message: %s\n"
msgstr ""

#: ../satellite_tools/messages.py:59
#, python-format
msgid ""
"\n"
"ERROR: a child-channel cannot be synced without its parent being synced as\n"
"       well. A parent needs to be either (a) previously synced or (b) "
"synced\n"
"       in tandem with the desired child-channel. Missing parents for this\n"
"       transaction:\n"
"       %s\n"
msgstr ""

#: ../satellite_tools/messages.py:67
#, python-format
msgid ""
"\n"
"ERROR: you are not entitled to sync a channel in this set of channels.\n"
"Please contact your SUSE Manager contact\n"
"%s"
msgstr ""

#: ../satellite_tools/messages.py:72
#, python-format
msgid "  ERROR: not enough free space (%s KB) on device."
msgstr ""

#: ../satellite_tools/messages.py:74
#, python-format
msgid "    %3d/%s Fetch successful: %s (%s bytes)"
msgstr ""

#: ../satellite_tools/messages.py:75
#, python-format
msgid "    Extinct package:  %s"
msgstr ""

#: ../satellite_tools/messages.py:76
#, python-format
msgid "   Total size: %s"
msgstr ""

#: ../satellite_tools/messages.py:77
#, python-format
msgid "      Downloaded %s of %s. Estimated remaining time: %s"
msgstr ""

#: ../satellite_tools/messages.py:78
#, python-format
msgid "    Fetch unsuccessful: %s"
msgstr ""

#: ../satellite_tools/messages.py:79
#, python-format
msgid "   RPM fetch summary: %s"
msgstr ""

#: ../satellite_tools/messages.py:80
#, python-format
msgid "       success: %d"
msgstr ""

#: ../satellite_tools/messages.py:81
#, python-format
msgid "       failed:  %d"
msgstr ""

#: ../satellite_tools/messages.py:82
#, python-format
msgid "       extinct: %d"
msgstr ""

#: ../satellite_tools/messages.py:84
#, python-format
msgid "   Retrieving / parsing *relevant* package metadata: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:85
#, python-format
msgid "   Retrieving / parsing errata data: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:86
#, python-format
msgid "   Retrieving / parsing kickstart data: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:87
#, python-format
msgid "   Retrieving / parsing kickstart tree files: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:88
#, python-format
msgid "   Importing *relevant* package metadata: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:89
msgid "   * WARNING: this may be a slow process."
msgstr ""

#: ../satellite_tools/messages.py:90
msgid "Linking packages to channels"
msgstr ""

#: ../satellite_tools/messages.py:91
#, python-format
msgid "   Importing *relevant* errata: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:92
msgid "   No new kickstartable tree to import"
msgstr ""

#: ../satellite_tools/messages.py:93
#, python-format
msgid "Importing kickstartable trees (%d)"
msgstr ""

#: ../satellite_tools/messages.py:94
#, python-format
msgid "Imported kickstartable trees (%d)"
msgstr ""

#: ../satellite_tools/reposync.py:111 ../satellite_tools/satsync.py:439
msgid "+++ sending log as an email +++"
msgstr ""

#: ../satellite_tools/reposync.py:114
#, python-format
msgid "%s sync. report from %s"
msgstr ""

#: ../satellite_tools/reposync.py:124 ../satellite_tools/satsync.py:449
msgid "+++ email requested, but there is nothing to send +++"
msgstr ""

#: ../satellite_tools/rhn_satellite_activate.py:198
#, python-format
msgid ""
"\"%s\" (specified in commandline)\n"
"could not be opened and read:\n"
"%s"
msgstr ""

#: ../satellite_tools/rhn_satellite_activate.py:205
#, python-format
msgid ""
"\"%s\" could not be opened\n"
"and/or written to:\n"
"%s"
msgstr ""

#: ../satellite_tools/satsync.py:258
#, python-format
msgid "No handler for step %s"
msgstr ""

#. Try one more time - this time it should be faster since
#. everything should be cached
#: ../satellite_tools/satsync.py:270
msgid "Environment changed, trying again..."
msgstr ""

#: ../satellite_tools/satsync.py:277
msgid "ERROR: Encountered IntegrityError: \n"
msgstr ""

#: ../satellite_tools/satsync.py:285
msgid "Repeated failures"
msgstr ""

#: ../satellite_tools/satsync.py:290
#, python-format
msgid ""
"    Import complete:\n"
"        Begin time: %s\n"
"        End time:   %s\n"
"        Elapsed:    %s\n"
"          "
msgstr ""

#: ../satellite_tools/satsync.py:311
msgid "hours"
msgstr ""

#: ../satellite_tools/satsync.py:311
msgid "minutes"
msgstr ""

#: ../satellite_tools/satsync.py:311
msgid "seconds"
msgstr ""

#: ../satellite_tools/satsync.py:357
msgid ""
"ERROR: The dump is missing package data, use --no-rpms to skip this step or "
"fix the content to include package data."
msgstr ""

#. the orgs() method doesn't exist; that's fine we just
#. won't sync the orgs
#: ../satellite_tools/satsync.py:404
msgid "The SUSE Manager master does not support syncing orgs data."
msgstr ""

#: ../satellite_tools/satsync.py:404
msgid "Skipping..."
msgstr ""

#: ../satellite_tools/satsync.py:442
#, python-format
msgid "SUSE Manager Inter Server sync. report from %s"
msgstr ""

#: ../satellite_tools/satsync.py:521
msgid " - file-system synchronization"
msgstr ""

#: ../satellite_tools/satsync.py:533 ../satellite_tools/satsync.py:541
msgid " - live synchronization"
msgstr ""

#: ../satellite_tools/satsync.py:534
#, python-brace-format
msgid ""
"ERROR: Live content synchronizing with RHN Classic Hosted is no longer "
"supported.\n"
"Please use the cdn-sync command instead unless you are attempting to sync "
"from another {PRODUCT_NAME} via Inter-Server-Sync (ISS), or from local "
"content on disk via Channel Dump ISOs."
msgstr ""

#: ../satellite_tools/satsync.py:542
#, python-format
msgid "   url: %s"
msgstr ""

#: ../satellite_tools/satsync.py:543
#, python-format
msgid "   debug/output level: %s"
msgstr ""

#: ../satellite_tools/satsync.py:553
msgid "ERROR: this server must be registered with SUSE Manager."
msgstr ""

#: ../satellite_tools/satsync.py:575
#, python-format
msgid "Retrieving / parsing %s data"
msgstr ""

#: ../satellite_tools/satsync.py:585 ../satellite_tools/satsync.py:600
msgid "*** SYSTEM INTERRUPT CALLED ***"
msgstr ""

#: ../satellite_tools/satsync.py:593
msgid "ERROR: fatal parser exception occurred "
msgstr ""

#: ../satellite_tools/satsync.py:594
#, python-format
msgid "(line: %s, col: %s msg: %s)"
msgstr ""

#: ../satellite_tools/satsync.py:598
#, python-format
msgid "ERROR: parser exception occurred: %s"
msgstr ""

#: ../satellite_tools/satsync.py:603
msgid "ERROR: exception (during parse) occurred: "
msgstr ""

#: ../satellite_tools/satsync.py:604
#, python-format
msgid ""
"   Encountered some errors with %s data (see logs (%s) for more information)"
msgstr ""

#: ../satellite_tools/satsync.py:606
#, python-format
msgid "   Encountered some errors with %s data:"
msgstr ""

#: ../satellite_tools/satsync.py:607
#, python-format
msgid "   ------- %s PARSE/IMPORT ERROR -------"
msgstr ""

#: ../satellite_tools/satsync.py:609
msgid "   ---------------------------------------"
msgstr ""

#: ../satellite_tools/satsync.py:612
#, python-format
msgid "%s data complete"
msgstr ""

#: ../satellite_tools/satsync.py:665
msgid "Retrieving / parsing channel data"
msgstr ""

#: ../satellite_tools/satsync.py:718
msgid "Channel data complete"
msgstr ""

#: ../satellite_tools/satsync.py:736
#, python-format
msgid "%10s import from %s"
msgstr ""

#: ../satellite_tools/satsync.py:739
#, python-format
msgid "%10s import from %s - %s"
msgstr ""

#: ../satellite_tools/satsync.py:743
#, python-format
msgid "%10s"
msgstr ""

#: ../satellite_tools/satsync.py:750
msgid "p"
msgstr ""

#: ../satellite_tools/satsync.py:752
msgid "."
msgstr ""

#: ../satellite_tools/satsync.py:758
msgid "   p = previously imported/synced channel"
msgstr ""

#: ../satellite_tools/satsync.py:759
msgid "   . = channel not yet imported/synced"
msgstr ""

#: ../satellite_tools/satsync.py:765
msgid "   e = channel no longer supported (end-of-service)"
msgstr ""

#: ../satellite_tools/satsync.py:767
msgid "   ? = channel label invalid --- typo?"
msgstr ""

#: ../satellite_tools/satsync.py:771
#, python-format
msgid "   %s:"
msgstr ""

#: ../satellite_tools/satsync.py:772
#, python-format
msgid "      %s %-40s %4s %s"
msgstr ""

#: ../satellite_tools/satsync.py:773
msgid "base-channels"
msgstr ""

#: ../satellite_tools/satsync.py:786 ../satellite_tools/satsync.py:1603
msgid "NONE RELEVANT"
msgstr ""

#: ../satellite_tools/satsync.py:808
msgid "end-of-service"
msgstr ""

#: ../satellite_tools/satsync.py:809
msgid "e"
msgstr ""

#: ../satellite_tools/satsync.py:815
msgid "   typos:"
msgstr ""

#: ../satellite_tools/satsync.py:816
msgid "?"
msgstr ""

#: ../satellite_tools/satsync.py:831
#, python-format
msgid "XXX: imported channels: %s"
msgstr ""

#: ../satellite_tools/satsync.py:832
#, python-format
msgid "XXX:   cached channels: %s"
msgstr ""

#: ../satellite_tools/satsync.py:837
msgid "XXX: list channels called"
msgstr ""

#: ../satellite_tools/satsync.py:855
msgid "ERROR: these channels either do not exist or are not available:"
msgstr ""

#: ../satellite_tools/satsync.py:859
#, python-format
msgid "       (to see a list of channel labels: %s --list-channels)"
msgstr ""

#: ../satellite_tools/satsync.py:904
#, python-format
msgid "   Retrieving / parsing short package metadata: %s (%s)"
msgstr ""

#: ../satellite_tools/satsync.py:965
#, python-format
msgid "Diffing package metadata (what's missing locally?): %s"
msgstr ""

#: ../satellite_tools/satsync.py:971 ../satellite_tools/satsync.py:1254
msgid "Diffing:    "
msgstr ""

#: ../satellite_tools/satsync.py:988
msgid "ERROR: incremental dump skipped"
msgstr ""

#: ../satellite_tools/satsync.py:1079
msgid "Downloading rpm packages"
msgstr ""

#: ../satellite_tools/satsync.py:1084
#, python-format
msgid "   Fetching any missing RPMs: %s (%s)"
msgstr ""

#: ../satellite_tools/satsync.py:1085 ../satellite_tools/satsync.py:1153
msgid "NONE MISSING"
msgstr ""

#: ../satellite_tools/satsync.py:1094
msgid "Processing rpm packages complete"
msgstr ""

#: ../satellite_tools/satsync.py:1121
msgid "Downloading package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1146
msgid "Downloading srpm packages"
msgstr ""

#: ../satellite_tools/satsync.py:1152
#, python-format
msgid "   Fetching any missing SRPMs: %s (%s)"
msgstr ""

#: ../satellite_tools/satsync.py:1249
#, python-format
msgid "Diffing source package metadata (what's missing locally?): %s"
msgstr ""

#: ../satellite_tools/satsync.py:1260
msgid "Downloading source package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1338 ../satellite_tools/satsync.py:2027
#, python-format
msgid "Unable to save file %s: %s"
msgstr ""

#. for
#. Retried a number of times and it still failed; log the
#. file as being failed and move on
#: ../satellite_tools/satsync.py:1345
#, python-format
msgid "Failed to fetch file %s"
msgstr ""

#: ../satellite_tools/satsync.py:1350
msgid "Downloading kickstartable trees metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1365
msgid "Downloading kickstartable trees files"
msgstr ""

#: ../satellite_tools/satsync.py:1504
#, python-format
msgid "Grabbing all patches for channel %s"
msgstr ""

#: ../satellite_tools/satsync.py:1554
msgid "Downloading patch data"
msgstr ""

#: ../satellite_tools/satsync.py:1556
msgid "Forcing download of all patch data for requested channels."
msgstr ""

#: ../satellite_tools/satsync.py:1571
msgid "Downloading patch data complete"
msgstr ""

#: ../satellite_tools/satsync.py:1576 ../satellite_tools/satsync.py:1597
msgid "Downloading:"
msgstr ""

#: ../satellite_tools/satsync.py:1579
msgid " - complete"
msgstr ""

#: ../satellite_tools/satsync.py:1624
msgid "Importing source package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1627
msgid "Importing package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1635
msgid "Importing:  "
msgstr ""

#. not in the cache
#: ../satellite_tools/satsync.py:1703
msgid ""
"Package Not Found in Cache, Clear the Cache "
"to                                  Regenerate it."
msgstr ""

#: ../satellite_tools/satsync.py:1709
msgid "Importing channel patches"
msgstr ""

#: ../satellite_tools/satsync.py:1714
#, python-format
msgid "Importing %s patches for channel %s."
msgstr ""

#. Incomplete configuration
#: ../satellite_tools/satsync.py:2113
msgid "ERROR: server.mount_point not set in the configuration file"
msgstr ""

#: ../satellite_tools/satsync.py:2117
#, python-format
msgid "ERROR: server.mount_point %s do not exist"
msgstr ""

#: ../satellite_tools/satsync.py:2122
#, python-format
msgid "ERROR: path under server.mount_point (%s)  do not exist"
msgstr ""

#: ../satellite_tools/satsync.py:2199
#, python-format
msgid "Commandline: %s"
msgstr ""

#: ../satellite_tools/satsync.py:2202
#, python-format
msgid ""
"DEBUG ONLY: max. batch-size for XML/database-import processing (1..%s).\"man "
"satellite-sync\" for more information."
msgstr ""

#: ../satellite_tools/satsync.py:2205
msgid "alternative SSL CA Cert (fullpath to cert file)"
msgstr ""

#: ../satellite_tools/satsync.py:2207
msgid "process data for this channel only"
msgstr ""

#: ../satellite_tools/satsync.py:2209
msgid ""
"disk dump will be considered to be a full export; see \"man satellite-sync\" "
"for more information."
msgstr ""

#: ../satellite_tools/satsync.py:2212
msgid "existing custom channels will also be synced (unless -c is used)"
msgstr ""

#: ../satellite_tools/satsync.py:2214
#, python-format
msgid ""
"override debug level set in /etc/rhn/rhn.conf (which is currently set at %s)."
msgstr ""

#: ../satellite_tools/satsync.py:2216
#, python-format
msgid "requested version of XML dump (default: %s)"
msgstr ""

#: ../satellite_tools/satsync.py:2218
msgid "e-mail a report of what was synced/imported"
msgstr ""

#: ../satellite_tools/satsync.py:2220
msgid "forcibly process all (not a diff of) patch metadata"
msgstr ""

#: ../satellite_tools/satsync.py:2222
msgid "Do not use an http proxy under any circumstances."
msgstr ""

#: ../satellite_tools/satsync.py:2224
msgid "alternative http proxy (hostname:port)"
msgstr ""

#: ../satellite_tools/satsync.py:2226
msgid "alternative http proxy username"
msgstr ""

#: ../satellite_tools/satsync.py:2228
msgid "alternative http proxy password"
msgstr ""

#: ../satellite_tools/satsync.py:2230
msgid "parent SUSE Manager to import content from"
msgstr ""

#: ../satellite_tools/satsync.py:2232
msgid "list all available channels and exit"
msgstr ""

#: ../satellite_tools/satsync.py:2234
msgid "help on all error codes mgr-inter-sync returns"
msgstr ""

#: ../satellite_tools/satsync.py:2236
msgid "source mount point for import - disk update only"
msgstr ""

#: ../satellite_tools/satsync.py:2238
msgid "do not process patch data"
msgstr ""

#: ../satellite_tools/satsync.py:2240
msgid "do not process kickstart data (provisioning only)"
msgstr ""

#: ../satellite_tools/satsync.py:2242
msgid "do not process full package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:2244
msgid "do not download, or process any RPMs"
msgstr ""

#: ../satellite_tools/satsync.py:2246
msgid "turn off SSL (not recommended)"
msgstr ""

#: ../satellite_tools/satsync.py:2248
msgid "org to which the sync imports data. defaults to the admin account"
msgstr ""

#: ../satellite_tools/satsync.py:2250
msgid "print the configuration and exit"
msgstr ""

#: ../satellite_tools/satsync.py:2252
msgid "alternative server with which to connect (hostname)"
msgstr ""

#: ../satellite_tools/satsync.py:2254
msgid "synchronize to this step (man satellite-sync for more info)"
msgstr ""

#: ../satellite_tools/satsync.py:2256
msgid "write complete data to tempfile before streaming to remainder of app"
msgstr ""

#: ../satellite_tools/satsync.py:2258
msgid "DEBUG ONLY: alternative path to digital system id"
msgstr ""

#: ../satellite_tools/satsync.py:2260
msgid "alternative email address(es) for sync output (--email option)"
msgstr ""

#: ../satellite_tools/satsync.py:2262
msgid "do not remove rpms when importing from local dump"
msgstr ""

#: ../satellite_tools/satsync.py:2264
msgid ""
"the fully qualified domain name of the master Satellite. Valid with --mount-"
"point only. Required if you want to import org data and channel permissions."
msgstr ""

#: ../satellite_tools/satsync.py:2274
#, python-format
msgid "ERROR: these arguments make no sense in this context (try --help): %s"
msgstr ""

#. An SQL error is fatal... crash and burn
#: ../satellite_tools/satsync.py:2286
#, python-format
msgid "ERROR: Can't connect to the database: %s"
msgstr ""

#: ../satellite_tools/satsync.py:2287
msgid "ERROR: Check if your database is running."
msgstr ""

#: ../satellite_tools/satsync.py:2322
#, python-format
msgid "ERROR: --debug-level takes an in integer value within the range %s."
msgstr ""

#: ../satellite_tools/satsync.py:2324
msgid "  0  - little logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2325
msgid "  1  - minimal logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2326
msgid "  2  - normal level of logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2327
msgid "  3  - lots of logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2328
msgid "  4+ - excessive logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2341
msgid "ERROR: The --master option is only valid with the --mount-point option"
msgstr ""

#: ../satellite_tools/satsync.py:2351
#, python-format
msgid "ERROR: Unable to lookup Org Id %s"
msgstr ""

#: ../satellite_tools/satsync.py:2360
msgid ""
"WARNING: --list-channels option overrides any --step option. --step ignored."
msgstr ""

#: ../satellite_tools/satsync.py:2375
#, python-format
msgid ""
"ERROR: '%s' is not a valid step. See 'man mgr-inter-sync' for more detail."
msgstr ""

#: ../satellite_tools/satsync.py:2407
msgid ""
"ERROR: No channels currently imported; try mgr-inter-sync --list-channels; "
"then mgr-inter-sync -c chn0 -c chn1..."
msgstr ""

#. int(None) --> TypeError
#. int('a')  --> ValueError
#: ../satellite_tools/satsync.py:2457 ../satellite_tools/satsync.py:2461
msgid "ERROR: --batch-size must have a value within the range: 1..50"
msgstr ""

#: ../satellite_tools/satsync.py:2469
#, python-format
msgid "ERROR: no such directory %s"
msgstr ""

#: ../satellite_tools/satsync.py:2474
msgid "Error Codes: Returned codes means:"
msgstr ""

#: ../satellite_tools/satsync.py:2475
msgid " -1  - Could not lock file or KeyboardInterrupt or SystemExit"
msgstr ""

#: ../satellite_tools/satsync.py:2476
msgid "  0  - User interrupted or intentional exit"
msgstr ""

#: ../satellite_tools/satsync.py:2477
msgid "  1  - attempting to run more than one instance of mgr-inter-sync."
msgstr ""

#: ../satellite_tools/satsync.py:2478
msgid "  2  - Unable to find synchronization tools."
msgstr ""

#: ../satellite_tools/satsync.py:2479
msgid "  3  - a general socket exception occurred"
msgstr ""

#: ../satellite_tools/satsync.py:2480
msgid "  4  - an SSL error occurred. Recheck your SSL settings."
msgstr ""

#: ../satellite_tools/satsync.py:2481
msgid "  5  - ISS error"
msgstr ""

#: ../satellite_tools/satsync.py:2482
msgid "  6  - unhandled exception occurred"
msgstr ""

#: ../satellite_tools/satsync.py:2483
msgid "  7  - unknown sync error"
msgstr ""

#: ../satellite_tools/satsync.py:2484
msgid "  8  - ERROR: must be root to execute"
msgstr ""

#: ../satellite_tools/satsync.py:2485
msgid "  9  - rpclib fault during synchronization init"
msgstr ""

#: ../satellite_tools/satsync.py:2486
msgid "  10 - synchronization init error"
msgstr ""

#: ../satellite_tools/satsync.py:2487
msgid "  11 - Error parsing XML stream"
msgstr ""

#: ../satellite_tools/satsync.py:2488
msgid "  12 - Channel do not exist"
msgstr ""

#: ../satellite_tools/satsync.py:2489
msgid "  13 - SQL error during importing package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:2490
msgid "  14 - SQL error during linking channel packages"
msgstr ""

#: ../satellite_tools/satsync.py:2491
msgid "  15 - SQL error during xml processing"
msgstr ""

#: ../satellite_tools/satsync.py:2492
msgid "  16 - server.mount_point not set in the configuration file"
msgstr ""

#: ../satellite_tools/satsync.py:2493
msgid ""
"  17 - SQL error during retrieving the channels already imported in the SUSE "
"Manager database"
msgstr ""

#: ../satellite_tools/satsync.py:2494
msgid "  18 - Wrong db connection string in rhn.conf"
msgstr ""

#: ../satellite_tools/satsync.py:2495
msgid "  19 - Bad arguments"
msgstr ""

#: ../satellite_tools/satsync.py:2496
msgid "  20 - Could not connect to db."
msgstr ""

#: ../satellite_tools/satsync.py:2497
msgid "  21 - Bad debug level"
msgstr ""

#: ../satellite_tools/satsync.py:2498
msgid "  22 - Not valid step"
msgstr ""

#: ../satellite_tools/satsync.py:2499
msgid "  24 - no such file"
msgstr ""

#: ../satellite_tools/satsync.py:2500
msgid "  25 - no such directory"
msgstr ""

#: ../satellite_tools/satsync.py:2501
msgid "  26 - mount_point does not exist"
msgstr ""

#: ../satellite_tools/satsync.py:2502
msgid "  27 - No such org"
msgstr ""

#: ../satellite_tools/satsync.py:2503
msgid "  28 - error: --master is only valid with --mount-point"
msgstr ""

#: ../satellite_tools/satsync.py:2510
#, python-format
msgid "ERROR: unknown dump version, try one of %s"
msgstr ""
 07070100000096000081B40000000000000000000000016290A0C10000B61A000000000000000000000000000000000000001B00000000spacewalk-backend/po/vi.po    # SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
#
# Translators:
msgid ""
msgstr ""
"Project-Id-Version: Spacewalk\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-10-16 13:34+0200\n"
"PO-Revision-Date: 2011-03-04 16:08+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Vietnamese (http://www.transifex.com/projects/p/fedora/"
"language/vi/)\n"
"Language: vi\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"

#: ../server/apacheAuth.py:66
#, python-format
msgid "incomplete proxy authentication token: %s"
msgstr ""

#: ../server/apacheAuth.py:84
#, python-format
msgid "Sent proxy signature %s does not match ours %s."
msgstr ""

#: ../server/apacheAuth.py:119
msgid "declined proxy authentication"
msgstr ""

#: ../server/apacheRequest.py:59
#, python-format
msgid "Invalid request received (%s)."
msgstr ""

#: ../server/apacheRequest.py:120
#, python-format
msgid ""
"IMPORTANT MESSAGE FOLLOWS:\n"
"%s"
msgstr ""

#: ../server/apacheRequest.py:149
#, python-format
msgid ""
"While running '%s': caught\n"
"%s : %s\n"
msgstr ""

#: ../server/apacheRequest.py:606
#, python-format
msgid "Invalid URI %s"
msgstr ""

#: ../server/configFilesHandler.py:129 ../server/handlers/app/packages.py:192
#: ../server/handlers/xmlrpc/registration.py:215
#: ../server/handlers/xmlrpc/registration.py:1168
#: ../server/handlers/xmlrpc/registration.py:1307
#, python-format
msgid ""
"\n"
"                   %s Account has been deactivated on this server.\n"
"                   Please contact your Org administrator for more help."
msgstr ""

#: ../server/handlers/applet/applet.py:78
#, python-brace-format
msgid "Your system was not found in the {PRODUCT_NAME} database"
msgstr ""

#: ../server/handlers/sat/auth.py:45
msgid "ISS is disabled on this server."
msgstr ""

#: ../server/handlers/sat/auth.py:50
#, python-format
msgid "Server \"%s\" is not enabled for ISS."
msgstr ""

#: ../server/handlers/xmlrpc/errata.py:64
#, python-format
msgid "Expected a package name, not: %s"
msgstr ""

#: ../server/handlers/xmlrpc/errata.py:115
#, python-format
msgid "Expected a package, not: %s"
msgstr ""

#: ../server/handlers/xmlrpc/proxy.py:65
#, python-format
msgid "SUSE Manager Proxy service not enabled for server profile: \"%s\""
msgstr ""

#: ../server/handlers/xmlrpc/proxy.py:85
msgid "Invalid session key"
msgstr ""

#: ../server/handlers/xmlrpc/proxy.py:93
msgid "This server ID no longer exists"
msgstr ""

#: ../server/handlers/xmlrpc/queue.py:433
#, python-format
msgid "Invalid action value type %s (%s)"
msgstr ""

#: ../server/handlers/xmlrpc/queue.py:464
#, python-format
msgid "Action %s does not belong to server %s"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:194
msgid "Required data missing"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:198
msgid "Required members missing"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:207
msgid "Attempt to register a system to an invalid username"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:839
msgid "Invalid system release version requested"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1063
msgid ""
"Unable to find a valid network interface, both ipaddr and ip6addr not found."
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1115
#, python-brace-format
msgid "{PRODUCT_NAME} Welcome Message"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1125
msgid "Privacy Statement"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1146
msgid "Expected a dictionary as a product argument"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1374
#, python-format
msgid "Invalid value '%s' for %s (%s)"
msgstr ""

#: ../server/handlers/xmlrpc/scap.py:104
msgid "Invalid system_id/action_id pair."
msgstr ""

#: ../server/handlers/xmlrpc/up2date.py:233
#, python-format
msgid "Invalid value %s (%s)"
msgstr ""

#: ../server/importlib/userAuth.py:98
msgid "You are not authorized to manage packages in the null org"
msgstr ""

#: ../server/importlib/userAuth.py:103
#, python-format
msgid "You are not allowed to manage packages in the %s org"
msgstr ""

#: ../server/importlib/userAuth.py:121
msgid "You are not allowed to perform administrative tasks"
msgstr ""

#: ../server/importlib/userAuth.py:144
#, python-format
msgid ""
"You are not allowed to manage channel %s, or that channel does not exist"
msgstr ""

#: ../server/importlib/userAuth.py:204
#, python-format
msgid ""
"\n"
"               %s Account has been deactivated on this server.\n"
"               Please contact your Org administrator for more help."
msgstr ""

#: ../server/rhnChannel.py:1992
#, python-format
msgid ""
"Your account does not have access to any channels matching "
"(release='%(release)s', arch='%(arch)s')%(www_activation)s"
msgstr ""

#: ../server/rhnChannel.py:2002
msgid ""
"\n"
"If you have a registration number, please register with it first at http://"
"www.redhat.com/apps/activate/ and then try again.\n"
"\n"
msgstr ""

#: ../server/rhnChannel.py:2012
#, python-format
msgid "Insufficient subscription permissions for release (%s, %s"
msgstr ""

#. Various messages that can be reused
#.
#. bretm 02/07/2007 -- when we have better old-client documentation, probably
#. will be safe to get rid of all this crap
#: ../server/rhnChannel.py:2276 ../server/rhnChannel.py:2287
#: ../server/rhnChannel.py:2302
msgid "System Registered but Inactive"
msgstr ""

#: ../server/rhnChannel.py:2277
#, python-format
msgid ""
"\n"
"Invalid Architecture and OS release combination (%s, %s).\n"
"Your system has been registered, but will not receive updates\n"
"because it is not subscribed to a channel. If you have not yet\n"
"activated your product for service, please visit our website at:\n"
"\n"
"     http://www.redhat.com/apps/activate/\n"
"\n"
"...to activate your product."
msgstr ""

#: ../server/rhnChannel.py:2288
#, python-format
msgid ""
"\n"
"Invalid Architecture and OS release combination (%s, %s).\n"
"Your system has been registered, but will not receive updates\n"
"because it could not be subscribed to a base channel.\n"
"Please contact your organization administrator for assistance.\n"
msgstr ""

#: ../server/rhnChannel.py:2295
#, python-format
msgid ""
"\n"
"  This system has been successfully registered, but is not yet entitled\n"
"  to service.  To entitle this system to service, login to the web site at:\n"
"\n"
"  %(entitlement_url)s\n"
msgstr ""

#: ../server/rhnChannel.py:2303
#, python-format
msgid ""
"\n"
"  This system has been successfully registered, but no service entitlements\n"
"  were available.  To entitle this system to service, login to the web site "
"at:\n"
"\n"
"  %(entitlement_url)s\n"
msgstr ""

#: ../server/rhnHandler.py:62
msgid "Please run rhn_register as root on this client"
msgstr ""

#: ../server/rhnHandler.py:75
#, python-format
msgid "Service not enabled for system profile: \"%s\""
msgstr ""

#: ../server/rhnPackage.py:49 ../server/rhnPackage.py:87
#: ../server/rhnPackage.py:107 ../server/rhnPackage.py:158
#, python-format
msgid "Invalid RPM package %s requested"
msgstr ""

#: ../server/rhnPackage.py:112
msgid "Package not found"
msgstr ""

#: ../server/rhnServer/server_class.py:97
#, python-format
msgid "Architecture `%s' is not supported"
msgstr ""

#: ../server/rhnServer/server_token.py:78
#, python-format
msgid "Token `%s' has more than one base channel assigned"
msgstr ""

#: ../server/rhnServer/server_token.py:80
msgid "Conflicting base channels"
msgstr ""

#: ../server/rhnServer/server_token.py:190
#, python-format
msgid "Failed to add server to group %s"
msgstr ""

#: ../server/rhnServer/server_token.py:503
#, python-format
msgid "Maximum usage count of %s reached"
msgstr ""

#: ../server/rhnServer/server_token.py:744
msgid ""
"Stacking of re-registration tokens with different base entitlements is not "
"supported"
msgstr ""

#: ../server/rhnServer/server_token.py:811
#, python-format
msgid "Could not find token '%s'"
msgstr ""

#. Cannot use activation keys from different orgs
#: ../server/rhnServer/server_token.py:843
msgid "Tokens from mismatching orgs"
msgstr ""

#. Two tokens with different kickstart sessions
#: ../server/rhnServer/server_token.py:853
msgid "Kickstart session mismatch"
msgstr ""

#: ../server/rhnServer/server_token.py:877
msgid "Stacking of re-registration tokens is not supported"
msgstr ""

#: ../server/rhnUser.py:289 ../server/rhnUser.py:292
msgid "Invalid username/password combination"
msgstr ""

#. nope, not reserved either
#: ../server/rhnUser.py:467
#, python-format
msgid "Username `%s' has not been reserved"
msgstr ""

#. New accounts have to specify an e-mail address
#: ../server/rhnUser.py:473
msgid "E-mail address not specified"
msgstr ""

#: ../server/rhnUser.py:509
#, python-format
msgid "username should be at least %d characters"
msgstr ""

#: ../server/rhnUser.py:512
#, python-format
msgid "username should be less than %d characters"
msgstr ""

#: ../server/rhnUser.py:523
#, python-format
msgid "username = `%s', invalid character `%s'"
msgstr ""

#: ../server/rhnUser.py:542
#, python-format
msgid "Please limit your e-mail address to %s chars"
msgstr ""

#: ../server/rhnUser.py:623
#, python-format
msgid "password must be at least %d characters"
msgstr ""

#: ../server/rhnUser.py:626
#, python-format
msgid "Password must be shorter than %d characters"
msgstr ""

#: ../server/rhnUser.py:644
#, python-format
msgid "password contains character `%s'"
msgstr ""

#: ../server/rhnUser.py:651
#, python-format
msgid "username should be at least %d characters long"
msgstr ""

#: ../server/rhnUser.py:662
#, python-format
msgid "Cannot register usernames ending with %s"
msgstr ""

#. 0-999: Red Hat client/client-like interaction errors:
#: ../common/rhnException.py:53
msgid "This does not appear to be a valid username."
msgstr ""

#: ../common/rhnException.py:54
msgid "Invalid username and password combination."
msgstr ""

#: ../common/rhnException.py:55
msgid "This login is already taken, or the password is incorrect."
msgstr ""

#: ../common/rhnException.py:56
msgid "Permission denied."
msgstr ""

#: ../common/rhnException.py:57
msgid "Object not found."
msgstr ""

#: ../common/rhnException.py:58
msgid "Invalid System Digital ID."
msgstr ""

#: ../common/rhnException.py:59
msgid "Invalid System Credentials."
msgstr ""

#: ../common/rhnException.py:60
msgid "Could not retrieve user data from database."
msgstr ""

#: ../common/rhnException.py:61
msgid "Valid username required."
msgstr ""

#: ../common/rhnException.py:62
msgid "Valid password required."
msgstr ""

#: ../common/rhnException.py:63
msgid "Minimum username length violation."
msgstr ""

#: ../common/rhnException.py:64
msgid "Minimum password length violation."
msgstr ""

#: ../common/rhnException.py:65
msgid "The username contains invalid characters."
msgstr ""

#: ../common/rhnException.py:66
msgid "File not found."
msgstr ""

#: ../common/rhnException.py:67
msgid "Architecture and OS version combination is not supported."
msgstr ""

#: ../common/rhnException.py:68
msgid "Could not retrieve system data from database."
msgstr ""

#: ../common/rhnException.py:69
msgid "Invalid arguments passed to function."
msgstr ""

#: ../common/rhnException.py:70
msgid "Unable to retrieve requested entry."
msgstr ""

#: ../common/rhnException.py:71
msgid "Could not update database entry."
msgstr ""

#: ../common/rhnException.py:72
msgid "Unsupported server architecture."
msgstr ""

#: ../common/rhnException.py:73
#, python-format
msgid ""
"\n"
"     The anonymous server functionality is no longer available.\n"
"\n"
"     Please re-register this system by running mgr_register as root.\n"
"     Please visit https://%(hostname)s/rhn/systems/SystemEntitlements.do\n"
"     or login at https://%(hostname)s, and from the \"Overview\" tab,\n"
"     select \"Subscription Management\" to enable the service for this "
"system.\n"
"     "
msgstr ""

#: ../common/rhnException.py:81
msgid "Record not available in the database."
msgstr ""

#: ../common/rhnException.py:82
msgid "Invalid value for entry."
msgstr ""

#: ../common/rhnException.py:83
#, python-format
msgid ""
"\n"
"     This system does not have a valid entitlement for SUSE Manager.\n"
"     Please visit https://%(hostname)s/rhn/systems/SystemEntitlements.do\n"
"     or login at https://%(hostname)s, and from the \"Overview\" tab,\n"
"     select \"Subscription Management\" to enable the service for this "
"system.\n"
"     "
msgstr ""

#: ../common/rhnException.py:89
msgid "Channel error"
msgstr ""

#: ../common/rhnException.py:90
msgid "Client session token is invalid."
msgstr ""

#: ../common/rhnException.py:91
msgid "Client session token has expired."
msgstr ""

#: ../common/rhnException.py:92
msgid "You are not authorized to retrieve the requested object."
msgstr ""

#: ../common/rhnException.py:93
msgid "Invalid action"
msgstr ""

#: ../common/rhnException.py:94
msgid "You are not allowed to perform administrative tasks on this system."
msgstr ""

#: ../common/rhnException.py:96
msgid "The system is already subscribed to the specified channel."
msgstr ""

#: ../common/rhnException.py:97
msgid "The system is not currently subscribed to the specified channel."
msgstr ""

#: ../common/rhnException.py:98
msgid "The specified channel does not exist."
msgstr ""

#: ../common/rhnException.py:99
msgid "Invalid channel version."
msgstr ""

#: ../common/rhnException.py:100
msgid ""
"\n"
"     User group membership limits exceeded.\n"
"\n"
"     The current settings for your account do not allow you to add another\n"
"     user account. Please check with the organization administrator for "
"your\n"
"     account if the maximum number of users allowed to subscribe to server "
"needs\n"
"     to be changed.\n"
"     "
msgstr ""

#: ../common/rhnException.py:108
msgid ""
"\n"
"     System group membership limits exceeded.\n"
"\n"
"     The current settings for your account do not allow you to add another\n"
"     system profile. Please check with the organization administrator for "
"your\n"
"     account for modifying the maximum number of system profiles that can "
"be\n"
"     subscribed to your account.\n"
"     "
msgstr ""

#: ../common/rhnException.py:116
msgid ""
"\n"
"     Invalid architecture.\n"
"\n"
"     The architecture of the package is not supported by\n"
"     "
msgstr ""

#: ../common/rhnException.py:121
msgid "Invalid RPM header"
msgstr ""

#: ../common/rhnException.py:122
msgid ""
"\n"
"    This system is already registered as a Salt Minion. If you want to "
"register it as a traditional client\n"
"    please delete it first via the web UI or API and then register it using "
"the traditional tools.\n"
"    "
msgstr ""

#. For the uploading tools
#: ../common/rhnException.py:127
msgid "Invalid information uploaded to the server"
msgstr ""

#: ../common/rhnException.py:128
msgid "Error uploading network interfaces configuration."
msgstr ""

#: ../common/rhnException.py:129
msgid ""
"\n"
"     Package Upload Failed due to uniqueness constraint violation.\n"
"     Make sure the package does not have any duplicate dependencies or\n"
"     does not already exists on the server\n"
"     "
msgstr ""

#: ../common/rhnException.py:134
msgid ""
"\n"
"     The --force rhnpush option is disabled on this server.\n"
"     Please contact your SUSE Manager administrator for more help.\n"
"     "
msgstr ""

#. 60-70: token errors
#: ../common/rhnException.py:140
msgid ""
"\n"
"     The activation token specified could not be found on the server.\n"
"     Please retry with a valid key.\n"
"     "
msgstr ""

#: ../common/rhnException.py:144
msgid "Too many systems registered using this registration token"
msgstr ""

#: ../common/rhnException.py:145
msgid "Token contains invalid, obsoleted or insufficient settings"
msgstr ""

#: ../common/rhnException.py:146
msgid "Conflicting activation tokens"
msgstr ""

#. 70-80: channel subscription errors
#: ../common/rhnException.py:149
msgid ""
"\n"
"     No matching base channel found for your system.\n"
"     "
msgstr ""

#: ../common/rhnException.py:152
msgid ""
"\n"
"     You do not have subscription permission to the designated channel.\n"
"     Please refer to your organization's channel or organization\n"
"     administrators for further details.\n"
"     "
msgstr ""

#: ../common/rhnException.py:157
msgid "You can not unsubscribe from base channel."
msgstr ""

#: ../common/rhnException.py:158
msgid "SUSE Manager or Proxy channel can not be subscribed."
msgstr ""

#. 80-90: server group errors
#: ../common/rhnException.py:161
msgid "There was an error while trying to join the system to its groups"
msgstr ""

#. 90-100: entitlement errors
#: ../common/rhnException.py:164
msgid "Unable to entitle system"
msgstr ""

#. 100-109: e-mail and uuid related faults
#: ../common/rhnException.py:167
msgid "Maximum e-mail length violation."
msgstr ""

#: ../common/rhnException.py:168
msgid "This system has been previously registered."
msgstr ""

#: ../common/rhnException.py:169
msgid "Invalid username"
msgstr ""

#. 140-159 applet errors
#: ../common/rhnException.py:172
msgid "Unable to look up server"
msgstr ""

#. 160-179: OSAD errors
#: ../common/rhnException.py:175
msgid "Required argument is missing"
msgstr ""

#. 600-699: RHEL5+ EN errors
#: ../common/rhnException.py:178
msgid "No entitlement information tied to hardware"
msgstr ""

#: ../common/rhnException.py:179
msgid "Installation number is not entitling"
msgstr ""

#. 700-799: Additional user input verification errors.
#: ../common/rhnException.py:182
msgid "Maximum username length violation"
msgstr ""

#: ../common/rhnException.py:183
msgid "Maximum password length violation"
msgstr ""

#: ../common/rhnException.py:184
msgid "This user has read only API access. Action denied."
msgstr ""

#: ../common/rhnException.py:186
msgid "System Name cannot be less than 1 character"
msgstr ""

#. 1000-1999: Proxy specific errors:
#. issued by a Proxy to the client
#: ../common/rhnException.py:190
msgid "SUSE Manager Proxy error."
msgstr ""

#: ../common/rhnException.py:191
msgid "SUSE Manager Proxy unable to login."
msgstr ""

#. issued by a SUSE Manager Server/Satellite to the proxy
#: ../common/rhnException.py:193
msgid ""
"\n"
"     SUSE Manager Proxy system ID does not match a Spacewalk Proxy Server\n"
"     in the database.\n"
"     "
msgstr ""

#: ../common/rhnException.py:197
msgid "SUSE Manager Proxy session token is invalid."
msgstr ""

#: ../common/rhnException.py:198
msgid "SUSE Manager Proxy session token has expired."
msgstr ""

#. 2000-2999: Red Hat Satellite specific errors:
#: ../common/rhnException.py:202
msgid ""
"\n"
"      user creation is not allowed via mgr_register;\n"
"     please contact your sysadmin to have your account created.\n"
"     "
msgstr ""

#: ../common/rhnException.py:206
msgid ""
"\n"
"     This SUSE Manager server is not allowed to use Inter Server Sync on "
"this server\n"
"     "
msgstr ""

#: ../common/rhnException.py:209
msgid ""
"\n"
"     Inter Server Sync is disabled on this SUSE Manager Server.\n"
"     "
msgstr ""

#. 3000-3999: XML dumper errors:
#: ../common/rhnException.py:214
msgid "Invalid datatype passed"
msgstr ""

#: ../common/rhnException.py:215
msgid "Unable to retrieve channel"
msgstr ""

#: ../common/rhnException.py:216
msgid "Unable to retrieve package"
msgstr ""

#: ../common/rhnException.py:217
msgid "Unable to retrieve erratum"
msgstr ""

#: ../common/rhnException.py:218
msgid "File is missing"
msgstr ""

#: ../common/rhnException.py:219
msgid "Function retrieval error"
msgstr ""

#: ../common/rhnException.py:220
msgid "Function execution error"
msgstr ""

#: ../common/rhnException.py:221
msgid "Missing version string"
msgstr ""

#: ../common/rhnException.py:222
msgid "Invalid version string"
msgstr ""

#: ../common/rhnException.py:223
msgid "Mismatching versions"
msgstr ""

#: ../common/rhnException.py:224
msgid "Invalid channel version"
msgstr ""

#: ../common/rhnException.py:225
msgid "No comps file for channel"
msgstr ""

#: ../common/rhnException.py:226
msgid "Unable to retrieve comps file"
msgstr ""

#. 4000 - 4999: config management errors
#: ../common/rhnException.py:229
msgid "Configuration action missing"
msgstr ""

#: ../common/rhnException.py:230
msgid "File too large"
msgstr ""

#: ../common/rhnException.py:231
msgid "File contains binary data"
msgstr ""

#: ../common/rhnException.py:232
msgid "Configuration channel is not empty"
msgstr ""

#: ../common/rhnException.py:233
msgid "Permission error"
msgstr ""

#: ../common/rhnException.py:234
msgid "Content missing for configuration file"
msgstr ""

#: ../common/rhnException.py:235
msgid "Template delimiters not specified"
msgstr ""

#: ../common/rhnException.py:236
msgid "Configuration channel does not exist"
msgstr ""

#: ../common/rhnException.py:237
msgid "Configuration channel already exists"
msgstr ""

#: ../common/rhnException.py:238
msgid "File missing from configuration channel"
msgstr ""

#: ../common/rhnException.py:239
msgid "Different revision of this file is uploaded"
msgstr ""

#: ../common/rhnException.py:240
msgid "File already uploaded to configuration channel"
msgstr ""

#: ../common/rhnException.py:241
msgid "File size exceeds remaining quota space"
msgstr ""

#: ../common/rhnException.py:242
msgid "Full path of file must be specified"
msgstr ""

#: ../common/rhnException.py:243
msgid "Invalid revision number"
msgstr ""

#: ../common/rhnException.py:244
msgid "Cannot compare files of different file type"
msgstr ""

#. 5000 - 5999: client content uploading errors
#. 5000 - 5099: crash reporting errors
#: ../common/rhnException.py:248
msgid "Crash information is invalid or incomplete"
msgstr ""

#: ../common/rhnException.py:249
msgid "Crash file information is invalid or incomplete"
msgstr ""

#: ../common/rhnException.py:250
msgid "Error composing crash directory path"
msgstr ""

#: ../common/rhnException.py:251
msgid "Error composing crash file path"
msgstr ""

#: ../common/rhnException.py:252 ../common/rhnException.py:259
msgid "Invalid content encoding"
msgstr ""

#: ../common/rhnException.py:253
msgid "Invalid crash name"
msgstr ""

#: ../common/rhnException.py:254
msgid "Crash reporting is disabled for this organization"
msgstr ""

#. 5100 - 5199: scap results reporting error
#: ../common/rhnException.py:256
msgid "SCAP results file transfer is invalid or incomplete"
msgstr ""

#: ../common/rhnException.py:257
msgid "Error composing directory path for detailed SCAP results"
msgstr ""

#: ../common/rhnException.py:258
msgid "Error composing file path for detailed SCAP results"
msgstr ""

#: ../common/rhnException.py:306
msgid ""
"\n"
"     An error has occurred while processing your request. If this problem\n"
"     persists please enter a bug report at scc.suse.com.\n"
"     If you choose to submit the bug report, please be sure to include\n"
"     details of what you were trying to do when this error occurred and\n"
"     details on how to reproduce this problem.\n"
msgstr ""

#: ../common/rhnException.py:358
#, python-format
msgid ""
"Error Message:\n"
"    %s\n"
msgstr ""

#: ../common/rhnException.py:360
#, python-format
msgid "Error Class Code: %s\n"
msgstr ""

#: ../common/rhnException.py:363
#, python-format
msgid "Error Class Info: %s\n"
msgstr ""

#: ../common/rhnException.py:365
#, python-format
msgid "Explanation: %s"
msgstr ""

#: ../common/rhnTB.py:205
#, python-format
msgid "ERROR: %s %s: %s"
msgstr ""

#: ../common/rhnTB.py:207
#, python-format
msgid "TRACEBACK: %s"
msgstr ""

#: ../satellite_tools/disk_dumper/iss.py:1294
#: ../satellite_tools/disk_dumper/iss.py:1298
#, python-format
msgid "format of %s should be at least YYYYMMDD.\n"
msgstr ""

#: ../satellite_tools/messages.py:26
#, python-format
msgid ""
"\n"
"ERROR: executing step %s. Error is:\n"
"%s\n"
msgstr ""

#: ../satellite_tools/messages.py:31
#, python-format
msgid ""
"\n"
"ERROR: there was a problem accessing the channel data from your temporary\n"
"       repository. Did you migrate all of the data from the channel ISOs\n"
"       do this directory? If so, please recheck the channels ISOs, ensure\n"
"       that you have them all, and then iteratively remount and repopulate\n"
"       the temporary repository (%s).\n"
msgstr ""

#: ../satellite_tools/messages.py:39
#, python-format
msgid ""
"\n"
"ERROR: there was a problem synchronizing the information.\n"
"       Error message: %s\n"
msgstr ""

#: ../satellite_tools/messages.py:44
#, python-format
msgid ""
"\n"
"ERROR: There was a problem communicating with the ISS Master.\n"
"       Depending on the specific error details, please review your "
"configuration,\n"
"       basic network connectivity, and/or name resolution, and try again.\n"
"       Error message: %s\n"
msgstr ""

#: ../satellite_tools/messages.py:51
#, python-format
msgid ""
"\n"
"ERROR: There was a problem communicating with the ISS Master.\n"
"       If the master satellite is older than v5.3, it does not have ISS "
"capability.\n"
"       Otherwise, depending on the specific error details, please review "
"your\n"
"       configuration, basic network connectivity, and/or name resolution, "
"and try again.\n"
"       Error message: %s\n"
msgstr ""

#: ../satellite_tools/messages.py:59
#, python-format
msgid ""
"\n"
"ERROR: a child-channel cannot be synced without its parent being synced as\n"
"       well. A parent needs to be either (a) previously synced or (b) "
"synced\n"
"       in tandem with the desired child-channel. Missing parents for this\n"
"       transaction:\n"
"       %s\n"
msgstr ""

#: ../satellite_tools/messages.py:67
#, python-format
msgid ""
"\n"
"ERROR: you are not entitled to sync a channel in this set of channels.\n"
"Please contact your SUSE Manager contact\n"
"%s"
msgstr ""

#: ../satellite_tools/messages.py:72
#, python-format
msgid "  ERROR: not enough free space (%s KB) on device."
msgstr ""

#: ../satellite_tools/messages.py:74
#, python-format
msgid "    %3d/%s Fetch successful: %s (%s bytes)"
msgstr ""

#: ../satellite_tools/messages.py:75
#, python-format
msgid "    Extinct package:  %s"
msgstr ""

#: ../satellite_tools/messages.py:76
#, python-format
msgid "   Total size: %s"
msgstr ""

#: ../satellite_tools/messages.py:77
#, python-format
msgid "      Downloaded %s of %s. Estimated remaining time: %s"
msgstr ""

#: ../satellite_tools/messages.py:78
#, python-format
msgid "    Fetch unsuccessful: %s"
msgstr ""

#: ../satellite_tools/messages.py:79
#, python-format
msgid "   RPM fetch summary: %s"
msgstr ""

#: ../satellite_tools/messages.py:80
#, python-format
msgid "       success: %d"
msgstr ""

#: ../satellite_tools/messages.py:81
#, python-format
msgid "       failed:  %d"
msgstr ""

#: ../satellite_tools/messages.py:82
#, python-format
msgid "       extinct: %d"
msgstr ""

#: ../satellite_tools/messages.py:84
#, python-format
msgid "   Retrieving / parsing *relevant* package metadata: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:85
#, python-format
msgid "   Retrieving / parsing errata data: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:86
#, python-format
msgid "   Retrieving / parsing kickstart data: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:87
#, python-format
msgid "   Retrieving / parsing kickstart tree files: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:88
#, python-format
msgid "   Importing *relevant* package metadata: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:89
msgid "   * WARNING: this may be a slow process."
msgstr ""

#: ../satellite_tools/messages.py:90
msgid "Linking packages to channels"
msgstr ""

#: ../satellite_tools/messages.py:91
#, python-format
msgid "   Importing *relevant* errata: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:92
msgid "   No new kickstartable tree to import"
msgstr ""

#: ../satellite_tools/messages.py:93
#, python-format
msgid "Importing kickstartable trees (%d)"
msgstr ""

#: ../satellite_tools/messages.py:94
#, python-format
msgid "Imported kickstartable trees (%d)"
msgstr ""

#: ../satellite_tools/reposync.py:111 ../satellite_tools/satsync.py:439
msgid "+++ sending log as an email +++"
msgstr ""

#: ../satellite_tools/reposync.py:114
#, python-format
msgid "%s sync. report from %s"
msgstr ""

#: ../satellite_tools/reposync.py:124 ../satellite_tools/satsync.py:449
msgid "+++ email requested, but there is nothing to send +++"
msgstr ""

#: ../satellite_tools/rhn_satellite_activate.py:198
#, python-format
msgid ""
"\"%s\" (specified in commandline)\n"
"could not be opened and read:\n"
"%s"
msgstr ""

#: ../satellite_tools/rhn_satellite_activate.py:205
#, python-format
msgid ""
"\"%s\" could not be opened\n"
"and/or written to:\n"
"%s"
msgstr ""

#: ../satellite_tools/satsync.py:258
#, python-format
msgid "No handler for step %s"
msgstr ""

#. Try one more time - this time it should be faster since
#. everything should be cached
#: ../satellite_tools/satsync.py:270
msgid "Environment changed, trying again..."
msgstr ""

#: ../satellite_tools/satsync.py:277
msgid "ERROR: Encountered IntegrityError: \n"
msgstr ""

#: ../satellite_tools/satsync.py:285
msgid "Repeated failures"
msgstr ""

#: ../satellite_tools/satsync.py:290
#, python-format
msgid ""
"    Import complete:\n"
"        Begin time: %s\n"
"        End time:   %s\n"
"        Elapsed:    %s\n"
"          "
msgstr ""

#: ../satellite_tools/satsync.py:311
msgid "hours"
msgstr ""

#: ../satellite_tools/satsync.py:311
msgid "minutes"
msgstr ""

#: ../satellite_tools/satsync.py:311
msgid "seconds"
msgstr ""

#: ../satellite_tools/satsync.py:357
msgid ""
"ERROR: The dump is missing package data, use --no-rpms to skip this step or "
"fix the content to include package data."
msgstr ""

#. the orgs() method doesn't exist; that's fine we just
#. won't sync the orgs
#: ../satellite_tools/satsync.py:404
msgid "The SUSE Manager master does not support syncing orgs data."
msgstr ""

#: ../satellite_tools/satsync.py:404
msgid "Skipping..."
msgstr ""

#: ../satellite_tools/satsync.py:442
#, python-format
msgid "SUSE Manager Inter Server sync. report from %s"
msgstr ""

#: ../satellite_tools/satsync.py:521
msgid " - file-system synchronization"
msgstr ""

#: ../satellite_tools/satsync.py:533 ../satellite_tools/satsync.py:541
msgid " - live synchronization"
msgstr ""

#: ../satellite_tools/satsync.py:534
#, python-brace-format
msgid ""
"ERROR: Live content synchronizing with RHN Classic Hosted is no longer "
"supported.\n"
"Please use the cdn-sync command instead unless you are attempting to sync "
"from another {PRODUCT_NAME} via Inter-Server-Sync (ISS), or from local "
"content on disk via Channel Dump ISOs."
msgstr ""

#: ../satellite_tools/satsync.py:542
#, python-format
msgid "   url: %s"
msgstr ""

#: ../satellite_tools/satsync.py:543
#, python-format
msgid "   debug/output level: %s"
msgstr ""

#: ../satellite_tools/satsync.py:553
msgid "ERROR: this server must be registered with SUSE Manager."
msgstr ""

#: ../satellite_tools/satsync.py:575
#, python-format
msgid "Retrieving / parsing %s data"
msgstr ""

#: ../satellite_tools/satsync.py:585 ../satellite_tools/satsync.py:600
msgid "*** SYSTEM INTERRUPT CALLED ***"
msgstr ""

#: ../satellite_tools/satsync.py:593
msgid "ERROR: fatal parser exception occurred "
msgstr ""

#: ../satellite_tools/satsync.py:594
#, python-format
msgid "(line: %s, col: %s msg: %s)"
msgstr ""

#: ../satellite_tools/satsync.py:598
#, python-format
msgid "ERROR: parser exception occurred: %s"
msgstr ""

#: ../satellite_tools/satsync.py:603
msgid "ERROR: exception (during parse) occurred: "
msgstr ""

#: ../satellite_tools/satsync.py:604
#, python-format
msgid ""
"   Encountered some errors with %s data (see logs (%s) for more information)"
msgstr ""

#: ../satellite_tools/satsync.py:606
#, python-format
msgid "   Encountered some errors with %s data:"
msgstr ""

#: ../satellite_tools/satsync.py:607
#, python-format
msgid "   ------- %s PARSE/IMPORT ERROR -------"
msgstr ""

#: ../satellite_tools/satsync.py:609
msgid "   ---------------------------------------"
msgstr ""

#: ../satellite_tools/satsync.py:612
#, python-format
msgid "%s data complete"
msgstr ""

#: ../satellite_tools/satsync.py:665
msgid "Retrieving / parsing channel data"
msgstr ""

#: ../satellite_tools/satsync.py:718
msgid "Channel data complete"
msgstr ""

#: ../satellite_tools/satsync.py:736
#, python-format
msgid "%10s import from %s"
msgstr ""

#: ../satellite_tools/satsync.py:739
#, python-format
msgid "%10s import from %s - %s"
msgstr ""

#: ../satellite_tools/satsync.py:743
#, python-format
msgid "%10s"
msgstr ""

#: ../satellite_tools/satsync.py:750
msgid "p"
msgstr ""

#: ../satellite_tools/satsync.py:752
msgid "."
msgstr ""

#: ../satellite_tools/satsync.py:758
msgid "   p = previously imported/synced channel"
msgstr ""

#: ../satellite_tools/satsync.py:759
msgid "   . = channel not yet imported/synced"
msgstr ""

#: ../satellite_tools/satsync.py:765
msgid "   e = channel no longer supported (end-of-service)"
msgstr ""

#: ../satellite_tools/satsync.py:767
msgid "   ? = channel label invalid --- typo?"
msgstr ""

#: ../satellite_tools/satsync.py:771
#, python-format
msgid "   %s:"
msgstr ""

#: ../satellite_tools/satsync.py:772
#, python-format
msgid "      %s %-40s %4s %s"
msgstr ""

#: ../satellite_tools/satsync.py:773
msgid "base-channels"
msgstr ""

#: ../satellite_tools/satsync.py:786 ../satellite_tools/satsync.py:1603
msgid "NONE RELEVANT"
msgstr ""

#: ../satellite_tools/satsync.py:808
msgid "end-of-service"
msgstr ""

#: ../satellite_tools/satsync.py:809
msgid "e"
msgstr ""

#: ../satellite_tools/satsync.py:815
msgid "   typos:"
msgstr ""

#: ../satellite_tools/satsync.py:816
msgid "?"
msgstr ""

#: ../satellite_tools/satsync.py:831
#, python-format
msgid "XXX: imported channels: %s"
msgstr ""

#: ../satellite_tools/satsync.py:832
#, python-format
msgid "XXX:   cached channels: %s"
msgstr ""

#: ../satellite_tools/satsync.py:837
msgid "XXX: list channels called"
msgstr ""

#: ../satellite_tools/satsync.py:855
msgid "ERROR: these channels either do not exist or are not available:"
msgstr ""

#: ../satellite_tools/satsync.py:859
#, python-format
msgid "       (to see a list of channel labels: %s --list-channels)"
msgstr ""

#: ../satellite_tools/satsync.py:904
#, python-format
msgid "   Retrieving / parsing short package metadata: %s (%s)"
msgstr ""

#: ../satellite_tools/satsync.py:965
#, python-format
msgid "Diffing package metadata (what's missing locally?): %s"
msgstr ""

#: ../satellite_tools/satsync.py:971 ../satellite_tools/satsync.py:1254
msgid "Diffing:    "
msgstr ""

#: ../satellite_tools/satsync.py:988
msgid "ERROR: incremental dump skipped"
msgstr ""

#: ../satellite_tools/satsync.py:1079
msgid "Downloading rpm packages"
msgstr ""

#: ../satellite_tools/satsync.py:1084
#, python-format
msgid "   Fetching any missing RPMs: %s (%s)"
msgstr ""

#: ../satellite_tools/satsync.py:1085 ../satellite_tools/satsync.py:1153
msgid "NONE MISSING"
msgstr ""

#: ../satellite_tools/satsync.py:1094
msgid "Processing rpm packages complete"
msgstr ""

#: ../satellite_tools/satsync.py:1121
msgid "Downloading package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1146
msgid "Downloading srpm packages"
msgstr ""

#: ../satellite_tools/satsync.py:1152
#, python-format
msgid "   Fetching any missing SRPMs: %s (%s)"
msgstr ""

#: ../satellite_tools/satsync.py:1249
#, python-format
msgid "Diffing source package metadata (what's missing locally?): %s"
msgstr ""

#: ../satellite_tools/satsync.py:1260
msgid "Downloading source package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1338 ../satellite_tools/satsync.py:2027
#, python-format
msgid "Unable to save file %s: %s"
msgstr ""

#. for
#. Retried a number of times and it still failed; log the
#. file as being failed and move on
#: ../satellite_tools/satsync.py:1345
#, python-format
msgid "Failed to fetch file %s"
msgstr ""

#: ../satellite_tools/satsync.py:1350
msgid "Downloading kickstartable trees metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1365
msgid "Downloading kickstartable trees files"
msgstr ""

#: ../satellite_tools/satsync.py:1504
#, python-format
msgid "Grabbing all patches for channel %s"
msgstr ""

#: ../satellite_tools/satsync.py:1554
msgid "Downloading patch data"
msgstr ""

#: ../satellite_tools/satsync.py:1556
msgid "Forcing download of all patch data for requested channels."
msgstr ""

#: ../satellite_tools/satsync.py:1571
msgid "Downloading patch data complete"
msgstr ""

#: ../satellite_tools/satsync.py:1576 ../satellite_tools/satsync.py:1597
msgid "Downloading:"
msgstr ""

#: ../satellite_tools/satsync.py:1579
msgid " - complete"
msgstr ""

#: ../satellite_tools/satsync.py:1624
msgid "Importing source package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1627
msgid "Importing package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1635
msgid "Importing:  "
msgstr ""

#. not in the cache
#: ../satellite_tools/satsync.py:1703
msgid ""
"Package Not Found in Cache, Clear the Cache "
"to                                  Regenerate it."
msgstr ""

#: ../satellite_tools/satsync.py:1709
msgid "Importing channel patches"
msgstr ""

#: ../satellite_tools/satsync.py:1714
#, python-format
msgid "Importing %s patches for channel %s."
msgstr ""

#. Incomplete configuration
#: ../satellite_tools/satsync.py:2113
msgid "ERROR: server.mount_point not set in the configuration file"
msgstr ""

#: ../satellite_tools/satsync.py:2117
#, python-format
msgid "ERROR: server.mount_point %s do not exist"
msgstr ""

#: ../satellite_tools/satsync.py:2122
#, python-format
msgid "ERROR: path under server.mount_point (%s)  do not exist"
msgstr ""

#: ../satellite_tools/satsync.py:2199
#, python-format
msgid "Commandline: %s"
msgstr ""

#: ../satellite_tools/satsync.py:2202
#, python-format
msgid ""
"DEBUG ONLY: max. batch-size for XML/database-import processing (1..%s).\"man "
"satellite-sync\" for more information."
msgstr ""

#: ../satellite_tools/satsync.py:2205
msgid "alternative SSL CA Cert (fullpath to cert file)"
msgstr ""

#: ../satellite_tools/satsync.py:2207
msgid "process data for this channel only"
msgstr ""

#: ../satellite_tools/satsync.py:2209
msgid ""
"disk dump will be considered to be a full export; see \"man satellite-sync\" "
"for more information."
msgstr ""

#: ../satellite_tools/satsync.py:2212
msgid "existing custom channels will also be synced (unless -c is used)"
msgstr ""

#: ../satellite_tools/satsync.py:2214
#, python-format
msgid ""
"override debug level set in /etc/rhn/rhn.conf (which is currently set at %s)."
msgstr ""

#: ../satellite_tools/satsync.py:2216
#, python-format
msgid "requested version of XML dump (default: %s)"
msgstr ""

#: ../satellite_tools/satsync.py:2218
msgid "e-mail a report of what was synced/imported"
msgstr ""

#: ../satellite_tools/satsync.py:2220
msgid "forcibly process all (not a diff of) patch metadata"
msgstr ""

#: ../satellite_tools/satsync.py:2222
msgid "Do not use an http proxy under any circumstances."
msgstr ""

#: ../satellite_tools/satsync.py:2224
msgid "alternative http proxy (hostname:port)"
msgstr ""

#: ../satellite_tools/satsync.py:2226
msgid "alternative http proxy username"
msgstr ""

#: ../satellite_tools/satsync.py:2228
msgid "alternative http proxy password"
msgstr ""

#: ../satellite_tools/satsync.py:2230
msgid "parent SUSE Manager to import content from"
msgstr ""

#: ../satellite_tools/satsync.py:2232
msgid "list all available channels and exit"
msgstr ""

#: ../satellite_tools/satsync.py:2234
msgid "help on all error codes mgr-inter-sync returns"
msgstr ""

#: ../satellite_tools/satsync.py:2236
msgid "source mount point for import - disk update only"
msgstr ""

#: ../satellite_tools/satsync.py:2238
msgid "do not process patch data"
msgstr ""

#: ../satellite_tools/satsync.py:2240
msgid "do not process kickstart data (provisioning only)"
msgstr ""

#: ../satellite_tools/satsync.py:2242
msgid "do not process full package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:2244
msgid "do not download, or process any RPMs"
msgstr ""

#: ../satellite_tools/satsync.py:2246
msgid "turn off SSL (not recommended)"
msgstr ""

#: ../satellite_tools/satsync.py:2248
msgid "org to which the sync imports data. defaults to the admin account"
msgstr ""

#: ../satellite_tools/satsync.py:2250
msgid "print the configuration and exit"
msgstr ""

#: ../satellite_tools/satsync.py:2252
msgid "alternative server with which to connect (hostname)"
msgstr ""

#: ../satellite_tools/satsync.py:2254
msgid "synchronize to this step (man satellite-sync for more info)"
msgstr ""

#: ../satellite_tools/satsync.py:2256
msgid "write complete data to tempfile before streaming to remainder of app"
msgstr ""

#: ../satellite_tools/satsync.py:2258
msgid "DEBUG ONLY: alternative path to digital system id"
msgstr ""

#: ../satellite_tools/satsync.py:2260
msgid "alternative email address(es) for sync output (--email option)"
msgstr ""

#: ../satellite_tools/satsync.py:2262
msgid "do not remove rpms when importing from local dump"
msgstr ""

#: ../satellite_tools/satsync.py:2264
msgid ""
"the fully qualified domain name of the master Satellite. Valid with --mount-"
"point only. Required if you want to import org data and channel permissions."
msgstr ""

#: ../satellite_tools/satsync.py:2274
#, python-format
msgid "ERROR: these arguments make no sense in this context (try --help): %s"
msgstr ""

#. An SQL error is fatal... crash and burn
#: ../satellite_tools/satsync.py:2286
#, python-format
msgid "ERROR: Can't connect to the database: %s"
msgstr ""

#: ../satellite_tools/satsync.py:2287
msgid "ERROR: Check if your database is running."
msgstr ""

#: ../satellite_tools/satsync.py:2322
#, python-format
msgid "ERROR: --debug-level takes an in integer value within the range %s."
msgstr ""

#: ../satellite_tools/satsync.py:2324
msgid "  0  - little logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2325
msgid "  1  - minimal logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2326
msgid "  2  - normal level of logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2327
msgid "  3  - lots of logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2328
msgid "  4+ - excessive logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2341
msgid "ERROR: The --master option is only valid with the --mount-point option"
msgstr ""

#: ../satellite_tools/satsync.py:2351
#, python-format
msgid "ERROR: Unable to lookup Org Id %s"
msgstr ""

#: ../satellite_tools/satsync.py:2360
msgid ""
"WARNING: --list-channels option overrides any --step option. --step ignored."
msgstr ""

#: ../satellite_tools/satsync.py:2375
#, python-format
msgid ""
"ERROR: '%s' is not a valid step. See 'man mgr-inter-sync' for more detail."
msgstr ""

#: ../satellite_tools/satsync.py:2407
msgid ""
"ERROR: No channels currently imported; try mgr-inter-sync --list-channels; "
"then mgr-inter-sync -c chn0 -c chn1..."
msgstr ""

#. int(None) --> TypeError
#. int('a')  --> ValueError
#: ../satellite_tools/satsync.py:2457 ../satellite_tools/satsync.py:2461
msgid "ERROR: --batch-size must have a value within the range: 1..50"
msgstr ""

#: ../satellite_tools/satsync.py:2469
#, python-format
msgid "ERROR: no such directory %s"
msgstr ""

#: ../satellite_tools/satsync.py:2474
msgid "Error Codes: Returned codes means:"
msgstr ""

#: ../satellite_tools/satsync.py:2475
msgid " -1  - Could not lock file or KeyboardInterrupt or SystemExit"
msgstr ""

#: ../satellite_tools/satsync.py:2476
msgid "  0  - User interrupted or intentional exit"
msgstr ""

#: ../satellite_tools/satsync.py:2477
msgid "  1  - attempting to run more than one instance of mgr-inter-sync."
msgstr ""

#: ../satellite_tools/satsync.py:2478
msgid "  2  - Unable to find synchronization tools."
msgstr ""

#: ../satellite_tools/satsync.py:2479
msgid "  3  - a general socket exception occurred"
msgstr ""

#: ../satellite_tools/satsync.py:2480
msgid "  4  - an SSL error occurred. Recheck your SSL settings."
msgstr ""

#: ../satellite_tools/satsync.py:2481
msgid "  5  - ISS error"
msgstr ""

#: ../satellite_tools/satsync.py:2482
msgid "  6  - unhandled exception occurred"
msgstr ""

#: ../satellite_tools/satsync.py:2483
msgid "  7  - unknown sync error"
msgstr ""

#: ../satellite_tools/satsync.py:2484
msgid "  8  - ERROR: must be root to execute"
msgstr ""

#: ../satellite_tools/satsync.py:2485
msgid "  9  - rpclib fault during synchronization init"
msgstr ""

#: ../satellite_tools/satsync.py:2486
msgid "  10 - synchronization init error"
msgstr ""

#: ../satellite_tools/satsync.py:2487
msgid "  11 - Error parsing XML stream"
msgstr ""

#: ../satellite_tools/satsync.py:2488
msgid "  12 - Channel do not exist"
msgstr ""

#: ../satellite_tools/satsync.py:2489
msgid "  13 - SQL error during importing package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:2490
msgid "  14 - SQL error during linking channel packages"
msgstr ""

#: ../satellite_tools/satsync.py:2491
msgid "  15 - SQL error during xml processing"
msgstr ""

#: ../satellite_tools/satsync.py:2492
msgid "  16 - server.mount_point not set in the configuration file"
msgstr ""

#: ../satellite_tools/satsync.py:2493
msgid ""
"  17 - SQL error during retrieving the channels already imported in the SUSE "
"Manager database"
msgstr ""

#: ../satellite_tools/satsync.py:2494
msgid "  18 - Wrong db connection string in rhn.conf"
msgstr ""

#: ../satellite_tools/satsync.py:2495
msgid "  19 - Bad arguments"
msgstr ""

#: ../satellite_tools/satsync.py:2496
msgid "  20 - Could not connect to db."
msgstr ""

#: ../satellite_tools/satsync.py:2497
msgid "  21 - Bad debug level"
msgstr ""

#: ../satellite_tools/satsync.py:2498
msgid "  22 - Not valid step"
msgstr ""

#: ../satellite_tools/satsync.py:2499
msgid "  24 - no such file"
msgstr ""

#: ../satellite_tools/satsync.py:2500
msgid "  25 - no such directory"
msgstr ""

#: ../satellite_tools/satsync.py:2501
msgid "  26 - mount_point does not exist"
msgstr ""

#: ../satellite_tools/satsync.py:2502
msgid "  27 - No such org"
msgstr ""

#: ../satellite_tools/satsync.py:2503
msgid "  28 - error: --master is only valid with --mount-point"
msgstr ""

#: ../satellite_tools/satsync.py:2510
#, python-format
msgid "ERROR: unknown dump version, try one of %s"
msgstr ""
  07070100000097000081B40000000000000000000000016290A0C10000B7AC000000000000000000000000000000000000001E00000000spacewalk-backend/po/zh_CN.po # SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
#
# Translators:
# Leah Liu <lliu@redhat.com>, 2010.
# Leah Liu <weliu@redhat.com>, 2005, 2006.
# Sarah Smith <sarahs@redhat.com>, 2002.
# Sarah Wang <sarahs@redhat.com>, 2003, 2004.
# Tony Fu <tfu@redhat.com>, 2004, 2006.
# Xi Huang <xhuang@redhat.com>, 2006.
# Xi HUANG <xhuang@redhat.com>, 2007.
msgid ""
msgstr ""
"Project-Id-Version: Spacewalk\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-10-16 13:34+0200\n"
"PO-Revision-Date: 2020-10-01 15:48+0000\n"
"Last-Translator: Pau Garcia Quiles <pau.garcia@suse.com>\n"
"Language-Team: Chinese (China) <https://l10n.opensuse.org/projects/uyuni/"
"backend/zh_CN/>\n"
"Language: zh_CN\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
"X-Generator: Weblate 3.6.1\n"

#: ../server/apacheAuth.py:66
#, python-format
msgid "incomplete proxy authentication token: %s"
msgstr ""

#: ../server/apacheAuth.py:84
#, python-format
msgid "Sent proxy signature %s does not match ours %s."
msgstr ""

#: ../server/apacheAuth.py:119
msgid "declined proxy authentication"
msgstr ""

#: ../server/apacheRequest.py:59
#, python-format
msgid "Invalid request received (%s)."
msgstr ""

#: ../server/apacheRequest.py:120
#, python-format
msgid ""
"IMPORTANT MESSAGE FOLLOWS:\n"
"%s"
msgstr ""

#: ../server/apacheRequest.py:149
#, python-format
msgid ""
"While running '%s': caught\n"
"%s : %s\n"
msgstr ""

#: ../server/apacheRequest.py:606
#, python-format
msgid "Invalid URI %s"
msgstr ""

#: ../server/configFilesHandler.py:129 ../server/handlers/app/packages.py:192
#: ../server/handlers/xmlrpc/registration.py:215
#: ../server/handlers/xmlrpc/registration.py:1168
#: ../server/handlers/xmlrpc/registration.py:1307
#, python-format
msgid ""
"\n"
"                   %s Account has been deactivated on this server.\n"
"                   Please contact your Org administrator for more help."
msgstr ""

#: ../server/handlers/applet/applet.py:78
#, python-brace-format
msgid "Your system was not found in the {PRODUCT_NAME} database"
msgstr ""

#: ../server/handlers/sat/auth.py:45
msgid "ISS is disabled on this server."
msgstr ""

#: ../server/handlers/sat/auth.py:50
#, python-format
msgid "Server \"%s\" is not enabled for ISS."
msgstr ""

#: ../server/handlers/xmlrpc/errata.py:64
#, python-format
msgid "Expected a package name, not: %s"
msgstr ""

#: ../server/handlers/xmlrpc/errata.py:115
#, python-format
msgid "Expected a package, not: %s"
msgstr ""

#: ../server/handlers/xmlrpc/proxy.py:65
#, python-format
msgid "SUSE Manager Proxy service not enabled for server profile: \"%s\""
msgstr ""

#: ../server/handlers/xmlrpc/proxy.py:85
msgid "Invalid session key"
msgstr ""

#: ../server/handlers/xmlrpc/proxy.py:93
msgid "This server ID no longer exists"
msgstr ""

#: ../server/handlers/xmlrpc/queue.py:433
#, python-format
msgid "Invalid action value type %s (%s)"
msgstr ""

#: ../server/handlers/xmlrpc/queue.py:464
#, python-format
msgid "Action %s does not belong to server %s"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:194
msgid "Required data missing"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:198
msgid "Required members missing"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:207
msgid "Attempt to register a system to an invalid username"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:839
msgid "Invalid system release version requested"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1063
msgid ""
"Unable to find a valid network interface, both ipaddr and ip6addr not found."
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1115
#, python-brace-format
msgid "{PRODUCT_NAME} Welcome Message"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1125
msgid "Privacy Statement"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1146
msgid "Expected a dictionary as a product argument"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1374
#, python-format
msgid "Invalid value '%s' for %s (%s)"
msgstr ""

#: ../server/handlers/xmlrpc/scap.py:104
msgid "Invalid system_id/action_id pair."
msgstr ""

#: ../server/handlers/xmlrpc/up2date.py:233
#, python-format
msgid "Invalid value %s (%s)"
msgstr ""

#: ../server/importlib/userAuth.py:98
msgid "You are not authorized to manage packages in the null org"
msgstr ""

#: ../server/importlib/userAuth.py:103
#, python-format
msgid "You are not allowed to manage packages in the %s org"
msgstr ""

#: ../server/importlib/userAuth.py:121
msgid "You are not allowed to perform administrative tasks"
msgstr ""

#: ../server/importlib/userAuth.py:144
#, python-format
msgid ""
"You are not allowed to manage channel %s, or that channel does not exist"
msgstr ""

#: ../server/importlib/userAuth.py:204
#, python-format
msgid ""
"\n"
"               %s Account has been deactivated on this server.\n"
"               Please contact your Org administrator for more help."
msgstr ""

#: ../server/rhnChannel.py:1992
#, python-format
msgid ""
"Your account does not have access to any channels matching "
"(release='%(release)s', arch='%(arch)s')%(www_activation)s"
msgstr ""

#: ../server/rhnChannel.py:2002
msgid ""
"\n"
"If you have a registration number, please register with it first at http://"
"www.redhat.com/apps/activate/ and then try again.\n"
"\n"
msgstr ""

#: ../server/rhnChannel.py:2012
#, python-format
msgid "Insufficient subscription permissions for release (%s, %s"
msgstr ""

#. Various messages that can be reused
#.
#. bretm 02/07/2007 -- when we have better old-client documentation, probably
#. will be safe to get rid of all this crap
#: ../server/rhnChannel.py:2276 ../server/rhnChannel.py:2287
#: ../server/rhnChannel.py:2302
msgid "System Registered but Inactive"
msgstr ""

#: ../server/rhnChannel.py:2277
#, python-format
msgid ""
"\n"
"Invalid Architecture and OS release combination (%s, %s).\n"
"Your system has been registered, but will not receive updates\n"
"because it is not subscribed to a channel. If you have not yet\n"
"activated your product for service, please visit our website at:\n"
"\n"
"     http://www.redhat.com/apps/activate/\n"
"\n"
"...to activate your product."
msgstr ""

#: ../server/rhnChannel.py:2288
#, python-format
msgid ""
"\n"
"Invalid Architecture and OS release combination (%s, %s).\n"
"Your system has been registered, but will not receive updates\n"
"because it could not be subscribed to a base channel.\n"
"Please contact your organization administrator for assistance.\n"
msgstr ""

#: ../server/rhnChannel.py:2295
#, python-format
msgid ""
"\n"
"  This system has been successfully registered, but is not yet entitled\n"
"  to service.  To entitle this system to service, login to the web site at:\n"
"\n"
"  %(entitlement_url)s\n"
msgstr ""

#: ../server/rhnChannel.py:2303
#, python-format
msgid ""
"\n"
"  This system has been successfully registered, but no service entitlements\n"
"  were available.  To entitle this system to service, login to the web site "
"at:\n"
"\n"
"  %(entitlement_url)s\n"
msgstr ""

#: ../server/rhnHandler.py:62
#, fuzzy
msgid "Please run rhn_register as root on this client"
msgstr "è¯·åœ¨è¿™ä¸ªå®¢æˆ·ç«¯ä¸­ä»¥ root èº«ä»½è¿è¡Œ rhn_register"

#: ../server/rhnHandler.py:75
#, python-format
msgid "Service not enabled for system profile: \"%s\""
msgstr ""

#: ../server/rhnPackage.py:49 ../server/rhnPackage.py:87
#: ../server/rhnPackage.py:107 ../server/rhnPackage.py:158
#, python-format
msgid "Invalid RPM package %s requested"
msgstr ""

#: ../server/rhnPackage.py:112
msgid "Package not found"
msgstr ""

#: ../server/rhnServer/server_class.py:97
#, python-format
msgid "Architecture `%s' is not supported"
msgstr ""

#: ../server/rhnServer/server_token.py:78
#, python-format
msgid "Token `%s' has more than one base channel assigned"
msgstr ""

#: ../server/rhnServer/server_token.py:80
msgid "Conflicting base channels"
msgstr ""

#: ../server/rhnServer/server_token.py:190
#, python-format
msgid "Failed to add server to group %s"
msgstr ""

#: ../server/rhnServer/server_token.py:503
#, python-format
msgid "Maximum usage count of %s reached"
msgstr ""

#: ../server/rhnServer/server_token.py:744
msgid ""
"Stacking of re-registration tokens with different base entitlements is not "
"supported"
msgstr ""

#: ../server/rhnServer/server_token.py:811
#, python-format
msgid "Could not find token '%s'"
msgstr ""

#. Cannot use activation keys from different orgs
#: ../server/rhnServer/server_token.py:843
msgid "Tokens from mismatching orgs"
msgstr ""

#. Two tokens with different kickstart sessions
#: ../server/rhnServer/server_token.py:853
msgid "Kickstart session mismatch"
msgstr ""

#: ../server/rhnServer/server_token.py:877
msgid "Stacking of re-registration tokens is not supported"
msgstr ""

#: ../server/rhnUser.py:289 ../server/rhnUser.py:292
msgid "Invalid username/password combination"
msgstr ""

#. nope, not reserved either
#: ../server/rhnUser.py:467
#, python-format
msgid "Username `%s' has not been reserved"
msgstr ""

#. New accounts have to specify an e-mail address
#: ../server/rhnUser.py:473
msgid "E-mail address not specified"
msgstr ""

#: ../server/rhnUser.py:509
#, python-format
msgid "username should be at least %d characters"
msgstr ""

#: ../server/rhnUser.py:512
#, python-format
msgid "username should be less than %d characters"
msgstr ""

#: ../server/rhnUser.py:523
#, python-format
msgid "username = `%s', invalid character `%s'"
msgstr ""

#: ../server/rhnUser.py:542
#, python-format
msgid "Please limit your e-mail address to %s chars"
msgstr ""

#: ../server/rhnUser.py:623
#, python-format
msgid "password must be at least %d characters"
msgstr ""

#: ../server/rhnUser.py:626
#, python-format
msgid "Password must be shorter than %d characters"
msgstr ""

#: ../server/rhnUser.py:644
#, python-format
msgid "password contains character `%s'"
msgstr ""

#: ../server/rhnUser.py:651
#, python-format
msgid "username should be at least %d characters long"
msgstr ""

#: ../server/rhnUser.py:662
#, python-format
msgid "Cannot register usernames ending with %s"
msgstr ""

#. 0-999: Red Hat client/client-like interaction errors:
#: ../common/rhnException.py:53
msgid "This does not appear to be a valid username."
msgstr ""

#: ../common/rhnException.py:54
msgid "Invalid username and password combination."
msgstr ""

#: ../common/rhnException.py:55
msgid "This login is already taken, or the password is incorrect."
msgstr ""

#: ../common/rhnException.py:56
msgid "Permission denied."
msgstr ""

#: ../common/rhnException.py:57
msgid "Object not found."
msgstr ""

#: ../common/rhnException.py:58
msgid "Invalid System Digital ID."
msgstr ""

#: ../common/rhnException.py:59
msgid "Invalid System Credentials."
msgstr ""

#: ../common/rhnException.py:60
msgid "Could not retrieve user data from database."
msgstr ""

#: ../common/rhnException.py:61
msgid "Valid username required."
msgstr ""

#: ../common/rhnException.py:62
msgid "Valid password required."
msgstr ""

#: ../common/rhnException.py:63
msgid "Minimum username length violation."
msgstr ""

#: ../common/rhnException.py:64
msgid "Minimum password length violation."
msgstr ""

#: ../common/rhnException.py:65
msgid "The username contains invalid characters."
msgstr ""

#: ../common/rhnException.py:66
msgid "File not found."
msgstr ""

#: ../common/rhnException.py:67
msgid "Architecture and OS version combination is not supported."
msgstr ""

#: ../common/rhnException.py:68
msgid "Could not retrieve system data from database."
msgstr ""

#: ../common/rhnException.py:69
msgid "Invalid arguments passed to function."
msgstr ""

#: ../common/rhnException.py:70
msgid "Unable to retrieve requested entry."
msgstr ""

#: ../common/rhnException.py:71
msgid "Could not update database entry."
msgstr ""

#: ../common/rhnException.py:72
msgid "Unsupported server architecture."
msgstr ""

#: ../common/rhnException.py:73
#, python-format
msgid ""
"\n"
"     The anonymous server functionality is no longer available.\n"
"\n"
"     Please re-register this system by running mgr_register as root.\n"
"     Please visit https://%(hostname)s/rhn/systems/SystemEntitlements.do\n"
"     or login at https://%(hostname)s, and from the \"Overview\" tab,\n"
"     select \"Subscription Management\" to enable the service for this "
"system.\n"
"     "
msgstr ""

#: ../common/rhnException.py:81
msgid "Record not available in the database."
msgstr ""

#: ../common/rhnException.py:82
msgid "Invalid value for entry."
msgstr ""

#: ../common/rhnException.py:83
#, python-format
msgid ""
"\n"
"     This system does not have a valid entitlement for SUSE Manager.\n"
"     Please visit https://%(hostname)s/rhn/systems/SystemEntitlements.do\n"
"     or login at https://%(hostname)s, and from the \"Overview\" tab,\n"
"     select \"Subscription Management\" to enable the service for this "
"system.\n"
"     "
msgstr ""

#: ../common/rhnException.py:89
msgid "Channel error"
msgstr ""

#: ../common/rhnException.py:90
msgid "Client session token is invalid."
msgstr ""

#: ../common/rhnException.py:91
msgid "Client session token has expired."
msgstr ""

#: ../common/rhnException.py:92
msgid "You are not authorized to retrieve the requested object."
msgstr ""

#: ../common/rhnException.py:93
msgid "Invalid action"
msgstr ""

#: ../common/rhnException.py:94
msgid "You are not allowed to perform administrative tasks on this system."
msgstr ""

#: ../common/rhnException.py:96
msgid "The system is already subscribed to the specified channel."
msgstr ""

#: ../common/rhnException.py:97
msgid "The system is not currently subscribed to the specified channel."
msgstr ""

#: ../common/rhnException.py:98
msgid "The specified channel does not exist."
msgstr ""

#: ../common/rhnException.py:99
msgid "Invalid channel version."
msgstr ""

#: ../common/rhnException.py:100
msgid ""
"\n"
"     User group membership limits exceeded.\n"
"\n"
"     The current settings for your account do not allow you to add another\n"
"     user account. Please check with the organization administrator for "
"your\n"
"     account if the maximum number of users allowed to subscribe to server "
"needs\n"
"     to be changed.\n"
"     "
msgstr ""

#: ../common/rhnException.py:108
msgid ""
"\n"
"     System group membership limits exceeded.\n"
"\n"
"     The current settings for your account do not allow you to add another\n"
"     system profile. Please check with the organization administrator for "
"your\n"
"     account for modifying the maximum number of system profiles that can "
"be\n"
"     subscribed to your account.\n"
"     "
msgstr ""

#: ../common/rhnException.py:116
msgid ""
"\n"
"     Invalid architecture.\n"
"\n"
"     The architecture of the package is not supported by\n"
"     "
msgstr ""

#: ../common/rhnException.py:121
msgid "Invalid RPM header"
msgstr ""

#: ../common/rhnException.py:122
msgid ""
"\n"
"    This system is already registered as a Salt Minion. If you want to "
"register it as a traditional client\n"
"    please delete it first via the web UI or API and then register it using "
"the traditional tools.\n"
"    "
msgstr ""

#. For the uploading tools
#: ../common/rhnException.py:127
msgid "Invalid information uploaded to the server"
msgstr ""

#: ../common/rhnException.py:128
msgid "Error uploading network interfaces configuration."
msgstr ""

#: ../common/rhnException.py:129
msgid ""
"\n"
"     Package Upload Failed due to uniqueness constraint violation.\n"
"     Make sure the package does not have any duplicate dependencies or\n"
"     does not already exists on the server\n"
"     "
msgstr ""

#: ../common/rhnException.py:134
msgid ""
"\n"
"     The --force rhnpush option is disabled on this server.\n"
"     Please contact your SUSE Manager administrator for more help.\n"
"     "
msgstr ""

#. 60-70: token errors
#: ../common/rhnException.py:140
msgid ""
"\n"
"     The activation token specified could not be found on the server.\n"
"     Please retry with a valid key.\n"
"     "
msgstr ""

#: ../common/rhnException.py:144
msgid "Too many systems registered using this registration token"
msgstr ""

#: ../common/rhnException.py:145
msgid "Token contains invalid, obsoleted or insufficient settings"
msgstr ""

#: ../common/rhnException.py:146
msgid "Conflicting activation tokens"
msgstr ""

#. 70-80: channel subscription errors
#: ../common/rhnException.py:149
msgid ""
"\n"
"     No matching base channel found for your system.\n"
"     "
msgstr ""

#: ../common/rhnException.py:152
msgid ""
"\n"
"     You do not have subscription permission to the designated channel.\n"
"     Please refer to your organization's channel or organization\n"
"     administrators for further details.\n"
"     "
msgstr ""

#: ../common/rhnException.py:157
msgid "You can not unsubscribe from base channel."
msgstr ""

#: ../common/rhnException.py:158
msgid "SUSE Manager or Proxy channel can not be subscribed."
msgstr ""

#. 80-90: server group errors
#: ../common/rhnException.py:161
msgid "There was an error while trying to join the system to its groups"
msgstr ""

#. 90-100: entitlement errors
#: ../common/rhnException.py:164
msgid "Unable to entitle system"
msgstr ""

#. 100-109: e-mail and uuid related faults
#: ../common/rhnException.py:167
msgid "Maximum e-mail length violation."
msgstr ""

#: ../common/rhnException.py:168
msgid "This system has been previously registered."
msgstr ""

#: ../common/rhnException.py:169
msgid "Invalid username"
msgstr ""

#. 140-159 applet errors
#: ../common/rhnException.py:172
msgid "Unable to look up server"
msgstr ""

#. 160-179: OSAD errors
#: ../common/rhnException.py:175
msgid "Required argument is missing"
msgstr ""

#. 600-699: RHEL5+ EN errors
#: ../common/rhnException.py:178
msgid "No entitlement information tied to hardware"
msgstr ""

#: ../common/rhnException.py:179
msgid "Installation number is not entitling"
msgstr ""

#. 700-799: Additional user input verification errors.
#: ../common/rhnException.py:182
msgid "Maximum username length violation"
msgstr ""

#: ../common/rhnException.py:183
msgid "Maximum password length violation"
msgstr ""

#: ../common/rhnException.py:184
msgid "This user has read only API access. Action denied."
msgstr ""

#: ../common/rhnException.py:186
msgid "System Name cannot be less than 1 character"
msgstr ""

#. 1000-1999: Proxy specific errors:
#. issued by a Proxy to the client
#: ../common/rhnException.py:190
msgid "SUSE Manager Proxy error."
msgstr ""

#: ../common/rhnException.py:191
msgid "SUSE Manager Proxy unable to login."
msgstr ""

#. issued by a SUSE Manager Server/Satellite to the proxy
#: ../common/rhnException.py:193
msgid ""
"\n"
"     SUSE Manager Proxy system ID does not match a Spacewalk Proxy Server\n"
"     in the database.\n"
"     "
msgstr ""

#: ../common/rhnException.py:197
msgid "SUSE Manager Proxy session token is invalid."
msgstr ""

#: ../common/rhnException.py:198
msgid "SUSE Manager Proxy session token has expired."
msgstr ""

#. 2000-2999: Red Hat Satellite specific errors:
#: ../common/rhnException.py:202
msgid ""
"\n"
"      user creation is not allowed via mgr_register;\n"
"     please contact your sysadmin to have your account created.\n"
"     "
msgstr ""

#: ../common/rhnException.py:206
msgid ""
"\n"
"     This SUSE Manager server is not allowed to use Inter Server Sync on "
"this server\n"
"     "
msgstr ""

#: ../common/rhnException.py:209
msgid ""
"\n"
"     Inter Server Sync is disabled on this SUSE Manager Server.\n"
"     "
msgstr ""

#. 3000-3999: XML dumper errors:
#: ../common/rhnException.py:214
msgid "Invalid datatype passed"
msgstr ""

#: ../common/rhnException.py:215
msgid "Unable to retrieve channel"
msgstr ""

#: ../common/rhnException.py:216
msgid "Unable to retrieve package"
msgstr ""

#: ../common/rhnException.py:217
msgid "Unable to retrieve erratum"
msgstr ""

#: ../common/rhnException.py:218
msgid "File is missing"
msgstr ""

#: ../common/rhnException.py:219
msgid "Function retrieval error"
msgstr ""

#: ../common/rhnException.py:220
msgid "Function execution error"
msgstr ""

#: ../common/rhnException.py:221
msgid "Missing version string"
msgstr ""

#: ../common/rhnException.py:222
msgid "Invalid version string"
msgstr ""

#: ../common/rhnException.py:223
msgid "Mismatching versions"
msgstr ""

#: ../common/rhnException.py:224
msgid "Invalid channel version"
msgstr ""

#: ../common/rhnException.py:225
msgid "No comps file for channel"
msgstr ""

#: ../common/rhnException.py:226
msgid "Unable to retrieve comps file"
msgstr ""

#. 4000 - 4999: config management errors
#: ../common/rhnException.py:229
msgid "Configuration action missing"
msgstr ""

#: ../common/rhnException.py:230
msgid "File too large"
msgstr ""

#: ../common/rhnException.py:231
msgid "File contains binary data"
msgstr ""

#: ../common/rhnException.py:232
msgid "Configuration channel is not empty"
msgstr ""

#: ../common/rhnException.py:233
msgid "Permission error"
msgstr ""

#: ../common/rhnException.py:234
msgid "Content missing for configuration file"
msgstr ""

#: ../common/rhnException.py:235
msgid "Template delimiters not specified"
msgstr ""

#: ../common/rhnException.py:236
msgid "Configuration channel does not exist"
msgstr ""

#: ../common/rhnException.py:237
msgid "Configuration channel already exists"
msgstr ""

#: ../common/rhnException.py:238
msgid "File missing from configuration channel"
msgstr ""

#: ../common/rhnException.py:239
msgid "Different revision of this file is uploaded"
msgstr ""

#: ../common/rhnException.py:240
msgid "File already uploaded to configuration channel"
msgstr ""

#: ../common/rhnException.py:241
msgid "File size exceeds remaining quota space"
msgstr ""

#: ../common/rhnException.py:242
msgid "Full path of file must be specified"
msgstr ""

#: ../common/rhnException.py:243
msgid "Invalid revision number"
msgstr ""

#: ../common/rhnException.py:244
msgid "Cannot compare files of different file type"
msgstr ""

#. 5000 - 5999: client content uploading errors
#. 5000 - 5099: crash reporting errors
#: ../common/rhnException.py:248
msgid "Crash information is invalid or incomplete"
msgstr ""

#: ../common/rhnException.py:249
msgid "Crash file information is invalid or incomplete"
msgstr ""

#: ../common/rhnException.py:250
msgid "Error composing crash directory path"
msgstr ""

#: ../common/rhnException.py:251
msgid "Error composing crash file path"
msgstr ""

#: ../common/rhnException.py:252 ../common/rhnException.py:259
msgid "Invalid content encoding"
msgstr ""

#: ../common/rhnException.py:253
msgid "Invalid crash name"
msgstr ""

#: ../common/rhnException.py:254
msgid "Crash reporting is disabled for this organization"
msgstr ""

#. 5100 - 5199: scap results reporting error
#: ../common/rhnException.py:256
msgid "SCAP results file transfer is invalid or incomplete"
msgstr ""

#: ../common/rhnException.py:257
msgid "Error composing directory path for detailed SCAP results"
msgstr ""

#: ../common/rhnException.py:258
msgid "Error composing file path for detailed SCAP results"
msgstr ""

#: ../common/rhnException.py:306
msgid ""
"\n"
"     An error has occurred while processing your request. If this problem\n"
"     persists please enter a bug report at scc.suse.com.\n"
"     If you choose to submit the bug report, please be sure to include\n"
"     details of what you were trying to do when this error occurred and\n"
"     details on how to reproduce this problem.\n"
msgstr ""

#: ../common/rhnException.py:358
#, python-format
msgid ""
"Error Message:\n"
"    %s\n"
msgstr ""

#: ../common/rhnException.py:360
#, python-format
msgid "Error Class Code: %s\n"
msgstr ""

#: ../common/rhnException.py:363
#, python-format
msgid "Error Class Info: %s\n"
msgstr ""

#: ../common/rhnException.py:365
#, python-format
msgid "Explanation: %s"
msgstr ""

#: ../common/rhnTB.py:205
#, python-format
msgid "ERROR: %s %s: %s"
msgstr ""

#: ../common/rhnTB.py:207
#, python-format
msgid "TRACEBACK: %s"
msgstr ""

#: ../satellite_tools/disk_dumper/iss.py:1294
#: ../satellite_tools/disk_dumper/iss.py:1298
#, python-format
msgid "format of %s should be at least YYYYMMDD.\n"
msgstr ""

#: ../satellite_tools/messages.py:26
#, python-format
msgid ""
"\n"
"ERROR: executing step %s. Error is:\n"
"%s\n"
msgstr ""

#: ../satellite_tools/messages.py:31
#, python-format
msgid ""
"\n"
"ERROR: there was a problem accessing the channel data from your temporary\n"
"       repository. Did you migrate all of the data from the channel ISOs\n"
"       do this directory? If so, please recheck the channels ISOs, ensure\n"
"       that you have them all, and then iteratively remount and repopulate\n"
"       the temporary repository (%s).\n"
msgstr ""

#: ../satellite_tools/messages.py:39
#, python-format
msgid ""
"\n"
"ERROR: there was a problem synchronizing the information.\n"
"       Error message: %s\n"
msgstr ""

#: ../satellite_tools/messages.py:44
#, python-format
msgid ""
"\n"
"ERROR: There was a problem communicating with the ISS Master.\n"
"       Depending on the specific error details, please review your "
"configuration,\n"
"       basic network connectivity, and/or name resolution, and try again.\n"
"       Error message: %s\n"
msgstr ""

#: ../satellite_tools/messages.py:51
#, python-format
msgid ""
"\n"
"ERROR: There was a problem communicating with the ISS Master.\n"
"       If the master satellite is older than v5.3, it does not have ISS "
"capability.\n"
"       Otherwise, depending on the specific error details, please review "
"your\n"
"       configuration, basic network connectivity, and/or name resolution, "
"and try again.\n"
"       Error message: %s\n"
msgstr ""

#: ../satellite_tools/messages.py:59
#, python-format
msgid ""
"\n"
"ERROR: a child-channel cannot be synced without its parent being synced as\n"
"       well. A parent needs to be either (a) previously synced or (b) "
"synced\n"
"       in tandem with the desired child-channel. Missing parents for this\n"
"       transaction:\n"
"       %s\n"
msgstr ""

#: ../satellite_tools/messages.py:67
#, python-format
msgid ""
"\n"
"ERROR: you are not entitled to sync a channel in this set of channels.\n"
"Please contact your SUSE Manager contact\n"
"%s"
msgstr ""

#: ../satellite_tools/messages.py:72
#, python-format
msgid "  ERROR: not enough free space (%s KB) on device."
msgstr ""

#: ../satellite_tools/messages.py:74
#, python-format
msgid "    %3d/%s Fetch successful: %s (%s bytes)"
msgstr ""

#: ../satellite_tools/messages.py:75
#, python-format
msgid "    Extinct package:  %s"
msgstr ""

#: ../satellite_tools/messages.py:76
#, python-format
msgid "   Total size: %s"
msgstr ""

#: ../satellite_tools/messages.py:77
#, python-format
msgid "      Downloaded %s of %s. Estimated remaining time: %s"
msgstr ""

#: ../satellite_tools/messages.py:78
#, python-format
msgid "    Fetch unsuccessful: %s"
msgstr ""

#: ../satellite_tools/messages.py:79
#, python-format
msgid "   RPM fetch summary: %s"
msgstr ""

#: ../satellite_tools/messages.py:80
#, python-format
msgid "       success: %d"
msgstr ""

#: ../satellite_tools/messages.py:81
#, python-format
msgid "       failed:  %d"
msgstr ""

#: ../satellite_tools/messages.py:82
#, python-format
msgid "       extinct: %d"
msgstr ""

#: ../satellite_tools/messages.py:84
#, python-format
msgid "   Retrieving / parsing *relevant* package metadata: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:85
#, python-format
msgid "   Retrieving / parsing errata data: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:86
#, python-format
msgid "   Retrieving / parsing kickstart data: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:87
#, python-format
msgid "   Retrieving / parsing kickstart tree files: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:88
#, python-format
msgid "   Importing *relevant* package metadata: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:89
msgid "   * WARNING: this may be a slow process."
msgstr ""

#: ../satellite_tools/messages.py:90
msgid "Linking packages to channels"
msgstr ""

#: ../satellite_tools/messages.py:91
#, python-format
msgid "   Importing *relevant* errata: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:92
msgid "   No new kickstartable tree to import"
msgstr ""

#: ../satellite_tools/messages.py:93
#, python-format
msgid "Importing kickstartable trees (%d)"
msgstr ""

#: ../satellite_tools/messages.py:94
#, python-format
msgid "Imported kickstartable trees (%d)"
msgstr ""

#: ../satellite_tools/reposync.py:111 ../satellite_tools/satsync.py:439
msgid "+++ sending log as an email +++"
msgstr ""

#: ../satellite_tools/reposync.py:114
#, python-format
msgid "%s sync. report from %s"
msgstr ""

#: ../satellite_tools/reposync.py:124 ../satellite_tools/satsync.py:449
msgid "+++ email requested, but there is nothing to send +++"
msgstr ""

#: ../satellite_tools/rhn_satellite_activate.py:198
#, python-format
msgid ""
"\"%s\" (specified in commandline)\n"
"could not be opened and read:\n"
"%s"
msgstr ""

#: ../satellite_tools/rhn_satellite_activate.py:205
#, python-format
msgid ""
"\"%s\" could not be opened\n"
"and/or written to:\n"
"%s"
msgstr ""

#: ../satellite_tools/satsync.py:258
#, python-format
msgid "No handler for step %s"
msgstr ""

#. Try one more time - this time it should be faster since
#. everything should be cached
#: ../satellite_tools/satsync.py:270
msgid "Environment changed, trying again..."
msgstr ""

#: ../satellite_tools/satsync.py:277
msgid "ERROR: Encountered IntegrityError: \n"
msgstr ""

#: ../satellite_tools/satsync.py:285
msgid "Repeated failures"
msgstr ""

#: ../satellite_tools/satsync.py:290
#, python-format
msgid ""
"    Import complete:\n"
"        Begin time: %s\n"
"        End time:   %s\n"
"        Elapsed:    %s\n"
"          "
msgstr ""

#: ../satellite_tools/satsync.py:311
msgid "hours"
msgstr ""

#: ../satellite_tools/satsync.py:311
msgid "minutes"
msgstr ""

#: ../satellite_tools/satsync.py:311
msgid "seconds"
msgstr ""

#: ../satellite_tools/satsync.py:357
msgid ""
"ERROR: The dump is missing package data, use --no-rpms to skip this step or "
"fix the content to include package data."
msgstr ""

#. the orgs() method doesn't exist; that's fine we just
#. won't sync the orgs
#: ../satellite_tools/satsync.py:404
msgid "The SUSE Manager master does not support syncing orgs data."
msgstr ""

#: ../satellite_tools/satsync.py:404
msgid "Skipping..."
msgstr ""

#: ../satellite_tools/satsync.py:442
#, python-format
msgid "SUSE Manager Inter Server sync. report from %s"
msgstr ""

#: ../satellite_tools/satsync.py:521
msgid " - file-system synchronization"
msgstr ""

#: ../satellite_tools/satsync.py:533 ../satellite_tools/satsync.py:541
msgid " - live synchronization"
msgstr ""

#: ../satellite_tools/satsync.py:534
#, python-brace-format
msgid ""
"ERROR: Live content synchronizing with RHN Classic Hosted is no longer "
"supported.\n"
"Please use the cdn-sync command instead unless you are attempting to sync "
"from another {PRODUCT_NAME} via Inter-Server-Sync (ISS), or from local "
"content on disk via Channel Dump ISOs."
msgstr ""

#: ../satellite_tools/satsync.py:542
#, python-format
msgid "   url: %s"
msgstr ""

#: ../satellite_tools/satsync.py:543
#, python-format
msgid "   debug/output level: %s"
msgstr ""

#: ../satellite_tools/satsync.py:553
msgid "ERROR: this server must be registered with SUSE Manager."
msgstr ""

#: ../satellite_tools/satsync.py:575
#, python-format
msgid "Retrieving / parsing %s data"
msgstr ""

#: ../satellite_tools/satsync.py:585 ../satellite_tools/satsync.py:600
msgid "*** SYSTEM INTERRUPT CALLED ***"
msgstr ""

#: ../satellite_tools/satsync.py:593
msgid "ERROR: fatal parser exception occurred "
msgstr ""

#: ../satellite_tools/satsync.py:594
#, python-format
msgid "(line: %s, col: %s msg: %s)"
msgstr ""

#: ../satellite_tools/satsync.py:598
#, python-format
msgid "ERROR: parser exception occurred: %s"
msgstr ""

#: ../satellite_tools/satsync.py:603
msgid "ERROR: exception (during parse) occurred: "
msgstr ""

#: ../satellite_tools/satsync.py:604
#, python-format
msgid ""
"   Encountered some errors with %s data (see logs (%s) for more information)"
msgstr ""

#: ../satellite_tools/satsync.py:606
#, python-format
msgid "   Encountered some errors with %s data:"
msgstr ""

#: ../satellite_tools/satsync.py:607
#, python-format
msgid "   ------- %s PARSE/IMPORT ERROR -------"
msgstr ""

#: ../satellite_tools/satsync.py:609
msgid "   ---------------------------------------"
msgstr ""

#: ../satellite_tools/satsync.py:612
#, python-format
msgid "%s data complete"
msgstr ""

#: ../satellite_tools/satsync.py:665
msgid "Retrieving / parsing channel data"
msgstr ""

#: ../satellite_tools/satsync.py:718
msgid "Channel data complete"
msgstr ""

#: ../satellite_tools/satsync.py:736
#, python-format
msgid "%10s import from %s"
msgstr ""

#: ../satellite_tools/satsync.py:739
#, python-format
msgid "%10s import from %s - %s"
msgstr ""

#: ../satellite_tools/satsync.py:743
#, python-format
msgid "%10s"
msgstr ""

#: ../satellite_tools/satsync.py:750
msgid "p"
msgstr ""

#: ../satellite_tools/satsync.py:752
msgid "."
msgstr ""

#: ../satellite_tools/satsync.py:758
msgid "   p = previously imported/synced channel"
msgstr ""

#: ../satellite_tools/satsync.py:759
msgid "   . = channel not yet imported/synced"
msgstr ""

#: ../satellite_tools/satsync.py:765
msgid "   e = channel no longer supported (end-of-service)"
msgstr ""

#: ../satellite_tools/satsync.py:767
msgid "   ? = channel label invalid --- typo?"
msgstr ""

#: ../satellite_tools/satsync.py:771
#, python-format
msgid "   %s:"
msgstr ""

#: ../satellite_tools/satsync.py:772
#, python-format
msgid "      %s %-40s %4s %s"
msgstr ""

#: ../satellite_tools/satsync.py:773
msgid "base-channels"
msgstr ""

#: ../satellite_tools/satsync.py:786 ../satellite_tools/satsync.py:1603
msgid "NONE RELEVANT"
msgstr ""

#: ../satellite_tools/satsync.py:808
msgid "end-of-service"
msgstr ""

#: ../satellite_tools/satsync.py:809
msgid "e"
msgstr ""

#: ../satellite_tools/satsync.py:815
msgid "   typos:"
msgstr ""

#: ../satellite_tools/satsync.py:816
msgid "?"
msgstr ""

#: ../satellite_tools/satsync.py:831
#, python-format
msgid "XXX: imported channels: %s"
msgstr ""

#: ../satellite_tools/satsync.py:832
#, python-format
msgid "XXX:   cached channels: %s"
msgstr ""

#: ../satellite_tools/satsync.py:837
msgid "XXX: list channels called"
msgstr ""

#: ../satellite_tools/satsync.py:855
msgid "ERROR: these channels either do not exist or are not available:"
msgstr ""

#: ../satellite_tools/satsync.py:859
#, python-format
msgid "       (to see a list of channel labels: %s --list-channels)"
msgstr ""

#: ../satellite_tools/satsync.py:904
#, python-format
msgid "   Retrieving / parsing short package metadata: %s (%s)"
msgstr ""

#: ../satellite_tools/satsync.py:965
#, python-format
msgid "Diffing package metadata (what's missing locally?): %s"
msgstr ""

#: ../satellite_tools/satsync.py:971 ../satellite_tools/satsync.py:1254
msgid "Diffing:    "
msgstr ""

#: ../satellite_tools/satsync.py:988
msgid "ERROR: incremental dump skipped"
msgstr ""

#: ../satellite_tools/satsync.py:1079
msgid "Downloading rpm packages"
msgstr ""

#: ../satellite_tools/satsync.py:1084
#, python-format
msgid "   Fetching any missing RPMs: %s (%s)"
msgstr ""

#: ../satellite_tools/satsync.py:1085 ../satellite_tools/satsync.py:1153
msgid "NONE MISSING"
msgstr ""

#: ../satellite_tools/satsync.py:1094
msgid "Processing rpm packages complete"
msgstr ""

#: ../satellite_tools/satsync.py:1121
msgid "Downloading package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1146
msgid "Downloading srpm packages"
msgstr ""

#: ../satellite_tools/satsync.py:1152
#, python-format
msgid "   Fetching any missing SRPMs: %s (%s)"
msgstr ""

#: ../satellite_tools/satsync.py:1249
#, python-format
msgid "Diffing source package metadata (what's missing locally?): %s"
msgstr ""

#: ../satellite_tools/satsync.py:1260
msgid "Downloading source package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1338 ../satellite_tools/satsync.py:2027
#, python-format
msgid "Unable to save file %s: %s"
msgstr ""

#. for
#. Retried a number of times and it still failed; log the
#. file as being failed and move on
#: ../satellite_tools/satsync.py:1345
#, python-format
msgid "Failed to fetch file %s"
msgstr ""

#: ../satellite_tools/satsync.py:1350
msgid "Downloading kickstartable trees metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1365
msgid "Downloading kickstartable trees files"
msgstr ""

#: ../satellite_tools/satsync.py:1504
#, python-format
msgid "Grabbing all patches for channel %s"
msgstr ""

#: ../satellite_tools/satsync.py:1554
msgid "Downloading patch data"
msgstr ""

#: ../satellite_tools/satsync.py:1556
msgid "Forcing download of all patch data for requested channels."
msgstr ""

#: ../satellite_tools/satsync.py:1571
msgid "Downloading patch data complete"
msgstr ""

#: ../satellite_tools/satsync.py:1576 ../satellite_tools/satsync.py:1597
msgid "Downloading:"
msgstr ""

#: ../satellite_tools/satsync.py:1579
msgid " - complete"
msgstr ""

#: ../satellite_tools/satsync.py:1624
msgid "Importing source package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1627
msgid "Importing package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1635
msgid "Importing:  "
msgstr ""

#. not in the cache
#: ../satellite_tools/satsync.py:1703
msgid ""
"Package Not Found in Cache, Clear the Cache "
"to                                  Regenerate it."
msgstr ""

#: ../satellite_tools/satsync.py:1709
msgid "Importing channel patches"
msgstr ""

#: ../satellite_tools/satsync.py:1714
#, python-format
msgid "Importing %s patches for channel %s."
msgstr ""

#. Incomplete configuration
#: ../satellite_tools/satsync.py:2113
msgid "ERROR: server.mount_point not set in the configuration file"
msgstr ""

#: ../satellite_tools/satsync.py:2117
#, python-format
msgid "ERROR: server.mount_point %s do not exist"
msgstr ""

#: ../satellite_tools/satsync.py:2122
#, python-format
msgid "ERROR: path under server.mount_point (%s)  do not exist"
msgstr ""

#: ../satellite_tools/satsync.py:2199
#, python-format
msgid "Commandline: %s"
msgstr ""

#: ../satellite_tools/satsync.py:2202
#, python-format
msgid ""
"DEBUG ONLY: max. batch-size for XML/database-import processing (1..%s).\"man "
"satellite-sync\" for more information."
msgstr ""

#: ../satellite_tools/satsync.py:2205
msgid "alternative SSL CA Cert (fullpath to cert file)"
msgstr ""

#: ../satellite_tools/satsync.py:2207
msgid "process data for this channel only"
msgstr ""

#: ../satellite_tools/satsync.py:2209
msgid ""
"disk dump will be considered to be a full export; see \"man satellite-sync\" "
"for more information."
msgstr ""

#: ../satellite_tools/satsync.py:2212
msgid "existing custom channels will also be synced (unless -c is used)"
msgstr ""

#: ../satellite_tools/satsync.py:2214
#, python-format
msgid ""
"override debug level set in /etc/rhn/rhn.conf (which is currently set at %s)."
msgstr ""

#: ../satellite_tools/satsync.py:2216
#, python-format
msgid "requested version of XML dump (default: %s)"
msgstr ""

#: ../satellite_tools/satsync.py:2218
msgid "e-mail a report of what was synced/imported"
msgstr ""

#: ../satellite_tools/satsync.py:2220
msgid "forcibly process all (not a diff of) patch metadata"
msgstr ""

#: ../satellite_tools/satsync.py:2222
msgid "Do not use an http proxy under any circumstances."
msgstr ""

#: ../satellite_tools/satsync.py:2224
msgid "alternative http proxy (hostname:port)"
msgstr ""

#: ../satellite_tools/satsync.py:2226
msgid "alternative http proxy username"
msgstr ""

#: ../satellite_tools/satsync.py:2228
msgid "alternative http proxy password"
msgstr ""

#: ../satellite_tools/satsync.py:2230
msgid "parent SUSE Manager to import content from"
msgstr ""

#: ../satellite_tools/satsync.py:2232
msgid "list all available channels and exit"
msgstr ""

#: ../satellite_tools/satsync.py:2234
msgid "help on all error codes mgr-inter-sync returns"
msgstr ""

#: ../satellite_tools/satsync.py:2236
msgid "source mount point for import - disk update only"
msgstr ""

#: ../satellite_tools/satsync.py:2238
msgid "do not process patch data"
msgstr ""

#: ../satellite_tools/satsync.py:2240
msgid "do not process kickstart data (provisioning only)"
msgstr ""

#: ../satellite_tools/satsync.py:2242
msgid "do not process full package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:2244
msgid "do not download, or process any RPMs"
msgstr ""

#: ../satellite_tools/satsync.py:2246
msgid "turn off SSL (not recommended)"
msgstr ""

#: ../satellite_tools/satsync.py:2248
msgid "org to which the sync imports data. defaults to the admin account"
msgstr ""

#: ../satellite_tools/satsync.py:2250
msgid "print the configuration and exit"
msgstr ""

#: ../satellite_tools/satsync.py:2252
msgid "alternative server with which to connect (hostname)"
msgstr ""

#: ../satellite_tools/satsync.py:2254
msgid "synchronize to this step (man satellite-sync for more info)"
msgstr ""

#: ../satellite_tools/satsync.py:2256
msgid "write complete data to tempfile before streaming to remainder of app"
msgstr ""

#: ../satellite_tools/satsync.py:2258
msgid "DEBUG ONLY: alternative path to digital system id"
msgstr ""

#: ../satellite_tools/satsync.py:2260
msgid "alternative email address(es) for sync output (--email option)"
msgstr ""

#: ../satellite_tools/satsync.py:2262
msgid "do not remove rpms when importing from local dump"
msgstr ""

#: ../satellite_tools/satsync.py:2264
msgid ""
"the fully qualified domain name of the master Satellite. Valid with --mount-"
"point only. Required if you want to import org data and channel permissions."
msgstr ""

#: ../satellite_tools/satsync.py:2274
#, python-format
msgid "ERROR: these arguments make no sense in this context (try --help): %s"
msgstr ""

#. An SQL error is fatal... crash and burn
#: ../satellite_tools/satsync.py:2286
#, python-format
msgid "ERROR: Can't connect to the database: %s"
msgstr ""

#: ../satellite_tools/satsync.py:2287
msgid "ERROR: Check if your database is running."
msgstr ""

#: ../satellite_tools/satsync.py:2322
#, python-format
msgid "ERROR: --debug-level takes an in integer value within the range %s."
msgstr ""

#: ../satellite_tools/satsync.py:2324
msgid "  0  - little logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2325
msgid "  1  - minimal logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2326
msgid "  2  - normal level of logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2327
msgid "  3  - lots of logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2328
msgid "  4+ - excessive logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2341
msgid "ERROR: The --master option is only valid with the --mount-point option"
msgstr ""

#: ../satellite_tools/satsync.py:2351
#, python-format
msgid "ERROR: Unable to lookup Org Id %s"
msgstr ""

#: ../satellite_tools/satsync.py:2360
msgid ""
"WARNING: --list-channels option overrides any --step option. --step ignored."
msgstr ""

#: ../satellite_tools/satsync.py:2375
#, python-format
msgid ""
"ERROR: '%s' is not a valid step. See 'man mgr-inter-sync' for more detail."
msgstr ""

#: ../satellite_tools/satsync.py:2407
msgid ""
"ERROR: No channels currently imported; try mgr-inter-sync --list-channels; "
"then mgr-inter-sync -c chn0 -c chn1..."
msgstr ""

#. int(None) --> TypeError
#. int('a')  --> ValueError
#: ../satellite_tools/satsync.py:2457 ../satellite_tools/satsync.py:2461
msgid "ERROR: --batch-size must have a value within the range: 1..50"
msgstr ""

#: ../satellite_tools/satsync.py:2469
#, python-format
msgid "ERROR: no such directory %s"
msgstr ""

#: ../satellite_tools/satsync.py:2474
msgid "Error Codes: Returned codes means:"
msgstr ""

#: ../satellite_tools/satsync.py:2475
msgid " -1  - Could not lock file or KeyboardInterrupt or SystemExit"
msgstr ""

#: ../satellite_tools/satsync.py:2476
msgid "  0  - User interrupted or intentional exit"
msgstr ""

#: ../satellite_tools/satsync.py:2477
msgid "  1  - attempting to run more than one instance of mgr-inter-sync."
msgstr ""

#: ../satellite_tools/satsync.py:2478
msgid "  2  - Unable to find synchronization tools."
msgstr ""

#: ../satellite_tools/satsync.py:2479
msgid "  3  - a general socket exception occurred"
msgstr ""

#: ../satellite_tools/satsync.py:2480
msgid "  4  - an SSL error occurred. Recheck your SSL settings."
msgstr ""

#: ../satellite_tools/satsync.py:2481
msgid "  5  - ISS error"
msgstr ""

#: ../satellite_tools/satsync.py:2482
msgid "  6  - unhandled exception occurred"
msgstr ""

#: ../satellite_tools/satsync.py:2483
msgid "  7  - unknown sync error"
msgstr ""

#: ../satellite_tools/satsync.py:2484
msgid "  8  - ERROR: must be root to execute"
msgstr ""

#: ../satellite_tools/satsync.py:2485
msgid "  9  - rpclib fault during synchronization init"
msgstr ""

#: ../satellite_tools/satsync.py:2486
msgid "  10 - synchronization init error"
msgstr ""

#: ../satellite_tools/satsync.py:2487
msgid "  11 - Error parsing XML stream"
msgstr ""

#: ../satellite_tools/satsync.py:2488
msgid "  12 - Channel do not exist"
msgstr ""

#: ../satellite_tools/satsync.py:2489
msgid "  13 - SQL error during importing package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:2490
msgid "  14 - SQL error during linking channel packages"
msgstr ""

#: ../satellite_tools/satsync.py:2491
msgid "  15 - SQL error during xml processing"
msgstr ""

#: ../satellite_tools/satsync.py:2492
msgid "  16 - server.mount_point not set in the configuration file"
msgstr ""

#: ../satellite_tools/satsync.py:2493
msgid ""
"  17 - SQL error during retrieving the channels already imported in the SUSE "
"Manager database"
msgstr ""

#: ../satellite_tools/satsync.py:2494
msgid "  18 - Wrong db connection string in rhn.conf"
msgstr ""

#: ../satellite_tools/satsync.py:2495
msgid "  19 - Bad arguments"
msgstr ""

#: ../satellite_tools/satsync.py:2496
msgid "  20 - Could not connect to db."
msgstr ""

#: ../satellite_tools/satsync.py:2497
msgid "  21 - Bad debug level"
msgstr ""

#: ../satellite_tools/satsync.py:2498
msgid "  22 - Not valid step"
msgstr ""

#: ../satellite_tools/satsync.py:2499
msgid "  24 - no such file"
msgstr ""

#: ../satellite_tools/satsync.py:2500
msgid "  25 - no such directory"
msgstr ""

#: ../satellite_tools/satsync.py:2501
msgid "  26 - mount_point does not exist"
msgstr ""

#: ../satellite_tools/satsync.py:2502
msgid "  27 - No such org"
msgstr ""

#: ../satellite_tools/satsync.py:2503
msgid "  28 - error: --master is only valid with --mount-point"
msgstr ""

#: ../satellite_tools/satsync.py:2510
#, python-format
msgid "ERROR: unknown dump version, try one of %s"
msgstr ""
07070100000098000081B40000000000000000000000016290A0C10000B60B000000000000000000000000000000000000001E00000000spacewalk-backend/po/zh_HK.po # SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
#
# Translators:
msgid ""
msgstr ""
"Project-Id-Version: Spacewalk\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-10-16 13:34+0200\n"
"PO-Revision-Date: 2011-03-04 16:08+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Chinese (Hong Kong) <chinese@lists.fedoraproject.org>\n"
"Language: zh_HK\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"

#: ../server/apacheAuth.py:66
#, python-format
msgid "incomplete proxy authentication token: %s"
msgstr ""

#: ../server/apacheAuth.py:84
#, python-format
msgid "Sent proxy signature %s does not match ours %s."
msgstr ""

#: ../server/apacheAuth.py:119
msgid "declined proxy authentication"
msgstr ""

#: ../server/apacheRequest.py:59
#, python-format
msgid "Invalid request received (%s)."
msgstr ""

#: ../server/apacheRequest.py:120
#, python-format
msgid ""
"IMPORTANT MESSAGE FOLLOWS:\n"
"%s"
msgstr ""

#: ../server/apacheRequest.py:149
#, python-format
msgid ""
"While running '%s': caught\n"
"%s : %s\n"
msgstr ""

#: ../server/apacheRequest.py:606
#, python-format
msgid "Invalid URI %s"
msgstr ""

#: ../server/configFilesHandler.py:129 ../server/handlers/app/packages.py:192
#: ../server/handlers/xmlrpc/registration.py:215
#: ../server/handlers/xmlrpc/registration.py:1168
#: ../server/handlers/xmlrpc/registration.py:1307
#, python-format
msgid ""
"\n"
"                   %s Account has been deactivated on this server.\n"
"                   Please contact your Org administrator for more help."
msgstr ""

#: ../server/handlers/applet/applet.py:78
#, python-brace-format
msgid "Your system was not found in the {PRODUCT_NAME} database"
msgstr ""

#: ../server/handlers/sat/auth.py:45
msgid "ISS is disabled on this server."
msgstr ""

#: ../server/handlers/sat/auth.py:50
#, python-format
msgid "Server \"%s\" is not enabled for ISS."
msgstr ""

#: ../server/handlers/xmlrpc/errata.py:64
#, python-format
msgid "Expected a package name, not: %s"
msgstr ""

#: ../server/handlers/xmlrpc/errata.py:115
#, python-format
msgid "Expected a package, not: %s"
msgstr ""

#: ../server/handlers/xmlrpc/proxy.py:65
#, python-format
msgid "SUSE Manager Proxy service not enabled for server profile: \"%s\""
msgstr ""

#: ../server/handlers/xmlrpc/proxy.py:85
msgid "Invalid session key"
msgstr ""

#: ../server/handlers/xmlrpc/proxy.py:93
msgid "This server ID no longer exists"
msgstr ""

#: ../server/handlers/xmlrpc/queue.py:433
#, python-format
msgid "Invalid action value type %s (%s)"
msgstr ""

#: ../server/handlers/xmlrpc/queue.py:464
#, python-format
msgid "Action %s does not belong to server %s"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:194
msgid "Required data missing"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:198
msgid "Required members missing"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:207
msgid "Attempt to register a system to an invalid username"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:839
msgid "Invalid system release version requested"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1063
msgid ""
"Unable to find a valid network interface, both ipaddr and ip6addr not found."
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1115
#, python-brace-format
msgid "{PRODUCT_NAME} Welcome Message"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1125
msgid "Privacy Statement"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1146
msgid "Expected a dictionary as a product argument"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1374
#, python-format
msgid "Invalid value '%s' for %s (%s)"
msgstr ""

#: ../server/handlers/xmlrpc/scap.py:104
msgid "Invalid system_id/action_id pair."
msgstr ""

#: ../server/handlers/xmlrpc/up2date.py:233
#, python-format
msgid "Invalid value %s (%s)"
msgstr ""

#: ../server/importlib/userAuth.py:98
msgid "You are not authorized to manage packages in the null org"
msgstr ""

#: ../server/importlib/userAuth.py:103
#, python-format
msgid "You are not allowed to manage packages in the %s org"
msgstr ""

#: ../server/importlib/userAuth.py:121
msgid "You are not allowed to perform administrative tasks"
msgstr ""

#: ../server/importlib/userAuth.py:144
#, python-format
msgid ""
"You are not allowed to manage channel %s, or that channel does not exist"
msgstr ""

#: ../server/importlib/userAuth.py:204
#, python-format
msgid ""
"\n"
"               %s Account has been deactivated on this server.\n"
"               Please contact your Org administrator for more help."
msgstr ""

#: ../server/rhnChannel.py:1992
#, python-format
msgid ""
"Your account does not have access to any channels matching "
"(release='%(release)s', arch='%(arch)s')%(www_activation)s"
msgstr ""

#: ../server/rhnChannel.py:2002
msgid ""
"\n"
"If you have a registration number, please register with it first at http://"
"www.redhat.com/apps/activate/ and then try again.\n"
"\n"
msgstr ""

#: ../server/rhnChannel.py:2012
#, python-format
msgid "Insufficient subscription permissions for release (%s, %s"
msgstr ""

#. Various messages that can be reused
#.
#. bretm 02/07/2007 -- when we have better old-client documentation, probably
#. will be safe to get rid of all this crap
#: ../server/rhnChannel.py:2276 ../server/rhnChannel.py:2287
#: ../server/rhnChannel.py:2302
msgid "System Registered but Inactive"
msgstr ""

#: ../server/rhnChannel.py:2277
#, python-format
msgid ""
"\n"
"Invalid Architecture and OS release combination (%s, %s).\n"
"Your system has been registered, but will not receive updates\n"
"because it is not subscribed to a channel. If you have not yet\n"
"activated your product for service, please visit our website at:\n"
"\n"
"     http://www.redhat.com/apps/activate/\n"
"\n"
"...to activate your product."
msgstr ""

#: ../server/rhnChannel.py:2288
#, python-format
msgid ""
"\n"
"Invalid Architecture and OS release combination (%s, %s).\n"
"Your system has been registered, but will not receive updates\n"
"because it could not be subscribed to a base channel.\n"
"Please contact your organization administrator for assistance.\n"
msgstr ""

#: ../server/rhnChannel.py:2295
#, python-format
msgid ""
"\n"
"  This system has been successfully registered, but is not yet entitled\n"
"  to service.  To entitle this system to service, login to the web site at:\n"
"\n"
"  %(entitlement_url)s\n"
msgstr ""

#: ../server/rhnChannel.py:2303
#, python-format
msgid ""
"\n"
"  This system has been successfully registered, but no service entitlements\n"
"  were available.  To entitle this system to service, login to the web site "
"at:\n"
"\n"
"  %(entitlement_url)s\n"
msgstr ""

#: ../server/rhnHandler.py:62
msgid "Please run rhn_register as root on this client"
msgstr ""

#: ../server/rhnHandler.py:75
#, python-format
msgid "Service not enabled for system profile: \"%s\""
msgstr ""

#: ../server/rhnPackage.py:49 ../server/rhnPackage.py:87
#: ../server/rhnPackage.py:107 ../server/rhnPackage.py:158
#, python-format
msgid "Invalid RPM package %s requested"
msgstr ""

#: ../server/rhnPackage.py:112
msgid "Package not found"
msgstr ""

#: ../server/rhnServer/server_class.py:97
#, python-format
msgid "Architecture `%s' is not supported"
msgstr ""

#: ../server/rhnServer/server_token.py:78
#, python-format
msgid "Token `%s' has more than one base channel assigned"
msgstr ""

#: ../server/rhnServer/server_token.py:80
msgid "Conflicting base channels"
msgstr ""

#: ../server/rhnServer/server_token.py:190
#, python-format
msgid "Failed to add server to group %s"
msgstr ""

#: ../server/rhnServer/server_token.py:503
#, python-format
msgid "Maximum usage count of %s reached"
msgstr ""

#: ../server/rhnServer/server_token.py:744
msgid ""
"Stacking of re-registration tokens with different base entitlements is not "
"supported"
msgstr ""

#: ../server/rhnServer/server_token.py:811
#, python-format
msgid "Could not find token '%s'"
msgstr ""

#. Cannot use activation keys from different orgs
#: ../server/rhnServer/server_token.py:843
msgid "Tokens from mismatching orgs"
msgstr ""

#. Two tokens with different kickstart sessions
#: ../server/rhnServer/server_token.py:853
msgid "Kickstart session mismatch"
msgstr ""

#: ../server/rhnServer/server_token.py:877
msgid "Stacking of re-registration tokens is not supported"
msgstr ""

#: ../server/rhnUser.py:289 ../server/rhnUser.py:292
msgid "Invalid username/password combination"
msgstr ""

#. nope, not reserved either
#: ../server/rhnUser.py:467
#, python-format
msgid "Username `%s' has not been reserved"
msgstr ""

#. New accounts have to specify an e-mail address
#: ../server/rhnUser.py:473
msgid "E-mail address not specified"
msgstr ""

#: ../server/rhnUser.py:509
#, python-format
msgid "username should be at least %d characters"
msgstr ""

#: ../server/rhnUser.py:512
#, python-format
msgid "username should be less than %d characters"
msgstr ""

#: ../server/rhnUser.py:523
#, python-format
msgid "username = `%s', invalid character `%s'"
msgstr ""

#: ../server/rhnUser.py:542
#, python-format
msgid "Please limit your e-mail address to %s chars"
msgstr ""

#: ../server/rhnUser.py:623
#, python-format
msgid "password must be at least %d characters"
msgstr ""

#: ../server/rhnUser.py:626
#, python-format
msgid "Password must be shorter than %d characters"
msgstr ""

#: ../server/rhnUser.py:644
#, python-format
msgid "password contains character `%s'"
msgstr ""

#: ../server/rhnUser.py:651
#, python-format
msgid "username should be at least %d characters long"
msgstr ""

#: ../server/rhnUser.py:662
#, python-format
msgid "Cannot register usernames ending with %s"
msgstr ""

#. 0-999: Red Hat client/client-like interaction errors:
#: ../common/rhnException.py:53
msgid "This does not appear to be a valid username."
msgstr ""

#: ../common/rhnException.py:54
msgid "Invalid username and password combination."
msgstr ""

#: ../common/rhnException.py:55
msgid "This login is already taken, or the password is incorrect."
msgstr ""

#: ../common/rhnException.py:56
msgid "Permission denied."
msgstr ""

#: ../common/rhnException.py:57
msgid "Object not found."
msgstr ""

#: ../common/rhnException.py:58
msgid "Invalid System Digital ID."
msgstr ""

#: ../common/rhnException.py:59
msgid "Invalid System Credentials."
msgstr ""

#: ../common/rhnException.py:60
msgid "Could not retrieve user data from database."
msgstr ""

#: ../common/rhnException.py:61
msgid "Valid username required."
msgstr ""

#: ../common/rhnException.py:62
msgid "Valid password required."
msgstr ""

#: ../common/rhnException.py:63
msgid "Minimum username length violation."
msgstr ""

#: ../common/rhnException.py:64
msgid "Minimum password length violation."
msgstr ""

#: ../common/rhnException.py:65
msgid "The username contains invalid characters."
msgstr ""

#: ../common/rhnException.py:66
msgid "File not found."
msgstr ""

#: ../common/rhnException.py:67
msgid "Architecture and OS version combination is not supported."
msgstr ""

#: ../common/rhnException.py:68
msgid "Could not retrieve system data from database."
msgstr ""

#: ../common/rhnException.py:69
msgid "Invalid arguments passed to function."
msgstr ""

#: ../common/rhnException.py:70
msgid "Unable to retrieve requested entry."
msgstr ""

#: ../common/rhnException.py:71
msgid "Could not update database entry."
msgstr ""

#: ../common/rhnException.py:72
msgid "Unsupported server architecture."
msgstr ""

#: ../common/rhnException.py:73
#, python-format
msgid ""
"\n"
"     The anonymous server functionality is no longer available.\n"
"\n"
"     Please re-register this system by running mgr_register as root.\n"
"     Please visit https://%(hostname)s/rhn/systems/SystemEntitlements.do\n"
"     or login at https://%(hostname)s, and from the \"Overview\" tab,\n"
"     select \"Subscription Management\" to enable the service for this "
"system.\n"
"     "
msgstr ""

#: ../common/rhnException.py:81
msgid "Record not available in the database."
msgstr ""

#: ../common/rhnException.py:82
msgid "Invalid value for entry."
msgstr ""

#: ../common/rhnException.py:83
#, python-format
msgid ""
"\n"
"     This system does not have a valid entitlement for SUSE Manager.\n"
"     Please visit https://%(hostname)s/rhn/systems/SystemEntitlements.do\n"
"     or login at https://%(hostname)s, and from the \"Overview\" tab,\n"
"     select \"Subscription Management\" to enable the service for this "
"system.\n"
"     "
msgstr ""

#: ../common/rhnException.py:89
msgid "Channel error"
msgstr ""

#: ../common/rhnException.py:90
msgid "Client session token is invalid."
msgstr ""

#: ../common/rhnException.py:91
msgid "Client session token has expired."
msgstr ""

#: ../common/rhnException.py:92
msgid "You are not authorized to retrieve the requested object."
msgstr ""

#: ../common/rhnException.py:93
msgid "Invalid action"
msgstr ""

#: ../common/rhnException.py:94
msgid "You are not allowed to perform administrative tasks on this system."
msgstr ""

#: ../common/rhnException.py:96
msgid "The system is already subscribed to the specified channel."
msgstr ""

#: ../common/rhnException.py:97
msgid "The system is not currently subscribed to the specified channel."
msgstr ""

#: ../common/rhnException.py:98
msgid "The specified channel does not exist."
msgstr ""

#: ../common/rhnException.py:99
msgid "Invalid channel version."
msgstr ""

#: ../common/rhnException.py:100
msgid ""
"\n"
"     User group membership limits exceeded.\n"
"\n"
"     The current settings for your account do not allow you to add another\n"
"     user account. Please check with the organization administrator for "
"your\n"
"     account if the maximum number of users allowed to subscribe to server "
"needs\n"
"     to be changed.\n"
"     "
msgstr ""

#: ../common/rhnException.py:108
msgid ""
"\n"
"     System group membership limits exceeded.\n"
"\n"
"     The current settings for your account do not allow you to add another\n"
"     system profile. Please check with the organization administrator for "
"your\n"
"     account for modifying the maximum number of system profiles that can "
"be\n"
"     subscribed to your account.\n"
"     "
msgstr ""

#: ../common/rhnException.py:116
msgid ""
"\n"
"     Invalid architecture.\n"
"\n"
"     The architecture of the package is not supported by\n"
"     "
msgstr ""

#: ../common/rhnException.py:121
msgid "Invalid RPM header"
msgstr ""

#: ../common/rhnException.py:122
msgid ""
"\n"
"    This system is already registered as a Salt Minion. If you want to "
"register it as a traditional client\n"
"    please delete it first via the web UI or API and then register it using "
"the traditional tools.\n"
"    "
msgstr ""

#. For the uploading tools
#: ../common/rhnException.py:127
msgid "Invalid information uploaded to the server"
msgstr ""

#: ../common/rhnException.py:128
msgid "Error uploading network interfaces configuration."
msgstr ""

#: ../common/rhnException.py:129
msgid ""
"\n"
"     Package Upload Failed due to uniqueness constraint violation.\n"
"     Make sure the package does not have any duplicate dependencies or\n"
"     does not already exists on the server\n"
"     "
msgstr ""

#: ../common/rhnException.py:134
msgid ""
"\n"
"     The --force rhnpush option is disabled on this server.\n"
"     Please contact your SUSE Manager administrator for more help.\n"
"     "
msgstr ""

#. 60-70: token errors
#: ../common/rhnException.py:140
msgid ""
"\n"
"     The activation token specified could not be found on the server.\n"
"     Please retry with a valid key.\n"
"     "
msgstr ""

#: ../common/rhnException.py:144
msgid "Too many systems registered using this registration token"
msgstr ""

#: ../common/rhnException.py:145
msgid "Token contains invalid, obsoleted or insufficient settings"
msgstr ""

#: ../common/rhnException.py:146
msgid "Conflicting activation tokens"
msgstr ""

#. 70-80: channel subscription errors
#: ../common/rhnException.py:149
msgid ""
"\n"
"     No matching base channel found for your system.\n"
"     "
msgstr ""

#: ../common/rhnException.py:152
msgid ""
"\n"
"     You do not have subscription permission to the designated channel.\n"
"     Please refer to your organization's channel or organization\n"
"     administrators for further details.\n"
"     "
msgstr ""

#: ../common/rhnException.py:157
msgid "You can not unsubscribe from base channel."
msgstr ""

#: ../common/rhnException.py:158
msgid "SUSE Manager or Proxy channel can not be subscribed."
msgstr ""

#. 80-90: server group errors
#: ../common/rhnException.py:161
msgid "There was an error while trying to join the system to its groups"
msgstr ""

#. 90-100: entitlement errors
#: ../common/rhnException.py:164
msgid "Unable to entitle system"
msgstr ""

#. 100-109: e-mail and uuid related faults
#: ../common/rhnException.py:167
msgid "Maximum e-mail length violation."
msgstr ""

#: ../common/rhnException.py:168
msgid "This system has been previously registered."
msgstr ""

#: ../common/rhnException.py:169
msgid "Invalid username"
msgstr ""

#. 140-159 applet errors
#: ../common/rhnException.py:172
msgid "Unable to look up server"
msgstr ""

#. 160-179: OSAD errors
#: ../common/rhnException.py:175
msgid "Required argument is missing"
msgstr ""

#. 600-699: RHEL5+ EN errors
#: ../common/rhnException.py:178
msgid "No entitlement information tied to hardware"
msgstr ""

#: ../common/rhnException.py:179
msgid "Installation number is not entitling"
msgstr ""

#. 700-799: Additional user input verification errors.
#: ../common/rhnException.py:182
msgid "Maximum username length violation"
msgstr ""

#: ../common/rhnException.py:183
msgid "Maximum password length violation"
msgstr ""

#: ../common/rhnException.py:184
msgid "This user has read only API access. Action denied."
msgstr ""

#: ../common/rhnException.py:186
msgid "System Name cannot be less than 1 character"
msgstr ""

#. 1000-1999: Proxy specific errors:
#. issued by a Proxy to the client
#: ../common/rhnException.py:190
msgid "SUSE Manager Proxy error."
msgstr ""

#: ../common/rhnException.py:191
msgid "SUSE Manager Proxy unable to login."
msgstr ""

#. issued by a SUSE Manager Server/Satellite to the proxy
#: ../common/rhnException.py:193
msgid ""
"\n"
"     SUSE Manager Proxy system ID does not match a Spacewalk Proxy Server\n"
"     in the database.\n"
"     "
msgstr ""

#: ../common/rhnException.py:197
msgid "SUSE Manager Proxy session token is invalid."
msgstr ""

#: ../common/rhnException.py:198
msgid "SUSE Manager Proxy session token has expired."
msgstr ""

#. 2000-2999: Red Hat Satellite specific errors:
#: ../common/rhnException.py:202
msgid ""
"\n"
"      user creation is not allowed via mgr_register;\n"
"     please contact your sysadmin to have your account created.\n"
"     "
msgstr ""

#: ../common/rhnException.py:206
msgid ""
"\n"
"     This SUSE Manager server is not allowed to use Inter Server Sync on "
"this server\n"
"     "
msgstr ""

#: ../common/rhnException.py:209
msgid ""
"\n"
"     Inter Server Sync is disabled on this SUSE Manager Server.\n"
"     "
msgstr ""

#. 3000-3999: XML dumper errors:
#: ../common/rhnException.py:214
msgid "Invalid datatype passed"
msgstr ""

#: ../common/rhnException.py:215
msgid "Unable to retrieve channel"
msgstr ""

#: ../common/rhnException.py:216
msgid "Unable to retrieve package"
msgstr ""

#: ../common/rhnException.py:217
msgid "Unable to retrieve erratum"
msgstr ""

#: ../common/rhnException.py:218
msgid "File is missing"
msgstr ""

#: ../common/rhnException.py:219
msgid "Function retrieval error"
msgstr ""

#: ../common/rhnException.py:220
msgid "Function execution error"
msgstr ""

#: ../common/rhnException.py:221
msgid "Missing version string"
msgstr ""

#: ../common/rhnException.py:222
msgid "Invalid version string"
msgstr ""

#: ../common/rhnException.py:223
msgid "Mismatching versions"
msgstr ""

#: ../common/rhnException.py:224
msgid "Invalid channel version"
msgstr ""

#: ../common/rhnException.py:225
msgid "No comps file for channel"
msgstr ""

#: ../common/rhnException.py:226
msgid "Unable to retrieve comps file"
msgstr ""

#. 4000 - 4999: config management errors
#: ../common/rhnException.py:229
msgid "Configuration action missing"
msgstr ""

#: ../common/rhnException.py:230
msgid "File too large"
msgstr ""

#: ../common/rhnException.py:231
msgid "File contains binary data"
msgstr ""

#: ../common/rhnException.py:232
msgid "Configuration channel is not empty"
msgstr ""

#: ../common/rhnException.py:233
msgid "Permission error"
msgstr ""

#: ../common/rhnException.py:234
msgid "Content missing for configuration file"
msgstr ""

#: ../common/rhnException.py:235
msgid "Template delimiters not specified"
msgstr ""

#: ../common/rhnException.py:236
msgid "Configuration channel does not exist"
msgstr ""

#: ../common/rhnException.py:237
msgid "Configuration channel already exists"
msgstr ""

#: ../common/rhnException.py:238
msgid "File missing from configuration channel"
msgstr ""

#: ../common/rhnException.py:239
msgid "Different revision of this file is uploaded"
msgstr ""

#: ../common/rhnException.py:240
msgid "File already uploaded to configuration channel"
msgstr ""

#: ../common/rhnException.py:241
msgid "File size exceeds remaining quota space"
msgstr ""

#: ../common/rhnException.py:242
msgid "Full path of file must be specified"
msgstr ""

#: ../common/rhnException.py:243
msgid "Invalid revision number"
msgstr ""

#: ../common/rhnException.py:244
msgid "Cannot compare files of different file type"
msgstr ""

#. 5000 - 5999: client content uploading errors
#. 5000 - 5099: crash reporting errors
#: ../common/rhnException.py:248
msgid "Crash information is invalid or incomplete"
msgstr ""

#: ../common/rhnException.py:249
msgid "Crash file information is invalid or incomplete"
msgstr ""

#: ../common/rhnException.py:250
msgid "Error composing crash directory path"
msgstr ""

#: ../common/rhnException.py:251
msgid "Error composing crash file path"
msgstr ""

#: ../common/rhnException.py:252 ../common/rhnException.py:259
msgid "Invalid content encoding"
msgstr ""

#: ../common/rhnException.py:253
msgid "Invalid crash name"
msgstr ""

#: ../common/rhnException.py:254
msgid "Crash reporting is disabled for this organization"
msgstr ""

#. 5100 - 5199: scap results reporting error
#: ../common/rhnException.py:256
msgid "SCAP results file transfer is invalid or incomplete"
msgstr ""

#: ../common/rhnException.py:257
msgid "Error composing directory path for detailed SCAP results"
msgstr ""

#: ../common/rhnException.py:258
msgid "Error composing file path for detailed SCAP results"
msgstr ""

#: ../common/rhnException.py:306
msgid ""
"\n"
"     An error has occurred while processing your request. If this problem\n"
"     persists please enter a bug report at scc.suse.com.\n"
"     If you choose to submit the bug report, please be sure to include\n"
"     details of what you were trying to do when this error occurred and\n"
"     details on how to reproduce this problem.\n"
msgstr ""

#: ../common/rhnException.py:358
#, python-format
msgid ""
"Error Message:\n"
"    %s\n"
msgstr ""

#: ../common/rhnException.py:360
#, python-format
msgid "Error Class Code: %s\n"
msgstr ""

#: ../common/rhnException.py:363
#, python-format
msgid "Error Class Info: %s\n"
msgstr ""

#: ../common/rhnException.py:365
#, python-format
msgid "Explanation: %s"
msgstr ""

#: ../common/rhnTB.py:205
#, python-format
msgid "ERROR: %s %s: %s"
msgstr ""

#: ../common/rhnTB.py:207
#, python-format
msgid "TRACEBACK: %s"
msgstr ""

#: ../satellite_tools/disk_dumper/iss.py:1294
#: ../satellite_tools/disk_dumper/iss.py:1298
#, python-format
msgid "format of %s should be at least YYYYMMDD.\n"
msgstr ""

#: ../satellite_tools/messages.py:26
#, python-format
msgid ""
"\n"
"ERROR: executing step %s. Error is:\n"
"%s\n"
msgstr ""

#: ../satellite_tools/messages.py:31
#, python-format
msgid ""
"\n"
"ERROR: there was a problem accessing the channel data from your temporary\n"
"       repository. Did you migrate all of the data from the channel ISOs\n"
"       do this directory? If so, please recheck the channels ISOs, ensure\n"
"       that you have them all, and then iteratively remount and repopulate\n"
"       the temporary repository (%s).\n"
msgstr ""

#: ../satellite_tools/messages.py:39
#, python-format
msgid ""
"\n"
"ERROR: there was a problem synchronizing the information.\n"
"       Error message: %s\n"
msgstr ""

#: ../satellite_tools/messages.py:44
#, python-format
msgid ""
"\n"
"ERROR: There was a problem communicating with the ISS Master.\n"
"       Depending on the specific error details, please review your "
"configuration,\n"
"       basic network connectivity, and/or name resolution, and try again.\n"
"       Error message: %s\n"
msgstr ""

#: ../satellite_tools/messages.py:51
#, python-format
msgid ""
"\n"
"ERROR: There was a problem communicating with the ISS Master.\n"
"       If the master satellite is older than v5.3, it does not have ISS "
"capability.\n"
"       Otherwise, depending on the specific error details, please review "
"your\n"
"       configuration, basic network connectivity, and/or name resolution, "
"and try again.\n"
"       Error message: %s\n"
msgstr ""

#: ../satellite_tools/messages.py:59
#, python-format
msgid ""
"\n"
"ERROR: a child-channel cannot be synced without its parent being synced as\n"
"       well. A parent needs to be either (a) previously synced or (b) "
"synced\n"
"       in tandem with the desired child-channel. Missing parents for this\n"
"       transaction:\n"
"       %s\n"
msgstr ""

#: ../satellite_tools/messages.py:67
#, python-format
msgid ""
"\n"
"ERROR: you are not entitled to sync a channel in this set of channels.\n"
"Please contact your SUSE Manager contact\n"
"%s"
msgstr ""

#: ../satellite_tools/messages.py:72
#, python-format
msgid "  ERROR: not enough free space (%s KB) on device."
msgstr ""

#: ../satellite_tools/messages.py:74
#, python-format
msgid "    %3d/%s Fetch successful: %s (%s bytes)"
msgstr ""

#: ../satellite_tools/messages.py:75
#, python-format
msgid "    Extinct package:  %s"
msgstr ""

#: ../satellite_tools/messages.py:76
#, python-format
msgid "   Total size: %s"
msgstr ""

#: ../satellite_tools/messages.py:77
#, python-format
msgid "      Downloaded %s of %s. Estimated remaining time: %s"
msgstr ""

#: ../satellite_tools/messages.py:78
#, python-format
msgid "    Fetch unsuccessful: %s"
msgstr ""

#: ../satellite_tools/messages.py:79
#, python-format
msgid "   RPM fetch summary: %s"
msgstr ""

#: ../satellite_tools/messages.py:80
#, python-format
msgid "       success: %d"
msgstr ""

#: ../satellite_tools/messages.py:81
#, python-format
msgid "       failed:  %d"
msgstr ""

#: ../satellite_tools/messages.py:82
#, python-format
msgid "       extinct: %d"
msgstr ""

#: ../satellite_tools/messages.py:84
#, python-format
msgid "   Retrieving / parsing *relevant* package metadata: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:85
#, python-format
msgid "   Retrieving / parsing errata data: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:86
#, python-format
msgid "   Retrieving / parsing kickstart data: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:87
#, python-format
msgid "   Retrieving / parsing kickstart tree files: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:88
#, python-format
msgid "   Importing *relevant* package metadata: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:89
msgid "   * WARNING: this may be a slow process."
msgstr ""

#: ../satellite_tools/messages.py:90
msgid "Linking packages to channels"
msgstr ""

#: ../satellite_tools/messages.py:91
#, python-format
msgid "   Importing *relevant* errata: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:92
msgid "   No new kickstartable tree to import"
msgstr ""

#: ../satellite_tools/messages.py:93
#, python-format
msgid "Importing kickstartable trees (%d)"
msgstr ""

#: ../satellite_tools/messages.py:94
#, python-format
msgid "Imported kickstartable trees (%d)"
msgstr ""

#: ../satellite_tools/reposync.py:111 ../satellite_tools/satsync.py:439
msgid "+++ sending log as an email +++"
msgstr ""

#: ../satellite_tools/reposync.py:114
#, python-format
msgid "%s sync. report from %s"
msgstr ""

#: ../satellite_tools/reposync.py:124 ../satellite_tools/satsync.py:449
msgid "+++ email requested, but there is nothing to send +++"
msgstr ""

#: ../satellite_tools/rhn_satellite_activate.py:198
#, python-format
msgid ""
"\"%s\" (specified in commandline)\n"
"could not be opened and read:\n"
"%s"
msgstr ""

#: ../satellite_tools/rhn_satellite_activate.py:205
#, python-format
msgid ""
"\"%s\" could not be opened\n"
"and/or written to:\n"
"%s"
msgstr ""

#: ../satellite_tools/satsync.py:258
#, python-format
msgid "No handler for step %s"
msgstr ""

#. Try one more time - this time it should be faster since
#. everything should be cached
#: ../satellite_tools/satsync.py:270
msgid "Environment changed, trying again..."
msgstr ""

#: ../satellite_tools/satsync.py:277
msgid "ERROR: Encountered IntegrityError: \n"
msgstr ""

#: ../satellite_tools/satsync.py:285
msgid "Repeated failures"
msgstr ""

#: ../satellite_tools/satsync.py:290
#, python-format
msgid ""
"    Import complete:\n"
"        Begin time: %s\n"
"        End time:   %s\n"
"        Elapsed:    %s\n"
"          "
msgstr ""

#: ../satellite_tools/satsync.py:311
msgid "hours"
msgstr ""

#: ../satellite_tools/satsync.py:311
msgid "minutes"
msgstr ""

#: ../satellite_tools/satsync.py:311
msgid "seconds"
msgstr ""

#: ../satellite_tools/satsync.py:357
msgid ""
"ERROR: The dump is missing package data, use --no-rpms to skip this step or "
"fix the content to include package data."
msgstr ""

#. the orgs() method doesn't exist; that's fine we just
#. won't sync the orgs
#: ../satellite_tools/satsync.py:404
msgid "The SUSE Manager master does not support syncing orgs data."
msgstr ""

#: ../satellite_tools/satsync.py:404
msgid "Skipping..."
msgstr ""

#: ../satellite_tools/satsync.py:442
#, python-format
msgid "SUSE Manager Inter Server sync. report from %s"
msgstr ""

#: ../satellite_tools/satsync.py:521
msgid " - file-system synchronization"
msgstr ""

#: ../satellite_tools/satsync.py:533 ../satellite_tools/satsync.py:541
msgid " - live synchronization"
msgstr ""

#: ../satellite_tools/satsync.py:534
#, python-brace-format
msgid ""
"ERROR: Live content synchronizing with RHN Classic Hosted is no longer "
"supported.\n"
"Please use the cdn-sync command instead unless you are attempting to sync "
"from another {PRODUCT_NAME} via Inter-Server-Sync (ISS), or from local "
"content on disk via Channel Dump ISOs."
msgstr ""

#: ../satellite_tools/satsync.py:542
#, python-format
msgid "   url: %s"
msgstr ""

#: ../satellite_tools/satsync.py:543
#, python-format
msgid "   debug/output level: %s"
msgstr ""

#: ../satellite_tools/satsync.py:553
msgid "ERROR: this server must be registered with SUSE Manager."
msgstr ""

#: ../satellite_tools/satsync.py:575
#, python-format
msgid "Retrieving / parsing %s data"
msgstr ""

#: ../satellite_tools/satsync.py:585 ../satellite_tools/satsync.py:600
msgid "*** SYSTEM INTERRUPT CALLED ***"
msgstr ""

#: ../satellite_tools/satsync.py:593
msgid "ERROR: fatal parser exception occurred "
msgstr ""

#: ../satellite_tools/satsync.py:594
#, python-format
msgid "(line: %s, col: %s msg: %s)"
msgstr ""

#: ../satellite_tools/satsync.py:598
#, python-format
msgid "ERROR: parser exception occurred: %s"
msgstr ""

#: ../satellite_tools/satsync.py:603
msgid "ERROR: exception (during parse) occurred: "
msgstr ""

#: ../satellite_tools/satsync.py:604
#, python-format
msgid ""
"   Encountered some errors with %s data (see logs (%s) for more information)"
msgstr ""

#: ../satellite_tools/satsync.py:606
#, python-format
msgid "   Encountered some errors with %s data:"
msgstr ""

#: ../satellite_tools/satsync.py:607
#, python-format
msgid "   ------- %s PARSE/IMPORT ERROR -------"
msgstr ""

#: ../satellite_tools/satsync.py:609
msgid "   ---------------------------------------"
msgstr ""

#: ../satellite_tools/satsync.py:612
#, python-format
msgid "%s data complete"
msgstr ""

#: ../satellite_tools/satsync.py:665
msgid "Retrieving / parsing channel data"
msgstr ""

#: ../satellite_tools/satsync.py:718
msgid "Channel data complete"
msgstr ""

#: ../satellite_tools/satsync.py:736
#, python-format
msgid "%10s import from %s"
msgstr ""

#: ../satellite_tools/satsync.py:739
#, python-format
msgid "%10s import from %s - %s"
msgstr ""

#: ../satellite_tools/satsync.py:743
#, python-format
msgid "%10s"
msgstr ""

#: ../satellite_tools/satsync.py:750
msgid "p"
msgstr ""

#: ../satellite_tools/satsync.py:752
msgid "."
msgstr ""

#: ../satellite_tools/satsync.py:758
msgid "   p = previously imported/synced channel"
msgstr ""

#: ../satellite_tools/satsync.py:759
msgid "   . = channel not yet imported/synced"
msgstr ""

#: ../satellite_tools/satsync.py:765
msgid "   e = channel no longer supported (end-of-service)"
msgstr ""

#: ../satellite_tools/satsync.py:767
msgid "   ? = channel label invalid --- typo?"
msgstr ""

#: ../satellite_tools/satsync.py:771
#, python-format
msgid "   %s:"
msgstr ""

#: ../satellite_tools/satsync.py:772
#, python-format
msgid "      %s %-40s %4s %s"
msgstr ""

#: ../satellite_tools/satsync.py:773
msgid "base-channels"
msgstr ""

#: ../satellite_tools/satsync.py:786 ../satellite_tools/satsync.py:1603
msgid "NONE RELEVANT"
msgstr ""

#: ../satellite_tools/satsync.py:808
msgid "end-of-service"
msgstr ""

#: ../satellite_tools/satsync.py:809
msgid "e"
msgstr ""

#: ../satellite_tools/satsync.py:815
msgid "   typos:"
msgstr ""

#: ../satellite_tools/satsync.py:816
msgid "?"
msgstr ""

#: ../satellite_tools/satsync.py:831
#, python-format
msgid "XXX: imported channels: %s"
msgstr ""

#: ../satellite_tools/satsync.py:832
#, python-format
msgid "XXX:   cached channels: %s"
msgstr ""

#: ../satellite_tools/satsync.py:837
msgid "XXX: list channels called"
msgstr ""

#: ../satellite_tools/satsync.py:855
msgid "ERROR: these channels either do not exist or are not available:"
msgstr ""

#: ../satellite_tools/satsync.py:859
#, python-format
msgid "       (to see a list of channel labels: %s --list-channels)"
msgstr ""

#: ../satellite_tools/satsync.py:904
#, python-format
msgid "   Retrieving / parsing short package metadata: %s (%s)"
msgstr ""

#: ../satellite_tools/satsync.py:965
#, python-format
msgid "Diffing package metadata (what's missing locally?): %s"
msgstr ""

#: ../satellite_tools/satsync.py:971 ../satellite_tools/satsync.py:1254
msgid "Diffing:    "
msgstr ""

#: ../satellite_tools/satsync.py:988
msgid "ERROR: incremental dump skipped"
msgstr ""

#: ../satellite_tools/satsync.py:1079
msgid "Downloading rpm packages"
msgstr ""

#: ../satellite_tools/satsync.py:1084
#, python-format
msgid "   Fetching any missing RPMs: %s (%s)"
msgstr ""

#: ../satellite_tools/satsync.py:1085 ../satellite_tools/satsync.py:1153
msgid "NONE MISSING"
msgstr ""

#: ../satellite_tools/satsync.py:1094
msgid "Processing rpm packages complete"
msgstr ""

#: ../satellite_tools/satsync.py:1121
msgid "Downloading package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1146
msgid "Downloading srpm packages"
msgstr ""

#: ../satellite_tools/satsync.py:1152
#, python-format
msgid "   Fetching any missing SRPMs: %s (%s)"
msgstr ""

#: ../satellite_tools/satsync.py:1249
#, python-format
msgid "Diffing source package metadata (what's missing locally?): %s"
msgstr ""

#: ../satellite_tools/satsync.py:1260
msgid "Downloading source package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1338 ../satellite_tools/satsync.py:2027
#, python-format
msgid "Unable to save file %s: %s"
msgstr ""

#. for
#. Retried a number of times and it still failed; log the
#. file as being failed and move on
#: ../satellite_tools/satsync.py:1345
#, python-format
msgid "Failed to fetch file %s"
msgstr ""

#: ../satellite_tools/satsync.py:1350
msgid "Downloading kickstartable trees metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1365
msgid "Downloading kickstartable trees files"
msgstr ""

#: ../satellite_tools/satsync.py:1504
#, python-format
msgid "Grabbing all patches for channel %s"
msgstr ""

#: ../satellite_tools/satsync.py:1554
msgid "Downloading patch data"
msgstr ""

#: ../satellite_tools/satsync.py:1556
msgid "Forcing download of all patch data for requested channels."
msgstr ""

#: ../satellite_tools/satsync.py:1571
msgid "Downloading patch data complete"
msgstr ""

#: ../satellite_tools/satsync.py:1576 ../satellite_tools/satsync.py:1597
msgid "Downloading:"
msgstr ""

#: ../satellite_tools/satsync.py:1579
msgid " - complete"
msgstr ""

#: ../satellite_tools/satsync.py:1624
msgid "Importing source package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1627
msgid "Importing package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1635
msgid "Importing:  "
msgstr ""

#. not in the cache
#: ../satellite_tools/satsync.py:1703
msgid ""
"Package Not Found in Cache, Clear the Cache "
"to                                  Regenerate it."
msgstr ""

#: ../satellite_tools/satsync.py:1709
msgid "Importing channel patches"
msgstr ""

#: ../satellite_tools/satsync.py:1714
#, python-format
msgid "Importing %s patches for channel %s."
msgstr ""

#. Incomplete configuration
#: ../satellite_tools/satsync.py:2113
msgid "ERROR: server.mount_point not set in the configuration file"
msgstr ""

#: ../satellite_tools/satsync.py:2117
#, python-format
msgid "ERROR: server.mount_point %s do not exist"
msgstr ""

#: ../satellite_tools/satsync.py:2122
#, python-format
msgid "ERROR: path under server.mount_point (%s)  do not exist"
msgstr ""

#: ../satellite_tools/satsync.py:2199
#, python-format
msgid "Commandline: %s"
msgstr ""

#: ../satellite_tools/satsync.py:2202
#, python-format
msgid ""
"DEBUG ONLY: max. batch-size for XML/database-import processing (1..%s).\"man "
"satellite-sync\" for more information."
msgstr ""

#: ../satellite_tools/satsync.py:2205
msgid "alternative SSL CA Cert (fullpath to cert file)"
msgstr ""

#: ../satellite_tools/satsync.py:2207
msgid "process data for this channel only"
msgstr ""

#: ../satellite_tools/satsync.py:2209
msgid ""
"disk dump will be considered to be a full export; see \"man satellite-sync\" "
"for more information."
msgstr ""

#: ../satellite_tools/satsync.py:2212
msgid "existing custom channels will also be synced (unless -c is used)"
msgstr ""

#: ../satellite_tools/satsync.py:2214
#, python-format
msgid ""
"override debug level set in /etc/rhn/rhn.conf (which is currently set at %s)."
msgstr ""

#: ../satellite_tools/satsync.py:2216
#, python-format
msgid "requested version of XML dump (default: %s)"
msgstr ""

#: ../satellite_tools/satsync.py:2218
msgid "e-mail a report of what was synced/imported"
msgstr ""

#: ../satellite_tools/satsync.py:2220
msgid "forcibly process all (not a diff of) patch metadata"
msgstr ""

#: ../satellite_tools/satsync.py:2222
msgid "Do not use an http proxy under any circumstances."
msgstr ""

#: ../satellite_tools/satsync.py:2224
msgid "alternative http proxy (hostname:port)"
msgstr ""

#: ../satellite_tools/satsync.py:2226
msgid "alternative http proxy username"
msgstr ""

#: ../satellite_tools/satsync.py:2228
msgid "alternative http proxy password"
msgstr ""

#: ../satellite_tools/satsync.py:2230
msgid "parent SUSE Manager to import content from"
msgstr ""

#: ../satellite_tools/satsync.py:2232
msgid "list all available channels and exit"
msgstr ""

#: ../satellite_tools/satsync.py:2234
msgid "help on all error codes mgr-inter-sync returns"
msgstr ""

#: ../satellite_tools/satsync.py:2236
msgid "source mount point for import - disk update only"
msgstr ""

#: ../satellite_tools/satsync.py:2238
msgid "do not process patch data"
msgstr ""

#: ../satellite_tools/satsync.py:2240
msgid "do not process kickstart data (provisioning only)"
msgstr ""

#: ../satellite_tools/satsync.py:2242
msgid "do not process full package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:2244
msgid "do not download, or process any RPMs"
msgstr ""

#: ../satellite_tools/satsync.py:2246
msgid "turn off SSL (not recommended)"
msgstr ""

#: ../satellite_tools/satsync.py:2248
msgid "org to which the sync imports data. defaults to the admin account"
msgstr ""

#: ../satellite_tools/satsync.py:2250
msgid "print the configuration and exit"
msgstr ""

#: ../satellite_tools/satsync.py:2252
msgid "alternative server with which to connect (hostname)"
msgstr ""

#: ../satellite_tools/satsync.py:2254
msgid "synchronize to this step (man satellite-sync for more info)"
msgstr ""

#: ../satellite_tools/satsync.py:2256
msgid "write complete data to tempfile before streaming to remainder of app"
msgstr ""

#: ../satellite_tools/satsync.py:2258
msgid "DEBUG ONLY: alternative path to digital system id"
msgstr ""

#: ../satellite_tools/satsync.py:2260
msgid "alternative email address(es) for sync output (--email option)"
msgstr ""

#: ../satellite_tools/satsync.py:2262
msgid "do not remove rpms when importing from local dump"
msgstr ""

#: ../satellite_tools/satsync.py:2264
msgid ""
"the fully qualified domain name of the master Satellite. Valid with --mount-"
"point only. Required if you want to import org data and channel permissions."
msgstr ""

#: ../satellite_tools/satsync.py:2274
#, python-format
msgid "ERROR: these arguments make no sense in this context (try --help): %s"
msgstr ""

#. An SQL error is fatal... crash and burn
#: ../satellite_tools/satsync.py:2286
#, python-format
msgid "ERROR: Can't connect to the database: %s"
msgstr ""

#: ../satellite_tools/satsync.py:2287
msgid "ERROR: Check if your database is running."
msgstr ""

#: ../satellite_tools/satsync.py:2322
#, python-format
msgid "ERROR: --debug-level takes an in integer value within the range %s."
msgstr ""

#: ../satellite_tools/satsync.py:2324
msgid "  0  - little logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2325
msgid "  1  - minimal logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2326
msgid "  2  - normal level of logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2327
msgid "  3  - lots of logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2328
msgid "  4+ - excessive logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2341
msgid "ERROR: The --master option is only valid with the --mount-point option"
msgstr ""

#: ../satellite_tools/satsync.py:2351
#, python-format
msgid "ERROR: Unable to lookup Org Id %s"
msgstr ""

#: ../satellite_tools/satsync.py:2360
msgid ""
"WARNING: --list-channels option overrides any --step option. --step ignored."
msgstr ""

#: ../satellite_tools/satsync.py:2375
#, python-format
msgid ""
"ERROR: '%s' is not a valid step. See 'man mgr-inter-sync' for more detail."
msgstr ""

#: ../satellite_tools/satsync.py:2407
msgid ""
"ERROR: No channels currently imported; try mgr-inter-sync --list-channels; "
"then mgr-inter-sync -c chn0 -c chn1..."
msgstr ""

#. int(None) --> TypeError
#. int('a')  --> ValueError
#: ../satellite_tools/satsync.py:2457 ../satellite_tools/satsync.py:2461
msgid "ERROR: --batch-size must have a value within the range: 1..50"
msgstr ""

#: ../satellite_tools/satsync.py:2469
#, python-format
msgid "ERROR: no such directory %s"
msgstr ""

#: ../satellite_tools/satsync.py:2474
msgid "Error Codes: Returned codes means:"
msgstr ""

#: ../satellite_tools/satsync.py:2475
msgid " -1  - Could not lock file or KeyboardInterrupt or SystemExit"
msgstr ""

#: ../satellite_tools/satsync.py:2476
msgid "  0  - User interrupted or intentional exit"
msgstr ""

#: ../satellite_tools/satsync.py:2477
msgid "  1  - attempting to run more than one instance of mgr-inter-sync."
msgstr ""

#: ../satellite_tools/satsync.py:2478
msgid "  2  - Unable to find synchronization tools."
msgstr ""

#: ../satellite_tools/satsync.py:2479
msgid "  3  - a general socket exception occurred"
msgstr ""

#: ../satellite_tools/satsync.py:2480
msgid "  4  - an SSL error occurred. Recheck your SSL settings."
msgstr ""

#: ../satellite_tools/satsync.py:2481
msgid "  5  - ISS error"
msgstr ""

#: ../satellite_tools/satsync.py:2482
msgid "  6  - unhandled exception occurred"
msgstr ""

#: ../satellite_tools/satsync.py:2483
msgid "  7  - unknown sync error"
msgstr ""

#: ../satellite_tools/satsync.py:2484
msgid "  8  - ERROR: must be root to execute"
msgstr ""

#: ../satellite_tools/satsync.py:2485
msgid "  9  - rpclib fault during synchronization init"
msgstr ""

#: ../satellite_tools/satsync.py:2486
msgid "  10 - synchronization init error"
msgstr ""

#: ../satellite_tools/satsync.py:2487
msgid "  11 - Error parsing XML stream"
msgstr ""

#: ../satellite_tools/satsync.py:2488
msgid "  12 - Channel do not exist"
msgstr ""

#: ../satellite_tools/satsync.py:2489
msgid "  13 - SQL error during importing package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:2490
msgid "  14 - SQL error during linking channel packages"
msgstr ""

#: ../satellite_tools/satsync.py:2491
msgid "  15 - SQL error during xml processing"
msgstr ""

#: ../satellite_tools/satsync.py:2492
msgid "  16 - server.mount_point not set in the configuration file"
msgstr ""

#: ../satellite_tools/satsync.py:2493
msgid ""
"  17 - SQL error during retrieving the channels already imported in the SUSE "
"Manager database"
msgstr ""

#: ../satellite_tools/satsync.py:2494
msgid "  18 - Wrong db connection string in rhn.conf"
msgstr ""

#: ../satellite_tools/satsync.py:2495
msgid "  19 - Bad arguments"
msgstr ""

#: ../satellite_tools/satsync.py:2496
msgid "  20 - Could not connect to db."
msgstr ""

#: ../satellite_tools/satsync.py:2497
msgid "  21 - Bad debug level"
msgstr ""

#: ../satellite_tools/satsync.py:2498
msgid "  22 - Not valid step"
msgstr ""

#: ../satellite_tools/satsync.py:2499
msgid "  24 - no such file"
msgstr ""

#: ../satellite_tools/satsync.py:2500
msgid "  25 - no such directory"
msgstr ""

#: ../satellite_tools/satsync.py:2501
msgid "  26 - mount_point does not exist"
msgstr ""

#: ../satellite_tools/satsync.py:2502
msgid "  27 - No such org"
msgstr ""

#: ../satellite_tools/satsync.py:2503
msgid "  28 - error: --master is only valid with --mount-point"
msgstr ""

#: ../satellite_tools/satsync.py:2510
#, python-format
msgid "ERROR: unknown dump version, try one of %s"
msgstr ""
 07070100000099000081B40000000000000000000000016290A0C10000B71F000000000000000000000000000000000000001E00000000spacewalk-backend/po/zh_TW.po # SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
#
# Translators:
# Ben Wu <hpwu@redhat.com>, 2002, 2003.
# Chester Cheng <ccheng@brisbane.redhat.com>, 2006.
# Chester Cheng <ccheng@redhat.com>, 2004, 2005, 2006, 2007.
# Leah Liu <weliu@redhat.com>, 2005.
# Waika Liu <wliu@redhat.com>, 2005.
# Walter Cheuk <wwycheuk@netvigator.com>, 2005.
msgid ""
msgstr ""
"Project-Id-Version: Spacewalk\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-10-16 13:34+0200\n"
"PO-Revision-Date: 2011-03-04 16:08+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Chinese (Taiwan) <trans-zh_TW@lists.fedoraproject.org>\n"
"Language: zh_TW\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"

#: ../server/apacheAuth.py:66
#, python-format
msgid "incomplete proxy authentication token: %s"
msgstr ""

#: ../server/apacheAuth.py:84
#, python-format
msgid "Sent proxy signature %s does not match ours %s."
msgstr ""

#: ../server/apacheAuth.py:119
msgid "declined proxy authentication"
msgstr ""

#: ../server/apacheRequest.py:59
#, python-format
msgid "Invalid request received (%s)."
msgstr ""

#: ../server/apacheRequest.py:120
#, python-format
msgid ""
"IMPORTANT MESSAGE FOLLOWS:\n"
"%s"
msgstr ""

#: ../server/apacheRequest.py:149
#, python-format
msgid ""
"While running '%s': caught\n"
"%s : %s\n"
msgstr ""

#: ../server/apacheRequest.py:606
#, python-format
msgid "Invalid URI %s"
msgstr ""

#: ../server/configFilesHandler.py:129 ../server/handlers/app/packages.py:192
#: ../server/handlers/xmlrpc/registration.py:215
#: ../server/handlers/xmlrpc/registration.py:1168
#: ../server/handlers/xmlrpc/registration.py:1307
#, python-format
msgid ""
"\n"
"                   %s Account has been deactivated on this server.\n"
"                   Please contact your Org administrator for more help."
msgstr ""

#: ../server/handlers/applet/applet.py:78
#, python-brace-format
msgid "Your system was not found in the {PRODUCT_NAME} database"
msgstr ""

#: ../server/handlers/sat/auth.py:45
msgid "ISS is disabled on this server."
msgstr ""

#: ../server/handlers/sat/auth.py:50
#, python-format
msgid "Server \"%s\" is not enabled for ISS."
msgstr ""

#: ../server/handlers/xmlrpc/errata.py:64
#, python-format
msgid "Expected a package name, not: %s"
msgstr ""

#: ../server/handlers/xmlrpc/errata.py:115
#, python-format
msgid "Expected a package, not: %s"
msgstr ""

#: ../server/handlers/xmlrpc/proxy.py:65
#, python-format
msgid "SUSE Manager Proxy service not enabled for server profile: \"%s\""
msgstr ""

#: ../server/handlers/xmlrpc/proxy.py:85
msgid "Invalid session key"
msgstr ""

#: ../server/handlers/xmlrpc/proxy.py:93
msgid "This server ID no longer exists"
msgstr ""

#: ../server/handlers/xmlrpc/queue.py:433
#, python-format
msgid "Invalid action value type %s (%s)"
msgstr ""

#: ../server/handlers/xmlrpc/queue.py:464
#, python-format
msgid "Action %s does not belong to server %s"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:194
msgid "Required data missing"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:198
msgid "Required members missing"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:207
msgid "Attempt to register a system to an invalid username"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:839
msgid "Invalid system release version requested"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1063
msgid ""
"Unable to find a valid network interface, both ipaddr and ip6addr not found."
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1115
#, python-brace-format
msgid "{PRODUCT_NAME} Welcome Message"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1125
msgid "Privacy Statement"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1146
msgid "Expected a dictionary as a product argument"
msgstr ""

#: ../server/handlers/xmlrpc/registration.py:1374
#, python-format
msgid "Invalid value '%s' for %s (%s)"
msgstr ""

#: ../server/handlers/xmlrpc/scap.py:104
msgid "Invalid system_id/action_id pair."
msgstr ""

#: ../server/handlers/xmlrpc/up2date.py:233
#, python-format
msgid "Invalid value %s (%s)"
msgstr ""

#: ../server/importlib/userAuth.py:98
msgid "You are not authorized to manage packages in the null org"
msgstr ""

#: ../server/importlib/userAuth.py:103
#, python-format
msgid "You are not allowed to manage packages in the %s org"
msgstr ""

#: ../server/importlib/userAuth.py:121
msgid "You are not allowed to perform administrative tasks"
msgstr ""

#: ../server/importlib/userAuth.py:144
#, python-format
msgid ""
"You are not allowed to manage channel %s, or that channel does not exist"
msgstr ""

#: ../server/importlib/userAuth.py:204
#, python-format
msgid ""
"\n"
"               %s Account has been deactivated on this server.\n"
"               Please contact your Org administrator for more help."
msgstr ""

#: ../server/rhnChannel.py:1992
#, python-format
msgid ""
"Your account does not have access to any channels matching "
"(release='%(release)s', arch='%(arch)s')%(www_activation)s"
msgstr ""

#: ../server/rhnChannel.py:2002
msgid ""
"\n"
"If you have a registration number, please register with it first at http://"
"www.redhat.com/apps/activate/ and then try again.\n"
"\n"
msgstr ""

#: ../server/rhnChannel.py:2012
#, python-format
msgid "Insufficient subscription permissions for release (%s, %s"
msgstr ""

#. Various messages that can be reused
#.
#. bretm 02/07/2007 -- when we have better old-client documentation, probably
#. will be safe to get rid of all this crap
#: ../server/rhnChannel.py:2276 ../server/rhnChannel.py:2287
#: ../server/rhnChannel.py:2302
msgid "System Registered but Inactive"
msgstr ""

#: ../server/rhnChannel.py:2277
#, python-format
msgid ""
"\n"
"Invalid Architecture and OS release combination (%s, %s).\n"
"Your system has been registered, but will not receive updates\n"
"because it is not subscribed to a channel. If you have not yet\n"
"activated your product for service, please visit our website at:\n"
"\n"
"     http://www.redhat.com/apps/activate/\n"
"\n"
"...to activate your product."
msgstr ""

#: ../server/rhnChannel.py:2288
#, python-format
msgid ""
"\n"
"Invalid Architecture and OS release combination (%s, %s).\n"
"Your system has been registered, but will not receive updates\n"
"because it could not be subscribed to a base channel.\n"
"Please contact your organization administrator for assistance.\n"
msgstr ""

#: ../server/rhnChannel.py:2295
#, python-format
msgid ""
"\n"
"  This system has been successfully registered, but is not yet entitled\n"
"  to service.  To entitle this system to service, login to the web site at:\n"
"\n"
"  %(entitlement_url)s\n"
msgstr ""

#: ../server/rhnChannel.py:2303
#, python-format
msgid ""
"\n"
"  This system has been successfully registered, but no service entitlements\n"
"  were available.  To entitle this system to service, login to the web site "
"at:\n"
"\n"
"  %(entitlement_url)s\n"
msgstr ""

#: ../server/rhnHandler.py:62
msgid "Please run rhn_register as root on this client"
msgstr ""

#: ../server/rhnHandler.py:75
#, python-format
msgid "Service not enabled for system profile: \"%s\""
msgstr ""

#: ../server/rhnPackage.py:49 ../server/rhnPackage.py:87
#: ../server/rhnPackage.py:107 ../server/rhnPackage.py:158
#, python-format
msgid "Invalid RPM package %s requested"
msgstr ""

#: ../server/rhnPackage.py:112
msgid "Package not found"
msgstr ""

#: ../server/rhnServer/server_class.py:97
#, python-format
msgid "Architecture `%s' is not supported"
msgstr ""

#: ../server/rhnServer/server_token.py:78
#, python-format
msgid "Token `%s' has more than one base channel assigned"
msgstr ""

#: ../server/rhnServer/server_token.py:80
msgid "Conflicting base channels"
msgstr ""

#: ../server/rhnServer/server_token.py:190
#, python-format
msgid "Failed to add server to group %s"
msgstr ""

#: ../server/rhnServer/server_token.py:503
#, python-format
msgid "Maximum usage count of %s reached"
msgstr ""

#: ../server/rhnServer/server_token.py:744
msgid ""
"Stacking of re-registration tokens with different base entitlements is not "
"supported"
msgstr ""

#: ../server/rhnServer/server_token.py:811
#, python-format
msgid "Could not find token '%s'"
msgstr ""

#. Cannot use activation keys from different orgs
#: ../server/rhnServer/server_token.py:843
msgid "Tokens from mismatching orgs"
msgstr ""

#. Two tokens with different kickstart sessions
#: ../server/rhnServer/server_token.py:853
msgid "Kickstart session mismatch"
msgstr ""

#: ../server/rhnServer/server_token.py:877
msgid "Stacking of re-registration tokens is not supported"
msgstr ""

#: ../server/rhnUser.py:289 ../server/rhnUser.py:292
msgid "Invalid username/password combination"
msgstr ""

#. nope, not reserved either
#: ../server/rhnUser.py:467
#, python-format
msgid "Username `%s' has not been reserved"
msgstr ""

#. New accounts have to specify an e-mail address
#: ../server/rhnUser.py:473
msgid "E-mail address not specified"
msgstr ""

#: ../server/rhnUser.py:509
#, python-format
msgid "username should be at least %d characters"
msgstr ""

#: ../server/rhnUser.py:512
#, python-format
msgid "username should be less than %d characters"
msgstr ""

#: ../server/rhnUser.py:523
#, python-format
msgid "username = `%s', invalid character `%s'"
msgstr ""

#: ../server/rhnUser.py:542
#, python-format
msgid "Please limit your e-mail address to %s chars"
msgstr ""

#: ../server/rhnUser.py:623
#, python-format
msgid "password must be at least %d characters"
msgstr ""

#: ../server/rhnUser.py:626
#, python-format
msgid "Password must be shorter than %d characters"
msgstr ""

#: ../server/rhnUser.py:644
#, python-format
msgid "password contains character `%s'"
msgstr ""

#: ../server/rhnUser.py:651
#, python-format
msgid "username should be at least %d characters long"
msgstr ""

#: ../server/rhnUser.py:662
#, python-format
msgid "Cannot register usernames ending with %s"
msgstr ""

#. 0-999: Red Hat client/client-like interaction errors:
#: ../common/rhnException.py:53
msgid "This does not appear to be a valid username."
msgstr ""

#: ../common/rhnException.py:54
msgid "Invalid username and password combination."
msgstr ""

#: ../common/rhnException.py:55
msgid "This login is already taken, or the password is incorrect."
msgstr ""

#: ../common/rhnException.py:56
msgid "Permission denied."
msgstr ""

#: ../common/rhnException.py:57
msgid "Object not found."
msgstr ""

#: ../common/rhnException.py:58
msgid "Invalid System Digital ID."
msgstr ""

#: ../common/rhnException.py:59
msgid "Invalid System Credentials."
msgstr ""

#: ../common/rhnException.py:60
msgid "Could not retrieve user data from database."
msgstr ""

#: ../common/rhnException.py:61
msgid "Valid username required."
msgstr ""

#: ../common/rhnException.py:62
msgid "Valid password required."
msgstr ""

#: ../common/rhnException.py:63
msgid "Minimum username length violation."
msgstr ""

#: ../common/rhnException.py:64
msgid "Minimum password length violation."
msgstr ""

#: ../common/rhnException.py:65
msgid "The username contains invalid characters."
msgstr ""

#: ../common/rhnException.py:66
msgid "File not found."
msgstr ""

#: ../common/rhnException.py:67
msgid "Architecture and OS version combination is not supported."
msgstr ""

#: ../common/rhnException.py:68
msgid "Could not retrieve system data from database."
msgstr ""

#: ../common/rhnException.py:69
msgid "Invalid arguments passed to function."
msgstr ""

#: ../common/rhnException.py:70
msgid "Unable to retrieve requested entry."
msgstr ""

#: ../common/rhnException.py:71
msgid "Could not update database entry."
msgstr ""

#: ../common/rhnException.py:72
msgid "Unsupported server architecture."
msgstr ""

#: ../common/rhnException.py:73
#, python-format
msgid ""
"\n"
"     The anonymous server functionality is no longer available.\n"
"\n"
"     Please re-register this system by running mgr_register as root.\n"
"     Please visit https://%(hostname)s/rhn/systems/SystemEntitlements.do\n"
"     or login at https://%(hostname)s, and from the \"Overview\" tab,\n"
"     select \"Subscription Management\" to enable the service for this "
"system.\n"
"     "
msgstr ""

#: ../common/rhnException.py:81
msgid "Record not available in the database."
msgstr ""

#: ../common/rhnException.py:82
msgid "Invalid value for entry."
msgstr ""

#: ../common/rhnException.py:83
#, python-format
msgid ""
"\n"
"     This system does not have a valid entitlement for SUSE Manager.\n"
"     Please visit https://%(hostname)s/rhn/systems/SystemEntitlements.do\n"
"     or login at https://%(hostname)s, and from the \"Overview\" tab,\n"
"     select \"Subscription Management\" to enable the service for this "
"system.\n"
"     "
msgstr ""

#: ../common/rhnException.py:89
msgid "Channel error"
msgstr ""

#: ../common/rhnException.py:90
msgid "Client session token is invalid."
msgstr ""

#: ../common/rhnException.py:91
msgid "Client session token has expired."
msgstr ""

#: ../common/rhnException.py:92
msgid "You are not authorized to retrieve the requested object."
msgstr ""

#: ../common/rhnException.py:93
msgid "Invalid action"
msgstr ""

#: ../common/rhnException.py:94
msgid "You are not allowed to perform administrative tasks on this system."
msgstr ""

#: ../common/rhnException.py:96
msgid "The system is already subscribed to the specified channel."
msgstr ""

#: ../common/rhnException.py:97
msgid "The system is not currently subscribed to the specified channel."
msgstr ""

#: ../common/rhnException.py:98
msgid "The specified channel does not exist."
msgstr ""

#: ../common/rhnException.py:99
msgid "Invalid channel version."
msgstr ""

#: ../common/rhnException.py:100
msgid ""
"\n"
"     User group membership limits exceeded.\n"
"\n"
"     The current settings for your account do not allow you to add another\n"
"     user account. Please check with the organization administrator for "
"your\n"
"     account if the maximum number of users allowed to subscribe to server "
"needs\n"
"     to be changed.\n"
"     "
msgstr ""

#: ../common/rhnException.py:108
msgid ""
"\n"
"     System group membership limits exceeded.\n"
"\n"
"     The current settings for your account do not allow you to add another\n"
"     system profile. Please check with the organization administrator for "
"your\n"
"     account for modifying the maximum number of system profiles that can "
"be\n"
"     subscribed to your account.\n"
"     "
msgstr ""

#: ../common/rhnException.py:116
msgid ""
"\n"
"     Invalid architecture.\n"
"\n"
"     The architecture of the package is not supported by\n"
"     "
msgstr ""

#: ../common/rhnException.py:121
msgid "Invalid RPM header"
msgstr ""

#: ../common/rhnException.py:122
msgid ""
"\n"
"    This system is already registered as a Salt Minion. If you want to "
"register it as a traditional client\n"
"    please delete it first via the web UI or API and then register it using "
"the traditional tools.\n"
"    "
msgstr ""

#. For the uploading tools
#: ../common/rhnException.py:127
msgid "Invalid information uploaded to the server"
msgstr ""

#: ../common/rhnException.py:128
msgid "Error uploading network interfaces configuration."
msgstr ""

#: ../common/rhnException.py:129
msgid ""
"\n"
"     Package Upload Failed due to uniqueness constraint violation.\n"
"     Make sure the package does not have any duplicate dependencies or\n"
"     does not already exists on the server\n"
"     "
msgstr ""

#: ../common/rhnException.py:134
msgid ""
"\n"
"     The --force rhnpush option is disabled on this server.\n"
"     Please contact your SUSE Manager administrator for more help.\n"
"     "
msgstr ""

#. 60-70: token errors
#: ../common/rhnException.py:140
msgid ""
"\n"
"     The activation token specified could not be found on the server.\n"
"     Please retry with a valid key.\n"
"     "
msgstr ""

#: ../common/rhnException.py:144
msgid "Too many systems registered using this registration token"
msgstr ""

#: ../common/rhnException.py:145
msgid "Token contains invalid, obsoleted or insufficient settings"
msgstr ""

#: ../common/rhnException.py:146
msgid "Conflicting activation tokens"
msgstr ""

#. 70-80: channel subscription errors
#: ../common/rhnException.py:149
msgid ""
"\n"
"     No matching base channel found for your system.\n"
"     "
msgstr ""

#: ../common/rhnException.py:152
msgid ""
"\n"
"     You do not have subscription permission to the designated channel.\n"
"     Please refer to your organization's channel or organization\n"
"     administrators for further details.\n"
"     "
msgstr ""

#: ../common/rhnException.py:157
msgid "You can not unsubscribe from base channel."
msgstr ""

#: ../common/rhnException.py:158
msgid "SUSE Manager or Proxy channel can not be subscribed."
msgstr ""

#. 80-90: server group errors
#: ../common/rhnException.py:161
msgid "There was an error while trying to join the system to its groups"
msgstr ""

#. 90-100: entitlement errors
#: ../common/rhnException.py:164
msgid "Unable to entitle system"
msgstr ""

#. 100-109: e-mail and uuid related faults
#: ../common/rhnException.py:167
msgid "Maximum e-mail length violation."
msgstr ""

#: ../common/rhnException.py:168
msgid "This system has been previously registered."
msgstr ""

#: ../common/rhnException.py:169
msgid "Invalid username"
msgstr ""

#. 140-159 applet errors
#: ../common/rhnException.py:172
msgid "Unable to look up server"
msgstr ""

#. 160-179: OSAD errors
#: ../common/rhnException.py:175
msgid "Required argument is missing"
msgstr ""

#. 600-699: RHEL5+ EN errors
#: ../common/rhnException.py:178
msgid "No entitlement information tied to hardware"
msgstr ""

#: ../common/rhnException.py:179
msgid "Installation number is not entitling"
msgstr ""

#. 700-799: Additional user input verification errors.
#: ../common/rhnException.py:182
msgid "Maximum username length violation"
msgstr ""

#: ../common/rhnException.py:183
msgid "Maximum password length violation"
msgstr ""

#: ../common/rhnException.py:184
msgid "This user has read only API access. Action denied."
msgstr ""

#: ../common/rhnException.py:186
msgid "System Name cannot be less than 1 character"
msgstr ""

#. 1000-1999: Proxy specific errors:
#. issued by a Proxy to the client
#: ../common/rhnException.py:190
msgid "SUSE Manager Proxy error."
msgstr ""

#: ../common/rhnException.py:191
msgid "SUSE Manager Proxy unable to login."
msgstr ""

#. issued by a SUSE Manager Server/Satellite to the proxy
#: ../common/rhnException.py:193
msgid ""
"\n"
"     SUSE Manager Proxy system ID does not match a Spacewalk Proxy Server\n"
"     in the database.\n"
"     "
msgstr ""

#: ../common/rhnException.py:197
msgid "SUSE Manager Proxy session token is invalid."
msgstr ""

#: ../common/rhnException.py:198
msgid "SUSE Manager Proxy session token has expired."
msgstr ""

#. 2000-2999: Red Hat Satellite specific errors:
#: ../common/rhnException.py:202
msgid ""
"\n"
"      user creation is not allowed via mgr_register;\n"
"     please contact your sysadmin to have your account created.\n"
"     "
msgstr ""

#: ../common/rhnException.py:206
msgid ""
"\n"
"     This SUSE Manager server is not allowed to use Inter Server Sync on "
"this server\n"
"     "
msgstr ""

#: ../common/rhnException.py:209
msgid ""
"\n"
"     Inter Server Sync is disabled on this SUSE Manager Server.\n"
"     "
msgstr ""

#. 3000-3999: XML dumper errors:
#: ../common/rhnException.py:214
msgid "Invalid datatype passed"
msgstr ""

#: ../common/rhnException.py:215
msgid "Unable to retrieve channel"
msgstr ""

#: ../common/rhnException.py:216
msgid "Unable to retrieve package"
msgstr ""

#: ../common/rhnException.py:217
msgid "Unable to retrieve erratum"
msgstr ""

#: ../common/rhnException.py:218
msgid "File is missing"
msgstr ""

#: ../common/rhnException.py:219
msgid "Function retrieval error"
msgstr ""

#: ../common/rhnException.py:220
msgid "Function execution error"
msgstr ""

#: ../common/rhnException.py:221
msgid "Missing version string"
msgstr ""

#: ../common/rhnException.py:222
msgid "Invalid version string"
msgstr ""

#: ../common/rhnException.py:223
msgid "Mismatching versions"
msgstr ""

#: ../common/rhnException.py:224
msgid "Invalid channel version"
msgstr ""

#: ../common/rhnException.py:225
msgid "No comps file for channel"
msgstr ""

#: ../common/rhnException.py:226
msgid "Unable to retrieve comps file"
msgstr ""

#. 4000 - 4999: config management errors
#: ../common/rhnException.py:229
msgid "Configuration action missing"
msgstr ""

#: ../common/rhnException.py:230
msgid "File too large"
msgstr ""

#: ../common/rhnException.py:231
msgid "File contains binary data"
msgstr ""

#: ../common/rhnException.py:232
msgid "Configuration channel is not empty"
msgstr ""

#: ../common/rhnException.py:233
msgid "Permission error"
msgstr ""

#: ../common/rhnException.py:234
msgid "Content missing for configuration file"
msgstr ""

#: ../common/rhnException.py:235
msgid "Template delimiters not specified"
msgstr ""

#: ../common/rhnException.py:236
msgid "Configuration channel does not exist"
msgstr ""

#: ../common/rhnException.py:237
msgid "Configuration channel already exists"
msgstr ""

#: ../common/rhnException.py:238
msgid "File missing from configuration channel"
msgstr ""

#: ../common/rhnException.py:239
msgid "Different revision of this file is uploaded"
msgstr ""

#: ../common/rhnException.py:240
msgid "File already uploaded to configuration channel"
msgstr ""

#: ../common/rhnException.py:241
msgid "File size exceeds remaining quota space"
msgstr ""

#: ../common/rhnException.py:242
msgid "Full path of file must be specified"
msgstr ""

#: ../common/rhnException.py:243
msgid "Invalid revision number"
msgstr ""

#: ../common/rhnException.py:244
msgid "Cannot compare files of different file type"
msgstr ""

#. 5000 - 5999: client content uploading errors
#. 5000 - 5099: crash reporting errors
#: ../common/rhnException.py:248
msgid "Crash information is invalid or incomplete"
msgstr ""

#: ../common/rhnException.py:249
msgid "Crash file information is invalid or incomplete"
msgstr ""

#: ../common/rhnException.py:250
msgid "Error composing crash directory path"
msgstr ""

#: ../common/rhnException.py:251
msgid "Error composing crash file path"
msgstr ""

#: ../common/rhnException.py:252 ../common/rhnException.py:259
msgid "Invalid content encoding"
msgstr ""

#: ../common/rhnException.py:253
msgid "Invalid crash name"
msgstr ""

#: ../common/rhnException.py:254
msgid "Crash reporting is disabled for this organization"
msgstr ""

#. 5100 - 5199: scap results reporting error
#: ../common/rhnException.py:256
msgid "SCAP results file transfer is invalid or incomplete"
msgstr ""

#: ../common/rhnException.py:257
msgid "Error composing directory path for detailed SCAP results"
msgstr ""

#: ../common/rhnException.py:258
msgid "Error composing file path for detailed SCAP results"
msgstr ""

#: ../common/rhnException.py:306
msgid ""
"\n"
"     An error has occurred while processing your request. If this problem\n"
"     persists please enter a bug report at scc.suse.com.\n"
"     If you choose to submit the bug report, please be sure to include\n"
"     details of what you were trying to do when this error occurred and\n"
"     details on how to reproduce this problem.\n"
msgstr ""

#: ../common/rhnException.py:358
#, python-format
msgid ""
"Error Message:\n"
"    %s\n"
msgstr ""

#: ../common/rhnException.py:360
#, python-format
msgid "Error Class Code: %s\n"
msgstr ""

#: ../common/rhnException.py:363
#, python-format
msgid "Error Class Info: %s\n"
msgstr ""

#: ../common/rhnException.py:365
#, python-format
msgid "Explanation: %s"
msgstr ""

#: ../common/rhnTB.py:205
#, python-format
msgid "ERROR: %s %s: %s"
msgstr ""

#: ../common/rhnTB.py:207
#, python-format
msgid "TRACEBACK: %s"
msgstr ""

#: ../satellite_tools/disk_dumper/iss.py:1294
#: ../satellite_tools/disk_dumper/iss.py:1298
#, python-format
msgid "format of %s should be at least YYYYMMDD.\n"
msgstr ""

#: ../satellite_tools/messages.py:26
#, python-format
msgid ""
"\n"
"ERROR: executing step %s. Error is:\n"
"%s\n"
msgstr ""

#: ../satellite_tools/messages.py:31
#, python-format
msgid ""
"\n"
"ERROR: there was a problem accessing the channel data from your temporary\n"
"       repository. Did you migrate all of the data from the channel ISOs\n"
"       do this directory? If so, please recheck the channels ISOs, ensure\n"
"       that you have them all, and then iteratively remount and repopulate\n"
"       the temporary repository (%s).\n"
msgstr ""

#: ../satellite_tools/messages.py:39
#, python-format
msgid ""
"\n"
"ERROR: there was a problem synchronizing the information.\n"
"       Error message: %s\n"
msgstr ""

#: ../satellite_tools/messages.py:44
#, python-format
msgid ""
"\n"
"ERROR: There was a problem communicating with the ISS Master.\n"
"       Depending on the specific error details, please review your "
"configuration,\n"
"       basic network connectivity, and/or name resolution, and try again.\n"
"       Error message: %s\n"
msgstr ""

#: ../satellite_tools/messages.py:51
#, python-format
msgid ""
"\n"
"ERROR: There was a problem communicating with the ISS Master.\n"
"       If the master satellite is older than v5.3, it does not have ISS "
"capability.\n"
"       Otherwise, depending on the specific error details, please review "
"your\n"
"       configuration, basic network connectivity, and/or name resolution, "
"and try again.\n"
"       Error message: %s\n"
msgstr ""

#: ../satellite_tools/messages.py:59
#, python-format
msgid ""
"\n"
"ERROR: a child-channel cannot be synced without its parent being synced as\n"
"       well. A parent needs to be either (a) previously synced or (b) "
"synced\n"
"       in tandem with the desired child-channel. Missing parents for this\n"
"       transaction:\n"
"       %s\n"
msgstr ""

#: ../satellite_tools/messages.py:67
#, python-format
msgid ""
"\n"
"ERROR: you are not entitled to sync a channel in this set of channels.\n"
"Please contact your SUSE Manager contact\n"
"%s"
msgstr ""

#: ../satellite_tools/messages.py:72
#, python-format
msgid "  ERROR: not enough free space (%s KB) on device."
msgstr ""

#: ../satellite_tools/messages.py:74
#, python-format
msgid "    %3d/%s Fetch successful: %s (%s bytes)"
msgstr ""

#: ../satellite_tools/messages.py:75
#, python-format
msgid "    Extinct package:  %s"
msgstr ""

#: ../satellite_tools/messages.py:76
#, python-format
msgid "   Total size: %s"
msgstr ""

#: ../satellite_tools/messages.py:77
#, python-format
msgid "      Downloaded %s of %s. Estimated remaining time: %s"
msgstr ""

#: ../satellite_tools/messages.py:78
#, python-format
msgid "    Fetch unsuccessful: %s"
msgstr ""

#: ../satellite_tools/messages.py:79
#, python-format
msgid "   RPM fetch summary: %s"
msgstr ""

#: ../satellite_tools/messages.py:80
#, python-format
msgid "       success: %d"
msgstr ""

#: ../satellite_tools/messages.py:81
#, python-format
msgid "       failed:  %d"
msgstr ""

#: ../satellite_tools/messages.py:82
#, python-format
msgid "       extinct: %d"
msgstr ""

#: ../satellite_tools/messages.py:84
#, python-format
msgid "   Retrieving / parsing *relevant* package metadata: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:85
#, python-format
msgid "   Retrieving / parsing errata data: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:86
#, python-format
msgid "   Retrieving / parsing kickstart data: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:87
#, python-format
msgid "   Retrieving / parsing kickstart tree files: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:88
#, python-format
msgid "   Importing *relevant* package metadata: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:89
msgid "   * WARNING: this may be a slow process."
msgstr ""

#: ../satellite_tools/messages.py:90
msgid "Linking packages to channels"
msgstr ""

#: ../satellite_tools/messages.py:91
#, python-format
msgid "   Importing *relevant* errata: %s (%s)"
msgstr ""

#: ../satellite_tools/messages.py:92
msgid "   No new kickstartable tree to import"
msgstr ""

#: ../satellite_tools/messages.py:93
#, python-format
msgid "Importing kickstartable trees (%d)"
msgstr ""

#: ../satellite_tools/messages.py:94
#, python-format
msgid "Imported kickstartable trees (%d)"
msgstr ""

#: ../satellite_tools/reposync.py:111 ../satellite_tools/satsync.py:439
msgid "+++ sending log as an email +++"
msgstr ""

#: ../satellite_tools/reposync.py:114
#, python-format
msgid "%s sync. report from %s"
msgstr ""

#: ../satellite_tools/reposync.py:124 ../satellite_tools/satsync.py:449
msgid "+++ email requested, but there is nothing to send +++"
msgstr ""

#: ../satellite_tools/rhn_satellite_activate.py:198
#, python-format
msgid ""
"\"%s\" (specified in commandline)\n"
"could not be opened and read:\n"
"%s"
msgstr ""

#: ../satellite_tools/rhn_satellite_activate.py:205
#, python-format
msgid ""
"\"%s\" could not be opened\n"
"and/or written to:\n"
"%s"
msgstr ""

#: ../satellite_tools/satsync.py:258
#, python-format
msgid "No handler for step %s"
msgstr ""

#. Try one more time - this time it should be faster since
#. everything should be cached
#: ../satellite_tools/satsync.py:270
msgid "Environment changed, trying again..."
msgstr ""

#: ../satellite_tools/satsync.py:277
msgid "ERROR: Encountered IntegrityError: \n"
msgstr ""

#: ../satellite_tools/satsync.py:285
msgid "Repeated failures"
msgstr ""

#: ../satellite_tools/satsync.py:290
#, python-format
msgid ""
"    Import complete:\n"
"        Begin time: %s\n"
"        End time:   %s\n"
"        Elapsed:    %s\n"
"          "
msgstr ""

#: ../satellite_tools/satsync.py:311
msgid "hours"
msgstr ""

#: ../satellite_tools/satsync.py:311
msgid "minutes"
msgstr ""

#: ../satellite_tools/satsync.py:311
msgid "seconds"
msgstr ""

#: ../satellite_tools/satsync.py:357
msgid ""
"ERROR: The dump is missing package data, use --no-rpms to skip this step or "
"fix the content to include package data."
msgstr ""

#. the orgs() method doesn't exist; that's fine we just
#. won't sync the orgs
#: ../satellite_tools/satsync.py:404
msgid "The SUSE Manager master does not support syncing orgs data."
msgstr ""

#: ../satellite_tools/satsync.py:404
msgid "Skipping..."
msgstr ""

#: ../satellite_tools/satsync.py:442
#, python-format
msgid "SUSE Manager Inter Server sync. report from %s"
msgstr ""

#: ../satellite_tools/satsync.py:521
msgid " - file-system synchronization"
msgstr ""

#: ../satellite_tools/satsync.py:533 ../satellite_tools/satsync.py:541
msgid " - live synchronization"
msgstr ""

#: ../satellite_tools/satsync.py:534
#, python-brace-format
msgid ""
"ERROR: Live content synchronizing with RHN Classic Hosted is no longer "
"supported.\n"
"Please use the cdn-sync command instead unless you are attempting to sync "
"from another {PRODUCT_NAME} via Inter-Server-Sync (ISS), or from local "
"content on disk via Channel Dump ISOs."
msgstr ""

#: ../satellite_tools/satsync.py:542
#, python-format
msgid "   url: %s"
msgstr ""

#: ../satellite_tools/satsync.py:543
#, python-format
msgid "   debug/output level: %s"
msgstr ""

#: ../satellite_tools/satsync.py:553
msgid "ERROR: this server must be registered with SUSE Manager."
msgstr ""

#: ../satellite_tools/satsync.py:575
#, python-format
msgid "Retrieving / parsing %s data"
msgstr ""

#: ../satellite_tools/satsync.py:585 ../satellite_tools/satsync.py:600
msgid "*** SYSTEM INTERRUPT CALLED ***"
msgstr ""

#: ../satellite_tools/satsync.py:593
msgid "ERROR: fatal parser exception occurred "
msgstr ""

#: ../satellite_tools/satsync.py:594
#, python-format
msgid "(line: %s, col: %s msg: %s)"
msgstr ""

#: ../satellite_tools/satsync.py:598
#, python-format
msgid "ERROR: parser exception occurred: %s"
msgstr ""

#: ../satellite_tools/satsync.py:603
msgid "ERROR: exception (during parse) occurred: "
msgstr ""

#: ../satellite_tools/satsync.py:604
#, python-format
msgid ""
"   Encountered some errors with %s data (see logs (%s) for more information)"
msgstr ""

#: ../satellite_tools/satsync.py:606
#, python-format
msgid "   Encountered some errors with %s data:"
msgstr ""

#: ../satellite_tools/satsync.py:607
#, python-format
msgid "   ------- %s PARSE/IMPORT ERROR -------"
msgstr ""

#: ../satellite_tools/satsync.py:609
msgid "   ---------------------------------------"
msgstr ""

#: ../satellite_tools/satsync.py:612
#, python-format
msgid "%s data complete"
msgstr ""

#: ../satellite_tools/satsync.py:665
msgid "Retrieving / parsing channel data"
msgstr ""

#: ../satellite_tools/satsync.py:718
msgid "Channel data complete"
msgstr ""

#: ../satellite_tools/satsync.py:736
#, python-format
msgid "%10s import from %s"
msgstr ""

#: ../satellite_tools/satsync.py:739
#, python-format
msgid "%10s import from %s - %s"
msgstr ""

#: ../satellite_tools/satsync.py:743
#, python-format
msgid "%10s"
msgstr ""

#: ../satellite_tools/satsync.py:750
msgid "p"
msgstr ""

#: ../satellite_tools/satsync.py:752
msgid "."
msgstr ""

#: ../satellite_tools/satsync.py:758
msgid "   p = previously imported/synced channel"
msgstr ""

#: ../satellite_tools/satsync.py:759
msgid "   . = channel not yet imported/synced"
msgstr ""

#: ../satellite_tools/satsync.py:765
msgid "   e = channel no longer supported (end-of-service)"
msgstr ""

#: ../satellite_tools/satsync.py:767
msgid "   ? = channel label invalid --- typo?"
msgstr ""

#: ../satellite_tools/satsync.py:771
#, python-format
msgid "   %s:"
msgstr ""

#: ../satellite_tools/satsync.py:772
#, python-format
msgid "      %s %-40s %4s %s"
msgstr ""

#: ../satellite_tools/satsync.py:773
msgid "base-channels"
msgstr ""

#: ../satellite_tools/satsync.py:786 ../satellite_tools/satsync.py:1603
msgid "NONE RELEVANT"
msgstr ""

#: ../satellite_tools/satsync.py:808
msgid "end-of-service"
msgstr ""

#: ../satellite_tools/satsync.py:809
msgid "e"
msgstr ""

#: ../satellite_tools/satsync.py:815
msgid "   typos:"
msgstr ""

#: ../satellite_tools/satsync.py:816
msgid "?"
msgstr ""

#: ../satellite_tools/satsync.py:831
#, python-format
msgid "XXX: imported channels: %s"
msgstr ""

#: ../satellite_tools/satsync.py:832
#, python-format
msgid "XXX:   cached channels: %s"
msgstr ""

#: ../satellite_tools/satsync.py:837
msgid "XXX: list channels called"
msgstr ""

#: ../satellite_tools/satsync.py:855
msgid "ERROR: these channels either do not exist or are not available:"
msgstr ""

#: ../satellite_tools/satsync.py:859
#, python-format
msgid "       (to see a list of channel labels: %s --list-channels)"
msgstr ""

#: ../satellite_tools/satsync.py:904
#, python-format
msgid "   Retrieving / parsing short package metadata: %s (%s)"
msgstr ""

#: ../satellite_tools/satsync.py:965
#, python-format
msgid "Diffing package metadata (what's missing locally?): %s"
msgstr ""

#: ../satellite_tools/satsync.py:971 ../satellite_tools/satsync.py:1254
msgid "Diffing:    "
msgstr ""

#: ../satellite_tools/satsync.py:988
msgid "ERROR: incremental dump skipped"
msgstr ""

#: ../satellite_tools/satsync.py:1079
msgid "Downloading rpm packages"
msgstr ""

#: ../satellite_tools/satsync.py:1084
#, python-format
msgid "   Fetching any missing RPMs: %s (%s)"
msgstr ""

#: ../satellite_tools/satsync.py:1085 ../satellite_tools/satsync.py:1153
msgid "NONE MISSING"
msgstr ""

#: ../satellite_tools/satsync.py:1094
msgid "Processing rpm packages complete"
msgstr ""

#: ../satellite_tools/satsync.py:1121
msgid "Downloading package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1146
msgid "Downloading srpm packages"
msgstr ""

#: ../satellite_tools/satsync.py:1152
#, python-format
msgid "   Fetching any missing SRPMs: %s (%s)"
msgstr ""

#: ../satellite_tools/satsync.py:1249
#, python-format
msgid "Diffing source package metadata (what's missing locally?): %s"
msgstr ""

#: ../satellite_tools/satsync.py:1260
msgid "Downloading source package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1338 ../satellite_tools/satsync.py:2027
#, python-format
msgid "Unable to save file %s: %s"
msgstr ""

#. for
#. Retried a number of times and it still failed; log the
#. file as being failed and move on
#: ../satellite_tools/satsync.py:1345
#, python-format
msgid "Failed to fetch file %s"
msgstr ""

#: ../satellite_tools/satsync.py:1350
msgid "Downloading kickstartable trees metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1365
msgid "Downloading kickstartable trees files"
msgstr ""

#: ../satellite_tools/satsync.py:1504
#, python-format
msgid "Grabbing all patches for channel %s"
msgstr ""

#: ../satellite_tools/satsync.py:1554
msgid "Downloading patch data"
msgstr ""

#: ../satellite_tools/satsync.py:1556
msgid "Forcing download of all patch data for requested channels."
msgstr ""

#: ../satellite_tools/satsync.py:1571
msgid "Downloading patch data complete"
msgstr ""

#: ../satellite_tools/satsync.py:1576 ../satellite_tools/satsync.py:1597
msgid "Downloading:"
msgstr ""

#: ../satellite_tools/satsync.py:1579
msgid " - complete"
msgstr ""

#: ../satellite_tools/satsync.py:1624
msgid "Importing source package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1627
msgid "Importing package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:1635
msgid "Importing:  "
msgstr ""

#. not in the cache
#: ../satellite_tools/satsync.py:1703
msgid ""
"Package Not Found in Cache, Clear the Cache "
"to                                  Regenerate it."
msgstr ""

#: ../satellite_tools/satsync.py:1709
msgid "Importing channel patches"
msgstr ""

#: ../satellite_tools/satsync.py:1714
#, python-format
msgid "Importing %s patches for channel %s."
msgstr ""

#. Incomplete configuration
#: ../satellite_tools/satsync.py:2113
msgid "ERROR: server.mount_point not set in the configuration file"
msgstr ""

#: ../satellite_tools/satsync.py:2117
#, python-format
msgid "ERROR: server.mount_point %s do not exist"
msgstr ""

#: ../satellite_tools/satsync.py:2122
#, python-format
msgid "ERROR: path under server.mount_point (%s)  do not exist"
msgstr ""

#: ../satellite_tools/satsync.py:2199
#, python-format
msgid "Commandline: %s"
msgstr ""

#: ../satellite_tools/satsync.py:2202
#, python-format
msgid ""
"DEBUG ONLY: max. batch-size for XML/database-import processing (1..%s).\"man "
"satellite-sync\" for more information."
msgstr ""

#: ../satellite_tools/satsync.py:2205
msgid "alternative SSL CA Cert (fullpath to cert file)"
msgstr ""

#: ../satellite_tools/satsync.py:2207
msgid "process data for this channel only"
msgstr ""

#: ../satellite_tools/satsync.py:2209
msgid ""
"disk dump will be considered to be a full export; see \"man satellite-sync\" "
"for more information."
msgstr ""

#: ../satellite_tools/satsync.py:2212
msgid "existing custom channels will also be synced (unless -c is used)"
msgstr ""

#: ../satellite_tools/satsync.py:2214
#, python-format
msgid ""
"override debug level set in /etc/rhn/rhn.conf (which is currently set at %s)."
msgstr ""

#: ../satellite_tools/satsync.py:2216
#, python-format
msgid "requested version of XML dump (default: %s)"
msgstr ""

#: ../satellite_tools/satsync.py:2218
msgid "e-mail a report of what was synced/imported"
msgstr ""

#: ../satellite_tools/satsync.py:2220
msgid "forcibly process all (not a diff of) patch metadata"
msgstr ""

#: ../satellite_tools/satsync.py:2222
msgid "Do not use an http proxy under any circumstances."
msgstr ""

#: ../satellite_tools/satsync.py:2224
msgid "alternative http proxy (hostname:port)"
msgstr ""

#: ../satellite_tools/satsync.py:2226
msgid "alternative http proxy username"
msgstr ""

#: ../satellite_tools/satsync.py:2228
msgid "alternative http proxy password"
msgstr ""

#: ../satellite_tools/satsync.py:2230
msgid "parent SUSE Manager to import content from"
msgstr ""

#: ../satellite_tools/satsync.py:2232
msgid "list all available channels and exit"
msgstr ""

#: ../satellite_tools/satsync.py:2234
msgid "help on all error codes mgr-inter-sync returns"
msgstr ""

#: ../satellite_tools/satsync.py:2236
msgid "source mount point for import - disk update only"
msgstr ""

#: ../satellite_tools/satsync.py:2238
msgid "do not process patch data"
msgstr ""

#: ../satellite_tools/satsync.py:2240
msgid "do not process kickstart data (provisioning only)"
msgstr ""

#: ../satellite_tools/satsync.py:2242
msgid "do not process full package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:2244
msgid "do not download, or process any RPMs"
msgstr ""

#: ../satellite_tools/satsync.py:2246
msgid "turn off SSL (not recommended)"
msgstr ""

#: ../satellite_tools/satsync.py:2248
msgid "org to which the sync imports data. defaults to the admin account"
msgstr ""

#: ../satellite_tools/satsync.py:2250
msgid "print the configuration and exit"
msgstr ""

#: ../satellite_tools/satsync.py:2252
msgid "alternative server with which to connect (hostname)"
msgstr ""

#: ../satellite_tools/satsync.py:2254
msgid "synchronize to this step (man satellite-sync for more info)"
msgstr ""

#: ../satellite_tools/satsync.py:2256
msgid "write complete data to tempfile before streaming to remainder of app"
msgstr ""

#: ../satellite_tools/satsync.py:2258
msgid "DEBUG ONLY: alternative path to digital system id"
msgstr ""

#: ../satellite_tools/satsync.py:2260
msgid "alternative email address(es) for sync output (--email option)"
msgstr ""

#: ../satellite_tools/satsync.py:2262
msgid "do not remove rpms when importing from local dump"
msgstr ""

#: ../satellite_tools/satsync.py:2264
msgid ""
"the fully qualified domain name of the master Satellite. Valid with --mount-"
"point only. Required if you want to import org data and channel permissions."
msgstr ""

#: ../satellite_tools/satsync.py:2274
#, python-format
msgid "ERROR: these arguments make no sense in this context (try --help): %s"
msgstr ""

#. An SQL error is fatal... crash and burn
#: ../satellite_tools/satsync.py:2286
#, python-format
msgid "ERROR: Can't connect to the database: %s"
msgstr ""

#: ../satellite_tools/satsync.py:2287
msgid "ERROR: Check if your database is running."
msgstr ""

#: ../satellite_tools/satsync.py:2322
#, python-format
msgid "ERROR: --debug-level takes an in integer value within the range %s."
msgstr ""

#: ../satellite_tools/satsync.py:2324
msgid "  0  - little logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2325
msgid "  1  - minimal logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2326
msgid "  2  - normal level of logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2327
msgid "  3  - lots of logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2328
msgid "  4+ - excessive logging/messaging."
msgstr ""

#: ../satellite_tools/satsync.py:2341
msgid "ERROR: The --master option is only valid with the --mount-point option"
msgstr ""

#: ../satellite_tools/satsync.py:2351
#, python-format
msgid "ERROR: Unable to lookup Org Id %s"
msgstr ""

#: ../satellite_tools/satsync.py:2360
msgid ""
"WARNING: --list-channels option overrides any --step option. --step ignored."
msgstr ""

#: ../satellite_tools/satsync.py:2375
#, python-format
msgid ""
"ERROR: '%s' is not a valid step. See 'man mgr-inter-sync' for more detail."
msgstr ""

#: ../satellite_tools/satsync.py:2407
msgid ""
"ERROR: No channels currently imported; try mgr-inter-sync --list-channels; "
"then mgr-inter-sync -c chn0 -c chn1..."
msgstr ""

#. int(None) --> TypeError
#. int('a')  --> ValueError
#: ../satellite_tools/satsync.py:2457 ../satellite_tools/satsync.py:2461
msgid "ERROR: --batch-size must have a value within the range: 1..50"
msgstr ""

#: ../satellite_tools/satsync.py:2469
#, python-format
msgid "ERROR: no such directory %s"
msgstr ""

#: ../satellite_tools/satsync.py:2474
msgid "Error Codes: Returned codes means:"
msgstr ""

#: ../satellite_tools/satsync.py:2475
msgid " -1  - Could not lock file or KeyboardInterrupt or SystemExit"
msgstr ""

#: ../satellite_tools/satsync.py:2476
msgid "  0  - User interrupted or intentional exit"
msgstr ""

#: ../satellite_tools/satsync.py:2477
msgid "  1  - attempting to run more than one instance of mgr-inter-sync."
msgstr ""

#: ../satellite_tools/satsync.py:2478
msgid "  2  - Unable to find synchronization tools."
msgstr ""

#: ../satellite_tools/satsync.py:2479
msgid "  3  - a general socket exception occurred"
msgstr ""

#: ../satellite_tools/satsync.py:2480
msgid "  4  - an SSL error occurred. Recheck your SSL settings."
msgstr ""

#: ../satellite_tools/satsync.py:2481
msgid "  5  - ISS error"
msgstr ""

#: ../satellite_tools/satsync.py:2482
msgid "  6  - unhandled exception occurred"
msgstr ""

#: ../satellite_tools/satsync.py:2483
msgid "  7  - unknown sync error"
msgstr ""

#: ../satellite_tools/satsync.py:2484
msgid "  8  - ERROR: must be root to execute"
msgstr ""

#: ../satellite_tools/satsync.py:2485
msgid "  9  - rpclib fault during synchronization init"
msgstr ""

#: ../satellite_tools/satsync.py:2486
msgid "  10 - synchronization init error"
msgstr ""

#: ../satellite_tools/satsync.py:2487
msgid "  11 - Error parsing XML stream"
msgstr ""

#: ../satellite_tools/satsync.py:2488
msgid "  12 - Channel do not exist"
msgstr ""

#: ../satellite_tools/satsync.py:2489
msgid "  13 - SQL error during importing package metadata"
msgstr ""

#: ../satellite_tools/satsync.py:2490
msgid "  14 - SQL error during linking channel packages"
msgstr ""

#: ../satellite_tools/satsync.py:2491
msgid "  15 - SQL error during xml processing"
msgstr ""

#: ../satellite_tools/satsync.py:2492
msgid "  16 - server.mount_point not set in the configuration file"
msgstr ""

#: ../satellite_tools/satsync.py:2493
msgid ""
"  17 - SQL error during retrieving the channels already imported in the SUSE "
"Manager database"
msgstr ""

#: ../satellite_tools/satsync.py:2494
msgid "  18 - Wrong db connection string in rhn.conf"
msgstr ""

#: ../satellite_tools/satsync.py:2495
msgid "  19 - Bad arguments"
msgstr ""

#: ../satellite_tools/satsync.py:2496
msgid "  20 - Could not connect to db."
msgstr ""

#: ../satellite_tools/satsync.py:2497
msgid "  21 - Bad debug level"
msgstr ""

#: ../satellite_tools/satsync.py:2498
msgid "  22 - Not valid step"
msgstr ""

#: ../satellite_tools/satsync.py:2499
msgid "  24 - no such file"
msgstr ""

#: ../satellite_tools/satsync.py:2500
msgid "  25 - no such directory"
msgstr ""

#: ../satellite_tools/satsync.py:2501
msgid "  26 - mount_point does not exist"
msgstr ""

#: ../satellite_tools/satsync.py:2502
msgid "  27 - No such org"
msgstr ""

#: ../satellite_tools/satsync.py:2503
msgid "  28 - error: --master is only valid with --mount-point"
msgstr ""

#: ../satellite_tools/satsync.py:2510
#, python-format
msgid "ERROR: unknown dump version, try one of %s"
msgstr ""
 0707010000009A000081B40000000000000000000000016290A0C100000E51000000000000000000000000000000000000001B00000000spacewalk-backend/pylintrc    # Backend Pylint configuration

[MASTER]

# Profiled execution.
profile=no

# Pickle collected data for later comparisons.
persistent=no


[MESSAGES CONTROL]

# Disable the message(s) with the given id(s).
disable=I0011,
	C0302,
	C0111,
	R0801,
	R0902,
	R0903,
	R0904,
	R0912,
	R0913,
	R0914,
	R0915,
	R0921,
	R0922,
	W0142,
	W0403,
	W0603,
	C1001,
	W0121,
	useless-else-on-loop,
	bad-whitespace,
	unpacking-non-sequence,
	superfluous-parens,
	cyclic-import,
	redefined-variable-type,
	no-else-return

[REPORTS]

# Set the output format. Available formats are text, parseable, colorized, msvs
# (visual studio) and html
output-format=parseable

# Include message's id in output
include-ids=yes

# Tells whether to display a full report or only the messages
reports=yes

# Template used to display messages. This is a python new-style format string
# used to format the message information. See doc for all details
msg-template="{path}:{line}: [{msg_id}({symbol}), {obj}] {msg}"


[VARIABLES]

# A regular expression matching names used for dummy variables (i.e. not used).
dummy-variables-rgx=_|dummy


[BASIC]

# Regular expression which should only match correct module names
#module-rgx=(([a-z_][a-z0-9_]*)|([A-Z][a-zA-Z0-9]+))$
module-rgx=([a-zA-Z_][a-zA-Z0-9_]+)$

# Regular expression which should only match correct module level names
const-rgx=(([a-zA-Z_][a-zA-Z0-9_]*)|(__.*__))$

# Regular expression which should only match correct class names
class-rgx=[a-zA-Z_][a-zA-Z0-9_]+$

# Regular expression which should only match correct function names
function-rgx=[a-z_][a-zA-Z0-9_]{,42}$

# Regular expression which should only match correct method names
method-rgx=[a-z_][a-zA-Z0-9_]{,42}$

# Regular expression which should only match correct instance attribute names
attr-rgx=[a-z_][a-zA-Z0-9_]{,30}$

# Regular expression which should only match correct argument names
argument-rgx=[a-z_][a-zA-Z0-9_]{,30}$

# Regular expression which should only match correct variable names
variable-rgx=[a-z_][a-zA-Z0-9_]{,30}$

# Regular expression which should only match correct list comprehension /
# generator expression variable names
inlinevar-rgx=[A-Za-z_][A-Za-z0-9_]*$

# Regular expression which should only match correct class sttribute names
class-attribute-rgx=([A-Za-z_][A-Za-z0-9_]{2,42}|(__.*__))$

# Good variable names which should always be accepted, separated by a comma
good-names=i,j,k,ex,Run,_

# Bad variable names which should always be refused, separated by a comma
bad-names=foo,bar,baz,toto,tutu,tata

# List of builtins function names that should not be used, separated by a comma
bad-functions=apply,input


[DESIGN]

# Maximum number of arguments for function / method
max-args=10

# Maximum number of locals for function / method body
max-locals=20

# Maximum number of return / yield for function / method body
max-returns=6

# Maximum number of branch for function / method body
max-branchs=20

# Maximum number of statements in function / method body
max-statements=50

# Maximum number of parents for a class (see R0901).
max-parents=7

# Maximum number of attributes for a class (see R0902).
max-attributes=7

# Minimum number of public methods for a class (see R0903).
min-public-methods=1

# Maximum number of public methods for a class (see R0904).
max-public-methods=20


[CLASSES]


[FORMAT]

# Maximum number of characters on a single line.
max-line-length=120

# Maximum number of lines in a module
max-module-lines=1000

# String used as indentation unit. This is usually " " (4 spaces) or "\t" (1
# tab).
indent-string='    '


[MISCELLANEOUS]

# List of note tags to take in consideration, separated by a comma.
notes=
   0707010000009B000041FD0000000000000000000000016290A0C100000000000000000000000000000000000000000000001B00000000spacewalk-backend/rhn-conf    0707010000009C000081B40000000000000000000000016290A0C100000101000000000000000000000000000000000000002400000000spacewalk-backend/rhn-conf/Makefile   # Makefile for installation of the RHN server configuration files
#

# what is the backend top dir
TOP	= ..

INSTALL_FILES	= $(wildcard *.conf)
INSTALL_DEST	= /usr/share/rhn/config-defaults

include $(TOP)/Makefile.defs

install :: $(PREFIX)$(INSTALL_DEST)
   0707010000009D000081B40000000000000000000000016290A0C10000039E000000000000000000000000000000000000002400000000spacewalk-backend/rhn-conf/rhn.conf   # ** DO NOT EDIT **
# Default configuration options for the common code
#

#The product name
product_name = SUSE Manager

## unexposed
quiet_mail = 15

## exposed
debug = 1
traceback_mail = admin@example.com
log_file = /var/log/rhn/rhn.log

enable_snapshots = 1

## SSL for database (PostgreSQL) connection
db_ssl_enabled = 0
db_sslrootcert = /etc/rhn/postgresql-db-root-ca.cert

## apache document root dir
documentroot = #DOCUMENTROOT#

## apache config dir
httpd_config_dir = #HTTPD_CONFIG_DIR#

db_backend =
db_user =
db_password =
db_name =
db_host =
db_port =

# Adjust taskomatic jvm max memory 
# taskomatic.java.maxmemory=4096

# If set to 1 all generated repository metadata will be signed
sign_metadata = 0

# install types for which salt should be used for registration
salt_enabled_kickstart_install_types=rhel_8

# possible auto kick start package names(comma separated)
kickstart_packages = spacewalk-koan,salt
  0707010000009E000081B40000000000000000000000016290A0C100000D51000000000000000000000000000000000000002B00000000spacewalk-backend/rhn-conf/rhn_server.conf    # ** DO NOT EDIT **
# Spacewalk config for all backend receivers
#

### unexposed ###
log_file        = /var/log/rhn/rhn_server.log
buffer_size     = 16384
ca_chain        = /usr/share/rhn/RHNS-CA-CERT

# Name of parent for ISS.
# # If left blank rhn_parent is taken by default.
# # This option can be overriden on satellite-sync command line.
iss_parent      =
iss_ca_chain    = /usr/share/rhn/RHN-ORG-TRUSTED-SSL-CERT

# Enable package uploads for same nvrea but different vendors.
enable_nvrea = 1

# Force package upload from the client through rhnpush
force_package_upload = 0

# Session token timeouts
# an hour
client_auth_timeout = 3600.0
# 6 hours
proxy_auth_timeout = 21600.0

# rpclib connection timeout
timeout = 600

# Directory location of cached packages lists. (Created automatically)
pkg_list_dir = /var/up2date/list

# In HOURS, if throttling how long is the grace period for free users.
# 7 days
throttle_grace_period = 168.0

### exposed ###
debug           = 1
traceback_mail  = user@example.com
quiet_mail      = 15

# username/password control (not recommended to change)
min_passwd_len = 5
max_passwd_len = 32
min_user_len   = 3
max_user_len   = 64
max_email_len  = 128
# Do not allow usernames with these suffixes
disallowed_suffixes =

# DB configuration options
# NLS_LANG
nls_lang = english.UTF8

# Directory location of top of package tree:
mount_point = /pub

# allow users to be created via rhnapp server?
disallow_user_creation = 1

# Force encrypted passwords in the database
encrypted_passwords = 0

# The string that is prepended in front of the org_id/name/v-r/a/ path
prepended_dir = packages

# PAM authentication, turned off by default
pam_auth_service =

# System wide message filename and on/off flag
message_to_all = /etc/rhn/message_to_all.txt
send_message_to_all = 0

# Do we compress RPM headers?
compress_headers = 1

# Do we check for disablement of entire orgs?
#disabled_org_check = 0

qos = 0

throttle = 0

# Freeloader throttling (time based)
throttle_freeloaders = 0
freeloader_throttle_start = 9
freeloader_throttle_end = 21

# Don't throttle graced and falling-from-grace'd orgs?
grace_no_throttle = 0

# Update the state machine upon server registration?
join_rhn = 0


# email users if they register a box to an End Of Life base channel
send_eol_mail = 0

# have error messages refer to the www.redhat.com website for things
# like product activation, etc
refer_to_www = 0

# Session secrets
session_secret_1 =
session_secret_2 =
session_secret_3 =
session_secret_4 =

# Satellite install?
satellite = 1
disconnected = 0

# Maximum size for a config file
maximum_config_file_size = 131072

# Session lifetime in seconds
session_lifetime = 1800

# To be initialized by the installer
secret_key =
jabber_server =

# base channel reset by default.
# set to '0' if base channel needs to be preserved
reset_base_channel = 0

# location relative to mount point for yum repomd files
repomd_path_prefix = rhn/repodata

# Default to not using taskomatic for repomd
use_taskomatic_repomd = 1

# list of checksum types, most prefered first
checksum_priority_list = sha512, sha384, sha256, sha1, md5

# Decide whether xmlWireSource can unzip 'on the fly', or
# if it should write everything to a tempfile first
# 0 = on-the-fly (current behavior), 1 = to-tempfile-first
# (overridden by --sync-to-temp on satellite-sync)
sync_to_temp = 0

sync_source_packages = 0
   0707010000009F000081B40000000000000000000000016290A0C100000160000000000000000000000000000000000000002F00000000spacewalk-backend/rhn-conf/rhn_server_app.conf    # ** DO NOT EDIT **
# Spacewalk config for requests traveling through /APP receiver
#

## unexposed
log_file = /var/log/rhn/rhn_server_app.log

# If a channel contains more than this number of servers (in hosted), don't
# schedule the errata cache refresh; send an e-mail instead
max_channel_servers_for_errata_cache_refresh = 5000
## exposed
# -none-
070701000000A0000081B40000000000000000000000016290A0C10000010F000000000000000000000000000000000000003200000000spacewalk-backend/rhn-conf/rhn_server_applet.conf # ** DO NOT EDIT **
# Spacewalk config for requests traveling through the /APPLET receiver
#

log_file = /var/log/rhn/rhn_server_applet.log
# 15 min for the applet checkin
checkin_interval = 900
# 5 min max offset for the applet checkin
checkin_interval_max_offset = 300
 070701000000A1000081B40000000000000000000000016290A0C1000000D6000000000000000000000000000000000000004200000000spacewalk-backend/rhn-conf/rhn_server_config-management-tool.conf # ** DO NOT EDIT **
# Spacewalk config for requests traveling through /APP receiver
#

## unexposed
log_file = /var/log/rhn/rhn_config_management_tool.log

## exposed

config_delim_start = {|
config_delim_end = |}
  070701000000A2000081B40000000000000000000000016290A0C1000000D1000000000000000000000000000000000000003D00000000spacewalk-backend/rhn-conf/rhn_server_config-management.conf  # ** DO NOT EDIT **
# Spacewalk config for requests traveling through /APP receiver
#

## unexposed
log_file = /var/log/rhn/rhn_config_management.log

## exposed

config_delim_start = {|
config_delim_end = |}
   070701000000A3000081B40000000000000000000000016290A0C1000002BF000000000000000000000000000000000000002F00000000spacewalk-backend/rhn-conf/rhn_server_iss.conf    # ** DO NOT EDIT **
# Spacewalk config for requests traveling through the /SAT receiver
# ISS - Inter Spacewalk Sync
# variables which affects live synchronization between two Spacewalk or 
# between Satellite and hosted.

# newest XML dump version we can import
xml_dump_version = 3.6

sat_cert_generation = 2

# Completely disable ISS.
# If set to 1, then no slave will be able to sync from this server
# this option does not affect ability to sync to this server from 
# another spacewalk (or hosted).
disable_iss=0

# Spacewalk config for requests traveling through the /SAT receiver
# on the server-side of the connection.
log_file = /var/log/rhn/rhn_server_sat.log
satellite_auth_timeout = 7200.0
 070701000000A4000081B40000000000000000000000016290A0C100000478000000000000000000000000000000000000003500000000spacewalk-backend/rhn-conf/rhn_server_satellite.conf  # ** DO NOT EDIT **
# Configuration settings used by the Red Hat Satellite and the satellite-sync tool.
# (i.e., Red Hat Satellite specific)
#

# used by satellite/sync-tool:
log_file = /var/log/rhn/rhn_server_satellite.log

# Default mount point
mount_point = /var/spacewalk

# used by sync-tool:
rhn_metadata_handler = /SAT-DUMP
rhn_iss_metadata_handler = /SAT-DUMP-INTERNAL
rhn_xmlrpc_handler = /SAT
ca_chain = /usr/share/rhn/RHNS-CA-CERT
rhn_parent = satellite.rhn.redhat.com

sync_cache_dir = /var/cache/rhn/
http_proxy =
http_proxy_username =
http_proxy_password =
no_proxy =

# default cache_refresh_level
cache_refresh_level = 2

# max number of satellite-sync's before a full cache refresh occurs (level 6)
cache_refresh_count_max = 5

# dump version
xml_dump_version = 3.5

cdn_root = https://cdn.redhat.com

# override candlepin server API
# https://subscription.rhsm.redhat.com/subscription/consumers/
candlepin_server_api = 

# alternative sender of email reports from satellite-sync/cdn-sync/spacewalk-repo-sync
default_mail_from =

# reposync defaults
reposync_download_threads = 5
reposync_timeout = 300
reposync_minrate = 1000
070701000000A5000081B40000000000000000000000016290A0C100000060000000000000000000000000000000000000003200000000spacewalk-backend/rhn-conf/rhn_server_upload.conf # ** DO NOT EDIT **
# Spacewalk config for requests traveling through the package upload code
#
070701000000A6000081B40000000000000000000000016290A0C100000096000000000000000000000000000000000000003F00000000spacewalk-backend/rhn-conf/rhn_server_upload_package-push.conf    # ** DO NOT EDIT **
# Spacewalk config for requests traveling through the /PKG-UPLOAD receiver
#

log_file = /var/log/rhn/rhn_upload_package_push.log
  070701000000A7000081B40000000000000000000000016290A0C100000312000000000000000000000000000000000000003200000000spacewalk-backend/rhn-conf/rhn_server_xmlrpc.conf # ** DO NOT EDIT **
# Spacewalk config for requests traveling through the /XMLRPC receiver
#

log_file = /var/log/rhn/rhn_server_xmlrpc.log

# whether to disable package profiles
disable_packages = 0

# whether to disable checkins for high traffic actions (like queue.get)
disable_checkins = 0

# registration.finish_message stuff
# Finish message return code; defaults to 0 (no message shown)
# Other possible values are -1 and 1; see the commented code in
# xmlrpc/registration.py for more information
reg_finish_message_return_code = 0
# Title
reg_finish_message_title = 
# Text to display is taken from a file
reg_finish_message_text_file = /usr/share/rhn/registration.finish_message.txt

cache_package_headers = 1

entitlement_service_url =
regnum_service_url =
user_service_url =
  070701000000A8000081B40000000000000000000000016290A0C100000161000000000000000000000000000000000000002700000000spacewalk-backend/rhn-conf/signing.cnf    #
# GPG KEYID to sign with
# Note: The keyid must not include the length of the key, e.g. only "F24F1B08", not "1024D/F24F1B08"
#
KEYID=""

#
# GPG PASSPHRASE
#
GPGPASS=""

#
# GPG HOMEDIR (optional)
#
GNUPGHOME="/root/.gnupg"

#
# Digest algorithm to use when signing repo metadata.
# Note: Debian systems require at least SHA256.
#
#DIGESTPREF=SHA256
   070701000000A9000041FD0000000000000000000000016290A0C100000000000000000000000000000000000000000000002500000000spacewalk-backend/satellite_exporter  070701000000AA000081B40000000000000000000000016290A0C1000001F7000000000000000000000000000000000000002E00000000spacewalk-backend/satellite_exporter/Makefile # Makefile for the backend directory
#

CODE_DIRS = handlers

SUBDIR      = satellite_exporter
FILES	    = __init__
SPACEWALK_FILES       = __init__ satexport

TOP     = ..

# We look for config files in "well known" locations (rhn-conf,
# httpd-conf, logrotate)
EXTRA_DIRS = /var/log/rhn /var/cache/rhn

all :: all-code

%-code : Makefile
	@$(foreach d,$(CODE_DIRS), $(MAKE) -C $(d) $* || exit 1; ) 

include $(TOP)/Makefile.defs

install :: install-code

clean :: clean-code
	@rm -f *pyc
	@rm -f *pyo
 070701000000AB000081B40000000000000000000000016290A0C100000281000000000000000000000000000000000000003100000000spacewalk-backend/satellite_exporter/__init__.py  # Copyright (C) 2008--2013 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#
# Init module
#

__all__ = []
   070701000000AC000041FD0000000000000000000000016290A0C100000000000000000000000000000000000000000000002E00000000spacewalk-backend/satellite_exporter/handlers 070701000000AD000081B40000000000000000000000016290A0C100000090000000000000000000000000000000000000003700000000spacewalk-backend/satellite_exporter/handlers/Makefile    # Makefile for the handlers
#

TOP	= ../..
SUBDIR	= satellite_exporter/handlers

FILES	= __init__ non_auth_dumper

include $(TOP)/Makefile.defs
070701000000AE000081B40000000000000000000000016290A0C1000002B5000000000000000000000000000000000000003A00000000spacewalk-backend/satellite_exporter/handlers/__init__.py # Copyright (C) 2008--2013 Red Hat, Inc.
# Init module for the handlers used by the XML exporter listeners
#
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#

__all__ = []
   070701000000AF000081B40000000000000000000000016290A0C100005EF2000000000000000000000000000000000000004100000000spacewalk-backend/satellite_exporter/handlers/non_auth_dumper.py  # Copyright (c) 2008--2018 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#

"""
Non-authenticated dumper
"""

import os
try:
    #  python 2
    import xmlrpclib
except ImportError:
    #  python3
    import xmlrpc.client as xmlrpclib
import gzip
import sys

from rhn.UserDictCase import UserDictCase
from uyuni.common.usix import raise_with_tb
from spacewalk.common.rhnLog import log_debug, log_error
from spacewalk.common.rhnConfig import CFG
from spacewalk.server import rhnSQL, rhnLib
from spacewalk.server.rhnHandler import rhnHandler
from spacewalk.server.importlib.backendLib import localtime
from spacewalk.common.rhnException import rhnFault

from spacewalk.common.rhnTranslate import _

from spacewalk.satellite_tools.exporter import exportLib
from spacewalk.satellite_tools.disk_dumper import dumper


class InvalidPackageError(Exception):
    pass


class NullPathPackageError(Exception):
    pass


class MissingPackageError(Exception):
    pass


class NonAuthenticatedDumper(rhnHandler, dumper.XML_Dumper):
    # pylint: disable=E1101,W0102,W0613,R0902,R0904

    def __init__(self, req):
        rhnHandler.__init__(self)
        dumper.XML_Dumper.__init__(self)
        self.headers_out = UserDictCase()
        self._raw_stream = req
        self._raw_stream.content_type = 'application/octet-stream'
        self.compress_level = 0
        # State machine
        self._headers_sent = 0
        self._is_closed = 0
        self._compressed_stream = None

        self.functions = [
            'arches',
            'arches_extra',
            'channel_families',
            'channels',
            'get_comps',
            'get_modules',
            'channel_packages_short',
            'packages_short',
            'packages',
            'source_packages',
            'errata',
            'blacklist_obsoletes',
            'product_names',
            'get_rpm',
            'kickstartable_trees',
            'get_ks_file',
            'orgs',
            'support_information',
            'suse_products',
            'suse_product_channels',
            'suse_upgrade_paths',
            'suse_product_extensions',
            'suse_product_repositories',
            'scc_repositories',
            'suse_subscriptions',
            'cloned_channels',
        ]

        self.system_id = None
        self._channel_family_query_template = """
            select cfm.channel_family_id, 0 quantity
              from rhnChannelFamilyMembers cfm,
                   rhnChannel c, rhnChannelFamily cf
             where cfm.channel_id = c.id
               and c.label in (%s)
               and cfm.channel_family_id = cf.id
               and cf.label != 'rh-public'
               and (cf.org_id in (%s)
                   or cf.org_id is null)
            union
            select id channel_family_id, NULL quantity
              from rhnChannelFamily
             where label = 'rh-public'
        """
        self._channel_family_query_public = """
            select id channel_family_id, 0 quantity
              from rhnChannelFamily
             where org_id in (%s)
                or org_id is null
        """
        self._channel_family_query = None

    def _send_headers(self, error=0, init_compressed_stream=1):
        log_debug(4, "is_closed", self._is_closed)
        if self._is_closed:
            raise Exception("Trying to write to a closed connection")
        if self._headers_sent:
            return
        self._headers_sent = 1
        if self.compress_level:
            self.headers_out['Content-Encoding'] = 'gzip'
        # Send the headers
        if error:
            # No compression
            self.compress_level = 0
            self._raw_stream.content_type = 'text/xml'
        for h, v in list(self.headers_out.items()):
            self._raw_stream.headers_out[h] = str(v)
        self._raw_stream.send_http_header()
        # If need be, start gzipping
        if self.compress_level and init_compressed_stream:
            log_debug(4, "Compressing with factor %s" % self.compress_level)
            self._compressed_stream = gzip.GzipFile(None, "wb",
                                                    self.compress_level, self._raw_stream)

    def send(self, data):
        log_debug(3, "Sending %d bytes" % len(data))
        try:
            self._send_headers()
            if self._compressed_stream:
                log_debug(4, "Sending through a compressed stream")
                self._compressed_stream.write(data)
            else:
                self._raw_stream.write(data)
        except IOError:
            log_error("Client appears to have closed connection")
            self.close()
            raise_with_tb(dumper.ClosedConnectionError, sys.exc_info()[2])
        log_debug(5, "Bytes sent", len(data))

    write = send

    def close(self):
        log_debug(2, "Closing")
        if self._is_closed:
            log_debug(3, "Already closed")
            return

        if self._compressed_stream:
            log_debug(5, "Closing a compressed stream")
            try:
                self._compressed_stream.close()
            except IOError:
                e = sys.exc_info()[1]
                # Remote end has closed connection already
                log_error("Error closing the stream", str(e))

            self._compressed_stream = None
        self._is_closed = 1
        log_debug(3, "Closed")

    def set_channel_family_query(self, channel_labels=[]):
        if not channel_labels:
            # All null-pwned channel families
            self._channel_family_query = self._channel_family_query_public % self.exportable_orgs
            return self

        self._channel_family_query = self._channel_family_query_template % (
            ', '.join(["'%s'" % x for x in channel_labels]),
            self.exportable_orgs)
        return self

    def _get_channel_data(self, channels):
        writer = ContainerWriter()
        d = ChannelsDumper(writer, params=list(channels.values()))
        d.dump()
        data = writer.get_data()
        # We don't care about <rhn-channels> here
        channel_data = self._cleanse_channels(data[2])
        return channel_data

    def _cleanse_channels(channels_dom):
        channels = {}
        for dummy, attributes, child_elements in channels_dom:
            channel_label = attributes['label']
            channels[channel_label] = channel_entry = {}

            packages = attributes['packages'].split()
            del attributes['packages']

            # Get dir of the prefix
            prefix = "rhn-package-"
            prefix_len = len(prefix)
            packages = [int(x[prefix_len:]) for x in packages]

            channel_entry['packages'] = packages

            ks_trees = attributes['kickstartable-trees'].split()

            channel_entry['ks_trees'] = ks_trees

            # Clean up to reduce memory footprint if possible
            attributes.clear()

            # tag name to object prefix
            maps = {
                'source-packages': ('source_packages', 'rhn-source-package-'),
                'rhn-channel-errata': ('errata', 'rhn-erratum-'),
            }
            # Now look for package sources
            for tag_name, dummy, celem in child_elements:
                if tag_name not in maps:
                    continue
                field, prefix = maps[tag_name]
                prefix_len = len(prefix)
                # Hmm. x[1] is the attributes hash; we fetch the id and we get
                # rid of te prefix, then we run that through int()
                objects = []
                for dummy, ceattr, dummy in celem:
                    obj_id = ceattr['id']
                    obj_id = int(obj_id[prefix_len:])
                    last_modified = localtime(ceattr['last-modified'])
                    objects.append((obj_id, last_modified))
                channel_entry[field] = objects

            # Clean up to reduce memory footprint if possible
            del child_elements[:]

        return channels

    _cleanse_channels = staticmethod(_cleanse_channels)

    # Dumper functions here
    def dump_channel_families(self):
        log_debug(2)

        h = self.get_channel_families_statement()
        h.execute()

        writer = self._get_xml_writer()
        d = dumper.SatelliteDumper(writer,
                                   exportLib.ChannelFamiliesDumper(writer,
                                                                   data_iterator=h, null_max_members=0,),)
        d.dump()
        writer.flush()
        log_debug(4, "OK")
        self.close()
        return 0

    def dump_channels(self, channel_labels=None):
        log_debug(2)
        channels = self._validate_channels(channel_labels=channel_labels)

        writer = self._get_xml_writer()
        d = dumper.SatelliteDumper(writer, dumper.ChannelsDumperEx(writer,
                                                                   params=list(channels.values())))
        d.dump()
        writer.flush()
        log_debug(4, "OK")
        self.close()
        return 0

    def dump_channel_packages_short(self, channel_label, last_modified):
        return dumper.XML_Dumper.dump_channel_packages_short(
            self, channel_label, last_modified, filepath=None,
            validate_channels=True, send_headers=True, open_stream=False)

    def _packages(self, packages, prefix, dump_class, sources=0):
        return dumper.XML_Dumper._packages(self, packages, prefix, dump_class, sources,
                                           verify_packages=True)

    def dump_errata(self, errata):
        return dumper.XML_Dumper.dump_errata(self, errata, verify_errata=True)

    def dump_kickstartable_trees(self, kickstart_labels=None):
        return dumper.XML_Dumper.dump_kickstartable_trees(self, kickstart_labels,
                                                          validate_kickstarts=True)

    def dump_product_names(self):
        return dumper.XML_Dumper.dump_product_names(self)

    def dump_support_information(self):
        log_debug(4)
        writer = self._get_xml_writer()
        d = dumper.SatelliteDumper(writer, exportLib.SupportInfoDumper(writer))
        d.dump()
        writer.flush()
        self.close()
        return 0

    def dump_suse_products(self):
        log_debug(4)
        writer = self._get_xml_writer()
        d = dumper.SatelliteDumper(writer, exportLib.SuseProductDumper(writer))
        d.dump()
        writer.flush()
        self.close()
        return 0

    def dump_suse_product_channels(self):
        log_debug(4)
        writer = self._get_xml_writer()
        d = dumper.SatelliteDumper(writer, exportLib.SuseProductChannelDumper(writer))
        d.dump()
        writer.flush()
        self.close()
        return 0

    def dump_suse_upgrade_paths(self):
        log_debug(4)
        writer = self._get_xml_writer()
        d = dumper.SatelliteDumper(writer, exportLib.SuseUpgradePathDumper(writer))
        d.dump()
        writer.flush()
        self.close()
        return 0

    def dump_suse_product_extensions(self):
        log_debug(4)
        writer = self._get_xml_writer()
        d = dumper.SatelliteDumper(writer, exportLib.SuseProductExtensionDumper(writer))
        d.dump()
        writer.flush()
        self.close()
        return 0

    def dump_suse_product_repositories(self):
        log_debug(4)
        writer = self._get_xml_writer()
        d = dumper.SatelliteDumper(writer, exportLib.SuseProductRepositoryDumper(writer))
        d.dump()
        writer.flush()
        self.close()
        return 0

    def dump_scc_repositories(self):
        log_debug(4)
        writer = self._get_xml_writer()
        d = dumper.SatelliteDumper(writer, exportLib.SCCRepositoryDumper(writer))
        d.dump()
        writer.flush()
        self.close()
        return 0

    def dump_suse_subscriptions(self):
        log_debug(4)
        writer = self._get_xml_writer()
        d = dumper.SatelliteDumper(writer, exportLib.SuseSubscriptionDumper(writer))
        d.dump()
        writer.flush()
        self.close()
        return 0

    def dump_cloned_channels(self):
        log_debug(4)
        writer = self._get_xml_writer()
        d = dumper.SatelliteDumper(writer, exportLib.ClonedChannelsDumper(writer))
        d.dump()
        writer.flush()
        self.close()
        return 0

    def arches(self):
        return self.dump_arches(rpm_arch_type_only=1)

    def arches_extra(self):
        return self.dump_server_group_type_server_arches(rpm_arch_type_only=1)

    def support_information(self):
        self.dump_support_information()

    def suse_products(self):
        self.dump_suse_products()

    def suse_product_channels(self):
        self.dump_suse_product_channels()

    def suse_upgrade_paths(self):
        self.dump_suse_upgrade_paths()

    def suse_product_extensions(self):
        self.dump_suse_product_extensions()

    def suse_product_repositories(self):
        self.dump_suse_product_repositories()

    def scc_repositories(self):
        self.dump_scc_repositories()

    def suse_subscriptions(self):
        self.dump_suse_subscriptions()

    def cloned_channels(self):
        self.dump_cloned_channels()

    def blacklist_obsoletes(self):
        return self.dump_blacklist_obsoletes()

    def product_names(self):
        return self.dump_product_names()

    def channel_families(self, channel_labels=[]):
        self.set_channel_family_query()
        return self.dump_channel_families()

    def channels(self, channel_labels, flags={}):
        if not channel_labels:
            channel_labels = []
        self.set_channel_family_query(channel_labels=channel_labels)
        return self.dump_channels(channel_labels=channel_labels)

    def get_comps(self, channel):
        return self.get_repomd_file(channel, 1)

    def get_modules(self, channel):
        return self.get_repomd_file(channel, 2)

    def channel_packages_short(self, channel_label, last_modified):
        self.set_channel_family_query(channel_labels=[channel_label])
        return self.dump_channel_packages_short(channel_label, last_modified)

    def packages(self, packages=[]):
        self.set_channel_family_query()
        return self.dump_packages(packages=packages)

    def packages_short(self, packages=[]):
        self.set_channel_family_query()
        return self.dump_packages_short(packages=packages)

    def source_packages(self, packages=[]):
        self.set_channel_family_query()
        return self.dump_source_packages(packages=packages)

    def errata(self, errata=[]):
        self.set_channel_family_query()
        return self.dump_errata(errata=errata)

    def orgs(self):
        return self.dump_orgs()

    def kickstartable_trees(self, kickstart_labels=[]):
        self.set_channel_family_query()
        return self.dump_kickstartable_trees(kickstart_labels=kickstart_labels)

    def get_rpm(self, package, channel, checksum):
        log_debug(1, package, channel, checksum)
        return self._send_package_stream(package, channel, checksum)

    def get_repomd_file(self, channel, comps_type_id):
        comps_query = """
            select relative_filename
            from rhnChannelComps
            where channel_id = (
                select id
                from rhnChannel
                where label = :channel_label
                and comps_type_id = :ctype_id
            )
            order by id desc
        """
        channel_comps_sth = rhnSQL.prepare(comps_query)
        channel_comps_sth.execute(channel_label=channel, ctype_id=comps_type_id)
        row = channel_comps_sth.fetchone_dict()
        if not row:
            raise rhnFault(3015, "No comps/modules file for channel [%s]" % channel)
        path = os.path.join(CFG.MOUNT_POINT, row['relative_filename'])
        if not os.path.exists(path):
            log_error("Missing comps/modules file [%s] for channel [%s]" % (path, channel))
            raise rhnFault(3016, "Unable to retrieve comps/modules file for channel [%s]" % channel)
        return self._send_stream(path)

    def get_ks_file(self, ks_label, relative_path):
        log_debug(1, ks_label, relative_path)
        h = rhnSQL.prepare("""
            select base_path
              from rhnKickstartableTree
             where label = :ks_label
               and org_id is null
        """)
        h.execute(ks_label=ks_label)
        row = h.fetchone_dict()
        if not row:
            raise rhnFault(3003, "No such file %s in tree %s" %
                           (relative_path, ks_label))
        path = os.path.join(CFG.MOUNT_POINT, row['base_path'], relative_path)
        if not os.path.exists(path):
            log_error("Missing file for SUSE Manager dumper: %s" % path)
            raise rhnFault(3007, "Unable to retrieve file %s in tree %s" %
                           (relative_path, ks_label))
        return self._send_stream(path)

    # Sends a package over the wire
    # prefix is whatever we prepend to the package id (rhn-package- or
    # rhn-source-package-)
    def _send_package_stream(self, package, channel, checksum):
        log_debug(3, package, channel, checksum)
        path, dummy = self.get_package_path_by_filename(package, channel, checksum)

        log_debug(3, "Package path", path)
        if not os.path.exists(path):
            log_error("Missing package (SUSE Manager dumper): %s" % path)
            raise rhnFault(3007, "Unable to retrieve package %s" % package)
        return self._send_stream(path)

    # This query is similar to the one aove, except that we have already
    # authorized this channel (so no need for server_id)
    _query_get_package_path_by_nvra_and_checksum = rhnSQL.Statement("""
            select distinct
                   p.id, p.path
              from rhnPackage p,
                   rhnChannelPackage cp,
                   rhnChannel c,
                   rhnPackageArch pa,
                   rhnChecksum ch
             where c.label = :channel
               and cp.channel_id = c.id
               and cp.package_id = p.id
               and p.name_id = LOOKUP_PACKAGE_NAME(:name)
               and p.evr_id = LOOKUP_EVR(:epoch, :version, :release, :package_type)
               and p.package_arch_id = pa.id
               and p.checksum_id = ch.id
               and ch.checksum = :checksum
               and pa.label = :arch
    """)

    def get_package_path_by_filename(self, fileName, channel, checksum):
        log_debug(3, fileName, channel, checksum)
        fileName = str(fileName)
        n, e, v, r, a = rhnLib.parseRPMFilename(fileName)
        package_type = fileName[-3:].lower()

        h = rhnSQL.prepare(self._query_get_package_path_by_nvra_and_checksum)
        h.execute(name=n, version=v, release=r, epoch=e, arch=a, channel=channel, checksum=checksum, package_type=package_type)
        try:
            return _get_path_from_cursor(h)
        except InvalidPackageError:
            log_debug(4, "Error", "Non-existent package requested", fileName)
            raise_with_tb(rhnFault(17, _("Invalid RPM package %s requested") % fileName), sys.exc_info()[2])
        except NullPathPackageError:
            e = sys.exc_info()[1]
            package_id = e[0]
            log_error("Package path null for package id", package_id)
            raise_with_tb(rhnFault(17, _("Invalid RPM package %s requested") % fileName), sys.exc_info()[2])
        except MissingPackageError:
            e = sys.exc_info()[1]
            filePath = e[0]
            log_error("Package not found", filePath)
            raise_with_tb(rhnFault(17, _("Package not found")), sys.exc_info()[2])

    # Opens the file and sends the stream
    def _send_stream(self, path):
        try:
            stream = open(path, mode="rb")
        except IOError:
            e = sys.exc_info()[1]
            if e.errno == 2:
                raise_with_tb(rhnFault(3007, "Missing file %s" % path), sys.exc_info()[2])
            # Let it flow so we can find it later
            raise

        stream.seek(0, 2)
        file_size = stream.tell()
        stream.seek(0, 0)
        log_debug(3, "Package size", file_size)
        self.headers_out['Content-Length'] = file_size
        self.compress_level = 0
        self._raw_stream.content_type = 'application/x-rpm'
        self._send_headers()
        self.send_rpm(stream)
        return 0

    def send_rpm(self, stream):
        buffer_size = 65536
        while 1:
            buf = stream.read(buffer_size)
            if not buf:
                break
            try:
                self._raw_stream.write(buf)
            except IOError:
                # client closed the connection?
                log_error("Client appears to have closed connection")
                self.close_rpm()
                raise_with_tb(dumper.ClosedConnectionError, sys.exc_info()[2])
        self.close_rpm()

    def close_rpm(self):
        self._is_closed = 1

    def _respond_xmlrpc(self, data):
        # Marshal
        s = xmlrpclib.dumps((data, ))

        self.headers_out['Content-Length'] = len(s)
        self._raw_stream.content_type = 'text/xml'
        for h, v in list(self.headers_out.items()):
            self._raw_stream.headers_out[h] = str(v)
        self._raw_stream.send_http_header()
        self._raw_stream.write(s)
        return 0


class ContainerWriter:
    # Same interface as an XML writer, but collects data in a hash instead

    def __init__(self):
        self._tag_stack = []
        self._cdata = []
        self._root = None

    def open_tag(self, tag_name, attributes=None):
        # print "+++", tag_name, len(self._tag_stack)
        if not attributes:
            attributes = {}
        self._cdata = []
        self._tag_stack.append((tag_name, attributes, self._cdata))

    def data(self, astring):
        self._cdata.append(astring)

    def close_tag(self, tag_name):
        # print "---", tag_name, len(self._tag_stack)
        # Extract the current item from the stack
        tag_name, attributes, cdata = self._tag_stack.pop()

        return self._add_node(tag_name, attributes, cdata)

    def empty_tag(self, tag_name, attributes=None):
        # print "+++---", tag_name, len(self._tag_stack)
        if not attributes:
            attributes = {}
        return self._add_node(tag_name, attributes, [])

    def _add_node(self, tag_name, attributes, cdata):
        node = (tag_name, attributes, cdata)
        if not self._tag_stack:
            # Parent
            self._root = node
            return self._root

        # Fetch the parent
        parent = self._tag_stack[-1]
        # Add this node as a child
        parent[2].append(node)
        return parent

    def get_data(self):
        assert self._root is not None
        return self._root

# Overwrite the ChannelsDumper class to filter packages/source packages/errata
# based on the creation date
# XXX No caching for now


class ChannelsDumper(dumper.ChannelsDumper):

    def dump_subelement(self, data):
        c = exportLib.ChannelDumper(self._writer, data)
        c.dump()


def _get_path_from_cursor(h):
    # Function shared between other retrieval functions
    rs = h.fetchall_dict()
    if not rs:
        raise InvalidPackageError

    max_row = rs[0]

    if max_row['path'] is None:

        raise NullPathPackageError(max_row['id'])
    filePath = "%s/%s" % (CFG.MOUNT_POINT, max_row['path'])
    pkgId = max_row['id']
    if not os.access(filePath, os.R_OK):
        # Package not found on the filesystem
        raise MissingPackageError(filePath)
    return filePath, pkgId

rpcClasses = {
    'dump': NonAuthenticatedDumper,
}
  070701000000B0000081B40000000000000000000000016290A0C1000025E1000000000000000000000000000000000000003200000000spacewalk-backend/satellite_exporter/satexport.py #
# Copyright (c) 2008--2016 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#
# Server-side uploading code

import time
import sys
try:
    #  python 2
    import xmlrpclib
except ImportError:
    #  python3
    import xmlrpc.client as xmlrpclib  # pylint: disable=F0401

from rhn.connections import idn_puny_to_unicode

from spacewalk.common import apache

from uyuni.common.usix import raise_with_tb
from spacewalk.common import rhnFlags
from spacewalk.common.rhnLog import log_debug, log_error, log_setreq, initLOG
from spacewalk.common.rhnConfig import CFG, initCFG
from spacewalk.common.rhnTranslate import _
from spacewalk.common.rhnTB import Traceback
from spacewalk.common.rhnException import rhnException, rhnFault
from spacewalk.server import rhnSQL, rhnImport
from spacewalk.satellite_tools.disk_dumper.dumper import ClosedConnectionError
from spacewalk.satellite_tools import constants


class BaseApacheServer:

    def __init__(self):
        # Init log to stderr
        initLOG()
        self.start_time = 0
        self._cleanup()

    def headerParserHandler(self, req):
        # pylint: disable=W0201
        log_setreq(req)
        self.start_time = time.time()
        # init configuration options with proper component
        options = req.get_options()
        # if we are initializing out of a <Location> handler don't
        # freak out
        if "RHNComponentType" not in options:
            # clearly nothing to do
            return apache.OK
        initCFG(options["RHNComponentType"])
        initLOG(CFG.LOG_FILE, CFG.DEBUG)
        # short-circuit everything if sending a system-wide message.
        if CFG.SEND_MESSAGE_TO_ALL:
            # Drop the database connection
            # pylint: disable=W0702
            try:
                rhnSQL.closeDB()
            except:
                pass

            # Fetch global message being sent to clients if applicable.
            msg = open(CFG.MESSAGE_TO_ALL).read()
            log_debug(3, "Sending message to all clients: %s" % msg)
            return self._send_xmlrpc(req, rhnFault(-1,
                                                   _("IMPORTANT MESSAGE FOLLOWS:\n%s") % msg, explain=0))

        rhnSQL.initDB()
        self.server = options['SERVER']

        self.server_classes = rhnImport.load("satellite_exporter/handlers")

        if self.server not in self.server_classes:
            # XXX do something interesting here
            log_error("Missing server", self.server)
            return apache.HTTP_NOT_FOUND

        return self._wrapper(req, self._headerParserHandler)

    def handler(self, req):
        return self._wrapper(req, self._handler)

    def cleanupHandler(self, req):
        self._timer()
        retval = self._wrapper(req, self._cleanupHandler)
        self._cleanup()
        # Reset the logger to stderr
        initLOG()
        return retval

    def _cleanup(self):
        # pylint: disable=W0201
        self.server = None
        self.server_classes = None
        self.server_instance = {}

    # Virtual functions
    # pylint: disable=R0201
    def _headerParserHandler(self, _req):
        return apache.OK

    def _handler(self, _req):
        return apache.OK

    def _cleanupHandler(self, _req):
        return apache.OK

    def _wrapper(self, req, function):
        try:
            ret = function(req)
        except rhnFault:
            e = sys.exc_info()[1]
            return self._send_xmlrpc(req, e)
        except ClosedConnectionError:
            # The error code most likely doesn't matter, the client won't see
            # it anyway
            return apache.HTTP_NOT_ACCEPTABLE
        except Exception:  # pylint: disable=E0012, W0703
            Traceback("satexport._wrapper", req=req)
            return apache.HTTP_INTERNAL_SERVER_ERROR
        return ret

    def _send_xmlrpc(self, req, data):
        log_debug(1)
        req.content_type = "text/xml"
        if isinstance(data, rhnFault):
            data = data.getxml()
        else:
            data = (data, )
        ret = xmlrpclib.dumps(data, methodresponse=1)
        req.headers_out['Content-Length'] = str(len(ret))
        req.send_http_header()
        req.write(ret)
        return apache.OK

    def _timer(self):
        if not self.start_time:
            return 0
        log_debug(2, "%.2f sec" % (time.time() - self.start_time))
        return 0


class ApacheServer(BaseApacheServer):

    def __init__(self):
        BaseApacheServer.__init__(self)

    def _headerParserHandler(self, req):
        log_debug(3, "Method", req.method)
        self._validate_version(req)
        return apache.OK

    def _handler(self, req):
        log_debug(3, "Method", req.method)

        # Read all the request
        data = req.read()
        log_debug(7, "Received", data)

        # Decode the data
        try:
            params, methodname = xmlrpclib.loads(data)
        except:
            raise

        log_debug(5, params, methodname)

        try:
            f = self.get_function(methodname, req)
        except FunctionRetrievalError:
            e = sys.exc_info()[1]
            Traceback(methodname, req)
            return self._send_xmlrpc(req, rhnFault(3008, str(e), explain=0))

        if len(params) < 2:
            params = []
        else:
            params = params[1:]

        result = f(*params)

        if result:
            # Error of some sort
            return self._send_xmlrpc(req, rhnFault(3009))

        # Presumably the function did all the sending
        log_debug(4, "Exiting OK")
        return apache.OK

    # pylint: disable=R0201
    def get_function(self, method_name, req):
        iss_slave_condition = self.auth_system(req)
        # Get the module name
        idx = method_name.rfind('.')
        module_name, function_name = method_name[:idx], method_name[idx + 1:]
        log_debug(5, module_name, function_name)

        handler_classes = self.server_classes[self.server]
        if module_name not in handler_classes:
            raise FunctionRetrievalError("Module %s not found" % module_name)

        mod = handler_classes[module_name](req)
        mod.set_exportable_orgs(iss_slave_condition)
        f = mod.get_function(function_name)
        if f is None:
            raise FunctionRetrievalError(
                "Module %s: function %s not found" %
                (module_name, function_name))
        return f

    def auth_system(self, req):
        if CFG.DISABLE_ISS:
            raise rhnFault(2005, _('ISS is disabled on this server.'))

        remote_hostname = req.get_remote_host(apache.REMOTE_DOUBLE_REV)
        row = rhnSQL.fetchone_dict("""
        select id, allow_all_orgs
          from rhnISSSlave
         where slave = :hostname
           and enabled = 'Y'
        """, hostname=idn_puny_to_unicode(remote_hostname))
        if not row:
            raise rhnFault(2004,
                           _('Server "%s" is not enabled for ISS.')
                           % remote_hostname)
        iss_slave_condition = "select id from web_customer"
        if not(row['allow_all_orgs'] == 'Y'):
            iss_slave_condition = "select rhnISSSlaveOrgs.org_id from rhnISSSlaveOrgs where slave_id = %d" % row['id']
        return iss_slave_condition

    @staticmethod
    def _validate_version(req):
        server_version = constants.PROTOCOL_VERSION
        vstr = 'X-RHN-Satellite-XML-Dump-Version'
        if vstr not in req.headers_in:
            raise rhnFault(3010, "Missing version string")
        client_version = req.headers_in[vstr]

        # set the client version  through rhnFlags to access later
        rhnFlags.set('X-RHN-Satellite-XML-Dump-Version', client_version)

        log_debug(1, "Server version", server_version, "Client version",
                  client_version)

        client_ver_arr = str(client_version).split(".")
        server_ver_arr = str(server_version).split(".")
        client_major = client_ver_arr[0]
        server_major = server_ver_arr[0]
        if len(client_ver_arr) >= 2:
            client_minor = client_ver_arr[1]
        else:
            client_minor = 0

        server_minor = server_ver_arr[1]

        try:
            client_major = int(client_major)
            client_minor = int(client_minor)
        except ValueError:
            raise_with_tb(rhnFault(3011, "Invalid version string %s" % client_version), sys.exc_info()[2])

        try:
            server_major = int(server_major)
            server_minor = int(server_minor)
        except ValueError:
            raise_with_tb(rhnException("Invalid server version string %s"
                                       % server_version), sys.exc_info()[2])

        if client_major != server_major:
            raise rhnFault(3012, "Client version %s does not match"
                           " server version %s" % (client_version, server_version),
                           explain=0)


class FunctionRetrievalError(Exception):
    pass


apache_server = ApacheServer()
HeaderParserHandler = apache_server.headerParserHandler
Handler = apache_server.handler
CleanupHandler = apache_server.cleanupHandler
   070701000000B1000041FD0000000000000000000000016290A0C100000000000000000000000000000000000000000000002200000000spacewalk-backend/satellite_tools 070701000000B2000081B40000000000000000000000016290A0C100000274000000000000000000000000000000000000002600000000spacewalk-backend/satellite_tools/CFG # This viminfo file was generated by Vim 7.2.
# You may edit it if you're careful!

# Value of 'encoding' when this file was written
*encoding=utf-8


# hlsearch on (H) or off (h):
~H
# Command Line History (newest to oldest):

# Search String History (newest to oldest):

# Expression History (newest to oldest):

# Input Line History (newest to oldest):

# Input Line History (newest to oldest):

# Registers:

# File marks:
'0  1  0  ~/code/git/spacewalk/backend/satellite_tools/grep

# Jumplist (newest first):
-'  1  0  ~/code/git/spacewalk/backend/satellite_tools/grep

# History of marks within files (newest to oldest):
070701000000B3000081B40000000000000000000000016290A0C1000006FA000000000000000000000000000000000000002B00000000spacewalk-backend/satellite_tools/Makefile    # Makefile for satellite_tool for RHNS
#

TOP	= ..

# Specific stuff
SUBDIR	= satellite_tools
SUBDIRS = exporter disk_dumper accounts repo_plugins
SPACEWALK_FILES	= __init__ connection constants diskImportLib messages \
            progress_bar req_channels satCerts satsync syncCache \
            sync_handlers \
            syncLib SequenceServer xmlDiskSource \
            xmlSource xmlWireSource rhn_satellite_activate rhn_ssl_dbstore \
            satComputePkgHeaders updatePackages reposync \
	    geniso contentRemove download
SCRIPTS = satellite-sync spacewalk-debug \
	  rhn-schema-version rhn-satellite-activate rhn-charsets \
	  rhn-ssl-dbstore update-packages rhn-db-stats rhn-schema-stats \
          spacewalk-repo-sync spacewalk-remove-channel \
	  spacewalk-update-signatures spacewalk-data-fsck spacewalk-fips-tool \
	  mgr-sign-metadata mgr-sign-metadata-ctl spacewalk-diskcheck

# check if we can build man pages
DOCBOOK = $(wildcard /usr/bin/docbook2man)

SGMLS	= $(wildcard *.sgml)
MANS	= $(patsubst %.sgml,%.8,$(SGMLS))

BINDIR	= /usr/bin
MANDIR	?= /usr/man

EXTRA_DIRS = $(MANDIR)/man8 $(BINDIR)

CA_DBSTORE      = rhn-ssl-dbstore

include $(TOP)/Makefile.defs

# install scripts
all :: $(SCRIPTS)
install :: $(SCRIPTS) $(PREFIX)/$(BINDIR)
	$(INSTALL_BIN) $(SCRIPTS) $(PREFIX)/$(BINDIR)

ifneq ($(DOCBOOK),)
# install man pages
all	:: $(MANS)
install :: $(MANS) $(PREFIX)/$(MANDIR)
	$(INSTALL_DATA) $(MANS) $(PREFIX)/$(MANDIR)/man8
endif

install :: $(CA_DBSTORE).inst

$(CA_DBSTORE).inst : $(CA_DBSTORE) $(CA_DBSTORE).new $(PREFIX)/$(BINDIR)
	$(INSTALL_BIN) $(CA_DBSTORE).new $(PREFIX)/$(BINDIR)/$(CA_DBSTORE)
	rm -f $(CA_DBSTORE).new


%.new : %
	sed -e 's|@@ROOT@@|$(ROOT)|g' <$* >$@

%.8 : %.sgml
	$(DOCBOOK) $<

clean ::
	@rm -fv $(MANS) manpage.* *.new

  070701000000B4000081B40000000000000000000000016290A0C100000C2A000000000000000000000000000000000000003400000000spacewalk-backend/satellite_tools/SequenceServer.py   #
# Copyright (c) 2008--2015 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#
# class SequenceServer, a class that nicely serves chunks
#    of any sequence.
#


class SequenceServer:

    """Given a sequence to serve, this class dishes them out in chunks
    or one at a time. This was written originally to reduce redundant
    code. Used only by class Syncer.

    This class was written so that a chunk can be snagged and
    processed. If the processing fails, one can tell the class to only
    present one at a time until that chunk is complete... and then
    resume normal operations.

    For example: the sequence can be a bunch of packageIds. We try to
    process all data that corresponds to some chunk of those package
    ids. If that process fails, we go back and reprocess that chunk,
    one at a time, until it is complete (identifying precisely which
    package broke). Then we resume processing a chunk at a time.

    """

    DIVISOR = 10
    NEVER_LESS_THAN = 10
    NEVER_MORE_THAN = 50

    def __init__(self, seq, divisor=None, neverlessthan=None, nevermorethan=None):
        """Constructor.

        Arguments:

        seq - any sequence to server chunks of
        divisor - the chunk size: 10 would be 1/10th of the seq length
        neverlessthan - chunk-size is never less than this (unless out
                        of data).
        nevermorethan - chunk-size if never more than this number.

        """

        divisor = divisor or self.DIVISOR
        neverlessthan = neverlessthan or self.NEVER_LESS_THAN
        nevermorethan = nevermorethan or self.NEVER_MORE_THAN

        self.seq = seq
        self.chunksize = int(min(max(len(seq) / divisor, neverlessthan),
                             nevermorethan))
        self.oneYN = 0
        self.alwaysOneYN = 0
        self.returnedChunksize = 0
        self.chunk = self.seq[:self.chunksize]

    def getChunk(self):
        """fetch a chunk from the sequence.
        Does not refresh the chunk until you self.clearChunk()"""

        if not self.chunk:
            self.chunk = self.seq[:self.chunksize]
        if self.oneYN or self.alwaysOneYN:
            _chunk = self.chunk[:1]
        else:
            _chunk = self.chunk
        self.returnedChunksize = len(_chunk)
        return _chunk

    def clearChunk(self):
        """zero the self.chunk you were working with."""

        del self.chunk[:self.returnedChunksize]
        del self.seq[:self.returnedChunksize]
        if not self.chunk:
            self.oneYN = 0

    def doneYN(self):
        return not self.seq
  070701000000B5000081B40000000000000000000000016290A0C100000037000000000000000000000000000000000000002E00000000spacewalk-backend/satellite_tools/__init__.py # Copyright (c) 2005--2015 Red Hat, Inc.

__all__ = []
 070701000000B6000041FD0000000000000000000000016290A0C100000000000000000000000000000000000000000000002B00000000spacewalk-backend/satellite_tools/accounts    070701000000B7000081B40000000000000000000000016290A0C100000538000000000000000000000000000000000000003400000000spacewalk-backend/satellite_tools/accounts/Makefile   # Makefile for spacewalk backend
#
#
# Copyright (c) 2008--2013 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#
#

TOP	= ../..

# Specific stuff
SUBDIR  = satellite_tools/accounts
SCRIPTS = satpasswd satwho
BINDIR  = /usr/bin
include $(TOP)/Makefile.defs

#Man page specific stuff
DOCBOOK = $(wildcard /usr/bin/docbook2man)

SGMLS	= $(wildcard *.sgml)
MANS	= $(patsubst %.sgml,%.8,$(SGMLS))

MANDIR	?= /usr/man

EXTRA_DIRS = $(MANDIR)/man8 $(BINDIR)

# install scripts
all :: $(SCRIPTS)
install :: $(SCRIPTS) $(PREFIX)/$(BINDIR)
	$(INSTALL_BIN) $(SCRIPTS) $(PREFIX)/$(BINDIR)

ifneq ($(DOCBOOK),)
# install man pages
all	:: $(MANS)
install :: $(MANS) $(PREFIX)/$(MANDIR)
	$(INSTALL_DATA) $(MANS) $(PREFIX)/$(MANDIR)/man8
endif


%.8 : %.sgml
	$(DOCBOOK) $<

clean ::
	@rm -fv $(MANS) manpage.* *.new
070701000000B8000081B40000000000000000000000016290A0C1000001CE000000000000000000000000000000000000003200000000spacewalk-backend/satellite_tools/accounts/README This is a small set of tools for working with Satellite user accounts. Included are the following scripts:

1.   satwho.   Lists all the satellite users.

2.   satpasswd.  Sets a password for a satellite user.  Especially good if you've locked yourself out of your satellite admin account ;-)

3.   md5crypt.   A re-write of grub-md5-crypt that accepts --stdin.  This script was initially used by satpasswd; however, it has since been replaced by using openssl.
  070701000000B9000081FD0000000000000000000000016290A0C10000098D000000000000000000000000000000000000003400000000spacewalk-backend/satellite_tools/accounts/md5crypt   #! /bin/sh

# Encrypt a password in MD5 format
#   Copyright (C) 2000,2002 Free Software Foundation, Inc.
#
# This file is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# 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, write to the Free Software
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.

# Replaced by the configure script.
prefix=/usr
exec_prefix=/usr
sbindir=/sbin
STDIN=FALSE

# Initialize some variables.
grub_shell=${sbindir}/grub
progname="grub-md5-crypt"

# Check the arguments.
for option in "$@"; do
    case "$option" in
    -h | --help)
	cat <<EOF
Usage: $progname [OPTION]
Encrypt a password in MD5 format.

  -h, --help              print this message and exit
  -v, --version           print the version information and exit
  --grub-shell=FILE       use FILE as the grub shell

Report bugs to <bug-grub@gnu.org>.
EOF
	exit 0
	;;

    -v | --version)
	echo "$progname (GNU GRUB ${VERSION})"
	exit 0
	;;

    --grub-shell=*)
	grub_shell=`echo "$option" | sed 's/--grub-shell=//'`
	;;

    --stdin)
	STDIN=TRUE
        ;;

    *)
	echo "$progname: unrecognized option \`$option'"
	echo "Usage: $progname [OPTION]"
	echo "Try \`$progname --help' for more information."
	exit 1
	;;
    esac
done

if [ "$STDIN" = "FALSE" ]
then
  # Suppress echo backs. I don't know if this is really portable. -okuji
  stty -echo

  # Prompt to enter a password.
  echo -n "Password: "
  read -r password
  echo

  # One more time.
  echo -n "Retype password: "
  read -r password2
  echo

  # Resume echo backs.
  stty echo
else
  read password
  password2="$password"
fi

if test "x$password" = x; then
    echo "Empty password is not permitted."
    exit 1
fi

if test "x$password" != "x$password2"; then
    echo "Sorry, passwords do not match."
    exit 1
fi

# Run the grub shell.
$grub_shell --batch --device-map=/dev/null <<EOF \
    | grep "^Encrypted: " | sed 's/^Encrypted: //'
md5crypt
$password
quit
EOF

# Bye.
exit 0
   070701000000BA000081FD0000000000000000000000016290A0C1000008EB000000000000000000000000000000000000003500000000spacewalk-backend/satellite_tools/accounts/satpasswd  #!/usr/bin/python
#
# Copyright (c) 2014--2015 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.

import getpass
import sys

from spacewalk.common.rhnConfig import initCFG, CFG
from spacewalk.server import rhnSQL, rhnUser


def print_help():
    print("Usage: satpasswd [OPTIONS] user\n")
    print("Options:")
    print("\t-h, --help\tPrint this help message.")
    print("\t-s, --stdin\tRead the password from standard input.")


def read_passwd(stdin, msg):
    passwordIn = None
    if stdin:
        passwordIn = sys.stdin.readline().rstrip('\n')
    else:
        passwordIn = getpass.getpass(msg)
    return passwordIn

if __name__ == '__main__':
    if '-h' in sys.argv or '--help' in sys.argv:
        print_help()
        sys.exit(0)

    stdin = False
    for a in ('-s', '--stdin'):
        if a in sys.argv:
            stdin = True
            sys.argv.remove(a)

    if len(sys.argv) != 2:
        print_help()
        sys.exit(1)

    userIn = sys.argv.pop()

    initCFG('server.satellite')
    rhnSQL.initDB()

    user = rhnUser.search(userIn)
    if not user:
        print("User %s is not a valid Satellite user." % userIn)
        sys.exit(1)

    passwordIn = read_passwd(stdin, "Password:")
    passwordCheck = read_passwd(stdin, "Retype password:")

    if passwordIn != passwordCheck:
        print("Sorry, passwords do not match.")
        sys.exit(1)

    if len(passwordIn) == 0:
        print("Empty password is not permitted.")
        sys.exit(1)

    if len(passwordIn) < CFG.MIN_PASSWD_LEN:
        print(("User password should be at least %d characters long.") % CFG.MIN_PASSWD_LEN)
        sys.exit(1)

    user.contact['password'] = rhnUser.encrypt_password(passwordIn)
    user.contact.save()
    rhnSQL.commit()
 070701000000BB000081B40000000000000000000000016290A0C100000803000000000000000000000000000000000000003A00000000spacewalk-backend/satellite_tools/accounts/satpasswd.sgml <!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook V3.1//EN">
<refentry>

<RefMeta>
<RefEntryTitle>satpasswd</RefEntryTitle><manvolnum>8</manvolnum>
<RefMiscInfo>Version 1.0</RefMiscInfo>
</RefMeta>

<RefNameDiv>
<RefName><command>satpasswd</command></RefName>
<RefPurpose>
Change a user's password on the management server.
</RefPurpose>
</RefNameDiv>

<RefSynopsisDiv>
<Synopsis>
    <cmdsynopsis>
        <command>satpasswd</command>
        <arg>options <replaceable>...</replaceable></arg>
    </cmdsynopsis>
    <cmdsynopsis>
        <arg><replaceable>USER</replaceable></arg>
    </cmdsynopsis>
    <cmdsynopsis>
        <arg>-s</arg><arg>--stdin</arg>
    </cmdsynopsis>
    <cmdsynopsis>
        <arg>-h</arg><arg>--help</arg>
    </cmdsynopsis>
</Synopsis>
</RefSynopsisDiv>

<RefSect1><Title>Description</Title>
    <para>
        <emphasis>satpasswd</emphasis> is used to change a user's password on the management server.  This password is used for accessing the user's account using the Web User Interface.  Due to the nature of the command, access to it is restricted to the root user.
    </para>
</RefSect1>

<RefSect1><Title>Options</Title>
<variablelist>
    <varlistentry>
        <term>-s, --stdin</term>
        <listitem>
            <para>Read the user password from standard input.</para>
        </listitem>
    </varlistentry>
    <varlistentry>
        <term>-h, --help</term>
        <listitem>
            <para>Display the help screen with a list of options.</para>
        </listitem>
    </varlistentry>
    <varlistentry>
        <term><replaceable>USER</replaceable></term>
        <listitem>
            <para>The login of the user being changed.</para>
        </listitem>
    </varlistentry>
</variablelist>
</RefSect1>

<RefSect1><Title>Authors</Title>
<simplelist>
    <member>G.R. Keech<email>rkeech@redhat.com</email></member>
    <member>Brad Buckingham<email>bbuckingham@redhat.com</email></member>
    <member>Milan ZÃ¡zrivec<email>mzazrivec@redhat.com</email></member>
</simplelist>
</RefSect1>
</RefEntry>
 070701000000BC000081FD0000000000000000000000016290A0C1000002A6000000000000000000000000000000000000003200000000spacewalk-backend/satellite_tools/accounts/satwho #!/bin/bash
# name:         satwho
# description:  Print a list of the satellite users.
# author:	G.R.Keech <rkeech@redhat.com>
# 		Jan Pazdziora
# date:		2006-01-31, 2011-01-11

BLOCK=0
echo "select login from web_contact;"| spacewalk-sql --select-mode - | grep -v "^$" |\
while read line
do
  if [ $BLOCK -eq 0 ]
  then
    # We are before the block so do not print anything.

    # First look for the horizontal separating line
    echo "$line" | grep "^-*$" &>/dev/null && BLOCK=1
  else
    # We are in the block, so print the line, so long as it is not the line with "rows selected"
    echo "$line" | egrep "rows?\)$|rows selected.$" &>/dev/null || echo $line
  fi
done

  070701000000BD000081B40000000000000000000000016290A0C1000003FC000000000000000000000000000000000000003700000000spacewalk-backend/satellite_tools/accounts/satwho.sgml    <!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook V3.1//EN">
<refentry>

<RefMeta>
<RefEntryTitle>satwho</RefEntryTitle><manvolnum>8</manvolnum>
<RefMiscInfo>Version 1.0</RefMiscInfo>
</RefMeta>

<RefNameDiv>
<RefName><command>satwho</command></RefName>
<RefPurpose>
List the login names of users on the management server.
</RefPurpose>
</RefNameDiv>

<RefSynopsisDiv>
<Synopsis>
    <cmdsynopsis>
        <command>satwho</command>
    </cmdsynopsis>
</Synopsis>
</RefSynopsisDiv>

<RefSect1><Title>Description</Title>
    <para>
        <emphasis>satwho</emphasis> lists the login names for users on the management server.  These login names are used for logging in to the Web User Interface.  Due to the nature of the command, access to it is restricted to the root user.
    </para>
</RefSect1>

<RefSect1><Title>Authors</Title>
<simplelist>
    <member>G.R. Keech<email>rkeech@redhat.com</email></member>
    <member>Brad Buckingham<email>bbuckingham@redhat.com</email></member>
</simplelist>
</RefSect1>
</RefEntry>
070701000000BE000081B40000000000000000000000016290A0C100001764000000000000000000000000000000000000003000000000spacewalk-backend/satellite_tools/connection.py   #
# Module that provides the client-side functionality for an XML importer
#
# Copyright (c) 2008--2016 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#
#

import gzip

from rhn import rpclib
from spacewalk.satellite_tools import constants

__version__ = "0.1"


class Transport(rpclib.transports.Transport):
    user_agent = "satellite-sync/%s" % __version__

    def __init__(self, timeout=None):
        if timeout:
            rpclib.transports.Transport.__init__(self, timeout=timeout)
        else:
            rpclib.transports.Transport.__init__(self)
        self.add_header("Accept-Encoding", "gzip")

    def _process_response(self, fd, connection):
        # Content-Type defaults to txt/xml
        content_type = self.headers_in.get('Content-Type', 'text/xml')
        content_encoding = self.headers_in.get('Content-Encoding')

        if content_encoding == 'gzip':
            # Un-gzipstream it
            # NOTE: if data expected to get bigger than ~2.5Gb in size
            #       then use GzipStreamXL instead (it's slower though)
            fd = CompressedStream(fd)

        if content_type == 'text/xml':
            # XML-RPC error
            # Catch exceptions so we can properly close file descriptors
            try:
                ret = self.parse_response(fd)
            except:
                fd.close()
                connection.close()
                raise
            fd.close()
            connection.close()
            return ret

        # XXX application/octet-stream should go away
        if content_type in ('application/xml', 'application/octet-stream',
                            'application/x-rpm'):
            f = rpclib.transports.File(fd)
            # Explanation copied from the base class' method (rhn.transports):
            # Set the File's close method to the connection's
            # Note that calling the HTTPResponse's close() is not enough,
            # since the main socket would remain open, and this is
            # particularily bad with SSL
            f.close = connection.close
            return f

        connection.close()
        raise Exception("Unknown response type: " + content_type)


class SafeTransport(rpclib.transports.SafeTransport, Transport):
    _process_response = Transport._process_response


class ProxyTransport(rpclib.transports.ProxyTransport, Transport):
    _process_response = Transport._process_response


class SafeProxyTransport(rpclib.transports.SafeProxyTransport, Transport):
    _process_response = Transport._process_response


class _Server(rpclib.Server):
    _transport_class = Transport
    _transport_class_https = SafeTransport
    _transport_class_proxy = ProxyTransport
    _transport_class_https_proxy = SafeProxyTransport

    def use_CA_chain(self, ca_chain=None):
        pass


class StreamConnection(_Server):

    def __init__(self, uri, proxy=None, username=None, password=None,
                 refreshCallback=None, xml_dump_version=constants.PROTOCOL_VERSION,
                 timeout=None):
        _Server.__init__(self, uri, proxy=proxy, username=username,
                         password=password, refreshCallback=refreshCallback, timeout=timeout)
        self.add_header("X-RHN-Satellite-XML-Dump-Version", xml_dump_version)


class GETServer(rpclib.GETServer):

    """ class rpclib.GETServer with overriden default transports classes """
    _transport_class = Transport
    _transport_class_https = SafeTransport
    _transport_class_proxy = ProxyTransport
    _transport_class_https_proxy = SafeProxyTransport

    def __init__(self, uri, transport=None, proxy=None, username=None,
                 password=None, client_version=2, headers=None, refreshCallback=None,
                 progressCallback=None, xml_dump_version=constants.PROTOCOL_VERSION,
                 timeout=None):
        if headers is None:
            headers = {}
        rpclib.GETServer.__init__(self, uri,
                                  transport=transport,
                                  proxy=proxy,
                                  username=username,
                                  password=password,
                                  client_version=client_version,
                                  headers=headers,
                                  refreshCallback=refreshCallback,
                                  timeout=timeout)
        self.add_header("X-RHN-Satellite-XML-Dump-Version", xml_dump_version)

    def use_CA_chain(self, ca_chain=None):
        pass


class CompressedStream:

    """
    GzipStream will not close the connection by itself, so we have to keep the
    underlying stream around
    """

    def __init__(self, stream):
        def noop():
            pass
        self._real_stream = stream
        # gzipstream tries to flush stuff; add a noop function
        self._real_stream.flush = noop
        self.stream = self._real_stream
        if not isinstance(self._real_stream, gzip.GzipFile):
            self.stream = gzip.GzipFile(fileobj=self._real_stream, mode="r")

    def close(self):
        if self.stream:
            self.stream.close()
            self.stream = None
        if self._real_stream:
            self._real_stream.close()
            self._real_stream = None

    def __getattr__(self, name):
        return getattr(self.stream, name)

    def __repr__(self):
        return "<_CompressedStream at %s>" % id(self)

if __name__ == '__main__':
    pass
070701000000BF000081B40000000000000000000000016290A0C100000616000000000000000000000000000000000000002F00000000spacewalk-backend/satellite_tools/constants.py    # Copyright (c) 2008--2015 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#

"""
Constant values (protocol versions, etc) for satellite sync/exporter.
"""

# XML dump version we export
PROTOCOL_VERSION = 3.7

ALLOWED_SYNC_PROTOCOL_VERSIONS = ['3.7', '3.6', '3.5', '3.4', '3.3', '3.2', '3.1', '3.0']

# Support for syncing orgs / org trusts / channel trusts
ORG_SUPPORTED_VERSION = 3.7

# Support for checksums other then md5
SHA256_SUPPORTED_VERSION = 3.5

# Support for redirects to CDN (Akamai)
REDIRECTS_SUPPORTED_VERSION = 3.4

# Support for supplying comps.xml files (package groups)
COMPS_SUPPORTED_VERSION = 3.3

# Support for update model details (rhn510+)
EUS_SUPPORTED_VERSION = 3.2

# Support for virt details (rhn500+)
VIRT_SUPPORTED_VERSION = 3.1

# Historical log
# * Version 2.2 2004-03-02
#    arch types introduced in all the arch dumps
# * Version 2.3 2004-09-13
#    added short package dumps per channel
# * Version 3.0 2005-01-13
#    required major version change for channel family merging (#136525)
  070701000000C0000081B40000000000000000000000016290A0C10000491C000000000000000000000000000000000000003300000000spacewalk-backend/satellite_tools/contentRemove.py    # Copyright (c) 2016 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#

import os
import shutil
import sys
try:
    import xmlrpc.client as xmlrpclib
except ImportError:
    import xmlrpclib
import datetime
from spacewalk.common.rhnConfig import CFG
from spacewalk.common.rhnLog import log_debug, log_error
from spacewalk.satellite_tools.progress_bar import ProgressBar
from spacewalk.server.rhnPackage import unlink_package_file
from spacewalk.server import rhnSQL
from socket import getfqdn

class RemoteApi:

    """ Class for connecting to the XMLRPC spacewalk interface"""

    cache = {}

    def __init__(self, server_url, username, password):
        self.client = xmlrpclib.Server(server_url)
        self.auth_time = None
        self.auth_token = None
        try:
            self.username = username
            self.password = password
            self.__login()
        except xmlrpclib.Fault as e:
            raise UserError(e.faultString)


    def auth_check(self):
        """ makes sure that more than an hour hasn't passed since we
             logged in and will relogin if it has
        """
        if not self.auth_time or (datetime.datetime.now()
                                  - self.auth_time).seconds > 60 * 15:  # 15 minutes
            self.__login()


    def __login(self):
        self.auth_token = self.client.auth.login(self.username, self.password)
        self.auth_time = datetime.datetime.now()


    def list_channel_labels(self):
        self.auth_check()
        key = "chan_labels"
        if self.cache.has_key(key):
            return self.cache[key]

        chan_list = self.client.channel.listAllChannels(self.auth_token)
        to_ret = []
        for item in chan_list:
            to_ret.append(item["label"])
        self.cache[key] = to_ret
        return to_ret
    def apply_channel_state(self, server_ids):
        self.auth_check()
        self.client.channel.software.applyChannelState(self.auth_token, server_ids)


def __applyChannelState(server_ids, username, password):
    xmlrpc = RemoteApi("https://" + getfqdn() + "/rpc/api", username, password)
    return xmlrpc.apply_channel_state(server_ids)

def __getMinionsByChannel(labels):
    sql = """
        SELECT DISTINCT  mi.server_id
             FROM rhnChannel c 
             JOIN rhnServerChannel sc ON c.id = sc.channel_id 
             JOIN suseMinionInfo mi ON mi.server_id = sc.server_id 
        WHERE c.label IN (%s)
    """
    params, bind_params = _bind_many(labels)
    bind_params = ', '.join(bind_params)
    h = rhnSQL.prepare(sql % (bind_params))
    h.execute(**params)
    server_list = h.fetchall_dict()
    if not server_list:
        return []
    server_ids = [s['server_id'] for s in server_list]
    return server_ids;


def __serverCheck(labels, unsubscribe):
    sql = """
        select distinct S.org_id, S.id, S.name
        from rhnChannel c inner join
             rhnServerChannel sc on c.id = sc.channel_id inner join
             rhnServer s on s.id = sc.server_id
        where c.label in (%s)
    """
    params, bind_params = _bind_many(labels)
    bind_params = ', '.join(bind_params)
    h = rhnSQL.prepare(sql % (bind_params))
    h.execute(**params)
    server_list = h.fetchall_dict()
    if not server_list:
        return 0

    if unsubscribe:
        return __unsubscribeServers(labels)

    print("\nCurrently there are systems subscribed to one or more of the specified channels.")
    print("If you would like to automatically unsubscribe these systems, simply use the --unsubscribe flag.\n")
    print("The following systems were found to be subscribed:")

    print(("%-8s %-14s name" % ('org_id', 'id')))
    print(("-" * 32))
    for server in server_list:
        print(("%-8s %-14s %s" % (server['org_id'], server['id'], server['name'])))

    return len(server_list)


def __unsubscribeServers(labels):
    sql = """
        select distinct sc.server_id as server_id, C.id as channel_id, c.parent_channel, c.label
        from rhnChannel c inner join
             rhnServerChannel sc on c.id = sc.channel_id
        where c.label in (%s) order by C.parent_channel
    """
    params, bind_params = _bind_many(labels)
    bind_params = ', '.join(bind_params)
    h = rhnSQL.prepare(sql % (bind_params))
    h.execute(**params)
    server_channel_list = h.fetchall_dict()

    if server_channel_list is None:
        server_channel_list = {}

    channel_counts = {}
    for i in server_channel_list:
        if i['label'] in channel_counts:
            channel_counts[i['label']] = channel_counts[i['label']] + 1
        else:
            channel_counts[i['label']] = 1
    print("\nThe following channels will have their systems unsubscribed:")
    channel_list = list(channel_counts.keys())
    channel_list.sort()
    for i in channel_list:
        print(("%-40s %-8s" % (i, channel_counts[i])))

    pb = ProgressBar(prompt='Unsubscribing:    ', endTag=' - complete',
                     finalSize=len(server_channel_list), finalBarLength=40, stream=sys.stdout)
    pb.printAll(1)

    unsubscribe_server_proc = rhnSQL.Procedure("rhn_channel.unsubscribe_server")
    for i in server_channel_list:
        unsubscribe_server_proc(i['server_id'], i['channel_id'])
        pb.addTo(1)
        pb.printIncrement()
    pb.printComplete()
    rhnSQL.commit()


def __kickstartCheck(labels):
    sql = """
        select K.org_id, K.label
        from rhnKSData K inner join
             rhnKickstartDefaults KD on KD.kickstart_id = K.id inner join
             rhnKickstartableTree KT on KT.id = KD.kstree_id inner join
             rhnChannel c on c.id = KT.channel_id
        where c.label in (%s)
    """
    params, bind_params = _bind_many(labels)
    bind_params = ', '.join(bind_params)
    h = rhnSQL.prepare(sql % (bind_params))
    h.execute(**params)
    kickstart_list = h.fetchall_dict()

    if not kickstart_list:
        return 0

    print(("The following kickstarts are associated with one of the specified channels. " +
          "Please remove these or change their associated base channel.\n"))
    print(("%-8s label" % 'org_id'))
    print(("-" * 20))
    for kickstart in kickstart_list:
        print(("%-8s %s" % (kickstart['org_id'], kickstart['label'])))

    return len(kickstart_list)


def __listChannels():
    sql = """
        select c1.label, c2.label parent_channel
        from rhnChannel c1 left outer join rhnChannel c2 on c1.parent_channel = c2.id
        order by c2.label desc, c1.label asc
    """
    h = rhnSQL.prepare(sql)
    h.execute()
    labels = {}
    parents = {}
    while 1:
        row = h.fetchone_dict()
        if not row:
            break
        parent_channel = row['parent_channel']
        labels[row['label']] = parent_channel
        if not parent_channel:
            parents[row['label']] = []

        if parent_channel:
            parents[parent_channel].append(row['label'])

    return labels, parents


def __clonnedChannels(channelLabel):
    sql = """
        select c2.label
        from rhnChannel c1 inner join rhnChannelCloned clone on c1.id=clone.original_id
        inner join rhnChannel c2 on c2.id=clone.id
        where c1.label = :label
    """
    h = rhnSQL.prepare(sql)
    h.execute(label=channelLabel)
    labels = []
    while 1:
        row = h.fetchone_dict()
        if not row:
            break
        labels.append(row['label'])

    return labels

def delete_outside_channels(org):
    rpms_ids = list_packages_without_channels(org, sources=0)
    rpms_paths = _get_package_paths(rpms_ids, sources=0)
    srpms_ids = list_packages_without_channels(org, sources=1)
    srpms_paths = _get_package_paths(srpms_ids, sources=1)

    _delete_srpms(srpms_ids)
    _delete_rpms(rpms_ids)

    _delete_files(rpms_paths + srpms_paths)


def delete_channels(channelLabels, force=0, justdb=0, skip_packages=0, skip_channels=0,
                    skip_kickstart_trees=0, just_kickstart_trees=0):
    # Get the package ids
    if not channelLabels:
        return

    rpms_ids = list_packages(channelLabels, force=force, sources=0)
    rpms_paths = _get_package_paths(rpms_ids, sources=0)
    srpms_ids = list_packages(channelLabels, force=force, sources=1)
    srpms_paths = _get_package_paths(srpms_ids, sources=1)

    if not skip_packages and not just_kickstart_trees:
        _delete_srpms(srpms_ids)
        _delete_rpms(rpms_ids)

    if not skip_kickstart_trees and not justdb:
        _delete_ks_files(channelLabels)

    if not justdb and not skip_packages and not just_kickstart_trees:
        _delete_files(rpms_paths + srpms_paths)

    # Get the channel ids
    h = rhnSQL.prepare("""
        select id, parent_channel
        from rhnChannel
        where label = :label
        order by parent_channel""")
    channel_ids = []
    for label in channelLabels:
        h.execute(label=label)
        row = h.fetchone_dict()
        if not row:
            break
        channel_id = row['id']
        if row['parent_channel']:
            # Subchannel, we have to remove it first
            channel_ids.insert(0, channel_id)
        else:
            channel_ids.append(channel_id)

    if not channel_ids:
        return

    clp = rhnSQL.prepare("""
       select id
       from susecontentenvironmenttarget
       where channel_id = :cid
       """)

    for cid in channel_ids:
        clp.execute(cid=cid)
        row = clp.fetchone()
        if row:
            print("Channel belongs to a Content Lifecycle Project. Please use the web UI or API.")
            return

    indirect_tables = [
        ['rhnKickstartableTree', 'channel_id', 'rhnKSTreeFile', 'kstree_id'],
    ]
    query = """
        delete from %(table_2)s where %(link_field)s in (
            select id
              from %(table_1)s
             where %(channel_field)s = :channel_id
        )
    """
    for e in indirect_tables:
        args = {
            'table_1': e[0],
            'channel_field': e[1],
            'table_2': e[2],
            'link_field': e[3],
        }
        h = rhnSQL.prepare(query % args)
        h.executemany(channel_id=channel_ids)

    tables = [
        ['rhnErrataFileChannel', 'channel_id'],
        ['rhnErrataNotificationQueue', 'channel_id'],
        ['rhnChannelErrata', 'channel_id'],
        ['rhnChannelPackage', 'channel_id'],
        ['rhnRegTokenChannels', 'channel_id'],
        ['rhnServerProfile', 'base_channel'],
        ['rhnKickstartableTree', 'channel_id'],
    ]

    if not skip_channels:
        tables.extend([
            ['suseProductChannel', 'channel_id'],
            ['rhnChannelFamilyMembers', 'channel_id'],
            ['rhnDistChannelMap', 'channel_id'],
            ['rhnReleaseChannelMap', 'channel_id'],
            ['rhnChannel', 'id'],
        ])

    if just_kickstart_trees:
        tables = [['rhnKickstartableTree', 'channel_id']]

    query = "delete from %s where %s = :channel_id"
    for table, field in tables:
        log_debug(3, "Processing table %s" % table)
        h = rhnSQL.prepare(query % (table, field))
        h.executemany(channel_id=channel_ids)

    if not justdb and not just_kickstart_trees:
        __deleteRepoData(channelLabels)


def __deleteRepoData(labels):
    directory = '/var/cache/' + CFG.repomd_path_prefix
    for label in labels:
        if os.path.isdir(directory + '/' + label):
            shutil.rmtree(directory + '/' + label)


def list_packages_without_channels(org_id, sources=0):
    """List packages in given org outside any channel"""

    if sources:
        query = """
            select ps.id from rhnPackage p inner join
                              rhnPackageSource ps on p.source_rpm_id = ps.source_rpm_id left join
                              rhnChannelPackage cp on cp.package_id = p.id
            where cp.channel_id is null
        """
    else:
        query = """
            select p.id from rhnPackage p left join
                             rhnChannelPackage cp on cp.package_id = p.id
            where cp.channel_id is null
        """

    if org_id:
        query += """
            and p.org_id = :org_id
        """
        if sources:
            query += """
                and p.org_id = ps.org_id
            """
    else:
        query += """
            and p.org_id is null
        """
        if sources:
            query += """
                and ps.org_id is null
            """

    h = rhnSQL.prepare(query)
    h.execute(org_id=org_id)

    return [x['id'] for x in h.fetchall_dict() or []]


def list_packages(channelLabels, sources=0, force=0):
    "List the source ids for the channels"
    if sources:
        packages = "srpms"
    else:
        packages = "rpms"
    log_debug(3, "Listing %s" % packages)
    if not channelLabels:
        return []

    params, bind_params = _bind_many(channelLabels)
    bind_params = ', '.join(bind_params)

    if sources:
        templ = _templ_srpms()
    else:
        templ = _templ_rpms()

    if force:
        query = templ % ("", bind_params)
    else:
        minus_op = 'EXCEPT'  # ANSI syntax
        query = """
            %s
            %s
            %s
        """ % (
            templ % ("", bind_params),
            minus_op,
            templ % ("not", bind_params),
        )
    h = rhnSQL.prepare(query)
    h.execute(**params)
    return [x['id'] for x in h.fetchall_dict() or []]


def _templ_rpms():
    "Returns a template for querying rpms"
    log_debug(4, "Generating template for querying rpms")
    return """\
        select cp.package_id id
        from rhnChannel c, rhnChannelPackage cp
        where c.label %s in (%s)
        and cp.channel_id = c.id"""


def _templ_srpms():
    "Returns a template for querying srpms"
    log_debug(4, "Generating template for querying srpms")
    return """\
        select  ps.id id
        from    rhnPackage p,
                rhnPackageSource ps,
                rhnChannelPackage cp,
                rhnChannel c
        where   c.label %s in (%s)
            and c.id = cp.channel_id
            and cp.package_id = p.id
            and p.source_rpm_id = ps.source_rpm_id
            and ((p.org_id is null and ps.org_id is null) or
                p.org_id = ps.org_id)"""


def _delete_srpms(srcPackageIds):
    """Blow away rhnPackageSource and rhnFile entries.
    """
    if not srcPackageIds:
        return
    # nuke the rhnPackageSource entry
    h = rhnSQL.prepare("""
        delete
        from rhnPackageSource
        where id = :id
    """)
    h.executemany(id=srcPackageIds)


def _delete_rpms(packageIds):
    if not packageIds:
        return
    group = 300
    toDel = packageIds[:]
    print("Deleting package metadata (" + str(len(toDel)) + "):")
    pb = ProgressBar(prompt='Removing:         ', endTag=' - complete',
                     finalSize=len(packageIds), finalBarLength=40, stream=sys.stdout)
    pb.printAll(1)

    while toDel:
        _delete_rpm_group(toDel[:group])
        del toDel[:group]
        pb.addTo(group)
        pb.printIncrement()
    pb.printComplete()


def _delete_rpm_group(packageIds):

    references = [
        'rhnChannelPackage',
        'rhnErrataPackage',
        'rhnErrataPackageTMP',
        'rhnPackageChangelogRec',
        'rhnPackageConflicts',
        'rhnPackageFile',
        'rhnPackageObsoletes',
        'rhnPackageProvides',
        'rhnPackageRequires',
        'rhnPackageRecommends',
        'rhnPackageSuggests',
        'rhnPackageSupplements',
        'rhnPackageEnhances',
        'rhnPackageBreaks',
        'rhnPackagePredepends',
        'rhnServerNeededCache',
        'susePackageProductFile',
    ]
    deleteStatement = "delete from %s where package_id = :package_id"
    for table in references:
        h = rhnSQL.prepare(deleteStatement % table)
        h.executemany(package_id=packageIds)
    deleteStatement = "delete from rhnPackage where id = :package_id"
    h = rhnSQL.prepare(deleteStatement)
    h.executemany(package_id=packageIds)
    rhnSQL.commit()


def _delete_files(relpaths):
    for relpath in relpaths:
        path = os.path.join(CFG.MOUNT_POINT, relpath)
        if not os.path.exists(path):
            log_debug(1, "Not removing %s: no such file" % path)
            continue
        unlink_package_file(path)


def _bind_many(l):
    h = {}
    lr = []
    for i, item in enumerate(l):
        key = 'p_%s' % i
        h[key] = item
        lr.append(':' + key)
    return h, lr


def _get_package_paths(package_ids, sources=0):
    if sources:
        table = "rhnPackageSource"
    else:
        table = "rhnPackage"
    h = rhnSQL.prepare("select path from %s where id = :package_id" % table)
    pdict = {}
    for package_id in package_ids:
        h.execute(package_id=package_id)
        row = h.fetchone_dict()
        if not row:
            continue
        if not row['path']:
            continue
        pdict[row['path']] = None

    return list(pdict.keys())


def _delete_ks_files(channel_labels):
    sql = """
        select kt.base_path
          from rhnChannel c
          join rhnKickstartableTree kt on c.id = kt.channel_id
         where c.label in (%s) and not exists (
                select 1
                  from rhnKickstartableTree ktx
                  join rhnChannel cx on cx.id = ktx.channel_id
                 where replace(ktx.base_path, :mnt_point, '') =
                       replace(kt.base_path, :mnt_point, '')
                   and cx.label not in (%s))
    """

    params, bind_params = _bind_many(channel_labels)
    params['mnt_point'] = CFG.MOUNT_POINT + '/'
    bind_params = ', '.join(bind_params)
    h = rhnSQL.prepare(sql % (bind_params, bind_params))
    h.execute(**params)
    kickstart_list = h.fetchall_dict() or []

    for kickstart in kickstart_list:
        path = os.path.join(CFG.MOUNT_POINT, str(kickstart['base_path']))
        if not os.path.exists(path):
            log_debug(1, "Not removing %s: no such file" % path)
            continue
        shutil.rmtree(path)
class UserError(Exception):

    def __init__(self, msg):
        Exception.__init__(self)
        self.msg = msg

    def __str__(self):
        return self.msg
070701000000C1000081B40000000000000000000000016290A0C100001E68000000000000000000000000000000000000003300000000spacewalk-backend/satellite_tools/diskImportLib.py    #
# Common dumper stuff
#
# Copyright (c) 2008--2017 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#
#

import os

from . import xmlSource
from uyuni.common.rhnLib import hash_object_id
from spacewalk.server.importlib.backendOracle import SQLBackend
from spacewalk.server.importlib.channelImport import ChannelImport, ChannelFamilyImport
from spacewalk.server.importlib.packageImport import PackageImport, SourcePackageImport
from spacewalk.server.importlib import archImport
from spacewalk.server.importlib import productNamesImport
from spacewalk.server.importlib import orgImport
from spacewalk.server.importlib import supportInformationImport, suseProductsImport


class Backend:
    __backend = None

    def __init__(self):
        pass

    def get_backend(self):
        if self.__backend:
            return self.__backend

        Backend.__backend = SQLBackend()
        return Backend.__backend

# get_backend() returns a shared instance of an Oracle backend


def get_backend():
    return Backend().get_backend()

# Functions for dumping packages


def rpmsPath(obj_id, mountPoint, sources=0):
    # returns the package path (for exporter/importer only)
    # not to be confused with where the package lands on the satellite itself.
    if not sources:
        template = "%s/rpms/%s/%s.rpm"
    else:
        template = "%s/srpms/%s/%s.rpm"
    return os.path.normpath(template % (mountPoint, hash_object_id(obj_id, 2), obj_id))


# pylint: disable=W0232
class diskImportLibContainer:

    """virtual class - redefines endContainerCallback"""
    # pylint: disable=E1101,E0203,W0201
    # this class has no __init__ for the purpose
    # it's used in multiple inheritance mode and inherited classes should
    # use __init__ from the other base class

    importer_class = object

    def endContainerCallback(self):
        importer = self.importer_class(self.batch, get_backend())
        importer.run()
        self.batch = []


class OrgContainer(xmlSource.OrgContainer):
    importer_class = orgImport.OrgImport
    master_label = None
    create_orgs = False

    def __init__(self):
        xmlSource.OrgContainer.__init__(self)

    def set_master_and_create_org_args(self, master, create_orgs):
        self.master_label = master
        self.create_orgs = create_orgs

    def endContainerCallback(self):
        importer = self.importer_class(self.batch, get_backend(),
                                       self.master_label, self.create_orgs)
        importer.run()
        self.batch = []


class ProductNamesContainer(diskImportLibContainer, xmlSource.ProductNamesContainer):
    importer_class = productNamesImport.ProductNamesImport

    def endContainerCallback(self):
        if not self.batch:
            return
        diskImportLibContainer.endContainerCallback(self)


class ChannelArchContainer(diskImportLibContainer, xmlSource.ChannelArchContainer):
    importer_class = archImport.ChannelArchImport


class PackageArchContainer(diskImportLibContainer, xmlSource.PackageArchContainer):
    importer_class = archImport.PackageArchImport


class ServerArchContainer(diskImportLibContainer, xmlSource.ServerArchContainer):
    importer_class = archImport.ServerArchImport


class CPUArchContainer(diskImportLibContainer, xmlSource.CPUArchContainer):
    importer_class = archImport.CPUArchImport


class ServerPackageArchCompatContainer(diskImportLibContainer, xmlSource.ServerPackageArchCompatContainer):
    importer_class = archImport.ServerPackageArchCompatImport


class ServerChannelArchCompatContainer(diskImportLibContainer, xmlSource.ServerChannelArchCompatContainer):
    importer_class = archImport.ServerChannelArchCompatImport


class ChannelPackageArchCompatContainer(diskImportLibContainer, xmlSource.ChannelPackageArchCompatContainer):
    importer_class = archImport.ChannelPackageArchCompatImport


class ServerGroupServerArchCompatContainer(diskImportLibContainer, xmlSource.ServerGroupServerArchCompatContainer):
    importer_class = archImport.ServerGroupServerArchCompatImport


class ChannelFamilyContainer(diskImportLibContainer, xmlSource.ChannelFamilyContainer):
    importer_class = ChannelFamilyImport


class ChannelContainer(diskImportLibContainer, xmlSource.ChannelContainer):
    importer_class = ChannelImport


class PackageContainer(diskImportLibContainer, xmlSource.PackageContainer):
    importer_class = PackageImport


class SourcePackageContainer(diskImportLibContainer, xmlSource.SourcePackageContainer):
    importer_class = SourcePackageImport

class SupportInformationContainer(diskImportLibContainer, xmlSource.SupportInformationContainer):
    importer_class = supportInformationImport.SupportInformationImport
    def endContainerCallback(self):
        if not self.batch:
            return
        diskImportLibContainer.endContainerCallback(self)

class SuseProductsContainer(diskImportLibContainer, xmlSource.SuseProductsContainer):
    importer_class = suseProductsImport.SuseProductsImport
    def endContainerCallback(self):
        if not self.batch:
            return
        diskImportLibContainer.endContainerCallback(self)

class SuseProductChannelsContainer(diskImportLibContainer, xmlSource.SuseProductChannelsContainer):
    importer_class = suseProductsImport.SuseProductChannelsImport
    def endContainerCallback(self):
        if not self.batch:
            return
        diskImportLibContainer.endContainerCallback(self)

class SuseUpgradePathsContainer(diskImportLibContainer, xmlSource.SuseUpgradePathsContainer):
    importer_class = suseProductsImport.SuseUpgradePathsImport
    def endContainerCallback(self):
        if not self.batch:
            return
        diskImportLibContainer.endContainerCallback(self)

class SuseProductExtensionsContainer(diskImportLibContainer, xmlSource.SuseProductExtensionsContainer):
    importer_class = suseProductsImport.SuseProductExtensionsImport
    def endContainerCallback(self):
        if not self.batch:
            return
        diskImportLibContainer.endContainerCallback(self)

class SuseProductRepositoriesContainer(diskImportLibContainer, xmlSource.SuseProductRepositoriesContainer):
    importer_class = suseProductsImport.SuseProductRepositoriesImport
    def endContainerCallback(self):
        if not self.batch:
            return
        diskImportLibContainer.endContainerCallback(self)

class SCCRepositoriesContainer(diskImportLibContainer, xmlSource.SCCRepositoriesContainer):
    importer_class = suseProductsImport.SCCRepositoriesImport
    def endContainerCallback(self):
        if not self.batch:
            return
        diskImportLibContainer.endContainerCallback(self)

class SuseSubscriptionsContainer(diskImportLibContainer, xmlSource.SuseSubscriptionsContainer):
    importer_class = suseProductsImport.SuseSubscriptionsImport
    def endContainerCallback(self):
        if not self.batch:
            return
        diskImportLibContainer.endContainerCallback(self)

class ClonedChannelsContainer(diskImportLibContainer, xmlSource.ClonedChannelsContainer):
    importer_class = suseProductsImport.ClonedChannelsImport
    def endContainerCallback(self):
        if not self.batch:
            return
        diskImportLibContainer.endContainerCallback(self)
070701000000C2000041FD0000000000000000000000016290A0C100000000000000000000000000000000000000000000002E00000000spacewalk-backend/satellite_tools/disk_dumper 070701000000C3000081B40000000000000000000000016290A0C100000591000000000000000000000000000000000000003700000000spacewalk-backend/satellite_tools/disk_dumper/Makefile    # Makefile for spacewalk backend
#
#
# Copyright (c) 2008--2013 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
# 
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation. 
#
#

TOP	= ../..

# Specific stuff
SUBDIR	= satellite_tools/disk_dumper
SPACEWALK_FILES	= __init__ iss iss_isos iss_ui iss_actions dumper string_buffer
SCRIPTS = rhn-satellite-exporter
BINDIR	= /usr/bin
include $(TOP)/Makefile.defs

#Man page specific stuff
DOCBOOK = $(wildcard /usr/bin/docbook2man)

SGMLS	= $(wildcard *.sgml)
MANS	= $(patsubst %.sgml,%.8,$(SGMLS))

MANDIR	?= /usr/man

EXTRA_DIRS = $(MANDIR)/man8 $(BINDIR)

# install scripts
all :: $(SCRIPTS)
install :: $(SCRIPTS) $(PREFIX)/$(BINDIR)
	$(INSTALL_BIN) $(SCRIPTS) $(PREFIX)/$(BINDIR)

ifneq ($(DOCBOOK),)
# install man pages
all	:: $(MANS)
install :: $(MANS) $(PREFIX)/$(MANDIR)
	$(INSTALL_DATA) $(MANS) $(PREFIX)/$(MANDIR)/man8
endif


%.8 : %.sgml
	$(DOCBOOK) $<

clean ::
	@rm -fv $(MANS) manpage.* *.new
   070701000000C4000081B40000000000000000000000016290A0C100000265000000000000000000000000000000000000003A00000000spacewalk-backend/satellite_tools/disk_dumper/__init__.py #
# Copyright (c) 2008--2015 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#
   070701000000C5000081B40000000000000000000000016290A0C100009312000000000000000000000000000000000000003800000000spacewalk-backend/satellite_tools/disk_dumper/dumper.py   #
# Copyright (c) 2008--2018 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#

import time
import gzip
import sys
import tempfile
try:
    #  python 2
    from cStringIO import StringIO
except ImportError:
    #  python3
    from io import StringIO

from uyuni.common.usix import raise_with_tb, ListType
from uyuni.common import rhnLib
from spacewalk.common import rhnCache, rhnFlags
from spacewalk.common.rhnLog import log_debug, log_error
from spacewalk.common.rhnConfig import CFG
from spacewalk.common.rhnException import rhnFault
from spacewalk.server import rhnSQL
from spacewalk.satellite_tools import constants
from spacewalk.satellite_tools.exporter import exportLib, xmlWriter
from .string_buffer import StringBuffer


class XML_Dumper:

    def __init__(self):
        self.compress_level = 5
        self.llimit = None
        self.ulimit = None
        self._channel_family_query = """
             select cf.id channel_family_id, to_number(null, null) quantity
             from rhnChannelFamily cf
        """
        self.channel_ids = []
        self.channel_ids_for_families = []
        self.exportable_orgs = 'null'
        self._raw_stream = None

    def send(self, data):
        # to be overwritten in subclass
        pass

    def close(self):
        # to be overwritten in subclass
        pass

    def get_channel_families_statement(self):
        query = """
            select cf.*, scf.quantity max_members
              from rhnChannelFamily cf,
                   (%s
                   ) scf
             where scf.channel_family_id = cf.id
        """ % self._channel_family_query
        return rhnSQL.prepare(query)

    @staticmethod
    def get_orgs_statement(org_ids):
        query = """
            select wc.id, wc.name
              from web_customer wc
             where wc.id in (%s)
        """ % org_ids
        return rhnSQL.prepare(query)

    @staticmethod
    def get_channel_families_statement_new(cids):

        args = {
            'ch_ids': cids
        }

        query = """
            select distinct cf.*, to_number(null, null) max_members
              from rhnchannelfamily cf, rhnchannelfamilymembers cfm
              where cf.id = cfm.channel_family_id and cfm.channel_id in ( %(ch_ids)s )
        """
        return rhnSQL.prepare(query % args)

    @staticmethod
    def get_product_names_statement(cids):
        if cids:
            query = """
                select distinct pn.label, pn.name
                  from rhnchannel c, rhnproductname pn
                  where c.product_name_id = pn.id and c.id in ( %s )
            """ % cids
        else:
            query = """
                select label, name from rhnproductname
            """
        return rhnSQL.prepare(query)

    def get_channels_statement(self):
        query = """
            select c.id channel_id, c.label,
                   ct.label as checksum_type,
                   TO_CHAR(c.last_modified, 'YYYYMMDDHH24MISS') last_modified
              from rhnChannel c left outer join rhnChecksumType ct on c.checksum_type_id = ct.id,
                   rhnChannelFamilyMembers cfm,
                   (%s
                   ) scf
             where scf.channel_family_id = cfm.channel_family_id
               and cfm.channel_id = c.id
        """ % self._channel_family_query
        return rhnSQL.prepare(query)

    def get_packages_statement(self):
        query = """
            select p.id package_id,
                   TO_CHAR(p.last_modified, 'YYYYMMDDHH24MISS') last_modified
              from rhnChannelPackage cp, rhnPackage p,
                   rhnChannelFamilyMembers cfm,
                   (%s
                   ) scf
             where scf.channel_family_id = cfm.channel_family_id
               and cfm.channel_id = cp.channel_id
               and cp.package_id = :package_id
               and p.id = :package_id
        """ % self._channel_family_query
        return rhnSQL.prepare(query)

    def get_source_packages_statement(self):
        query = """
            select ps.id package_id,
                   TO_CHAR(ps.last_modified, 'YYYYMMDDHH24MISS') last_modified
              from rhnChannelPackage cp, rhnPackage p, rhnPackageSource ps,
                   rhnChannelFamilyMembers cfm,
                   (%s
                   ) scf
             where scf.channel_family_id = cfm.channel_family_id
               and cfm.channel_id = cp.channel_id
               and cp.package_id = p.id
               and p.source_rpm_id = ps.source_rpm_id
               and ((p.org_id is null and ps.org_id is null) or
                     p.org_id = ps.org_id)
               and ps.id = :package_id
        """ % self._channel_family_query
        return rhnSQL.prepare(query)

    def get_errata_statement(self):
        query = """
            select e.id errata_id,
                   TO_CHAR(e.last_modified, 'YYYYMMDDHH24MISS') last_modified
              from rhnChannelErrata ce, rhnErrata e,
                   rhnChannelFamilyMembers cfm,
                   (%s
                   ) scf
             where scf.channel_family_id = cfm.channel_family_id
               and cfm.channel_id = ce.channel_id
               and ce.errata_id = :errata_id
               and e.id = :errata_id
        """ % self._channel_family_query
        return rhnSQL.prepare(query)

    def _get_xml_writer(self):
        return xmlWriter.XMLWriter(stream=StringBuffer(self))

    def _write_dump(self, item_dumper_class, **kwargs):
        writer = self._get_xml_writer()
        dumper = SatelliteDumper(writer, item_dumper_class(writer, **kwargs))
        dumper.dump()
        writer.flush()
        log_debug(4, "OK")

    # Dumper functions here
    def dump_blacklist_obsoletes(self):
        log_debug(2)
        self._write_dump(exportLib.BlacklistObsoletesDumper)
        return 0

    def dump_arches(self, rpm_arch_type_only=0):
        log_debug(2)
        writer = self._get_xml_writer()
        dumper = SatelliteDumper(
            writer,
            exportLib.ChannelArchesDumper(writer, rpm_arch_type_only=rpm_arch_type_only),
            exportLib.PackageArchesDumper(writer, rpm_arch_type_only=rpm_arch_type_only),
            exportLib.ServerArchesDumper(writer, rpm_arch_type_only=rpm_arch_type_only),
            exportLib.CPUArchesDumper(writer),
            exportLib.ServerPackageArchCompatDumper(writer, rpm_arch_type_only=rpm_arch_type_only),
            exportLib.ServerChannelArchCompatDumper(writer, rpm_arch_type_only=rpm_arch_type_only),
            exportLib.ChannelPackageArchCompatDumper(writer, rpm_arch_type_only=rpm_arch_type_only))
        dumper.dump()
        writer.flush()
        log_debug(4, "OK")
        self.close()
        return 0

    def dump_product_names(self):
        log_debug(2)

        # Export only product names for relevant channels
        cids = ','.join([str(x['channel_id']) for x in self.channel_ids + self.channel_ids_for_families])
        h = self.get_product_names_statement(cids)
        h.execute()

        self._write_dump(exportLib.ProductNamesDumper, data_iterator=h)
        return 0

    def dump_server_group_type_server_arches(self, rpm_arch_type_only=0,
                                             virt_filter=0):
        log_debug(2)
        self._write_dump(exportLib.ServerGroupTypeServerArchCompatDumper,
                         rpm_arch_type_only=rpm_arch_type_only, virt_filter=virt_filter)
        return 0

    def dump_channel_families(self):
        log_debug(2)

        cids = ','.join([str(x['channel_id']) for x in self.channel_ids + self.channel_ids_for_families])

        h = self.get_channel_families_statement_new(cids)
        h.execute()

        self._write_dump(exportLib.ChannelFamiliesDumper,
                         data_iterator=h, null_max_members=0)
        return 0

    def set_exportable_orgs(self, org_list):
        if not org_list:
            self.exportable_orgs = 'null'
        elif isinstance(org_list, type('')):
            self.exportable_orgs = org_list
        else:
            self.exportable_orgs = ', '.join([str(x) for x in org_list])

    def dump_orgs(self):
        log_debug(2)

        h = self.get_orgs_statement(self.exportable_orgs)
        h.execute()

        self._write_dump(exportLib.OrgsDumper, data_iterator=h)
        return 0

    def dump_channels(self, channel_labels=None, start_date=None, end_date=None, use_rhn_date=True, whole_errata=False):
        log_debug(2)
        #channels = self._validate_channels(channel_labels=channel_labels)

        self._write_dump(ChannelsDumper,
                         channels=channel_labels, start_date=start_date, end_date=end_date, use_rhn_date=use_rhn_date,
                         whole_errata=whole_errata)
        return 0

    def _send_headers(self, error=0, init_compressed_stream=1):
        """to be overwritten in subclass"""
        pass

    def dump_channel_packages_short(self, channel_label, last_modified, filepath=None,
                                    validate_channels=False, send_headers=False,
                                    open_stream=True):
        log_debug(2, channel_label)
        if validate_channels:
            channels = self._validate_channels(channel_labels=[channel_label])
            channel_obj = channels[channel_label]
        else:
            channels = channel_label
            channel_obj = channels
        db_last_modified = int(rhnLib.timestamp(channel_obj['last_modified']))
        last_modified = int(rhnLib.timestamp(last_modified))
        log_debug(3, "last modified", last_modified, "db last modified",
                  db_last_modified)
        if last_modified != db_last_modified:
            raise rhnFault(3013, "The requested channel version does not match"
                           " the upstream version", explain=0)
        channel_id = channel_obj['channel_id']
        if filepath:
            key = filepath
        else:
            key = "xml-channel-packages/rhn-channel-%d.data" % channel_id
        # Try to get everything off of the cache
        val = rhnCache.get(key, compressed=0, raw=1, modified=last_modified)
        if val is None:
            # Not generated yet
            log_debug(4, "Cache MISS for %s (%s)" % (channel_label,
                                                     channel_id))
            stream = self._cache_channel_packages_short(channel_id, key,
                                                        last_modified)
        else:
            log_debug(4, "Cache HIT for %s (%s)" % (channel_label,
                                                    channel_id))
            temp_stream = tempfile.TemporaryFile()
            temp_stream.write(bytes(val, encoding="latin-1"))
            temp_stream.flush()
            stream = self._normalize_compressed_stream(temp_stream)

        # Copy the results to the output stream
        # They shold be already compressed if they were requested to be
        # compressed
        buffer_size = 16384
        # Send the HTTP headers - but don't init the compressed stream since
        # we send the data ourselves
        if send_headers:
            self._send_headers(init_compressed_stream=0)
        if open_stream:
            self._raw_stream = open(key, "w")
        while 1:
            buff = stream.read(buffer_size)
            if not buff:
                break
            try:
                self._raw_stream.write(buff)
            except IOError:
                log_error("Client disconnected prematurely")
                self.close()
                raise_with_tb(ClosedConnectionError, sys.exc_info()[2])
        # We're done
        if open_stream:
            self._raw_stream.close()
        return 0

    _query_get_channel_packages = rhnSQL.Statement("""
        select cp.package_id,
               TO_CHAR(p.last_modified, 'YYYYMMDDHH24MISS') last_modified
          from rhnChannelPackage cp,
               rhnPackage p
         where cp.channel_id = :channel_id
           and cp.package_id = p.id
    """)

    def _cache_channel_packages_short(self, channel_id, key, last_modified):
        """ Caches the short package entries for channel_id """
        # Create a temporary file
        temp_stream = tempfile.TemporaryFile()
        stream = StringIO()
        # Always compress the result
        compress_level = 5
        writer = xmlWriter.XMLWriter(stream=stream)

        # Fetch packages
        h = rhnSQL.prepare(self._query_get_channel_packages)
        h.execute(channel_id=channel_id)
        package_ids = h.fetchall_dict() or []
        # Sort packages
        package_ids.sort(key=lambda a: a['package_id'])

        dumper = SatelliteDumper(writer,
                                 ShortPackagesDumper(writer, package_ids))
        dumper.dump()
        writer.flush()
        stream.seek(0, 0)
        temp_stream.write(gzip.compress(data=stream.read().encode(), compresslevel=compress_level))
        # We're done with the stream object
        stream.close()
        del stream
        temp_stream.seek(0, 0)
        # Set the value in the cache. We don't recompress the result since
        # it's already compressed
        rhnCache.set(key, temp_stream.read(), modified=last_modified,
                     compressed=0, raw=1)
        return self._normalize_compressed_stream(temp_stream)

    def _normalize_compressed_stream(self, stream):
        """ Given a compressed stream, will either return the stream, or will
            decompress it and return it, depending on the compression level
            self.compress_level
        """
        stream.seek(0, 0)
        if self.compress_level:
            # Output should be compressed; nothing else to to
            return stream
        # Argh, have to decompress
        return gzip.GzipFile(None, "rb", 0, stream)

    def dump_packages(self, packages):
        log_debug(2)
        return self._packages(packages, prefix='rhn-package-',
                              dump_class=PackagesDumper)

    def dump_packages_short(self, packages):
        log_debug(2)
        return self._packages(packages, prefix='rhn-package-',
                              dump_class=ShortPackagesDumper)

    def dump_source_packages(self, packages):
        log_debug(2)
        return self._packages(packages, prefix='rhn-source-package-',
                              dump_class=SourcePackagesDumper, sources=1)

    @staticmethod
    def _get_item_id(prefix, name, errnum, errmsg):
        prefix_len = len(prefix)
        if name[:prefix_len] != prefix:
            raise rhnFault(errnum, errmsg % name)
        try:
            uuid = int(name[prefix_len:])
        except ValueError:
            raise_with_tb(rhnFault(errnum, errmsg % name), sys.exc_info()[2])
        return uuid

    def _packages(self, packages, prefix, dump_class, sources=0,
                  verify_packages=False):
        packages_hash = {}
        if verify_packages:
            if sources:
                h = self.get_source_packages_statement()
            else:
                h = self.get_packages_statement()

            for package in packages:
                package_id = self._get_item_id(prefix, str(package),
                                               3002, 'Invalid package name %s')
                if package_id in packages_hash:
                    # Already verified
                    continue
                h.execute(package_id=package_id)
                row = h.fetchone_dict()
                if not row:
                    # XXX Silently ignore it?
                    raise rhnFault(3003, "No such package %s" % package)
                # Saving the row, it's handy later when we create the iterator
                packages_hash[package_id] = row
        else:
            for package in packages:
                packages_hash[package['package_id']] = package

        self._write_dump(dump_class, params=list(packages_hash.values()))
        return 0

    def dump_errata(self, errata, verify_errata=False):
        log_debug(2)

        errata_hash = {}
        if verify_errata:
            h = self.get_errata_statement()
            for erratum in errata:
                errata_id = self._get_item_id('rhn-erratum-', str(erratum),
                                              3004, "Wrong erratum name %s")
                if errata_id in errata_hash:
                    # Already verified
                    continue
                h.execute(errata_id=errata_id)
                row = h.fetchone_dict()
                if not row:
                    # XXX Silently ignore it?
                    raise rhnFault(3005, "No such erratum %s" % erratum)
                # Saving the row, it's handy later when we create the iterator
                errata_hash[errata_id] = row
        else:
            for erratum in errata:
                errata_hash[erratum['errata_id']] = erratum

        self._write_dump(ErrataDumper, params=list(errata_hash.values()))
        return 0

    def dump_kickstartable_trees(self, kickstart_labels=None,
                                 validate_kickstarts=False):
        log_debug(2)
        if validate_kickstarts:
            kickstart_labels = self._validate_kickstarts(
                kickstart_labels=kickstart_labels)

        self._write_dump(KickstartableTreesDumper, params=kickstart_labels)
        return 0

    def _validate_channels(self, channel_labels=None):
        log_debug(4)
        # Sanity check
        if channel_labels:
            if not isinstance(channel_labels, ListType):
                raise rhnFault(3000,
                               "Expected list of channels, got %s" % type(channel_labels))

        h = self.get_channels_statement()
        h.execute()
        # Hash the list of all available channels based on the label
        all_channels_hash = {}
        while 1:
            row = h.fetchone_dict()
            if not row:
                break
            all_channels_hash[row['label']] = row

        # Intersect the list of channels they've sent to us
        iss_slave_sha256_capable = (float(rhnFlags.get('X-RHN-Satellite-XML-Dump-Version'))
                                    >= constants.SHA256_SUPPORTED_VERSION)

        if not channel_labels:
            channels = all_channels_hash
        else:
            channels = {}
            for label in channel_labels:
                if label not in all_channels_hash:
                    raise rhnFault(3001, "Could not retrieve channel %s" %
                                   label)
                if not (iss_slave_sha256_capable
                        or all_channels_hash[label]['checksum_type'] in [None, 'sha1']):
                    raise rhnFault(3001,
                                   ("Channel %s has incompatible rpm checksum (%s). Please contact\n"
                                    + "SUSE support for information about upgrade to newer version\n"
                                    + "of SUSE Manager Server which supports it.") %
                                   (label, all_channels_hash[label]['checksum_type']))
                channels[label] = all_channels_hash[label]

        return channels

    _query_validate_kickstarts = rhnSQL.Statement("""
        select kt.label kickstart_label,
               TO_CHAR(kt.modified, 'YYYYMMDDHH24MISS') last_modified
          from rhnKickstartableTree kt
         where kt.channel_id = :channel_id
           and kt.org_id is null
    """)

    def _validate_kickstarts(self, kickstart_labels):
        log_debug(4)
        # Saity check
        if kickstart_labels:
            if not isinstance(kickstart_labels, ListType):
                raise rhnFault(3000,
                               "Expected list of kickstart labels, got %s" %
                               type(kickstart_labels))

        all_ks_hash = {}

        h = self.get_channels_statement()
        h.execute()

        hk = rhnSQL.prepare(self._query_validate_kickstarts)
        while 1:
            channel = h.fetchone_dict()
            if not channel:
                break

            hk.execute(channel_id=channel['channel_id'])
            while 1:
                row = hk.fetchone_dict()
                if not row:
                    break
                all_ks_hash[row['kickstart_label']] = row

        if not kickstart_labels:
            return list(all_ks_hash.values())

        result = []
        for l in kickstart_labels:
            if l in all_ks_hash:
                result.append(all_ks_hash[l])

        return result

    def dump_support_information(self):
        log_debug(2)
        self._write_dump(exportLib.SupportInfoDumper)
        return 0

    def dump_suse_products(self):
        log_debug(2)
        self._write_dump(exportLib.SuseProductDumper)
        return 0

    def dump_suse_product_channels(self):
        log_debug(2)
        self._write_dump(exportLib.SuseProductChannelDumper)
        return 0

    def dump_suse_upgrade_paths(self):
        log_debug(2)
        self._write_dump(exportLib.SuseUpgradePathDumper)
        return 0

    def dump_suse_product_extensions(self):
        log_debug(2)
        self._write_dump(exportLib.SuseProductExtensionDumper)
        return 0

    def dump_suse_product_repositories(self):
        log_debug(2)
        self._write_dump(exportLib.SuseProductRepositoryDumper)
        return 0

    def dump_scc_repositories(self):
        log_debug(2)
        self._write_dump(exportLib.SCCRepositoryDumper)
        return 0

    def dump_suse_subscriptions(self):
        log_debug(2)
        self._write_dump(exportLib.SuseSubscriptionDumper)
        return 0

    def dump_cloned_channels(self):
        log_debug(2)
        self._write_dump(exportLib.ClonedChannelsDumper)
        return 0

class SatelliteDumper(exportLib.SatelliteDumper):

    def set_attributes(self):
        """ Overriding with our own version """
        attributes = exportLib.SatelliteDumper.set_attributes(self)
        attributes['version'] = constants.PROTOCOL_VERSION
        attributes['generation'] = CFG.SAT_CERT_GENERATION
        return attributes


class QueryIterator:

    """ A query iterator successively applies the list of params as execute() to the
        statement that was passed in, and presents the union of the result sets as a
        single result set.
        Params is a list of dictionaries that would fill the named bound variables
        from the statement.
    """

    def __init__(self, statement, params):
        self._statement = statement
        self._params = params
        # Position in the params list
        self._params_pos = -1
        self._result_set_exhausted = 1

    def fetchone_dict(self):
        log_debug(4)
        while 1:
            if self._result_set_exhausted:
                # Nothing to do here, move to the next set of params
                pos = self._params_pos
                pos = pos + 1
                self._params_pos = pos
                if pos == len(self._params):
                    # End of the list, we're done
                    return None
                # Execute the satement
                log_debug(5, "Using param", pos, self._params[pos])
                self._statement.execute(**self._params[pos])
                self._result_set_exhausted = 0
                # Go back into the loop
                continue

            # Result set not exhausted yet
            row = self._statement.fetchone_dict()
            if row:
                return row

            self._result_set_exhausted = 1


class CachedQueryIterator:

    """ This class will attempt to retrieve information, either from the database or
        from a local cache.

        Note that we expect at most one result set per database query - this can be
        easily fixed if we need more.
    """

    def __init__(self, statement, params, cache_get):
        self._statement = statement
        # XXX params has to be a list of hashes, containing at least a
        # last_modified - which is stripped before the execution of the
        # statement
        self._params = params
        self._params_pos = 0
        self._cache_get = cache_get

    def fetchone_dict(self):
        log_debug(4)
        while 1:
            if self._params_pos == len(self._params):
                log_debug(4, "End of iteration")
                self.close()
                return None
            log_debug(4, "Fetching set for param", self._params_pos)
            # Get the last modified attribute
            params = self._params[self._params_pos]
            self._params_pos = self._params_pos + 1

            # Look up the object in the cache
            val = self._cache_get(params)
            if val is not None:
                # Entry is cached
                log_debug(2, "Cache HIT for %s" % params)
                return val

            log_debug(4, "Cache MISS for %s" % params)
            start = time.time()
            self._execute(params)
            row = self._statement.fetchone_dict()

            if row:
                log_debug(5, "Timer: %.2f" % (time.time() - start))
                return (params, row)

        # Dummy return
        return None

    def _execute(self, params):
        log_debug(4, params)
        self._statement.execute(**params)

    def close(self):
        """ Make sure we remove references to these objects, or circular
            references can occur.
        """
        log_debug(3, "Closing the iterator")
        self._statement = None
        self._cache_get = None
        self._params = None


class CachedDumper(exportLib.BaseDumper):
    iterator_query = None
    item_id_key = 'id'
    hash_factor = 1
    key_template = 'dump/%s/dump-%s.xml'

    def __init__(self, writer, params):
        statement = rhnSQL.prepare(self.iterator_query)
        iterator = CachedQueryIterator(statement, params,
                                       cache_get=self.cache_get)
        exportLib.BaseDumper.__init__(self, writer, data_iterator=iterator)
        self.non_cached_class = self.__class__.__bases__[1]

    @staticmethod
    def _get_last_modified(params):
        """ To be overwritten. """
        return params['last_modified']

    def _get_key(self, params):
        item_id = str(params[self.item_id_key])
        hash_val = rhnLib.hash_object_id(item_id, self.hash_factor)
        return self.key_template % (hash_val, item_id)

    def cache_get(self, params):
        log_debug(4, params)
        key = self._get_key(params)
        last_modified = self._get_last_modified(params)
        return rhnCache.get(key, modified=last_modified, raw=1)

    def cache_set(self, params, value):
        log_debug(4, params)
        last_modified = self._get_last_modified(params)
        key = self._get_key(params)
        user = 'apache'
        group = 'apache'
        if rhnLib.isSUSE():
            user = 'wwwrun'
            group = 'www'
        return rhnCache.set(key, value, modified=last_modified,
                            raw=1, user=user, group=group, mode=int('0755', 8))

    def dump_subelement(self, data):
        log_debug(2)
        # CachedQueryIterator returns (params, row) as data
        params, row = data
        s = StringIO()
        # Back up the old writer and replace it with a StringIO-based one
        ow = self.get_writer()
        # Use into a tee stream (which writes to both streams at the same
        # time)
        tee_stream = TeeStream(s, ow.stream)
        self.set_writer(xmlWriter.XMLWriter(stream=tee_stream, skip_xml_decl=1))

        start = time.time()
        # call dump_subelement() from original (non-cached) class
        self.non_cached_class.dump_subelement(self, row)
        log_debug(5,
                  "Timer for _dump_subelement: %.2f" % (time.time() - start))

        # Restore the old writer
        self.set_writer(ow)

        self.cache_set(params, s.getvalue())


class ChannelsDumper(exportLib.ChannelsDumper):
    _query_list_channels = rhnSQL.Statement("""
        select c.id, c.org_id,
               c.label, ca.label channel_arch, c.basedir, c.name,
               c.summary, c.description, c.gpg_key_url, c.update_tag,
               c.installer_updates, ct.label checksum_type,
               TO_CHAR(c.last_modified, 'YYYYMMDDHH24MISS') last_modified,
               pc.label parent_channel, c.channel_access
          from rhnChannel c left outer join rhnChannel pc on c.parent_channel = pc.id
               left outer join rhnChecksumType ct on c.checksum_type_id = ct.id, rhnChannelArch ca
         where c.id = :channel_id
           and c.channel_arch_id = ca.id
    """)

    def __init__(self, writer, channels=(), start_date=None, end_date=None, use_rhn_date=True, whole_errata=False):
        exportLib.ChannelsDumper.__init__(self, writer, channels)
        self.start_date = start_date
        self.end_date = end_date
        self.use_rhn_date = use_rhn_date
        self.whole_errata = whole_errata

    def dump_subelement(self, data):
        log_debug(6, data)
        # return exportLib.ChannelsDumper.dump_subelement(self, data)
        # pylint: disable=W0212
        c = exportLib._ChannelDumper(self._writer, data, self.start_date, self.end_date,
                                     self.use_rhn_date, self.whole_errata)
        c.dump()

    def set_iterator(self):
        if not self._channels:
            # Nothing to do
            return

        h = rhnSQL.prepare(self._query_list_channels)
        return QueryIterator(statement=h, params=self._channels)


class ChannelsDumperEx(CachedDumper, exportLib.ChannelsDumper):
    iterator_query = rhnSQL.Statement("""
        select c.id, c.label, ca.label channel_arch, c.basedir, c.name,
               c.summary, c.description, c.gpg_key_url, c.installer_updates, c.update_tag, c.org_id,
               TO_CHAR(c.last_modified, 'YYYYMMDDHH24MISS') last_modified,
               c.channel_product_id,
               pc.label parent_channel,
               cp.product channel_product,
               cp.version channel_product_version,
               cp.beta channel_product_beta,
               c.receiving_updates,
               ct.label checksum_type,
               c.channel_access
          from rhnChannel c left outer join rhnChannel pc on c.parent_channel = pc.id
               left outer join rhnChannelProduct cp on c.channel_product_id = cp.id
               left outer join rhnChecksumType ct on c.checksum_type_id = ct.id,
               rhnChannelArch ca
         where c.id = :channel_id
           and c.channel_arch_id = ca.id
    """)

    def _get_key(self, params):
        channel_id = params['channel_id']
        return "xml-channels/rhn-channel-%d.xml" % channel_id


class ShortPackagesDumper(CachedDumper, exportLib.ShortPackagesDumper):
    iterator_query = rhnSQL.Statement("""
            select
                p.id,
                p.org_id,
                pn.name,
                (pe.evr).version as version,
                (pe.evr).release as release,
                (pe.evr).epoch as epoch,
                pa.label as package_arch,
                c.checksum_type,
                c.checksum,
                p.package_size,
                TO_CHAR(p.last_modified, 'YYYYMMDDHH24MISS') as last_modified
            from rhnPackage p, rhnPackageName pn, rhnPackageEVR pe,
                rhnPackageArch pa, rhnChecksumView c
            where p.id = :package_id
            and p.name_id = pn.id
            and p.evr_id = pe.id
            and p.package_arch_id = pa.id
            and p.checksum_id = c.id
        """)
    item_id_key = 'package_id'
    hash_factor = 2
    key_template = 'xml-short-packages/%s/rhn-package-short-%s.xml'


class PackagesDumper(CachedDumper, exportLib.PackagesDumper):
    iterator_query = rhnSQL.Statement("""
            select
                p.id,
                p.org_id,
                pn.name,
                (pe.evr).version as version,
                (pe.evr).release as release,
                (pe.evr).epoch as epoch,
                pa.label as package_arch,
                pg.name as package_group,
                p.rpm_version,
                p.description,
                p.summary,
                p.package_size,
                p.payload_size,
                p.installed_size,
                p.build_host,
                TO_CHAR(p.build_time, 'YYYYMMDDHH24MISS') as build_time,
                sr.name as source_rpm,
                c.checksum_type,
                c.checksum,
                p.vendor,
                p.payload_format,
                p.compat,
                p.header_sig,
                p.header_start,
                p.header_end,
                p.copyright,
                p.cookie,
                TO_CHAR(p.last_modified, 'YYYYMMDDHH24MISS') as last_modified
            from rhnPackage p, rhnPackageName pn, rhnPackageEVR pe,
                rhnPackageArch pa, rhnPackageGroup pg, rhnSourceRPM sr,
                rhnChecksumView c
            where p.id = :package_id
            and p.name_id = pn.id
            and p.evr_id = pe.id
            and p.package_arch_id = pa.id
            and p.package_group = pg.id
            and p.source_rpm_id = sr.id
            and p.checksum_id = c.id
        """)
    item_id_key = 'package_id'
    hash_factor = 2
    key_template = 'xml-packages/%s/rhn-package-%s.xml'


class SourcePackagesDumper(CachedDumper, exportLib.SourcePackagesDumper):
    iterator_query = rhnSQL.Statement("""
            select
                ps.id,
                sr.name source_rpm,
                pg.name package_group,
                ps.rpm_version,
                ps.payload_size,
                ps.build_host,
                TO_CHAR(ps.build_time, 'YYYYMMDDHH24MISS') build_time,
                sig.checksum sigchecksum,
                sig.checksum_type sigchecksum_type,
                ps.vendor,
                ps.cookie,
                ps.package_size,
                c.checksum_type,
                c.checksum,
                TO_CHAR(ps.last_modified, 'YYYYMMDDHH24MISS') last_modified
            from rhnPackageSource ps, rhnPackageGroup pg, rhnSourceRPM sr,
                 rhnChecksumView c, rhnChecksumView sig
            where ps.id = :package_id
            and ps.package_group = pg.id
            and ps.source_rpm_id = sr.id
            and ps.checksum_id = c.id
            and ps.sigchecksum_id = sig.id
        """)
    item_id_key = 'package_id'
    hash_factor = 2
    key_template = 'xml-packages/%s/rhn-source-package-%s.xml'


class ErrataDumper(exportLib.ErrataDumper):
    iterator_query = rhnSQL.Statement("""
            select
                e.id,
                e.org_id,
                e.advisory_name,
                e.advisory,
                e.advisory_type,
                e.advisory_rel,
                e.advisory_status,
                e.product,
                e.description,
                e.synopsis,
                e.topic,
                e.solution,
                TO_CHAR(e.issue_date, 'YYYYMMDDHH24MISS') issue_date,
                TO_CHAR(e.update_date, 'YYYYMMDDHH24MISS') update_date,
                TO_CHAR(e.last_modified, 'YYYYMMDDHH24MISS') last_modified,
                e.refers_to,
                e.notes,
                e.errata_from,
                e.severity_id
            from rhnErrata e
            where e.id = :errata_id
        """)

    def __init__(self, writer, params):
        statement = rhnSQL.prepare(self.iterator_query)
        iterator = QueryIterator(statement, params)
        exportLib.ErrataDumper.__init__(self, writer, iterator)


class KickstartableTreesDumper(CachedDumper, exportLib.KickstartableTreesDumper):
    iterator_query = rhnSQL.Statement("""
        select kt.id,
               c.label channel,
               kt.base_path "base-path",
               kt.label,
               kt.boot_image "boot-image",
               ktt.name "kstree-type-name",
               ktt.label "kstree-type-label",
               kit.name "install-type-name",
               kit.label "install-type-label",
               TO_CHAR(kt.last_modified, 'YYYYMMDDHH24MISS') "last-modified"
          from rhnKickstartableTree kt,
               rhnKSTreeType ktt,
               rhnKSInstallType kit,
               rhnChannel c
         where kt.channel_id = c.id
           and ktt.id = kt.kstree_type
           and kit.id = kt.install_type
           and kt.org_id is NULL
           and kt.label = :kickstart_label
    """)

    def _get_key(self, params):
        kickstart_label = params['kickstart_label']
        return "xml-kickstartable-tree/%s.xml" % kickstart_label


class ClosedConnectionError(Exception):
    pass


class TeeStream:

    """Writes to multiple streams at the same time"""

    def __init__(self, *streams):
        self.streams = streams

    def write(self, data):
        log_debug(6, "Writing %s bytes" % len(data))
        for stream in self.streams:
            stream.write(data)
  070701000000C6000081B40000000000000000000000016290A0C100011803000000000000000000000000000000000000003500000000spacewalk-backend/satellite_tools/disk_dumper/iss.py  #
# Copyright (c) 2008--2018 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#

import os
import os.path
import sys
import time
import gzip
import shutil
import gettext
try:
    #  python 2
    import cStringIO
except ImportError:
    #  python3
    import io as cStringIO
from . import dumper
from uyuni.common.usix import raise_with_tb
from uyuni.common.checksum import getFileChecksum
from spacewalk.common import rhnMail
from spacewalk.common.rhnConfig import CFG, initCFG
from spacewalk.common.rhnTB import Traceback, exitWithTraceback
from spacewalk.server import rhnSQL
from spacewalk.server.rhnSQL import SQLError, SQLSchemaError, SQLConnectError
from spacewalk.satellite_tools.exporter import xmlWriter
from spacewalk.satellite_tools import xmlDiskSource, diskImportLib, progress_bar
from spacewalk.satellite_tools.syncLib import initEMAIL_LOG, dumpEMAIL_LOG, log2email, log2stderr, log2stdout
from .iss_ui import UI
from .iss_actions import ActionDeps
from . import iss_isos

t = gettext.translation('spacewalk-backend-server', fallback=True)
try:
    _ = t.ugettext
except AttributeError:
    _ = t.gettext

# bare-except and broad-except
# pylint: disable=W0702,W0703

class ISSError(Exception):

    def __init__(self, msg, tb):
        Exception.__init__(self)
        self.msg = msg
        self.tb = tb


# xmlDiskSource doesn't have a class for short channel packages, so I added one here.
# I named _getFile that way so it's similar to the stuff in xmlDiskSource.
# I grabbed the value of pathkey from dump_channel_packages_short in dumper.py.
class ISSChannelPackageShortDiskSource:

    def __init__(self, mount_point, channel_name=None):
        self.mp = mount_point
        self.channelid = channel_name
        self.pathkey = "xml-channel-packages/rhn-channel-%d.data"

    def setChannel(self, channel_id):
        self.channelid = channel_id

    def _getFile(self):
        return os.path.join(self.mp, self.pathkey % (self.channelid,))


class FileMapper:

    """ This class maps dumps to files. In other words, you give it
    the type of dump you're doing and it gives you the file to
    write it to.
    """

    def __init__(self, mount_point):
        self.mp = mount_point
        self.filemap = {
            'arches':   xmlDiskSource.ArchesDiskSource(self.mp),
            'arches-extra':   xmlDiskSource.ArchesExtraDiskSource(self.mp),
            'blacklists':   xmlDiskSource.BlacklistsDiskSource(self.mp),
            'channelfamilies':   xmlDiskSource.ChannelFamilyDiskSource(self.mp),
            'orgs':   xmlDiskSource.OrgsDiskSource(self.mp),
            'channels':   xmlDiskSource.ChannelDiskSource(self.mp),
            'channel-pkg-short':   ISSChannelPackageShortDiskSource(self.mp),
            'packages-short':   xmlDiskSource.ShortPackageDiskSource(self.mp),
            'packages':   xmlDiskSource.PackageDiskSource(self.mp),
            'sourcepackages':   xmlDiskSource.SourcePackageDiskSource(self.mp),
            'errata':   xmlDiskSource.ErrataDiskSource(self.mp),
            'kickstart_trees':   xmlDiskSource.KickstartDataDiskSource(self.mp),
            'kickstart_files':   xmlDiskSource.KickstartFileDiskSource(self.mp),
            'binary_rpms':   xmlDiskSource.BinaryRPMDiskSource(self.mp),
            'comps':   xmlDiskSource.ChannelCompsDiskSource(self.mp),
            'modules':   xmlDiskSource.ChannelModulesDiskSource(self.mp),
            'productnames': xmlDiskSource.ProductnamesDiskSource(self.mp),
            'supportinfo': xmlDiskSource.SupportInformationDiskSource(self.mp),
            'suse_products': xmlDiskSource.SuseProductsDiskSource(self.mp),
            'suse_product_channels': xmlDiskSource.SuseProductChannelsDiskSource(self.mp),
            'suse_upgrade_paths': xmlDiskSource.SuseUpgradePathsDiskSource(self.mp),
            'suse_product_extensions': xmlDiskSource.SuseProductExtensionsDiskSource(self.mp),
            'suse_product_repositories': xmlDiskSource.SuseProductRepositoriesDiskSource(self.mp),
            'scc_repositories': xmlDiskSource.SCCRepositoriesDiskSource(self.mp),
            'suse_subscriptions': xmlDiskSource.SuseSubscriptionsDiskSource(self.mp),
            'cloned_channels': xmlDiskSource.ClonedChannelsDiskSource(self.mp),
        }

    #This will make sure that all of the directories leading up to the
    #xml file actually exist.
    @staticmethod
    def setup_file(ofile):
        # Split the path. The filename is [1], and the directories are in [0].
        dirs_to_make = os.path.split(ofile)[0]

        # Make the directories if they don't already exist.
        if not os.path.exists(dirs_to_make):
            os.makedirs(dirs_to_make)

        return ofile

    # The get*File methods will return the full path to the xml file that the dumps are placed in.
    # pylint: disable=W0212
    def getArchesFile(self):
        return self.setup_file(self.filemap['arches']._getFile())

    def getArchesExtraFile(self):
        return self.setup_file(self.filemap['arches-extra']._getFile())

    def getBlacklistsFile(self):
        return self.setup_file(self.filemap['blacklists']._getFile())

    def getOrgsFile(self):
        return self.setup_file(self.filemap['orgs']._getFile())

    def getChannelFamiliesFile(self):
        return self.setup_file(self.filemap['channelfamilies']._getFile())

    def getBinaryRPMFile(self):
        return self.setup_file(self.filemap['binary_rpms']._getFile())

    def getChannelsFile(self, channelname):
        self.filemap['channels'].setChannel(channelname)
        return self.setup_file(self.filemap['channels']._getFile())

    def getChannelCompsFile(self, channelname):
        self.filemap['comps'].setChannel(channelname)
        return self.setup_file(self.filemap['comps']._getFile())

    def getChannelModulesFile(self, channelname):
        self.filemap['modules'].setChannel(channelname)
        return self.setup_file(self.filemap['modules']._getFile())

    def getChannelPackageShortFile(self, channel_id):
        self.filemap['channel-pkg-short'].setChannel(channel_id)
        return self.setup_file(self.filemap['channel-pkg-short']._getFile())

    def getPackagesFile(self, packageid):
        self.filemap['packages'].setID(packageid)
        return self.setup_file(self.filemap['packages']._getFile())

    def getShortPackagesFile(self, packageid):
        self.filemap['packages-short'].setID(packageid)
        return self.setup_file(self.filemap['packages-short']._getFile())

    def getSourcePackagesFile(self, sp_id):
        self.filemap['sourcepackages'].setID(sp_id)
        return self.setup_file(self.filemap['sourcepackages']._getFile())

    def getErrataFile(self, errataid):
        self.filemap['errata'].setID(errataid)
        return self.setup_file(self.filemap['errata']._getFile())

    def getKickstartTreeFile(self, ks_id):
        self.filemap['kickstart_trees'].setID(ks_id)
        return self.setup_file(self.filemap['kickstart_trees']._getFile())

    def getKickstartFileFile(self, ks_label, relative_path):
        self.filemap['kickstart_files'].setID(ks_label)
        self.filemap['kickstart_files'].set_relative_path(relative_path)
        return self.setup_file(self.filemap['kickstart_files']._getFile())

    def getProductNamesFile(self):
        return self.setup_file(self.filemap['productnames']._getFile())

    def getSupportInformationFile(self):
        return self.setup_file(self.filemap['supportinfo']._getFile())

    def getSuseProductsFile(self):
        return self.setup_file(self.filemap['suse_products']._getFile())

    def getSuseProductChannelsFile(self):
        return self.setup_file(self.filemap['suse_product_channels']._getFile())

    def getSuseUpgradePathsFile(self):
        return self.setup_file(self.filemap['suse_upgrade_paths']._getFile())

    def getSuseProductExtensionsFile(self):
        return self.setup_file(self.filemap['suse_product_extensions']._getFile())

    def getSuseProductRepositoriesFile(self):
        return self.setup_file(self.filemap['suse_product_repositories']._getFile())

    def getSCCRepositoriesFile(self):
        return self.setup_file(self.filemap['scc_repositories']._getFile())

    def getSuseSubscriptionsFile(self):
        return self.setup_file(self.filemap['suse_subscriptions']._getFile())

    def getClonedChannelsFile(self):
        return self.setup_file(self.filemap['cloned_channels']._getFile())

class Dumper(dumper.XML_Dumper):

    """ This class subclasses the XML_Dumper class. It overrides
     the _get_xml_writer method and adds a set_stream method,
     which will let it write to a file instead of over the wire.
    """

    def __init__(self, outputdir, channel_labels, org_ids, hardlinks,
                 start_date, end_date, use_rhn_date, whole_errata):
        dumper.XML_Dumper.__init__(self)
        self.fm = FileMapper(outputdir)
        self.mp = outputdir
        self.pb_label = "Exporting: "
        self.pb_length = 20  # progress bar length
        self.pb_complete = " - Done!"  # string that's printed when progress bar is done.
        self.pb_char = "#"  # the string used as each unit in the progress bar.
        self.hardlinks = hardlinks
        self.filename = None
        self.outstream = None

        self.start_date = start_date
        self.end_date = end_date
        self.use_rhn_date = use_rhn_date
        self.whole_errata = whole_errata

        if self.start_date:
            dates = {'start_date': self.start_date,
                     'end_date': self.end_date, }
        else:
            dates = {}

        # The queries here are a little weird. They grab just enough information
        # to satisfy the dumper objects, which will use the information to look up
        # any additional information that they need. That's why they don't seem to grab all
        # of the information that you'd think would be necessary to sync stuff.
        ####CHANNEL INFO###
        try:
            query = """
                 select ch.id channel_id, label,
                      TO_CHAR(last_modified, 'YYYYMMDDHH24MISS') last_modified
                   from rhnChannel ch
                  where ch.label = :label
                """
            self.channel_query = rhnSQL.Statement(query)
            ch_data = rhnSQL.prepare(self.channel_query)

            comps_query = """
                select relative_filename
                from rhnChannelComps
                where channel_id = :channel_id
                and comps_type_id = 1
                order by id desc
            """

            modules_query = """
                select relative_filename
                from rhnChannelComps
                where channel_id = :channel_id
                and comps_type_id = 2
                order by id desc
            """

            self.channel_comps_query = rhnSQL.Statement(comps_query)
            channel_comps_sth = rhnSQL.prepare(self.channel_comps_query)
            self.channel_modules_query = rhnSQL.Statement(modules_query)
            channel_modules_sth = rhnSQL.prepare(self.channel_modules_query)

            # self.channel_ids contains the list of dictionaries that hold the channel information
            # The keys are 'channel_id', 'label', and 'last_modified'.
            self.channel_comps = {}
            self.channel_modules = {}

            self.set_exportable_orgs(org_ids)

            # Channel_labels should be the list of channels passed into rhn-satellite-exporter by the user.
            log2stdout(1, "Gathering channel info...")
            for ids in channel_labels:
                ch_data.execute(label=ids)
                ch_info = ch_data.fetchall_dict()

                if not ch_info:
                    raise ISSError("Error: Channel %s not found." % ids, "")

                self.channel_ids = self.channel_ids + ch_info

                channel_comps_sth.execute(channel_id=ch_info[0]['channel_id'])
                comps_info = channel_comps_sth.fetchone_dict()
                channel_modules_sth.execute(channel_id=ch_info[0]['channel_id'])
                modules_info = channel_modules_sth.fetchone_dict()

                if comps_info is not None:
                    self.channel_comps[ch_info[0]['channel_id']] = comps_info['relative_filename']
                if modules_info is not None:
                    self.channel_modules[ch_info[0]['channel_id']] = modules_info['relative_filename']

            # For list of channel families, we want to also list those relevant for channels
            # that are already on disk, so that we do not lose those families with
            # "incremental" dumps. So we will gather list of channel ids for channels already
            # in dump.
            channel_labels_for_families = self.fm.filemap['channels'].list()
            print(("Appending channels %s" % (channel_labels_for_families)))
            for ids in channel_labels_for_families:
                ch_data.execute(label=ids)
                ch_info = ch_data.fetchall_dict()
                if ch_info:
                    self.channel_ids_for_families = self.channel_ids_for_families + ch_info

        except ISSError:
            # Don't want calls to sys.exit to show up as a "bad" error.
            raise
        except Exception:
            e = sys.exc_info()[1]
            tbout = cStringIO.StringIO()
            Traceback(mail=0, ostream=tbout, with_locals=1)
            raise_with_tb(ISSError("%s caught while getting channel info." %
                                   e.__class__.__name__, tbout.getvalue()), sys.exc_info()[2])

        ###BINARY RPM INFO###
        try:
            if self.whole_errata and self.start_date:
                query = """ select rcp.package_id id, rp.path path
                   from rhnChannelPackage rcp, rhnPackage rp
                        left join rhnErrataPackage rep on rp.id = rep.package_id
                        left join rhnErrata re on rep.errata_id = re.id
                  where rcp.package_id = rp.id
                    and rcp.channel_id = :channel_id
                """
            else:
                query = """
                         select rcp.package_id id, rp.path path
                           from rhnChannelPackage rcp, rhnPackage rp
                          where rcp.package_id = rp.id
                            and rcp.channel_id = :channel_id
                    """

            if self.start_date:
                if self.whole_errata:
                    if self.use_rhn_date:
                        query += """ and
                         ((re.last_modified >= TO_TIMESTAMP(:start_date, 'YYYYMMDDHH24MISS')
                             and re.last_modified <= TO_TIMESTAMP(:end_date, 'YYYYMMDDHH24MISS')
                         ) or (rep.package_id is NULL
                             and rp.last_modified >= TO_TIMESTAMP(:start_date, 'YYYYMMDDHH24MISS')
                             and rp.last_modified <= TO_TIMESTAMP(:end_date, 'YYYYMMDDHH24MISS'))
                         )
                        """
                    else:
                        query += """ and
                         ((re.modified >= TO_TIMESTAMP(:start_date, 'YYYYMMDDHH24MISS')
                         and re.modified <= TO_TIMESTAMP(:end_date, 'YYYYMMDDHH24MISS')
                         ) or (rep.package_id is NULL
                            and rcp.modified >= TO_TIMESTAMP(:start_date, 'YYYYMMDDHH24MISS')
                            and rcp.modified <= TO_TIMESTAMP(:end_date, 'YYYYMMDDHH24MISS'))
                         )
                        """
                elif self.use_rhn_date:
                    query += """
                        and rp.last_modified >= TO_TIMESTAMP(:start_date, 'YYYYMMDDHH24MISS')
                        and rp.last_modified <= TO_TIMESTAMP(:end_date, 'YYYYMMDDHH24MISS')
                        """
                else:
                    query += """
                        and rcp.modified >= TO_TIMESTAMP(:start_date, 'YYYYMMDDHH24MISS')
                        and rcp.modified <= TO_TIMESTAMP(:end_date, 'YYYYMMDDHH24MISS')
                        """
            self.brpm_query = rhnSQL.Statement(query)
            brpm_data = rhnSQL.prepare(self.brpm_query)

            # self.brpms is a list of binary rpm info. It is a list of dictionaries, where each dictionary
            # has 'id' and 'path' as the keys.
            self.brpms = []
            log2stdout(1, "Gathering binary RPM info...")
            for ch in self.channel_ids:
                brpm_data.execute(channel_id=ch['channel_id'], **dates)
                self.brpms = self.brpms + (brpm_data.fetchall_dict() or [])
        except Exception:
            e = sys.exc_info()[1]
            tbout = cStringIO.StringIO()
            Traceback(mail=0, ostream=tbout, with_locals=1)
            raise_with_tb(ISSError("%s caught while getting binary rpm info." %
                                   e.__class__.__name__, tbout.getvalue()), sys.exc_info()[2])

        ###PACKAGE INFO###
        # This will grab channel package information for a given channel.
        try:
            if self.whole_errata and self.start_date:
                query = """
                 select rp.id package_id,
                            TO_CHAR(rp.last_modified, 'YYYYMMDDHH24MISS') last_modified
                 from rhnChannelPackage rcp, rhnPackage rp
                    left join rhnErrataPackage rep on rp.id = rep.package_id
                        left join rhnErrata re on rep.errata_id = re.id
                         where rcp.channel_id = :channel_id
                            and rcp.package_id = rp.id
                    """
            else:
                query = """
                 select rp.id package_id,
                TO_CHAR(rp.last_modified, 'YYYYMMDDHH24MISS') last_modified
           from rhnPackage rp, rhnChannelPackage rcp
          where rcp.channel_id = :channel_id
            and rcp.package_id = rp.id
                """
            if self.start_date:
                if self.whole_errata:
                    if self.use_rhn_date:
                        query += """ and
                         ((re.last_modified >= TO_TIMESTAMP(:start_date, 'YYYYMMDDHH24MISS')
                         and re.last_modified <= TO_TIMESTAMP(:end_date, 'YYYYMMDDHH24MISS')
                         ) or (rep.package_id is NULL
                            and rp.last_modified >= TO_TIMESTAMP(:start_date, 'YYYYMMDDHH24MISS')
                            and rp.last_modified <= TO_TIMESTAMP(:end_date, 'YYYYMMDDHH24MISS'))
                         )
                        """
                    else:
                        query += """ and
                         ((re.modified >= TO_TIMESTAMP(:start_date, 'YYYYMMDDHH24MISS')
                         and re.modified <= TO_TIMESTAMP(:end_date, 'YYYYMMDDHH24MISS')
                         ) or (rep.package_id is NULL
                            and rcp.modified >= TO_TIMESTAMP(:start_date, 'YYYYMMDDHH24MISS')
                            and rcp.modified <= TO_TIMESTAMP(:end_date, 'YYYYMMDDHH24MISS'))
                         )
                        """
                elif self.use_rhn_date:
                    query += """
                    and rp.last_modified >= TO_TIMESTAMP(:start_date, 'YYYYMMDDHH24MISS')
                    and rp.last_modified <= TO_TIMESTAMP(:end_date, 'YYYYMMDDHH24MISS')
                    """
                else:
                    query += """
                    and (rcp.modified >= TO_TIMESTAMP(:start_date, 'YYYYMMDDHH24MISS')
                    and rcp.modified <= TO_TIMESTAMP(:end_date, 'YYYYMMDDHH24MISS'))
                    """
            self.package_query = rhnSQL.Statement(query)
            package_data = rhnSQL.prepare(self.package_query)

            # self.pkg_info will be a list of dictionaries containing channel package information.
            # The keys are 'package_id' and 'last_modified'.
            self.pkg_info = []

            # This fills in the pkg_info list with channel package information from the channels in
            # self.channel_ids.
            log2stdout(1, "Gathering package info...")
            for channel_id in self.channel_ids:
                package_data.execute(channel_id=channel_id['channel_id'], **dates)
                a_package = package_data.fetchall_dict() or []

                # Don't bother placing None into self.pkg_info.
                if a_package:
                    self.pkg_info = self.pkg_info + a_package

        except Exception:
            e = sys.exc_info()[1]
            tbout = cStringIO.StringIO()
            Traceback(mail=0, ostream=tbout, with_locals=1)
            raise_with_tb(ISSError("%s caught while getting package info." %
                                   e.__class__.__name__, tbout.getvalue()), sys.exc_info()[2])

        ###SOURCE PACKAGE INFO###
        try:
            query = """
                  select ps.id package_id,
                         TO_CHAR(ps.last_modified,'YYYYMMDDHH24MISS') last_modified,
                         ps.source_rpm_id source_rpm_id
                    from rhnPackageSource ps
                """
            if self.start_date:
                if self.whole_errata:
                    query += """
                        left join rhnErrataFilePackageSource refps on refps.package_id = ps.id
                        left join rhnErrataFile ref on refps.errata_file_id = ref.id
                        left join rhnErrata re on ref.errata_id = re.id
                    """
                    if self.use_rhn_date:
                        query += """ and
                         ((re.last_modified >= TO_TIMESTAMP(:start_date, 'YYYYMMDDHH24MISS')
                         and re.last_modified <= TO_TIMESTAMP(:end_date, 'YYYYMMDDHH24MISS')
                         ) or (refps.package_id is NULL
                            and ps.last_modified >= TO_TIMESTAMP(:start_date, 'YYYYMMDDHH24MISS')
                            and ps.last_modified <= TO_TIMESTAMP(:end_date, 'YYYYMMDDHH24MISS'))
                         )
                        """
                    else:
                        query += """ and
                         ((re.modified >= TO_TIMESTAMP(:start_date, 'YYYYMMDDHH24MISS')
                         and re.modified <= TO_TIMESTAMP(:end_date, 'YYYYMMDDHH24MISS')
                         ) or (refps.package_id is NULL
                            and ps.modified >= TO_TIMESTAMP(:start_date, 'YYYYMMDDHH24MISS')
                            and ps.modified <= TO_TIMESTAMP(:end_date, 'YYYYMMDDHH24MISS'))
                         )
                        """
                elif self.use_rhn_date:
                    query += """
                    where ps.last_modified >= TO_TIMESTAMP(:start_date, 'YYYYMMDDHH24MISS')
                     and ps.last_modified <= TO_TIMESTAMP(:end_date, 'YYYYMMDDHH24MISS')
                    """
                else:
                    query += """
                    where ps.modified >= TO_TIMESTAMP(:start_date, 'YYYYMMDDHH24MISS')
                     and ps.modified <= TO_TIMESTAMP(:end_date, 'YYYYMMDDHH24MISS')
                    """
            self.source_package_query = rhnSQL.Statement(query)
            source_package_data = rhnSQL.prepare(self.source_package_query)
            source_package_data.execute(**dates)

            # self.src_pkg_info is a list of dictionaries containing the source package information.
            # The keys for each dictionary are 'package_id', 'last_modified', and 'source_rpm_id'.
            self.src_pkg_info = source_package_data.fetchall_dict() or []

            # Again, don't bother placing None into the list.
            if not self.src_pkg_info:
                self.src_pkg_info = []

        except Exception:
            e = sys.exc_info()[1]
            tbout = cStringIO.StringIO()
            Traceback(mail=0, ostream=tbout, with_locals=1)
            raise_with_tb(ISSError("%s caught while getting source package info." %
                                   e.__class__.__name__, tbout.getvalue()), sys.exc_info()[2])

        ###ERRATA INFO###
        try:
            query = """
                   select e.id errata_id,
                          TO_CHAR(e.last_modified,'YYYYMMDDHH24MISS') last_modified,
                          e.advisory_name "advisory-name"
                     from rhnChannelErrata ce, rhnErrata e
                    where ce.channel_id = :channel_id
                      and ce.errata_id = e.id
                """
            if self.start_date:
                if self.use_rhn_date:
                    query += """
                      and e.last_modified >= TO_TIMESTAMP(:start_date, 'YYYYMMDDHH24MISS')
                      and e.last_modified <= TO_TIMESTAMP(:end_date, 'YYYYMMDDHH24MISS')
                      """
                else:
                    query += """
                      and ce.modified >= TO_TIMESTAMP(:start_date, 'YYYYMMDDHH24MISS')
                      and ce.modified <= TO_TIMESTAMP(:end_date, 'YYYYMMDDHH24MISS')
                      """
            self.errata_query = rhnSQL.Statement(query)
            errata_data = rhnSQL.prepare(self.errata_query)

            # self.errata_info will be a list of dictionaries containing errata info for the channels
            # that the user listed. The keys are 'errata_id' and 'last_modified'.
            self.errata_info = []
            log2stdout(1, "Gathering errata info...")
            for channel_id in self.channel_ids:
                errata_data.execute(channel_id=channel_id['channel_id'], **dates)
                an_errata = errata_data.fetchall_dict() or []
                if an_errata:
                    self.errata_info = self.errata_info + an_errata

        except Exception:
            e = sys.exc_info()[1]
            tbout = cStringIO.StringIO()
            Traceback(mail=0, ostream=tbout, with_locals=1)
            raise_with_tb(ISSError("%s caught while getting errata info." %
                                   e.__class__.__name__, tbout.getvalue()), sys.exc_info()[2])

        ###KICKSTART DATA/TREES INFO###
        try:
            query = """
                select  kt.id kstree_id, kt.label kickstart_label,
                        TO_CHAR(kt.last_modified, 'YYYYMMDDHH24MISS') last_modified
                  from  rhnKickstartableTree kt
                 where   kt.channel_id = :channel_id
                 """
            if self.start_date:
                if self.use_rhn_date:
                    query += """
                    and kt.last_modified >= TO_TIMESTAMP(:start_date, 'YYYYMMDDHH24MISS')
                    and kt.last_modified <= TO_TIMESTAMP(:end_date, 'YYYYMMDDHH24MISS')
                    and kt.org_id is Null
                    """
                else:
                    query += """
                    and kt.modified >= TO_TIMESTAMP(:start_date, 'YYYYMMDDHH24MISS')
                    and kt.modified <= TO_TIMESTAMP(:end_date, 'YYYYMMDDHH24MISS')
                    and kt.org_id is Null
                    """
            self.kickstart_trees_query = rhnSQL.Statement(query)
            kickstart_data = rhnSQL.prepare(self.kickstart_trees_query)
            self.kickstart_trees = []
            log2stdout(1, "Gathering kickstart data...")
            for channel_id in self.channel_ids:
                kickstart_data.execute(channel_id=channel_id['channel_id'],
                                       **dates)
                a_tree = kickstart_data.fetchall_dict() or []
                if a_tree:
                    self.kickstart_trees = self.kickstart_trees + a_tree

        except Exception:
            e = sys.exc_info()[1]
            tbout = cStringIO.StringIO()
            Traceback(mail=0, ostream=tbout, with_locals=1)
            raise_with_tb(ISSError("%s caught while getting kickstart data info." %
                                   e.__class__.__name__, tbout.getvalue()), sys.exc_info()[2])

        ###KICKSTART FILES INFO###
        try:
            query = """
                    select rktf.relative_filename "relative-path",
                           c.checksum_type "checksum-type", c.checksum,
                           rktf.file_size "file-size",
                           TO_CHAR(rktf.last_modified, 'YYYYMMDDHH24MISS') "last-modified",
                           rkt.base_path "base-path",
                           rkt.label "label",
                           TO_CHAR(rkt.modified, 'YYYYMMDDHH24MISS') "modified"
                      from rhnKSTreeFile rktf, rhnKickstartableTree rkt,
                           rhnChecksumView c
                     where rktf.kstree_id = :kstree_id
                       and rkt.id = rktf.kstree_id
                       and rktf.checksum_id = c.id
                """
            if self.start_date:
                if self.use_rhn_date:
                    query += """
                        and rkt.last_modified >= TO_TIMESTAMP(:start_date, 'YYYYMMDDHH24MISS')
                        and rkt.last_modified <= TO_TIMESTAMP(:end_date, 'YYYYMMDDHH24MISS')
                    """
                else:
                    query += """
                        and rkt.modified >= TO_TIMESTAMP(:start_date, 'YYYYMMDDHH24MISS')
                        and rkt.modified <= TO_TIMESTAMP(:end_date, 'YYYYMMDDHH24MISS')
                    """
            self.kickstart_files_query = rhnSQL.Statement(query)
            kickstart_files = rhnSQL.prepare(self.kickstart_files_query)
            self.kickstart_files = []
            log2stdout(1, "Gathering kickstart files info...")
            for kstree in self.kickstart_trees:
                kickstart_files.execute(kstree_id=kstree['kstree_id'], **dates)
                a_file = kickstart_files.fetchall_dict() or []
                if a_file:
                    self.kickstart_files = self.kickstart_files + a_file

        except Exception:
            e = sys.exc_info()[1]
            tbout = cStringIO.StringIO()
            Traceback(mail=0, ostream=tbout, with_locals=1)
            raise_with_tb(ISSError("%s caught while getting kickstart files info." %
                                   e.__class__.__name__, tbout.getvalue()), sys.exc_info()[2])

    # The close method overrides the parent classes close method. This implementation
    # closes the self.outstream, which is an addition defined in this subclass.
    # set_filename and _get_xml_writer for more info.
    def close(self):
        self.outstream.close()

    # This is an addition that allows the caller to set the filename for the output stream.
    def set_filename(self, filename):
        self.filename = filename

    # This method overrides the parent class's version of this method. This version allows the output stream to
    # be a file, which should have been set prior to this via the set_filename method.
    # TODO: Add error-checking. Either give self.outstream a sane default or have it throw an error if it hasn't
    #      been set yet.
    def _get_xml_writer(self):
        self.outstream = open(self.filename, "w")
        return xmlWriter.XMLWriter(stream=self.outstream)

    # The dump_* methods aren't really overrides because they don't preserve the method
    # signature, but they are meant as replacements for the methods defined in the base
    # class that have the same name. They will set up the file for the dump, collect info
    # necessary for the dumps to take place, and then call the base class version of the
    # method to do the actual dumping.
    def _dump_simple(self, filename, dump_func, startmsg, endmsg, exceptmsg):
        try:
            print("\n")
            log2stdout(1, startmsg)
            pb = progress_bar.ProgressBar(self.pb_label,
                                          self.pb_complete,
                                          1,
                                          self.pb_length,
                                          self.pb_char)
            pb.printAll(1)
            self.set_filename(filename)
            dump_func(self)

            pb.addTo(1)
            pb.printIncrement()
            pb.printComplete()
            log2stdout(4, endmsg % filename)

        except Exception:
            e = sys.exc_info()[1]
            tbout = cStringIO.StringIO()
            Traceback(mail=0, ostream=tbout, with_locals=1)
            raise_with_tb(ISSError(exceptmsg % e.__class__.__name__, tbout.getvalue()), sys.exc_info()[2])

    def dump_arches(self, rpm_arch_type_only=0):
        self._dump_simple(self.fm.getArchesFile(), dumper.XML_Dumper.dump_arches,
                          "Exporting arches...",
                          "Arches exported to %s",
                          "%s caught in dump_arches.")

    # This dumps arches_extra
    def dump_server_group_type_server_arches(self, rpm_arch_type_only=0, virt_filter=0):
        self._dump_simple(self.fm.getArchesExtraFile(),
                          dumper.XML_Dumper.dump_server_group_type_server_arches,
                          "Exporting arches extra...",
                          "Arches Extra exported to %s",
                          "%s caught in dump_server_group_type_server_arches.")

    def dump_blacklist_obsoletes(self):
        self._dump_simple(self.fm.getBlacklistsFile(),
                          dumper.XML_Dumper.dump_blacklist_obsoletes,
                          "Exporting blacklists...",
                          "Blacklists exported to %s",
                          "%s caught in dump_blacklist_obsoletes.")

    def dump_channel_families(self):
        self._dump_simple(self.fm.getChannelFamiliesFile(),
                          dumper.XML_Dumper.dump_channel_families,
                          "Exporting channel families...",
                          "Channel Families exported to %s",
                          "%s caught in dump_channel_families.")

    def dump_product_names(self):
        self._dump_simple(self.fm.getProductNamesFile(),
                          dumper.XML_Dumper.dump_product_names,
                          "Exporting product names...",
                          "Product names exported to %s",
                          "%s caught in dump_product_names.")

    def dump_orgs(self):
        self._dump_simple(self.fm.getOrgsFile(),
                          dumper.XML_Dumper.dump_orgs,
                          "Exporting orgs...",
                          "Orgs exported to %s",
                          "%s caught in dump_orgs.")

    def copy_repomd(self, repomds, channel, get_file_func):
        if channel['channel_id'] in repomds:
            full_filename = os.path.join(CFG.MOUNT_POINT, repomds[channel['channel_id']])
            target_filename = get_file_func(channel['label'])
            log2email(3, "Need to copy %s to %s" % (full_filename, target_filename))

            if self.hardlinks:
                os.link(full_filename, target_filename)
            else:
                shutil.copyfile(full_filename, target_filename)


    def dump_channels(self, channel_labels=None, start_date=None, end_date=None,
                      use_rhn_date=True, whole_errata=False):
        try:
            print("\n")
            log2stdout(1, "Exporting channel info...")
            pb = progress_bar.ProgressBar(self.pb_label,
                                          self.pb_complete,
                                          len(self.channel_ids),
                                          self.pb_length,
                                          self.pb_char)
            pb.printAll(1)
            for channel in self.channel_ids:
                self.set_filename(self.fm.getChannelsFile(channel['label']))
                dumper.XML_Dumper.dump_channels(self, [channel],
                                                self.start_date, self.end_date,
                                                self.use_rhn_date, self.whole_errata)

                log2email(4, "Channel: %s" % channel['label'])
                log2email(5, "Channel exported to %s" % self.fm.getChannelsFile(channel['label']))

                self.copy_repomd(self.channel_comps, channel, self.fm.getChannelCompsFile)
                self.copy_repomd(self.channel_modules, channel, self.fm.getChannelModulesFile)

                pb.addTo(1)
                pb.printIncrement()
            pb.printComplete()
            log2stderr(3, "Number of channels exported: %s" % str(len(self.channel_ids)))

        except Exception:
            e = sys.exc_info()[1]
            tbout = cStringIO.StringIO()
            Traceback(mail=0, ostream=tbout, with_locals=1)
            raise_with_tb(ISSError("%s caught in dump_channels." % e.__class__.__name__,
                                   tbout.getvalue()), sys.exc_info()[2])

    def dump_channel_packages_short(self, channel_label=None, last_modified=None, filepath=None,
                                    validate_channels=False, send_headers=False,
                                    open_stream=True):
        try:
            print("\n")
            for ch_id in self.channel_ids:
                filepath = self.fm.getChannelPackageShortFile(ch_id['channel_id'])
                self.set_filename(filepath)
                dumper.XML_Dumper.dump_channel_packages_short(self, ch_id, ch_id['last_modified'], filepath)

        except Exception:
            e = sys.exc_info()[1]
            tbout = cStringIO.StringIO()
            Traceback(mail=0, ostream=tbout, with_locals=1)
            raise_with_tb(ISSError("%s caught in dump_channel_packages_short." %
                                   e.__class__.__name__, tbout.getvalue()), sys.exc_info()[2])

    def dump_packages(self, packages=None):
        try:
            print("\n")
            log2stdout(1, "Exporting packages...")
            pb = progress_bar.ProgressBar(self.pb_label,
                                          self.pb_complete,
                                          len(self.pkg_info),
                                          self.pb_length,
                                          self.pb_char)
            pb.printAll(1)
            for pkg_info in self.pkg_info:
                package_name = "rhn-package-" + str(pkg_info['package_id'])
                self.set_filename(self.fm.getPackagesFile(package_name))
                dumper.XML_Dumper.dump_packages(self, [pkg_info])

                log2email(4, "Package: %s" % package_name)
                log2email(5, "Package exported to %s" % self.fm.getPackagesFile(package_name))

                pb.addTo(1)
                pb.printIncrement()
            pb.printComplete()
            log2stdout(3, "Number of packages exported: %s" % str(len(self.pkg_info)))

        except Exception:
            e = sys.exc_info()[1]
            tbout = cStringIO.StringIO()
            Traceback(mail=0, ostream=tbout, with_locals=1)
            raise_with_tb(ISSError("%s caught in dump_packages." % e.__class__.__name__,
                                   tbout.getvalue()), sys.exc_info()[2])

    def dump_packages_short(self, packages=None):
        try:
            print("\n")
            log2stdout(1, "Exporting short packages...")
            pb = progress_bar.ProgressBar(self.pb_label,
                                          self.pb_complete,
                                          len(self.pkg_info),
                                          self.pb_length,
                                          self.pb_char)
            pb.printAll(1)
            for pkg_info in self.pkg_info:
                package_name = "rhn-package-" + str(pkg_info['package_id'])
                self.set_filename(self.fm.getShortPackagesFile(package_name))
                dumper.XML_Dumper.dump_packages_short(self, [pkg_info])

                log2email(4, "Short Package: %s" % package_name)
                log2email(5, "Short Package exported to %s" % package_name)
                pb.addTo(1)
                pb.printIncrement()
            pb.printComplete()
            log2stdout(3, "Number of short packages exported: %s" % str(len(self.pkg_info)))

        except Exception:
            e = sys.exc_info()[1]
            tbout = cStringIO.StringIO()
            Traceback(mail=0, ostream=tbout, with_locals=1)
            raise_with_tb(ISSError("%s caught in dump_packages_short." %
                                   e.__class__.__name__, tbout.getvalue()), sys.exc_info()[2])

    def dump_source_packages(self, packages=None):
        try:
            print("\n")
            for pkg_info in self.src_pkg_info:
                self.set_filename(self.fm.getSourcePackagesFile("rhn-source-package-" + str(pkg_info['package_id'])))
                dumper.XML_Dumper.dump_source_packages(self, [pkg_info])

        except Exception:
            e = sys.exc_info()[1]
            tbout = cStringIO.StringIO()
            Traceback(mail=0, ostream=tbout, with_locals=1)
            raise_with_tb(ISSError("%s caught in dump_source_packages." %
                                   e.__class__.__name__, tbout.getvalue()), sys.exc_info()[2])

    def dump_errata(self, errata=None, verify_errata=False):
        try:
            print("\n")
            log2stdout(1, "Exporting errata...")
            pb = progress_bar.ProgressBar(self.pb_label,
                                          self.pb_complete,
                                          len(self.errata_info),
                                          self.pb_length,
                                          self.pb_char)
            pb.printAll(1)
            for errata_info in self.errata_info:
                erratum_name = "rhn-erratum-" + str(errata_info['errata_id'])
                self.set_filename(self.fm.getErrataFile(erratum_name))
                dumper.XML_Dumper.dump_errata(self, [errata_info])

                log2email(4, "Erratum: %s" % str(errata_info['advisory-name']))
                log2email(5, "Erratum exported to %s" % self.fm.getErrataFile(erratum_name))

                pb.addTo(1)
                pb.printIncrement()
            pb.printComplete()
            log2stdout(3, "Number of errata exported: %s" % str(len(self.errata_info)))

        except Exception:
            e = sys.exc_info()[1]
            tbout = cStringIO.StringIO()
            Traceback(mail=0, ostream=tbout, with_locals=1)
            raise_with_tb(ISSError("%s caught in dump_errata." % e.__class__.__name__,
                                   tbout.getvalue()), sys.exc_info()[2])

    def dump_kickstart_data(self):
        try:
            print("\n")
            log2stdout(1, "Exporting kickstart data...")
            pb = progress_bar.ProgressBar(self.pb_label,
                                          self.pb_complete,
                                          len(self.kickstart_trees),
                                          self.pb_length,
                                          self.pb_char)
            pb.printAll(1)
            for kickstart_tree in self.kickstart_trees:
                self.set_filename(self.fm.getKickstartTreeFile(kickstart_tree['kickstart_label']))  # , 'foo/bar'))
                dumper.XML_Dumper.dump_kickstartable_trees(self, [kickstart_tree])

                log2email(5, "KS Data: %s" % str(kickstart_tree['kickstart_label']))

                pb.addTo(1)
                pb.printIncrement()
            pb.printComplete()
            log2stdout(3, "Amount of kickstart data exported: %s" % str(len(self.kickstart_trees)))

        except Exception:
            e = sys.exc_info()[1]
            tbout = cStringIO.StringIO()
            Traceback(mail=0, ostream=tbout, with_locals=1)
            raise_with_tb(ISSError("%s caught in dump_kickstart_data." %
                                   e.__class__.__name__, tbout.getvalue()), sys.exc_info()[2])

    def dump_kickstart_files(self):
        try:
            print("\n")
            log2stdout(1, "Exporting kickstart files...")
            pb = progress_bar.ProgressBar(self.pb_label,
                                          self.pb_complete,
                                          len(self.kickstart_files),
                                          self.pb_length,
                                          self.pb_char)
            pb.printAll(1)
            for kickstart_file in self.kickstart_files:
                # get the path to the kickstart files under the satellite's mount point
                path_to_files = os.path.join(CFG.MOUNT_POINT,
                                             kickstart_file['base-path'],
                                             kickstart_file['relative-path'])

                # Make sure the path actually exists
                if not os.path.exists(path_to_files):
                    raise ISSError("Missing kickstart file under mount-point: %s" % (path_to_files,), "")

                # generate the path to the kickstart files under the export directory.
                path_to_export_file = self.fm.getKickstartFileFile(
                    kickstart_file['label'],
                    kickstart_file['relative-path'])
                #os.path.join(self.mp, kickstart_file['base-path'], kickstart_file['relative-path'])
                if os.path.exists(path_to_export_file):
                    # already exists, skip ks file
                    continue
                # Get the dirs to the file under the export directory.
                dirs_to_file = os.path.split(path_to_export_file)[0]

                # create the directory to the kickstart files under the export directory, if necessary.
                if not os.path.exists(dirs_to_file):
                    os.makedirs(dirs_to_file)
                try:
                    if self.hardlinks:
                        # Make hardlinks
                        try:
                            os.link(path_to_files, path_to_export_file)
                        except OSError:
                            pass
                    else:
                        # Copy file from satellite to export dir.
                        shutil.copyfile(path_to_files, path_to_export_file)
                except IOError:
                    e = sys.exc_info()[1]
                    tbout = cStringIO.StringIO()
                    Traceback(mail=0, ostream=tbout, with_locals=1)
                    raise_with_tb(ISSError("Error: Error copying file: %s: %s" %
                                           (path_to_files, e.__class__.__name__), tbout.getvalue()), sys.exc_info()[2])

                log2email(5, "Kickstart File: %s" %
                          os.path.join(kickstart_file['base-path'],
                                       kickstart_file['relative-path']))

                pb.addTo(1)
                pb.printIncrement()

            pb.printComplete()
            log2stdout(3, "Number of kickstart files exported: %s" % str(len(self.kickstart_files)))
        except ISSError:
            raise
        except Exception:
            e = sys.exc_info()[1]
            tbout = cStringIO.StringIO()
            Traceback(mail=0, ostream=tbout, with_locals=1)
            raise_with_tb(ISSError("%s caught in dump_kickstart_files." %
                                   e.__class__.__name__, tbout.getvalue()), sys.exc_info()[2])

    # RPM and SRPM dumping code
    def dump_rpms(self):
        try:
            print("\n")
            log2stdout(1, "Exporting binary RPMs...")
            pb = progress_bar.ProgressBar(self.pb_label,
                                          self.pb_complete,
                                          len(self.brpms),
                                          self.pb_length,
                                          self.pb_char)
            pb.printAll(1)
            for rpm in self.brpms:
                # generate path to the rpms under the mount point
                path_to_rpm = diskImportLib.rpmsPath("rhn-package-%s" % str(rpm['id']), self.mp)

                # get the dirs to the rpm
                dirs_to_rpm = os.path.split(path_to_rpm)[0]

                if (not rpm['path']):
                    raise ISSError("Error: Missing RPM under the satellite mount point. (Package id: %s)" %
                                   rpm['id'], "")
                # get the path to the rpm from under the satellite's mountpoint
                satellite_path = os.path.join(CFG.MOUNT_POINT, rpm['path'])

                if not os.path.exists(satellite_path):
                    raise ISSError("Error: Missing RPM under mount point: %s" % (satellite_path,), "")

                # create the directory for the rpm, if necessary.
                if not os.path.exists(dirs_to_rpm):
                    os.makedirs(dirs_to_rpm)

                # check if the path to rpm hardlink already exists
                if os.path.exists(path_to_rpm):
                    continue

                try:
                    # copy the file to the path under the mountpoint.
                    if self.hardlinks:
                        os.link(satellite_path, path_to_rpm)
                    else:
                        shutil.copyfile(satellite_path, path_to_rpm)
                except IOError:
                    e = sys.exc_info()[1]
                    tbout = cStringIO.StringIO()
                    Traceback(mail=0, ostream=tbout, with_locals=1)
                    raise_with_tb(ISSError("Error: Error copying file %s: %s" %
                                           (os.path.join(CFG.MOUNT_POINT, rpm['path']), e.__class__.__name__),
                                           tbout.getvalue()), sys.exc_info()[2])
                except OSError:
                    e = sys.exc_info()[1]
                    tbout = cStringIO.StringIO()
                    Traceback(mail=0, ostream=tbout, with_locals=1)
                    raise_with_tb(ISSError("Error: Could not make hard link %s: %s (different filesystems?)" %
                                           (os.path.join(CFG.MOUNT_POINT, rpm['path']), e.__class__.__name__),
                                           tbout.getvalue()), sys.exc_info()[2])

                log2email(5, "RPM: %s" % rpm['path'])

                pb.addTo(1)
                pb.printIncrement()
            pb.printComplete()
            log2stdout(3, "Number of RPMs exported: %s" % str(len(self.brpms)))
        except ISSError:
            raise

        except Exception:
            e = sys.exc_info()[1]
            tbout = cStringIO.StringIO()
            Traceback(mail=0, ostream=tbout, with_locals=1)
            raise_with_tb(ISSError("%s caught in dump_rpms." % e.__class__.__name__,
                                   tbout.getvalue()), sys.exc_info()[2])

    def dump_support_information(self):
        self._dump_simple(self.fm.getSupportInformationFile(),
                          dumper.XML_Dumper.dump_support_information,
                          "Exporting Support Information...",
                          "Support Information exported to %s",
                          "%s caught in dump_support_information.")

    def dump_suse_products(self):
        self._dump_simple(self.fm.getSuseProductsFile(),
                          dumper.XML_Dumper.dump_suse_products,
                          "Exporting SUSE Product Information...",
                          "SUSE Product Information exported to %s",
                          "%s caught in dump_suse_products.")

    def dump_suse_product_channels(self):
        self._dump_simple(self.fm.getSuseProductChannelsFile(),
                          dumper.XML_Dumper.dump_suse_product_channels,
                          "Exporting SUSE Product Channel Information...",
                          "SUSE Product Channel Information exported to %s",
                          "%s caught in dump_suse_product_channels.")

    def dump_suse_upgrade_paths(self):
        self._dump_simple(self.fm.getSuseUpgradePathsFile(),
                          dumper.XML_Dumper.dump_suse_upgrade_paths,
                          "Exporting Upgrade Path Information...",
                          "Upgrade Path Information exported to %s",
                          "%s caught in dump_suse_upgrade_paths.")

    def dump_suse_product_extensions(self):
        self._dump_simple(self.fm.getSuseProductExtensionsFile(),
                          dumper.XML_Dumper.dump_suse_product_extensions,
                          "Exporting SUSE Product Extension Information...",
                          "SUSE Product Extension Information exported to %s",
                          "%s caught in dump_suse_product_extensions.")

    def dump_suse_product_repositories(self):
        self._dump_simple(self.fm.getSuseProductRepositoriesFile(),
                          dumper.XML_Dumper.dump_suse_product_repositories,
                          "Exporting SUSE Product Repository Information...",
                          "SUSE Product Repository Information exported to %s",
                          "%s caught in dump_suse_product_repositories.")

    def dump_scc_repositories(self):
        self._dump_simple(self.fm.getSCCRepositoriesFile(),
                          dumper.XML_Dumper.dump_scc_repositories,
                          "Exporting Repository Information...",
                          "Repository Information exported to %s",
                          "%s caught in dump_scc_repositories.")

    def dump_suse_subscriptions(self):
        self._dump_simple(self.fm.getSuseSubscriptionsFile(),
                          dumper.XML_Dumper.dump_suse_subscriptions,
                          "Exporting Subscription Information...",
                          "Subscription Information exported to %s",
                          "%s caught in dump_suse_subscriptions.")

    def dump_cloned_channels(self):
        self._dump_simple(self.fm.getClonedChannelsFile(),
                          dumper.XML_Dumper.dump_cloned_channels,
                          "Exporting Channel Clone Information...",
                          "Channel clone information exported to %s",
                          "%s caught in dump_cloned_channels.")

def get_report():
    body = dumpEMAIL_LOG()
    return body


def print_report():
    print("")
    print("REPORT:")
    report_string = get_report()
    sys.stdout.write(str(report_string))


# Stolen and modified from satsync.py
def sendMail():
    # Send email summary
    body = dumpEMAIL_LOG()
    if body:
        print("+++ sending log as an email +++")
        headers = {
            'Subject' : 'SUSE Manager Export report from %s' % os.uname()[1],
        }
        #sndr = CFG.get('traceback_mail', 'rhn-satellite')
        sndr = 'suse-manager@%s' % os.uname()[1]
        rhnMail.send(headers, body, sender=sndr)
    else:
        print("+++ email requested, but there is nothing to send +++")


def handle_error(message, traceback):
    log2stderr(-1, "\n" + message)
    log2email(-1, traceback)


# This class is a mess.
class ExporterMain:

    def __init__(self):
        initCFG('server.iss')

        # pylint: disable=E1101
        self.options = UI()
        self.action_deps = ActionDeps(self.options)
        self.action_order, self.actions = self.action_deps.get_actions()
        if self.options.debug_level:
            debug_level = int(self.options.debug_level)
        else:
            debug_level = int(CFG.DEBUG)

        CFG.set("TRACEBACK_MAIL", self.options.traceback_mail or CFG.TRACEBACK_MAIL)
        CFG.set("DEBUG", debug_level)
        CFG.set("ISSEMAIL", self.options.email)

        initEMAIL_LOG()

        # This was taken straight from satsync.py.
        try:
            rhnSQL.initDB()
        except SQLConnectError:
            print('SQLERROR: There was an error connecting to the Database.')
            sys.exit(-1)
        except (SQLError, SQLSchemaError):
            e = sys.exc_info()[1]
            # An SQL error is fatal... crash and burn
            exitWithTraceback(e, 'SQL ERROR during xml processing', -1)

        # This was cribbed from satsync.py.
        if self.options.print_configuration:
            CFG.show()
            sys.exit(0)

        if self.options.list_channels:
            self.print_list_channels(self.list_channels())
            sys.exit(0)

        if self.options.list_orgs:
            self.print_orgs(self.list_orgs())
            sys.exit(0)

        # From this point on everything should assume a list of channels, so it needs to be a list
        # even if there's only one entry.
        if self.options.all_channels:
            channel_dict = self.list_channels()
            self.options.channel = []
            for pc in channel_dict:
                self.options.channel.append(pc)
                self.options.channel.extend(channel_dict[pc])
        elif self.options.channel:
            if not isinstance(self.options.channel, type([])):
                self.options.channel = [self.options.channel]
        else:
            sys.stdout.write("--channel not included!\n")
            sys.exit(0)

        # Same as above but for orgs
        if self.options.all_orgs:
            orgs = self.list_orgs()
            self.options.org = []
            for org in orgs:
                self.options.org.append(org['id'])
        elif self.options.org:
            if not type(self.options.org, type([])):
                self.options.org = [self.options.org]
            orgs = {}
            for org in self.list_orgs():
                orgs[org['name']] = str(org['id'])
            using_orgs = []
            for org in self.options.org:
                # User might have specified org name or org id, try both
                if org in list(orgs.values()):  # ids
                    using_orgs.append(org)
                elif org in list(orgs.keys()):  # names
                    using_orgs.append(orgs[org])
                else:
                    sys.stdout.write("Org not found: %s\n" % org)
                    exit(0)
            self.options.org = using_orgs
        else:
            self.options.org = []
        self.options.org = [str(x) for x in self.options.org]

        # Since everything gets dumped to a directory it wouldn't make
        # much sense if it wasn't required.
        if self.options.dir:
            self.isos_dir = os.path.join(self.options.dir, "satellite-isos")
            self.outputdir = self.options.dir
        else:
            sys.stdout.write("--dir not included!\n")
            sys.exit(0)

        if self.options.use_sync_date and self.options.use_rhn_date:
            sys.stderr.write("--use-rhn-date and --use-sync-date are mutually exclusive.\n")
            sys.exit(1)
        elif self.options.use_sync_date:
            self.options.use_rhn_date = False
        else:
            self.options.use_rhn_date = True

        if self.options.end_date and not self.options.start_date:
            sys.stderr.write("--end-date must be used with --start-date.\n")
            sys.exit(1)

        if self.options.end_date and len(self.options.end_date) < 8:
            sys.stdout.write(_("format of %s should be at least YYYYMMDD.\n") % '--end-date')
            sys.exit(1)

        if self.options.start_date and len(self.options.start_date) < 8:
            sys.stdout.write(_("format of %s should be at least YYYYMMDD.\n") % '--start-date')
            sys.exit(1)

        if self.options.start_date:
            if self.options.end_date is None:
                self.end_date = time.strftime("%Y%m%d%H%M%S")
            else:
                self.end_date = self.options.end_date.ljust(14, '0')

            self.start_date = self.options.start_date.ljust(14, '0')
            print(("start date limit: %s" % self.start_date))
            print(("end date limit: %s" % self.end_date))
        else:
            self.start_date = None
            self.end_date = None

        if self.start_date and self.options.whole_errata:
            self.whole_errata = self.options.whole_errata

        # verify mountpoint
        if os.access(self.outputdir, os.F_OK | os.R_OK | os.W_OK):
            if os.path.isdir(self.outputdir):
                self.dumper = Dumper(self.outputdir,
                                     self.options.channel,
                                     self.options.org,
                                     self.options.hard_links,
                                     start_date=self.start_date,
                                     end_date=self.end_date,
                                     use_rhn_date=self.options.use_rhn_date,
                                     whole_errata=self.options.whole_errata)
                self.actionmap = {
                    'arches':   {'dump': self.dumper.dump_arches},
                    'arches-extra':   {'dump': self.dumper.dump_server_group_type_server_arches},
                    'blacklists':   {'dump': self.dumper.dump_blacklist_obsoletes},
                    'channel-families':   {'dump': self.dumper.dump_channel_families},
                    'channels':   {'dump': self.dumper.dump_channels},
                    'packages':   {'dump': self.dumper.dump_packages},
                    'short':   {'dump': self.dumper.dump_packages_short},
                    #'channel-pkg-short' :   {'dump': self.dumper.dump_channel_packages_short},
                    #'source-packages'   :   {'dump': self.dumper.dump_source_packages},
                    'errata':   {'dump': self.dumper.dump_errata},
                    'kickstarts':   {'dump': [self.dumper.dump_kickstart_data,
                                              self.dumper.dump_kickstart_files]},
                    'rpms':   {'dump': self.dumper.dump_rpms},
                    'orgs':   {'dump': self.dumper.dump_orgs},
                    'productnames': {'dump': self.dumper.dump_product_names},
                    'supportinfo':   {'dump': self.dumper.dump_support_information},
                    'suse-products':   {'dump': self.dumper.dump_suse_products},
                    'suse-product-channels':   {'dump': self.dumper.dump_suse_product_channels},
                    'suse-upgrade-paths':   {'dump': self.dumper.dump_suse_upgrade_paths},
                    'suse-product-extensions':   {'dump': self.dumper.dump_suse_product_extensions},
                    'suse-product-repositories':   {'dump': self.dumper.dump_suse_product_repositories},
                    'scc-repositories':   {'dump': self.dumper.dump_scc_repositories},
                    'suse-subscriptions':   {'dump': self.dumper.dump_suse_subscriptions},
                    'cloned-channels':   {'dump': self.dumper.dump_cloned_channels},
                }
            else:
                print("The output directory is not a directory")
                sys.exit(-1)
        else:
            print("can't access output directory")
            sys.exit(-1)

    @staticmethod
    def list_channels():
        """ return all available channels

            the returned format is dictionary containing base_label as keys and value is list
            of labels of child channels
        """
        # The keys for channel_dict are the labels of the base channels.
        # The values associated with each key is a list of the labels of
        # the child channels whose parent channel is the key.
        channel_dict = {}

        # Grab some info on base channels. Base channels
        # have parent_channel set to null.
        base_channel_query = rhnSQL.Statement("""
            select  id, label
            from    rhnChannel
            where   parent_channel is null
        """)
        base_channel_data = rhnSQL.prepare(base_channel_query)
        base_channel_data.execute()
        base_channels = base_channel_data.fetchall_dict()

        # Grab some info on child channels.
        child_channel_query = rhnSQL.Statement("""
            select  id, label, parent_channel
            from    rhnChannel
            where   parent_channel = :id
        """)
        child_channel_data = rhnSQL.prepare(child_channel_query)

        if base_channels:
            for ch in base_channels:
                base_label = ch['label']
                base_id = ch['id']

                # If the base channel isn't in channel_dict yet, create
                # an empty list for it.
                if not base_label in channel_dict:
                    channel_dict[base_label] = []

                # grab the child channel information for this base channel.
                child_channel_data.execute(id=base_id)
                child_channels = child_channel_data.fetchall_dict()

                # If the base channel has some child channels, add them
                # to the list associated with the base channel in channel_dict.
                # Organizing the labels this way makes it a lot easier to print
                # out.
                if child_channels:
                    for child in child_channels:
                        child_label = child['label']
                        channel_dict[base_label].append(child_label)
        return channel_dict

    @staticmethod
    def print_list_channels(channel_dict):
        """ channel_dict is dictionary containing base_label as keys and value is list
            of labels of child channels
        """
        if channel_dict:
            # Print the legend.
            print("Channel List:")
            print("B = Base Channel")
            print("C = Child Channel")
            print("")

            base_template = "B %s"
            child_template = "C\t%s"

            # Print channel information.
            for pc in list(channel_dict.keys()):
                print((base_template % (pc,)))
                for cc in channel_dict[pc]:
                    print((child_template % (cc,)))
                print(" ")
        else:
            print("No Channels available for listing.")

    @staticmethod
    def list_orgs():
        """
        Return a list of all orgs.
        """
        org_query = rhnSQL.Statement("""
            select  id, name
            from    web_customer
        """)
        org_data = rhnSQL.prepare(org_query)
        org_data.execute()
        return org_data.fetchall_dict()

    @staticmethod
    def print_orgs(orgs):
        if orgs:
            print("Orgs available for export:")
            for org in orgs:
                print(("Id: %s, Name: \'%s\'" % (org['id'], org['name'])))
        else:
            print("No Orgs available for listing.")

    def main(self):
        # pylint: disable=E1101
        try:
            for action in self.action_order:
                if self.actions[action] != 1:
                    continue

                if not action in self.actionmap:
                    # If we get here there's a programming error. It means that self.action_order
                    # contains a action that isn't defined in self.actionmap.
                    sys.stderr.write("List of actions doesn't have %s.\n" % (action,))
                    continue

                if isinstance(self.actionmap[action]['dump'], type([])):
                    for dmp in self.actionmap[action]['dump']:
                        dmp()
                else:
                    self.actionmap[action]['dump']()

                # Now Compress the dump data
                if action == 'rpms':
                    continue
                elif action == 'arches-extra':
                    action = 'arches'
                elif action == 'short':
                    action = 'packages_short'
                elif action == 'channel-families':
                    action = 'channel_families'
                elif action == 'kickstarts':
                    action = 'kickstart_trees'
                elif action == 'productnames':
                    action = 'product_names'

                os_data_dir = os.path.join(self.outputdir, action)
                if not os.path.exists(os_data_dir):
                    continue

                for fpath, _dirs, files in os.walk(os_data_dir):
                    for f in files:
                        if f.endswith(".xml") or f.endswith(".yaml"):
                            filepath = os.path.join(fpath, f)
                            compress_file(filepath)

            if self.options.make_isos:
                #iso_output = os.path.join(self.isos_dir, self.dump_dir)
                iso_output = self.isos_dir
                if not os.path.exists(iso_output):
                    os.makedirs(iso_output)

                iss_isos.create_isos(self.outputdir, iso_output,
                                     "rhn-export", self.start_date, self.end_date,
                                     iso_type=self.options.make_isos)

                # Generate md5sum digest file for isos
                if os.path.exists(iso_output):
                    f = open(os.path.join(iso_output, 'MD5SUM'), 'w')
                    for iso_file in os.listdir(iso_output):
                        if self.options.make_isos != "dvds" and iso_file != "MD5SUM":
                            md5_val = getFileChecksum('md5', (os.path.join(iso_output, iso_file)))
                            md5str = "%s  %s\n" % (md5_val, iso_file)
                            f.write(md5str)
                    f.close()

            if self.options.email:
                sendMail()

            if self.options.print_report:
                print_report()

        except SystemExit:
            sys.exit(0)

        except ISSError:
            isserror = sys.exc_info()[1]
            # I have the tb get generated in the functions that the the error occurred in to minimize
            # the amount of extra crap that shows up in it.
            tb = isserror.tb
            msg = isserror.msg
            handle_error(msg, tb)

            if self.options.email:
                sendMail()
            if self.options.print_report:
                print_report()

            sys.exit(-1)

        except Exception:  # pylint: disable=E0012, W0703
            e = sys.exc_info()[1]
            # This should catch the vast majority of errors that aren't ISSErrors
            tbout = cStringIO.StringIO()
            Traceback(mail=0, ostream=tbout, with_locals=1)
            msg = "Error: %s caught!" % e.__class__.__name__
            handle_error(msg, tbout.getvalue())
            if self.options.email:
                sendMail()
            if self.options.print_report:
                print_report()
            sys.exit(-1)


def compress_file(f):
    """
    Gzip the given file and then remove the file.
    """
    datafile = open(f, 'rb')
    gzipper = gzip.GzipFile(f + '.gz', 'w', 9)
    gzipper.write(datafile.read())
    gzipper.flush()
    # close opened streams
    gzipper.close()
    datafile.close()
    # removed the old file
    os.unlink(f)

if __name__ == "__main__":
    em = ExporterMain()
    em.main()
 070701000000C7000081B40000000000000000000000016290A0C100001595000000000000000000000000000000000000003D00000000spacewalk-backend/satellite_tools/disk_dumper/iss_actions.py  #
# Copyright (c) 2008--2017 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#

import sys

from . import iss_ui


class ActionDeps:

    def __init__(self, options):
        # self.step_precedence contains the dependencies among the export steps.
        self.step_precedence = {
            'orgs': [''],
            'packages': [''],
            'source-packages': [''],
            'errata': [''],
            'kickstarts': [''],
            'rpms': [''],
            #            'srpms'                     : ['channels'],
            'channels': ['channel-families'],
            'channel-families': ['blacklists'],
            'blacklists': ['arches'],
            'short': ['channels'],
            'arches': ['arches-extra'],
            'arches-extra': [''],
            'productnames': [''],
            'supportinfo': [''],
            'suse-products': [''],
            'suse-product-channels': ['suse-products', 'channels'],
            'suse-upgrade-paths': ['suse-products'],
            'suse-product-extensions': ['suse-products'],
            'scc-repositories': [''],
            'suse-product-repositories': ['suse-products', 'scc-repositories'],
            'suse-subscriptions': ['channel-families'],
            'cloned-channels': ['channels'],
        }

        # self.step_hierarchy lists the export steps in the order they need to be run.
        self.step_hierarchy = [
            'orgs',
            'channel-families',
            'arches',
            'arches-extra',
            'productnames',
            'channels',
            'blacklists',
            'short',
            'cloned-channels',
            'rpms',
            'packages',
            'errata',
            'kickstarts',
            'supportinfo',
            'suse-products',
            'scc-repositories',
            'suse-product-channels',
            'suse-upgrade-paths',
            'suse-product-extensions',
            'suse-product-repositories',
            'suse-subscriptions',
        ]
        self.options = options
        self.action_dict = {'blacklists': 0}

    def list_steps(self):
        print("LIST OF STEPS:")
        for step in self.step_hierarchy:
            print(step)
        sys.exit(0)

    # Contains the logic for the --step option
    def handle_step_option(self):
        # If the user didn't use --step, set the last step to the end of self.step_hierarchy.
        if not self.options.step:
            self.options.step = self.step_hierarchy[-1]

        # Make sure that the step entered by the user is actually a step.
        if self.options.step not in self.step_hierarchy:
            sys.stderr.write("Error: '%s' is not a valid step.\n" % self.options.step)
            sys.exit(-1)

        # Turn on all of the steps up to the option set as self.options.step.
        for step in self.step_hierarchy:
            self.action_dict[step] = 1
            if step == self.options.step:
                break

        # This will set the rest of the steps to 0.
        for step in self.step_hierarchy:
            self.action_dict[step] = step in self.action_dict

    # Handles the logic for the --no-rpms, --no-packages, --no-errata, --no-kickstarts, and --list-channels.
    def handle_options(self):

        if self.options.list_steps:
            self.list_steps()

        if self.options.no_rpms:
            self.action_dict['rpms'] = 0

        if self.options.no_packages:
            self.action_dict['packages'] = 0

        if self.options.no_errata:
            self.action_dict['errata'] = 0

        if self.options.no_kickstarts:
            self.action_dict['kickstarts'] = 0

        if not self.options.all_orgs and not self.options.org:
            self.action_dict['orgs'] = 0

        if self.options.list_channels:
            self.action_dict['channels'] = 1
            self.action_dict['blacklists'] = 0
            self.action_dict['arches'] = 0
            self.action_dict['channel-families'] = 1

    # This method uses self.step_precendence to figure out if a step needs to be turned off.
    def turn_off_dep_steps(self, step):
        for dependent in self.step_precedence[step]:
            if dependent in self.action_dict:
                self.action_dict[dependent] = 0

    # This method will call turn_off_dep_steps if the step is off or not present in self.action_dict.
    def handle_step_dependents(self):
        for step in self.step_hierarchy:
            if step in self.action_dict:
                if self.action_dict[step] == 0:
                    self.turn_off_dep_steps(step)
            else:
                self.turn_off_dep_steps(step)

    # This will return the step_hierarchy and the action_dict.
    def get_actions(self):
        self.handle_step_option()
        self.handle_options()
        self.handle_step_dependents()
        return self.step_hierarchy, self.action_dict

if __name__ == "__main__":
    a = iss_ui.UI()
    b = ActionDeps(a)
    print((b.get_actions()))
   070701000000C8000081B40000000000000000000000016290A0C100000473000000000000000000000000000000000000003A00000000spacewalk-backend/satellite_tools/disk_dumper/iss_isos.py #
# Copyright (c) 2008--2015 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#

from spacewalk.satellite_tools import geniso


def create_isos(mountpoint, outdir, prefix, lower_limit=None, upper_limit=None, copy_iso_dir=None, iso_type=None):
    opts = ["--mountpoint=%s" % mountpoint,
            "--file-prefix=%s" % prefix,
            "--output=%s" % outdir,
            "--type=%s" % iso_type]

    if lower_limit is not None:
        opts.append("-v%s-%s" % (lower_limit, upper_limit))

    if copy_iso_dir is not None:
        opts.append("--copy-iso-dir=%s" % copy_iso_dir)

    geniso.main(opts)
 070701000000C9000081B40000000000000000000000016290A0C10000159B000000000000000000000000000000000000003800000000spacewalk-backend/satellite_tools/disk_dumper/iss_ui.py   #
# Copyright (c) 2008--2016 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#

from optparse import OptionParser, Option
from spacewalk.common.rhnConfig import PRODUCT_NAME

# Not strictly necessary, but makes them easier to type
option_parser = OptionParser
option = Option

# pylint: disable=R0903


class UI:

    def __init__(self):
        self.optiontable = [
            option("-d",    "--dir",                    action="store",
                   help="This is the directory that the information that you want to sync gets dumped in."),
            option("--hard-links",             action="store_true",        default=0,
                   help="Exported RPM and kickstart are hard linked to original files."),
            option("--list-channels",          action="store_true",    default=0,
                   help="List all of the channels that can be exported."),
            option("--list-steps",             action="store_true",    default=0,
                   help="List all of the steps that rhn-satellite-exporter takes while exporting data."
                   + " These can be used as values for --step"),
            option("-c",    "--channel",                action="append",
                   help="Include this channel in the export."),
            option("-a",    "--all-channels",            action="store_true",    default=0,
                   help="Export all channels."),
            option("--start-date",             action="store",
                   help="The start date limit that the last modified dates are compared against. "
                   + "Should be in the format 'YYYYMMDDHH24MISS'."),
            option("--end-date",                action="store",
                   help="The end date limit that the last modified dates are compared against. "
                   + "Should be in the format 'YYYYMMDDHH24MISS'."),
            option("--use-rhn-date",            action="store_true",
                   help="Limit exported packages according to the date when they appeared at Red Hat Network."),
            option("--use-sync-date",            action="store_true",
                   help="Limit exported packages according to the date they where pulled into %s." % PRODUCT_NAME),
            option("--whole-errata",            action="store_true",
                   help="Always include package if it belongs to errata which is withing start/end-date range."),
            option("--make-isos",               action="store",
                   help="Create channel dump isos a directory called satellite-isos. Usage: --make-isos=cd or dvd"),
            option("-p",    "--print-configuration",    action="store_true",    default=0,
                   help="Print the configuration and exit."),
            option("--print-report",           action="store_true",    default=0,
                   help="Print the report to the terminal when the export is complete."),
            option("--step",                   action="store",
                   help="Export only up to this step."),
            option("--no-rpms",                action="store_true",
                   help="Do not export RPMs."),
            option("--no-packages",            action="store_true",
                   help="Do not export package metadata."),
            option("--no-errata",              action="store_true",
                   help="Do not export errata data."),
            option("--no-kickstarts",          action="store_true",
                   help="Do not export kickstart data."),
            option("--debug-level",            action="store",
                   help="Set the debug level to this value. Overrides the value in rhn.conf."),
            option("-v",   "--verbose",                action="store_true",
                   help="Set debug level to 3. Overrides the value in rhn.conf.."),
            option("--email",                  action="store_true",
                   help="Email a report of what was exported."),
            option("--traceback-mail",        action="store",
                   help="Alternative email address for --email."),
            option("--all-orgs",        action="store_true",
                   help="Export all orgs."),
            option("-o",         "--org",        action="append",
                   help="Include the org with this id in the export."),
            option("--list-orgs",        action="store_true",
                   help="List all orgs that can be exported"),
        ]
        self.optionparser = option_parser(option_list=self.optiontable)
        self.options, self.args = self.optionparser.parse_args()
        if self.options.verbose and not self.options.debug_level:
            self.options.debug_level = 3

        for i in list(self.options.__dict__.keys()):
            if i not in self.__dict__:
                self.__dict__[i] = self.options.__dict__[i]

if __name__ == "__main__":
    # pylint: disable=E1101
    a = UI()
    print((str(a.no_errata)))
 070701000000CA000081FD0000000000000000000000016290A0C100000A8E000000000000000000000000000000000000004500000000spacewalk-backend/satellite_tools/disk_dumper/rhn-satellite-exporter  #!/usr/bin/python
#
# Copyright (c) 2008--2015 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#

try:
    #  python 2
    import cStringIO
except ImportError:
    #  python3
    import io as cStringIO

import sys
import os

# quick check to see if you are a super-user.
if os.getuid() != 0:
    sys.stderr.write('ERROR: must be root to execute\n')
    sys.exit(8)

from spacewalk.satellite_tools.disk_dumper import iss
from spacewalk.satellite_tools.syncLib import log2stderr, log2email
from spacewalk.common.rhnTB import Traceback

if os.geteuid() != 0:
    print("This script must be run as root.")
    exit()

if __name__ == "__main__":
    try:
        main = iss.ExporterMain()
    except iss.ISSError as isserror:
        # I have the tb get generated in the function that the the error occurred in to minimize
        # the amount of extra crap that shows up in it.
        tb = isserror.tb
        msg = isserror.msg
        log2stderr(-1, isserror.msg)
        log2stderr(4, isserror.tb)
        sys.exit(-1)
    except SystemExit as se:
        sys.exit(se.code)
    except Exception as e:
        log2stderr(-1, "Unhandled Error: %s" % (e.__class__.__name__,))
        tbout = cStringIO.StringIO()
        Traceback(mail=0, ostream=tbout, with_locals=0)
        log2stderr(4, tbout.getvalue())
        sys.exit(-1)

    try:
        main.main()

    except SystemExit as se:
        sys.exit(se.code)

    except iss.ISSError as isserror:
        tb = isserror.tb
        msg = isserror.msg
        iss.handle_error(msg, tb)

        if main.options.email:
            iss.sendMail()

        if main.options.print_report:
            iss.print_report()

        sys.exit(-1)

    except Exception as e:
        log2stderr(-1, "Unhandled Error: %s" % (e.__class__.__name__,))
        # If we get here we want the traceback, even if it's got some useless junk added to it.
        tbout = cStringIO.StringIO()
        Traceback(mail=0, ostream=tbout, with_locals=0)
        log2email(-1, tbout.getvalue())

        if main.options.email:
            iss.sendMail()

        if main.options.print_report:
            iss.print_report()

        sys.exit(-1)
  070701000000CB000081B40000000000000000000000016290A0C100002D1B000000000000000000000000000000000000004A00000000spacewalk-backend/satellite_tools/disk_dumper/rhn-satellite-exporter.sgml <!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook V3.1//EN" [
<!ENTITY RHNSATEXPORTER "SUSE Manager Exporter " >

]>
<refentry>

<RefMeta>
<RefEntryTitle>rhn-satellite-exporter</RefEntryTitle><manvolnum>8</manvolnum>
<RefMiscInfo>Version 1.0</RefMiscInfo>
</RefMeta>

<RefNameDiv>
<RefName><command>rhn-satellite-exporter</command></RefName>
<RefPurpose>
A tool that exports Red Hat Satellite content into a directory in an XML format. That content can then be imported using satellite-sync's -m option.
</RefPurpose>
</RefNameDiv>

<RefSynopsisDiv>
<Synopsis>
    <cmdsynopsis>
        <command>rhn-satellite-exporter</command>
        <arg>options <replaceable>...</replaceable></arg>
    </cmdsynopsis>
    <cmdsynopsis>
        <arg>-v</arg>
        <arg>--verbose</arg>
    </cmdsynopsis>
    <cmdsynopsis>
        <arg>-d<replaceable>DIRECTORY</replaceable></arg>
        <arg>--dir=<replaceable>DIRECTORY</replaceable></arg>
    </cmdsynopsis>
    <cmdsynopsis>
        <arg>-c<replaceable>CHANNEL_LABEL</replaceable></arg>
        <arg>--channel=<replaceable>CHANNEL_LABEL</replaceable></arg>
    </cmdsynopsis>
    <cmdsynopsis>
        <arg>-a</arg>
        <arg>--all-channels</arg>
    </cmdsynopsis>
    <cmdsynopsis>
        <arg>--hard-links</arg>
    </cmdsynopsis>
    <cmdsynopsis>
        <arg>--start-date=<replaceable>START_DATE</replaceable></arg>
    </cmdsynopsis>
    <cmdsynopsis>
        <arg>--end-date=<replaceable>END_DATE</replaceable></arg>
    </cmdsynopsis>
    <cmdsynopsis>
        <arg>--use-rhn-date</arg>
    </cmdsynopsis>
    <cmdsynopsis>
        <arg>--use-sync-date</arg>
    </cmdsynopsis>
    <cmdsynopsis>
        <arg>--whole-errata</arg>
    </cmdsynopsis>
    <cmdsynopsis>
        <arg>-p</arg>
        <arg>--print-configuration</arg>
    </cmdsynopsis>
    <cmdsynopsis>
        <arg>--step</arg>
    </cmdsynopsis>
    <cmdsynopsis>
        <arg>--no-rpms</arg>
    </cmdsynopsis>
    <cmdsynopsis>
        <arg>--no-packages</arg>
    </cmdsynopsis>
    <cmdsynopsis>
        <arg>--no-errata</arg>
    </cmdsynopsis>
    <cmdsynopsis>
        <arg>--no-kickstarts</arg>
    </cmdsynopsis>
    <cmdsynopsis>
        <arg>--debug-level</arg>
    </cmdsynopsis>
    <cmdsynopsis>
        <arg>--email</arg>
    </cmdsynopsis>
    <cmdsynopsis>
        <arg>--traceback-mail</arg>
    </cmdsynopsis>
    <cmdsynopsis>
        <arg>--all-orgs</arg>
    </cmdsynopsis>
    <cmdsynopsis>
        <arg>-o<replaceable>ORG</replaceable></arg>
        <arg>--org=<replaceable>ORG</replaceable></arg>
    </cmdsynopsis>
    <cmdsynopsis>
        <arg>--list-orgs</arg>
    </cmdsynopsis>
    <cmdsynopsis>
        <arg>--help</arg>
    </cmdsynopsis>
</Synopsis>
</RefSynopsisDiv>

<RefSect1><Title>Description</Title>

<para>
    The &RHNSATEXPORTER; (<emphasis>rhn-satellite-exporter</emphasis>) tool exports Red Hat Satellite content in an XML format that is understood by satellite-sync's -m option. The means of transporting the exported information to the Red Hat Satellite server is up to the user and beyond the scope of this document. The content is exported into a directory that is specified by the user with the -d option. rhn-satellite-exporter can export the following content: <emphasis>Channel Families, Arches, Channel Metadata, Blacklists, RPMS, RPM Metadata, Errata, Kickstarts</emphasis>.
</para>
<para>
    The amount of time it takes rhn-satellite-exporter to export data is dependent on the number and size of the channels being exported. Using the --no-packages, --no-kickstarts, --no-errata, and --no-rpms options will reduce the amount of time it takes for rhn-satellite-exporter to run, but they will also prevent potentially useful information from being exported. For that reason, they should only be used when you are certain that you will not need the content that they exclude. Additionally, you will need to use the matching options for satellite-sync when importing the data. For example, if you use --no-kickstarts with rhn-satellite-exporter you will have to use satellite-sync's --no-kickstarts option when importing the data.
</para>
<para>
    If you are exporting one of the base channels provided by RHN, you will also need to export the tools channel associated with that base channel in order to kickstart machines to the distribution in the base channel. For instance, if you export rhel-i386-as-4 you should also export the rhn-tools-rhel-4-as-i386 channel in order to kickstart machines to RHEL 4 AS. This is because the tools channels contain the auto-kickstart packages that install packages for kickstarting a machine through the Red Hat Satellite.
</para>
<para>
    The --email option is used to send a report to the administrator's email address when the export is complete. If an error occurs when the --email option is set, the error should be included in the report. The only time that --email will not work is if an error occurs while the program is starting up. Increasing the debug level by using --debug-level will increase the amount of information included in the report.
</para>
</RefSect1>

<RefSect1><Title>Options</Title>
<variablelist>
    <varlistentry>
        <term>-v, --verbose</term>
        <listitem>
            <para>Set debug level to 3. Overrides the value in rhn.conf.</para>
        </listitem>
    </varlistentry>
    <varlistentry>
        <term>-dDIR, --dir=DIR</term>
        <listitem>
            <para>Place the exported information into this directory.</para>
        </listitem>
    </varlistentry>
    <varlistentry>
        <term>--hard-links</term>
        <listitem>
        <para>Hard link exported packages and kickstarts to original files.</para>
        </listitem>
    </varlistentry>
    <varlistentry>
        <term>-c<replaceable>CHANNEL_LABEL</replaceable>, --channel=<replaceable>CHANNEL_LABEL</replaceable></term>
        <listitem>
            <para>Process data for this specific channel (specified by label)
            only.
            NOTE: the channel's *label* is NOT the same as the channel's
            *name*.</para>
        </listitem>
    </varlistentry>
    <varlistentry>
        <term>-a, --all-channels</term>
        <listitem>
            <para>Export all channels.</para>
        </listitem>
    </varlistentry>
    <varlistentry>
		<term>--start-date=<replaceable>START_DATE</replaceable></term>
        <listitem>
            <para>The start date limit that the last modified dates are
                  compared against. Should be in the format 'YYYYMMDDHH24MISS'.
                  If you did not enter hour, minute and/or second, then zero is
                  assumed. I.e. date 20100101 is expanded to 20100101000000.</para>
        </listitem>
    </varlistentry>
    <varlistentry>
		<term>--end-date=<replaceable>END_DATE</replaceable></term>
        <listitem>
            <para>The end date limit that the last modified dates are
                  compared against. Must be in the format 'YYYYMMDDHH24MISS'.
                  If you did not enter hour, minute and/or second, then zero is
                  assumed. I.e. date 20100101 is expanded to 20100101000000.</para>
        </listitem>
    </varlistentry>
    <varlistentry>
        <term>--use-rhn-date</term>
        <listitem>
            <para>Limit exported packages according to the date when
                  they appeared at Red Hat Network. This is default.
                  </para>
        </listitem>
    </varlistentry>
    <varlistentry>
        <term>--use-sync-date</term>
        <listitem>
            <para>Limit exported packages according to the date they
                  where pulled into Red Hat Satellite.
                  </para>
        </listitem>
    </varlistentry>
    <varlistentry>
        <term>--whole-errata</term>
        <listitem>
            <para>Always include package if it belongs to errata which
                  is withing start/end-date range.
                  </para>
        </listitem>
    </varlistentry>
    <varlistentry>
		<term>--make-isos=<replaceable>MAKE_ISOS</replaceable></term>
        <listitem>
            <para>Create channel dump isos directory called satellite-isos.
                  Usage: --make-isos=cd or dvd.</para>
        </listitem>
    </varlistentry>
    <varlistentry>
        <term>--list-channels</term>
        <listitem>
            <para>List the channels that can be exported.</para>
        </listitem>
    </varlistentry>
    <varlistentry>
        <term>--list-steps</term>
        <listitem>
            <para>List all of the steps that rhn-satellite-exporter takes while exporting data. These can be used as values for --step.</para>
        </listitem>
    </varlistentry>
    <varlistentry>
        <term>-p, --print-configuration</term>
        <listitem>
            <para>Print the configuration and exit.</para>
        </listitem>
    </varlistentry>
    <varlistentry>
        <term>--print-report</term>
        <listitem>
            <para>Print a report to the terminal when the export is complete.</para>
        </listitem>
    </varlistentry>
    <varlistentry>
        <term>--step</term>
        <listitem>
            <para>Export information only up to this step.</para>
        </listitem>
    </varlistentry>
    <varlistentry>
        <term>--no-rpms</term>
        <listitem>
            <para>Do not export RPMs.</para>
        </listitem>
    </varlistentry>
    <varlistentry>
        <term>--no-packages</term>
        <listitem>
            <para>Do not export RPM metadata.</para>
        </listitem>
    </varlistentry>
    <varlistentry>
        <term>--no-errata</term>
        <listitem>
            <para>Do not export errata.</para>
        </listitem>
    </varlistentry>
    <varlistentry>
        <term>--no-kickstarts</term>
        <listitem>
            <para>Do not export kickstart data.</para>
        </listitem>
    </varlistentry>
    <varlistentry>
        <term>--debug-level</term>
        <listitem>
            <para>Set the debug level to this value. Overrides the value in /etc/rhn/rhn.conf for this tool.</para>
        </listitem>
    </varlistentry>
    <varlistentry>
        <term>--email</term>
        <listitem>
            <para>Email a report of what was exported and what errors may have occurred.</para>
        </listitem>
    </varlistentry>
    <varlistentry>
        <term>--traceback-mail</term>
        <listitem>
            <para>Alternative email address for --email.</para>
        </listitem>
    </varlistentry>
    <varlistentry>
        <term>--all-orgs</term>
        <listitem>
            <para>Export all orgs.</para>
        </listitem>
    </varlistentry>
    <varlistentry>
        <term>-o<replaceable>ORG</replaceable>, --org=<replaceable>ORG</replaceable></term>
        <listitem>
            <para>Include the org with this id in the export.</para>
        </listitem>
    </varlistentry>
    <varlistentry>
        <term>--list-orgs</term>
        <listitem>
            <para>List all orgs that can be exported.</para>
        </listitem>
    </varlistentry>
    <varlistentry>
        <term>-h, --help</term>
        <listitem>
            <para>Show help message and exit.</para>
        </listitem>
    </varlistentry>
</variablelist>
</RefSect1>

<RefSect1><Title>See Also</Title>
<simplelist>
    <member>satellite-sync(8)</member>
</simplelist>
</RefSect1>

<RefSect1><Title>Authors</Title>
<simplelist>
    <member>John Wregglesworth <email>wregglej@redhat.com</email></member>
</simplelist>
</RefSect1>
</RefEntry>
 070701000000CC000081B40000000000000000000000016290A0C1000005CF000000000000000000000000000000000000003F00000000spacewalk-backend/satellite_tools/disk_dumper/string_buffer.py    #
# Copyright (c) 2008--2015 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#
#
# Simple string buffer that wraps around streams to speed up writes
#

import sys
import time

class StringBuffer:

    def __init__(self, stream):
        self.stream = stream
        self.buffer_size = 65536
        self.buffer = ""

    def write(self, data):
        self.buffer = self.buffer + data
        if len(self.buffer) < self.buffer_size:
            return
        # The buffer is full, send it
        self.stream.write(self.buffer[:self.buffer_size])
        self.buffer = self.buffer[self.buffer_size:]

    def flush(self):
        if self.buffer:
            self.stream.write(self.buffer)
            self.buffer = ""

    def close(self):
        self.flush()

    def __del__(self):
        self.close()


if __name__ == '__main__':
    sb = StringBuffer(sys.stdout)
    sb.buffer_size = 10

    while 1:
        sb.write('a')
        time.sleep(.2)
 070701000000CD000081B40000000000000000000000016290A0C100003B36000000000000000000000000000000000000002E00000000spacewalk-backend/satellite_tools/download.py #
# Copyright (c) 2018 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#

import os
import sys
import re
import time
from threading import Thread, Lock
try:
    #  python 2
    import urlparse
    from Queue import Queue, Empty
    from urllib import quote
except ImportError:
    #  python3
    import urllib.parse as urlparse # pylint: disable=F0401,E0611
    from queue import Queue, Empty
    from urllib.parse import quote
import pycurl
from urlgrabber.grabber import URLGrabberOptions, PyCurlFileObject, URLGrabError
from uyuni.common.checksum import getFileChecksum
from spacewalk.common.rhnConfig import CFG, initCFG
from spacewalk.satellite_tools.syncLib import log, log2


class ProgressBarLogger:
    def __init__(self, msg, total):
        self.msg = msg
        self.total = total
        self.status = 0
        self.last_log = time.time()
        self.lock = Lock()

    def log(self, *_):
        self.lock.acquire()
        self.status += 1
        self._print_progress_bar(self.status, self.total, prefix=self.msg, bar_length=50)
        if time.time() > int(self.last_log + 90):
            self.last_log = time.time()
            log(0, '%s %s' % (round(100.00 * (self.status / float(self.total)), 2), '%'))
        self.lock.release()

    # from here http://stackoverflow.com/questions/3173320/text-progress-bar-in-the-console
    # Print iterations progress
    @staticmethod
    def _print_progress_bar(iteration, total, prefix='', suffix='', decimals=2, bar_length=100):
        """
        Call in a loop to create terminal progress bar
        @params:
            iteration   - Required  : current iteration (Int)
            total       - Required  : total iterations (Int)
            prefix      - Optional  : prefix string (Str)
            suffix      - Optional  : suffix string (Str)
            decimals    - Optional  : number of decimals in percent complete (Int)
            bar_length   - Optional  : character length of bar (Int)
        """
        filled_length = int(round(bar_length * iteration / float(total)))
        percents = round(100.00 * (iteration / float(total)), decimals)
        bar_char = '#' * filled_length + '-' * (bar_length - filled_length)
        sys.stdout.write('\r%s |%s| %s%s %s' % (prefix, bar_char, percents, '%', suffix))
        sys.stdout.flush()
        if iteration == total:
            sys.stdout.write('\n')
            sys.stdout.flush()


class TextLogger:
    def __init__(self, _, total):
        self.total = total
        self.status = 0
        self.lock = Lock()

    def log(self, success, param):
        self.lock.acquire()
        self.status += 1
        if success:
            log(0, "    %d/%d : %s" % (self.status, self.total, str(param)))
        else:
            log2(0, 0, "    %d/%d : %s (failed)" % (self.status, self.total, str(param)), stream=sys.stderr)
        self.lock.release()


# Older versions of urlgrabber don't allow to set proxy parameters separately
# Simplified version from yumRepository class
def get_proxies(proxy, user, password):
    if not proxy:
        return {}
    proxy_string = proxy
    if user:
        auth = quote(user)
        if password:
            auth += ':' + quote(password)
        proto, rest = re.match(r'(\w+://)(.+)', proxy_string).groups()
        proxy_string = "%s%s@%s" % (proto, auth, rest)
    proxies = {'http': proxy_string, 'https': proxy_string, 'ftp': proxy_string}
    return proxies


class PyCurlFileObjectThread(PyCurlFileObject):
    def __init__(self, url, filename, opts, curl_cache, parent):
        self.curl_cache = curl_cache
        self.parent = parent
        (url, parts) = opts.urlparser.parse(url, opts)
        (scheme, host, path, parm, query, frag) = parts
        opts.find_proxy(url, scheme)
        PyCurlFileObject.__init__(self, str(url), filename, opts)

    def _do_open(self):
        self.curl_obj = self.curl_cache
        self.curl_obj.reset()
        self._set_opts()
        self._do_grab()
        return self.fo

    def _do_perform(self):
        # WORKAROUND - BZ #1439758 - ensure first item in queue is performed alone to properly setup NSS
        if not self.parent.first_in_queue_done:
            self.parent.first_in_queue_lock.acquire()
            # If some other thread was faster, no need to block anymore
            if self.parent.first_in_queue_done:
                self.parent.first_in_queue_lock.release()
        try:
            PyCurlFileObject._do_perform(self)
        finally:
            if not self.parent.first_in_queue_done:
                self.parent.first_in_queue_done = True
                self.parent.first_in_queue_lock.release()


class FailedDownloadError(Exception):
    pass


class DownloadThread(Thread):
    def __init__(self, parent, queue):
        Thread.__init__(self)
        self.parent = parent
        self.queue = queue
        # pylint: disable=E1101
        self.curl = pycurl.Curl()
        self.mirror = 0

    @staticmethod
    def __is_file_done(local_path=None, file_obj=None, checksum_type=None, checksum=None):
        if checksum_type and checksum:
            if local_path and os.path.isfile(local_path):
                return getFileChecksum(checksum_type, filename=local_path) == checksum
            elif file_obj:
                return getFileChecksum(checksum_type, file_obj=file_obj) == checksum
        if local_path and os.path.isfile(local_path):
            return True
        elif file_obj:
            return True
        return False

    def __can_retry(self, retry, mirrors, opts, url, e):
        retrycode = getattr(e, 'errno', None)
        code = getattr(e, 'code', None)
        if retry < (self.parent.retries - 1):
            # No codes at all or some specified codes
            # 58, 77 - Couple of curl error codes observed in multithreading on RHEL 7 - probably a bug
            if (retrycode is None and code is None) or (retrycode in opts.retrycodes or code in [58, 77]):
                log2(0, 2, "ERROR: Download failed: %s - %s. Retrying..." % (url, sys.exc_info()[1]),
                     stream=sys.stderr)
                return True

        # 14 - HTTP Error
        if retry < (mirrors - 1) and retrycode == 14:
            log2(0, 2, "ERROR: Download failed: %s - %s. Trying next mirror..." % (url, sys.exc_info()[1]),
                 stream=sys.stderr)
            return True

        log2(0, 1, "ERROR: Download failed: %s - %s." % (url, sys.exc_info()[1]),
             stream=sys.stderr)
        return False

    def __next_mirror(self, total):
        if self.mirror < (total - 1):
            self.mirror += 1
        else:
            self.mirror = 0

    def __fetch_url(self, params):
        # Skip existing file if exists and matches checksum
        if not self.parent.force:
            if self.__is_file_done(local_path=params['target_file'], checksum_type=params['checksum_type'],
                                   checksum=params['checksum']):
                return True

        opts = URLGrabberOptions(
            ssl_ca_cert=params["ssl_ca_cert"],
            ssl_cert=params["ssl_client_cert"],
            ssl_key=params["ssl_client_key"],
            range=params["bytes_range"],
            proxy=params["proxy"],
            username=params["proxy_username"],
            password=params["proxy_password"],
            proxies=params["proxies"],
            http_headers=tuple(params["http_headers"].items()),
            timeout=params["timeout"],
            minrate=params["minrate"],
            keepalive=True,
        )

        mirrors = len(params['urls'])
        for retry in range(max(self.parent.retries, mirrors)):
            fo = None
            url = urlparse.urljoin(params['urls'][self.mirror], params['relative_path'])
            ## BEWARE: This hack is introduced in order to support SUSE SCC channels
            ## This also needs a patched urlgrabber AFAIK
            if 'authtoken' in params and params['authtoken']:
                (scheme, netloc, path, query, _) = urlparse.urlsplit(params['urls'][self.mirror])
                url = urlparse.urlunsplit((
                    scheme,
                    netloc,
                    urlparse.urljoin(path, params['relative_path']),
                    query.rstrip('/'), ''))
            try:
                try:
                    fo = PyCurlFileObjectThread(url, params['target_file'], opts, self.curl, self.parent)
                    # Check target file
                    if not self.__is_file_done(file_obj=fo, checksum_type=params['checksum_type'],
                                               checksum=params['checksum']):
                        raise FailedDownloadError("Target file isn't valid. Checksum should be %s (%s)."
                                                  % (params['checksum'], params['checksum_type']))
                    break
                except (FailedDownloadError, URLGrabError):
                    e = sys.exc_info()[1]
                    # urlgrabber-3.10.1-9 trows URLGrabError for both
                    # 'HTTP Error 404 - Not Found' and 'No space left on device', so
                    # workaround for this is check error message:
                    if 'No space left on device' in str(e):
                        self.parent.fail_download(e)
                        return False

                    if not self.__can_retry(retry, mirrors, opts, url, e):
                        return False
                    self.__next_mirror(mirrors)
                # RHEL 6 urlgrabber raises KeyboardInterrupt for example when there is no space left
                # but handle also other fatal exceptions
                except (KeyboardInterrupt, Exception):  # pylint: disable=W0703
                    e = sys.exc_info()[1]
                    self.parent.fail_download(e)
                    return False
            finally:
                if fo:
                    fo.close()
                # Delete failed download file
                elif os.path.isfile(params['target_file']):
                    os.unlink(params['target_file'])

        return True

    def run(self):
        while not self.queue.empty() and self.parent.can_continue():
            try:
                params = self.queue.get(block=False)
            except Empty:
                break
            self.mirror = 0
            success = self.__fetch_url(params)
            if self.parent.log_obj:
                # log_obj must be thread-safe
                self.parent.log_obj.log(success, os.path.basename(params['relative_path']))
            self.queue.task_done()
        self.curl.close()


class ThreadedDownloader:
    def __init__(self, retries=3, log_obj=None, force=False):
        self.queues = {}
        comp = CFG.getComponent()
        initCFG("server.satellite")
        try:
            try:
                self.threads = int(CFG.REPOSYNC_DOWNLOAD_THREADS)
            except ValueError:
                raise ValueError(
                    "Number of threads expected, found: '%s'" % CFG.REPOSYNC_DOWNLOAD_THREADS
                )
            try:
                self.timeout = int(CFG.REPOSYNC_TIMEOUT)
            except ValueError:
                raise ValueError(
                    "Timeout in seconds expected, found: '%s'" % CFG.REPOSYNC_TIMEOUT
                )
            try:
                self.minrate = int(CFG.REPOSYNC_MINRATE)
            except ValueError:
                raise ValueError(
                    "Minimal transfer rate in bytes pre second expected, found: '%s'"
                    % CFG.REPOSYNC_MINRATE
                )
        except Exception as e:
            raise e from None
        finally:
            initCFG(comp)

        if self.threads < 1:
            raise ValueError("Invalid number of threads: %d" % self.threads)

        self.retries = retries
        self.log_obj = log_obj
        self.force = force
        self.lock = Lock()
        self.exception = None
        # WORKAROUND - BZ #1439758 - ensure first item in queue is performed alone to properly setup NSS
        self.first_in_queue_done = False
        self.first_in_queue_lock = Lock()

    def set_log_obj(self, log_obj):
        self.log_obj = log_obj

    def set_force(self, force):
        self.force = force

    @staticmethod
    def _validate(ssl_set):
        ssl_ca_cert, ssl_cert, ssl_key = ssl_set
        for certificate_file in (ssl_ca_cert, ssl_cert, ssl_key):
            if certificate_file and not os.path.isfile(certificate_file):
                log2(0, 0, "ERROR: Certificate file not found: %s" % certificate_file, stream=sys.stderr)
                return False
        return True

    def add(self, params):
        ssl_set = (params['ssl_ca_cert'], params['ssl_client_cert'], params['ssl_client_key'])
        if self._validate(ssl_set):
            if ssl_set not in self.queues:
                self.queues[ssl_set] = Queue()
            queue = self.queues[ssl_set]
            params["timeout"] = self.timeout
            params["minrate"] = self.minrate
            queue.put(params)

    def run(self):
        size = 0
        for queue in list(self.queues.values()):
            size += queue.qsize()
        if size <= 0:
            return
        log(1, "Downloading total %d files from %d queues." % (size, len(self.queues)))

        for index, queue in enumerate(self.queues.values()):
            log(2, "Downloading %d files from queue #%d." % (queue.qsize(), index))
            self.first_in_queue_done = False
            started_threads = []
            for _ in range(self.threads):
                thread = DownloadThread(self, queue)
                thread.setDaemon(True)
                thread.start()
                started_threads.append(thread)

            # wait to finish
            try:
                while any(t.isAlive() for t in started_threads):
                    time.sleep(1)
            except KeyboardInterrupt:
                e = sys.exc_info()[1]
                self.fail_download(e)
                while any(t.isAlive() for t in started_threads):
                    time.sleep(1)
                break

        # raise first detected exception if any
        if self.exception:
            raise self.exception  # pylint: disable=E0702

    def can_continue(self):
        self.lock.acquire()
        status = self.exception is None
        self.lock.release()
        return status

    def fail_download(self, exception):
        self.lock.acquire()
        if not self.exception:
            self.exception = exception
        self.lock.release()
  070701000000CE000041FD0000000000000000000000016290A0C100000000000000000000000000000000000000000000002B00000000spacewalk-backend/satellite_tools/exporter    070701000000CF000081B40000000000000000000000016290A0C1000000B1000000000000000000000000000000000000003400000000spacewalk-backend/satellite_tools/exporter/Makefile   # Makefile for spacewalk backend
#

TOP	= ../..

# Specific stuff
SUBDIR	= satellite_tools/exporter
SPACEWALK_FILES	= __init__ exportLib xmlWriter

include $(TOP)/Makefile.defs
   070701000000D0000081B40000000000000000000000016290A0C100000265000000000000000000000000000000000000003700000000spacewalk-backend/satellite_tools/exporter/__init__.py    #
# Copyright (c) 2008--2015 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#
   070701000000D1000081B40000000000000000000000016290A0C1000108CC000000000000000000000000000000000000003800000000spacewalk-backend/satellite_tools/exporter/exportLib.py   #
# Copyright (c) 2008--2018 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#

import time
from uyuni.common.usix import StringType

from uyuni.common import rhnLib
from spacewalk.common.rhnLog import log_debug
from spacewalk.server import rhnSQL


class ArrayIterator:

    def __init__(self, arr):
        self._arr = arr
        if self._arr:
            self._pos = 0
        else:
            # Nothing to iterate over
            self._pos = None

    def get_array(self):
        return self._arr

    def fetchone_dict(self):
        if self._pos is None:
            return None
        i = self._pos
        self._pos = self._pos + 1
        if self._pos == len(self._arr):
            self._pos = None
        return self._arr[i]


class BaseDumper:
    # tag_name has to be set in subclasses

    def __init__(self, writer, data_iterator=None):
        self._writer = writer
        self._attributes = {}
        self._iterator = data_iterator

    # Generic timing function
    @staticmethod
    def timer(debug_level, message, function, *args, **kwargs):
        start = time.time()
        result = function(*args, **kwargs)
        log_debug(debug_level, message, "timing: %.3f" % (time.time() - start))
        return result

    def set_attributes(self):
        return self._attributes

    def set_iterator(self):
        return self._iterator

    def dump(self):
        if not hasattr(self, "tag_name"):
            raise Exception("Programmer error: subclass did not set tag_name")
        tag_name = getattr(self, "tag_name")
        self._attributes = self.set_attributes() or {}
        self._iterator = self.timer(5, "set_iterator", self.set_iterator)

        if not self._iterator:
            self._writer.empty_tag(tag_name, attributes=self._attributes)
            return

        data_found = 0
        while 1:
            data = self.timer(6, "fetchone_dict", self._iterator.fetchone_dict)
            if not data:
                break
            if not data_found:
                data_found = 1
                self._writer.open_tag(tag_name, attributes=self._attributes)

            if isinstance(data, StringType):
                # The iterator produced some XML dump, just write it
                self._writer.stream.write(data)
            else:
                self.timer(6, "dump_subelement", self.dump_subelement, data)

        if data_found:
            self._writer.close_tag(tag_name)
        else:
            self._writer.empty_tag(tag_name, attributes=self._attributes)

    def dump_subelement(self, data):
        # pylint: disable=R0201
        if isinstance(data, BaseDumper):
            data.dump()

    def get_writer(self):
        return self._writer

    def set_writer(self, writer):
        self._writer = writer


class EmptyDumper(BaseDumper):

    def __init__(self, writer, tag_name, attributes=None):
        self.tag_name = tag_name
        self.attributes = attributes or {}
        BaseDumper.__init__(self, writer)

    def dump(self):
        self._writer.empty_tag(self.tag_name, attributes=self.attributes)


class SimpleDumper(BaseDumper):

    def __init__(self, writer, tag_name, value, max_value_bytes=None):
        self.tag_name = tag_name
        self._value = value

        # max number of bytes satellite can handle in the matching db row
        self._max_value_bytes = max_value_bytes
        BaseDumper.__init__(self, writer)

    def dump(self):
        self._writer.open_tag(self.tag_name)
        if self._value is None:
            self._writer.empty_tag('rhn-null')
        else:
            self._writer.data(self._value)
        self._writer.close_tag(self.tag_name)


class BaseRowDumper(BaseDumper):

    def __init__(self, writer, row):
        BaseDumper.__init__(self, writer)
        self._row = row


class BaseChecksumRowDumper(BaseRowDumper):

    def set_iterator(self):
        # checksums
        checksum_arr = [{'type':  self._row['checksum_type'],
                         'value': self._row['checksum']}]
        arr = [_ChecksumDumper(self._writer, data_iterator=ArrayIterator(checksum_arr))]
        return ArrayIterator(arr)


class BaseQueryDumper(BaseDumper):
    iterator_query = None

    def set_iterator(self):
        if self._iterator:
            return self._iterator
        h = rhnSQL.prepare(self.iterator_query)
        h.execute()
        return h


class BaseSubelementDumper(BaseDumper):
    # pylint: disable=E1101
    subelement_dumper_class = object

    def dump_subelement(self, data):
        d = self.subelement_dumper_class(self._writer, data)
        d.dump()

####


class ExportTypeDumper(BaseDumper):

    def __init__(self, writer, start_date=None, end_date=None):
        if start_date:
            self.type = 'incremental'
        else:
            self.type = 'full'
        self.start_date = start_date
        if end_date:
            self.end_date = end_date
        else:
            self.end_date = time.strftime("%Y%m%d%H%M%S")
        BaseDumper.__init__(self, writer)

    def dump(self):
        self._writer.open_tag('export-type')
        self._writer.stream.write(self.type)
        self._writer.close_tag('export-type')
        if self.start_date:
            self._writer.open_tag('export-start-date')
            self._writer.stream.write(self.start_date)
            self._writer.close_tag('export-start-date')
        if self.end_date:
            self._writer.open_tag('export-end-date')
            self._writer.stream.write(self.end_date)
            self._writer.close_tag('export-end-date')


class SatelliteDumper(BaseDumper):
    tag_name = 'rhn-satellite'

    def __init__(self, writer, *dumpers):
        BaseDumper.__init__(self, writer)
        self._dumpers = dumpers

    def set_attributes(self):
        return {
            'version': 'x.y',
        }

    def set_iterator(self):
        return ArrayIterator(self._dumpers)


class _OrgTrustDumper(BaseDumper):
    tag_name = 'rhn-org-trusts'

    def dump_subelement(self, data):
        c = EmptyDumper(self._writer, 'rhn-org-trust', attributes={
            'org-id': data['org_trust_id'],
        })
        c.dump()


class _OrgDumper(BaseDumper):
    tag_name = 'rhn-org'

    def __init__(self, writer, org):
        self.org = org
        BaseDumper.__init__(self, writer)

    _query_org_trusts = """
        select rto.org_trust_id
          from rhnTrustedOrgs rto
         where rto.org_id = :org_id
    """

    def set_iterator(self):
        # trusts
        h = rhnSQL.prepare(self._query_org_trusts)
        h.execute(org_id=self.org['id'])
        return ArrayIterator([_OrgTrustDumper(self._writer, data_iterator=h)])

    def set_attributes(self):
        attributes = {
            'id': self.org['id'],
            'name': self.org['name'],
        }
        return attributes


class OrgsDumper(BaseDumper):
    tag_name = 'rhn-orgs'

    def __init__(self, writer, data_iterator=None):
        BaseDumper.__init__(self, writer, data_iterator)

    def dump_subelement(self, data):
        org = _OrgDumper(self._writer, data)
        org.dump()


class ChannelTrustedOrgsDumper(BaseDumper):
    tag_name = 'rhn-channel-trusted-orgs'

    def dump_subelement(self, data):
        d = EmptyDumper(self._writer, 'rhn-channel-trusted-org',
                        attributes={'org-id': data['org_trust_id']})
        d.dump()


class _ChannelDumper(BaseRowDumper):
    tag_name = 'rhn-channel'

    def __init__(self, writer, row, start_date=None, end_date=None, use_rhn_date=True, whole_errata=False):
        BaseRowDumper.__init__(self, writer, row)
        self.start_date = start_date
        self.end_date = end_date
        self.use_rhn_date = use_rhn_date
        self.whole_errata = whole_errata

    def set_attributes(self):
        channel_id = self._row['id']

        packages = ["rhn-package-%s" % x for x in self._get_package_ids()]
        # XXX channel-errata is deprecated and should go away in dump version
        # 3 or higher - we now dump that information in its own subelement
        # rhn-channel-errata
        errata = ["rhn-erratum-%s" % x for x in self._get_errata_ids()]
        ks_trees = self._get_kickstartable_trees()

        return {
            'channel-id': 'rhn-channel-%s' % channel_id,
            'label': self._row['label'],
            'org_id': self._row['org_id'] or "",
            'channel-arch': self._row['channel_arch'],
            'packages': ' '.join(packages),
            'channel-errata': ' '.join(errata),
            'kickstartable-trees': ' '.join(ks_trees),
            'sharing': self._row['channel_access'],
        }

    _query_channel_families = rhnSQL.Statement("""
        select cf.id, cf.label
          from rhnChannelFamily cf, rhnChannelFamilyMembers cfm
         where cfm.channel_family_id = cf.id
           and cfm.channel_id = :channel_id
    """)
    _query_dist_channel_map = rhnSQL.Statement("""
        select dcm.os, dcm.release, ca.label channel_arch
          from rhnDistChannelMap dcm, rhnChannelArch ca
         where dcm.channel_id = :channel_id
           and dcm.channel_arch_id = ca.id
           and dcm.org_id is null
    """)

    _query_get_channel_trusts = rhnSQL.Statement("""
        select org_trust_id
          from rhnChannelTrust
         where channel_id = :channel_id
    """)

    def set_iterator(self):
        channel_id = self._row['id']
        arr = []
        mappings = [
            ('rhn-channel-parent-channel', 'parent_channel'),
            ('rhn-channel-basedir', 'basedir'),
            ('rhn-channel-name', 'name'),
            ('rhn-channel-summary', 'summary'),
            ('rhn-channel-description', 'description'),
            ('rhn-channel-gpg-key-url', 'gpg_key_url'),
            ('rhn-channel-checksum-type', 'checksum_type'),
            ('rhn-channel-update-tag', 'update_tag'),
            ('rhn-channel-installer-updates', 'installer_updates'),
        ]
        for k, v in mappings:
            arr.append(SimpleDumper(self._writer, k, self._row.get(v)))

        arr.append(SimpleDumper(self._writer, 'rhn-channel-last-modified',
                                _dbtime2timestamp(self._row['last_modified'])))
        channel_product_details = self._get_channel_product_details()
        arr.append(SimpleDumper(self._writer, 'rhn-channel-product-name',
                                channel_product_details[0]))
        arr.append(SimpleDumper(self._writer, 'rhn-channel-product-version',
                                channel_product_details[1]))
        arr.append(SimpleDumper(self._writer, 'rhn-channel-product-beta',
                                channel_product_details[2]))

        comp_last_modified = self._channel_comps_last_modified()
        modules_last_modified = self._channel_modules_last_modified()
        if comp_last_modified is not None:
            arr.append(SimpleDumper(self._writer, 'rhn-channel-comps-last-modified',
                                    _dbtime2timestamp(comp_last_modified[0])))
        if modules_last_modified is not None:
            arr.append(SimpleDumper(self._writer, 'rhn-channel-modules-last-modified',
                                    _dbtime2timestamp(modules_last_modified[0])))

        h = rhnSQL.prepare(self._query_get_channel_trusts)
        h.execute(channel_id=channel_id)
        arr.append(ChannelTrustedOrgsDumper(self._writer, data_iterator=h))

        h = rhnSQL.prepare(self._query_channel_families)
        h.execute(channel_id=channel_id)
        arr.append(ChannelFamiliesDumper(self._writer, data_iterator=h,
                                         ignore_subelements=1))

        h = rhnSQL.prepare(self._query_dist_channel_map)
        h.execute(channel_id=channel_id)
        arr.append(DistsDumper(self._writer, h))

        # Source package information (with timestamps)
        h = self._get_cursor_source_packages()
        arr.append(ChannelSourcePackagesDumper(self._writer, h))
        # Errata information (with timestamps)
        query_args = {'channel_id': channel_id}
        if self.start_date:
            if self.use_rhn_date:
                query = self._query__get_errata_ids_by_rhnlimits
            else:
                query = self._query__get_errata_ids_by_limits
            query_args.update({'lower_limit': self.start_date,
                               'upper_limit': self.end_date})
        else:
            query = self._query__get_errata_ids

        h = rhnSQL.prepare(query)
        h.execute(**query_args)
        arr.append(ChannelErrataDumper(self._writer, h))
        arr.append(ExportTypeDumper(self._writer, self.start_date, self.end_date))

        return ArrayIterator(arr)

    _query_get_package_ids = rhnSQL.Statement("""
        select package_id as id
          from rhnChannelPackage
         where channel_id = :channel_id
    """)

    _query_get_package_ids_by_date_limits = rhnSQL.Statement("""
        select package_id as id
          from rhnChannelPackage rcp
         where rcp.channel_id = :channel_id
           and rcp.modified >= TO_TIMESTAMP(:lower_limit, 'YYYYMMDDHH24MISS')
           and rcp.modified <= TO_TIMESTAMP(:upper_limit, 'YYYYMMDDHH24MISS')
     """)

    _query_get_package_ids_by_rhndate_limits = rhnSQL.Statement("""
        select package_id as id
          from rhnPackage rp, rhnChannelPackage rcp
         where rcp.channel_id = :channel_id
           and rcp.package_id = rp.id
           and rp.last_modified >= TO_TIMESTAMP(:lower_limit, 'YYYYMMDDHH24MISS')
           and rp.last_modified <= TO_TIMESTAMP(:upper_limit, 'YYYYMMDDHH24MISS')
     """)

    _query_pkgids_by_date_whole_errata = rhnSQL.Statement("""
        select rcp.package_id as id
          from rhnChannelPackage rcp, rhnPackage rp
            left join rhnErrataPackage rep on rp.id = rep.package_id
            left join rhnErrata re on rep.errata_id = re.id
         where rcp.channel_id = :channel_id
           and rcp.package_id = rp.id
           and ((re.modified >= TO_TIMESTAMP(:lower_limit, 'YYYYMMDDHH24MISS')
               and re.modified <= TO_TIMESTAMP(:upper_limit, 'YYYYMMDDHH24MISS')
            ) or (rep.package_id is NULL
               and rcp.modified >= TO_TIMESTAMP(:lower_limit, 'YYYYMMDDHH24MISS')
               and rcp.modified <= TO_TIMESTAMP(:upper_limit, 'YYYYMMDDHH24MISS'))
            )
     """)

    _query_get_pkgids_by_rhndate_whole_errata = rhnSQL.Statement("""
        select rcp.package_id as id
          from rhnChannelPackage rcp, rhnPackage rp
            left join rhnErrataPackage rep on rp.id = rep.package_id
            left join rhnErrata re on rep.errata_id = re.id
         where rcp.channel_id = :channel_id
           and rcp.package_id = rp.id
           and ((re.last_modified >= TO_TIMESTAMP(:lower_limit, 'YYYYMMDDHH24MISS')
               and re.last_modified <= TO_TIMESTAMP(:upper_limit, 'YYYYMMDDHH24MISS')
            ) or (rep.package_id is NULL
               and rp.last_modified >= TO_TIMESTAMP(:lower_limit, 'YYYYMMDDHH24MISS')
               and rp.last_modified <= TO_TIMESTAMP(:upper_limit, 'YYYYMMDDHH24MISS'))
            )
     """)

    # Things that can be overwriten in subclasses
    def _get_package_ids(self):
        if self.start_date and self.whole_errata:
            return self._get_ids(self._query_pkgids_by_date_whole_errata,
                                 self._query_get_pkgids_by_rhndate_whole_errata,
                                 self._query_get_package_ids)
        else:
            return self._get_ids(self._query_get_package_ids_by_date_limits,
                                 self._query_get_package_ids_by_rhndate_limits,
                                 self._query_get_package_ids)

    def _get_ids(self, query_with_limit, query_with_rhnlimit, query_no_limits):
        query_args = {'channel_id': self._row['id']}
        if self.start_date:
            if self.use_rhn_date:
                query = query_with_rhnlimit
            else:
                query = query_with_limit
            query_args.update({'lower_limit': self.start_date,
                               'upper_limit': self.end_date})
        else:
            query = query_no_limits
        h = rhnSQL.prepare(query)
        h.execute(**query_args)
        return [x['id'] for x in h.fetchall_dict() or []]

    _query_get_source_package_ids = rhnSQL.Statement("""
        select distinct ps.id, sr.name source_rpm,
               TO_CHAR(ps.last_modified, 'YYYYMMDDHH24MISS') last_modified
          from rhnChannelPackage cp, rhnPackage p, rhnPackageSource ps,
               rhnSourceRPM sr
         where cp.channel_id = :channel_id
           and cp.package_id = p.id
           and p.source_rpm_id = ps.source_rpm_id
           and ((p.org_id is null and ps.org_id is null) or
               p.org_id = ps.org_id)
           and ps.source_rpm_id = sr.id
    """)

    def _get_cursor_source_packages(self):
        channel_id = self._row['id']

        h = rhnSQL.prepare(self._query_get_source_package_ids)
        h.execute(channel_id=channel_id)
        return h

    _query__get_errata_ids = rhnSQL.Statement("""
        select ce.errata_id as id, e.advisory_name,
              TO_CHAR(e.last_modified, 'YYYYMMDDHH24MISS') last_modified
          from rhnChannelErrata ce, rhnErrata e
         where ce.channel_id = :channel_id
           and ce.errata_id = e.id
    """)

    _query__get_errata_ids_by_limits = rhnSQL.Statement("""
         %s
           and ce.modified >= TO_TIMESTAMP(:lower_limit, 'YYYYMMDDHH24MISS')
           and ce.modified <= TO_TIMESTAMP(:upper_limit, 'YYYYMMDDHH24MISS')
    """ % _query__get_errata_ids)

    _query__get_errata_ids_by_rhnlimits = rhnSQL.Statement("""
         %s
           and e.last_modified >= TO_TIMESTAMP(:lower_limit, 'YYYYMMDDHH24MISS')
           and e.last_modified <= TO_TIMESTAMP(:upper_limit, 'YYYYMMDDHH24MISS')
    """ % _query__get_errata_ids)

    def _get_errata_ids(self):
        return self._get_ids(self._query__get_errata_ids_by_limits,
                             self._query__get_errata_ids_by_rhnlimits,
                             self._query__get_errata_ids)

    _query_get_kickstartable_trees = rhnSQL.Statement("""
        select kt.label as id
          from rhnKickstartableTree kt
         where kt.channel_id = :channel_id
           and kt.org_id is null
    """)

    _query_get_kickstartable_trees_by_rhnlimits = rhnSQL.Statement("""
         %s
           and kt.last_modified >= TO_TIMESTAMP(:lower_limit, 'YYYYMMDDHH24MISS')
           and kt.last_modified <= TO_TIMESTAMP(:upper_limit, 'YYYYMMDDHH24MISS')
    """ % _query_get_kickstartable_trees)

    _query_get_kickstartable_trees_by_limits = rhnSQL.Statement("""
         %s
           and kt.modified >= TO_TIMESTAMP(:lower_limit, 'YYYYMMDDHH24MISS')
           and kt.modified <= TO_TIMESTAMP(:upper_limit, 'YYYYMMDDHH24MISS')
    """ % _query_get_kickstartable_trees)

    def _get_kickstartable_trees(self):
        ks_trees = self._get_ids(self._query_get_kickstartable_trees_by_limits,
                                 self._query_get_kickstartable_trees_by_rhnlimits,
                                 self._query_get_kickstartable_trees)
        ks_trees.sort()
        return ks_trees

    _query_get_channel_product_details = rhnSQL.Statement("""
        select cp.product as name,
               cp.version as version,
               cp.beta
        from rhnChannel c,
             rhnChannelProduct cp
        where c.id = :channel_id
          and c.channel_product_id = cp.id
    """)

    def _get_channel_product_details(self):
        """
        Export rhnChannelProduct table content through ChannelDumper

        return a tuple containing (product name, product version, beta status)
        or (None, None, None) if the information is missing
        """

        channel_id = self._row['id']

        h = rhnSQL.prepare(self._query_get_channel_product_details)
        h.execute(channel_id=channel_id)
        row = h.fetchone_dict()
        if not row:
            return (None, None, None)
        else:
            return (row['name'], row['version'], row['beta'])

    _query_channel_comps_last_modified = rhnSQL.Statement("""
        select to_char(last_modified, 'YYYYMMDDHH24MISS') as comps_last_modified
        from rhnChannelComps
        where channel_id = :channel_id
        and comps_type_id = 1
        order by id desc
    """)

    def _channel_comps_last_modified(self):
        channel_id = self._row['id']
        h = rhnSQL.prepare(self._query_channel_comps_last_modified)
        h.execute(channel_id=channel_id)
        return h.fetchone()

    _query_channel_modules_last_modified = rhnSQL.Statement("""
        select to_char(last_modified, 'YYYYMMDDHH24MISS') as modules_last_modified
        from rhnChannelComps
        where channel_id = :channel_id
        and comps_type_id = 2
        order by id desc
    """)

    def _channel_modules_last_modified(self):
        channel_id = self._row['id']
        h = rhnSQL.prepare(self._query_channel_modules_last_modified)
        h.execute(channel_id=channel_id)
        return h.fetchone()


class ChannelsDumper(BaseSubelementDumper):
    tag_name = 'rhn-channels'
    subelement_dumper_class = _ChannelDumper

    def __init__(self, writer, channels=()):
        super(BaseSubelementDumper, self).__init__(writer)
        self._channels = channels



class ChannelDumper(_ChannelDumper):

    # pylint: disable=W0231,W0233
    def __init__(self, writer, row):
        BaseRowDumper.__init__(self, writer, row)

    #_query_release_channel_map = rhnSQL.Statement("""
    #    select dcm.os product, dcm.release version,
    #           dcm.eus_release release, ca.label channel_arch,
    #           dcm.is_default is_default
    #      from rhnDistChannelMap dcm, rhnChannelArch ca
    #     where dcm.channel_id = :channel_id
    #       and dcm.channel_arch_id = ca.id
    #       and dcm.is_eus = 'Y'
    #""")

    def set_iterator(self):
        arrayiterator = _ChannelDumper.set_iterator()
        arr = arrayiterator.get_array()
        mappings = [
            ('rhn-channel-receiving-updates', 'receiving_updates'),
        ]
        for k, v in mappings:
            arr.append(SimpleDumper(self._writer, k, self._row.get(v)))

        #channel_id = self._row['id']
        # Add EUS info
        #h = rhnSQL.prepare(self._query_release_channel_map)
        # h.execute(channel_id=channel_id)
        #arr.append(ReleaseDumper(self._writer, h))
        return arrayiterator

# class ReleaseDumper(BaseDumper):
#    tag_name = 'rhn-release'
#
#    def dump_subelement(self, data):
#        d = _ReleaseDumper(self._writer, data)
#        d.dump()
#
# class _ReleaseDumper(BaseRowDumper):
#    tag_name = 'rhn-release'
#
#    def set_attributes(self):
#        return {
#            'product'       : self._row['product'],
#            'version'       : self._row['version'],
#            'release'       : self._row['release'],
#            'channel-arch'  : self._row['channel_arch'],
#            'is-default'  : self._row['is_default'],
#        }


class _ChannelSourcePackageDumper(BaseRowDumper):
    tag_name = 'source-package'

    def set_attributes(self):
        return {
            'id': 'rhn-source-package-%s' % self._row['id'],
            'source-rpm': self._row['source_rpm'],
            'last-modified': _dbtime2timestamp(self._row['last_modified']),
        }


class ChannelSourcePackagesDumper(BaseSubelementDumper):
    # Dumps the erratum id and the last modified for an erratum in this
    # channel
    tag_name = 'source-packages'
    subelement_dumper_class = _ChannelSourcePackageDumper


class _ChannelErratumDumper(BaseRowDumper):
    tag_name = 'erratum'

    def set_attributes(self):
        return {
            'id': 'rhn-erratum-%s' % self._row['id'],
            'advisory-name': self._row['advisory_name'],
            'last-modified': _dbtime2timestamp(self._row['last_modified']),
        }


class ChannelErrataDumper(BaseSubelementDumper):
    # Dumps the erratum id and the last modified for an erratum in this
    # channel
    tag_name = 'rhn-channel-errata'
    subelement_dumper_class = _ChannelErratumDumper


class _DistDumper(BaseRowDumper):
    tag_name = 'rhn-dist'

    def set_attributes(self):
        return {
            'os': self._row['os'],
            'release': self._row['release'],
            'channel-arch': self._row['channel_arch'],
        }


class DistsDumper(BaseSubelementDumper):
    tag_name = 'rhn-dists'
    subelement_dumper_class = _DistDumper


class _SupportInfoDumper(BaseRowDumper):
    tag_name = 'suse-keyword'

    def set_attributes(self):
        return {
            'channel' : self._row['channel_label'],
            'pkgid'   : "rhn-package-%s" % self._row['package_id'],
            'keyword' : self._row['keyword'],
        }

class SupportInfoDumper(BaseQueryDumper):
    tag_name = 'suse-data'
    iterator_query = """
        select c.label channel_label,
               p.id    package_id,
               k.label keyword
          from rhnChannel c
          join suseMdData d on c.id = d.channel_id
          join rhnPackage p on d.package_id = p.id
          join suseMdKeyword k on d.keyword_id = k.id
    """

    def __init__(self, writer, data_iterator=None):
        BaseDumper.__init__(self, writer, data_iterator=data_iterator)

    def dump_subelement(self, data):
        cf = _SupportInfoDumper(self._writer, data)
        cf.dump()

class _SuseProductDumper(BaseRowDumper):
    tag_name = 'suse-product'

    def set_attributes(self):
        return {
            'name'          : self._row['name'],
            'version'       : self._row['version'],
            'friendly-name' : self._row['friendly_name'],
            'arch'          : self._row['arch'],
            'release'       : self._row['release'],
            'product-id'    : self._row['product_id'],
            'free'          : self._row['free'],
            'base'          : self._row['base'],
            'release-stage' : self._row['release_stage'],
            'channel-family-label': self._row['channel_family_label']
        }

class SuseProductDumper(BaseQueryDumper):
    tag_name = 'suse-products'
    iterator_query = """
    SELECT p.name, p.version, p.friendly_name,
           pa.label AS arch, p.release, p.product_id,
           p.free, p.base, p.release_stage, cf.label AS channel_family_label
      FROM suseProducts p
 LEFT JOIN rhnPackageArch pa ON p.arch_type_id = pa.id
 LEFT JOIN rhnChannelFamily cf ON p.channel_family_id = cf.id
    """

    def __init__(self, writer, data_iterator=None):
        BaseDumper.__init__(self, writer, data_iterator=data_iterator)

    def dump_subelement(self, data):
        cf = _SuseProductDumper(self._writer, data)
        cf.dump()

class _SuseProductChannelDumper(BaseRowDumper):
    tag_name = 'suse-product-channel'

    def set_attributes(self):
        return {
            'product-id'           : self._row['pdid'],
            'channel-label'        : self._row['clabel'],
            'parent-channel-label' : self._row['pclabel'],
            }

class SuseProductChannelDumper(BaseQueryDumper):
    tag_name = 'suse-product-channels'
    iterator_query = """
    SELECT p.product_id AS pdid,
           pr.channel_label as clabel,
           pr.parent_channel_label AS pclabel
      FROM suseProductSCCRepository pr
      JOIN suseProducts p ON pr.product_id = p.id
     WHERE EXISTS (select 1
                     FROM suseProductChannel pc
                     JOIN rhnChannel c ON c.id = pc.channel_id
                    WHERE p.id = pc.product_id
                      AND pc.mandatory = 'Y'
                      AND c.label = pr.channel_label)
    """

    def __init__(self, writer, data_iterator=None):
        BaseDumper.__init__(self, writer, data_iterator=data_iterator)

    def dump_subelement(self, data):
        cf = _SuseProductChannelDumper(self._writer, data)
        cf.dump()

class _SuseUpgradePathDumper(BaseRowDumper):
    tag_name = 'suse-upgrade-path'

    def set_attributes(self):
        return {
            'from-product-id' : self._row['fromid'],
            'to-product-id'   : self._row['toid'],
            }

class SuseUpgradePathDumper(BaseQueryDumper):
    tag_name = 'suse-upgrade-paths'
    iterator_query = """
    SELECT p1.product_id AS fromid,
           p2.product_id AS toid
      FROM suseUpgradePath up
      JOIN suseProducts p1 ON up.from_pdid = p1.id
      JOIN suseProducts p2 ON up.to_pdid = p2.id
    """

    def __init__(self, writer, data_iterator=None):
        BaseDumper.__init__(self, writer, data_iterator=data_iterator)

    def dump_subelement(self, data):
        cf = _SuseUpgradePathDumper(self._writer, data)
        cf.dump()

class _SuseProductExtensionDumper(BaseRowDumper):
    tag_name = 'suse-product-extension'

    def set_attributes(self):
        return {
            'root-product-id' : self._row['rootid'],
            'product-id' : self._row['pdid'],
            'ext-product-id' : self._row['extid'],
            'recommended': self._row['recommended']
            }

class SuseProductExtensionDumper(BaseQueryDumper):
    tag_name = 'suse-product-extensions'
    iterator_query = """
    SELECT p1.product_id AS pdid,
           p2.product_id AS rootid,
           p3.product_id AS extid,
           e.recommended AS recommended
      FROM suseProductExtension e
      JOIN suseProducts p1 ON e.base_pdid = p1.id
      JOIN suseProducts p2 ON e.root_pdid = p2.id
      JOIN suseProducts p3 ON e.ext_pdid = p3.id
    """

    def __init__(self, writer, data_iterator=None):
        BaseDumper.__init__(self, writer, data_iterator=data_iterator)

    def dump_subelement(self, data):
        cf = _SuseProductExtensionDumper(self._writer, data)
        cf.dump()

class _SuseProductRepositoryDumper(BaseRowDumper):
    tag_name = 'suse-product-repository'

    def set_attributes(self):
        return {
            'root-product-id' : self._row['rootid'],
            'product-id' : self._row['pdid'],
            'repository-id' : self._row['repo_id'],
            'channel-label': self._row['channel_label'],
            'parent-channel-label': self._row['parent_channel_label'],
            'channel-name': self._row['channel_name'],
            'mandatory': self._row['mandatory'],
            'update-tag': self._row['update_tag']
            }

class SuseProductRepositoryDumper(BaseQueryDumper):
    tag_name = 'suse-product-repositories'
    iterator_query = """
    SELECT p1.product_id AS pdid,
           p2.product_id AS rootid,
           r.scc_id AS repo_id,
           pr.channel_label,
           pr.parent_channel_label,
           pr.channel_name,
           pr.mandatory,
           pr.update_tag
      FROM suseProductSCCRepository pr
      JOIN suseProducts p1 ON pr.product_id = p1.id
      JOIN suseProducts p2 ON pr.root_product_id = p2.id
      JOIN suseSCCRepository r ON pr.repo_id = r.id
    """

    def __init__(self, writer, data_iterator=None):
        BaseDumper.__init__(self, writer, data_iterator=data_iterator)

    def dump_subelement(self, data):
        cf = _SuseProductRepositoryDumper(self._writer, data)
        cf.dump()

class _SCCRepositoryDumper(BaseRowDumper):
    tag_name = 'scc-repository'

    def set_attributes(self):
        return {
            'scc-id' : self._row['sccid'],
            'autorefresh' : self._row['autorefresh'],
            'name' : self._row['name'],
            'distro-target': self._row['distro_target'],
            'description': self._row['description'],
            'url': self._row['url'],
            'signed': self._row['signed'],
            'installer_updates': self._row['installer_updates']
            }

class SCCRepositoryDumper(BaseQueryDumper):
    tag_name = 'scc-repositories'
    iterator_query = """
    SELECT scc_id AS sccid,
           autorefresh, name, distro_target,
           description, url, signed, installer_updates
      FROM suseSCCRepository
    """

    def __init__(self, writer, data_iterator=None):
        BaseDumper.__init__(self, writer, data_iterator=data_iterator)

    def dump_subelement(self, data):
        cf = _SCCRepositoryDumper(self._writer, data)
        cf.dump()

class _SuseSubscriptionDumper(BaseRowDumper):
    tag_name = 'suse-subscription'

    def set_attributes(self):
        return {
            'sub-label'       : self._row['label'],
            'sub-max-members' : self._row['max_members'],
            'sub-system-ent'  : self._row['system_entitlement'],
            }

class SuseSubscriptionDumper(BaseQueryDumper):
    tag_name = 'suse-subscriptions'
    iterator_query = """
        SELECT cf.label, 0 AS max_members, 0 AS system_entitlement
          FROM rhnPrivateChannelFamily pcf
          JOIN rhnChannelFamily cf ON pcf.channel_family_id = cf.id
         WHERE pcf.org_id = 1
         UNION
        SELECT sgt.label, 10 AS max_members, 1 AS system_entitlement
          FROM rhnServerGroup sg
          JOIN rhnServerGroupType sgt ON sg.group_type = sgt.id
         WHERE org_id = 1
    """

    def __init__(self, writer, data_iterator=None):
        BaseDumper.__init__(self, writer, data_iterator=data_iterator)

    def dump_subelement(self, data):
        cf = _SuseSubscriptionDumper(self._writer, data)
        cf.dump()

class _ClonedChannelsDumper(BaseRowDumper):
    tag_name = 'cloned-channel'

    def set_attributes(self):
        return {
            'orig'  : self._row['orig'],
            'clone' : self._row['clone'],
            }

class ClonedChannelsDumper(BaseQueryDumper):
    tag_name = 'cloned-channels'
    iterator_query = """
        SELECT c1.label orig,
               c2.label clone
          FROM rhnChannelCloned cc
          JOIN rhnChannel c1 ON c1.id = cc.original_id
          JOIN rhnChannel c2 ON c2.id = cc.id
    """

    def __init__(self, writer, data_iterator=None):
        BaseDumper.__init__(self, writer, data_iterator=data_iterator)

    def dump_subelement(self, data):
        cf = _ClonedChannelsDumper(self._writer, data)
        cf.dump()

class ChannelFamiliesDumper(BaseQueryDumper):
    tag_name = 'rhn-channel-families'
    iterator_query = 'select cf.* from rhnChannelFamily'

    def __init__(self, writer, data_iterator=None, ignore_subelements=0,
                 null_max_members=1):
        BaseQueryDumper.__init__(self, writer, data_iterator=data_iterator)
        self._ignore_subelements = ignore_subelements
        self._null_max_members = null_max_members

    def dump_subelement(self, data):
        cf = _ChannelFamilyDumper(self._writer, data,
                                  ignore_subelements=self._ignore_subelements,
                                  null_max_members=self._null_max_members)
        cf.dump()


class _ChannelFamilyDumper(BaseRowDumper):
    tag_name = 'rhn-channel-family'

    def __init__(self, writer, row, ignore_subelements=0, null_max_members=1):
        BaseRowDumper.__init__(self, writer, row)
        self._ignore_subelements = ignore_subelements
        self._null_max_members = null_max_members

    def set_iterator(self):
        if self._ignore_subelements:
            return None

        arr = []

        mappings = [
            ('rhn-channel-family-name', 'name'),
            ('rhn-channel-family-product-url', 'product_url'),
        ]
        for k, v in mappings:
            arr.append(SimpleDumper(self._writer, k, self._row.get(v)))

        return ArrayIterator(arr)

    _query_get_channel_family_channels = rhnSQL.Statement("""
        select c.label
          from rhnChannelFamilyMembers cfm, rhnChannel c
         where cfm.channel_family_id = :channel_family_id
           and cfm.channel_id = c.id
    """)

    def set_attributes(self):
        # Get all channels that are part of this channel family
        h = rhnSQL.prepare(self._query_get_channel_family_channels)
        channel_family_id = self._row['id']
        h.execute(channel_family_id=channel_family_id)
        channels = [x['label'] for x in h.fetchall_dict() or []]

        attributes = {
            'id': "rhn-channel-family-%s" % channel_family_id,
            'label': self._row['label'],
            'channel-labels': ' '.join(channels),
        }

        if self._ignore_subelements:
            return attributes
        if self._row['label'] != 'rh-public':
            if self._null_max_members:
                attributes['max-members'] = 0
            elif ('max_members' in self._row) and self._row['max_members']:
                attributes['max-members'] = self._row['max_members']
        return attributes

##


class _PackageDumper(BaseRowDumper):
    tag_name = 'rhn-package'

    def set_attributes(self):
        attrs = ["name", "version", "release", "package_arch",
                 "package_group", "rpm_version", "package_size", "payload_size",
                 "installed_size", "build_host", "source_rpm", "payload_format",
                 "compat"]
        attr_dict = {
            'id': "rhn-package-%s" % self._row['id'],
            'org_id': self._row['org_id'] or "",
            'epoch': self._row['epoch'] or "",
            'cookie': self._row['cookie'] or "",
            'build-time': _dbtime2timestamp(self._row['build_time']),
            'last-modified': _dbtime2timestamp(self._row['last_modified']),
        }
        for attr in attrs:
            attr_dict[attr.replace('_', '-')] = self._row[attr]
        if self._row['checksum_type'] == 'md5':
            # compatibility with older satellite
            attr_dict['md5sum'] = self._row['checksum']
        return attr_dict

    def set_iterator(self):
        arr = []

        mappings = [
            ('rhn-package-summary', 'summary'),
            ('rhn-package-description', 'description'),
            ('rhn-package-vendor', 'vendor'),
            ('rhn-package-copyright', 'copyright'),
            ('rhn-package-header-sig', 'header_sig'),
            ('rhn-package-header-start', 'header_start'),
            ('rhn-package-header-end', 'header_end')
        ]
        for k, v in mappings:
            arr.append(SimpleDumper(self._writer, k, self._row.get(v)))

        # checksums
        checksum_arr = [{'type':  self._row['checksum_type'],
                         'value': self._row['checksum']}]
        arr.append(_ChecksumDumper(self._writer,
                                   data_iterator=ArrayIterator(checksum_arr)))

        h = rhnSQL.prepare("""
            select
                name, text,
                TO_CHAR(time, 'YYYYMMDDHH24MISS') as time
            from rhnPackageChangeLog
            where package_id = :package_id
        """)
        h.execute(package_id=self._row['id'])
        arr.append(_ChangelogDumper(self._writer, data_iterator=h))

        # Dependency information
        mappings = [
            ['rhnPackageRequires',    'rhn-package-requires',    'rhn-package-requires-entry'],
            ['rhnPackageProvides',    'rhn-package-provides',    'rhn-package-provides-entry'],
            ['rhnPackageConflicts',   'rhn-package-conflicts',   'rhn-package-conflicts-entry'],
            ['rhnPackageObsoletes',   'rhn-package-obsoletes',   'rhn-package-obsoletes-entry'],
            ['rhnPackageRecommends',  'rhn-package-recommends',  'rhn-package-recommends-entry'],
            ['rhnPackageSuggests',    'rhn-package-suggests',    'rhn-package-suggests-entry'],
            ['rhnPackageSupplements', 'rhn-package-supplements', 'rhn-package-supplements-entry'],
            ['rhnPackageEnhances',    'rhn-package-enhances',    'rhn-package-enhances-entry'],
            ['rhnPackageBreaks',      'rhn-package-breaks',      'rhn-package-breaks-entry'],
            ['rhnPackagePredepends',  'rhn-package-predepends',  'rhn-package-predepends-entry'],
        ]
        for table_name, container_name, entry_name in mappings:
            h = rhnSQL.prepare("""
                select pc.name, pc.version, pd.sense
                from %s pd, rhnPackageCapability pc
                where pd.capability_id = pc.id
                and pd.package_id = :package_id
            """ % table_name)
            h.execute(package_id=self._row['id'])
            arr.append(_DependencyDumper(self._writer, data_iterator=h,
                                         container_name=container_name,
                                         entry_name=entry_name))

        # Files
        h = rhnSQL.prepare("""
            select
                pc.name, pf.device, pf.inode, pf.file_mode, pf.username,
                pf.groupname, pf.rdev, pf.file_size,
                TO_CHAR(mtime, 'YYYYMMDDHH24MISS') mtime,
                c.checksum_type as "checksum-type",
                c.checksum, pf.linkto, pf.flags, pf.verifyflags, pf.lang
            from rhnPackageFile pf
            left join rhnChecksumView c
              on pf.checksum_id = c.id,
                rhnPackageCapability pc
            where pf.capability_id = pc.id
            and pf.package_id = :package_id
        """)
        h.execute(package_id=self._row['id'])
        arr.append(_PackageFilesDumper(self._writer, data_iterator=h))

        # SUSE Product Files
        h = rhnSQL.prepare("""
            SELECT spf.name, rpe.epoch, rpe.version, rpe.release,
                   rpa.label as arch, spf.vendor, spf.summary,
                   spf.description
              FROM susePackageProductFile sppf
              JOIN suseProductFile spf ON spf.id = sppf.prodfile_id
              JOIN rhnPackageEvr rpe ON rpe.id = spf.evr_id
              JOIN rhnPackageArch rpa ON rpa.id = spf.package_arch_id
             WHERE sppf.package_id = :package_id
        """)
        h.execute(package_id=self._row['id'])
        arr.append(_SuseProductFilesDumper(self._writer, data_iterator=h))

        # SUSE EULAs
        h = rhnSQL.prepare("""
            SELECT se.text, se.checksum
              FROM suseEula se
              JOIN susePackageEula spe ON se.id = spe.eula_id
             WHERE spe.package_id = :package_id
        """)
        h.execute(package_id=self._row['id'])
        arr.append(_SuseEulasDumper(self._writer, data_iterator=h))

        # Debian Extra Tags
        h = rhnSQL.prepare("""
            SELECT k.name, e.value
              FROM rhnPackageExtraTag e
              JOIN rhnPackageExtraTagKey k ON e.key_id = k.id
             WHERE e.package_id = :package_id
        """)
        h.execute(package_id=self._row['id'])
        arr.append(_PkgExtraTagDumper(self._writer, data_iterator=h))

        return ArrayIterator(arr)


class PackagesDumper(BaseSubelementDumper, BaseQueryDumper):
    tag_name = 'rhn-packages'
    subelement_dumper_class = _PackageDumper

    def set_iterator(self):
        return BaseQueryDumper.set_iterator(self)

##


class ShortPackageEntryDumper(BaseChecksumRowDumper):
    tag_name = 'rhn-package-short'

    def set_attributes(self):
        attr = {
            'id': "rhn-package-%s" % self._row['id'],
            'name': self._row['name'],
            'version': self._row['version'],
            'release': self._row['release'],
            'epoch': self._row['epoch'] or "",
            'package-arch': self._row['package_arch'],
            'package-size': self._row['package_size'],
            'last-modified': _dbtime2timestamp(self._row['last_modified']),
            'org-id': self._row['org_id'] or "",
        }
        if self._row['checksum_type'] == 'md5':
            # compatibility with older satellite
            attr['md5sum'] = self._row['checksum']
        return attr


class ShortPackagesDumper(BaseSubelementDumper, BaseQueryDumper):
    tag_name = 'rhn-packages-short'
    subelement_dumper_class = ShortPackageEntryDumper

    def set_iterator(self):
        return BaseQueryDumper.set_iterator(self)

##


class SourcePackagesDumper(BaseQueryDumper):
    tag_name = 'rhn-source-packages'

    def dump_subelement(self, data):
        attributes = {}
        attrs = [
            "id", "source_rpm", "package_group", "rpm_version",
            "payload_size", "build_host", "sigchecksum_type", "sigchecksum", "vendor",
            "cookie", "package_size", "checksum_type", "checksum"
        ]
        for attr in attrs:
            attributes[attr.replace('_', '-')] = data[attr]
        attributes['id'] = "rhn-source-package-%s" % data['id']
        attributes['build-time'] = _dbtime2timestamp(data['build_time'])
        attributes['last-modified'] = _dbtime2timestamp(data['last_modified'])
        d = EmptyDumper(self._writer, 'rhn-source-package',
                        attributes=attributes)
        d.dump()

##


class _ChecksumDumper(BaseDumper):
    tag_name = 'checksums'

    def dump_subelement(self, data):
        c = EmptyDumper(self._writer, 'checksum', attributes={
            'type': data['type'],
            'value': data['value'],
        })
        c.dump()

##


class _ChangelogEntryDumper(BaseRowDumper):
    tag_name = 'rhn-package-changelog-entry'

    def set_iterator(self):
        arr = []
        mappings = [
            ('rhn-package-changelog-entry-name', 'name'),
            ('rhn-package-changelog-entry-text', 'text'),
        ]
        for k, v in mappings:
            arr.append(SimpleDumper(self._writer, k, self._row.get(v)))

        arr.append(SimpleDumper(self._writer, 'rhn-package-changelog-entry-time',
                                _dbtime2timestamp(self._row['time'])))

        return ArrayIterator(arr)


class _ChangelogDumper(BaseSubelementDumper):
    tag_name = 'rhn-package-changelog'
    subelement_dumper_class = _ChangelogEntryDumper

##
class _SuseProductEntryDumper(BaseRowDumper):
    tag_name = 'suse-product-file-entry'

    def set_iterator(self):
        arr = []
        mappings = [
            ('suse-product-file-entry-name', 'name'),
            ('suse-product-file-entry-epoch', 'epoch'),
            ('suse-product-file-entry-version', 'version'),
            ('suse-product-file-entry-release', 'release'),
            ('suse-product-file-entry-arch', 'arch'),
            ('suse-product-file-entry-vendor', 'vendor'),
            ('suse-product-file-entry-summary', 'summary'),
            ('suse-product-file-entry-description', 'description'),
        ]
        for k, v in mappings:
            arr.append(SimpleDumper(self._writer, k, self._row.get(v)))
        return ArrayIterator(arr)

class _SuseProductFilesDumper(BaseSubelementDumper):
    tag_name = 'suse-product-file'
    subelement_dumper_class = _SuseProductEntryDumper

##
class _SuseEulasEntryDumper(BaseRowDumper):
    tag_name = 'suse-eula-entry'

    def set_iterator(self):
        arr = []
        mappings = [
            ('suse-eula-entry-text', 'text'),
            ('suse-eula-entry-checksum', 'checksum'),
        ]
        for k, v in mappings:
            arr.append(SimpleDumper(self._writer, k, self._row.get(v)))
        return ArrayIterator(arr)

class _SuseEulasDumper(BaseSubelementDumper):
    tag_name = 'suse-eula'
    subelement_dumper_class = _SuseEulasEntryDumper

##
class _PkgExtraTagEntryDumper(BaseRowDumper):
    tag_name = 'pkg-extratag-entry'

    def set_iterator(self):
        arr = []
        mappings = [
            ('pkg-extratag-entry-name', 'name'),
            ('pkg-extratag-entry-value', 'value'),
        ]
        for k, v in mappings:
            arr.append(SimpleDumper(self._writer, k, self._row.get(v)))
        return ArrayIterator(arr)

class _PkgExtraTagDumper(BaseSubelementDumper):
    tag_name = 'pkg-extratag'
    subelement_dumper_class = _PkgExtraTagEntryDumper


##
class _DependencyDumper(BaseDumper):

    def __init__(self, writer, data_iterator, container_name, entry_name):
        self.tag_name = container_name
        self.entry_name = entry_name
        BaseDumper.__init__(self, writer, data_iterator=data_iterator)

    def dump_subelement(self, data):
        d = EmptyDumper(self._writer, self.entry_name, attributes={
            'name': data['name'],
            'version': data['version'] or "",
            'sense': data['sense'],
        })
        d.dump()

# Files


class _PackageFilesDumper(BaseDumper):
    tag_name = 'rhn-package-files'

    def dump_subelement(self, data):
        data['mtime'] = _dbtime2timestamp(data['mtime'])
        data['checksum-type'] = data['checksum-type'] or ""
        data['checksum'] = data['checksum'] or ""
        if data['checksum-type'] in ('md5', ''):
            # generate md5="..." attribute
            # for compatibility with older satellites
            data['md5'] = data['checksum']
        data['linkto'] = data['linkto'] or ""
        data['lang'] = data['lang'] or ""
        d = EmptyDumper(self._writer, 'rhn-package-file',
                        attributes=data)
        d.dump()

# Errata


class _ErratumDumper(BaseRowDumper):
    tag_name = 'rhn-erratum'

    def set_attributes(self):
        h = rhnSQL.prepare("""
            select c.label
            from rhnChannelErrata ec, rhnChannel c
            where ec.channel_id = c.id
            and ec.errata_id = :errata_id
        """)
        h.execute(errata_id=self._row['id'])
        channels = [x['label'] for x in h.fetchall_dict() or []]

        h = rhnSQL.prepare("""
            select ep.package_id
            from rhnErrataPackage ep
            where ep.errata_id = :errata_id
        """)
        h.execute(errata_id=self._row['id'])
        packages = ["rhn-package-%s" % x['package_id'] for x in
                    h.fetchall_dict() or []]

        h = rhnSQL.prepare("""
            select c.name cve
            from rhnErrataCVE ec, rhnCVE c
            where ec.errata_id = :errata_id
            and ec.cve_id = c.id
        """)
        h.execute(errata_id=self._row['id'])
        cves = [x['cve'] for x in h.fetchall_dict() or []]

        return {
            'id': 'rhn-erratum-%s' % self._row['id'],
            'org_id': self._row['org_id'] or "",
            'advisory': self._row['advisory'],
            'channels': ' '.join(channels),
            'packages': ' '.join(packages),
            'cve-names': ' '.join(cves),
        }

    type_id_column = ""

    def set_iterator(self):
        arr = []

        mappings = [
            ('rhn-erratum-advisory-name', 'advisory_name', 100),
            ('rhn-erratum-advisory-rel', 'advisory_rel', 32),
            ('rhn-erratum-advisory-type', 'advisory_type', 32),
            ('rhn-erratum-advisory-status', 'advisory_status', 32),
            ('rhn-erratum-product', 'product', 64),
            ('rhn-erratum-description', 'description', 4000),
            ('rhn-erratum-synopsis', 'synopsis', 4000),
            ('rhn-erratum-topic', 'topic', 4000),
            ('rhn-erratum-solution', 'solution', 4000),
            ('rhn-erratum-refers-to', 'refers_to', 4000),
            ('rhn-erratum-notes', 'notes', 4000),
            ('rhn-erratum-errata-from', 'errata_from', 127),
            ('rhn-erratum-severity', 'severity_id', 127)
        ]
        for k, v, b in mappings:
            value = self._row.get(v) if self._row.get(v) is not None else ""
            arr.append(SimpleDumper(self._writer, k, value, b))
        arr.append(SimpleDumper(self._writer, 'rhn-erratum-issue-date',
                                _dbtime2timestamp(self._row['issue_date'])))
        arr.append(SimpleDumper(self._writer, 'rhn-erratum-update-date',
                                _dbtime2timestamp(self._row['update_date'])))
        arr.append(SimpleDumper(self._writer, 'rhn-erratum-last-modified',
                                _dbtime2timestamp(self._row['last_modified'])))


        h = rhnSQL.prepare("""
            select label
            from rhnErrataSeverity
            where id = :severity_id
        """)
        h.execute(severity_id=self._row['severity_id'])
        sev = h.fetchone_dict() or None
        if sev:
            arr.append(SimpleDumper(self._writer, 'rhn-erratum-severity',
                sev['label']))
        else:
            arr.append(SimpleDumper(self._writer, 'rhn-erratum-severity', ''))

        h = rhnSQL.prepare("""
            select keyword
            from rhnErrataKeyword
            where errata_id = :errata_id
        """)
        h.execute(errata_id=self._row['id'])
        arr.append(_ErratumKeywordDumper(self._writer, data_iterator=h))

        h = rhnSQL.prepare("""
            select bug_id, summary, href
            from rhnErrataBuglist
            where errata_id = :errata_id
        """)
        h.execute(errata_id=self._row['id'])
        arr.append(_ErratumBuglistDumper(self._writer, data_iterator=h))
        _query_errata_file_info = """
             select ef.id errata_file_id, c.checksum_type, c.checksum,
                    ef.filename, eft.label as type,
                    efp.package_id, efps.package_id as source_package_id
               from rhnErrataFile ef left outer join rhnErrataFilePackage efp on ef.id = efp.errata_file_id
                    left outer join rhnErrataFilePackageSource efps on ef.id = efps.errata_file_id,
                    rhnErrataFileType eft, rhnChecksumView c
              where ef.errata_id = :errata_id
                and ef.type = eft.id
                and ef.checksum_id = c.id
                %s
        """
        h = rhnSQL.prepare(_query_errata_file_info % self.type_id_column)
        h.execute(errata_id=self._row['id'])
        arr.append(_ErratumFilesDumper(self._writer, data_iterator=h))

        return ArrayIterator(arr)


class ErrataDumper(BaseSubelementDumper):
    tag_name = 'rhn-errata'
    subelement_dumper_class = _ErratumDumper

    def set_iterator(self):
        if self._iterator:
            return self._iterator
        raise NotImplementedError("To be overridden in a child class")


class _ErratumKeywordDumper(BaseDumper):
    tag_name = 'rhn-erratum-keywords'

    def dump_subelement(self, data):
        d = SimpleDumper(self._writer, 'rhn-erratum-keyword', data['keyword'])
        d.dump()


class _ErratumBugDumper(BaseRowDumper):
    tag_name = 'rhn-erratum-bug'

    def set_iterator(self):
        arr = [
            SimpleDumper(self._writer, 'rhn-erratum-bug-id', self._row['bug_id']),
            SimpleDumper(self._writer, 'rhn-erratum-bug-summary',
                         self._row['summary'] or ""),
            SimpleDumper(self._writer, 'rhn-erratum-bug-href', self._row['href']),
        ]
        return ArrayIterator(arr)


class _ErratumBuglistDumper(BaseSubelementDumper):
    tag_name = 'rhn-erratum-bugs'
    subelement_dumper_class = _ErratumBugDumper


class _ErratumFileEntryDumper(BaseChecksumRowDumper):
    tag_name = 'rhn-erratum-file'

    def set_attributes(self):
        attributes = {
            'filename': self._row['filename'][:4000],
            'type': self._row['type'],
        }
        if self._row['checksum_type'] == 'md5':
            attributes['md5sum'] = self._row['checksum']

        # Compute the channels for this file
        h = rhnSQL.prepare("""
            select c.label
            from rhnErrataFileChannel efc, rhnChannel c
            where efc.errata_file_id = :errata_file_id
            and efc.channel_id = c.id
        """)
        h.execute(errata_file_id=self._row['errata_file_id'])
        channels = ' '.join(
            [x['label'] for x in h.fetchall_dict() or []])
        if channels:
            attributes['channels'] = channels

        # Get the package id or source_package_id
        if self._row['type'] == 'RPM':
            package_id = self._row['package_id']
            if package_id is not None:
                attributes['package'] = 'rhn-package-%s' % package_id
        elif self._row['type'] == 'SRPM':
            package_id = self._row['source_package_id']
            if package_id is not None:
                attributes['source-package'] = 'rhn-package-source-%s' % package_id
        return attributes


class _ErratumFilesDumper(BaseSubelementDumper):
    tag_name = 'rhn-erratum-files'
    subelement_dumper_class = _ErratumFileEntryDumper

# Arches


class BaseArchesDumper(BaseDumper):
    table_name = 'foo'
    subelement_tag = 'foo'

    def set_iterator(self):
        h = rhnSQL.prepare("""
            select id, label, name
            from %s
        """ % self.table_name)
        h.execute()
        return h

    def dump_subelement(self, data):
        attributes = {
            'id': "%s-id-%s" % (self.subelement_tag, data['id']),
            'label': data['label'],
            'name': data['name'],
        }
        EmptyDumper(self._writer, self.subelement_tag, attributes).dump()


class RestrictedArchesDumper(BaseArchesDumper):

    def __init__(self, writer, data_iterator=None, rpm_arch_type_only=0):
        BaseArchesDumper.__init__(self, writer=writer,
                                  data_iterator=data_iterator)
        self.rpm_arch_type_only = rpm_arch_type_only

    def set_iterator(self):
        query_templ = """
            select aa.id, aa.label, aa.name,
                   at.label arch_type_label, at.name arch_type_name
              from %s aa,
                   rhnArchType at
             where aa.arch_type_id = at.id
               %s
        """
        if self.rpm_arch_type_only:
            h = rhnSQL.prepare(query_templ % (self.table_name, "and at.label = 'rpm'"))
        else:
            h = rhnSQL.prepare(query_templ % (self.table_name, ""))
        h.execute()
        return h

    def dump_subelement(self, data):
        attributes = {
            'id': "%s-id-%s" % (self.subelement_tag, data['id']),
            'label': data['label'],
            'name': data['name'],
            'arch-type-label': data['arch_type_label'],
            'arch-type-name': data['arch_type_name'],
        }
        EmptyDumper(self._writer, self.subelement_tag, attributes).dump()


class ChannelArchesDumper(RestrictedArchesDumper):
    tag_name = 'rhn-channel-arches'
    subelement_tag = 'rhn-channel-arch'
    table_name = 'rhnChannelArch'


class PackageArchesDumper(RestrictedArchesDumper):
    tag_name = 'rhn-package-arches'
    subelement_tag = 'rhn-package-arch'
    table_name = 'rhnPackageArch'


class ServerArchesDumper(RestrictedArchesDumper):
    tag_name = 'rhn-server-arches'
    subelement_tag = 'rhn-server-arch'
    table_name = 'rhnServerArch'


class CPUArchesDumper(BaseArchesDumper):
    tag_name = 'rhn-cpu-arches'
    subelement_tag = 'rhn-cpu-arch'
    table_name = 'rhnCPUArch'


class RestrictedArchCompatDumper(BaseArchesDumper):
    _query_rpm_arch_type_only = ""
    _query_arch_type_all = ""
    _subelement_tag = ""

    def __init__(self, writer, data_iterator=None, rpm_arch_type_only=0, virt_filter=0):
        BaseArchesDumper.__init__(self, writer=writer,
                                  data_iterator=data_iterator)
        self.rpm_arch_type_only = rpm_arch_type_only
        self.virt_filter = virt_filter

    def set_iterator(self):
        _virt_filter_sql = ""
        if self.virt_filter:
            _virt_filter_sql = """and sgt.label not like 'virt%'"""

        if self._subelement_tag == 'rhn-server-group-server-arch-compat':
            if self.rpm_arch_type_only:
                h = rhnSQL.prepare(self._query_rpm_arch_type_only % _virt_filter_sql)
            else:
                h = rhnSQL.prepare(self._query_arch_type_all % _virt_filter_sql)
        else:
            if self.rpm_arch_type_only:
                h = rhnSQL.prepare(self._query_rpm_arch_type_only)
            else:
                h = rhnSQL.prepare(self._query_arch_type_all)

        h.execute()
        return h

    def dump_subelement(self, data):
        EmptyDumper(self._writer, self._subelement_tag, data).dump()


class ServerPackageArchCompatDumper(RestrictedArchCompatDumper):
    tag_name = 'rhn-server-package-arch-compatibility-map'
    _subelement_tag = 'rhn-server-package-arch-compat'

    _query_rpm_arch_type_only = rhnSQL.Statement("""
        select sa.label "server-arch",
            pa.label "package-arch",
            spac.preference
        from rhnServerPackageArchCompat spac,
            rhnServerArch sa,
            rhnPackageArch pa,
            rhnArchType aas,
            rhnArchType aap
        where spac.server_arch_id = sa.id
        and spac.package_arch_id = pa.id
        and sa.arch_type_id = aas.id
        and aas.label = 'rpm'
        and pa.arch_type_id = aap.id
        and aap.label = 'rpm'
    """)

    _query_arch_type_all = rhnSQL.Statement("""
        select sa.label "server-arch",
            pa.label "package-arch",
            spac.preference
        from rhnServerPackageArchCompat spac,
            rhnServerArch sa,
            rhnPackageArch pa
        where spac.server_arch_id = sa.id
        and spac.package_arch_id = pa.id
    """)


class ServerChannelArchCompatDumper(RestrictedArchCompatDumper):
    tag_name = 'rhn-server-channel-arch-compatibility-map'
    _subelement_tag = 'rhn-server-channel-arch-compat'

    _query_rpm_arch_type_only = rhnSQL.Statement("""
        select sa.label "server-arch",
               ca.label "channel-arch"
          from rhnServerChannelArchCompat scac,
               rhnServerArch sa,
               rhnChannelArch ca,
               rhnArchType aas,
               rhnArchType aac
         where scac.server_arch_id = sa.id
           and scac.channel_arch_id = ca.id
           and sa.arch_type_id = aas.id
           and aas.label = 'rpm'
           and ca.arch_type_id = aac.id
           and aac.label = 'rpm'
    """)

    _query_arch_type_all = rhnSQL.Statement("""
        select sa.label "server-arch",
               ca.label "channel-arch"
          from rhnServerChannelArchCompat scac,
               rhnServerArch sa,
               rhnChannelArch ca
         where scac.server_arch_id = sa.id
           and scac.channel_arch_id = ca.id
    """)


class ChannelPackageArchCompatDumper(RestrictedArchCompatDumper):
    tag_name = 'rhn-channel-package-arch-compatibility-map'
    _subelement_tag = 'rhn-channel-package-arch-compat'

    _query_rpm_arch_type_only = rhnSQL.Statement("""
        select ca.label "channel-arch",
               pa.label "package-arch"
          from rhnChannelPackageArchCompat cpac,
               rhnChannelArch ca,
               rhnPackageArch pa,
               rhnArchType aac,
               rhnArchType aap
         where cpac.channel_arch_id = ca.id
           and cpac.package_arch_id = pa.id
           and ca.arch_type_id = aac.id
           and aac.label = 'rpm'
           and pa.arch_type_id = aap.id
           and aap.label = 'rpm'
    """)

    _query_arch_type_all = rhnSQL.Statement("""
        select ca.label "channel-arch",
               pa.label "package-arch"
          from rhnChannelPackageArchCompat cpac,
               rhnChannelArch ca,
               rhnPackageArch pa
         where cpac.channel_arch_id = ca.id
           and cpac.package_arch_id = pa.id
    """)


class ServerGroupTypeServerArchCompatDumper(RestrictedArchCompatDumper):
    tag_name = 'rhn-server-group-server-arch-compatibility-map'
    _subelement_tag = 'rhn-server-group-server-arch-compat'

    _query_rpm_arch_type_only = """
        select sgt.label "server-group-type",
               sa.label "server-arch"
          from rhnServerGroupType sgt,
               rhnServerArch sa,
               rhnArchType aas,
               rhnServerServerGroupArchCompat ssgac
         where ssgac.server_arch_id = sa.id
           and sa.arch_type_id = aas.id
           and aas.label = 'rpm'
           and ssgac.server_group_type = sgt.id
           %s
    """

    #_query_arch_type_all = rhnSQL.Statement("""
    _query_arch_type_all = """
        select sgt.label "server-group-type",
               sa.label "server-arch"
          from rhnServerGroupType sgt,
               rhnServerArch sa,
               rhnServerServerGroupArchCompat ssgac
         where ssgac.server_arch_id = sa.id
           and ssgac.server_group_type = sgt.id
           %s
    """


class BlacklistObsoletesDumper(BaseDumper):
    tag_name = 'rhn-blacklist-obsoletes'

    def dump(self):
        note = """\n<!-- This file is intentionally left empty.
     Older Satellites and Spacewalks require this file to exist in the dump. -->\n"""
        self._writer.stream.write(note)
        self._writer.empty_tag(self.tag_name)


class _KickstartableTreeDumper(BaseRowDumper):
    tag_name = 'rhn-kickstartable-tree'

    def set_attributes(self):
        row_dict = self._row.copy()
        del row_dict['id']
        last_modified = row_dict['last-modified']
        row_dict['last-modified'] = _dbtime2timestamp(last_modified)
        return row_dict

    def set_iterator(self):
        kstree_id = self._row['id']
        h = rhnSQL.prepare("""
            select relative_filename,
                   c.checksum_type,
                   c.checksum,
                   file_size,
                    TO_CHAR(last_modified, 'YYYYMMDDHH24MISS') "last-modified"
              from rhnKSTreeFile, rhnChecksumView c
             where kstree_id = :kstree_id
               and checksum_id = c.id
        """)
        h.execute(kstree_id=kstree_id)
        return ArrayIterator([_KickstartFilesDumper(self._writer, h)])


class KickstartableTreesDumper(BaseSubelementDumper, BaseQueryDumper):
    tag_name = 'rhn-kickstartable-trees'
    subelement_dumper_class = _KickstartableTreeDumper
    iterator_query = """
            select kt.id,
                   c.label channel,
                   kt.base_path "base-path",
                   kt.label,
                   kt.boot_image "boot-image",
                   ktt.name "kstree-type-name",
                   ktt.label "kstree-type-label",
                   kit.name "install-type-name",
                   kit.label "install-type-label",
                   TO_CHAR(kt.last_modified, 'YYYYMMDDHH24MISS') "last-modified"
              from rhnKickstartableTree kt,
                   rhnKSTreeType ktt,
                   rhnKSInstallType kit,
                   rhnChannel c
             where kt.channel_id = c.id
               and ktt.id = kt.kstree_type
               and kit.id = kt.install_type
               and kt.org_id is NULL
        """

    def set_iterator(self):
        return BaseQueryDumper.set_iterator(self)


class _KickstartFileEntryDumper(BaseChecksumRowDumper):
    tag_name = 'rhn-kickstart-file'

    def set_attributes(self):
        attr = {
            'relative-path': self._row['relative_filename'],
            'file-size': self._row['file_size'],
            'last-modified': _dbtime2timestamp(self._row['last-modified']),
        }
        if self._row['checksum_type'] == 'md5':
            attr['md5sum'] = self._row['checksum']
        return attr


class _KickstartFilesDumper(BaseSubelementDumper):
    tag_name = 'rhn-kickstart-files'
    subelement_dumper_class = _KickstartFileEntryDumper


def _dbtime2timestamp(val):
    return int(rhnLib.timestamp(val))


class ProductNamesDumper(BaseDumper):
    tag_name = "rhn-product-names"

    def dump_subelement(self, data):
        EmptyDumper(self._writer, 'rhn-product-name', data).dump()
070701000000D2000081B40000000000000000000000016290A0C10000122D000000000000000000000000000000000000003800000000spacewalk-backend/satellite_tools/exporter/xmlWriter.py   # -*- coding: ISO-8859-1 -*-
#
# Copyright (c) 2008--2016 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#
# UTF-8 aware XML writer
#

import re
import sys


class XMLWriter:

    """
    XML writer, UTF-8 aware
    """

    # We escape &<>'" and chars UTF-8 does not properly escape (everything
    # other than tab (\x09), newline and carriage return (\x0a and \x0d),
    # stuff above ASCII 32 and UTF-8 alphanumeric chars in any language)
    _re = re.compile("(&|<|>|'|\"|[^\x09\x0a\x0d\x20-\xFF\w])")
    _escaped_chars = {
        '&': '&amp;',
        '<': '&lt;',
        '>': '&gt;',
        '"': '&quot;',
        "'": '&apos;',
    }

    def __init__(self, stream=sys.stdout, skip_xml_decl=0):
        self.tag_stack = []
        self.stream = stream
        if not skip_xml_decl:
            self.stream.write('<?xml version="1.0" encoding="UTF-8"?>')

    def open_tag(self, name, attributes=None, namespace=None):
        "Opens a tag with the specified attributes"
        return self._open_tag(None, name, attributes=attributes,
                              namespace=namespace)

    def empty_tag(self, name, attributes=None, namespace=None):
        "Writes an empty tag with the specified attributes"
        return self._open_tag(1, name, attributes=attributes,
                              namespace=namespace)

    # Now the function that does most of the work for open_tag and empty_tag
    def _open_tag(self, empty, name, attributes=None, namespace=None):
        if namespace:
            name = "%s:%s" % (namespace, name)
        self.stream.write("<")
        self.data(name)
        # Dump the attributes, if any
        if attributes:
            for k, v in list(attributes.items()):
                self.stream.write(" ")
                self.data(k)
                self.stream.write('="')
                self.data(str(v))
                self.stream.write('"')
        if empty:
            self.stream.write("/")
        self.stream.write(">")

        if not empty:
            self.tag_stack.append(name)

    def close_tag(self, name, namespace=None):
        """
        Closes a previously open tag.
        This function raises an exception if the tag was not opened before, or
        if it's been closed already.
        """
        if not self.tag_stack:
            raise Exception("Could not close tag %s: empty tag stack" % name)
        if namespace:
            name = "%s:%s" % (namespace, name)

        if self.tag_stack[-1] != name:
            raise Exception("Could not close tag %s if not opened before" \
                % name)
        self.tag_stack.pop()

        self.stream.write("</")
        self.data(name)
        self.stream.write(">")

    def data(self, data_string):
        """
        Writes the data, performing the necessary UTF-8 conversions
        max_bytes is the satellite schema dependent maximum value (in bytes)
        which can fit in the matching table row. Yeah, this is very gross.
        """
        if data_string is None:
            data_string = ""
        else:
            data_string = str(data_string)

        data_string = self._re.sub(self._sub_function, data_string)
        self.stream.write(data_string)

    # Helper functions

    # Substitution function for re
    def _sub_function(self, match_object):
        c = match_object.group()
        if c in self._escaped_chars:
            return self._escaped_chars[c]
        # return "&#%d;" % ord(c)
        return '?'

    def flush(self):
        self.stream.flush()

if __name__ == '__main__':
    weirdtag = chr(248) + 'gootag'
    writer = XMLWriter()
    writer.open_tag(weirdtag)
    writer.open_tag("message")
    writer.open_tag("text", attributes={'from': 'Trond Eivind Glomsrød', 'to': "Bernhard Rosenkr)Bänzer"})
    writer.data("String with \"quotes\", 'apostroph', Trond Eivind Glomsrød\n  and Bernhard Rosenkr)Bänzer")
    r = re.compile("(&|<|>|'|\"|[^\x09\x0a\x0d\x20-\xFF])")
    writer.close_tag("text")
    writer.close_tag("message")
    writer.empty_tag("yahoo", attributes={'abc': 1})
    writer.close_tag(weirdtag)
    print("")
   070701000000D3000081B40000000000000000000000016290A0C100001E39000000000000000000000000000000000000002C00000000spacewalk-backend/satellite_tools/geniso.py   #
# Copyright (c) 2008--2016 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#
#

import os
import sys
import tempfile
import time
from stat import ST_SIZE
from optparse import Option, OptionParser
from spacewalk.common.rhnConfig import PRODUCT_NAME

MOUNT_POINT = '/tmp'
IMAGE_SIZE = "630M"
DVD_IMAGE_SIZE = "4380M"


def main(arglist):
    optionsTable = [
        Option('-m', '--mountpoint',    action='store',
               help="mount point"),
        Option('-s', '--size',          action='store',
               help="image size (eg. 630M)"),
        Option('-p', '--file-prefix',   action='store',
               help='Filename prefix'),
        Option('-o', '--output',        action='store',
               help='output directory'),
        Option('-v', '--version',       action='store',
               help='version string'),
        Option('-r', '--release',       action='store',
               help='release string'),
        Option('--copy-iso-dir',        action='store',
               help='directory to copy the isos to after they have been generated.'),
        Option('-t', '--type',          action='store',
               help='the type of iso being generated.\
                  this flag is optional, but can be set to spanning, non-spanning, or base.'),
    ]
    parser = OptionParser(option_list=optionsTable)
    options, _args = parser.parse_args(arglist)

    # Check to see if mkisofs is installed
    if not os.path.exists('/usr/bin/mkisofs'):
        print(("ERROR:: mkisofs is not Installed. Cannot Proceed iso build. " \
              + "Please install mkisofs and rerun this command."))
        return

    mountPoint = options.mountpoint or MOUNT_POINT
    if options.type == "dvd":
        print("Building  DVD Iso ...")
        sizeStr = options.size or DVD_IMAGE_SIZE
    else:
        sizeStr = options.size or IMAGE_SIZE
    imageSize = sizeStrToInt(sizeStr)
    if imageSize == 0:
        print(("Unknown size %s" % sizeStr))
        return

    if options.version is None:
        options.version = time.strftime("%Y%m%d", time.gmtime(time.time()))

    if options.release is None:
        options.release = '0'

    if options.output is None:
        options.output = "/tmp/satellite-isos"

    file_prefix = options.file_prefix or "rhn-satellite"
    if not os.path.isdir(options.output):
        os.makedirs(options.output)

    # Get rid of the extra files in that directory
    for f in os.listdir(options.output):
        os.unlink(os.path.join(options.output, f))

    # Normalize the directory name
    mountPoint = os.path.normpath(mountPoint)

    # Generate the listings for each CD
    files = findFiles(mountPoint)
    cds = []
    while files:
        cd = []
        sz = 0
        while files:
            filePath, fileSize = files[0]
            if sz + fileSize > imageSize:
                # Overflow
                break

            cd.append(filePath)
            sz = sz + fileSize
            # Advance to the next record
            del files[0]
        cds.append(cd)

    # We now have the CD contents available; generate the ISOs
    cdcount = len(cds)

    # Create an empty temp file
    fd, empty_file_path = tempfile.mkstemp(dir='/tmp', prefix='empty.file-')
    os.close(fd)

    # command-line template
    mkisofsTemplate = "mkisofs -r -J -D -file-mode 0444 -new-dir-mode 0555 -dir-mode 0555 " \
        + "-graft-points %s -o %s /DISK_%s_OF_%s=%s"
    for i in range(cdcount):
        print(("---------- %s/%s" % (i + 1, cdcount)))

        # if options.type is None:
        filename = "%s/%s-%s.%s-%02d.iso" % (options.output, file_prefix,
                                             options.version, options.release, i + 1)
        # else:
        #    filename = "%s/%s-%s-%s.%s-%02d.iso" % (options.output, file_prefix,
        #        options.type, options.version, options.release, i+1)

        # Create a temp file to store the path specs
        pathfiles_fd, pathfiles = tempfile.mkstemp(dir='/tmp', prefix='geniso-')

        # Command-line options; the keys are supposed to start with a dash
        opts = {
            'preparer': PRODUCT_NAME,
            'publisher': PRODUCT_NAME,
            'volid': "SM_%s/%s" % (i + 1, cdcount),
            'path-list': pathfiles,
        }
        opts = ['-%s "%s"' % x for x in list(opts.items())]

        # Generate the file list that will go into the CD
        # See the man page for mkisofs to better understand how graft points
        # work (although the man page is not great)
        grafts = []
        for f in cds[i]:
            # Compute the relative path
            relpath = os.path.relpath(f, mountPoint)
            # Append to the graft list: relative=real
            relpath = os.path.dirname(relpath)
            grafts.append("%s/=%s" % (relpath, f))

        # Generate the command line
        cmd = mkisofsTemplate % (' '.join(opts), filename, i + 1, cdcount,
                                 empty_file_path)

        # Write the path specs in pathfiles
        for graft in grafts:
            os.write(pathfiles_fd, graft)
            os.write(pathfiles_fd, "\n")
        os.close(pathfiles_fd)

        print(("Creating %s" % filename))
        # And run it
        fd = os.popen(cmd, "r")
        print((fd.read()))

        if options.copy_iso_dir is not None:
            copy_iso_path = os.path.join(options.copy_iso_dir, os.path.basename(os.path.dirname(filename)))
            if not os.path.exists(copy_iso_path):
                os.mkdir(copy_iso_path)
            fd = os.popen("mv %s %s" % (filename, copy_iso_path), "r")
            print((fd.read()))
            fd = os.popen("rm %s" % filename)
            print((fd.read()))

        # Remove the temp file
        os.unlink(pathfiles)

    # Remove the file we used to label the CDs
    os.unlink(empty_file_path)


def sizeStrToInt(s):
    # Converts s to an int
    if s is None or s == "":
        # Don't know how to interpret it
        return 0

    s = str(s)
    # Strip the dashes in front - we don't want the number to be negative
    while s and s[0] == '-':
        s = s[1:]

    try:
        return int(s)
    except ValueError:
        # not an int
        pass

    if s[-1] in ('k', 'K', 'm', 'M'):
        # Specified a multiplier
        if s[-1].lower() == 'k':
            mult = 1024
        else:
            mult = 1024 * 1024

        try:
            return mult * int(s[:-1])
        except ValueError:
            pass

    # Don't know how to interpret it
    return 0

# The visitfunc argument for os.path.walk


def __visitfunc(arg, dirname, names):
    for f in names:
        filename = os.path.normpath("%s/%s" % (dirname, f))
        if os.path.isdir(filename):
            # walk will process it later
            continue
        # Get the size
        sz = os.stat(filename)[ST_SIZE]
        # Append the filename and size to the list
        arg.append((filename, sz))

# Given a directory name, returns the paths of all the files from that
# directory, together with the file size


def findFiles(start):
    a = []
    os.path.walk(start, __visitfunc, a)
    return a


if __name__ == '__main__':
    main(sys.argv)
   070701000000D4000081B40000000000000000000000016290A0C100000DA1000000000000000000000000000000000000002E00000000spacewalk-backend/satellite_tools/messages.py #
# Copyright (c) 2008--2015 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#
#
""" Spacewalk Synchronization Tool Messages

    Copyright (c) 2002--2015 Red Hat, Inc.
    All rights reserved.
"""

import gettext
t = gettext.translation('spacewalk-backend-server', fallback=True)
_ = t.gettext

failed_step = _("""
ERROR: executing step %s. Error is:
%s
""")

file_dir_error = _("""
ERROR: there was a problem accessing the channel data from your temporary
       repository. Did you migrate all of the data from the channel ISOs
       do this directory? If so, please recheck the channels ISOs, ensure
       that you have them all, and then iteratively remount and repopulate
       the temporary repository (%s).
""")

syncer_error = _("""
ERROR: there was a problem synchronizing the information.
       Error message: %s
""")

sw_iss_not_available = _("""
ERROR: There was a problem communicating with the ISS Master.
       Depending on the specific error details, please review your configuration,
       basic network connectivity, and/or name resolution, and try again.
       Error message: %s
""")

parent_channel_error = _("""
ERROR: a child-channel cannot be synced without its parent being synced as
       well. A parent needs to be either (a) previously synced or (b) synced
       in tandem with the desired child-channel. Missing parents for this
       transaction:
       %s
""")

invalid_channel_family_error = _("""
ERROR: you are not entitled to sync a channel in this set of channels.
Please contact your SUSE Manager contact
%s""")

not_enough_diskspace = _("  ERROR: not enough free space (%s KB) on device.")

package_fetch_successful = _("    %3d/%s Fetch successful: %s (%s bytes)")
package_fetch_extinct = _("    Extinct package:  %s")
package_fetch_total_size = _("   Total size: %s")
package_fetch_remain_size_time = _("      Downloaded %s of %s. Estimated remaining time: %s")
package_fetch_failed = _("    Fetch unsuccessful: %s")
package_fetch_summary = _("   RPM fetch summary: %s")
package_fetch_summary_success = _("       success: %d")
package_fetch_summary_failed = _("       failed:  %d")
package_fetch_summary_extinct = _("       extinct: %d")

package_parsing = _("   Retrieving / parsing *relevant* package metadata: %s (%s)")
erratum_parsing = _("   Retrieving / parsing errata data: %s (%s)")
kickstart_parsing = _("   Retrieving / parsing kickstart data: %s (%s)")
kickstart_downloading = _("   Retrieving / parsing kickstart tree files: %s (%s)")
package_importing = _("   Importing *relevant* package metadata: %s (%s)")
warning_slow = _("   * WARNING: this may be a slow process.")
link_channel_packages = _("Linking packages to channels")
errata_importing = _("   Importing *relevant* errata: %s (%s)")
kickstart_import_nothing_to_do = _("   No new kickstartable tree to import")
kickstart_importing = _("Importing kickstartable trees (%d)")
kickstart_imported = _("Imported kickstartable trees (%d)")
   070701000000D5000081B40000000000000000000000016290A0C1000004BD000000000000000000000000000000000000003400000000spacewalk-backend/satellite_tools/mgr-sign-metadata   #! /bin/bash

set -e

FILETOSIGN=$1
[ -z $2 ] && SIGFILE="$FILETOSIGN.asc" || SIGFILE="$2"
[ ! -z "$3" ] && CLRSIGNEDFILE="$3"

if [ -z "$FILETOSIGN" -o ! -r "$FILETOSIGN" ]; then
    echo "No file to sign provided" >&2
    exit 1
fi

if [ ! -r /etc/rhn/signing.conf ]; then
    echo "No config file found: /etc/rhn/signing.conf" >&2
    exit 1
fi

source /etc/rhn/signing.conf

if [ -z "$KEYID" ]; then
    echo "Unable to find GPG KEYID in config" >&2
    exit 1
fi

if [ -z "$GPGPASS" ]; then
    echo "Unable to find GPG PASSWORD in config" >&2
    exit 1
fi

KEYFILE="$FILETOSIGN.key"

# Debian systems require the hashing algorithm to be at least SHA256
if [ ! -z "$DIGESTPREF" ]; then
  DIGESTOPT="--personal-digest-preferences $DIGESTPREF"
else
  DIGESTOPT="--personal-digest-preferences SHA256"
fi

rm -f $SIGFILE
echo "$GPGPASS" | gpg -sab --batch -u $KEYID --passphrase-fd 0 --pinentry-mode loopback $DIGESTOPT -o $SIGFILE $FILETOSIGN

rm -f $KEYFILE
gpg --batch --export -a -o $KEYFILE $KEYID

if [ ! -z "$CLRSIGNEDFILE" ]; then
  rm -f $CLRSIGNEDFILE
  echo "$GPGPASS" | gpg --batch -u $KEYID --passphrase-fd 0 --pinentry-mode loopback $DIGESTOPT --clearsign -o $CLRSIGNEDFILE $FILETOSIGN
fi

exit 0
   070701000000D6000081B40000000000000000000000016290A0C1000029AB000000000000000000000000000000000000003800000000spacewalk-backend/satellite_tools/mgr-sign-metadata-ctl   #!/bin/bash

set -e

function usage {
    echo "Usage: mgr-sign-metadata-ctl [enable <keyid> | disable | check-config | check-channels]"
    echo "  enable KEYID     Enable GPG signing of repository metadata using the provided KEYID."
    echo "                   Requires a valid key with the given KEYID to exist in the default keyring."
    echo "  disable          Disable GPG signing of repository metadata."
    echo "  check-channels   Check if the cached channels repodata is signed."
    echo "  check-config     Check configuration and report any problems. This is the default option."
    echo "  regen-metadata   Restart services and schedule metadata regeneration."
}

function check_key_in_keyring {
    if gpg --list-keys | grep --quiet -F "$1"; then
        echo "OK. Found key $1 in keyring."
    else
        echo "ERROR. Key $1 not found in keyring. Generate or import a key pair and then rerun this command."
        exit 2
    fi
}

function regenerate_metadata {
    echo -n "Restarting Tomcat..."
    systemctl restart tomcat
    echo "done."
    echo -n "Restarting Taskomatic..."
    systemctl restart taskomatic
    echo "done."
    echo
    echo "Scheduling repo metadata regeneration..."
    read_spacecmd_user_pass
    spacecmd -q -u $SPACECMD_USER -p $SPACECMD_PASS "softwarechannel_regenerateyumcache -f *"
    RETVAL=$?
    if [ $RETVAL -ne 0 ]; then
        echo "\nERROR queuing repo metadata regeneration. Try executing manually: spacecmd softwarechannel_regenerateyumcache \"*\""
        exit 1
    fi
    echo "done."
}

function changed_repo_signing {
    read -p "Restarting the services and regenerating the metadata is required. Proceed now (y/N)? " -n 1 -r
    echo
    if [[ $REPLY =~ ^[Yy]$ ]]; then
        regenerate_metadata
    else
        echo -e "\nYou can restart the services and regenerate the metadata later by executing:\n    mgr-sign-metadata-ctl regen-metadata"
    fi

    echo
    echo "WARNING: When the metadata regeneration has finished refresh the repo config on all registered machines."
    echo "To check if all channels have signed metadata: mgr-signed-metadata-ctl check-channels"
}

function is_signing_enabled {
    grep --quiet "^sign_metadata.*=.*1\s*$" $RHN_CONF
}

function read_spacecmd_user_pass {
    if [[ -z "$SPACECMD_USER" || -z "$SPACECMD_PASS" ]];then
        echo -n "Server User: ";
        read SPACECMD_USER
        echo -n "Server Password: ";
        read -s SPACECMD_PASS
    fi
    echo
}


ACTION="check-config"
ENABLE_KEYID=""

if [ -n "$1" ]; then
    if [[ "$1" = "enable" ]]; then
        ACTION="$1"
        if [[ -z "$2" ]]; then
           usage
           exit 1
        else
           ENABLE_KEYID="$2"
        fi
    elif [[ "$1" = "disable" || "$1" = "check-config" || "$1" = "check-channels" || "$1" = "regen-metadata" ]]; then
        ACTION="$1"
    elif [[ "$1" = "help" || "$1" = "-h" ]]; then
        usage
        exit 0
    else
        usage
        exit 1
    fi
fi

RHN_CONF="/etc/rhn/rhn.conf"
GPG_SALT_EXPORT_FILE="/srv/susemanager/salt/gpg/mgr-keyring.gpg"
GPG_PUB_EXPORT_FILE="/srv/www/htdocs/pub/mgr-gpg-pub.key"
SIGNING_CONF="/etc/rhn/signing.conf"

if [[ ! -f $SIGNING_CONF ]]; then
    echo "Error. File ${SIGNING_CONF} is missing."
    exit 1
fi

source $SIGNING_CONF

if [[  $ACTION = "enable" ]]; then
    # check if the KEYID exists in the keyring
    check_key_in_keyring "$ENABLE_KEYID"

    # make sure KEYID exists in singing.conf
    if grep --quiet "^KEYID=\"${ENABLE_KEYID}\"" $SIGNING_CONF; then
        echo "OK. Key ${ENABLE_KEYID} is set in ${SIGNING_CONF}."
    elif grep --quiet "^KEYID=\".*\"" $SIGNING_CONF; then
        sed -i "s/KEYID=\".*\"\s*$/KEYID=\"${ENABLE_KEYID}\"/g" $SIGNING_CONF
        echo "DONE. Set key ${ENABLE_KEYID} in ${SIGNING_CONF}."
    else
        echo "KEYID=\"${ENABLE_KEYID}\"" >> $SIGNING_CONF
        echo "DONE. Set key ${ENABLE_KEYID} in ${SIGNING_CONF}."
    fi

    # make sure sign_metadata=1 in rhn.conf
    if grep --quiet "^sign_metadata.*=.*0\s*$" $RHN_CONF; then
        # edit rhn.conf to enable signing
        sed -i 's/sign_metadata.*=.*$/sign_metadata = 1/g' $RHN_CONF
        echo "DONE. Enabled metadata signing in ${RHN_CONF}."

    elif grep --quiet "^sign_metadata.*=.*1" $RHN_CONF; then
        echo "OK. Metadata signing is enabled in ${RHN_CONF}."
    else
        # add line to rhn.conf
        echo "sign_metadata = 1" >> $RHN_CONF
        echo "DONE. Enabled metadata signing in ${RHN_CONF}."
    fi

    # check if key was exported to the salt dir
    EXPORT_SALT_KEY=true
    if [ -f $GPG_SALT_EXPORT_FILE ]; then
        if gpg --no-default-keyring --keyring $GPG_SALT_EXPORT_FILE --list-keys | grep --quiet "$ENABLE_KEYID"; then
            echo "OK. Key ${ENABLE_KEYID} was exported to ${GPG_SALT_EXPORT_FILE}."
            EXPORT_SALT_KEY=false
        fi
    fi
    if [ "$EXPORT_SALT_KEY" = true ]; then
        rm -f $GPG_SALT_EXPORT_FILE
        GPG_SALT_EXPORT_DIR=$(dirname $GPG_SALT_EXPORT_FILE)
        mkdir -p $GPG_SALT_EXPORT_DIR
        chown salt:salt $GPG_SALT_EXPORT_DIR
        chmod 775 $GPG_SALT_EXPORT_DIR
        gpg --export $ENABLE_KEYID > $GPG_SALT_EXPORT_FILE
        chmod 644 $GPG_SALT_EXPORT_FILE
        echo "DONE. Exported key ${ENABLE_KEYID} to ${GPG_SALT_EXPORT_FILE}."
    fi

    # check if key was exported to the http pub dir
    EXPORT_WWW_PUB_KEY=true
    if [ -f $GPG_PUB_EXPORT_FILE ]; then
        if cat $GPG_PUB_EXPORT_FILE | gpg -q --with-colons --import-options show-only --import | grep --quiet $ENABLE_KEYID; then
            echo "OK. Key ${ENABLE_KEYID} was exported to ${GPG_PUB_EXPORT_FILE}."
            EXPORT_WWW_PUB_KEY=false
        fi
    fi
    if [ "$EXPORT_WWW_PUB_KEY" = true ]; then
        rm -f $GPG_PUB_EXPORT_FILE
        gpg --batch --export --armor --output $GPG_PUB_EXPORT_FILE $ENABLE_KEYID
        chmod 644 $GPG_PUB_EXPORT_FILE
        echo "DONE. Exported key ${ENABLE_KEYID} to ${GPG_PUB_EXPORT_FILE}."
    fi

elif [[  $ACTION = "check-config" ]]; then
    # check sign_metadata in rhn.conf
    if is_signing_enabled; then
        echo "Metadata signing is enabled in ${RHN_CONF}."
        echo

        # check KEYID set in signing.conf
        if [[ -z "$KEYID" ]]; then
            echo "ERROR. No KEYID set in ${SIGNING_CONF}."
        else
            echo "OK. KEYID is set in ${SIGNING_CONF}."
            check_key_in_keyring "$KEYID"
        fi

        if [[ -z "$GPGPASS" ]]; then
            echo "ERROR. No GPGPASS set in ${SIGNING_CONF}."
        fi

        # check pub key export file
        if [ -f $GPG_SALT_EXPORT_FILE ]; then
            if gpg --no-default-keyring --keyring $GPG_SALT_EXPORT_FILE --list-keys | grep --quiet $KEYID; then
                echo "OK. Key ${KEYID} was exported to ${GPG_SALT_EXPORT_FILE}."
            else
                echo "ERROR. Public key file ${GPG_SALT_EXPORT_FILE} exists but it doesn't contain key ${KEYID}."
            fi
        else
            echo "ERROR. Public key file $GPG_SALT_EXPORT_FILE is missing."
        fi

        if [ -f $GPG_PUB_EXPORT_FILE ]; then
            if cat $GPG_PUB_EXPORT_FILE | gpg -q --with-colons --import-options show-only --import | grep --quiet $KEYID; then
                echo "OK. Key ${KEYID} was exported to ${GPG_PUB_EXPORT_FILE}."
            else
                echo "ERROR. Public key file ${GPG_PUB_EXPORT_FILE} exists but it doesn't contain key ${KEYID}."
            fi
        else
            echo "ERROR. Public key file $GPG_PUB_EXPORT_FILE is missing."
        fi

    else
        echo "Metadata signing is disabled in ${RHN_CONF}."

        # check KEYID set in signing.conf
        if [[ -z "$KEYID" ]]; then
            echo "OK. No KEYID set in ${SIGNING_CONF}."
        else
            echo "WARNING. KEYID is set in ${SIGNING_CONF}."
        fi

        # check salt key export file
        if [ -f $GPG_SALT_EXPORT_FILE ]; then
            echo "WARNING. Key export file ${GPG_SALT_EXPORT_FILE} is present."
        else
            echo "OK. Key file ${GPG_SALT_EXPORT_FILE} is not present."
        fi

        # check http pub key export file
        if [ -f $GPG_PUB_EXPORT_FILE ]; then
            echo "WARNING. Key export file ${GPG_PUB_EXPORT_FILE} is present."
        else
            echo "OK. Key file ${GPG_PUB_EXPORT_FILE} is not present."
        fi
    fi

elif [[  $ACTION = "disable" ]]; then
    if grep --quiet "^sign_metadata.*=.*$" $RHN_CONF; then
        # edit rhn.conf to disable signing
        sed -i 's/sign_metadata.*=.*$/sign_metadata = 0/g' $RHN_CONF
    else
        # add line to rhn.conf
        echo "sign_metadata = 0" >> $RHN_CONF
    fi
    echo "DONE. Disabled metadata signing in ${RHN_CONF}."

    sed -i "s/KEYID=\".*\"\s*$/KEYID=\"\"/g" $SIGNING_CONF
    echo "DONE. Unset KEYID in ${SIGNING_CONF}."

    if [ -f $GPG_SALT_EXPORT_FILE ]; then
        rm -f $GPG_SALT_EXPORT_FILE
        echo "DONE. Removed key export file ${GPG_SALT_EXPORT_FILE}."
    else
        echo "OK. Key file ${GPG_SALT_EXPORT_FILE} is not present."
    fi

    if [ -f $GPG_PUB_EXPORT_FILE ]; then
        rm -f $GPG_PUB_EXPORT_FILE
        echo "DONE. Removed key export file ${GPG_PUB_EXPORT_FILE}."
    else
        echo "OK. Key file ${GPG_PUB_EXPORT_FILE} is not present."
    fi

    echo
    echo "NOTE: Key pair was not removed from the GPG keyring. Use gpg --delete-keys and --delete-secret-keys if you wish to remove the keys from the keyring."
elif [[ $ACTION = "check-channels" ]]; then
    if is_signing_enabled; then
        read_spacecmd_user_pass
        CHANNELS=$(spacecmd -q -u $SPACECMD_USER -p $SPACECMD_PASS softwarechannel_list)
        RETVAL=$?
        if [ $RETVAL -ne 0 ]; then
            exit 1
        fi
        REPODATA_DIR=/var/cache/rhn/repodata # TODO get mount point from cfg

        for ch in $CHANNELS; do
           if [ ! -d "$REPODATA_DIR/$ch" ]; then
                echo "ERROR. Channel $ch. Cached metadata not generated."
           else
               if [[ -f "$REPODATA_DIR/$ch/Release.gpg" || -f "$REPODATA_DIR/$ch/Release.gpg" ]]; then
                    echo "OK. Channel $ch. Cached metadata is signed."
               else
                    echo "ERROR. Channel $ch. Cached metadata is not signed."
               fi
           fi
        done
    else
        echo "No checking done. Metadata signing is disabled."
    fi
elif [[ $ACTION = "regen-metadata" ]]; then
    regenerate_metadata
fi

if [[ $ACTION = "enable" || $ACTION = "disable" ]]; then
    echo
    echo "NOTE. For the changes to become effective run:"
    echo "   mgr-sign-metadata-ctl regen-metadata"
    echo
fi
 070701000000D7000081B40000000000000000000000016290A0C100001929000000000000000000000000000000000000003C00000000spacewalk-backend/satellite_tools/mgr-update-pkg-extra-tags   #!/usr/bin/python

import os
import sys
import traceback
import argparse
from debian import debfile
from rhn import rhnLockfile
from spacewalk.server import rhnSQL
from spacewalk.common.rhnConfig import CFG, initCFG
from spacewalk.server.importlib.backendLib import DBstring, sanitizeValue
from spacewalk.satellite_tools.progress_bar import ProgressBar
from spacewalk.server import taskomatic

try:
    #  python 2
    from urllib import unquote
    import urlparse
except ImportError:
    #  python3
    import urllib.parse as urlparse # pylint: disable=F0401,E0611
    from urllib.parse import unquote

try:
    import xmlrpclib
except ImportError:
    import xmlrpc.client as xmlrpclib  # pylint: disable=F0401

DEFAULT_SERVER = 'localhost'

FORMAT_PRIORITY = ['.xz', '.gz', '']

PROCESSED = ['arch',
             'name',
             'summary',
             'epoch',
             'version',
             'release',
             'payload_size',
             'vendor',
             'package_group',
             'requires',
             'obsoletes',
             'predepends',
             'package',
             'architecture',
             'description',
             'maintainer',
             'section',
             'version',
             'depends',
             'provides',
             'conflicts',
             'replaces',
             'recommends',
             'suggests',
             'breaks',
             'pre-depends',
             'installed-size',
             ]

def systemExit(code, msg=None):
    sys.stderr.write(str(msg) + '\n')
    sys.exit(code)


def releaseLOCK():
    global LOCK
    if LOCK:
        LOCK.release()
        LOCK = None


def log(msg):
    print(msg)


class MetadataRefresh(object):

    def __init__(self, verbose):
        self.verbose = verbose
        self.channels = None

        self.select_channels = rhnSQL.prepare(
            """select distinct c.id, c.label from rhnChannel c, rhnChannelPackage cp, rhnPackage p, rhnPackageArch pa
                        where c.id=cp.channel_id and cp.package_id=p.id and p.package_arch_id=pa.id and pa.label like :deb""")
        self.select_pkgs = rhnSQL.prepare(
            """select p.id, p.path from rhnPackage p, rhnPackageArch pa
                        where p.package_arch_id=pa.id and pa.label like :deb""")
        self.insert_tag = rhnSQL.prepare("""
            insert into rhnPackageExtraTag(package_id, key_id, value) values(:package_id, :key_id, :value)
            """)
        self.delete_tags = rhnSQL.prepare("delete from rhnPackageExtraTag where package_id=:package_id")
        self.select_tag_key = rhnSQL.prepare("select id, name from rhnPackageExtraTagKey where name=:name");
        self.insert_tag_key = rhnSQL.prepare("insert into rhnPackageExtraTagKey(id, name) values(:id, :name)")

    def _create_extra_tag(self, package_id, key, value):
        value = sanitizeValue(value, DBstring(2048))
        self.select_tag_key.execute(name=key)
        dbkey = self.select_tag_key.fetchone_dict()
        if not dbkey:
            key_id = rhnSQL.Sequence('rhn_package_extra_tags_keys_id_seq').next()
            self.insert_tag_key.execute(id=key_id, name=key)
        else:
            key_id = dbkey["id"]
        self.insert_tag.execute(package_id=package_id, key_id=key_id, value=value)

    def _get_channels(self):
        if not self.channels:
            self.select_channels.execute(deb='%-deb')
            self.channels = self.select_channels.fetchall_dict()

    def refresh_db(self):
        self._get_channels()
        self.select_pkgs.execute(deb='%-deb')
        pkgs = self.select_pkgs.fetchall_dict()
        if pkgs:
            pb = ProgressBar(prompt='Updating {} packages in {} channel(s) '.format(len(pkgs), len(self.channels)), endTag=' - complete',
                         finalSize=len(pkgs), finalBarLength=40, stream=sys.stdout)
            pb.printAll(1)
            for pkg in pkgs:
                pb.addTo(1)
                pb.printIncrement()
                pkg_id = pkg['id']
                pkg_path = pkg['path']
                deb_path = os.path.join(CFG.MOUNT_POINT, pkg_path)
                deb = None
                try:
                    deb = debfile.DebFile(deb_path)
                    debcontrol = deb.debcontrol()
                    self.delete_tags.execute(package_id=pkg_id)

                    for key in list(debcontrol.keys()):
                        if key.lower() not in PROCESSED:
                            value = debcontrol[key]
                            if self.verbose:
                                log('%s |%s |%s | %s ' % (pkg_id, key, value, deb_path))
                            self._create_extra_tag(pkg_id, key, value)
                finally:
                    if deb:
                        deb.close()
            rhnSQL.commit()
            pb.printComplete()
        else:
            log('No packages to refresh')

    def regenerate_metadata(self):
        log('\nScheduling regeneration of repo metadata for channels:')
        self._get_channels()
        for channel in self.channels:
            log('- {}'.format(channel['label']))
        taskomatic.add_to_repodata_queue_for_channel_package_subscription(
            [channel['label'] for channel in self.channels], [], "server.app.updatepkgextratags")
        rhnSQL.commit()
        log('done.')


def main(args):
    global LOCK
    LOCK = None
    try:
        LOCK = rhnLockfile.Lockfile('/var/run/mgr-refresh-pkg-extra-tags.pid')
    except rhnLockfile.LockfileLockedException:
        systemExit(1, 'ERROR: attempting to run more than one instance of '
                      'mgr-refresh-pkg-metadata Exiting.')

    initCFG('server.satellite')
    initCFG('server.susemanager')
    rhnSQL.initDB()

    refresh = MetadataRefresh(args.verbose)
    refresh.refresh_db()
    refresh.regenerate_metadata()


if __name__ == '__main__':
    parser = argparse.ArgumentParser(description='Update DEB packages extra fields in the database.')
    parser.add_argument('-v', '--verbose', dest='verbose', help='be verbose', action='store_true', default=False)
    args = parser.parse_args()

    try:
        sys.exit(abs(main(args) or 0))
    except KeyboardInterrupt:
        releaseLOCK()
        systemExit(1, '\nProcess has been interrupted.')
    except SystemExit as e:
        releaseLOCK()
        sys.exit(e.code)
    except:
        releaseLOCK()
        raise
   070701000000D8000081B40000000000000000000000016290A0C1000010E1000000000000000000000000000000000000003200000000spacewalk-backend/satellite_tools/progress_bar.py #
# Copyright (c) 2008--2016 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#

import sys
import time


class ProgressBar:

    """A simplete progress bar class. See example in main below."""

    def __init__(self, prompt='working: ', endTag=' - done',
                 finalSize=100.0, finalBarLength=10,
                 barChar='#', stream=sys.stdout, redrawYN=1):

        # disabling redrawing of the hash marks. Too many people are
        # complaining.
        redrawYN = 0

        self.size = 0.0
        self.barLength = 0
        self.barLengthPrinted = 0
        self.prompt = prompt
        self.endTag = endTag
        self.finalSize = float(finalSize)
        self.finalBarLength = int(finalBarLength)
        self.barChar = barChar
        self.stream = stream
        self.redrawYN = redrawYN
        if self.stream not in [sys.stdout, sys.stderr]:
            self.redrawYN = 0

    def reinit(self):
        self.size = 0.0
        self.barLength = 0
        self.barLengthPrinted = 0

    def printAll(self, contextYN=0):
        """ Prints/reprints the prompt and current level of hashmarks.
        Eg:             ____________________
            Processing: ###########
        NOTE: The underscores only occur if you turn on contextYN.
        """
        if contextYN:
            self.stream.write('%s%s\n' % (' ' * len(self.prompt), '_' * self.finalBarLength))
        toPrint = self.prompt + self.barChar * self.barLength
        if self.redrawYN:
            # self.stream.write('\b'*len(toPrint))
            # backup
            self.stream.write('\b' * 80)  # nuke whole line (80 good 'nuf?)
            completeBar = len(self.prompt + self.endTag) + self.finalBarLength
            # erase
            self.stream.write(completeBar * ' ')
            # backup again
            self.stream.write(completeBar * '\b')
        self.stream.write(toPrint)
        self.stream.flush()
        self.barLengthPrinted = self.barLength

    def printIncrement(self):
        "visually updates the bar."
        if self.redrawYN:
            self.printAll(contextYN=0)
        else:
            self.stream.write(self.barChar * (self.barLength - self.barLengthPrinted))
        self.stream.flush()
        self.barLengthPrinted = self.barLength

    def printComplete(self):
        """Completes the bar reguardless of current object status (and then
           updates the object's status to complete)."""
        self.complete()
        self.printIncrement()
        self.stream.write(self.endTag + '\n')
        self.stream.flush()

    def update(self, newSize):
        "Update the status of the class to the newSize of the bar."
        newSize = float(newSize)
        if newSize >= self.finalSize:
            newSize = self.finalSize
        self.size = newSize
        if self.finalSize == 0:
            self.barLength = self.finalBarLength
        else:
            self.barLength = int((self.size * self.finalBarLength) / self.finalSize)
            if self.barLength >= self.finalBarLength:
                self.barLength = self.finalBarLength

    def addTo(self, additionalSize):
        "Update the object's status to an additional bar size."
        self.update(self.size + additionalSize)

    def complete(self):
        self.update(self.finalSize)


#------------------------------------------------------------------------------

if __name__ == '__main__':
    print("An example:")
    bar_length = 40
    items = 200
    pb = ProgressBar('standby: ', ' - all done!', items, bar_length, 'o')
    pb.printAll(1)
    for i in range(items):
        # pb.update(i)
        pb.addTo(1)
        time.sleep(0.005)
        pb.printIncrement()
    pb.printComplete()

#------------------------------------------------------------------------------
   070701000000D9000041FD0000000000000000000000016290A0C100000000000000000000000000000000000000000000002F00000000spacewalk-backend/satellite_tools/repo_plugins    070701000000DA000081B40000000000000000000000016290A0C100000323000000000000000000000000000000000000003800000000spacewalk-backend/satellite_tools/repo_plugins/Makefile   # Makefile for repo sync plugins
#
#
# Copyright (c) 2009--2013 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
# 
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation. 
#
#

TOP	= ../..

# Specific stuff
SUBDIR	= satellite_tools/repo_plugins
SPACEWALK_FILES	= __init__ yum_src uln_src deb_src

include $(TOP)/Makefile.defs

 070701000000DB000081B40000000000000000000000016290A0C1000010B4000000000000000000000000000000000000003B00000000spacewalk-backend/satellite_tools/repo_plugins/__init__.py    #
# Copyright (c) 2008--2017 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#

import re
import rpm
from uyuni.common import rhn_pkg
from spacewalk.common.rhnException import rhnFault
from spacewalk.server import rhnPackageUpload

CACHE_DIR = '/var/cache/rhn/reposync/'


class ContentPackage:

    def __init__(self):
        # map of checksums
        self.checksums = {}
        self.checksum_type = None
        self.checksum = None

        # unique ID that can be used by plugin
        self.unique_id = None

        self.name = None
        self.version = None
        self.release = None
        self.epoch = None
        self.arch = None

        self.path = None

        self.a_pkg = None

    def clear_header(self):
        """a_pkg hold the header data. Remove it to not waste memory"""
        self.a_pkg = None

    def __cmp__(self, other):
        ret = cmp(self.name, other.name)
        if ret == 0:
            rel_self = str(self.release).split('.')[0]
            rel_other = str(other.release).split('.')[0]
            # pylint: disable=E1101
            ret = rpm.labelCompare((str(self.epoch), str(self.version), rel_self),
                                   (str(other.epoch), str(other.version), rel_other))
        if ret == 0:
            ret = cmp(self.arch, other.arch)
        return ret

    def getNRA(self):
        rel = re.match(".*?\\.(.*)",self.release)
        rel = rel.group(1)
        nra = str(self.name) + str(rel) + str(self.arch)
        return nra

    def setNVREA(self, name, version, release, epoch, arch):
        self.name = name
        self.version = version
        self.release = release
        self.arch = arch
        self.epoch = epoch

    def getNVREA(self):
        if self.epoch:
            return self.name + '-' + self.version + '-' + self.release + '-' + self.epoch + '.' + self.arch
        else:
            return self.name + '-' + self.version + '-' + self.release + '.' + self.arch

    def getNEVRA(self):
        if self.epoch is None:
            self.epoch = '0'
        return self.name + '-' + self.epoch + ':' + self.version + '-' + self.release + '.' + self.arch

    def load_checksum_from_header(self):
        if self.path is None:
            raise rhnFault(50, "Unable to load package", explain=0)
        self.a_pkg = rhn_pkg.package_from_filename(self.path)
        self.a_pkg.read_header()
        if self.checksum_type:
            self.a_pkg.set_checksum_type(self.checksum_type)
        if not self.a_pkg.checksum:
            self.a_pkg.payload_checksum()
        self.a_pkg.input_stream.close()
        if self.checksum != self.a_pkg.checksum:
            raise rhnFault(50, "checksums did not match %s vs %s" % (self.checksum, self.a_pkg.checksum), explain=0)

    def upload_package(self, org_id, metadata_only=False):
        if not metadata_only:
            rel_package_path = rhnPackageUpload.relative_path_from_header(
                self.a_pkg.header, org_id, self.a_pkg.checksum_type, self.a_pkg.checksum)
        else:
            rel_package_path = None
        _unused = rhnPackageUpload.push_package(self.a_pkg,
                                                force=False,
                                                relative_path=rel_package_path,
                                                org_id=org_id)
        return rel_package_path

    def set_checksum(self, checksum_type_in=None, checksum_in=None):
        if checksum_type_in and checksum_in:
            self.checksum_type = checksum_type_in
            self.checksum = checksum_in
            if not((checksum_type_in in self.checksums) and (self.checksums[checksum_type_in] == checksum_in)):
                self.checksums[checksum_type_in] = checksum_in

070701000000DC000081B40000000000000000000000016290A0C100004237000000000000000000000000000000000000003A00000000spacewalk-backend/satellite_tools/repo_plugins/deb_src.py #
# Copyright (c) 2016--2017 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#

import sys
import os.path
from shutil import rmtree
from shutil import copyfile
import time
import re
import fnmatch
import requests
from functools import cmp_to_key
from salt.utils.versions import LooseVersion
from uyuni.common import fileutils
from spacewalk.common.suseLib import get_proxy
from spacewalk.satellite_tools.download import get_proxies
from spacewalk.satellite_tools.repo_plugins import ContentPackage, CACHE_DIR
from spacewalk.satellite_tools.syncLib import log2
from spacewalk.common.rhnConfig import CFG, initCFG
from spacewalk.common import repo

try:
    #  python 2 
    from urllib import unquote
    import urlparse
except ImportError:
    #  python3
    import urllib.parse as urlparse # pylint: disable=F0401,E0611
    from urllib.parse import unquote

RETRIES = 10
RETRY_DELAY = 1
FORMAT_PRIORITY = ['.xz', '.gz', '']


class DebPackage:
    def __init__(self):
        self.name = None
        self.epoch = None
        self.version = None
        self.release = None
        self.arch = None
        self.relativepath = None
        self.checksum_type = None
        self.checksum = None

    def __getitem__(self, key):
        return getattr(self, key)

    def __setitem__(self, key, value):
        return setattr(self, key, value)

    def evr(self):
        evr = ""
        if self.epoch:
           evr = evr + "{}:".format(self.epoch)
        if self.version:
           evr = evr + "{}".format(self.version)
        if self.release:
           evr = evr + "-{}".format(self.release)
        return evr

    def is_populated(self):
        return all([attribute is not None for attribute in (self.name, self.epoch,
                                                            self.version, self.release, self.arch,
                                                            self.relativepath, self.checksum_type,
                                                            self.checksum)])


class DebRepo:
    # url example - http://ftp.debian.org/debian/dists/jessie/main/binary-amd64/
    def __init__(
        self,
        url,
        cache_dir,
        pkg_dir,
        proxy_addr="",
        proxy_user="",
        proxy_pass="",
        gpg_verify=True,
    ):
        self.url = url
        parts = url.rsplit('/dists/', 1)
        self.base_url = [parts[0]]
        # Make sure baseurl ends with / and urljoin will work correctly
        if self.base_url[0][-1] != '/':
            self.base_url[0] += '/'
        self.urls = self.base_url
        self.sslclientcert = self.sslclientkey = self.sslcacert = None
        self.proxy = proxy_addr
        self.proxy_username = proxy_user
        self.proxy_password = proxy_pass
        self.gpg_verify = gpg_verify

        self.basecachedir = cache_dir
        if not os.path.isdir(self.basecachedir):
            fileutils.makedirs(self.basecachedir, user='wwwrun', group='www')
        self.includepkgs = []
        self.exclude = []
        self.pkgdir = pkg_dir
        self.http_headers = {}

    def verify(self):
        """
        Verify package index checksum and signature.

        :return:
        """
        if not repo.DpkgRepo(self.url, self._get_proxies(), self.gpg_verify).verify_packages_index():
            raise repo.GeneralRepoException("Package index checksum failure")

    def _get_proxies(self):
        """
        Returns proxies dict for requests with python-requests.
        """
        if self.proxy:
            (_, netloc, _, _, _) = urlparse.urlsplit(self.proxy)
            proxies = {
                'http': 'http://' + netloc,
                'https': 'http://' + netloc
            }
            if self.proxy_username and self.proxy_password:
                proxies = {
                    'http': 'http://' + self.proxy_username + ":" + self.proxy_password + "@" + netloc,
                    'https': 'http://' + self.proxy_username + ":" + self.proxy_password + "@" + netloc,
                }
            return proxies
        else:
            return None


    def _download(self, url):
        if url.startswith('file://'):
            srcpath = unquote(url[len('file://'):])
            if not os.path.exists(srcpath):
                return ''
            filename = self.basecachedir + '/' + os.path.basename(url)
            copyfile(srcpath, filename)
            return filename
        for _ in range(0, RETRIES):
            try:
                data = requests.get(url, proxies=self._get_proxies(), cert=(self.sslclientcert, self.sslclientkey),
                                    verify=self.sslcacert)
                if not data.ok:
                    return ''
                filename = os.path.join(self.basecachedir, os.path.basename(urlparse.urlparse(url).path))
                fd = open(filename, 'wb')
                try:
                    for chunk in data.iter_content(chunk_size=1024):
                        fd.write(chunk)
                finally:
                    if fd is not None:
                        fd.close()
                return filename
            except requests.exceptions.RequestException as exc:
                print("ERROR: requests.exceptions.RequestException occurred:", exc)
                time.sleep(RETRY_DELAY)

        return ''

    def get_package_list(self):
        decompressed = None
        packages_raw = []
        to_return = []

        for extension in FORMAT_PRIORITY:
            scheme, netloc, path, query, fragid = urlparse.urlsplit(self.url)
            url = urlparse.urlunsplit((scheme, netloc,
                                       path + ('/' if not path.endswith('/') else '') + 'Packages' + extension, query, fragid))
            filename = self._download(url)
            if filename:
                if query:
                    newfilename = filename.split('?')[0]
                    os.rename(filename, newfilename)
                    filename = newfilename
                decompressed = fileutils.decompress_open(filename)
                break

        if decompressed:
            for pkg in decompressed.read().split("\n\n"):
                packages_raw.append(pkg)
            decompressed.close()
        else:
            print("ERROR: Download of package list failed.")

        # Parse and format package metadata
        for chunk in packages_raw:
            package = DebPackage()
            package.epoch = ""
            lines = chunk.split("\n")
            checksums = {}
            for line in lines:
                pair = line.split(" ", 1)
                if pair[0] == "Package:":
                    package.name = pair[1]
                elif pair[0] == "Architecture:":
                    package.arch = pair[1] + '-deb'
                elif pair[0] == "Version:":
                    package['epoch'] = ''
                    version = pair[1]
                    if version.find(':') != -1:
                        package['epoch'], version = version.split(':')
                    if version.find('-') != -1:
                        tmp = version.split('-')
                        package['version'] = '-'.join(tmp[:-1])
                        package['release'] = tmp[-1]
                    else:
                        package['version'] = version
                        package['release'] = 'X'
                elif pair[0] == "Filename:":
                    package.relativepath = pair[1]
                elif pair[0] == "SHA256:":
                    checksums['sha256'] = pair[1]
                elif pair[0] == "SHA1:":
                    checksums['sha1'] = pair[1]
                elif pair[0] == "MD5sum:":
                    checksums['md5'] = pair[1]

            # Pick best available checksum
            if 'sha256' in checksums:
                package.checksum_type = 'sha256'
                package.checksum = checksums['sha256']
            elif 'sha1' in checksums:
                package.checksum_type = 'sha1'
                package.checksum = checksums['sha1']
            elif 'md5' in checksums:
                package.checksum_type = 'md5'
                package.checksum = checksums['md5']

            if package.is_populated():
                to_return.append(package)
        return to_return


class ContentSource:

    def __init__(self, url, name, insecure=False, interactive=True, yumsrc_conf=None,
                 org="1", channel_label="", no_mirrors=False, ca_cert_file=None,
                 client_cert_file=None, client_key_file=None):
        # pylint: disable=W0613
        self.url = url
        self.name = name
        if org:
            self.org = org
        else:
            self.org = "NULL"

        comp = CFG.getComponent()
        # read the proxy configuration in /etc/rhn/rhn.conf
        initCFG('server.satellite')

        # ensure the config namespace will be switched back in any case
        try:
            self.proxy_addr, self.proxy_user, self.proxy_pass = get_proxy(self.url)
            self.authtoken = None

            # Replace non-valid characters from reponame (only alphanumeric chars allowed)
            self.reponame = "".join([x if x.isalnum() else "_" for x in self.name])
            self.channel_label = channel_label

            # SUSE vendor repositories belongs to org = NULL
            # The repository cache root will be "/var/cache/rhn/reposync/REPOSITORY_LABEL/"
            root = os.path.join(CACHE_DIR, str(org or "NULL"), self.reponame)
            self.repo = DebRepo(url, root,
                                os.path.join(CFG.MOUNT_POINT, CFG.PREPENDED_DIR, self.org, 'stage'),
                                self.proxy_addr, self.proxy_user, self.proxy_pass, gpg_verify=not(insecure))
            self.repo.verify()

            self.num_packages = 0
            self.num_excluded = 0

            # keep authtokens for mirroring
            (_scheme, _netloc, _path, query, _fragid) = urlparse.urlsplit(url)
            if query:
                self.authtoken = query

            # configure network connection
            try:
                # bytes per second
                self.minrate = int(CFG.REPOSYNC_MINRATE)
            except ValueError:
                self.minrate = 1000
            try:
                # seconds
                self.timeout = int(CFG.REPOSYNC_TIMEOUT)
            except ValueError:
                self.timeout = 300
        finally:
            initCFG(comp)

    def get_md_checksum_type(self):
        pass

    def get_products(self):
        # No products
        return []

    def get_susedata(self):
        # No susedata
        return []

    def get_mediaproducts(self):
        # No mediaproducts data
        return None

    def list_packages(self, filters, latest):
        """ list packages"""

        pkglist = self.repo.get_package_list()
        self.num_packages = len(pkglist)
        if latest:
            latest_pkgs = {}
            for pkg in pkglist:
                ident = '{}.{}'.format(pkg.name, pkg.arch)
                if ident not in latest_pkgs.keys() or LooseVersion(pkg.evr()) > LooseVersion(latest_pkgs[ident].evr()):
                    latest_pkgs[ident] = pkg
            pkglist = list(latest_pkgs.values())
        pkglist.sort(key = cmp_to_key(self._sort_packages))

        if not filters:
            # if there's no include/exclude filter on command line or in database
            for p in self.repo.includepkgs:
                filters.append(('+', [p]))
            for p in self.repo.exclude:
                filters.append(('-', [p]))

        if filters:
            pkglist = self._filter_packages(pkglist, filters)
            self.num_excluded = self.num_packages - len(pkglist)

        to_return = []
        for pack in pkglist:
            new_pack = ContentPackage()
            new_pack.setNVREA(pack.name, pack.version, pack.release,
                              pack.epoch, pack.arch)
            new_pack.unique_id = pack
            new_pack.checksum_type = pack.checksum_type
            new_pack.checksum = pack.checksum
            to_return.append(new_pack)
        return to_return

    @staticmethod
    def _sort_packages(pkg1, pkg2):
        """sorts a list of deb package dicts by name"""
        if pkg1.name > pkg2.name:
            return 1
        elif pkg1.name == pkg2.name:
            return 0
        else:
            return -1

    @staticmethod
    def _filter_packages(packages, filters):
        """ implement include / exclude logic
            filters are: [ ('+', includelist1), ('-', excludelist1),
                           ('+', includelist2), ... ]
        """
        if filters is None:
            return

        selected = []
        excluded = []
        allmatched_include = []
        allmatched_exclude = []
        if filters[0][0] == '-':
            # first filter is exclude, start with full package list
            # and then exclude from it
            selected = packages
        else:
            excluded = packages

        for filter_item in filters:
            sense, pkg_list = filter_item
            regex = fnmatch.translate(pkg_list[0])
            reobj = re.compile(regex)
            if sense == '+':
                # include
                for excluded_pkg in excluded:
                    if reobj.match(excluded_pkg['name']):
                        allmatched_include.insert(0, excluded_pkg)
                        selected.insert(0, excluded_pkg)
                for pkg in allmatched_include:
                    if pkg in excluded:
                        excluded.remove(pkg)
            elif sense == '-':
                # exclude
                for selected_pkg in selected:
                    if reobj.match(selected_pkg['name']):
                        allmatched_exclude.insert(0, selected_pkg)
                        excluded.insert(0, selected_pkg)

                for pkg in allmatched_exclude:
                    if pkg in selected:
                        selected.remove(pkg)
                excluded = (excluded + allmatched_exclude)
            else:
                raise IOError("Filters are malformed")
        return selected

    def clear_cache(self, directory=None):
        if directory is None:
            directory = self.repo.basecachedir
        # remove content in directory
        for item in os.listdir(directory):
            path = os.path.join(directory, item)
            if os.path.isfile(path):
                os.unlink(path)
            elif os.path.isdir(path):
                rmtree(path)

    @staticmethod
    def get_updates():
        # There isn't any update info in the repository
        return '', []

    @staticmethod
    def get_groups():
        pass

    # Get download parameters for threaded downloader
    def set_download_parameters(self, params, relative_path, target_file, checksum_type=None,
                                checksum_value=None, bytes_range=None):
        # Create directories if needed
        target_dir = os.path.dirname(target_file)
        if not os.path.exists(target_dir):
            os.makedirs(target_dir, int('0755', 8))

        params['authtoken'] = self.authtoken
        params['urls'] = self.repo.urls
        params['relative_path'] = relative_path
        params['authtoken'] = self.authtoken
        params['target_file'] = target_file
        params['ssl_ca_cert'] = self.repo.sslcacert
        params['ssl_client_cert'] = self.repo.sslclientcert
        params['ssl_client_key'] = self.repo.sslclientkey
        params['checksum_type'] = checksum_type
        params['checksum'] = checksum_value
        params['bytes_range'] = bytes_range
        params['proxy'] = self.proxy_addr
        params['proxy_username'] = self.proxy_user
        params['proxy_password'] = self.proxy_pass
        params['http_headers'] = self.repo.http_headers
        params["timeout"] = self.timeout
        params["minrate"] = self.minrate
        # Older urlgrabber compatibility
        params['proxies'] = get_proxies(self.repo.proxy, self.repo.proxy_username,
                                        self.repo.proxy_password)

    @staticmethod
    def get_file(path, local_base=None):
        # pylint: disable=W0613
        # Called from import_kickstarts, not working for deb repo
        log2(0, 0, "Unable to download path %s from deb repo." % path, stream=sys.stderr)
 070701000000DD000081B40000000000000000000000016290A0C100000DDD000000000000000000000000000000000000003A00000000spacewalk-backend/satellite_tools/repo_plugins/uln_src.py """
Copyright (C) 2014 Oracle and/or its affiliates. All rights reserved.

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, version 2


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, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
02110-1301, USA.

ULN plugin for spacewalk-repo-sync.
"""

# pylint: disable=E0012, C0413
import sys
sys.path.append('/usr/share/rhn')

from spacewalk.satellite_tools.repo_plugins.yum_src import ContentSource as yum_ContentSource
from spacewalk.satellite_tools.syncLib import RhnSyncException
from spacewalk.satellite_tools.ulnauth import ULNAuth

class ContentSource(yum_ContentSource):

    def __init__(self, url, name, insecure=False, interactive=True, yumsrc_conf=ULNAuth.ULN_CONF_PATH,
                 org=1, channel_label="", no_mirrors=False,
                 ca_cert_file=None, client_cert_file=None, client_key_file=None):
        if url[:6] != "uln://":
            raise RhnSyncException("url format error, url must start with uln://")
        # Make sure baseurl ends with / and urljoin will work correctly
        if url[-1] != '/':
            url += '/'
        yum_ContentSource.__init__(self, url=url, name=name, insecure=insecure,
                                   interactive=interactive, yumsrc_conf=yumsrc_conf, org=org,
                                   channel_label=channel_label, no_mirrors=no_mirrors,
                                   ca_cert_file=ca_cert_file, client_cert_file=client_cert_file,
                                   client_key_file=client_key_file)
        self.uln_token = None

    def _authenticate(self, url):
        self._url_orig = url
        self._uln_auth = ULNAuth()
        self.uln_token = self._uln_auth.authenticate(url)
        self.http_headers = {'X-ULN-Api-User-Key': self.uln_token}
        hostname, label = self._uln_auth.get_hostname(self.url)
        self._load_proxy_settings(hostname)
        print(("The download URL is: " + self._uln_auth.url + "/XMLRPC/GET-REQ/" + label))
        if self.proxy_url:
            print(("Trying proxy " + self.proxy_url))

    # pylint: disable=arguments-differ
    def setup_repo(self, repo, *args, **kwargs):
        yum_ContentSource.setup_repo(self, repo, *args, uln_repo=True, **kwargs)

    # Get download parameters for threaded downloader
    def set_download_parameters(self, params, relative_path, target_file, checksum_type=None,
                                checksum_value=None, bytes_range=None):
        yum_ContentSource.set_download_parameters(self,
                                                  params=params,
                                                  relative_path=relative_path,
                                                  target_file=target_file,
                                                  checksum_type=checksum_type,
                                                  checksum_value=checksum_value,
                                                  bytes_range=bytes_range)
        hostname, label = self._uln_auth.get_hostname(self.url)
        params['urls'] = [self._uln_auth.url + "/XMLRPC/GET-REQ/" + label]
   070701000000DE000081B40000000000000000000000016290A0C10000CB1C000000000000000000000000000000000000003A00000000spacewalk-backend/satellite_tools/repo_plugins/yum_src.py # coding: utf-8
#
# Copyright (c) 2008--2018 Red Hat, Inc.
# Copyright (c) 2010--2019 SUSE LINUX GmbH, Nuernberg, Germany.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# SUSE trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate SUSE trademarks that are incorporated
# in this software or its documentation.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#

from __future__ import absolute_import, unicode_literals

from shutil import rmtree, copytree

import configparser
import fnmatch
import glob
import gzip
import bz2
import lzma
import os
import re
import solv
import subprocess
import sys
import tempfile
import types
import urlgrabber

try:
    from urllib import urlencode, unquote, quote
    from urlparse import urlsplit, urlparse, urlunparse
except:
    from urllib.parse import urlsplit, urlencode, urlparse, urlunparse, unquote, quote

import xml.etree.ElementTree as etree

from functools import cmp_to_key
from salt.utils.versions import LooseVersion
from uyuni.common import checksum, fileutils
from spacewalk.common import rhnLog
from spacewalk.satellite_tools.repo_plugins import ContentPackage, CACHE_DIR
from spacewalk.satellite_tools.download import get_proxies
from spacewalk.common.rhnConfig import CFG, initCFG
from spacewalk.common.suseLib import get_proxy
from rhn.i18n import sstr


# namespace prefix to parse patches.xml file
PATCHES_XML = '{http://novell.com/package/metadata/suse/patches}'
REPO_XML = '{http://linux.duke.edu/metadata/repo}'
METALINK_XML = '{http://www.metalinker.org/}'

CACHE_DIR = '/var/cache/rhn/reposync'
SPACEWALK_LIB = '/var/lib/spacewalk'
SPACEWALK_GPG_KEYRING = os.path.join(SPACEWALK_LIB, 'gpgdir/pubring.gpg')
ZYPP_CACHE_PATH = 'var/cache/zypp'
ZYPP_RAW_CACHE_PATH = os.path.join(ZYPP_CACHE_PATH, 'raw')
ZYPP_SOLV_CACHE_PATH = os.path.join(ZYPP_CACHE_PATH, 'solv')
REPOSYNC_ZYPPER_ROOT = os.path.join(SPACEWALK_LIB, "reposync/root")
REPOSYNC_ZYPPER_RPMDB_PATH = os.path.join(REPOSYNC_ZYPPER_ROOT, 'var/lib/rpm')
REPOSYNC_ZYPPER_CONF = '/etc/rhn/spacewalk-repo-sync/zypper.conf'
REPOSYNC_EXTRA_HTTP_HEADERS_CONF = '/etc/rhn/spacewalk-repo-sync/extra_headers.conf'

RPM_PUBKEY_VERSION_RELEASE_RE = re.compile(r'^gpg-pubkey-([0-9a-fA-F]+)-([0-9a-fA-F]+)')


class ZyppoSync:
    """
    This class prepares a environment for running Zypper inside a dedicated reposync root

    """
    def __init__(self, root=None):
        self._root = root
        if self._root is not None:
            self._init_root(self._root)

    def _init_root(self, root):
        """
        Creates a root environment for Zypper, but only if none is around.

        :return: None
        """
        try:
            for pth in [root, os.path.join(root, "etc/zypp/repos.d"), REPOSYNC_ZYPPER_ROOT]:
                if not os.path.exists(pth):
                    os.makedirs(pth)
        except Exception as exc:
            msg = "Unable to initialise Zypper root for {}: {}".format(root, exc)
            rhnLog.log_clean(0, msg)
            sys.stderr.write(str(msg) + "\n")
            raise
        try:
            # Synchronize new GPG keys that come from the Spacewalk GPG keyring
            self.__synchronize_gpg_keys()
        except Exception as exc:
            msg = "Unable to synchronize Spacewalk GPG keyring: {}".format(exc)
            rhnLog.log_clean(0, msg)
            sys.stderr.write(str(msg) + "\n")

    def __synchronize_gpg_keys(self):
        """
        This method does update the Zypper RPM database with new keys coming from the Spacewalk GPG keyring

        """
        spacewalk_gpg_keys = {}
        zypper_gpg_keys = {}
        with tempfile.NamedTemporaryFile() as f:
            # Collect GPG keys from the Spacewalk GPG keyring
            # The '--export-options export-clean' is needed avoid exporting key signatures
            # which are not needed and can cause issues when importing into the RPMDB
            os.system("gpg -q --batch --no-options --no-default-keyring --no-permission-warning --keyring {} --export --export-options export-clean -a > {}".format(SPACEWALK_GPG_KEYRING, f.name))
            process = subprocess.Popen(['gpg', '--verbose', '--with-colons', f.name], stdout=subprocess.PIPE, stderr=subprocess.DEVNULL)
            for line in process.stdout.readlines():
               line_l = line.decode().split(":")
               if line_l[0] == "sig" and "selfsig" in line_l[10]:
                   spacewalk_gpg_keys.setdefault(line_l[4][8:].lower(), []).append(format(int(line_l[5]), 'x'))

            # Collect GPG keys from reposync Zypper RPM database
            process = subprocess.Popen(['rpm', '-q', 'gpg-pubkey', '--dbpath', REPOSYNC_ZYPPER_RPMDB_PATH], stdout=subprocess.PIPE)
            for line in process.stdout.readlines():
                match = RPM_PUBKEY_VERSION_RELEASE_RE.match(line.decode())
                if match:
                    zypper_gpg_keys[match.groups()[0]] = match.groups()[1]

            # Compare GPG keys and remove keys from reposync that are going to be imported with a newer release.
            for key in zypper_gpg_keys:
                # If the GPG key id already exists, is that new key actually newer? We need to check the release
                release_i = int(zypper_gpg_keys[key], 16)
                if key in spacewalk_gpg_keys and any(int(i, 16) > release_i for i in spacewalk_gpg_keys[key]):
                    # This GPG key has a newer release on the Spacewalk GPG keyring that on the reposync Zypper RPM database.
                    # We delete this key from the RPM database to allow importing the newer version.
                    os.system("rpm --dbpath {} -e gpg-pubkey-{}-{}".format(REPOSYNC_ZYPPER_RPMDB_PATH, key, zypper_gpg_keys[key]))

            # Finally, once we deleted the existing old key releases from the Zypper RPM database
            # we proceed to import all keys from the Spacewalk GPG keyring. This will allow new GPG
            # keys release are upgraded in the Zypper keyring since rpmkeys does not handle the upgrade
            # properly
            os.system("rpmkeys --dbpath {} --import {}".format(REPOSYNC_ZYPPER_RPMDB_PATH, f.name))


class ZypperRepo:
    def __init__(self, root, url, org):
       self.root = root
       self.baseurl = [url]
       self.basecachedir = os.path.join(CACHE_DIR, org)
       self.pkgdir = os.path.join(CFG.MOUNT_POINT, CFG.PREPENDED_DIR, org, 'stage')
       self.urls = self.baseurl
       # Make sure baseurl ends with / and urljoin will work correctly
       if self.urls[0][-1] != '/':
           self.urls[0] += '/'
       # Make sure root paths are created
       if not os.path.isdir(self.root):
           fileutils.makedirs(self.root, user='wwwrun', group='www')
       if not os.path.isdir(self.pkgdir):
           fileutils.makedirs(self.pkgdir, user='wwwrun', group='www')
       self.is_configured = False
       self.includepkgs = []
       self.exclude = []


class RawSolvablePackage:
    def __init__(self, solvable):
        self.name = solvable.name
        self.raw_name = str(solvable)
        self.epoch, self.version, self.release = self._parse_solvable_evr(solvable.evr)
        self.arch = solvable.arch
        cksum = solvable.lookup_checksum(solv.SOLVABLE_CHECKSUM)
        self.checksum_type = cksum.typestr()
        self.checksum = cksum.hex()
        self.packagesize = solvable.lookup_num(solv.SOLVABLE_DOWNLOADSIZE)
        self.relativepath = solvable.lookup_location()[0]

    def __repr__(self):
        return "RawSolvablePackage({})".format(self.raw_name)

    @staticmethod
    def _parse_solvable_evr(evr):
        """
        Return the (epoch, version, release) tuple based on evr string.
        The "evr" string from libsolv is represented as: "epoch:version-release"

        https://github.com/openSUSE/libsolv/blob/master/src/solvable.h

        :returns: tuple
        """
        if evr in [None, '']:
           return ('', '', '')
        idx_epoch = evr.find(':')
        epoch = evr[:idx_epoch] if idx_epoch != -1 else ''
        idx_release = evr.find('-')
        if idx_release != -1:
            version = evr[idx_epoch + 1:idx_release]
            release = evr[idx_release + 1:]
        else:
            version = evr[idx_epoch + 1:]
            release = ''
        return epoch, version, release


class RepoMDError(Exception):
    """ An exception thrown when not RepoMD is found. """
    pass


class SolvFileNotFound(Exception):
    """ An exception thrown when not Solv file is found. """
    pass


class UpdateNoticeException(Exception):
    """ An exception thrown for bad UpdateNotice data. """
    pass


class UpdateNotice(object):
    """
    Simplified UpdateNotice class implementation
    https://github.com/rpm-software-management/yum/blob/master/yum/update_md.py

    A single update notice (for instance, a security fix).
    """
    def __init__(self, elem=None, repoid=None, vlogger=None):
        self._md = {
            'from'             : '',
            'type'             : '',
            'title'            : '',
            'release'          : '',
            'status'           : '',
            'version'          : '',
            'pushcount'        : '',
            'update_id'        : '',
            'issued'           : '',
            'updated'          : '',
            'description'      : '',
            'rights'           : '',
            'severity'         : '',
            'summary'          : '',
            'solution'         : '',
            'references'       : [],
            'pkglist'          : [],
            'reboot_suggested' : False,
            'restart_suggested' : False
        }

        if elem is not None:
            self._parse(elem)

    def __getitem__(self, item):
        """ Allows scriptable metadata access (ie: un['update_id']). """
        if type(item) is int:
            return sorted(self._md)[item]
        ret = self._md.get(item)
        if ret == '':
            ret = None
        return ret

    def __setitem__(self, item, val):
        self._md[item] = val

    def _parse(self, elem):
        """
        Parse an update element::
            <!ELEMENT update (id, synopsis?, issued, updated,
                              references, description, rights?,
                              severity?, summary?, solution?, pkglist)>
                <!ATTLIST update type (errata|security) "errata">
                <!ATTLIST update status (final|testing) "final">
                <!ATTLIST update version CDATA #REQUIRED>
                <!ATTLIST update from CDATA #REQUIRED>
        """
        if elem.tag == 'update':
            for attrib in ('from', 'type', 'status', 'version'):
                self._md[attrib] = elem.attrib.get(attrib)
            for child in elem:
                if child.tag == 'id':
                    if not child.text:
                        raise UpdateNoticeException("No id element found")
                    self._md['update_id'] = child.text
                elif child.tag == 'pushcount':
                    self._md['pushcount'] = child.text
                elif child.tag == 'issued':
                    self._md['issued'] = child.attrib.get('date')
                elif child.tag == 'updated':
                    self._md['updated'] = child.attrib.get('date')
                elif child.tag == 'references':
                    self._parse_references(child)
                elif child.tag == 'description':
                    self._md['description'] = child.text
                elif child.tag == 'rights':
                    self._md['rights'] = child.text
                elif child.tag == 'severity':
                    self._md[child.tag] = child.text
                elif child.tag == 'summary':
                    self._md['summary'] = child.text
                elif child.tag == 'solution':
                    self._md['solution'] = child.text
                elif child.tag == 'pkglist':
                    self._parse_pkglist(child)
                elif child.tag == 'title':
                    self._md['title'] = child.text
                elif child.tag == 'release':
                    self._md['release'] = child.text
        else:
            raise UpdateNoticeException('No update element found')

    def _parse_references(self, elem):
        """
        Parse the update references::
            <!ELEMENT references (reference*)>
            <!ELEMENT reference>
                <!ATTLIST reference href CDATA #REQUIRED>
                <!ATTLIST reference type (self|other|cve|bugzilla) "self">
                <!ATTLIST reference id CDATA #IMPLIED>
                <!ATTLIST reference title CDATA #IMPLIED>
        """
        for reference in elem:
            if reference.tag == 'reference':
                data = {}
                for refattrib in ('id', 'href', 'type', 'title'):
                    data[refattrib] = reference.attrib.get(refattrib)
                self._md['references'].append(data)
            else:
                raise UpdateNoticeException('No reference element found')

    def _parse_pkglist(self, elem):
        """
        Parse the package list::
            <!ELEMENT pkglist (collection+)>
            <!ELEMENT collection (name?, package+)>
                <!ATTLIST collection short CDATA #IMPLIED>
                <!ATTLIST collection name CDATA #IMPLIED>
            <!ELEMENT name (#PCDATA)>
        """
        for collection in elem:
            data = { 'packages' : [] }
            if 'short' in collection.attrib:
                data['short'] = collection.attrib.get('short')
            for item in collection:
                if item.tag == 'name':
                    data['name'] = item.text
                elif item.tag == 'package':
                    data['packages'].append(self._parse_package(item))
            self._md['pkglist'].append(data)

    def _parse_package(self, elem):
        """
        Parse an individual package::
            <!ELEMENT package (filename, sum, reboot_suggested, restart_suggested)>
                <!ATTLIST package name CDATA #REQUIRED>
                <!ATTLIST package version CDATA #REQUIRED>
                <!ATTLIST package release CDATA #REQUIRED>
                <!ATTLIST package arch CDATA #REQUIRED>
                <!ATTLIST package epoch CDATA #REQUIRED>
                <!ATTLIST package src CDATA #REQUIRED>
            <!ELEMENT reboot_suggested (#PCDATA)>
            <!ELEMENT restart_suggested (#PCDATA)>
            <!ELEMENT filename (#PCDATA)>
            <!ELEMENT sum (#PCDATA)>
                <!ATTLIST sum type (md5|sha1) "sha1">
        """
        package = {}
        for pkgfield in ('arch', 'epoch', 'name', 'version', 'release', 'src'):
            package[pkgfield] = elem.attrib.get(pkgfield)

        #  Bad epoch and arch data is the most common (missed) screwups.
        # Deal with bad epoch data.
        if not package['epoch'] or package['epoch'][0] not in '0123456789':
            package['epoch'] = None

        for child in elem:
            if child.tag == 'filename':
                package['filename'] = child.text
            elif child.tag == 'sum':
                package['sum'] = (child.attrib.get('type'), child.text)
            elif child.tag == 'reboot_suggested':
                self._md['reboot_suggested'] = True
            elif child.tag == 'restart_suggested':
                self._md['restart_suggested'] = True
        return package


class ContentSource:
    def __init__(self, url, name, insecure=False, interactive=True,
                 yumsrc_conf=None, org="1", channel_label="",
                 no_mirrors=False, ca_cert_file=None, client_cert_file=None,
                 client_key_file=None):
        """
        Plugin constructor.
        """

        # pylint: disable=W0613
        if urlsplit(url).scheme:
          self.url = url
        else:
          self.url = "file://%s" % url
        self.name = name
        self.insecure = insecure
        self.interactive = interactive
        self.org = org if org else "NULL"
        self.proxy_hostname = None
        self.proxy_url = None
        self.proxy_user = None
        self.proxy_pass = None
        self.authtoken = None
        self.sslcacert = ca_cert_file
        self.sslclientcert = client_cert_file
        self.sslclientkey = client_key_file
        self.http_headers = {}

        comp = CFG.getComponent()
        # read configuration from /etc/rhn/rhn.conf
        initCFG('server.satellite')

        # ensure the config namespace will be switched back in any case
        try:
            # keep authtokens for mirroring
            (_scheme, _netloc, _path, query, _fragid) = urlsplit(url)
            if query:
                self.authtoken = query

            # load proxy configuration based on the url
            self._load_proxy_settings(self.url)

            # Get extra HTTP headers configuration from /etc/rhn/spacewalk-repo-sync/extra_headers.conf
            if os.path.isfile(REPOSYNC_EXTRA_HTTP_HEADERS_CONF):
                http_headers_cfg = configparser.ConfigParser()
                http_headers_cfg.read_file(open(REPOSYNC_EXTRA_HTTP_HEADERS_CONF))
                section_name = None

                if http_headers_cfg.has_section(self.name):
                    section_name = self.name
                elif http_headers_cfg.has_section(channel_label):
                    section_name = channel_label
                elif http_headers_cfg.has_section('main'):
                    section_name = 'main'

                if section_name:
                    for hdr in http_headers_cfg[section_name]:
                        self.http_headers[hdr] = http_headers_cfg.get(section_name, option=hdr)

            # perform authentication if implemented
            self._authenticate(url)

            # Make sure baseurl ends with / and urljoin will work correctly
            self.urls = [url]
            if self.urls[0][-1] != '/':
                self.urls[0] += '/'

            # Replace non-valid characters from reponame (only alphanumeric chars allowed)
            self.reponame = "".join([x if x.isalnum() else "_" for x in self.name])
            self.channel_label = channel_label

            # SUSE vendor repositories belongs to org = NULL
            # The repository cache root will be "/var/cache/rhn/reposync/REPOSITORY_LABEL/"
            root = os.path.join(CACHE_DIR, str(org or "NULL"), self.reponame)

            self.repo = ZypperRepo(root=root, url=self.url, org=self.org)
            self.num_packages = 0
            self.num_excluded = 0
            self.gpgkey_autotrust = None
            self.groupsfile = None

            # configure network connection
            try:
                # bytes per second
                self.minrate = int(CFG.REPOSYNC_MINRATE)
            except ValueError:
                self.minrate = 1000
            try:
                # seconds
                self.timeout = int(CFG.REPOSYNC_TIMEOUT)
            except ValueError:
                self.timeout = 300
        finally:
            # set config component back to original
            initCFG(comp)

    def _load_proxy_settings(self, url):
        # read the proxy configuration in /etc/rhn/rhn.conf
        comp = CFG.getComponent()
        initCFG('server.satellite')

        # Get the global HTTP Proxy settings from DB or per-repo
        # settings on /etc/rhn/spacewalk-repo-sync/zypper.conf
        if CFG.http_proxy:
            self.proxy_url, self.proxy_user, self.proxy_pass = get_proxy(url)
            self.proxy_hostname = self.proxy_url
        elif os.path.isfile(REPOSYNC_ZYPPER_CONF):
            zypper_cfg = configparser.ConfigParser()
            zypper_cfg.read_file(open(REPOSYNC_ZYPPER_CONF))
            section_name = None

            if zypper_cfg.has_section(self.name):
                section_name = self.name
            elif zypper_cfg.has_section(channel_label):
                section_name = channel_label
            elif zypper_cfg.has_section('main'):
                section_name = 'main'

            if section_name:
                if zypper_cfg.has_option(section_name, option='proxy'):
                    self.proxy_hostname = zypper_cfg.get(section_name, option='proxy')
                    self.proxy_url = "http://%s" % self.proxy_hostname

                if zypper_cfg.has_option(section_name, 'proxy_username'):
                    self.proxy_user = zypper_cfg.get(section_name, 'proxy_username')

                if zypper_cfg.has_option(section_name, 'proxy_password'):
                    self.proxy_pass = zypper_cfg.get(section_name, 'proxy_password')

        # set config component back to original
        initCFG(comp)

    def _get_mirror_list(self, repo, url):
        mirrorlist_path = os.path.join(repo.root, 'mirrorlist.txt')
        returnlist = []
        content = []
        try:
            urlgrabber_opts = {}
            self.set_download_parameters(urlgrabber_opts, url, mirrorlist_path)
            urlgrabber.urlgrab(url, mirrorlist_path, **urlgrabber_opts)
        except Exception as exc:
            # no mirror list found continue without
            return returnlist

        def _replace_and_check_url(url_list):
            goodurls = []
            skipped = None
            for url in url_list:
                # obvious bogons get ignored b/c, we could get more interesting checks but <shrug>
                if url in ['', None]:
                    continue
                try:
                    # This started throwing ValueErrors, BZ 666826
                    (s,b,p,q,f,o) = urlparse(url)
                    if p[-1] != '/':
                        p = p + '/'
                except (ValueError, IndexError, KeyError) as e:
                    s = 'blah'

                if s not in ['http', 'ftp', 'file', 'https']:
                    skipped = url
                    continue
                else:
                    goodurls.append(urlunparse((s,b,p,q,f,o)))
            return goodurls

        try:
           with open(mirrorlist_path, 'r') as mirrorlist_file:
               content = mirrorlist_file.readlines()
        except Exception as exc:
            self.error_msg("Could not read mirrorlist: {}".format(exc))

        try:
            # Try to read a metalink XML
            for files in etree.parse(mirrorlist_path).getroot():
                file_elem = files.find(METALINK_XML+'file')
                if file_elem.get('name') == 'repomd.xml':
                    _urls = file_elem.find(METALINK_XML+'resources').findall(METALINK_XML+'url')
                    for _url in _urls:
                        # The mirror urls in the metalink file are for repomd.xml so it
                        # gives a list of mirrors for that one file, but we want the list
                        # of mirror baseurls. Joy of reusing other people's stds. :)
                        if not _url.text.endswith("/repodata/repomd.xml"):
                            continue
                        returnlist.append(_url.text[:-len("/repodata/repomd.xml")])
        except Exception as exc:
            # If no metalink XML, we try to read a mirrorlist
            for line in content:
                if re.match('^\s*\#.*', line) or re.match('^\s*$', line):
                    continue
                mirror = re.sub('\n$', '', line) # no more trailing \n's
                (mirror, count) = re.subn('\$ARCH', '$BASEARCH', mirror)
                returnlist.append(mirror)

        returnlist = _replace_and_check_url(returnlist)

        try:
           # Write the final mirrorlist that is going to be pass to Zypper
           with open(mirrorlist_path, 'w') as mirrorlist_file:
               mirrorlist_file.write(os.linesep.join(returnlist))
        except Exception as exc:
            self.error_msg("Could not write the calculated mirrorlist: {}".format(exc))
        return returnlist

    def setup_repo(self, repo, uln_repo=False):
        """
        Setup repository and fetch metadata
        """
        self.zypposync = ZyppoSync(root=repo.root)
        zypp_repo_url = self._prep_zypp_repo_url(self.url, uln_repo)

        mirrorlist = self._get_mirror_list(repo, self.url)
        if mirrorlist:
            repo.baseurl = mirrorlist
        repo.urls = repo.baseurl

        # Manually call Zypper
        repo_cfg = '''[{reponame}]
enabled=1
autorefresh=0
{repo_url}={url}
gpgcheck={gpgcheck}
repo_gpgcheck={gpgcheck}
type=rpm-md
'''
        if uln_repo:
           _url = 'plugin:spacewalk-uln-resolver?url={}'.format(zypp_repo_url)
        elif self.http_headers:
           _url = 'plugin:spacewalk-extra-http-headers?url={}&repo_name={}&channel_label={}'.format(quote(zypp_repo_url), self.name, self.channel_label)
        else:
           _url = zypp_repo_url if not mirrorlist else os.path.join(repo.root, 'mirrorlist.txt')

        with open(os.path.join(repo.root, "etc/zypp/repos.d", str(self.channel_label or self.reponame) + ".repo"), "w") as repo_conf_file:
            repo_conf_file.write(repo_cfg.format(
                reponame=self.channel_label or self.reponame,
                repo_url='baseurl' if not mirrorlist else 'mirrorlist',
                url=_url,
                gpgcheck="0" if self.insecure else "1"
            ))
        zypper_cmd = "zypper"
        if not self.interactive:
            zypper_cmd = "{} -n".format(zypper_cmd)
        zypper_cmd = "{} --root {} --reposd-dir {} --cache-dir {} --raw-cache-dir {} --solv-cache-dir {} ref".format(
            zypper_cmd,
            REPOSYNC_ZYPPER_ROOT,
            os.path.join(repo.root, "etc/zypp/repos.d/"),
            REPOSYNC_ZYPPER_RPMDB_PATH,
            os.path.join(repo.root, "var/cache/zypp/raw/"),
            os.path.join(repo.root, "var/cache/zypp/solv/")
        )
        process = subprocess.run(zypper_cmd.split(' '), stderr=subprocess.PIPE)

        if process.returncode:
            if process.stderr:
                raise RepoMDError("Cannot access repository.\n{}".format(sstr(process.stderr)))
            raise RepoMDError("Cannot access repository. Maybe repository GPG keys are not imported")

        repo.is_configured = True

    def error_msg(self, message):
        rhnLog.log_clean(0, message)
        sys.stderr.write(str(message) + "\n")

    def _prep_zypp_repo_url(self, url, uln_repo):
        """
        Prepare the repository baseurl to use in the Zypper repo file.
        This will add the HTTP Proxy and Client certificate settings as part of
        the url parameters to be interpreted by CURL during the Zypper execution.

        :returns: str
        """
        ret_url = None
        query_params = {}
        if self.proxy_hostname:
            query_params['proxy'] = quote(self.proxy_hostname)
        if self.proxy_user:
            query_params['proxyuser'] = quote(self.proxy_user)
        if self.proxy_pass:
            query_params['proxypass'] = quote(self.proxy_pass)
        if self.sslcacert:
            # Since Zypper only accepts CAPATH, we need to split the certificates bundle
            # and run "c_rehash" on our custom CAPATH
            _ssl_capath = os.path.dirname(self.sslcacert)
            msg = "Preparing custom SSL CAPATH at {}".format(_ssl_capath)
            rhnLog.log_clean(0, msg)
            sys.stdout.write(str(msg) + "\n")
            os.system("awk 'BEGIN {{c=0;}} /BEGIN CERT/{{c++}} {{ print > \"{0}/cert.\" c \".pem\"}}' < {1}".format(_ssl_capath, self.sslcacert))
            os.system("c_rehash {} 2&>1 /dev/null".format(_ssl_capath))
            query_params['ssl_capath'] = _ssl_capath
        if self.sslclientcert:
            query_params['ssl_clientcert'] = self.sslclientcert
        if self.sslclientkey:
            query_params['ssl_clientkey'] = self.sslclientkey
        new_query = unquote(urlencode(query_params, doseq=True))
        if self.authtoken or uln_repo:
            ret_url = "{0}&{1}".format(url, new_query)
        else:
            ret_url = "{0}?{1}".format(url, new_query) if new_query else url
        return ret_url

    def _md_exists(self, tag):
        """
        Check if the requested metadata exists on the repository

        :returns: bool
        """
        if not self.repo.is_configured:
            self.setup_repo(self.repo)
        return bool(self._retrieve_md_path(tag))

    def _retrieve_md_path(self, tag):
        """
        Return the path to the requested metadata if exists

        :returns: str
        """
        if not self.repo.is_configured:
            self.setup_repo(self.repo)

        _repodata_path = self._get_repodata_path()
        repomd_path = os.path.join(_repodata_path, 'repomd.xml')
        if tag == 'repomd':
            return repomd_path

        def get_location_from_xml_element(data_item):
            for sub_item in data_item:
                if sub_item.tag.endswith("location"):
                    return sub_item.attrib.get("href")
                    
        path = None
        with open(repomd_path, 'rb') as repomd:
            for _, elem in etree.iterparse(repomd):
                if elem.tag.endswith("data") and elem.attrib.get("type").startswith(tag):
                    path = os.path.join(self.repo.root, ZYPP_RAW_CACHE_PATH, self.channel_label or self.reponame,
                            get_location_from_xml_element(elem))
                    if os.path.exists(path):
                        break
        if not path or not os.path.exists(path):
            return None
        return path

    def _get_repodata_path(self):
        """
        Return the path to the repository repodata directory

        :returns: str
        """
        if not self.repo.is_configured:
            self.setup_repo(self.repo)
        return os.path.join(self.repo.root, ZYPP_RAW_CACHE_PATH, self.channel_label or self.reponame, "repodata")

    def get_md_checksum_type(self):
        """
        Return the checksum type of the primary.xml if exists, otherwise
        default output is "sha1".

        :returns: str
        """
        if self._md_exists('repomd'):
            repomd_path = self._retrieve_md_path('repomd')
            infile = self._decompress(repomd_path)
            for repodata in etree.parse(infile).getroot():
                if repodata.get('type') == 'primary':
                    checksum_elem = repodata.find(REPO_XML+'checksum')
                    return checksum_elem.get('type')
        return "sha1"

    def _get_solvable_packages(self):
        """
        Return the full list of solvable packages available at the configured repo.
        This information is read from the solv file created by Zypper.

        :returns: list
        """
        if not self.repo.is_configured:
            self.setup_repo(self.repo)
        self.solv_pool = solv.Pool()
        self.solv_repo = self.solv_pool.add_repo(str(self.channel_label or self.reponame))
        solv_path = os.path.join(self.repo.root, ZYPP_SOLV_CACHE_PATH, self.channel_label or self.reponame, 'solv')
        if not os.path.isfile(solv_path) or not self.solv_repo.add_solv(solv.xfopen(str(solv_path)), 0):
            raise SolvFileNotFound(solv_path)
        self.solv_pool.addfileprovides()
        self.solv_pool.createwhatprovides()
        # Solvables with ":" in name are not packages
        return [pack for pack in self.solv_repo.solvables if ':' not in pack.name]

    def _get_solvable_dependencies(self, solvables):
        """
        Return a list containing all passed solvables and all its calculated dependencies.

        For each solvable we explore the "SOLVABLE_REQUIRES" to add any new solvable where "SOLVABLE_PROVIDES"
        is matching the requirement. All the new solvables that are added will be again processed in order to get
        a new level of dependencies.

        The exploration of dependencies is done when all the solvables are been processed and no new solvables are added

        :returns: list
        """
        if not self.repo.is_configured:
            self.setup_repo(self.repo)
        known_solvables = set()

        new_deps = True
        next_solvables = solvables

        # Collect solvables dependencies in depth
        while new_deps:
            new_deps = False
            for sol in next_solvables:
                # Do not explore dependencies from solvables that are already proceesed
                if sol not in known_solvables:
                    # This solvable has not been proceesed yet. We need to calculate its dependencies
                    known_solvables.add(sol)
                    new_deps = True
                    # Adding solvables that provide the dependencies
                    for _req in sol.lookup_deparray(keyname=solv.SOLVABLE_REQUIRES):
                        next_solvables.extend(self.solv_pool.whatprovides(_req))
        return list(known_solvables)

    def _apply_filters(self, pkglist, filters):
        """
        Return a list of packages where defined filters were applied.

        :returns: list
        """
        if not filters:
            # if there's no include/exclude filter on command line or in database
            for p in self.repo.includepkgs:
                filters.append(('+', [p]))
            for p in self.repo.exclude:
                filters.append(('-', [p]))

        if filters:
            pkglist = self._filter_packages(pkglist, filters)
            pkglist = self._get_solvable_dependencies(pkglist)

            # Do not pull in dependencies if there're explicitly excluded
            pkglist = self._filter_packages(pkglist, filters, True)
            self.num_excluded = self.num_packages - len(pkglist)

        return pkglist

    @staticmethod
    def _fix_encoding(text):
        if text is None:
            return None
        else:
            return str(text)

    @staticmethod
    def _filter_packages(packages, filters, exclude_only=False):
        """ implement include / exclude logic
            filters are: [ ('+', includelist1), ('-', excludelist1),
                           ('+', includelist2), ... ]
        """
        if filters is None:
            return

        selected = []
        excluded = []
        allmatched_include = []
        allmatched_exclude = []
        if exclude_only or filters[0][0] == '-':
            # first filter is exclude, start with full package list
            # and then exclude from it
            selected = packages
        else:
            excluded = packages

        for filter_item in filters:
            sense, pkg_list = filter_item
            regex = fnmatch.translate(pkg_list[0])
            reobj = re.compile(regex)
            if sense == '+':
                if exclude_only:
                    continue
                # include
                for excluded_pkg in excluded:
                    if reobj.match(excluded_pkg.name):
                        allmatched_include.insert(0, excluded_pkg)
                        selected.insert(0, excluded_pkg)
                for pkg in allmatched_include:
                    if pkg in excluded:
                        excluded.remove(pkg)
            elif sense == '-':
                # exclude
                for selected_pkg in selected:
                    if reobj.match(selected_pkg.name):
                        allmatched_exclude.insert(0, selected_pkg)
                        excluded.insert(0, selected_pkg)

                for pkg in allmatched_exclude:
                    if pkg in selected:
                        selected.remove(pkg)
                excluded = (excluded + allmatched_exclude)
            else:
                raise IOError("Filters are malformed")
        return selected

    def get_susedata(self):
        """
        Return susedata metadata from the repository if available

        :returns: list
        """
        susedata = []
        if self._md_exists('susedata'):
            data_path = self._retrieve_md_path('susedata')
            infile = self._decompress(data_path)
            for package in etree.parse(infile).getroot():
                d = {}
                d['pkgid'] = package.get('pkgid')
                d['name'] = package.get('name')
                d['arch'] = package.get('arch')
                d['keywords'] = []
                for child in package:
                    # we use "endswith" because sometimes it has a namespace
                    # and sometimes not :-(
                    if child.tag.endswith('version'):
                        d['version'] = child.get('ver')
                        d['release'] = child.get('rel')
                        d['epoch'] = child.get('epoch')
                        if d['epoch'] == '0' or d['epoch'] == '':
                            d['epoch'] = None
                        if child.get('arch'):
                            d['arch'] = child.get('arch')

                    elif child.tag.endswith('keyword'):
                        d['keywords'].append(child.text)
                    elif child.tag == 'eula':
                        d['eula'] = child.text
                susedata.append(d)
        return susedata

    def get_products(self):
        """
        Return products metadata from the repository if available

        :returns: list
        """
        products = []
        if self._md_exists('products'):
            data_path = self._retrieve_md_path('products')
            infile = self._decompress(data_path)
            for product in etree.parse(infile).getroot():
                p = {}
                p['name'] = product.find('name').text
                p['arch'] = product.find('arch').text
                version = product.find('version')
                p['version'] = version.get('ver')
                p['release'] = version.get('rel')
                p['epoch'] = version.get('epoch')
                p['vendor'] = self._fix_encoding(product.find('vendor').text)
                p['summary'] = self._fix_encoding(product.find('summary').text)
                p['description'] = self._fix_encoding(product.find('description').text)
                if p['epoch'] == '0':
                    p['epoch'] = None
                products.append(p)
        return products

    def get_updates(self):
        """
        Return update metadata from the repository if available

        :returns: list
        """
        if self._md_exists('updateinfo'):
            notices = {}
            updates_path = self._retrieve_md_path('updateinfo')
            infile = self._decompress(updates_path)
            for _event, elem in etree.iterparse(infile):
                if elem.tag == 'update':
                    un = UpdateNotice(elem)
                    key = un['update_id']
                    key = "%s-%s" % (un['update_id'], un['version'])
                    if key not in notices:
                        notices[key] = un
            return ('updateinfo', notices.values())
        elif self._md_exists('patches'):
            patches_path = self._retrieve_md_path('patches')
            infile = self._decompress(patches_path)
            notices = []
            for patch in etree.parse(infile).getroot():
                checksum_elem = patch.find(PATCHES_XML+'checksum')
                location_elem = patch.find(PATCHES_XML+'location')
                relative = location_elem.get('href')
                checksum_type = checksum_elem.get('type')
                checksum = checksum_elem.text
                filename = os.path.join(self._get_repodata_path(), os.path.basename(relative))
                try:
                    notices.append(etree.parse(filename).getroot())
                except SyntaxError as e:
                    self.error_msg("Could not parse %s. "
                                   "The file is not a valid XML document. %s" %
                                   (filename, e.msg))
                    continue
            return ('patches', notices)
        else:
            return ('', [])

    def get_groups(self):
        """
        Return path to the repository groups metadata file if available

        :returns: str
        """
        # groups -> /var/cache/rhn/reposync/1/CentOS_7_os_x86_64/bc140c8149fc43a5248fccff0daeef38182e49f6fe75d9b46db1206dc25a6c1c-c7-x86_64-comps.xml.gz
        groups = None
        if self._md_exists('group'):
            groups = self._retrieve_md_path('group')
        return groups

    def get_modules(self):
        """
        Return path to the repository modules metadata file if available

        :returns: str
        """
        modules = None
        if self._md_exists('modules'):
            modules = self._retrieve_md_path('modules')
        return modules

    def get_mediaproducts(self):
        """
        Return path to media.1/products file if available

        :returns: str
        """
        media_products_path = os.path.join(self._get_repodata_path(), 'media.1/products')
        try:
            (s,b,p,q,f,o) = urlparse(self.url)
            if p[-1] != '/':
                p = p + '/'
            p = p + 'media.1/products'
        except (ValueError, IndexError, KeyError) as e:
            return None
        url = urlunparse((s,b,p,q,f,o))
        try:
            urlgrabber_opts = {}
            self.set_download_parameters(urlgrabber_opts, url, media_products_path)
            urlgrabber.urlgrab(url, media_products_path, **urlgrabber_opts)
        except Exception as exc:
            # no 'media.1/products' file found
            return None
        return media_products_path

    def raw_list_packages(self, filters=None):
        """
        Return a raw list of available packages.

        :returns: list
        """
        rawpkglist = [RawSolvablePackage(solvable) for solvable in self._get_solvable_packages()]
        return self._apply_filters(rawpkglist, filters)

    def list_packages(self, filters, latest):
        """
        List available packages.

        :returns: list
        """
        pkglist = self._get_solvable_packages()
        pkglist.sort(key = cmp_to_key(self._sort_packages))
        self.num_packages = len(pkglist)
        pkglist = self._apply_filters(pkglist, filters)

        if latest:
            latest_pkgs = {}
            new_pkgs = []
            for pkg in pkglist:
               ident = '{}.{}'.format(pkg.name, pkg.arch)
               if ident not in latest_pkgs.keys() or LooseVersion(str(pkg.evr)) > LooseVersion(str(latest_pkgs[ident].evr)):
                  latest_pkgs[ident] = pkg
            pkglist = list(latest_pkgs.values())

        to_return = []
        for pack in pkglist:
            new_pack = ContentPackage()
            epoch, version, release = RawSolvablePackage._parse_solvable_evr(pack.evr)
            new_pack.setNVREA(pack.name, version, release, epoch, pack.arch)
            new_pack.unique_id = RawSolvablePackage(pack)
            checksum = pack.lookup_checksum(solv.SOLVABLE_CHECKSUM)
            new_pack.checksum_type = checksum.typestr()
            new_pack.checksum = checksum.hex()
            to_return.append(new_pack)
        return to_return

    @staticmethod
    def _sort_packages(pkg1, pkg2):
        """sorts a list of deb package dicts by name"""
        if pkg1.name > pkg2.name:
            return 1
        elif pkg1.name == pkg2.name:
            return 0
        else:
            return -1

    def clear_cache(self, directory=None, keep_repomd=False):
        """
        Clear all cache files from the environment.

        """
        if directory is None:
            directory = self.repo.root

        # remove content in directory
        for item in os.listdir(directory):
            path = os.path.join(directory, item)
            if os.path.isfile(path) and not (keep_repomd and item == "repomd.xml"):
                os.unlink(path)
            elif os.path.isdir(path):
                rmtree(path)

    def get_metadata_paths(self):
        """
        Simply return the 'primary' and 'updateinfo' path from repomd

        Example output:
        [
            (
                'repodata/bc140c8149fc43a5248fccff0daeef38182e49f6fe75d9b46db1206dc25a6c1c-c7-x86_64-comps.xml.gz',
                ('sha256', 'bc140c8149fc43a5248fccff0daeef38182e49f6fe75d9b46db1206dc25a6c1c')
            ),
            (
                'repodata/6614b3605d961a4aaec45d74ac4e5e713e517debb3ee454a1c91097955780697-primary.sqlite.bz2',
                ('sha256', '6614b3605d961a4aaec45d74ac4e5e713e517debb3ee454a1c91097955780697')
            )
        ]

        :returns: list
        """
        def get_location(data_item):
            for sub_item in data_item:
                if sub_item.tag.endswith("location"):
                    return sub_item.attrib.get("href")

        def get_checksum(data_item):
            for sub_item in data_item:
                if sub_item.tag.endswith("checksum"):
                    return sub_item.attrib.get("type"), sub_item.text

        if self._md_exists('repomd'):
            repomd_path = self._retrieve_md_path('repomd')
        else:
            raise RepoMDError(self._get_repodata_path())
        repomd = open(repomd_path, 'rb')
        files = {}
        for _event, elem in etree.iterparse(repomd):
            if elem.tag.endswith("data"):
                if elem.attrib.get("type") == "primary_db":
                    files['primary'] = (get_location(elem), get_checksum(elem))
                elif elem.attrib.get("type") == "primary" and 'primary' not in files:
                    files['primary'] = (get_location(elem), get_checksum(elem))
                elif elem.attrib.get("type") == "updateinfo":
                    files['updateinfo'] = (get_location(elem), get_checksum(elem))
                elif elem.attrib.get("type") == "group_gz":
                    files['group'] = (get_location(elem), get_checksum(elem))
                elif elem.attrib.get("type") == "group" and 'group' not in files:
                    files['group'] = (get_location(elem), get_checksum(elem))
                elif elem.attrib.get("type") == "modules":
                    files['modules'] = (get_location(elem), get_checksum(elem))
        repomd.close()
        return list(files.values())

    def repomd_up_to_date(self):
        """
        Check if repomd.xml has been updated by spacewalk.

        :returns: bool
        """
        if self._md_exists('repomd'):
            repomd_old_path = self._retrieve_md_path('repomd')
            repomd_new_path = os.path.join(self._get_repodata_path(), "repomd.xml.new")
            # Newer file not available? Don't do anything. It should be downloaded before this.
            if not os.path.isfile(repomd_new_path):
                return True
            return checksum.getFileChecksum('sha256', filename=repomd_old_path) == checksum.getFileChecksum('sha256', filename=repomd_new_path)
        else:
            return False

    # Get download parameters for threaded downloader
    def set_download_parameters(self, params, relative_path, target_file=None, checksum_type=None,
                                checksum_value=None, bytes_range=None):
        # Create directories if needed
        if target_file is not None:
            target_dir = os.path.dirname(target_file)
            if not os.path.exists(target_dir):
                os.makedirs(target_dir, int('0755', 8))

        params['authtoken'] = self.authtoken
        params['urls'] = self.repo.urls
        params['relative_path'] = relative_path
        params['authtoken'] = self.authtoken
        params['target_file'] = target_file
        params['ssl_ca_cert'] = self.sslcacert
        params['ssl_client_cert'] = self.sslclientcert
        params['ssl_client_key'] = self.sslclientkey
        params['checksum_type'] = checksum_type
        params['checksum'] = checksum_value
        params['bytes_range'] = bytes_range
        params['proxy'] = self.proxy_url
        params['proxy_username'] = self.proxy_user
        params['proxy_password'] = self.proxy_pass
        params['http_headers'] = self.http_headers
        params["timeout"] = self.timeout
        params["minrate"] = self.minrate
        # Older urlgrabber compatibility
        params['proxies'] = get_proxies(self.proxy_url, self.proxy_user, self.proxy_pass)

    def get_file(self, path, local_base=None):
        try:
            try:
                temp_file = ""
                try:
                    if not urlparse(path).scheme:
                        (s,b,p,q,f,o) = urlparse(self.url)
                        if p[-1] != '/':
                            p = p + '/'
                        p = p + path
                        path = urlunparse((s,b,p,q,f,o))
                except (ValueError, IndexError, KeyError) as e:
                    return None

                if local_base is not None:
                    target_file = os.path.join(local_base, path)
                    target_dir = os.path.dirname(target_file)
                    if not os.path.exists(target_dir):
                        os.makedirs(target_dir, int('0755', 8))
                    temp_file = target_file + '..download'
                    if os.path.exists(temp_file):
                        os.unlink(temp_file)
                    urlgrabber_opts = {}
                    self.set_download_parameters(urlgrabber_opts, path, temp_file)
                    downloaded = urlgrabber.urlgrab(path, temp_file, **urlgrabber_opts)
                    os.rename(downloaded, target_file)
                    return target_file
                else:
                    urlgrabber_opts = {}
                    self.set_download_parameters(urlgrabber_opts, path)
                    return urlgrabber.urlread(path, **urlgrabber_opts)
            except urlgrabber.grabber.URLGrabError:
                return
        finally:
            if os.path.exists(temp_file):
                os.unlink(temp_file)

    def set_ssl_options(self, ca_cert, client_cert, client_key):
        self.sslcacert = ca_cert
        self.sslclientcert = client_cert
        self.sslclientkey = client_key

    def _authenticate(self, url):
        pass

    def _decompress(self, filename):
        outname = filename
        if filename.endswith('.gz'):
            return gzip.open(filename)
        elif filename.endswith('.bz2'):
            return bz2.open(filename)
        elif filename.endswith('.xz'):
            return lzma.open(filename)
        elif filename.endswith('.zck'):
            outname = filename[:-4]
            with open(outname, "w") as outfile:
                process = subprocess.run(['/usr/bin/unzck', '-c', filename ], stdout=outfile, stderr=subprocess.PIPE)
                if process.returncode:
                    if process.stderr:
                        raise RepoMDError("Decompressing failed.\n{}".format(sstr(process.stderr)))
                    raise RepoMDError("Decompressing failed.")
        elif filename.endswith('.zst'):
            outname = filename[:-4]
            process = subprocess.run(['/usr/bin/zstd', '-d', '-o', outname, filename], stderr=subprocess.PIPE)
            if process.returncode:
                if process.stderr:
                    raise RepoMDError("Decompressing failed.\n{}".format(sstr(process.stderr)))
                raise RepoMDError("Decompressing failed.")
        return open(outname, 'rt')
070701000000DF000081B40000000000000000000000016290A0C10001ABB9000000000000000000000000000000000000002E00000000spacewalk-backend/satellite_tools/reposync.py #
# Copyright (c) 2008--2018 Red Hat, Inc.
# Copyright (c) 2010--2011 SUSE Linux Products GmbH
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#

import base64
import configparser
import os
import re
import shutil
import socket
import subprocess
import sys
import tempfile
import time
import traceback
from datetime import datetime
try:
    from html.parser import HTMLParser
except ImportError:
    from HTMLParser import HTMLParser
from dateutil.parser import parse as parse_date
from xml.dom import minidom
import gzip
from dateutil.tz import tzutc
import gettext
import errno
import multiprocessing

from rhn.connections import idn_puny_to_unicode

from uyuni.common.usix import raise_with_tb

from spacewalk.server import rhnPackage, rhnSQL, rhnChannel, suseEula
from uyuni.common import fileutils
from spacewalk.common import rhnLog, rhnCache, rhnMail, suseLib
from spacewalk.common.rhnTB import fetchTraceback
from spacewalk.common import repo
from uyuni.common.rhnLib import isSUSE, utc
from uyuni.common.checksum import getFileChecksum
from spacewalk.common.rhnConfig import CFG, initCFG
from spacewalk.common.rhnException import rhnFault
from spacewalk.server.importlib import importLib, mpmSource, packageImport, errataCache
from spacewalk.server.importlib.packageImport import ChannelPackageSubscription
from spacewalk.server.importlib.backendOracle import SQLBackend
from spacewalk.server.importlib.errataImport import ErrataImport
from spacewalk.satellite_tools.download import ThreadedDownloader, ProgressBarLogger, TextLogger
from spacewalk.satellite_tools.repo_plugins import CACHE_DIR
from spacewalk.satellite_tools.repo_plugins import yum_src
from spacewalk.server import taskomatic, rhnPackageUpload
from spacewalk.satellite_tools.satCerts import verify_certificate_dates
from spacewalk.satellite_tools.syncLib import log, log2, log2disk, dumpEMAIL_LOG, log2background

translation = gettext.translation('spacewalk-backend-server', fallback=True)
_ = translation.gettext
hostname = socket.gethostname()
if '.' not in hostname:
    hostname = socket.getfqdn()


default_log_location = '/var/log/rhn/'
relative_comps_dir = 'rhn/comps'
relative_modules_dir = 'rhn/modules'
relative_mediaproducts_dir = 'suse/media.1'
checksum_cache_filename = 'reposync/checksum_cache'
default_import_batch_size = 20

errata_typemap = {
    'security': 'Security Advisory',
    'recommended': 'Bug Fix Advisory',
    'bugfix': 'Bug Fix Advisory',
    'optional': 'Product Enhancement Advisory',
    'feature': 'Product Enhancement Advisory',
    'enhancement': 'Product Enhancement Advisory'
}

# namespace prefixes for parsing SUSE patches XML files
YUM = "{http://linux.duke.edu/metadata/common}"
RPM = "{http://linux.duke.edu/metadata/rpm}"
SUSE = "{http://novell.com/package/metadata/suse/common}"
PATCH = "{http://novell.com/package/metadata/suse/patch}"

class ChannelException(Exception):
    """Channel Error"""
    def __init__(self, value=None):
        Exception.__init__(self)
        self.value = value
    def __str__(self):
        return "%s" %(self.value,)

    def __unicode__(self):
        return self.value

class ChannelTimeoutException(ChannelException):
    """Channel timeout error e.g. a remote repository is not responding"""
    pass

def send_mail(sync_type="Repo"):
    """ Send email summary """
    body = dumpEMAIL_LOG()
    if body:
        print((_("+++ sending log as an email +++")))
        host_label = idn_puny_to_unicode(os.uname()[1])
        headers = {
            'Subject': _("%s sync. report from %s") % (sync_type, host_label),
        }
        comp = CFG.getComponent()
        initCFG('web')
        sndr = "root@%s" % host_label
        if CFG.default_mail_from:
            sndr = CFG.default_mail_from
        rhnMail.send(headers, body, sender=sndr)
        initCFG(comp)
    else:
        print((_("+++ email requested, but there is nothing to send +++")))


class KSDirParser:
    file_blacklist = ["release-notes/"]

    def __init__(self):
        self.dir_content = []

    def get_content(self):
        return self.dir_content


class KSDirHtmlParser(KSDirParser):
    def __init__(self, plug, dir_name):
        KSDirParser.__init__(self)

        dir_html = plug.get_file(dir_name)
        if dir_html is None:
            return

        for s in (m.group(1) for m in re.finditer(r'(?i)<a href="(.+?)"', dir_html.decode())):
            if not (re.match(r'/', s) or re.search(r'\?', s) or re.search(r'\.\.', s) or re.match(r'[a-zA-Z]+:', s) or
                    re.search(r'\.rpm$', s)):
                if re.search(r'/$', s):
                    file_type = 'DIR'
                else:
                    file_type = 'FILE'

                if s not in (self.file_blacklist):
                    self.dir_content.append({'name': s, 'type': file_type})


class KSDirLocalParser(KSDirParser):
    def __init__(self, base_dir, dir_name):
        KSDirParser.__init__(self)
        dir_path = os.path.join(base_dir, dir_name)
        for dir_item in os.listdir(dir_path):
            if not dir_item.endswith(".rpm"):
                dir_item_path = os.path.join(dir_path, dir_item)
                if os.path.isdir(dir_item_path):
                    file_type = 'DIR'
                    dir_item = "%s/" % dir_item
                else:
                    file_type = 'FILE'
                if dir_item not in self.file_blacklist:
                    self.dir_content.append({'name': dir_item, 'type': file_type})


class TreeInfoError(Exception):
    pass


class TreeInfoParser(object):
    def __init__(self, filename):
        self.parser = configparser.RawConfigParser()
        # do not lowercase
        self.parser.optionxform = str
        fp = open(filename)
        try:
            try:
                self.parser.readfp(fp)
            except configparser.ParsingError:
                raise TreeInfoError("Could not parse treeinfo file!")
        finally:
            if fp is not None:
                fp.close()

    def get_images(self):
        files = []
        for section_name in self.parser.sections():
            if section_name.startswith('images-') or section_name == 'stage2':
                for item in self.parser.items(section_name):
                    files.append(item[1])
        return files

    def get_family(self):
        for section_name in self.parser.sections():
            if section_name == 'general':
                for item in self.parser.items(section_name):
                    if item[0] == 'family':
                        return item[1]

    def get_major_version(self):
        for section_name in self.parser.sections():
            if section_name == 'general':
                for item in self.parser.items(section_name):
                    if item[0] == 'version':
                        return item[1].split('.')[0]

    def get_package_dir(self):
        for section_name in self.parser.sections():
            if section_name == 'general':
                for item in self.parser.items(section_name):
                    if item[0] == 'packagedir':
                        return item[1]

    def get_addons(self):
        addons_dirs = []
        for section_name in self.parser.sections():
            # check by name
            if section_name.startswith('addon-'):
                for item in self.parser.items(section_name):
                    if item[0] == 'repository':
                        addons_dirs.append(item[1])
            # check by type
            else:
                repository = None
                repo_type = None
                for item in self.parser.items(section_name):
                    if item[0] == 'repository':
                        repository = item[1]
                    elif item[0] == 'type':
                        repo_type = item[1]

                if repo_type == 'addon' and repository is not None:
                    addons_dirs.append(repository)

        return addons_dirs


def set_filter_opt(option, opt_str, value, parser):
    # pylint: disable=W0613
    if opt_str in ['--include', '-i']:
        f_type = '+'
    else:
        f_type = '-'
    parser.values.filters.append((f_type, [v.strip() for v in value.split(',') if v.strip()]))


def getChannelRepo():

    initCFG('server.satellite')
    rhnSQL.initDB()
    items = {}
    sql = """
           select s.source_url, c.label
             from rhnChannel c
        left join rhnChannelContentSource cs on cs.channel_id=c.id
        left join rhnContentSource s on s.id = cs.source_id
            where s.source_url is not null
               or c.org_id is null
           """
    h = rhnSQL.prepare(sql)
    h.execute()
    while 1:
        row = h.fetchone_dict()
        if not row:
            break
        if not row['label'] in items:
            items[row['label']] = []
        if row['source_url']:
            items[row['label']] += [row['source_url']]

    return items


def getParentsChilds(b_only_custom=False):

    initCFG('server.satellite')
    rhnSQL.initDB()

    sql = """
        select c1.label, c2.label parent_channel, c1.id
        from rhnChannel c1 left outer join rhnChannel c2 on c1.parent_channel = c2.id
        order by c2.label desc, c1.label asc
    """
    h = rhnSQL.prepare(sql)
    h.execute()
    d_parents = {}
    while 1:
        row = h.fetchone_dict()
        if not row:
            break
        if not b_only_custom or rhnChannel.isCustomChannel(row['id']):
            parent_channel = row['parent_channel']
            if not parent_channel:
                d_parents[row['label']] = []
            else:
                # If the parent is not a custom channel treat the child like
                # it's a parent for our purposes
                if parent_channel not in d_parents:
                    d_parents[row['label']] = []
                else:
                    d_parents[parent_channel].append(row['label'])

    return d_parents


def getCustomChannels():

    # with SUSE we sync also Vendor channels with reposync
    # change parameter to False to get not only Custom Channels
    d_parents = getParentsChilds(False)
    l_custom_ch = []

    for ch in d_parents:
        l_custom_ch += [ch] + d_parents[ch]

    return l_custom_ch


def write_ssl_set_cache(ca_cert, client_cert, client_key):
    """Write one SSL set into cache directory and return path to files."""
    def create_dir_tree(path):
        try:
            os.makedirs(path, int('0750', 8))
        except OSError:
            exc = sys.exc_info()[1]
            if exc.errno == errno.EEXIST and os.path.isdir(path):
                pass
            else:
                raise

    filenames = {}
    for cert in (ca_cert, client_cert, client_key):
        (name, pem, org) = cert
        filenames[cert] = None
        if name is not None and pem is not None:
            if not org:
                org = "NULL"
            else:
                org = str(org)
            ssldir = os.path.join(CACHE_DIR, '.ssl-certs', org)
            cert_file = os.path.join(ssldir, "%s.pem" % re.sub(r'[^a-zA-Z0-9_-]', '_', name))
            if not os.path.exists(cert_file):
                create_dir_tree(ssldir)
                f = open(cert_file, "wb")
                f.write(pem)
                f.close()
            filenames[cert] = cert_file

    return filenames[ca_cert], filenames[client_cert], filenames[client_key]


def clear_ssl_cache():
    ssldir = os.path.join(CACHE_DIR, '.ssl-certs')
    shutil.rmtree(ssldir, True)


def get_single_ssl_set(keys, check_dates=False):
    """Picks one of available SSL sets for given repository."""
    if check_dates:
        for ssl_set in keys:
            if verify_certificate_dates(str(ssl_set['ca_cert'])) and \
                (not ssl_set['client_cert'] or
                 verify_certificate_dates(str(ssl_set['client_cert']))):
                return ssl_set
    # Get first
    else:
        return keys[0]
    return None


class RepoSync(object):

    def __init__(self, channel_label, repo_type=None, url=None, fail=False,
                 filters=None, no_errata=False, sync_kickstart=False, latest=False,
                 metadata_only=False, strict=0, excluded_urls=None, no_packages=False,
                 log_dir="reposync", log_level=None, force_kickstart=False, force_all_errata=False,
                 check_ssl_dates=False, force_null_org_content=False, show_packages_only=False,
                 noninteractive=False, deep_verify=False):
        self.regen = False
        self.fail = fail
        self.filters = filters or []
        self.no_packages = no_packages
        self.no_errata = no_errata
        self.sync_kickstart = sync_kickstart
        self.force_all_errata = force_all_errata
        self.force_kickstart = force_kickstart
        self.latest = latest
        self.metadata_only = metadata_only
        self.ks_tree_type = 'externally-managed'
        self.interactive = not noninteractive
        self.deep_verify = deep_verify
        self.error_messages = []
        self.available_packages = {}
        self.ks_install_type = None
        self.show_packages_only = show_packages_only
        self.regenerate_bootstrap_repo = False

        initCFG('server.susemanager')
        rhnSQL.initDB()

        # setup logging
        log_filename = channel_label + '.log'
        log_path = default_log_location + log_dir + '/' + log_filename
        if log_level is None:
            log_level = 0
        CFG.set('DEBUG', log_level)
        rhnLog.initLOG(log_path, log_level)
        # os.fchown isn't in 2.4 :/
        if isSUSE():
            os.system("chgrp www " + log_path)
        else:
            os.system("chgrp apache " + log_path)

        log2disk(0, "Command: %s" % str(sys.argv))
        log2disk(0, "Sync of channel started.")

        self.channel_label = channel_label
        self.channel = self.load_channel()
        if not self.channel:
            log(0, "Channel %s does not exist." % channel_label)
            sys.exit(1)

        if not self.channel['org_id'] or force_null_org_content:
            self.org_id = None
        else:
            self.org_id = int(self.channel['org_id'])

        if not url:
            # TODO:need to look at user security across orgs
            h = rhnSQL.prepare(
                """
                select s.id, s.source_url, s.metadata_signed, s.label as repo_label, cst.label as repo_type_label
                from rhnContentSource s,
                     rhnChannelContentSource cs,
                     rhnContentSourceType cst
                where s.id = cs.source_id
                  and cst.id = s.type_id
                  and cs.channel_id = :channel_id""")
            h.execute(channel_id=int(self.channel['id']))
            sources = h.fetchall_dict()
            self.urls = []
            if excluded_urls is None:
                excluded_urls = []
            if sources:
                self.urls = self._format_sources(sources, excluded_urls, repo_type)
            else:
                # generate empty metadata and quit
                taskomatic.add_to_repodata_queue_for_channel_package_subscription(
                    [channel_label], [], "server.app.yumreposync")
                rhnSQL.commit()
                log2(0, 0, "Channel has no URL associated", stream=sys.stderr)
                if not self.org_id:
                    # RES base vendor channels do not have a URL. This is not an error
                    sys.exit(0)
                sys.exit(1)
        else:
            if repo_type:
                repo_type_label = repo_type
            else:
                repo_type_label = 'yum'
            self.urls = [{'id': None, 'source_url': url, 'metadata_signed' : 'N', 'repo_label': None, 'repo_type': repo_type_label}]

        if not self.urls:
            log2(0, 0, "Channel %s has no URL associated" % channel_label, stream=sys.stderr)

        self.repo_plugin = None
        self.strict = strict
        self.all_packages = set()
        self.all_errata = set()
        self.check_ssl_dates = check_ssl_dates
        # Init cache for computed checksums to not compute it on each reposync run again
        #self.checksum_cache = rhnCache.get(checksum_cache_filename)
        #if self.checksum_cache is None:
        #    self.checksum_cache = {}
        self.arches = self.get_compatible_arches(int(self.channel['id']))
        self.import_batch_size = default_import_batch_size

    def set_import_batch_size(self, batch_size):
        self.import_batch_size = int(batch_size)

    def set_urls_prefix(self, prefix):
        """If there are relative urls in DB, set their real location in runtime"""
        for index, url in enumerate(self.urls):
            # Make list, add prefix, make tuple and save
            url = list(url)
            url[1] = "%s%s" % (prefix, url[1])
            url = tuple(url)
            self.urls[index] = url

    def sync(self, update_repodata=True):
        """Trigger a reposync"""
        failed_packages = 0
        sync_error = 0
        repo_checksum_type = 'sha1'
        start_time = datetime.now()
        for data in self.urls:
            data['source_url'] = self.set_repo_credentials(data)
            insecure = False
            if data['metadata_signed'] == 'N':
                insecure = True

            plugin = None
            repo_type = data['repo_type']

            for url in data['source_url']:
                try:
                    if '://' not in url:
                        raise Exception("Unknown protocol in repo URL: %s" % url)

                    # If the repository uses a uln:// URL, switch to the ULN plugin, overriding the command-line
                    if url.startswith("uln://"):
                        repo_type = "uln"

                    is_non_local_repo = (url.find("file:/") < 0)
                    self.repo_plugin = self.load_plugin(repo_type)

                    if data['repo_label']:
                        repo_name = data['repo_label']
                    else:
                        # use modified relative_url as name of repo plugin, because
                        # it used as name of cache directory as well
                        relative_url = '_'.join(url.split('://')[1].split('/')[1:])
                        repo_name = relative_url.replace("?", "_").replace("&", "_").replace("=", "_")

                    ca_cert_file = client_cert_file = client_key_file = repo_id = None

                    if data['id'] is not None:
                        h = rhnSQL.execute("""
                        select k1.description as ca_cert_name, k1.key as ca_cert, k1.org_id as ca_cert_org,
                               k2.description as client_cert_name, k2.key as client_cert, k2.org_id as client_cert_org,
                               k3.description as client_key_name, k3.key as client_key, k3.org_id as client_key_org
                        from rhncontentsource cs inner join
                             rhncontentsourcessl csssl on cs.id = csssl.content_source_id inner join
                             rhncryptokey k1 on csssl.ssl_ca_cert_id = k1.id left outer join
                             rhncryptokey k2 on csssl.ssl_client_cert_id = k2.id left outer join
                             rhncryptokey k3 on csssl.ssl_client_key_id = k3.id
                        where cs.id = :repo_id
                        """, repo_id=int(data['id']))
                        keys = []
                        while True:
                            row = h.fetchone_dict()
                            if row is None:
                                break
                            for col in ['ca_cert', 'client_cert', 'client_key']:
                                row[col] = rhnSQL.read_lob(row[col])
                            keys.append(row)
                        if keys:
                            ssl_set = get_single_ssl_set(keys, check_dates=self.check_ssl_dates)
                            if ssl_set:
                                (ca_cert_file, client_cert_file, client_key_file) = write_ssl_set_cache(
                                    (ssl_set['ca_cert_name'], ssl_set['ca_cert'], ssl_set['ca_cert_org']),
                                    (ssl_set['client_cert_name'], ssl_set['client_cert'], ssl_set['client_cert_org']),
                                    (ssl_set['client_key_name'], ssl_set['client_key'], ssl_set['client_key_org']))
                            else:
                                raise ValueError("No valid SSL certificates were found for repository.")

                    try:
                        plugin = self.repo_plugin(url, repo_name, insecure, self.interactive,
                                                  org=str(self.org_id or ''),
                                                  channel_label=self.channel_label,
                                                  ca_cert_file=ca_cert_file,
                                                  client_cert_file=client_cert_file,
                                                  client_key_file=client_key_file)
                    except repo.GeneralRepoException as exc:
                        log(0, "Plugin error: {}".format(exc))
                        sync_error = -1
                    except Exception as exc:
                        log(0, "Unhandled error occurred: {}".format(exc))
                        raise

                    if self.show_packages_only:
                        self.show_packages(plugin, repo_id)
                    elif plugin is not None:
                        if update_repodata:
                            plugin.clear_cache()

                        # update the checksum type of channels with org_id NULL
                        # this fetch also the normal xml primary file
                        repo_checksum_type = plugin.get_md_checksum_type()

                        if not self.no_packages:
                            self.import_groups(plugin)
                            if repo_type == "yum":
                                self.import_modules(plugin)
                            ret = self.import_packages(plugin, data['id'], url, is_non_local_repo)
                            failed_packages += ret

                        if not self.no_errata:
                            self.import_updates(plugin)

                        self.import_mediaproducts(plugin)

                        # only for repos obtained from the DB
                        if self.sync_kickstart and data['repo_label']:
                            try:
                                self.import_kickstart(plugin, data['repo_label'], is_non_local_repo)
                            except:
                                rhnSQL.rollback()
                                raise
                        self.import_products(plugin)
                        self.import_susedata(plugin)

                except rhnSQL.SQLError as e:
                    log(0, "SQLError: %s" % e)
                    raise
                except ChannelTimeoutException as e:
                    log(0, e)
                    self.sendErrorMail(str(e))
                    sync_error = -1
                except ChannelException as e:
                    log(0, "ChannelException: %s" % e)
                    self.sendErrorMail("ChannelException: %s" % str(e))
                    sync_error = -1
                except yum_src.RepoMDError as e:
                    if "primary not available" in str(e):
                        taskomatic.add_to_repodata_queue_for_channel_package_subscription(
                            [self.channel_label], [], "server.app.yumreposync")
                        rhnSQL.commit()
                        log(0, "Repository has no packages. (%s)" % e)
                        sync_error = -1
                    else:
                        log(0, "RepoMDError: %s" % e)
                        self.sendErrorMail("RepoMDError: %s" % e)
                        sync_error = -1
                except:
                    log(0, "Unexpected error: %s" % sys.exc_info()[0])
                    log(0, "%s" % traceback.format_exc())
                    self.sendErrorMail(fetchTraceback())
                    sync_error = -1

        # In strict mode unlink all packages from channel which are not synced from current repositories
        if self.strict and sync_error == 0:
            if not self.no_packages:
                channel_packages = rhnSQL.fetchall_dict("""
                    select p.id, ct.label as checksum_type, c.checksum
                    from rhnChannelPackage cp,
                         rhnPackage p,
                         rhnChecksumType ct,
                         rhnChecksum c
                    where cp.channel_id = :channel_id
                      and cp.package_id = p.id
                      and p.checksum_id = c.id
                      and c.checksum_type_id = ct.id
                    """, channel_id=int(self.channel['id'])) or []
                for package in channel_packages:
                    if (package['checksum_type'], package['checksum']) not in self.all_packages:
                        self.disassociate_package(package['checksum_type'], package['checksum'])
                        self.regen = True

            # For custom channels unlink also errata
            if not self.no_errata and self.channel['org_id']:
                channel_errata = self.list_errata()
                for erratum in channel_errata:
                    if erratum not in self.all_errata:
                        self.disassociate_erratum(erratum)
                        self.regen = True

        # Update cache with package checksums
        #rhnCache.set(checksum_cache_filename, self.checksum_cache)
        self.updateChannelChecksumType(repo_checksum_type)
        rhnSQL.commit()
        if self.regen:
            taskomatic.add_to_repodata_queue_for_channel_package_subscription(
                [self.channel_label], [], "server.app.yumreposync")
            taskomatic.add_to_erratacache_queue(self.channel_label)
        self.update_date()
        rhnSQL.commit()
        if CFG.AUTO_GENERATE_BOOTSTRAP_REPO and self.regenerate_bootstrap_repo:
            log(0, '  Regenerating bootstrap repositories.')
            subprocess.call(["/usr/sbin/mgr-create-bootstrap-repo", "--auto"])

        # update permissions
        fileutils.createPath(os.path.join(CFG.MOUNT_POINT, 'rhn'))  # if the directory exists update ownership only
        for root, dirs, files in os.walk(os.path.join(CFG.MOUNT_POINT, 'rhn')):
            for d in dirs:
                fileutils.setPermsPath(os.path.join(root, d), group='www')
            for f in files:
                fileutils.setPermsPath(os.path.join(root, f), group='www')
        elapsed_time = datetime.now() - start_time
        if self.error_messages:
            self.sendErrorMail("Repo Sync Errors: %s" % '\n'.join(self.error_messages))
            sync_error = -1
        if sync_error == 0 and failed_packages == 0:
            log(0, "Sync completed.")
        # if there is no global problems, but some packages weren't synced
        if sync_error == 0 and failed_packages > 0:
            sync_error = failed_packages
        return elapsed_time, sync_error

    def set_ks_tree_type(self, tree_type='externally-managed'):
        self.ks_tree_type = tree_type

    def set_ks_install_type(self, install_type='generic_rpm'):
        self.ks_install_type = install_type

    def update_date(self):
        """ Updates the last sync time"""
        h = rhnSQL.prepare("""update rhnChannel set LAST_SYNCED = current_timestamp
                             where label = :channel""")
        h.execute(channel=self.channel['label'])

    def load_plugin(self, repo_type):
        """Try to import the repository plugin required to sync the repository

        :repo_type: type of the repository; only 'yum' is currently supported

        """
        name = repo_type + "_src"
        mod = __import__('spacewalk.satellite_tools.repo_plugins', globals(), locals(), [name])
        try:
            submod = getattr(mod, name)
        except AttributeError:
            log2(0, 0, "Repository type %s is not supported. "
                       "Could not import "
                       "spacewalk.satellite_tools.repo_plugins.%s."
                       % (repo_type, name), stream=sys.stderr)
            sys.exit(1)
        return getattr(submod, "ContentSource")

    def import_updates(self, plug):
        (notices_type, notices) = plug.get_updates()
        log(0, '')
        log(0, "  Patches in repo: %s." % len(notices))
        if notices:
            processed_updates_count = 0
            if notices_type == 'updateinfo':
                processed_updates_count = self.upload_updates(notices)
            elif notices_type == 'patches':
                processed_updates_count = self.upload_patches(notices)

            if processed_updates_count:
                # some errata could get retracted and this needs to be reflected in the newest package cache
                log(3, "Updating channel newest cache for channel ID %s." % self.channel['id'])
                refresh_newest_package = rhnSQL.Procedure("rhn_channel.refresh_newest_package")
                refresh_newest_package(self.channel['id'], 'backend.importPatches')

    @staticmethod
    def _get_decompressed_file_checksum(abspath, hashtype):
        with fileutils.decompress_open(abspath) as src, tempfile.TemporaryFile('w') as tmp:
            shutil.copyfileobj(src, tmp)
            tmp.flush()
            return getFileChecksum(hashtype, fd=tmp.fileno())

    def copy_metadata_file(self, plug, filename, comps_type, relative_dir):
        old_checksum = None
        db_timestamp = datetime.fromtimestamp(0.0, utc)
        basename = os.path.basename(filename)
        log(0, '')
        log(0, "  Importing %s file %s." % (comps_type, basename))
        relativedir = os.path.join(relative_dir, self.channel_label)
        absdir = os.path.join(CFG.MOUNT_POINT, relativedir)
        if not os.path.exists(absdir):
            os.makedirs(absdir)
        compressed_suffixes = ['.gz', '.bz', '.xz']
        if comps_type == 'comps' and not re.match('comps.xml(' + "|".join(compressed_suffixes) + ')*', basename):
            log(0, "  Renaming non-standard filename %s to %s." % (basename, 'comps' + basename[basename.find('.'):]))
            basename = 'comps' + basename[basename.find('.'):]
        elif comps_type == 'modules' and re.match('modules.yaml(' + "|".join(compressed_suffixes) + ')*', basename):
            # decompress only for getting the checksum
            checksum = self._get_decompressed_file_checksum(filename, 'sha256')
            basename = checksum + "-" + basename
            log(0, "  Including the checksum in the modules file name: %s" % basename)

        relativepath = os.path.join(relativedir, basename)
        abspath = os.path.join(absdir, basename)
        for suffix in compressed_suffixes:
            if basename.endswith(suffix):
                abspath = abspath.rstrip(suffix)
                relativepath = relativepath.rstrip(suffix)

        h = rhnSQL.prepare("""select relative_filename, last_modified
                                from rhnChannelComps
                               where channel_id = :cid
                                 and comps_type_id = (select id from rhnCompsType where label = :ctype)""")
        if h.execute(cid=self.channel['id'], ctype=comps_type):
            (db_filename, db_timestamp) = h.fetchone()
            comps_path = os.path.join(CFG.MOUNT_POINT, db_filename)
            if os.path.isfile(comps_path):
                old_checksum = getFileChecksum('sha256', comps_path)

        src = fileutils.decompress_open(filename)
        dst = open(abspath, "w")
        shutil.copyfileobj(src, dst)
        dst.close()
        src.close()
        if old_checksum and old_checksum != getFileChecksum('sha256', abspath):
            self.regen = True
        log(0, "*** NOTE: Importing {1} file for the channel '{0}'. Previous {1} will be discarded.".format(self.channel['label'], comps_type))

        repoDataKey = 'group' if comps_type == 'comps' else comps_type
        file_timestamp = os.path.getmtime(filename)
        last_modified = datetime.fromtimestamp(float(file_timestamp), utc)


        if db_timestamp >= last_modified:
            # already have newer data, skip updating
            return abspath

        # update or insert
        hu = rhnSQL.prepare("""update rhnChannelComps
                                  set relative_filename = :relpath,
                                      modified = current_timestamp,
                                      last_modified = :last_modified
                                where channel_id = :cid
                                  and comps_type_id = (select id from rhnCompsType where label = :ctype)""")
        hu.execute(cid=self.channel['id'], relpath=relativepath, ctype=comps_type,
                   last_modified=last_modified)

        hi = rhnSQL.prepare("""insert into rhnChannelComps
                              (id, channel_id, relative_filename, last_modified, comps_type_id)
                              (select sequence_nextval('rhn_channelcomps_id_seq'),
                                      :cid,
                                      :relpath,
                                      :last_modified,
                              (select id from rhnCompsType where label = :ctype)
                                 from dual
                                where not exists (select 1 from rhnChannelComps
                                    where channel_id = :cid
                                    and comps_type_id = (select id from rhnCompsType where label = :ctype)))""")
        hi.execute(cid=self.channel['id'], relpath=relativepath, ctype=comps_type,
                   last_modified=last_modified)
        return abspath

    def import_groups(self, plug):
        groupsfile = plug.get_groups()
        if groupsfile:
            abspath = self.copy_metadata_file(plug, groupsfile, 'comps', relative_comps_dir)
            plug.groupsfile = abspath

    def import_modules(self, plug):
        modulesfile = plug.get_modules()
        if modulesfile:
            self.copy_metadata_file(plug, modulesfile, 'modules', relative_modules_dir)

    def import_mediaproducts(self, plug):
        mediaproducts = plug.get_mediaproducts()
        if mediaproducts:
            self.copy_metadata_file(plug, mediaproducts, 'mediaproducts', relative_mediaproducts_dir)

    def _populate_erratum(self, notice):
        patch_name = self._patch_naming(notice)
        existing_errata = self.get_errata(patch_name)
        if existing_errata and not self._is_old_suse_style(notice):
            if int(existing_errata['advisory_rel']) < int(notice['version']):
                # A disaster happens
                #
                # re-releasing an errata with a higher release number
                # only happens in case of a disaster.
                # This should force mirrored repos to remove the old
                # errata and take care that the new one is the only
                # available.
                # This mean a hard overwrite
                self._delete_invalid_errata(existing_errata['id'])
            elif int(existing_errata['advisory_rel']) > int(notice['version']):
                # the existing errata has a higher release than the now
                # parsed one. We need to skip the current errata
                return None
            # else: release match, so we update the errata


        if notice['updated']:
            updated_date = self._to_db_date(notice['updated'])
        else:
            updated_date = self._to_db_date(notice['issued'])
        if (existing_errata and
            existing_errata['advisory_status'] == notice['status'] and
            not self.errata_needs_update(existing_errata, notice['version'], updated_date)):
               return None

        log(0, "Add Patch %s" % patch_name)
        e = importLib.Erratum()
        e['errata_from']   = notice['from']
        e['advisory'] = e['advisory_name'] = patch_name
        e['advisory_rel']  = notice['version']
        e['advisory_type'] = errata_typemap.get(notice['type'], 'Product Enhancement Advisory')
        e['advisory_status'] = notice['status']
        e['product']       = notice['release'] or 'Unknown'
        e['description']   = notice['description'] or 'not set'
        e['synopsis']      = notice['title'] or notice['update_id']
        if notice['severity']:
            e['security_impact'] = notice['severity']
            if notice['type'] == 'security' and not e['synopsis'].startswith(notice['severity'] + ': '):
                e['synopsis'] = notice['severity'] + ': ' + e['synopsis']
        else:
            # 'severity' not available in older yum versions
            # set default to Low to get a correct currency rating
            e['security_impact'] = "Low"
        e['topic']         = ' '
        e['solution']      = ' '
        e['issue_date']    = self._to_db_date(notice['issued'])
        e['update_date']   = updated_date
        e['org_id'] = self.org_id
        e['notes']         = ''
        e['refers_to']     = ''
        e['channels']      = [{'label':self.channel_label}]
        e['packages']      = []
        e['files']         = []
        if existing_errata:
            e['channels'].extend(existing_errata['channels'])
            e['packages'] = existing_errata['packages']

        npkgs = [pkg for c in notice['pkglist'] for pkg in c['packages']]

        e['packages'] = self._updates_process_packages(npkgs, e['advisory_name'], e['packages'])
        # One or more package references could not be found in the Database.
        # To not provide incomplete patches we skip this update
        if not e['packages'] and not npkgs:
            log(2, "Advisory %s has empty package list." % e['advisory_name'])
        elif not e['packages']:
            log(2, "Advisory %s skipped because of empty package list (filtered)."
                % e['advisory_name'])
            return None

        e['keywords'] = self._update_keywords(notice)
        e['bugs'] = self._update_bugs(notice)
        e['cve'] = self._update_cve(notice)
        e['locally_modified'] = None
        return e

    def upload_updates(self, notices):
        batch = []
        processed_updates = 0
        backend = SQLBackend()
        channel_advisory_names = self.list_errata()
        for notice in notices:
            notice = self.fix_notice(notice)

            # Save advisory names from all repositories
            self.all_errata.add(notice['update_id'])

            # pylint: disable=W0703
            try:
                erratum = self._populate_erratum(notice)
                if not erratum:
                    continue
                batch.append(erratum)

                if self.deep_verify:
                    # import step by step
                    importer = ErrataImport(batch, backend)
                    importer.run()
                    batch = []
                processed_updates += 1
            except Exception:
                e = "Skipped %s - %s" % (notice['update_id'], sys.exc_info()[1])
                log2(1, 1, e, stream=sys.stderr)
                if self.fail:
                    raise

        if batch:
            log(0, "    Syncing %s new patch(es) to channel." % len(batch))
            importer = ErrataImport(batch, backend)
            importer.run()
            self.regen = True
        elif notices:
            log(0, "    No new patch to sync.")
        return processed_updates

    def import_packages(self, plug, source_id, url, is_non_local_repo):
        failed_packages = 0
        if (not self.filters) and source_id:
            h = rhnSQL.prepare("""
                    select flag, filter
                      from rhnContentSourceFilter
                     where source_id = :source_id
                     order by sort_order """)
            h.execute(source_id=source_id)
            filter_data = h.fetchall_dict() or []
            filters = [(row['flag'], [v.strip() for v in row['filter'].split(',') if v.strip()])
                       for row in filter_data]
        else:
            filters = self.filters

        skipped = 0
        saveurl = suseLib.URL(url)
        if saveurl.password:
            saveurl.password = "*******"

        packages = []
        try:
            packages = plug.list_packages(filters, self.latest)
        except repo.GeneralRepoException as exc:
            log(0, "Repository failure: {}".format(exc))
        except Exception as exc:
            log(0, "Unhandled failure occurred while listing repository packages: {}".format(exc))

        to_disassociate = {}
        to_process = []
        num_passed = len(packages)
        log(0, "Repo URL: %s" % saveurl.getURL())
        log(0, "    Packages in repo:             %5d" % plug.num_packages)
        if plug.num_excluded:
            log(0, "    Packages passed filter rules: %5d" % num_passed)
        channel_id = int(self.channel['id'])

        for pack in packages:
            if pack.arch not in self.arches:
                # skip packages with incompatible architecture
                skipped += 1
                continue
            epoch = ''
            if pack.epoch and pack.epoch != '0':
                epoch = "%s:" % pack.epoch
            ident = "%s-%s%s-%s.%s" % (pack.name, epoch, pack.version, pack.release, pack.arch)
            self.available_packages[ident] = 1

            packs = rhnPackage.get_info_for_package(
                [pack.name, pack.version, pack.release, pack.epoch, pack.arch],
                channel_id, self.org_id)
            db_pack = None
            for p in packs:
                if p['checksum'] == pack.checksum:
                    db_pack = p
                    break

            to_download = True
            to_link = True
            # Package exists in DB
            if db_pack:
                # Path in filesystem is defined
                if db_pack['path']:
                    pack.path = os.path.join(CFG.MOUNT_POINT, db_pack['path'])
                else:
                    pack.path = ""

                # if the package exists, but under a different org_id we have to download it again
                if self.metadata_only or self.match_package_checksum(pack, db_pack):
                    # package is already on disk or not required
                    to_download = False
                    if db_pack['channel_id'] == channel_id:
                        # package is already in the channel
                        to_link = False

                    # just pass data from DB, they will be used if there is no RPM available
                    pack.set_checksum(db_pack['checksum_type'], db_pack['checksum'])
                    pack.epoch = db_pack['epoch']

                    self.all_packages.add((pack.checksum_type, pack.checksum))

                elif db_pack['channel_id'] == channel_id:
                    # different package with SAME NVREA
                    # disassociate from channel if it doesn't match package which will be downloaded
                    to_disassociate[(db_pack['checksum_type'], db_pack['checksum'])] = True

            if to_download or to_link:
                if pack.arch in ['src', 'nosrc']:
                    to_link = False
                to_process.append((pack, to_download, to_link))

        num_to_process = len(to_process)
        if num_to_process == 0:
            log(0, "    No new packages to sync.")
            if plug.num_packages == 0:
                self.regen = True
            # If we are just appending, we can exit
            if not self.strict:
                return failed_packages
        else:
            log(0, "    Packages already synced:      %5d" % (num_passed - num_to_process))
            log(0, "    Packages to sync:             %5d" % num_to_process)

        downloader = ThreadedDownloader()
        to_download_count = 0
        for what in to_process:
            pack, to_download, to_link = what
            if to_download:
                target_file = os.path.join(plug.repo.pkgdir, pack.checksum, os.path.basename(pack.unique_id.relativepath))
                pack.path = target_file
                params = {}
                checksum_type = pack.checksum_type
                checksum = pack.checksum
                plug.set_download_parameters(params, pack.unique_id.relativepath, target_file,
                                             checksum_type=checksum_type, checksum_value=checksum)
                downloader.add(params)
                to_download_count += 1
        if num_to_process != 0:
            log(0, "    New packages to download:     %5d" % to_download_count)
            log2(0, 0, "  Downloading packages:")
        logger = TextLogger(None, to_download_count)
        downloader.set_log_obj(logger)
        downloader.run()

        log2background(0, "Importing packages started.")
        log(0, '')
        log(0, '  Importing packages to DB:')

        twisted_batch_indexes = self.twisted_batch_indexes(len(to_process), self.import_batch_size)
        to_process_batches = [[to_process[twisted_index] for twisted_index in twisted_batch] for twisted_batch in twisted_batch_indexes]

        affected_channels = []
        with multiprocessing.Pool(processes=min(os.cpu_count() * 2, 32), maxtasksperchild=1) as pool:
            results = [pool.apply_async(self.import_package_batch, args=[to_process_batch, to_disassociate, is_non_local_repo, i, len(to_process_batches)])
                       for i, to_process_batch in enumerate(to_process_batches)]

            for i, result in enumerate(results):
                affected_channels_batch, failed_packages_batch, all_packages, processed_batch = result.get()
                affected_channels += affected_channels_batch
                failed_packages += failed_packages_batch
                self.all_packages.update(all_packages)
                for j, processed in enumerate(processed_batch):
                    to_process[twisted_batch_indexes[i][j]] = processed

        if affected_channels:
            errataCache.schedule_errata_cache_update(affected_channels)
        log2background(0, "Importing packages finished.")

        # Disassociate packages
        for (checksum_type, checksum) in to_disassociate:
            if to_disassociate[(checksum_type, checksum)]:
                self.disassociate_package(checksum_type, checksum)
        # Do not re-link if nothing was marked to link
        if any([to_link for (pack, to_download, to_link) in to_process]):
            log(0, '')
            log(0, "  Linking packages to the channel.")
            # Packages to append to channel
            import_batches = list(self.chunks(
                [self.associate_package(pack) for (pack, to_download, to_link) in to_process if to_link],
                1000))
            count = 0
            for import_batch in import_batches:
                backend = SQLBackend()
                caller = "server.app.yumreposync"
                importer = ChannelPackageSubscription(import_batch,
                                                      backend, caller=caller, repogen=False)
                importer.run()
                backend.commit()
                del importer.batch
                count += len(import_batch)
                log(0, "    {} packages linked".format(count))
            self.regen = True
            self.regenerate_bootstrap_repo = True
        self._normalize_orphan_vendor_packages()
        return failed_packages

    def twisted_batch_indexes(self, total_size, batch_size):
        """Assume a list of total_size elements, and consider the following two possible divisions of its elements: per "batch" or per "chunk".
        Batches are contiguous sub-lists of the original list with batch_size elements each (and there's batch_count=total_size/batch_size of them).
        Example with total_size = 12 and batch_size = 3, thus batch_count = 4:

        List:    [ 0,   1,   2,   3,   4,   5,   6,   7,   8,   9,  10,  11 ]
        Batches: [[0,   1,   2], [3,   4,   5], [6,   7,   8], [9,  10,  11]]

        Chunks are contiguous sub-lists as well, but have batch_count instead of batch_size elements each. Example:

        Chunks:  [[0,   1,   2,   3], [4,   5,   6,   7], [8,   9,  10,  11]]

        This function returns sub-lists of the same size of batches, each with elements sampled from every chunk. Example:

        Twisted: [[0,   4,   8], [1,   5,   9], [2,   6,  10], [3,   7,  11]]

        Intuitively, this rearranges elements across batches so that each batch contains a "sample" of elements from "all over" the original list -
        in particular, from every chunk.
        """
        # integer division rounded up
        batch_count = (total_size + batch_size - 1) // batch_size

        # compute element indexes in all batches
        batches = [[batch_size * batch_index + element_index for element_index in range(0, batch_size)] for batch_index
                   in range(0, batch_count)]

        # twist elements across batches. Specifically: the n-th element in a batch has to be picked from the n-th chunk
        twisted_batches = [[self.twisted_index(batches[i][j], batch_count, batch_size) for j in range(0, batch_size)] for i in
                           range(0, batch_count)]

        # discard elements greater than total_size (those were created because we rounded up earlier)
        return [[twisted_batches[i][j] for j in range(0, batch_size) if twisted_batches[i][j] < total_size] for i in
                  range(0, batch_count)]

    def twisted_index(self, i, batch_count, batch_size):
        batch_index = i // batch_size
        element_index = i % batch_size
        return batch_count * element_index + batch_index

    def import_package_batch(self, to_process, to_disassociate, is_non_local_repo, batch_index, batch_count):
        # Prepare SQL statements
        rhnSQL.closeDB(committing=False, closing=False)
        rhnSQL.initDB()
        h_delete_package_queue = rhnSQL.prepare("""delete from rhnPackageFileDeleteQueue where path = :path""")
        backend = SQLBackend()
        mpm_bin_batch = importLib.Collection()
        mpm_src_batch = importLib.Collection()
        affected_channels = []
        upload_caller = "server.app.uploadPackage"

        to_download_count = sum(p[1] for p in to_process)
        import_count = 0
        failed_packages = 0
        all_packages = set()

        for (index, what) in enumerate(to_process):
            pack, to_download, to_link = what
            if not to_download:
                continue
            import_count += 1
            stage_path = pack.path

            # pylint: disable=W0703
            try:
                # check if package was downloaded
                if not os.path.exists(stage_path):
                    raise Exception

                pack.load_checksum_from_header()

                if not self.metadata_only:
                    rel_package_path = rhnPackageUpload.relative_path_from_header(pack.a_pkg.header, self.org_id,
                                                                                  pack.a_pkg.checksum_type,
                                                                                  pack.a_pkg.checksum)
                else:
                    rel_package_path = None

                if rel_package_path:
                    # Save uploaded package to cache with repository checksum type

                    # First write the package to the filesystem to final location
                    # pylint: disable=W0703
                    try:
                        importLib.move_package(pack.a_pkg.payload_stream.name, basedir=CFG.MOUNT_POINT,
                                               relpath=rel_package_path,
                                               checksum_type=pack.a_pkg.checksum_type,
                                               checksum=pack.a_pkg.checksum, force=1)
                    except OSError:
                        e = sys.exc_info()[1]
                        raise_with_tb(rhnFault(50, "Package upload failed: %s" % e), sys.exc_info()[2])
                    except importLib.FileConflictError:
                        raise_with_tb(rhnFault(50, "File already exists"), sys.exc_info()[2])
                    except Exception:
                        raise_with_tb(rhnFault(50, "File error"), sys.exc_info()[2])

                    # Remove any pending scheduled file deletion for this package
                    h_delete_package_queue.execute(path=rel_package_path)

                pkg = mpmSource.create_package(pack.a_pkg.header, size=pack.a_pkg.payload_size,
                                               checksum_type=pack.a_pkg.checksum_type, checksum=pack.a_pkg.checksum,
                                               relpath=rel_package_path, org_id=self.org_id,
                                               header_start=pack.a_pkg.header_start,
                                               header_end=pack.a_pkg.header_end, channels=[])

                if pack.a_pkg.header.is_source:
                    mpm_src_batch.append(pkg)
                else:
                    mpm_bin_batch.append(pkg)
                # we do not want to keep a whole 'a_pkg' object for every package in memory,
                # because we need only checksum. see BZ 1397417
                pack.checksum = pack.a_pkg.checksum
                pack.checksum_type = pack.a_pkg.checksum_type
                pack.epoch = pack.a_pkg.header['epoch']
                pack.a_pkg = None

                all_packages.add((pack.checksum_type, pack.checksum))

                # Downloaded pkg checksum matches with pkg already in channel, no need to disassociate from channel
                if (pack.checksum_type, pack.checksum) in to_disassociate:
                    to_disassociate[(pack.checksum_type, pack.checksum)] = False
                    # Set to_link to False, no need to link again
                    to_process[index] = (pack, True, False)

            except (KeyboardInterrupt, rhnSQL.SQLError):
                raise
            except Exception:
                failed_packages += 1
                e = str(sys.exc_info()[1])
                if e:
                    log2(0, 1, e, stream=sys.stderr)
                if self.fail:
                    raise
                to_process[index] = (pack, False, False)
            finally:
                try:
                    # importing packages by batch or if the current packages is the last
                    if mpm_bin_batch and (import_count == to_download_count
                                          or len(mpm_bin_batch) % self.import_batch_size == 0):
                        importer = packageImport.PackageImport(mpm_bin_batch, backend, caller=upload_caller)
                        importer.setUploadForce(1)
                        importer.run()
                        rhnSQL.commit()
                        del importer.batch
                        affected_channels.extend(importer.affected_channels)
                        del mpm_bin_batch
                        mpm_bin_batch = importLib.Collection()

                    if mpm_src_batch and (import_count == to_download_count
                                          or len(mpm_src_batch) % self.import_batch_size == 0):
                        src_importer = packageImport.SourcePackageImport(mpm_src_batch, backend, caller=upload_caller)
                        src_importer.setUploadForce(1)
                        src_importer.run()
                        rhnSQL.commit()
                        del mpm_src_batch
                        mpm_src_batch = importLib.Collection()

                except (KeyboardInterrupt, rhnSQL.SQLError):
                    raise
                except Exception:
                    e = str(sys.exc_info()[1])
                    if e:
                        log2(0, 1, e, stream=sys.stderr)
                    if self.fail:
                        raise
                finally:
                    if is_non_local_repo and stage_path:
                        if os.path.exists(stage_path):
                            os.remove(stage_path)
                        if os.path.exists(os.path.dirname(stage_path)):
                            # remove the checksum directory if empty
                            try:
                                os.rmdir(os.path.dirname(stage_path))
                            except OSError as exc:
                                # skip if directory is not empty or has been removed by
                                # some of the other threads in the meanwhile
                                if exc.errno in (errno.ENOTEMPTY, errno.ENOENT):
                                    pass
                                else:
                                    raise exc
            pack.clear_header()

        rhnSQL.closeDB()
        log(0, "  Package batch #{} of {} completed...".format(batch_index + 1, batch_count))
        return affected_channels, failed_packages, all_packages, to_process

    def show_packages(self, plug, source_id):

        if (not self.filters) and source_id:
            h = rhnSQL.prepare("""
                    select flag, filter
                      from rhnContentSourceFilter
                     where source_id = :source_id
                     order by sort_order """)
            h.execute(source_id=source_id)
            filter_data = h.fetchall_dict() or []
            filters = [(row['flag'], re.split(r'[,\s]+', row['filter']))
                       for row in filter_data]
        else:
            filters = self.filters

        packages = plug.raw_list_packages(filters)

        num_passed = len(packages)
        log(0, "    Packages in repo:             %5d" % plug.num_packages)
        if plug.num_excluded:
            log(0, "    Packages passed filter rules: %5d" % num_passed)

        log(0, "    Package marked with '+' will be downloaded next channel synchronization")
        log(0, "    Package marked with '.' is already presented on filesystem")

        channel_id = int(self.channel['id'])

        for pack in packages:

            packs = rhnPackage.get_info_for_package(
                [pack.name, pack.version, pack.release, pack.epoch, pack.arch],
                channel_id, self.org_id)
            db_pack = None
            for p in packs:
                if p['checksum'] == pack.checksum:
                    db_pack = p
                    break

            pack_status = " + "  # need to be downloaded by default
            pack_full_name = "%-60s\t" % (pack.name + "-" + pack.version + "-" + pack.release + "." +
                                          pack.arch + ".rpm")
            pack_size = "%11d bytes\t" % pack.packagesize

            if pack.checksum_type == 'sha512':
                pack_hash_info = "%-140s" % (pack.checksum_type + ' ' + pack.checksum)
            else:
                pack_hash_info = "%-80s " % (pack.checksum_type + ' ' + pack.checksum)

            # Package exists in DB
            if db_pack:
                # Path in filesystem is defined
                if db_pack['path']:
                    pack.path = os.path.join(CFG.MOUNT_POINT, db_pack['path'])
                else:
                    pack.path = ""

                if self.match_package_checksum(pack, db_pack):
                    # package is already on disk
                    pack_status = ' . '

            log(0, "    " + pack_status + pack_full_name + pack_size + pack_hash_info)

    def _normalize_orphan_vendor_packages(self):
        # Sometimes reposync disassociates vendor packages (org_id = 0) from
        # channels.
        # These orphans are then hard to work with in spacewalk (nobody has
        # permissions to view/delete them). We workaround this issue by
        # assigning such packages to the default organization, so that they can
        # be deleted using the existing orphan-deleting procedure.
        h = rhnSQL.prepare("""
            UPDATE rhnPackage
            SET org_id = 1
            WHERE id IN (SELECT p.id
                         FROM rhnPackage p LEFT JOIN rhnChannelPackage cp
                         ON p.id = cp.package_id
                         WHERE p.org_id IS NULL and cp.channel_id IS NULL)
        """)
        affected_row_count = h.execute()
        if (affected_row_count > 0):
            log(
                0,
                "Transferred {} orphaned vendor packages to the default organization"
                .format(affected_row_count)
            )

    def match_package_checksum(self, md_pack, db_pack):
        """compare package checksum"""

        abspath = md_pack.path
        if (self.deep_verify or
            md_pack.checksum_type != db_pack['checksum_type'] or
            md_pack.checksum != db_pack['checksum']):

            if (os.path.exists(abspath) and
                getFileChecksum(md_pack.checksum_type, filename=abspath) == md_pack.checksum):

                return True
            else:
                return False
        elif os.path.exists(abspath):
            return True
        return False

    def associate_package(self, pack):
        package = {}
        package['name'] = pack.name
        package['version'] = pack.version
        package['release'] = pack.release
        package['arch'] = pack.arch
        if pack.a_pkg:
            package['checksum'] = pack.a_pkg.checksum
            package['checksum_type'] = pack.a_pkg.checksum_type
            # use epoch from file header because createrepo puts epoch="0" to
            # primary.xml even for packages with epoch=''
            package['epoch'] = pack.a_pkg.header['epoch']
        else:
            # RPM not available but package metadata are in DB, reuse these values
            package['checksum'] = pack.checksum
            package['checksum_type'] = pack.checksum_type
            package['epoch'] = pack.epoch
        package['channels'] = [{'label': self.channel_label,
                                'id': self.channel['id']}]
        package['org_id'] = self.org_id

        return importLib.IncompletePackage().populate(package)

    def disassociate_package(self, checksum_type, checksum):
        log(3, "Disassociating package with checksum: %s (%s)" % (checksum, checksum_type))
        h = rhnSQL.prepare("""
            delete from rhnChannelPackage cp
             where cp.channel_id = :channel_id
               and cp.package_id in (select p.id
                                       from rhnPackage p
                                       join rhnChecksumView c
                                         on p.checksum_id = c.id
                                      where c.checksum = :checksum
                                        and c.checksum_type = :checksum_type
                                    )
        """)
        h.execute(channel_id=int(self.channel['id']),
                  checksum_type=checksum_type, checksum=checksum)

    def disassociate_erratum(self, advisory_name):
        log(3, "Disassociating erratum: %s" % advisory_name)
        h = rhnSQL.prepare("""
                    delete from rhnChannelErrata ce
                     where ce.channel_id = :channel_id
                       and ce.errata_id in (select e.id
                                              from rhnErrata e
                                            where e.advisory_name = :advisory_name
                                           )
                        """)
        h.execute(channel_id=self.channel['id'], advisory_name=advisory_name)

    def load_channel(self):
        return rhnChannel.channel_info(self.channel_label)

    @staticmethod
    def _to_db_date(date):
        if not date:
            ret = datetime.utcnow()
        elif date.isdigit():
            try:
                ret = datetime.fromtimestamp(float(date))
            except ValueError:
                # For the case when date is specified in milliseconds
                # fromtimestamp raises the ValueError as the year is out of range
                ret = datetime.fromtimestamp(float(date)/1000)
        else:
            ret = parse_date(date)
            try:
                ret = ret.astimezone(tzutc())
            except ValueError as e:
                log(2, e)
        return ret.isoformat(' ')[:19]  # return 1st 19 letters of date, therefore preventing ORA-01830 caused by fractions of seconds

    @staticmethod
    def fix_notice(notice):
        if "." in notice['version']:
            new_version = 0
            for n in notice['version'].split('.'):
                new_version = (new_version + int(n)) * 100
            notice['version'] = new_version / 100
        if RepoSync._is_old_suse_style(notice):
            # old suse style; we need to append the version to id
            # to get a seperate patch for every issue
            notice['update_id'] = "%s-%s" % (notice['update_id'], notice['version'])
        return notice

    def get_errata(self, update_id):
        """ Return an Errata dict

        search in the database for the given advisory and
        return a dict with important values.
        If the advisory was not found it returns None

        :update_id - the advisory (name)
        """
        h = rhnSQL.prepare("""
            select e.id, e.advisory,
                   e.advisory_name, e.advisory_rel, e.advisory_status,
                   TO_CHAR(e.update_date, 'YYYY-MM-DD HH24:MI:SS') as update_date
              from rhnerrata e
             where e.advisory = :name
              and (e.org_id = :org_id or (e.org_id is null and :org_id is null))
        """)
        h.execute(name=update_id, org_id=self.org_id)
        ret = h.fetchone_dict()
        if not ret:
            return None

        h = rhnSQL.prepare("""
            select distinct c.label
              from rhnchannelerrata ce
              join rhnchannel c on c.id = ce.channel_id
             where ce.errata_id = :eid
        """)
        h.execute(eid=ret['id'])
        ret['channels'] = h.fetchall_dict() or []
        ret['packages'] = []

        h = rhnSQL.prepare("""
            select p.id as package_id,
                   pn.name,
                   pevr.epoch,
                   pevr.version,
                   pevr.release,
                   pa.label as arch,
                   p.org_id,
                   cv.checksum,
                   cv.checksum_type
              from rhnerratapackage ep
              join rhnpackage p on p.id = ep.package_id
              join rhnpackagename pn on pn.id = p.name_id
              join rhnpackageevr pevr on pevr.id = p.evr_id
              join rhnpackagearch pa on pa.id = p.package_arch_id
              join rhnchecksumview cv on cv.id = p.checksum_id
             where ep.errata_id = :eid
        """)
        h.execute(eid=ret['id'])
        packages = h.fetchall_dict() or []
        for pkg in packages:
            ipackage = importLib.IncompletePackage().populate(pkg)
            ipackage['epoch'] = pkg.get('epoch', '')

            ipackage['checksums'] = {ipackage['checksum_type']: ipackage['checksum']}
            ret['packages'].append(ipackage)

        return ret

    def list_errata(self):
        """List advisory names present in channel"""
        h = rhnSQL.prepare("""select e.advisory_name
            from rhnChannelErrata ce
            inner join rhnErrata e on e.id = ce.errata_id
            where ce.channel_id = :cid
        """)
        h.execute(cid=self.channel['id'])
        advisories = [row['advisory_name'] for row in h.fetchall_dict() or []]
        return advisories

    def import_kickstart(self, plug, repo_label, is_non_local_repo):
        log(0, '')
        log(0, '  Importing kickstarts.')
        ks_path = 'rhn/kickstart/'
        ks_tree_label = re.sub(r'[^-_0-9A-Za-z@.]', '', repo_label.replace(' ', '_'))
        if len(ks_tree_label) < 4:
            ks_tree_label += "_repo"

        # construct ks_path and check we already have this KS tree synced
        id_request = """
                select id
                from rhnKickstartableTree
                where channel_id = :channel_id and label = :label
                """

        if self.org_id:
            ks_path += str(self.org_id) + '/' + ks_tree_label
            # Trees synced from external repositories are expected to have full path it database
            db_path = os.path.join(CFG.MOUNT_POINT, ks_path)
            row = rhnSQL.fetchone_dict(id_request + " and org_id = :org_id", channel_id=self.channel['id'],
                                       label=ks_tree_label, org_id=self.org_id)
        else:
            ks_path += ks_tree_label
            db_path = ks_path
            row = rhnSQL.fetchone_dict(id_request + " and org_id is NULL", channel_id=self.channel['id'],
                                       label=ks_tree_label)

        treeinfo_path = ['treeinfo', '.treeinfo']
        treeinfo_parser = None
        for path in treeinfo_path:
            log(1, "Trying " + path)
            treeinfo = plug.get_file(path, os.path.join(plug.repo.basecachedir, plug.name))
            if treeinfo:
                try:
                    treeinfo_parser = TreeInfoParser(treeinfo)
                    break
                except TreeInfoError:
                    pass

        if not treeinfo_parser:
            log(0, "    Kickstartable tree not detected (no valid treeinfo file)")
            return

        if self.ks_install_type is None:
            family = treeinfo_parser.get_family()
            if family == 'Fedora':
                self.ks_install_type = 'fedora18'
            elif family == 'CentOS':
                self.ks_install_type = 'rhel_' + treeinfo_parser.get_major_version()
            else:
                self.ks_install_type = 'generic_rpm'

        fileutils.createPath(os.path.join(CFG.MOUNT_POINT, ks_path))
        # Make sure images are included
        to_download = set()
        for repo_path in treeinfo_parser.get_images():
            local_path = os.path.join(CFG.MOUNT_POINT, ks_path, repo_path)
            # TODO: better check
            if not os.path.exists(local_path) or self.force_kickstart:
                to_download.add(repo_path)

        if row:
            log(0, "    Kickstartable tree %s already synced. Updating content..." % ks_tree_label)
            ks_id = row['id']
        else:
            row = rhnSQL.fetchone_dict("""
                select sequence_nextval('rhn_kstree_id_seq') as id from dual
                """)
            ks_id = row['id']

            rhnSQL.execute("""
                       insert into rhnKickstartableTree (id, org_id, label, base_path, channel_id, kstree_type,
                                                         install_type, last_modified, created, modified)
                       values (:id, :org_id, :label, :base_path, :channel_id,
                                 ( select id from rhnKSTreeType where label = :ks_tree_type),
                                 ( select id from rhnKSInstallType where label = :ks_install_type),
                                 current_timestamp, current_timestamp, current_timestamp)""", id=ks_id,
                           org_id=self.org_id, label=ks_tree_label, base_path=db_path,
                           channel_id=self.channel['id'], ks_tree_type=self.ks_tree_type,
                           ks_install_type=self.ks_install_type)

            log(0, "    Added new kickstartable tree %s. Downloading content..." % ks_tree_label)

        insert_h = rhnSQL.prepare("""
                insert into rhnKSTreeFile (kstree_id, relative_filename, checksum_id, file_size, last_modified, created,
                 modified) values (:id, :path, lookup_checksum('sha256', :checksum), :st_size,
                 epoch_seconds_to_timestamp_tz(:st_time), current_timestamp, current_timestamp)
        """)

        delete_h = rhnSQL.prepare("""
                delete from rhnKSTreeFile where kstree_id = :id and relative_filename = :path
        """)

        # Downloading/Updating content of KS Tree
        dirs_queue = ['']
        log(0, "    Gathering all files in kickstart repository...")
        while dirs_queue:
            cur_dir_name = dirs_queue.pop(0)
            if is_non_local_repo:
                parser = KSDirHtmlParser(plug, cur_dir_name)
            else:
                parser = KSDirLocalParser(plug.repo.urls[0].replace("file://", ""), cur_dir_name)
            for ks_file in parser.get_content():
                repo_path = cur_dir_name + ks_file['name']
                if ks_file['type'] == 'DIR':
                    dirs_queue.append(repo_path)
                    continue

                if not os.path.exists(os.path.join(CFG.MOUNT_POINT, ks_path, repo_path)) or self.force_kickstart:
                    to_download.add(repo_path)

        for addon_dir in treeinfo_parser.get_addons():
            repomd_url = str(addon_dir + '/repodata/repomd.xml')
            repomd_file = plug.get_file(repomd_url, os.path.join(plug.repo.basecachedir, plug.name))

            if repomd_file:
                # find location of primary.xml
                repomd_xml = minidom.parse(repomd_file)
                for i in repomd_xml.getElementsByTagName('data'):
                    if i.attributes['type'].value == 'primary':
                        primary_url = str(addon_dir + '/' +
                                          i.getElementsByTagName('location')[0].attributes['href'].value)
                        break

                primary_zip = plug.get_file(primary_url, os.path.join(plug.repo.basecachedir, plug.name))
                if primary_zip:
                    primary_xml = gzip.open(primary_zip, 'r')
                    xmldoc = minidom.parse(primary_xml)
                    for i in xmldoc.getElementsByTagName('package'):
                        package = i.getElementsByTagName('location')[0].attributes['href'].value
                        repo_path = str(os.path.normpath(os.path.join(addon_dir, package)))
                        if not os.path.exists(os.path.join(CFG.MOUNT_POINT, ks_path, repo_path)) \
                                or self.force_kickstart:
                            to_download.add(repo_path)

        if to_download:
            log(0, "    Downloading %d kickstart files." % len(to_download))
            progress_bar = ProgressBarLogger("              Downloading kickstarts:", len(to_download))
            downloader = ThreadedDownloader(force=self.force_kickstart)
            for item in to_download:
                params = {}
                plug.set_download_parameters(params, item, os.path.join(CFG.MOUNT_POINT, ks_path, item))
                downloader.add(params)
            downloader.set_log_obj(progress_bar)
            downloader.run()
            log2background(0, "Download finished.")
            for item in to_download:
                st = os.stat(os.path.join(CFG.MOUNT_POINT, ks_path, item))
                # update entity about current file in a database
                delete_h.execute(id=ks_id, path=item)
                insert_h.execute(id=ks_id, path=item,
                                 checksum=getFileChecksum('sha256', os.path.join(CFG.MOUNT_POINT, ks_path, item)),
                                 st_size=st.st_size, st_time=st.st_mtime)
        else:
            log(0, "No new kickstart files to download.")

        rhnSQL.commit()


##############################################################################
### SUSE only code                                                         ###
##############################################################################

    def _format_sources(self, sources, excluded_urls, repo_type):
        ret = []
        for item in sources:
            if item['source_url'] not in excluded_urls:
                if repo_type:
                    repo_type_label = repo_type
                else:
                    repo_type_label = item['repo_type_label']

                ret.append(
                    dict(
                        id=item['id'],
                        source_url=[item['source_url']],
                        metadata_signed=item['metadata_signed'],
                        repo_label=item['repo_label'],
                        repo_type=repo_type_label
                    )
                )
        return ret

    def set_repo_credentials(self, url_dict):
        """Set the credentials in the url_dict['source_url'] url list from the config file"""
        return [self._url_with_repo_credentials(url) for url in url_dict['source_url']]

    def _url_with_repo_credentials(self, url_in):
        """Adds the credentials to the given url from the config file

        We look for the `credentials` query argument and use its value
        as the location of the username and password in the current
        configuration file.

        Examples:
        ?credentials=mirrcred - read 'mirrcred_user' and 'mirrcred_pass'
        ?credeentials=mirrcred_5 - read 'mirrcred_user_5' and 'mirrcred_pass_5'

        """
        url = suseLib.URL(url_in)
        creds = url.get_query_param('credentials')
        if creds:
            creds_no = 0
            try:
                creds_no = int(creds.split("_")[1])
            except (ValueError, IndexError):
                log2(0, 0,
                    "Could not figure out which credentials to use "
                    "for this URL: {0}".format(url.getURL(), stream=sys.stderr)
                )
                sys.exit(1)
            # SCC - read credentials from DB
            h = rhnSQL.prepare("SELECT username, password FROM suseCredentials WHERE id = :id")
            h.execute(id=creds_no)
            credentials = h.fetchone_dict() or None
            if not credentials:
                log2(0, 0, "Could not figure out which credentials to use "
                           "for this URL: "+url.getURL(), stream=sys.stderr)
                sys.exit(1)
            url.username = credentials['username']
            url.password = base64.decodestring(credentials['password'].encode()).decode()
            # remove query parameter from url
            url.query = ""
        return url.getURL()

    def upload_patches(self, notices):
        """Insert the information from patches into the database.
        Returns the number of processed patches (i.e. skipped patches and patches
        not needing updates are excluded.).

        :arg notices: a list of ElementTree roots from individual patch files

        """
        backend = SQLBackend()
        skipped_updates = 0
        processed_updates = 0
        batch = []

        for notice in notices:
            e = importLib.Erratum()

            version = notice.find(YUM+'version').get('ver')
            category = notice.findtext(PATCH+'category')

            e['advisory']     = e['advisory_name'] = self._patch_naming(notice)
            e['errata_from']  = 'maint-coord@suse.de'
            e['advisory_rel'] = version
            e['advisory_type'] = errata_typemap.get(category,
                                             'Product Enhancement Advisory')
            e['advisory_status'] = 'final'

            existing_errata = self.get_errata(e['advisory'])

            if (existing_errata and
                not self.errata_needs_update(existing_errata, version,
                                             self._to_db_date(notice.get('timestamp')))):
                continue
            log(0, "Add Patch %s" % e['advisory'])

            # product name
            query = rhnSQL.prepare("""
                SELECT p.friendly_name
                  FROM suseproducts p
                  JOIN suseproductchannel pc on p.id = pc.product_id
                 WHERE pc.channel_id = :channel_id
                """)
            query.execute(channel_id=int(self.channel['id']))
            try:
                e['product'] = query.fetchone()[0]
            except TypeError:
                e['product'] = 'unknown product'

            for desc_lang in notice.findall(PATCH+'description'):
                if desc_lang.get('lang') == 'en':
                    e['description'] = desc_lang.text or 'not set'
                    break
            for sum_lang in notice.findall(PATCH+'summary'):
                if sum_lang.get('lang') == 'en':
                    e['synopsis'] = sum_lang.text or 'not set'
                    break
            e['topic']       = ' '
            e['solution']    = ' '
            e['issue_date']  = self._to_db_date(notice.get('timestamp'))
            e['update_date'] = e['issue_date']
            e['notes']       = ''
            e['org_id']      = self.org_id
            e['refers_to']   = ''
            e['channels']    = [{'label': self.channel_label}]
            e['packages']    = []
            e['files']       = []
            if existing_errata:
                e['channels'].extend(existing_errata['channels'])
                e['packages'] = existing_errata['packages']

            atoms = notice.find(PATCH+'atoms')
            packages = atoms.findall(YUM+'package')

            e['packages'] = self._patches_process_packages(packages,
                                                           e['advisory_name'],
                                                           e['packages'])
            # an update can't have zero packages, so we skip this update
            if not e['packages']:
                skipped_updates = skipped_updates + 1
                continue

            e['keywords'] = []
            if notice.find(PATCH+'reboot-needed') is not None:
                kw = importLib.Keyword()
                kw.populate({'keyword': 'reboot_suggested'})
                e['keywords'].append(kw)
            if notice.find(PATCH+'package-manager') is not None:
                kw = importLib.Keyword()
                kw.populate({'keyword': 'restart_suggested'})
                e['keywords'].append(kw)

            e['bugs'] = self.find_bugs(e['description'])
            e['cve'] = self.find_cves(e['description'])
            # set severity to Low to get a currency rating
            e['security_impact'] = "Low"

            e['locally_modified'] = None
            batch.append(e)
            if self.deep_verify:
                # import step by step
                importer = ErrataImport(batch, backend)
                importer.run()
                batch = []
            processed_updates += 1

        if skipped_updates > 0:
            log(0, "%d patches skipped because of incomplete package list." % skipped_updates)
        if len(batch) > 0:
            importer = ErrataImport(batch, backend)
            importer.run()
        self.regen = True
        return processed_updates

    def errata_needs_update(self, existing_errata, new_errata_version, new_errata_changedate):
        """check, if the errata in the DB needs an update

           new_errata_version: integer version number
           new_errata_changedate: date of the last change in DB format "%Y-%m-%d %H:%M:%S"
        """
        if self.force_all_errata:
            # with force_all_errata always re-import all errata
            return True

        if int(existing_errata['advisory_rel']) < int(new_errata_version):
            log(2, "Patch need update: higher version")
            return True
        newdate = datetime.strptime(new_errata_changedate,
                                    "%Y-%m-%d %H:%M:%S")
        olddate = datetime.strptime(existing_errata['update_date'],
                                    "%Y-%m-%d %H:%M:%S")
        if newdate > olddate:
            log(2, "Patch need update: newer update date - %s > %s" % (newdate, olddate))
            return True
        for c in existing_errata['channels']:
            if self.channel_label == c['label']:
                log(2, "No update needed")
                return False
        log(2, "Patch need update: channel not yet part of the patch")
        return True

    def _updates_process_packages(self, packages, advisory_name,
                                  existing_packages):
        """Check if the packages are in the database

        Go through the list of 'packages' and for each of them
        check to see if it is already present in the database. If it is,
        return a list of IncompletePackage objects, otherwise return an
        empty list.

        :packages: a list of dicts that represent packages (updateinfo style)
        :advisory_name: the name of the current erratum
        :existing_packages: list of already existing packages for this errata

        """
        erratum_packages = existing_packages
        for pkg in packages:
            if pkg['arch'] in ['src', 'nosrc']:
                continue
            param_dict = {
                'name': pkg['name'],
                'version': pkg['version'],
                'release': pkg['release'],
                'arch': pkg['arch'],
                'epoch': pkg['epoch'],
                'channel_id': int(self.channel['id'])}
            if param_dict['arch'] not in self.arches:
                continue
            ret = self._process_package(param_dict, advisory_name)
            if not ret:
                if 'epoch' not in param_dict:
                    param_dict['epoch'] = ''
                else:
                    param_dict['epoch'] = '%s:' % param_dict['epoch']
                if "%(name)s-%(epoch)s%(version)s-%(release)s.%(arch)s" % param_dict not in self.available_packages:
                    continue
                # This package could not be found in the database
                # but should be available in this repo
                # so we skip the broken patch.
                errmsg = ("The package "
                          "%(name)s-%(epoch)s%(version)s-%(release)s.%(arch)s "
                          "which is referenced by patch %(patch)s was not found "
                          "in the database. This patch has been skipped." % dict(
                              patch=advisory_name,
                              **param_dict))
                log(0, errmsg)
                self.error_messages.append(errmsg)
                return []

            # add new packages to the errata
            found = False
            for oldpkg in erratum_packages:
                if oldpkg['package_id'] == ret['package_id']:
                    found = True
            if not found:
                erratum_packages.append(ret)
        return erratum_packages

    def _patches_process_packages(self, packages, advisory_name, existing_packages):
        """Check if the packages are in the database

        Go through the list of 'packages' and for each of them
        check to see if it is already present in the database. If it is,
        return a list of IncompletePackage objects, otherwise return an
        empty list.

        :packages: a list of dicts that represent packages (patch style)
        :advisory_name: the name of the current erratum
        :existing_packages: list of already existing packages for this errata

        """
        erratum_packages = existing_packages
        for pkg in packages:
            nevr = pkg.find(YUM+'format').find(RPM+'requires').find(RPM+'entry')
            param_dict = {
                'name': nevr.get('name'),
                'version': nevr.get('ver'),
                'release': nevr.get('rel'),
                'epoch': nevr.get('epoch'),
                'arch': pkg.findtext(YUM+'arch'),
                'channel_id': int(self.channel['id'])
            }
            if param_dict['arch'] not in self.arches:
                continue
            ret = self._process_package(param_dict, advisory_name)
            if not ret:
                if 'epoch' not in param_dict:
                    param_dict['epoch'] = ''
                else:
                    param_dict['epoch'] = '%s:' % param_dict['epoch']
                if "%(name)s-%(epoch)s%(version)s-%(release)s.%(arch)s" % param_dict not in self.available_packages:
                    continue
                # This package could not be found in the database
                # but should be available in this repo
                # so we skip the broken patch.
                errmsg = ("The package "
                          "%(name)s-%(epoch)s%(version)s-%(release)s.%(arch)s "
                          "which is referenced by patch %(patch)s was not found "
                          "in the database. This patch has been skipped." % dict(
                              patch=advisory_name,
                              **param_dict))
                log(0, errmsg)
                self.error_messages.append(errmsg)
                return []

            # add new packages to the errata
            found = False
            for oldpkg in erratum_packages:
                if oldpkg['package_id'] == ret['package_id']:
                    found = True
            if not found:
                erratum_packages.append(ret)
        return erratum_packages

    def import_products(self, repo):
        products = repo.get_products()
        for product in products:
            query = rhnSQL.prepare("""
                select spf.id
                  from suseProductFile spf
                  join rhnpackageevr pe on pe.id = spf.evr_id
                  join rhnpackagearch pa on pa.id = spf.package_arch_id
                 where spf.name = :name
                   and spf.evr_id = LOOKUP_EVR(:epoch, :version, :release, 'rpm')
                   and spf.package_arch_id = LOOKUP_PACKAGE_ARCH(:arch)
                   and spf.vendor = :vendor
                   and spf.summary = :summary
                   and spf.description = :description
            """)
            query.execute(**product)
            row = query.fetchone_dict()
            if not row or 'id' not in row:
                get_id_q = rhnSQL.prepare("""SELECT sequence_nextval('suse_prod_file_id_seq') as id FROM dual""")
                get_id_q.execute()
                row = get_id_q.fetchone_dict() or {}
                if not row or 'id' not in row:
                    print("no id for sequence suse_prod_file_id_seq")
                    continue

                h = rhnSQL.prepare("""
                    insert into suseProductFile
                        (id, name, evr_id, package_arch_id, vendor, summary, description)
                    VALUES (:id, :name, LOOKUP_EVR(:epoch, :version, :release, 'rpm'),
                            LOOKUP_PACKAGE_ARCH(:arch), :vendor, :summary, :description)
                """)
                h.execute(id=row['id'], **product)

            params = {
                'product_cap'   : "product(%s)" % product['name'],
                'cap_version'   : product['version'] + "-" + product['release'],
                'channel_id'    : int(self.channel['id'])
            }
            if self.org_id:
                org_statement = "and p.org_id = :channel_org"
                params['channel_org'] = self.org_id
            else:
                org_statement = "and p.org_id is NULL"

            query = rhnSQL.prepare("""
                select p.id
                  from rhnPackage p
                  join rhnPackageProvides pp on pp.package_id = p.id
                  join rhnPackageCapability pc on pc.id = pp.capability_id
                  join rhnChannelPackage cp on cp.package_id = p.id
                 where pc.name = :product_cap
                   and pc.version = :cap_version
                   and cp.channel_id = :channel_id
                   %s
            """ % org_statement)

            query.execute(**params)
            packrow = query.fetchone_dict()
            if not packrow or 'id' not in packrow:
                # package not in DB
                continue

            h = rhnSQL.prepare("""select 1 from susePackageProductFile where package_id = :paid and prodfile_id = :prid""")
            h.execute(paid=packrow['id'], prid=row['id'])
            ex = h.fetchone_dict() or None
            if not ex:
                h = rhnSQL.prepare("""insert into susePackageProductFile (package_id, prodfile_id)
                    VALUES (:package_id, :product_id)
                """)
                h.execute(package_id=packrow['id'], product_id=row['id'])
                self.regen = True

    def import_susedata(self, repo):
        kwcache = {}
        susedata = repo.get_susedata()
        for package in susedata:
            # susedata exists only for package type == rpm
            query = rhnSQL.prepare("""
                SELECT p.id
                  FROM rhnPackage p
                  JOIN rhnPackagename pn ON p.name_id = pn.id
                  JOIN rhnChecksumView c ON p.checksum_id = c.id
                  JOIN rhnChannelPackage cp ON p.id = cp.package_id
                 WHERE pn.name = :name
                   AND p.evr_id = LOOKUP_EVR(:epoch, :version, :release, 'rpm')
                   AND p.package_arch_id = LOOKUP_PACKAGE_ARCH(:arch)
                   AND cp.channel_id = :channel_id
                   AND c.checksum = :pkgid
                """)
            query.execute(name=package['name'], epoch=package['epoch'],
                          version=package['version'], release=package['release'],
                          arch=package['arch'], pkgid=package['pkgid'],
                          channel_id=int(self.channel['id']))
            row = query.fetchone_dict() or None
            if not row or 'id' not in row:
                # package not found in DB
                continue
            pkgid = int(row['id'])
            log(4, "import_susedata pkgid: %s channelId: %s" % (pkgid, int(self.channel['id'])))

            h = rhnSQL.prepare("""
                SELECT smk.id, smk.label
                  FROM suseMdData smd
                  JOIN suseMdKeyword smk ON smk.id = smd.keyword_id
                 WHERE smd.package_id = :package_id
                   AND smd.channel_id = :channel_id
            """)
            h.execute(package_id=pkgid, channel_id=int(self.channel['id']))
            ret = h.fetchall_dict() or {}
            pkgkws = {}
            for row in ret:
                log(4, "DB keyword: %s kid: %s" % (row['label'], row['id']))
                pkgkws[row['label']] = False
                kwcache[row['label']] = row['id']

            for keyword in package['keywords']:
                log(4, "Metadata keyword: %s" % keyword)
                if keyword not in kwcache:
                    kw = rhnSQL.prepare("""select LOOKUP_MD_KEYWORD(:label) id from dual""")
                    kw.execute(label=keyword)
                    kwid = kw.fetchone_dict()['id']
                    kwcache[keyword] = kwid

                if keyword in pkgkws:
                    pkgkws[keyword] = True
                else:
                    log(4, "Insert new keywordId: %s pkgId: %s channelId: %s" % (kwcache[keyword], pkgid, int(self.channel['id'])))
                    kadd = rhnSQL.prepare("""INSERT INTO suseMdData (package_id, channel_id, keyword_id)
                                              VALUES(:package_id, :channel_id, :keyword_id)""")
                    kadd.execute(package_id=pkgid, channel_id=int(self.channel['id']), keyword_id=kwcache[keyword])
                    self.regen = True

            if 'eula' in package:
                eula_id = suseEula.find_or_create_eula(package['eula'])
                rhnPackage.add_eula_to_package(
                  package_id=pkgid,
                  eula_id=eula_id
                )

            # delete all removed keywords
            for label in pkgkws:
                if not pkgkws[label]:
                    log(4, "Delete obsolete keywordId: %s pkgId: %s channelId: %s" % (kwcache[label], pkgid, int(self.channel['id'])))
                    kdel = rhnSQL.prepare("""DELETE FROM suseMdData WHERE package_id = :package_id
                                             AND channel_id = :channel_id AND keyword_id = :keyword_id""")
                    kdel.execute(package_id=pkgid, channel_id=int(self.channel['id']), keyword_id=kwcache[label])
                    self.regen = True

    def _patch_naming(self, notice):
        """Return the name of the patch according to our rules

        :notice: a notice/patch object (this could be a dictionary
        (new-style) or an ElementTree element (old code10 style))

        """
        try:
            version = int(notice.find(YUM+'version').get('ver'))
        except AttributeError:
            # normal yum updates (dicts)
            patch_name = notice['update_id']
        else:
            # code10 patches
            if version >= 1000:
                # old suse style patch naming
                patch_name = notice.get('patchid')
            else:
                # new suse style patch naming
                patch_name = notice.find(YUM+'name').text

        # remove the channel-specific prefix
        # this way we can merge patches from different channels like
        # SDK, HAE and SLES
        update_tag = self.channel['update_tag']
        if update_tag and patch_name.startswith(update_tag):
            patch_name = patch_name[len(update_tag)+1:] # +1 for the hyphen
        elif update_tag and update_tag in patch_name:
            # SLE12 has SUSE-<update-tag>-...
            patch_name = patch_name.replace('SUSE-' + update_tag , 'SUSE', 1)

        return patch_name

    def _process_package(self, param_dict, advisory_name):
        """Search for a package in the the database

        Search for the package specified by 'param_dict' to see if it is
        already present in the database. If it is, return a
        IncompletePackage objects, otherwise return None.

        :param_dict: dict that represent packages (nerva + channel_id)
        :advisory_name: the name of the current erratum

        """
        pkgepoch = param_dict['epoch']
        del param_dict['epoch']

        if not pkgepoch or pkgepoch == '0':
            epochStatement = "(pevr.epoch is NULL or pevr.epoch = '0')"
        else:
            epochStatement = "pevr.epoch = :epoch"
            param_dict['epoch'] = pkgepoch
        if self.org_id:
            param_dict['org_id'] = self.org_id
            orgidStatement = " = :org_id"
        else:
            orgidStatement = " is NULL"

        h = rhnSQL.prepare("""
            select p.id, c.checksum, c.checksum_type, pevr.epoch
              from rhnPackage p
              join rhnPackagename pn on p.name_id = pn.id
              join rhnpackageevr pevr on p.evr_id = pevr.id
              join rhnpackagearch pa on p.package_arch_id = pa.id
              join rhnArchType at on pa.arch_type_id = at.id
              join rhnChecksumView c on p.checksum_id = c.id
              join rhnChannelPackage cp on p.id = cp.package_id
             where pn.name = :name
               and p.org_id %s
               and pevr.version = :version
               and pevr.release = :release
               and pa.label = :arch
               and %s
               and at.label = 'rpm'
               and cp.channel_id = :channel_id
            """ % (orgidStatement, epochStatement))
        h.execute(**param_dict)
        cs = h.fetchone_dict()

        if not cs:
            return None

        package = importLib.IncompletePackage()
        for k in param_dict:
            if k not in ['epoch', 'channel_label', 'channel_id']:
                package[k] = param_dict[k]
        package['epoch'] = cs['epoch']
        package['org_id'] = self.org_id

        package['checksums'] = {cs['checksum_type'] : cs['checksum']}
        package['checksum_type'] = cs['checksum_type']
        package['checksum'] = cs['checksum']

        package['package_id'] = cs['id']
        return package

    def sendErrorMail(self, body):
        to = CFG.TRACEBACK_MAIL
        fr = to
        if isinstance(to, type([])):
            fr = to[0].strip()
            to = ', '.join([s.strip() for s in to])

        headers = {
            "Subject" : "SUSE Manager repository sync failed (%s)" % hostname,
            "From"    : "%s <%s>" % (hostname, fr),
            "To"      : to,
        }
        extra = "Syncing Channel '%s' failed:\n\n" % self.channel_label
        rhnMail.send(headers, extra + body)

    def updateChannelChecksumType(self, repo_checksum_type):
        """
        check, if the checksum_type of the channel matches the one of the repo
        if not, change the type of the channel
        """
        if repo_checksum_type is None:
            return

        if self.channel['org_id']:
            # custom channels are user managed.
            # Do not autochange this
            return

        h = rhnSQL.prepare("""SELECT ct.label
                                FROM rhnChannel c
                                JOIN rhnChecksumType ct ON c.checksum_type_id = ct.id
                               WHERE c.id = :cid""")
        h.execute(cid=self.channel['id'])
        d = h.fetchone_dict() or None
        if d and d['label'] == repo_checksum_type:
            # checksum_type is the same, no need to change anything
            return
        h = rhnSQL.prepare("""SELECT id FROM rhnChecksumType WHERE label = :clabel""")
        h.execute(clabel=repo_checksum_type)
        d = h.fetchone_dict() or None
        if not (d and d['id']):
            # unknown or invalid checksum_type
            # better not change the channel
            return
        # update the checksum_type
        h = rhnSQL.prepare("""UPDATE rhnChannel
                                 SET checksum_type_id = :ctid
                               WHERE id = :cid""")
        h.execute(ctid=d['id'], cid=self.channel['id'])

    @staticmethod
    def get_compatible_arches(channel_id):
        """Return a list of compatible package arch labels for this channel"""
        h = rhnSQL.prepare("""select pa.label
                              from rhnChannelPackageArchCompat cpac,
                              rhnChannel c,
                              rhnpackagearch pa
                              where c.id = :channel_id
                              and c.channel_arch_id = cpac.channel_arch_id
                              and cpac.package_arch_id = pa.id""")
        h.execute(channel_id=channel_id)
        arches = [k['label'] for k in  h.fetchall_dict()
                if CFG.SYNC_SOURCE_PACKAGES or k['label'] not in ['src', 'nosrc']]
        return arches

    @staticmethod
    def _update_keywords(notice):
        """Return a list of Keyword objects for the notice"""
        keywords = []
        if notice['reboot_suggested']:
            kw = importLib.Keyword()
            kw.populate({'keyword':'reboot_suggested'})
            keywords.append(kw)
        if notice['restart_suggested']:
            kw = importLib.Keyword()
            kw.populate({'keyword':'restart_suggested'})
            keywords.append(kw)
        return keywords

    @staticmethod
    def _update_bugs(notice):
        """Return a list of Bug objects from the notice's references"""
        bugs = {}
        if notice['references'] is None:
            return []
        for bz in notice['references']:
            if bz['type'] == 'bugzilla':
                # Fix: in case of non-integer id try to parse it from href
                if not bz['id'].isdigit():
                    log(2, "Bugzilla ID is wrong: {0}. Trying to parse ID from from URL".format(bz["id"]))
                    bz_id_match = re.search("/show_bug.cgi\?id=(\d+)", bz["href"])
                    if bz_id_match:
                        bz["id"] = bz_id_match.group(1)
                        log(2, "Bugzilla ID found: {0}".format(bz["id"]))
                    else:
                        log2(0, 0, "Unable to find Bugzilla ID for {0}. Omitting".format(bz["id"]), stream=sys.stderr)
                        continue
                if bz['id'] not in bugs:
                    bug = importLib.Bug()
                    bug.populate({'bug_id': bz['id'],
                                  'summary': bz['title'] or ("Bug %s" % bz['id']),
                                  'href': bz['href']})
                    bugs[bz['id']] = bug
        return list(bugs.values())

    @staticmethod
    def _update_cve(notice):
        """Return a list of unique ids from notice references of type 'cve'"""
        cves = []
        if notice['description'] is not None:
            # sometimes CVE numbers appear in the description, but not in
            # the reference list
            cves = RepoSync.find_cves(notice['description'])
        if notice['references'] is not None:
            cves.extend([cve['id'][:20] for cve in notice['references'] if cve['type'] == 'cve'])
        # remove duplicates
        cves = list(set(cves))

        return cves

    @staticmethod
    def _is_old_suse_style(notice):
        if((notice['from'] and "suse" in notice['from'].lower() and
            int(notice['version']) >= 1000) or
            (notice['update_id'][:4] in ('res5', 'res6') and int(notice['version']) > 6 ) or
            (notice['update_id'][:4] == 'res4')):
            # old style suse updateinfo starts with version >= 1000 or
            # have the res update_tag
            return True
        return False

    @staticmethod
    def find_bugs(text):
        """Find and return a list of Bug objects from the bug ids in the `text`
    
        Matches:
         - [#123123], (#123123)

        N.B. We assume that all the bugs are Novell Bugzilla bugs.

        """
        bug_numbers = set(re.findall('[\[\(]#(\d{6})[\]\)]', text))
        bugs = []
        for bug_number in bug_numbers:
            bug = importLib.Bug()
            bug.populate(
                {'bug_id': bug_number,
                 'summary': 'bug number %s' % bug_number,
                 'href':
                     'https://bugzilla.novell.com/show_bug.cgi?id=%s' % bug_number})
            bugs.append(bug)
        return bugs

    @staticmethod
    def find_cves(text):
        """Find and return a list of CVE ids

        Matches:
         - CVE-YEAR-NUMBER

         Beginning 2014, the NUMBER has no maximal length anymore.
         We limit the length at 20 chars, because of the DB column size
        """
        cves = list()
        cves.extend([cve[:20] for cve in set(re.findall('CVE-\d{4}-\d+', text))])
        return cves


    @staticmethod
    def _delete_invalid_errata(errata_id):
        """
        Remove the errata from all channels
        This should only be alled in case of a disaster
        """
        # first get a list of all channels where this errata exists
        h = rhnSQL.prepare("""
            SELECT channel_id
              FROM rhnChannelErrata
             WHERE errata_id = :errata_id
        """)
        h.execute(errata_id=errata_id)
        channels = [x['channel_id'] for x in h.fetchall_dict() or []]

        # delete channel from errata
        h = rhnSQL.prepare("""
            DELETE FROM rhnChannelErrata
             WHERE errata_id = :errata_id
        """)
        h.execute(errata_id=errata_id)

        # delete all packages from errata
        h = rhnSQL.prepare("""
            DELETE FROM rhnErrataPackage ep
             WHERE ep.errata_id = :errata_id
        """)
        h.execute(errata_id=errata_id)

        # delete files from errata
        h = rhnSQL.prepare("""
            DELETE FROM rhnErrataFile
             WHERE errata_id = :errata_id
        """)
        h.execute(errata_id=errata_id)

        # delete erratatmp
        h = rhnSQL.prepare("""
            DELETE FROM rhnErrataTmp
             WHERE id = :errata_id
        """)
        h.execute(errata_id=errata_id)

        # delete errata
        # removes also references from rhnErrataCloned
        # and rhnServerNeededCache
        h = rhnSQL.prepare("""
            DELETE FROM rhnErrata
             WHERE id = :errata_id
        """)
        h.execute(errata_id=errata_id)
        rhnSQL.commit()
        update_needed_cache = rhnSQL.Procedure("rhn_channel.update_needed_cache")

        for cid in channels:
            update_needed_cache(cid)
        rhnSQL.commit()

    @staticmethod
    def chunks(seq, n):
        return (seq[i:i+n] for i in range(0, len(seq), n))
   070701000000E0000081B40000000000000000000000016290A0C100001B0B000000000000000000000000000000000000003200000000spacewalk-backend/satellite_tools/req_channels.py #
# Copyright (c) 2008--2017 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#
#

from uyuni.common import usix


class RequestedChannels:

    """Bookkeeping of the state of various channels
    Argument to constructor is the list of requested channels
    """
    # Simplify the getters/setters/resetters
    __lists = [
        '_requested_imported',  # requested and previously imported
        '_requested_new',  # requested and NOT previously imported
        '_requested_channels',  # Union of the above two
        '_not_requested',  # not requested but available channels
        '_end_of_service',  # requested, once available, but no longer supported
        '_typos',  # requested, but probably a typo
    ]

    def __init__(self, requested=()):
        # All the requested channels
        self._requested = {}
        # All available channels
        self._available = {}
        # All imported channels
        self._imported = {}

        # These will be computed
        # We could have initialized them in a loop, but pychecker would
        # complain that the data member does not exist
        self._requested_imported = []
        self._requested_new = []
        self._requested_channels = []
        self._not_requested = []
        self._end_of_service = []
        self._typos = []

        for l in self.__lists:
            assert hasattr(self, l), "Class does not initialize %s" % l
            assert isinstance(getattr(self, l), usix.ListType)

        # Initialize the requested channels
        self.request(requested)

    def request(self, requested):
        assert isinstance(requested, usix.ListType)

        self._requested.clear()
        for c in requested:
            self._requested[c] = None
        return self

    def _add(self, name, channel):
        if name not in ['_available', '_imported']:
            raise AttributeError('add' + name)
        getattr(self, name)[channel] = None
        return self

    def _set(self, name, channel_list):
        if name not in ['_available', '_imported']:
            raise AttributeError('set' + name)
        assert isinstance(channel_list, usix.ListType)
        h = getattr(self, name)
        h.clear()
        for c in channel_list:
            h[c] = None
        return self

    def _reset(self, name):
        del getattr(self, name)[:]
        return self

    def _get(self, name):
        return getattr(self, name)

    def reset(self):
        self._available.clear()
        self._imported.clear()
        self._reset_computed()

    def _reset_computed(self):
        for name in self.__lists:
            del getattr(self, name)[:]
        return self

    def _print_values(self):
        for name in self.__lists:
            print(("Contents of %s: %s" % (name, getattr(self, name))))
        return self

    def compute(self):
        self._reset_computed()
        available = self._available.copy()
        imported = self._imported.copy()
        for c in self._requested:
            if c in self._available:
                del available[c]
                # Channel exists
                if c in self._imported:
                    del imported[c]
                    self._requested_imported.append(c)
                    continue
                self._requested_new.append(c)
                continue
            # Requested channel not available
            if c in self._imported:
                del imported[c]
                self._end_of_service.append(c)
                continue
            # Typo
            self._typos.append(c)

        for c in list(available.keys()):
            if c in imported:
                # Available, already imported
                del imported[c]
            # Available, not imported
            self._not_requested.append(c)

        # The rest are channels that were once imported, but now are
        # unavailable
        self._end_of_service.extend(list(imported.keys()))

        self._requested_channels.extend(self._requested_new)
        self._requested_channels.extend(self._requested_imported)

        # Sort the lists
        for name in self.__lists:
            getattr(self, name).sort()
        return self

    def __getattr__(self, name):
        if name.startswith('add'):
            return Method(name[3:], self._add)
        if name.startswith('get'):
            return Method(name[3:], self._get)
        if name.startswith('set'):
            return Method(name[3:], self._set)
        if name.startswith('reset'):
            return Method(name[5:], self._reset)
        raise AttributeError(name)


class Method:
    # pylint: disable=R0903

    def __init__(self, name, func):
        self._func = func
        self._name = name

    def __call__(self, *args, **kwargs):
        return self._func(self._name, *args, **kwargs)

# Test functions


def _verify_expectations(c, expectations):
    for k, expected in list(expectations.items()):
        method_name = 'get' + k
        val = getattr(c, method_name)()
        if val == expected:
            print(("ok: %s = %s" % (method_name, expected)))
        else:
            print(("FAILED: %s: expected %s, got %s" % (method_name, expected,
                                                       val)))


def test1(requested, available, imported, expectations):
    c = RequestedChannels(requested)
    # Available channels
    for av in available:
        c.add_available(av)
    # Already impoted
    for i in imported:
        c.add_imported(i)

    c.compute()
    _verify_expectations(c, expectations)


def test2(requested, available, imported, expectations):
    c = RequestedChannels(requested)
    # Available channels
    c.set_available(available)
    # Already impoted
    c.set_imported(imported)

    c.compute()
    _verify_expectations(c, expectations)


def test():
    requested = ['a', 'b', 'c', 'd']
    available = ['a', 'd', 'e', 'f']
    imported = ['d', 'e', 'h']
    expectations = {
        '_requested_imported': ['d'],
        '_requested_new': ['a'],
        '_not_requested': ['e', 'f'],
        '_end_of_service': ['h'],
        '_typos': ['b', 'c'],
        '_requested_channels': ['a', 'd'],
    }
    print("Running test1")
    test1(requested, available, imported, expectations)
    print("Running test2")
    test2(requested, available, imported, expectations)

if __name__ == '__main__':
    test()
 070701000000E1000081FD0000000000000000000000016290A0C10000013D000000000000000000000000000000000000002F00000000spacewalk-backend/satellite_tools/rhn-charsets    #!/bin/bash

if [ $UID != "0" ]; then
  echo "ERROR: must be root to execute"
  exit 1
fi

BACKEND=$( spacewalk-cfg-get db_backend )

if [ $BACKEND == 'postgresql' ]; then
	echo 'show server_encoding; show client_encoding;' | spacewalk-sql --select-mode -
else
	echo "Unknown database backend [$BACKEND]"
	exit 1
fi

   070701000000E2000081B40000000000000000000000016290A0C1000005D2000000000000000000000000000000000000003400000000spacewalk-backend/satellite_tools/rhn-charsets.sgml   <!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook V3.1//EN" [
<!ENTITY RHNSAT "SUSE Manager Server" >
<!ENTITY COMMAND "rhn-charsets" >

]>
<refentry>

<RefMeta>
<RefEntryTitle>&COMMAND;</RefEntryTitle><manvolnum>8</manvolnum>
<RefMiscInfo>Version 1.0.0</RefMiscInfo>
</RefMeta>

<RefNameDiv>
<RefName><command>&COMMAND;</command></RefName>
<RefPurpose>
Fetch the database characterset types for a &RHNSAT;.
</RefPurpose>
</RefNameDiv>

<RefSynopsisDiv>
<Synopsis>
    <cmdsynopsis>
        <command>&COMMAND;</command> 
    </cmdsynopsis>
</Synopsis>
</RefSynopsisDiv>

<RefSect1><Title>Description</Title>

    <para> <emphasis>&COMMAND;</emphasis> fetches the database characterset
    ('NLS_CHARACTERSET', 'NLS_NCHAR_CHARACTERSET', 'server_encoding', 'client_encoding')
    values for a &RHNSAT;.  It uses the database connection string found in /etc/rhn/rhn.conf.
    </para>

</RefSect1>

<RefSect1><Title>Files</Title>
<simplelist>
    <member>/etc/rhn/rhn.conf</member>
</simplelist>
</RefSect1>

<RefSect1><Title>See Also</Title>
<simplelist>
    <member>db-control(1) - embedded database environment only!</member>
    <member>rhn-charsets(8)</member>
    <member>rhnpush(8)</member>
    <member>rhn-schema-version(8)</member>
    <member>rhn-ssl-dbstore(8)</member>
    <member>satellite-sync(8)</member>
</simplelist>
</RefSect1>

<RefSect1><Title>Authors</Title>
<simplelist>
    <member>Todd Warner <email>taw@redhat.com</email></member>
</simplelist>
</RefSect1>
</RefEntry>

  070701000000E3000081FD0000000000000000000000016290A0C10000018E000000000000000000000000000000000000002F00000000spacewalk-backend/satellite_tools/rhn-db-stats    #!/bin/sh

if [[ $@ =~ "-h" ]] || [[ $@ =~ "--help" ]] || [ $# -ne 1 -o $# -gt 1 ]; then
        echo "Usage: `basename $0` -h | --help | output-file"
        exit
fi

if [ "$(spacewalk-cfg-get db_backend)" = "postgresql" ]; then
        sql="
SHOW ALL;
"
fi

output=$(echo "$sql" | spacewalk-sql --select-mode -)

if [ "$1" = "-" ]; then
        echo "$output"
else
        echo "$output" > $1
fi
  070701000000E4000081B40000000000000000000000016290A0C10000079D000000000000000000000000000000000000003400000000spacewalk-backend/satellite_tools/rhn-db-stats.sgml   <!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook V3.1//EN" [
<!ENTITY THECOMMAND "rhn-db-stats" >

]>
<refentry>

<RefMeta>
<RefEntryTitle>&THECOMMAND;</RefEntryTitle><manvolnum>8</manvolnum>
<RefMiscInfo>Version 1.0.0</RefMiscInfo>
</RefMeta>

<RefNameDiv>
<RefName><command>&THECOMMAND;</command></RefName>
<RefPurpose>
utility for querying important database parameters used by SUSE Manager.
</RefPurpose>
</RefNameDiv>

<RefSynopsisDiv>
<Synopsis>
    <cmdsynopsis>
        <command>&THECOMMAND;</command>
        <arg choice="opt">-h | --help</arg>
	<arg choice="req">output-file</arg>
    </cmdsynopsis>
</Synopsis>
</RefSynopsisDiv>

<RefSect1><Title>Description</Title>

<para>
rhn-db-stats retrieves important parameters from Oracle database
used by your SUSE Manager installation. It is used by spacewalk-debug
(satellite-debug) or it can be used standalone.
</para>

</RefSect1>

<RefSect1><Title>Options</Title>
<variablelist>
    <varlistentry>
        <term>-h | --help</term>
        <listitem>
            <para>Print usage information.</para>
        </listitem>
    </varlistentry>

    <varlistentry>
        <term>output-file</term>
        <listitem>
            <para>File name to save the retrieved information to. Use - if you wish to
                  print the output to stdout.</para>
        </listitem>
    </varlistentry>
</variablelist>
</RefSect1>

<RefSect1><Title>Files</Title>
<simplelist>
    <member>/usr/bin/&THECOMMAND;</member>
</simplelist>
</RefSect1>

<RefSect1><Title>Example</Title>
<simplelist>
        <member><command>&THECOMMAND; database.log</command></member>
</simplelist>
</RefSect1>

<RefSect1><Title>See Also</Title>
<simplelist>
    <member>spacewalk-debug(8)</member>
    <member>rhn-schema-stats(8)</member>
</simplelist>
</RefSect1>

<RefSect1><Title>Authors</Title>
<simplelist>
    <member>Milan Zazrivec <email>mzazrivec@redhat.com</email></member>
</simplelist>
</RefSect1>
</RefEntry>
   070701000000E5000081FD0000000000000000000000016290A0C10000068B000000000000000000000000000000000000003900000000spacewalk-backend/satellite_tools/rhn-satellite-activate  #!/usr/bin/python -u
#
# Copyright (c) 2008--2011 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
# 
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation. 
#

## language imports
import sys
try:
    import os
except KeyboardInterrupt:
    sys.stderr.write("\nUser interrupted process.\n")
    sys.exit(0)


mod_name = os.path.basename(sys.argv[0]).replace('-', '_')
try:
    mod = __import__("spacewalk.satellite_tools", globals(), locals(), [mod_name])
except KeyboardInterrupt:
    sys.stderr.write("\nUser interrupted process.\n")
    sys.exit(0)
except ImportError as e:
    sys.stderr.write("Unable to load module %s\n" % mod_name)
    sys.stderr.write(str(e) + "\n")
    sys.exit(1)
mod = getattr(mod, mod_name)


#-------------------------------------------------------------------------------
if __name__ == '__main__':
    try:
        sys.exit(abs(mod.main() or 0))
    except KeyboardInterrupt:
        sys.stderr.write("\nUser interrupted process.\n")
        sys.exit(0)
    except SystemExit:
        raise
    except:
        sys.stderr.write("\nERROR: unhandled exception occurred:\n")
        raise
#===============================================================================
 070701000000E6000081B40000000000000000000000016290A0C1000014EA000000000000000000000000000000000000003E00000000spacewalk-backend/satellite_tools/rhn-satellite-activate.sgml <!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook V3.1//EN" [
<!ENTITY RHNSAT "Red Hat Satellite Server" >
<!ENTITY RHNSATACT "rhn-satellite-activate" >

]>
<refentry>

<RefMeta>
<RefEntryTitle>&RHNSATACT;</RefEntryTitle><manvolnum>8</manvolnum>
<RefMiscInfo>Version 3.4.0</RefMiscInfo>
</RefMeta>

<RefNameDiv>
<RefName><command>&RHNSATACT;</command></RefName>
<RefPurpose>
    activates (using an RHSM Manifest) a &RHNSAT;.
</RefPurpose>
</RefNameDiv>

<RefSynopsisDiv>
<Synopsis>
    <cmdsynopsis>
        <command>&RHNSATACT; [ options <replaceable>...</replaceable> ] [ --manifest <replaceable>PATH</replaceable> ] \
  [ --sanity-only ] [ --disconnected ] [ --deactivate ] [ --manifest-info ] \
  [ ---manifest-download ] [ --manifest-refresh ] [ --manifest-reconcile-request ] \
  [ -h|--help ]</command>
    </cmdsynopsis>
</Synopsis>
</RefSynopsisDiv>

<RefSect1><Title>Description</Title>

<para>
    <emphasis>&RHNSATACT;</emphasis> activates (using an RHSM Manifest) a &RHNSAT;.
    The RHSM Manifest is (a) checked for sanity, (b) extracted and data are inserted
    into the local database. If disconnected option is specified, this Satellite
    will not subscribe to Satellite repository and will not receive updates.
    Activation allows &RHNSAT; to sync channel content from CDN repositories.
</para>

<para>
    NOTE: activation generally occurs upon Red Hat Satellite installation.
</para>
</RefSect1>

<RefSect1><Title>Options</Title>
<variablelist>
    <varlistentry>
        <term>--manifest <replaceable>PATH</replaceable></term>
        <listitem>
            <para>new RHSM manifest path/filename.</para>
        </listitem>
    </varlistentry>
    <varlistentry>
        <term>--sanity-only</term>
        <listitem>
            <para>confirm manifest sanity. Does not activate the Red Hat Satellite locally or remotely.</para>
        </listitem>
    </varlistentry>
    <varlistentry>
        <term>--disconnected</term>
        <listitem>
            <para>activate locally, but not subscribe to Satellite repository.</para>
        </listitem>
    </varlistentry>
    <varlistentry>
        <term>--ignore-expiration</term>
        <listitem>
            <para>execute regardless of the expiration of the RHN Certificate (not recommended).</para>
        </listitem>
    </varlistentry>
    <varlistentry>
        <term>--ignore-version-mismatch</term>
        <listitem>
            <para>execute regardless of version mismatch of existing and new certificate.</para>
        </listitem>
    </varlistentry>
    <varlistentry>
        <term>--deactivate</term>
        <listitem>
            <para>Deactivate CDN-activated Satellite.</para>
        </listitem>
    </varlistentry>
    <varlistentry>
        <term>--manifest-info</term>
        <listitem>
            <para>Show information about currently activated manifest.</para>
        </listitem>
    </varlistentry>
    <varlistentry>
        <term>--manifest-download</term>
        <listitem>
            <para>Download new manifest from RHSM and save it to temporary location.</para>
        </listitem>
    </varlistentry>
    <varlistentry>
        <term>--manifest-refresh</term>
        <listitem>
            <para>Download new manifest from RHSM and activate it immediately.</para>
        </listitem>
    </varlistentry>
    <varlistentry>
        <term>--manifest-reconcile-request</term>
        <listitem>
            <para>Regenerate entitlement certificates in RHSM for your consumer.</para>
        </listitem>
    </varlistentry>
    <varlistentry>
        <term>-v | --verbose</term>
        <listitem>
            <para>be verbose (accumulable: -vvv means "be *really* verbose").</para>
        </listitem>
    </varlistentry>
    <varlistentry>
        <term>-h | --help</term>
        <listitem>
            <para>Display the help screen with a list of options.</para>
        </listitem>
    </varlistentry>
</variablelist>
</RefSect1>

<RefSect1><Title>Files</Title>
<simplelist>
    <member>/usr/bin/rhn-satellite-activate</member>
    <member>/etc/rhn/rhn.conf</member>
</simplelist>
</RefSect1>

<RefSect1><Title>Examples</Title>
<simplelist>
    <member><command>rhn-satellite-activate --manifest /tmp/manifest.zip</command></member>
    <member><command>rhn-satellite-activate --manifest /tmp/manifest.zip --disconnected</command></member>
    <member><command>rhn-satellite-activate --manifest-info</command></member>
    <member><command>rhn-satellite-activate --manifest-download</command></member>
    <member><command>rhn-satellite-activate --manifest-reconcile-request</command></member>
    <member><command>rhn-satellite-activate --manifest-refresh --disconnected</command></member>
    <member><command>rhn-satellite-activate --deactivate</command></member>
</simplelist>
</RefSect1>

<RefSect1><Title>See Also</Title>
<simplelist>
    <member>db-control(1) - embedded database environment only!</member>
    <member>rhn-charsets(8)</member>
    <member>rhnpush(8)</member>
    <member>rhn-schema-version(8)</member>
    <member>rhn-ssl-dbstore(8)</member>
    <member>cdn-sync(8)</member>
</simplelist>
</RefSect1>

<RefSect1><Title>Authors</Title>
<simplelist>
    <member>Todd Warner <email>taw@redhat.com</email></member>
    <member>Jan Dobes <email>jdobes@redhat.com</email></member>
</simplelist>
</RefSect1>
</RefEntry>
  070701000000E7000081FD0000000000000000000000016290A0C100000442000000000000000000000000000000000000003300000000spacewalk-backend/satellite_tools/rhn-schema-stats    #!/bin/bash

if [[ $@ =~ "--help" ]] || [[ $@ =~ "-h" ]] || [ $# -ne 1 ]; then
	echo "Usage: `basename $0` -h | --help | output-file"
	exit
fi

if [ $(spacewalk-cfg-get db_backend) = "postgresql" ]; then
	sql="
select schemaname as schema,
       relname as table,
       n_live_tup as rows
  from pg_stat_user_tables
 order by n_live_tup desc;

select con.conname as name,
       con.contype as type,
       cl.relname as table,
       pg_get_expr(conbin, conrelid) as src
  from pg_constraint con,
       pg_class cl
 where cl.oid = con.conrelid
 order by name;

select
        rvi.label, to_char(rvi.created, 'YYYY-MM-DD') as created,
        to_char(rvi.modified, 'YYYY-MM-DD') as modified,
        rpn.name,
        rpe.epoch,
        rpe.version,
        rpe.release
from
        rhnVersionInfo rvi,
        rhnPackageName rpn,
        rhnPackageEvr rpe
where
        rvi.evr_id = rpe.id and
        rvi.name_id = rpn.id
order by created;
"

fi

output=$(echo "$sql" | spacewalk-sql --select-mode -)

if [ "$1" = "-" ]; then
        echo "$output"
else
        echo "$output" > $1
fi
  070701000000E8000081B40000000000000000000000016290A0C100000795000000000000000000000000000000000000003800000000spacewalk-backend/satellite_tools/rhn-schema-stats.sgml   <!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook V3.1//EN" [
<!ENTITY THECOMMAND "rhn-schema-stats">

]>
<refentry>

<RefMeta>
<RefEntryTitle>&THECOMMAND;</RefEntryTitle><manvolnum>8</manvolnum>
<RefMiscInfo>Version 1.0.0</RefMiscInfo>
</RefMeta>

<RefNameDiv>
<RefName><command>&THECOMMAND;</command></RefName>
<RefPurpose>
utility for querying important SUSE Manager database schema statistics.
</RefPurpose>
</RefNameDiv>

<RefSynopsisDiv>
<Synopsis>
    <cmdsynopsis>
        <command>&THECOMMAND;</command>
        <arg choice="opt">-h | --help</arg>
	<arg choice="req">output-file</arg>
    </cmdsynopsis>
</Synopsis>
</RefSynopsisDiv>

<RefSect1><Title>Description</Title>

<para>
rhn-schema-stats retrieves important statistics from your SUSE Manager
database schema. Ordinarily, is used by spacewalk-debug
(satellite-debug), but it can be used standalone.
</para>

</RefSect1>

<RefSect1><Title>Options</Title>
<variablelist>
    <varlistentry>
        <term>-h | --help</term>
        <listitem>
            <para>Print usage information.</para>
        </listitem>
    </varlistentry>

    <varlistentry>
        <term>output-file</term>
        <listitem>
            <para>File name to save the retrieved information to. Use - if you wish to
                  print the output to stdout.</para>
        </listitem>
    </varlistentry>
</variablelist>
</RefSect1>

<RefSect1><Title>Files</Title>
<simplelist>
    <member>/usr/bin/&THECOMMAND;</member>
</simplelist>
</RefSect1>

<RefSect1><Title>Example</Title>
<simplelist>
        <member><command>&THECOMMAND; database.log</command></member>
</simplelist>
</RefSect1>

<RefSect1><Title>See Also</Title>
<simplelist>
    <member>spacewalk-debug(8)</member>
    <member>rhn-db-stats(8)</member>
</simplelist>
</RefSect1>

<RefSect1><Title>Authors</Title>
<simplelist>
    <member>Milan Zazrivec <email>mzazrivec@redhat.com</email></member>
</simplelist>
</RefSect1>
</RefEntry>
   070701000000E9000081FD0000000000000000000000016290A0C1000007BE000000000000000000000000000000000000003500000000spacewalk-backend/satellite_tools/rhn-schema-version  #!/usr/bin/python -u
#
# Copyright (c) 2008--2015 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#


import sys
from os.path import exists, join


def errAndExit(errno, msg):
    sys.stderr.write(msg+'\n')
    sys.exit(errno)


# figure out import path
_LIBPATH = ""
for p in ["/var/www/rhns", "/usr/share/rhn"]:
    if exists(p) and exists(join(p, 'server')) and exists(join(p, 'common')):
        _LIBPATH = p
if _LIBPATH not in sys.path:
    sys.path.append(_LIBPATH)


try:
    from spacewalk.server import rhnSQL
except KeyboardInterrupt:
    sys.stderr.write("\nUser interrupted process.\n")
    sys.exit(0)


if __name__ == '__main__':
    rhnSQL.initDB()

    try:
        h = rhnSQL.prepare("""
                SELECT evr_t_as_vre_simple(PE.evr) as evrsimple
                  FROM rhnPackageEVR PE, rhnVersionInfo RVI, rhnPackageName PN
                 WHERE RVI.label = 'schema'
                   AND RVI.name_id = PN.id
                   AND RVI.evr_id = PE.id
                """)
        h.execute()
        row = h.fetchone_dict()
        if row:
            print(row['evrsimple'])
    except KeyboardInterrupt:
        sys.stderr.write("\nUser interrupted process.\n")
        sys.exit(0)
    except (rhnSQL.SQLError, rhnSQL.SQLSchemaError, rhnSQL.SQLConnectError) as e:
        # really a stub for better exception handling in the future.
        sys.stderr.write("SQL error occurred, traceback follows...\n")
        raise


  070701000000EA000081B40000000000000000000000016290A0C100000591000000000000000000000000000000000000003A00000000spacewalk-backend/satellite_tools/rhn-schema-version.sgml <!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook V3.1//EN" [
<!ENTITY RHNSAT "SUSE Manager Server" >

]>
<refentry>

<RefMeta>
<RefEntryTitle>rhn-schema-version</RefEntryTitle><manvolnum>8</manvolnum>
<RefMiscInfo>Version 3.1.0</RefMiscInfo>
</RefMeta>

<RefNameDiv>
<RefName><command>rhn-schema-version</command></RefName>
<RefPurpose>
Fetch the database schema version for a &RHNSAT;.
</RefPurpose>
</RefNameDiv>

<RefSynopsisDiv>
<Synopsis>
    <cmdsynopsis>
        <command>rhn-schema-version</command>
        <arg>options <replaceable>...</replaceable></arg>
    </cmdsynopsis>
</Synopsis>
</RefSynopsisDiv>

<RefSect1><Title>Description</Title>
    <para>
        <emphasis>rhn-schema-version</emphasis> fetches the database schema
        version for an &RHNSAT;. It uses the database connection
        string found in /etc/rhn/rhn.conf.
    </para>
</RefSect1>

<RefSect1><Title>Files</Title>
<simplelist>
    <member>/etc/rhn/rhn.conf</member>
</simplelist>
</RefSect1>

<RefSect1><Title>See Also</Title>
<simplelist>
    <member>db-control(1) - embedded database environment only!</member>
    <member>rhn-charsets(8)</member>
    <member>rhnpush(8)</member>
    <member>rhn-ssl-dbstore(8)</member>
    <member>satellite-sync(8)</member>
</simplelist>
</RefSect1>

<RefSect1><Title>Authors</Title>
<simplelist>
    <member>Todd Warner <email>taw@redhat.com</email></member>
</simplelist>
</RefSect1>
</RefEntry>
   070701000000EB000081FD0000000000000000000000016290A0C100000621000000000000000000000000000000000000003200000000spacewalk-backend/satellite_tools/rhn-ssl-dbstore #!/usr/bin/python -u
#
# Copyright (c) 2008--2015 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#


## language imports
import sys
import os


mod_name = os.path.basename(sys.argv[0]).replace('-', '_')
try:
    mod = __import__("spacewalk.satellite_tools", globals(), locals(), [mod_name])
except KeyboardInterrupt:
    sys.stderr.write("\nUser interrupted process.\n")
    sys.exit(0)
except ImportError as e:
    sys.stderr.write("Unable to load module %s\n" % mod_name)
    sys.stderr.write(str(e) + "\n")
    sys.exit(1)
mod = getattr(mod, mod_name)


#-------------------------------------------------------------------------------
if __name__ == '__main__':
    try:
        sys.exit(abs(mod.main() or 0))
    except KeyboardInterrupt:
        sys.stderr.write("\nUser interrupted process.\n")
        sys.exit(0)
    except SystemExit:
        raise
    except:
        sys.stderr.write("\nERROR: unhandled exception occurred:\n")
        raise
#===============================================================================
   070701000000EC000081B40000000000000000000000016290A0C100000AD3000000000000000000000000000000000000003700000000spacewalk-backend/satellite_tools/rhn-ssl-dbstore.sgml    <!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook V3.1//EN" [
<!ENTITY THECOMMAND "rhn-ssl-dbstore">

]>
<refentry>

<RefMeta>
<RefEntryTitle>&THECOMMAND;</RefEntryTitle><manvolnum>8</manvolnum>
<RefMiscInfo>Version 1.0.0</RefMiscInfo>
</RefMeta>

<RefNameDiv>
<RefName><command>&THECOMMAND;</command></RefName>
<RefPurpose>
This is a simple utility that pushes your CA SSL certificate into the local
database so that it can be used for things such as provisioning.
</RefPurpose>
</RefNameDiv>

<RefSynopsisDiv>
<Synopsis>
    <cmdsynopsis>
        <command>&THECOMMAND;</command>
        <arg>--ca-cert=<replaceable>CA_CERTIFICATE</replaceable></arg>
        <arg>--label=<replaceable>INTERNAL_LABEL</replaceable></arg>
        <arg>-v | --verbose</arg>
    </cmdsynopsis>
</Synopsis>
</RefSynopsisDiv>

<RefSect1><Title>Description</Title>

<para>This is a simple utility that pushes your CA SSL certificate into the
local database so that it can be used for things such as provisioning. It
should only be used if the CA certificate used for your servers has
changed. Database connection settings are read from /etc/rhn/rhn.conf. (see
the "db-*" settings)</para>

</RefSect1>

<RefSect1><Title>Options</Title>
<variablelist>
    <varlistentry>
        <term>--ca-cert=<replaceable>CA_CERTIFICATE</replaceable></term>
        <listitem>
            <para>Full path to the public CA certificate to be stored in the database.</para>
        </listitem>
    </varlistentry>
    <varlistentry>
        <term>--label=<replaceable>INTERNAL_LABEL</replaceable></term>
        <listitem>
            <para>FOR TESTING ONLY - alternative database label for this CA
            certificate, default is "RHN-ORG-TRUSTED-SSL-CERT"</para>
        </listitem>
    </varlistentry>
    <varlistentry>
        <term>-v | --verbose</term>
        <listitem>
            <para>be verbose (accumulable: -vvv means "be *really* verbose").</para>
        </listitem>
    </varlistentry>
</variablelist>
</RefSect1>

<RefSect1><Title>Files</Title>
<simplelist>
    <member>/usr/bin/&THECOMMAND;</member>
</simplelist>
</RefSect1>

<RefSect1><Title>Example</Title>
<simplelist>
        <member><command>&THECOMMAND; --ca-cert=/root/ssl-build/RHN-ORG-TRUSTED-SSL-CERT</command></member>
</simplelist>
</RefSect1>

<RefSect1><Title>See Also</Title>
<simplelist>
    <member>db-control(1) - embedded database environment only!</member>
    <member>rhn-charsets(8)</member>
    <member>rhnpush(8)</member>
    <member>rhn-schema-version(8)</member>
    <member>rhn-ssl-tool(1)</member>
    <member>satellite-sync(8)</member>
</simplelist>
</RefSect1>

<RefSect1><Title>Authors</Title>
<simplelist>
    <member>Todd Warner <email>taw@redhat.com</email></member>
</simplelist>
</RefSect1>
</RefEntry>
 070701000000ED000081B40000000000000000000000016290A0C1000048EC000000000000000000000000000000000000003C00000000spacewalk-backend/satellite_tools/rhn_satellite_activate.py   #
# Copyright (c) 2008--2017 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#

# language imports
import os
import sys
import time
import tempfile
import re
from optparse import Option, OptionParser
from M2Crypto import X509

from rhn.connections import idn_ascii_to_puny
# Check if python-rhsm is installed
try:
    from rhsm.config import RhsmConfigParser
except ImportError:
    RhsmConfigParser = None

# common, server imports
from uyuni.common import fileutils
from spacewalk.common import rhnLog
from spacewalk.common.rhnConfig import CFG, initCFG, PRODUCT_NAME
from spacewalk.common.rhnTranslate import _
from spacewalk.server.rhnServer import satellite_cert
# Try to import cdn activation module if available
try:
    from spacewalk.cdn_tools import activation as cdn_activation
    from spacewalk.cdn_tools.manifest import MissingSatelliteCertificateError, ManifestValidationError,\
        IncorrectEntitlementsFileFormatError
    from spacewalk.cdn_tools.common import CdnMappingsLoadError
except ImportError:
    cdn_activation = None
    MissingSatelliteCertificateError = None
    ManifestValidationError = None
    CdnMappingsLoadError = None
from spacewalk.satellite_tools.syncLib import log, log2disk, log2


DEFAULT_RHSM_MANIFEST_LOCATION = '/etc/sysconfig/rhn/rhsm-manifest.zip'
DEFAULT_WEBAPP_GPG_KEY_RING = "/etc/webapp-keyring.gpg"
DEFAULT_CONFIG_FILE = "/etc/rhn/rhn.conf"
DEFAULT_RHSM_CONFIG_FILE = "/etc/rhsm/rhsm.conf"
SUPPORTED_RHEL_VERSIONS = ['5', '6']
LOG_PATH = '/var/log/rhn/activation.log'


def writeError(e):
    log2(0, 0, '\nERROR: %s\n' % e, stream=sys.stderr, cleanYN=1)


class CaCertInsertionError(Exception):
    "raise when fail to insert CA cert into the local database"


def getRHSMUuid():
    """ Tries to get UUID of of this system if it's registered into Subscription manager."""

    if RhsmConfigParser and os.path.isfile(DEFAULT_RHSM_CONFIG_FILE):
        cfg = RhsmConfigParser(config_file=DEFAULT_RHSM_CONFIG_FILE)
        cert_dir = cfg.get('rhsm', 'consumerCertDir')
        cert_path = os.path.join(cert_dir, 'cert.pem')
        if os.path.isfile(cert_path):
            f = open(cert_path, 'r')
            cert = X509.load_cert_string(f.read())
            f.close()
            subject = cert.get_subject()
            return subject.CN
    return None


class RHNCertGeneralSanityException(Exception):
    "general failure"


def getCertChecksumString(sat_cert):
    result = ""
    tree = {}

    # Scalar attributes of sat_cert
    for field in sat_cert.fields_scalar:
        tree[field] = getattr(sat_cert, field)
    # List attributes of sat_cert
    for name, value in list(sat_cert.fields_list.items()):
        field = value.attribute_name
        tree[name] = []
        for item in getattr(sat_cert, field):
            attributes = {}
            for k, v in list(item.attributes.items()):
                attr = getattr(item, v)
                if attr != "":
                    attributes[k] = attr
            tree[name].append(attributes)

    # Create string from tree
    for key in sorted(tree):
        if isinstance(tree[key], list):
            for item in sorted(tree[key], key=lambda item: "".join(sorted(list(item.keys()) + list(item.values())))):
                line = "%s" % key
                for attribute in sorted(item):
                    line += "-%s-%s" % (attribute, item[attribute])
                result += "%s\n" % line
        else:
            if tree[key] is not None:
                result += "%s-%s\n" % (key, tree[key])

    return result


def validateSatCert(cert):
    """ validating (i.e., verifing sanity of) this product.
        I.e., makes sure the product Certificate is a sane certificate
    """

    sat_cert = satellite_cert.SatelliteCert()
    sat_cert.load(cert)

    for key in ['generation', 'product', 'owner', 'issued', 'expires', 'slots']:
        if not getattr(sat_cert, key):
            writeError("Your satellite certificate is not valid. Field %s is not defined.\n"
                       "Please contact your support representative." % key)
            raise RHNCertGeneralSanityException("RHN Entitlement Certificate failed "
                                                "to validate.")

    signature = sat_cert.signature

    # copy cert to temp location (it may be gzipped).
    fd, certTmpFile = tempfile.mkstemp(prefix="/tmp/cert-")
    fo = os.fdopen(fd, 'wb')
    fo.write(getCertChecksumString(sat_cert))
    fo.flush()
    fo.close()

    fd, signatureTmpFile = tempfile.mkstemp(prefix="/tmp/cert-signature-")
    fo = os.fdopen(fd, 'wb')
    fo.write(signature)
    fo.flush()
    fo.close()

    args = ['gpg', '--verify', '-q', '--keyring',
            DEFAULT_WEBAPP_GPG_KEY_RING, signatureTmpFile, certTmpFile]

    log(1, "Checking cert XML sanity and GPG signature: %s" % repr(' '.join(args)))

    ret, out, err = fileutils.rhn_popen(args)
    err = err.read()
    out = out.read()

    # nuke temp cert
    os.unlink(certTmpFile)
    os.unlink(signatureTmpFile)

    if err.find('Ohhhh jeeee: ... this is a bug') != -1 or err.find('verify err') != -1 or ret:
        msg = "%s Entitlement Certificate failed to validate.\n" % PRODUCT_NAME
        msg += "MORE INFORMATION:\n"
        msg = msg + "  Return value: %s\n" % ret +\
                    "  Standard-out: %s\n" % out +\
                    "  Standard-error: %s" % err
        writeError(msg)
        raise RHNCertGeneralSanityException("RHN Entitlement Certificate failed "
                                            "to validate.")
    return 0


def writeRhsmManifest(options, manifest):
    if os.path.exists(DEFAULT_RHSM_MANIFEST_LOCATION):
        fileutils.rotateFile(DEFAULT_RHSM_MANIFEST_LOCATION, depth=5)
    fo = open(DEFAULT_RHSM_MANIFEST_LOCATION, 'w+b')
    fo.write(manifest)
    fo.close()
    # Delete from temporary location
    if options.manifest_refresh:
        os.unlink(options.manifest)
    options.manifest = DEFAULT_RHSM_MANIFEST_LOCATION


def storeRhsmManifest(options):
    """ storing of the RHSM manifest
        writing to default storage location
    """

    if options.manifest and options.manifest != DEFAULT_RHSM_MANIFEST_LOCATION:
        try:
            manifest = open(os.path.abspath(os.path.expanduser(options.manifest)), 'rb').read()
        except (IOError, OSError) as e:
            msg = _('"%s" (specified in commandline)\n'
                    'could not be opened and read:\n%s') % (options.manifest, str(e))
            writeError(msg)
            raise
        try:
            writeRhsmManifest(options, manifest)
        except (IOError, OSError) as e:
            msg = _('"%s" could not be opened\nand/or written to:\n%s') % (
                DEFAULT_RHSM_MANIFEST_LOCATION, str(e))
            writeError(msg)
            raise


def enableSatelliteRepo(rhn_cert):
    args = ['rpm', '-q', '--qf', '\'%{version} %{arch}\'', '-f', '/etc/redhat-release']
    ret, out, err = fileutils.rhn_popen(args)
    data = out.read().strip("'")
    version, arch = data.split()
    # Read from stdout, strip quotes if any and extract first number
    version = re.search(r'\d+', version).group()

    if version not in SUPPORTED_RHEL_VERSIONS:
        log(0, "WARNING: No Satellite repository available for RHEL version: %s." % version)
        return

    arch_str = "server"
    if arch == "s390x":
        arch_str = "system-z"

    sat_cert = satellite_cert.SatelliteCert()
    sat_cert.load(rhn_cert)
    sat_version = getattr(sat_cert, 'satellite-version')

    repo = "rhel-%s-%s-satellite-%s-rpms" % (version, arch_str, sat_version)
    args = ['/usr/bin/subscription-manager', 'repos', '--enable', repo]
    ret, out, err = fileutils.rhn_popen(args)
    if ret:
        msg_ = "Enabling of Satellite repository failed."
        msg = ("%s\nReturn value: %s\nStandard-out: %s\n\n"
               "Standard-error: %s\n"
               % (msg_, ret, out.read(), err.read()))
        writeError(msg)
        raise EnableSatelliteRepositoryException("Enabling of Satellite repository failed. Make sure Satellite "
                                                 "subscription is attached to this system, both versions of RHEL and "
                                                 "Satellite are supported or run activation with --disconnected "
                                                 "option.")


class EnableSatelliteRepositoryException(Exception):
    "when there is no attached satellite subscription in rhsm or incorrect combination of rhel and sat version"


def expiredYN(cert):
    """ dead simple check to see if our RHN cert is not expired
        returns either "" or the date of expiration.
    """

    # parse it and snag "expires"
    sc = satellite_cert.SatelliteCert()
    sc.load(cert)
    # note the correction for timezone
    # pylint: disable=E1101
    try:
        expires = time.mktime(time.strptime(sc.expires, sc.datesFormat_cert))-time.timezone
    except ValueError:
        writeError("Can't seem to parse the expires field in the RHN Certificate. "
                   "RHN Certificate's version is incorrect?")
        # a cop-out FIXME: not elegant
        sys.exit(11)

    now = time.time()
    if expires < now:
        return sc.expires
    else:
        return ''


def processCommandline():
    options = [
        Option('--sanity-only',  action='store_true', help="confirm certificate sanity. Does not activate "
               + "the Red Hat Satellite locally or remotely."),
        Option('--ignore-expiration', action='store_true', help='execute regardless of the expiration '
               + 'of the RHN Certificate (not recommended).'),
        Option('--ignore-version-mismatch', action='store_true', help='execute regardless of version '
               + 'mismatch of existing and new certificate.'),
        Option('-v', '--verbose', action='count',      help='be verbose '
               + '(accumulable: -vvv means "be *really* verbose").'),
        Option('--dump-version', action='store', help="requested version of XML dump"),
        Option('--manifest',     action='store',      help='the RHSM manifest path/filename to activate for CDN'),
        Option('--rhn-cert', action='store', help='this option is deprecated, use --manifest instead'),
        Option('--deactivate', action='store_true', help='deactivate CDN-activated Satellite'),
        Option('--disconnected', action='store_true', help="activate locally, not subscribe to remote repository"),
        Option('--manifest-info', action='store_true', help="show information about currently activated manifest"),
        Option('--manifest-download', action='store_true',
               help="download new manifest from RHSM to temporary location"),
        Option('--manifest-refresh', action='store_true', help="download new manifest from RHSM and activate it"),
        Option('--manifest-reconcile-request', action='store_true',
               help="request regeneration of entitlement certificates")
    ]

    parser = OptionParser(option_list=options)
    options, args = parser.parse_args()

    initCFG('server.satellite')
    if options.verbose is None:
        options.verbose = 0
    CFG.set('DEBUG', options.verbose)
    rhnLog.initLOG(LOG_PATH, options.verbose)
    log2disk(0, "Command: %s" % str(sys.argv))

    # we take no extra commandline arguments that are not linked to an option
    if args:
        writeError("These arguments make no sense in this context (try --help): %s" % repr(args))
        sys.exit(1)

    # No need to check further if deactivating
    if options.deactivate:
        return options

    if options.sanity_only:
        options.disconnected = 1

    if options.manifest_refresh:
        options.manifest_download = 1

    if CFG.DISCONNECTED and not options.disconnected:
        msg = """Satellite server has been setup to run in disconnected mode.
       Either correct server configuration in /etc/rhn/rhn.conf
       or use --disconnected to activate it locally."""
        writeError(msg)
        sys.exit(1)

    options.http_proxy = idn_ascii_to_puny(CFG.HTTP_PROXY)
    options.http_proxy_username = CFG.HTTP_PROXY_USERNAME
    options.http_proxy_password = CFG.HTTP_PROXY_PASSWORD
    log(1, 'HTTP_PROXY: %s' % options.http_proxy)
    log(1, 'HTTP_PROXY_USERNAME: %s' % options.http_proxy_username)
    log(1, 'HTTP_PROXY_PASSWORD: <password>')

    return options


#- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

def main():
    """ main routine
        1    general failure
        10   general sanity check failure (to include a remedial cert
             version check)
        11   expired!
        12   certificate version fails remedially
        13   certificate missing in manifest
        14   manifest signature incorrect
        15   cannot load mapping files
        16   manifest download failed
        17   manifest refresh failed
        18   manifest entitlements parse failed
        30   local activation failure

        90   not registered to rhsm
        91   enabling sat repo failed

        127  general unknown failure (not really mapped yet)

        FIXME - need to redo how we process error codes - very manual
    """
    # pylint: disable=R0911

    options = processCommandline()

    if not cdn_activation:
        writeError("Package spacewalk-backend-cdn has to be installed for using this tool.")
        sys.exit(1)

    # CDN Deactivation
    if options.deactivate:
        cdn_activation.Activation.deactivate()
        # Rotate the manifest to not have any currently used
        if os.path.exists(DEFAULT_RHSM_MANIFEST_LOCATION):
            fileutils.rotateFile(DEFAULT_RHSM_MANIFEST_LOCATION, depth=5)
            os.unlink(DEFAULT_RHSM_MANIFEST_LOCATION)
        return 0

    if options.rhn_cert:
        writeError("Activation with RHN Classic Satellite Certificate is deprecated.\nPlease obtain a Manifest for this"
                   " Satellite version via https://access.redhat.com/knowledge/tools/satcert, "
                   "and re-run this activation tool with option --manifest=MANIFEST-FILE.")
        sys.exit(1)

    if not options.manifest:
        if os.path.exists(DEFAULT_RHSM_MANIFEST_LOCATION):
            options.manifest = DEFAULT_RHSM_MANIFEST_LOCATION
            if options.manifest_info:
                cdn_activation.Activation.manifest_info(DEFAULT_RHSM_MANIFEST_LOCATION)
                return 0
            # Call regeneration API on Candlepin server
            if options.manifest_reconcile_request:
                log(0, "Requesting manifest regeneration...")
                ok = cdn_activation.Activation.refresh_manifest(
                    DEFAULT_RHSM_MANIFEST_LOCATION,
                    http_proxy=options.http_proxy,
                    http_proxy_username=options.http_proxy_username,
                    http_proxy_password=options.http_proxy_password)
                if not ok:
                    writeError("Manifest regeneration failed!")
                    return 17
                log(0, "Manifest regeneration requested.")
                return 0
            # Get new refreshed manifest from Candlepin server
            if options.manifest_download:
                log(0, "Downloading manifest...")
                path = cdn_activation.Activation.download_manifest(
                    DEFAULT_RHSM_MANIFEST_LOCATION,
                    http_proxy=options.http_proxy,
                    http_proxy_username=options.http_proxy_username,
                    http_proxy_password=options.http_proxy_password)
                if not path:
                    writeError("Manifest download failed!")
                    return 16
                if options.manifest_refresh:
                    options.manifest = path
                else:
                    log(0, "New manifest saved to: '%s'" % path)
                    return 0
        else:
            writeError("No currently activated manifest was found. "
                       "Run the activation tool with option --manifest=MANIFEST.")
            return 1
    # Handle RHSM manifest
    try:
        cdn_activate = cdn_activation.Activation(options.manifest)
    except CdnMappingsLoadError as e:
        writeError(e)
        return 15
    except MissingSatelliteCertificateError as e:
        writeError(e)
        return 13
    except IncorrectEntitlementsFileFormatError as e:
        writeError(e)
        return 18

    # general sanity/GPG check
    try:
        validateSatCert(cdn_activate.manifest.get_satellite_certificate())
    except RHNCertGeneralSanityException as e:
        writeError(e)
        return 10

    # expiration check
    if not options.ignore_expiration:
        date = expiredYN(cdn_activate.manifest.get_satellite_certificate())
        if date:
            just_date = date.split(' ')[0]
            writeError(
                'Satellite Certificate appears to have expired: %s' % just_date)
            return 11

    if options.sanity_only:
        return 0

    if not options.disconnected:
        rhsm_uuid = getRHSMUuid()
        if not rhsm_uuid:
            writeError("System not registered to RHSM? No identity found. Please register system to RHSM"
                       " or run activation with --disconnected option.")
            return 90
        try:
            enableSatelliteRepo(cdn_activate.manifest.get_satellite_certificate())
        except EnableSatelliteRepositoryException:
            e = sys.exc_info()[1]
            writeError(e)
            return 91

    try:
        cdn_activate.activate()
    except ManifestValidationError:
        e = sys.exc_info()[1]
        writeError(e)
        return 14

    storeRhsmManifest(options)

    return 0


#-------------------------------------------------------------------------------
if __name__ == "__main__":
    sys.stderr.write('\nWARNING: intended to be wrapped by another executable\n'
                     '           calling program.\n')
    sys.exit(abs(main() or 0))
#===============================================================================
070701000000EE000081B40000000000000000000000016290A0C100000CC5000000000000000000000000000000000000003500000000spacewalk-backend/satellite_tools/rhn_ssl_dbstore.py  #
# Copyright (c) 2009--2016 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#

import os
import sys
from optparse import Option, OptionParser

from spacewalk.common import rhnTB
from spacewalk.server import rhnSQL

from . import satCerts

DEFAULT_TRUSTED_CERT = 'RHN-ORG-TRUSTED-SSL-CERT'


def processCommandline():

    options = [
        Option('--ca-cert',      action='store', default=DEFAULT_TRUSTED_CERT, type="string",
               help='public CA certificate, default is %s' % DEFAULT_TRUSTED_CERT),
        Option('--label',        action='store', default='RHN-ORG-TRUSTED-SSL-CERT', type="string",
               help='FOR TESTING ONLY - alternative database label for this CA certificate, '
               + 'default is "RHN-ORG-TRUSTED-SSL-CERT"'),
        Option('-v', '--verbose', action='count',
               help='be verbose (accumulable: -vvv means "be *really* verbose").'),
    ]

    values, args = OptionParser(option_list=options).parse_args()

    # we take no extra commandline arguments that are not linked to an option
    if args:
        msg = ("ERROR: these arguments make no sense in this context (try "
               "--help): %s\n" % repr(args))
        raise ValueError(msg)

    if not os.path.exists(values.ca_cert):
        sys.stderr.write("ERROR: can't find CA certificate at this location: "
                         "%s\n" % values.ca_cert)
        sys.exit(10)

    # pylint: disable=W0703
    try:
        rhnSQL.initDB()
    except Exception:
        sys.stderr.write("""\
ERROR: there was a problem trying to initialize the database:

%s\n""" % rhnTB.fetchTraceback())
        sys.exit(11)

    if values.verbose:
        print(('Public CA SSL certificate:  %s' % values.ca_cert))

    return values


#- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

def main():
    """ main routine
        10  CA certificate not found
        11  DB initialization failure
        13  Couldn't insert the certificate for whatever reason.
    """

    values = processCommandline()

    def writeError(e):
        sys.stderr.write('\nERROR: %s\n' % e)

    try:
        satCerts.store_CaCert(values.label, values.ca_cert, verbosity=values.verbose)
    except satCerts.CaCertInsertionError:
        writeError("Cannot insert certificate into DB!\n\n%s\n" % rhnTB.fetchTraceback())
        sys.exit(13)
    return 0

#-------------------------------------------------------------------------------
if __name__ == "__main__":
    sys.stderr.write('\nWARNING: intended to be wrapped by another executable\n'
                     '           calling program.\n')
    sys.exit(main() or 0)
#===============================================================================
   070701000000EF000081B40000000000000000000000016290A0C1000021AE000000000000000000000000000000000000002E00000000spacewalk-backend/satellite_tools/satCerts.py #
# Cert-related functions
#   - RHN certificate
#   - SSL CA certificate
#
# Copyright (c) 2008--2017 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#

# language imports
import sys
from datetime import datetime

from M2Crypto import X509

# other rhn imports
from uyuni.common.rhnLib import utc
from uyuni.common.usix import raise_with_tb
from spacewalk.server import rhnSQL
from spacewalk.common.rhnTB import fetchTraceback

# bare-except and broad-except
# pylint: disable=W0702,W0703


# Get not before and not after timestamps from given X509 certificate
def get_certificate_info(cert_str):
    cert = X509.load_cert_string(cert_str)
    not_before = cert.get_not_before().get_datetime()
    not_after = cert.get_not_after().get_datetime()
    subject = cert.get_subject()
    cn = subject.CN
    serial_number = cert.get_serial_number()
    return cn, serial_number, not_before, not_after


def verify_certificate_dates(cert_str):
    _, _, not_before, not_after = get_certificate_info(cert_str)
    now = datetime.now(utc)
    return not_before < now < not_after


def get_all_orgs():
    """ Fetch org_id. Create first org_id if needed.
        owner only needed if no org_id present
        NOTE: this is duplicated elsewhere (backend.py)
              but I need the error differientiation of (1) too many orgs
              and (2) no orgs. backend.py does not differientiate.
    """

    # Get the org id
    h = rhnSQL.prepare(_queryLookupOrgId)
    h.execute()
    rows = h.fetchall_dict()
    return rows or []

_queryLookupOrgId = rhnSQL.Statement("""
    SELECT id
      FROM web_customer
""")

#
# SSL CA certificate section
#

class CaCertInsertionError(Exception):
    pass


def lookup_cert(description, org_id):
    if org_id:
        h = rhnSQL.prepare(_querySelectCryptoCertInfo)
        h.execute(description=description, org_id=org_id)
    else:
        h = rhnSQL.prepare(_querySelectCryptoCertInfoNullOrg)
        h.execute(description=description)

    row = h.fetchone_dict()
    return row

def _checkCertMatch_rhnCryptoKey(cert, description, org_id, deleteRowYN=0,
                                 verbosity=0):
    """ is there an CA SSL certificate already in the database?
        If yes:
            return ID:
              -1, then no cert in DB
              None if they are identical (i.e., nothing to do)
              0...N if cert is in database

        if found, optionally deletes the row and returns -1
        Used ONLY by: store_rhnCryptoKey(...)
    """

    row = lookup_cert(description, org_id)
    rhn_cryptokey_id = -1
    if row:
        if cert == rhnSQL._fix_encoding(rhnSQL.read_lob(row['key'])):
            # match found, nothing to do
            if verbosity:
                print("Nothing to do: certificate to be pushed matches certificate in database.")
            return
        # there can only be one (bugzilla: 120297)
        rhn_cryptokey_id = int(row['id'])
        # print 'found existing certificate - id:', rhn_cryptokey_id
        # NUKE IT!
        if deleteRowYN:
            # print 'found a cert, nuking it! id:', rhn_cryptokey_id
            h = rhnSQL.prepare('delete from rhnCryptoKey where id=:rhn_cryptokey_id')
            h.execute(rhn_cryptokey_id=rhn_cryptokey_id)
            # rhnSQL.commit()
            rhn_cryptokey_id = -1
    return rhn_cryptokey_id


def _insertPrep_rhnCryptoKey(rhn_cryptokey_id, description, org_id):
    """ inserts a row given that a cert is not already in the database
        lob rewrite occurs later during update.
        Used ONLY by: store_rhnCryptoKey(...)
    """

    # NOTE: due to a uniqueness constraint on description
    #       we can't increment and reinsert a row, so we only
    #       do so if the row does not exist.
    #       bugzilla: 120297 - and no I don't like it.
    rhn_cryptokey_id_seq = rhnSQL.Sequence('rhn_cryptokey_id_seq')
    rhn_cryptokey_id = rhn_cryptokey_id_seq.next()
    # print 'no cert found, new one with id:', rhn_cryptokey_id
    h = rhnSQL.prepare(_queryInsertCryptoCertInfo)
    # ...insert
    h.execute(rhn_cryptokey_id=rhn_cryptokey_id,
              description=description, org_id=org_id)
    return rhn_cryptokey_id


def _lobUpdate_rhnCryptoKey(rhn_cryptokey_id, cert):
    """ writes/updates the cert as a lob """

    # Use our update blob wrapper to accomodate differences between Oracle
    # and PostgreSQL:
    h = rhnSQL.cursor()
    try:
        h.update_blob("rhnCryptoKey", "key", "WHERE id = :rhn_cryptokey_id",
                      cert, rhn_cryptokey_id=rhn_cryptokey_id)
    except:
        # didn't go in!
        raise_with_tb(CaCertInsertionError("ERROR: CA certificate failed to be "
                                           "inserted into the database"), sys.exc_info()[2])


def store_CaCert(description, caCert, verbosity=0):
    org_ids = get_all_orgs()
    org_ids.append({'id': None})
    f = open(caCert, 'rb')
    try:
        cert = f.read().strip()
    finally:
        if f is not None:
            f.close()
    for org_id in org_ids:
        org_id = org_id['id']
        store_rhnCryptoKey(description, cert, org_id, verbosity)

def store_rhnCryptoKey(description, cert, org_id, verbosity=0):
    """ stores cert in rhnCryptoKey
        uses:
            _checkCertMatch_rhnCryptoKey
            _delete_rhnCryptoKey - not currently used
            _insertPrep_rhnCryptoKey
            _lobUpdate_rhnCryptoKey
    """
    try:
        # look for a cert match in the database
        rhn_cryptokey_id = _checkCertMatch_rhnCryptoKey(cert, description,
                                                        org_id, deleteRowYN=1,
                                                        verbosity=verbosity)
        if rhn_cryptokey_id is None:
            # nothing to do - cert matches
            return
        # insert into the database
        if rhn_cryptokey_id == -1:
            rhn_cryptokey_id = _insertPrep_rhnCryptoKey(rhn_cryptokey_id,
                                                        description, org_id)
        # write/update
        _lobUpdate_rhnCryptoKey(rhn_cryptokey_id, cert)
        rhnSQL.commit()
    except rhnSQL.sql_base.SQLError:
        raise_with_tb(CaCertInsertionError(
            "...the traceback: %s" % fetchTraceback()), sys.exc_info()[2])


def delete_rhnCryptoKey_null_org(description_prefix):
    h = rhnSQL.prepare(_queryDeleteCryptoCertInfoNullOrg)
    h.execute(description_prefix=description_prefix)


_queryDeleteCryptoCertInfoNullOrg = rhnSQL.Statement("""
    DELETE FROM rhnCryptoKey ck
    WHERE ck.description LIKE :description_prefix || '%%'
      AND ck.crypto_key_type_id = (SELECT id FROM rhnCryptoKeyType WHERE label = 'SSL')
      AND ck.org_id is NULL
""")

_querySelectCryptoCertInfo = rhnSQL.Statement("""
    SELECT ck.id, ck.description, ckt.label as type_label, ck.key
      FROM rhnCryptoKeyType ckt,
           rhnCryptoKey ck
     WHERE ckt.label = 'SSL'
       AND ckt.id = ck.crypto_key_type_id
       AND ck.description = :description
       AND ck.org_id = :org_id
""")

_querySelectCryptoCertInfoNullOrg = rhnSQL.Statement("""
    SELECT ck.id, ck.description, ckt.label as type_label, ck.key
      FROM rhnCryptoKeyType ckt,
           rhnCryptoKey ck
     WHERE ckt.label = 'SSL'
       AND ckt.id = ck.crypto_key_type_id
       AND ck.description = :description
       AND ck.org_id is NULL
""")

_queryInsertCryptoCertInfo = rhnSQL.Statement("""
    INSERT into rhnCryptoKey
           (id, org_id, description, crypto_key_type_id, key)
    SELECT :rhn_cryptokey_id, :org_id, :description, ckt.id, empty_blob()
      FROM rhnCryptoKeyType ckt
     WHERE ckt.label = 'SSL'
""")

def _test_store_rhnCryptoKey(caCert):
    description = 'RHN-ORG-TRUSTED-SSL-CERT'
    store_CaCert(description, caCert)

if __name__ == '__main__':
    rhnSQL.initDB()

    _test_store_rhnCryptoKey('ca.crt')

    # NOTE!!! This has be seg-faulting on exit, specifically upon closeDB()
    #         Bugzilla: 127324

    print("end of __main__")
    rhnSQL.closeDB()
    print("we have closed the database")
  070701000000F0000081B40000000000000000000000016290A0C100001A7E000000000000000000000000000000000000003A00000000spacewalk-backend/satellite_tools/satComputePkgHeaders.py #
# Copyright (c) 2008--2017 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#
# From the _apache.py
# this is a dummy module that makes pychecker happy and provides
# the _apache module, whcih is normally provided by mod_python
# when a script runs under it

import sys
from optparse import OptionParser, Option

from spacewalk.server import rhnSQL
from uyuni.common import rhn_rpm
from uyuni.common.rhn_pkg import InvalidPackageError

SERVER_RETURN = 0


def log_error(*_args):
    pass


def make_table(*_args):
    pass


def parse_qs(*_args):
    pass


def parse_qsl(*_args):
    pass

status = None
table = None
config_tree = None
server_root = None
mpm_query = None
exists_config_define = None

OK = 1

# End of _apache.py

sys.modules["_apache"] = sys.modules["__main__"]

options_table = [
    Option("-v", "--verbose",       action="count",
           help="Increase verbosity"),
    Option("--commit",              action="store_true",
           help="Commit work"),
    Option("--backup-file",         action="store",
           help="Backup packages into this file"),
    Option("--prefix",              action="store",     default='/pub',
           help="Prefix to find files in"),
]


class Runner:

    def __init__(self):
        self.options = None
        self._channels_hash = None
        self._channel_packages = {}

    def main(self):
        parser = OptionParser(option_list=options_table)

        (self.options, _args) = parser.parse_args()

        rhnSQL.initDB()

        self._channels_hash = self._get_channels()

        package_ids = self._get_packages()
        if package_ids is None:
            return 1

        if self.options.backup_file:
            self._backup_packages(package_ids, self.options.backup_file)

        try:
            self._add_package_header_values(package_ids)
        except:
            rhnSQL.rollback()
            raise

        if self.options.commit:
            print("Commiting work")
            rhnSQL.commit()
        else:
            print("Rolling back")
            rhnSQL.rollback()

    def _get_packages(self):
        package_ids = {}

        h = rhnSQL.prepare(self._query_get_packages)
        for channel_id in list(self._channels_hash.values()):
            h.execute(channel_id=channel_id)
            while 1:
                row = h.fetchone_dict()
                if not row:
                    break
                package_id = row['package_id']
                package_ids[package_id] = (row['path'], row['header_start'], row['header_end'])

        self._channel_packages = {}
        orphaned_packages = {}
        # Now, for each package, get the channels it's part of
        h = rhnSQL.prepare(self._query_get_channel_packages)
        for package_id in package_ids:
            h.execute(package_id=package_id)
            while 1:
                row = h.fetchone_dict()
                if not row:
                    break
                channel_label = row['label']
                if package_id in self._channel_packages:
                    l = self._channel_packages[package_id]
                else:
                    l = self._channel_packages[package_id] = []
                l.append(channel_label)

                if channel_label not in self._channels_hash:
                    orphaned_packages[package_id] = None

        if orphaned_packages:
            print("Bailing out because of packages shared with other channels")
            for package_id in orphaned_packages:
                channels = self._channel_packages[package_id]
                print((package_id, channels))
            return None

        return package_ids

    _query_get_channel_packages = rhnSQL.Statement("""
        select c.id, c.label
          from rhnChannel c,
               rhnChannelPackage cp
         where cp.package_id = :package_id
           and cp.channel_id = c.id
    """)

    _query_get_channels = rhnSQL.Statement("""
        select id, label from rhnChannel
    """)

    def _get_channels(self):
        h = rhnSQL.prepare(self._query_get_channels)
        h.execute()

        ret = {}
        while 1:
            row = h.fetchone_dict()
            if not row:
                break
            ret[row['label']] = row['id']
        return ret

    _query_get_packages = rhnSQL.Statement("""
        select cp.package_id, p.path, p.header_start, p.header_end
          from rhnChannelPackage cp,
               rhnPackage p
         where cp.channel_id = :channel_id
           and cp.package_id = p.id
           and p.path is not null
           and p.header_start = -1
    """)

    _query_add_package_header_values = rhnSQL.Statement("""
        update rhnPackage
           set header_start = :header_start,
               header_end = :header_end
         where id = :package_id
    """)

    def _add_package_header_values(self, package_ids):
        if not package_ids:
            return
        h = rhnSQL.prepare(self._query_add_package_header_values)
        for package_id, (path, header_start, header_end) in list(package_ids.items()):
            try:
                p_file = file(self.options.prefix + "/" + path, 'r')
            except IOError:
                print(("Error opening file %s" % path))
                continue

            try:
                (header_start, header_end) = rhn_rpm.get_header_byte_range(p_file)
            except InvalidPackageError:
                e = sys.exc_info()[1]
                print(("Error reading header size from file %s: %s" % (path, e)))

            try:
                h.execute(package_id=package_id, header_start=header_start, header_end=header_end)
            except rhnSQL.SQLError:
                pass

    @staticmethod
    def _backup_packages(package_ids, backup_file):
        f = open(backup_file, "w+")

        if not package_ids:
            return

        template = "update rhnPackage set header_start=%s and header_end=%s where id = %s;\n"
        for package_id, (_path, header_start, header_end) in list(package_ids.items()):
            s = template % (header_start, header_end, package_id)
            f.write(s)
        f.write("commit;\n")
        f.close()

if __name__ == '__main__':
    sys.exit(Runner().main() or 0)
  070701000000F1000081FD0000000000000000000000016290A0C1000018A1000000000000000000000000000000000000003100000000spacewalk-backend/satellite_tools/satellite-sync  #!/usr/bin/python
#
# Script to synchronize RHN meta data between Red Hat and a local Red Hat Satellite.
#
# Copyright (c) 2008--2015 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#

# For return codes see bottom of this file

if __name__ != '__main__':
    raise ImportError("module cannot be imported")

import sys


def systemExit(code, msgs=None):
    "Exit with a code and optional message(s). Saved a few lines of code."

    if msgs:
        if type(msgs) not in [type([]), type(())]:
            msgs = (msgs, )
        for msg in msgs:
            sys.stderr.write(str(msg) + '\n')
    sys.exit(code)


import os
import socket

if hasattr(socket, 'sslerror'):
    socket_error = socket.sslerror
else:
    from ssl import socket_error


# quick check to see if you are a super-user.
if os.getuid() != 0:
    sys.stderr.write('ERROR: must be root to execute\n')
    sys.exit(8)


try:
    from rhn import rhnLockfile
    from spacewalk.common.rhnTB import fetchTraceback
except KeyboardInterrupt:
    systemExit(0, "\nUser interrupted process.")
except ImportError:
    sys.stderr.write("Unable to find code tree.\n"
                     "Make sure that the needed libraries are installed and the path is correct: '%s'\n" % _LIBPATH)
    raise


# acquire lock/check for other instances of satellite-sync
#   i.e., lock against multiple instances of satellite-sync
LOCK = None
try:
    LOCK = rhnLockfile.Lockfile('/var/run/satellite-sync.pid')
except rhnLockfile.LockfileLockedException:
    systemExit(1, "SYNC ERROR: attempting to run more than one instance of mgr-inter-sync. Exiting.")

try:
    # NOTE: importing satsync will initialize the logs and CFG
    from spacewalk.satellite_tools import satsync, syncLib
except KeyboardInterrupt:
    systemExit(0, "\nUser interrupted process.")
except ImportError as e:
    systemExit(2, "Unable to find synchronization tools.\n"
                  "Error: %s" % e)


def repr_str(e):
    """ return a repr(e), str(e) string safely
        Will return something like:
            '''
            ...repr(e)...
            ...str(e)...'''
    """

    s = ''

    hasReprYN = hasattr(e, '__repr__')
    hasStrYN = hasattr(e, '__str__')

    if hasReprYN and hasStrYN and e.__repr__ == e.__str__:
        s = '\n%s' % repr(e)
    else:
        if hasReprYN:
            s = '\n%s' % repr(e)
        if hasStrYN:
            s = s + '\n%s' % str(e)
    return s


def systemExit_exception(code, msgs, e):
    """ Exit with a code. Message will head exception info.
        Traceback will be added to email log and written to disk.
        Email log is sent.
    """

    header = ''
    if msgs:
        if type(msgs) not in [type([]), type(())]:
            msgs = (msgs, )
        for msg in msgs:
            header = header + str(msg) + '\n'
        header = header + '\n'

    # write to disk (log file) and email
    tb = header + fetchTraceback()
    syncLib.log2disk(-1, tb)
    # force the whole email thing
    syncLib.initEMAIL_LOG()
    syncLib.log2email(-1, tb)

    # write to stderr, send the email, and exit
    stderrmsg = header + "(Check logs/email for potentially more detail)\n" + \
        repr_str(e) + '\n'
    satsync.sendMail(forceEmail=1)
    systemExit(code, stderrmsg)


def releaseLOCK():
    global LOCK
    if LOCK:
        LOCK.release()


def main():
    # execute
    try:
        return satsync.Runner().main()
    except KeyboardInterrupt:
        systemExit(0, "\nUser interrupted process.")
    except SystemExit:
        satsync.sendMail()
        raise
    except socket.error as e:
        msg = "\nERROR: a general socket exception occurred:"
        systemExit_exception(3, msg, e)
    except socket_error as e:
        msg = ("""
ERROR: an SSL error occurred. Recheck your SSL settings. Those settings may
       include URL's, SSL Certificate settings, firewall rules, etc..
       Also, check that your system time has not drifted! Time drift is one
       of the primary reasons for SSL connection failures.""")
        systemExit_exception(4, msg, e)
    except syncLib.RhnSyncException as e:
        msg = "\nSYNC ERROR:"
        systemExit_exception(5, msg, e)
    except Exception as e:
        msg = "\nSYNC ERROR: unhandled exception occurred:"
        systemExit_exception(6, msg, e)

    releaseLOCK()
    return 0


if __name__ == '__main__':
    try:
        sys.exit(abs(main() or 0))
    except KeyboardInterrupt:
        systemExit(0, "\nUser interrupted process.")
    except SystemExit as e:
        releaseLOCK()
        sys.exit(e.code)
    except Exception as e:
        releaseLOCK()
        systemExit_exception(7, "SYNC ERROR: attempting to display as much information as possible:", e)


# Returned codes means:
#-1 Could not lock file or KeyboardInterrupt or SystemExit
# 0  User interrupted process.
# 1  attempting to run more than one instance of satellite-sync.
# 2  Unable to find synchronization tools.
# 3  a general socket exception occurred
# 4  an SSL error occurred. Recheck your SSL settings.
# 5  RHN error
# 6  unhandled exception occurred
# 7  unknown sync error
# 8  ERROR: must be root to execute
# 9  rpclib fault during synchronization init
# 10 synchronization init error
# 11 Error parsing XML stream
# 12 Channel do not exist
# 13 SQL error during importing package metadata
# 14 SQL error during linking channel packages
# 15 SQL error during xml processing
# 16 server.mount_point not set in the configuration file
# 17 SQL error during retrieving the channels already imported in the satellite's database
# 18 Wrong db connection string in rhn.conf
# 19 Bad arguments
# 20 Could not connect to db.
# 21 Bad debug level
# 22 Not valid step
# 24 no such file
# 25 no such directory
# 26 ISS parent is not configure for ISS
   070701000000F2000081B40000000000000000000000016290A0C100004A99000000000000000000000000000000000000003600000000spacewalk-backend/satellite_tools/satellite-sync.sgml <!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook V3.1//EN" [
<!ENTITY RHNSAT "SUSE Manager Server" >
<!ENTITY RHNSYNC "SUSE Manager Incremental Synchronization Tool" >

]>
<refentry>

<RefMeta>
<RefEntryTitle>satellite-sync</RefEntryTitle><manvolnum>8</manvolnum>
<RefMiscInfo>Version 3.5.0</RefMiscInfo>
</RefMeta>

<RefNameDiv>
<RefName><command>satellite-sync</command></RefName>
<RefPurpose>
Incrementally synchronize a SUSE Manager Server DB data and RPM repository with another SUSE Manager Server DB and RPM repository.
</RefPurpose>
</RefNameDiv>

<RefSynopsisDiv>
<Synopsis>
    <cmdsynopsis>
        <command>satellite-sync</command>
        <arg>options <replaceable>...</replaceable></arg>
        <arg>-m<replaceable>DIRECTORY</replaceable></arg>
        <arg>--mount-point=<replaceable>DIRECTORY</replaceable></arg>
    </cmdsynopsis>
    <cmdsynopsis>
         <arg>-l</arg> <arg>--list-channels</arg>
    </cmdsynopsis>
    <cmdsynopsis>
        <arg>-c<replaceable>CHANNEL</replaceable></arg>
        <arg>--channel=<replaceable>CHANNEL</replaceable></arg>
    </cmdsynopsis>
    <cmdsynopsis>
        <arg>--iss-parent=<replaceable>ISS_PARENT</replaceable></arg>
    </cmdsynopsis>
    <cmdsynopsis>
        <arg>-p</arg> <arg>--print-configuration</arg>
    </cmdsynopsis>
    <cmdsynopsis>
        <arg>--step=[<replaceable>channels|rpms|packages|<!--source-packages|srpms|-->errata|kickstarts</replaceable>]</arg>
    </cmdsynopsis>
    <cmdsynopsis>
        <arg>--no-rpms</arg>
    </cmdsynopsis>
    <cmdsynopsis>
        <arg>--no-packages</arg>
    </cmdsynopsis>
    <cmdsynopsis>
        <arg>--no-ssl</arg>
    </cmdsynopsis>
    <cmdsynopsis>
        <arg>--force-all-errata</arg>
    </cmdsynopsis>
<!--
    <cmdsynopsis>
        <arg>- -source-packages</arg>
    </cmdsynopsis>
    <cmdsynopsis>
        <arg>- -no-source-packages</arg>
    </cmdsynopsis>
    <cmdsynopsis>
        <arg>- -no-srpms</arg>
    </cmdsynopsis>
-->
    <cmdsynopsis>
        <arg>--no-errata</arg>
    </cmdsynopsis>
    <cmdsynopsis>
        <arg>--no-kickstarts</arg>
    </cmdsynopsis>
    <cmdsynopsis>
        <arg>--keep-rpms</arg>
    </cmdsynopsis>
    <cmdsynopsis>
        <arg>--master</arg>
    </cmdsynopsis>
    <cmdsynopsis>
        <arg>--debug-level=<replaceable>DEBUG_LEVEL</replaceable></arg>
    </cmdsynopsis>
    <cmdsynopsis>
        <arg>--email</arg>
    </cmdsynopsis>
    <cmdsynopsis>
        <arg>--traceback-mail=<replaceable>EMAIL_ADDESS(ES)</replaceable></arg>
    </cmdsynopsis>
    <cmdsynopsis>
        <arg>-s<replaceable>HOSTNAME</replaceable></arg>
        <arg>--server=<replaceable>HOSTNAME</replaceable></arg>
    </cmdsynopsis>
    <cmdsynopsis>
        <arg>--ignore-proxy</arg>
    </cmdsynopsis>
    <cmdsynopsis>
        <arg>--http-proxy=<replaceable>HOSTNAME:PORT</replaceable></arg>
    </cmdsynopsis>
    <cmdsynopsis>
        <arg>--http-proxy-username=<replaceable>USERNAME</replaceable></arg>
    </cmdsynopsis>
    <cmdsynopsis>
        <arg>--http-proxy-password=<replaceable>PASSWORD</replaceable></arg>
    </cmdsynopsis>
    <cmdsynopsis>
        <arg>--ca-cert=<replaceable>SSL_CA_CERT_FULL_PATH</replaceable></arg>
    </cmdsynopsis>
    <cmdsynopsis>
        <arg>--orgid=<replaceable>ORGID</replaceable></arg>
    </cmdsynopsis>
    <cmdsynopsis>
        <arg>--systemid=<replaceable>SYSTEMID_PATH</replaceable></arg>
    </cmdsynopsis>
    <cmdsynopsis>
        <arg>--batch-size=<replaceable>BATCH_SIZE</replaceable></arg>
    </cmdsynopsis>
    <cmdsynopsis>
        <arg>--list-error-codes</arg>
    </cmdsynopsis>
    <cmdsynopsis>
        <arg>--no-ssl</arg>
    </cmdsynopsis>
    <cmdsynopsis>
        <arg>--sync-to-temp</arg>
    </cmdsynopsis>
    <cmdsynopsis>
        <arg>-h</arg> <arg>--help</arg>
    </cmdsynopsis>
    <cmdsynopsis>
        <arg>--usage</arg>
    </cmdsynopsis>
</Synopsis>
</RefSynopsisDiv>

<RefSect1><Title>Description</Title>
<para>
    The &RHNSYNC; (<emphasis>satellite-sync</emphasis>) synchronizes
    an &RHNSAT; with another SUSE Manager Server.
</para>
<para>
    This tool enables a &RHNSAT; to update its database metadata and
    RPM packages with that of another SUSE Manager Server. This action can be performed via
    the internet (ie. directly) or via the local file-system (an update/channel
    CD dumped to the appropriate mount point).
</para>
<para>
    Options set by default if no options given: --cache-refresh-level 2, and
    all --step options.
</para>
<para>
    The --step options describe a step in a process (channels,
    rpms, packages, errata, kickstarts). I.e. by default, the process is:
</para>
<para>
        <!--
        <simplelist>
            <member>o arches: sync arch data</member>
        </simplelist>
        <simplelist>
            <member>o channel-families: sync channel family data</member>
        </simplelist>
        -->
        <simplelist>
            <member>o channels: sync channel data</member>
        </simplelist>
        <simplelist>
            <member>o rpms: sync (fetch) rpms</member>
        </simplelist>
        <simplelist>
            <member>o packages: sync full package metadata for those rpms fetched successfully</member>
        </simplelist>
        <simplelist>
            <member>o errata: sync errata data</member>
        </simplelist>
        <simplelist>
            <member>o kickstarts: sync kickstart data</member>
        </simplelist>
</para>
<para>
    Each option is dependent on the other. So, for example, if you use
    "--step packages" and no other option, all other steps that occur prior to
    the "packages" step will be performed as well.
</para>
<para>
    As can be imagined, "--step channels" is called for nearly all operations.
</para>
</RefSect1>

<RefSect1><Title>Options</Title>
<variablelist>
    <varlistentry>
        <term>-h, --help</term>
        <listitem>
            <para>Display the help screen with a list of options.</para>
        </listitem>
    </varlistentry>
    <varlistentry>
        <term>--usage</term>
        <listitem>
            <para>Display the usage options for satellite sync.</para>
        </listitem>
    </varlistentry>
    <varlistentry>
        <term>-m<replaceable>DIRECTORY</replaceable>,
            --mount-point=<replaceable>DIRECTORY</replaceable></term>
        <listitem>
            <para>mount point for import : disk update or disconnected install only.</para>
        </listitem>
    </varlistentry>
    <varlistentry>
        <term>--consider-full</term>
        <listitem>
            <para>When this option is used, the export being synced from disk dump will be
                  considered to be a full export; any package in the channel
                  but not in the export will be deleted. Without this option all disk dumps
                  are interpreted as incremental dumps.
                  This option has sense only for --mount-point.
                  Sync via ISS is always considered as full sync.</para>
        </listitem>
    </varlistentry>
    <varlistentry>
        <term>--include-custom-channels</term>
        <listitem>
            <para>When satellite-sync is run without the -c/--channel options,
            traditionally only Red Hat channels (with null org) are resynced.
            With this option, existing custom channels are also synced from
	    the channel dump, regardless of whether they were created by previous
            satellite-sync run or manually.
            </para>
        </listitem>
    </varlistentry>
    <varlistentry>
        <term>-l, --list-channels</term>
        <listitem>
            <para>list all available channels for import/syncing and exit.</para>
        </listitem>
    </varlistentry>
    <varlistentry>
        <term>-c<replaceable>CHANNEL</replaceable>,
            --channel=<replaceable>CHANNEL</replaceable></term>
        <listitem>
            <para>process data for this channel only.</para>
        </listitem>
    </varlistentry>
    <varlistentry>
        <term>--iss-parent</term>
        <listitem>
            <para>parent satellite to import content from.</para>
        </listitem>
    </varlistentry>
    <varlistentry>
        <term>-p, --print-configuration</term>
        <listitem>
            <para>print the current configuration and exit.</para>
        </listitem>
    </varlistentry>
    <varlistentry>
        <term>--no-ssl</term>
        <listitem>
            <para>turn off SSL (not recommended).</para>
        </listitem>
    </varlistentry>
    <varlistentry>
        <term>--no-rpms</term>
        <listitem>
            <para>do not fetch actual rpms.</para>
        </listitem>
    </varlistentry>
    <varlistentry>
        <term>--no-packages</term>
        <listitem>
            <para>do not process full package metadata.</para>
        </listitem>
    </varlistentry>
    <!--
    <varlistentry>
        <term>- -source-packages</term>
        <listitem>
            <para>do not process source package metadata.</para>
        </listitem>
    </varlistentry>
    <varlistentry>
        <term>- -no-source-packages</term>
        <listitem>
            <para>do not process source package metadata.</para>
        </listitem>
    </varlistentry>
    <varlistentry>
        <term>- -no-srpms</term>
        <listitem>
            <para></para>
        </listitem>
    </varlistentry>
    -->
    <varlistentry>
        <term>--no-errata</term>
        <listitem>
            <para>do not process errata data.</para>
        </listitem>
    </varlistentry>
    <varlistentry>
        <term>--no-kickstarts</term>
        <listitem>
            <para>do not process kickstart data (provisioning feature).</para>
        </listitem>
    </varlistentry>
    <varlistentry>
        <term>--keep-rpms</term>
        <listitem>
            <para>do not remove rpms when importing from local dump.</para>
        </listitem>
    </varlistentry>
    <varlistentry>
        <term>--master</term>
        <listitem>
            <para>the fully qualified domain name of the master Satellite. Valid with
            --mount-point only. Required if you want to import org data and channel
            permissions.</para>
        </listitem>
    </varlistentry>
    <varlistentry>
        <term>--force-all-errata</term>
        <listitem>
            <simpara>forcibly process all errata metadata regardless of diff results.</simpara>
        </listitem>
    </varlistentry>
    <varlistentry>
        <term>--debug-level=<replaceable>DEBUG_LEVEL</replaceable></term>
        <listitem>
            <para>Override the level (amount) of messaging to both the
            log files and the screen. This debug level is set in
            /etc/rhn/rhn.conf (the debug variable). The default setting
            (for normal levels of messaging) is 2. --debug-level can be set
            to a level between 0 (nearly no messaging) to 6 (insane amount of
            messaging).</para>
        </listitem>
    </varlistentry>
    <varlistentry>
        <term>--email</term>
        <listitem>
            <para>e-mail a report of what was synced/imported (sent to whomever
            is considered the receiver of "traceback_mail").</para>
        </listitem>
    </varlistentry>
    <varlistentry>
        <term>--traceback-mail=<replaceable>EMAIL_ADDRESS(ES)</replaceable></term>
        <listitem>
            <para>alternative email address(es) for all sync correspondence.
            Example: --traceback-mail="user1@example.com, user2@example.com".</para>
        </listitem>
    </varlistentry>
    <varlistentry>
        <term>-s<replaceable>HOSTNAME</replaceable>,
           --server=<replaceable>HOSTNAME</replaceable></term>
        <listitem>
            <para>alternative server with which to connect (hostname).</para>
        </listitem>
    </varlistentry>
</variablelist>
</RefSect1>

<RefSect1><Title>DEBUGGING and EXPERIMENTAL Options</Title>
<variablelist>
    <varlistentry>
        <term>--step=[<replaceable>channels|rpms|packages|errata|kickstarts</replaceable>]</term>
        <listitem>
            <para>DEBUG ONLY:</para>
            <para>Perform the sync process *only* to the step specified</para>
            <variablelist>
                <!--
                <varlistentry>
                <term>channel-families</term>
                <listitem>
                    <para>process channel family data. ***don't use this
                    option*** It is rarely used. The step, "channels",
                    or nearly any other step, will process channel families
                    as well.</para>
                </listitem>
                </varlistentry>
                -->
                <varlistentry>
                <term>channels</term>
                <listitem>
                    <para>process channel data. This option will automatically
                    enable the "arches" step.</para>
                </listitem>
                </varlistentry>
                <varlistentry>
                <term>rpms</term>
                <listitem>
                    <para>fetch rpms and fill repository. This option will
                    automatically enable the "channels" step.</para>
                </listitem>
                </varlistentry>
                <varlistentry>
                <term>packages</term>
                <listitem>
                    <para>process full package metadata (can be very slow). This
                    option will automatically enable the "rpms" step.</para>
                </listitem>
                </varlistentry>
                <!--
                <varlistentry>
                <term>source-packages</term>
                <listitem>
                    <para>process source package metadata.</para>
                    <para>this option will automatically enable -step packages.</para>
                </listitem>
                </varlistentry>
                -->
                <varlistentry>
                <term>errata</term>
                <listitem>
                    <para>process errata data. This option will
                    automatically enable the "channels" step.</para>
                </listitem>
                </varlistentry>
                <varlistentry>
                <term>kickstarts</term>
                <listitem>
                    <simpara>process kickstart data (metadata and files) for
                    provisioning. This option will automatically enable the
                    "channels" step.</simpara>
                </listitem>
                </varlistentry>
            </variablelist>
        </listitem>
    </varlistentry>
    <varlistentry>
        <term>--ignore-proxy</term>
        <listitem>
            <para>Do not use an http proxy under any circumstances</para>
        </listitem>
    </varlistentry>
    <varlistentry>
        <term>--http-proxy=<replaceable>HOSTNAME:PORT</replaceable></term>
        <listitem>
            <para>alternative http proxy (hostname:port)</para>
        </listitem>
    </varlistentry>
    <varlistentry>
        <term>--http-proxy-username=<replaceable>USERNAME</replaceable></term>
        <listitem>
            <para>alternative http proxy username</para>
        </listitem>
    </varlistentry>
    <varlistentry>
        <term>--http-proxy-password=<replaceable>PASSWORD</replaceable></term>
        <listitem>
            <para>alternative http proxy password</para>
        </listitem>
    </varlistentry>
    <varlistentry>
        <term>--ca-cert=<replaceable>SSL_CA_CERT_FULL_PATH</replaceable></term>
        <listitem>
            <para>alternative SSL CA Cert (fullpath to cert file)</para>
        </listitem>
    </varlistentry>
    <varlistentry>
        <term>--orgid=<replaceable>ORGID</replaceable></term>
        <listitem>
            <para>Organization to which the sync imports data.
            The default is to the administrator's account.</para>
        </listitem>
    </varlistentry>
    <varlistentry>
        <term>--systemid=<replaceable>SYSTEMID_PATH</replaceable></term>
        <listitem>
            <para>DEBUG ONLY: alternative path to digital system id. This option
            is generally only useful for internal testing.</para>
        </listitem>
    </varlistentry>
    <varlistentry>
        <term>--batch-size=<replaceable>BATCH_SIZE</replaceable></term>
        <listitem>
            <para>DEBUG ONLY: maximum batch-size for XML/database-import processing
            (1..50).</para>
            <para>This option should not be used except for debugging
            purposes. The most useful case being --batch-size=1 where the
            XML parser and database import process each piece of meta-data
            one at a time, isolating any issues.</para>
            <para>WARNING: --batch-size=1 will dramatically slow down the
            sync process.</para>
        </listitem>
    </varlistentry>
    <varlistentry>
        <term>--list-error-codes</term>
        <listitem>
            <para>list the possible exit codes for satellite-sync</para>
        </listitem>
    </varlistentry>
    <varlistentry>
        <term>--sync-to-temp</term>
        <listitem>
            <para>stream content being synchronized to a tempfile</para>
            <para>On heavily-loaded systems, or network topologies with short timeouts, it
            is possible for a satellite-sync to abort with 'IncompleteRead: IncompleteRead(..)',
            and a UnicodeDecodeError in the sync-logs. This is the result of a partial
            read in the midst of a GzipStream.</para>
            <para>This option tells satellite-sync to stream content being synchronized to a
            local tempfile prior to passing it to the rest of the satellite-sync processing,
            which alleviates this issue.</para>
            <para>This option can be made the default for all satellite-syncs by setting the
            configuration option 'sync_to_temp = 1' in /etc/rhn/rhn.conf.</para>
        </listitem>
    </varlistentry>
</variablelist>
</RefSect1>

<RefSect1><Title>Examples</Title>
<simplelist>
        <member><command>satellite-sync -m /var/tmp/channel-dumps --list-channels</command></member>
        <member><command>satellite-sync -m /var/tmp/channel-dumps -c rhel-x86_64-server-7</command></member>
        <member><command>satellite-sync --iss-parent=stage-satellite.yourorg.com -c rhel-x86_64-server-7</command></member>
</simplelist>
</RefSect1>

<RefSect1><Title>See Also</Title>
<simplelist>
    <member>db-control(1) - embedded database environment only!</member>
    <member>rhn-charsets(8)</member>
    <member>rhnpush(8)</member>
    <member>rhn-schema-version(8)</member>
    <member>rhn-ssl-dbstore(8)</member>
</simplelist>
</RefSect1>

<RefSect1><Title>Authors</Title>
<simplelist>
    <member>Todd Warner <email>taw@redhat.com</email></member>
    <member>Mihai Ibanescu <email>misa@redhat.com</email></member>
    <member>Pradeep Kilambi <email>pkilambi@redhat.com</email></member>
</simplelist>
</RefSect1>
</RefEntry>

<!--
vim: sw=4
-->
   070701000000F3000081B40000000000000000000000016290A0C10001A26B000000000000000000000000000000000000002D00000000spacewalk-backend/satellite_tools/satsync.py  #
# Copyright (c) 2008--2018 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#
# Spacewalk Incremental Synchronization Tool
#    main function.


# __lang. imports__
# pylint: disable=E0012, C0413
import datetime
import os
import sys
import stat
import time
import fnmatch
try:
    #  python 2
    import Queue
except ImportError:
    #  python3
    import queue as Queue # pylint: disable=F0401
import threading
from optparse import Option, OptionParser
import gettext
from rhn.connections import idn_ascii_to_puny, idn_puny_to_unicode

sys.path.append("/usr/share/rhn")
from up2date_client import config

# __rhn imports__
from uyuni.common import usix
from uyuni.common import rhnLib
from spacewalk.common import rhnMail
from spacewalk.common.rhnLog import initLOG
from spacewalk.common.rhnConfig import CFG, initCFG, PRODUCT_NAME
from spacewalk.common.rhnTB import exitWithTraceback, fetchTraceback
from uyuni.common.checksum import getFileChecksum
from spacewalk.server import rhnSQL
from spacewalk.server.rhnSQL import SQLError, SQLSchemaError, SQLConnectError
from spacewalk.server.rhnLib import get_package_path
from uyuni.common import fileutils

# __rhn sync/import imports__
from spacewalk.satellite_tools import xmlWireSource
from spacewalk.satellite_tools import xmlDiskSource
from spacewalk.satellite_tools.progress_bar import ProgressBar
from spacewalk.satellite_tools.xmlSource import FatalParseException, ParseException
from spacewalk.satellite_tools.diskImportLib import rpmsPath

from spacewalk.satellite_tools.syncLib import log, log2, log2disk, log2stderr, log2email
from spacewalk.satellite_tools.syncLib import RhnSyncException, RpmManip, ReprocessingNeeded
from spacewalk.satellite_tools.syncLib import initEMAIL_LOG, dumpEMAIL_LOG
from spacewalk.satellite_tools.syncLib import FileCreationError, FileManip

from spacewalk.satellite_tools.SequenceServer import SequenceServer
from spacewalk.server.importlib.errataCache import schedule_errata_cache_update

from spacewalk.server.importlib.importLib import InvalidChannelFamilyError
from spacewalk.server.importlib.importLib import MissingParentChannelError
from spacewalk.server.importlib.importLib import get_nevra, get_nevra_dict

from spacewalk.satellite_tools import satCerts
from spacewalk.satellite_tools import req_channels
from spacewalk.satellite_tools import messages
from spacewalk.satellite_tools import sync_handlers
from spacewalk.satellite_tools import constants

translation = gettext.translation('spacewalk-backend-server', fallback=True)
_ = translation.gettext
initCFG('server.satellite')
initLOG(CFG.LOG_FILE, CFG.DEBUG)

_DEFAULT_SYSTEMID_PATH = '/etc/sysconfig/rhn/systemid'
DEFAULT_ORG = 1

# the option object is used everywhere in this module... make it a
# global so we don't have to pass it to everyone.
OPTIONS = None

# pylint: disable=W0212


class Runner:
    step_precedence = {
        'packages': ['download-packages'],
        'source-packages': ['download-source-packages'],
        'errata': ['download-errata'],
        'kickstarts': ['download-kickstarts'],
        'rpms': [''],
        'srpms': [''],
        'channels': ['channel-families'],
        'channel-families': [''],
        'short': [''],
        'download-errata': ['errata'],
        'download-packages': [''],
        'download-source-packages': [''],
        'download-kickstarts': [''],
        'arches': [''],  # 5/26/05 wregglej 156079 Added arches to precedence list.
        'orgs': [''],
        'supportinfo': ['channels', 'packages'],
        'suse-products': ['arches', 'channel-families'],
        'scc-repositories': [''],
        'suse-product-channels': ['suse-products', 'channels'],
        'suse-upgrade-paths': ['suse-products'],
        'suse-product-extensions': ['suse-products'],
        'suse-product-repositories': ['suse-products', 'scc-repositories'],
        'suse-subscriptions': ['channel-families'],
        'cloned-channels': ['channels'],
    }

    # The step hierarchy. We need access to it both for command line
    # processing and for the actions themselves
    step_hierarchy = [
        'orgs',
        'channel-families',
        'arches',
        'channels',
        'short',
        'cloned-channels',
        'download-packages',
        'rpms',
        'packages',
        'srpms',
        'download-source-packages',
        'download-errata',
        'download-kickstarts',
        'source-packages',
        'errata',
        'kickstarts',
        'supportinfo',
        'suse-products',
        'scc-repositories',
        'suse-product-channels',
        'suse-upgrade-paths',
        'suse-product-extensions',
        'suse-product-repositories',
        'suse-subscriptions',
    ]

    def __init__(self):
        self.syncer = None
        self.packages_report = None
        self._xml_file_dir_error_message = ''
        self._affected_channels = None
        self._packages_report = None
        self._actions = None

    # 5/24/05 wregglej - 156079 turn off a step's dependents in the step is turned off.
    def _handle_step_dependents(self, actionDict, step):
        ad = actionDict

        if step in ad:
            # if the step is turned off, then the steps that are dependent on it have to be turned
            # off as well.
            if ad[step] == 0:
                ad = self._turn_off_dependents(ad, step)

        # if the step isn't in the actionDict, then it's dependent actions must be turned off.
        else:
            ad = self._turn_off_dependents(ad, step)
        return ad

    # 5/24/05 wregglej - 156079 actually turns off the dependent steps, which are listed in the step_precedence
    # dictionary.
    def _turn_off_dependents(self, actionDict, step):
        ad = actionDict
        for dependent in self.step_precedence[step]:
            if dependent in ad:
                ad[dependent] = 0
        return ad

    def main(self):
        """Main routine: commandline processing, etc..."""

        # let's time the whole process
        timeStart = time.time()

        actionDict, channels = processCommandline()

        #5/24/05 wregglej - 156079 turn off an step's dependent steps if it's turned off.
        #look at self.step_precedence for a listing of how the steps are dependent on each other.
        for st in self.step_hierarchy:
            actionDict = self._handle_step_dependents(actionDict, st)
        self._actions = actionDict

        # 5/26/05 wregglej - 156079 have to handle the list-channels special case.
        if 'list-channels' in actionDict:
            if actionDict['list-channels'] == 1:
                actionDict['channels'] = 1
                actionDict['arches'] = 0
                actionDict['channel-families'] = 1
                channels = []

        # create and set permissions for package repository mountpoint.
        _verifyPkgRepMountPoint()

        if OPTIONS.email:
            initEMAIL_LOG()

        # init the synchronization processor
        self.syncer = Syncer(channels, actionDict['list-channels'], actionDict['rpms'],
                             forceAllErrata=actionDict['force-all-errata'])
        try:
            self.syncer.initialize()
        except (KeyboardInterrupt, SystemExit):
            raise
        except xmlWireSource.rpclib.xmlrpclib.Fault:
            e = sys.exc_info()[1]
            if CFG.ISS_PARENT:
                # we met old satellite who do not know ISS
                log(-1, ['', messages.sw_iss_not_available % e.faultString ], )
                sys.exit(26)
            else:
                log(-1, ['', messages.syncer_error % e.faultString], )
                sys.exit(9)

        except Exception:  # pylint: disable=E0012, W0703
            e = sys.exc_info()[1]
            log(-1, ['', messages.syncer_error % e], )
            log(-1, '*** TRACEBACK: ')
            import traceback
            log(-1, traceback.format_exc())
            log(-1, '*** BASIC INFO:\n %s' % str(sys.exc_info()[:2]))
            sys.exit(10)

        log(1, '   db:  %s/<password>@%s' % (CFG.DB_USER, CFG.DB_NAME))

        selected = [action for action in list(actionDict) if actionDict[action]]
        log2(-1, 3, "Action list/commandline toggles: %s" % repr(selected),
             stream=sys.stderr)

        if OPTIONS.mount_point:
            self._xml_file_dir_error_message = messages.file_dir_error % \
                OPTIONS.mount_point

        if CFG.DB_BACKEND == 'postgresql':
            import psycopg2 #pylint: disable=F0401
            exception = psycopg2.IntegrityError

        for _try in range(2):
            try:
                for step in self.step_hierarchy:
                    if not actionDict[step]:
                        continue
                    method_name = '_step_' + step.replace('-', '_')
                    if not hasattr(self, method_name):
                        log(-1, _("No handler for step %s") % step)
                        continue
                    method = getattr(self, method_name)
                    ret = method()
                    if ret:
                        sys.exit(ret)
                else:  # for
                    # Everything went fine
                    break
            except ReprocessingNeeded:
                # Try one more time - this time it should be faster since
                # everything should be cached
                log(1, _('Environment changed, trying again...'))
                continue
            except RhnSyncException:
                rhnSQL.rollback()
                raise
            except exception:
                e = sys.exc_info()[1]
                msg = _("ERROR: Encountered IntegrityError: \n"
                        + str(e)
                        + "\nconsider removing mgr-inter-sync cache at /var/cache/rhn/satsync/*"
                        + " and re-run mgr-inter-sync with same options.\n"
                        + "If this error persits after removing cache, please contact SUSE support.")
                log2stderr(-1, msg, cleanYN=1)
                return 1
        else:
            log(1, _('Repeated failures'))

        timeEnd = time.time()
        delta_str = self._get_elapsed_time(timeEnd - timeStart)

        log(1, _("""\
    Import complete:
        Begin time: %s
        End time:   %s
        Elapsed:    %s
          """) % (formatDateTime(dt=time.localtime(timeStart)),
                  formatDateTime(dt=time.localtime(timeEnd)),
                  delta_str),
            cleanYN=1)

        # mail out that log if appropriate
        sendMail()
        return 0

    @staticmethod
    def _get_elapsed_time(elapsed):
        elapsed = int(elapsed)
        hours = int(elapsed / 60 / 60)
        mins = int(elapsed / 60) - (hours * 60)
        secs = elapsed - mins * 60 - hours * 60 * 60

        delta_list = [[hours, _("hours")], [mins, _("minutes")], [secs, _("seconds")]]
        delta_str = ", ".join(["%s %s" % (l[0], l[1]) for l in delta_list])
        return delta_str

    def _run_syncer_step(self, function, step_name):
        """ Runs a function, and catches the most common error cases """
        try:
            ret = function()
        except (xmlDiskSource.MissingXmlDiskSourceDirError,
                xmlDiskSource.MissingXmlDiskSourceFileError) as e:
            log(-1, self._xml_file_dir_error_message +
                '\n       Error message: %s\n' % e)
            return 1
        except (KeyboardInterrupt, SystemExit):
            raise
        except xmlWireSource.rpclib.xmlrpclib.Fault:
            e = sys.exc_info()[1]
            log(-1, messages.failed_step % (step_name, e.faultString))
            return 1
        except Exception:  # pylint: disable=E0012, W0703
            e = sys.exc_info()[1]
            log(-1, messages.failed_step % (step_name, e))
            return 1
        return ret

    def _step_arches(self):
        self.syncer.processArches()

    def _step_channel_families(self):
        self.syncer.processChannelFamilies()

    def _step_channels(self):
        try:
            self.syncer.process_channels()
        except MissingParentChannelError:
            e = sys.exc_info()[1]
            msg = messages.parent_channel_error % repr(e.channel)
            log(-1, msg)
            # log2email(-1, msg) # redundant
            sendMail()
            return 1

    def _step_short(self):
        try:
            return self.syncer.processShortPackages()
        except xmlDiskSource.MissingXmlDiskSourceFileError:
            msg = _("ERROR: The dump is missing package data, "
                    + "use --no-rpms to skip this step or fix the content to include package data.")
            log2disk(-1, msg)
            log2stderr(-1, msg, cleanYN=1)
            sys.exit(25)

    def _step_download_packages(self):
        return self.syncer.download_package_metadata()

    def _step_download_source_packages(self):
        return self.syncer.download_source_package_metadata()

    def _step_rpms(self):
        self._packages_report = self.syncer.download_rpms()
        return None

    # def _step_srpms(self):
    #   return self.syncer.download_srpms()

    def _step_download_errata(self):
        return self.syncer.download_errata()

    def _step_download_kickstarts(self):
        return self.syncer.download_kickstarts()

    def _step_packages(self):
        self._affected_channels = self.syncer.import_packages()

    # def _step_source_packages(self):
    #     self.syncer.import_packages(sources=1)

    def _step_errata(self):
        self.syncer.import_errata()
        # Now that errata have been populated, schedule an errata cache
        # refresh
        schedule_errata_cache_update(self._affected_channels)

    def _step_kickstarts(self):
        self.syncer.import_kickstarts()

    def _step_orgs(self):
        try:
            self.syncer.import_orgs()
        except (RhnSyncException, xmlDiskSource.MissingXmlDiskSourceFileError,
                xmlDiskSource.MissingXmlDiskSourceDirError):
            # the orgs() method doesn't exist; that's fine we just
            # won't sync the orgs
            log(1, [_("The SUSE Manager master does not support syncing orgs data."), _("Skipping...")])

    def _step_supportinfo(self):
        self.syncer.import_supportinfo()

    def _step_suse_products(self):
        self.syncer.import_suse_products()

    def _step_suse_product_channels(self):
        self.syncer.import_suse_product_channels()

    def _step_suse_upgrade_paths(self):
        self.syncer.import_suse_upgrade_paths()

    def _step_suse_product_extensions(self):
        self.syncer.import_suse_product_extensions()

    def _step_suse_product_repositories(self):
        self.syncer.import_suse_product_repositories()

    def _step_scc_repositories(self):
        self.syncer.import_scc_repositories()

    def _step_suse_subscriptions(self):
        self.syncer.import_suse_subscriptions()

    def _step_cloned_channels(self):
        self.syncer.import_cloned_channels()


def sendMail(forceEmail=0):
    """ Send email summary """
    if forceEmail or (OPTIONS is not None and OPTIONS.email):
        body = dumpEMAIL_LOG()
        if body:
            print((_("+++ sending log as an email +++")))
            host_label = idn_puny_to_unicode(os.uname()[1])
            headers = {
                'Subject' : _('SUSE Manager Inter Server sync. report from %s') % host_label,
            }
            sndr = "root@%s" % host_label
            if CFG.default_mail_from:
                sndr = CFG.default_mail_from
            rhnMail.send(headers, body, sender=sndr)
        else:
            print((_("+++ email requested, but there is nothing to send +++")))
        # mail was sent. Let's not allow it to be sent twice...
        OPTIONS.email = None


class Syncer:

    """ high-level sychronization/import class
        NOTE: there should *ONLY* be one instance of this.
    """

    def __init__(self, channels, listChannelsYN, check_rpms, forceAllErrata=False):
        """ Base initialization. Most work done in self.initialize() which
            needs to be called soon after instantiation.
        """

        self._requested_channels = channels
        self.mountpoint = OPTIONS.mount_point
        self.listChannelsYN = listChannelsYN
        self.forceAllErrata = forceAllErrata
        self.sslYN = not OPTIONS.no_ssl
        self._systemidPath = OPTIONS.systemid or _DEFAULT_SYSTEMID_PATH
        self._batch_size = OPTIONS.batch_size
        self.master_label = OPTIONS.master
        #self.create_orgs = OPTIONS.create_missing_orgs
        self.xml_dump_version = OPTIONS.dump_version or str(constants.PROTOCOL_VERSION)
        self.check_rpms = check_rpms
        self.keep_rpms = OPTIONS.keep_rpms

        # Object to help with channel math
        self._channel_req = None
        self._channel_collection = sync_handlers.ChannelCollection()

        self.containerHandler = sync_handlers.ContainerHandler(
            self.master_label)

        # instantiated in self.initialize()
        self.xmlDataServer = None
        self.systemid = None

        self.reporegen = set()

        # self._*_full hold list of all ids for appropriate channel while
        # non-full self._* contain every id only once (in first channel it appeared)
        self._channel_packages = {}
        self._channel_packages_full = {}
        self._avail_channel_packages = {}

        self._missing_channel_packages = None
        self._missing_fs_packages = None

        self._failed_fs_packages = Queue.Queue()
        self._extinct_packages = Queue.Queue()

        self._channel_errata = {}
        self._missing_channel_errata = {}

        self._channel_source_packages = {}
        self._channel_source_packages_full = {}

        self._channel_kickstarts = {}
        self._avail_channel_source_packages = None
        self._missing_channel_src_packages = None
        self._missing_fs_source_packages = None

        self._supportinfo = {}

    def initialize(self):
        """Initialization that requires IO, etc."""

        # Sync from filesystem:
        if self.mountpoint:
            log(1, [_(PRODUCT_NAME + ' - file-system synchronization'),
                    '   mp:  %s' % self.mountpoint])
            self.xmlDataServer = xmlDiskSource.MetadataDiskSource(self.mountpoint)
        # Sync across the wire:
        else:
            self.xmlDataServer = xmlWireSource.MetadataWireSource(self.systemid,
                                                                  self.sslYN, self.xml_dump_version)
            if CFG.ISS_PARENT:
                sync_parent = CFG.ISS_PARENT
                self.systemid = 'N/A'   # systemid is not used in ISS auth process
                is_iss = 1
            else:
                log(1, _(PRODUCT_NAME + ' - live synchronization'))
                log(-1, _("ERROR: Live content synchronizing with RHN Classic Hosted is no longer supported.\nPlease "
                          "use the cdn-sync command instead unless you are attempting to sync from another {PRODUCT_NAME} "
                          "via Inter-Server-Sync (ISS), or from local content on disk via Channel Dump ISOs."),
                    stream=sys.stderr).format(PRODUCT_NAME=PRODUCT_NAME)
                sys.exit(1)

            url = self.xmlDataServer.schemeAndUrl(sync_parent)
            log(1, [_(PRODUCT_NAME + ' - live synchronization'),
                    _('   url: %s') % url,
                    _('   debug/output level: %s') % CFG.DEBUG])
            self.xmlDataServer.setServerHandler(isIss=is_iss)

            if not self.systemid:
                # check and fetch systemid (NOTE: systemid kept in memory... may or may not
                # be better to do it this way).
                if (os.path.exists(self._systemidPath)
                        and os.access(self._systemidPath, os.R_OK)):
                    self.systemid = open(self._systemidPath, 'rb').read()
                else:
                    usix.raise_with_tb(RhnSyncException(_('ERROR: this server must be registered with SUSE Manager.')),
                                       sys.exc_info()[2])
            # authorization check of the satellite
            auth = xmlWireSource.AuthWireSource(self.systemid, self.sslYN,
                                                self.xml_dump_version)
            auth.checkAuth()

    def __del__(self):
        self.containerHandler.close()

    def _process_simple(self, remote_function_name, step_name):
        """ Wrapper function that can process metadata that is relatively
            simple. This does the decoding of data (over the wire or from
            disk).

            step_name is just for pretty printing the actual --step name to
            the console.

            The remote function is passed by name (as a string), to mimic the
            lazy behaviour of the if block
        """

        log(1, ["", _("Retrieving / parsing %s data") % step_name])
        # get XML stream
        stream = None
        method = getattr(self.xmlDataServer, remote_function_name)
        stream = method()

        # parse/process XML stream
        try:
            self.containerHandler.process(stream)
        except KeyboardInterrupt:
            log(-1, _('*** SYSTEM INTERRUPT CALLED ***'), stream=sys.stderr)
            raise
        except (FatalParseException, ParseException, Exception):  # pylint: disable=E0012, W0703
            e = sys.exc_info()[1]
            # nuke the container batch upon error!
            self.containerHandler.clear()
            msg = ''
            if isinstance(e, FatalParseException):
                msg = (_('ERROR: fatal parser exception occurred ') +
                       _('(line: %s, col: %s msg: %s)') % (
                           e.getLineNumber(), e.getColumnNumber(),
                           e._msg))
            elif isinstance(e, ParseException):
                msg = (_('ERROR: parser exception occurred: %s') % (e))
            elif isinstance(e, SystemExit):
                log(-1, _('*** SYSTEM INTERRUPT CALLED ***'), stream=sys.stderr)
                raise
            else:
                msg = _('ERROR: exception (during parse) occurred: ')
            log2stderr(-1, _('   Encountered some errors with %s data '
                             + '(see logs (%s) for more information)') % (step_name, CFG.LOG_FILE))
            log2(-1, 3, [_('   Encountered some errors with %s data:') % step_name,
                         _('   ------- %s PARSE/IMPORT ERROR -------') % step_name,
                         '   %s' % msg,
                         _('   ---------------------------------------')], stream=sys.stderr)
            exitWithTraceback(e, '', 11)
        self.containerHandler.reset()
        log(1, _("%s data complete") % step_name)

    def processArches(self):
        self._process_simple("getArchesXmlStream", "arches")
        self._process_simple("getArchesExtraXmlStream", "additional arches")

    def import_orgs(self):
        self._process_simple("getOrgsXmlStream", "orgs")

    def processChannelFamilies(self):
        self._process_simple("getChannelFamilyXmlStream", "channel-families")
        # pylint: disable=W0703
        try:
            self._process_simple("getProductNamesXmlStream", "product names")
        except Exception:
            pass

    def _write_repomd(self, repomd_path, getRepomdFunc, repomdFileStreamFunc, label, timestamp):
        full_path = os.path.join(CFG.MOUNT_POINT, repomd_path)
        if not os.path.exists(full_path):
            if self.mountpoint or CFG.ISS_PARENT:
                stream = getRepomdFunc(label)
            else:
                stream = repomdFileStreamFunc(label)
            f = FileManip(repomd_path, timestamp, None)
            f.write_file(stream)
            self.reporegen.add(label)

    def _process_comps(self, backend, label, timestamp):
        comps_path = 'rhn/comps/%s/comps-%s.xml' % (label, timestamp)
        self._write_repomd(comps_path, self.xmlDataServer.getComps, \
            xmlWireSource.RPCGetWireSource(self.systemid, self.sslYN, self.xml_dump_version).getCompsFileStream, \
            label, timestamp)
        data = {label: None}
        backend.lookupChannels(data)
        rhnSQL.Procedure('rhn_channel.set_comps')(data[label]['id'], comps_path, 1, timestamp)



    def _process_modules(self, backend, label, timestamp):
        modules_path = 'rhn/modules/%s/modules-%s.yaml' % (label, timestamp)
        self._write_repomd(modules_path, self.xmlDataServer.getModules, \
            xmlWireSource.RPCGetWireSource(self.systemid, self.sslYN, self.xml_dump_version).getModulesFilesStram, \
            label, timestamp)
        data = {label: None}
        backend.lookupChannels(data)
        rhnSQL.Procedure('rhn_channel.set_comps')(data[label]['id'], modules_path, 2, timestamp)


    def process_channels(self):
        """ push channels, channel-family and dist. map information
            as well upon parsing.
        """
        log(1, ["", _("Retrieving / parsing channel data")])

        h = sync_handlers.get_channel_handler()

        # get channel XML stream
        stream = self.xmlDataServer.getChannelXmlStream()
        if self.mountpoint:
            for substream in stream:
                h.process(substream)
            doEOSYN = 0
        else:
            h.process(stream)
            doEOSYN = 1

        h.close()

        # clean up the channel request and populate self._channel_request
        # This essentially determines which channels are to be imported
        self._compute_channel_request()

        # print out the relevant channel tree
        # 3/6/06 wregglej 183213 Don't print out the end-of-service message if
        # mgr-inter-sync is running with the --mount-point (-m) option. If it
        # did, it would incorrectly list channels as end-of-service if they had been
        # synced already but aren't in the channel dump.
        self._printChannelTree(doEOSYN=doEOSYN)

        if self.listChannelsYN:
            # We're done here
            return

        requested_channels = self._channel_req.get_requested_channels()
        try:
            importer = sync_handlers.import_channels(requested_channels,
                                                     orgid=OPTIONS.orgid or None,
                                                     master=OPTIONS.master or None)
            for label in requested_channels:
                timestamp = self._channel_collection.get_channel_timestamp(label)
                ch = self._channel_collection.get_channel(label, timestamp)
                if 'comps_last_modified' in ch and ch['comps_last_modified'] is not None:
                    self._process_comps(importer.backend, label, sync_handlers._to_timestamp(ch['comps_last_modified']))
                if 'modules_last_modified' in ch and ch['modules_last_modified'] is not None:
                    self._process_modules(importer.backend, label, \
                        sync_handlers._to_timestamp(ch['modules_last_modified']))

        except InvalidChannelFamilyError:
            usix.raise_with_tb(RhnSyncException(messages.invalid_channel_family_error %
                                                ''.join(requested_channels)), sys.exc_info()[2])
        except MissingParentChannelError:
            raise

        rhnSQL.commit()

        log(1, _("Channel data complete"))

    @staticmethod
    def _formatChannelExportType(channel):
        """returns pretty formated text with type of channel export"""
        if 'export-type' not in channel or channel['export-type'] is None:
            return ''
        else:
            export_type = channel['export-type']
        if 'export-start-date' in channel and channel['export-start-date'] is not None:
            start_date = channel['export-start-date']
        else:
            start_date = ''
        if 'export-end-date' in channel and channel['export-end-date'] is not None:
            end_date = channel['export-end-date']
        else:
            end_date = ''
        if end_date and not start_date:
            return _("%10s import from %s") % (export_type,
                                               formatDateTime(end_date))
        elif end_date and start_date:
            return _("%10s import from %s - %s") % (export_type,
                                                    formatDateTime(start_date),
                                                    formatDateTime(end_date))
        else:
            return _("%10s") % export_type

    def _printChannel(self, label, channel_object, log_format, is_imported):
        assert channel_object is not None
        all_pkgs = channel_object['all-packages'] or channel_object['packages']
        pkgs_count = len(all_pkgs)
        if is_imported:
            status = _('p')
        else:
            status = _('.')
        log(1, log_format % (status, label, pkgs_count, self._formatChannelExportType(channel_object)))

    def _printChannelTree(self, doEOSYN=1, doTyposYN=1):
        "pretty prints a tree of channel information"

        log(1, _('   p = previously imported/synced channel'))
        log(1, _('   . = channel not yet imported/synced'))
        ch_end_of_service = self._channel_req.get_end_of_service()
        ch_typos = self._channel_req.get_typos()
        ch_requested_imported = self._channel_req.get_requested_imported()
        relevant = self._channel_req.get_requested_channels()
        if doEOSYN and ch_end_of_service:
            log(1, _('   e = channel no longer supported (end-of-service)'))
        if doTyposYN and ch_typos:
            log(1, _('   ? = channel label invalid --- typo?'))

        pc_labels = sorted(self._channel_collection.get_parent_channel_labels())

        t_format = _('   %s:')
        p_format = _('      %s %-40s %4s %s')
        log(1, t_format % _('base-channels'))
        # Relevant parent channels
        no_base_channel = True
        for plabel in pc_labels:
            if plabel not in relevant:
                continue

            no_base_channel = False
            timestamp = self._channel_collection.get_channel_timestamp(plabel)
            channel_object = self._channel_collection.get_channel(plabel,
                                                                  timestamp)
            self._printChannel(plabel, channel_object, p_format, (plabel in ch_requested_imported))
        if no_base_channel:
            log(1, p_format % (' ', _('NONE RELEVANT'), '', ''))

        # Relevant parent channels
        for plabel in pc_labels:
            cchannels = self._channel_collection.get_child_channels(plabel)
            # chns has only the channels we are interested in
            # (and that's all the channels if we list them)
            chns = []
            for clabel, ctimestamp in cchannels:
                if clabel in relevant:
                    chns.append((clabel, ctimestamp))
            if not chns:
                # No child channels, skip
                continue
            log(1, t_format % plabel)
            for clabel, ctimestamp in sorted(chns):
                channel_object = self._channel_collection.get_channel(clabel,
                                                                      ctimestamp)
                self._printChannel(clabel, channel_object, p_format, (clabel in ch_requested_imported))
        log(2, '')

        if doEOSYN and ch_end_of_service:
            log(1, t_format % _('end-of-service'))
            status = _('e')
            for chn in ch_end_of_service:
                log(1, p_format % (status, chn, '', ''))
            log(2, '')

        if doTyposYN and ch_typos:
            log(1, _('   typos:'))
            status = _('?')
            for chn in ch_typos:
                log(1, p_format % (status, chn, '', ''))
            log(2, '')
        log(1, '')

    def _compute_channel_request(self):
        """ channels request is verify and categorized.

            NOTE: self.channel_req *will be* initialized by this method
        """

        # channels already imported, and all channels
        importedChannels = _getImportedChannels()
        availableChannels = self._channel_collection.get_channel_labels()
        log(6, _('XXX: imported channels: %s') % importedChannels, 1)
        log(6, _('XXX:   cached channels: %s') % availableChannels, 1)

        # if requested a channel list, we are requesting all channels
        if self.listChannelsYN:
            requested_channels = availableChannels
            log(6, _('XXX: list channels called'), 1)
        else:
            requested_channels = set()
            for channel in self._requested_channels:
                match_channels = set(fnmatch.filter(importedChannels, channel))
                match_channels = match_channels.union(fnmatch.filter(availableChannels, channel))
                if not match_channels:
                    match_channels = [channel,]
                requested_channels = requested_channels.union(match_channels)

        rc = req_channels.RequestedChannels(list(requested_channels))
        rc.set_available(availableChannels)
        rc.set_imported(importedChannels)
        # rc does all the logic of doing intersections and stuff
        rc.compute()

        typos = rc.get_typos()
        if typos:
            log(-1, _("ERROR: these channels either do not exist or "
                      "are not available:"))
            for chn in typos:
                log(-1, "       %s" % chn)
            log(-1, _("       (to see a list of channel labels: %s --list-channels)") % sys.argv[0])
            sys.exit(12)
        self._channel_req = rc
        return rc

    def _get_channel_timestamp(self, channel):
        try:
            timestamp = self._channel_collection.get_channel_timestamp(channel)
        except KeyError:
            # XXX Do something with this exception
            raise
        return timestamp

    def _compute_unique_packages(self):
        """ process package metadata for one channel at a time """
        relevant = sorted(self._channel_req.get_requested_channels())
        self._channel_packages = {}
        self._channel_packages_full = {}
        self._avail_channel_packages = {}
        already_seen_ids = set()
        for chn in relevant:
            timestamp = self._get_channel_timestamp(chn)

            channel_obj = self._channel_collection.get_channel(chn, timestamp)
            avail_package_ids = sorted(set(channel_obj['packages'] or []))
            package_full_ids = sorted(set(channel_obj['all-packages'] or [])) or avail_package_ids
            package_ids = sorted(set(package_full_ids) - already_seen_ids)

            self._channel_packages[chn] = package_ids
            self._channel_packages_full[chn] = package_full_ids
            self._avail_channel_packages[chn] = avail_package_ids
            already_seen_ids.update(package_ids)

    def processShortPackages(self):
        log(1, ["", "Retrieving short package metadata (used for indexing)"])

        # Compute the unique packages and populate self._channel_packages
        self._compute_unique_packages()

        stream_loader = StreamProducer(
            sync_handlers.get_short_package_handler(),
            self.xmlDataServer, 'getChannelShortPackagesXmlStream')

        sorted_channels = sorted(list(self._channel_packages.items()), key=lambda x: x[0])  # sort by channel_label
        for channel_label, package_ids in sorted_channels:
            log(1, _("   Retrieving / parsing short package metadata: %s (%s)") %
                (channel_label, len(package_ids)))

            if package_ids:
                lm = self._channel_collection.get_channel_timestamp(channel_label)
                channel_last_modified = int(rhnLib.timestamp(lm))

                stream_loader.set_args(channel_label, channel_last_modified)
                stream_loader.process(package_ids)

        stream_loader.close()

        self._diff_packages()

    _query_compare_packages = """
        select p.id, c.checksum_type, c.checksum, p.path, p.package_size,
               TO_CHAR(p.last_modified, 'YYYYMMDDHH24MISS') last_modified
          from rhnPackage p, rhnChecksumView c
         where p.name_id = lookup_package_name(:name)
           and p.evr_id = lookup_evr(:epoch, :version, :release, :package_type)
           and p.package_arch_id = lookup_package_arch(:arch)
           and (p.org_id = :org_id or
               (p.org_id is null and :org_id is null))
           and p.checksum_id = c.id
    """

    _query_channel_package_type = """
        select at.label from rhnArchType at
          join rhnchannelarch ca on at.id = ca.arch_type_id
          join rhnchannel c on ca.id = c.channel_arch_id
         where c.label = :channel_label
    """

    def _get_package_type_for_channel(self, channel_label):
        h = rhnSQL.prepare(self._query_channel_package_type)
        h.execute(channel_label=channel_label)
        row = h.fetchone_dict()
        if row:
            return row['label']
        return None

    def _diff_packages_process(self, chunk, channel_label):
        package_collection = sync_handlers.ShortPackageCollection()

        package_type = self._get_package_type_for_channel(channel_label)
        h = rhnSQL.prepare(self._query_compare_packages)
        for pid in chunk:
            package = package_collection.get_package(pid)
            assert package is not None
            l_timestamp = rhnLib.timestamp(package['last_modified'])

            if package['org_id'] is not None:
                package['org_id'] = OPTIONS.orgid or DEFAULT_ORG
            nevra = get_nevra_dict(package)
            nevra['org_id'] = package['org_id']
            nevra['package_type'] = package_type

            h.execute(**nevra)
            row = None
            for r in (h.fetchall_dict() or []):
                # let's check which checksum we have in database
                if (r['checksum_type'] in package['checksums']
                        and package['checksums'][r['checksum_type']] == r['checksum']):
                    row = r
                    break

            self._process_package(pid, package, l_timestamp, row,
                                  self._missing_channel_packages[channel_label],
                                  self._missing_fs_packages[channel_label],
                                  check_rpms=self.check_rpms)

    # XXX the "is null" condition will have to change in multiorg satellites
    def _diff_packages(self):
        self._missing_channel_packages = {}
        self._missing_fs_packages = {}

        sorted_channels = sorted(list(self._channel_packages.items()), key=lambda x: x[0])  # sort by channel_label
        for channel_label, upids in sorted_channels:
            log(1, _("Diffing package metadata (what's missing locally?): %s") %
                channel_label)
            self._missing_channel_packages[channel_label] = []
            self._missing_fs_packages[channel_label] = []
            self._process_batch(channel_label, upids[:], None,
                                self._diff_packages_process,
                                _('Diffing:    '),
                                [channel_label])

        self._verify_missing_channel_packages(self._missing_channel_packages)

    def _verify_missing_channel_packages(self, missing_channel_packages, sources=0):
        """Verify if all the missing packages are actually available somehow.
        In an incremental approach, one may request packages that are actually
        not available in the current dump, probably because of applying an
        incremental to the wrong base"""
        for channel_label, pids in list(missing_channel_packages.items()):
            if sources:
                avail_pids = [x[0] for x in self._avail_channel_source_packages[channel_label]]
            else:
                avail_pids = self._avail_channel_packages[channel_label]

            if set(pids or []) > set(avail_pids or []):
                raise RhnSyncException(_('ERROR: incremental dump skipped'))

    @staticmethod
    def _get_rel_package_path(nevra, org_id, source, checksum_type, checksum):
        return get_package_path(nevra, org_id, prepend=CFG.PREPENDED_DIR,
                                source=source, checksum_type=checksum_type, checksum=checksum)

    @staticmethod
    def _verify_file(path, mtime, size, checksum_type, checksum):
        """
        Verifies if the file is on the filesystem and matches the mtime and checksum.
        Computing the checksum is costly, that's why we rely on mtime comparisons.
        Returns errcode:
            0   - file is ok, it has either the specified mtime and size
                          or checksum matches (then function sets mtime)
            1   - file does not exist at all
            2   - file has a different checksum
        """
        if not path:
            return 1
        abs_path = os.path.join(CFG.MOUNT_POINT, path)
        try:
            stat_info = os.stat(abs_path)
        except OSError:
            # File is missing completely
            return 1

        l_mtime = stat_info[stat.ST_MTIME]
        l_size = stat_info[stat.ST_SIZE]
        if l_mtime == mtime and l_size == size:
            # Same mtime, and size, assume identity
            return 0

        # Have to check checksum
        l_checksum = getFileChecksum(checksum_type, filename=abs_path)
        if l_checksum != checksum:
            return 2

        # Set the mtime
        os.utime(abs_path, (mtime, mtime))
        return 0

    def _process_package(self, package_id, package, l_timestamp, row,
                         m_channel_packages, m_fs_packages, check_rpms=1):
        path = None
        channel_package = None
        fs_package = None
        if row:
            # package found in the DB
            checksum_type = row['checksum_type']
            if checksum_type in package['checksums']:
                checksum = package['checksums'][row['checksum_type']]
                package_size = package['package_size']

                db_timestamp = int(rhnLib.timestamp(row['last_modified']))
                db_checksum = row['checksum']
                db_package_size = row['package_size']
                db_path = row['path']

                if not (l_timestamp <= db_timestamp and
                        checksum == db_checksum and
                        package_size == db_package_size):
                    # package doesn't match
                    channel_package = package_id

                if check_rpms:
                    if db_path:
                        # check the filesystem
                        errcode = self._verify_file(db_path, l_timestamp,
                                                    package_size, checksum_type, checksum)
                        if errcode:
                            # file doesn't match
                            fs_package = package_id
                            channel_package = package_id
                        path = db_path
                    else:
                        # upload package and reimport metadata
                        channel_package = package_id
                        fs_package = package_id
        else:
            # package is missing from the DB
            channel_package = package_id
            fs_package = package_id

        if channel_package:
            m_channel_packages.append(channel_package)
        if fs_package:
            m_fs_packages.append((fs_package, path))
        return

    def download_rpms(self):
        log(1, ["", _("Downloading rpm packages")])
        # Lets go fetch the packages and push them to their proper location:
        sorted_channels = sorted(list(self._missing_fs_packages.items()), key=lambda x: x[0])  # sort by channel
        for channel, missing_fs_packages in sorted_channels:
            missing_packages_count = len(missing_fs_packages)
            log(1, _("   Fetching any missing RPMs: %s (%s)") %
                (channel, missing_packages_count or _('NONE MISSING')))
            if missing_packages_count == 0:
                continue

            # Fetch all RPMs whose meta-data is marked for need to be imported
            # (ie. high chance of not being there)
            self._fetch_packages(channel, missing_fs_packages)
            continue

        log(1, _("Processing rpm packages complete"))

    def _missing_not_cached_packages(self):
        missing_packages = {}

        # First, determine what has to be downloaded
        short_package_collection = sync_handlers.ShortPackageCollection()
        package_collection = sync_handlers.PackageCollection()
        for channel, pids in list(self._missing_channel_packages.items()):
            missing_packages[channel] = mp = []

            if not pids:
                # Nothing to see here
                continue

            for pid in pids:
                # XXX Catch errors
                if (not package_collection.has_package(pid) or not package_collection.get_package(pid)
                        or package_collection.get_package(pid)['last_modified']
                        != short_package_collection.get_package(pid)['last_modified']
                        or 'extra_tags' not in package_collection.get_package(pid)):
                    # not in the cache or cache outdated
                    mp.append(pid)

        return missing_packages

    def download_package_metadata(self):
        log(1, ["", _("Downloading package metadata")])
        # Get the missing but uncached packages
        missing_packages = self._missing_not_cached_packages()

        stream_loader = StreamProducer(
            sync_handlers.get_package_handler(),
            self.xmlDataServer, 'getPackageXmlStream')

        sorted_channels = sorted(list(missing_packages.items()), key=lambda x: x[0])  # sort by channel
        for channel, pids in sorted_channels:
            self._process_batch(channel, pids[:], messages.package_parsing,
                                stream_loader.process, is_slow=True)
        stream_loader.close()

        # Double-check that we got all the packages
        missing_packages = self._missing_not_cached_packages()
        for channel, pids in list(missing_packages.items()):
            if pids:
                # Something may have changed from the moment we started to
                # download the packages till now
                raise ReprocessingNeeded

    def download_srpms(self):
        self._compute_unique_source_packages()
        self._diff_source_packages()
        log(1, ["", _("Downloading srpm packages")])
        # Lets go fetch the source packages and push them to their proper location:
        # sort by channel_label
        sorted_channels = sorted(list(self._missing_fs_source_packages.items()), key=lambda x: x[0])
        for channel, missing_fs_source_packages in sorted_channels:
            missing_source_packages_count = len(missing_fs_source_packages)
            log(1, _("   Fetching any missing SRPMs: %s (%s)") %
                (channel, missing_source_packages_count or _('NONE MISSING')))
            if missing_source_packages_count == 0:
                continue

            # Fetch all SRPMs whose meta-data is marked for need to be imported
            # (ie. high chance of not being there)
            self._fetch_packages(channel, missing_fs_source_packages, sources=1)
            continue

        log(1, "Processing srpm packages complete")

    def _compute_unique_source_packages(self):
        """ process package metadata for one channel at a time"""
        relevant = self._channel_req.get_requested_channels()
        self._channel_source_packages = {}
        self._channel_source_packages_full = {}
        self._avail_channel_source_packages = {}

        already_seen_ids = set()
        for chn in relevant:
            timestamp = self._get_channel_timestamp(chn)

            channel_obj = self._channel_collection.get_channel(chn, timestamp)
            sps = set(channel_obj['source_packages'])
            if not sps:
                # No source package info
                continue
            ret_sps = []
            for sp in sps:
                if isinstance(sp, usix.StringType):
                    # Old style
                    ret_sps.append((sp, None))
                else:
                    ret_sps.append((sp['id'], sp['last_modified']))
            del sps
            ret_sps.sort()
            self._channel_source_packages[chn] = sorted(set(ret_sps) - already_seen_ids)
            self._channel_source_packages_full[chn] = ret_sps
            self._avail_channel_source_packages[chn] = ret_sps
            already_seen_ids.update(ret_sps)

    def _compute_not_cached_source_packages(self):
        missing_sps = {}

        # First, determine what has to be downloaded
        sp_collection = sync_handlers.SourcePackageCollection()
        for channel, sps in list(self._channel_source_packages.items()):
            missing_sps[channel] = []
            if not sps:
                # Nothing to see here
                continue
            missing_sps[channel] = [sp_id for (sp_id, _timestamp) in sps
                                    if not sp_collection.has_package(sp_id)]
        return missing_sps

    _query_compare_source_packages = """
        select ps.id, c.checksum_type, c.checksum, ps.path, ps.package_size,
               TO_CHAR(ps.last_modified, 'YYYYMMDDHH24MISS') last_modified
          from rhnPackageSource ps, rhnChecksumView c
         where ps.source_rpm_id = lookup_source_name(:package_id)
           and (ps.org_id = :org_id or
               (ps.org_id is null and :org_id is null))
           and ps.checksum_id = c.id
           and c.checksum = :checksum
           and c.checksum_type = :checksum_type
    """

    def _diff_source_packages_process(self, chunk, channel_label):
        package_collection = sync_handlers.SourcePackageCollection()
        sql_params = ['package_id', 'checksum', 'checksum_type']
        h = rhnSQL.prepare(self._query_compare_source_packages)
        for pid, _timestamp in chunk:
            package = package_collection.get_package(pid)
            assert package is not None

            params = {}
            for t in sql_params:
                params[t] = package[t] or ""

            if package['org_id'] is not None:
                params['org_id'] = OPTIONS.orgid or DEFAULT_ORG
                package['org_id'] = OPTIONS.orgid or DEFAULT_ORG
            else:
                params['org_id'] = package['org_id']

            h.execute(**params)
            row = h.fetchone_dict()
            self._process_package(pid, package, None, row,
                                  self._missing_channel_src_packages[channel_label],
                                  self._missing_fs_source_packages[channel_label])

    # XXX the "is null" condition will have to change in multiorg satellites
    def _diff_source_packages(self):
        self._missing_channel_src_packages = {}
        self._missing_fs_source_packages = {}
        for channel_label, upids in list(self._channel_source_packages.items()):
            log(1, _("Diffing source package metadata (what's missing locally?): %s") % channel_label)
            self._missing_channel_src_packages[channel_label] = []
            self._missing_fs_source_packages[channel_label] = []
            self._process_batch(channel_label, upids[:], None,
                                self._diff_source_packages_process,
                                _('Diffing:    '),
                                [channel_label])

        self._verify_missing_channel_packages(self._missing_channel_src_packages, sources=1)

    def download_source_package_metadata(self):
        log(1, ["", _("Downloading source package metadata")])

        # Get the missing but uncached packages
        missing_packages = self._compute_not_cached_source_packages()

        stream_loader = StreamProducer(
            sync_handlers.get_source_package_handler(),
            self.xmlDataServer, 'getSourcePackageXmlStream')

        for channel, pids in list(missing_packages.items()):
            self._process_batch(channel, pids[:], messages.package_parsing,
                                stream_loader.process, is_slow=True)
        stream_loader.close()

        # Double-check that we got all the packages
        missing_packages = self._compute_not_cached_source_packages()
        for channel, pids in list(missing_packages.items()):
            if pids:
                # Something may have changed from the moment we started to
                # download the packages till now
                raise ReprocessingNeeded

    def _compute_unique_kickstarts(self):
        """ process package metadata for one channel at a time"""
        relevant = self._channel_req.get_requested_channels()
        self._channel_kickstarts = {}
        already_seen_kickstarts = set()
        for chn in relevant:
            timestamp = self._get_channel_timestamp(chn)

            channel_obj = self._channel_collection.get_channel(chn, timestamp)
            self._channel_kickstarts[chn] = \
                sorted(set(channel_obj['kickstartable_trees'])
                       - already_seen_kickstarts)
            already_seen_kickstarts.update(self._channel_kickstarts[chn])

    def _compute_missing_kickstarts(self):
        """ process package metadata for one channel at a time"""
        relevant = self._channel_req.get_requested_channels()
        coll = sync_handlers.KickstartableTreesCollection()
        missing_kickstarts = {}
        for chn in relevant:
            timestamp = self._get_channel_timestamp(chn)

            channel_obj = self._channel_collection.get_channel(chn, timestamp)
            kickstart_trees = channel_obj['kickstartable_trees']

            for ktid in kickstart_trees:
                # No timestamp for kickstartable trees
                kt = coll.get_item(ktid, timestamp=None)
                assert kt is not None
                kt_label = kt['label']

                # XXX rhnKickstartableTree does not have a last_modified
                # Once we add it, we should be able to do more meaningful
                # diffs
                missing_kickstarts[kt_label] = None

        ret = list(missing_kickstarts.items())
        ret.sort()
        return ret

    def _download_kickstarts_file(self, chunk, channel_label):
        cfg = config.initUp2dateConfig()
        assert len(chunk) == 1
        item = chunk[0]
        label, base_path, relative_path, timestamp, file_size = item
        path = os.path.join(base_path, relative_path)
        f = FileManip(path, timestamp=timestamp, file_size=file_size)
        # Retry a number of times, we may have network errors
        for _try in range(cfg['networkRetries']):
            stream = self._get_ks_file_stream(channel_label, label, relative_path)
            try:
                f.write_file(stream)
                break  # inner for
            except FileCreationError:
                e = sys.exc_info()[1]
                msg = e.args[0]
                log2disk(-1, _("Unable to save file %s: %s") % (path,
                                                                msg))
                # Try again
                continue
        else:  # for
            # Retried a number of times and it still failed; log the
            # file as being failed and move on
            log2disk(-1, _("Failed to fetch file %s") % path)

    def download_kickstarts(self):
        """Downloads all the kickstart-related information"""

        log(1, ["", _("Downloading kickstartable trees metadata")])

        self._compute_unique_kickstarts()

        stream_loader = StreamProducer(
            sync_handlers.get_kickstarts_handler(),
            self.xmlDataServer, 'getKickstartsXmlStream')

        for channel, ktids in list(self._channel_kickstarts.items()):
            self._process_batch(channel, ktids[:], messages.kickstart_parsing,
                                stream_loader.process)
        stream_loader.close()

        missing_ks_files = self._compute_missing_ks_files()

        log(1, ["", _("Downloading kickstartable trees files")])
        sorted_channels = sorted(list(missing_ks_files.items()), key=lambda x: x[0])  # sort by channel
        for channel, files in sorted_channels:
            self._process_batch(channel, files[:], messages.kickstart_downloading,
                                self._download_kickstarts_file,
                                nevermorethan=1,
                                process_function_args=[channel])

    def _get_ks_file_stream(self, channel, kstree_label, relative_path):
        if self.mountpoint:
            s = xmlDiskSource.KickstartFileDiskSource(self.mountpoint)
            s.setID(kstree_label)
            s.set_relative_path(relative_path)
            return s.load()

        if CFG.ISS_PARENT:
            return self.xmlDataServer.getKickstartFile(kstree_label, relative_path)
        else:
            srv = xmlWireSource.RPCGetWireSource(self.systemid, self.sslYN,
                                                 self.xml_dump_version)
            return srv.getKickstartFileStream(channel, kstree_label, relative_path)

    def _compute_missing_ks_files(self):
        coll = sync_handlers.KickstartableTreesCollection()

        missing_ks_files = {}
        # download files for the ks trees
        for channel, ktids in list(self._channel_kickstarts.items()):
            missing_ks_files[channel] = missing = []
            for ktid in ktids:
                # No timestamp for kickstartable trees
                kt = coll.get_item(ktid, timestamp=None)
                assert kt is not None
                kt_label = kt['label']
                base_path = kt['base_path']
                files = kt['files']
                for f in files:
                    relative_path = f['relative_path']
                    dest_path = os.path.join(base_path, relative_path)
                    timestamp = rhnLib.timestamp(f['last_modified'])
                    file_size = f['file_size']
                    errcode = self._verify_file(dest_path,
                                                timestamp, file_size, f['checksum_type'], f['checksum'])
                    if errcode != 0:
                        # Have to download it
                        val = (kt_label, base_path, relative_path,
                               timestamp, file_size)
                        missing.append(val)
        return missing_ks_files

    def import_kickstarts(self):
        """Imports the kickstart-related information"""

        missing_kickstarts = self._compute_missing_kickstarts()

        if not missing_kickstarts:
            log(1, messages.kickstart_import_nothing_to_do)
            return

        ks_count = len(missing_kickstarts)
        log(1, messages.kickstart_importing % ks_count)

        coll = sync_handlers.KickstartableTreesCollection()
        batch = []
        for ks, timestamp in missing_kickstarts:
            ksobj = coll.get_item(ks, timestamp=timestamp)
            assert ksobj is not None

            if ksobj['org_id'] is not None:
                ksobj['org_id'] = OPTIONS.orgid or DEFAULT_ORG
            batch.append(ksobj)

        _importer = sync_handlers.import_kickstarts(batch)
        log(1, messages.kickstart_imported % ks_count)

    def _compute_not_cached_errata(self):
        missing_errata = {}

        # First, determine what has to be downloaded
        errata_collection = sync_handlers.ErrataCollection()
        for channel, errata in list(self._channel_errata.items()):
            missing_errata[channel] = []
            if not errata:
                # Nothing to see here
                continue
            missing_errata[channel] = [eid for (eid, timestamp, _advisory_name) in errata
                                       if not errata_collection.has_erratum(eid, timestamp)
                                       or self.forceAllErrata]
        return missing_errata

    _query_get_db_errata = rhnSQL.Statement("""
        select e.id, e.advisory_name,
               TO_CHAR(e.last_modified, 'YYYYMMDDHH24MISS') last_modified
          from rhnChannelErrata ce, rhnErrata e, rhnChannel c
         where c.label = :channel
           and ce.channel_id = c.id
           and ce.errata_id = e.id
    """)

    def _get_db_channel_errata(self):
        """
        Fetch the errata stored in the local satellite's database. Returned
        as a hash of channel to another hash of advisory names to a tuple of
        errata id and last modified date.
        """
        db_channel_errata = {}
        relevant = self._channel_req.get_requested_channels()
        h = rhnSQL.prepare(self._query_get_db_errata)
        for channel in relevant:
            db_channel_errata[channel] = ce = {}
            h.execute(channel=channel)
            while 1:
                row = h.fetchone_dict()
                if not row:
                    break
                advisory_name = row['advisory_name']
                erratum_id = row['id']
                last_modified = rhnLib.timestamp(row['last_modified'])
                ce[advisory_name] = (erratum_id, last_modified)
        return db_channel_errata

    def _diff_errata(self):
        """ Fetch the errata for this channel"""
        db_channel_errata = self._get_db_channel_errata()

        relevant = self._channel_req.get_requested_channels()

        # Now get the channel's errata
        channel_errata = {}
        for chn in relevant:
            db_ce = db_channel_errata[chn]
            timestamp = self._get_channel_timestamp(chn)

            channel_obj = self._channel_collection.get_channel(chn, timestamp)
            errata_timestamps = channel_obj['errata_timestamps']
            if errata_timestamps is None or self.forceAllErrata:
                # No unique key information, so assume we need all errata
                erratum_ids = channel_obj['errata']
                errata = [(x, None, None) for x in erratum_ids]
                log(2, _("Grabbing all patches for channel %s") % chn)
            else:
                errata = []
                # Check the advisory name and last modification
                for erratum in errata_timestamps:
                    erratum_id = erratum['id']
                    last_modified = erratum['last_modified']
                    last_modified = rhnLib.timestamp(last_modified)
                    advisory_name = erratum['advisory_name']
                    if advisory_name in db_ce:
                        _foo, db_last_modified = db_ce[advisory_name]
                        if last_modified == db_last_modified:
                            # We already have this erratum
                            continue
                    errata.append((erratum_id, last_modified, advisory_name))
            errata.sort()
            channel_errata[chn] = errata

        # Uniquify the errata
        already_seen_errata = set()
        for channel, errata in list(channel_errata.items()):
            uq_errata = set(errata) - already_seen_errata
            self._channel_errata[channel] = sorted(uq_errata)
            already_seen_errata.update(uq_errata)

    def _diff_db_errata(self):
        """ Compute errata that are missing from the satellite
            Kind of similar to diff_errata, if we had the timestamp and advisory
            information available
        """
        errata_collection = sync_handlers.ErrataCollection()
        self._missing_channel_errata = missing_channel_errata = {}
        db_channel_errata = self._get_db_channel_errata()
        for channel, errata in list(self._channel_errata.items()):
            ch_erratum_ids = missing_channel_errata[channel] = []
            for eid, timestamp, advisory_name in errata:
                if timestamp is not None:
                    # Should have been caught by diff_errata
                    ch_erratum_ids.append((eid, timestamp, advisory_name))
                    continue
                # timestamp is None, grab the erratum from the cache
                erratum = errata_collection.get_erratum(eid, timestamp)
                timestamp = rhnLib.timestamp(erratum['last_modified'])
                advisory_name = erratum['advisory_name']
                db_erratum = db_channel_errata[channel].get(advisory_name)
                if db_erratum is None or db_erratum[1] != timestamp or \
                        self.forceAllErrata:
                    ch_erratum_ids.append((eid, timestamp, advisory_name))

    def download_errata(self):
        log(1, ["", _("Downloading patch data")])
        if self.forceAllErrata:
            log(2, _("Forcing download of all patch data for requested channels."))
        self._diff_errata()
        not_cached_errata = self._compute_not_cached_errata()
        stream_loader = StreamProducer(
            sync_handlers.get_errata_handler(),
            self.xmlDataServer, 'getErrataXmlStream')

        sorted_channels = sorted(list(not_cached_errata.items()), key=lambda x: x[0])  # sort by channel
        for channel, erratum_ids in sorted_channels:
            self._process_batch(channel, erratum_ids[:], messages.erratum_parsing,
                                stream_loader.process)
        stream_loader.close()
        # XXX This step should go away once the channel info contains the
        # errata timestamps and advisory names
        self._diff_db_errata()
        log(1, _("Downloading patch data complete"))

    # __private methods__
    def _processWithProgressBar(self, batch, size,
                                process_function,
                                prompt=_('Downloading:'),
                                nevermorethan=None,
                                process_function_args=()):
        pb = ProgressBar(prompt=prompt, endTag=_(' - complete'),
                         finalSize=size, finalBarLength=40, stream=sys.stdout)
        if CFG.DEBUG > 2:
            pb.redrawYN = 0
        pb.printAll(1)

        ss = SequenceServer(batch, nevermorethan=(nevermorethan or self._batch_size))
        while not ss.doneYN():
            chunk = ss.getChunk()
            item_count = len(chunk)
            process_function(chunk, *process_function_args)
            ss.clearChunk()
            pb.addTo(item_count)
            pb.printIncrement()
        pb.printComplete()

    def _process_batch(self, channel, batch, log_msg,
                       process_function,
                       prompt=_('Downloading:'),
                       process_function_args=(),
                       nevermorethan=None,
                       is_slow=False):
        count = len(batch)
        if log_msg:
            log(1, log_msg % (channel, count or _('NONE RELEVANT')))
        if not count:
            return
        if is_slow:
            log(1, messages.warning_slow)
        self._processWithProgressBar(batch, count, process_function,
                                     prompt, nevermorethan, process_function_args)

    def _import_packages_process(self, chunk, sources):
        batch = self._get_cached_package_batch(chunk, sources)
        # check to make sure the orgs exported are valid
        _validate_package_org(batch)
        try:
            sync_handlers.import_packages(batch, sources)
        except (SQLError, SQLSchemaError, SQLConnectError):
            e = sys.exc_info()[1]
            # an SQL error is fatal... crash and burn
            exitWithTraceback(e, 'Exception caught during import', 13)

    def import_packages(self, sources=0):
        if sources:
            log(1, ["", _("Importing source package metadata")])
            missing_channel_items = self._missing_channel_src_packages
        else:
            log(1, ["", _("Importing package metadata")])
            missing_channel_items = self._missing_channel_packages

        sorted_channels = sorted(list(missing_channel_items.items()), key=lambda x: x[0])  # sort by channel
        for channel, packages in sorted_channels:
            self._process_batch(channel, packages[:],
                                messages.package_importing,
                                self._import_packages_process,
                                _('Importing:  '),
                                [sources])
        return self._link_channel_packages()

    def _link_channel_packages(self):
        log(1, ["", messages.link_channel_packages])
        short_package_collection = sync_handlers.ShortPackageCollection()
        _package_collection = sync_handlers.PackageCollection()
        uq_packages = {}
        for chn, package_ids in list(self._channel_packages_full.items()):
            for pid in package_ids:
                package = short_package_collection.get_package(pid)
                if not package:
                    continue
                assert package is not None
                channel_obj = {'label': chn}
                if pid in uq_packages:
                    # We've seen this package before - just add this channel
                    # to it
                    uq_packages[pid]['channels'].append(channel_obj)
                else:
                    package['channels'] = [channel_obj]
                    uq_packages[pid] = package

        uq_pkg_data = list(uq_packages.values())
        # check to make sure the orgs exported are valid
        _validate_package_org(uq_pkg_data)
        try:
            if OPTIONS.mount_point:  # if OPTIONS.consider_full is not set interpret dump as incremental
                importer = sync_handlers.link_channel_packages(uq_pkg_data, strict=OPTIONS.consider_full)
            else:
                importer = sync_handlers.link_channel_packages(uq_pkg_data)
            if self.reporegen:
                h = rhnSQL.prepare("""select channel_label from rhnRepoRegenQueue""")
                h.execute()
                result = h.fetchall_dict()
                if result:
                    for regenerating in result:
                        if regenerating['channel_label'] in self.reporegen:
                            self.reporegen.remove(regenerating['channel_label'])
                for channel in self.reporegen:
                    h = rhnSQL.prepare("""insert into rhnRepoRegenQueue
                            (channel_label) values (:clabel)""")
                    h.execute(clabel=channel)
                    rhnSQL.commit()
        except (SQLError, SQLSchemaError, SQLConnectError):
            e = sys.exc_info()[1]
            # an SQL error is fatal... crash and burn
            exitWithTraceback(e, 'Exception caught during import', 14)
        return importer.affected_channels

    @staticmethod
    def _get_cached_package_batch(chunk, sources=0):
        """ short-circuit the most common case"""
        if not chunk:
            return []
        short_package_collection = sync_handlers.ShortPackageCollection()
        if sources:
            package_collection = sync_handlers.SourcePackageCollection()
        else:
            package_collection = sync_handlers.PackageCollection()
        batch = []
        for pid in chunk:
            package = package_collection.get_package(pid)
            if (package is None or package['last_modified']
                    != short_package_collection.get_package(pid)
                    ['last_modified']):
                # not in the cache
                raise Exception(_("Package Not Found in Cache, Clear the Cache to \
                                 Regenerate it."))
            batch.append(package)
        return batch

    def import_errata(self):
        log(1, ["", _("Importing channel patches")])
        errata_collection = sync_handlers.ErrataCollection()
        # sort by channel_label
        sorted_channels = sorted(list(self._missing_channel_errata.items()), key=lambda x: x[0])
        for chn, errata in sorted_channels:
            log(2, _("Importing %s patches for channel %s.") % (len(errata), chn))
            batch = []
            for eid, timestamp, _advisory_name in errata:
                erratum = errata_collection.get_erratum(eid, timestamp)
                # bug 161144: it seems that incremental dumps can create an
                # errata collection None
                if erratum is not None:
                    self._fix_erratum(erratum)
                    batch.append(erratum)

            self._process_batch(chn, batch, messages.errata_importing,
                                sync_handlers.import_errata)

    @staticmethod
    def _fix_erratum(erratum):
        """ Replace the list of packages with references to short packages"""
        if erratum['org_id'] is not None:
            erratum['org_id'] = OPTIONS.orgid or DEFAULT_ORG

        sp_coll = sync_handlers.ShortPackageCollection()
        pids = set(erratum['packages'] or [])
        # map all the pkgs objects to the erratum
        packages = []
        # remove packages which are not in the export (e.g. archs we are not syncing)
        for pid in pids:
            if not sp_coll.has_package(pid):
                # Package not found, go on - may be part of a channel we don't
                # sync
                continue
            package = sp_coll.get_package(pid)
            if package['org_id'] is not None:
                package['org_id'] = erratum['org_id']

            packages.append(package)

        # rewrite package org to where they got imported
        _validate_package_org(packages)
        erratum['packages'] = packages

        if OPTIONS.channel:
            # If we are syncing only selected channels, do not link
            # to channels that do not have this erratum, they may not
            # have all related packages synced
            imported_channels = _getImportedChannels(withAdvisory=erratum)
            # Import erratum to channels that are being synced
            imported_channels += OPTIONS.channel
        else:
            # Associate errata to channels that are synced already
            imported_channels = _getImportedChannels()

        erratum['channels'] = [c for c in erratum['channels']
                               if c['label'] in imported_channels]

        # Now fix the files
        for errata_file in (erratum['files'] or []):
            errata_file_package = errata_file.get('package')
            errata_file_source_package = errata_file.get('source-package')
            if errata_file['file_type'] == 'RPM' and \
                    errata_file_package is not None:
                package = None
                if sp_coll.has_package(errata_file_package):
                    package = sp_coll.get_package(errata_file_package)
                errata_file['pkgobj'] = package
            elif errata_file['file_type'] == 'SRPM' and \
                    errata_file_source_package is not None:
                # XXX misa: deal with source rpms
                errata_file['pkgobj'] = None

    def _fetch_packages(self, channel, missing_fs_packages, sources=0):
        short_package_collection = sync_handlers.ShortPackageCollection()
        if sources:
            #    acronym = "SRPM"
            package_collection = sync_handlers.SourcePackageCollection()
        else:
            #    acronym = "RPM"
            package_collection = sync_handlers.PackageCollection()

        self._failed_fs_packages = Queue.Queue()
        self._extinct_packages = Queue.Queue()
        pkgs_total = len(missing_fs_packages)
        pkg_current = 0
        total_size = 0
        queue = Queue.Queue()
        out_queue = Queue.Queue()
        lock = threading.Lock()

        # count size of missing packages
        for package_id, path in missing_fs_packages:
            package = package_collection.get_package(package_id)
            total_size = total_size + package['package_size']
            queue.put((package_id, path))

        log(1, messages.package_fetch_total_size %
            (self._bytes_to_fuzzy(total_size)))
        real_processed_size = processed_size = 0
        real_total_size = total_size
        start_time = round(time.time())

        all_threads = []
        for _thread in range(4):
            t = ThreadDownload(lock, queue, out_queue, short_package_collection, package_collection,
                               self, self._failed_fs_packages, self._extinct_packages, sources, channel)
            t.setDaemon(True)
            t.start()
            all_threads.append(t)

        while ([x for x in all_threads if x.isAlive()]
               and pkg_current < pkgs_total):
            try:
                (rpmManip, package, is_done) = out_queue.get(False, 0.1)
            except Queue.Empty:
                continue
            pkg_current = pkg_current + 1

            if not is_done:  # package failed to download or already exist on disk
                real_total_size -= package['package_size']
                processed_size += package['package_size']
                try:
                    out_queue.task_done()
                except AttributeError:
                    pass
                continue
            # Package successfully saved
            filename = os.path.basename(rpmManip.relative_path)

            # Determine downloaded size and remaining time
            size = package['package_size']
            real_processed_size += size
            processed_size += size
            current_time = round(time.time())
            # timedalta could not be multiplicated by float
            remain_time = (datetime.timedelta(seconds=current_time - start_time)) * \
                          ((real_total_size * 10000) / real_processed_size - 10000) / 10000
            # cut off miliseconds
            remain_time = datetime.timedelta(remain_time.days, remain_time.seconds)
            log(1, messages.package_fetch_remain_size_time %
                (self._bytes_to_fuzzy(processed_size), self._bytes_to_fuzzy(total_size), remain_time))

            log(1, messages.package_fetch_successful %
                (pkg_current, pkgs_total, filename, size))
            try:
                out_queue.task_done()
            except AttributeError:
                pass

        extinct_count = self._extinct_packages.qsize()
        failed_count = self._failed_fs_packages.qsize()

        # Printing summary
        log(2, messages.package_fetch_summary % channel, notimeYN=1)
        log(2, messages.package_fetch_summary_success %
            (pkgs_total - extinct_count - failed_count), notimeYN=1)
        log(2, messages.package_fetch_summary_failed % failed_count,
            notimeYN=1)
        log(2, messages.package_fetch_summary_extinct % extinct_count,
            notimeYN=1)

    # Translate x bytes to string "x MB", "x GB" or "x kB"
    @staticmethod
    def _bytes_to_fuzzy(b):
        units = ['bytes', 'kiB', 'MiB', 'GiB', 'TiB', 'PiB']
        base = 1024
        fuzzy = b
        for unit in units:
            if fuzzy >= base:
                fuzzy = float(fuzzy) / base
            else:
                break
        int_len = len("%d" % fuzzy)
        fract_len = 3 - int_len
        # pylint: disable=W0631
        return "%*.*f %s" % (int_len, fract_len, fuzzy, unit)

    def _get_package_stream(self, channel, package_id, nvrea, sources, checksum):
        """ returns (filepath, stream), so in the case of a "wire source",
            the return value is, of course, (None, stream)
        """

        # Returns a package stream from disk
        if self.mountpoint:
            rpmFile = rpmsPath(package_id, self.mountpoint, sources)
            try:
                stream = open(rpmFile, "rb")
            except IOError:
                e = sys.exc_info()[1]
                if e.errno != 2:  # No such file or directory
                    raise
                return (rpmFile, None)

            return (rpmFile, stream)

        # Wire stream
        if CFG.ISS_PARENT:
            stream = self.xmlDataServer.getRpm(nvrea, channel, checksum)
        else:
            rpmServer = xmlWireSource.RPCGetWireSource(self.systemid, self.sslYN,
                                                       self.xml_dump_version)
            stream = rpmServer.getPackageStream(channel, nvrea, checksum)

        return (None, stream)

    def import_supportinfo(self):
        """Imports the support-related information"""
        self._process_simple("getSupportInformationXmlStream", "supportinfo")

    def import_suse_products(self):
        """Imports SUSE Products"""
        self._process_simple("getSuseProductsXmlStream", "suse_products")

    def import_suse_product_channels(self):
        """Imports SUSE Product Channels"""
        self._process_simple("getSuseProductChannelsXmlStream", "suse_product_channels")

    def import_suse_upgrade_paths(self):
        """Imports Upgrade Paths"""
        self._process_simple("getSuseUpgradePathsXmlStream", "suse_upgrade_paths")

    def import_suse_product_extensions(self):
        """Imports SUSE Product Extensions"""
        self._process_simple("getSuseProductExtensionsXmlStream", "suse_product_extensions")

    def import_suse_product_repositories(self):
        """Imports SUSE Product Repositories"""
        self._process_simple("getSuseProductRepositoriesXmlStream", "suse_product_repositories")

    def import_scc_repositories(self):
        """Imports SCC Repositories"""
        self._process_simple("getSCCRepositoriesXmlStream", "scc_repositories")

    def import_suse_subscriptions(self):
        """Imports Subscriptions"""
        self._process_simple("getSuseSubscriptionsXmlStream", "suse_subscriptions")

    def import_cloned_channels(self):
        """Imports Cloned Channels"""
        self._process_simple("getClonedChannelsXmlStream", "cloned_channels")

class ThreadDownload(threading.Thread):

    def __init__(self, lock, queue, out_queue, short_package_collection, package_collection, syncer,
                 failed_fs_packages, extinct_packages, sources, channel):
        threading.Thread.__init__(self)
        self.queue = queue
        self.out_queue = out_queue
        self.short_package_collection = short_package_collection
        self.package_collection = package_collection
        self.syncer = syncer
        self.failed_fs_packages = failed_fs_packages
        self.extinct_packages = extinct_packages
        self.sources = sources
        self.channel = channel
        self.lock = lock

    def run(self):
        while not self.queue.empty():
            # grabs host from queue
            (package_id, path) = self.queue.get()
            package = self.package_collection.get_package(package_id)
            last_modified = package['last_modified']
            checksum_type = package['checksum_type']
            checksum = package['checksum']
            package_size = package['package_size']
            if not path:
                nevra = get_nevra(package)
                orgid = None
                if package['org_id']:
                    orgid = OPTIONS.orgid or DEFAULT_ORG
                path = self.syncer._get_rel_package_path(nevra, orgid, self.sources,
                                                         checksum_type, checksum)

            # update package path
            package['path'] = path
            self.package_collection.add_item(package)

            errcode = self.syncer._verify_file(path, rhnLib.timestamp(last_modified),
                                               package_size, checksum_type, checksum)
            if errcode == 0:
                # file is already there
                # do not count this size to time estimate
                try:
                    self.queue.task_done()
                except AttributeError:
                    pass
                self.out_queue.put((None, package, False))
                continue

            cfg = config.initUp2dateConfig()
            rpmManip = RpmManip(package, path)
            nvrea = rpmManip.nvrea()

            # Retry a number of times, we may have network errors
            for _try in range(cfg['networkRetries']):
                self.lock.acquire()
                try:
                    rpmFile, stream = self.syncer._get_package_stream(self.channel,
                                                                      package_id, nvrea, self.sources, checksum)
                except:
                    self.lock.release()
                    raise
                self.lock.release()
                if stream is None:
                    # Mark the package as extinct
                    self.extinct_packages.put(package_id)
                    log(1, messages.package_fetch_extinct %
                        (os.path.basename(path)))
                    break  # inner for

                try:
                    rpmManip.write_file(stream)
                    break  # inner for
                except FileCreationError:
                    e = sys.exc_info()[1]
                    msg = e.args[0]
                    log2disk(-1, _("Unable to save file %s: %s") % (
                        rpmManip.full_path, msg))
                    # Try again
                    continue  # inner for

            else:  # for
                # Ran out of iterations
                # Mark the package as failed and move on
                self.failed_fs_packages.put(package_id)
                log(1, messages.package_fetch_failed %
                    (os.path.basename(path)))
                # Move to the next package
                try:
                    self.queue.task_done()
                except AttributeError:
                    pass
                self.out_queue.put((rpmManip, package, False))
                continue

            if stream is None:
                # Package is extinct. Move on
                try:
                    self.queue.task_done()
                except AttributeError:
                    pass
                self.out_queue.put((rpmManip, package, False))
                continue

            if self.syncer.mountpoint and not self.syncer.keep_rpms:
                # Channel dumps import; try to unlink to preserve disk space
                # rpmFile is always returned by _get_package_stream for
                # disk-based imports
                assert(rpmFile is not None)
                try:
                    os.unlink(rpmFile)
                except (OSError, IOError):
                    pass

            # signals to queue job is done
            try:
                self.queue.task_done()
            except AttributeError:
                pass
            self.out_queue.put((rpmManip, package, True))


class StreamProducer:

    def __init__(self, handler, data_source_class, source_func):
        self.handler = handler
        self.is_disk_loader = data_source_class.is_disk_loader()
        if self.is_disk_loader:
            self.loader = getattr(data_source_class, source_func)()
        else:
            self.loader = getattr(data_source_class, source_func)
        self._args = ()

    def set_args(self, *args):
        self._args = args

    def close(self):
        self.handler.close()

    def process(self, batch):
        if self.is_disk_loader:
            for oid in batch:
                self.loader.setID(oid)
                stream = self.loader.load()
                self.handler.process(stream)
        else:
            # Only use the extra arguments if needed, for now
            args = self._args or (batch, )
            stream = self.loader(*args)
            self.handler.process(stream)


def _verifyPkgRepMountPoint():
    """ Checks the base package repository directory tree for
        existance and permissions.

        Creates base dir if need be, and chowns to apache.root (required
        for rhnpush).
    """

    if not CFG.MOUNT_POINT:
        # Incomplete configuration
        log(-1, _("ERROR: server.mount_point not set in the configuration file"))
        sys.exit(16)

    if not os.path.exists(fileutils.cleanupAbsPath(CFG.MOUNT_POINT)):
        log(-1, _("ERROR: server.mount_point %s do not exist")
            % fileutils.cleanupAbsPath(CFG.MOUNT_POINT))
        sys.exit(26)

    if not os.path.exists(fileutils.cleanupAbsPath(CFG.MOUNT_POINT + '/' + CFG.PREPENDED_DIR)):
        log(-1, _("ERROR: path under server.mount_point (%s)  do not exist")
            % fileutils.cleanupAbsPath(CFG.MOUNT_POINT + '/' + CFG.PREPENDED_DIR))
        sys.exit(26)


def _validate_package_org(batch):
    """Validate the orgids associated with packages.
     If its redhat channel default to Null org
     If custom channel and org is specified use that.
     If custom and package org is not valid default to org 1
    """
    orgid = OPTIONS.orgid or None
    for pkg in batch:
        if not pkg['org_id'] or pkg['org_id'] == 'None':
            # default to Null so do nothing
            pkg['org_id'] = None
        elif orgid:
            # if options.orgid specified use it
            pkg['org_id'] = orgid
        else:
            # org from server is not valid
            pkg['org_id'] = DEFAULT_ORG


def _getImportedChannels(withAdvisory=None):
    "Retrieves the channels already imported in the satellite's database"

    query = "select distinct c.label from rhnChannel c"
    query_args={}

    if withAdvisory:
        query += """
            inner join rhnChannelErrata ce on c.id = ce.channel_id
            inner join rhnErrata e on ce.errata_id = e.id
                    and e.advisory_name = :advisory
                    and e.org_id = :org_id
        """
        query_args={"advisory": withAdvisory["advisory_name"],
                    "org_id": withAdvisory["org_id"]}

    if not OPTIONS.include_custom_channels:
        query += " where c.org_id is null"

    try:
        h = rhnSQL.prepare(query)
        h.execute(**query_args)
        return [x['label'] for x in h.fetchall_dict() or []]
    except (SQLError, SQLSchemaError, SQLConnectError):
        e = sys.exc_info()[1]
        # An SQL error is fatal... crash and burn
        exitWithTraceback(e, 'SQL ERROR during xml processing', 17)
    return []


def getDbIssParent():
    sql = "select label from rhnISSMaster where is_current_master = 'Y'"
    h = rhnSQL.prepare(sql)
    h.execute()
    row = h.fetchone_dict()
    if not row:
        return None
    return row['label']


def getDbCaChain(master):
    sql = "select ca_cert from rhnISSMaster where label = :label"
    h = rhnSQL.prepare(sql)
    h.execute(label=master)
    row = h.fetchone_dict()
    if not row:
        return None
    return row['ca_cert']


def processCommandline():
    "process the commandline, setting the OPTIONS object"

    log2disk(-1, _("Commandline: %s") % repr(sys.argv))
    optionsTable = [
        Option('--batch-size',          action='store',
               help=_('DEBUG ONLY: max. batch-size for XML/database-import processing (1..%s).'
                      + '"man mgr-inter-sync" for more information.') % SequenceServer.NEVER_MORE_THAN),
        Option('--ca-cert',             action='store',
               help=_('alternative SSL CA Cert (fullpath to cert file)')),
        Option('-c', '--channel',             action='append',
               help=_('process data for this channel only')),
        Option('--consider-full',       action='store_true',
               help=_('disk dump will be considered to be a full export; '
                      'see "man mgr-inter-sync" for more information.')),
        Option('--include-custom-channels',       action='store_true',
               help=_('existing custom channels will also be synced (unless -c is used)')),
        Option('--debug-level',         action='store',
               help=_('override debug level set in /etc/rhn/rhn.conf (which is currently set at %s).') % CFG.DEBUG),
        Option('--dump-version',        action='store',
               help=_("requested version of XML dump (default: %s)") % constants.PROTOCOL_VERSION),
        Option('--email',               action='store_true',
               help=_('e-mail a report of what was synced/imported')),
        Option('--force-all-errata',    action='store_true',
               help=_('forcibly process all (not a diff of) patch metadata')),
        Option('--ignore-proxy',          action='store_true',
               help=_('Do not use an http proxy under any circumstances.')),
        Option('--http-proxy',          action='store',
               help=_('alternative http proxy (hostname:port)')),
        Option('--http-proxy-username', action='store',
               help=_('alternative http proxy username')),
        Option('--http-proxy-password', action='store',
               help=_('alternative http proxy password')),
        Option('--iss-parent',          action='store',
               help=_('parent SUSE Manager to import content from')),
        Option('-l', '--list-channels', action='store_true',
               help=_('list all available channels and exit')),
        Option('--list-error-codes',    action='store_true',
               help=_("help on all error codes mgr-inter-sync returns")),
        Option('-m', '--mount-point',   action='store',
               help=_('source mount point for import - disk update only')),
        Option('--no-errata',           action='store_true',
               help=_('do not process patch data')),
        Option('--no-kickstarts',       action='store_true',
               help=_('do not process kickstart data (provisioning only)')),
        Option('--no-packages',         action='store_true',
               help=_('do not process full package metadata')),
        Option('--no-rpms',             action='store_true',
               help=_('do not download, or process any RPMs')),
        Option('--no-ssl',              action='store_true',
               help=_('turn off SSL (not recommended)')),
        Option('--orgid',               action='store',
               help=_('org to which the sync imports data. defaults to the admin account')),
        Option('-p', '--print-configuration', action='store_true',
               help=_('print the configuration and exit')),
        Option('-s', '--server',        action='store',
               help=_('alternative server with which to connect (hostname)')),
        Option('--step',                action='store',
               help=_('synchronize to this step (man mgr-inter-sync for more info)')),
        Option('--sync-to-temp',        action='store_true',
               help=_('write complete data to tempfile before streaming to remainder of app')),
        Option('--systemid',            action='store',
               help=_("DEBUG ONLY: alternative path to digital system id")),
        Option('--traceback-mail',      action='store',
               help=_('alternative email address(es) for sync output (--email option)')),
        Option('--keep-rpms',           action='store_true',
               help=_('do not remove rpms when importing from local dump')),
        Option('--master',              action='store',
               help=_('the fully qualified domain name of the master Satellite. '
                      'Valid with --mount-point only. '
                      'Required if you want to import org data and channel permissions.')),
    ]
    optionParser = OptionParser(option_list=optionsTable)
    global OPTIONS
    OPTIONS, args = optionParser.parse_args()

    # we take extra commandline arguments that are not linked to an option
    if args:
        msg = _("ERROR: these arguments make no sense in this context (try --help): %s") % repr(args)
        log2stderr(-1, msg, 1, 1)
        sys.exit(19)

    #
    # process anything CFG related (db, debug, server, and print)
    #
    try:
        rhnSQL.initDB()
    except (SQLError, SQLSchemaError, SQLConnectError):
        e = sys.exc_info()[1]
        # An SQL error is fatal... crash and burn
        log(-1, _("ERROR: Can't connect to the database: %s") % e, stream=sys.stderr)
        log(-1, _("ERROR: Check if your database is running."), stream=sys.stderr)
        sys.exit(20)

    CFG.set("ISS_Parent", getDbIssParent())
    CFG.set("TRACEBACK_MAIL", OPTIONS.traceback_mail or CFG.TRACEBACK_MAIL)
    CFG.set("RHN_PARENT", idn_ascii_to_puny(OPTIONS.iss_parent or OPTIONS.server or
                                            CFG.ISS_PARENT or CFG.RHN_PARENT))
    if OPTIONS.server and not OPTIONS.iss_parent:
        # server option on comman line should override ISS parent from config
        CFG.set("ISS_PARENT", None)
    else:
        CFG.set("ISS_PARENT", idn_ascii_to_puny(OPTIONS.iss_parent or CFG.ISS_PARENT))
        CFG.set("ISS_CA_CHAIN", OPTIONS.ca_cert or getDbCaChain(CFG.RHN_PARENT)
                or CFG.CA_CHAIN)

    if not OPTIONS.ignore_proxy:
        CFG.set("HTTP_PROXY", idn_ascii_to_puny(OPTIONS.http_proxy or CFG.HTTP_PROXY))
        CFG.set("HTTP_PROXY_USERNAME", OPTIONS.http_proxy_username or CFG.HTTP_PROXY_USERNAME)
        CFG.set("HTTP_PROXY_PASSWORD", OPTIONS.http_proxy_password or CFG.HTTP_PROXY_PASSWORD)
        CFG.set("CA_CHAIN", OPTIONS.ca_cert or CFG.CA_CHAIN)

    CFG.set("SYNC_TO_TEMP", OPTIONS.sync_to_temp or CFG.SYNC_TO_TEMP)

    # check the validity of the debug level
    if OPTIONS.debug_level:
        debugRange = 6
        try:
            debugLevel = int(OPTIONS.debug_level)
            if not (0 <= debugLevel <= debugRange):
                usix.raise_with_tb(RhnSyncException("exception will be caught"), sys.exc_info()[2])
        except KeyboardInterrupt:
            e = sys.exc_info()[1]
            raise
        # pylint: disable=E0012, W0703
        except Exception:
            msg = [_("ERROR: --debug-level takes an in integer value within the range %s.")
                   % repr(tuple(range(debugRange + 1))),
                   _("  0  - little logging/messaging."),
                   _("  1  - minimal logging/messaging."),
                   _("  2  - normal level of logging/messaging."),
                   _("  3  - lots of logging/messaging."),
                   _("  4+ - excessive logging/messaging.")]
            log(-1, msg, 1, 1, sys.stderr)
            sys.exit(21)
        else:
            CFG.set('DEBUG', debugLevel)
            initLOG(CFG.LOG_FILE, debugLevel)

    if OPTIONS.print_configuration:
        CFG.show()
        sys.exit(0)

    if OPTIONS.master:
        if not OPTIONS.mount_point:
            msg = _("ERROR: The --master option is only valid with the --mount-point option")
            log2stderr(-1, msg, cleanYN=1)
            sys.exit(28)
    elif CFG.ISS_PARENT:
        OPTIONS.master = CFG.ISS_PARENT

    if OPTIONS.orgid:
        # verify if its a valid org
        orgs = [a['id'] for a in satCerts.get_all_orgs()]
        if int(OPTIONS.orgid) not in orgs:
            msg = _("ERROR: Unable to lookup Org Id %s") % OPTIONS.orgid
            log2stderr(-1, msg, cleanYN=1)
            sys.exit(27)

    # the action dictionary used throughout
    actionDict = {}

    if OPTIONS.list_channels:
        if OPTIONS.step:
            log(-1, _("WARNING: --list-channels option overrides any --step option. --step ignored."))
        OPTIONS.step = 'channels'
        actionDict['list-channels'] = 1
    else:
        actionDict['list-channels'] = 0

    #
    # validate the --step option and set up the hierarchy of sync process steps.
    #
    stepHierarchy = Runner.step_hierarchy
    # if no step stated... we do all steps.
    if not OPTIONS.step:
        OPTIONS.step = stepHierarchy[-1]

    if OPTIONS.step not in stepHierarchy:
        log2stderr(-1, _("ERROR: '%s' is not a valid step. See 'man mgr-inter-sync' for more detail.")
                   % OPTIONS.step, 1, 1)
        sys.exit(22)

    # XXX: --source is deferred for the time being
    #OPTIONS.source = OPTIONS.step in sourceSteps

    # populate the action dictionary
    for step in stepHierarchy:
        actionDict[step] = 1
        if step == OPTIONS.step:
            break

    # make sure *all* steps in the actionDict are handled.
    for step in stepHierarchy:
        actionDict[step] = step in actionDict

    channels = OPTIONS.channel or []
    if OPTIONS.list_channels:
        actionDict['channels'] = 1
        actionDict['arches'] = 0
        actionDict['channel-families'] = 1
        channels = []

    # Cleanup selected channels.
    # if no channels selected, the default is to "freshen", or select the
    # already existing channels in the local database.
    if not channels:
        channels = _getImportedChannels()

    if not channels:
        if actionDict['channels'] and not actionDict['list-channels']:
            msg = _("ERROR: No channels currently imported; try mgr-inter-sync --list-channels; "
                  + "then mgr-inter-sync -c chn0 -c chn1...")
            log2disk(-1, msg)
            log2stderr(-1, msg, cleanYN=1)
            sys.exit(0)

    # add all the "other" actions specified.
    otherActions = {"no_rpms": 'no-rpms',
                    #"no_srpms"           : 'no-srpms',
                    "no_packages": 'no-packages',
                    #"no_source_packages" : 'no-source-packages',
                    "no_errata": 'no-errata',
                    "no_kickstarts": 'no-kickstarts',
                    "force_all_errata": 'force-all-errata',
                    'no_ssl': 'no-ssl'}

    for oa in otherActions:
        if getattr(OPTIONS, oa):
            actionDict[otherActions[oa]] = 1
        else:
            actionDict[otherActions[oa]] = 0

    if actionDict['no-kickstarts']:
        actionDict['kickstarts'] = 0

    if actionDict['no-errata']:
        actionDict['errata'] = 0

    # if actionDict['no-source-packages']:
    actionDict['source-packages'] = 0

    if actionDict['no-packages']:
        actionDict['packages'] = 0
        actionDict['short'] = 0
        actionDict['download-packages'] = 0
        actionDict['rpms'] = 0

    if actionDict['no-rpms']:
        actionDict['rpms'] = 0

    # if actionDict['no-srpms']:
    actionDict['srpms'] = 0

    if not OPTIONS.master:
        actionDict['orgs'] = 0

    if OPTIONS.batch_size:
        try:
            OPTIONS.batch_size = int(OPTIONS.batch_size)
            if OPTIONS.batch_size not in list(range(1, 51)):
                raise ValueError(_("ERROR: --batch-size must have a value within the range: 1..50"))
        except (ValueError, TypeError):
            # int(None) --> TypeError
            # int('a')  --> ValueError
            usix.raise_with_tb(ValueError(_("ERROR: --batch-size must have a value within the range: 1..50")),
                               sys.exc_info()[2])

    OPTIONS.mount_point = fileutils.cleanupAbsPath(OPTIONS.mount_point)
    OPTIONS.systemid = fileutils.cleanupAbsPath(OPTIONS.systemid)

    if OPTIONS.mount_point:
        if not os.path.isdir(OPTIONS.mount_point):
            msg = _("ERROR: no such directory %s") % OPTIONS.mount_point
            log2stderr(-1, msg, cleanYN=1)
            sys.exit(25)

    if OPTIONS.list_error_codes:
        msg = [_("Error Codes: Returned codes means:"),
               _(" -1  - Could not lock file or KeyboardInterrupt or SystemExit"),
               _("  0  - User interrupted or intentional exit"),
               _("  1  - attempting to run more than one instance of mgr-inter-sync."),
               _("  2  - Unable to find synchronization tools."),
               _("  3  - a general socket exception occurred"),
               _("  4  - an SSL error occurred. Recheck your SSL settings."),
               _("  5  - ISS error"),
               _("  6  - unhandled exception occurred"),
               _("  7  - unknown sync error"),
               _("  8  - ERROR: must be root to execute"),
               _("  9  - rpclib fault during synchronization init"),
               _("  10 - synchronization init error"),
               _("  11 - Error parsing XML stream"),
               _("  12 - Channel do not exist"),
               _("  13 - SQL error during importing package metadata"),
               _("  14 - SQL error during linking channel packages"),
               _("  15 - SQL error during xml processing"),
               _("  16 - server.mount_point not set in the configuration file"),
               _("  17 - SQL error during retrieving the channels already imported in the SUSE Manager database"),
               _("  18 - Wrong db connection string in rhn.conf"),
               _("  19 - Bad arguments"),
               _("  20 - Could not connect to db."),
               _("  21 - Bad debug level"),
               _("  22 - Not valid step"),
               _("  24 - no such file"),
               _("  25 - no such directory"),
               _("  26 - mount_point does not exist"),
               _("  27 - No such org"),
               _("  28 - error: --master is only valid with --mount-point"), ]
        log(-1, msg, 1, 1, sys.stderr)
        sys.exit(0)

    if OPTIONS.dump_version:
        OPTIONS.dump_version = str(OPTIONS.dump_version)
        if OPTIONS.dump_version not in constants.ALLOWED_SYNC_PROTOCOL_VERSIONS:
            msg = _("ERROR: unknown dump version, try one of %s") % \
                constants.ALLOWED_SYNC_PROTOCOL_VERSIONS
            log2stderr(-1, msg, cleanYN=1)
            sys.exit(19)

    # return the dictionary of actions, channels
    return actionDict, channels


def formatDateTime(dtstring=None, dt=None):
    """ Format the date time using your locale settings. This assume that your setlocale has been alread called. """
    if not dt:
        dt = time.strptime(dtstring, '%Y%m%d%H%M%S')
    return time.strftime("%c", dt)


if __name__ == '__main__':
    sys.stderr.write("!!! running this directly is advisable *ONLY* for testing"
                     " purposes !!!\n")
    try:
        sys.exit(Runner().main() or 0)
    except (KeyboardInterrupt, SystemExit):
        ex = sys.exc_info()[1]
        sys.exit(ex)
    except Exception:  # pylint: disable=E0012, W0703
        tb = 'TRACEBACK: ' + fetchTraceback(with_locals=1)
        log2disk(-1, tb)
        log2email(-1, tb)
        sendMail()
        sys.exit(-1)
 070701000000F4000081FD0000000000000000000000016290A0C100003C37000000000000000000000000000000000000003600000000spacewalk-backend/satellite_tools/spacewalk-data-fsck #!/usr/bin/python3
# -*- coding: utf-8 -*-

import sys
import os
import stat
import shutil
from optparse import Option, OptionParser
import tempfile

try:
    from uyuni.common import checksum
    from spacewalk.common.rhnLog import initLOG, log_debug
    from spacewalk.common.rhnConfig import CFG, initCFG
    from spacewalk.server import rhnSQL
    from spacewalk.server.rhnPackage import unlink_package_file
except:
    _LIBPATH = "/usr/share/rhn"
    # add to the path if need be
    if _LIBPATH not in sys.path:
        sys.path.append(_LIBPATH)
    from common import CFG, initCFG, initLOG, log_debug
    from server import rhnSQL
    from server.rhnPackage import unlink_package_file

LOG_FILE = '/var/log/rhn/spacewalk-data-fsck.log'

report_msg = {
    'file': "%5d files scanned",
    'exists': "ERROR: %5d files missing on disk",
    'dbexists': "ERROR: %5d files missing in database",
    'srpmexists': "ERROR: %5d SRPMs without matching RPM in db",
    'restore': "ERROR: %5d file paths could not be restored",
    'size': "ERROR: %5d file size mismatch(es)",
    'checksum': "ERROR: %5d file checksum mismatch(es)",
    'nevrao': "ERROR: %5d file NEVRAO mismatch(es)",
}
report = {}


def is_sha256_capable():
    import rpm
    ts = rpm.TransactionSet()
    mi = ts.dbMatch('Providename', 'spacewalk-schema')
    cmp = -1
    try:
        h = next(mi)
        cmp = rpm.labelCompare([h['name'].decode("utf-8"), h['version'].decode("utf-8"), h['release'].decode("utf-8")],
                               [h['name'].decode("utf-8"), '0.8.1', '1'])
    except StopIteration:
        pass
    return (cmp > 0)


def db_init():
    initCFG('server')
    rhnSQL.initDB()


def src_package_query():
    query = """select p.id
                 from rhnPackage p
                where p.path like :filename"""
    return query

def package_query(options, bind_path=False):
    query = """select %s
                 from %s
                     """
    columns = "p.id, p.org_id, p.package_size, p.path"
    tables = "rhnPackage p"
    if options.checksum or options.nevrao:
        if is_sha256_capable():
            columns += ", c.checksum, c.checksum_type"
            tables += " join rhnChecksumView c on p.checksum_id = c.id"
        else:
            columns += ", p.md5sum as checksum, 'md5sum' as checksum_type"
    if options.nevrao:
        columns += ", n.name, evr.epoch, evr.version, evr.release, a.label as arch"
        tables += " join rhnPackageName n on p.name_id = n.id"
        tables += " join rhnPackageEVR evr on p.evr_id = evr.id"
        tables += " join rhnPackageArch a on p.package_arch_id = a.id"
    if bind_path:
        query += "where p.path = :path"
    return query % (columns, tables)


def check_db_vs_disk(options):
    for k in list(report_msg.keys()):
        report[k] = 0
    query = package_query(options)
    h = rhnSQL.prepare(query)

    path_prefix = CFG.MOUNT_POINT

    h.execute()

    while 1:
        row = h.fetchone_dict()
        if not row:
            break

        if row['path']:
            abs_path = os.path.join(path_prefix, row['path'])
            log(3, abs_path)
            report['file'] += 1

            if check_disk_exists(abs_path) == 1:
                report['exists'] += 1
                not_on_disk(row, abs_path, options)
            elif options.restore:
                report['restore'] += check_disk_nevrao(abs_path, row.copy(), True)
            else:
                if options.size:
                    report['size'] += check_disk_size(abs_path, row['package_size'])
                if options.nevrao:
                    report['nevrao'] += check_disk_nevrao(abs_path, row.copy())
                if options.checksum:
                    report['checksum'] += check_disk_checksum(abs_path,
                                                              row['checksum_type'], row['checksum'])
        elif options.restore:
            abs_path = "unknown"
            report['restore'] += check_disk_nevrao(abs_path, row.copy(), True)

    h.close()
    error_found = 0
    for i in ['file', 'exists', 'restore', 'size', 'nevrao', 'checksum']:
        if report[i] > 0:
            log(1, report_msg[i] % report[i])
            if i != 'file':
                error_found = 1
    return error_found


def check_disk_exists(abs_path):
    return not os.path.isfile(abs_path)


def not_on_disk(row, abs_path, options):
    if options.remove:
        log(0, "Removed package path from db: %s" % row['path'])
        rhnSQL.execute('update rhnPackage set path = NULL where id = :id', id=row['id'])
        rhnSQL.commit()
    else:
        log(0, "File missing: %s" % abs_path)


def check_disk_size(abs_path, size):
    file_size = os.stat(abs_path)[stat.ST_SIZE]
    ret = 0
    if file_size != size:
        log(0, "File size mismatch: %s (%s vs. %s)" % (abs_path, size, file_size))
        ret = 1
    return ret


def check_disk_nevrao(abs_path, row, restore=None):
    file = {}
    try:
        (_redhat_,
        file['org_id'],
        file['checksum_prefix'],
        file['name'],
        file['evr'],
        file['arch'],
        file['checksum'],
        file['basename']) = row['path'].split('/')
    except ValueError:
        log(0, "File path %s mismatch structure" % row['path'])
        return 1
    except AttributeError:
        if not restore:
            log(0, "File path missing in DB")
            return 1
        file['org_id'] = ""
        file['checksum_prefix'] = ""
        file['name'] = ""
        file['evr'] = ""
        file['arch'] = ""
        file['checksum'] = ""
        file['basename'] = ""

    if not row['org_id']:
        row['org_id'] = 'NULL'
    else:
        row['org_id'] = str(row['org_id'])
    row['checksum_prefix'] = row['checksum'][:3]
    if row['epoch']:
        row['evr'] = row['epoch'] + ':'
    else:
        row['evr'] = ''
    row['evr'] += row['version'] + '-' + row['release']
    row['basename'] = "%s-%s-%s.%s.%s" % (
        row['name'], row['version'], row['release'],
        row['arch'], (row.get('path') or "rpm")[-3:])
    ret = 0
    for key in ('org_id', 'checksum_prefix', 'name', 'evr', 'arch', 'checksum',
                'basename'):
        if file[key] != row[key]:
            log(0, "File path mismatch: %s (%s: %s vs. %s)" % (abs_path, key, row[key],
                                                               file[key]))
            if restore:
                log(2, "Beginning file path restoration: %s" % abs_path)
                return restore_file_path(file, row)
            ret = 1
    return ret


def restore_file_path(file, row):
    prefix = CFG.MOUNT_POINT + '/'
    new_path = 'packages/' + row['org_id'] + '/' + row['checksum_prefix'] + '/' + row['name'] + \
        '/' + row['evr'] + '/' + row['arch'] + '/' + row['checksum'] + '/' + row['basename']
    query = "update rhnPackage set path=\'" + new_path + "\' where id=" + str(row['id'])
    new_path = prefix + new_path

    if row['path']:
        backup_path = prefix + row['path']
    if (os.path.isfile(new_path) and
       check_disk_checksum(new_path, row['checksum_type'], row['checksum']) == 0):
            backup_path = tempfile.mkdtemp() + new_path
            os.makedirs(backup_path.rsplit('/', 1)[0])
            log(0, "Target file path exists, moving to: %s" % backup_path)
            shutil.move(new_path, backup_path)
    elif not row['path']:
        # path is empty - unable to restore
        return delete_package_entry(row)

    cleanup = True
    try:  # 1st, make dirs needed
        os.makedirs(new_path.rsplit('/', 1)[0])
    except OSError as e:
        if e.errno != 17:  # something broke up
            log(0, "File path restoration failed: %s" % row['path'])
            return 1
        else:
            cleanup = False  # dir already exists, do not cleanup
    try:  # 2nd, create hardlink; os.link and os.makedirs in 1 dir would be problem due to checking of errno 17...
        if not os.path.isfile(new_path):
            shutil.move(backup_path, new_path)
    except OSError:
        log(0, "File path restoration failed, rolling back: %s" % row['path'])
        if cleanup == True:
            try:
                os.removedirs(new_path.rsplit('/', 1)[0])
            except OSError as e:
                if e.errno != 39:
                    log(0, "Could not rollback file path restoration: %s" % row['path'] or '')
                    return 1
        return
    h = rhnSQL.prepare(query)
    h.execute()
    rhnSQL.commit()
    try:
        if backup_path:
            if os.path.isfile(backup_path):
                os.remove(backup_path)
            os.removedirs(backup_path.rsplit('/', 1)[0])
    except OSError as e:
        if e.errno == 2:
            log(2, "File %s%s was removed by someone else but transaction has been successfully completed" %
                (prefix, row['path']))
        elif e.errno != 39:
            log(4, "Unexpected error, computer is going to self destruct")
    log(0, "File successfully restored, new file path: %s" % new_path)
    return 0

def delete_package_entry(row):
    query1 = "delete from rhnChannelPackage where package_id=" + str(row['id'])
    query2 = "delete from rhnPackage where id=" + str(row['id'])
    try:
        h = rhnSQL.prepare(query1)
        h.execute()
        h = rhnSQL.prepare(query2)
        h.execute()
        rhnSQL.commit()
        log(0, "Successfully removed DB package entry without path")
    except Exception as e:
        log(0, "Failed to remove DB package entry: ", e)
        return 1
    return 0

def check_disk_checksum(abs_path, checksum_type, db_checksum):
    file_checksum = None
    ret = 0
    try:
        fp = open(abs_path, 'rb')
        h = checksum.getHashlibInstance(checksum_type, False)
        h.update(fp.read())
        file_checksum = h.hexdigest()
        fp.close()
    except Exception as exc:
        log(0, "Unable to calculate checksum: {}".format(str(exc)))
        ret = 1

    if file_checksum is not None and file_checksum != db_checksum:
        log(0, "File checksum mismatch: %s (%s: %s vs. %s)" % (abs_path, checksum_type, db_checksum, file_checksum))
        if options.remove_mismatch:
            remove_mismatch(abs_path, options)
        ret = 1

    return ret


def check_disk_vs_db(disk_content=None, db_content=None):
    for k in list(report_msg.keys()):
        report[k] = 0
    query = package_query(options, bind_path=True)
    h = rhnSQL.prepare(query)
    for root, dirs, files in os.walk(os.path.join(CFG.MOUNT_POINT, 'packages')):
        rel_root = root[len(CFG.MOUNT_POINT) + 1:]
        for f in files:
            abs_path = os.path.join(root, f)
            rel_path = os.path.join(rel_root, f)
            log(3, abs_path)
            report['file'] += 1

            h.execute(path=rel_path)
            row = h.fetchone_dict()

            if not row:
                if (not is_srpm(f)) or is_orphaned_srpm(abs_path, f):
                    if is_srpm(f):
                        report['srpmexists'] += 1
                    else:
                        report['dbexists'] += 1
                    not_in_db(abs_path, options)
                continue

            if options.size and options.fs_only:
                report['size'] += check_disk_size(abs_path, row['package_size'])
            if options.nevrao and options.fs_only:
                report['nevrao'] += check_disk_nevrao(abs_path, row.copy())
            if options.checksum and options.fs_only:
                report['checksum'] += check_disk_checksum(abs_path,
                                                          row['checksum_type'], row['checksum'])
    h.close()
    error_found = 0
    for i in ['file', 'dbexists', 'srpmexists', 'size', 'nevrao', 'checksum']:
        if report[i] > 0:
            log(1, report_msg[i] % report[i])
            if i != 'file':
                error_found = 1
    return error_found

def is_srpm(file):
    if file.find("src.rpm") != -1:
        return True
    else:
        return False

def is_orphaned_srpm(path, file):
    if is_srpm(file):
        query = src_package_query()
        h = rhnSQL.prepare(query)
        wildcard_filename = "%/" + file.replace('src','%')
        h.execute(filename=wildcard_filename)
        row = h.fetchone_dict()
        if not row:
            log(0, "SRPM without matching RPM in db: %s" % (path))
            return True

    return False

def not_in_db(path, options):
    if options.remove:
        if is_srpm(path):
            log(0, "Removed SRPM without matching RPM in db: %s" % (path))
        else:
            log(0, "Removed file missing in db: %s" % (path))
        unlink_package_file(path)
    else:
        if not is_srpm(path):
            log(0, "File missing in db: %s" % (path))

def remove_mismatch(path, options):
    log(0, "Removed file because checksum does not match: %s" % (path))
    unlink_package_file(path)

def log(level, *args):
    log_debug(level, *args)
    verbose = options.verbose
    if not verbose:
        verbose = 0
    if verbose >= level:
        print((', '.join([str(i) for i in args])))

if __name__ == '__main__':

    options_table = [
        Option("-v", "--verbose",       action="count",
               help="Increase verbosity"),
        Option("-S", "--no-size",       action="store_false", dest="size", default=True,
               help="Don't check package size"),
        Option("-C", "--no-checksum",   action="store_false", dest="checksum", default=True,
               help="Don't check package checksum"),
        Option("-O", "--no-nevrao",     action="store_false", dest="nevrao", default=True,
               help="Don't check package name, epoch, version, release, arch, org"),
        Option("-d", "--db-only",       action="store_true",
               help="Check only if packages from database are present on filesystem"),
        Option("-f", "--fs-only",       action="store_true",
               help="Check only if packages from filesystem are in the database"),
        Option("-r", "--remove",        action="store_true",
               help="Automatically remove packages from filesystem not present in database"),
        Option("-R", "--remove-mismatch", action="store_true", dest="remove_mismatch", default=False,
               help="Automatically remove packages from filesystem that does not match the checksum stored in database. (not valid with --db-only)"),
        Option("-F", "--fix-file-path", action="store_true", dest="restore", default=False,
               help="Restores file paths, try this when you have NEVRAO mismatches. Do not run this command with another commands"),
    ]
    parser = OptionParser(option_list=options_table)
    (options, args) = parser.parse_args()

    initLOG(LOG_FILE, options.verbose or 0)

    db_init()

    exit_value = 0
    if options.remove_mismatch:
        if options.db_only or not options.checksum:
            log(0, "Syntax error: The option --remove-mismatch cannot be used with --db-only or --no-checksum")
            sys.exit(1)
    if not options.fs_only:
        log(1, "Checking if packages from database are present on filesystem")
        exit_value += check_db_vs_disk(options)
    if not options.db_only:
        log(1, "Checking if packages from filesystem are present in database")
        exit_value += check_disk_vs_db(options)

    sys.exit(exit_value)
 070701000000F5000081B40000000000000000000000016290A0C100001217000000000000000000000000000000000000003B00000000spacewalk-backend/satellite_tools/spacewalk-data-fsck.sgml    <!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook V3.1//EN" [
<!ENTITY THECOMMAND "spacewalk-data-fsck">
]>

<refentry>

<RefMeta>
<RefEntryTitle>spacewalk-data-fsck</RefEntryTitle><manvolnum>8</manvolnum>
</RefMeta>

<RefNameDiv>
<RefName><command>spacewalk-data-fsck</command></RefName>
<RefPurpose>
Helper utility to manage and compare packages on filesystem vs database.
</RefPurpose>
</RefNameDiv>

<RefSynopsisDiv>
<Synopsis>
    <cmdsynopsis>
        <command>spacewalk-data-fsck [ -v | -S | -C | -O | -d | -f | -r | F ] </command>
    </cmdsynopsis>
</Synopsis>
</RefSynopsisDiv>

<RefSect1><Title>Description</Title>

<para>
    The <emphasis>spacewalk-data-fsck</emphasis> is a helper utility that allows you to verify the packages stored on the filesystem and compare them against the packages referenced on the database.  You can verify if the packages from the database are present on the filesystem or vice-versa.
</para>
<para>
    <emphasis>spacewalk-data-fsck</emphasis> also allows you to remove the packages from filesytem if that package is not being used by any channel.
</para>
<para>
    By default, <emphasis>spacewalk-data-fsck</emphasis> will verify if the checksum of the RPM package matches with the checksum stored on the database.
    You can fix the file path by adding the option <emphasis>--fix-file-path</emphasis>.
</para>
<para>
    All the operations performed by <emphasis>spacewalk-data-fsck</emphasis>  will be logged
    at <filename>/var/log/rhn/spacewalk-data-fsck.log</filename>.
</para>
<para>
    Consider running <emphasis>spacewalk-data-fsck</emphasis> on a non-production period. The system/database activity
    will increase considerabily.
</para>
</RefSect1>

<RefSect1><Title>Options</Title>
<variablelist>
    <varlistentry>
        <term>-h, --help</term>
        <listitem>
            <para>show this help message and exit</para>
        </listitem>
    </varlistentry>
    <varlistentry>
        <term>-v, --verbose</term>
        <listitem>
            <para>Increase verbosity.</para>
        </listitem>
    </varlistentry>
    <varlistentry>
        <term>-S, --no-size</term>
        <listitem>
            <para>Don't check package size</para>
        </listitem>
    </varlistentry>
    <varlistentry>
        <term>-C, --no-checksum</term>
        <listitem>
            <para>Don't check package checksum</para>
        </listitem>
    </varlistentry>
    <varlistentry>
        <term>-O, --no-nevrao</term>
        <listitem>
            <para>Don't check package name, epoch, version, release, arch, org</para>
        </listitem>
    </varlistentry>
    <varlistentry>
        <term>-d, --db-only</term>
        <listitem>
            <para>Check only if packages from database are present on filesystem.</para>
        </listitem>
    </varlistentry>
    <varlistentry>
        <term>-f, --fs-only</term>
        <listitem>
            <para>Check only if packages from filesystem are in the database.</para>
        </listitem>
    </varlistentry>
    <varlistentry>
        <term>-r, --remove</term>
        <listitem>
            <para>Automaticaly remove packages from filesystem not present in database.</para>
        </listitem>
    </varlistentry>
    <varlistentry>
        <term>-F, --fix-file-path</term>
        <listitem>
            <para>
            Restores file paths, try this when you have <emphasis>NEVRAO</emphasis> mismatches.
            Do not run this command with another commands.
            </para>
        </listitem>
    </varlistentry>
    <varlistentry>
        <term>-R, --remove-mismatch</term>
        <listitem>
            <para>
            Remove packages from filesystem that does not match the checksum stored in the database.
            This option is not valid when combined with options <emphasis>--db-only</emphasis> or <emphasis>--no-checksum</emphasis>.
            After removing the packages from the filesystem, remember to run <emphasis>satellite-sync</emphasis> or <emphasis>spacewalk-repo-sync</emphasis> to download the RPM file.
            </para>
        </listitem>
    </varlistentry>
</variablelist>
</RefSect1>

<RefSect1><Title>Example</Title>
<simplelist>
    <member><command>&THECOMMAND; -f -r</command> Delete all the packages from filesystem are not in the database.</member>
    <member><command>&THECOMMAND; -F</command> Restore the file paths when <emphasis>NEVRAO</emphasis> mismatches.</member>
</simplelist>
</RefSect1>


<RefSect1><Title>Authors</Title>
<simplelist>
    <member>Marcelo Moreira de Mello <email>mmello@redhat.com</email></member>
</simplelist>
</RefSect1>
</RefEntry>
 070701000000F6000081FD0000000000000000000000016290A0C100003B4C000000000000000000000000000000000000003200000000spacewalk-backend/satellite_tools/spacewalk-debug #!/bin/sh
#
# Debug utility: packages log files, and relevant debug information
#                needed for full diagnosis of Spacewalk Server issues.
#
# Copyright (c) 2008--2018 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#


if [ "$(id -u)" != "0" ] ; then
  echo "This script must be run as root."
  exit
fi

BASE_DIR=/tmp
IS_SUSE=0
NO_REPORTS=0
NO_COMPRESSION=0
MAX_LOG_AGE=10
if `grep -iq '^ID_LIKE=.*suse' /etc/os-release`; then
    IS_SUSE=1
fi
if [ "$SPACEWALK_DEBUG_NO_REPORTS" == 1 ]; then
    NO_REPORTS=1
fi

usage() {
    echo "Usage:"
    echo "$0 [OPTIONS]"
    echo "Debug utility that packages log files and other information"
    echo
    echo "  OPTIONS:"
    echo "    --help                Display usage and exit"
    echo "    --dir                 Destination directory ($BASE_DIR)"
    echo "    --log-age             Set the maximum age (in days) for extracted logs ($MAX_LOG_AGE)"
    echo "    --no-reports          Do not run spacewalk-report. Useful if spacewalk-debug takes too long"
    echo "    --no-compression      Do not compress spacewalk-debug destination folder"
    exit $1
}

while [ ${#} -ne 0 ]; do
    arg="$1"
    case "$arg" in
        --help)
            usage 0
            ;;
        --dir)
            shift
            BASE_DIR=$1
            ;;
        --log-age)
            shift
            MAX_LOG_AGE=$1
            ;;
        --no-reports)
            NO_REPORTS=1
            ;;
        --no-compression)
            NO_COMPRESSION=1
            ;;
        --*)
            echo "Unknown option $arg (use --help)"
            exit 1
            ;;
        *)
            echo "Too many arguments (use --help)"
            exit 1
            ;;
    esac
    shift
done

if [ ! -d "$BASE_DIR" ]; then
    mkdir -p "$BASE_DIR"
    [ $? != 0 ] && echo "Unable to create directory $BASE_DIR" && exit 1
fi

# clean any previous run
rm -rf $BASE_DIR/spacewalk-debug/*

# Make sure BASE_DIR is not relative
BASE_DIR=$(cd $BASE_DIR && pwd)

DIR=$BASE_DIR/spacewalk-debug
TARBALL=$BASE_DIR/spacewalk-debug.tar.bz2

/bin/mkdir -p $DIR
if [ $? != 0 ] ; then
  echo "Unable to create directory $DIR"
  exit
fi

chmod 700 $DIR
cd $DIR

echo "Collecting and packaging relevant diagnostic information."
if [ $NO_REPORTS -eq 1 ] ; then
    echo "NOTE: Running with '--no-reports' means 'spacewalk-report' won't be executed."
fi
echo "Warning: this may take some time..."

mkdir -p $DIR/conf/httpd
mkdir -p $DIR/conf/tomcat
mkdir -p $DIR/conf/cobbler
mkdir -p $DIR/conf/rhn/sysconfig
mkdir -p $DIR/httpd-logs
mkdir -p $DIR/tomcat-logs
mkdir -p $DIR/cobbler-logs
mkdir -p $DIR/rhn-logs/rhn
mkdir -p $DIR/config-defaults
mkdir -p $DIR/kickstarts
mkdir -p $DIR/database/trc
mkdir -p $DIR/cobbler-lib
mkdir -p $DIR/tasko
mkdir -p $DIR/salt-states
if [ -f /usr/bin/journalctl ]; then
  mkdir -p $DIR/systemd
fi

echo "    * copying configuration information"
if [ -d /etc/httpd ]; then
    cp -fapRd /etc/httpd/conf* $DIR/conf/httpd
elif [ -d /etc/apache2 ]; then
    cp -fapRd /etc/apache2/conf* $DIR/conf/httpd
    cp -fapRd /etc/apache2/vhosts* $DIR/conf/httpd
fi
cp -fapRd /etc/rhn $DIR/conf/rhn
cp -fapRd /etc/sysconfig/rhn $DIR/conf/rhn/sysconfig
# exclude schema upgrade files, as they are packaged
rm -r $DIR/conf/rhn/sysconfig/rhn/schema-upgrade

# there might be backups of rhn.conf so clean them up as well (bsc#1146419)
find $DIR/conf/rhn -name rhn.conf -exec sed -i 's/^server.susemanager.mirrcred_pass.*/server.susemanager.mirrcred_pass = <replaced_by_debug_tool>/' {} \;
find $DIR/conf/rhn -name rhn.conf -exec sed -i 's/^server.secret_key.*/server.secret_key = <replaced_by_debug_tool>/' {} \;
find $DIR/conf/rhn -name rhn.conf -exec sed -i 's/^session_secret_.*/session_secret_N = <replaced_by_debug_tool>/' {} \;
find $DIR/conf/rhn -name rhn.conf -exec sed -i 's/^web.session_swap_secret_.*/web.session_swap_secret_N = <replaced_by_debug_tool>/' {} \;
find $DIR/conf/rhn -name rhn.conf -exec sed -i 's/^db_password.*/db_password = <replaced_by_debug_tool>/' {} \;
find $DIR/conf/rhn -name rhn.conf -exec sed -i 's/^server.satellite.http_proxy_password.*/server.satellite.http_proxy_password = <replaced_by_debug_tool>/' {} \;

if [ -f /etc/tnsnames.ora ] ; then
    cp -fad /etc/tnsnames.ora $DIR/conf
fi

# Copy generated and existing SLS files
echo "    * copying Salt state files"
D_IFS=$IFS
IFS=","
for sls_dir in "/usr/share/susemanager/salt/","static-sls","static SLS" \
               "/srv/susemanager/salt/","generated-sls","generated SLS"; do
    set $sls_dir
    if [ -d $1 ] && [ "$(ls -A $1)" ]; then
	    echo -e "    \t- copying $3"
	    cp -fa $1 $DIR/salt-states/$2
    fi
done
IFS=$D_IFS
mkdir -p $DIR/salt-states/custom-sls/
for i in $(find /srv/salt/ -type f); do
    echo -e "    \t- copying custom SLS"
    if [[ $(file $i) = *"text"* ]];  then
	    cp --parents -fa $i $DIR/salt-states/custom-sls/
    else
      echo "$i" >> $DIR/salt-states/custom-sls/other_files
    fi
done

MATCHER_DATA_DIR=/var/lib/spacewalk/subscription-matcher
if [ -d $MATCHER_DATA_DIR ]; then
  echo "    * copying Subscription Matcher files"
  cp -fa $MATCHER_DATA_DIR $DIR/
fi

echo "    * copying logs"
if [ -f /usr/bin/journalctl ]; then
  /usr/bin/journalctl -m > $DIR/systemd/journalctl.log
fi

if [ -d /var/log/httpd ]; then
    cp -fapRd /var/log/httpd $DIR/httpd-logs
elif [ -d /var/log/apache2 ]; then
    cp -fapRd /var/log/apache2 $DIR/httpd-logs
fi

# copy rhn logs
if [ -d /var/log/rhn ]; then
    cp -fapd  /var/log/rhn/*.log* $DIR/rhn-logs/rhn

    # check for reposync dir
    if [ -d /var/log/rhn/reposync ]; then
        cp -fapRd /var/log/rhn/reposync $DIR/rhn-logs/rhn
    fi

    # check for search dir
    if [ -d /var/log/rhn/search ]; then
        cp -fapRd /var/log/rhn/search $DIR/rhn-logs/rhn
    fi
fi

DB_INSTALL_LOG=/var/log/rhn/rhn-database-installation.log
if [ -f "$DB_INSTALL_LOG" ] ; then
    mkdir -p $DIR/tmp
    cp -fa "$DB_INSTALL_LOG" $DIR/tmp/
fi

if [ $IS_SUSE -eq 1 ]; then
    cp -fa /var/log/susemanager* $DIR/rhn-logs
fi

if [ -d /var/log/salt ]; then
    mkdir -p $DIR/salt-logs
    cp -fa /var/log/salt $DIR/salt-logs
fi

# grab jabberd info if it exists (it should)
if [ -d /etc/jabberd ]; then
    mkdir -p $DIR/jabberd
    cp -fa /etc/jabberd $DIR/jabberd
fi

# tomcat for spacewalk 400+
for tomcat in tomcat tomcat5 tomcat6 ; do
  if [ -d /etc/$tomcat ]; then
    cp -fa /etc/$tomcat $DIR/conf/tomcat
  fi
  if [ -d /var/log/$tomcat ]; then
    cp -fa /var/log/$tomcat $DIR/tomcat-logs
  fi
done

# copying the /usr/share/rhn/config-defaults
echo "    * copying config-defaults files"
if [ -d /usr/share/rhn/config-defaults ]; then
    cp -fa /usr/share/rhn/config-defaults/* $DIR/config-defaults
fi

#cobbler stuff
echo "    * copying cobbler files"
if [ -d /etc/cobbler ]; then
    cp -fa /etc/cobbler/* $DIR/conf/cobbler
fi
if [ -d /var/log/cobbler ]; then
   cp -fa /var/log/cobbler/* $DIR/cobbler-logs
fi
if [ -d /var/lib/cobbler ]; then
   cp -fa /var/lib/cobbler/snippets $DIR/cobbler-lib/
   cp -fa /var/lib/cobbler/config $DIR/cobbler-lib/
   cp -fa /var/lib/cobbler/kickstarts $DIR/cobbler-lib/
   cp -fa /var/lib/cobbler/triggers $DIR/cobbler-lib/
fi
if [ -d /var/lib/rhn/kickstarts ]; then
   cp -fa /var/lib/rhn/kickstarts/* $DIR/kickstarts/
fi

# ssl-build
if [ -d /root/ssl-build ] ; then
    echo "    * copying ssl-build"
    mkdir -p $DIR/ssl-build
    # NOTE: cp -a == cp -pRd
    ls -lR /root/ssl-build/ > $DIR/ssl-build/ls-lR.txt 2> /dev/null
fi

# /etc/sudoers
if [ -f /etc/sudoers -o -d /etc/sudoers.d ] ; then
	echo "    * copying /etc/sudoers*"
	cp -fa /etc/sudoers* $DIR/conf
fi

# /etc/passwd
if [ -f /etc/passwd ] ; then
	echo "    * copying apache, postgres, tomcat entries from /etc/passwd"
	getent passwd apache wwwrun tomcat postgres > $DIR/conf/passwd
fi

# /etc/group
if [ -f /etc/group ] ; then
	echo "    * copying apache, postgres, tomcat entries from /etc/group"
	getent group apache www tomcat postgres > $DIR/conf/group
fi

echo "    * querying RPM database (versioning of Spacewalk, etc.)"
rpm -qa --last > $DIR/rpm-manifest
rpm -qa | sort > $DIR/rpm-manifest-clean

echo "    * querying schema version, database charactersets and database"
/usr/bin/rhn-schema-version > $DIR/database-schema-version
/usr/bin/rhn-charsets > $DIR/database-character-sets
if [ -f /usr/bin/smdba ] ; then
    /usr/bin/smdba space-overview > $DIR/db-control-report
elif [ -f /usr/bin/db-control ] && [ "$(spacewalk-cfg-get db_backend)" = "postgresql" ] ; then
    /usr/bin/db-control report > $DIR/db-control-report
fi

if [ -f /usr/bin/spacewalk-sql ] ; then
    USERS_TZ_LC_SQL="""
        SELECT w.login as login,
               tz.display_name as timezone,
               ui.preferred_locale as locale
          FROM web_contact w
               inner join rhnuserinfo ui on ui.user_id = w.id
               left outer join rhntimezone tz on ui.timezone_id = tz.id
        ORDER BY login;
    """
    echo "    * querying users timezone and localization preferences"
    echo $USERS_TZ_LC_SQL | /usr/bin/spacewalk-sql --select-mode - > $DIR/users-preferences
fi

echo "    * get diskspace available"
df -h > $DIR/diskinfo

echo "    * get database statistics"
/usr/bin/rhn-db-stats $DIR/database/db-stats.log

echo "    * get schema statistics"
/usr/bin/rhn-schema-stats $DIR/database/schema-stats.log

# alert.log
if [ -f /rhnsat/admin/rhnsat/bdump/alert_rhnsat.log ] ; then
	echo "    * copying alert_rhnsat.log"
	cp -fa /rhnsat/admin/rhnsat/bdump/alert_rhnsat.log $DIR/database
	ls /rhnsat/admin/rhnsat/bdump/*.trc 2>/dev/null | xargs -I file cp -fa file $DIR/database/trc
	ls /rhnsat/admin/rhnsat/logs/*.log 2>/dev/null | xargs -I file cp -fa file $DIR/database
fi

PGSQL_ROOT=""
MAX_PGSQL_LOGS_SIZE="6291456" #6 GB
rpm -q postgresql92-postgresql > /dev/null
if [ $? == 0 ]; then
	PGSQL_ROOT="/opt/rh/postgresql92/root"
fi

PGMAJOR=`psql --version | cut -f 3 -d" " | cut -b 1`

if [ "$PGMAJOR" = 9 ]; then
    PGLOGDIR="pg_log"
else
    PGLOGDIR="log"
fi

# PostgreSQL configuration
if [ -f $PGSQL_ROOT/var/lib/pgsql/postgresql.conf ] ; then
  echo "    * copying postgresql.conf"
	cp -fa $PGSQL_ROOT/var/lib/pgsql/data/postgresql.conf $DIR/database
fi
if [ -f $PGSQL_ROOT/var/lib/pgsql/pg_hba.conf ] ; then
  echo "    * copying pg_hba.conf"
	cp -fa $PGSQL_ROOT/var/lib/pgsql/data/pg_hba.conf $DIR/database
fi

# PostgreSQL logs
if [ -f $PGSQL_ROOT/var/lib/pgsql/pgstartup.log ] ; then
	echo "    * copying pgstartup.log"
	cp -fa $PGSQL_ROOT/var/lib/pgsql/pgstartup.log $DIR/database
fi
if [ -f /var/lib/pgsql/initlog ] ; then
       echo "    * copying initlog"
       cp -fa /var/lib/pgsql/initlog $DIR/database
fi
ls $PGSQL_ROOT/var/lib/pgsql/data/*.conf 2>/dev/null | xargs -I file cp -fa file $DIR/database

# compress postgres logs
if [ -d $PGSQL_ROOT/var/lib/pgsql/data/$PGLOGDIR ]; then

    PGSQL_LOGS_SIZE=$(du -s $PGSQL_ROOT/var/lib/pgsql/data/$PGLOGDIR | cut -d'/' -f1)
    if [ $PGSQL_LOGS_SIZE -gt $MAX_PGSQL_LOGS_SIZE ]; then
        echo "    * $PGSQL_ROOT/var/lib/pgsql/data/$PGLOGDIR exceeded the maximum size allowed. Please copy it separately."
        echo "PostgreSQL logs exceeded the maximum size of $MAX_PGSQL_LOGS_SIZE bytes" >> $DIR/database/warning
    else
        echo "    * copying logfiles"
        for pg_log in $(ls $PGSQL_ROOT/var/lib/pgsql/data/$PGLOGDIR/* 2>/dev/null); do
            cat $pg_log | gzip > $DIR/database/$(basename $pg_log).gz
        done
    fi
fi

if [ -d /var/log/spacewalk/schema-upgrade ] ; then
	echo "    * copying schema upgrade logs"
	mkdir -p $DIR/schema-upgrade-logs
	cp -pr /var/log/spacewalk/schema-upgrade/* $DIR/schema-upgrade-logs
fi

if [ "$(spacewalk-cfg-get db_backend)" = "postgresql" ] ; then
    echo "    * copying Postgresql procedures information"
    echo "select proname, prosrc from pg_catalog.pg_proc;" | /usr/bin/spacewalk-sql --select-mode - &> $DIR/database/pg_catalog.pg_proc.log
fi

if [ -f /var/log/audit/audit.log ] ; then
	echo "    * copying audit.log"
	mkdir -p $DIR/audit-log
	cp -fa /var/log/audit/audit.log $DIR/audit-log
fi

if [ -d /var/log/rhn/tasko/sat ] ; then
	echo "    * copying tasko/sat"
	cp -fa /var/log/rhn/tasko/sat $DIR/tasko
fi

if [ $IS_SUSE -eq 1 ]; then
    if [ -d "/var/lib/spacewalk/scc/scc-data" ]; then
        echo  "    * copying SCC data"
        mkdir -p $DIR/sccdata
        IFS=$(echo -en "\n\b")
        for i in $(ls -A /var/lib/spacewalk/scc/scc-data); do
            cp -fa /var/lib/spacewalk/scc/scc-data/$i $DIR/sccdata/
        done
    fi

    if [ -x /usr/bin/spacewalk-report ] && [ $NO_REPORTS -eq 0 ]; then
        # get some inventory info
        echo "    * running spacewalk-report to create reports."
        /usr/bin/spacewalk-report inventory > $DIR/inventory-report.csv
        /usr/bin/spacewalk-report channels > $DIR/channels-report.csv
        /usr/bin/spacewalk-report activation-keys > $DIR/activation-keys-report.csv
    fi

    ls -laR /srv/www/htdocs/pub > $DIR/ls-laR-htdocs
fi

echo "    * timestamping"
echo "Spacewalk debug created on $(date)" > $DIR/timestamp

# Skip if MAX_LOG_AGE is not a number
if [ "$MAX_LOG_AGE" -eq "$MAX_LOG_AGE" 2>/dev/null ]; then
    # Remove all logs older than MAX_LOG_AGE to reduce the size of the tarball
    find $DIR/* -regextype sed \( -iregex ".*log\.[0-9]\{1,\}.*" -or -iregex ".*[0-9]\{8\}.*" \
        -or -iregex ".*[0-9]\{4\}-[0-9]\{2\}-[0-9]\{2\}\(\.\|_[0-9]\{6\}\(_sync\)\?\.\).*" \) \
        -daystart -mtime +"$MAX_LOG_AGE" -not -ipath "*schema*" -delete

        # tasko and .trc files need to be parsed separately to find old ones
        for dir in database/trc rhn-logs/rhn/tasko tasko/sat; do
            if [ -d $dir ]; then
                for file in $(find $DIR/$dir); do
                    if [ -f "$file" ]; then
                        if [ -n "$(find $file -daystart -mtime +$MAX_LOG_AGE)" ]; then
                            rm $file
                        fi
                    fi
                done
            fi
        done
fi

# exclude private keys
find $DIR -name "*PRIVATE*" -delete
find $DIR -name "server.key*" -delete
find $DIR -name "server.pem*" -delete
find $DIR -name "rhn-org-httpd-ssl*" -delete

# fix permissions
chmod -R 700 $DIR

if [ $NO_COMPRESSION -eq 1 ] ; then
  echo
  echo "Debug dump created, stored in $DIR"
else
  echo "    * creating tarball (may take some time): $TARBALL"
  # set tarball premissions *before* writing data
  install -m 600 /dev/null $TARBALL
  tar -cjf $TARBALL \
      -C $(dirname $DIR) \
      $(basename $DIR)

  echo "    * removing temporary debug tree"
  rm -Rf echo $DIR
  echo "Debug dump created, stored in $TARBALL"
fi
070701000000F7000081B40000000000000000000000016290A0C100000389000000000000000000000000000000000000003400000000spacewalk-backend/satellite_tools/spacewalk-debug.8   .\\" auto-generated by docbook2man-spec $Revision: 1.1 $
.TH "SPACEWALK-DEBUG" "8" "29 July 2009" "Version 3.6" ""
.SH NAME
spacewalk-debug \- Debug utility that packages log files and relevant debug information needed for full diagnosis of Spacewalk Server issues.
.SH SYNOPSIS
.sp
.nf
    
.sp
\fBspacewalk-debug\fR
.sp
.fi
.SH "DESCRIPTION"
.PP
The Spacewalk Diagnostic Info-Gathering Utility (\fBspacewalk-debug\fR) is a
debug utility that packages log files, and relevant debug information
needed for full diagnosis of Spacewalk Server issues.
.SH "OPTIONS"
.TP
\fB--help\fR
Display usage and exit.
.TP
\fB--dir\fR
Destination directory for the tar archive.
.SH "SEE ALSO"

db-control(1) - embedded database environment only!

rhn-charsets(8)

rhnpush(8)

rhn-schema-version(8)

rhn-ssl-dbstore(8)

satellite-sync(8)
.SH "AUTHORS"

Todd Warner <taw@redhat.com>

Pradeep Kilambi <pkilambi@redhat.com>
   070701000000F8000081B40000000000000000000000016290A0C1000008F2000000000000000000000000000000000000003700000000spacewalk-backend/satellite_tools/spacewalk-debug.sgml    <!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook V3.1//EN" [
<!ENTITY RHNSAT "Spacewalk Server" >
<!ENTITY RHNSATDEBUG "Spacewalk Diagnostic Info-Gathering Utility">

]>
<refentry>

<RefMeta>
<RefEntryTitle>spacewalk-debug</RefEntryTitle><manvolnum>8</manvolnum>
<RefMiscInfo>Version 3.6</RefMiscInfo>
</RefMeta>

<RefNameDiv>
<RefName><command>spacewalk-debug</command></RefName>
<RefPurpose>
Debug utility that packages log files and relevant debug information needed for full diagnosis of Spacewalk Server issues.
</RefPurpose>
</RefNameDiv>

<RefSynopsisDiv>
<Synopsis>
    <cmdsynopsis>
        <command>spacewalk-debug</command>
    </cmdsynopsis>
</Synopsis>
</RefSynopsisDiv>

<RefSect1><Title>Description</Title>

<para>
    The &RHNSATDEBUG; (<emphasis>spacewalk-debug</emphasis>) is a
    debug utility that packages log files, and relevant debug information
    needed for full diagnosis of &RHNSAT; issues.
</para>
<para>
    For a better understanding of the whole environment, spacewalk-debug
    put also an inventory report and a channel report into the tar archive.
</para>
</RefSect1>

<RefSect1><Title>Options</Title>
<variablelist>
    <varlistentry>
        <term>--help</term>
        <listitem>
            <para>Display usage and exit.</para>
        </listitem>
    </varlistentry>
    <varlistentry>
        <term>--dir</term>
        <listitem>
            <para>Destination directory for the tar archive.</para>
        </listitem>
    </varlistentry>
    <varlistentry>
        <term>--log-age</term>
        <listitem>
            <para>The maximum age for log files to get extracted.</para>
        </listitem>
    </varlistentry>
</variablelist>
</RefSect1>

<RefSect1><Title>See Also</Title>
<simplelist>
    <member>db-control(1) - embedded database environment only!</member>
    <member>rhn-charsets(8)</member>
    <member>rhnpush(8)</member>
    <member>rhn-schema-version(8)</member>
    <member>rhn-ssl-dbstore(8)</member>
    <member>satellite-sync(8)</member>
    <member>spacewalk-report(8)</member>
</simplelist>
</RefSect1>

<RefSect1><Title>Authors</Title>
<simplelist>
    <member>Todd Warner <email>taw@redhat.com</email></member>
    <member>Pradeep Kilambi <email>pkilambi@redhat.com</email></member>
</simplelist>
</RefSect1>
</RefEntry>
  070701000000F9000081FD0000000000000000000000016290A0C100001096000000000000000000000000000000000000003600000000spacewalk-backend/satellite_tools/spacewalk-diskcheck #!/bin/bash

systemctl status spacewalk.target > /dev/null 2>&1
if [ $? != 0 ]; then
    logger  "SPACECHECK: spacewalk services are not running - skipping disk check."
    exit 0
fi

EMAIL_ADDRESS=`grep ^[[:blank:]]*traceback_mail /etc/rhn/rhn.conf | sed -e "s/.*=[[:blank:]]*//"`
SPACECHECKDIRS=`grep ^[[:blank:]]*spacecheck_dirs /etc/rhn/rhn.conf | sed -e "s/.*=[[:blank:]]*//"`
SPACECHECKALERT=`grep ^[[:blank:]]*spacecheck_free_alert /etc/rhn/rhn.conf | sed -e "s/.*=[[:blank:]]*//"`
SPACECHECKCRIT=`grep ^[[:blank:]]*spacecheck_free_critical /etc/rhn/rhn.conf | sed -e "s/.*=[[:blank:]]*//"`
SPACECHECKSHUTDOWN=`grep ^[[:blank:]]*spacecheck_shutdown /etc/rhn/rhn.conf | sed -e "s/.*=[[:blank:]]*//"`

if [ "x$EMAIL_ADDRESS" = "x" ]; then
    EMAIL_ADDRESS="root@localhost"
fi
if [ "x$SPACECHECKDIRS" = "x" ]; then
    SPACECHECKDIRS="/var/lib/pgsql /var/spacewalk /var/cache /srv"
fi
if [ "x$SPACECHECKALERT" = "x" ] || [ "$SPACECHECKALERT" -gt 90 ]; then
    SPACECHECKALERT=10
fi
if [ "x$SPACECHECKCRIT" = "x" ] || [ "$SPACECHECKCRIT" -ge "$SPACECHECKALERT" ]; then
    SPACECHECKCRIT=$(($SPACECHECKALERT / 2))
fi
if [ "x$SPACECHECKSHUTDOWN" = "x" ]; then
    SPACECHECKSHUTDOWN="true"
fi

STOPCHECK=0

for DIR in $SPACECHECKDIRS
do
    if [ ! -d $DIR ]; then
        logger "SPACECHECK: Directory $DIR does not exist!"
        echo "SPACECHECK: Directory $DIR does not exist!" | mail -Ssendwait -s "SPACECHECK: Directory $DIR does not exist!" $EMAIL_ADDRESS
        continue
    fi
    USEDSPACE=`df -PH $DIR | tail -1 | awk '{print $5}' | sed -e"s/\%//"`
    FREESPACE=$((100 - $USEDSPACE))
    if [ $FREESPACE -lt $SPACECHECKCRIT ] && [ "$STOPCHECK" = "0" ]; then
        if [ "$SPACECHECKSHUTDOWN" = "true" ]; then
            logger "SPACECHECK CRITICAL: Less than $SPACECHECKCRIT% of space available on $DIR - shutting down!"
            cat << EOF | mail -Ssendwait -s "SPACECHECK CRITICAL: Less than $SPACECHECKCRIT% of space available on $DIR" $EMAIL_ADDRESS
WARNING!
Available space on $DIR is less than $SPACECHECKCRIT%.
Some services have been shut down to avoid running out of disk space.
EOF
        else
            logger "SPACECHECK CRITICAL: Less than $SPACECHECKCRIT% of space available on $DIR - NOT shutting down!"
            cat << EOF | mail -Ssendwait -s "SPACECHECK CRITICAL: Less than $SPACECHECKCRIT% of space available on $DIR" $EMAIL_ADDRESS
WARNING!
Available space on $DIR is less than $SPACECHECKCRIT%.
Automatic shutdown of services is disabled.
You must shut down services to avoid running out of disk space.
EOF
        fi
        STOPCHECK=1
        break
    elif [ $FREESPACE -lt $SPACECHECKALERT ] && [ "$STOPCHECK" = "0" ]; then
        logger "SPACECHECK ALERT: Less than $SPACECHECKALERT% of space available on $DIR"
        cat << EOF | mail -Ssendwait -s "SPACECHECK ALERT: Less than $SPACECHECKALERT% of space available on $DIR" $EMAIL_ADDRESS
IMPORTANT

If you run out of disk space, SUSE Manager will stop running, and this could lead to a loss of data.
To avoid this, when the available space on $DIR drops below $SPACECHECKCRIT%, SUSE Manager will shut
down services automatically.

You can adjust when this happens by editing the values in the /etc/rhn/rhn.conf configuration file.
Changes will happen immediately, without restarting services.

==========================================================================================================
# The directories to monitor for available space. Separate multiple directories with a space:
spacecheck_dirs = $SPACECHECKDIRS

# A warning email is triggered when free space in a monitored directory reaches this level (as a percentage):
spacecheck_free_alert = $SPACECHECKALERT

# A critical alert is triggered when free space in a monitored directory reaches this level (as a percentage):
spacecheck_free_critical = $SPACECHECKCRIT

# Allow spacewalk services to be automatically shut down when free space reaches critical level:
spacecheck_shutdown = $SPACECHECKSHUTDOWN
==========================================================================================================
EOF
    fi
done

if [ "$STOPCHECK" = "1" ] && [ "$SPACECHECKSHUTDOWN" = "true" ]; then
    spacewalk-service stop ; systemctl stop postgresql.service
fi
  070701000000FA000081B40000000000000000000000016290A0C100000093000000000000000000000000000000000000003E00000000spacewalk-backend/satellite_tools/spacewalk-diskcheck.service [Unit]
Description=Check available disk space on vital filesystems

[Service]
Type=oneshot
KillMode=process
ExecStart=/usr/bin/spacewalk-diskcheck
 070701000000FB000081B40000000000000000000000016290A0C100000081000000000000000000000000000000000000003C00000000spacewalk-backend/satellite_tools/spacewalk-diskcheck.timer   [Unit]
Description=Check available disk space on vital filesystems

[Timer]
OnCalendar=hourly

[Install]
WantedBy=timers.target

   070701000000FC000081FD0000000000000000000000016290A0C100000696000000000000000000000000000000000000003F00000000spacewalk-backend/satellite_tools/spacewalk-extra-http-headers    #!/usr/bin/env python

import sys
import os
import re
import traceback
import configparser

try:
    from urllib import unquote
except:
    from urllib.parse import unquote

from zypp_plugin import Plugin

REPOSYNC_EXTRA_HTTP_HEADERS_CONF = '/etc/rhn/spacewalk-repo-sync/extra_headers.conf'


class SpacewalkExtraHTTPHeaders(Plugin):
    """
    Plugin to add extra HTTP Headers to Zypper requests
    """
    def RESOLVEURL(self, headers, body):
        """
        Resolve URL.

        :returns: None
        """
        try:
            self.http_headers = {}
            # Get extra HTTP headers configuration from /etc/rhn/spacewalk-repo-sync/extra_headers.conf
            if os.path.isfile(REPOSYNC_EXTRA_HTTP_HEADERS_CONF):
                http_headers_cfg = configparser.ConfigParser()
                http_headers_cfg.read_file(open(REPOSYNC_EXTRA_HTTP_HEADERS_CONF))
                section_name = None

                if http_headers_cfg.has_section(headers['repo_name']):
                    section_name = headers['repo_name']
                elif http_headers_cfg.has_section(headers['channel_label']):
                    section_name = headers['channel_label']
                elif http_headers_cfg.has_section('main'):
                    section_name = 'main'

                if section_name:
                    for hdr in http_headers_cfg[section_name]:
                        self.http_headers[hdr] = http_headers_cfg.get(section_name, option=hdr)

        except Exception as exc:
            self.answer("ERROR", {}, str(exc))
        self.answer("RESOLVEDURL", self.http_headers, unquote(headers['url']))

plugin = SpacewalkExtraHTTPHeaders()
plugin.main()
  070701000000FD000081FD0000000000000000000000016290A0C100002772000000000000000000000000000000000000003600000000spacewalk-backend/satellite_tools/spacewalk-fips-tool #!/usr/bin/python
#
# Copyright (c) 2014--2016 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#

import csv
import getpass
from optparse import OptionParser
from uyuni.common import rhn_rpm
import sys
import time
try:
    #  python2
    import xmlrpclib
except ImportError:
    #  python3
    import xmlrpc.client as xmlrpclib # pylint: disable=F0401
from socket import gethostname


def parse_args():
    parser = OptionParser()
    parser.set_usage("spacewalk-fips-tool -i|-c [options] systemid01 [systemid02 ...]")
    parser.add_option("-i", action="store_true", dest="install_packages", default=False,
                      help="schedule installation of packages required for certificate update")
    parser.add_option("-c", action="store_true", dest="update_certificates", default=False,
                      help="schedule update of client certificates for specified systems")
    parser.add_option("-u", action="store", type="string", dest="username",
                      help="username (organizational administrator)")
    parser.add_option("-p", action="store", type="string", dest="password",
                      help="password")
    parser.add_option("-s", action="store", type="string", dest="hostname",
                      help="server hostname to use, defaults to local hostname",
                      default=gethostname())
    parser.add_option("-d", action="store", type="string", dest="date",
                      help="date to schedule the conversion for, defaults to now, " +
                           "format: %Y-%m-%d %H:%M:%S (e.g. 2014-10-30 19:30:00)")
    parser.add_option("-o", action="store", type="string", dest="output",
                      help="output file in csv format to store the details about all " +
                           "scheduled actions, use '-' for stdout")

    return parser.parse_args()


def read_username():
    tty = open("/dev/tty", "r+")
    tty.write('Username: ')
    tty.close()

    try:
        username = sys.stdin.readline().rstrip('\n')
    except KeyboardInterrupt:
        print()
        sys.exit(0)
    if username is None:
        # EOF
        print()
        sys.exit(0)
    return username.strip()


strftime_format = "%Y-%m-%d %H:%M:%S"

description = """
spacewalk-fips-tool is a helper script aiming to help in the process
of converting certificates of registered systems from using MD5
digest to certificates with a SHA-256 digest.

SHA-256 client certificate on your registered systems is required for your
Spacewalk / Red Hat Satellite to be able to operate in FIPS mode.

The certificate conversion is a two-step process:
1. installation of 'spacewalk-client-cert' package on given systems, which is
   required for the certificate conversion
2. after the package installation finishes successfully, a certificate update
   for given systems can be scheduled

You need to specify one or more system ids for which you want to schedule
the package installation and certificate conversion. The list of system ids
potentially requiring certificate update can be retrieved for example from
system-md5-certificates report.

Please use the --help option or consult the tool's manual page for full usage
information.
"""

broken_systems_msg01 = """
The following systems do not have 'spacewalk-client-cert' package installed,
nor can the package be installed on those systems:

"""

broken_systems_msg02 = """
The following systems do not have 'spacewalk-client-cert' package installed:

"""

broken_systems_msg03 = """
The package installation process cannot continue.

For these systems, you need to either:
  1. Install the package manually
  2. Subscribe the systems to correct channels and re-run this tool
  3. Re-run this tool without the problematic system ids

"""

broken_systems_msg04 = """
The certificate conversion process cannot continue. Please re-run this tool
with -i (package installation) option.
"""

if __name__ == '__main__':
    (options, args) = parse_args()

    if len(args) == 0:
        print(description)
        sys.exit(1)

    if not options.install_packages and not options.update_certificates:
        sys.stderr.write("You need to specifiy either -i or -c switch.\n")
        sys.exit(1)

    if options.install_packages and options.update_certificates:
        sys.stderr.write("-i and -c switches are mutually exclusive.\n")
        sys.exit(1)

    if not options.output:
        sys.stderr.write("You need to specify CSV output file\n")
        sys.exit(1)

    if not options.username:
        options.username = read_username()

    if not options.password:
        options.password = getpass.getpass()

    if not options.date:
        options.date = time.strftime(strftime_format)

    scheduled_date = None
    try:
        scheduled_date = xmlrpclib.DateTime(time.strptime(options.date, strftime_format))
    except ValueError as e:
        sys.stderr.write("Error processing the specified date: %s\n" % e)
        sys.exit(1)

    if len(args) == 0:
        sys.stderr.write("You need to specify at least one system id\n")
        sys.exit(1)

    (client, key) = (None, None)
    client = xmlrpclib.Server("https://%s/rpc/api" % options.hostname, verbose=0)

    try:
        key = client.auth.login(options.username, options.password)
    except xmlrpclib.Fault as e:
        if hasattr(e, "faultCode") and e.faultCode == 2950:
            sys.stderr.write("Incorrect user name or password\n")
            sys.exit(1)
        else:
            raise

    systems = [int(i) for i in args]
    systems.sort()

    scc_pkg = 'spacewalk-client-cert'
    broken_systems = systems[:]

    installed_packages = {}
    try:
        for system_id in systems:
            for package in client.system.list_packages(key, system_id):
                if package['name'] == scc_pkg:
                    installed_packages[system_id] = package
                    # Systems which already have spacewalk-client-cert installed are not broken
                    broken_systems.remove(system_id)
                    break
    except xmlrpclib.Fault as e:
        sys.stderr.write(e.faultString + '\n')
        sys.exit(1)

    latest_available_packages = client.system.list_latest_available_package(key, systems, scc_pkg)

    for i in latest_available_packages:
        # Systems which can install / update spacewalk-client-cert are not broken
        if i['id'] in broken_systems:
            broken_systems.remove(i['id'])

        if i['id'] in installed_packages:

            if installed_packages[i['id']]['epoch'] == ' ':
                installed_packages[i['id']]['epoch'] = ''

            # What's installed matches or is more recent than what's available
            if rhn_rpm.hdrLabelCompare(i['package'], installed_packages[i['id']]) <= 0:
                latest_available_packages.remove(i)

    if len(broken_systems) > 0:
        if options.install_packages:
            sys.stderr.write(broken_systems_msg01)
        elif options.update_certificates:
            sys.stderr.write(broken_systems_msg02)

        for system_id in broken_systems:
            sys.stderr.write("\t%s\n" % system_id)

        if options.install_packages:
            sys.stderr.write(broken_systems_msg03)
        elif options.update_certificates:
            sys.stderr.write(broken_systems_msg04)

        sys.exit(1)

    (csv_writer, csv_file) = (None, None)

    if options.output == '-':
        csv_file = sys.stdout
    else:
        csv_file = open(options.output, "w+")

    csv_writer = csv.writer(csv_file, lineterminator="\n")
    csv_writer.writerow(['action_id', 'system_id', 'action_description', 'scheduled_date'])

    # Install / update spacewalk-client-cert on the selected systems
    if options.install_packages:
        for i in latest_available_packages:
            pkg = i['package']
            action_id = client.system.schedule_package_install(key,
                                                               i['id'],            # system id
                                                               pkg['id'],          # package id
                                                               scheduled_date)     # earliest date

            pkg_string = None
            if pkg['epoch']:
                pkg_string = "%s-%s:%s-%s.%s" % (pkg['name'], pkg['epoch'], pkg['version'],
                                                 pkg['release'], pkg['arch'])
            else:
                pkg_string = "%s-%s-%s.%s" % (pkg['name'], pkg['version'],
                                              pkg['release'], pkg['arch'])

            csv_writer.writerow([action_id,
                                 i['id'],
                                 "Installation of %s package on system %s" % (pkg_string, i['id']),
                                 options.date])

    # Schedule the certificate update
    if options.update_certificates:
        for system_id in systems:
            try:
                action_id = client.system.schedule_certificate_update(key, system_id, scheduled_date)
            except xmlrpclib.Fault as e:
                sys.stderr.write("Error scheduling certificate update on %s: %s\n" %
                                 (system_id, e.faultString))
                sys.exit(1)
            # write the actions to csv
            csv_writer.writerow([action_id,
                                 system_id,
                                 "Certificate update on %s" % system_id,
                                 options.date])

    if options.output != "-":
        csv_file.close()
  070701000000FE000081B40000000000000000000000016290A0C10000182A000000000000000000000000000000000000003B00000000spacewalk-backend/satellite_tools/spacewalk-fips-tool.sgml    <!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook V3.1//EN" [
<!ENTITY RHNSAT "Spacewalk Server">

]>
<refentry>

<RefMeta>
<RefEntryTitle>spacewalk-fips-tool</RefEntryTitle><manvolnum>8</manvolnum>
</RefMeta>

<RefNameDiv>
<RefName><command>spacewalk-fips-tool</command></RefName>
<RefPurpose>
A tool to help in the process of converting certificates of registered
 systems from using MD5 digest to certificates with SHA-256 digest.
</RefPurpose>
</RefNameDiv>

<RefSynopsisDiv>
<Synopsis>
    <cmdsynopsis>
        <command>spacewalk-fips-tool</command>
        <arg choice="req">-i|-c</arg>
        <arg choice="req">-o output.csv</arg>
        <arg choice="opt">options</arg>
        <arg choice="req">systemid01 systemid02 <replaceable>...</replaceable></arg>
    </cmdsynopsis>
</Synopsis>
</RefSynopsisDiv>

<RefSect1><Title>Description</Title>
    <para>
        <emphasis>spacewalk-fips-tool</emphasis> is a helper script aiming to
        help in the process of converting certificates of registered systems
        from using MD5 digest to SHA-256 digest.
    </para>
    <para>
	Ordinarily, conversion of client certificates of your registered systems
        from MD5 digest to SHA-256 is not required.
    </para>
    <para>
        Updating the digest of client certificates is needed if you plan to
        run your &RHNSAT; in FIPS mode, which does not allow MD5 algorithm
        for authentication.
    </para>
    <para>
        Client certificate conversion is a two step process:
        <simplelist>
            <member>
                1. Installation of <emphasis>spacewalk-client-cert</emphasis> package
                on given client systems (<emphasis>-i</emphasis> command line option).
                This package implements client side logic (action) allowing to download
                and update client certificate.
            </member>
            <member>
                2. Once <emphasis>spacewalk-client-cert</emphasis> packages are successfully
                installed on client systems, certificate update for the given systems
                can be scheduled (<emphasis>-c</emphasis> command line option).
            </member>
        </simplelist>
    </para>
    <para>
        Both the package installation and certificate update are client side actions, which
        will be picked up and executed by <emphasis>rhn_check</emphasis> utility on
        the specified systems.
    </para>
    <para>
        The tool uses &RHNSAT; XML-RPC API to schedule both the package installations and
        certificate updates. Therefore, the tool requires user credentials able to
        perform both types of actions, ideally an organization administrator.
    </para>
    <para>
        For tracking purposes, all successfully scheduled client side actions are recorded
        in a file in CSV format (-o command line option).
    </para>
    <para>
        The tool requires several mandatory command line options to operate:
        <simplelist>
            <member>
                * Action to schedule: installation (-i option) or certificate update (-c option).
            </member>
            <member>
                * Output CSV (-o option).
            </member>
            <member>
                * List of system identifiers to schedule the given action for.
            </member>
        </simplelist>
    </para>
    <para>
        List of systems currently using MD5 certificate can be easily obtained with
        <emphasis>spacewalk-report</emphasis> tool:
    </para>
    <para>
        <command>$ spacewalk-report system-md5-certificates > systems-md5.csv</command>
    </para>
</RefSect1>

<RefSect1><Title>Options</Title>
<variablelist>
    <varlistentry>
        <term>-h, --help</term>
        <listitem>
            <para>Display usage message and exit.</para>
        </listitem>
    </varlistentry>
    <varlistentry>
        <term>-i</term>
        <listitem>
            <para>
                Schedule installation of <emphasis>spacewalk-client-cert</emphasis> package.
            </para>
        </listitem>
    </varlistentry>
    <varlistentry>
        <term>-c</term>
        <listitem>
            <para>
                Schedule update of client certificates.
            </para>
        </listitem>
    </varlistentry>
    <varlistentry>
        <term>-o <replaceable>output.csv</replaceable></term>
        <listitem>
            <para>
                The output file in CSV format to record the details of scheduled actions in.
            </para>
        </listitem>
    </varlistentry>
    <varlistentry>
        <term>-u <replaceable>username</replaceable></term>
        <listitem>
            <para>
                User name to use for scheduling the actions. If not specified, will be prompted for.
            </para>
        </listitem>
    </varlistentry>
    <varlistentry>
        <term>-p <replaceable>password</replaceable></term>
        <listitem>
            <para>
                Password for the user name. If not specified, will be prompted for.
            </para>
        </listitem>
    </varlistentry>
    <varlistentry>
        <term>-s <replaceable>hostname</replaceable></term>
        <listitem>
            <para>
                Hostname of your &RHNSAT;, local hostname by default.
            </para>
        </listitem>
    </varlistentry>
    <varlistentry>
        <term>-d <replaceable>date</replaceable></term>
        <listitem>
            <para>
                Date in %Y-%m-%d %H-%M-%S format (e.g. 2014-10-30 19:35:00) to schedule the given
                actions for. Defaults to "now".
            </para>
        </listitem>
    </varlistentry>


</variablelist>
</RefSect1>


<RefSect1><Title>Files</Title>
<simplelist>
    <member><emphasis>/etc/sysconfig/rhn/systemid</emphasis> - client side certificate</member>
</simplelist>
</RefSect1>

<RefSect1><Title>See Also</Title>
<simplelist>
    <member>spacewalk-report(8)</member>
    <member>rhn_check(8)</member>
</simplelist>
</RefSect1>

<RefSect1><Title>Authors</Title>
<simplelist>
    <member>Milan Zazrivec <email>mzazrivec@redhat.com</email></member>
</simplelist>
</RefSect1>
</RefEntry>
  070701000000FF000081FD0000000000000000000000016290A0C10000216A000000000000000000000000000000000000003B00000000spacewalk-backend/satellite_tools/spacewalk-remove-channel    #!/usr/bin/python
#
# Module that removes channels from an installed satellite
#
#
# Copyright (c) 2008--2017 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#

import sys
import os
import fnmatch
import getpass
from optparse import Option, OptionParser

# quick check to see if you are a super-user.
if os.getuid() != 0:
    sys.stderr.write('ERROR: must be root to execute\n')
    sys.exit(8)

try:
    from rhn import rhnLockfile  # new place for rhnLockfile
except:
    from spacewalk.common import rhnLockfile  # old place for rhnLockfile

from spacewalk.common.rhnLog import initLOG
from spacewalk.common.rhnConfig import initCFG
from spacewalk.server import rhnSQL

from spacewalk.satellite_tools.contentRemove import __listChannels, __serverCheck, \
    __kickstartCheck, delete_channels, UserError, __getMinionsByChannel, __applyChannelState, \
    __clonnedChannels

options_table = [
    Option("-v", "--verbose",       action="count",
           help="Increase verbosity"),
    Option("-l", "--list",          action="store_true",
           help="List defined channels and exit"),
    Option("-c", "--channel",       action="append", default=[],
           help="Delete this channel (can be present multiple times)"),
    Option("-a", "--channel-with-children",       action="append", default=[],
           help="Delete this channel and its child channels (can be present multiple times)"),
    Option("-u", "--unsubscribe",   action="store_true",
           help="Unsubscribe systems registered to the specified channels. Note: Credentials are needed in case of minions"),
    Option("--justdb",        action="store_true",
           help="Delete only from the database, do not remove files from disk"),
    Option("--force",         action="store_true",
           help="Remove the channel packages from any other channels too (Not Recommended)"),
    Option("-p", "--skip-packages", action="store_true",
           help="Do not remove package metadata or packages from the filesystem (Not Recommended)"),
    Option("--skip-kickstart-trees", action="store_true",
           help="Do not remove kickstart trees from the filesystem (Not Recommended)."),
    Option("--just-kickstart-trees", action="store_true",
           help="Remove only the kickstart trees for the channels specified."),
    Option("--skip-channels", action="store_true",
           help="Remove only packages from channel not the channel itself."),
    Option("--username", help="Username"),
    Option("--password", help="Password"),
]

LOCK = []
LOCK_DIR = '/var/run'


def main():

    global LOCK
    global options_table
    parser = OptionParser(option_list=options_table)

    (options, args) = parser.parse_args()

    if args:
        for arg in args:
            sys.stderr.write("Not a valid option ('%s'), try --help\n" % arg)
        sys.exit(-1)

    if not (options.channel or options.list or options.channel_with_children):
        sys.stderr.write("Nothing to do\n")
        sys.exit(0)

    if not options.list:
        for command in ['spacewalk-remove-channel', 'satellite-sync',
                        'spacewalk-repo-sync']:
            try:
                LOCK.append(rhnLockfile.Lockfile(
                    os.path.join(LOCK_DIR, "%s.pid" % command)))
            except rhnLockfile.LockfileLockedException:
                print("ERROR: An instance of %s is running, exiting." % command)
                sys.exit(-1)

    initCFG('server')
    initLOG("stdout", options.verbose or 0)

    rhnSQL.initDB()

    dict_label, dict_parents = __listChannels()
    if options.list:
        keys = list(dict_parents.keys())
        keys.sort()
        for c in keys:
            print(c)
            for sub in dict_parents[c]:
                print("\t" + sub)
        sys.exit(0)

    # Verify if the channel is valid
    base_channel = ""
    channels = {}
    for channel in options.channel:
        channels[channel] = None
        if channel in dict_parents:
            base_channel = channel

    for parent in options.channel_with_children:
        matchs = fnmatch.filter(dict_parents, parent)
        for parent in matchs:
            if parent in dict_parents:
                channels[parent] = None
                base_channel = parent
                for ch in dict_parents[parent]:
                    channels[ch] = None
        if not matchs:
            print("Unknown parent channel %s" % parent)
            sys.exit(-1)

    child_test_fail = False
    for channel in list(channels.keys()):
        if channel not in dict_label:
            print("Unknown channel %s" % channel)
            sys.exit(-1)
        if not options.skip_channels and not options.just_kickstart_trees:
            # Sanity check: verify subchannels are deleted as well if base
            # channels are selected
            if channel not in dict_parents:
                continue
            # this channel is a parent channel?
            children = []
            for subch in dict_parents[channel]:
                if subch not in channels:
                    child_test_fail = True
                    children.append(subch)
            if children:
                print("Error: cannot remove channel %s: subchannel(s) exist: " % (
                    channel))
                for child in children:
                    print("\t\t\t" + child)

    clone_test_fail = False
    for channel in list(channels.keys()):
        clones_not_deleted=[]
        for clone in __clonnedChannels(channel):
            # the clones channels will also be deleted?
            if clone not in channels:
                clone_test_fail = True
                clones_not_deleted.append(clone)
        if clones_not_deleted:
            print("Error: cannot remove channel %s: clone channel(s) exist: " % (
                channel))
            for clone_channel_error in clones_not_deleted:
                print("\t\t\t" + clone_channel_error)

    if child_test_fail or clone_test_fail:
        sys.exit(-1)
    if options.unsubscribe:
        if not options.username:
            raise UserError("Username not specified")
        if not options.password:
            options.password= getpass.getpass()
        affected_minions =  __getMinionsByChannel(list(channels.keys()))

    if not options.skip_channels and not options.just_kickstart_trees:
        if __serverCheck(list(channels.keys()), options.unsubscribe):
            sys.exit(-1)

        if __kickstartCheck(list(channels.keys())):
            sys.exit(-1)

    try:
        delete_channels(list(channels.keys()), force=options.force,
                                      justdb=options.justdb, skip_packages=options.skip_packages,
                                      skip_channels=options.skip_channels,
                                      skip_kickstart_trees=options.skip_kickstart_trees,
                                      just_kickstart_trees=options.just_kickstart_trees)
    except:
        rhnSQL.rollback()
        raise
    rhnSQL.commit()
    if options.unsubscribe:
        __applyChannelState(affected_minions, options.username, options.password)
    releaseLOCK()
    return 0


def releaseLOCK():
    global LOCK
    for lock in LOCK:
        lock.release()

def systemExit(code, msgs=None):
    if msgs:
        if type(msgs) not in [type([]), type(())]:
            msgs = (msgs, )
        for msg in msgs:
            sys.stderr.write(str(msg) + '\n')
    sys.exit(code)

if __name__ == '__main__':
    try:
        sys.exit(main() or 0)
    except KeyboardInterrupt:
        sys.stderr.write("\nUser interrupted process.\n")
        releaseLOCK()
        sys.exit(0)
    except UserError as error:
        systemExit(-1, "\n%s" % error)
    except SystemExit:
        # Normal exit
        raise
    except Exception:
        e = sys.exc_info()[1]
        releaseLOCK()
        sys.stderr.write("\nERROR: unhandled exception occurred: (%s).\n" % e)
        import traceback
        traceback.print_exc()
        sys.exit(-1)
  07070100000100000081B40000000000000000000000016290A0C100001512000000000000000000000000000000000000004000000000spacewalk-backend/satellite_tools/spacewalk-remove-channel.sgml   <!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook V3.1//EN">
<refentry>

<RefMeta>
<RefEntryTitle>spacewalk-remove-channel</RefEntryTitle><manvolnum>8</manvolnum>
<RefMiscInfo>Version 3.5.0</RefMiscInfo>
</RefMeta>

<RefNameDiv>
<RefName><command>spacewalk-remove-channel</command></RefName>
<RefPurpose>
Removes a channel from a SUSE Manager server.
</RefPurpose>
</RefNameDiv>

<RefSynopsisDiv>
<Synopsis>
    <cmdsynopsis>
        <command>spacewalk-remove-channel</command>
        <arg>options <replaceable>...</replaceable></arg>
        <arg>-c<replaceable>CHANNEL_LABEL</replaceable></arg>
        <arg>-a<replaceable>PARENT_LABEL</replaceable></arg>
    </cmdsynopsis>
    <cmdsynopsis>
         <arg>-c</arg> <arg>--channel</arg>
    </cmdsynopsis>
    <cmdsynopsis>
         <arg>-a</arg> <arg>--channel-with-children</arg>
    </cmdsynopsis>
    <cmdsynopsis>
         <arg>-u</arg> <arg>--unsubscribe</arg>
    </cmdsynopsis>
    <cmdsynopsis>
        <arg>-l</arg>
        <arg>--list</arg>
    </cmdsynopsis>
    <cmdsynopsis>
        <arg>--justdb</arg>
    </cmdsynopsis>
    <cmdsynopsis>
        <arg>-v</arg> <arg>--verbose</arg>
    </cmdsynopsis>
    <cmdsynopsis>
        <arg>--force</arg>
    </cmdsynopsis>
    <cmdsynopsis>
        <arg>-p</arg> <arg>--skip-packages</arg>
    </cmdsynopsis>
    <cmdsynopsis>
        <arg>--skip-kickstart-trees</arg>
    </cmdsynopsis>
    <cmdsynopsis>
        <arg>--just-kickstart-trees</arg>
    </cmdsynopsis>
    <cmdsynopsis>
        <arg>--skip-channels</arg>
    </cmdsynopsis>
</Synopsis>
</RefSynopsisDiv>

<RefSect1><Title>Description</Title>
<para>
    The <emphasis>spacewalk-channel-remove</emphasis> completely removes
    channels from a SUSE Manager server.
</para>
<para>
    By default systems are not unsubscribed from the specified channel(s).  If systems
    are currently subcribed, they will be listed.  To unsubscribe these systems, simply
    use the --unsubscribe option.
</para>
</RefSect1>

<RefSect1><Title>Options</Title>
<variablelist>
    <varlistentry>
        <term>-h, --help</term>
        <listitem>
            <para>Display the help screen with a list of options.</para>
        </listitem>
    </varlistentry>
    <varlistentry>
        <term>-l, --list</term>
        <listitem>
            <para>List all channels on the satellite.</para>
        </listitem>
    </varlistentry>
    <varlistentry>
        <term>-u, --unsubscribe</term>
        <listitem>
            <para>Unsubscribe any systems subscribed to the specified channels.</para>
        </listitem>
    </varlistentry>
    <varlistentry>
        <term>--justdb</term>
        <listitem>
            <para>Don't remove any files from the file system.  Instead only delete metadata from the database.</para>
        </listitem>
    </varlistentry>
    <varlistentry>
        <term>-c<replaceable>CHANNEL</replaceable>, --channel=<replaceable>CHANNEL</replaceable></term>
        <listitem>
            <para>Delete the channel with the specified label.  May be used multiple times to specify multiple channels.</para>
        </listitem>
    </varlistentry>
    <varlistentry>
        <term>-a<replaceable>PARENT</replaceable>, --channel-with-children=<replaceable>PARENT</replaceable></term>
        <listitem>
            <para>Delete the channel with the specified label and its child channels.  May be used multiple times to specify multiple parent channels.</para>
        </listitem>
    </varlistentry>
    <varlistentry>
        <term>--force</term>
        <listitem>
            <para>Delete packages from the satellite even if the package is in more channels than what is specified. (Not Recommended)</para>
        </listitem>
    </varlistentry>
    <varlistentry>
        <term>-p, --skip-packages</term>
        <listitem>
            <para>Do not remove the package metadata or the files from the filesystem. (Not Recommended)</para>
        </listitem>
    </varlistentry>
    <varlistentry>
        <term>--skip-kickstart-trees</term>
        <listitem>
            <para>Do not remove kickstart trees from the filesystem.</para>
        </listitem>
    </varlistentry>
    <varlistentry>
        <term>--just-kickstart-trees</term>
        <listitem>
            <para>Remove only the kickstart trees for the channels specified from the database and the filesystem. This option can be used only in combination with --skip-kickstart-trees. Any other options will be discarded.</para>
        </listitem>
    </varlistentry>
    <varlistentry>
        <term>--skip-channels</term>
        <listitem>
            <para>Remove only packages from channel not the channel itself.</para>
        </listitem>
    </varlistentry>
</variablelist>
</RefSect1>

<RefSect1><Title>Examples</Title>
<simplelist>
        <member><command>spacewalk-remove-channel --list</command></member>
        <member><command>spacewalk-remove-channel --channel=rhel-i386-as-3</command></member>
        <member><command>spacewalk-remove-channel --channel-with-children=rhel-i386-as-3</command></member>
</simplelist>
</RefSect1>

<RefSect1><Title>Authors</Title>
<simplelist>
    <member>Todd Warner <email>taw@redhat.com</email></member>
    <member>Mihai Ibanescu <email>misa@redhat.com</email></member>
    <member>Justin Sherrill <email>jsherril@redhat.com</email></member>
</simplelist>
</RefSect1>
</RefEntry>

<!--
vim: sw=4
-->
  07070100000101000081FD0000000000000000000000016290A0C100002FA3000000000000000000000000000000000000003600000000spacewalk-backend/satellite_tools/spacewalk-repo-sync #!/usr/bin/python -u
#
# Copyright (c) 2008--2017 Red Hat, Inc.
# Copyright (c) 2011 SUSE LLC
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#

import re
try:
    #  python2
    import StringIO as StringIO
except ImportError:
    #  python3
    import io as StringIO
import simplejson as json
import shutil
import sys
import os
from optparse import OptionParser
import datetime

from spacewalk.satellite_tools.syncLib import initEMAIL_LOG

LOCK = None

log_path = '/var/log/rhn/reposync.log'


def systemExit(code, msg=None):
    "Exit with a code and optional message(s). Saved a few lines of code."
    sys.stderr.write(str(msg)+'\n')
    sys.exit(code)

try:
    from rhn import rhnLockfile
    from spacewalk.common import rhnLog
    from spacewalk.common.rhnConfig import CFG, initCFG
    from spacewalk.satellite_tools import reposync
    from spacewalk.satellite_tools.syncLib import log, log2disk
except KeyboardInterrupt:
    systemExit(0, "\nUser interrupted process.")
except ImportError:
    systemExit(1, "Unable to find code tree.\n"
               "Path not correct? " + str(sys.path))


def releaseLOCK():
    global LOCK
    if LOCK:
        LOCK.release()
        LOCK = None


def main():

    # quick check to see if you are a super-user.
    if os.getuid() != 0:
        systemExit(8, 'ERROR: must be root to execute.')

    global LOCK
    try:
        LOCK = rhnLockfile.Lockfile('/var/run/spacewalk-repo-sync.pid')
    except rhnLockfile.LockfileLockedException:
        systemExit(1, "ERROR: attempting to run more than one instance of "
                      "spacewalk-repo-sync Exiting.")

    parser = OptionParser()
    parser.add_option('-l', '--list', action='store_true', dest='list',
                      help='List the custom channels with the associated repositories.')
    parser.add_option('-s', '--show-packages', action='store_true', dest='show_packages',
                      help='List all packages in a specified channel.')
    parser.add_option('-u', '--url', action='append', dest='url',
                      default=[], help='The url of the repository. Can be used multiple times.')
    parser.add_option('-c', '--channel', action='append',
                      dest='channel_label',
                      help='The label of the channel to sync packages to. Can be used multiple times.')
    parser.add_option('-p', '--parent-channel', action='append',
                      dest='parent_label', default=[],
                      help='Synchronize the parent channel and all its child channels.')
    parser.add_option('-d', '--dry-run', action='store_true',
                      dest='dry_run',
                      help='Test run. No sync takes place.')
    parser.add_option('--latest', action='store_true',
                      dest='latest',
                      help='Sync latest packages only. Use carefully - you might need to fix some dependencies on your own.')
    parser.add_option('-g', '--config', action='store', dest='config',
               help='Configuration file')
    parser.add_option('-t', '--type', action='store', dest='repo_type',
                      help='Force type of repository ("yum", "uln" and "deb" are supported)')
    parser.add_option('-f', '--fail', action='store_true', dest='fail',
                      default=False,
                      help="If a package import fails, fail the entire operation")
    parser.add_option('-n', '--non-interactive', action='store_true',
                      dest='noninteractive', default=False,
                      help="Do not ask anything, use default answers")
    parser.add_option('-i', '--include', action='callback',
                      callback=reposync.set_filter_opt, type='str', nargs=1,
                      dest='filters', default=[],
                      help="Comma or space separated list of included packages or package groups.")
    parser.add_option('-e', '--exclude', action='callback',
                      callback=reposync.set_filter_opt,
                      type='str', nargs=1, dest='filters', default=[],
                      help="Comma or space separated list of excluded packages or package groups.")
    parser.add_option('', '--email', action="store_true", help="e-mail a report of what was synced/imported")
    parser.add_option('', '--traceback-mail', action="store",
                      help="alternative email address(es) for sync output (--email option)")
    parser.add_option('', '--no-errata', action='store_true', dest='no_errata',
                      default=False, help="Do not sync errata")
    parser.add_option('', '--no-packages', action='store_true', dest='no_packages',
                      default=False, help="Do not sync packages")
    parser.add_option('', '--sync-kickstart', action='store_true', dest='sync_kickstart',
                      default=False, help="Sync kickstartable tree")
    parser.add_option('', '--force-all-errata', action='store_true', dest='force_all_errata',
                      default=False, help="Process metadata of all errata, not only missing.")
    parser.add_option('', '--batch-size', action='store', help="max. batch size for package import (debug only)")
    parser.add_option('-Y', '--deep-verify', action='store_true',
                      dest='deep_verify', default=False,
                      help='Do not use cached package checksums')
    parser.add_option('-v', '--verbose', action='count',
                      help="Verbose output. Possible to accumulate: -vvv")
    (options, args) = parser.parse_args()

    log_level = options.verbose
    if log_level is None:
        log_level = 0

    initCFG('server.satellite')
    CFG.set('DEBUG', log_level)
    CFG.set("TRACEBACK_MAIL", options.traceback_mail or CFG.TRACEBACK_MAIL)
    if options.email:
        initEMAIL_LOG()
    rhnLog.initLOG(log_path, log_level)
    log2disk(0, "Command: %s" % str(sys.argv))

    l_params=["no_errata", "sync_kickstart", "fail"]
    d_chan_repo=reposync.getChannelRepo()
    l_ch_custom=reposync.getCustomChannels()
    d_parent_child=reposync.getParentsChilds()
    d_ch_repo_sync={}
    l_no_ch_repo_sync=[]

    if options.list:
        log(0, "======================================")
        log(0, "|   Channel Label   |   Repository   |")
        log(0, "======================================")
        for ch in list(set(l_ch_custom) & set(d_chan_repo)):
            for repo in d_chan_repo[ch]:
                log(0, "%s | %s" %(ch,repo))
        for ch in list(set(l_ch_custom)-set(d_chan_repo)):
            log(0, "%s | No repository set" % ch)
        return 0

    if not options.channel_label and not options.parent_label and not options.config:
        systemExit(1, "--channel, --parent-channel or --config must be specifed.")

    if options.config:
        try:
            config_file = open(options.config).read()
            # strip  all whitespace
            config_file = re.sub(r'\s', '', config_file)
            config = json.load(StringIO.StringIO(config_file))

        except Exception as e:
            systemExit(1, "Configuration file is invalid, please check syntax. Error [%s]" % e )

        for key in l_params:
            if key in config and not getattr(options, key):
                setattr(options, key, config[key])

        # Channels
        if 'channel' in config:
            for ch,repo in config['channel'].items():
                 if not isinstance(repo, list):
                    systemExit(
                        1,
                        "Configuration file is invalid, "
                        "{0}'s value needs to be a list.".format(ch)
                    )
                 d_ch_repo_sync[ch]=repo

        if 'parent_channel' in config:
            options.parent_label+=config['parent_channel']

    if options.channel_label and len(options.channel_label)>0:
        for channel in options.channel_label:
            d_ch_repo_sync[channel]=options.url

    if options.parent_label:
        for pch in options.parent_label:
            if pch in d_parent_child:
               for ch in [pch]+d_parent_child[pch]:
                    if ch in l_ch_custom and ch not in d_ch_repo_sync:
                        d_ch_repo_sync[ch]=[]
            else:
                systemExit(1, "Channel %s is not custom base channel." % pch)

    for ch in d_ch_repo_sync:
        if ch not in l_ch_custom:
            systemExit(1, "Channel %s is not custom or does not exist." % ch)
        if not d_ch_repo_sync[ch] and not ch in d_chan_repo:
            log(0, "Channel %s Channel has no URL associated, skipping sync" % ch)
            l_no_ch_repo_sync.append(ch)

    for ch in l_no_ch_repo_sync:
        del d_ch_repo_sync[ch]

    if options.dry_run:
        log(0, "======================================")
        log(0, "|   Channel Label   |   Repository   |")
        log(0, "======================================")

        for ch,repo in list(d_ch_repo_sync.items()):
            if repo:
                log(0, " %s : %s" % (ch,", ".join(repo)))
            else:
                log(0, " %s : %s" % (ch,", ".join(d_chan_repo[ch])))

        log(0, "======================================")
        log(0, "|             Parameters             |")
        log(0, "======================================")
        for key in  l_params:
            log(0, " %s: %s" % (key,str(getattr(options, key))))
        return 0

    if options.batch_size:
        try:
            batch_size = int(options.batch_size)
            if batch_size <= 0:
                raise ValueError()
        except ValueError:
            systemExit(1, "Invalid batch size: %s" % options.batch_size)

    reposync.clear_ssl_cache()

    total_time = datetime.timedelta()
    ret_code = 0
    for ch,repo in list(d_ch_repo_sync.items()):

        log(0, "======================================")
        log(0, "| Channel: %s" % ch)
        log(0, "======================================")
        log(0, "Sync of channel started.")
        log2disk(0, "Please check 'reposync/%s.log' for sync log of this channel." % ch, notimeYN=True)
        sync = reposync.RepoSync(channel_label=ch,
                      repo_type=options.repo_type,
                      url=repo,
                      fail=options.fail,
                      noninteractive=options.noninteractive,
                      filters=options.filters,
                      deep_verify=options.deep_verify,
                      no_errata=options.no_errata,
                      no_packages=options.no_packages,
                      sync_kickstart=options.sync_kickstart,
                      latest=options.latest,
                      log_level=options.verbose,
                      force_all_errata=options.force_all_errata, show_packages_only=options.show_packages)
        if options.batch_size:
            sync.set_import_batch_size(options.batch_size)
        elapsed_time, channel_ret_code = sync.sync()
        if channel_ret_code != 0 and ret_code == 0:
            ret_code = channel_ret_code
        total_time += elapsed_time
        # Switch back to common log
        rhnLog.initLOG(log_path, log_level)
        log2disk(0, "Sync of channel completed.")

    log(0, "Total time: %s" % str(total_time).split('.')[0])
    if options.email:
        reposync.send_mail()
    releaseLOCK()
    return ret_code


if __name__ == '__main__':
    try:
        sys.exit(abs(main() or 0))
    except KeyboardInterrupt:
        systemExit(1, "\nProcess has been interrupted.")
    except SystemExit as e:
        releaseLOCK()
        sys.exit(e.code)
    except Exception as e:
        releaseLOCK()
        raise
 07070100000102000081B40000000000000000000000016290A0C1000034C7000000000000000000000000000000000000003B00000000spacewalk-backend/satellite_tools/spacewalk-repo-sync.sgml    <!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook V4.4//EN" [
<!ENTITY RHNSAT "SUSE Manager Server" >
<!ENTITY RHNCHANRM "SUSE Manager Server repository syncing tool" >

]>
<refentry>

<refmeta>
<refentrytitle>spacewalk-repo-sync</refentrytitle><manvolnum>8</manvolnum>
<refmiscinfo>Version 3.5.0</refmiscinfo>
</refmeta>

<refnamediv>
<refname><command>spacewalk-repo-sync</command></refname>
<refpurpose>
Syncs the content from yum repos into SUSE Manager channels.
</refpurpose>
</refnamediv>

<refsynopsisdiv>
<synopsis>
    <cmdsynopsis>
	<command>spacewalk-repo-sync</command>
	<arg>options <replaceable>...</replaceable></arg>
    </cmdsynopsis>
    <cmdsynopsis>
        <arg>-c <replaceable>CHANNEL_LABEL</replaceable></arg>
	<arg>--channel=<replaceable>CHANNEL_LABEL</replaceable></arg>
    </cmdsynopsis>
    <cmdsynopsis>
        <arg>-p <replaceable>CHANNEL_LABEL</replaceable></arg>
	<arg>--parent-channel=<replaceable>CHANNEL_LABEL</replaceable></arg>
    </cmdsynopsis>
    <cmdsynopsis>
        <arg>-l</arg>
	<arg>--list</arg>
    </cmdsynopsis>
    <cmdsynopsis>
        <arg>-s</arg>
        <arg>--show-packages</arg>
    </cmdsynopsis>
    <cmdsynopsis>
        <arg>-u <replaceable>URL</replaceable></arg>
	<arg>--url=<replaceable>URL</replaceable></arg>
    </cmdsynopsis>
    <cmdsynopsis>
        <arg>-g <replaceable>CONFIG</replaceable></arg>
        <arg>--config=<replaceable>CONFIG</replaceable></arg>
    </cmdsynopsis>
    <cmdsynopsis>
        <arg>-n</arg>
	<arg>--latest</arg>
    </cmdsynopsis>
    <cmdsynopsis>
        <arg>-t <replaceable>TYPE</replaceable></arg>
	<arg>--type=<replaceable>TYPE</replaceable></arg>
    </cmdsynopsis>
    <cmdsynopsis>
        <arg>-f</arg>
	<arg>--fail</arg>
    </cmdsynopsis>
    <cmdsynopsis>
        <arg>-i <replaceable>FILTERS</replaceable></arg>
	<arg>--include <replaceable>FILTERS</replaceable></arg>
    </cmdsynopsis>
    <cmdsynopsis>
        <arg>-e <replaceable>FILTERS</replaceable></arg>
	<arg>--exclude <replaceable>FILTERS</replaceable></arg>
    </cmdsynopsis>
    <cmdsynopsis>
	<arg>--email</arg>
    </cmdsynopsis>
    <cmdsynopsis>
	<arg>--traceback-mail=<replaceable>EMAIL_ADDESS(ES)</replaceable></arg>
    </cmdsynopsis>
    <cmdsynopsis>
	<arg>--no-errata</arg>
    </cmdsynopsis>
    <cmdsynopsis>
	<arg>--sync-kickstart</arg>
    </cmdsynopsis>
    <cmdsynopsis>
	<arg>--force-all-errata</arg>
    </cmdsynopsis>
    <cmdsynopsis>
        <arg>-Y</arg>
        <arg>--deep-verify</arg>
        </group>
        <sbr>
        <group>
	<arg>--batch-size=<replaceable>BATCH_SIZE</replaceable></arg>
    </cmdsynopsis>
    <cmdsynopsis>
	<arg>--dry-run</arg>
    </cmdsynopsis>
    <cmdsynopsis>
        <arg>-n</arg>
        <arg>--non-interactive</arg>
        </group>
        <sbr>
        <group>
        <arg>-v</arg>
	<arg>--verbose</arg>
    </cmdsynopsis>
</synopsis>
</refsynopsisdiv>

<refsect1><title>Description</title>
<para>
    The <emphasis>spacewalk-repo-sync</emphasis> tool is used to sync packages from
    external or local yum repositories. All the packages within the specified repository
    will be added to the channel.
</para>

<para>
    Any url supported by yum is supported by this utility, including mirror lists.
    If the url is not supplied, the tool will look to see what repositories are associated
    with the specified channel and use those.
</para>
<para>
    Additional configuration options for yum_src plugin can be placed in
    <filename>/etc/rhn/spacewalk-repo-sync/yum.conf</filename>. You may configure per-channel
    options as documented in yum.conf(5) manual page. Don't forget to put [main] section there.
</para>

</refsect1>

<refsect1><title>Options</title>
<variablelist>
    <varlistentry>
        <term>-h, --help</term>
        <listitem>
            <para>Display the help screen with a list of options.</para>
        </listitem>
    </varlistentry>
    <varlistentry>
        <term>-c <replaceable>CHANNEL</replaceable>, --channel=<replaceable>CHANNEL</replaceable></term>
        <listitem>
            <para>The channel to sync the repository to.</para>
        </listitem>
    </varlistentry>
    <varlistentry>
        <term>-p <replaceable>CHANNEL</replaceable>, --parent-channel=<replaceable>CHANNEL</replaceable></term>
        <listitem>
            <para>Synchronize the parent channel and all its child channels.</para>
        </listitem>
    </varlistentry>
    <varlistentry>
        <term>-u <replaceable>URL</replaceable>, --url=<replaceable>URL</replaceable></term>
        <listitem>
            <para>The repository URL.  Any protocol supported by yum is supported including http://, nfs://, file://. Can be used multiple times in order for more than one repository to be assigned to a channel.(Optional)</para>
        </listitem>
    </varlistentry>
    <varlistentry>
        <term>-l, --list</term>
        <listitem>
            <para>List the custom channels with the associated repositories.</para>
        </listitem>
    </varlistentry>
    <varlistentry>
        <term>-s, --show-packages</term>
        <listitem>
            <para>List all packages in a specified channel.</para>
        </listitem>
    </varlistentry>
    <varlistentry>
        <term>-g <replaceable>CONFIG</replaceable>, --config=<replaceable>CONFIG</replaceable></term>
        <listitem>
            <para>Configuration file where more than one channel can be specified for synchronization. See section Examples.</para>
        </listitem>
    </varlistentry>
    <varlistentry>
        <term>-n, --latest</term>
        <listitem>
            <para>Sync latest packages only. Use carefully - you might need to fix some dependencies on your own.</para>
        </listitem>
    </varlistentry>
    <varlistentry>
        <term>-t <replaceable>TYPE</replaceable>, --type=<replaceable>TYPE</replaceable></term>
        <listitem>
            <para>The type of repository to sync. Currently only yum, uln and deb are supported. The uln type is used to sync with the Oracle Unbreakable Linux Network. The deb type is used for Debian repositories. This option overrides type of repository stored in DB for given repository.</para>
        </listitem>
    </varlistentry>
    <varlistentry>
        <term>-f, --fail</term>
        <listitem>
            <para>By default if an error occurs with a single package, the rest of the sync continues.  When using this option, the entire sync will terminate upon any error.</para>
        </listitem>
    </varlistentry>
    <varlistentry>
        <term>-v, --verbose</term>
        <listitem>
            <para>Print verbose output. Possible to accumulate: -vvv</para>
        </listitem>
    </varlistentry>
    <varlistentry>
        <term>-i <replaceable>FILTERS</replaceable>, --include <replaceable>FILTERS</replaceable></term>
        <listitem>
            <para>Comma or space separated list of included packages or package groups.</para>
        </listitem>
    </varlistentry>
    <varlistentry>
        <term>-e <replaceable>FILTERS</replaceable>, --exclude <replaceable>FILTERS</replaceable></term>
        <listitem>
            <para>Comma or space separated list of excluded packages or package groups.</para>
        </listitem>
    </varlistentry>
    <varlistentry>
        <term>--email</term>
        <listitem>
            <para>e-mail a report of what was synced/imported (sent to whomever
            is considered the receiver of "traceback_mail").</para>
        </listitem>
    </varlistentry>
    <varlistentry>
        <term>--traceback-mail=<replaceable>EMAIL_ADDRESS(ES)</replaceable></term>
        <listitem>
            <para>alternative email address(es) for all sync correspondence.
            Example: --traceback-mail="user1@example.com, user2@example.com".</para>
        </listitem>
    </varlistentry>
    <varlistentry>
        <term>--no-errata</term>
        <listitem>
            <para>Do not sync errata</para>
        </listitem>
    </varlistentry>
    <varlistentry>
        <term>--sync-kickstart</term>
        <listitem>
            <para>Attempt to create kickstartable tree (distribution) if there is subdirectory images/pxeboot/ under repo's URL. The option is ignored for repositories set from CLI via option [-u|--url].</para>
        </listitem>
    </varlistentry>
    <varlistentry>
        <term>--force-all-errata</term>
        <listitem>
            <para>process metadata of all errata, not only missing.</para>
        </listitem>
    </varlistentry>
    <varlistentry>
        <term>--batch-size=<replaceable>BATCH_SIZE</replaceable></term>
        <listitem>
            <para>maximum batch size for package import</para>
            <para>This option should not be used except for debugging
            purposes. The most useful case being --batch-size=1 where the
            database import process each piece of meta-data one at a time,
            isolating any issues.</para>
            <para>WARNING: --batch-size=1 will dramatically slow down the
            sync process.</para>
        </listitem>
    </varlistentry>
    <varlistentry>
        <term>--batch-size=<replaceable>BATCH_SIZE</replaceable></term>
        <listitem>
            <para>maximum batch size for package import</para>
            <para>This option should not be used except for debugging
            purposes. The most useful case being --batch-size=1 where the
            database import process each piece of meta-data one at a time,
            isolating any issues.</para>
            <para>WARNING: --batch-size=1 will dramatically slow down the
            sync process.</para>
        </listitem>
    </varlistentry>
    <varlistentry>
        <term>-Y, --deep-verify</term>
        <listitem>
            <para>Do not use cached package checksums.</para>
        </listitem>
    </varlistentry>
    <varlistentry>
        <term>--dry-run</term>
        <listitem>
            <para>Test run. No sync takes place.</para>
        </listitem>
    </varlistentry>
    <varlistentry>
        <term>-n, --non-interactive</term>
        <listitem>
            <para>Do not ask anything, use default answers.</para>
        </listitem>
    </varlistentry>
</variablelist>
</refsect1>

<RefSect1><Title>Configuration files</Title>
<variablelist>
    <varlistentry>
        <term>/etc/rhn/rhn.conf</term>
        <listitem>
            <variablelist>
                <varlistentry>
                    <term>server.satellite.reposync_download_threads = 5</term>
                    <listitem>
                        <para>Set maximum number of threads to be used for simultaneous downloads.</para>
                    </listitem>
                </varlistentry>
            </variablelist>
        </listitem>
    </varlistentry>
</variablelist>
</RefSect1>

<refsect1><title>Examples</title>
<simplelist>
    <member>List all custom channels and the repositories assigned to them.</member>
    <member><command>spacewalk-repo-sync --list </command></member>
    <member>Synchronize single channel to all repositories assigned to it via WebUI or API.</member>
    <member><command>spacewalk-repo-sync --channel custom-channel</command></member>
    <member>Synchronize single channel to a repository specified on the command line.</member>
    <member><command>spacewalk-repo-sync -c custom-channel --url=http://example.com/yum-repo/</command></member>
    <member>Synchronize single channel to a local repository specified on the command line.</member>
    <member><command>spacewalk-repo-sync -c custom-channel --url=file:///var/share/localrepo/</command></member>
    <member>Synchronize single channel to a repository(mirror list) specified on the command line.</member>
    <member><command>spacewalk-repo-sync -c custom-channel --url=http://example.com/mirrorlist.xml/</command></member>
    <member>Synchronize single channel to more than one repository specified on the command line.</member>
    <member><command>spacewalk-repo-sync -c custom-channel --url=http://example.com/yum-repo/ --url=http://example.com/yum-repo_2/</command></member>
    <member>Synchronize parent channel and all its child channels. All channels must have repository assigned via WebUI or API.</member>
    <member><command>spacewalk-repo-sync -p parent-channel </command></member>
    <member><command>spacewalk-repo-sync -c custom-channel --url=http://example.com/yum-repo/ -p parent-channel </command></member>
    <member>Synchronize channels specified in configuration file.</member>
    <member><command>spacewalk-repo-sync --config example.conf</command></member>
    <member><command>spacewalk-repo-sync --config example.conf -c custom-channel --url=http://example.com/yum-repo/ -p parent-channel --fail</command></member>
    <member>Example configuration file.</member>
    <member>
        <msgtext><programlisting>
{
 "no_errata":false,
 "sync_kickstart":false,
 "fail":true,
 "dry_run":false,
 "channel":{"chann_1":["http://example.com/repo1","http://example.com/repo2"],"chann_2":[]},
 "parent_channel":["parent_1","parent_2"]
}
        </programlisting></msgtext>
    </member>
    <member>In order just to test the configuration use option --dry-run.</member>
    <member><command>spacewalk-repo-sync --config example.conf --dry-run</command></member>
</simplelist>
</refsect1>

<refsect1><title>Authors</title>
<simplelist>
    <member>Justin Sherrill <email>jsherril@redhat.com</email></member>
</simplelist>
</refsect1>
</refentry>

<!--
vim: sw=4
-->
 07070100000103000081FD0000000000000000000000016290A0C100000516000000000000000000000000000000000000003900000000spacewalk-backend/satellite_tools/spacewalk-uln-resolver  #!/usr/bin/env python

import sys
import os
import re
import logging
import traceback
import configparser
import urllib.parse

sys.path.append("/usr/share/rhn/")
from spacewalk.satellite_tools.ulnauth import ULNAuth

# for testing add the relative path to the load path
if "spacewalk-uln-resolver" in sys.argv[0]:
    sys.path.insert(0, os.path.join(os.path.dirname(os.path.abspath(__file__)), '../python'))

from zypp_plugin import Plugin


class SpacewalkULNPlugin(Plugin):
    """
    ULN authentication Plugin
    """
    def __init__(self):
        Plugin.__init__(self)
        self._uln_auth = ULNAuth()

    def RESOLVEURL(self, headers, body):
        """
        Resolve URL.

        :returns: None
        """
        try:
            self._uln_auth.authenticate(headers['url'])
            self.auth_headers = {
                "X-ULN-Api-User-Key": self._uln_auth.token
            }
        except Exception as exc:
            self.answer("ERROR", {}, str(exc))
        hostname, label = self._uln_auth.get_hostname(headers.pop('url'))
        url = self._uln_auth.url + "/XMLRPC/GET-REQ/" + label
        if headers:
           url += "?{}".format(urllib.parse.urlencode(headers))
        self.answer("RESOLVEDURL", self.auth_headers, url)

plugin = SpacewalkULNPlugin()
plugin.main()
  07070100000104000081B40000000000000000000000016290A0C10000166F000000000000000000000000000000000000003E00000000spacewalk-backend/satellite_tools/spacewalk-update-signatures #!/usr/bin/python
#
# Copyright (c) 2008--2015 Red Hat, Inc.
#
# Authors: Pradeep Kilambi
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#
#

import sys
import os

from optparse import Option, OptionParser
from spacewalk.common.rhnLog import initLOG, log_debug
from spacewalk.common.rhnConfig import CFG, initCFG
from uyuni.common import rhn_rpm
from spacewalk.server import rhnSQL
from spacewalk.server.rhnServer import server_packages
from spacewalk.satellite_tools.progress_bar import ProgressBar

initCFG('server.satellite')
initLOG(CFG.LOG_FILE, CFG.DEBUG)

OPTIONS = None
debug = 0
verbose = 0

options_table = [
    Option("-v", "--verbose",       action="store_true",
        help="Increase verbosity"),
    Option("--debug",            action="store",
        help="logs the debug information to a log file"),
    Option("--clean-possible-wrong", action="store_true",
        help="clean possible wrong calculated keyids"),
]


def main():
    global options_table, debug, verbose, clean_wrong
    parser = OptionParser(option_list=options_table)

    (options, args) = parser.parse_args()

    if args:
        for arg in args:
            sys.stderr.write("Not a valid option ('%s'), try --help\n" % arg)
        sys.exit(-1)

    if options.verbose:
        initLOG(CFG.LOG_FILE, 1)
        verbose = 1

    if options.debug:
        initLOG(CFG.LOG_FILE, options.debug or 1)
        debug = 1

    rhnSQL.initDB()

    if options.clean_possible_wrong:
        clean_wrong()

    process_package_data()


_get_needed_pkgs_query = """
select P.id, P.path, CV.checksum_type, CV.checksum
  from rhnPackage P
       left join rhnPackageKeyAssociation PA on PA.package_id = P.id
      inner join rhnChecksumView CV on CV.id = P.checksum_id
      inner join rhnPackageKey pk on pa.key_id = pk.id
       left join rhnPackageProvider pp on pk.provider_id = pp.id
 where (PA.key_id is null
        and P.rpm_version is not null)
    or (P.org_id is NULL and pp.name is NULL)
"""

_get_possible_wrong_query = """
   select X.key_id from (
       select pa.key_id, count(pa.key_id) keycount, pk.provider_id
         from rhnpackagekeyassociation pa
         join rhnpackagekey pk on pk.id = pa.key_id
        where pk.provider_id is null
     group by pa.key_id, pk.provider_id
     order by keycount DESC
   ) X
   where X.keycount < 20
"""

_delete_key_association_query = """
  delete from rhnpackagekeyassociation
   where key_id = :id
"""

_delete_key_association_by_pkgid_query = """
  delete from rhnpackagekeyassociation
   where package_id = :id
"""

_delete_key_query = """
  delete from rhnpackagekey
   where id = :id
"""

def clean_wrong():
    query = rhnSQL.prepare(_get_possible_wrong_query)

    query.execute()
    keyids = query.fetchall_dict()

    if not keyids:
        # no possible wrong keyids found
        return

    del_keyass_query = rhnSQL.prepare(_delete_key_association_query)
    del_key_query = rhnSQL.prepare(_delete_key_query)
    if verbose: print ("Processing %s possible wrong keyids" % len(keyids))
    i = 0
    for K in keyids:
        del_keyass_query.execute(id=K['key_id'])
        del_key_query.execute(id=K['key_id'])
        i = i + 1
        # we need to break the transaction to smaller pieces
        if i % 1000 == 0:
            rhnSQL.commit()

    rhnSQL.commit()
    return

def process_package_data():
    global verbose, debug

    _get_path_sql = rhnSQL.prepare(_get_needed_pkgs_query)

    _get_path_sql.execute()
    pkgs = _get_path_sql.fetchall_dict()

    if not pkgs:
        # Nothing to change
        return
    if verbose:
        print ("Processing %s packages" % len(pkgs))
    pb = ProgressBar(prompt='standby: ', endTag=' - Complete!',
                     finalSize=len(pkgs), finalBarLength=40, stream=sys.stdout)
    pb.printAll(1)
    skip_list = []
    i = 0
    for pkg in pkgs:
        pb.addTo(1)
        pb.printIncrement()
        path = pkg['path']

        if path is None:
            continue
        full_path = os.path.join(CFG.MOUNT_POINT, path)
        checksum_type = pkg['checksum_type']
        checksum = pkg['checksum']

        if not os.path.exists(full_path):
            skip_list.append(full_path)
            if debug:
                log_debug(1, "File not %s found" % (full_path))
            continue

        try:
            hdr = rhn_rpm.get_package_header(filename=full_path)
        except:
            rhnSQL.commit()
            raise

        # delete possible wrong association
        del_keyass_query = rhnSQL.prepare(_delete_key_association_by_pkgid_query)
        del_keyass_query.execute(id=pkg['id'])

        # Process gpg key ids
        server_packages.processPackageKeyAssociations(hdr, checksum_type, checksum)
        if debug:
            log_debug(1, "gpg key info updated from %s" % full_path )
        i = i + 1
        # we need to break the transaction to smaller pieces
        if i % 1000 == 0:
            rhnSQL.commit()
    pb.printComplete()
    # All done, final commit
    rhnSQL.commit()
    sys.stderr.write("Transaction Committed! \n")
    if verbose:
        print (" Skipping %s packages, paths not found" % len(skip_list))
    return


if __name__ == '__main__':
    main()
 07070100000105000081B40000000000000000000000016290A0C100000662000000000000000000000000000000000000004300000000spacewalk-backend/satellite_tools/spacewalk-update-signatures.sgml    <!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook V3.1//EN">
<refentry>

<RefMeta>
<RefEntryTitle>spacewalk-update-signatures</RefEntryTitle><manvolnum>8</manvolnum>
</RefMeta>

<RefNameDiv>
<RefName><command>spacewalk-update-signatures</command></RefName>
<RefPurpose>
Helper utility that update packages checksum.
</RefPurpose>
</RefNameDiv>

<RefSynopsisDiv>
<Synopsis>
    <cmdsynopsis>
        <command>spacewalk-update-signatures</command>
    </cmdsynopsis>
</Synopsis>
</RefSynopsisDiv>

<RefSect1><Title>Description</Title>

<para>
    The <emphasis>spacewalk-update-signatures</emphasis>) is a
    helper utility that recalculate checksum of packages in db. New
    checksum is calculated from files on disk.
</para>
<para>
    You should not run this utility unless you know what are you doing.
    This is not needed in normal day-to-day operations.
</para>
</RefSect1>

<RefSect1><Title>Options</Title>
<variablelist>
    <varlistentry>
        <term>--help</term>
        <listitem>
            <para>Display usage and exit.</para>
        </listitem>
    </varlistentry>
    <varlistentry>
        <term>-v, --verbose</term>
        <listitem>
            <para>Increase verbosity.</para>
        </listitem>
    </varlistentry>
    <varlistentry>
        <term>--debug</term>
        <listitem>
            <para>Logs the debug information to a log file /var/log/rhn/update-packages.log</para>
        </listitem>
    </varlistentry>
</variablelist>
</RefSect1>

<RefSect1><Title>Authors</Title>
<simplelist>
    <member>Pradeep Kilambi <email>pkilambi@redhat.com</email></member>
</simplelist>
</RefSect1>
</RefEntry>
  07070100000106000081B40000000000000000000000016290A0C100000C31000000000000000000000000000000000000002F00000000spacewalk-backend/satellite_tools/syncCache.py    #
# Copyright (c) 2008--2016 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#
# Mechanism to persistently cache sync info (mostly post-parsed(XML)
#    package objects).
#

# system imports:
import os

# rhn imports:
from spacewalk.common import rhnCache
from spacewalk.common.rhnConfig import CFG, initCFG
from uyuni.common.rhnLib import hash_object_id

# NOTE: this is a python 2.2-ism
__all__ = []


class BaseCache:
    _compressed = 1

    def __init__(self):
        # Kind of kludgy - this may have weird side-effects if called from
        # within the server code
        rhnCache.CACHEDIR = CFG.SYNC_CACHE_DIR

    def cache_get(self, object_id, timestamp=None):
        # Get the key
        key = self._get_key(object_id)
        return rhnCache.get(key, modified=timestamp, raw=0,
                            compressed=self._compressed)

    def cache_set(self, object_id, value, timestamp=None):
        # Get the key
        key = self._get_key(object_id)
        return rhnCache.set(key, value, modified=timestamp, raw=0,
                            compressed=self._compressed)

    def cache_has_key(self, object_id, timestamp=None):
        # Get the key
        key = self._get_key(object_id)
        return rhnCache.has_key(key, modified=timestamp)

    def _get_key(self, object_id):
        raise NotImplementedError()


class ChannelCache(BaseCache):

    def _get_key(self, object_id):
        return os.path.join("satsync", "channels", str(object_id))


class BasePackageCache(BaseCache):
    _subdir = "__unknown__"

    def _get_key(self, object_id):
        hash_val = hash_object_id(object_id, 2)
        return os.path.join("satsync", self._subdir, hash_val, str(object_id))


class ShortPackageCache(BasePackageCache):
    _subdir = "short-packages"
    _compressed = 0


class PackageCache(BasePackageCache):
    _subdir = "packages"


class SourcePackageCache(BasePackageCache):
    _subdir = "source-packages"


class ErratumCache(BaseCache):
    _subdir = "errata"

    def _get_key(self, object_id):
        hash_val = hash_object_id(object_id, 1)
        return os.path.join("satsync", self._subdir, hash_val, str(object_id))


class KickstartableTreesCache(BaseCache):
    _subdir = "kickstartable-trees"

    def _get_key(self, object_id):
        return os.path.normpath(os.path.join("satsync", self._subdir,
                                             object_id))

if __name__ == '__main__':
    initCFG("server.satellite")
    c = PackageCache()
    pid = 'package-12345'
    c.cache_set(pid, {'a': 1, 'b': 2})
    print((c.cache_get(pid)))
   07070100000107000081B40000000000000000000000016290A0C1000024A3000000000000000000000000000000000000002D00000000spacewalk-backend/satellite_tools/syncLib.py  #
# Copyright (c) 2008--2017 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#
from __future__ import unicode_literals

# system imports:
import os
import sys
import time

try:
    #  python 2
    from StringIO import StringIO
except ImportError:
    #  python3
    from io import StringIO

# rhn imports:
from uyuni.common.usix import raise_with_tb
from uyuni.common import rhnLib
from spacewalk.common.rhnConfig import CFG
from spacewalk.common.rhnLog import log_time, log_clean
from uyuni.common.fileutils import createPath, setPermsPath

from . import messages

EMAIL_LOG = None


def initEMAIL_LOG(reinit=0):
    global EMAIL_LOG
    if EMAIL_LOG is None or reinit:
        EMAIL_LOG = StringIO()


def dumpEMAIL_LOG():
    if EMAIL_LOG is not None:
        return EMAIL_LOG.getvalue()
    return None


class RhnSyncException(Exception):

    """General exception handler for all sync activity."""
    pass


class ReprocessingNeeded(Exception):

    """Exception raised when a contition has been hit that would require a new
    run of the sync process"""
    pass

# logging functions:
# log levels rule of thumb:
# 0  - no logging, yet no feedback either
# 1  - minimal logging/feedback
# 2  - normal level of logging/feedback
# 3  - a bit much
##  4+ - excessive


def _timeString1():
    """time string as: "2002/11/18 12:56:34" """
    return log_time()


def _timeString2():
    """time string as: "12:56:34" """
    return time.strftime("%H:%M:%S", time.localtime(time.time()))


def _prepLogMsg(msg, cleanYN=0, notimeYN=0, shortYN=0):
    """prepare formating of message for logging.

    cleanYN -  no extra info, period.
    notimeYN - spaced as if there were a time-stamp.
    shortYN -  no date (used for stdout/stderr really)
    """
    if not cleanYN:
        if shortYN:
            if notimeYN:
                msg = '%s %s' % (' ' * len(_timeString2()), msg)
            else:
                msg = '%s %s' % (_timeString2(), msg)
        else:
            if notimeYN:
                msg = '%s %s' % (' ' * len(_timeString1()), msg)
            else:
                msg = '%s %s' % (_timeString1(), msg)
    return msg


def log2disk(level, msg, cleanYN=0, notimeYN=0):
    """Log to a log file.
    Arguments: see def _prepLogMsg(...) above.
    """
    if not isinstance(msg, type([])):
        msg = [msg]
    for m in msg:
        try:
            log_clean(level=level, msg=_prepLogMsg(m, cleanYN, notimeYN))
        except (KeyboardInterrupt, SystemExit):
            raise
        except Exception:  # pylint: disable=E0012, W0703
            e = sys.exc_info()[1]
            sys.stderr.write('ERROR: upon attempt to write to log file: %s' % e)


def log2stream(level, msg, cleanYN, notimeYN, stream):
    """Log to a specified stream.
    Arguments: see def _prepLogMsg(...) above.
    """
    if not isinstance(msg, type([])):
        msg = [msg]
    if CFG.DEBUG >= level:
        for m in msg:
            stream.write(_prepLogMsg(m, cleanYN, notimeYN, shortYN=1) + '\n')
        stream.flush()


def log2email(level, msg, cleanYN=0, notimeYN=0):
    """ Log to the email log.
        Arguments: see def _prepLogMsg(...) above.
    """
    if EMAIL_LOG is not None:
        log2stream(level, msg, cleanYN, notimeYN, EMAIL_LOG)


def log2background(level, msg, cleanYN=0, notimeYN=0):
    """Log to email and disk
    Arguments: see def _prepLogMsg(...) above.
    """
    log2email(level, msg, cleanYN, notimeYN)
    log2disk(level, msg, cleanYN, notimeYN)


def log2stderr(level, msg, cleanYN=0, notimeYN=0):
    """Log to standard error
    Arguments: see def _prepLogMsg(...) above.
    """
    log2email(level, msg, cleanYN, notimeYN)
    log2stream(level, msg, cleanYN, notimeYN, sys.stderr)


def log2stdout(level, msg, cleanYN=0, notimeYN=0):
    """Log to standard out
    Arguments: see def _prepLogMsg(...) above.
    """
    log2email(level, msg, cleanYN, notimeYN)
    log2stream(level, msg, cleanYN, notimeYN, sys.stdout)


def log2(levelDisk, levelStream, msg, cleanYN=0, notimeYN=0, stream=sys.stdout):
    """Log to disk and some stream --- differing log levels.
    Arguments: see def _prepLogMsg(...) above.
    """
    log2disk(levelDisk, msg, cleanYN, notimeYN)
    if stream is sys.stdout:
        log2stdout(levelStream, msg, cleanYN, notimeYN)
    elif stream is sys.stderr:
        log2stderr(levelStream, msg, cleanYN, notimeYN)
    else:
        log2stream(levelStream, msg, cleanYN, notimeYN, stream=stream)


def log(level, msg, cleanYN=0, notimeYN=0, stream=sys.stdout):
    """Log to disk and some stream --- share same log level.
    Arguments: see def _prepLogMsg(...) above.
    """
    log2(level, level, msg, cleanYN, notimeYN, stream=stream)


class FileCreationError(Exception):
    pass


class FileManip:

    "Generic file manipulation class"

    def __init__(self, relative_path, timestamp, file_size):
        self.relative_path = relative_path
        self.timestamp = rhnLib.timestamp(timestamp)
        self.file_size = file_size
        self.full_path = os.path.join(CFG.MOUNT_POINT, self.relative_path)
        self.buffer_size = CFG.BUFFER_SIZE

    def write_file(self, stream_in):
        """Writes the contents of stream_in to the filesystem
        Returns the file size(success) or raises FileCreationError"""
        dirname = os.path.dirname(self.full_path)
        createPath(dirname)
        stat = os.statvfs(dirname)

        f_bsize = stat[0]  # file system block size
        # misa: it's kind of icky whether to use f_bfree (free blocks) or
        # f_bavail (free blocks for non-root). f_bavail is more correct, since
        # you don't want to have the system out of disk space because of
        # satsync; but people would get confused when looking at the output of
        # df
        f_bavail = stat[4]  # free blocks
        freespace = f_bsize * float(f_bavail)
        if self.file_size is not None and self.file_size > freespace:
            msg = messages.not_enough_diskspace % (freespace / 1024)
            log(-1, msg, stream=sys.stderr)
            # pkilambi: As the metadata download does'nt check for unfetched rpms
            # abort the sync when it runs out of disc space
            sys.exit(-1)
            #raise FileCreationError(msg)
        if freespace < 5000 * 1024:  # arbitrary
            msg = messages.not_enough_diskspace % (freespace / 1024)
            log(-1, msg, stream=sys.stderr)
            # pkilambi: As the metadata download does'nt check for unfetched rpms
            # abort the sync when it runs out of disc space
            sys.exit(-1)
            #raise FileCreationError(msg)

        fout = open(self.full_path, 'wb')
        # setting file permissions; NOTE: rhnpush uses apache to write to disk,
        # hence the 6 setting.
        if rhnLib.isSUSE():
            setPermsPath(self.full_path, user='wwwrun', group='www', chmod=int('0644', 8))
        else:
            setPermsPath(self.full_path, user='apache', group='apache', chmod=int('0644', 8))
        size = 0
        try:
            while 1:
                buf = stream_in.read(self.buffer_size)
                if not buf:
                    break
                buf_len = len(buf)
                fout.write(buf)
                size = size + buf_len
        except IOError:
            e = sys.exc_info()[1]
            msg = "IOError: %s" % e
            log(-1, msg, stream=sys.stderr)
            # Try not to leave garbage around
            try:
                os.unlink(self.full_path)
            except (OSError, IOError):
                pass
            raise_with_tb(FileCreationError(msg), sys.exc_info()[2])
        l_file_size = fout.tell()
        fout.close()

        if self.file_size is not None and self.file_size != l_file_size:
            # Something bad happened
            msg = "Error: file %s has wrong size. Expected %s bytes, got %s bytes" % (
                self.full_path, self.file_size, l_file_size)
            log(-1, msg, stream=sys.stderr)
            # Try not to leave garbage around
            try:
                os.unlink(self.full_path)
            except (OSError, IOError):
                pass
            raise FileCreationError(msg)

        os.utime(self.full_path, (self.timestamp, self.timestamp))
        return l_file_size


class RpmManip(FileManip):

    """General [S]RPM manipulation class.

    o Check checksums for mismatches
    o Write RPMs to the filesystem
    o get NVRE and NVREA
    """

    def __init__(self, pdict, path):
        FileManip.__init__(self, relative_path=path,
                           timestamp=pdict['last_modified'], file_size=pdict['package_size'])
        self.pdict = pdict

    def nvrea(self):
        return tuple([self.pdict[x] for x in
                      ['name', 'version', 'release', 'epoch', 'arch']])
 07070100000108000081B40000000000000000000000016290A0C100004FD9000000000000000000000000000000000000003300000000spacewalk-backend/satellite_tools/sync_handlers.py    #
# Copyright (c) 2008--2016 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#

import sys

from uyuni.common import usix
from spacewalk.server.importlib import channelImport, packageImport, errataImport, \
    kickstartImport
from uyuni.common.usix import raise_with_tb
from . import diskImportLib
from . import xmlSource
from . import syncCache
from . import syncLib

DEFAULT_ORG = 1

# Singleton-like


class BaseCollection:
    _shared_state = {}

    def __init__(self):
        self.__dict__ = self._shared_state
        if not list(self._shared_state.keys()):
            self._items = []
            self._cache = None
            self._items_hash = {}
            self._init_fields()
            self._init_cache()

    def add_item(self, item):
        item_id = self._get_item_id(item)
        timestamp = self._get_item_timestamp(item)
        self._cache.cache_set(item_id, item, timestamp=timestamp)
        return self

    def get_item_timestamp(self, item_id):
        "Returns this item's timestamp"
        if item_id not in self._items_hash:
            raise KeyError("Item %s not found in collection" % item_id)
        return self._items_hash[item_id]

    def get_item(self, item_id, timestamp):
        "Retrieve an item from the collection"
        return self._cache.cache_get(item_id, timestamp=timestamp)

    def has_item(self, item_id, timestamp):
        """Return true if the item exists in the collection (with the
        specified timestamp"""
        return self._cache.cache_has_key(item_id, timestamp=timestamp)

    def _init_fields(self):
        return self

    def _init_cache(self):
        return self

    def _get_item_id(self, item):
        "Get the item ID out of an item. Override in subclasses"
        raise NotImplementedError

    def _get_item_timestamp(self, item):
        "Get the item timestamp out of an item. Override in subclasses"
        raise NotImplementedError

    def reset(self):
        """Reset the collection"""
        self._shared_state.clear()
        self.__init__()

# Singleton-like


class ChannelCollection:
    _shared_state = {}

    def __init__(self):
        self.__dict__ = self._shared_state
        if not list(self._shared_state.keys()):
            self._channels = []
            self._parent_channels = {}
            self._channels_hash = {}
            self._cache = syncCache.ChannelCache()

    def add_item(self, channel_object):
        """Stores a channel in the collection"""
        channel_label = channel_object['label']
        channel_last_modified = channel_object['last_modified']
        last_modified = _to_timestamp(channel_last_modified)
        self._cache.cache_set(channel_label, channel_object,
                              timestamp=last_modified)
        t = (channel_label, last_modified)
        self._channels.append(t)
        channel_parent = channel_object.get('parent_channel')
        if channel_parent is not None:
            # Add this channel to the parent's list
            l = self._get_list_from_dict(self._parent_channels, channel_parent)
            l.append(t)
        else:
            # Create an empty list
            self._get_list_from_dict(self._parent_channels, channel_label)
        self._channels_hash[channel_label] = last_modified
        return self

    @staticmethod
    def _get_list_from_dict(diction, key):
        # Returns the dictionary's key if present (assumed to be a list), or
        # sets the value to an empty list and returns it
        if key in diction:
            l = diction[key]
        else:
            l = diction[key] = []
        return l

    def get_channel_labels(self):
        """Return the channel labels from this collection"""
        return [x[0] for x in self._channels]

    def get_channels(self):
        """Return a list of (channel label, channel timestamp) from this
        collection"""
        return self._channels[:]

    def get_channel(self, channel_label, timestamp):
        """Return the channel with the specified label and timestamp from the
        collection"""
        return self._cache.cache_get(channel_label, timestamp=timestamp)

    def get_channel_timestamp(self, channel_label):
        """Returns the channel's timestamp"""
        if channel_label not in self._channels_hash:
            raise KeyError("Channel %s could not be found" % channel_label)
        return self._channels_hash[channel_label]

    def get_parent_channel_labels(self):
        """Return a list of channel labels for parent channels"""
        l = list(self._parent_channels.keys())
        l.sort()
        return l

    def get_child_channels(self, channel_label):
        """Return a list of (channel label, channel timestamp) for this parent
        channel"""
        if channel_label not in self._parent_channels:
            raise Exception("Channel %s is not a parent" % channel_label)
        return self._parent_channels[channel_label]

    def reset(self):
        """Reset the collection"""
        self._shared_state.clear()
        self.__init__()

# pylint: disable=W0232


class SyncHandlerContainer:
    collection = object

    # this class has no __init__ for the purpose
    # it's used in multiple inheritance mode and inherited classes should
    # use __init__ from the other base class

    def endItemCallback(self):
        # reference to xmlSource superclass we redefines
        xml_superclass = self.__class__.__bases__[1]
        xml_superclass.endItemCallback(self)
        # pylint: disable=E1101
        if not self.batch:
            return
        c = self.collection()
        c.add_item(self.batch[-1])
        del self.batch[:]

    def endContainerCallback(self):
        # Not much to do here...
        pass


def get_sync_handler(container):
    handler = xmlSource.SatelliteDispatchHandler()
    handler.set_container(container)
    return handler


class ChannelContainer(SyncHandlerContainer, xmlSource.ChannelContainer):
    collection = ChannelCollection


def get_channel_handler():
    return get_sync_handler(ChannelContainer())


def import_channels(channels, orgid=None, master=None):
    collection = ChannelCollection()
    batch = []
    org_map = None
    my_backend = diskImportLib.get_backend()
    if master:
        org_map = my_backend.lookupOrgMap(master)['master-id-to-local-id']
    for c in channels:
        try:
            timestamp = collection.get_channel_timestamp(c)
        except KeyError:
            raise_with_tb(Exception("Could not find channel %s" % c), sys.exc_info()[2])
        c_obj = collection.get_channel(c, timestamp)
        if c_obj is None:
            raise Exception("Channel not found in cache: %s" % c)

        # Check to see if we're asked to sync to an orgid,
        # make sure the org from the export is not null org,
        # finally if the orgs differ so we might wanna use
        # requested org's channel-family.
        # TODO: Move these checks somewhere more appropriate
        if not orgid and c_obj['org_id'] is not None:
            # If the src org is not present default to org 1
            orgid = DEFAULT_ORG
        if orgid is not None and c_obj['org_id'] is not None and \
                c_obj['org_id'] != orgid:
            # If we know the master this is coming from and the master org
            # has been mapped to a local org, transform org_id to the local
            # org_id. Otherwise just put it in the default org.
            if (org_map and c_obj['org_id'] in list(org_map.keys())
                    and org_map[c_obj['org_id']]):
                c_obj['org_id'] = org_map[c_obj['org_id']]
            else:
                c_obj['org_id'] = orgid
                if 'trust_list' in c_obj:
                    del(c_obj['trust_list'])
            for family in c_obj['families']:
                family['label'] = 'private-channel-family-' + \
                    str(c_obj['org_id'])
        # If there's a trust list on the channel, transform the org ids to
        # the local ones
        if 'trust_list' in c_obj and c_obj['trust_list']:
            trusts = []
            for trust in c_obj['trust_list']:
                if trust['org_trust_id'] in org_map:
                    trust['org_trust_id'] = org_map[trust['org_trust_id']]
                    trusts.append(trust)
            c_obj['trust_list'] = trusts

        syncLib.log(6, "Syncing Channel %s to Org %s " % (c_obj['label'], c_obj['org_id']))
        batch.append(c_obj)

    importer = channelImport.ChannelImport(batch, my_backend)
    # Don't commit just yet
    importer.will_commit = 0
    importer.run()
    return importer

# Singleton-like


class ShortPackageCollection:
    _shared_state = {}

    def __init__(self):
        self.__dict__ = self._shared_state
        if not list(self._shared_state.keys()):
            self._cache = None
            self._init_cache()

    def _init_cache(self):
        self._cache = syncCache.ShortPackageCache()

    def add_item(self, package):
        """Stores a package in the collection"""
        self._cache.cache_set(package['package_id'], package)

    def get_package(self, package_id):
        """Return the package with the specified id from the collection"""
        return self._cache.cache_get(package_id)

    def has_package(self, package_id):
        """Returns true if the package exists in the collection"""
        return self._cache.cache_has_key(package_id)

    def reset(self):
        """Reset the collection"""
        self._shared_state.clear()
        self.__init__()


class ShortPackageContainer(SyncHandlerContainer, xmlSource.IncompletePackageContainer):
    collection = ShortPackageCollection


def get_short_package_handler():
    return get_sync_handler(ShortPackageContainer())


class PackageCollection(ShortPackageCollection):
    _shared_state = {}

    def _init_cache(self):
        self._cache = syncCache.PackageCache()

    def get_package_timestamp(self, package_id):
        raise NotImplementedError


class PackageContainer(SyncHandlerContainer, xmlSource.PackageContainer):
    collection = PackageCollection


def get_package_handler():
    return get_sync_handler(PackageContainer())


# Singleton-like
class SourcePackageCollection(ShortPackageCollection):
    _shared_state = {}

    def _init_cache(self):
        self._cache = syncCache.SourcePackageCache()


class SourcePackageContainer(SyncHandlerContainer, xmlSource.SourcePackageContainer):
    collection = SourcePackageCollection


def get_source_package_handler():
    return get_sync_handler(SourcePackageContainer())

# Singleton-like


class ErrataCollection:
    _shared_state = {}

    def __init__(self):
        self.__dict__ = self._shared_state
        if not list(self._shared_state.keys()):
            self._errata_hash = {}
            self._cache = None
            self._init_cache()

    def _init_cache(self):
        self._cache = syncCache.ErratumCache()

    def add_item(self, erratum):
        """Stores an erratum in the collection"""
        erratum_id = erratum['erratum_id']
        timestamp = _to_timestamp(erratum['last_modified'])
        self._errata_hash[erratum_id] = timestamp
        self._cache.cache_set(erratum_id, erratum, timestamp=timestamp)

    def get_erratum_timestamp(self, erratum_id):
        """Returns the erratum's timestamp"""
        if erratum_id not in self._errata_hash:
            raise KeyError("Erratum %s could not be found" % erratum_id)
        return self._errata_hash[erratum_id]

    def get_erratum(self, erratum_id, timestamp):
        """Return the erratum with the specified id and timestamp from the
        collection. Note that timestamp can be None, in which case no timetamp
        matching is performed"""
        return self._cache.cache_get(erratum_id, timestamp=timestamp)

    def has_erratum(self, erratum_id, timestamp):
        """Returns true if the erratum exists in the collection"""
        return self._cache.cache_has_key(erratum_id, timestamp=timestamp)

    def reset(self):
        """Reset the collection"""
        self._shared_state.clear()
        self.__init__()


class ErrataContainer(SyncHandlerContainer, xmlSource.ErrataContainer):
    collection = ErrataCollection


def get_errata_handler():
    return get_sync_handler(ErrataContainer())


class KickstartableTreesCollection(BaseCollection):
    _shared_state = {}

    def _init_cache(self):
        self._cache = syncCache.KickstartableTreesCache()

    def _get_item_id(self, item):
        return item['label']

    def _get_item_timestamp(self, item):
        return None


class KickstartableTreesContainer(SyncHandlerContainer, xmlSource.KickstartableTreesContainer):
    collection = KickstartableTreesCollection


def get_kickstarts_handler():
    return get_sync_handler(KickstartableTreesContainer())


def import_packages(batch, sources=0):
    importer = packageImport.PackageImport(batch, diskImportLib.get_backend(), sources)
    importer.setUploadForce(4)
    importer.run()
    importer.status()
    return importer


def link_channel_packages(batch, strict=1):
    importer = packageImport.ChannelPackageSubscription(batch,
                                                        diskImportLib.get_backend(),
                                                        caller="satsync.linkPackagesToChannels", strict=strict)
    importer.run()
    importer.status()
    return importer


def import_errata(batch):
    importer = errataImport.ErrataImport(batch, diskImportLib.get_backend())
    importer.ignoreMissing = 1
    importer.run()
    importer.status()
    return importer


def import_kickstarts(batch):
    importer = kickstartImport.KickstartableTreeImport(batch,
                                                       diskImportLib.get_backend())
    importer.run()
    importer.status()
    return importer


def _to_timestamp(t):
    if isinstance(t, usix.IntType):
        # Already an int
        return t
    # last_modified is YYYY-MM-DD HH24:MI:SS
    # The cache expects YYYYMMDDHH24MISS as format; so just drop the
    # spaces, dashes and columns
    # python 2.4 can't handle t.translate(None, ' -:')
    table = t.maketrans('', '', ' -:')
    last_modified = t.translate(table)
    return last_modified

# Generic container handler


class ContainerHandler:

    """generate and set container XML handlers"""

    def __init__(self, master_label, create_orgs=False):
        self.handler = xmlSource.SatelliteDispatchHandler()
        # arch containers
        self.setServerArchContainer()
        self.setPackageArchContainer()
        self.setChannelArchContainer()
        self.setCPUArchContainer()
        self.setServerPackageArchContainer()
        self.setServerChannelArchContainer()
        self.setServerGroupServerArchContainer()
        self.setChannelPackageArchContainer()
        # all other containers
        self.setChannelFamilyContainer()
        self.setProductNamesContainer()
        self.setOrgContainer(master_label, create_orgs)
        self.setSupportInformationContainer()
        self.setSuseProductsContainer()
        self.setSuseProductChannelsContainer()
        self.setSuseUpgradePathsContainer()
        self.setSuseProductExtensionsContainer()
        self.setSuseProductRepositoriesContainer()
        self.setSCCRepositoriesContainer()
        self.setSuseSubscriptionsContainer()
        self.setClonedChannelsContainer()

    def __del__(self):
        self.handler.close()  # kill the circular reference.

    def close(self):
        self.handler.close()  # kill the circular reference.

    def clear(self):
        self.handler.clear()  # clear the batch

    # basic functionality:
    def process(self, stream):
        self.handler.process(stream)

    def reset(self):
        self.handler.reset()

    def getHandler(self):
        return self.handler

    # set arch containers:
    def setServerArchContainer(self):
        self.handler.set_container(diskImportLib.ServerArchContainer())

    def setPackageArchContainer(self):
        self.handler.set_container(diskImportLib.PackageArchContainer())

    def setChannelArchContainer(self):
        self.handler.set_container(diskImportLib.ChannelArchContainer())

    def setCPUArchContainer(self):
        self.handler.set_container(diskImportLib.CPUArchContainer())

    def setServerPackageArchContainer(self):
        self.handler.set_container(diskImportLib.ServerPackageArchCompatContainer())

    def setServerChannelArchContainer(self):
        self.handler.set_container(diskImportLib.ServerChannelArchCompatContainer())

    def setServerGroupServerArchContainer(self):
        self.handler.set_container(diskImportLib.ServerGroupServerArchCompatContainer())

    def setChannelPackageArchContainer(self):
        self.handler.set_container(ChannelPackageArchCompatContainer())
    # set all other containers:

    def setChannelFamilyContainer(self):
        self.handler.set_container(ChannelFamilyContainer())

    def setProductNamesContainer(self):
        self.handler.set_container(diskImportLib.ProductNamesContainer())

    def setOrgContainer(self, master_label, create_orgs):
        # pylint: disable=E1101,E1103
        self.handler.set_container(diskImportLib.OrgContainer())
        # pylint: disable=E1103
        self.handler.get_container('rhn-orgs').set_master_and_create_org_args(
            master_label, create_orgs)
    def setSupportInformationContainer(self):
        self.handler.set_container(diskImportLib.SupportInformationContainer())
    def setSuseProductsContainer(self):
        self.handler.set_container(diskImportLib.SuseProductsContainer())
    def setSuseProductChannelsContainer(self):
        self.handler.set_container(diskImportLib.SuseProductChannelsContainer())
    def setSuseUpgradePathsContainer(self):
        self.handler.set_container(diskImportLib.SuseUpgradePathsContainer())
    def setSuseProductExtensionsContainer(self):
        self.handler.set_container(diskImportLib.SuseProductExtensionsContainer())
    def setSuseProductRepositoriesContainer(self):
        self.handler.set_container(diskImportLib.SuseProductRepositoriesContainer())
    def setSCCRepositoriesContainer(self):
        self.handler.set_container(diskImportLib.SCCRepositoriesContainer())
    def setSuseSubscriptionsContainer(self):
        self.handler.set_container(diskImportLib.SuseSubscriptionsContainer())
    def setClonedChannelsContainer(self):
        self.handler.set_container(diskImportLib.ClonedChannelsContainer())

#
# more containers
#
# NOTE: we use *most* the Arch Containers from diskImportLib.py
#       this one is used simply to print out the arches.


class ChannelPackageArchCompatContainer(diskImportLib.ChannelPackageArchCompatContainer):

    arches = {}

    def endItemCallback(self):
        diskImportLib.ChannelPackageArchCompatContainer.endItemCallback(self)
        if not self.batch:
            return
        self.arches[self.batch[-1]['package-arch']] = 1

    def endContainerCallback(self):
        arches = list(self.arches.keys())
        arches.sort()
        if arches:
            for arch in arches:
                syncLib.log(6, '   parsed arch: %s' % (arch))
        diskImportLib.ChannelPackageArchCompatContainer.endContainerCallback(self)


class ChannelFamilyContainer(xmlSource.ChannelFamilyContainer):

    def endItemCallback(self):
        xmlSource.ChannelFamilyContainer.endItemCallback(self)
        if not self.batch:
            return
        syncLib.log(2, '   parsing family: %s' % (self.batch[-1]['name']))

    def endContainerCallback(self):
        batch = self.batch
        # use the copy only; don't want a persistent self.batch
        self.batch = []

        importer = channelImport.ChannelFamilyImport(batch,
                                                     diskImportLib.get_backend())
        importer.run()
   07070100000109000041FD0000000000000000000000016290A0C100000000000000000000000000000000000000000000002700000000spacewalk-backend/satellite_tools/test    0707010000010A000081B40000000000000000000000016290A0C100000000000000000000000000000000000000000000003300000000spacewalk-backend/satellite_tools/test/__init__.py    0707010000010B000041FD0000000000000000000000016290A0C100000000000000000000000000000000000000000000002C00000000spacewalk-backend/satellite_tools/test/unit   0707010000010C000081B40000000000000000000000016290A0C10000006C000000000000000000000000000000000000003300000000spacewalk-backend/satellite_tools/test/unit/README    These tests require python-mock and python-nose to run.

You can excecute them by just running 'nosetests'.
0707010000010D000081B40000000000000000000000016290A0C100000000000000000000000000000000000000000000003800000000spacewalk-backend/satellite_tools/test/unit/__init__.py   0707010000010E000041FD0000000000000000000000016290A0C100000000000000000000000000000000000000000000003500000000spacewalk-backend/satellite_tools/test/unit/repodata  0707010000010F000081B40000000000000000000000016290A0C100010B89000000000000000000000000000000000000008600000000spacewalk-backend/satellite_tools/test/unit/repodata/2c3714db39642790c8a1922c6cae04e7b95af59b234af60f15778d5550e3a546-modules.yaml.gz ‹      ì½k“ÛHr(ú]¿‚á'væ´HÕ»PóÁi½«µ´+fÖÇ÷Ø¡¨g7%6Á%HI½7î¿YH€M€Ðì\Ù«	 ³²^Y™•¯étúÄåv{ï—›&÷¹Û.ü½{òÉ¯‹y¾üaBž8½Ñ?<™L–úÞÿ0¡™šº~›µ×÷?LðŒÁ¯ý÷¢D0bHàg\Ák›/7þ4 ‚DœÃ3½¶w?L¾dâ½ˆŠíý½^?¤&/çko7ùúaòÎ¯÷ä;£ÿ=|æ|a×óÕ&5öÏSx2i‡˜½œ¼~ùüí'
íß¯s½ÜLŠôv6™ü|ç'éd¥íG}ë'ó¥]l}B¹·¶úP¹ˆä>þ»˜/ýd»™/æ›¹/&!_ï¿r÷óåFFGúf€i1·~YøÒrtË¿§“7¯~N¥±Á¯ÿáíëOô~|¹w?LþŸÿ7õyå—Î/-4?›NÌv¾pkÿ·-ôº(!a‚rç??Lþ7FÿU=Z-ôèƒiúß~‘Íè¬zsÚü.~æ‹_—ï×«ûbGžÍíÇÕ|3Ý¯ƒ8´ù:P<©Ë4óî|GÃ@LÞî‡~¢WóÃ>ü0ñ–YL©ÁžALk›9"ƒTHDŒ3j×“Ý×ñ/ÁžNV++ØÂ?T¡/O«µö_iímæAÛSš§uš§èXÝ0jÙTÎÊÉ{_ãää†K%<çnV¬íÐû-pŒÀy³½/C>ª"ß®í(t}ò‹ëÑ,ü­¶ÓMž/Š‘±8r‹¹ƒºˆeDªŠåýj$,WRµzØÜåK{Q_Šc™Ç]úd6›=™¶A@WÐÛÅ¦8œExUœØò¦qa?Wë¸×Ž¹Å‡À"óÎ—ÿu¦Áî3¯µ•Ú‰‡â‰‡$ƒ?$¡õ/H/2¡Ã™ïOú“.Yú$.ßŽSî9Tp*=‡C,žm%ŒúpÔÏ§i:Ÿ"¢Éç»¸ûy)P›|âÖóO>Ž‘õEQvesÆ»È‰KBÒN4€èõ­ß©èœf×*ŸÇßŸL›É‰
'9œëYÂÏØ{8?.óÏËÉ¶ˆÌ>»>ÄC¶lž¥îèÓ6Å,}Vlã£HJÂ¸ÜÞ8háû¸™î.>ÂëÅ"ÿ<_ÞÆ.Æ#iù¾†Þ›ø×Æ›Ô…õvÙÒT9ÀÐœ™A/Š|bàˆ/`@| WÀ-"ê’ÜeÞ‚äi’æËb£—Ö'Œ/&ðäÅÍÍQ¿Þäk?¹õK¿ªžîÞµ	í ýy$}X¥1«f,áý|7‡®@“gö}?¯O[¡aÒÈów¯'d†.B>À°TUQ2cØ|°;2„;„tP? ©À¯¡ýÝq¹o—ól »ÍfUüðìlÔ™NÛd–¯oŸð‚’	ìð×%•iµÉA9	ÊW]¼Â‹uýw"bj¬_´<-ÂéÃE~Ë>œ>Î×ùéÃµ¿õ_VmÏ‹||éôÍ½ÐKR{^ŽD›ÞÛòfé7µ§qZe=½]ïß‡rÔŸÜ×»ú¡ Ž_ûg¯ö˜×V×ñŸ›¤ÅMåîÚ£/‡i!æ«6	ô^ÛuKðŸ÷bâÿxÿy¾¹{ÿåþÓò}Õ+8XŽ^çÛÍ{]Øù¼ûí'½ .ÐúÎäÛ¥}°ºØ,|û6šíïœ…îxå‹›|Õñ2ÿò L¥ãåÆµ¿ðv1_dú;›Îœö—0¶EÇ+ØÈËüKûËÐÕ°éxq»Ö®k$o×yþé¡ýÝLnWcwÅßÎ´¿›Ç“»ýÕ`mE×Ì}¸¿ëx±ì˜Ð«®qoðöw°gÑþ$Š.¶íoý}šÑŽÅ ¯AƒNó¡Øøûö¯r³n±:³ª×~•ƒÒtëëÂv4V,áìì˜ßbµîFXtÌEd" 5ÁËóº«Þ‚éÅAgýÝ›tnNž¿}5{òäwM¥•2,Kg™rÂ1£2Oü´†+ÌË„uxU²®µƒƒe’ÄÊªñ]vBdM£½H•2ÊãÍø×Åq8so˜¼Á
ÓTî¤ñ¾`½7ÂÀ¨ökîJá?Š* \úu)gÔDôõ´Ú¢	Ôø„œ<IWªÝtáÙ‘æ°»+£ˆb‰	mhDS„-ag4‡wâícüV¹ƒƒ46õ´\]6ÂŒ?ó•Ï'h†ŸF)Ø>-A'ŸN^üôê—§©û¿8RŸNüÆFÑÿ³_,â¿uÑÚÑzYxÐ8¶_J‰¼8aùRØä †‚Bð4½ˆÒ<°à?QV&Fs¹¹K²i›Ês¶{“~ý«ú–ðŽÓ¿}ßJõá'¿ð:Šï‘ÓL~úãï_O`åŸíöäå6q°¨Uß€Œ
Çƒ…Mž°&N_¤ÞÏïãŸ°Ù sëù:´˜|Ú.¢&av÷‘ß½øëïAùéïžß§æA¿éõK¥ì}÷ÓLoÖIü4w¥Ê±¹•¬\©ådí‡Ýå ñl€hP¡ŸõÚÍ&ÿ=Ó¢TtâõÁú>1ÉIá}M"·Qi™­½»Ó›ìªgU?Ÿ­rÐFžmW°y|ñl?Ü»=s®²»G%µ¿‡Ý©Þæå&ö°ÿwbÿµ"õíÔÛ¼<+ã½ël„‹×Ôœ[X`[“F&ðè§z“ßÏK^¼ãTºÜI;˜Æ‡³y©UlÖ°ºâÑsæË5©jWîŸì¤Ó7 l|Î×a/LW‹xU¾YÏ·ûôã),ÃõB?„Ã7¹OËYpÓ»<ÿØx±½q|³T2ýÏÈ)ö?Jrø¹˜¯WhKä´ª†õ¾võôñ~Ö¾(*ìIg‡;º{ÒÙFWw?¦°<>î5Ä}ç]?îøõj~»Þ„­âQQ«ÄvÁzº|ºÜˆ¬ªä	MùËã †Ke%B^YíˆP”Ydµðœ0f2/ìª‡ U.û£	ƒf§$WÔa$ÑÂãeÆÛŒ0Šu&½Óœ1~5Í§‹oê)¥Ä;Ì˜5Ø`Ç$AH0ìtF1'¥Êy/SÛ2%ÂÆPO2€FgMæ”Ò.³k‰‚À$8Š„JfsŸŽ@p°ÊKõ–â’ä˜6LÌ¹EÂ™a<”àc2ÉÖ â‰àŽÂ(kç´	°®	Rc$šhžI}É%Xí0hd’Jª]PÆ(Ïi†Q†` íRE0C‰-ÙíÌ`®ÇÞ…ŒHeÑ†*ÉˆUˆcX½^8Â†Ï€È‚Hb ýRk³€RžrK£ÙÀ°ƒQEdð+Ï§åJQN2ÄgÈ)GF6 Rß9«¤<ñµ³sj3’	ìƒpÈ‹Œµ¨SB¹Yð˜e–+MF¾9¨Nä¤Îói6¹ÐGžÔ±QuƒvšxV»ˆ aYÜáh(GÁV³„Åw"
LÉd†	›¡)Žƒâ™Cö,ÆÆ½Ë(SpæÜ‡Ž£™œ±)‹h•7ÓKgvT´í#Ú‚¹¾¾jû•1J+;i~ŠžQ2!–˜ûî”} ‰Âj˜ö¡„§ËÀjó{1ÌiSõYŽ`?}Q4…°4‡tÊ/ì÷ às7ìÕ˜jË²®c1¯Zˆ˜OI\ˆÄ!“izá€ì<q‡Aû*˜«Aw)†&þLK$D™Ý“žx½œË¡XºÈ9ß¸(«q»iuÿ\Z:t}='ŽB˜ÜP¢T6«ÙPmd4eŠqÐÕ„Šë¦kšþ¸ÅÎ5k KšÁž.fkËgÎJ›F—]¼Ö¯DtJÔéì†õh¯Ä[j-NÿÃàFÑFÈ1ƒ_ƒ­ÇxÐ›Ò1‡§ûa·Ìcc/=È¯DÔITóDkít†w\3%é2SB@Œò'ã™)EÝŒ‡ñ;^½‘Mw%Ò¦.¢­Æ~åËdž{~ðàƒîÄq:Xê&+}ë‡Ø0/ïû?Ò†I¾Ù0K6ÌøãuýMùã›yófÞ,#bŽ‹åÆ­ÿüÊFÐ£öKá¯¢jz¯écò,ŸÅbòÁÛÈ„ž\j=Ø2%ëè£VÏêüùvlºö÷ùÆ7èã1üoh7µCÌd3¢£:à˜òÔ˜ÀâÅ}tc“Ž zÛ ë{dŒ[|™e5Sq%Œñ «8É”Ê°áZc!‚ln(î†G F–1L¢@N2i0jŒÑØs¬¦W:ºEZjkh–qé™§‚;«„¦qE.d&9÷Ñ•q¸±ôëZ¤±öZØ,sÖ(yÈÍp–Ù'œ0ï”Sˆr¶LÔÿj‘&0õL{i4åaìƒ1Äc$•J
†2ØsC	ÏbŠ¤ôœ#¥©…¥ÀVÂ«àÆ,„ƒ²l0¡Ç§Â‹Ö:å³§ˆh–ÚpG´Õxˆ¥I1Ø	d$+¯bRÉ)'ˆ{(¨§–Ã˜jGB„P{r.(÷×±òÂÎgšetdïÜ2¬…§p\`Ä´àAeí`&0®•×aƒ¥f+3‘a,-Ž+˜ÆM†½t¸q¦¯ØJ‚ÅÇC{šÇƒSK3npðI–	,üáç D¥4É–c¸#¥°`N  e´ç##”’Ñ€
‚ÎÃ»À¹%]h7Ç ßO³ãÛ&ÕPžhOD‡½üÀìäWa©Ý‚Å“DØ0\×«¦àQàfhÂ	ø‘I¾/xÃP-¿Ñj‚¢µéëÀ]â“@Qò èÑë¡h.w à)ûÕpô3qížw(ê#†O±Ìo¨aAp}«ÖàLãçìG]sv1Ì7‚K<âFÐ¢Å@Î²‹Wþ ðË]	FÀÕðqé…­f‚Ñ|²ö$7ÄnL¤j7Ý^ ÷¸Áö$µ³m(šƒqöM“lý–é*£Ëá¨îàXJXààš¢YrpdÄà/?{FÁX[x—˜À»×{Ãr-Ølmñ‰I³£åÞ —˜¹¯ÀsdØî©a‡~ôØé°_÷;®:ŒÖÃ‘4,ÕƒÐ”[e‚#³4›‘)MN´{é‚¾
Í…¶íqÖŽšáX+õ5a#«(Ûô0ÌIMP øNÉåöŒÍk¹ß>wØî&¸¯íþM^l@§¶Qãþn/@!¸ý¾Åœ½7eï¬ØmÖûn›ö0{vBÚmÜOKël2ë‡hŸ„Ž,â/x˜`mú1È¯uÊÔ¿ÃmÝKGó]ˆÆK»8ùËž§g‹ùý<‚ÔlóuczBÛfP¿Ëa¥7ñ¶$ÞÅxh1¿¯à¢ÀÒÞÖµ9‡j¿Rãøï^¦‡;,§ærrSûñÍvþÍvlx;é1W_<Çö¾YÖ[æ›¡}Ðý¹¢ÒiÏ#TIÉ	§™V8 ;nCž²l¸]btC»‘R#…7ÈZÇ™wžP&ÁZèƒ1Ypæûõ8†v	·1mÅŽj¥E†Œv*š¨÷"xï°öfp\ß×0´”qa¼`œr‡¹ˆŒ¬ä&«L0œýFíÜXE¤Á
'0Ó„ƒ‚³ÈÅÌ¼aãœàÙðÇÐŽ)…Ñ…¥Ê
‚ ™žz‚3|Ê$ÖŒ`ª±¾‚I’ºÀpsˆ`†f°Õ´	FeÆ0åt V"nˆ<š£û¨à¤ÁULX¤ƒáÒšà	œúÈ&$•°‡Oÿî´TfÖÆj`¾”ON¢«e˜ou$xal@ûj#-WÆ˜À™¡CHqŽl†OqIÞFª§fÆŠ¼G5ñÈ	JB@^2‡‘òŒ"+dð&FŠÿã]3<çZ·CL£³ƒ*ì¸ AÉÈ0'3BƒœÕàÿ`×Ï˜•l$N±Œ)E“àpeH`!váÍ5C36^ZÏeC2ª0	ÃlæT8F-‹ƒ	Õ5C+aš#Æl§ £Ìo‘¡ÈD57nøé1¢kÉ”5ÄKÅöH()¨"ÁŠ 8´C)Ë5#òß2¦^€Ô«Aü±ðLcüù€‚¢a—ºfˆ™l¹»Uê§,Ã]®^âšq–ºkÆ@<5×Œ«0\×«ß
"gxzˆÛ@pÞ9ãn„|%¸c#~m†é^ƒ¤˜; M›çm>çæ`(šËÝ;Ô¯Šk «ÈØˆk†“¡¨k®"¥õÄðyÉÞS¤Åé,Øö2°6O‘þMyŠDP÷é‰b»,£6Å©©§³»—Âœ6u‚:A=Ú´ŠÏ.îù ðKcFÁU;[{bÛ)« «Ÿ´z	òË‘õ 5Ö¥'`{£õ¸Ë~®ÁS–ê¡M;Þ»\ÊN®@ò81Í7ÆÚºë‰ó û${óIj‚ŽAêÖÖ ÕÑü³L‡Äõ8êÃ:Ûh8ö“1ËÎ=ìmÞae(	m2ÊP\{_µ+ŒAËNsé?Ø­¬Æ¬FrTk=NÕzI"o3‰fk«.=–{ƒ^â¨vž#GµÞ˜ög—½-~j½eå7µ«pì½Ô†bÙ9©õ‡o8—JßæÜ5~½a/òF»QýÂ¤ª¦óX«£twèÚîwÆú(â} Ïû]T{#¬½_k7ßÖ½Ïèì´üM%6Êú¨ÃÊiœiêÄÍáXw–1Ô¬¤=3ÆÐsUgÿ8¿½›®ü:å YZŸ\‹îàá"Þk.Ãüv»N‰\"9“Ÿž¿|õË»ªìë“vÇ±Xüî_àãêÛª,íÛÒw¦,áñO.iôo_ÿ®´Ÿ6?K-ûª·Åü~¾Ð±Ý¤ˆþYk_¬ ÅTüïõüÓ|y[€Ôõ»bïcµ/‰ûïw0ouš‹ÞeÄÑ“Oz*è¦»]?yëÜæË&-Oã«‡„ÕA›Iq½Êô$V³‚Ê‰T×.æ]™M^m&ËüóäZ¸ß=¯7[ éå®¡„4_×ºP:¤Å[æè;— ëƒ6+«ÿÔºS–~‹"^»Lôˆ]nvY}œöÉm¯,®7¿_Á²Œî ©·XÛ›Üæ‹*mPôáóeYzï§y1!™à“ï"Y©
bñ}êaªMXLþ\^õLž§|2Õ‚(&ßýùù»	ð
_|Ÿ°Æêå’8¦0&Þqs½˜nW±PàºHSÇ7þ«VdÚÅ<Q®?iX
¦ºàÿîM5U±^á|í?qðç/Ëù˜¤(4îüüâôL~)¢O_…¶êG“ªr$ ">Î×ó¿hÕ“êv+UN„Ù¨µ^Ìÿî]ÕÈ|	‹õï¾cRÂú*ïîýt?›	c9/q¥”Ø`yxèa9¹äyGÇ/üfç…XÑ“³.ˆ°±Ò_-E˜ÉM¢ñ
A˜Æ0?>#¢·óßc ÿuÂiËiÝ!hp¤VVT}ØtÐk0ÛV7´ÆÍ¥æßòx_8°öðãÚðÓ§§W§OïŠ¿µàƒÔò4/6·0”mðxsú>ï]ÑjÏ·°)þòòÇ-o6óÅcÅ¯ŸwÍ’§m¹ôë<·>9;ÿÊ„cE?c½ZESÍdŽcG¸æ\¼Æ¾jY±Ú8DE$tjy`RÜ •c	ªßö†m^ÚÕ×Zýê÷ZDµ+à«P•7_×!Éíµ(âÞÇhƒ÷õ(8F£(ñ”qŒFSdh£à¢=3ÓhÔEv>
ŽÑ(*’‘°ŒFÕî Ïx”Åƒt$×Ñ´»»ò€jA3”®+5ô[Ð`žÔsºžÄ„gW–ºlm¤¦•£¨•c…É0ã˜‰ºVÎ0Ë\páŒVñœˆ2í?ýáÕ›·“ïþðç_&¯îc]ù7z9_m¥² ÒÕíZß_êÙ«ü3hTÛhuñË$µóºöòŸ ÄÍ“æ°*!Ÿ6‹¬ÁkPA/­"bŠú…^'Pœò²ÔzRûþs	V ^ìõ®ÏÞ¤ˆÙäŸÎ+$1QeÓ!ªzüºæTýzZ‰zÝ}z?ð'5zu©.ÓQ´}çsId¬ó>“—Æ2µC^áôùóçY\©Â{¸òÕ³êÆ¡5¼©	Û¢üú$À©ñ]	ûÕ¯¶BP ©û›š’Ô|´ælU»öèO°´âØ?ŽVÙG•ø]«Š’vØ›´<gM…D9gµ&HnœÁ2(„·Fsg…°ÃÔjƒÇ×+$å‚¹ÍM¼>#Ñ{XÖG”‡Ã…ç@%3ÚÊ˜|sé¹ñLo©WŠv¸‚_Aøæãp¢EP\¥yä>,QÃµ·™4Ìz*íÃ=Ø1¹ÚžÓÕƒÕóu‡ëoùÍÄÌ—é¦ÚønbªN7{B)Œ2A^SJªya|¦°È–YÏ¨Ï(oíÉ 'Û3ŠlÚ Ñ_-‹Îs¸‘i=–¬¦âÆ¡¥Ð¤¦ÂöjÈÕ6­;ÿGQsýˆ$²‹+Á·ÉãYÝ•Ð×Qq`O¥‰:;vˆí^T½A»¶¹ó·~y%–#[ýuxêW`*¯V®Â‘nV†` >VBÆZläò9í×Ödc2‡¡8šÉ+Ô§q(šýD°›ÀÇÁ[|5`<ã9¶sV§SÑ£ý:‚¿÷kP•C2Mu8_ˆbËï!íÁ“Ó¼#Mq9=½VÃ<×\‹ý—‚3®(«kš˜JD@D:£iþ!?V0+3îòÉÏ‘€¤{Á!±Öë¹VÜa—±âíÖ ðäe~¯çËÈˆI(†§™è¡óÔ'§]mI©0žœÑE{ãóbs@ìüâ“ooæøÑÖ=êz>Ý·òúäMõóœ¦”Èj•ƒŸOS¸õë¤îG›,œê.á>Ý ú­¾= 9À‰Ë˜™P17µ
–hb„²ÄÊ¼j·ìªúz´jÚ:óÆoôdêq¼,‰Ý9|_KôRØÅÄ/“{B¹kŠ#%QkA}Rp‰¸ &ÄHT!­!DyIXÔ?8Ð¯œ²vµ¤"þ@m5#qvam¯“ƒŽ½ƒýw¢Ùj–9
zVæ´¤Ôi®5±’( :Ö\Òæ‡ºÖ	¤žQPÒzK¬µ{Rã)œ‘RÕ=±ú@5Î”°yºGQó»ê‰¤¶KÓ±ÆbÖ¾S—&ÄoF–Y/ÿ5 ø¨ñ”¼gHÃ½ Û-ú*øx»u1‚†„T!¸Ÿö*k½sµØÏ«¨Å6^ŽáJ‘(Þ º'õkpvrŒÂ³+%¡öV:\à¼‘é"#1õçD çÀòKþñçŸß\DÚD¢êÃDPó‚ýéÄ‡0·Ñû¨ôð¶AHšÇC"á­|Í‰O‡¼`ý=qFË¹ÕqÉœÆb¦ÓÀ.šaŠ:.›Íßë·üû|±Ðýnœw¢ökš@SÒ±£‡‹áøÆû}|NOŠ¢¼Q>sƒÝÖfóBûb:’ó—~¤V¡ò@Ä)	Ô;xNÂKÀí^mÑ7E$óÞ†ŒSA<8QS£d uE¡zni—È0ø2|?‡­äÆÝöŒì+òE)®»ËÀaê&Z9§bØ,¥¡Ž	•)Šµlí¹ª÷í£ýÂG©(ºVB\drQŽÛ&‡Äç/Þüþ‘>aíyÌ}`÷ˆ‚Ä¦­òF"Éóbk)ô8øûtF’+e¼»`3*§´¥0*¾Q28c¬­	ýàêngÔï®AR»ÿŒfwÿ3ÁaS_Œ¥!#”Xîõr«/§£Cye}EGŽï¼¡Ú3€RÜá3Ù–oVÞ°˜DŠ‹z)íÞ Ý„]‡§¨1 Såb6p OœËâ‘§tYK™NnÒÈçŽ&ãb°¶ë‘GWáØGÂ|úËLèý"a4|5Í^ÂVø"žÃgs‡`„…²Ç)®+µ›¹»¯iehÁ‰œúò5®©7ñIùá•:O³mh¤Mã‰úŽÀ_uGÙŒHÏÉ'úÅÿäÝäz3ù}Y­ç…Ÿ¼Ny—_¹ä°yˆŽEú6Å‚LÊÃ§Ã#©ÒŽRÕäWîMn2¼·ë”ž¹ÈÛä´Éw‰–w1‹‡ÿÍ¸C»ß¥ †2Ôä.µöiRŸ@o*¾:yÞŒùîÝ»¿<yþ}©x=oDc|á'e!ã4Bë]Ë»ß—½mMà©¯·R…íÈ^í\Ö÷:QÛutzÚwtçU•JH—ÈMª)½‹JùîÝ//V½Ýä)â£,ð\/AŸÛÍü“Ÿ¼ýÌnòuéQb‚]°Ö°*¶¶$ã»Ÿ×[Ÿï‡é•?¾{Yýu>týï†ËÕÁ¿jØ%>ÍÔÔ)Kô^6.‘èuðÇø8ŸÚ|íã‡hÖ;¤dÌVzøjEOÈùJ'=÷œ}Ze»ñá3¿œn‹gðú=¼ï÷»õ}J;ôL>‹‡Æ³ôã½K–•÷ój'½oF,½‡åö¾,Ýýþv=›Ã$}iWÔWú–Ølž?«:òl^Ûd jr@í6q¶ÆßìYBøê¢µ~¬CãÓ;¯›;ÐHìÇ®çiö/ËK—i¢oª]=Ÿ¥öÅŽ×·Ób¯›×lÑ2’™Ýx%¦±oÃ^Ü†[çÉM#Yc·/ÿ¼‹¦i0xóâù×à¶1wU¦í3ÁY?K;Y!Ç}yñ<õa™uð+õãl2lØ-S÷°t&Ed´ªï/×óO•)ìÇW~¼b4ãœDf}_®þùròúåó·MÕ"ÍŒ6ÃÜ’XuÈ1èìŒƒöŽ½Ìtf(œÎÔÂ>ÈÝ¼=™áO)[Åî¬Œ„{»ö›Òþ%ž¢E$=NØ&V’ßyìQOcŽl¦³ÌH¦?ç™ÀÎZ¡…É,¡Ãco°]æ°Ý Wº>ûªI%¢žÆ¼e,dFeÜZ’)“9šqÍ¹ÁnG®Ãr•á8ÐÎoÊÈèÈ_wÃk0Y 5	÷AP+8%[Ë¼sÆr™á€aƒ¼érˆœ«3§ù²€ÑÞ“å!j¸\ÝyˆþÝï_4îá’lØÆ¦Žúè¼•.¦…2X)aèŒ‡äµ*¹5Æ ›Q6Ø|Z%0ùðÙ®V›v÷Î?½ûËŸSÌð‹ôMåÖ>ù9ÿ2V”“£ç‹j?5é×R[g8Îìd‘ÉèšA¥ÀZ(LC2‡‘TFµÎÑµ€?:›TÉöíðnú¯ÿúòÅÛÉwpÔ¿Î‹IúøûÉ¿¿ûÃ«öz²™!™a™÷98Ð$¶Jñ€‚æÁÉ,¨ ;žšÁÙu+²ÿ¶Ž._­DÿÛO“ønrë—çëýZÚ|Î§ñÚ1F\Ÿ†f6;ƒ]4ÖÖ*bn|¼ð™	„Yª3¦¸×
Ê»ZëÂÃÖÌmûjzWÛÿŸ}ôÓR ß”ªgxPÀ¼ŒVNi½“Ø»xÑ.€×Š€2KÁKÝ~ñ>˜É®¶…9ã=ùåÝûýl­:IâÓaÝdÈè'ÂIsg<%‚dÞc±ÌdŠiOÚo²o¤bs-çíÑË/@@€_f¾ˆšj™nª<,‘MþVÛ‡Â×ìM†Ú(ït,™ÓÊ†À3`
Ra.$u&Èsð{ŠªÐ—Âó°¹+îÛW ¼û³%T—‘CëÉÛ}ñîÿÂxòG½véí;o·ë¤ú·°-#RR,0a†jG¹uÄ"¤ô9š9ëé0·–sù‹›bW¼&Å3ÚâV‘‘å1¢Z×ËoÜCchÜýŽëpÿÛÛNžKéoÄ¬-¾®ÛL`Ûö0 Q¶‰9£/1Ç@’Ó›«zdÌ•»âRØFGkàUj×±4º\ÃÒLy9~u1-](
}o.ÒS$×Çõqœ=sŽºr–J&NOt¯ä!š+óX7FC%ØtBž]:éáðIÿ:ø•«jw	põâ:Ü&\KËîèZRöx®ëÜA¥J–<kIHÜ±b{ƒv5Ü4î\‰§f%ï‰éHK›¯5zÇÙr¤ùT›—÷ƒ.€åÑeó„úóÀ¥è?-Ó'·ÔY*»qÂ	‰8iK}yÅ1¾Ã+´ßùÚ…e17×¢èÇ‚Z±ô\­8z-ˆVIãÙ'ä<?­­ú¬ªsªCi(–^ëóÃå#PO‰Y©Påô‰?­Á1¾É4G$4ò$õ=Ê¹ƒnfŒ¿O-q|oL¥R–øb)»\k“Mö~’oŒfçu1‚ëÍæ{J‡¯0"”—0+Ë9âÚÒ€ñ“nËùÞ^±Ècp…_ßï¯<Êæ¾ÙÈ³6òôÑÏ‡òLÕBÙM`1Éc•èj‹8y8ÌØ®§O®7µ?bQÿÚÑ¿YÂ±„}cp«Wø‘¹¸å¶äÌýÇÉMBÛÝ@»¶FîÒŠ»„ÖV1´C$l“ÑZ¥¦nQªU<‚‡01›±úÌäc÷‚ßõÝÁµä‰îÙ¥¦ŸQ¼[Uén¥öu÷Dÿ;£XžÕ;´ .}âX4ëùÎ	qM¹¤Kbê‚Úäš'ßüþñB›Iå”"£˜ÐÚ
G˜5"¹Ê„V~ó(?ÿæ7ÐÇo@¹è¶‹5—„yÎT ŽRˆ…Å©òÄjOu­ßÀ×4À{/˜g"h†8N+ª´ÄÚè€¹áy¬áÃÃ©~}¼Êæ¸ŠiÆypN¹ÌIžùÖ™!ÓÒ³q¹Õ¯n€×0,C©¨—Ôd¼ãÔAŸ½%°‡FÚ™qWä7üoË ß0øžÜ>Â±qã¥D#ñˆÁ÷<ì¥ßóXz|‡‘Ó0øCqdðí‹äºñ¸~ Z¾=q\d¯Å7Fi¥”¥ƒíµ5—Úk{Žç‰½¶üÅ–¯Ž±¸Ìvuø1Û@Çþ>cwê= §v§(zâ{ÏãúÌÄ`{ÏãXzÍi{ÏÉRº6Änù±°zÏ¹Ý¥=š)2£'wkåãk£êÎ4W³àÒF ÿÇAò¨¤Ã f'™§ËFð×t']	˜n­?×ÒkWqüïþú‡'í‚We~‘O	Õd—V{“uçë§å%8|¦“4÷‡êW›¼¼ç~µˆŠ`’×Ÿ‚Ð´ö‹—@ÉÓ˜ûéµžü¯§)1AÔ¿Ó±æÕÒ2yguªTõ£D÷‡ßéßOvW˜÷z3›ÄROóTÏÄ”<•½‚ÑÜgOêj•¼DýžßÆBÝeý¤½)ÆS/owˆË²O¾ø¸ÉW“ULWÜÁ³'Ošµ¿¾O…´´û+Š¹8Ä[Äw03Sí'»È—ÑŽ¡«;]b‚¾¦$¾O'~cg¥Åá6¦8‡^§‰ØhŸ£†]R‡MWKhË`•xR@ˆ*Ë{X¯‹‡( Æ©›,awCã»:WñìYø/8€î¢¶\
ŒÅÓ_¼‰ö3ßÜëU9Tû‚_Wwšîªœu&“ÙY ªzO/^Lü'C3Ëà_'/z‡å`·±“‰Á/Ÿ-¼^/»2Ð€ð2[èíÒÞ­´›-ýæY/\ž…¦Ô~-xßu¯¼ã×ÿóè÷áŽv÷¤° o=9›Mð^ÛuÂþ?ïÅÿÿñ>²‰÷Õ¨Nð#÷”;‚¹;Êg³@¬S"v£Î!%-2Ôhfi(ËÇäÊdÜå ´ß?nA{MåþÒKáÊ \ízºÚ]¾]Ä²M,h ›ø´{GWVX©ˆrŽz*­#T\GC]²blÍª¢1É,ñ::íaSÝ‰n¼ kÕp[ìÚÁwÐM7‰+ñÔÜ$®ÀT¦r»Å§¹ÿ<Š+§¾rÊ›UÇäFhJ„ãáD¼&}€ÇIéöAÒUÌbº.·VM\"ƒ|tÂ'ËÇWJg—6Ý^fþ¤!©™	ÅÏ–YùQs;©ÚšÄr:¥0ï“ª{´?UÀàW‹ê†¬èÛê~‘=_Ñ#ð²÷Lú!ßnÒy{Úê¶¼Ü5ÐVpu&Ÿ×óÍ¦”Gþô×7û«•|<ëšpe5”3ßõË¬ÛX-ÉÔïÏ9‡©O×9=ÿô0]ä ·×_ÜëO~Ùx²WOk ÃÎqX7ïuaçsØS°q[Þ‚–à`õ=vÎŸv½õ\ý]ýÈò»æ¯O¦ÊKeF”Ô&žûgÖ¿‚sŸ¨C5‘qÌŽ9Mª2=ÖùcpŒo¸É,FæÈ5òt~E$#hÎîí“_#y{;5L*eYRŒ—¤‘|“`g%³ç’o&þúfžÒžš¼ÏªÜš©3I×véæúv™›¨ƒî5Ê¨»þ1ß«¼ä–À;Øó™fv5²ªÁ+Í[€õ`KÕë®TSwêeÉœ}Y:¥IßÜÂXæ….Ù@KÚ=‹XO¶ÖCÍVµ¤«,¡Ÿü$ŽzÅÐ»KCa¢ú_óÛ»Íä'o“e¥ô»KCò8ïÛ¬jBíÕjMVW ¥>±ÉwèË/"5/Ûž„u~zØÅSjYVú²É1©ä«EþPÁ<yþ¹­Mö[¿ü4_çËT>zXâ¦zzp›Û¥ñb÷î÷¥Ž)JZly'â¿X¿ÚÓñ³_R;o-¬TÑ$xtxË‘ƒÞ»y°wy3ý˜9çË¿YûÎ/vîMí'âáý¹óánýGX7éºªýdx¹/×2 == 2íœ"™±ä3¥­²ÀçDqi4á™c‹C”›J¡Ûù}NË·4^HlZGt8%š{ÄƒÄ¢@Œ2`ÊÑ™	ÈscBf˜q™nñ‡h’ç=û0]éu-ÑÌYšÚh1F„LE¿LèLKÂ,A–Cj°ÐAyD³6c_“@>xµØ8›|¥U†ŒˆUšzâ<wRcØþhÄûïe÷ín!¿{—n"ã=]’§¸vD!f(E
!J™
I!ˆ•@‹L	k°#­ä=:‰»ÝÒNc¼QM¢Ñä’qd°07
&’*¢-rÞ‚
“cñ	‰aã˜ÖÅ*	˜S "w¾ýžätÂS÷Zv”zÅâuŽ†yÇ\¹@¼Ëq.Ãž?^µx“]$ÃÕÙK.†q3^ŒDSƒ@7‚gÔb‡šR×ÍºmW[§/í<¨ÔÕÓþELµòíh}ìMXU6¡¯~è°­óÒ·9ßäå`Í¦ƒÔ¿Éû&ãúiÆ˜kòb˜ÆÒnÏîai?2{À6iM€‡1êÝø)‹ªFšôÙqƒ±ÔbgOQ4§þB‚†¨R±Ð^å,PÞ
<9S@x§Vq$ádãLÖÕ*ƒˆ†žQ«*°}ÊÒ÷ë@B‡šU‹:÷%qö÷ZQw©Þ5ðW*H²p–±C	k]£¸è’jØmù:6¨ËEô¶n•ÄÛ>ìº|jÌÙð©czãå¡6@íñzkÚŸžø¿×ÞÑäfOŸ§äOðí.ÃNºtú¢Ûï¶¬—ÑëÐb»cå.ªíðÝñÂo
OÈZJB Q	+34•JK¯0BëÌj8x†^|1vå…ÑbñéþW-`÷Hƒ1™”ãæ-þõ[^¿î¼ö‰¯F+c÷çïž×þLÇÓ#àsáþeëŽ¦¤•5Ù}u¸êïiuM´n<¬3—òIUpûð ¼äw1=·óÍ´|WzxìøÆÂþªãŸ¦ög“£A_jž¼»¤ ¸í¬£–ÞT{Ç§¶Ûƒfž±XWq®1Ñ
þ
œÁ_3H{»ÁÒ°\a·Ï¦]pWæmºn¿yHûa_n¾Ü¬á8Ÿ—W"…^Î7s˜è®Þ’L@¥`FÄ2d”•–ã3„jÇƒ5Ò³ð«õžå%ÜSGÿ;ïÍÛÉÁ–XëŒRZXÂ¥÷Q2VÀÞs,)Ë”5!ÃÆdµÝõ\Oö¢½öK¢Î˜Ç‘-Ø1/,Æab±N)d¤/¨±6ÖìXŒr¾íñÅ¾"d³SŠ2%PFd DZ)‚§Ð¦ƒ‚xêAíÁƒc&ÎvâSûýfš‡G÷>†…£­ÐTd„(K…0­¤ Yî$vRqÆéà´’PÞ¯e¢O)KŒ‚ç\œ	ƒ™’	¯¬˜(m´ÌbÝúüö:Y¹O,æœl¾™ÄšwÉBQm*A F?°c.dFA¤bKæÅÜZÊuJe™rƒ&éÌ—ÝUDD§—ÉVÈkˆÊ7³ØÀ¸ƒVÛ¬™A°qÂ_Š¢™H°’jIõº7†–Ž¥SNG?­”Tõ­ÒÐº¥õ(ûn¼pWÛ×/‡ahZè©‰¡ƒ‰€ãJ® «°5©;C¨é]ã\ý;I¿jH¯Ásž¢áìè:LÍ"³Gš× r†¢hÐQJìZïxX`ýàÚh½fYEÑIÇàÅ4I;-ÃN·!àmíGÁoxó} ›­/ÜV/‡ª­ÛËNH¼jÅo§`øZ†¡…Š«´/ìIËå¯¾ íí^;ý#H^ÍÐ=Ú´½ÝkÇ`’cZÌ°Ö/k°‹‹¡N©¼r´ è á–1Eƒ™FOà£¶?Ý Odv¶z9X}µ\uJeËd÷£·7‚Ž§z ýP´ÑÑ˜ð¾ô îj{„Ù„¦…žÒ‰âàÆR¾ÍóÛ…o2þ~ýèá´ÍÃ·_û}`;Z¾z.‡a9¥¦´ö¥¢ôië×¬‚ëæ¿ëØ@Ã³PÝ×:Œúƒ=¡Û"óMò:ŒNÁ©¤€[Í¤iKŠ?ð
}|õ´ù­Y8
€CÀM™}‘‹È½ž/îuÓ-­%Ösvm gW;­.!” $HÃýÍR$-'ç
\ÿ>¹¬óåÜ¦Ö&n^ØmüMz~ºôŸ8-6ÉÚ]”É#ôm²‰U™ºž´{”Ä¤…ÑN®õT^Ñ!®êVú7…Ì Þ*qwYCû€¸¿ïÉ¾*óhŽ%ÿDÍ¼‡…pYž†Ã÷—û¼`ZÝ]¯KÒP&e8çNRáê—?Ág’zÅ)S.xn¹ç™$!æ¯”fÂq‰ƒ²æ`Å¿Ú¶ÆnYõ`J“?<QSà>G|‡³ì†b¡ÆõJ(}!w|83¯GSIö=]ÍA×ó2âŽ³A³§ÉŒâC˜ª2‰éPÚÑÒ	Åˆa…9B¸¯_Ý›ØÆË¹Ûøáî£K¹O ¿Ft³Ö°…#“|óðîß^ÏšÉü?žVoî ?®
/€žs)UI_wÉut•åñYUêú(•,t´ qJµXËë´¿uîŠ¿-\™ï'åró¸Ø¾–C•´éÈ¤ŒÀL$U>{Ž½÷ŽÞgSªzû,u¾oÊ«
UùEZ&Ã"ùÓQÿû8$25÷º|ÿ<„W¾ÿ|¹º| œÕ*i}Î*»ÏbÉ€&% JsõpT@àô )Ï™¿Ï]«;pzÀ4ŠÆ0»8™Ü¯_ë³ß×Lo>ž–ÒÛféôGunÒZ`ºN¼?mÝCÃŸRGÙ?èçŒ½ÞÂ^„ä©SOZ0¿]ækÿ>>/¶ó+%–G@œ±‘¶ö¶â*îå]‚þòo)wZÂ¹­Xƒ_Â!säˆÈ—Á(Ço,®‹Pf%Ñ¡ÓYäÅšgí!z¼¹«Ïa`[{ó‡´Ž;£‹`¥ ÖæÛbòêÙ_)ÃŽd
˜sJ *E¦mÌFÌ½¶™µ’ ‡5¦F:5ûÚ5W[ê.i»	«Ø÷ÚïcDš!
("F¼ZÏ™ÐÜYJtpÒxÏa Hít{g¥l*×rÚ-g×Zûïé5N^%è(4¢‘“Î0ð”$ÖfZm/ÿ=vÂŒ´•ËØ;>ÅÙ±$¹¼q4#@Z]˜ëÕÀ*ÎQ»ù¸Åán¶7’r%Æ°Î˜ƒ’¶òq­=ï	ØÖh£ìÖuXu·úãÙq{oèŒdA_ÈÖflíju­à
lUÞä«pŒDJSA¹
Q¼»¿
…¿7Þ¸=–‘F¨†ïú®×÷Åíu8n‹"&¥¯„´Q4^ùß’˜3-E›QqDáC7î˜5$îQP•Qãa©£Éq=†ÁÔ\}©òÉ/Ëßó0÷.¥T˜ ŽQªß¸»¡3~¢¹Á³ÚmuùD\}]Ôl·=-!æ¬ÌZXÞÁT‰3/)ôãCÌÔT»AŽ:ûîqThÖþ.¦JE#óEçÍ§˜+0^˜ìn »pŸâœÅ‰ÞMâÏ» ïÞt«²C”›_îübòÝÛ¿¼ùþiÕ°M7â±™Ãç¿+J¡÷i”úóu¼¤I(S®¬ºÆ^f¥Ò»B˜“ÕÜ[_fwÝ—ÄvWòÝ‹—/_wæŽ*ï„š¹¨â/<Ãõ7éï/«Õî2%ýû6fª¶“—© a¶‰i]Çzˆ%­qÈxU³_áêïÃ5Ný‹vlðtGuËÛ·ÿe»‹¾<;BÕ7ídšÞ5×€ã!újÙ¹.ÉOéûFÑî¶Ç•Kù²ënEç+½XÌc¹]æ‰ÝèÚ¯ÄÔ"Ö
yäØköü'óüüûh"¥|’ßF«ØñG°eãFîz¼ÙW/´n>âNóÃ[ms÷ùT/—y¹Õ¿Xè¢óÄEË£ã¯“ïÇôv;?ÖÛ-ü$¨ãi<Ø¥&Kxhe^l¼+ûÒxeòûÆï*ßa?”“ü´˜®¨ºÿÒü½tóÆƒtûÝH*°{S¦Ði<ŠbÂÂ7Ÿµões·Îcùª:ïz‡øNÞ|XÎ›¿ŽÆ(Þ®âöåxâò8ûÅy,µL2Õ4aë³¥ŽU~_™¼€¥Ê 3Ê×p Ò²È>€†µ:~¶] ç˜‹À>T`…³Ó<J]õÇe¥ÝÈ”¹”¯šˆËgÀaòÅ¡VeóáYˆRÄŠb_Çë5ŒH<+£cCQÄ‚}ÙÙcßÄÙi|SÜÁbs•üÙFðg}›/OŸLÃ¢òiÄ?Mù+?ûøÿ[>éldz¼hWétšÚyÜ\Gp»wqp>çë…;¦~÷Ai¤9Eº>Ý¯ÖÇ0Ô¾¼÷½OáÙþiõçNäíü²µÑ´ÜWù¢UVŸ¤êªó¸2lçð´M+0»íñ£¸"skünûæƒ]4»˜5ž¤í…IãÈƒ[Ý,oC¦F~ÿåþÓò}E_{näó™“rÒfë;“o—öÁj`®¾ý[&„i}çt(tÇ«ª´IûËüž}èzõåáÖwµ·qí/<pçUÑÑ—ØzÇKö¢ãHUËüKûËÐÕ7`$°n}—çŸÚßÝÁ¼w5vm¼¦ýÝ<jdí¯>€œYtMê‡û»ŽËŽ¹þ°êzž¼ýlxÚþ2´qùç
ïý}šÑŽÅ ¯óõC-/}ëW¹Y·¿XYð{®ýua;+–ú£Ð÷‹Î×«UÇô«uw{EÇTUÒRûËO¡x4sTM’oÏ·¹+Lây7ë¢êÓò¸;MÁIÂRZæ™v[e‚bÈdšy"¤ ˆH*ËÚmHxp!ÕS¤OÏ:úB±áœ¹Œ"¹6Á˜ŒQÏ(Õº,XÍ4¢Á¶gi¯/Q[êÓ›VÙ¶sÂ‚á^)qIN2¦‚@å¼TÆjá­ìÈð:V';ŒÉÿtf¾ž¶È}Oÿs™PÔd±Ù.ÿ©ÙãŒS,cææ,K®°”Há`•¦r¿"ãÄ‰¯<­Iƒa‘M3)Lœfóš
$C‚)ød‘¼•nGëM©l½eêsDeší“†gÎ;l3™)Aò™ a6ú2­îút¬º8xzÃ4Îip`FzëX–)ØxÀY¨æN*/¬„ÎI3öj¬ˆì½ Ÿ&©»ï3ËŠ¥‰=QÒÂv¢Ñ<(`6h$x\ží|xí–ë˜ö”¦V‚®c$Îp€Nœ©à§ZÁÞÂœÂ	ÆàÿFž“ú5Ñ€×Rë„x“e2Xgr
c¢tÁc`{^+º#Íøý¨­ûfÃáNGÇ&á™…YÉ2c0ôIƒ<Á(
ÌŠŽ„üÃ{Q^´.!©L1†2Œi Ê²ŒÂd`up¤ìx¯¥šú‘'¥ºêÓt•õ´q£ÕÙ+i…&JxÌáÅpâ8˜ê5üÁBgá˜·öIº¢Wm‡È ¦VNå@bœ–ŽM8ÓÚ)­¢_²Xû*àü…íNiÃ`Ëýc!éÜùz‘œä¬$!ËõÒR'<…U
OS°N"yedèÈÝ7¸Ûi¹À62!|f¤EN-”³	ì©6 Ó[N#ïÀ´cEÒëÈ¯vË€ÍÖÑê†Å17oæ@G™7Lby0HAJze5,FÜ.þ_‚Ý7Ö£œOÄ0<qÖ‘ð°…w±Ö+‰œ¼„wDïU¼^ï½Âº¸¥$HÆÚe™E'Æ;Ã6ÑŒªè(52¸‰¦öNÔ#vŽ©eÂ"Æ}AƒÀ)ðiäµÊDFA†š£àÛy¿ŽÚý5þ"ll)sôsaƒñpèp"s!<4ã¦£=-»²u•s„¾8fƒðÂ&=¶’e˜iŽ­FVÏ´"èÈ›»¶ªŸ˜»mÑK%±° z“D©g0YûžZ¢èØì·aiÐ­V“DKï2`WÄÝt°}€	´ŒúšÓˆ!|`luôÔV4šGaª‚¡K#‘]Tj)$!BòŒÁâË@ÔþÜáyuöV¤Ñ:Ö‡$Ì£Êhøé¹6[$Œ!Do"Ç_ÚÌ^#ðîùk5VÏB†Pâ°d"&´E\9àÚŒ­’¶n‡ºƒ˜ !F£ôiXdÚ[ç@QÅÈÑ^
„`ƒÙ‘Y^Ý˜8øÂ1qÌÝ:@O÷¨'åâ<‘­L#Þ¡”.âàPagàI¦læ3bB{·EbF˜=P¶QÆ4É2F]Æ‚—^H”© ªH£ŒÐø@J™·'{ëØÊä2£8Pç(ž€qÔ½}œ8”	÷ÐIHWjøA}9õRw²Já#S,ëŽª±+U7B+#<!Íô}-\kV“:ßø Ý$$±ˆ¥éEÅÅX:	™çSü™‰áD\†¡“€ÒÕý@gr8#é&£r§KÅ¦¦x8%=ðÔˆÙùçØ”d3Zhó¸ø´ÌÄå¤ÅRKû[y–äg7Ý®ÓÕâlXnlrùøER#£î¾×PLë‚frfÐ¥©c(‡áb,ÍÎÔÝ%Ñ,æ—9)X=t­•Û%úÄ¤:=(îxhnç½—X—hVv{ª*rtƒØv·È8R|Æ{Wà©õ¦Åÿ2¢€iC=8áp4õB‹ñR/§<Nit¶ñ>€ÇÍU>¤XN/<ÈûB6bfÎø§–¡¬}ÖýµÈj}²‹š“kÙ«é³KÚR˜Ñk§`=5Ê›Xù‡_ÜZ¸ãÆs3¸Á½s-ŽýœáK¹ÍtœÙ‹0œ#ÁæËe*;5º˜ÛëÆÜ*×c)ÆèÛÁw¹t¾aTcci¸KÇã˜¤ãørÖ6Íñ*‡#ãã|u—FwÀËà[zPs÷E5×aÚ¹ïE¥~¨šÞæå)€/ç–ýÁk9OÙc…jœ_õ& /’S2¾éå©/=sÎyÌäèÑ¶u®éŸ´‚CÔËIœïK\®SGsBÊ‰Äõ~ù)ÝüÐtŠ!À©À8^Hn‚©4É‹@Ô&èŠäÐCe >€±«ã„GHG½TÁp
®Ø‡kA¨ˆ?ù^ü/þm_
¼#÷Å‹éÿQ='ô·wº¹® `…HGpŒtß‚€«O¾~|ï#»­Ïþ[EëvEæ~½˜Ú¶xØb=¥ˆ_%{6°µíåeQ¦ñ—¿ZøçÇ Î_)ˆó+NµøIŽ¼	V1Al°1‡ˆTAšhg\y•Ù`Æ6•ˆ)8áž{¤…ækÌ‚Š8®2N¤0VKH¿r_F‰˜:íAXG­&†dÆfÎQÓo'#Á¦¤•_·w¡Rg]1Rçíá<c™UcÄ™%”2Ç‰æÖc•!áˆ$Šg¿r<ØXÑQ8¦CÅZŸ…X½KœØ
«¼p’Ÿ)&Çv›ùúaC^f4ÃÄ`‡mÈ‚um‰„kŽ%F”)AQ»Í¯6ÔîÅ=c:-ì#î‰TéŒð cðöB#ej‚ø­Å± ”¢ Öj*½Ø(—Œ´ÁJ «`z$ÒŠg#OÆÈq60Ú”0f¢„Ç HäQÆ°Ç’iÂx„³2ˆv7Ôá^=I@ï8•V½ÀÎq¡D¬ZQAµT>CÖ
¥Aßò¶}Ç¬1,¥‹)­<‘®´EDgZ8J9âÔ9¤¥ÖØ˜Ûýÿ«D \z‚Œ*Á¤Èh`ÈQƒ‘ÄþcKÒëÆtl9b¬Ð„…i‰±v°epþ:á<fqòˆ´Ö{?6s7®AÉ™œg™àD(œI2÷’.c¦cì£³Òëz1„ÈAZ€B^péeÑÁäj„¤lK‚ÓØj‚ÃØ‹h``†cBÄø_dl4ö”+"†µ„q–I8ÑƒíÂåo(0#å0ìMZ)‘Ì4³ÈXË©1³R»8Èv¿ÿßX`0VË_€d¥-ÏH†AVä°ô±‰iÜ=°'+|GÉo50ƒç2„€ÄÂ‘Š0GƒÀ™W„KgL&á“ömñ›Ìà°ã12ÔKµðBe™¦ÌƒRƒ
3VHâ²±E±¯˜áè— GPŸqŒtÆHÔÿ\)N¼ôV‘±ÙØ×Ì –›’^2¡5- Q;Cie¼/È!Ü{îÆÎXñ•3@»žp#Y_`ÙÆ`k¤$³ž›¨Jý•¦gôÀje@Q†)P^&i÷
aÇ&gYÀŒ[ßÍøß 0#ò>Ä25PàÜ…ùC1²]!X¢ÊÄhI‘Í9R`¶ Žfœ°¨îæ¥Œpm‰eÄx%Úe¶¯˜qÉ´íŽª‹4&(å.°ŒØL‚Šm¼cDL“à¡ˆ±°íø˜Q]½Â5Èi±6‘Ý <Ï	öX¼Æ#ÐlÈÍÃqIÈ=­{9—£y<hC&ãB„m¨¦³E/*.ÇÒ+Aqw”Ã#”FÓ-AÚëw7ßô¢˜‰Œ¥FÈq°™‘>+a üQ¸B»¬ß¨÷€ëvÔ¯{ûûØŸoþ*LEkÈé§5v ë3ÿ=àó•ÏútºæóNú-ž^5š+K>úMÑŒðÈi(R§éÓø@,m~û¶?†¢JÞ8'1¬Íw÷2À.ÏýAMæ TE›7¾E6ÃÞ_"Iý–Ì ÇCØáƒÞc¯]§Û™FØ¾4ô?uWn¸l÷À?êó-à°ì1ƒ±œ÷ú&É¸ï8>îö}	Þ=¶EŸ3Í…žßª7-Cðœñý¦ÇÎÛÑþÈ“%'ì^{µ\­±ÁGr/ÈóÎÛ—Õ­òk»]Ï“ÔÎ—›ÍâiÓÍž][ª³¥ö¢Tð‡$ñúbï5Î0Ë\páÉ™jà»F&SPk&°V7ë¹Ùn¼›¼{ñæI‡wø(yˆ]lžNjõ &¥ËX"d/êãUfrÀ:¿]B#!/]4}s›ªhßé¥[T¾¡£“…^ßúe•Gø5µož-…½¯>oRÆt"£¯òL^êŽÜùHÙìXûóçÏ³ý¢˜ö>VÐ.Ë_w”Ðn‡ µÉ•Î#ªÙÝ ŸççÏ~ÜÞþ\~~²ÖÏºT×Vq»[uíƒÆïéÝíÇ'ç÷ß¶ô}lmWéª:^êzd3:âæÚR¢,JI’0Á.`sH·7Î%Ù¡³QwÊfä4”¡‰¹sÎ›º@Õ°Yÿo[¯j{%–}UÛáx`¾{Ábª¹{¯·›»÷Q¶Ÿ;[ã­dF›¼•”9(CsD8ªóV¡™È¼ggxëót_Uw%þM¿z9yQÆóN"9@ý¡LvËýùXm…É/µ½7ÑË]döeòÙ›]ÕíM^Õ÷>;jñ'¿xØ…Ï¼…ÕùC:žÅºêÏ–,ò“¯xø»„rx¼Ì!H¤ühÓ%—G{\ÀHoç›»­™Á›g‡©ÚüøË³–•ÑÉW/BØf;›½~^ÛGý®í‡¼h÷<z[Æ “?ýåÝïãò‹ë¯Éõ”ÐžÒ˜	ÎPJ\0˜ÎyÐãÀ¥F˜Åe‡Ex/¬ÖN££ç©/CÈÖ~¶K[¾†Éœ5;â€=3çyK$DàÌFW½@‚w8xÂœõ¸Ã472SOS’D`q|N"'ôÆqª§¨~ÜªÁ@KÀ:+¿ÅžFò)eÂé~¼*’"s2±³8hýPŠâ<!Úïcá;TïƒñZåå¡ø[]Èsn
sð6@y’T\Z[i9X£?EœÐžë›‡wÿözRzŒu©(é“¤ž¤ ®ézô´ú{s„¹(Â7‘v£_ž³:hyÉþ¬|“ðÆœþj
TÇ@µJ]Ñ»Øiñä»4®¬;JÐÈ !N›
uÂ	ã»Ö÷Eúl17k½†Ãqg¾Ÿ$ÊªÈÈIu÷RòÄbŸëµ«è-ñíq%Äß­_úõÜV_¥yv˜ÇhQ^—êSUBö¦®SW“Mí—ßÅ“Þ{«Ít¾Ònn#2ð­Yš®t*Ÿ;ü›_ÂGÏ =Ìî3XçÏüòÙé‘@°ãÿ>_,ôlíÝÞì9Ò£žÑGzTµ©&Õ;óÕt¿^Û®=¦“ï»B[ËùJ¬½z²ÔîC±/¹ÿÝþÕ´ŒNëWp½…º1>´QÐÎhû1•ú*¶ó´¦W¢¾UÈx~ì{±šr]E§9™)o‰’ÑEžxP
A!X›€È”"¥­’ÅApê+"Õ6HåóRZ?ÄK”¢I:ã”)¬)CR3êŒ²Ü	Š‘È˜¤qc¨a6´-¨Á¤Ç1l×ÇªXdÅÓšk®„!Âa@‚£1éÊ² “+¨‘\—x¿L;†:µ2M¾:ùrñðø¢ñÎà)D°þÅ>ð ˆ§£ Áƒr–ßîÆ'‡tãìC\KQ"SJ4ë$h(z#`!`OÅL5®úÀéô%¿¨‹¤× ©	¥Ñ”[)‰[r†f |HÐëñ‹³¸ŽGc šn‚~ÿË‹?½½_âáè‡xOBð#ƒSëP°–ËK¿+Ô—ÇU8ö«c8–Rg¹~Œþøõú¾¸½ˆÅµàct¤äò×#ƒ–T„ûJð¡t\©°-¡Í/5U
ÏRPQSlŒk¶¦ê‘8}t­EªƒšSsÞ’ .SXç^³ã+dì¹$F©…x•¹IÛ”»ò«ØúáÓŠü¡ªÍ`-×BZôÐRç’Ùt	ø¤hQ(¢Ì§¿ZTŠ3¦™ÝtÖ~Mõb1-Ç¬8zs¨+|ô>/óûÍïA ›–:D×7+¿^t½ûR,6Ýà÷zÞY®Å.]çÐÅ®vtïñÎuwíÑŽµv«µSçÔšôy» ]‹¥Û¿.¯I‰óL£8£’[‹M’d–	yÌ¯A´ÌìØ¢eÇR6ÎèÁt’„gìÆS¼Îê¹äz5÷ÉT_Š¥áZPb9pþá”ÔÅ”áXKôŠî´.è+ˆjÇ7Æ 56ÖhxF¥¬¶±ÇF7‘¿Œb,zJÖ6’¡4$ût$p$„`+ÈÕeŠŒÄÔ‹ñd1¦ìÓ;aßðl|ß¤ oRÐ?V
’ˆÊL1-²Ä+IŒÎ¬b1^˜©L`ÐQ\ÆÉ!«ØèR8®w=’7,0D¨r3Ü.]x‰$t	žÇe¡ÔœHCñËC;uF"HØE2Ñµ¸RÑ(˜F¦îD2áx´¤£k‘ŒGS]BºÍpºF’’Ž–kRA<kÚþÇ—’²oRÒ7)é›”4ä®H0L•2”Pã—, ÍuðÈi§HÆ3#‘Rè/at))k‹"bÝ"×Ú´ËHƒ]"!=Žåqùh%'ÒÑ ,Ç²Ñ îœ‘Œu‘\tæƒT4žQ);‘ˆÆC7iè:cÑS—„®E2”¦kx¹óŠºDtêq‰Ñ±©Ž?`×ZîZÉ8Ë0üË°bõ½¼ŠÕGJ1lRUXìÌþ”Ì>¥åNîIÒÓ&yq·ÎïýïŠ„ð]arsòº˜/JikÂPÆŸV/b\Ädé7ŸóõG8äW‹*¨¢˜íÛÝeä„ÿWÝzž²í,óåÔ,rûq‡óÕ³¿T…I6w:Ö<ù`óM#Ê-ú4îãÖàœóë£+"™qôS ê²€*™O/J¢:a%zèá$ù¿(%ç?¤:Ð_³³fGúûÕ»5ŸÌ `{äŠ…Ú´V£ zNòÝ´}Û%ßZ¤E	’þ9„Vô€w[¨ú¹*…¿äû‘¯î;7áÒÏš—dÙý|	GãâQD™÷i,þs_¹jšk‚ZhÝöóã|ý‚ß›<ßÀÒÖ«Gý5Ëf[¥ÕS6“V1Pµw’.ƒM×GÒ,—Ü2¡9Q.0$GÊ›€bN~«¤òš8£»r·÷,lN@k—Þ%—rØÓ°	€sT½‹LXÕÄm×Ñ¹¼¶ÊJGóeÅÎtUægßQŠöY@R;†ŽÆ¤´q¤c~j4çZªv§O‚®íi9@rk_zûfò&-4m¿læ‹ù8MêîŽC¿Ý¡hvIbI&‚åÖsNUL'(ˆôá˜`œ9älªJÇŽÞ¬ê/hFØqÂ(MH,o‚fJìêšJ?À¦T³Û5Yæ:,Eã
<Ñûí*À¾/FÐÔSJaêÛgË«È¨vi•WhFOQ0–Ý
‹e¢•ž(NVÅ~ûDò4›Á£ôBPk~Ål‘l¨ñ‚°ÄÙEƒ8Ž@JÎ	¤œ‰oé7ô›@úM ý*éñ»2ÝÕ{³Î7‹ù?D`•™á2P/•ñ ðdœ/2ÇçÎI‚=•Üe¶«NÂÿ$V3’SJ=áÊ’eL#ë ûÆM­§ÊXdI{ÐÏc‰õ«	¬dFNŠf—g{v£„±NVõ"ÀGÖë°Ö+ðTëp•Àz‚GÖÁd¤Í˜¶EØ”ˆßp‡¨çV>"¯^‚¡¿¸Jù¦XjmÚ÷^Îˆ«å¶‰«§C8Ž¸zø°W1Âœ)Ê¿‰«ßÄÕoâê7qõ¿Éý)B,¸K/+CÞ‡½£Q‚©ðÒ›)lE{ü7qô· ŽÆò™L
ýRÌ+«„rp´3¯‹ÕZiàaÌ¢e‰£,z¥µXc%V7\y#­1­âèE€Š£×a9ˆ£Wà©ÄÑá*qô"Š£ƒÉxT˜dˆÜˆ9ÇÉqlÒgÅQÒR ãÑö{!8#Ž–C8»h‡ˆ£+½z¾©É£hÆŸ´æXâH"Dnôyf¼;#¾-›8Ÿei÷QFãÙ’„8WbÝ–GŽì·ÌjôPJkþË*/¥H$-1•ëäÞƒØ¶“B@ˆÝÞÞÎO1Ò&¥ÙÈ·›Õv’èäUJsTf‡{þöUÉü _ »¤LLjhˆÆ)uÒŸþú&5žÃu•¬Þ”;8VÌ;—OÞÖ½È§oç‹|3ùîí‹·ßÃÑ²ã¯áXµÐ»7p˜€ØùW½ØúÉwoÞüõûxœßÅlÙ{"ý½¼.Ï—0‹íqµžTñl¾Å^QÍ±‚|%ÓMž/"ƒ'gïsÖ~œ¯ZÅÍÄ¡<ÕeY™-TÂÇ°6þ«—ÜyØ+ßSÿEG¹á ì­ìjº{	D¦ä\­2^c¾vlç„¶E~Ë>`ÒzêÿÙû˜­,æòÜ‹m0JiIUm›»cM?m…ÖNsï
aM;/°á‰Úqfå!…c#kÑðRe%1íŽ¦z¾Ü3Œ·mÙ¸@4+A[×A †,íL–!‡¼ÄN
×N´¼¢¾Ø4*Píóó=ëôîÕäo[ãŸD®ÈA"àdó°‚ŸßýéÝO*è÷Ç¹˜"b`È½Ò”K­2dJn],1)±gŠ±ŽÔ”Ã‹—FÊ:Ë‘ÿSL-÷K¤zõÆëb».Ósï:»ç¯1¥]ú*q÷Xri[Ÿ·}òºûÈxkÜ3.Í}&ï4¼i¼ÃW¦·;@4QÆÆ'±½`ÐŸïæöè€Õ¥7€»Ju‹a=­^~Î·8Lôb‘ø1œ
O»¯aÝu­¶ÏæWìÀfÿ¹Œt+oç¡ºd8äÝ{ÕFnì—6E:~&©FÐ˜RáÁás—»r0ÒJ)³òÆ{‹þsKºýÏÉ‹˜Ì¬ÌXÃ™¾Žì¾6QÆ(¿þý—°ÔxÆ—ZL5ž0é¬Ì·E9ÚåçÏ×@P1·5Ü"â…Qúú¨v–©ö†Z-c¹i‡9a\ÿ¸à&²KÙ¼dóû˜€¦uÅþ’–ÐÑj}½Ë•üŽV8çâ@–bÅnfãØ™µþÃ=Ú¢Éƒþƒ­¦
aä(õHo¼UÀ'ƒUw”^0öÖtW1ôÄ0Ë÷“·y“VQ\à­Cñ&VHi$Æ¯õ/XC=2sa©g8#)Ê°šyo1¨~!4v‰ôØ¿ŽÜÄ)õIZËÆUUêï¦âSÅäÝ.Ýåw'³ù}ÉœÞý~’M^5òsƒç™8V‹—Î(ç1q´|Í0c§)vÌ3.Bë8¯¿œÆ!ùâ·Ÿ1­ú®˜L+ñ¯ä"ÕsÔ/²¼Œ~lY¦3Nƒ±!Êe¶© ™ÏhWáG1¶f_I2eå•–Sr’˜brc	ó”¨£r}JØ2Ê™°†5¿“Øb¦9~\¿dLÐZ‘—#ùñš¶}ïâX^‚d'JUùŸùW„­ª© ë½ïÙøNZª
ò¯y zV_®ý.OËp†§'Ç­]Á5hîßty¦UÐG·,#C7i/ªZ²°¨{6z1äIƒÍ±êßpy¤5-OSÎ|DxYßR6eÀL¹»×â3"NÔ}xxœð.~wòˆ¢+ÃfN‰92ûâ*ßÆ@Eå—¨™GD»eKwV ·€d_Þ_àØŸ|¬Ö0y}P¸š÷oåõWÞ½ÝÍoï¦‹x‘ÜPÈvúZ©Ž¬£)j
/ž‚6åžNôç©±âÎ/ªÜÒeËÛÙùmžƒ~S«Ë€´»ÀKÓò4ý	û¤8”úàÎ:l˜õï
xºXÀ0|Dkh«¡˜—õHö¦aû0›üû43I7	çè7t.Zbž4ÔCnõÍ´DUíÜçÅ¦º"jÚŽc³µ8^í¢ý0*ri¶{ãJ¤&–W©í0›òw1ezLþÄ§z[¦†ÿîS½ù"æ\ÿ¾Ýhlò2¿:A²ü¼x9çÁ®Ý¹ûµ·u?ÚÖ!±{Ç/^ Ó~œùã»×?íè½ŒŠG;Ö£õG™=^$œÿèïpXV_4¯f›™ó‡ÇG³W{AoŽ–ÙtòóÏÿþúÉåî1ºuoP&9[Ç….7Í~n‹ÙJß‚š“œÒ¶~óÐ/AêA,Sn¾svÿŠ‰·_åâðÆç‹Û<Ý™L_7i¼>ÿä§?ëuÛãÿ{¾j<ÞTN(Ó?FÖFýíÓ—ÑvXôâíó?ÿž¾ñ›ÿ½won#¹òDÿïOvw&Ú`çû¡ˆÝjµíÖ†ÔÍ‘äé½ž¸ÁÈ'…m’ °ÕòÆ~÷{2« TŠ 3rÛÈm‰Ìªüå©|œWž<iFçïš±È®«ñ7þß—oßôž˜UÂWËÛìJšû×Å=}òÎ|zâéŸ÷¼}x×óÄwçÿÞ}ðÝ·WXÜ„^Q
ñùîáö>¬Š¼ß¼IPþ>¸öŽ¬}yÞ=½¼¼Ü^nÔ/áçÃÒ÷á&¾ß<X;hºy¸økŸÎÅu’Kæo¿ã#¥ï¿Ù-ýý]‡MtJzA!mù/½_W«»e¯à×¤ô)¥áOùrÏWß¦eþØCXG0GŸýþ¶Ù<|òún½177£ÏÞ¾çÆšŸCúÿ81oÍÝ":tÿÖñpIî^šÕ:ü¯÷Ýg~¹2óÙ+…™6{ÛvWúýò6|·X”_šÍáËÂíýAáOÉq<(ŒJS2oâRºþ6ËûÍüÍò®·ö¿ÿðárþaq÷¹[øúÇþo»…7(~¿t?‡Íüõå |¸4__¾š¿ºõÃ¢÷Ÿ×ÿ>R–òFÒÿ?ßÿø,µnÑ›%hlˆóa=RžæAÒùŽ<içíë·¿ŸkÖaaÐ¿kzÁôàÞÂÐÍ¿]\¿¾{¬xþ³Þ¼27nìù»´WÙ{ük¯<Ü.Œ¡ÙŸç•7Rþ
„Ó‰5­#/¼Yš1ÈTœx¬_4¾ÃG^	cu“PHÆM÷Ñ0q.ýÉØîÌÁ\½KÛËUÿaº[hž÷,FÊÓ:ío>~~b?¾ÿðù>‹aÚþ²0ó{Xn‚¿\-ú#z¹ôMËýÕ–Š¿væ¾?Sñ÷›Û›aYæ" ©õæŠš^ñáÔL¥Zo·ÀÚÂ÷)tv5ÏCzÀ“°É£Òk´Y¶ý’¸ù	Àd³¢÷Æ!ÅæöÊì¨LHå#¼uúÿÍ²7ÚÂêvþò‡÷¯_-oúCŸ¼2÷ý²þtN¿ƒ‚³º°¥\~ØwÒjÿº
4Dð`¨påÂ?Þ,íAaÂŸ–+¿>xôÁØõ×?­†d§'ÀÌAaí”ïƒùúå‹[‹wý•K3ó:(½\×CøÓ»×½_kÖîÍ†í£R ÉÍ€Å˜‡ÍÒ/zEvq}÷pÛ-IwmL­h!iƒ¥~…y³¤÷îõvé÷>ÿ#ˆNß‹;7OßÓŸÍýë«0˜— îú3¾)qñzPØkö&uø| Ìš ÙnIº[¯û{ã%ì•À_Ñü¥W´ô7ß™ï•êäY2V4oŽ‰uŸ<—ë,úª.è7A\µ÷½^]ƒu«-6ý÷Öy™_Ü›5Ùx?6cgà`7nýñÈk[ýä*›»ZËûFV=BÎ¾:X.WIH]um›bÐ_®ýåªa@Åo~º:üÂ$	µ' %6rGû©´WY(n5	 «F*–×]ú«V€íëç§jmåÍU+oŠ›…n¾j$JqÕ$ ®ZÁQ\xë®Î·)/¼~ÿíOÆ§êlG‡Öß¹ç]ÃtxÎR+A#Å¥+^¢á„#æ¼ÄÈ»@	w”ÓNXxièTb}÷Ã#I«‡»ù6¬½†lr”â>%%ž)ç¢2::I˜â™èHŠd+g§ÑºwˆŒš”Ü¦SsF¢˜ÄéøªfÎùh¤!ÖašzL•“ŒGÿ¼¸¯îI±ÕÖ¡­Ó:x"Œ11iCôÄxáˆ¦“mÝAÅ½èÇ^ZN¬f’IE¹å‘ˆ”ÑFQ„048i§õbâËÅ”q6D(FJH[ŒM¤F#ÆŒ…é”e³¦˜<
ËApÆ”OrJƒ’"Xl„Õ09wÈÁªR[’×sÖÓêa‚EÍ%&EqŒ«’d1ŒÀ<DRóº+[FhMnÃb%#Öbæ¥ˆ„€‚ÖˆRC½&’SXäˆaÙÄá6«ñu|Œ2…,Ñ
:Ì–H0£D1¤µ2\áHÂÄ‘î¹R«yMŒž2è¹À¬Ž„Å˜µò1Cm€”6N]ÎÎÝâ>e0÷4HM9"ÞHm&4Ë9ˆGª		QHU•>œÎ??x”L,›ˆÔš#X"&0Ì¢ÂÜàÄ1eÀ‚øi¬»çð.gàDI–’`“t/+sKXëÆ+¦Z˜§Hàhü´o]ïåÄ	kD	¯¼“ ês`äÇ<ŽNS¡`}ÓˆÛo”skƒ¡ÒQ¦€*ø„´‚PÉ­‰ž+‘•ÕÙî	l·#êõ1aH „	ãŒ ˆ)è@€„uL'Ã9°HÐÒêÃîw”¶$Õ”„HŒJkÐ££QGb¸PÁÂ-I* »íDÍ±»eS>ê1r*Œ)X>k¢TäÁT…%D)G izø~'¨º'YÄ‚º‹:H'¹ŒÒxK˜ãNa=pOÐÝÄ1Ï{NåúEK¦ö ™‘p¤ 6n,C6`O‚2 Á€¶´KVL¡ÆsJ™±&1HÿRè?eƒå^XŠ9èBü$ô½ÿþe¹ù¢Št\%rðtåèe \B° CJ#€‹Oã<Í>a1m˜T–¨4Š0Â ób¤”3í8ÕÁ!Ü‘McÛ¿¿û¥˜0“µa‰ri6,rD‰á jš›M“Ç[‡x¹´CTØ 6¾–Ä—ŽF¬ÀX
¥Îö™8¤ÃíÚb25ÖÚk0äuøêG ˜ÛI‘gUWˆ’Ùn#TØWD	á@ŒçØ
ë<+ä•Ñ†”Õ'êÌÝ~syoJª‚w ¦á—R&ŠƒñT¶u`ÞãSÑÙì|—k²Á3ÿiPbÊ€Æ(R>…ûÌ¤×Æ¡i&àp›½œiG0M%`a	l†Rn48BÁ„Ë dÈ=5­3÷þ¦GØKäÙn#c@*p@˜›Ò"340nP¼5¶Òh'Gáúƒ/©»(„â®ëDsO¥26zPg‰Äº`A–#Ðv@©€i;ÍjíÆCTk9ÜKXÐVØ0I×ÁXcxT\Ki€=á‰^Ñ]„FùÊAÚªæH­R¦¨ß ÇRçÐÈãO'/m/–ë[†ÓeHLKÎ1˜<ÀJaŒéhmdÌ‚Î(§-ì}ÔJ½gÂ$@J¬¹«Å«Àm4ú ½ÂÚ²ˆ<¦Ó¬‚&j¦ÜÕ˜t²ä˜×AJ	…µ#–CÐ"íD{ ÑSîÂãDbÐW-uéT%·v8VÄ†ã‘ƒ¦1‰ÄNlQ¹ÎH¢T 8Æ¤#B™ä	
è­,l”²XÉi}¸‹r*&/X©WŠjR&7jv˜4ZÆ<õ‰¡—I'Âªœ@n˜P”Òát6v þ4õL°V@õæÇéÆz•K¢¶æ<uÆ§Óõ(

+:Â„ôF/´Ÿ6Û³bâè[`äI
,”lÄY%E£ŽÎ2q|Û`·
?X´APàÕÂƒÕî¢Dà ƒj m+¯Õ´ÅqvW¿cEò	’Îå€m¥µ“ˆ˜€&¥VÀP¨u¬Ï–ÉmËnë@»öM¤’#j‘Â´oÅÁ†][Z¥d'©mqÝÄò…¤hUkÙ‚žÈ² ìL ï=ál¸dš•:ˆ€,ç×°b´# |1ª<1éB"ñ˜€ÄÃVµaFN#²„Y>ÎIyu!m#bÎíÀÊ—lV'¤—Àº±ÇÓ¶öá õŠ	Ž+ÊqˆfÊ|àHÂ"ÁœÐtÙw;r‰Zî4.((‰Q€¡oÒ²ÆÖˆðŽa•4EeÅ4Ö8*[L©‰QI/@©aÓ¨¨÷&¢€¥%Æ0¸›i6K'h·\QôBpªHLK;º´9¥ÀŽ8Â˜ +—G5‘ÀNLpõ¬¤F2F¹ 4XIEˆVyÀlaÞZ›œSÐµ!Lœ•ýPäšÕˆ£dÞ á²‘'¢š…5ï)X2ÚŸ¤;Søl9¢NJ=‰”KÜ"m”30«0J¡$GÉ4£å‘Àìrˆƒn‘Ãl0LAå¦
8‘.0‰RA{n¦)ƒHðr;&¹š˜GÆ€
®’õ‡$E*(P-ï-±@æ´=ˆ?¯^FÚ`‡	’9è–;j@ AkYêÒ_tÈÝGÄ—»'4B¤`	f’’A¸Ã9Q¼WFº¶?rÜLÓÊ;±ùõrÒHÏA 
LžåaåD§B²+Í4ôèDBÛÓå²‡DÀúO1nŠbÜ)V:’ÔL
lÑÓÔÊ¼ÇßDh–¯#,˜ƒ^RPÐ¹¥`-F‹Ü§LK)Ã¹6:L&ððEÅ+r
1r<¦D·ØÏ”ñˆ:Ð‰"`DP†§m uÎrTlÕ`Ð¹Éå$ ¢	“Õ`0¹JÎ\àûÓœzS%åÌ;+@Ð€&¤å‚Ã\D ªƒÙ¤@š{‹E˜håìÏ²”Û8œPÌ€‚%‹•ƒ¥±ô3¬e„pÆ¦2Æý©šr
ñÎ1°Œç†Õ° "­yÚÌôAR£™˜f>ìÏ÷T˜±LH,˜d©Ä&xäùXÑš f-(BÆMäÛÛ“FåÝ'´SD(¨‹$€&‘·f¸×Æš¼z“È;8óT!ýt ˆÓä¢š‚±Ætbœ% p´ S|š:Ñ¸ÌÊiS4¥Ï¹F@²#içUƒõŠMdµX+1MàO|U‹çä{]œÂ ë,S ¥1l
šK{™lÚzÙžA+—ÎŠ8Œ¶Êaç™e)1)°ï %gÐÒJ¦ì4ïh÷4\}?:n´RÆ©è=[QÇè·\ƒÔ fD4±÷çóêõ1EÊTh‰ –Áàb˜#	Aé”˜1¤}w2QqÜŸ,wPak½O‡"BÚKÀ½A×	ÚÁÜ„eÚE ½|b@pÿìb¹”f,k®’§¬q’:NkeyÊŽ+PxZnOQ–ï¦[Ï¨6	³Žâ´@4s’öÒ)¨á8…mM¤n~³Ü5¥…#ÔGsÂ&=¥)¯¹ À5%(a\§8Ö8M§íœ$-wø0¯™‹ÚQÁ–ö
c\
JÁ9ò—s01›J`çLk9k$T¦“%é4‚€g-s4…Yúäã‹Ìhj³ÓTÙÝéÚúøUÊ5‰<F'£ä0)%(t ”{¡T2Ã	ÈLç}ë·>X'ÞQ˜—tì˜nA&ŒG+GY*¸C1Mïœ@.Ÿ•6štVBû”¯S³tØhcÞY	ö $€ÈÝYèrÖZˆ"mv^j°Ÿ©3ÖŒO¶~R,Bœ¸[Ø;•=á¨›ð‡« A'˜Y$Ä±£~³AM<iÔ='^a,P‰dÑN%U˜Ž’ðp§Ä‰´7DÑ4Urb½œ˜‘>8ÐÎ€E.Hè¹ˆˆŒÀ›¸ûº?;_7JÀÌ2[XÔTEå@Tf%XZ,éä&è´þûÓ»×õ1PHš¨\2’lCš¤ñì¬uWI†Î´hÇAòQv8…!¨´FÈB§Æ,D3!Â'únr”/–ˆ9H@°NC .iÂ(è‘AKnS\XdÓ$M›U¡ÂÍÈ%‚Åá`ˆ­´1ž6\•^˜ÈA!#`fOËkò;”‹• J¶µÑGDR+ÒD\%o½f–ð¤	;Íç´Í4QèÐh°K£„‰ÃVÖ0÷s˜‚ÄO<FÛMgQnðSofŒP…5E{ªÁRžÌÕ <OŒ±Ý'Ö˜½*@,[=L»¶‚IcÀÂÆQ'Ø·œ¶Fö©=ªù"À )h6’+0M9·,ò™§€'Ó‰,§É!R>!ƒ!ç,©‰MìÀUÇ’ûÎYL'ja»Ô%Õ]è@ð%å `ï\³`ðk0§Ô ¹Ó|ñG® 8º,Ì¾€%¶VˆÀ!…A	aE¤2È‰^ÆôW4©8£§ Â‚ž%£TÂÒ<8ÍÁ¬vÉ2DŠOãÙ¥)ßÂ°i=h¥¹æBKœüŸÆÂB`@k)Ñ2M’´IjÊµÿ¤îëöÔÀbNbSªL ÕHss%°ž¦põ3èÔL>ËÓùmÂÐHP‹¸Q1ç<!PˆÂDÛ~›ç¹xtFœ0!´ÃÀñ¼ |)¯D„n„õ’Ø­$îÈ½™fö"¥r½`s0,»Ùºñúšýµó˜U÷‚¢z½‹ÿrÕ~Ò’œèkDçêß>0hð%/W»¼$ùA:¸Êð9„”B<BÂŸ÷ù+¸î'ö/ áÙCÐæîZ?9À‡´´ùIš5ìO]}ð91E,ŠGñùuÇ=ÈÜÑ@14§ZÖPRø(y)YGV„¬„«é*CdVÍ$Mß"Š;§ ö°á^âÜŸDÌ¿8Ä! ìï—=!^{ÓìTÄ]Þæ’UÉ
×F-Î³HêwÜ)A;½7öÏÍÝ)S{¯ æ9¸ïö˜“»®“"%ó"‹eHÈ ëÛ4(™Ó(FÊÆ­¬òalëwÇèH»‘©ÄÚ'_iå$.S2ÊŽÑŸÂ'AëLÞj¼6ýKžv£'xïáä­ ëè6·K3ûQº¯o®k()ÆÓIß ô‚ŠþP§˜.FwÞœm7o¦à…ðs£õÒ
³ªƒÑgÐ:4Rñ
s`Ÿ'O!…qaõG¿%!t{æ$X»q¯CÛå¼É‡óRÝ¾à(}†z´C‚÷þû—süB\ RI\Xý(ûî9VÛ9•híÍ ºV©2QRõÑ†÷Ýqœ¶+¦"¥ÕYñKÃäLÓãüÉTEº¸¥aÔOs×ªÛ F@à’Ô˜õÅÃ/¦)‚	ª‚B¾¨ÜÀŸ÷(iÍ6ð‰29•JeXÿþ›<Zôi±z§èl¬$˜3Býë í=“{h—^éoôè—µy”ò¨IT³¸k¡%©½·¨^©¦_‚5š'h ¢TÇ¯E|Û>ÓRãD¸Ü¡_Ž1$b—C©¹X;JÆh“$5ƒ‹æ¸tl+@ÆÈHçãC–Tð—bˆ1R¸^c7Rt!PùÎJÊ!9ŸQ#dq1C*E8$ 	W’veTñtzvÕCÕ —…¨ÙÎ!ò¸
füCöã´OêjŒ•HüGy†3}ñ”ývØ5 ƒŽyýc£Lˆ
Õ¯“‚è™ÞÖÃ/(Ç8ü€]š¡<9¨~Âý1JD!Æ!ÙÿŒÓ0ª§ ÐwšÔH“Ð(ë«Z•EIõa´éŠÚAÍ¤ˆ[—VÿöŒ0ÜW˜ŒÕÛO¨GÛçJÚ[¸T&Ö":»Í†”¿H3T!Kt3e—%#Å¬¯cœˆÝµŽ¹+UÅny%Ðä´œMO\ÁQ:ér÷`^lW×@Nÿ.Jßñ}"¼Žë»q—˜©Ùí ÅÑ/¥ÃŽî$4J"Dk`2Ë±:œ#Äl³+5¶j´ß¢i=md°Æ ûnõÓCw¼ìSÁßµs„\®-U€ŒG{_ì6P«‚¹4·Ë6Æaêm~»É;4î,Å¾fØ#ÆîŽ[œ"VˆÕP=Ødå«wOB\Nþ”ä
%¾¨
ñ/æ ÊZ¨‰$U >N^h>©ú¾M^ÕúQ¢´þkÀ_·½B¹1k–îAÂ«&ð‰9.ÕPƒê&µj&eÍ4ªA'$ù3›1’sR¤”–Jš.Fß¨<	Z'ˆ§¯Íš•6AKýzÅõ‘Ð×GOÖQFëàÂXR¬Æ]5©'áû~ŸkÎÒD/« !£Íu•ÕÜl•×Q2BFº±½1øÈª1Óöi±2Œ 5¨ #ß’¦Š_º<w«á
2r©<3„®×"ˆ	y¢æ4ÅzºÃ*QùÁ!Ðžg²å\µ á&f•iõÜ˜¯Ã¡k}°)|Y¶ÉQTw„ü¦z?¢d*P'¤¤ªŸn«q- Š0)vPÔcû¹Íª<“äÝÉ²]ÚÒê#½²EèCkU‹ÖIéÕlS)9Ç¥ü«eØÉûŒ]ív™šãâS2$c—«ÙSá¥›å #ƒ²Çè;‰N‚ÖñUáõS‚» ã§\òÖáº{›û«1ÂjtªR„Ö;ïy¹ôè&Ë1$Ož08ÆØ'ì\÷ø‚"‚TùQÀ*˜R:™¾šÝ«u½
fŒ”ÝYV’U0Ö|ÊÔÕf(–ž… cÍï3p51ú5a`•@cäìrm¥E˜^ NªgGØ¬NÎªf/‡–/›bŒ!»´Ty¢iÉ¿8ÀˆPØcôÝ7'Aë¸oêñòfeæLD•ïCŒuòå"´ŸAŸ¶»ùŒcxQƒö§w¯›L\|ØêÙU0H°ÕÈÍÂŽ¬ÂùúÌàøÏ‰ ;wä.Õ×.t¢ÐSRô¢]wJÔnÿUá¶iÈ²@tŸªaÐõMª±,ƒ™.)©=hx›Glw_ñéÅ$¬R¿U'=éz6¦ì¼`šS2Õ !¶I›XÉµ‚uñ^|7óZã
Çåó©d0¦ûôjí¾WyÄz1Ä€„ËÛàÍiè´¡HÊ•®}æµ¼ÏQÅg”c¾cq·	«ûUØäM…ê‰ÕdgkTÇò8í’Úú›ª.^?ŸúÑö×¿~}F±Ë$7ebU€zõÖ¸ÕrR—,ïÃÝve•H“©®‰á£²¸Šª>=ýÍ_‘‘Fâå”ƒÉØ¦œk|RºxMšOeÒøoÓ¾%§0)­/ªûxÓ}?÷T Ž“{T“¯‰+<RRñ$!}µùDx…¹ñ¡=ÌXÍÍÛl~s‘Ó ¥°¶¢•WZýð¶ûÎ=VÛ±…h_Íçó¯üÒ=$­ëÅ¬©të¿Ú&>œ‘¯¶Þ™Ûð"·¿¬70º·/f0)õèîu•…
èmH¤ã½)û><U=ßr;ãžX—.1Lƒób¶û®õÃí­Y}~1»\·Y€œšýþ×Mþyy73w~ö.¤-œÙswý`®SêDÖnµ¸ßä–ÿGîœ´Y>[¬gföqqýq~“ôâÙýjy½2·· ßÎnÚê³O‹ÍÇÙj¹Ü¬g‹»Ù«ßÍÖÁÿnf>ýœ[77±mâîúb~½\ú™ÙÌ>¦¼z	pa½ë\7.nÂúwùGx9¬ïƒ[˜››Ï¹^ÆìÖMÓ@ÿ·5”ÞÜ@7ü@« °mW,6Ÿ3\ˆqá9Kìì§ÐÌl±62æÐ?Û,g~	³ÜÌ–qæ1†$ñf›ÐÕ¶s»\o`TnoSßÞßß@#©›f×ù<DC¨‡N[À`çÇ³´›EûŸ‚ívmJyÓ½Æ¨™LÛÜ”o_ÈCÖæ¹]4yêç3›"MWMR¼]¦Òt#@cûÅì?ÒK IËyü½ôÎ*ä/vÛwÒG>ÜA¾˜}Ülî×/¾ù¦ûúâÞ\?¬ÂÅruýM¦Ó¬ào 
|QÀ}õ}þÏÞ„{½WswÀÐ53¤ùî5|YJ»èóLƒ)öpß,šüÒ6_è>{çva7]½~»ÏaÝk÷Ç;˜J›0ö]Ò”Oæ°77Ë»0¿÷°I;±·ÔUñÓ‚¼_ŒgírN^Ì^ñA®ÉîÓ6ýc·(åþžƒ1G{IÇßHé{OÌê¾÷ûAV¸GŸ¦sgý‡ÌcÝm&®^Ñ>ûT¯¸“]h¤<„ŸK;™zzsÂ‘Ã’”Ÿe¤ôý÷/»¥MVÃ’ÆƒÐ/ÿ¥÷kÊiÑ+hwÔûeƒ<ã›Ä£Ïr2†Ñ'íÎùè³m¦ƒñ‡Ûœ<mÎÿ?lõ>l×wŸíš”¦ ÆƒÂtzP8èÑÞIÝîƒÎ9Õnñ÷>\Î?,î>w_ÿØÿm7ÝÅ»›ƒòá‚hO5‹Òù¾nY{¤­[Ô=b6R¾=ªuäÑHWtŽ/õŠ÷gO)ÞI{þÎVkOyôÊ›s½¢ÌÿwçŽ<jŽ Œ¼â¾)îÆã?òJ«»tï>Ú†®wËº1Ûýò6*·W˜þjnÄ†ÈöÞØ‡¬‹ÛÒaqŠ–5š¥!L‹'Î.°±[xË×{¸‹Éë•æuÓ+iÃ ze»H—ni?ÎäàÉ+sß/ëÏ§ntÅAùá÷"ì÷Áíö£{O:{Ã½òÝþèAi^Ì¥yÓ°[:Ø­{´ÛŠé>lwCºEÍE·d»oÐ-;~[x¯¬ãžî–ï=ÆÝÒ¾rµ+nÜ’‡%.^
{hß­[’ühÝß×V¯$d_S¯hëûéf—N¯ 1ÝGŠZk¾ûäa¸FZ[ð4Ö%MWw¬Kš¬K°/	üA\äk€öÖ¥P‘š|/õÙºüÏh]¶sa{•É|ö/¼|óõl¹š½\m ¡…û×ŒŠ!#¾}ÿ]þ÷òÁBc³ï–·fÑÌ?½ú®sKÚ£5·¿ÍÈz^[@æñ^½B‡ßq¼ÊÞÿáååñW¾ÿîÍö“žGè“ß^@à“µ¢áøKÝë²/ß¿I]Þþ–^ïüØ­¹/pçýz0ç³~J&é¯·þÅìÿüß¯žïüÈr+ñŽMººqö‰î®%é{FèI=#Ÿ>}ºH­g·H~iË¼MÃG_Ìþ”[õ,qUÐêöï‚åÿ×ÈñÍæÚMe7Ðƒîzñÿ¸³^/bË$þû»àÿAß›Í…ï—wÐøÏ=’zaÞ¬úÿ
ŒÁ?¸Íþeøû÷À]¬üòfq÷ð+ü›®¨9{tNîÑ9»oºåg÷ÍD÷ÍÙCó÷æ¡9{bÎž˜³'æì‰9{bþ	<1³ÆÎ itpg (¦ù{¶Žôç¿\%ýö*A\…»´xÖW× CÇþjðÒòaÓo—ÕUúÃ·^Ý„Û¹ìÆ­?y­Õa¯@‡ÝUYÞ7œùZvuÛ™Z\ïÛ«¼©Y\o+Ù¯²[_TÝS@$Í¡a»pË›…¿®RšW];bL26vÕCò>U7ÙWíý=5ÛûvNPó¹ÛÚ6åõû½j,ÊÊé&•òªÙÜ¹s§¸êÖ’©¨ØØ	W­mRÐ¨þÅÕ^ÿ¸_‚uçêõeyåËWW`ìê¥ßß=Ü=Q£IzÕè0Um&³£¸b²M`"×k„ø^Ê¬oŽ¼Ü˜4W[“¦¸±7?]Kñ“ôîýhÞšÅ;*ØSà*ÛÙÅ­¶•·¶Kqý6IØÕ.IXcJZýUcj”7½ôW­PWµ1(özÁÏÏ©U9u·>®Úe½ôhíg7ÿ`yÛóš†š¯=ÉEü\Õl-C„…~ÕVÅU“ÕˆŽ—wÑáæÉÚªRsûyE¨÷TƒýZEs´,·ÖÊ«øD¨ü¸w»~«êÿ°ü	šOÛm{·õ|•üîO’^¹rÝƒvŸ_8kr¤%²¼öêóUr—WüÓ»×»:ß>¬yÌ^¿ÿö‡#uZ‹éÑ¶òöA³)1bJ%ˆÑ«â?|loŠï˜¢ƒã13Ñ	aŽŠcì¢¡(B0ÆÂz"Œ4x;í:ûþõê£¤¾œ­îæ0®÷ÛUŸ´R‚©ÐŽPQŽ*2ÖFN=’Xyâ±ŠO£u¿/1Jh’~M§¾¼|= Ð§½ÖQsO	S…=GÈä°w"Ï5—ò$þyq_Ý“˜M…ÇÔa„TXhaµåŽ…’ºÓ+:­'“áSÜ…ÒFC¼£H"&5öÚÓèˆÚ†4%…—ARØdÊ`*®7)úãõ]\Vw¤äÆ"ˆ³Aˆ`%ÑJM$Ø9‚ÒÂQ+N@n² ‹{ÓXE‰	Ð—FµÕŠKo©Ö0=Õ–»7X†¼Þ~[9­-s!2"ÕAÀÜd1JB8Å^¢úÓœˆÖdŒÓTxl•˜{ãŽ”hï…Ôž{MÅHRƒšF£Y¯ìc”	å¸`ùhµ·„4V†YAŒF0úÀ/©Vde½Ëá«×ÎaìI°ÎrŒB tBPÞó¤‘Â¡¸§¡u·s[>#™G¸Q8’cj•vI¥ÂTÂrÂ”páaJžŽÎä+&	L¬=&ú·q@«TR¥”f:O$³³›]L"ÆxJhIH€ñ–¸Ö.l°Z‡e3t‰­ï©\jÃŸ¨1P£™fNPì”cDÁ´d„Nœ¦1žÎù ÇFÑF,¡ c¤GNÁPS`Ä%)ˆœiÜ½*¼ze{$¨®(çL„1yÂ	"L™ \
2‘‡w¯¯¦Ôa˜ÌÎpTFƒ¤‚ƒ ‚P!Œ´"¦ñËnüFñ¨«BÅÆÂÜ‚¤æÄ¢ÂŒS-=O(çÓdÍþêêž$C_ZâHG&­ñ,	ƒ´“ÄÂŠgŠDøÏM£3ûiËù(±Ñ0§@¥0%]Ön Š#ë4ÂÒŸ€¶HSÎz„6X#Çè¼ êU›à9°„<˜3b¦égûžbúÀÀLDfaˆŽiL„ÌAîè» ¶‘2Ð‹“èkB‰jÆ—ºÈ­Ø	 a’Õ@@baƒÕ…§­ßßýRNiiF®¨µœ¾¨âF£ûÕ SÑL›t[]ù½” f`Ž2
#«°fa©€màfxã;ˆè*×´A¬1Ï@/` þ|ÀQX‹1(cÎÆ€8—D §§iÃ(±rÉl­gœpŽ}€~•ÄSz-ÑÊ1IZ…>ž¦ÉÆ«Ó™ìr.‚IòÄk)jð@.À<À‘"§Ùû‘sÅdZª’–QZ#0)¹ÉJ­Ä^h°oxAÀ¬¸¤azåi°Á .BK –%W,l0÷ÁÀ² ‘ÇDÈh1m}ï/0®ÌÒ;‡Á¤VÞZ)AÑ†Y‰VÌª(5 GL.ûÀÆrWò’
)$°uðHèÃtÀŽ©ÀŽLó–uo@®w<r|‘*É‰rLCÁŒ ¬aƒ2.LV0Ã¦SšbìŠ;ì{"%Hµ»Å$‘&‡”’ˆbâ`Ý€š;ÍNÝ…¥–›ÑÀ…dŒ!á"ŠqÌ“É­á&8X+SàêÓÉË7+W2²•àh Uà t[#v1Â³À‚âÜOóå5{÷åî¡8X~JE•lA„Î#VŠ3’ ôíÉkyR\Î¼X¨,R
•È¼šK‡		1R§„æ#…ý´YØ	n.×ËÀº‡•(Xó š
’JÊ’Àq˜‘ÜœÆovaÖå–L8ÝÔ­±%~®À5 È‚Øa YLÓ%:!ÞåÆJ`<"P 8%„Hí¼õô!ÖÁÊ†±çÁªiÆ@7Ø¼˜Âh”Ò(‚.&R¾é¹ñ i[ñ+°^ŽxŸncÜË×GDV© ]”Y0U6('œ„Ål4VHE*§)7ÛhûòÁ•ÆÝÅã&µÃ@e`´Ä$žr<ùÜz\¿ïr—	­…ÔÂ*g(	†—`33$×¬Æ™‰#}{ÄÆz•H:!QÐ0í<s&X	¼S¤« ò@¡`!NS»ÛÃ"…xÎ¨M>Žƒ…%z˜LÃj1A	¯ÀàâÓøÍàìF¹Œ¦-ƒ-ÈÊ…@({ë¸K+R¢ER:‰ÈÎñ‘b©ÆÚÉ±<„`¤¦£]R“Þ;#‹vš÷k)qõT  Ny˜ŠÁ‚Àî÷,€•­5Ì‚õ¦ÙÓ“5å#Í¶úƒ´\xP­4
FßXL#R"€U==Žý)ràƒÆ-¸ÇFè |‡*/ 7aõ<ÅJJ9MÑéB*—4È
Z¡4ÌFä¢Ê€ÌWxÒLœ“Í¡¢ìß©÷Â+G¨´LS.@ÄäµD#pvŸ"0SAMœ•ý#Wåv*(­„'Ó4¹¹n‘: N@‡rª$(nÓ<fÃ[å²¬eÉµD@ÁQ°úØ¨IOBLô•=r ­|kïmôdÖJYVÄRæ¨†‚9™&v'ÞÊ{4j®‘Êé-X6[XFÃˆæ¥°NZ0&ù£ýßÁ¥Ã[ëIøÔo§#ç#kk5Ñ%§sÞ¥c›æUÓìëƒ~ëc@8b¨’º˜`P¼Æi¶³4«}˜¸ÝÚ=ÃXnFxPÏ³#©dŠêð&%ª¢7&Ðß¬jb”Gç6Þê®vÚ¤¥„YÏA8mH4+Ä‚yA§yvÇ>Ë—ºU,z"q
€1(àÂ0°mCŽ*Er@òiŽÒ‘ÐD…—;ÎC†X¯-£‘q/´$”qm„¥˜Ãl$š[.¦éç©íÃ£°åê:h¹þð_4 kk¢p"›fŠ	 „åD/ZçPnù^Ò.@¯q§¹1 Í1A˜	Ì”ìHÅÒnŽš8÷ÇƒË,<L#ŠeQãDô
$
ô!.$U(i¶ÄþPryª –—<RÊ/Âl0‘ÖH*±¤ŒŠ‰lg<º\»Áqj¸dÒÐÕXr¬ÀÌõ [:§%Åw«÷µ‹éóEà× °)Nûp3ì–µ
º%Ð³VL“Ú»#ã7ãyB9±"D%)L:
Úü'5pJF…¶½S‡×+Ü¤‘[uô¤2%`8x
DŒ+¦A! –OT'_ùÖ›iÿRƒ5˜¦L°5Ù'IÊ5¡‚øišîð†ÝzÅ,e„±À¹„…¼¸Y*ÈEG#I0Ñy±M4PÎ˜+­,È•à¨^
a˜,pÁB¡1È‰þæî¸õ#¬i­YHh`öE0°hcŒÄQb? g¦‰éÎ-¹õþ>P]A¦`åAÜyGÓÄøA€E§¬Œ”NTxöY$Ê[”–H0
ö+ÂPv%8·¶š‚vÔN£¯ŸÏ¢"$
Ôe˜‹À½µÃZ¦õö€j“ÿ
”\où4ïÊ6³F¹ŒæŠÆª² z)oe 
ÔÆIŒAPgeîÈéÔ}xtQ?kï_8«ƒ~“i€ÏÁ¬1S¯ÀteŠhF'|tsTœ•ÃÆÚÁt4L^Á¬µÀÝAHÂÒV H0KÌÔqÞeA)wóù@ÀVNcqÕlƒ8“"NuZˆ¨­˜æöéåc)'3Ò3Ä£ñDƒ¥Ÿv–<å.RP7Èeè4bwcoõd{JƒFk,L=Ÿ¦]@˜€Ô–”±h“#4[4Q/ÛÝì[/®=24ÅœÀ$[¯X	klÌM0µaÝ0=•;öòì”‡ïq! 	=˜¥‚‘`¬æŠ8ët¬yÚþ4È]ÆŸŠ H#Ìh".8v`±˜ ½‡ >ÑÐjhlOwÖOÍ¼Û$ëÀY}Ä›¸àybA…£zrlJ7MRygbe"HB˜{ƒòcD2n„"À™´ ÝÍ`…ÃÄqû„MåFWTî…d0¼Êƒ•€
“¨9öLVíœœ°OUL_ KÐ‘‡bSð–Ô%G9X­ TPÁƒù9ñÐèŸÞ½®ž‚`ãbœŽÜ$wT:£)5!"ëÁÒ¶°ÔS`ø4&>È§U.­	“šFf•¤³¾öX2)¶4GéN<ÀsÙ«Ü>T:
¤‚þC)&ŸÕ°L€ÝÀ’£;¦@¹iJE›¹©<ÎX*­$Žéè|dÜYäAp#G´VÔsƒ˜d~ÚJi²•¯bkx#5Z”l!€­ì/h5éðh:É<1¶g›¾©Ü‘ìÒÆ'Ô1˜zÎÌÒ9Po@û¡ä¡!jbÄm7¹[9—1Äæ“«`ÏSÁ˜¦ÌÐAOôÀÁ=Y F¦qé}š¹G˜MNb·¼o¾a¶~¸O†÷RÌy:ª©$Ì§Í“C®	Ã4ZÂT:c=U­Ýß;Aã 8"ÕXâÜQY°«‹$­ê%ŠÑ±‰Ñ˜MÒžr×	°iÉ°·‘áHfd¸$a‹%Å#!š¶…µ»4µ^¹I–ŸR"Zº€¢‘(ê¼¦*pí£vÃš¬ƒ{C\cr°‚aí€ÆímÚV†`ªÌPÄ¼ŒO·¥¿¢ùKEPOð	å¹E!ê‚àP AÕ‘ÜLh:A§EŠî21–o[)æ¸72k®–‚
hLÐÞ‚©šÒ``øÑb4ñìb›ï±\’¸ am‚ñ)á¹²#•Oñ¿iOÃ¢&ØOu+ö“Q–ûÁ Ç`•Æ@Mfi#œp—ö@&“Ã?MMØÞR¬& PJ©­ßÂD
¹¨8h0„v“6Ë±ðQÔí²˜Õf;L"ÓfîL÷ëRtçŒ÷î´§èk†Ä×R%?+¦Ã+JŸ]ïð>Ñ~n˜æ†fèàÖð Ã[V+_òrµKÿ’/«¦dÎX1)å ñçÅ}þ!çÇ;öq"ž1$á †AOò!-9íFê	2¸üú¤upåP`Ž’9¦5$T ”“¤ÏÁ!ŒæTËjJa%¥›³¥dÓˆª|”¼”¦%÷6Â
–2ªšyHC‚ÌªYEÍA%-%¢ ö°á^Ê•fˆyYgV@òéJ÷žî“áíîéž†¸Ëø’‘¦eŒ¯çY$õ;î” Þ››Ñœ ÷
`žCÐ‰ûn9¹ë:Éq2É¿˜WÕÀº¿M‚“¹âPýËU>ì‡mýî8 i7:•XûÔ;<’¬T«8NH*Ÿ¯3' ¶I€T‹RU d¬»Û? ø#çª†’bœ!1$> B/¸(ãˆå #ÓÅèÎ¡ífÎ¼~Î‹”¨
;°ƒÑgÐ:wa5¶‹¨°]ö)’òRt^¤ô—Vô[B·gN‚µ÷:´&³P6µ%èø¢´k‹ê;v—v)3<ÎKŒr€G{ aô9úIÐ:ü|
Þûï_ÎñqH™]Zý(ûî9VÛ9•híýu^òh”ee•m|ß%'Aj;d:VbP~ix-«`•‡C’.Ìu)ªÛU@à’VøüJ†ô3fÁÄ}E!BŸ…1j&À=JZsãœ¼Œ;$û·56cÅ+ò0kWëdª³:¤Ç:èíÛ&æ~rí2}ý­‘ý²6¥L#|!Á£¥ºx5Ô£$µWp6CO™Hm&0 ˆ^°_-ÒàÛöI¿G%0àâmrŒ!»Œ^ ÌRwy)ÂmÊ®fpA”J’
12ÒáÇ†+ˆŠiQ1FBŠql¸7EÕLÏ:œ1br†­Æ,£O8b!£ á€Mæcø‚ëR]VùPAèåÆÊÓZóº‘(‡ÿ”½ö8õ£ºÚc5V'3Ì20Xp±Ð*†tÌ.÷VÃùdÍ’-ÇñúÇ<¹YÚÉÎõL_ôá”c~À.Wã„ÖÅÜ·ãˆìO:~º+G)è»‘ê¤Éõ•WÈÒ­ë¢êÃh3y5ƒ˜¼#EjRiõñoÏƒ]—éXÝÝ–	hû4b8ás\ª”Ö";ûvgûÏ€êÅë¥`Ð|›«™¥EÕMïfÏÝ÷´ø8$¢è	rÚAÍZOMÜJ'3Xöc^9Pq8å»(}÷ÿ‰ð: •ˆ»eÍžóÒÎ.Dvt'·WZcI¡¥dTá!f›h¬1†P£|ÿ-ÑFk°¿¹pzèÎ^ÃTðwí!ðf1¿« 4UoÂ¯M\Oûám¸]6ÛB Ð€üv“‚ttÁHæ™˜a4Ûk°pøAXcBžåG	ª{‚¬MÊctâr´$W(«°2*@Æ¿l˜Ž-Oh9í«Šá'-4Ÿ‡žÞÂ}”¤m·Ö‰“îßªýºr¨Á—ý Íå¬Ó¤ºÊ…bó­uÑ•©:œÁçAšÕQKÒA†¸f_‰9.åÐÕPƒìfkÖ™ªØ”ªA'$ùˆ›É'ç¤È'Zp(<»}Ûø$h(­:¼6Í\ÖA¥*eˆÅõ‘ÐW±OÖÑ¯ëàò‚ÍiîÚ0üš(í”a?‡±tv×¨Z]“ð†Äíó×ÍYÚ^¢5•ƒŒÑf©Ë&ª	Ž© !ãûÍmÃ1«WûlvCÐšü
‘IóÄ/]^ADåØV,WªpFˆÙùò._M‡” Œ3ÐåÙ)tåÜ*‚penN“DK™v5Î!ƒ<„Ú3ñSƒ¶Ì¼6ÜÄ¬¯¶þÆò¥Ùú×Yr¢–ZkEuGÈoªwÃ—¦í¢—j¡úIû¢lûRGT=Ö°ŸÛÜ|y™c^ÊiJ«ôÊ¡}w¬]ô]-Z'1`³ªÀ+åc5(ÃNÞçýk˜>Å3¦dHÆ.«_³_Vc^Z}d@ö}Gà	°:ž¿
´~BA@a)»\ù­Ãtô6s`}Ðs)Â99`£#Ãê+UƒŠ!Hhƒ¶i¤›5°ÑžŠÞ=ÆØ'´:ÍA£W¸Íª`Hé¤ l6Ek¬–*˜1Rv§ç/>úS0Ö|Já×ž*Ü… cÍïSóe¢Ú¡(#g—„/(‚—'Õ³£l”¬6ï^³ùQî+¬ ’ÑÉ©×ìZÒr.RŒ1$b—6/ƒ–¢8ª®bDDîQúž½áu|{Sóö|vf…Ê‡«b¬«/¡ýúô–Û#ŸÑ`ô;º
íOï^çÊR³ºgWtÂ `cÊÒY[‰2Ò ÁÑ¿“Av&ð$Ð]jÂª8:°ç9$:ï„ Ýî«mS&fµŒû
'b)Â ß›´ˆMìAÍyš²úƒÆ·y·Œ¢âó‹!$t}5Õ©šú~š	0Í³j€ª¥mØä,"¤b>vs=¶1w5qõU0ƒ‘Ù'ulB\¿QŠ0 àãò6øE“× mŠV¬öïÓ=æøž"{ÐÇ|ÇânV÷«°ÉÛ6Õ“«s’UÓä˜lôËòÁ-©=è¦ª‹×Ï§~´ýõÄ¯_Ÿ¨·ù0§ÌÔ
A¯Þ·ZNê’å}¸Û­Ôâiòm¶yÊ³©U|zú+š¿ÌÑ6~
£ò“‰ C2¶‰3sÄ2.÷šO,jÒøo“WâçI¯aóeµo¾»%p
¨ÝŽÀD°&§g³UŒJÀë@ž$¦¯YŸ±£VWa>ä-ITÏÝÛ¥s™ö,tŽ(K7Upø[Œ}'Ÿ­íàb¼‹‹‹¯æóùW~é’z÷bÖTºMÍÃÍfýÕ6¿ëµ½c¶yéECÈËûû¹»7w·‹»‡5<\o`ÜÂë±Dòýj7Û+šâ³ÿpËÛÛåÝÿw„†}Ód×tÊLùÜ†wÕ¢  áHJ(E,¥¼[#ßÕ>CÚ¸ˆóU¼iâ¼˜íz{ýp{kVŸ_Ìþ6¿›=ÜÝ÷óïf6EÏÌŸ-š½°YÊ¾Ø’(ñaíV‹ûMnüäÏþðq±žÁ¦y×Ý,àSg›f3[5‰$×³¿†Õ2Q×MÝßåV’Eä¡êÍò.@ã›ÙbóßÖõÖ€ÿO{ùUøžp·^¤_?-6g÷7× ê­óÃ¸‚FýÍçÙf9[@wKæÝuÊÍ{Ó½®âvÆ½}ý!ÿ”»l›{>û—?^¾ùz¶\Í^®6‹õfáþ5·¥¿¯Ûw^¾3¤ýmX!wV›Ö{ÑL‘yÓ¿Û^ÙæNC³„©Ø¥éÁ€‡âv’7OžS5M ”)ÊÇáRé*Ä j„ÛB¥)ûp·ØÀ„ø¸ÙÜ¯_|óÍmØ˜4	/–«ëoVá&˜uøf83û+ ™ø[âzs¥Wqæ¡‹rjZxÖ¾½Ïd¼cÃÆÌýâ‘¬ÇÃ7c>ûÈË‡¹`=,†Ï»Bß…p…yÌ–÷‡—Ó$Mšäv!¤?ÿå*MÎåÃæ*á\¥¦®RÐòUG»
y>¯¯`2¯ÌUÒCf8¯×Û{Xwcm~ßh>êÃXšlìƒaGâ•qŽsbbDJBxL×KIÅ°áû{›š]yè¼Ù´ûJzy”ìwO_®bÓýš^¢1·ˆbáŒMwÆtÓÅÊ¦›&Þþ²Ï1ûø}ÓO“Š<‹(åöN— EKˆrÄ˜H°bA+Ò‘:¿@oçƒù÷ëã©ÔŸ¦=`F;É,QÖZÄl ^Â”!!ÝL¥óÅn“¨|›YoîíÄ5*IUR n	º‡¹+¥ãÆ
Ÿ®bÅØ³[Oø´{%òæßüòíêéä)û{Ôž[«Cºõ+Hì<I—aP(ÔC÷J7í‚÷ÀGï®çï“ÐËÑ·µãÏ("u IFcº"Aj‚¸V§›ü(vê­d-[%²9¾tœL'"ÄY­¸DZ/…$jíƒ&ÖxáÓEV¾ên‚§Rë÷˜p³uÚØÈæã_3#ãLeu¯™ý85µH¦ûnY4Q)cùZžAN1ÎXž“ÌÛùr:Š!9¶Örºöô"#žªã„T>Ùq³Ü§SRŽq9`Uó6Q9tŠ'¥)ôÛeÔPjCg£ìÁ(£¨Ú(ëT=eg£lv6ÊÎFÙÙ(›@êÙ(;eŒ2 )bÍÍD£l3Å:BKN¥t„ŽbˆI6ÐB*jm #””cL³ŽR‹ô÷aE¯<åØžm ˆ°ú)v¶Î6ÐÙšBìÙ:Û@;RÏ6ÐÙš`yd$"–M´v0Ó6¦ŽPS‹4Å({ŠœbœJ£ìÅ“Œ²#„TÕeG()Ç˜f”!¥é¸QöüˆÅï¾ýnþöóû{Ó±ÍRJhq çÒSÄ*k²c¦©‘cÅ1ËPaÜµ‘¤ÑðŽXƒ/g¹‘Y>ÜÌ0ÌÀn˜]ãÆõâÅíçõ_n’	¸%4½ËgéBIÃìõÈ¯@hÆKï5íøö½xq¶„òU†ý”Žƒ¿ ›»Y6l>…p·k2õûõÊÜW½žÝ˜»ësÝŽðFÆlì¾úrc§Âè€‘šÍÊ=i`ò´²iG%(üw ›.C®sFô:ó´ŒÍyÅøB0üˆ‰KŸ„|†-	¦ä:¤ùv±³&“ù÷MšÑyl¿)±#wµžiCv×Íãöc÷­'±ÝË†˜Gœy„-“ØNq–`¨Ù`‰‘H‰&’„*õú)½eGo“É…n‚Iñ5AôkPQ¡ÞÞu\V}ìŽâ-B÷xÀI°v
Ð~S$P&ì™ÿ“ð`vz\yæÁÿ4<˜á×¡’ïªŸ€?ë9<xˆv*-üòºÃ‹é…<˜ÆPv*õ{¤­±},¦‚².×ç"º Q<Êõ/—ëÍõ*³þËëfû%³àæ{–
üçKF²{¼LÝôËÂ{vÀ4Ö©dß~ÆÞ2Üu5oý…üÍ5ÜÝN	<i>ØTªów¦ø^^s\æç³Û<WóÚüÊ³íåu—¥s$ÔRE,~+ÃT	a-° j¼VNT9ŸÃe/¯s yÁF’ ñ5²,h‡¶Œ‹êŽóÄË~FÈé@Ý\èÏ…ú­XœV†:í…ÛžYÜ)Èz÷·Õ+Ï,î·bq1J88PTw*‹{&ÐsXÜê·bqÖ‡T$Ï,®:¶ÿ³¸Ò–Î,î”Å+D`×°¸]Ý©,î™@ÏaqC¨SÙÇÀ›ðU7„«ƒ9›
Oe%?ÖâcRÊ¹4žÞ¤jšÈœ°qhŽ³ÕöµÌUï,0¿™_¦¸ÂÙ»ï¾}û~ïQw0Ø-·ý¼|˜9s7‹‹;?ƒß[ðéÓ§‹ŸŒ[\@'}³þô0$ ÿ¦Y69²Ë¸[¶œZn©hšìòõ`Ê™£7Ìí‹7»2«E-Ã~$pñ²ùþïò÷×h©ÿð[MM÷óëvTžÏ³wóÿ8ßÞ½v4T1Ìü°üÉ¬îw×)²qJ4bB»Ú£í¢×ã~¾Ú¬’¦ò¬pÄý”Ä"
ãQ!í@†h#6œ"ê‹R³Ö§uØ‡îœ.:nÐ£D¿lÚ{*1pO‚!È``S	ì\¤\ax@‹h¥ò"Öû¹Øôú689tµÊ¯­7ÎK+ÇDcIõq¡Ö"ôó| «“áë¹h¿©˜zÆ>ÞYLýíÅÔ?ünÜYLÅÔ
1å-¦’©ƒ(ÁÒê'SXÏSC´Ó˜r¯{¢
¸Ïˆ¥§±âÆŒ”"i/ÀKeþˆ`|¹—i­ß*E<å#{ÝˆÈƒª÷÷ 2ò™]vKöA/ÿèÿº‹yi›˜íT.2#Hø‰Šõ}p‹¸„‘›š]‡ÍlgñáÎ¥'ëßÍ~ñ—S’\[÷ttzÜÈÎw.=ZoN'ãv°w‚oWrn$‘	ìÁ4„î*Ø>²ÿ{9œ`ïULo	*KË2éøúÙbñõòðõDÉ;iö*ŸyÄ_=ç]·\-Ÿùêwß^¥ íg¾ýöè{Ï|wyß¡í±µçÔÖyõ~c69\ë¹Bûu´&6rç½§–?
N2%vséÞ×L‘ó @i“‘˜áÃ Ð¾Va­?qÏ­8&^“,OAé&V~.Îo$XŽTJÎÏ‚åŸR°<vö¹ÈB;–³`ùO XÓQG2²ÁÿÜŠ“ËsPž#X†8§°”þðê]!ƒ.äávW*<…¡4ÞÖcDÌ1-4”þ`Öh£ñÙY`æ­wå±,ææfùiƒ›åìÓ*¹„Ì¥ÍÌ±èìïDUÛÿñí›âÑŒí >›í§÷ŸÉ÷[èÇûÂ“¬+½WÀ»°6ˆ¬‹ÆÊŒ–DÈ(3˜+eHiõE6ï©ùÒ©æúGø×ÎEÇˆ<<µûüš‡|'Wî^Ô2fwIKÐoÄHž¡ÿs2’ßDe<3’¿F"4Ãž)QÎHv5§1’gÁ<‡‘N¡½þqþ~é~›ùû÷Ý‹ä‰Ãsê¹ô:ÑSÍÆZb0õ	ð´œ©y¯f­¥Ç˜ZÃxò>äçÆ
_™»usoÛìÃ›÷ãüíõ/^4Â¿ïß´¶ÿjy?~¶
À\cT$ÄîË¯/;¢ Ÿ8#°‰Õçûæ bê°¤¡ØÝ›|3ÑÌd|zÙ üí8é:¬Ò)LÀo8éÅQë‡ûûåjÓ¤BKiØ£ÍI£f1˜ÍÃ*´Ž€dêÝ…à×]>nnæí{>“Úrlh±i»Áí88n?‡Ù-L¬Å=Øx¹J3ëßÍÜâþcH5o‚kR·¹oªÒ€îÜ¿kpïšFÛ¡ÞW¼˜ýÐ~`0ŸgË]³ž­—·aöqqýqv“®;m}‹Ä€÷N‘Œ›¤ñÍ$oÅ§`g÷ qÖÐ¹¹æË€^3[¯o€ ù×@®›º'Õ©ÿ©á·MÏ¬›ttqÜðæs'švÓðÅä<ù¤S›íŒ[/w»ðMÇ·dØÝØ®sÓ·iR$îœ;¥Ó÷§ÝA›vwIé¶ÏÚ<u¿Þú³ÿóO©´Ý™t2Y;ä2ÏºÃ…–º¬3)ÁÃ;~h
›êËèC„±úG÷Ù¿Ë¿OûàÒ6ø8üë~ÿA}ØôòÛ½¾|5÷p7¤âõw?ÌŸîÃ'ovK›Æzí†<í”|Ñ±=ïÇ·»µÑ;Ï=v$xe¨WÂ #ˆcF!“ò®DÛ¯*ÔSv¤:¸ŽR&”µ†Ffˆˆœ@£BpÉcÔé)¥’ ]­ÓEôæ_‰'[¹Ò2`•§Ê È­FHN,V„q	£$Ó©$ÃÄ­ìi®–R¤¢dÈ£h„¦AEo¬ÑÌEê(k®‡˜@`³Žê(„)J’N±à%f06†Q'¼'`YrFá_"]`±×‘Q2DÅ‘—)?\Úp˜Æž(MD\R&À6%ŸL&¿áHu¤‹‰Ú[Â‚BQGÊBdÒØ­QQ©¡zZNÉ=[/Xl"xëX–e´ÀéD¥âXùÀ€+e"Nè‰9Ö]×w,§Ò*„xÐ*Eq$fkpAFÎÆÓ¸ êqJa<™‘ŒÃ¨†èÁ^hëÅy²šäMQóqÆUµ¾ž²i{,¸¹X[ˆ‘!}##Â˜±»hkP&ò~nf½R#KŸ°ú¡}ÜAèo:œ «³õð\´ßÜÜ%Ñ:kÉ±ÓÓgs÷lîžÍÝ¿¹{šÛ¨ÎæîÙÜ=›»gs÷lîžÍÝ©äŸÍÝjÊÎæîß¿¹Ëˆ²hÆ’}× ÔÙ«§ª~s· ëæîí77wƒAZq,öílîžÍÝ³¹û7ÚÝ=ÉÅcgs÷lîžÍÝ³¹{6wÏæîTòÏæn5egs÷ïßÜ¥0Óc× ÔÙ«§ª~s· ëæîíáÔéFÝ¯º‡—	;ÐLSá)b¨ÇÛzü8ê“6\3È±ŠÙ¶¾O÷¹5wÁ´Žž	ùéÅýí6+ÔìœlC'Ó:=›½YXUYÛþîá>a–NûdºmÚúð¨ºYÎùY6Ò¯ÃØš®1´°…¹Yüµ5_·WÉd£ÞN'Fo…&õnM2îÈþÅ˜ôëM¶ÞlÈ›³=ÿëý*[~@TÓÌfõà{LÀÛåz“>2¬îFo²Y7ðâÎÝ<¤4¹/f Ò_Ý6Ôv¿zýùnc~n’›Æ ÚžÍÃ.ù­³zlçßÜ.—èsŸÓ]M9kóâÛ	ûlÃ0÷õóÎÚ´Ð[zíÇµ›cÌ©þîóó¯€ÎWz?_Õ0–DœŠ Ã;§4ØI Ù	µž‰È(ñNåÿ}	A˜çObÐ„ÜCAóáaDü=¿îñË¿(‹µÀ^™¤ÇŸYì™ÅÎÆýd_€Å~'Ü™ÅþC³XÁÌ^Ô°Ø]ÝSÝ—{³°Ÿ>}š§Ÿ;LW\ÐC:žB‡>Úäè6Å‚Ñþ6WlJ­ðù—§ß§ÜiYÏOËÕŸÿ”’ôüìãœ¿C'´{Óî¥4üºM”h>{=ûôqá>vòÿ¬³¬èf
Ú¦ên uyí¤6Y‹rþÙÞnx4¹ƒ¶›#‹u÷î	wcÖë&[Ñ~O§$ÍìŸ#ÿé§ŸR›”‹m7dds³^æþ‡ö×»ÎXfÿfIfn’ØÉÍ†_ÂvÃ§¡%×ønîsÛ;yºí®ï?|¸Üîè\ÌÞütùâÅåj¹YÂ¼x‘ÙâÌxßnÐm÷ëš-ª»\ù}úúüþÍûˆðéÏ;›B'	x<ô&Ïþ#;!NY>E€õ9À³åL†æ²•f˜Û±\˜ÁûóíÜ™g‚úÏûd<.óÁE9¾´¸Nþµ÷ß¿ÄÝâô9óïL¸]ö6†²/îÀ?oJ/—þ ì];Æ9	Ú]ØÔIé]J§ï?€ þ`®Ó§ƒÊi‚3å»ªy½¢Þ°ÉçlmÀ<©âx/Ww½aÔ×‘“QEŽ³”Dï8aV
'T–#e¼´ÑOóS·³áû·/_=‹ÒÑ­ .ùƒMˆV0Ì¤ ©É©Ö2jI´äT`¥„ÝÕ:ÝVFg2W:´…r^x…QPF¥½8á¤ËNX«ŽkË¬ºôuGe³Ñ2³tææ±ý–§»Ù!´1$­”Îá¹´Æšè¸£ŒR¥ÆÑàª”c;RS·ù›$HîÆïz¥ÔðÀ ÷C00‰Ó%„Vø ùècöKäÈNc~™íêjòÌWdµ20±á_³!rpdfŠi=2eý(ùÓ¶>2ùÃ«&ÜRì…1 –A™â”l‘Š"eØVeeé
ââÕrùób/Ð‹)Õ2DXpÁ1C‘DpÑž0e¸¤6:Ã(æãódjGïÄ]ãà!-i).¹µF
…9—Î;ÆŒtH~AÚI[ÿœŽç\s!¨UœIÂLî´Û¬a¥ZÂIF5|Ç	È|Öks]O©ÄHbJ`5þ‡©%^Ù´‡‰"<š/’n?ÓÿC¸^nSúZƒxJ‰=ñV#IÄ$°ŒˆrÂ9ÓÿLÐ¤C©&=]t –®£Ô8m7j°ˆ:Â„ÁÈiQI±}üÂ|ø|?—¤»Û)¶ØòÀ-ˆ,fJ{Ä¢’&Bk2-$åP	/ð³ «APs…@”p¦•&–{Lˆ Üª,ß‘žÆ­ß.ÿº¸¹1óW/«û—Ed:OÊ@‰d<JP›c.'EŠ…‰ÚÇÞ¼­—&By
¨ãQQi ÎJ¦fªˆ1IA²à/°ÐÒ&tb$¡8W€v‡™qÀ–%H?`0IŒ¸´`¡ÊW¸£roËU†,ñR.EQ°(ˆ=¤‚³’;ì8u¼}D:ÚÁ'¸úÎ:Â£F ä#f,V r°R£Üá˜æ1?AïíßÊˆFdØMŠr™fIH=°L¨aB	b‘Úi–ß˜“”ˆ€¥@në‘ÂŠ+Ð!€'Xì¬sQ‘T»‰T®>¥w…>Ã¡ÒƒV#±
a˜¦ ƒª©h@ÜÂÈ{ê£Ó¦çO?ý4·´ËÍ»‡›	2ŒiêA3c*CRÀ|‚­¦R#°M‹ÿê¸Š
„¨^Ô2Ü®¨ ¯3£It!8`¼„sAÇ×~•Ð}2öÖÃÒìUÐ¹<Œõ_kf¥qdŸ£`˜K{ï8Éõãb
Š1DôŸcTHFÊ0§fÇm â±òî¨ Ñ±þ›ûtÉó/p‘ÖÅÜ|
´îuÁµx‡!c4§#ÑƒGªã ›÷ÞƒíH“b"J1ÆˆH°©}©kH(@# 53X|š„"Œ1"vVnó!¸²+Ja¤´æjÃRíÒÎ(4ß7DwCz|Q3BJßÎlpäX ï“ÔÔ Ú)ä¬„a¹•2ø”að1XˆÍøêrSPy$æ9Oñ¼Äd1³*«?h|«©ÏñrAQù”,6ßªà@;JµK{½¬þ ñ¾f½[Mª†*˜)Å9PVÌ­‹!&1ž$ÆE:‡Œ8zûãrŽqù'ˆq!ÎóÆ¸ÔƒŸc\Î1.Õ=Ç¸œc\Î1.ç—ròÏ1.ç—sŒË9ÆåãrŽq9Ç¸œc\Î1.ç—sŒË9ÆåãòãbAA·LŒ%Ç-¨q9FA1F}ŒË2jPªc\ŽÐQR¢r:€“Ä¸” ='Æå)¼çÄ§¨rŒÚ—£D”bÔÅ¸<EBBmŒËS$aLˆqyŠŽR˜ª—#DLˆq9BDÌ´—'¨©Aªq9BLJqŒË‘ö*×Ä¸k¹¨~UŒË‘Öjb\Žµ^TBŒËª`*c\ŽQñÛÇ¸X-¤ÑÙ=yŽq9Ç¸ü3Ç¸ˆ/ãR~Žq9Ç¸<V÷ãrŽq9Ç¸œc\ÊÉ?Ç¸œc\Î1.ç—sŒË9ÆåãrŽq9Ç¸œc\Î1.ç—sŒË?^Œ‹AZêó¸ì jc\ŽQPŒQãr„Œ”ê—#tT€Ô†¨œà$1.%hÏ‰qy
ï9ñ)Gª£6Æå(¥u1.O‘P€Pãò	Eb\ž¢£¦*Æå… b\ŽQ3-Æå	jjêc\ŽSƒRãr¤ý‚Ê51.ÇZ.ª_ãr¤õB€š—c­ÕŸãr„†*˜Ê—#dCœâ¦¤÷_í#\äEòtôw»¡¬s5RSBJ&_Ÿ4BG'Ð†46ˆ#‰8Ù»@â¤3Jã¯Ž\Œ÷ýå¬Ý¦ï\üöÕ0°fž¿hI´Tu4Bã)|âëüË HãÛ÷ßíÊñoÒËôë¶HÚÿ”ŸïklKr’ü¬Â7ß½ÖyÓ!`_úg° ·ùß·¯?ä_¾Ï7ö}õì$|³ØÙ‰w ²þš/Ã]G‹ê8÷üŽí¼2Í¨%Ìß|£vq6ßäW6+ã~NÆå6È#©ÆWŽEtâ4>ÞÏÝÍ¢ÿ{~¿Wïo{¿ÿïõà…[›n©»»îþzÛDNøðK¸o¸Â_÷¥ädÀxÌjPànæC‚ 7atÖ£Ÿv»¸[ÜšG>îè×Œ‡»ì>åX”EÓi£Œ?¿¾ÜŒõ†;+bôJ3KUÁ¥-s§8Až Üi*O¨ðqœÌ·™ÍŒøZ',°Bï1fŒXâ´—†§¢`,pÙøŽÑ2ó\¥õ÷¿ãK¬zvkî€¯¦Å9 )ËbT
[+½\-0¶Äkò*KHT£D×{ß·óÕÜ»‡q¿Ûå«‡YØ’ß§Gâ#nÕ
¢@Ú¨€’1EA©¥¹~'©³Æ¿P¨ÃÂKu^M•Œ’pÅ|Š„{ŽQ'¤øˆ.õùüÞÜ…¤Ìð¤¯Ø‚øšbúµMb#—F6+8ëãPù‰š{]¬¨ZÏÿÑÖì_?£se|-Ê/¹ïjëo–Ë›õäú“ú#Mfôt©të'~æT:hÌº[³ù8µz÷›ë€@¦Mª{
²Z}:ÞšIuOAÁõ¤º' à4;ŽR‹Ñð“ºÚáÖïƒŸ0½7Àøhî6“ëO§4ÑIu§Sp]?"×§‹ëÛznêN§`q·©ŸÖ¹òt’15­òtn¼©Š\y:[r:À	hù¼þËÍ]ýòØÖŸNÉÒ[7­ò	h¸wÔúÉõ§Srï§Õ=`ÈÎ1¨³]ð¹>Z¹ï¦-¬ÜWjw¦ès¢‰ÕG¾{‹ÐíÃ“`ít“éh¿<ßbÇÙ€˜_Ð"«£´öãÍ÷­¦éPc²
ìXYýrÉµO°ì/áäúÓ)Y…Ó2±út:Öw´§\ù4,'¨¹òt~½­Ÿ©îI(XÝ×é¶z-§Ø1Kþ»‘3œð¿ÁŽý'Þ1Ë?ÿðêýËÚzÍ	íåzs½
ïÿíÍWç¸óÜynÿ8Gâ†•BAP,,wZF=–(ï4’ÄibYÀûÓ.¿ÍNqí‰
1R”ö²õF¦b¬•*ONæ”8æ°Ä¥×Î1Fmd”JnåžX'™¥&JæF‰þvàáQ!˜ÔšË@¢”È2Î•Œ^sí†§’Œwôô¸ÕjüDÉ»wß=F±·ˆGiqðÁ9!ˆNr½4^	ï=CBù@Ð¢ø×¬€Œý¿ò£ÇèVÚovX0f%µ’)ø9‡$7éŒDéK¾Ý{Æ¥­ÍHµ@JH.ZbJ¸cÑcêdà>düö—ßë”ÿ{ïÚãÆ‘¤×¯ p°Øñ‘ØÊûe€óÁ–gf½kË;3‹Å‘×nJl’K²%µÞÿþFÖ…¬*f‘¬*jÆ‹õ#‰UOEfeFFdDFä?ö’S«u@êŒ¯“\ ìñu^"»Æ×9£åë‡rôuŽ¡oú:ÇÓOêÚmY¼ŸÐ1­^2B$g|WóuN o›,c€j_çXÚppôuN ŸÎGíëK{î'ÑÞ€ƒÛ 4|ã0j_çê–¯sÀôÞhú:§ÐOç¤öuŽ¥ÎÁýø/râëò8^ZŸú:Ç |£‰§ópðuŽ&žÎÃÁ×9šx:-_ç$€ðÒðuN¡ŸÎÉÁ×9šø<4|Sè§sRû:ÇÒÞ€ƒ†»R1J†_pV^2ˆ&’ñuNÅjû:'¡}¸ÞbÌãl·iÒÃÃwxx_OÜÿòfïÞ éÐ·ã±ÊMBÝeæË¥^D–…vßÜ¬Ñ=cáþí¬wê|ç àŸÕöŽ;xÇG	ØŒw|NÃ;>…~:'ïøòé|¼ã£‰oÀÃz‚¢™ñŽ©½ãcioÂAíŸ@>–[xÇ;™ÄíqBhéB8xÇƒÖÇà_ÜÔ;Î~óŽñŽÎF>ÎOÞ›ü7?ùo~ò_«Ÿ\á‘Ñ)g‚S-¥Á"*B)'GRX›?ç÷÷ó“j„ERÓ(pr}2µSJkLðÚDàEî×å'÷†%®¢s¤'ÄCoJ…´gÔ`ëŒâõøÿA~r`z4FF„³ÐÏTï¥vÀ½ÖHHâIž}.¯ó?9Ð™Æ¥Ø4¦4cŠ[%4ü§0ÅØJDç÷þýäLÉ¥%0lƒ‚~6)ïN¸h¢Å2xzfÞ?ÄO®‚v)÷i‰BoƒŒÆˆ@óye?¿Ÿ<“ŠjñRØ÷Ÿ	ÝÍÊ¬Ÿü2Ùe?ùŒ†¡:¥ö“£?úÉ§ÐOêÚåÍîD&Ëe/‰±0(‘É¸É/Óœó’§n[.#pjùHÒéï?zÈÇSOæ¢ö$½Áûï§NÿM ®ñQµg|qË1>…~rO4ÝâÈ'óãè‰H§¿¿rÊ$üþûÑcáÄ#?ãqôºpêrpÇ¥ÌÁÁ?–v2WüXÚÉ´ñSè§sÒpÃO ŸÌÇÁ	?–v:üòÉ|Ôø‘¤Óßßð c2ÄØL}Áƒ~ÉÒšH>Ä?«í€Ÿ„öázSt þš¾žx´~(Ò9ü•Xº¾ãÃ{eý ü-ÀÝ3îàBWÝ ók:g õÕøÉPMü°ƒ~Œ„ÍøßÇÀ4ÜïÈ'óqpz¥ÎÁz¼B—ñx@©Þ#IoñþÚÝ=žz$£œÝïs·Þ¦=ÜÚã
CÚ<?qycD	ÅœkVª­\Þ<FÌ‰/Î¸¼ÿí›Ù›T>»ä§¨g®¥7¥
ÓK³É—ó€Ù%*€6Æ½7÷aw¸ZqÛ†W"ûèè.=ÚÕå¶{;Õ¾‰•^U^Oÿ:>2Ø}¿N‘ óàÖ»çÝ><®gtØÅŸìýMÚDO\ûò+J^ÿþõë?ÞùõýÞÜh*{]<—wVçŸ=ñZoÌýÓ6Ü-Ö¯¿^ìvOa÷â¼ÿóÝ._é_ß¾=¶Gk¢"³Þ!á°ÕÞ3†m¤ºtFÓ-ã0œÇz[’QúÎ¿Ïr•"&fÿúõ¿õ±fa~Q¡§Þêàµ¦&2®)¬T¤Dà^‡[{<«éŸåød¶µ9–© ©¯ÆÌrca™–LhO&Ö§"‰áÆ‰y÷ëGgö}Ÿþ§ânÿ ’DøÈ˜[¥`ÖaÂÌP	_Ahp¢Çy8ª—Ï¸´Þ:»“Ý¬<IÀsBž+,geîzšÖâò®£_Œ8èk£ Þ™„Åòjn¤„t#X‹5Q¢—ÎH!„¤ïß0Ú†ÿ¯"lò=ôåiŽY³+t\ª?›Ó.±$ú%ÒÒDäyqâ`4‚›@
àZâ†ÍQS¶Ì…k0Ú:Qæh*Œz¿ß»°ýPTîIþüø><æ¼"ŸÞ—îê‰\<ïÖ+:Oxczó þÕ˜›‰C‰ÏI9¯T'}ë
¥:Å‘¦tüšµ²,QdÓ‚$.(Õ_7”ËIÊõ~]¼Û,V-…õs¨×eü&>Är’;Ô¸sò«xîwõ£’ýEæ±¶ŠÞ¼óWú&µŒ}²ÐŽÙ×ëGè€ê¹cì›¯¿þö çÏ>.ö³ðÉ…¢'ÌqÉ_î±]û¹²ñW=Xö]ï¡oË»´a´|{´ZNŸ!–L5l®¶Qþ#q±„aŸ‹M*<e¬Ãþ^.ƒ+>G­8\~pvû¸ññq½}Ÿ¼°Ï®Â¾ó€f¾Û›OŸ§¢›s›6@Ö 7f[Ç6Îg÷K³ÛÅÅîažJrwò’ã3ï z»››ÍâÌ­sÔ6{ñ"ÕÜ®{oÌA¤æo¦Ó& ´ª âþÛs³Z­Ë•úz³X†í%’ž^,žJw[°XÎ>tîÞvuß×àíÓ*>K¾ÿô±}ÿLƒäÒ=¶³;të'Ž]_)´üÃiY´‹•ï¹¼ÀˆØl×``íŠÇ÷©¸á…ç®CË6°\¢ªAu±±ˆ÷`Ì™ÃdK"Ã-¡ˆy\_~ªûŽÞÍêÉÔcòƒY™”ÏÝ2²wõÅ§%¨c­KËõ={wúäãîC“½ô³ÍGºÒzaqa÷¡ñF,âÍ+ *îÃªyaç—‹zònÃÒ|ZÝ]}ÎÎ«»îä÷És ”Ìî¹s¹h\cJ—¿sÏ@Ïµ~=„IëZ«åå¥ÒÌ¨Ç`!-CW`~Ëµƒ¥¨Ùµ‡k=¶^õÉ€4Ÿ¿#M€Ãµ6ÀáràÓn¹?<ç]ØÃÅ.ˆûzð|íÎ“Ûí×7îÂ‡Z/Ó¸;ØíŸ—Á®×ïs×ZL¶nœ •j´}Šñô5;ðÇKå†Í&·_øhÜv½å·ú=›ýÓÏI}úùÓã‡ÕÏÄ¿èÜ^?í6;·Xôßý`–I9ÎÝ³ë§•{v°v‚š}Â&Qþž7qgzn…ÝûýzÓssýé&hÏÍ½Ïß 6»6ÃCWÑsúv×sô¼ÕúSþfìk@Ü÷Ü¸ßß×“÷ÛõúÃsþÞ|Ü¾—=ìþkémþÞ"dù[Õ*Ñsóñ¡çÆªçƒ¾ÛôÝHZ/Ïß™füM0ßûõÇÃcñE{Ü^oŸ‹óc…G"ÿÔÚnó76gFõ6lÖÛâøcööÎõ¼l·2›MÏ÷Ým¶ý€»žo‘”nX¶f¥C«ßÓÐ¯·çÜÏÞ”Ãß‡Çû¶ÒâJq,µsZÎ¥qØŠvF1ã)DòãÙ›æCâÆ¿…çz8Ö
i\9I¬ÎGDE„6„™t‚*ÄŒæ6Üˆc0l®aøÏaß·ñ=C1Ç¸p”K$xÐ^NcJE| ŠÆò[VY.¿úÃ—³·û/ÿÖÃ›uÂÉ¬CÁÆ#ÇÅVp‚±œzèk¯Çò–³î²|þ±xðoß};+šmÖ³¯Ò‚úci­û™}î(Çƒ{*X‚¤‰Xà`B@$$§1pï%LÆèYÀû±mÉš£½™¥¶|³Jû
ÅÙÛã ™UmÚuõ‹W…JÑiÌÊ µDh­@ž"nœBXE¡ˆ‰f,ÌÛx j:ŽØôÖ­çlcÿ”ü#<8û×/ÿ6ÿñm:RÙ3Ú²V0«½‘\óÀ,$"u TcDE‰ƒ»	Ï6ï ýòo_A÷WÛ;³o7ËpØ±i¸Ýl³Ê½¯ÁÝá«p{ÆÄ«ÌB7³ÂGÒ6g"Â2ÏÇÔ
b5Œ^'­Bùóm£}Ä§l]þ¢_ùžZ‚Ôu'g«àÎqkS-Ú ƒ28D¡L[GKÌÖ@þ£VÚÐ—Ççz86‚iœ²-òŒÓ àOBB˜ARâzªåŽ>
ÙØÁ8Û€¯K”qþ]Úã^˜ånöÃ÷ßõ5Å+Š@rnGŠq=ÈìÀE´Ž‚ £†Ï{ŽSvÛ7·^Î¶åŒûÞ§ñ¡ ³¹‚å&DlXKª±Y&Xð$bÓÃúhÿ}wkè,ûiažžZô*"HIÎ9QÎ ¼E:`‹Læ¨°š{Œ±ùC×x´dîÙt:ÛšJ4ÿP?ÜÓ¢­å°hºkŒ6HRO-£œÃ_R h±§Üúž*Íbj‹zvÈ.µì«+&¾°[k`ÕÔV ºD`h`´ÊÃ
dˆ/–oÙh‰ÛVXÎ6ä‡RïiNøÎz”S¦ºe¶Óus+D¯w–)UÄ	Å#H=•JÇ|Ft<ZíßPìirñøAwþ—Ÿ~úáMñxŸšŠh&DÐì=!;BB„ïçC²` /äxþ?À’ë}»ÕÝî˜SƒÚ#	„3AÓ"HÁDu*î#¬òŠˆÑ½û¸ûOañ´Ü/æoëÑÌþb–lëíQ¹ìì…v†Šý: ` „UL¡_\Ji¼‹ÜHM@Q8_ZaRÔWŠhX†ý<¤Ô4ýñ_oËÇf(ë[JÀŽ²˜ƒ¢ŒvP')10±¡ûam'+á£¦£GF¹—0_õ}ýPn5ÔëDòYÿùíAÎîäÅ½VHMç{xX^É•)…0¬†Vriaøã¨äèQÔùÜøLÅ?ÿ©§³9u ê+N…Ù%ÈM/•%$ò†·—°nK;‘EçÎ3÷¦rƒÿqò0U:ÝŠ•¦šzäÁ\B„k&‘ä˜1ä0”ƒQæ¡p<;ÌG«µ¡§!oúÜìée:µatÒ(˜Laâˆ¶>D‚˜sž0ÙÎOÌÑ#½ð@dù}»HVÒìÛõý}ä‹Å—ÁI2{Pøþ+'ˆYz®a0›¶sÑ8øP0ìA²+_ÑÃßNaLÜ­fTþ”|ÓI²t	IvÇQUï°t3I	Öƒ•*šžiÆ-ñ,eò.ÁÈËGtŽZµS'ÛŒ¿T7{†V´&¨Áh"H«£¹ïµÞ’H( !æ­öåsÔ¤›GÝæ0lj¢‹2€ld*¢@SÚK.f†8ºAô„:GbÞh½b|XùFwûä¥µ@R8Æiê„ˆÄc£RL(ÉiCFï­výdy¿ûö hÁ ïãÕQÐ™" ª„@˜`*åÅÎÂèV)¬6zòå¼vùý±z°O-Œñ¤¼{¦°d.ZI£ˆ	CµÈ`”E£-­–g°—Ù·õ}»$qÐZÁÐ½ 4¦”‚,Œ2Ub8„Ñ{gñŸé!°)ÒS§[‘•tìÌ9c…TFFÅ`Xé9% [¦Ö+ë¿qÊ«´ÚßŽRáýÞ¾nŸò¸…åìw{ûýw_œ¨¾Îu›C™Ž`ë˜H0Æ	vZ f:²È3w$¿ÿsû¼R½!Yè÷4âœct%ÊÙK!½s #´CL§Ãƒ¨sá_éô¨˜“Ó¸Õk9º¥—‘e–#Nw¯fãZŒ#‡ÐµtT´ÁC)SÙ•Ô-Þó1p%¦íBÞŸéØ¢Îrúœ@çøÚ/š	¯«@È\iÎP˜^Vªó×5è3uÜ-°öŸ>’q@¹ÀºB }þ9p‡‡š{ýÔ¼ˆ§‘€ÍžçbÀéëQS:b(È)åÖm‘É¦Þ¿­çë1uÃÿîP§-ìvLx2{ªø"kÓ ›,öF?bXðœCSÁšlU»ŒÅâ„Ðâc uîÅÇ£fÃhnì1˜I ãßë;tGM²ÓÂ¿3Lã$Ùaó®X&‹Ä"×*PÚn®‰+p2ç–J¨âãŒ… CšÒKßÎÂ1©Ÿ“Á¢†çòúo;ãøqá½i £;2H›J||m¹+–zMÞ>D¢ì¾°Ø†÷Ú* ¹¤•CÄÁ0Ò#Ë‡å‚pNp;ŒôøÊC8s¹à9ÐÎ¡Ä×b£5¦ÒœhípòÆ«»ñÕ©Ç@hÃjÅp0%ÏÈ!”»0Iæd€‘4¦ÅJ+Ò»¬¥Ë†ŒùqR89ú=,Pú®8©Þ}X``Àùƒ¦ í£yZîwÇ§øpâ´:s9Û”0vÿ•"ô§N_t«@`ôûÙ–Ç™ËL:ôh\uþµ——ÌùWÿÃœ³ätþõPòcVòZ8=JµïX/%wêµA¹ØÕÌøfå‚¯¶³æ?ÂÚVîvÍ
3ÃìB#éÿ¬Š‡þÝ×_}÷ö‹roë§‡Ðhuu\ü°½W­ÝÍöé±íú~kw³UÞ™ŽÞBíCÁ?X­3Óå²„{5ûø°p³‹år¶XÍöO[xv¹\œ=¯Ÿ:8é$kqœ·UevhÏî®à¹hÚ‘ñ<ÇUŸß?˜}zå?/ËÓ ©!éõÆ¥<V3Ód=õQÅÿ¸ãÂÓ*»|¶Ó§»êHé±ïÎ?Í?ýžÜ½Æè5˜±áÓÝÃ¾*&Ò:”Z–uù¾¹¹Û]çŠ#xâ.­@Ný‘ætœU_ãÒ£Õ~ÑW¡¤™§<R|~Xe“œqÏŒ"«™Çˆ[JDä©BfT°Ð™mâFóŠ´8“ÀO`ýÒ[§y´®i…%mkýGê43¶{#”N‡Ñx7Åi¦øÓê·jÙf¹	Û©¿¹!O•9y+œÛq¶wÓ;+aÜŠ£fò—© 7æéPÔãVP7ã/-n"H:žuˆ[5ª ƒUa^ž$ˆö´Ig§
»åVm<âMYm¬‘ÞÎ !}EIÊ3@~3@f'H}ù‚)Bþgš"÷æÉ/òaçÕ½¾iÚáKçÓQk/1‹‚h¬æÁ²ÝŠpÏY16JÁpÕ@©)ßÌÖ>Å|ØYîÁ¾¦ /ÓÑƒ­&6H¥	Ç(
Jtp†SÁ1UZºžˆ×©Mjgµ1BZˆ7Œø] L›("ŽQ[cèÖ);«áPï²žîã‚^Fl¬—7mÀAtíõ´"m»|¦€4Ü`Ca2ã)íu–xrmgL@¹ÌN³Ÿn	yèµñ å É%ÿ¿ÐU×R^±u0¤5ÇÃÝæ8¤' UÛnÔ¬ã¦ÁdŒÛqtÜ2¸ÌÍøª6¦BÜˆŸãvÁdŒÛrt0én„t+î[ã1ê‚‰7jQfŸà2X;r&»M0ž£ì.Á-à&¨3{WƒÞl‹@÷%é-œ”ˆôÛÁo{³ßœ”ÿSvFZ§N’èžê#Ìâ¸³QF)Îî2æXã38)A–Ý‘Lœ¥Àø¥ÁÌ9­tŸ¥qíe[ã&0Í%aàmÇ4¨Òæ˜Žq³ÆìŽ[ Ü’«ƒíq# òVÚ7 ¹Oä(·æªÖo‡u;k[dJeLÇ¸Y»N-’!pSC‹GdCÑ&wòD;€k° –!¤#ãû^”+»	B¬£Ñ+Ž##DÓèËd#•žù˜r1¤#•O ¾:”É(ßšSëzX*ulêÃ÷I­pÔæ}Øn¶a_™ÆûE¥é—O•©L‡øùÓ.%”z\Ü?ìUw|mŽ|Ž£¬sµ¬Ï‘þQVŒ¨ërëgÀ¿Š‡¾ZÃx<Wo£¼W¶0w±øç¿¯ic¶z W¡¯÷Å}ú²¿dÆñ_½‡{GŽšR3üÍÛ7Š$e_U…5šõL*ýzëžË½¶u­õ¦#eójŠºofŽÌóîÀ8½µ‘R€&Ç9%i;Íg‘×§†F!Dz¬‡²ÝßóåÂîN.n›“k»°Úµúìkì¡¤Dup„°Y¦3óÏócêò&+Gü7ÍP_üáù»çÚ<>^5ûýv×¹vúòtÍ½O)—OŸ­®Ïw»åÏfï~~€YšÄi÷ÑÝ	OîÁl}Øw¯¦ —:—‹¥ìäÚ‡VýªËdúâ™Kó´.ž^Ú/–ÝÇãÓÊí÷ÝË¿2ÝK¶0š»¾[¬Þ™î‡:Œ˜Æ¥OÝ¥$ÜO›‰Ýy\»÷K«õ®ûÔêéqóœ»v:Žªë‘œÔÃ¸qeùtòØîÙ­7÷ÝvÖ—³ßðp3©Ýî8eäù>ÍéÓç`ºÞw¿fuu~¿]øxJ²ƒþ;½šØÈ^Ìõ7üýËÉ¥gsò“Ë4ï¨PunìÜâ¤é-±‘¿‘2Ÿwo.>u¯$IçF¦åû÷….Ñ½šaâi»„áL;W?,¶û'³‡Úõ¡˜¹}‘j#+#ËhV–¥«ÿñåwÝ‹§Žf=•N4+h^:Ñ¼à §‚æ$í›ãôtÌÑÓ9N3sœöÌqÚ7ÇinFÓüŒ¦çf4=7£iwFÓüŒ¦ÙMÏÍhšÑ47£iïŒ¦§3šæ'/ÍÌQzn*Ò“©Hû¦"ÍÎ&ÚžMƒê”ü¯ÙŸ×ûPîi3Wœ¼ŸùÅÎX°#
¨dˆ¬cÚj¯UB
F‹­„W/`68ó”öÔ›ëðìwÇ½þ±‰EÖÆM “vÒ«LGýòy–,¤ºûAHÞ‡Ìºýz»{Uhª©!MœzG¿V&3dM¯^t7ûê­›Ýª´­#ÙÛø®Ôø×«åsÝäW©“(Ø¥º “	Õ„1K°ýsÑûš™FwXì“gfµž-aLƒmÒ0‹eñmŠtjÙž˜]¿]ÅyZ©@¿['úÜlÏ’‰/îšOþµ‡1q‹Âýr4íÓ~–lëi·dm–Êø_éÙÔWæCQ%²øÛÌ>šçô+¬Š—íÖðõað“3¥ákƒoõ‰…þ¾›ý5}Š}a§aþªÏÉÈ-qJCu¾Û·ˆ×„ kµ´„w­~ýßÍ^|š²»
0š]áJjUuj{æçÊ ‡†7‚WÔ[
µÔïtZÐ!„Ž)Ž¿ÎÜbëž–fÛœ6ì?†PLP™ÃÿY¬r¯f¥ÿ¿§ŒÖ¥Jv•”ëmÖYñmµKQtÝÇí¢¨¿R“CH`Õû»»2ëqƒñä,}ébªìÏÃ²]¼°H÷iHPž¥ÌôŽ*M15QXSŠ"Æ{b¨§£‹@”ïÌ¶2ÝHÕ+vÕÞIx\ìÓ>JQÈô¨ŒXåF‘TÈÁÊ”p7¨¨‚àŒHî„×"hÏ’ŽÅ±¬ÊJ–ÓŸ
ñ”ø*t´UugñKã»˜ÍÌ~sÜ¦8ð­ç(ÕY7JjësQ)Œ‚¬PEšÕQ¦ô¿âçK®)°g)ï±i\Œ˜ef»¡[,SîË¾·HGÄ	t¸VxN)¬FœÂÑZZæG'â+çÕ¹ª›õÇ°OËYz0uv±:dyœJ§hL¹D1ô²Õ0J¬âº‘Tâ†r1>c%\*}ø\ncãÍ¦Æi»¯ xýÙ.Ì×_ýåmö£¡(RcSJQª1˜ûIÉ¼·»$ÌÇ GW†¨Ø/¤×Yæ÷É‘÷Ý=«¤ÙÌ®SÊà´W:<FTH›´˜Èh­£5C4ÀÈ‘yË¨™2<Ï‡,ß6aJ)+ëgÃa³-³Úž$ïŒš9èq W¹1DË=
Üacð"R‡Íø)Ùe=³g“40^àÑ»ö£¿ûb–¶EŠŠ+q»~<hwÇªÒ wßlViµ¯k…ºãôæB"a=ŠÌK-Llæ\Edµ#9jˆ5£EiÕþÊ®Ë6õÜ3.Mà~]èUæi¿w_faLêPÙÐN3g=b1õ{ŒYQ§¼ì!e¼õÄi¢ƒ1AQFúQk³4ßªµOÁ.å©Ué,}ri˜4„ƒ´"Úë(„ æRˆNÛTw«@Æçq®÷=•!¾þóÛYRÀßƒ–|dñnöï»Do­G§[ßüðe´|4«îyoÊ„–ŒÁˆ2I­ &ýKa¾<‹¹èýÔQ•vóinC÷övL…G¢13£”K|4:hRæVî¹C–ŽN‚{ä²Ø¦È/oeÄW¡o×)Ê©°+–)È*Õ0lm¨·Ù7Œ¤²FcA•LFÐ\¼Oyý]ðÙ8¡þ\Å~½{n±8%xpUŠÙJ>ýá*HãÌÈ¼19Ì`ô4Ä½#/»³û‡£¶6:c,*œŠ()Xu¤H2ª9³A&)ÅJ æÙÔ…2í&e›þM[„…¦rôQ’Y_6ÁÙï¾ùúÏ_~Ñlb[9ïecc`ýQ–¸RT(P}#¡Ä‚lóÌbg¨/¸ne½…žÿÊ°rU¦bE ß‹¾œ¨j¹F|ßî‡¼~5
˜	ÐŒ	sO; v"áŒCÐla£Ð …NÜ¥a˜mêŸ
SdÝÓv³Þ%ÁýX(<³2^gñ$S³`˜g 8ÈTaÅœÕš‘È¬TÒ®êP±›ü½9Rzvk¶Ïm=•°2ì¥õ^@Ç’tÚŠ¦Ää($q,„Sf²;n¦æ'K]-.m=Û¯ÿå'øãoéÏÙwé,Ñ¦€ºHÖðÃ`†…‰¥.BŸÃtçX¦U“remT$¡%£‹ÕiÓcFURì;x¢PT’1T´ôãÛ²ÿî*üŽ^b´”b%	åDÃÔÆ‚‚Žì—V¨@qê·H›Õùeq±+4’ç¢P€Ÿ%‡n¡š4öúºž¦ònI3vôaâ¡Ë¬–,,å0Œ(½•“Åm¹Ò«§Û YËém1\6h	§jo¦Þ‚šúhjçÀ¡Î«4óó” ?J¬-“X:í9§žù”¢Ýñ©EoêÝø!Öa#´¹6;392.£7,Uú0¹TwÔB.”SŒã`@94rêRÐ³ƒPîÂîN[Ý»ù¦ÞÙÜ? ôj‘
k%A?Ö¯f)àãU*p_o/,º¶W2TbÀÚ’Ôu`‹[h´>Q –tj§ÎæÚÙÑ£nõiö°¸X¦8œ4KQ_l·Á¬8Zý²ˆqðDhªA	”‚šËÓL9ba(r+ðT·ò¾œI~»øP¤ïÒ³_Õ;”…À‘A`Ã!€î¼÷(U«S$'DLU+WÐyÁùöû7ÿö¶}–¢«ö]Ð˜ÔÊz¼/RUÍÀ|°{0ëXw–L¢oU4Z¬æ·ÄÏ^±~*<$¡ÐT[–R0»<’\7ÅÜÙ<ß%äc«f'Û¶gôÁ¤FJ!‘ck¤ðmÓÉ£w`v/¢™*ê·g›žŠÎÕÊÆ«ÓiòªhöÃé™0¡ºµG4(s`çF’ênª¨‘PÄsM½Ü"˜
^ˆ©§íÌ6ä«%hN°zÔŸÔ×reIgP¶u`à.ÕONåÍ÷æþâ{ÃCÐA#L¦ÅÁ‚Å$hŠ´I0‘] Ý^Q«•]‡»îE¾bÓÁ=˜¸¤…knÚr8™ª9Y¢^yë±å”Ûb äž	
tH­Ve:–I,œ³ýg7Lé$ˆËði‘Yßÿø]=¦îÎ{@’¤R`¥E!PË#ÖÁ°óDDJòTí¥]çz½9yJ°H~Ëy¡ÿºõjUmzm`èÖ*fŠ’kŒ³#|åV˜¡¥`„¡Ó,:U“ºTpÕ…,r´W§jøÑKÞë6i#[ìÖÉ¦:lÍÙb»^Cìƒé¢RÕ6¬Ó"é÷ìá×Ö8BÓ>’aSÂ"2&Ëù¿'ùFÕÓÊ‚ˆ_VûÍbS–kkÇÇ›á’!•w æƒÄ³°jqO)UŒ™ª'§òÝ»=¯_~g¢øåÜOnsªÈÚÀxZ6U>*Ìp 1pÌµÒkÌD¸ˆf;7-~(Dp¡}¹uy²³5à9
˜Ãš¥TVG°¬=Ò6•lMw˜UÚ©ñ9M*>áaçegŠP(Ÿ›Í;Kw+B£#F©•2ÐßÖ0 A3ùÈ5~:;óQ4u\4¿I®‰£LiP-´Õœ¤"ƒž1X¥b0A×µ ¶Oéô_²þXE§bK [¯ì«zi}h‡ÍXö°&1	z¨Fìkf%Rš3b¤—€Ø SO/x[D åM	—”ÚÂö<º‰s–ƒ¢A _Îx)8ô-rš9âI#ÁòÞ+ù(wÙ™ƒ†e˜A‘…¨\Î.åK!Ì/d‡+ºn>•+0Z[JÿY!ƒä*9IõRr‰ôGãíYûí×@´^^”"ß;®O+65	[gú‡™.ãýðïñf©xØiƒstÍ¶^‹Ñ>Cô\f¢wƒ^ßvm_Y¥=§U*ÎÒ¾å”@©Š†’}¥E™Œ9>Í‰%ý©¯µè^ÖÞ8-fr¶raVÅ+ØàfÕ¾@ `Å`:­9p}{*\ƒÕ•°è_èÝáŸ¨:[Ôm§I•.þ°2+tä@úÚ!UUQ>¾“K§œÒ™º'ç)k‡G]ÁEÍ¯•c-×CYyeêœ%NŽ€â““;š©r™¶;t.ãä†Îq¯¿\hªš0ˆ™d}P” Ø’´½]ô?½“s:päÄuÒ¨kÚ^š›ÔEãÅÝà¯xÕ.'ÐàAØŽ¯š^ƒ”û–m°ÃÐ˜WÔ[ó\• ¡CçW½Ù;/ÿ¡98@êh÷¢Îåˆe¢¦o~œ«òýÐ kh?£áŠÚ¢oÅÝ`ÙÕØÐ* t.áyˆz—¢ü<iöœüí]½z“C›²[”–Šê?õ‹Æ©ÀR†¡+`û\á•(9ATí7¤Põ†1rÜ¶I HÜ¡Á²¼Ø;=ÝÑTIlXWª?ÉÏE˜™õiÍQfL¢¸r,Ø@;3È@­;1ÚJ:RÝ³}qõ=ÏÞ®øècågpÉN†šÙö4)ò|´ÌŠªY£Ñ
IS³«ÔL@ii3cq>T3b4Â ;+û‘‡ØZý Í‹2ÄjËbµÜ² W[oyê¡\eˆ—H§Ð'«¦`?}{ÊDlæQX„ÙbæíÙeÑØ¾+zõ` ^s¦Yéèñ4v6‹M‘€Ô¼91âÐŸêz‰¸Ô3'±0ÄlÏ#3ÝóÙ²¸oˆtƒí€.æÍÐö£o,Òµ;ùï6pW dÐÎ@O3n·;ÐÍµ1jÈÖ@Oÿñ:œƒ°ÃÐóË¼¨m-##4•2¡ÈOS¡ý¡GbÝ5É6©•HŽæª-ßâTŒ¾ÓJñº8³=Q"t©Ä:l%¥ÖèÒª1VFàdºæR/t7aiÈ.Yêú²<ýÐÝ²ì·ª$Ëx}¹Jª3£úÆãî×e;tÄž]gÐ¾Ý„I8×‹éã”$EºdÝZ:×›äÓ¤éèfæ’‰ëÛIðhQÇ{z>ÍÌ‹rù4C”ažÂ…ù4	‹˜)úmR>Íò­—òiÞ/>„]•	³Jó¾_‘ÔU†…cjœ;‘‚Œü—?|«^ÍÌ®L¹ñ1,—)}É!/g‘ä$ûæ¥Ä›Ö7«aÅÄ®.r,V»}JÊ’2»T}<ÿß‡ÐáCò˜©â³VJ‘ß‹}3aAy6rì…Ï—øslFÏ*-guõR’ÎF¹½¿cÎËBùõæCHÙgÏË_ð;8å%°xšò²hÖ¹Œ—Tœ\h…6.wòÚ]Î¦Y`çSðçÜTí{Uè4ÝY>W\&Ý›_€ˆêæ;IÙ›é-“•ív™Í²©Æúr‡õäÜ£‡œ{'Ÿ´õAOò¹5¿rß7>ŸÆ¯/ûhO¶ÍLËž´Ù4‰}éÇgOëf¸êækúãz{”é¥À(b³9ÌÄ+X
Êìk ÈŸ›´ÅŽKÐéñ×ÅÇx}ìèBîã½ ö`MÜb]û¸^ýó~f,,i5kŸJ Å¹÷YŠ~ßuR€2—VÔ÷Ù?ý¿ŠâçÍûûjIýÿ^²ÀµÒƒu[ªZ)íLo)ÿ×áÐößþÄOˆ‹Ow³¿¦7›fˆj±¼ÏV¨­4`Àæn³\ì™°VE/NcVºã«¨¨–°V
»"b~],†ðîê`TÑiÙ‡Õ->™aí}Â¦*j“8žuRÏU¢J}8CÙù„¯«OX7é$Z=M“‰]¨-RJ¿_MòŸf9O25¿N){N®ž>¥óÃeR ¤ Íg¦ºüýÛÃj:KVùö±Ì»ñåß´›'¨ 4RI\Ô*=$ð§äÞð”]Œ1+”ç„ÑÏÔ¼‰ÙB¨ä!ãÐV‡ <Cžƒ¦Œp©–h,5nö¿5ó¿Ž$"7mÕ¯ã¤úM›ôk9m|ãFýý!ß´¿šs…7mÕ¯æÔ]³Utj«úã%½m?o®†…¦ÿ”ÍÐ#x·ü4Tô$k¿Û=?.«÷õvG½„Öi'öîf_.AoªKçg9Ë`ÖÍœÀ·!ÙãÅªpÐ…Z½E­²”ã4gi}vŒ Î‰P©>:öÇ`Hg{î­Äiªéßù\5·–‚x& ò2€ÄS ó2g$
Ul^Wû>Ù½@]†%o`f›ú"í…8Ÿóôâ0® ¾ßBÈFç_vöžçâ²£÷:úkœ¼-¤é!à×ÃqÇWÁäúø¯ÎùNº6ú"+×ùCÎ3ÓÞÍº'ÇÎ%wÈYFèPÁ‘á€^
s½4Fèõa®—¡	²lk³>ú!-‹1D¨e†Ê¤Ar)û=n)›º¨“ .yõ®E¸&6à
¬¡ò-‹2B4e?ü ™ra2Ž¨>±*×®%Ìu£8DÊMA(ã¸Ç#´c_®€iõß Ñ=ÎgkÃm|ÖÉÎ;º’Ó¯®ÏZÝÆg}ú¢Ÿ5F”–[µ•ÏLl”r;¼˜ì³No½¥ÏZýæ³¾ì³.k)V§¡lVwìàRAÊ'—à¡Õ;¿èÜ>åêv5'G{Î““Ú!Ù%¿ùaA~v5·ëõ&©Ùlø‹ûâÞ¯ÆÓ®ÆxÚÕÉ…¼§]ð´µiû=íÕ»¯È•`Sy¿ºš›Ý
»íóf¿îÞÉT]SsãâäZ®î\.PA^nž»÷2j5_øe8½Ö­Ç¦²ÙÔimÆt­[œ®õUnSÉ%ùóÇÝýIû2ÅÚToU6uRz±¼”sæÃå)ù.Y§WseÝàú³+kßœÞÈÔVS™ji*W 1Ôlµ“Ü¸“	zP}E[wò}sR}M<L×2ár¶ ›Ê¿©¡à¾¸Xá¦Ì~ý¸pÉçN•)_˜Ö6Ìáém¶6u"­ÓÁqZßOÔãKWªÜ¹™é°îãÂï“r9°"Ýÿù?ÿ'­¦¥ Ÿm¬óô5K×³1ÿT½²„0iu¼Ÿ‹Ò8¾nóüjvhè?^5;tZz¦he6	÷)´ªå÷@}|¦HEª$ŽÄ(!#	A`ÃE «äñT>:¡‚ÒŠÎ¦z¦æÕyÆ¢t\Kå´áÈ0ã ;âÞQ¦5ŠÑyâú+\çËKê©²L ®™ÂR3ÉHð1y†˜%VZ"$q£;¬–ß#X£ðú ­ÐSˆdÌ#ARà“…½œÈÑµSú‹kçá¥åÄjë0qð%Iô§¨Â0ALbb=š’¯¸¯vÖÆEÄ"*	J&Gè<e	1NK©ånc×ÅÊô0cslX´È…¨”
ÞÉ•aŠ0ê„¶Zp5•Á£ú4‚GƒhªU¡aô+f9¥Ž#V#ÎS&B­ˆš\?©)9GpÉ¥VÊ!.”´ÊÙŒ¢ØÉ¨¼g”ª *!¥0w&sy¡¨X{Æ¥ .`ï3~G$¹ ù¢£œ:˜Û³P|Ç,LJ¡"6JF27jë6DsF5ÖÎ¦=—À§¦>>W"ëÂD¦(xî„Á¬•ãÁÓˆC\R-£zÓLÍïÞ4ÆÌç@ c¯$,
:gÚbÖˆQH™Èeo½žóÜ¡¬ÒN{#9%°ôZn4)já¢Dk>5î¹Ê3!	RbÆH<ëa	Š ¥`*§,ê"Êh¤Ñê³•š9Ï]ª'„Òf°¶6 Ï<(T0G-¬rtª¼Pdæ<,P!tÁ¥„ó&„HA‰2ž
-„¤H‹èÌäñ×6Æ¬z6Ð´Ç-ð*uJZ«¨‹JË }Ð’CÍÔ/}Ð¾G°¨²ô,¬áû*.‘Æ€~‰4Ñ!‹‹tÞO®¢Ò_æ<DX¡q)‚…á(I1-°²DJ$¢}šÜ…ËQú UÜH"rRXXŽ·ÈyjeÄ$c…‘ ËNMþ_îAŒÑ£)ÖÂˆãO	B¡£MÕ	$bÁ²kãiÊÀ=™¿Ë%rú>¯õ1õ–†5E¢‰òL…ÖÐ#H4pq*‡c¾®ÆÐ[ÊRƒ9wÎ°À¨W‰4ì¸4’]J¦ª2‡=£,"—"£X*¢ˆV ÚPK	á‚Ê¤­sÅÃTeð\9˜’´=Á@U•Aš»4%šƒÅ,†ÙC)å^L3<[ãäÂ¹À¤Š„ 
Bâ`Aà9Î£ãÎªô”OýÊ
xôiÓ4Ú€Á€„yoL »7D­&Tr@—¥nrÍ„+j]ôÍäI.TV¦„u„›ˆ0ˆ‘uŽ1K…«¬6ÉÆì¾p¢EXëÂ:Rî¢³Ø#XÄ’F0ŸèT…º?Ðõ˜˜?iÏ-XDÌƒõFÀpâ°p8K"I	NE€ˆ›^tªÞlú½e%àÓF­ATb«J½bÑ¤hhŽ
 ìÃj7‘ËOýu%Ît¡gERU”¨L—MOaIV°*ƒîåUL³0Wï}Ž„ÚD0Š•¦F
•¤’p˜Ò¸g\{,£s’Mœ%Àä¥Zg:’¹Hâ`»)Ê6L{Ë8†ÉŒ-M²›;Ež²çëC\ÚÖ%Þ¤e,„ÓQ#¢A$Ò“lô8íð¦G›#ýQË—vO£W°n€.¥AÀÊbš§SP2€Å™tÃQªß•…t
;M©ÃðK0:@·ìŠÊW€äK?pxg’^ä_Ÿ-ýpDOé™ÏÀ˜y½]¤ÆKÑ>§)wò„¥W±H™"ïh&eÊ9²n¨Ï¹(ßf©Î¦õË3q²#Zf*É&:‹¶ÚÊ¤Ð¹1Ä'=q(×'iVO3¥œç¥±éU¢ëB¡›—ôZ®I‡˜¹,]gYi¥­„aq­hlÓe“Ã^¦í–¸Œs±ü  9éX8_zË&3*S~àˆp2Ì.¢e£ê—Ïe~/œÉ*x¶_J3½k†çÀ±UQw%äe¤³¹û‹±uwý2Ñ¥?ä±ò'*·¯zpß42ÚÉá¶s-‰À’ã8km+OTJÜ5ù:…Lrz'®^ƒñi,«ìº!ÔKT¸¸„O˜‹°UójÊYNZöÑpÃÒ\È´¾šæaé1yˆ!«r¾?ŽKó!Ä~<Ö°¥¹§IC×ç^NéCêÓq€Çõ±Ó¡}BcJãØØxœ:€~,B
œp¥Þ“)Ã”Ÿ<F•¶{|¨Pg Úy»ÇBÖ£.ÂtÃXÀa–Wdv¢Ó¦‰`ÕIÇ+`ò°‘Í{;e6n¸—é<#ÍŒÜS`®Uœ{È‡hÏ==ÑP¡«Ï<l
}¤³M†«JrM:&ó5L·ïùøƒü>Œ:éXíî)zðÆT¢=Ç‚µ[ò­êœv»¼ÜåaŽÇÞèÈE*w¨s4V3Q3ÃE€1ƒ&“«y
Úõvbàu}¬RrÌ<c ÅšoÉ ³õÄd OCVÈ;øÓˆ¡Ö¹Z&å²"_ž—˜^=Á&ž/Ý¿Hg)ê3Ÿ)„²}l‹O<Xš{CãL))Ï”"ŽÁñ”§ép¦T÷!°ýgJLð³MÜ¥SŽ³÷áyþÁ,ŸÂ!Ãß‹üqÒ‚±¯šðâìQÊF*ÞÎiÊúáñTâ›7ó¯þcþöËWŸìü#ãñõœÏ+šz·X¿>MC·ß÷>åá©Ÿ½_ìžì|ò×fµ‡×ÿR’¿^ìvOÅQöø8wö®þöÙƒwõÍ‘9Iò”ñâÙ”âÉþ¤c!eIìæbâ!€¨¥NäˆðBˆâÔ§'’ÊÑ“‹épõ6ÎÃ‚ÿB#IFsëÈ;•—«—ÔË dh\BÕZPJÂ¶*4¢±'>¤ÜõK^hÜ×WkÐTyú°š×çÓj‰‡‹ÃÃíY×¦ÊÕÞ75¤+NÒkŒqÊ2¯‹ˆ£ƒtB{L¨>/]gÿbö³·f@»Ø—ûC.°tV½G¸öNÔ—GïSTCãØ}ªOWþs±‰ü>ÌÂÝ}9;‚Ô²"Ëð¶ÈV»¸*ç3ÈŠÀ¦Þw,¾y ý îÇ	p|<¹½«Û?çs·\ßö?ñMÏi7ö:7|4Ë÷ÐUï‚Û/œ=¾]&P¸ƒó`öPëÁ×a5Ú¥Uàg¸ÿó¡I¯yyÌ;³ˆÀÄÿe±\š&æ •ãýÚ¬?Ö;ã?*o~hZQ®¾Òñìr1ýaz¸§Ý~ýX^l]¯’Â,~)š7O¥M›÷]¼ïüœwÌ@Ð¸\~ÑîÕãHlÞÙ<í¿Ì»Ýg.—Ès²w[½s¼¼Þ9³É\ß†Ç5ŒÀcÒñöí§òŒð¹%Ô­­]ö„º¾)ïÓ»LöÚXÅ»šlV,Œ»”¼d%-ì‹ÕI
DŒ$2(XDqdAéÀ‚•Œ¦¼ˆx-±–å3”ŽO˜ÆW>®vË4·aeì²ÈÞßq¶Zy‹'+Yx*ðˆÐÅçì6WJ4h¢ÅžTÊ÷éÁšX/R]å-¹qs;S#Ûò/—ËõÇÝ!u6SE¦Ü"S8¨]…Ž³%©Ü¯K•{cÛ‚ªÑöÜRïbVx%%FÚ(S V€¯.µ×ŒpÅxô4ŸœzZ´EB¶Kþb¶‹õÓ.ÛžJ>ýÓ±yZ–«R‘Â¤oôI5þg÷i£h¶xÌ¤Þ¥\ÃÔJ--ó’Ê€}*…²ˆ+¹ÖVØ[§-eX¶þ¦@Øõ®»ÄÐ~*º©ÑüÞ`w,å¹5X`m‰“ÞRÅˆžEocLùØ{rùNjsšÕgb/Ãìi³\_¥WÎnKÇQ$‹Ö:î8g#KM¡ÕÆK.˜4Vð[Oíöº’mP1û‚{?K‡{@-rëå†4¯›ùãSkæ¶f\Ì`ú/ƒo|Hû<ûò«ê4ÞÆB3±KV$Ã’A«9#Î²hB:~óÙ_iù¬¶O›TÛ¼Ê+z]¥Êþ9%¹µÓ– 1•Î"åÄ1‰1ˆK‹u$þO)ÒÁå1>šUò«oq¶[øÐQžMáéƒž
¤“ñ›™›³ôÊr‘ƒ>úÝë°w¯wÏ»rò¿†Q”~íÃãÂÑé2¤CÆqB…Â„s£Ó%Ž"Ã%Ìe-ý­Åx[=:ûíù«M³¢/…x§1#Â(¶D Êakî)÷ŠÀ‚­„™j‰#‘g3>‡uG©Ë¶æ{°MÞ¾ùò‡ÖD>LïÑJ¨ÁG#EDDÆÈ`f¦ÍDc4hQ»ÈÍã[|”¦šmÎ¿Ã0C‘É­þ åx5ÙE·D\>wgl q«$¢Ú`ÇÒ®9Ó”++´•Jy,Òªzs­ª­O=Iª.–0Oý"ÆÞ¾Ža¯ù®HE$&b¦SMM¤Œ -Á Ä†%Q  —’cÚwfsªRñçeápÙ8 S÷%Áè¥¡^ÐHpcƒ*M¼«ÉZ‚¤¯»:ßiÝv[ßò45ðx–k``^Ú½ãÐÀÙ5BÆn0ÆîdÇ]25™×S1“Y]´ÝJÕ	½„Riê7B«VçÛ€5é &…¶€ICªm]²
6èÄºEjnÕÔájÌ˜h/ö”˜ÖÌb¥­ ø4¦žJ—rBÂCz¬cšWÓ†‘!ÜŒÄhxNçð•Ó÷,Æh90mþ¦n5â"ã&¢âf"b’hJÜðrO&£rÔ2èJñ“ƒheL'þúÚ¦Ê±3VŽBÈ10ZrŽƒÈ±Ð4/q£†×¤Cc—€Q‰©žË'›rbÖ®Drw
×NËòŠ8¹"§:6sŒôd!—˜ñ¢áÓ¤ÈJL‹Ì}>Í/[gæÓ6öÚ&gÙ|½M“ÍÊÙHOþ¢ÇË	¬Î»cÞñ3PXzÿõ´pï‹=ô`vÏÝ×ˆÜèw³Ù7{°wiçyƒÙ?mKë¸*18+J¨,þ¹žùõ¬Ü–™u¼P{³{¿›ýÎìŠòva»ü¢Äîw‹ÇM²÷RFÒ”Û|¼~4[ÿªdµÜÔµcÓ×É¹S_}QæãEà~Ži”Wôc•Y»LºÝ¸2;TÊß«*cÑvZ»ÎþæM™ãûÐGË¤äo¾îÂè_tî¶³›‡DÍ7|ÿÇo;Ý3Ÿ5ì\)ŸœKü³ÜN¡CÀÚ<â‹IÀS¾ðöÓaÕq$—#1ã,ÞÝ¼g@”Q)0òAFå½úŸ­”ÙÅ…ÅÖ66ò_§ß0ŽÚã%»¸÷Á-Í²{ãX`ûpé)mšo;WýÂÿü¼~úù1˜.Áb†øj·>¤ñ®o¼;9±hd'>\nTÚ>\{Þý×’t.®Â~¾ËUè"¬aàívÝæmî»ÖÃög³Û…“>J±êk[ó¾Û¨í±vy}©ˆ¦M£°sýÓãr»é<ÜùX»ÃU8›$¥/•ÁƒyÏé¸å¥Â)¶œ=á‚{†óE¾¥µ×Ø{øM…C!%ˆòúHÕÞÀòz”„L éxÈs!ßê¯~ü	–Ør3Vâ¾Ý,ŠQÔÖ Ä{­Ä*m6ÜQÏƒDŒJÔS~£ÑYVšs3Ë{!}¿Ikà±1|¶´¨õöû?ƒFs½öö·Û$L Jy*G)Ï¢Èƒ^bLJþÉ”Å)si$ÿs´©.Ùf}[N-Š‰4÷ÖKÍ mª«Õf³¬ÚöÏ»€¶VÎÈdÞØ@à#â‘e‚ø"V„F))éís"Lnn	Ü¢)—
àF¹òØÁ1%•CÈs$D$AêäÐ¡‰}ÑÃþè”ÚmœŸ?-,šÝ~ö]z²Uú65ðÕÌ.V¾*Ï7¼vôÚ!gEŠ`TqÁ”Jµc£“i,˜÷Ò™Ï6 7ùÐ/+U9	ÆöM]¬ç¨
Î~üú«ïÞ¶ÃQ£ )ç)Žq*<3ŠIÎòŒæ˜¼ecÎÅá&!Ùc,TŒ2+ñKk¬tÂº»ô‚1tÝ§!díÐ×RÓi]Ãòp„.‰(Fó1#ÇÉ‡êðþ8†PgÞ^ü»†º½åV)©¨›íc>ˆø´Ýùô¡8æ„ŸZ‡)&åNïËôíÉ| .ÃhŽÖGuTˆíÏ‘(ÙîlàtÏNåk8^žÃ²++úû´bàù6€¸ÿåíl“‘ù›&aÃðŒü0,uÏòädª9zrNîæ™ÏSŽõd¤iÏë1ƒEmÛ|/æ8»cfÁ”ì‡nà´òLçk8^–Ãwå#eiÖá¢ïç ½¸Láe8R–«zk§vôÑqÃ±®WœÌ\½Ù›œÎÏf©óñ,vS5ÌððEw}þk”Ý1?¬‘Ôs*\¥U\“íåã^`“rÇŒqÕÖa5úÉ˜y4"Û-5Hw>Nâh8X–·ÍýüPFxà`¾š´ïÅ™òÜãqº5‘Ç!U‹÷e„ì€knBÏë´G£†n±g=/³¡&Ã òýQ@´SMâf8T–¯´wŸz—úâ¨îÝ–Z #?ÐÁ5P´…ÜÉq0¥'á`ƒÁ(by'®èÏ<ýqKaÊM\êi¤äŽ	‚W„¼h¸Ôw˜ r®°÷o.õß\ê¿j—úÄsÜ¿9Ò/;ÒÍžó¶“ÿ7_úÿ_:Š.'´$”Sâ<cÂÐè(ü'¤
‚Z…(mœiüïáK—©¤©EÂY%%QD"§8„H‚NU“¹'†çO¥ýZ}é
E¨Ò& Ðx$S^H*Q‘h£‰TDóÇšþñÎeâÅÌ Üzé’ÚqÃµ³©ä¦FŠbíëó¼þwp.;$4‰Êz/}ÔLe˜5.êhæ†hÅ#¡ºïxö¯Ë¹X:e-Ñ[íµwFrNA8Då‰G˜z#4»ic®q.‹Ó¾"Ü—é—š2˜#˜gË×ÐeœË×]r.ay8Âeçòh>bœs.ãau¿sùê3îá1¬"¾Ê=<š‹Œ¨óîÝË}9~¨{ø::Ž]vº×r©?G¢sOçk8Þy÷0O[A?Ø âkÝÃ“‘îáIX•{ø2Æe×®<ÝßºåÄ/›Ù¯»éÄ£z²wxÍð2Ô/;•¯áxy‹˜£rS~T‡ŸsÌ^Ó¤Aô»Wó2é
Ç.³f·ý²jÜpÉ±;–…£c–'	1”‡!ä×»uo€ÕðêND«tË(×øt3A-×á\pÈ^3…†BLóéáh8Ø9Ÿ.NajòÕ¤×ùt'â´jñFª²."\ëÓ)'.Ù‘²ÀÕ>ÝIÜ‡ºèÓ© |º×0q•OWƒ9ïÓ½
cWyÈÇ´£GwÆMü¹éDæˆ4ÿaÄp+íóoG¤óçþw÷çþvDúszv‹dóŽGðçñýÍ­ûyÜºÿ —l DZ%wZ¦°¢QO“X[+ÁÊzú/¿V—,Ñ"$¹Ð2h£&ÞÈäþcÖFÉ8RLDaú²žþ*]²éØ¨G–¤ðF3‰œ ÝAŒUP1jj¿Öó¾RyÆ("å–ED©
–óÀ9åDyø`:Z†zØÿïà’Eþ³\
Å"Øø\‚P0Ì” âŠàˆ?›Óü¦.Ùèˆ÷V9®¬½Õ;†}ô Ç
+-è³^K±ïKyþÙ\²)×'¦§eÀˆ~)Œ¦ÀBÖ%{]Æ%{Ù%—ì–‡#\vÉŽæc FŽ“£s5Ì©w´¥;¦)C¨û=»ãx?8gÇ°>ˆø*Ïîh.n00[žYÖÝ­¾Ü—é/xvG2ÐòÉ’Ò33¬?G¢ñìÞ‚¯áxç=»*[@òü@|­gw2RÃ³;	«òì^Æ¸àÙ%åöîPÁ”q¤òt|tø˜2Ì;¯áxgÝ±$í,Žéðƒ;•Ž›žƒè¯uÇNáe8ÒîØk`.xSK—îgF¸äÍDÓ¥:‚‰!äC<²“±ZÙIhì¨ÎydÇŒ·wêðY4b¨Gv<GÃÁÎydÉˆ|5éuÙ‰8ì¤Ê#{áZ¬7t;ÕáÃdÀ0ìXn†CõÈÒòŒì˜î=xdÉX„¶G–ŽUñºÙ»ª7/€KÙ“iCïµn—Aí¤Ý>À;_t6ÅÕÉ	³Ï¾ðÄ/Œ!1‚zÑð{¦¥E®Ê>¿ðO…%ïçÝíSµŠ‰NÐÊaX9ù*Gf£¼zí½l?÷b„3p¹üðXwô}ÑQõÆfŸ£pÖêæ6Õxüÿ{2 Î{ñZ:ëÍsf{ðkÿž½Gn¹Øl¾¾åÑ1ÔðŽÁÌÊ,Ÿw‹æíyÓ?ï½mþ\.Û¿›ëiú¹÷ð³_´®R_Šû—ÜR»¼ƒ¦~‰r‘êÍ–žþõ²“¾ÔQk1Ržb¥tcÁ%¶Ì9¯•ö˜“HGÕàMñÆÉqù]Ø›Vñ¹&E·ð\$8¢è„åy«,AœcìŒŒÄáè…W<Ân¼é]Ž™" ^æv©$"/¡%ó¦“(¢mí üq•¦ruKì—ã{Ü‹KÒiÜo‹‚ãè&¾ùi·¿–°39G¿®ãŠ6ß‡í±ðØðo~šÖy]={Èõ÷”dêøHx<5‰	Äé>¾í•9„RŸ¼ÖI´c‡ßDEsW×Âœóc%úZûÃEèU[·€kUÍ+^™K+ƒ¢V¯ÃÒÊôW¯Ñ]Ÿ6z™2õÍ‡T5·Š'ÜUÅÍëÒœûuYAwöB¡ ­¢áÆ6¸°øf»uÜ4ÛTÚerãvýØWz¸J\Í]¯Ö~¶ì%)í~±x²wpçõ¡Bô\
ý9^8üf\
È¼Ûÿ`öP;ò-¬æO»×pûg¸ÿóa¤½æwª?*î—Åriš˜ƒj¿ŠóT<w±:Öî;jÛ©Ž^YŸ«©K–7@Ü<mšW`à4îÊXÕû§Ågsye~¿Z?†KÓ­s,eµØ¯ÿüÇYù`U:¼,î\}é“úèAÊˆ@Þkn¸ãjìIªi¯<6,4ò}y9FkèžÍ¶ï«Åª#ÎüèìL+œ’â(tLˆÈ-BÊpï!y¤@ñÇ}Á.z EÀåÚýí©ìÐðF£Ïz¥©#+Æ­•^µ6NpÌu°N[šõå.™Ðð]¾"üéh-Û6ƒebÕ5Ë 1X¤-§L1,…¥RzdŒ‘g	¬ðX*{CîÏXk¹9;¯‹èáÓs7¿4^8dlkrS€Në$ßŒ­fYá¢ªy…‚“õ,LKQkÁ4¦ÿt´RöÞ¦á“Á`zÏëRŽ™ºÐ}]=±‹Gwm»fìô¯3ñ«ÜäkLú
×S¶ºnWÖGw”çJˆN'ë¶pç[†Ï$Œƒá=eªùäÌÒ¼hž¢Â§&Sº8ÕfÊ¿§a'¡ÒN‚¥EaÎ	m×Â–XÆ>c'}9{x¶Û…ŸÅ§•+—µ×Ý¨üÖ)«Šû¯ù®Çxz›N§žÌÀ°5ËÙæi»YïBóìÕ0÷«P®
Ÿ6Ûtìªì°æóôÆì÷a»*NX™ÔF·ØÁZ–áÞ¬öåiªýó&Ìw&†ÙGó|—`í×ëýÃ²Œ'¼Bí¨Îz°™S	éØfwwÕ‰.³Ü­áe…º]o ¡v
¶ ýWóÁŒ³ÛÚGŸjEâè?|[ü}<×ÔúWëÄUëLÖõVà;`»¶q+%wöŸ0¼Àïñq ££«éy£ÇaÎ‹zd½õÍÃ¿çðØÑçP^Ú},‡¼p_×<k‚Àš7ÌÇý»Õ¢ýkžúçˆüÎ¬vùk+P?„î­åbÕ½öh>€éZÃ—jÏ‹QIþôøaõs…«s;åT4;·Xôßý`–0ë²÷ìfÃ³3»=òì®Ð!ò÷¼‰;Ós+ìÞï×›ž›ëOÏ Dznî}þFHÛñ»6Ãƒ3 ¨ôÜ„¾ÝõÜ‚¼ZÊßŒ}ˆûž ‡|_OÞo×ëÏù{ðqû^ö°û¯¥·ù{‹â$köÖ;˜î»¾/÷îñ¡çÆªçƒ¾ÛôÝH{B<o¹¾O…Õó7a™zï×{8|Åíp{½}.¤LifŸZÛmþÆæÌ¨Þ†t +-fÙÛ;×ó²ÝÊl6=ßw·Ùöîz¾EŠ¸Hl/eJ­¤LÖŒýçŸVûÅc8.Ïia,¤Ù«–P»{ñâŸÛVmÄÞXXr¥ÞaŒ…Ä6 ¡0AÊ}ÐŒô¾J{cmò‚©AIò÷U¹œ¶Bˆ(ãTÌ„ñŒè”à‘Š@Å\I<MùÍ³­ ÓZQuíà/sÚ
i‚ñXÅÈ¬‹XI*5AeÖ‘(¼òNä÷GÈøV¤®Â~ÏGð”ÃèÑÂ{aQ-GÂhŠ)çÒí¡9ZåwöØhöKÍ%Ëþw…Î6ûò‡o2CF:#¨åQ†­
Îê•QB.S¹IE0×$Ë-¿õvN­D”•¬ÚN$ÐÒ^*òR… •Í,25Õ¶üLWQ·ŒÎr W‰Úðg"<òÛÒ¯±œóÏCÙ27KÝ­(MÅªÈõ­@xäµÔY*”‚þÙÕïDÙ}a©7Oxo¡e¤Ÿj‰ƒfæ2;1,ØT<ó†l¾Š`ñ#-GåùRÞ&xèÁïÁ~\ìÒúÿ×`g_‡e: üü"og›t”~±_€yZñRŸË.Ø%¥(AAW|z®9Ê=Ú˜e2´îÛÆ:Gmƒ¶lÏx÷L¸‘q'V©4Šnšºc‘ãëµ;—?£ûøšñéÎÝ/†Ù±ÕPÊÛ±ÕÍs:èyÁ™Mv­ªO€¯Bð Ûçrhµ×,¬bÖ†TMxÍöLëXŒÊ¬‰D‘Ûemô›É2­m†5åAXG÷†Àê¤,Pá˜]'`Ž8_wûÖ§º«îŸ—¹-3õè¨æ/…³X²ñ:Œ®µòÔ¤ÝÊ[ãAZe·FÂ”‘ÑƒÊY$ÏîX{{:‘	B_k×*mi,N¨2¯;öÜ4ˆªßL]Üžlu÷E3T&³×Œo°×|æe½qà’µ6œµÂ3Î¬w_nŠ˜·Í·åV¸“ç^ÍÌÔñ°]ÍþR-yoà½Ûõrö¶0îG­oíýÖ_-¼¢^×Æ,^iÙðÅ6(»
Ó=\½ù
wü–wfsX´àÙ]Ï"·ØížÂ®ùð»ÅÖ¼®¢tv¯ßþåÏÃVºæçí^:fê\?F¬ìÂöC½OÛÅ†ïú³7~Þ}Èy_v=î¾æä%-¨f†«Ó7÷m;§Ûa[Ôµ;öÜÛy·žöQ¥„uS+î¼ÿh–ËÐ³KXòDNoVwhÏ¾qß†äæ9ü‹[VU÷ä#mR3Û
X‹”Æ
Ågˆî£WÑ€â9•B+ÁŒVÌÞ:RäøòAüí„»‚¸¨7Rà +§”JÂµ@Ž{O(kœòzÙø›zðŒéa#5ŠÈòÀ¨—Êq¬$ÈIá¼DÂ‚V‰Œs,¯™Ý<š¥žIežw=×§A´ô%tcØÊ¶j6€®«U“·]j~<HC5ÓVåžJªÕyRÈ÷:úNBàH)u%yCÓLÛ÷ê›µá$«ñ¨Zmžr³æÕ*7 ¹OÉ‰ùpuGµ·¡Ú+ïTNN2MBÛ„íäÏ_`ÜŒ£:Tê Óx:(1å™}ÜÞš=#1æ_ÚM0¥‘zìjœ©F"hR‹foÐé‡7r/Éì‚bÄàÚ®|Å.(Xr«dhÌÞ¼~óòåëï‹ˆœ3ü&Eí@¾Ì÷óeÙP¢ÓãEÓß¦T‰‹¸~ö×­Ùlªžß²þ©SÚ¯·³ß½ýë7ú¢^:„*òv½IýT-@ËÐõ‚ãÄÂ›W3`ºLHÜ`üp8¤ˆk7³)@z_ø¿òm)°ÑF‰ŸÄÎf»€^Z,ŸgO;hG—rL¿ª7oþÉ-_ÿôo¯@ËÚÏebë§T`ÚVe¦i_†Z¥ø¤W³?,bõŸ@7Ç7®Àæ4Ëú…@àà»ï›ß Àm&ån~“°ú°Ø®W©Óv¯ª@ðÝ!«´åá¥‰Å¢S‹-ÔÃºà½Ûc
ÈÝ(Ó¾½uM_6¢§~U9 ÓÜ:›þ¹ùÜ¾{Ø?.OÍøü¡–aV{9ËK£ŒÁpá±úÇáˆ÷áByÈ;¿Ï]Swh[”ÃŒØûuš53Ô05ïÓ€n]IjÅÉcË§Ókk·7Ú´›‡ÍÉc•M|rýÇ“+ÉZ?¹¸wËÖï£Ñœšþ³+|?_e&»H9®˜ÎU@_ÛxSX{Â—Ò8&=qBZìdd`*$%µFs!Ž‰”oc¥_¸,r€ÉŸ8œË—Ô#®UM»`Y[O)FX+¿ÊŒÃê>¥ÐT®£n+¶ÕÔúî‰º,Y«Åî¡±ò‹"&ªùwôêÕ-þR¾`ö/?ýôCájê«7Q?ø¦Øyþ,0PªÓiéâ²T&,G¿:ghÕýßæ™mâÆIÎŠ® kƒT›ÉƒVžã hýž—=Û»GÛ$ËÜ½f»ó¼H®X¶	ˆ
QªãÊ(e½ñÄÉ$F†0ªŽàãžåÀÝ¾Nÿd™ûCYÆ{õT—G£´žsÓÑÙ€‚ž£‚ó„R¤­S©ªÉä3ËIÝ ”±
uÃkJW¤~‰‘õ2XßXO†ÑµÄxMZoæŒ€Y6…¾ú<EŠ,œêlžØš?à,í”‹7Ak$]¼oêr·Øv³`H±tqêŠ—}MÆÇÊ ÑÁ5˜þ/ ÅvñK¹rÂ²~Ö‚ÜÓS©Ð¡ÒÎ<Æ½y3ÿê?š¼lýH9º¾„©¿;¦~ú¶Njpüñ²ý«s@¦¸Jÿ¾«îõkÞraïaÜÇ]óRúÇüíËÞ„”ëz=‚:¸
ûëíû¾§ÞHÆ_ŸçqíÌãrþ°ø>^9Îçì½£¯²¼ÞiÈéå¼ÖÐ•õ™Ký`åÍ#Ð…Ç§ÔERÂ]öbl ¶°{Üü¼r›§ÝÏæÓ¬A:§¼ýöû?f—Üš£46Û‹­b2Š€
*Åm#¥„õTl í@îLº§†Êéb[­®µ>P|Ï¾X²êËœ2	gÚÑèµåšxøÃo´Ñ–ðˆ°ˆ`Hj-{N±Õ]Žeþ¡Ø"«#k¹ÔfÜbÎ=òyLæ4b#TÆ¬bˆÊ ]dYÆGåJk3>ÿ¸XUu€F·1!	’,xCr”å…Â6 ÷ÄëàI0ô¯lF+ŽÐ†ÅÎõ·è¾a“’0Ì$q)j9cƒ–ÁU?P0"ô$ê˜À,‚Ñ=Œ‘b†ê `n9mY°ŒN±f„bá¤„©§%¿ýðN²{4×‘QëÒÁ	l3Ž9‡ƒÆÐý–0‚”DQ§³Âù®]¬è°âØ§ü´l>Pìdƒ2_*÷©VpS6e‚bXŠ`¾ê „ˆ†¤ü.ÁEp8Ä1eÆL—¶ÞèOâP4ÒS"†ÿsÄ£ ŽÃ'qsæ9ÌWÃÍ—WÍ<ý÷‹ñãH Î¸ól%NDå,ÒaœÅ2F¡•@ùJd£åh2.åS}‹SÙ"”$Ö
“ÒÑ0KSñ7èa"¼Ö©Fç…ùèiZ¸_ß>ïæ™2Y•óV!I­&D‰ÀtÊ[C„ VyË…Ô°¬ÆxÛ‘QËéÑlÃ€õÒÚàiT”‰´ça,+à}ŠË˜’‰žÙ8ºZØ.»XçÅË™¥úØQA”dV1‰)øK(Ÿ©cL%áÞ“!©Ws:aî~s‚p¡g‘'ŒTÄuÔŽ!XX„ãÆ:¡@C	S™{‚áú¸ÈK°s¬×`c*”¶Ô‡€7LÖÊ 	Sœ*÷å«,Þ:æ¾4:Ê(¬æn{ó—†s§tËg0Œ®µÑ±&ƒ´ÂºFÂÔ¡Cƒú'N&Sd9ÙLééÄÄ}/·&í—~Å6r-^ËÒÄþ!OGÎ&3×;~ø©°7FªÆÑt¬4˜¦¢ÜÇ™R¥^¹Îí:üˆx‹ÎÃo“Ð©²Óä¡Ÿ<Ù“Y*@n×_Ü-:«Jb2¹›Íj¾)RÙ¼»¾».ƒ=½Ÿ¶;÷4}"owÏ«ë»©¥Œß›Ú¤åVÜ¸ŽÌã®, *•ò¾øÄècåÓ„u´Ø€)ƒ+Õ:=€ÖßˆA”ù×v¢;'Á4ƒ©ÇB©ÇB<íuìë4ˆÉ}“¶­ËâJ™q%R)FE0¬ýY¯'Ë½°[cj4F«¾Ô8”ú[§/öiJ'*š“”îïêîFš}±ñ`]Ý£ù5¦ u•ìihUBÍ›€Üª…•së& m?Úm1?–Ž·Û€Þ¸óü6¥–˜Âk?êçáú¦_«ƒù™8^û Bî³`~&Žo;z; Ÿ‡çb»íæ€Ÿ‡×]pÛ0U°f!?¿ûõlŸÏ‚éÖÛÏüyûÃ/v·D-àÏËûýòiwë)ÞÅþ¼-¨íšÏ…ü÷àÞ/¶i_è³¿àó¶e¹¾_8³ü¬ØŸ·³øŒÈŸ—ûma
~ÜÏËùg›ÂŸc§¨±‰@öiW¹qÐiÐoÿÎPâþ—w½Z‘Z®­qX·úF-v¦!C»Gc£»ÇBTØ'CÜªƒ—k÷~¾3«âïBÝŠ¿Õnjw%„[qS@ì97ÉsƒzÈÖó“™Oóß6 &îÈ¯¬O»Q…5é¤=Ë20ªÜ£¹ì=_d]î•§›rWAµ<-G¨…›—vôn"O ÎöÈ²†Áx«nÂ›{Ú.ëªR7‚¹	_·izUÆÂ|*ã Â'“Æø-†@ê&ýtÿËbsƒAÐ„¹	_ËÅêéSañOgîë&V«ÑtöÚ@7á­Ìx„Ûp¢~z75PnÂÕïo1¸š07áëÓ/óÃFó@&ò”‚‹ó†äNÍñ‰)ÓãJD–yaûèäŒÆÉ±(å0–¾2X&‘OëCxöŸ¦(½'(5ßVÐø`‹`õ™×ŸÚ7Ó Æ'Ø„(ÝýÄPÝ:ãêfZ7âgjômgêP>"Ž?é L2éXÆNŽÄ¤éQx‹žžåç˜ÿžA£ÐœžæÂk¶Š_Ài|µ	ˆ‹ÇûÉô·á$m¤^O”…#ˆó/·ÅÎSaÎÝêvS‚Ön´Û¢ÝšËÒÏtK¬[s˜Ü·Cº5wIÙ¿Òí¸+SÜ
æ–|mÃm@nÇÓ‘êƒã°Rº¹)ºLƒ~¢"S MÕbº U˜ê<ai"qÃ$Ì¾ÔÖøeúvú·`>ÜO„¨èq²«–©xÇ=˜ÏôìÐj4}»MÓIò\žkœ§’ßÐzŽ¯=8˜´ÍMÝ®]>§Q¿|
Ri»À(õÞ…7Ô§eó|˜H=š‹”Çéÿ1PCv    07070100000110000081B40000000000000000000000016290A0C100190E4F000000000000000000000000000000000000008500000000spacewalk-backend/satellite_tools/test/unit/repodata/3481fff742ac3c5e1d42c46ba5e2190fa956c1a135809dffcd3b5b2fab1749fa-primary.xml.gz  ‹      ì}í{Û6–ïwÿ|òánú´”ñFÈíÌ½iÒv²›´ÙIºÓ¹_ü€ h³–DIÅqÿú”LÉ"	R’­dÜÙméoÄùœóýÿù<›zŸt–'éü/Ïà<óô\¦*™_þåÙoòÙ³ÿó×³ïgºJÂ3äóü/Ï®Šbñâü|šÌ—Ÿ'jy­'Z-ÏWTç2ÍÒù³ŠúE¶˜õršgÞBÈkq©MûA†ÏÌsëO¼âv¡ÿòÌýõÌó¾Ÿ‹™þ+fÜW¹‰\^~b¿™¼úëgF/(ùþ¼üÃ~ZÐÓ‹T^ýå™¥ùÄŽ—Lð„=ó2=ýË³p2KÕrª/ô”™Á·a€¾BNu¨gçeCòJËë|9«{”_	PÓóëËDýåÙ?üðì¯\S	9@b¡b2VPIaþ‘ˆE Vc@®C¬a¬Št@„€~¾zHùDós&²[;\ïu’iY¤Ù­÷AgfÞs;úo¾?_Y¥s™%‹ÂŒw7S’{bî½}ýòý'ì™¥ZL1/¼¼üvây¯´gÛ]­‡—Ìåtiš=+Ì7–¯¦5Í(ÛÀÌþ4+«½e‘L“"Ñ¹§ÙšJÍ’y’™°}š|Þì¡íqýœì¯¯ô¼øõƒ÷Ã2™ªü6÷þ×´øßÑò2ÿ¿Ò|‘æ“4»ü_—Åÿþþ|ÍaÙ—Ùô¯v{åfÝÜÜLiV˜[êïÏí—–¨HfÚ‹“©Y4HabJ zæEöQ«x½ÎyòçzüækFC„Í:'ó¼Ó©6,Ô,/aø™g7YòIÛOBŠ©[˜¦²¯w•éø/ÏÞ×{û¼±mýzÿù;oRíæ‰ÝýUÓfng¢°¿š?ÌÇ/¦‰™ \ÿõç÷o?áo¿?o~vGõIÏUºšäŠ¨þèŽæ2K—‹¿~¸Í=ó~œJ²t>3ç¯…6¯t^±UTw\å,^¥yaß<ÀÉ,J?Oî­âº£ºãÌÓe&µùí¯Ãç%Ï¤”ªñ»†î¿ÒBéÌÏÄÜlb³pYaN
˜=ãÌ
²VMiÍ°ÈÒO‰ÙÕGõ‡fæÝ±Ì_ž5:ùÌ‹§âÒœU?þ÷³½Ï•¾‡=·óJÉ7Ç¨Lçqrù¼ñìxèT%1šªh¶~ÔÏ?Þ{èj ‰„”Å"5»þÖ_L——É|’§Ï¿yNI”ßô³.sÙ³k÷t8RóáLE‘ùËyò¯¥Î»,Ò™žEæuÊjxíÛÅÀ’7I>¼—òJI1¿TÑpÖt:-ÏÛœóÂ|”ßÎåÞ|09’t<œË
Ðdø¼¨¹Ìc…©/§‰ùx0¯×ZÙ­:|fŽ0"RÙO„Î^îïtøÜ.ÄÌ_ˆ</®²åæ±ŒÑðd‘æÉgÿÆÀ1»uq£rÍf5[VgÉˆýi/å¸73ÓE–Ž8]³t:bûdiZ˜SÙçÎh7\OS¡†3¢Ðæð›X³
ñy0Û2¾Ÿ}3|fn®R1K:Ø* ·‰½Ê†2ý¯¥Q^ÚáØy”ÌÏó+£e¥wôcEÙA±Ì³’j¡³i–þ¬åùÂÈ‹ÆýÅmqe4Þ¶¼ì…®Î97äçÛ%~ Ø—)oå«Dyám¶Ìý\äSÿ2ÏÅ"q£©ÀÐÌhÒ5¥Ð]è,3[i‚\å´Þ0†ÛEaàp†ß_ýýŸï?^ 	pÑ‘˜µré‘oõì®U²TÓ!ã]QÿüöÍ¯L×Ñ$pcÔŸ,J@hù©ãÓ.¥¼È‡ÌnƒáçW¯.°ëÔÞãÃn|‰\Z³T9&àØGÃ“@6Ê³”ƒ8®ƒr§¥–	»òdQ0„~jÕdÎ•hªÄâb—ÝË–ÇufCvZM<x[Ïss [¬VÆ÷÷sž/22„<ðò¯¨ùðÁlgˆÆpbr|s6™È&> ƒvó˜=ƒô‡lµ5¹Ù>ï_¾»€®çÎBfzÈù¶˜Ê;f1Uùr£žh¡¼É²zy\7ÛNfç7o'·óžmávÜ‡ !'e®ò!Óº‚~5\Ä=ÔS±´jù,™éoCžywVÔõÉã:¥\Ž«¸É:/_¡ä·ßMŽW¿ÿþò‡7æw<éš¼åNûýw÷¯…y¡#ÿ§L¦Õã¼;J£þ°Õd1½üðÏ|÷úîÐ€9ž»ì¹F¤nn¿HÓN˜›.ôÜBˆÚXÕGš[ý¢[»³_?ñî××¿½ýñâÕ¯ïÞ¿üxL5›¢ëeåzñâ£Èz‰_Ý¨^š×?8\ü”Lu/ÝÏºHÅ‹oÓùe/ñ›__¼pjÕþ6·D£¤ç/^¼œßÞýÙËýAŠ©ÈLF„÷4'›í¾áé¥5·—&O.‹L,úéŠÌ(Ä½d7"³vëÞAûõ&ñÍé#­×¶ìÇ,›§]ïœ \[0ír¢TÞ{¬”êe-¤zuÍZ–ùöEt!K"Ìøñ-Y1UÏþå·‹¿½üð·®uÉu”àWÃï>± 9¡ë~!ÞÕfup:¦V”ÝÆ…--&ÜmBÛ´—•YwÞÔštZ›3­“…ð+gýzøo?Þ>™€IdÙœÈM'éŽæ,Ðg›Øêmù„4ÊÓ©.:eßîzð$˜t‰ç†ìLðÍ®ouó{jP‰¨${ö×s]Èsó[ž}úþÜ~ÙOw^ùbï‘ï 9—:+fb1±:1”àÒ_{ÍòÝœm=«¬ÝÝªhÎ9_š­5±.Þþæë·¡þY·4)Dv©‹É0"~Ç3W†[åRÌ»rš^.’…ž,n»é¬Û¢Ãé ›*9-º¾O/Í¤~š,¦D‹u%ò«
«Ïèb]-Tæ„ d5í–å½ÈÒ]û`m„®=îbÑE4Ïýr›´Ñ\‰LŸ_ªèÜz—}ëù¸Ïë›ï7fÛüV‡¯¬ÃxÜ½|¥?ééI…{¡ˆ‰H³H,b-• ,Ž‰–Q,	¡ŽTqª4µ_æ! †â, "¦2l	÷zmš.lìgS"[EUíŠéj k¶óvÝŽØª¢cª6m`×ÎX±fØéDnAà¹E0gl#p‹P†oÄm‘ Lkv—°­ržlðVcÅÏ×+þ5Åm!ŽöˆÛªVïA£·ªG>\—9žê0®J&8=Ò¥¹Êâu°æj#ÆžíÕ­ô¯«Áîwðo§óZt__úÕHNÊ•»rÊÞó2ÔÚ9Ø~9Ü¨eõTöÐôM‡uØÔÛ§Ûµ¹Å†Û´Ööª¾‡­ß§÷Èö¿ÓòÐ ì4QÔð»Ú¨û«–›oæ4½Ý¯úÍ¾ê¸CAÛ„Nõ¥0
ni<1,*Íç1Rcc
1Ó0aÌÒÈ Æ1„‚P)Q„ :µ`Ñ·åx·‚û‡ÁÐº‰çx*£hƒ²´úÆ¡Í‰÷ñ*É7ï ¤Så	)Ó¥µ•G¥Ä·¶ñBä×^õÜÜ²jƒ_šÒx¨iÊ‹Å'ƒ;¼4.›S†^›¯¾³¿Óò‡ÙŸe{*O”™r»Ô'„o. bŽ6ð/£"ÒÀ¿Œ‡|Ðµ…æþ?Yüïq‡BNÈx,Ü\É‡…ÄÍ'?æí†Žºÿ‘pÍX”KÜC
³;åè­‡‰øzÀà¨ãE}Ñ=Î:G’9±°—ãGZT"ëwG¿*å×a¢nçâmjÁE/éŸ-0u ´þê/~0’À~èHþ*]Ü:’¾Å•#é‡…–H_¼øi9—¥'Ì‘ë£žõ¯× ¸‹ñ‡¢õÞ½y÷c5Ó7õ§&Ó©0Ýxýòý‹/ß¿ÊböÝ|(ÏÛ×o~ÊccAúà]¼T*{ñâÍ{Çð‘÷¿~xó{DJ*¯uÿ›j4‹/þft §M~ðÈ·ˆ”O"ëŸHç°•z™|»J}´õêøoz)«ù>DÇý‰ûñ‰­†¬F8ìrÈ‰a1·ö“yR´zþWP^N}µœµyoÝÞg]êy7I2…js¯\É_Ï’ËÌÞnËtW#³YO3Ö!ïí=)ÒÌ‘¬{\Y®­¤Ëÿ‰k¤¢~ŠöåÕJh1Ói¶ìˆÈ«å@¦Å~ŠþfŒ†¤?»Ðô7Õ±0M’Þ†ÌªLZjó%q[hFE3G™jò()âäórá7î!÷ô¬¢_]î!.ã&º÷DMâÒP_ Fýî˜³§§µîcQ›Lm(É²¯Å’¼H>™Ç÷S&swÚ¹¾YÜT!b=Ä™ž¥ŸoNskó[¢«¶(–ï<]«;šâ“UáäW—~{:™ëÂì²Þ±¸Ž¤ZC'ÂtáB¶ŒÍ{€J3ñ\¶U¤Õ…ãObš¨þ_.ÌVºû•YÍ+«p'i>÷‹t™qÍµ_­Ë!WòT§ŠßûN~š~Ú:7÷ôUð¤üC€‡ŠÉˆG"$ˆ‹iB‘æk¸D*Ô  œiÉu eë8T-þ¡WæÚ+HiGnI^íáYóžY_Ï2×Ê‹nË6f"™¯Y•"óaå@ÜhÅ&ÅšNÓ›¼Ap¶^èÔ‹ôÅ»IŠ+ïe^TÄv7ža¿O—Å½œ)tõ ±Ðì°áABA.$³Ó'`ˆÉÌÙ“ïèQ}G`}`„ïèAlýÛO|8_ÑÈ ™}ngú&K
#¾ä¨œšþ"±¬gd#V¥Å2prn ý²-t“œ|n…‡ðÝÑÛß.ðÅ»7O-÷Áå1x¸\`\b¯2‡•øàÉaéÀò”Ž á!  ×Mþh‰£$ÛäzJ6°¯?{·Í!¯¶®èFK{E?^Ìq>·Þž²%q„C$c) DIQ‰¢˜2Æ 5¿@,"4&L›ÿS0ŠbÀ‘ŒE,!o³%}øåÝ{ïå¥™ûv¤-æ/ìV‚®6™ 1²i’	±ù_Ã eÌ1v{=™c÷ZåhkmvÖcŸø¨¡»¶_gÈîƒæ™cï¸Sá¡³V1ÌFòPa¬ƒÔð¹.ì¦+1y0ŒGX±4†qf Ø0¾#ëüC•Ï/A™tÖÍG–“¹ZtÍò¥C†ë|F¬¦•Å˜OMö¦Ð+¿È/°ù@×¯òxªÎ–<-ðé>ÎèW¿Í“b[kH(£ý:*µ™J°ÀpbDŠ»j@âPR)B…P„€1¡Ä@Ò8ÄÆ
ÙË‰B¡fH!.	‘<-ªŒgf¹Hæ—^œ™AÝ¤Ùu‰ô_uø–K6ëÞõ¦ÉåUq£í¿^¥Ó–ÌÖçbšün]¨Èfº¿üîÌzr³åÜFHzËÕ³íMDïÕÄóÞÞ
%x¯ì¯—¦G3›PCXý"‘gë®Ö‘ÅÂ–©|ÇÂl1ýÙ,í}²~kóy[¿ufš7Ï…ÔG¼ohiG4©`ª™£qs¾[?	(!`aãÖ¡Y¸ñ`•Ol[?aœ’ýâ€£f±$h^8Ò§¡”kW&—Æ~µ	'v÷ºèo­òŽ£|<@V#ßW¿€¯
–½è m§D{k¥Â€Q'lÔª•õ^žÀÍsyŠ¯ßúú½˜ßd8Ž¤ƒ"î@bÁÕ˜´`ˆb% C"Œ9’³¢PH¥P Y, ¦°‘J€Œ¡1'±4Ç|§)ð=Á°Ý‚!dˆm	dDÃ†`0ë»¾ãxt7K=‰†]¢a`$Ð±DC-i¼h8dÙ™“”ÚÐpQñ³½qˆÆ©ØhÕt•-“,¦æü—X…ÊH­`Àb#)0P‚¨uÈIÇÖpÊc("#,ÂF±`-’â¥=ËúN…yò…È¬¯ Z–eUŸ´ ír£œ’Jnô7f«ˆ”Þ†—ïßTq©EzV¡W‡ú¢,¬¥çöT·’ãJäž­”t)¬°¥÷ÌZåë‹µ(–f!Ë–ëUð¬œ+Ï˜+²j$„õZùäržÎ´¥?/óu		‚-íCv	BD¶«­Ò³ ™µ„š©QIºEµýr+úÕ&ªB”“D‘ñCYÀøXÒb×ì+.‚`p¾ª]'{ÛiÑÑœ‹.1¢Yÿ²¸vm’ö{,ªF×É2ôÎ4é—fÂ®tc+ÊúñÓ©ú<³¦¼<N¹., Í›œ®ñ©¸ŠØõÀk{£uÚ•EEË¾"[†Â/K_õÔòhÚB
¯øíÃ¼è,*°âº4¿T¬¨g’Ôì	P¶{(m“Ž¤•OÉ•:¬hp¥®,ñŽÔ‹tzm€ïêÐ…¥aêá =ËcÞä°.k2»ò¿¿{‹.¬‹
w¶¾$ýæðþÐ™ú$l¾û„Ïì8Xwf„ßq°öšØË7«Î>QçF.ÖÀ¤|èäµŽÅrZ¸&8¿@vŽZ2 ×ßUÜ¿ðÚÒVùïÄ·ªîñpÎ™*Âºg]¡^7¾êæã®dì–æ³º,S‚—Èá|-|†mÆT³Ø…e~]¤]7Ø+)7ÓÙ¥6[·]J\“Ú^þ®%YSíìÉ>–Ýê‘«)m‰+Š±Š’P‡Ñý$@ˆi@¨2¿Bk	BˆDÃˆ…Ø+j 8 òIA:9	o+HÂ)`ìž‚db‚š
eˆ}yÍwéƒMi'£"¡R‘‚5,xl©Ç¦öÕ«HÎ¡véJc˜‡q¶hOS'û±Õ(çÈ»õ)wæ†ZåºPýÊ•¥©h¹òli\®l[ª—+Û–æDµK;Õ˜­;l(ý–Âv*áLOúÛª'ýíIÛCû›Êþft‚ÒE¿­ÅÍÓ*?˜K@\WlÆ`›3õ[BÁ·4`XBµŠ•rÐîtŒ#â…!ˆ”„’
 # ",”1R‚­hÎ9æˆÇ`£Zƒ¶Dþ/½¿%—WžMý9K¤÷÷¼>ÿÛë¿ã5¦¡M¯kN–W+XUº›R)S6¤Á*6ÙÙíŸö¯\Ì6_Š].ï“˜.õY•Ê2Ks«!®µA«ÎÙ£OU¤^…­Ë°ˆªª!›Î?)×ÃR$óª#–eâýOÉGatQý¹¬Jj:#ª>Ï—6á—-'—ó$N¤0Ê©J.“*”ÃÒÔýXî»rxëàÓ©"K§^úiÕå³-M#ÉŸ•¦é+ñ)I³Õ`-–#[e£É—QnÎx«W­˜Ž¦ÓeÙ†°Un½K£ÑÍ½©MJsTÍõJeW«%ž˜™¸ZF“$=o®|›ËiÈ0ÙáAfï%íTbqP¼ØkOÍX ¤½l³s~õ2ú¯á¤z³]ôÛ>¼.—éÕ+°¿bûÛ<_˜'6b·2+l)ñA0F¡>#{@ÃÔÝf'û">†¯;6û4nEs¿hö 7èviM½Í¿X¤³û=#Í/“{™ŒÃžªd$:o/ý!>	ßî˜©Þ]®£é»Œ¶™ú¸È}{ÌTÇ•c£xøN(½‰.Öóø6½|_Ù-›÷¾íšJå)µ€ …HCªeˆ¸– j 5"Ls¢ ÀLÄ(©£˜æX“ 
ÜùŸÕHËÊM|Õ,Êìk«™´RU¡àýÑÒÎ‰ÀÀY o	@ÄG¬)‡”‘¾pÈ];íI>Ž(Ä€‡|¼(\-ßaEâøó¾ç>DŒasø÷NH·XC0áˆ×S2È•F5¥:’0B‚X,˜y¡ÍGVSf6£˜Äq`t€!Ãá(àmY1½Ò•Æ%Èw;	ïxúµã&.¨Ï>™Î6¿íÅÚ}"„F²4BóQ ÙybL·ò˜¢¦3Ë4Ç‡(Ò¯¶„?,æouÊ½_Fæ#ïujÓw>èy7ÞÕ5þ½>àœŽ?Õ.:Ï³¶—×¡Y—ÀAÍO“È`€‹;§“`ÿct}Ñ¼ûÑ[iÞú¶ÈaùŸw¤ºhžÿ?Óäœôta¿D?'C\2ö‘"(RŒ€ Ä1"‚P¦#¿ÎÂ8P$01 cÈu`cÖ#®l!FÍT‰ž¤Èn) {RÐRqÀÀV©wKÛ¨ôÎ)ÜGŠ¸Fœˆ2~T9bÉÀ¸ˆ‡“#=qûË‘ºô*èŸCòFÞž,n¸(ùÏ¥ºŸi´P_Oc÷óñ„ß*Ìçá€Dk8#ƒq`-3T3†\s$¥ù DƒHÄˆ¡Œ¨ù0ˆ€Ðœ0V‚D·–Ÿõ\gbê-–Ù"Íµ§j)!²LÜ¶Ë;;Ulß«:ë¾Í³/w^…}íí§±oD–oN Ï¦Îó
-¯æé4½¼=+ë²á]%ËBdÛ˜xåÃÊßóºˆ³œšŸê,·Ìë+³óåÔŒ#-/ÈN¼—6kM2#1½šé™M —Î-Û•ž{Iqf­Nébi«.©ï¼[m:*æž9RolÆÿB\kO¨Ob^Ø­b¤©‘*žQ‡“ié†ªZ<KbÓ­Ül7Uõ÷?rïZßz‘™ÞØº’l¿s)­t}ûweeòBgå¾œK]z•Îêþé8Nd¢çòvk ¥«0‚£¼lE‹í«mX{Ë…í¯83[ðÖ3tÙðnyºžäï¼(]Î•VÕD·ÞL±8_dâ}HLoÎVlu9¯üeæIËùŠ½ìÏw•çÊÊ_;1›==›§v?˜µŸ–RÖVcXåÄV‘šùU–Ì¯óÕr²z-m£e+gõÂ;Tsûžó*tóü3 K…ŒQÂ,²¸K×Ç¡Ý­ÞBŒ	Ø,ÂCÊ7®³aƒiŸÏÎ²_ž1~÷éò·¡›¸ÏÀþw¢ˆTlçºÓµ“­qËºw€‡™Þ>ïÐ¨OîšóÛ$ú»¸kz„|=ÓCM*#½yÄ…ÄÜ(ˆT â0t„%†26ºKŒµæ\D*Ž%m¦Ç·µ`¶®7gc1þþòå–{id,æPŽ³tVE<Xp•!"Íd60¨MþW3µJ›1ò1gõc¼ç¯þþóWGßy¿üøÓw†Ùüóú—Ÿ«@‹ÔHƒ,ÿfrvv÷P{UÀJ°Jü”oµ‘ñvÔ²’™¡´)êJakD}fOâR>Sæ;`›{Wâ“‘4SÛk+«ÐÓd–ÌKaUFyX–›ÄHüÈüŸÍÇÉÜ‹—ö†ÁQ%’Í[NìM{ÂØ€‡(„ˆÀ¦j"Ê8h1°’ ØJ¼ ¦!dM_ÀfÇõñ©ÖÂ¯výHëêóW¯_¿õÌ®©„Ï7_ˆðÙ5ô½Å#d`V¦ªÝšêî#©£97Cê€f#ƒÍF{^¾Íò	
ºe€}¬â½dÙ&á^
ö]…“¾Øÿ{TÜM½—i•v´¯++²ç?ÿúî½QÂÛ­È ·ü!Ì›™9\Uÿc¡/KYßsöŽÎ†gÿçûþøÛßøõ‚NP_Wîq:0Må,w¹å{|ó>
{èyþ	›•Æ0MøÈÊ£¸š™Ð†1vvótR³í¢îþ‹ñP4
ç€†Tp’8$
S£ç†F-§±Hc	E<VFÌ€PI	·ù/ž è¿¥ÛP”ñ`7E8 dŠJ7¬!æX_zÐ]xl¸‹æñÁè(oÿqÀh0ôÖêñÀh¯7æ±Á¨k
ð;TzXÿÏÃUú[C¾¡ôk:†çô¸2uX@f¸‡UG6àÎ{‡\O©"á}P{âå¶6°îP¬« ?úíÕápø]ØïÄÜâ_NÓ¥òs],×Âº»r€è¬ìâ¥Ü¸À¢|XÌ "ßØø2	yC%P$u Xc€4‰ ¢ŠÆr®%b8ŠIÛÅ¼e‘š‰©]a«ÛnÚÛ¿…}å´câ7ª²x>kÎ—g¯CTžZë8»xÖò@¯l#Ÿx¯–™Mâ2­=©?¾B
×—µšœ•±üå³ìç…E­ú³9fë„Ç½½fñê]Ê•µ+osLmN=À9aˆñ†SpFa@ZÂ÷-ÄÝtêA€‚°o¹ymC±í{Ü¯6«¿Ú¦KoÕyYŽ™îø¸¹+·ff{6öF»ˆ³¡iÛk¨t8t>¥;=í4ê[mðˆSgÕ|¶÷¤í’€Ê´=_~ö«¶ÝaÖ.¾ueXÇâ[æ [‡ÞzÄâGŒsâ™XæËbZ•ì:rò–ùluùë¼ ŽµÍÇs²±œæËèÜ×Oh³TúÓ7t¹L”3ýJ º×ÿ#(Ö¤¢ó1¤iÔ•ÕQO–¶Š$W€ F4‚FÑb‚Ñ°”k*…ˆ‘!
cE¦ !¤£¶€-Øý?ï)“úÖÎ›fÞ›÷¹–öÓ¡whó4.nl¢m¥Ì®aÓÎ/Kûôz"Ëç­HÏÊ@¼­­RUüüË¯ï~ôÖ©_NÊ¶ø-	hó&nˆ¡AKtDmEGÞ¼€Fê¯¨Û¶SýjËùd ‰úkAî-±÷U[ˆØ~ø}Ý±îHºÝçÅ ¸…ìPº0»ã)¥ ÿi1÷íI”Ìï†òh¹	{ÕŠ»ú‰ÉÂœ˜Ã9*Pgòp‡ì†ƒà÷Šz0(xÂíû¢é©Ë¹c8Ê?]3P>pw†Âh‹d:Ñ®é‡=êTÊÍöÞ;²+¶ŸÞCS,šsýN"ç:ûd ÅVzÅÃ¡t¿„qÕU #DuÈ7(%iŠ˜0M(¥a€#b zÂ †Lë(c¬! €ÇÃ°zÕï@µ_£å2å`ÀÝ>NŠEu›(ÑyyoælÎÛ%5=ÛäŸ7úôÍÉãk¿‘L®Á]‹oæC·ÆÝp³® Áh _Žä	ÆÆ#›ƒê00¾Z§£ƒùê1é<¨v`ïk•iæ˜º|¦íQZ¢y56¶=—“‰Mc{ }âÁ0Ó²(®ËËh`’æÝ]åÍ¢”Œc	GÌ¬®+,ë²ÕõÅ"ù-ãÁðü¤µ€ËbàDœ:–ŸÏÄ°ŠÆƒÄ ­ÁðéÐ¢dªÞŠ¡œÃ•”\ËLIWï¬/ šiåÏŠñíi6Hµx ÍbKˆì«_×~5ùñ÷¿Û9wÑ•–˜ÚC‡éAD%G¢€£  C{õÄE««Hc…¸VÌh†	`´¿Ã@[¹¤zP¶x‰_§wåŸÛð~+ËÑÑ¸Ý
úsVfãé¨D”nT"b ±u,ö&î6 nenÃAÝGwWÛÍ|sÞW©µ¹?ür©ýj‘‡Ü.üB.®Æº1Ì½ÃY(¦hkÎywÂÉÝo^o£.·
5n}3½™ÐqQÅ¶ö\Ëª¨+’é}ŽS¬ nºü71KÛVßÐôçÕ˜Hß‰âÊ™|:ûX—…qd˜hýh×*?ÃÞqc}	ýPßÊ´2å†àÔ!{â‘j¶j¹^÷[*B±¤q$BóH £P‘AEy$0æ1ƒSb>…š	ªTdÌ °'°Ev—}¤B¼•F(€àM°… }IÚÁÖ ûsÿÞp‹ãVË‡[=6®}á–£¦½w2jàa ˜ë`›HÌg’¹Oì66såœyÞƒ…<Ý>ëÅm_êÝ5ä¸:0ÝÑï¾M‡ä:=¹‹rµdÿ¯¤ïi‡Vs««7Í¡"Ét¬‰ÆJ	C‚xÀ C€¡c%±Tˆq©Ð,B¸ðÕƒò*Ÿ‘õwzu´B;â»›ˆ*1Äkÿ‡¥ùÙÂß²„BSq«³ê&œÍOySfËu^ÎŠ-:~V¤õ3Wà«¬'‘´·ònÄ­¡+ËÝyei7_ÙÂâéwgÕ_%+´´	l]ó£ƒÍ8ÓºÊ-½í«èó»Ùh­Zƒ…ˆn•j €®Š˜lƒPˆ)ÝJßR ÜLß`p-D}Îö»ÎùÕæóé(Çúao¹="múÞ±ý³a ô®+ÝžÑÝ§CO“nN×QMûJGe„|¹ó {Ôø™6ÈQãWâæZ÷d×òí²³¦ÞÍÖAÇhýÏ$>X³uaù»Ö·­çñú¢®Ó~¡æ±c¼ÄŸ‘_·£8±H”˜ßæž§‹ñÌùBÜìŒwd_Ji¤ÕøÖ^ßBoìh¶pð#Ð6ŠîµÚˆ\¿ÓôÒºn#Xƒ\´˜•}µH•¹†—Ìc—N £÷÷u¢z‡¾ªª'3òjë¸˜š=^×¯De€pÝh‹tZ2ÖvÝxŒ8öÌlÿ!O3yéÌGI:„!ÿ×Ôh"ƒâ™ª0ñaa5M3eþùáãï^_ àjuhk º˜LŽ¤S÷èàª½çÇÓ#µø³€TO»Bxl…š.Gb³M[ŒÁh[png\¸«6Ù•¡ÑºF¡7­ak¿÷6¿2HwyŽ{¡Ë„tIó^´¿³MÖ(äŠk¿:q»§â zÄ~óÏŒRyŒ^ÚKëþ•ž.÷íØ|SåÙovh9û5ØTlöÙPåÞÉÒq³Ø~Y¨6ð©${VÝjWƒ¼æÅ¢†yéî×­›DmÿSš_ºˆ·¯-ÙâçMKWÿ#W¥½×† óûYóû}Ì¯¾Lg3aëyZø±-™óYI5†˜*ˆcÍ¸¢,–P¨H–2(“’Xj¦9Ä*"Ä"dT¬Íÿ2¿.¥ÖHjKÕ'°WÙ›ÚrBFÿ²ÏòÍcíÛ—^YÍI{ÕÙPYfÓ86³Ò|Æ\ßÜYcë¬»ÍçžUÙÆ¦8y«k]­®($t«´!‚fñ† PÐ—i¬k—>™`d‚å!m½¿,Ç°³Ý{ÈÁM÷¬o÷Ÿ9òaãM<GµsÇÒ‰NCÓb
9éÛ>{Y&†*×{x*]¶­WÕ«÷KZüd_¼.ÄeÞ+û‡ÁZ1š_
eé9›Æƒ¡XrL$¡<"Zr("„‚’„HÄš(f¾,Ö*Âe$b‘€$ä<‚4‚!iC¯Ìp¼?Ò¨”}¦_e¾þ*Û¿½—m/n7tk±æÌÞù®ZÙäÎ–óù&¤)k1Z—sùàÓ8Ìà@ Ð&ÀAtÃ¥l–h¼1Sô„h„hX€Þ+ÙZ‰£€ÓîCàó˜‡*¥NÚ#üèc—Õ‰”;ŠK>Q"™Þž7¤©µYÚMnN¶Sù¶¼æhªæ|7ë•ìã®î#vhÇQÂuL¹â1UIhTsi*Ê¡Œ"ŒV+†ÚRÓ˜F À¶‚:?¿M¢»8öRP)môÒ†¨h8Žœ¾táx[ºØz†;¥Á6sHS¼`Ð,94²É¹ˆ˜¤nœ³®÷OAÀŒ*9s4•™ð‘ô[ëpT®çúâØöû.ŽIÙ©Éì/ŒÊüvþ²Ÿ]á
µb–˜ÏR»Ií{åªlVfGh±îêë ­u˜²ê®fK»<¬Ãrcoïë8¸èˆh	E5ã¡ˆˆ¦˜Q­DŒ‰ŠdXE8Š 9 !E"$†ÒOÂ¿OøÎª%Álê–dtSøCÑ/ïÿ'ýr¼ø\tî!Åÿ‘¢—Fü0DòQqÀ“u{”uûäÔ_2’¨âd×!SâÖ(h4æ0@HCC®­›è€	Ê´‚0Œ"Æ"(„a(âˆ¬UÔEÃ¼Ÿ?ÔC,ëØÊÜÛv©we1ÕM;õ]KujÔú¦•˜ßz?¯&Ò‹…z•¬½óôŸÕ/kõ®+“Yû"Ím~B\¾8g?†î¶ð0ØÂ+È¬i³®Bpˆ³{ë>!—ƒ!8Þ2¾½*GA1[Ï8‚Å\éd.ºÚ³á“Uü(û#‘c£´'ä±?ò¸ÛxƒÓA~ùC†zo¿D;cD;^¢‚œâ×Êà0Z.IGÈ‚e~h"u)1²0ˆ…´Æq"ð2,hº‰Óy±”¸Àùø_ø[¯š©&¸yo³™¶›ª_®aÎ^¶í„1Ô6q½)ÚwïÖ'OÌa’ÌÆG/6Öã(`æ®ùƒ;fÊ{¦kæ°?P9p§›È{ä×½ÄãôtöP«N3=m¬ pÈxxRN urô~ºÏºzî_=y_Ô]vô~:÷™ØLî@»™/Ü!.+yãþgeÙê± e;¦<º{8L­¦Q°Š•Žc#®#ÌPA@„b,©P±ÄjbÊi,´F4ló‰=á»£â;–éh·bÒ­Ì@!ÚÈÄEq¶â»'“ÕÏÞ$úBÞ­:Ûï€Þ±°It±™-èÊÕ„ƒ_UöÁµt6ÐÒS	žóWŒš¿‡®W³D”Ää¨Ðô¹+?¼~;ÖØˆ&0Xe¦`ÃÐ(¦Êe(ãˆ)2…Xâ4æH2©t(kK€
ÂŠEƒ¶+ÒuFÈÅTv"¼ÙrjQ•JDwÕqúCuúµ™KY¼+yÞ–Ù*Ÿ›9ú¦JhÙÛ¼-Ïž\Îµ²i,kYæÅ"/êH/‹XíåéËL,®’ÒÑjæÞ`<{åºDJb©’Ô«b Z³½š–Ø´‡28!¸‰CYÈÄÚ‰Cl;àŽ7£½í…¢fÒ«J‡_í.gÃâ—…5ïsï’Ž|°Ñt¢·4ß®w½­17kÛFÍN]ÍTÓ8p¢IÌëòNDÎåP¶éÝê¡¸Ð8wÁÑ>³-7Ç4ï<ÌÝ9ÃÆ0án¶=D7bÇÚƒj:Û48‚:ˆ€ "U”(† Œ5‡2ˆƒ(äSÁPQeÄFêIl?°Øî‹m¼[l#ŒÛLrÂh6³œÃ¼ºŒ:@l»Û‹ž7:	ÁíR¨w¬àþRÊ+à»-š‡–Ä8nÝOÄÙ*][Üá^ï$k«Ü &3"y Ñ#G—Œ­šCƒ*K#|¹Ð(ŒB*# —0Š%ÄæÏ6§ÍOFHäÞÜú&”•låðÒ…×*J.—Žz_§(‰½WI~¶ZßÕ)S¶°¾ˆõ‘zrºT•ô4ÚVRC’™U«Žñõl™^ŸÕÓe}If`“s2’Ÿ W…‡µmFÙú 55vp†Törrž÷q¹>GÃåÿVfÚC €ªÉÃ+ñæl«³|˜MìÒîþ¡7c|#å¥ß‹ŽbÛÓ\ØË6õJ6‚ì¦üB—×Ÿ':³kUæFiv³î'éjØ?¿@úÛ&mGz”Õºš­V¯ë>MZaÀƒ(Þ8±2Ç4C€rH‘´Wœ#¢€¡RD2Œ#ªq,B!)À(ÂÜ¦:ál½{ô¾~ €]M % ;€ ß½åäÛ€À“)` ZKêèPà f¯
tZÆBGµþ	üãåÛd¾üüòÒtkÌSûÃ­Ô7¡õöˆ
"Ž
¬Ç*€1çÈHŠGœC-¥9ý9×‘Eœ‡8dH™ÿb$4ä<´ ‚w‰Îi\x/ÿ´EËAzõ(»B8ï‘{ùr±H³¢’³åKkç ,ÞhóvÖ96Ó¸b:ûŸwe­ÇbÝ–œ¦KUÉî• òò«t9U^¤ï$•MI^=V%ùõY2³R¨®2™éRþ/˜n¶¯çŸ’,Ûê–Ç“Ø¹Ù—IqµŒÊ‚äå“Ï7÷ÎîÐò °Dkæ#Âèî+>˜q#ô78a<D`C€0¤}©Öš½ó«-êW‚­Ú×."üå‡·š€ýEøë
fÙE:{WvþXÂ¼}ìû
u
ÈÐôäÍÎôßuŒìl´¼Í¶{«–;7¾¸-®Ò9žP[–õù˜Úg×gô¶»O«§Q¢îe¬fªƒ8]˜×¦³¹šÂ·ÅyuÖKØ%QfÃê®ªKUŸ‹(éœõî!ÕÃö·"ŸwMeMØÕÖªPTÿºl•”êI«:MÍÉRˆÂfã¾å>ó&šOÖ_´äTÝÁØËc+ËœgK£q&J}a„Ÿifø'å.œœ×œfƒ«¥,üå2Qì«vp)=f5Ý>Péwqƒïcqõ ÐÉ*R’aIóØˆK" ãR)&Y(d 8qL„lì!ó€†.Rœ3†`kÀÂª¯ºX4ñîÍGï¥ùe.¼›D]j[+»(¼ýÞ™Ê9)­!fÌó+1—É´7ü†Ïì·¿›È¼ñ>Tez<¯jS(em,Ö§}e0ÅÜ¶)¦Þ4M¯-jš*În6ñfÉÜÀ¦©gº<O½J¸•™h<yeÅY>9;ûgº\¡¯Ua˜z±wk¾³X«.ÍÝhß»¹Jä•5­¤™ƒæ=8kŸ2MSÿaËÊ\ëê~ÏšÏ	¿®Æ‰nšIsýpf—ÏÛ5:Œ/iÆ_!ƒ`'vƒ…áæý2º‘x†0€z}0å‚øå;ãWo‹³ûÅ®ˆkzÁ0½T›Òûñc„o£ngï˜€½¯í„DÃme/ºÍ»OµöÖÜüZµj¹m¸,iyâá¿CèÍhí.d³¥UU”ôPõ>ðd.£î”Áîî‹ñR˜‡X3ÎbÀU4FˆCbS³C‰(ÕH®$)10¿Ð ‡( ”S£ª²Iñ$…Ÿ¤ð>R˜Þ“Â Ü-…Y ·*¡†xC
sƒGHawßÇÉÉáQf”cÈa†:EŽ%‡{þcåð—¹È®Ž‡•dv¥¯E´+y-«]ÉÝû²O<âQ.ì‰HE’ûRÌÍ¢§S¿Ì|0Öÿ &`‚Vî©¡ráÙ‚^&‘iGTmZ
© W8VZKÍ#€EyÄ"%ŒH¬BÄ1Zk{­Fö5[ÎÄ<É\óÜ¹Œ”³öb1Kº*›®[©â¬XKã:OÅ*´À‹n½×â“ö^Ùh„©9t'goŠšáîyW«>Ø©ˆ…ÔõÃî2˜\ÎÓ™.%\U2ü|kÕ;åœ’Á2#ûZ²ƒ¬¤n>BáF0Bx_øËîô«mæ“>„_z{€ [0÷Í¼Ð™]»óßûdÞb!)™ê‘rÏiö—„L$ÑÒ¯îä¡»Ï†í×N…–ÇtJËAÏ±Í=aÞÕË¿Ñu 7	cWÂ¹+aÞ)5š”Ÿ\	o]	ÿôÅŸŽ´‘ëEÚ•ðÒ•0q&tõ(s%Ì]	—®$	]gR^¹¦®„™s“®$óÈ•Òu£K×®\§\¹N¹vÝiÚuÊµëDj×C/	c×Ì WÊ?\	]ç'v}eã¥3¥ëþ¹tÝ?—Ê•Ðu"/]7Ú¥ë[så:ãW®óxåüj_¹îÝ+×½›¸.Mâº4‰ë¸
°äÚ•Ðui×Ã¢['mþáº}®ÁÒµë±rízX\»Näµëëu½ô×m~½œ¹R:Oæs“®gÕÔuy¦®/íT»‚Ä©ë1uÝS×ý;uò™kg®hæº+gsæzœÏ\‚™ëQ0sÊ¹ëš»î ¹ríäÜuuæ®oøÜuÆç®3>w=0æ¹s“®ow*]	]–Ôuibá;«µ%ñ+±ëZ.\·pæ:úÌu@™ëRf®È%sžÜuÍsWä’k×Ï]ßÇÜõ´Ì¯\7\îz®æÎ£™¹mùÌ“äÎGzîLèº×ò¹ºY¹óâ¸¾Š¹ëû»JðÜõÅ)\7oáºÓ
×V¸®µ3ú,\W¦p]™âÖuÆ—®ó³tEŠŸ\à'×wáSê:î×CàÆÙÊsãÚËÏ®Çä­X8Rþé:œ?ûßÄµ±½‹r¦‘Ìãô¹Ñ=;þdõÕäóìî9ã½Ó¶ãµÿ)÷Ëû¶e˜ÂfÃ­Ú–;?·>‡‰:Ç°ÑÍÍ`æ1þÕìÞe.× )dEñÚ‘ÀÀýˆj,A$Ä$E¤xŽ¹$RbI„‚!UR!B	 f(Ô4dD±(ŠÛ¢¤V9ù½hyé)]TÅ_«XÚÞÎ²¡BEšNÛ}©vN*¯¨¥³ñ@Wzºð–¹™†êÞ¸mÕüˆÍò
×Fè‘y”½Ä-3]…ÙŽTöÊ¨'Âdw–](ÛµúŠutëÍÌŽ³»Ngö1qòÙKŠÒEk¯Ê[VÇèÏ…6ÃJl!€å¼§˜&Å‘µvv&6ßQq¥U*ó®ˆ$ÎÍ’·QŽ’!{Ik·c60ÐV^ÿòw3³?C¯/…µ»f3{ŸÉîP¿Ú›ƒSù!švŒtï«[lpµIÛ‹î»I-‡Ekk.‘GÃZ];m³¾{T­­õBö¡¯]M“HÖò|•wÂ¯îõÌ{o½ða“®ff¦lPg-9`•¯&­üy:÷å ­JBtU=G>Á.¬JïfWE}#y×²î‰ËÉª˜5×òšæ£$Â‹â6³Ø)o}}+ï°§ÖºÕå¥¹aYè¾Ì9¯|×ÞÔÙo šJoüe‘Lóá·;(ÑÖ¨Ò ðÙ®rD‰’ü\|Ò~:|%
Ñv)pÍ}¹¸¼¸Ö·y/aõåUàv±]zžWÃ7¨~;ÎÛˆ˜hªgùD	=Kç]M­ßÇsmpHaoGÚ®\”dÌ"îá\]èmN¨0ÈóöO]˜LŸK ãÄ2O‹$¾u$¾·Ê}|WºOµ¿\LS¡úˆoD!¯üiÚÖõü®;F'ñ×ÊG/yuµ¹Lí«õùB)+¤äbñ(
 Ô(”E$@"PÍŽa!u(e 	”Q†1 Œ#ŽqˆÌŸqÌiQ íÐþ#÷^¿úö[¯bWF¢³Û­îeô·ª=šÕÚ×É©VÌUµ‚„‡[é20Á˜75+³€ö]öØÚ;O:ÖH+@tèõŽ­©?¬ºÕhø¨šWã9OJXëjgmÓL«ålá[{–ÎüŒÃªr‘t–ÒÓ¸B«í$—*òí;8ÕyÙW§{×Í†éN–¡íƒžÑd18þÃ??|üñÝëø }íNQîÐšŒìéP…È’»Ûj]/øq‹—µ«¯^-a»=MGáý2-á(ÎOÉ,“C8WÃ3°BØ|Qö¹‚ãøÃ]Ï\êR?"ƒlŠÌ Î|r(½EKUM‡2šc{ Ë§åt®3%ÖàÈ{©-K1|BÖŒ¶£ƒ¹k@ê+ÙåSG¾i’¾ÊÓ]é~vÑWŠßrÊyÊWÞ"Kf•×®¡¯õÆÜZ¸ýÔ´MÑý8› 2à Á˜dÒÖeÀ4"‚A¨C4¤BÊP)Ä`I©(Ä¡ŒA %‘m.»Zß:7xNZ{ÈùµÎæzzn‡|±EaþôVÃ¦Ê]Ùkû6#B¥ÌÉLäF³²©/31;âÍýQÚØÙQFè–ŸŒˆ6.î ö__lÛ_OZÝH­³pŒçìA úÎgì©ëí©ŠE¢S:‚^1îK±RéI;Ðe¾JçÂÙûUtÚ›fÖî(ñ€’Ô•ôJÓÅ½$"¤Q¨xl¤ƒ”6é@HC¡m~¦Q(jsÅÖŠC”VXjD¨f˜S«BÜ-¤ï7Î¶ZÇ°X‘,S#¸dŽSµZ‰çÐ˜8KgguÀ‹Aü§&¯aà*¯)Ç[™v7J°§˜–í]ö$ªGŠj‚œU`ÇEJß5ÿÆØ»§}í&Ù#ØVl÷4çÍ“µòË¶V>–áÐ¾À­x×–g+^ÕÀxë[”Uœ6	÷Ât›žZ?¦€ÑEQ cl‹Kó†0‰°Ò”)Ç‰
Â€iiDLH	ƒIiÄ0º1]58ïH Î6«óÉ­ž´Êõ}bh9ûÒ‰Ññ·jHR`SúÜÕÉëËÝþzBsc/œ‡ã/wp4w×üãš[þm=ß´~êÖ¦o¸vtèd?J£<êÂíhXê8inœªÕ­&v™Î.õtè	ü»Ù';Yö‚/Ÿf•'ê K¨ ¤4B.  `X(FˆäÒPF„„Û^@ÂP(âª-v]ª=œ)ª~^é	<5øgç£t3PŠƒ¬ÏöÊ•3|©¦å	ºŒ5DAŒ\¸7ùG‘šUÓa€ªžô„ŠN]ÛÞúö&¬Ë–²¯¸!cƒûüÒ4ÆRm§¡M%Ó>¶º…ñÆ• vb*ciåðÍ}1-|™Îé\7‹WiâêÆ×Y–öÞ=X#•íþî…Rªk €Q°ŠŽ!¢˜£@X†<ˆ‘P¡Æ±”œD2"JªÃQqs¨›_(QÝåw3¬C"”²½Ýø¤üîìe8;Ê ç›…¡‚€…ÍÄÜC°¯"÷Ö®zB&£‘	Z
jkê"·lÃJìs¾vLòäû7³°|å±ÀÎ¾ÆûÀº’ ¨ÛpW¹\n-6	G")9MBEŠ…a‡J‚0
`(ˆ#.y%×4$J!Œ¥
!)âC¶]æüŸ$+–bº†FEêÍÄµöŒîpkóïˆå´Xa…
Ø|:6$=‹«DÖFÍó¼€íxÐªÚ˜ýÿ¹–:ÏãŠ /QÙ2·´%ò2È{fs•EŸ=XõáHŒ9‡ã…›!Æ…Õ‘Ó=Q³ŸÀ×XVƒ1-3çè¦ÅGó[ï2¤½A{`çÑ=gâ 3›;ôí£,–‰ÄØ‘&æ Ùg²+=Ý§¥¦)©u»è/&ýùã$†,’"E¹My€”ˆm-nb)c€u$b*Œ" ¡8æ€K cJÁºÉÌ¾cZmÈ#[¸²ªÕ. Ñ7^}ËŽx7{)ô^þð÷§&Ô¸³ëÃ@”­{3”0Ô4/@^\EÛüÉ´0Þ´@G]”©¦ýðÎ4z\“BõŒG0'œ˜ÓÁEîöäÅ:N F-¾šði´ô2Kžt.5î,¢=Ô›’]ZË¿Gp£î2­Èª2êvá»¡>Û›\u/Ì‘Yç šl}Ü£	ï¯ÿ¦s—Qå‰ª3²>Š˜W Z„ Å,2¢]±PSˆµÑ†‘‚ÀhÌ"ŠÅZÅ¸ùŸ2ßB*°ŒÚÒÛáëÕƒôšƒô*qÜ.à_zùÌª²Õ'u}ìE–Ø¡Â4¹œ—C«Ü¶ÕÙ2ÿ˜¡Ô¦õt¦S¦é¥MxkóÛÚzÚ¹zÓœ:k¸Œ°­0NÃ(ÎUÙÉ(°c×=ƒÑjoÀÇøv-Â¡aÂŽG4ìxâW¡ƒ7RôÈ!3>ûG-vNà$¿Ú[ÐX„ò(‚%ÀJ3 ‘æ@"JÃ#2ÆcH¥6ª$ BØæÕƒX²His¥ù*»Ëë–¹gÓ&]ªâ=Òµ0©v–×–ÊÒ{ùþ5ÐÚ¹+³¤—iÍß§æ”»ý¯¤°FW±4à#³§´ýCZ«k)hê&¼2Wçi	œï  lFÞ!ÀÃ ™·Á ¯Ù;¥N™AôIÊŒT?1»Ëˆ;@Ê”šÉaBÛäq¥ˆ}Â)ú±OÞ÷<Â¹lé/ì„aª’qá69Þ¾ùáõ¿}¸€økp€/ÒéuRø+nxJÎó‡JU±+Ctùw¹Gä‚¶Ìýiï"üªãc™‰­ýŽºBCûBª
.<
ª*d,à s!†æ£²Ó˜*&±Bai2h4t$ÍgF¥# %Çm©­Fù¯ëyx(Ïuý¸vZcì®Ò‡%ñ~NëzFž°Õh¡1‰5êy?4¼ªZ=<Â2»Þ–JÝ~úø×î¿ìô‰;¦
¾œ§3Ýg”ò¯—³ý8É¯ ¦„LÆ*
 R1A„ÐQ$4aX #Æ‰‘‚*ŽÃDbºëå¨ÚäðÏÿë[ï&ùSdªŽØŸ›c=1ß( —ÌO-4÷
˜#¾Uœ3Æ›Y¬Ñ«“5“ù$`Ç/wapaÝp–öd=x‹‡—Ö%A›tI›Ô0¢‹µir1c8E‹‹ûÍ#`Œ#ØÎì)rX“Ï¬HN°á2×…•ùZýÈ,š‰¼KÔã	NÀ|U2™¥ÄS\ûp˜aH
£ ®ìBC2²–ŒƒR¸ªk2u©ë‹Eò9ZÆƒd'm‹»,®,šÎ6pþªº^Cê%.ŒlL‡î ’©ÚFC9÷6JúfR¾S¦{¦+8-†“·w0“`óq[m—-»fvó¼Ý)_¬Ñõ³º<·EÞJ¤v¾5ô^Ç.©;¨*#pm•õ*µÛŠZB=¶ÑPE¢Ø`ÚXcqhS‡ÙzP.°ÐFi‹U¬4‘QìB"lZcÎ´nQÓÞš—FdImâ¼SDÛT¶Ýô§¦ Ñûîå`uÿy+-Éf<bÀF85Jgsîtwzµ9¶»7NYAƒ'¢ aFø˜àæ#ÁÙU³¥V…ÑµªmðwÛæ½¸î t(u… ®Ès0àtÇ™àå0TéŠ
‡@»ÁˆÎV¹¢©c¨c˜]wŠô‡¹ØT+L£ Ë@ÇœÆ!%„ $ æZqDÅ!@P)$£ˆ‘¦ÿ^BÝ=×¬öÛê!jz5§x¡þdwuëãB“B¬ÔXÚkÓ9Yùþd}úª¬O'âB_¶‰f$ÈøC|Ö17šŽ.D'f®WEXé@/¯Ž%‚KE0A ÄP•˜	Á(Ö€LÈ˜ñ(P±$„Û{=öR5€šÔ‚4þó—7ÞËKë°–â¶òá–^[ï?Í¨=ýYê@ä6ÌªŒƒ_Å¶·ÛìªÁêÀ´í‰¹'ÊgI±¦Û -€hÞ£´¸2Ÿ//¯
&ï-çÕgçÛÏ#§r»†6D~¶£KG„<—IqµŒ&2ÿa ¸>ß¹9vB 00ÿ16 Pˆ‘Y
wC °ÜÍâIŒóf¾ZŽˆ›]c³~¹ýjÿ=úPU¶úñ.òî|_Œº&b_˜)Ãc¬›}êÂm§‡kÛ.ˆiÐ3š®ßÍGî5ÌÙjßûFg‡EZcàÂp¹j>²äÌ<I‡0|Õ)Öà^E‡ìv‘nYÆ$d3"êÏd:u2¶÷G·´ –‹ÎFºrõZ¾½0ä€ÁhÆ)DÒVMQŠ ˆ8àF+fŽwbäqHˆ4°Ê(½D$–hŽ‚¶tm÷m/Cì4§f£a÷“Ö¶8^(· JHmÞ$q‹{rºìQ( c®ô)~èðÎ–&È°O8¼Áç@>œÓp7|–þZÔÔgµJ²gw"¶Eª•Ò·ýØÎ¦Vð(ëanhÉˆÚäìiÍhu{3Ì9µ&*ŒBÍb¬…u6h!q,c,hèP…1Úî½e"Ë9»'¼-²8ÙY¸Õ€yr)ì%´a'&´ŽvýˆBë€:ðÉ›Å¿l³ó—&ñê[\3aÎÅ¹öõ(âJ#"€@<Bò ¤4PZC™jlÍ#Œt$‘@"ÖA@€0B°§lUi¤HW9@µW÷"Q^$r­¼4Ž=53/“LUGv˜Ý¥Ll†±Æ…r/Ÿ'‹….S¾èyiÿ¶ñ“¶”‰l¤!=Kãf?VR×«	'&|¹sRJå²Yä„á¦KŸ¢ÐÉœ}oo>Éá±r8d£’mß[å{íWBß{Ü¿C¾Òá%îæg§s?I“§yõ¼ÇI\©ljjˆPt†„
BÁ Ö2¤±äs­©ŽPá˜à 2QÄ` 1ì¹BÛ(iU¾â¥+t}ò¯GÞáN=´|¹{æ‰Ë¡{bKÌØVbK{Ï·‘ØÒ-ÅØöŽ|/£ÅK°xY/Àq¤Ëºù.ë§}é‰,Í@Æ‹õ,R‚”wA«—`EZ+ 5 RhŒˆ$&€Û‹;Bœ2Í…Ä’($4:T
w¡µÚDDžØ4Ô›ÍÉi™¢ÁýuøM)’¬¨ÅÂY²Uát%:B lÞÂ€âæ]!à$$Š§L{D‡£ÌÅÁ“.{']8•cù.×€ƒÁóQ£OÛÌX_y.Ã‡]xÞç²ô¢ºq>â~õž…¾ÃêVÔJYpX!ËÒ ù:+ô8t&t¬"ÝØÐ‹Ea „T#„!D@I’€ÐPF0†Š‡aÈÃ 3…qL•B*ÄœP)ã˜†H¶€‹×¾Ma½†•ú÷¯¥În«ø\åÙú‹¥MÌh>XšðêÙh^î‚!ÚÛš>‹1ì+q—+Û ]^ØÕ³áÝ))ÅÜ+¡Ž…(kE×€ˆ¼ŸòïVvÝy™aÛ6(”ú®üe–ª*òØü®ôt…Ž¬ßÜÜlä·pç&¹NÎ?¤qq#2}þ²žÎÕt¶!FIˆCÒ´Ç2Š«ŠC÷2[AF6²„øÚ„Cf¿¤·ÄærûÕ¶÷ÙT„¿TÔ5æ}ñ2/öÐW›ýéðm§’K».`©½ýýs<¢ö³ÅR^”¹~ +˜¸cøùÕ«<#ùð~E(i8Ö©ŒÐTé¿,’iæ­ã‹vÎŠòX eWvëí¢«£~ÃÈÖù4>ävƒ9"1Í5q@™Ôë0ÐqÈq "S@¨cLÂ˜C~K‹âÐü¥"Þb^•æ?7§Èú’‘­Í$¦×uMô6 «”µËŒ²~Î•°×—ægQ‰”ÝzìyyEp#æE•”Ú a ÏMR\•ˆcëygJèY:ÿ¢ ïAŒ Ü1 '[1Â$À$@[#èõûîX¥M™;$^ø1PÆ¸xác¢HC6Ô
³cŽ5œÃ‰=ÄÚ+6Ÿs¨.G`Væd·‹R?ï’^tÏõ÷¾ÿhp(ƒÐäãy)zºi‡q¿·4þ†ÓÃ‡^J<„E„+Ž Œ0RD" (¦ £@HÄI„±ùŒÆë ‚<HHÀ	 PSØVCú	L<*˜³½R¶íAn€	Bë½rÔ&žŒ£î?“¡‘NŒ6_¸Ã‰CÞM~\ášÓe'Àjy²¸Œ²¸÷}I·±“¹E.ö	\¼z›Ð0¨Êü¦£™Å

Bjp&‰8ˆ¢r¬%G´u·„ù#ˆv¨òòÕû7Þ6pÆ{]Júv4RÝK,Ø¨@A%T’/DaÏ½²±*0Ç‚ëôðÍ—•»æ2³#ú=Œ¨$ŒYÑK=™ëâ¼öYélzŽÚ@E€r›Îõ4ÀBw_Rfm†@¼ Øo€X$UBp|t:™Sª}pÌ¼)÷¾·{ƒ†phX íEwÔÂî·µ½5·¸­®‚þlã#[="ým¹é{mêÇµÏ£p«Yf!n]ªó*IFÞv‘«Ar¾Hot¶Q‹»³åê€îj¸¢¨ÚíÈ
Ò¤µ»+í 53]mæóZ‚¶§1ß_L³0Ýå2;š)	®-Å¬Yss„´Wi¤ý™ÑŸË‚"Òü¶-ûç©ýá û‘õ;Š‡IH¥TL!Ž%ŒT„eC`1GŠÅš›ÿ‹B€ÅQˆ`ÌBBA*‹lh»µöêX˜þTn¸ñÒÙÆŠ^	kÐ¶ —‘r«ÝØÊ–ž¿Z3™?¿i´ltøÊaaÁ<1;²jÑÐ[ÏÌêÆãL»ßåKyå‰ÜûmžØOÌ1o~Ø€»†ßÙv^½y7iÿô}o¦ÅÜÒ]NoWù76$DœÚŸÒy±îÑäììcÆ±5u?ãå´œŒ<58aÃzò\O.'ÞÏV¶UƒÿÆtåL¦™‹ECSqëús±2ÏTiïbnø÷üc&TRþï•½þb?6Oû¯ÔÀñùÙz* J¤Üàeò¹npÜGÁNp„ tË?qH(›åÍÌG!ãýUDï¿þêEòËWhR½.é‡¯Ô¨²XHJ¦z,HêúÞ1³N®¿W°¤õÐÛLr>ûJ±o¶“¾§¦=ÌQMPH¢Aˆ)•JEœà0–D‘BQp ¡5¶Ž™ÖšJÌRB†m÷¾^¯‡µ}fíqj—þù2òï”åÒœhóòDk}p©þÙ#òlãˆœ%6ßf^$Ó©Wƒ"{\ÇËyÙ«.t6½=ÓºžnÁ{Ž9å¤i/¦ @ÚßÖ¹qŸÎ¸ƒq2´„rçÚî¸s6×úÌÝÓ¶Ù…Š÷8g 6}m•·s $æ
Ê , ÔA¨Ô±6hÄešé0Ü|.E€"¹’H# (Í{ÏÛbï_ÿäÕƒkž±¶À{yÈ¶¦ïîs™“Ù¶w%>é}²9Š[‹HW‡aþ·º«‡ZX{¶	k-Æ¼‡-b\ñl}gÉÓâJgg[_¬aïŽÖ}Í¯ÒåTyó´ð¢RÄ%n/ýƒ›çÿäìWVÉ,³,ÛuÊíÈîZ4‹fOþ+óZŠúÌ5/h¶”ÅÒ|n£¢ó[#m>ginÏÊI2ûÂbè8ÖYy›l5MëŽï^ž°ýìIVïI!ÂÝ¼€F0gnÄ\›·ŒÓÞKh÷ÞlõŠúðÄÑQ½£Þ[™{}¯S=G~ËAz(˜}#’BøæiæÛ$é÷.°¸úx‚Ød¤DñH)I5³9é‰(Ò‘ H
)b›_Abˆ•$2fL¤”@< ’c&‡m>jx^5<¯^gPÆŽ	Ù”13‡n6_ÝL©¨Í)™%—Iiú83'—s]¥ä±GåÏ¿üúîGoqLo‰=Ê‚ºÕ‹Òu±­ÃˆuÖ­dxÔ¨”›EvÁ8 Í$ó`•Ù¼ã8º?É~µ}j¯ûqô¶
ª°2óÕ+ÿ‡ú^~1ÇS5‰ÙV»æ`oÏ	q8Ý_˜®ã©í•?ìátY\£ÝG“[Pºé%šàº—dØÁ"tD	ãQDÄâX(,µâŠ‹˜­Â"ÒÐjˆ„¢&"D‘ÆZ z&;´!ÇÒÝTì:”îZ«oë\5/ïÂÝ$êRùY	öD}MÓôºDk±ÖÓ£žH—Iqw"GYz“ëóªæwÙÝÜ7Ûw®D¦WVØ}\ALø–­Q„Í/<p=ªî&Þ¯¶“OE’¿ý¢®ñï\šÍï{:… ÁêûöZôœM;ßzÇ¦]‚É=ÂFUO™äéþ¶ÛÓ{}Üy§‘	z:6¬¨§C‘ÎØœJ•[Ð!^ÜFˆÚ#¸tÇöD©kÿ3„®ñÜ_h	P÷µhÉÈ•Ü-þtbÕ{ñ…kø×>CÇ(VB0Æ('„›ïúc´|(ãH’0R£ Ê hD‰DèAAa ‹â¶koOcÂà÷mq`BÃ{Ã¨£ƒbÔï0èFî‘cOãÆ€ƒ«l=8Æè‰*1W¾ÍÎl«>èüpåjâ•H›âú©é˜éxàª¤÷€Í‘âêO.ÆýžÉé1Œ½X€ Žà	˜¤1TŠ)Æ’ÉHPj”j˜O@‰HÛ,E Jˆ b±V}6;¸~Ä³+ÿ¡5ÓÞoe}Ùî$­¸!  ¸Zq!äã{A\ÜÌöp„3ˆHW·óÉŠ»?†a/z¯O‡2âº†þ¨ðC›šs0þë^Fq7ó]Ò`àå`ýÆœÄB+óF"æ0ÐbÁ©¦‘°ù¨BÊ¼Â*K´ÐyÞ©jÿ]øU2³¦÷¼S%œ•Á]S]ÞMŸ{œÞÜ¼˜Ó[{Í8õ~ÒæõÞ?Òì:/ê”oSXù°µ§È’?Åys»NËíë@`çi‰'hó>'9,›e•IûQ¬{f‡|Å–ãCÝÛÍ6ÒVü¯Î¬©;_Ûžö\ÃcÚõmÁt>¢Ù½ê8ýw¼J³RåéÑÛš”Ïÿ»¸z í=ú	ìKêaX^ÿ°ÌÝ:³¦tìÌÏËÄ­á¡c»ÿ¨,_nm7‰]Ú?ZÊ•™ƒ±}¶U¹ï>p¡ä·ß:´Û |þê÷ß_þðæN°{ëU~ÿÝ“Mýê¼f?J£<5ÒÑéÚ~¹ß~ìz¹Î2°±j>$Nr5•FJJr$"ÑJBŠl±b%¡€Ó@P#Ðe ¤smX ’2ô„”#%|)¡–»AR²‰”# hê”FÝGŠ;àÃ×j?V2+wRX©ÇÀý…b%G‹á}Ð4ŽÍb'WÎ;`4‚eP×Hi8Ç çl ¦q\îÏ{°ì3³!~†-,†&Ž£iÂ¦át6˜·	ÒŽj*‡n‰uÿm1[¢ö(J é*ö|`\Ž¡ÆŒ"pã:RBi$CJ `œjDê3 …ÇB‰rM '­–­7fb—eW•™’ê’G£ÜP;N{ùæõÞó—ê“˜KîîÚy½n§‘+å›*NyµÅ¦Ò»Ì’âö¬ì‘­*0WöÓ{©“á<R.œrw—>
°MÐô”Ý²-?½ê¸íCÂ‚f¬7½Ó'ßn"fø² Üö8÷Þ°0Î|Ûñmç»ÜÚ–[þ;÷6W)oLÓãÚÜ»	9"Ó×ä/_½5âÏQ¢‹¢È=e©’aIõÌëmé‰#½F‹!a—eÒ¾®8a}V®Ëuæ?ä5Ðdù¹Ê'Ô‘yqéë,K³!žüÁ^YAx×ÕÍõ4™/?aùÓ™x€…ØÀÊöß]ˆ¾.öhÄdZˆBOT-¶:Òm|?þLsáÇI6³éfÇ†;Ø8´ªsF‡!3nÐf± qÉˆiÛ Èˆ ÑjŠyÈY(µŒ¤’*Œ˜ˆHÛÝ¶Ÿê!U÷bµé¦˜z/ß~xéçË…-Òe@Ž<©H‘©Áå‚m°ÃjÖ<³ö†s]ÿ×›/g‘AAeiàõ&gìåÜçÑ²(ïÜà­j*}³N±nršZù—{7W‰½%Y˜%§K¥-²:+óÛ…+Òtš¯—oÕÍ£^”Ï®‘UWMÉÊP·0BàN`…qØëºñ¶Ô}nd@ÞŸk¢¹µýjút`è…ÁYß–€ö‡¯ËŸðºûµüí`–µ—óèù»åÔN§JD4v8”ø€Œ‚gíµwª ðÐ[vÍÞôØ°vž:û@¡oU·¼/»Ð.-¶í$ÃvÑH¡±¡h‚'h\ê	£†€J…BˆØèG"ä‘ŽBÈ$¶Ž ¶·òµŠ4q¤ÆÀC)%ˆâ–³úcXVkžo­Œ÷>”'çKûÆ[íÑ&NxnOïoVùÞ»Ãõ[»+£g°fZ¾ËïÞ¼~s¶Ê ¦F±-sØ›V«ÆlÆ„ª„^]zÈ¦hhÈˆú ®ãåÌS¼l9/ÅªëI•§¢¬%œÄIêÏjy¶ªØWwÏ»J.¯ŒH™96õ6û&ŒÐF˜›Ð¨”leá?ûðtj^Mï×¼—ïß|W7f›.Ö­-Ê·0Ï’²!+¼fæˆ($oíQÂ€ Ø¬` ¼Ûç€ng«Ìid“Ü	’À^)q’#6F¸~wêì¡²#eíÛÕŽ:bßîÑï­ÁsÇÓ“n™Ðr¼u¶è´2¤å•6_?à€-[½¸Ä•×„åyw&uRZXz£%v3e²3ü ƒáë‹ØÉÔ`²“)Ê'V]ï3Ž¤‹Ôh~·.ëºAë¼´»¹úW·ÏaÛY{×¸…µw™[øzWº…¯w±wðm®÷qÂ¥Š?UÕiâ’nz“¡ë|ÊtUî±¿Ñ©ò×†—ÎÙ¤[[GúÖKM6|M´n´oËnÓ÷ÅfmÓãÞns‹9sî³{}­{9®½ÙÉ4¤OÉD}õ×{K²ígžsµËUçv‹en§Û–ÑÙÞF·*œ{”ØJ\Œ!Â$ b„E@˜ŠŠŽ!ZG”†!5_IÁP2Á¸$PIlt8[„#Ö -RìI‰{Râ•8zO‰C»¯ ÛÌñ	‚lX‰uÕöºZw«1<··7Î{45.zýê¸j\o<Ý)ªq®Ñ]úÜhNg·m«v·û=¯Ù ]o<¯£w²EóÇ[)ŽNò}bÓÀ½ÑªîÇî¾Cº´Ä½ZpÝ'­:ã^ì®»¥Uƒ<X†ŠÓR$ýêœvßà»øîôK§I^ixÃ¨Ç4ìR$O(âbxáÃÝ¸6õA'îÌ=øgŸøX÷ºV¤&úÊªàï‹8À(T ¢„„Áz @g2’Pá0(ÆZ…<äWŠ„±–$‘h‹Íxm‡“.,ô-Uƒ:ÍüZÕúµCÕÒ†hµ±úÓØ™¸´±#Åö@-e2«³XØó§¥°ag¯›¡¥€Óm-D6IÃ†Êšÿz³‹nìÿÇv¿5víìwƒ ¬ËOÕØªu8¼ÞVµ{x'œ9Ê
œSÃ®ù+Ì6¤Õ=ðÛJª˜^ø½˜ìðö §£«#k=£#–pg,ÎŽÉ>L¨Ínü ÖZ…PˆØ:½P©!PÿŸ½7ërÇÒ ßõ+8õÒÎIK g¦Ïñ–™®¶‡Ý•=/>ØÁ²$ªEÊá¨_? HI”Bâ¦Å®ÈÅŽî@ ÄwïÅ]³ÿP‡âBcˆP±‰5¦Ä1Bs,æ†=BðÏÁ¤­ÍÔA0„;!˜ß`ÞÚlº‚€ñ´?ß'«©áÎñ+çá£šPAøÇšŒ;›,ÏÆ‹+{Äí‰&&â[_íŽ¢¾¾°aÅF3® £P1IŒ)°o>	‘‘ÚÄ3J±Ž´AP…„c%95‚0­é¾2lÏÝãÏÿ;þf11ó xÒ¢Üå[—ù¯>T¡ 6ßgiVÂ£‹Z˜§ã2>aÜícð$3æYP…'G3Réhñõâw/éø`N’ïÆCª=ÅïH†Ôå‰ãÕŒ!F 0Ú}±ØV gH0­f.m.Ô³cý–z°.¢ýQr9Õç?'ÃîÙ:v¬Iý¼óhÝv;­µ}UxÛêêh}¬€äË$Õ‹±ù¢òñßÉñmtŒò'vR½w®O'vO*aH'ó¿•&h»=.ÜVé=1„Š
Š-4´Ç“]ê-Ëõið·½rÜ¥— #ÎcB#ˆ v¹­ ¡*Âc.•RÐ*ÈÒê@PsûÙCýˆÀÇG`r÷¸ö °•Ë
HaÕHlÏþv!~uüý{ú›‹OƒÁ¬s%ªÁJëÃÂà#–§8³«Ñy/™¹ø½Óþƒà‰0“ôìêod¸=ó¥‰¤&"FÃ˜FŠpK£UZlF“:ŠB®´qŒL¤CN!Q1ûÀ÷{˜~xk'Õ>T^±?ÿð&HígÁ‡—ï‚\d_ƒ©¯n_¢<Uéx¼qEl7âöéÀóL-Î|Û*¢­,òÎÓ¢­W—‚ßEn,‹7/2ã?Ûìãžár„ZkÆœ¡í ü‡UÕØ¥mNUyg‹>jÆÇDeneÞPÙ¯ÈI0Ù·|­ØwtZ<ÖÙÌý]Q‰ÛpÎ”Åp;RÇþ´i-nsZÜšð‰ÅÐW/>_~_š"¥N©¬Ÿ.…õP?âÅ=ÜŸAÛfH²HP…±0:†T(*0ÑDÄ”a®Yh˜
#{²³±-‰Z øðÏ
ø;Lá{q—¹zðÝ2Ù |X«›âý€ÿ¨ˆòÙ!Šø9 ÿÄJøY!¿“¢¼û®_ÅúîUéà'3´Ë¦|oÅ‡4ËÎn+ˆ	•”¸ ãH&¥4†á+¦­8á, ‚X#€„Š`$RBãÈ i „Ü':ü™e„ÓE>[äG—!ÊÛQüÃmÎ×\w$‡ŠÄ0õ|zž¸i\9­­Üà\g^|°SüÍ.Éßî›øÀ[Û æ`ÓŽ’éÁÕ$ét“nçãÑVpTÁò>ß•õ8‰Ø`Û=‡ÀvsZ‘ÁvÐÃB°Éu`ÆÂ"ïHþÛ-÷þîÛÍô©1ô×ÝŒÂˆÆ!!!‚ŒUº5£€*¨´Ê6U±4f<–BCÅQì‰#{ìóDÑÓ¡hÔþ6<Â›.Û°QŠv´¹o£è£~=H?5ŽžXù>ŽöV»÷°ŸYO«–€´ícœï!ÞÎãÌøÐ¡ó«®Š0 ÖÔb-wÇ4BFÅ1”:d8âšÄLi‚<†H¨U™˜¢ö©®Ïíã¹x§îÉžû (igÃ3í ×‚Dzã<Ân—Iž,ŠÜÙ¦·@Øv"”2™+×³îmPd¦×Î¾0õVñ4w¹©nÒ¹Îž.1Ù7rÇ0>—†ð¹Q–¼lJ¨yê;™šÜ¶òu|²ŸºÞ~P<³çÇ—-’Ü<µ@_$èw0n›,/\ÜJ¯¹û…ê.w}KÝ˜Úï·± ‹6Ã°\hW'/·õËð¨$Üí;}ˆ’¼^–“`üºùs¨ÌëÞNˆø¶ß/¾£ŽÊ³úð9a›ï«Ýµ‰¹,çå,4ÞÇ¯èž|øüöòõ—Ú»øÊð€ë§¨«Ð³a§ªg²6±XŒós	@g°;+Õh‰¥2ÆHÆQbTrÅ1²¿K‰c†qÂˆÁQ¤9 
C÷V–~®´Ãp·aƒ‚íÊ×"æ*UD P'ÓÆèÑÂq!ˆöÉæùc„ Û;Î.õ²|T¥¡Þ¦“½üDÆ“Ã™VÄ¡ÎKù©Eøý‰Å¨ó90ÜWi*sAw.»Ìz‡'7'a£c"iLì8æFÄr£MEk
(Ó,âjÄ‚0(XL„$”“QµG–zý=7ó©î¡–·1}ãihö4¹È\N»­Ö³ÈÛàõ<ùh3x)2+¯oÓYzßd–¡‰»Í6˜„[—1®‰j„¢.Ëz²zmî¸rÏl6²C‚ Ö«rqeÝü9l6ëÞN'®¸Ö¿¬;úi)ÔdÙ"~r÷£Æ-š8UºÓ‡=@PÙ‹çBî3ØA,hS¨IDJ	\š5J0`Îå"Ò\© UÜBxL#L´a¡Ä¾„?ØÝ»i[{&Û‰}hmD/2ÚiÀîöÖ†{ƒÞ÷ÌØÀ8è}bcÃAïŸ\ßß†Ù~\;ñýX-ÁÓº}œM×?%èÏŒù~vM])-©¡Q¨ˆbTM`RD´4ÚƒSh^…Š3I®00GHIŒÝƒöæ¾\!ò‡¶?{`¾t|4åDÖçÞõàÝõÝCÑÁ|ÙÁà‰øênD¤¥àƒ˜ÏÓ<øÃ®Ê/N(ø»Óá;;ÁÁ‹q2õwÁLM¶½0³¹q@îîW\?iˆ`’NS{âÏ˜Xqã«±ÒÅ4M2S‘@üP\¥s½gÒFØ> [ÁÎí³šÄ(BÝ‚üÄ<zvUÎˆø!n›~EN#b¸–ÏbpN°pW¾‹Ž…@âfM8µ¡À¶í<N¹Òbs5|o;¼‡:þjÝZZöYÉséàÖ 
dŒÆ1¡J Ë8–!çBjiOÌ™–Â(Žhè"æR2¦@5ûò=Ê@>Ø¹Çyâª|Àð†|ÀÀÝnîÈn‡»=€ƒRžCB8µýá|B//…;¢ÂÃÍ¬°!Cµ¶ÝI„‰óùÜ¡b1›$?Àäë- ¡fRYÙÐE(‚€€,’ ŒaÄtdµL	†°Â`ch(¤Ù#R|ž•®„×b:5c——XLu·‹Ì®•-Bd·Ã<º„H•¶<¥)Ò€é|À†Ë®È^X˜.&ÒŽÂ
å×¾¢º4Ëj×6VD™$S£Vèðn“cñ­ˆû´}YR‹cI>¾¾%bõˆ©÷=`ë¸Ì Ý¼Ä`¡jndF0ï5âåÑ¬pÔ¼È”¢„¿"'|Ëç0+øŽN+4ø.~?ƒ{}ioq´˜êÓãè”sc„‚aÇ¡‰,bZ¸)ÉÐ Eö¯Ð@-â3V[±TO‘á§Ñ#’Þo$m~€ØRÀÙVô#a·¼
w‘ôQ?–’Cðs`é‰ð3béÏ|ëÿîÊO„µ™,@áìz«»ý9ƒ*EP!à*
±/¸±Pˆ€FibBŠE­‚£’ë˜êxÚ^¾XÚˆ»áër"*ë8³©v“dÿ‡ËäB£àM¾N_d±pPòZ õ˜•Ä‰Zî=Âö>í”meùe Ü°D3Ä»ÝT¯æùQ­<*rˆWÜjUN‡ËÖÏ¢^.;;1,fòKùv?€èçlúîô.Wê<ÐyU•† RC1 Š`Ç#‰1ˆc*Á‚! #)qÈy¨ˆ¥‚2,Á³?x¶w*§.óúxBä2ì¯Áãn!ì»ÁóQ“<‚&	IãsNø<µFùàóáÞÊ>& ?'â~ÓéÍôGÜ±JCxl¢ØÎ`¤clbaQÂ
e(cÆC#ˆÈÝÄj;qm,0‡qˆCµÏ­ûUñ8fî Ï¨sÓ©¦	–RµzÕj<O'²/ZZƒeîlœ]»2E2_oÞHœë¼°Êô8ÉÔ¥ûÍ’«©]™à&É¯Âþê<¿,p•ˆqò/dOƒ,õ,eŠ`ÿŽe…ã–¾&SíLÏ³ ’/„Ìb>w÷,o[ç´Çd»$Ž•Ò(¬à=]g‹k‡÷Ëõ}Ô•\šö°_.ÊI°~Ùø94åe_§Eúe/×±ç0¯fû,À{Ž<r	®˜@‘–’D
0-¢GBR¦©Œ£X)iåØ`‰v	ÏC¡ÆˆaŠ}ùë¡÷@oëDøz·"ªhHP¸½tr}Ú	½šöÀâÿt>ð=±ž}vð}¼¿ýá÷·Çç<MÇÙ0Næ“1?(µ	ë™ÚD#ÂºdVË%Úp<:†œ(¬pC“˜Iµ¡"ŠC©´¶§9‹Å¾¯.yª¸Òiœ
íü™–ê!;µpá7‹s5å9)çÒåE.™êºyûòe×­'ö ì±æ(‹.ßÇhàp?N]ÙÂ½Êµá8Ä7‘Œ…›gƒÁÿ\ëÌÙJA0ô||÷:øCL&f[|òJ¾IKm·ƒ=#Kú‚úUr•øÌ´“ä/û]å1-ý·ï«¶ƒmúÿþk“v‘}G·Kòaûü:˜]‹Ì¬·üÞ5ôIdÊ6óùò/ô?…)¾2Á÷C2`X¨ÇUÉ€†!9ÞS"G[™]¢£ªRŒÚYá7_8‹ì‡¥uy^É.|Q	'ŠÇ¯>õÇ‚>\›Ñ ;N·¶M·vvÑ_/d2½È®›Æºš€ýt±?-î	J»j¯ã.ýL
¨~Ð¦ø…6ßN$üçÅ"›û½²†œ‚È’¨Š45dÐ¨¡ZÂÐÁRÌBÝ¹?Ÿ¦î¯6¢áê'¼ 0"±
2Š1Õa,`­ž(© Ä 8ÂZ†±f†(JŽ˜ÖL†ûLú^xùlñõ¥Ùwbê /(€ÅÜ×õv…çú›˜*£ƒ·Étñ=¸ôòÇsV¹…Æ…lÿÊý|žú2wbì¿×­–}–™î7ºvj‘4ß.Jû€›þ¬ÈLo?±²Í}AûˆäÊÊWÐÞ~CÀéN´gÑ­Ò9$Dl£tg€´2ÂÛ9,·X‰wÅÆlƒò/._ýXÕ_¸‘22´7ÞÛ£iëùÅ{‚Ã^–w»õ¼ç8XÇµS°êø÷×»;ÞL÷=bÝ_sCêu"†•ÜÄDÅ˜PEB¥¹á.G¥ÀŠ+ã1 BdEŒ(¤­*ª¥ÄØcsß‰Øö@sÏä~owSæTj©m£ãdjÖ­x&ßs¢vàÞX?ý©‡	Ü<õìAí>õ D!q‰ª+çžm PVÕs$ŒãV¾º~ïþýÐoÞ-Æn†t"N|ßx÷É>ó û<óZÓ©×Eµñ-¶ÓhÚ·\5múúµ| ®d5’:mi©O³¹{]ZP6L¥Å…;Ù„?^ù:°Å>v~
ÕÏ/7]Ô¿Nºâd«FX+•Ïñ™é¢Ó¨¦j1ÏLÖ‰g&¦fÜã¬ª¯åžç­Óü<	U-›Õâ´õÊ´ÏÀâ}Ýâ|ZRv1( ;/h·+Žº»÷‡ÊÇûò®,­Â~?µRO‰miœ¦³»Þ@³˜N.×û~¢I¢“úïzq¥Üš¾oê¤¨×LÑÔNfþW/&µgI¦¦vö¿Çµœ•Õ6ÍŒøjÅ ÜdûÈ²åú‹·èº‰NŠÜ·×‚ÔîÁÃ-Q^ö+;þú±–!‹cJÈBjHd„ŒBÆ­Æ%‰¹ÔÅŠ°F	'’j,öål­ƒ"KTi údœJŸ{5¯xIß”/Ç¸5tfEš¾¶êXÏí
¸ŠˆÞ2õ›Èòà7+'f|²ÒvæÙ%ý›ÛáÝ7ÝµÕÝHÑ–Ó(¸$B­j×Êsecÿ>joGÑÞ¶/__ím¹Ç×â–-¤ÍVçzXºMGå$Îopì8pKŽ+¥¾d]dæ
Ãï/_~ÁmeÝ;|¸­l{j‹/¼
ÎyÂl6eV/rô‡zÈ:ÎV*úÊ7xDGpyšànŽ¦ Nƒ8&!‘’8Æ1Å°Ø¥@V,Ò"ÄH‚ˆh„"qª•6LÁ}A«Ï—•“‡JÌœN‹™ñe¡³ KÇ‹ú[·çïž¿õüé¦­ø¥;¹ãù"OíüZaæ}ÑKð*É¾”‘§Þñw°ì¬¸±ñ¥Ëû7×ª°2ü4Ér«o¦ó"—ñÛçï½“ÉË'N4²#Ÿ'u­Ænæß
e÷#œ8(u¿½O±wž“tnþ¹}mæ>Ón n£d£ (ž²¨s]V©vZƒ“­.,­ÝîvÚæƒX¨¥ý\xÇ§éªoŒÅüªš7ÊM‡ÅÌ¢Âõ|1Ú‡¬†Xî ÌQ~ž&ßí Þ›ËYý¢Ö“dªÆ]¤”N²AIò‹€ËouùüÝ‹çÕ™x—¸ºÙiœ?ùôî—à‰Cn²ˆ^¼ÿTÌMá­UlörêµûÅÊšeÿe-ðâ¡o’ñØî)»òt ÍZ8³“È4¿^r©qbƒ‚©ü¨X27áïÓÜ;á6]|›×.sVž.,ö†á°hj¹å‡åú—£·ýdƒ3>CYoß}!zÕxaQ´á…ÅCH–u ·¤\N8ÝŠÂ!ˆ¬T\tqH/(Š©ñçÐ°8:È·/._ùÕrr.þuõ#ªüx¸ðûyZ†°»|í'xwÌÃ¡ÒnDIgi×£NþÜ‡5Íµk;5»¼¥ð­¯Ù™™Ÿ<÷>{ö|âÎÓÚÍwÉŸ={g²Ìnì|ñx‘]w¥ïÓ‘;~ìkÐžc­ôõáyöìÿ‹³>Œª=SqÖt¥?„1ÏçÝ¹~³çlW®ö³ð"¹z3Í_¦“™¨¯)^ezyíöÏRÒÛü»×ïõ|žöè®ë6_1~4n¿wÛ½+fqu57W¾_oÖ‡à¤½~\GèØ¨·ÒšóÀx‰³'Û]Ou‡#ƒëÙ3ûºx€ìºÅxÜëÀç‹zÕy?×¡§VðîÉvÐTo·`O˜Oõnæ 9(tÄ¾|};·÷«.‚ÍŠ£ÏY¼˜~-1#Ÿ§VQè %ï‡yš§*íò~”œ—V¥’=F[ðYÔ¶*£SOÛ·06bºè0µ}‰õÚåeGyîåDÇ]‘’Þÿ E.z1öë±ó„Œíe&ËàÜ»Ò[Œ³o‚S¿t8½
Þƒë(byr»_Ó±³¸ü!:¨KÞÎîù:=’ÕO§y½?Y¡­µmr1wÏí‡PÐ?{öG’åéü¶;ã›^ÝužÚ%ã‹PÝ¹.s‘·W»^½è@j{±ÇÀ8m¿5O×çeä¢CŽºý>|e:™y¶dnTþéå‡—…¿L¤^¶Ñ}ú_‡±BûØ¾ŠŸz°ý‘öê­»Ð·æí<‰%gûi|ý=ŸÕþ¹JúîCûÍçUÑ•Þ¦ýèJ¦öÿ›ÉÕu'¹rÅÑÏÐTa/¤¡y›*Ñ^Æ¬0v]¿?¼Í¶#ùl½{Û‘³ýÊÿQH­éß|xéLVSÑ+<Ý'¼ÂÜþ©<Ó[+µuV?ÞLµ«¡Ø…ºÇ3¹³ÐÉ·$ï0U®gÏÌD$]žkƒ9Ëíª÷eÎûÚ²~é6ð·BšŽÔÝämzÕIÓ)éŸ=‹“©þ27ÙbœwP)JööûùH¦oÓ´ýñ¼d°¸á/ž:3v[Ç¹~ÿêÝ‡NÄÅŸ=d0ÇÖþ9>ˆüº½äý!µpÕþ5øPäëJß}v?•Ze¬ýÈ–Þž1o/nñõ°·¬[èûvžÆ.ƒ[{`½ÃYüÐƒÿRõfël"øhíyûã¥ ï3­ßõbÒéÙ
®f^Í*Ó—¹¸éÌ8s^%Þé¢3ë÷I{<ùhœþñ|â]:r‹Üþ/¸^MggÔêÈã²+Sç}è™ÓÎýX–RJïqª¸Jãj×ŽõeÑ);g˜žl=×â¿KŸ¬.\iÅ³¤ï~Š¸îÍô›ý¾‹•nƒ«óyÙí$(È¿X³=KGk}IïÎŽDw®€º;oç©_2v]ìŽû¾ ï1¾bË·¦ÿd§­“qkÉÐ}hKÎöò¢ãèw9VrvÖMK¾N’G…çÙ³±ùžt±“l0§cm:.ÅŠ7Ÿ8Ù½Oç®7¸¼9õûÅ¸‹‰c«‰ÎTòÿ#í²)ìä¶=uû½ú9ï q;b§ÙŽÍ—qÚá¹_û!ý·°:s7êîoõ_q‡pÄnÇx‰¯‡9²Êÿb÷íºãeÅëÖ…Åa¼µÇ¡é÷ø¿µ»*[Wcd•÷}'œ*£]ûsº[5«ÔÂjÊiäÒîØ<ï<×cãrYõãzöì÷ñ¢ë^ý-ç~Þ:˜©79»ZS6¹ÿêàÈXp¾ËºîÉÂêÖóe^1ö:ßi¦×½l¥ó+½bìbXÝdíw,¹?÷:ô}ÞöÃtÒ—¹«n“ýòzò±ûsw»KÐÒƒ¥Û{»¦>0ÆÕÝÔt|Ì¼BEœßX¡
mšÜd¨!\Æºyª¡~]n£VY¢:EJ\ÍÍ¬ækÀ[ôî[Ý•­¾ŽK÷`›wç)b´ºói$wç»²H×«ëÎç2€tåRéä‹™Ï»ÄN«ùí,÷9t`ë`hµ˜ûølÒ’¾[4÷•Kt‰F KtñUQc¡3[*]‰ÎlV™%_¾Î%íô`Et×Þ¾Òõµo_­}¶˜9ãn—¡uŠQŸêÉ?SÙuK[.·:r?—ÉÒñ·.»¡cÎ®lÜíÍ“ùLµÞ²Ÿ½ûóÕç·¯¿¼üóÝ‡çŸ¾Ðb#Üè+¢/Å¼ÙìúJä¢¸Øh! ¼ºŠ·i+›×S•êfq´ +ÝŠZÏçÓf×Ò×ßÝÖb¿©iÞ¬Ëþæ^ˆÌ¸[’û0³†á%õ¬Y„-H§²%©»hoIz9ká$Q~2-¼×
R$ßHú»ÉÓ™»(K[âoþôjV+:ol^Gz™ª¯Æ]]6;€y—§?gfŠÚ“6¿Þ¿üó}#Ñ»7ï^;‘‘fb»úË ÇFâ^¾iï¹´/©˜·´rsÚLv;‘-Ló—·YáÛêüd¾çnÿÏ3ót®›ÏÊO‰Ó‚ÛD|J&¦­dAëBú}&¨FúÏß<{ö:SbÖLû×»·v¿ú2x´Òî˜F"UK#¡E½F§”»J	„îlÑgÖæ:<ËçIãÍ"y#Ñ7»w‰nÄÜåþ¨%ü!Ù0s1oP-¶ò÷Ü¿:äÊô‚É,>{è.^‰d|{irX›÷g"L6Kfû²Y.‰œÜ@R&¬©§ò’’ajÄ¶tC‘ÝNZµ,ë	¯ìîÏ5º$š]µxÙ8m ØxÆ¾™–ÊÔ.?"á’
i„%äA¨p#C¨‰Bˆ!¡d€Bah $,Šb‚#â˜Gáž„K.±N™¯FYé.ºŸÒ¸H T¤ÁÙÈÀT§ª­zRªUºžì:]Œu°‚GLoƒ‰°ÛyZ&ØqÉu\¢×¡%±}ÊÛ™…Ì2¥R‰KÑ”¥>ÑÏ¤$Í`ÕÀ/£ øŸtQ¤Z‘íÎÝ³®[<;¬ÁFv åHïMÒÜ6iF˜E[µÓ("®Ë*gOÄ(áÅÓª‹û˜¹§jé<VæŠqçÊ*ÕU9rŸ²ÕÓæñ);éÙú)«³u³¸w³XôoeÈïg”¿§†ëGSôÏiŠþæaás8ö°­ø'0)/ÃgMEÖ=ýBKÃõ’£[„{×€ßÎ¡^Ýâ–ºzJ÷õ(îäqØÊs¡Õ½ÁIMç­á,Ü­ÍÖ-ÍÆ'3[·rãébß~ öê–&èS˜‹nKmc"mi­<ªñ Ë_ÕŒ7ÌŒò’üv_	œ]¿-ØE–Y¹:ûß½utšiÁÙrÀûWaÀ©§qù¾,M\u„éXÏ'µzº;D½oNæøf7d8FX*-#ŠñPrDAFP­cËA DÈDk&ãhEC¢¨–&fp_žóÂÚ4^—€íV›¥(É²ÝÊÓàæ:Q×˜—h[;Ó™%Ý21ö½1_Ñ¶æ+a_ù·ZD˜º¬Õ•¢˜ `ÐÒ€åöÓ£ùêæ+‚ég¾rkrlãÕI'.Ž»øî¿‹ãi¼Èú[›pç²mmðüùáõûËË·_ ý·e©šÓzu.©;›N~^Ü6[åƒ/èË»7Ÿ~
[^Aï
·¨ŸÔ
xZ‹Þ’ºóÀ:›+=Nšn†ÄM†Oo>~xùŒÚUà:@½[ë®Ú[*óG(C’„1‰Š4‡XkC1¢HbŒ#Ì”1D
sc€ J¸P²„ò.?³z ûÁÆ,5¹Tú)žÜGK‘ç.<Ó;¸ÏÑèIöKð$[8E+D°®Ôô‹Õ¿Ì|9Ú¬(d»¼™»ØÊé¨ÂàÎW^Að|ªŸ:ÿ‡ª7DV4î Ö^¾$Ö ¤Ùô•(*Ý)_´Âj¾îÚ¶U	%ÙT!Â‘ß×+µ"f?h©6V¥ÕGÅñ¸Š##ìU±¨\•c«ŽE«'ö{ÈÊ(Ê“”1úXM¹ñè$ñs8IôUÏc	c	„Òw†XÂÇ¨À3»pt­§×­.Þ™Š u¯žs„8]Ùt.CÓ³šL·
*§öªéZäÔ¥/:–±èV`¢kÑ†®å	ºWxÀÙü»æÖïšñ¾W²öŽiË;æïž¼câ´{•ûä´îŸWºc^è	u³Ÿ7ñc.ám®³&Ãíššö)fJûÚé€èäFÛ-¥æñœn_Þ4/g§„§ÉÒq?|ƒO‘(ã$¾Á?[’ˆ•÷Á3üc.š_¾.‰îwr†¶9Ú9(Ÿ?SÂÑ¼˜ïx÷pD.ý¿Ovå¨á+lÌ]øÔõÕÐïî4JÇ•©¬“.õæîY.ÆN.æÆî}‘;oÝv=n±]àëtlF³Þü|D¿Cx@¯Þ¼>'‡4ðöÓÁÀýú¯CN8 ‰?>_=oƒš;Wk9ÊDMûÎ2²ä°od^^çù«01›µ˜*3G£Ù¾üM-ìç,<ìaÁ>ÖP›o3qÛ5Dë6¾ýBO’isŠ’ae´ù@œ¾Ù‚DË6DVl +, ­ˆÜ‘Ða¾µó¨bgŸjAæìÞõ$~C7„g|s*“¹i
ÎH\Â&"§&7Ñøè¾¢‰ÓÜr´ù½­¡™Òê„D^ù«§i”£p Ñ@•ªz‚oN½:(f*ìÌ¸¤DþW÷y7Ç/<‚l„Gˆ•WßÈ{m~…„ÑÆŠXkÁT¤(‹°0J±X¢1X©q¢HgÂDÀ †¥‚aŒ˜Ð–jØïVZ½våEJ¯•ÏÎ¼ÁÛ«œ•µ»’sÉš»jåvž7¯%åªå“:4ÅF§ö™æ©»Øuä7É×äâùjwy81@)…µ‡“ûˆpÎÊŠ-'È	àdÃÃ	lø6-Ùöú5•ã®·Ç°º1:x7U\™Þ½ùôP™šžÿP¯&ÈqÄÖ™JG³[S9¨Z'–æ×¹¶íVŽ2múèïW´š{eÑã”Ï:¼Z$'m¿|ý†fúÍŠb³ú(¦C;Ëð0GqG®.ßF%e Œ$ŒCªq¤iˆbÆ VÐ¾¡˜@£iÄC‰¨Š#R¤ŒæöÇ˜"½/Ló¥}²•;òüh‡L~zîFpº&Ë€Ì2jóFdEÔfÅ%øÖ8ƒï-ZáÖh…HDÜLCAÄÆaµ ŠÂ€¶Ðå&ø¿N„_Yq¤k<çÙv×ÁÑ¬ö„Ÿ¸=wÒ.æ‹©{»NÑÇÒç¸:m?ù½yCŠzŸâö^ÇM--é¬ÂïŒ%…ãpæüS7oKùnÔ…3 ¹Ãc8»Í¯ÓiÛ{“ß¤ó¯ïì|_UüÒ}gžá´nÇù7O'Gk-7br.qc×–¼ž§ÓÛ:‚¹=è£¦NT^ÛRëåÔr‘µ0“ÚÕ³ÏšÏÄ×"}?™sVÃ±=6¾YÑ¯†ö«¬KlìÜ¬:éä½YìA<b“Â‰³­OjaÏÞÑ0vì&çŒV~òõÍffœLßËW×ÝœxŠ'B&>ú¬±<”c+0ä»®ÚA#ÔâÖ-¦ê«6ßê'¦MKZdv»ÕµF¤M;®•dÓ¸®/;Ÿµ‡Ã²™¥'º»ÀkAþ5±B³“êû¶'l³“–Íº·*rlê§ÏN`Ô¦µúyI61×õÝ!Üá¦ùÌöÛ‚0[ñËèa¶{#WßÆ68KêŽšÕ<Õ•×æ[_ÑÞüïBŒ“¼î°^ÑÞÎìf0ºþIè*Zµ˜ÿ«™9\UÛ¤C§Æt¢Ïë"–äVÿš-æ³´ÕûÓœõÞþ¾:Uk&•Œ`ýþhŸ²!WZæpÒF„AuGu‹¼þV©û~‘'ã¡‡—†C™ÖžËw/ØI«ûu÷‘“ŸÇNÙ/ÌRÞ®øöÓòËólö¸Õ¼o<•Y:6y-kK7y»cêvÆ^dÇCô•ödšæ·u#vÿ†ÛÇk1;[3±çÊ~e©Ø}«[~½úa·çÀÞf/ùhWY†T u:œ¦ùu2½ªõQØf„ÃÌîöq#ûþ–'{óXW„¥¥ Í8×L…Åh(òt’¨¡³Oôk téÇ›Œ-¯/L?~§¹KBwÒ9IòàVz5Ð‘ÉjÛó®s=¿6õùw²|ëÈ’)ç]Äv?øãº.+¡¿]™#j¯ì7Hu’9¹p8çÃÙxqµ×]¡ä§ûn“³EÎÌ¼>}âþÓeEsíÝ(‡Yv=»9Æ=ïP[xÑ¿ÖÈqëB…¸¤”q¡C@9ÒGT(Œí7!Â Ž3:"adi"‰áÀH)G<®Iù±ºº-4(Bgëêÿ±dúM® ˜ýlmœ–ÆW8ì	r‘}ÍœmwúÖ²Qà3+E,£Oà1œGHö4Xé5öggŽ“éªìÈrƒ/]‘÷¿]^üñéÓ‡‹ß>}(3qdA:|™¬¢Ñ{k¿¯æÓh°ßcFÁæm3¤!é4±-´5Ý‹øh¼?Õåsêyù\®ÍIMÞE÷à*úˆéîæâ­‰Þe{À¤|ì°±/É4SMkpƒY²x«½‰±m¿ýÈÑóöäIÚšá®Ýéï÷:ÃÙ’{U|~0æK£áq132Ô:ŒÃØ0À”„RÍ¤[®y¤ˆ!eˆý*âH4ºx-2—¨ÊEÆÆBÕyhuM‹|Õ½‹{Ë.ßq;X¦!$d–Åaˆ«®`È.Ã¨-0Û]øˆÊ'Beà '*ŸÚ•É¶ðxë®òÆ.yÝàõHr1Lì#ík>©Ã¿ó9'¸3hh5ïY­ÝÚÜŒ¬½Iô•ÉOâ‰ðÕÜJç>¯»¿sùƒ¦éÄ4^iº#í_éÔLDíóƒYM@Ý}€mñû×±ø–Ô[£iíÚtbW}:µ‡±3ùäi]MÙ£ÞUNÌõÆËÛÿŠ©0©ÇéUíræ‰}u¾MÕ2iá$™&Q—žíÖíÕSÈ4Ûþ‘?XÀ‰#ÂŽ±b!8BJÆ!$ã8ÔÄÂŠ;1ŽŠ°à2BØ@¦‘0‘	cÎöÕR}S<e¬öQ“y:Ø¡+S„}v‹ fªJ>T¼·§nÃ·Ý…³¹|Ÿã%ößí»ÚåhàÅ¦‰øê,%y0K³,‘ãB<*ÛÌÖ©MßL“<±²Ô¥É³_œ[bÑØ2qêÄÊ\k‰j9¦›Äî÷E>˜-Æcg2±4Ëä¦«D§NÚ©ÌõvcÆã{+Œ…¸ƒG>ÞÊ9ÚÓ#{åå±“¹è„QOyì¬®ßÛÝIMÍ°Z–íô‹ªsªR©º›ÜZ8#¸t×±C®¤ÂWIž¥ëÜ,’,hjÚÆ~ëîH¿:“Î0OÓqÝ:Yeé?T^LdC»\ý}‰ìÜŽë½²ÛiÝ´ç“Å÷º«uo™FÃÄSŸùónÍ !Ž˜ &DCW´	ëJ 	VÈ`ÄCbwYÄ)Š5À˜òPB-6’ï»Á0ßóÅ)my×î-xrÖú‚#²ðÄú“z… 8"QûØ€üÑŽqÂÛBA_;Æ‰ÜŠ«íßt<¹±á¨*jæ“»¸Ìžõ`yÇ`qTÈX™M¶cšº¿ö\yZáÑJî…!£!L`œñ˜PÊŒÄ RÌ£HÊ%7šbÇ‘Ž©@V$T!!!C„åÞp2{Œ[ìÎî^äÜJw{ìU.*x±Ü•8Z7~:¬È,Xå24ŽæF_çª2¹Ð©Z8uÔÖ{Á"Ä€1¸ö#²,€[¡Ï„„lD’NYk…kµñ†~«{gTl¾6`ñòåðÅÿ/ŸŸ&f3ÅÈØ<*j§à`¼€Œõ$»kK­œrí^ü]çøÇTiˆÝ>¤{bœM¶#+£F
`#l·DqnPHDÊ`„ã(æ’hmÕ[¹³di¢… ŠAhß[4ÈLîâ^Õ"ËÓIðû§ÿú5(Ÿ×Ÿ/v5¼ge¦ê*ÜŠº–¥K«Î6AÌîˆ¹á1ò³­0XaT=º BÖöè*§n¯¨çvåCt;½Ng bö·ž'×	/l¶ûð/F'‰„'rùü£èÍWÞ8‚ëM?§ç’Â²†Eƒ‡Hæé2¶É—ThAß‚îJâý[º/³ä»\Ä«¢IÚ–²Z¥¤t«ÊHuÞîÙfö¥I[®ƒ§-£%C¥„F»ËAï«Ô¬ì¨1Ö‘œÆmh8rfc×!‹¢Â(ÌàJ‡Ç‚[ý(’2Ö@²LçÚ©L$Ä‘ˆJ"%Lô(Q ‰Pk»›•^ÂÍ¼ÃVä‘ˆ#ÔÚêÖ$Ž<ZÞHØƒHN”šc@rÄòÜÇ‘LÚÖ2»#¢taìTþk%´´gØ–^ÚrVÄ˜SV]ëY>-ï8›¢N¦M™çt%Ç6¥ öÕ?R:‰3õ4•.,¬Ÿ0Uü°ºUHŽ’àSŠ¥A‡a4Ä*$22.ëg‘ R…ˆ‚ØÄJC‰8Ñˆí»l|nŸ'¹ñ8h¾‹‰+N¬ÒÉ,quŒí“Z"þ5^E–†bwÓ^púýåK+ÖˆÜ>­rÉåmëùÜ	7Å”»ÉI
oßüÀÓ&ù²ól4¼OíÀ†EB³¢a—ƒsa¥(Ë¯¬8qkAËíi×Ô•R…P’ßQì¸Ay:¯„¬Âr<´‹:œ5OWÛid­=å†#ŠY„`µÜ°ûˆs‚w»þ ÁV¹aLCV£ æ4j6ëøí;tû°4Áv“˜ð¯FRºó¤‡ÊFÀîùÊü(êÎ¿ÝGB]kmdŸ}­ö—Yž¸÷Ëmóÿ'à…Fä?°¯B5Á¡R_².9ˆ:UÝÌr­~ýµ/ÇË¿þzþâÍ8Â-xO‹FÁFäïµ˜›‹ò5[½¸/ÿüð?oÞÿŽ÷Åïæzûæåë÷—¯.Þ'÷w™·üÜHc†´Ž–ŒQƒ¨PÊ =™Rü¨²ª¨¡
©hŒÆFÆØp°×à¼¯<fùï—Ñ¸™Q‹y’ßvNµqõ8‚"ï·Sæ=2ÖúÚ–>»Y©Û—³¶•™ÓêÿEaûÓ•™š¹EcWåŒÛÑ
V~dËã³€ÎàÆÌ+ íßMGfa×bo¾zÁúA–¡Êç½·=ä.]7ƒHDy¸{T¹Äm½Õ"<Â_¯à"nÿéë™?.®Ûý1è
ßtÁµ%õë·¿}þôæíåç”ŠàeýyiÔŽ×Œã.¸"_õeuÓþ¬mPykËjØ»X[Nëü”É‡ÔwjGÜMg²öC¤ö1ŒçÆ$³;%šü¬*9›ÖÞÚ¬›”À(Ä æP)cäü¼bXA€+ÀâE˜j*˜dH¬†¬Ð8±Ú#%|LÒ:-y6·2M¿feÜÊ8½~³ÏûæÃóe‚Ž§vä¾ÒpÁQÇ©‘¶¦mízõ¼ø"˜ïî}öâ¾XLËß­3
ž³´LrR\uxz8Lyj[Ÿ¥ãôêvàÛvžÂEÆ6çkUªæÏ‚"ž¨âz`Ž£p¹áy‚Vý^1Tb‰7×N„É+ÍMSoQ˜;•]¨k§åû†Ý'vz\™´[³²˜¹™¸ßÜ÷Á›¡µÝãÅ0Dà‚=Ä³ÜµeÞ9ûe1êl0—~ªV3U™¨r…ý(‡ÁËñ"Ë]2—Õ‡Ù³mæiv†‰tºžÛÆŸS3t‚Ñp&²ÌOOþüôá— [Ì\ÕB-ú®Æ^YÎf&’¹[3S¡Êì7ï*Ë¨§þï'ìUWmYaš©§q‘–û)üžÙÿõµjî²èÔRdßT#ASGvÓÖÛÐÀìÆ§ù½ÝOQVª!XèTMj¦³$h‰£ªŸ³å»¹Ÿbë…ÝúÖWª~=¸,öž};—‡GY{×¾ËOÊ³:Èˆ'ÎÌ¿ÙŠ×)-ö4òï¾}ÁÜéPnd÷Ñ’0«¶DÊ–ž–*—{“
ê$[½»N£T˜èÓò]rYeÇl´ÇC:µTYõ<X?Ã¨úô¯WÆQ.òâÑí+÷Çë·¥*ŽÈ¯ö£ßüÅi€˜ûå³\Ló…ýá•‘‰= ø5xbðò¹ÝžÚ³lùdvòËáþ¿‹ãÑ#‹	/WÅ{ÝoÃÕé_ŽúY€FÜ6¿Î(:]¿tø0ä_<Ì¯ ÞÎB’;âòT^E[ªU·AÛ#Ó½ð^sÛ< |kIqgí‡·Êì›eb–©åb¾šÛ\È*Äå«Í4r“óÞžÅ$ÝÝºK¡âIf,&Èô›ùe‹RW–9x25ÆYˆ+¡ª›A¯Å"V¼M&Iáql×íõw‹SW_*¹šÚv^>wÏ2MoÖoÆÈªÑ…ê¾Þœe¯ùÝ¹™9Ps¾Íƒb5“,[¬CrÊï–A¯AáN¿•Ñàv“»^g¾>¼^#¢íæÆö^§å‡.™Yðòò£oÛÜº¬sY˜	gˆ(†&Mì*x•pmñº:Q§uý¾²ûb!½Ïw¹ñ/îH›»í!g€¬jw°ñÐÝ.„ZqËØÎCB7¬í„:¿×FËÃÆ ‡…\;ôm¿ï`ynlŒíg}¨yîCívíº{(lŒ§ÎJ°Oõ8õuÿq.'ï$ul«qA—å™®Ì#…ZðÅ-_Iø+ŒB­;ÜX†¡b‡š S)ÆŒ pHA…F„cÎua¦"`…”Êìs!ÿ»øVDžho·Ý¯T=·Så£Uò¢tŸgtj¸»Òô"z:qG]JQSØ€oìŽ¶r—=|ýõ¤Ó±>}ãòvé}²¸s,ÆQXa­ào÷ªwë*.Ssû¢:Á}–&NX¦%p*‹[ ;º µGé|xEÊ'=øjqcjÐ-q/o©EWö3ÿbæ¥ˆ2á¤§sh3ö)‚éb"´¯Ct|šÊ=ÏÒ„§KƒñS;ðÌL¤û)7VŠöêÛbº¯Ÿ.ï‚Õ¥)ÛÄ±8¾‹j¶Ýb ÓtGOêüÁ:µ’ôK'½üõ×í^Þ9´)lác½îé\¯ËíªØ‘§n¨·~º'-W¨4¬—ä‹e±nâ÷å2yÕÖÏË‰ƒ–¬Ì"üfônv{`ŠŠ	«wÂ!Ìv›Ç£F`¦C 
JFIWÿ|X¼þÃº¿^=¿|kEUð Â”ÚÍÁÁWÈ”ÂÎ6ôÚL™î]¬Š8åµôÎ]Ýê²MÊS?ø?íå*\›™àª'^ë#îZYæ¸ÙÌäPcv-2]ïI·½#	ûî¼ëkãíÞJÊþFØ~ß•îãbz˜%Ø¯à=’G ãPpC´0¡sX†a
5ÑÜa„CœaB#É¥Ö"D,4‘Øg~Yaœ{o?¿û’ÊŠtâïu«øæLˆKIåÞ@SI[h²(D	ßôúFˆÛiõîqÜÆcÉï£G„:Bvvr:Ëa=ù6uõ¬%Lµjh8‹©Ýýóã·øl–Nž­Ùcµæßõ#Máª­#Î¾	ËÃèhë|·Í¡ËÚŸås1;IëÇÛP5ŸlÂ‡îÚm–°éÓÝ"«9á^ìÚpá×K¥î˜[}¶­Üém>ÇQ-JéÌâwâ´õþ’Üª8U¸}ðãèW&"ÉBíå8‡C™ó£QL#eâmpè¢‘"Tr¥ÂØª¿±@šÈŠY™h_ág¬¸ø;zý:xþçŒS-æºæÒþ¹Cþ|øçÜ]JX©íCáÙ7qæ•'¶_¬˜»jÂ
v¹»5ÎÒqqå§îöíÖy§Ë±™8ÿt˜ïIV˜ØºžºK¾ÄdOƒeÞÌ×áŒ0v|ÏËU¸ü]Sí½b¡’q²òæ_>‚ÍœÅÞE2:ÁÓr[b3½öü«'‰¶îÆÝèUnæ+I;ÝÜüòÔ™l¼Æ”ÎüÕaIkJb3º¯Õ8™eæ—Ò°Uoa9É$+‘-æÅ3ø+}!ÝÜºùº1¦0 ­×Ä_z¬r½dk[“ŒEgî©œUo1µ­œ4z²òbŒ
)Ë¾ZWf45y½á†9£h÷=­Ì½yÙf&›åçõ@]”Ð°ö%ì AXHûcð*ufËs5{ÉÑæãàpJÀ!í(M¯X6ŽÕý2Üº³g•Ÿ`®ÎRÓj­k:Í®’'=FùˆÄÛ[ê–ÁvËPÆ
áX¯Ü©Û\ñ€8ŽCŒ‚,‚ ”˜Ë Æ.& ‚0¼F‘¿Ù¡œ‘˜ KHalÂ}AiPüÅ§„b„l¦U".k´'!é(Fþ 5§Ý‚žú·ð`ñ5„£¹^ a¸a.OXxbns¨>ñÃboº³Íž|C{¾öÇãeí5rÅXpbVÒ˜I#Ê¨Åfc$–RšH„3®:áˆEBk£ìGöh# r™÷_px7‰à­s“x³Jý¶ô¤p~dê«N¼|ûfå{1[Ç‹—ŽlÞ_BdÞ}Àaãóo|»¾›Î	¢tÙ¼Ë†šEuî£“†´•PS.zõÊÄ®ƒÂÇï(|Ñî\9!e.B©š*SP½2‰(æÑnwö§=`É°n‹Ýó‹“•Â×/®Ç|7ˆvVûî³þPmtìE‡J_Ï*?7œæMH¶§Õ6˜ÓÔtÅ([¶|Äq×7~èð=dÞíbÔbÜÇÇÏZ_‡ºl,^Ããh» #ÉCQCnvÌ„QˆCÅ´úƒÔ*B‘±QŒÒˆ+ B¢¹‰bNAH÷U¯|Ä×~øZhq¾lô¦Ç"¾_9¶ð•Q´¯5útïÆ“Ú=öP ¶ŸEµÏ„Ž°!ÇçAØ§Ç#Ä>BìÃ…ØÔj‚øé-kvà£(±…Âp‰´8k Š$d±EY A¤1`XPˆ”’ŒcB‰Ö+«Þi(©ˆô¾
Š[K—Õ?¿=NÜÌ³3á©sâó³¼t³V†Þ‰Ü®Ð,wèZîÛPìÂí\èÀ¶­4E×ãÛÒ~×FÁëïÂqºˆ,5^Ø6_ˆÌ0ò4øÃ|:øpNMž(ÏôùãÛó³›€zÕ—à;ª/»=# ²YžÉ§û­–g
!&6Ö{ÛùÍÁaÝö¼çø| ç`¿)9¡£ð0„v#mp¸iø4£©ëîÙÆoMî>uöšnåNT×þ^¸k5ðGÄ; ñð®M×_¯ÄQ(PÌBNBc•Iãü˜4S1FÙWÀ”48Ší÷Hàˆ##Å'	#¹/µù#äòJmÞ¹Sd«äæ›‡Aèr£"!¥©Ñ]Ø1ëyxX»?
æÅèÛvN½DÑÉA¯Ãùs
ÔÃ'F½ºö÷£^—83ú5… ý–	BîÔôh‹x„FËyxçÚÛêe¿²P+¥DD
F‚@”1€:6Š"¥TTXOB
°Œf8dš(n”20ÄÐb¦Vã=(¸JNía¬ŠÝfOï`”Ï“;§—¤L“ãÃ—_Vg«Î›¸T'z¡Š”!±÷ó©0{›«¼.>ïõß_ýW G(¸Y È´pG²K­¾&Ûe`u1”ÙÚ«i|´;ï6(ê!zNoì£-Æ-raO¦¹‰Ënå{pdã2³hÅcÈgnì˜—I=\N¢]Ö*)‹˜—jJøèwaloLv1Ö.ž­,+¼s	˜Ü0‘{RŸ¹kà²ŠØÃ^	ŸðÄˆ,1ó¥	ZZÙ¦tƒÚ1S£Áöy|V­Ü§s¾Pö,v£	®}n±±‰ó`1µ¯Ì¸H=dgö?²ÁÖ²>õézø»øjOk1\K3ëíg3+[¸ úÜ…ûgçÃµ»Æód<·LÅ$ÅeÞ°bè•’/vŒÏÃ";«g‹ùÌ¥¸+o“¬´ª¿³b³ÅÂ…Þûå´m-fyeÚã¹]7»p˜å·c³^™,x"æsqkŸÔL·È®—_\¼_ŽÃêqG¶ƒ"%Œß9>èßeóõÖÝêr«»ÜjCû¸iq¡0³sŸ˜Rˆ\µ4X:¤-¦ö×§Åû•_>-Ó ¥Î¯ìü’ÚjŒûLeˆ“êíûÈÕÏÛ-¯Q
À–?6Ã€†¤"¯1ŒZTÝ{ý¹:¬?Qï¹ÜvÜËú®ss°üF9ðZa=äúªÝ´…°µê÷ÙŽÏJp Úztúiðš:Û/áõx˜CãF’ö­nFì¨¦|Â˜E.«ÖRP#DtèR¸ëXm…7b yD9UÔ²æÒj)Š¥+(»O¢û¼Ò,xYx´XZ\`—’fÞüiá{êw‹pnÌÆ¡åX•l+ÄÀÛ%ú>uR“m$:ð¹ì¹O³êE¶©vi KÎQð¦L>´¼›·ø¹2íÇnüt›¨Æ°ÏÀ–a?ä|Oý7W8»š	€‡ÌÕ¨]'àQgÃ¾/ÿÄ²Q”Ç0ê·™Žƒ±Óð0ƒ~’ÖÕØîrü4ÂT’>[ÿX‹¨öüÞÛf3Ð57\s~ð kÛ>tðû0ºyÔÿÖ–—c@3;Ò±ª3£1b±ÄÊ˜PÄ¡	#Å@‹˜*Ž‰!’˜[Z¥±}¹¡’s#±ùÞasyïúÃ¡ÝQM›9ÞÆfÂ¢Ml†Íäv‚QíN½çà|ÔÛ‡Vóq8:ó3¡s‹èžï%<·ý¿5Lí+Ö÷fdýš xœ{‘HDaB¯1êÕÅa„%ÕqaaÇP‘8ÔRQe¨Õ®T(â´é^Dµ,ø]›ñÌÌ·.AœÅÛ-ÁÈÍŠ3Í×ß‚,#«Ùv}S"WÌ4]\]¯ÌÐîÎa"¦Él±Ì¹IžW+ÀöŽî¥ùþ­ÎÚn¿Ü ;ÞÌ”µFËÖGƒŒ-æa°1.­.äø6¸Ìç>j»:þ²ë§Y¢o™wfõÁê‹ââÄî•x¼4˜{¼ãö1ã–ÁÊÿkcú¥ßùƒµ9~<×:)$;_=uYvÞ]3]Û6rQ[)7™ki`¾+ã×l}QTd!\•h˜,Æy2+3Qz³ÿÔØÎõðõ’µHŸ+ü8Šõ„i£]:ß2½ÎBˆò¨é§j9	îþ` ü%Õµs/qugÊéôÛÿ.ÄøìnÅû¿ÿÒ GüÎ¥ÚcþàÚŠÇ"R±°•ÃšÓ¸Ü=¢¼PQÊü)ëÕú~ñâíòýom!G·ÚNÎá"]ƒÊïŽ´	æÛ£I£„äº{VýåH’×v!}ùvŽ0ÈU;'	0Ô†ÖO%¶ù™Â: #âþ¾2áQoUpÈMQ‘Ed?i…ÁXb®8ã<NéÇDÆþË¡FGÐ~Ç˜…ûÒß=ÊƒòàC‘ƒTŠy­›‹75À£ïO—;ç £JtÑ·ºöXî|±l{ï[äkÎ/®2”KeŠ
Mö}wó$ª¨‹ñO1/ª}¸Í—dAâ7˜÷-+GóÔ p!·w²’‡/¼aW±H°4(Ï¡{$äw|áD…$w
¹.Ð'Ü¬¥¦¬zÇçJ=£Žw|þØÚóó!_óÕ’ØrFlC|Xú
?Ðz/ö¨ØW^Â~"MÉÆ›šoãëR×G<Ö8ö{ÝY´+wÊy!âiÍ•b\(¤©R T¬hÌ5 Î½*È ÀâƒNv#Ð°Gûò.=JdÙ£Dö(‘­nv	¿s³vg:±ÔÑV85VUU_e;ßì.åhX{tÞs‘leldGÉš¦äp™,
‹,k!“u ÆS	eÑ„²º>Ê¢3eü~	eéÕUÒÿæ®ýác(3€`ã‚É4…F Œ1’¶)Š4Ž1UÊk,”Œch%6)€ýpŸXVîZ	+Ë§®“¹¶¦h1t'S×SE…Ü“–Ù¬«¨µ`çÆ,ÚÙ¸ Ÿ+ã ´@ó›¹˜y¼uÂÛ²ïb”²š¯ïJ©ëÔÅ*Yc¾˜zì)êhÔ$oƒ1ÍEøÖ(xce R²yê†?qEº+uG½Pu'Ænnå3{ð÷åHý ²e\˜/w]NO!ªŽítŒÛSxãd#¾%NªšÆã…™ª"ìù7Çò~i¾&…”`$÷|§!!]1 "lÏŠ#¦>¬}’L“É2a÷RQ&[fÄöbF~“–fË‡k9Ç}h%ÐÀ
\Áu2ÉÌ8öt¾\¢¬ º^•Í™:»è±ÜÄuö vÇ´')gÑVSÈÉVå
ÒæêÙ;Ï—!ta@Ø"ô³ã8}·ŸÃÃÚùÙÖÊ±Öfw €½òAY•l«ß†ˆð~Ë(Í¦rY}[Ÿ5å-kJ?³¿áVqø½ZoÓr['þe“Ç]Ì†ÖµªÝ¼¼-z8Æ:7tsŒ¯ê²æÍkÙÛôtðÊ·ëä‹ßÜÓ¡ë¿Wáj·ðÍ…
jdæ¶k~X'Ëþ­³qMMÞß”¿3d¬¿³mh$!\„!c!æ*4ó8
	ÃÂÈ8Â‘¦ö£HãHpI$!
¥Ö\K¶·¶ ÏêlŸÓ)|yªÒq-’ÜTMð5a0¥]ÓŒÛ4äG»ñ¼½y©‹8ÅhðçÇ?ŸÚ”¯dÛ[NêÊ¤ü›Ý®.åÆ?®Ó${|úíÓû§ÛŸþü€Ÿî£Áû÷î‹ËwîOoO­¶0I2eÆc15é"[/³£új‚ONŸp¤¯­¢éFÜXRgV~qù*øèõcßP1’B7]æÏ(3„,Ÿ.É*·ƒxa5D¯7×sR¤Ñðæ«x]Y}x8vQÕõÎîUZS°ô*îx•ÂÝ
8ÚÊd	§°šÊSK„ºiXvˆC¼Fz|J„vÕn2ŽàCvÕnÇYo•ìpD6Ê€¶³g•Ÿì¡mýG·ZmcÂ=À•òðq×7~èð÷É-Æýï&G¨ÅpfgÜW~ #+/­¨ú~ gt€øW	ˆ‚±"DRDÌÈ#ª¸ ˜ˆˆÑHH*”ˆ"	¡B’kì©`¿+ÌD`ŸÙùÃË…¿;ž[€+ºV`¸ccv z·•§…©¸°jìWqrµ˜/¯´¿‰dìo§vÐæ°dìÑ‹õü_œKíÉ?Í®g¾ _ItádšòEœ€ª¹’sŽP´'±ÂÞÊÃÁW±4ŠZ@ér2†Å®Öî§.Õýþøð€28Ù…ºú	i5‡c(;['U±Xuj×Óa_O‹3uU¼¼OÖ=ÖÂE÷.ûcŠ{“uÍÈí¦yâi~©'^5´²Þz§xôÍçôý§2KÇ&ï´ÕÞ~º3"²ÙÑV«ÿ·ÏeP@ŽNæûÏ“«‹*ü9‚
í6Á…ÛîÝCéç¾ Ò¶‘ûdÍòÃzé*
ï.ù•bEfåÓ¡cLÃˆi”BÀj÷,$¡dJ#rYøÀÒÂEÎC1siÿã±„‘âáG„>B‡ÛÍñnóÝMDèpX»ŸBÓ#!tÓTÜk„îp:ŠÐ‡vÕ¡;uùs!tGDèƒÐ|×RaqÏ~µÚ­#ÝA‡&È ¥9W©˜Å@edŒ±bd„l„€RšP£bˆ4¤Â(ÙëºõˆÐ-Ú•^¢ˆWë7¹bt7B Ã-„F¤ŠÐ€•,6šk÷ÓC@è^.Æ;ºi*Ghˆ;ç2h‹ÐN‡CúÐ®z t§..„îñèÝ¡gEŠÃ¡«ìÐ¥—+…  DddWªƒMÆ4b0âD%¦1	97D„ˆ3óD<1a„0ÆØå@J0(‘Fû*;¼Ô7g—EÇ‰ÉEñ”ÝaY'®vƒ\ASÅA­v´”;P–Ás¿¿ÿóÝk;ý_¯^Yç7E¹	_Íà¤÷Ä3“ÎÆfdGs-rwÓs1¿^\][,\wï1£!ã.ÈgÐö#ºN%´¤!ÛÀh‚	y5L›bÛlŽ
ªnÉ!VwUT~ùøiùrøâÖ?/Ÿû_~ÿíÕÛUg±nVè¢uèê€êóý§Ã.Äês†Í·®„qÖ&(„–Õ® ìvh!¥b!­® $ÆÐ8„š QÄ¸41wuö˜ vbQÄ9 Sjeˆ!¶Ï—§ŒÿøÎ‹¸Íe¼D7ï$³ôªÄž¶ž<ÿðñ—MO—@â¹1Õdµ/ƒíZ?î­±»;O¦.3®[%áPFqf¾Ÿ"îXÜ
"sq±¶Á™¯³ŽqßÌR;^;²§ƒ¢"Ÿûúó4ñ”Þ]ÿH¦=^{º¾ÿ¼¼@'=/íFªúÔìõ§AÒ€÷€|w¸$Äp÷‰pF›IêíQÙ¬ÀÌ‡~Ë‹Í:r»¼ƒ§ŒŸDçåõI¡¿¹ âlkûæòå’àðc±ˆT^O¿%ótÚ-[Û!>6[tè±ˆœVÚõXœ×»cî>röµõÄÍF.žÚ´ox1MYzŽ‹L&Ó‹±.4{DÎÝŽ¯é‹¡v j~;ËÝ@ë´tzìˆêÜ€×DO~ûæÅË/öu¨ÓdvÐÃúYn_W¡7æµ™²õpv2uÓš©êÃ„û±‘¦Å"Ñ-öÅŠìÉçÏo^}õ“<ÏÇúÉïï?ùãùåP®Y¶žþË~=ô(=¾0rZ‘FQÀ)Œ­HCb$# ªIWP‡ÄV)µ.+°¶â¢ ÀÊóÀ0CÂï«ü(Ò<‘†“m‘ÀÝNMV[`á¦¶‡Ã¼ê"ŒXÈq³®·…ØÅ>ÿI…šžIºŽ.Ô@Ä¼PÃÈ‰„š'¿<aD&ù/Fº¹3âz‰¤õ
£F´ã"÷`9¬ÃªäÐŸ›´ã]]éWE3ßr¼3ƒG/†>tçüVÈÎ|1B¨`Èp¨blb BÉ…Àû7Ä"Œæ2¶8Dc%CÉ¨Þ{õúq…óÕ
Ä_“¼±·*2?•©*\éSZ¸tfb6'ªL?±È–…Ž+ÃñÑPÛbÌ “l‰1ƒz1æ¾ˆÐ¶D!gd3§p÷Á¼šÔ`Â[\ò–{û¡XJz%´¿G&)"¥‰bŽ)S-žÂ\’§éøÉÅ"›_Ø_.V¢ÆXÔ^…~½Z]öZê:\Xq¢Gv]'¸‡pTvtÃFå˜BßN«SÝ´5^ë:2ûÞåûç#[ÈÁ¶vÛŽÛ]0B`—÷›oõT^Ê.§Ò?V9™‡]ÄîåshþÊH(Æ•B*$†ÅŠðXƒØH«âÓ0X1ªdlß÷8´$‘ýŒj0cŠ<Âò‚å¨­–ï`yëâÂÁ2ÜHôè`9äÍUéwÂò}ÖöûóýPóí‹
»ß]œ˜¬òo 3#Ð|ÛÉ#Foa´KrÜ_o^ŸuÃgA”6"2J#WÁ^P¦€&\ºŒà”@¬BaŒ$ä‘Eg¡¢0ˆ$F!„ûjÝïÃ»ÏeÜûf¡_¦)ëd×«,Ø«
¾«´–EúnÛûÿ¬Mò¥(á´þz÷öiðöÕóO}çRd¦Âý4øüñË©¸B™I:?möævhÎ`U%›†!ç`™ÈwÛf¦[6{áSµÙ[].lŽt*ÞWpÈú(ØÙçÙ6È#@w¤vãhBçMm{mõç¶íàRÎØð8h¥¤vðL¨Øøÿzùñ>|jïxPOd¾ÏD›œØ+¡ÍEü!÷ê´Æð½Ú0.…‰}‘šß–¡ÔòØ;|Õv:³gYvØ´|ÈêOLébIè)¨@
ê“„°aã8"YlÂ,TBñ˜XÉÄX(²‚‹
±–À0®¤¦Î»ûQPùyvGP!{ü%A2°)¨`×HUPÁ!Ç½•Î&‡GQeSTéî'~BQ¥…E¡·¨òPüºiï}vK1'ðYXK5}Îá«ÐÉcà0É§ñæÿ èˆïÍN¨oûÇ€ÜãžÝV£Ô Äœ!´ðÚ$á1#BDL‡ÚJ@R„
E‘Ž…±‰YˆY,ŒT\kîR›âNðÂÌ¿š±¹^½ôÜã¼ÏµÊÝVV…ß–9xõâ]ðd%tTþ²–@î¨¶µ‰ ê²˜n\p@Ê7®7m.7–ÛíÇE~ÀÅñEÀ£ž"†[€£k‡êŒý¥†eìF¥#l!ç(ÖƒpŽÝ³mßÁíWÇÀn_«ôÊ2c!˜!F"´=m æ00Š‘‘š!êR„ÑÈj7	Æþƒ~ÞVË,ï±7ŽþhÓáñ±Ê{Žþ f>þ§;ü“g>ü«æ®ÿ)YÁÁ‰üýjèôÜbñ(†Ê`€"	ÃHQ	ð)!q,Bi£¬^`ÿU¨±À`P	Ã¼Î¹jî‰“ÕÖ°6­}ì¯ÞÙjÐÞþzñh*ÂCnª"‘UžƒvÐëÍþ¨ŽŒHBÖ‘ZùRuÆ¤NŽÎ`a—Ÿs9]ª
–»^U[“{þsom=Š½×ë{¿mËÎ˜7ÖbÖšáŽWXãFõ¦Ím®ÅQ]¸÷µî)P1c”rAN’HrçÜÅYe…ÂF&Å±¨8Â1”D+û…‚ûƒ¬¥ DmµS+Øo¶¥Œ·¤V)cöHjOy ôÖPO-WMÜí^ýo,°Ú´$§RØ·%‚úQ4ßb·ê»Ø!Ô3<4ÑÀ=ÜˆXÁÒhÆ1°‚€bÃ¢ÐŠpH…
…Ž0P4¢8Ò1âœAá$†°ƒdàœˆ–ØÞG,¨òß±ß¸akc0tëE¸š ÍU¤o¶þíxÄÚcXƒyOÇh¿G‡Z×èÏgK»hDºxê¸™øÒ™ë§±$On³ÿýÚc3±vI1ŠhÈ6öÎBB$cÎÒŒ‚‘àwÁºœ®Šýº‹öøîöòÿ}¼zñê€ûÅ¢=7‹®íÁƒ¹YtÆÙv`‚C|+Ý'#Õ›EÑU&ŒF0ñ[íMŽ€&’™*Ö‹pt8ñ­þ|xâÝESï%y¢ÜV“â¬oIl7«ÐÒ±à>,îw·PjœX²/ŸÌ55ËÆÝfí_çpE=-’¦Zª¡l)¤ àFˆ0$1Œcl5+¤ÈDŠ É#J„Œ‘C!â.†UºÒ.9F ýóÕ‹—â¨oâç€QÒF	Û&PŸ%ªbåí}3Ý>{DÑcèdQß¿Çw;·þ|êžêžjVðÄ€P„œ?Ç€QËHk«b…\a)€Ñ”IŠ%‰b$ÒÎo'
£a„"Sn¨àXZ|P´"ØG¼´‡J!(bˆÛÝÒ=6ÉµNW€Bmf+€4ÚtÍgQ«üÂÕ]õès¸p_˜rîqèõ=sÓßÐ¤º(]~xýÞž_ ý·Ke¶úÉƒ
Øƒ(ç0×È5Š)DÊ"Šˆˆ‡ÐZ½	W§š‚Ð @‰Ãˆ‡†*VLÒ% àSZ\ó„„o¦™E€l¨Ô^¥Ø)ZE_TaÝsÒŸU~*Ý¢}®^î‡9ìþj4³«sYd4WVaA†Jˆ´¶úŒ„šw"í®´)ŽÓP3S£¥¡fqMaÐçƒ=-®ææð£JCûÒ^=œ€´ðn,òÞk#‚·ªÄºQäQÒ*ÑêzÓ=BÓQ^¤/4ùE8:0ùV>Xšý¯;•i[ƒWIýñ¿‰FìßÍLf·@’›¡ÓH¢#°Â¾: V‡ˆ )¤
È˜s¢1eD(ŽãP…„ XF†bÉµè€*ì3ˆ(e#?ÇíIkrÄÑ–G›Uu ØPu0ií„Pì¶G89
œôŽ'+VáèxR4ûJ•ÃO~¸j™JÞ¹Q/ª¦7ãw3Ê)#:B rÀPx•äö$G($ÝÐ"æXê‰.f1Â˜sÍ@$IL¨‚±:„0Ž­Â ÓTDŠÉØ¸˜Ø =hñÉ|ÏwbëÀ>íÂ‡8]™©/È˜N÷ÃÄs7?¯Rå"ŠD»VVüÅ\{„¸™'EaÇkgùZRdOömNÔØ%[”iúµ3úüþÍ_®"¤=|¯\êÇUEÐT.eaešEnô Oƒ?>½{ë™-ÝÛ’åŸ]Ìª¡SË¥|	\:,K}Z*û+NÇâx„è¾ºN’-â€G<ªÀGŒ7k5åØ†Åþîß™£b§·¥ß?¼ýÕ¯ýáúõpxú<ÍfF%qbt(	7HF†€ô¦öÓqp	 hW¸*GWw’w:gvö²Œ);«ÅŽ½TFK™ïF]ÌìÛî6ßpv›_§Óšg±ãwÇÉ0ËoÇfø=×Ð^ÍÅìú[ò¯z¬±mäuÑ6~DO„LjçXM#Ån^'W×cû]ß’ÉÐŸ†>jclO‰':™ÿí?/L®.Ö°¶ï	–Q@Õ¯×g˜ÛMÄZºãø{#Y¹8ßÝR+RBw÷¿÷±¡U5²î*Õ¦iXUZÿÇ°ø¤Õ,íežÝöîr÷¶íuI¿ú¡ÏÐï4‚fÓ«~ã/ö|ÛŽê‹í¥Ë3\›ñ¬a>“Ö”{vèe2qèÛDõOñMBI#éØ¢ÌPe­:÷´Ú´§5ã´Ó´Æ'hÛí O{½hO›è´y{ÚŠö´Ók1ëB›_|lO>O;Ðv˜âì[{ÚÅ×–´‹ZQfãDß¶£tòDvmLó›éT¡®¨eµ”ÉŽã¡‰áÂ
Ù×ÆUh‹?G*ëÑÙ·t<MòìëÝÓ¾~ýÓÎŽ·¸¿»SÂ¡“e¾¶;0J–}´«ðf´KD©|»É*ûE§m’†úØffÜÑoÓ•,‹{1P±î Ž,%†ÇFGŒ,"†5bÚ(ì,Ï!ˆT¤0˜*EBcMA¬xL™só4*Þcf¸tOø¯êŒÏ¿¿ÿlµ~Oëí
Y•-°”ÉÕÔ'K	ŒUó…Õ…oísZA™à§org*˜ÄnÄù*ÁŠpí­2ÌýïS«Pk3³ú™3[ltæšÉ‚‰H¦ƒØ—
ÅçN¹y8C†ËŒLêÚv[$øg*]•NœÝa1+
+ÎÒ,KäØ²Å•• Š¬.¶•iðÏE–B¦ûçÔŽÈvóyÝwîc³4¶^O¯ÆIv¸ópa·ÏÓJ‹âñ½þ.Qó4Kã<øG:×~FÄ8Kƒkáiz;(zËºž&JŒ­†j‡¤Œ·Í©3ï—­eî	ÅÒšb7ÌÜNåÄLR;‰vPx¿·û®©l…3Û’]Ûª;Î™Ý­¾XÇÃÍµ™úâ?%éÔ,WßêŒÊd™›sç=ØiO§§¾?(öÏÔäõw|û&:äÑn×ÛÐÝl…^`â4æàF#Ðxà7\¾ÝCÔ­÷ÛÂ4ã—¨ø¹b°9^©Ïç•äEÎ´xÂúÛ»'äP3	yç*Ü~$»Ôÿ6‡rM“u~°½›vyMŠî<‚hƒáåáIeZTíhN?ãëz”/Ö0™Æiëb LMÄí*‡´ª4¶ŒÌl[l›6Ð_)õ%kQÉ¬ˆùlÚv¨Sµ˜g&»iÑr–kõë¯ÝŸ¼üë¯ç/Þ|#Ütí´“iu`óÏü×__pÅ‹º—}Ws·õš¦àš'¼SÚŸRÜÜ+Ö&MöÅ³‡~=Ábú¯dVOÒ†`h¬!š/¦C'xªéû+9­°•­Hgû®j.Çé›œLŽ%ÔF`LMÌ&2%"@CqÁŒ‚JL]Úª%’š…BpJ“PZ¢<
õBýÏ.Ôoç—Ýíê.¡žE–žl	õA
6„zÂHÔXWo·ÛÞ!è^‹õý\…N&Öƒ®¾§'ë÷8èK¬oëûYÇò(èï—É»åbé\o-ÊŸ$Ë–´ØvTR~[?°ŠŒÜ£"÷ÀkÅÿÎÜU-àf§´â_ë÷ÀúQGøa:ÂÐL»ª	téf‚ G€YÂF7=1¦5¡ÄXU $3IDb‚%VmÀŒ2Â¥R†‘ @£ÂìÿgïÍ¶Û8²tá{>Vÿ-ý ˜õZg¶KU²Km¹ê¸úF'F&ˆD!QôÓŸ™‰‘21rI"˜3rïoÏ>:ÍÖ%N Ü˜X”h®xäðqÞý<v+öË{ã¤¯cÖëe· K_µªù^´Þš¾ñ]¦Ÿ¼Iþˆ°”êƒS@žú^"ÌøJä‰‰`jÉ®P
wšBOF$Sz†~{viÚ¤!üüéý¯ß2È\µù½½Ò™hœÕg²šU€°Ö»½yØMx³æð{x¥/¢è¿_u7²¢ôQfó¬FuŽ±íÌt¾ßßóÅCJ;r£’t6Ô¥m2T¹ú…¥îÄ€f8 ÛÃ²vC›¦˜Ýâ“ k‡V´!>ãq¯äXõQÉˆàgÅ4Š%¼Æ:R¯½wA™à£g‘b3óÊ’à±fm’ÔO;?ÿkë-ì±lUûÜ”Z½ª-Àì#ä0©Ž†w£«¤–è‡àK}´jMû\Ü»P]£P¡”ª–Bñ“ÜÊ’N£x`}Zÿì“6ªõ“ÒÚOŽä0FÒÆ”)á‰ Wº®4P‰Z){7›uqÆ‹‹…]ê°hòÑ‹VáÏvÒßI½Éü¸g†­‰ïkÁçÜ0˜äN‘4Aùì»å•*­bip#>tûã¯/Ò.Š‘ÿOÈïmZlPøá§™zI÷ã`ýyê3™)pºÍÃ¿H^,LX,9)¨Úy~.pÄZ!90×KÀocÛØõÒg£<V`AÀTçx¬ n˜+y¬ ”ÓåæRb,ÈBs)¢Û³&­|—ÛÅKÙ®^Çømv8ÞÛÀá~w®[>¨Éþ1šÀþ¾õZ7ö­_õd6ûp¯¡¤Æ¯›µažÝÙpyö—òã}þ¶u)ûÆX­8#¼;§ÃŒVKë³:ÁH:XRn$3ZD#ö&©ÒÁ ÌÍ¥µ#8"p@cq ¦È¼é›z¬ŸYÝ™Õ‰Õ	Œ$EHÍ%q‚£xšˆi‰Õ1ŽY´d`…Š´Zó¬Na,q[ÆŠ—¹]¾•¥§:^79€Ù	ìÍë´ÜÁ’±âÑlæAëhiƒ	ê1»õÛÝ_ËJn·m-gw|wÁºvÈ¼¬Þ„Û1Lq*R©ÖZ¾u@9‚%˜c´‚D¬Õaƒ¹AXl¡ŽH¾.˜xâóìžÑyÜ)ð8±Äã—x5SðMJv;Ïã4¥šçqšŠäÐœÇÁ-o¯b›ŠÅÍYóKþÛ·í7ÿª~*[ýô©ý±{ÿþã`-hböŸ‹Ã.~zÿémñïß(›ÿ×úáYèN¾åE˜œ/ •é	ïÏBiãÌ»+Ÿü&Î¶–>7¿Ý0ÏÁèª¥¬` [—r0þ	ô2$‚ÖNM?ªbÐ‘‚uNêÀM`F„µŠ9ì2FO¤á
ÁôD{Â¸ˆ‚HaÖüu²»V¢<«˜:u^çƒŸÃ(ñ›ÎëÁ Ul½Y.'Ó*¯˜aPg†‹‚™d`Ë'Åá8'N†Ï=f.·.™]9üæ×”9ž1ÓOïþv<§R!*\W…¨‰-%ëš°yŽ£0#x{íªMWþ¬F<°‘Ö¸"ñ¦tmâýi[©˜žÔCÑùGÒJäSqJ|§"RDB|@)û¸‘TD ÷*¥ò#˜I*™æL‚tÔÞ(º.l3BNèñÁ	=þ†ýD¸PuhKµ5Ñ ŽàyáQ.SYÜÝiýYvp=š@Dí®G»ÿ„Ž£N»?Ï£kÕŽÜ?–vÌ"çÊ!,™áEÒog)¥ÊJƒ¢„Eå$QÄj„±1!(é÷FcÆ±= µç»ÃúzÄžÕó-¨þÔè¼Fu•HØ9ÁK>X+ªða‚ãM%÷ïûY—ôé’¸;Ä‹¯¿ GQ)ÝŸæ±5KéIM×pHf2jçƒ.i›ÑõnuïH‡ˆé®†Y¢H„õ˜‰`€8UË0–)FOnCV
¸8V1nÄXM¤_ë.×úñ×¿}WšBi°Ã®ZÒzýëß¹~×~3Pì}=Û(¿Ÿ|“çÝ|„«ŒÌzÙe2vÀhÆQz0i»H{±h`ù>Ïáv‹(Íî¨¾²¼rÑ.ò|÷M/OA“¼ …šñ(»)~ÑÊ3˜)ƒ†“XDXfýÖ°xÛò­sÙOD!ý|,E†^T[¦2M(^f…ý÷8À›D*¦´ãe æÿx_’†0Sçâ¢à›“çžVXHa¶¹1¿Ã4æÆ9ÌnRŒÑ—n6žv€ÞŠ`K›š8drò,BUS–Û|‡7ÎCõ8†¦ŒÇ¼2ý‹¿ÿòèóËÖ[øáuÁ˜»£¼Ìd[”„‚7i”¹¬7YääŠÏY².G×íW ?Ü^”s—	}Ëý—éÞv¯»^2IÅlÜ÷Åã-Ò¯‡þË×¿¶?}|ÿ9ë.VµÉØé½„ì˜¬V¯I´\ÞCp¡ç%."Ý^}jF*Úå[ßÞ)§Ê7"I­Ýî*N5¤fkÙÄ€ÖÑâmcÖ©Øhì\	ÇV¾rpz¨F‰¿Yh|€ÊÅ Åº!5¢'—Â½“[aå“ãÀcÅX7Î–”)éqÍãN¤n{;oÇ9™êÑ×nøìÃû7ïÞüãÓgüy[þ‘KøSó‚\–Ô¼nëÌþÜ¨fëš•(O§ÂäzØVWâß¸a/¨w,JÎ‚N9ö)€ÆppÞ(­ž/µ•(2Š$|À'„D†“²àÜÎÀíÏ
ÜªÜ0G‹fQÂ‰^nœ¶3pkœ7ãÝpãb¡ Ý¶è% Ýj¦"XÀp‡Ìñp`n‹ËNm0Wgœ`®ö˜ ºº7æP[óó8¯^žŽy¸WsÂeÜW·Û ¬›áåáêô§Óí+l¯Ö†igÓÈi"]‰ÒkEÖšsíö’	K·EMˆÕ°"B>êu)‘…“õ½SºDÎ(ÙAUNiZÀoÖw’JíA¤.òÀš±¥8¦ùB	?´5aÂòŸ•F{ ¬(A;#ò”#\ädRfiŒÔ™a´1ÍŽs}Ù® NB6n°ª6ÙÄ‘fçxåÃ2£‡PV¨à°ŽH¤47Â…À=N®i Ü"¥8åÜ£°¥Rù„eHK½ë#UÏìhOvt/ÏvDÔ2;’‹ì¨‰¼‚Eáæ	8C:¤Xü3¤ÓÐœ(gJrÿÎ’ê ÝX’§ŽjÊ1Ÿ 4õQ((qNq£Q Œ‚xd9Ã\!ç1ÔFêˆ&Ö!¿†%}¬”«-b·ß…&zn`‰eœ5èOEƒ~Ì\|···ÇañðÏj¯_J­ÀíÓye7§lš¶f+Ÿ/ü¸Êwô[‘8w+ë²v¿{G}
Ö¸^üÜb¶ðœ•´së 5%¬úƒ¯´„Ÿ¢¢:©]7ïã7ŒkT	ùm”j4;¶Ù¿›Õµã7p¨oòßCk+ë¤Nåö¾úË—‰oVE—ÚÅqÁŸ\¬ëQ6Ø+ÿíÓ@°ÞÅHo¥”Ê€-¢ÔÍ8!	$c o#Š¸bQ8«		)).Dê æsF1góM qÅP¹ÅHJ5YB1TËyÕ9'š×6Ùßçêß€¢âôpŒÚQSq\³]0ßÇ|–÷ú€¦¦åvŠlNÔô=yêš°w±–ï`öÞÕ¯ðà hOøÎÀ(Î´Ô<êh9ÁcBcÄÑ!gO‘ñÑ+¤	V0¦­‹DDKA¼UÔj¶.úý]r˜êSU6€ JêWÚa‹Ãì˜j˜`º‹×ß·|æÆi%ëJOÉÏ·ÀÎ—+W­WJ0®Å²\*²˜î‘i$·'&¹wÞgåÄ^LílŸ=‚£°öFñúS¬ÐŸoú‘,§©ÙxP%»®ig¨XíÑŒ{Û¿wæFˆ3c0 ‡‚’B;Ry$X ‰’8í<Ãzî0qJƒ0¬¬åÂ*,0ñgnt\nt/Žo­p	Üˆ‹ÜH.s£fJòÜè,d6çG¤qFýçG‡8¿I~ôp÷©3¦n?I‰Ëì¨Ÿ¥¶³£i•MÕ!#$0Î¿ôÁ–ÞPŸÓ…:è;ª¿F[©Ï¯(uÑ)fEÜ§5Eˆ0#,•&xŒu$ 4ŒŠAFÇ1Ì ­až’gëÜ‡ßU%ŽÝ]«Ü|ÚWEsÜŒwüÕ|1­gýôK›Rô¼fN™	é*ôªÁ”êßVfSFæ¤½-eò&®Ô¿­[s—R)²ÖùÚ½I„~Æ¹±Ý^wt÷¢5
@cÊ_ÊäÂ0RmòYÒÆeˆGÙÅhh|¡&7½¤ƒf`¦hN)ŒGÃ±eIµ~€¥¾(Æ­Ò_œ´ž…ÎeçEë¯?¿{ÿ¼Ó*wY–!~Ñºîg·ý4¤_q–/ZÝüÂ†~€ãìÂJÒÖ€·úIÝýÒ-7S«“7»ÌÃ6²ì²Šô6ƒ—“¿¶´ã”Ã=›cÆS%8_âdÀ”žr!K2btÞ'ñíånªUµq»Á«Ô)_Ó:ì¹Ênó ìÙ¤Å	ÖFb7½Ó‘ìíÎF4‘Mùw¹ÒMegB¹rÆ›/ýg¿}úÚ)g~5ÿËFÎ¶Ic»qÔWƒìæÕÎCgùe÷YýE¦£Ø#¤ùÚéqƒ°IÃœÚUïsÞ.DŠ»|nN‘ÏR¼þúP¸>\¨ï#4zÁ0Zå5A*
©¹!VÁRbø5˜(Œ²ˆZsVEe¼ÌOTÄkGüÌhÏŒ¶)£ˆqø¿˜c´ð“”“Õ¾ßiBÉh›¼K'Îi÷„w;½Ù,¼ëGd³Íéä™Ï>>»{ö:ÕÁ»éU5SŠr;36
gDôÔpOfÄh?N4pKIâÞc&µ!¹@{]Ç>ßÏ<}
%já›Ô­¸Q>$÷™-õ~ýÛ$h>ÛiFÉ¨»4¾÷‰q.LsQMSøF-—¹¹šÁ|ÒKž?ÃÙp…{Óuw”wZo¦#Lš¦%Í&Nq~àäïTõ.¼›l(j].Mõ½¦ÒêL¯pÈ*Ü¼ºýÁxtáÃ‘ëñ œ&ƒí\ö³›Pè'Õ‰ÚÙ—ÄúÃíË4záeqY7Õ7¿§¦xu>m"5]ŽÓ%šÊÅÊ«ƒ »Ý>y]*Dñ·bÜ1ji›û24†)o¬÷Ý–	d%IZ7VmC[Ý1×¤ÛQœ¢ï¡Óqí“†kgHÊ*ƒ'4iI­DX|r'ÑÜyŽ­ <Ì
Y/•‡‚DëpÏèÏÍRn‡%DøêÒ=D*$É2bZ¢EDêd©Z"Íß€òdxPã”ÚGàAuŒk;ò :´~n•GJ´oJ 9•‰ÁRDàÖIiÈßÒ:¬	ÅQ)Í7÷ÈbÎ%È«Mà‘lµ´¶Ê$+B"÷‹Œ«"ï5S·“iYÓÞ'%­ŸRÝE'”‹ªðjZŒŸ[ârŒÈŒéä­[àhWE0,ýb¸®°‚µd)!¦‚²…|†˜Ó•æs8œE–¦®*R²Æ®“õ264b%ëŽ¼©¡Î°î”ò`"ÛÆÓ9^f…ýsýìÌg¼CŒaDVV“‘òXRBŒæÂFI…ÇT*€	c™Ž†¡È|´,„1;ó™Så3÷2	¬I€Ï¥Vðz(>sLêsšæŽËi)¤|+œæ!³Çb977;5lšýH4d6ÂB£QÂ[Jž «R+#ÇŠ(Á‰X5Šú¨Ç&2*$e\­c6o¿ûnN§5Ïh*•Ú¦€w8ˆyÛÖ±:­¿t/¯zðg”_TÌ¨Ør"[ËµpðÀ†nSÆ'àáë¨XhvëK×ÀàWaØ™>_h¿.’ÃÄ0\¥F_ÂDåWön¹žÉËÐy3Õ³ÅaH1åÐ.végwÁ]§Ï†ÁŒByþuIÛw\}Zòî¿L§Y°­&¬II…'¡IË	Ý•X’€_JiY§Œ‰¦‹SCUvsÓ.¯n[<Žìó©0â¶¾ïé³~‚/?L Ì1ýîí|—ŽškÏnn¶Ô•Teýh5E‚ú£–„wD"Õ‡à>G‹O¹›Âê•Áa¢³iÖFep.ûœ/œÏ¶vÏ~|ûö3ã`û[¼ŠÝCcVg!êÚÜÔHõ“w/]Íáò‘wß}WgÌYÃgoûíõ›÷Ÿqg[R Õ:ºA·BúÛoð|ØÑ4³GG.å±‹0 B‰È™åœã …ð§%|Â4ãLëfN™ˆ‘ÔjË|+½SD„3vyØE,c¤W«o5Gb	»(€f»(!YG“eþòôB/âTÐËv1sôòM¤´Y€1[À4ƒ1uí”3œÒ¸ÃØ/7Í"Ð9n!—›&¹€0PÝ>s¸£y9T´G_ G{Ïc¤oÐˆ=]ù]†›Ç*Ä‹
ÝhòÖ
˜	J,¤\¸(Ó‚jÁ\4šaˆ’Î3Ia"DÊ™À)O0
ÜÆèÖ)|^·~ùám3L[@Ëú³äxUÆÃ˜)F™Î/¿¶\À˜hòÑ–K¿&›Á__¸ŒÊð@(óºÉ|y&þTyëýÇ/¢¬oÿñKQ·!Í\fh¸É† ²Á¸g†­hOúPÔ Xˆ?ni‚KØÖØ‘(ïûqhÊpXÂ§2ú&Y]Ÿ•H"!ˆÐóé„ÖIE£VB"¦1[*K@˜ÉˆÄjk¥œ´¦vq7ÛÓ[Ù }[)Vnvo”‚‚Â ´Íak‰Åúë ¡¦OŒiüƒ\½“›†¤©_ðS~UjU-7³™áÝ`”¢6ˆXìó÷ßÿüéÓ‡Ïþ«ƒw²¼Ty¯Æj³Ë2Æ·Çýî(¯1ðbû&l×àÃÕ@™Í³”ãuý£\¾2~Ý~e–FËXÖ¹w³ŒÓï“©« ÞÝ~§¢Ú{d„òÐK0²è¼‘[A©­Œ4L—Ì‰DÔqFˆÆ!,(#V8–`ÔG£$A42ˆfHÅ­—Œ¨ „^ƒ~Í²"´z1[7Ý~÷’t·fèó2„u4ñO(X:’¬ÔôS¸í†A/ébfÏf6N5náhPêHR—‹"ão/iBòX- ¢fÑ¬[RÓ¤xÝäè=}Hå§ÖûÑT!t‘õ{w÷6·´·„J’¦ ÀÐwÀI`õ¾ˆ‘í^aKM³?2™Í>÷ãH¢9QpIæÓR¤Âz%$¡ª0GÍAE9žwÆVm·/-¿-íâÚ·ICuM&ô›ñ~˜mz~·{#vA&ÛûËÏh30XIµê\Ò¬™`Ð°,$2ü.|næY4¸]eýZÜkg«˜c1õ3c»‡¤­'yðàÓswh«–4ÝœØÌ´‹ë?¾ò0Z?ë0˜Þß´9scMû¶Û‡‡»±]ž/ÂâÜÕ‚zoÙúeÞÿžÙöÍõpß.Ÿìâ ËÈcžKî…=²4Ê®I@HGèÉ”K
ÎŒØ„ˆQâY°„kÇ%³(8a£PÉŸ‘€mPÔ*h‹
µ…Z öº·äôE WUæÀÊSàUI/[)KÄzœcýgÞz]R©Í˜Ž½f´‚Óÿd®Cá$Ù¹øGžLÆx‘Pp{x¶Ã²^BeI
ŒänXtŸ>¸˜¨¿hÁH)”PÊ zÃã(ØÆ$Œlê·™—e%J£OÉžîZ_Ì°¨ 0ºŒ-”‰8..þ•[ùU6îù	‹žÛwlÝÁ×	¸Tž“åžãè6}–²]Þ={Ýëê6ÙS~•Ô/åqN¬SÕô!8œ?·é>[Íæ«Ö²x„éËõ™^žµ’§iÚédÙé,Ò%¸a“#íýœªJ˜…¥n²³¹3ëg£VEÏüÔ¤/`»°Ý^e7æ.YÖŸ{u%ÄìOGn_†~H ÎWûÿ¯‹ùkT Æ{³U}ªŠé“êì^¤Õ]ÀÝa‘Ç7ÑõÇ…n²½—B±Ùd'îUqÖjµ~JIåbÂPB	EhÁ–R.ôVOØÉ‰'bÔ.ÉPƒä(¥†ªxë~üáÝ‡ÇIG¶+*¼¿ñ½ýb©Bª1&,Ö±ÙÂ¶’QœŠæf"Í—±ÝíÇ¬¶ím¡Ó@X¸Ç†aoC»pcÜªT$+šÞ°MF¼¤pÃ›2É¤…<{õÏïùôþï?o´òŽØ¸‘Fzk†ƒ®¶E£ä¨ðêÕ§B÷½½õ­ßÚæ™W¯Þoà·íïúæC–îÿÖ¦ß‡ýl{«¯‰m×îx ¯^½1yHÖlþ¶ÌïU»õà®fÓ áÖlúÑŒ®j6ýd¯fSxe¶?þÃàÉ«W²þåÖÆïÿž¶ÕÛ~Xÿþéýo[[ý¾ŽÒæ‡yø?ÙÐç[;	ÖLû®òÑ°[ãî\Û>)°æ”Z.ß¬=I•àPAþ•jÍI“’MlitÃFaK“$Çl,¼¥ÉxàÍÆÉº1L¾¿44¶McW¤Rt@‚žº’Ð†Y›–žù eôÔ“È5Œ‘ƒÆNa§=²Ô	"%¢Ö3‹¥2”1k³¿ŽÃîµI		ÓSÆéa•ùp8î¥['ýü2ž„“-tØ›dSè?6•>Ãa6<¾Yr²YŒ€Ò6ù‘i‘Â­Ä¼|Ä˜À«}à1åz)cÁ„+½ç½Õ‘lv‘ÚÕhÓ†¸ôÙO Lq§¹¥¶òyRË_f?VàõÍ§wÅ¿óýŠ¯§?ýFð¶B9ÖÇ±…ùZï²”Z²ø¤ÊX
±©SõóÛ·©÷
ãÎÐICT<w7–Î~_h¬$;Aãâ"¬BÇ[©Æ*|¼]³—B×ˆÕ†cJOá€B0Ù ¼£Òª€(’DÃ):IpN(N‰Éã!H·†®½÷.Í°›²å˜®ÍF>eº¦jÓ5&[Jo@'óÞ „pBjxƒL.Ò™®=!ºFTs3Ðä"œ]sæQè•’Rç¨’0E8ŠHp‚Sn¬ŠDx«´ –X%xÔžP sÞÒ€4]¨ "mïTm2î)Ó4]›¦q„ð’‘.iš$¢6MsæLÓžMkšHfvN‚¦åBÓ˜sÆxçÒ™&”k¬çäQMà²¨ŽJQçcŒÒHá¼E*`ÎÉ:šöGpW‡§hÅ¨'LÏ$n@Ï´ZÆh’¡Ez¦RþÃºô,?Ó³§DÏdÓt%³‹p
ôÌ?FCÌbkµQ`j$R ]â€-7”z8,€¸ÉŒ6JDt¤AKëŠÐÇýº¬K¦ßÍOÐªaO™¢‘&“eŠÆ¥X¤h€ÑêR4FhgŠV^„“ háQ(ZÔÊb& ™1Ç¡\aá¬‹\Kê)BÑ§’5Ð@LœðÑnÂ^*"DXéõc€c8¼ÐY{ÊÕ×£i|OÆ%EM°úz4¿üV)ÚŸ”¢…S h¡ÿ8‰äHG1ÒÈJJM >Õ ªÅ‘Õ!1y,#X¡ü1áñŠö}ÿ²w6÷”iZ}=šÔX/éÑ@ŒO‘3šÆ5ÅµQZèŸiÚÓ¡iï"2¹'AÓGF•Ö&$46Ò)Ä£2@b†#9rˆ$‡/ŒG†Á{H XiRê:=Ú§ÁqÏÉ¸Oƒ¦1E[¶wj¼ˆÓà–×Æiá¬K{B4mÛ@8	]Z|]š
QJ5¡Þi©» ´—\sø+Dc£—Rïƒ("I¼…	®9´Î?íK=8E+G=az¦Pmz¦_ÊæA„äl>9+Šl/5;»@gzö”èÙÎrg<	MZì>
=+ÈÁŒ òb@Ñ"ŠEL"ÓZ«‰Á‘YjŒC**‹œ(èÂ'*µŽžuûGÁh“qO™¦Õ·w2Š–uiXK´àkb(ª‘`r‰Î4í)Ñ´1ZìžM>Ž¯-
6P‡•P{,Æh‘Œ™@Q4˜‘ƒ—Up½S	3!µ´^TÃ:{çÃÐ?‚G5ì¡hŽúžu@á%ë@}{gž)ÚS¢h»£´á)P´ËGò²Å\R'­K¾ØG‚‰1„#©—‰¸€	'kG‰ôÈpe#e9Ç°cë¼lßÑÊQO™žÑúô|Iê$X¨©“*kK—g©óLÏÊ‹p
ôìêqZDQë©¶Ö*Œµ@º!¨ÒÖ+®F©4ZEÏ0²‘OCf]®½·ÃÞ¾c„L>eªVß‡ƒc-–¨÷¢m@éúº´«3J{RTmg¹óê$PÚÕøqtiÞ!$c:jå&˜jc‘X`†­0™×ŽxD°›$ÇÓ tbŒÖPµ¿ŒûGŠñœ|ÊtMÖ§kB¡%}¥«…|JÕ÷ã¸ŸéÚ“¢k»úq\O®uÉ#X¡³RyÇ-¼„ˆq§¥O!QBƒ¤™9¬3ƒ9wÈ-‰^ ƒ\+}ºÐƒ«	÷÷àètäS¦kõc×A°gK¾Ðò]f#jÛ	ºg_Ž3]+/ÂIÐµ{ùÞ¯i8UÑ%¯´(°	AbíHHAÓ˜)4a>£;‹¡¡Õ\Æ`Œ<±Ž®ÁKz´6÷„iš®ïÏÁ¸^öç D EK%5S_—èLÓžMÛUí®ÌµþÐ4í÷G²hœ¼m%7ØG¨ª…LbKf@&ÅMªˆŽ1•!­I‘Åuy†þj¦òpp¢6ø”©ZƒvLïG°«%û§âõí¿ŸígªV^„S j×Ù£P5i£†×&`l‘¦T;§…âpÖÈC” „NËüLŽ.h©EZhjÖQµ¿eÃp V{Ê­A;ãj	§QŒø‚”â……gWèLÑžEÛÙzEëÙG¡hŽEä™'D#¥ˆ‰ÔFm
P§–y*ÁÁ›$Œúè¤@é¬	FrUfNíÃøk¸±ð/áÙ±8ú)Ó·úé¨Õr¾[©ÑR¾Û:E¹&êLßž}›h Ó·ž=	úö8º55·<€äi‘"D @Ra<&¨ò†#2,¢ç(³ƒè‰° Jç…£ëJ}HuúLÿêµ¹¡O™²5ÈÔ!Õ=ß5h.#@qýì½³†íIQ¶­½“Ð°Ý<N¦ª-£È“à79©Ld>9¯ioœVÄj…FAáH©%.0ËÓ¡(¤]çåñSÖ¿ÌŽb7˜|Êt×Gl’-—ÍÂ«º–¬7µéÚÍ9[Ç™®•áèZ¿÷8:6$¹#‚ÛèÕÆ{Ä”&JG¥•äÑ‡Tk%bŠU
§¤ÆÊ#)sÊa²NÇön<:BÐT9ê)Ó³úW¸ÔbÉ»ƒr†èŒÔ–@û½3={BôŒé]5lýÞ)Ð³ÁãÐ3æ±Ã2¤œB”zÌ­Š
ƒ,æ
{¡˜0V9…ÀAsiYH~Zæ½Æf]FµÙQªUÃž2Ekà‡KZ¦h“EŠ†Tý‘ƒ3E{Jmw›Áà4(ÚãèÔÂ:r¥Ž˜ûˆ@°(`ˆ Znœ‹JRL‘”$=ÅÐ`›A’®¥hÃÑør|ïŽ¹¡O™²ÕöÄ%Óå¬jŠ1º`UœÔ÷ïœujO‰²Mó7§l'¡S>Ž‡õGAƒ„dLRoàEÔÑ%G6EåÆ >c †($ñ2¦‹Ñ{ z©ÂÔÊöÜÚ£Ø
¦?ª†Ñ½¬Jq¾ÿViRßÇcxöñxJTmw¯µáIøx'ÔIÄ¹ŽyË#¼Öh“•ÙÈ¼FÁÁ_ÜcáÊEä8’JÅX‡×~çùQˆZ5î)Ó´ùo%ZŽ™JZ´ÅwFëÇ¸Ï± gšV^„S iùõãX?‰ž[´‚f¢&ØFŸÜÕ”ŽF!t€Ÿˆu œ°Qì™ÔD²ÖJð©—}1×‡Oé]{ºM£&¹ÕîE·AÅbl°œÚ-¿>S´§DÑvÖªå×'AÑÇN B +˜eŽræ´4œÅ¨(áL³ £ñ$r"„F+¥÷Š!æ=6ëPZ"=á(ÂçläS¦kr¬iº\}%‚.ÖÈ²~ÖŽül-xRtmgŽü$¬ùãäX£Zqoð!í°ÕX/ˆšÅˆ–Êf¼§0„‚ß£N-G^c¼.ÇÚ§0´G¡jÕ¸§LÓø¨Qq/ª@ ¥¨ÉYmŸŽüœaí)Ñ4-v•>ó“È°–yšV8Özâ¥÷Ž*A7Éù›@dÔLYs‘q—ü§,á ›z±ÎX)ÕºjŸnƒ?JE©jÜS¦iõýÔXÒÀ-kÔ°f‹µZ—¦}9Ó´'DÓ¨Ø§}9š6zœæ¢ Á$²,‚H9fáà@ Õ‚aÄÒ˜I¹AD%Ÿ5êÖHI¹ë"¥~¯AÓ&ãž2M«ï©Æ¤¼WŸQÎc¤P}ËçèŒÓžMÛÝJ0:	œöåqªJÙ`ŒsÂïƒ ©S1/¢Â’Ò€,–Â(®BPÂ#"¦ðÔu‘úÀ¥Õ|ïí?»a”vsOµ¹¡Ÿe#T,×–R/Ô–ÂZÔ×ª}9×–zZ”mW´öå$jKýqõ(”ÍãHfÆÂ»è¬RGJ½†EqÀ
Yi£B8ƒ“Lñ ¸ÁÒG`&l]å‚«îQÒ«MÆ=ešV?®š,Ñ4ÎÈbä'ç˜Ö¦i\iÚ¢iïjýãê‘iÚeè·áh²Áè^Žï®Pb=UCÕy«ž¬Q5Ô«©T1/`
ï"hG•Õ2Z‰0uû¨X qi$…‰˜KF„ÑÔ¬¯\ð6'|++HMÎÉ…<O¤(ÝhÓ²&Oß—8…õÄîCy<­nžv|×d·aÇ½‚Ö¥w ´n:“æa_õón^PÄ,¶L+#øá"-ìÇÐoÂÍ Ì‹wÈ ¹…Ï‰š¬nteF­~0ÃÞ]+ôº7Ý~ÑztZW&Ï{!–æJ3¤1|æÆ7pÅ&4xi]Ç§½—ýqAsó,ŽnÍ0¼¬ÎuVšs.ð¼Júˆq¹šK½Lƒ1ÇŠÌKÌ˜S¬êHÌs—¾]Ýßvqs;éÎ×¡ÂåÝŸô}ºËá2´¾ïé³~z‚/?w ›øïfZøU‰6"›}mH'‡°¸ù}	!:¨šÂ¹§±Šn%4u~–ÎŠ’ç‡› ¸“g¸„k©rÕsþ=î7ÄpÔóÏ~üùŸÿòúÓ_žož×¥IÅ³?¼óö3éÈç‹ÓÏÏup¦ çøY°#³'©‰ˆR„¹ÖÛ  Ø,ˆEZQÁ<tÈ–j¦1ŠÊ[î)µRX`fmqè3[øfØ»Ç¦E&–ØÂ½Ò;˜i±øøD=Eêz¶PÞú3cØ1L*ïž$cìXŒáÙóg‚Ùîèù£rÌV/cNqc®CS}ÈäXA\ªh’ì:
D8Q)m‚±"P…<Ä
,yh$ƒ$ØÏ±sš$ˆ—> ‹åë÷^·à€[£,ëM•p$]¤å®å†Á„ô'Øt¢W$¯«³IÜÁ¬®a–CþßÉ˜nÿ?/ŠÁ½¤ôY£ÖmwtUù´º·™O=>€–›¡Ï;ÿÊÆ­ü*÷ü„¶fˆ­;øHoË‡/¡—
™	9.˜ÄmêyÑëBëQÖçÐ	øš±Ý^wt—>Z¹ìr5yµŒ‹é¡<KI{]ÇSA OÊy6O^œ¬á)ñ¥<X!®Ù¼k(È‚×ª'ž–Ö./{[4ÔöÌ)r~üáÝ‡5Ê™ŸÞÿú J˜‚¿à]ùËýóØ—¿0	t 9IÙD÷×¨}¨øKÛí¿Ì¯6ï—ã|X´„ao#<§;øñû{; Á7‘fxöêŸßÿòéýß~¾i Þ´m¤·f8ØÄ˜ÊF= ª¯^}Çn´½5l°{¹µÙ»»¾ù¥;²µé÷Ãa?ÛÞêë Žj÷Ð˜W¯Þ€Ô>¬Ùü-Pv \µ[îj6ýhFW5›~‚—½fSxá¶?©Ã`Ï«W²þöçõþï¯^¥±·6üø÷OïÛÚêW ºÆ¿zõßã0Þ>fÂ€kmßR>vkÜÑQ1{¾µÝË¶6†Öo@j‰_ÀÙý¯)¡0.±Ÿ ¸ôñ†ÕÝÔlŠè¶6YjôøÅ\uÛãnûrtMwS=£Ž¬ˆ3Öácd
` £^)œÖ=U^SË=A™ÑLGé©L‡TK¤¤Ð’GÄ×eÁÿqtàÓÐŽhÜLrOèïuÚrë´ú®E[Õ¦ž¯‘¿^zœ ·vü>ÁÉ4í|Xè/Ã¨Ú³ÛBè‡Ù¿ 8.
+ž]Éò×.BØàâ
¥2k+Ah´„·¸¤e&S6Ž­Y»æoT.G»¼Í”ºä ²{S(µ›¨^lwn›û¢(­koçO|’Zý¦n³ŽÚ¶ÁØð.-Ÿ¤d´HhwÁtå˜—0ú×[ãÖÒ_7¸x^›Ïit$-œÐ¦u½.|žšo¸l^¸	ÔnžÎ65Æ[Ô¦;ÌÚ—™ý=¸b-¤Fûí¼çpÛWë{5F»ôö¦ÐÏlkvÝ¦5ÎÚ}t¿Úql“Zì²›Õm	ê6-½nëQ½½€Te5ïaÑ¶¼5;”Àm[Ë=ônì°ú¶Mˆ©®]fwÌÄWÁ*´çÆQÄT–qª4à'˜&®fŠx‹¡ÈH—²dë#ÑBž1SÌÄ—1r5f’jÉÏ’K)ÐfÛ«Ø®ÃL-švS@5éÆ®Ú‚š¶Ø4öEM4l,Á§Ã-|	>nàfðéÞQÕÄQÍúÍ U£~SdU³×}ˆÕ¤c“s «n^“ñ§0¬vû	f©ßa˜Õí9‡Ðêv™‡juû,a¶ºÝFbÅ5é´çêöœÃuuºìðŽ`WµÆ†Æ)if>5YèÎMæÇ½ð9ñ9ÚAß1©¾“\¢€«ü( ¿àE1 :³ˆ0l„t\#*uJÙœe*ùâD!5ÄÆÔÞh®!kÓ	þše½Ò‡¼@~ýŸ˜^÷É>Þ®’Î` ˆ¢øfƒ±õM:°diMÓ¬ðß‰­ÑmÖº1¿Ãð`Ùù«‹‹ÿ¿°ÃæÉ Y`„Êö9¼.í« Gáë¨uò<=˜Öô²Ë<u4“Í@*Œ’,²o?¼û¥õìmUÊ-)YCëôlý&ïŽ²áÝó°à’1n9.ù¥þ_Ì°›®–Ý|7ôLyÙòå§ ù|«?¾±aƒ=ÉòZ^©d9~Ñ
#wTàZ\ÇÜ²,ÛèTŸ<ê1]JC”¬ÑùI¦—¢º…”‰*¤Új_-×..}{ãuo`s}óéÝ»´ÃÂk#¾ ­{{ñH.ú¹‹Ûº’«}`æÌ®Z¼Ê›”4U‹v¹üííò0
âÒÀj3¸«ÝkË´MGîckAî1”º&ÜáÏ'ÜLa ÆkïµQÞa¢¸ÄÞê1(åLÔ‘i/9&:ç&Rx…px×úèø;ØJ×½ zXº§ôï^´ i…^E“à?ÙP¥ØÈ=z¥›Î.ãvZïG“ë8÷}Þ²at’S'p‰›»a×l	Ð`ÃâÔòV÷&1à4}h}‘³Éƒ§Ó*Öä³÷ÿsÔÊú½»ÖUèJ>¾V¤ó+~aÇ£–éåÙ°§ä¹Sx†–>K°\˜ºn2îWAZYÿ!¼uÂe¯àénôÐ!/{è`ºšyPFÉ’öCIMô|4€Òo­]•Õ./yïPºæÈçóA4 ÷·¼/c 7u¿I‹Ø,Œ¯¦;k«g i0(¼ßÓ“:Œ™¨çÛ½nüu«‰`¾ÝTÔ õ„ßzòdPTS¢ž:’ni_Ç®q³(Bm[ÂRóz+˜6'²°Ø@¬¬»ú•6îa7_|h9ôj¨ofØ7$ÚîIŒTD5eØbæSH³¡ZùÀ8£QœqÑi…¤ÐG| Fx¿6(ðŒž*n ÷pÑ«q-ÝRæqƒ b7Hø_¹s‰‰69#‡9Ðæ"åÃVÛÀÈá€¦’	4h—k®¯î^Õo†,Ž ]_F è×ëØH'¿ÌíN2‡Ž¢Y^ ê­óä~¬qãž©LT»"ÝA€w
úá
kë­á„{¢¦Ñ0d”àÎRä0Œà;pð6¬=¦.1ë¼6ßÛjÁî®ÇƒÖdwëÙ~Ñº`üeøfÒí^ÍM^†g_Én‹˜›QÒ@÷‹Ó^^Žÿvî²0šà‚¿€Ÿ€j»)³M*ìñ8½OJdã†Yžfê(Hšjhá»		À§mó&`E³àÕj/“kV0·Qp£ñ0t..
'‰É“ž:IT‹L»+{¿(>ò&Üaúý"nµD&yž˜téá"m&ŽŽ
Êõmp£)|%=òHJ€ÏHµÀ×)8tP8s>Ô‡
AÄ6ïÓ…—£]Üò*º¥>2x]¦p©àšƒÊðñ ƒâ æw¾?<M³E-<†M,}Ú>h¼ÐdpW„¸<[˜c·Á÷JR–Þ‰«Ý¿4ÙH!+ú°ªÁëút4:¹D¸^_ˆió×o?|ÆT¯t+_è[s"›êë^îÐ+vû¾i7gü:†wƒQáØk\CGç>çMžKïŒ4™ ä|X¸®7íz½ó¼×ìÙä#ï¾û®É‰Ì÷xûÛo¯ß¼‡—vtóÞÅî~ûí3½ïX±ºóµ¯Em0]_ƒNZ˜·&VÀ0r¬˜ ‹è;‰]¬°¦¶° ’™Ìš¯±-æ‰Š×kýïyÖßÏú8ÇAlˆ,Ž|*€‰¨c†Ä¬A^2êe”Qi8G@-=[ê‚f{…¢”¬ËPù|TòÀ–| OWj˜æ*H‡‘”Ÿ½ÞäLJÉáøªÂºB«+P¡èbvn¬ñB<Á¢†mqîÞŸ%‚ÃH…þv'‰ x‡–Žr—$‚bŽƒ^<èjìƒbºÉÇ9…l4å¤Ä“cHÀ||vÛº½¼~˜o¾	¤2›g½0Ú~Ï+à»³<ðV%†`‹S._À€Š§¦¡æÁÈôÑv–%ëQÇ¯o8Ã£ar&ZyhÑO«lá=09,‰ŽsÅ£Öc'¥gÂP™‘Š2ÿzIƒDÑÈ„Ò\z/,'ëÒ2W´Ä7%×®¶øçCi‘Uîºv‘»îþ±nÄsúËrO%B?ü!êâÎÉR7E8ŸO7ª€nKi·ørœÈA Ñš7¶XÎ?‡ƒ#bÔcCb’‡ÖJWÙ÷`z¸Ô¶Æ+uM„>u—u•PÇ×sºý˜ÕîpdëmSX8á—ýì&ÔD†ÛG»ýZÆSç›FäðºÐíhsQßUÍ°NÝ5Ã‘EËEÕŠVSø´7Ö4x%»W³í!À¦¶Hó¤’²HFM4–ñ€)óÄSK,×’á€5‹Xc$<'&DŒ9±
a».¿BŽïªýyUY…µ{áN:*]:2¬ÔRµLÌˆdr=bÆ5ñãäDÎ ò0¹*yªc°€œ<ˆ#ÈÉ°G2ÕN¯ÏQpÓÑoîòoôÜgðÜK`¼Ç›†òtô>™ä[v*¨›õ[u>˜:Ý…ÓwÌ(?ioèçu‚>‹}þþñûŸ?}úðÃ5ýDþÔ"à~Nkz×tt~4—‰'änQ3î·å•ÑHà^‡{>üºB@†ÛYQòMéº7cž¼ïpô%¬Swäºšƒél›\eªÆÿƒÚÕõ¨ak¸ÔlkßoÕXÃeøº±E~3llp¢Í¦Þú€(Eay…ˆ&ÎJ”Ä	ï¼õÁ¯•çÈîˆ*`Ìæ‚1T* …‘Ô‚^W'ªÒpôfåvŽ¥¹XÐ…´ëB.ÖëBZûéB w×µ–OâEëöªë®Šj"ã4¼½K[¼¨ÚMö~*jMj[Ü0K…‰Õ&L ÁÕ&Zšj“ÊŸU&qú!„ÍäÑ&*“ô¾éïð
OrÖ†N{„4>EilçèÇ³÷ˆbÜ¬Ãä,ÒJÔá%²CxÆí…Û… ñà(ÙF¯K¥fÜ3 {ƒœÀÄFu ’‰l†‘r‰0cF¬²„X&ãº<\æûôß)Ÿ¶Õ0B¬<µ±¦=|‚ÒH7ùV*ãwe¾¹%óÐƒ–é<†IçKO9>ªœ”sõ`Á]µ/L¯Ê¢ù%ä­Óò|Óµ=ß0¡R,âp˜-øÞkðö¯Ý‰‰KÝ°ëüƒ8†‘®øhºÉýùFì<KÃÐ¤¸—9h£…æ4Œ¡	öþÖû€Qw/Ò¿×M±¾Ð%ýžÞè’i~Æ÷0ÛXÿïÔý~iäÍ­ùËÇ?ëŽ8QI§|Û¥EÒv¦‘Ža·YÁ¨¶ù46gN{Ž¸lAiîs¹»“]ÞšQÊD¿(ÇÔÍO¿‡c0W(pŒ¢F"É­’Áj ”"Ã™¡\ÄèqŽƒµQš…¥6LÛ-é¦Ð|²ÃV	œÿ”2Íòñ5Ku2ÂÅ²o$âD¬.@pÐ‹a½”1:'Y0¬j¦ù™Ðº®ŸbþäŠiÖyz"²Q¤y.À…‡q÷¹Éèî>×ÌåíÐÞ¡ÓCÝâäñaz<[Ö+å¼ä3²%;Æd‘/Ó#K¿^ÛÕKºÉþ¿ØqR ®IÇŠ2.÷­ÝíÊƒ™
œÜ•=Sa˜âóR«ôÖxŽR@oúË0A‘à”0Êœ:.$wÎ§L½Ryj¦Äj¢†X‰±w›ùs¾ -ûs),žÅbš¾€•tm{;ì¦¤¿eX,l, ³ó­8ÌnÊØÚb9¬(Õ´1h8,”ˆÐ=ƒC8Ø^5é…Ç/–XŸýc„këµBK6~!°Âó©þ„ÕLìQÈYµxÕ"×h·ÌÕs8°­õHºÉÝ9JPÄdðc¨['cMã:™à˜Õßr@Ä9Ða5j}ÒO':âœòœ²¹ªøf¤{ã÷_ÿœÁkàÄ×úI!ƒMÅ‚6B‰5ãn* ³>ì?h½À‚¥JNu
òf©7ó:©7·4rÙàncƒð5eÑmlÓË78³9!÷[C’Ì¸Ÿæ"³);ÿn „
jy¥Y3•…ãLàh}žG¢W9ésÈ¤êC<0e,!¢VD3¦"ñ©àPÐšºõ¥†.‡fpÕu¦7M(p×Ch™¾éÝý†›Té4
ÕEâ“/P*ôº…(^	wn:n·Ô“ {U¤ÂJš‘‚.½ Q÷"úT7(k]v¿”*Ž”º¯eæ–X,l€Úåðv•"o·ïzã¢^m0îêb¶‹B¦NUuÃ0ÉŒé™vË’ D;wÕi%5G*(Ô2ãQÖö!i4òÔ˜X¯Dø‹T(É]’àH…iy…§ÓU–äû¬—–lòV4Å?©õM6î‚9îW?µJ=ÄñÔyÒCt¯»"eJQŠèõ`¿|SÝÖ•:	%›3ïïaŽÐê‚D$–ãˆT-Äh-kX&ÒºÚåëÐfÕIAªšD?¼ûðÍè!îïy_E„"
7ôqš+Sýl°˜o;¬nV¹‰Lp=Ê›ú—-7ÉJëˆá†áêˆ`†½	IS³G1mtïà’¢²óõ¦·q xí€‚ø^>ëö3^NiÔ\‹.G×ôÞÁüxßÎN;Xw6!ÄBœê³FâŽ¿n7ò$¹ìfm 6ºÀŸÆ}2û;œpãn£†ÛyPxý³6n°•=U	ù‹—e’dö>ÔÅÓ›¹É›dnàÐ_ÂJÞ|¨…x«Í#mBßËçî-Û£„%ÛWzÇ"CNf8zÏ8‰ŒÓ„"ð\ËÁŠpÄ±à	GäŽ\º6-ìÇZo³›Ç~è%ñ´ògoÞ¾}¾Q¾}[ZÂR‰òëî¨0•¾‹ '“¨u†ýà qé‹„nL¿; Q%s1± •Áª%BL¾æp† #WÆq¯˜$/Z„¯æf²h%Dxc®¡-´Ia« ¸ ¯—vôìM^‡^¸k%,F­ºÉ•=þ¢,RÙëÝµ®ûÙm?aÁ =^¦¶ÛV„Œ‡á¢0èÝ&¼Øæ€=} å‡Tò®$šwZéÊ%¤)§¶À`òn	“¡,¼¸(ì1ÕA$P6ßÌaâÖÛÖ³…½øä€ô 0ß2õ­þùÓóÒl‡YÔ†ð÷cQ-¾8™ÞØLÂtóq7¡ÙôHnŠú¡&¿Î_Ìð÷]CßUÒCÞ-wbm„ç•aa"f½ã"âK8Ÿ±QøæeØjžÁ›šÞ±•hXk.•r§$8‘/[èCL§<¹sx˜QÄaó%:ÓG‚Nò°®GÄÎµË·¸1~ýéCØÜÃÃ`²^Þè¾›úâ8·¥‚æJjºn¬šU9ë™´áÎ5!Ðü³ÄÕ]öÈj« ‘‡ÛÚ#Vu=¸Bm7(,¸îÑ>P4mèÅ&Vƒióï?üð_ßøT¿¨×ª®5OpU×¦û›ëZÓA¾±Ie®Ãoß~¦uOæ^¿šÇr¯_ÍðÔ?CýX¼O uý4Ì‚aN"8a¿ÞuC=V÷®ýòˆ‘Ûk:w0Þ³ÿ¾óïpðýk¾~kûïðèúï÷ð:d‡ý÷|~¤®%yMÿšÛo–?½‘axÖø`]ðB‘ZìiŸ÷øìA*lO°ác(-”%”QL¹e1Fœb†kl 4ï}Ä’9>2Ã™H…ô'^a‡È:ÿÝ·eé–VQº¥TÑ$»é2ví´b…ê
ÄLs-Ð¢yHJ8ž7)šÌH5„áâ¼Î"ñN"± ºq-êƒKzÓ÷÷ta´f{®æ$|îå gFéJµ…ökC·RéVi£OD¬k¤G-ƒ¶©4™ŒÙ#ãýð›b{!9ñ˜¯m3èîXZðüê¨°èÜd~ÜŸÓ›¢êwŒ³ï„ôÎ9ÃpÄ@½H[/qôÁSÂˆ°+"	æA{ãsŠcAZ†¸sQM<Pä°†#þš2ÆŒ^ÿÖzýñýzN·Øêx±éà}ùpeÆEó—ÉnÂ:ÆQTóyÆV°å•ŒJäbÈ¥lž{Á‘m¯¤:w?ÚÅƒno~ÄMB1­á.4êÆâvs~˜œJ­Ù[%àP6äsmcÐ†¯îÊÉn¾ôŸýn¾À]þzÓëä£a0°ÏjöÍ%J;h£	ãÈ¯ÙÍ«½‡O£n±£5\àîÐ Q;]¢^Èó+Lí*ú·gÎjå'Ý¾o*A¥‚ÏU¸†9¹<q]rq}®!CÄ<UûÄÌIáŽ
„µçÊ ë5Ay$ÛGG¸1šÁ?š1„ŒFÒ\cj)}ßOÉ¾Â¨õ3l²õ.»1Ý$ì¼ÿùÝóÖ»Ÿ?µžU_*øy«3Ü`'†îsÖØUs</ÉýV7vg–Ñ,€0óÅÊ™á>2¸µÓ*&™³Ÿ¦ÕVñÏÒóÏ_\”‰Óàñg½‡˜(`qyòd¨}ÿ1YxáË<äÿÕ2“fÃIR´‹g@kG –’áœÏUÑ=Y o¯B²æÂöbiê.¬¾°’çÿUØmgreøy—šFæj““ÃYdƒ0,íè°ÇÁ|wôÀÈnî
6ú±å/Ó‘¾\Í°fs"ç‚$‹«ƒ$	VŠ¢ÅRL
)Òû1cÚÉ¬‹¶fB.Ã\Š×©=}‘ˆœ?%§Äo‡¯Þî/Gª!ç…¥¬"ùõˆÜÚ!7I{Ý.ÝçWŽ<£ÓØÊ:Ñ‰ƒ:wµÙ.èFñº®OÇf°Ærl	C×	&„eú(|Èš+cb’ËAGê·—h:dtc·¨õ¼9üpßWÄ ¦ˆ‘#Mâ²aX(î¾¢MrÃtÓ°­'w9ƒÍ’óìPúQ;]Ã°¿ìæsÏ™»«ŽýÒZk;A\æ9àóÏ×CË›¬0±ÿb"T7…ô(=_êß…Ô%^–}êæ¼æ³gU»Oµùºí{·@ÈšmåÆ|½—¡LZ¸“Ùý!Œí Z6ŠXµ‡™~ûéI^ÆZóXÕ[ÔUŠ®î\Óô~„¼€ ƒùìvâ];fó8Ñî\‹æœªŽ‹æÇÞ­/+‚0×ƒ—õ±˜½;›¡ã¹þ~àd%§ìîe—ÕÍæ¾ÛÏY6F‡5&?²~XF9×2ËFëp?\³ZÖe’ª…ûÞ­ž{]ãUW_ßŽRèÐÆÍÎbS×µšøÛßøîå†¯‹îíá°PO„%®
:½1ºuÓZfÚÅ\ÛŠ€—MÙªozƒ!Hö›Z§#Ýö}q‰/C¯Øƒâõ½JWãñ”QŠŒüˆ	…	6‘ÛdUvq/WÔ†àƒ ðRðŽ&z'ÖF¸–kÇýBßú_ºÃ¬ŸTB…â$iJÞz[ª{f*“©ðÏÔÿê¼W¦SÍbàZ%×O‘±¶Ê¯Ÿ"E/Êe=#Ï[¿›noº”É¬ÏÿYö«bÕl‹7“Ü\Eb¬Ì‡²á_ašÿøWèß™ÿhýÍäƒáæºPÞ\›üÇnçfÜïvÜ¥îæô´?ª®ö0¥¤Kî÷’Î›k[­5³{Öþì­ýA”ò¦)÷gà(ššò;–Ð<Õ­Tí5ÃSSŠéÔ½Â&Àº„wªGÓ©²0îÉ#—eÙJ<ƒDÖbƒµ$*X‡Õ+E¸Â8hœàˆÃ¥•ÁD`¡Á¸¨#×BË\ˆëR@ü¥x­+^U:¬UuaZýÄhËˆ¯)w,Ž $ö¹Ù#`v`÷Yd÷z­ÉAU&™«µë¸¨q¹’¹”Ö)óÖ'ÈÑæJŽ6%’ËM!N–<è¸z!¿‚mõŸ›ü
*Ÿ.ë™¥ÕeiX‘Æ©§§ŽV\VJŽ¥jÞ²<'ËÓ©ÇWtò@œ¬ºýhg0
G=é%­w}h}•ã¡”:«ïÃjýËÆû°%~>G¥AÚ ×ÃYT:ùÕq¸ùÃ	¼ÑzÎQ†i_ƒÌGoh°^#‡9öD!`ì‰S­ŸÈ•áVh+åºšÐg~~T~^_B~ŽÉv~¾½@Ü&~~R›rt¬›Æ‹?G?žñøÛáèG;ƒŽ~øYv³cï`îÜhV<3ûÌþ®ïm»çÍ`×ˆ5¸“-ã{®¿Š|§FÔ[8«µ‘
J8G T‚”ñÆ+‰`<ª”4Æì‘@’Ä5‰[Ùºä;Þ½þX”‡H	]ZƒÞø²ÝíO¹~MuöämO>”›,òÃTnò‹|<dÃRµgnnº®5NyÒ*P83öM¯U™÷^$WÇ^7–.‹½Ìø‹,Æ"Š<‹ÅÔ¥Fþ¸ébà¹“Ã»50—©ªEÂ÷.ÎšP9„gó™µÒIRç«¥4%‰™5 ‹y`@)Ò¬–úz¶¼vº íW³qšÅýÑBéXÛú~fuyùaV„¹|Ø-¨®ùÑì]
OCKš!‹é*7úÑ5">uf«˜×tÖ‡¨8PlcpírŒWå;\dâXM–_oÄ¥luû»“¯Us§©¦žI³öé§ÏôóOï­	>Ò«”¼w¸ÿŒÇ]ß$4qÖþÿxÿ®f ä‘+sî9ª},c£âhôÔ¤`‡àW5AÄ2-§ '’²a Záè0uNúhãX¯ƒS]Â¤PüÔ2”	“h™MQñ•Ê ¨é—»ÛÐ½¼ÍkŠ¡ŠLssz‹É\6]•ò"€cRŒ
PEzm»£Ô€IqøÅ‹<5—Ÿž&’{‘ë-„-Ùº	A©¾ù\©yBôöÄËSgâ³a`O[wŠ>ÙÙ/¤=°‡øSQVï”ªî¾›üÑŒÅ•?ü!OœÚëû²7pGßÝs½–zmÔÌÏ¼6Rjà"ÞÀ3¼&ŒjâÔ]ß1{îmkê]Çñù8h‹¨‡YgÅA
ž-âÒ)¯¥%y•‘YJœäGŸ€YK&æÄqÅ©ŽŽ"¹.óÂhhÑÚ&›dŽYZˆP¢æbd/ u¶Ø4†Zä$¡ÖÓ¶"…Í sdöç-<íÁS÷{š±{Gˆ[¡»·øƒBÃ‚=–Ž‡àpTQÏ,§"U›çÜPŸjËcLó„I"GÌ¢”€%eW¡ZË0Cr+:,*§gÃëinIâI"“1ÐVhXF±˜a˜‚Ä/ðE6Î§Å6ŠÚ©ÌÃ$GÉt§ˆ
)ª­~£H¶è™›j€KÆæ-v\S®j™ì¦·ò¬†Û?äDïrr Ÿ˜­ðçø‰ Ž¢ë«­¬é—ÕwÇPÓìFÏÚº:=ñAô|K)j*g@ !ÈlIç>øL
£çCëWZ^¿õáê;V…Ø¡Wª#~çºœ'ª­FxT¾Cãï‡ÓÏ2Ã”â"¨ „ÕÁÊ@Sâ8Še@VÈà£Ç!x¨Io•ä­=ŠÎÆˆ×yÙŸøþ¼vª?ø†éeŽ5Sdc-9«•êo?ëg›cð]<êŸ?Šx¯±aÃ\S‡Ö¼:NbúÜMHþ”rÍí¨®ÝOFó»»;å£êŒ¦2ÛZ ÿ`©æj'‹{]÷½`Oïd¼ieŒ&‘ÒDZ¬cQ`§´†:àŠ£
a‹ búˆ)RÒ+œEIçrFDFÖ¢ýb_“ÐÖYª¨q!ÛÔÀ÷úŸ$6—KØœ!²ºnà?½ìœª%žÏÄD¦[+ Ï]Ÿ(µ~•ŒÇ åÆ\Á‚‡~LN“kMvT‹ïÂîãÀIÉ$dó±lwR*±ÂÇM`Z;bàgëƒ#.*ë¡’‘M8G”'×yd…@NZÁÖ%¤û°$ë¯“?@¼þìïí/+fAû«óííSVÛÖÇdt)hŸ¥‚Ió.`˜qNê%—›ÿÙÖ·§ž"&w#j“Gpú¹bNÜþôÌƒëå€¥‡²¾}6€÷)ï­n@O”uììáTá\;Ã•¢Šb¬±RAK€s1¤5öÂ¤Ò?AHtÚP/¨aBiáœM:ó3C;†FêªÎCcêÚYuÞ˜¥‰Ý\›¥í©á>qoâoSÛ^‹í¥ÃjÂöæÚŒí•QõÇòh!¢RQ°ˆ)vŒ¦Œ„‰,ö!
žR­!ÉyŒ†;mUdÜò5,ïì­d} •_BëãßÞ~úÿ0nÅq¿(çmàÊÞŒ¥T@oIº’JÕÝ·ÿ–Q7‰4¶OÖ¹x?JãtoRúll”µ®4ÿ”ÅÑ_>ýÔúB¾›±‚æÙM*M~]Ô˜ëŽº0ÐÁw.~€ugÀ=‡­*›´O#” òÖ H•Ò*Žf¦Ðò™Oí¢Rk>EËf®IµæKöfÅˆ¤ó)Z+_5xf•ZâÌ/÷ârSóR¶òÊräÇå“ßHæîJôö ÁGÕû|r`OÔÖýpeÑª'Û>d´ÔÂ
›€Éàç¹ÛÓ
æ:b›6<n½´aHe2²¬çÙ9`ò«ü^)ñÅ~«‹GMDª=óaVLìq-lÞk´µ)9—ZpË@³D4Š­7ÁDA°Œ2Ê‰‘¥*åV+Sëò_¾›Óå•Š¿BáØ]ÐþÁQºIZ!Ym‘Öˆf£$¦ùÕ%ah6Ñ3à/@2sÏ§s^l—æNP|âõVáôtÄ'IÕBæk´i­Ä×ó÷ôlCÛW€Br§´UóáˆˆútìhG. ±RŒ8–½n	Õ6Å˜GÒ	>¶1Ì»	Œ`f%×.•K’"iƒã!¥Kt!ZI„Q$sVbk8t3Qâ@Ï¼çAy«+¼GŠá=gõ]cî³“ÇƒsŸÇ6y¹XÁÃ)±vÖ©ÔPušõ1[/0 î¸q˜X‚¦Æh¼	cˆ`‚ƒ\ô˜D@ô±TMŒž)o€–­+íw8¶3Ïy¶ó˜U\œ>¹WÚg­|C˜KL†2¤ðBJ^øD«zÕúæ®àYÆÙ—Ë`öqzGJ÷M¢ý½Ü6ÎYx*¯Ç9;G=‹A]ÃÂ9;Gó^Öì‡§!Þbå‰wÔ:r2%£cÑx˜žK§S)#ª•‹HpƒƒrÔi‚¼.˜3ì< ì÷‚S6¨6Ó÷bíÊ²Ñ³ÅZÎ2æî;ÏêÆÀSL)ûéÏoTÐßŠžSÿ™ÜyÎ™'jãÖsæ‰sæ‰`Ù¢Ä#‚Y®Á”yÀªÎKd¥A"`ÇxäGÊ	|Îœ2B:Ép‚êˆ=sLFàXfGYÖËWûàgÃÖ8O¹ßÞ!üþm@;bVRcteF­Û«Ð/3¼²ËPxá;¸É£Ðææâ:Ü¥7LÑz§FÙ0tZ¯{y67Ø½¼tå/6¡å¥ø…”k®Ûw½±þ¡³¬‰à-z¤Áù‚YPHNx»`qáÏÀyÿšìHO‚wÎ‹%;œ‹ñOÀ.ø @þ:÷‘fÚ±û\ÙbWÀö0˜«¾ÏpÍl_K‘Lói¾f¯½î°IubÑùHç^šhÙÇ®~\Ûçq˜Ý ¶¸çn¼¶KxØ¨4NÓôŒ½F½.C¿~ûaø’]‡úíž%¬Ñ C÷²ÿGÖoÐT7Ö9¨©kJ>fw5Z–‡S£a¯›j4+¢Có½½ÍsoO2Dr©pˆXÃ5¥8ø wÎ`ì|’°EFæyXk¬¥–»h!šuy/æƒt,íÍÈØká8’dûîÃÿLÂh×ÅXÏÞ„áuè…»Öûþ(û &üGÖz—Ý˜nÿy!<ôS€o/Lãl'y.R™¾geÃ²Ó§"Äáù4tÞ)5èžOrH‘®\ÿ³2¶ Óó‹2Ïô•™iîÛ0è§woZÏ>¥É”Ùz7Ùì›r³Ï«üÔ“ñ/ª=ÏIH¦—vU
ÿïËtŒ¼Uˆ0¾lú­ï^¬vñ,Õ‡U½€õ ˜^Ã§ÿþ0;êgƒËüß½²A¿?¦ ³oËÒ×°>Uá.YOë™ï‹Îifï»Å‘Ž²¢ Õ¾7Ã´ªöM¸É€ÿòæ×‹g¿ÀBßô`×­_‡!<o¥W:e§õ~IlzÐó—Óœv×µ>dÆÛ+#~ŠÖrÀõyFN‘òŒ B‘žÏÐŸH¦j™&à&ž%«ýM£]$+8ýcT0ì‘$—õc÷òÙd–s$ö“Ä>‡HÏ¬¨…ZUŽRý`ôŸ8ÀÙH¡¼,¡ªÆ}v	¤vM©9¨¯n˜ë’~¿çz]hö«cª,þZ×½?“Ö¿üåãŸuGœ¨Z¤Ä¿´É„yÞkF½Îqè;«Œv‰C¯©TJ@¾’‰AÆùÿõ2ŒÜË”ô+½ú/shoÌ
ùE«¤´H2Ngm§©Ò õ"©í¦FSQsS£4IÃmmT^ñmÍFÙü|»k1Úîj˜e£ÇSfDb–Jæ‚F$2ª™Ä’2wð±0ŒEÉ3ÄP'“8 ´â6‘x¹.fþu«ÜXk8î‚`èé³~_’k’ˆ§91gšƒ­éã|¦žo±~ÞËØiZ#¡“£a,U$y[U¹2Ðè¢\Ú3ò¼õ»éö¦Ë™Ÿ¹UÕÀj%…â,'Y5cçâI£e¥Àe>”ÿ
SýÇ¿BÿÎüGëo&ÿ0×…t}mòÿ»›q¿Ûq”ÂõÉ‰çªvP FE¹Ú9ñœI¡çÓ™‘zÅkgïÀY>?Dí,¾KDäì!IL¯Fi½šì1…vk6
ãÛÅõC‹þGÔ•\Ã`+t(‘@IaËÇÓ)HôÞ<ô‘½„rÄÙhFNGilPÁ‹È˜4BzøŸ1Ôåm(å›!˜rf™òÄáà^Ã>ÿ±àvóïqÞU>AÅ¡WÌ2ß` ˜žÍ<wtÐj7Ñó×OR©þ/Tÿó3'¥vL®LÙx\ |ti\cÓ'ƒÃE"y§õëUÈÃÔí©×kUoVë.Ïª\¾ÿ˜”æpqòjM—ÀJúÅÅäù‹Ä¿oô‡ËŒ¢÷ç†Ë.,8éÿ}±‹Ânr«)jYNgè\\üfÏ¯²qÏO8Ykv©ZÝX,/%OÛ½‹;-þä‰\TçrŠnMJ×ÖºsÎ–Ø:¦X	6‡Š)eHÖÊTzöh:G“J1ÍùúÑ\™NÀ‡©Ç@œ_ƒ{9è™QºCíÁÝè*ëŸ•Õ&euS_¬Ò!û>i¢'›µÿîgòuP]-Ô‰¦?í…sÏÆjÈ’¶Òv"=&hÇwŠ›	!£áà¡O®Mø³FÓ—¤*3˜4í†&>ô¾lúº{¹áÛ„#6|ÝÏ{Yv=^§²,›ŒÞlVWúä~šDä-Ž\•/Y!ø¼NËž6€½M§þMÿzüÕvõ«×ðærXÛ°¾`÷¿Ú~›ÂvU‚´©Qò¾º1®»_×^·9]{qEê©å+—¯­a7ôÊäW›àdî=ÂÔ¥\²C®ZTQ8Ò¡ò&u¢oõ5&k¤#X™”w‰kf,¡–qLN™%c^øˆ"¦(ÂXzJ…ã¾]ç=øÃ»Â=0$mtò€±ÌùÊ?lìž>/«ÕTÏÞd2³Sµ­‹(¢@ðŸÍð¢54…T?º2ý"²i`à“pQxßM–aƒ3ã¤N¸
eL‘q£1ˆ«w0xÿ:U)–_Å?Áõpá"©Æ³Š¹Õ‚g‹lµ&ñTs£·^|_õ¸H[.›ß¥V£,k“”œüíFÙÔ¾Pm3­¦ÚøòTÅŠa+öÑÏn'%Íì]1ëªÓ¬RB&%L!*&M?Ü&•ÊïÁÊ	’oÿŽ$ôœpl…ž`ÞMÌJÊ$>õb!îÃm(²"üðîx*ŒüÕË—¥ø{k,Ô“—qµƒkÅR|..+}$%ÇãÂrJŠ„^,¸ÉÏ‚Îi0à6udÛ¤Á˜£íôÊ·Ë—½v­?~øB¿ûv”å~çwºwé`¦is‹ÄÜ¹¯š[¨pQ7å’ÚkôòmßiØ=T!%/¯|;é(ëØîwÚ¾¿C—ûì½é’G–.ø?Ÿ¦1»—2Iß—¾vgL¤ªÔºM©ËDVMÍ/š¯™PbI! &©§÷,$ K2ººŠd¦ïîáç;ß9~ÎhìŠ·—ù+ÜN³3°Ø[úï3Aþû˜$k=À!‚™r”[  ¦šc‰æ@H'˜ƒ‚œÀ8(\k†XèÍÖØŒ­üoåÿK•ÿø™ügr‹_f„®†4¢‡O¨,ÿÃO„€	Œmò?Ý~q.€.Y=ÉÚiÀf¾E /d£a]ÁoÁò5,¨&ù¦\S£‘œxd¬·ÄJM´J(Ïâ8@Å!Ba ÇÖp%­GÒm’ÿÇÎÏ¿ý³sç†n¬úÝÇéøq”ËqDañãÉh¼ËU ¬GIdÖHg[#…DB$¬Å$¯0V±Ñ›R{¹á>¾ºûñýï¯à÷9hp_&]=ófåÃõ„‘ê¼[¸ÙMF7ygE³b·ble¾Po–ª ÔŠ.ÅÅ3ò7ýð—iÜõbØÙëÂDÃuÚÈòçŽ¡‰ì!4Û7Ó~œWVÈÆø«/7³!r9k2›%,Óô1H/Dk¬¾õˆ r†ÿOóº“…‰¿Þ„ó=Ò8{÷&7Ì½X€™×Aî‘W.š>y÷qb¡ç_
?„‡Š>¾.ü†ÿsRde5:AæOãhrá~“·xÛ‰>v´ðbÐyJó¯qá}ÏD7ø¸,‹Èg]‹Ðæ&ü5B”Y[‹5ÃÄfP%ü¤ð;ž®?òåá¦”V"@—b&ãYùÂD/K‡a”Ê—§9—ç³I5ídq7œæè$¦ÕŠPåM~glñ² 0*¥” 4`v‰àfÂhõmc(**{Y ¤”ûÃÇ„quóK©[\GgÀ&¥%o>FŸ&Ê³ùŠOà¨r|ï0Š]‚p›”ØÞZ
©ÖêthÃÑzŽr¢G~xLÄæáÊ€,Vòç¿=[IxKvÔ=ÄùÌH»Ã97âÍ É!øUÌ<íÏlœv U’Kïâyn­sk,lPâ R< ËÃL2e±ñÜ3ì±Øø÷÷ÙÛÅ‹÷Ü©?—A?ÎEAw†MÂfR—tîòR='6J=¨åÛ…ÐÙ¬ñ›\ÂbpÞs$ærçé>â¦°«óXÅyÃ‹êËÑÎ'0pÖ=ºa.LW‡p¸˜§ãE#›E(¨Ïª×’:âƒ+X‹ÂùRÍâ®ýUŽ"VA!?;5œ˜—Í|A£èŒr:fáÞx™2V¤ÊX‚%\¥„„¢<@R‘: ´—$fßÏù ëµËÊÆ€ÒWäÎ[=Lô>¨uîïÉ@=FK©ëÃ¥ñÌ¥}8Šì¿ÆÁ-ž‰j—8÷4fŒ˜pgC&¹fZk”‚Bf!!Ä ƒ8gÞz‰qÌJÀÐ Áé–Küƒ‹.çáÆ›…©,&Û™MrÛ]}S\ÖùºäEwõ|©ƒú7œtPO×=Þ,Þn}	g~Ñ@¨Û»Î4Ž¨ÜÌ¿þZÅÜwT¸åÝ8(Bªß;÷î;N®Ýq"ª›î8ÄY‘‚$+®Úï§9Ÿ¾n8EÝâüÜ/õ¢CG :#åË0¯Œ{óï}WÜã£a$Œ¼î5·<cåiì³¶®2íù|'v]J›?õ-lÛì…ÔóvÞ{ºˆ½úH˜üo¥v¡ærÁajÁqjÁÏ©¿&Ô.µà]jÁ^jÁÔYë,± IŒ¹O-8N.™<ÈL'–´©Í¦ÎÛõS¦]7J-˜º>n§—n¹à4± O=‘AT¥–ü#µ`êúøiêçàS¿í;›Z0uÚw©÷Ï}ê‰¼O]ŸûÔå¹Oþ¾îSOÚ}êIë¥~±½Ô­é¥.dï!µ`êŠ÷R¿ØÝ~õ¥‚¤Ÿ‡Ô/ö!õ;|H=âÓî$õ¨=L©%ŸRKöSOoßý•Z2Ut÷S—½ŸºãýÔ¤Žq*©Çw:™aê×=LÝÃ¡Mä0u}†©}˜*â‡©Æ0õ»	ø<±äÈ¤Lý¾F©+þT‰dŸ~J-œºE©'sœ:ûqê„Æ©"oœ:ë,u+³T‘—%ÃÙ,õëÉR¥h–Üõ õÖÈ©Â,¤nc–\0õ‹ÌþL-˜zd©_d–ú9d©‡7KOYê)Ÿ¤ Iêš¤na2l™¤.ø4u2ÓT(ò9õ˜}¥nöSê÷õ”¬Ô>¥ŽòK*ùªSK¦b°¿Rçý×þ¯aF™ÁŽ››Q¸Yw:|µá­WsÊîM¤óníÆº«ŒÞmüÅa–ä‚«’†w“Þ¹Œ$¡¹¼2R œ††hÌ Ü[fUÈrJ-¦"Æ©¦ÎH Ð{ïþÏ­¢1àÇ¡
hÕv³Ä
[lþxxnA^itnªž7œÂÉ}½oæFŠÎF#EŒtó„Åèò¡¥Ü‹Ûæ1ïÇnî7«{3‹€¿(2u~ùðß0Â–ý[½áÄíÂlî·Þ%[;!­š;˜ ’òrÊ-Áiõ3^Ïæñë/[‹ÇÜâ!ª§ÝÚ¸G²H¬¬ØRÖÇ~æ”dãÇùlÉˆŒ ÉÜ~2eŸÎÄ·û‘ödÞ<GŸ“»¾J:™i>+)œzQ¥ó­ÉeKz~ƒTæ7ÊPŸxl‚&<#ù÷¢8½dª.™X;:_–Ì‚5@Y¥3Q÷]“z&CÙä'áZ*2—Jr-Gx4ž«÷ÅÙsQ\”{''Ìyã5Ü[êa‚3%(·Ò	‡1Kg!å
i „ÃÀ2Ž±Þö´õ·­Æ@a˜Ê@	$×RrÆXÙß–ó| ~Z½ÖÛöpî‰“êa†Ö÷¡~hÙþY©¡TÝCùÔ‚©¦/•
lÓé«dLt|w`õWW¥bº;é>Æá°ÉÝŸ¼ë¥n‘NÝôãû8ëiò²MŽIm²ëûÔ¥4©Pø¬>Û&UM1©ß®Iýv`Š[¿ò<±JmÒ§ŠëpUO&Ò ÜSy:7ŸìG›Îâ§žòtº?uÚ÷ÉÔÝ7ê¢ŸzÒîSÅ9'©èe½H]ð‡dâ!YƒhàiBêÞœûCòþ¤^Aé°‡Ô¯¶Ÿºã×ñÎ"U\ÅƒŒdÛdê1v“=¡©[ûndOÁkx72L=æÃÔ‹åešoþåÏTög²¬Óqê1jÀÆ¬R¯Ëtkt23rÖ—5Éó¾O¶'ê&žõ$<ëûŸdiÖ¾Ú]ðø^©_Î$õË™ôº.ùP(›ºH“d5óœ¯ŸRåñŸIM’2ùl¤¢’É×ÔsÙÀ[®Tiò9øŸõu˜J=’/ìÙ×ÔAóÁYn7^”º4Oœ8¸£9áŒò÷y0í3xáP‚¹ FbâÖÆ@aJ`É¬c^#”‚ù£Ù[J@ˆBä¤Ô»-^8ïf±Ác†õ¯³x¿™|Ê¯á·»’¯\ŠSÎÍ¯n¢ºóª±ÆÌ&‘ÖïwVæ³Ê9¼yPª7D0ÆÊ+yó¬DÎCûÓƒ=;½8òäÏý~ýåcþçû©éÅWˆåRËzßœoOøàj¾+5õ˜,ßî:-×¿ÈŒxšgxGw´š5ÜÏ¿–n¼âcª…p’ŽÙÉÔdÝA/3åáï’ñG#·hRõ€¾ÿXñ­ôS[þnY¿Ó‹ba$ç„3É¨pŠ €šk#–À:B‰÷1H\¾*b¥Ð{)	óÊ7ôæûR¤ð%S„)‰	0Ê)-P@V`%£… "ñqö–3YOÀ¶ât%7£Õó]4òú$÷÷ª7î–¾Îê™›ìpÛ€{lò;ð3†¬Mv½Lvj¼?É3z5¾(ÄÖapwÁÏé˜ìÝ÷¢œö®ÂÅî<ç®$®îñÈðû6£ê&;qµnT»^…Õù¼£Z§§Ä‚Çwz:cDßsÆéM.ø­ô}QÞ7ß¦§Jê}Þ€HùwOÉcúWLà’¼TW‹gŒåán}õÌ¸Óc‚¥¤ˆ·`Æ…VçË8sDy€…—€(-–Äc†-ÀZÆ¤VN#éöÜj(ešJ¹ÖÀ-¶hšy«²žé¼ïw~ìß9=VS=Ëhžuúy²Ì¯Û-<oßÿø¡ój_;ßÇÄç*2êC«ÆvÞlçé¾gîo6Û‚ò&Uÿn¶î~PXœÂ¯Ý¸gT?þ"vÒxªÕ¡›„ÁæÙVû*ÜeãU³äœÎ·z-Ë*…b=!@¢rP^—ûÝ)Â©ìæ¬[Ø9â‘L±î¼ýðÓá¦EBú¿?÷Æ£a«°Ž‰§ØŒ•YjÝaVv–+¿;÷éÆ¯~k[y>UŒöäSMo3ÝØlL´w3ÏÊî<Ï6Þ·…ý(9=ù¢ÂÎÞ…Ó<	[ÇJ+}õóßÿû÷¿ÿøÛ'±KÀ…jƒ</yJ™eîò]M|¿]Gz¥§8¯-¿¸`Tzl% FYB± cB<QÜy*4CDPm•¤@‚R&<á‘RkÒÊ¯Ê/².¿$¥›å1fùšüÂ8_‘_²Êò+=Ax+ÁÖ$­š8·		¶7#x=	öêûWŒèÝ†‹Qö¬Â5È´ÄYnnIµgò«Rá¹PB·4¡ÞARoã¶.ü¢ ;¹øcÜ©f@*ª †ZŠ­•DpŽ¼Hf1·ÖPá¡Ç(Ì½ÇÂ#”8‚øëëÙùå·ûùo¿¹â°óñ>4_œ7÷*ë¬Œ»“MÃ©¿8¡IS…&dX@´"4©`œ’’Ì¤BÈ¹—ÙN‘ÉH+4áÔåÜµ²ŠÐŒØçxb“‘†'#Ÿ*ËÎ­u.T|V­¸=…¸—Ù¤kÕDUõ†‡‹Ó&?;í¬ªÌEœ3©8"ÈJŽ<üEIi„SÎ}©uL‚¥˜Óšb)©#ÖM¼Ò[dîOa6¹àŠÞèÅ;_'÷aìƒ‘öÝívÉúqQ%_”çŽðùO‹×n³¥ÏóŸ-»ºYïª!!˜)˜MFãðõØËnŸFc¾×,»5£Á›0Þ?œ™DµE0J$²Ì†æ?"`³`D„JÉV#ˆ	\ŒX–À….–¸› .«êòž?*ûá$d-ß÷âtgëP^‚ƒ“…$•	ÒÅvll{>õƒ$Î4¿	—ûâÌ›Ç¾šÄï«³Ó¬¥NØúÉöæW–yÓ3¤ùÔÐ-¸;îã¢!\µ¥bèkã,™Ä¬žf]ø¦0£ÝÚÙwqØÔýÕ5ÓÇÚD"½¥ó†Õ.u-œ"\ÖPæACb<(Sû 21`9B 1â 	
¦Šo 4\þoS¤ÞýóÂ-ó;ŽƒšbÂaÏ/ù·a®“Ñhr?ÿíŽçÆ¹Úò,¡e¼»óægÍ6­·ä»“«-Û®eŠ¨€•¯åø#$ùÆkYR&VúBN1feŠ‡b¿º2?6Ý¸ÿ]XQc9Ö•üÏaöèLÏ÷œmî.&[šç¡/†5îÝù‚ïÒ'6‹{LQT¶5|ÀÞØÿ!]oh3_žH¹¸E«èå_ÿôöŸ>ÁO8QÉÿíÆk>T)€úá3­â(°t7
—M¸,ëÊžù£±jÂ9ÎÐµ§\I+±âCî´ô0àA×T(N½Ó.¨hïŒDÀÙmŽWÙ¤£†“^7{TƒN1½¾! ó·ê«Ëzj¿ÚI/›dÖPõ¿f½ââíb™
&mÙÌ²‡ÛNç—a§7É:Ã¸	ýˆû]gäoFnœß²¯Ão;õ©¶°ŽÕ…N›äW\¡ý‰û2éŒ†K²®7|œN^ßØ‘›qx‹qç³ï¨»(»&~øqâ»»ÑÈ~—GWøN«ð·¨Y–oÆn2çM³ ûÂ {CÛ‹‚ ¬ÑÓ½Ë‡Ù¾Ñ$—ˆó!†™ÇéÞÞ¬®ÆâaïS/ˆ^Ÿ/þ’6|Õšþ4OÖüÖ\ß}íüô¶Sàœï_ßÄþmÇ†l&yÖæÎ»Y>èéü±pÎ¾îd£¸|&¬Ü<süe¸›ìÔÄÕ½	Û›õ&.Šq5‰¿0aàa¦ýQž(.w£Läò[º-„Fß‹ääVñŽ$¦ÕYŠ÷ð#ŽØ(Þ±tMë‚„ù¾"à‰ì•ð‹Ávó/¸‹êˆøÃ%üýÞì!ø›üÁñ0*©Mñ‘[¦}0')(­š“g1’]ÒqËíº§Å¹[¥åùÃâEõZ>@9Œäbv¿O”‡Ã·—Jfý(bQ2™õ¦Ê$iéD"L`W”ÔÒgJjé¢LTáãNiÿ)c&û
=~Ý]"|i»
”ÐËÎB}÷eo™(pö™Nzýƒ´ñQ¸—êù£Â[Æ¶*-I“–A fVˆˆ²œ;åà*¨»@b¯µ6Ž(¤mŒP–XµË£Ç]P.ÞîsÏ=±M~J÷ƒ*ýÃâ2YwF {gI¯Vm8À¯0ž7x¼WËEdVqñëÂÖ¡ÐCçÉõûZÉþÐØ‡Øº)¿¯¯#‰¿¼à-U.‹]÷²ûˆd¾s_"{‡CÄßwŒÜèaÓ$B˜b.±X½nì†a¼½ÁcßEnqûdTÀ•ØY¾7Ë!«q5Ó^1çv\¢“i@~spØû+oæ¶óêÃhÁfl§ÔÂ½úìéõ5À&ðiÇœO0Î—x3ÂÄŠÎªçÕÂTGsMFÏ-ë¼½ÉÄÍ¦….â*Ü„>ü4 N·h=»ý¾qR%®b6ƒ.%b…êæP@áf0¤lSÁX¬1*{ÑVS·ø†»Å×›îô›å˜iÿÈ)ÈÓ³+5×ó©ÌlGùªp+c7jÙrÁno.ÅûwG³+ùšªÉhÐ3bkëæ~<Žk½ \gPµ¡ÂuÜ\óãˆ†®©¬š¸n¼·šêÀ÷ts«¿|ÔTwcõxßTã½ð?Af’üûëtåD¿±­íîšj:ˆ¨ÆV}æ­ÖåÈ ±µBÅŽ;—cwç¾4ÕxæÆ=ÕŸ¾Æ:éÝÅ|5?	 h`scÇ¿Ù‹gâüÛÛ¾H½±Öƒ4iìÆÊç'7VY@ûMõñÔ‘£`®Cm&´øtsÉz<‚Icœ33#€¶Š*ç<°Faå%ÅHH‰…,œ´ØB‘RC*T«Ç·züKÓãå3=~‹ËZÐãQz|?îV“ß ÉÃKÑä÷LN¡É×DŠ&ßDë+š|CÌ5ùFš/kòt°ªÉ7ÐÁR“o¤ñM¾–š|¯jòtPÒäiý®©¦š|moÒäè¦¤É7ÑúB“o ñçš|”4ù&š_Õä›è¡Ñ‹g¡É7ÑöR“o¢õ…&ßDãëš|},4ùC1×4ùú:ƒYÞkÊ1&Xj¥ÎJë8—Z(ª©õ’3ltgÔ%cTc~éÙuþ÷é0?!èƒ1†ÕÏôÊG>×ýa6nÌÞðö¹JöcÞÆëèY7{G<w¸›=#.úˆoHnâä%zá™ëóA÷Ì\ñ„*/ZË
}>ü9pƒQhu4¶¹ßæMÌî™^Ì2²xjÇcF¡LoXx.¦ýI/(åâÛ‹n€ÙÝÝÏÆsó9¨ÒQo(»HeÍU¦[ 	Xóê@ ’æ*!Ùïï·<ê­!úxêk|\Q]}mÄ±¯Õ¦,ÂñÍnìàSÑAô"›5pÙïŒù”»ëíj01‚Ôcq­äÎ»KŽ'	]fk~øa_¿‡8÷Ýâ#¿Ø.+OC~c'½3X(+”P^iá¹Ä;ÌÃ/4ãÈçb®Cã½Á¡ F*¨	–ÓVZ^µ´$É</|ÕG^p¶"-ÅþpÛ¥eK÷&/+Çî8¼<ª’³U^^K„Ž¥àlÂÏ½,J«Ìdjbé’pmøUÞýã	Û‚¸?ƒbj)Œ,Üê˜wÒqþ_Aé5ž*F$ß²v"à_¥0C°ŽvfjˆÚb®‡‰ÚwyQÔf.ozš9?íwòâÑw¿7é]Š@“€§ªˆðµTXHV#mìÏ6Y:R­x<Æ@-VlÄµ8í.ZÑÁu(€Ízƒ-–d²ãÙ’¦’–$ðÏïÞ}Â·`ßë´R…™pÚWå¸jïŠTOÂuå5¹ÿîßÿþñí/ŸÊjp•J·²Bµ|¶ÿþwØ%R¯Ö-j*"5ä'&'abÆ¨ ãZL` %{„	ÿ`Ä:­ æ@4¢Ä"Ã©N™‡H¢š$@‘ªk#Lð4‘”_£ 9ªMZmû0pROÛnœ4£m¯ƒ“«Ð¶›µtoE)©oÞ«pËEÑIÚû¦é‡íÀå€º¿T®]†1‡TŽh¦ÙÀ¼AÒeîÏxÞ[F±1€!Ç•^2 ™cHm˜’Tí9Yè‘X@¯­‡Œ3®xp3Ÿn¾™A™õK_ø, ›°
ªŸ'ºÃÑÓpÙCöúfèÃÇ÷¥ßÄ8â®£zƒ™ëû²é,zª¼Ý)ûY³7Þ©èŒžåŠb¤Ó8£^)dÒ²áÇhÑ@Þ°Šn?7‹¢v¬| jó;Éà1à¡ñ,PügÿkñÎàÝ? |!(&H„¹ŠÒÂÁY1‰IH"4_Ú–C:"L«.pu/®èuö¬Íû¸2©Iê¦åaNËÃ\N‚¯Ýˆã$„J@\JÁVŽ2a UDXG@ø± 
4x
˜[i9^seŒB½-Jo‹9^$æH~mGY‹š#Býòs;	`ªÑjæhÉ¡ƒP¯çºx"ÔÑEôu\KÔR1-Ó•ÒL6™òËÍ3)Â*½UL#âœâÄQE!ôR£$THSh ŒÉ¸-äÒ:-œ¥Ä
±-àá>PC7gAh›<ºÀa£¢¹h1ò£iÀ±F 9e'Òræ¶,Vƒ1£™ëègWøxNTöGV8”
[ø|^¦@É<FÌß¶–I¾ò„Ÿ šhm*Ö·e1Žø’Õ36;q5àV°DèáJøÛí÷†Ó/yÄãÔr)±Ow?ÏC‹—Àt”Í&ðJÒ’ïî'á,´¡HIËƒŽÉ!å«˜"&â˜@ ic˜qÄbå°âžh‰„Lòººï'ïéz(]3S@Ì×Ä»˜Ç}­%Þ[ÂàAwO!à›#VüuP3	Þ-¦ä)è¦zK ÐŒ»HË5ƒkXW˜}v5Ó9R$X%ZCê Ô<@
„ A '„³À)0…ÊIÂ±óš;þ‡ZÃ!D¦¤˜Mw?”Ø‰$f­l}bzsç†Ñ@„­èYùy(Å kGOË÷ Åî?Žò÷£1b6k˜P¢{<ÄÄDÓ<jáe ÌRy!â
Ðà®Ø&8C<hÌ–³eŽ4d]&a¶Wí½6f}\ŸÐì{£†)œf_=‹ uÚ§Xµ(«]•ª=p*ê,a×YE]l`Ëw’©ýXiGÅÃ¼8~k=	Ãå W&€Që±ÕØz3Î	¨|2Ã_’–`¥FÂreµÒ"-Ð¶Hß-=Mæ½0Â­ÁQ‰Êî¹1M.9Ž¶Ì×!€‚‹¤M±_Ï éUð_Í>6k˜{<IÜÓ†b“¦¿Ã;Œt­‚U+U^­ßÚ¹k¡;¯é•ÛN4|µž]‹˜ög`j)×Žb¥¹DrB%á€K/ ÃD‡Ÿ0Í Ó&`g'¼ÐJ %ö˜)®¸%uÖÓ=ÈèÛù)4Óù~WŠ°ÞtÌö¢UæìMX¶)÷LgO=Ç¹á~4îqr)±H:ë
8!«0Âó.G(Ñ¼»Xµ–u=¢y—×2ï.öâŠR`.D~ìãSìã:X×ëáÊ^‚oÖÙ6H/-ŒPÛVq†!@1×ÔcÏö–ìÜ9­•¡L9hV
iQÊQ`ðœ¨1çº…G…É!‡0€kiÜBÑ•høB–Æ–mƒ-[vŽ¨C'Íp€ÄU°e/‰¿ø6œ½.„ý€‰Ëz¶AMÒî³ëŸúÂ;‚!²>ÆcŽîÒˆM ãŠ`K•Ó€Y`-vÞIJA Š´ÔÆ`Ç·Åeþ8ÏY›§ƒ-®÷"ADÌÏwôŸÛ§d þÏç-ŒôÎL:Ù× ¤úyJ…áCñò}²Òù¢õÁ%Œ&?NÍñZæ) ÿéÒ‰rNÂ!J\ú–å88‘ŒIVžÄ8:4‰%§yíì³gHTÅx”j3ÚKh_µÊÞP;üôjM»ªå¹]«V™gl­V/ÏÃZ­Ê"»jµjEÎÔªuî*Wø”ãécµj1-ê'#e½Z¾^µ~j“1¬W«ÎCµŠc|ß}Š.9Ÿ£ao2ªx†gLÅ§YÙj•‹´°ëÄd¯Ý"Ë)\+V-³V¬´H·úIY;FýÊwP©­²ªs©öp4ªøYÕò!YN+V)å.­VsNé§¦é“Ï=ÆÕˆ)M+Ö¨u‚zfº†vÿsªlü„7×iX%:Q^8Ä5 Dîˆa”rãŒcHBˆÖ <ôX!ÓYêv+Å	u­RTY)J&ks¥ˆÑT¥HÌÝìj(E-g{˜ZÄZj—£š ú0µèLYáªèG•ëö…?«¤1U¬½ß£ôPŽ½‚2U±îs­ªRkêU¥ºô¬Jõ×®Š•ïê×\WÁ*Õ®‹Õªî¬ß?¤þŠšV«úAÃ_UÜ*Õß®ÁUlf‹*W©•u®ZåUå®šCñfŒ^­uu¯Zíz_Ý¦ÖÀºÍ¬j‚'tÕ^Õ«ÕÝ¨$Vjb§¶X©¥Uµ±ZÕÃÎæª"Éöù*mP$KuŽ§HæBú¶5H ‡AŒéÂ¹a²¨,2©˜—Aq´€Xá}ø»æ€CtJ#4ÖŽ†ßQ` |ªu}–*âßËÍä¥æg20 æxÔ}3§¥nÑî<á÷«¼ûìûNn§A5+G—ê½eS¤[àbZ”U× $\yIG €"Íò–/Oky;Þ#ºš
f¾ÇV0óF´|m±Û\¢ÐómDCXªO×Í¡ÙÀ™"ëÚùÚ|µ;¼Åöac%|»…ßRmæº\x^¯š¸
ïûºá-àÉýýa•]©XsI¿Øu“³ ‚Z:J8Á-Ñ”+FˆT”
Î±œ9âàX-t(ÉØ;¯1®ó¸±ÕBR´t“’x]A1YIŠc*êÚZHkê:H!°Ö;Ç†õfLMûL×¡4cM!¹¢ çŒï{+àÁ–´6•õ!Ï\¶j0‡ÔN|Kr…Olžeš®¨ï\íóžƒ›<~SY%:¬~¥_SÚà0uµ§ù3âá?:f+…B9.$$XÄ§PÔ
J49(wL:…¥’F‡2\RM¸ô¨Næ¯å|¡E-Úz?W¥Š¸ˆ‹ð‰±–Òý ¡(Óë÷&ñ©÷dÔùsêÂ~Gˆ?PÃÞã4&ZÉä>{]Œðuüå»k&£ò&”8ÕÀC	yæJˆ1+~„„àTÍj¾Ô­‘çxo¿E½H‰ËÍ¸&ËC¹*VãËr!¦†Kµì³\.ý<>Ú·)/"ŠÎv´uÂš î|F”7ŽJ€÷ñºÔÄHÉ¬qAù@­…8*<SD†„Ýö$½Å[Íá­ç5[¨l
"kx‹ ‚Vð…(ÕŸfÞjéìÃ©éVs"ÄÕ±À"^ôjf}Z’ô‹t½T#J<2/1’Pþ*è4™1„ i 0Ú#Ä¤ ’p¥…¤XIèF€Xð™§^#HDV*&È£:°-ŸêAˆíç÷«ÜvòŸõ†7àÌåˆ /q³è?XÅÍ# ¾eó¦2Ûh¡£²ü'&¡²ÛÎG7xŒXîf†;¯>||ÿýE`7@2W†lÕsˆDÙs„çàaxËWµåÉŽ‡Ú8®å„ïÃ±[Þhƒ4Ð–È2—‹Îòc.H¥h#Ñb=3µj¢ra·?èDŠabÑ©I)Øæf»"Òë…8vn„[§	7M¤–0kÕÀBë9tŠ2ƒ¡ÐHQ€	AŽŒvÖÆ0 8æÃŒ¡pp%“eJž.¹’àsH[¶	pµDÙaDG¹š¡öE›¸ìÕÌÊÔp2^l”¥¿ä^¢³ô:s˜–X£Í>öí±f/ÓAmNçÄÓÈi…ˆÖÖz Ÿ%\:Ž=óJèÈÂŽ-Æ’@‘×
gœÕÔ{ e5pàbº¥¹ýeÞÌ³Ç=ë|o³ŠÌKÜ	ÐÉûyÐ»Þ›QW:^†%ô<Eï6 _ ­XB¦b5‚ÁiÙËÒjG$ÔH-Ç³Å^á-nGÚù^÷_¨•Õz‚µìÖ1žf7Ãn…zíÛ˜cÀ¶bŸ“°`\ÐèÆr·oÉ5ÒÜÒ€ˆ(¥Ä#ƒŒÒŠÃµ”Äak	5–I¨ÅÚ´èçxè£Tj‹ ¸î†àj\¥ð/Ò˜­mè§e·Ã?õ²·žÿ4Ãå¤ÄE½p tiüSë—õ‚8¢Cqž‚#Z`¨”-ºPB©ˆ¯|6‰X†‰"TÉ Ÿ¨¤p¥,§ŠBbdÀZ˜J¨•†–¦]äNC¤¿ó:lR1×ÃÀÔû¼RúÚ¼ÑY Ó\ ÿsØ3#ënîÃ?ú[MF£þ¥ 'ò9má$¬G¡:c+Ø	ÌQšV±ú-ot¼h0 n*6âØ ©hµAÆh[ê­KDI³80y¾ƒk‹Y´^`·³N²¼Z©˜ íÚbF¾('·Z„ãår‡WñŠ´>åxrO¼*A9¯Õƒo3Ô>	yé”£Zc¦¼a8o±IôTh/	RÒ9FÄÌx`¡±VQ‘@Öµ`»Ø&©4%â°¶±ÄX¬‚íøŸú`»¥)?_ûƒÛÍ”{/]î¾¢àˆÏpw3ûzP¶Ãß¬!ñKã¿]ÿÅoŽÙ¾ÞÇóâgö½¬”ò…¸nöGwg Ùp <pH@%ˆ‘Dc©RÞzb8£HÇôµqå0"\{f‚^ ‰‚†ÐZÈÿî.BñýÐŽòe;ª7ÈCÔÔƒ[4“ÐÄhÔpÒÿÚq*ë¹ñü¥Ïz|x´€Â³¼Æn|Ûéü2YÄÁ	úÃSø³S@»0ÎÑtÒù k]7€Ë›\gè¨þ(ôõÔ›Üw§:&5^<*2»/“€s%ã~¡Ø\ˆª#	&F"„­=öRPWbJÁ±Ls	»Ô’úGÓ2'5µŒ»ã«wÒù¥Ü¬‰ÖS²^¾*RäKnŠ¤oÖÀsç—üõfÖjè5üU`Nl=KxSö YµSªÕM?V)öAk±ú-V+í3Šl®T+1[Íln5«í»’ìwsú u
g±÷UT¹ÚË~™P;÷ÛË‰ôÄi˜‚ÓÄe–kk J©! Â ]`¬± Z+ÈkŠc‚ fÔJJ¥€¸Ndµ–+8Wþz‚J´ž¶€	±2	(MK\ðœ+hm’±BÔŠ Û [Ð”5²ÄT²:m ®È”Yâ066k(]å®2^C]®Ú|ö~ëìB¥ëà ó÷¾á´ùëE jm÷ßší’ñ¼ù¯‚jNÏ8†Ô)^„·Bâ‚nå ¾U_‡C1žÛW¢ig‡g¾Ç£0B•sÄ†ÇŒ*e%ÑÈ1nŒ—Li¢%ž…$&cÂHCI(â,—Ò#ëÁØoa0~³éøéÐDÍ¶Pðúâãï°®‡ó;)s%öÝ?äÍ¼ëf“¯}×ùû²›ñhÓq1ó\>q¹F~æ*]
¡ð<Ãü¶G…“õhTˆ@ØJ@Æ)L#âÒ´ÞGã0—µÆm8¶ÛlÐÿ 6ÿÉHYÍ67¯åëUë×¨6ÃzµêŒ1TÛ0ÆKäGš4}¦«Â4­ÉZ&ÁÌ”—û°îÄ¦¯Ö‚ÕÄK·Mèï$,äœ6V{ƒ€e;H‘„{GˆzjPAE­…ÈrÅ¥ÇJa0blÒÕâ¿ø=w>ÝúÎ²K´úÌM‚¤.úkíIá?Áj…"mÿ5cQzŽÿ*¢€`­úýCê¯@ÃZÕþ*X¼
«Ú)9éJÌï>¬ÇÁ¶¯½.Ãl9Èdƒ®ÂÍs7Vƒî(GGçˆ˜¯T6¦JQä•sŠrA˜Ñ'	â0ÇŒyæ<“†{M Txì`§êU³IšMº:]o«³ÖÖ<Íx p£§l^êfáP•;eôDõ†WqÍ_w>«þÔ}p`o\ÂµÓÌÃïzê&ÜÛKÅ^T¿3p†Ù,Œ'v’ÅY<‹æã"mSqËOÇ2ŒXô2€0D<9Ç%Å`¥X~„E1¢0íÖÚQoÑ#§eµÞc­íÈ±ÁñZóò¤kJK¶Éaâ®'VÕ51q{0ÐIH9«˜ DhE9’ˆ+­`Xª‡Hrïp"èÂ<`%¡°‘¸ ˆ4õZy@Zte(è¹9x[âIB0k(ˆ(VPPÌý}Ô2ƒ‡¥ dµ<ÍÏ€ƒšá·â –÷:±ÇcË@Ô‹®e j£¯p›ÚÑàÄ“AJÆ³Fi«)–jÀ1£ˆ¥ rÀI œÑJ!¯õÔ(~F ò´ä*æZ×º©3$9Õ"ÂH¬71æ²Lé`"h£S,EKäÀ,\
«˜b#Žþ°(oµAÚ¦èà:ØšfÃ©l} ó"ø£Öýë Òi7taTÎf0qšÜ‡L1 °×„ ‰¢CÁ9‚^s‚ @Ä1¡B‡CCèˆ bàêä>|±p"ýõ=Bt-w!l…Á’‰´xàáDËˆ(ªå+Õ8 h†ÿXWA{4ûÐúÐ§µ/†‘i=ŠNÈç$ñ)—JˆÄ÷ëgàC ³ž  „W’B´¶D`R¥©§Ô:áW#,­rŠQ'IT'ÿI˜ê´¯b$ peùŒ3[Û»`“Ì“`H1_+&«ÙN #4Ñ<?V-WrDcªeìÉ÷áJb¸ö÷Dõ¼D8Ó$-Ñ†û|QDÊËNP×¾Ûk†bÚÏNÂ0y-”R<St!Å1sˆÐÄ®µtL{9µa‡T
`ÉLÃ-@ÛÐ*<Ó0²ÐÄš{rø	"<Ñšµ µìÓAMâzæ¬f!ZCÜÓž°gÕÚèg-óÔf.k_Ò])m—¹qo‘w÷ô4”I(AV)$ôÌ	¨BciäÌsB0ÇŽ! óÐ9!%NZ'0ùÊ”ëÃÕFâO¢cx/›¸¡)œ¸CcaÂ1sñ¥€Äô'l˜ÄheH¢³v™Ä#”bœÉke­Z.ïxi‹1­Wöãè¡Ë7éòSî'Õó§¨ú´§îÅcÎÖmé¥º-þ­\]ºíšÈ¯ ç4$X¸ÉcZÊaVãÅEL´ Œr‚œ%Î"ALàÊ<ñµ0'æðd."
À:Ì‘¡2Ìa€‹4Så.˜Ó2bR/vé‰NCH›ÁJ¥˜NÛOK·µ¤ÖËu§:÷ó¸Y­kf•zwCÕ?G\&A™¡@f CÊ0è¡b–ZE´F	¦%qT(ãÂK…ÔDbk¼W‚hjë ­b²¹¬Îú£I­˜ZÔ0,«]4ø?ÔàñÍš4 è°îÞà±ïa ÅU~!˜‹¥RKs´%> ,ºb}‚‹´° ³•j9¥ãƒJRj;qtU4Û$TôÐ²@mð£FÚîL×ô€m‹¼?Ñ6£``G¤ä’%ç‚IÄ§–;å0ÁÆ` 0-Hï°u"ãyHŒ­Ä‡<9Žá0×$>!kŸb™hKÚ(ñ[zå0™_/â	d~C”ÊºÌoyó -“qZ™†–5I%LB‘ÉXwïê2€I)) Xz„‘‘Lhb¸Cyë•ÖKfÜ†2Z1…0Ñ˜’:¾ËËùV+ÅÐƒo·4v!ðAÐäe‚’UÂ@ÙU6ÑÎ@ÚSùår´ŒÁñŒ35Ý•—›qt ±h¹IÞ`ÑÉ'eíÅàÕÜPJ-h••Ó^W¬=¯†¿°y^”T(Ù}ä$Oçò
ûH‡Ö—æb¨—†„]õ²„}1Ã¨VbM¬Óž8A½ðR±(Ø‰Ñ”A4´D€€‹„b®DÔÕ"¤mé¹IeÁÂÑZ¾‰€ˆ8)#$)R]u·!¤–a9#!X/BáÉ0RC<ËNŒTÉƒe;XªÛÌ*jºhŽŒÒ&½Ž£’=MNF4m XAPµŽ:'¤·Nò~ëR]eò cgà¶(fB¬(1ˆÁ˜>)à„9 ¥p£9·ÀB‹Öá G£=¬ƒÜò¹.,`uÑ[0b&Ž€d†w[š}‘éOm(qñží©»a¨Ø3Ù¢èä^M:½,`©ñ¾ûá£Z5¶†
%I~Ã%ØšÙA†Ê¼B”&¢Â|[Îìˆ7TÏâ–oÄÑ±à¹Â3_(Æj]l®‹ç¹*ºf£¸?	Uƒ°Ç‚XÌ=tÐy¯^K@œÖ
%¡tPnvJ+bdÆ™wZÑZoZ¨ÀO¦  1 uYà#¼wa’j(Û$ð[
è°˜Ò VLéÆEþ™â&_¼ìo=l¾)
âŠ)„‰Ë&çxj£0„Öj$•A­…„ÜHé˜GÂ
Fc
È˜ÔPètÌ«	‚ÔP	€«'âLk?eÎýh9?cS)¼îøi¿ß™{“å¢Ä
UnæeÝg¦¹´ŒBÁÑøb^;#L Îðº'¤x%¨‹L&fäŒ‹Õ2Çó¢©™r"nÃ±ÁAl³Ñ´ãwŸâõiö1Uó{‰_ê§8ÂO>|šîi4~¸b¡Y®e¶sá‚_Lž­¢N>¦Ô*g¥^«"U e­Os/¨ÚHÒõQ'<Ü<	E„aì¸ï‘ãœÇ<§HÂ!ÑÊ(
öÖkÁ°
€‡+.M€IÆùpp>"¸-Ô4eL®æ	°_Vœa³H¢kÒÀÙ2RAN^ÏÕ(äl*Ãû6ÈYÉ{h'ö¼
†«Yöo„^TJ¶hôªÓ¹­ãÕTï¤Öê²¹È6œöõR±ùgr2–(Gˆ0œ„ÿu˜¨‡B	a˜ ŒÈ‰¶V; 4¡„(o	"TxM£°Nßb®õŒº9»ý¸ÒÂëÎÓ}ÏÜwæ³cú*Ë\fáÆO‡&¶–-ã&DKð`ÚŸô"Ê.“ÅÑ-ÀóWg_‡æ~dÿ_±RL¨ÐÑnòäÜ0· /*gçFf÷¨ÆjGýØs±å›¼âî™Îd ­í…âSÕŸ·q!(&¿¯d˜‘Õ˜á¤ \~> 9Å‰éúŠUhyá³'ƒ)6âèÐ.oµA‚q	3¾uB·&çzII/à-äÆJûXº•ð^>¸%la~qô)?D<	
4ÆØ(¡µÖ<(¨°ÄjÍb>£%†^…X¤¸òTym•ØF€Èª³‰“©\*ÅzÔNá
“A0‘ÉÝ[.÷0˜(ÙEÂÄf(Àu˜Ør¯Ó£—IqžœªÜŠýZ¢óòˆÎK'yƒDc´cœƒgØh”+ˆ	ÿ£âûfqŒ†f¥×ˆ:Èæ2`J 4çÊR`lø·cu dœj‚üî?GOþ(b·Q€bƒ¯ñeGhÐ†uT.B±ñtøÿ|wóqýãc¹é %²§°dÅ#‘?§Ñ8V/Œ¼ÁlÔ‰¶}¥û__ß<õ&÷¿N&Y†¿…Qwþ¯âJ‘'þ@YÛ‹­ìƒÄIÅ] DÉaÛŠOGV—P.Ë1\‰¯Ióýl)Âãa?Nê¹ŽÆ}¸6Ä-Þ„—‹÷r•rÔ”Ãgãìc1üjŸ-cÙ‚Íë5ñ°w# ;«'-Ò˜	±tZrb± N–'¶1š4˜Y`4G„F% X;ï9¨È£…dA2™ì^	ÉšáÊË¯y0d$í½ï&HÖr2QÓ¹²YPÖ·Ç©î*ÐYžs}ëè¬Z,¼oœ(lÉºE¶5éÕ~óÉU6Ÿ#6
{Ã#†`Ž=WÄ)¯EŒy)•0ÄÆ‘¤”+SB@¡ñÌÕzhÓ™Í8ç-àÛíÇPño«õ–¶Ú€õòGý¯ƒÑøñ¾—€‰ ðf™%ü<`¢¾ûÒÓ¹ÅVð7kÄvô×Ükb¹~¿Ó°wÞðó¤HÛ² „Vù4V³ †I¢Ï]ét¶´Ú¯gR-mÇÑ\©í&I¶R7-×v¢§ÛM»V6Ïäívá<1ûw©Î‡­aK&BË“°‡ŒH‚©Ðç= ç‰…ÔXï½±ÐZäÏsfKå¤z.¼ ÒªZé3[pY\F²/1!D(¼ê­Çã 2¸dœ$†ùÙ.[‚ð ×× ^>¼lˆ.Ü/[Öð4¯³›öÍ<'™èúÂ	ÍÖó±%S/ŸL}RŸÏA¢Œ€¤Æ(a”#…ôHqÎ(fNbN˜Õ˜J‰”´’P+˜Vb¦ÎéwR¾‰öî ~‚3.Ëâ“‘
OaÊÑ„)Ënÿß°€Ëç0ªóa¹:ëDñö$†º‰(ë¾wwßÿÚ)¤Út¬"è]Í&?=ˆML žùf9æÐ÷ü]ê÷&‘ç†òm¾‹€0¾"€ó\Ëç+¡Jt`Œ'¸%Zˆ„ë½]‰ÛpltÛlƒ‹Í·„ê¼õxãä]SÄ£YÖöä„ã®åÕª-÷¢¥ OGA·\òÙ‚ˆ~ìõ&,šP Ä!ˆÚã1áËÀÂ8Ã‘ðQ*öJÊ•‚F`	 cÌ
¤%†Ö	Ú¢ùÑ|€î©in$fŒ¬£yB[Eó”ÕGó-³}žG¬–ëk£x¾®sÏ·öF`ß@kÀ¾%áJÂo@ø•êo‚ú­à:¬ -_U¯8o¨ÖoÒŽðè'cejkà6\¤ó;•TS<”RCM4Ò„C&•2š†?˜± ü:h–Ðj…½5PS‰!ôpÄ¬¶ŒoQ<þ3`ûnß}výNœZ®YÌÜOr}á}o8ýÒqoÿñ÷íšFøe¾,ÑÑEåÚBB‹Ã{54ASxëÆ®ï¾v":v“›¿÷ú7î¼Š]~ßQŸU¯_(Ã°ldÎxpã¡ëgWäöË÷·Å¦1&×û÷ÿú5¾ÃS7:¶Ðñd”«VA@tŠgñG¡VW¸üa`Ñõª‡6òìŸïÞåñ¹zÃ0"eò ù[¿¨ê£Ì’‚¾Žý=¹~?þé¾ôò³R³u¸1êQé^Ð~z.ûÙ:ök8L1`×l±^=Ü¦]öýë8Žñl)×JÝ¼š.JÅqçs…‘f·Üoi¾‹µ›T—Çpúso#õô×|WèxçY7ÓÓòŠã˜»Ôäïú˜·‹}ÈçúQ=6¦½eA}»‹<Õ·aÃÞô„cz³üô6+sñIã+a%â0œ»²¯Å£ˆË5ÓˆPº~A ö>dœ¬[|Ý]RQ“ûñÃûº§WÜP-ÅmãlUÝâf,àe¢ê6È.»í¾ÝÙ`
8ÞÞp}Í+±xmEm8%‚šR…ø×O0
jcª ;/‘žÕ©Qid®ïkbáÏNk ¼—‚míÿ@lE›a6G	ÑÉ¢À¢ýÿ~3Í‚ìïKò?ÿyMø~×Uý;7éuý( ¥u?Å?öÃø ­3#°Œ×Âã ë8ƒ€S,¹6
 3F;$,‰	k A¹qZs©SˆX'0Ç[`üù´:±ÿ5Ç®ÿø¹ó³B½§†¿³ÝŽß.Šè`^'s¹õáç¼ïÌðˆ]¶õÏa/GËù
ÞÞÜ|¼Ï³Ú«nÂUÀT9Bž)ìø|`rþ9ÚÉnïF£»¾Ë±cþ“7q×gÛ½:"Ä ’+^=Q)Ú	Àl5üÁ€ón$ìÏe»v»ù¡êÇé¶8‰)è1lÒ…Râ¾ B|-6€ùÆtc²f@ žOÿ`K Â•={ÖöcúÛöýol¸àÅ_­·¿^Vê 6÷ê?"Þúßþ]7q©àý(±`O¥t©S»~Híú!uÖOƒÄ’ƒ,±àð.µà8±à(uŒãajÁ§Ä‚Yj‹Yêf©ë˜íå‚©“™¤v=ý+±à—ûÄ‚¥žÜ¿¦{†{£¸6îûÿCÿ×Ýpg¥‹Ø2¥ÐòVºÿìöË ;âòr’x0î¼îf×ÿÆo6tó&ïãM¼doíFº¡ßÛø¯ù´âßÅŒæþ³›ö÷>ˆƒº	PMäè!„"½Ôœ0£f„^I’„BŒ,eA®œæ  ö€8	Ðdr|WšÜ¦=Ãþ,øqud×€"c²ªD‰1XKl€)âeWÌB‹	(òùéìæÇ¬Å’GÂ’„WM„µqWvÝ€Ûî…Í—åó^vâÊJÝ´¸²Å•-®|Á¸²|y4†.Ë¼8Œ¹2¹£ Í˜Sªg™â–P—žä†jI¹“meNC+!3%ŒÒ¢!sþ‹%§Fpä•°|›{ó»b^†/çƒºh‰R¡%D¬”àèç¼L™ ñþŒYëÇ±›Ÿ«U	U"VÙà½¶!»®»mwÀÆ–Ë€²ÜÁN,Y©‡K¶X²Å’/K÷Fs0²hÿå!ÈÙ¼Žƒê™sx$0”4Ôrê¡D	ä pÑ{âþÀŠKäˆåHˆ @”ð9À4`GÂ(Ý‹y]xœê:À#Iæ%‰\XˆòbÉK†)Öí•ãØ%-%yLJÔåÙuÓm»6¶\åv‚ÇJ=´à±-x|Éà±¸7šEû/<ÎæuLð˜ksTyÄ,Fh€P¨€˜[Ìbg 0”I)0ÆŠ*ÌœsRa$â£}Ìrí.@~¸I“!$âkQÏ0Å­˜¶ñþ(ÀÏe"[òh ×±k¯nÉ>W‹ƒ\íb/lYÈH¶@²’ ™5$»ÙKÅ’afÇ@“ÖYå†ª«ƒt8Üe²îc	¤F+"90Rj4aJQ€¡pFa¡a*´ö
`4áiÃ7ÛåOavªÎÛ8»ËB•kC»d)ÒŸÞ0ÌVŸÞ
Êä$‘dþòc'²Üp@s¯ÉöÎÑÐ¥¨‹kó¶ìóg¬ógC7{ý&Û÷8-ÊlQf‹2ïf·G~y4†4W®¨‡6WgwÄù‡ú<ífjx ƒ‰nã»ŒZp“0¼P+ˆB8®'JkÍÆH$=•PÌ2L1©£¥\pÉ”á`+ÜüCýkÚù¦VàŒœiî£>-Ò{ƒxðBÕù2†&wôf6Ð¢&Sœ‚ŠÕ×;T¦8)"(åõÎ³sÛ°:
}Û›d“±SƒÎ¿ÜXµø‘Ê±`7íÆîWÚoŠ¯€Ïµ>ö<Oï¤Ež-òl‘ç‹Fžñêˆ7G¸/aÀœÝ€?;·Ó‹Cëó;îtýÞÄÎpÖµ™s¤°°+¢•†COÐ–¡±TŠÄ%µÔBË ÐÜ!À)Œ*)ajäü[œÕe1›³!]£Ïm"”®1šA=(gÌ%ˆ'„ \9ˆ9“ÙÚÉKH,f%#ÉÒvìcëØÈKÍïe.[ûx‹[üØâÇÇ»üÖhŒ²Ì[q ±˜ÕQ bªý  Ç]£f)Ø4ÏÌˆ<¶SI•ÜCˆEža¹3€Ê…;Š8t 	Ì€FCä¤††Â­˜q>½Î»0½kc»™ìq‰¨ k/¾Gå”ˆs˜bßtFóÐ”¸¥$§$ë¥Ü´#ûbGn¾÷ ÊýìR™ÜQ-[hÙBË—-ç×G¼=šƒ˜+—ÔËÃš«Ó;2è­‹)wÎ‡<­ÆªŒSH (2Ôx‹ —Ú@ï!$†RgZQVSC5·š	¨”2ž mòº›Ïñbáçr€×AyzÔ!ºŽA9À+T Zƒ®Ùˆ	ˆRV‡ÑÜ¶-£ÑÕÎZHº¯`I[HÚBÒH:»BÆöÀt~_½dtº˜ãq!ê¡À´..™¡3È3àˆ!I
	Œ‚i.Ã¿­ð ½bLK&cœ d/.½P4z%UJÅ3Tâ•È—\‚·Ìµ3‘g<À€¢N™k{± †6“0f1[ˆÙBÌb– fóÀòåÂÉ£€ÈòTj#ÈíÓLb75³’Aê$‚@Ê4ˆ!/€56ÀK5p[@„ÒÚ`„8ÇŒZd‰tVo_ç”c¢,O þBv^Ù‘™Âöæ€æöööû¡Ê¬—…†BõbxÓ¬H.>
8³h1g.ùíJŽ‰b@ÌÕðFð²Ë&æ,)¼QùÌ>[­ÛæaX‚:Öx#Ö¹”c÷ó¥›R_³‰l¿jë]–w}u?:LÛ–8­ìQa³×Þ2<H+muPpm©&\¡z'$–cêc`ZˆÂmIÌ–‹òç8«ËRµgCº5;ÙÔƒ]»)ã+1‚)I¦žÒAìÊÖiýˆš6—5‚»•¶c×å·íÛßØnIÍ.5¿SÅ®Ô~«c·:v«c¿`;¿5Ó¯óÖ_œn]ÌêzõÝhlÕ=†ÐbO÷Ž[hd„
JÇ¤÷y¤)ÅTÇ°çŠ¤"ÞC§È4Û|ÕŽ³º0¨Xé: ¢L†ŠÊÕ÷˜å±´J±€%MÉEV:ˆuý€Z¨x¼÷¥íhÂÿ§Ô|ëñ³¯`[¨ØBÅã­ÑTŒ­¿<¨˜ÏêP±7¼ë{çËp œSŽ„s&€&”S¨„Öp…å&”3Äq©1@Ô¨ˆtJm³¿ü’Oë²Àâ|LWqzX5†Èši…a±’|Œc’â¿S>‹mÚˆãÂÅ:¯ËûÑDÎˆrûmÂˆ}[ÀØÆ0†{£¸6CŒEó/2Î¦uÌ8žjõgÏþu`5x ndÆjŽ¹ƒÜ“ ü8çÂ3Œ°ši
¨ÅÆ#ÏœVúhé4\Ôh´7Ð+¶áÆÅÔ.;–ÆUÂSv CbÙäã¸7œ„½¾‰K—už\E8¯vZ<_ç­ùÞ8›t"ê{p[ç÷ÑÀÝv>†_|7o§ûK s1 ðO=ç¦ú]§£†vY¤ó±ú6ö»y'¡ãÐÇ¬½×q\òuô+ú0q÷j8ºù‡õ{Ã^ÞÌo½‡Þãýh§¦•¹ï¼Ê§øpŸ«w÷£þèAe÷Ÿ{ýÞ÷³i¼íë›å0~«¸ßÅ®þéefÔýU{ªó«ú£7ê<©l>¼×iV§óÛ4{¸ŸŽ{¯o~ÌFƒ‰ú<žö‹ýúpïlü×í¬v@~aÁyç«Sã,`ÖsÀYSû56¶ˆ–/±iØ»×â@LãmÞC¼ÍOFç»xF– s8,A8ãa@ÖöfìÃYQñÜLâ‰0*‹+wô’5”¬1`ÈÚ«S¼Â/#xŠ+ÂúMÔ…­ÖpD­AÔÉX¼¾'»$Ý6	°±ñ²æ°ÖÇNí¡R'­öÐj­öð’µ‡ÅÕÑœ±èâåiË©C“ôîU¯ßÍ
ˆx¨Ë­­NxÌ5’€)ˆ`¼@¤™£FPl±° QÏ‰§ˆxË!gb…e”Y%€Âl‹:ñk1¿9¾,âÙàÊŠE^-®WŽžs…áf¡G9(Ð}li®ttïGÓÌÅ±ýWÄÅÿR÷ÿü¥@ð¢€à'±Å›üÑÁdTTí|•ÿöîî'±ñØæ?Ô0¾GøŸYçÃCo˜£û÷£‰êü>På³ë÷^ÇrÃ›ï~sO.ü0¾¥ø®PRb{o{ºïÖ´“ýO­š#ê¨¸Ç°°ö&ôüQ…#ëÅÞþs:¼‹JÄ0èá|ŽÃz™{åòõòá§ÅïGÝ©~T[Ôð’±y•ØÖkØ#)Êa0–"å¡ÄÆo»›¤-@?@gu¼@6nÌnÍëÆJ(}cG{<C*ôÔBõª·PýCõx¸^?Ëåmsp}íšzq˜}}~Gîã»ÏýÑg5ì!.v$hPÝgiÊ«‰"BhK•\A…lt`pÎ€‡@:¦-SHh„$Ú~M­dÛì ¿.æw±Ÿî:<J’#c3ÈÉjD'åL}aO9IÉ°²ñ æ41jQèqP(E¨M¼qcöÑ¸›n‰=”Qè¦ŽöÆÉ=•¤šJÊ§L&êsjÁ¯‰u*®Õ©HP÷R¦BF
uLêÎ˜ÔY›TLdR!£'7™<íL§–L=6u%mêJºÉðÊS?—ºä.u!]*JwûíLcMý‚M-™ªúÔõñ©¢Ÿ&—L=hw6µ`êúÜ¥Þ‘÷*U×J¦îS×ç>ù“½O=“÷©gò>U!L'GR71Ey86ÝÒK½z©þGêAKgzRo‹tJ(õ«y˜v'©‡÷ašÊá<¤~aéÔU?u1û©_Xß¥~ýTÔOÝÈ~ª°ë§žÊ~ê©¤Nf
X©í õ£Mæ)©Ë3L=>ÃÔã3´Ç'SS¿Úaêñ¦®x2;L&I‡©'r˜
FæØdó(uÕc7Y]Ë§^»³E—¦žõ?SÁŸÉñøøì}ê1§Î&ÝzŒ²TØ’%k9Yê]¥^ªYr×©{˜R/Ël
H²A²æøÖš?S¦^‚ØROy–z«¦[”ROÚ$õ¤MR·p’º…É5Ù<6I:ÓÔåI¾L?§^+ŸS—çó(õœ=¥~ÚOÉ|ÌSê(“_ÕcbÉc›$drž2m8-L’»Et“ä*gýòL’kó;²I2ï÷ÖHG¼ÒDkÆáOf¡s1\¦d%3˜(,02"1ÄŒâ÷[#/Õ_’%Û Q†¹fƒ”€­Ú …Hy×¾~2[óãQÍáZÜGÏoÄ-×ßúž4lyÌûhŽû
¶FÇÝ[£ãž‚­ÑqWÁÖè¸§`ktÜW²5:î,ØwlŽû¶FÇÝ[£ãÎ‚­ÑqOÉÖè˜T¸5:î.ØwlŽû
¶FÇ][£ãÎ‚­Ñq_É—htlîä¢‹lk<Š™q¨&®ŒW‡dXAÔÌ…¶\‚”ÒŒSÎ½2DmFaÄ)21àÚZm±^@BÙbgü-ŸÛ¾x\Øè*,"ÕÒHàh51gR”ó	–dg|v4Ûœ+Ç44bŽjŸmJ™WžuÒHþ•tSc²1Ù0x>{_²Ñ­+U²ñ)Ù¦”n*:£èev’Í5©hùœ–eàH¶[T01$[’©7Z:…žL·¬ó7Èü¦~°¯ç$UÏ•6AXž‘†|Qìb2ixôhZÉôY2)vùV¡Ÿä.óM1X%èÅQXå¹“Ã­gÏGd9¯¨TÔ
Ã‰@Ö	$™0
 é• BK‰’ #j™Âa¢Œç’'‘$ì!²æ¼L6k9º« ´bL®DJ‹#°À‹
BË	hÜ¼
”ÖêImy­ãòZ¢Fü®Í;Ó$¹µÚSËpí-Ø2\-ÃÕ2\-ÃÕ2\-ÃÕ2\-ÃÕ2\-ÃÕ2\2\s¥qškÞÑ‹åº<"áu6šË*„bz ˆ ž`Æ8@€b$=QXÏµÃVcMò–{Qz*83¹Ý4×%’[WBi%ç,”Y£´˜$+”#)y‘Êg±%²ŽJd1V#Ry?¤¯ZÒª%­ZÒª%­ZÒjoÁ–´jI«–´jI«–´jI«–´jœ´j˜«z¡Õqx©ÞpÔ8Û›rÆë0†Š’Öd¨¤ JAí5ÀAÀœ†Ös@ `Lz°#¥°—HJ®•¢ŽK`±WRy»-réoa‚_ó	æþNÆU=Ýu°VÉ™1r5Š)&Dàr6oJDJÅÍ'µ›¹–¿:R:oZëáÆÙu+n»'6vQf²6ö´“ÓªÔUö¢Mè},¥²Mè}b˜ýí%ôŽHqÄë£9Ü¹vO½<º>ÁccÑ³ÁP‡óZ<…I1ÆR(CòNR	<ÓÜ9…Ãºb&ÄÒxÃ<Q:Ë`èÅ"Ð+ŸÉ-pPÄø\l)ã¬"ølqçñq'©e7]ß”¦!g‹6[´Ù¢ÍmVG›§@š/d_fjx`Ä4x °dZË0ÜxF­À@,<ÜRÂ1…Þg<@¤r„Z•¶ce‰Ý,?„I]¢,FtPR&{ßQ„Wc¤A£óÞJ™Æc.Oaž…©ÅGÃu‘.wc_j¤:àqÙúÞÌKuPc²ó[/wlÀç€h²SÉ95Òý/Z|‰ 8ÞÁßØø‹Ã½ù¤ŽxA¨‚{ÖL*nlÀ¼^‡ÿ£Úðÿ (#À0§tü‹€\"'ÃO!P[Czî½DBue`W‚)LÌXCÁâä¼î^¼B¨¶`ø¨†|QƒP}¶)aâdBµ…Æ-4N(ØBã_'4n˜.Ý¶/'”7üPÕ…Ë
#ç#Ê
ãM Å, *à82FŒTFjÏ<
Å(ÑÖpLBAN¸çr'\Îçv‰py6°ë€Ë8Ùÿ€Ëµ(„CÈËp™ ™âðìhvó3V.¿íM²ÉØ©Aç_n¬Z ŒðÜÿ£:P.mÇžWÕoƒ­?Ê¥Nö½ÝNï¥Å¿­çAëyðÒ‘e~u4Œ,ó>^(²,æv4d9vwÓ¾Ÿ‰õ„)å8c4
¸2º"!òŠ¨çZ3ê']Ríç^jéÆ ï‚–¿“»@l¹Ùu€Ëä—U„ðµ—UD V¸Ø;\®œÎ–Œ=.;§Ä+cÌ•]iŒ]é¥¥c÷léØ–ŽméØ	šgWa³¨yÖÉË„ÍóÉ7»qÏŸ0Cá©âž9(g¤EÐ#ë)’VkB¥åI!™ÆÞ(çS‚jÎ(cÈŠ­€9ÎêÂr1¤ë€È<"Sœ§Œ)Ad†$-»+0,Ó òò ¶Øø¸ØÔqTXnG# xÙ|‹†÷lÑp‹†[4üòÐp¼›ÃÁ±õ—€óYùËAÔÀ\!o!ÐŽ)FÂ!”2ÛjN PT ¯0µÒœÔŽ‚¨ H‰ ø·C(ÐæEz#¬Œì:àpú6„X‹ ¡\‰ AÒ¶g§3÷G­?Â"!ÔyÅöl?ö¹
lº66ÿWòHHî¦½­GBë‘ðÒádÓ.	¥êebËc:%LÍp¤LI„oqôp¬ð¬±gÎaŽªtX)ÂQ’JÎ™ÅÜp™öT(ŒÔae°5ÆÂPc[æíæÓº,X9ÓU J–üKDÖãk†Vâk˜âßZ>‹ÝüPµë‘ eüî*Êò~ìºé¶}ÿ.AÉrû;Ad¥ZÙ‚ÈD¾`Y\áÇ¢ù‡gÓ:3ŽUÀ £u¨¤Þ'FR "D·h61RñQ”C `B!’ÒRàZÄcNrJ#,äPJI,s*-!rTü9†gë¼ûéÍOÿú)@žñ°7¼ë¨ÇÇ€r¤²'~èû mÇ©ìkg2êL³]Mì7Î¡`ÞçMhëa2zlf>õz·w±¿XøÍÙ›·óMÜ QöA¥"
ñœ\€ˆ#IÖB¬B($¨ŒÃ™¦BÒ½qŠ±u‹“ÒÍÏÈmq¼ñßgüÃéª…ø6Íõ`°6Uà_:£;/Êr¹Ùàog§xWµYÑÝoóÅ°«½WqåÙ+´Ûïéù–¨©í™ºÛ,ÈŽWŒèÝ©èJUã‡ßŽ{ÕkkzRŸëÔ[5ªUÏ™ÑØÖ¨9»K»ñÚ¨_½zMûÙªéä~4®UÕdY­zã§âÊ©^ùÎ{Ù¨7·[ÊãÑS¨ík:þ5œÄZëvîô~w2wyõÊƒ‡š½ãÆôƒHª^u®RSãðÇz£g7,Í0‹tQõªŸÍÏPcÿy¤«Wz…þ«UÙ3Á„‰Uµ°7ÕØä>`¬¾¿*ÉŸ7_º³†êU6¶›¯gÝÚñ¾íNvçxÜQZ³ã*=Fªq÷±¯¾ö{»µÊÍuÝ] ‰•«e]•}©Z+3ýZj¹Ò—˜rb~û&¯žËÎêuó#Ð}ì™É4Â	q77qU. êVÍ>×ï¶\õ ÕtyïgG‡TsH³³Hü–vÈAÊŽ"a~?…¯cÔÏvßo¿¼û[¸ÕnYâuøá×*¥ÿtõ
ÅÕä!:Ç* ÈÄ±"¬*fí©Z5§“^?«V³À·¤rù÷¿¼}ûÏß#iõŒêE¬4Ò8Ú-Jì0¯X­ÂP»ñXuï&¸Ê¾Í+V©sgº•:	>=ö¾è©ž8•j†´j•ðßÊu#;í»ÊÕŠ­\-›èpt«~b¡Ú£Î{šÑ‹)(çÕ+NÔ]Z…¨ZorlååœT<Žs<Ÿ|–*„à—ÿý÷,­æ J7ÃÑ¤ç¿V¹˜Õð®ò2ç•Š«©jÍbƒjWù9¬Þ»OAHßÒ´Ú“ÑÄH|Tã,×0n¡HìxcÕÐÿÇÿþø·_?ýãý§üøû‡¿ýþé×_~ûåSX‡ÄV£¾£,4ûg¿êIªr«/Ë‡ÿû×÷(¬¹Å‰cÝT›¥Ntså”m›éË;JŒ'}ûêçßþùé?üðŸûäSñÍO|&ywØ¦ÙøîçÔíÌ9]·1ô˜`ÍZ°Qã°v`*¨a@cåä
K'µä0üÇ‚æ”×ZRÍp@šma×Þ÷Â´Æ=—åüÿb•¶™>Þ»Ny6{“Œ§Ãœµó;Ûé—û¸™«Ø—iYàë–„æî!k¾ÊaÐ3Ã‰ôvÉ® %ãdïû½Ò‚®òíñXµ–…Ë"Õ
—–ýØôÿRaÅ¨ÀRÇª¬ZUÖ¨WãWÔ™ªZLª"RYÿHW;*hÕ”ŒjºEeÝ ªJ
²S o(žËt‹« áÊ 8ÈÖ€¼û&¹'×À¸GFÅÍÀ8$vã·ø£‘ÎF}7Ùq³U<ñÓ,ræñN‡yå>ÿqÃ³D—Ç¨è{¥£ãBÃS¸Ÿ0í‰`[®„áO¢!ÑX(%žhX€…1?°`Ì
”sÀa#´@Tù&C‘êv‚)åp5ö¡pZ$<Õçä98lOªÀCV9ùÚIàaC."FÁ	96M„·¤öÁ¤öÉÙéªÄoK°^6ÁÚ<1xÀr>šs€K‚ t3(€cÀJyËt@im1öI…ˆgÔM€ÄX€=ÆRo2öÛlJ÷eÉÜ¹Êœ/Ëf¤9+Õ>ëé2ñ¥ÉøRº
/)‚X”%`ˆöJX[Å^Ö†—ˆãŠØpk^lXÿæE£CÙyÃMÀÙÅÉœw¶ü‚½ÿ6z(é¾>tuß¦¢f¯¨¢f-g¬ÿŸ½wërÛFÖ†ïûWp½7ã¼±Ô8$²¿Çöd<ÛI¼ÆÎLöwÓÀn¦%Q›¤ú0¿þ-Ô±%
 ¤v{¢$Ž»¥*œV=U(T5¬7zóSÕïQ­õ'0hŽe?<“ÐÎ{cëù\}MWÏø€OŸ#Žä4ëw"†|µo#‰=ï¼%\*­4¶ÙµÒ˜+&B´J0UÆ¤:ÖF"¡#E%:" ‡§8d‰ˆcµ¾Y¹“ö©È¯9Û»j@©T¦†‰?þãã—/ÿÓ…WRÌeÙÜÿ8h³é4/ªÅÅ·•Ž/¶w\åm¿Ã‹‹öÎ•Ž²4xÌgÁ¼³WïÖ®×Ýßdê&Ð°½T5z¤R¦,My!añSØs72Õ5@t¥‹>iØ7UõhCÝ/»a)^‡¥±p;,Å1e‚¬ãRa´–Á‹Ê÷ŸˆÛ-=¨wç Ù—Îgá-%_ŽöK¬P?„A8äóyŠE)X¾ÕêåîRÛ»äDGs.§ß^ÍÖªÙ¶\kˆåc¼RG•7 Ö
»{;ú¾,-éH7"ºçÏÓeîðÈ]g®òÂÔhÄa¤¨ÅEî½ä+á{¨@§»U¥Y2š™*Ï«KK»iõÈ!l %r>kÝ¤Çàä¹Ž~}Æ´dê<0vÆL t~?pÝu–n0Ê&³·=çylR‹D®­(ý?MBVÜšÇe\_°ùoÎ´ãë»²óë‡9º:$np>sõÜ‚Ð¢ÔÄU1	µ"2åšEqs¤R&ÂD†±æ"V!‰QDÒ$ Ùâ$NŒŒBÑ¡}#l"4Nðv„1J7gk%_C‚c¼ÿXú)Bs÷~5ŒÖÓexŒæ]qëdmÏî ŒvÄ“àÓ‚µ=‹ðâÀšë¥¿9js¥ŸÃ7W_ÙŽsdšc/?jïsÍc¤¢:õ)ì…e8r¾iñ£³ÁòN~ˆ¦©	±â\ÑÐDL‰4ášH%ÂJ`sŠ
Ã¥H˜”$¡‰	a¡Í_ŸÄ8a; Úßa:¬¶ð¨FcÅèÍ§}ÐØŽ¦^ð	]ã!bëÅHY(ÖŠ‘†Ô!Ôb³œ¡OÏ£RŽ}JWVýÈø§nó0tÈiÙ×`‡èŸ^G)½„2l»~GÛ¡š‹,&Th*”A2%F%Ã¶'ÈDDJø›%2‰iL9‹”Ž1UÃ±q²Ë\þqÝbtò¦¨EéG«š/›dŸk{6 ñbÖÌ¾æme´µOƒWZ@ßµæë|#^4æ«5ˆ­_vdCdìqSðêþÆL@ `ÄÀ¦íþîÂŽ	zÄ ÀòÂêÎÊ:Q`§|ñ¡jfµˆ»Y›°l†Û¨ »S{Øu340€ÂÜeæ>Hge§+GYõBŒjî|ìQoˆ:~QÙz%¿PP³!pÏçnŠc¾ˆ¦÷Ð,0Š#~'rý7)©ë¶{5ú,wKÙAa!;hó`Ô%H…ÊîãÁô±ºË÷Ù’|lô‘n,¨½‡«tõH÷¥Ù)­4w8àX!|õæãç7Wh(ÜÛ^°Q¡˜—QßãDn‡!ŸÌl\¸ÃÏ’Ð¿ûñ·ÏWøjßJž‰¼˜ŽtLôXVf¬^£9å±…_Ãï_þ^à±1Gú’£'žu?…ÎŠ¥—¢†šO|Ë/7Sw·tù¦ªŠ,™U¦ìlt…î2›ÜLZ]ÙõM5”UâÌÙ“m6tw5ÊïM±•o×ÜÞæ›ý¤I=ÝÕ×
á¥L‡jßØÖèÇ~ô
¤\eoÛÓ¾“M›HÈ¬ôë¸ngÅ¿KuSdiåÍ{—F½xÍd03Éàšø³•þ\ž‹’™æÚx³e“Ê\räÇx#ýè3íI?õìàOúÛ|pýY<ãmîG¨Ì<ÃÑ“ÓT˜‹h!›ø½†#Ïa|íI?›ø1Ld¢”ß&žûwòèG?õ\£2ó¤SÖW|–÷~} šô¢ÿ÷Í ºÌTÒƒÍ“e¶•~—ü0™Î*?êK9êÎœêR&Õ•ÕJjx»ïa¬ñ˜˜Ž'ÏH ±o÷-ÕO9–£‘O¢`JÌÔÇØ€º)ª)`V/®êf6N¼X¼ˆ9C^3ç±½ñYÖRúoËã»M,ï6±<¾Ûä.¬Ó‡oãØóf=}·R]îPwó‰ti>‘uóÕƒ¯\H´Sóºoó×NÍ_÷]'©–Œ.q¼uðÛ‰ºøo[z_&"ÁÈõMhé±‹ëgVsL&6K°ã‹Ór<zÐkî1mR9ù§õø{uÒ°D>,ãM=F• í½]Íá3‹›¼Èþmï<˜²É­ô˜Æ­yLrYøl¨¼H2Ÿç7-r?êIåÅpçA\$>Äù,k¥i9|rËâ³UËJV³Ò‡Ág‰àå,|vÐ;‚±ÔîøÅR›¢Ê”×þ¿»õhÿþÆ˜Ñö•Ü£ö¸ªæT;•àvêÌþÐg8Ûâ™¶PµÃñm^9_%=U¾2NÍŸÅêI~gÆÎô luŸ`”KóFíD[Û©ÁzždåM´bfN]Ì¼4»lÏß]ßDàP£ÌYŽ[ò:`Õ£}S>–~†ÄœÉ^ßž9o9——ýÑ0Ù Ž¬ÈJò?òÇÄã­³* Oå=&^ä”y‘‡Ûµe÷&O÷œƒÌ©.“ÙØÆœ¸Ž(-=÷!0¤¹š•ËÙéá=áòëËkÓ/¸¼ö/pM¥ËÊ§Ÿ"·9ìûHÑ'›õF_Žç) õ4í£nœì½°ßŒ©FÎdü„èÍØs7Ö{å¼ãÅh÷Ýä)v~ÁkêØ‡z‰½=ªô"¯<8@{,MCíÚöÿÞ¼u6´W\{hqÝéKUäî2b•Á¹‡ÇÉv)¹ç•t‚)7Õ¥LÜÍK>r†(–ºôj<q66-ñí½3"±äÅÈ}c¹ûž·Ä~Ó,Ýmºk&xµ®sYB–îoTÕapm§ŸC.h‡À0Vqì1…±m÷qï w×>–˜3¯¶½FÞ¶sÜË»íšjô¸wjÿþòGÔ°ûêXrJ¼È=Þ“{ohqïëJïÝéu|féÛs=ßGœ9™á™êé¢È
§æ‹–íÔð»ë#êiÍ9rj}”ô<9)æQÕ³ù±ÓèÇ}G?v2;ÆÚ†ƒç1p¤ÎŽËšøÊÙSP“›Gg9ô·‰öhÝ÷Xü\Øc3™õ0*ÇNvÜØ×È†©Õ\î`¯=èñöŽüÌãIßýïôöŽíi1¾¢Îó]Ò»-hKï¾£ÞƒÞg@Üo@ÎÊ¨;ö÷›8yú'Óžznêt¸?í{¸?uz#§ãK¢¯œ5cCîü¬€<‘…ëV jg¯ž¥½b±ó¶z3‚¡ÇÈgðfÄÏ,½_ûÜ³}îþ¢Ôô‘çxbt•ež~3ð}WðÔÜÑù‚…ûm«zoø±0tåÅÐpxö\UÅéÁãnü4<Ò»é×GÁá¬¥æÂƒ!Kü–×I5,Î8
ÈGÙz;¹çqÑtœà³àðz‹ó±Ô’Ã\Ä¿g÷¸å¸Ï*uc|aUì8WíÖ½å­Kûå- g	Ô“j»ÝÒ=˜Ê	×V»qí6êüúz‡dÏ`œ«òr"ï\ŸSCí.ÁzwÒÐ»—†~qrè1‡Å¹¡+ÏÔÙßS{ÍyšðÐ‹Ük…¦‰÷‹ïútÉÔ=Õí=èël¹sò†Üõ¾ËšÏ}Â|ÔN‹ÔÉvÙ¶gäNÞ¿»¢ïÂ8ÉŸ»²góNÞï‡{ïæÿ»E+ÝÍÏ©V<Ô{íŽ=wÁÑÖ.ñècÉáÚÇâ@Çµ‹ÛéU)Žm×¦F:øÙ,#9õ›w9›\ÙçºÝ$ÙõÈ¿˜}ºØR\‚}]íICX:ª,4á2Õ¾Ui8î¥cÛ‰™\ËQæØnríÚì+á(·A\ŽÝO\[Í	Œsï…ó¢©#eë}u€rÝ0ªµ7G~tlXË&!q§UÎ´®„f`m×‡¦s»wr"¯eáú.hçí`F®„¯¹ùDjéàÃaoãºŽÇ™ðêíwÚŸ~t§ýí³+­ë;o\_#ãºyÓÌ•°„"wj•d©ëpüÎÖ™ÐýÉí_ÿáH{íúò\kWÂÜu·^ÆÜ:¾1×3×FgÈd®s»Åxv{ãJ~ã*Æn\·âë¸q]W-’¹îÒÌõ¼•“‰¬UˆËbÞÞ¸n¾[×-u›ßºR®ëé¬;GU1 ']õ†¥W˜Î€Ò²è¼Š=È} ˆ¥¯²ÄTÒ™ãÎqqÆr$áÏØ±á±+Ä»¾icWõ?ž87éúòŽ]÷ÍêáHyïÚùÄUhMÌ½+¥ëZNFW?¾w§ýå£+m>¸6Sd®
òÙÔ™Ø•p6özå-=¼¿ÜÜõu·äia&êÆƒabÆÚ§ 7•s÷®Ï'wÝÍy‘=ºj˜©«‚™º¾ñS×?u}ã§³‰‚=T™bboº8NÌ2ùx"j?Ñ^¸¾Îš´t}¥t]½Ò––®À t}Âmr!·Å,ïXÄÂµiK-¸3µ+¡«x¯\T%ÇÙÈq	*W5T™Ñ¬ÆûN­ºÊ™ë¸Û%æÅâ½ƒí‰7ˆš<¸t.mw½nÊl²-Ryƒ¬*¶Ÿyn’¹tYÍ&+÷«ÿ¿#¥Mw-cÑ?q:U468Ñ\±”ãD2c-¨"Ú$'QÈl¥XÃŒdZ)ÌYŠ¹ŽJ3"æúœ8ý?*qzä\ŒÒˆñÍÄéœ¢˜¯&Ng![dööHœ~®É±`Þ›:=_Jêôcâ:§N?~y‘>©ÓÍ Ü«~mã[fTwªÆµšüÜŸc‘a½7g“hýtEÔß/‰Õý9VS±Ÿë¼¸ÎÛióª»×ukpÿ9½ú9½ú9½úv¶szõszu'úszõszuwžszugêszõszõ}ôçôêçôê»š?§WwÒ9½z'ý9½º;Ç9½ú~êszõn–szõ.–szõœÓ«ï¦?§Wï¦>§W?§Ww#?§W÷çòëëœ^Ý‘úœ^Ý…åœ^}7Ç9½ºƒsçôê;ˆÏéÕ·’ŸÓ«ï#?§W?§W?§W?§W?§W?§WßI~N¯¾³ñszõ}ÍŸÓ«»0œÓ«ïoþœ^}þœ^Ýþœ^Ýåœ^Ý™ãœ^}?ù9½ú9½z7õ9½zõ9½ú~âszu÷zN¯¾‹ÚiñÏéÕw7N¯îÚÇ9½zWçôêÂszu'ÊszõszõÂszõ'´çôêçôên„çôêçôêN‹yN¯~N¯¾›þœ^}å9½ú9½úSòszõÚszõ5†szuÂszõszõ­„çôêÛÈ\º<NzuXÐA9ÍÈó§YL„•¦
QIe1cISž&Ri&âÄpš°HI%8|JDÈ#i¼#Íú›ê3Lg5»z“9}wfõ/7Y9Ïâ½LPn3˜ïjë%$&rMLNE³µ´ä”¯$%§QÇn)ÉÛýrNMÞ'59á˜ò>™ÉçË~ÔåóFÉTÞ?©x3†#gI·é««²Í$ý2óH_ÃŸ"ç!:§Y~š?ÉÙý45roÍ¡sUnªInÿ:iuÆ˜‘IÅH*Iµ‰Â0‰e¨SœÄŒ¡(ŒMàã(ŽDÄQ:
©i¸Cm¼ËÕl‹Ùˆ¾ÃÔ†ÞÑÖËPxSmÐm¯g!l]q„!ÑÕ†!E‚»)»eVåi³]^ªævpœPø2´Ga‚zi»î_Cº÷ïó8ªÊ¦_}nhËfS¡BÌ’E&ÅšHÅ¢D«ó$’*4‘‚—O¤šG”J	èÖpÅ	U|—ŒjfekôÌF¦–+ïÚ	úÉ¨]í¼ùDœa-0_“NÇ(\‘M„aæk›­rFµ½P-ìà^õvÚU?.¨mÚ<eõ¶‹¯Q„'‘ÅuN‚©Û‡´¯¶Æî`Å¬*äxf§–ìRõ(›ìÍ7'o†·Qv£·Ê0u€Þ`rýüZCÇ	A )ÒÈàq¤0
™Z§I„"Œ§$‘)Á"Š"Ê4'R€|Ltš*žØd{[µ†ù\Ïè—ŸŽãéhîeèê¬?dM ¼
WkµaÂ#Gd»Ø7gÒÏ1‚zªÅÂW‹,šýÏrŽ,¦eýøÄÞçCÛNžØZ”•ëÓ^¬ÇÇ÷ë®w»ÖGoý`ƒîŸ[1p°¸cM8gq+”¨„
Á`ÐBKP4,L#01´¤Ê¤’0ebn0Ý¡~ÿW"äþ8jagc/C)„ÎJ!"tÃ¨ˆ£˜¬‚ÇÌM)<ÜŸµA?m@ûð„?®x¸ÿÏ’ÿ¿cÜÈh7_õïòÞ’G®ä•sãÎje¦ÊÁ8+Uš==HóIUvP?Àž<`ÜÖŒ/ÂažW£l ÍmªŒÇ|¿òÀ¶.æü9{jF0S"¤‡SQi–°D
’0¢ZcF±LãTh–š(L‰˜ia°ìw9£>æe9²¥¥m%ç¢)¦ÈÑu^dÕÍ8xUO6ŸZ?x-ŒËï:j[×ëÓÔ¶n#ÐÓY1ÍKŒºû©ndµøÊ”ZVrQ¬>£¹‘Ðy
ØòÖÅ$¸“E&a\ðY]ûÿ¢e“¯ƒ¿ÍÒt,'*×u;ø“À´yXë¦ÀL½~ÜWÓÙb|6X:¯?‘…-•}ÑÖßü£¬Êè1w2Õ¥´ëYËÑbÖ«ÙÐ°\—uymX¢2SaKvƒp7ºé_›ÔVd-g§•Â.‚>Ÿ¬77¼XSâ­¢k.6ŸÙÉtw	ÊûÆ=KÀp_^çùõÈ\6ïÉM.Bq.VÍ»ú#ÒíšGtÝ¼E«æ]ÈC¼¿÷òÕÔoá ~ÿ†ö½uÑå?øòüz÷ÓãõTW'yx)nyŸw/¼Kïíˆ{Û¬u*%:Õ§mµ­s°.cl;j.¾9ôàÕª6êØMš‰G“x.ç‘K0„66kïÃ:öcÚx8µùëB«îLË¹Öa·üôÔ¦µ%ÏH\íÙ 	Ø¤(Ä<*ÑF‘‡ŠhŒ˜!|ªÐ‰cGqŽXJE
Ÿ+ÅuHù’œ!É‹$Ÿ@ºCLÖ!	Ùï\ØIÜ_”ôt.œ”x{ž”ì1ôÏ äe€’#>¦m ÄÑÕ²ŽN¼˜æ0Å…é¥à+#äM¨‚ñâ¡ÄÃ&ðåÊÊ:Dß³H|Ï…!ÒîŽa¤iCT‚¦)a"T zLÂuBDb&!2‘<Eœ¤ŒÓ8J•D±&»Â×ƒ6}{`ÏÀƒ*ÏG€@¥Zº*Œ½xzüúöCðalµA—¯Þíº=uÙË-ÝÜßdê&Pr˜ é³Ê/þoÓ©Žû¼¸µ[¸!«Ò"Ð£¬ÔÍE^8Cã™w íjÙl©¦y6©€}œÏ&Õå¬þk[#)ƒ"Ï$€Š¯Ì¸^˜I6ju	Í”òÎt3ä#	 ÐbÀsßøF™³€Îæs8)iŸÜ0ËwaX`*âÕh)ûBt{4g£¼~€r!8VoÐqÌ÷FM5Ã4oÖ óòÀ%o>È}+ŸE8µ0„æŽ.gÔÒŒ¯[[ùIÆ®~Ü´£oý5üâ¥”Ö,š=tÇw5´å Ño{î”åLN¼.˜»±œNMQ«Þ!"½ù~”¥éËûîç+|…È•ˆ[YVç±¶ÔóÃ2¯DL¯¦(òÂgEilê™¹ÂŸUŽŸ>ýôóû+X”þ¬ØuZì”Úgjk,Þ«¹•›‰wi”5ÍŸ»óA^1›¨} Ís—¸)GY1eSMÊ®öÐ¶­¡î÷8žÜÉœÔÆ¸|µ3f›’ôü÷šc-Ãî F,TþÆ#Š"…T2%7L°P.Gšò0Œ(‰AGq#SÅFó]~º3Æ=c\ŒËàF‡ÑãÚ¸ œoÇ¸Ç‚†ëA(Zu²ÁGœ†ûï,-á¼YƒÎwê[À¸ýüo>‹p0Æ%!‰Nq½$ã0®gGÀ¸gÜzÆ­gÜúgÆ­$v·.Œ r{ÏóF×[xp8\x®³Ê–°Tl
ã‹ïq"µ$†yÀbÎeš£(¢ID‚Œó²J£„J!F‚’”ÄL§Zi§!KBØŸa±Û!ôR½/_©­H¬4ÄÀB[AÊð{ÄøŽ“èP„°]×‘2A”b®] …x,öÉ-@b8p}ÝþˆÙc1EÎ4‚päÜOˆŽ ûö{öEÔ}å^‰mú$Ã±<yò‡Q•7Û2XaTÓä$ré: È_?ùÇû÷Wýê˜Ì¨³'€ôOihÔ,µD9þË£Ù&/Î>¨LY=I/õ5>”¡‘ŽEbX’ x¢<’XÄ©Ñ	BZ«D¤„¤	Ø˜'¥:5
³)ÅÔÿÅÎ³F²‹ÅÛ	ë7I/Ö'[µTÎ‘nõ´é¯± b×ˆŒ(‰[Y Œ,Ø
Hefå{Ã&W7Ö9páÙ(8î¹Ð<«çŠ_hz{iQµ\íLú²”¾{’Ã<W8È¿³)éøþ:ÁV9Cæ³£úì¨v	ÁÍõXvY˜'Îºä²ñµEK/ì=òÁP”"rÓ«t¬0šÊ4‰¹á
ÑHq­X¬5^‚à‹TÇ:F‰ˆeEv°×ÝóØõèÞÂÀã°gïŸ‹p5>•Q‚bÈìOðŸå¬¢˜œìí ßì=Ûq¾Œ{n@x„%?Z©£ö¤ª+÷Ç6žaã6>lt5p„k” Æ
3§½´Bú²8ö,´ÖÈeêÏíµêK«[Sd×“¸ÆÙ$ËÑUÃUÍÒôòfvm#°½à¯Ô/9&?J¥úÃc1$G(Bb!È½®ë£˜Ò”EI’
’ ‘0É$—Xdcã„Qª”áRD)|KÓEÔÆ«("‰Ñ0ü£)nÍÈ<ÿ³{H ƒEiŠöây•¾yèž¶Ìªl”UÍ|ûöÕ÷ùi›½hÁW‹ › …&TÀFG´Øv'ÁÇ¼ÂßÍ›· ;«†AðåÆ\4ŸÙ\ “2+«æRiê>¾YòÙX‚Ê^¬/ëÖe›)ï_eã0î‹¬ªÌÄÞ¡·÷ÞßÚiÕµŒV?Î`®Ðç‡*¸©#(¦³°g ó1˜-m#9²‰Íæ©ùæÑÁÛáÅÅ‡4xÌg ¨á‹¼Tm¬Ý³‡Å ’¢µ,^×ô÷ÙhÜÛ@ßBô‹jå1œ4Ï_6¹ËÊo•°z81ÕeýV4ÿÞTãQg@²Vö Šâ˜ÅÛC#„­2´Ò˜¯¥ Ä»?sØ`õí0ÏkúŸšGü®~Ä‡›ï–Ïøò‹S'ô0ïšüÁ—÷9¾…ìXºAn—„ÜÝ¦›õÐÝv[áÙÝ>ÚY–lýë>J„œô­(Ã†hÈú¥£‰å’“(¤$I$æ˜qâG5Š•˜`ÄŠ”®QŠUšH"ÉÉ4JÈ®«Ü—w2€ÙN*[UÄ¯¡ÊµÍpbì$¬MÓ‘„¦Y’&ÍJ ^™§#ë6 _H5Ïcñ‡ý4OÝw«AÊáÅ¼!hù}YôFŒ›¢
Ì4Òp´£ƒïj FÊ¨U¯/LÊ¤°Ñ{Yôe”Ã‹ª=+lŸÿçÏÍÛ:›Ú@94Ð[Z«)…5²ê÷ñ¢&¾b6™ ãÐ*ÑvAàÓf e3Ð:1€mesíÈÉ£X=.Á.ìŒÐÕß¬Œtžœæu«íèîaäÆ*ÃÇZñMAõÚº ÿa£›þ›ÞåhRÍ¶ÚpÕÚÏ*¾z‰ë`€“<˜˜&NrZ˜©lš‡©g×ÙDŽ‚F´Í4úÎH`+¬¶µmÞØHE˜_J;…×æõ…m¨yA€¬0ÚLGùã“G1> Z‘0ÞÇvø…çwËU¼hæÃ-L«ÆÙ<V»×_Â>5#^]9ëSÌ&3»­rØFÍªÓêõûûûáI^Ö¤—	Ð¥Ç×ÊƒÂHÄ¶gòY$6ªaóˆ¯8b!(á{½‰ÍÀµŒi³Ð¼ìÒE¸·Ìõ`¥-˜wÆÙDÃ3{õˆ¥+5›nU²x2VÈüÔ²ÓáÕ4ÚÝ›d Ëq§úæÃ.ÇU»V]ìPK[›ßM^ÁSjßˆ¶ñÚ¿;‡ÙôÒ³åA­£NÝþÓ|üÃ	;i_óÓ÷pê‰ÔŸOk9˜Žf Pž¹»gâÉ;Ë®KyòN=úÚÂ©Û?õ$ìeŒS÷QJ Çæäœ|³dœR*7œx§j¾>½;¼ñ¼¼Îž¶>¬Öð¥³ßGüµÏ-X¨g“Ÿn;Æ§GÌ±Í´(½Ô9=k?£+b\Ü]5ÒÇíÓë¤±#é$hžP÷‘AóHÆµ¾{”Û8:Æ¼|s½ý2Û±ÎŸC<‡F3ž$)’!ÑL+J,…-„“¤á'Ê¡´ÖqÈâ”ª˜„s)˜‰iL$íòÏÀ„š˜™¹éétâ°ˆ½©‹Äú°¥âïüMaÖ3sµžÂ¶öÙšõL± áZ}L)%í½^ßBg;º¯#&|éõµïe«öW<Þ²Þ_>)bÊißÃQ²nÁž‡¢*8áðG1MáÔ&ªQa,©QˆDÛª*œ*#Œ€(‰eD™ cIwE¾ýíÓçÕ"Zÿky¼É~µNËI³Ø-£j^XdKU»ÿšvÊ•†ÞþTó7SäÖÉj}“ùÄ,?©¼jv<æÚÔx°¡¬¦¼T³iÙŒõÖŽ²»–]«åÅ‘=žÞ*ÃBV@F[`Œó½×›ë¯p4À¾'xß”Èz2Ïƒå£¡§¸ªÇÐ%¤¶¿±»Ûr9¤óhs
‹×¼Í†}edY|½ªwîU_òø_Ío!FèJfùuêø´HÞbxìí&¢Goò
Éñ%§h”ž¤QÏ©4EfÊã7ÎN1âð”#ßdtÊñFÇoRœr¼âøM*ŒO7^EOØxž¦ »¯>á‚·}ðSõqˆ$>A«áIZå'i5:I«b³Õò Þb)m¡´q=@ì	né[Á'S„e«óùôõG’]ÇaÍáÜÑ¿_HYêV¨ÌŠ¼omOoi(õ3C)QlsŒQ*ŒJBLY'IÙ€]Fiœr¦`ƒbL“8ŒL”r0EÁU<Ö»s‘‘w6Nvz“©2€5,àÓËÓÎ¾	SÚÂ iv=iÂyÚw"¸É®oÿ;“ux®ÎÊéH>Ö1=µ)ä³j:«†ÁÛEeªr6æuèPó] æÆµ©Êy°kS†:hêP_|ncW³É`lÆ9¢I>–ÌêJT¯k+¸ù¨~Ù‚WŸÞýõuð	^ýÏõ´ŠÏÿüé»áÅÅb~3Ñ³:Æ§Žü5‹Qu9°Ñü·±Ñ™l"n.*Y'«Ãª:Ð'O>¸‘…¾·D6âidŠÆ½¿±‘Tóª\'µÏë=<xÑØa‡3¶Q»+ÙXŒCØF®±¶*_K5fMù}žÄzˆƒöP¯JœÿÐ†Vý?@ßŠY¾eÎWØŽ1_¤—t´Ìí0öÜÛ.Çv7çVåÑ§Y+îëõj^’AíÖš¦jn[uEóÌY×èú+ò•jÛÝþn*2ƒº½3ætß«›ÈÈnJ;9´˜ÆXä0ÌµŒ^Ý¤c‡æÆëºíQõäxß•¬ìÁúÆ±Ã`§“kÌë¥Ú3âÂWŸ~ù	ó«}ƒ^½Öã
™Oóî+³õªÛ¦¢rØK-‘s£*,·þž²ÄåÍØÒa°ÿÞGsØ-:3ïVªnž<rœ»¨z¤ZèUIªt$§J&Ä`DSÍR •)N5‰H©æ „¢	1QQh´Â„Qtg¨z†ª=¡j´	UC1GšëP5¢1§ÇÞql3W¬Å1{K¤mƒmîGg°ºVã—V÷'‹8"XuuÏ,Pë†£ÀWÇa,p¬+ý
 õÌdàF½q]¹V±î	ÓØŽ}:ØÀµî9V®k–ƒ ëÏ1‡¼/3Ã|úQ{w³Y»[¯î,>zÿj¯Û¥G…·MQí¯àM’œ!CÌD’Pi(
•Ž#Æ5Â(¶1\LÃ3Z¬0Oi
	—î€¸+·[X—„hü³Ý]‰Èš–3ˆµQèíXëH¤f¦X•¼°w(Û
-‰ÅœežV5¼l®»ÎÊ6“A=ã'SyI@3võ‰’ÈFX®ûD‰À8¤«>QŠêÒe.@³^¾³gôðfÂú¥ýÁfó Ž9›Fï%]–u¯»qjÙ¹µAªŽÝ`÷%	ÿ§:=v‹“ëc·X¹ÁFD»Ñ»cÏ»2Ý—·ü[tü-R;v« ÐNÐäà¡¢>MpÕhŽè`(ƒf,ßþ)‹õ}Î.ôKö»m÷­–ñ«d(B·[ë–t6(†Ñ:µ7·|÷Œw]’[imYÚÅmãÓvnw)ê<:X¶÷€;QVWåÏÖ*]GJkí6_å›«…˜±yèN7¸¤t"ndÆ?BðÍv£ïYN6$cV	Ósø‰	c’$¦&Œh˜`‘rÅRÍy‡<‘iˆ1ÖŒ«Ù¢Ïfß7köí:_°fŸ556Í¾Hl˜}˜¹…Âl3ûÎ§=?ü¿£ž8œ¿³áw6üÎ†ß2ü¾±Õ³)x6Ï¦à7ÛÍóN ±’Zp‰¨äG7<ÕQ¤9	§I"Š± ”QÃ˜”)g`FHj”*”â]U"úµžP òÕ&4}™–`:›ÔYmvhv,owYoV2_Û´äÁ½±©Å³ê¦6öæ3mžà¼ºÑ¬ÉŸüôË¯?¿I–Ÿp=ð£m–Q,ÖÂÊ({ë­mïóißá¡e,bËüZF_ûŽmöµÍžÐ#Þöp¤K§óß¥»N¾ÿ—q}b³ºK™G´˜sÈ—{¼–S´•Wd•{@•[•KøÔ‰¢¦†ôøRw¡gñŠ@8˜¦Šâ4&Š&	P“)€ˆ¢8ÂIB$aJÑéÄH%!Æ”©âð…¾)("W'¸½³ŒÖ¡$^…BQìö´
=àýÀPì›]îÙÀÐi¼D«`èˆ±ó§sn½¼|?WÙ‹ÊßU§æ¦ |ÿØz¿èø?uû–« GGm_-ŒÙZÖ†3c¸ÂJ˜s«I%TbLxbRI­„Œ„Œ“I$°.ª’tWÂÝŽx†%P}1î¹â~jáÝËkŸÔÌÛÍÎÉF©‘Õ†ˆ·x†µ­vpÓÖçîäúƒ8²{¦ðöyw/öôTëð5}Šû‹ÛÒéOŸIo?‹Ï%42Ô*äR…ÔPCI¥(!± 2JTÃÿcÍ“„<Tšó$¢ˆ„TQ¦våX8kîoLsSç€DNÚÐÜ¯inêç‰9G$QwãCü1Ï¥»O¡ø-éî£®Ã‹pý	•øxÜÛà†ñ´«yjí4fi˜* l´FHiÂ¸I5ŽHof¨àLHcƒc"‘‰iiÆŒ–á®kão¿ÿ¾®Nc•Úî8ú=Š{<¶ª».IïÔÜÐV¨ÏëÌEuf!K9ÍïMq‘§-K}ÀQWÝ­L‘JÚKŽ³Q&‹l7-½VÅÔ¯MB-^|®@™ËB_ÌÀAe‚-œhŠöfU}âR¥U'¯Âã©Ùfn·«£ÔÁúmŠÆk—p;ÙÖãñ Ù¤ƒ¨‡9}„"M¢«àýäF3©ËÐœCµÓ•¢ß:÷ÃËÐ³¸OÜÈx¼G„o•!]í9šuîíÎ5C½dhíÄûØq"[#qwÐå7âí¡ÔUéÐõ’îÕOoß^QÇ<˜G
á ûL}ÿ=A.ÏÃ}“±Í9­”•†žæ²Bøêíï¿¿ùñÃÕj@…Ó0îÇ&<ØêS„ß‡Éúq»Ž;I_Æ}ó;ep{œçá éô“¤ñˆ$a‚cYÃ%‹$M@‘PQíŠI%R˜ˆ%‚¤)CQD$úŒô¾-¤ÇŸ ½˜lGzØúé×‘f6qå
Ò£ÄÍ³‰v|Ý//ëõ÷Âëqï*f'ÄzûÝ a½“‡Áú¾åÈ—>1,KäçÍ0‡Š'ˆ`ñŽFYÃ{¶ƒ/†tÂ
°ñçXA•ð¸<„[øs¯BÍC˜-â<ˆŸÈï8÷“â².-®HÍÎ¢…ÜÇÃq®g#seõˆ€ï#D¾W4‰˜–Ê­*™èPaÅbFˆÖœJ‘¤B)Ã¸ÀHSN!&’8V‹¸Ö"Ä<1ÐU"V;Ðê?feõ—å¹ÝXN,ÚªçjõØ0uUX¦æ<ÑJ”• ù}Ø¦ƒy]Y‹1µQ#{€P2+‚;ÀùÌæFŸZq?Q€FêsEÀ9³š
šzÌg8+G÷PâµÆaU§FV6­y3ÄÓáÌ²šÌd0H²drLØb%ðºþˆ±8Þ
2Xlã¸	àZÍoNpÌ1ßïT„ç0höÝ sÇy ÐWo>@°×'€¾|WïŠW?~~Wÿ`?yþÁ^nÇúù9-ÎÁøT„‘'>MfOßÞ™¾Îª}ÎÃnlVoƒîü$Óî^Üðï±z4Ûç¸]FÙdö0hÁxnã›+2G0£ŠÇiUc]ì×x~ýôþ—ÏŸ?^aø×‘*y–$9üœÚ;·÷³!ò'|Žkƒ×Il€Þ)éŸ;çûVn:$q»ZåÈï­YaèñÊœ üZ=æ‡Ÿ˜8[Ó¿Ûò¤ÌG¦êt!lÄ·e‘ÀCB×;Üh½M8o*u™Èò¦.ã
_°êËzÏóÎOÓÓ¯}ßÛt®6ñý$·}|Ÿ$&¤Dp”Œ”AXÄ±aŠòDF”k#CÎÂRœ†‘ ðGj"Q%”Æ,ÔrW´àjd]íD~Û,ß.D¿Æ×ÖH*ƒ¿}ùùãz”Þ²­…¿ùþ†%Ã[ñwû}£ØÍæçp{7,‰°l¶Ö7ˆº¥7gÄ^8òÆ¡®øö¾XY¯Ö‰Æs ;Dg9ÍúÌy,\¼:b0f¾§â{.EÂ!îÂ2$,ŒÂ8N¢8R	#Ba„4çšR˜B¤‚Û»Í©"`g+&V1˜g,‰ä®ëìoß}°gm»…#|Ù„[ÿýó?Dˆ‚·ù¤2UÐünîÊx>L¬Ûc.'ÿ.ïdðþý)ÄJ#ÇiOç>/n-ùå¿ÌHï:c!_M•
Ò2¶—ŠvœˆQ{üµ",c¯…&ÛóÓ½NŠf  ƒ®}à!,[Yùu$b¿c1×E8X R	OØŒ­[ü¸¿É[ûßM^ý¯ÃÃÐ4ù ³ÒüÐv¼Ç™Ð·Ù¦ùø‡ÚÎËëìIãCÇ1/ý5ýõ‚í{`÷È”å¶Óì”cÎ6Ó¾Òå ¾†Q»­êè‡ùÍ¬]˜²Zþ°úË>Fx‹†$y	F3¼Ã9+¬º2Ó*/~¨¿¬|RÚñ\ÁJ_YŽã¦õì™^Ä€ohêÇß#EhªÎ]ÅmoKcR€¶ÁAû%þSÌ~,Àv08°bIüÇŒ!QDwÝþ³(>ŽXÿE+5Há#1ŒÅVÅ'bX¸=hÝCÏÃh¯µÐJýzK:7Ã×~ÿz¬Á”ß2óêÑ”ŸçÝ!oaÀrUU=ýÈIÁ4#:boûu¥[—=ü!>ìVÉþžEÍw¢æ»4öq4êTÂ;›g²÷Ù:Z Pâð)#nR$Ã¥FM"EµÖ8bÒ`dŒäDØŠ!V”ÅT²hbf0-ºÓjÌÇ0å*x—•
þwªÞÌt–¯Þ¾{÷æ» ôd!¥XŸ’Ê	@NMñ]ÇÑúb©‚WŸæ?}øðá»ÀúÀË@·=Éº'ÏDÙzçi‘¼}÷Úž³O.î‹¬joÊjYÙczøÖî
ë_šfSëäþõæŸ¯ƒ7þúÖ~XÈû ó ÉìmÚ‰‘ÅÅ§·?Í“ÁÊ¸tnÊÉ_ªùm_€Í\ƒÔÈjVØúè£ì¶©±žOLyÑ:µí´ŽfÕZ’{y”r<Õá¦Ufo=} ­S},wÍ_Jö…™\W7£ÌØ*îAfAH’Í³»ÝH{ž
“´>ËÓEôÕ¸V˜Ú –”ø….àÿ¥V˜˜:C\VÊQv]ÇJ¾jtü‘UU1j›µC‘cÛ˜žð×…¬òq¦š´¾T6DbTæÁužë@V5I]Òš+ÌTfEÝŒ}Bö	^hi‹ÌkxŽåÉãh²éMœæ£½Ì Ì=oªñ¨3¤6zZË=Üî@à”‰Rî„“(\ÃQQäàB˜q`Á€øÕ6Wšíª7áµ‡c§7SØ¸ÍhËËŸg#»NÚÊ7ÕÓƒ°u] Ü7;Éb$Fðv‰½§E§ø‚]-'»\\{xÐ(vÑÈ»Záû½Öœóá½¸òæ	Ëž½ õ
ê8àØp}kô¼šÜ¾p‘
0ôq¬‘‰(SC0‘)Š€žRCT$X*˜$!›Þ•È(dšëKŽwU6[\¨öÍm¶=ºÎM°±BO³Ô(äÖ”ä"3H°Ì÷q!W„i›èÃjJPƒÈJgåíÖŒñÓ¬œo×Œ"ëEÈ0×3°b-Î¶\4£]û5Õàw»ø¬*1ŽQÜW%Öáøzq©–ö]4>X-ùj£#ÄÕ¹Ý–ÝPQûnQ:%3Ÿ«¯…Þ;•OdPoUJÏ`U‡±æ˜%„kŒi’¨$µNÁ"–Jh•p†%4A‰á¾–!Â!V<´NéhWš«³Z:…Zz’Er§ÁÆèF¶xºl­F
è)LöIéPK¾W!ÏŠiE1y§¼x>ÅôÙKGPU/Ç¬Ú¦Åœº9Lâö•.´<àúÒù1ñôÛbaÞ/Î"k¥H(DÄuÚÄP(Šy‚ÁÞB†ã1Œ0J“œé Þ¡ÍþÕxa_íÛwƒÔžK«-²äe‚WïÞüú]0Îµéò	Ûu™©¼Ð®Í½iëTÀBÉ{f;uµÒj{»ß*3«áy—ÃàuŸ4€¦ê–‚Æ™|Q{n›]c{UÁ«¬A6ymÝ¼Ö‰<Îí®žqùºñ™Z‚|V}g”%4=²¢ÍL‡uûí¥±t6ÕÃ(òQÃã¬‡6ª=¾u;MßÍ0mrƒia×rZ¾nrH›®@‚r.ƒÄT÷ÆLÚQœ6#dý\†$‡Í~m†S]vëâðI>Nw\‹°M&·ªŒc$„_]jã/Ów¨c;ÐAý†šwÃ×yz„„_A?öÁ!©ð®Q]c_ÀÐ6ÑÕÑœÛE¬]Í¤ ë-ï|'hNšãÍ¯ì
qÛ7/èâýØïâÌxJGðsï»6Ïq=ç|-ÿ«^Ë
¦üø‰ã6ÿÊiîò"ÉJ«môÔÕA¢#ÞºVz,´¬\€úÒ)mñ†WlûE¨åAEƒ{wß}šRÙ‹K;)à[†O²dföP€¼:è´ÄŒ*â~§$ÈfY®aè‡áU€=ün8"+â(JRÂ8â‰`"‘šaj”D,4Ú–hÅ$fB³þÍ¤Ü
 °ªÝRlœä:Ðf$ƒrjŒj€êœv<žMZ°Óìßü¼zxÐjf3°¿Ÿ˜âú1ø(§Søí Ò>‚ïêH‚I  © “;¿šŽëÞ.š‘-²¸Û!‚6¨ñ•…Á“rœ•eùm^÷`ž×}sÜÃ&;ü76rRÙ˜5ÊË&’àö*¸ÖYS]oÞH=ˆòâU9³-–Ágøø¡¹Æ´J½²–e° þg-¾«óÉƒIb—^Ý&Ð¢A±£šäUðh*Ë’‘±ØõÖšMGQ4ÊÑÅ|‡ÁŒë]Õä•¸‘×¯´‘›€Á4³%þ hŽšøÖ:Šê¢0v/ë&Äæ/vƒÿß¿Ø•ùK»×á·2oÚÏêQZßàõÑ¹×9+l¶Ú‚šØÎÀØæúIÍc¶‚F2YÛ«VQej6’Å“‘ž>ÅnP?£ÚßØmÐÄOÏ¼¢íÎEÒ{†"Vï“`Jéþ;xÍºZq1h…óq×Ÿß}³ÉÕ¶Ïüð°Yûx5#é²>vKó®]Î¸<[¶à iüHçU—¥Õ–#Ý¦§·Î¥¹{Æˆ—WÑ-­óÁY~}½ï ð `y…pÀs)T#ŠÝèˆÌdèhÈÅÕûxvIy,R¦J“Pd„¢"*LclKM,bJ%¼Å8‘­qÂB!‰cÝuÁãŒ]ÎØåŒ]vc±%^mÇ.Œo$‡µP…¬c—ã½Éa·kpwgì½lA/È÷Tô¤èeWö0ôrÄ³Ìg€1'>%#•}úœÐÅ¾†ƒHì{;ÑO‚\ï®Æ°9ç‡ôž†Æöf€–R¨ØEI€*B±8A8D!Om²šqª‘½½š
/ø®[6µ0Àˆdelí¸ò¶ÊA—¯NuBùØHH{joÈ€¾dï	|2+a-_¥…ýë§ÿùðËOmÝ¹Jf£ÓGò¬ÊÍ]™°ñêY!|„¨·ç.'„#{\½‘¾<Â"ŽèZóˆ¢pÿ}‹'j`wÆ 9Bs¿©zÈ8ŽûQ–Æ9Íï§âê…å×ùÚ’ªã(²±Áž:nóv)¥í/þÖ†›{…‡6|@º£¯6kÜ¿ç^ç [»Þr//o”Ä[ë£·¤oöW6}ròôrž#M‚”`'!"!#Î“1fd”‚1šª”¦Ê0¬"ÄµÂXJ‰X*R%	Û•xCÎgÊ†\ÖåF3Õ\)œY9’<õ¬ÿcE¾-Ùí&òcÎ7òG‚áÕ«u1Š÷g(ØØPg9ÿUå<à#ïBOðHR~UÔ±ÙVyÔìSÕÑGÕ8‡‡PôwøEbõô÷EŠP'¤¥Æ\2j$…Â Ä“3"”Ô‘À)Q†„ð¿X‚)AqÌÄ8Þ•öñ-Ì*K­ë®Þ\Õ¬`’Y•7˜?ý÷ØfE>Õe¤Õ(ƒ¿:<|‹5jýS¦¸ƒµ„·nž"Æ^yeƒëÀ«ë]›ª²Î Gx.šGÞv<§Z«œU7ya½z¯Þ¾iün·ÆÔõŸ³jÁyR=•× f†Y~¹Ü»œG"²u¢ÐªóÈ~ÄÛuÙ‹Eñúm/Š1h5’bÇg_óÁšèïA²á|ô4õ…ÞIƒ;©iÇôv"Áãô?›¦ÛÝ³CNìiÓÍ•äÕv[4xÑEß¶p9Y§GyÓåcj)¼QûÛš»Yt2+%<h‡f-íïP>¾2Eá“êüÛÈÞnW	;gmp|üðã»ûÃsŒôKŸé	ñ‰ˆ\Òx÷¹B6W¡çm¸\y×…¸-’°½ýéŠ^Ù¿Nœ#-§ 6=ŠdÉ¤œ–Á™¼¤þÔ°;¯è;.ò—c&øM.×ÈÍ'|Žþå¾~½q×<÷ë|½˜_½u¦^Óêµ‚Ob2]˜ƒ×™cR7˜<ÖÏ&,ò{KÐÙo_>|ôØ÷Ó‘òx§ }Èóiåk¾ ‘ÿé×O_\õÑ³ÇµÉGw>’r•ã îæÌ®qéc°/<¶Ó’Þë.KŸ=km•\ù,ß*Ç—7?þZG'¹Š²Ê€¥áµW9¾¼ÿçû_`/Â[ì¸è³Y¦}®—,éûíÃ»+ç{,ãñYÅ%=l¢ßþHlùå!uï­˜*0Òp\5î€ŒV°9ãLçcØÒè½~$=˜M²ªt@õëô'¸HPçÖk>:+þOSådÕËôäx`åÇ¡5Ôv04ˆû²™Ž­š²—kyÔ”õ%†Á5´¿uï§°¾âýTÖ1r +Í(µ`{HËÅD6µ‡ðZ«äA÷¿l¼¼Î.ü|H(ÃãÖ¡— E’8¥,ŽŠR1C$4ÔšpCqBuBcÊ4RÌÐ”ì,ùòöÇ`b*›Ù:æwZSØ±ööéÚ7³§Líçk(ë„ˆ5{sÅvÞdž.º©
™¦™ª/!«$0-¦/ÌÒ#dÓ!þøÌÊ&4Ì†6ª^ÒucÝ1zyã×>›±Ê•½l¯|óËF°Ü}6AgÐ2O§LÅl2©³,®æï€Ïkw¤õ-­ø¯,o jÕI‹Ú\gÕÍ,u|ùG‘J	x¹Ø‡»ÃÔ8!›aj,Þ~g˜¢Í„‹!¥bµÄMÈ¸Ø¤ÖŒ©.HM¢Ïuá¯v®s@¢ê-³>¼<õ¾-Üc_=È-Â§«9·ëÂ;š=ÜßwožUÍõs÷Ál«oúÇ¯¿}„Héæ¡ã}Éíì®õ·2;âüíÌŽ°x<y]pž“^úù—î°ø™#[˜ç=¯.ø…6pe.àÀ* &ûÞ¨DC¶H]ïSp*#´=Ž$ŒÊNt¸„jÌ)†ÇIRRø:–&QT“D&Ê&áhWJ”O¶ÈóÛ ³iD–Uå Tü*æ91£Ž>îaðÛ$™¥©)Œ¶qñÍOui{!À*þ9©MÈ;™Õqî§­h·¢ü«Ç`ØÂÈê²y´ÛO		ãˆÐÕSFø(;JÛm¤¡€VSwQ’½¡0 A½mÔëZÝ7V•bsš‡jzÁ¼aÝp[ßÝm¹ÝœsoÓÊ?höx9Wy=Ü~ûn¹í,2ë¤†N9ÞuÛí8ŠÀ=^¥·*ˆ¹LubÀ0•!F„ñÐh‰m·Žáge‹ã”XÙO…±!Ç(E†™tW®Ç³*ðSoª‚Xl¯_D0›ª Âkª€aûªwðÏ®ü‹’žBìé§Ž›Nñ+FþLùîL>ê¤p_C“EýYÏq{•9²…B#!pÊÓ‘¢‘RIÈ„d)G’cmBÎU”0"ÒTpÊ”H&˜Mb¿ërs`ùAeÊ*XT‚kêSwÄ4Ú–7çNîað¡Z–²‘AYë˜`‘Œ´Î¬MšÕNÆE3åë`:kâGYUÕµ‹ñ^>Î“-jsgFùÔÃà‹e¹°Z§˜MêìˆAiìõ[©5t]%<M<Í¸•œÀŸJÝInƒ(ËÒQæ“‹ôV3Z«ÚlÎFSyQ6W{U±4×+e¼ålT•6e#4dŠÀ:ß%(Ìús>«`&Í¥áåôêÞÓâÛ Ns#Ûµ4m†ðáÝûÓ†Ô×ò–dØêR·iï¼ïË×Œ©Ú‘ÇÛ)AâÛTÐ†«w©0¨äp¯+ÕjÐ¼=mŒ¸_Zþ#j>“}2Ñƒ§!cÞ6Œ¢[çm—c»[s3«<Z]lÝ#%#9fÀ¤ë_{ŒãÐcMÖ¹Ë”®t‹ÔŽžtoÞ“d^9±Éû²JàÓƒwc·?\‘VTRDdh…cÇ&1”‚ 4"¸0,Q ð¥VQŒ$3J¤\`BášÇ;s±œáÊ®xÂö®l¿(°Í±WhH×áJHöŸü>Õâ¾åþÔ€%ä¾™HNXöšþ}Ë1óü‡ —g§ÞŠd^NÀçê}†Ò[Ý‚ëOœe¦'ŒÔŠüù=?‚„ˆ‡E‰f’Ä#e TI™2)P’TÑ806‚!©©Æ)gÔÖ1çÛ•’w‘«ªVÞP.Ûkå5`± $Ò5 ¥²¹oÚ¢ÉÝyú¶øâ0wuqÐPlÖzB±@b­Ölÿ1Áb‡ýpC´HÔà…šE?.zhÚ<ºÓ¤Âüú©íÅ¥áÃñÅ<º:ìÏèìéZŸg’ýÏaHsb$:æq‰0D” $’"U<a
Q†‹”Vq#­&á`@2QøG¥géï/ýŸ”fße1‚ôgñéñ†ô÷&$Ø%ýÏv£ü_ ü?¦ù-Éÿç³ŸQ:ï§H;a:$ñbÂØO$4eš¦Hs9V1“2N¨D‰ÈÈØØìŠR†ÓDJŠ)1¦JiÌ• »ª—¯”«åt%ok=OfåøvŒ­#kÝ‚2¸7‰’ãNO«)ÛDÌŸnò*Oò¼º€|œÂºëà§_~ýùýê’]ý^Ø}šoô[ûh­CRŽÊ¼nå1HåD= S¦7Ðä(0ijTuB?¤=ºÏn³áõ$›:;2¬cyù¶Ýz…®œÆ€Wñö\7¶œ
ZW,Œ1LWSÝ0&ŸƒbQšÍ7À_©fÝs©”'S=8c¤MGí§SV6÷«.µJ3l·S³‹†m†Ö.þfºÛDì>‰ÓÑ\—äîÕìØf¨›¤yçR,ˆž¬,’–•>ŒGGp•¶;d´§Ön¯‰ÖÃÔRkÐÊ .ê&›»)ð`:š]Ãk>H¤¤…1~\×y¾çöÅûŸ>úxú~ÇØÇßù»-eš—Ye¼:ÑrâÉ‹Å<T^K³SúÜÃþ=ójD†öÊ^$«ÛúVœOf™9<ãäØO^™’,£Ã$1E!×Õ-õbÃèÅÓ¼‡ÐU=ÄÐ‹Í²Ä®£Ye¯jû.{Ëï¨“~¬=v~=LA5Î“­ºñæòbÐÅØg?]7'!Î§:úvàµí€ájš=$³t@ü–ù:Ë½Yà7Ï8×³‘ñf«ÕH«þ›%Á‘+o#'¼»,+[ãÚw»Û4±I+ÊœëÁØ(X_¾ÊswýQæ“AýÔ={ò:+¬ßußj¦F/ørú1ÞËÇ¨¹Á2©‰7ç¬(ó¢§i”«™³ÙôªÆ«Ã‡[›‹pœïËßÂtÀñd¯­eyÈÕ×ðõ;¾<Šó‚…	+AŽªhÌ	38EÔ(ÃìÉ%M)KSN”RÆÄÁ6%ˆmR"v]ýWítVNë:X6JN­!¸Ïôµ©:n=}YM„¡ò‰5?Ê`´p`Oô­ç)¸—Ù/l`ÕÅ}[kÑsëh#¿²b4ö2½ì‰‚l¿ 3[òu£§1[uCØkÍ(r‰šïÀuÝõxók¹"ú%Ø=+BÄˆ,Ý¹®îíù¢ÙO°´¡wóõj{‹iàlîX±•ÝLd/ËØÝ v´ƒÍ_'«×ÙØu·q}M[W‹Ö×õ°_ý¬I#Òßvô3½,EWÑÍ.t3]­@oãÏÝæó0õü,¼†Ÿ=çgÆy[o¾F›§­æj¢ùZf.™“Ñæ|eÍló¶ÖÜ4oÛÌÛ$ó³Ä¼0»ëTæV§e?Ú_¯ªÅ$Êî~9hëwl+\µzÂ¡Ø8{?´fÕnî9N c¬‚B&Uh«’”8Jc’`¬¥ÀŠ%¡9cB¦2MÒI '‰4XDülÄÜˆÛq”³PðxÓˆC‘àkFÈåîv#î|¢ìaÆ1ä÷äfÜ1BOsÂsÃî|z>íbxÎCÐóÙd×ùlò|6y>›üzg“½ï1žÏ4,é?ã™æ7ekVÒ5ò®¼1£Þð²„5÷3¸ÓÇ‚Mu"‡)åRé˜*&„ä`hISA°%Ž"™Dƒ­G“‡».}~žM§yQÕVq]—À^7QÙŸíDƒ÷e­¡6ÕõµŒƒ¤Èïáit˜ã?6™7P÷ñSÊÜoë½¬ÿÊfã×Á_ag¤ùÃëàŸÙéìuðëžxðÊÆ~7Ù)æ.Fôºmfù‰Meñ/“¬ŒYÉ©Í<¹ïwušÊ	˜³w&¨‹ŒMY6ÓVùd:É Û„sÓ¢¶ü¯‹Æ®¯)­¬OÝœMê¡òöö4ŸhÛ”YŽ 0µ)Ã–žÛøËo—–þ³z>¹Õ¾ååOö£z"–“ük^4»ÃãqN^»qóxnÈn^ŠbYw8pBâÕ±<„ö:6_Â}›ü+j}¦ƒã®I|CŠ"ÿÌ›ê¬}°UÜ96ìT\Á½ƒécu“Oèë¬¬^=ínoRÏÎ‹¦Mã7}àµ,ÐÅæÁ¨ËéHVö4ãêøžº¬«Ïy7ÕM¦òQ^à¯É „á¸+h}œÿ;äÀJ“¦\ÀÞu}%“¬siç‘Nûpæ.ƒµ Èí’Û”G(f{ªV­=©·´“ò²ÑHƒ…2X‘PîªoÕÍu¹¼6ÑìÅ«ú—«ú1­½°`ù´j%®­ß4öòõ˜Èj”ÜSÐv@Ä\6”€ ÆrúMrû×~è¸˜.\¦±ø9*Ô$ÕLjP½Hbª¢(¢i¦	¡<B„jÄhÌ‰±@82ÔÌDE‰ØþÞÖ&Aða¥zÔÏ¹6£àÕÛ?|nç»ór_7{}éo\Ð\ú¶œ‰EG¶0 ‹•:Z«¬ê4hó
TÀiìÉË´ÈJ¬ÁÐËHœ2³yÉòÔæNk4r ,4ƒÏêY›Ólýû:{›±¸Ö\h{åhÔ\O‚÷ü¹2ÚzVeÛfÝþÅ-Z0(U5“£vò+KV/àŸ730EùÃÅ ý§Þ¾ï¾üü×ÙµWÕïïï‡z\¥5`“I>ƒ—Åj©ªÁz§»$¿Ösç©{r1>¤h+Ä„b¯'Sã°«)	Wq ˆBÊÐ>$¸xÍK5¨_§aó&º`Àw?ùëáð]“Æ .¢õq~ÌxÂÓ§Ó>hH<aàb,]jy—ÈÛ†szˆä?rÿÛ×KÔÅÈyíÿ¼²«I†è{Æé÷:¤2]îf—„Ü„#{þ-c¼i¢ðkÔ‰
Q¤S¯KÂiq¥†kd$µ
¹"šÁw‰¿m°—EæUöþ.ïd#‚_kh|Î®›} úÞOêŠëvò¯þþëç÷ßí–äž”{°M"ÌË·ßÿ\uTVªü²}°Ûk6ð(&áZé>Á)ÙžÇ1X«kbGˆ8¶%}–9t¯ýiG5¨÷Í sÇxØ¢?øò­¢Î³?øŠ5ÜWÙÁuÛX^oûîNÜ2YÞ™uªÚþ¶»k°×::äˆtÍ iGlÅM} ˆÝ+	®ñüúéý/Ÿ?¼Âð¯cÇ?ä¤,¿¶S¥d¯ƒ——w°~Ì=utÍ—Æ:á*Œ•ˆbI”ð(4Ø„`¨0!H&	Õ‘Ù1¹æGh®SøjWíÝ%¾ªåƒÎ[í°;
Ì+«Ô¶LKµlþb%7Õ“(1›õ¸iüÙ*¹jDx\®ÅF&‘èW‰Dl£åŸuâÉu"Fù¦²Z> gÑŒ>®ïr%ñ•íÜ¡¿ã8XÝó^½´Ð¹|­ú\ñ§÷[Ì¸®;CË¶ê¼³5{¢ªGðÖôËÂ‹Ñpy€€WWŸÖ«}¯"b&îÊªbŠcšÆŒ‰jŠ…Õ„Q?Ç)˜~Ë˜S!T„MÄEªàX¤(Œv•õ{€!ÙeHå8³¹®
PjµbüøñŸ?ïÖ‹õ*ýLòÙ¤^y<Þ£|¦_ÃìaÈIõ:°‰wF wmJÿ‰Ö„¤usU¼1›ok4j¼m
Ä•±ºëÜn¾ššƒ·ƒÝã¬ò|t›UÃ‹ºÄÀu.Gó¢o-“=s­íØ¬´ÁØÊVð3µ3ð>xû: KôukéÚãÛ·õáëÊïß¿±$¶a»,È}YØŒae=Š¦4¡ðÕ…ÜD°p`H;^[ì`dç7z„·~v²®IÚ3Ü“V5´	+GwãFmWþ± Gk%ãX„aÈ¶*ÿ8"h#;qÄY­ZÃ°Q÷×³µOkÐ¼>ƒÎÇùBï/o?¿ùVâÀÝg°æç”øÑÚÑí94õ’z»{y5–äÅžÚ½8döòYÁê§»ïBóQÓŒ¥*ÝND¯•¨ï¿ïFVæÙýYî©¶°¤{e¼Âûîº5k£¦ÓÚbßw‡ïTU¨\.ñ¸FTYix
-¾v tñ
á«·¿ÿþæÇWxHÆ±É4Œû±	¶z¥~ÿëÇ5$¥ÃN{ËÏBVÐ3U‡h!Ã ¨¶Ån¼ÿ2nK;?ík§÷Æ 7¸Ü»û Ü~o}÷û(@ì#r!Q£ý$ÓéA‡ðÛ¾GèåÑ±>Ei") °¦R³ˆ+”$Œ0ëÚJ£4¥1ihLt"µ`©&\‡1Aa›ï:—?cý3Öß‰õÙÖh¸#[a—8Æ¯U"‰)ÚŸ‹Þíº{ù¾Úïçæ{^´ï{ô[Dûû£:¿Ú?úÈží;€mýŽ×Ð¿…¶Ó–tóK¶øÜÖzYŽ#Ûa:À¦€7÷ªEp³5¾úÙìÙNøÆí„œÈÑã¿MÑ7`÷ƒRÜŽÓ„?«˜†Iˆ")D£QˆÃD°0I“‘!NM˜Ä&’@’b.w«5xë‰—Y¹,iÜ}\ÞÀñÏ6øKoÚUV#k›BÃ[;¹XÖMnãm+ø[Žr0,önÎÓl¢ËÀ¢aÝû6Xóƒ·ó2Psûc½‰ÌrÝå·6{‹­ÿÑÜ·‚	M4hî‰y]·c±‘»Ý`ù¶ ²mÊŒ›8^Ù çÆ¢™›6¤ÀNÈÞ
xðžoÂ{4Oz¸ï9'i\ =2´VjŠ‡<vsåÏ_7œëikq~ýtžûX_Úr6@üÅc~î fí‘½$½< 7EÂéySéy;öWoïuçé¹¥y—ÁËSýðÃÏïÂ½´…Wü‡~c?t$›OIÿ
ÒÕ‘ô“¬nI¿˜qgÁ™–t¢Ì&{éþ&Ë›~ø­ÊF{I??–?üð7x3ë‹)Æ?üðæ—ÏÞÚ;hô•]†¢4ÿÊ]îe€º—Æ:ÌTwÄ…%»—…Î.»aç: *•œjaÕšj¢»ÌÜŽš¨i|
À”`ªL”RE©‘"JTD”è”3ÃL¢#{Ã	@”f„Ò„Q

°•B1IÂ˜ï¬u¼Z¸´€ydÚÏûõa„½]í@0¢[¿˜ƒˆ
F×bäiÌÃ¹‰&,ðpzì€ÀŽè°?0ðxnC÷ÚÇÇés,oÍ«Ú¦9BÀü	#:‘ÏÔU}:2 •XÈç}@+îÏEÇÇ‹<h¤ðáÑ"‹¾?…ŽD‘ˆË84	hA‘†Ø5Èf‚óDÈTÙl1<ÄF&FÂ¡Å,6”üIu¤ ®'iµŽù¢':’]GžOÕ×’Ø÷JÙWÔ’Ïqu*-ù,cÿÚZòÙÐ¦–äûB­úÐ­¨Ëw¡7·¥*ÿz†%6Fie`5j†4KâHr­1Âã4B*Ž’±d†&1‰d$Y¦Š©TíPšÿ˜MjU3¿³í +w²¼ ¹éÞiFR„0§%ª1
á_ºqÙ:D‹¸›–¬S‹ŸÉ“«HÊ9ïå„~F)ü¬ÙG°8öËÚÍ˜ëRš×a³‡½¥wVéçáû‚ŒON®Gµ‚Z"çÐì“…?aØ§7"›éÍƒÅq¾'(i³AÞ§}úXû­LûÆôUÂî±Ç¨Vùö9?v°õeçÕ7~§Àë	¬1öîÑg9×}t±ç’‰Û­ß›]Œ>;{•±sŠ„~‰Ãf¡lml	À"§˜/DÒ9NhñˆMyûÜ7euŽiï}M7i¤uÈ8WG
kH"nâ'IŒSLÓHë"E!Q)"¡ÒZ%‰QI´ë(ñ?Êâ#hó*ñn§(0CtÃ+ŠÁ¡M'·jñ!ÂàÏÞ”"žßÙ-z¨ÍSß¤"_Íæ{—ÛIügîVàñê[µFÞ Y8÷R8Ûø–6¢ïÕ‚ÓÞE˜[…~ÔÞQûÏvya‹qù‚ª¸|Ë_ù
v¹†ÐeÔÂ}ØÐ{,óš¥÷­ÞéóÈ6¬ÀÃø{,ü†Mxÿa‹o-ÄÓßÜé¶âw™þó\êaEºa'+ò8MyŸIŸÀŠ\9{}9‡‡„FCaB±<Q¡ '†3ÇŒp%p$£s
-G:Œ5NSSÄBÌ™Q!ÝaJ¾·³lo¬;˜‘o‚ÒTö2‹Yá«o¹³Ò&°¬÷ÿÒÜ·¿¿ùôáë[˜Ì9Y	9YM(«&|ƒ1º·Zñæ~:,>ƒ‘I°èz³òœþSb!Ÿ½¸ÏËÎdõžY>ÿ±ð>ƒñ%s~3g–›¦pôžqneò:M<åhtßæ9Ÿ¨žOT_ô‰*ð=ŒGÄ!gAö
ÚþýçÄæÛÒ}ë°-ÜûroãâÝ²ôti7U²‰6ƒÊ”ÕÞ|¶’Àã 0 ÝT]gg[I¼7QìXK°ˆž–á{Ê å^*«½4 µIcu¶?sÈ ±ˆö’ec[hØm½²‰Í´~°ù;öPó»ýË“§é(—zÌ&zäÐèœþ¾€ep ÿß™)÷RE*m…aBûäÈòÂš_`/‚Í¾—¼¾'¬Ít?e•é½³éº‘¬3ymª›d Vý |vÔ5¦Ø‹{Z«ÍYdÿîZ´ét ÖÝêËt·Ô×Œq0‘NC´ŠH„µÁ‰JTJ(Â†3bÊ$L%B„§i"P†RÅ"F°Ü•_æÏá˜z’zeWè¦Ü±¯'Rgq#lK.©Ä‘ õû9¦Îñ‡º¦Â~w§¿¾kêåO<Žkê…¥]üSDP¼ X—½~¥?qìÅSGÕËÙØéŒ:|¼ø€Ç=u9‡‹üéÂEÖÜP¾ô>²ÞÜ¡«pÙå1{	a1gÚÙvv h#]Ì8ÿ#ÈÉ$ojÎ÷MÒLµÑZØ†`º»Ë$
C£#ÎEr%UJ±"Šê0Ò8DE<‰µA(ŽC¦ã8Š•i¢4c…w¹Ëìä‚åäÚÜG6óñÇwÿèJÆœ•‹‚Åsc¼Îvl¶µ$Ë21mãÏV˜8ý‘ÝËBV—;žçVO'(B<\-VFQ³oõ´1Já¡Å›`a“h=L„Ø¡’É–‘æ[hPoÜÆúôñŽ|_§7þm’Ù,Ò_'Å1íçisXŒÃï‘Ø;¯Ä–qu9‡v‹€m~­>òÊÜeýo2Òv\ÔO4±8I%C©‰˜Í<Ãâ4
A.EQ‚MÇ‰P*‘„WˆDJ#¨ 2¢Ùü§å»2ÅÏªfolÝ£ºXo-Löç‰[/‚ÍÄ.—äõY€ÜÒ¢-½Àëšß—Ác>³éØÍ¤þòBËJ¶§ e>WÙëÀ=›Àk{k?ŸæðÙòL÷7™ºN™€°[o•_äJÍ}g¶NÕc[hªy\OÅh"ËLÍ‡­\®4X÷ø”³©…XÃ‹ßJx˜èúºâ{eÅ² «ªÑãäª‚1¼Uu
ú|2z|dUpŸF¶~0è@Â2]Ô¯ŸOb'V¯U²¼˜­…ÏÌƒOGæuPÓd¶¯'0ÍnËºèUû»½=Ï™W×æUäyÜå£ÛåJæiðñ·ÿþ|Ñ|“˜öc#‹Ñc Ë³©‹‘¬ÔMi¬¶hÞ¦í1„pJx¸zŠ¶G‡ðjl\@%”‰Õ3L"í®—ÓAý–z­X@¿ÿfWÖ§yxêzâŸWÏ¡Ó×¿E`v4åt|°µÉÎ<,yrÓ1º&/÷õÂîÂ®yä…™UÙ¨ì¢—ÿï¶e^ºg¹÷m•ø®âì]ëýÇÿîq
Ôµßk7º³Ç~ç×Oïùüùã†_ü 7Î?ä¤,A'/s¤}L>žû%ýÇ?þý×Ïï¯ðq}>€Pt~?h¶éþ-]MÇ¤9´ìÚlÔæCzGS«q:lñFÁ6xÀ™pP–î­ª}E˜Ö©a÷S·`Æm sb·,¨×Ò<·àåÙ1´ŒdšdHˆ5ã<Mq„¤ˆH(BaÂcÂ“„riÒLY"Sž0@ÓÔp©Ó]‰‘$f‹]­9^Å4ûlgTÌ*XmAZYã³!jàWŸà…#´õò]S!ÖZs£kÏ"‚÷›í+{èÒ|AéQSteÁˆÕÚ_*dkÙD‡èþ£ÜÒt»w'¦²vónåÕ[ÀZkñ¹Åkª4KS‰iBµ1¥©ÁZhB±Íª¥ˆ'Hè(6iÊ”`™0šÈPÆ8wå¯%¢¯pí`²5åVën	Ø¶hÝŠ•l?•s/Â†Sâ±1Ù—.Å÷¶]û›).jg€•uEéöùêaðÙ€™Ÿ®Úüë¶ýŠµ?ÓYy[’)ý…³}NC¯GIrà^-QÇ9÷ÇG.¶øYúûJ	ï$O‹å>¦ì·í½TÉ¿@¿Nâ¨š¡†ÙðâÍ¦]–¬ÝØTÒÉtw6‰š7ÊJÀýö@MÚ8<él¢ì{ê`tÔlFgVUM:Êön/I§ÒÅê©Ism&Î´ÖìEl×e*‹îÃæ'L`êÕF><N†Þ*ƒ›±WsÌ&;¡ÑtG0[°õÜÐ%á¡Á	•©©ÑÐI¨¹ÁŠ²*l9£…ÛŒÂ”iˆ4YB–Åÿ½7mrÛH×¿×¯`tÄÄÈc‘Ê}éq#Ü’ìÖiy9–Ü§û|ÑÍU´X$AJ*OÌŸL $Á@ k‘év»ªÈÜ‘xßçÝyt)vs"Ñ°8"=[y\pDN,´ùUJÄ ÅK‰íyv0Ž•‹Gp
m”°P(Nü”X¡·öhtû§À>GÆš:emÅé¨”ôtÂh!¼Ü7Q2!Æ2/‘"‚©!PøÔþ7—O4þ;Š¦<ñ¡DjntÂ0Dý·WÙn^¼[Î~ã§¢îÇ¾ßÇålîßÉOãÅlš¹:f%Ô¯‚%ºXJ¨Yž®Wól2þè?üôó¯¿yœl ZYˆ »Ùž%X–ø€Fs‹Kxa­õ…”wcÅ‰Ÿ’C>#8éžŒµòÛZ¶1Zn…Ä¬W¬úA·—¿þû—÷ï^¿ÿí—,%Í×ba½Ï†~?m,¦×Á˜Þ¶ÏLÿîÌ²m·ößµ¼ßfšµÆ0¶K¯DñVX·4/¾ØëAgš›]9²XtÁöú	”ãùü®3æ>U¦ oÖœXeâñ×ÚÐ„g <@[ì¹šaÌÐÄr,0à	“p”£(B!e•wñÛq†	f˜pá…6¸ûÓýèADP"oÅsAÉ½üºÊ|Õ‚®¡:`ßÌ<ÃÍ´:ÁilÒuŠóÏŸ?~ªaQZÏÏ –Ü`	wd…ôœÇqð<oyp$ —þw,•Âƒ™feu¸†Ãü>F°—oRDòì»wožîä÷ã›÷ßdàÙßÞ½Ê~	Ÿ<‘Ô“Ùã‹:œþšoÖ>¼?<»Z.ß’LÔL*N7ÝÐËªŸÆîói§ë¯Ôâº65ã†àõµ"Ïa¯EƒÆ¯³*A¿÷ŠÞ1Ï"«òzo„åˆÞA<re~ô™Ng·l¤Ætëí¡+d){"¿82Á¾1#Ÿá3ÖØ<²5Ø…G ‹~èt¶²Ãñt|àéåˆ¬XãâßcF©åÔab±„Bp+€V‰oDGÐHE5”SÅ­ô¸G$š@Ë”QPRä‚Æ¦Œ¾ûÊqÓÔ„(´ñrã¿…ØËÍaä%E¶¨rçB±V<»Ó¥WSçì ƒ-j²éêqëb5]›GÂ¨þÛñªˆñg¸\ŒÇ®ŽÍ!ßUšÞ>º»ÜúFþêdÑ«Ô-²á>©Åx¶J×³œ7_•ZMÍÍÜ‹i¦cÛÞ£xHI8¥¨:ÿç’ãxW2N9Ú»88êùæ%“‹‡»$î®×6t¸½š-é2}[ û.Ó{^oU§/þ¦R×FwãW½°+ÔZóV¹÷Þà&Z£×õrj)59>êlšŒ¯Ÿm¯ç+-GÏóDá³^¶l5Iã˜]Gìi:Š2­[6x¤´O«åP’ú¥_×…ˆŒ}ƒÕÒÕ3öÔå(º8Ì:S”[®þ5$sžÛºDŒê×hæµCfC<Sz\ûdqmŽëbÃ_îþýÝo#æoÃLÿÑö÷ñôwU—MwÓ0MçAÑÙ6õœøVE4ž©ÕòÆ?Ìˆ¦þÊ.—wËiÓúÎsEÏT#š†·Æ¥µ1Kë¦éøKlJ£ñ3â%\·¬næÊ¥ÉšF_öÞ¸]èO¹ðjÿO¥²Gï#[f¦êÕÂof³cIÂ8ÁDý!8y "níL8Ú%kÿwd’C¿ =Úñâ/G;ŒŽym÷Ð“ÙõµÇ_Ggªêöëëï^ýø:vaþéÊèŽùDi lòÁ#zÿôF=ZúÏ£{z@q7
oÿÈ:=VÓ®½ç‘‹êÚ{6÷àÈ#Ò®ý7nÒµo:ñ¼cß•^M—«6½èJ;œuÞ/Y8§SÛ¾ãÂÙµlß¯íC™.ç]oÓ¦kû«´éÚåm:·½D›ŽmoÐ¦cûëã)ïlò)ïÝ¢[ŽÔÓQpCíðhvº·_téÒ»©±5ë> …ÏÆ<©­¤Í›ï_ 8Ìf"›¡Vï‘ñ’zwÐvsØh8?…%‡^–û<W‹Îª0Â°[Â . °‰ÖËÛR	),„Vc«ƒ
…ABqHz¢Mœ„Æ8˜eÆÂ^eÒ{—é2GØ[P[¨AØá8Ï¥Ó>aÐúˆ
uEÕÐY¢Žqz5_Œýãàž”fNkÝËm–k"ü=›þ^ø}>—7Ù,EXS®>ÌŸKHDqµy³lÒ¬m–¡b3ñ Ëa´H—÷à¾zL›’]¤*·%Ü€ÁN:pÿb‚rAtÏxÈüõ(ç'b”‘µËS½&e÷‚ÃMm—è¡Õ)EV"ÖÍ›©þú*V$­ƒ!WT'q'.§Ð+TË ×êóÇVrLDŒÈ–Èö!Ú+ÿø]›—‹±ñº[ÏÌR²Ñ-a8B b  9á°EàÚ3µv¤\èßRÅ S\i!¤Åzên¬ Ðh¸"V3‡Y€’TJvrMPuôâ:![aL7ƒ¥ûBûÔäîU(WlgçRÎØb”³j¢ƒËEþšù¯]FAý~PdÛ¨Éõèàn®7QUU0°¯•±¥´ 7;€Þºaq†ÕW'ºÒç:ï›…[Fbû*TÚÍ3*›ÞszŒæçq$½õØ¶Ïÿvøôêèm;Ê=eLÅÌLåÇ?œ}§®cÖõÐ÷Z¸ˆ•ëæžH‡(é6-[»KÄ8"´sV8]ÝÈû+Ë_ð¦c>S¹µó@XgÐÓƒ/!:`¡óÒ¢c0Ôh2Ð9–
½´Ž0ƒ‰EA—`­­N“ÈC©ìlÄq 6¨ ï¥& ‰ðÑ¶|õpCœ	lÄû~^àF¸ÚW<p£ÁiëÌpãÀ…î„¸ãžwVàŽèE ¤½Cæy=8{ùSž¯bÐÃUíi]æèÇtæB} MÈ1ñ8´'; 4÷<”¢ŒI¤LŒá˜ÄsaÂ8âÄ7!Xx”ƒ52žEC–@RòU¹ú-®¡Æ W+×¸¾ÍÛe>„/¿ývR^GÂ nžÏæ¡œÁà;²þÏ¢iêÂQyfq=žº«gkw»Ú¨¬i`k/~WŸÔ7£«õj|›¹jÿëàf|}3ôP)äyž,ÝbêqÁ§L×ý¾W1SÈ	†º–auþÜ]¥ãÛqXoây×ëÌúm4XOx£Rÿ¬Ÿi ›´çÌ×7ËÁjÒ_[µt¹¾èù!gÚü@×•‡5yŽêb–T¬TèïÕd¼¼9ªæjà®B“Ä¦{à!	=œ+‡#IhÖÊoß½‹éa@÷tu÷†ã÷9ÕSTät‡’çÔ÷ìuà!q‹.Ó?ƒV)nÈs(¡Ž©4-çh'Ø)§kÎÓS­ÕÔìÖ5=¦š*|Ý:Ê¯P{x±NkH”6FkD¶J1’„0ˆµI‚Ãÿ™€Ö9N(%k)ý7Š'x4Î\R¥5¼€ìÈ®Ù2VƒÊ  p7µ7ÂŒ!ÁÊ Û_QÉN²/ºÓóÀìö®1_;Ì~òzËïÇ¬Þ¼R¢*ÙsUÅ~èªÔ‘U¥Ÿ¶Fz¹þÜ]”ÑžJ²*h¦h‡ˆ)£[kÆ-¥–(I±ØÓÚ„ ž`ç$„Ö8$•D(Œ­“D%Vh­Tˆøç¹ï2ž9HgÉò³'¨˜ÿenýöoä2øN/BEÂë…šß„tŽytxÈ¹H”qµ!ïÙ‰e0z:ñƒ4f¾D¥ËçWŸÆé*KY?}¨tà
Hª?eÑêE¥+Qç³¥¿+ã¬[V16óë¾uv¬•ø¡ÂÁB­íqÔÒÑÕyœì—ëÿóÙãžE(uê"®+fU“Y(‰¸8¿w@qñ†¦ÍÄˆ
<+¸DŒÒrbÁ™äþ‚÷€‰½j‚q„dÙ'€"A!Œð@Ì–™_õ¡è¢~2é'lµ/E¶OFœ­£>éÉqÂS7^Œ²µÕ¸9n+Žìhäú$S/fK=’ïz†P«4³ëIÜ@Èÿ[ç’î7ŠbFB#R¿¤uÚEOç³p£³‚ÀÕíCˆôðú˜ç‘ÙÁÈƒõèëÞFhŸÿa„‚ñ_!dw–Ž—1
õYâobZº/Ë˜Ù“ñ—ôºØûÐp3š}í"K~UßP-?\öŠW#\äañÄ#FÎÚÇ´ó×z8÷Ô&oÜ´Š¼õò&¶qL;»¸Xh2›.ó$O=„¹–ñ¬®sñ§É‚b?qÄcòí>ÌÇ_ô*Ù$CmèPÊÐÚÐ²œ˜µ¡i®»Œm½—½µ¡u.„E¶OçEY³fr#£ËV|ÃP÷óÍO¿üöþCNÐ„„Šž¨ÙþUÕ6öÜåHRp~³Y“Ù£µ•-Ð—ÈÝemsj×¢C²D±ÍÏkñ[Y÷)‚žlš…»òÛ«×ÿü E“5í³º›x¾2,54o`ÓaµHg‹\N¸ö°níE-ÿ
Gÿå£Îæ¶nûìŸþU¢õ‡ëRòÑ9éÒÕ9‹ú€ß‡Ú >GswÅ¡RXº	˜ H)Ä…±Jb( 	QŒ	+!B‰Â	—Öƒ„Õ _6ÅÞWR¥8i¡wÀ)ÀÂÅ PÒæ"FG¤éÖæ®?·ê€tˆ8<›ê 1k?ÕÁ)}ö7:„†šAñ:„Æ¢uMeŒÎ«Ch˜½!Ò&³V&Ä6ßÕ*Äö*©b»¬õ±í·
‡ØãVãoU‘=ÊºˆX;ëR¢MÇVöÔíº­õ-zµê°Ö`D6ßSeÄö*ë4bÍÎ…r#¶ùFËßa_ÝÛóž*ÓìiBÎ[Ðf_7Ùm«$i¦§m”$m¦¯Ð–ô Sšô Æp¨Biç2ñ8ý+v´&±‡ê“6=Ëz”.>÷á²Õ´m_ÖµDu=¢r‰œôˆî¥eÏµ¦e·’6&²çžª¥S§µ~¦¹ïQ5«õ	¬^ÃëtyPË36îÐXQˆ7´e‰fI4ÜH*‘° )¸ÓB+fœJ²/'…rZ	™[Æ ÒÊ$˜šPíê¨Ææ‡wKÿRÞêrÏ—kíÔYT1ƒµ*æ*SÅ„*j:öÏÃÙ½ÌÕÕzÒíºÝ4diN×Õ	‚÷ñöËÌ]¹èóJ•Zçbwœ‹ŽêTB­®½J HZV¨ È‘ŒÕ§„+<Ìoãþ	¼1÷Û¿œ¢íS+lSïE{œJ4	×bð’†Åk*L—E'ß¸¿æE²ïMl.:ÅØípqeøÊ]*¼‡â4
Öñáâ ÐÒAÁ“è•Çš}s­Rß:Çñí—ê:¾q Š±+oë7p^+|´YýÏcÆ~LAœ•òJ|gw‰ER‹‘ó0	JM€ X1$–ÒK(Lºr¨­s`¨8wVJÍa’X™P¤%¨J~‘XPb¡ûâl/åô"ÆN0$”Eä“«@ðOÀÜ©$ð9eÖÑüÌ2KcXa™%V—_^NhM¾)æbL½S›ßŠ¶üšl°ËèýZF÷…²ø~;ÒY|·=1-¾cY^‹ïµ+¸Eöël¶¼oÓ`{ßÅrv´Óc6eán¦,jŒ³ŽU£¬Òˆ*¢(¡
‡2’x)ƒ!±Žjn5F`í¼,(ÿI†òV‚aY »ˆ­
EÙ<³‹Ÿæz:»Í“•nÎ‹4«Zå7\HŒü@bäëü7»£rÏkÆ	.KŒDðMú‰ókZKzô6®¾òâÞ~{Ë‹HvH³YL}âãä£qÐW«Á÷äE|² ä‹y©ºÑÅ¼t1/]ÌK¥ÖsWÔ{zö¨ëàhw&ÛU‡˜×Æ4«sØÅv óÄšÃúH=Äp¡™¦#"‚ØÉ¨4! `n—2q	`¡f8±<Zº$IpØ0Qry‘z£Ô#¤|ÜN&Áh/k(eœî$å,&gh…ð'°“ZîÁ¨C†ý{{ìd§{N›1ób™ºX¦.–©‹eêb™:ð¾.›Ö®xnCØ½Äï]¬m>kÛymË]3‹mRõ–…v%MÔp‚KÒ
d5K„áŽSš„!É¥R˜H¡´(‘ŒXäN«:¿x*86ƒÞÿcPlÏKhöÚ-«¥ÌÒ1äÕ3Ö2åç›LpœLfŸsáÏÝjgm0½¨ÖRß•QÓO*<ó"è_<ù¾vù&ˆ”3ßÄ¯ãÛr¾ç¡ÒÄg7™„Ÿ›á®²fù:CÎžÔSº¼REíÑ9[Jx¶9Ú")erWˆ„P0KB$D@ h!2C‹"Xx†³~Áa{»í->úƒ&ÅÇåÇúô8G	AÓqI{ã‡.‹ŽG4½êäM2|<YñšEú•„³„õ»½ØñåÐ‹ïbÇ‹	ÐŽ·Œ;‰sXª.¦§?½ééPˆOöÙYÀ°@1´ 	¬Çý˜am¶"
uÂb”bF	j´"ÑpÈ%V\d€”ÐaŠˆõ£ß“°Ü«ñ¡rW€HÆÖêØGÅOÀŒôÈ¤ J»[O
hÌ¿Ù[
8e
ÎŠÄ¡½Ä†Úˆ«ÖÅªÕür\¬Z«Ö½e¢ly~÷c¹XR.–”ÓÈQ·êcçzäxäùðÜð–KÜiÒì8#Dq§ õxB
aŽ"8´H{‘
Sáÿq ƒ´0„Õ¯<¾˜¥ép>QËpƒ°»AZ”P®tÖû1´òÂSV6ÀK>¡ööb6É…˜µ¿^ÀãIð=ô2.‚8•Ž³:›IƒÃ^Þ:óÐ³nîá«¶ƒ<ò|µÎ¯á¿OGƒ|ök7uþs—^uÈÃÊ³ÙpŸg‹é<øùåUÇËuÆÓl¡ë¯Üô“Å§¡ztôî<Ð˜›™—Ö“ù­ú;³››ßŒÓeïœýk( à¿òH)k¿!éjžUcƒOÜ—AiìPÙ<Ü¼ì²ÞÝßó‘_ÔlqUl0ûÂÌìfÇ¹Xé·è'èry+TƒXÞG-óì¨óZœìÕj È£B£ (ÔyÜ‹ºâ@,vâ®8á¼9WGXÝ0Ï†¼¥Ôø·w¯²“ýñÍûìçž¦<òpß}¥GÂn)=êÕÔúøìãg½êˆõºá­¥CëVËÔÜÔ5ÏvWïvxœ°VçÌØvÔÇËªázÈ§Ùs·j©N»‘aFJ3*už“úO‡·Êxös²ƒ8–Ó‹ÍÄŠˆ7eð‡Ä
 “6òÇºukç÷ÅËRm`Y km0ñ×UK~ào®ˆ
î;øÃU‚ßöí²ÖRoÑ«wdöóÔ°ïYCþ0BËþ~§‡£ßéßïðG(òm¯ìßóüê×?rûËñ4™µyEW­jüÑ¡ñû]ø×ù(æÕï!2£ƒ;v(3íÁÁÿ~±J/B†0SÈÄÙ§Õp]‹¦òDÓ÷µxQrÙô}i€Žšƒªí«¦³ðã¼êm• †;I‰ Ü‹iÆ«†ÓŽ!…°ÄÆ€ÅBRÅtÈZ"˜•¶J}isaW9dÌÃóòÇY¥?x¤æâ¨‚î@yÙo`ª‡z,B-Ýj‰€Ç…Zˆ%@h×ê"I¹ !€EŠ´Ù±ìÈwù­yr­
+eäñÈ¶XŒÚÆ×ebã÷ã©ýåãu£´úì·ÔÅ´ë!»õ”Ï&0¶iúèeJçÇK­øXÍC¶u4:™®yhgæ!R	‡í¤¢Fº„è„b†eÒ"$<ÃÄ3„	"Ð
N’à2¢±†ZV0ŒW3³
ÚÐmÊäNÌÂæ‘0
	b…?½,²zÇi†#†à®ÛŒ ÂfÇ™õ…¹pŠSq
F h‰½~§¢ë]IÇ–luÍ°×~ÈiÉw˜‚D`@I¨3ÎN„&Dí<¥(I1”‰&R £ÆÔ`\•zý•'§f9[Œ]a~Òw…‘&7s×ÔíÞ¡$³ÏžŠøn`›|,4î[T°<^ýš@F‰¢”‹41
K4í]žÝ7*6çÁiÉã²¦ B:‘‘³¥=cB»‡$W÷a`ÇJAá¬gÞ˜$Yr}r@sÜ(É@ÀB
ÄvŒ%9¥-ÿ@nMUJÐ?/ÁB±&`O°à	ÖÅ Ü™dGM²:%OG²®Wã‡ UÊƒ'NE¢‘Å”AªÌ$Œ âØÓ.cI‚±ÆŽò ž!ÿÓ¿f ©© Uÿ¹üðÛ›8©Ì6'p(žÿ?XÈSaw‡|,Ä	Ç'(Þm¦B
ŽyY•' $N•çOìB NB d-£œKÁ9Ïêtsåv›§6ò#\ÎæÍJ=ßøÄ¤ÏxrGŒ[ÞÖdV{›FÛcð‡´–£/·“Úžþµ»QÁÑgñ¬tž/¾³¡Œò4è!™y&½©YÈºEDÉ›Æ±Îã<t36³Él1ô?¦CO<o]½Ùî?—ôål‘¹¹ÐH[âN—ÿ\~ˆ´FtÁH;¬ïùÃjÜr‰›­Vø_y,]Ë¹vzÅÏ÷gv1úº\†.þ?í{ÿ‰ýØç¡ýo"ŸÝÓu‡ñ‚ÖÂÙa€-Ãñ¬¹üù=h¶²d_ÿ’ÅÆúFCbˆ8¬HcÍ°ÀDëEQ,”U	 …ÅI£±˜ ‰LZWïeòë/?ò½õö296ÔcMe¬ñ0(hvM‡Œ‰rySŽ7¥QëEÒí­¹XOçcÑVãÔB}¶èéÅÐC”
)Ã…Î¼X‡gçwË›Ù´ŽÂÎok‰]ø(„:ù›°lÊðöý±mƒ,¶v§Ý™£™óñr˜¿‡lõÝ(B›¶ÌÏ¯©²D nŒ„4á‰'†s1RNS£1Å€)Ž¹t–;´†1®OÐ²*MÊËbCM\HmŸg³Ï·\ê·îº‰·˜UºœÝÆ!Ö?¤«q–Œ>×ºùdv·pKa2ÿ™ÊÒ¨,gWYàÝd¶²£Á›å¦\€Kó*ÅrB¶5Hžfû7)y–fïïyI´›ØÅh<«Ê«/¡‰rd[ø…ŽúvPÈ™Øóí ˜qˆÊªÃð‘¢11âÞí†kVd›'Óž<ß+UžÏ#×5¿~Ížû’g„¡h›"qo9µ££Ã¶SÃg£ü¢î¯f´n²£—ëá$˜_³¦â¥<<cÙQH5‹èNª­Jo´¿ü¶;­ö‚Q7bíQ> Ü$˜ÊP%P(9SÅ8MãZ ¡œ€ÆhæÔ–+ˆ9'–&Uæ´ZÓÀ…»…ˆã,Æ~PÚh5©Î;ÎÃ¡š™ÞÌ>²;w‹ì|§ÆååPrÌ»š‡Ðmvg:£õ8T6Y?¸Rò©jr‹€î[0ó#·QÁv]®hÇq,Y£•fÿr³[ÒšÖ>Dªž(¸Ø¹šÏóœï;;ïKq)])îæQÔ“Ü£ïò	hà0Öƒâ†é) p1Ùç´ Ìu"Ôë%Ž›ñÔuVô ¤Øxüc	3ÂHÊ(×†($$¦ µ—ˆ¹Ô”7VhçËá?¦ŽÓJº[ø)£}ŸÆ‹åJMÛM×º×e|nêB*‡0ˆ§¨ê:ØýÑFWWo’Á_ÂÇÃ‚ý%$ŠØP¦ç!ÉD–“BMÒY^ÍÊ¦îóáPŒ³XjÌ)÷àw‡s ø5æ€0ÚèÓ¼w?/Äø4Ä˜ÐÖÂ÷žD'ZÜÿúÓíßÛý•	
õ"˜k9¨ËÀ»a'¡$õãLÆ:#.y®¨ˆ†VyŒ7~üTœ³i¬WiC¢ÃýLëGøÝÂU«¿kµÕ¹fixL5‹Ê•Ox.o\ŠjšïÐÜ½%–×ÓOm>­É½sÊ„h—Ð,BZ2RæZ öÖ€BG¨ÓJ[)TB”fï2G‘Ò8^UÀ±†SÛíÆ!‹x¤gT«à5RägÚhz¬Î¦éó«Oc5(hþ?ÆËÇÆöx,Û£ˆÃ½bŠË©Œ(_ðF¶·½nÆwÆÇ6`[Æ·}÷,†l_ŒæÒŠIR37ó®¾°=H¢à	ÄS‰t:”0J‘j“$ØãP
%WØ(†PRBHQðšeœ6‘Ä_^þR®jÛ¬~Yg€ô/¸Šâñd169õ[+ÄÃçYxlHâ}’GÄñ¬ß{¶³—¿pŠÊ>ü¢Iž™ï¼ñ_mÚïóÒ9$Z›·àTØ¾4dŒÓähg¼ógŠÉèË#ñ”;è‡G‘Ž>÷•¸["áÎyýUk“ |ÓÜãøSßëéuÿ‡™ ÙjÂ.~¾wÿ~÷þõ¯> ë ¶·Ê&¼mßn{•j|©{$C:t<)ZšÙ[5í*CÂ­q1úûx†¿¾ß.¿eÒ!å‹GQ„[…9–Aã«e¢‘c;F”œ(`±²¡¨KüßB†<ÒRKXhO.Ì`Ñ/ÙÖ×>Y~ƒqÂåéô`¤ó¢¨ëñòf¥G~7û€êÅþc­€V"LÁ´’@rÎŽC+’áÝ4B0„*•åIÿ	– Öª•/pƒ½æê<r	3C]½|
bÏ¡wÀ‰ìˆÃ²%ÖKiAŽNÕ_÷š/ò5®8¦7.aº³÷$Ž*EqRô¡øâ7¼E˜”ßzzo¥!0žSÂ¤•Ž$Î8ÎÅIB2†R, !JÁ€Lˆ‘BH¸K0K„Òs©H“¼}áî3ˆ%ÇP”ôŽá#&!?žóz– Ð.§ð|
PæþJ£=Í

®Ð°öò<^ÑKB?‰ÞÜ‚H	ÏÅ-Úƒ¿x’ü"ui`Ã`ïZ-cWÖ±ö-G-ó>I
‘Ó'ž8h¬6a‡µÑ^H0O¨¢ )©aB8—Îh%%GÕ! 9i—ooðëv{MÙü¦òk•9'clŽh¯ÐHPÑÎ'êNûã]eq$ÅEuÈOc—yÖ•†Ò!¿û~ª&Ãt9[„Ê(nq;ö¯'¼ÚL˜nü©³ô-Á+z9™]o¹ß½q§w~íw/jîÏqY†b’Ûº¶²Œÿmktìq(â/Áž7´`HVV†·~¹ê`­C2DOÉ>Fûp¥êÝ÷æBˆ´M¬P¹¨:†t„Äœ‰ë,ë\¨1jxÏÏB÷=ÍñmÄšúÛ1€n@‚RB$Sk¨		šh.…óÒ‚¥˜‘0¡¤*Mš/6û¼((µ²ãôc[…]¾bÄÑ`°7èçN‹á›ŽÄú$0$ð^%Ê!¨ì“ÀCµßX²[\µ‹GÂi,uˆ¶y¶öžÄãsÅ[¯ìÔt¶cˆb<®¯u¼[{£e.rÕÍr‚jsEj|06‡ÑèBg&îÓ8NVëÖc}#ã†·þþú{x»š,Ç¡Nkó†ãÔ¤ãÈ}Ô3ùtÛö4úzë]Oºå¼…#„¶ïhÇ	=M
8LY%«±$ˆ
¨„´DBŠ)	0ÊbÃ¹ƒ0/9H Uœð»M‘ú<z30,ü*æ	>%7ja³š‹ËÙÀ.Ôç`[.ïó±Y®uÎ{/ý9×t5HoCrÉÙÜM9k9çÕÞœ£Aàºßýò&D…z’—†€ÎÛLÔñ÷`èàÒ­ýÜý_w^¼š%W?ûüð6“¬ü²üRÇ×Ó¼ÈdVšÒ3p§Ò»ð÷çE¨È8[ø7òz¤¬’óa¨ùxüë¡’ä"v­Â¤n>;	ÏÝO=˜ùõ,|ûYæµÿ]:øìéÃ@oC£°q5˜úW'ìã¹ÿÎ<ž~ô{ÿ”‰ƒp*“íI©Ô`…³¡¤Ÿ>l¿àQKŒý.ŠMÞäq®îó@ÙOjºÌj—³ÙÿÊ[içG¿Ê‚kýhsåßÝÁ,ƒ…3O½ÌšŽý†¦fìys@Aµã$q‹ oòI®²Z››Té!ÁÏØßBM<LÈXã‘Ôt¶ÌNÙÖæ¸½[Œ•£c¹/~ºðÒ¤Yøn¼pëÔ4Û Ü…lpíBÑéAV@<jVÈÞN-Ç“ñòîÊŸKQ˜ÓÓãù¶f¨'Tnâï $þhM8owçÖÄ—_ígYoÉŸó,´ÊÊaú™UêœÎOuÂ²Ë‡tÖõÙùë½w"þ¹ÿ=žÙea>žç¾CØS±ûçƒtåoŒfvqû|ðCplõÄÀß‘Wþ½ð«¿šÍó#Þ†?—.ó’£á2e—^óçš(JGàÉ³±}‹')çBB~<®™B&ö"B&Üjæ òØ„(¯'ÃœâsZ^ú©i’6Ú;¿àmës†UÔš«x_åh1©£Ûz¤þ|TëuÙùæÆ»íºCQ?ÜëÞf®+õ“þÂÌ³¤¡UFí™ZÌV…ü1-=ÑŽ™=É«'â††þ>Ú¬è7j8êP8=¢Í«V6´ºÎ³¼5löÚ~ü0Ñ«dãnÖÂ¡­¡i®Žm½çõVßú6â	íe¹í’âÁ˜Z÷W»ˆ¶ÙãíPrbëàîÖ´Õu=ú<*b–ýº÷q­KåîÏäpÆOìiv(Å:ä÷’‚p’$ÀB)¼|c01F{	J†¥ÚQ¢­ÿÚ%ØbI„db¡„‚5TUªþ"]¤ ‹t‘‚Î)a°'yât\«N¼€´_¸‹A.ÉŽÄ0À Ùœy <˜—ŽÞ—gƒä#‘ƒ‚[zËA±É¦w¢½*:œDDŠ\ÆZVŠm¾+4Åö*IO±]ÖbTlû­<Ûc+XÅ>²„›(¼µb#w
™+¶ù¡ðuÎ°¢=qì¼ÑH÷“|G‹:Æº„ÝG4Ò9-rÞ}­e·’äÓ³Ÿw–˜¡P¢º<ZtÔÐÚß¦¥@'t’pm!ÅÎI€‘`«¥&Fˆ‡7@)À VÄ@()•HW§ºóÛl·5˜¨;/ŸD¦t^ó#›=Œ+WEË uÀžÅ©ÛY4›3Ç¼AvœçÁžµà’‚KTQt°›ÊÒz°(ÂYc÷Îá0ì-<5~YiÿëàÕìV§ýæ»ü)¿ž~òÔjdS©;··\Õ9ôì!íóÙí.¦.yYû`±¨Ý‹ºTÎ	×KZ¼ª³KÅL1€B@#ö¤K+,HUš&PÓ\a¥–!Ž0€Yª¸JæNTÇ3Š•gSª&Sù®s…Òdöy0	ò|‘y Ìrü)süÍ‡É©Õ­š§9]äÎiÐäø‡=» ?Ù¹(„²PzV·´ D'çŠÊW™ ½ÖSä$Æ6Ôrß¬Äñ`G<÷òwz:(YÙOAÏ}š“Úgf÷§u‰\žÎ´)OÍÆx°ëÞÕ¯qûöÙ*êåà6ù#ÂhqÒuü¨™¸þúG:[|P‹ë»I€–ÑÂr¹·ñ/TçÞá¯›Õu×þv9—¤sgOÂîºv¾Y¹Î}S£¦Ó“Çt/J³äìsMOàLxÊÂpû¬½éRC²…³ÝìVz„¬Ç|‘ñ¥Öó«¯T¸$FyÆõÊ‹¶*‚ëUª[=ÜM{/ÿðÛ»¿} #ýÀŽtF£Èjƒs›¢6K½Îl2÷­<³z&ýŸÉxépçt/÷‘!¦M9.;û<Æ²4‚B«jÑ²^'²¬Wøh¦ÓÙÄ-ã!Ò‘$ßá­	îty¬nkÆ¸ùÐÓ:ŒÌŽ—ÏÙ[ø~2?K–§z=Í¶VÙ±¶ÉøK\Ã±1„Ì-E]ƒ°ûÛëE¯êi9O¾^~ìæ6ž=±õÁŠvÂªIu&Ú8¨8&L(‘Ô¡„'†KÆ%P+‰ðRÇ*s­BcI™ªVxÿM6Â²ÃZ(¯_ÃQ>•cä°k=œ²63u«ÉU²ššü×ñò.—p×oÊÀ/ëÛ³~{É¬èéäqWXLÙMrÎ…²$°2a³ìúÀ‡ù5Š§á
ÛÑ||·½Õq˜µZ]/¥W½ÚCÆ¸Æ¶zƒÔÃè;~k½´Ê?ˆ87¾ÜÊT€™z€–$–FãÇ8_¶v-!þÓ9Œ¶r½Îá^të¸“ØÂâþ¨ÁE´‡iŽÔC·C´3›úwtyP«ï+¨E Zÿ1à‰‚Prâ`(ˆ±LD”áQåˆÇRJ…­L”Öš(ÄeB^`Å‰a;P…or"ïÁ
²Ÿ)ƒIÊË°‚#(š3þg´_¯oÙ¹€Å&?ãã:ÃžÀâ´.`e„ÑÆµijœË'ª½ºt‹BÎïõ¨S4ïC–èn-Ïï¼º½GîuÕñt(EJà”…]£ð»„H¸HÑÔXÆƒ*m(†‰ñÿS	¦Š8et‚±ŒXŒy¤”$0©)¢¼5ý¯1ËÅ 
÷ì» )Ž»=!Š©î¦4«.±Í&&Íõ›û·cÕ¨<€>è”> ˜ ÐM¯Žÿ´Ž [›icÌqW›i[SiéIÀÔÖ¬ÙÚlÚÁ^úøÕ&k£a7Ãd—^M§rJKË ß`ã¸›fa_¿½zýÏPàØ¡·}$;p9ul%¹ODÉ<ä\D%„”p¥†Ö#Bˆ 
 M´“(F¦!í4±uÉñ.p¤9ðÂ®ôHD²½Šâ‚`
v–†I¤&æ Ž\œ»HÑ£$_©×‰°ÊŸÞ×««ÓÖû_ÁØs|œþW[ÐÒ¶}uíêñÑyƒÍ"<]àÒí\-‡îËøòDŸuõ‡Ù¨Ÿq;ÀdLEV1­¥dŒA
$sÌhY6c2Ñ:¦$bÖ²„£ŒÑŠ{E•€)lk¬³Ô› ²#ƒ0Ùv7¶(kÖû
©Vß…|·YMÏÀ£ÈìBÍü’\êR4Å?•UKõ<Ï ŸçÞ	-þzõÿx45ž.³E¼þ2N6mCê†ÿ˜»ë|ˆ4¤\(V1ùTŸç™B¾Ü>©ÉÊ¥ÏýòŠó‰ò›ÈÆ	†µ,ÍÇR]ïL÷f¾4UÓí4Ì>Ïr.Û¥nù<Xé2tb]p!Ëwþn˜CÙßWiió¯yŽ;<(ôÿN7®†BÑ“IœFßø®îeÞ-?å“úƒ/²úû§p8°ïé1êÂƒÞp‚©[,Ö½Yî³ñÔLVùX7«[=UãIúM8åÝm…Êg”žÛ™ÝÖºl‚N *[C ‰B]IÄ~ÝjŒ’;…«ý'±f°»K?†áâú·'q«7Ü?ÆÒÖ¶ÇÝåÔ›	Qé¨aãÜ›¢‡Ÿ„”ÎáRÁN‚>í$B	S4ŠÖ°ì·oR¹/þÔZ©ëN¬Ö;j9ÄÚŸ9ýÛÑNMÏ%]Zóí·gSjøìå¿þõÝßÞ|€£&eY¹S¶¢ýË?*Ò­W(DÚ±#íØ5yeÇ®K•ýþhz7zàh$š½úC… Ï‰–Õ'§Œ;*†£žýˆïN¶3òéáz¼§YWÀNB Š!F©D&L‰!rBC,(ÃHó$%ZA¡tÂ“N	e)µŠX~ìÀ~ì9`»€J¹qóÛìÌv;A˜îDËûOˆŒÈR_Ûj¨ŸŒ™üœµ·—ßdotìÙO«9^ÃìÈ¼f{ <Z?¸Eç-zù^Ô£‡@þq&+ƒÆö=J¨½uß2xïÓ9`ø~ý;Õ¢ï×¿çúcBƒ70ÿÜIÚâ#ŸìÆwõðh:$¢›ªžŒÄˆ®i>µôoÐŒaL53KãL‚—œŽ :Ô¥K¬ó8q’øÿkÍ4ÀqµäÀB…þ¿Ï·8X¬¦jZÃþõŽ²-DæË!bÀ›a%=9F)­á*“<<Ï&û2üõïÙ÷¾ÙÍ8j>Ÿ)®ÏX.0p5ft=]åp§Î×á äDH~Ü×vCY! Œ ²ØÂ1ng=r5‡Ù#®ïW+M0ÎŠ_³çà¾Wä™^…Žõ¶ä:ñ·w¯úÔWyvî,}Ý[WaÓg×.×Ÿf_Ì*E{Š#Ëª­õZIeâÇÑ9·œ§4A`ÅOvš>û½üáD¸Óç‡ïþõý¯ßýÔ§c£[fUGÔµc“¾³²c“Ê³²c“æ²¢ãK)»ŸlÞž@‚y‘†XŠ‰ÍëŠÇä—ÚíPÝÐ7+2¢ÔUSD`DC\ÊÆã¨Î
üYÌ0+:Ð0êH‚˜û˜3oÚnLÛ:6FÛtie9§¥éµok–ùŸ•²·Ešø»ÌNÓgÿùÛw¯~üîýß›Þ´s•Â‰Ææ×V×r:‚Ç3áÜ6ÕË÷Cç\ ²2KAÐÎ{Ø-,p@Q©™ F2™(u$Ñ[¡¸AqÎ4tÞ³=OdI =ŽD{%¼!”$`ñ:‡2KGstÞNí{ÁççÇç¢uÖ‡Âç
æžø<Víz¨wèºƒ×ûõõH®FïýúGª?k°|¿þ‘ÌdßŒƒçpÁù'Àù÷îáß©_./tëùUØnv‘|—>;èÿÁ‹©<Y 0§ùdY;»JÁaiózò–ÚzÈÅœã@„Å!L5Ì„py‚£ô˜
Êê% JXgv
(}2ž~ÌªD^« ^Ûƒø°9ˆ‘µ­ùb*',£ü<’Ñ}™;³¼:>sð9q_Æé2¯Ô¹©˜(™,‚Ã“µ9½$ánç~Öª³ê3Ák(Ø;ÿˆÇ&;…4+@³2ÆùfWï²*Šåµ¦7³ÕÄ†ÊŽ¹M^±F}šíþ)VíåóÍØšWœÌ<”%Ký7ùÖB¥G³¡ª†!¢ÓÜS)TÝ­9°n©Æ“àNäåÕZ.à½X¨ ©]qèùòó=·‹M!qmƒA3~WåoãE%&$æ%	,|)¬¨NAé~(h¹,EDIŠJ:0/ô°x•ÛgçÚ‘¢j„¯9ÌË^¹ÿWHË?üÉå^VoÞ½Ì~îTÊ‡úþÕÛ'âí“ŸSî+QŠYg‰ìàÔÉKUÔ¾í1²Yõ\‡¹+\Ž“w3Vã‘‘õ[:ª2Â$‚‰DŽ!Æ¨µ’i`ˆ@)®(ñü/I$‚+èù`âŸ1u†(ól²*!âqGÕœùe[à:öæÖÍð!›Ûð<PåÙ$Tq^Œ'ÂÅ×WeµØ­šŽç«‰_çïß|ÿýàÙ{u}í)ñ›Ìçò{O ƒJÌ?ºo®
7Ìì¯Ü3ð
ÏÖ“l™RVB-«A<Nw³UV`m5…™Cb ÿuÆÌj‘Õ]>\åÙÀÂÝÎ–.Ôñ[ÏXA1sàŒ!Q9=gP°ÀŽñ H)Ü«Pä¹¥e—KJˆÈÌ¸ó&³K=„íb¤ŠÞg)Ëö6»PãûÑ›9ƒþ>˜°cØÔz=ud²ŠÅŒcÂn5þúíj6^‡f_¾ì4|ŒšÖÃßç.K[À´Ûv!8û?~yýÃÖh?ƒA¯gÐQcÌiÃŽ2$î[áOÓ^=b%ï>àÃ`CzåDxyÛ…$„@X…”Å˜'\qÉ‰òüÇ(BÇ\ƒ€MlÂ†ˆ€øø*ÁÆûàCHz|N÷’BSÂ	"eðA„ä¨øˆ—>üèr.ø±©ÏûáGƒØ~Dª“K8ä„A#÷H"÷XB­;”!Êã±7œ*#6à,QO-
¡3Ò™Í==N'´Ó²ÀM¶20B³náÀ3
C$°6ÒJ‚—9maÜAL‘Æ‹ØŽ9A¤ –j¥‘
Í­$
è”8|`ü?ûí¾{÷¶9âûRãå,«ÎW*$_2#¤Îƒ	—Å‡®¦½vËÏÎM¯n•ç¸ÓÀâW³|ýŒBNÄ ³ÏÑËòfíÃä™ÛUP£ãÆÚÖpàÕ”+j=%û4ž­Òð4œJ]®¯]«¹¯2{ƒ¹4S½¯÷{?å  ¥XØŽàÙÁPqûêâ](±ŸÀøñxW/ÑKw^‘”˜XÖÃKÉ!ˆÔÅoÞ‘a~Ý[æ¨)ô  >ú—ŠCè€j_3cwAÇ J}Š¸NÓi‚@ÛwóeVw6Ñ*µ|öó/¯òw(˜ÒÝ{«;~xý²kß&%ÈNÇ½¿›xp:‰9M³V‡QÑ«ù$Žwl:†m¯òµšÙÂåD5m²§9œÏ<ù»º–“G’N©Qçt«>ºóàµÓd‰)¨Ð1W”-íµþøÅ•1§GÇ9âÌ2ÈkPÎŽùß/ÜÒ¼˜)¶Z|óbCFGfšô«RT›”r'ÁªZ)*-2À lbHQ(•Ìˆ8¢%0ðD@j9aŠ:¡%r…©ª¼zÁª_#VÝ/c"7Jž}¬
FÀÝlŠÈÿ#w²)†Œð‘Úº
˜¯®{<hµºîlh£nÞ÷„V+4v§@«±YÂ«akÏþ³õ"RMV‹eãÔJØ¶}‡«¸=úGžUà}ÚÚsáÞs§"Š×9žâžÔáú‚tËH×wöügÙ±oþ¦zÄíÌ®&îCà|x¾%Œk4’ÂRÝÂÎIGY¨K£‰¢À9¬‘æÔ)Î! Ëˆ’$‘‰¡Z«ƒÅÐ ›`YYøíÛþ8øKiÇÙÞÌ`Bä-õp3”MÈ×Ì=Û^ƒèlšâÛÑàÍ_íy,í'³ÏÃ¼ègþ×n9,ÜNÍàf6û˜®ËÛ¾»23ë×nêÙÏ©šŽ—á-Ö[I×Šý–îÉNXªuWø-V›U<Ï=l=ÆóS½LŠ¨Ä×0ŒgÓ³¢ÜÉäÓmM,ªõø/gŠ	á x¢Û“Ÿî£r	ÀeU¬ÿCÂš+õmžö0¿æÃÚ­žýéå»ïBnÍß¼"nÊ­¢/ìElã-Ðön^ìšj7-	VÓ\Q%ÿN1gà‰áõü°XŽ”ï‡cì¯[:‹ì’š•uéóáv<ßªIË¾+í×Ø«¯¿S«&³©ÛïÞÜ¨–ÞÄ º¢eÍŠC‰¥éêK£î±Ü.Rx´KS’G¡½Ç"O1S
jZõcÌH<Ef·¼šMû_Ä”$xt)òÏ•Oæ¤ˆ>º¤ä0½$Ò:kQÜÄ¥VPª%2Êcx*‡<¶GÚq‚,Jˆa‚ÒP›Ê¬ª5yÁôOÓS(1=<ŠéQHÔ)÷Ò‰#Â‘ eÿRÿ‘ñQ§ÆôñjìEõý,îÕc/wÈ?þP¨¾©næYP}qáÒY¬ö{ÝÛÞM­íÞýæs¿ésù¢_÷¸Ðy˜]©£ç0%¤z¤²È*]W|÷Å™ó‰ZÒ2œß-ofÓÙ`˜_Ñxð±~-uÁuCDf=¹'õ£Ïþò ™X"×vïYô­*<•œûç7wäV@G‚¶"'áÒ;&Dõ5ÌRÏÍdÜ9ŒA2¢ë”j¨eH<¢k¬“D/%ØÄÒ:á \zÐH 	&Î(‡J$ ˆbÀU"!Ç†ã
‰a¯ÊRð^É€tÔÚTpšÌêËp}ƒï~y3ð?ý¦¢«7µw4xýEÝ†Žûæ¡üR†ÝŠêFÏniFƒd1»Í£ÉJS·¦ýµ_úJü„/>»‰õ+lá8¶g  Á9Übûì#,Àñ¨uÁé~êHæ¥¼£«ç\Æ¤u__ÖáúÖÑ•	ú®”:çEî“r>Ÿß¨½=÷N!Â¥è$¶~µy<*iBã°QiBj†¿w¤–7x¦ô¸!¨­N‰•‚Ãl³ÛIDCÿfú¥â¾¬ÉZ¥7Â)O\¸°#ûb—ò˜ ×Ìæx³.Œfz;›¶e1h“Æ‹`´Rãò[&ò‚Å3GÄI‚-4‚$N9È×ÚL£ŠIžP¡!0RpaTb±J8´Lˆª²!?¿|³vcÜªv~ïãå¬†¯Ôv»7Ú¿YA ¶ù«ÐîHˆ0ØÕîH BG9 ‰…wsW1¹ã‹(Š(–4Ì/ÃFé´àß½{;ðC>müœ ‡	æmùCXÞ12ØõU®™¦ŽStŸ®WÕ¸è+{8-dª4Ã­Ä°.^–x÷ïwï_ÿøê1ñ¥÷-°¬IÉCr„6Î©{w€Iù­eÐJC`<÷ (xXƒ„0ÁÄ,¦™Ä9h­€P+ VD!Î‘{Öá€ÂF;ÇþÄÜƒA,9öWµ$?ø<C ™!axO~ð"E™}ÀPH Y~ØÐN„†µá)ðŽÆ€ø3èÍ?Føü£ÍË|þÑnº~üãáô™ÑÙá¿r‡ÄC±¸œx7iQ‡“ÙõuPFu´ï—Ò²·Jó¢‘’Òx¹Ç´I,ÏÕ8T8 6\Jj53å˜ß!åÊUTë÷,Û™‚K•8VH3<4«šÅUŸOnÇÏ4q¾Ãøzšçüõ\0°ÿf9“K³m’‡ìM¡éµ[ÆËgy¾Zf«eÑ«PÂýî*½X¾¨»ÇÓ9…Á•+ºx.‹!†Çe2ÄÁ^>aâf9§0…(":¬j™y€Ô×^Å;j÷½‹¯PÙ:•AÕÂjMÝÇ)FË¢ŒêU3uçž=H~\5ÞŠ_ù~ž‚¤.³Áîÿé,üˆ‘y "£M‘'/‰»-0û†2ù-ÔÊ*äH<‡Àˆ#ëù‚U8±B# ˆÐzaÿ‡ÃŒi¦aX­´Â¤5 8‚%°‚C¼{ý6ìz°Œ*œŸö$›_¯îù^Ó]Íáx$"í?êãÖB!‚–­-„p²ñ±Ù£ë„Jº+-ùÞ¬ìDåJ„­eouÃâFcïÒ(¿ªÑ4ÿ^I¾R7Žv…:SüÎçÒ;h »²ƒbÕõ"OwÒqtv;3œzðçrgŸºÄBs¤ÂIb¼|U\ß¢ÆSã 9AÝÆ¶ÖÖoÚ(\aû‘ƒ[ôÂÒP½ ¢U¾Ý|²ºÕã`ZÄÅd
Úv¨UêZŽÝvéÃÜÕ¸T²¡Ó<•aµ3Î&~ü.Ääíëƒ÷	ú÷i{:¼£Uc®óƒ¢=è¸³þ‡`”ÉIl–:¤›Ó d4‚(,J”0MJBÂ	“Æ‹¥L”€Ò·g“êŠD]¹…ÉC'«@]1¸‹ºà Œº8‰Èx]„kÔ`é{ÜPË/‘! ý$ìv'ÒdANÛë®[¬väádÈêtÓžg¾†º`¨†º`¨œzPZM=ºYî™–êDP¢$¥%(áÚ®9æFÌÁHB%!„;ƒ¨³J+e(ôøÊUe‡¾`¨ÍUnçGtßÎ+òzPUù.†â”•Ì	e¼E¢„Â5:D;ÖîÇŒ¡Na¡hw½ññ/ÐyñS;Òp2ütºiÏ3ß?]ðÓ?}øiê–Ÿg‹Pwy8Ÿ¬<J»ú‚€ß¬–¥¶tÚyf|c äDn×Ô&Ôÿ…‘HF9²ÊI®%@Z%„ã‰N’D#Î9BNBb]¤šy0ñò§7ƒâÅ!<„ÀÙ…Ô
»^Û3,º­­ëþìåUýTLô&TŸN”qßl’Eø	ÒqºLƒ[ˆ¬=dä*Ñ*òPdˆíóbœU +VœLò¼‘!Mòz;ãõ,Y…ïý]maÖóAˆI¾ÎŸLW·Ú¯ÐÏ^$-ö{/FeÛð==ös—þþ&WY
å¬óz>ßbê·2þ’%û¶se™$B±OYïI†­\ø(gýéÕç7Ý=èà@c]¸æöþAèö)¿Ø¼ÕÖS
á¾õ4¸Ã ™»ª<
$%ìøÆ É aÑ
½ÃWy˜½“ÃØ·ñköH=ÕõvX•wUú•Vo¦µ±qÝiqô
Šó{«ˆñê³š^·÷´7ŽÊŠÜÇ©õpy§ÉBu¤"6¨‘œÆj†VL›0@…&q#1r@¦BDÄF –ø%Rg¬aŠ `)CU5‘Élü™ÁFf4$€ó]£! U$½‚(À¹6˜’ÐG\& ˆ5g½ªã¤þÖ¾POaôÓu<—Þº0äoÁ=ÀŠV„ó´Xâ¬SÇˆ–K¸ †¯5ÈSÛ‰ˆ¦œa˜hÆ-B”`‰J=€p)m ×!ˆi(ÔÑ	P‰&Ø}AÔ¥¢ÈÍd”ì›É=žNaF<sÙõñæL@!‚­mƒüGHˆž¨A6ZŠþœ¨¡ù\ú[Ðx‡èÙö¨¡á<-j8ëÔq¨¡å.¨¡5œ©ªøš„¼j’AÀÍ#‡#¼=cAÕ9¤F‚Ó˜B”öTX2ÂV‘&sçáDâ<V HBK¸¢.¡&AAœA¾›ÑU	°_œ9§àsL¼0udL4K"7°jé™x-®•‹ã.¸H¢µ.Q«Ér;†§K³¬°cyúÀ‰7m¯
•ÕÔ³ÁÿÉ²M•|EþÏC8¨¤gs7«³°rÝïÂ" [p^5±\õÛ?Ó²xŽ8&Ñ†€õýæq{ŸŸí¤ÿÏVëã8AU‰¬Ç²Wÿ<;x”µ•{Ð›zŽ·žýA'©yêEf»–³M^Éí›kÏ©åìvl†wí%² ss&ØVCh›b|wöý2rqþùôõsB¼™³®˜Lá±¸IWzCÇ\#¶#ãZ¯’Ê'ydÁÙ“Ü[ãp±AdáŠúw½ú”’Uê†3?úDÝ%uEÓÉx1'cNÓ}P³;Éñ*ÛVû+ñ®œŽ~OËéDªo¯×(Ü“ƒ5+)÷µ­f²/
Ö?ºS·“æ®Bx¸·Â†€V)¤ßbMF•Ç}ÎwŽpF6 â„"­ E–9b4•T0ç!¡à$AŽ)ie’X„‡Ü@í÷÷	&¨  Œûó¸oSMdß™Éý8zÎË‰`ñ ;¸ÀC“CùÞ=°×I©R{gÐáá.qòÝ^rrXwúc±\ï™[¸v3^PÛµU¡¶c­J4¼UÓÀoNòê`˜'jËc¬®ÏÌ¦ìnhÿ"«Hƒô. ôì ÔSŽÚùÀÅ­›µ’ª˜3„B‹µHpÂ…!Ü9$S!±92Î¦1’”C‚fÊ Å¥µCUå‚}ÁŸ»øóÿú=òÿ_%ì¨3K­°äq@énZtŽ9/¼qcÒÚîAÌì~koÖS@˜}Ô‰1GÐ¿zµèãÖ`¶$ýñåY&Œ—§˜¸ºl=á\^ÀåW.¯=Òkók{Pw¦M?Ý~j›ga,6oQ»DÑ	ðÇYMbåT-¹Òÿ2Á IÕ’ŽlB¬I0·’x@
˜ðVÃN¿°e¬Â–<¿53ëg,¶,Ž8ÍüÁ²ÔÐù	å€5O }7[Œšfß„ÉBÓÍ<W³d3{¨Ë6º.ê²½õl
ƒ·Üoï¿Š³ÖXþ»‘u/²`ÔëG|Ôóœ!Àßñ<§œg9¬Ž§«!ÕŽÛ9“ÁN¶õ9p“`´yú%…dð°ÈtÜ2‰B(¤~Á“‘ŠuôÛÛtÿ:	„£Ö8Ò/¢¶DÚÑwºÀÄ•GaýsÏëbéý×ÏþúÏ×¿¾{óóO[¸w$DœŽÄ4ôò³­ó?ÊÚ¼¯­klö½[þú×¿©4{­#›¿œÝÎÕ"¶õ÷ãiórpËÙ|ù×¿¾M¯ÿ6‡Íýõ¯?…W)ülì¢ï<îilµZ&¢eÆëŒ õáRó»áïöã0ƒ¼½cùñB¸»"Š¹ŒÆCIì	¤³€ Á,òI#œ`ÊÖÖP‘ )öÍµ¢ÜVE‚ýÇ«¤{ºŠ\Uâ7<®«&úÛr<	žÎù'©,=‘H·TŽ©Ýò³sÓÁjn•Ì„úçp•nÏºFƒÿ
<n;d2þâ	½™-<Ô\NîfárÏéùíÔ}ÎG=«±n®‚Oùh<{.À>l.@…‹Aç²‹‚ O¾ˆxæÏµ[`Áú¢”6ëQvo§§î|HZ²µ¿½{õDLq5Ûíð€hËÐvWS_IóÈëß‹³òJdöKh³R§õx]ÌÒ»©™Œõ>{`C%A)$ª´T†´hÈZF-Õ„3n-¡	1ˆ$0-gTS(´'¹¥BB´æ‰'’WÕÆÌÂYŠm^NVéÒº×Yò¥ÁÛupJ[„¿>§mxËY1ùzºQá‚Qµü£Ua¡q¦Y9,!F ªPC€vÁ9ôðžìÔKF”‹æÈŽÍf—¡x½ÃõùÚhY¾Ómö¥bbÞºìÊæÄë	ØÑ7³iÈLƒŠQC•áø¡ƒë~rœ÷y\«g/þõçwÿþéå‡—ßÿðŒjŠ¸UóÐ³Î³Ü¬4ÁßýòŽ@ÓÅé|ÈuÌ1sÍ¯[´*-è—"Öó?«ÙbuºÒè†Û9þó·ŸýíÇˆiRu±‰u«íï¾‹ýÓlé¶ëk¸A{·sýóç÷¯l¨—NžØ!Ää Ûí*Ó!¨¦éHv‚M—IG,g±Ìªø'”òñTBšØ@ß> pÁPâ –œ)#sÆ¨A˜Iípb4ðr‚û¬Ó1â4'$q[•ˆ¨9jä>¨5^ ÃlÔ`é¨Œ7KiÇAM¼=ûkdkmãÙaMC fGXeYƒoâúoðKÛö‡x'n€#°'vî5²iÙü Eu/Ãœö=Ž£¸â±käÓ²ùPŠê¾ºõªNGƒi5~º—ØæEÎU ¤˜ÖýàÒ9BŸçó®h)ø±¬­@tÛá%Š†0H<Ò!>q%Zq*‚ 9"›A$ÄT)˜@ßÔHuxiðËÂù;l\šÖÕµ9Ÿ‡Á2ëŸÈàå03Æ,Ç¡noøÕc‘ÅÎP£«¢‹Ü*³˜6ßl«þ®Rgjµœù§06ŒÜ]Id_zÜUºQÅû‡,Å‹0ÒõBÝ´K‚k¢2Ë•š\å2¤2¼Y†ñM†oŽ¬@;£B*ÿñ2Ë_ò9½
&h?“uI@‹YûTEë…û4ÎÍÝ-C–·™WÒåbe–éèê*?Çyióƒ5Uð}ü‚S7Wµôm55a,5/=’ükØëÕØóÞUvgfÉ ‡…áYþÃl™¨E±ŽåZförí®‚[Ër¼\3ÂØ#šúæ;w_æþÃÏÖ¶öÝfYi–‡ûø<žLü¥O”qÙ÷yûÜxïÿ/òÆÙÊ®<™­®of«Ü†¿]†?/;Îw>(=¨Á3¿ñéuž!Ç?ÃíÜáS;^dh‚Ù½ìì°BIè…ßTþ«?Û<ÓN8ÌõÝPÆsf›åž>yÜ>[¥ÛU¤~Iyžiõ³ÉàÙ8É¦ñãJm.Y–ŒçV‡†~NO&œËð^ñ ²“ÏVçEŽ[gýqW™kËæ®/CNœâRÛí~Â-ÜY…h<ÍîzØÎæ-P:êçç/¼S~ÈbþI¾°±r‚)éÿí‡Ný3˜Ø5Æ÷C•½}ómªðêdÏ;Ûèm˜ÄÉúò}VYçÚx1gºÊ1x•hC9|W´!”	pT´ Cí&	ŒAËJ[ÿQ–FªIÂ™Ï‡á$»eõlümv¤Å¯Ù;³)Qœn¾BÇ¿z[|~?‰ ôÊ}r“ÙüÖ·|ñÖßáUØãùÜýÓÝ;¼ÞÞB–Æ¬„ÇX'ÿøokäJÆ]5XŒU3hÿ¢§(	‘Îâ%‚Rw:U7Îç]ºt·µ¥êPŸæ¥ò EÐcý69yâP¬ÄO·mÝZ_ßfÒ)Œ×·9
nÕ¸õ¢nçØÆ±ÓÌ“Eð{‘:šð¿‡ÏÍB¥7]åîŸ((o'=¨2Í1 ’ G ÃB1žÀëHRŒ`’ î`bCÕÀ)4 s%Ö4HV!=ü#¤úšxö¤&wi ó…M†’=—äo·ÇnS·´«ÛùsèÒùoÅ·ÿxù*ÀªÛPïe>+|`êÒ0fm7Ó¦«±Ö™œ2nüÕmîlZÂÊ¹¸±œyÀí!år|¹óœ×í/øc¾µÍ¢Ò§Næx€ÙÁž2>ÿV\‚4oý«ïöw¿ˆ,eãóDg#³x)ÊÜ\Í’ÄC»¬ˆÆã4»/CZH/Â¬{ús
³3+÷=o|vk‡ÅÃÝj¥«  DÊ€&!9n`Ç ûÖ»&vÕ 	I7pÍ‚xsb§l¥Ù‹2ä]ÐÚi!Ö+çú:‹8Ä:Üqo•4À°¥JZ¯¦Ö?·g×V×b>ªM:¶Rßý(¬,‡UÚ…yF‘×ªzøaòÇµ™è^ðÃÔ¬©KÛL•NÕ|~|e€Ÿm¦ˆ‡ÛÆÿí·þ!\{xmæ!ZÉáFO¼2¼¼*ô®+z#º¡kë §0ÁÄ	FÐ–Yè¡
À&!ZIA4Z(µa@A’hå¬6À1H©5XVZÿ!cÁîËÒåz±<à0/Yââ°÷5¤©ÑŠæÇ’W!Ëˆ¼_Ì“@{ð±¦óL¦Ò90ù¬Ò«Åj:ÝÆSßªàëk$ô ¬ýÅæTÒÑÍ2ÄNUº# É¾k0Æ.r_1£tÇ7pÖd}x-‡ÙývQÑœ zèƒ0ýêý÷Ö²øgÚÖeøpIu\·‚ÄÃØ+§èÎØwÊÑXëkÖƒœÇš•í<“cúx°qoIàƒÛ’ZBá¼Ü‰°‘H%!®Cv6IÂZH¢”BQþ+S„¥ÐIUè|_½)ü¯.„“~r™xg]ˆÿÉºOf×žî¡mpí¦n‘I‡…ñ*˜<ûõ›Á/k;ÊÕûE ü‰2Åt•ªÓëžq$ÊœÿÈÿç¸3¢”ïRu,,û šÃ\Åav§þTD½æ úSu ÛºPYS=Í=J¢ÇŽ£ës<Mº~žíÙÙ.ÅéKÖ·)9`K¥#4ÒAG¡C	:G<Y·–BI4H°“À‰1ÖäQÌb¨h"%Ç†VeAÊéè)a{p|	ð;Él`ÕRåz;õPxA¯)< ×œW¸qw?}owÂÍiŒg9¼b!{»èÝ”Zwó­ß~oZmëz¸¢†ô#ïuìÈ1„ºj†3Òi^Ê T—3'š^›¾­Ë ÙÍ´Ô…¨ÄÂoùƒé^šz^¶I+ÔÒ$ÂcrÄ‘eThmÇš°Kdå°ÅBàI<2”¡„èD1`CÂe‹€•ií²}¥™Ò$8ÐnÝReD8ì5/g‹:B>ßÎ'.¼÷9š%ƒ—›“]}7HÝ2|˜“×PpëYù$Ÿûé×Û?fvœÜå}s¸Cí×jªn8Fæ±>˜%WþnMAÝ¬k¥gÚžå½¥eöë¦³dùYy:Ï|”ÊÝ+UÉ]8¤d»xq\Ç#{ñ’B¾/)1h /-mX\Û!êÂ[¾}"ÉòjvÜß¦ƒhËNÖ«©¯ÙTAOÆü`Î3j\©ÊÑû°¦ÒÃæŠÓíÏ¦ÿ@mlåÅ´qÌ6‹»ù23™Àø¹<ÕhãÛaýgmÖtmÌ‡´ÍæK~xùòŽ8è‡G0²gòÀ£Õ¶f:”‰lÝ-wÓoÛmòÇ­j÷q«®Ç¦Í¡çBØí!.<ÒBÕ³†8Êõpm—Å½Šøðgm:¤ÿãáƒÃmŽ=M'í^¦/·“VÆÚŽRóZ';’ÕÞ{(G1NsÚÌ#Léíûcänws<å¾¡t=î‘,‡Xªl¶“1mêGÚ`Ñ¨Fµcå·w¿Y?!dhƒÌÝ-J/ADÂ”ít"‚o"‰²T	t"NHc	ößà– è–€%+]!ˆäÂw…Nh>Ë¾GËãù*Uè’ï°|`ƒ—Eñ]&”=F!„$u»UcÁI?¬È©ông5ëJ¿ë¥>it(M¬å}ç0&÷|Ãüm@ì¸ò3„‰höÛ¿¹{ ;6ËC	õTg*üSk»|ðÎ#äcÇ¤hi7‡'Bë¤á¥Ù¢&èïÛ¿ÉøøñzØz œþ0Ž	Qg·ÆËµI7­#º±ÇPñƒûoâè/®ñ~gSýçº÷¢ Ðr¤- B@È5ÅBÛÄhpP2f9qŒÂµTjHEB=sÆbhQ¾û°|FkñßÝ3êç|—ðÝfÃ~ß½¨ó:p^F=çí®†û
9ïI£«ŠïÂ‚OÄ‚Ãc} ¹—	"	TÍ•ñÜ{YW"¥ ˆŠž&RPÈ @	¤…b«…ÀXV…qõà¿›œZYg5Ÿ{²\¤(ÈÃúXqÁˆ¯¾2ÖŠŽ°Öã"-DŒí¥ûG\RZÎ÷à²•…,ÜÈ‹<Û³‚Ç}äÙÓZ}X€ëÎ-KæªÖ¦6†©ŸyýÓ»wo?@ÿ¿Æœ¤kóT¤U*ÖFÔÚÕÁøÔÂêÔÎØi,Šµ)ýë¿?ÐÆnMJ-L?qŸXCO¼}'Ö¬iÍ‰5ú¼}ó·ýø£É7è±n¬ñ1üñöCÛðˆž)ªÜ/D»%	¡Ø9Œ²‚yÐ•ˆ:`2•hK¨æ”$Fp‰\b¤pV c1Ô@!Î`œ¸€´¤…§qú©@b_ÿAàHóý›KÎ7€´‹ò£C¡Ï^f‡û€i÷/íŸ¯ÓM¨Á]üŒŸQ[‡¡0x^7£‹_PGHÙ¹7‹}¦½’(à¨gNúÔxŽ—ÝsèPq¼æ1áò[&R­•A1ZB› §`!˜V;N%å€­À&ÄØ
ìwJdáVŠ¢„'ab¨4–‹J7ý_ßüVT—i•ªáf8<S–~É5¾Î“1­£g³¡ôxðì&GBî ŸÞÌ>_åYEƒ9/˜ãÆT­<ÜÏG¥óX¯Ûó¦à_Œ³œ”•ùöC1O"wÜX„Râã5Ñ d˜ï:Å{ìXÆ’5ÛÑÆËa¸-‡…ÔË÷äþ#¯î	PŽW1»ïxÅÝ¯ŽD—ãe}ºü6oxåq™ùÛMÕÓ&æé«ûâÌ‹¹Ã-Îï–7³i&k€‡áqž~#Ép‘îãùx"O™üjOÙ#ñDÞRL¨2Žfå†æ†p—X¡ ”TbD‘æ\)å?á¡Ô3ÂÈË rÐqŽ«\1.D¾œÝ†ú1ßÍnÃýG:ƒcDžŸŒÈ—ïÉã'ò;•D~g÷OŒÈ¾ág#òÇ¦z’D¾z#™ÈÓM^Š½í0)¿µZilAä0– E˜DÁ«@OÂ÷X
„­M¶<aþ:k¡-‰àÌ"‡‰À^ˆ|3‘‡XrŒx©rVøˆy y@ð=ß%ò¤‘§ÃÚ{òø‰|/$ß´ûþ©â”''ò-Þð¾D¾ÕT™ÈwØÈ¹‰üêñ¨k´&:qžÊ3d\âéãZ‰aÂÕ`€6”[A!A*m¥õDcmDyUšœ@±ƒýîeøv>O—/~ué2ä¥ôtø·M.ÊZò¿ZWü)å®ÅV²,_=Üá›çƒ¬’JÐBg•MÖÙfÛQô/ÇÉLWYâë0îvAóÃb5?DbÎ÷¤ìÛ©µˆ1Á¨Ù”§ùºÙÆÙ@R ØšmœT™Q1Å9@G§
`¯ÖDzj¦ûË“=uñUéBóÉ03ùxzÝ¡Göç‡ÈB#þÜ–3½J†­Leû½üyüòëÏïþÛoßxjF—otY©”û(ÉÄIcÅwïñÛÃ¨wx˜,êx´x¾ˆüÇÓˆê)=1Ù_ønŸI$³zŒH¦›N’iLI"-‰G'T	µ”Äi#™‚X8&=„ÁÈQ‰,	‘œ+çÅ-å%.Q™Æõ‚dÎ¨Þ$0V½=‚d(ßG2°±¨Z¤žïÑ#™Ç­å¼_$¯åìd¢§ê…dN«K½ ™’¹ ™s!™+ÞŠ#â ÑŠ&ÎYhæ‰HºDšPiD0Š,¤Ú%„«­Õ£Îð ¨2Ðý‚dÎ¨Ã(V‡OQ )»H† BÀN!‚¨ŒÈR§Ì~ôHæQ«ò‘ïÚ«òOª–î‡dúOƒdîÉ`pA2$sA25Hf5íxÆ6Q!'A2FiD ÖJUB(Œ‚ð'ÃØ	,¸r	’Š$ Ç4žíùŸH£Œõ$¸ÉüüòÍÀï3cÃŸãåÒ…Ê÷ƒ—uÀe5Í}	Öý²H¶¢òYo]¶5¤í¿Ÿ€²íŒ/ò§V/0`ûðÉ
?0AÁ¼ Q$Ëq8f¼YM²š†à)6¬½_oYÜöOPíÓ¶èb5mðjñWNKÖwª™‹—²¶žÃI ƒQó.Øá«	âJñ¤§ÕäE©m«£rÏÉßýûÝû×?¾ú€€ì9 ŠÝgÕ ø ’ÝñîÔïñÏþü gß%°‹> án¾LÝr5ï“D7LánQê<qBb”Hè¤ãa–hhN¬9H ŽÃD)Ê±GÐz´`­‡ÜA†m.ø{FjsÀÉNØyiî¦ÙÎCõPµ(·ÞPì}ï¬óýmgÚOïw•|ó”VP”ïSËÁ­úèB|V5Ôp_¯ÎO|ö˜ö‰* Èfs¥_«|O$ˆYö=‘€A±qÙOâ‡Än»à—aˆX6£Ýãf·®SŽ¡ìñ¼=)W|Ú¤88§Ùfsåè_é	·¯ô´ûDê‹0%QãÆdê8þdõ1=íâw³ÕmfŠXüi<(ÿöÞu¹m$ËüÎ§@Ì?bÛeRyA&2kb?¸lwµgì*OËÕSóÿ¢Hd&$´H‚M–T»´±O¶' 	R$.¼H²›]3–Dæ‰s~çÞ!?àbmÇÚúÚ†=(©Ë8³<¨£ÈóuOtKj~<k3óŸ“¶¯s¸7/eF0¥l¨cW„ÒÐàHG‘ÑÔ$&‰–‰N0ÑšjCUÌ¹5<	¹äH2|æ¥ÏÅKzÄKñö"·ÀK9Úä¥oðÒfsA/í*Æ¿nº§p*nJ:gÆ}BnÚX2ñÌM_ 7í”[÷;a«¹Î&vïZðl ËãæÝx©R±4T+ ¦V+e¢8Lb%I"p)",Q
3+ãF w•1îkbòdWÈ[P“’eM-ëvá‰h<ÍîòÆ`8"…
Žr>µ¯ƒ±žOs`|±Öø:Ø2‹ÚçXƒÁAðaÖþŸyãyî¬ïåB†jêHZe 7jÁð¿5vñrùë¥9>Ý)=Íà#;Ó¯•wv8t?'vêwY¹rÏáÚÞûN†Àãƒ™½Ÿ•³ºø³ù|8+ÞOáÒM]ˆ4¦ùÌMèêZÞÝ¤°Ä…ÓA Õ:÷tlRxÇçjë™¹Kˆâ=<2±ÆÃ…Óúø§3(Žpmc;ÛÁü#·‡WƒþXD	ÅÑŽ B0bëÙð%çW=%—¸Y–ö«ì»×£Ï;2ýŸ.ßùgx
†ïSN):?ÚöáÁ},êZËÞ/¢¶²üVªU3X«rõ;=€Aúz^75«³@ò¾í^(h0‚D¬ÐŠ¶ÓÍÂëœd­;œ8_ÓcålÉ»vWr+î#.{o§53¤åÁ­Ø—‡²X –Žò(¥†Š$’$±VKclPâR;%"&RK&æiF¡¢±²Bƒì"Eˆ¤¸+¢ðð7¸¯×S59Ž6„wsî¶îÏÑ×G› ýŽ+å} |v
R`_}ëiQeÙ‹Å€Á+
¾ûsÁDœsÛjÊ"«c5ó±cV½%ë}Tà%œà[Yˆ©é¬Hjêø”ç…ŽAeÀŒ³i/7­ÔŠþì‰¹õÌ¯¸10¡“´aäbíŽªaž-7¨ž?ƒ`u~õ|5po»MîÉ«8›ÏüŽÑgó|±¿Þb€9Ê2Ö•C(bíAõÁzP}¼¿ŸÇ°œñ¬W,39j=`F3ƒ –gÔ3¿‡¶ú«•oLæ:¼î¥c=œ÷¬=øŒ…NiG€2ÏG~ÿö1œ»JÛåO`œ@å|ƒÿk0üß~Ý[à˜¢,¶Ýdæñhùl:×³‹ùØµôKàÙéàÆrïVã×üÚ/†ñ¥Pa,°“KY «H|»íxà6©i Gê” ·vøà~ìŽ€4€Ä‡••šwÿ+M`rókè·¾3iá,éÚ«wÎšª<òê¼åCÈç“I6…Vp&s÷Œ{ïý®÷ «þòæçËJV÷œbÂ|†É4…ÜíQþ^¹‡V 3kz›/Éâ)õ>p¦\ìå!›{xˆÕ£8øpZ*—
ßÕ*8-¦ó'¶évær‚"$X%[cQ$$#Û@qäUÖ¼4p„q5+[ˆ…löÒp«ìµî“Ãõ8þ÷ÏóZï2W-þÛz›gq0ÎãuÕç¸5Ô!²íŒu÷XmPÞ®1÷Gy‡€¦G&ú6 ©À*€ùp4ÏûêFM³qÚ×ÃQ?RùÿŒ3÷£•/]¸â®…r°¥2Š(gHÒXò„ A¡åVGŒ(FÔne–â$T1ÓD™X$ÂG»Ð_Ü~<ü«§ö®ßú/üéwžWÀ§äOæ±ò=YNàÀ€IsØG¨Îç¾ZŸó´TØOÕR².¨0'¨0•Û©0…w}#Ï::¼–6sgÇn Â;n_ß_£~qÅÝ{™nøÊ-‡}îEy+÷j}Ï“`ÆêH‚ËJm;žI“?ÛÖ×~ûD;f8Ún´W?:ü&ÿ¨£Â•†7¶mÃ¬eÃTµmØvê´íÔ·mw}{W[Æ­Òr”·l8¾nÛpÚ²aÖvÓqÛ†w-æmGÌÛ>š¼í9æµÚ™jÃ¶›™µzþGË†÷7->¤-þÑö¥ùcÞØ°$0@_êš‚«œXÿªU£Ç´k°ønp?n`·} äOpAY“ÓòÂXíL_ø	œ3}20œ÷·ìÌ}yp©ÕP9íCþ¼ð’J
…–ZEH&;½YLEC ¯
ªD
uõ€	¦Š£(		–gxy¼¤má%Høá:º¤„„¨.)¥ÍþÎËwF—£KÊÈŠÎì.·<•£ãË-sa.'8‡Y[ýwÆcÖ÷v$.cÃórj#b V±À_T¤°ETE:‰0B„!b­\$;³Zk‹cC-ÅB‡ì¬Àx2CËÀ¿®FFXJQU#£pYY¶‰ÉlÜ½3ƒ9\ƒ| ƒÙx"Gg.ãŸUMÏª‹³êâ¬ºh«ºðäå°rI·¾HÉúöu,89_Ï‡éøy¥¦ÔÆTka0€e8¡aÂxdM"¥¥Õ,æ	âŠºAG6á®B0WŒBµ+9çQQŠ0h#9•ÀX¬å¦’L4V™ØuûÎ˜ò`L2ÙÕûtS>z(Ç‡•¦8#Ë¦†gdyF–gdÙY–æ$à²B½¾|¹TY®míHÓaÀT=/ÂÄ‚J¤h‚¨Xç[ÎA™Ib‘DÖjd0×*á\Â·FG"2Ibn	ÆôŒ0C˜¬-ÂdÒE*¯G3E¢ZF
ÑË´ãêáåáðr™n?xùè™]>šáà²5flÁþÊŸ‚WUÎâ;cUÕ‰SU·òL*ÂÆab–˜KIQ‚)†RÃGXÍ°)¥dÈµ`Rqbc¤Šcë]ñÅ~CeœF–¬qœgaN=;]/÷aG°¶b‘>‚$†¡|ÀÓ¶Eä/ŽÃñÖV¹Plå(cdÍïƒ³¶>ÅÕ+{fn‡;|ÎÌíXTðHÿØTÞmlñÎm‰Ú}L»÷§¾ðTnûÓ¹½>³3”[—äÁ°ˆh,"ÌdB"a„D„Ä(Šu$e¬¹J,å1¡ZÇ,1,dÇÉÙƒîÉ(© Ñ†R²jæ#&IÔ\)¡æž©êâä:çCX¶>—£‹[g9ë¥›žõÒg½ôY/ÝV/í‰Œ§1§ö7HØw&ñoîîHRÿ2*OGÏ‹9ck(2Øà(¡i†E8$	"*Œq¤™a:ˆ†*ÈhR¢¤K‘‘àˆ2dÏ˜ó‰0g$œwÃš#|MAYˆÃ–òû£Ëw†›‡k¨—ÍûÁÍGÏäèPóÑg˜ÙÔð3Ï0ó3ÛÂÌ’ÀœcVh×w†/«;;¶¼µ3;}¸~>\‰"#i9÷@ÒH3¢"HÇXj0‡SœhA-g\1ÉMœl‚? qåa¸òqÊ¯]ÉfÑ†Y¼¦Ë¤X2±(§Ò ,×nÞTT†Ej­=£ÊµÑÏ`²©áLžÁäL¶“%q9:’,ÇýÎPäbWGB£tšªgVNZ‰‘dÊÄs+\&BKhœD’™é$A†‘„”KIÈ¨Š	%LG!Ub?ƒÈ'‘’…d#<‹G‘ªr’KÚaÈÍ»w†‘‡ÃHxI‘›äèHrs‚—î;[¬·AÑá[þÿëž½{ÿïîÇ{á¼“Åwÿ~tÞ¶:ÆïŒ½U6v\ûÈž91/"¡X¡Ã$ŽUÄç	“DÊ°86(¶Œqb†ÔH¨6
ÈiÂ¥¶wfs‡±9ÑÞïK°pÏ¹9˜Vý¾"xœÝøÜú<3»Ãý¾¢Îõî¶1»õçr*Ž·>ËY‡ÒÔð¬C9ëPÎ:”¶:”‚È8s
›Ü	û>!çrwGÂc¥o†©>s9-CÊL'q$4C†+ÍuˆCZÃŽ±	!@(fREZ'2I8FRñˆ…šQç¡NJºáúEDÄÃµrBFÍ…–wÞ¿3æ<BAˆÃìt[žÊÑç–9Îx³©áožñæo¶Å›Ks
¸¹F¿¾3°¹¾·#AÍü&KÔôù0fˆ0¶¡ÂQDx¬"èÒÚ˜c@;H$#Â§!E™+`ž˜ÅBRÝC»œ1fKŒ)[ðd„6 &Cb-¿"a ´ÌS½wglùì©oªãè ²:øM65<£É3š<£É¶h² -GÇ‘Å°ß€,7u,ä˜Ž&CûÌÅ”«rŠ$c‚	%Y,p”ÄS-b“(žX!dÈµ‘âšÄJ$‚q)´¤±øŒBj‹9§è“’b˜PÞVA¹y÷ÎòQø0¹ñHŽ"7&8#É¦†g$yF’g$ÙIzúr
¥äŠr}o€rµ±cÊ™©üæÖŽÕÏ-…Q’F„K­8àÊ„„"B4I"¤†_e"°£$Qd,³Ln ×DêìrùTÐ’¸jµiOXÈ×œOf;`¹õþáåáéKC~Ãåös|¹uš—iP]õIØÆ©|olls{Gdf¹MÔT=sY\Ç
1J±ÂZÌqˆhÄ®°PJ!Jp‚G$ä‰Œ"Ë4Â<Æ‚²sYÜynÏËøf3NQ5x G¤mî­×ïÌÊŽÀÊØA9c·>—“p²G³|Œ¬\ô©øXåL¾C6VÝÝ‘¸Øƒ½™›g®‘dB…PÂcjY#BŽM,(S’KÉŠ]t1'Ä4Zàl±±B,KÎžÈOÅÀ Xlèùb j
J¶Nz¾yóÎ¼ëbêÈ»¶?‹—ÎIŠõž‚‰¬NââûPÿÉ#R/øw“z\®ŒÈ€—+£¢©—aLl¬9Ž™%‘Š×&‰%‹‰6(")I„Öi¥¥ŒÑ…X@ÂvVúíó%×t<KÇ×AQ)d7ißÖ:X<Ò@“l:SñÐ®Ú ]·SGé{¿ýòá÷ÿïÿ²‰ªJ÷||˜7*bkÇ±_íÚøbBo&ëÃXz³ÌÍ3Êf¦xlÔÔT–’çžb:ž6p³Á‚…+P4Í½råŠ‹¹,vñwßê';½µCû¸kô‡éØÙžÙi¢ô‰kÝÝÝÜõr-/v0I§¡¬æq¼ˆÛ}ëºìØ@J³d>À°EžºIÞ÷w¸_ÜÞAqñ[óšüô¿wéì&°÷Úú£,Ò›OŸ”ÁúûˆìÇ‹6ÏâPDB†Â®Lh!@M¶JM„g¹lec{öÊ3»Bcn›[ôÍ4u´øpt§ã‹ü¦fÊE .î½kÑrw`Ð›>›Âg'9ÚjÑ¨c;«<]Í†i|ü;câyÝÄ×S;iñè`iðl@HàW~ÅÃ8­µ/W›¿yûñ
PË^_ÕMZ>c×¶­èç1R—~ÐãÊN§®iÛeú0™u9	ÏÚºL íõuÚuŠtÌªë<#à±]'šLŒîÒÇÝÀ>îòTª=>~øéÝO¿]^á+Ú²ó°Ë!\k}•wÙM¥ÃÏoß^Ñ¶7ûz<Ÿ}GŠÚN•çj’^ÝNcÖiK›Ý*\‘«O¾´ç–ù«žuyr‹IÛ¶¹Æ¼[ãŸáJ¼½rDµë7Q¾gÛc_6‡y>¿ùÔžxMf •é4WµK÷mëM¤]ï|fô?ty ÕoÿýÍOàpZ¾–Ûûd÷Þ~£¿ÿ¯^Ø²³géžËZ˜ïò.¿¼ÿôîŠ –žç1P0ÔeÎ?Z“¡élh^ýüËoW}sù×º†¹5-˜{¹Ù-Ž1–ã"ë/2æ›{Þ©ð.&þ[¡û.Ô¥öšZÜ}u¡‡*ÏA~]W~okç!Gc³%LìÚt`l¢æÃYSÓj`ÓzÌá$+ÍG¶žåp÷ºá¼æÁišV™G“övîdû"ó|X;ì<^ê*jWZ ‹âÒŒï]×~˜L=S3[¶ÝÑÌqæùÔBîë™Â–ë­¶?–E+Éê¿¾™¶Y¥EZÿõÈN¯m}“I¶ã{xåË«{ö]ceFéx µí°|Ûw¹±ÃI—öÿÈâNã¯Þ„}r¿WíT=u-Ü°-[“â¦Vz¶ëQ/›ìºL«iîšMÍì¸M«Bþmj5µ…}mw«áÄ_œú&N_ßb”}­]òæBöS–—RìsèÌyH°æŒÑX†V"Le,5±–,ŽŒ<!	ÅDi©AqÆ:áÌRj-·VïÊ‚½UÞŠ}:åòõTò§Ö¢¹I·XZ×ôØÅ
{‹¾e6sÉ®[*³#múEh=‹(ŽB5R—÷ò …ö¿¬²c!ºÆE­x¹k[§à\¶NÚµúg»fÓ–ÍFíÚÁ±ÌÚ©i«F=‘ê·r>‡ëÉ¡¯`Ç7Çð*µÏ£=>«dŸXy÷â”nO®Ô:ä±Êá‘æ¨ÆÅn|Ä:'t4µØ%‘WÛü³y˜i‹&£æ6Žœ×µ*Q³Þh³'*öŽ› 8å‚ŸÇà®!4!ŠÄ¡±†Ä\&éX`1C &­,ÖŒ…(dœj**i„@ÅI7H\zsŒ.¶ã¯é4¼,ðÐ8-Ü=ªKZ<$ç4¢áUu½z [¦n-j”¢mPZ‘_{…F™~¡¹~M_ŒW#lHº@Â@šn‡	ŽÖ²Va!Y; ít_º‹ÜEüW‡Ñ!êîx¸8òã¢J?¤N”ÝU£\ð¸a¬cÀcn¥ ?ë;ÙÒÌ¡ÆFUìÕÞ
ÞÅøÝÁæÝÁÔ]Óôh»í1×c	/Ïx/¦ÓpÔ'Q3ÅiŠL$¥1	¥‘L`™MC+ŠB"1Åš¨ˆØ8f\aN€¯&9óÔÌSÛ{ZOå-xªlÎ¹§¶×M¹*êœöñä\õÏÅU¹•SqÕE'³ggÁ+ÇÑ®ÑpÇàÃ	VÂIqfCJ8·‘0Œi Ú2ŠÃ(âÊ"Ü—*jŠ#LâH%ð]¢ÃŽ|NTÏ28|`—Ùüyðâ‰,GË³‘].-…înR}ÈöÊ[à#+
†[övL\Í`Ò.Ysð*ØAP:í¾bhô5ìLþüRø³ÜäÏHì(‚1ÛˆÁ[K³Ç¢VŒyuÅ×™VÇ°»
±Íã/…‰cBöu^ÌF÷'†îÅé*‘,ÂØð€ Á"Ž~íVÿ™«ˆ&œ€èÁ$h”`®#ECÁ©Z!#q“D4&‰´	aÄÄÜ DÂ;%9Ý¥æûubÇŸDÊÓŠr“þÊ.D%\˜¥M_¯ÈËJÈ³dv« Kw*ïecíÞäé,È/qè¾.ˆUšÏ¦i\DÁ'“Œ³`˜Áµš#˜ÍÍè©^oOÿ¡$Hg+{yERYlm’ÖKÇÆÂ	¸sC®\¨½¬Ë€¨<,;-b›?¿ûKß½JÓT/É{ï.›Þ&ÃìÎ–M33×Q®žîÉÉë0Ïï“l>6žÖyJ«³áPÅp{áÖè©E~{/Ö~±~µ·Rf!ùZlI
L·RæHFˆïZý0¢d-Y	¥äíd§ruýâêïNWÓ¾¿Rí~¥«ßªô»øýÓ‡/Eáå»‚ +ïñ,ÍáÔ¾%QlûéJÎ™À©ù*¸m±¨Úl ;	f-¯ðI'µNTÚoô	<¸‚&íU2ÿGzuo§Ùý¿›æv/é•QÄ®LR["ûÑP×vlHýûÄ$W¥Ž¦Û 7önhg³¾­§æßo&W@O²éÕPåvúëÆ(º%“n#Ã²²›í;PæÕ“…ôÅºáÚ´¸U\Óîþ5Êëû]Âë›åó©kåâé^”?EÑï~ë$ƒ¿@/Œ•+i§ˆ­½ô{­uŠ;óbm6.J…4jÛ»&cè²u×ËŽbk:ušZëv/‘§£K3·:ÅÕ¸«ß¹O;àÎÝösúùÇÄúÇÊ_’—ÐPrÒeOË7¾ÆÜß›ÖL™V<%‹ÄKuzú'py¿«¶+¬t€¹þÄ­+¼G,Ý÷÷·½ó ãÃú“–´jgÿçoyv³4ñW„=þ°|¥úóY:¬ã[âk¾=bô¡WwrÄ^á­Æ÷QçÈ5è;É2½SÝ"%Doö«8¹˜}cªû;tèÔK;õ`°	G§`-Ù#[Êúà[ÃãivÏrWÝÂôRÈ7 ëë—G'Ð:´˜ø†œ¥ÑÍIñ(êËÅ4—J†8‰LÂt‚"i¬¬%~ãX*cC8CÍ™Œ9¢*¦6Nv%»j§¾t¡<+„í¿ZâÇ dªœae·’s»a¦Åß¾Î/¢›:¿H.²Jmæ¥â^9TÑùQaYÍJE±\š ÚiüÜuÝP\uóD\hòž^a‡_˜ÂŽÖ93ýæ£8^­Ñ»o¿)¶Ö]„Ê#h¤
sSˆ·m”NëZë1Úª/Žæ¿ØÖ+±¢lh¯•¨&Æi¥™è&º¶•X[K¶°Þÿøüþç+> ]¤Û–Bmi³“DŠº	°¸½ÜÚ^ÀýüËÏ˜_5­¤*yî!£v~%Ø¶•=ÚŠ(0î—ùËUØ¸ž?šÞÑÂ‚¢ŒDù$&qÎq¬Í.iaq‚ˆI¬tha‹PQ£P˜c+9ŽâiJªDí
?cÊScÊ°­»çÊ×íÈ’ú’I+3²d5Š¨Ç”]=qŸU¾430<\yÚ¼LTyTkÙþæš›Å7€3_’½ì)_O˜­ñ‰ì+;`ë‹±Í¼TSËìú2í-]uãÛêË‰gÇ-Ú÷°¥6ø9ÌTÈM(£8å†`¦¤µ\ÐÐP‹‰1URÅ4âÚÀ¿–[J+BbÇ¨›c»Û¥÷_œØ©;)÷å‡ÏŸw†6ŸÕ ÔKu«ma0ï¹D-ÁoûàáÐÌ¿]ÀLe˜"šÓ|8{)`ôQPõ® 0ŽüoÝÃœ‡‘Œ(® PÀ?Ì%ßo@ËwN¹:sI:×,«Z†Ž*VzX„Õ!UVÎÉsÎÉsÎÉsŽ6‚Ms.¼åI:®KbºÚp‡.Uês€Œ²„D’pJ¬ÉLŒ¢XÆ_”Ä‚ÆXÅØX¥yiMŽ„Àœ©.…Š ¬À&;š=}Îøåãp1+«p¼²RQom/Ú°°ul;‰0#ÖZ¶V¿ŽB“VÑpgDs:DCñ^¡ïðTŽ‹f`Àd(4‡ãœc:õ»ž¦ÏˆØˆµbÑÉ”>“Û¾ËŸî’vïg²D•÷“uRÄÌµ>k¤£­çT&TMˆ-cLe$°Rð¯Â2Ä!×…»Ò¼	ŠHe¤nL)Ú‘¢gžÛàs\ôá?Óšôëåðj2Ž
(R3¹ÆA1Ï¼ýè­ª+@eÒ¡Çaó1°9–;Í†.Ôv¹“ƒ'÷3ÜÎ²‰ÇPwémzqYÆ$_¬ïvÀ*êË*Àb#Øx+À’”mzÃ	 ËkÞpÐ&le¹\®®ïo_Ÿí³ÇPeeÍ÷«$U?©ÜžØnûî6\*ˆ_].ª¡žýVb±%,‡=Í¨mÌ¡;G?‚&j9ïÏï·™aköá«ýÔÛG
ÖQX3†ëNêú•ƒ¦ãNÈæEG…M²ám:ë/zã½QÈÉËeTÞVzHÝÀ9ÊäÀ}oáù¾ý«Ÿ¬¾Qã4m„ìmòYfRÕ5IÓêêó¥Œ23Ú+Geé ý
òƒ´Q¥âö`G„œ¢ˆÃ­%IÄ9üRL‡% !ëÐ£5¥Œr¥y$áÚ Ø¯C¼ì”ù!j¤Æp"¯aÝ³ij¿Z¯-€“˜Á·>-Òv”¹‘¦ ’¼Î)ëƒ÷z½·åÃðÀ)¸,Û^–#.èçôµËRâ‡ËƒÌpï²;¹r9¹³²õníCþ EžßeSS¤S)&†¥ÀJÕàEàÃüÕpT§u\uæqˆÏ)³þúåËg7Ç,Ó€¾ÜP*øÛûË/É|¼ùü!Pã}øü6-.eÁÕ€f™{¿Óûà2Ó·væë{k	‡yÄ6°÷“,·Æš
Ævæ<Ä‚¯°˜Ãºçw}ÿÐ[œ.ìiî­°"‡0ÕÖ8ž-à¥[^Á½ƒ¯j˜~h°­^:š­ƒ0lÝ§cqÖÝß_'\$–©@Sç 4n²»¹_÷ÜßÙ4ý£øÓ?!÷Öy=Ôd8¿öie¦nœQì3Ñ¸/ËC8˜ÍÍ^§³›yäbt1T3}“ÛÙÅêÝß®”!ÆÖŒžB
NØvàJCÂÙp +ªY˜i³b°XTßS–~-Mé˜i‹ÈvPN&š‡C»·B°Ã9¬+dˆà=!m±Ì`Ø‰Iì@‚ÅDGçe¨ÅÔì½Õx=Ý-îO€œŒkºhÿ$'³e¾2’´?§³¼}äiÙ¾	m©j¸ NÌcÕ¯—¿4EX._(=¬-N÷xÞ=PÕÃ \:RíníB&á±¢òyaÙMY¤™ÆÒjÄÂ„‡:Lh‚q"â^sƒ"*´F6¦¡b’af(ÈØ„’Ø$¢»•EéõM¿ôr…?;Réðu‘1M.<ÀÞ‡ÖÙ¹< rÊ²Ý~ì6xëÎ)øðéÍçàÕ§û|ãöMh>—ØãÏåˆ[ÝñÀ¢rŸ¨­XP©ÃºƒVÀ»€Í€çÇÀ+\–¹±½Ëû‰µî÷åbýÊËmô@XÈæ×7¸µ½þÃÿûË/_àß·jøîÍß}·0¢û}¼°º«^¹dçr˜Í+´™N¦) Ï=|‚»Ò	ûJ¯2pÑa°dš‚|ÕmÀÉõÚ •´ß9´wÐh8lœ³k‡
cåð•Ó¼Ùá°osgÚLóøÌE+ô.K£d@èM ˜nX}&KÔT¢«á0»ó;±jäB•ýqÁk§Ü«¬Êa»ØßY0ŸÀ#›fÐ/[]G3Ø³G†&MŸ0Ïm¹@Çk‡¸¶š¼ÀqjæÐ0œït>vÛ„¥ô(}ÜÁÖã´À]ãlÖ»ÛëòóÁ¥¥³Y?á¸`Àâù¹]Ã >*w~nx·=vt¹ó2ù`o•‰©Lœ:õvã¯ ³þn•ó,%»à³[Ôêû9{Þ~\Ü½eâÃò™.¯¢û÷rq#?ÿú™ÿÂGÿ	?×³WzÓ=¾¡½žÛâb¶ZÜ¿àÚ•×z´üâ9ø;ØSæ«‚GáRÆÂ¡Ø$IujÇúáuyÏÓa:{(d_¡Òåft“øÏÁ§ùp–ÂóìÁ[§çÓ©»)ND¿¸›¦3´ÇVÏyá7dt¹^Î‹çW<µbu½|>qü%uXèáÖ»Ç6^aó¥XæˆÍ?çÙLU¿ïÝ¤ 9äú	èÝ!;vQk©GH†¾èá
»ˆÜ‘åVPà5ë5Y„$|º†É±Ó/7¡òCë{ÞÔ/¸Rë˜êŸ.ß}+Ô»¶z0ÈF’‘®qÔ%Ê^­©hï‚ÛÇ^zŠ1Û„ewÛ)ØÜð-¢:}»+ÿBµmìª/·m›;­ÎZëo'ùàéB~Vu¯í´.5õ+Òåë†8JÙÞ¡…ë·ÖãÆð÷jÓW¿~~ÿËååÇ+ÿ5îš¸1aPë`õeö¸¶íZ‡;w‹ƒOý·ˆ?wÍò¼eÃ¯mÇœ; ãµð/24M±·l:×mþCó¼ð‰©3$œå*â~»¢WŸ>|iá]R¢¥”ok#ƒ°Å5iÙôYÔ4U&n“¡Òò•ûû!ÿç°ð‡ºÂ¢aTóñÈóÚÒ_6 U:Zµk?Jã¼Uók‡$}^BÜpï&zÚ¦Î—k6Éòô¾M…¶HjP6zõ·¿~þùJøLßÐ˜­b['Ú˜õX6üÚâM€\« ¥Y‹v¹Ê‡¤Å+ÏŠ`ä†«¯f´Å3Éóa+¶¹j×‰gVR Ö7¼GÐpðËf.Žñ÷O‰³ÜhÓ2¶uãWo[¯hÐ”­f[/qxV•OÞÿ†q¯ð ùÕÙlO¬cVÿ¦9ìøêÇO¿¾ûíãû«·¿~úüæË^F¾×Ïv–Mf?þx93m]¡]ŸÐÑ5»SÓq:¾Îâ ß(“Ý- o³ú<×uhû˜ ».Qï´P|Ô˜[±
õ¿þ‘êý~s¶Å) .£ÒáÃÅšæ}»áÀË;Œ®ï\×`˜]O³™šÙi1ßD9_?Œum7FmƒáhVß`4Ÿ üµµmÆã†A&Yý÷^ö}Ôâ‘õfr›ÖžMÙÁgôÜÞeMç¤Õ`â*‰6Ê­}8Â0[‡(zÁ«VˆÉÛ÷~TCR[·ãCLI†’«„kJ­ˆ@œa¢Â±¶†"uB5r‰xTd,5š‡Špë$Ñ˜ÅölJ:›’Î¦¤³)élJz‘¦¤ð±)iGÐgrNÖóY0)¹Ïq±ÊgâÍq	»ì+í£žÅ˜´Ÿ×	Iß3
á[5&5„ìoLj\¸nUêÔka^êÔieg:fÎ·³Áé™N]‚^—æ¤}ú¬«ÓZf¬ë`‰:Y¤ýBk—§íKÓS‡_;ÏR1Fµï³²Jµï³0OµMåW±S½ èå­&¬Ö=«–¬¶åœª&­¶}ª¶­—”špÍ˜µG—Çö¯Vc¬™ÁZÎûØÖ­ãÊ0Ö¶_ÕBÖ6dla*ëÐ~e3kÛ©´‹uk½´¢½Àp¹:KY«Þ;XË¥®bmw--cm;TLdm»Tlem»¬Œa;ìÁî»<[Ù º¶ß0«íÝ›·M/ºËÈ¶wgqüÄ¦[mo{u£óo¬YâZ6;ä^‚A·Hlr¶Ëírg»ÜSÛå
úñÖ9Ì…ÊD:ŽÃ$Qœ…Ôb›X"©Ñ6‰	6ðwŒc(":æ„k¦¥@aŠ]é©é+Zw··átÖP¤ÄÎh™Ñ›Ç|,teà¯Ö§›.bãAäÑ:–áã±])¢½¥¦ÈÂXzf7ÊGx÷œih:Vr”—£˜´ÕÀsŽ°XOD"D«&^$%ËƒV
xÿ\Îjø½ÕðLÙ5ÇâÉ´‘F>ºÖÜc°7ã±ç²ÆC—Ãàí‡wµpÌ÷ñïò?–]³é?¾Sv”Ê« :WÃ—6ÿcìèÏ1Ç‚µ:¢wÜ!ß~ø\U÷DÚ>Œ¢ë‡O—GÞßå5äå‡÷ÿãEJq2 c”_l4j|CšýoÚÌu3ÄÙªð/nUØÃ6ÐMgÿLº÷«ÖîUÕÒ:í÷¨	ï®k~ñŠã5ðAšÜv*Ùæ¨éä ô¼?:î‚~÷@·]Þ=ŒÕÇÌ‰VMßufšüþÞ‘øãý$ðü¬f7­Ø³ñucã¿þø£»±á\þúKc£O>ìu9rüÖªñÍ³™5¾ mc_¬ÓË{}HcÛÏ¿^~ø½±Õoûðãïs­&Í'àRÂôù0k>WçKÚØHgN/Òbã-í_Õ´Y¨=ª1b‹ÊÿiQSµ2ÛÔ ‹2¸‚kuUgFM
%Ôv•óª™SŒ7ŒTªÆZ9åxS“l–&&Ù„64ñ{Ê[ÛèkÓ0Í[w†‡š&Þ	NMáñO]5›š|e7·W^Žªm4^¹ÔóIc3x•œ®ºðŒ7qcs7us3c‡©á¨oæt{Î½º©ÝÙØ¦ã$«m÷uÖjuÐÌÏyå‘j8Ïw]ê¼|ÃÊ£llåt’«„†&^¯ò´£•?4¶Ù•oÙÂÞO€x4µJìLß¸ð–¦†m¶çâ›AsqMÍrWMr¬›ÛÁÛÜ¥©™ç°¶þƒv_S¸GÀÜššù¨öZõõÊL€Nçºöš·xcÒÉ|z]{£ØÞ+ d&€†ê[4]ÐÉ¬ië@¯^Ë£ñDz›Õv½Å®ÊjE‹ÎÕlV¾î]Byc3¸¿¶¶Õl˜_M¦óúG_ßOæãêC=Ì8é¬ûÏa›´LÛ3*’˜R!•È › Q¤…âš)¤¬Ä	Ñ!Ö…Çˆ%BF’qšì²Mþ¶0=ºPž‚SÍgXsazäÎ®Æ:é¥¤›L³ë©­vcƒ_‡9ÇŽq ØYð÷/ ºÿ÷¯¿¼/·\Jgx‹R”ç+‘¹aÒ·ËÆÂÆUä^ýí/oI²?ûªt›aÔYAo­	&K¿jgõUR\ˆ¢ê‹V±U½ª±ô™9	kkæ#ëë8'®ÜÜ*È(
q/­,œîÔö5p«úÉ·mãÄu­ŒÏÇžÞ+wø– º%ÇqSj1ða†ÒMÝ#XŽÕ¹àÇ‹+ÌåÏÅ©Yûù?Õco—jí‰ö«Ë…­‚[ërÛcÊ¬RÆPä|q¸ÔTÆYn‚ŒŠBdl£$d	V$wp¹Ëÿú¨ù½«q”¶Oø˜Ë7—ÛxÞ,Žå1wYãº±ÊÊem®EÐk¯ˆVÁßÞýôéÒOï º/zz£\ sYËâ´us·­]ìFH&"*«ìÆ}Ä¡ÛÙ|µÎn(¡’WKmÑ°erÔÅq÷‹U›êµÀÊ8’ºÃ?IÙ­i<USï¼uZNäÏcí,eDîQtÍŸºöhêhç.2ÐbØ6™N;_X‚ÖÒwPBkµV÷kí˜T³EZªn'ŸMñ‰rž"w^»„sUµz:ÞVR=„‡Ç˜ƒä)‚ZÌ)f	“œð8A”‚4*B£‰B(O\éMšÄZ7W8‰ˆv)?óðÃxxôˆ‡c¾‡Gt“‡SUEFbzïä{æâ\œsñR¹xƒ¸/?bú†-ìüÈ‹~Š:Ý/¹ˆöó8s=…TœXÚÇ-j_vFÝëÙ°oìW»§°Ïïé³ˆ"‚&(4Ê '¡²4Š$Q›aÌu$¸b’j"©•<æaheÛ] áÛI6ñÉÍ
5²ãÑÎÃÕï´!ŒÍò0Ãƒá‚ATk".§è™bbVå¹ó"ó˜S+ûÁ_»"Ž~ ¿0;ž¬‹Õ_÷þÖî*2¾{óû¿Æÿž‚`õi¡`O”öiºŠþ‹œqn^hÒ<àÖàs U³^‰U³ùÔö‹Dnp>©réÕFv”Mž¬T"<™Ñ…?Š]`…B¥ÌYN0nè`…ÀwÅ½‘\W8`÷w=X©¾}õI'UÃG¯Ö>–T.ïSà‘âº/w{°Vó®Zíê±×1ÜmD¦qÀ6‚yët•É¾–´¤ià#ê²o¯û¹›Ê­;ŒtÔ/÷»¦e85ói+§îË~¤aŠjN’˜0oI¢aÌ¥”4–¡Õ$Š
u¢)å‘0– N¹–¡”æÌ~¾kö#7Ù“bû	³Ÿj90J\NÇ}ØO{)ùÌ€JD;†Žžž5ˆ’ß1:ÖÎ×ÐÁÿ`N”fû² <àÀKq7.¤¤D‰A¡HL$6’Ð%Ö$2N8â±ˆcÉ"’xœH£@tâ‰’£\èsAyƒ¿º`þ
	/éºËïü‡ºñ¾¬çQþ¤Ê|Ÿ7ÏÔÛ2p—ËÔqŸJ Lví‡zóùC¼Z¥þ³KR0Îf.O03Óó*ÁÕ€¯½CQ0Ê'EJïriE:Uò™¾ãOðQ9oµ£‘zXî\—œëÝÚ‚ýðî¼£x”¾•Åç.%6ì¯paŽ=yxŒ²¯öÂýºê:.’)s»sùæë£”K;¥¯‘c‚ƒ4ƒŸæ¶–Êp“r¼]
“¡u•1R j©z,1k¬UïFß¿Q}üÉ¶h†]ÈÈéx {k>˜ì˜ÆØŸz½SÑV·{°6`ç û3¬VÑÜãã‡ŸàuûåãU›L^;;·ÌÌ·½ó#EßŽÎB¶­;G\zŒÖ%t·Òæúå]‡ÃÜÚµåqlëÛ22ÑÑÃcÝþr¸NÁËö°ðÏŸÞºÂm2¿±L”;z·yÂ‡hÎÛ%z[%*áþ.ã&žçûèÕñòÒa2‹[ç1òm,µIŽ¤Ã2–‘Œ©ó–‹'¡$EH `ÑHSB,—ZX-z’Hpl1é¤ßx×ÿé·Ë:Ü¸Í!»F¡1¶ÖUVªzeÕ…N#/&>¹_v2uëÉogYak¿,rážñ£;Ç ÷5Ç9ÿŽv (.ì¯#(Š(®&£Â”aÜˆ –÷®_\¡þâò´Vg¿*¼´D}ó—öÏçXŽÛûkö*=îOcóEX¡CÂíí#uk_½ûižãLäßútµ|¼Û†iA<F­Sï;úJuQ<Ž'ðTºÿ|úžúx`yMgæ³ó°V+.mƒ«ÜýhØwyBaúcjBv²­&uÈ‘W$âÄà0V’àZ’kÜþpÅÐ¢J
‚“%1²Í#…‰â,ŠËA›3ã:ã
4¿Á¸v`q¹¤‹Œ=b\&ØÝŒ«½àÌºYêZãè›b];tÿj¬«>ÅÉ“°®6òè	y˜Ä:À¯	0F{º6‘Äq&µäDaeCŽ˜`BFÈ`KXh(ÑÒÆ1&2
é1ÃØ (ÙÁÂ>ná;ËÜ¾Ž£ÌóàghÀÕ1Î»›±õþZö.ªì=Ö¶V;äÓr¬¼Çb@Ó"$y…c11A"måX‘ôIÕÊ{!k>C,tQÓm8Öêžõý•éè:\ê…0©½´×«#¨nþP. ¯³
{ýYÔg4Ýúf·¶cM—á7Ø‹Ÿ¨žÇ£?µew±¸cï¿µ°³ÁZœ² ô¾ª­™±èUœk‹¸'{?Q­¢©ÒlåÛÐ²ÜÐ4‹ÿaõ¬MëÇ°¤MÛÅZZ¶^-çDŠÙº¸§¥BÖpµ¯\:WÆØÀ(H¯û¸_ù8¿9Xa»5´õ8 7h*d“1#Ú…EñX$‰0„ßÈŠ‡(ÔQâ•<‰0µÆ<dXÀBqÃ^¸?Âi7²ájÌBÂYÃ‚5&Ó¨ÃíEÝ—ƒöoO:û ?rh0ˆ÷Èáˆûï.kÖ@ˆö+H¢åœ+HÑ6«‚-ÚvéšudÚhÓí{íÍÁO‹>î1~&­;WÔð:O÷˜ÆJA	¢*TÅÀÓ’Ð"d‰EH ŸH	|OÚ„<QÐÊ-p+ôøã~q®Þ1Ý˜¾óIo¡y÷_¯Tîy6ZÔ2ò:ôòY¿ÃÓuntÕòE¯¡I–[àÉ¶—º²E)ô·5U³%/‡•˜•Žœê>p.†å@Áï/Y=ÏÚ«çQ¸Ì-hUÔ%êåõ<«æO§š§Bî]à©]Ÿc¬M?e±˜Ó)°buqv{²Ñùóß>üýÍ—÷WÅf_¨ßXY ó)Ò¢uJòíø;<ò‹ûtœÎŠá56õýÚÙýû±«ø³-£«/¡8ÍÜ®f$`‚û>Ð@ ãNðè}:mí³ôLsw`¨æc}à(Ê~îg!b° ê´›ŽƒëD*Œ©`XÚØ wRÊ
Æ8×ÖH¡ÇH(FCªâX„XJšÆahâH“]æý7AçeAÅâ¾íÆ~÷E@Û0»ë}ÌÝ¶!\…Ä<
	&óéÄ‹Ô§J-	[ zÎï(¸ûÐi?~¾´³™{óùð]¯9)–pY×cÀHF”O¶Få‘5•GŒ'$[Ñà
²áØOáÙ¼–ÐMHÖè–æÕ/nNŸî]ýC0,¥ÏJt?Äðxû‡«:XÔÕ­ÞÜÏI|û¾»áŽ;Z;;C‡Qït·ÐíûvyùCû§Â35_;	š<:“ŸßoIL†f†g¶]ÀÚ‰hæéê3›­õ­·7»ØRØ`gËãêìfƒ%Ÿkº\ ¼}\
`wGGW‡¦*{tž)O]¹ïÎºÍS‚ŸÐh­Í…«(P‡‡ÖŸï‘P{sÏþX(RQ"0` Á#óPŠÈbN8§<"XÈ„HŽ”F”qE5‰ÃX!)'ñ³3:¢í±~ëOÂˆ³µ`ÉÂFûÏc0Ð5ÔÿÅ ¡ý¼FN†8ïêØøM¡¡FÛÉ¾h¨­Þb1ßñQõ”Ž€^˜ýå0èÔV+rFPgµ‚ê[“Î²éþ¥q*¬c2A¤fÊcƒD(H¬‘MB,×ÒÒ„Æ8IbŒ0ŠEÄdr£ihBF"»Ëqæí*¶çWåíT?OÕäÆ•¢ö&«"Qtv&0Š
¼µ°õpNœ68½M+àèó4s$(oƒ’¢G()Úî$2‰¢uïZ,©s”YËÊ‰V8©8÷~q?:'…øø\gPmÛñÁøˆË®Ú¢J±WuÌ¦ÚN«9ª;”FÎÚ„Jûú‚,ÛÉDã í
Òt|dm:ÉjÏfÙhûÁÀÑùÚó÷£ápÔ>°îÚÜö;UÇ~ÁðÈu›uÜNWKØù¬±æ%g=„COÕÝ¾¬YH´|-:V­CÈRD„¤©­HxÌ¬ÁŠ%.­o,46šG#b*OH2xHq¨éÖüeÁXÕ™³™°¿ ¹ý/³)&½N	Z¹,‡5~­Û=ý¡¹”‰.DÉ	ÙÃt\¸¡øQnf»1oÏdwã¡+Ãm¶.á¤ºýÛ)¬u0¶³‹ÿ®N’ø+ä}s—›Ì]ÈíÌD”Éõ`Oà1’Tó<1ÑÆâ ~Qýâbõ¿•"r{²ôG;=\×…«ö,ÊÇùÕÔóahPÇ#wƒÝ£µá¼»G=ˆþCÁöy÷Ã–üà{íÉv[ÿÎJ óÿñùýÏW¼m>œ¡å¤‹3é¨‹oÊhCÐÊWãÄê·08OàlvèJ¦ïÇÙð ¬dvef>´Wî¥ôCá"nâ(’¸=Ã#–…(‘	§!³©„ÁËj8%	YBBŽVFIâˆ1‘˜˜…ÌùA„:fíJéøø0ƒk;]†Yüœ-Š­Žµ˜«ëšüïÜQŠþ¶ƒ—"ñ:–%¾á¤{šÿ O'ìë ™‡‹d¿¦œÇK¾Žýs6Š•ä7Ù|h‚Øö¬ÊÜpéøkvk½B{ñÑ„âàíË"œ;ŸÎ M‚‡lþ§©KÖXÔâYlÆy~:ídšÿ4ƒe»ï¡ñ4¸Sƒà¿‹*²Êùx°Móz}!@i‚l>s[]ô
TÞÍõü&Yž»r´O–­ø:ëûë}Q^òíaðk¯«a…«ï³#c1#‘`bCB$B˜JED‡„ ¶·²¾úµoPþþéÃ—oÅÑz÷gu„çÙ‘çûÅÕç+èDývOÒ.Ûã&~mžâ(bôÓäVü–Ò÷b{x¼¼6È`øõ0\àuN>1Fßå+Î0ñÓòâŠ®5nBl".b£µP1Ã‘²É’&RJWP Nt¤O@ ÖLYŒMLœuW¾UÉvÇOA2M'ó¡Oâ,TmMõÚ×Ûy¾ºL}ì›ÅŽWK	”uÒõpîÏ(÷~þå×Oï;ÿ¾{ŒìxîÊì¤«ã«¦ÆcøÒz½b‹ð‡õé‘Õú|ø¡Ûë²üzåw5ëÕÅ–Y¥ó‹×U¬-¤d€½¢Ä_ùWŽ*(]–ù©ÜX=Ë¦¯ƒÌ&tzè%é½;ÿtÌ';ñP	@Ë”Üýºå%¨Q8T°®b»/„À®x`BÀå×ÜB	G¼9[á£:· ÚßˆJ`OÔP·éƒµw}´ Wƒ-ô°åÀ-}ÚN`GJ»ôO'Zÿ®áûMqÂÛg8¥‹D±ÔU¨#«äO[§¾'‹ólhg5çÐø¼?~Ùö4–Ž1>ë–£ÜØÍ&¼©Näüuú-\«mó·­i?wF(»ÜúÂ}úúzc‡“}£Y½!n!-t¬>Œ„Âa¤ø
¹%‚#b
AÈ@Œ„<–I­¬%’ÙX¡(F1bG¤èpW(«s`4™ž»Ã‚•ÅÓìÎ;VìÖ·øCð—q°s€•Æª#ï}˜wÙ ÑšµÃ‡=çÚŽ]'€oñCà,`ðõ“:¼™Lò‹w‹G^0$z0Ý
00fX„ëG©ª(!®PqÂðË*¬é¸sýáŠ‹¥s%øvÌÛ¶}p¡aÂHÇBÃû8ÀËËUÞ©VEÓºpÐ]T¥n¼6a°Æíæ6ðø(Žë2°¸&ME›öÚ*ªf®¸I'¾Vé4ë—öÿN%“]ÇNz›å;Ò¡Npw‡	s{5IïãyÒÙ™áûrµø‡úª
Ž¤³©uÝÃbF,^ŒùËéÈ€øe]/­ïTÜÜ®=»ë rOài…]ü|îl|›ÎHåÔiôý] â`èéIÚ~¥7BŸ”Ç”E(’I”$’pK#'4F(ÑqZs©éc#r™Ý0ærWLÏÇ²h§+6Šé-±å8(ÊŠU«~ž’n×î­jŠzãš†‘¥Ô¼ï«[°÷Ñ)M/$³eÙA^Ú>¼{j­Ù¾ öQ´Ð. K(ßŒ’ˆ1T-*	š³ÌVîó:œk@}Æ°kÐÃ®Å;ªOàØø²±^ó¾ÈkÜÅ*Vs]1\[èÖ|uÆ\í¡V„ÕXµÅS{Ã¨6€¨øéŒyÚC§;°9žÙdŽSžBM™ÐFFq’X¡€…–'!2RHmCE¬Q†Ð$B`IDâ…‰Ð®¦' cä¨¼l ¶*„mpR`—4nT0Ic¸ÎN rV·í	Uê¨n{¨rd%Qƒæh˜åÅ) Îº¤oD—tÖ	=Nh(•ªav½_.;<XXê1-„#LPÇ'YQÂWø	­µqD)ùŸS®m2l‘Q\„\ vŠ„"˜¦Vl·Ç÷Üûy=xl¢áBx¯/_þ'(6 ›ªóñzW´òþÞ‹¡<î.àÉ¹8;˜–ßdwk#¯JÀÓõþ9·yyœ«Y‘1ÿ³Csn!¯fö~Œ2cÝG3;M”¶Îl5·ö˜¢çƒ¡œýz*˜Ó‡A±Tï4ð%s«òà«ºïñí<Ëô³æÇÞ qöÚ;œ½†I'óÙëÅÂ^n=îÓZøS¦9|0U&ÍŠ_Zô®ÕüÚz½eªßrÆÂ³<¸óÎàÃôÖû~ùƒ·Žý´¨/M½«y?Í‡°bÑUL_þÜÌFÃˆa›0’;`!¾nkuÞ‡¼ÕÅ)f´Ñ›Ë/¨ío¼M“ýŽúÞTàúÅe™édèo÷¾Å€ŒcÑµ’_M½£t-Ñ«µMb¾}Fw(°¸×Ž…G~môF¢Ú”óÐ|¬çÓÜæw-Fž9"ÔÔîÄ¹ð*v•’E`VÙÊdÛZÌf-$uUò\W†¥a1Ž$ÖVR"‰ÃXJEŒ0Jac?8EJb¢¬Ž£3›=³Ù“°ÙG>ÓÑŸiBGl6’RTsñsÀ…¼QÑ²›ÝtMŒrf´FÛ5ÜÉmcHÕÁŒö¸Ê–'ñÏXãÁ-çZ1ã—”|þ˜Ì9I\9¶ýÙ3_èë¢n\™è˜ñ˜S¥”Œ­È½1Ž9"®²­¾›˜$±¶‘AÈ…ª†ˆ”!ÛÈ•‹àœÅ…,ŠÎ«Ôyà|”M±6Ù|6)"wÝYÔeú°¾Å2§‡‹/î——‘P>ÅGüàz[làô1®øŒí­fšmŽå#ŒÒ|2TÜÀB}Hõ¢1P~;õ”òuÏØ¢nPQKxû2¤)wlß*Øµ¯PY„ãó¾ZòðÁ[-zëØÅ–“éGéü`C5u\»(VtiVž¯qçÅ,öqÔ"*|ó9lN×«ÄŸòòyœ4ÝÉî½xjx6Ýâ†¼½TpÈœÝ£Ê²9¸šÊŒG¤¹à_¹¨¾{ÏúQGN}”pèj…—<ç”5·ìöððgÎHWî\,£žƒn£{µÃµcÌÛ‡ÝŸ¹>yZŽåktS*%û#·²?Î¯Óñ&‹gîG›(\º=~œ¸øqŽ~€“jlP{ÞIŽ­Œ5¡c£‰åZÀQÆ K%7ÒÆŒ$ÆEïj®™P:IBZ‡î¶ƒw½‡ƒ‹A
º	ô Ô-ŒK=1ÎÒ~±…‚Õ¦¦²À Ê“>û3ôÃ}r‡êXÂ2p7ÍuæJš}UÓ4›ç‹T}83Òº“¿^¯“°÷VÏ=ÉšfÙ¬ÛZ0·Å¼nBµŒ¼í•#/]‘Má{	 œ¹ø:(Mó7éõH·‹åx¾½º÷J³Ü}_Ú®BØ6Öôç@}UéÎÖV"l}Ë H¹Õ+Snå·Á+WÊnw6üºHÅ¥àïQBæ®Vžú!‹ü&ÅÍ¹Ø ‡a“¡Krâ‹Ç}UÃù2dvÕUD«aîr–GáNÃy=¨‚MºÿäŸÁÄñ|›÷Št%nbÄUB×âa±
W©ndAÈ²4#ÿ0ÉÃÅ®v{ÚîÊá†UéW‚ôÊÉÒ¡qCú¡ã›ÕäéÂU'›ã…·.±ï‰C¿–,
BÓª²îåÇ º?©ër‹ãa±ýXîÞÇr0g†‡H»ræm«­¨íDü·Î:úZDÚ~úA1}þãöe5D*ÓZÿ´=çüq’~l?ñþ°Â­¨ï0Ü|[âôU%½:§:7Lù¢·A^Œëvc‹Cù±8gÐ¯ÚÝÕiH‡{ö-_5Il›Þúfº3™~A`…„*!cJ,c!“$¡©¥t(ibç‘­".CTb€í£Ãdúb£E®ÎüeôiîûM°HÑšEJáõW†¨Ê#ªrÑ¬®»sgfùŒÌ’*Á,ó¨Ló0>RÃ ŽDHóÉ0=@Å	ÿ-Žƒv´=2µÀÜj!±H,6œÂ»JC”È±Ò¡šj…Ø‚ô(ÅÚ
‚$ÞU`à·…¹0üÞ–T.­38zßæ…z´"ÿ=¢HôÍ||›±…wâæÔ½·îãÀ ?ÆÜ¥1ÙÍËaIê¨àí»‹wwÚ¬Åfz›Î¼ws½ÒnÝŸEDH’p;¥%ùZ«? HQÃŸh¿¸9}ºWšâç3°í¥»+ÆÆ–¦zœw¹*¿^Ë¶ã®±þnçÈ¤ðYèÖ@ÚÖ,ôÚŽÓ<ó)Å·{7ç«·w¦û6wîÇ°ã>lÙü³šÝ46ýÙÎ²ÉìÇ?fãëÆÆÓš:úØØ4ŸMS]kÏsÍúÞob2uŠ•m‚NX+ˆMÁªAQº`K(J‡öa¬@ð=éî»rWûg+¤ËDÚ¤—£±Dª˜…Î5Œþ'HÛ%$ILs„ˆ cM¢i¤¤€‹AZ:¢Ö&»lyïú?ÍáªÜ]ç?º-»™~ÒXç]ÓÜù´B ÂE!AÿŒ8Ôz‘éý*·s¨ˆ±õôy!£k*l“DÛ½ñ8õÉ3¹ƒ<M½ÆÌ²pw–µmQMø|Ë›Ú~ðv¹ôvLr`~Ür9S»ˆmh?å‰Q
yç©âWæ“ñdqmK<aé™Vx`\ÓGøÛE_ ß—YaJ‚ã„ÙH„‰2JÅ!#V%Ì„QŽAJ‹•DIBgœ"Â£Ø
I±Ëx·ž[×›®¦AQ·d;Ei­„öÆËQY²r-ua,<Cévã‡•…l×4ÎÉÃéçc'Ø"	Ü»¿¸Š ÿ>ÌVŽo>(Ö>Ì|âý×N³éë`Q»³ç,W3•ßºÌÁðdK@iÎ>¿TJùõ¾ÖâuáODo÷Ø ³é±!#ßºd­fÍ±¬ç/iÉWž:ŒáiÙéÆfg¢Ë‘ÎLtZ+üì MC¶‰^è2ôNxY1w²ÅÐE"ðMÝ»P³’­9pÆÛßvc³]¸k{¦zªÆ'b¡í%¾½™hbuIíp‚Œæ&Æ\`L)LcÅ ÞYœ–Ä å	à°‡Ê•¤§RìªÎvf¢/“‰ÒM&êŠ×oe¢Tòu&!Šª¹W#‚›Ãwð•ï]*=>å]K¿œž6Ê³ÑcV˜*~z–h_N1Õ½™ñ^;;µ{—2¯Þ}Ú1+È&Qˆ¥‘ŒG‰ ,‘TÄðÿ„cÊ8&*Æ!GÚ¨HâX«ˆ‹°vJ[¹«bÌe¡*-k¸Ì¬çLãë’–%J?Y“ªàoåæu²yeL=Láqåk^¨>¬aQ›ÆÌvmªÞrªàÕ»OËÿüüŒÒ•á#ÉŠ©Ñ„	ßÓÇC±¡ÈÅ,
E5É#ŒÀå:›Xåâæ•üƒþ°Ë­[>ÜÏBÈŽêÛ‚Ò¿ÚXUkGÛ±ÏÅ¸'¶+gn~Å™—©d	sÌ„Ü)Ê÷Õ}+þ•¸zž›%W§§„E'õuÑ¯uJ,ßÏá©‘nË|šäàO™é©b}ìL?â;%S8jx“¶î88ª£b#¦pQB¥æÔ¨PQlHH°$d+FcFEšqíÊÃh(‹„¹‘&Ú•†»Žºô[UNä0Ô¥}	 j¡mÖp†ñv-AÑˆ"$b’­ù½k©´/.Ý¿ÆaË†P\vTÝ¯¨bMGS¬z’AO§Ô(Ï8Ó‹NO”mò~4$]6´jàæ÷O‰Óú(z™ª|É†ŸÆÉÂÓ?‡vöNo÷"1`‹8€µ@ ¸b?ŒP†kë¨=¾2XYÃ)¡nå‚Ä(AqŒ•BØˆ0%8)‹-—€Æ•0"6Ç’ó]®‚¿üeë ÑåjëµÎð•n«ÚÕÞ-¼Ø—ãÅcòƒ/ŠäEùÃ»Vb‰–´Œ¾¨<á­x*bŒq8´
žŠh KìÊçˆ]ÐPO!*×jóâH4ª¤¶\Á¾¿Kýú[Ô!xèéÁÖd¢ylcÏüS{ŸÉÁ€Ä•Ž¹À€lËškQNWz±{l™õä“>ÌGýéM›€âbºÃíJeYÞfƒœÇ6·óÕzP­¿BCw—¾Y¶zya¬e‰.?BÝlx0«cò0»ÉÆ´úKÐÄœÇÉE¹ï•=sÎG*ÿç¾j2ˆä*oìîjËÝ*ãÕ:R!SJ´‘á<8b8/Š¨¥bQbH,HÖÆDŠY%A[ÂÉ.Ñ›`˜^ßÌî¬û7x÷×·Ÿ/´v1¾öz,49;µÅ™¸X²Ê8¯«rßV£9°[7œ8°^Sê7Üdå¾ê-ŒC§×ã"®m‘áÊu„æ¯ƒÌOéâÕ^û¾¯.ƒ±¹ª¹~ WàÃëDÜÓÊC‰ãxÃ`äwŸ™­p9CÊÌ"×Ã,VÃÌY¤©¬Ñk~®]ÁÝ¼Pü¸ö«3*3ƒøÜŸ‹9z…‚Æè»o´/Ö«Œ;›Û¤L&VM³»Ñ|—bÍËÃ3=›új$‹aŽS^àxÙv¶h^°õ"‰ØâùäóÉ$›ÎòžO¤¦‹”e `Gð»ßãž˜-’’ýôë¯_>{¬Tjg™×wù4kù­ËÐ[ìñ¤A‚wwwØø­<óàÛæ·å‹¸Ë˜‡1£=”ûˆK"ÅVÜD	ßÌƒÍ9‰Ö¬yœOnTDëê»7½¿zÇ»Æºë~¡ßJ”Û>û‰IG˜%öñ+j€;;Éñ^êÇ<ÁmTPµC?Y´¬W¹xÜE	Qí¢ø»Ÿ~»¼ÂW´­.hâ5mÕ7Ùõµ¦‹Zf­Ë_ýù¿ß¿wõHW°½ojÆ¤‹veÕþÃ»_ÈrØ°enT;›µï`«öøåý—/ß_ñ=‹nu ‘Özê¶ÖÐ‰L‹‹¹hÙ).FtÕöøkzQÌ50J¿)70hM“ç™túoë­Í–Ñ\Ì©÷K[Ðƒ1lß9×îkz ’åZRÃÿ”²X(¤™áXGHA®¢D©Är
ä	ËHB”	Ãˆkj­VÒÔgUXx/gÉVP\tv#ÚÕ0ÞÝxž(ØÓØ v-ÆZ;Ët6tîŸs;}¸p9æ¾ºt¬îû^1×Ÿòr¶—Š‘m‹‘§b£ª- ¤ªn	#ÊF×àêõ;ã¤#á$…]S˜WŸÃ	 M1ð3›'Oœz£'Wþe¿rïÙ*¾l	ûum[6ãRüÜêþlš^_â“š°›K†æÅ!K,Š“Øji‹PDÝå`XFYÆ!V*²±‘@öyÄ	—"RxµwÉŒ‹¬ ¥;µëò/Èª_Õ05(S‚NƒßÆq6›Ýôý¼*ÃÚ"uj¡E(‡©Èÿƒåg®$Ho9áÄNÝ#+*—ïß.—•ÁÆl¾šHÿb°”±8Y”òøžŒù°Ì×·\¤þÞ³\ ˆþÅ¸3›Ï
A¿²³ÅÚ×’«/ò»þRÌöÉ‡¼L{k“¾R-»o¬ÅÏ‡3¯{)á4;nú“3ÄñŽh¨â~»0°<—)ÖóŸÊÑÔ;²ðÍÄC˜DÛcO1’›ycd-úÞµ`•åõÝK×;z²ütùîÛá‡;v{0GQ´§ËÚš¼B¶‘Ä]\±2êImçÇÒzp—KZgWå±ü7¼þyQ‚ùa9º„cê%<K6ïr^_L@"p¯N¿°UÔt['zu"/Høo™r¶ÔUÖ×¥Kµ$É]!†:oŸ!Üƒz«à†H[=}˜Ì|¡ÜÚ¯c½Ï¯Ÿßsûx…á¿–J·ð.Ž!{ø«¬uéìô›çÃnGRéÐõ<²	Ðê¼.?Ø³¨Næ,è†ŸÛÕÂqe±Kª>«T¶QÎ_¶7²ðÑ#ë3oLS°¡9H¤åÌý‰Ûáú°ëCTT?ëoù…+ãJ¯ F4÷7yÝP]ûm6‘„±‰(Ö ¯ªànÅ j5Z×ŽÛo]÷ÆŸÍKÙÕb)!5KUoVÝ‹«¿7Í†Ý{ôAÏ'íû™ãÉmÅý{zéÍ†ˆÊ0IˆI°±ˆc£EbÁ„6Ë¬J4²Q2-¥DœXk•,2‚sïrørÉ-AYó§‡eÇðâX[ó¼´©n>çZ—°Å‰.ýÁÜP?ùÏÀŸ_ã„½Ç–r˜OàÄ3W†bQ×±*$¹·Ãúú‡U±gšÅNò[‰?ñÃ®ñßU%—qº—g£ò|F7³+ÌdMQ¡£ØMQ<Ñ‰ŒeíÄ»ÐüÝ7!\Em…+¤6²ºJÎÖrH[xµ=~›ÎòÕÞò"]««U:ÛWuè¥ÚnÛCÀ$·³lR7ÆVY®è~‰®D§úéî€8ƒSˆ­ ÕìváæÞÉk•N³.ÒÂ³ˆ4	à„âòuñO¦Ö:ÜÅ~{mnû÷wŽg0·W“ô>ž'{>QxÇžq… ×½Û^§ØYr2šu½ñ¾“¿ö{õLf¤s¿ïYÀn->ß›ëÒ,ö}	½+ñ
vx¡æ $_ßŠŒL¶µôµOw2gÙmßÌÌ#¿„¶/x¥Ç;z°4æ"Œmb5H‰„Z£’PZ”$2R±qÎ
šhZm#É•ˆhY$)µa´ËHuùó§^†ù~Âç._˜_F y:NWUßeú'ØCAÀ¢‘ûYõÅõn9TðêÝ—wŠnq)ýäã™ºi¤7³úÆ%B.×R`eWÖ=^ÁmHõÐæ¯¿çm¾ˆAžCû‰¯K?èy«~ƒmõ}uY§+öí½¯/9ºÊÐöë›Ë—E=˜a>*‡YÜ'\+€÷ÁÚi•8_”Ë[nýËiËR8ù&Syš÷J®ˆz.®f½@ÑÍÚ²"Ü‘dMpFÖÝMAVf˜UþˆÈeo,0[yiµï÷¾C$ÎÛlò0õ®ß®ºð‘«V|{uBñfÇæn"²wteE…&¶ªí¼`5f?¿Õ
{{ŠQ):Ñr)>ÑÀá©VžlÅ˜œæá…äT+>Õ‚é©LO´àðTO´`vª³Ó,¸Ö­m×ß”MÛµÒ7£¬©oÙÎØ³ÓïÙ«Æœh[m9ÑÝ±~Q6µNF{Ôèik7ÓÚ"q‡imàM¦u¼O¶â¦ÕaàÝ‚íë£[½ÿ§¿˜œÐ@WkÛwëŒ÷ï2sxØÌäÎôÎá!ÙÖÎ;Úwšè~ãl»Ðý‡{ÀÙÞp´÷ÝNö~×Áî¯ÕÉgCÛ¿ÏY°Û«v"9X¨º¢nÊ“ð$´†p#CÎ’P&!Šqb8f*I¤"ŠPFWðb<Ô±F*T\Ð8‰Ýoò‹;‹qðßj˜ßü)~¿üømæ7ÖÎÖ”:N¡Q«ØÉí£î>’8xÈæÎØ<Y5wg¨ñCuÔŠR)ëe>D¸xDùë Ÿ»ðæ<øë—O_ùµÈSÿû_?}ù8\póƒ~vùó‡žç³l”þáìÛO–e¡Y‹1Ã¨_Ù½®eÝ37’‘EüÑ†g.#JÖ“¢`N1l-v…sbÙXxmó6÷‹kÙ:j]Þ}úðåt-ËúÉá!ú–»?Bb]k¯m.©óo'!µ#·óhÒÃ1dƒMÕN­ÃeÛªOPD‹eµª¨¯u¶åZ>DÑˆþbÞ‘7¿‰Ês 3{_HÉFPÒÆÈUG° «'­Ð·*q+_œ;™Ç…1%žeîz_À=‡G³Ëem¯ÁmÓÓ¬×1ƒã-Øv‘ÅÉ<wÙ7‚‚gf…Wâ:ŠiWõ//.ëõ„ ZX$P¬-p@ÎâD“òHÈÈZSŽ¸‰d")‹Ö‘¦:TRkšì@0er|º5Íí–"u©l‹Ó(¢–Šš;Ë²ä7€6†[<¹ýFýñG:{Q>®zË7-7R¢­h‚2­‡ù0Ž×\Ñ ;i6ÚøEÁM¥ýâ"¼øòr{Úgíóàlh„óŽÙÐÊUÔ3ñmïeÝhm
ÊuÕåÁ(^«_ö,Ñ¯Ñq+«l§—mý– ˜ÅH`¤6”‰8T–G2
{rH‰BÁ¹¥œ)ø„‰§
‡h¨qŠ3Å¬£˜¬5ÅI(6(&¼ÏUŠ)ps^¥Ç”äågö~A4“v«NE3\X÷§™GÌ®}ñ<Euªl6¶³}I( FK'±"ÃB{:*„N4Ü/&L„°EÈRI)çþä†±ækª$B,DÇŒep,ÂttðËû/ÁÛ€ìeÃÂÓh:™vÑNßÇÎDå³×ky½«’K©¦Á"Ä³¨­àB$ÒñuOO³<_}Wq3/½øxz8¿éx~ÿÚ¥ðûÕçþÛUäƒžK-8ñNRnžáL ç.iž½/ç)Üœ€ŠW'xÜÙ¸·6¥_p
‹Z¤Žvãû.Ý¡ÔâH<G(S ›ð­.Ët4«|½d
ÄïbYþÒ©ü‚Ëwÿ¹´XàhÔ|Z¬A*î×Ÿªëó¥(¦@Ÿ‹t3—ò	•‚n=;× ˆ"’jâÄCÂ¢@¹ŽÙ«Üg™`®Ž÷ÀjúåkÔ/_ üçÓ‡/þ¤ß\~È /ßùŸoúÁÿþömÿ§ÿ)+Z}ºì.âÞþè<œüïÐå‡Å/_‰ÿíÃå[ÿó×¿Íÿð"ÿ·ÂðàxátðÁ|Ó®1*ÅbêT5­±ë«ù€ŽâúææÖð£…lQ°µXÈ1øYÈ»}×Ô™f÷epÎª»D~µR‘Q)ÉbÁ¨¦!Žãˆè„ê˜rƒˆáÜs8“€ŒnmLˆE1³‘Ù•T÷‹š^[ÏñŒè“#ö.÷¼#ßo³©¼™L¿ïn*˜ùÑýð“Æá{EÑä"/íÂ5wš¹y='Ôµã7-Æ®n‹ÍsÏ“nlÁ”\CÇn^«`Â‰Uë	Fa¸4ôlu¤d#Ç€ž×E"D¸ÙL´õ‚{ÿ€õÅ=œƒ|+ÅŠüi,öÑê—l–µ¡ºQøG¦Ž0ï¤/]&hÃºMTäðt“€rÌÚBÅ¼AÍì¦?t8¹_ì«}0Ô¶~é©eÖW3ì{µhÝ98éZë«¼K_¥ÃÏoß‚i4Ø©€áÓÇhÍŒþá‡.K¬öxûûïo~ú ïzËg[íë—úûïp-óíîè<ÀøÀþ{Uµ?iyvö?pý²eôk÷4ˆÇxð‡áñ®ÍÊHAMò($’°Ð$:â	BÆòDH'*‰*BŠGq‡‚1é|E¸Ö!=ýáÓ¢?|\ô‡¿!ôW*
"¹¡( +‘ýEa²þÄú“ µTlÞð~qUKðsÂ7ÿ°:Ã“P°îþB[ŸM=*ÛEaºÌÐÿušé Ï ð Ï ð; €líŸÓVîmÜ2'‘C~F²˜ÅeVËÈàP'&f”sÍ´ÑÄXEáo[µÒ\1³35u[üÇö×þµ€ì¸Ê?Ö ü{iÈÏ'hg"¢’G"ÜpGBÀ8ÑZ!nÎá¼ý‚{ûÆÙ~ôíØÈÿÏÞ»5·qc£ïú¬ýr<SÆýò=œ*íd{xÇÎLÎyQ¡Ñh‰c’Ía“–”‡óÛ€nRÝ/ HJtÂŠcK$Ö¬ûáCXévëâFú3A¨)|¢'.C’?£ù,õÃþl’íuU©Éàêë4£Q=ÍWÁZ\¡+K XVZD…næ*Ü£ ãÊñ=…°_î37½‰ u‚é,æ /FŸt)³ÍÐ	zÂÓªt°)êg:ð–¦:¹ïü{ª£ðQ÷»ïKEdgOuøÂ‘Ð`0YwvÒÓ³èËRÉœä–€
T†!…¤’%  “\+‚x–çB	qHÌrM"mªoÂí/V÷°‚›éÕ|ìêåo¯†çá|'dÚÁàºfLÕ¨íœÎ}8eÝÂoXŽMiÙx´Zt3i]4Ïi³M@æ“…œ~TúINOJ[_õÓlè„Þ	³â¨Á4,()	ÉÃZÜ¦³rþ½)ç$$‚-ý‡VÈ;úlòtúO¨7ž="'.Â>·x<FoSž&g}ÃššÃ5,éjÁq6Œ¶—ÜýâÚH{¸Ëêf[¡å•‰÷ûÅÝÔáäxäê%‘Ôxµ 9‡,+ˆÎr#p!3l¦Xa¤‘¤”˜œˆv¤ÆD+YrpNÌ¦x›‡è“Žè%ÃEÎ IÒcè =äâËëvn“æ+Ï‰+34zæÄÅ‹º„îbÓš’Å¨'a.òy,+Æ-äK?â,d>)W³† År½iåÏ!"P[ÈÄ„Š€’Aî^¿¾DÑH ÿôƒ…AÂaZPû¥loQ½‰è…bk„½y–Ã:\¶Öè‰zÔçtÐœ¦0ú½šVOF²<GOU2ÞKðt„ð¹’ü’X	`åM™»Ò Ìu†¡@a\dÊ!£VÔ$\¸”1‚0`”j-‘b<ŸØY÷›ß(z^¸ïÏ¢çI‹žM¢«A–…©=rÝ`$,°ý°-z
²,ê"z6·ïœxèDPRŽyû­<ù°…{Ï¼Ã'“;#sÏbçYì<‹g±3Pì|®ôB¡(3‚¢‚Fd. å†³BS•g"c
ƒy)*GÎWnÏ)RŠeú,wžåÎ½Mž$4ÿ2‰V 	 ®³öƒÜI D4Zî<ç><÷ZÚ‘îÿn^ËáÓ[È÷Íx|BÑ3.íò,{žeÏ³ìy–=ƒdÏgËl´Ì^h!ÊrÊ Ô™Šj…-²"'8£˜j–Ó‚ZÏ!á"
¨
Šyp¤f¬Ôys«¬y3ŸBÌäÁá›ö±êY§¾ðZË³Îp¬˜yN±bO,ŠÓ„„ÒÔ+oý(Áœîg‹éŒ”a#“;Ï"ìY„=‹°gv«ÛHSÏ-Z`EæHÊk„â)ÄŒQ
Ø™«Ê«HN8QE&B)c¿£ÑMmöG»ºÝEç»æÒVAöZn}(Þ“×}<ì¨L[Œ»t"á`¬‡óº–‡ë½Ø›˜©EcmzÿLgs5t²ä¯UeEÁáÐýë¤Ýe‰÷‹á²‰ï’Ýoœñlq}bQx5“ic©«0Aëúú“Üjd²%3`,°ð\ëÞž#MiJLW[ïäð¦-ä'gº1èõûŽ7}–‚ ÚN"S»þ,‰`Ï\@Ä²«í†³Ùøº?÷er‚³ÏÎeI•‰÷W)KòÔÕEÎêðY>WøØª{µÂÇB¤{®ˆy­
!$(¨6X²‚@«ÄX5ÆjØ…™Ì “ cÈ5Rƒ¡†˜gPÎ3#³M‰šKEÔ.î¬zŸUïƒÙÓÐ {ÄotýP’ 8l«Þ’AH ,%Òº¶çPûC‡Ú»œp§}gs×P7aoì||k/ÄÎæ£ÁÊö1âö[¸O!nS
Áw¾ÖâÏZüY‹?kñÏ¡ÅŸ‹‹ž²ñà\\ôlz8›ZBè3eMåS¢%@Ræ*D	nD¹"U C¥MfˆPKÊx¦!ŒÀHA”Úm{8»ýÏ¶‡C»ýXm7²1Ñ
	g;ƒlÅöÀäwl.[0´ÂTëÞžÓ­žn1$ä„ŒGÈÝj!?‰Ü­Mydßw
×Ùþp¶?œígûÃÙþ}¶?œígûÃ_Åþð\™³"S„ATäHr-‚&¹ÕÙ€¤F@¸Ì3â:N°<×¼FLó¢ <›Š¶8eœFE=DžÔÞ°ÎÔp¶2<…•†æÙ"a5V²’\ ±¢Ž• û'6¹àœm`Ä8µl[‘ˆ¬VxD#Æ1Rw[¸Òõó}53£Ë÷¿\¾)GËêû¹üÙÞ˜oærM£Ô­XRÁÌìò³±*ý`vŸŠc	ÿÆ›®§jr³DöËÄŒ?{ü8_7åV×yÍçv±
;MHSâ³½æl¯9ÛkÎöš³½æl¯9Ûkªüë¾%"¨+ŽŸX#Âh\{‡B`QWB‘
Ii!…Õl)ä	Š±‚\	rÀ‰¢Èh•36Õˆ¸ì‰ø\³[eyk¾™a9Ùíîýc0qåÉšµCWÍ¬)_Ö©£Öµz”Þna^ÖÊþËÞdžÕWf·Å™œ£>žØ#‚;Š!ŽºÆÐnX‹0Íu{TÛà¯ãqø&bˆÈøŽîÙUqaÀZÓaã{+íÍB.éÝ]hM‡‹9$çqËz&îCñ¼(F”ðŒkÍ%æ8"¬ Jä 3BfLd. Å†p•iªqÂ}Üã9Ð™mä@Áå†”qÞ-ñ‘àVJÂ]f$¤•@KrõÌ–Ë–$“2­âPë¥5­åOÇž–-’3UÝ„;ŽTšèÏgŽ=wa?†Ýèt,?ß¹ååkf:º¸gÍÒ«vpµb  :çL"kB‹•q.´ÈUsPàBds íØÂ~8À‘íG]ÙŽ³(zEWEÑ¦üÆ¡å7‚JÒµ‡@‚À˜¶¹N­R˜ÓÜ¿GÅ'þZbèQÊo0(yº(P.cáÀZ,cãé"¨ª&v!Ú’˜­Õ;ö.™ÑšÇ¾škã¨Fß]§ãL×ì¯%>¾ çÑ':êÞ5s<á¾ÍÌÈqSÅÌsþŸ3Òå¬åü5´œÓÑSöô0zŠ¥–çŽs5ÍW	U ¹"š„<‡f´gIäš¨ ”Sˆ%W<3„Ò#È3¨Ê²Â A‘3bÉ‰H˜ÂHr¬Æ™.X€ftvŸ5£Fz×W5¬8 „Ñªf€u5#„¥	›û÷(3þ¯¦¡6 ö•í¡äòG'ó7˜ÃùžÉ¿V3:F6ÿ6Õèó­×Ž8Óq·o“vtÌ¹ZêQÄ4ßG‡³ztVÎêÑ	ªG‘$äéÕ£=3ž!Hïx†¡°’ã‚£J(Â 2²@K+‰f‚b‰•Ä•æ`S¹÷ËEÒóšÑ±”¢sós©B,4ƒ™D0^U…˜ÀN‘v+CFáªÐºüÚsó©g0#ej¶Wýÿgn¦÷ÛøÌbðx2Ú6¬{veo Ì˜Cs˜7ÎpPõí(9»›µ·£L·Ny;æDGÝ»õªÛQ§Zjn³Äœÿ³uV žZúk(@	7ñ) ÇÞùgi|…†Ñ I±UƒLË0Í)€DL¸ÖWB€Ì@-8ÏÎ
m¥O3”q´Iú²xºžF½òðÑ‰è•UŒœêá<1—¯'“žîÍJ‘ÕP{¹`êVe©÷Î£ŸìDá+M[Å£—×ú˜ÝHWKÊŠð“S0®]½©Zñ©qoA×Ñ=æ•[ÄlÕ­u
È"J‡F©q@]×å¶ú„Õ>k)H"ˆCË'=>åç>QTÃh-éyürÞá) é==9¦fdD(¹$Ñ‚0i¤19U
Û[+‹€q¢s’¦ˆQšp€`¸ÐEN65ˆ çð¸ô–žÃïˆž/J«	p›ïC„ˆ]‚Ž1gŠ6EÇSÌD"I?—ß?¸‹:ûahú
ç¸NŸ£~þñ©ús•hÕHÈ”¦2K2Z0	sŠ2L ÒØ
ì€ç”™ÁÌ× –”ÑæöÓ}‰:MÒh:=¬ŒNwÈè§FÎ]šh`…S"^IgF¸<ÙÐ£€¤Ièç:§ßŸ—€RFÂ-ŽQ¡4ÀX7ÕAxÅjÙÃCòŒv.Ä3%F¢L£¢Pæ™†\H!#TeŒ°*NrÌµßØÿDRYA¡
’£\Q%F.47,ëz/—5¶Ü¯?:|Ðî­ÉÎÞê­Æ"j,²*&²ÛÔËŠ#‚BÞbF`€i £ºsuÎ9Gh)ÎhdGñuoæ‰ÛÈž.½q‹HK–;Gy®„,0’J”É‚CŒàÒÊ˜Ê%™Œ1N¬¶¡@¦1
é”	šKbGq@PBÉ™£ü™8ÊB¿	NqU,	éš«ˆ‹umÿƒýaªÝ´¯Î9äð¹ $Ökê¼™#$„l¹º´hŽ²ËJv`–ò|A¸Eny	Ñö>ó‚Ñæ¢Š@br^ä"×–›pžñL* q,‹¡p#váƒ›ÔŒä<ûdÌ‡Ç ¯8¯	–Âv¡ýÄª-ÅU:—ä=ûÝÙÅ €(Ñ.Ö~óGwÝVøtA¯‘Ìi§Un_ÞôÍèrËŽà²~!¾Íêˆ[]8+b\C­!QF©Ìþ‘&*³ªŽdZ*$­ÊS B´2Dö' ý»ÐÂ4ßÀŠ|×!«jŒÔÄßÊI9Á=GgÍt3Oz[ï‚ç/ãÞû¯?5 ž‹xžðê·ŸßÿÞ¾ÚSïû9Ê>ÌffÜ»µÖÔíŽ.&S;ùt`yÄ`léü8¿ìõÞ;OKU>ð;Õ«F–bö>ýòi±¼zX5ŸLÊé¬êÔ`xa1‹Ü.¤,ü'ùÀþ8í¹;ß«ßµcN.“åóÿ~èåÓ{QþÁÕÜÂg×±¼o~Ý÷3»Ý;öjQUó¬9GäA–ÝÞÞ^6GÍÞd“’óÚÝ²´‡¹ãëía!èJò‡ÔêÆ°“»MîýûþP÷ýqNà85wÙŸÔ]´zïÆßÓrì²™^½Ufdˆc*-w`ÿ|
p¤¾b¯I1¸~Ñ,g-•ÞA6^ïÀè¶ñ’´VŒ ðJéá•»³ƒqxã5€®ÝK…ª?î¯ÌÝdn_d<<½rôéÊ÷K[½rÄúj4¸žúû™‚¡«iÁ•{™*%­¼n·Ï2ã}0üg^ÎT
‚¡Õ‹®†¥Kn½¼ThKÅgfšžøÌ°>îÉÐ³©ªnâéÕ¸œŠûhH®W¾ú¦¦î XnQïx,†²N>M™_ß¨ieìT•‚`qL‹Yu5œ[ö’´Œ6–ðÄ[f!',3®´š$Mêo‡½™©°–‘§¿°æ¬ZÆ<›'!˜Ìí%ñXY2I}Gõ°L;/S³´Ÿ¤€ïuá¾Õ}¬Sæu&x8¸×åª¡«rO‰°ÿ™«x.€AM“žY‚«r˜ûCF%­gÞƒ¼º5C]Žâ÷Ûô<óˆæ1@yÍË‰U)ÖwÎÝ 7Ð³Ø©ò¼‡P°P%t«‡qDÂáÜª›chr
˜Ý§D°I\Yoj4`50¾%s<à†I`³rj•äÐ(o¿°h8˜E4œ.ª«Å1‹ŠãâáB„ƒŒ¾¹ª»‡=Ð27e8œ¥W«Þ[qO*êuZ³G×@ekû”Åˆž}‹NmÞ=rËˆÀ–-ö³?PLz¶®oyhÞ¸®yxßUˆš¦«¬°nò(ÈÒª ÓiÔ"›Ó×Q¼øýÍ¯ÿÏ§/W(4MýY˜oF˜SýDÅœ€õ"þ*-Ó¿Ò‡Wˆç^L?Þ¯‡¯n˜™i]F ´0V\ˆ†ùƒÄ¼ëá#/ÉÐèñ¿ÿ¿Wô(u'RûÍOÔ(ªVÅb¸çÓëW0ôaj±ÇÌun‚	ÚPi¯"á}¬	i›\ÊK^,l÷[pMgÃüÅO?ÿvõß¯?ÿ÷¶I-[ÏËÛþ|6VOínÌwèÏÇƒYÆfüvæ¹rgu¡ì„vN2—=V»~óÁô¿þïWf¦_-]ÍîÛ€¯œè24~Ý Wô½Øê~†°Sm›8(«³Y¥í:ÈKñ‘ö%E.ÍÑ‡ êÕÝ(€Æiª0úÞ<1Í"!œó(¢šg£Amš‡“ö¤é˜m¶ ñ$
Æ[L#@Üñïûˆ‰ªªÛrš{àKs÷øÊmF›ñ}Ü@ÏRà¼á$®u;"!ýîänL
´3Ÿ¤€YÅz “ =­Nüf/Ä’ìÀ.ì5[Žœ­òpB>ù:HüJ›é¬ÚríÏ7 -ŸbbF›¢³0o-,%zÍ£o]éd:ø¦f&v­ØŽÕ.ì9vÇˆïm9ÄYR7|_=àh½©äh²þèÞÞ“gˆ)ƒÂ
(È102‡‚R‰$äYæ/s†…’˜JÃ	ƒš¢ b 3¦3APNÁ¦J,ï]pUæRêÍ8÷1aËÍŠKÑwAÍ›±y¦gÏÊÉÄb‹†`µ£Ý2V, E¾u„Î¡XÅ’Åç"¶^Ç§j¤GŸjÜýaÙŽ K4‰Æ$ãl4j:Pyc:ë€¸ßÝ¶ëáÀ»
mÿœP’4ÚônÖä+ÈG*_Yß—Éõó°U!8¤8#¤ Tç
@2’SÃ±€‘<R:HE$Ó€ ;	”¹ftSÖÐ'Kû®í¦ôÉ]w"=A&Kx8“eu³51G ´˜¬}'bwY±Ö:3Ù3YÀ¢3`Z¯ãÐLÖ#=“õèOÉNþã
YŒþõ¿?ýt%/Ù÷Ì1×¦ß”CólÃ@DsAt®Î3!4)¤°àÀ€BåZæE–LaBD&rš *,)6eø¸Ð—:‰R9ó¿7ù-û°*qïÃÛ×§Ã=„å„ºR=
«KÒN–Dâ€tÍÕvf#e#–ÓG·!é¦Í´ÞÍ¡3hZ¨‡ù<«•fá/wJœjhîföu\OÕ(!ÚtÄyEö\Gj¬l“«±’4èqmÒUªºqDð^G<ôÃÛ
|JÌñÍûFÀ>}$ë“„¤Æ™Ž+nsù ç1^^Š8W£é·HZø&…û¡ž#Ÿ&;Õ´iç°™©Ö¹´:ƒô^ÞŒIþ5µN”—vë”…Î€ižƒIÎ‘à@(CYq@âBhœá]fgHAŽ¥"…L­|m´2pcjüÌ¥‘Û£7UÓ©ÓÄ)ãN¼u•U¼´hÚ£ ]Øþøz{Å·j¦zŸ†jü¨ñb]­¥Ú1éÅúI›uWfÚ«ì×æ¨·{Õµ´·AÐ¦@:‚6åb±VÐFC¼âáQŽiKÒæPvÚjìÒúÍqªkHEH×Ý’'L¾—"ZŸ}_¹š« Ešgì*¶
Ùx×7b)?‡ÕÝ¯™¹²ücêjœ¸8~ÏüA0£ÛþöÓÛ\¹Ÿ"ð¸LC=HYÁ
dâäßró-qöhêô#ûwêüØ„èQî:Ö&L¿
™0¹QÃ„‰ÛP{Núî÷Oï~}ÿñÝÏ_^ˆÀ0»I;1+€)‹ïbH[¿%¾	‹oC%¬üºJš´ÚkÒUÝ$ÌÚÛwÚ´w4°Z·UX¿
™°þUiðõ›š^§¶À„XÁ¶~Wÿk¬ïSÙãZð„g±¾H˜¾¶ï´i82£ÌLSÖÞLY½MÊ2…»¬B`òäÝsX,›wÚNú“¬"H «©‹dO_H|eØ+¥¿î±Ž.|ÒBf‰çz¶ï±n#H=W³é@§P´UÈ´è H{„qÒ}ïw	ÚàiËNSröTp&ÎŠ–2m.eâQ~•ïRÞÔ#ÐÄé $Îß…M]Àx Sçoƒ&N_¨Á°REŠv·<qR—Ð=Äô‰7×¡¹»Î’£›ú$é2Þ‘Äçè€&>†ÅAÓ§§ûNoÉø·*õR® §.¡H"È+‰“ÿÇä©§¸š8}¢ù4qú™JÝú6dâäÎX¸ßù[‡!u1ÎŽžºŒlêÓÙ Å&´8a	‰qßCØO£áKõX,1k_L›=õÜì}fº¶->=c˜÷‡®~w¿v¹„GD¬ƒ[øêK <Qá˜è:0ƒì›™fé ïÿþÏw¿þýsxeÐu+6@¦–<I‰’…ºã?~ø„oäB\Š˜‡.ç¡)ó4p¯ê1\ò„(0.ðN?‚{T#.ôø®ÂPÏëz>¡'åa|óKøK_øò¾: ‹‹zZÖ‡"Z“žõ:°¦Í4¼4ØAhõ]ÜG.Þk8Ð³íqý¼ÔË(‡_G9ˆ‡Ö[¨;çÊ+á].JÁŠûÆwõ}çóg‰òÒŠeç›‚1€Üß”çFdgAF3QHÄsI™k*¥ "3
Ûï¹1˜oˆòÚ•·~wÛß¥ëÆôêøš:Ž«ô­I<ªÞØX]²É´«çq·:¯|Ÿ”ÙÖ ±çòBÁQ^X0†Wš0‚$Æít
&©KÐ«lòòÛvõ:X¨‚EfP<¼‡Ã|Õ8÷û:fýÕ£E¥ÆÃfCwªƒÙžÁk{í1–í•¨•e•ä”]””ß“\“Ó²g0IjÈûÅOì¶°g°Az@²o?Ñ­žæÍNt&§zƒ÷sæîåˆM÷¡îéÿÜÇo¹‡³p?ÿ\ªom?¿X²GkwÔ®¤t7Ð|8û8^R}&‰{•ìjˆ~Èi>R¾ôýNùï	³æ¬ôìK?æµÊUÙÿKW7›
n„iƒ¤ÚJ½j}—îŸ#[r„êLéLjÁs’ISpÌÈ5á@Œ1R”bÄ33®eV`Š2®2¨p¼õáõ§÷=û´s÷W‚7[ÜÐ&qä’Á:`ÞÄpòVñÈŠ ×[  €øŽÙ-;•	ÉeË`±`ÎõÛvXJ½¢K×gê»±#(·ZFú€žˆ-sÈcË1<²î«î'’˜™ž«g1qœgÜp_L ,W€RNIQìþpA9BÓ@nÏ7£R,4àˆ‚¢0›ˆÌ÷@ž4éû½ùd["ªy(²Åâ¹Òg¦68ÜfIY©FçíúaÊ "ãÕÙ\y0ƒg"Âø÷p`s¥Çù|æJçäºŽ8ÆJ_C5s§¨?¹ŸÝ”ã+?Ü>ƒq^·hØ<f`Ÿn>3[F|•Û:7X•¿3Çéõ¡NscO¶?ïçþòIøzöÈû*»01PW§YÄÆ™«–áB›Œg2#±(§ˆA®–EÁ©åœcSä2sìa“ôi¾YÂÑ”ðn«i9ì¹Ìî7“þåNÔ%Üá÷Œ`¤ÆƒÉÜž?Ç…xÒâuh]›ý"ïÎzSÚßªË‹‹z5ãÔôÆîå‡÷=UUƒë±Éí,ÇÀ²›rhûXÍì_Ítl†º‹ìÞ~W¨ùpvÙûïòÖ¸)cd™@5˜Í×šeH#ußËjLS£2Wƒ¼¼(íø©½v.5[`zéŸÎÜ©ÑÄê¹©Æ½rhéÓâ9,ðm9ýjW_Îí£+ûž¯›FŽnj1Î	ãKænb¦/ª{Ê•ñ°Ïd‡]Ôƒ/{¯ÇµÏP—£‘E4¯L_«Êô¼·±ªú³;ÝõÍ²BÄCµˆ‹j6Ï*7—ÝÇòÖW†ð…!ÜG~ˆ'õËxÙ«æúÆn¶[ªŸ ,.šF®ƒ?üžÙÔzïã™¹öÎ‡ÚI9·hÞj>™”ÓY¯ÙFçÑl»2Cwu$³OeŸi˜÷ýŠoÊ™«ŠtmßfÞ‚bZŽÜ/F¥!Ê¢—*íß¿´Ì{f—iwuX•öy¡†.\ ubš=yya?™šCxß¯™{R»'={`ÎæeÏÕèX¼©æ,TuÿèÜ}Ø‡gânº´TzZVUƒÇ¾ü¬,gUû8Mê©¬Øs=˜UviÉ«å
_µ(ÖZaHp‰˜¸%	Î$…¯†e¸ #@[²:0ÚY±|±ª¾'ˆÑ
×+ßýÃ“’#+[kïòwÈ9âã„¡ÅB¶É xÖ^ÒJ@«Éƒ··ô’€£R*`uf¸]ÂŒÃ¶SyÜ¬i±ëk;5=-Ww‰¥œÜª™“M•ÙKšh-Ã@J¥„æy.(ÀŠA
W²4W9Êª­Jc#ˆ&XeJq¥2T ¨ìÇ`ÙyåV_N&–7U,cÌÊé6y¥Ù/¯ŒŽcXŽ‘M‹†+:>ÐHö·m¡SÏx163Ïäë™«£Óô›yMÓÇ7îÕ»c±|£k):C€CG¾(º•% ‹ÀŽUŠ.)Y¡è„ÂvySBÚ³X•%f4Z³õäü‡ýéùëVèÔ«š¸é³0Š?~äýi¸ˆVhËØªÇ­»ÅÛÑ©²ëÑî‘z›0öqía	uÌ´!ü¯WaÌðÚ$Í×‹œïð3Ùµ‰á‡oëÐ`~OÔ²'ÓùÛ‡+º;Úeˆ&XˆO.ÂŽdˆÌÒUcr ÐP	•Am†EAtfÅpÄ@
ÅE.r
s*$RDj$3E‰"›:-½n
Þ7ú÷W«å¼ì¹·PÁ]@é½÷	™¡¥8“Ñ‚øofu:ÐÃÐ‡’ß*~>«¹fó–.;{ÒZN×ƒ±Õz­ëÉ˜ª´_•ÅìÖjrM1P¯Ôd½ùØ«G¶ÍÇö#"Äzó1§¯·à¼ðJ“;Ë‡»µúã×÷ïÒØpeéÿjþþùíÓ[‹¹ëÊãîÏZq¼zdww«f´–lÄåY*F[YjNÇ-íg>4á ¼7ûyÖ°ƒŠ·+G]iß¼rÙ\;pØ¢÷nYïÖ®²“Q_²cÜ›õG5ËwÛ‹…næ‡á‹¡Šâœ#–3D¦¬.BÆ˜k, /€BZ¨sšá,'9$
ä™šds×ªP¹3g<!ÎHè#ÎÈÁZÎhyêjžKû:Ûœ‘ ¹ÛµºÊ*ÂÏgçižÔ#ðÆxµó¼q‡º™ÊØ¦ Å$•­”6ÛØf‚¶;¾a£a1Ž7‰\²Õƒë©mF{ä|OxœîSßò¦·ûÅñåå@<Ž«L…9Q™.2Š#L –ç*w6Ü‚ÚH-11@‘\I,­þª¸âöœo	:Ò7ÊÕ¥/{uûñÞÛ¾ýá×½úá×ÞÈäµ™Ï¾)‡waYxsµÍeïGg¦O§ôb0®·ßÁVÆôš¸ âþÒ®f8²»wY™WÿŸåÆÓò•/YñªÁwÔ(È€ù·Út]µé"†ÖrVHˆ'î7ƒ¢­t(©Øé¨kË¾=_ýúdÅšvlÙý8ºíñÇçh<vÃ“ïÍj%Á,’Õ¶–²=®¿ÿ;Q†pÞM¨÷b¤ÑEX¢ê’ªNBp©Ëô?Ä,±ñæ÷ß_ÿý}xQõ°¡¥.ÚÐþAÿý*¬®ÂèëÀªçð§wz°F–õ¢G@BÆõQÏÊò«c€[Úß4#kR¶{œ'@ŽÕlj)Á¨ßÄUmiiØ­ßÙ½ìÚ·¤«ï.žÞ_q©½ó<Ï‰€Ü(a4²‚‚dRñ\àºsšS¨•ÀçLi«Ùs‘sŒ Š’Miÿzýë½Ò2âQ~TG6ÍkF`ìZGå75ô¢ÁuýöÇ…Ô"]¢ŽóR³™Mf^Æh&5=¿†‹ÜX6]wØy,DÆ…¸õÞ}ø±g÷fj«m ‹¶=î“9Ÿ¹ð²êÂK[Ô/] ÑÔL†J;ÄõÃ¶ÑÛïì‰^&pxÓ€;æö‰í‡•³rÐê0+þX9 ¬*oPp+ðóäs½ˆÀS£rîƒ©.[9ðQeþ{£oÆƒÿÌÁWõ²,çjêÍ–‡îzïzýžˆrÑ]oÿuõåõOWËéjx5f.Vm26¨íUïÅ›ßª¿ÕŽôÅÌÛ|áÖZ¯¢A8¹82“×£Þàâö–“÷ŒÒ7½7¿Õ¯Ï•Òp!}Çà¶‹elU,Ã‚®Ë D+bÂ‚¶X†0¦x§/àö:„ú2ÉÑ¾Çð¹·‚ü_}©Õ—£ÉdÝÇÞßêÁI¬Gàö¡Rkˆè&La&õ÷¼Ì°ˆ»–Ã-1ûíËû¡UìŽ¬d?f¶ŽûíÁ<ïÇîb¦ù…¡}QVìIjú\(¦¢(r­%„@ÒRÁk(,—’jŽs9u›Xd–»BŒ¥fS~^}þ #¹¿ÎÇ}O¹Þ”¹éýdÆfº#ðâm½M¸TKýê}jØæûeÜÔ;Ïß…ž˜éÈÑjËf,°™6Úû…vÓz¢­zÓùxì¨|Ã}ëp[·PÈ[c¨ê€^7¬œÖŒÞqšjž¹äËt{ÚÒÏ‡á^«fÒâåSûéëaZ~1¯L1¶£•Uï›cÚ³{glèT`Œõpž×FûFxé–é×X»èd$æ?w„µ…Õ±ÁÒó´Jûns7¨|`üÒ¸áöâº´B3y¸zRnc^(iîº]éÈ2>·ƒqnCv¡Ç ¶z/ÜÆÔ\ºmCYø!–«ñüÓ…AO;û5qA.aúè]»ë“¶%cK0Â	d¤¤ÌtCHAPp¸ât'BLaÇ¹@$`§¤^_¿¾âM¯êHçûaÙì‡…ˆyDV»î¡÷N×%öç®—³=m	^Ï~k„‡ÆâáÂëX£Ïûðìò6Ûe¼¹²4#xôÛ[5-‚G¿†uÛ³’füÕ¯_Â@ÜøéÜˆƒ§±:Je"F[
>ºÑñÃFûš·jø5pøýèÃ`f‚[msÍÂ÷Ø÷éÃ¼¾Ž!1ù]€-ëmŠFûèÈÐq­ªÒÛ·"+-»R³rT—Ï—ŒmµN-aôÍ´—q0¹Uj¯çŠóÅ ëÜ£(¸˜gŒ}¢i(H¾4hùw…í¬Ž‡»ÆßDæ4ƒ´§k¡0Ì ’$€(O â».ÉB¿KÑ·Ã<XøCÇ½øéÍ›+ØðKxì®ËºLØ®Õ/†½øé—ŸbðÖ $Àß½ïµ£$È™ºmßH‚%}ð5_ï¯I­Hì1Irê$yshØ.*±lEÚä4J‚reîw‹€1ÛÙLÜ™K”úŒ(õå¸Y–ðg;ÊùJ3öÊ
–w÷» ösÿX]†åÐ_o'{º
d*;ÀVewŸÁHœM¹‡™07€Y˜‚ä…‚&W‘ŠãBá#Ãr6<Ïy^`„¥yÁ!‘dâl&<›	ÿ
fB¶j&ätƒ™ ÊùJ5zÂ¬k&dÒ~´3vÅ,:ùl(¬…<6Hê{4îÊ®ÝËPÚBkÅbÖ1†ƒµlˆá@+ÆÄhÀ–U1´{×Zóbh ÙŠ1¬kp[±<GŸ­˜ Cáº¶Èp¨®Qò€AùÇ·N>G+¼õ¶ËÀí^oÄŒ^cÍŒ‚_gÖŒB°ðª¡3¸kñŒìFxäÞ…_Üè+g2,Ù6°ÛÓg2,¼qO“ú¼ÆB·´ÆŽ_Ú2SàH<ÜÂ²yøHðÔ•OA¾_³¼“ˆ?Oˆ•ï.÷¤.é±ïÛ­™ûÁ6ŽÜbÛÜ~¿Ís–Îýà÷|þÀ¼‡…ù3ð‚tí ±@-ƒè±s½ýé¢«Ãž&R“EýòÛ¨H-’‹ €t=˜iE ×–iµ¸Œåh"¸ 2Ï$Â5‡D†AD¹*86’æ™ATdy‘ÉÂ¤Jmª-ðÛ»ß÷ŠÁtäòã½ñ´Þ½^S1ua}ÛRHà—~ü±÷â—‰÷þÙ }lLv?6ˆÿVW×µçèßFûx3öejýôó¡ýbCåì¥ëÚQª^U—°e¤oÏKïñsüï»¿ù`üüóãÑz³—®Ò¢þÊšM)’#ÉJqÄ$¦ë‹ À#¤cÜ„2NÚÑöÂ¾çÝ¥w–'º¿áh6iøQ#ú¨ÿf¨\5ßOª®k÷Ü†ÏŸ?8_òÝÈUd.§G4ú-Ú¾;û	§ü¡ßmQÐ]±m¶`J³{6çö\½(íK«ªáŽJyö?½ÙòŒh½­)eæªgÏBwmMb  Ô½—ºô —vAÆ`(…adÂ»éÌšÀSùwbIÔø‘ë-¸õÏ%¸|(c;*óùÐ\¹siuœ,øQ5ÌA8oÉ3,€ Ð ÎyAˆ6J`@QÎ¥¬ÒbÊH0,,ë!Æ”hoùäŸ³÷é—žúyªüN“ÊôÞ9Îd:¨êÿG}[²‡-¬fô‹wïÈÿü­qà¹£Ü«ï¦%œKžg¾JxY{ˆÌÅ2ìõ§÷ÕK—’54Ë6CUí*+Ó|íý\.§¬–×÷½E©›ºôê×Á¬Î‡óËXx•GSÃçZí—_Ú_&Ãò¾þÙa~¨Jãœ‡•™Ú÷Ü¯¼óË~«‡å<ï×µÔ;ž¬'+¡cê]ï»ÃûÊýµ‰µ1.íŠ­’!È \_ƒBNx×k…,k»¬0Ù™ÚßºR}7ú[oEs{÷éCß‚;ŸlÝ©¤N^¼ÓÆïxõ¤Uv&ÍÈÐ$V¡‹Ý¤}yœÇ±¸Ö
·óŸ(ê·vªÑ·ñ»o—Í¹¾tSÿŸ†øüŸI9ú?;8àA"‘ÿm‰EßíâÐTÛJs»q‡yÿÁ½Y?J`JÅ _Ùú#_ø?•1-º« Èp31§Ä@Œ5È(ÕX1YÎÓi–1L)„È-OÔP ©c>…0fS?7u—‰Ï¿~úè”	û\u·wM\‚Õúv¹>}ww±´•-j×J«Œnð&r.¡zÍ4OWûìÆunxåÿ°ö­µY$$`* ÜP¡ÕzÛX"Ô©ÌàÎ¤¤•íã>ŠTAŽ‘ÿVr{Ù<!MÓè¼•åƒïKyí;ˆ¬€¶ò
¶Ñ¾5W|¸|»¢c×Ãþ­º*×©KÃ“_­rCÒºà‚ah9QØ*4¢
ðC¥©Uw¬¬CÊ+ˆVJH Š¢ ˆ*§Ý£MTì_õãôÞýô¡÷îÎ÷Ôº¦t¾-Ö¢Lãf²þ4Ôèç¾ûþõ«Î[ÚÐË…`É1ïôr±‘r$¶,¿›$I©Wëhr´³òk]}šRø¡’ßùNÊ.nzÒýëY‡ µ”]V‡5sÊ ,ÆÔöÂŒíóT¿5I'±ââÜí;S.†ßìk¶ë]nF°ë.ÁÉw:é‹ne|ûMÀó, jý{ÀÉ”:ÞÂôÂ[ã$³=Ž	595bD2¥qA¥"T‚L2§¹ëòÊ-ñ6ÀJó… F&#Â@‘æù¦æ8a¶×ñ4lO®g{X¬àN†'¶'w¶0ÛÄÂ#~Ÿ…ñ¥YAŽÇøH¬Ð}|Æ·³çÍ!ßaK?QäY—'²]™_O?³†wÎ»†‰}—e„ÕE£ëÃ…_‡-M„4Ž	Î¤Æ`!u(ÃœëYµ08Ð×ºPHÛ’ ’3XHi-eÆæÅvfw¶÷Î=Qofîf=“oïñV­=æå­™óáËžžW.‚öçNxéZ®¿üÜ™+|*Î¨Ì3%ú).ê).›Y—^sOc-/ô/nŒ³„FÍæöM½tÆ¬zãë{Œ®çîõ¼0ÃA5ù[ãq96j¢²e×9wÌ{#5°K›ÛÆW2*§æÂYË]êÏÐ¨o‹¢}Íº..:^ýkš}—~ÅÙ`ìúxƒ{+< ÷»ýÈòÛ#ÚÐþõxî}ù‹Þ¯üÂ¶ÏÈªñŒc°¾‚¶_Ôõê ‰••d×‚F »ø¥õÝ±ïÓ„Bz¸.¤÷æp¾Cûìý?¦Ç~õá÷åæVb¥‘þù–[îÅ6òÙç×}i±~•“m@~à:N¾ÞmÆõÂÞ®µ¢A2Â-âFÎ‘™ùz´[·r9¨ÞG»³¹š©Ë»Ñp+”½´7Ê…;L_´^Æ«»~uc†Ãš „"p”ö•_[úx3*÷" îú:vü?ÄCÜäÓx {ßbæ‰ŸÅyÎ"AFê«q$=¬Œ]ÛDUZŸÔh¦£!ÌÝ!Ò’"ú·¿oójæÆ¾y¿RãÊîÞ¸ìVDÙàé¤÷€öwµ3®YBFx šdß÷oÞÅ¥þ3úwûw:‹Iq° Q34ÙÙMÆ[(”=HQ³ƒ;ã<p0Ä,Féû}à²ùë./ÁQ÷w!¡Ã­dO£5uyéÓ˜5)=LþúÍ‡ðô5Ž›d1<ZcUVÎª-¡[Ö†xýáóë+û¾òLu`æƒš}õ!0ZµVƒiÙ¿.3!ó0Ê¤‘Í«>Œ¹>mûÖÞþý·ÏW0´+ïÙ[q¯STcNc15Æ©ê1äçéòÑVáðe`æÇuþµî¡zú,ÀÕdp—Í9ð‰}¡í”¯eôöÿh˜ñ|6¬YDÈO?ÿöåÃç+|xá›{½ÌYä{ròf­@¸D NêahŸ°OŒ¿!,ôF¶ ìüŸOï~ºb¡ivO’z8‚|Ü÷yéŠa”á³œQöY«û—±lÀÕ¼ r|™?
Á]ZŸ~þ	²ÐŽyßY²ç´úvÝG1\h:‹¡ï‹ÑÑµ
ˆƒJÍ²¾kpM‰r>±›@b`fƒÂŸøÐÎˆãí}yÿãá¹Í3gg‰¡·&û:˜¡	Ä¡<(Rº£ÏÃx»¿ü€œ?Þ2•thº‹áM ÷)-ž@Ù¸A®aõ¿šO4ž—ýÌ­{åV¶4ô§wópNá“¥ “H(™+–kRH˜aÀHf€Î¥¢ÐI#‚¡:ÇpSº…³ÅûPí³gMææpXOÑÚ'ßöÈøOþd¼¬ÿéçz_”Óæ×qyw’~×!ÌïC ¯D+JWáu"7$Rpº3¡³uööÿüôãÛ‡k ý;‚E36¥ÛÚ/å n–ÃZ4Û(ìÀ©Q›áÐYÒÝÞÚÝ«|
‹w3" F×n\ÞrÞ„¾¶‚Ku€vØçÝx»•ýÅÂ¢­ùõûn%'Ìæn	ßW‡÷)d'ø¨jËZÙÉ}´;÷øÑhå/·ÂJž‹„
Ùse‚VÅ‹ê«¾ºÜ)¥eÓò¶ÚÖ$Ôc¨Œ¶šÙÅïœíZ»aûËƒžÝ?½8(-£ÅˆrP^ÐŒ“sH8F$GÐþ*©ÂFh@a^\°<ƒR±‚±d›ÄÁµQ?uHË‡ßÞ¼ëÔZ=©÷û"Äå,.îtQwÝììíiŠ‹áaBˆÌV  ¹++ÛR&-úKv:T°E±Å<ŽƒS¿×ÃcÜG4<©ƒsPÀºáê{Óm¨‹âÏ0šG=Ã	†üõÎÁÏlp 8 œýù'áÏ?;×ŸÌ¹~övo€>{»OÜs}v?7îç…µpeè6¼« ©vÊqy÷ôVJ$Ó('<ç:W”Úd4„…9&˜I3ˆ¡FI‰•,@!œ£&I´•ÒêÎ¦ÉXÓä¸|°Hvì”M#¸{&”}ìéÈOÓ>ÉCí“È9³U#”	Ø¶Oº8Lc´—ël<”u’@yÖIûVïl™<Û|NÑæóç4á|†•§6DÔvá{Â	¾7úÏ¨Ç*©g­óù´N¯ûÅèœ€Ts¡/ÄÖfÞ_í$
 ²\@M¡1ˆåŠQNòæÔd4§’È\$€Ì0-r¬H¡ÉEžQQrS·î^“ÑÝ³:á¼7˜™‘×’ÚêèREÚ¤z¾yèóÛ¢ñöŒ½÷µºrÑÝÜÞ èÝ—sŒÜÒÑj½î£ª{ûÿh¡ÔYµð“U+cU¾™iªý¯à«<š‘îôÃÅkvÊ`fÑ‡½Ì\ø~ßvÆÛcUC‹ìÆL&ÏŒ­²éõX{ÔÊ¢ç“üÝ£-×tšj¤\Q#|­É!g+J$k—Áá2Lu\lZ[…Š-$ýüúã²¬4;âEïP2¹Îò×ÅYBœš˜\µgKÇ³.cyà	{p—±¶ÔäQ/šíå²á²‚ [¶õF‘…C•V Ñ(‚Xˆ‚R-#RI-Ëá Ë ¡E[¶Ãó‚Å )0%ÛÈVÆ½wõ#9úøyb,‰}ãúÈÀ]uC_/jƒÖÔüvª&U¯¦Ç•G¥¨¬ºüÕÞŽã—!SÙ ¾³¾–èVzËX‡Þr	ˆ@ëé- ¢[{Bx;áNª[ouß„>Š«—ýÁ÷T9@áþºX¿}ïßÓrìë÷×oz`Ži«[÷ì{ÇÚëêul£4›îé6|ÛJg'áµ7«AíU‚ ‘W£{ï,Äþ$»cZˆ6]D„MìZ÷¬	}3ûðÇl÷ðÚ®ïÐez”l÷ßMº”`í®·IP®ÝëqtR²[mñóÞ¬€6ÔfXÙãs†ê¾Ü‡åg€X}1Ëò‚ç
#a˜.Œ YU†e¦(2Á¨’™ÖœQ€©E!•¦\ „Ï,ÿ1ËçXþOãˆ–Ïé4[£€‚]2Ö±½pÝé0ý´âÇaú8ºeÏ™þÚ>L?Ð^ù˜û¶ÊøÓ¹2R¢)Wäƒ@°G‚Â1|	¾‚6ã‡h	{À†úý6‰û ‡5”?rýõ8PZG.ç²Iì+¨QN™1Ì~Ási¡sÄ™¦V¨Âˆ2
DŽPŽË	# Rd…™¹’îzqc¥OÉëlð¯rš?œmr‡X•;]ß›‹Q	VMà®ÜA¨ÜúþD4½òžÜÔð4í¹Ö=êþ-JDlQóE[ðëñÜÚ­–ØfÅ[[~¯¿É[ñ…ôïŠÁû [4AØ0û@ŸaÞU­Û°ØˆÒÈ?—†J(gËÆÙ²qr–>
5Ú#'l„vBÛCÜ ” Æ'I,3"BN­ð!Ð™ûÎ2:gòP–ƒBIÖs&8VdSÐ³¸áÄùXÜXïÙ`Ënq-H±}qƒ“Ý¡Èëxð3˜9¾gCBö]
;ú¦í%pÐñd’ÇÉeÞž­*g«Ê	[UžNØ©ùtzÛWfÅß¦$lw.s+ì’c€ižˆdEf…Jt¦¸”@#“ÑL0n `:ÏÏ
,2Ž°XÒQ¾5Rïõç7ïß»|­O–g}öOéÒÂì²gfKã<ê·Ø•:øÎ•°Oh±jãœ>Æðu^fæÿª¬`U½°ä÷zªF—ËO“UÍJê"¥õ¼øòño>V¬š”å°º¸6®ÉÌäí5—óÙd>s€.lÉÊ-­Œí“ôìb*õÍ¢øAêÂ×ºk-C{™é™»™+’»1u‡Ÿ^>(
3uOÔÌ12ù@¹]Æz8wùi#5¾ï•~k*ÿà‹¬<'ðù%XØêéC—çv­ÈÇ)­Ûµ?ˆ|#L¡$kE>+Ì9óQ[æCKèŠ².…>ääH¼[ê«WæÉ=ë×—"-­‘ ëÂªß—0¸nö•	æ ±šêxÑ”mk/Ûõ¤lƒ°Wc<8Â°®»ˆÇaK…ø‡(ñáb¿·Ò¦f:< T–”Os|‰Ã}´»úèãƒÓ*?tp6 ] ¾ÔÅõAÇ1¨Éd«$´`‡Œ¾ªÂrúmXÆhÊoNhØøuåh²g‡ÛÍ,oß¯Äiy*©áK$Öõê²K	„aX(‘#r	³‚išc\…–ÓBr€€ÔÀŠtHŽ¡Ì(ÐD(º)êæÝ½OEøéç_>¾ëFî¡¿Ìí6éì‹6‚õ^Øýù›Úœ¤TÅÀ§þw†8Æ~{QC7â—½÷µœäõ\P+Õ`µÔ6pùöß\`ÈìÞÍ]¿7—ú_]Ü:˜ªzC5½^@éÒ
ÚM—vUnQ^«.ÃjkåüúÆ•;Î¯-öºæñqg·ƒ¯+I•#ãe©×“IõÊîå/ÅOî³­Æ3ÑõÕ	nÿ^#D	CbE”‚"IqÇ€fxÄN]yÝ¯n?6J¨-;ýøöÃÓKNiÁA«¼¯Ð„'ð):—×Aùåõ69d‘Ú„+DZŠÂéŒmåõºh¡õƒ‹¹oøkÌ8Æ.¤ô¦š`³‹šÍ«LMû¹ò7Cà"ûÛgNè~ì‰Ý«l´õ•?¸q .ë9"`?Çd	P}»þ!zw WÚÁ
½Ueò8xWù*âÛ8¿¼U“ËÛè{×O ¹žªûX˜ÞjÚ_2®âaÊX‰¾‹‰=G¤œÎ\&g_ï­l›n‰È>àîÕí?Ü%€ß¥­úne¶tåÖ9»y~z·ÆÍCÐÖ0‚ëÊÌœS¶ê/zSWVR©m•^®g_qÈä–ïmŸ|]é9º­¹3£É ¦Œ‰¹«ë“ÂÐ)ž´j|-T{|Ãìrz¿høìÛJñQ9Q~y˜ü¾ÀàR¯OÕãô)‹¨õ¨Š*tñ4SŒª¢û:˜ëøÆÓO^œ%¾@é“TøHsÇ•×{Ùk*îYƒ—¨cä½ZDÇXl «Ú&%‡¤Ð\Pb.42X ‘ç
Bmÿ/ÎC*—™ÔVÑWDå¹È`¶Ébã<N“é 2½ÏFÏ§®"âßÿ§÷Ù˜õÞ¨iÞ|²¥Úãf,j8t5ýf^¹¥Uc§¥³°¸"‹jìwúÆ¦zz?™9ŸÛäf {•›^ÛÙ›[•Û“¢1¿,L^NÕåÔä7jæ£‘œ}åÕ›²þÃÜ¯·¦0È’Œ´z·ÔA¼°Æu­)P`º’eM‘ €·L)c&n­†”J÷ý‰ê/ÎRœ)å ž§N‹÷îŒÍìˆ>¨ÇO¼·-
ŽdW±Ãï²á’oÂæÚŒ5]êuæ¶‰¥ÿÞú­™·}ßÈûYéìlî˜ì‚·9½ªÉtë×ÛÖZNœ?`Ë€‰¶gk8˜™Fâ8Á>ŒÄ²ÿ¯ýñ#óX
¼$ry$Hdñ&.%•Àh]h% YŽ˜ÚµÐÀµ.4çØŸ¡¡X)”k]ÿÛ£M90æ³{¢ÞÏ?õ¾˜»YVöíÆÕ¡Úfû€zñ³+5üS1a¿þÛ
ž^ác8Æ=÷R{õw1vÀEu?¶œÄÜiÚÚeªzÎÙÓã ·¨\yE”©Êä=»¿³‡µ˜ñõ`l,;2>r#»ïýO9Vá¸÷vžçV»›•cÀr´º ñlª†µÁ²¼Å2*š›BÍ‡³‹[ËÓnz¾†dÕ›–Y9è—–i,Ã9jÏö|ZtXÌ½Õlö«ë|ûñï¿þòáµxmY†Q¾`±=Ï³¹[K]¬ò©Âv—‡ùUëXoñ>HÔö>{à ÞPK˜r(Q7G™q!k;,»´'zg ÇbmýúöôIT¾PÇñ½l¬Ö½àB×¦8’a6+ÙÎàÖ“³íC2¢0;sÅy'oæDrCò_V4Ú]©=­æù H—	O¬Y«}î\È: ˜ZFô8(QªçmÜQðhÈE‹pM5]¸`‚¢0Ë)¡,S™æR  Ï4å€s©cX@`Õ!ÖˆDs¡²,Ûz.ÎÂE¨pAV„"ÅzeÜ^Š9Z.8ëd"[áB@¶[_ËpcÃDÿòâŠ=¶x±S3ßG¼ø^žÆ„Þ’<NÕ¾G™ò}Ý,ÅÐýTÒÆ73š§§ÖòeÝ 'h™ešÒH	–Œ´¡Y‘SD(M†6ÃÇ–S"aUIšj„TrSjí»oÎjýÖ|³$¸÷¿sc_‹3T¿Í‡5ÝÿT
›¿!u¢I5M†¦7Ÿ-[i5qŠj‰ÀOUÍì‰õŠii…±KÚÈýäÕ…›×g©4‰ºÍHß*èÛ`:›»PÈÄÑk¹¼™E€¥8ôöñwõûßÌ1@u7XÇ1á¢«ëF%n1c	 »X±[Qß­¾x&.l–_‚ì‹K:b„á£ÇÝ;K—-ýÁlØ-b{‚ìÚ›¾YXÖí¤é|´ÞM¤w¨§q\ÿ›½¡ÛB;ÀåŽRCT Æ€å"ïþùöÝ?¯;¦ø-ˆ
ñx x÷ÏwóÚýQ9¢HaˆþÍÖ23ÛršŽ¦îæ‰øÎQŽˆï45ºœîWVkyxSk¥³c…
b05˜«ÀÌ2bE
„”ÖFcíü™PØQ°@'9®Þ'×¦(t±Ñ?ÈŽwW½¨Ù²SÉå/^:EØ«à7¶ßÏ­>YFJV)'p½fK$é2R+¹ þ‡ÜG‰v—×Z§{‰*°õ|Ì4M±=<3Or<<zÀV=+’»-È›ØŸcw˜]
S<‹ÚQÉ}äTo{/f¡bÕšt½Î«êNØÁ~H^òÊ…ºVoËòÜraiSQBp–#ƒ­W¡("VåÃ:cV¯ÃZCH˜æÌMR¸É&µïnípæì¦-nBùN÷ëznY?é¬œaÆc»A›Ÿ¤ªiO¨ˆ¿YûÚ‹ß„fŠŸ8ÛŒÚ•Ær:©‘ÕkLÆ*0—ÜR;a b¨ ™«’*uáLˆ˜iÉ¡¶Ê‹2Üd`<CÐLÑM­Ôß6ÎwfB¿óOî‡ÙÐr¥Ù ?q;•w‘,Ó›óAåíƒŽ‹ùdõ‹OM*No9ïþô^|zûãß^¶ëÐ¼øô¹.Vón¬Õ¤r<°S¨æâÅ;7Â'L_öþåÑ5>Ï>·\Xýž_öê÷·û­ŒgãëŸ¦mîì]Nî}/uç‘mŠàèá`’•jš¿ìÝØ4õßÕ·Áµg%//êô¢²è»>ðv¾ª—•åW»_+ÿ‹FðM*÷‘+®M¼nîZŽ+Âž«ÇuQÄåú0a&8\Ñà$!u¡INvkqna‹$ä”ê5­Š5k
Ù||ÿÅÿûºMÔ´2ßKböšmÙ» “2–9'åf×kŸLMCµÃ¥wû‘ÁÙØ;‹âxtÑIÞ»ÐFæF×OŸÝÚÃWƒáp^Í¦jVNSÀË»Ipöjn’'ÿvÀì5X”LŠ‡v	Äº´#º?ü1NÕÜˆÄ^¡¤msHFUßnÞ‚ó¤`¹ëg$n¤Ýk3ïú:ã©€I›æ “—úG ‹®J~Î8ñYkàÄç­÷xf“v­kàä3é'¾N¿
×{_…»˜ÉSë¸;ñ^@	 ×yöñBzª`G1ËˆdwÌ¶'»'®Ãíˆ\máø<XŸ¼Þob´óø¬÷onãó¢I0˜ÏpŒ)ãÄ“ßŸ®Èò³ä½ûà®£§Ë?M4UQÊèÌrT_«SÏI¯ŒžW4bF+éŸ^{R{ckØPÐUwÝÌGÙXÙ¯¦ûE xlÙ´¼­¬¢\Ã{k^Á£ ²È1È•ÀfÌ‘²åB$1ö•!$%ÉUnÿvý8+PÕF’7oÝš¬×<coñŒ›ÕÂ²ãñZ5N¢ÈNÒzi¨õÊÕì””¢vÂždxwñuGélÆz
3´¯7ÖÅ´æeØl´‚ýà‚±—Øš9š{xÐ&£G2~SW8æK)ïÉ™œ5€?ŸÿÄÒøóu‚‰îå.cÊ?Ã¡ê{¤¯®üly²\œš»,¬
…¢¦ Pdˆ +½	)¸9àY¦eQH®³ÜJÉÒp˜Âqa…6¬@¦7Uûþ°h­¾¨Á½hóP—÷zÑØ>‚KT.Ñ]|SîgYh>§'ôH<–ëÛÑ,ÉjAmÄ1’íø\û‰”©.ËcÕcŠZœåâø.¹XÀø¼˜å:šÀ·#š7Vàó>º¥{ÍÒÆ8,\òÚÁýò"x“ðå:ïAðà»µˆ÷
%k.¸çz;v -yÇ
Ü¡rv¨*³F‹ªáj„`'Æ‰¡qÒg¨Ð¹cœ=ˆ¯ëå`:‚k´¼º œL†–Þºwç†ï LG.8S—Ú0Ç=¸Q´#6nØŽä¾å0,úåý?^‘«]Ú²CMÞõï? 'à^â]ØÿØµ{È×ü©ë§03g!¡¸P3È1£H.­à‡"XH£Dž!C Yæª”e›œå‚™Â@Âò³h"Z“PË3\¬T‹ƒXG´v¯*0lò±h}6:I¸Æ4¶´Ü×¶¦>®OÎÐÙ•»CiEõánŸêp²yàzNÚ<o´>Ÿ¿ãóR!ø+‡œ¬j'ªÒR,ŽfÀÐ!bÇ·uŽ£„ÑlÔAN''¤•D²n2V® ÔüYô¢(ÈòŒëLTBã‚d€‚ºòŠ bÅ5Ä´È@n¿‡¶jŒÖ”ŠMµ¾›0˜¦¦]²S ž39¦‹Ð}±@êU‚¦_Äôòâý¬§òÜ×ê´ÿv5ìÍTÖÓ^îïý×"ÿí¿9f•\z™S}ò–×'jCÃ)h·€%"„t
}P´«wé:‹½>ë;O¡ï$ôžè¾¦Cë<¼Ç	¬i×ÏçµžãkN\HT;ÏjÄ÷¡FD©Kî°dÒ1íéÇ£‡šå÷‡RçNØK¥‹^D‘Åá•?1(Ãd…	\äå@’s™Q&¡•P±ýŠÑ¼`°0ÚÀÌuÕÚT³õ£ÔíÄ¬ìgy«šºz¦.JPw•ßVu¡ÙE—ùºüÈGÂ¿\b|Y‹«z¶AÝ|ºæãE,_îç²×s•ç]sßrl\¡‚º8ûH}5½ù¤·œïB¹2°ƒë›ÙðÞÊo3s=õõn³›žµ”v=~¢ž›XùŠ²F†¦ª.,­¼ÌëRšÝ°(ûõÚ¼À¯ådÛåñZ/ÞRÄ0Å°-ÞÚ@BeD€tû¥A8¤]~2(©Ø]£}±ºZ’£}˜R¤ý =è;=Ô>M-“Ñ³Á·Áìþ˜%îÖïÂþ…‰$O)~`³9vËÓVÉ ¼Sx[GÝ¶£–ƒQ;ÙKeŽÍDøTv;È¯Í¬Š€iÈš«ŸRNãá†ƒ*Ö¬‰ ËË‘Û˜§sd¼_·Üˆ€ª*—ÛãœYÜ(•ç®¥»¯p0ùR9Ó˜õ.-øÎa°¤Àú­ól¬2éjJ:ÛÃ^à0¤ÀU7f˜˜zr"¯ú­ÉÚbxLR­Vão*b7-½í7Ù¸Ù]ó:R ëË¨çÕ¬õk^’„æá²Í,¹qÒNjFƒñÞ³,Ï’0Ü¹Þ§ÊRšHJø€¢P:âØ<Àù=µ‚â hØc2’YÙŸ©êk*ü`|ÝwÌ ¯|§Ï¤ó5±âšOïRëS¯vÂÏ3»„›²÷€£RßÌ^ff4q•ÔBw ®vÑ:ágÏBFN„…Yææ*]LmÕ±P(WÍíÕbO£€–Ý™£ îúß\ãèP˜»~eÕJûêš^¹ó<+“Á-m¶{ ƒæñzú,³¿¿º”šá0DÈí»CÖ·Â€g·Wûð‚nF×1Íéz»MÙÁ‚óõìk5±Ì{[lõõ·b[»à«”b¾ýÊÿaŒùìO\¢íC»<ïÛe¡v@+}df:U}W<&îÁjÀ˜|eìÎìQ´4jñL0tãåý”Œ‚jt¡j¼XKbâ§ôW¸½Z/àAëË¿„®Ïû ;D?èX[Â:‹Šb²ôÛÉÓ‘>ý5®œÈµžö]ð¦:M”Ý…8˜³?¥¥ÀôÕ|VZÕ8Ò9JN¿Qì;_p¾H°[£œ¹yªPz`¥ÇaLX©_U±ß"gù·²ª­7xërjÜ’z×ahtØÐ2™¾‹OŠ QÃ\Mbaž$"Ï+†÷1žÛq5™’pµg\U8~ôÏŸ?_…5M|˜’Þ
LEï…nqèQ£Æ@Ž?ElÝÂþ×Á,Úyú„×¡Ž88“a^Åê˜M«–•Ã¨’ÿ)É¼µ0â<Œ¯D¡·h2,ð&Uå|IƒC^ÿ3ÌLëªª˜+dÕr{ƒP‹)àPþ´¯ë yå;rlƒ¨´ïwhfÛÜzã«áCÿˆuýñ²kò6MýÁTð³™Ý–Ó¯kïû¶Þ–toÍ}À91ÓávL^Ê0\v;fÕ¶GÞiñŠË­Ã–Yé%n¶ußÓÊKiŠü™™~u—_¿rr¯÷Ø¾Zc@ì«¡šŽú°Ð¹[+.üû
\ZÝËëÒâ™¹lFÿ•ó„1)«\ãhÉÎs©òLkæºÆÊ8böK¶’ÃfF ©tIžDQ)8ÜTåïË§jjúù`”V|D|ŒtƒgVöÄÿž¿úH•Þ¼rÍ/æ<ÙÈùáJ4vã>0 ¸Æ‰!	è`øø”ƒ?Žü)‰îrøøÝ!6£…ýða{;oZ«»\Œë8rÒ½­]Ø¦£„°œmÞg3ôŸÅJo¼N	9½ÏFï2z§D¸¥ülò~B“÷±Ñgûë‘í¯'jAý+[&O6©Z´GyÜTPÆ)/ã8ãÂ0Êì/‚@
lÿ0T\dÎ‘d€gP .3é&P-Ç÷ÜÃõê‡7¹”ø5»³´-4ÂžêÍÇ>ý¹×è~ŽIÝÈÜŽÔ¬ç,§>±h!ç¿ì¹`OûO'mª•KtyárìoUÕ+§+ôªáð¾—×³›‚a©S/nŒËÞ¯óõGæo/{Ù|æªÆå­o‹~‘Ý÷êl¦fýÏÒ u‡…ŠQ×½Óå‚¹¾è¯·Pa! ³HµlTˆlY©ì!Èî:¾kÞõŠ‰&´¤o“o¿¿yê³/²Ý{7þfÙÑØwKÿ°(wÌ\ûÝ[±¿µ
qÝD}[äíU-ôÁå}¦©£T0ÇDFjrw¹«ò®ênË0lèx<›„œ”6²²g¥I 	=
XÁcÛN”I'É’ Ô¬ÊQÂ€Gx ¸.ËëH§8DØsš«o»A:†¨Ýcìö§Pìˆfc`Â6öaüµgÎ1ŽñÅŒo‚¾vƒ¬1Õ…@´ÞÚ•ç¸Î¤—bÉÛ“Í«þd:ø¦fí—±Gx¾s†V7[¦à÷#c¹Ä1Âè‡§P~\—£+3ŒÌ³>½ÜMÖCü.[e`ÑóÇ~ÂkR?˜g£¬²ÆØ]&U—Xäöl×¦ý©+À«À‹Y+¾ªÔdpõušÑc¹2úEëƒ+tõñý—`3éŽq+ÁFÑ`[h„	t×Ðùâx²Ïd‡ ë[¯; +K¿ýi;U_©žÞOfeÀ–,NÇŽa‹o„¡7Ä¾fÖ²æ†™|¡‘ÁÇ1£qd¸qÌh5Z†¬|aÛ7iÇX²£ØAvë0su¸•:ÂžÊŒ[íCv ý:ÔÌv|ÇíFŽ¿„‘,Æðno2³‡Ùâw.´·Ç†Žyá@íVyñþ@·@¨÷ ª;È:0z) XxŸ“”Ü	uÌþ%Hlq‚4v‡Ho4Ä­‰C¶s’‡«°>Þ·^ˆ+HfµûÍÓNcÿ«‹X}Š6ð‘œ9OÑË-#¹B“¤@JÂ	¨R
°,—
S’IQ˜Œc%
„c
c;ˆmªy|vç|‡îŽ¹sà¢LÜŠ;"x·–2g„#É[îÎ…$<ìx³#<îøt:{†Ó¡ƒYª]'îÐ9h”í‘:1q±ÏNÌÂÅÓøzb@§OHËû6ŠYÜ÷ëûØU” ¹ô%À6Î£È¥é¨qÍküJ	 ¦xàÈ÷²ÆåÚøžâœPO8ÞuK|ÈùŠÇêØÙuµaçN;‡¤åÕ
M Y¸·Ž’pß%ì±çëûO6X:ºÎé	±=TìeKô_u%‚=öœ)ÏàÏTZ§ãm‡yp»…Ã,üoO–ñØ#ØqÍ…Â,|tçôŒ£—ž½¨¯.ÄS€dÄSó[Îõ…ö®/tä*AkœŽI€U·N2÷gÕ;Ýtƒ·2¶í´<©Ü¦mÞÌdhçÔLfñýT».Î à§iúˆª=Ÿ~ìfÏgß;×ž!™Mä„ŒI´ÔˆBC
J®pN8U™ÌI®r)PeJE%¥†	˜q†¥à¼Ÿok_¡ï-åŒŒ•÷zÏ+=¤®]™¢Ùz/çfÇèc¬ccòÆ!¹D>»±/iã¯Û§;Q_$„84µŒr,è¸")Åƒvý#Ê ‹,¦HW¤?œÏ_ÖzùžÄ2†Ar¤GoèÈÞÈz’Ã'™YrT›_,½‰!ØC®ŽN°â”;(ÚÆoqpœm‡Þ!‘7Þ’C¢ì8pŽøH>Î)[uEàÞÃñ³(âh×ÒßÙ&ä‰’R‡ÄzÍ£œåI>òwq¼3Úw™à²LñTÆùá7#pðƒO" öF<œÎµjÂ¸—Õ~èïÈëj~°öïš~{Ú”»ôVœÎ˜FÒÜ¬&š‘$²‰Tbç[·XøÎ÷Jðäõà-s£ð‰6ÂàÉ€¹Ó3²¡Ù±Á¼mai_Ç`ëF0‚TÛTÂi†sf„Ž¬Â6vÃÈÁÛ‰F®®½mÇ~Bx)—¼öh}Ö›Bž$œ(Àa¦Ð&+C¹P’c54A„FÆ $"Šœ	ÉŒ†a#¹ýqS(øÙ²·1=6†lÌvÆŠC(Z1†ÀÄ2;ëŒ!Ïn9á°l†–ýÔæƒ†hŸÍ!gsÈÙò§6‡ºpzZÆ÷•Mð•Ã¿£ ð³}ål_9ÛWÎö•³}ål_Ùa_Y&Ñ¬ÚXÆ¥ûçÈ6†2†ƒ3†Jh
¬‰f¬€ZdØuÏ¢š˜eö9,S,‚"ûe¾ÁÆòÅ*•Õ°nŽä- ‘Ö”}´‚°žªÑ¯f³@Ö·Ï‚D°ZœØbà! ‡ Íj²<t+6ƒúÌ}7yíÊ­–‘>À§jDáÒ½ÈØPöÍµKW³™jX2jnÍ$Ã´Œ£™…È©" 0†$‰È`^h)µÀp©Â¹‘PKdd9Ñ
f¥6ÐÌ‡ænf¯“ûÉ—ö¸smˆìfüËd½Ïv÷íe«I§%åmÕª2+-Q™™©S{¾ÉÇž–UYÌæ©ßpõò¢Ù»ª‡ à¾:‰%¾fú²7»±Wòú¦7˜Uë—×{ñî_ŸÿVOU(mN&&¡ ˜·h²ýPIÁZšL€ä¼K’!¥Ø"Éö`xTŸ=Àz#“,×ÏÝÆpÏX¾GÏ¿/¹E‚Šd“µ]M0Y“Á6j‹5ÚÊ´ûÂÈäöÏ¥˜G–¹°`i…â jÄÁµ·.lÿVŽn®÷pŒÎÂ_8]Û•¢&ÜíŒ}?ŒîdÆ‹,çþ´«$Y~Ï&ÿ²vâaroÊåM[ŒKõSër4)«¨J.]µŒ2KÇWÝ˜a`dcÎs¡³WÕ‡Ø²§Y?aÿ*Q	ú£ÊñÍíöæm%Š˜?µ¦çõôõs7Æï1cù	’Ž÷É#>rÉŽÊpgH¤]ç‚qmŒB¨È5€œQžñ“Üàœ!Í$ÓLpÁ© JÆƒ€gñ¾oÀ<˜Ä©°'jg#tÅÎÆ `ë} Fº®iÿÃ-3›E”ñí¬®½)ÖßñŒö¶¥¯ƒžšÍ‘œ5{ ;Á!<É¦¿Ã’@«ÓLžÅŒ´½RJ˜*$3(˜F:×JÌ²\XZX(³t±öddˆg9Tëœh¥8ßjÿßöyZ1öæVÄ½¹UO{y©çÎ=Xßö¾Ó#{’"†i·­ýA´¡€¹å$Bvå!†®…q»!-Ä.ø…;}Ý‰JöñÖ.^ïøùéÇ·þÄï°Î]fïGz„¼{5ÏçÌ=\Äë½{Ž£ÃçÑœ0(sYV4Ôö>k”+`
Î„¶Sjr1Kb¸¥ƒgD’¼€-N<YzÈBé!#"KçÚô3Š­äØÎ²Q‚@¸,¸àË™(î1g$•&ž@”ËID¶ŒÔd°Whn‰ãhPRðÂ
w*©EaìoˆZÙÌ¡UÚAŽTe˜å†äØ@SD†¶|üü>âcLšÐ“ÃE·l˜à$	$Dò.¤²õ1‚(ÄŠžlAdGOF`I_wÓFwèjb€ûø¹)÷‹GÙ3™òñìK1F ™ºåì$Gknz Úà”Pôï·ßÂ„˜—”	ù•	ØÙ¿'‹Kñ“80%<|d[Ý™´ð‘0Œþ…‡ôÏ?âh’îgƒ±«1ód5dÄ9Vå«’«rŽ79Ç›œãMž&ÞÄqÐrbÆµö’Oc|úËá?¿ýõ
Øe‚?Ç›ü‰âMÔ(SRÚ±õùõÇ¿¿¾úíËû1çè/ëâôþRÇðï6Ä—×>üâ^2m\03Vgê2òTÑ8GŽjiÅTÇ÷ä·[÷èÃZ_®äwfÙ×†x J¢53ª%T¬ ˆˆ‚b‰
)`Ê0Ã"„*2f2Fò«DcA.$"„s¢ãjj»éÁ"j¼ò}š¦BŠÀª©‘õé`@®¤®ŽP7uÄX¤±pÅ›²0š=CñþNvz¦C™î\>„å5é&ÌÃ:T&ÕìYjXJSPCFæTjm %¬ ™Brfˆf(£F…²,'YŽY®QFrµÉ‰üéó—ÞÀªÑS«÷&Ã¹UÈë\ád_òYàqNº•üÉnM9VÃÞçY9u€_\E”‹vk|æ•É{Ù}è—ùlX–_½«ôqšñIÒU†)G«>j€6¸`\)ÒÀ-M-¢Ê±½ÏÁ$ÕžÑäB–§ã•>„æÀ…,í[A©„Ô¾”cT®´hR{Înuß{šê{üd¾
;åÑ\GÙ­ß!ŒIËiîµWC-9BƒVãÌL§Ê5ãŠRo€Gt8¨,ÎÞjnùµ™EeÄÿé½Íl&X~ã\­á†ƒ*v2ŒCIÖ0ß‘Å›rg1&(SyC×ÙU˜ºY‘>û\"ÒÑ£¿ÆÙ8¯õ´ŸÙ3Ú40€š"aÎN«ÌK^j>+Õ´Ÿéì¥	ÐV´ú:+'Í»5´zXË™¿©øTÞ9PMìmÆg§žÃð—ì&n†åú«ü£“SõžhïôSôï}Þ³#§„W5RUeÿÆÏÓ‚ÈÕ“ Ê2aÒ\Là¼ Ž)Ä¨‰Q¦˜k€02'eÆl0ß~¶Ïõºy®#˜o‹ÁÐÙ…ÿ=ÿÿÙ{·-·q4]ð>ž‚«.¦;-çCïé=Ëigf¹Û®ôN;«²ç&ŽJK¢J”v]ÍCÌÎ“@J
J!Q %ÅÁ©:8"$ Aß÷ŸÇŸ²H¢³y‹Õ¯úXµ¯§j_¢U–1‘¨îþŽ©é­ú^;«aO¢†…Ý]áëOçúØúøÇW5®Z­Ïï¬c=ëX÷v<ëXÏ:Ö³Žõ¬c=ëXÏ:Ö³Žõ¬cmìpÖ±žu¬gë)Ã+ÎjÏ§«ö\Ó=<¼vtá?ÙÓ#ÓË‹^Ttuî‡}Ñ‹•0ÏÛéF9¥šh­ B\ ç¤Ôp¯±Ô{¡eÂ{!u¬ÒÎ&”Cm­B½Ú¡}ëfÙ/JÚï^eËÛÍªûÜ¥ýyðÙ3•E­V•ú#tŽ…jjÚÒ›|>´á¯¢Ò—Æ¦qÙ²ÿC&ÿó"\3^">ŒE*‘Ø(N!N%`Wž5™Í§nõÅ`Rv¹ˆªÛåˆqî¡ï¼8¡ƒë¿¿x1˜Œ‚è—GlŒŠ¸0ƒ+×»Ù‹]ÚU„!cb-½BB0·jW¡”pÝ·U"ÁÖâ ÚëÚºe«öª=×«v[‹P>¼>\ú[ Rg~àìi–ÏgãvÖ¡2†ZæÚ\ßò,};Ï†­WÙ6|ÇÑ(¸Ë§×)•V-w·XžM–Ï¸	:Êâv6aFË–;‘"¾áeþ_/ÜÌ¼«ÿèÛEàqÍÃ[ß/Â‘_¶Ùl¯¶ÁÖWò¶S4r£»©ªL°ýè‰ÇR“ŒÚaÄž!A	sØY ÒÂ“ðž`¢¹$k%VÞ •GCo¡ëðC½+¬âmYxðk¦Š¯á<œ–¦³Üg¿¿{ŸEÅ{TJíÆ¡ËõÈ–»7 Ò0qÌ~öf–b2ö"÷/m®]ÙæÃëÿŠ r“O?eaûÛ›ßKT
Ÿ…åIT^ 3YpGê“ë_ÄÇf8	Ã¼
QÙ-üþSŒÙ8)B…ûŽáçSuÓ÷Sç‚siŒæÁ?.vÎV¸
§‡˜Â\QÎ%p{u6!áëÙS+Á×íáJöç
,çU²bÚ+·e?nç{ƒ¨CêaP“íî]«DK{ŸžmxxÏF–ö&ù°˜MU1¯&Ý3;Ž˜†ÑJFÐØfÔ¨Ã,.™#`ÜÉŠŠmo8Ï¿”Tj»•¬ÓXÍùÖÆ”fˆZÚX¢zKûÆÚÞå“˜¨J¹¿OAk.‹VížýüêÕ%Þ;á<È·mº$.K¥ZJR?¥9MY¶E£[§°}z™5ßŸ0ÙZÃg¯~ÿýåo.áÞ·½S_të&[t+ïÿ÷ßÃ~ Ýzõá¾¼³#íØíÛ;;vê¾ý×¾wßZÑžÓRNXrÜc³äT¶x2 ÆyÍ(¥
1¬€	-$
0L
Œ4ŠPj³Šjêãšˆ@¬Ï<ùIðd|‡'º•'3Ê<™H	øO¦.«–·áÉé~rƒ)ws;Sæm=ãSÞã-Ö)ßÑà?fÊÜ«–"Ý¼³­ß-“>ÓÖ&SNö×¿¥ÌÉÎ+¾ÚºÃ’Dß€ºAwÓÃZÝûœœ?­Æ‘Ú÷¨QâúBÖºwéÒ9ÞÃúwXèú{XÿçŸ¸öÿJÞ§O‰v|’<ˆÖºqdÐG¼HC[zñÎAf-#Ü †žZŒ¬^;¡™= WLcÊ•â„,d`RÐlÝUüêÇ/_ÒÈ7“™YÑ×l¤ÆƒÉ¼Ê7¶$½»yòËÌäá›0J —E?Áìk$´ÊWÙ`×s9úóª&BI›CóYþïÿ#+½=Ke9¥ÕL±þÏ‰»ª†„ºÈ³(­šÏ«R
,gÎfŸÕpîŠçaz[çd¨ã¬§bìæ:›©«µË­ßøúåÖ–ŸÇón»ÂÍÂ}Y[.¦u19^¶cqïôUöyQ»ùÈžM²g³k5û·"»Îo²Á,®[ÅÌœí÷ûß…®SWZ‡ËnÕ*W‰ŽÂÂçÓ˜i{i#^8ôt_f±E\ÁÂesÞ«é>«ÄŽr¬ëùHÕ`X|Wyý¶â õ5*N)ÜÜÜôËw±”Av•uä1Ië9ègAØ!x@€8Û°(”aQOBGb@•Ü/y„Éõª7¾G;EèÜ«%ùYãÎ\ž ¶ZùrM,×á»{´Ùa÷¨„º”qø°ìâÊñ­‰<;Ù1ôQ’å‡c£†O>>xÿ¯$h2¼òíëæ0pÉS„3c—Ú@ƒZ	§½%†cP'°ÜGÃ§DsÒHßiIÞ«ï¿_)@ws»b>‰:ÏHü<ð•è„Z^üf:Ü¢êuQg%wfö¼úüúä¦ËC§Å˜Ï—¤¥FV.B§ëÜVIq+’³")Ï33TEèÐítßøj6Ež²aKŠÂ7)
äÛ]Þ$à1áêšnTJÎpÝí-|"h‚nt¹Ñ×Á;Õ‘à¡HJG×£“ÈXëPáÕ’—©Ü’…=N…ÃyÍc°mŸÀê¼©µã-óÓ[&Ogk§æÏ¹ÏfçÇnvF¢™oUUB¾=‰@¶¼lýÇ$r÷¡¯ã\8©P`g†C v˜!¡•{È‘VaŠ‡:j¨!BFö§ÃÂº3•{ªTN¤j›’‘õä0€IHE-=à -C·¦rgS2GÙc#s÷¨ù9«{Ò¥®æ×»ðqfµ;kÌÎØûWÏ=ºè•ž¹bÖ™,Â>A [‹µ$‹jsÔc¥á@B´¦
9ËµÞä½³ž~È½6–ˆ%u"°JwÕ 
÷Wäj‘R…Gnr:0ÙË÷ov³ÃŸQ÷{,\iòt_ÔhÍ‹Ñ,ÃG‹Ú ½Ù:¸ºîMÜ´\ü±q‹ïbQ•5uKÒyÚÌ~Wƒ@u?ì‡¹Ü\½XMru“T"eº… @Ûµp”‘ÍºöXÒhU£n‚‹ðáê¶Üv½jÿô`{'Å’?‹¿„‡\¹ïªr6o>>B·}åtCÚ²¤Êr"ÍQ¡Û_ôÆSøÜîŒ6Õª1Šte;™Îõ×f¨Þ¢6Ì­Þã§—?üúæU ‰(ºµo"‚ní›B]AÄ;Ì/Á`å—êóeÜ$[âb×}ñnÚÜHß4oF—•Ë{c£p“	2ÿLëŸ	#Ù«©%4¹œÆW“||•ÒöFf¶ö4ÍG	ós)7qåfÑ#)¡å`üÇeL¨uÍ-GFíl”ò¨FÅž%öîØ&œXÃáþfiÏ)¶,róÉEÒÕØp>œ…§0Ii5Úó†T­YüœÐnœÛ}OhÙ,<Ñ}+³í¦vÏk\ªY>ŠLf_»ò5N{±¹uát™:{yóÏý«UoŠ9¯÷µNŸD 9—Å ¾imgÓÁÕÕ¾C16¬;Þ›ÚóÔcÓ™
CÚ½¯C­éÄ¹OéÓ#lÐK)ô¾-ãŠÑÕh–pÄìN‘C]ÆžÁÞ	„ÕÝ·…QÃXbqï«¹X}3û²§ÝlêÂÑ½÷¸šk7ÝÃó±û¸ë,\yÿˆã‘š\Ž\Óû7õ³Ë¯j4¼œå—ÌÇƒÙå—QÓÓ™ÎÇKú·–õ¢‹lÎŽùj»§K^Y–/º„^)TC1P¤„&Th=À@¦‰ÄB"ƒ4Ð^KEÃ!( S2üé%Ú!Ö²†gÿ¸BjLm¯•5e—ÿi¹Ù³ù–½¬ÌïË½¿ËÊS¤ôCÍTíJ7µ+EÓ…Â­$Á¥]!œ)×á‘eõ´æ•Ä%ØOãüfœ}¨ îNÝd>+\TïVÙ¢ônvv9\¸b{>®:ªú ±õ8Ÿõ³×.³åÄ/b´_Y¨4
ÜÑ°òÉMÇnøoEæUh;ð_+Ÿg¯Lô7þE¿ë-÷pJ£ÈÄåa…ûáÅKS
ÛÅU ô‹ÚnÝ&ma+i»üˆR¸#Í@„¬Ja”¬¹¼PHöz¼¬&õõVoBK3	~*f’]·{°­DrÙÒV²Èï´šÑ9xÇaµuèÕ˜'2Mjß9ôãHåT5é¯ÚX®Ìôë¤Ê9ß©ËÏ¯~ýï÷ƒÈÍ““Ž¬.çÿ›j¯QWít÷nqÙÚ÷Qb Þ¤´,¥æ„ò6
g¢Ú&BsnÝç6+~Û>Üüo¯üû%)J˜É×Ùu>~¦ô`O‡&w¥ôÜ™×Êæ7eòî"=Z/RÀöíÎÄr‹…+#{›(6» …v0ýK•¥­î[³¸­¾¿ý­OÿÍ§ó¡Û¦ØÕ~6ïÊ é¦9ßmÔ3ÃƒBï,s÷Ä§v ½³RÉ)•RŠ0ÔsiFê^¦¾"Zi&!"F‹ˆØX	4Û•Tã–{¯nnw¨@ù6×ânU¨Õ}_¦)]õ\ðâÇLeÜ¤²l•EoØ á ÕS–RÈD2],ÞÁKÏWz,>»VªJy‘œº?*n‹	lm3Ú<VŠ-îg‰Çà“' Ü%©vr*Wsˆùó;öèU#õ¬†YÝûÏ?na%ôñÒSa_õ©õqËBmß˜ü1x{5­”qàN´{rT_tËE%’¯‚ÈH,S:¥°÷Þ)g§pÌ´”ÔhHãBZ`t 1Ñ˜jà*ÿÒø’å‘˜¸©›RºÈjkQåtŠª~gÊ“9÷ÙÏÊ/Ý4«j…Y	_»ÚÅ«Ü]ukš¦7Œ?-o©1e“ k)›$ƒHðí¸Æc—5`(º?„ÀíÍÆ][ë^¹…Zf7}[/nø”|ZwÝøáÊ‚ZF)Õ¦²Ç!kÛ¾oÈÄ0¥ä¡K[ÿbôrå‚E÷´/FÅxõ6ÆBOûÚOÕM»ö³IÛö_Ê¼qû›–G‰ªÙþ‘K;]4"÷faƒ£Á¢Ws¯qxYZuË3·“V]ŠëÑŽö1‡ÖU±8ãa¯ª`[ ¶½xÈ6u¬ÓãµeØ«<·‡9\/µ§å°VkOÓBX{Zo”…ÚÓº˜•õÉ`jëqYs&±qµÂ-ÚÏ&©+õ^ê]Î'ãÕÈ{ØpÕvpeÛŸ ¬±<n7èþÆ¥ž¯EDcÕiãœOòvTòÜ"ô¬+}”))ã”ô”[!ˆ@*ŠT" ™—N"C_.Í$àÆlÎôùXôÞ¡Ï|{e D9¢ë•¸ bÍÂÉ%¦h_¥ð],2ÝÂy&Ðw4k¯:9ÞvNõî½Ã¤“;nRêôŽÜºMÇ%ÉNî³Á¶S-“;hwj­Ã»ü;Õ¸ˆ§šï0ò'‘ÞöÉRóGXµ¶c1×úžÞ­ÎãÓ{múkÌ>¹îì:ÅOí¶Æõ[uª“þSTiíåÚQx”®'Žzì 1D,ë…oÇ³¢§¢›x7±„€KãÀÒò²4E&È„B'©A˜†æÌ&½ÓJ”ˆÕ,ÀgT\+šY£8†ÈÁ]Yf?TáƒóqÉc`aÑ(b­Êè?¿+ËRŠ|‘ÃâÙ_|Åôÿò]sÞÙº(á¾83ŸÅË4×*¦Ÿß>hl>É‹b ‡_/FƒB»kõ9:ŸÆy™þZ¡G.Àal:u£˜¼b’ßD9EÃ“Š®¥Ï3˜ø§èJŽ²XÑáy`ù4|ý<ãƒÑ`¨¦ý‹‹õŸ…›~®rÙaHÍÌu|ä¥XU&x­2d„u*wEVíŠ{‹˜|5œþß*Ä‰Ú¶Üe§pÝNqÜ.;D@åz†UP·~ï—p6Þ”^¹å{·›½uÒ‹RÔ©‹=/?¼ÍÂy’Ú? <¡T_œ;sxVV"ZÖõ¬O¨‰:5[{ŽÛ I:xð‰«ù"Ý‰óú\F³ÞÍ)rbN:x¯&§»‚†ýß7=áE¦ád²²Åa0ƒÂä½‘=ás®.17§¼D>šÌg'\&;U†žnx§fùøÄû5pˆi‘OxÉ	Ÿðµ›Oc)z1¦í„š”/öé.„¢S_Áú„ÃÃ‘çãâ:Ÿø*'|âøEtR;áÐ	G¸3,/ê„ð3˜Øù)GË	O¤Ov~Ê-4š¨Ù	7ÐÔY?8å^»Ï£_¨S~Â®Ðª×7Åàt£E›aØ;Å	ÏæÅEŠ\ðíº™b™‚p<Û­K[tËu‘Ç|-EÍ·;	jkW;T›WÊl]c@Uè1Š€äZZB8æX3/F
¡4²@{kršJæ©v€!% äJ ç¡FÆî
¹ÕL•z«7û²—ï>fÏþñ¡÷N¿Ë¬û<01Ž§1>äîJÝQuEXy¹mzä
2²© #`‡+-–%ˆ  pMIDK5Y¹°wBéq"­[‹°Ç§ƒ’‘¶¶J{Ô-•ÁoeþVg^L†jŸÿ".¢…œ?:²+ß#5^L?ftÈîÆK]†§zySG¸¡<{(±ÀPà;áµæFJÊ´‡Š"µ0ÂÅ¼‡	L¸ RåbÁn¸ôÞ!è!äåûWû1£¡Óm†Ž*F¬8PYÀ¥q´>M³þúÈ1‚¶Àˆ#ŠŒö–[ˆ±HL„˜˜Càá®!åŒÛ‘¢mâŒêù3LD˜(Šë®]žê$ªIíÑ¯Ž«Í{Ù˜p&æ˜hSª¾
r€ÐQ‡ÂAaKˆÁˆ`à$£™ 41”Ì8o<"Ô8äáŽá4DÚ`·rŠ;ðñìÃßÞ½op6hì¼{‚„G³ÜäÃGŽ?¬þ°õ0v¯Çúñý‰·m¸3=~qeÓŒ{F¢èÆXîÞ*–üqÑ.ð¸¬ü#!HÍÿP uDpf’ñ4£Ð)œGÊq© 	G˜RjÉ½QÈPN‘%.| #RU_?¼Ë~ˆwûjq·©²ËFÇÝXrñÔäžŽ#`£˜%dG(i§éªm»3”Ü”pt€CØV3šœåš5hZC’c¡SåÃõPÈ¨·ÔPÏÔ”0¤b„&×D{j”Ã1)vœÍ”@3+Ó±	°D	°37×ÀüPÝeVÜf¡CµÚ²ç·£Z“éùz$&!\Ö ‰¹7Ïì–½v†£ÇGžg(:CÑ:-aãH0´òô}0	H1AŽL!6*½ÁÎ@É,ul„€„ ˜BÐ2…wFfYŠž­„“Wñ>³w¯?d Ã_mÐhk÷}âÒS½¥ã’rŸ(YÃ'¾¯\ìöMxF¨ûÐ½±CtowCÎõô•oåS½,aà¨À27,D{……"°e…åBh±âa.¼DÛ£N a°[­€ ˜Š]q¤Û‘á·W:bÊmÏoN HwYÏÛÈ1«ç#bh+KÎjëáä>à¤mÑò=a`g8Y¸œ…‰˜ð‚=]8)ÿcÁI¹Ì…%ÒIE¡ÇÚ"k„„Ú	)çA!	Ä¥¶œQC801Ñökhµq"èw¹0¿*o*‹™KJD¨âåâpýÖRÜ¦Û¯²”€Q„sßç6N"^û}¹÷³ÅŒï½Vs7¨ƒ©P(Ç†Ó¤Lð5ÏjP;Ç¹êÕ8cÝé“¦rˆro*?Ð­€¨*bxÈ:bD÷ƒ¹!;¨Â‘ïy#¤”cÎ|£sQàa2˜òZ$‚¤á—I« #8H)þ–Ž*Ë[Íba×BÅÝ¾ßÊÙ‰A Ûõz÷X’µj÷„µ>9ã:Î{„l›Á²)•Ãã?;ïKHˆóå]Ÿ¤˜°<ÎJb•Ýgeæjv<³G™¹ã¡`„hí},mPCy.0gÀ…¿¢ñáœT0p (tTRG•×‚(åÀ®â"›PðÚ‡Ùë__¾Êh:~Ô:%ª¥žŽ¶p.f<I‰ë*)Z9…•ûíŒ3÷ÞrÎ¬gô9£ÌÙú¾†CØ8Ýæwz° n°Šw#‰áùb ¸ Œ
oÔNiˆ "R(­¦X0IÌˆ&©¡ù?ÆÍº¢…:©½GXÓ(ßˆÍ$ Ñ/lÍELÂv u»Ï(u(Å1šlIw†ª§o„/ëqc`éý
_8"‚;¢¤rN[g@Hé‡€ð—œA¼ÁÚÌaÔI£pŒ)#9 Ò T|©î²KåÖþ[}/¾]0	ÏmÝ ™ u.Zà»îŒ$÷$­K+nyRVyRè°<Ê“sÍ2Y)“\b+œ#
Œ…È:ƒˆ3áwÊNAãˆcK‹°à;€O‹tï£Œð¡2ñîûÎ’Çž„¿~üøþYñÝSÑ"De#û-KÐßFM2ÔÊvã.î.ðA‚ÇäOë§õ¤ br<Ç«Û¦©R
 K¨äØCÃ­S
#P!²RxþÔÅZ’„(„5ÅF`§vÙLÞnnóµäŽ³<SÞ;3Ëòp‚O—éV¢“–ÍÂÅU¨­Ê>™TW¨ÆžÇ1ö\àbã2P²ýa²éæ‹äº›ïþÒì;ó÷âicWºþ3”<Z(¹}d—Õñ,X©
*<œhÍ‚ôÁ¹! yìFQ‰âÞ s³8Âgœá%ãPbb2”(5êð¯ï«ô*‹³ unÉíýcá/ž‚%¾j@±Ž4p€j0 [Å.6Þ-î#ˆCÐb£æÊŸ%¶Œ¶Æ¯cÓCŽ„IË<JÎ„óÜX£!SˆˆNâp`r«•—†º˜Äœ”žÀX`.ˆ¥†k“š“å¾²…=-s	Béæ6‘us	j—yr¹ïÎ˜t/áŠ‡ø‡Ý)Óu¥§ow¿=÷$±ÔÚƒÙÜ­FP÷y‰‘Ö†¨×gHl0Ö>†-bË¬öŠ0Ç™riXjÊòð¿	çnöæ§Þ»7?d±üØÔ«V"Î®ß†õÝ©F¼[ÂÁÅV(d¬nJ¡¼U¶¯r÷±äÑg1^/Èx’o HªsÿX(R«¨ù`;´…XpH=Âhï=Pž{ã<‘ŽÇ QÀ"ï™´”cG–ZCo}=Ùàí/Ù»ÅÝvR”màéÇ¬ ô¢]AêØðâB¬îŒW¡‰8RÛg8¹u>H4ÙV€÷Œ*gÙ:DóË[P9&R=X•Gˆ—ÈaEyt&Æ1º"d•³L	‰g\iª`@¹p®*‘äŒâÔ –%Ä¼ïŽNï¿lÆmp	Áõl‘Hðº£¸tSy"ˆô­„¨´žýëÖ/–&nç°ºVFY[L$ F «¸öC?°ØŒÕÆ2ƒ¬“Zh¤)5&ˆhÐ« ›qÌY‚u¨¨ƒÕ©ò0ùG-ª’mŒðgÂ:ÆéFádŠ^KïEqk´‹ïôîNžÞPx(Ü…'õàÝŸva¾,Oý}9jBK’Ü’&·\ox8„¡‡«…F‘ÆQçà^X%¡·ÀN0Ö
â `)wJQœZ{Ì41>¨~¡VRÚÖž†¨§ÖÓÂEÁ†"Œë¡ ƒvåÐâ–;ƒ×=ÈjdŒ
éŒ\«ñ¯ÆóÙ°xÂ–¨až„.èxÐ2Œ~”ÛùP=X¹MÇ¤ qj¨)Ì°àBxå=7Ø;ŒCTS%rÍ5ã–p†©UD¤j×]â}gïªïæ±c„oÄ¯®EÒ5ˆÙFY¸æW'ZúÕÕ¶ä‚}îµúã:CÑ·ä±ÇÂ›‰?Xþã…Pr‹‘Ôé%3V"vÌk*©Çœ™XÎ §8¢).œÀ1ÇgGíÁû×¿œ9mÏ@> 	bèºÇ k1E¨]LQÜ‹g€¹—Òe‡äßé,ß°”p4@‰UK,Uš÷ÀApÂY!´õÊQlˆR„X „Â ˜+K‰·Ük1§X9ÈÊ•[„—÷ïÞÜJ-Te£<r”àÉõ0Ãwü²ÉZŽLD;]XµÅÎPqz[‡ÅùTOêÁÐ"žqq³<6áYž`ÄÎIŠ1œfðI3ö$´-êHˆ÷ÉÎïzí}ì’‘{0Yä¡Æ±à³’ZŠ5òN›˜”J¯1—á_F¬‡ˆxfW”"`5šS`*j^¸
¤Ê›ÍÌT×Yt	7ñ5V8ˆ8–.I%÷ÈðNgºR«m  t³ÎsÙýV#Gk¥’+—íîq_mº'†aÒ=€#öArHÞ…òÎï­þY\<F¾{€=µ\5í³ŸÿöÛå__~øëwp›~‘÷Ù³Ÿß¾ùáÕe¸ýî#z0ûî)¢ëOŽ„N£‰š=˜³ 2È\ÈcŽ<†%'\b£(`Ö0k™áIÈ0VÒ"àÈ9K©’‰á‰èi€ŒòØ\xÚ½.«ìšLÂ_ïæÃÙ Z‡T„úðêÃ›lW%já³Ú%Ê+\ì¸Âã-œž$6Â ©ç™‹ñ¶­Ä¶r'ž…¶{pÀ9à•Ïé	)ø*%JoT¾‰½ÑòM<nw¡eG‚–©³~p×“û¾Di‚¼ã°ÇxÎ"„ÄÜ{ã9eÖAÉ©ÅPH…wJp€²
YZ
 S34üº¼Ë]ÐññÚeÛÖånÅfµ–!umðÇwüÞvI:ãtÖ¬©ú8¡­r0,Vò,éœ:@é §·ÅS:¬³¸ÀCJ;AE¸eüo¡|é
FŽK×îóèÁŠ’r™´ŒC´ÐF[âò.ˆ<Jk%@ ">5À'´äP`O˜@NtªïÜ¯ýñï½wéâLÕ¾ŒúõÇ³—ïß<rI¥EâŸ²|u½†Æu7ÁÛ•³.÷ÏYN¹Ø¡ì Ø‰ÏéÏŠOê€¯äcï…z0‡5(…{$$s{Eu,¤€¹†”qË<FáÐ‡
	F­…ÚkÈ!0È	"h“Yô×/³7oÚù¦U}¾¤=¸Erº!xà ¸ue•„íBà^C<ÑÂSú³žÿ[ÆZa¢Õ¤N˜¶ Ä‰£aÎƒå!e€	•‚Pï´šb¬×Öb€™˜Ä¸¨–H„9¢}rméŸæfÅ<`Èé SëôçD†×ûXòº‰„àv)GÃ6;£ÎãWwçt£gÔÙ‰:ÇË\ZDuÐ©±¢ ÆVLŒãBkÊ¹¥^(@ d˜ãÀ±c9À°eˆ)±c<âa‰¨óá‡×Ù³b–OÃG½ªr›ujvÝ¢èôÎ!9ÊÐd”!›ß  ­%@ •†+l¬3ÎÜ‡~ë @Îð”Î8³?®ÆãÆ–­xPžáÇÂSL1Ê@é<%A!¶Úcn4²FsiËÜhJã¤
¯€¶„z€5!Ê‡©€°ÛíªE fÓ(ß,p.7¢/9†¤W#@»iqqá>rÌäXÓná
_>ÙÐËêH?>„WäáòjjhˆwDs
T¯ñaÛC9‹ Žår¤ÑÀ`cZpÅ-Sž‰" Â=Îæj˜T8åÆ®VP:ìÌøe:JÜj{†ÍÇ¯°JÇŒØFP(× ƒV.½åŽ;CÆ£¯·V>§Â¬fð¸C0Ÿ¼vk+Ä,PáX3º	'd/ÜõÃÓŠyç”sZe8³Ì1Î=!\ ¢œ‚Ô8N<Ôd¼“AáÆZšê÷û÷wÿˆXP†).}¦ÒÁe[ïoFÄFzfNÙš›¯lÐ_ÛTg0¹09ÈþQ{ZV1äIÿåãº¬Nìã¢@‘«+WÃ$§ÂkŽÃa¤–Îz€eh')CŽb)€tH€ãXÈ€È€‚d¢=õ¸
|øååûxŽgŸI~ßÖÇxäˆž
ŒˆK8¯%ì¢]èGm‹1á^v8&Ä§õgÅ„-ãïŠÎhhZÌíÓ”2*”©áH(s3{0s6F@ïRL2&,•Êè ˜šð‰ua0ö1A2ƒ,Ãa„ÅS’:Mhª§ï?>¾Éþv`VÊ8F»„”OÈ«!¾.“PÏ±"e;_¬°ùÎ¸s¾XèY$<¥3Þ<QmU5©úb•øq(U6…nî°ú`±*0.J‹Ì)Rm¤GX ã0ó:&Jö[b•€„(H'ŽkF%Ç4†
kÀC»”\/³Ép~u¥ô°ŠYŒ¯2?7WÂÇ6«H3Åþ»-*.ÕcÛ-TÉpQËßE—	¸Z(¢d=Š¡K[ LtÀŠÓê•Û¢WnˆÖì¼»#È;?:çêdF3ioížS‚ÓwŽ| Åã®Ù²²h‘M¦qû'´lLµ ÷‹üÙf†­æÖûð! êÒ‰¤ušÌÂ§lL'·Öe™;õï$kÑ;í“S›å»j{áçç„¸l>"\·lßx·Ý3¬™|ìÃy5;œdàðúÐÅëƒÖ¯»q‘–°Ùþô _Ž«/uÇyûhƒñRc¦ÀBè ç”!Äx¡©0–ê Øjè‘À1¦Bj¶»ü¶_+¸jvs=0×Ùuj†Aº\j5ÈGYvwgÊ«¬8ËÓ®,Á£ÌûÄ×yžÝ>7ûü"2ŒÛúY¶J¼Sµ¨±ÕTq~Å$/%ÕÉ§ázQ.Ï‚¹¬ßÁ(¼<œ…¦e¹ºUóY^NZMÂ˜“é@ÍÂÝ\-æ¶wÉ‡”‰·ý˜YÄÉ,(À-ØTñ")×t¼%*yËv&BÇ!B¬uÁÕx\®žÕžE7ÞÒÈˆ½×;ù@,+  FD‰ÔbÙº5«“)iÏ¯¢Of‹¹M†¦Å}OÂqÙ¦ù"‡¡w1
'u‹µ+Š6+=ŸÊ‰ÁÖíûíÍëËðz“âvæ–ys3Scwýx°í§xvv’×[ùÞ?Ù#‚Sƒ%Ñ 1ë™†L)	œ÷–C äÂÇšH€ @ÀˆÔ	îL€ø¶º¡L‡ “­x×’Õî¢wï—Œ®NÊJ«·Š9Ç®¤C‘=-Ö,þZ¶½¸£9Ê²ß
ççÃ*¿ï|<.5M™©(N–û%]»XÑµ0´ÊÂå?ÍòÉ£æ\"•sá²Tãš¿.–Ôv	céš§Õf=3¯ã0/"»Eø­=ŒÐ¤åÐD—ê0‰&=:nt¦9Ožæ¬½Z[¬k Ïú`ÿmó¶}XŠ¿¿ùõãexµú¸{gØ‡Ý;Ë><àÒ²/žæÆÌÊTàFÝõT¿nF‰sÒDð2ææØÊ„!ƒè».!X1«µ—L D§ÎX bm·«¶é»å-
c[£º¬5=ÝÄ¨‰Òƒá`öus¼GÌ¤€ÉL
ÊEBË´
·¹zi5x66×™K‰KqÒ)ÜÆã8›Z~æSg]Ó™„¥¶~Ôä pÓ>3ÀRyî”× c!dÜéðàHB½§H	Á­s–0€²*
=¦1iÈfð¡¼Ÿìïï^]«ñØ!ÅÎ±ž(OH¶raŠ6BÛh,¼¦q¡‰UÍëûìLŽC(B„êYœ‚!T#ŸéÁYÝò§DúDuÚ?Ä«[RL[§ÐÕ@pÈ¥é!Ù!åaSTL¡ó—Ñµ9¹nÛ‡‹ýþî-
¯	éãG`·<Œ³ÎLç:ÓVh(qLâ#¬ÆX0i•c‚{¦§Þs!Þ*¢CÖ3
!âV)F˜Ñ~—*ëã«÷‡pÔµîO”–ÒtõÝ¨ÆI(AdM}[ÃV:sÒc)®º1X=ˆSÒ0ì™ž•Ug
û„•U3s=RƒÎ:*×•-_nÙôA@û úž;¦ºcŒ¡ ,-—È:¥-J"ì  Â`GÕ#å­tÌ¹ñgS7Êg.‹7~ŸMî³–®ÖanÔÔFGŸøŠ0oŠ=[,NtôV­(Hƒu¶t(Ÿ®ªž{Öb—À,^¼‰äbü©x~|rÙ‡·áƒÐúýû÷5O¦¢q;b>™äÓY‘¹0Ú×ÅŒzåWáå&ff>†­4Œs¨®<ŽŽäoÂŒ¦1&ûÙû_Þ£çYø?Ï~?žg/Ëÿ«ü7`öæÝË÷aZ?~x÷ñ}öãÇ_ÿö<{óþ3{~§þæý‡_}·¨‰¾X†~ô“g·3],Iåx_~ÞÉ|~u}QŽYäÙ×|(Õ8‹oj6˜-¿Ÿr¥>çÓÁrµ«PÓþE¸‡’›dþöÉør ±s6:z-&´èW®ymY/êËz2Î(ÛÍÍM5Çþ`ìó;HC€C‚A¤QÎ%\U×Þô—Pn
"$%uõ!Â€ò„´¼‹	öª—¸W½¾íXZ}þ~®ÃgÙë<7>œµ½œLB÷*•ò‹å¾=eáÛíq(iÃ˜µ\ùÌ/fÔÈ«vž½;(ÓbÌ™Â†>Èg>ÈE—n:mCóÌôëdÖÆ;¹ì—=:öùåýÂ½½„á¿‰ÚŒ«¢P“Áå§©¦mnîN·Ú—èòÝ›iã|¢·w€¯½¼hûöåìpúìÂ¦È‡ŸÛ¬K½GkF8^»§_ëÐöÑß¯WûâGû¢F“¡ÛáÙ^9¶¯Øâní~v³É6L°ý\‡dš	[ê—b. mL<BX>¢GJoV@.µ³[Ra˜e˜«Ð\#ÎßI5Š.N?p®ñ1@A$:ŸOCƒrùÓÇT¼òU uº
tË~%»
'Û¤,IÔëAèì%Z\ìâöbÏ^ÿôñ»H÷ò0Bè8Ê§.³fŒã2"—ûLç³ëÈµ*Æ‡º/VÍÔóò“ÐDMÃÎ)¯>‡g‘yœž&…íPu?‚üˆ¼]‰Å`ƒ1$×Ø’˜î%GaZ½rÃõª­Ö{ôUWoËÍ1ˆù2NÆ…îÜ÷áÙw@ë´ÒaMTb×A°s°’Ÿ`ÔÈOvzÊÄ	Q6H¢/›5"A¼M\biB»ËJAR¤¶÷ÉÛŽ<LnØvä&7l1ò¨ÄÛtíSsËÎ•‡Èõ¾¦0žÂVø_þ›AaóQ¸mÕ›å½†h¸ekŸ6è0­Ù?ï4;	IUyBC$7€{í°†ÒA¼ŠKÉ`,‚g„‘Lhc¬ñŠiNÜ;æm€;€¢³Ö™†<(A4„a·Ò*(!›Z!Ðš’I²7ƒù8~6´§JDZÒ„ˆìQ”|3D$QT¾ËHÚtôí{t¾Ö°}Î×úgû]®UšÓòÖ(Î‰Md¼…òãÏIyzÖ}vwl}§×¾HdgÀRåó–sj™åÄ"f£WÄX[„™²G8òçRJ°Xxíùkyà—ö³•Âæ¦(™Kä+%ÁùfhÐÅÅZz«°g*Œ¬‚¾’®,Ö >è|Ñº¶:ÑLVÊ.ßG³áÕTŠl^,o­\_ç“³M>ùHèNÕ
A,ØàcRDë|Œ3*öz7­^¢‡U½¾}¼O“Œ! IÛœÌ«µ?*%«†<LC´ch|‚éâÍ7×Kãc¼JÂÀÉcùcÖlm9Ø?Ó;œ{#7êŠ„éUwrRÕç®w&Z¸Ž>rk-f€ÍG ñl1‹SªG[Lã”ºÔÓHV¼®ÞÚ£º¾íäÃ÷¡„â0Ü2
 0RyH¥àÆaJˆ°Z! DIFœHlSÔ‹Ðs—"ðÌˆÏŒ8IA1æè#^+§1C{ÓUì`Ä÷¯§ü8qûÀÓ“sâÎÊÊâÄÇœï™ÃœøØû–säî
õ%{´Zø.¼_Ý}—Þ¯Æ¿ËÛÛ	NÇ¿ã;ó Î€RI#j$µ€ˆ¡ –i@G„*É²†C¦ÕÐ*§…eFI¡”ÙUx/ÒÄé|Ü+™Ù^†]òÖ’aÛÐâëmÍ‚êçól2#”á‡„ƒ6f°WºØ¸Òà”¥Z‘P’¬–¢Í:­ûéA”d[èì©wœ SÛÖg]>' ^*¿û6¼ßnQ›ÏõÐN×æã«-¹'>
Û‡.Ï!5W‰õG·áÒ[KuºÃêvyKuÃ#Bî½¸¾!#”AÎ0N°ðëwBb'‘Ò3©9ÔÄJL½Ô1â¸£JKã“ðº Ë’5?DBv|Ð=û¥ »­s;œv®ôy°{‰ÿvO3ü
vO3|vtK<Ãî^Ø]lÆûx)¥!®ä‚h«™âÔáÖBÌ&CÅ
 o0±„­‘""J›°w¹Ï³êæ¢FÏâ$–è[Yl6mS¥(€œX¼9ø#A]‘—¾…ö–0‚XÛœ™šVÛNgO¤ÃàW„w¢#ü.žÀ	ÎåI‹÷îbqPhÿ•1—åpM‚µvÏ~~õê2®Ü%¿¸±}#/›=ûù—wï/I¤Žû,¶‡{Û§”ÖÝœÓ†¼	oáÔÝÂý;u6[;5Îé prÜäH{pû>¤fgg\ é%”cé¤`’‰1Äp$Á8ÆµPyŠ•×ÇÈ;å¼?#÷ä–Éò2}Øºó0†,ð¦z4†ˆ´p®Ð}v™è Þ<jðþVmÁGÂõÔœ6Û >­ç
Û¶_~Ë~KÜ?~øÕ°wK‡xòü‹‡¤¯¹“ßò¸0U5÷/|+í”Yš(n½qAÚ†:ÂŠÁBÉÛSã…Fc¯¥5i"½aÜ¡J‚ðxk§ÅñÚ.˜“Íôy;ÅðXÞ„­§Ïƒ@ëX>!býµmuÂÆñ®:ðrýŸŠ=õ!ûÏ2øYú2ø6ð¾	\3 ,ÂVgœ&q¨µ\Q¾!z/R@!„¬ÂÄ8O­A$ÇÙ]•	Îð½¾w§U¡Xn+‡<|²Vd3|Â£ÀÞ¾Ï‚x ï»p/ ~
!ü‘øŸåð³~t?µ}î_ÇLCàaÀ¼’i©(aJA¥½ð@xGxY£
i$õ häsæãh+ ·6—itÞ«Qt''f… (×-à˜c°nŸ"’bW;é,zŠÜ¸CZ´Ûõ*¾ÆÃf?‹Þ÷.z?:Yz˜žèu³é³ÿýÛË×ï^~üë¾¥|„òú6¿y]K¹³>HâA@WV %…à¡©Å"FI«½$Z ,5µaŒ¤‚1ë >Ã|Ìï”Ð›:’ ÄôšŸ›‚t	ý.ÊŸ%ô8/»«ØOó§ÐI<íYB?Kè‰hß¥ÏCxÒZ*áþõVX§ “Š !˜ƒD!À¬P†˜fH@8ö@jã
Blˆ šxm•N³ÏW7w"Ýþæà„4lfKßí)Û(j%¶ÕÕú’ÒUÕ¢œ•ç_W=G+Ü è÷™ûï¬ 8ÛæŸ¾m~;tß‡´¢ç;
hM…´ŽH¤ŒöÊ Ì%"½DÑ€>Òò=6
È½¥Ø¹‰³;ƒ÷VðNÏ$v#¢#Ì_óG@”^{'zŸ…þNfùGß§üI2²³àüŽà'ÂÃé1˜NGX3ìÕ£Ó!ª(ò‰$‚ IÅQï¼pœiZI!‡^ú]ÙØ>”·“-&\ÄÂ8\žå»‘<@âí²lõê» z_ÃãO*ºï-W(÷O*w0ÛÌ ³S\G˜”Þ^kò:Â¹$knôá#ÄÓÔüÕBž…õÃÀž1 :€}µøÇÅùjÌUÕ8Á„ñQf|`Âš#Tö81Ü‡H‡óÞKé¦^)&lÞ¤tÄJƒ9 Ö¡ rh¥=¡‚KŽ´ÖjÎ,%œÂ3	xªˆ$h3¹	ÂRH&Öên V¹6ÚãÁYüë€”wñí:1"?§ü©áJvn Â³su@„p2ô¦yxµ§Ý‰>\Ì·ÁQ0&¹óÐ H‰^»–Yœ%­,5˜` ƒ8Î9r*@àÆ[-Ûó|X2ù<p71çcYy$ueM“Å¹Õ 	?…UÉ~-W¥L)9ÎÔdÎ›êX++¤¬#¯®²¸ªMòü¢˜›ëL QÓXå_ƒIõÍé` ˆ80ø4è_ó‘‹_¼œLŠñ†~]<å­È )’€ºa/~gÛuƒXÖ-{AN@É0&¡ l.ÜîÁ^µ™zøpá·q1qfà± wÀNh°ë~(Z×Þ«mìgM
‹z»pŸ‹v»¯úá"Ÿfù¤iŒÚ7ŸxÛ”}c¦¦-Æ¹H }Þ¸0«F[W%,[¬tÔÿ26ÞÅëp”Ä»¨­ô‹«pfté÷ylÃÑ5îëÁ8q½Å›Ûu°QÑ3J÷¢y#`Mál—¾ôø¿Ž;D/¼Ý†Q¦ÓZ„ŽÃuìØu¦ÕiÚµóÝ:êŽ;¯êy”Gj´—îéz”I„]?»F¥oCgÛŒ:¾u_VÓ?¬÷A7?äÝz†Ã§[G×u®Wï²ë!{NÈWL®Û¨Ïê°7|x­ºvìx§¬ìz”­9üéÜñHè¼Ç[ƒQ×gzi
Í”¯¹çQ¦0ŠiÙŠžûâÌ|s‡¹Œºõv{èx0!
-;vì¼ƒöWBN÷[(fsï›M²»;wžuèØñè¼ézÉ//øå8l¹óNYß(ÇÈ;‘úœ¨g¸¬A¨¦sXµŠÄ¥4\.JRÛ@ÃRÚE"“ÒnPäQbMiOé”v³´å™§øå_)­š[h$z¥Š`>oKüüãÍ è#´Ð4y¥^5ƒú„öÉb¤¦­Z¿Òw&ÕAÉ¨Á4=PªWýÔÃmü_B‡ËÉà‹žûêƒV=yë.áÿ­ûäúgf­»ÍZ.ÄE>î•„í®d¾iãy5Îgÿ5ö ©NJj|•·×7åµ(¡IMß:Vñ ˜ï)RÓ¢õ	l\íÿŒcÿ¯Õy´fM)¿êh”É»c ìfŠADy¸‡^‚˜‹‹R€4I•dFŠ‰ÒØ+M„Í¨ŽY‰»ŒóïæÃÙ ÚCÎfo~É®ÜØM+;À,Ï‡»0aÆ—7/~)Ûf³k5ËnÃaVLÔÍ8SÙx>ÒnZ™üKÍhh	8o"ß(2€îêBe5Ì|¨¦å
ÄöateÊi¨"[iý3ýµ´÷Ï7ígYœÃL}Š…æ/n/u5ÌµÆAÃ3š…ñ<sÊ\gƒñµ›f·£TsÊæãa˜ÎE>šÞ
Wë™]…ó?®Dl?Êòð§[•§÷Z¸Yie,ö/¢·B¸…è‹'§³X¨0ÆM¼zX•?r]Zv²°íÂ,ŠÝ‡fÃ\Ù‹|ì²5ž•]ŠÁ(,ËÌÔ5áj0ërÓ±öí§ÿ×ä?Â”ûáÃÿ©þcñôw™¥Di–ª×	)VµT6ÓÈŽÖ­R
×ÒÈ¡p¶ß[!`Y|›ºÙ¢7E½¼¥²Å‹ª"Ú	ÖoöPC&”·­7(n£ÝfÛ¹¶k¤4KÐö,}®UsIó´¢ç£>ãÅ$¼šq£õ&_g×ùx›äm8ÇªyÀÜ—o~¹©nåw;ÞAëíí°o]¶níò=ÐáëV>ök]Þüð÷ýáCº#ûŽÞ‰Ëyˆ<L\’€]ª]µ_ü‘~;Ûº¢D®9r£6³¼m–ãý»ß¥?²ØU?µ½ÚªËâ‚?¼ý¯×¼ï[{ãä§±½7Në=U6/Ú¼îSmÛ<©)Ój·Ô{üúúÝËW-¶ËtÖêJ‹Ö­Ø¿’¯r€l…D’lµ)Ùä·Í¶o{z6UAZØß0Èó‰ÛÓ(H	ÿLüžVáØbséÎ·g@t5žO†ù¬¹ÕåB8q—±m±§qTL‚,yiJ#S|nn?Ì¯ïrÅäkbËËëA1knf¼¶ä]¤Í@|ó/]%NdeÐKÅH¥.qºØ	¡'ZB+­‰E1Ã˜zÉ™´ŒS¸!ÜZ ñÎ`áÔ VÙ0GœC»ÄÎü_ALTÙOÕÍeÿp:ÓÓü¦ˆ’ù.‰s³S%}Æú¥CEvs;Ìó,t\ƒ´Ã[5µÅEÔìjlbÍi7-Gø£ôœäÓ™Òƒá`vB_ðbá>ªn§ô\<äÛå,£³Ÿ”µÐàð¡âeZŽÍÐ`Æ	Á›®á„dŒ7º¶Âg”	¾ß	°œ`o±z‹ÔBîzä®ÀR¢ rŒ¿½}bžÛáPyŒ†—ª¥<ÖÅ/p1ý4WÀ²i“€Öp°4™"ûµ:‚èÐ©é'u´‰,`x5Æ èôá…UŸMnéÚgóƒcD½hËË.»lü<ÂÕìS«+á/U«>ÿ‡­Ã]ûl~<Æú:ÓM¿î—y‹å_4?ø6·¥G;GÖåk| ïjé6º€ 0Ñï;óåz6jÕyæ¾Ì^ÄN­:ŒZ¶o1¡/½"p”‘ë->xAú Î.£˜á |òh4Z‹1J8mkh{ÃÁxþ¥Wòéæ¶~+¡6í¥ûÂÞ£ÛH‚¡KíÎï‘;æE8kZ]ÄÌ§E>mÕÅªè—ÚªKØõ­îÅ¾¸	4vô´¨kw×­n@Í>µµ¯–¶ùÞÂ<ÝFùÑÚ¨oõ¼èÁ6«[ïöýë~ûp	/·~Ùya	ï Â=±ÂwaOìù|<+¢»ÑhŸª|Ù#0Š¢êÖÜÞûV{3Žhò ˜_µÙž~ê\”Û\éðl2©9^îd¡éØ/ÑV°Ñ„1u¦ü]z_ÂÙÞÖä›u“)õ¾'÷®‰:,û½dÚìÇmÅdJÒYü¸(Z&ËÖûð!¼F0ñmØì•ªýßè—jüÙèÕñj{¥žIwú%žIwú¥ZßÖûu›e²Ýf£_·9²dsßf¿n³”]zuºêtc¨Óµ:=iÜéÍî´…I·^¶I>Cë½:]ŠuéÔiz)Ê—;:íuÙm·Ë{0ªïÚáÑªG¸Øoß¼mwvoíÝe¾kýÓwÌ¶þ‰Wïæ};U"b—ž~†Z÷LÜÍ`êz ßŠšM†¦™mÑ¦ù‘Ü RwÚö¡¸¯ƒ"ê[¼ø·íÛš;ýÏéÍ~‰k¿Ù-ëŠ¢Í!¸l½¢„©÷´Þ/u7z%/Åz¿–+ÑŽHnöj»îížñz§Dj·Ñ«Ûµ:=²TAr£W"ÍXï…A?Ù¥s£g§{K}Î3k¾ÿ¾_ïñê÷ß_þðæ¦¡Ûû&ŸŒµÞå±úûïÝn´Ö9Y–ÞÙÿÐëvó}˜ºwôG‰òÍÎþ®_òû¾£"}ÿbt¯¸µ¡9-KéÞ‚·ÿïp#Ñ!7U™ºÙ-y÷ovLYµ…µ¸Ø,Êˆ‡†ÆQ×Ö‡4mìÞŽÜX"eaïÓ`Ö›MçÅ¬¡ÝÔÙk5ëÆÖ•–ì¦¦'÷éŒí—[<†Û¹ÛåÁ|±>°ÏÿX¿Ø¶Ø¸…çŸLÿò¿^¸™y±ò6ÜðhÜÕðÅ$üht—Ü¯›ä{ÑíÀÍ6!Çyü±ßôEAŒÚÅÞ§¡B( ­µ;-)f‚	" tú˜õPhdµóˆSF¢˜C^"¿«ÖÉâÆ² ?ºa¶¼½ÆD¸ÛºdKßL•‰pçEEâ*WùoWÝléå¨†E^¦Ä]¶ˆc;aæÃeÜåD²àJ¹$1QámPYü…ªG¶áìˆ$•O1d×Ý1eho”õÖ+wL¯Ü+ýj—=æ\‡ËÏcífõg@Š¶O××¾É;pÇ‹œšEbØ:¨ëonv“O?½Sã¸ßc‰•q$–Vú/°	¶VËP™§;-CÃ°¥dÛx=0ù0ŸöÂq/†Æº=ê¼2€¾	¯ËµÆKçŒ„–ÿœÑžV…kDÔÐWclÕ¿~QmÅ~|;š~±W/Ô<¼oñØ<?–~¶{ÐqÚŽ€’ÕÎy ”ÔNAÂŒÄÐ˜€~Ì9œ“ŠE°H:´ƒS«9EPp‡˜Â†Ì(a{Q²º±ù"8½æƒ˜™;û×ðs¼Ñj0ž¹©WÆÅ ‚‹[ôz<8‰Q2N²‹ëÅC ‘‚Õƒ¯!¤%EÔ6Û)»"%—µ¬ÒÕó¿ö¼R# N€Dí]ëóÞæòü¡þÑàùjö©)^¢zï@æ¤ ÄH: Ý†Ê”%ìºUÉŠ:ÅåÚÉv¨f<PÀ¢æÜr	±6Úz®¼WÔk€„ãÚC¡© ˜sH¡7ÂQí9–HK»ÕÞ.«Z”Ñie}’©sÙÛ¼(b2’ìåÜòìUŒiÈƒÿöå«*²­fçýìçiüøk™Á¤Ä¸x\>Ïâƒ"æ”éWòì—««ìïùTŠçYfÙp1`?‹pZ^3¼mq/D°,Å¬XÖX)fS§FYõtŸ‡õönêbp]ø'ÌcZ”òg˜PõÇ`¼*Ì»<¿ˆùyb£hh}ÂcÎüjFS«†©RM§ÊçŸÅc£ábc„øE<72g³°NåZ­:–ÃÆ“p«“áü*–”‰`ÿ9<ž<ˆÒ£y«ÎÕ×0å˜àeg¡Ñ8âpù\ON¾&×Uì`¸åƒUEŠÈFEáöÀA„HøÏG¤‚Ñº,Í @ho9ðåÛ+ß½žlUYì‡¯Ë§²,ýéõÛÃ©B•¨%ûqüy0ÍÇêËt‹Œ‹Q_‡Ã«‹bÙ6Ëò4aÌŽs²yÀ”ºYmcÆWi¡Ûßß06;‚`x@YïÇ_L;¿*}Ý÷Ò®ÙT:Ùü:ûdG+ßiTõü*úøn4¥°‹¸*Ô ¦?"SJMp WBbn=†Îko)`ÐjqÚ EÑŒ`€¥GŽpm¤t4È°*üÇqæJg®ôà\‰nr% ·×XBÑ»å„ñ:W
„ß‰+¥gV8³¥½l©mz…³¥=ùº³¥DoƒmzlµÓSiò%eêàõ`ŽS‰Î/Ý§MÒàeX³‰úÔ_±ÕËÍÚ¦c"±4ÞÂ%ž¢8Å
%<)(@:P*ˆàXRêµ¶V)»KUKfÈÂd˜‡}æcÜ¨ë,YÀBi-'µ«S&gÊ*/¡²wyæÆWÏ3XÐtØÒ²>ãt>ÇßùCœ]^ê¢¦Ã¼iœ½9úÙ‡@Ýv”S|_±­âÅ‡å`±ÀbIRFùÔÕ#NÊ:ËPÎiWR'.d1õímR§øt»ý†bÁ6j:2*¦õâïŒ–µg›(Gœ^¯ÜŒ=Ö:™ÓËÛ´õnÎ¢+¤l[ã·šH3öï8šL#;îúÏ–K[¸2GöÙÚ"gŸ-¾êMò°Q¾Æ"'Wáðm,6Ò&±É1Ò–t´é¹ÖCw3U“æÊ¤Qïr»„EÄ‹ÞµNÒªe¶Û+áþ~Wó6%žô¥”Zæ–ØNwôìP9ÃF3QöèçEy…Ô·íúíÃ—ÉDðN¿Ä ’LþXðÍ&I˜\ªÝ—¼öµ?¿ÿùÝéÙg·uM\ÿÎ%Lòøbº*ÝKê-®÷	¬ü—ý1lhãÉÇI^Ç8Æ<R%¼¦1_òÆ1Ã‰ÇHçhƒ'g£h$10£yÃO>kãðÇ+Ž2F¢ÄÞ0†LG `1$" ãY5Rr€oÕsy·ë{ßiÕ§Åç+´¢OÍzgbJ·6$"
“€F¤ÍÁ[‰Á­–`­KXÿýáãï^‡çß4¢6÷uÛ>\í÷woÑe¼ÉÔdÛz³$ü\lì­ªÑmåÛÊwæ
ªÅ
'ÈË–m”]-"~"í’Ñl·”õÅ^õ–ÕòÊÕÃ&ÕèC°~Ñ+,D»hö	‚ìîË.c¨
77Ü~Ãü~N™ßæ\jÖUZ¼Õ#èÛAâïÇDl‹ËõZèY*SÅ_KÑi»Çö]7ðªë‹©å3Wôí'ï Ç?ÂÅ—JâºÉ§{©Ü×¢§áüiLy¿hhò©³óÑÄÌ†:ÑU×Ê’˜h½«ô;1ž9
‘ç\S£ ð’0-¹0\yËµXj‡9Ü9%-Òî4"üÆ%Ý¡¾üXË+=Z¶¸Í"óÓ|”UŠ»ðú¢TzË²šY]k¹uÐ¢q±TEn¨üÊÎLáH… ’TwaQ;œÁ  )ä©`ÔÕaP²?°j}KY§}á®·uûæ“ro¸ýƒm›w°mÖ§Ó¬`Úúª§›¦¿Ú1üê'Wúuó^´G$•½½4E&­šMbY¿”†²½¨aJiŸ<Ñ#ÕûÝ¥^Þªå”²Ño®¬Ì›Dñú„ìáZáx‹t+µ«¶Ò+®šÿøö§˜xªE©±§ ò{ÔŠ»Ç£;†.ëpÝM²’áÞÅì.‚ðSJCç¯j4ìäÉ¶cy6s÷“m"A
¼ŸÏãÍñ¶ŠmwÄœ¥¸q¸ärHÐ^Þ)d„Ø@pˆÏ‘†Ž=åVI*5‚;î•Ó-4ÐÚ[´ØÙºî×º’w³nó¦Œö©õþTÜõgà[ÅBAt­\G´*‡©î'Êº•?5ääìÑ›sÔ6oCmåîÖÐ"¼¤¥!|¥É©…D(t%¡.ÜTÙ¥âq|j6ýùT;|*mMq;pÛtRÛ‚Ë¶£°ÉVà.–æ.&æ¶Tº=Ì’|í>Èv|Ñø kñAfâƒdŒÃÃÙa2À$dr=ÈÖÚÚÈÚÁ¶š.¸uñö=óíraSjÁ1Ý
ÚÝ^š(%vE»É {EÉ;´ç¤ÆÐ­Bänéñ¸Ü½xÎc#™S€ƒ”-CNBŽ¹°ÎM¸BŒx"™äŠi$¡ÁNA‹¼¡Äý™d8S}Ò	Â›¹÷ Ä€3¶&ÃaIª‘h‹wöKoî@ËœB÷$ÅÛ¹.Å1’íQˆsÉÑúlÕ8ÐªqvGî D>ÎÙù‘º#Ÿ€ÏNÀ»{Ÿ={ÜˆZ“cïÍ©·›1´»8»ˆmìšm÷ ‰ÖB%¼`J%E q¢ 6Ž›õ­‰Î`FH1Ã-Åq(W SïÍ‰öÃe”uV…kf£ÜÎ‡îé6æ{Ù;è#|åÁn7^"6B±!Ö¥^DdBæ—ú6ÚÓ3é>„Ø«âäéúˆD_*`·ìå#¸÷êc†1—¸Wí¤X<±H´z!£ƒyÇ‹(éä®Gƒ7×x¦ëMÉb‹4©i7"ÍËìð.°qÇÅ‹zŒ÷ƒ(B½âÂcÌ¨vÜ3,w¤ ,- 	,œäSG	sšPÊ¼Ê¼ð yNí€ß
7Í^÷~˜YŒ	gP6/œÍô×å_:nç¦éCvCÈŽÈx•_Ì®ÕìßŠÝ×_^à´‰Ç’Q‡ÓTu+g˜¯{Ì À  õJ'€óýùÛ·nÇ³Öõ ß HWè©?…ãë_šXâi$ûV‰÷+G·Ž¥<¶`¶h„äfb­ÁÈ*#Z¿äÚø]ÀÝÝ‘ S¡<
Ó°[¶Ue 'Òr†¬‡
è•±8 µR)ö\K­¥À,|à)^b€ET vå»~3aã”Yº
£Æã˜…ôÙÌ}™<šÍÜtœEà«q@¨iñÝž",a‰VÉI¯\KÍ\±·Ÿe–—PÓUÓ"»¹˜ë,|u±ºV†5\Î¢L§ù)^f¦>¹È!Ó˜k5Lòj>TÓ÷%Ðºò ¬²˜¾Êªü¨Å"Ÿiüìvf*|_¡@	Ö¡ÙE>Ÿ…vá*ñ†ª?ªïc‰º¦ðkU_-ÐOá×›Áì:Œ3\dmåá¶ìÜÄœ¬YÌ44Ÿ)=t‹o?4&îiO€¿«ël0[N2æ1Ë™OËT±åýEn´¸Ç¬vaØ\»q˜À(F#ÅIú|>¶ÏÃhÕÅ\E¬•&ù¸t¬–e¹–7ayÂ³\ÃÍò¬LoìB&•ý·2¦¼åE>~^e‡½%^#5þzû,U|(ÓÙbÎƒéE®¾71cîÅÅçó¬¸ÎçC»d8Õ¾øìkø*nŒ«<Î1L$\"~8­¥˜«g‹“þì†ù$¦±;É‹ùç®ÂbÌu?l€7.L%’«x4¤˜År#Å,ËP€¾‡£Âf=¿ÄP0^#|ˆ÷;H»/½ò¬éœ]öh$ïõí£y#wOšJvã¶eyˆSÖšå¹F­ÂØ9V
Û9æãÐSTÆõÅ¦îÅé”aïvj¤§Ï;:QüNb¢ÔÍhw·jëú×ßßÐ`­{7Ô³¹y ¤H«•"’	  qDê˜Õc¨0µÎcàNà0äcc½!Æãðëô:7óxFUçi¥ª`´ ,KªOwŸùÏmâÀáÔ¿˜Õ‚Ý”gðû×?-ÆŸPuÑÕNE5B9[×sÖ”ƒep3¤…µ|4°V¬O	Ò A -.ý1a-ŽwdhërŠÍîäuN¯0F–ªävç—7
j	ÆBsÀ´„
I$GX{É|8ÐVa¤j®¡U”A@¸„b×ùõêûï+ÝèmË(Ø}4”˜þéíÇÿÊž…5QÁÿ?góé/ßU™QL¬Ñ[¦HÍâE~þíÍräþÅ›Z5êQ¬\1.¿÷a¸x5Ì¾–D JéCóXþ"¾ŠÅ|³øuD†IýŠìó@e¿LÜøç·•tD¡ø‚Ä’íÙÏoû˜¹Q}Nž^¥,ÊvGS~•ê¤`íá#)¶žƒŒP ×ó« ‰YÝëú\IÀJ³ØpÎ>•5H¶ª´µLªR
«î‹qåâO·vÄÆ:¬ÖE¬mÎ8‡}Õ¶;ÇJ­¯•:fé8;+½fC·ý/ãæ)Ò›_ÓÛF¥f½ýBJ)#í²fi¢P±êÐ8áŸß&D¬„#)¡Õï&ÄlþnæÓ"Ÿ¦ŒÕ_	úÁ—jµ÷å‰ö³„˜ß‘©ŽTÊ§ámr)·b‡	W^4JŽhÚl¿/tÒ®¾(9û€q°L\y}¶g5nÛE­ÿ|ÿãÏ—lo¼ÖÃ—¤›Œ¯ +×cÏ4jŸ½ÿÛÏ]¶‰`ë`9M€ÜCÔÖÛz%ùB¯í{IS¸Ú]A M½Ž¢ 	ÔßÌ¹Z8j½¦@Y«sLR$• ÎJÍ9Ta±ÚYÈ4RÔR¼+ÑÈYx Q ÞøQ `¹‘%F ^$K¨&·AÛgX<»„Ž[»ž@H(×MH-¤±)´é·ÚtZ“ŽêwCâ}.%‡ÄæK"µyM–Hí²*RÛßJÉ=fmÖäÔ>5Á#5<rØfR›¢EzU™uã±…bÖ„ŠÖêRHóÛ	mubDûKÁãºimòö=ŽT|214ð¡JW®$”:Ä|{ç™G"™Ï\÷8£ðÞ/«aŠþ/¿ä¶“L0³Ê[ÈŽE­Ð‹	ÇÐ9áñÎÁð}üÝJ £Î"®€âÀpDÐÉä?Õg•½úð!zEe^Dÿž/_íL^f¯TaTé¬ôaöuè²×ÎÍŠõ!Ê £X»Ûe/ß¿)­¬á2ÏË_âEO.!ÜàR>(gø"\úE¸©fi­I!ÆÉöÄìŒóÍ:XÈºS#$Á€vTÉA¯¾)ZÄý¿:®õAa21Œ]ç$í;Vãðí°½Ðæ²áï~Ÿ!Ä„w£ï(V±o8öþXlÆEÜOƒk°2G=£Å+ò‘ëÅßï$J=IŸ¯–´;™Èc (5DCë=pH¨õP"å=fÚCá°1†G‰]CÍ‰Ä”9á­Úxù&°ÁÉâ]e…kRÍÄ/«EÈ®Âû^”þ‘áP–þ£Ÿ)ÝGL^†Î¨Yt ­N‹ñlø5ÓîÂÌ‹Y>
‡ŠÍþ¿ÿçÿÍâñò<3ù0Ÿ>Ïì4Ÿdá¾m~S)cÔøëìº:Tci—Ù|ì*EA8j/&ùM8zsÙþÅÇ—¨»ùVµôãtîÊ?Êû-Óà/¼}£ŸgXüèã&}I/âþ8m¸ÎíÎêòæ“mººˆ•Zf#LðÍ’½`†ë^ˆ{ëÍ}ß+7p´<±ùéíÃD‰âN‡rã]ádnëùR	lÏîÌ«Q³ã¨Ù~ô‡ÑêÃ7QÏ;³è4‰îX¯¹Œ¤ë•op‰Þ	N‹eù¥8ãe*"û‚^ýý[/àÔ%ŠÞìÆ©O½¨îæÓ³5Ñn…Ž°W˜3ì=FRN°–1 ¡`hÀDÒi*©Õj¡Ø"¥¹ç*(¤©ÐQ™±8¿ËÒDñf³I8‡a£ÏÃš4TgßX˜J“¿TÛ'•¾õefqQQíš"ã¤>‰A¢ÒsóÉÍJb=SWùõ‹ÍûifØBÜqQÜQúHpÂÖÓÚ¡@°aÝGC"ð^eüÆüzåžZÔþiå£ƒŸLxeÓ-^sµõ¿¯E…<k:Mëí6ï¡¿ØòûNãzŸ¦ÃxÇÉ’4nŠ;P›ñªÈ¢ºB8©µÍöØÎG.’:Ÿ7®éªÑ«mÕLõ¿Œ†ÇÊØ7l]¿ýjö©É&°ÑÈˆ{‘H÷Ë5ÕhŠWWÅWo–	’šó Â½‰ }ª›|¦ô qGàF¯ƒj¼šúiôb5'†”€†;~:>jÚ?€pÎU*þÏŽ`ÒB ŠR&¤Ð{¸€$R
5õ1ÃihÉ./ß3#8ŒÜÅ#p#Àw|u|P±âAKSýCp‚nÊµsÑ²jÉ7É	öx‹¤XOÎäàÉAÊy:,a‹ÉóÞÉBëõve¯—ÙSP[š` `–rÂ=$žYàÒ0!·:ü†´ÄyE°’h`ED±@* gr—`g]‚ù­ylyŸY|×b®¬¨¿LKÁ*EÂâÌNŸ³6ý´ªrÌG“©»º=ÏŠI¸x8¿cë&Ñc<ÛzÉç×«´ÏÕYírE?Ûª`¾ˆ¶ˆÁ,&ãŸå«\[X¨›ë·øÏ¹›WIü/^ýöþÃóìíû×ñŸ_ÇWÏ¡—ÿ»¶v«ù?[LÂf…›¨x½á×ïú¯Ý´L¡†E^ö˜äE1ÐƒÒé1Ì.¾½åçïÿóm–W·“JÄ	õŒšD]þÅPE›æÚS‰ù-b×QtçÌ3eL>Kª*'Ê»w{Q&©X,GtŽ¼XL/*Ú·=œXÕo‘ÇÂÝºŒ–‹>L¢“¥»X¬Ø³å6êUŒo>ußUÓÌ«iW‹ýâ¶göG®‹‹U¿ªUøì»jbY1˜­jjGKj™Ó­lV¿ª®6®¾Üs·ÂòyœÜ¬[N¦L¤Q­eœN ‚¡Òy|ø/b‚Œ’A/ò°žËi¿XNðÅíéÒ@K%©ÓRàd{F0$  ë¼”QTZ(nÁ"¹7CÄò1VÇWµe¤O«$÷ö»=Ø¢ (ílR¨f´Ç’°Zv°ÄjÈã˜Â7Û$Êá³%Œüû¿¿þ¡‘Íl4p8F#Lr—÷ï_·hýÛ›‡nÔØ!l´êØ©ÎßÿŸ½wírÛFÖ…¿÷¯Ðò‡½3k¬n x‰¯ã\Çïq&Þ±³Oö'-^ÀnÆ’¨!)·:¿þx‘H]YUh§³Ç+3ín	Ïƒ{¡P@¾WJ(ä/šf«)c–õÄu¬Âí¿³$^M=‹	,ŽXÒi|‹¨’b‰	ÇHa|+1Ò4¾0ÁX¶áqLñˆ˜Z±»ùÔv„5SŠRÕpyÖÒ™«
f»&}ÍèddŽk¬ñ˜k©aŒÍ3ÉÆ-ÏŠïé4ªŽæÊ¤®¹:–b30ÝR	½©„enZ
Ëà¶°sdžòÆØ˜c®Í˜Ñ’qa”M•íÞ›o°l®Áq«¹’™¹²yËæ+.3[¤ñÔcŒªÖ4J$`ñ™e¢0¾cŠ†(N5Ï¨rÍ¢gžJùœ®ÜÖ<Ž‘Z9T…½a1T'×±ˆ»†Æ˜ oèÕNM.µóM'°¨ÚŠæ1±;ªylf†‡3²ÂZó8Ì”’ÙÐÑ7mµ&RÒ­®ê-uI­9<:ã8ˆêcÍa =uqèua½Ì2PÛ ‡¾Õ´O½£DhÁÈ;’fý /Öq¸Ì—/¢ßc5ñ¡†Ø–Ù$,
U°wPN¨­C¨­’&x¬ƒÇâ[J ë;¤ÎÓ
ô°¨òfàÍZ‹+¸Ú-Î¾X§Å,Ëþ†¡˜G+ôä[¬çU¶
Ërs£(UÞå
…t¡9&r>Q_šÕç÷3ŽÐTk’ÞÿÏôl6AcÃiäªTM6c$4¶Ëš­JŽÅ«éBÃÊÎ|<–°±ÎXÆì°¾KË; ¯ =,¡Üf#¡–P},tïaÁ‹^‹Ï×!Ô×'`7PRŠê]¹R
¨‡+q%/wm"9!4vi#%_fª4ôÁ„&_ÂÕ×ØC‚ç«©¯2ŽWÀ=Æ-(h-øb,ÖÕJ:g™sY=Ì×J7«5[à¦ö€l>ÂòCÎá¨Rh9Vwy•Ï<è,N×¿g³,òÍýfI­>Îâ·Ä,IaTõíÓ,~Á„ÚÃ wò~.«jZ_y,’ÚíâwYÍô^8ZORi°!*fŒŠCûë‘€ÀSDàu’È6ÕH®kŒÉ3Æ˜bòŒµ“glXúÆÊä›+“cŽI˜bÆÊdldú¾1&ccÜLµxÀM•)06žc£ 0&écã)06žòxº[Í]%P,‘vó‘e9Ë–uÑàW·G‘RW÷£¤P[ôR°))X¡=BÚ³°Öœ`ËðNäÑêj×šðÇqBOèG°ªÎz¤Fà`ëÀÎG[Ø2‚“¬Nã|„r>B	í¹Ý(Q÷7=.°ö×¶–¶eÓ§øŽlM?Ïf vl&ÖÈÔ„t–ÍÄÖccÆ„áNÂÚæ$ìŽÔhŸh5À|ÁWIÏ³qƒlÜèäå`g¹ólFkjt h¶…A:5în8·õ£MÈ6!7 y÷Øƒlõ	²é™ë`ï`ž%}1? ?ÏfrÙ„_“:ÏæˆÙ"^r9Ïh´¶³Õ|m°gÅclñcPÌr-v°0ÉUfæÈ\ƒ-æšl1× —ÿØ·A2+©2[Ø‚±eJ—0;@ìä-Q{hL6 åišÅR1¢™¦¤ÉŽòzSõôéªÀÕªÈëÝ)Ñ’»OèY±áž(¨v‡US°Y8`47%:F²ÕjÇXéúvC¹ÕÓðÆgÙÈ—U#º`¥E²ÛecC"^Ì¾ˆ]Ë!ðæµbÒ¶·…vn…$\z÷9ô: ý˜ÉäVêø`X.×@y\SåØ&1ƒî®=
­Ö®ÊºÇ÷#ªÇwd~Ëåy¾£¸†»3dwíHÀºØŠ¨d®úS>¡‡plâ™í“ðš-^è «õå- tÞfe•Åå‹Ý¯³lá¨åäƒ~Ø(œ-²e>¯BU¡ÚÁµ™¾K£Zië.Ð•ô‡ s8ðr<ä±,Â)Â/¦…ÞþîaÁ¶‘!Úy;0øŒn‡…_Ñïcñ·§±èÆ‚ß‚îcñæ`ut‡„2Æ†‚¥\5/o¡¥š„à}´mûà…µ«˜°°þNBãÁj/AÈ¼é¹CÉšƒ‰û`JoqR“qJ“Qê,(u¦Ú¥dìcÇvûï,.§1L ·%Çh´ÿ­ÎÐ8§—FßØŠêüí«c‚ÅLa„ÇH¥^Û°Sh@Â±dŸ­‚õI<´Ýc1@b;À³ò£,T9¥H´VMï }‘Åðãn¤£áW’(Ï ‹Žæ‘ÆÕ·
LÐ˜éj}Èo‚†¡pGÊc,	´òÔç@oû$ÂÄltMÌFzYçG`¢ 01Þ´§3½iáþÒGI˜A‡¶ ô8Õ	ln¢ƒ¬i¡Ï!Œ%–ûzœ°õ™Òp#¥1³ÅÂÌr3ëQÜ„‚6Àã˜)_·3]dµD4ž‹©¶ýõHô’Lâ˜ &H\ðã#$¾	mB1ÃBµYhmˆ1Ãb¤0œ™a1PF¡*,?„ó44aÚr0m¹f¶\óÌŠp
Vcq£f¶ÈªðE\Öï¤ÐVFí°GC­Ý1ìê±ãtŽØ·˜KáÐK˜@ôõ²zÇ@õBL­Ã®8=j-¹%‰c»ÖF8n™Ú1káûÂ!×ÂaÜºŒ\:¹9¹1èí ÈµpÉepÁ®[û¹1sÉ>&%zÌâl
¿îz†®Ô²œ4\ûtí1nÇxŠ¶ÔÒ¡ïpœb4×»šÎ7Ü~X#Ý	:¬=õrËxœSâÖxvŠkþ:Îç‚½•/Ñ¹&é°Ç`Çé|xÔ ³|Þ&u‚P&Ô6`Ú~cŸPµ¡oŒ°Ù ×Ž¹Ü,ÂâÃ	~h¡C¶ÿÖQÖ[Ÿ€ßeÕM'R‚ï-ì3èÓ3 meŸ"FG™8Â5;P€MzGèep¨P°#ô2 …ëƒÇ©eð8¹ÈçeŽÑ‹tÒ8dLU& ŽqNÚLYdà›#DÐ}ì
2T‡8`(¹m¨A4t?JBæpŒUÉ1Q%Ç@•„±*)¦„º—Æf‘b²M‡› ñÈ$c³icb6mÌ¦±Ù¤™è-¬HÈÆfÓÆÄlÚ›MšÉDqèSR‘0$<©Œ°l°8FÊâ)YT-lSû(ÅDÝ?Ôˆ¸JÇxˆ*Õ‚kNy@Žãt„	qå…|÷çô)’
c
kÍ¼æœƒ¸Äjf‚5ùÄÔb_3‘×€ú­I´‹)¡f¢Ç5V—®À4$ä:yT“§¦ >ËsH¾ºqŒÂ@)ˆ“…±ÈÂÄNdal±0±‹XÛ,Lì 4	YånHîÈ,ÆDËÆ„hQ$ZÆ5Ó2ôÓ‹Å†.å6t)·¡K¹]ÊmÈR®_Õ;Â@/ñÜA1ýÕ-¹÷à[8ûfqâ2¡(2…ëPW«w¹åp`8¦Ç%ÛF‡c€Ã5ÂAµÁÔ$÷Tá·Âò‘é†|dªˆg„jM$/ÏŠƒl*TôªÄ°ŸÌáqz]<N¯‹ÇÔÅÐø†| ¾!ˆoLˆoÈâß%ëÖŠƒ>ï|+ƒ©ãù<}C>OWÔ®¨ªÜÆÜ)M½ß}”ƒÚ(æn€h*ò81pûCsP+4Õ¬¯9\*‡¹Ó$MEnZGRgIs‡I§IsÇI‡A§A›…g®JùˆLsÐ›Å#7ËŒMÿ@ÊÜY}SxVY¾ç/²h1ã¶Íf«ðVÎ(÷ˆ×±[Î™cñ ¼ÇÞ}c7j§ø<hÔ‹|FºiË —ëÓ|¸9q‚OÚÈÓgøpV–S„`Ç¾‹|¸mÇI>y®zŠ3œ!÷$Ÿ0]@=?ÉèbO´N1:¦e€´ÑŸ!ÄÚjNQnL—Qš/£Ññ]b­g8.5!ö¢Ù	Î|UáLþ}°j?BÜì˜Ú²mà–uõÈñ¸ìåÌ?9‚·}ÇÌ(q~÷<ß&pg¹§	¡aƒ..°'ûeFä–ö#rÏt†jhŸ/™þkQ¾Ð»”ú¥4~eû
JGnþ} ÅzÔàÀw	÷ñ³™ÐK¿(×+Y4ŸÎàÎõû>t'œÇò…úÿÌw #}‡„Ž¿€·;$¶´ÚàÃ"kTšÁc%1Rl‡Hý$pß¿%Z1Ûü‡ìE
YÃê™ø1‹îîZÜÀÀ!1j˜–¾5ÌCÂÀ®í×o®ß<ð+ 5,ÀÕ-ÀÕ-ÀÕ-@Ö\Ãôÿ1 Új;pð,	u4¡¼X)ÝÞñ‹9gÖ]­‹(§ðè¿º*9@Mé€©þ£cƒj—Ø6Dº¦× ÚþI3ÅqÌðøÀPM«p–úÑ¿6ÓüY¡2\”ëåí¬1tÈx¾ÒoG¡ŽlúàÐ‚øÃž$wæ²ÍŒùê‘ÆÓ4•ÆçdŸÈÀ-›ÌàæSl$€¡‹;5|‹¹f6q2ia‚Ã3ÀáÓ9z]íá‚·C¸Œ7SÇ³h³¡!!J¨šdÃ$Â‰‹#¹Õ’ú­Å´ð¯IêŸ3EY	¿`Ð;ÿ{ËhÏ>Ä‡$‚•ÐðÐƒà}üà5¹>~±©ƒ4¯Iú^"ƒÚcÝl+%3PkaC½6Ž1 8ö)„í¤ÄR¸ª-édjcºôÆtÁ¯ë2@c308ôÞp¨½áQ'(·ÉƒJSlš”Ð4)¡¨TS` ÍEAœŠ87”¸¤*êÜÐ/@“l"]ds²ÈVÔÙåÒç]\r²¸tèÂÎ!;G;:™QÈêç¸b ·¥CmK² qÈ‚FÐG¶ lAÙ‚<²ydúÈä‘-è#[G¶ l—Ñ¨MéÒk!È#B¿ûJe 6„Gnˆ|ïð¤ëM›©‚¦§Çàóë#ÄZ(bS*àß1z5VÀËdG(€‡ÌÇèõ¸'*àeò#ä!aÓšra[Pãð5›fË ¾ùv„ úÔÑ
šÀW½D«HÍ@›5ÅG2ÍÄ´ »! ö<äö!yH-òºE¾¦ 	EA‚Þ˜‚Ü˜‚Þ˜‚Üd1Á]AÔÒ5‘Áq©¦2MAf ·„Cn	Ao	An	Ao	An	µ¤Â%Or^\p¿ªVPõ:pž=‚euø<$€Þ­È—/Âù|š-§ùRÎ²ßWÓ`¹’ª"_f›«;í÷7ó„• ×®£À«¦Ç8€Ãòµ&¾Öð´†n,òÍ‹x½*gíkààlÀI¯¿JfYÀ›C;†…J7»Ë2Ö ànzGS»ÙÀ³:G€ÞqûøtŽø¨ök‘ãXVDÄ'¨>è §ÂjtxAlAmAm¸¹wo[À¦¶€Mmðfw€Ä1 oÊPšPPâh€wmð£É{xŸÖ„š`‘®¦À˜/CFÕ	(Ýˆ8‡ÛÃbÀµ£CÊL¨	hMˆT¬:<'
M@ÃSû€Sû€Sû é€RíRK™uÔ”N¨	¨M@ªCmªréQ•Ë† xPvÀ@jÚˆµôÝcmMÑxbj/*bZM@-­
ÐŽ4@ûDÕÊ§ªV>Uµò‰ª•OÜj×xŠv«	hMH§>QúÔ}–OÜåø‚¨ZÕ”%­& õ J"ß¥c—Ø‚D9èƒ¯Jáàƒ‰~ŸkçŒ&<ÆPVÇEÌr1¶M-F"ÍÆIjXêŸ³5uÉlhPþSD¨æ= áàGN9–1"34‚Rž4Üt³‰áFaÃÓÎjüŒÂ~0à	WZÆzSä8þÑQèè1pt—>É}<srfK°€ºxïáW—£…7¡Q§i6Wÿ”Ï&é<¼-¿~öý=›ÈUß}ýÌz6QÔ_?³¯íg“BÎ¿~æw„_Ýh>%Å>f‰,ÛÏôG…ü×:+ºŽä{eË›òîÙdU¨¿ì3%¼Y—E:
UúéV²˜ŸIW&gr]eórDáô‘ä…¯šöÇï4­uí°3DI´>—Ošç‹°ÊâiIu{·.gRÍ³(™_—ù5ûâo_¸N”UçÆJ=ÿcêôbdú…NìŽL¼YÌ¤0»ôo^óÛOoØŒ];×Ü‡þCCí1YéAöÅ—?ýüÝ¯o¾Ÿ}ûóOo_½Ÿ‰kæ^ó‹¨oï“‹i¾«ðË/¿[/Ô_¿ŒóD^N¶YåE5‚ï‡l.ÿ.“ùeÎe•¯ª/¿|“/oG'~W]n€·?¿{ýÛÅTeUdñå~úå¥DÓZª	¯~›ª¼ªâÚ¿>'Šjž|ñã?ýãÕ»\nq3~TCõ[=N÷Ç]#^‡²´æÉ£2Ÿ«’ž–¯§äú›÷ãåú^._).9©VZeÅ³—7²Šo:ÑóÕþº—røõM"Óp=¯ÊU®8‹#©;ñ½•eq¾ˆò©šÐ#¯Ô7I4.ñ2Ín×…“XÇŒÓ_I[$•x•LÕ|Èòe96y5º=TêÑ…ÖCå÷|TË•2,â»vp ”D˜$«ßççë9DÄs.×«F£‘5½šVê—Q€4ÛœiÉaÚ[Ykð!«æy˜ŒJ»Ì—ë…Tb,œgÉ8z%¤RY2™6m4T÷Ù"\éQt»®ä²þht3r5c™Ï“–jP\õ[®È«—W_Ý¬ÂøCx«>þªý­J¦<«Ójõ²§³|uS¢¿ÒÃëå2×ÿ|uSÿ¡?ÕAµþ¾är®­Vr	ïšY¶oÙ»–óVŽ}ßÉøC¹^´ù—w!®Òê>ÜfÉ×ÏþçûwÏ^z¶Ã"GZ2¾d©åZ‘°#¡6¯êOKZ®'ÜÐNœÈM’(’nÂE"œ8LìÔž°¾ºé2©sTÿ.Ââá¥^¿•¾*'y:i›«œ¨%µûc²ÝB£•]kgªª/ßßeåDý¯º““äÛó}ªç5óÇ¤­WªS&?´}}uõ^‘•Y%'wUµúòææþþþ:_µ#![Þ^çÅíÎUç–LT‹Wº]þ×_Ýô‹¨‹Üöpñò[µúüünòÍ:›'åC9ùyõ"Zß–ÿGïvóR3ÿÇmõb;:Š¾.æ/Ï”å«@'¬²…œèÁ¦Ö+á2Ë³Eà<›D:;ý‘ð¼ÀvÐö|™ý!'mNêkf©UÉ³eY…sµL¨µÎs®)ô Smöõ³À³ì€ucgžÇuhýÉšm_?{Ûp•½u!šªñ7Ýy×ÍØ½Öc½!êæÅv™žgªIJùòÇ·o>²¿7Km÷Ù.ÕG¹Lò®Y›DíG»4·E¾^½üuY®dœ¥™LštÍÇ»du#iÝÿåj»Î\NUYÕÚº¹ÞõMƒÜ¥Ü¡Ë|]ÄJ3Z¼¼Tõ²ˆu½ªlGu'ÃDé$E¸T2AõDQ©™ëZ¾RI–ªK<Ï\k«ƒn-/ì|Îì]/H
ÊN¶ß*z€ªÁ_É©0rQkûÙúÈÊökFß½jÿ‰’\øn3—ÉÈ²’@ØNl¹Âq=ËÇJm‡»z†»±í»Ìöay<Mf¹<ŒlGœ’äª‰â*W1òu5Ñ"Uå®:1sZ”¦xbòÕ-_]ÎÝtµzrÕ¶9ÕÝ`"Ê×·ëHý:ùNQgËÏbv+fmõ«ƒ–²¦dÜ¡À¥É -ÿDéã$sÕç$‘R-RáG©ReâÙ®RÝ0ˆ<%¥KLi#,•â;©báž>oß~WNÒ"_lµ½…Ú¥j¯£v¯çÔÇÀ'&i¼±’Æñ-Á,ËásK?'Ý“9"°'°,€ÜÑÈˆFWëá?½~ÿYäì4»À¡hvtç˜…lÿì$*rµ(/îæS¡¯â.QaŽ;–EO}ß¾äy+çe÷\ÝífÆ-ð•Þ#%Ô­rCK!9'S PëTµT¶% þJ;0c¬‡ÇrB¾ª½	XÎn%Q‘[w!w§ÉÝÁçîZøÜ=BÉB¾±Ò€‡½}°m}û`‡r€™€^éÀ9Ôñ½}nˆv)EÌ§ ¹MÊœÔn:Ê)xYÛÂ}›x) ÏmîÀI+µ=I8-wèó,{pè#‰{pèÂ!üpýÎÈpè‹Qû¤ÆSpbþ´¾Wpbþ´Á£àÄüi£OÁIù3èµÈ!š£…æÐ‹¦C4-oNÊ›l Á×„÷Ð”’;¤&w ·1‡hÒ<uH³LÚ\PZmaƒ¯åîÁ)òUÃ×¸pF+<£^Ái¹CoVïÁ¡wu÷à”!»plJÕ]"½ïªÑ¥Ñh-ZÃ)Ú˜FÓ2§
—¡7¬ÍÅK°Œh
GQÌšB £ÿÑ¤ãz”1ï‘G’sžê;Öwžê;Öw3æ’Ú@áI­ ñÄüIò^áI_áñã7ì ¸Ñ?–@·êÇí}Â,h¾}8Zò+8§Á8°Þ îÙøî_¬tàë=‘l¼¹S±pÑ²à‡²bq»² ›s±ÒÇ‘5	³Ñkšbá‚i–€¡ÕHE"š¢ä‹"ñ»’ Õ‹ÅŠwÕÁkÅŠ¤­ŽÙÀHq}§cq(,¢cÁ›õsá5‰K ñ:ü2¼XÝ …†Fè“Ìl×¾©UhÂô™ÙZ•Qh5ûHpA„ÛíÜ§Œ­eÔÂŽíûxÂ,ÕpôZØÀ	y¦Ä¥¹Õö ‡>U²OCB‹¿Óà”þãàÇ,öá”þÓˆpÊØWxRÏqZÓÓ¦§MÇÂë-œÒôMt;„Ãön—+ô &`TRç;´y'h/ˆ/h/h/hM/hMïÒšÞ¥5årL'5Kl:aQä­GkyÖò”«EœRwŸVwŸV÷€§4‚Sš.ft<eÒÔxüéuÃ ¿'©iOËŸ6ø5žÖ‚Ü´MžÆÓZÐ'Íýö)N›ÂOœ89y‚ßÓ<€—À7°ö	(K¯‚»Ððès·Nm>š©'¦\¨nñ´ñK”`œ,ÁˆûÅØë Nÿm è#1ÚrhÈ!N ‰¤¤ñÔ¦ Cœ‚y
wí± ŽA‚8uâ nÞ5žš?iºd5Æ%Ž!—8ˆ6€Ø‡u<À“êïaŸ8‚î£5€& ´À½ë‘
pï.0h¼OºÁÛúö¶´ñ—0I{V.~*nµ,øAš¥+å2Eìt,øÈ+ÏbèF­Áh·&…æxw°=§ÀÑ2Aƒñî\+Ï¦4¹Mjr›3
š2Ðî,+ã'm&TÚávL€üå×LÉš4JþºËÊ#\Y­C´+Q×™ZÈÀµ\ËP›! ¶B¬£ #20Øx†r5søÉÆÞåà÷øú9
AÌ‘À!p2ÁÿYÜ3ÇjLw«w« ¬yfË4ožûÅÊ=Ä,2 &¡&¨düÂá‚ÏÀK[°#œé›^ˆ¦o°Ús¨äôÀÌ‡º1öÀ3¸k×>:Ò÷ñÀ‹m}8·à3u€o)úhÇrð¹—Ì‚º	°@=©…êò,¶½ªÒö±Ð‹À=¬=WÚagÌ‚zÐÁØ‰Ù€öh¨Ê ÕGû`?¬5=®õ31”œñ#[ñC[¡ç0¥ŸmJ?3ÊÌ`Ð;ù0Ô¹sL˜Và(0Ô
6Sr¦ŒO½7 C}I`Êøä”!Æ)Cl~éƒÁÞ*0)gÊð…€	Ã“Tƒ{ùÀø:k½XÅ>4ŽE;³-æÄ8g¸Ò\Ñ:Q¬8	MhsÊFI£}Â`™¶xe³K" ñ{¤ŸÛõ‹‚‡Þè£	íÚP'üñ9ìaá‡0Ërv¡`èÕÕ=0ÐSdˆvÁH9ŽòKìƒÁ^‰C0¾£Ážˆ,ÔqÆ÷ÜqÆ÷ÜÿpŒÛpßÃ!˜0HÀn‹}0eVÁ]{`øÔ=0¾¯àÎŠC0¾¯0~†8¡·à>†=0ü®âß[pïÂ!ß[”eî•8ã»
~©qÆ×î8 S2&46Ü‹±ß_ìáŒC0¾ÁàÞ‹C0¾ÎpÏÅ!_g¸×âŒo0¸ÇbŒðWÜGöàø™…ruâ¡ŽŽC4AD89Ð”9R£)vmØG“:²ÁDxFÐ`¿È>î¹‡Æ‹„GäšÐãoÈ=<	õÄÂñ‹7ÂrˆF¿â< hŠjŠð~ÜCSF*I6aüûxÒ¦îó¸¦Œs°¿ã˜–7eš€=`Ò@Gx9îÁ	óáá¸'L3¸wã>š2ÍHÖ„_ã>šÐìpŸÆ}4-sBŸRŸbŸ“ÌOÊ=4¡æ/Êž4^á”{hB»Á½'÷Ð„zÃ='÷ÐÈzc}@öðèk×Xÿ=<)ß;^áØ‹ š”9ö¶Q‡¦d÷XÂIwvÂIÇH‡ð6ÂIã=´¯ð¤¦Çx:íáiùÃ¬à´ì)ã¾†#³/W3Þi×`hÉ?<ä±,Âq9µ}è­ßœ*°¾{ÛCk3;ðâY­=£ ¾}¸ ÁÕöÁ†:"÷áªîÐç8;ø‡¡ÓØ_ë}<¸ùw¦Æ\Œp:FÃ™!ÎÐ8øÙ€C}o*ÎÈ,Jœa1Sa„Æ1R'Ag©T^%áXéÙg±m‘®è<à -ÇH<ËÞè:Áb€ÄvX EGHô‹-ôŽf¶1ìÊ³£áF:š›èhî©	`€Å@GóÀHãê 4fºÚAøÿ£áFh„Vû,	×ÀèuÁšÿ1ab6Â£d#:ÍãLDiøÆ›¾ÿDoZø-ª£$Ì€ ß>8Â˜¨N`Ã]ýÑ@-FÇ8„‘¢èM!4äÐqØr‚ÆLiÀñcŽÒ˜Yj3•3ë‘Žag†Ç1S¿ngºÈj‰h<µ­‚:A	_“;Bâ˜ &H&˜	Ý£H´)ÆÕö¡i8Øÿ‹‘Â@KO±(ŒãR–Âyš01m¹š¶\<[.¼™g¶ÈªÎFŽ59àÐÂO Mó=ä,ß1øÔ20¬¤Ù28Œ[7.cŸÆ%3Äð·¬(|:rizÌâljƒÎÎÐN„ŽÐµ¦Rœ6rŠ6œéÐæÓSŒæzWÓù†Û»<A‡Ý«Ÿ¢Cª#Çé¸ÙÊr»1;Å‡ÝZçs-£­ç‚ƒcŸ§ÃšXÓáó”Oâ˜Oâ¡¢¦çá2“Åx¨·He„F"iÂ…ÆÃÛ·Ì·@dã( ¶ŽÈÆ™Ç6ÔSµC&8®cŠF‚c'í à¸I=(º¼ØŽIÀ$wHhÔ¶Êk‹´Ñ=jCã­õ8QR#G³;(tÉî#ñ™âŠF¢ç8è‰”5]\ôÅ®,
	u,Ý!Ñ³[!ÑM„`C_éc‹¶ôèaóÙCâkŠß¼œ4ÔACg6Gßõ:ì¡BÎ%g—ásv¶­Sa[7Â†¢;øÊbâFÿD®Ï¿l€{–·‘u_Ã{n‘J!ÁfªÖéøFÿƒ.¶Z¯ïÑPoêÜ]è@=oYS@·™=¤R¶²Áïk ÀÇµzXè©{ŠÙ6÷ð„^hV¶ÃðÙ:j:ëf†—‰>}W,˜Wjv$žLêçš‚©™ªG:ÃOU¦æÙMýØÔÂ½£Pò­¥@*’Š»<h(¶ù¸~eì¦}ëÍUÒVxÕeÅ¡O”m‘ŽRê*û6øq¡-‰hHbþDÒŽCtørÌ,´J¢°»BÞshäì©‡Ü;h¤ Õm¡øÑºXÕOêý7nS ãÛ¶øš‚‹†¹Òn]
ð; }ûF[ñž&Pí3e4áœëJ`7¨ˆÐ}l]°Ÿm¶‡»ã÷±vÓpèñ££~)ð›
C†¨¡ p Ã°8q‡Š/ÝÃúBÔÅQ1¦wXn5=4ß`‚T÷¡ÐÕ,º«áªXtWóFN;_rÞNÎÑ“D‡ªÖŽT
ü€‡«îa›Å–ã—9x¼ë¯Ó¬LZÏhB^7èž×¯µž@*ºçu2hðë>:»Æ÷;<pvÛŽX¤Í¸ž­»z¿cÈ5è‘#Ú‘C*zä4xîßmMÇƒŸÛ1¸MÇ3äáSÌ[>ºÓÀ½ûP|§ÁÃy÷°m§AŸa0 W7¯ípècÆ†ºÃ	m ˜Ðâ,ºõü¶õ >’†ºõðASy3£a¨Ë@b@·?<Pù‹ˆS>£g<*Ìø ^kåkdkƒf·Û_¡ÁÁ÷À”mR*ï[ò¸¤%Ýl¯É›	è9ÐS|ÆLð!œ‚EØ£b€°ÐØÆ0ÚTY ová„ÖJì	KËÑxaÀSÄ<œø˜0àÛ=½ÀÞTY`BŠ±„I(>Ä’r&L9p4ñ>¶.ØQ-G=]ˆøé‚+>Dã'<¨ø˜0ÙZ3ˆ>NÅs´}'}¾Æ÷<:øLiþ1ßtðßC0~ìa"|÷á¢µ£Æ<Ì÷Œo¹Ý–_z¯m
<à÷Œo{Ž¿·‡F/•÷ðÀO=0<loìãÍü±ÝŽÝßÍÛíJ‰•yÍc­ÈÆ‘`Ã½áàèÓ}8"ØûNÉê}€F^—Cz ‘×(aÞûhx´îšÒfð@ß4¥ÍàÞ{hD€÷š2Æ1áÝ‡pJ£c‚»á¤ÜÑk6²ûNë˜¸î-¼¼å
‹¼PÙqw÷t™bá«wÑ×©[t‰;¯Ñ6­£ž¢^ƒqÿk´MÈšQÀœøaÚ 	½%Ð÷–õËøKÿ-9µ5˜Òhµ<E7ZÆÙ¶PoMô±HYª°.;éx„ÎÚGÄzì¡‘wè ¾:½ÂžVkÿ N™#1whhFA
šÔî1iÄ(4Ö¢A
šÔc©Þ>Mi5ŸTo1Råf^´ÿÖwkä¬”E&¡ÃS¬ãì›a`É!Ô,yÈ õ˜Øgð8µ'—Á1Ô%^`ˆ(`¦F‰b2D$•JW0ÄäcÆ˜Œ5øÆX;mŒµÓÆX;mLµÓÂ6%QÜ“0Ædl¶,ŒÍ–…±Ù²(]cLž1&ß“±¼06ƒÆfðbc¬ï6æô«ÅÆØ8Ø˜•ö<8d€?2õ,Å@Ô³ª[r!îÁ’÷6ÌâÄÝ€¢pÈ®CÝ”l¸Ëp˜(‡“@ÊûŽª4|Ð!‡c€Ã5ÂQ™ ¹§’zñà8c7ä-¢bðÈaµÌØäÎU’Ø } *il€Ã's¨ý»z]<n .†ì Sv€ïZäZù.}ÄúD«©ßÆ”%bcÎ·1g±Ù˜ÛÐnÌíh7æ¶´›…G¤šeËJË°Êòe8ßÙœGâ?Ör‰|Óånwpš·èŸäCª!§øÜGêgð;ùÌö‹öî¼Äg¶|áyØ†Ës‰zv{ž¯ôhKä^ñ(¼þã”wóHåÝ<VyýÇ*¯ûå•ÌÇ;O¨Ÿº4Lˆ=³=ÉèÂÏÏ3:¦e@³8žâÝ<ï&p,Ü¦à4!8†ôyÂÇR	7¥ƒlêçUƒx`‰—ÅíÛ¶¸Ñ?ýú'paÖŒYâ†1î«(¼§ñžÆ{<×ùs?Gå¯d’ÂË¿»7xGãm‡Æ×xGçïèüá>˜ÞÑx[ã1ùëx:7ê‡Ð?€ñþ4^W¹Q?„þÀ:kõÃ¿‡	ÑøØ¿ØÀÀÇ40	cà+b[ 8Lu‹Çgnp‚A©w8hÔ÷Ç‘5Ôt½®q%8jž†%eÌ ;è‡™˜
Ç¡8;6?èãj[£p²ds:Èæt ÉÍ×á QÕÜÂ>¾Õâ\4!Bkªÿ4¸é€P‹Þ‡Í5Òà§;nd/Àv8ÜÈ^¸Ð‡²:rF¸Ðëû-ÎƒÆšîpPÖ‡ÌÓ‹&0<È¡FØèbstCfQ‡|Gát w,›#•Ü¶Šàh©[ F·_4‘ÛÑ@`HÚx²"ô™&Ä{ô1òt	ëÞ9j“¶@„rßâ qÜw@\7Â#¸ï€¸näX¡Z‡lÇ"‘ý:ðàì+­àÙw@\G:Øµ£ŽÀŽEâ:n}„GKßB‘=“Þ±ƒG`»R »R`»ÿ|ÄfˆìGxØóˆíGÛ.¶7àÍ·@l†ÈÞ€Ç3ï€èÞ Gk¶=l7zØ:Â£”ï€¸Æñ±ãc'ÀærÄµ*<ðx¬#••+±¼Æ0íAq‚ æ|‡…>Z¹C"õ^Äæ‰Öˆê}$¶KÁqQûHt—bwÝ‰íÛ1+Œêˆìh$N!‚°÷È±€	¿ÞÃ¢Ðh7;(N/A„\ß!–÷El‰D‹"ŽUÜáÔ{Hì¸EË0Lõ‹Þ‹Ã§÷€Ø™ÞâóÄNp¤ô-=äô¯£Å¢¡ÈÙ‚¥Þƒ"'<ˆz‰hhKI‚D6/<Êz‰ÏÙ§Ý§˜°ìm5ADbï!‘5ÅÄ`ßbÑcv½‡D¶Ú(Q‡YÇ!áÁÕ{Hd=aÕûP\Mïvå×Hdž{.®‘È<áÏÙwHxÈù	%¼CB#©uHx˜z\yCÜkªaˆÛ
‡¹¼³òl\)md)mÎp8Ì••~/~C•ÒávŒ
Ì­†ËuXá0¡°ô°àØë[,âiƒ/âQƒs7ùœÁŠ¹Ûˆ|È`…‡`ÞAÑf¿ƒ¢	þrAE<[°ƒ¢Ç/æÁ‚ÝÄ˜§
zX|¾8ÅûBA‹Ç˜·	4÷0A	ŒµƒÂŸ$¨±¸÷zPh¬õ-¦½…"ž!è#ol¡àg :$üõ	z C"ÞèA‘ƒy3 ÅÌ7Ük=(ºªðw:(ê0õB@D<Ð!‘Þ[¨VÒ°Pü8Â<GÐA1ñ[h€¯+æ‚-Ô}GØBá:¨ƒžª

¿…â[?ü1¯l¡ø~E¼PÐA}|ûøV;4”PW|ç ^RØA±3çž9PöYœß½Ó,ÎÔnÛ‚:»íÃ”=8Ôz¶FöàPëÖê×¶‡Zu†pÆàœ{xÎHxõ;À™E…í§ûp ëèZº‡‡Z4àÄì)³ŽÑæ<£ÍyF›óƒ³‡'É§e½¡·'‰,FYÌ
H¹ÛÐ‹eC8c>Eà1¢ÀÔÑy(xnAUöàPïæ}8-wÒ´áÄÅŽûžû^á¡fïá"Þµ(øpÅÀ'ÝG€*îÔÊq„€V¾Ø°Oà[ÄŽ ßr8ÄÓÚÀ!ö‚CíìŽ¾G@‰äq:1žÛ­
ñ(a ~oÿERàÃ£}AmF}Oºs?BŽ¼µÇ¿Å¹G ÷ÐÛ' ö…G­Š l=äó¼‚¤/0±YÀñhkõ¶å€ ¿eŸ€(ŸˆÀ,à`	àŸ‡¤µn‰ÁrŒè@ur„Øðà'Gˆä©ˆr„‚^j_'ÜAè±)áá;Ž0›î”³Ï@T¨¨G(ˆM	£qÀ@nJ¸çÅb;À#X0Û¨N¢"?0ÐköÙg€Çv8Â@lx´‡#ô2[nà±ˆ G(èûéR€ö(ˆ œÿ1
êÐ¢m‘ÞòG8(rœ3û!}|ÃÝÛQPû”®Â=É1‡]¿Cx_¥ zÏã ÷*Ü‰÷€ƒ®î"\ŸRkBoP„Wô]éEøñPÐÕ=„—í>Â	õµp·ÔcÔRÀU(àÞ£
œKÀQ
 oÀ!íÈç-p@wØ§ÀÜä?Æ¼ÒH¿0|ŒzÉÿ(e‰Ç]Âß§À\©?à0Ð³˜Köû˜+óû˜»óˆ[ÿ‡ôaŠ¹à~Èa¢=à·ªpÐë‚¸É~À¸Ò~Èa M—Ü9L´½_ˆ7Ñq’Ç€ÎŽ‡p‡É†£>Bž‡¥,fáÊ‡>sÔp¤áF(Åi~£.Q«SWì•­>Õ;Ü‰[*ÀóžÇŠÜ,0¯Oô¡À Jèïx,ÊìTCÍþ0DŠmcøã(¡²Ø6æ¡Áo6ì øÁÈ	ƒþtCŠo(…ú&BP¡F·3üQ…-/ßàOô¡Øò"MLpý>]^p„¸-E~…‡JßBë`é7®»cÞ­á3GÄL€±=ŒŠ›ÞGC#§÷±Ê+¯j8Œb˜Xè0¾«á0ûhZsBsÃ#†°èÃDï£¡Ñ…ûX”{à¦z€Å7ix!ö\ è>ßIà Ð=(¡“àAŽ‡X|'Áƒø°èRcùîÐð€¼,ºÔ˜ ¼=4ò`r
¯»ÃÂƒÝ°è|o‡`¬ü@„tÝa±.TpÖ‹J9@ƒÃëõÐˆÀ”4!oDpÊ>gKC¨ìƒq±
A*{`ì)!.PåKÈ˜Ð\ðp•;0"`eL×˜ •4¡¹1+hJÞXŠ_9@ãÇ7&„eƒÖÇ#ÌŠ°ç#È’0îÀVrF×a)Xì‘2^cŒ=ÝD2ìAq’pÆÄøÛ‚1ñöú`pð¯sov¸ €)uFÄJëƒÁu.ÃE¹^Þ¾øÀ™°f¥,2	”€Ã†«UÉð1[¾`ŽåÜ£7õ‘À'-·P™©€ÆŠÚâ€†µÅ‰Æ Aj:°£ÁÐ5ê3Þá Á”G÷%‡lkpŽŽ¼´bqÀË;ªepD´-5ÊKVGm'o±hYÃ%ïèÜlîN»ƒÎê¼ÔápóÌ-ëpÐheNï†póÓGøjq¶ƒÌÑ‡QìpÐ]î‡,(®i4d¦BÃ¥ípØÅþšT><¬att¶HYàÃÃv@èéz‡Ã	…Cæ½Ó¸Å!óó‘ùá„Ü¬Øápš–“7RN³Qò&@ÊFBè€xü°Ã!3„Zðw8d†P¿ç™!NVÈ9 çn€œ»Ò=ÜÒ0è…æ‡Ø9>n˜Å*?T'CcµGÐî€(écw×1óq£F‘u_ oð@·|fÔ¢´ XÇµÅ9nVi{!²YnÅ9¶#ä
;Ø¢:™£@®m±Ž‹¼âèØ¸Õ-{¾«K) NiW@œöàÃî›#RZH\‘CN±¶Hä`Õ@\–3†lW„^ÉÛB‘âC‘yÎW¶ÅQ{#EJf…„ûö°¸Á .rz*(JWÖ@lá,Êèàldê¢{…yx(¶‰ƒˆã‰Ä·.æ°³…úeiOÃ÷‚àFÿ€º 65op«ŒFÂ/Lì°ô…í-”çÞA±U¿w¾C¢d~Dg‰šæ5›%·	H`È–%¸5Ý›Ý)úý‰žŸØ)†‰¨½ƒ‚{P¨lŠÚŸ£«wPp¬ë-¢º‡„zd÷¡Ø†{d÷¡Ø†°îCÑuÅ&¸cô
0ÝƒÂý¢{`¸_tŒn*¸_ô
 ÝƒbçÜ¥ºÅV$ºÅVîÝ‡¢«
v(ÚBá ûPl®ð`É}(6W„÷ ‹íY”vog„Cò‹/5<hñ ‹®1Ü¡xˆ¥Ô;¾È},Êî³@!`ñ}D•?æìÇ<€â˜8?æ>ÝÁðxÄC,Ê0s `Ñ£ã@½CÃ£±èæ‚{n°„*Ã½¯XtGa¼¯{hBG”%„÷õ ‹Îá}=c¥Âûz‡…;î°pïë‹õ¾ Áž¢=4Âûz€&äð¾îƒqWCÞ×}0îÄé}ÝÃýjû`BsÁ]rû`BsÁ½¯w`„÷uL×ïëšÐÜïëš’7V€b½¯hüøÆx_7è2‰‘f@\lÝ!èñÝÃýÅ;t<³……:é*±Gd%úˆ¬Äi ôyú‰ó¨€¡.â=0Ü¿|F<E°Ã"¼â`|©^ñ[0æé„'5p%ÀèöÂ<°ƒ£ô 8Œ"°cÞ?Ø!¶`Ì‹=0Ü¿FÞPAÆ/ØI†~ÐSñ€ÁŒˆöß#o\!c6ôÁƒ~þêFc•>ô1KdÙ~¦?*ä¿ÖYÑ}t$x½*Ï!ÍóEXeñ4‰¦i6—åCYÉÅ³I:oË¯Ÿ}ÿ_Ï&r•Çw_?³žMT¿~æ\«ß
9ÿú™ð®™eû–m±k9÷ÏäRÊdX“~±¿ºIóBâåÕW7«0þÞJõkûÛ¤zX)…yV§Õ|/ÓU‘-«ä«›ú/ýqXÄw/7¾«ÄÑW7õúSUÞ2Ë—û5°¯k[	K×!°mfßfUj1ôkóU|'ãåzÑ–£¼™pŸMVn³äëgÿóý»g/%gJú©e‡IjÇ	s|ÇK…ë3%YîKÛ³˜çZnj3•’1')·}æz.ÿê¦Ë¤ÎQý»‹‡—ßM¿Y—“R³XNTM~È–·²¨ë®Ê&²˜„q,Ëò«›¤	Ô ©Ç”ªùI•·€Iz@U^uÓGj¦¶Š—ßªÎüùÝä›u6OÔ™üÇ¼z­oËÿ«/òò:/nÿã¶z±í¿¢†¯‹ùË»ªZ}yssRª>TùJnî³ÙÍ»<­îÃBÞ4}z³íZÖ$U¶PµW#Sõ›ðÝ@7Ç6‰tQÚ¬ÀXÛ_eö‡œ´¥P_[B	Ìg“lYVá|.Âq}¥ˆ=›èA¢æœú@ÍSfµðy‡ºú“»B¦_?{Û•]±¦ÍÐ™ž4×Í¼ÖÃµ!ì†övZÌUG,KùòÇ·o>²¿7³¡ûl—ê£\&y×îM¢ö£]šÛ"_¯^¾«'ìäûåÇ¬È—¸ù.”‹|Y6°&ÕU7Ü<zºL-ûzå›ë]?6¨]ª²Ì×E¬ÍâåØÖ(‹X7EC¹ƒï(ïê¡7-B5'ª‹ŠJI×Rý«*ûõ3ny¾µ‡ð˜<kŠvN€¦ÿ¹,¾Ðíç:3–^ÆÏ³(‰Ö¥ê2¿æ_üí×‰²êÜÊ³‡xóú›ï¾ùõÝÌžq øVýÒ0°‘y6M‡E¨Rþðö—×ÿ|?c×ªYÇÜÆñ¬Ôx{dŽ=Àß~;ãˆŒ¿¶G"³|ªk¤°ÖØBê¦‡by²žK0,~—q…­òù‡¬švh„­îô¢4RTóä‹ÿùëì¯Þýãw¬YÝ/~Tƒé[5Žœ}úCýDKqµþ¼¼‘UÜ-×q¾L•â¢?ï'Y—ÅM”-·ëE"ç²’#Êe‘Ïç#Î³²‘L‰Ÿ,}Ø%D+YÓU¸ØW´2×w?¹š)Ò™b+õÉE`…—q(+MG–ð-îZA‹Hn¤Cþ×ó¥hù'Ô¬·¯~š4£Ö±úŠQ¸®îÔèÉ•à´’Õ£¨îÂj².e©~S„MNU¹^6WÃlþ:j˜j˜ïUÃ”ÎËœÆn‹žÆ-îø#u05 /jz„þÉZØ7a)G©`ì)«`¶¾RÁt?}5LgS«bœ™SÅŽíÕÃÅ¬Éò	(|µ¨/ïÎW½Fe·—›ð1›m¨hâ4R˜*
Pœ`ŠÏ%\ Réú©ecf+íò±›³þ(Ê\«'§ÇÙ‘AÿæýÁQÃ¢ |˜ç £ÈŸdê‰ešD©å
ÁGÆA,½HØVêrÉ“4‰Yê¸.÷BÉBép'å©Z×Â x t–T~ÖALë îXSãZ‚ôÅà¾!ˆÛ–Çê OÂ4ZyÒ† Ûqö—ÐBL„>k!£…<aÊ®ƒ4Ðtª0yOsy–™¿„£V»ÛùºÂ™Qøõnèû0uÅvBæø±§ä«ïÆÌMRaûŽç2OX.‹Ò Š7ê#)µ£w"Ú±ú¾°„}B]y5Ñ5š?LÚµ*™„óJKµb~¬™´Þñã›_ß«Q¡§Õ–®i&Y9	'q¾XévVÔùJ.'ÍJqŒýgõõo&¿VÙ<«&ïóÚÚxõ…Îõo]¶“û¬º›„ËÉÏï^OÂ•qª¬:KÅÜè]®›òÞ‡å$/²Ûl©t„‡«û"«*UŽèaòSX|˜üßl~‰.D¹^­ò¢ªS†ºØÅ[„‹RéÍÇR‰¾d"“LWõª-òþ"“oòüÃ^OÞeK}(§¯çMöw*ûHª×ºQM¨ªÈÉÇ°È¤ªfžªLÂX«ió+U¡y«¯iT*Ð$«[²ÌtžOÖK}ª\êºLÂa6#UÎPê.»½Sê*èÏ®¯®¶=¡Rç÷î¨]Ù¸aÕ áRóûL) *•ªafK¥I¶]r¥?‘›Jµã¶øÍª®?+=yÊš*œ—y}øXçµÈUnÏ'äC”ë6V)®~Ï•B“Å&éz×}TÍ´k‚ëfÜ©’ÞÊë¥¬Nh .³<ÛµXOžØZ«<zx|Ïæªm·z:¨Ëó/ÂÚrNkÑ0õA¯Ÿ^¿EóM=ç2ù˜ÇŽÇêMV-Ï…ž1¶å8§±œÚgùÆ˜± ¼—Ëè]ÒFêÉpÍèŠ¥VçI«*9¦gÄ™ì÷ gËùã›úÜí|¢×ß~_+çSýfÛcR)	7&Y6&Ñ&õÝ‹5XŒ`[•¨³Ö¥Ãäö#érÌ7¡ÅÆóý­7žUok|"hn¡Ë‡ù‰­ö7ê—DHß!Oâ0°,)¢ÔVúZÈ¹Ã¢È‹"ž2[8Ã8
’„ÅŸ5·ÏšÛgÍí‚æÆ47æœÐÜDà‡®~)Ãïkn>·m£¹·~ÖÝöu7|8ù˜ºÛãßŸ£»Øwž¶7ÒÕis#“wjÝØä~76}JÝÓøFBþ=¥Ž]‹ÇµÔÙüA%ošÈrþÉMtiÌƒ ©íp+ŽâÐuîr+r}æ:>‰àa(Ô’åÛN˜Ä®´=i2´¸“ŠŠÞNP×*_i1Î[õJ	úF•hî××þÏ\!É0i»;©Û|µz¡þÒê¡Ò÷–·W[õíþ.‹ïÝòCÙ©†[E¦ÕŸ·‰´†¹ìë•WGôÊU¾ZÏÃb ½>¡G^uzäÓÓOœÑ–%ÆhY²maÙAO?±¹çŠ‹Ç›ƒÉðçÙ—zcî/«œp/`>N9išß´ŠÒ°>†‘iLyÏ©+J 6Â]YG®ÍtwfUöÓË§”†ÇZãiîBª_Ç$;a«C¯Á{}ú§¯ÄŸÀèâú‘|'v‚ÐgSKnà¤Nä¸ÜµâÀJã$â‰çúI ¸B7õÃ@¦žc1‡ºaüy-þ_°‹Ñ¶µ»ÖÁZÌìýµx´­àp-þÄƒÿ%«±…<æyôÕØ°Ùàójü„VãÖ—¿Ø²\„I¶.)K2ëz‚_7×TgzV«oþîxîß­@-¸ñÖwÄZíHpæó€s'ˆm&lž&Ü÷â$v˜±Ø©eEÜc[&jþ;b"tBOIãkõ?²Û»éJu#iÏäÞÊuQ›âëuë—Wß½þõ]}©V§Wí÷jIÔJ@›ü]|ò¶Èõµ­æüDg1‘ïÕoßügr$÷ëÉûúà¢¦n2½gzVË™k+•›^ß¯ÞdÕò_Vùò?Ë	»¶¶“ÿw§V½~YkAª‰t!õaF¸¬ôy€Zå¯¾ÍÊªP½=(ÇsýÕÃ$QÜÕDuœÒ.ÂÉ<¯tA”æ±ÐgË‡É"/äõäu5Yæ÷úðäjÑ}:IeX­‹úö²RºL”â²+öóºyT-k¥’Ô¨~#]_]õªÐh,¯—ZK‘ûª'Ií+½Õnôé‹^çšS”†áJ‰³*óùsÝ‰L³esÆóËßN˜ïŠÉº8¹BåßêZµ'1ÿ”Õ}^|˜¼ªî¯šŽ/'_üóÕ»‰Zeù7­1µÝ¾_²ZsËÂùt½ªsÊº‹u{Zé*ó®áãyV—xwN¤¡ÿOFm—”Ï•2SÈ{U(õë¯Ël£:äVé'u3^5]1ùµÔúaKÙ–¯DõÑú(/²?ve'Ë¶šjhEª'´È
çJ)Jš~ZdK5ÿhï£‡‹|ÝŒ¡BN·½V³5} ÒT«DòJ"­›*U3L’V{­*õïKyß6Ë§¸¬ÞÀú®ú	=1ðËóX?4þÈõ÷¸žh{Â·÷n¤û.s,·'=ŒQ›NY;=+eÁ7Óën|óD"àÜå€-D>™ò¦zJWSÔ‹jdQ=©F5y}Â¬Æê¼ä,uø€]¿'wñJ©dcãì€2ÄáZ™¶ò(ý¶þˆS»‹÷úwÊº,ÎiÂú:{<mÖýÏµ{ûr½™6#düÅùc¸îtjä…ý¸xXU#¹à·oùŸ·uT
 4¯±°ì¶˜Ÿß~ÿÏwïÞÌlõßÈL“9Ä¡K;DÔ;ŸvXùIÜ40®§ñèö^ÅJ-‚¤Æ¬Ø‡€ZCÕ¨¯éÌQÉ‡|þ2Êr§= bž@¤¢õ¨<†T¯xÿêÍ›ŸëK“×lz~g¾Ö&RU›í"÷ã÷ÛEÎÞz5©ÿÎY9FŸÉ«V’ßO×U6/GÈÙ&È[2Uÿ~$_/³
Bß¤Ýõ€áXÔFFmÎÂJ^'7ÍÚ™	Ž¢SjÁq:MkiH²âY“\%L¢Tõw7¿|ÿê»Ÿ¾¿.Ž„c9Îv£tÈª<ËY§¸ùI,ýÍˆ¤M!F$Œò¼R;ép5"m^ÇG£Û$¬wž#gË¥R˜[Ífd–¥ÚY&åõâÃˆäEªÃcºÓz1µý©oì:¹[……ö ¿ˆ•m³’›JMñ¬Þ·œKÞlÏOEÚ%L²ú¦d}ëöL²»lyaÝ©vÝ‡ÉNŒL¥_—Ó­ýà,ù0é¹YpÎïÃ‡ó•ØGTU1Si*mh‹ÃøTŸ0“æÉ>è˜^›@€YgäIx4êÔéô²R¿Â×rS_¡V£ûü;ŽVâ„R[8húYù¯y¶Zå9¬vÙ­„éäA-jY<k§;
m2¾ËAé«xV‹h#cXúUV´1*@(Ð,hÇÇ²Tžfö|tiµ8ôk‹­68B@‹0f¨.ñq‚mQBåß²š/fÚ’i…Z­[2®ò+ä>°nuAW8HdW*Í)õ8¢«"oÂüPÕl.6¨×ÕTµkƒÚ·Iªy¸‡‰HÕÄµGhv•‹Þ›å¢ŽÇ2M}Ú§å¨ÍÔ	LŽPaPq‰cjß¹¥×§2 D•úô÷Ù"<,Ò9e¼9¸œG“±í£AÊõ!æ¦	*>SËÀ|.—·#fÑi’BêSq,ƒ•Ùòv¦»ÕÆW–ªdîfÄ2s^Èè]1RÃé§îÕ
lsÇ7Sƒ#Õ²ž@Fì~Oq›â–è˜€;¹Ù?²ñ	=!mAèéÑ=×HŠE˜ª ç°r©ÅåˆµM8Ú°M‘t`ØBFiÄ]êq»õmê‘{õaúq{í-fäþw›ºûí€ V·óÝ¦µ…Ý¥¿ía Ãh¤hï’Þ$nã·ˆdìÖ­KØ¸uQû£]âqúô6=`-é0£Ê-`Ü–e—|ô^¢ƒŒRñ·‰Á§ïRÓ†·é/éÂ«p™Å×·GŽSN,«\5àÃõùqÐ%«ýlÓÇá2_ê8í%¶‘¨|Y¶.»ÄŒµÛ„‰ŒÖ#‹}Ñö¹MyI¤nŽX·ió•TÒ1/¦úèn¤HcO8ì|b­E^>)šc»ã	OŒ¢2«äØC½´cŽÕö!Ñ:Me!“é¥½ô>pÜ®éj©Ö‡Y”-õÕÈóòï,ãÚÌ9­æ@dBÓO9Ïï¤Qõd›–yüAž×B¡«‡©	Õ´Ê§wùBN»ÛÙ ’D*‘²RÂm:R¸¤áz+ùÅ	~poÜVU›ŽQÕö±íiÓØÔ«µ® `Î§Ò×„a£®–*StÆE­; v\ZÒÒWaµ†utî~ÌŠjŽ?²;À/Æïì˜íÜ %`âtˆÑ½\É…Žb$GœÄWjäÝê› —ÖÐ¤Ð×#ëÐ'µ¤UiÏ¥ÑT'ô€~šw[úIýíöWOº®i!dbÉÔ•že»vÊ]—[œ3ËçÒÝ€Û±´<GXiÂ¢@J7L=‘¸¡k9‘[QtÆ7·õyèyçÜp[·ÛÆwç[?×¸å~R.
N0ÚEþÞë‰ÌæÜí‡½bÌ±¬1Kûë³—ÂÓðRðýmßM N±ý®ü„~0YXÆøkõåBaäÜ^ÛåñSçÒwÁœ0´=ÉxšÆÂM]7ðBaEqbqæqAdÅÌ÷yyVj1)¼ØOmß#Îóx]ÇI8ÿnÊ«ù|˜´Ž©TãDÇŽ¬†ž›«Ëf¶ŒçëD&WuÈHõAÛOJÔ^G9+êßuÙ0jã[‚{Ã—r¹ØcbíÝ_AÔ7*ÿ[¤»mYÚz×yŸT¸çñ§í$Aú¡ˆÄS’¤<uƒ”Ë0”Q%JlJJúÌgI$RnÅ©Ë“Øs,%Z&-[Ía™
?c7q\~J’þ_YD²ÈË‰ØÌ­ßŒê8íî®Åá|­6ï“®ÙkIz‚sOÈ¶>ì­¬}RòÔecå©¯U«¡æÌ…èSæðQáb{Ãî¯ Kÿ-Ôf‹A_£:ðí­;ôS:øÖ~êüþ]”õ#Yý©¾¬ùb&‹â÷AìLÇ>¥{—^ÿ6ã³Ÿ^¿
oH=ÞÜÙ=›ßˆYmžè³¹§£<DI‡Â³œ ±K$jàúJ‡ð¸ïy¡LýÔWë”´„åÛ¾ä–Í¤´Ü0µ½Äó¬“Û°7ß½zkNm8`ûë(Þh…Áf¶åì…pe¶xý°qL%²Æëz´}ÖþéºC?©Î 3üÔùý;ëYTÏYµp^»)qÛ,Íšfdy\<Ô—'žÎúœûn$l;Œ";ˆR7Òul/õm×v*Ó@­•~àF–IY©äÒóSKŠÎþÓÃ»ÿzcn<¤ûë¬¾½BZLï˜û+¤çZ\ôH_­€³¨z¸}^ ŸÈéXä€YM~Ò²Îñ“gøï½FbÂ'Á¢Áž[Ña1“²@ôßºS›Y3Û´€Cà`>ŒŽ€ôI6é0››V¸t‘ùò&Q*ÎCûÑå»@ç¹j÷9Ë—³úš>•NÉþêÎXá–¹jg•øÛxw%L»w¨›­¥¾@ƒ¨Ñ–¢T:×"¼&¸lõ\Ÿ•9@ã+uHeªrèzµå¨Ý.’µŽ‘F¡!¶Œ±FÑžj'šÌ æzU„X7ÃC¢ÞÃ|sŸ"<Óò#éL‰^
%ýÖ+ò Z^v
4Æßà$–RùXuÒ&^‡}J{x'ö­@6bÛvc%Œ¥i RÁ"Á¥D"’njÇî«M{ÌƒÐâLx2¹œÚÃ¿UÕ4·…?`ûëìàƒÑ!¯_Ã¼£z³›TôžU±×Cíóþý‰ìß-Ï^6:Ü¿ëý¤Û÷:~ñ'ÎïóægùÅ-†-VÝ¨Ó‹k6òéãCcýêð±£{¦É_þôów¿¾ù~öíÏ?½}õ~¦›ãšÿéf‚3‡rWñŽâÎ%î\å®WÆô*%éoUEŸÖ	I`GQÀbá'VèG<¶dèÙ®eä‡<UzUdK'
]ñÔÖ+~ Ûb×³vJ»ÚVÖœŽµ:Îù—Ñ´|ÛVâ«ÿ†·	,¡Ô¯þmÕÙàâ®ù>«\ODåbtß9¢rm»õÓ*^Ûlÿœ\ÿ½•°Õ¿jíe¬Ò¦þåoœ×î“xMqÐ_A¶òÜÐÉ@ÐØñ@ÓÔAÒðA¶CPÚ‘AÇ˜iY­4ÝÈn¢•©™ÛÏ4Žæ”áNqgeœÏî8ã³$šQL¬‡ÜólU¯D«0;ÒÂJ3 ëVa{rQ¢{:;;	¸+¢ùVêø.÷9úÌI«­ó½”[Nš¸žgENÌÏNì à1aìœØñüòý»÷æö:l]ÜãÆ'p=ßuz›Wmq e=Ö>ïnžÈîÆâôaºC?é¾Fgø©óû÷ÞËÄëÆëŒÜÍü^æËi<ñ§ß¯.XIK©ŽÀ®ãR>Å4Š­ Œ=OøÒM<Ç~ê¸A ]Û¶]î8³mÛŽ‚8”1c)÷\ªoêÕ6<±˜¾û¯7ª¢æ–Ó#|•¢@ð½x?®c[ƒõÔs}ÀzÚ¸Ï+êYQ™pÈG´M—~Ò5µÉòÓçøï½®6mÀGX~š…hòëV<„Ù«2õµdÆÌ|-Ÿ)_KgØ¼‡iü-ŒfÖk9Ì^FÔçnæ2°áúá«f¨Væ*T›£Õéáˆ&µ3U!iï:ŒûÏß}óíSÒßy2îø~œú±Ï<¦ÔÍ4´íØ³TRs)£ I=É˜°cf‡"PZ|ÂxÈ(âî)cØ¯ªª]Ws*|×zQ%~|ÔN_|xËÒV»)Ö?ùw}ˆßµÜg5þi¨ñ^¢vv½ù)Õé.Ïo…:O¢ñoÓ?îE9Ú:¤_™J‹+ÕZã))çH;vÓ$ñXÀeû–Ÿ:!·-G
'týÐeIäÄ‚ùn[¾ŸD2	}î^&ª«œUÙ¹˜Ðï.%wa9	'Ëõ"Räé$•aµ.ê Ñk%÷Ô"•«5¨h“—Ï¯´4TªEV¿>ß¥_æÕ.¸ëÉ/aýgu.¯’<[Þª\[¬ŽcÚýç‹UXde¾|>¹—“ûl>Ÿ”Ùb5˜Ì³²ª×Ã.Ë+U\ýw“Åó&Àµ¬&ùz’ÈXÍµIV§x˜”j	)ÓýU1YJ™”×WWïzëì/?|[ãÿûÝ«É«ª*ô]SU©W»Š¶íÕèRëæ!¦«p—ôœ«%¹©˜ªB•Åëy¸—~òj­Š³¬²vI[ÈêN)hOiw­±Ë8s<o/Ü£Ã%8ƒ€¬BcÀJ®gîçeüi,ã~ >ßÚïÊOº†ëŸÚ~£>(ïÎÔ ~A§ª==ÆÔô©F0b~~ûý?ß½{3³ÕÖc8RôCóê‡fÊ”!×JS´]GCo çGÜ‹ˆõã÷#Äº®Ë˜U¬/€ÒzO“0Ñ¯j¸72G¸w
8xE€˜-'Ðö8´^²óñÚþâý«7o~Ö] ¤ÍXWœï¾y}1Íñ²š_N¥4–/¿ü&,¥þðbò¿ûæ§™Æ\N)«|U}ùå›|y;:ñ»*¹˜öíÏï^ÿv1Õ{¥Ž}ùå?²_dy1m©Ïør£ß‡ÅR¿¾öç_…~¹]è´´nBÉœx-H'Z„«™Ú•ŸK¢êìô+ï½TZK?Ÿâbqt½¼O¢–“1LóðèËµ½å2KvûIþ5?õ´Z/Uuü‘Ü^Šû£/ÖöüqôµÆm‚ùbÖXÈgÕ±·œw)KµÅ\î5"r›Ÿ€cÔ²võcZ^¶ê‘}­ô"À&ÞŠ,™JË³­Ô²â˜§¾Ò0Žïùqâ[Ú³L†¶ŒB¦¾²Ò8¶ä<´œÈ‰ÒS7Aô–|¢w¸r÷ÂG»±ýEm(*9ùN–”¨™¼-ò*óùä‹_¾{û·óýMÛN“ÿ«“ûy÷÷YÎIûäÞ$-òÅÎöüÝÛ«Îâ|uu’9—z·»ÔïTùD¡:£Á¤\Çw“°œü”ÅE^æi5ù™ÚVÝ—W‹Pí—²|>ÙhŽzÞ¼÷Ú}’q²ÒÍÜë˜~àý]1c¾ÚwCgïÊ§í
ýþÔ  ï9ý jß,Æ…ÉMt¨M5b§õXìy_½{3Q«3}£ûë²\É8K3ýJÞˆ­ÞÙîÕ•ü¸ˆp;Ãh÷š'{A~œ£;·%ÅÐn(Å$š¢UiÍÓt•ço¶Ùåü¯‹2/ »Žßä¦e‘fYB‚æý–ø•Ü+B} ¨ƒí	(lþo…šÖP!©»qÑ,¼ƒOV ,ðáP[¿_ÅèRƒ³Yß‡±ÙßgËUñ“¯æjý­uFøT7•;³©Ö]X{év˜h~j9§+o53i6IÐn-h÷ÕÜÌõÝGUrÓ„'¶Ë|i;RJßmÇR+2	‚„ù‘Rt#­9ÂeVìø%„+SÙIäÈS±¨¾ÍÙ{|t«îêã’ZÓUÊâªUEO+¶}i£	µÆÉ‰T‹$‘ÍÁ“~¯Q¨ôOÑ¼G¾}µûüC”LÙí]¥©”þªô -È´
».¥æüíªÏª¾¸•õYÖ}VÝMöÊ´—g¿”›JKâ¤5@Ê‰*”¶LÝÖ-Ðñéè½Ãà×Zïlë¨ÞØÂÞ»ÕÁÜÀöÝþûÌ³\æŒÕ|õ¨„zô?iå¬cXùe½HÝouÃðNgäÌØ²Õq·3Éàj®“lÙê3Óp^j€ÈËX­ç¥A.&N²r5:m¡ææØÄ2¾ËÇ¦=¦ÂÇ"2_HõÉØÂ¬ÂB‹¥ùèôE¦‹]ÅëÕå^b.&×5­âÑý¤’Ëø6Ý R—Ë4ä‡T©O@È˜i2DŒ›'¥,²pt7¯5þã.ýAÁ@—Soµüóé´x>2·ð;öî¡¶‹³©Ÿ®÷’Û¸û©Uê+A#æs/á¯Þ¼{5³®ƒ%8¹¶ŠØœSã´/ qQŒ•õõB1~_ÉÛº±/°íÒ}¡zñÿ{ûý3÷š]Ú$¯ø\ý>b„öaÇµ—šìøï%P+.–h›î‹·¿¾y÷ýÅÜ¯"q/H…2RºÞ¹p>ÌÃ­„ ¶&²K€­YÁ ~64œO¸ù _„\äË…¦ýâ¿Õ¬‡–éÍ¥©F0P0ÿ¼eB”Ge>—Õ%|_©}ó~ÛvÛª'®÷.(øÍ>Åùšrmž62Ä2¶¢È
C×q<.œ»‘ëF)ãÔIG„<žHG0³Xr÷ÔùÚgÓÃ_ÓôXcÜfq±ozplL®þèC·ÓÃç“7ñú’ä'1>´™ZãÃHkü+ÙiJìxÔÐ@14´TŒDMOóTëÐš1ö^äYc,ð¨};°xŒÇõMãQÈxØ¡1…m­"(,hþ·“Œ½…ºg0‹ý¸åƒÀ '¦{F•Ýº2m––ñ³ýngtwB»,Ñ7”À[kÙe>ŸÈï`k«+­[£ÍØx^;«Ð7ãŒ»òÐ³æ<Õëø=[Ðožâü¾MgìŠCã¹³ò<…[$ µgÏ–ƒu ±Ø­è‘o¬°ƒWRÿÂv¡Ì*º¼±~Õöµ»LÌ2d%V’$,˜Œ+‘BD‚@¤¶åëçÎ¹ºŒI¥÷ãÄó=¹ÜÆ˜êRÊu½&ÓI8YdËlÖÆmhŽWo_×ŽÁµ1‘i*ãêŒsõëj’•#ˆšítc	R#Q)ÑåõD_ØŽä]ø1Ëµö•6Kµ9v&œ8W£!×ÆÝÝl½©×¾Óµ´¶‡ªcvŒZE_êb]U:ßùGY£
©$F¡í>…œîß;/&a®Ú¿²²\K}]mñ—IX$m¡ÍDT~ysÓ¶ëäa)Ï8+»–ã0KèÈ¨ùHõöQ‘ëÚÜ^Ë¾Í¸cõwó=Çì²¨7¦õ¸žz@+‘)?äOuCåTÉ>Æ¶kÃmE½Òœs†=!rF°Žq#>ÉNØS¨U$ÌŠ¤Œ†Ç¿‰¥ÓÇñ¬D~üöÛ»Ö~’›ºû8o¤žW%ñßÿ)`ñío¿½úæõÌ»];Ž»£ê£ëzþö›ê„‘û©à#Ž{fµŸ1÷u©šÈ4_ÉeüñOPH|é~šDQœ¤\º<e±Iæ¸s›s—[Vœ±•ˆ rTšÀòãH_ždÜŽ½ä¼BÒÐ¬K½Jÿ¬*ùíŸÖ<ö@Õ]XÕ§Gz­o°uP•µR”R7Dª…û¼øðx§=à¥ÜöÆ.åÜwö^óê‡Ý:î[¶\Å›¡ôy1'º\10ä°gMoÉÿ¤¥Ý ~ñWZ×›6Ÿ…Å:®µ>:
~‹ŒnKy»ÀA³\5µŽg› ð±ÚÇE‰­Á8hÞDÓ€?~Dá’°
KY•8ð
×9iãjÙEÿb¸ŽQóm¹Ä!)µJ€¯ÿøã…¼Kqs—ÝÞÝ®36[ÜÎ´Ûç‰ŒqÅVhý¨
«C¼Ì:…¦±‰‚9s,~Od¥=äQèU•Îó{v¥:JÎÖËû"\­”Âˆ$É+œ|^Ís\‰+jqáf~j{Œ›…j€œù¥R¼%®mË*«tx\C••Ztµ¨LÔÄ¸½ÃõR¹^É¢¸¹\®-ægJkÆW£*”ÊŽ×FW<2#`•zŒ[ÿ7¸¡	¢Bü{ØRž -$‹²$ƒyïöÖµÓî-|˜í#ávEI¸2”Ç)Ýˆ{ÌOÎDó$ñüÈ¸ô„Ç¹ÄQ&n˜J_ÚžŸ°}¼©oè>ÞÏýu™iubòªl¡#¬ÖÑX_Íoó"«î§#¯Ú[¿ú>m}ÙUN¢I“¶œ|¡Ïgä&¬Qþ!£BÞ?Ÿ¼*Â(‹ÿöüªÌ£Š.Œ¾¶6ôYO’/ë+ºõÃí…š?Åä>|x1¹¿«ŸPŸVrSM´r=ÉªRÎÓ+}B4W‰ÊÉ½*{%—¯ßÙP›…I^è0j¹U¶Žê«·íèÙþ{â*®ï:žÃÜ¾°¯OÚ˜wâ}&ÛÛ~Ãm/xÏ8Ã™å:—CÂÖÅªOÓ©òþ}Ó‹÷úë·ßýe.âÖ˜lq!pêbœ·K•çèÎù–`hë[–5óÀao!3?{¾?Œ±Ú”ðGåþx«7Zò[¶•&>K˜§„¹Rì”dwa‡ÜJ%ý…Å…ç‰Àç‘gê{Çò|µJßc2ñÿ³äÿëI~ïPò³’Ÿ1kOò+í`(ù™3ÂãPŽ·Ä–ý;ÙïÁßàx4ÙÑÔ–ýoô~êðDæƒi"?Êù'ß
xN’†Âá~¤O>½Dz–ãú‘ÍEÈ¼@8‘e±ÄIc7U‹‚ô]nù‰F¶ç³ Ilïì‚µ·¤²e<_'`*ë›T?Ù7u»¼Œ5€´Nw-¥~üA_¢R<u£å«úÉ†¾—’ãñ>C½jszš²Y	â‘Z¹ë{¯¦Ú–'ìþÕ'¶rD`žÞhû¬›Óœä˜#pºyÓü†¥tCjZOWÂbû>kÍf²ß=¨ðá¶}úî‰íPŒ~ŽËüO°©ïú¡Ræ¤ÃC©Ä>K%ð)cžéF¡•X®t‡"Ž",ˆb7”?õ¢Þg©?Nêó±¹’úÌ?”úl_ê_~hï”Ôÿ¬—£ä>šrß Žþ“ûŸ|wB] 
¬Ø÷®»·l&õ• 	Çs½”L†AÄ\+J­0ö˜Ÿ27J™‰ð¹úWíûYâ§"õ}ßUÚ¾ÍlÛ:!õÉ×µ½'©Ï:sËñ—.eVÖÏ¬Ntùû°‰f.µ°š¼ÿöíÍë·“(,•¸/ZHÞ£¼ž¼®&UøA–Wád±žWYûO-˜šÏ6…V«C‘‡jM¨òIóLcÜÑîÚ±BßªœËMV=tÑ½ÖNÑK©£äïÊÛ¾æZN¾ùñ­ó|òó»·?|dí¿üùäõ»×ïžO~yý¶þ±¼}>yûú§ç“þãõÉÛo~y>ùþõ¿¼­øÍß¨k5z>h'ÿZ‡··á'ˆßÑ¶j#DO¼$§ãOúþà%9X6?¾R1½²yÃ¾Ç]×ë›|Oð¸|rPLÕ(Ÿ6ãûï%ÎA-©‹÷˜\”¶ò½8+;œ¹0Ç4F®k±r²TÉËåb5ÒÎªFbJM|£NIÌ³¯ÔµïØ)Yª§øˆ”gR”:I;×§Ù2ÍÇÐ‚Î$Öª€ý±‘ñÍjVzÖOWÕjÛÓ°l™UíÉÀ¹T+ÝWò‚}°yAm¬O¶wlF´Ï;ä¶oðÛ·¿üÏÛ÷u@¾§ë“{°KöÚò±÷P>Ùuë¿ùÄÛïe¾œÖ†ê±Wy>‰Ë–R:ÉÈÅÈ¼ZŒZá'y(p‘E%g*&‚=2l1 Â142âzäD@½­Ø\÷Ç'onâ€DcY¿åêëDµØ»ÿy÷þûŸ¾›1käE´‡°¹Ñh]Û£æÛR‡yç–%5Ò§z¨›¸ÃÖVoÄ²Ü¥–8i’"#SUˆzí>SŠÕ»£a~{äõé\»N²âÙËYÅ7õfûà½ö››¤{óùhŠy®tÿ*¬äur†g.N~¿}Qß‚•Qv,§.ÍÇê¡ÿÐ	Ê®0­ãdÑ§·/XNlÅ©:Ì±"/áÒvÃ(ôÃØr-ÇK’È\Ësý¥–myêGÀõ¹—F2UœŒþY×gR¿mSÛë†>efh“+õ.¹áER?äþÐ‚ñ"|ÐñÔ†[;YÖ5õÎàél»ƒÑÛn;g63ðÅàÆ†m±1îvÔ|ÞxC7ÞÁ6ÜÄxcð¶¹Íí–;FÊ®™âIÚ®1©VàEwïik×åÆKx’f§I±Í<Ï=i{‘Ë rEèè7#C?Il'Õ!9“¡Ÿ2æ{<°¤“Ø±ž<IÓÁ_¶![~ýçëß&?¼;©_Mž¼W#±Le±}ø³{óóüs¢ª}:¹1éº¸6yóÑq™tL*­î2½:™éõ¤NUÛ1ïçüAKÕdk°ÕûªjÑuÌšæp/×&Û¾Åµ‰§£Ã×Ô¢k›òúêêu:yPsÒh*:/Õ‡áD´üsýå¤üÿÙ{³-·,môžOõßyYLÅ<ôZçB–l·þ¥ªò)¹º«ëF+&d²Ä©9(•~ú I€$H$“)³Ý.K v bûÛÓÃd9´«0Þí`œÅåö×Nz6È¯äLU’Ó¸Ûûÿ½ËÚ1ø3ï–_ÞL—úM<ðæ¯Ù5û»{ã/ÿKhŽ¼W08d¡ÓZPÎ%TîU
TVpÙSÄQOábÚŸCŸ7õþôé}¦K•õv1•ºk„·ÿî›Õ«rFÝ°uûCøçM]…‹½mAìUUCÕÙ•+‡ìT'7wšÐmìÐEàkOré>éQ)UÂýiéç*Ïï´ý°‘ÕSÚºª¸ÃùÓ§w£‰]Ýçðêã;ð#eòG¨•UÈ‘ú:QCfSB]ªxÊ½9¦€9€¥åï‡hI	Q8ujÍ ÀXÃýé
#\UZåŸ~Nò»ýqþ0Hé|»ëvÐ³ÉdáõÆ<\S¡Cë¢o½XpÉfÊ7ÛO¼¢õÿOE¹'“½ºƒhIwH*h±ò¾äøx¾OéÒü.Šûß§†æ~ó¢]ÄIÓuè¬c —¸™ŽÑËPa_Ý—~£;¨Œf˜X×RëãTQ(…EñÔ*ím~B‚©¡ÒŠÖD¶¢sÕÓ~æì¤ÃÕáHb×uAnÂNUßåpÙ‚À»ßÚŸ_…ò;±®²»õ.dÒ!åk`X"+-5þSÀiFÖ¥ÒqH6Î0’„mˆt@	Ã5‚  €aÐx[á¦D;)Q*E¨ô†Kl„Ò›ïûC5!°l€!ŒJýk "ÐßVþÍê|§^€"mg‹5_‰Îª~Gª´Ñ–t2eÚpÖNêôB—ÓÚ»‚mü¿×¬îk–T¿nuª•¬ˆl´ý–3)´Zi¬¯î1Ò3­ŒÐ2«5£TC,Yj±ÊR+”I	…%´?Pë4—Öï%7ußÍföëÌ1F¾5‚íw¼…²(¸¬î‰ÀÕ=‘ò8ßZVrñÍê|§þ$ê¾ÎJtV÷˜cÚ­­€n'RÀgísZ+ž4ªµ¿ñ×y¡„/@Ó¿€ Å©FîÕÐÍT[‚hðCU`›Sþ£ÅIÉm}"ˆÁJ@HR‘"Ç°ˆÉ”S)•5@z•˜ji°7VŒ¤Ò‚”;‡Säíb¬DU|?=ÍÃl2ž,çyŠÎH…¢ŠÉã|æ¦+wô,yåÿ¶r÷ù-úÞ+ðªqÈ¯qýò?^2ï0M/ –èV«
3¡úKÈBÊ2QçƒÑ`¨fåÁÉ/^júô7TxüþpOéÉr‘OzÇÌKò@ ¡ZúkœúW}ìoâ)Ù *)ÜZˆMÊî®·{©ÅáB\Q(°3ó0,6ä=kSöÂšá2,êö¿ŠéÊ‹­]ü!oìB¸MAÿ¢2^ÎtÕ$.ò'þ¥â˜"»È~þyìÅ£iˆÓqA4Z‚îUj¼!ÒDå‰GÙe„37¹½óe]jž:0í4ó-§ü<…hìÒ9i²ÐJu<ë9›qê‰ÿ”>ûuºŸ©Q(å7÷˜ùÂXmó,I6×Ù3 mbÉåûXvJ»h˜¤pÙV–ÏWÔ÷t-ŽZÜjI¾¦ÅÒ©ÅÒyÔñúQÇë¯“É2©iì±Ôw“u²ÉËð“dXÃ£Â™®ˆÄŠY©áw{ô„~¬ÐïfÝ¬¾¯­Ë¼‘Mü4j§¬qª¶©£j*t
J	³†k…å#«ÓÔÔ ®Dð.§ˆNSb±6Uµ6e:ƒùët†À]oãLFþ˜‡H`µ´ƒI4¡²þ™Á¬:dÔ}f&ÝÞ‘Ã0þ‘ÆÓÊ‰z›‰b¹ˆu¸s8Ö(K#‰ç¿ÉÎÍžbnéåÑÞD±½u	þy#ž/&³¬„ÄzðuqˆÂei·xtnœÄHälä»Þ§ÉÈå'e-¼üÅgu‹B	õUyóRcYÒh¼†z¦ù¹óäÕ_þòÏ»»»^÷²– 2wCgþÆõS¬dã›Ù$þ_Î¢}ô:y÷Û?ü½.&YQù0uX£åÜ[Â+¨sV«qäfþÙÝe¶…_Ž{ßƒ‘ÏL”"Ÿ…?´®;ºUy"T™ØªXM–Ë¢íÈGaÂ·ÙŸY?ûÀjWÅ;Õþ)qÿyüu0›Œƒ?åÍºªÖ9Æíûîl"Þ´E¸ˆÃÔöþí¯r°zá:,´ê<‰õÊÐæuŽêÖOX¾N;ð»Ô¬t©‡ z#8š¡x®Ð1~ÒšLûs}p{Õì¸sL¤©•Î0D¬e‚KÄR"SÌ8A0ÆãYHá8uB¤,DˆYYÕá¦šoªù,ª™ƒmÕLåþ˜8¯å’â„H€!-ªf"¡<ZjWE]Þþ)gÔ°Éçy”óQgvKå|J"ôRZújê»tÓÈg(–xoÚÙËüŽ­‹>âf:‰„)g&±²ŠDKè(#4ÕÔBåR§…u ¤‚±ÐMhh™×Ú´R'!Ü§™ƒ†Åü¿ï¢r{÷ã‡Sxš¸‡Qÿ½ó»ö¼ÿßnÔ„ÍBýC¿g~u{F7jìU^/¦äª º·N	*1¸•‰Á[ùÕŒüf=1Iøó?&c÷xöâ:ÜÛ]ð¢¾¹7GßÎŠEUå ×O[õ›ßFý "Äq§¢éÇ·©Y…?}z)ur·n°³†‘\4t
Þ›Ã•ö~Ë#Õ±üšŒvºÉÌÖ°¦Nwq°Z3šéôD&éÊ—h5|negÛA;o¿>¢_Ôb2˜Ï“é¼ÆJäa_ÍbÃ_tÑ]ÖØ­Ö"¾ª»©^thµp}»êýÒZ¹èÚùõŽ½1•½Ú”V>²³¨ôt„CÇëk•·¥¿×ß–öÙ:|«_Šª5€³‚XÁ=ZpŠÏ€C i”t4U€§ŽCÌ¦.Å
Yg¹ÄZ„ög’UÕe¹¸“ 8±à¯ pPÐrUi„$(8ÑÑžd[ø¦QY“„{.w´œT;W;RæôX®~NêNHeœ%Âªf¤Í	‚´¶°`Ã\€3g¼€°üFÌÑÄº`¬Óùk¼T×Ö…W¸®¹›;aq
µ”P¨·V8bSëÅÄIA¢N"
ˆÒÂXn±
	ODHãŒJ]U†Â©Ù ¤äÎšÙ<yõîu O¯“¿éœõÕõý‘àè9ŒñüÂ¬ëìåYˆY=ÿÎ$ïòáý2ôæWgµJâ®÷?“åÿ3ÆVW^d0_T,e·ò'½KBäÿyýCÆÜÝ—‡
–"D=¢+ö1”±/ž¨ˆÖ ”#¼UªŽÁP#ªT¶Ôbmlå/°_§~þ"5ö
Eàžÿ1–¯sßŒ›æÎ¿ü'´ÿ§bG¬“ÀÄ÷Y_³Ì±äaÙ2Üãù2.w¯+f¤˜ƒ†Ž¥Uý¿´›-žm©þŠA²Ê¥j°W#õïÉáî'ÇF¨S›]–_ˆábòy:\ÞGÏìIûã¾¬ þÔåb0Ü¤Ùþúón&Å^»ù±<ž>á«tûV3·½×†îäÆÙ_W_!Z«ÆÉ}ÖÖ…§÷^mžô+6Aüƒ<š¿nÿŠ‹$\Œ¦¦I¾óhšFouÝn$Ô^ ËÀêà”÷zq€Ã°ú¨¦ëw•'Û¹&ˆ*ø~¬‡¦l¬ÕúÿV_ÕéF>~™ì¨´9©?%@Ìc#ÙN©6B¨’jäÁ_ÍïýÚW‡Z6„Æ£#'x,4Tåd'M¾ù¹o—£C…bã9¡…Ás2àÛŸ9û ¹V8|ÿ}Ñ)½Á`þ¶a*‘ðÖ^Š¸¡ÞzÊ?  ¡”ŠR`aÀzck•A£Ú@I²Šðª¨@¡ç¡„‘^ÿõÝ»C&`ÁlSÖÎ“¢¸7ß˜‚w½‹UÛäyiÊ‘ÇðIÞ¢rÕ¼2Ž›ÑÊ™qôº—É—ÀÂBÓ´<w}m¸¬£5¯ÂlµÍFˆ–Ûž Œ —º]øCR€:f£Io¦ãõ˜Ž@ÒØÝŸâI-Â0`G›®½uvRóöÏ`R44¾DñÖ'5d²!÷&o9p“E¿&{agLSÐþºho/4+J´fÞ¸égÄR»ˆÚNèLC¤	æTyŒ&àÎ %”“”8À•Ê¦‚r¡˜…Ê ž2«P1&R
˜®@g%Ù=eàìýO5ÁÙšœß!yçvÌ]‰‹ðU—G\jB˜n£&$ö7…ˆ1¹…™‘´X¥û_#z¢øîliþf)’×
šÞ;ÿ°îcÝË ©e€Æ©A$’7l>V~”§ÅN›qëà6g!¬ÖèÏ*pçGÎî;÷“ENÏÖZ'FõŒÁ–•Bw¢˜lY÷¤•T(ÒRðXnu‰ó€,r \¼\„\RÎ:` –)BØp§	ÄD’”{ý©œ°šr®…ÿMX†Œ`ÌzÃcf™Â|ÉáµI(%(G
`…,ÁBùÊ³Ö¾|/¬O3 s%¬¤°i÷Ô˜SûõW ¦nm¸’©+4=(ôçÂ6×TïùÊ±•@Pé:åÄÎU
î%”R;3'Õ6y¡P×øY@“µÉ8¡˜ymüm\HçZ„1ÖP£3ÿW‚$‚¥R"(@e[‹ì–V.²£™ëEØí€\ô²e‘•Á}–OÐËK‚Î3u~ÈuwÐŠî0CÕþ4 %[Ü„ÔëfYê™Ür`åKüÂ«—éT#L¶Wù£<1¸ÊG}6÷ÚË
~¼9:OþÒ×T7nïÏè•üß¥²~W8éâ¯=ƒgòzýŒ©¤‡üŒk0×Í8IÓáDÙþøëtñíY!\(áœ‘2@ûÿXc	¢Ê
g1òøÄy”(Ó˜Sê´ÅÚaG$ÂT#ÿŸ
dø·ìÆ†[¥ò„ «¿þ×o¿ÿó8L,-Ë.Vœl/ÀÆÞ_ÿk`*ñ3Ü%Éß¦nü—ß"	|È¹ˆô[ég3ìÒO'þçÑÔÿm8ìé§ÄºT-‡‹3†ŠÉ=åcþáÇ2c¯“¬È\–¾º"g{ñ&W×ážÆ‚uþËñøgžÒM»«€ªLÖ…ª‚É·h@B%Á±Ãù¦Š•œùÿ¯TKOù;‚«¿†ÿýäÅ£V²©çÔµ–ëi¡kièï$<ìÏÝR®&Uµ%GîPí+m‘»r®÷û;A WA¯>'AÚ¹WÅÒ«FÞOÆîpVHñ¼y½ó†U­%¶Î;šK²/.Pã†ýÂ(ÕY›“âh•·¹}^ÕmnWy›[çmßf;&äÃÌÝ¢AëªÝ`]^4äµ±qFêDpÇ
é%`¤(Ó<ÕÐ[7–Fˆ¡£°G¬b
s°ÂzùmuËþé®ðî<Ù¾Ùƒáƒ¬ØÀH6dwà¶Ëƒ$Ÿ&éâ1Tª>7…]i0h©”?$ ûKIC ·"E¦	R‡¥Þ,A?<ý>húÑ	JI¿-t‘|ó‹_”ó†î¿í®@]Ù´ÇCéZÖ~ÞûmÖ´VaéúƒÏÍ°Ÿ¿…¯ÊRI5¤:ÙÅ:u³4þµöõgËqøë„?š¿§Ô§áP½œ×=ïÀž<ÕªÇtª6Å;\ÕhÝŽ÷.Äeç˜»‘.1	³)F…C‚§”@* p.„H	Z)'°1S¥¼~!Z‡Ö•¥
ƒ«ÒlêÌLÒŒEzJÂ±h}•.ù)_Ž¬ßÃáQ^'›¼C5K^NÌÌœ
µ	_'£‰¤O«îÛb¦²ª…él2Zíßó^‡ê†¯B#ßÑ`øàþõ=5Ÿ»‘õxü	÷þcIãð‰Ì§CG5¡“ÃýLMÑôKl áÏÚä•×…½°‘z›ùƒãQ6Âp0W1ò[ª¿Ïx5“Xê'*©0¡ÿ«™LŸò;òZÝEì<Œ7¸G&$ón_f¯Ðxï\&ÊÄîÝØÍ²ÑÕØ/®uß"Ñ³?'ã…ÿš~Ì×/öêáîúX·P~[º‚¬Cqþ W—5niqÂ„óüÁ‡_ç½lÖüÚC£Žlþ8Fb1óróò(SléÈüç^\€õ´þàf½Lèî±y.á½ð®¬¡ah~œ?‹u?ðKè1{€Ä§Î§þp>¢sþoÞdú2`¨pò›Íþ±ïpÄ…%}`AÙß™qÆäV™$Ä©`~C(¢ÎÃ¨N¾ëž½®6­>}¦nM‹b¶f'Üy÷$èÁg3Ô´êÑ¾{8Ø_x¯6j2z­.Æõgñ7ªS[ZöÝvÅ¶ý"õ¦£—nY
¼Àï¿|†u	:/Þp¶vóL¦ÁÍ3oµ.á¡½z3™.ÞÌ¶¾ð7³Éd-o#oJ2T§øÈgÃ/+¨cÓOTn6ŽUŸçufÙ/X-`&3—oGol|‡Îƒ[uÔ3sã-èéï"pù¹{PÃKwñÀë.=ê5…‡jTÿÚ*)²‡” w`;Ut»öWF|Q q/_™5{xó:âûøû:rûøür~eü¹‹vÂöq_…«‚Þ¨uvÐrÖÈìˆælÌ}0þO­qöº6jÉÝyÌÕZö~Òvâ½uËjÈåœGkáŠJf5„+_ud3ò£p°¼[Jf|F{áééœ`Û6†K¶+ðÑžÅ„ºÔ8IcÚŽ)!ÆÿrR!‚)BZT2j•ƒbµ ª²ÁüO¿¼„Nn(%YqÁxÈ>ù;ô®ZpÆ£™±ž‘KM3i›Lv×ë…¨Á=1‹åº‹å»»ú<¿Þ8QÉÜM•?âzZÍ×œO¢QËylaû”õ5‹¥·)žrò2É.žyýËb\dƒL^.¿àÍE&ÉÊ)X=yûÛ‡\¢ny˜wó®ÃÉ$YS&°u‹I1ŒgòÛW“ßøöTñŠý=î¹ñä1–4ÏÚá†Y÷­f¶J¯GŽ%{c÷HÝ@6føof2¾÷KâÆf²œùe³YIôñÜŽ³ÞrÄü°	6™Â­úÛ¼>60Ð{e6‚ýl „!´ÕHW†d©‘®‘’½ å]£HD4«ëòbšäœŸ@6m¯»¾Ž¼xêY©½ãñô§š£N˜s•HÚ&WÂÄ§aþð]þ0+MŸ3ÃŠó»GCÍ[Ç­0šXÂåÄjŠý=¦Æ!+(”©pNH)-ÀÃ„3Ô0x7`ñ§¬®›N·Ó€Àþ+5cÄŸX§ÊJ-`qs5v€ë^Õ7hqJÿäZ<´ßÓåƒwã’kK5‘HM9€k”’”‘ÔQeœÁ @íBùQ„eT[˜¦‚(Ë0¯J=\ïÎÓiÐ^	{Uo2ÉŠà,gqç¬†;c„Ðÿ¬Ô°<B2Rf6‰1/ÙøWÞ+HÝð^E9Ö²bp/!¢¡ò	³Þ"|»Gø‚¦êfßƒ8Kœo6ôå£}O·{|W“©¼lëŸy¨)Å__µ¥‚Õ|Ò.¤wëºö®u·0á×7ÙÎw·5e¶;žM÷–DØŽ:h'¸¾GÔL?1G\*XÊL²@BF$q)jŒ%Æi¦	àLØ ‡H	´JPæÿFªôÓÛq´ÏBœåß—ã~Ü¯ß…$ó_ópÓCŠ©÷>[ìÚlnÉoYz{òa¼p³ÔkÏä•Ÿç‡ ›¼Ñ5,¢i8]ÎóâÞ&·]%þ3gQ¢q˜»ä÷ÜTÃùj„yb¼{Ãmg~MGþãß÷æKíwÓE51S&Æ•†ÙTáúÖ¯ï:NGÌÌËÐ]=]Ã¯òúUò5Ø‹‰\m^ˆu¶±âbr1øá}{Óy4“Y<ƒ…7£†’“hI–†±¸~÷m0›kµ»hßO¼öVµ_û°0Ñœ^U%ðWê¿ˆ‡°!Pxê·mÿe†ÅÍÆú1dáÃ1.;‹ãŽo{^[¼šÈ;{VZ¯©Z„iÎÛ9&t’Ï¿¼ƒ%˜ Pò2ºÐ{Ñˆ!J ƒ0.6’÷‡
_c#¨‘_n?ûâû¨!Üøx*¼QJû_ÑÃ{W¡{zÙ4°vÿeA{wêÃ×!õ§	Q.“‘ßH²,ñúÍÎŸÆï>û-¢¹Ø{o-¤ÍÅ~¶
KÖê"sÁÏÿ½¡lœ-£Ô|â©šÍ]1¿_¶¤ñl2l(æ?óåQ¿4•{},\s©…Ò‡nî‚(ù9k›é‰ß?«Åd4ˆaiðŽ±Ú!¡™°y˜MÆ“–ÂV-Üç°>-å£7ãi¾p£–tÞµ¶öw=k,{¡°eûØ$fyuöÏùÇï>~úì¿(T3¶wŸ,é"[3\tŸ,Ý	Å¬/Ëk~q.×85—v}úz®Ú¹—«[Ó°‘ðæü_ÿö—ß>×¯:S–#Íå‚Xíõ»HU™[$~cÙŽ‘ø5¿ñÓÅñŸ.¿c$û-’ÿ"‚Z7ÑÑþô‘·é'¦•ÐgQ¿=ÕíR“hçéŸÁ£¶2Ã;„ wa.0NkÍ‰
Õ)”®ˆ’ºT2„4)ijÓ”:ˆÅJ§’S¥—°Š¹üÏBèÍV¡örö÷+Ò¶ŠÆ,­Ï¦Õr`ÆÞ•"|2,‹ˆ¡%«±36ëÏý3q½r€Ðšr›ß­ƒcò‡kãUÏ\¤T²´þ§Õ¥÷V|Û|5Åµ0lám†‰;VfØ0`«F'€CRôâAÿ¸A­f=Uot™^ª zŠíS4|.Mr~ ÀNÂ¯û8ËV?¤´)×ö!|óIy_nÃ]DË´6qyŽr‡<lÆ6£
›0„M‰Á|`]­±!×†_¬cñ4£›1ŽÍˆÆ†übmØÊ¼ig4¢:2œ§ …uÝv#y6Àx	g·‚)QÊ‘Že1Q‚p]š"€ÿƒ¡¦j¯ª°‡ˆFJF‘B)FFPÕ2^d”u²˜p¼!Â–!£´aJÓÈøÌ~Ù ñj²þ“n1aÏOì ÍAã	=_×‰o®çN®ç‹y:ù¸›U¿ù®âÏÆÐ7ç¹Ïä»¿<Ä=_÷ËÂNé†é*D‡¹éÄöÍpà¯¬Qê—N¬vÕ¦½Ä’© ˜"ç¬q*e˜h’.ã”$•ƒN: CÜ
…%gŒ‰0†Ø
Ðû1Ï·Ð2lâ«J˜Iv›Qf‘ñ›üçï¿ÿ–üüñ—7ïÿûíßI<Dõwu¸ERõ
î¦<úÛ vwW©yYÞaìY”…kö‡öqÕÕ(Dªd3z¼ªAHGœx™É—d9ÝüšE.Îç3P‹J¨ê.y¢F×(]õòuèÇuð†ê©ö¬pyµJ1_¯
,SÄ8a%~ÕbîçW¡|«Y§S$@½>èµ>ˆ~|·û°E€øT^å­üûö1;üÃiôïá..†£×U\–Î8Z°6­Ïk=¿Ch°bÛê6aV¶ÉÄt­çºÂ.æG	Á]B„É1ˆwPørÑu y-õâk•w4~Û
7BŽÜõcÝ‡ó¸YèÁeÙðÔ˜¢xf9Üç<]„ •¤Ie´Í×”Æö„I,õ!O]ª¯èaâæN§ÒbfH
<‚˜j‹'Jk¡¨£š8  ÇXháÎVr¸žzØèAh?èÁb«:!H–›>
Ñ°öyMÐÓªäÁžSøœÏ{(íÔ4æê`Ï^±;ì©ËRÆ?'#Â ÓŒS'ìzAQ£¸îFÏ°&5	wn2e5l:k8ÜÎ‹ôò0T—(»8
C	€ÓNiî¤†B¥  #h9c2ºii8…O-ƒ
R‰®ò˜~ÜSíªP`¢€OrôSLm¡r¯ê
ÞÓŠ
…˜BÞªÛJT$«ÂS»èéJÐßE;Ut‹â	t_í`†švz9¶ò­‰žÊ¹q;; Gt¬;öà.uêGß5™ÞïkYå†W%ÐPcüg‚k…ã¯</:qüÙatsQçJ·Ð¢zR@ÿB€±Ã
`ÁÄH&¹’Dc
!×ÊoÇØb!\Ê\Jœ’¡P¶Z[©ozò‚z2<äš¬ B•õ$—%=I@ã^°ôdÓZRW )¯˜ø\^ç×”'¤nšò<”ËsjÊg±™’È›Š‡%Î†ŒÆN1ŒJ¤¡	­…Z‘T3CÓT§Â2†µ?R¡ÛR¡t¯×<*t:ÌÃoÍ[‡ÖW„ÇÕ^²V{½’ÚÄœ=v‰Ýšÿ.I"Ý²*£äµ¹1nuhÝþu…§¤Ð<5UóQAv™;
õ7]k7¾W¢fƒæ¬gŽÆ(Øî?êeBÕ¥BûQ(¸h¯koèùôªÝ¢tËéüZôìÖåã÷®+32÷<Ky`Îùe×cÏÙ_Z§]løÇè`kÓÍÉ¡`òñt3\³þ=¼í´ø«ë,^Ô™ÎÂ–)“†¦š¢”CåmIÅ@
„BÄQÈ:Üá4å2ÅŒXkBÚBaLzƒ8/âðºL”3°E¹CJM•ü&dÃš Î<8)yÀOKpQs6bàÏrÎÇì‚œ‹ñ7s:2í¼ '{—Ï ¡€§©EŒrhK9 Ôë”N
ÅR¨Œ„.Å
û¿8 VÄ˜JÆeG‚)=DUÎ¢‹ãq6X¸4y¼÷UÖdë²Æ5ñþÓßòÈÇPéqgÊ2œm/Lþ¼ž.™„ÆVƒû‡d^…¬óÔÌú‘g‹§M2wVúÚŸÝ+6ÈZßHD)c5œ‡Â×ëÁã`n3HÞ»juëQ‚ûd°È*’ûï³‚é.¶‘Úvø'´¬Iñ DéVÈdó¢/E2X[‚'ß«oÏYÀdüDž“ì9]@‹ú?Ÿ!SäÌ)ä`[¹Ö’¨¥Ü±’*UrÇŠªTÉÑ–r¬¥A¤yÝéXt°îy…ÂÔ‡ècõºd¼ˆàïÜêÄ¢
:a¡©ã„g1Jj§ ÖpµBV§6¥Ö@çFs’ZK©vß@Õwªj“J
´ª<¦òg@e¬u²îPuã”N
«NºyqXuÚL”ç„YÝÄ»P³¸w5öê$^³H5ë$Îº‰×©~ðì9Ú‰üQ»PP—BÔ-¶Räk/Î’Y®(±ÊZ‰¬#ÊYÂHÊ±q˜: ¡N1ä)Ô–)()À*SS*S£ýjxW­Ý‚+n\`¹s»ÿ\ÌáÓdéêeNÀ¼'_¿…veâÿ$ÙKð:ñ-H5NæÎeÖiêfq²þ²qÂ
º]	rC´.1 [­Ð9FërLkØ‹vï¿‘bgòÂŽÅ	÷>­Ë`¸Auõ½áÅ$qš]FÕ^€=áV`Ë´„*uŒ(A¤Nc$FZhlª¥$’§Ú*Ç„õv1!Ä b¨aÖÝ”í‹W¶x×÷TA“@„ -§ñHÿ¢Àb¿	‘i’[ Î™Õ-<Q Î³ªÛs…ãü¹ÔíuDÇ\RÝÎ/nÑ"m)ç~ë$šÈY*¥¡ÿ»õ_ªÈàÿW#lÒ;`¥ö_«6JYðhRkçxÖ°,»*v£^3/Å`4º¨Ócêë É^÷‚g$ïfÞÏ
éLÔqkÅÎð/{Ôª^£Î&á´<dÕ_Æ¼Ta6ÑY9þµGb0ŽßöHdC¬[hÁCàë<YäŸø1f›A—±¯û¢|W¢—Ií´Œ Ür_0A%*fý0! o^›ñ{mL=¡ëbþSG²¨õšÑ Å3›Dƒt,zÙ²:úQ)x,¦¢Rð`PÅAÜöqÛKÅGË³V’¶«JŽbT
©©l»8¤õâ+ÎZY®¬í¥Ò¶¯m{GÐV	²¶/9;ûU)x,¨ªR°íªò¶÷ÈÛÞ#oûYñ¶‹Ã¯&tìÚ(Ìóªé?PV|vxtöõIë©¾µ[ç7	Æ¼p€ië@Ñ?uÀgžÔiÍÓ^ýó_ŸéÑçTìþ^ÿÌÚ/æ^¡coÀþ~ö]ÃD7ÑÿòC† ˜»#ßôK©g‡N—UtÅIÓûX¥KgÇ4…ÀÛù’bµA©Ó@X
4´R¥*…N(	<”`@Öi
©S’(jxUÎôWú¾y%Y;,V„<ê2¯„	ÀÅà
†n]àt‡WºùyNÉ,	ô™¥ÓÄ–ø¢z}ÕÓEˆw+>ŽjÆ¿  ºÉ×	"=LGu“ïxý¸nÑüjŽª›|ÍèÓŒU7ùŽëGº®_ÍâùØ¬nòß_Úñþë68Àtu“¯~€÷ê&ßqýyÇûçïŸwü~yÇõã×ÄmÁÏ™2°¢Ñêâƒaý«Û%ÊP«l’çÍêšüsËÞ9*¾!ÑšžŸ“nõAy®"_âúÙ8dÙyÓxvîârÔÙU•âñmK˜AàŸÌ¯5Ì-B˜S,SÌA˜*’RæRæFCÍ±´4TZj…TBac	@H:)+³_ß½KVWzâÆvbl³Á’wë6ó3j«0ÏYù$]w÷ãeFhìg“8æ•¢‡9L0X¥Ä	‚¸?Ì™DRº“œ°¦-Ã_³7£Ú7Ìÿø8X<$î›qÓ,n{õÚÿÓÇü·ðçŸ>½ïÎDýcœžÎ^ŒƒÚYÀÎü¢aZ^²Ù†(\¯ßf‹§C»«¿àW#õïÉìà¶¹|v—àðPû7žšC×Ù„MáWÉË§³ÁWµpƒyÄ}°¶>_L>O‡AO4QÎ-¤Îb¡ç¦÷'D­¸^ö_ÞYv¯ùõLnl[ÜÍ¿¿Ú;¹Ö¹u¼õÏa¬\Èú(~|{ÖŠx£ åKEð‘¡FÓø)Ô}©ï½š=<·ÿgõ˜ŽÌ=Ê _½‰G[Õºk5šF\‰ëN3Mgáüº-0›aèùÂ^K|>PH*ðêwq 9[½~àßyàt³—'Û¹~«Ë wWÝ-ÉM§íïÛÎ~S³ö²ãQ{Y%üƒo+?ùÚ^²o—£Ö+íÅÃíÄC(}æìƒZä{u†ÄÚ–¡ÞñN:XéâNa	öýçØÏPÅs…)sÀ¦¹õjo
2(R#$¡X2’§ÞPÔA5Î†zC\C ˜¨*Œ"…$Ù}ÅLÔ_ßÿtÈ6ì	•Ø;HòÎ[ S¿çe+ñU—Yøk0®kBH#åP,åN(cÅtRL@K™–ß¨›UxUV!Ä¤cï¸òã=£ÁV˜å¶›1°‰ååOon®™iS¡óZkó V†6O\Müæ×íÀÕl	\ƒ%_«é¼—ù<o‚¢~ËÿŒëòëÌÔÍ?¶•x÷Ï¾ýéC}çÊ~ÙÝò¤kzÅ‹ÒÑ€øç?ýšÖtëTß¡šÏ¤R¾¦S«J¾Î½_{‰±°¥ÚÉ÷?ž„ÿ‡yrÍ4ÄxŽp¦SPB¸4å`MSmFÚCpèC“Z–"BWZ­†!j«êœLÌ2Äf°dÏ^­øûL?öc¹Ö¼i›ýP½ðë5ù¿:ÿu¹<Iv|jêÄ.Ü8Ä±¾{¼ûñÇ×½ÿ«¾ª×wda©C¯‹—)½Ñ¯î›3ËEŸ:
r*âÍYð1Ø$Uó-½,¸v0^9˜%V-Ô]¯WBªër¶þúËß^'ÿùû_>Æ™{ÿKˆ·%#5^ªájmÎQç£føôÍ|’.ÕÌ½ñ¯Û`XŽqo-ÃJ†Á^´J0$±eqÑ{A ƒ¥æŠþg )`Í>Š¾»s”•}µ`ê/ï?^ZªpeÞ*äðÒßùæ®»bK0FÝ*‰åâxØ»=–Ê™ï ê(GžÁ¬üÅîÏqmlVj¢Î¤hü¿¡aº›µeZ«c\è½°	úDc¼ÒÑ‚j&­–ið8k%8—<œüÎcSš2È¥~û0êæmxéÇV'c—d·öçV:ëwþdµØºfÿ’Å•‰uÓ×Õ¸zyNIÈR?Âbæ‰(ó 4Î'_­]8’/½6Æ·ó9$á½ó¨ÀÛuBüÿq\Ìç`6­RúÖ
ûù™È–#¼‹ÿéÇæca†Ÿ>½Ï ÊRûù“÷“‘
ïc½´2=OsbEJPW–¦øNœFš¡AS¦0™e‹Yè‘9Ÿ<;sò¢Â[/ç1¾B’åâs·Nä¯»WA='•³‡ÙP¾ÛÅw¦’ÎMÕS­ï"Ý ñ“ùc¢žw)RßÅiHå„C‚Bê4Ôk³bŠ±Ö<µÖÿÑ¢”3ŒS®¨Cž!§…ÖU„Rˆ}kmðí%ŸÔx°ð n4ôÂ#•,“ø©©±r¼\‹¬Æ½÷!‡|Û}H¤Ü‹f)@¡ÇsÍ"Œ‘Å`R„	@´a=ÚÒ«Uv5)|÷²½‡§¨˜wzï!Í/»àÒÒ³=—¨4Iº&»2 ™ÝëÎ]î‰£^ëÃƒ%šèùdè®1Ÿ’–‡*ÉW½\"*…ZÆ˜¤^i i´3BJA!dÜ) àÌ¤L!Œä–a
œ”
 d ¨ªYðŸ^Á P7>…øg«üâ‚\$üýö§S)˜[€Êó«^¢Š9exÊõª˜â]~*f1ÌsÙ0ÌéÔpÈ„À"k½m‚…T!H¹t©cØQ¬†VV§˜`F‰3[B¡×=TLð%¼7×Q·TtîzJµÕ	­k¯ ‚·´	ˆ"ùM‹)m½E7såªt	ÝüÑ[O÷œÚ¤0ÍŸÀd‰w[Çh!wbS6òŽê#Zà2¦±)åZ#—j´´Ž¥Œj‰!FZ+‹$ôvˆJÉPr,If˜P~Ó^ˆºf…ßó)ëÂËEõ ¤iÔûA=p³*ž] ÑÝªx&Mð}[MpÄ¶¸€&,FÏfk©Qš: À„¸vHr*8L¦œ§"86©M%·~'ãœYšZL«š­”ÀïþË˜«XÂB“¿¸ÑÄ?„¼5`S]}kÙv³î.8õXC0Tè½W9ã51Q´¶«ƒ¿ðe"
`„‹‰RÖBe¬_¸›ÝpUÚbƒÕ^[¬íUÅzŽm1<w¶_Åz–¿[W‹x&=t	sDAf¥Š@ÄyèñîíCB­L5F†z{Ä1íÑ!W)žJ%$£ÀRrŒ–ºi¢]M$ë/Tn·[÷(!Úh"$nAZ­‰n–Ëóë¢ŽÝÙŸE½T›åZtÑQ[èbºhø¬nx–* ‘S(	Œ"Æhˆ€WAš³L•:ì•§Ô¥€`jØ"¦¥ê€2úèÔ—“ùà÷vx†j3eÞøälÛeBi©±©?Â‘l®o†7üµ*Ò]á/á€þ‰ðÃšxŠ7ŸW!dAÑ!M³uÓ¥N†tqæ F
Z§S!1™XL§ÆHb ÀT`C RÌœâõrBÀJoÉn*ù:¡/æüÍlÈ³;®þó­_'vòíéÞÿ¯›©…³ÉÛß>$!M3¬˜#l;¿„‡ãg>%oç_üIÿßÒÍãÕ;v	W¡Lø‡V]mˆJÄ–Ž!´¨P ’X ÑœL+¼˜7r]:…†ÂÏÝ2ÚÊøŒj¥0Ë÷¤WÎ£ÏjX Ð[¿P'DÚ4ä}›¦Ôjç7í!,%NC§Œ”3ƒ° Õ°~9a'³ª†»F×¦£"tkKG„…è"!E¤ùv¾¸YWº›Ò}/_\ÂBXü‰,„ÅõXKýŒ™˜‹¶s¤0ÆXíw|ápŽÃ4vHkáˆÃŠ“T¸K#,Â$ÕJÊüÇØºt0ö0ý'÷ ¾<B?•~¨3ô5ê
±Ó¢:þ–Ã­À+áM‚@0­U…àhÍv7Ð…÷íæG¿*Eqg?záážQSfyÑ¾ôZª"Þì…3ãœ[c<Ÿã€â¹H%kÇ-1’
Œ,wŒ[LöŸwxƒDqHpô•VSaE	•*Æu¨C…«ÚÝTÏ~ÕS»Ò5ò¿‹²ê‘”
ªGú}6wcTªž›•òüÊ§{òÇó(ŸïÚNÙ(ŸËåž_ùŒÔ×Æâk‡þæ‘ÂfZG2Å“\BaCj¸ŠJ ”Rˆƒþ?œÀX èJ§™¤ÔÈÓ
­óŸñóŠ{nt‡¸o7ûíó)ù:˜´?õÆ nD‡›îmVgWýø­>ü|÷pV¥òøøx·SÛ/Ì[YÜÏ/¡ÀÉFÇøCX¬«ó•uŒá¿%"L†˜áM'Ô´,ífÑúñíèÃ6ÍËTñÖ‹7ÝUÐ±0íæaìÛ™|ÅÍ&8d´™èûò9To´Çþ	¶ZdTXë À	í1¾€Âj„µÜ#Ê‰’:¤™PŽÚT+a€”Æ0âôm«=°ÕŠ­Vì¯£ê—™\d«mŠá_&ísòÍ–KÙÍ=péÍ¶oß6Û|†\Ê*H4Ûh9¡Ì…‚Ž)ã!ÉR+dˆjýžˆR„"v-u„AKM±DX™*Çîo«[ÕªTèv;ßê|Ê·¬BÓç»ê-w5âüa0†2Õn>÷l †IvÒ<”Â~œÌ¾d¦{­ÉÎ°7Øz•¸¼õ	 ® ñåVÍ?Ì`)û€ƒ¦­£ó—,Xÿ Zl¼èïÛéÔ‹ÇË¿ùÅ¯ÎÅ¶ßÂmw®eÓÚIYg§WûÉ1bÏÇÝdß:çà5y”º“œ¿•„V‡[Dœ²ÝD¨»Gø«ZLfÎ¿uÞ'Vçô¹©±_¹Fs¬…N˜_žâñfÔ " CŒ{¦ðOAAù ö´À­z7÷pWÉª°[˜7þßøUNßv6ÚvMHçK;9aÙày,éÞPÐ;ÞÎpãëÔ ÇaBR(	7Œ1„ð;ªbÂiÂ1a”jC1¶R`¡,À^¤Ü‚Ê  3_2ÞæÓ¡ò:Ùëå…%ÆëGÿË|>1ƒþÕ¿Z7¸åí=V8lÌe«µn„1{»0PÿÙ”áœÙyŒ.Íj¢nçôü9Î+fš€ìL~—$Ÿ²Œg?ÂIqØd’&N™‡^aä×É L=»‘ÒÙE„#3·XÎÆIh„ê6cæ¡UºŒÍ§zv îÇ“y>»7iGùºÅ¶þðk¿XÉ£Ãƒ@Æl™§mö¦ËÙt2wó»^ïC†>V«3HcÇ‘±·œ„w-@®ðÛ—Ý¥ùÇ½gaVrÖÞ"ÙõÞ&Õ`L0b$Š`LèþjŒðvHòÐÍÿ‘…tPÙ°sv©}ÿ½56…ƒ7ªï¦µGËÿœ ¡½æÚdÞ¼7ïó69ó‹¡´éŠÕ0 K)g—tàìÝ.ë]CÕŸâ"Ý¸N™ŒùŒ<ô¨I?‰á#Î§Ïÿç¿>Óºm8f‹&×´:{}çuïý&³ä'ÿËOòÞ…®uféÐšíôOíÖša…‡ZA³lONîû#7»w§„iQg.Ô´-R#w8ßxÃê€!£=X#)’PhëŠ
êpc„J3)%CÜ:
±2þn”bN³*¤ö[¡F*éÙÝõý.“£ŒMæWö[5,ûÿ]M¾Qã
ù`²?nzš}Œ}bz¹"u+ì
½Üö\Æ†<25;±%“q/öL›†¤²p¢‡iãÁW€Þ–\ñpÇðfõ²Æ¡Ìd4Œ#žÊ#"?g€	Áý`³kª<ë!W8¿È³z2Õ8²Ì¡°š¼Ò™À¨—ªŒ3*¨¤ *VË(B¨"x‚MËÁ®¯¯ï¿€>&6ë9|¶ûî¼shLhU]Õ!³w³j4z¨T1Ëu´ m*Ÿ¾üyç]îãYû¤>’í;¿¸ÆäœRo6Í6N¯:Â$Å©€\¦P«”`¥! 08M¬ÅÂž*¦)÷:¶ªDFC™ô“Õý7
?]+£¤RåJ¨·£x²~§A&xÎcgÓedT¦À’­¦ç•rà7F“¢ëç\so*vdÇ¦Åa{Ù°~˜Aò/Ækà?”.CƒÔìB“¹Mƒ«)¶˜hžÝAèÅ:}Z©r?šµV¡¶Ix•š§wªVÖUµX0 ØÊ G0XÒ¹!ZWÐ†±¸ÛŸáMÿž‚¤ÀSý.¬²I:¨ãkvþñ›„³¼]0<pž™Ì\æ¹¨áèkðÈgnzØTW_ÕÃ ‚ÕŽk’¹Üd4šŒ›È5ì³úØ„ØXýóÇ_þñû‡Ÿ>ƒ;¿Svedy{Y\“\Ú+»ÃµÔ—%ÖŠÔí³»O¶Ë5×ìjºO–vxF´Ã53ØA¶æ5»aÚäÓYŸ¾žÖ¥8÷‰Ö|ö‰¾èFÊ£-â³îÝxè3#5{vÇÓç¸ùÙýôÉß6¬yß[Rn¥(WsG)Õl”\juy57ø²PÍ/°,$,E žïth¼;Soè49ýÒ­Áƒèp0ìïx]¿É4~x¢þéƒIùÈ#²Ods~£zþ¿ÃÁ"ÊÕ^ëù¼É›²:{ýM×|ÿËr5_ä«hØÞ¢gzAº¦Ž¿Æfñ5!ÆÙšÍ×Ü$+å[,ý)›Õ£ŽëW×ì¨’¯óîŒ&_‚¦8pÆdê¼:yÈÍ»CökmïîÜÙ¿.Çœ‡Ýã9ÞyºzŽƒw¶ßØÛæSoNw÷Ò±^ÿé=Î]êµæÐdÄ ÆÊ
¨¨’XžR)yj••2ãQŠ#nS¡üÉjh˜L­cU‰]Í9t»‰rZu7xcÚF
î+ëPI§¯ørµa¯{9OÎ&£$ã	ï#'¹ã7ÞÃ«»/“âOóŒé©§D»ÞšÑMBaÓdî­¡~~%Î®nÊÍb"Ä<¿çWj8ßgq‘¡UÃ6‰—uuØ&“V7:ÿáuàáãtþÆBì¾Q}-Ÿ1úÙó°àyñÏ‡ú¡LÚ÷Êtüºöê/®.ü¾U#y—u ¸B¦žn3õS¾—©GL¶*f  I`†7%3°„°iïí­ï¼@V7Il~’þ$a„çp’3Šð©Hú¶ŽÕÆsÔ©²ô}Rô¡ÅDÓBŽâIã÷äyñZtx-°ùÝŠõnEw·â¹[Ü­˜íV”v+.»‰ÝŠ½nE[·â«[ÕõÈß6ÄtFº]—RnL=×È-¡c"óÜˆ>6äŠ”®Es6¤ sÏÍHçfls3š¹¿ÜŒXnÊ(×¦’k1ÈõˆãúäošøØ›±WèØöT¢”ë1Éu	äš<pSº¸>O\‹¸mÌ
7£ƒkS\­èß–¼oKÂ·%ÓÛŽâmÍí¶&u[³¹­iÜÖümkâ¶5cÛ–ª=¯º‡ûÜ¬]euH;¼E[mˆ½úâfc7ìÇœÑ¼ÈÑ MŠG]×F¼$¸siåë¸1²Ý
ê¶ædµ}ý(ÆL4…ÃSnŒ…\áD
”åv	ˆXpj%šÌ\ênœì“½zN¶ÜñPô4Â\BTn¶"E4d€o8Y€	­“–¶9Ù[ètV–’å.]˜•ýSN_+{[¾…-ßÂ–ëð¿·°å$ñ-lù¶|[¾»…-ßÂ–oaË·°åœö-lù¶|P¼%^/øÆŒ_53z2d„âÅéqˆ	d@h˜3LAJ”bP`cBB¤¡@\¤	é„ANPRIsT+E*èñOë"Ö÷V—ç^—½P‰æ¿Ââ¬*`„šRj96‡v&DÝfº½ØbEºG>m9}øh•Ø™2ËE2šØåªS†šŸzÚ?ò~FDÏ&:Têð¯ð|9ÝÙ+d}EíòTØÿ\æ|1‰%76Ý.˜h\ÝsÏû{#}OR€ó†‘¸û°ï{B'"ekÌt±‰¾Sºù¹ÌÃ—ìÕ¨1ÚæÜ2Óç-¤¶yæñÏ¦²¹ÿ4í› æÿS]­²)HÈjÍ—œs–Jš]›©´
r)¶È,Q¤ˆ+$p
‘RrK­NM*=n°2Õ–.¶¤ª+ms?úzŽ×Ö\9p{Îóª”=µS—2ëòò¨<®Jãiåe·™]å@¢W®¶¯¸WŽ‹Â®T°º ‚" 1*×á" È‹e¸\4l¤µó¶ß`Å)Êpyˆ×±Vø™j2™å¥é÷ç*¦9hoÃÌŸó2¾ÁGrÇXm²¡K7?»11lŸÆaËxûÛ‡x… ¹oëY\a×æÏú÷|2îG:ˆ4sjÙf–³Ð`£ÁT/Àivsµ}g®65vÃ&ïè÷å››»Ø\¢É6u)×Y3?Ø5¸¦þÄÎ¥›s§–ø“G³º9ÞYÆé¤öË]¿`Íƒ²“ÇU»£@uoÆÉkÐl÷éìži:€ž¦í…=¤m/ì}{áùÃYX¦¹]<KSE ´.eˆ‰€£Š*«)gL§%å!NR ††cæ)Õ¦ÎÙª*ôŸ‰d¢_Ç­\:r/Ö>©À &Æ/Õ¿HwƒÉó9²ÖëË¹³Yã–8io›È*ÓGþìÙ|ZhÏ—õ³ËRnžû®z«\Šd2ÍZÙ%6ëÛ†óëÁp°x
_sÞ„Î_€>ÿKx1‹âÎf9Ùäa„Áø¾?Rf6éý=Œ“»‡UvÊõ‘Sl“S•µgáÛÜ”„’]^P [×‡_!­kÏÄýÛRû£ÉûÉHÆ·j4kàøT\ÕúI™­ZÏó’ŠÒ¬+¾?-&ãCµYÓQùýéÓTÍ9~´`·z]Bëß»’jA)T™ ð$œfÑŠXÁR¿×A‚¡t¦–j#M
t*9D
DñMï}ßzOÔuÊº´^Xï5õÉ\ƒæ»V/ìd^šçÑ|/ÄSsÓ|ýrÄ‚›]^íQD$¦P{EFBþe!ƒNéÖ©#Ä@BˆÊk?MS¡°°`¥©°Bí}ØR=YD@ò)¿Éƒšoéº•ó>‹ÈtWˆe˜¯ÃB6ùz!ïzBvûx²› m!_>(¤±S3ý”77›ç¡ˆ!õ2y5HÃŸüðzè~ˆ­¼z¹®œïvÉceaµÉDÿÛd»‹f‰u#/|…êÖNO'ÏÈr#Mˆ€””Úir
Pë˜‚ìÞB
NRÀES3íX¤bötÎ¥˜Ír‘I^’N|áÑ‰—íKvBdµ'Žq?ÝYþ×™ËûÂnW(ð}ùý¯Ò‰ÑdÖ’oãA¿4îhÐ1õ¹ê¬½ß›üš5®9ÔÚæ\þÿgí`s,e£È]´Ø 3¯òUïgƒ±mÊ§À8ú]Ý;âf”
£É5K­ ;€È¢Tq  L•$PgŒ4„i"œRÎ ­ T~÷wÙýÔßWHt¹ÑÄ?å‘ûE‰E‘à÷5¡_M´üW¾>lQãTÔK»PO0NÜ0£}ò«90^BŸæƒy/®ø]òûƒ›¹Dù×ãÆ_²Ìã'PËÅdœj8|J¬[8êŽŸz»w‘ÿ:6Ìî)ë®îï*º9ž¼•¼ñYÆ=?œï’ÿ™,³É†óèÞ(^MvÉØ=&›‹^ŸÐ³¿ ½Ìü$ËÙÌ_ˆ¿ÐMÿ÷Á·0¥]špFÿ—*:=âPÿ2Pâ]ôÜl6™å·çÿðÊŽÏ2¶¡÷ÇSµfîŸü¡ÇI~ŸI”ë­äæÉ«—_y¸q;³•ò÷æ‹GôLÍCÈ§¶ƒxE«Å™õ^Å³¢p.4öýRM’{7v3ÿüªª·*yd×#ÅþöNM“Í	#5ŸÒÎJx=>>Þ­>çHyU]SÈI)#—ú‘òOU&º DR"TnŽƒÄžÅ¼\àÁ¤!Ùµºâ~¶“ôñŸˆçÚï1 :ö°_]Ø>ÊàØÎßdüC„S«y.ä‡9Üs¾M6Ì¥Z¶q]œ1¾dGÎ?ÿk4Q;TB;&J7gÛZû|îLZ§nÆ	Y¨³É°å0÷]¯ãþ³¤-c\½p‡øÜÑüóÔ¯@ËàÜ˜î"Ý·ƒN†Âzœ¡ÇjÉ´æÞê3mbuOal`˜b„BÍ˜€’g¤Ã„Ji´1¬±àko‰Hé­aÒˆ39”€Wï¥Ò³°`¬n6QÁÿXÃÌøÏMtÒVtQ¯X}’VEè28AËè’¶]J‰·¢_) ˆ%Œ6­øR~ÝÊ ëÏÐwñ<Ð’AÖ±ñbù¹œ_rm5›ßWrßðj¢ƒ.Ó|ìgG­_îûg¯šÒÍrØÅAgÖ;— ¹¦ÎZã…‚2aSã×LZ„	×„WEÐ + `œr”il4â¦yiQ—×mÅïÍ#¶4m	=šçFktÒ= [{‰gÓ=§d8nºç…èÙ6DU®¯4QAn˜·u¬³Œ@£‘tÜ[:cû­ÌxUY*6À*‰ƒF„.S©ò&P•?å·ÕE¾[Î“­[­¨¢ç×éA¹”ÆH>MÒEÔ*ï&ÃP1ólE§*ô‡`Â+c\Ôþ^§ìçÅ%åJ•~ñ‹ÁŸH4Šü”}ÿäûä™ÅÛét8È.rþæ¿$—1UŠ7ÝUCAD{!m£{¿ÉãCÖ	¨¬?tÕV}°‰áq¡öÛ{ùANÝ,«»:wxÿdü.r7‡&z>ºEãGÿñ÷ºÏ'›º4OG}Ñ¬©	F­õ†h§8¶È¦%æ@rB°VKÁS‘Rà7FAœd)NûŸMJ5¦ÚïÈT¡8~Œ³u‘ŽÎ×áòÞë€°÷ÿúî]µÖø-µ%’)¡P—{fç‰û¶˜©$”žË&ÄƒÌšée
k•áæw½Þ_C¦D?ž“üú%Ÿ»‡ì†ûôS¦æÉ×ÊÞ‘^þ¡ØD?åéÖÏÓ÷6KÒ[g$^Vy	ŽGÅ¤ópÈ[œ²Â©ËáVe(1¢ ”}ÇájG­©ÁòW8lê¢•*Ã/ÑæÙ{ß@ãÒÊ{¯éˆîÙ³eÔ»¦~«;Ç9uUyÀ~ø´Ãöÿ&2ËpÚó³ÿ&“Ãíîëd!ì|BõØÆ1Û( ½a0i§hGŸ¨,;¯Â·»èë§z®¯-á¨ÌúJZI?¨™ucWÓ	¸%ìy2îë 9nÞÔ¬·SÆ+ø™{“ïŸûó›wûí>üõW|žÑ?~x÷ó_?ý|*ï¡ëc@ÛB#t|Lq‚1Áå3là9DÖH®µõÚÔ„@û¿Èœ5Z•
 RË§Zãa’7
QŠS–ZÉ”²ªàÁÛÄ(›¬lÝ@¯ê1…{,üó¯FH?å+ñË‘Q^çáy±èó,yåŸEÏÌ\p{jBÒ§øÛØfÊÄÐ·Ø‡9¡Ñ±š'¯<R£Á0ö%ö—ßSó¹y¸4'Ü‡x·8|bóéP=etÃa’ÅÕ­­Z(þÐ&¯BÏå°ÃÁø‹›ùƒãQ6Bp^ñù“WÎþ>ãÕdy¤¼­—õ¿c“äìŽüŸVwáïa<f|»2v9šn_f¯ˆ"÷ÍåGô›V&VˆŒ1¡Ö} µ—Õì/\È›õKB,³õu?Ü]Ÿ,(ÓÙÒ(=Y.Vru	Á•'¶†Î|øuÞËfÍ¯ÝŸ™ÏÇC,f^n^%F<dUÍ³Ÿ{qÖÓúƒ›õ2~{+<—UÀ£µ3Z¨­žÅØwÙù_œKb:p|ú™“aìÎ9ßÍÿÝl!Uä$ˆò2ù&ûÝÖŒ0ŒxÙ}€¤dˆÉbMqÈdÍ@ôêRûaÛê¯6¬ ¤OÀUÜ{ç˜È@ã5LÿÕË±õÏõ•ÿìÚ¿ÍO‡ Íþ»8„‹+uRƒñëàïfó„ÂÜ©Ý^ýºùQ“©™ø%m%~NðÊLà¬ƒFþÙ÷Ã¦]gØ]¡'¯ût¨áÂÍÆ~Ëð¸Î,û«6YÈÇoa›\(¨õ:sy/ž1¹WúÖ:óO‘tØµuæK¨Ž|™Þ“ÁKí1Óâ0ËæïâÏ€ÜÓ=›jkÜÚŒÀY·âTÍàßm±y;âäÇý©5ƒ§·dícÍfV[rÞ¤rvÐnÎh°îHæTÀ}@¬ÿ§Î0Ãv\ÏÐÞy¨ÕVô~ÒrÚñ¨•Xnk·•6w;F,ÚÝíD3‹»•l°öÚ	f&tkÙééY³.å±;1gH8i à˜ÃTq“2Š!I¡¶ÚR°B–Â‘ÊTbæ¼ý2Ä2*5€šVùyI„ÜÚÈ«xf yâí&ˆ1-Ôþ¬[MtÝ‡­Édw½^H–Ýs3—¹&73Fiñà¯jñh¢dî¦Êq=­ækž!ÑÎ¨ ëÏ|Š£(³XF7eF˜mj­_§]Œ‹,T™¤?”]ðæ"“d”S=yûÛ‡\¢n9;ý)†îL&É2X.!
	ÂyÕü6ÃÕä7¾=U¼â˜ò¼sãÉãª§]æGíí[Í<ÆÕ¿š™M¥™ì÷í¬ \Ê5“ñ}ôÜšÉræ—-æ1û'8÷vâ,ïv7Œ­’"]‰ý­úÛ¼>Ší2PW„I„I9+—P	¹ÀÊ!6IžØÞ7¶Œù&É/Ô™{&JJŠÆ'­¯$û²ÎM'¯vºYêTo6Û9	¤¦åÚÎO'`þð[^þDÏâzb\Ä=4)—"…$’
	 pjxJ¸ˆ€À!ƒ"!C1… æ2n ãÏ2D]7xXdÐ$H‹ ƒrˆH£:íG@ÆÍÕÕfÙ0nì{‡'õÝ`Æ3ÀŒðY]<Ÿ†Bb‰ ÂJJrT¥š¥jjºK¥8ÒŠ•D‚Q×¸àB.I}±Ê§™?¦ÓX¹KÍy q’%I-gq= ½=F±ðOJË#$yHòº®×5¦Ü”JQL¹|Ëà…ŒÝFÅ§ò×ê–uÓ1ë†t)6•?„3äÞd_:çTÉ4Ç÷Ýp-™¢ËV°þ™«¥øõç]U ñ•º€Õ{zÒ*Ófë:åÛ¬™õXzs:z“mvwå	³ýðt¬º}ü£­&wp­ˆï`Ce¸ƒ)FÜh‘*¨ˆ¤©ô–/W€D ÿ#£Ä*©Ñ”x•Å²ZèœbUUþûíß‰«Fƒ?òØÃ`u.³})ë.òÕ«•° ‡ÌZo‘>þ±kÙªU€ÌxT‹…å½AòI]¯¡gW%÷A—!ó²|œŸ?þ’Ä d»e{‡Ü7g–Ñ~œ÷bo/?ôë`÷ÍÜt›he•†½¸\ÐœÙ_c&@xÇýûƒ½ù(è™ÙÎiÑÜœNæóÎã<viVQ™j4YÆ’	½ÕRÁÌJ\8ó0üïÒåQ­ÙeùulÕÌ&j:õëà[òsÒOVqº½÷ÿýù÷·¿~žU?/Çƒr¯—p`ž¼z÷ùYá†Õ´Åî…kÍ®"p0
ÖœÍFô%;ò¦b2§ÌCòîÙãÆthsQÀãû­hü¡ÐKVØ¬BlÁDD™G!¥4þõî‡¸ŸºíZ‰Ê^-Tÿx
ÞÎ/v–¡{¹J(:ÔuˆWtH»WmºõF®ƒÍpM"£«šDÎ­O÷;î?~ÿðñÓgX+xî«%îÄ™üqB,ð4»L[<¬¯ÑNS<Ë –¡`6ÓŒ[ˆ˜5ÊYŠYj‰
3•"a]øJÌ¸ Ž1"¨)I«²RÆ‘¤äïËq?nÄï&Ö%¿æ9‡¬ÒÞûl=òbÙã&ù-GÆ7KC3ÍW~žbL7ÕóèëyHˆi,½@…g:H%þ]g©
q˜¬(u¸ÐXÂ:až˜¿ÇÄœY†[‚âœ/µß!7ÁÄÊQçF]¸¾õÀë»ŽÓÇ3Ž¹·œ»t€Ðº=©J¾²ˆé0…Ñæ…„›5¬y.3¾ncãz£‰W·“Y<®²ÂÛ«Qc»¶¨¢KC†„?û¶ÊÚÈÕÔ]dÅï'£EjÝ¯}X˜È©'ù.
o{=Ö d«|á?º°¸ùÃX?†,‡%‚Ž,™(¾ìYŽGñj"dû¬´^SµÓÜŸ½ Tþåe:ìlà[°!8Í÷ÂDVÐºH/9Æ¥¤h! ŠB­÷‰~öÁ÷›â‡§¢Š¨áã
A_Ê­¾wº÷ …´CÒõUÒïUÛtýÑë ˆF³5¹î$ëÆØ?ß}öÛCs±÷j–6ûyØB(,Y«‹Ì?ÿý÷†²Y_‡H€6Ÿ8tNumÄü^ÙB,/ÎÜPÌ:æË£~i*÷4ú8X¸æRÞ?tsD¹¡òxù­Ÿ}„õSRöÉ­ó*ê­ƒžø½ñ³ZLFƒkácµÓA2aó0›Œ'-…­Z¸Ïa}ZÊÇh†ØF°å „7	-m„ý]ÏË^ªÿc«kuöÚè
gÍ¼ž}²¤‹lÍT‘}²´fo¬}²¼æw!ƒö¢-¼AÐhžõù¿þí/¿ù×²ñ<QŽ4—bµ×¯Q6Ýh+¡§URÜ-ïYx-úßuËá;]^Ç,¶[ßù[zñ…ÖMt´?=xq&¦•ÐgP¿=ÕíÂsî<ýÓÇÑxm×©ŽNÐÃ,7QiC¾’’Ôp#uÊ¨@Ä1WŽP(‘ÖZh$ šã8¦’q…¢¹TR `U˜îÛ­Ú7ë¢7‘²zÿéo‘{P¡”Ctn
gn·P‹¦šÑü9_°}evöÖ×‰fVò*Ðy“Çžöub!•&¥m7Õ;\ë%9\ë¥w¬nËº M¸X—èÎÔãz•z™I¼œÅògzkhÏŽO"rÄn8ì‡wÒÙÍêþ–·ç“Š¿dB«¿Äªòë¿EŸnv[óóöÇ[½ü‡jÈg¤!Þ&«š-Ò0ô5)—QÄÄa±1ER4j`²ùRûñ“ëÓV¥ãkþ*÷>úeÿ˜þá¹Ü' ÷®KW‘r)ºT^_Õ/á¾½³Áè5}‘µg¹DÅ•¦÷ØÏl²Sßjõd'_Õ—DO©y´«ìb^Û¸,‰47šò+M/¯(Ñž.Ù#_³Ó{¥|#êcW×]ß*ùF´Í®<©ùFUÊw¿¦qP%O;ÎO;ÎÏ:>?VÓ¶ª”oDLî‘ïøþòŽ×_—þ«”¯yÿ9ØdË)‰4ß«Äk.X¥x×jn˜UâÍèÚñšTN•x›§]¯¹ÙW‰· ÀÎLö]Oü•[ö»•4
´«jä%ƒQÚ²M.Û­†Öî/»+žÆvjôºšÍyw‡©/®£’ú¹…Úv¤–•„¼d—‚@^¼CM  Ý¡,o](Èv¨½pûÊB¹xë©Ù'­M´6Á:Ô&êÀF*au 	(•—ZX
µÀêÐˆÑR”rh”Z§F¤‚5r–;WÅF{2n26dÞ‰Äæ¤ÝÁ:.)¯ÑnnE ìJ³Ä¸=×+ê–.ÎkqoÍ—Ä”u=\
Î“ùdäzƒû7ëã¼¡SÆ².]Ž#S§†ƒÅS&l7²ùY‹IŒ"ÌùÕ}i™¨7%²«ÌQHáØß)^	9Hv¬ˆ(¤˜nbD)‘ƒ‡¢òíÈÁ,w¾H…5ëm\ _pJÂY8AÂîXX~Hg&²j—Ôi2×¦ÕdüÎkŒûL\c£.“úÁ•Ö›²“çYî¦Äaéñø«êô|Jƒÿ©CFÂæäüèÌo]éBý€‰©Þõÿàó»F»U2ê IR¥CR{ÈA7
ÁSä¨ëT:RmS*¨6X{ÍÂ€A©¦Ì8$Ò´2ÁóI¾H‚jû+!Y­I@“#ýºvˆu‡$ó$Ÿ”\«£Òƒ@^ (9¡{íJŽƒ’gôfÞ@ÉY@I¶˜Ï€JVI¥„±Z”³Zc-áThfS
G¹?	ŠÔ#ÆBÙEÇŒpØ¨
Tò1¯üçB ãb Êãl°(ÄhÕ"yÉ½Õš”÷ûOKæ!	‘|ó8SÞ!¬&Þ„„…ÊI@IÄYÃ™MBÅ…§˜'Yö¤?»W,´¸¾‘<‰ÑYëÁã`n3H^quëQBBå`‘%µúó>c.–#Üv% ƒÔÒ^³á,6K÷GHÓ´Êíð†:Îƒ:'	ÊŸÓùƒzÎAtóß|Ã—ò_UgOû£vÖSÿöÎ=;Ž{&§‚N†¨%Ô:Š1¤Ø9b4ÔÎpˆdXˆ”)š¦ÆàLifÈrB—5¦U‹,p=Ã¬`ÜÙi%s0ø4YVhÅÅâ#èÄUËO²wàuâÁY6j¼Š›ïÙAšºY\<–=Î_¡¶km¬®ó
¢à—*6	“²€Ù$ ’¶Œk/>ð›ë,°rrJØvÎèœ–“r×Ãµ§hJDÉ3i½K¤žO™ÔT:A™¶iÿ?Œ:Â¹Q˜Zl¨`T Ž±ßÑ.u¤ 4Ï©â0nzïé½Ú]J¶å!@JAi‰¬ ÂfŽk¾eqJÝO½ñœºï\n“›î»¨î{ŽtkÎ‚æbP* Úë»À¯bFpŠeŽcFUÊ&ˆ E-“)QHbÊ¥…ÐäíOAfWãm´]FÝFÓ¡‹*6úî_Åò:V1Îöó¾-&ªœ•Ì÷¹Ûj[
e­€Öd|/öLÚ\ØêšrÎ¾"âÁc¥éL©„2““ØgiÍðç•žË×p-ÊPÖU†˜@„¶:.x|qIJæ-öÌ}—ç›<”Ö,å‰BÃSz©¸Ï“áz¢œÕ[¾k'ùŽ×ß9_¶ãúwÎ·­é$©”ï¸~ÏžïÛñú›•ª»å_]¾qÇûùÊ—ó^´<Çu;%õ¨QíÎF/®(Ä kŒÀÍÉT<„4yZóQoÎÿç¿>ÓºO¸¾}sò¿ü7ñ9o|ùeïüßÚ7ô—˜ïb¡Žg3‡;b3¦ ðVYš¢ ±”…ˆSþÒ @¥Ný	<5)·¥Ö@Æ,T0¿¾{—¬.Wf[vÖa¿Á?ºä]FãÌ
½ 7³œ•¹ð—uw?^èå #˜‹"‰/BB¼Ÿ·À’B¿ô%æ‚Â0æÅL.(D 7sa‡¿Å×¢Ÿ¿íê²åÌZŽ}3nš¹OV?¡ý?},ô’úéÓûË7>>Ù±»€™²Z:0þo‡;DVìõ†®×„²ÉA,&Ÿ§Ãåý`¼¿¸ñ9k·ítÞ×Jò‘B¾û :Ž‡ä%×]4Ð•bÈU™/¾Õ{ÖŠx·j\Fð‘¡òßu‹h‡šà‡çöÿ¬Ó‘¹/R(|4À×fšÆæ¤®ºŠR=áPð‚yµ±8°AZ}¨M+ÝìVåÉ¶F®]e$`´ÅIÌ´]Q“û–ó…ŸZÖ
?µ¬™~êPõæÞL¾¶ì·.Õ¥³Æ±-¤C `æìƒZä;n­ÆÊÚÎh§«xe'0XúæÇŸÅh1ÞhÞjq˜§˜PZc!=tÀY˜¦\j©8"Dd±ÂÐ(Ê¹“NçqX…ÑòîÇKQRÁˆ©gÅ²¬”µó¤8ÒbrÈ~émì—$ù°ÈËt‡ŒòÂ…Œ<h]E>™å,3Å)r¿ò¦o®J†“xjQ<ˆ-§f2
þÞ¹«°›¤¬k7AŒ1¢h«f’)ŠâÆY³ñü¥¾ÙN×e;ÁP_¿£ížëí§0üém¨Ë±çg´.‡«¢Ç#ÔºLsÝ”ü¥Ì©†6Ð÷`·d/×Ë±mj›]µ´-åöÆ¶×°€Ç:üôæ_?£—ž…¦
¡B(¢ ÂÐ”Xå0‘Ä¦FKSÎ­J„þhŒÅ\ˆœç©ª†P§L²ûÊ`èûŸjbÏ5a¾oŒä±0l\ˆ¯j¸¼ü'p}ü¡[å]‘ÝL6dkä·yŸn ðÊ  æ«ºíàæñžnf9¥nÜÏ¥Wž~ˆ€¯š6:k´ý<(”¡Íí¿…ùâÀÅl	4xxÏM/Ø«³æ»Šn-š¤k†©¥_ãKèWxfÄ{¤ç‡Xxåð,8Og¤µ„3%¸%ˆAáˆkI±eBaªÖp’r£…Ž#EâNTâþ%»¥Æ±i¸ÄzqvL‡ÎR`˜OÜ['‚Dr€£¼
„Hë#D`)aD ¥X Jô‡8B³BŠ~C‰×…Ý2*‹÷¬1Ÿãe†«˜‹¬ag½ó’ÿ»TÖ‡7úñüôãöÇ³'¬B„¸Ý‹ù=0”Xv2ZÏê¶OÜáU°NCOK¢ À&åXA®d
12EˆkDFÂ<¼#ÔR¬RKyªÒÊ
¨«âñÞF8•©±¼&xVÕÛc« ÈÞ½¾Ø×+8ö:ùuõy–¥;ô:nðG5üõýO¯×°m5ôërìø&ç7Ô]¸±GF«ù{ÿW}U¯÷Íü:¤!»oÎ,WÍGANEšqÐ¡MR5Xùž§³Áxuæ`»VŸ9f¨ñÍ|’.ÕÌ½ñ/Ïá¬âuWÎ*Þ8ˆ·ŠCÎ,çBŠ"¥¶Éþ˜5„V÷ýËÚ‡çDG ¤ÿéÇ$ù±0ƒG•ñ¿¿-µŸ?y?©ðìƒè/ï?¾LÀYZ÷Î`Nôêe¨F`_­bS?ä­@¨®Æó_B,qx4!¤5FóC´›-žNuy#KÄë:\^cç¡w¯V¨I¡…§¶è¯?üó6ÈÞô_=-ª•vC¯½î4‹´	-º‘l$5ñ›Èç™»wß¢Øcµùòk÷mª-	âó2Ê;r5YÓÆÛ~·w}tâ
Ö]ðm©_ÿñáãÏ~ákÞœÇ.MÖð2	s²xš™0c³œÍÝü±ÉµM¡(}÷TI¤ñMMŸ“1¾c£ì;¯;k˜24„R¼®+ÄEÃ½Éë“Û¡ÈÿÐÿ»hóÌ¾ššá»óôÀŽžš]Ó¼¡|‹…/É·Xú’|·Åž2/¾ý¸š|bè·Ènn—
]gÏœt<ygU¯áPO¬²Ržk;w'›ßLF#o–UÏf]ª–ÃEÿITn&ÓCøÓŽÓ~Ñ›»¯"z?§-Y­pÃjfõ’¨È•Ü¾Ó&y.³v=¡#%×N.´Q÷ËfÝ·v#´ïE=Ý=/Ù·“ýñ$üçŒÜ$±(MtÔ¥†Y™
€ H)†)ÓðÿgïÍšÜ8²tÁwüŠ°;EÐ÷¥ÆlÌX”Äf_ªJÓRõU÷Í×L0™úõã »–L$UI™	øñ-<ÎùÎâçP­ãÍ}ï$e˜KÈ•P^)‡!ä ìÙÎ"Ð¹™År•µj øjnLÜj´üîe[";•PÉ…üÃßúÇëìß~ûùceïúá§˜‚q’…—¦ó½¹6Cæza£˜÷~»!Ì×™JA3?bø„Ù.YpýJ4LjÕÛdÊ|j¢R÷ö&v†®È„¥ ä´°Æê¼SÒ9|ÇU|_}ž»Q4'®i¯º@„SxŠáßÀuÂ{r÷—¦

¼ ˜yè]Lø"”@qí‘)Ã¯Ú$ß+èÅÖkÍ%Û•zþm<ð#«ù(œýrinA³(Õ«éÚœÃ+w¦¬ð·ÈXß©GŠ*pÜÌ:ëp‰Fõà‹¾µ‹ŸÔ[c¯Mlm”vÙécˆŠµz|€ yÓûAmãü›ïÚÍ÷âÝpA†
~ZÐWóD\Èç³à¼ÞŸhž…õš¹¿ã¹ƒõðô<]¢™+¯ró÷1&ék0+?«i÷TÓê3›F/}	 Í*ØÂn4GÂç²ÞbÆt5:¥¦áI7¤ÂÒ–#”Ä2
{ªðRqH&š8†3‚ ‘•Üp$aÀHD¹]Uãu€·ÖÆ+Ù¯jÔŸ5‰2r Â *_ÝöæèÎþj^>ï÷îH ×ïØ¸ORÊ©XÍ‚x„¤Í”!áTòVxråh­Å³·)ø²¯œ¡¾à.±Œ':®<Û¨/I)'x=Ž {q©‹Ü$Ž—Aâ;L¹.ò›î™b=$]íj…î¢ÂåI.¨‹ˆ•P†¦„P8Á$Tá6Di
£¬Wá½ŒcOœïrÜÄM½rF!Gl=%U @l%#•èŒâåvßìÙ—'¥ô}&óbnœ"`š‹|ùfšûæÙô­÷@CˆQ
AcíYŽbTdí™"…@®f{´1X[‹ Ø#`¢!ÿm¹º%Ë®Ž.]Ó.U˜@ª« ‚ÈZA; %D+–o|Œ$iœ¢›ªr]’‹“ÁkO÷’²¤1Ì·¯®”‹MQXHOôÀnyrað$jFPtÜ)d Ð@BiÔÈpf±ñÀx‰ƒv¬Á
2&<±Ž!ËŽsÇðM
)ÀRU
DÀšF	CrE
ÎZ&¸Ý/nÅóËrR¢Ûg”ß´V±”ôŠËËþtølŠ µX(EÞÏEÌ*Ä© šx%¬UÎi¥­§F"ë÷B#è)õ’	ëˆ€ßÂ{Q¨2çd?»aBÄ¨­$¨Þ´ŠÙ,ò õc=ì:%zgçˆ×dƒbÉjc¬ªRWƒöjÃâÀÝt†ë’„žøÒ|´‹1^²¶ðÜÉ!Ã&¦i!¼·¨,õ<RèIT
¤e8¼FÁ¡g>¦æðN`+¤ÅÎJ@4¢ò ˆ°†*î#ÀqH¤²79ÔZ‘TÅ…‰Wó3#B!mægF„Ñ¹köt9tÓZž_ìhzIôBõ•k‘Dõ §’Dƒçu¾#Å5Æž9c­ÃŽKÝê€8êLH„8AÃGÊ#A%çÌ,€A†Z
Õû¬bú|6ÏûöÎ®ÑíÎ’3½"„‚Z¹"k¤`5½îRp‰Zë<ƒ›Óýj…G§ºJOátüyœîƒD§;m¦þ¼ˆ0XÍõú2ÀÒÂK¨…<è%Z lÔ^+Š8¬ŒAË½äÐz ƒv" ÖRÆ‰±í-
óé“äj
‘8U‰ºGù7‚/¯ÌÍŠðqç?~|ûñÿ†,«.º5¿jN$îöUˆžŒ0(ùÉÊ•h,èêh*Z^-Û8~ßŒ½ì‡¸š|3¼ù8÷§½dË™§zYž&©ôÆ@7ÚñRj¾“‹=|>Aô$š	§XSŽ‰BÍ`žp	™C”*I¥ÒB*N‰Ð—A€b‚C¢õM-Š’eP ŽW³s°@Žš×œ™”XžW½d-æxat¥úŒ<ÙóœÂè…ê5W%ŒYÁ."ŒšåwŸA'²á¤§ž(Ï‚¸Q”{ ‰àZi)¹”ˆ`4œH$òšAàÑŠQ wEü[ùbÕÎ”È^¡^U~ýï¿Ïì’WOáÿó¼"ýáxà–Ù±êºëU6“‰-û]•eY$ïÌÇ¢|{$¹ß=Á‘s6æ©æÙiÌ³—Uó™w4q‹&óúõ·×!ïDªê…! tÍ=¹à‚•Ìà€PZ½æAÿf´¯o#Zs†NUºž¢ŒøÚ0/YáJD)Õ³«6O¢7íUOs™	)‚D¢ˆhfŒãŠJïµ9§°:&5!ä< Œ½±8Ð4¬]w]nÂêZ„•Ø°ît/I Z»Š#&|ÅT%èˆ¸º=Âê%ëgß†—‰@O½Ûù\âê…ªd—WO¥Yå¦xž;9Â¼ƒq‚¹œk¦¥rJî³Hsì¬5\q¢ˆESbeÎ1‘KÎ¼ÈØ¸)Yö„"ü\&Ñ}Ùüëã]
á_7QÓ LÞþò!‹Y8ãþÇ1"ûù)>œ0êà1{[|þ¿™+JNÕ94…«,2Y²@ÈqP…ÖJ£+W| ”R2Ð:X®q0o²åÊdK<ì\ºPxÀO [Â(ßh¹ˆ(˜>oš,Eo_*ê-Ä>è*Æp& :@¨P\‰ ”rÒIJ)‚Nœ3b—·'Æ¡ýV&<[$Ú®î®1M&ß×$ "´ÊÐb¬ÜÛŸ`ÎZ3óé-íZy9à'‡>OŸ"múç‰F›^M4ÚL?gÖIÂ±Úk.ÖÄZ"ŒÃŸÄHí¬HhG%„ä@@Öèƒøð(Èa Ü#þ9²Î÷G¢ÿÍÝ«/ý€ÎÏ%Rº¾JI±µ¼;üŒ	²*)ÂÓà²YXX`€i»z«çíæý¸.1ÁN¶&5îåDc”oÞõQ®õ‰³Q–c®õuîla{ÄÎÓÜÎT3.Ô
hB¡CX*ÎÁAå0QôHf4“žL·— `¼c–ÁÁ¾,7Á³&x ÉÁf0¾–YL
‘l^—Œµ,µWðÜ4”g=ôäÔbÏ#z¾ee)zž.OååEOY…äX‘z¼'ç´e+ì‹æ,…TA³	`Ú2Ä‰ƒ‚)äŒPÆ( WA–3BµÇÄ;*8%vgä°žÏÅ:×ÏL`žEæ'ù0³a±ýøA¼®?ŠN‹ª|”Òƒ•ºK},·*:òU]¬)Æ2Ï‹8UžÂ°ñëÊê’¤YœÎ L0ÿÄ}íO£{ÿÿÜÑP:Jæß„õ¬^gƒzØÑÔM"ï,g'Ø"Óy`ª‘¸^ÕÚ‚M)3b…¬Ø¦êÕ•ñØÆEY«Œ=èßÔ ÆDÊN‚0ÝzŒe"ï,æ•-ŠkeAvNÝ°žÂ¢ºÏyWÎå³¬¸Ïg;o‹Åú²ÈVbˆ»ùX(;ì²xl+ÏV|Èu­N½WUÄBÝû…SÇUÓì©A?l/†¾•uµö•Ò"¯—Ò"n÷51Š×BÌ	¥˜5í’„
Z0”ÓîVoíQE´Ð÷/R;Ü¶ðS…4’èÄ ðrRûÄå.öšÜyŠLn5È•‰dûÐ¦(Ò¼õúço>þú	ô B'Ðòãi);6±ì»ø6Û³h¾¦ÖÏºî
U§ÔIÚ(CuR¤9Ú:W‘¤¡úÜ»ÁE¶&oÝŒgØjé=d1 )¹Æ@ˆ\ª Í*é4·Z,=% é€í4€ÈA¿+ÆÛ2T¤òš*bDbU¸cÉñç¾Ä±êóÄÖè0¶ž×ß¬#[jäÐÀ€Ë2£Q>êVÂ¡³-—UAK<Ù(åù—"k6îe?‡Ô©Ë†–“…C«u”H¯†=õ/J9ŸE,õX‚²°ø€´¦Ï£ü!À€p(”Žß—ˆÏMUPÌãGWv'y.[”4ûüa¥ìh½tEÆœ,*ŸV£ñtÅRª+ìÄOãê.
°zµJãÈ»–SF›Ñ<åG É­‹Æû-k±<$ ,¼š¬7&~i‡±â$»¤6cMy‘6UŸŽ®88)Ü&Îhì9Àþ{Þ¬ŽáÚpÕÔ÷<A*o¯ÓªVbt.”[P®žCšãy>ƒD'Èã%“AM¥Þ
`LÞG•‡‚rË‚NÊ 6@;Ï¬¶ÌbÆµuÈ™½qƒ¢”(îëÔMF¥ååK¿èY›•ü~iÞgýwÙrw6ý ATÄ¯{—½J~¬P¢©B	¡²dH3iµ††-íüËM[áÎí\Ë7‰TJ$ˆOKbµ|—“K‡½À/J:?Âg7}½‰a¯2-T —N2j¸£ž‘R‹)Š%þ4åÜPÅ•
Bv¥À½qÙ–\6VŸ.{CþÇñY$N
Ï|b>û-hçç³c7ñå_ÇG³ÌSÑ’–Ùü¤´Hi¯¡qÎ*@ž1á4£RzÆ­†€zˆóc<Ù@­(ßÁdëW?+îûãqéø+Œ[42.«Wº‹±¦Í^U>³©wæº‹w2Aˆ MÇTøÈ·ÇAr¹ŒÒL[æ_œ‘nxØ]òLî¨·ãq /§[¼ù)ìËS9¥–‹>•erqZš†ÅƒØ»±å…lÓyZ€ÈÖAÎÅöìã(žÝ3¦Zm¿x‰“)¾¨ÁÝ¤?²g9ôL?þÖn»ÏgRïä“K"˜‘DKGaLí*±^`%rAQòÜz>	 ix¯¤ŒÆÒxj×eÛ9GŸÞ«iv¯F6ºVVœýZc×ì]XeY&¢×BDÄ †°ejUJÏÁC>ù\ÅÑ¥Œõäb„¥ŠD1X+½š—®XÄèm„I}Àn¢äDô¢¤•,	ú¡ïß½Úú8ŽaöÉ\ùr]Ÿ ªžÖ—fh­Šû=ã—mB‹l<qÊ{ZîiMßElf5ÍcÚ(¥ãmd)ÍPrØ¸Vc,ˆÎ'çã3œMûqº%ð3Þ2&­‚iÎºÿèŸ$ÓŽ75oÂß„-öý¯ë¬õ(ÏH1³ùù<#ÅIQªt¡€³vàA`ˆJ;A¥Qm¦„q 9:*¼äá;«v:mˆ±Þ@¥­ÛY²ª
Q ¶_Œ*ˆà•IU¹é—97Ja¯b\é¨Ž6îýý6¼j·~þÕÈÑl9ZÆ}6G­cEëèÒEèÆà½,ûuZE|ªºÛ2B™ûN£ç×Y?=¹+Ó“T“ˆŸLÜt6eÏÜ²Ï~(ágeÈFÇöÕÝ(/êÑõÀë}›Çß¾›•=¸Á þŒÆÏˆ)&³º*Wg<›ŒóÚé|¨c-Šm!¦eŒH Xe`éæÖƒÌÜ²1ó¹˜9´øë›7Õ|{ý|§ù³LËÙ¼Q"¸àˆr²{A(hÀj«PÆ‚fOW |®U&B°j¦ÝðºuYKïtQ.î’„?ÀY3ñðå™)†ž•mìÇ©à$Oº’X9ÝÊ+“{NÁMé#\7íE:­Ã&l·‚ìV{@±néÞ8èkýj{9øc¨b{Úºýïÿý‰¦…N¦mæ4oÝ.ˆd!NÝ´?ÚL¯nüßaO°§wéÈÓåŸãR¬Ež¶&íò»îÐMîÎð²0—‹ìÈ‚—´4aÇ¹`ˆ(²˜Òð‡C
9åa wÐp•Ã˜èxÄ€€*PÀj„Üeª ×0F‘Ö¢ûXSJ–éÙªïvÃ¸_ËïSãòºÑh}	xª_‹JûXFbwjÉCN#L‹9>·LciZ2•å(³jª²|Ô‰(’¯æ(-Ç*s’º,hóOÂ#Üp¿™ŸÔN}·iœJüW§&cFX½ÔuvÒ¬ºU^jt\Oò¢NçJGZåwž¾ÿB–«z¥m]Ñq²˜^7¼ Ïfíz†{<Û~òe[Oóž,þ{PÏVNÕ¦óhµcÓQÒ9,Ggò¬tÍ š]t¯_›Þ»Óçô£¯¯ûÉ%%$h“0 Êµö*fGaZ3§1³’bEŒCŽ[„,cÊ	Î2”]‰!ZJÊ¬›Í×ß*CÄBe;…P-|:çu)"M}AwX—/R•àÊÖÎK'ãhæMñÕ-Ü$<9ë/õ:ö6Š{¥ÛNÕmèf£“úu	’÷Ãt™º»šhV¨˜¸»ºl›Y`«¨°†ñã\„‡ÞÂÉZ\öåhÞMÜÈ\öJÇq"–ÀT‹!Aë©2`´Æ"¹"k!¡§vÎ¥õ·ð&wÏ`Ì@œó“.Ð>­L¨Æ8A_±gè€S%¶
ªÀ`O;“O\å¹<HðÿµxÜ·/Zã9­:ê‹ºï×ç.v€m5]>æ£6t-­Hí.	…‡ù©hÓ}ƒàý»wŸpªÙéiŒ[Ã67—‡k×—RM[ÑOâÑIfT¸}ë¿ÿúkØ\˜¸î5ªKiÒ%^º_%Ú¸ŠBtÔôïæ¯%&X%’-¶"²×Ïw<0-ÎÎ8 º6Í§eBèx®Á1$í­¼40TÉyªIy\¾x"½y?oCPƒjñD–í[èâýiI—¼×EÑæ¤Ì[/ÞéÄó¿J—xŸ0ïÃNÚÔC·ƒ:1ýÆjÙžº|[~ÿ½Å‘ÙNÜƒðDú#6n…>‘Iî¤?bë›ô(5ŸÉ.ú÷/5ÛÌ.úÄ³óž­aþ9Ê£=-òqÐp‹û¿îÓ’½d…³{¾þèïƒòû¿=ú–yü(†@•~º[Ûe[ÜÀÕB}Ü©©ÛÊvuD¯ÕN­mKct	åª“îxê@\F?»ó”œòÇ[ocOG‘GNAÀEÌ¯ æFN¬§NCÅ‘e/1RZ+€2J¤g³Þ6
Î«È¿>tmj{Îß†Ü¹¥V-í¦ÚBZæé™gæ	3ÆÄåŒ?Ù«Þçü»ò«¢²±Õc¦]gaKÌb½«¬pß­gâì|QnRæõš_©A>º«"÷b~ÂuRi”Ýxu9€¾{-Àåpaa1œÜÅ¸³Ê \Ù’«Š¸áK¯lÃÖ\wõÝª¹¸³j^”äZ³ÏsB®gÐ|Wç4ºB±Ø°óW™,Së®ÚˆFˆ¬”2† BŠÚ%þY{Ñ–Ò6ÙžÃ@|†[ÀqÌÖNÊ¸pºC¯í)ù÷¿Ióp˜^J³2+ÓùcîJCdj»†¶¥ýµ¥Ù5ÍÚšddM5•¶6©¦Ô›vˆdaNmiuM± ¶²²êrn\M2×µ4¥¶¶¡¶3ž¶³š¶3—¶³“¶3¶µŒ&›D“,¡iÐt#ææÎC'c+lcM³ˆ¦Bí™mÍžéöÎ$dkëf;³f²©æ(3æ‘öË#—GZ,3Um£<Ú8y´UòhsäÑvÈ£G[59¦˜Û›ÏaÜb³[>‘³ëÖKþTÖºjû"žêØîÍzõÙMFAß-¯äÕ©Ãú>k~ºï.ÉW7ãê<n¦Äãë„mL$NH$!Ô’ü©­%ÚŽ	UÎ8.¡ Îa#|øJsˆ$`Ì€Ãï,W|3&ÞŒ‰×cL¤ 5àQÄZ7&‰lVgƒ tæ÷6O6&ÞâM6'bpZÝçg2'þ£MŸ×œxöÜe‡¼{Þ‚=oÁž·`Ï[°ç-Øóì™b:½{Þ‚=µ¼^K°çåKõÜì²7»ì7`—56*sÖ“g¹Ô€C©$0V)!±PÖK(QVh¥U’9À‰5^[£ˆgÈ{g4L¶+íý¯‹[ñkKµ².î©«,tóŸqsæWÖcò5Å.¦qvÃÎÈ•¤KkÎlü:kXCUf'ÊÌ¦Ù0·³yå5<vtxâÝÊ:Éu¼ZŽo1Ç§îì5ÚIò%w
ÙZâd%n/aâèl2Ëã{38ž!•2¬¥½qk*åmÏçLÁÃ=Õ8ß¦¥óysÌýçêX$ô¶l{>£èE“-@±.ó‡—Ò¾‰dáÇÎlr-‘A•4z¯õÏY¦ya>½ëkO¹1šfPÖ‹ äÆYèœšbŒ ÒsÊ8ÀTðwøÕz#´<S¾»¬›-6àpæ»¹Ïð°³¶Î×QYãª*€‰A´*=Î»¶òÚª=tV3ûlKÁSáFŸkD,IPÑZ† - f+Érä€›+g^’á†%NO–Ã0<S®œófOÙ?È“êÏ”éîY3çáPªózFÛP±dËóS”‰Ž„UÕ¦·¿|(gŽñ*^Öù¯"uKËiç%¼°KÑÌ&1ù}‹¡^€òæ»üÆ|—jämÎè·åì,ÜâjZ*›z*_d;Çâ5øúþÄÞº›·,‰ü1àSÝJLû#Ÿ·9Üén¹ôô'÷Êæó2TêÖÛ/Çw‘<)Ï˜Ðd½xÂ©^«–ôzì¦ ühÚ þM[Ü_ÂWØé³äbá\(ì3@hf¥7JM±shƒŒ³V{Å©fqÁˆEŒ1>"
+lŒÙå¡‹&6SººÜÜËÕê2ÄÂMíkÑN¶êMØ¤Þ}´PÕ,J;S¬Ìe«¢å u3ßªq-´žãF)²ªvWu ïŠÚ×™_nÈòqU¶+³UÉ‘Ø]èX÷ýécdxuÁ­0Ð}ýG|åµ†ž­.TƒÇú£»îP™IÞ„5Œ²ÞýüºÈšîØæÅƒ]YL œ­z…à¨Y@KFÛ–ïÚ|CŽNbR>è_f:|šýUtKk2wRÎtañœ.kÌ[ó‚²›,ÒV?NïóÑ¾Tm­uuÝñãXM¢× ÁquXÜÙµúLO î.ît‹0qÄZ‰—J[˜Öˆ!¸¥”8† Ž;Éƒ,¤k˜_øEžÞÞ·-ð’K;D‡ŸZàµõU]ƒÈ»RïU¼)ù’EÞËð`ÝDÞª–ÿô!˜ A¤’*e°ÁAöj4ÞPÎ„%‚d2F(n”ñ”ZK”åÒÍáy÷aMæTÙ¯õ"÷Š¼~%äæÁULD%´êÀŒê’÷"¬"^è^ld¯ó!^0å³‘‰bf¯¬GI4rj¢ë’LE/"f¯ú>þº×÷]Y€¨SÉb³¦_ì«Š+Îrý/gÂ'yY©?Él,â~Ñš,9Z“ ÐÍjŒØF®$›Äà£¯‡WÏïbq†ŽÚ^?®Y=›‡j®Y4/8Æ…/<Dó)‹)Lm	æÜî–xê»îWzy½UÈÌ¸…X\mˆÅ·1q•áOz¯z…ˆ{pÑhK|zˆÆ‰¢Ÿ;D#eïoÚómUf_Õ˜KC¼â0/(”âøËÒûb)\ñiZwŽ¤X§?Õî3÷¥½÷8ƒ“ìãN0‹%ñ -)ÔP;kô "¯ó'(Ð»XØ…#g9ECFÛ	ë¥÷ýñ8^‹	ªTßd‹ufj<ô+;ÅŸK«n²Wµ•hò:+ï¦ßÅßz½Þw1 í0ð&+) ÃGX@N·x\+&²ry¦å=ÜÅÆtÃx6kÎÛÆCyóSØ—§²é,}ª%G€Ó¼‹±O-ÞúÒ¶é<Åœ²cã-#«s‰¦ÝÀ“çÚ¶3KØ‡?’Ûºo×ùþm»Ó´jÞµi8céDV'·”ÎäægNt¸.U›sÙ‰cr]ä7=á5Úöžð•OÓ_ÔànÒÙvQ°žgPéèbª²˜6Zb¢1ôp)ñÈZB¡‹1–á¬aÊ@h”‹<qSDEt±]bú·°´26Á‡UEù:tÃ<<‹¡…)“#GaÄÓ"a·°þÏzw¢ÇH6îïú@íb^ârÀ’­ÇícØË ÓÃˆƒÇ¢_tÊíîe¿Ý»‰’Ðe‹~Ëoªë¸& fÓ|C*‚à|êLÌ“<zìl®¢J"%Šk*ýJqUeÆcËˆ‹þ¨ºSýA/û¯|V6(ÊàŒælªEd#÷-'½hÐ±ý°}=«¢<f“I˜H˜è"t¤èCÚ™‰-ºÿ3SeÈFÙÕ_ãµâr7™ä“zyá—WáãòY¾.ÝrÖy5TÁ+ß…òzYI×™Óttïê™Ç…Û‰®µ°¶ÐYù‰|ÊÜÇ¼8¶_Îh¾9“Î«²UI\Ý°UãûìÎÜ$<„°«{ºêÌ»
-Ð.zŠ“‰á%ãlÙ`¨Š¢ï¿»¨×îáá¡7™K¿Ý~o\õÖA‰Áö°J€1d-½
£Œ`,V2¬0 hWn>ánÅHºòY*Ãý°Lœþæ‡eOð¶oÁ©`O†ÇsÒÍèù´¶á°CÜ¿E÷ûb'æibIÜdŸµ¦õMçÄ‚fëW…•KYoÖy’’i%>XÀéêŠJ]° Kª¥f!i>E%% ãnÎ,»‰YD&ùà¸^îNœÅÝ'Û÷ÇÝ¿	´Ç_ŸÆaõÇÝZæˆ»¶ŠÁnÑÍ à±ˆVŽëå.ÚºÎeïÛ¥H2÷C• †ai ”A‹„W@!,È	á™¦ŽBå¡\RÈ$äžb«ð®,7Uâ¦JÜT‰Cª‡ëª’d»*Â‹³ÿ­ª1¿«ªamMoÇÑOo)>^™8ÃÍ¬K)'ª?¥2±Ãvü'T&.ž€h‹zq]¡d[µŽ+ŒÞ9A³€Ñ7ã¦`|Ë
Æ1Y
Î¡dhÄ `Lê	\,$ÇXMbJP* Ðá uhM¹BZ+Œò^c1Ú¡d4ðB}o1* óÅf*ÞÃHP/þmy=sízeÙ_³6dîwuM¨R¤¨%k’p"j JÂ$GÂÉêäÍ>}^HIcÉ9 åîHý3ËÃ÷ü,p—ú®Ì| ½außÏW?ßu/œMû4uaÿ\Vò<…ËJÉ,`Š:¡@HÌ9€b%ñ3í€b1u€³{Á±šû DsJí®œ7Ù³]öl8GwY4‚ìAbCöàuÙCÛÝcÜ'{nóHô"¥Ï97és½Ògã–~Z6ÜCb1-ØNÄ aÑ{ Ð Þ½W,æYCk©ˆ”Qâä)å´SLXæ Š÷ô5ÝUáí¢¸yé×èÇ»ì>3“Çñ4Ïþù¡r3Tév˜°!¥Ûd¥/Û/ÆõXÚÖÝdÚ÷e÷Ús± üibz˜Ð¬óÙ=f‡çÒ‹EÛK§Åü4†Î¿ôÝCc¡ïš¼’hÕÝûìýßÿñóÐôó4÷:;óysR‹Á²_þ÷»_ÿ/ëJ
Ehõ9°¢°¼èž™ØÊ»"
¼þç~ïn”«;ü¿Lò2À›wåÂÞfn‡d1@š(ç%k«äH@±ª~!Î\Ñ¿BÂÃ&Ýêwa+=ëãsÝÙ?RÀ­-óTiFPë*;¯öÙ›íâ¼CÇÃñÔMzõkÐ†¶z½R(Cëý’h;—ÛÕWJ~¶V}––åÏáéM‰×ªp]œU3éÎú‡›Æ‹›÷ËÜäUc—ƒp4Ü÷²Ÿòû±MŽ§<e\ÞßžF}ÊøâhÂãGííF‰wñi£O§Ð;ö×n ìFIu<uÀ G}È+ZÞm¢”ãú)ÆŸ•9ôûÈŠ¢qL_)]£Ž>zu1àjÇ«1ùÅ42bÀŠêOòî]•Q)!Ú²lŸ•yµàU6<,1-_½÷ÿõËoŸ`òtÚÏ•Ü8Ô»ýüiÜÿªg¾‹’ví®Ÿ§¶ÿ¦6­@qjëê‘¥¶ßuËàž”¶•Ë6µçiÚ!ì~îOSZD—'ß²mu†	.?{ñPØ¹¾¿Ž§9N{wŠJm ·Z
L€Þ†?BÌ8,¸5ƒÌ1®Ž0D9"Ê!¢È!"¹"7•ú[R©E²J#ë*uì…­ªÔ$„È­éšéæã?½RMäM©ÞÝWÊ=íã•êä¸°íºÕBÍN¡¹éÛ7}û¦oßôí›¾½ªo'òÛMÅ»á1¡ÌÉr`©iAÒPÎÓˆ:zêh›Êz*eCkO%iªï©4kz|*ÙšBŸJ¶¢Ù§­©øÉd-ŸUSéO¯ðÙÐþÛ­š®2!åS…´ŸÝPpJ´SŒ–[k&ÜB-ˆ'^ñxEQèð“RœæÈ1e‘%Ø*HÑR:m¡ÂRJ/Z…x•‘Ý)ò]¶Øˆíåaî›_±ÃiE3WÜ¯[—©š8€€µëj aNeó¶ ÃIÍ&‹p®›‹»uzIÅÂˆ™¦/6üœZozÁ¯V=/C±J8¥ã´ÎÂc8gg•®}Î£Þ¢¿§‹ ûö¢6YÛ§Þî™&µ®`jbã &¶^bÌD‚éçï»™,[×p¯±g
ü;­(Ý) $†ôIè‰ÆÖY<Ò@¤L!!‡ÚKNÂ?1zŒuþ±º]ŒùŸ€@Ð
€ˆM Âø: I¸Þ´€Üé„£ë‚ ç4¿ß È•B?‰å†N®´L;?¢¥É¨>¡¼&!’iì$Jä4Æ) 5
pâRi&×LQ ²r¬!ö˜ %”ÛAQ¦çé›b%Ò lŽùœ™‰«hî³_þþ>_üû/?¾ÏúÃ(G »ÙsÛùCQåP2¹u15R9RLË4QuÇe=À˜Ö·ª8èÊÀ‹‰	ÿº¯Ó×Ùp6˜öC“ÐË Ÿ„ÍlZ{ÌOòa'8hR÷X…møAž—qõaø‡I?ä¼*ƒXÄI*^Tî”Ž %&mª
&Žƒ@ì›Ù@MÂ¼g…ó³AL|õœ^ÉXÿ:{(SS…Ž:q´²§xÏ/æ^
;¬^QFvŒ§u)áþ(.¹žz¦³aí=	{õf¥ËìVwe­Q¦fÕ¸²¾CxÑ+„¥=¾wžÍL÷úù®„BŠpI³büp†·"¼  	]-âK °ia"Æ;ð]´q‡­Ë[–~þðÛéˆ®®½ùãèK’Ê›‚çW@/ñVW|r9^$h[€·õ’Ø¾·£§{C›«óËÁ¹¶lr9¿5‚½³ü–x„h5.ëÂ‘ý­|>šVc&NüÄ¹(zFÿ×Ø•=²a¾Ëv¯>~ø[ä}ŸXo¯{0/x—Ò&9¹éZóƒ©VGw•;v`†¯‡‡ìÓ¡™LûÞGšØ,îÛo~úé9¸È§Ç‘†ïoöÇ¡£pŠ«êÒ+ÕðsÆ’ñ	†½e;¾§ŽhÈ#µ8Œ4ÁÊj#˜—Òk!
rÊy´+¯ÍcÝ0Öe1–ÜÀXDlÇXá$¯§BHâUŒE <˜¦aq¤ÛÎn(k‰²ä³£¬&•ãPÖ†‘ãÊáV¢!gŽ»›¯°Tª&K¤i@­ÖMlvþšÄkà+9Ÿf\µ§˜Ã±$Â%ÜjÛ¾	Ï’H(-q¨?’Î…CŒŽo§ á ¡N¤¢CÒS•VÒqd{ŒŒTDq‘b„) =ôÊPN™a°+ÿy™A{é¾[¦uŠ¨cÃÑë~à¶æÑ‹¹A¶(êTÝûê4Ši¶·ÂË
XÆ»Bd-°Ñ¼éõ€†SD´º:ÔÀ.I´b‚ÒÃ)¦æé¤žÍJÔL$õ&­“`ïÉu|I?jÓoÃÍ`Ã)Nè÷tˆSÖ½ß‡iZyË–¸cm‹öÔ #™à"6º Ç’'PÁ±6Í×,€»Q›NêhÓ<b‡6í#`HnÿGt»mmœ3O{}¶NŠ>23ä$?°Ð Éã+ÇXô ˆ~h´„LY«™*‡LSÃ@@
ˆ•+ÔMò?¹äg©f
ÙZf­(ù\“üì`äÏ6ÉÿÄ¶‹/ûIÛðãKÊþ30¾UÙ¿ÿÖÝÙ¿Ÿà"–£UÙ¿²ÿ`ó]v©$p°÷Up°ù8Ø~ìo¿Ÿèãô~ÑCóð-ÔNøsH¡PA³*¿œÙï­”KÄ9¦Þp‚Ö<àåØ; ¡!€ð;=7Åt¦²:
×÷ÿgVñÍî ä¶N¼[îÿ%lÈ_–Á»1çÇà1ï²ïi>kYYSÜêîx0»ëÊÑþÝ4áAü%à„ÐùÈ½Î¯n!³Øu7²ì Š¿\T´ßfeˆo‘ûiLWŽ‹Þ%ßƒl&AB7Ýñ# øvÍ²ú„®–ÂÂ	^wÃ)êVç§Uyü}‰•ê_K¯˜û=FÑÏ´ø
}ßüuG«ªÍÇFûþöëåÏ_f:ŒŸýþ«HúáãËËR½ºå§+¶­×kõ>Y´­ìê)E³ÝÕã“ ­ö¶kr„Ó×²&0âGQ@„ó9Ýû<SXýñ·¡yÎÇFruÜµAêMŒL0œ’Ý#Û‘ïÖœòUÉ˜û#Ÿwk¶²?'L“÷îÒ WÇß¸w›O¶IZŠW½ïÛ0EóyOƒñZƒ³ÈåT½üxÉì©WT(Ã‡;¥sÀæVb…’*É•CPÐÌ‘N $˜ÞSq“ÌGKfè†d¦Û5ï(™ãKznÉÜ®xÃM6_‹l¦üÙeóÍóEÉæ“Öò'–Í[Û/›»67ëòy”Ç—”ÏY-œ:0ÒÃ”…J¬8ÚS£¨óJx¬0V0í7*%´ á?;kùå¦YÒ;Šçþ–½ªR]îÓßíÔøu6'ž·ÝvŒÒºü|Yœ;†N]¬/ž½{½ûþû×W_T–XE.£›UÁ‹ú1gf¥á<|9Œt*«‹vbØ`x·c‰êªx4oÙŸdVMU¯Ó)ƒçOy‘ûóÃßúÇëìß~ûùc%Z~ø)4NbÕñ™Ì÷æÊÂëòíE£¢×¬óÅ{¥öSøDrvøæFù4eVõ$…óHèæÁ=$™Uœ#]À®B:cÙº–Sµáç‘§Çq½ðï¼<ëSë&Vj ¤sGŒµÌså8çÝaí…ÄÅppæŒ -`Ï™G’³G7	oºä£ðœÊµý¹9 šO©Š¨^ód6*w&ƒÅ"ÅnNhg¨ç•1ØU†ä¸™÷}sõ´@4ª_ô­]ü¤Þ{eü42Ã4‹³7Ù)£¬TbT`!˜éâåºé^/_÷¤uÔUãœO[öyŠ³ÝÛÕ…U™éD™}ÆHòÖ91ç­[/uåSÑ.CÀ‚àý»wŸpj<q«Pì§Íy¨7èf_ÛlD1µæûïÛ¬ªIñî÷ßßþíÃ'ØÃ§Ðöd{êro~ÿ=<¹`êVÄ=˜º·»èO›|%ž¼]ô)ÃŸ«¾±=I^í¾<M=Ÿ[MžÚ·-¬âÚ'CC=‚=bF	®‰B!¼3ÄP „ÅñŠé]é0ßî†¡%Z­cöS>	ìxô:{ŸoÃ/±^Hd©s•xÕc!gpÐŠƒœ#’0ayºoîó ‹¬©0QÏbÊtû*pËð*Šý] 
Ð¨½§¿ðŒ£A÷]‰Ÿ÷Á¡v“éã¹¦7´´ ×©Ý-b—ïÐ¹ððV[ýùº¼ÖH‡ð¤µÒnPj]3õ	,–	“êÔ­ãÿC9ÖÛÊ4á¾ŽÕ4)©é\;h­E´$8F¹JÀ{ Õ‰ûxØå">:TLpµñ«÷ÿüðñÇ„Aúã”­ü1T	;Í^ýþßŸhbF’$ÕîBIN†c?IH!32³IáŠ‡„ù^²ÂÞNMôÑãô>á+wšX æ„HÈ£ÒTm“¥£Ù£4XzÙÞzBûôåãå#5Ü£	ÛìÊ
a›}YSÆÖÂU¿…ž|žp#
L8ÜÓ	-ï°ÿw˜e8-ÏWKs’á¾DÀû#@8ƒg
ˆp^ÍÓî£ªnaò±;À¡ªQ [#ÜÔD½®?êO7jcƒíOþ×JÃžÝ"ÑUÖvû#ë¾^Ê–ryŸØx1rZkO,g PâÃZ".¥ [î9%A/1Ši#0æñ¾š%ƒ›5ååXS6¯ì
r³õÔPH9Z±¦H 9Öšrs»½L{
i›¥éfOùÛS®0:u»=%ÑÃ¶fX¹HùÁ£]­KJ{Wëe}³[Œ+itkã¨–f$ò¹5$q´¥½£mûÚ>r=‰Æ–ÄqVL"×êyß0|$ŽºbIuÀ¿P/ÿŽöSÉ‹0xî…#¶î¥E8¬XZøÂäröÜ€[0×¦ñ-™dvª½@ÛÌçnUg–À³åý!Ú²úÒ#+µñ0‡”† Y*ƒ>Ž †ˆ
O1ÅÌÊ(2Ò0ABc¡òñ–å_Þ—·©Ô¼’¯iO2¨*Òyâ²‘sÖÙN,Úc¢É¤™ÁzÙpVÄï–º¨9åáá¡w7ý\iÕ[(œÆË~ y„c„žk—kF”X‚F¢
+Yš Ž\^;…Ýú@ué·\*¶±êÕõžlÄ1þ¼•cãìOö³ãuOë:-—`›!š©œæƒU¦†8]#oWÝl¹çßˆX‹k×.¿ÿqKçd½¸2™ÒçOËMðøÖÅÃRZªÊa)M‡¹-uÞC­—EÆZ§8èÓë„${ÆºÓ§º^ý(ïº¯ã|Ò¦|ZÛzkóÅ^,ÈP•ƒ$[gS·n{h?N\ÇUîa*¾»„-‡Ñ!rQ$–žRó,f4åÖ(Æ
ÿ³
XE%–B¸uÜqæ­5Ü;­„µÅÛÂ˜8îµÀíª:wÃbGa1²ŽÅ;°˜ þ,Iä«XŒ.n‹Å^@Õ\xuhL´¾¦ûÄhì`vÇ?;ëF¬£±fççCc©>ƒ,K%iâ³Tš5 –J¶†ØÚù.Ve¤½)?ÝP÷Â»ó™¿q”W=ô#¯—„ò ÓÜa¤™ôÄ‚Møá-ÃFBiŒ…žCÅ´vÙY8ŒëËÌ	€cº+&ÊÚ~„jPÕYËêžì©e×óN×@^‡äÊf_(ÌgE§šÂ¼\13÷±Ý‡wÿX¤H¿'Sn2ÆVAŽá¤™šHÚ@¼z7o·Ó “àˆW?„Ë€¼ºóóÛš¢$)Çˆ¯]Ø5êYÐ‚@Çíîú¾AßŒŠ¶y;‚©pr'-iªzl-(Æ£a;‚ÿ™¶Ý«éjIPUFkAñU·\Å×q“àxà¢6×?…tqÌ]"º¶zÑç+ }…Wž.XbúEÕŽ>ªŸÄxê™ˆNlÀ©ôQ3î< ÜÅpH i <–)‚Þs‹ö3ˆÂÀ##o°ú|°‚TÛ)„ Õt†‹øp—°ag<>«o¶ÓÖÀšƒöÅžXŸÕl¸X§š¬6ö1”Ô>†²ÆÜÇ‘æGR.àÉQÄ9†´ÂåÇPÖ ýÒ
©EYcH+ì~åx+åùÐü¹_¾›}ô¿(¿¤ëà´[ OXØüE*¶3¸Ãš‹à=\3LÚiŒ:J ’Q@½ŽYÉ=ÅF3·QãµÖÔ*¦ˆŽ¯"©BHH.ü®×ßÊëÁÿøùÇì‡~1¨Çìg5R{+ ¼ÿáçùµâ-t¯³{/÷™š…F£i)Ñ«VÓ è°µ˜uüld*Å¡?­Šò»»CQÞ!.óG}`6
hùó<soüø/AipE¹ÃÊOÝ¤ÓŸ†´s£,6u¶—…9fjPäË„Â›ÃÅé~Uõ4öÚ-úÓ˜@øîu'óII8f.gcÂÚ•Óëˆ³œ–s*ÂYÈ¢ÑË>LçËïÔÅSƒ^4ŸìÄÝõ‹é¤BþåÅÛ’ú±˜ºa9#‡Ï¢n0(W>qÃ|ê:5y‘½êWiÃ>NËéîuö¥¯Êÿáçw¿ÄåNs“¾ëeÙ‡QÙ¤Èî]¹–EW™Í]1úËt¾;Y¹ùCø¢~˜UúÃ×å>Æe—°ºª7[µèÔIªó¸%÷jà³ÜWË©†¸œWD®ÿ¹ß»åaËãï_&y”JÅ›0Ýí* 3ÌHÃS?¢Œ¾U¥£œ¶šR$…hêt(4¡òpíøa·zõ»ÕKß*IÞÒàÖ—yªæFbÒÊvšÛ"hd¸ÏäÄ;Àâð¬í³Ýi7Þ@ºLÏU•®¬1<À˜Äá"ýAÚLšØóõ^"ñáÁ ÙÙ pjfòŽÓ¹ÏóÏ[õýãæexw_-äA7þh¯¾OÜéQLõ-ïÀå#Ü3Å„jEEl2ÊË©ïkcÊ¶Qb*kFWÆä³Ñ´¨7j_xè±ó?°ññ‰NË×b_—0h2ûÌö6²”}8J¡îg÷Þ‹»îX¶­%dj»îƒz8Ð‚nAMÑµ* ˆÑ¾Å‡“Ì{rŸ/¢îòÞ{Zõ‹¼kòp>÷¿‹¿C˜à}ù]Í=0RŽ¤ÐSÊxvhÆ	íÖÎi‚GM?wa’o¬<«‡øTTpT¸T¥…—7÷Ú'´{ºŒ‘ø ;-ÚfpŠ÷ñ:<¦­| wÓ´µ~R^aMx$+M_ýïÿëŸ¿}øøë'p0àBx0``r).ÌºU´üòöçÐïAÿeÀyâS¶­Þ†D‚gð½:é-’B–JbÊì›-ãÖÿú_¿þöãÏ?|BàPª¿Ä~_>¨Ôp¿—²'BuV›³¸ˆƒÔûúYÕx_›ro"þÊ÷Iªz Ë¼eB_{šØ'x¾õ«ûÂn]”§ºÙžÐþk´o´2—'!âú„ï»‰{ôÄº@ß}%?×E>pÓ½Æýá*ìkŒºÄð0¼Ôs$y¼´µk´÷íØ«òÑß^õeK„-^=¾ºßk{[ëS l}äk'igV«gE¾©^”žæ’^|î‡Ó”Ð<Ð—$›¹´m…EJ2…aR£7¶åfXýúÍU²ˆ´É‹éÇ¨píéuÑfÞu¯PÃñ`3}ç¿VjÅ1êV-0q	½/íì|Ùø÷â`fVLóG¨j‘IyÎºj6­TÚƒ-ïþÁ¶5™û®}	ðdo,$«¢xÈ'Ûv¬5L˜ë‚«ì½“0ô÷µ¿^çf¥aQ·<íºÂ†·äP$ÕYü%Ês'˜æÜ3©2ÞPJ„P.4ÐÀi1§À0 ™dŠs ‘›¿äæ/ùÓûK¨Øð— yÛš¿„Jºv³a™+þHÈ<«…¿¤]Üt™äüÙ6kËËñ˜ìˆÑ9ƒÇäì=“¤¨7×ÉÍursìëò¼®“ÄÈ¬óûPR^8S	¶yURIî•T’…Ÿ%‘`ÓáÒ†°Áóå™Ž.™4Ê…g&uŠW{\<ëÒ“H°êk9†fÅ±s
=LX;pZ6oø{	›nŸäÑ6ü?×U{L¾ë¦ç’5¿ÏEÒ	Ïý@I0ñæz‰¡”øé›_èæºù…n~¡›_èæjår6¾í<C¨iF‚›ÆŒ¤‹4‚`!=F f…f
mUÖz¦¡BÒ*@‘…á?ùâ¯äV8Ë8%l—cÈ}fqMyU½oéð	ºýçi>Þí *·"ë™ÊÂ#^gŒeãüÁMülM=²þÝÈÙ¬6O›Ð¼ôÎt6Æ«+E6¯i´lxô+½Í}<UþÓ0Öà±SÌÆ1}\‘…í&#Ußí/Éú£ìŸ£~´Vô²·ö‹™XáÏ©é,€ð­ÌltÐŒ¦êkç¾w?ÿV)SCÿñ¥
G¤o²Xs ´)ÿ¹¯K f±ß×Ë"‘$Î3üÞ	†ôËlnfñÝ‰–¾¦‡Ð]þÐëtûæêFE_Gös?Égw÷ak+ÑZ»^g÷}sŸ™Ùdú
{XÏ¾˜o@ùÃ.Yù¼£Ÿ+Lq8VÑZUe‰Þ$÷ÿ|÷Ÿ¿fïî£U>0Ý¢¬–ØQö_åTºåzËBE/ûi6)«)VÓ*æÎ2ŸÏF¥¯,ºŸÊuç-ê·éI=EoÇãâÍûêUÝš*!À!oú‰(å‚CåV?bŒA°š+*„²™h–A=è**7¨â]|”¯èŒeŸÆi´¹äÓ3$`"[º9_íÓÂšíÂ
ë£U.¢W3ª}äeÃmæþC’`woû<>GõTŠÀ“êê=‰Ês|}ô$(Úd¨v-¹ù0ðÓX›«E*…"0¾­#wLo^züÓZ]L0ãó½GkÑhý\…3WÖ–ý:ì¥ó©‚&¯¢x{3¨è\:›÷è€¯g‹:‡F&Õ­Š°ís¨T/L7žžîj‰£­V4ÏX°ÏžPf>S˜.¼ûî”=%f)Þçu¸[ºaêAÕ>+Ç]ySÑr·¯§égœÒOàho0vè¨bÆ$œ©Ë/þ¼~¢#\(OçqA[R£hœoãF¹nE`ã¼ˆèûq¾ñÉþž«OóQ½„]Øêyµu¥¬¼V´Õ>M¦'vh8UEs×þå/éæ‰‹ªš¡Æv]^— ü[ñeû0Òï?D1y§ø°ªx¥tod
Þ,Qïæœ±î`¯”Hv‘üáFýéc+—@ºG Á_ª2&”Î«0Ï}°LÎV‡_·O¯Ù´*ýu·Í«Ôˆ°[FN¶kÍíø:Ï?ÕäóÑÉ$WÑ²ŽIí„°B2"5Úx* Wž{.1Æ#È¹4\ƒ p+¨Šð'Ó»rIVV–ÅÊjÆ¾Ô‘.ÛNs]–Œ*é#ëI™'øXµd`Öj
 n1„ô`r­Çe®ß‹þz\Â¦ukuÅ§Z4 „lé2L2hlûùùöw³E÷)¹çZö¢ó‹èÚÕ:–cÌ¿XQ¶OÈË·r&¢Î­¹jmç¦¸<£âò¤JÈ·¬´„ù—-t*z›Ä«WÓèô	à²ô.?=Š“1ç7E=fÈSêœàƒkÃÄŒj$U†ÎjÇ5a.€;ÄGÀü~·¾Â6hní5¢º áQH¬]c
O@®ÔÇA‡S¾í=F7tw"º·Íè½÷\å­sv´wt[ŸÕË‚p	¨³Ë˜P…©µX9‡°R8íËúPÌk"ÖÄÔˆñ.%ÑY` 71­= í‹X½=høA×·j¿h¬­ïß¤ºJ®¿Qüv7×'œ­Öo@Œ¯p}ÌÈÁê;ÍßŸÊï1k[mÇ£¸§op<¾1Ÿw?ÌÝùdÜBqòÜË€Ø‘×˜„ÿ¤ 7N	e2Üqê…3
Y&˜”€;¡”SÐh#bªoÏ¤9ÀÝkkÅÝ×©®’»'[j‘ä­qwQ~ƒ»·´Ô6¶èÆÝŸ›»/Å¥¸ûb€+áî‹ùÜ¸{w/Ã‡ž‡½k9QÔA¥!Ó4àö Ü=W¦P
Ä¹’†{¬Ë†\ˆƒÂI³÷zqmùû*Ù52x
S<¬æê‡ qÐäð1šŸ·gñõ.Ýxü©þ8FO±Ø4ŸÅ™|=ÂõpùzB76˜Í¦7²ÏÃã@@Cá$ÁÌ8á˜¡Ê®0%Ý(k´Ô!Ê	¦Î,÷\+=»nÍ™u½²V~•æ*¹;Nåîp€ÙšMžq¹R]2ÌÓn‹¬Ÿ˜o?·c$Û^Ùþ .ÅØëî¯„«×³¹±ôC,ÝNÔCZ_‰ùž®%ÓPfŒàœ®8R#m-VÑRã´FÒ~0÷kŠ±	LÉ`K½¥îåéË¥µ`êDWÉÕirø–dõ #œ7!;c€µ2¹/wèÆÓOÇë§ðôå“¸S_ö‰ºeï¡krfQpøúÙ-Êîew‹²»EÙ]E”ïlà~1ŸÂ³øß´L=]ce((U–Õªy€r1ä H±GZaéÆK+%Cq¿+O|…Ùkkô6©®ê±tó¬ëæY„kf‡ˆàv`¯±I7´w*ÚC'Ý–h<ŠËÀ½Æ —À{î/øš£¼(åÿ†çnxî†ç¾<—’ÒóD@÷¯¼?*óÎ<œãbàL€h˜¯1ÔÛ1‡µôVzª½¶F{k¤¥6 :¡=•Bf„†–h±Î-VÖÌ­Ó\%”K¶Ú!ÎÄ*”CsÚ¬ñ"1någ_lÐÆHEN	¤Z<ˆË€¸E÷WáˆYÌæea±çpÄ”™ÉÖy–ø)í1Ö**Vµ3ðmƒÊ®°°ì¼pÈ2Æ!µ”b ÂŸKXÙ½ü|±²ü|æ*ùyrh,á­GNŒøJä‡kvm=07Ž~bbF@À)}ñ .ÃÑÝ_G_ÌæÆÑqô2ôóùÖ1õN†5Ä–[ã‘ÀÛ$ 	X2€s"ˆe’™ó”{n0€yc,BVïåéµµàê›T×È×Eú5æðÕºÉUÄ[ÐK¶Ž m¸zc‹n|ýy¯<4Åe8{c€«àíùÜ¸û!î>u“a¤ÏÁÚ¡‘Àƒ Ó¹pÖHvÀ8€aRP®9æ+"‰–" KMf„R#´ïgíó…µàëk$WÉÔÓC¦$«L€°Å¦þ"­˜ú|nýTŽ. 8£ÏŸÃeØù¼÷«àåóÉ|kaOÇ¥Fý2uHÂÊ‚¯ÓÈDžCx¬¬„R†/Ä¯<‡á=áˆarÐBN5À„È 1 Åˆ•@¦÷_}›/¬•,X!¹JYÐâN3ZË>‰)ÍŠ Jµ‹¨˜ïÏMœNAÐ)áóçp)YPõ~%² šÌÔdäá´5}NNTB‰¼E­cà0ÀP1®™õ	AD@ø -qV2©(B@kT öÇÈ-VÖ†•¯Ñ\#/—Éñq˜Ò5^Î ,¤yµsª.6èÆÌO4ÁCxÒÍåÅƒ¸7Ÿwì|>›??ÄÏcQÇçM,
ˆ`À2!¥’Œ.-¬\:~3œC'‚R+©×HSH´Žkã¤1ÒòhKÞËÔW—×‚³o%¼Jöžl‹Ç˜­ùX)c ™(žr9÷ó¥±÷Õ]ºñøS;?É¿ú4.ÃèWÇ¸Dôê„^è3Ý¢¥oÑÒ·héo$ZúâÁÒÏAÄÚbO…XHbaq’bf¢AÑwØõÞ:#”N5‚ˆ ·ùýR×)Ž…“ï*ü´ï½9ÈÎÌ+@×I¯ññd…r
Wúµ»n-°Þ-ØâTtÇ±<Eƒ/Gfê¾&cÒÖ]&|ãÄ˜ó¨éJ‰w3-"a3¿s2É2ih’yºdšyn£D‚FâŒDŠæåË¶‘ø­=ˆjë£nëÇhm);NãÚ ê~RËîà*[ëîâ*[ŠžCJ5èYbAì"Ì9÷N8Jv š2ÉUV@†¼fÌBOy„.:
wjy^¼0Ñ¸ª¬~X6ÓÙuíB&5auù¾Iùœú*ÁIr­Š %n“`µÈ#­\Õº•Á
à’œà<>³=c³ëg…{fº^>÷¬úÚÝF,eŸÅ´‡c,5ê}À²e:¤<TRMŒDž0."‚p‹yàˆÖÌ€ñY',!Ô0asX‡-F»ê¼Íî&j|ŸiU¾ÖÆE‡çuÑÝe~–$ßçÝòýï?f¯Þ»‘›ôMö>öÖ7Eö±ðÛäñ»¬_d*q^'vVdù¤WFi†qúw£ìAÙ0¼'Ù4ÏÂÀjjî³÷~þ¥ÈúáWWé‰*¹‡N”ÐÑdûH«9ŒÉ'®—ýv&Ó.~Qfº¿W_\' 0É8ü8¼…ndú®è•Ý©¬èG=¸Aü> ­@÷ö——“Q<<ôâ©+À¶/X8 °ÛAejVÙ¾ ”¬WA€8ô WÒ¨J,éáË^wƒny¶»Õ©îÅ×!…ÍŒ|_nmõë‹aùëK>•ÓŽÚßíºÛ º‹Ýìì¬dæíeæ­:VËùNEóÜé|_+½9Í-5ÑAöà¾¢è6ð‘‡ýSÿ75ð¥ío÷Á}íÆòðiMVÓûäæƒá‡¡Ÿ·F‡[ÿVšB“»¶˜Ë¯?|ìÂµç¸½e|FÝø 7]z,œ"c>å,SÛ½zÿîÝ'Üíé~Œ.ˆvž‡v‡CnƒúL$µþ—
Üs’Çî®4ŽxrËv¯>~øÛ¿ÿòãûO¬‡<•aI‘Òfaš?ô ×šÃ–Íéöy@
¡D*ÞÆÓÚs€`tYyþì^£á«_þþ²O‡6°éfiáI}>[‰“Iñå®‹øG1®ùÌ©Sk¾ÿ>áô5¾z÷ûïoÿöáìáÓm•Küý÷À¢öÞT³¡¨-’Ñý-ÿ8Ä!OI÷8½"Æ8ôÿ}3+&¥Ã½Ò‘ÊÏÎ¦c¥šŸNÑ²b•âµGÄjb…ÈðGøÇ0Æ8ˆÊ¨q	d6ÈhþëCŽ!¦Ñ®Ò7-ë›Ò²°\Õ²¸d;´,(ËÂ«µæ‚ß÷Â(V¤>|7c]åH7§Ýô¬†žÚ'·¼„žuÀhv’žµq…«9ß‹+\‰¡+šW:Íª
–J·¦‹¥“­+e©”Ãc¦ÙTÓIVôµ‹…š-5³ÖsUî
CÔ^@˜Ùªú—HÖÐS)–Š^k‚¦f˜D[«g­7t¹cÈP/•î‹3mú²ýb¨Ä]h*WØP3ÛSÌÓ‹„îÔ9SŸsCùLo©…¦4Æö½´5mS=M"nj©‰sý#ù-¹p‚Û‹¨¯€ë$$=R?Öò†=tNo0WFaå(¥˜Cí©‘K„<qŒh©âVS¨C» ¸g°¶Üï¼Âóþåê®yJåõÊuW† šj30„Æ{^ ÍØZÔ*C®¹%\Âf:HF9b	¥ãÑ-Ïv—ã#|z…«°®-ôä‚Šµ-¾¥g#ž×«q>xDÓI¿kö1ÍjÎû•Ñ­<iOoi®Äô^—.IñyÄ¦£±­›'4.ÌZÛã5æ›çðæ9ü6<‡AP¦ìÜt0þ«ÈGÝr›Óüj3,RüL/ÏqysGžÑYéâPžËky…ÞÈißûWä¢Y|)ûðÓOŸÈÁ=Owt>8=Npµ?›?ô\cºËóh¦(„Ø{o	ÊziCJ!Œb>QH{¬’4A©(¦7ñO 3²Âí:#q¥«Ù-æDˆfZR†¥däp†‹UªµÇóÏ¬5â¶~Î+Ñ:F×S}&«êcª…yFìÍ3zóŒÞ<£{ÈŽôŒÎÕÛ?µ'uSNt©·sÃþÉ}¶7ìù°su;q´#¶/ÇÿºT¸Û¶o*è—rõ.ö—æ>F“õ‹¼TGUçaŒ¥ƒG†0{)ãŽ9K¤ƒÞ#O´"¨ð\)ˆ¥RÞ3Y^¨ÇŽPa‘ÇVh+-2ê]NàwáE–új­jç>þþá×HÆ@©0vƒ:uÃCiÛµè Â£Ê<‹:¼ŠJýxâºC:šD%ºnòÿdýžë½Šyç.ÚÊ©LCw[ÆïeïcLÕç8ë¬©qqŸOÃ¼;*»zè(³á)›˜],›Nœ+Uñeï*ÓýQXÅr¹q¼Ø°ópß7÷ÙC?(ëAå'eœJ5û†d÷a°‡I:?§y_¥÷sÐô¿Ítu¾ó½ˆ¶‡H7áÝÝÿøÇÏÅër†ý‘ÌÂ®vŠÙxœO¦eKŸNlªó|Ú¨Õe?²ßòÐA>'ïu:*­¼\ÉÊƒ¨Ïsßgù,¹ø0§1•Î¼¯K&Œ|îOš% kf	 ©”Ö+¥`²f•€P’²vm#@<!ïæbÛºÕ{Ú>»ÌnpºiâíxÈËYo~­ß½K™(ª‡²¶ä“³)3[º¶û¿ÏJ°“…ê4ÅÑ®óáçÐ·ßšÚIÖ•bÞ]c?NÎyyièqÏÜgÇ,c¢ŠØLO…ãö%–;ÜõvÂÝÑz:›ö)/Ûî×ßÿ@­P½ºë·Ržòæƒ¢Íh³b¡v'¹î°Í®ÈÕNË´þº621%¼®kýoÄ6°á<¼p£Uhb]˜šÌ†ãý-bÝý-¾øÇ5´¼‹’à-[?ß?êIß¦·/·qÏøãèeÔæ–mâ«³Œ™ÄäÐqá˜áÕìÑùÃn‡Ä™Å„Kª‚Ðq	Œ÷c)—ÌXä8À˜ic4âÂcg,@Þ,X Ñ@îr­¹|N
7‰r­Z|å/û¡û·Y1§	 PM³¹xÉ]ÆS78æbÎ"bOú±ëì.WƒNƒçÝòhz‹Ý 9X{	Eç=vÕƒštÝ@+éwj—WÀüã¼(ú²¾@¹<Pa€Â™€©çÃÖý¤4›ÔåÍ;&@oe¢OnëJXŸÞç³iæ¾FšX­;æ—+Ê'î'ù0‚îÉÅÝm>ha„ÏÓ|\ÂÛ˜ÛëÍ¯¹ŸÆz6õ]ØÔýw^»{!Þz!Ap-±aH •Œ|8x³zºå»Ð…­Â7_X&¯-+==á(kë‰kœì½™Ô›íê¹w­æÝðÜFÓ^}ÔöõÞ2ß¿›ï×ÜÁ
·ö;ïðÜý¥Ä•îì÷:µ j?¼Q_Ô}¿kýøÒÁIÍËL…ÉÍ£É¿UXdkŸTK|0´í2”­B"ÛÆ^"p¸xvåÓ¾LµLm6€œ-\* !›?tSµ¹ÊLf[´l£ì«Ú“¬Ôüg_~VÐƒ¨'åœñì{8K^ýÅÎÜç]1‚üÜÎúçîñq\<ž·OÔÐÖMöõ”ÅÞ¾¼¹ÄMÍ›È©»ðMmV¶oŠXp5`C½·¥¸²t‹.Óª§­}Ô:†íOþWÕ]½àƒÕßÎî›×W{÷FÍBŠ¨åÍnq	ý+Õr‚­ö1ûmPÁˆÃ@	áá„id ¦@AbÒ;á2BQ œñ”Qâ;ƒoØŸY£¤Û50L ]½@G D¸™ü… $j´oÑK®?›ò‘±ÑÁ8ZH›vì€‹äÛÓÁÞÊX+º…Vvu±ƒÛÔµ«Š<.ðèð·S¢ÙÒÃÒº^âP¥/5d©©ýÕSsejàù|D7mð¦Þ´Á“´Á²Û£ËÝ Z9àÖHÈ@ž3$œpDÀc^R¤öQc ;LôÆ+4×jW…™ÂrV5¬ªxÝ\÷Ý×Ü“E4VxR±j‘Ù¾K,(LÒ— 8ádÅ‰ ÉÈj¸ á©5£µ eézS¹±7íéXí	CÞ²dÞ)ÚÓÃ½›¸®vû)ÚÓê3>·®SõúLÏY®—«8ÔÇ¡Õ­+Ö6®¯îl}Ä£ðäÁ1;ÇyŒTW{$2NqÄ¡eÎ!.S N¸çÆ 	6`©9$@`²Û4[šE+Å=T÷ÅÅoÜˆMé«â¯§‡›÷¡ýÑÔM”™–¦ÍÎ|äÚ¸û2A©±$”¶?M$ÍPHÃc9\!®±ÕGÅ“|¼”„‡ÔÖ˜¹²ïg—‘±Ó“3RÀ™Åé™§z“8œ{2÷š¦ Ì3ÈŒâRYfìÕbI•öáW¸mP‰qiM	c0HDg­J©‚BÙ›ˆ;ƒˆÛ—Ü¡sR$Äºˆ£¯èœ„–¬snˆ¸–ÙKþì:g,OxBîÌŠØ~-ç¦<~s^§kÔsëJOÓqj î!¶(VÒRHzÏ‚²‡ˆ¥„d Ê§¡ññ†2cbêå
+a(·–qèBVÆ*¸|WÅ¥÷å¢bÌ½ŒÝä°˜lnC¬³M&F£î´¨Uÿ¯|d«h›Ñ]:³îu'ÞÓéÿª‚[bpŒµáß•·x'.îåÖ~–MKÒŽÉóIø"^Jþ®—}(í¾Eö÷|?ë—ÑDy¦‚ 
—æá²©yfTÌfÖyUÙýn9h<9®˜VÆj_ÞºŸ³Á´ÊLûü’÷m6\Œí‰{PùU:ƒ\ÙË'([>ß{¡•«À\BÌ·gµæL¢µjçXÆ[¨K1†I—"æÇ¥[½ ß¼&»}½'KzŠå’~>™•Ç·2¦ƒ¦¨ˆ­:¯%ý¼ÿ3i´‹è…´’¸R>_¶ä—§Ç^I¸ÿÚU×6Á/EIß…>RuôSð RA©õ˜Qa Œ dPR
Ë4ä^u]Y@‰äA¶Ã õ**îø†?nø#à¼?ðü	"køƒ2&šøK&Ç/ÀÌp}DˆkD Ôö“ÈÍ«Pä`±È6PäfdøC[/uúf“*tóé'Â
2 ­VD[å½à	‰¥TV¥’sÇfZb¥
)á$Ø^~ˆ«ÉÇÃè^ˆrnË¶Dj‡¼«[³ér¨ Í<zÅ —ƒul5…ì|[ð²kA$Õ
Á°\ó§3ÀDÌ³¾L’±H¨«µ¾Ó7[ÄIH€ãc¼«à"x êúìv‰ÀM×ƒÁ¨—ãdÔ°Lôù®[Mä-4û7®BO,\žB7öÖ(ÂY¬w)"õž2 !áCM¤€Ä-€ Þ2	Ð[,ü.öM¼)^hª’Ä!›â…Ÿ[¼ÜTÍ#i™èéÌ9ÕÎ—-`ž\IÓÏÆVMNW£æ›€ÚIçö@¡½RQ…<ñHÿfX¥sÊP§8…LYæµÌR~‡„ùg¹ž˜#áÃ/¨” å¯ÙGw§Ìã<±sh£bñ¨ÊÎ™ý¬¾þÜÙý²§ê§îž yì&qÛƒ¬™Mó˜îÀdÕŽ1môú,:;fqQ1^îÞP}†öL>|S>ö7‡@ôˆÑ#©Àóš¢›WwÖë?1†›y–ƒJ"‚¨æ+£Š@=OŽå§7[W{²°!¢­6³äÕóÚòêïb®ó>/Ðej˜ÓÖ®OªÍdÂ{Óæ¾õ5¥Ä]Þý,YÓ®Ë¡ËüµaqÒÐAêP×ô§ëRg”Ç	R@826×(+ç\µXÅ“yÏ°±ä-ñXK ²@A«¨àŠ‹Ðšìº~òS¬#Ä]#CP\ä‚ËïÍô1nJC,Å¤=~KË±.¡š”ùþ§ùëÀ¢§YPqŠŽ2áTFšÑë¹hûK1FK¡“U¥ÃÙ·³˜F¨®.­L§S¦r6Óó¾^gê‹êÊ¡KñÙÐg‚ærB­Ø/ÕÐ›ù)Û/Ù¢hZSª ß*Ù 
S]MáF%’`Òoá#
ÐÜ¡´OÄ-_‚îü4×jFõ¤È¹wïºû¯î¯oŸTÔ©8;Fº€)îª•¯-úTq'hïÅ[>ƒ½’c'³Ù&<Náˆù,Îïy˜"ã†ÃŒ¼ãsì…£Ö*Åu„áQ,dØmKÊ8Ç™ÕJƒ¬dN#-hÃ«uÞøâÕòE˜Ì@líº~rÀ+\1|B¡L¸¸òÜøâYøâ×WÃó²ÆI>êÇ$£Q>-OÍ±Ü.Ñ?îUµ&?Å=ð=–ß3%5s½6aJ¨™eãK ’;Ãä†`Æb ÀÈðSrb	ÐR[Ä¥0sŠü÷ÀB²üköv±äX:û{xŸy¢¿¼ÚU‘®jdUÉÈ²åþ]ÖÔ0`=5Ž_{íÚ„bŠaÓmíÒa—¶ßÑBT@º<ÝÍØ)IÁaãÂÆ‰ŠöÈîÞCÑ‚õ¼ýõc†zàÅÜÞ:f7N6M­¶eJÝ_Ú¦ÅË¾uÀá—Ñ«…Wñko9â_ÿUL]5î(µÏyx ç¿Žóá_Oì>æ”ª_ÀÅOSñ×-ûø)ô÷)~û,ƒ>Çrás,>ÛrÑs,=Ûrñs,Ÿu¹ÎúãÂõþå¦ÓÇÀËuú×u–ñDÃœº¤¼¸ëïÞÍÞ)ð,—hÂr»Q\Eq[Ô*\Œ·ïjGì¦*E·Œ4(Óû×Ww	(ÌšÒéH™ø„½]\vO±¨JÃÌÿÏÞ›µ·mdk£÷ú|öÅi÷“®yð9çÂqbo÷¶ŸØÝ;û»ñS¨*Hˆ8}iIùõgÀ¤H  RSZÝI,CU…š°Ö»fë¤ÀBX,¹š8*±³iÂ”×	u &¤‰Œ1I“ÆJíÆ8•Þÿ›ca ¹r]QGÂ#&RûSò€\jK±……YDÁôW{+96æãÁÌ-È©°pýn†•’÷†#>÷g4üŒ†ŸÑð3~FÃÏhø£á49Ÿ™éE·°4 ºä‰¢™Œ(L¼®¥H˜Æ #1©ÐÊ;#(ò‰f©ÒÆ{¥µ&¸0Ÿ æ=h&{ÿ1K^½ÿµˆõê]ÁÊBØð*Þ÷±>™L.{ïÃ’®±˜µ¨tz™¾Îg…ÏZÈõÕ{ÿË¯Ÿ~>ûu<èÜ{cCÀÝbåÝ«â
ýþÝïËã­±R±í¼Jb)ñ~¿4Š$ÙI)Í5[)¥¥â€yyëúÅê‹¿r˜Í¾¥u1Um —ó¨£~>çÚñbBHÚŒ|«[vš¯òày5tKçåˆê7ÛjöaW
ŸþlîS!EDG¼¶tmŠo5‘ù5î6{Çt~êG´„óšÃËˆ¦O/!Ç¶ë~ce:¡Ú+ ÃÖ&HÊê¹ð†ŠPÄ§\QÁMq)N5NSme’ Ž‘Vô`.ŽgÆÚž±Ò[ŒUì×C1‚ø.c%Á«ÊXå®û¸Í_6ÀènX+k[hüNYkƒ7ö±¬õ„É+-½Ó¬¦mbˆûNDQeÈ‘]¶8óƒ@»¯T¶ŸÃ£þÈØÙí¢Jñ6!6 ËR¶ôME"•B© „e¨ì¤dcd½¶JXÌ¶„ZŽá¬·ÄƒœL¥#1«eñüíó§^¹¦‚Í45Äìþ§É/ýpØ+‰äŠå‡9÷§rEî]ïêÂ{ç~ìge•ÜÁÂ;WÞ)[†ýË©d–E|ölÏ³ù«À³vM¨ºÿîe×šS±S‘¶ê?%š]4·§Ö/nM_¶tÏ| n=ZÁ†¾«›TÍ²eÜ·vÐÜžM½^pïW½]v¡<°_åÒU^ÐÂ»‹qÈrÂG¥L-£2x¢ÓT¦(±ØiÎÃ:•ÈªD8“R £<õ{{€è|9ïÌ—àþ3,ñK±ÄÞpöâÿ2£éÿÝûüÓ»HôºÈ7P t1,Sû•Ûªcfó© 8ž»<z¿ÙU Jeºû—ga.e¿‚l}þò2L ˆ+€ 2ë¹‰]”IŠS„ýüÊ±óÆ^”mggÕÁ‹4ƒù"›û¨ºzÕr¶Ë\€ÙÎv¼q“Ä÷¾êÜüog•ÝyñùK™\ðód6/àZÍè]1#hñÓ»¿Ã¦FùõV­·5œ}˜çërçÓÅl:ÉýÆ÷ÞeùthnŠl…³"Y`ögI£Êó˜Á×ÏÆçå4`œqØªP2}½7áåùËPôü*}“WÎb³c.KS?íw7õn÷+ßSá¸¨¶Bš)µU¾GÂ}çLì%úŠ‘ \ª¤Ü*CÎt³¯ÀfrýðÕ.©_¼Œö&P}údÊì_î±Ä^ *Ú†)mfRGé÷SÒ¦cDµC#_Ì»^Þˆ*¸ÐbÙÅ˜ë‡‡ù½ÝàZ?Í	ü[~[å¶‡[Õ‘‡=u)q¹mhQ;IX…Ém–Õ7…6´€56À¤¹	mnÂ›\Íš4ìüsTÀt…]c|ÿPËs”åL+é,¶Ø3¯µN!–H+\¨ã'™Oóij¨bÂ™4I‘±Ô)`T‡4³›uý-ïýŽq¿Ä@nL©„kþ»fîm!×Þa+o~	a Éf©¢Œ ¾›Y6YäP$‘zQ‚’ˆ•  Íãµ LŠnˆÁÙVàJÖÐ¼}IŸ!BgˆÀ9e­Â­Í?=L£>T8VÙÏ·?¼ý¹M¶Û/ŸÚ´ÊÓª¹¿ž·jßúŽ3‰tàhYÚ¹Üà[1m™0a¦R®QêcÆ<à[‘&	LcTkÊD¢8Oµ¶ˆbdÁ'Þ&ä…ñÍ:?à‰>p¸ò!q}àï?¼«ÑQ–[RÊäÕtÿA^Êâ®w5Ë
áÚö@H¾keZ/éLäÜÆ~þj©«z_Ì·.Šœpu+/¾f*ÌR¾[~˜N d.$x³ZÌª_Ü‘>måóéÃ×§b>¼½ÈãëíiÖV,-fQG‹|©5£Åøä´µ°§¥¢Éã9ÑãñÑØK=cÅ€#è'K•ÅB&‰pÜX§–á;÷&‘\3KS‘
Â¬K´óRúÇX¯‰óHR§“gúÙ’~ÞÊ(®Ùþ¼{œ„”C;þ„êmÿÆˆºf·IK<zÿw§ ä±PÐŒÜ‘‚žÐãâÒÑ´-A%ë¼‚j@V66Ìoe? Á4R˜©E%Ø%Xx*°ÑJsciE¬‘^
âˆtLhjSbÌ9ž Œ%K…%Î2nÁ–÷>Â×ûdÆÙt1,‰Àç2“iëÛ‡OŸ{/ê{ÿ½¤½ÓÉ•Ÿ#WA`‹TL“<+	>ó®$ÁËä©+í‹5ã^â{ ÍüÈoV–²Âê²,•%®Î'ùÆâuV8e¶dW>)Œ;ƒ^1Ù“÷Ff|,[Á?o>™Ë¾@bçp½›É¢w5Y¼5xæœÍ'½Pˆh/ÏFÙÐÌŠxQ?³™Â8i¡
Ö#h”OF¾4Žù¼˜\˜:¼siYœ³Xk¡€'`ËMU·/Ì(ØËÞF§d/ÌxìáÓÂKa2Î—5½n`â/{¦,äe/_$ýivíËÍ^q93žg}3ÌLàšål+F.x0ž¾ˆ£ÅZ‹ê ÆwŸé¾²æ„0Dî$„)[÷q=øu¨•µ­¾
ƒœÀ¶²+r^sín˜^¿üšûµßqËD´ô‡2ýoøñÉ0ÈØ­8–oRE1íg%iÿ‹:îQmWÜ½e9ùº>ëdÛ£é^&Ú•êàÙ£é½¼¤œôeaO†“Y?÷C RðƒÝ\Ôjít¾2@a»÷¾ð~Ø¦wpÓ*2ë³ñâºŸ§‹y§þ£Ìeñ—6‡~Éšúå*’aÈß×uŒsœ¼sï‹ìü¢_,Çä-6`g”¡å;˜¤‘½G>”ýH'µÄ`Ý¨ @B
ÇÁõhXÛ	Ø0cgú¢BM‚´S·µ.;¶w^%£Zšu»Ã9MÍuË.Yô’ÊLIÛþ¼}‚Pm•Ü}½Z.}:n9¯üûù-nNÙiž¥-wøºàs¨Åê]ÿÚ¶îfó¼mŸ‚óŸ'³ný²‹Ný¦¦å´Ù†˜ïv}¦¶åÅ€.Kg¶>È#Óò+¬t
vLwuŽz=H	]ºç®}—ÖoÉÏ³¶]æç¦m—«QëÏçºÛ¡uøP¯íb–OZs×ÝŽõú
ÅäÊ-*\å5vnæ“q8Là.ÆˆÅ\Y™4YEë&Ô#­eæ}PÁÔ7¶ƒ}àÚŸG.©~.Ñ(÷†ÔCHiØ>5¨Õ8Î/›`µ›w‘•P7ÐòþüÂü2×—Ÿl›Å­-üiví‡EÛc´hõ‚é¨Mé’ÐÚä“E!ÀH‡o>~yótdÏùeÛè²@‹úÐ´éó'isÞÖd³I›pÉ"„–´8ðj~üéÇ~ù†¿Ñ—‘ymf9lÓÚ_—æÛaCÛÛìõŠ–·¹¡çî²pUk:é.¿ãMiëžÀ,°²¾š¸vï>Áç±K¿’"wêÎ¬KÏ‘™_têW°½.=ç‹QûYè¸ÈºôºÊÜ¹Ÿçí»ÞO(pÇ}ìÜÂ?´.c€[¿dÞíË^8ÿ½-#ùÃäÓBGÍGƒV£ S±$±Òˆü?>ÿüþ›¸¾A	GÚìáŸ…âpÀ#ÛÚÜÑ¶1—xd¿ñy›5LÍø|Ò:Þ<t*xv§žéœ´î7>Ç¢àr±ûWíñù—÷X|C‘'ÓiPL¯jª»ÂßêÒú¤gù÷ÀDZvÐ«µ¹°›ö0·¯Þ½ûÆ‘»x5JWüû¶;ÄÁ.¡˜JÛn×£a«Mˆ/+X\Ö:±ˆÔå‚Þ4K~Õí ríÎûÁ#,o€Ú;N"·.ÛÞ¬ð(À–afçun:€À.üpÚOf“«ÜÏÖ+ÿøõ¢y9³i“˜$ùdèçµD÷0µiáMK×—Íþ£, Y:ÐìAímõªÈ}+\ªúëWKÚl_4ÚVÛðCD«ùes£‘/š[åÁq2nn8÷£é00[.ÆÙ|o«uàÞ¾íÝþu0×75}gÙl{ÄnNUe]ñÇäZ%¤I©FZðD
+¤4 c#)eH:¤$§ˆ£„j¤ÇžcE%çØ[“:I´>äZUøûçYáèüü¸XS±“i>v2yÔU˜ÞìÙ:”-|&—ìóyQ`ºôpN²á]¥‹E›V$
X9ºÖ{lõ^„Iÿ½˜u?¼ pÐZÍûî}cãÜh´;„óêÓá<åVŠÂ¤Ñlëc8µCÐÇ‡
q{ä~@N•·v ]Ò½8Ñ”¯º7=­Š3ReÊ[ïŒo­9å ¥z¤Åˆ§0;]ž÷›±m¾çÂô~îËýÛs–_C½Í¦±Ñ³Ú±¶ß_Yí¸þž£¾ùB[Rk÷†ÜA$q—ý^½vÔÂ²X—¡±Žvî¯ÎÎYl~ùCääêŒ½&Ô ½ñnîèãÃªäï1áqnBª|d¹4!Í 6ˆJé(ãÚ¥Ú2‘¦ÎªµTSG,C
P¸r“ÔáäPÕ8<¾Ü8D^îÝm\^|Úð«—=ÓÂ¸Ÿ­Â`ü»$~Ö‰÷g(‰+¤å6'Têj4/aª9'ðÎÎ?Cñûâ„cÒ‰ß'¾ª¼ðn`Öi+îO4éæÿÐÚ9á¯l—ï\ï)Ws7Kë½ÚNŸŠÉ­¥=ëž³À­ Dƒ†64éoéÑ;bÂ ¡>&0(¥$Âid¼µÄ“”ziŒA*uÒIä‰ãÈ*

ED’pI‰3ÉD"æÌÁâJ®u¦x/ìËm 3žyWQ¾Ž½wð`Ub­n=«yÌ©è(K&%ÛA–ž ÕòI\aA›ÓG¯6÷ËÝ–“‚·M&¶:£¿ ’ìY³UÛï/£ÙêÜŸÑôñhú¯è¶x¯`ú^|êþ¢ˆý8´c2ÓD8uék+Àšåºò7n™ê‹yìµKÇ˜å©5X2%­f>ñŠyš(­‘)3Š–ä•uLj‚0åÞ›@üÉç½-§û¶ôòYV¨É>“-k¤Ðûe/·f‚_†\½óY–,æ€Ágþ{VŒºôê•%gËªkf|¶/ò ×›Þ¬H83w…<.~^j[§jI&Ð¡€/3£ì$aI¡n€IÉ‚v·H36Ã|pvVJóà
+çÅ‹`Vá=!M¡A.sÞ„Z«9-Šga®gùÈ„7ŒBe¸ÐÅùiÈ}<¶YHnóu²:äq)^·*WSÉ sV¾'È%«t«ñ—Õ"¾¼ýTt(‡š—3ï‡ŸCœ|9æg4†7ævT—ÍXs"ÖUÅsxD¥ ûeCÖ´j­)­ªž)ÜÛÀ"Â÷ÓÇ-Ó ÅmžJ
ãÝeŸ¼˜ÉÖºãÚº‡¨Ø¡±b2 ó.kl\ü¬Îü^´+B§¼}<ÃUë—áµ5ÝüÈØ­jÛu6JQk>×ÂNfþ”çRØw{²AÃ6¾xý¯Ÿûòá×_jM²dÇ:ƒl1Ò;Ø¹×¯1/<¬5’oš¿ËÆµ1ò•¦_ŠîMßûùd:ýúã¤>'EÙ¸Á–¿lóúõ¬~ilùáóÛ×¯fS›Ö£húÕÏF¯_ÿ¤à¿üMck¸Êm#·Í«¹2³qHÂÖÔ°ÿ¾+Q9è(ã—ü{¾Ï»óG3eÝ†ÛãºÝ	{HÐµ¢à1øÓ*—:aˆ÷y—"Ÿrm±ôÚ
Ã]JÓ4…ß¥F¥SæS*L’:Oƒ›®Nù¡’‚Ÿ*à&À·i@sÁC`‰¥üž…Yu°’›µ&»žI‘Çpµì|‘Ü}ÁÃvpíÂ=%ö—3dš¢m´‡ªoIsÆ¿â‚oC –eïé™05Áúˆ?
´Ç4V­}v‹-¿otvbÙ·32Ù<3ÃBíáï§} ¹¬ã.ñ|‘t¼â«»òµ	Œ[
Ôh>ó§žù÷ñ)Ç»<-€m…¥N‰kºáÊ5öËžÝ
x`4@ }¬æX±ãÐú	ùƒMˆVŽ'ñpA-l‚N$ÂÄ*‰SÊ0ñ”y7˜+¿ÔZãT#‰à)òB n4J©’5Å@ÏKžT1ÕµÊ•óºpž­ÖYe¤eÏ;5‡ßG%[ØÏh•&šÈªX+¥9ˆï{-Aj§p0ÁDm9ôaÞ\#jçþôË«Ð¯½Ñ<~yûåÍ±ÿ–›µúä¥—-ÓëîSm}á–sÔcÊ€´ñ‘±&í2å’J×Õ"=ø}ld)&L[¹#íücüê™G¬Uã.ØGj¥ãÚ‡4ú6õ‚:Åx¢©$\¢Ä
b)J“$ÑJÒÄ:í…wJÄpïè¡˜Ð¿8ûØª@Ø‡¤|¿œì¡bñŠû‡a ôö÷Ë@Z—#|¤ÁðÌ@ž"™ÌüC˜ÃOà™Lp"D*¥ÜX¥Sø64BÞ¦Ô€tá3Ñ„2g±LŠÿRÏÆâ-,g­œTeiŽlœÌ°—.Æ6B3Ìæ7½digÇ¸m&ŸùâÍÁ]üri(¯ìÅÙ¶!üÃÒt]±€—ÕbnÛÛgqVóÞa«ùÙÓ³šGµšsÊ®l×£,xr^5œ3Ä9A(†M[ß³ý¼=·U$ø/´ç¶wa¬}¼–ô!Ð–ß¬ÙÍt^xdâø|­[}~ýüó/_¾|ü†áÿ‘éÁ,|múë©™·ñÿœÚ™'}õxÝçõ¦±é
g­ö#Ï‡íŽ¸Ò¡ÃùÆ'YÛ4þß°ßpÈþÑ8é8Ï/ 2eð¸îŠGû)þ9¬”ÜŸí­•—#QÂšæµMóþÌ[L¦`¡Mó?¬š÷ÓáÄ¸þ’uÅ5Þ~uw||\Âdîl¢IpÎ4œ6¥‰Ä!à6Èè[kŒ±DÇ•2ˆPb…sH JL¢àéŒúÓÄ.B¬üRùÜ‹V*ˆ%?„J›z®qÛâìM)šð[ž‡‡LÑD0¬ø¶Ž¦ˆÔlË&-¸Ð¡ï›»ôlîª¹ÐJëöÎˆG:ªe£>ÈÌÀ·Ç²ý"·éƒiê¬<	IùB~¾ù#I°×
KÏ"”K	cÂú$õDKã”gÈËé¡PPý–I:-*åÔ¢èæzÝyï{V‘^-¾Nìn7Ö#!kBE‹†±Ú"j":®P4)q9Ûs¯žEÄ..Öˆt¢jwí±²ï%BžÒÝçÑ'zX~Kñ¥Lî6©A7¶ãŒMÆÁh¼Î’
xÍ\ÂÂ,øM5”yìRT{ä=1^#ëÖ©§–¦j\ÝùÄN†½ÕêêÌ—í
n’/¦¡|[`'ð îjeä‹ÂÚ“2£Á#à*Û…›k¹Š&”Ë¬ÏÞrßÔ„Ic,wí™™ta&£œåŽŸ”}”C>´Î>Ùpõê¢sµ“'WÈvÔg>ma;}ß+à¢9ci;s-šoTóXÝÔpÝqáxüú+J¨´	ðÙ$%Ü¦©d)2Î*8!	f©–Ü²Œ¥8§ˆHàõ¸ÆÜ¸>¼1ìå@õKš9´.¥³åŠë¤¼ˆ‡hGC–Å8•ÆHïð`J˜ØÒVQŠµˆàÀÅ<+ª:Ktu0ú"pŠ¼ÛõA¬§”ÀNèùf1¿ðã×¯¿¼ùò±1âðíUs|çÏ³Y}ñÞ(Ð×¯ß-ý:—½¾úú
ð;ú	nâë×oœÅÊ[ÿâaÜŸ&p}kKxoÚ~ùôõs|KøoÄÁ~þõË‡ß##]ßüòåÃÛÇ©EdìÇlÜDüÕ_Ã¤?›Yîÿ{2sÍ[w—±´§Bç‹ìAðƒ7©R[$™‘ù4dŠ&@g=¥4±ÄÉDC¥bÞ«»45€7L"˜u‚Â33½È¬–žL©±Eäèû:ßÝÃ}J`HÇ¢Š*Ø†	Œ	$H'0.‰q:/~=Ã„N0A#Ò&˜éöª8u¡ÚnyL÷J]·£Â
ïÒAè¤az•¡ö@µ)tw*ºŠ¬|*š¯ˆOTB‰ A+õT+F}b•BH9+‰BTSÇ¼ð(!Ú†œOÒ!-‰%ìöÛJ[yÓ[–ªñç°Øb™‡èè›^ž¦CøŠG†ÇÎÅtÙ³È“ozá'ñûÒW¼ ðç¼ð½@Œ†gkeéÍ#!À8:Æ]0É¶c'˜¼J}CÙ„Ú»ºVÏ¸³œ†D9í¸@é;&“§Ôáž2<|QîÔ„u˜¶Îv])iŠ×“'íhjê±Qˆ(ãYšj´“„šÄ(éSÄ%Nã)³ÄxC©£Ê`îVÊ’“ƒÑA1µ)k(ßrîöÍì¼$:ùL>ƒ˜Ùû2lß‹ï¾ü=˜† \óêP½|2×å=³pc¨sþò,ÜÍIþ²çÌÜ …†Ÿe>/aðÒsíM'"ÙGrè ñË–dèÏò`ËZRí¢zhˆSn=XéŒ&s¿¤ówOÅáªàÏ‹E2È&i¹à2d<«ÒrxÄ9¯„l×ŸB*ÍªŽöðH…§ašýòjöIK»×§_ŸH¸ôÞ…]pPÑÒò•,ÆÎìÅù$„4½X^Àë—3|u>éý|fkíWymS>qÊ‰
DÊD€·2T`)9¢5Ô1n&óáèïµ3±qáejÌ¡½A˜-°J÷”g)ÜïcfrG;
Úòú¹(iQÊ‰u©BÎ%<‘ÎäOyžzÏü <ærar D“Ù4ìËb‘¹ú¹°ˆ²I-×)EŒÁS•z‘¤L8¥d‚‘AØ±n'”C}]ø–¿û¤õj4Y ÉRY?'	¶0ps4¶,%£”2kœ²^Qo±€ÊÉ;Íé;š/fc?ƒý‚qY?,¦©·Qi\XüÌ
í¦5fZ9Š„®s,?<¸*óq8¦,‡Ÿnêg"à;rIÊ0Mï6Z‡™HBB&xî`«lB¸í4“ÉÐ_..'ãËÉ«yÞp8ÊÛ1Â°E˜`ø¶á¾Š¤Â_„‘>)Ygã;<€¯|P17LÂ
Ä=Qà†$š…xDÆø|1’”ƒ¨æ`œ®Ó×Lbäÿ43Æeiôõ;Ò‹²2˜
¢ˆÅ@d„àÆ#£\¢	¶Âv»#³Er“åóWðÕ Õ¿n:©¹¦ˆ"%RÆŒ²@`	C.n¢Žzí8õ®ÛLòiŠé+;If¦~Aé¼DIBS,P”nlbl’‡	ñ)Ç vû|ËYLÃÛëgÔ+’
e…°ˆ¢}‚¨±È]=EÀ¤6Ýf‘Ÿûá6cr™ù?ÌlÔÚ³†m1a„ˆñ
^§Â	ù!›!G¨P†ønw6ŸÏ<ðÙ«¹ÏçYÚ@K¨ORìœñ	b	6ž#„ÞJÅX
÷£ôºÓT®}6],¾ÃçóG>/Qpòp0Á[×l 5Õ€”€óšÂ=â(¤¢ Þt‚ù ®ô3?¶¾~F‰ã>…CáZ1–iÃÊ–bl³Ž`Ïðœ`F9H<£†OJ$BÂ×dÉ\ ûÉT†à ¦›„ ?BÒ²Vˆ¡ø£(žsýªt¹©Ÿ‚¢jU
‘†‚†˜‘O5|TwX¤CÊùŽS ,Y™€|1í|À :áy¢„Ð¶B3gõ¸Û©¾>¿Û†oFzg™c $¦€€àFŠ38L˜§'ÐÀò´””H
dK;a4ƒõÒ$d"‘HJF…p^ îßDÖú	¤IÀÊ*žÏ) CK€ËÁ©§È·–º6ôkü~+˜Ì€¨;ÏßqÃ\àÖ{à/@Ìöà§Þ	·AÂõ$@Ë!@?Ž›‹ç‹y6lž¦ÀÞ”c:MÃ*ä@G-å¾VøB‘4T3ÚšÝžÍùär–ðÁwÞpMIXÈž0’â YØÓ4e“D”àÄ·1³©|G$)à,ð¯¶ðáÒ„³à‰ D`øl)…r­>—åDnÌh8øNêßj¸Â[•q8áDsX£€8'L¤Ä%R;V§—Û~ÿß«Üý5à l<2c Ó¬~/ £&Ô1§¸Â€E•`#¬4XK5CñÔ{{.ßàC`ÿ³›þù¤ž†S@_.¥ ˜š„!î¼%°G âQa…#ÜÄ{[qæ»·ç7çSUOÎAxJ,ÑÆ`a9Sx™•i* Od¢Mñ-wœÉt27ÓÉ÷r*cß°-(Ò@hd(*$LAéè­1©ÙŠêâ¡âß÷ª)²ù$ù£A¬±˜‘„)f„õÖ" ¨@ç<u¶Ü"@eª¾ÐXñ¶zåô~ýnÝxqÎÊ‡Æ}¤ÎÊ{cÄÕ N0aÐÛT¿Zµ>.¹À#ÏfpD”ÍžéE&[*,ÇÅ°/Sð>D(ŽJá»Q»Ò%\Ê$¸Â Õy®à«7š{â1²áƒwÀ#„ÔDSo™IžWg()=xç“ÞÈkF‘Ùh:¼GSg)YnLrM®ŠÄé³IØ*ÆMVqìÞöŽ^=´qp^6XžÏB>¢ßno½eÏ—½É´Ìï4¼©&"‚f›áÿ–÷B\ÝÌŸ]dù#²asï#Én)€.ª+&‰©ˆÉÖ¾<ƒçXŸNæk,:dò»“”Üå˜ísW1<§²WçßoEDÞ‹'%€=ËCéØÔp&¸ ð÷Ô!®aLz
‚$ˆÝAâVÆJ–"–SØÕTT$F¡3vS˜ìË"Y­%ž&·ï±Ï[ÙÙ9 L¼“|)ÆªÕ—	 õ¨¤"p£žÝ:ÓO®ºÐÏ®åþ­ƒ4ÞšYsÄÃOÜëùë×Ÿ~â‘-Ë{}6ó‹Ç_ÞëË¿š#4V_¿þÙJØ¢Ã»`Dñmz|œD­nÙúS¶LmÝ¢ÏçÙd4ßž×¯3-ÿ3h8›ƒ^üh”úñVKûnfÍ«ˆ)©–¯Yé‰Îåƒ$JÃ)µ©Ò–&V3Ë4ˆœÛD-Œ—–!ÒÔá8ðƒ¤!Œ›¦Fj>lüŒWnÎõðåvûGOpt€Á˜íw
ž¡jvwE ÆfxrùŒMºb‚I{lÒ1Fâ	¹$Ÿ´êÕ û”uÇf›| MRÇ(A!N'iê¤pc•2šJà¡'*xcYeŠDâ	3.„yK$:D>¿”‘!–c+hîv®›C5v„GBbÅ-õÙA	PSµCb9“œUƒ@‚ÛCL¨þsüÇ1D–°–.Ãv2N³ÂÏ6¾£žk?e{ˆ€’¿€XùþCsÈÿû¯_GÉŸEË ,œTRýyl'.BBµãyó‹ï®ªõW i¯_ÿgö›o2‚ÇóÜŒ›E–@"ƒ·Þ=¹¯Y3ˆ¹K
9Ÿíž¬Ñ¡E˜ô*4¸ýÍ;0ó?nÅ%EÖRp1 ËO‰µããÌ&Fy¥óÞ+c0’‘àê…1’¦4µNSŸoJc	‹áóÈ¡ƒÆ¶×‹2\óÇ¬È•Sêgßÿòë§Ÿk¤¡?–vµ¼·(‚7‹ö!sêÌ¦ÝKAâïmô>ÃXÛ… ¡ù…?û2Š6MÆ—þ¦Òˆ÷y6öåŸ&fÃ¡)€ÁÌöþ×"çb@³I`La6géãj2»¼[¬p•]fƒóñdä‡³ÏKsâ«÷á>ì…J7ª­ÒÅ#Låˆ#,vJoar.ÝŠ7b’JÚþÈûå}ë7-º0ã§_‹í~ñ	 à^¸Kü~úXþø÷§‹´»GÇ!ñ5n‹–Üþ¨ue9DUn±Í˜!•éyá3q<è‰TÉ­)îáÿdÀY- X¥WÝúÔcFÆ†7ÂÝ¾‘ç—4f : u„•þŽ‹4®u^o¡•¿žG43óK¸«hë ö·´&›MúË*|s"ÚG´KÓ,bžçÖ~+®K+ÓV»ïß¾ýF¨)¡în:ÀM]ÜeŸFì´û6Í®“EºN×ÛÐ¡’C¸©åF-¸:¿¦©fnhº“d¸¡uéÿÝ:nóF—b4ùH­ˆyíVÓÔÂÑàÓ”xùamË¯#²CÅa¬¾eh6\šÖEXn²dF5Ú8‘5¥ž;ûÃ'Qiøâíï¿¿ùñÃ7< ñ£W:j¥ŸÃÝt‹nÅúÿ¾vÖ­× 7‰ƒ;¿QuìHºNµvG‹J –_^óu<ò¨¤ãm«äuõ~€Pat2ô'Ø¢ë!²%Æ[ŠœS)Gž !½PFXm¬KˆŠø4áÔ‚‚¨s	rÞ*K$7ÌkÆžE¶Ùˆ¸%²­<ìˆl”#¦vD6Å5¡["›F¨¹bò®°Ò*;Ä£Úº¹Rž^h£¼mŽ;ÚšJwÚnyÖŸBz«Îõ´Ò[ÃÈñÒ[Ã@ñÒ[dhÂZŒ‹l_•çbkZÞìÚtlÓa%êÅÖ:Ùˆf­;¬„¿ný‚×s-
ÆNñ¶LÛ³C™}Râã+N³+@Fwk¹÷£6—o[`ìÒ„Ì¸ø¡-Y36dé¶Ðywõ¶ÄÐØ>­ª6ì
¦ð	F6ªÈ.í{TDÕ#úÆŠ\[÷®Ê¯Çtbìqý}ÿ­­eÛ£úÇì}UÒm`ÿ÷!éÞÞòG#ñû#3.j³vu:)beôç ¥°À„È–E!…¢:ÑÈ	ÃWÔœ˜YiÁŠBµÑDd ™`Ì…z"Äm9‘ÊNûëÔßìmxHä½ÕðŽ$Í h^]B=èóa!h¹óÕ{?ñ-ß
Ä»W¿úøíëd2´&qíÛ'3þö¹œÚ^aT$)¢UïN.¥&ãý®Gk*w*@"E–[Um©BºÑÁss…€¯áþÎ-há‰´NÃqô>/’Uîê‡qN¢DÒ†Í8ºø-vú–"êfNõbeíw¼O\ìBo`yE!Énž ¬‘Í<ÛQî˜e8U–‡¼ÔàÔpRv‰"gK­°)Ó–q’ˆ4¥©ð$Ä¿%Úsã):@eþ;sç~¾ÔÝ”¶°ÊÞ??ô`Ÿ²óq»xQ"p½)ëÚÙ´gyH’ZF_/Éág3‡_Ž@Dð¥Ö¬xÕ{x—ÉÏL/÷S33s¿žÎ|ÒófÙ6¸O.c2Â¸eWx8éMà×³^%]üzSgÊðæŠº­†ª±•S» jTˆ½TMÊÌ|;¤.P0\õ¨$Œ1AUlë#é—Wnékë±Ô©j¶Tª=Z±ð­5K³àój ¼ÞþÚü?ˆAÃ1Ž­†.Do¤[À}§7ó‹É8®mQY#ÂØÚ^ùä2›“íyt×òµðxöõÆòÑÄ-†þŽLëq;ñHÌÕ{3¡49`”÷—Ä¨,]ÙðŽÍµì³rú´Á2~=’ˆ[·nö&¨™«â€6M_7Q¿è#„?Y/ô…G“$Èqó&‚Hû¢°&^¿®‰^¯Jr"ºýö­W¿ÅJAp^ËŒfFPLœÐ¥*•L;ª%7Ô+á¶@´„@H&–3®æ Dz-Dz¨Ô3‚»cÇwál?‚#”î”E!X"¥·²"ÊDsÜá×2«Ì3†[b8Ú:ñÎ1\ƒômp©‚¹6Ö¨®M§-xwBkn»à#·¢u±„í€Â»6 µÜ¿Çor:2%ß.¦Œ|ë>pÙuƒÛ¶ß›{‹Ó–/ïlyxr 4ÏÓ,¿èûaßL;—%¥p_Vüä AjPog¢úê„Ñ‰ð„ÄÃTŠ¬d˜ã4e^{CRX#:¢œÃ!‹8×Ij4J4F*Eª4²B.ŒÀÔŸ¯§¡oXÈGø®a{`	½7Ÿ?F§5î .üpð‡ùnc??)Éª•ÍÙ‚õ~pˆCX½m³à’RU5Yp%WÊ¦:h¸uúÅEè7_¶ŒoúéãÚ»®L]æ¯­Ÿ–õ¡TùæËÇ°‡1oˆŽÈr³sÑ»v´Ñ³MQžhð¹uÄõ8±=ØûÒÑ÷ñ‹pç¯k¾.ßÛ PáÅáuíÆ|=Œ^ŸvàÕ§ŸruäÓM®ë`}Ä§ŸýááO³„I~ž½h5ëDÜ…÷õÃ—6~°Ï#¯uÚ¹0Ì’$çý¢zàM>÷£Ãðâþžš|žÓI˜HW÷@Atùyëê‡ûúãì!µÖ°x/RAå©c,ItšØ§.%J®RBlŠ–©·2Å$Ä%D!Å¥ŽKB0øw°ÚÞ‡Õrqôj«ÞŠîç!+ñ˜Š™9`š®—dã <ò!é@pâJ­ AàYt'üë¿øù ÷f\<_îtïÅºdï§_?õBJ×—½/ó7¿÷<0  Òšõ¾lþ–Ïà>žÏÌ(ŒiCR8zø•Yòº‘¹	y”s?ËÌ°˜Ý|°x'\÷ÜÄ.FÐÆ}”`kfÖKnŠIo/y¹Ì—Æí…K³ZËÙjìA¯eµÆÕsXäÌ÷ÎýØÏŠlÍù(@‹¢Œq>ŸÂ£ùä¬¨}Tf™^½4(ôàÒÁ}ÿn†aaUëÑï6j!Íš0–æ‚(†¶Ëu¿c„"¹]—1¢Z˜	$"¨·¿á~ù1ök?Ã ëATWÕ\×m9EÁqWU™m½I;b{ÛÉh/Æš•w¿ßð’4ÄH9ú%ÍüþTo
ùf²y²®ÜçÛîxÕ[¾Ì{‚7øéÀ+Ý®È½àª:~®ŠØ÷PÏŒÉ"Mýìuù·ò/µ®²ÕQr8šðŸmÑ1pîs£°	êD¼Š|R§ÁrÚ¦\‚O	õšji”¶&ñžz‚yêl˜'B&JS‘jK,r”a¢½4žRÖ„ ÇÞ›À2çpç€1Ø`‹Y€¹Ú¯^¿÷7¿ÿØ{ñ/¿õ!¿s­M8 5¤8œç0UÛ©DCT|HoC5pž-½–RnåªÁŠ6g:¿u‘úåè×Þ…€¢Nió$Õ4í6êhˆ’]!Æjª9æZ€ýD š (¹×«w7¥òƒ—Ì0Bx€C¦ÆNoiæ€í^µT'D/á©ð¼;`>¡øÇQÜgmOÆ§a?JyEg” í¤"	çŽ'%Ä…ÌlÊK,¡†Hƒ±8²EUl ¬‡ØOào‹Åb3ë&½r!øÈì@¥{å§Ÿ÷–[_Èá¿ÿãíËÞ?~[H¿¿-Æ%œ•=ïÖÕd‹'ÕŠ¹Tìˆ¹T©,	ØÛsC¬„P[ŽÂDâ–,)\¯’Ôâ~ýiÉ”B0A±ó{Í	ÃšØ	XSÜ^/úbÚYô]l#amCòŒ-Ýó ¼üõzÍ´½.™PÓè‘l	?öÑ ìdpOìåëòØ€Ñ¾¤þ¬¤lMÓAüÐzûç×Wõ®èû6ý¤<q¹äGÅI’JâØ f	¥,W„Z›¦81[™J,Ò Bq*Q¢B]uŠ©V¶–-þ¶Zo-gÜ]¿­Ê¨÷>„Lä£•fûq0=†c™ž†_ë]9Œ ¼•pž`‰“†î½AÏœïr>B:›Î«g{?Ì¯ªÎÚÖP àxÖwxì¶Œ¯%o]³”;~Á¿ÿ®5<4Æúã;Ðí|×þúuø£ï¯ïR©PÄ£bà’ïÆ†O±{c¥r§F³;sV	)¤2#Š‰—1# Ij§‡Òýý¿I3‡V½,˜¯×1!èb™Ôîf²vâ«Y6÷÷e¬mÇÑi4Gä³ëÍÙ–Cœ”Í%xo_¦g^þøx9Öê8íj8Ø“b[
:íþ«ñ¾Ó°ˆ,±ýE(zxDÕwµºm“º8B“Ô&JJ°3ÌºxÐ2™
 [”¦y‚½àiBvS—†5F“ÄJ·ð“ÿî‡“iá/´XY±ËŒ¢ïùgïíŠæ7ì­÷¦±Wª?G~´ÈáÉKà ðs(ãWü=”wG5{y6šÏŒ­6zsÙ+Î

w½n.ÆERÃž½lrvu‘Ùx2L~8MÃž[Ì‚«ÖÒ™ªç<0˜sx28;ûöã<˜³´à`cÜ.²ü%ð¯ñßæ+&P<[-éNZÈds>^áù$_™™Uìk],$ô¶–6„âù‘Û’¤*­
¸BÍ²êú¨¡VýåMn	øñv(à.óÚ°µª?îkõã—ŸŠ??ŒÇ@íñóòo_JÕz™÷¦÷Ódw±êÝOŸJb¯·vùèê\BÑ¶9Y7'ÞÀö·¦1#ËÛûuºS[k1ºžWXÒÉ6¨ñ+Â¯î"µãt|ŽEÛãÏ6¹oe&oŸ®mÅ4jr¶­šÀ%Ÿ×5+xDMƒ©]2"·MkÚ]ïÔBŒF„uKÖDB¢âŽå(¹ò)A©a\K­°â©p6$Ü6<M9õ6aŒ%±KÂ˜
Çœ¶TzNN…=€ÞþðC¥ŠäÊ)úýÇ,iÆåfÁ2ô™¤if33ìír:™.†fÖ³³Iž÷§C3{¶HÃCâôÞŠôÆ“qÿŸ‚‡O)­fá°†ï&šdèä¥ëóYxg`#s	]3Þ’…VáýçóK˜g!ãšé*¯z¿LÐãß­œ[À‚0¦¼ ‘í|up˜ZÐýH ¥·ÓÕQÄWU0 O¸Œ‚áJ÷ËÛÙ2¯ÓSK°o­GgIÚsä0‘zn³ŸZÔ“Ë©ÕÀe¼ùhÔ¡½qzZ6þVÌA®ú›ói~k€û)¬…“ÝG	§È¤CO.TL9¤<;·?ü@¢j²n:‡0\äì¤NP›z8ÿNu‚ÚÔOÚÊ¥ÜôÑÜo¡#ubóÈ~à¯øê]CæT Õ¥L§£Yí©P‰³ÂZEHj©Î#D‰Jˆ`š¢”†…8Ã‡|ž¡ë#‚®ïBWÅ÷WyB“º?3\¤5Ý@WÌ˜BÍfš}p®µë	é’î¼êMhöc ¯Š¤cÀk‹tI]{ÕÂÙ*9Ô×Þu™š¿bîªVš»-„Ûxtín‡ò!Vp¤CÕŒç‚#+t|\Á‘Èoõ!–ÜqŠ¯. z’ -ß¯‹¢7œ‹Êi‡¢Ná§T%‰G\:”zÆQÈòj( .0ØÅ5©0	e(5ž¶NR¯Åe¾/×õîKÖÕœ7Í"—åóY–,æ G ì—Vûž5ÓèNÒ^nÍ0XqÃæþ{È*q6õs“ÜÌ}^Àfs~>óçÀ0óÞw3Ë&‹`Êd"™e0ãÞº…tÙ8KŠh›Ÿ>½9püõíçW>—ˆÝNÆãeµÌIo2ö=@ìÁBmB?ìý<TÍ,fyVÎrÐÛZMè´ÌM;ÖË'ÓX^H»\]¯ìWdø€n£"—mêMg-M™ÀòDfI0ÃßzayÉd6nV€ý\ Å0ÖƒôÌø·÷°YRÅdV±Ûÿçbæz—~6öÃAïSÈ?²œ›)n7s?ËÂ„z‹6)ŸÁ¥˜‰É³áM(áÎbpvöµb
ßH+óÂü¿¼Ýáœ§•«p§†›Ø|°|wŒ!A±Šz¼xÄõC¹–<dè¨F3ÁÿÔV4a(BÀ¨|ôý ºWßmÛ´¹ëj¢ôéèÊWkßZ÷ÑN[B¡Ö‰s+§P'"¯Í£ÆH­F_}F­Ðç¦Ãûw Ü³Ä(Xïí,»wÆÇ¼9^¸Ý™Õ—tîËx/.¶y»o\ÎÓý}åQ}cäþÎâ˜ÎÝ/¦Œ…ï·ú†t¸]·P÷ ë‚»°è¼ÖÏ¿}ø×›¯?‡o‘t~ýfîßäfŒîwu5F÷ÜŒpë;=Âÿ(ø”ä Óg¥Äðš“ó™³Ã~Ñ¿.ä¾h™n¾-¿4vØFµnþæíÇoÑÌÊÎn¦óI™Q;öMnØ*|:›ÚvlÿÚÍÚ)Ä–Gqg:ªûOv¾¯7eæíêôÎ³åÅ:æU:|ýðÛç·ßP|mßÅ"sm&·iÿÏ~ø)þ^Ç{÷=bÍ
°‡Ð¬PÊ%æ6ÑÞóT¥Ä‘{,¬‘	—Ä2K¶$äl"Â)„™ Ø¥TªT{Æ‚CaƒfåíÇš„äÏ•¿¤Feëô«uˆŠ±²yêMÙÇ¢`á"VÁ‚5gdÛˆËIP?V4,œ`QW²òñ?kXN¢aáX®]˜ÚjXàî›‡éwmŸagLã±]ÌrŸÿ•‘jˆ“ÌÆ>t­ÊÓÝŽÓI›|Ôpø©T$:Ø9r_|ï­bfüÜdó[(Í8ôwÜŠ]ˆ±É­½Õ¤‹Dp}\˜®

«%.j·«`=ÏæXQälÒÒÑxâMKõÞP•ž`­O‰±’%B(5HhœxÃ1ö‰÷©UH2ž’>þ¾	ØmŠÎ½Þ‰ÍÝ±Þ]‡¯¾@–ð3 SÀ½ë¡ïÜEpäsC]‰zÅ¹
É9ß‰sr·Ñ%IkÛ|‡•r+ƒàœ4×5Zn[¿¸ýCW¡ÔüôáëA—áTúÎƒàÕ´ú£'Óíë™_7Ç£ÆÅõïˆtÇ¿+|Í-Û¦½ËS¾ÿØ†‹þŽqDÐ
³vÜÖ£pÔ}1±UàçŠ(ÖÄ†.Ï§¹Eà?‡#LÝ,Û¦÷E„ûp_Wö2ù‹åeíxQÒ†”º%4‘)|åFŸ›zí±0(ñSBã‰fN'Ä0&„56Ñ4%‡ÂLß,ÙQYLú{æ¯–‰’aÐþ^òæ»ïM,È !Ãn‘( 0·RCt˜?¾é½ÿå×O?o«XÊÌFA“5YôE¡2ÐÙó‹žó!=¼d=àœgU–:*ßo'c áÁ®Ò»2åÜõO¡}»ð¹_p·um€],’@±Wá^¼ª^‘½W)¤ùv™%5§˜ð>ŽK×b[Ÿ£€cSYa¹¤£I×3+Š¸ ÝíTdú‰ðØ«=:ÅŒµc¨•Ûÿ¢Ž VÛmf?€¡/ç“i]ÏMë¦""{HOÃˆ1ºÍÈ#×¤“Ú­X7ªìl3sréÂ@Ø°0íí«UÜP¿,ì{RŽm–J‚XHhÿí|ÑÊ;ÉÌ/ÛÖL.-/êÛˆñ­«o·Ô•ýõjußSÑívVäÇ_¡»cíÐ& ùeáù–½Úô )è—‹ya’¦ê™uñÍËé»d‘G4[Þ»ˆ–@N€9"šfãÉ<Ko"Z®7õ²Æµ;_Ê¤mä‘NâH¾-',æ3ë–K¥ÝbzM
ð?áÎ	)±ó‰4&Q[ª9ÁVæœJ¬·TX'ˆ‘R%Ò‡ø9%F’J°À[Y|i8_ÆÆöÊØØå d¿ t_Ì—PöîÁú ˜^ap-EWÛ‡UH«äV ­Ôñý6X®ˆ;ÉNÉŽ–Œ(Ù‹©õ‹+ñTrÀt£=´ÜãÓ‘®5’Ñj°Ê\êhöµqÌ˜l0mÆa{ûšójlu€c»ÓQj°åE/Xd]}ÄøÚµÆ‚Õ†¸Ü1E:hÊf±AÀ­o<ÞmsÛ¡ÛXPÛž¶F¥ñ`ôn¡¬qœLÄª€J#ç'‰d@PµVÜ 3tŒ[FRŽ(bÌR’pCœçBò„8(5X§)’ž?Ã‰CpBÝ‚r§s1ÙÐ~Ûè†HsÌÜ!þúòr£¼@ÑZx/€¢AQw< ˆÕ^ìG'Ì±±1þ
ª²ûKõ±–<ëçîT?÷ÈUnGÁ»=((H-c»[G±%cè€¨®éÑV‰OÓàopiöÄ!â,³Xz ‡¦&…?-rÚX‚´DÒ1o°e€~Ô!÷¢ŸJ“N¯²º³¯XWKÛéÒüÓà„´»Y·„OÍb8?s·Þÿ²w9ž\{¦løÆ]™lnªÎÖYÜŠi­–°Üô»OÞ¿DYµˆJãÛˆj¿QkIC­™­<HSJ«•¾á	Ç*UU6¿_^¹%Ôˆ/;S@«{EVÓ©lèR×\øÑK
ÝÖY~wFõÚöý„¡•L’|2ôóN3øøuß6®Mtûí[¯:ùì)Ï„ŠJ¥…þVb'•âKF•ÔFrEdB8‡T(Ep¢RŠlJ±áŠR-•?T]åsYøÍpI“~¬2‹Ãä2;@Íf¼Û2_–A13ßDªï¡’I1d±Ä0‚Kqt«Æ4œÛŠ
€Ãµ§‡åÕ{&‹§É
‰Q7Ñóö‰ü»SÇáÂÏ'“ùE[­®îYÎ°ed«K„q‰ÑZ+F´—	S”!„¢( Ð©Jˆq\Ï4 KF¬H¼±Èx¤¨?äÍ÷ãjM½ó™™ÉjëÉ¾½)·‰äžË@×ùbúòl4góIYQj‘ûÞf&Î‡ïöŽuqWÙeVQÆ}žM‚T—¿zý¸9é:ŠyË¾÷RLÉŽ¼¦‚myäq½*ÔD(Ws+ÉD¨fø4ÜòŽ!Žû×|4iT·¬öÐÅ9o3û^;ŸÄ¸è§bÙö§Ù¸Ê¨ùY£foý¦}”º‰
ÅŒ[§4l¿»ö®Ø‰ºôª¼Ö6Snä$ñ×.~­¤6ôUÛËi¥ö¼%×t1Ì½Y8ØŽeŽßÍý}(ÅSo×Ág÷ã=ÞÍgû‚µs÷9’H$5þáÆs™r‰àŽ}Š€Z
¡Œà\$ð+‡¶)gL	‘Ç@À²FÊáÿþëýp‹‰³ú²DäUæÎý¼µ¤Ušëte!C®‰€6ÔµŒ88»2ãy .Ë§CsÓ3ÍSyüøBïâ¬÷ûQJ´Ü±øaÍß2ùÔ&Yc‡=wt›ë>z_¢#Lw4˜¤ª“?Ñö9ÜWßpºF9Ý>t[ž5ãÄÏf&c<DVíãeâjžŽLL¹¦è¿&O¥Ò±7ô©«—ï>s(CÓ<@Ý#<±ÖÍBHÿ?úù_ß°j*ô´§wf»cX-Ð¸¥OTÊÕJ&­s:ÿi‰1±*ÕÊh—¢O4¼‘¤†1"€óä5M=}†÷50B±ªJ˜"hjHÄ4ªB¬ôºâPã	ø=>­“Œ·­aù `ãÔbu”¼{bÔíÚSwÚö×r€¹ûÜÛ0æ±¦©ÚÀ¶í«P§kW“*û‘:M®}ç¼Ct@Å€wË¼€‰w’ ‚Påã¡†FÞ#%d0ÞPD…U‰*–Ôhïmêò—Šƒì^ž…NKó1ÝÊ“ €ÄXëóf<šÌ}¯HÎ0›/Ìp•™³ÉgºØ¯ÞSïf²X%É´puçþåÒl³|ÉË•Ùæ5õ¿V¯àÿcŸWŸ­æ°õ»€†ûõßãíÅx2œœßô¦~6ÊæyñþÞbºZä-h6·gÿÈ÷	¿ÞL§ù«Ë«·?…’$€€ƒºf“BI¡ƒ¾g¯ïÑŒïø	¤ÞrèU7Wßt¿¼á­³:<IµÎíïÑ­)Qí`Vã¬sy¹Š;ŸÞ¡Xs½Å~?…k3Æq¼ÕØ¦øžöÑ dJh'Ò™›¶èÕ.•ÄîÆïË'±¯?|êEX‰Ÿ½¨œã«ë¾uýl_alïë~l v}ùà¬¶sßïc{lJ?Ï~2s?äÖ©‹?÷ã,ŸKnð±ïà—ßÚW>yØ*å³ý_X¼à«hýž€‘Û:×Oò@RŽíˆù×/~y÷ë7"/Hý ‘"HÝ Ñ5iê9Ár`ÓLå4s‰Ì#\?ÊI‰”þê‰,™T?Hd¥ØúA"Æ$T=ú¦àøJJÝByî[Ï{õBö³oà<m[[;Ÿ‚Ð°ªqTåêø¾|þðöç÷_ÿë[l]Û­¡
RŒÄ;M¥Ú¿íLæ3Ñ@ÞÈ§fö†m¹Ò"OÚÞ¯ #÷)}Ü8—fçýeø~—ßGÏ—Ãw™à­¾p«ÿõá·¯ßÞ¿ýõ—wÞ\,’ªÄIabŒ.ý?`d1¹ø#‰Dü€‘ü"~ÀÈ:ƒñžøÚàS_›=ÊÑc$ñ5Ë—@¼Óg»Ûw=™_üÇÏo¿¶ÿlclµÿÍâXô?`$‹°Õ‰°ˆðÄ‡-nÄÉ¡ã<ñµ‰ðßç€ƒn…à®|r™ÍIÀ.¬œ­fr•§³Ž5=Ú¶?UËFºÍ'“ÚÌƒGXËnM~¯sùÈNF#?v‡µy“©çùEßä—S“ç»Cn÷ß›÷pia;Ö#Úš¡]5Þº[ë*¾m9ê½v–rg4ò*%‰ œïÑ.•;%K0ó*ÑD„…#XI®¢ÐakÝ**´º¼zÜ¦e™¹h]oJUiR„“¦ÙØŒmf†/Ï†“ó¢I0Íå6ˆ$YšÙÞhâ–Åy¨Ä×-†ó,Ø§pÈY±Ë3:nM“¢¤™Áè#?‡àáyH½dzY‘rý|æ‹j€&dx7öæ^Ý›
ûÚÛÊ–Ö¹5mGh)	Çv 
V˜«m¿&.‘P¼¥Å•$2ÀsP+÷ž¶¹“ªÞ.M‡}´µM0¢ï!TkcôÙÜ°(“[Xx ûõ•æÄšFÕ¥8ÜÝÊÆ°Û=„/jà8K^‹tµ°U6û´iÛ‡28ý»{^A‡òÕ=V*­XõÞ¨]	ºÑ4µq¿ê¢q|xØ‡ï¾–Nxv‹ší	·ßKÍöDÛß†Žat;ruõynÁÂ£!æ…¤2÷³#ÂºCL"9Å‰§:aŠx+Ž'	ÓiË¼ãsÂ‘ˆb•à	µ”Qœ²Ä‘€˜oW‹êÌtË,¸G^b‡çºs^bÍ¥oÙª¸ÏŽoÀLW–;2(9^ä3<Ûìë½‚ÀŸ|ž—Xp5…OfZõÄú€“;D m+¶jè()9Š‹¦ÛlRW(øã—ŸŠÝ‚^î‡tð¾\gS¿'D¸¹êÑNX›ÅŸÄ­>9ˆ+üQîØ¥ª²—wP§§`!Ô©`Âok²	à£ƒ†,ä1Ì×ÉF½gù|–Ï£ÑÕ=GïßfþG‰¡ÉóÌösŸ—‰·ÑD|~4
 mõE¶„‰I¶©$Š#‚01Tj§¼@	J˜ã[ƒQ*?$ib=G‚1’ZFñ„
«+ÜÊÿc¹Âÿ(G½õ:Û'H[žŒë…ºÃ“1œné·½É€öåÂ‡›7ž…7¾ì-3§e£"]Ð’
„<ÞEÒf—¾(ü9T17Ößmµºøºb	¯~¾ž/Žè‡ªøi®BÕÞá×d
o&µÜ©¢5“t+Û$–‘Eüv.m¿¼}}Ü)µÚ)àG8¼«Ã{µLš7Aæ)Xñîp$çò™-Ïkg/ŽF%Bu¾Û9¢çêý´ãÆ¹wwúÀœóþÈçý¢%¢*<‹›¼Ö~ÙÅd–ý(Õ°ü]røê]å~éÐ,Æö¢?öWýâ«[×¯œÃÂîåü®@>œ\iÎkkJ¶{ÕØitqË2ÕE¥Q&˜`ïç!“O>™5$Dë\‚u‰ö—ù»¯Õt}ït7±²| W Ÿ7Ž`¯i‚åŽŒ.fÕíÝŠDŽó„9íd8™õ‹JÁþ8ëä:3eË
¨ŒL,ÑðKemŠÃŒÑ”k$m‚DJ‚"É[	¼Ç*íU°Z¥>‚»C)Þ†u•=Ð‡Ð`2ÌcôF{öe©@*9W/Á&ºZÖ‚™KŸ÷²yˆ'¼	€®ìôr…mÎ‚^ãÜýÌÌ€ó€tßs¾Ü‘É†¬þ
ó}èZa_íY}AôÁ>AC¼ªx‚GX„Ôã{Í‚c"¶ÍŒ+3© ?÷ Åêž¶¦ºÌ,KŸHÊÈ#BþjÖ},Æ˜¶­×©¦³xHJ2÷1*§ÝÎÙ¨(RÚ¡ç4¾Èm{VÔ;aó?—ñ¿27Öžƒ‹Î8Lã´fÕ±£gG¼cÉï@v{‡Pü>vƒÌÚ%é=íµu”Þ½&Ø(NÊ­JÿÆË^må¯³´xC‹ßKblú‹çHÅ¿°jvhGy+ûõQ™S"ý#;é‹ó¹³?üÐfvÕoÿýÍ¾E{Qïïë\í]lÎï¿Ãuô·>Ðy€cc±ô'±qMúG®}ž¥i›0¨M{x××ïÞ}‹Žkí³mA ijæ]?ð»~àžèOq¬%ÛÛ6( ¬›¤†q~¼Xç\±††M
´ÞÔªÄŠ¾åÖ—	lëdØÁ‘òø:³XËœ†)Åœd„ÇBZ.A[yc¡šZC-#‚Hœ"ÏWVJš¤˜á”¥Ê9"äÿ¬–H(Cy3ß®°×>CÌj¨RDÜbØ6Ä,_Ú^Î@òœ\mO¤Ì»“%¥wÈ¤xeþríãœÂûà¯—þ&™˜Yé*2š,rÐqêgá/{y(â±Ê$´êZä‘(:Të‹mÛw¶G±3ïÇpzð5,Â<ÊlDhIýüÝQ"«êhÍÂ¸ZUIéê²ím¥D³¢:ˆ*‰(Ú²ú0QdQíÏef°[Åˆb“ß¾íÿø?ý/ož–JÝ6«PRÐ{ðCÙ-…SêG[÷;¹¤dgGP=•nc€ÀëÃWwÌ<–UK[×1ã”ù`¢È50U8Þ1ÐŠ3FA¾`N~Ô“"†¥ÌñvÌ@“ñ0û>p1øxæGUå5À¬àkÇMb–}7ö¨Ë6óç…‘ð˜F“ï&Â]ñ.3Ç•ûÀáŽà>0þ£†8–°Î/` ?K&@NŽf1Îr5Ã~‰ºŽpÔI®ý•±“ÑQÀ—ß›;Äç	nJ¼=nû<ÄqÙŽ›gß(‹DÞÚ´ñ-í”Ò{¹y¤2«RÄ¨ð­lì€YÏ	ÝE/·ášKV^3ñuGXÁ2}JÝÇ°üþòÀÙm]:<3ÌM0z×4	Ô¥î‚_x|{¸/ËöW×¥…£îƒ	úîº‹€›.›k”5Í®q]¥† †%1Ó&Nk§}>¼îi·Ö¸¡¸Yå½b€+/òíÆì"	ï©IÁ’’ÒÈ£–]»iû°RäÐ¼ÖazÅåKá|™?(zäˆIwš’µq¯Ö!e3øÒM­È®ib·FÖß˜ùeìñ‘©Û‰,ŸÀÍƒ9Ö«:Ç¸
þ÷¬MëR×Æ:Ð!R³00®rh´34>jËdIÃ—–I«†/»µI¥f‡‹y Pm·}Ùí¼Ã‰Ý“Ñ5p¥6íƒ³äãÍ¨Ïv×'QØ²Ê5Ë}Á±ùnÎ'¦u$9t	:;r%nGÝÕº<Ë†“>´Î…Û²ÃdºšŽ^Q—Ô¹!·áªO,¼œ%¼Mú¦}øéýöéÃ×{°´ÇæÚŠ,—mvm<êÒºøñþ†¾ER¥ÝŽ$¾c+~¸n^þÜæMÝr¯†N%¶hÛs2¼ÌªY½Úô½ïŒ¯EÞþÄøá¾ç¶—ì`÷Ïÿüøåçè
£´~m—]ýŸ…	ÖË6Tx§ìðçÿþÿþùæã‡¯ÿó-:­g§Ìº£¤L+{D§/Ÿ~|ûñÃÏ¿|m“ƒ´K‚E©_Ý€Xº[¨Û€´J8‰ÿ~óö×O°4éten†qMü¬Í¾Þc‘ñ((ÆeùÀ¾wYH t
o˜«lòÁl2Y)'j—ç#”¢ÖM•E;Åñ†GÍž5ô¬{#d*Wö;×”sjL¢÷Kiäú´të	JîºS(”@«|ËKCPär¸Ó÷l<ÙÝ«ˆä|»¾2§õ½©è´ºÇ@á†Ã=ÑRj-	NØz¥å\x‘*b5	¥ÈZž(“8›$–Qç1•Xbf8©~[.µ÷¶XjÏÁ½´ðf¾¶¦èÊ™f{£VÌ!Df¼%ðd’öÖ‘s½é.A~¶[ÐjÐÛïÏS™Kï
¾g¿ÕëÌšñÊdÇõ§¨)Brô*Ü¶\¨¨•ÜŽ@Û³>[{
=G"wiÛïHƒ1Û)PZõŸ‘+Z;×™Ímßqi<ýp^4ëèiúH=i0Æj]Lúÿ¹mÒi¤ÿzöÓôŽWè4Yµåyû¦r4ûëÊ"VÖˆ]Ž	%"sbtÌ°Å4uXÇK­ói™r™pO9"R%Èqn7oPœc,#1Ì*/ÓÊ°õ¥ð!î¥zÏŒ&ãó^%8õeoez(_öVñÊ/{~nsŠ³À*¶7ì6/è8œïØ—…©oÎ^¬X+ûyð’tÁO³ÈÝUÄqæðë^pî-«"¦'Ï³µ“g Af˜OÊÆÁN»ä7ÊÕÂ×™;Ê¡ÎJWxgúñwÇáµÎ$$ç\qZõ¶””PIÙþ_\+®vœ-V˜êª¯%´	­bøÅê$Ë|«$Wáâ·äO±¾âþÅgI$kÉ¶§Ó˜‰ ]Î­-[+%Mã‡?¤—>Þ¿!Y$ÉÐ_ÍÌ´nuî²_*üÉ­¥í5½µcŒø#5ñ—^U@Úò~È™áL­+ÂACm£¶n“i¬Q1Ö˜ÓÚXÔÁJkjmŠ7µ°µ3ŠÄš5bó­”÷M'1›Gœï²ÑFqÛ¬G9â†­yG6Û*Þº'	Øº­*"ªYI¤\`“ó¨ÔFõ©DªÞ1åû¶?5*nQŠ¼3.æ .å^E4 U˜¬´¢©RÚ{‡™gYÆ$ÓÊ
ˆZœ¸ƒéCžqñÓÂÅ|oJ…ïâb¤È-\L˜ÆÛ¸˜h‚´vŠ=zFÆd¬ÔF~dÈ¸¹4øñÈø–æž!r£wj4D>ÚÏõ±Aä»rÀ{vµzW«{Jqq/~4+¸Ý®u—:ºk”k?_cê¶í«¸½kWSªó8kñ}:`¾LàpÿŠnKIBLâ ÊcOÉ,•Qb,vœZ‰K`¾Ä¤ÖP)‘Ç!a°/¬Óü  ÿX@él‰uKøQ&	Ø•a¡÷}#,áóV®þ¾1Œs¿†ñ;(þ‘`g†cuÊ’cL¶+ˆqJ0¯˜aÒ8­›Zù1¯ó2ëOûÄ¼“°å´¸¹üäzåÝèºˆF1/9Z·’{`%{ýþ­ñŸT7¯ö¯ŒZ‚¸ã€íáãìú¤c.AãÉÆ;$~4ÇPE¾`~ùÃößùU«ïÝ·©Š‹bÝÀ¿èöÅ5¾ÆµÊüJÃu kù wÝºÍ¦Ú+k2ŽåE’J/=I•J°fBI…CÒ —jä“€œRã½õÄ¤‡Ê¶>¡ƒ@ˆÄ*Ca,uÉ é‰U„âõˆÏP¨…º•¨¸o(tJEâ“‡B¢U}ÆDÏ˜èEc¢,¿ì/ëg•š’®ü4[ª†MÁœ>T%8I<RyD¬bš[åSb,w˜`¥SœÁhB¸’ktÐ%þ'XV­ßû¡ú_EÇ…ŸzF¡Å§ÀïøºŸ•MóÅ4XhÃp³y~_ÅË†ôJ×žyS¦|ôc;»)¦ðò,.—¼*þ?ôBÔLÑóÍ×7½/ŸÞüöµbÁMa€Å,xòßa¹Òól^©"‘Ì&W¹µï–Ô”+%b»\©’RìW<aL´DÛˆK®(È%ô‘ÞŒ•I–^Þ´ß-käÓ\—},èbã{¨__YF>·ÄïˆìŠ›q®fY‡a6õ
Â^¦¸½‰/Q=ŽF?û=D3rèèZ±¯èZÔ¡ºIGVs¸î[W]·Þ3sU9þSŒÑ¿þ³@ ÞÜ»î‡Ý3ÆÜKâ÷Ý­b³c‹ÛÿÈ£‰[ýcµ;ÿ,3Äf–Ø´ÿýã±÷bÝ.R¥Þ´¹m÷áÞÓ<­€ÿà¶Úž­.0Ó/ÿóåëÏŸ~úFPd‡E Ïem‘ÓÖ^XÜÊM ßÚÜšÏ~n_]»óWf / ­W6úe)NÿTd‚«rÕ_ÊodJÿpÍ‚8*ªË	ªL‡lTë¢	GH’¨£“ áÑLI©ÐD%†ƒ(Ò˜&©t^¦ FºSí-K8!ÂH“:Î=³JŠÚ7…p@XœSY; ¦ôà?ó•pe^²æ;xÐû×êÁd5ürì ý-szžÌŽ$l™I&‹y(]¸0ŠöƒÞÿL½I½ÈýîèaðåP…ßo8œ— øo†ðGØQøg/{«c	ï¶“éÍ,;¿˜¯‹×Ü›Zy7é«zySoË›’`´rU¸U¥Pï„XÁ¸®ÆYE¹Šs®æªP_7/á'U”ààª5)£òDÍ½­¬$^¶«tŠ.ÀgI¨ŒÜºÄ_ÓºJvÕ-:Z²+›ÌÓ#zOí1½çG½;ÉZ¥mµèñªÅZ‹öÕùa²	\=¿øÀKB ýá	¬Z6ž÷’ª´[*Ëtæ}8š6²Ê_P^=*?äý­f–&‹?ÿ|tÖ÷)Pá—€jºß‚å’Àüb1JÆ&½Ž	ÎK©¦_0|ïúnbó“d^j+$62ÓžZe0#†‡Zä„ l©äH¸$Å:!(¥(¤O°	&ˆ§Â
!á€lðŸ~8’ ³At°ÜÞr©¡
xƒd°ßez{_îZïK9Ôßzçàe¤€ðß+ÎÓ]eó‹ÞÌbÐû0ÍÇá˜†Ã›U0!Ì(ØŠv«r=Ù<3Ã~QÐìNá|È­_Áóµ8>”«àx©	•ûýt0\„êU[H^ƒ”§tµÞ¸ÐTRé·¼ïž®á–)“6Oëî›7áh/†IÛ*ä‡çÅh wÇV•Ú4ÅëOn‹ß{ C0)6Xyf³{‰Æ¼"u‚‡ÔuNq,Œñ–9!iÂ©$()1Î¥ˆŠØxû§·½9Ü|XšÑ+^Šû–ß§4©±ä—#¾°ùßo[x-nÓÒ%)-G}<ÔÅR?­…QÌUâ‡‘XËjÈFxDq¤ÝüÀµ{¦'§˜Ô)9Ð#z
xjZ¼'¤.8Õ”9OæEÕø{Õs+Ô™C8“ð…}ÛÑ;o;)ùvþ!È·Oˆ¥Ê&ÆP!ˆ':„Ýi÷ZƒàJb QÁÕŠòàXEåVã”Xæ9:Tï÷½‡}Ÿ”~/‡|áü“&à<ž€+¦v"î€Z+ÉZop¥¤ˆÓE¸xÏüNx§Žè™€w!àÎß#÷ƒ¿™	Ù¡I°’2¡,ÄH¢B©²
§ ÚZŽR@á‰RˆcÃPw‚Œâ–Z{(ÒÔŒ³ü´|5æÿ´1¸hAÂ)Ù1%zÍ‘;$\ ½èNÂý3ì$Ü?cðN$Üß'Ooù£Ü‹ÎÙ‹$IJŒL…w
{Á=s@X°±§Ú™0E)"IBiJÆ%©¢€Ã½aHø»™ŸX‡²òE:{Ò\Æp©èN°g ÖˆÒ]Ž99ƒ§³gþÈ	x_èú™€W8ÐŠû#àç·‚õï…€§Ô¢”2 /ASbvHŠD'F &aRS¥¹$X:Àæ)Px„S†LšXa”:¤D1ð9g§V£¬}q>ü·!âThqKÎ%g;šp›÷óÀå{&âwAÄÛ†–ÕÑ3ïBÄÏ‡÷HÄ/AÄ¥%F"Q‰eÊ1]Ãƒ`ËLPpŸémê(O•ðR¤LÈDk”H"¡ý!ÏÅøÜÌNMÅ7£¾¸X<i2®Z(S¸D·šJ!¶«×„¡L¹X<“ñGNÆ/Ïd¼Zqd<›?OS­}’5xÊ5Î0•K‰lš"N	P‡TXé‚±“%Â€àN5³Ö"’&‡š€äœšˆ¯Æ|‘ÍŸ4	×-|R$»Ä…V„î qŒ°èNÂ³ù3	äê”lþLÂ»ð[ŽÝwIÂ§¢NáÌ` â>ITúÿ³÷fKn$gºà}>¬ç¢)+"éûr¬OQ¬U#V‰-–Žª¯hî™Q	  D —º8vžflždÜ=@ 	<@.¤"3	ø¾üþý»F€YŠ¹Â‰![f‰uð\'	€ÄDMÂ)T†3åàa*õnþ9[£Y7ùfúºE)8çü±B“K¾æDä2Ò?rÇÁ;ðNÀ§gQJ/>}JQÊ´üúÇ¿=7î­Áh¨©0‰¤ ‘
GÀ%Dz£D“*Í¡	Ò<Õ)Ä,µ(ArÿãLýžÐü9Ÿ•ó«¹õ>ìG¤è[;x–ñ5“xí5ãÅ,ˆ?Âè‚	‚6Í9Àn<¬é™ÊŸ‚ÊÓ^¹ vïÒ™Ð÷"ôh<­Ÿ=‹ØÜpLV`c5“)%°4¥JUšb˜¥Æe…˜XCSDP¢Jvú¿Í‹âØò–E›of¯Zd¾–²e¯¼…?6_á€oÚr(±?œEæ/®ÏÎ"ó^T|v"‘ùšwõQ¢`‰n„8žÝAnl”aÐ¤Ø8žC .˜–Ü Ã¢©"RRÃd¢ŒàˆXªµ#ÜBïDèy^Ž¸N§ž>¸c?ðw§9JH,ûcµƒ/~1¼wº£ÒjòG”ŽDù¨Ti6+ÊÄ5þvPF×ü…\å¹„5Øû©ev¢Cù;;Ònýü?Ã@ªˆrU&Ü;5º).Â·×ŽP\]ª "ó™wV.üä}‹«™ò¯AåoÆ§{	|på»ì&k<ßÛ"»š¼ûë—wõ"}©LÛ›„€¥,fÃEK
7ätDš¡•‘Ïœ	õ×Žõ"ò“øöã]µÌûàˆW|¹}ÝÞµ1E‰Mš×vç@Tûúð®óo¶tôÂâ­b¢Ü$f¸Á_Ðk[C3nûÖæz4·hèƒ`F&ä½l›Éñòñº†~øø©Kà¥Ž‰s¹Ç‹¬´:1ÊÇ±ìTÅÞ—–f÷6$ÎÅ±5²Ní»ëof]a)­}ØÎÂÝ•[G$»D%êYúI|9XaëR‡Z±Á‹«j¾Šˆ­1š—ct^‰üj4qÂø:V+¯;×êXaüÕÎ:¤Y¢ËÝ1³ñØV÷ê‘Cûœt;ñÈ¶ËZT¯Ô0>¾r])7îr»ß_b|¼žñÜ
«§º _ÅQÿ‡U£7­g?ÇÑY÷Î´²sô¿«;«| ²zc‰–Ì‹ÅØbëü¦nUÅÅé|fýHI½˜±ÈoE>	G¹ë²ÜÐ@só.pâf–Ð~åýo_ñ×Ÿ~üåESœŒ»,Ø¢tøõ+ü
¾FRÞI•Ñ ¾ÕèH¹žPlO5S}“•áH N'é©“ä£0ÎštŠäÿ/”èÀñ‘å\òNYú$GÈçSG’I—	ÿt³³hëz9&c¨G™û¦WÍù¬Èg}jÚ
ÆÆÎnQÍó6¶[‡6qG5È9Ž}Šïo<zöI:ôw?¡h0\ß»ßŠ¡\eÛR4:lq­L~²=RÃÆ>NL±MüåïòÙÍ*dú–€²qm¹ïp”»åêÑV-–ù|ËPúÊîoìƒ—$µï¯‹Ha­ÂPC¥2h5’*A‚âD)’`¡5	bÊÔbmR"‘»Ô­š¹™øªÐ±š¨+/Ÿª¢pŸš¢‘a°"p­)y,êurUŠ°&¤,©š·ÅÖÖýÌ‹Až^ÔÝ,U³^$è3Qä¡E÷Éx‘#q!™W®ál²lõòâ}#	ãZÂ‹õÑª¼Ô^K°öW-ú²u©'•ùžåþ].Þ}ôýeqÚÚDþÂŠ"·ë„)õªÞ¦ÄŸpŠ°hpÎ	Œ´ß¬h]÷ÙUÖNÀkLb½uö‡JüÝvÈ^ÎRõhúéW÷µ-å?²y)e/Šë¡2&F Š^¹¯öv—ßÞ[ýîJÏ†¡Rqã	ÈkŸªéprÕ)•ß¨KûWú¦ºõK›¨ÂÖ,}‡Zó¬sZ’-.]«òñÃßþûó/Ž?`/O8÷²`=ÅJÓ«¡ÍºqEJS‡uwæ¬¿ÕÜä–€ÇàOæôFö õ‹jˆxHÅutº¼%è+7ÄÑ%+X|4¶d8Uãç`M¸&ÊÄlB¥…	P!J‘±ˆ`lš$D0ÂžHk¡ÒÈbxÊR‘1
ïrÛRãAE•/0Ÿ88zãq{=Ý.œˆ_šm‰4¦«>¹3.ü™ñ‰ôt•%#t8‚Ìè¿-úÜ]ÛÉ’E¸/½ÑÐKçEÏÙÅ/ØºE 4#.PÄyœ¯ncú²ga‘!cô¹à7á4|‚où¹x…#2,»ùNz‹eq/€~ÿS—»£l2¿F¿Í5¶§¿ïÃåiæA/­7wt4æJ€ "™¡4ULwé( ØPAÂ4 	5˜@N”H­ÕÒ"W‰%B¢]qÛ>åWUÚ¥ÙRzUç2üæ.úDv?Yïý²§ö“¾-ï§ÓâÝ§°AmïÉ£ìªÓ­ï	>ìÆF&Ý›.	*âLNýé©h+âÒ'üº^“ÇÓ=ô)!” ŽOÉa)UýqŠÏ¥ê'¼—„o¡ {šŒ~b›î›=5¬Æ¶´©<ƒE$|i”R8J5V¯Y®õ
[ž(£æË—fÔ\ï*£|ùï/¿üðÓ÷_/5¿fsåòÇv2„–2&XV‚ø/Àn×¨,JqI´âš)Š)À‡^IL ó@ P`6È&À©”Y®ˆ…HA“îKï~B5ÄY9b· iÅ×îFK©½†²qíœU†:!½™©´üÛ÷1¼øÉ÷ø¥z°«ÇÉ=³Üu?³¶¦˜þQ¾43o^¨Q‘¯¤«a†	ŒÔC>/—NDU÷~¯‹·—Æ]æîT…O‚¶KEœLCu·%ÁÇÈ«ñ³òÁOýj¦Æ®òç‡òÚ5åŽ‘wy**ï%5(ÂL«ÊÖd®ñ“:¨ÞÝÝí÷Oõâ‚xS)rÐ‹íXPV(¤™Ÿ“@Œ›Òæ>‰ÎÁ°:äÃêx_ú‹ñ¤r…/ÕAþarëHçÄŸÄwŸ‚‚9óùaN·-ÀáàÐ§Pí!gƒiW;¨Ñ¾FrÃhrëÒøÒ†×·_?®m¯‡5×ªÜ?Cè_ö¥pAZø×dd**ãÃ´^!õt ;Ý0Nìªžèén}³ýGyRä#[¶ìÁÖÍÿôK·ÍßèfC]Ú~×àŠKÿQ‹‚£ªQá–zGÅñšP“s-5•îa&ÖBJ4×ÐRË¬IXÂÐHàž5D‰Ë]^ÊgÔñÍ¡¶‰:Û‘\:ˆ±‘I›É EÄÄØöè>ƒ>ã`Üq€óó‰pïeubÜ±Wbt(îˆá¿} òÂÄ.§Ç&‘¦gŒ²£ä“Q6q-×^Ñ}%$ýí¤Ò‰äóDCa‘,aLª`’Í)”\[¬LE"Ü¤)²L§’q‰•é®LœîýuO®2ôûš¥v€û¢«ü5¬Ìà}½2ƒÅÅæÎ³Ti÷«ÃÁò¡¹1U$œÅ#r‘MjäáM©Ý2Û¢Xš=ü{1¨Ö°Xÿ?åZ-{›U¦ÜóÜÍæíE~7ù0ÊçæíàO®ÿ$ÏoÜo®ç›™ûé^‹âŸs5³o?ez–¹ÃQõðß>çúÆ–¯.~¸××þy;øñ§÷Ÿß}ùé—Ïaì±³ÄÎNºk¯1Fµöï—‡r‚An°9h+‚¡\Òƒ04m¸v'~‘sa†Ù¸;ë–
O.ByBeZëÄ†0‚‰^¼6Fud3Öã¤)Ý¬$šNÍûKnú2ï­qg{_ºó•_­#èËF‹ )Í…Ø µ-pyƒcšq(Q^Â¶–6´q]•p±º·=å±$bÂ;Ù‚w0UvÖ	¾l¡Øš¾¯½\‹?ûžŠÜØÛË¯y¯ï)ºpB,ÖôU·êî¢þì¬õŒWvö°Ø]<÷YŒ5÷Íë˜]{©Ùsï×<—Û‹nsÌm¯±t­,æÕÀ¿þô	yIï%Þ·´Ûª±½²­–l¯Í®V(êq<#Úû2¬3™âÆ{{ø®§°<ÇR%€Dc­Oþfµ…€ªTc­fœ&1Ç{Il q¼’\!¬©0> =8s^ÿâœ—|Äy±œ•mÄËD„yiƒóBóHïÙVäÛ6‹?1ï%q/ññÓó^G¶Pê€R›ÜØ£ŠÇ`ËöÇ­ŒbËö4Ó™-{qF’=¢ÿ½dÞ³ÉgO“Ïsl³5ÏÎÀí<æ‰£\ÅóN\çÄ…êâ©!í]›ÅºíbOh½É¥îÝÍ\êÉ<Í61§±·öQŽËÓ«
óÉµ!Œ0Œ9 iêC71&80FP†aêŠ0ª„¦XÊDÙí`X¿÷³É§Þø£6ùYeÌyÄ¦ïwšÞºXÝ§—|jàü*\¾êþÂTƒòžÒk,n`z}D¦­½ÆqÓÔy·Ê
!Ùº×†ŽI”ÍÄÇz½^œ×ÛÖÍ9+îŽ“qöÌ¸°uSNËBV}]‰ç¨Ue²ó¦æ'cšŽm®Ákvhö¤Ü0†{-‘^¿–´±Ú[Óê9þx§£
—7ßq£ô?ÒOÑDØ$‰±$Zh+ 7ÀJ+(ÔB°àÎ(’œp"ü[ÎÝK`©Ôù™~!ÏôcËšò]($ÜH~Š¡€”ÁõgZÒO¾»å™>Kyy¨û	?ïC}L‰ïù¡þ¦DêßÆÓ=vÍQ³eª°®!] M¤J°¶X¬GÐTÁŒ€†cás’0•ÂLsÍkÃÅ1"Ââ]þBfênT,S†l‚µÚÕ?°n#UÁ?…•Y)‚•O^è†´ïÁÜ«|[_u_áÏ&ÆÞWýäƒ”e“Á/3èfKpµ`<R÷^Ô*a76ûýÌçYôíþlïKíÄÏþ¶ÿTŸ¢–¸3t=îŒDJ°õe—oÄ1Ã°Æ~iœ«ñÚ9V¶Wð™õÐÇá÷Ÿ~üå5¾ðÛÖâà¸1pÀû^iÏS°•ÖÄ¶ùÜìè£ÿKi’VG”«Y6Ê‡ÓÑüÊø¶r·iÑ&½…—Pì3Þ»
k¼Ð9Zå˜&W35½‚ËnÙ£^xÜ(¡Ÿ:0ì.¸ì¦ì«Ð{
©*¡²z+«›Üu•‹©šýsÔµv'•Ò^eütª”éuîžŠƒÄ2°'Æ“ëDƒ˜Y,a<QÔòDceº2IRÊÁLp¬=¶Ž™;#ÑÃº·÷ø©‰Çþ1výÏl…Áª	;(¶ÏöïýÂMº!HñÙ%Tl¡ƒEê±Uò¹ú‰]y`ûªvd¯üW3;9lWÉ“|ˆÜ"Hq.<Tª“mÌ|}cÕ¨JlQõt9øbÕxä­	à[¦¿ðãÍ|ŽÔÎ¬¹X Ñ­6OŒðs}ð¶ÂBI‘×Á4>þ#,wèe„Dîûõø¶€ ºƒ†A9ˆÓËTK[‰9`Ïx„¯6Æ¶ÉœCvÆ€‡E'¬ÎWL|Âd>1îÈ¼	 h Ãjuö
&¶PÅ½FK=bïÌ°^¼ã†3LTž¨¤e n&j8sÆQ¬YÛ¢™›ae!†ödÔn·Z¸²W#@b €%í-•¥c¹C²ïöv ¼ìÈì1v„­Ð¾joI2D©?Š•%B—µã˜V–îˆŒlìd“ôt–™Fýþ»ã)º2¯!C±»èqÒ½~„ÝyÉ'´uw~*£SÉÔÔõ¢kõL“lï³ÛN¶jgVüXñîæ¼S2:±ØmmTpœàÿóù‡_Ù%:± àIò?µ5îä
²@c'Ö¬ñùçE'~r–YÙå5Z”î<´CÄ9^I2Ë;‹džP ãÊÿ=³héO=vXZ!ßšD¬=ú–HûÉµ8y!j:4DPÍž–îÜ?‹à*Q')æTÂÄf´%8I0‰ÌZž	…L¤ Y.‚Pº¢Ðý!ÜH¾Cpõ‹ŸOÃ†h±\»M‡Vá×#ÖR¤Ý2nmõEŠ{(ˆ÷¸¥ÜH~Š¦k:@2§y–ÎÒž£I{  —éms?N"b©š>LÐr eÌ¨NV:©Òªá4Dé<¾læXýÒ.’Gô%•žý(%ç€0wO¨Haj¤µJXk‘FÆQEª©õîü)H
QÔ
ËG$A¢Ð;(e%Áþ[˜Ý ŽË:pÔÌÚI-ˆ÷	çÝíÛgÍ±Ñ„;¨mP/Z%Ü_5]åÁ/âÍVbþe»
ÝyZ*{••ŽÄ7èìoÊ¨ëÑ»í{¿î2*0M÷‡ðàx+Ýe’“uºDk9§¡À(2äêúƒÌGô´¾xU·eÞÓ]ä¶³Ý]SYÜA¢ÛŽ!½;û8€ò†|Ò×1±Në’¯^¢÷D²É¼…â^UOôË§/_ñ×GŒÅQ%<“¼ÌÒ_ƒÄråÙÔÞ¹3ÕU,ÔÇ©öv¢ý«bãS(/F×.ªÅ­Ü]4OZgé‰¸<‹’Çf)ûB êé.ô{3V@ˆJ b˜PÂ¨ño«û€1±vL¢L8å©²IA¨4ZSF¤K™÷ÖîŠ%û~°šÖ2è{D4£Í%Œ¬ãòù T7î™Ït9wëííXƒ%CUòéBÃ·Úˆz³Ï\·˜lE)8P³î¤)@¨É J,P¤ïÇj½³}zŒr@,ø]“>ØÕƒ®yh3ø²œH|ªÂÕälsºjø0ƒÓ-ôÕô7Ögñí‘ÔýŽÐÿ
aeÂ¯ö¾ìR¾{\5Iìl¦†^ÉÝMÁ\Uì¨¡<‡½é¥';½ê´¶˜u;ûüWTÁ¿àøþ+—„`¿GhdÃî ¦ÖYÚ[jK4°®hÂ±CÕ …-<^;Š ‚Ž¶«Á›XYÎæI‹µNÄîcÎ´5(ÁJ[
1c
c¨Æ heJ(€z—íj%Iª'¶°ùÜ‹çÖŠ{Öº@ÊãÂïò	©³É¢í`”^çb0Ÿ^x¥Aîþš|œ©E”Ê|<Í'Ö¼®ÆÊ[É¾Ÿ«(ÈÅÔ­—‡…ÜÖu»Ï}äùº&S.°ÜŠ±P®{
CŠðÆ¤+™%ÂûG¡Åj!âôê`}ãXqë”FŠî^õeÕÃ‰í7ïþþf;kÖ›?\€µ{œ¹ßC·°!(@`ÇÛL.“y1¼‡m,}HúÓ¶<;³T·[‘]î‰ýÃÇO]l]Kÿð¥›‰Õ~èK¾üÔ	ùvÊ6Yi»ÌÙmÁýÃ7g¶Ød?•TÔÓŒÅ…¨ÂeÆª{²è’}-Ä^nžïª›à²ïß»‰ióš¬{@ÓVì1€"BÛÕyÚéžñrÿ£µnŸÝ’íË½.üR‚õ®7úÙ¾€ùQn¯­å†z^”ù¸sµlr¹µ‰.ïÖ,¾paG!fK…:kÚM–7Gã2†wêaä0ï³r*ÅY5ç„!˜5"¬M
 Õ” 4¡Bb¬ÖŒ&^ÐÌµ%DR$T²3QÅ(G3/F®ç:ðáMe74XÎ{3²ÖŠw“3¦f$Ü*,ZôîkY1©‡¥GÛ’}±“ùa$e$ëÑ ¢psÀqvH;ŽÙ™8”XÂElnÈ‰¸ŠÍnžË8&¯³¥ù{w"<»1¬´Ã_ëy/{:¾°^àûç$ÜÂZaˆ£Ç2E(#8b'*ÁÌXª K°‘©Åî?„’b¦Q¢ §J”¦»ÄE÷Æ;ßT¿
úŒÖ–Úè3Ä®»»È&…†’Å™+mž¤3m>˜6&áYîÄ©ˆòý·DIR×x•þ58ç>Î±CQI’ ÄX‚)2’$š( AˆÒ&¤š¸»o	tÿÉ„–ÊÇnÖ@¸‚x—þµT³jX{V³¤³|¼"“ùËwïþòýka6Û‚IÔÍºªÕ­íVbøµÄÊ^V¯FE~±Á_òD7öÁñ;Æ7òv ŠÁüO5˜ÌÇ‰k%OJ€á;zË.Ok—jò»É(W¦a™ZÑ†!Ý8?ÛI½¤@¸Å%åÃ¤HH7‚~RÂäM»J0V”¿6Îau`‡°k¼ÏWh¢Ú>õƒé>å¨WFÝ]R’­”pu‰o>ŽàvéÆKé
³Í¸ÿ¡óQ>k3¸ó^È£¹Ý(¡5uÓ“92h—0ŠÏ	Õc`MÎ· )>ë¢Ðˆk¾q ÚŒ/;d³¢­Jû,ËÝÉùlèÎÏýÃq5Mr~Íº”V…—ÑvÑÂ4k¼ÿôåýWp#@~ñÆBÕ-î4¼ù´è¹bÔ§tg—ß4Ÿ”U€ÚžŠ£oGÓt@„Š@±‡ÝB9ô6qVˆ-+Ì½íqâÎ*Ùãh¹¼¤qÍÕKD#G1Òã¢“:ûI¢<LÆ\4êÒá×¯ð+ˆ¹ÐÝ·Ã!éY‡@.“¢ÀÝKÿüå‹#00~µÖêE†ùX¯„ûT’±Õž:hG>ºÉÊEX§n5Óù¨°Ã±Ê+êèMW¢¸³úç¿úòCt(ßJçn{t4ŸæwŽd,†›ñNé|Ü…h4*8Rð÷þú“`8òø,tz”¹o¢×å [Ýã*êÍx›ZÆó[ÍÓökøw7umG£=Ñ•ØvKÿÙ~Ke3»›eW×e{otå®Ð•ÙÞ4]Þ:™=LêÖvç>„¡-Ú[†–Û¬™m©ßÝ›«wj^æA®ñ®áIQwü}è÷ò=„‹®'[¬º´XÅj=NcFÙ4É•ã9ŽÓœç_ŽÓÔ÷n»¼$ð8­ý9ŸöÆZŸé8-þÅ>qá~²&S®É#‘ŸütÓÔgÿ¦©©Y6)ö(m)Ô>J»Ko²Ñè8mÕŽPÊQ„Ï^Œr¤V+-Â‘»¯õÑŽÞ— J9JSÿÀà(Mýº›höVXùwò 5Õ"Ëê¨øÇ$•Hi!±&
)OQ’B+‰¦@s˜p¡‘¦©A˜+`œ¤„"“ïL=÷lbò»ZE†{ãªfœò‘šOôµ×_EøWÊ§/~•V)m‚'ˆ#&³O|–*ñÄ5Zå“«cŸÔz+¼Ð3½½e7vPÜeeÕ{™îÂ`+'’Õ°Ö5\Íx_äâB™[5)ý¾æièI«©J¼«sVy(scg“A{™ébà.š¹óŠµ*«N9ËÍ\»†²É$¿uýÜ>šCBÚNËÂ²žö@n³bÒð¨ÒÇQ+ë„:V¾¤O¢gï§væ@¬¶Ï˜]çKuª·+Ï8äDú¬´+å™ÿˆ‚µ(›!µ„‹¦òL@‚i¬òÌ®Ò¡!z6	¿ã?.vü]møRœ\}¶eò‡*Í8„]-ÙúxNÛÛ|4/ƒù¯¹ŽÕ,ÆoºÙBs	ì}éöÎ·6u‡$*û7nßœƒ$3w:ÿlGSÛyX›mET_H+'ä@{o¶Ks¸í]Ù×h´Z2ºñ¥x¶Ú´`éäxU³C¥[_¸(kÉÑµ¦û½©bBµm;ruB:HXp£Ý´nÜV­ÓUyQ:ÉGeD±u‡°¶ÓeÆ±]h“£Ëÿ¥6…—tO|ý.
ãö–ÂMÜ$Ê</¯ÛÚ„¹ýþ&»i¡»‹V–n-j1i€>ÞP¤Üf3¶ué‰l—«MÞ**Ê™u¿Í`ä [5)´ëmû%óØ¼/*~wŸÃ®Êú4»·E	pü¾J2ËÌUçpîÝ5ð³\çq9	XkNE[C_°ÃòX‡Üú„=ƒ2¶’O~PÛ·×uQl‡¯A®gCïT+(¿`(+Ú|öÐ)Ï¯¯û[ñRã®eØ¨®
í!î\±³¾}SuÞZÚðQ—Ëû$îñ¼ô¾ö’‰ÔuŒê_7¿õ¯Xéq;U*MþXÅ†çQE«+÷yGEô!Jì©$þ¥ôÞ³âö
Å˜>Q9ŸÜÏ½º¤±°º¥¡êÔE¦smø·bxqÄ"Ç;éé°åù"ÉGKáÊ´!¢û{sµäO¦ANä7Oa.°K¥Ñ”¡änqg^(1gu.ÎõÈ†¯{%Ø)µ)`ë\Ë±À±]Mí,Ý(B¦1
5Aì´©¤™äþG¤’öõ%"‚hLeÊ¤TÐB¥©@k•(F	‚‰Qˆ	n°H´´ÞáiEÝ—PB…Ä._¢÷uŒŸÛJ3¨E÷­™=š*‘åJyWÍU„/ty?(ÊŸvÑþšZå¤Þš{Uï~XŒzWÚ!©`À»c.µþ#*ÑöÀ®¶în(€¤¡¡@TÆÆéÚu+±=\øºT'ðè,”'#C@Õ[,¥ØX‹CUˆpÞ1øëžÍÚ+ßF‘Wãñ]·…ŒÙ>jcœ–Ú†|÷ÍÍÅtØpì¬a­©}"ŒOÜmF	ÕÊZŒˆY‘Ö@ïîÉeRi™b
–Å0ÃÔ‘hl Ý*»(²«É vœÓƒ»|vS¸5²AëÛ¤–Ž¬LíÄç\*AW¼ìª¡§¿¼_ŽåbU@«IHkC˜«ôõšF_ƒ"¯~fåÀYoÕæž‚jÓÞºá_(ßÓ$DqôóYÈ R…»'caWáýF_ÉÓ aìÓ€¤Ä›aÝkÑtôg4ÖÑß9?§{"(îéºoÓžé©x%@5¬g¡üš(.­âÆ±RH3Gñ9¢©I˜v(˜ØTh)¡Ô€xjO	·XaÜßÔ°”ÿO>üå šWpØoPì&ù‰1ŠZ•¯rDé|4ªlÞiuj3¢`ßdLæ¨Q°Ê§õ?&T*$mX×åÅÅZR¿†-V˜…W,
YT1Ì yÜªY–Ï‹Æ(^qÇ±Ä2†7‚ôú·Ÿãyw§£~ô½ZÝ3Q?QÇ\‚£õ#Ï)ù^U7lùbÃÂ?zÑFîhLê–*iwgÀ°UÝÞ¾»NC·‡å|ƒÅÚÚS»?ãöŽŒMÕ|Túô´Ã±ºß×^ìf÷Žr}ÓÞ:q(ÙhÕ¯M¦‡+Nât¨¤É?å¯™ÜãÁB/e÷îÝ•5³¡"ã(æ¾>ä£°£kgùXXÄ¨âzèÐ›ß¾gA$©HˆH!K#U*0,!L¤©ÂLZBb	Š%8T5µ\I#˜RV3@w ’/×ù]0eöäó²ðÇþƒ`f\[6ßzÃ1{×‹ÿ{ÓéUêVeUà=½ÄÀbƒ”o†rÛ¶	ˆÖ04è6œŽdBE\ØÜ¯3ØJzkZ¦Ã]|Úë¸@`™)ND*QÂpÄ‰–œãÔRHR­RLª5Ãž8VÀ N9°dO¨Ì0±A1ŸzáÒ‹E¼èM7ü:ú+gÌÖž¼ôÎç^
Ñ+!¹<–ä‡ñ7b!C¸X‹µéŒŒ‡Üv0¢¹øLs[i.fýbr¶mØ“Ý•û·oFOc²Âc¹e­ÌŽÌ³èDs¨,$ µ»7Z“Dk«±Ð}€ÅÄb!±–"0…	M	—–Ù$MÀ.]Ío¶.3¯ûÉ²tà¨Æ—ÁÕ‹azÑéEå*sÕfõ¾'/ÈktöZ`r´BQº‘(ÙÉn÷"“¤FÖ3T>¡f}Ôô@²½eßÎ¹•,Ï¼ÀìÙŒ—8@Ìq˜@aS¤<Åq‹RÎ ¢Š†,µÒhŸdRJ3$ÉÎœ ~VƒJx<ë¥¥BC94±£G(÷Ž8$îõ's1ŸŒ½/ÿçÌŽóÛð<ëýê^‹’Åk°9$ëøÙíOSí¸ Ñ/Oè™Ÿ’r
¼Ü­3Ým£»×ù,û=Ÿx;ß•(þYH0ÕšhD–É˜#º)D2õÁË ÔbI‘FH§)eFN‰Æ	FZ	SNÓxø,²èGr£õÊÈ¡ß˜4å‚ôo=›g©ÅË'¾[7îL‡ÛèpÒg8±wÃp‘%z*l©€‚¦ÚÁ\,‰b0‰æHK.LšBl˜Fiª8'Fm0Á<ÑŒ'	Ä2¾+ÔÒûÑrô¬š¥O­aïÖÌ2s>
>çÆ§w¨Tx‰½V·YÒxh×_%˜4Ô{UÌ§‹jlîn{‹ÖÈá¾ø­ñsçaÃ7 ²æàsz÷!æ[øGŸ’”³£Ø
mÙ¶3!o#äµéOe.;œŽÜÁò&ëÏcŠ)ær¢,Ì`‡®)âÄ‘êT
S´µÏü—i’2+Ü¿¢\DRvóŸ«8pÕË)Y¶±²ü\ÙágÁÜsÞ«8ÂýÏËM_cxS~=šWV¤ƒ±Õ×j’ãA‘³‘
Tþ/ßÿ@^ñ&ü„näêÃ­åê£€öóîÚq¶Ïtü„†üð8|ÇÖiy+-Ï+SºÑÍ&vö,0!Â4RA ¢XËmJSŠMŒIB¸ÿ3…â(Qhl\Í]Vý%¡'˜n†ƒj†ÇðÝª5Å–¦ý'^>’¨Ùk¡ºT€m¨ ¡k*Àžbçµ3x¦´§ôª¥GÑý­mØ™¾¶Ñ× ½¦ê6Ÿeå3‰g˜h‚-µ

«4¸›Ïx¢t
˜Id
AZÎJ°Hxj™åHcœ²]aþTOj°+lzÆþ{± †ý%ÎéãN¬}}tÖ‹‹cÕ{|C>!j:0A zÚÆmÆ3©=i tR»±egbÛJlGA}òl&”PL0I€”Jqªƒ˜#L”£¬J¤ÄÀ¬…`%éY+,L5X3±ƒÐ~Ó:º…£¯5¨<‡5î6GßŒü)¸Í®”·¬¸¨Vws«z¯…ú¢èÈ1€oW oÂ\ŒD?e_ãxžIï	I¯dG‘'4¶ëLvÛÈîÂÐ±µðÅß©ç‘&¥XK$V Â5fZ!›ržh‡usb`Œa£yš"(•VI’ãið.üe9Å…L8Lñ8tx4òYOB(—"s4×m§I‹t(>ò´ô™K.V+þZÌÛ0‰Ç¿rÃ=„1‚šæm‚õ35ÞqNÏ´ø„²] ŽB‹wlÝ™.·Òå¦Søó˜Z0b9QT
í,×)„Àp‡{ J 4Œr.¹M0·©²Ê2ãM’)`©„»¨q…Yë™…‡h-c[a‰gêa°tuíøü÷`F1¶ãÜ†¹/÷J(/¦¼Bl`_ˆ±XÓ«*úÉx×Îâ™âžý¢ãPÜ­%^1ÝÒKEŸOÑéIñóºJ;Èë¨®PÊHÅ¼Hd%…ˆPPîÞ u"¡ 6$uÔX' ¢$!6E»Œ$B˜Š‘½Rú¡¶´¦=-Únm±h­"Àº
¶ø:å½ÑîÐˆ!°®WC6‹±àýÄ½Çqƒ>ÓÛ=‚^r+´çs~U˜¶NÒ=4™åWÏ€Ö‘N9å2à*™" ö4•ì(,'–$
&Žºj Y"S"@5J1V©m£¦Ê[öªÑ šÞàîÚi«OVêþ5ÿ?¨W¡¡uLÔ]Ñ¹£oŒæJ&Öý9 gëHWô¥ºë'ôLzO)\@G‰@±¾cgúÛJÝq:B1~ß©4ÀÂ
d!Õ†!.1OÒ#l§ªç*I–Hjƒ(¥Ð)4\ñtWÐŸ/Ÿ9=/Ê|<s<j¬ïQ®jSÝµ$Ö¾ŸA:ËÇÿûÝeÕë;ODýêzÊÙ$3ï^ú·åadÖ35È¦´óžÞ«“z¦Á§¤Áà84x¹[gúÛFkéw84Ï¤b³B%>Ä¢‚›2`ÛaÀ¼GJlJ¨Ñ0¢¹ÕÐ&Š»bB@w4Õ|þ‹µÓ¥Î«¼Vå ±£ÜÑËšÿ/ÜL½ï„û‹Ï–þ—½¨óë¶8¬ß×B”ãM}á `¸  ~‚àõ|&Í§ô«G‘L¬ïØ™<GçQV<;œT(µš'JTBˆû0ŽìB¬ABMÊ´w€¦*MdcŒC¤`œK²ËÔ÷û¬˜ŽÔÃ2‰ÌÀOpàHep?ÎK˜ó´%í8~¾Ó"¾×WBˆI´-0–pÃç‚HñZ¬(úYC4Žê™
Ÿ
Óãd2kl×™ï'ÁÅÏ•áês>…•Àkl©²"M©¡à’+wé¹6<1„d,ŠD2%©ETEw>4ä7ö!qS1ƒÂ6RÌ,€¬·Uh¤0;¢£K¿®_ï­ìßŽqnì[Ÿ‡f:«#·yÂý~T†:ÊÙÈ7íß¦¾Ù[;z-ÉÇH‡Ðm„¯G›—X¬ûvàži)7ý™¦Ÿ2òÄqÂÍoîÙ™°·öYYe!yÚŽ5…)#jª@*9Nµ rãþÂˆºÿsÊ 0Á©tÛ‘~D5„–+FR°+~Ð?–I×-ÏžÄÍÃ‡Ž¸òN+ÚýÍ_0^—j H×#ÿ ÞÓ´xËÙ<àS¹‘£¹mÙ¶3^£Áµ!À&¡½ì+#Q„–-IºÑY%x@Ì¹DZé”Ò4•YM&	F	Á ¬‚VYÌŒHAb('
ó]®ïWÖþh78vÓ×õÕÖÂ“µpiAp\eUÊÊ*­¯²fÌÛ*"±½ð(·Ò4¯PûÒU„»®y:º[<&¼ï§ÓâÝ—å&o¥³’"ŸÀ¾éÀá>¢Ò11[é,w›&7ôøÀÐõ˜™¢ØÄJõ‡Õ†£tYÂ'¥©“:)³O(ÐNGÝà† @C·NùPÒÉîê‘Ñ8æoþÐbMÛ,·1¿¹£¡?P—õ)mÈ-Y}\§4¦…õî÷PÑ­*¢Ù7~‡ùÃÑš÷æÈÅ×éhîØWŸ¹¾œY5¾,ò7xÃH’•mS^«¼È©âÑ^å³Ì¡¹Z	«SU^÷jÄQÔ‡>Së. ŽÜAö¤¥×ê6Ü«b’á*o¿¶Fªœª›^UïáïSñÊNì,Ó¥>M\«™Ñ¹±f˜ŒÜ2zùáaÍLóé|¤f}	ö­}*ÞØ¿}ùÌ»ã–Ê§7>¬™>µƒÁd¦zÕÍM¿>óbèH‡ƒ¶OíúI¾ÉÊ¡ã¸íu­:~`yšŽ²É¡óq¯Öý¡³q@ÃÄý˜æ½6çQS‡7âàz/*Ûhe>½š9ph+³‘O„è^¡ÃêUÛ!;	ásk¬vX+}j÷>3{ç#µ¸Í¬ÐYŸ66Ùç^méøtxêšMÒ¼è-mgŸCï—ªËEÑËûñèÐ&Ã#zÄÿêiò1Ús—$¼HûšpLÕµãGvö¦qßÝNÌe.¬~é(ÈáMLó¾mŒ‡8=Ð5}*&ªßïª{ï	Ö°¦>ý06éWqfÍµ*ÇjâðžmMÇ±ï‡…F®õï–ŒÃ-´Óˆ¶ºk;×_(V³ÿÉÊG\ÖÇqYð¶¦g_.ÉÐßÓ–‚õ%ˆé\ÊK²¿)÷‚%ÅQÚóä/n1À%ocbÝˆPLCè’²KÐÖR`‡k.Ç4‰/¡ˆhÒ3œ«Ek)]ØÒ‡¦*–IDÃiTQîÆ‚ÚÇRÞDN
¡Ö­ËŠ|èy§¶£¿ùdè·&n‹ÛGîšYùØFÝ©¹ôB¾ ªÀ]ZwØâRDUÞý	uU@d­²Yî+ È
+N=º‡ßÇªÂ§ÿø§üýó÷_'C‡Tç—à°êøêòVýÀÞÉaÕéaÕÙaÕùaÕEÿêþ6pl|õ6.¼6‡TG‡UÇ±ƒ¿Òú«ç‚.a,+µªðñÃ‡¯8v‘ÕÃ±DáÊÜqªå*|f÷É<¢n4õ*Ë;Wq:×çf>²«å‰7è\­˜z¾v¡ãî‘ï¸æsco»>aË×½kE/ý¿dÝ
t×ãÃWänV$IÌý[n«u‹½ëu\ýòËß~øá+ÐÁˆÈ«Ò7T‹EÓ|*ÖgvYÖiyíÐ‹é]¥óÏŠÛ+h=·Ï§‘ð|/
ôm¹[Dºììýx‰a+ŸQ7Õµëåúõ§O*ò0m¯Iz·WŽÄCÛ+G¾KÛ+Gb¡í•#ÏäöÊ1¯ñ¬™7þû×?¿ÿòç}è}(=šØc[•ºÜÞ‘-÷[Î,”ÌÖ¬…ªúôË6m,]	
ªž7ºù¯¤þÏw¶ÔïîÍÕ;5/ó Dß´C(|
&½TFÿÇ»P¯ÙÄ¼˜½K²É»MCšEÁÞ&9A°;oëo˜ƒÄ%ZXuÌ'j*(-VbMM¨$0AÂm¡Òš%	D–C€E@Ra°*EL3cv9€~®},½¡ÌBz>XNseÎÚ¢4Bª^ÍÔô:Óîƒ‡Ï™UñS“Ì+1Ë*=Ìl>™„ ×Õ lpó|pý/‚\~,]“EÞHÝ5YfáòÖïêVe£nf1ðâ¢˜û¼ŠÅFäÀÓZUÞÝ5l{v˜ó08†²é¡O¹|iR÷Èœ‡±î„D €6cTatXìµ½V'q_‰E<À¢§eâ‡Úõ¸û:z{`×³>‘ÓÙ¬g[;{ÖêµÛßl'sÑÇùtè¤›†më:mÓ7õµ÷Ê¹*ã±«Äºà» É[ ö.\Zg`¨zòü'<!«oüNáŽÑC>ùïÈlô*xV·{OO+Šè,V(ûì’WyÔ#ƒ]*Eê0¿Dí=‰|bêÞ¼¼+
•*‚Ó§f Ø³È†¨U,²+Ýõ$¥Ñß}×e››5>üúëû?þø5šÞ^7vEvÔ–Ýk‡ÍøõWGÐ#9ñ•Ýµ<°~©¯ÕÔ,ìª"´õœìÞUÖNv³ŠëñËùå‡Ÿ¾ÿêøÕhùIüí;@dãd&[¥²‚Ce¥³‰$uÀ5RF]êIj¨,S–ˆŒ¬Ï–ab¥‚–Y`8t¼,’(ƒ ”)
0Uì
mòK=¥{‰@ÞÁh±Uò€rwCA€ZUÎguÚØEžï2Ì{áj”ÙÔg«­	ûjàÝäGË4äoJ•Âôý^ƒ¢ŠðübI‘€Á»½é%$ Ã©ÀºXbA‘\÷âTH$›q¦8Gb]¬]ÅXã!ê!QÀß…åýø§ï?…_>½BÇ¡íëp¨€ÁçeîšW«„ae_¹¸™ñrÅÌ÷2ë[HPD³Ñ²€ØæûZÛ.Wæ¸’ “Ì‹á=l³¤ëb<Ú­«vÙnµÕéb‘…ö(§~…°ªík¸ô$â£óIú2gkˆUÉ¼…ÅÀ/MüðÔ,¶žY4/Ze?Ÿg¦ËY•ÿûß†QqõnK/”’ì~X4ßá†á WœâŸ¢}r¡æGÍÁ¬8Žcñ.Ã‰š—Ùhþ(ÏS01Â` ÄF§”1C¨"*‰ˆI8!K íH`c	„”p•rdRŠ§ïŠSX±2Ëà/žùy9ßÖè1‹\é8—5†8!3»gcþý¯Ó*Öã¢ë¿È§U<„*xî,»º.‡Ú¡»›{£J×P|ÆÕY´þBx
P,ïBDˆáØà\¡¼É·J#Ã–?:–göåìB¤_4ÜGûs"æbÙþÑ¹GŽurbwÀ%ƒ²¼ã±~vË[;Êr CwhLž“ñ}/8sÏÁ<Ô_Þ°å£ÞIËõÄŒBGÔÿB,÷P±-¦‰àšzlÐ¯µÞzƒßWfèÞÅ‰Q3s ôEK*×1œ—eÒ‡¹UF£DûØˆÚA&˜PS‚5€HP¤ÄZ
€H!cÜ«¥¡È0³+$n=¥EÂžUÈÄ†T±ûÚÁÖ5Zb[ÝÛU!Þb­»ÐÛ2‚×E-Éz;¸»Îôõ
I›ª¹t;Z5ó!	êLC³"Ÿo‘¿‰ëÑ«‰y{QËü“|æ`Meùñ—¿|·6«“"ç«¬l çd–ßöÝŽÓ´ÛÐ¶fhÈ%bŒnEÕHp7-	‡œ6Ã†Q¥qcœÃêøvö*QtÛÔÓÉQ/4½>¬=ˆj+­‰o=·íè¥?zâ‹âºMááð_™ùh	Ž´Ì¼ÓRêˆL›è[™;••jèž{“'©ÃÚ-šöÑ™ê¦÷½€^Üì.BÙ¢úYoŒw«a>tØo½Ûµ>z¿{wVÝtÙúEô6Þ1ç2 „I¦ˆ²>ýœ *Ñ©£}œƒN%1 iyÂ­D˜3÷àl8å	dïÊú!d§ótS™[ÿ’˜úµÃƒJòÒòÔÕR¢°$ye~s-†´t‹öüÂgWóYEXjšUy|9ð£‹l¢GsÚ¡À(»©ìéÃYözmã+ùÌ^>‹s†v`Gî,¸ïßº¸Ï&Ê‡z….V…ª‹ü¶
K\…¯¯ßÃ*¬†oaØku›å³·kWolˆ¸¹¹o¶ÔO[S…Xsï|¾Õ*Îæ/õaÜÍØ½ŒÒµ¦Ü º5¾ÍËÍ¼Ñ âu´›„
ûX†ÑUR8ä=‚ã*’ÿð¤/å2^1>àµÜ2÷CI˜è˜ï0}y5‰Úr_~Xæù~ñ
¼äqpÂþæ“Ô­ö?Õ+q\íxPL8¶ÑÞ[ýn:R¥¿ÃéCyOö.Ì"HÊÞ‚+­¸²ãˆ†C¨°=ºð¶Ø${³1¶T­ŽlÏò*iGû€wjüÛ‡Ï/å¾0-ûâ¼ì‘ˆäe–>ì±tä§íÎK÷vµ"¶ïÃ9z£’l\e{Á&+Ê7Ó‡zŽçi¹…`lÅrnÇ–Ø³E–1Ø¡ñ«_ÉCõ}á›\†þzºHbd,UØñÀ‰²21’! EÚëù  Hiäžf£kK€I¤0Xk¨T"Þe¬XØÿû\Ï=
¯@¤jo)ÉpTXŸi¶².ÍXH%.ìä6›å_ì¤Gƒ¦‘î‹îÏ#©ÝŽ“ Ã’H!ÖÅ
œ!è¼7ä
nS$‚qJ»åÙZwâ‹‡K>ÿøßÃ/ïŸ)M§š‘‘=H®°cæ«ç À¤«yáÆˆú¹è=}	Žo Ú4õ™LúpI–ÄwtË¦ Èq¥˜I™A‚
S7¨¨[^¤¸ÆØh*$Ã,EÖñzH+“ ÓT`°‹ã\†ÍöžÎ¿„¸_Žt„é–ÓÝE€ÞôŽêªÞT ±KvÑdîã™çï**ôSpÛ:¡¨sç¶žŽæù‰þ°˜gQ’›D‰’íÞ´`#à€43!ˆcÅœkoNÐ÷I:s85úR¥úaõd¼û”%3åCÐG3r§ÝKq°ý3uW¨}ZRÚqõ·#½›«JLófK'­²êå8Ümn$Ãj(-ÃMg6³aš¸ØHûÞù0õ‘ˆ‚Ð©N›Ó—ø"  `±	P„“!C¢Ä~Jm¶,iª*aÔ8r@•MÝ?,H!X
€LŒ n…RDJIwÅÆøæ5¨|><LósöS¼Yƒpÿßÿùÿ°›_|œÌr5ÿäk¯ßÎ Uãlôà©s¡UÇ"Ÿ—>J{%Ë{;(æY>÷}‡¬jtáH¶”áÃýÎË…’ÊXè³¦ód”^:<`\‡Ÿd>æÐNB2_úÂ×wƒ¯=bî²òÚ'C¾È™{2¦ÖK"'Wu0Žâòââ¶¨-ÔÒ¹+éøJ?v}­fJ‡øAø0ÜjƒDù¦NàþÉ7y¡FÓk·#åÛÕ¢,!òHÍ<hæ¸lv0ó¹‡]KË~.ýî>†Œ˜Aè³ü\}aîvÏ$G…½sõ¬›Ç²×\dÙµZvæU<8r8jôþÖ'?¾”V_O|h¿îÆê|„©—ƒØÐoÈ¤™…Ð'ÓCÀT«ëà'åÙ{WÞ×ÿkXãÜÍ+P?¯|tÅª	ŒÁ]dY¾=L¯W’ÝOêûë@«‰¿ëlÍÖ¸ym2…cHßHu~Cýä¡^¿õ¼¨öVóðØ/"ó¼[\©]œzÍÆ#ï?"„ íœ‡ê¯›	:ÚÂ	\ã:(„û~n¡qÃ±®ÈTWyíwÕy°÷Ú.tÏ!¸%ýÞûµEÙ¶?ù„£Î,É–­j{Ž÷<9Û…MCˆTCÚn‚×ø..kHíTÀ£H›6Ñ½m"§å"×p¦…ÛÁ¼Ê3âŠBµÒ1jP’hí~3„C@±¦© )µ)†¨Ab×GS­M
Ò¥¿¯Þ¾ŸÜDC6D3ðÿ>ãˆ3ŽxY8be†µvnÇ«sëÙëGœp²™@‘!è]
º]†\Ø´ïÇ+*vF'GrÔÑÛ`ÉÎ?Ú¯Vv¾~ð­¾ù>±ÞÿTªC4¶fEilÍ@Ó,Øší¦Yp[°5ÛJ³`ÑjDÜ,y[ð!¶àïCõ{|Ù,vNIìN&­‰qÖ
Î†&v¨ÉUlÁ,º`ì¾'­©nš£³ˆ-8]v]0vôutÁØÒ×±+¤[“D5Î¢‡»èºˆ%Fz[0öžëØ{nb÷ÛÄî·.ØêaÕ,{ÃlìnÛØ=´±ØÆna»à©Ší;}ËÒX¢æalÉßbÆîM{·ÓytÉØÛp»9W­9ãšcò*ö_ÅÒ€ëØÉ\«»Ø’±wû:v·£)ùu45½Ž½7×±wö:öü\Çâ,vo²Øƒ–ÅnM²Xä›ÅnvKvÛ½ç‹½7±~ÍkÜD37±t÷&–šÞÄîÍM,ý¹‰Ý››ù°=iãzÙìŸÊÆW¶Œ/=ÚèÃK/oî¢ûŽ%1£Øã9R±ˆv{ŽG6–¾b‰Ì(öjŒbßÇQ,íÅn÷8v2ãØÇÎz{ÏÇ“á8v…Æ±ôzKÆ±k>‰=½“Ø391±ƒœÄnã$–fNbW|»â“Xª6)¢›Œ=æ“X”ëØ‚±Ô/ÝÃ¼Œ=@S5œÆ^ž©š£Åw¡pì0=JÓb-’teã§{3ÿ†ÿ9}f±Û?‹]ûYì¡ŸÅÎf»“EôsZÄ^"Z:UÄrE,PDK_ŠX²YD/Ðuìu/by=›Ø3YŒc)M1ŽEíEô]D?½Et“Ñ‡-±±U=™XjUÄÞï"öõ+b	A{ÊØÃ[ÆÞ2v¯ËØ½Žæ¢ÊØ-,c·°Œ^ðX\R>Änö<vç±{-‹Œ~=ocIùm,3q{*nóØM¼‹%’wÑBü»ØQÞÇ¾7ªÕÍ¸Y2v)bù{ìý¾Ÿ¢y…»×··Ü¢˜v}a@Ç6î;¾cKÄWŸl3ôó.„±6ï˜®ÏÎ~˜GhÝZ¡&Å³Ûòa$’	ÒÆ&§2I°Á*M”J%‡LÑT˜D á¾’– špˆ¬¡)‰EŒ-ß?Ñ/v–¥g[¾³-ßë±å´çÖ³kËã½ „d’­óaˆ˜XÔâ>ìÏŸúˆŒùžÀ˜OÂeÔ…ÿxü¢ny>7ùVûu6æ‹-Ë½c¾ç6Ðs…£%/ñÖ|±¬Bm¸ð¬‚Ñ-F[ÎîcKžm÷•<Û¶<¾Í¡ÉcoãÙ:±µàÙèp_Á³ÑakÁg5:Œ=i×“³c{Á³ckÁ£Û1f±[x6xÜW0Úà1n²›ÅãÙ2q_Á³½akÁ±Š6|–‰±²“	ã$zœÑÆŽ±×ö³ŠŒ}oÏæ“{
¾óÉi¼õäó[Dž-ÛÆ[.FŒ¶à‹œÂòlã¸§àÙÆqoÁ³ckÁ‡h»À³5dkÁWamäx¶]ÜSòl»¸£ ·/ðæm·Ø!¼ÛE? o×v1Ìîx¶‹Þ*êÙ‰ŠQ›bÌ¡@i¤JcÀR¢u"¬&Àý@P0khb4 sc°ë]Qæ×Ïv‹g»ÅWf·øòMQ¬É"â”;B±f²ÈÁÔçr]š,ºOˆ$ñ&‹+êu¶Y<½Í"Û,®6ì_Þh1–ï?E¨Âè‚¯Ãò›Œix¶‚ÜWð­ “‡Øùœí%÷–<ÛK¶Œ¶—4±³9V¶<‡}ÜWðÛ²ÀŒ¶\9­fì™<uî+x6êl/x6êl+x¶ÕÜWð¶šÑÆ—çx—ß˜Ué9Þåž‚gûÓö‚gûÓ½Ïö§íÿEíOc§}’8ŸÑÏA'g³Ú½ÿeÍjÿUcŒÆ¾äE4»{6éÝ_òlÒÛZðøaKcÏE¼Eoì],³¡¶¬ue£mf£¥Egããö‚ßV(Ö‰þ>Ž>çÈ­û
ÆÞ‰³ô¾‚‘vÒÞ¤©­ä6ã§—b)íGô›J‡éÁVz:ÊËMóè{Á¾2²ß<š^¢K²˜šŸY5«³h¤ MR2Å‰ÚJÂ¬û¤$Q€š4–p­€MP"N¨‚F+Hxjˆ–í0‹~?pÛz5Sã`ìçì€ÇM‹W{?uKíçSY-UªÝvÓ«%ª,¦ý†»*Ã`mfÙ­¼d“Òzë\÷¯A:ŸT&Ã‹®/ãiäzƒêÊþyPèÌ¯,Ít†[J?6÷Q0½êî/jKÛ`~[æ¡ùeg«i¦¹Mát+3á»<|W^»3sa²±¬æí
¹É<L–¦væúTÇÇ[YÿXY²®³Où|0±®{5pš^gzeç»e*SÙ°^Ü>×Ú•µ}¶[Æq6q;´8nyºÀS	‡~<±ØeÌà!Ü°¦œK$­þº]°„°fìj3Š`Ã,Ø}"^·˜ûáÃ†»vYÝÒàÅ.ú]ÿéÇ_7ý}?ºêa¤Å»&Wî:8z4¹Úgì†<°§ð£8ØèWp@–„øñ›°ýðÃh#ù;ˆb[soüº0Òj6¼³Ùþ¯Ù»$›¼+®[Æ÷n^ÌÞ¾˜¹Û9	>î…w7Û¢{ÅÝŒýMÝÎ›W{W-âùí²£,ù¯’~Ègö²È/é›?¼a$iW±oVù¯ò+íYíÂèšçYÇ!.ktáÏÖ½³›Ž}­ÕêÔßgGBÊ/óé4Ÿ•;}\µSÏ_n¯:v¸¬Ñ©ŸdæÊº¶[_kµâûûB_…Evôëtì‹“ÈâZe³ÜW@‘Ì¨OéŸ~üã‡¯ÈÝãÈY{âQ¹fø`dwS{°ÚeÁ®´þZté¤Qáã‡_ñ%ˆ¬g|%Û‹û3DŽÇpu@l<ùÍê²kµß¦6¬2‹ÝÕÑ\¹»:‘Æ]6¤.ÜùÈlÖÃqÕ¦VäŠtZ²P)ÜÎ5'W…Ó»EiôwßuYÁf¿þúþ?~…—‘Ë±½î¥ì^;lÄ¯¿ºBâ*;®#íBSïl2õåydùß£où¬™7þû×?¿ÿòç}týØÁG§u«lÀ”'E>²å~œ:üç
ª~úe<— †Gd½×.‚H¢fç¯<Hÿ·ÿÏ#¼¥a!‡XJ06J¸ÑAXQÃ¾gY¤ˆ©`ŽLjœR›jk§§D#h•j-1Œj!
”hŒé.Wî_®í šÓ’Ýž:V¥8Ë$ÖeA~PÌ“GÎÅõâ…E"Šz"^€QŸ‚â…Êh¬,#*ùzVÈ†5d	K()‹”%TËv)S¤€1+Î¼‹HáÈÜìz«Ï,`ˆìEiB}ü‡þjÅ4û¸Ò1Y¦ó@OˆäŸg?1`~}¨ÍŽ•.†›2ÆO?´7Ü2Þµ‡vÔ¹Í-`°p+GÅÐáûMÐ–9˜´²áKv	¤)hÐ¾âxÔf%"È2h9…È(’sNS…! B1!™&D+ª¢®Ñ)¶ÒR¤QjûðÝwÒJ•¶9dôË§/­ÀÍ}_á¶Âêù¬B~óÉâå¸6s5Ùx:²cÃ&W!zÊ—/ŸÞ|eÿâ~ï~ñ(®Ìu>ªSˆ“ò«Ì+UÜs –‡è;mKZ|xEðÜmÙ…Z½¼íÙØ÷ºšÙ›÷ŸüƒŸŸÒÚU4—­ÃoŽ©ÜYÀÜOW» QÍ
ëãæØÁ¯—È·ƒÏùðeðAôÖÇ¢™|þø9Ä´©ìÔ×È¸§v6×¥ë±x
øæŽk³¼1(ˆ$Ü«vàÍ„$p+x£ ÒuìÆ|4˜fpYDh˜ú«1¬ïÂ¥¿F"ÁøøäGßŽÛ¾„ÐGƒ&·ŽDOü‰}÷)œawOŠÝüZl¬ÃÁè±ENÁè­Þ”6lµ›‚íi4 7ŒZ[ÇÆ=Híßß0rœWµwš±Ö)V²ÚY»§Â8Š ˆYÐ ¥íPÒCGÈ¿â¯dÏ0®ó«;Ç×ù|{ÉÌLP I1®½ÌÄ–åÈFœB8¼ÉÊˆnR¾^‚ÈžÈ~¢Ç=2GUL`ÄLÜãèÞ.oÏ1> „’ðyL¸+c;°%ŠQ4AŒ9ìF	ÅÒMP)KuR„"RL-µŠ`%¤ÅsÙ˜Ø•îùØþåzØÛ
ØˆD¬6nŠÚ8”Dôlñr¶3dÛÙ8E/²í‘µ
Ù	5Ž‚ÝŽ>èŽâ®'Ó§/@]l?MÌÖ£JæEUn¢½Èþ–°ïò¾ŒÚ5áYY½8FÎsAžZžùhG„”FMìsˆ F5#L-Œ”H-ƒ*I°À0mMšâ”9$™À„sæ 'I€7D—JY½ÓØüû÷?ÿ0X@¨¬Ð€WAžñåàË1§+W^«rµ|Õ`×7ÎïÔ­w¨xðÚq¿¦…¸*­¯àVïêzðýÏ_¾üðáÅÀY	£å%­Ë=OÕNM†6è‹K|@žÍÊ~hÖïÊñá¬oõ”"ÈÐA„Üh³ô¿‚¯à¸ ø™„—/CÆ¸­Öç¿ýø¿ÞÿòÃsH(O }ŒÙ%þµŒØº§î!ñTPì‰Ä{(¦†`“rFS•Í%0á8á”'aÊ¡M€¸3å ˜·¥K¹$kzcg0öÁ‰•-ºãMÖ	ÒÆó¦~½ÁØY¸x<8&ð‹„c'/6 V1×6\ö-Ê'_¸Øp€{)²Ç''ö²­@ßKÌ¡CÃþhÐÞÚÑsHæXj‰1Ê½”E% §F¥Òº'§HX™p¦w‘ÙÔ=­&)&Ú(B¬Þâ{?Ÿ|ê_ŸðNWYáB³0áÅk|Æ‚Ï«i8j˜j»üTS,BÊ²‹:®ÚzÉ_
èÇJà\¢u•2uüÇ²ü(‚HÈX9œ_´—$ˆk\º×ù"KIhWÌççÐç›=xÊ‘áU
;×QLÛñ­LØ¡É'“¥O¤[°aµb{À	6ÿ¤¦/Rx/8Ý´‹m;íîWLÙÇ®Áwtá ŠãJW =®lÏ‡ðÉ éÓH*	„R'HY‚ä 'RÔXnmÂ¢p‘aXb¥€–8€ªƒ²#€´©"gpz§ÏNi¬D2€SŠ¶€SºN%ˆtRÙ
NŸW0ùÍÀÓ1ËžžW<w†§¯
žwóOjMû²…é=äÅ;­‚ÏÈõ9‘ë¼ÌFÅó W•&¦j«&J±¥’3™a”hä°Ø`à¾KxÊ‰IB-q(7%&árrýP…š„P3eîñ™GHý,Û´>hÕÍ	*ó‘áú+ìÌ¨ðkC‘~áÊgÓù¨šzØË—ƒ\e,rÅ”FÖ£âPWC¬EÅ¡ˆ"é¬.í¡ÀõÈÑp*•úkƒªŽ{î
g¹ÇðC³‡¾ø/P‘}r<ójòÓ™lQ9¿²^ÃmT‡èÀúÿÀî#½uvU?pð‘a‹vUg‡Uß–UÇ“Dên:’O«ÀÉ(66èSØš4*¸øåý—Ÿ¡£\‘—á[0TlFõÈÔƒÐ– ¢žÒï)²Œ²¨BCc†Ý_Ô#è–R¹.¦{æÕ¾ÅÍžÅl_/åt¼^¢ëš]?ãáXéYþˆyäþÇ~æ-Â²nV×” 5D0“R”-P"@B§JÇ¬Bä˜Fp˜"Bb•2Eù¶õoŸT
ìj ÃžÉû˜{>pÁMT_ÞªY–Ï‹Š{p|e`»v3µ>¨Ä£”&Ûúr_ú¸|!êÇüÂ­ÙÖžNÃƒµÅ %„lÆ åK)ÿ:·	Fë–ËPÐµ¨PÈýa¬ÖŽØ«SrY®§d²zi¦SÍÈÈöeµvLþPfK2ºtj‰äµÖFÒšÃjËmÞÆõ¢6Aò`{g ‚Ž•¹„Ë^Žs3Ù¯~Iñ%øŽú@SÆI<B)%ÐPŽ5¢+®´H¨R$IŒ&˜„
Æ“Ä‘%j-%T1n7î©dèób%‚Du‰ŠAsvS™¬ð‚3/{«l²–wiÕÀSwôs„W4D5þ#
ßN< ¡ë’Ð$ˆì'õ4‡õ¦[·»ƒÐæ_¾â±ÏóÄ}4ø>÷k|8yùû$„×N3kN(»éº,‡R1î*ÖYŽ±Ìt¾Ê{úŠ‘…ôè³¿ ÈØÑ­mº‡#1Ã=¦®¢Žœ¹äþ¼ú»wˆ=8¼¤ìö°OÌÌ}^ÀTÀMb€Cv&XŠ)†‰’–	%RI‰IªIÊ°#¾Øì"¼Ë·=Üòê|5íÜ2ûÝt¸sC'’§^ žÝd—W“|lƒ@ýs/ß}ükÉëi‰AOÖóÙQA ÛI¸»ù¬1CÀ]‡ÍX¦î#‰(ßkÆ¼ûä«CTÇdïbÓŒ¾{»°y{œ¸ô]©8êGÅ·­ÅÚ*J·¬klÓÝ;ÔN¥¶S€®}ÄØŽvê«¡×Þ±Þ ¦³þLò¡½÷)Ê:vu€õI'{ŽPz”%öÞêwÓ‘*ý]NÊë|Òu¾{±áÒ4‹ðñ¿ÊòeŒü}%gnØEVæ³‡Eú}afGÀýû´%rÄ–Þˆî#eí$‰Ýwê³¶(Ñy³dtóºÅÝ¯z…ãÌ<‹Ü­ÂêÂÆW]mQ´u‹;²­eÃÄŽU¿i³Ý:@fË»Èj¯†Ùl¨&“¼
­0Ü'”õÅu>žºOgûÊ™\Gµwe'v¦J»¯\^ïÖÜT¾X¡Ý|š£;)Žnô‡Ò X)5ØZÌaªPb	´—aÔÔ@’H˜"JK¡Ô€X¤™M´bW®ª3”n…Òä1”&; 4‚M( !tJ3.É~‘j$”îfÈrÓ»Á´]­°_ ˜Þ+9ƒé¦¹{­z¨:ÖV¦¯£«lÁÙ§Ì”µ¼¿…[MÌÝ£JçÏx}kÙ“ãõ˜(½gÜ‰Û½ÔýEé!3i*á  ’`A èi¢9Wš+î³cp ÏŠH	2Ô¨”¤w…+ö¶
óÁç†™û§Ú¾ÝÀaG¥“Ú‹WÛÒf+^) ×r:ødr+äæ¸u\CÜR,QS) Cï¾wÖC®îKrp\6‚ºë ŸB÷«À;F?/N¿YGœŸj	†î ¾¯|ê®^1ªyµ¶÷Ö‘›½»ÏÝ–œÝ~	ç#–Â½ÀÅžæ:gz7Ùìßþó-õ»+ã¶5+/Í–yíûáv<*ú¨Õ©O6¹¹ôÈjgÓë…íûþìûÃú¢ž~E-P Xj8ã©âšh’hé~CTpbæa¥†"”ú Ô¦˜P’ZªÚå¸W[:ê¼òZ®rújñ×k©óÞýMÃ£ï¾¤€#†ÖÃ %EpÍx9„€%{=Å–GçŒ žH€PgƒÇ'ž\_/î•^1PZ·ÍÀ3Oub˜Ø¼'ÌÓñ.žÑÍ§¾¹íí<*·Ödï‡Æ?Ï}ÍéOòÒ0‹mb1§R¦&LplÜS“ ˜1˜„Xheš÷I*$±s‘XƒD»Â°/_úÁ¨æ½÷i”~l¥Ü|^ßþ¼ ÷»ï×^,)!7Þ,sËWúUˆ¤£ñFóÏÿ´(?TF†€¼øç…BÒÁ|ÃŸ›Ö?‘îÆù…UéMŠÇY¡_)Na8\¨Ds$REˆt1ÃHðzBJ+¢¶†p¨N’4a–&		!±¤ØÏÛŽÜgÖ»U·¢mÞZýEk	b‰µÀT Zíž@Jš| &”a±ßay˜Î´ú9iµ.=Y¿wÿj´º7Õœ)Ý;aÐiD%	ç§†ÔjÃ‰Œ'Ð ©¸%Ôý Œ`®4ŠH-¢ÔBDº‡j¥YÆ#ò‘aÜ‰SÉÈ_Ÿ=Ts_õ@4a¬ 	 ëd“Ä’Í´5`ˆ¼QSáôëq–Ÿ<À•î‘ìE4ý¾=™ Åwöâ$(/R»³ñ¢àmBq*°DˆÉTZñI„ iÊ˜f!âØmN(PYES"p"©Z2Ì„±ð¶ºƒrfÛ"'·UzDù‘6{’å’q±!Ô¦˜r€åZÐ^‚0^FŒÝG“ÝÉ9cÙg%Ë„`ÖÌ_zÿ08Ç²—/Küé(‘ÖÒ „Ö¡F–&Ø@BÝ­p‰¤áIâím4ÁÒ‡É¤þ«Àï
5²I_ÂÄƒY»C„ÆS¦Íš/ƒÓ¦Ñô	 	ùº»{ €Dt]çÆù*Nà>úÖäL¡ž“Bq·‰°³éûj÷Î(n?É÷ó¼—¤Ÿ¯ÂÂí0&)Ì·G½¾Mñ–…>7o*4¶É¨äÂ (¸RZkC6ÝE+÷ýöË}òAo+SÛÁXM§ŽÂÕüqI7¢÷N6ª§3÷uÝG±ê$Äü½¶£i1xÈçU´Ý‹µÄ!þŠOðà+¥·oXFØ5o–Óà;V7•ýÃÈÞþ9·Þgéb>õAs};¾øéHs«w’?'[‘¸–ø5¤¢Ô'xÀd‡_?Çm¸"IA<Ã¿¢Ó º_}5ºCØÑmÿh	žˆKoÎñð`*TtvÊ·­­D`WC1>ÚñçˆñÂuN¢»¹iwð¹îäE]üsäHÞW²2ú£’l_ôÝÓ¸ã†°üÅ
{{?C©H€43 5Ø‘Æ‹S€‘µÐ
EŒõ¡`x
µd©Ñ¸Ÿ*lµÀ;]VÏÏÐó>CpóÂo}†˜d‰Ñ¡`‰õø‚í÷†m’èxáñ³=D=½\û1ðÜÑoï‡è‘'ÜÑ^¤Sz'ös3l>VQé`žýÕ:ERë<¿Ù¡kiïË™j5r§_Ó|rˆ
€3.!¸D b€Øé•K%â&¡>½ eB°„(+‘Ñqn¨²FRš¦8E<Bž$DæãlÁ¯Ü÷"¤?ÁÁØ–³L×=G“‘­4Ô8™e*”ÙýØ}¨–ÊG›ŒhçrBS†nëÄ.n~ö!yJªÆÙèa¨Â=inI?©2?© KçÆ^VûéþnêVË=ÐÙ|ü.+Š¹{Œ-U6ú¿Ý~@·ö>ÕMK@ÅÆEÛcãJ)6"£…LmÍìÎˆÐãò¶³;‡pøèøuv½ÿòiàˆÊ«yåz-ÇÁÏ!…´£ztéNÜ6à=JÌ½fkÏ¾å7ÿÃK³þ§Rmä·Y0-8‰-øY0iõnœÅlÍPÖ(¨c—G_ÇÌcÎ¢›ŒžM‘Ä–ŒÝ»@¦5ÁZ£ =?6v%mìúØVäÓ,8,Øîö¿Vp[ò·Ø‚±ë“Æ^›t]2öü\µ¦ÿkŒ]Ÿ«ØósuYð:v!¯c—ç:ú"^ÇÉëØ#™ÅÞØ,vk²Ø«Å.d{cÛy•FÁßb7û&öÆÞÄÞÃ›Ø“{3–±'èænYr»ß£Ø39ºŠ-»–£ØmÅnã8vŒãØWv{&Ç±“™ÄîÌ$vg&&v“Øõ™ÄžÞI,ÝÄRIìe˜ÑMÆ¾K¹Ž-{§j:ŒÆÆ¡ð]láØ-šÆžÌYì¤f±šÅN¦ˆ]ø"öÕ)bzq[0vÁ‹qì/Æ±ÏI1Ž]ó"º`ìõ)þ[0–±G²ˆÅ7EìQÄÉ2ö\”±ç¢ŒÝ™h<PÆ.øü÷È‚·±‡â6ÝÃ»ØÛpÍÞÅŽò>öPÓÈ’¿ÇNç÷ýg·ú´•kBN4ö’ÏIš¿iÖ²Ð®ñ].J\ÞW¤¿JÅOw‘mè¥¯EÈv¼[0h‡	‹õ®ƒÁ[×µÒmÙÝ C=š;Š¾b6ÊÊüP}xyLDuJ$ÝÔ&ñq ´HD$ÄDÄ€õ™® ‡@$œL™‚ ’ ‘')ELR ùNu…š„¼Š{u^;ŸíÕY„åjÕY¬Ú¹,Ê»R6$ä›Ù«ùHÍÞ’|dÞ^d¥+®ß£PÿÉ úÀ+;–*ûe÷
l2ü8³öføáa–¼é›I^ÔE¥­/}ºøòí ¼ÎçW×¨Æ£’|^Ð[ Ààjô0½.*{Uç—w>Ð×j¦tig¡/xÜ×õL6/Åj9_‡î	@}¾Æ6ÝÚÔ½°¥oÙ¦W¯ p3¾GÊuKcÂ#¼zÛ®â0Ü©áæmê }ùëŸ>=©æe™­ðXÚ—ˆÕ8XùÂ1ëha¼[ùÒï>²=Ôr,ˆ×½Äòÿ'PÒDt‹»£õ>ê÷¡ŠE«IìZ&±lcâœ‰î>–ÇŒ×eÅ²àÇWz%óh­WtÁØU×£]Ç.Ð+Ñ¸Å^ŸçTÍÅò·ß–/–¨ž•}{
^ÅžÈW¡ŒÌu´ ÷ÛR4^Ç>žÏ©‘Œ}·³Xà«ÐqF#Ï›hèy½iì’Ç+X£µ«]4±óX r½?±#^|K£O .¶±„à_T±;™qì…O†ÑJ¢q,½úÿÙ{³õ6’,Mð^O»žùJTÙ¾äÕdFÕäQ•ùuFVMÍM¶’A€EJÆU?HÏËõ“Œ™; ºC¤ã8è.¸”–K„Dw·slù3;K¹ÿ>#Xî¿»¡]ó-]”ÿ%C¿€ïÝF¸{‡ŽŽ5Tøm¾®‚ð{ð~î! ÞØÂ}	Àzß¯ÊGpO ^Õ=×ôx€.Öß—kt>\Ó‡Ú×Ã;[l¡]¸…âòö	Ú‡;¨Åá!Ðõ´¸Žœ“Öu¤º²ê’ë¾æá–ëÍž#Uó¾AÏ‘g³â9ræu{Žøõjîoîwqþ6—‘4’˜â¬i?_|tˆ
åBŒ9‡	Èñ÷é‡8_ì³ì0¢­äÁz„—Â`Í¬Ã–½â+òÛYÖlöÛµ±s7ÛÎ·‹\…ðèçFÍüvY§Q¨].Ò(™ýK¶É,û™¼î8ò.;tÔ‚§nŸÍæùÍóeå–Íb1[ÅAHÌìÓì·–>¬ÿÛæÝ_·áS˜ý›ÙnÃfµ|Ÿ=5LnÍÃ|SºÎQõVÕÎu0ÛPÅËnóë‘[¹slÞåœoóíföÛeÕ¯³CíàÚÿäveUëÒkö³f¶Jê<¤ÿ²3i„=UŽ+éãé¡í»ôq3{XÙ\ë.ý"ñó]ÈN/¹íµvÄ³d½Ýæýìs°3»^}Þd7—üÂô¶w«d†õ,0¤lÓ°þð®á“[•Úš$ÒoòÛ«w»Õbaìj]¿½r©_³7ozýfçî’ÉÞýÅl\Rãÿ]ÝÞÙyei]÷úO!v½ùðî]Ý[?æQoŸó_sÂŒù&ê©v‰ÙìæÛœi¹ÊŸ—GÌ¾Îüæ.™d¶Þ-7éíï²µ—ÏÙ1T¹çdýr•³¹IÊ±O'½Ÿ~µ¾išov‹m¶iØœÓò]jDœ/MÖ«wY¥ÚÆãæø0õˆÛ;ñÔ®•+O·£ûÂQçXéä$Ñ×â$Ñ” ˆ5MaÁ°Þ‡ÞžóÒ9]önë×M½rM<*úè›sa"ª†^VÿÍŽ8ŒâžÉHÛŽ8§ÔéÓ>çh•R}óëÍ|
¾UÙÝÌ¡ûÊ,mÀ|Ú²ÚBÛúhn¡;‰ÇÍØ)É‚ß»Þûí ÛQÀÝv5MµÌæñ ×§ƒwÈ±{¡~nÐWfÒ=lt÷üæK%Æ•wì5‰1NŒE`i,‘Ì#âòîKE­pT»ÈeØ‹µu>ýÜpË‘R«W‰ñÝîÁ,ç›må <k; ÚûÝÑÞÌDkÚÛÕñÏ˜MºK¿LíIïÉ¿«tzÁm×«eÚNåÎÚ-÷F˜$»PvI¢µ3È	B4‘­*%$		`žÓõ£0Ìafêù¦<;§4Ã¼¢s7ôZî¦Ëc8ƒùïNà`¿n(ó¶`'?¸«øÚp_ñõß¡’Ã{•Û'¨>Åÿü¬ Øÿz‰ø-8ªûtîüƒº´C-^\ÚÏÂ=ÕÁ^×ôi‡N°;è¸¸[‚_ù}9¿CPq~ï;¿CíØÃK,–üœä¡}x¿ûÚîôÅK¾[px/yvjÞŸþºnòÐþùÓCA§8ÞwÇ{àwæ%»•°÷ðð	÷®éN¦Éÿ¸îôÅI¾Spx'yhoÃ½é¡Óa;¿	`¯ö$öWï‹ã·à7áøM~ß†çÿtc¸»qPÍ“,s“ìºÄÂª‹×|ï
—¬½¯úÈ?„å@aOøðÉ,Í­YŸï•ã3a{7_=öiWö‡±ÆŸ—Ç'nÃj}ÛK“»`×á|wå?šG³ Nw|b›WzˆßuŸ¼r?§¹Ü )„Ÿä­ìf•ÓBvUÖûÂñ"»é¬–Gkþô¯/Xéô_±·&ÿ&íÆœ|êWox‡¼¤Ï3œ¾Ñ+O8œ·ÑzŠ1Ê³Ø`n©,êh#öŽ‡h1ãBëô
)Uz‚Ãôy¯¼¬âæ1»dÿ¼ÿ¼K~â¤×9¾t×{×v×›}Sîzê®§1‘í¤­˜b*Q3„%Î—{}}e)þzG„HÊˆ9é¥ïÑiì‹7¸‹Ý5Ýæ®éãVò¡ž,þhgKâÔ.Áâ<vFð›Hsú]¹eo«nÁk¦ý|£Š#ÓyÁïË‘é{sOú¾¼ŽŠ3Q§`q&	~gÎDÃ§Üü&<JõÎs‚ÅM§Kð›ÈeY<U:KæÉs’Cfž<Þõç“ù.é®³ü	]øW­šÂ­ÿk÷ìèË{öºÍÃ^¶çÛÆ«^´J5SJ*'%ŽÒN]ÄÆZ†-RV+k-–š[b¸tÑh‚c‘+…g½zÑžì”lÿ¸Z§¿–Ûõïþv½êàymäW;þÐ®Ö­úÞ.9%ä»Ô>gbLíªuú0;yÿf1¿½ÛVE^“>ËMòÁü}þpHÉhV»åöDò|².´šˆf2õ»7fÿÖÛyÖp³MKBmÖÕc2eîÞM¥ÊznwÛ<FÞå!˜ô¯:õó]îÂüÓÔíIßÊœÕrIØô™ZÍfÒÊ$\•ž5Ë,ÛHaYõÚ>‹ª]¬Ü}{¼2SÎvUNËd€}—ü»ÙÜßU+ã$}ÔQ¬xÛAŽn8#h’^Ù/oÐóÊ[N„©Âá¹‡þ¡JB s‚Å³áŒ`ñl8'X<:KþœnÁâÑ-X\ º‹D—à?®Ä(¹Ëÿ‘]+À7vÅ	ãŒ`qÂ8'Xœ0º¿+'Œ‘Ê<LÀµc¤JÅeäŒ$Øeœ†¥ø–œ“,¾%Ý‚Å·¤SðÔ·\
ì„µOñV9#xEo•:¥È2ßBÂ¨.|ºD[×CÕ‹‡÷kyí
j*¾3¹ESö›9ÍOQµw Ÿ™ÛÝ<;T?Ê¿ëå'Ã>àCÿà+¿[„ÿ‘o;ÑôOTÿ“0ÚŠ@Õ!)*&JÑˆÕ<&©õÂø€xDG-¤XšÓRDÎ°vÑxÉ¸fV2Að+ž3?eÿ†Ï!ÿsæÃcöÚXº§Ù|ù1¸mí¹’ôÿ¼ZßWÞ2ŸÌŒWnÆ®>uøÖüe·mæ‹§÷³ßgKÎòmú§¹Ù†Må7±{ŒhÜvµžï3ä_í6!»,ÃçwóåìiµÛØ­|È^0óå}þ}õÚÿ¶™ý_¬Z›nêÎÿÿ0û¯Õnöy¾X¼ÛlÓ?ënW³Ïëù64¾š>±Y=„™3›°y?³©áÕ'ó×ªçgËÕö]mœ™OƒÒe‡UåôP}¥)kÃ,˜Í<ûF¬fî.-aáýl·œogIñí»¬â:dÓgk?˜ÊƒåïÛìÝR*<Øu•ñ!+ôËƒb¶11©f¶»uz_¨®ï“AŸj_žôv—TÈNAïb¨„²^Ûux®vÃÙ÷ÜÞÕfv–i®¸Úæf™4¬œ6•>ïªñ°m:?•æTUq7½¯òlJ<~®v®Y‡wùKfô!·ï}Õ%y%ßåé6ß&¶gŸW»…?º/=¬6•T–Ü¤ÑvT¡îŒÝ2uß¾áÏoªõ5‹Õò6;+ÍîÌ§P7ôhÇ»°xÜä¾<¸ÆØÊweöÛ¿üqóþ8ØjÙô³Cã6a›^ü.­~þn²7Í‡½Ô|“ÇBjÆý|ë²á“	î?Ìþ3Ì>îÒ ‹O©ïS3÷íW9;™íl‘FD6ç:Ôc»ié±ªë–3¿ÚÙm¥Dü”4[í¶ùµï*ïŠº³ÌbwËjRšƒCPúVXfW¦ZÍ4âjÏ«}s×&°wÛ4
gÆW®N!­NO‡æ²	r·=Oôqýwn“Mv¶òØ©×ÙÞ¯³/{ï0NÓb†Þ;S¥4Áû¥óÄ{GaÍhÛ{ª›©D4N+(°®lÕ¶›´˜ßt.ã÷á1¹q‚½Í‡jŠ·'AXÉÀ—$ãuUµ°‹9õå—iÒ§åÿ‘†îÞûìC“¿©>Üé5”¾ü]öÞßüf¹úfõø›Ñ>ð¸zxûËÓ`ú°IKS«›ùf÷›ü›aLÓõòáìÓù•7iµ¹ÙðW^N¸?&@¾É³.áÄóÎâ÷Ï‰ãðþ{øƒèP ¿¦_iØlÔÔ3i!ž›e²aãÏ{‘öXMxÿÉü¦þ'ÖÐ¹Gs;ÿ~áÍ¿üŸ¯o1®µI È~EbÍ‰¦‰õOÈ½`ðmBD	±3\Â\ÑI¥dZÙ¨¶–:äµöF˜”.¤ppÂi™SÛiïiÙ&”mBÙ&”mÂ7µMˆqÄâÏÛ„ô#&™ÒêÅmBÚW°D2[‘æ\ëfÊA¤%>®½ÀBZÐo:—òoe«@Ø*œ7Æ Y5k³ÐœÞ.äoº]¸ü &|þåoØ.¼íåÃÙç­Û…î/\´]h¼ò«lº®&°]˜ÔN!1‚ÕûxßJãý†0ÜDáñ!Å7î…Ët‚yË´£;«ÕFR'bäT9F¬÷iOÀ°·Î ¡VP…q§aÔ+›„*•*P®yÞ¿'•g?üéÇ:°µ#·-ø>±¸Ç*Â11‘¿æÍA]³Ñ›Äk^?¯Îñ‡‰OÖyïkÊöcâ*fY‡Ìîß–ÞP2Ñ¶Ddþ`–ïg˜¯Í­Yš÷³ÍÖÜç?½ûCæŽ‹ú5¿[¥‰¼Š«³Ÿú§~ŸÈÙýûÙOë42]-ôÉ¬ç«Ýf¶yJ¹¨ßn›Õ»çï#OÓKáœ™ôe•¨-½YûLìß}aÂ}ÌpÛ@_™zÍ±Zþóaø¾rP+9çJ2Ö8¨•”Ðô¿—Ã,	Ò9&³AÀˆæy<éE
c,_œZ7‡9rƒ{†YþùÿþéÛã\'68QþÍ<qÆ.âY/öÍ™ëíW–¶—@ímËqxX}œ§6-Vë7§EPˆgsíùb¯õXJEr(2ªXô†r‚±ÖX"Ä-ÚX*eÞie)vJÌ¨7Ráqxu=Þ¯ÿûþ¯zùÈjÎþ5«ü¿ÿçÿ7«´NKSeƒj]y}þù.miF=˜¿Þ÷üÆÕ–®ª	]1âi©:—˜¾¸x	)’8k-_’¦>QÍ{¦ôÞ?¾<oãê†õ_Ã*lºê’½u=«ò¢)Þ¼¢‘#4AW´¦'ØÒßüºy:ïâšÕ¨gAVànT¯—ÕhhfÁäH`	|÷ƒìÌ»_Y×^&Õ—¸¶j
þFùGàê<gºì§ŸÏvÙEy† ¶+BšÓÌ›8ž¢Ü+$…WAÄH?ŽDaëQ06í>aÉÈ¹pë-ŽÔF¤æw‹d˜›´àÝüç]>¶Ô _ù.`"*NPQ‘˜_ÔÍoèiÍÆF3¬É×A³‰ÙÄ ¬€×ÛÁk 29àËj–a8~y¢àYéˆfAàÌî¥Î!Š8•p£ðQhl*:´	Äz‘9ë<ºîPíý
þhžG
n–Ë?¢½v&$ùi0‘–µÆ•“Rô ŸÓó jHÜìÃW?Ú„õì‡znÿüÿ|½c¡#ä´õ3è0‰{‚Îksfu*»„Cï·-o÷»8¿©ÃUÞÌÐß´Æ‘Ä¹U¬ÁÁ†´vÂK.‰¶X8‘â–ñ´ØL]”c§¤Ó†¤eñ•5îÇ¤ß!¹`7^ÀffþP¥´ÌûäOÙã îê¤™UÊ§=?¯<I*ù¼¦EâÝß–óÊ©æ‹3þ³?n)ë¤™óê&-%9Wç§ùf—~xgÖiøÍ­–’w6l?çÔ–»Åvþ˜–ØãËê¦Öù$÷ßÊn%•OÊ>Çc}³ðÉÌUrÉùr¶oÜ‡wõGe˜Üüªõµ…&½r+èÊ-åiÎÄ|ôEš‡ôW©û¬Ý_L“²€¾€§>ySêÄ—;ê\þÄ~«ycŸONØ#• 8å×X	ràYbFÊú0RÊp¦ xDïy“æ™äù
óCx|¤Ù®¡7–ÿlçËÞÜ%F°Î«sGË’Ý–ïçê1<ì6*n^³ò@±£Õ{)kþ&†§¸4VŠ 5vÑ:OÒö§ý*âVz"lDag(ÒHa.8
ÚjÓî6=è©…áUu­µkP»£E¦Ìç‚ò9Åi"m÷XÅòN¾éK{ñ¹v)îBä%r*{Ó¼•ÈÁËp_Îà¾…Ø¥w·dÉV}F²d«î,Ùª»Kî3’%	u§`IBÝ-X’Pw–:Üç%KînÁ’úœ`IÝ-XR@Ÿ9â¿~²æ’T¹[²Ôáî,¹’Ï	–\É‚%Wr§d©Ã}Fpâ™ó±<°÷É	þD.°Ç¨»]n®ÛæòÊºNs=çDN<ÖLk¨“,)¼p\#%”–égB*£W§?Æ1ÜÈàˆ‰È[óšsb]¦¸x'~y…][&·ÿqO$ìX®³;b;+¬àZ4ýµLõÉ7ðåT)÷ÚƒßkKLÞ~¯ýeO}¯ŠPNZ\¿WÆjèž÷e|I~Òûr~L„=6VXäh,²eæÑØäîíñèo"”)o6A{F9†XÌ©¡–(ˆIáÜzÅŒ”$ÑLï)¶ÌFÉ±W˜Ù×"úZ„òo,œò,§LVš4­¤`Z‰©ämZÉÒæ„7Ý$™Fàb¯Ï™Â,‡}¡üí¡//vV!—…\~käòB²¸ƒå_¸_Lm+”ñ«PÆléYc‚Óù/7»µß]—3!ÓÓ&b”dœi•‚+k‚±H3Á	‹cK±2Œ!	öRkfó¯Ýëœ±Òpö·¤aaŒ'Œ±6Í‘4fMš/r(_LÛ‰ÚIO™–š_TšõÉøÂl)lqp¶ÈAC°ÅÓ®úGçŠpN7¦çUU?çnîA«NÇÆtHÕsË
¥“R5ì<$¡Ú˜ešë‡°œ›åu	ÒD(î%A+‹¨TÞyi0¥š°zlx0FIvHæ|ÈÆyì¢I”Šã×’ÿš4œýv¯a!TMBU™¦qWÛhÒ„J@	ÕXµóUr¬nÐ)N±ìsúöÂT)ljx6u<}›z¡«FcSwç]ór›r“-‚ÿjLø[-+À?ð·í<<ð
¹ÄÈuq?ZJCä1Z†=×ÈrÄ˜öZ2©£@ÈG+‹†yC,å
;ÇÒ?)¥R{$x'î×
Øï€ýÚDßêÊ:IJd+×#½\¹¾œ'ô‡}®Þ~„òeO€ùG(¯¿ÓÉ›m›ï—€‚ããâøÞÌƒÃ¸5‹ªÐÙ•SÆáPœ(êG^!$Â	ä,5Æ¥0·”xçˆä3'E^ªDxµ¼t…V¿ÛkX€üu ?ØhÒHNK1?¹¡‘fÞôh/ï™¦Jò ¼o±‰× ¼ÝU#bùáC½À¼Ýº)¡ù¡eÎÇ…ó£GÀó‡ÝÃ•7å!Á†.9s‡àƒ'" ÀˆiéÆ1(B½â4Á8öÊ§õ¥ý•ãÚvƒyR¯ y’'MÆ)8[h•ô´pc­bˆ8mÚU¿†ÓIR`|Àö´ŸFÅð‡î”O]íšzç¹_ {dèÎF··æþÊ¡Ñ;6:Š€•,¨È¢‰Hr„à˜á¨§B0Ãruaì5'”¥M9ë<Lÿ]V¯àvn'M·IƒôÓ,ß	Ç›×ç˜crhgHíIƒö±ŸFíô•ž }l×´@;OüÚ#ƒv6òð –·i']ØNÛìà™ËÚ12£"ÄyItŠ)%'Ú$è¦ÚFG5u"ýÊ#e³ÒsÕ	Ûµ‚¸;€»6Ñ¤¡zŠ4>ÙrKš/Yà-ÆõFïæT)ø=|Ü©ÄCáw³§Æ$ q §Ò]žÏ6|dµŽ}åááŒ_ZrRœc¿fÖ1.ëØ›y4ÞqíÜYá£õ‘cÍ¨”6PL=õ^&ÐÉ§Jí”ÍŽ¹:rÁ
Q:g¼à!b¡%÷€}L<÷…Ç2æ<mBª^ð|y¯0¡ýoïOæLá Ãs4@Vµ;ëû¦!ÒŠ‰eI8i[!_…\%¡~÷ÚÜ=\™[OyHÌ‚Z´‘"Ç•ÄLZB¨Ç3¯µRÞäl[Ì0·Ò"*¤rš¼–#¡æ•~…WtðŠÊB“æpÇ~•£ì›”‚0Â›÷„“N4“¤‰.$(=úEGy#Q}¦’7Z6)¯gAðq¼¶òðè½»‚K¿ˆÞQlŒ&\:*˜fJãjG£@Á+Ã±Õ>¢hƒ%ùê"<ÃŒ{¢$ø½×° x‚ïmô`8’¬’¯IëV"Õ ¼5S
ˆOÙ£¿ÕUcÂøþCý€¼ÕºIAùa(`>.˜ì<œßÍýu±<!	Îra9!Æçt×JÃ(Si/¥¸áÆ#Á„
ˆ¥•ØVî9ÑŽ‹Äàn,Oê ïòd I£880+…Ú;q.ZŽB\àø<?
‚OÙ/ð¹ŸF…ï»îà]íšpçi_P{dÔÎF²YŸó.»ZÏ10‹ë¸sž¢ ¼&éßNçd°ŠGe"e˜ø@„²«è”ÊËhú-SAäx=ŒTgHÞ{eg¿=*[àüu8Á\Sw×£JÒ“ª’àfþ¦.ÈŸóê\*`?<ØK1P.W{m´›ü9¬ìinÝ¡qÏmëE^ÕmJôá…F21.™xÉä#P‹õÕ³í
NâÎ[%¸´Þ¦¿N-¦ÂËœUIÏ¢H	á8FÁ&JA1²@¸îÌÖóC¥_!]b=ñL»^A¡“c}¡Z7óRõ?ÕoN‘B&|1ßì¨êÏô„øõ$ÓæÖí*@>6¯GI™ëîÌ•Sóð¨5£Þ¢ =±ŠJE2:âLú‰Ò
a"„vYN‘I‹1Q–)¨$ŽÈNäNÚÜîÀídŸI£68Jryš_¦QÙÌ¯ˆè¿Ó?N‚Ú#TµÝ4&f§ôCìc«&…×yÎ´­³GÀê°^Ý‡+;ÑQ£VKgMÚ;E,Þ)¯YZ¯eú­2˜ªˆ}p‚
”þA¡ÎI¯´‹um~ØkX0»³k}'¸•nŸÐSyó„žJ,EÜnN•‚ÝÃc·*¶¿ÝU£Å»;XE»éë&õDû¦ÓBüýŠQPdÔßÛyxäÿx³Ýº7¿F,MÛZyœ•ïáo‡£Ú!eƒHÛtçC`D¥µÞë´Ñ¢‚GI™%!R¬‰ËÜÀHª,ÓQ
¢mgJŸ?ÿüÃßrÇW(×4AÖ~¯ùkŒ ÊþôcóïX›ÿ¯ó‡ÇÅ<ÎÆÿpW9D¾Ÿý¼6~žŸLP~øá»?™GSÿÚ,ýìÇÕ:˜å‡ÙÏw/°„Oaö³|?ûÃ|mnÍÒ¼Ÿý˜:å?½K¿¸Ý-ê×ünõ¸zX¥97û)AWzà÷ëîßÏ~xZ/¤ÔBŸÌz¾Úmf›§´Ü/ê·›ÅfõîùÃÙ(i€?¦—Øùb¾}š}N]©œ«0x³ö›DÞåævŸø¦×-óz°™µ:as5b‘Zù
«œs•/‚ŸY…¤„¦ÿ½Ì*”fùÊç$ãcÔvÑÏ?#õ?ÐoZôæ0µnªIõÕÙÅró\5Â¿±8NÊSåßJ-(JoˆZ4;é³xem<Ç+´Pp÷qSð|¾}üÿ-Tð|øÿAÚH-¤ì U=Ô¾“—5T™ Í¸Î;tìËGÏ;ý7š’¡‚+¨  vó^:Òn;ÝW›‚Pµo¡}sû	(xg>C%¡–¼ÛçÐ±ÛíÜ„ò9t˜CµžCgÃjžPó|„vö=tE»‡N¯{¨yî»³7%?C%*Õû:, ½½„vâªÌÒƒ¿Õf	]–Ðõg	Kèª»rPAèðYAíøhoÀ<¤†®©Ðµ`Ujmç
Êk¨2hmt¼m #xµÏæ:!7ÐEpµù:+6¿@¡cxiè¸Ø@Qg@[è°ØBí¸…šg÷+PðôÓŸ¡ãìïPªÿd’¿B¿ýëÝƒÞ${×™§½-û 5T’Oó$»…Ž¦_{¸‘¼¨Ö’¶ãz>âÃÃ|1¿ÐãÖc<òüÀ·ZÏlï »ØÆÏÆ–toƒ}|¼È`/x¤¿Á>>ö5Ø}›”,ÝÛ`÷ë‹v¿¾à‘þ»_÷5€O´¤{lã.2ØÆ]ðHƒm\_ƒm{lÛß`ÛË¶ío°íÛö3ØÃj¹ê·ðïŸè±òíŸè1õ÷Oôûû'º;¿û÷Ò3ÞË/A_>]Ežið"’ß ®"k£Œp¹zÜÎß~ù¶Èa´¡1P¤‰Ž4h†JZå‘‘ØG
ëèY@#í#‰˜z£¹`i¼~¨ô+þGþG•…&í}NíMåíKB"qþÉsN…EïôÍIR|¦íÓè¨1=‡«ÏôCµFË&åKTÏþâI4®'QmåáÑ{·óü–+‡ü-¼cAñô¯´(9Œƒ”+$M°­$“R¢S€p¦µd
”ð^9lCè¬êùÃAÅ‚á~0Ò¤a¼G6mNOÒis¤5—ÍðŸÄU7Ÿö„)`>‚#1
ÌÛ}5&ž¾ÔÒÛí›ª×ƒìãûÑÐÃcûÓãz¾Ú^9+'óÒaB“Øp˜’ÖR¥.+œbZš`¤“’äú€N{#p”yÂb§—ðµ‚×;p½6Ñ¤Q]‚Q¦Z ®d+¢WëKö ôæ,)p>ÂÞ\•®«ÙSc‚yý~PÞlÛ¤€|¿ Æ÷fÄS¿„u¸2ˆSä¤3T±èš3.µKËtV©HµµBrIÃD;k8’J™´}ÆË¢¤™9ÿ¥V°€øë ¾7Ñ¤A\ƒAœ¢“âÝcÔ<aÇ	ç{ïË[ó¤Àø„a¼ÕS#Âøþ;½`¼Õ¶)Áø¾aÆÇ…ñƒ™G€ñOfinÍúÊ+7Q!ÍXBi‡¶Qh¦=¢F“\ž2È(‰	L(Ï\P–‹¨"“ï	±¢É:0ïóƒ•¦ŒçœkJORj§F¹n ºÂÏ!œ} ½=g
ªŽêUúê´³FKÛa¡>åÕg×Jú4Üê,¸„öÝ¯ >êQ·rB1p·ÉçÑuÁ#=+—ŸŽäiÑÀ#x&82<ZzL2¸»6¤61;H‚ø­CBp%ƒóœrÌÒß1W„P›½+CÚZ†ˆˆ*pôÊ ùàßþX(!„&CMš0+$çòl¥qÓX(ÚÌã¦/É³òÂä)Äppb((žî
7,ÜpDnx9ÑÛMšë¥æº÷µè^6öàŒ/Ü>%87Ë›Ä8ÖéwOw›+ûå lƒ ŠRƒ¨#4 ç"JˆNQDNJîñ"Ðè…Q/¢å&FG$¤ó ð_÷ÚÎþð¬má¯ó¿—ì5iÈàá4œœÐ@Ž¹$¼å‡+TÿÃÁ×gTaƒ#”Üc¹ä¾Þm#Þ>Úøf/¢ðz£§Ä^je¡ãÒ†m><{ØÞÍW×²1ä™WNÓ`±62HGqÑyeŽ’Í=VÊ L$å.Rgyà8¤¯ÒÎÝkXXBKØÛhÒÌ ¡ƒ¹ªÊö6+ñr¤Q³®ãäx?Õƒ´fKaÃŸá¡
ð¶»j´c¡î*=ÍÃž'pÒ ÍªµgøÜÎoôÈ%ËBÓžmÁA?wn“ª}ßõcR­Ÿ{:¬®…1Ë˜vœ%]•‘ §ÒzL±Ð"Á'1XÍ0v$2G1w\z©±!Y‘þÊˆÅVÆ"BH
'z‰MšCš8Í¿=)KÀ¸F7c•1˜©þU
…IÎ‡:™ù€k@S4›„^HÙ¼^45ª§Ž5ÐŒ°àZæ×åÚzgÓèöàÏ'apnaxŠ.kG(kÞ;€ß¿züŽÚBg†Ýû¼grÐW:è(—qwÐn„T…ÛKBûÑ­ÁÍ„vÛ@×kÍyí +œƒ®pÃ×o»Xx¨6àE°»ø_Sšê^:Òàek ¸¯oðØØKBD„vöUkë€KëŒP„:ÁàÕzÀÇZ#Ôõµ€À‚àJAÐU`/x•"èH»Ã¸ðÑ´ï £ü:$¿‰šKÐa1‡nŸ®XÅiíkx'hÞƒw¶÷à­í%¤ x]MïÁ¥¦ Ë.Üsê{/¸»oê“ìþ^ð[ÁºðÃKwÝC¶tÃ‹á{]°ÀõÅÐ·€.Xè:´€övßgpµ4èÞîüi°'7tÑxXÂKá$Ù¸,X'hŸƒ}ÎÁUê £è:o¯Z÷ÊH¾‰y¿^Jo	®C¶„.Kè¸¡Œ¸‚ ¼ÞXp´Â€Ð® ø”‡þ®…6BQBèÀ¡z!<ìŠf ½$¸t"ø@uŽ7¡#ØBÝNÆMI(ŠÂ]‰6P±èªU(Á”dæ×¬l	]Ö¿«˜›'°stm¡Á:½·Ðé}}g½-tŽÃkB§¼H)ØDÐ‘¾\šÊï¶OÐ9±ƒv¼6+t¤‚‚	¸Úë§îT¸Ip]XˆŸé^|IöªÏEiŸ FWŽ—¹…—‚šõCXÎìÿøÀ§°Ùö·f1_ {~à¡GÁDk¶ ï££tXÞÀ1×‰|w°yû‰µ¹ÿÅw·=­³»0Ãczk³4>õ®±«õ<}©‡Ï·3ë>ÃÂÝŽŸ…Ãzu¸e‡×Ðj‹CJt´Ÿ8Ÿ¼%H8z"?ZR«ÖC=ÃÛÏ¼ü[Ü†Õú¶Ï ¹]˜ÛÕbÞ§+oW©U=ÄwÍÚlá;<ÐÃÆ·»õÃîpé{ú@oÜ™ån¹: Gù`×á<:ˆÏCšÞ‹¤úƒéaÞùòè…mæna ä•‡s!åcç£IÓ¡ÏJyoæÛto–i­<Å'ò=úôÞ<%‹õ¿3ëÕæ®—w€JKº‡I¶Ï›Ã£xpÅçÎ…2ÿ0ëóçóÏò€óQøÉõÅ‹'ßGü!MÑ§ô8Ÿèaý³ô}V‡¶aþ`žB¯¢Óyéï£û“Y>˜%§kùz/Ãç­™/vð5eyŸ«Û>”hµpws€WÂ³¼Ÿo5…÷Zzâ1Dõè‚ôÈfµÛ¦uÈØžÏmwëû>[ÏŸàó¿’îÑÑ«<Ä{¼ÿñÎÜn ×'Ïò«´‰êµ¬ÃG¸·;Šï–=¬¹I¨¾ž÷Ù¥mÌnmÖ¬áJ'Žò©Æ	ÿïÀâ(¿K«R/Äß<-VÛ´É¹íÁ²7Ovµ€“äÍSâM.˜Í6 ®ƒNžÚl«(£>F¨üú}n›¶‹|t%yk–€#çæx¿l3ë±&ùOó›«m3ì'ÝcñØ†Åà¯Úïóþ;c nñ^ïî³ëØÎmè³jlç1O·ó‡l‡vy;Ûgû×£ñŸzØ¥ûïåÀ½	E°—ÀõQ×‡W?œ”\9t0N[E0\y…$C6`¬$7$x&tDFb/©öT#Å…0Ji)u.Ä|gàúï÷–ö×³úlô}„³3OÊnÎd3’]¤ÿìC§áaìí©RâÙ‡Oð§ù@éžÛ]5Z`; P Ï‰ô5&óÇ–¼7QÍÑÎÃÿñÆãºÐï°÷”é=1<xMDEÊu´Â0–ŸaJXôÞ¦Ÿ.XÆy$œ²wBÿQÇþà´Ò¤á_k{rqZÛSÚLö‹½sýžN˜B †' ‚”Óï´³FÌë»:>ÛÂI¡ûóŠPð}\|¶ôð_9(\9#§+jE”JZŠ£42¦½»âÜÄ4¡ˆ1+#’øveHyc#c„YKTgºÞßWúdï@öÊB“FupÅn¬ng¨J’¨K¥z—qjN‘‚ç#”ë%¨kvÔ˜X~Ö§«³e“Âðzîü¿k+Ý{ç¿ë¢7ÆjÉ•2Ô#eXç@©EiÃŽiBu‹œPž"*‚£2m²¨tÁ$½B3Ô‰Þ{~wà÷ÞFSFpÀ.Óþ®]†Gr™ÞÑq®8ë¿5oÍ–äÃ'ÛƒÌ·ºj´“ùn#9fŸÑ|RTá°Ì²0.Y8Øy<ºpíJÎ"`hV£È­¥1è´×—œrbÒNŸFÆ-ãIH»À¼‚G¡,qc°ï,èwd¥Ž3„4L¼ŠsÞPëkWq–Œ´«8KÎÔå¼¡ÔpñR_MF¯à|{¸”L±æo£q…|J0J½ßCtßu)bRy&Óé?(¦¼Ù³ÏHm™s:Äà5’hb‚UR{+AV‡`°î¦µ†…tñÚF“&J¤@'…j¥š4öÊï]°¯=Y
˜ôB³«Fc=Â¬F
¼>£ù´8Ã~•)„adÂ°·óxláÚg6p¯‰õBhæ¢ŽÔ[”L|€hÏâŠD'1B‰ Y‰A¤&D g-ˆ0”3g˜ú…Ò!¹bmŸ@,¥M§@¬ô§³¦0‡I!œôÖ”ÈÃ¥\`šGÇÆFðuÁ(Gûl?W>AðÜ!†¨S”L•0ÞR±¢Z;¤Z*,“„`­˜@šÛô3k„—I¢‹ü¡V°×ÉÀÞD“&€¨h©Yó&AiÞ»Àmk–0B\Àánç­ ÕS#:²¤u·mJ`¾oXò€<ÿhe7«EØv˜âe“/OÇÂO?_Ô¤“ï÷!‡®žXTi¯Ë+T˜KLŒõØq)8¡ÜhBP`&»-pá÷,$‚zfRRSoÃ¬ÓYá•~…VtÐŠÊB“fÊ*(ã'Á	Ù¡™q Áé}¸Ðœ$…VŒp®À
OhvÔhG
àªŸ€DàGžr6;k§®“b)õzRHÊ¨§{+Îyoö‰¯øÀ³çBÂŠh-ã6Š´”D¨rÁ¥¿`å‘'†JâY¢(x‹q`B¤WiÂº˜Á÷šÎ~[kZ8ÂëáÔV“fÊ˜´[¡Œ„7Ï $Å½ý^ž@…5Œp¡Å0¬áå.ñT¢Gru`c§D N[X¨À¸Tà{O
šyùoöYý¯~áÓ(á,L)BÌZo&Œˆ€­•!bc4·6a´MÜC£„ÒØÍšêÎþR«[èA=xÉ`“æà†XKÖŽ•”4$»€#¼>Ÿ
Qž(H1Ð­EG¿Éz–TéÓìIñ†—šYÈÃÈäáE£Î êÒ>W¦”‚WÈŽ”KÂ"W(zí	Ê	Ô+fJ†&5
FaÇ¶ÉŽO±Ö·p8‡¨-6iÏ„ˆ1m4(!UƒDhÙ?b×”*,b!‡:nèè¸¯G#ÎWëÕð)‰ýRR˜ÄWe{«N%eþ®|3EŽ‰p.ªH¹
†Xí˜	B$R¡œÆŠ*aŠZ-ƒ¢)œàŒ®Q§ÏÂŸöºð:]8ØhÒœT‘
qâÉ0ÖÍ«FíKÚS¥‚+Ñîªi ¤Jê™ÖM	ë-+è>.ºí<8ž×Ux¯‹æÚMC(hå…q˜Y&÷<ˆdÌ¨hwÞ8„ˆ´ÖQÅ¤Ñ#Ž¢õ]hþc¥_Áò×±¼¶Ð”‘\‚“$1,Ñé}n¥V“Þ›ýæ$)8>áÉÍŽÅÏ—.ïlÙ”¼nWÁïqñ{oåÐ»*rå“|á°5&íµ™Rå-ÖK%bJz¸2’¯F(F¼SB`¢!R¨nø®,øÝ…ß•‰¾ OƒB(tC£SšALÚ{7Þš*ÄGHlÄªZÔê©ñªÂË(ïÔW¾g&ƒ–ÚÓ¢õS8ÂÈ¡6óh$áÚ\ÌÞJ[Æ<Rk®H`†ã€câ	<Rb%àˆ¬FK1v6X©#ï¬‚tà	%¡€*L<ŸQÎrdDW”›y%Ò­„FD,{ûžÎ™BFˆ;êJÿ´³&Ä.ä SLfôÜ¶Â¾
%•Ñ½y2w7‹kÇÐà#D`ì‰Ñ”%JÀÜ»`LÔ^æ’ÇÚé“ ô)å8QÎª‹îÌ‘AÒpöS9óï$µ&MÀi	Ò_8øµ®ïµì%Ðž(ÿ'|{ßîªQÏýÓ‡}!½Ù¸izÝ²çcÃùÞÎÃƒyBÕæîêøQå±ÆTR,ÉîwË˜öøNH“Vhf9Mÿõ1ÕH± #IÒ´Î:@ï ô£•¾H×µ]òaò¤¾êJètÂX!1 êà¤³Æöã§úaûI'…îÏ+BÁ÷qñýÙÒ# üCšlWwe­wÞ¢´üJk1¶!X"ŠÌ	&y,%g„A1õ&xl­BÚcMgÞá³z×»p=hÒÎ9,9©_ˆµÐºU|@«‹@ý8G
žp¯Ãóc?wBÿ ?¡ÏÍé'Ý÷4ÿYái1ƒ¼¦R02)ÈF‰\û&ŸI!8i­öJ‹£ôBORA˜qž›¨Ž)ÅÒQ‹è}bw;ìW” ÜãŸeS¿Å§NÌQ¶ÓcDÒMb€Öý]þZ“¥pƒ	§nwÕdèÁE€?ÉËû}Ë
ìØåâ~a®\È)i ‘‚Õ^XÊ3"qä6D[‚l0TFcYb“ 
ÚiŠ]èýŸL©=Ô÷É<“†zpÎ_Ž™jÇça.	eM¨çJöÐ;ÎŽ‚òÃŸ p9ÐEý±—FøEg±¡À§Æô‘íIŽªN‰¤F0.È&û¯¾ç÷^w<z‚ôÊ¶‚bn‘¥Ú2‹Œ•D¯6LrOœuE¤ä9ø/;þ3`êû}pR_&åÉÝ¾TB7ïö¥Vý3ò5'Ia#ìõ‡º×ovÔDˆÀà>Å]~Ý®ñ£Cü8;üðèî®Ëo,fi¯®dðÄÌ¼
ÞhF0#†Ó‰(_þçD{Z2¥ÕJ‡UÄ‘úîM~¥_Aù”¯,4i”gÝeá“ë~D¤&­S}ªú_÷7§IÁù	'ãivÔˆ¾{õgúáw£e“Âïzþü¿k+ßó»»r&=$´Ê/F9Äc Š&àf„¤-;	’Æ¼ˆœb¬´ÆÂEå5¥.2Âƒˆ¶¾³z½;Ð;hÊà­Àix•'q1á´YxSÎúC÷ó)È=róêý4&pç¯ôÃíçvM
¶«‰_P{\Ô®Œ<h/ƒYßØëâ¶$RZk°`AJ¨"’SBÑi¯ÒFœbG•”:8‘d½[&)Oûr«˜îÆí¬áìwº» »¶Ñ¤Ñƒ·ÞZ8ÔqÅi+…žæÏ­>èÝœ*À'\S·ÝU£bxþí‰âÍÆMÈë–,¿ ËóVv³Z„m‡)^±ùé`øéç‹štòý~übß÷#PŒÍ•„¢Bk}vå	<M›´ÍsÄGMI>ñw^hZM™ó‚HÄÓOÏˆÝôbSN:©ÅfÚ‡`Zu>n'×W­b¼T]@*6åD`¼¡rò>wÓ¨dbÓ÷<`3Éã€M9ý4`3ÆaÀ“»z]Ü M‹°fÔ2f°iïÓš¬C´ÞrÃ\Ä •ÖA8Ê:­âN‘ï·ÿ©Ò¯ uZWš4^Ã³ã*©NÊÚ¥1Ó:@ýñº1E
bOùö½ÑQcbvõ™~¨ÝhÙ¤p»žû¹ÇEîÚÊ#`·¿:v«HƒTÜZå0–FçÐ8-©Ó$ý…«€ˆtù–Î†ô¬$BqG)3JŒ]®»}Áî3Øí§ŽÝàd9X	MN°›·°[‰°Ûìþ6°Ûìöý±ÛO»}Áî¯€Ý~ì~0ó”þÿp]ø¦Á¼c+%GAé)ÒF#FV›´GÎGd”—(f¼VZâé‚ï;¨Xüu?iÒ Nlƒ1â¼âTr†PÇ©º1»“	SÀ|„´wCùI_ñÖ@¼sÀlRÿ'zFÊ(?%ÊplZaã²†gCH®¯5‹Ž3jƒuRÄ™ÆX""\ÔÂIêÌjM	ÍaôÊjE„•)ç8åÇöÏÜ¡ÉƒèÃÄCå8_FŸÜ¹'jJI+aŽÒÙ¹ïbQbæÇ#±¡IÄè‘ó—ðˆ‹YÁ£è›­+Üà+qƒQ"êÌÒ›¹»rqœ€ó¡?Ž:z™–}2¯Yâùª "Q×ÍñéCYo‰D"›ö Q‰nfP)XHA)¨Lô}ðBsŒW;žæªÉ„î_í¶5O
áf@ä‡×ê©¯ößé‰ê¶MÐë% `ùÈX^›yxaæéýOáþÊéqŒã’yãŒá>‡Ù„sÎ»(µàœ”Ò2b5rÖKœvf9‰Ž Ö2ƒ:KØÿ[¥eÂ«¤eô@oØiÒ¨NˆGbì4+®j£ºêŸ÷ËiS }xh—| ä¸_v×˜ø^}¬úV?Œÿ¢‘“úFë
Ú½¾Æhºz_kOEVËÛÕâêŽ†Bf²s‚W&h‰©×9^Ï{±¡ÑD¥£Ç>q£utA!¡‘0R1­ãÝ<ä b!!$ä`¤I3p²>Á˜@mBÁ¼•ðG’þNæK! #$ %8é«ñ.–7®Óë°ÍT­êÇSÚºLŠ¤—ŽÂPÆ=8zxðd–	¯)È
6oI~¤RgÈi¢¤Bi½"œG„µÈ!ÍBðL)Ñ™«÷ßjè  µ‰¾FK.°×
îçˆÑæ!„àI¤?hN•‚ÿ#8*ãßê©ñÐÿ	ýuƒúÊ÷uFhª=)¢°_`
M—&ìÍ<I¸¶k"ç1(r$±E9ª“Â'0‘Ä;æ°ˆ`"£Q¨!Th‹i€ð„â˜ 
SwKÔ`·DIõÉyeXñæyeñþž's¦†
ùÈ¡N:kBœáB0IwÄcÛ
ø*L`WÄeø|“:ïf±W¾:`f”×A¡ˆ©CšXB%36,¢:8+	Òé×é'ŠzIyðHSŸ	Aø÷ðyö³™Ï~Ú…B^§3M™hx¹ ÆOËú
.Zå¤è_éç‹9SØÀ×ù/|Ñ[#º/¤o¥O¥/õBù/Z8%˜o4®àü¸8ß4õð@¿ºv –àÝECIÐÈÆ´Ç7Êäš¼Zæà1$¬gÔ0KLàÊÄL`'ÀÓO$íøWØ;€ýÇÕ¤œê7…“½8ÉÓ §ßëÞiŽs£ ùÕ†òC/¶Ÿ_þ¯Î›ZÓä­Ÿ¸ß¯
¨êÉÄƒƒùêöîÚI‰¬FÚÉ¹6Áa—þ—vå:é•À,­ÓÒÛH”–Þ¤/yn×Q©†ÆÎ[þ?gõ
 ¿è•¾HÇŠ ö‘=Ç9÷ÿóõ>V½Có£@ú„ú5úiÄ]yõ•^`Ýh×”àºjVìq»6òð½¸IÚý•ïÜ©wžc¬3ÄD‚DQM´³¨™J»sæ%ÕŽhl¥ãùÌ=bå-“ˆuÞ¹ÿy1û!kX€»¸÷6š4vƒ3ùÌT»åÍ@šöúoO”ß#À·hGÞîª1|Q}§†·7)ß·¬ ùÈH~°ó`îoæiÍ»vl4s„!Ž5â–k„QˆKœ‹*í¬‚U†byÄ”´4’"g±³Î>^ø„¦YÇè]€~°Ò¤!Â‹é1ÜNœ £Y¢W$ÂØÒÛÓ¥€ú÷åd wûÓÎÖ}ý¥žÀÞnà´ ýÐ¶îcƒûÑÒ£ÀûcFìkÇÓk‚!(J=WFYÁ£Ñ<hçƒ†áÈµÖù·NË¨Pä”r‰¼fÁH¦õ9|ÿK­døn€ß›iÒÎþO¨8Ù´cŠH+¤>=ÚÛ)î‹9S@~ÂNq_ôÖ¸(¿ÿTo˜o5qj8¿o\úñþ`êQ>ÍÄíÝY{u¼ÂìÐ;b¢7\)am®Ïg(6ÞƒÓ³€MPNxípÞzdÓ¢:+ýd ûkVuöÛZÕ‚úÝ¨ß2Ö¤±ž·_)ÚŽ¦ç”µbéYÿÒ»¯Ì¡‚ÿ#$õÃâÿ}6.¨>¸ÿ^o*ðBk§FZM,´`|ZÐ6ø(ä`»[ß_û”?D&4Qk—sõsƒ­£J$´µ)Wçå'sG
3*¦A#fxìôœÏ@÷s¥c¡Ýt ¶Ò¤y <³/Æ'ùúk•ñÕL]ÄšÓ¥€‰Ÿò7;k\ä¯¿Ôó›œØ×m+(?>Êï-=<¼¯çOæÊû}n•˜)ÁÜhœg>¨Ó¿‰•Hq–áxpãþÎ1,C2$Ð™/÷ÏY½ê ž4i<§ÉÃšˆ“Tý‚bBš‘q‚yÁÕýó$)x>B’<4ž?÷Óháq+xÊ»ª9ý¤{¦Æi(<)jP-*…ŒË
*#D®Ï8+9ò1P)}zY$Ì­´QD<Ñ1bUÙcéà4CÈiŸ@@JÓ™§æ%)ÞYZ0ñ”xžÎÚ9p(¢4m#)ñã¨Œ]k¶r0BB<¦†$£§ÃëË.Bü)¦Â;´¬àþWÀýQÒà­reÉkŸP¢=‰œk,1¥^Æ`¥UÞq-l•
‡™($SFaE1Ò”	ïˆ§‚Qkéöö«,Àßüµ‰&ŒûÁCóÒðhûñ+$Dó„©þ>~ÍYRÂõx[=5æÙ~ý~8ÞlÛ¤`|¿ Å÷fÄï’B7WFqÏiBìàƒTÂD—÷ZØ	m4Nw„¥Î0¤lL¿FšYã0M~Ž‰²!íâ»Pü/YÃÙ_
ŒwÀøÁF“Æqp<Eêä¦ž&híÞ…Â½3Þµ§Jò	Ù·»jD,¯>ôØËÛ›˜ZVÐ|\4?Úy8_…´Ð_Ý)Ÿqe½gÄƒyLûð`±×Gc8ÆÒ juÄˆG‰gYÍ¸Óœ¥eÚKK;ƒìÿrÔ±@z¤¬4iPgðëz-Úgò‚¨fZzI/ôöt) >a÷»ÓÎÖŸê‰ìíNÛëAA÷‘ÑýhéÁñ}>¦‰våÍºÐÒ‹„Û!"<gieæ4ÍsçcÅˆ9•Rˆ@‚@Ní°`AqB¬£¡óÈý¿Wú\×kMÓÁ¡ui$’6¦K®›îJô¿coN‘‚ç#lÒÅ@7ìÍŽËëÏôÂñfË¦„áu»
~‹ß{+Ý»åµ£â8ŽÞD5r&:…Òb-1!QÌr3jp`žP¤E¤š¸6J¤Ý:ç¡s[þß³z¹;;hÒÀÝ#®ÊxÛ nMX+"¬·ß|c‚àžpúF?‰Ûù+ý`û¹]“BíjÞÐ´+#ŽÙ“pl¾½öqºbQ¨èeÔŒzn˜cžÃ½õÑ4i7ž[ª(µ"œ¯Ê-Ã#K;ïÇÿzP±`÷ëØ}4Ò¤ñûFÁ;Ég‡D+˜cÑ¿„ÌÉl) >Âi:h÷}ÒW#ùñK½Àü¤}SôcÓ
¨êÏ†Øwk³¹Û®¯ìù&•fØ{)e¯ç1mº-’K¹“Šie˜ "Qx*¢AÏ¢ÎÎÉÅeþzÔ±@{´¬4elÇðîšˆ6¶ÄpóT`Æ.Àöö„)à>á«òÓÎÝŸê	ïíNß+Bø‘þhéáþÎ|ºº¶ÑHÎ•66H¦ÕF#/lByÎ¥ÆiigX;-Q	ò)ÓB
¥ŒvBÄèL'¼×
lïÀöÚD“vxÕW­OÜÚ…d-8Ù?}k–LŸpxZ«§Æôú;ýÐ¼Ù¶IAù~(8>.ŽïÍ<<ˆÏ—wfqå=ºHH4$z†\DÂY£„`éßÈpDÅ8X­Â–åcwîÓº‹ÃJã»÷èµ‚Ä;@¼6Ñ¤AcŽÓoQ;ë'œæþœ“KRÊ·¦JAòRËÐîÏ[=5Zf™Mg¦˜6ä×êùM%&ùûå¢@þpÏ_€ü½™‡‡üÝÒ›eØ„+»Êyc#7˜jÎœÕž%¸O›5/°†G¤‘&Ê##içŽ¹^J¤%•^8';Aÿ býØ?iÒÀŽ_#U&ÙÖ•;V²Y%¥{G°Ì–‚ûS¾ro÷Õ˜{øÃ—úAz»}“õãbP`}ÜüÑÐÃûÓbµß,ÍíúÊéb%‹Áb=Æé6{´GE21h…Œ‘˜¹(\”’%9¯‘@Vjœáy÷©|¥åìß³–Þ;à½a§I#<¼H,?M;ƒ9o%ÅâèƒÝá¿˜6äG ùƒGÄ›Aþ‹îç«Ußê‡ô_4rR`ßh]Áû‘ñ¾ië ?Í÷ÅæÊÇ÷82ŸVâè­·‘hEt°ˆ¢à‰ç$Xå‚ÑÒÙˆcJ;î©ÐŒ2KwÂwˆýk­`ú. ¯L4iŒ;ÎS-ÙÉ6^q,Z(¯8ô˜oL•‚ðS¾ˆoöÔ¨à^}§'°7Ú6-L¯Wç#Ãymæ|=7î&˜d’õ•ê¤’ÌI¦mÞ®¥¸bŒ£Œ&Üs$N…à\KL•W–Feä‰`ì;+ÀýµÒsö¯µž×»p½i©IÃ;¸òUø$<G5‹½s¬/ÙÂ9y
Ä°‰×CÝÐ¿Ðaã]Ô?ÁkÀÔÛ·«'3øR¥i„fû
O›'´¬=]Øl«Ùzm>ÊbÑ"N(‚{™WÊÇµ¢&"&I¾õšò`húc´Î{Ã½J
qæ ÆÁ£ª…4œ'GcM™7pÌ•ø$“˜5ãé™"˜\ÊNfQ¡ÃS9˜sßË}6%öplÚEâD±)rˆçÕ¥Ðˆ¯B#ž>“ø&pð =ÑŒDf¬¶J¤(ÖÈŠ$"Üpîœð…¬RbÄ=·QŸþ­”²
@#þ3”ƒ‡Ø[ê;!ZFPLXóàay)hMžÂ¦ðÐê°	Q‡}».á-•&Höí+Œá«0†ƒµ§[sk«+gÈ—R;dœ,xÄSÜê •c1¤TÂGšö((ƒ²s¯(áT;Š¸í<nø¹V°„×	ÂÞD“f=¢þ%i§óT²VÝÕ;V°5K
!˜°³A«§Ft6Ø§²·Ú6%Hß7¬`ù¸X~0ó nÍòó•/sFX¥•ÄØ
oœ¦FKÁ<5Äh…]T3çuZÎ•Ü™È£ELú@¢çun~ÞkX`¼Æ+}78~rE (mãxÇ‚öD)@>á’´í®É«õ…òFë&†åõ*PÀ|l0¯í<šÏoWŽæ§A8ˆf*í¶YÒa›KÞpr”BœŠZYEµ¦„:ä½¡
y¥eÄ¸óäþg3ŸýTBù;‘<[hÒ8NàCÇ'Q~˜(ÖŠã'º÷I}s’ŸpÕºfGŠâi|ö„ðç†MÀs»
|ß••Gïíy¸öºŠï‰2^`)‚gÊHÏ›o‚5ŽHG¨ÅLáà	Þa%œ”(¾N ïðl£IC8…B8Ã_\¶cAe;ß%›ñæT) >éÍx³«Æ…ñüÞ@þÜ¸©AynYóñÁ¼²ó(pþi¶WÞ{hÔˆQµÍµoÂYM•Þhö«æ˜*@9a~ˆiŸïÎü;ªþ#iXà¼Î³&çðÌz	N2ë	&psG.™ê¿=U
œOÎŸ»j\8ÏßéçÏ›œç–8Î+; ç	®¼5w‚n-18i±
6(•’0Áe8ýŽPBDú”‚)É(ÁiNI‚ýn,Oê ïòô²I£88{žÔädSN;¤­ºuT
vŽçHñÁA\4˜§Û±ŸFóxßvÞŠŸ@}jN?é]¿$|…§Å
òšR(ÁÈ” y$>°»rz]Ì%÷R+¨1çf(D*”ŠÜEó4xª¸ÉiõQÀRQGei—ùyjJð·?Vp†$Mš01 ú„`¬¸–­bõZö¯Vßž,…ŒP1‡véÞìªÉÐƒ‹ 7ÁŒ»‡–Øÿ
°Ÿí<<ò‡Åîvw]Ü4—»CÞ"$áØY£9±E"…’^Qå<ÖÞaŒ<"HæX8Ç‰H«?v,tâ~¥_AýÔ¯,4iÌ—pgyDIô%&Œ73êHœ†[?»Æ<)?ÂqÀP%ì›5àwºØµ¿jOOñ¾¡¡ó¤èA½´r0.9¨­<5¸ö© 	3Š4&9m‚Î‰´F‰"´õgØ M…t¥¼‰X;Æ”6x+#€”cóaêçà\½˜#~Â¨Diü48•¹|Û…¡œŒx2 †¥	ãôe
—Aÿ$M+àk€qŽîŒY^;	¯4‚FJ…¹ú¥ŠHÍ­àÜn­!H;©d$Žrò~."vXD$¥Æ®“ Túôï@ÿÊBßôS­Nrâ0É9n¥Û•¤ÿ…@c’Ðô;htÔhˆï?Á¿jO?¼o¨0)°¯—‰‚ôã"}må1`þÊ»|Ï¢T$2í°cœs*´“&
£ƒa1†¨œ±q§°isF<ÅÔ§•žzŸ¶ùÝ®ýI»ñ?éRºœ—i¢N\ú‰B’¶¢ì5¿àøÿ8A
ÀøÏÕ@EtŸ»i¼ý]xïÜÌ!ÜwïÔvbL ìøÇçãlöçW?î!Ë©C‚ä5uÆ$:mîYTÂP¤”ËáùœëÐFhÆ”ñ4ýQ¡³D öŸã?ê§àÜyL"y’;SÖ‚_´ßŸ—Sþ17üCÕiõÔT(Á%(?ÉóýºaëÇÇúqÎöç	XÌ•Kã$Ì#ä˜ucK¹!Øyé¤V{”–…hÁ&à´ÔSn™×9â‰	D
Ö	÷µ‚î;à¾6Ñ¤áœŸG0LÅ‰Ë?•µcú©B„õÇüæd)˜?ÆÍþPg Ížóíê,æï¯~…“ƒºåýØASÛI±ƒýÊRØÁ¸ì`oæØAœ/ÍíÝ•ÿ¬ÒJ¥Ââ´Ó§ˆ9Ó$íúsÖ>Ÿ“HòÊ#&¤@šO´g2þì5,ü ‹Ô6š4A€gü¡šŸäàå´(éï÷×š*…ŒP'o0€VWÇ’6=‚÷­ê‰üMU¦ýûE£`ÿÈØ¿·óàà¿»5ëùvî®ìà0#ÖŠèÞJ¡³"Pæ,¥È:¥ÆÊ2©©Êc‚¥¶.a€3Æx)ºÀÿo{ø¿þMüÁ‰‚°–'ù $ÍÀ@Eû§ßoO”ýNö×îª“ý>ÔÍÛ­›šZVÐ|\4?Úyx4¿ò•>CÑ)A]äN'÷”:iFŒF9ö9-‹s‚Gí¬:„ˆjÅó¶ÇËm~‚Oû"ŒÝœæÏ/’ùÖ]~ú‰¸À{¿\äÞ„(4P"ŸÑïðÍùÝú^ÐB#Tð*Øy5ÐÜt¦nJžVØ>A½1ç¯<öÇ$P£ÛóQ”Ï/€—½pgÙâ¦ày7Îƒ ´‹lgm‡¦à*¸
î fw`Ahÿ¸ó®2A¨ô&Î­Á‡šÒm «;Ÿd/‘:#=´=´Xð|&Ô½ tÞhohv§eo
B»0è+##"tŠ€ä³{ÉPA¨É#t©Š;°$tßBù­‡
By»·Ð©}UæÎ|†JB;ñÚ5wàµï:î 3ì
ñs¨%çÐa1‡®}s(»˜CùßÚ‡sèÚ7‡öÌGèÐ½é{0“¾‡.~÷Ð%íjò{è"p6÷»›îº^mÙ-ü½à·‚ûº¸Üºž/ ÃhE‹ ]4Ð™»€Ì"Ð	¹€vâT™(;~€jý eË›¨… ‹àt|€Ú¼;T¿)“KmäÚKèŠµ„Z|	µøºV-7àWB‡ùº°¬:ïeš‚Ð5míÃGóx>Ã©„¡ð#´Ó¡cý(ûe]V×Pƒ®¡6ZC‡ÑªÍjñ.—è€Û€O26PºoÀ7ÐõeÖû:/6PœØ€µµÀKë 	%—0–mÀµ¿<†~
BWõXè"´NÛ&6Ðù½…Î‡-tðn¡ƒwíë-´¯Á›ˆ-´·Ð.Ü‚ðí´³wÐ®CØ'èÂû	Ê‘?AûðÓ
jòÏÐ%í3øÔõ3´•‡¢Ã“y„JB¿ý+Tï_áé¸{ÆêN1L·DèŽî¹3Bpî§k'ä2Òrï…pXé ±Özž3rä|[B"¹špÆ¨Nª`Mt.:n°FÞuÖçü’«Ëkç?&žŽ\‚‹a¤ÐIþ„šÙ¸×úð,ØcçSÉÅ5¢¿-ÈeçÓˆ©¸ðü©;ÁÖëmš@*ù²ÆFèOc¤Ëzº2B+í¹³”¤ˆÁðhcš½Î0Ê„2h(¦XÈ1b„ZŠ,wÈá`±Á©3þ« t@ÿ×´ñ\.K%w’.“r-Q+]†È1³=ú© ôx ÍŠ…}Û§vÏ~ùÔÇŸ&ãOÅGFñ§A<¬çñ&HXÎ¯Kqi<'’XG‘ñXdRš:Ž‘1Š„Àe¤ZçõØêœ÷Â¢˜b2É“¯ayVqöÛ½ŠÒ[^Ùæˆé#}ÈÎpÎqÕDvÎ8iFËp.ûeºxa¶xŸh¬új4”¿;qS¡|nÓ¡I`°A‘©`~«iúÇƒþ¶¡‡g 6,oÍâÊ›ùÈâ:íã1„b¹Õ	¯bˆFêÌ§Í»âÇh„àR$V`ç†Á_MtUÜïjþwàÿÞF“†Îu¡çíÌ×T)J›‰0©ÒüÐš-… _3ûeW9Ž;»ø.YË½’ýEË2“"û–>12Ÿ8Øyx:á>Þßl·oO¥Ãb¯=ÎÚÃÉ„ÂÒ	µÄÊœO3°A”j–ø„ô>h,ñ6ýEqc„‰œz›(D^-™]!æŸþaš¹ë+ìl!«¿Wý5¢Qãïú±fïžùÄ_ç‹yœ'êðÃÝ|6áýìçµñóüdb‡¾û“y4õ¯ÍÒÏ~\­C"‡³Ÿï^ 	óÂìfù~ö‡ùÚÜš¥y?ûÑlÍ}þÓ»ô‹ÛÝ¢~ÍïV«‡Ušu³Ÿ¦~¿áþýì‡§õ"ÁT-ôÉ¬ç«Ýf¶yJ²¨ßn›Õ»çg£¤!þ˜^bç‹ùöiö9!¥rZò—Þ¬ý&ñw¹¹gFÐÔÓû–yIØÌÚÝ°¹cIÍ|…®HÎ¹’ºY¶KRBÓÿ^¡+˜jAÙÉ‰–i8"¬Xó:"ÿŒ ~7_õæ0¿nª™õÕYËró\5Ê¿a9NÌSåßœæƒr6eiõÒ9ÊòÊ
y–°€S}€óm@}WGÈ8uíg^!] 8¸³Å¿f8üQîßBð:8ÒêÐüMq_16jx÷ð×PóôcÃC„Á‘­à Zp|g‰-í„®¥ßg|'t-!ÆrøÐIp@äÑ‹cÄû]16ï»
¹ÈAµ†ÇuA{[5B <¾éîÆAÇd’Ož$çƒÆXå]_Úô}<o„¶¸]¤­~ÏgÂß·k³˜ßˆgûÁKžy~à2í‡6áanW‹ó4¶ù õL[¼¿íî×Úî~}É3Øî~}‘í XÔïo»»ÐvwÉ3Ønã.²Ý¶Ÿí¶Øn{©í¶Øn{‰í¶ Û9èºôœëòû —A·2gZ¼“á7è…[™½UF¸•ñá“Yšœbýº~Ç¸0KäHôL
Ž­Ë^QL"G"hHÿ">ý&j‰E˜ZéÅ«a•ÕÀ¿•,®®Ïfš´·‡{{ŒNêžN)jÆqÎøÁ± Ç­Éé´)Ã;|ÐÁ>N{k¼úfÐÝŸÛõß¡÷+è1ÝXp	=¾_“ÚuÇ¦6%ÁyÓÀyŸÀ§€TÅGºó<¼úqÓa9)‡›çÆŸ›‘}n¦žà]•Õ	ä\`Â àsAQª„ó"zbcÄré™¥KÂ±Ä
+®ˆÄÞKO‚öZHÒÉê
•{‘ÊM™»1æn<Ço©W]FPvömøêæ0¯þÎº…³ÂÙ(–CT¥{î¢RÖ$=÷/õo`Â`o¤èþ5Kê€ß®½Þ¼”*=çK•ž3‚Ð^„ï“K=ŸNÁRÏçœà?h=è ºjáŸáÏÀ¾³ZBÐ!YŠu^³èXð´:Ø©ºöÁÏÁKe$˜d©ŒÔ-]‡F(¡¿ÉùŠ-A^U™ !Û{Ipý&èüþÎ
=A¡þ»òÚ/¡€Â¥"T·à5+BÁ%”À¥ÈÔYÉRdê¬d)2Õ)8|Ät\l¡s^¶
:ÃJ}«nÁRßª[°Ô·:'yµúVÙÿ .	ÉÝÙ~š«ý ÌÁ°ýÌmX­o{5ëv÷Ñ¬Í¶Ç7îÍri tÏÜ=„QYs~…ÌÂ<¥ÿ÷ˆSÙfŸ«âa±Üm<Ëßõ(Ãòìô2%7Ðâû9®ïçŸ‡‰åÄíTú@"O¿¡Ö9­¨ÅÂYc=RH ualDÖ"|DÑKï)ÃžˆœÄuÇóü~¯bqíˆæ9éûðåD²vÉ4‰˜nú‚J,Î‡=<AÛ³¥¸„N9q{»¯FóÜšöbYç™Þ›V€ä £¡G` {"åØ¨vFyîRãœDÕÌ³^{‹¹`<D«ò$£µPÌs‚&ÎcÝÍ ö*ÐÅ öFš4 àˆ”þ+Ú™P5¥-€5ã—€Ö„)$`Ò$ ÕW£‘€>û|ÈÁÉ9E¦EG!#“€ƒ¡‡'û³¹+Ÿxa˜2Hm&’pçdç¶ÑÅÒ²îŒ•BclHþó‚sj1â¨“üXkX(@ØÛhÒ€õÈç¡ÈI>ÅÒ°jæóPœâþYÐ[³¥€ *0ôÿgïí¶ÜÆ•tÁû|
­¾˜“µvI&~’Ó§g¦víj·Ï¸j{m»ûÔÌ€J:)‘ERÊÌºê×˜µf^®Ÿd þH¤~H ”ìÌªÜ®mgJñ@ˆ½Wu='€ÁÁ‰Æ1ÈÈc<+íßôìUù_Yù·ã|Ý¯ŽÙ¾­æ‚ú$®Ç¤²w(÷¨¢H¸Q=æú~à8‘ï†®@ä1Ï¥QÈ#8ci k~õ|¯zHï«úch}c§ïù‡Xš†AWéc@|ó,eòªò¯ òá
²¾¨ë)|ƒ{£×áy)ûJP¼ªú+«új”/¯èš~[5}(Õzà˜² `‡
Ÿ¸Ü	ˆüÀƒD(¡˜p9–4.¤] >¥ Tóïiúªä”¼Ÿg­â]íªìØýª¬¾ƒ!êhxH‹ÑXÁï–Ç«z¿¼z÷r!õ¾{MWSîA’º—ºÿ¬»ìÕ«Z¿²ZWc|y¥¾»ÈúmU»‹„:.Á,ÎÂ(…¤¨çHˆPxRáûÈÍ<%Ìó]ßuõBoPµÿÜ>ã«‚Pð»QzÖjžèªyß‚ƒ|¿»“.ö}l¬è–Ì«º¿ÂnÞ»”º?xYWSúýfÁ£ò¬€]ß^Í€+›û‘¾¼1P…¨|[C ŠDÄ£€;!!Æˆaä†ÞÅ$	öáI)ðÐEžã†AÀ™!Ê	F‘ã¢ACà“z¾W#`À¨FèY ž®@|çÀ• Ø5 _ÚÆ@g™¼*ÿçìÊï¼¨«)~ðqýÀÁGxV
¿ê×«²¿²²¯Gù
Š¾
.ý¶šž:¾¹8à8Ü@p/€*:q‡zŒ3ƒ(@ û¡ü×u<.óàG$"bØ›ÿ©zÀWU?¤ê«!úcèz@Ïí;õ1ñ‘ÛUöÒ~t‘ùe½îRyÕöWÐöèR[ýî›ºžºOÎaÂ?üÏKá×ââUã_Yã×Ã|•G¿qŒ>a… ³ @Ü#nÈ¼2'ô¸…¤;Ðõ‰ïù@<|âº%Ã
_>Þ«ºR÷r€žµ²÷õð}ØßØ»ïuëlÊiŠÍoèíWÈ«ž¿‚ž¿XÍý{ºž–Ï05!ñÎþž—†WâU¿_Y¿«Až¬ÝÕJì+ñGŸ|&x\‰ƒt^[9ÜÝ—×ª›íÒÀ‹<ŸxÌ‹€Ï]'@r»„a Ô-Ç‚3€ E ò ¥ˆa$Îg4ø³Uº)¤Øù¶ºjŸÏÊ;1{¯739VEšˆójým¶šµS³eT«L¥€KñXÎCZHU]ó£Y&%s¥ŠYßÕÖÍO+ÊŠ™àq©4ýšWø9ækUÀ~ö£œ5òCÕ7ùÎf+•M¬äL›ÕSp1›É^ÜÐ¤H÷]i:>c›r.ÁóŒJÒYš‰¼i|S(C5T÷ZI5Î’BSÅh™ÓUeE$Iú0ËÒl¾Éf²ÝMm[d™ ²·eÅƒÉ§ºŸ¥ÑŒÞÔìÂMY¦WLÈ#5þÃÃÃB‹‚Ý¥¥4]ãM…zS¤Qù@sñFÎÔsjŸ@ÇC˜t“ò¸ž@x'Õ>t\ˆöø>RÔ=~ 4öøÙj^/ƒy½ õâÑÑîo?¼ßÂj‚T?ýeö ž™xd"«_jûúKõãˆ<”XU¿ü˜fOy5¡Òuò4ÝJøXM¾ÙOëmœ§k5ßüJ‹v]ŒÙòmm…£Á›\ÇÑsmÃõ²Õ pVÖVòí_’Ù­d‚m{ø<t®zÝI*f#£Œ®Udç¿–}’][éÞ~wKp8\ÏF’WÄDXê‰Fz—iš´y™ðÛ·¿üûçûáã¿1­×xò–r”b.ÿÝj0”Ïê‡ûþÝ_üÀ=†»FMƒ<MËËåˆ¦x:L1tDR>Äœ'G
;ºM‘WÓ’Ç…ÚØÖjs˜.KèÓ¼Vw…%KÓœ.E9oÌ§A²fPHî’RC+±úV)òù ‹¢éÇDcRÉ¡IŸ\Ù ôÂP ä‹ t/¤Mˆ(p¥=éxžGEÄ?„¢ã 
ƒE0ðæ~Î¹„þ¦'Í*­Ú(ìlJù°ÒèsIuÞ¢üTÖ£Ò ³iVë³†±Òë5ÃXþ¶L…äy£äu7”•×sÅìá.fw3eŸtg1kšÝY7fÆìË³ô|´ô nÿêfà£ÞÅMâÑkí<0WÔ¬~q–^gB¿yßÎ6-#<#z4LÊ´{µÊj–•m†à×·Í.md^Ø8ë˜Uç-ƒª˜¯âµ€.¹Ã\)‚°”€!J1À9"„ˆ‰0
H 'ˆ ç;Ì“¹˜€s„\ìœ»Røªdž£’ºî©d¼	T2/Ô¡`¯fž‰/AªÇðòàÕÕÌ·p¼5s´!¿”¾Q=þ;ì.¥ Œ]	Ïg€	à2èDp€#Á)ƒ!ùqH@…ºè]ß!‰à9eó$Ÿ$f­¯TMGÝ©™¸Øi¹åV§;EÛ½„?`^«–ø¦Õ!µÛaÆ¤¸ìª$Ù™Íš½í u· Øqýþ3r ß=c–¯˜è¨5ÿ[Îæ—¹ñ12t7_^ ¶'îCL,x+Orå_Jxío×q(÷ƒÝ\³M^ˆ¢òLS–Õô¶'ö¤;ôkhŸ¯²Ù!>#ÀãD¢œ9E3Œô Ãn€Ìå*ð,w9œ1„QÄ@(bïÜí«þ¹Žþ9»;	|èŸ*iGÿxpôŽÓiýóBw'“5ÐsÙ¤ø[lR®¨ì·(VÆý³VEšÇ‰{¤˜¦œ®±CÊiD×ÔVE‘…·ÀÍ„@f
Ša.|˜ãð¢ˆÓ€†@Â(†¡‹	¢0À`È½‘Ï\èDR_Q„£\Ê¼3
êgQæ1+fœwaJs^‰ ù˜Ù]s­gàQ=êÊ.]«:ëY½¬¿ŸE‚–›\Ìr¥‘V£m(xóV}—ýn%›Ç¿ýuö¿ÐUöÏ³¿KÎŸ>þí¯W¾†[?M-ßN_¸õa IÐË˜%?r <½‚ÀSò«L=äxÄï^¿‘Ÿßd4yVÝÅy5æÈP)ýðñý.œÜ²]™`q«`²«éÏ:ùÊŒò§„›5—/îvrñ¥˜ÿRqÆòk!Þt—ò…ÏådÔxá,œáuØDóèoŠ„–bžÊÊAþÎÂEÐˆ•lÐ\.øæñKñFÝÙ¸‡›’*mð.í!o¹¶ïE’¾©b^ˆDŒ<’c5¤%³x³âîðæX dÌ¶îu’ÊA˜ˆÁÜ…»ß96 í²rC9•øœnÔ•Wùc>òÌ¦TÝÜfó‘ÑÇOŸ-Ó¼Tû<•Â-Ÿgiò$…åðj ²ƒ®Ë¥¼IèØh9ÿMYÎ¥¡ÃÓ5~±Î™Ìø–÷Z
ð­˜óœ.yžf£‹Ê`î´MH¡[÷]ËÐÞÿãV°]’wHåÞctå,Q)‡Gß0Z$rƒÌ6•È-Æ˜L
–Ð¢PßŒD^Èy`0¤,‰³Êœaê,°Ó4ó/ÃýTóÕ@Jp4"9åÖÈà5q4/ä«sv—§ÒÒ‰ÙHg¸‹Uª,¯a–rZ- ÁiHÉ-x\–"h¶"Z”óêàY¬Yªï.©5”Ý+…ÁvT!•}—Æ²Óët=oŒ‚R½Ãá‡dW«M9ª²e¯MÄn¬º^Þ‹§1¡c²Ü¾ü¶ù0G¥“dM’ªmÖG9ƒMXæ)åöqÄÊ•KMŸ©ÜQÞ‹aÑU©^½>n¯+)”yŸ®ÇÜ`r®Rå‚ë¨‘TÝE)åöyTcÈ–Óù2ICšTæÒ¨V4èµúg5&jÀ—³UŸiFÕŸ¼{eFC‘åq±UŠ€˜<½ÜxfóÊ,fëÊý¯”Ê™\ªR?ò¡-€g²\sµ•vÑ¨T%r‘ÃøîV«W&CP©žŽ¹Ø±]æ1Ÿ'ôIÚÞããk ljîwñò.Q®ÿùƒºk?Ö‚Ñr3ÜÌsÎÒ,Ó°–]Í·rO²õÌ¬ñÆì¢}5<ÐlOßðÍ’XQÊNðt[Í\Šãu+u^ùÜFºOÌ‡e3"9”V“ñÜ°ôpþƒÚÑ?Œð5\—c³
hÅP.Ãård Ô~Ø`7Xó-ï6ëû‘YadJçb)Ö*ô6Íçùf­üáãRÉh|5œ‚†Ô¼(á]¹sCí‹óÇý¯d&0˜…PîÿyeÿÏ+‹el=	£Êw<ò¦°g²o«½ÑYBãu“_-ç1#Ã32ÞJQÞ61[jŽsœ‘Æ+ãõK“4»‚d´u+ËXÏ…ê˜95Ü¾FzùáŽ–Ëy$J6¶Ñ4Z·Å˜‰=ìiÃ›ë+õäAìI¶í‰ÊeÙé\ 8Ëöy9ïâ-C:H—Ä!OLbŽ[êö,_bzÀ¬¼“† WhG³­dZƒ--à%ï6wT5óM'…Aô%"¦¯U@_+ºþHek>p?§9ä¥¿oäS¥ø’vÆ…Úœ%é†?P)¬.ÍY$´P¾ËJ•_šù²¹qi¾qu¹‚‡—æ›¤÷ñ¥y®Šâ·Á +¦OW`ªn¿”ÅåG5cÙŽåÛŸŽ­yiQ.åÒ¼x×òt¥Ì«ÍÅ9%e÷<%ƒ	êñPþTñÿÍ+çÿÔäVhotÎ¼Ð\Åh/Åëx„2á4[”é*9C'…nm§ìnóÔé›3ì$Ù©ÖÈZ_sëËåopé Ï‘ð#$0B9zL’A  òÒ0}@!Â<ôœÀ—ôQèËß‚3—ÞÚ‹k½Ç›qZÒúRÑpôéúY\SSñ|š×ÔùíAÞ  R	øn÷Šš~<®óÔ¼y½®fy]º˜†Ü|ƒªÇüíc¦lÊ.x¸c\~ñF»>ˆÐ£L®p7ÂL3¸!†”ÈUË¤T”‹:…p!#\8tD<îŸÍX6ž„>ÁHt£‹î3B/ð¼îÍ]èûîx)¼£¹ò*mE¢c@®¾Üsþ“ÃÞ~øÈÃˆ9¾ã’S("ß	AÄÃÈÃr Ìäzv\—îŠ 
}'€2Ó\Ï“ˆyØ{<c‘xý<¤"ÀÚRÑuÀ¡ã8>èJEÇw[ËeT*öÆåU0Z
FÆ‰¢¾†«ÇüO.[Þ·Œ@Qæ;ÐŒE€†¦ "òWÈYD"äDžƒ|èq yèJ! ÇÁua#’±}2c¡xøLä¡§+	Á~?Ä¨_B	Éqôuƒ»Ú!y…Ö¢ÃÚH×ö¹·|ÿä°=zøPxÄˆ q rGó¤Øó‡@ÂrŸLCPèË]ì’DJ)Âîˆ lŸÌX ž >® Ä.>¨!\(I¯b|€µ£[Û!y€Öø¾ ¼Öá`Ë÷O. Õé7~€’#W Ê±p¼0Ž` pq!°p}‚¹qq„Uª5¼À%R^Â€G#ÂO=•±à; =¡§½&Ð;Hƒ	|ÇGÝ]0¢}b¢†ãUàÙz´ùìÞ5n-(žrAW]Üø’Îe;"€ˆ¹<Èí-F!ä^¨qðcâ!×÷=)é„n8>ôYÀ<BèŒIºê±ŒEÝ!ê™È:_WÖ!×ú²Îõ0ìÚwÄ!ãI»SãUÔÙÚv{–›Ûë\¦RLÿìÂîéÛ;/â‚ H•„ÅP8Á} >}ŸrâRÇ¡~ çŒÏ]u‚=)"‘0Ùõ1a÷d%ìžž£°CH[Øt ì|Q÷*ŒO|¤{¸QÆ«°³vžqÎÙk^ò¬˜þÉ…]{ÑõÈ»@"À÷}¥„œBŒ@„(€HÎH–‚†žvÈq„'¤À	 ÏU=j%WûdÆ"ïð™H=íC©ò¦ºñ»yS¥íéJ½v@^Ÿ½à³µò®u½åû'Ë%_]ã|\òÁ*¢Ùr[‹™ àD@$·² ± R	_8”:€€À¡@GÔƒ€’€b9LÚ3ç$ß‘Wã°fböc:ÿ'i¹“j’Í2^d¨n‰³Š¸Jm}’é®>Ï^DVunT*'•`V‰/Wª¾ÈÓÕ,[Õ¿Ý‚ïª|¡ÿ<.¾Ÿ%RÍ>üøa—UT•ÿ³¨TùÀfu÷v8m¿‘\¾ŸÑbö ’Dý[ùNh²ÏIzÅ$Ø•ÈŽË»M¸`éêM¶ –fjxÞôf×iî_Jä^îQõ&Áiäô//Ê= pŽH÷\wÛ.»6¯fp#âêYÿ\Å9U#xî)"ýð™'û)!òo/¥¥¡HÞ°$Éˆá›··\Ó|8dÜŽm¦büU†²íõ˜§‘QìM2€öØWyz*ÑpÑ6Ú˜!%GªQn¡ãÍð41e[gÅšÝ©ô]ãÁÚF©b+æ£É’m4Lu"ÂSB5œ¿ˆb$•^fs+¾YÜð¨ÿrÈTSz®×eƒiQ³U‰…Fr7øfMj¾µeÑæ&­²”®Ór<¹…YîO½9Í’û±DÐõüA„J+72šÈ$á4žLø»†iK/Ÿ”…ÎLQÂÃ £Í%¯•¨ïY¾BƒVÉF«ü4£9AÍ²‹Ç,Ÿ‹-ËQMdÒÅW¶b8ç*íË*eãâÞ ™Ì—b,?›”šF‰äô$¦· &9*¯•’Ýé{£/Y>–õ	˜e±þm4YŽQŠ§k§úm3:ó¾QÚ²¢|J„Ž¤ªrï›äøÑ[¦F9ºJ-™ŠSI<’¦ÔUõmŒž]±œ×áïsçá:ÓWÀdhšé*c›hìÈàb£ì·­ÒÛÈ©ÌLƒ´Nå‰89ÿOúž.é‘;‘¢·¿8›'&‹4å@Sj.GŒfÙ<”Sè^¬«$™û¼ïÛVkhÈVëð<|’ÉÜúwÈ§±ÛJã£ÂmÏì‹þpÕ¯êà½Ô>’Ír)Å×€¿¢ñ·MGZ!C«z$ç‰;’U,WŽBm3§ó\œÃM¦•oq6†=×Ç‘C@RO _D@~à
ù”‡9õ"ù¡ºöŽÁ}„¹ï#—ì~{ûdÆgc'€ÏãlkçÇ@><P HÇ‘øÀÕ=käõlÌölÌžå¥€«eBjøþÙÏÆv	¡¾ „nèB#î^u$y¾OA€x@åG,¡\¥„y‘Ã.C(ˆ ñ C§€»g3§ ÏDj_‹òôs!@éÞ‹BxX7Èg?(¯‚Ðö4	 ×V^-uÛžóŸ\vrØ}‹ˆ¹:©¸Ëää.ö¹Ê¿ÝHEÿD‘•ŽÌøç:Rtz$Dc÷à;g,OcŸ‰<Ô¾¯nCöj({U=}¿MV3*;£ò*m¢ƒ eÜãÔŒ“z¬ÿ¼"±òˆÀCAŸŒ‹APûÀš2ÚŽ™ ôiÀ9Œ„ãÃÈ„q
D€#_Úˆ4dn/ÄQÀœH„À$
@‰È t\Ï
ÂM×¥ìÐZNÇx½œ1šÑ0Nâ2®¯5ÍXºÊñ8SeÎþ‘®èzöËo%it¹¬ª\VUWYY_+«
òñzöñÝûÿúÏÿ§˜ý²cü±BÎÞ©šUÑÉê¶Ô{u`*_ÈÍÇ4*h.f[‘¤™*>5«Vt1+ÓY3Ÿ4žåæì³,fmŸ%x=ÅlS®¸³\Pùéýçÿ[Èg-%»uYü×þu#‰¸I£‹,¡OŠßßê™g[šÇ©´Û!ÅÝÆi.›ýŸê{9-35@ez#íŽÙ'ñXÎ~jªáÍ~N¹H¾ß÷ïŽ*7¬|rIùOÿhŸY
íš‡ìNÓ‡›º³X5ªÆ¬’Þ×ÕRµÈ“C¾‹µ(ß4¯¾xSÄI»†ÞœÑ_:Â¤{?Ìõ¼ JtR9Hnç;*Ãg7¹PCÕÓu^¯Óy½Bjmë¨­Û÷o?¼ßÂ¿ÌäLÛÿôó‡÷õ­¿Û_DYÈÙ"úß7 ï¦k»Î²xó)M“BKçKwr¨&{D\ãke»®Œž¼Ã,+-‡Æ*c˜°NâpÇ]¥£GÓu¢bÉØçB±:ÂêÑÝ¾ýñÇÏháŒXU)ó‡iŠ’³¿üÅŒðöÇ_ýá¯ï>ËÁ»Haãìþx<«ÿøiMGZíO>8’RGÒõpûÍž<ìó\×i®¡Ò#òërbŽëÓV‰îöl’]âH›	áF.$
‚{ND¥yB†Y wfy„p êÉc®`B@,^í’W»äÙ%äÈ.!ä´]¢2¤Sót[ ‰N,ÒIe«¿¡~™–‰ínüJ–	¶È`~]Ëddÿ=Ñ29ª:t!E³šÑ	[EW›,štMsDÇˆ¹`‘¤c[`íJE<›fÎ•ðøþ"W¨?!ð‰‹#ˆPä ¢…¡'­‡øB p}áEQà"‰ Â÷Æ)<g×ÄI£õy-+µ¬ÔlÇŒ;g¹¼kƒÏ”Øæ"Š×U	Õ~/P§žÙëcâz¹ª qîùª½@'cswvý6üïã0§*Èðnú1´î¾¿+(Øšñå RÂì‹;ÖMžÓ5ðN<Ëö›k«ÏÒ2U¥Ì‡	Šíâ*ë«lÆ=Î q…HxÜð©+ßÜˆs'„‘ãIF\†@nF°ã¹®ë@zˆÎf{UZÇJËÓÝJ¥uX”J*-|¨´t2ñ(­—¹4S[ÏkGˆ!6?£ýzjë¢»Ã¨¶¾ÉîøÅë¯mü»Ý^.°³ë6T[Ð	\Â¡ð<_ð0€ã*(õ”¢Q8êžw<¹øÂÆòç@pOpÁ sür7ÙÝì?âb£J¼×Bµñ?SV?ÌXš4a’ÊYY*òJS)‡æŠ®ãl“Ôœ”°LèSº©¼šÕè³[ZHI?SÁ1Å¢\Êîïåå¬þ*T#)…IñÝõTœÔp‹ö*êsÚÌ'J+ {]H~<•)î”6“¦‚ã\ ô•ýà nf9ˆ‰¯S(¢êß¼ž<sl¶ÿúéÃ{)Ó_Ð=¡S;UyXå»2WC²'ÃaVg–ó Gý‚gåã¥¹C1iŠªêƒÆ1ärË´¨ê(ôÏ*tÜ„ž§åçZ*˜ –üÞˆ¼0¢.˜¯-S‹gÈäMM y±]šÐoc©xL ò=ú\‘ErI²„†Ÿ—tUÊÈI{FË»,¡kE:Ñ&IåŒé‘M0—”©TÜIÝš+Ù>ÐnK9@QbNxcui°ìŸùÝ?i¼—?ký
€}PTCù•xÔ™ñ¿®6:TÙJãíÿZkL©_uºFË{¥åP`¡’—4ÎSY/å\Öèžrú×¯^‡8BYƒ:‹óZw[Ž Ò®ƒðžËêÑýü€*ÝÖøkÔŸ³ø1ÜDº€8Õ¥”ÿ×%MCåþÐ¥®†m(÷ˆ"*M†!)y¢±@uî#­ú‡gzWœögm#ä•’Ó\bmµÎL Q	5É•þœC5|Å+ZgAßÀª—öë¯ríb;Ô¸–@86QÎÇžïwYWÓÜþß’íg•YgpŽk<oò‡yHÜyu‹h€ôQîyªÕ]Îß}ü»ï»ÁÌãð,6:Ý†þ°¥¼LÙ“[½ýÑòE¨®1l” ÎY:ô}²)Ju–‚ÇQ¯–ƒ_î‹2§C$i9ü-\>&ÃåÓÀ÷Ê3‘Ñx=ÔJÄ³o—Cïa¹Jàr;D 6l£D[(ƒÜï¥I:ô¶–Û¥X~¿¢ƒÃ ¾_wƒ$Ê2L0ØÅÇÏE18’‰ˆ§CRíûV«áÆðëthÓ‚.ÅÀ÷™ªJþæCƒ¨²Gñ(~“Åð|/så :ÿõCšÅßoÖQBËrp®mãUï=_Î«{þ8É‘zNH"N#?„PèCÄ]Ž:€P…'	å7Ô.ö¡ÃÃ@DãÓÀyuäNtäúàÈ‘ë´ïïà~ª|Ui»—XÙw<Q/³²H{=ÃÔ‘«&ùêÊU£ï:ù@®éÊ9C³våj^¶ìøtuo6Î]mòC/¯)ðÀÝk
oý¾Æ¸ÂVÚ5wä6e°÷›"wNbSàÞ[lŠÜ¹õµÿX“¾ïHÖõ<Êš˜kù‚w¹_œYs¬g³&uëuÖ%oÜÏºä­Z—¾qHë’7ži]òŽ‹ZbÔý®ÓZW3ì¼×š€½[pàÏÖEuÛæ‘×8éñÖCòÓ—^ÎQ÷]¿ú°CW¸.²ã×…tãº˜/¹.¬v—ëR—Vƒ·s kÒ…ÉøÈáÂÕÕY]g¹¶¢;òš› »îsM\Çþüâ††ìSÐ9ºënŸV^÷Ix¨)¶Îûàµà¿›åcŸücÂ¾•kÞÓºåøê¡?÷í«‡þÕCÿê¡õÐzè…X‡©bbç¢Wu%Ú›ë†ñAïN<ßÃžpBßu9Â÷¨Ã}pî"uy—¸$"G1
<Bçüóª,FÌfÿ&hRÞÍ~T4³ÍåÃ©ùPyÝël| +‡6¯Vß0<Íé<®êîÞÙÙ¬‹ xuìÊZ^£ÆÎAqnQÐKBëBg<eUÓ«¹šs`èuobz^Œ×ýÄÃNŽâyOÓ±Ò/ÇKt˜ŸŽËýß‰=i\:ê.èôk±Åxk¼ÎZ§DäqþOÿÛQ²îr>ôçIkÑgxÓô‡/Ni¦aÀÇùÜþö¹©û¹šÄ§Œ™Ñž<ÐuiÐ–\õ¢þyRªŸN4> 9µ	ªv¾Ì7¡u‚,{…ˆ ’„pÀ¥ !‚@ À<©m}î1Š”4ð`ä@â ˆCàl‰·êifÐeûbÁRIv¦öùXãèg¬d]%€‹ÒE¸.ìæ_1J½ôªhm­Cˆ­¢­‡þÒê¶æúçPº—·YÔZ¨îÔÌWñ:^Ñä¼ž"¶sñm6JŽð ¡RG!ñ(ypy0¢¢Šÿ—_QW ¹}â”F.÷ˆ8vÂ3rûÕãÌdO¥jS«¤ÜhKíqìó•Ùð0ýy™íT‰z2ÛëÖz‡¿ŽÔŸ>¯BÛRh¾o[Úú‹íšíAjO’É–²Ùj.'–üý[ÙÉ>`(ä>GK«p)Ô-R$|î»JòŠÐGp¹[§<]ÊPD(ô,"Ì8#o?ž2m+ºbu°ÂwQ7…ÊESVe>”•¬ uMÒó’ù’­<_Žˆ¾ÝêÌäte8ð‚ñl7ç&ç«4·6Á-²«Ÿ{—ìüDü·0Ì¯±gÚ¿›ëèŸÚ˜ýúZc9XJ6ŒÜ ‚AÄ!vQ
áSêF€;Q(</òˆ|! ä’Æ8’†ÿ9­ó³(ÔYYv EüßèÓl“©êó¹®­¯Ëáùj‹£‚|ÚÂ;Ì“-ßF÷$´N4´E=•^u„µŽpÍcúcqIV³}Õ6£˜ÑÕàéHý‘\á+ùúÏCšÉµ°ïxËª‹³‘ÿq’ÚeshAš!€†y9$(!"Ÿ¹P…+’ˆQ_`•ÓnHüÀ˜æ!)Ó8÷ÎÈüÓu)GL[`©ìãÓ,jÏ®‡ñrê*;j)ðiÙVß0&u*õ ®,‰\µQ¯ëBj‡›Õ&QÂ—ÇtÆê|ßl.èL…3,UˆfÛ±¸ùt'Ûj_‰¢§RêVFÀÌ’*ãS'ê¢Åu5ÌC|/–ët%ªÐ¶mÎ·õÔÈ¿ø½ü›¾ï;Þ™Œey¤¯`|"Ð=l÷;ùý”ŒìÔ¼šzsh”©ì¥)–Ãçœ\ÏÐÄØ‘$;1,OŠ€óÌt’“™0­rB¶#¥‘5%OÖ¢Ô'Î’âˆxZ	~?×jû*fV)ß$â:ùhJ½Ké¦¼ÓIÃRÊ…O¹!¥vÆ¹~29ª‘è£L¥ØžgIFó¢‰À™‘§·²cŸþþé§Ÿ?xÿùÃÿøøÓ?>ÿüîuü2™CŽo”ß:¼fªV‘ª1ßÄjÎ^IMæq%KÊ„nÖì®Ox!;Esjm©ø"€r›	 t£ ` DBáF0	¢(TàÈG„ ×Cœ…ÈÁAàDäÜÝWKå+[*¶¥]pZÕ“–	éä˜h8O5øw|y[ewïòÛ*£›Ý	¶Šn4ZßhÑGu­—W’Ú™1Ï,:ðÀÂ¹rPai8
{ãG7š®kÛX@Œ£{v‘f‹'Í	Ð!Kéª5¾ôJ|½@»i^'U˜àÜGßòï{‘ˆ¸C!€@"¸QäEÊ³Oaè;¡çEBŸE.Âã3€¨/í¬sYå?Ô´Ë%T›F/Æ†jÞ‡jc)JikÔ¯U}”§+õH…l­iõ½™Ï~È2ÉõSNåLÈùÁ_Óô^>á½úù§Mž®Åƒúñ_å÷uÛêi:Üçê‡\©×åOosº¥RßÊãO›µlägÙy6ûxGUPùñÿ Ê˜ÊŸÞÓ¢\D«Ù­eš„òEW©–ÔWÒèIf+QR.¹Ín÷ßVæ`y·Y…kÙ×Šøç–ìc)íFùÁ‡”Ý‹²ú3Ùˆêø?(Sk²fŠäã]º)ÕwòçOêoh.‡|=ûùŽRc!¹¨ùù:Tÿ/	Ù„âyš ®ƒz&h ]ž6Aƒˆú6(t‘\Ð½ƒåW§ÊZgýWÖ€ÿrŽd,K¤{â©V)& _ŸítfÌ<!bÇ™êZ©ºÌkÓ1l¥‹Ôú'»“Â‹fR”F8NUd¨	 OkjÉÛˆv’ÔVÉ\3H-0ËFŽ¾Ô¢Ý£KÒ
z3ä†F”I‘ÿd[Ñåš–R5™¡šeELY«mÂ2.åû6D–q58R1³Fí¤ê/·FiE”[šaV¦€Za¶Ja!žjÕ®‰éVÊ:PrrúyµQÅ¬Z–ÍåþGöaHê+£cž®“x-æÒFM7ëòXú¿ýéD0à-‚á[°§Ü'X9Uá«Á—ÕØ'Õ^N7Y‘ewñœ%±¨‡v’£·lRÅéîW¹TQEmîÎQ½ã×Í9³l„àj#¾VZ$jšqÇÖé‘®Œ[z>^¯3(u­Nþ’›>Ù—"]WóÏ(uãÜ­:©›þI)iš¾®?¦Ë©ø-‰KaôŽû®¦*`j‚«ª‹Ÿæ¯zv4ÅµÖéóB²ý-1r«Ä(‘×ž^vü×ŸßCåŠ[ Í¾žB“k{
5r2Y¸ê
Q–R)sioÜ—i6/ØXÑ#·Þõ,´@òÅµU*Í¼v ÄÄxACÂ9õÅ¾@*75&˜9®çRrºÔwI€”gÃ	Ï¥?ÌþöcóÄ³Ý“žóÛœ½SŽqWÞÂ›b÷¡4Ÿ…O³­´Òâ´ÊÒµ:ÆTp:kZºjfqIü{œ$´ãS’H‘–_,Ø2þß¥Ê7¬ü—Ùqú°‹\•Ìº{X}Èé
É{¾×÷9aH nmí|N"äÃÑŒ(çº:¯çäÜ}·ìÜOz?Õ…°‡MosëÙpáÓRÄ¬k_ç[²ß‰)ÓmhàÃ«]'nçªMœœyåù–”ÊÓdÎªÕ{ªx0ØoÇ‚ÁúeõFo?”T¬ÒõP9âQŽ«My¦S§YÔãpðÐÍˆ^SV9o•BY¾ÉdH¯V”\|¡ÛMA×…|Êt”¼^*,åBÎ‡#õ;ñ.ôÙ¥[U„þújX‘‹ý3³ ‡SŽŠ`á#Æ8€yŠ(åÄñ8x„1%Áâœî¯ÔE4y^ÁœSÊê`fdÐŽÏ¾’¶Ü|UÑ£snðºsÕyZ–ÉùW©˜¢>£Û¾d=´õ4„ø i”3 {;	"¯=¦°PÑÕø¿*ê‹)jà#ßôÐhøå\_]×íLSÚÃnÙs-ë4ö•ý³W5j®´c<­°t¯{LQY¾T;ŽërÄ„×#¨¤[Ì…‘€"ÀØs vB„B"D”SG@îqx.²çUe=;•Õ.­T–{ºÊ•TYîWVY/àrƒÝUÛ¯¦´Œ3r>#¥5râO¯´¬Çç2JËr'®ÝDÈ‰ð©£F˜
ráÒ€æ@àÄÔw|—î„’ù!$Ð§!\†ùT]Kûåßg™:·¬²8¾oB"”VXoV*—2MftM“§"ÑJgXÝ¾ýøþ»úÂbß½)¥‹|Ãµ
º9nìûÙC«4ÚªLâ×¯Ž¸ÞT¦H£òAîü¥¸NÎUI¬ïÃ©ì4ûp^€{zË ò±ÓEqå¬éf(ðHàáqß¤:Ïp›aº;¥#Pu³ñí¿þí}õÃ_?þmºÎøXÝ/šý´ÞÆyºVÖÍ›÷­­qÍOw&ë
ÏsM³ƒúàäB?ÇHÇ
×gXWE|àC­&caB‹Å†^µ[];H‡F;€ò€|°û¤ƒ6“»ør^ßÅE™.sºº]/éälæ’tÒÕúcE¦_ß×R•ìû‘‡)ò|HYä	LÝ€O€`—òÊ} Cá¸S	ìF Jz®vÀ«*›¦Êà¡*S!„§¯v{À~^6ijá®*Ãã£6{b\ÇóªÌ†•ùÆÊl´à¯2Ó¾	ÕÑj—¬Xz}õvÍ:z4°Š*ûêšlÊ—µ6C‚€ÐØõ"èaÀˆBIñéQŠˆïÊ¯#"&÷xÜGŒ8.‘Ô}r·pF›í¤N‹$Ž]vRµn;%¨Æü…É9ÏàóµPÁcâ¼éxåªQ/³—vTvâö´®ü
åìÍµÖÝ°Çñ”œÜ|ûÄéæý’_jÇþíÚ:Îè—§á\'€¦¡õí;¸˜žÓ?`ÒgÛuÔ%£<§k´‹×ànVË\EƒjkÈh€ØÈ{H7eº¢÷bø%>‹÷ÐD0T¸5è*zôêûBµñs|7
òä6F>Á‚G®ë@ìÁ(òƒ $ž”Ì¾0ßƒŽð\„T®U©y_5é·Õ¤çö‹J“•bPš”jR[™ÇšôÛo_º.uŒ/a^Q—^lçøªK_¼.½È†ÿ™i×•ÝþTÅfÏî>ç€¸:… ÄÇ"p©Ë‘ÏáAêR"‡žTºPYà"Ï0ö}î‹s51êàƒÝÅ’F•þ¬
Â	vW…"ÈÑ,ÒŠ?¶ª3ß¬+%SœbZ½ãÕ÷RbÏâUV§i£ãõFéN•<$òkÕ¼CÀ©S¡¨‘¤‰’zkNs^1‹6‰r8”¢éçM)EcÁR.ñ÷önþÓ§3ä83‘ïgw±|–Jeò?½yÿéÃìV>UÌ7’q¶I
q#Y\÷çM’*m.ò•Z¯<®¼ÃßÍjæ3ZÎ šÝËÉù¦XÜÜìûÚŽ”z\•Ð¥ŠÝ Jò¹¤žT=u1»õg÷ÿö{ý«Jt¢žâûY¼‹6Ì¬z0‰vÙ¿ýþÔ¹e:ƒÄ™I6Å?WÏ¯“ã$.ŸnâòNMÊYýï¿¼ûµwýçû™T(‡c^nòu¿£Î UGU\/Íwý­ZGòžd§À- ²o•ŸoŠïTr1ûMŽ¥ìL›¥ž&Ë4—ýZ)?û2M¹ÔTéfyWu_.€¸ÎN#_¸Ê¢nL/×±êÚ?Ï¤YÏVU6iÉÈŸ‹M¾•†´ÍöoY¹àÔïŠÕZÅ³Ûe¬Àª¡œ.1—#“Ä«æÕVÚÿj°å#TÏ«kI­ì¨Œ;\7¢z/rŽ+];[¥\(ûgF#•€¿}ë·à;5µùÝ¥#üáÃ»ÅlöcC ]+\°Î'rÅÌ"ªÊÓ«KZê‰h•ÔçF~·’¶Ãìã‡þñcÑô^²«zÙ•w´˜I°V2¦ºõ3£KµK57r¼Û¯•Juêþúº—¾”AúÛfSVäÂ1DÝCèt esöOà	"¸[O†¸È÷æÔÁÃÀ3¼Züó»O/÷€âà™'ŸQ¸¾yèÏjÈÂ8§ ÏñÒqÜñ¬•T/¯½5y¥”¹1XtSLL€G8Œ£%!ö= 2ÖÂˆùñ¥©âbá NGžG…ç¹>G‘ÜFb÷Õdy5Y^M–W“å™š,äØd9Fùè_;'jSÖ5YÔ¸v~ ¾õ}fÏÃh±¼g~y£>£eÄCfk´\ð¦Äuó×Ú1éfÍí/°MbfÄ0ê;á)Ë$(ÅPä†~@iÆ8Â¡ÐGD„»Ô’È	!“Ù€…øœ³’¢`Ö¤>ÚÉ_¥h²„>)!_§ü›UO=pÍííGEP_f+*¦£Ì7ïÊÿV¨¬ñr-e¯T–¡P¦Ÿmc:{û÷ºSïT y•$X¶ó}qTµRÞI=öK}-U Í«æ•öRó€®C‘çtöcÛ‹o“õc=U¤·Ê`z ½ƒÓACH
çþÏÅ½§œh|Ã©ºT‰28'Ñ¬/&˜õè9'Kl€Ì·™ªcö„Dà¦»×ÔåZImÅø%\Ünö7«¤_è«ª©gº’°ÓN©5“í¹¥bóœÀcÜ$"DˆP)£‡Pþæ€ˆG!¥sGÌsB× ÂŒùnÄ¢ ÿ\BôWÅöÛáp3žTâœè{ö¶%žÆ«Ë|Ó˜×?µj#Æá­WRm;;ÕöRno÷tÜsËªjž"õk×¹”:ÌDbyý,ü…míoOnâBìF>C" ®y®ÜÐx!Caä"Áù£T„Ìu¸öqˆ¨G¸xè\‚£êaæÕWJYuØÛOÿç_†²*d§ˆ\™â1VþÇ>¼SŠmçQ«TTMÞ6t#õ­ZèzU¿MI´ö…©¬CO’ÿœ‹Z>î-!ö.¡!ä2~­z3ÕŒ1¼ÌýÒò4=èd¥¨üŒ†JKõbX½œ\»Üôöcú\+¥Õ–º¸ôœµU•Nðh N¦ÜoOñ)ï‘´€C[®¸Hç*^1<¼´¼ß¥§SÅqžÎ­×{ôtbÍîèZéÑqZí
¹üþs?†›Hw/û7È‰~‘ÜLŠ€TóU´õ‹Ó <£³ñS‡þþÛÚä‹‰@ v
)Æ!‚€¸F ! aŸW8ð¼ˆ»Øõè¹˜³W“CËäðŽLŽöõ‘ÉT2žÉ!ÍÔu # üüîH¿€äP–;å+ù±Ý•ŒŽÑ²½Ññ"öÊ{ëc¤J‹®õ1Z7æÒÖ‡æ¶ûØ1š ú†‰vÓâ·Ç¦ÊË÷sôÌÝB!=»ÆÔ7p¾½ÆÆà)xöÕÑCx!áŒ‡áÈ!8¢2„NÀ@°¸.ŽÂÀ…Ž@Òà	ÌÏ—‘„<8¾ðQë’NýzåÎ§ëuºY³ÚXQÏ>~üÛ‡¡³ùõÞ¾)ä#ð5'™TZ7i4[þû‡õ‡ÅlöVý[-¬gÍÄNs(øL{kÊªvê¿V÷ärAUÆ¼›
ÍÅ6fMØc“Ú}–¥±ìc?MƒØq(ò¦¤ÍB]Àº©û¢¹¸º'•êî€DÐâIý¸)Ä÷3Eq»XñhMÀëÇ.n²uV™qƒvéçjó=èzg{`¶ä¸n÷x HvVßy³M.—	çö/ÇQtøœÓM6lî'’¸ÜÙ†dv•Sûv¤T…¸çl¨ñp3b=_D·h—>¥v~¸^U¯ë¨é¡ÜpÒÏ_á> Æ®Ï˜ð£0òÝ@þçB
0ó	Ì®Ëa(`Ž<'äŽO|Ä=HÇÇ,„<zÕÐ¯Zihp¨¡QàœÔÐn€É††0€½Ô<±\‡šëëW¹‚ŽŒs¦^EG_úúAWG¿¯Š™²~~›ðç_¯óùÕY,Öe²*
kuï,¼]~tCu€Hx2…à’zÝÆ(\
qì;Q€Y$·é€:À¡Ç±Ü•û,p\Pp.8Oêi¥Â~ùôþç?Ì~Ê¯«øÃsšý‡YƒÙÑÖõ*:º¾ávÕÃ„HH±N•è¼ÒròíÌw¯gHá%@y§·¤Ä;ˆ¹NKêWCá5›WÀNë¡h½oÈ|òù'ëBäú†	év¹iÚTu?¹ZÏ)Æ†åå9êèÛ³œíUç}ºs%·u|þ`àî%‘Õéê³Ès#}þ”••‡h×zîcþþá§_>~|ÿÈ?š‚å YüYƒ‘›ÿÖùà3üüó»Oz|îÝýèfåiÕ¥ÿúF@fHÿ-n¤†)s¹3y!KÔŽËä¹ú˜ÿù×ß¿ûé—OŸE ‡ÿýkØ5@Ã°™µW=EÉ”îy³’ŠzÁß4Òd¡„à´+ŸMÑ{`{*ÈNT@3+(
O>HÙO±+(
¹ºóCÎ8‚HšG a€hÄˆÃ%œ†8bÜ
xÖ
jiV?›Úø¯iÇ“Ðdry´Lêˆsœ¾Ÿ…T…8È‘Yæ4»«"Æåë(åpÕinÒLÔúëÌiI³ºEÂÚ$†q±»4ÂèzÆÓ]?©ÐˆåM”§«*Þ{^çL¨"$¤*Pù+pº‹ËPÚ!-ªøòÙ—MQÎh˜nÊ=+‘¢îË\¾7ªŒ®Ùì´õ²d³Œ×óú‘*»¨”›‘M®¨i[Ël-ªG¸QoV>oÞí£­²¨4êB1£\9S
eS>©JÛ¦È%¯›ºÑëF—ï¦ù"Ê¥ÉÝ”ôð§ø{õâ9|Aà pú¦
V94û¹q°ò±ÀnJŒ5¢:Ú59¯—×þ¡Ï>N?íäÚØ0÷®´]ö†œy#,õCXWÖI©Öªæ%AI]	LòÚ¥šÈa6ÀÈÖl%B‹¾Ì©|»ZäkQê÷¥ú#úé9*G. dW\y¢O¤}à²dìs1vÚÒ£»}ûãŸ‘ã€†«ý\íxk•òM"®rv…IW>_;m¾€òRc‚4DzL§ØÀ®YœS9+¥T	Ášå<¡›5»Ó Tùr
:eðDq†x£[ÿ¨q‚Ù\&ñwÝp—Gä/õ)ò©ãz1Ï‡.8£ˆaIï •CÀ€œ‹=~5»_ÍîK™ÝøØìnæ³yH™y=³›8Žr&vÌnü@#,í´!ú4Ÿ™áÍË_Ûð=áœfxk{,pÜ±)nîÙäfÀ½q®ëZéú¨sý’'Ç&v»f‡[ÛÜŒÚØÉÚ±¼­mo‡S&þ³º ~`û_÷Hýúõä¾…Ë¾µëÍ¨­›ir2]Ù—~Ô±?ãvbJý¾)[
z.£®‡£„	â;$BAàáºÂGsÆ¢À	#ä;B$DÀÞXá¡7ñš%.z‡F·cUˆú£v\Œ(éÕ=:¬yÔ-FÔMŸ[[ë›¢ÛÂs4²{·ù}Û®£
Dõml„åÿº—'°J(Ç/ô÷ýÕÁ=ÅÎFövöxù!Kk[¿¨ŸQÝZD;Q§3¦­YyÎ;Ëÿ
¬{›ƒËóoÌyÆLu£ÂJõ Ö“y`zª Ù33ódè,‚ƒþÚ+ìWŸéiÎ%Ž[NÓ?®£W‚õÊ=Þ6›­êU·í6D“ºÙ€¬Ó¹xÌÒ¼4€î7!š€¾˜2jÕG
%5a©%û×Ÿ”u|®l†eðþÓ©©|lÕkðò6ë×p„c/X -RÂ¡ç4P52Ä‘Ê4!M¥ˆaè
G@„] =¡J}ae2¼Z­_Ýjº®áÊjõ­VâZ­¾gø„Õúê6¶[‰áUß¯k·^ÒWüj·¾Ú­—³[GS¾<»õ™†\çlBËÈOÙójäþ1ÜÃÞ\ÀGk˜òŽºæˆÄCìbßsEt"¹SÀ!tÝÀ€‡–?ð Œ0ö|7ò±ë{8œpíãŸäSÿSsËa0éü„ËíñæàíUµ«ŠD?°™U×æqkÓ\¬ÿ[YÕ¾’­<¨L{u-²ïÕ­•~Oe¼º‘ŒÖi©Úî–+kÊš=7ÛÙÇØwû_;œ.»ùÇ?(¼‚< ¯›¡^]Dßx>Z’]i•¸ÚÞ|«öSêá‘˜Lç8Ä·vßª’sŠ}gø†Óâî/R›Éõ«Çhz»æ‹U1/$ÕÄ~<Îï’bþi³Å«L,¿»}Â«FTÿËàÉS,7<Nß¬bÛ‹ù²XYAó8ŠæÖ?Î)Ï˜]Ë+Û¶„Ú>îã<ÎµÅªˆ5KhFóØx¢5Ø<"ØZpÛF‹í£%r›2Käƒõs>šÎßx%Ò›/™éJ­qÙzi…+¶Ö8AWcD˜Yç_ é›Ü!3[¤Úe¨š¬sº~ZQÛžï¸ÈmÙ¸HÓòÉâGs.ÕMâ7µŠQ·:|w[×\ª!ÿÑ¤Wâ]æ›K±†Wìö!ïv_´Ûeq©ž>Î¤–PK!«þÞ?æ¥8¹–œî AßÝn¥º¤ëò_ârcÏÇöa$Ô¶÷ñÖÔ¢i‘ÛÕšÉçÞ-@=.ÍNwN!ÏŠx}o
cl#·¥¦(eóÉþÛÀÄÚ&­ÄÕF×é¢¤Í¥½Fw¸Â¦±Â®-e¼„U,¼[
]Ó²W™zÖ"YÅÆ}Vhx²fO6Ð•Òeen×®õhb©~a‰ù¤Ý”)K×r™sYí—má[^Z­Í
—/—í5žJ!}9Ì—¡).“r@Å'™â6ÉÒôý‡›|m
ùš‹)	2RLýJÃØ´‡ŒyŽ¯²c&Ôt2ÆÒ•lQäÀj"[ Å£Š )Scdã.¶Xì.ÍVOÊekÌÓ½KnŒ7º^‚,ÎYb:«Yš¤¹*€•º;õ=tZ­>	”Ø´§ÊëÇ…¹räBù³3ÓéÍ¥ß+	+•f’sÚF%ñ”‹1^&…¹PR(s©¤PE^fvíÕH‹Þ`-ú»ÕiŽ¹•@sM)ò<Íãå:5^
â‘%e§â"Ê„°è½¨CŠÍh$Š2ÞR]ïÑ‹„Ó5Mž
mÏå[Ü‰'Óa²‚Ç…Š ¶yÊ\9´¦Ì’nŠBn5ÃdcªÓ–\.ÌøUJ˜¨°ØpIùTûoY¨öÛ–8×
§Ä¨¹p’0‹ÉÕ tÅ-,æÈ¼‡*ãx^ovÌ;ÚËÃ
›Heƒ+6¡mwÔ®³¶±6o8cYœ‰DÞ6-wÐ6M	ÝŠ–ƒ)</‹Ìf©Å[+÷F¼-MŸðKlá}ù’Á{)ã5ß—|ÉÄ:Žcó|
kƒ»§‰ˆyZ°43†®l¤WBy‘Ñ9]eó"­þY¥ët2“B."aÉ†©å£ú×ÔÀhØÔY^Ÿ»L×ñz–EbËB¾¡TÿF”šnTÏ°1]<'Ù0ËÞHé4_§qQ±ªxP©h¬™vËøéØÊx’È¦ híVXi>Y`W4ê†4YÅjc
’¢W
ÐªI%ø¬¬¯i‡+-qöYØ=ãcd	3­EYÄ¦~ª4Û6ã‘1je>dêxC0¹5FÆkvgŒ)Í1k+Ež­-6eÙÚbS–åé£Í¦¸Æš¹X¥[iÞ&²§¦ƒ’GÖ|¾auaŠKKsw_^¬ù–›;™òb»4ß
eçóÉË¬:X´À¥ëmle³·Xuc¸(¥•gˆ/˜XWÕCŒý¢·r6J˜ùt+"ó÷XÜÙ^(”y÷ªŠ+•Þ’¦„q“}´Õ	A±JÓÒTŠiBóøwãŸQ&l6C•RÉ©%T˜ž
Ù0ö¿mÌOZŠ¼4Wv~~;?½úÄ\ËOkjõ¢Uð…\Eæ[I±ª ¹’dÆÊ¥´2ÿJ+Ûª,W‰-.W
n£®˜‚âÜ³Ù2å^}É–6ÃÙÀÍ…è–›­äf}êaåúwÚ{¸* ©¹”£bÓlxX?¯ý­šm,TÚ2‘›¯NuãÍ\b=P)yxª{ºyg™ñÆün­¤Ö}Jèš[êÆ¶ÅÀH”¹(—¨¼d¼0}ñ5N¨Ëy·¥…’{ÈåTä»Û6æbá	[ìÙž¨\Ö†˜ßå Qùq¬?qÖSâ¤vh‹Àœ#¬;€êæ´Hã(…>Ð6bà,£ˆ³\Ì"Î²1Šh¹\ázü1ë)WØûÜç«B]¡Õoò¸ƒT·>,0ºvÿ#÷˜Æe³j«Ä£PíŒ@?§ÉaÆiùÆÚªs#4WÊuÊ·PN3å¬ìBýÌbíõs½&ê;çZ´RêiÑUWÄµ(.xkc¢Ç°Êê«GÝÜâÖ¦ß]ÝÖFlãB…²ÿ®Y—§s×Z‡\>kÕŠþP·ÄºF€	òIäZJ6âw-Âß¡Vi£¶»ZÄ‰´É9£UÂ ½ÂIrATö^˜$Ü_>Õk%Qøk©¤”£ÙÝÕ"VWE7eœšÓ_]5Ô¢Û†:dûyZäÍÅ:-Úîm:-@sŸM“6v´fõR-4ƒ7¾äZ’|)Ò•EùãÖ…ÊÖ …*´ÈîôÞqÌQI—Z”k¹L”vÖ_)Õ!=ÞÍ%*-âým -ò""ƒ>7×v´XoK-Ù»k£Ë:{‡õýJëU×·
´(Å’²§œ>h„:‡×¢Û‚ë“—r¼¦7êK©Ý—G-£¨>‰Ö¡Ü?ëïÎœµˆïÒ2­² =éºnl’7[k=euòªCØ;kÕ±:ÀÔ¢­cµ(‹­–ìluhVfú+wYÊw¢Åxï¯Ô"¿ÓãZzéSÖ[«º€õ8dÍU&-RUV¬L7L¯/ê(K‹P¾:-ºM¨¹ajW´hËU¢.úêÐÊý#OÖIZ%6Òž@ÍQNµË½.§ijî½ôŸ÷^zm`cš›´UÄËµžm©é:tGZD;.l-þ"ÔšaµïØ ­Z‡yíàÕ¢T^ÝaBiÔÒx¥·C~œÑÎÙ²ó±,¤öª’Íu“·Ø§•ýþ¨„Ã§F8ŒUŒý€ÅxÓz;V”Ñ8O5ÚdùSVV„`”e—ôöï~úåãÇ÷Ÿü3VëT¯^nµ¥Úò5Ý*B<J˜7µ–F(¿Já]Ý"Àüþs?†›H·LîK«Ô[ï"GÇºÊ]¨Ò¦&¹~ˆÍXúÔQdP|Á¨RCV.—+•v¨mF#3PŸXnøõ‰+­ªK¾áb«I«n¦CIs…’ÒäcU¸å´(+t¬ÂÛ_~úôéýOŸÉoµ­Ó¬4gsg5(3º^ê¾®Š¶ÒPº€çX‹[nÁæ:éòE»%ý~ƒ2Æ¹Ky{ðûèÈ4»Ñ6ŠDË„ØÓÙEÉÙ_þ¢±:„·?þúë}÷,>÷hÀª·öë¯Ò&Lb%Q›"Ôœó­ù/·Í¢rÞj{~á’Ió¼Þ}Þ×¡ÖxË*#ºÆ|ß‘ÝÊQùõç÷ð³JŽŽÆ^ò) §PÁ(ê÷±§PÎú[‡î>áª‰È­
ï¦"ÇA>a‚Rá
×GÈWÉ¥1Ž+ŠB@)q<&€ëq\êR. ^S‘¿øTäð(9j‰Txïºý
ïžâ¡n*rÇ\lPÇg8·qIŸošŒ<ódäÈsw*÷¿ûANÄÎõšÁdä:U8Fx©Ûv`s˜žü,ë<åat&a¹-ï}æòiêæ“xìs™ObÓÞœÊD]¢œÈcò´ùÎ'2©ŸOäQg@ŸÈ¤J…>‘‡Ê‰>•…Êv;…Ê’>‘ÅÃô±x´^+ûê“¨Lê“¨”êSL‘ÒëË“8ÔÙÖ§²È&³8¼M})vÍµêK±kïW_Š_sÑÚ’YŽö+7R]Ä¾p§³¶_¹‘k<Èé<î“9}~Û&³ûD§R¼_œ¥;•åqÒ÷é'?g•~"•~"‹ÃÄð†ìÚx¤]†x[|“*ÞÞæŒŸ‚Wc¶ø&‹üx^iË ˜Ô|1±õÃLóSøtRÎOaÓæžŸÂcŸ„~
—éCÛ µæ³ÏO?E/Q½-Ÿ]ÆúIrûÅZç°·Dï“ÙÛ2Øeµ·eP¥··çkklðÞ=AÂîSàÛ2èæÂ·æ±KŠ?C›ßšÅ>M¾-‹n¾|k»ÄùÖvô§pP©ômñuN}[t7¹¾5]–}{Uº}Kø>ï¾-ƒ6¿-¾ÉÄo¯Rò[£w¹ùm9TIúmÁM¶þ	ð	"µ›¿2‹)3¨“Ñß–Å>µ¿=‡	&E7Ù¿-‹]ÖKÝôÿÖ,ºu l™´lñ½Ê ÖLŠªD€-¼_+À–K[4Àß«`Ë£-#`Ÿ‚.¦ìÊ›
–è}©{x*wƒ¶
=~ÊüÝÕ%°Ä7
lÑýJÓ¹Ø‹÷}í‚)Ú"SyL|ŽÉ¾_ßÀ–ÉA¡ƒ°™Ô™~é[>û¶¶Ó\qUUKlSÁÝ«“`Í¤[0a“Iz%ly¬&‰Þ3E.Æ­©®0ßq™…iüúõ.Å+™Ìë¸ÃeùY¯Ø³5&ñ;[œa2×ã*¶,U¹[l¯nÃ$&mK&M%[ô®¤ƒ5ƒª¶ƒ-ú ÈÃ6Ù4+w_öaƒr*ƒE1qÚÒöø	è¦X„%z_5Â’Á¾|„-ƒN	[UA	kp9¼žfñ4µ&ìÑöéûê“Ø[ÿýz¶L¢)³}…
[u©
[ô®f…5ƒºxÅøD×å¾œ…=ƒN]‹‰Lö.,u+]Ø²àÓÜòMí[t4a>´Õ0&À'ôü >ÆeØL;äk*fØ¢ÛÒ¶ø}kbö<„õIqS^Ã]×Ù°E×7ìÑSNè&¬©O&Ø%¢–:Õ9l9”é°e3Í8/§™·û
4¥<l9Ô5=lÑUqKðQ•i|&(‡]Ý[|· ÈÜ"þ«Çà¨$ÈfÓÇäwûÕBl™4eC,á»ú!öø]!kÛi"·[ZÄ–EScd|‚ÒÚW™Ä`_~ÄžMS‡Ä–Á‰‚$–¬šÊ$¶èªD‰%¸[«Ä”Å™¢%¶l¦Dàž,c2‘‡Eî‰Â&“8LŽÉ+ur)v–1ycÅO,Ù]3ÊL·Ê$¶»º(†\úR&€÷rý’)Öà¶vŠƒoWD…àëQÑƒd šŠ	~WVÅT§6 Õ…V mÅÈqéCp[ƒÅ¶/ÆbìVe1„öË³˜€»uZôqG[L g*·˜°¨K¸ šZ.ˆ*'®>}·º‹ê Ì‹òT½x¯ð‹!°WFÛ-c€:¨	c€¬‹Ã ª*1úôýr1¸}ÝÐAä¾’Œ¨.)£9¨-c äfšîdµxaFg8v…h GiL°¥¡8ìÖ¨1@õŠÕàzUkpûò5& ÒÌ9,hc‚ìT¶Ñ‡Õ%nôéwµn ‡Eoô¡Mõ@¯Ž)ÎUÚ(¼~…Sœ1êÑÌ¾ÝÏÑ‡t«èè£ºåtP'êê ûv€k³!iKîè#kï˜ wEx@m5H]–Ç °¯Ï£êê1€í*ö`z¥{pw†í´Å|L!õ^¿Î_l€ÝåÀ6ÀtëüÀš‚?ˆ:ç¶ -¤éÔ2 í‹éƒNW2ÀïÊécŽë™brèU2ÄîJ	àV†à°¸1²©2d€«Ó“ºu‡Lu"}Ô®‘¤)I¤ƒxöµ‰4»-R¤IÞV+Ò$ß—-ÒôŠÙ`ú…´4õŒ4›ké’ï+é#ò¶Ô‘îäÝ—&2´ÅôpÇt[ìT6Ò…$Gº˜ƒZGº°ƒ¢GÚBce4ê'Ë €3CqŠ³ØÖ-•d´	³Ù¤O2ÙBTâØhk¬[ º–c\¯ä’&h_{I°2Ñ5å•àÂÕÃuË'™#v—´»ºKš-u0iBú•˜L@ý’LºÈnñ$ˆñëê^Òl¯-®dFmÜ±^¥%HrTœIG[£I·Í}&c€…±Ô­“dŽèTqš€]æènM'-p·´“æ“ž¨ñ¤‹l‹=éÓŸ­ú¤Éb_jÉ”þ ”5šè.‰sU¡´À¿kÊ„*QàH¦\­XTqT(*&>¹n™¨KùU(ú~ˆ üãyØõ<7r"×yˆºÀ1u8BðÀ…ØqÅ„2Qê¯\%ªq-‰šý°¿bYÌ6j±ÍJU6JiÙ££ëOgtý$?^/o¢<]É±¦I`1«Ü³ýJ•éLùæÕµ—èûªrÑ—MQÎh˜nÊ=+‘È!¨ú2—/Oö/f³weÑË¼~¤ª“
¢ÚäŠš¶…«Öâ¡z„õzU¬ªÓF3ÆI\Æò+õ¡˜QÎ%»*>ëi>µåž¹äuÓ–Å:[7K¿¨*`©"Yó•üL}.Yî^e†µ°ˆÓ«……	Üv•ôkaA€j•tjaùÈ'ZX¾¸À®VqPûI­qƒ*X/¹ôÕá£O-{E.[õê^Åè‡xº\N@?ÎiQLÂËöçtOä±ªoiOæRŠÇA­¬Å¤¡“¸†ß„e,w‘a2ç÷Ó^ñŽQ’³Ë0’Ú`°ˆ­>§ßÊÉ¯|Ç«Zþ2œÊU}T~nÛÒø«ÑÐ„J(O„%t³¦I¼”ZŠÐKÛ4cÓÔ7íÍŸ¹½¡_Þ‰47]¶-Øæ©Ûe"éÎ”&Q“•Ç…öŠì"«h3˜ycYfÓV–Y4UÕ³hª%X@ë›t‚nu…n½ŠÍß¡æúÚ¿rdÚ¢‡mÂ¼¡Lšœ÷mâChºÊÒ"V¹
Í€õ2S$–¸ÁúÞ'€uØŽyƒË&qª9Êø=(Põ¡eƒ5Ö¼Ù„&Ù®|Ü£ªkæ!M¨Ê÷c¶[Ô¸`Ôx‘,.öYh±±ŠTQ×Ðä¦ÊxqK|s#ÆØVG°Ä}®2_[ƒ«:)¶è6ƒ¸-~™¤¦Zw–;>óÉÕ‚¥þ_K+ÍT"î$TšŠ,¦ÆgÏa³¢rjÍ ÉMh/D›Ë…Ú\Öî±i({thf\ˆß'àË:Û‹-¾Ib¯r„Ø¢'Í·ÇÜØ‚X&µ_Uš†–HÞ Ù&4Ë5T*Mm÷Ê[EOÛh÷=²ùÈ˜AeÇÚÕ*-hlnS4ö¤µ¸LŠ;j¾}’09H6ÏÙ¤G2†U) U=;d]êÏkgè/“Mfe€Ôù×,vB]¨íÌU	iì,Å$Þ
›=øj“”qÄ-j…,ävJ‹£Óå’n›lÄÆÈ:¥“1Ì
d×ÅU§£1V9-¡ÜJ†ØlS–2G©l5†¨¾¼TŒÌTh.Á”;Óeº	ß•2ƒåôÁzêH¬õûo²±œ-
jÕ\½Z«‚|k•)À”Á&´j·qGÛ¹€J–ÕY,^ìk<ÆZˆ¼ºÄ`Ólƒ5oVŠ!ËqRõ&ëÔ†ÀÊ}m.‡jœ¹$ªq6I•ÛÎÎËn½Îw¬W»ŠY²ôJv¡¦2q—RÇ¼Ù^a¨…‹º¾„báz«€vfë6M6+ãöª“&óUSãÌWM³™w5²¤ºÇ[-îÑv7ù¸5FžH §×O×f‹3:»<„;ö3|™÷×êÜQ‰ùBÖZ”º dÉE-v`uæ/£C¼=Ì°‹5È¬“½ÛA×Í,VÔYÅ¼xV1µ_]é8áqˆ¦ Z¼;D:ÄZ<{ñEzäû¼Wzô•ŸA›Z©?}âæXVÐè:ú½“L‡º3õ-îQÚn”Õ(ñ2Nux.}–òï:ï™c)iµÈ2±^ê1¬ÃnÆéŽöÞ:¨*xF‹0¬îÔê‘ö#ÕÆj#NÙ½óN²™qÚ¸“hœº4ªº£>u7$nœ¸Ù ë<a7jnœ˜iÉ¸ZãkQÊ¡²lG›5«.‹ë€ú!{zä"t·'Ð&®6ÚÔ±6ùõ(•e§C¹·—µ¨·šäö!þÅ¥Ãû¥Õ4¯j4?ÝOoßWÁ.ÃTšD?}ÜÖA7Ã„¿0d¡Ë6ÕÀ•x,uÈ¶-Ò*êBã!:„·?¼ÿøÃgg½õ3…“3l‰óGpûT
ÃtM2ƒ‘eÐ	Æ¡ìÆà„ÞPDÜ®Û^8º†å%?J“¤ã=ŠéÆ +»z±ëÑ¯4fôA¸³32È9ôFèk“mì¹váÏ#d¨çaÊ~°³m?Æy°^Ê]›#¯¢Cxûá—·€|{Ýh}Jí—½ók½>ím÷“Ï@³¥:ÿ”^K-ím÷–êíƒæ¼Øz„MŸF¤à‰p]MÀ&/ª-.@,ñÔS£¿ÑLc…þ±Ò·L*R²FIÌJè©óYáß:åSAýÖ{M]-|öÑ'Ÿ	¾v ­ã1Ï‹hèÓ0 žp¨G#Ï	!@sy€	œpÊ=æÊ7ðBâ`à¼Ð¾Ð¾„ Zx@ë“ Y%´*X–ø½ Z Ÿ¸~'€Ö#D7&ÐÖ«ü5„Ö.„Ö…p§êþûñ.vØë6„V')Ãuˆs6uPíEµÑµbÖ†Ù^Œ]|y1nuàíEØ©ÜË0jCq/Ê­ŠÉ½,ÇÄ¼^™N”îeY6áº—eZÅí^–å.€÷²lU$¯-ÇÝ±ø$ÍùøDýp×‰ÌšSwK.ûã÷Ivçð¹L™~D°-¸<Å”Š”m°°-¼¹Ü0>¡ñnñ€â)lêûôS8äÖÑéXã)LÚK]–<zÑÇ¶<öQ&–ö7ÿ¦2@¶öÊ–ÚPå	pû×Ø^žÌdBGšpfkx/®y—‰Ò¦élÍ£òlÏä öÙžQmÍ¡†žÊ ‹žÎ¥ŠžÌ¦”žÌ¨Š˜žÌ¥
žÌeC=™Ó>˜z:«6ªz2§&¼z2Ÿ:Îz:›	ªã òz:›:û|ªXìéŒÊ:({2£&:{:Ÿ*L{2›ËÌä*pÛšË>‚{"‹)ÆO7¦{":¸ÛšÉþvýtmÐ¬5§]Ü·=‡: Ü	nÍª		·Ç7±áöê q{ü.Z|"‹:lÜšÉÄ=Û.Üß‰(¿ É«¤cnÉdlnÉ u>…E'üÜ’M7ÝžEnŸ†žØûn¬º=“}Ðº=N<£-“&Œ}\ÅÃÙÂÛ-9í"ÜmñM¨û4¸µgün‰ïGÁÛ3™>¡öqñ¶Ú y[|í$êFÊÛrjCæíñ½ØyK6ý úÉLìßL?¬~2“	éÚO`ÑDÜÛrØ…ÞOb0AzvƒñmYt¢ò-Yœ
ÏŸÊjºêì_€‡µdï…ð[òèÅòOá1åP¨Ý?…ÃÄÝEïonÿ'1˜°f»© &±P9,<NvBt³˜²8“.À–í‰“	&ò°»ÓpœR`Û;‡I,áU(¿%vÑoïå°ÆÛöþ #‡¯Ÿš€àk¥&Ðyò³9
LÀU²€]ÝÓÌ¬b´mÔƒ„†À6³!¬‰æ5Eís"÷!¾úÀ^ö}X'‚>È®êlÁ€>±h¤›*AUàÐ·ÉL UôžàT:}x›WÁ ±K°`‚±­	ÜI¹ êä^0 u“0À¬j÷Ò2èÃìJw5èƒìê×©èÛÉôÑv…˜Ò;5C/áƒ!ÌF-ìR@˜@šðO}H/)„lkŠ{¹i"4GÅ”z—8BÑÍ ¡YT Þå”Ð¥ßšt¦›ÑÁ±K7a¬³NL‚ûzð}
Ím’Qè.¿NV
]H7=….æ O….ì a…¾Lée®01Ÿ×‡),ôÁÝ\¦B-š+“µu˜ˆB·ûq-X›ÇB³w»„ºôÌš~ŠP?×….²“ËÂÑf¿ÐvS[X@ŒçÄAª+ÐQ~&»ÔV £|ZLÒfh6ÝÉŸa„hih‚NdÔ0EîSk"Ûš0C‹ãëT‘?RãÜ,s.¶"ùú¥ì©çx†^@9÷"Ÿ‘Èõ@ |æQˆ=Ä|ÏW_‡ºŒ‡< "ŽKBîIr†ƒÑLUI>ÔO:û›zÈ4Sç.Uª„ŸîÄlp¬ŽEÔ©3Tæ	•ù¢Žá¯›¹‘oiÆëÆUÞ	ÚM¾QeµØg›{–™%ÝÒìöK ßu°:‰%ïK¼mb‰j`_ë³_(¹„ë@ûúì'^ÌµaêV.ž%Z
)%iãeÇGÐ?fÑiË}°rÆíYÊåY7žþË3®û—çÛqH_yY^¡…ÖW}Îå•f_ëñ¾<çÆ)~yÆüòŒwNhÖöÈ7›"Æë7²+óº/–§ÜWHÀo“Wß(_¾Y"|³î¹Ùs¿ÌœàFy¾µ3lwÖPíŽÚÂuˆG¤&u×Õf
éèV3à^GX
=K‘f-°t€n`Ç|å-ë×HI(<J	†ðCó vX@|ù òC,X \Š=Î piä @æºÈu}8ž>òuÓzM«çè¦C”›Vâ8G›VnZ	i§Í6­¯9§m[ƒ]‚á—µm½äÂ×mëë¶õuÛúºm}Ý¶^ërö¤«Öv7§-oB[^Âµ¹TkËó{÷Òî¥ù-Å×-òëù„\¦)ÿúç¹QˆÃC`¹_âÄ‘»3„Á>£Á8d®'"`?Œ ü;!Ôqˆ¸G·ÆÍãÍâòn¦žq¦®XV›×z#$·ª¯užI]…º¬Â~Ðßª÷Õú5ª7ÀÔºê2÷®ÂB±É²4—½ß½ë4º©Þôo*»ðTÀFÅ›Ëž‹™Ú7ïþyºÜ·"8év€®ã {~ J3 âv ßØâ¸\âŸô üøÑ§z öœöÎ‚¹ËáL¢s´Ì4C%ÏÔMÈ„~…óÓ,bö4ÏÑ$üšnã9]Ç«êƒI¬¤•8	¿K;¯*H2ªâ˜)3‹
·ÊÄò»[õw££ÿe°¢œŸÛ*/ÿåÂK3¼ÔÐ]ªcØŠÏƒWV@¹˜-gD&ôÁºÊçëp^ÜMÀ?LÁo,¼,,‘Â~ £„2Kè
S[$-ó´¸·†oìgG–Ç[iY‚	ssÇÂþ…å±[ŒR¤‡¶ïKÚ-âÑû@·öHeNCÏYšçµ™mÈ¨
¿{®Lõhû¢d¨0[ÛáŠ­5î/Ý ?lG‘p»æ‹š-l‡÷qþóÇ¹=8ŒËµ[7ËViS«ôª–bf9¥ìa¦+x‡ŒíKígi¨ìÈõÓ¸Lzq;.Ëœ^¢3“¦Ø¬§Í…riª«Ü­™ÜÌ)M?ª:C"«Š6˜ñ©3­¾˜Z—5î·MÌî•³À
maS¶	øö»ÛâIŽøª¦ù—ˆ&…]/N0+ó-¯(1Ýbí‘¦ÊµEZR‡ð9â¶ŠºbŸz›–©DšÈ6MZf™Êl†¢”ÕùÙaYÁ–ñzYêN†}­-ú ÒØ™£Tî:S”*™c©
Ô˜W¹Õ(f¢N)mÛB˜r–¹ò¸°<ÕÕ#{´Tqq‰îv¤WSK¥_Š#]W¿ÂÙCºÖ]ùGØ$^ç
¬ÀüI~Ï<ìNWÖôpQœ×‡6àx¸NÔi¼§9Mï'xuæte¼Pö¡ˆ×Ìv^T`»‰aµÒ7eZµ[%)´ÅææS±Lë³,»fk¬y³
g! ¶±hWöÖÊîWOê$ÎYå#h›B³¢¥ùeÙFZÏ©ñ
e‹Æ8£6³¼[—ÍY• 4„ÆL["¼\Eæóšo
°ÎÜêQóÕ 5Ö†g«]ð¥ù(Šê˜øwuUÅQ‚X×ÉxŒGÓàk¸r(›¿…2·FÊfE)œþ)ãe5y$Ìôh>ˆKº2ÖùK~ŸÅá&²h®…ÚÉìÜb]-ÓT×Ð…À{ÝCÃug+œböd3YbŽ,a6{—Ê	¥î‚ünº‚¬õJ\¬óŽ*?¼ùU(s¡’È_W² ª€CLë±yé-Öi#;W_,&Ú*Ã6 ±ìÔ‘0/Dõ~ÓxâTŒ–0óyS×óRkæ‚p5–P;?²ÕÜkÁ–P;sJÝ¬YVw[T¢Psp!„i“ifl¿¥E-®‚¿E‰úÿÙ{·-Çq#mô>ŸB«/fÊ«[Jœ	ºÚ½þvuO¹fÊvíi÷¬š}“$ÁLvJ¢š¤òà«ýûõö“l€Ô‰Jp UÊ²¼lwµ
ñAÄ@„[_ö]Í¦{°²ÿ"fE~[H5DÓl6—.ŸR#g?+óòÎíüÝéËû½š(#¹±f]ö²öýÍEqoýB;'c{9ù`/s+¦bü\f¶¦Jq[»ª¬§±¸]Tž±Ëf³±½9XLE’SÃeMÓŠjö²DÎ¬Ùy#é&‡ˆkˆ¸Éq×¹“˜ˆ±c‡õÁ‹Ü¤píQ¢8ÈéUöBŽ£ŒœÄb9®{Ô¢N‚ö:PU“Ôq ZÔ~Û^Úk%-èú··˜6•Ò­ån„GªE]]¿}-ê*èº‡kQWÁÐ½ÏÐM°œ¸vYNå\·ÛÒm÷¸C:v©E]]×¬uôéÔUÒ•{hQWAêÞ'uÌÆQìØ§uüÝ;v©$Ýä2}ÈÖ_éÚgèÖ±u¼»ªN%é$7™ÁÒ±ËÉ¹î~ZÔQç>‰pt]ZÔUÐu%hQGA÷©uYQäÑÜY‰Nfî“ä8G.DZWqp§uœÅ×·©E]çî}ÎÝœ`JðweÀ¹Œß“‰«áPÈÄÉ Trö~P-W=ý>—ÆAÉmÉBÆ2³>¢kdKi¦Kg^R:Ò’Rßð7¾O±)˜Õ5ßÝ:Õ²n’ú–k¯ZÖM²,bÇï¬¬òBÜ:¬¡æG×G­t}À®ZeY¹ÅCØIt>ž¥Ò!jf%ê´µ, ;yY»ÜEtæê®U’Žr®¾%é&WèdgQ'Á§ßyX9³wÖÛµý±|]²’“™mwy'nÕ—©ÇØ (Ñ™|ÌfÖc½ËçrÐƒådVYw¦e\nW”ù|¦ó»45’Î=— k ¾ù0·ÄZ¨@‡Þä“ýFWÎÆYåv@[‹*¥é2©KQûN+Y_¨Z©_ìOi+}áHW!´•ÓeZí'¥zÌ›à*dÿÝF´”õx cTŸ_;È9Œ±³¤,ªì6·~åõÝƒHŒÅÔ:š¼Ím9dS~ØþjT-—Ž3'¹:‹˜­QÐHfOÖÞÆšÑX¿Á·ÿj&ã dßÓ£(ìCŸÅƒKOuŽûçZ:÷èB`jQ1MìÍ¯EÑiëÍá™L,&eê—yj·üóü4ˆÔ`l­ »JÙdh|	³hq½-h•èh[Ô"uÏ¶¨å½ñâ	x¶e-Rßl‹Ú$°Ù–5O`³”´Î Ó4Ï ³”³MÈÐ–³MÈ°OúÍƒ(”ê¬þ¤/Ìw…¥÷†Î–•ÆÌÌ j˜âVïšÒØÌ›:¦²hÚä}Ø–tü~Ýó>¼@°Êû°-mž÷á¥¤iÞ‡y‘i2®M ‰:‹¦Nb+rç"S+Ù¶i ëZÊ<'fKÆt·]­.$XK.©­mlµ©ª´Ÿü:ÿzé°¢´ iBÁ¶”ý»®¥;3õl‰™¦<l‹¹ufß×Êä&iÎÛ×‚.»Žv˜	-’/.9õYéGgî¿§úŒúÞæ¨Ì¶ÓÜ¬ÝìN7¬óÝµ®µ¬3™<7­íÔ¢4k_76kZ)¬ó¯µ~ÈLšÕ©ŒÖyLZ&2šMëFz£æÕ$5j÷`ÒJ¦©šI³¦Ë{ù&µmhÖÎ¨ïæ:ºIËÕ­n£Æy>1m‡î¡IÓå½k£¶‹ËÖFm×W¥š¯îGµ.óÉÌh³Òæ¨I;íg7j§ï,›4\šFmkµdÔrn¸ù®h¥qc}9Õ¤qûN©‰„¾¨iØ®Þ‡MÚÎ¦F¯µ¾£hZç…|¾ÙÔ¨u53l6S]^Â¬ui„º:£5k¬fZêSU£†ùÜlœ‹#OÃ¶ÒhoQú_ýÁ¨es‚fÒT1P“fµaMÆÙtþd4£ËC ã¶úäÇ¸q“gÍ¸y}VcÔzf4àæøÂ°¥>A0njH®V“Æ—ÿpË‰ÔUrÓüÍ!ÃbÕhEÐk^>³Y]h3±´{Q<5èÿøøã;]ìyÿµª±#­¡'K·<TP·”O•	`ª–“¦Ë#|¸¡xˆÆÅ±JáÑ?‘Áøjö«¦<ú­aÕ#dÐÞ ]MAGäÈBŠã›Ò`ëvoÞ¿{wƒWÓÉýMCu•6“²êMõ7“–‹Òo&M›Y5m½³>¢™¹eÞ|YÎ¬µ®t]è*S…¹ÌfåÄãHZ4Þ.”h@BêÅ¼ýf=E6bÓ¸´h½Y4ÑD…›7n—H<Ü<“1ƒœcƒ¦Û`ÄŽlëvo>~øó~úùýô<)¡‰ÁÚ´yó^¡¾»9R™ñeóƒ©¹tó^pŸc±²?Ž5ÌooMZ5õZ*Y½G™©†o>ýí=d7Ç&kVÝ©/)1ÄFKãw±SèØš¨­“­Ú½ùôëÇ_~>ú°…x\*XxD-ùÄP×Vƒv×¦€RÄ@'.þÑvUû­Á´ÑðÍ»ÏŸüó‡8:“°Whtð lK¬~ãŸ?+­~ðl^I5¾ÊcÜÄÂ¼”µAs¬¥öŽ›4«ãÒMÖ&ÁˆnµæùÇùŸÇÚÕ8yóþo¿ÞüåÇ_þrd–ãöÖˆøÿn“íAgÕÑÑ&µûVî÷ùíøy¨½Z+ßûÇìò½ãíªØ[½Õ}åêÓÑÁÝ#Ø>Á0ì½ÕSoÅfŸ8»a¤ßr³R²PÄi$¹1˜§¡äA"iE1e`’#‚)Hd’BEÁ‚“(¡ºî¥Üì¥Üì×Un6xQn–/öòír³R‚Y»Ü,¤ˆ‚o–›…Œ¨ÿ,1¼ÊÍ6{ÂYœEç[p–BHVjùû—Ž¤ƒ*ã@ÁY“*óG•g;ÁÒá6Ý %¸ ­¢´`êáN€Zej]Wõj½ vÆw¸¬`Û2ê¹óéí|¨Ä°ŽçôBhêÞúBèk_ŒU%Ü€;šû"èš«ž²ƒ×SÇÞ{bèú¹¾Ë8`_œyË­UZ·+¬Þw}ãÀCWÝõ…¨o/x‚èkþuAÞn`6+ó:"®KôzÔ75¼ô•/ ]½× .ãëR×óõBhöõBZUøõDYTŒõEñÈFñ_O¤º
°'†.ìÑ”¿õEÙ*Ü\7ïýEÉà®ðº™¼"ÂžHºš°#Äþ²ÂŽ€ëël^ ·¶|`|hý‘ÒÃ]£Ö5ˆ=Au1bogªñâšZG8ú¾š/Ôââš'Œ¾ÁæÚB,ïw/k;Š¯Š»Ê/«»Ê/Ê»Š/ŠóxˆëÛñÎâ:GpS
ÙaYÙU~YÙ]¾©4æ*¿U.Ùf£n²+ÆfeŒU%e_¦r®Ê²¶²F]dÙ`]mÙ%ë¥©¿ì±,Äìƒ±ªÈì².Íìâ¹Òü¶ VÕfoÂcµoÖqöñÈ²²³»¼ŸôªÖ³#ÄfÑgGˆVõggŒUhW„U=hW€¹O÷«
Ñ®ò¥¢=!êÚž®MñhWéEÝWñUÅVg v¹,0í*¾®4íˆ°(9í*ý¢ö´7îgê…³,Kí!îa4¬U{ 8D'¬Åý–å¢†µ³ô“ÇÔ7U­]…7Ë[ûbxj§vÁkW]ùÚCV—Àv¿óÞYWE±]å—Õ±Ýå½Œ×ÍzÙ®ÞÊuYAÛQ|YJÛCÜc#Ü(®íŠPWÙvn—Ûöé ÂK',*q»J7%¹¥[µ¹QZEº]Qæ~ÁUÙnwùúÝÞ îÛëVEo__O"»UìÛ¥®úí(^—ÿv•]Ö÷‘w_ËÊàâî/j…»K{|[ÕÃ]QVeÄ½ <¦p£°¸#Äï~;A»Ô¸;ˆÇÅÇÅ×UÈ]êrä®ÂëºäÎËåÎ ‹Jå®òË’å®ò­Úå® EÌ½ <–eÍ½ <¸÷¸Ÿüªô¹„'À²º„€.î!ýàû MÁtwùuåt??ŽÐ*ªî‡á¡ 6Ê¬{ x¯†Äs5,*°»¬K±ûax#xïNË*í^ÞÚjY·Ý!ì`¡'Â²¤»„/€÷Nw[zntë²ï~ÞÞßÇ²"¼'B'Ãð†ðftËªñ^´ƒQP?„uAy??„U‰y/O€Í¢ó0«êó~~«zô^~ ë
õ>È{_Ö¬÷AX¯÷ÃðFð^YËºö^ÞKkYéÞ¡ƒâý>D‘Gs’1™u0£¾êe
éj÷¾ 1üfñÄ{Uho„y£˜{"øy€ÂïÊÊ÷fk¿'oó°‰Ÿ»@xœ*h€êé÷¹´¿œÓ†(d,3÷ãÿ¤®JìŽPú³½Ò—ì•:W’ýÈM„¬PÓàûÄ¢)hÜˆ'DYÄ¾Ÿ{Yå…¸õYÍÞÓQÿè‰ñ€½5j“É°?Œùx–JŸÆ†ß.ØdXô‘Åcæ}¢ |¼½l
Â Ðñ/þ~O¿û2àræáG¯õ‘G,RRr2s¾ûTÞ‰[µSè´˜Î¦«:î º6†=¨kfx	{]‘ÔéwuÁxœ©õ	ÀX"ù,ªE¹yéû\Ë{l×«Êw^sÐÔÀózKaT²°¿·½–V¿xD’TúÎ².$à K¯Å¼H”<™!åà‘§ÅÝ_ NàÜ”êô ð~-ï1~YTÙmî¾†šÒ9b,¦î·³–åw¼ä}.^7ezÆ™@u×Ùô[×þqFÐÌÑ}%Ì¸ÇGX3Fi¾EáÐÚ”GòÖ	Ã<ž}à?/¢¸¬çä,/£‰‡¾*å
Ð”²–žv”v7Ðóü4©<ÕðœSƒ®°;ÏjŒlŸ¢…ì’¦¨à–:tÃ%¿å6†köŸ8.É)·A\’@nc8epÜqÈà¸„pÏsØFpÈs¸pNêÕpNêµæAŠQTÒ©‘:Õ{U÷CÍJ{*l€9Lq«wziï˜ú¦Lk#8%Û†ðÝF:H"öÊ-‰Ø6ŒC±—ÖIÄtÁyeEÕ%êD›Zõ‰õk]ËÞy	Wö”£-m}c-îÖ¿%l­<ÖÒ«ûîËEîNæû†xUz¼»ºz_é³h5ÂŸ¸Çâ©Å}»·ö?mÉ[ç_oË{vïÑûÊ“é	á`y­¼¶Lí~²”ÞS%ëçÿkW•¬5¨Ì:hŠ½ôÿF—§Q,¼³~šjš‹ò&3»¬ðZ×œ·˜Ý	{‰:Ï£X]‚ÆN¤N¸÷d/Sû0ŠÒRpYÉÚF¦RŒ¥j*[ˆ=dVí—5‘-$êL]V"‰Œæv¯g#!—\5Ií¬šË4UoÄRf™ŠÉJJ{,ì†Õd²Yeâ±“Êó‰µ º‡V2Ë9vB‹¼8vBëd6vr«6vbe>™ÙmÔ‹BÅæ‹R¢:™Œ•ÄÒŠ´Z$¶™Ûj©•…`/¥³}XIµssX‰ê¬¶µÂ²šMíVN¬Á¾›:Eþó­È¦vbÕÌ¶ýDLuEK±Ò®ŸUô‰¥”9±Ña"vùÜòY¡¶BÒnU|MýÁNdUóØ\FYVíkÿgÓù“Ý›Y0ÛéSe{©&Å³½\}ük'6³{¨æ´ÓVdQ-ÚRÆ–T¯­¤š“?C‘‰2E²iªÚš4Z™|µ¥7³Y]ÞW×2ZŠ7eCÛ?kÀv1ëÝ£ÿ?¾Ó5±¹áÓ~†°)¡mØ<zBëÞ¦"ò©²ê"U+¶.LŽ%ÄC¼*mo(ýÙ<Cm4©7ýÖ˜g#d#h#P›'#bºVãø¦´y÷ïÞÝà0”KîoK`ˆFÀf¦o³ÜZDýÏZ¦y7Öbu=d]è8/Ê!´ÖLÈAN—Ìv‹,teëÂA8M+©©t‘šEó*»ÌèbwtÌÒÔE¬š9I•.beâ"¥¨“ƒT­ýmå23È9¶‘YXŸ#fºÇm|üðçÿüôóû6Bf²U²hü^õòîÐˆÊÍð‚xOÂÊr5–Èoo­šñŒ¬”œ²í «7{Ó	Û”øô·÷Ýê‡Yu§>ÜÄjt›"Ö¯¨¶C­º[|úõã/?›>Y!—äšjÙ"ŸØ’Ú6´!=ÚÎSÚŽØhÿ¥Õf.P%ñ·ßÚ|r›ï>þñÏnàûÈŽB{éz9}þ¬ø1nNŒç¥¹¦fó~×¶¬±ˆ>³j_ß³’¨-½5l¾¶ÚŒ'êŸÆ‹jœ¼yÿ·_oþòã/9ÆªÛû:¶ñªm/Õ@Š@¥úÞÑ~jÇ™Üüvü<ÔàÕÜÇì:Ã#ØÀVou_¹úrõý)‹lköÞêéûë4/&¢úáêûký•§þ¸øÓ zžéW0›|S·ÕãøaÏáäð¶ºÿþºn¡›Š"¾û!cœ}]ÿQÿ¶ˆõ4=²ü>¾“ñ}9Ÿ,†QÞ	DÙ7ƒÙým–üé›ÿýù—o~ <a4	¢TbÄ"Â#  @J&	!M™ Š¤aÈe”ÄŒôûëe'uêŸQ<ÿðþ—Å3¾ivO:P¹øó÷×ËÆZPäq‘Í´CwC8+bÐLW6½ÔAûƒ´P÷˜÷ß4ÛOjFn1»+y:X—ƒÇ»,¾»Êg²•ÔméÚ+puµîã½ßàÓbxu‡±6ê‚ÒðQŽÇÃr>Ó©|UgËÉÓ+ýdƒúHªzˆi2˜O¨ö°ÁÇ÷Ÿ>Ô
•S¥¯®þq§€—kâÍð‡¶D„î@Ã¨_t¤Ô@©°Ù¼Zô=úþzs¶ôì- ‹Þ©Gÿû/ƒ?Ï³qR>—ƒWo£ùmùÔHª¼åÅí¿ÝVoWKµ¨ÅçÅø˜ôÇëëÕØFú»TýÜWùL‹]­›éæ:ào ýüjµQÎ8!ŠØ~3ˆt§ÍO„a.¾šïuæÕåÃÿéB®®zBm J%0È7½Ê³Õ" #ÙÚ‚Ô/BQšôOß|jPÊëS8l>‡aý!Œô4Òß_ƒ·üVWûÃâý _Øú¶ùÀ—?®›=Èi’/§·i´øiÝæ¶PÌá‡_§Úï›¥™LšvÍÏëfõ4ÝåeõƒŽF p4ÑÎÎõûi¤Ö­Ö’M‡úÓÞ-¤õèÚ9§7xkÙ5Þb‰Ê",ÄT­Jõ:ŠêOßP¸Ú§úErJÈjç{é:;¸Ã®‚ýÕ¹×—¦¨žÝræR«YˆDR+-Þg4Éf?uT	FÝE•XÜ§è£óçYœEWšàøûbÅöt<jQï&oëÇ4u_u±Aÿ;ÜˆæÞC§¡¯ÐÎ[w|ÍÛny»,:GšWf/e¦6VSÌºm³Š6¬ü~Ø?9Îú8÷ž=z?õn¾Vô¥(¸ÚVné—„CHÄ1J€IDdÈÃ0ÅIÀ¹Æ@Â˜DªáÚ:EILb
â@šøBÂ/$\“pò‚„s°›„«•µEÂ1d|“„ã d]‘ðæ:kŽÎ˜†3È:¤á–áãÛ|Ü)~üó.Ã½Ï˜w¾Þóïµ†Þñð7úÙ…¬É»¹À×àx.¿AùOpÒít²»¶LÌZfPÛ>p9ì÷¼àÅ™Ð¿‚á°:Ä8½ó^q¶ Â„£$¥q ¨ŒBÆˆ%XÙQÆ&²#" Â€#€#žF4‘Gí†½¬ð~ì•EñeÍˆ±_Qw=´¡þÃ£âorièaLójÎÇãgÕx2SÔ6ËÁcVÝÕÃY2û Åì9‘Ì>Ä£³G„Ø öˆRŠ€=·_-t/{m£5~½,ÏTøR}„˜‡Ç=‘›y>DŒ~[îiè.9+²õBˆ¥y!(Òy™ì„bÕmœ$Bç"²“L­íŸÔÞ¥oðJ™&í]¢®M_èúº±~3ÖBêÅXZ–/ƒz0ÁVôt8Ò,ÿó‘½-ãæ†ÐÑv‹nÒt±¦7uÆ_Í\÷!ùjÒLŽfš	Á#oaÝîÍ»Ÿ>üýò£åË‘#slq„2É“ùXöuàÒ«îø|ÆöÌe3üöpã&Þôp›Í8ÎNŽNö…R‚ž¬§ Ç(«#æS±Ó\juØ¯¹tŠƒB’@JšDILBs‘„0‰H
(Õ?£€DÊJâ”Â0‰” ”#˜²øb0½ƒ)|a0­Ž3¶&ˆƒmƒ‰¡€´¦ î&ëÓ/j2uŸÔ›ÉÄÉjïÀd²<Ùe;yB´Œ(ÇÃš…5å(½iV9BlØWŽKCËVÜÜâêùŒR»ncÎÒÚ*s<øûæY÷Gd+óÌâF¡m&‡µ9as{i¹õy¡ú&œéÜÚF³Xu†·…×¶]Ÿçi[Ö^ÿwrO{­Öù$Îáf¦ÕF—K'½‰çeGö~içK™“Õýp®w Ë4Ÿc¡Ì1W;áå@™!)C&"ˆL@#‰H9€a¥$U¶"¢2!Æ±H A±ŒMb,¢|!ùA=•Ž9SöŒ~6möéëÞYõ|À`üÇ}«ZOse¬éxµzVj{¨Äêíé€¹èy°sòU>y–(Ss¬¬¼<½RfZ%'
e<®$+ï¥”÷ƒ\Í›¦ãÊ@”õ0)ôn^Ž¿dÓ¸ÈUózµ]º=,à±Ž®›èDr žmöæj¤j¶=`Y=JÕK“j,¯6º*¿«õpô 'r’Ú4ª)ªçDÛ¬
d+ QÖÁƒ½©#ES[G;­Òaµ4 Ø°JÕO:´‹îÐÃÊ°iY¥P¸ Ç`@Ñ1›t×+.þ}Ý±yÕ=ÞzT_[3ÀŠ*šš»^À!nºwS2‡7¡Àºñ¢sL'ŠF:It‹^­îÑ!%ªh¡ð€öÔ_ªÚ\~¸ž—Åu”MwìJÇêFÎÚöa#·¸0
×,ÀN¹Æ‰b&@§‚D!‹)I%KRŒ#†!Ž%pò€ †x*¤¤ "@)iï»“úã@©J<xÌ’[YÔlþçoï‹*ûõëbw¬–xÈä£,6q4îhð¡Òmô®T)]¬uwœ«­Ê¦²¼ª5žþ-«O»Ru$ÒøYé¨çi|WäÓ|^»nÇRÍÛD™aZ@#µBÕTR&ý)²Rk²ì>ÝNó‰¬}¬ŸŠ\a&Q“°×çJB@û(B8„»}®‚pËçŠPHÐ¦Ï|<He±B‡õb¢×qãÓUéGm=©·ïÒÀ6²|1ã‡”Ëž/ÿ žÉ±ºî".SÏØöÙ¨»‚».õ>;Nô>œÝª=«Ð«ÿÀ(¶Lƒh‡¾Ì=w¸Õ—¿Ý˜ŒM®@ÆÅó¬éõø%È×tYr:¯ÆM:¾nOùg·CYuâ÷®n2êõis‘ñ_zÔIkDÙ$yÁ‡Û5yTú"Œû™bwtÌÔßáAÈ ±RéJ%sa!ÇM("JÒ0(•N‡IÄŒ#”â¡<%“H.„ìË2²MÈì$dD™¶`‹aFX‹QƒCð]„ì+ö0ô@ÉfÜ'%;âGð¤dÞ9{uÜÌ4ï9_p[ð7ã¹k"÷¯{ƒnƒõõ|Ú×â}]fk1Ã¯ã\‹=žU:>¤¯ttñÕNJ}Û¨Þûˆ§ä€  æKã4ˆI’&$Å8¡1æaÇ¤0„1‰C	D(1TäFûB1õiX™Åb¬ÏÄŠA]/&±ŽiŒ
ÕêÈaZM,ëƒ§ál,*=¡Š"æãû¬a—õ¡šf‚í~®Vý”£ÁßÓTºXñÊA)ëÃ°†§–ß–•ó¬:¤R_Ío )‚H‹|2('ú¤+ŸÊaž¦õ`JÍZWÐ§cWNáËx1ÌÀæ‚²›bCY‹ƒB„, ›§^p„C¶\gx(.–ç|·à/Í9êÏÓµgMuLÛõÇzùe²ì•”n?¹/'ÅœÛs/‘q¦½;Çn´ÍÃ’NÐLÜv¨Zª‡Ö§õ&—M4±y‚ÐÔ¥SíníA—5ù-ïÌùq‡„ZlÜÞ~ÿóŽøŽÈvüÈ®©æ°ázhØÄQ•«÷z@JÍ':Ô¿zï|Eè=ðîÃÝýí•¦Ðõ›ÆuG^ÜÏZäeVÉcž¬ºñ¼(Fx¬åF=’#-—eHŽ4[W9Ò03AË¦²P#4ŸÚ×’âÈŠ…fkn…gà¸þ\HŠÊ`ˆ–žxü|V4KóiÕ|¯£Ô šÏ¼ž3ñ°÷x—ÎäFÚV•„ƒ÷Æ^6?x%¸wG»H+Ô¹_ÞþFÝÞ8Êc‰á³4=ôÕãQ~T¯ÕSqdû F
ÃÃôC¼«¨“¡Ôf…,GŸ«Ý08æÏÈ'ržFƒtã‡À Ô`Ÿ-dr'ª¡¢¢ú®Û!t hÞž|¯,ñ›Üu÷ãà—¯{Gv™Á®ßç²xf“aÑ»",ë0B†¡eWRžQ=ÎGH^?’‰@!P–¼dG4)K”½Ÿð$b¡ŒƒPÈ09LˆcB…%,	 ºü¯ÁàG[?
Ãp·ÁÏ ƒ´1‡J¬eðcŽ9'ÿ8vò6ùÝ.[öaò³`ºÿõ˜üGŽ³<M~‹CMkÞÂ5PìâØå`äëò˜ûl»Œ¥ÖþS‘s,\ºð!·Þp&˜ÊôçU0ÁÚ½Ðóa²Õ!òÒó`Ø~Ëa*µé‹øjÎ†Ozô$O}Ô»í¶8Ë»_›sÂä\úâ£xÝ>
í8©b˜È9þ	)M‚òX$‘¾¢$`)¥”@ÎÒ
J)#õO™$0Fœ‚1Á"	ã‰pŸâ'ý8ùL…‹K°‹@Õo÷;'vçiÒw_ÇK³²¾¢ÛXsØJ-Je?ËÁTçKJô-ÜÁc‘Õþ‹ÍK´M'V»%Ñ³·Çhð!<çóÁl,¦WU>Hšáï@ÐÒßÕ·o³¤ö½Ôæ¼îmQ<cñ*‡I—W‹§9g6ŽN€J@—×hEÈr
õÐÍÙAv¼nÆzN¾pŒÂÆ¢|¥Á	A@‘mÀ¬Ú<›éïÖÃÐf÷á
jÃkH÷=FÀF`Ê¯s:Ä[ø<ºÃ¬î¿íp>ÍêÔ]Óª{l‡ðð-•ºÄð¨÷¦n­”‘|’ñõÒw>œ=Wwùô°Ógëkñqý4¦‚3óälx’Ð#þ£ã]Ûx‘:ô{6n££ákb„é™b†ÛO‹Qß6Á.F€æa1Fp6Á3f€–6F ¯!„¦·Ø˜þÂ¿ú¨›}‡œV—þctšç4ÑèfÎ¨2"IêÛ?8¸UÃzvÍš®IÀðØ³ïf«FÍ÷gØxÅ[í‰£‰Dý-šZLær¥ö–˜ç¨ßÑÌ¥¶µ‚;w¬ÕÖ±2fÕ´(´ê€Gí¶&È“¼/ÚIâ} Ž'ŒŒc
J£2M$AÄ RŠ9¢B²XŠˆ#BL¢”.âdß¥ñ‹íüühÄ8èB¤ÚoûÑp)hûÑ€úÉÙöBÜ=içóu&õ×éIë4
èâI»xÒv÷}ñ¤ý+{Ò¬ã´\jvQ]¶¾µ~À¬¼mVb–n7ã 1ÿ›eà™µ#Î*HÍÒ#÷ºÃÏNNvÊØßKèÚ!7à%âíÌ#Þ.þÁ‹ðKú;,Kÿ»	kÏÒñF$N(0)SÂOÃ8HqD¢4Å(aÊ9M’ NS)ãRr„!
( Gbîd1PO6×¾™Æäê1Làís ž…ƒŽ™:èB Üª‡y¨¯ƒµnå…B‚êOl.­‹—ÎßK	Q/ÔÒM×~}øÕj`Oçš»§ÅÃÖï*ƒÚ*ðyø”M¾@Ôr(Ha$£ 
bÅ1`i¬vRH%'	ÄjÓQŠS˜¤êNBÓ0"{oWþð×A9ŸÍò¢2Ú5›“ñrÝzû$7F(äíú<¾Y4cÎÒå¶çêKÇ59Ëxmï/o¿‹Ž·ÉMhÏxÞ/²QövvÆdkÔcôUìŽYlÍ9å’?¬±N!À¤LDÄ’AÈ ‹x4Hc‘ÆÁ„áˆ&"À"<å8L8BRÙ2 Â‹ÎÒ:+4æö0Ämfƒ:CçZgqDˆ§Îº¤ÝðÐZœÛ'?­Özeôþ°ÖêÙiïâG?©CÜÍWmé9>Ë„×›÷TOn«Diµ„2¥áâ8DÊ8N"„©Ä	$u2,b	°2Ðâ’‘0˜Æ$Ø[<v:›Wƒ‰¬îòÄ,*nKóíðx©=jšˆq>•JolÂ¯¢ãÊ»l6“É•ÐÒEïê|tã¶ßkÿÏ0¶“OŒY+õ4C¡‘ÇkóæôÅœëÊëeéôZŸsl¼ã¾ÚÀ}á~=–âÅì;Î½9’U|­øÍõS6Í*ýÿj×%×Š§Ç2ÉÆc1Ò_Æ‹3¥…ºJ²â›CO”š¤‡O«a›
Ýjår×šù$6)N¢„¤!VÊ‚¢¥`ˆ(LÆ)‰äa¥Œˆ2¨B$Â$`‚S’€„“‹n6ÕÍqÐ8_† ¨•xR /Ý|1[}´3þÖÎ_…E|1q¿‰k›òU¨vìfjãBºDn³–™:—P°1™À8`‰þI£D„4¡Å(å0æ…	@ê}+ž1Ä±$Iª¤.I§$¾ºÚ*³|™øLHGˆ0Âmf|R?AÎ8ØI:H¨ïµµ3>ÁÐ SÒ
„!œa“zTx¸XÈCö:ÊÔ»²‹íõeDÑKv!’G¡û°M“[÷€²Ü»ÁìS½¸[4ßu#:Ý´ ºY»åÂûÌ9½|‹F’Euÿbw^ÒyàÔQ«&HpÉÁùj•aíÑ£à•ÙÜ}Kìàb½¼z-¯ÌV=öÉ§ê1OÀ£[F…¦'†^¸—Ú›´Ó«31ihVMKÍîÓ³Ù¼yâÉ`f.õ»\ýÀ¿•jOªÇb¶h/¹„|ÝN¹„öÞ4:"¤ÈF5£À`PEeð¹,÷ÿ(žÇj¯ÆãLýÙ6ŽÂ#£h£<ÛJ V|c¥N‡!oÇsýt¯6ãÉ$Ÿ ·Û¾ùŸ µØÑÛgf3ƒƒÚºç
nÇ¯°lv\CÂúÒ¡çÑŒNu™%Yõ¼Hº~89ÑYék$<bÕ¼Ìá¾‹q†Š‚, é(!=€ªTâ­œ[ØÆ Ñê%’Ñ‘+WÍôëU¤,Ìý“]¯ÙfØË—×–Þº—¹~SÏÉ‘»[c1ŸÆwGm§cÇ[%ãºqÆ™ž®y¹ãb«ßÒ‡!xÊp*E,£4¤ÄÉ©àB×{çaCF#–ðð€‘”AzqÇ}]î¸ð…;n¹l»ãXH [÷Ò¥!Ü`U?qšœn{©¾ÀùŸ­CÎ5§{‡ƒ_¿CîÈ±ž¯CÎ"ôÔN Ú+pv¾ºÍ)öóÕArðÕù"z”£3››3ñÕ]ÊÑQ9:³•kãóë/³Ï/ MN –;°·ZvkaOÕïÖ.Ã£¯ÍØex~™’.Ù‹»/ù‹Î<Ñ¶{Ñ°Ç¥Ñ®µõÐvxî&NžGÃÙá‚ìr<k¤åx–¾HC±-G£“ÐÒ;i˜"Ël®úsRZTr¼ø*ÏÔW¹aaœ‡¯r³t¤›¯Ò§¤—¿’(â$L0@	‹BLtî”TrÀb!)Œ`&ÈÕu®û$Å ƒˆ†)~]9ì[NÂ	í¯–	íî	í¯ÖïµÎ´|´³ðKn&È0@Û/©VA@±.øº¾XI€0È³œ“K° ÛU@³¼C¿±rßR—›íoj’ò}•Ï¬k'‹ÚwKY84ßä0q•Ï&ë¥Õ­¯Ô¼@¥v;­¾Ö#FàF€µOµ[¼¥íxÉ]»ÆÕW):ÅÔùD;ìgZ·ªtŽÝË;[ækµ=Uù‚Þ™/A¡‡Y…~qœ_<Z²—Xû¯>óåm‚ÝíîD‘Fóþó¥Ù[”¦Q@¤g(â—ÜÊïsäÜ‚ÚØý¬òËûœ+o-wÓnAŸÔìš=Q½õz\­‘Ö›³y2}l“y3[ÿÁ%€áWéù}êÛp5-ísEËMZáÿëÖí­Æïè`j½uª6-»‡S¤¼Êã|\ûxÍ
œ)ãÀ¬ÿ§W6m¿˜/£Æc6l¬H³aËš7¶ÍLÛ5ìÙ°õRÛ|[`„7§š÷–U ƒó›Í“‘í’Vç#¶u/´«ùÈ9ƒœÆy"‡åó$ÊÇY<,nN&JYiçwy¸1Þ*ª±¿ÍpÃ5w¬ý¦×ïXÛ¶ƒ¯Ÿó““D|}vB‚8å1# 2C9¥€C@bÊ8!â@Ó ’0EG€ÊðT©ìq9A9ÓŠÌ#» €¼8A	 ['(ŒCƒ’À»OP.ñÝ6g(ør†òeÎP::¿œ¡\ÎP.g(¯ð¥ë»'—`ý3Ö¿Ä×ŸuÌú‰®k]Bãw	
´Î†.aô§£·jï*Šü,ã½/K—ƒ¥ËÁÒå`ér°t9XúW9Xê°”úå|ék9_ê¢”¤×1S±ˆ£( $")cÊy8 2Ä1Å”„1Ç!•D,Y@R‘¤A—¥$±C)É>‹c˜Û HÐÖµ€6Ol Fy±[Å$/§6Ž§6\¤¶:³y1ùŸjØÖŽ<Ð…W¥Œ³ð©Ú{†\œ5'òºœ{QÞêFN&ˆxŒ\Ó+å†XDF Ã N—QLŠsN(°Òx®i‘]šŠÁ$Â<Â”!€÷eÍ{÷í·YòšÞˆÁû_?,³æÕ¿þÃ~¥WÏÊ`ùiÄ [åë8ˆØÑ ™ÍÁc!feó×htõ—ìön¬þW•
"Ï“æM”"UúSé™H½žò»e2½bùjŸÏt½‡L(‘;Yd•˜ÆòJr4Yø
y§=l¥âÄcQ–ËXL‘š„BÊñ³SLI&jôWjÅÄ÷ú7ÿO.’ï=må,O¡½'Ýôú`U-DZUµxbw*ð€µÃ.

á†'º(1¸¶ª?Œ¦ªÒ×qeÕUq¿|T_Õ×²L¨·ÇÑP;vœCxÆå&MqÍ7ÑEÂ‰AH=Œm=Î_KmñŒ“ÅÑ«Ú¦ô·r`[Æ‡rG[ªÇ‚#f0ÆÉëu»˜ÜfêëêSß”&/vÕîÍûwïnŽ8ÇÖåB{¼,•åæË×âb•>[2Æí±ÄiW¦Îê”n^&&]f·±á¼•Uû­Áäm4|óîóçÿüáŽð‘)Ü-4ânb¡…Xý’?VŸèÁL•û¥F~¨öÎè¼U•YGBDãB2™†0ä1–‰ˆahDY"‚„‹b	I.¥I‡
‰KÅ…Ðÿëzú‚Ð£Ý©h8d+EmzõKàHè¿b_\”žÛ–Äí“Ò›Ô¨u¦ôæ^¦CB¯€ä›GÞm°ýÞrÓnñÿó‹ [S~k¥`ìZu©]|ÒÐ»–Ñ§¸mWœeMæK Þ~ûÄP¬e¨˜Êlðu{‰ÓÅCVY0>Ò¡½ô¦=ã#¬Íš×zhGîÌeydYyIPÁ8œ#"iªÿ`AXŠ#HS)pœ„<… ŠI˜e…±D$McÆmœ•52>Vç§±l²æÎgž¦Yœ‰ñ`7â,ŸÍÇ¢hYNuÝœ}&Í`Û¦Ùo°\-ÍÕåR)ÊL™$ûÍŸ³1GÂms…ËEÑ6G „!À¬mPD¾$ ~	É­N½ˆ›s4D¯ã€Á5'æËGõ¶F À+w²…5¢ÏÃ™ïØá§ˆ3Å]Y#ØÈÞ!ÛmÏÑö¨­³²ÍÊx;tX°°KP3Ü(kc66LG‡òd7tuÇÁÓ¾èäCs»3á zu}dc|Óë‘I_™å^áˆÉTôuøq9p8Ÿ‡Å1Ü®øÁ­ô¼/^Òz«X[GbÏŠ¡€Úö’4&4!˜¤B1D‡0rÄSC’T2 Ã4ÀäBìÏ‘Økª·Eìy¸›ØÀVÂÆEh“Ø«_Fˆý+8h8'jÀ:QÁ§ö&Q¶ÎÔÞê a¯Ðy“ý£u-Èþñ–vdÿèØlÈ¾IK#²Èžì÷{ sÒc‘Óå"øJO7¬&ðtçÿBgïòß´/Žï½Ù½4¤ä!“ØùŒÂ…Ò‡–Wpc$p(c'!C)$ŒS$ÀQY€’˜ªÿI*WÔð¤…1ÚwõáÇV4”~6T±yÒ&ñã~cã}uÿKÝð”˜6:Ä Rü~•åQSÿšï'=¢8Û4ER[WJúêokÙFb4øP²‰&$²lþ}ô¬KåRïª|žVâip·´Sê”ÊÉU7Å •¢š:þéy–)sEGF‰å3éÛ¬™dU^Œ®®vgÂl%¯l=åh ¯6æúòì²ÕÒ¾’Í¦õ³¶–ê?#e©œì>ÝNó‰¬­œOE®7ûòºõ‡mÜ²}ô	¾ûÒ#”p¾•«„oû
Ã 7}6¾¬aó‘á×}´±÷‰}Í Ê0µ·ÚÎ«eçf kxÞaßð’uže¬‹ÏwÄ»üiè†7¨0cæÝWi™WV­å\œä_´JÊÓdŒ^íªÙ5èÏýˆ´“v„ù÷w‰Ñ£§»¥)æÔ±×”€oZ¸·g’Â˜qDh@R$¥àXFq‚LAÌQ
)yª	iÊ$	yÀˆ	K ¼0Îã<Î8éÆ¹ßfœ0ä:­ÆãDaÈ0k%G8@&É6öò¯¯ØçÞ#ç$×vOÄ9;â;àœúÖ×äó¸cØˆ|w[Ï³Ëœû&šýêœ´§>_3>Ûö[Ô×YššžJì#ÂÎÂÌ§gM‹_gP·Òã}LSÑ€dË½ßòê*Ä”Âd"bÄ I˜¤8f”â„„©bÄ)Ã ˆ1H L­æŠLïëþût¨ØÜ0?ê'Ô­4Ý¬¯±¾ °GØr±ºÂú˜uRÌX–e^Ëêy,_rÚBÎÆ"®©¯å˜de=™Ôò5á;F2å@Wó©¯Gþ[#êì¢ÍàÅ6Œ?)ó™‚RÍ5ï-ç·ŠU²5‚~ïŸ.×Ï¨ÑéjŠežÊêHˆH¸MZ	Ø}•„„´DÔ»×+Æ2 M<¤z”ÃfÁ¡]b™®xê/ÏêåL?OÔÎ<Õ/çúã²^T¯·Rw=¼w¸b‘àõH_ Ý³¥D4Ë6cƒ¼`ª‹µ½vcÌ‡½ÓÀ©%§ñ˜šTóí-#ÌÙ$n±ð›ö\åÚ|>Î*uŠYùè³òîbEæ=<xQ˜JÒ4”"F	‰ÄeÄÕ³ D&@bƒ –I$KŠÕÏ”ñ…ûÜ†^tþ¼ˆÀÎ<´;t–p¸åËão…Í†ŒùñvPsÞÙ0#g—^/Ì(@–E{fFG“vø0£Wëá…³q‡l’¦óK£ñ²[¸øûN^XÊa_K‰Ó¥VîÕŸå`Vg–´ˆ1¦%Q*‚88Ñ,.b	J) AÇHb„ˆÒ¢H€@À QA”ÐøBÛ^/mC/ÜYt·;Ký%lÓ6§Áoƒˆ¯®Ø%n¸>@-%¿¶¤j;ÕŸ£èpâZäðièÎä0 YhŸ9ðCÃ[qYçÈÍ²2êòÜCøÌ]b¯,Ø¯g§•ÉLôë®z¥þ'°5gƒ¨„!’`€bÈÒˆE@È$¡a$„”KBaš&  ~çJŠ`01¼ð˜×Ëc^Ü^Ð‡o;yC¶Åc„h›Çãƒ¹¶r?½ÿéu3™Ðñ®'&s4`Ì‹É¼
w“¥9»À0_ÖWKvÞEËOíUzíÞ¡¹xÛœjšëêqÅú›mšeq£7pµŸ}KÿÄ§	#æT‹pjÇ’¨H‘$Ñ0H8K„@DcŽ®@)£Déñ(AÊ1æ±RÙû¨Öû<¿Uüç]^ÈÁê¥¦YÿY?þ^^¥g§¹PÎ³Jç¿ÄD“'ù¤–M¢8Ìx…XßXä·¹šWÙ8«ž—©ó¿4£øÿþŸÿWGÚ+Žë>ÔïY¾n£'óøîJÿß`¢ú-âû›@øf0M^ýjI?4íÒ×¬óúÔ£^ê*S*Y?j¦&á7QŒƒÓ$SÚa.gÌ‹z õ=Zt‘ß^Êä*z$ùãtœ‹Dw£ñÅLfVd:ÃóÖëagU9HäL©`µOf}fù×÷n³ênÔL\ßÖóz½XÊ»Ø„Â_³9õ	d»l"UÃí«¾Ê6ú…«å½—Ñéqõ·2<ø•ŒšÏÎ„äýøËÇÚHëi÷¼–û¦áK !…0´$€zlO­öº}L¦oÔz5ëuTwùÇTdã¹R!±¶Ô²D­™Q±ãðœå“?vßGýÿ‡SÕä~+¤òp&
Õòøà½zé>/o³øÇAy`vBŽW»að›~ú³«wÝý€«þY/f±É–Ãúf^æ`þÆ´	1J³i¢µÅ+h÷„½HþgL‰ÀhYç–onêçoqø-aÄ$BæŒ Pí[JC†©xJ(
0áœ,"‘Æ,Iƒ1ŠD’&± ”Ð”G)‚itaDF´Ó¿E(¦n0"Ê æŒ†»Ïé¤€ ÍˆˆN9N6AŒ’£AVÍ76ÔËðÐgòJ(Ñl3¢LbZd4þ…“Ã¼Ìghµå™íñ«­àÍOÃÍŸ Ð·ô¨ËÞtÊ…“õOútðôO7:r)¡ÓþÐIgx6ñIŸŸøéÈIŸŽœøéèIŸŽº·“ÎepÒ§ã'í-<eoè¤ºU›Ü§ÕæËO¹:ë>OªÕ—=~‰§<¥v¯û<©†_öxò™=©¦_öxò§<©Æ_öxò§<©æ¯{<©ö_öxòy=)¨{<)¨{<)Ð=vÌ6ýú¿%÷´ký¿¿Ó•ø²‡nuûNüþŸ S½ý²‡nµôNüžç¨[¼¿ç'èV»îÄïù	ºÕœ/ñ»Õ“;ñ{ž¡nuàKün5ÞKünõÛü¾µYíÞ>ú]I=X­{û8Í“ô«áz°E÷öq‚ùêYÛõbaîî¥g­×‹¹»—žµ_–âÞ>N0[=kÂì¿Ý}ô¬{¶ñ6b·zÔ‹[½ô¶º6ûéO7nõrª§éM?nöÓŸ†Üêå$³ÖŸ–Üêå$OÓŸ¦Üêå$OÓŸ¶Üì¥?}¹ÕËIæ¬?¹ÙKZs³—þôæF/ýiÎÕe¯:²GÅØ«6ìUö¨÷zUv=j¸^ÕZº¬WÖ£ÖêQUõªŸzTJ=j¢ÕOŸ:§_3­wû¬gÃ¬w‹¬wS¬g¬wã«g««ws«g;«w«gËªg“ªw[ªg#ªgë©g³©{Éá‚¥Ö7+È“\€<”ÄÿÈÈnn0FQ6ÔItK×[Œp„7z]ª,Ã8‰B(LH8 ¡CÆK3*Ã„Qš2ð”pH‰Lã ÓpÏmÅÿ(¤ü—˜NE"Ÿ©	U#”²ÈÒ~Ðý÷[µWÙ±Ä ÝDÌ_"žìªž(ÄC6MÄÃýõ{ýâ¦£¢ðE6t¶ûºeo¥£Â( ­tT˜¬ê:¸ª·ZLCµ*†õz°¸–§ÓQáoêò)–õt–¯&aÁ®‡÷ÎN ¸m™˜&»Ò›ñ¹ó½ãóÝ	¬±Þüq¬Fú§ûé¡t4uÃºÿC­6ØÍø&R$Mó7‡z]5ª»-ÿuô4wK?ÕŽ­?Õì‡kYÅ×õ\\ë÷7J®‚a3Hý‹ÚÚu;ÇM^‰Úet¦K¨	Y¼€Àn§HH†H`–ª7ò ÊYRÓ$…E©ˆÃ$AISÁb)• £0Œ€Äboß÷ûu]·Ù‰òtð‹j­7Á¼ÐW¬Õ~ÑüM]·Ì¢ú6ù»ê¿~øøó@g[ú÷rðk”©WTåórðaZÉñ8»U=>ª¥?×“¬ûø¹ÁÍ§h.•/ª
_½˜¾ô½œZS·…˜Lô]ðñí»Ác‘U
LgP|7ê¡\mèŸ‰P»ðTÕÖ¿¸ ®ËËx^÷0‹J¯ˆæúüâòù8›ÞËD!^‰Á’y±¼†^ïf‹«ïË9¯FXŽ®®>4ú ©î«—ÐJ7*½÷œÏÿ]ßÝ¿WK.ˆ$iO´þq	uULç€…$òAŽó™ê¹×Ž£Ûé¼®\æiõ¨ú¾®ŸâpGºŒšlwG B‚­tÔbÆÐJäˆ ø¸îÌyÒ Vù¨?6zÓ_OþÔ¼š¦~ÈbuöY?äå#{«KH!àvú²Æ.tlÜv(#µªNn·š-„ðHªå­Æoê-å­X_Ëéuc½ß<•©órÍx­S?–wº_¶0È#y«Î4¹ø0‡ZÁ§§l	klËR'<Ñ¹Læ²L†jÂçOG“ho¶[åúÃÇRÏ3“¬Ûëvo>¿ûïÿýôƒ“¦™I)ºØ$é÷dV·:dÒ«fã*©ç‡›M†µUTøØ³n5‡GšOãyQÊÒ`†ùµ·3HšŽ{§Ð±ÑïB.Bø¨ØrÃ1x­UMÖOé|š••æ:Ç>)›ˆH&µ"öó²¨÷+½µ&k¿óïå±¿Vy>.µBGlãtdSË¯Þ…U!©LdÊ(1‚ˆDF,@‚ñ"ä" 8â’b#Î8–”@#†ã0¥«âbUœÞª /¬
w[Œ
À¶UAC·¬
†*7¿¤ØæÙá/vÅ¦]¡¬¸ó°+öä‡ïÈ®0Mµ½×À0ßagt™þbp7$†Í‚2Ïk¿Knm‡˜eÒ_›Öv‰YÇ…ybºªc«týKƒÅ°ýÊr1l?±ú–q‚FÔLnÓJé)ý^kÂtŒ{Í
#é–ua8Þµ™a(Ð¶7zNîƒãÙý¿~ûc6¹U©Ô1SŽGÖ °¤RÂ„3Ó b!”MAã†s]Œ†A˜rH(‡2 ,
Q(@* N¹L÷©¢´ò1/îk+ Vk¶®»ôë§é'ÍmùRlULfojÿ¯Š\çÍ¦Ë<Õ²ÚˆPæBSN#/2µ°×gØƒ†êùjÙ³Î“Úî·m^æ:;îàýßë~êæjÕªf:ý®4cùñÓ=%.ëÄ¿ŠÌ+›BŠ²æõóRÙ,RmØ±d‘Žå“6ú§ôz1Õ¤þ0‹g-ÏƒÝ,B‚X›Ä£p²IáQÈ<~, FV×Yž([
|‰âNŽœ}û9ý;j[¢RâðYôÎc?˜IiJÐš:/gJéÒV çUÅ)‰æG
8½¾rŒe™¬&›³–¼ºzwU£&žõù<Klš½ùõ×?ÝÀ£CxšŒ‘AÝÏU³7êÑ>ÿõ#Òõ‰FØ}CŒÓùT ÜÅNL«Ozð“0•(Pz%B@D„‡2‘ÄÉe’@è,ì %A‚S†qòˆb¬õâ	~òªùI°ÍO`°‡Ÿ€€£-~PLx«`Q …5?±ô/þK3ˆÈY0”#%'½Ê«(8iGU¾ž‚‰-:s®îŸÓ1õÇ¬¸Œmû÷1’[“Ûö[\ÈYšõüJIê=B<¸ypÀ"(ÒlIÌŽ#E A@c(+}ˆŒH8äX ‘D8P8OC(¤HCÆ	§RÅZÅìáHël¨úôóNŽgjô5kYŠ6<ã6’ÿE(ÒÕU0T¿¨Átt²TÓ7bždùµÖù®6gm9^z6ü‹oß¸ xÿÂ|+tj¥n^¹ÀEèx½Èæ;.>‰!ûêD/Öûp7„Ä…‡©‘bM{7©ƒˆ&#;ä#S·Põèœ¹˜¥·ÇÊszñ³òs'Qã¦®/EŽ“T„œIÂÃ4“˜…Œ“âX"…)“8–R.Yœâˆ‹à”¤P$A\ùE‘ïVäúèfK‘¯B­¶9ÐZŠœ„¨­È))/tÛ×íMéC•.‡>ý©ò#®Uþ*ü+®Þ7·Æ—7ÊµÖ?_‹Þ |Ä•
$ã©p¶éÁˆ.>„ÐŽ	 ¦Q3ÉA
Â”0HÃ" A(Ó8Tmá‘$J˜FÚè+ˆ	“€“Þ‹	èwnÌ~úø·o~Ên3¥/¯>fúÇ¿Éª~ÖÇãLLcù‡¦D³ús58{®Ðíæœƒ=iW Û2úY€à&Wà„Ç£º—ŸÚ°ùj†áë°ú‘;Uxù´8-S+¬‡rD§ïÜÉŽ@ZþæÐµƒ¿R[ÇDJ˜ðŠz–‘QxÃ†€êå…Ðk`!_2Ž¤šEuö’Çh^¤a{óà“/áq“:vp·TÐÛ±ˆUðíêcÑ‘Åz•Œ‘]µVD}Cu&‘¶P—ÍÂ[ãLÑ$D8•Š†…’ñ&¥R˜`žJ iPADD1Œ‘)‰1‰RIc$ÂTìL¹P´E;FÑèŠ¶
¼mS´PÑ9Òfh++¡u,81óæ¼ä,¯Àsfëkw}s´ã.gŽf|ûîY³—Üdm_µéÄ!5/˜¹äÅë/ ç<d^Â†w¿öQÂ/0sÆ1»M\xhµí;rY§2Š(E©„Š’0a€U¤aÄeLã8I“„¦A¢“"$æ‚EÇ`_&Ð‹üŠ$Ý)Z4–üðþ'EÆŠj0QÄE‘•ýTp5#­dÇðúMú˜Ýg£Ûi>‘5ñùTäz›*¯kÆu˜…/hÚ“Ú,T§EƒX MÄB²TÌGHš½a½4†äu8©<Î³¶ŸÕû8‹fÍl1Ãeç§zÐÌ?å <œ=Wwù´/Ü¾Çzîzä+þ§ûx7Èú²¹ÊµûÎ—ç­?Ï“þ)Ê|,+“}bûëûøž¾àæÁZOÑ!Ÿ1÷w93Êãˆ†’à$	Ó€ ©DHJ8â)°`0”qª¶x Ï'Iœ€T±#Â!¾0F cFÃaØŽ·e¸Åh81‹¶ÝÖò¯À©s^œÆíØ­7NsÔŸs¦œ¦Çq÷Ìi:ùNNóU»³NxÕëÈM¾nÜQ½{Z.„hEˆ*9™®âÆˆ¨ß*¹¶Ì§±!Ä˜ò4fÉ„Ó(¥,…" X¦4,Š	KEŠ	ÑÙsP’HDqDh=”è“~Y~*2=èÁBY8ß[ÍBÃ–3¦Ã²Û»ÁïsQçšœ-€“°>#û¨“Ÿ}7øó/?}wõK>EV~7øðß>WŸ»åÕøõo>EÄ2ŸÉ¢9l
A”£«îE:‘Åøy×¼dð>›Ì†õ3õzzv«»©G1jt¸Ç­Meuø(-ØLÃÔ	àÁNÆ…@ˆ·C£cc°ð„X@5Hd¹œµa³‡Ø’{½²ó´ÝëK¾Î 5ùZåÊÞ·14aû¡ÝµúÆüêóv¿aìVUM®?ó|šËÙH™gôÉ6çrž¡6®™>ó;X½¤x>{QŸì:‹±Hà(P•RJ)D „„D)¢Ê¤'KtÌŠ>˜@Q˜r:C5—ñ¾¨•w¿~ú¥¥WÞ‰i>ýnðó¬ÔÿøË§EàÈd¦6Ã&r­‹D­´j—é¡ö]õN+ÕÉ î¯œÏj›¾Ne=xTŸÌ Ù&”âkú¿:Úÿyê¤ÐT'‘€ØŽÀåÐVfeN(6¨ÖÒZšä¡“(…Äú£5ý=(¦·sµ0SsÛ|=ÍÇÿ&*jÊøvñÏ›»ñ
ntmAY¾=´Q›a`Ú"¬³QÐÝCRÐáCRHAÒX ’Î†øÎ™^`þˆt€ÑÁ³ÿqPÐì Ç¥kíÿ6ú-Vï WY½dE©³(öxZ‚=d‰»¬ûÓRê*É<æIQ4gYî.éÓ«Ó<Å³¡ãú¯%SK"WIÇ…¯%±£¤ë¶Ï¿´xF]_&uæ:ÔÀu¨ëâ	\Ÿ1pÛ÷” stÛ}”`è(È]ß#w}Üõ=†®CÝ†*Kè&†ÜÄÜ–©’s#NÝe3 7Ú¸pe@™ÞX]%•V6ãŽ›ò8š93ÛÉ-%^“<™A·-h2CØ¯cWi%Ïýä‰Û¦=qU¾³"WÈ2Q—j¡”3'IG=\ÊñìîùF±û#¢zâA Û2«²ÊéÍâ\òmüd'ŸˆìfšÍfùô¦v˜eÓÛ·Él˜”ÌV§ìE²ÖN;‘Êañd97»ql7éÝ(¶¬"•˜ˆ§aþïS™ßJµ{’èf"Šû›,Ë¼±¨è‹;Äšu……;œ/Üá|)¬ÎæKau4_AÉ%–'† +(X7PÅKO âðöNÏ­‡¨õ½”Å¶¤»%êÜ-ÜUT½nQ×3k7dKÔ£[×eÁ<–ÃÎï‡y,îÞ­uë6×ŸîMƒ`IîÚ3¡¥p€%3}€ÀÔÁó!?€G5–Ÿše5Ó›û<÷7ulÂôù-ÔÆÙ":¡¼æß8 7³»¼Ê»„nÞ0koª­É%uÈÇ[1ÆÊúPSiëÂXËsæ./gã!¬gd-úõÍ ŸüT™ÚÎ eõ<ž—7±­¹Ó–¶5O¶¤-5Ð–´×sâ%m¹mI[òŒ-iKMÖ–¶umI{½1æ5kÌkÖ˜×¬ÙÐ[Ò^³Æ½VªíÁâ–´×œs¯9½f-çÅ¤~Û[Bü6¹Ãï³k0üaaí-Ü…t€ÑÁ³¼ëƒº]AàaÏËv`t0§ÖGl»0üÆñ­ñ[ Ø:&bÀÚ'¾àýžªpãäk Gb¼ð\ÓÀKw) ksoÀósx"¾+ÑþØrÀw%ß•H|ñ]HÔ÷-Pëè£m ëˆ m ßI¤¾“È|ç€ù®Dæ»ßI|'‘ûN"÷[H‰—”^Ò^Ö@âe$¾ÚHx)ÔÄw+× ¾#ð›ƒÆé‘ý_€ø-ãÄïk^`xMéƒS9³<!ØcÁ·Ã:xa'†ëZ``0÷é`¡ñ.&5ôŸ?"¹À°=Ú…ý1¤ÿZ/üöÂ%ˆ½_‚tðÉÈ6ts'H›báÇ0– ]Ì,îbf±—“gòÔÉÌjÞ	Šÿ'¨PºXqO~”|…ÒÅjy²áÛÒÉ¼XS‹;ù8–U5¬/}ÉÛD–÷¿ÉêFŸšÇA¡Î °5OØ‡dm’í‚]=#!±Î‚ÎÂ®xg3Î!í
	u†ÔÙ*àv†„;CêlžhgóÔÙç¼3¤î¾–°«;ÛÆCÜRg_KØÙz
;Û}ÃÎVfØÙÊ½WæÝì&ÒedYÞdÓY›UF ¶”ÊÔÖñbj{ò¸´9Ã\ Æ3èMW˜cQÊ¢§5í>ŽIhºéÍîvaÚ&˜<ûŠÛœ°¬ÍÎX«§„ ƒ™ÛD³t¨A³4j¢YŸ×Fë`ul 9æ#:ÚÅ¾½ækÝµÐ¬J‡ÑP÷Ó§sÀtÚé;Q:´‡!Z;¤£u çWh¸Óƒ.ŸƒnŸ´ËýE¡u¸/+´.ßB§Ÿ„F›t§¾°kŒ¡þ¿N‹uþ˜ÃhPÔ4Ûã­Ch:¹Bç{qÍýv´ßþ|þ0Z—»‚}Þ¯ÃhŽíf6žwøhËö±bè¸C¬‰åÁƒ`–õbu9®Òòõ!0Öáì³.gŸuˆÅûø8ìaOž(ŽÜLÒ^AbÚ-ä)+ºóg×¨´{Tµé“^P=9ázë÷üW@‹.Þ~±\¤—
±#­7<'k‚‡®ÀXW
mtyso{¿æ0Ö“§þØDó%âm¬îFæ–Mw?Þ­¯	¸e{™ð ”mPÝ~¨Y‘×N>Ïó”mÀ Ä¿‰Â×µ¼ÕÝwUØÞÊ= ÕÝ7ÕÌü·Ýó±;³Dô>%yè}æ´F¬:^ÃÝ­aå»kÖñZåDê£µÏµxÍûb‘ãºŒÅtªþç³Lþ+zVÆÝy¼°ŽÌu82ïoUƒX‡øï	]Ÿ*ŸÊçG9¿-f¶~ÝQË w³Uœµ?žmå!ÛA+áß¬3p*©oÏþËk‹[çJÚ’GÐò¢Ò–<öë?°?¯lËÛ{÷ÚòÖ+&‹&o³iš×;žhVè-öË|tÿœÇ²oÓ¡ýùJ¶ª…Ã­-yL½ä­‰Ä†°ýóMaŸžíïu.…ÿ¼ÑÏn­¼wX{ðwX“¯ ¶ßÐûø;A:‰¾<li]íB	»@q^ª›]Ì¬u
“AËÞúVçŒÐu 7“¬RH“!´®$ñÁ:]Ã6²>ØàýØX\¾@ðõõóÃÆ¿4*Æoy½€sÜX÷À¹~Å{à¬/œ„³¿=NŸj¹i‚Ýx¡¢‰å™ça@j8–O:UôÛÅ?ožËü„Û ÿ´MøÀ6”h)Xsði]ƒTŒß*zƒ!D73q+Ýúnàå¯ÛÖ˜dÓ|¬Þ›Qã­µ]ŸÛ–yî¶Å--Æâ–iÛò77Ì2=¸Zéå<ÊÊ»¬®å”ú¿Aâ*»Ñ[þŸ> j[ñH¸íLeü¶œÏdÑüzc¿‹o#X'=Èï³æø&Î‹Ù[õoõ¿¨Ö_«í²8†fyõÿ\ï¨–0Ý‡tƒc›ã{&¦¢Ì§Yüöþi8³7£K1)çÓÛ·Ìš‰,%'Má_waë‹åP3&
íì¸vu«¯uzŸ¿ïâa‰ m*ÞR»ª¦™hä™½|>}~+Æãa6æSy“ý6>XëŸe>&…µ»ïIùÓÛ$ç·-á›™í5 Üòcn óâ^W/äÍn:\›ŠÞíbÜ5h!ŸgÅúÜ×Q6½.ï¾Ì
õoðÀ˜®çeq=Î"ù$ãëÙXTºVúpö\ÝåÓbuÕïý½®ãÝy	o5Ö8ŸÜÈ¢•ù½ùÃF¢¬:4ïZ¤xžéªö#h* ÐªÕ>›¨½ÏF(»´~ÿñÃŸßÝ 5iÔLð¶,Å,»¹/"jÓßú%ÚHÝÓz®s-ƒMe#3m?Ñ™]cëY›Uw…‰–†]µD¬;œ—ÑŽ€M‡ÿ4^ÒE5NÞ¼ÿÛ¯7ùñ—¿[Ëíƒd¿Ù˜Ú»Ð÷i6–?ÔÛ‰Þ|ô÷0Œ…B+D%¿¿®ÿv»a¹jy«VÚ,©À°é|–´pÕŸÔÆ%ª®¾¿®O+oÕÏß/þ4¨žgzf“oê¶úIX/ï¡ÚÂ¿¿®Ô+ŠøîµmÝ0òýuý/úWµS•ÊV3Ý»¾ïd|_Î'‹¾•¶G”©ùþ6KþôÍÿþüË7?°Ò$‚„<äqJRe| … ”OdB8‰úg)±dqÌãŒ†€5UËNêÕ?•ùüÃOJ!MÔ+­mËš–ÁúQ¿¿^¶ÒJ«ÔêHµ;(5úþz³©]ÌlñÃ;%ó÷_žgã¤|.ÿ6®ÞFóÛòÿh•–—£¼¸ý·Ûêíê­µø¼ÿpWU³?^_ßf“Ùp¹ÍÌ‹Xª¾Õ6:•Õõ÷×ºn_e9ÐïZi3Ê0ãè›A¤{­Rÿ%€‹É/³ÊÁ¢Ã?}ÃBÕ:›–•b+RK€ÿf ß¯ÒÅõ/² çq3êƒNÿôÍ§ª¼n/šaóö‡õ{5Kf¤WY²\‘«ïlœ©I)åï?}|@ß6_Ñò·u«9MòåÄ6?­ÛÜù|öÃ¯Ór&ã,ÍdÒ´k~^7«ççNÑ½ž‡ &Qþ4Z¿™FjÝj-Ù¼
õ§Íï¤õ¸eëgm ÖÍ×wj+”Å°Sõª™/*õ¹0 &]=ÍŸ¾QŸZ)úï_2ƒ´BÏ~g”¢ëÇX^r6¯IíŸåöÖ”© ç)jCŠc	S p"EÊÒH}‚Ç&Äaˆ©dALhš†QÀR$bL°Ú”B–²}S‹SjÕP<ïß‘þq—•ËX}»ñx®þv°ä»ÁTÆRÑõN«|PÌ§g¿{‘íÝºs÷Rú0ÐÚ½0A\ÿ´Ú¼ÔÜ3ß»ô²jÍzQóÖÏkëRoÐyëÒ“ßÇÞ¥qëÍ£NÍ­-; ë´&sã$Î§ivkb¤¶L¬$;S
Xš^ÐÈæ°²KÁƒ½“¬½sÕt
ÖÌiDÃ •œ„Jdèºä1<KX3…\)1±”#±S”Äeò¢œŽ+'fJ­!„‘¶r¤hS9ü”Ó…YÛª' ÎW=uì<æ¦:o=Õ·ï¯WYÏž%o5œg§· J%Bñò$
Tª‰ó$ÄÊpR:J™rà(õ+±Hh‚”æâ€„C‘š(©y†:ÑS8ßï²øn p%Ôž~õþÿõíà1KneU.ÿr"ž‘ÌK™Ô~¢FÙ%™ç·å@Vñ+Ñi{.¨·ÐÒiC¨ÿZ§!Œ ã–:mž]l.w¥Æ '^JMÍ_zMA÷ky©o´võŸ³R;)*ªûÕÉM#²"7·7JÕvØ<~ë%ìi\H©ƒ	x›ÜŸ "£GR­ofÙS4OM²Ü´¥úŸiÓ<úMÆ•iëÊê	w{Nccëó;µ÷ä†¬n[¯2´B¦Í7ÎNûr''¦j§ð($a¤iˆ@ÂBK‰Ã˜À„À4IyÂD¬hZ £$ ò4a R)â@$,Ié…¬uNÖc€¡"b-²d“¬A°­b›¬]|–t÷Ó½ÑµÞ<Kºö*œ'ðÑlò6Ó€ªë%˜j‹Ò™Jmr;Ó0ª-’g.¶ÍöL%7hŸ©È&ÿ3•Ù"‚¦b•Ût8£&P¬ÅMCÅ^ÒGÉMéœÖ{<Û9{gãùm6ýLPB}LYD’4¢PñÎ‡ˆRÀ#¬x§úS.B‘¡â H@€’	 ÜwvõþÃ_?ôS3ó€¯Ù\rÈAu'7¤›ÈçÉCS¦ˆ)ÚA`jâQ‹'aˆÌib³Œ.,Ñ‹%¢9³ÄæôAä®#ÁL©žþŒÆy¡j¯žª©]ÏA&¥t‘«“‹º	êùw‘T»ß“\žÌÇN©,w©…ßäB¶É¶ùÛKÿJÙ¶W„Wtù!uŽî‚#ÌFh¡r °£ÈŠ@™bÅ”qdB0¨d!¬C‰R
1ŽÄA”D˜0A@ KÁØŠügõ¬Šr”5=®In–ÒB=Ÿ¾~§XáàýÇ,:Ä–•ˆš“c^*öAÔ Ô2–«­Ž®^t4|¨ÖÞ´š}7(ëÿWL®ìh—Ši?f÷ÙèvšO¤n|ý©ÈõÎ¢˜mýÆwRí0€çd3dYÿÄBŒwSí1Ø>A‡ˆ7ÃÂ 
‰[öA§ð¨Ô°YJ–„z9º]ÿùÏ¿üTÿó¯ú§x-üåDø²oÊíÃ˜Õ(±Í½Ÿþ^4k‡ªU‘N„œäSµUvé„5¾W«óFVùl¨?¡á¼ÊÆëi{ÿó‹#´|<Ö/ø—¡æ½x;ðÐˆÂƒg’·¥¬ªlz[—-Õž<G‰Gˆàbœ‡Ž~ë!gÒÌþ±^;âAÜe‹l.¥.äòI³ê,åôì[ÝO3«ëÉIV[hÛ¼ûéÃßo 7—»‰“DØŽîf&Ô>•gV‚·±6Vm˜m\kã	ÛLö©H¾£Íãh(êñ`KkõÇ·Zâ½Ð{e­Üg•ÕÎÇJb¸œ«õpòKÞ¥Œi9H¥Úµ—€Ø,YÅ+9±z°y’•÷%²QºÇfTëöÖ÷4#›­aÝ^õôù¯‘¶”F¸K³‘‰°±!·˜îC:ŽÂÀÊD/véWõõO¹ZVcYâzÚFNòù´Zòã.zqâ­A†S¡ßÿ¼*ê5“E•ÉÒXÓ€<’OÊlZ£ücÇÂ`¾ Í¼´&ÁÍHŠÔ9y€—¡,P±(J€i¤Ì-€e e’!Žã‰4BQ@‚”THe5S	‘²“Ó(œsì1”üwƒr>›åEÕ%Õf¡Ñ!ÒÊ$Þ”×{¥â‚µ-YÔLòHýq ”2¹Ê«ÆÖ-f:Í{Y›f“y™ÅƒÙX<«‰Ó—¦Äl¦,´…e­kßÖ;WK94µ”CÈ·¥`€(…›vr@ÔLÌdµ/¦r?¦2Áµ=¨Z¼’nÍeèiöœÂüíÇ²ïÛô»˜æ„ƒepØM³[&kôG£>ú¶,ÆYiåp0'\+ÚmNHËh2JÎãìAís³/B«Â@Dp&#*K(˜ä,J)¦‰"OHF2P°8aê”%2VzPžÐt?­úÔ­ÒÚù±ÈªMŠuõWõù\ÿm^d·ÙTŒ‹_§²ªO"tþIÕü!ƒ»’ƒÿÈÆEÑœ*óñÕ«£]40¥]P½,ºuÅÁ0¤›Ñ@SdÈ»fÞÕïbÖWÙ¯¤sÞ5»ð®žx—]<Ð©XÚ*g(²èh-òþÝÿï§ÜÀûWf…³Û¡,Š¼8G*éÂ_3Ásµ6÷nžïôÄ…£e âÖEæNüpâþ"¤‘ig\11"qHyÈ"bL± Iˆb‚È@èD aXF©#,S‰÷‘Æú‘4ëê’:ŠXg#ZFE‚T›ÁÿÍjÎñQ,IPùÝ•(ºðâ@ýóÃ/Ô)ŽËï^ŸKŽQSnH)	ÚÔ À7ãÄ	
ç3ÚX’rØ9D”:Ä¯,_K×±A½Ä¾â2šù­Õ¢©?æâÐ;‡Þ……õçDk>G·ôW^„0 0KD„€b'QHˆS$	D„QžN"ÊžRe@p (y¸‡½«ŸgÐ|å O—Ñ·=ÄõÆûú²Œô=S>ôòˆry_;{:!/Q}ƒ!LàÑËsë5¹ElRa!#rË”ÕCDo@­“d­ßI\àH(ûƒº,/”–©äð!Ïë “iVÕ^¥f Ë¢y¹ÑÐœm‘n`G	ì˜€¹–u‰;šlig©JîGÊn´ Ð7áÔÖRùøA]­ö­€¤z§Jÿ$~"E‹„ˆ”€8à¤Pµ‘I¨ ˆâXÆ)y C˜„„R0	 4 µß³Ú ©„Ã oeÁ$PÐVû@aùBvªý‹+¤3ÅÏÈ9*þÎ#tö+þ¾ÍÚ†
tx™èkuœ¾pÚù–œ?KHäƒÏ CQ"¹ˆCeA†!C"Läê‹1ˆx$„ÀX„4ˆ’PJÄƒ„Ð„	’}á'ý8ùL«çÅ±†ÉQICš¹x™§Ùs›ˆä\iúb\Ý‰Jé@yµxñ‰>Iš¼²cþòNï7 Á€´ó,RÒ* ÆÐ2Rã0¨'êbþ÷r ‰uIµÕ+é˜Ô˜žÆ¿G
Îùbwn¸'±Ê2
& €±1Ä±ZKÚCKdB#òSb!)×Ç	‹/[n§[®q”¢ÚrékË½˜^mº˜Ÿß¦û%N »3þ:ÛtÓyùe"‚8”bB"rŠÃ0bLqÂ4MtÚÇ0‚¥@¦~çŠGÈ MÕÎcÀ÷ì¹ÿñë/?w´¹wNój¹fyÿ]‡
5^.í-«7ãúfñ¹î®!6Ý]À[e5u¡ÍVœ£#-½Ê.Ûk_A>Ìéæ~'ï®ò‹m®­çÙ™•…NÊò*ƒ~ôS[åŠ\µ×;e} ä&÷ÂÕc(gè²z!g$þBÎ0-ËWéhtqå~µÎÉþ‚ˆnsñE(TœàP1¦$&8Á$å"%(0N£”¥A!à	…•µ
D4¢"P8Q þb_Y–÷ÿÑŸAI1kf”M+y[4Ìà1«îM¾‹|:Î¦r¨è“N|Q^iŽ¢„Š:åÁy2§†l•\<DáfAr¨^Oht.¨V×…:õuyŽ;¹Õ+é˜!(ÄK\ô+OZˆêåKÜ™nP'Ü1 «yŒñ¥¿3'0Â:“ÚÿÏÞ».¹m,k¢ÿû)Ž˜YrX¤ê~ñZËqlÙÛÖÞ²­½$ïñ>1 ÐM‹·Mêný˜™?ó.ç×¼ÕÉxØ$ 
­–W¯K«›¬Lê’ùeVVæãŽÊþ#›Ïò¤„­?Úpî.iÔÚ&8k•¥ìq¢½Åõ|5'Ÿ&÷‚¡Œ1”p¢S£YÂ¥R‘ˆ#ªpL´¥RP‹8Ib2Ò‘–ETÚ$I¢HŸB|›Wz¸üoÞ½8	›bÄ¥ÉÏÞŒãÕziï@Yg©]îÒ,|Y`•-ÅÅÔ&c³K}õìçüÏ#TŸÛ< „Íñ%9ðÌ¾dDVñ%åÍðe1ùO³'ŒÉé’ a3-¡qfÁõ	k~æXó‘ƒ½Ž©òµÙ&eÕ†äÒi|ü£åû„ ~|óÓ¯ï~%—ü²aÔKÜ¡öžVøÏuÉ°§ªzNàLWŸ&U56N”¹PQ$„«BJ©»†ˆd2F,²©Ö	J%Jl
í±<R˜ÊÔD'à¢Ãb—ªk7	QÿT¯yÔ{ù¸°â¸Z/DIÔì†!¬Ç'¸×›Kuq)NKIšÃ àøóž`Þãƒy3­òª!úóGMYkÇäŸ heÓè-…b¦ãˆ¦ „GÈe®âL"¤¥‰¬´ÇˆÄDÔ2™Rí.n¤G)2Ø¤'€Öÿƒn¼ÙD•¹l¤»7Å£/6IPŸ½ýù»Ï_‘ÆøJ
v˜gžh-+yæ)æÍÂ‰a>á«¾ðG]îqÂ”†Àñ	_=á«Ç‡¯þTi©>A1©i´¯m×‘´åË×¯~øåÝ%áFU‘êyð <šUgúüòf÷ª5»´‹Fz„¶×‰[^Ù#¡‘DŒj—Ðð^ª ïÁs¹(Èà#”¦„Ú³ÔF‘N"$G’F§î};øñ×\äpí?~yé®Íào¾N#?7 ¦B>53s•Ã½Ny¥Ý@ðãn3\ŒgéÒd«åº8•-ß*Ëuþ–M‘ÄEöÍ×«ÁµÉ“±æWÏÌä"øsw#–æÆ="wÓÆ«ÌNÒO„Wï‡ù
9
€@Æ\aÞhT‚ª±8
1R©Ã,ùTër–|‰šÄÎâa¾ ‡¤Õ}ßFü\ð`1ú•7õ„D+Ü:Çé¬¶èÐ	Ip’W“´mxæ
yïì÷ x1s€q’¸¼ã«°ñ€ ¶¯›äôgÚ.ó{ó–åñçæÞ_.Æ·Ñ:mšê«—lc³õjâ² Œh‹–N¾{ýö’^²–ðÜ!g9·|sœÕ‘Ëe–™¬ˆû¢õí>~¢Üea€FS_“Ô°Bæ’L1ÅbdÎ¢i„,JlÄ8å&M"k“T¦‚ÅÊ˜”'F1‚bM—œò4=AO5ä!ÔBž€Lê]wÂ©b´R‡(t¾ ÏnîšzD»L¯Ÿlœñ·ø€€ù»u<ÖZ5÷áÈ#óI•ñG’dytåqÞÍ´C7÷ñó=g»6 
nïº³©¡ÙÄÛaŽ)™DÓØF±ÄX±(aÄðTJMÆ•R$DóØP¥Ñ„¤‘JÍ	ìóÓ·oÜA—\ŸóÃ2øË™ëñÕõÀ|0ã‰‰Æ“ñê´À‡ñr>s)}j`Ñ–cŽŒÞ½|óâ§wïÞð¿¹Ç×ƒüŒn¹Çë‰YNîÙz¼è³}øÅÉ‡”š%€óžÆÄföõÅ`8 -º²ƒÍÃþkm³UèhªËA%˜ŒÌ¥f?ÜL–¯f.>?¶™£Ïn&søa¦sWVÇõÙLò«™.Üz=±Žv½Ì«îän®³•ÅÖ­3ØKóõUÇÖðÂó´èSùI€×àõÄƒµ¶^ì0žådðXÀz $|0Ÿn‚qÈ)]ÆÅªO—O@?Ýá¦{çÄQrs«t°I„	ÝÎ;°ry‘r^îEÊì¶3‚Áxï¾´·ðrÅ½7	ŒûtžŒÓ»çù±\b]q¦â-·š ãÑ@i{­àìH#Àeï÷³[À›«í½[ðëje—Eó¥Ík»2®¦k>ë¢à÷Æi¶Ú¼'3<2]Î§0h¿ýã•›wõvé^Ð-(÷ØÒùmo¨Øâ››ÑFRä¨øÔ)-'RcT)=)ÎçØÃV…ÁŒÒ¢²å>-	å £ÏùÜ6ÝiÈ;œÓ†ÀÂoól1ƒö{ûÅ÷ùILÖ_f½£¯î}2ë¦¦6.pÞ³MwÎ!×Gùn†æ×ì¨óß‡8íÝ¶¬‡	[\Ûô˜´Dð{ƒIÓ³¤œtžÓ¶{ÜŽæ×7?üòöíëKÿíôÐ2ÜŒA;Ûb²6°…h_ùñÒ¶™,×~1ÏÆ·1¥¦M“ÊdÙ¤Ý’*tXO'¨.¦"X»€¿2	ÎÛÿ|ûî‡Ÿ¿¿ûÉì äÉüfè‡³’hó
-Z¶2mî-³£‰¦ó¬"…=(ì‹o^ØUübgÀ¸oK+ßnÿÅéÕ‰–“9¨f€cv”œá	oXhºšvël™ïk|k¾/rý{¢EV°8xH#o™Fë»¦¿–#¾Q´‰—Ä&æÔÆØ
Ž¤ÅIŠ$+“&†¢H"1ŠL„"Å4&œ%sd“Ôž0ñÞÙÛ•«ç¾pP–Ó>¬1ßàí¿ƒ·Ïí·ÙAYgÍ8 ý+˜Uïà=¯Í³ììj<³ý¹šT§K0ølöL—T;Ïó‹·ótuc–öÅ¶×' ¶ HRIQ	js0™©DÇ")¦RU‘¶b“òÅ°>¹]KÃ|Yi«óíŸ_½ûL²U}Mo3"²åáö¶õ õè­å×,Kts¾°·¬?‡Cn·÷œØÊõP¸óâ¥Y\W¶ÉÑè´Á£§j²·È­°ÅãÊ¦¹K±³ºa:œ¤4ÑBZÍX¤ç[L¬Ôº”
‚ˆ„F:e(Câ4B	µš0£â§ÊR?©›­º!‡êFhv\Ý ¬U5§…BDQV7ˆ‰íåºvê¦¹[çŸ^áÐ¶œ½*œ³Þ–î
çs9è¬hž>O+º¨WÆvjæ,x„`›}çU ¨³ÊŠ¥ÑQLÐZsŠËEÊ¹–¤Lë˜R¤±2E	J¤±’a$Mj©Ò©´èÔþãµ*öª¹®^EuDî×¬(4àØU+
	´ÈÅ¦JE0T¾]–—´pçG»mûÙi»SÆ•KzxŸkd%E¨pðÿÜ…þêà?YíuUŒ´<¸¨zhÍ×¦4Psî Dvç-Ås°nÃn8Ž×ÍYzhÛ­/º0<«Aû²_ËoÝƒm›ñrÞ ®º]Ç—Ù¹øÚvökyZ4oÐ´ƒµ{.¹qìœð«$þê«sÝØoƒí°Õæ~…ÇêÚñ/ñÛâ±º~ÛÔMZÃ|×ñ'pÜwxGÃùjèŒe;Œ'ól½<åÜÞ´Î›Ö7ù0¶7!Üß¾%É:ƒ<Â¬Â‰À$V1ÇðCal‘0¡‰ŒSÆ„ÖXÈDMldiŠS’JL‹´ÀO ¯?G›º4°€<øW*”aô­;5îƒ¼'×F˜×ÑµÑ;Ìèæx‚yA‡óÌë‘ÚÃ¼¦õ{ºxƒvÀ¯G÷Ñ=(Ø’®Mÿ^§*þkò¤' Øé†ÿç…a´Üá'°–*åa–²”D*5Úð8šc“ª”F2BX§´AJ1¥9W8ÕŠb™“Qï›w¼zùÛ.-ÔÙ³ªJV©ö«ãõèñkê´#LÐ8G0ªxì(¢çÃŽ÷kéÉ[×ÆaÍÚ–;,ùgâþ9éXyŒ‡T=†ˆ4õYµð,Áˆn‹ëˆóM×q“†M¼UÍüI.*ã˜Î{ µ4¡ÊJˆ”Â¨8‘D-LB¥”Xò„ÅZÇ1(:”¹pA!¦£ˆ«Èžªtò¤õNi½S^Â\D@Uë1UqaPF;0µÞ“û¢±ÞÛ%Ÿ|Tz¯ŸÓVä£W€a¤µíÞÅž®¨Äæ4[ÝØ‡ÕÞÒú~liè®ÍÍêÙx¸\Ïœô=T ³¹û§‰uä"mæ¨È"yé„	¡¯ùJY+b*y‹øzL´5$Š#Ð•BÉ”±X	0#CŠ“I0#$Œ$§Ì2–H¬‰R©ÕÑÉè‘Ÿàuÿõ—Wƒl_·]Vâoß¼*›ä)›ÌÂ[¶Ùõ|=I
…ua®œö]õªa7Ó7rÕ¤Y]w‹U€EB‰.çr.U°9¦RUºjHr‰**•+ÞàL ²Ä†n­ëVÉ¨XuMtí·o_ÈåG9?¼y½MAü úw±ˆ›ØÎ:¸ó£â­˜)-+>L]½ºh!Ž>lúaö­¼–7Ïÿú gô®³[š?åëÅ|úuãGuW÷˜fèæÎÕ¡>æŠÅ»ÇÕ½˜c³Ù¹Ù0?ÏÌï«=neA—
Õ_	£#a	i®,@þó8±œkW?¡DÇVƒSÊI*4bÈ G±Jba¹Õ‚ÆG‰Ó/˜X­Ÿ”ÅqeA9c¢¢,¨LðÊB+Ú²¨[%Ý•…Ë$õiF§ta…Q;2þ
ƒ0ù
ã¼xRŸ§Â° ÿ“n'QtDFx‹(pËÛ¹(Ò þÜr,¬q…ˆq*™Jƒ%GS+#‰“Ì¥]RLZK¥1J¤LžrÊ½u5F’R‘‹Jú¯µ]Þå¯íà§ü…Ý o³H©¹QU4ÏÓ/£¿I·äÖÚ>Ï÷¿¼¤ëYžœÇä–Vó­žÉseÙ…Ë/	¦±«-¹»XãY1Ynds-_»mîÒý¤yVŸÙjr7¸D—cG°²3÷T—‰è"ç.]~u[aóÞå3Úä=Êï‹/L–Ý$Ï‹?ryWd*¾\Žg«Ø,.ò¥õ|“§iÄËžª°Ô;Õ½ã³mêÛÃ^ê0äÞ*_'fÐâl¸{>µÃ|‹õûg<9;ò–ÞjG	Þö.qÞ:É{JšÔ°krJÔŠ­szåœýA™s›%³Ü›wæ<k×Ì¥ÿxõý/—ølx3¼Ò|ò¡AÈx©aãØéc4µñ(=åiÞ0˜GÐ»:³tAÆîÙëwÇYõA\ãH
Ž^q$GõvÓÓ4ÍI§„SÄSÎ”ÒË85<mš[L±Öˆ&21Ai,bÌuSl•ØDÉ“æþÓinv?È	%•‚Vk£1@|åÀ¦‰8k‚ÑiÊÓ¿~t7}4ºûÌ—‡îþ,û*Ú¹áYÙ1mÞˆ²¬wÛS<ª›ÖŸ»ê¾}±êfs»Úí‰–â(6„¤”v”¦‰1 —­ˆçs%©Ëš7E(IuG˜€iE<Sá‘SW¾,æ‹<Ý¬ÓOÖd¹
uqŠpãØL¯þñrðÌ½õ—›âuzûö¥Ó©E
“Óìâ\ñ•Vpšó÷AQçtP¤B]€=ã
ŸÞÍ×ŽÏsP²Óõd5^Lì–Ïlf'YÑ¿Ár>Ÿf_à7Ç0ƒ)8÷üÖûÁbÖ˜Ü=)0þ`@‰Ïgv8Ÿ]baØïnÖ6×‘@O?€ú¹ã65æ³W|u1Ï²q4é1ëŠ«'±Yi£«ñêzÆóz-~ïÎ¹¦'ŠUQøšU«U9G´¬ÔàL ÑÀ
Ïû8,vËšU¡2ç~[ºGöâ•Kv<³«þêI}gï|+ªuõªÒõ¹guRºÜn<ß.§Ÿ6«k?VÇ`óÂuºþ”`«ã×ÄþoÅwê’cƒx¯]£ûC•G¿ÜN'µ`óÔI&vùìv˜TÚáæƒãeíŠs´Y ÄóÌÎœT\@¬n~­µÐA‹ÿŽqƒÀÕØÌ"»\š±µ•Ì»-šde­§L¢u6Ì/Ùà&…Ç’÷Ã[Œ›&d{eÄ
ÆžiÝ®(ØªÍxìs×·›ÍWãôÎ1dõ ç÷*ÛhäÅÛ¶rØúÍËW—ô¬3ë>mMÁÏQØež4˜È™íUä™=âÞs…¶ãùœÏÝ­®ç3:Ób#ŸéØ>‘rÓvÍƒ‡õBÔy³ei]MeÐÙ§0¨ÿY2\å²½¢}ÈºÊçž¥²13‚[*M½Œ>¶
G¥âa’'KN•E•–è”E†¥iŠµÕÆ(Õ	D1³2²)1<9uUíÉVù“Ø*÷.(vü¬S|ï´S+×ùàÀ’êN¶ÊÃ×ùèn­tôBöb­hÒ2ÔñOa­œñx>Y+j­4-#R6[:•y r%‡öLÓ$†Ms²G^™ðÀøiJÖ±ÀàªÓ(¶®ùR2šX©XJ«¿ŒÛ¤o=f;u$¤]	›VŒ)TMßngY=Ú28‡öSûz6½Àñ3¬š}vö•Oú_+BQ"D“D KÁÌ1M5§‰-Ó
	+–±$‘A	×©1–`‰#b¹Ž¨j—n;\ínF;Ã&©cø¸­’“'(œ”àÆŒ¢r†zÌäù«ÐåõóiOPJ“þâõ6†ç3;AÁ„·NëVžÐCóä½­¸—ò;mž³˜¬¯Æ³&Oð¦h—Š-Ä9O˜0ùIýþ0&’ÔÐ4URÇ±ä‘%Öb!¡4Å®˜•Â&M¨±Â±H…d±QÒÕ/ÆH£=ÉêCY-{8Ñäž¬VUYM›úŽŽÈê‡÷ u—ÖÇƒär‡´Íµþ@Ò:¤“ç3•Ö‡ ´¶É¸ó¹va‡ÛÂ»¸­ æT¹TÔFi
hšq¨Y
éâ¯"™rß'a†‹V\˜„¥L0šžºØô­“¡°âñÔL
/½KEh7‰«G^{Náš¸­7.:§ÏKŠgƒoß¾|õ*g”ž2¸dÍyÓØÌ‘BXã v.L!ìóï@ä¥ÞÍ`1¶±u§&?†¶ÝoB 7åÎw.Ü£3ëfeWï}Üï=ÛåøÊ¬oó»µ›µ2º^M'õ
CßrÆ'îÙJ,ªà^ºâä%…k¡	¸w«qˆ?•®x Hçc/ë­"8ià¯èHýÑâ¡Ža³|>'wáÎa¯—™ÍÚx¼WîÈà!Ræ4÷½çz)ä»‡ëeÏ'óåþ™Ž ®¹ÐËn˜ž85†%FœˆX!"’X$U,âH(ëGX&1ÒÄ—	PØDRëô„ªøÎdãx°ÀéöÈÙ½è Ñì´žxY†òQÎ'&1(—m:þÔÏœÏ,9`¼Í\×/Ì¿¹¹Õ§­ÛÏéÉÌ	§$:ÂÇ%º–×V$Õ”T2×aÌÎŠô{‹nèVÏ7O“ðy‰öÚ—öNÅÏ•jë³¹×¡:¡||{{j'Â²ë1Ï—¶iuô}Û z|u=ÿw†Ðtä¢É;Õ+‘H™T L„À1’aKCŒRaR™RƒlŒ NSª2 $	Àj†ÓHavB(þ6çñ.“A±Èñ<±ŒC³rÈÔ•Z-âbV¶L;pãßÌÃz
ŠlÃxË÷§w?¿~>ø½øçïþåùàµyg>p?.~ûzø/¿Â÷?¿vÇÖßþòöÕ a°Æó„1Ù›1 ôìDòí`7#ãÙU*´‘µðX0;—ð^°¯–fš_Žt‚úþ~½L`ã¬ô]¼Þü:(½õeîÂÓn½4 úŽor.íU-eoa!fn¦3¶C0O]œHÆÄnËÌ:z{Å¸ºÞÀk™È5»^—"-(—ÉÝ.¶ÈXfÄÊ‚j¹ÙuzšŽgãMG¯Û¹ëåFõj"85O\Úa6žÎg£äŒ2á÷Š¹h~\™(ÂÐC‰b$/ëŠsN¡lVÅÐm¸ÖyP¡a½IïæóIŸ~ÿc/ì«C¤@¬e,ÒÖ%³íÎ™kŒÇ„á	Ý´aš_³ë–ÇùzÉ¤U$Jëú"{‚_¾lupîžrœ®u´FŸ©J(^þþû·ß½ºÄM(ŽÓŽ°µnOÛ‚¿ÿÞ|Np‡®Wè;Ôs)Ó“†‹ï$½gÿ›ŒýÃØê€ÆãßäJˆò^y•Ê÷ù×Ž:9![Wå>K¤;¼ZíÚ˜ÇŠËˆƒ=k´•3Ë¥R‰ ¦*B€j)cIŒxŠb¢¬M­±V¥ »¨à§’èþøÛ«]œùõøzóŠè»Å½µ@÷ßWC—ô"TÖòÛ|ú¸Ào
Î¸Æš$©×BÊÍVøD’íáSpKë	 ù‹ƒ±×ÒÛ%X|×÷FAâåÙÖÏOƒØBPÐ"?¾nèþ}Å_Î—yQ:Þ…äßW—µø=²Æø(\[vqGÑª‡ÿcœ\ÙUÖòYªæÏ{Âê-÷ƒGø>OÆÁŸÂ88áôíã?ØÛîñ°®ÕÖÉÊ©ŽAF}Å9ÿÊpÀéš¶@ö&ÁBrÂ1M£k&-ŠX¢‘EðPZŠ(FV*‚±BH XY¢m,LºÀú<Ôb–n–ã•Ý\!Íÿ°W.¯ÜÝ FšÜxGu5A!»6¹ØAû5p‹×'æß°*Zä®îíÓòz«ùE¶šoïõF9gïGƒ{Ìm‘†¯Hî·õ››Y8r±›ÕÜ1Ë6½]\ü%Ÿ×ìú/›4~×v2ÉoÇ:bwÍ(Æî¤‰WÐrâ–ç‡ñ•s#›|.J/±ã·´Wîøø/ƒgãÙÀ]æ9 Ã³¸|kosïwîF·Ë«mÏ.ÜÁÚL£gÇx:ùËa¬Ëæt`ÓÍõÚ9ü9uC­ÒõÄ\ìX½šæKWñšßä Üô 4±¹<³“.àvLâù"¬™^¤Ëù³˜©Ûefa>Þ]Û»|Â×¼
Yê.CÀ0^ü·"Mâr>_ý·ÿYüNÉÿ,\@ø/`ÿ}/óØ°Ë7v°»'qQdÏw{m³Uš¹£â×qv]Œto¾^U¦yP¢¸0“l¾OÐo¶#äÅp’—‹_ïêl³Á_\†7ãÙfæ³0Vç³‹|:+_Ïæ“ùÕÝ—›Ü³“ç—lAÝ™ùfõ¾·wîLãÂ]êÞ&ŠÜŽäü“äÆâ×—f:q»$¯a2k[pºYOE@à_6­ßÀ:;l¼_{»Vù-ž½×²¸ÝSmüutwØp	Ÿm[õiï§¬¦B»e-˜Ö¥sv÷G¸9v­KÖ7´ZæžMÑyÛÛM@!Ø‡õ"½…9þ:?xÿlÎÝ›·®±ØåVif Gkw	8yv5[ÃZª·´áEêã¦ZêïÓi¦âq.]¥{bðl•W¬‹/Ès;šdâ<^64'@¿‘6â¾=`DÐqÄ•HÑ†8øµhd2><Š…y¼²Ç\Û•&.À´¾Eví‚ý®¨ô…-ã*&)I…J(“‘•q„RJ(BØ%´±ÁL'iœ*c¦LL„¥Ð<¡†Ýäž¡E„@5ôÆ.8K#¶¿Æ’Ôó½Øñ}$
–Ã(6U°Œc%*'èŠo›	½»S¯]‹›,O:ö¡t¬»zÛ6Òm7O¤?›_‚	óÐÒí˜Ü„kðÄ‡¾ó0è¥NÔ\Ð¸ÁÅd¼è~ŠŠÕˆmB·;GÕ©eBº#f”'B¡b­H”*à#c”0‹¢4Šb-ˆ+H`xB"ÊKOEþôfðz<[ß^MÍÕ6°îK¾ïþxST«»&éªÜLìj5Ì…ç2iÀogþ^$Ë<h1×dÐ•<ë¿û;÷K¸¼`ÃmåçÆ/®] `aq.üz£]¡ëÅ,ÿ×‹áÄ½Ôp\¼Ôº7\l^êÄ±¬„e­´.Wü‘ Òê¸a(âUS&1|VÎãE˜¦”HqN¹u:,ÜPwºX“OÂÏ¯ÞmëÓåÿ¾ú×‹)ÍS¯¾ŸOQäŸlˆòN{ÛÅ>¦ñÕÛ—Ÿ‹º»?lÞñÛHRÝ¶ÁbüGvL¤â3’ä7x©úÓÎ¶ÜšÝ¶àº€)vt!ž™Å|2™ÿµøç’`„þZ+ìÏÑs?zâù|îI/|éýÞï†k?¤m®7šeQh–¿‚†]3¾šýaW—+,º\d¡Y&Ë°L?º¹»ÜÓ„dÍÃ²¾Œ§
qt9M—NŽ_ÚäÊ:JÆ¢Æî¢ËåÄdvéF·Þ'çy¶ß»Íx^Âï`m‡gí¿Íîñ„aõÀ”÷Á3é¥§É*<[ÙÃÂ’}Ì”ê¡£ŠôÀ“öÀ“çIQøñ¤=H)Ç3øb¢=È'Ç3|G{Ð%´‡-OûØò´‡-ÏzX¢¬‡ÕÄz˜xÇ³'…Ïî¡»=kkŸIŠ T†fË{X©¼‡•?ñihŽª‡¡T=¥î¡ŸŽçeË3žb„ƒÏ}ÎUöÀ•bÒÓ( çY:î‡9¡¤§ÉsœÓÛ»=ë‘uÚoÊiO£Í8ë‹³ì«ÏõÇ¹¯Ñ ÎºÎLzvŽkxa·À³à`<gËûa«fãð|	"=Ì˜ãÞ¹Sðí‰ímx¶`”÷0¶”÷1cõÑW†H_¶0ç=2ç¤Qv\ûØŽolûaÑ0¶`s”ÿ#‚ÛVHž3—<<ót2¿É]¦\Wv{æBõØsž9`Bœ'ï…'ÎSpÜOâ~„ï¬oèO.!ò…Jdxä—3fRÌnzáÜÃÆÝðÅîGð±XÎaœÃo´œ¯ë8†¡î‘¹LƒÏãŽ;	/áw¼i¼Y Þû@œÈ?|£ÂfÈQ—u•cà.’à]<Š	Wî¥/×óÕ< ßÆ9_ÂÆþ‚à>[œ-é§·¤—Þ’°áJeÖ´?Ö¼7Ö¤¿^“þzMCË›•Äýp¼œÎgóøz9ŸúGš•™“àÝ•}MpîA@HÝ×ÐRGjÞWMzš±¼7)ù‘³ÞX‹‚#ãYp¥¼e.P/ÌIŸ='}ö\–CEHTµÊïVæÆCùËLec©ñ w‰y€27¸ÌÍßRæ¦Br#ZætÜñW(Uv!—\ë3ç¸™°ìnýKü¸	KÜ8â+ÜÂK«Ö×‘Îq¹”IÐ]Ü2ô¾çGƒ;t4ðÆ A§‚†;¸«0:‚À.¤~n~ì¯lq†ócã>oœÁ<àòq±gTS9nÁ×hûÛŸç¸…ïbP±–û¥‚w‘…DÁ„…m„¸9T¾ß³Ýä”ã€À‰V6"k¥Ð – ŠÝ)
;?!ñ"phW ·³T¸Ò 8›•ªŽ›ÿå…
»°“º­Ka:àGÐAƒn   ÄM‡åp›¹sâàŽíå>ã8@H^…ó”¡ºdË2	p¿Ê4?Õ'<	¨›˜À>]8Ðõœ*ÇðÝìãÝƒ
_F\’.q©fXPdÌ(ã×ú¶—‹É:ä:™ä5Ê,äd.ìC8^<èÉ	ïCéñ½ÒãBKñ-˜Âb^±£¸D!u5ßêÀW*ö\ûP-<¨pÜîðœÿš=¿})}xH^!%0»œÎc»ÇÓåA˜
PPˆ€ó*BÎ«ÈKV¥¡)ï©y¨¬‚ª-Õ‡ÚRÁÁ¿êCB+Ìƒw³sB£Ð£©û˜tBÚ):Ô]êÇ¶€F¡×päŠ°ã)f§á\Î‘çHƒsä}pèÃÉYŠð,ex–*,Ë\o—ïbTÞñ‡¸lÀ/èë/0'!ºãÅeèw¾ýÒp.çù?!gÛ
Â9ºB²-­ÍãZº!ò”¢t78$Û)‘­ Ìá‡ÉÊITe&_P‰'Å:Lž OƒéS°Ä“0i©ª,ƒ¥ã|09I\e/\U/\ux®D˜%E=°¤Ï0¦÷Ã?À}–—‘Ã4üñc&ïU‰%èøÀ,9à›à,ƒ/#`z,yP,s?¸û–¯t?”û¡òUA{Þá1ï£p,C/"ÀšVÀÆCøEC'æÌ¥"¤`˜³"œ¡!GÃ—
ÎRôÃyŠ‰°GY`¶D§4àÁÃ&ÐE¸!‘ia‡…æÔÛptY^¨KýCCjþü€#¤ºkÙ9vÅªcp²»€wð»€iC¤/¬²á€b'g¸{áï¾æ\“žØÎúáÛÛÛ>Ø†D9»°+*d¼yÎ.	Í/ôû*YP„B
VSQ„ÃŸ¢.XX!éØcXê² 7crv¡ß7¨LpüB^zÌ†ÜtŒ‡ Ùµ«üÂŽ?~·oËyQÈC¾Kê~„ÛŽ-~–s”A¯flXHEYeYØÖ<tO7lg£+|Ë–ùöÔÝe_ý©Á÷lE?«!èñ_2È¥Â7 ¿°Â·Ÿi‘Iö_ÕÓøªžÆWõ2aêã+‡SÒ¹gÝ‹XïIúö#uz:DÆýpí¥·Œö3eœ½Ð
|S›eãùÌL\
‹q¿è™àCú{üUÏü™ð'8xË½'ÐÞŸÀféuÏý?BÎÒ›ž¡féUÿÈz~„î}AéþÇI÷;NŒQÀ‹C÷y‡ÕeUæaý
¼ûìxÈãÂ{¼ûìxÈƒÉ{¼ûìxÈ#Ð{¼ûë8ý­q.ú[†\ô·R¸èo2½¡dÇ]öÊ]õÊ]÷Çý²‹¦XüÕ´¾í»øk´ÎÆ3xòåxöÞu¤C*ÖÅ_‹A‹åx¶²KwO¦}…tàµè°vñ×ÄfEÿÝ=Ë?p×cÂ2£<8t†`Ô>ïY™8DZgùª·=Þ*Ã‚lë°(S/êÖùÃJÄ<À°¯—wÔmÅÈÛÊ¸=9Éw"ñÒ¹>j™‡Û‰fìr3¦–x„x—Î•KË<˜?`<„?h¾b©ÿÀÒ|µ‰0ŒŒã„ý9It…`Ô>ßc…¸»& íSäVˆ}žÜ:A‰˜{èn`›Ó ÛœØæ”ûŒ¢ðEá/´©ðé½ô—pT¶NöQ"V­“UWˆÛšÝâ¶öi™ØgË«ÖRÊÄ–Œòš1éA¬}v‹öY+ÚgÆ´Ç€± ¢’qÿYgÖ+€˜ð÷, šbBúóþïÒ=Kd…‡mwŽ#þGwb¯÷<€Ã=äH^Ð÷ù¢ˆ@\Ü-ñö©K+ÄÝõ&çþ»žû`=@tq¬ÄÃ×Åeº'ö×^®µ±¿úâ*ÀÞQ>ó§ý…‡ÏÐ]_8â¶ùCËÔBˆ»¯{ n{úV!ö1ê3ÜÔçÉÌçÉLyûà@¹	.<zïµ»<Ð¹ð°È€Öã%ZµÍÂ^¦öY¤>ú@xŸå!MZj©ÐzŒVëš.eÚ¶IÊ´þ xxÐvw®
í!ùµò~oå£o•êQ˜û{ˆPE|žì£1•ÆT>S1ìCìÕmêCì3UÜgÀ¸Ï“}ôR^Ä>Så#ý•ö0í³ŸµO”ƒöÙÏÚg?kê±14e>Ä>Så#†´p×>ûYsŸ©òš·¾sT&ÖÄ>¶{<ÙG jé3Ú>]ûˆ^í#=µôLpç¿e&üÆ	æ!˜‰Iº—=.3	1&$Ä˜„Jº—4,3	p¾‘°³ÃC¬lJoOœv¯P^f`@Ó+50)iˆ5–†XcÀÄß!ï˜P&!&‡Xí©l¿lO<ž½¿4É‡Kâ‚Ãß##Ò='œ°?'3[¤ÍðcV¤#«?Ú×ÿtT]"ìììÃøÏ¥z×uQ0ñ¥ïîÏé}ö†ç0¯~ÎÀ'Ì¢`à{³aÐÝ	Z0ð8:Þ0~¤oº×–Û0X\ÏWóKá¡|Jl¤‡",³QÝÙ¤¦m¢±œæ²½ßQµ÷à;ªö~÷ëÅpa®ìÍ8±—·“¼úû¢ýØåÒárõ}N<Hx¨þð ãSp¹Œ&k»¹ãˆcˆ7ÄAÞ‡íOžj%àx‰ ó(‚º
Òb]‘öEæ²G´@Ö¾}NÖÅwí’Èv!Ëo µw)9ÂN1›@Ø%r:'ko’ Ù½»»ÇéŸ.q£Gø.w‰òéà 8Ê§Ó9Â§Ó¦¹Ï§Û.ºÏ§Û¶ºÏ§‹ãøŸ®ûµr¼ãõq`³÷&oIW¢ç]ÎjJôºãê(*œ_’ñË{ê.—ü€zž¦ãØnÎ=9ìËƒßrÕI>òºå­sÃðqéãÇÉÍewM}ÈNŠ¤Kþª#¬é¦~¸ˆ0\|WPÁ¥›ä?äÒm/ré:xŸ‹2º2ÈèvqüãBÚ'8Â&Ä$Ý2Ø³p»ó–ÁöìRó/î+9vVC!Ï8o-ó>):	Å.–wº4q„‘ä]ò¿co††îŸ üvez¹
1ìa9I…†²›–<ÂÍBÇ<'Ó±Yp)C°‘dÃP ]Lí=¯ç€=xŸ.â¸€0 œ‘9/Ù%[ë}>,`ŸX >ñ€}âúä»¨·Iˆ¥$CXÛ­yíÔJwÊüØl:Æ{9a¸ýeÁ'¾çÄ½8‘}Ÿ:zûK¼x@^7ª÷\|2
ì¹8'ýåû.@¿ÄÃãX¦Â¥½¾)“w-ýVáâqPUæÒÁ0,‘{”¸¸‰÷ÌofÝ9òÇÈÓl®†í‘ý6³lÞw±›J<<+”¹„Ì#M™À…ÜOð.á/Uòö·ãJôAdˆO$^‰‹GŒc‰‹ìF°çâÎÉ.­@ºmq‹£LÚ',1ér Q%08Ä†ó‰¬(q	¢qÜ5`0“='xËÄk‚&¾zkÇÆOátº`\"ïâú.‘w9…)‘ëÖI™¼ƒq»'—ùvW~KjÏÄû„ •¹„€2ÈÞ—Aö¾ôˆÇ-qÉ7\—Sï2 cà)Bqê k®cë2‹+/³¨oÇ>ôü‘j¿§w¸’¾§¾fr=ìÉ]t€%ðÿð	/.³ño­°é~i¿Ä&àþƒ{¤æ,±Aäé{/åÔ^[ÆÙØ^ÏïS¡öêý¤} oõ|ã.‡<$Šý×AîÕïrÈ¢Ã1q•…è{uÀBù³ðC¥/‰žûý=²Qr
á*8…@,ù¼CÝFµ.t”u6‹å8³À·.&}§Ÿ`ÊY8ua´ŸeRatŠ‘å\bä-.”ŸÝëX¼ç]¢Öyt‰Ü;äáeç,º$<dá?¢é?¢é?¢Ù%iÜ!ãáç^Yv3ªP{”%ó±J–^ZpÙ!Ð§Díî–žà®Ðp—~[aËÄKPn™x!«-/`´eâ%¦6Lºd[¾ÏÄam™x­³-“	 ï1ñ“U[&![—(Ø{LüÄæ–Iˆ×é¼z„‰4[ùcæ^“òÁK}ðTC:¨¡ü.n65Ë<xÈ‹w¸ïT¦'ÞômËqVé;Ì|…Ü³ûÝ-¾—.v}™<L'<²Å—Ùx¸IËl<\%6ÔÃý_fãqZTe‚‹Ç¡S•M.Aíî….qaA†—y#îq’vÀ¦óáS…O±aÞÊ'my‰Äý//ûmíÇ‡úépI}_ÄãÄ£Ì&ÌôÊ@ÓÛÅoT¦£‰dMä“8¥ÌÆ£"F‰Onš2›0êU…Q¯*Ì.Pa&Üx/­°	²™¢î‚5MAcÂã‘íªÌÆ#ì¥Â&ÌKyD6WØ„™pfl<
•ØDõäËlòí£òYéJ˜7R%>1óZq û-ö¹fSáFSÅŒÙVÀ'ˆåû¤­ð	´~Xì³0º<ö¹›Qáhýð0>€Ø'p«ÌÇ'¬¿Â'Ðøøå—ùø„,Wøz¯@€;	£.ŽºG!Vøz­@Û"ñ)ZZæh[$–ah&>qï>ÆY†c6[ÍrY€×6©ôû.Å{K|2ÉUx-&ëì2"ÞXwÃ'Èè.–v:¼±QŽ4gCo^9ÒÔ¯mâ5^OóWìrù·ÂjØ>Ì¦-x…ñfÝŒ—vâ²Õ9;¨ËE±M:ŠË,6³üoR¦uYñYœgmìüZŽÞGN;zùìè}¦8§÷X¹9=W^ô>úÀÑûèœÞóý}Ì ÷)àQÐw¿[Ð{~9zÏõK|´ƒ£÷\ÿ„zŽŸçúõ©Íãè»„…:º.Q@9]—š‚®CÌLNÙ!ì2§ëÊ¶¡ëØSŸƒGÞqJº\9ÞÐ}hŸÖiCY¢¿½p„€>Œ›m>s-í­Aßg'ð"Ï^D&»®éDÞZ ýýÜ eM‹u¶Ì[]-®Î5›Œ#{kã‹‰Y¥óåt¸¸[]Ïg5dñz‘Õ|}½˜ŒC`›=»Ub(Ø—_Ò‰¹ÊþþÅÿþÅÀ.æñõß¿@_`¤ÿþa5b_ .ýý=²UÃ˜ÆË»Åj>Êæ#<ÂÏ¾|&X4^ÕM®£;
Ò¢ýxj®l¢$ZgCì(hŠ×¯¾ûþ»ßÞ^âKÚxÒªs›Ö?Âs^^’ñf„Wq|™]Ó±.üøòå%¡ft×‹dœÅsXwŽ5|Üõb¼h×~ºNÚü±°W®½h:Ô%ì}óÃ—bDšÑNsÂ†Ú4ÞM©lF6³«l6Íò†Z¬®—Ö´·
Iëew”š6Æl•Ä_}Õf,Ë/ÿýÛï^]âQÃxœv¤ÛSç/úûï°iX3âu AmæåcãÍ\è:tbªA³Åx2™ßÔ4\®&É³ùíò§oßþT÷àì.[ÙiRÓâæÊ®ÎˆðêæÀ÷Ö]¡Ì«š;g4²ùÄ®j´9Èœ?²N{ýn§ÓðYV<õàKÇûÍNg_/†f2¾šýíEþù‰&ñÄšsM\ªÕØLÎµš¥ã«KXJÛ˜õí“±¹šÍ3ë¼^Wã3]Ø5þ¯µ]Û¬¾qj¢3ÆËéYÚúVãY:¯o1±ìäLg¦æ½]/ÇõšàÅèLap–wõMœèL;KRs{®Ñj½¨oËrå’ˆži5žÚÄ¬Î´ZÏ&s“Ô¶qXk¸^8^ÃÅ"©ŸØwûïá7€«fõÍÅß^,Lüú¿n~¬îNæ,¦_ämÝÎý¦@¦ñ|:Ã`æ¹ïÌ2¾þf,”øÛ‹üW÷ìãl<Ÿ5E«‹¯mü>[O7ÏÍ®á°üû«qò÷/þó‡·_|c'"ÁIdÓ$‘ØXjŠd•‰"qiSˆP%-K­D¥˜Å1QŒÙß^l’?þšåÝ7ÿÃ‘fÖ&6DwƒÕµüôæõ«7ƒÍv˜Y2Ø¸…£¸%w¬ÀšÉ­xánìF{QæáxnæaùÍK¿¾|·Oìƒÿ>Yý5Z_eÿO_Ì³Ñ|yõß¯VÝÍá2'_/'ß\¯V‹ìëÀ¶ë|ážs½Áôå{x<[ßJÏ®†Ð§aÞ?øão/±câéÀ-Í\rÎ•Öú‹Aäº’Da¨±ØÎa6þh›^À×˜Àd|1Ï²•™L¬£ œqE¿¸e/žÂ&“ylÜ  ¼¤ÿâMÁ*{Q^wÃb	óÅ3r«näiÁ`» wjg2†QÊì7?¾yý|UhígûV`ëÏ·#]4Ú|´osµœ¯ßü6Ë6§c›íŠ÷Íò±¹{øg»!2šFóÛÑ~ª
ª}«=e6_/c¿m¶Yå=³eì^³ Þ·ÜS_Ú³ËáÒÌ`ïÂ€/Wÿ‚ã/â~Õj¯Dï›áÇ¬Ô\¯=+}8C´Ìµ¦¹éLIÇõT¸°OÉxùÅ7/ì*†¥yDà_ËväÆ±/¡/y)XÏb7Â*Å°Ó-WfH:)À1·q„,FÌ`–F± 1M‘ ‘Â©446B
‘Š˜‘'±ë-v5BèPì"}Zì‚@íWìëî1^üx/ûç¼}–Oð^­ÇŸBêr)xª4F<EDFX ¶FQ%ŠG–$FEÒDð‘•12©a„D&eDº…H¼ZšÅõ,ÛÁj>ŸÔHÕ£Í?©‰qc©I¥W›„€˜¨$6	QXÖHlÂºé*3¿{ûý?¯ÀÄX	JÚIL³€~“ñ¬Î1Vn÷Ó›a!&\%¿Õ|QG·›ÑÀ8?â™Ú•qœÚØ5*† Æ%1+3ºNBÖu;Ë»ÒÇ‰WffæÚŒçÁ¹o}·Wóè×¹T·-ÿkÅ´ZB§–«‰‰j½­÷]‘NäŸq(Ú T2»rÂó¬?ñ¶¿d³MwŸu”:`…uæ±¹hoÐ¤ÙK8gøÒœñ:½Ò¯¾ÑÓ›ù£
·,ÞƒÆ-,&Ê¤$ÒRŽ`
"¢<B"†•¢€T`Î¤E‰yÌTª$7µ ^ii–ùìž‚¯·MJ†ZNüA
ÚÔÿE°¼PA\(ða(¸$F<áVŒï+·~õîŸ×æJC°vÀb?ô5ÿ.º£³‹ê¸®;Œhxø¾Y³vÛØ€  "sRw’·IPO• xÐN8çâñÁ«Äå4Çi³Ò.°µ„Á‚,ZbœëB% £yD‡€‰s=9JtnDN†fœG±ùêhÑph>3ÑøÌ"®›ºÆ	Gã	‚löäÂ¬ªRºTÐÔéTy\H\÷î"Ã(§Â
F,':â±6é3XÄYL£˜Ë¾”1ŽDL¥	#’!,Pò„ìfME¾ì Ù1…Ê®".´Æ¢#²kë^ÿtØî±x²¥Ó¨lØñ`ž[´çúgÆŸa\öÅ<{Eá6}È?Cîò5ìkÛhÖG C•>",Jt2éæßÃ»~‰–P"¥58Å˜p+Qšr¢4e&’H­L-KÒ4–©"ˆ)ø!”RÎ……_N@Ào?Ùhioù;ò6.Äõä‘aÑnœÌ–òí›^¿ÞD`LçËÅõ|2¿ÊÏÍÌLî>Úåhðj5Øª	 œt˜Ü]ä¬`2ßÛAÃ‘šØž]ÀÊò É8[æéàf9Ÿ]næË$ƒ†ùWãÙb½¬ìíêËç ëVƒØÌ.Ì$›²õ`/ø`¾\ÚØõ9<Æ_æ}È[”:²Z®í‰>_<N€÷êÚ¬Šh/þ~6¿™¦ÖÌœoÚõn7Ù
š].6C3á·tîB¿‹wšO’Á3Ðvƒ]Ïì€ ,¿,†Hð™%f™8¶ÐøâÛPÑônóçö9¯$­Ýí›Þ°7@ïbÆ–ã[×z4ž¼8¯A’JY>ŒåRj†(;Š¯a!çÈ®„¯e—=§ŠJ&ÏâëbÁ@E+—é·WÓÏÅUzø–ÞG°²u°`Ñ‡:-rT®ÕðjâckÎÓÁÔbÁ~îI×¬ÚI“«(u
X<ûÑ®æ‹Õ×_¿Y‹\ãW¿~ýõO c&ö|Ó7/¿þú×…Õz®ò¦NðÅµPÄEÈzôppŒ·ÑÌ§ÏùŠÍTwoaºž¬Æ|Ba„¦¾¢Î(q‚ˆpŠ%JŠbqƒ¸ÑZ&±ÒID1Šl"UŒq¬bB\H8r‚:9Íù„žPB”@PÕœž@	Rº*Æ%e”À4>æz¨?›»ßžpÂãÀ	g|1]qÂçãÏj¹þ¾wKøóB b‡³Ìœ¢íâj #X¸ÓyIKŒ%J¢8M0ÂÈÝÿ°†â4•$±I$ÜÙR„<Á’a€‘äŠÛ+ÂO7½{÷fà†Tï˜¨]'òÝ;‚þ[^ž†ï®Mä€¢Ô>g8µYæ$= €ñjegNû¿,À„k™¢ùêzûØÌ‹í³³ÑàÝõ®Àž8¾šÙd°š";Xgð+°ƒÅšOß GþÌR¨i6º€G%sw86_\<ãn 
ÂÄ}ºt `£ž²çƒq©y´NSwcÅ¬Lþ…C(Ñé,×‹< ðsÊt4øÞÂ¾J
€ù¾™^(Ã`˜õÒææ³ÉÝ`»Æ/L4ÜÃÐ º[Ù‰¸G¹ÚŽ›C$ÖLÏà=ÍàÆFX@¨1¶ ¦fNú²ß#¿«ñêzåg}³ybÿ ý]ÞG¡…’šH,d	Z()´âD…Ìe[« )pXH@g½û~ó­Ö2në3:Ð;ñ¦Þ ƒ£Ö cß•:DpBôcÙÄ)Ñ†µƒÀý²àÞ \§Ôú²Ð¢îøÄGŽhª×ššÇš-A`1PaRŠ4X”	WþŒE)c±©DÄaJ¥a–›Ôr››ÈŠJ­*Ÿ4Û“f{pÍ¦îi6|Ühf„Ä$+ ^q¬ëÎš­¹áü¤Û@·qñètÛCÚS·5(9®äZãÚîÈÙ(¥ç¯ç3x|6Œ'cë.ÁTÕßlîþ9¯þØˆðvžèh:OÖ{éV-¡¯¸P_¡˜Ð4¬¹^ä‚0àˆL„iÌ	MX~5)†”5&á€‹FL£¨µ"’Š*Et­^„A™¼.&v
¿2'2N9áSšÁOðçË¹KbtÒ¹ìZä¸q0Ã3^à8.“±ÏÏ?öâÄc8€—v™hb¥æ0ÿÅ$3h40ëÕ5ü±QœÏ‹€TXYP›3è‰ëÁóÜùµ×:ûïG›^ìžR~ËlÇ Ö@ã:o2ðYÚÅÄÄ9áEŽ0òØ¥Í›„tt;üû,WG˜e®$ç³«ÉÝ…Å ç /9FX/®– áúuÇ#ß][×ô„ãX Æ¬t1>b’tüxY(¦œ-XV‚œ1ÊËZXÂÔà½=;,6ß°vÛŠÜÈÅüöõ€ŒÐƒjËÅ"lb»ú™»‹·RUÑöJõ^oët`[ázô©Ó³gî8d³º«ø:ÿ3ïH­6ÞôÄÿ)_/æÓ¯{Ôá xê<»Ÿ~ì¨Ó8vG˜fèV¨+\°{à?ÜËoˆk#ê›°Ê†NÈùÏ~™
c¦Cüuå¯Ú›àæmYïÒ_G –20æÆ·CwÖú¨aßl\VÞ¸6.Õ_	£#a	iŠ(çI*0¢†Ç©¶ÒÄ$eš»OÒ(àÁR†5Ž¨Ð8Á±µ<B4d„%¶O è	õŠ ¾p
 ¦œ­O`Xz·¼NÓ)Ç¤
Š4,Y]vägñM|Çµ?ÖmºG‰Œëœ`CDÃB¢3ƒâD¯öw${DÍÅj-”NÖn¸®ã³Z¼î:hÃg4C%ÝÔ“„xÈƒ¼N7dç÷Ð)H»x„ÿ«œÁ¨aw8 ìù”vÓòÏ‡µ·'ó+w=õëƒ¿T4¾wsTµ¹$Øµ7pØˆUî{åæ 9îj&°~g;AÄ1g$J1M-¢±%ˆE "ÜPŒx)’&)JbL]H–:I¹Neªä)çé[›¶Næ7ƒ<%ûà_a9Pyˆ sI¤ð÷cÛežêŒ¹ ƒ¸Ñ‡:ýŒüè,6`3Ø‹üÑ':p4ˆ×Ùj>ÄíÒ±§m¹-Pé×àf¼º˜‹éx6žú:_åÑ³£ÉÐ~ážO¼™^½øu e'Ù×ƒ é{wN^äîÍ&ÿOL–ãb°¡ëÊl>n	Ÿà¡‹y–ØÙ169é/¯~]\¸CÔò‹n€ýrçNQ§®§fºïì7ù1¤;æœeð€çnX/&ðå,¾d ,Ír<Ïžn®íÒš"Þ·Ü½ûO¸8|ÂõøêzpeÁq°47EV× w¯®]ô8»p‚ÔÙ}0¦Î„y,†ËDãÉxuçæñ:ïƒOç`ÛÍ’Ü>ÊÆ.šÍÌ,|vq`¥åqÖ6R\OœÏþ4ÏÃûXÌ$ÎÌ$!¶þ Cß1'
UÍ$Œ±‚ËÙu±»^§ZJ0ÃBôë„Î#·“v®ãÎ‡­]ÆÄÛL\H?3	ºZ{Z)• H:Ô¼2¿îòâòŒál<¨ç<ØÀxPèï=EÒrŽ;üïÃƒíLIØc}šè8f,ÂØrK•$VÅœ@§š
W{™j	“0AbKákM-ˆKÉD¤Dú„LŸé2í-ªËƒ¨z™*Dõ2%’pRE¦ZœO`~
…‘Ï:ªÁ/°Ó€ø»ï™o<C\ÚB§<(0õÃMPÿ3šž0Ïy°ð `À4ÀCZÎÑ?0Mº_°`#*·bÝ—ø+-Ó$Šâ¸ULJ©¢åð;¦\§ 8P{$uIšéˆ“È$<N'§<b’+‰Oå&ÈWFãÞæ¸®îª…Üo¿¹|1¿±Ët=y¾GEl‚½ÍS4±û;ýÞÈ'¯Š àÎ$ª¢¯{¢Šäˆ8¸8ÆŠR\NnIˆtJê<ŒH†ÅJÖ¯‘6WîC!‡·ùŽü0û0^Îg. äÅ÷ÆºÃ˜¯à·oìÀ`ÖZžýoKO¹nž¹ÐrÿŸÄ*É=¦Ùõ†`N§µõµÂ\— x»ZˆV0ËÖ.ëeÿC T—‰ùÐÿƒ@Þâ6@†w3?»®Ë´°iÑ yÃy^®T™;,9}XW¼˜¹8ÿøû$³æóò`ý?l2ŽÌb9ÄmòxÁz5ž´#Š–ó•ó	Åm²pæ‰\;üþòÿùæ]žy¾‡„®övaZõl²6C3“ÍÛ%sm˜5^¶JoúàÙ[3›§oÓÇb¿µêc…ºøö?ß¾ûáçï/	ÒÍ4ÏêâÄ²Û©uUã«qE¿]àÊ<šü\ãd¸ž]\ÈY	Vmßê6z³¤.î#‡v A®ê
Ë-ë‚Xðˆï®Câêãx·¦ÙiéÓá1ƒS51ù‹jÝËA¥6æ®Á(yaÖ«ùx–ØÛQSŠ5èZxZãö7v¶¸=Þ¾¦÷½’óOÙ5}ÐÐ¹Áö®BX¥ÈÇ.dÓÅ´Ù<·$Í¤- ¢Û».„[éÔšã«qk²üðí÷?ÿp–bcÿ6âþÂ‚ˆk›;VEnß`ÓÁÚ6Ëõ¬öûü^Ã‰Ð€ð=ÁÆ/s´K¬›hÐ*v¶<±æØc]¦©<Xá"ˆW§2VåR˜ªÜ€t®‘ÓÍš>óÔìïzbÔw­
1è›!+æEB•£+b\Ø”ÉHrj…VYøÁ1B*Q‰D,ÆŒã4Š¹à)ç‘"b„…“”à“9F¾/ª¡8WÆ>fq¶º:ðkeü`¥ÑÛ:ˆÜ	š«Zý}ûæ÷·˜)`ûÁæðá2w=eùaëÝ|×ƒÙŸ´~Ó0Žo¯Í>ÿ5/›™ž}ÿö×ìËmO/î{àF¯ÒœŸ»|³qN¹Çã/–wÇµ¾É]B“‹ü2üê¼ÃNý¸ãÎbÀ&IÆ…llvzÞ•‚ïóÝk\ õæÑð\—¤•ÇäêS¢©«ûv?“(Š*× ntãg³N¯·¯´7^¼Þ×3ú38ú˜$r>n¦ì¡|ùÃzrÂõêôi˜^Óy$Š­o“{!Î5| Çhžbóëÿøáo_ýúË—ÇN«¶Ïãð¼ÚzrÍ’u‚¬æ3mpÓ,n3°w†u¾ê	(f#A4‰V‰E‘%Ü$šR#’”[ÁL¬pl4GQ"°‰Œ#%L*\îÍÈªSuÛòÐãB‰À¼;‡˜˜;—Ëì‡ñ8$8þÐ‹ÓõOÖÉV•oÒm»Ä[Óqæ¦!Ûo¹‚à~TWj\‚øQK%´¢pY¥fVçkÌBCó	sº¯í®ÚòÇ®y©D¨CØx®yMØàpcg¡9`çCš“Bý¸Ë§•g¨Gè¾¡«Ò˜šÙÚÜ3?©ÂHÒXK«[L$µÆ.Ñ‘æ†‰˜°QZ#ÆBs¬d„X$™Ž±"ñÉ›dßÏãõ>ÝƒŸŽ(Fí¸~È“MØ"¿Ã:/“à2R¦vi]~É«µ‹·=ýô"eåxVÌ¦ëé®^CäèÖ³<eä6ÌòPŒ'ó8{AFäÅcRú^lÆ)õáŒ;Îq5/1ãB¸°Ï}fbŽBÍôH1	W‡TVåŸGm($EË¨Îr`ÆfÚ.’!Ü£QT}ØF÷Ÿ‹}¾¤š-¯—öÆFMOïQléß»«vËOë•_ìÅ$‰4cRSE…`X#‹N”å”+x‚h?¿)"¥T[d)OÍ)åöÎ½h®V °8õK“¸ÀÒ¨QnùÇ7×ãøzsÇ¤È ìžvqüiJ±Æ‚HP\ub­‰.ë ‚(‘M²'n†óñºÿìA‚KÖÉ‚y PŸÒÃïðÁÂ2¢¨Sê
Í¯o~øåíÛ×—þû8Â˜¤õÃG'e“vÓT"h;G]dÉDu–VI4­ÿ~ìj÷Õ6Y˜,»9uH½9Ä¾]‘ú'¹c{ÀíƒõBcë™W½h1ÚÞßÂíJ](c¬s#ð4u©¹àˆ&qjá£HÆt’ð”E4‘M”Ç‘D„Åüt-ÈJÈš‚ŽƒI~wWsÙw36›Ë¾-ùæM@´_-ÍôbWßÂÁÉ¦øáæ>ïÒÁ¶¯‚®pUÜæ#‹kÄëMù‰åE|m–&^Á“\úG÷éh°ïêîèýëÁ«RqÊ•ói»3æ}•Êu¤/×y­ŽM§Ÿoˆ‹ñ¢TÑòùÀ[Ú_ÝÕ;øí—_7GÕV“b»L_ì×kMG…îU{ÇÓqÓ<QåAæI PåÌ“Œìª%œ”›~ó-1Ä­Š-½v•ÉW.*`ÿÛÏðˆË^`äCB_ÄH(Gmk2múQ_¢ñ¨«å×¬Dts¾®ôDyÈ{©è]gíløÛÛú»ŠãËì\½èJ»g?¾|y	¨¹^ªo3‹s	wÓ i¶Jâ¯¾j×ðÙËßÿö»W—åBTmˆFºYŽk~ÿF†u£aÜ‘œ›‹“„]Ÿxn`VÎn²<À#k÷z)<k^—»33	KÜÙpj%g)QÊ(Îbf-aŠ9”ª5¡ÌNxJHÂ“4Vâ	=¡±ÓhßCcäx0JÖª¢1,¨.Ç)h‚?ëÞ;>š{ðžðXs<&ÛÖë-Åí‡Ç>‹’ÜÝ€YC7Î„ÞVAlMýK%Ñž¢„á<hGïÌBt>ÄØyÑ“†3Yó¼èŽÝô5™æ¯ÏMÚ5øÁl"…ÙVFÀ¢Ô,FR2­³Òb«2´È2ÊI¬#F‰@i"eêêuj¥hbt”(æs`…OUXÿ6]Žß3ËÛ—$ã<%Z-ò;CÖ_®´›››QžÍÏåŒsÍGÍÉd¾Ö!XÀËñ2ß\a-ªž'  œÉrP&çŒ7G;&î§~XLz‹Ð™ìù4¥M˜¨9úæÞIL`tD7Ð¡: R»A}`Å]‹-qi"‹"K§™=Ûm7g9;É­ÞÞí@&0ó‘yï»Ë<=ÂÝŒ_S”Dšh„¤J£4U‚p±¤±’B!	»Sjbn™FQl(NÁ.¡"1˜Fì”´{ofG$Ö¸.¿èiš^“B¾7™¹ž/ç7y°†‹+qV‰ÎgÙÿýßÓtmLfßßÙåÿýßõòVäŸ&Lky<”CII*âÊÊ–‘èüõ¯ýÂæ+`cØ´zôsÉyâuý%–¤«¤{_/éŽnËÇ/ãÞ÷'ã:ßÊÕ†F±íˆ²v’.&,Á%£XDša¦’4¬¤‚ÆB¢8I¨‰"©‘JÅ%E&å13Eã8>%é¦× £âÖÂ®Ž¬Wyç€]œ–ëÑlòâr›é‹+k?¾(rR,®mÄœ‹Ç3ãº¢ÕŒDi.E%dMgSÚíÐp¿†Åh!ñ@à=,Æ!ïŽ½r©×ßÕ^ž©Ý¨_öMû“}Ë®²îÊüÉv2QGIKHmD¥HÁp•ñD#§‚HÅŒp­DŠ ;†bš$:F4:%ó–&ê ò
ªg?\Ý-VÏßN@8Íó]Å£/? 4w&â¨Ø>0¯Wv4³«3V.»'þôñÊž˜j
#^½6B‘RÎôÝ_¡Xí#4ÎË¿åVÃP¶—{ˆóä¿ÞýÌ§ÿpõÍ‚·$ä»—ö’pY'	nÛÇ/—ýIÀ{·šJ@<B#ºÕ'm… „´#×ZŽ9EiÂ$R4Qc¡™4)Æ`Õ"!yÊÁÆeH§Ì¦1¡ÈF'+m|›eð*™m-kéú=ÇÜ$LžÏ ñÂÎæù)jn÷ÚÙX‘.)Ì³éàpïh,¦osâ\/ùá'VÇÅ£æâÀÈŽ~'bøüÍìýêæËdˆ;IÇ¯öâ1ì™çÃñ:5þ`Q«Ž¡gÐ—úSÉãûúñKÉ¬G)¹j+&ñ{#ÒÑ<¶"2	Ã‘1.GÈ=n#nà£X3kÊ\z”˜Ø2j\ürY•¦Z&`#[¢NJÉÕP^{g`-]¯¸0›§+ã_[¿°vâJ~"éW± æ¨šÝ]sLÎ_ .-“¡›ïNFðúyu¼³¿`£ŒulG‹³ŸÙŠŸ`;<õ(Ù>zyÿRDv’Z™ð„ªÄšv—Z±¤1Å$!<Å’)0yeŠ5@AEDŒL@°'(‰è)ñöÑ.#3þÃÌÆ­%Ü9Ò^…\4‡ae“õÈ&ëñrÒß¸œOW»ez&ªMÞ{òøI¯}à¤îŠqÙH¹fÍíßÃýZèŠô>è£~¢ïØ‹ûË?…;Û¾ÏzOmØÇ/?ö&£ÎU(ñþ0‰·~<F:‰­•i*Ijb”PS…TÄ™MbÈŽ¨DƒÓ8¥J¡<Ê™L ù	á÷˜å:ë€îÎQö*úJFð¶¸ä¡5¼5…]Ÿ`Æ†ùWcsF*ª{žA†OÅú"-T5 FQ"1c•´dðQ‹è(vÇ¢¼Ã¡H¾>EL€’ê{ûËDÒÙÕ–ü;¾½0ŒlÂ°ó™È&Œˆìj{·ŠI¬1áÒB"*i¤¹bšÅ Eb#f82‰PÆZ„c­uËX«„ètäËÔ|t¥V[Ÿ×}šc3m€õ}™wü0˜äI+åÍÃe È)Æc^`å÷K £Ìûô¿ wŽD )¨»KÁÚc‘ÚûHÃþÎG¢«îÊw^TÚ2ÜYKi%7ç8M£DQc’G`%#LRž¦„XkY”$ øœ+Åc“@¦ñ©Úß­'W¦‹ãïa¿FñÕ¶:Ö‡7îá£7îlþa)%×•RÑÀµ }WCæ<ýôs=óØÙÇžb°2ÞâÓÎá1ÑU}½Ûc;õñ‹½«þ¤Þ¬ëq‡;=Ú*ÝòÒoD8§`âÆ6F°ãö®Â	—ˆQsŒ¨‘†)©K%‰g³± Æ%a‘§Ðßwvve&­}µd½_m/ÇóuÞv'V.Ë8þé(ëåâáÝW*åqlˆ‰`òÀ–„À¤U"e¡’4>‰fù!(êÏÈGè)«¯@Š®Ç¾ÑÑâ©g6îã—‚³þ¤`kKxÒ„y·Ë‘Qš§‚Å	H4„X¾VIªâ)²±µ:‰1Ši„´’±±&R)‹	f,±§„àÒ®æí_UïÑ	lÍ1àç|õ½[nBO‘rgGU›—s‘ßýØ[½Ž‰jÿ9cónW=>S©Vyå Ûp×ëÑQ»¶~>~™ÖŸ=›î)üw(¹í…6$9Á’Œ£Tšˆ&&Še¤1È,­I›6—tÂE¸ÀgYA#%mGNæÖ{i`··fkÉz—j.’%Î{Ëµ›ñûñ‹7ÅÑÈ”—EÉ—ùòr¾\Í¯–ÿßÿI]¹Æ:Ùw/öYî<v–®BœVÃ]0Å\âÊ_Š%Ó-ÝØ‰³ðÚŠ¾O)ùº¥Ä?þÆÞ’ ÒÎÅ¦>ûï±Ýúè%_lú“|óE÷ƒ®®<Å8MP’™
›Ðˆ0qØ¶ZZéº³H‚ T„!Ý­·ˆX÷gBá*Í)Ñçêß¶¾íQGÕ»à›Î¯m4Jì‹8ïÅå|~þ(CF.Søðxú¦½xaZŽ\ÆcÖÔA/‡¨«ïóŒä;xeTÇê*Ûæ‹úãŠÏÒaoÕŸtë|c“úa©ZÆ(£DQ—˜E¥‰’˜ñX‚iJ#w†A`}Xb€¹[ŽH=j„æIšjE8Žô© ¾—m|ìäµ&-Ë»RÚj¡¥‚ÙžÇ®ªÒŽþss—âSº”®}ä±.nfëdd5ÞY9Oèq ÈµVü Çp‘²úG¢Í`6Ü®Ÿ¡zìýäduš†›¹¹|ùÿŽ€¿u>èˆëëPœÜê";Ï:9Æ»·zý®Ã[Uì%d#¯Ø-î-€üŒe)Î£T[NAŠÆ„sM|J,— Syìb­ÕîZ,£I’ÂnNU¬OÚ3Ùõ:êp(|†ðñFJë{D=~A„
Êî
cNTåüC4÷Âêî—Áç(íi4}ó nCÕõ¦ôèl<Ì©Ýúøqfõ‡3?xÜÝÎD¬‚ýÍŽ„ÂQJba‘J]bØ$”ƒ3Z²Ô&†G–cÌŒDŠÁœº÷òzý„Xk+ºŽ¬W±·}â(¾þ0ÊÖ/’ùÍl2wEsÎ½{×C9_ÅÎ}G²"ö¤"ÍåÞw*ZŸ–ô.†~úpOûº2þÒOtÎ‘8søÈF}üRïCBïÎó’ÛgVli_Gi"$F(R6•±”‰¬Á6–ìn$ÓˆIÊ$âÖh¡¤ÐŒ¤BsÂqbÍ©óàÿa'í%_QïîC;¼º›.½ÅóÑúý™áû×>èqi'ÜÍ¹Ç!ðà¤R‹^»±¼»î§}ˆ½YàºÇÑW áXgâ]ƒ›pÇwåãtw½	º¤óé0É#Ýÿ0&QI"iiÓˆR¦l¶¬f¬\fYD8³(S%„Yƒˆ2Vœ&Ú²SñÎß›Ù¸½«£êUÊ%fäžè*vœx¹ÇãDÂ?Ê˜>€sKJqÙŒ…O;_¤v¿J†Åtq|¤ÛáûúŸúJÒÕpMjO}OíÂG/Ó’þÎ}“Î·{šÀÂêf·ÆÄ‚`‹xÒMK\á"fqB]bú8aÂw„;è¤¥Ø%ù#	2˜G*Õ§°ÛF¢µ¿nCõ¬ø÷îùàíÍxõÑ.a’O”ð/Û`»?¨uÃãüÙ/ÆWyµj'R'nx€„«2BÜIò^Â'\èÆWÝ;Ü/ŽN†-ÙVóùìr={wo‰˜Gev”ˆµ|ëöðã—Šý]óMìûðUv…ÀœQª\ÞÓ(I„‘„d%° ,c± `Ó
Áµˆ	”(µÈŠ$‚Í™ªäTÂçÑå§ºùkÍ®Z^>mû¾§åâ«Y<YÃùÐ'6ÏÆîósìae3…îW6;QgL+ª—;X©ÊI0Ö-0¡©GXmöûb?ï²fœ‹ÎxÑ½èâf×Ð%gAPÕÄvâ°koAžJÊ®kúµ+§´ ´Ô¨Ýû«aãºhÄõV×¶²ªË•€7oR÷Ÿ ¶m}‰Z·˜ Œ¯æ‹Õ×_¿žÏ®Î6v2xbk›mwPM›‡ª@kÒt|ëŠ“Bƒl_€ì~»¢2jM‹ø:¯ZÓÖçÇñ¢®Aý×…å=&Ó»š=ÙvjÞ[3›ºwš®gq]×³s-\iW§1ëžâÚLÆÙŠìÁA€2oGá”ü•šhÂh$±åX[Ä9ã8ÒHØ”EX
‚(ÒJ—:VX¤Š€=®0Rò[BÃEo]Ø.=Œ¤‚
4Ô{@ÃÇRúöÏézJÒ78Xÿö	‡=×Ö½>¯UMÞúúºêã~†³SÛ'¬ù™bÍîñÔö€ê†4‘uÙ1ÀH!"ÑÔÅÖ$‘âŠ©Ø"¡$N8Ã†&‚(c$å©TQjM³§*0½žßØåàí|Ù%šºq¿‡ÏY4,bòlÕ£Êûå…ùñÄ	tu#®u%š#Ió4[®Ïù2èv óY&^8|gÿ»&¤s¶ý¤>†úÄõcsèÒcôô}ËºyFÝ5xÚ`JRN”ÐHK™`	ÎbÇ–ÐÈÄTFØJ™:ã›%Ìªlj­O¤IÙ©z?.­}ßúú4Qÿ„“B¾]-kCk:¬¥É;‘LFS%:j˜Q¢*Éá#FšçT [&»£L{É1W† @BýÎ×DŽ[Çµ{òÑË7;éO¼µNX9¦gHáRBnÒNÐ)VBðH2¡"zd›«"’èÈb sii¤ßÅ˜WK	¤`¢aŽ„<!è~˜]M:„nÉžýööùà·«°éUôm€{«ü©
f•a˜/GSÀŽs€Òåøi.¸h^NØÎ†åÕ0,ÖAû¼Z¥ôùù¯ß½ýþÓ >OYx|8¼¥¢’ª«ÛÐM$Øp+‡”õþøW?Ïpÿím€Q-ÛûK†˜ç'ïÂ‚qBr	û0!`¶s-Rbh*#­dYCX,­V"¡Œ2³¥‰+¿žï¿ýÛ £„?Oùè¤úýB §¤:Ç‡E¢`Ð	«fIš7Ž˜Ì—Ï“` Á¾×µ»¯Ì|ìØwvùãw}ŠÈßÞ~BÉ"&ŒN9ObLd’`‚¢ˆQ`³#ÚDÛ”%„H-a(J£˜(«ø)ù¶³ˆ<KùèDäarˆà‹”‡"R
\‘²Åµš|ù<‰È‡‘¼síäÿŸ½wknäFö}ßý)kÇŽðÄZ¤¸ãáœvÛËã˜¶§ÏjÛkf¿8p•hQ¤†—¾=¬Ï~¤$²ÈªbU‘Õ"gÚ1cw—ªPü	dþóT†_?ˆ<^Ó#„;šåv‡!¾kyÃRäTS¬‰Â:É’£\îÑ SÁF áÕ¹bž«½sÞÄ\Š$‡¶_•ãŽýÂ°˜¶vÝë¾´>Ø“8Øx´ˆ³åýh<mI4"ÊõÁ@à¸ÝÙÎÄÇÎda7¯¨Îü4k¶F[š]\‚LYŸOQ¹3²¦Ô*gïùÛsÓþŒ¹Ö‚ŠOÛÂéÝ¶;˜<8¬PLú$41ýWDr<ECLÔÜ„ ÀCxœãg“áIK/¨âUÙ1o:%B?5ûÿ0šüÇÕOñÃÈO_0Up+øqî¦øä¯gc‹ïé€E·§|cL¹Ü 1ÅÀÇ‚Dsˆ8_iDw²ÝØs¬ãËéÝœ‚Ûàxø™Î‚ˆ±T±vª~¶Êùà›ÿêpw¾óÛ¿žþ;_½îá;û¸Ïžç«_OÿßõÐ÷ï_õð¥®ÎqßùÃ/§ÿÎ?ÿ|úïüéo§ÿÎŸ<ýw¾ù¦‡ïü¾‡ïìan¾ùûé¿óío§ÿÎò-ƒ#¿³‡¾ÿÖå½÷cÙÏ{´ìqÝýìÆ½E¼Wš…(¤BËžiÑÎDB©#ÒsAIŒãÔ&Eƒt	?ÎU"GßÌnð‘Œ&ñªÚÌ¯MoØüü¬ú=…·*«_ÄJÍmË¬7L(½­þa˜¢-öióøùbáŸÔÂÏT-ünfô¹îÃfþ³Ó)àó×VÃgA¸¨ î‚±Tû¤ƒ r]®è¨ÄUÈ “.Jc(q¡ªD×·Óñè]Žhï§f­ÏM{âlÕlbŠe8…•|å†M¹"C›­‡oÿú…MgÄ¦Nîøù²éÕëÏÎ&Š$¢À…1Jf¸u&0ÞYå)“‰“¨¨ÐÌYí¤`ˆUÁê¤gšûªmÑW·8k»¢©Qã‹&ÓžldÎÎ×¢@&¡[YM¯^!Ó©ÉÔ9†³ã¦Þ“éó[M<±Ä „Yo]tèRòÂÚ‚ö&âœ¶‰¢×'ÐvòT£u½%œ9FCUM–WÓñôÞu6›6?;:iL'EåN)S“ËàlTIi~NÇÏ:‘ÝÔéxàŒéôùwœr9QpD aZ¡M¤….I/ð_*Hj€rÂ—Tqü¡³V+-½æ ²¬*®æ#{õ_#ßO¿à’	%èn­=FË¢g¬y¶ój}!Ô©	Õ9¨¦ãaãê×ÏN(Â|@I§dA±ÀEE©!Ä 	eœöœG•L‘E&N@¥‹ŽÍ’—U„ZºÎl:Üôü¨´«íU·ß”ë½º¬ÌP %­ö›^ýú…J'¦ëíÒ-\á|©ôÝì…„Hôé8•†älÖ$'èìIÎƒŒ‰2XÕ^Ò<¤(™€$¢\3•KÖT•#™Þ&Ý­¦†Í/šNTìÄÐ @'\š'åñó…NgäÕu
|:_:}ÿêó{uV)o9É)›´Cö
^$£9ã_šQœ%Ks¢,8ëSp!ždµNê÷~iq¨vÞtjÚþüø´¯aUc=íÖå´º¢O‡Æk>}ÿêŸÎÈ§ëDyÆ|jŽz4Ÿ¤ãŽ8§•ŽÊzóÞ8ÉÕÜ¢
,HÍ}pÎrŸ2è .T JÁªJ>-gÓ‡ÎÇuÍZ_4›4Ó;lâ 
=gTµ±¾û…Mgd;u
Æ>_6ýðËgg“w.•´°à)”)Aµ¦žƒ3A‹è´Í"yÞD¥A?O3 ÆRð›±ªÌ–vïí¸+š¶??>íjåÕùvj7
HÅýpbZ%YýðË>‘íÔ)±ã|ùôçŸ?;Ÿ„çøã$ê$T¹Î-dƒ‰€4F2àÌ:!u"Ò$©‘€¾ ˆTYíÏÓIXÎºÒ©Yë‹f£d7Ö	8QÅ]qÝBÂ3ž/l:#Û©S‚Øù²é§¿}v69“K¦C
ŒRo)'Rif¾4ðAà?^:…v¡8ŸŒHTdåÒZœ_®J\h•UÞM_2™$£»QÌ(QØç9Œ£™~úÛ2Qf§4Óó%ÓÏ?~v2%Gq­€H½wZ…@œô8WÐçS ðA[y21BbFê(A9ÜVégDËÌÞ,»Â©iûóãÓ®øoWgv½:J)žØ­¶¡šóéç¿ðéŒ¼ºN)ëçË§7ß|~>Žè¬C9Vp>3Ž+§µÑÜØRV‹à-BÎBJ•'Läã¥*>½±ØäJW>5mÙ|’”ïî:ÝÙu’Ík®FÐ>Ÿ:É_œ1Ÿ¾ÿü»âÒI0)€öÂ'™‹`½EÿY¥Ñt2Šqs)Z‚s`šÛhˆ†ªÜß7q¶ìžûÛ¬õ%³i%¿»ãÛQÈ/gK—€IÞfGüÍ÷_ØtF»NdtÎ˜MŸ?‡…™uL!ýk¬J–£0cä\ê@†`yH:…U•+m"TUÅb¾YÆÙbzLKóo8?Fí–¨ÈÜ­d1^œÐvŒú’ÅrjF	z£þ¹²XÞüýóïŒ£»š{®stxR'+T¤Ü{c‰Qg“Ö\S“ÅhoåÉ£q•D¨Êby³Þ=úØÝ¿kÖþ²ù$wU
ÀàºPä“‚6QOoþþ…Oçäßu‘¹;_>½ýíóÛP <'‚1,àìˆ qéq tò<iÅ}V•’Y‚#ÒÁ+K«
ã½µãw9ä»+Ÿš¶??>í*ê×f³ý,`Cv²€[Ee¾ýíŸÎˆOäBÏ—Oíõ„>œ”&:O˜2‹Þj9þÁù”3ì<áÊABLQ–Ð×#D*HÊ†ö–¨âÓ¯o»qéP»ËæÑž?‡ÎeEU'Ój?ü×/Qâ'Ïÿ=ÂŸë$5|Æ<úüþ\ ’„bD  }7µ:±ã”ë­B)ËŒ$ž¤Ä%W\âÞ 1‰ÚJÍ–Ç¸s›_4ÝÍÿEãˆóë¨j‡ùëoîœvÄ;‰–Ÿ/~ûü§uRË˜ë¥á”Q<±ÈÐHÒÁ “”  )‰tNGíQ‚m¨%.‰ìf UA§ßâ$~ZÆÎ9,MÛŸŸ×¢‚3¹'¼h=å˜Í|úíË‰Ý9ysG@8?>-Ž©EK‘¹vàº‚¥i)å(aÚ+ Ô:Í¸öÜs!n›¸áRE†/*DåÎQãEBÛÉr@TÛ}?_LWKûh9PÑ±®]¯ß¿?¼óé0Æëÿùã‡‡ëÕÄYK*q*H)•”&«¹-*qI9˜í@¼" …nÊb°ƒõËïZ„öÍ›×ŸHÏ¥gÙqP*{ÇÃ	Dgi§x¨êlaÆ>Ûhµß¹hõÛè—z¦n>ÇEËÇóú—gý»w~ÑzPS½fÑ_õšåQT×DäÄ¶õû-åŽA‹`b>*š’ÛÈ,>¹ôÔ)üƒ‰Ügµöd£ÖJ'‘ À¹|ZU$ÂÎÿ±Œm™^×ªw¢ÇåüÎÎìú¿a´ª+>f@	Zß×qyí§“EœŒÂt~=š¬ÞµÇ;¹~l÷énúû|šïí,Z¼ø»R]X~ˆ“áíâ~\¿4ì–¾©\ð]ïŠ¸çZRmŸâtšp,›q4X KÃjex™õ€·”õûU}»oõ-²»j®v…ÏeoøLö(|*ð¼Ê¶y Aî¸à.xf‘¤h—!+y’«|JŸ«Z€WÞBÀZâ§h³œTIª<÷ÿ´x»méYÓ¨WxÚÕï[ñ²rû•*d¹W®•;9’Ø^ƒüñŠi¡}“ì`ó¶ë÷Ürÿþ2”GQ®´ãÇSNv.ß›ìAÊUMÉ³§\²ýQî®”ƒ!íhRïµóÌùhrpIÎH­DÅ9IIQ(å‚Oœ¥‰¸`ZŒDPn³.OU‚øŽþèàñ×µêÝ:Mç“âðC8{ý`4Ç·æ×ËùÃà~ägÓœ+‹ùuZÝå`u‹«ÎÇY-é®þ<'T•RˆÒ¢X!ƒ“«Ë8k®·“þàØhoñ=m<îTÒKÞ©,>ƒåâu\,ŸÄçÄ?úâ´»ÙÇŸŸ¦niðÅä‚°9uJCb¢Æj"…AŸ¬NTæ“ÐEN’G 0Œsí…°Ê«À«¾iœ·v˜k›õÊÄ4æß8šÜäÏÖ~t_òP”~ ¼âÎ§@Ã™má¼‚övsÊM«>Ðçoó=<xÉÇñXÏv§ËÇïq
Ýõ€8Më­½Ò™xþX›ö‡µYW¬ÉÍÑÒÌÓÞ&åHÆ!2^ã?Q®£!žÐ¤‹IæÐkm‘$ê(¤Ì©*UP›Å‰/;3®gÚºÕ×ÿ‰£ÑÇÿ¸ú6ŽoFËûÿ¸Š?üÓ™øË¦ˆ#¿ˆ+ÜÝNïãðáöáÿ<ÌþøÒoWˆS]nà1N¤)xÀãŒoÁ/Í”²9üf™Í›–èËÆ’—ñwåqìÛîñÑä£LuÝÍK³:ò•NÖóçÞ¬?î-;ƒoµg HŽqí¶GÑ™VC­ÔÑSÅÑ”ãBòÄ¬„¸,êÁ™ô}‰Úz“QÞ+ºÚÏ–ã.žnm»^aF7£ìØÆÙp<rq6Ž²Ï{c'éÚOgq1ÍñCŸÖ73?|´AK2¿x¹ñÇ¤Úño9Åi›~œâkh‹ƒCj°±éw*°´ç'ðnig;pY‹ÃÚ)|þX\öÈÅ]±È†dHºY„Ì{‚G%c½4Ð&RüS2Ycº¹™ }&aÎä÷!R.¬¯<×@dtãau³þC}¦ŸFã±LÆ+ÛáÙœ\§ÙÇù]=üv¥9áåçº 	Èµ œi	Û‡ù’‘-vø>V£ µøú‚ÙWìóñÐtÓÇ:æUÌÏó§ÝÇÞ`wÓù(WtEu¸%’A„$$Õ|@w˜ïA®±@¬1V¦”F,ðˆ<JTI¹ý8+—®]M£^1çÐ²çãå0†åõhõÛ¯Gh~h`àí…5&Êý[4¨åâ˜Äd;¬˜B3£±¸äˆx{ÉãÜãèVèðñ{¼³{{S{Œ[:Ïžl7ýßÞ„®d£Ãç£pÒR%@fMÎ¸>ÏO2ˆ(yA9e)'ð61.ÐŠÌ)ãl<Ä¤+³ÞÞúéb~õƒ8sÚîpÛ^A? á–ò|8³w8ó±ÑCœLSÂ?¯ì;4ìM¼ëdýØŽf›\=÷Â÷@–oñq@cbÚ¨ìÓn!PM›Gvß„‘Ázp´fàj¬óM>ÿÑí‘(,tüxèzt{êXX>Ï†¡?ŽxÎ‚B¶ú3É1Ç£@;N%‰XáB`<Pâs–˜àqÎ€ÐÑ&†GMªž°8o:¸¶õíúõmGw£á½øéýr²BßÚâ{¸}¸~5Í€ÓÙïÓÙbz3ûß¯Øÿþ‘ÓßìÌþþWdæ_Ÿ™ù¿¾[Ý¤_±á·lRËÝ0@Nt¹½H³
Ú®œ¦¢93ºy¤óÍx°@÷/1ó¥´ßÇ;ÆZw-’p3né\:ÉÏŸ›ãþ¸9óÝ­HvefàÊEð"+N	isj2—ÅNá´×)1¹ŒL{aH^¥„Æ$±,¥ª —o&~„åê‡YŒwmÁÙ qï;ƒ·H·~8.Àì!M¼
ˆÙ5³öiÖ3ß²M>H¡KÄà¸¬@'æ­Âû^bCðá}{=?žzTwMFÆ›©·Ë§èùoæûC^ëÜ8xŽ˜Ül¯¶ÌuÑkZGá<Êqë­„£ÑAgít-òkq¾J“KÓDü·£ˆ¾ XeQÑ?ÐxZ´Îì¨o×æ¦³Ñt9_¾<ÞÀïÛ7P~uˆ-k©˜%=w©¥TLgßlŠT
‰oa‹‰xE‘æ:27ËÁj€ÚfBg ^œ§\ììñì.guSšãv`Îž?ûËn»yw”¯Ì‰ ]í>Ê|dLÇ©µÞËèƒJŒ@°"quð8ËUº•ž@2^É<¥h0
WU[ù';ùÐÕm>ãÁˆŸ-vrm„¾°½È?¨
}U¾n!µƒqY8aL(ÝÜâ{7Ø¼þnVßË8ºü8Ð•uû¸#ÝwÝªzþÐ{×ôníûîÔ#¬ÛIp’Á[«¥ðÔ
‚n°ÔX®|–¹ñ.R „ôqñ„š\ÜD`•ÂÍŸí{;ê°5Xßî%°WO»Ý29œ’Šs`Êv`'5>Ö-ÖI#šgöâXä—~	‡À'°åvº{,ÜŒéÒ‡wR·²‰xöTÃ^õ‡µ¸K5¿KÞ$‡—?>Ë–6œã'(¨”÷-•."M^f\E	x\JÎR/…°TR%4¡Â«¼×UP‹nß·FZM«^v»Ö(½›>äOGã4Û—8¬”fFÝÉÚPZáÛÖÄ+’‘ÆÖÛmÄÙÍkóe=Dš í›Õ9î¥ mÝÕM?6Óï\4ç¶V‰«tòúÂ¯ó£‘üO¾øLÅoG/°GR²N—‚²"‚wÄ*!‰AFÉ-‰B&ë¤^ä&„Ä‚œ"Ep8èªHä?&¡õ>\M£‹Ý„Û‹P"K9§xÉW¨”T7>Œ½uß»P-–.¿dÈÊíèŸqîvÔŸí6j´Ï–0<qx;üE-ú^Á¡‹dsÉD™Õê#L9›Ðf3:p´×xNWC»’qŒï-!HHW‰¿ñèÆ~œLÛ{¥Z¾tøÞSì^ñ½Õp_–µÂoUv*ÿP*I¡r"^P-<×QŽË >XŠóFà)\×þž íþ•† ˜² Àþ¢On['èBqŸsõæÖÏTµdö ƒfQ9G8:¦4j)çB\ÅÏšœ™‹?bÌ™A[eyÄðH´­ŠÚ{5›âm¿5Wß®Wúwóáx4Y~ÞÎÖºÓÙýØdV¡:Í$áÅ}9ÊWr[{¯Þ<=ãv6Ø¼ûÁú­wšzûãÛ·/¤:}¤ÍWöN”f:ûº¥‰¸¦êùã¯¿<ÜÛ¹;ê VFÕs±hY"TðN3` uÖÆ œÂt6EðÖx›ó¸Œ™|šRôãÌÁ´öU)¿><Dœ[Ó™ë@Á{Eáó*5wâîà=«ìœÄ*Avô•%É¥5·O'²tkó½¼¹l€´-r¹©¸U}?þh×Y¼§ƒG²Õsõü	8wý!ðˆê#›Š¬eÂ†ŽÈ6f# ‡½]©@ÿVúœÖÆˆ …N¯Ð^JEˆ±>1iµðÿ(T¥lG+îÕ,NÇ­…÷š´î•}wÓ»áxz3z°÷‡øøžÆ(°òøcÉõŽðrþS 
dsúåš¹Úë ½Ïœ’v¢Ý.Ïºç*/íYw Hé¤<ÄõW‰ã¶s%Ê!tDœ–6„hƒ	QGƒÄ?I>BNâDö2qÀÉ›£@iÁ)OœK•ˆ[NnD"Oêö
¶{{ó1+K­Îk×ÓßæMÌâËõÛ'®8±•\QU¤\öj9)„Û	!hG7GØâhº&1åÝ§püíîæÖÓ¨š®ç¿þ"o;+Me£y#øÐ’~Ñ™µ:*Ï7IfˆÓ„ˆ@#Ñ8YcÞØ#Œ+b¤@?˜(nƒPÚQN|UvÙŸIøÕ·ëÙ¡-àîé,cŽÏÿ~u+õ Ü•Yæ´BlŠjÉÌÎIPbÛÎÃ+Dã|ŠÛƒõ(èfê]^fÙ^‡_Rhê¶Vhªrzž?íú“šW5HJ»VÒ.)ôY%’I8í5À£·Ü‚ŒV;ˆL#ÎBg¤UFFN™Lçn•äÔdgY’}i[OjÚ¿AÕnþáõw[·ò¿¶nö÷!Õ³x3šãµ!5õ„Ü—b†r!zcV	·Û"¢ BŸó3š‹´Œì`3lÚçc¼Xöíq®pi¯çdwÑªÑáÚCUûìY9êO¼jÔY¼êñ8Iw–f˜ÇÙ«¼àÞ£¿Š
ôƒ™Â°$5UVRk”u]6§Àzš“wqºç–•¬ÓIì"Fz¨åy‘òé^3(Ÿÿv“û©¬"q
ºs\B%…‚f)^ÐÍKGa°3— ÑrS²´Ï'0'I×ÌŽQ­žUíœ>Lö'k5š…ICVÅ":Å	Å8)‰Š)©lTN	2;Ó:‚ôœ+‰:¸\Ï¥.:CŒ‚èªd~ô1«Á·×ù;Ðð\¢ó=­^[wì9èòé\>e×¯ÎùÑ…º•xE‹æö£ù`38."PðDu<J;þ’ƒ£ùA(VÍàó‡â¼?(v>4¦ÏÙ1dj]Ô–I½ ÀO©OÜ8¨CGŽ–­|ÆEÂ%"záZ¦ä¨³ \i"ø*ƒq‚w1ëšõ
Å•¿Œ^òÈOÛ«ìÓ—«´0ÀvËå"*{ŽÎ[sƒÑb€£`°÷þ/ä ù81ƒÊÎŸ@öYvŸÕ)œ²çOÂþ—ïîº.CG»ÐJ/5ÎY¯­54ë¸ŠŸñFä¬ª“£h¼Pý Êå*/D€@u•ºý_ì'{×ZÞ¾®ÕYY„wõe=ø^ÒååûˆÙa"Í%£L!mŽ¢EØ|+ñîn ùˆµ›)¸¥åwÁÍÅgp¼UÈ:[…wwõÇÌe÷ì!xw×ï»CPw­oIlJÄ‡UÒ\ð<ë»XÑ¢ìm *DËMàÞi³$B.bÄ‚&!Em|¨‚àí}œµf`u£ÞõJçÎ|ƒpÁ½Œ8&Ê^¦ÛMtw¡—÷b¡±Ã{w?Èoº“šËçÕ>x’>’e…ŸÀÃí¬‚pw_Ï²²ùwþ,»ïe“î,#›ðrÑŽf†+abˆ$àÑQN§`ÐF£!âh°`iÉ#éTôÞ:
V)­¼pL¥I7™ØÐúä¸¶Ù¹uwë›¬§Þ^¢\U0ÅÇ¼%­å²XÄC1Ãšu“•2 ¬GÃ%šu'Òªß}'Pïë\¼ünRÄòI|þHœô‡Äi÷#õ£Ô’ˆ!i´êä}%’{…,Ã#¨8i|Ô1	HL£,øX U„™Îbû-¾ºV½«ÄÜ.ÝÐOï×‰Á«NáÙPfíÜNk9(ö’E˜¨ÐC`ÀtèÍTaò%ÑBüên:X…A[>Bï9’zÃÄ‹so‹àø*æ²³€éÝ´þÔ£tÒž?§ý°s
	ÒçÝÝRå
¢<aLDÇ¥BMP’0)O*—éu)2ã‰0!£ñÓÚHÐVÞWp9ÊXÖ6ë—•!Ô÷W·r·¾µzXì¥’PYIÍ—Eÿ -ÉB¾Ãç‘Ü-ó©'Ö ­ûûL<vÉ{{ÅGp‘¬Î¹Âwµ9$óõüá×_
ÉÝQ)$Ä¾©ùÔÒŒœX’O0Xàà€z®­sžSæÁ$¢´\qÆ)ºÉ2%4~‡#IVEÀüe4»¹}jÀºfg§Ý,öRG@—OÀî†HfT¡‚¯Dƒ¯9ð>6¯¾«÷{‰Ú¥?Áîë|’q0‡¤r~ž?òúË#•G, <=Ò–çš¢+ˆQœ'‘´“„¦¬‡”’&ÚSj´±V»¬åLÑŠx)#*‚F+±y¯qÆ¶v{kË.àÊû×ïŠý^îýr®ŒÜ=û†sQ8ûDéÆ0¯ó%Öƒb  hÿ¼éwœÍWÚñã-?ÑùXw|0Q¤ræž=Çý%ŠŒÒÈ
Ùrè¤Í©FÇ‹Øˆ+ w2ùdWÌÆY°
gw Fï%ÍùÃ,DA8št„¦ªFåëå‡ˆ{9»éà7hÜo>ñó.`œÇËzðíå|0ZžóA3äŠàÃ…`ÛéÅºyyÊñZ%jýú[ËAÿë›×WŸÛÏ=‘XÖóã±KzŒjcUÍÑó§^ºXãÎçÀdHh×ŒÂb”€Î¬3A†è½¦<Zp>*“¸öàˆ6‘9Žòä8õÔ“ŒU	ã¿Mnì¸õ1pm³Þ›ñ7ï5px÷¢šY…Xãrç¬Wk¡·m<mhó²“ãI‡¢—•Èq¤mWìòñ‹:×ß×çVÌÅó[§¹ãÎ¹0¤Ã®‡’9¢¨1ÄÊè¤µ&  FƒFØQÆƒäêèhÌõÇ£†)*¬¡¬Ráu>µ]$aµì‡oi…7ü÷ÐÞ‡ãÅõèé¥`Û^ø§á{ù©ídl0…ëûvé¢|Å¨æ€[Vï¾ý	Æ·o¿»´£ŠÝÎž"V¥3Üj3ªæãùÓ­¿|ŒqçÊºÛåQZ*Ù›„ls`	I­ˆIœ·ŒK†ÇÄ˜Ð)9-=WRà¡É ŸJ•¶Òl³‹w]ÈV×¬W³-ÿ¢ax7¿;@³bXž&¹<]9ÍØÊñ)ÐmÁ
43ÚÞX`üî±`OGåú
ÀÛlšîöú'°Ý©V[?·böµ#ˆso[—PÛî*t<EÜÐŒ;“´UÌ)ŒæXg´CÜ âe>Â8„D3ê„ªÊøÉ¢]4·.£Vß®ßø?qx3ÞŒã*Pî××îÖâ³»¹µ³•Êüúé6‡ù¯õŒÚ“—G+´|ïá/‹s¹”CÞbÉŽzcFá ZMWø;¼÷(N`Ñ®èÂ›9Ä®²	}öö«7“ìþæHQ> ¦£×éÑÃŒÌ²¬žÂ	„(“MJGëW‰aI+å-S6›òAqf¨T:#]ˆ•Ä`çÛC²®ÝKDØ‡‡ùðvq_¯B*‡ËœaQ<?EãN4H	Ëš‚ðf°Ý"è.Ob¯´Ó§ðC»ÆÌÝß4Ø+Ÿ¦ç¾›þÈ×Ù2\=RM$#%ö¬fè`ê,†’OL•0RXÃœ•Üjâ“NÒàÿšK”1zT'æ¸¬”ŸÿÉNglÃÊFý†+e½C‚zõäÛ‹fJ)rý ¢£Ê?•³æÙc÷£ÁftÍûÌ)§ _Y§_Ôà«µ÷j§éù“¯G›¯³,Êz1Øèµ¶ÜŒ³”ÙÄ¹àÂ{è#;ê@¥AjÅ$®¢J­@I½æ„:j’x²¢’|>†i—“†C-Ïžûô²|·NPNðGóÏ0"X¡Ú¤a°±?ŒÁ»ÁfH´¯6‰¼ÈHâÒnŸ¢ÄZgÖj¢ÔÎÚóaÒ(÷­Œoi×³VF]@–h˜K‰8n‰2y§r¹k…fžT„qy”Ô 1hhb!X¯	ºzkpl?âÿï»¸½µ{<‘˜¾ŸŒ§6çö]Ö¸ÞL–+â“vŽ¤™ßûë·[AuõGr/–˜éò:ÅìX„‚3ÐºGËÕÍ‹‹ß¯jmwL$»¸jÅÞž ¢³@Þ}i]ñú™zþÔë¯ªøýÁs+‹ZmöZ:¾Ì¹˜„"Är>‚°\É¨BÜD¼à@:ï¬Èg%Ä3ªh®(e3b«M~šNn¦]ÔA4ì·îÚú®Ì¿ûÉzþÕ±m/\˜“ò’’y—ÔƒL„Ê"þÛQùŠi^lè~2Ø¼ü‘øÒ>Ÿ tÅQîDÓÕLÎóç]1u÷Ó£Tâ l¶Z–Z£Š¢‡…Ÿñ`ˆöŽqf„LÖ2	Z“à"ÉÁÄRYá™‹”¥­Ê‘ýi:Ÿ·ßé«nÔ»žE¬/gw£‰]…
ûéd­¯ßâûk¦Ô5××y,üGšÕCp?ŠØ¨
É(–5ß·!hÉBÈâÓ<‡Ñ`3:–ü¼zy§€`i¯§ Q]ÅðŽ¦LTMÙóÇà´?]øûY[BIÔOÛ,1í­bÂ¼ÍxRPÇ‚“‚EÂZHA*DbuÔÚLD@ë„%ÁLõ†ßÌ.n;vÔ4ë]+j:M—«Ï>Så÷í(¿:¼ÕÆË=qd®+€¥ÞÕF€Ïz{PPh^„÷~ö·Ö6…ìE£õÄqD,öùÒðåCïge$<0kÏŸ³þx\½ ëŠêxò¡„¡$9“l”ÜøÈ5hÇ˜ÁIj­þ
f:ho´dÊ%âMˆ.ËŒÖíûuÚó»ÐóŽ}ØA9ì×»jŒ)èÀ³¼+ÞvóÁft8ìøÏï^¯Fúg?õ8…XÖ÷ýv.˜v¸6PÕl= öhvÎ/[ÙÕ@8<Õi+B´1ÆY…x#2¥Á*¯˜
..eAc1É#iG.Gý9ªªù·ˆóØ€ÕÍúÎž]~ÈÞ/®'Ó¯%­'ÞžL2çµ!%H³›‘d	RˆtÁK\æFÞb°yù­Uâ_¬î‘À+éô	x×ÝÔ«M6«›œç»þÎ&­ÕQžŒgšƒÅ;fœqpH2—œÂI9™;\ŒšƒN<ƒÏú@SpÊ3¯#@‚$:0¢êˆ÷ÛéÝ½µã¶¨«mÖ¯¹gÇ£éâvðHž!Z²#;Ù9à]¿§éì}¼Áîý½{i \—Ÿ‰ Í
òE4fÑ¼UáæP$ç<7ž¸Áz˜´NV{¹À—ã¨8™{|å”Î:É“Rå”Có÷ìi8éO5eŽp»¦ÂA.ŒÖ¡8´Ö«’áÊ)ôsU\Bq­£‰Zâ¸ð1ûÃ²:ývú>—»_½µ¦í³p´îÕ
´Ïo¤ŒŠÚOö´”x—šâ^ŸbRlgæ*nš·àŽÈx{™¾ã¢üvº|‚ø¾Î!.x+c\.)¯{Õëbç"¸ùSÑqŸî•Ð^Ñh€¥4	Z:‡®¬t:<cÑÓ(…†XÈ»6pc¥ZT…¸ülûÄßºV½òm²úÅžîs _ýÖžÚOç¨²æS;‚x†KC¶é†«‹i¾·7‰ƒ§÷Þ~gï¥J^‰·ý.oÎQÒ5„ykËÜVOÊóÇ\ìr˜éÆ:ÚR†]×(kˆ«…†`ÑòùÜÂ3`P)„Wšjê”µÂ:cBR^Vî»åÂ·ü¬iÔ{LK>ÇX g½B\œÜŒGóÛáÃíC=äöò5+×ŠRŠ1²“¯Áq%‚Ü1—mv'ãA~ñƒõ+o'••
^½|û÷KÛÊÛéôñ3O-&µ¡Êsòü×_¬ò¤u¬ò)6ðH$*(–\É‹ÄiçMÐÂ!Û"#È¸$¤EƒƒéÀ¥‹’‡è¼u‰‰HŒWUþ8™Îæw­¸ºf—½§ö6ª6ð”–r'v…&¸Ú¶ùðŠ„>íäËþÝÑBS¦ë‰Æ¤4šùò÷ïúdž´à+Ö²	Šl©}Œ`ã‰D•¬E÷–GOrÉ3Êôle–	B -½)€ &0 i4ú``M•Wûvº\ÜÆÙäêgD¥-›µï—‘[õ0v"[âä¹Æd}ƒy¾áÁúu>¦´Õr/à™ër¡+tŸÝwZÅ]dsøÉl°6íå“_âÜ÷T”,ëùñÛG˜¥q~&÷ùó²¿h¿ÉüˆÚ¸«gJ	t&£RŠÊ¢•‰†àƒDKRª ¬`LÅ@Ñ¦díGÃµŽ¨”¼ð-LºÒ„œÎÖÀ{‹vÙ´µ%Ù õ9Àòñ6‘–x›mh¹H*ÒC@J ;ù¿ø-¬þ+e×z>lFÍeðòDzóå]?A´Œì¼™8?PD·fvŸ?1çýÕÒ´.'	ÏÏ´3+ƒL1—>ÐŽô‰im”‰Ü'KTt&ðh¢c>"ðÍ…<3A©D=˜*9¬W·#¼þ¾ueúv/][m‹“È)¿ºÁz(î«ÓWDL3nvRæ”ÆlKÕ<np’ë-vAá"œÊr,vù%µ±&¥Å%ÌÖóg_e%§¾»±(‡´[T´@"g.x+ÀXÄ›“V®hô”'JœbÄ"}9º×0åˆÜ:tµV¥üÕûÑ¢½Bm³žwCÈÔ»Ÿ~Çö‘tƒ_ß^'=iúaýëÌ\O»b´´¡\›r‡ðYŠÁ™ÚNQBæ&àÔVC¡uŒô ïDÉp;]>x”wÞÔ×›|¥sôì7õýïþ[wAI“Õ]¢0‚²¬‚¥-³ˆ²˜G=Ú|:§D—7ƒ£ž+œ¨ž(htU¢ÏMï[»Ã5ÎWîYíÇ<³
Wq¶cÏ¥‰)$ƒäJOÍwŸÞ-ðòOwº{ñ—ÎÇ%Óûö\ÙŒ<¼Ý÷‡·—; <˜`©+©ö‘¥(‚S#RŽ3ŠQceÐQiILZ“(ið„*Ux£Önlu›K:Ð{ÁÏU§ÅhEì?s&Ì¶eÇ¹â=ÙiW™ƒËÝÓ›žZå {¢ÇôŸRå`Úß¹Çƒ}ò)âœåX5ñT:-˜·–'	è²zÊ’
ªxÎcBFg¥ˆàu$U›xo–“?¬kø\Ûìbù· -XEÅpd'ÙMr(¤º©çl„Ãü{°—Ã¿X};Ý=ÁÉoçÄûÏÈ¾ÛûŽt¦²~¢ê¶•—¢×&Ç	FBµ0Ò â Xñf©’á¤dD
6çû:m¢3„1î+8ÍqÅ­ùWÓª_üÍÿx>Œ¯çãéûÉèîz:;Ñ¦÷¢«"\ 4Ð]¬UÀu1‡ëÆ1€ãÁæÅw7È¡Ñ9$p«˜[þã7o__Ñ!yœ¼ýæ5ÊÑÑLdÝëî>Ð{®žÆçÆþ"©ŽS~a6Ù7¤¥ô‹1=O„!$§¨Ë™!6IŸ… £WŠ0å%DÇ:Â*8ðÞBTu%g‹åÍ²ƒúË¡–½§Ž¸ÙÖ‰.>d¼ŸéÍÌâ¥éµ³£¶>ÎEï…MRžD‚¶£{• ‰Øf&^Á)ÓxðáQe5&ëÑÐš_½–B}¤åŸVs`MÒõŸ¿^ýyS$s«z_ú¸"™¥Ïëh‚òîb2‡Ådªæûù#´?5™,»#ôY”»¥€4CÚm€G°‰qásFht¥):Çò¥3„u”º`™S„–¤ b+Øùÿ-£¿]Ú«ïýÒâ$iÐFÍ_:Ræ)Læ/#ûÞ¾Í÷×$ˆPïí³r‰ÉvÏW¨Šë))Ò¼øù?–
Ó^Zú›’–>ÎÍ.ööx/[w>[ùÇ²ž‡e“÷ìAøe ¼=RFpµ=ß	ˆ¸Ë1:ëæÜkkeˆDû$¸&4Åèðï4éNGC×Œ2ô…r´ˆÿqµJ)¹úýçwíÏ\ž¸ØàKz·1gË‰îG£Ž?ÄINQþ?+äáï·³Ùt<¶³A¶@ë±¸—‰" ‹ Õn`0‰6þöù^Ñ9º1o›¡Óž—¹YÞë—¬5ŒwÔ@‡°|v_ 1o{Cæ¬s*
²¡ê(ÕÀ¥ ‘Z$‘TPÇ=“6xóŒ	ü±ÐŠk%8ºÜ+¤ÒÖ3ôÈ!1Uåyÿ×ôÞv)¶Yß®W"Î¦«_ØNm«„y¤<tZ(	bÇ¤l×Á+”7?u™M«wß^­a³+¹µAùèA¿ÌäqÜ}'°y×\¼YmfIÕd={öÍúË)™µv›7QMÆÜˆŽ†"±\{î#OV)Ås	¢fYoKçf8c-ó£áˆTèCã9>VyÎÿµœÏ» ¯®Y¯ä›ûéé…fßÇùð~¾Î—Y­æz]ñÝáˆC½—U'dy™u‘×~¾—„…ªšxErÝØ'ž­¼Dí¾oß~wiZ5{½=AàMçmÂY©[|prž?ëúóŒgï-0Ò¹¶&:Æ†XJ#(^æœb®M–‚ Ï•ÁÍ!¢1h¸	žƒÆ­°VWUZúËhòÑÎÞãlílz¾QÖzOt_ðòPÃ¼XDž”EÙ™÷ ãîý`3:Ú¼8±ýÒNoäñÎb„³÷Mª‹\f¥ÍÙûÞè7?"….+<¢ùðœ•Ø2ü0hž\ÝYjOÒ¢³«£²ÞÆ©wÓHxŠVY$¤ 6*å•‘Câ¬ªÐæ[;£.®î†çr6’ë.ýž_[KTö+ˆåJä¤°óÇ…"Y¸k³ó‡WTó3‘¹lÇ ÚF ®Fþý©ðÒg–i=QNé38L»:Áó¹v5“ùìù8ï/ãnÞY”žã<ÉøÐÅ…m©ihÑñU	ÍgÑ¹åQ“d{gµ“AI½ß˜˜Ñ&Yñ‹…H¹ÐÖ
Y©Ký,)cí}{}ê­{?(	£wï–dÊõhâ‡ÃÆ¡ÙÏC‘å@¤†+º»/(	A“|[i&_bªy5öyÌÊƒâPh›Œ÷2‘4Çm–wüiy]«Ïke«ë§íù£°?åêùíq¥8®^ºãÎ çU’©„˜B
,@¢A%pÒ£2‘“>0Š¢O9›–°`+mÅÛåü½}hm)Ö5ëwg0ú‡ø~1œÅ†Î½½~?…ñh^Ÿ‡böóP„.å³³¨W§¾ôi£uã4ƒÍÛÿW9.ïõñÐcÝc¼£ÃòZôü¡wÛ_U’ùèèmŠ¼´Ü4‘‰@8IRÖŸ
Þ(–Ë‘  Ô€Qš¥(xeC0Ô£?í5zÔ1ˆªÁ·£É­·Þ¬mÖ»±7Ï»‘³%ýôþ:Ók¢¯©¹ž¯ïª(68À=x ©Gâ¾¬?/Ïb¡œ›ÜdÃ€Tý£´ù9ñ|4XŽ•ÝÂÝþžÀüë,:3 aé¤=ŽúCà]÷ÓàUpÝ,+m£a¢†H”TEf’pQ(¯ÎT­Ä? ±BHÈ5Š9B`*'´Æ&_)b=ž¾³­UýëZõOÁ»Ác8ÌÝÐBÛ~²	­ –«-¥‚F¿TÂðmƒ/GêÛwƒÍ{o	³I ÙÍ$y÷—G¾²‡q‚z&ÝñwWB\3aÏŸwý1ð¨$e¢Ðç #Ý¶<&ˆ·D²Ü–Ü8tkU²š0îƒ"„Z0ÖŠ¤&…N^Qç‚ñŽäò5ŒÎIêöJÂ´x¨> Yºë¿â¥¿n.ù)Žš‘».(9Ô£s/•D˜ŠŠvD+#wª=ÍT¡¦^á¼¹ ë|¸»/ƒõHiYäd+†ðâÜæ²ÞŸ vº³ŽÍü`ÞråÌ>Xö—¸<¿ÿãåNMŒŠ-˜h‰ÉèQ:¯<zÇyk_kíTr)PfD t®Sv©z«¯¬^¼Çn'&‡ZžáiÉ~µ äFï¨òK£„&…p£TÅB>—vXrªSãòžŸ Ž±ê|ZrÿÇ?óqÉýýQ°sþH	¢OJ¢ÐÇ¢.’D%IŒ°(€$Ìkâ“2FFF€vJ‡¤œ®J¶{;½ïPÌ¸®Õg)ö¹ž,óÕm¬%ª×Ì	u™`·£Éµa0·b=÷Cª+NP€°¬_ð©A)º­åÅÀ0ÖXñf>]©[Ñ‹8>9‘šánŸO;Ó9ªº¾4IÕl=øõ—@2ÿGwöÉ!ï¸[È¨J YÅË.¢æš%ñ‚Y•Œ–1—Ð}V&[ƒRI)1B{ÃY•§üÍØuÊ«o×ÿŽáí]œø5õîäèÚ>ÞÎFÁðãïø‚¿ÿ¸º¹ßã¤e¸W™D˜ò8|èd·²NònãVð)ÅóVÃ£kzÝÅ›ìô÷v íì
ÿ£žå³öüøþxTíO@“mS°¥|hh†Pôq¹Ò„H¢1Y½+1“4 )ˆ#Åx)±Xt>	#±ÉB•ü6Î\—ÃºfçVïiõÊêè·Ÿb"ª6Z×Å3c¡AØÎ.Æ+Æ´Àßl°íE¼^_®[\Öñ£aHig§Ø¦©œ¾({°lhÍŸ;jû“Ïž™xD™eE’³&{ÎZfŽ* ÝE"³É€[›œ‚H™JŠò€>¸wšŠ4¯Bí{dAkÐV7êÝÚ\à<›íbEÕá'{à˜e/A¥Š¤zO›HRPì*[8ÓO¡y—S$ùT¡Øe=Ñã•1‰—Z$yÞcHâQº°GÑŽ2)­¡à”Îñ8Fj%ó¿Á$"PHÅÑ¦I,Q†pæ(F© =ªò,ú©(|§ÉMZŸ?ÿL¹4Ã•d7Y™sUHVæ-â±—K¿ãêÞ•öüôƒÎ'+%]/˜~ýIºÎßu¥>‡5µÁáèK-	ÓIGãÐ—f.¢³LC¤R;ðD°Â9¼×ÎÆÀkÆfh«T	Ó¼}C‡JµÍz]˜Ï§èI×²Í½\;U%uM%ÐMBÎA*%
uŸ@ÚœpïùEÚÆÎ\°{\èññ~±ì\ûdþ®iåóïüYö®?–«=£áYÐ¢mr1ñ‘Qéˆ#ÔP’ Ã‚b <gÆG¢‰ž0Iñ
á-¸hŒ€(Uå9ñ{{;êpP\×¬wÛm´àr8¯=ÿ5d/ƒî9u7]Ÿafà¶ÉÆ8eÛ’	Ê›#íYlß÷ Ú†Ã\²ÑVÖóƒðÎ„k"3S>+ÏtýÉÌ,^¢¾1œäŠM‰ÄdHDÅ|Ø>+XSˆ$z©Üò“4ŠïMj"r±nCÕÖÜ/ö~4n¸šFZÛÎ½,UQ·ãê²)ÍS¼ /W´h.¨°ø×*p·8q;\Ð»*É,þ)Ü-ú+p·h­!søq­$hÈBªZS…·Öæì9’*Y ÚKƒW R+•´Ð»Uœ‚VÙw¿ÄñòfÙš~5­þyð'uy@  EÌŽ¢ŒÖŠvñrXº MÂEìŽ¿Ï¿9¹;>…Èj×»E©€ÌÅ°?å˜E<îÄ"7êŽÙsQÆ¨Iä1EJ³„ u:²Èu"Iƒ¤Ê¤„-eÑ#hrïóÄ‚f`UÏ_âmkV6:[]UCö’AdE	w.²_UIYaK%¡®*ŽšÆ¨î”÷¹½“±®¬ç'MènóÅÃ‡U³ôÈ×ßiÅâ¨²K$‡äÑŽä3VžEó»ªÝIò_ÔžÐ¬ðisÈ_$.2ç5@(CNzJU¢Î¹ª À_nmëí½ê6ýZïGw£Ý€¿|m%¢º¹í:úí¥}(V®¤Hv¤•¢ ¤@rÊpS ®K	­A{þ½è¶ßqå7K{~‚m¿Îåæk(UNÕóÇ_%”ÇˆgeA2Ð1ND½LEEDI¥Ät À%:¼‰jC½ñIX“*iÂpjò (òO_udûËèf6º™´–Ðªo×û	‡ŸgËád|ý?.K\ß_ßÄøi“WÀ½œEËs>¸d» äÌêBµw¼²ñ½@p4ØŒ…N	p—·×WÖåˆv>Ö]’ÌªžªçO¿þt³GèfÚ1.1­G{Ï%b‰Ä	."ÎX­„7hóyÑçÅv,Ä U4N\”£–Tqo9»ÃgÒ{uÍÎØçÝKô†Wù¼;…€f…º™hn7O^dÁ(B/"ÅíDµâvº|‚*"KÅ-¨c•NËóg\ºX‹ãt±
%YZF°j¨¥L¡‹¥# ,—ÉÔ\EÅ””ø'mV'ÐUB×6j¤qÄp&«*eþboìxzÓþ€·¦ÙE‘Ž•K½#äŽm'4Àö-H7.”ê"òrç¸e>ÁÎ^gaèÅa‰«ªIzþÜëOâj19*¹W¬«î¬iKì£¤±‚DNuD–!ü4Ë¢"¹à4¥Î;}J)håŒx¦,q ¢UØ›¿·ÜÚšVýníÙrZïýôÓh<^‹ÄÉà×·×OâÏ«\/V7XÔˆ®_†½ðe)ÊÝ]ÐBñÝ@?¼"~šCó#É`3<ÐEöê2<Jú}Á—Î©‹ÉÁ4ÜŠ|þLœôÇÄ‡#¶ûˆê¨uE8UJA" i‡ó–gR6R-ÇË‘6
¼Çi÷þ„2¤ò€wzwõf4µwyë¾´ÞAœ<K,¦wƒ‡|§E<ÖÓq/º*èO0Áw
ËQJÍ¶
PÆZÀñ!ï‹Õ^ùàÀx
Sq§¿Ç‘v÷‹l–Nßó‡áC»Gi¬ä[Ø¦A;&jô‚sUt%ƒ·Zjæ’p†&rÎ‡žy`ÀHpÌGžÑä¬´I)“…jq:¹é`#V·:1ß`+q¯vHU2>f½“Âp©RÛQ1xA«ænó|°=@Z[‰/q,|ªÂÒ®Ÿ`¿Pwæâa!˜Ê‰|þtìOÂ`Ùúhd£4¦ŸÃ+[R)èÐ6ä<p¡)·.ŸZiÐF$ah4ãåpÒ¦hÑÕö
/%MQ²‚Š¿ÞÍl§‚Ãö[Hn5OðýÝÄá$.žlÂùõhó‚ê ¸'“/+t /SÉ—²@@¼’÷l›"py7XƒN2ÝVÈñê"ò( î<ˆì#ê®gÄËÒ““³öì¸ìïädy„< äõ[¼“*‰¶ÎZ£Lj­DÓÐ‰3›i¯Ñ¶ŠzÆó–ähAÅ1h²¨Ê’Â¿ÎBëœê6½‚o‰¿v#€:ôÓñ…~ÈÅåê‰Wƒ6”ëŠmA\î÷¢`8 g¤PR(§C—Yyq‚-'²övú|3uÿ[å+ç·þù–ŸŽ€[Çš™ÑBb,(‚-ÎX‘÷;˜dø+£¶Ž' 	MÔ#à4r/âT4Jx ê<ø×O.¶.WÓ¨ïX¿ÁrgÃåd4p³ü.‡!^ÿÏÝ½ßÎ¬»^æäšÁƒCEƒW5/wOB*$¶("RRšm#*F›«.?åéÿ¯R!³ØÛã³ÛHçì¶å§¬»Äê˜ËO½¡î]ëìÞ“©ñÙÄ“pLí¬Ô:FE“ ¯¨e1X¹7ýÙ¤ë£DÚ	PàúZ†DSA¼ßpµÞå«iÔï&ßÖ™GõQGžã¶Í1Gã˜gAøNn¯á´ _e#k½‹§Ïwú•öúÚ|¦+ß•¦øþshó½ë/Ñ÷ÝQù@	Ýmo/iã%u’*ÂhðIfvšpôI#CB¯6«1.r1Û\%8-•T9×·Jîà·Q\äÍckhyP|¾Å5q/^PAEÕô=,N‰ÜŒæÔ4|·NŠX‘nGÅ’.Ÿ"T°ëaÇ»ƒi U3øü™Øß9ðûÖÒW›'Ê‡ ºÉ¿(Ï”– ©§Áp–´æÌµ A429.¨sÒ…àŒµ:9™’£Ñá¼®àáãTžN[ŸtÔ6ëÕ!ö·vbãð½O'ëôßü§k»ºƒ©o%´«0•Þ“xÉyn…RÀLRÞxÇï½¬ßk…—-þ»Ûá—¦_*quh^ž=åÞ÷§qõá8ƒc¼`©“u‘ÀCÃÏF+¬ò‰ZÜQ­	<I)H0Nzü¨’`^H\¬b•ÌßßpÈ¶ö‚kÁ÷!ß]/xO¥¾ê”WS¢wŽ<r*È¶†2ÓØÜûp{q~ð‰Ž=J{~vÞüpXûàb}áýi|ììÃ&ZH´ÌÑ&A"Dª³aÇ½ -Ðô£à8:º.ç™Ñ’HŒò¨x´8á†_Â¿BúÚfg½*ý–_W
é¾¨=-Ï“ch_ï”ÿÅ¿ƒb²p¢“w?ŽÐýƒÁz8´Ç`ŽryÙx—xÃÅgp‚ìÎAkýàòÙ{ö$üØŸüiyÔ® !@»ž	›(­1èü’ÈñšÈ‹h™€ÊöŸ€ “¤Ê"3É?HZZ—š†©ª^Ñÿ]Ž[Ç»T·9ËðÞ\Ãîe •]NCEÝIáŒ	]09ãT7v?-›Ñí€øò²AJ;ý’EÑ?-îVÍÜ³‡á§åÉaø‡õàf¹gâÐø]òFF!Ÿ²°[ja‘m©#Ê$¥¹%Ér´øˆäÖs¦%Ç<â‘tÛzÉÁEŸ¦Rë6^aÎÎc¸Zõð
_éÍÌÞ=ÿS5	øõÇÇ6‹ét|…q8Û£ÉÍRn±7Ó‡éxzóÉ±~ÖØ²w™¬ÈÁýÃh»20‚'÷¬*!D	!ÛçÅŠQ¦/IU@w6
A¢oVPÈ’šÂPƒõÈ¬e¢ÖÃ©	¿}ûÝ¥0pÕÕB7Ÿ„¶gÃ	0Z¿‹¯ŸépàsãyÆCüÚ;üC]«ç×yÀ´,e@ý7~Ÿ¼äêöÍGzuã‘›w%__ú7üø|:”_ÿékÉÝhQ÷pñãÞŽfÓÜ€6l°ºûÜ@4l0^„qþ¼jøùû6·ÿøá^ÿøí«ßéE³v“å½ÍM¡áïYdÚ6¾±Ùb¾þáç_ÿó7oÿ|è{ j÷ûKòLÙÿ÷z9Ÿ]»Ñäz=pñÍWX†ÆËðK,ÅD„H1oÁx‰g>J•xˆŽ¥À‰”š­@ÛˆŠNIçãÞjZ©ÞñfÝ£ÕZºêcõê{õËíhþ´]ùédasË‡Ýo®?8šøñÛã×®Þ¼úñ*›BÓÙbõ÷^þŠ¯ùÃýøéÒÙ.ÖR7]¬Ùžó"Äª`áóZ-rZD£¥úñY®;-×Ï û)ÛýÄ‹êã·¾ÔÂÚ~õûÛÏ¿½ZÌVËiÚ$~X´ùm—¿?²ÞÇù¼ÍM!]h›E|óy\vþöÓkŠ+2Ò½µ6i|ÄÂÈ¯‹–=¼6{76ÞO»¯{O'<èÛ›ìÞkÂAÜŒ-k#Þ›dÄJ9©ä©Êsg&•ýS®Yâ–±¬NÏ£ˆdÔJ§¡J–þÏ¹‹ƒß®ûˆ‹Ð(×]ª,8™|5MÏŸ_ÜÚb=^Mbèš¾¿“«×£Éòú¸q¾ø
×ÂÙr2É.*>šÿ!`ßÏ¯þŒ¼z?ZÜ^=Þ@ï>ê]œMâxãÒEN-¤ÑÛºù’Ð¢|‘JTÑ#-$ªÑƒ§…Á5 ƒ²ñÑb¥;Q¬ÞÛõ>Â÷“whùOòÖÍõwOã¿·¥¯Ñ£8>»Ã´>Ì-ÜXíÆÝÁIÞà4Y›ü¢#œÏÕý$?}øzëîÝ»‡þ¾üÝ|~ô—Ÿ~í<NÉÎ':§YC¨“Î¦>ø\±:m”±Â{4æ#EØáêÁ£(ó&Ë[«˜&hUtãëußò²°¸W-—”WO®Ô¸Á×œË2aš/øeqãRKÃ
>Àn[–Ž¦*R~ö ïo6›wóëõ
rñ«m/ü_ú’NóÎ0ÊçÝåµN‚ Æ)’“4Â8KŽj!ëµŠž)ƒ 2Yi+¨”ŒöBäºÓÂäàÃjÖÜ³Õ&Ì6VÖgÍ¹ò3vVeuµþáüj9i9.ù¶ó "…Ò"õôÑ°c¤R|êÛÙ$”ð¦¦êêI}aNŸÌáªí¹òÖ«y9³qµÕŒNyüýõÃØ.òË<|\ÜN'7ªçëêw÷n9ßlUïdõß8Ñ¥<jO{ËÔ}Y×žF)£O^âÐCÇ"éÐð&¬D%ã­§ÎkÀéMVk`„Di,IÎUÕyb×¾úë›¿?šQÕ<üóÖã¸e ^îï×P@»,?í«ü‘«ÇøÀ«´œ¬#rÆ£ÅÇ¯22×Îÿ˜Ûžÿ“Ÿ•¿×7ƒƒÞºqœ_åi‡^}óWvý[¾žâ¾úí§o}û'äþ4…[_^ø¦4šå_oFÈÙü«ÕÖBn°&êU˜!ìfÃ«oþwèçWa:‰W£ÅÕ{;Z¬WÊÙrÕ£ùWi6½/ìXœÿÑúlÎ“l‹•¥Ð"-=Ë›àÿzl|Ù¨èàÐ:Ùðsøíë¯ùMŠÕ¡æü!:Ë¸æ¾Ÿ>ÙtæT6û1{Ûë@žÐ wOŸ<ñ>ùþš[\*]róöÏË.¸!pÇK`Ð±L F%Kàp©•.x­åBóÈœ¡<oª§…TUñþOî]üxõÎŽ—™Ã£ÙÕ×ùíÍŸ®¿ùÙT®¾ußÿUa!¾z^ˆëVÉ«§Uò«F«¤Ÿâ
âóíÐ²¯òÀÁÅ8†+÷±¸»oÝt¹Ø_´ÄŸŒçÓ§ÓîùW?¾Á/Ì‡Ð¹—Å^à…Ü~Ýò,Ö^ô½XÓµ—*³Sù‡1P|[Á˜7Èä_VÞþW^A¨î²òöº¥¿üLV]gkWÓ/+ó‹¬ÌëõØu9Ÿœ¼ìºì„HÂkg#hæ,e‚Xé•ˆ20œpÉ$˜*H®„ 4‰ Üem†ëòooß6\†ó£8¸ç¯«p«îhµ£Ö!byeMF‹‘Íkæj[ñj>±óÛéâ«›|µ~%£ùtvÂ¼©Ÿ{5JÙÿ·4‹ñN9lðo‹[ûþßVËqgëþÕã½½ÀŸË2m/Ó„ñbÞ!(ª·saÒƒY6ÏãæË2ýYäNËô)‡k¿üL–é/Kðç^‚×‹çQKðmÜ+Ž8’Z^|éPŸÔ£ZêA>Gh%‰>© &(ÑÎØh£Q\˜yrÎê„¢Øh+î7W‹øaqµîÔš—ø´gø£Ú•7ÇŽåU÷éÃë%sts{õåÚ#ÜþÆ|d÷Çr¾¥Çc ^×ž§”·á<åÊµyž¬Dí­"Rš“]B±í#
h ÿ±z*ƒÕ8x”Ê#§ñZÓWe‡’èõêÍ®2~¬AÝRß÷ŸÆÑk/Š´º‹:VVLÛšo[­.ŒÖ®.m¾5çë¬¾xL|‚µg}ˆüt’F7M– bƒž"ƒOÖUÂé¦nÒ¤¶T2Ï©ÖË¹ˆZqÇ©&ÐD¥¥ãJãyÀÏApšƒAG^RÕžå¿:©÷¤šªI½IÁb…œP‡“ñ÷ÙÔÒ/øÂêƒ¬–º½sÐ«xÝY½—ÈñOmè+Ÿ#6›Ž™¼4QÀçï&íP.”³„Kj¬,ñ”(K‚ƒ¥DÄ™ãÞ*§dpÔƒd* î)‚ 1®ªÔU¾I³Ñµ“y½³å¸N^¥¦Q¯þdÓp·˜Z-©yQIJ>ÀrQ=Ž.g1æÁP(”Ô0èÑ4ˆyX•Õ&Æþë>sU½çJi¶q>UwûJÊ¼“)¯¢ÙÎCÕÔ<’+D,jÏR1jS®¥ì»’Rp#)Ek2j-V0Ë)wŽs%„R0™ÃË<<Q›pÂq&)ˆêªâßßÌçÒí- TÙ¦ß­äÑÝh8¿÷ù“ÃÑ¤zV"vº=ÀÕn	3€‚;84ICôä²­*W)ìT«ö3k5=Gaîvù%Š—=ÝIlÍ½>óôÌé3­=´¢:“=}]Úõ³rÓšºKvz­–"
¢¤eÆZï’Ñ‚Œ)YÁI £‘ÑyF”C§Xf½4Îƒ3:VÅÌ~Çv¶œ¯ŠË6gX]«—ì,¨uº8XýhdÇõÄÛªcšC9ñ˜ä{:uºÞÄÍaùö§ÔM¯q÷ï«Á~¡u|Šý>z¬›Œ÷ñ™:ûFž;}ÍžÇ'uÓy|ÈžžbK´ÇxÈˆ8U‰ÊÈYHÁÊÈ¢¡N{2ITœíBô&ê°EÖ	¨*Ôøír|cgm‰WÝ¨Wà¹›G´µó›ën
Fw8Ji±m®SÛÐ{t7|ßƒõ›¾Ä‚ÛGEì?ovHZßGÚÊ'åy£í¦/´ín|ÔpÉƒO¸"šÀ(rÂîò|s(Ã½µd
$xç\”Ô/÷U5¿“;µ3æ*šœ?J÷üQS^Lm¯]ÕLôGÖÙÐu“KòG'×äÔ¾¨ì ?²¾“:_ÔMz¢—o]6lóÍfhYKç¤DLéÀA—Ô‚Ó´‘R&aRa5NNÀKtZÁ%n’Iè­2™ÐZ¯gzeqÚ¶3Ì*›œ‹êíïùÞêÇö ÇªÜOÅŠ€Ó¤Þh$4ÐÖXœÁj´¯š³¢ÛËl¶±# ·Ûáãg:ú¾´nØ¡‰yÖ€ó§¯öø¬:x¬E4¥R·<´0c%±‘z…ÿÑ@eHø*)°‰GÏ3Zê‚cRq	Æz4¤ dâ>EÛ
på^o»uqòkjN8tGñq•‡§kÅÓLN$Ý.ŠÃñ†&œŸžFÁ@wØd{Èñ.+¾ŸÁãKùýÕÿÝ}'Àt³ë|­bGõtýà›ºùt5_Tù|Ÿûôú—}*üâîüxTé4Õé³IM[š‚É[ýÔ@
Î5F²Àð2#&¤$•A{[mÐS^SD+ž›dUDõÇñ¼'+ôÊÉÅòfÃEü0x
”¬ƒ ß«“¨Uù¶œ;µÁðè¶'©8,(ý48›·<X¿ß6Îì›7¯?+Ÿ$aWÚéãÑÝÂ¢ñvVÁ©š„çmö}ìÉìG”ÃFê*bÈ³­ZªFz¼±N+Å½–Dª½I#éâK*O•wÂ+—ÐŽ!nÞ
ôkƒ%¶ªPìwv2j‡´ªŸac®ÂêË?¼þ®PÇ¬Žw¢é1D®õUtk¥,ª*z¸ÒÍÓÀlFÀ`ýîÏ<víè­»Ò>Ÿ –¤càZ8P»f~ž5ìB_>nè®“›¦$°Y9Z¦Y€%‘¸ £5–¢«@„Y2J)m8	/E½„ †¡1×<4Ê'H°û!âƒhµ‘WÕâb`§öƒæÊ÷ðX®´[¬¼`Ü	ªLSÜÅÁfÖoÿpwŒmWÚç¸µm»PŸ!\7CÏw}“ÄñQ¸h†ëŽ¶C¯I‘Èyð"Ä(‰,%Í=cøB¸'4Ê 1G8ˆ!#þ¬*ø‡YŒw­hWÞàR`'ö"„+-;JvÔ&˜*„—pÞô<6Ž›÷ÿ/bÙ•öùå,»8>ˆºªÙyÖ¨‹ã¾P×:¸ä©³„ Ë*b`Œ9.ƒŽçÜh¯<"Í‘<Dˆâ–áb¤:pÊmŠ¬rßOnÆ-=ØÊ&g“+öBå”L¾W¡×uY.!F7õSw²@[ÆÊõ*Wÿ%~Xô{hÑK:,ïx<Ñ1#ö“¬b÷3Óç“ç–Ç :HÃCäÈ,O€Î!Ä$Br)ïÙ€>NT\Åät0ŒÆ¨!‚à©HUÇ¥oZïšU6é9s„ÎÍhq»tC?½¿ž»)>ÛëÙØâ›¸^ ©w}o³~Ùõ<>Ø™õ£iýAA	”dyÓt'~Wi©Ô“4ƒÿŸ½7knä¸ÖEßù+û<œv¨æ<tÄ¹7¤–,·­é¸åmíýÒ‘#	@a£€üpû]YQ…ª@‚=HÝdfVŽk}kn’Ì«¼6ði¿µ ôvKthý§ HÇˆ˜[[q|™.º9Š„z‹é¾ÇzÙ8ë\!Y‰Ë!RÒÄÉ;jÐ‚ç€§(¦œQ%Œ•)À=jŠ½FF2=vN
¿òÖaMM Q	´ŠÁú*OÞïòy6i¥PÝçìi
Ç!Ï@èþ¿ßŸN¯øô®žÊ=pë%í¥r„aµ-D!ø&•#’7õ{óþúÌ;kÌÊð«Ç6é·Š¿Ú»§P u¤róƒReÕ½lj·›ÍãdÔnñdîÄJu2˜( <O"uÌxÇcðØsÉiQá -„K	¥)ÕpæQeªÉÿgÑ*Ž¾ªÇy>¦ƒ‘„ÛÅ èÉïc“òCÃ,·óq}€éCZ§Ðþls´èHá·N¢ŽDS<·x^ŽGö.øN­‹Š¯¦óïéôg¢kñ(§LC¬›ÊLpíRPŠ‘¡<FX•Ž–‰@ˆf Âb?áœ,%³!E¼KÉA±&UfÐ?˜mªVÑáìðÍÍÍäÞ•mIj®Ó‰/ ÇõÆ|®£9ÎÀ„3(VQ®)¥ÙÖ©‰¼ºÆu¸©!4–>å%h­T{:$wŒu`ßš'wˆvÓŸÅƒnU/ô¢©]<—×GÌŽ’Ya'×¬£eh½Â.p bQr f>r¯¤ãÄ(LC”€Ýˆj‡—œc©áAX%Q@*šàªÌ @½²–é*»œ•äÅl$¡á¤ôß­§f¼v«S‰;¶NFˆÚ*€#›&7ŽY}Ì"ê×Ôy¯Ý½‹>–¢iÕ¡ÆM9›ƒriÕ#¼lŠ–‹¢ÍºR4ºémGÉW9o°’–QÎŒZa˜Œp4FR¼tA‹ 1	…C‡P,£ÇU¶Î?ÏÂ¤]œVU³C7?\*+9|öi2ÊŒLo§ÿïtöûÿI‡RGÞ8éJ½_2%49ánù­1´•g’sÞ4#pœõiŠ5.NGQµÍµž@ÍÖQ³:r¶÷^6›‰ŒÝ{ÀYóÑ2Q¥æÄ pz)ÆNb’„Nã‰÷H#ã•·(âˆ=<?æ¬IR©Õ©¾c9{7kiD­èpÞ\GlÙ -Á/®ã(s7œ\'>|n a`ß\(m'…CRáÓ†tìÆô×‡Þ/ûYÀ´cäÎ½‹>ž°‘ŽŽ7‡ãªÞäE¸›sIž7G8àjÝ1ƒ¥˜jM%wA‰Hê4 ^Îk$1A­ÇF*ïE€_ Äs-¹Ñ
W¹ÞšQÊïØ.Ö ²Ïy}Dà¸>›ÁØL\6^L6Ó„ä›:¶â|Ú‘:²?t§ˆ0½é~«ã%Ò›ä‹ªu§t•œ/ä4Tn{½' o²#};àu»÷I^6e;—¿íÍÌiÕ˜v4Z+(Jåi »	€j†#Ï)¥Hn.…’‰½“ŒJ-£µ#¨±T*Z™d|â†°/½Ö1:^Rd<ßžâ¨Â—èÝ²4Z2±•I¡¦Åà¶ô×Çþ\,¤GÑ´½+>Í`µåmIÛÌ5°‘î“—Máfî\$®µóÇ)òUZÃµ	ë”ˆÜ¨@©’ÈÀc`øIr}—NE¬8v”
f¢FÌÐhµªœZünfðD[¡·Ê>“±’?(ˆ¨Ô~^Ì1;+‘Üô÷Àø^ásž-ž]ÆÊcôj»Ë}ºl»7{==žuÆÊ›s9yÜŸ‚~1 F€Î€.Œù’3o\Ðœ*;>„"³Ú ì…ŠÁ;T–hç T•ZN|+âUÑár(×ƒº"Œ=ù©±]Êµ•‹(WÓDm·ÃçD¹NbëÜ]òñÔKv¬ýr;ü·£^·ÃsQ¯Ö&N¼­‡,¬Sìº2"Æèƒ(:,™dÁa´\"§$:Å0çeH¡ëÑÇT6Î8Žé*SçÛY/³eÖÝÊ>g%dîc>'‹ÏƒÛYcpÀuã1Ãt¿ë.2nl)ÊÈVÞpØÉ†j²ÛY}ÔÃÔSÕûwïß?‘WZ·¢V«ø‚½[p‚¨õŽùÄo÷>½ËË&rç2€ÞæöÉu	7h£ƒ²F{ebÂiTcŒAŠ['œ‰„*gçÖxÛQfˆ¦ªXè?¦Ó /*›Ù–¤î@ÇKÒ¢‰Ý¬á
rÇônÝ>Ø`µUÅŠ5Í/	·åÆ£EÛ¿âxG —ÛÏHXØ¹HÜQ!TH£”g¿[À(eØiµVÚƒ©Œ–X¼$2JâbðJ"üÎÍ;#˜@)C‘‰2êJ
÷—Å¤}]«šNgw\›§ÙÍÌŒ·‹z÷€®LZQÎŠ2²CØd²nêÓ$•´1i+ŠÊãn+Z@¹g(™î[õÑÔwÍ{{0Œªò9^6q;—†mxœÿNq…[†QÆ*á˜vŠì¼U\G™‹h^`†!¹¤Vç<ƒŸ§bË88ÔPº*ÿµÉ<Ì’»þÂ´òb«ëö41U·a4½.ŠÖd7‹pnÉèÍÐ”ó;ìç&äÑ´"¸ŠÈšm¥™lZ×o¸tø*®Fû‚1Ïáí]ð	Ì¤ºÀöp«zµM‡çòpú#]xÕšŸ´tá%„[égŠá)u1dDôÜ¡h‘Q¤2Å™³˜qm±Kâ‰¡Þ+®JþÞÄ$´­Ô\×ë¹$›»±ó¡ýÆT¦„Ü-ÿW¤ìß´I !šR=ß_ß†gàÛ{<ÕÛ·àˆµ³}¿Þýõ²©ž?Õëœ÷m™dEwÎ#N‚·s$Sùùh	Øag¹a.x¤F‘« õgET:"â¢Zä«Œï\€}óC×ŠèUwz64ïA}òªÈ´CóˆÒd3*‹@ç†òî0ï¯oB÷ÜHOb»8žúí[ü	ª vtÖæ~«}°—MýÎ•nx\8‰A`ZmfËbVjo‘àÖ3é(1Òa£IƒbLeð\kEƒˆ0J<ÁØÁlˆ•a[ð¤Û¾ª.Ï†ò=·×t¿+0&ïP>@Ð›ÑöªihÃp™­¸}Ü¶Tà³L-¾wÍ'pBaÉÝá$pU/´nØQƒZ4Ã>—þá¹RËÝµNX~ïâ¨}ˆÎJÇ˜÷Æêõ  ½ÒrB¼\â\^Û@¥‘Ì2†ƒ‹´*{ðßÌdb|+•ae—‹ñÐ«jéýÐà8Ý‡ñ¶•ë¦ÂðÝäYzèC!w—|
âØM¾Û›šüY{èÝMÎEÁ:[vñ@âéhù`$pdt
ø’—*,Ø”CÎyB##‚ÌDÄII,6Ôd¸•*
„®Êªû·ÅÌ·ŒÝ¯ìòÔ5£W£ï†ó$ž s»A®áŠ3XŠŒ™ˆâíäÀ“ÈÝ-úå%hoãX‹¾Ï>XùñÄŽv4vÜÕÚ{+éeS»sÙzGG	½!žžJ§$rB0l9 e½ò‚ €‘"‚¡šz©uDG/5ž"uä6}9Ò
H`Åû!R0mSŸ×õº(½eS°Ø~ô¦v*gZã[‘a„ßB¶Q)ì•çÝ>›ÜÓ¥Ç<¦¬ÌÞEŸÀœÑ1?æè „[ù/š¶Î%‹Ž>vGrè·Œ² ŠKî”H¸T¹1ø •aŽÄâù•œ0•rÿR.¤¤ŽÌc¤ŽAciª¨š™lKÒªºœ•žù¡›üÇÁèã§¼mB¦ ¬ý„Œ#¾“o	¬Ð–Jˆhê“7úØ/Ž·ÿ
 W°aŸwW}‚,rº#ûXÎö>¼sÒ¯ÎäeÜ:uKm¨ ]Ó¼$ŠÈ&ò!u0QËàIQ†½×Ž
N|„Heº(C˜ 
qåÒZUùˆüh²Y«hÔŠg%0S35w‹éb0NLþu€Îì	¥¯²¨}RãM9P‰¦1\ãa}Æ<?žeHêÞeŸ@ìXmt¼7.µÑ#¼hÀ4>Wpê¸u^·S(ï£ÈxªšKã±°#å%Å\{á}4Ê†€°P@ß‚Õ 3"‰bÈz«]¥ø£™/ðÿq;‚VÙérø(šÆµ``§vE@¬åpBM}xÇ£g©À?ŠžNž ¤cŠÊñÞnÏZ?>W·qçšÉG«´RÜ¼0ÞE°M%”-×Ñ3…4ÃR­,7Šr¢°5$byÊt$<á)Ç[e
·³ÉMÖÖ“£¦ÓE….Œ'i~M"¦©*Ãñ®Ä¨àX7éžâM};Æ“ç¥ú::-ÒÞŸÂ‹·#Š«-«ü|Õ^ãs0ÇG¤éŽâ(g$åñ\I,¥Ü
Ä¨7ØÙ 0
žË¸Ñâ óZÃC )Vê+I_JÕvÛR(­èr1N>H¶I&F$l#8¬#¸ÙsBpGæÙ¿äãÉï…:>Dä9"¸så™´N²ÚG2@ÜQsï£ä.ŠxTš f@·<‘Ò:Eœ÷J
–2SJ¸œQbŒc˜rHàªØÓo²»±1£VµI«ºœ7½¸³ùí
¯|H)K
ÛL”¤ÌÏ3ÉfŸÂüòÁßëÉÞƒÐS¦ö8­éN©¬Da2Ø@p’Ó†nbûåÅh­óne°V”&ÙöŠŸNß?Ù›ZäÐ{½hº79WR‘ÉuÊ^Ü5!‚Ðš¼eRÂi˜0˜Sëç	å1€Ã¹ÒÁ;cœ4)Â¬ÌKEeñûv1oW«¢Ãs‰>xHâ4e{Iœ „¼›¸W³-{&ˆ4¼šŒúë;Ð>áñ3íq¶wÅ'Àwª[üÁä@‘…š÷yÙÄî\jºIçHc@^0Ì3Ì½g³&}2ž*•
gÃ1„‡9a Ìú À!bAHÞ¸ªH«Ÿ¾ Ê[•W¨éòœ1ÞƒBõ5o7‡ÜQoò‚ñŽÆx]i_mxÁóÄxçÒÎe§ÑÎµÌŠé1E˜ÈÈ™¤œš”U	€¢¦°³ÚJ…œg>( {)å ½Ä†"üFRAö~öÃVÑQûÛ_Ž^îñÒ´Ê¹©ÉË™ÞÒË©¦Ø-»WRµN}ù”z¹N.iK>eµc‘æ¬¹^î¹d½ÌÎ¥—›¶Nw
ËB06¦Î!‡‚œ8LTNrp0X…6@³l¤Ö ]ÚEN… ÜUyÔþ²˜ünl+ËBe—Ë¡`ó~T—_Ð
Ç°íð Ô4îijž“eá$¾!»K>ëfY˜îQÖ–…é¹òºMÓ°	$‰èX~!P Ui‡(y´j†‰Š9'™´„8Í’þqƒÐ/LiT)u9óU¶_²QËøÎªÏFÇö0ÃG…ÿ!»Ù|©&[!PT«¦Åþ¦K}Sq:×ex^® {×|‡ÞŽ…¦‡ulU/ô²ÉÝ¹tlÓãR‘TS»#¹ÓÂ0ê­¥ðb©Á™tT A#Ž2‘8Ä"<>©E
q²ÎXƒ2†ÆJr7›/n!íH^u¯gCöäíÐ´* í£ÁRn&î%B4¬«5]&ù)nB{¢÷<ËÓï]ô	ÊÏt,8=œÙ¨ê¡^6Õ;WÜç,ëJõè€DGß_yT\i€tž¦ž8DŒa‚­2DzÃ¸Ç!Êè¬ÀÄ`t´XZ*DUË¿gãÖÁìÕ}ÎJìfY¡˜”¯ï&&a~À`ð¬Uxõ’"ìV>r)é¦W/SŒ6”XgY¿8ìö½O€ãNBÕvWütì³¬Ž U½Á‹¦e³ì\´ì¸:3ðÄÖ)ïZ"8äAFÍ5Ã1HJ­a1ååÔ¥€Ð©•…9ÕÞRŒ½7žÄ‘3ÎÆ*÷÷EÞ6ye—gƒÝv“v«PËi²›Œˆ0ºëN(nšsm¶,ÄRÜ‚?ˆÈºwÍ' oÝ~g‡‹ÏT½ÑË&xçJH”U|&yÇcÞÁÁ)G¬Xð$¤áÄET'uÄs&S­z-\'ƒ
\DFµb,Dç1©ÒÐ½7“ün6œ·¡xÕ}.)‘|˜ŒˆTØK	'Ûd¶lÆÖë¦ÖÒÜô×'ýGˆÇÚ»àSˆ£ÝÐ[~0#nå#¼hŠ–ŸËæßWU“ÎyÅá…ƒqF`‰…vD˜TWKQi=
˜ã@Æð’½ Ghî9²JQ†µGUm”}4­œÝªz< ÷0æ¾*öTˆ]Ï¥ÈVì©¾ÏlxÖÝõ×w “Wï3Co{|Z×1on~w¸†BÅó¼lZww.Zwœ}U¢í-s"E™å)mHÊôíbÉ3D%ï6c¹Òˆ§¢ îÁÚR¥Œ@ö„pœU¹¸%ÊÚ*àj:=cŠ'÷G2`†ä¶'‰Dj³Ž‚M#Tó¥½±¸íó&=i†¶£ÈÞ¾uŸ@A‡»YòÃvÖª—zÙdï\vÖ¼µSï^¦ˆ®³P¡vdÏ`&°ðÁZga³€#žE'i`Ê1$Ñ“€€ÊÙ¥†&g:‹á–W‘½ÐºÒ}e—KÉžRSGUGö$á|?Ðcð
Ä/(N·â”XÕ®;Húfýõ]è—· µÝsr£[…1ì]øñÕ¢EÇX{°lVås­%©{ÝŒ{É$õ\¾Æù1É{Ñ w”˜1QQkNLô˜;±Çðg¦•¡ƒ¡9ÃSÑ¹ANM
$cBá*gã÷ŸBÛ2•]žšœN2®SÚöZBªöä8©¨ºŠåN™ÁŠdO÷t }c‰¹Èsçß¹
W*Áð”8ò˜ŒåVÑYt££ù¡<¿ûßèe»g"vó'	¬ˆÈI@ñ*ð m”ÂÇ ±W
E,˜0 ?ã€bÆxÑÎá­!A
ƒ‘ª*öW3¶JwRÑáb‚*ÔÃ ~]%
ëaad'Syã Šù/¨bwÉ'¨˜E»‰Àó¿ Šù¹óðÔƒ@k˜ö) Õ)Â)1ZqÄŒ%DQ'œiO˜DÖ1Dæið
„`RM½Âhq³hE¾*z\ýzÖZ™nN?LŒÅNÅ¿†¾Ãóðœè×=þ:ÆÇnwÉ' _ÏÃ¿ý
ç¢_Ghq*ÑÝ5.ßZN%‰ÞQ,ç · ]1‘Q‘€X š+Ë¨†‡Ì5†¢„Ž"e”²UUÿ~]Ìî`_ZQ±ª.—äp²‡’iYáp¢w3ÈQµUÖ3ªšR²»þú¤ÛGéÿ²°ðÇÞ·ÙØ$Jýì@Ù¾ÕOÙPÇªóƒ6ÙÊyÙäí\6ÙÅ‘þ'H#ÚÑ&«##Æ£DÍ¸ð>å7sÈ8†9–G`|Ñ{¡¢Ñ*œÚÁ‘öUujþq7ƒ—ÔÒ<QÓé¹ØdÕÃèþªÒÍÑè~*Ú"¸©ib±rÊH7¡[5›§
˜8†îí]ö	Œ²éÞ¢/JÅS½hº·8ÝûW÷Ð‰å¢ìbQ%Hb–œ´T¯l€Ú	Ë%–…H¸ö)¿aðž–Y8Ž3	ÄaÅuTˆ¢Oú7*ˆß/F­ÄÓýíÏJòþeb» 0µÒ¯0¤"¤?U¬ÙŽÐ)ÅÉFH?Ò¸¡†í_‹>êï;äçâsÒIV…Ó©Zö	Ògv¤nÿª“8ø ÏIâÚS !qýy–ò]
ôY‰‚¦@¬s¦7#}Ü³”ÊÍKg¥–Ar­¶ÄÑ "$ì-AêDZZç¹	
~Å°Q~X¹¾îÝ†y˜e7a²EÞËÃ¼—ÅÞ;ò¶W,´Såòádñ¹FÄ¼æ«—ÜsÙdx,ï™Æ#¿¶v‘_ÁÛáä¦øõkø<üiÏ/ÆÓ0{›v3Ìa¼þ(|£žq€ºò^ª=;ýº÷Ýw¿üýç¯|p™Oc”³ƒ_$¦4Îfá¼)Öáb
@xf“0*0àpâÃçÁôvzkþðkymêˆåÃÊötEC!ÙQçq%¶]TCä|ûl²­¼Ê
 »;"ï]ëÑtQ³¶Éà}ÄáÍ«ûéü©Ž>î'{Ç½ðÔã½J{.X§yv§Ý×@	®ó[ ³t›k&:Z˜ë1³¬ÀÎ ½úÓ+ÁìpÔ`Oóqæ|õA/¡ºíl>ò¯¾ÿéþòõû¿Ôºðácý‹	ŠWßÿðî›·È@îÎt/ªODçÿ¹sw>p=6wþ=ð×Z÷Ó¡§¿$W VEÓÍ^‹|v§“†¨»›jÔû@“›phü`‹9<Ð<†ÙºÙ¼½å»ûù<ÑBbA4šFÆ³NE©£þ*©³&¡=S†¥°lêò"z*]
W¬òP‚e-ùí§Ùp>1m8éýR¬°ŠŸLØJ¡¼H,ûA÷´Aû^ä¡÷i8¿í¥¯ÀÅ)T!—Ïhw}A+-ˆ+;.LZK²™r#øï!±dûj½0ÛŽÌ–©¶µJ¶7þÔœ±ô‰Øc¢~‰øëzdæX,ûÍ~÷÷÷ï~þi=è÷ß=”Ò°Fú³›ÌGuŒ°lOøÍ›oLÒ6ÿåç÷ï~;Ø
ÀÜ³I-o/æóÙÐnöÑÌò&Üwuz…¸ú~8W±ÛfÍ0;Àûù|aûq–ûÛ¬·?‘¬+Ä>Àº##ŒDzJ-÷©Ž*¢^Kì%¶FáÈMd>Õ4þ„8QŒâUÀQØÀ¢CŽWÙNßMæa4‚8:ï½›Ls`CBh/ÑÍ*Žø.5 ½½Ãzïæ=‚Mbégqûö)›Ým}à¼¬ññÂ\6¾NgWþ#ñÊ
f¨	éMf?âD¢ý)LUBìäfZ'Í¦'Gy°
kš]¿¼'í™áÉ”sï¿äó0î}7ù8œe“¤›¾þahgK“MöØIS·gíÇ2G¥„j)‰šé¶®8œWu”m³]òJŠ³ C~7Ï¦ƒô0¿˜„Ä¾g¿Ãl°üÕ)F\ù¬¾ŸßÑ&¯„kØßZfWIŸö3|î´£5aÈ5£/VWO¯¹àÝ`¬Äš ‚„ÏÁ]OGfžtúe~›Mu+8šÍæÃEùêDêŠ–ÐöK>½ÜÏ¸nLŸ.aÝïËkÜOd¸¿˜k•{^U«/´èf~GŽ¼“5CÓ37ëØ—T5tæ‹é	ÇÌ³~‚pu«ùãR£Ó@å”šÛ´6ó»DÒX§•ôK¸bÿ&³)Ì2u$m:¶éP<šÔ7ìpãïú´ÍZ Ã‡éð³]Ä¢ºR›žÃ¬uøë>å6·î6`e|ûn-÷o‰YŠð†}&Ù|¿¤¬a)À›¬í5-:•wµmÏró:wYi^É€7è]2¾WÆkÉUJ“yhºz•§P4–˜ZÿsR`7jxg2–‡úiÌ+¨—â¡Îþ£ÔUi¼.¦—þ	ÖÀï‘„÷7,DA"0º<øLA‡®½-ûT}c§Õ5BýÅ4ŸÃ½'Î1Nnö‰óë® ÝÒ®K»Rîoðë¾7aœMŽô°+í…g–õ‰Å†Qéµ#ÜÓKåhAÔ×	jpàŽFÁñF{)b)Ÿ`3¯™U²~’×ßýØ+í2…þý¯#mMØ•Ã\š	y ÅWä±ŒìxR7UÚTòƒÔ÷wfGŒMWæy	ðÝôÛ§à9’ªe2«Õ!œ±“3Y uJ_æM`ŒÔi©{×qÜfý‹eÛ2K÷8ï›‚ó˜¼¼äÐÖ7Œ@/KÍKà4ž…øAcü„6H£eíøÍq}8ßÅFáÍW¸ÁÛàèÖð¹A‡8'M›o æSÀÕ‡À’ÕÊô£ÌæÙ(ÌÛPÓ~mOŸ¶>sB(ö(†Îü/ËfÈ`â”àÞ0æ´Kvrd•4‡‰ØÁO©Æ¶ñÊzŽ_ÀØŒñæ&º“W€J¦6­)TyÐ½ Œ½ØSŽcª­=åÂ±§0A\&;©
ùmk+¥é 5ì±ƒÔšöÚ„l-ô³›Èæ¯¥í´]”®­BÝƒgR½›¨ŸJ¤Oƒõé¨‚aøã0ÁÒpF1Å[ø«wØ`Aƒ$*Dã˜LZŒp”‡v*;z”H/%RÚÂñf'ç•œn•»U7r¸I·æ%ž%Š®J;zyvöL÷œ-è­Áà‹	ý1mánÙ>/¼êˆqnaù‹Î¡8Åû^>ï–ùM§©P˜õž‰µn£CfÜ#¬•C^êàeQ«qQ¤´€¿q#]Uú¦ÛÐûK±&`7ÃI‰O
ÈRº¯|äêPOå«Î…3òŠŠ÷þ–Á=X¹%Ãü6ó½ä~Yîï£y%ßñzët÷c$Ž0!lË99ýéýÉ†¥Ðl;$– F¶C¥bÊ+,nÌ¬Ä
}ñD:O’ö¬ÿX¤DzÿäµóÞrM¼†7Ö|/<¤'‡†lEo$˜ÕîÉ}£å.Ày37ƒÏãÝRçÎ=›ð–OöÀˆt õsF%;rÏÑ ²½-¿…²¯¶i	6ÎàÃö˜°äîÎƒI’¯NñÒuË¢BF† l(F¸)Ïa$EÍŒ,&/*®Œ&ˆ+°C;isZbœxi(ù«”òÐû›™˜ôß‡;h Fé‰V0¼o2:êÇrïÖ`¥pš{,Ì±“ìz}j•QÁ¡­$l
£”Im/ÖP
ï¤ß ‚n—=%p"‹c­¦Õ/oE_?W¤ÑÝ‡êÁêæ¤mfð#q,¡1È€¶‡`À>êP;`S|Ñxàv #-ÿrÑEž¯Rç1U4!å¸V­fwÑøéQ´:¿çÙ¤_,ªåJÏ¦ÅV¿hÚÃ´´ŽáäKJÍÜ¬a´ÎŠÐ¬y¯œ'&†¨ \êvÁHd¬äZI=O™"5žzF6’ÂƒÔ„F›±ÿR,n¥²&¾‹¸_ö½f¨&®}(ÆIQdzoo‡†[¼Sµu‹ÿ¾]ü´xõM6ÍÆYÌþtµÕ¸f.©l*?}½{ê0 ßÅ€´"¯â«í2Da.Éf.^¢S¬‘/ýýüúå­ëã?¬Øƒ£UO¡–µ®Ž„„°»|mÃá·G)·£1¼¼ïQ÷SµÃ6ƒš-†o5×rá€³V/ÅµáãÉ”7j…Âœû·
]wøþíÛt€þà^ô6Z˜>$Ø°Ã¸Ü’–¥‹úàáTÜ}àf,¯:»¦VÞ­.€¹~y÷Ó½ûéÃc“ÝþFÃyh…Úó¹w_}Õæ\6{¼ýí·¯¿y÷hû¾Åê~ûÐÛªóž¸ØvýI“ü(:×†¾éG]ívøÙ^o»ÔeòôŽviãŸ 2Ö
…’–ZæƒæŠ;%±AR!ˆtÞ
FÇ~dˆQÂ †u6kÂ(Ö¹ÙÖ€®wÝü6¬;oÈç\ÇpÓxX"…ÄÛÞuŠi&7µ¹Š#ÞL››.ËKHìé¼ëÚ©½?„s¥š9uØæÞ˜¾îPÖ„ŸdÀjft´#ß¼ágYJ4š^JsXÙM¶‘çÒ]Ciõ4YÕ”Z/…bÈ2,˜óÞy.STp‘s‡½WE„D4²˜*Cö„²*ëâ…ß4væ&Àmv¼¹âh+ƒB5KÁ°‡ß¼øsÅqXîsrœS{1×ÊXÖsa3aÝ¹Ó¿nG™TÔ@Ón&Î9Ç#íœãN/‘‘:gÂœ``\c8‰ŒšÂY×,¸#SÅ¡~
Ÿ’=£Â”R.·³)e9ðÚP²eU¹ªùÒcJÊO_ïq¡£Î2h¿³Œ”$UòÚ)íÅ$Ú-S‰fŠñfYƒï§Ø/¯Ó“ÙJÚæÒïÎæ*–||ýÚ6~éxÓH¹6F²G=ÜOWÛŒÉ¶~}VIõ{ÀVR›„§µyd¹µç1çŒ{H`{±btµb´3J<ºJÿE?ßH?¿~½m¬;[]à“ÿý—4³î\Š’¿‚XîÕóoËÓ©÷ÇXfáx—\´1cœR`¿#ïPðG†å6•±QXåƒ!à­õÂ2(f: N< [C¥®	1ûËŸ*£ÃªìÞnÛqiEh€¸ìÓê7YìÍäKQ÷w‘ Zo‘'7WIsS¶˜;
Ðhšqg½´á}o¿Æò¨ëP-y€j+
CqMÛ©ÃÍ©Þ4`€V¼Qê¦bGŠ»Ô'Omö8e¡ö¯öøØ2&Å¦54°©q=
ÜOEêGl[[ŒÜl;pZœyEÖ“zqæ~& ÷Q<³2ãRáß*nu[ëËuË>¼;CœËvv.%en¾,fæL·Š”Á´¦s8Fí”EÂ3å­ A	Í|òËPÑFG©•’(ÞE­$<"Žƒò”pYƒéÞ'·fdŽÊð¾Ø˜†yVÜÔWž³MÍÍžëp¯·:Æ:¼öÀ]›)¾ßê¦ÏìÍÊeŒòM$€éš µr^‚!ýò†<G7íîºÈ}p´"°sÃ[9—Chß{>4fS|ÕxìvøªœÄ9Ö3›~™,-I»m’¥Ù-„1m¢!å…Ž€y£¡ž«°°‚Ñ ‘i$‘åá<GRDCÐŽáJ5EÁxŠUõR™áüË×T\s»Ãã[ÊÚøƒ¨
ÿÙË™´Ú­©I˜JAC¶1Îh³Ä5¥tºíQ^“gãbÌ-Æƒ™_pa¼mÅéãu
ÇÔ§;kõÈds9ÚÉ¥ÂÕ½A=æMb{dA¥BíÙdëA*ª[¬·¥",ÅÁù<ÆÜ!d8â>Z.vÞãÖ!¢‰×Æ³@´VL†‰5š£ªü¬I€øµPå¶×,î{>$<U^ÜdÙÍ(t|ZñzÑBìŠ„ïwè£ôA:Œ8Aj3A+F‚ñ•©½ž†§_Þ€>}Ž$|:u‚ÁŽPïÙ„c‰9Cˆ<nh±ˆÆ$½h]O÷…Hë	<ºïÀIòí³Ö»ì«Å¸GçL×µŽd*¯´ñ~˜î‰ÕÛ:“dDFãUb¸ð€Ïîãdå'È?óàíiXZß•®mÝY›tL€å"³~¬c.i‘•JñÈ‰TBRÒÂ,'Æ;êGÖKo¤eyZÁÙV¾zæÊ¼ÃßÃ-IBÊ½þ¬4€Æ™Éç³…›/f%×ÛþX©VËWï6¿]Çy}Lž„³Ô´—/ìòtÎ(ítå”r›SNWáö;œc-¶¦›R&Dœ­/¼áV©£šsÉÄ$é“Ë90YÁúHÉ$÷mÅÑê8¬:ùÁoÍèCÝÞ|TÇ)·v˜h…::-Iÿ<œÜŒ¸®ÔUÐÛêËpÒx¤Ó¹Àlß#3›™/O@Ý	vÇIê%!¢I5Öxl0XÛ…vJyå’+¸DNcn´uÑÆ*÷î¯Ór¶ÉmM"ÃKÅSª€óº—MÃ¤?N|ð=wkfÆÍáÝÓw¿•gÐ{·tsUl)EozD2¥×}ð/Õ·Ã›‡¿î}ÕûÇd˜ˆrï»Ïóo.ô«¦¤Ÿ`ªôNÝY¡)e÷, ýD5³Âì¹³™ÁŸálG_àÊú!%^:,}Â)Âia€ŸÁ$/£Æ~CÛæØÙÅå#èÄ0±¢òÌš§•9)ï<ZBÙ9Œ§áB.ÚïÃ§2¨Œ
Màž;‚½²Ü“ ˆˆ8 eÒ`E,b©è¥v‘âè$bZ 	|Kò*)£\Ð2¸¨!?ªéôú>ÜèÍÕ²}Ý{›2ïþºÈ×vß{x³-ž1ÁŒ	¶kÃW%»ñ†_!Eí½o/<äIyˆèRrs9£ò ÏÈCŽùÂŽ‹ìnÖ“q‘yöDÚ*X”ÃR;êbDS¼ôœIB¥\bj±ÄØcåˆÛ!pc<"D¬¯²œ¿]-©Ù×a‡”M^÷þ’MnúƒôV;’ÅÞú÷W‰¯üþe1Ÿ‚Ð{yÜD7–GÕ;fwE(œÌfÂH“ÍƒKw„vŠ¼ÔS|á0§á0mM@Û$­<×óò˜#¾ñGä2;Ûõ4|&˜ü)TfÞ(eÀ7¢µÂå	XŠe‘p¢ ŽqÁxdÜ+!Æ’T°˜ï`5[Ì¢š¹M§·3OúŸ†;<æóÿQ|›APÊÒ›"ý„“,"Ý—c¸Ã¯¦ñ„é–@*èd¾ó°8Ê¾µSODÔgvøD][*£‹GC-3"£ÌIË„³Ø„—Z†¤uq¯%Ñx„ŒuªŠ¨ÃjšõÝ¦ù¦1ãýbf½¢Í+“÷Ò.ý©ÊŸýßá¤ÿ>É¯Òoúÿ“ÿés…”ÆÛ\€qª%Ùôe8,ëÂÒÁ^,Øul@·­7YqBç`]‡ýã±Íz6 pwOÀxôJ'³€yc…#ÂâçQf°·ŠzŒÄÖc¦Èp ÿœ[ÐU‡
>ðÓrúó¬?
f6iªDÚí•¯“¤­¬›#½¾²)7ÄdG‚_š%þw”x–Ï…ÆÈÀ>e3ßŸeÙüjž%÷¨qÏ¬Íßƒ««5×)&@_÷Šób„rNoa |èJÍÔ{˜üü~Fââ‚š²‰%ÝIJ©ÄZ‘-ùCBÿF‰B÷Üé[ÇSj¢xÛ2…UÇxþÔ}Ü?ƒÚÞª§áP¹ûý)¼qÒ©"-¥”3¡<wŒnTkç¸Að'ƒãœÊÀ¸5Ìô6D©ª²ol‘ðj†´Mé““p¥qºxaÃðmv4RWŸn‡î¶w¼"9Ú.Û-¹Êë;Ç½Ÿît1qóEAW__­ªÜ¾îQÁ’WØÿ,à^l8â—ÂzÒ+¬'70‘YA±€fóÛÞ¯3³òü.¸×{˜í¨È·³úð»­,Ø÷éD“+ñÅs6Ü˜³	BÄNù\
ý·2`§Ÿð.Áð^œ‚ÏÅ³îkÙu³žœÙ>GÿÂ³ºÅq­ù,»ü	8qdå8§FÊà=ášXâF‰@œbQcA´ÜJ†%³ŠCO¥Lç*Ôã]µl—GÓISš.–Ûj2,¨æ›ÆiÇ¬å5y!êçÒ“Ý')<BYÒˆû‰Gn™„¥üø“•›¼(®±{Ï=ÎåÓâ)œÂ§V(À`%	œ‘ˆƒ“DY¡MÄÔn1(jŒ0QÊ0ÇJˆÀmëùç"N@V–tµªí6¸úÇßxÓ[òâ7ØöÅ<+È§ÅõóåW~C·µkŒr.õ¦Y‡
òÚ3¬O‹›ÎÙxÕ	”fŸg`SýÃ1‘}z*ªo‡ý[3ŒaróÆ}'µr–yÆ™2ÆÆ@€Î«©°Råƒ`&°=K/&¡£.`ïª’³ü¥\PïŸ‹ÆFþÊ.ù ÷v1›%½ÖÚCx«µº@õScÒO“jÇõ—i™øë&ñ×2¥ŒìBý×÷«#øæý·/L FÅ:­>¦³°ƒÓù´Y6ïôErÙ='d;¿ýÐ<(6ñ\G-4F0®bÒ	Rˆõ{âA†zë‰C µðÚ£¨@6áØDéªBÿZ¬gÅ¶ z¾¿]Àî‰ªæB›CdBË|hcæC° ;‚WZqº)yÀO4nVoºò–½÷Ÿ’EµÎ4V˜ÿ~ª\×ƒºõ%{yˆ/07;ftˆ<8`>Ø"\)bŠ¥à)bREàZT;ËQ4
¥8ç.¸ª–ÿ‚ÕühJB{?c#`·ð6‡ÁR‰T!gÃ?Q]bÓ59ÆóÂ5êWNà±œèì¢ó°8Z¾µSFË¿¤xì¾Íàî†YW:Nx€º%vÎHÃ„ƒ;,-‡ÿå]4\YlCôV)i¬‹Ì«‚uÚ%«#FI¢…óUv¯{@ §°;ÍmïîG™ÃËe“yø<ïå@z†s ƒcoeîêÍ³^>Á/¦½r óf˜ïB?€h°Ì6¿ª²½Ž,‚m²C)ç9ÖBmgRA(—›±˜K-U3ûÇÖ,ûÅ5j¹ø¢,õÝ‹£ÔìÅ±8ö#—¹Û^LóLÆ[ÝêhqÅ9”±3õ§3Î–ÿØü¬ÆÙïÃ¾™L²yqv¦>/&¯5Þ7(Ö>¥rå ´ïmm©šU³0q·f2oÐrúå³¿©i·(-öÎ³ ¬H‹¯¾"7xéP’‘éGà>u*å>œd¶<V—²Y‡~[=VKØœoGŒñÉ|™‰ï^Wíˆ*4œ8D¹ŽÒŽ±Â.h…¸ôJá©Ñ:€Äé”TÇaÉŒFMh`‘TÅÄ%ÞýØg~1*ó3ÿsµÊÚj4«ÍJ˜èMÞ«éâŠÓ´Sœ†H´¿¶W»IàhÐVmA› -¯ÏN…–æ…Ó.¢²Á‘•ÓN\qÖEÍ¸<‰ÓÕ[ÙµYÙ´3Ô¦)&‘Š°9ƒ=C¿ÔEÛÓ¥]-Qè½" n4„ß´ùîç;›øWÖª4ëN§ÿü€àÌÑs, ç‚7Ÿ»³]øïª‚m›’Ûy|Õs!ø/ñ]('y©“qòR*+	…!(ñÆ•
/TJõ›%Ür“¡&7×.›~÷ŸÌÇ‚c-Æû!°¹5µðÃ¬÷öÛš0åwÅ^-‹Å-ÇÝúØÛoûÿùÇžŸ?Uf^”XpfZØ¹²xUÒžÔÏ@ëÿ/?›¤‡T‰a5™"Xyžõ¾ Ýî%ª?è}}ßð*=“rò)vëí·ðIÏ7)<Íäåa>ƒ|1é•7¢,`âË…®þmVL£üm¾²ƒö’<²k¸ÙÙëžºÆä‹\º¼+óÃC²›^ÍÌ<¤Äå–¤	˜Qž¥Y,òri©ÓÎªðö³»á<µ; ÁØª$!•DšTúoÒ3*EBKºÑ}Œm54)v§_¾’~ù>ÚVs=’|½¿óë£´7~hÎ‡FÊÙYö±x„¤²WíðˆóÞx
ûxµ¾× |Ï©ëPHq”õ\¿‚ÖŒ×MTŽ{A:†<53# “ÔŸy“¡÷w¬QKø©û‘M]£Û;œâð¦ÁÖmkÚd³ˆ|“­ÛÖ3v¸˜†Xs4®U	ù¢çjÚtœe£¼MûE¾QCêèÛ¾ðôer?f3;Ìûó,;¸çÛ`Š¨Ãhª±æ¡Ù°ÌÔš&µ¶ŠÁ³››u­e“%´ºItø?vÚÃd´ß(ßµ}GTì‚æÁô?ÛÝ®/÷;¢Òú@›ƒG…°ó‘˜h1!.(Ç„WÔ)÷‘GÄó^)æ§8¦ƒ`HRÉ#ŽJTÖs¹/ Öû«ùh
#N6³.kvý<“¿~û·^¿ü-¼ªOy˜ÊYÜô¾%ˆôÏ`{ï÷J	F!i LéÑTW¿2á¨_a?So çIL[û2å×`¯·¾8œ¼^æ%ØøÌUËÖëy¼Êf +aI£/ë¼:	9þæŸW_ûS1ù¢òp! WxRð«±™¤KàÃt”}IŸY7I;’Æ1ð‡bð}½œÛöf\mÏò¼¥–—sàRòž©™ßà0)®®7öy?XHk&Þ0wÁ¤”â>ÛX‘Dˆ{—ÂšêÍ\:XA#}0@uýªúÅóè¯Fû"÷)žIá_×Ÿ](6;?1¢|—øØ$ÌÏ¨ÝªÞ–cQ%EêQÊvÎÓÜW§‰©k³÷ïðž?µî5Íà_ éÏ³fÆµõ.×3þ*²½wÔ4÷Â‘õS«ßý]¿¤û¾·¾q`Ð&Ã¨Ú*å¾3BË:¨÷xy¦û,‡‡¬~x°3·2'ÍìÕÆ¹þ\L¢ÿûd4í'ê×tŒÏýxç8ô—?¸N#Õ9¯íýqò
ÈË |Ý@önÂ uz³±(yäðo¦ÙøÍ‘ßÈ“tÚ€ó6G^ÞâsŽÝjòGJ” /j%ÅÃ²ä³”K¿B$i0ò²a#áµÎš.[É¶†jC¼5NìvòºÍJíVåfº“&³¦=‰z{Þ«V_gÿŽ’Ñ½ÉÜç°ó€ˆNaôO«¿ö*«3ÂßK|aîŠGùaÝoà¯wàHj°GZÜßwÉ¸ZõÙ‚"=ïeÓí¹­i¾œÎ¡f[3Øi|”ô[ðPŸ¹§‘‚#òVA¨ÐHnˆÇ1pÁ=³ÆzK%B„LlðVRG‚‰„p‚ÓŒÓ «¤à_Þõ`M‹{y­,X½);µs`øk¹Ik‘q¼{ñ"¡l*2vä@·rÐ)A$<†õð¦]´døíæ­y–!&ˆ©–Ž{N©«u„‹ÂÙä·n}tVèÌ»¡Ñ€’].©¥ë±1È`¸ÐnEà8XË­A†Æ ‰·ðF]€ŸSÎ

ôÕ))õÎF«<Ëÿ±aŸç)ãtaó…‡4f]üõÇ¡›eyç=Ø‚Raæ³ú]¯1\íZaa.ôv©–\œ›™ç¾<§óuµžÃ?‡ð¢?åûç2èÁ7ó°4œ/òE¡M¼5C"çWð¥ä÷Ð½0=Cï×½”§~ÿeË@ÆÀŽ|Qq´—üRË(Ðz]V®RgeŸ>}ª9¹™,
.°ÚÉzó1ÝJA*¥æ„É½ä_S¾›”	‰7@ Æø°õ¸œW¿¼àý¶>m§òyÿÇ$ŸW$“mDÑq7Š¾o±Gs‰Ûª÷ì"é%ü+¸pëfÙÒ.XMm«hSí€M¬ÂÕ!Âß£å0Õ[ÓÆ¥5­¡g×ä‹ÔwéñËOßcñ¡‰otüWÑ©ÉWÒ_ýžø›7ß˜<¤6lþ^ÃÁ¦ß‡y6¿yóÐ™ƒÿòë¯¿À¸€šµª°¢ñÿLm{ÊÁ¶¿†ÙøÍ›¿Ã#ùa8©m~„_nà˜ö@ K¼)äyV#³Ý„IjR0Zcf–$öšŸRb­&@ŠŸ® %¹1®âPp;|Â˜f.DŠ¸GÚh‡QÊJÌ"ÕÁHg5ð¨Æ‚¦83Â"¬1¤«\Ó¿ýék‚êNSš<‹yûÆ ²‡/!C±¦rk	lÑCÑo¾úMÒO¥9à&–ÖÅB„£Dru?£õ'Ïò%
XA€€>J¡20ÙëÿUþ›T ÉSœÚ¬..)aÀÓ÷;”1&vê<Iß”áÐâ˜P¿¸K}üL @'án¹÷[K=Er?ÑR¨ƒ9ÔG—í}Õ•c5áê•cvgêËÝ<êëÕÃ¶ò#¿o|@ÔÈc:ùMŠ|1“›ÔœÔèDì¬$G°—aÖO¡ÃÙ¬‡üùA¹×æ¬†u±ŽVkgÅ‘å"Š[U”HjÄ¥BÄ)	f–Zd£ƒç¦#·Ô#e¤©ò§y÷îçžq.ŒÂ,‡-]®297—QÑ>|‚Ô[®ºÒõºÕ8çeaQ·@tr ÌN¯Fdè Iø^¶ÁyÁc6K(æd+Žš®Ë&T3ŽéeeË¨áËg!Ý¤ÉêŸ~‰È¶ibwfSOƒ÷<àF£6£ð{G¿?â¡äÜ‡¼±·Ýáû·o?Ð¦åA?:À{^t¬ÖÍèà*X«i§VÂüxÇ¶Q€Vcv\j—}ƒû´jÙ†µËœ=Y2}ùv]~jà¯“ŸHIòï‹—÷KÁm’™½Füg“dv\>ÖŠ†…»ÁC>r¢“³ç.
%ZJ¬-EVçWŽb$EØ |Xøà]’MÀð`“Qd]t*0¤À	î¬Lª¢©¿¶y©ÍÎ&×…Œ8†	0üÑ:º¶:ñ(.³´$ó_˜Í4_ŒRS)¤ŽÆ=,úp=€€f&I¥ýiò2F*Œ-‚ËÑÊ€ÅžYÏl9›Rñ¿ÈËÔ†…×ðw¿ý½¨!™Á§ ¼,åÍ¯ÏÓàðÛµ7oÞ#ßjxú-œ‰ƒ”¿îÑÏ´øûÌzÐ||~ú?“¤ø$2o|>£QŠñcª8V×ðÅðyYÛìÞXºe%Ár%gWÄ'Ç’ðyVÀ©zÜDvq«·“	nËÛ\ƒ„½™£L ÂÇo•oh%‰–¢hzA–hùQî½Ë<^õŽZgR.çÑXD=(u—ãÀˆ’æ¢oÙ7‘”>Ô9sA;xb}ò4lú#¼ÐÆÍW´¨q‡ñÞÑÀ~ÏùÆÑV;´Ö °	~i…q¹¹Þ¼e§á×ZŠò¹w_}Õ`­_½ýí·¯¿y÷hóÑ7:t‹nÅB~ûNŒuë5À¼cGrhÇ«:Ö®ï¨Èþ“úSìG~¬-±_ð$0e<2 åx©C<Fª´	¥¹Cj‚´„è¹àDCKoªjß½`¿?:öc»ØÞSí`?Wl;K¤·[Ø1!ÆbíEÍÕexô‡e[{ËÑ_ÃG+ô×Pi²›÷ÙÆƒMû=†M{Žë¿wñPñÌJÃóëÉž"sÒ&Øißc2ÑUëÞ› ò˜Î	GÕŸ4¼>Õ¨òÉí™@æd8šQ™ÊõÏÝÂ ¡tò± e* ƒ™³ŒJa•‰ÉW{ã±ÄG„±s
z2,@R†ŒÁ’ÀŸxe¡åwåÊz¥Ö·WR Å¬	ËlOa6÷æ>AÔl1¼‹ŒÑ%8)†ôzïæ½›EéŸ°è"Å÷Ã‹Î7·WÉ±7ÜäÛÓ™®²JFÉU·pò5ù:lOZ§¡Æ¦ÈX~^sh ]Ì*ˆcVQnÂûò~ìÏ)’aYèÍ|‘ð#y_‚ë¡c-Û†vaÁ6‹Û‚>í6Ï§¿º„œjN‘2òqP^ÝšE{Œˆ¶6Ñò¾¾ÚšÖ!‡×
Z±ým|®q:ê¶™Px R‰¤.Ûspè#~œá'Ì}m&.§7ýùbX:Ké ‹d7^ìÁ­ßN^½g¯iíùÒ6z?Võúå5$®Ö'‹Ïµ¶Ôô£ôÔ>Î«oFÎò¹Í²ymi=ØQZï¼™ÉgÿQÚpw€ÊþJÍ“²)|Eœë¾¦×õ·~¾c>hõ'<Ø’
ƒ$G^ã ¸ƒ?`L°Ee·8X¦3X¬-÷@–Ô–ü2’UEš~Èávè n°ç>'Ú} è^,Õ~¥{è”lz7>|µ÷Ã—¤¤hŠ¤(WŠm#)Aùv~KvXE¶»Ñ/Xêy.•Fm5ížÃ¹ðNûXÌsdxÒüüætüüža½úTDM–IÒfu‚ùÍü®.Îö\xõ$Èã3<ŒþgŒav3hÞÿþÞ¤ùç´ªÓjîrg¦m[h ×QsQPáCz·x€¾"}•ØhÛÂè¥%R+A˜d˜Ñdø2’c¥”cž{¥1G£…¡ØInBËƒ£ÄWÕ¿ýÏÂðÓ/3öù™ù”,3Ëø^`Zéoïÿóû—éå^•öªÒŒ´b{y¯L…ñº4R	ªƒKš†|8ŽLò¬¾z7-’}«hù6ƒ]ûæñ:Å÷þff¦÷ÛëåD§þ'}›È¼´™ï½ÎZä¼.Wqõýê»¯`Î*øÖÊ´Vè?†…îc–ò/…b¶p™–F¬ûP¡OÁ^Á‡78Ü2]aaÀ*xw*Ôr³³h¾LyÖ›.ìh˜ß¦è««ûMÉÓi6›ç=xº_zÆ4û³ëÅ`æ¸¢½W°¯w!ÙÞÜ(›$k›MoÍ¬k’’g¿î”™ofÐ6rVì÷ÜÜ…I‘Ð»˜o™ïv2˜q
òWëä¯ËÕ+&ÿ’<ÚÓáô&™OŸœB»”¼L¨ò¹—’Wô2øi™~ïõU²?†”¢{l¦å¶Œî¶7†<oJåVneÎš„y•%O¡ôBÔ¦üˆs†++¦Œ"i‡6à	£\5FÖ>ð„q¬×É¼«áJ9á~Iúõï¿5x)¶þíÛþ7ÿõ\œäÛíÇÑ&A¥(—íM§\‹«{Ù$çá²m=ÃmÉ3j¿Ô>â‹)âjùÑ‰‰À;mbßi™ÒpµÙMVä"®9M—îS;uƒ§Q’Ç.½?btî8X²ôNLü ¥õÓ ]Gè>ÿÜwË7Ùù‹Ðµë7?;÷¹kOßé^¤ž7ã®=Ç]g›ßÕúnö,Ò¿\·˜dÙ!ÿxóU‹÷½Õ©H\—ÂùCãs,ûî‡ùA÷tiq[V]>“U¸ ³£êfÎ¼OÞQH|uÎÀ÷Mgû¥Ndý$Õÿã6ŽPÍ¨¨€›’2ó»¶áLÐe<†N¢Oˆ3ÃYÖ8¼xÕ¡øjóT?±´}µê5!	 m6ûÆuô‰yÔÈ;Ö<
üÆßZ…¶!qþîÃtøÙ.b‡žpÀdÀZíK‡øÀaÖá;]‚
“_Rû/•øó±"O´šÝ}ûïþñ—tŸÚöKÝpãnyA¿m:½|äìÈ´ª½r3_úïµÜ¹y·÷1ïpËŸ†‚€‰¦är£Ãï¾ùë/ß}ÿAH³¾#7ÎIÚü(Žz»ý—îï6ñ8kËÒŠNÇéÔ3ÎI§~{ku/1Õ×4KÏgýDÔRÕôƒe¿ÔE¶èÓª¦äº=ÜŽ_~þå×æ‹*Ôy½?ƒ
Ãä&)~ZÝ‰U·R‘Ù¶w>¼qmiÓEø¦6LPÑ»ƒséFïUªZõ~R¯ÚÛvJ¯\ÜaëNéÕKŽ\ÿ‘ËoxôŸ¦7…ú7E4 Ì·bÆëö0½ß~ü!Å°m¸½ûz‹¦`ís>š·á^ëö«%®Ùô&·È=YŠèý¬®A³Éb<­“ÓWír—-f5íÎŸ«0,nnB^ãí5ÍçY²pÕL`>¿ò‡õŠŸÔ(…ðÕ*Ìà×£áÇÐ7ã<‰ÞuúŒ¦)¦¦åb2\&SÎfÛû±½øÝ$a÷ÖëcÜÁ–F›”Nÿ¢ÌàŽÅÀC*¨…ˆµL"£Ì[dŠ©Bb(He8³FGê¤g£()ÁJéªTÚß>¬Cp¿•^`8˜äÃŸLrás*Õò­¾¯×.`+[xñûÒL~uÿ«á¤Ö®Ý«±k_žíUã¦¶WA8E|Ûò*4Çh«¦DH’Õ ­®éÂ¾˜^ŸÄôJQ÷îLÍ,¯[ÇöxæÑâsg²‘>ÔÐA~?Ã§‹"¿!â$FŒ+å­Šˆa½&UCe‘ƒ²¬¹H‡pð¿À|ÀTXTå…ëÜt<JD²p’©¯Pº…’¤–%:Ò«Ë%¤´)!åœ’m:Ê4c›Ž¶t0ãæ­{¡¡OCC%¼Ž44Û#ÒÐô¹G£¡½†VÎÇsµy±K¾Ø%;Ø%_¬‹/ÖÅsßþN]	»X	Ïké{1½='Ú‹!ìÒaaNº|ƒDK›Bs«ÀQ	›hçh£K%Æ1Êèyõo¦‹²fr÷ŒƒZtª¯Z¦¦×‚@(&ˆ·‹QÆ, ª%
äâÎ	„yÊ*‘±TÄT´Ï2I"Â‚EP:¢@ŒÇ‚WKú6ØÅÍMæ”V¹Ô#ÃÊ×då§5Úæ#œ7ßÞçR¶ÞBL(U˜ËÍbø‘±w¿Š˜¬·“,3¦)ôÚPn0¨ˆ·®Quú;7¡…NãÇw¿ž ˜-ùQ6MÖ‡ë_Ë~.eÆ}È¤Ÿ}ì—ûQ¹Çj28jÛÜ|Û'TŸKïðcnòfyûš|ëøê§Ô5üV–UmÃB~ó&yœ·ê>Ï[Í*?‡¼×ým8	3˜W«YÁ•ô³6¼ú·\ÙÐn·òVú‚ßæy»úxVõŸ[6ÿP<œV’‚¦ZJy+)u:ü<6“>n…“[!¥Tº¤[{@Aÿøö»ÿü€U€{ŒD›
"ë:–ã)ÉÈt>û`ÃÄÝ¦°âº‚–÷„0*72_¶ý8œÍfÔÏóé¢¶VfjþÁ,ü0ûàã‡ùpv›ZàÑ£áÍíáAí0Ë‹1CU‰“¶³‚Klë‡ùöàÃ4Ñ ù––†nÖòÓl8‡›Â²>øà2¸m˜Í²YÓÆ€_\ødîÂáéF ¶ #c³fGèƒ'Ø¨a‚‚Íf¾<?üÑ=Z,)?Ü4Ëã‡Ü6;ÕUãf;¢¦fVd:ÔrxøÛÙtn ß6=ý©™¤ƒÎç.vÊðÁe‹”8àðžÁD>ÂLƒ‘SÛ†75mt©a>1Óü6;|Rãfç•OS³ÙäpËy˜NAâ:Øp1eÆ°£áüÃÈÌnOâAFþa¯±9ü”6{åc³öøxcšQj¸³ë4 £²2ð¶è?ÉÒ¿š¸BpÜ¹Ú€ÒX!Æ¥‚#ñÂÚHT2¤œTÂHÅ™Ö!Î1eŽiï$‹Š#D…¼ÿeÂÖ$¥ïÔGN"üG Ù"ïÝ'¾ÈËšâÞùCüz›²‚¤L&f1Ï`‹Sê±Ñ—^*ƒmÜ~Ð8ÁHÉ'¢,vš÷â,÷2_÷nFÀ,__Ùl’Ù¬·¾ˆ’r’-Š¼)ãðº·Jwðº·.°žYñCÀùUjž¼1RÊ–iVþö¼iÍFf gj|áX±¾15ùþ·2™•ùþ)Ý¯†ÉmËQMRÌÕ–ŸWúp.³rZýòF®òà—÷¸±E™Nç¾¢Bþ:“&,X‰nN{·áè¤fÓ¶E3—3©÷¨ çú×¡Ö ÏkÚ•Oý.Ô4¹	Àü?Ïû>s‹·™»º)¥™¼zû©6ê½hóÝ$A“ƒÍþÏñÍ›oLÒ6›M¿4lúg ž›~€žÍß¼ù!«O“Q4þ¶ñÍ›ÎLmÂ—¢éo?þðæÍ/f–×gl+ÚÚ/óPë…^´JÛµÔ¾/Ú’Ô³ë²é8„'eCÀ¡ k5]¤´-MZÕ=
(dŸÒN³›‘ oÖè@-KRRcÖi'R
Qå´áÄG†SF6ˆÆQzG{å)Ó
ã \G:M …Ã|±B˜Ì]„V`Áï~N»ˆXòà2WÊ6Vî7«w’–-•)*,KH`GweÖ¯"§ü<ëÝ†Ñô~
a÷£WM9Ó’ÿf‘Ã"O™ÜÆ@"¤<dÎLz 8ç½ñb4N‰l}éjž½‚i½îYK+Îïs–¥ü)ûYÂ~˜ÄÔT¢)ïÙ0ÿÂäþgóÞ½ä*:¸ºú¯lÑAa1ò+>^¦~½ß…ÕÅÆÞh;	Á§O®ìS>¢Q‘W­¼˜é›-æ›{qVORàn òÈtw]H? GrÎ5›¶I	E¬ª¸» aL6ÝH1"ìp´ÕŽöqYì=QšÖMTó¾HE}>ÓÊê
o¯ùèlfLÕÑ¬v¿ÒT‘¹ú›KªGîŽ•V{{B'®áø³üãYš§N¥”nS¶®HmDÛmÈf¦ÉüvUÎÖß]¬¹í,{jún4„éuåÙl r¯;/ ¯8f_)ÅH4çåB`ÏQ©\!ÑHz)	8‹,¦žJ­˜C.…EˆFÉ¨£¤ÊÈÿî—¯“h~«]æÔº¯ã,·¡F¾OÝ‡÷ÙHoËö½<-Š‘€W-_W/Ñ®Y!ú—9ƒ}ïOßñ*	ò×W‰’å¯Sá—©ÆßŸ^÷¾ÞžØ«÷ï~Ý#þúO¥°Ÿ~Í†ÿ*~{õ*õï•ž"ãù,½î½ÿî‡”¬¿Ìv?	›_ôRÞôûé®(ÁÕ}&Ô"Žc1+”
«¦–…¸[\æ©]nLñßÂ	(é,ÿT'|Ðõk7îÕû.rŠù²¸øÌ ¦^¸e"Ö_gØ“?®Þ``þ)›Ý¥åä½´ùi†Ûç÷@Éê†/†M™Ý—l4l(¯–Ó¾¯—sõëfÏÕv$ˆ‡æSÙƒ°éÉ‘®Ž'ÃeÃóäÈ‘ü®áy9â÷cPB°x#ä/ýHr©õ^ŒA$<¬Ýœð¬0®¯«ëMõÁ¢Ù÷d£_¼ÿ~ýËo‰>è³IÛÐhýG#¡îsß6…"«ê;÷GU‹Ú’ñ½Ÿ\^Ù~ñRz‘”Ÿ<<Z9ûcFj;§#·¡Í¤Oö©&ð°ý'Ïªbk^¨cU àyÛ©«	€l¹%uù—«Í”‹ñý¤®¯kÏ~>ÎàÏêg$õý9Õp·³lR—5Â-j•—îðÜ~nòQÿ&ÏÍt]ø¡ºO"†éO.eÊ
ë}œgð8Ÿº›YÞO¸$/ÓÔ$`5 nÜm@ECW¼´òÙqÉg¢(ùœz±Æ½ÆÉ‹¡UÐÙìËt^ø9áæ®QéþÕl|$6°×‡uôZÓ¾Ý^ï~z÷áíÏ?ýùÝ÷ð qFÀ;¾^}Sç¹í>«¿} ~|÷kÃàªµúâ}ûô§6_Y Ëx¡Æq<ÞL?´î5‰ùÐÍôÔ‘$s±¬ý`f3ó¥SZ"˜¤ÍÁäyþá )£fS×2.z|(©m‡Ž‰a5¦pv9Ü$Ïwü‡÷•á0v¯§b5£eÞÿžÙþøî6‡TÀ­ÆF“¸ð%eL/§xU,k%.Y_=_«Õê
æ­FvôHøoõÅôëw|ÃˆÚ`<¸±÷…¼kÊ6B¹ë†m®dƒï¦í;ÉW‹Á^ÆÆÃ•O¦ïÜ9¨»ÑG¥Ý:\e±d2ýâ1ÃzÝ{j-nô‚è&¥°ÊuÅ¶­5íVsL?ËlžÂ¼F”¨+÷¬‹¥Ä€íÅÊ½#u+Í©ÜŠeï¯T™2Æ(«¯ªLåƒvICSÑ6ÿ’—/ûz-ÔÙ†÷”~›/ÝOãÔÚ˜×-K©à^eØ°ýR_u¨õM˜ß…/sc5ü=VyÞ·™wÇzríºØe’Ó¯"§Ü+æ›k×µ!E"¶T1!,eGƒLPDE?Á!¥=á,Ñ.#óNcÃsÎëíú‹vý ]ÇRRÿÚÐ®§1ª´ë+ý@»žrCmj×ÙáTP´ëµ/ÿh×»%Zk×ë×¼v]+Ü²jÙÚõd¼-zŽÚõ®ÛÐA»~ü§Zk×}òE»þ¢]DíúQÏàq>õ¢]Ñ®¿h×_´ë/Úõým^´ë]´ë]¹Ñ‹výE»þ¢]Ñ®¿h×/[»¾”Nº¨ŸÃ…=z)ƒõ
B±^c¼	Þk§ˆ–h«öyŒ¹”YÂ<²^Gf¤àª
%ûÛb¡ËxïEÒôÚ/…útefxQ¯ÿÔë _úž³ßsAØ*Bm[;ŽÁmçRâÍL‚JªºñòÑ7sÀnãÿÈ*rcn1Ìü‚\®ÿ9æ²epÿùòÀÏ½¥–ìÉZ+ÕÀ‡éþ¥žî_ö!8×„íC@ËF7éâ¯›];3p{r]U´ö!šÅh>Hë¯ê³5k®ýCtS1|Ñ¸ yjÐ¥—nÝíÒ‰µî4½s9P¤ùçÆ›½ì÷É§6í;æÁÁ;i8ÏéÝ®BžXîuIÌÒPƒ)Æý»áüò å‰ü6<—ˆëä¯­1XéÀ¸”Š!‘«àŒ· s2Á‚ÒVZ(U((b‚Ê¿@ÊHyÑ²Âá‚K\))¢ô|²ÞëàßRžÛéUËb[ÇCÊc}/. RçYð)_ å¤|H¦ðäSfÙ ÆÏ¼áÌh$­Ð8PKˆeL:¡=eV[åˆÉMÐ†*ü)
>j,«Š9ËlQ‰Z˜é}÷y:LÙ.{¿˜<ã{?esàcK~<œ$8s ±æ_R³Ârå·
?æ¡¨½üätùÉ«ÉÆ'óÞÇ¡é…±Ž ¶ýøë/ºüSªÔ’¿h³tXÁ‰“mü£ß¬ßÌü¤9þz©	ÊR½ï&‡³lRd•J©ÿ’;p­qËb‘Ýù5kÛß{äÏ]\†ƒn~“çÊQ™2j/0)xÑ^æò·ûAÎV“ë‚È†ãüf o3mÁAåÖw/‚›žH;Ã}¤‰È#¢Ö0ÏŒœ#…‘^¢G\íŒ`”IœÎD¬¢rH+«rV½pÓã´	5ßÀ
ÄÏÄM/-€ãnzéÁHµ-â}$7=>¼ 7=Íç..¢áÑ¸i‹…üq¸inÆÖ\’t
|ÓãcÔ^Æ„œ;Î0Âžc%<w"F‚½pÞÂÈÖ£,%Æiâxd·Nß§¥'½x£Gã¸Fø„ÓQöe9¾Ï€?Nzã0¶av••Å–Êw \³¬ÐÎ'o7àÅö–fÖôù8j)ŸRÔX>•B)µS>’R¶U<’.¹sK_$Ô'Pá¨ÛñÔÝS{La±øà¿‰¸è†â1ãà½{q¨5îáM~¿ãÆ\Ý¬´ËrŽ.NR¸à!×õe³þ¡€™¹·Û>›y×½vÉY/ŒKŸHê%$k°‹žr$¥\8iŒÕKg‰åNJ¢ƒ¦Qîˆ¾œ9ÉxðTYæå—>—ÜËË½RJÅÏÆ¥_$ßG”|§Ä¥O „vãÒ—)†ž‹K¹öÂ¥•K_\ŠFÒ0Æ”
”".•°ŽÑè	ÆQò5W&x£‘SÄDDÔZâ¤ÒDWU>±ÊgðÅYð2œ{©JÓ"O{Øø×[•Öå—ÖéôõKíÂn1ƒÊ€)° ÛÖo
‹ÍºTcªx£r/Ñ$MB$oið¾w;çÝcFqÄ…á!£‚LüŸ^“3HeÒ–=Êpä/ýy*8TõÎ;»}Ø/r	Ž÷m2
èXß#½vC|r¬pª¼Z"ÅM”N	†1‡µ€¬qH
Aid8xeMX©‰ Ä iÀšP\eÁ~Á
/XáL:Þ4R P'úLXá%Là¬J*XKsþ“b…3ë'öc…Ú¾`…çŽàŒæ·wí
ÖyÜ¦ÈW:`D±-¢1q yæ°²(Dä²”Ä|  "u!
‘J´–ãh#ÖØÁÜ°
´ð—b©½âw…Ž¾Lì¬Sö‡{Uüíƒî[nó^Ë_&ÕÿüÎL„‡#rsøWL9“ÝZÁïFÀ1Ãì|œ/Öw<|apÇ®—÷mõïíóß[mv8%êÖÕ†µÒJâUÛ†¨$“r;U1ÕRm†Î.ÅJJ«å†³ëÃ5ë×^°¶üðQÙátê…#ýíöâXæHày;Þ¸áê¶1×Zõ{+ÒQI¯7¾vÞ-Ußá‡ù<-´Í:{Ä ÇgûmË÷p^àŽÙ~'ÆÍzâm^ÿ”,ðü×*‰]¡.sá(ƒ÷>òàÙ¾2vX{–p§˜\`V°½Íœ}^X+}ƒ“_µ<Ø¢¿˜ç28¶òwÜâGU>vþZçy\e–µú/mdQëïmy4Ü*nñY0þÊj£µv´…O$“)uäBqšG)§1£ $\àÑ2Å$	Qýÿì½ÛrÇ’6zÏ§@ü7#‡°ÎÍ„,Ù^ò’lmSžµæŠQ]UM¶Øh@×ÅÄ<Ä¾ÜûåæIvVul€@pesÖÈ$ª¬CWg~™•Ë˜â€ÀX¢%Ýj¡™4Î¯ ô‡$‚®•Ý¾bßhÛyÄàH…mája…ÙŽ8"kn‹8ÄªWm˜wê
ŽÂYÚ†
îÃBªìÅÞæ¦ÙŽ‹“cëoù>( »”ÚC«ßÙ6è¼ Î
õGÌ‚wQ{YJUV2k¸L-ÅNSÏ¼å2µV áM4IEðwsž;©WÎi½6–ÿUYpÔOj«Ÿ¬OÌ‚Ÿ”Ô£(©À‚iÇâ:GV%žXp\¬5Ø<'æAýº¯éÓ¤0vK™2F%‹†Œ$8¥TÖH ²AJQçR´v)“P„kò ÁB³d®›˜ðû¸½PÏÀL³§KÌÇu‰]½ÃF÷lù ³•'<µm4Ü‡Ú½û“ÝË'Ð0úrŸ­êîqïíýƒÞBœ wË†Ãà1œ-\˜ÂæV	.Ò­ØûR\ MƒÛzÑ†ÜW/è§g÷ƒDQŒô1Ü®žXl=ÉöÔ¾’q½–‡kZ­{Çˆbmò°­0'g¬ÅvÑ±Öîàö¨B·òÜ÷½±m;­œuœ÷iüÉŽåáÖlô<~B“nwÒ«ç€7Á]oŸ;ý“ÞŠàŠúðhñ@^m,õHxÍ$JXª™c –jSÉD(~lÆ6AcÃøMi‘Å<•r‚ÌZ|B‹Oh±ÑOµöÅÃ’³5ÛÎAÑâ“;Þ‘cÉŽîx´¸OàãnhñÈ…Çòq<ZÜ=aÏZ|œh±tG}TVÅÔc¢=ó”#™ÕŽ1e¸3Z`!,BÒ%Ö %¸¦Š•bø/#ŽQfRÛü.„üT8àÖ\æ Pß¬5ï+Œ0ª$øÿf"_­\êkmõNGÐV.‡wæ'ÑIDË¨ˆ.8å3z,F‘žqô²e‰Ë3Úº`n÷»«=²¡m÷Õ˜€†ú¶lYÅ•³<¡ÖtûA%ëJ¼ëä—;ôht„ûú"î@¦cœ²6ø‰KÂxj¹N(È4ª8C"52I%b)¶V	Émª¨cÖº`ñ¤ÿë‰¸t[Åø1DÜ“V{\­Vî’9§«ˆ;vîš'wHwIä¨b.ð§uÁ‹ý1¥¥Ã)—Î:Â‘GØ)Ðã´£V
­uÔÛt"1µÜxÁ@'ÁÈxÏG©ç![»Þš–îÚÇôs«E×z‹õ?÷M<{)€ƒÕÝ)‹‡ô-…·+Ñ6…§‚áÕBx#Ž$­L$ÕmÂÛ‹­z¬	ü: o!iŸ’1îÃW<ªÓÕ¿+–ö4¹·¥r “{1Ôq²nE0ê¥:3äãgß=,Éfß5wq£¼[‡"iH`yé¿ÌÆ‡ƒ.n|³KOàŸÆóY·N°›S7êÖg<›\Ú ü´{Ç!ˆˆÙø“ï8æäÖí²'ñí¾,‚Ûºuô“áe	ŒºõÌ3wÕuuEŸË™É;Ns>Ï\·· ‹îF¶}'Øóñp|u·©Çž*à†6JÑiÔ¦åX†b–?­K•î»¼Q'Áƒp¿³ô?<Áæ3vXóm¨jy3†wkZ7*H½dÝ´Å öz:ÝÕ5¸LÙÏM>ì_å¹™dKR#"M›[Ÿo|?ü^—ˆÂiþR«‘Âª¨\Tzõ¯¬.1j@ž®nx^±Ø¼º]»Ï–zš,Á§¹“® Þøišðþ'—ôK¾_7 
G ñ<GŠ“OÙ(›õÇ@Öù°þ-Å*XV¤»Öšé5Ïšàcû€´”vz7™Cp§>¿½ÿñ×‹‹·—þ‡Ú¸²ö2ý[ŽXéðó«W—p.vìG¸eÏÈ¡.ÃÃê²ºU>¸$—ïÞ|hGç¿ßdÚrìÕ>‹¿.i‡Q§& ’j;â²}øíu©Ø Ök[¶;ÙaMÃ˜P`ÇžbP4.;÷¹i?Ìnbl—M|Ðí××¿_þý÷øû—¯.Ñ µ=±Î(™uzÙ%ûëº	Ú÷È™i§sýº¼ýËæaŠ¦7O:mÇ}û·o~xÿÛûmùY‘|=ØÏ»·Þëâå»^^þñáÍÛ.‹Ìóü2"º¨·|½ÛÅÅÅå«ÿðîåû0|{* /c"ù®Ã¯u Arùæu1¼Ç$Öi±¶´‚¥ol»¼õÕ^¾}ûÛ«KO´ìí?Ã']vn>ÊòY(Úe’¥ªÙú»oÿÇo^_¶~€\J`Ðf @z—ÁêYÉz4Ä¨Ôp<þ4ŸÀ1(¬ûõj€èr¹ÏW€ä>(?Ò«Ç­iÁQ/‹2Ô^Œ1¶Ttê2pû8®K¬ /(m£¼Qÿ
-ƒä,õ™Êüº@†Õïôæù•È»æ6ãþ§¬®€ø¾5µÇ+ˆÅv5¤,b€vEmýò¶î€ Ú^(¼ŽfáÜÜ¢ßæ½#Ë•´³’~ëTnÏáÄ5\/WP{)^Ò¯êm~•µhÚœl:ºg?ÿúÇåß^^ü­Žîz§~´»ôVwè×ÆoÛûá°õA|Õsf.¸cÈÇéì:¿©c ÈL-nñôcY—ÌÞ@²Ü Ü"mÜæ¤pí[Ó­y–u®„3S›Úôû ÁÅ³Ÿ0ƒÙfÓñ^aIúB£™Ï+ëÜàIúÅ©“çAfNÌMd®Ž ÖT—õ£¤Ý>JaîS°Jé{Ô–]©K›æõð±ÈúW¶bmÙ•ƒáÕéãÒô>pçãéÕòN¾ª.?aB\lR¤(ì×wZ)6eÜç,o¬êœè°©•5ýò¾¿¹ePŸú…OIcãÐ4Í¾4¶+‚îZ¯ ›µlœ‡[±Ö×®=@œ¶;1ß|b;§MmKœ~8ŽYÈ­Uß„EËùŽg“x3ÙÏn&ãé¬©yi×mG{±spGuY3th¹ÝžpÜYLÞVßla~‡“×ren­ç“«©q³)o.û7YôÔjhngÃ}Ó®Ü><&qi°J£ŒŽ–‰¦)K<AF&8±„qb‰–Ld%v6U‰OQÂ=s6IÒm^tÛ
Â<ùÑ=ùÑùcøÑÉ¶îûkràWÓâ3jÇTóâ3Éh«r¸+/ö“#ÿ)¼é4“]“>ð¦+Ø©êT®æˆwÙ§H`oCpËjV(ÜžØåáTÎSï®VÇWã<˜¨ê–¡êv;¨àÓ–×ªN==@žÞJbû«ÀµÊÔöñàœWT»OÎö££Îfí®‰`„Ý“ÄÔßN³™ß™@mÇ•Äþ­/ÞÑv­¯g7›zõëó<O¦ã[xÂƒ6­ç#S‚1ï6wØ8x˜ñA´ÙÂjû6'aC¯Å/­[8îÅ÷_f;ôG¤•wê½êˆXœœ‡f/ÕÆòÇ¤×XO©AžPN“žk‚tBJHâ}(jÉ)dâ÷	ó!»¬J0—Â¢PÌŠ¢-zMTOî“×¿^”`¹€áù|Ôýó#dÜhC«‹_õòìj »A÷Ù8 û ³ÿðæ××==èý6ñ£²Ó²nÖ'¿P£‚¯ù#‚õºuT®Ær­ú#|BEÔkFkéá@?áù“æx²ûâyxZ'ó0æ|+JÆ­Ð­…öz€ï/QÅà}Ý­c Õww#—4^ÍÑ6³‘âä“Í1>è$’ýÆ‹÷Î„Jñ„¡]Á×^ŒÜÛ¦pÑæ‚v×*[‡Ó—Â[~xe©Ê;vÌv°Û·˜¼x†[à4lvÁÌ£è…¦ E‚iÞµj?v
TÔ|×äùƒË„½ ï,SûÆ=¦¨xG,
9ÌˆÓšyŠ8qØbM¬Wš)šªs%ŽZÂS§&LÏ$óÞ&ÛRœýG6ÍÍ°šCuaž,R¡–¯ˆ‹ õA:nV^“1f:ÎsPƒÍð¦l»Å²6êr´Þíxú)˜®/‚ûj•ÓŠè.˜ãï­Õ—±˜#$ X™Ù•…‹µœéZ¡IHókf½14~<øX£¶áãDJÅWÃÇ‰¦ZU«í-X„¼8ÿOQä§ÁÉŒ‰Ó²®=°¡Ööä¿µó8ÑÞßJ^žõ½@,ü#úf‚sd‡mãVß¿ÁÄ~êP¿SäøV"Ü¾VüÖŸ2ªê±BE0ÎÄä¹KºñTûa<ï_^\¼þf@Z‡±|Í ¢›$Þlt¸ÚåâÝ¯~ûõ§ÖñR7I™Ë£õ1XéÃ½}{öèÛ~gömÜ“/‚’Z6ë@µð´vúS„:-¢Z¤³[D¬…‚µñàoO›vy´mïå‡«±­°®¸˜×:÷Ç÷þ6EÛÝ#qç¾¨‡·º<À¾;š^27†¶S€›ýblœö‹±uæ4XKð×Á::7÷£?{XCGèòÏæ¾kþÐÅ^Äöâ§)]7·dB‰fcð¥…s™Û¸UžAd•–8¦¬¦Ì;l°%J¥	Ù1J„eÜ¥Š!¦)¹ÒÎaMiºÅ¢òÎ›|>÷m½?-^½?ÿãõû^bFî6s³ë^XqØ¥‘õ5‡¡UQò&’š{7ùÞù’ÝÀú€ò=ÕçÁÆ1¾f“Ù5lõ|K×¤gŸÍ4ÏƒÅd
[Ø>~‘aJö>³ðQ–Ï2›zÅ S¬oy•¶óCswö1›Í‚!è	¦äzÃqžÕtR©^ìó‘ŸÇó²¥Z±Ò+Šh¥ZqøˆI…7_0"¯Wü™+PÐqsö½pˆûpûñ$Âùmcùáâõþ6‘—“èÜ½ÎÃ]ñ6ê˜Ö‘µÅîŸ©žŠ{W¦VFbõµ|7ð†ZÑø@IC}à¶4c6- ±È,‘ó]a&o£Õ¯vh¯‰î®´Ö÷¼‰¡pÚYÄš“X6{ö?þ~(»	Æ›×Ö_=;DÕ£œ{ñYHÏBÜZ`¶½ŸØYdjLšr,SÌQªRœ$ÈJnYé±Ãoõùki• Š(O‘ç©O=™YdÊ"Sª-"“h´Z†P‘¬*2©Ð-í×¤Hû»„'¡YMÅ…Ðl°Øï(4™LòdÒóT¶ßBš¶µã,åe×ö¥|mi-vØ„=ä-æ­Œ‡»7™ÿ¼³_ ¨V³‹ì&{Mêˆ³NQáL‚NCö€Q†•!´Ó”)…æ”É9GB#¹%’)e·:¾¾{Ó‹&3O>ÆöðÍËª§ñ‹<QBÃqk¹5…ä-)Ý^göºw
©ATú‚vI3Žo¢ÈýáÝ+øif!fí,ñaØ0~€ñû‹ßFÉk†ùgÓã¤¹Ïóèž°œÜQjX_ ƒ‚MÃB®ü Ö-2UŠ<‹ŠLÕ„(-…Ø(S	¢‚¯ª¡œ"†PE¦rŠù7ÊÔø úÅaëÇìÔ‚µë=ÙMœdm©{U)º
Õ¥ÛjÜúZI¸•l‘°‘âÁ	¶‘Ù5„‡êâùë²ùfM—<n›ûì|šû¼ËPS8úÃläCÙö:&¥ãÖƒ´¿¤ØÕoóð aÝÿ°òuæïµ&»A‰px¿
–pÎèTP *Xbe©G»3CTj±6 ±sÐÙ™¤ÖyíR.¨¶© ×™-XâYQ=Hùˆ+Êàúí¨aÅ/´6 ÿ @Ì+”BäÌ456 ƒè9è|Ê/@C<sBÐà†Ãì*€‡÷¥óLïÝ2ü%~(×/¤“-½	‹Ùfù™õ‚wro‘m4NàÆ€üùÈaPê³à]\‹äSÀ:3äã[?]¬xpVT«_¬Ãáà(3…1}±Ž0hßLÒ¾²(”W×=ŸÅ\æìSPJ‡=7ÍB¼O>Deòì'óM)ýþîÕûÞÛ—¿oÈÙØŽCýúfòzlZûgÒ3Îå+¡H~Ù ô’g÷³Êruá~š™a?Ì¢Oç#™°rØˆ7³ûx¤@ºù3ZØ]. jÀG¯ÍÌô~‡£žgÑ'ôÙÅëß¿ƒ¹,ŸÍ]hŸm?›á<$i¨|(…'æ8-(GîÑû1<³³· Ÿ üî9Ì	VèôSæ‡.:„“FïQ6ë=ûé÷?¾‰â‹ëy¾œp˜Oîg±wXqÁ8æÓ²YØ{mò<œí•Sñè ªÄ­*Ck±^§ˆ	‚Wê!ÁQˆº¸=aÔöUi‚ºaÔÇXKê¹øg¼¨Q—ßq	À
OÅ¯ŽOŸ å¤ÜRN[yly78›l~ë¼Cîí]ˆ¹Lýœw³;J¥Ë´˜Ý ª¥8ñT*Ž5 P©S…SÂrNS%$ , SŒÄ]jå#Œ“DÂ§u6Às“…$×%x*’4-âa.ÒY•ûÌ]1V0BùÙ|òÐbal²(dfq„Ï%íÂÓèl±F6ªŒ^`½"ÙÔ¦ùD™øÅgQöôrk†‘Hû5³L[U&‹‚Çbzv8K¨èv`ãÍxêÏFcXU1 )rÂ'ì´è4õ.†éäÒ1Ž&dÍŒ	à A}¡gš³t =š þ<æõ*ïñÂg‹©zô„ùþ´Hª•`Î¿€ÍïÇYÏ@æ àƒ!žÅ}öÝñ†TX ‚Ë›ºïŠž ?
 ãg}ù€}€n7~v=,úì×—ž‡›¿QÈyyU<¸bÁ=€æ„|vuCƒšQTIÌðj<°~„ uÀÅã$<þÛØÜ‡¿ï?ïéÐ›|Óü›Viûð« ¢Â‘‰uÝ–þ«4ˆúFìZæ ,zÁ£‡ÅÅ?ú€W¯—‹/Éâ³ïŽ[sÀ­å™!Q“yr³ŽžÇÐÖò«óò]Ûd•ÔD^²J
M¢¬@lÇ*ÉWªmnQæ;Nª8\wÄ¯!Š|;PVº/|%˜©Žðuib“i †›„Î¼É–Z;ðº™êiªå¨„øhØ§ÑMµ®ÈRéÿ¼¤­;^ùÆ[íÖiÐÓvy$ðVîa0-Dñg½Ý´D“MÚ¥Ÿ-šææ³ßã~ñýd<©rµs®#‚°Âd	ÔÅà*›aJSfYGã¬bž8C„E:!Å± wÆ&E€y=åÊXÀ¾!ch‚0æ‚+Ø×z¾ÍÉê×†…F²ÝÄTÀ áÓÂöuñÃóÞ«×Ïw'“»~þýzÅ®Özgïÿùc™âµ°¡F¹°¥a„bØA¯j4%Ô:›¸h©æAh1™f„Ç]/þý·wùóÂrzcFw=ÿà`o™µ´Œž½þõâyïo>¼ÞË.^]¼yÞƒÓº°Ç>05”'·å~?Ö¶¡€EÐîì__¿YìÅ‘íy_|M 8×K­©ÚïÂGBnñs‚ñ +À´(yÕ€ÇÆ˜5ð*oLqôû}ÇJ¤xºÆ¹¬0 Uá&‹õq
“óA¯ýgO5´óAý>¦ù6ªföç]í€+Ï®ÖØŠ£Õ@–f+ÈÕÆ¹lˆ‹ÁƒúÈ˜™þt|ó>¥šQäHêœ&<I$Å†X£DêEâŒ±ÀûSé°¡ÖxN9ÂÖq†1¢^{DT†ØÛ 8ß[ögeè–úøµdmùµ”eòê*¿–L&e•aKê¬nN)û·þzÜZsÅÜ:<·£rêFåòþøüßþf~¸¹ìd;¿z°'§•q¾¾ØÐÖ0©¬b© UÁpƒ¬’èÄèT¥Zc›z­9ZjøUIŒ"25´«ØÈ—Úä®÷ýøîç1¨Çaðì‡fe²ÑÙã2Š¶V
ˆdB9$¢ŒVe|"$jN U}?žäÌWÔ
¤`»hG`ð»«'s.?…ƒµûu'^¤£Ñ] ’Jzš(ì©VâD'°õ„`n<Vi"…ISŠE	e‰ÔŠ)M¬ØæÞÿ.d@2ÓÞ¸bï&\í½ùýUY„¦x¯Þûé°Wò«Ú$Öac
÷þ›’h=©Aï·Ñð.Žª]ú³t]³bŒ€O§Ð¾_Š•âòç?ÿù×ßÞýØ«6Ï8ìÓ2@`qÉ
½ŽÊnÃšëø­„0ÂtõîI,Ù9'µ$ °¯°[Î¨UvË%—Íáæanýxâúô+Ý?­ÄÏ½Zñ<â}Ôƒ…ïË/Y÷ØóÅuT˜KÃEÏF–°™	j%Öî*ª=Ñ7µ—Em„|Ü*Á0…go÷	ÕÊ¾'òâÅ›©=¥Àšþxs bí	í®†-üÈºDò}g57ì’ðé
þõƒŸS‡»¶«"·_×n¼èÂãíù€´îœMŒëtkXíÒÙcŽËxø¹SŠ³NAš«v8
Ý|ý Ã"É\«éÅ7ðÅ»ß^ÿñöÇËW¿½{ÿòÃex\ÚØë•™N½¾™·Q;mlúc™¯º±a>›f¶yUŸÍ4?Rø,ézÙ[ ¡š¬PÑù`<›e5ß—Ðz‹ÚüA¸L»Q $ÜWûî˜ó"ÑÄ– ¯æÀ-î¤L¡T£<|—RÁ4K]Š¸&BÖJÏ÷rkÁ™PÎÅO{“1 Ù`¸È&ó"¹u/¼ÕÐ¤Æ¢’ ^¶,£T$bˆÄl£1,#6ÆiQƒf1f~–¿´ÂxMŒS€Ã°u>èU<òÆp dFñÒ7ï,Fçä?4Àá´è¹,Mý4äà~Þó7A#ˆå6Ã^</2té]Ï‡ÃçgÏÊy}×Õ&Ú„ïg;\Ð…‹£C^4Ðý—ÌŽ¯¦frÙ³àÍÒ{Ìóð}™¶Þ´*¡|ã&º¹Ù±Â––á•ægpb@gd8¿)W‚dfEüq¹ìhÍzóö}(	|—Ž–W~†¡ºÕ|˜…ìén^Î>º/fÑËÒÇy4OAŸ3É{ÏŠ`éso‚¢|3ögq¡Êé2g¹‡áÍð.ÏŠ‡d$5É¼õ·YP®Ÿô'ãáÝh|“ÁÔ«'„¸*"N²Ñ43ƒtºMcIn˜ï5&.¥æðbm¶P!Ä¥ZU™¨ÒHÒªÇ|BYóµu>ì¬ c†®wo>ì¯,-‘FŸ3Ðl£ém|cê£iKëkÞÛ¸D°\fŒli\ÊkCD¢{"ÓØ{#oßF«MŽ¯N4ƒNT"¤º`™J3~ o¿c¦3¹º)r ã Vƒ:
ÚšëöÈ&.q)§VYLR¦˜¦‰3žIGà'ãŒp„±À¼°áŠH‡sÂc$¹6þ	<Á‚'X°ðXÀ6;ñ+ñ:* ©UT@$åÍžüë²½õ	TqÁß<.h0•îŒZš>– á[I|¶D
ÇÎ÷Õ"™ø.ÐaÜ<ug@:zQY°|H¹A†ê„¡”˜%’yËd*÷¥RJb¬JeÒJ Òyø›9ê”“ŽÉm8Þ\üÖ‹R"äÛ*¤@”.ÃÅ¥L«DKŒ˜3H
ª{oá½Ÿ>%ýçËïèg¯â•ž½ÛÔ äÂê}ùÐcZ‡J‹0ÅE‹>9ËçI¶lWñ¼Ìþ5Ô²éÊ‚‚ƒß•ŸÅÛÍc»_„`µD¦8Ÿdfï—GfmnÎ+'ªNÌ©bn¡R­‰9*(¶«r+LRÕüÔX1¤1m–t‹É†ƒÛ'1Þ~­°µÝœ,6-vo!G9Õ]]ø©O¹‰“ìÃ÷¿Üµ™ŽÁ2û.øËœžq
ÌÅiÂˆIŒÆNI‚A­"ZÈÐŸR:%$ÕNÊ$M©ñZ"&q)c	I’mz×Oð‚.ý¼~@¥ÎPy©»å1
Üæ^FE&ð`Œ³Ûk?*¸AÔO
e¤Œ›žçþ~ôo‚³é¶œ+±žuàcÅ¯Y5ú›­Å'ž¶+OS´³WòêÖïÂØ6Ýz}ºZ¸U,è7$–¸S_^OÝ¿©µŠÂÞÌ|o|ã8ð¡®F/¼t÷¸/ýÓÑG-U&ÑžcY|,L	U)ó˜ÚÄ[ëbÒ»$Ð§Þƒî GRÖaµ5ý{‘“#+yã¢îkáÐ—ÚËn&C3šÅDf-zuü82Î²ûÆ<_±¤¾°ùÀ.eiH'²Ám˜@Èxg¡…@ÅLŽËš+¹Ü§×†9=¯œ„ŽÌ˜TÈ2…ìÖT|Í¢"8¡ºÂ“ƒpcJ÷Å¬úñ =×´ÂÄrT¾¼aÑû÷	Ñ5»ûb"›ØS¨'Xgi$¼—ÇÓ#‹Âß`œ;$#œ°ØÝ:—‰’5­µÛElÌàÛR!ÈûÓù(ðŠƒXdaÓEa(5 <N|ÂJA‚Æ•´9‡qÊiâC »°ˆj ù
$	²áöÄ8½-Öquy½åòºáõÍTŽl"¯9øh>›A¬AQÇÒE…¥Ì‚‘`KÎF¦ÔjÄ7l5©–éby›[ÃÒ7~8}Ýo¿zýúmðÝ-ò
ÜGwø/ÖO*ŽÃ'‚â&Ì[°>â»±ý•©lÈÞ¬Þ“ozJõy7½Å‰ß|=Êƒ|>½Ø<^-``“ñÍ‹}FçWÙÚPƒ®9DI¯ðº÷ÃQúü^£¨ì¼—¬ue³™òÏûÑÊñÎB-W÷¿>MáæÃt˜ œÕc0+Â³N-»„¢Ö8V„­yâ}ª5Á
1LUbR’X‚Y*½R<I!Bd<BP7çÛLOkR§\Ü^’+Òø–å–r5ò]hŠ«12iÚQnÅMy’ZG•Z²ûðÃgt2™G;®ÄŠCU^µ[Ä·#­ê·ùE¹ÜúÆð&Â×~ ÚÓøwˆœ½EÎòM…#ÚË?g§»âlB©"X¦^Iã™‰LˆS”3f|ŠÖIøÔz­•`ÈÍQ‚©±­bò›eÞÒ¾{[½ÞíëÜ‘úá¢"µ‹
Žyïn<5£J>’sc;÷,y¢ú[qó¼¼Û™ÎãÌt|$üƒ¾*ªDYQƒÇV1“æªwág½g0èwaJBÞ·´ÛpS³2n¨p=¾-’2ø,›¦ÃrËòUÇ•ÒÅQ©Í@ÂÕñj1øˆ3´ÙJÈˆ«ùÂ¨¬š	áy·¨PL-Æo‰Î×6AÓX	wúßÍájÃ‚÷÷¹¢´«À-¦Ñ”ÿ‡Øû’e˜%þ‹·ç“²4Kr7»¾¿žÞt#Ð>ôür3$µ<|Íp¶`’»›Ì>ÂwùxÔ7£Ñx¶ðŸÙ•çbx‘ïµ]¼'€Ð÷Œ³ï…tÖZÃÚ3ce‘Ç!xœ¤”Y”(Í¥0cÈ'F;‡IRP<´A8a„zŠ©”«©OÛÂŒ_§-—oH~)¶"°WÔ˜×¸&;ú"1ayº(ÚW•??‹Ÿ&w+äûðôŠ›ðâÑœìjå'RƒÈ8ßøà73O.(áªzé©¸ÜþO”Æ«©§©^¹bQœ’¦‹ïóë'¬_{¶:ð×—o{À¾!­fçMÙ_éQwãÁæZÏ»qZÆcÜtPÎÿÔ¿Ø0¥"ÎéãµÑ’]êI›Gì·ÊÇ®9Â½`±C6æ^>†´ã}oMIªi{i'¥&Ö%Ò€Bá¥TÒZP/œf ÌpÂ1ôÌ*ŒFŽ"|Ø%S
Ÿâíéq¢ „>q0¥jkk­G­¢ÎZÞ»˜M½	‘$½—ïß„:m·~8<3±Gf{°²)ˆ<“„pšýqd¯®ZùV<ãM‚M ÆáÿiÅw >b
)¡7ûp"5Vƒ4™Vh%FSˆÆ¬6Õ¹måßÕ#ô­5¶Pk¿ûK3]qªê$ÍÂ$wcÙÂ>b%üqùÿ8àê¸®¿’Ä
ÊCÐ•Žfœö
4„K®	– !a7&9¥”#ÊJæ±bŒ[Mêâ(¡’«m):.¢	7êK+úÚ32øò]½—\™ØŸÌ§“PV}…æJ)Ï2šÄû˜Ím¸2P¨Ûyö~¡ÆDž‘³ÅèÃphÕ,$#ÐÜOÏ‹g!¡g1ó"ÎtÂülAöåšºRhó+JÎÅYÛjTz¡Àëz¡
éŸ7:CSJ	^Õ1§TëjNø„‹Foõ9I5ŒëkxO/%êNžz»íÎþa#ˆî(U},
âb>'‘®‹ÁN(awXßI¤¬<ÊZkÀ@ÙDÿGóeš÷?†_Ë§0Ýè>,ibÈy„)K(  ,fÖƒÜ—ij îÊ(Q)N‚(!ˆÁ·Fh¹”2²ÿËËþ~Ñÿåâ·_·úŸVäølÜ»î=ô½ÐdÎd>;Ïgð£ê/ÿÙÿý"ú¼Ç¬ÛÅ8{6Ì>A—Ö¡À¿ÿxñÁ›üî»ò.mY4}Å\\b‰¯(­‹ã±8µ¶\ØªÌ¦!ÿÐF™M˜âz5€	¡•&‚Qk[î†#Ügñ7é^c<˜º9ÙQL¯=ºV[²¿
Ì$ßMXoxŠõb¤³éÈ{ãd^ÔL­AÄéÚÔ§{ŒÛFš×^#Ìãxƒƒ¬úO%×7=•àtq¤CPæåxe²V6Ù**ìþÑ d,E[&BÕCr8q ¤R‚¤‘[Ë¹T	uÀ¢¨£ùÔ
/TÒm‹Ÿ[ˆÛRnWV^ëDZ¤rŸgYùx)•
“öÒ·t4
õAb8KÇÁ'`€(òËòx/"¾xÞ»¸	/Ï „¤Tá³ïžßœç½W?üö{ï™ópí§½O€zãôlµá¾|÷ö[¢-x`ðWÍåLák9GD5ÅÚí#%Ÿ€Ãá¡z/à°œîãGÛ†;9Dè¶Æ?2Ø®£ÂJt¿Lì.èåÒÝFÐƒŠOh’ˆÄ¨#ç±4õÜpD½5:Ñ”§,%Œ{©ÌI©Ó^
ë¶9Ê‚ìýaÅ­ª¬ÒÅæQéR¨í¨š˜ÆÐK7ØÏð4Ægÿ«øõ-Ç©ôx¾bœ_Â€£kþ »o³OYå0^N0,ëe[.µf©×o‰L
ëµšŒJT“2-S—4œä~<’ýÚÃøÈødbƒ¥íg¥ßgá×µ£4ß2ízñÒ‰	Ikœàño#ñëgP#ñ‹1[ÿc¿W”ÿG‡&Ò]CÈs7½¬$¼¬}/¸¢;Ô1çlb5KS„¥§DccŒšB…ç†åˆK¼eÊ:•zo¸c j¤ÖÆaµ-/Â/pN~ð„úKâ»F?…œÆ!ÍN½g@}ßÞ³_^þô]aDXþý——"r'd?;4zÿÂ®0i¢c¨Žùä{Æ}6£YxFãôžNî§E±ÍÙøÅÙ}¤MˆÐ	[Ú„2M²YLtó‡OÃIù÷)ÙLòy‹cƒOB˜O6û÷3—åv23R•ôÕ0Ílh’¡þ
Ð0ÞoD!?šeLho&EéQøû,	DD¹´
½gùw'³Xx;Ì&¹ï{Ï>žÇ3½ç©¨U=ïqŽ XR¹Ù¡Oa)×üC!ªíÞNzo„4æÄÁýÚ¥š9H±Ï"™vëß­ ànÒ­¤õeá:1¹ZþÂVÍ’‰¼€Õ,î‹ñ;Óþh>ÁÞ˜ÊG§å0Ú@÷áG}3iª9xÀ‘ö_ØJôò=ñÁUfßÝzìÈî@È§†qcûˆù‚}Ših®IFJ2Ðz¡T§Þ ¡HÊ}BÓ”ËU*Ó4aØ»„8²ýr$.4Z(¢xÜyÖ>R®Ú
p)5¨¯+aDªQ¤Ió-Ãò¸<‰òˆrBRgQ¾xDéûqÃ£³±Èê—©6Â»UT£îÊÕœ™.w‡¨9€#ÌtÊ¥5Ž£TH™PÆD9Q†HB´gA“K˜`aG­ÔI
*‹XÀŸÛRýR,½÷ªÌ÷ó·Þ¿*
q/½¶ŠôÓeyîž_ÐBÃ¥šÕ?õo°ªi?ÔÈí}©RP›ÞOÇ³±{Ï¥¨þA£ëP©&ŒvïŒu5‚×Ñ‚êt6Y´Ÿ—…pbA€˜`Á‡¤	ÎÜzÿðÉRã{Þƒ/‚~Ù÷£ ¹3yš‘õe9ƒà³>ßÎ®ÃzÊÆ•@áÚ:…ã1¨£“²ËÙt<ŒºÇMXÎ,ñwãÂï|ÚwSà‹£Þ-L(1à£²ú@6²Sor“DŒæ7	ìEPB+IFí6ê)u¹Ù…½}pör8»Ï¯®ãù’–\(Å*VúBƒùhC­×ÀNòÞçÌDòÏC^	7öùèßfq€t>'ð_²$‹Ná–~Åpä}YåéÆŒîV–RTbßtÈÎÊSö{<Š'ËûOQ½†—<Th€ñyœEºÅ|Š´º=ŸÂ‘}ŸŸÍ'ýÙ8uJ—í³ùÔ÷§¡ÒÑbC–çxQÕií$‡‡ÛÔ6¾v²Ë"W5 O-WuöÚ‡³YF¢ßÛ*n¯³¡¯Ìv:NæáWžA˜@¸",6aqvžß§ûBâåµàÉÅ!°ÓðõÙ2Ý{èÛ7·fº\ßÊ‘Êç°#1Š°z á¯³ò}){Á‡0É‚Åæ3°´hW)—êžý³˜‹>õh“yHnl«%Üzo³ÄéE–ž ¤äãç÷|¼!¼bÍÛ«eö©uWMNC®F'šB|%:1ÝlÍØ&rú ;úõRcÇ‹g‹?àY•ñß}S¨iŸ-Û?·½@±Ô¶	×¥>î¶jåÅëðâáØ‰ð›´ý­t›µûfâ¨|­ÆØw1Ñ‚PÉ¶ÈnØ~‡
)_ž¿PmÀÖLz­ùp|u’e“â^@ƒºÛUKÆ.¡î×õbå¯WEÕ5¾XûûÀ×C£P¬|Wó–K†°â¤…€Pý½0:žöšDz„W‚šP7Eƒê ”áÜ{œ2á4CÆPíŠ˜rŽPh¦I­.UÒa›lÕ$`™Å-Nxœ+¥CËÍE]„ˆc&S?xùëÅ› 3¶ªOÖè•aò›PÊke°XV“¸…Ê7Ç8ËF¡Í4^OÅÊ¤Ù¯¢×7+jP$³ s¡fy•Ÿµ5Ý8€çEÀÓ1ÎåÈÍÛH.ÁùÕÔXÐºç<üZàÊè ‹ø”!4°ÊÄÕVGô•Ÿ;_Üi£ÚxÓº¶˜äb‘G…^i±¢tPš¡²ñy<î[‹s2N9×z%}+U!ÅßæË#$éÚå
;«¦'Œhc½î8©~ñ2õë^£?¹3LÛ]ØßU1Ù-ÁäêmNXáVÞÄråäÆq_Äÿ6÷ãð»Òî—.ñm.Aöè ,ÑËúÈ>öëvûzmngGÙ‹òç}J÷Aáüø­ E¾WÞKqlm #Œ‘”ËÄ&Z§R{Ãm‚‰£B`ËEH±ä‘t)G8A!’è„«àŸÂ(&r[®Š'€ñ0Ú B‰V+ ƒ#8£›Ãgk¥ªÀ@z`4D­­•×è‘ŒÝ³Ò¶ß€N
.°Á'pñ.žÀEp¡¶¹¢s¡¾G–ÐÔ‰× Î$kf±Ñž™T©3Ô9í˜£*¤u”¾ÒÚjËOÃ-¨O<°—Ð­ÙŸ°Å¶hÂE*K!ôj*KÉÝ|Y$´%¸Š-´Ö­¸Í`Á›¯ŠJÁªÆ©T_¢GŽ,öÄm¹þýskaÙ9ÿr3®èÀ +šêÚTì>ÌÞäwê¯–Þò"t-ù|¿k²<Íü ¦ä‰´©¥J‹4u{é-cHj+"ðr Ëµ	¶Ò$¡@I¹¥œ!CHpl"¸VœÿZ„œ®ù1ýòë›ÞÛ(qCÕæEá€øMìUžú'!þ-ñx¦«/~M}šhˆ®+¦'m£ø¦:¸q¬èjŒÕJfÉÛŠ·„˜ì×½8ª[L„W×,ß‹ã¸î¶û‹ôeõ¡N"½¿ˆQ¯ íYaã@u5±6`Kå±a
{Òo#îëÙ*ííæÿíÈüÃrñbàBzÊ¥:éRàÔØ±Û–•r–ªÄ‡úD+ƒ¹Äš+” "Sˆk^oxBOÈaÝk!
•¯¥È–âL‚Ëõˆ8¡|Eó—¤¥×BEVÖ½:_;t½X8b¨Ý…½£¬³ŸgWÄÐÌŒv°A¢³ÑüËñ C$ßb‰û°/$i3Ê‘ÇøÖ±[ËGÝœ—ý	žÆ¼*A‰\‡†™P¢Uµ”Å½+íVDØpšxîGLZIE"©Lè¨3>±Ò{*„f*á9#¥E‡5¦1JUâÌø·( Šâ¾eo\äv\÷ ‡+têxeTÂ¹1ŸÂgÖÓÝãf5»½¸ì*›D|SŽ¸ç$–´‚s È(&ôfç	,'k|[9Œ·²,ÏP¨¢ûñ ÂùigÞ½ùðMšAÂ¢+Ë=@ÒP¦º#—åÖ7”©Øð’6ÓŒ(…’¦miÃÛ_ä|VŽÒLxo–¾,ƒ÷‹Ñ›WàuƒŠ¸`ùxÀNÆÁÛ*÷»óp™p-ÃÎË”r,ËRmÂ	Ë¨á˜n³sMŒ¶*5T|Jc¯½tO<¼-x'ê—‡âáí•Ò¯ÌÅwöy;<'ì1rñtþ§åâ‡[÷öÝ3Á’lv`@ž‡\0Ôƒ,Æmá8`¶tYèÄÌ¢„M<p…³’sCÊ¡-€¿½·<U:dÉUVs§ {-˜T˜)·E–ý^(.¥¡4[rô°Òí½®×ÑÙµýkþ9³kÎÿ+Ž]p-
#×³m…WØ¶ÔœQµ™m‡¤<k·“ÁÆX½ždH´áÜËÓ/ž}ŸuBß¿˜ü}x§¶%îÈ°ãjWºd¸Bq÷rÓëyËæw±‰f;ôÙvä\ñÅy?wáÆÞÄ_j¢Îþ¸ÒîÙÛ7?üòþÇŸ/Å€ÔùÈB§›Ø£M›g?ÕW—°u$§³¡{öó¯\þíåÅßÆ¶«te{/	qoÎ¬é¼,çÛìW¡û”L«c®pP™Ò^AØCª®G˜£$1Èâ„KeA2MÇ)u!5Ø%‰6
zÂN3bA‹Zn»éûKK²Mª !ÐZñu­ôJñuy‹p˜-R¥½>ð$W”ââñÉ•F<¼³\Ùˆ÷0èv’4­ú–Â¤Sã…„ Þ¢ß"³fMã›EŸMÔ õÇ?úè>u•H÷0á"”h2Hð¢à1
Çõ’¶M˜ª8J@—‘>’:+5AŒ¥©×
†½Ç$Å
¤’@‚a™0ŸúTSèŒx‹hú–öËë¿÷To!n~}Î¦ãQ°kÔ§Ú»ïZ^÷ /Yv=ª€*ŸÇ`‘n[ÖˆGÊJ|DˆZ¤ª\wÃdX¶"“”àŒ³ŠLRB·‰£X?;ý•CÐ/GG
<ÀÑ=¦šië‡‹×ËŸ·Ùì:$§÷ÓY–/‚ˆ~~ÿöûÅ/ŸIå·ØÚ±~R¦“‡oÞüòsµFzüýÝ›ÅÏðQ9êûyë½ß˜l?ù}þ˜Âk ´æa[yEÒòyíŸñ°dGI[1	?«ãÆÕv`2†®w³ñx8€©|š'u#êuyÅâPý‹ù4R©c›´+?Åupå co%Ó7¢†9õG{ŽÒG]üñˆG¼y;xÔ–­/þøõ“iÈï/á¨F›t~]3‹E‹Þdäg‹–Û[¤ãÑ¬4½/Þ./ÔÒ³åxoìù?1î‚¦ÿ3¥æÙÌ·XShï¿Ì:ÑÏ:µž‚H)ôÜ¶Ë,ï4!"näB¶šMµÇË·//Ñ@ïÞs€¦öF±¹»v™æ¢u7Å:^eiè)[¿Ô€P;°€¢uxJèÇÏ7–U4ÞiUÇ×v¡ßdt…E|ÚŽTíñþ×Ÿ±¸D-;Î@U0ñ˜£¶cU»t^Û¿Zó‡/ –û_0îÖ÷?€*Z'öRþ—Y®·‹««Ù'²ÎfôV;ÿï ïýŸxí
“:‡ãÖU;(P\Ù.qðÿ>Td:è—ùÐ‹¼æ_ÕàYJ=qseS/“‰L&%ÓÂpíS„„Á*E˜¿i™rŽ×c¡½l4$¬,5ŒŒ¼kÝ?Æ¤ùùZÇe|È¨biHîÊú¯q‹ÍìSÿv
zHÁ^,_Ä´œ9ŠP(ffý|’‘^Q~u@QWSs3ÁÇŒüÁÀþò…º{JÃõãÏggï‡!¥~o4‰àYñ«3	á(ù,ä•‡™'~fŠ|ñ÷kÈf¹¦ËfgEìÊlr¼ÃDç>+ôù•)—iç‹l÷SXüû4ßŽ€^>÷ùÙ†>ãÑó^>îMŠ™»q˜üÂÆQ$¿_æù(@®,g8¼;	÷aVÉœÃÚšs´bL­W“©˜r4k.y[ÿ"?Yuž¬:!×ŠZÖl}²œÛÊ‰:…±âkxdcÉ!W·gxÆ)mD´6íçíõà¡:3þªPF:!A¨M“4]sF%ÚkÄPJdÂÀøZH&pÔbË„3Dz*¤j¾y+l(8tß8lÇqI»	JJÚ
J‚CŒèêe<ˆN¬iÕ9—	Äy‹Ú©ÏÉ“¤|’”ÑÑ€cÝÙÓ`9¹p’N"¯N:Ð‘ÃqÖÔÐ²€ã¸w~v=voÇÑFÑÒ¨qeg>ï`‡s5ù0&ž:ýGæo»ô¹	<°CóYÈPÐ¾})_¹Ó¾×­ÉfÐqS‡cÞœÃœÐ„kíeÞÅj^éðó«WÀ[Úú:Ù.OnÌgÎ~ÿ}—)V{¼úç?_þðæh÷¾qªÿü'ldKÛþvÆÜÕŠpMBDê$¶[‡¥¥ÈR… YÊ½aÊ#½°>ARbŽ9ÅÒØ” èàS±­¾pá.Æ.ž?®Ò=XMþå´-þÅˆ*Ñ &\Ö*&3¬šs©l>IOxgü!œ­?þe‚ÑGèÿó±ÌëÔÖûg‰Ç·„nf‚‘ñ£¡½¾oj<Ào³šVTºûÃ4PÍ[ÐjA£«—Q[ŠÇXï!iþÕ½ˆâ¥nš™a¨¿³ëämHoî¸½ƒ½þTÆêÖ¡”-ÆnMêÑh^ý N¤¨utžéâ’òh[í7vöÄØßo¢|Áú¡ß½ÇÄáH¤ñ³ÏÑ„sòvx»ä„ý—YÔ»Ž@úH3ÎÜðãÈ~4Çxn@5Ï®FG9G:É±Ïô&Ø«ìHäí‘èºñ±(_‰îätí;
ÙBñ:é£0ŠÎOòcÐMò6_›Ù1Èf£t|º²µ7Çy#Žs¦óQa?<ñÜ8ŸÌ¯Žò&ç3s‰g3€î1vâ“_ó =åB#&·Ù1¤èxšc?‚™ tÊÜ•FÐÊ1?=Æ&Ù©¿ÊrP‹Ž@=8c®üè´ý43ÃÏGA³@;Üç€Ì‚úF8íùèxoÍm~œy›g7Áeý¤¿|¬¼Š¹Û\Ä×}ÕëME½1ž•0†KLê°@’ž
Bˆiª`B3‰|îM’$Â+ÌœVÛÒ*ßßOþ­\å³Ä{³ñ|Ö3s—ãW0¤ŽAèT¶¾¥œIÌÙZ‰jB„–’®dZ&D†üo;xÏ/NÝÓUè“;`Ì…E×ÄCËôš ,Õái?·žÁc]Ç£=ÈÌÌ[Æ¯2Ø‘o5[¯©‰Ð	6i™«àcœf=ÙþûGœí‰Ã¬óìêH—RûÄIÃþeé]'?Ô²ýÑoŠ¿±{`Ó·0¤Á•æº1¶ãÉ]?¼h¡a”è î}²óI^äõ«g¬ÝªÆœîÚ8zTŽ.—­'ó	þ“¥
üWé{Ó¶{²¥÷nÌÜiºXç¥KºëµNGÌ61ü”ÛÙ¤†[dÓåuìhö/gf¦¿’—lß#ˆ`ÓÉ‘‚¨Ö)-òù0Ãšt–W<±¹6<ók>„+óX4›Js‹Ë¦ÿëÿœû™=l¼ÒÞÜì|P0ò÷ É?¼ÝyÐ'vÙ”(sÇŽ]mc'è<ªñÌzáÜš!èÅfš pMñ›îØ=ìp|u•®ê=æÆžçÞÎ§1/ÊÑ—ºê<|fpØÝ  ¾SìórpkN>dTzŠû¢“û5ž/ŒM¯N=dšM6{’è|Ë>åàðÙH­Mw|'ùü‹Kÿ%Øá/‹/›ÝÐN5`ÖMå¤g>úzh9öcyD÷j|H‡I0v$gÙùc’>¸oÒ‚òqüEÔàÔ±Ìw”+êõ#8JTHÉYb1ÂÑËù`AƒÂAîÝ—µ«×î£qøq¢k÷„8Ë´’ÒúÄY—x¡R•jF9Q^qm¹sD „#ãa©©L¥VŒsMìÖâi÷Wæ/ß¿éÁ"çáÂ2^·½kÐñÝ¤kµ~“ÎÑ–Ú6\#MØj%¢Óˆ¯”M#ŠSFp‹7ÛÎÑ–Ã\§§‹ôé«‡²þÝ„=¬èã¾DWJkq_Q¾Õ-zevåI:ÉÝñqÇ:õ¿Ü×£ºÇj¸YÚj~'!ŒbÖpäÇŒà«ôV:RÌ÷ÿ•M¾ª¨OµÆQâ^aG‘òÔÆ\šPÁ“D8—„¥š8l)s«SB‘M°O&ÝE}/¤…‚gÒíÞ#$â-„ÞÎH îc
º-P`ThÌÑ*P`R3.±¨&mQ`µî>A…¿<TÐŠÐÝÕþy€ÂÖwä	˜<“¯L>	86òUÝþL¥Ð–‹T'D1MÁKA51©HœöŽ‰DœPã Žˆ”H‡JŒÄžzÜJ."k?rÃÄ±y{zù<é/vNÎdLÓýžÆ=T9³C“çe™Þ»^Á–¡ó±žÀ<÷¡lÁ›×?‚wþìk”RñI_…¬Ž¹pÀ{mƒ˜”±µœÁœH&®Æ
ÄÔ.x
OQOQµHŽwG-•ót4ãÙ3¾ïxëÙŸò!Óæ:Þàp¹Bñ½¿ÓŽÂÃdãô®¢”” çöXS&¤ F3ÐæÈPæáb*‘X{B¬OSå9õÞG”å’qÞdÊÇx÷È9èû˜sJÑš´£ 56J;"8Z+,¹Æ¸š_
¬P»Ô øžaÞŸ€?¹x+H]üôámüùûÅË¯)öðîb¯þî+ñ˜D»I<\ËëÙMÙV9÷'ßŠÅï2Lž:üÞDªÙšo%ãU]ñn‚|‡çÑ=‘á_® ë#­’úçŠyª(êcEQÚ¦¢èÞúÀ~•±öW
(æŠ9B0s€ò¥ÃÒƒ ˜O“Ô*jà8áÚJæ\ªÅA&I¯hö5 ö
cAëÇU€ÿúÝVàÏ%­‘JªPÞC„0æí*c­’'àIØèÓC8^T'í¨4×{Ú§ŸlŒƒ@Å}­Q‡UOŽ`Ú³PÍþGpž¤KŒÕÚsª¥“RbC½×^J
ØP,J¥ÁNó”h‚Tê@Úh’°6g:5Q=ÖB5œ2ÑVAc,´X½tá„<©Þ¹p½Ý•ËÚz’G–Gí×<ZY$‰èZ²q÷’5mL£;T«Á-Š¤Ddj£YÊâPÜþ#’þKÙÌþÊ3'°ív¶jí`0Ù§Ç»J§bm8bû7žµKØÛd»8È.;Tnè@¶mùƒN$ÛV>èD´]*öö$ÛÖ%è@±CI‚öT[V#è@ÐO¦¹5í2ùv"Û.Ðµ=É–¥Úl]¦=É,¤·>4Í¶UÚ“f£v9öÛ“l[¡Åñ¡_ÉƒÉnUÚÓÍ¯ý°]Èoš­+t¢yð¥·.§Ðšfëü­)nH6¿¿ùiï\âû[ ‚)Ôö`*•R–på¥‘©MÉ7VXÃ-J-e
q2Ci*,vˆ0­­n¶@íŸJ|³CÔ7“KœS±î¼ýÞS&Tp'®æ—JQ$C†ñû\âRiªhKá‡GîÉ`õt²å…¨Ž(+)ÃµãØZ` V©‘`8:õ8Çõæ:ÞrVÜº3Ì_.të)‹òq²(; 9šé¯V{³×¦~Ëì·íìZØðÈu±´U{¼|{ñòÞÝ{ÐÔ¶Ì}û”iúA?Ì©eÏk3M“ù¿þÕÅBzR¾¡½ÉI—'|Ÿ¿õ~ò‘úïí—?û)öÁ®
¾‰Ø¸ÝíE„éíØ•p°]zu°ä}€ó šÓqîLzßŒÓ»|cF€¶
›Íñ–w?ÊùÇ›/S3žù±6ÚÈN<ìÄäùíxêp¨'C@ã'šÁý¯’™ï>öÈ×ŽtœóÔ>µõþctËá}¨ñNºÂÖY»4ÖNéº0ö	b™éø÷_¾~÷ã`öå!ã;ÉZÛ§?øçÎ§f>œ].“NŸò%Ú2—˜oú+ÎÃqÐ0ÓŒ	É0è£8gs²ãí,§››*©cc‹æ}«‰ì?hë*"ûUËãÈÕýñ.ì2Ÿ§iöå2líÀúÊ¾S2þNN^¦Ø2õ~k‚]2î·&Ú%~ˆÃûTtÊ}ßšð3ÆßþÞ.þ„ž–[Lµô©FÚ)Ž•µnµC‰A*I¤
iL’˜*Ÿb%e‚SI¸32ükö¬Ø1[ü¦žÈYBñ¶ÎXHÆåZ~"%¡BI\M/µ’„±E2Ù¶Îå!zò•8„¯D—´°ÜGB¤dÇÐžÅÄÊ3ul_‚Óó•ÃM¿Ñ»þGuƒßp§þˆóÇ?ä×’ÇŸPð{å	K¥±Xz_M©·Z)ž ‚1â!÷Îš„&<Q:q\Á¥s,±Ôí ø’;~Â	6´ÏMCi¹êcÉ”¦ˆ©j80Ó!)v1süpx•ˆà¼ÿÚgŽ?ìPO(å	¥4¢”c&“¯œÊ›±ûša‰ð©bÊX—Jk‘š£Ô:•"O%<% S(AšÃ^PŠP`ÂYo˜÷ÑT³£üò–³·ßƒŠzð±©ÇãAµ6FPŠ'x­&e(lçJèFøŒ‰ÎÑX„3ó)ž¬Ã
^;ÂŠp¦Ž.‚O6ÈãJ{u€´&ÇHzµO“˜ÅµÆ!¿º©Ã¨L%7 ,#Jµ§B¤	æ–QJ©)Ú¹åŒ—¤Ø w¥­EÀaç"&+[Ó¡‚	Æž&Œ¶ŽQäD%×ôg®(•ð¬ªé´CRÑ®écý’'!÷œ¸AVŒì(è*§ëØ’¨m!“=†Úw‡qY<Š´†##Ê¾¢ÔsÖ!… ~…E)VÊÃÐ	ÕDinEB¼&"M‘H•w*±˜!g„¦’PÕ,õ
”ùB™*VÝY?€¹µ¶ÿÖyD²ŠáÖWÄZ‚¶OÏCjµOŸaÆ;_WŽ×“Ôz’Z›‹’è½¥Öý);ºôºê1jSKÎ˜Ù§þíÔL&!/L7á²°w¢¥RÎS„y¶—*œí¥2©@È\J¯µ3©fÜk¹f’8Á¼vV9.x*¨aÄáT$Ro“*¿ÀÒz/?ü½÷ÅÒ¶‰õ–½¸L/zÒýâ8M@šGžõË¯oz3o¯G™ôÞÌÎ@É
-ïEj·¡<ê|’Á»;?|&‡·*(d \•Ífã3hÔÿaš¹+?8;ûåå?ÂL&ð&†ÑƒòöÃx4NÆ½ûÌ—œÎäGogaÀ*‡Cx“¡±>j{gá<À‚ŠÇ#úIIÿ‡»ˆ’ {ÅôÊ‘Ÿ÷²Yï“÷˜ø,÷Ã´—NÇ7½ÄGN¦0˜wa}{ÙLoŠ—ïB£PMa>*3»ön|h”å7G½WÙlp5ßøÐô<™ŽosþðtoÇ\$ÙJfÎ¥-ÁMâX…°UY¬„¤ª*ˆ•Òíî\+ÓëoQ?¾?dn),¶ êÈ%$·®ÿ0
ïâÝT™Ð&öÜÄñZ®ãÿ;’&Ü“1¼üAò~2¬yð ª:„±‡./ê“®=óIÖ¥ƒ5ÙtÜ¿'‘SvÈ;vJ&‘ÌA‡´m‚À´ËbB‡PU§ã¦A·ËIö%™§{Â¿Î}Š½îÜ­ˆ¿ïÚm,`ÜõüÅNÅÉèÚ³cÎ†élèžýüë—{yñ·V“æ³lXwý0P¿E©¤ÝÐá†{êu8‡Í ‘è`Q–ôœ±›ýe`õh€¾Çø{ž(‹QâÚCGÁL¢ã^!ÂÆL%$MÚ§ˆô„š4 E% 2&H¤HÛD9­RÐ§…ÝVê(B¸ÅÂ{÷ïÍÝx^›ï/¶bGœ¶—,é%&MÔÁÃ°³q4NDXx{ÙëÞÊ€g%° +›Fë½?fåÔ¼€O×ód Èí<õ Š\çÕ°<1NAá*xÒ„c…ÕFðD1"z<iºbpg¸±}Ã¹ìÇÖ¯;Zƒâ¬¶AU?\¼ÞQý1Ê'Þfiâ‰£–ÛÓk´Ù‰}ñÑšËnøÊÛa6É}Õå¥ uc[Ë&G›ŽºU5;ëÔlÇÛ“·Ô¸òôj)[†[n—¬o¾üeð0PëaÏÏ7­õƒy3íJµúR<±åœâ>õÊx*ŒNI’`öš.­¶rI@fqá±%†&˜
i4Õ2E$Ûü–Þ;ÒBPðŠp	Úy™X¶«»yH|¶ÌR»6Æ#—U¼­¬bL!¼ZýN+Â*\…´Qó»³ç'Au(AE1Ã´› ªä‚]o­Æ~hG<ö€åh¥ÊqÜÁn>žÁk;Èç£ÍÛyñŸ~|×@H>ºO/e+:PÜÝbÇSß¤¢¥ÙÈ5µ)î°…óÍ~UP³aÔ¨¨Ôz(¯¥(ÑÍ )™X¨Ü!GÔ6zÁ#<8„GÔM3»nß²¿ÐÍ¶†ß÷ùh€ÛøX:¼¾yÓ}øälñ¨ê½µn<õfæãLÂÍv]S—¥ihX×&œÖþöz?1rÞw\< çW‰îãò<Ëg»¢7:Àj€Ë³¯ªg^‰ïgßé¬µ†µÇo˜QAœ4ÈiãÓPz ¥6¡ž8¡”Ñ\`ÄM¬U,õ^	$ÃÌ8ë©¤ˆn+x=Éz?_MÍÍM€k/ãêÍhV±'Ä«©¢ir7óÑSïÆŒ²É|ØAÿËb;A4šŽX‰ÜŠ#¤sƒï™ÞÈßö
Ï@3[–.øo6>ƒmÌÒ;hT4ˆ@þöÚâ-Õ/ÿñ®7.½?FÃì“ïá›i˜z64Ó³å´½Ç(Þ»ŸÙr³Ûqo®$òxûöþÍ‹…obüô,ÌeI(~4è½).ÊæyðRž‹á¯¢W?6	tž‡OïzÖŒÎÂøkË(2|oó·[‘J
—/>ó^.gÐÏðöQŒB 	%¯\áÇ0ãÅYï3€Åð×‚ÐY|ÃÒY`ÐûÏñ<L0^–Cß$
\ÒW–[^+ tVîÏÌ™ý{eKƒÓg`(ájo\öÞz¿¿Ïæö3îÌr9÷;Öü;¾Í+{NJd˜° ‡›hò³‚hù|z÷w{{;°ùÕ Ë³,ÜÉŒ|œœÿ€ô¤q¶¸ãp‚D`Ä{µ ¼ÃJ´Q-ZQÎWô)RÕdRr¤ÛØ±âÌú—ê×ò§*Að	^8 ý-\dà×Òç+Ýš0yÁúˆîª:tØª½/)Å¸›Î°œaë*¶âÞåh/–¿ÕBßbàÁÏ/»Ó}1ß¼8qxÖƒcM|íÃL~œ_eÏºÌ÷@~CªOTB—~B±ƒ²ÐII;ð•RñoÉmô5qÅ
{,SÊR‡…8!‰Ô–xch"¥¤	†¿¨£\jd¼Sð•ŠaÂg5×I°ÒÂW´Û@Ú²ÉJÝòÓe::<åmå©BHºz'$a„­¸Ôª`éÖ2uûÉÖ.‰¾1™ÊBB«Ý„j]LÿîÂu?öÜ¯®YÚÉS“ìŠ8¿9< J´ñßÄ¬Ü8½LI{®©8•<U©§
™À1õ)£F)ç”u6MpGÂhË\IP‚©¦€i‘CÎoáš/û%dºÁ3*^?¼ù™ôbáÒe~—ðu±{5ÜµÜ­ÂËsŸ1gå÷-/°øá8Ïïzå/±h Á(A›ºÿ–dQ­ú·Þ3ÜO²èÒ#xÓñÿ®**Ü7aZfæA½ºÎ®®áÙäãá<L®ðÅ/x†f6(‘½P	†?›˜à¿º9èÃAÃ,\àAOƒ?à‘ƒÒ–‚.›A«ç0«ÔOKÏÍÅÏ¦a'ò…º8ž†]‚éc„^àÁÙÙæ[¢¨'_›)ìÄrŸË¸Â£Š¬Å`ƒ‚/ÁS z{Fð(¦Bêª×‚f‚cŠðFoäÖÂ/ÕzE>!ÄX“tª¾ªýðÖõË÷m^Ô6ò'ÊœýåÌEáÑR)cÙÑås·H…ÅúW–~ˆr¨£`©>ˆz7ÌÍœ±™jtò¤¤ÁÉ³õP7éþœÐþR¬È¡2t‹„&Í‰WV;ÔÎµ¨ˆt¿¸‡înò°JI m±» 	§)N8æiJ¤¸ÌdjO$E)ÒN"ÁqT2éá”[–ËJ<Ò|[Ä“}¡Ç¡|]„½9jB(-Ö¢&˜tE„2E›Ý)¶‹Ðö!EˆîæFq,!J»ÆKœHˆ6FJì!D&qizPwóåÞŽãFûý)›í¡ž’¥ZY·àB…˜!‚JË¥5J0K“ÄSÄ,c&å„­“¥‰,":1.E\¥ˆjI,¡ÛLz µð½pz(ÞJŽ]súóážñ›^p¥·²ËT, ,ªD‹¬+U	“ÎG¶¸Ž,‚ª—r+f:ùijÂuà5HÃ»òB1ÙáÜùR‚™<ÞEWth0-W2¾€a~!n0ºŽÓÙ-H¦(sY!KK9[.%„GÜõgã~¸­]ÁýÕs±€³òr;x€†ÆÃp}¿’går¸~,²ÙÄ¨Ëp!™†Z&A¦ƒÌš$7ß…ÊÅ/¡Iþð&÷E<ço.~;óã«Æœ±XkZD‡ø£ÿ¡÷{˜1tw…@ú0PäYhò]Ñv£x%Â—1&t<_Ýõþç¿ÿŸÞ+À .ÄdÂz«Ðh’ÙÙ|ZÜ§›¹ËÆ¥¬B)tž a§>û^’•÷±NÛÙYF p"L4^2ƒÐôÓ "`§L±ìÿùïÿ·8·ÁŸÀ™©ûŸÿþÿŽnG¬¹	äù§óÿº¹úDøyÉ¶‹"“ë•pL LÊÍ™|„XHi²,0FÍ)|*lª§_ðšnŠù¢0OãŠY.¶²Îýí»‚í …/¶¼NÂoæÿ$ÛhàH—Ð!ÆêäzÙPñµ¦ZìÖ‹±%´ÕÁwÇ	ŽKÌ’G”yšÁYHìf!(J”}ˆ¥„
ä¹(¡Rby’¤ÖïáØ¸muNžpÂNxÂ	ÇÄ	Aô¯âª7Ûð9×|Í†´ P±‚d+Ä&œÐÑúðÂÎ&ûÃ#…ÎäO€Ì;#…–aå+á›0Kì…Žbh AÛ7£Ñ¸` !é›I¶«“QH€ª¦¥ö€BÊ$eÊ{Ê”Qa‰ŒP”†¤$Hc&´rÄ+mmŠ+½³ÈKÊ©IºI· ŠW‘o÷^Þ¯±k.º-ú–É`·S:Yø^|^çŸ<±ËÀÙ:0~M(¢tKfkŒ_p¢VÃøP¶¿åpÅô¨°Ãvð#zõúõÛ  6f¹ûfdC›=Ù[\  ¸;Š‹-«cð[Þö,]NÃ@ƒ°ÕÑûôËà~Ì›6L$îZY§2ø)™áQ'ÑìÛn&ÑA¶a*ƒ}÷ã¤NµMéœ:ÕïØU”E…&ð„ñô ²L­Ç Rý}ˆDžt¸µö2u†aÅ©"Þxláÿ¤U #Gœéù(Óžj*´õŒ:I´OA—^‘m%Âb Ì?‚¶t¿ø6B®Œˆ‚ž»á)!ŸKHg÷ËÅï=ŠÕWu+OµIÖÅu*+²N`ª“[Ò«Ð˜M¥ZŒè•uÆit¢ÝzúJÆ^w€¾I8™XÁ†~/9¸ë~í/%é˜‰eû„Û
ÈfÒMdUæòbËkr
ÉÙaÇ—•¡{ïÉ_Oz~4_¦ÁBƒ%6;&¶UØ%Þz¬uª|Êc±§‰1)¶IÊ•2Ä£uþÐ¥õJXî£¹BF’mòñå?û¿_„hƒ½¥Ô.8NýþãÅ‡t>ìýÃ'½?ýÜ3¯1.)Hõ‹^gš_Ep´vHÖµC¶¼ \K®ŽTßÆTJ)ªvA¸ÍÑœ]ÉýEGÕðY­\ü®š\ý¤BrÏp“†ýÙWjxkv‘‚+3j+þš²®
`d3oò»Ë|pöpˆCÉ§­²òFÍ_¬¿š°‘G—Òõ#_0Çñ»¯ü¯'‹‡ã««XÃc×hÏû6¼£!–+‡•‘Ô…B\(åDj-¼öÄ[àÄ-Uy©Sƒ¹²{•*É‘³‚$mó­ŽRòXZïm±´ÞOSXÚíxú©«%v¶ÔiÅìâ)¯=³:9K×ä,Q1›ChZuÓ¿WÜ¯-gÖÇ¢Ï;Š×¯*:Ùî¢sÓª÷Ö± ;ÙVËÉÔÇcn|i[°ú’ø‹•¡Âîig²q”6	Úµ&<JêƒŽ+úVò\Pì—²3äÇ»)m‰õ„jºš"I£5gˆ
&u¢SäêÐ9!Ž¡4ñˆIƒ‰sVZd“­Ž@Uþþ«êÍ[pß¾3ãš"%Ña>UEGk²_]Š,h,áë²D²Í²K%Öj„ÕŠ/	÷Íñ˜¦“ÏãÎ:[µØÕÁ
rì"`vt­ß‡ýÅŒfl1ÓœsË+¿«¨^S5x…À¸‡<Õ›…Ðá†,˜Ä©Ç;å"‹=1Sè¸Ó¸]SkÜ—ÎÃòs?}±üí°¾7vØÃ:úù0ew·¶ÊAÈÏ\ÞÁâ–Ò™Ti“bá¤Ì;O¡RP¨“4A‘zîQêR&¹K½‡†ZË”Á¨mè¯b¡Ã¾wõ®v wñö'öKÑµ¡çÑsûÄ'ëdÕ^:2º~éÈÕf*Q½^Ó!ØK«Â˜ËFûéÊ	êG¡_wºdí)«C~UÝo'ÑÜ~7öÒB/bw[é•gVo÷êôf×r´8Ø‹Õ±ŒnqðÝ(·1'6/òÇÙá PtïcWþ÷³8ÂÍVï‡‹~42I•'—®§•âB},¡©2ÍÉÄÐ#›8”Ã©5ÒJª1¨—4M!H(gd°EHb)Jˆâ†I¥å6ïÐ?±P}#¦ªUá#&)×[<aˆr](	½*”š+%oJª_{
¾©´ôxÙW*5mÇÞbIrÞ5m\7±Ôáå>‚\j£©î!—êÈï$—Ô_Q.©ƒÊ¥…¶}sÇë0Å†Ræ•G'š`Î½ Âs„55•SRôaæ™AŽ‹¹ÔRQ„ˆ7h›:tQ$¿ò£r'$î)Cˆš,›Eã"£ôù‚ß.æ£Ë{ÏFãÛÞoSc‡þßòïzenÚAH:2üïK ÿÃŸ9à~®ˆf‹TÂÝÚ‚vâ­	†É]HgÞóáØŽ¬^d5Ÿä³©77•™ 1ã"g=cg 5†Ð×FOŒŠh>ËF4ÇN³$¦ô^íÂ.[’‚%MýÙ|zUÌ«ÈJ_]ó(\Ý‰Êî1·{¹™GM÷ºnÀ]œÌûßH½ÍV­Úl‰bsø!„­åÐƒ©Öþ#L#Ôèœº˜Y´P~×{„Xl\íþ.£w½ö[L¤Ér¶Û•ßFûTÓHmƒÆhgDß–1ð 2*DTï.Ÿ0É]œ²®ì+ò½ò^X*y{¹å¹N‚G’¬S£˜Oœ@ÜgM2>±ÈR’$ÁÑÀ[`›4‰ÓØm«¹òËÛ8¤NQ€£"¶BAŒa‘Ó-Ö–Ö5©«þÚÖ ÷&Š¼EY”lÔ[Dê›a6»ââ‡‹×±ŠFŒpÂèç_ÿˆóáƒAï½‡8øÔ …HDgÁ ÐMÎ—-œ™Z…2KqR1AÞ¨—_ûáäl>·×¡rGbòë¢Ð‹Í¯¿ëÝf ÐB hŸÏyý÷zXWêMTuQÎŠ€¹'÷;‹‹ŽÿÝ*º'”¢Õ 
Ž(ç›”‡Í $TuIIXÈ:vï"*)×aVýâíè×½¸üßžž,­w`oÇëd&×Þ…¯m„{”XË#Œô"þ·)°ÕêYkÄÚÈÌŠ…âÙqf'»µng}3Ð_œáÁG3Ê³ñ¿5p%­æ"ÂkÇiSáà®ÇiCáðÃÍƒÒm³øÈ`‡\‚ÈÊ|IHã/Ð÷‚+j±CíÑƒà€Œ¢†gŒCÞé`ýãZsBRÍ¸1’eAÕå©r©õX(Ë4Ó’šmèáõß{ï²"AÍ« Ž‡…ü‡C
ç#ÈÅ˜É&3W#àˆ™u³ÆÃ±•àøÖOCFAÙO£ ÿÛxv1Ýô—ÿxW”æ½6áç™qŸh¶®—ûB`‡ëï"½Ï¢îÛ2wm™kgf€jÐvÍðîÿgïÍ’Ü8ÒuÁ÷\ì<ÜCY ÏƒªÏm£(•¤5XQuªº_h>&‚‰I€ÉÔSï¡×Ð½Ž»“^I»G H 	H ”¢Š"3Ÿ‡Ï¿ðßólù¼Ùû4‡J+cÕL…S?¦|¬û·AvÛŸ‘obxÛò´X]Çôc´ÜEu7‹—Lb ž"”f£,HÜª¸¢¨Â¢äòÛØˆßU–×5ã+kj2¬ž_›ÎG£8¾ñ¨ŠXÁÓÆ®ì;Ë¦ R¡	«è¬ÏûÙâÏÂG¼ˆœ»”ÿ_…Í°7Œ.ã‚p¾ÎE$CPJÄvrÊ‰@oš[Ga±n8Ó2H8|ÓshºÅ~ëVî´#‚Ûüó—·ŸK¼Ä¾Ÿ®À–iX][ë/ª"«¬§ýé…2ïfãIU–åãÆÃê‹
G¢ðîÃiXù`KCU¤ïi¢ª•Kïj£‡W‹«_+«>¶ØÙL™~óåêéøþjå”‚Ÿ»á½vÒ|áa¶ÚÓ¯fÉ…¸ß‹'_8ï¢¾ùù*™W2N,»÷Hcžµš¡vjôlët­¢Ñx¶Šî×|EñÅ·æKõßš.éV‰åóé3õáim‘‘NÔÈže±U×wæÞ†Ò‡îcæîŸ½¦i8ŒòÞ‚jGrð‹«Þç˜ÂÛ©{Ôÿ9ÎÄUÑÏÒðg9X>DÃºŒ«×ÐÆÐ£‹>4°ðŒ?²ôøáãŠl~`¦fÒ[ã®ÏSAáãŠþ0üô<¥Æ¦’óeà†þ€¥¨â9våó”Ù+Ãß¦]_õx;»ÃTŠÝEãêÛ™þöí?c„ÍÔ`£vP=2õ2z'êÑ´Œ“Y?Ú¡v¿´’å¸
‹Ù^ú‡þ‹Àsê.œjí£ƒ¥Ä5Ó·Ó~àìEÜéÞwvúÝò—Ssï˜ç5emÖ’_;µŸœ˜½d1Îâ»´‚îU>éOƒU·?9Rí½ÓwÙ,lÚ*¿zçD¥Y6pÿó•›™¨wÇSö¿½*>ZÿvžO_Åø»…}ùm-ý{7ŒimþºÂ7£„—CŠ Î„´RNp©#Š1i)€!ç@+É¨6Êa¼#a)à¾·xÞ„^®bíP ¯mAëS ßìS wªè»”ç7O•çÚÊó›•ò¼óGVž‹-å9'|i‰ß2äcŽ1Úò
gK€7^r¥<Ám±Á*äÊ=r„9ÿÜêó•9ŸÕU¡'Âé/Ôü8Ò¢¿h_ªj8évÖ³´ó®l_Ë1*¶7sùi¢Â²ùëWð<eo³™g-~ÉvÎPIÉ†ÎTÑ9¦¦¬í5=OÃ’2,´“½ˆ/§WTÉëŸ§ÜÓ1$Iª8‡òôL*Ú£vâYÜ•xE¿ê»+mÈU_&ÈW$²F’—T#vËŽŸx]P°Q”ZDÐÄ@‚bm“1Ö9äVîM`ª`•5é p&…¦ÐCG¹æQœÛ+ÌìH}µŒ]&3vˆ à›Íce<^aÚ~0ÄÀÖj¹û¹¸;
óp=ò¾œ­FIüièüÜ—/Fª®ó$éÑ5G—ãBŸqM…&Fþ¢–k¼å’ F	wa*cŸ!å \A')@
`î(ÝÅâ—ø~]©ƒ01òOTXŒT¼L·¸!‘U†¨þéõãÓ‡E)«— c¸Û§e†žÅçìVEß¼øúíÛ¼Fê_YØp÷ùE@åñ|Ö¹Ÿ–wÔèaÖ?èðaQG<¾zP÷F×Å<»uT6,ªY4fYÝ¢þ,$ˆÍ§jÐ¹WËg
£¦fF}ì£Âh<õ:?;z]8'5+ÞP\\ô­.îýeñaÄbùØÞÍ¿ú!i'U³YX‡qÎ‹PpYq›pâ¦Åê*.2†ÝËl[T\ÎP¹»	UWÕ]¼
™C§Îw#R™r¨ºåP½
‹{ßéÀ)¥a¹­žáaÁöÝ)Œ7/fÈ`üèñ½˜ƒ3Fª[ìœÅýºtwÇe°·8‹‹…—‹Ï}Â-Ã­þŸ÷ Bv$ÚTÀïÁµ}E¥øSddÆã”dÇº½PÇ—á¿ÃôÞýôú—wßýükÒ‹•ÉUlØÆ’Þ´Ó¤ ÐÝûì`‚ÒH“`9<á%ÃÓO0Œï2ÕýðqØiF³úÑkX­ˆÑQ|ÀCËàŽ ï!Œ8è2–{IQäàž¹À«—&ˆ6Ä	†€XÅ¡3{ß¯(»/-t^—]Û{øo'}Þsk1è%hî_€ä<QëâˆÌVî¾9È	c[oŠxÂ­?.!dø`ÜëíõÐ-&¶‹?ƒËï'Š)•=?ý"<G¾¡ç£ h¶ ÓÛñøvà
¶ø!ºå«Ô_®ý|À5«Z3õ¤ïÕ…íÜé•ŠžE_.+*85NfYãñµD¡îÙ
~¾f‡Yx®rŸ­ÑG|í!}š9Z‡ãA³®fµcŒƒˆVãòVå‘Sˆµ£œ“
[ï¬ç&ücÇL.|Ti‰ôˆRå¤e^é#rïuÄeÏ‚,úU>SAŒ ÷„¾ºÁ_3ífÑÅ!)_ÿ>ÝÞõ+‚ó<Y:Fü:»_C¿:?OÜ¨øaoEËÂÿˆe­3÷iõ@éÔFÁü±ˆ ÇÎËÊ;î“Šø™¿ìäóÉ$HÎÅC7ÿe…\Ä'è»Î› ¸Çœ…Ê¹DðØÇÞM¼X4h½ŒÕ»ö1ˆÎF§ˆy^z?Qb;ŸÉá¡2žÎ†/Cñœ=Å»c SŠðÖƒIÊ$\×‹"ÉÂlîˆn±´»èØþÛyÕŸ'¾ÙXÕéÓƒ`td¼óåµ¼ÍfUB÷>ÚY~,îÅ—ƒÐàÿRªJÄYOXéS¸ž0¯¯ÖS>$&ÔYjÂqjÂJÖZÂx--ajÕ6uÄ­KMø{bB—:‡ÕÎ›ë	SçÚÍúÔ¹`™šòCjÂÔ9ô©ËÇÏ“S¦n†[›š0u|n?&&ì§ŽO?uYd©›!Kíu–ºk²ÔÎd©›¡Z¯´–ðCê€ß¥®Ü»ûJOôµ”š0u#oS¦ä(µÅ=Ý´”©¥îšQ*˜ŽRÚ(+Fyj‘c“š0uýLÔ¤›ÌŠÄ÷©‰S·Ï4µ­ÓÔvNSÛ˜§ŽgžºÞò~êÎ‡©`™Sq#O¡ä—ÿ–š0¹ß©ë"Oåy*þæ©ëb–Š³ÔŸ¥Ï<•ý}LÂãÔ¿O]‘ŸRiôƒªX²–ò÷Ôº?¼,V’VUÊ-q¬1ilï‹Œü¸2¸Ë*Ñª½åG½OÃÇÕW_k;u”º­³~‰©’WQpíÙWŒvA÷±¡ñÓ“î/ó'w—R}` XE;;J-‡½Ãáš;ï‡HRaÓVAï$ntÔµÀ
bœ"0î€ÑvßS±Åå¡âvÒ»Ÿêü¬‹¨Ïï²ÛÑ2@Ø7#3}(”LÿùÝ7_T)äòÿõÿ–1Á–!8‹àžóYVDÕ,|BbéÃ\Œçyg¦ò»Â	&6á&¥	q‘(ïuÊ*WN8ªãçƒÁM‘|uæ®“Ì`^¨ßîÜÃZàê—|­·ªãlþ'53ýÜÍ^•ë©Bó&àÍßýÜ•0¾¿~‡	ˆáÆƒñá£ƒoK„&u!è¢#]N>3×’^ž¬XÃ Õ34 Ò ²-ö”âW²»Àú }ŠÍV\ðN¾â}kÌûü˜;ák¾}óæ=îšùp¦åŒQ0ó€!/Iläi“°¿Ìc®¨?¦ûýW,ßÃÔ±ªq!þ÷ä9<Á‹…qyuC¹€ÔŽøß¶øŒ	–âÒ²|GyÀO¹,”%R#¯uÚGAfS$Q„s-4e	O4¶ÜèøúÙgw{SÄÝâ .ÎøÉá}‹û%÷®¸G?pŸ2=XEÖÞUÚÍMçÃoñðdw}dÅíâÿïÿú¿;ãyÇ¨Qáó™Í¢‹hÏˆ›²’l0sÓâÇ¡š”F´ µyœº€¶Ó¹‰A¼mYZta½)fa–
gÒò
t¨øeGÝß½ìÜN]YŠŸfŸCÃÜ,¶à¦3,`“_hyiô‹>·37*®§³xÁ¹óæeQFhmŒ_ú»›ŽãåxFßÄ{É¡àÀ2—÷ÊþÇÞ…º¸¢qe”Ðbí•Í‹#ÐWcŒõÐûh4ÄÇ=~w¯F³²ia9=„±œÍBQ¥{îË¥añfégGÐ†AwŠKÝ±íy?¤\céå1¥nbñÿxÎ§I|ä9/_–nÇAÒé-¸N6~õá·½ï9–mÁ‘t'Á’0²ù¼2@n<Õ£~Òñ·nØ¬Ýr›öâî®ñ*Vñó›7Ý¯þ2üý/o?âÏ…ûlôÿôûÏôh§Úßª]?véž‚ŠC£¾$ÉÆcô·âdk€ `9ÿT©©ªs=ÝêèÃNÊaqR¦¤Y	’Š|t!=|<ÊncŽªØä'œýä¨Cÿ·füd™¾ö¡Ï¨ÅÜzDCP$(ÂÚ© Ÿ¡pº{eaö‰5xÊ”²V"-EŒ:®æí¡ßúŸï¡·}!vß¥Œ‚­C3ŽÑºZ3‰ùAWåC/]­Ñû{}r¤‹rÓÇþ!Y»Î±ÿD =ýüï–mMl·+ß#-H’Î‡ÉwLžžûÉaôVà
î²4Íò®ÅÝ"Ön7 ï¤_×÷ÀÊýýH†`@Øbã…4Ê˜
d wN1(ÖÖªðážpç	Ð8.IøÐìa¯;_ãÞ‡<œŠóÛpòGQZ+¾¿{Ü)z\qû5¹ˆò™Œ~æ¦X5(ŽÈ³éÙóI¨:táÕödî¾Fƒ¦1ÀÖ¯Ñ„Â|çÙÄY¼Â¹!b,7Þ» ˜%MÛ‹­[¬š…nú3¹EƒkI•=?ý?ö­­å-šÑØºÐ83pjÔ½w:Îy·\î•g>3y»üñäá˜âé›9ÛÅçyw0V‡âÝà©P·J3¦¦Óè1[ùF9f B™6Ë'Ñ,v0jt•Ðû´Ø(*4\d¹JzUvŸºÉêaW³äQåæt« ‡ÿˆEËt1®ã¡ ÙqŽ+·ÿ²„‚ñ1ëÕ¡sT=]¬'ŽY­e‰ÝÒ7¾»¼·QÝæ05ªHÚ½à˜¥¶(¸›nÇ‚âBX©½²‚øaõÀ
3_Y| ôav`ƒ“ãÖ÷fI“KÄ²ßª¡?Ž;TÐ1#T«®û4;º¦ç¹*ÄðvMñjUÊ°uÄ©É¡)…GAÀÌoU5¸R±¹UÁ¢ä&GÍã²µfPm¾°l±ü–åZ÷±ãïÄX0OHÜ!´Ú!í’³ëHmãQ÷6Ý"6q];n˜¨¥âàHO-ãŒ$„{˜D<5FH©6Ô@k­£ŒÎ± I-àV#¶lŸ§Ö×e åí¸UJ¯­Ug÷ËiñžáÖ˜,¥—øâsôÙËC•O5”ú±šå‰…³Ôz°æBè‹ŠÝUÏ+ÕÝgwYïv4º˜øÕ/Ë¨nÕ[ŒB…¾QnzQQA˜ØÙP´yBÌa—ðèGãNv¤Úùn±°ºð(£cÆç/Ÿ‹†qÕãõ¾žµË£5›Cˆ¥îØî)Å¦ÙÓ‹P²¼n¹6 ¡ü“u•+µYhÃ‚×¦ŒCÓ#Ý¶²qÿAáŠt eŸÄ¤¥×hbêÑ?”þqÒ-?ð©–‹×Š{lóiEžÍ»¶Îª^‘X%ý¨™U³Ó<¶ªýt[níƒßhGˆUJÇˆY*%'ºbZ{ÉœŒæ®a^¤BRÊ%dÌ{(¨á´ÿsüèÉÁ/w.(~²uðD Ø8ø)–‡Tüé†Ç‹ýõ^-~®£ÿhß¢óýíø£¿ÁØ:úSÃ×9@jž-2ê^ý„¤düƒÓƒvÙ²„ù¤~¼B5X;"9ƒø–aJjæJç^¨!“bf g8ü
­`1xæ…¢Êh|„D`\p‰âÂïãE àòh/¯]Ý§wñ/¼Œ¦Nºá“í|÷ëo÷3ˆb´Ê]G•Ø»ù~¶~)«pk
K6œMÅ«TË±Ü§Ù4>|·¸ƒ5T£l2¨âƒh"~y3ÏãÏÑ«J»¼xîêëŸ|Ùyóî]éõá·y(»[¸ŸÝ¬?¶Ñ)kÑîèU¼Uð¯ï^ÿú¯o‹öÑÎâ0,î—7±¨‰šæ¡µñûNé¦Uº™…
;*ïã«£Îâñç¼cÇÑû«Û	£¥&eÌ§¢„²€Âä­:ÿüÇÛ—yƒðæ³ièMÌä³â5,»²·²·±Âði\„jó…ÞvJkËxšÇì«*ÎŠÝ¢¯/c,æi¦ç³Ÿªp•Ä\…3’¶i7Ÿëat{³ŒS¢n#ÿ†N{×¹ïg3†5Ÿ½Œ›²ˆ-Ž¼ðß¡1ÅCêwESÆóÙd>ëÌ2ûP´c5øñi°xÁÎ¡ ­‹±§‹¸ÓƒAqóÏÍ"éZŽ×x>*"\ÅþÜŽñ×ò}°É44!úÆŽ,  ŒÑËXf6*>èÌÔm7Öù×EÕ!û cÂ’ÃºŸ8‹N}åìÌ¦îyŸ(ÚPÔ}œ”PL£kœ”A,ax''Åñm:¹éa@	Ýôx/°á0#Oº%ˆu«àëoƒ¿ÿõ2qµêòÓÄ8ý. ÂòhÎ:Ÿ°Ÿsüì¬dŠ1Vöeñ÷!›MµÑfG)q”ºz³åØ^ûÃ6‰<‘Ã Ý¯Qà°ˆ(ÅM´•|›ò8ƒ’
c­·Î1€¨	Ù1×^ªð¬Æyè$b4v‚Y$H¼¢CˆãrÜ’˜–Ä´$æ³"1,Þ9%lýÚ^ø(Æ‡»ƒcÉ%à[$&|FÖIL A$ÁžVáhû] müºb³ò—$'±˜ÃCp:¡âØ—‘hÌQ'PS<¦Úÿ§.©.õ8ƒ>Ÿúšá1Ó.´vëÅ=D{@$ùÇQ3œÆ N8ñ²”VrÏöJ¢”ê,2Tcª ˜S	÷Š{å4Ã†#ö?¾ö
Òh<[ØSŠksË×ªL:ÅóJ[6œ€nêFÆ=²…²ØpÂDÂaT¾<FÇáhšÞØ±™—œbUï»u.ÑùG˜Ø˜3LÏ—×[í|7ö³{5¤"Ôkf7_»YéúÌGR±ZÖŸ5ˆÎý•ç“ä[çb÷µrL)Á›Ì ã|ý~™ ð°ÑÆ.è³(8¨¾z÷õãÝ³3Yý gMí}ZÕ““O®°_À‹–VÆQ«9{Ç§:zÅ¢Ž¬:nŒpMCkÙN~Âé@5‡Ïº#ê*¼b0¿\þû\åO«Ý"k—Z¯ÁŠ7*ò'ïR¤? ÉW
,ødÏ ðBE8Bé1ç´ö s+˜aX8/ …*FÜz-á
Ä¤6€X‰#Vs©!Ôz_õ¾mç3óø"aøaú1‹×Ú^üýÝ»ª x¹JDœŸÎâyÆ,­S¯L!¨šþº®AO3{ën
G¸0Êç(6=0Æ…ÿÅ¢¬ŸÜ,ê2vUþS¨<¾6o‹…Î#/ÅØ[ó¡×ù9R‚ÎßÿñÍêiÇÒ»ãïo¾Y6išw´ë”‚ð³ò÷÷÷=;¾Âðä.+äÏèøñ*Œß¾s>L>B¯Ÿó 3éîÛz!*É¦ 
iŒ¼°"/:yø´Ï»ÅŠîV®åc®™ÿòöc¢º¤ôûˆ?}n. iƒrú+‚ÃcÏ÷Ê©G‚Ó¾*Ò^w<½ªÂ!Ã“]ÊÔa3¥ÇÏÛÌ”:o3S½l¨N¦Ä‹ñ›™ž80¤dJ¼¿ž‰ÔRg âe§CAÒoýogcu²Õjb­UHz5¿ÖpÐšuÕVo…°zµñ:È³Õþ´‘õ)v$Æ}×áŒêÆXÜm¹¨<÷YÞï~PŸtWM²´;é5ÙéÆÈU	ÃHØAz°L‡³}zÄa0Ês||êŸJ@©+n+|Ê3)_½Ú’!p3_­ÊPâêÞÌU«}8ñ¸ÚÌU+S"ømfJ<	63‰:™d­LGLpÜ¤Gì’ÉÀ±'AD:&ùñÁyóa”Žhÿcú£vÂv¶ÄUçÇŒí2õbo§7n3_â6ØÊES·Ïf¾ZMLE’­\µˆA¼²^+ç‘“œB£ÝÚ¯µ(%UBQ²s>ðäÃ¡ï»ì< ƒÕ‹R?Š.ÜAœŸí',™F_ü|<p]?EÕÍjtÞþºÃ†XbTMBª
T¾Úñ<+TQ•m ZV]šŸ‡FÍÖ…ñ¥â·}­ac¼j©-»‘¦Ù±¹"õ%&aµP`dŠB€'T;ëAAA8rR.ÕŠxë…ÖÌA B5‚#Cj¨/{_…ŠÐ^»ÍŒÑ«%:=-­‡¥R¬øùî*Õ‚"Y-ÒH·_¬\"¼þd-…¢ƒ‹¥Ö*/¦ Ä”‘£}WVwMá²ªgÑž`‰jXMÚˆÍi>ÈÜLÍª;Œ;¹éTÍê½‘W'ïpôŽ¸¶ƒ¸0©µ±VY¤ˆµ4€…>!
i~eœ9Ì<ÆP(Í€TÀ"$4ßÛïÔ(ÑX2_Ô]Ø†"M²¹p%üqÕû€J®âqô›×;ŠÐ…'yWÅˆè[%FgÆ¯æn4Î;¯ã|½ì¼žÞ†å‘Ô¹â5þ½œìÔ«ÇÆíÖH€¤‚lDk¼û}$Ä¹ Bl =§¡øjÒ
çyÀÞðÝ¿(»ÅêZD0<æ>Å¹ß)_y"ÒZXž<§¢9Aáô>Ì—Wi÷·q'âÄ‡•ÕzÁ<õUYåS>Ã›è©OS&?ž®~ïªÔ'"uêXêÔW–uê;¨éo¼g©£žüÈ»N}kSÏSÈ$'LÉô—èû©ïã&¿Yo¦É•§¥ÉS·£IÝ&uKØÔÉ±©“ãR×¤Kr—:.Z\êó¸>u+Vš2õAbŸ:>>usûyrÊÔõs›úýmêøÜ¦®ŸÛÔÍÐO~w»Ÿ:äýÔì'ïí~êâí§.Þ,uog©“˜¥‚@–zÖew©	S§&KE‹jmðZÂ©í.™€Ý¥âÊ]*ZÜ¥ä]êF¼›wUêñÒÎR·ÄÝ<¹ÔäOÝàw÷Éu§"à uÎ©H0p©$uºÍ©ëmº)©s3Lmã0•XS—úpÔ¦ž&ÃT|¦âË0u(G©+h”º‚F6µ‘£ÔÙ¥ÂÆ(uÄG©#>JE–Qž\dêê¥ÂÀØ¤&LE qêNÔ¤›,‰Sár’:é“Ôµþ[*yùmž
‚ÓÔ¦ŽÑ4uMS{3Mñ\¥¢`žºàòTÒ–»ÔéÎSQ#OîM*¦çÉmL]ù0óa*Ë“Ï<ù<É“‹L]¾ùo©	S8OîL*`ä©[,O…ô<u/ÎRWù,uñÎRï,u®g©sLÏg©S8KÂYê:{HÃyêˆ'Ÿ"SòÇÔÿ8N ûT ºOV®Ý§¶òS*B?¨IbÊßS»óûá½ýh89"©Š/»ŽÔ,Aq¸+“OiÔÈé>OÙÖÌ;›*=ÖÅìÊ]¿Þ¡³Y‚D¾+kî†YíÏú	Ö‹ÇŒÇNJá,ò;’Ç¦?z¼kŒò¡±­°L6g˜ºè¼åÇ/ªZ²J´³I½å×½OÃÇ£³¾ƒIìáQw”eŒuô„œU¹®$Œèš³aÂˆ–Ùªy¡ÖÍÌ«¢ìWÑÔÜ³¯ìîÀøý)Qkï”Ég]5­éòòxÙK(m/,1ÜBx† \q&ÒÐ"l¤Ò@h% '3Ì ÃÊ3&´U¡}þ./c¨ ™YD?»—ÇÛÇ1ºñ±~ŠaœŠ®tüªøâYî,/Þ ûÎë¢¶çöX\ö£pXK¹ðzÈ{“þ¤:Z½ØˆVÏ%Ý­žR¶åÊ&`=¦ãC™·–WŒ&Ý-WÈž+…b¾+aËt¾_ÞŒõïçsD,{ý¤Ç'ûB)êyªlMÃ—ÉvmåCTO%[SEìd[]º,Ùº•Zuºõ&Ù.‘¬.H×ì¦NM²æ2]Ñ–¬k^÷Ñ¼¦"Y¯Zu²ðš,Ä5)š ¡¦•Ã³,áÊ~6Tâq\uÕ«¦ùéúÁP^®Ó¿hì®‘ÝqGæ±æ­ðÇ©t•wÇ°ŠªÇã»KqTGeT` 4–@ÃÀ›°öžÈªÓº2‡Ä$üÕ†cƒ%†2Y¦•:+GõY“T™JRCñÙÄ•(ÄrãA¥ /
üº½ÀZ–zKïããYêã<´4µ¥©-MmijM q˜§>BËŠ¨ÆnµLõD¦Zb3TÕ:3žÁ/EX¡å^ë@W•!o½Bh(©Æ&—Ò’¨d5Jk,!\0ë±Ôí1ý<„õq¸þ´•R¯nèVãËlºUñøÜA5mÝ^l-y=‘¼ò#Ý ¯Û³ÑRØ–Â¶¶¥°	ö:Ùm˜ùCÑÙÇÎµ¤öDR»6”QÛì6¬åR¼–È8’x@´ Z1FLpî°B+‡B±VC¥by¸/$û3ñÚr¬þ$¤0ºIj%Fþ’„RÓ(íú"kùì‰|ŸÄg×§¢%³-™mÉlKfSÈl‰	Lv`þX4¶ìYËaOå°‹ql†Àz(é¥è+Š'sTË*F5¥FÇ×ÙµE’á<Àˆ@š¨g^P`€qÌ+À0q*?+}-Fê3&¯$:^'’WIä¶#`l8„2–ßªéëÚkÉë‰äžB^×&¢¥®-um©kK]¨k‡‰ë¸ü¡hkÑ¯–´žHZËQlˆ²®Ûù9«aL"Ãk	„Ìa€‘õ``4çNŽ¹´ŽÄ ò¡„eÀÂ@a1ÒÎí}­:v§`l%³\ëkEèá=TµšŸÞ|8~õC6ºí¼Öv>P¿g¿wÞÄöÅ»Ó&+¹þj8ùkçWgú£ñ`|ûPî‰/ž=ý³3\(ŠõëWH±€Jq0úüÓõØÜ“.àÈ]M"éYnØÖE½€¶ab/%©cã\afË9 =á%Èp !&XX‰á-‡œ§UžÄùóš
ÿbÔ>WI&»üC‚Ä¶¤ŽÝ”Ô1L“Ô××X‹d'Šêè§ÿõ™heõVVoeõVVOÕKØHÖÓ×ë‚ÒzÙŒV\?Q\_c3òúHåwý‹Wb¹ãž2åÂDjá‚È«zê	£$|j8J­a2@!zx^S1RŸµ‰)¸¶‰«ä­W˜8ô2Ð“%ÖòÖyëI&¦µ‰hikK[[ÚÚÒÖÚZ Æ%Xë\]´­h9ë‰œµÅf(ëØûÀ.ÅY=ÒNA‹LàDVk¥A¼¨ª„ä˜H¬`0|%LøÍ:å´³ÖyoàNXÎÊYË¡ú“V·œú!¢[ÚVÄRµ­ë‹¬e­§j[O	¸>-mmikK[[Úš@[KØ¸o]¬×²-s=‘¹.†±!ê:ºoÅÀ@ÏÑSï¨6
SRœá…tˆŽ¨Wž0½ƒ^c+ã+âŒIÎ«kãôY“V”ìÌ/Ä6i…„¢ÐÕ’Ä»¨«åÕ2Ö“ë‰¡«WÓÐÒÕ–®¶tµ¥«)tut®:º¢:jYêÉ,uÔE¸ÑÅT«,ð$D•1Âç¸WÂ('5!P€…3µŒJhŒ9"”å+-Ï¹:ŒÓŸ…¢²mo| 0ßp ƒ4g€Õòj)ê%)êjZŠÚRÔ–¢¶5¢Nªßû|.Šº‚ªRÔÐ†–¢žHQã6DQÃa{¹ÛVN[
4ÅŠ
…Ð–C ·hœVi-0*(©R*$·Rr )àÆŸ—¥CõYUœLTÚ
U-9aë¬HA`š&u}‰µLõ$¦z¢ù}&Z²Ú’Õ–¬¶d5…¬°q¾ºX—¤¬E3ZÖz*k-‡±âúÛ|z1å*ÌÂRsŽBŠqô  ÐPH¥T–i¯ @š:! s@
`ÁÄ¢³ÒÖ8PÒÊdaíßp dó}(qb´“ÇÖ’ÖIëIÏ>ÎCKY[ÊÚRÖ–²&PÖ— ¬`uAºÑ’ÕÉj1ˆÍPÕ@ªÜå< 2Ð" <sØe%¦Î3ï…4D0êòT~óÚ((‘@Rc)bŽÏJVË¡úsÐUŠ0Þ>-!"ëw¬$
Ó‘DV×—XKW/©c]Ÿ‰–°¶„µ%¬-aM ¬%l\‚²®ÖIkÙŒ–¶žH[ÃØqe³ÁÅ.Y	h!÷6ÐNdx*‘k„4RÐ)*$í‘Üi±ÐÐãð"ÈsVÞZŒÔgM[Iz$V°‰!Œ6ZaÄÒ|X×–XË[Oä­'´Z›ˆ–¶¶´µ¥­-mM ­j\‚µ®ÁÕIkÑŠ–³žÈYËQl²^ì™jƒ0Ó®rVÀf$vN2k˜ôØO%P`è°·`À%’N0`Sð¼Ž%g¨éíŸ„¹BÀðV,V!Gë*Wãi:×õ¥Ör×¹+F§r×ö­ê–¼¶äµ%¯G’×„§ªŸ‰½6ûöumúÚ>TÝmàj;Nºj¤BAVu•µõŸýÑ]ôö@ n³Yø	y½¤Eœ·”+ƒ=ÃÂ•Æš»"Ì•rœI°ÀƒI`eÂI5áCå¾KZ?ÄîvÊs|>-yÖ²óEç÷Ú2ïvêg¢§yà§aìús¦xøÊªîa<Ý¾Ú=a;©ªäˆxé#Ua	èß °uÿ
6þ$ÞÀÚÑÄnXÝ}Ëâìu”OœÉ|æì!âªbÓéR‹¼=§òZ‰<’×îjd|¦nôÝ•¹OÎtgãñ –*ëŸ!ËÖ¬Úñí7OÚQVõ®Ÿ™ñ`<í†FÝ Ñ]gËá!Û}Ôô _žs¨â¸©ql87Qƒ 	vû°rÞ{F’ô=¸:…‹|{ðS†Ø#ãC‰‚j¡˜Äyë¡¥DAeÃÉ©L{)Á!±ša‹ŒåœÉ='ÄwÙm¿óú£ÊJgƒødkàÙl<-@tÖ™OB_Þþ÷»—ÿþÇ?~	ÇíIøcŒÒ=ÔœV<(ûÃjÔ:ËõÙÉ³ádàŠr¦c=¯**+ÎOÕÆÊv´
$Ód£Û›˜°Û¨ÖÛ8wÞf£ù§Nù@fQ\ùVy¨.0­©ÊgÓ¹™ÍÃêëÝüÚw[%wBŠ¡»OïâœÄÚCGïÝ`Ð½ïGE‘÷¡Éƒ‡Î<ySÿßÙt6WƒÎ»0nÚyñý/ÿýî‹Î›ŽÜ Œœ‡¾•}U¼UnJŠŠoV÷:kãRŒÆÐE
;‹š bžÂÀÆ^Ú‡°Ü2Î§‡Ø¢eUÛ±UÃÀ'#§,Z:ûä¶ìb·¬É•9	©£ŒOc£nÂ.Í¦€ªƒY¿×ùîÉØf¡)áøs±yú¡œöÐ¥Ù8ìô^ùk–ß¨ŽŸ‡m›†CO3sWL_8Wân
‡Ê{ïG‘:dqA¼ì<î£›]=ïÇwE·£n¬¨Éga1°þÆvÖøf0¾ïBKå:é†ƒ®\oEƒÃJÍQ&VŸoŒüjúó£FíŠié­›„ƒ%4,ŒqÔ¡E·.4i›¶XÉaÑäa¼B²›íÅöÜ:¼ÇA,´x»ÙP8 ÆP€G6T|„0;Ùá<77ém¼c¨'9üŒÒªÝöº€×+3™ûüåtòó®ÄˆoF³éx—Ü«¯•0—?£¯jN¥<8Ð€š·}VÍ:¤ÂÛXí9²—?W¹/âd0rJ»ëS¥W:½ÊûáDžÆ]PÑàeÊý)™6Ó‡ÉlÜËÇa1À_¼`Dg•Z¤'y~þå›ŸÞ½{û†ÿƒ´†1/K¬mäfùh8‰Y0=.O€€Ñ¬NÆa¦óãòº8fô¸FŽâ×÷¸vÆ÷è=âÉ¹Ã Ôiíf¶£šœçƒãVØZ†c—×t6°/¾ýéŸï¿{ýî»ª„%_³	i™²zS”kúÛ·ßõæ=ê=RH<"LÛfÓÿ(ÕNë©_ÚÐK=&XûqK!µ‘!ô „Ýê²çù´ 0Õ}•÷÷¤Èc’]åÔf"[í†»QMÇµm¸-…Ô#µ]˜*à
sëÃj3AF±ÊAãgjÈQœ{K˜ÁV228ï¬š²G–ù±èM)£ü«”(Š“:Òñ-š¾ +½ýLíŸQKÉCˆñT-LÒ¥)w2Ì_Mí«Y1±åÂÛ§(£H$Äº¢¬øñ=Š2,¶LºœÓ‹®¤ô Aw{ÙuÃúéÖPˆ5@	¿Ž2ÃxRpÁ’¢‚“‰adàº Ö¡ƒOff­ï§²Á0“äÈË4O¦¢ŠTíÜå'“© §W‘¤Ã4j…›AD¬:%Vé&n:¨H¿~ñ­›'³/¿|;®¶Ž>™Ï*ÄûO£ºèPuzW_µT“‰ãpÛ&VK®=G–qãr^o,0±²L`-5&Ð1áÂÊ4*…¦Dñ}:¨oÿù}´3ò¬Ø¿Í‚Èî:VÍTÇ¨I«]Dñq×m•Îi5<Q“	±x$¿YØ.¥ƒO¬ë÷àEaÛ¹)j¸ùÏU÷)þ<ûÏçço³Y¯œÐÅÿ÷É¢ši•ñëWÓÐÅÎ^­ÖŸþUý×b ö@|€g*9\‡xŽ¥ï–þ!ˆoö@\J.ù:Ì :Úãq
‚ðË»Å";Vî/Uzç7ÔùW´Öé“øhI_M&a¨Š‰©4S¯§[›±^(û.€`¥Åþ1yµ4¾f˜&æï,¸þ‰4°ÝbßuËÊq+IhÚ•o)Œ$Šijvˆ ˆySåB£²é8½‘™¶ƒ:©WRU¦eŒ–ûò8,äÈÄêüÔ¹xä£ž¸µwÝOºµ#.d{?É>é¹?:g6>:Køïè<c)ýÑÙf‚•=>[­Qœ°»f‹LÅÂ­•ÓÏÐÑùÊA©åèåÿi8@Çì³Çô¡¦ÿø…ÊH'ªóvåf½F•5«íPNÒÛÀ'#¼WoSªV¢ôðÞŒ£	)`=»Fô~%J©CYãÏ{S•ÅÝ!»ª¬2ÕÇÌÝŸ¦yÐÑì4ÅÛ„>c‚%ø!õp-ÆžGè¹	t@iIÇ4×œ0 B"°yD,cP„yä’¨ÀV€§p§	¡û1¯;aŽ§á§Ò$èn³”0îÛÁX«A'v9ˆü¶“÷ÇÓ™™Ï*­È‹á),“Ç—Ü»y,¡°÷uî³Y¿óí¯?tKcñÊ;ó<Å†wþ2ï;¥‚ wS‘Õ/=ü¿¼év^wÞ,?XMhøîÛ¢6À8²Ð‚1Ç¯C=ù¹ü©îæä[5…ùš¾Z5°Òé?jx¶þ—JžMéA¤‚Ù ¶n8DáÃ
¢å>èKº[,æ^Ü)bÃßÿÚ¬bèm1¥™K3ÖÒíéòé¯­Ä Gª„–-©tKÚ5J,ŽŒ*cJ^ßb]¼`è¥
ûÀ.5:‡m}›*üo‹3ï@*÷i–’l=¦ËN—.„Šî‚€Ä"U9LÕqBý;¸y:%?‚‰GÀè”¾m2æ£‰r\î)é"d«I“ª•<ÆhG(Ç–Ã¦FhÀµÑÖ{ÇA`+&0Ç%L×‘Z"Œjâ\KcþÈ4†mÓŽàCØ–‹P)7h=|qq÷™ž®ÿl‰Ì‘a\‘9 ŸLdžh®œÑ$j;VÔ&5ýÇIÌRW•ºÁzžKûÈƒþôÊÊ#âœúÆ“øÔAV-Zecu×§¡íšÂã¸»8¡jûí¬.å¡#C/0$¸fHµ ØL(P	,"‡‘ˆ1ì<¥Xyéñ²ðìök¼é}«—Õ\çu”@S¾ûõ×_¾î¨¼óÃb:åTÒ¬2aÁ²¼¢f}=º£{û/%ŽFß}ûË½ÍšòùdøVtoÿOÌYšAÍ‘
¹ç}éîøW?3ýÎÂy|Õt;2Ÿeƒ@-B1«ö„Ú
÷q7k`«Ì^ggøˆ›Áòä.Ì¡Å˜µjCãatŒ/”¢C}æV-‰Pn6GrWOÊËkTÅ¡+ºèþÍz'ž×»iì}36Ê
>Uµ*Ìßmš¿1Fpóã@l¿	&¬1¿@#S˜ßþ–Fê¢×ÿðYíß+?§šnïi#pz0$ÄVÙ´Jÿ§]hy+{4ET5©ÉS¤?tÑá.
Š§…í¡ƒA;;Š;j	Ï¡Bkd£¢1K9 „S%©¶LŒŒ
aQøÙ=gÇW¡KbÿðÄ®í?
Á·HÚY¤ÍÃŽ7ƒ¹]~\øœ„­ u0é+ífùËyûî¡ÓW]'ÎÃG5u!¤ôWzÌýÍ(0©¼¿ž?×™Ô,àvºXpÞfŸ:z¤÷lÏ©Ñxv3rÆåyÉÃ!QÔd3„ÝˆÁ“qþ~¬.Šõ± ÐúŽèÞ‰æaòKáþ¡sòuÌÔ'Ÿ~è|­FýÎwã íÎcî7*ln›…3äçø.ü÷aÉe³ù,ðd@Ïp¡©\ž½á•½Z¬Ð
™ž=G„öÄ#
°/7¯5qŒZwkâ˜~ð–÷“=Ô¥Ïè‘þ¶©kMuîtãZ ¾èù“NŸŒâ°š÷˜žLF¥L¾µvV°’(5ŠJ>£’cÅ¨‡Ä„:KN˜ÚJïÇ¤F•1©AwlêÛÔPLÕñ¾×¦Ýq©sè‡ÈY„´JÃ ‚MGÉòÉq·æÉ)S×î­MM˜ÚíÛMë§Îvz±Ô^§‡Kä•—¬ZI²–ðCê€§G:K"–m S¦nÄaêˆ§GcKmãÈ6à-u{RÁt”ºÐ’cË’·MÓáê&*F‹9&qj¤·Iê>›^0´^êxæ©ë-¦be>L…g ø[jÂæ#¦2‡<~Óc¦bÁ,uÀ›fø1u
?ŽSGü>uE&GR|P•w(ž+æb)¥¦3Å­¨Ãƒ´H^ÞÉ®¼òD0kH.;2ôâZ3½¸!¾¸¯“\œ7Ã Ò.èntêä@ˆ«Âf35Ôay]J1ˆðÖk‰uœqŽ e"$aÎ ç 
`€c ¹¡sB±ÐÓ}F¥¯VkÕ‚¨7†ó³Ö	†¯È–Ÿ(ºþ<:ú jªJpsµŠÁSƒ€#Ý~ž(7§¤ULØª[õ`«lÕƒ­z°U¶êÁV=Øª[õ`«üCª¥£4]Þ¦,uaÞ²1@½Þªki÷Æwãé¥{Z#f5#R)¤¥v s€¢O0Lr¨1°Êyo½ÁÊQ¾g2 ¸Ä9(ö)öbŸZ^:½ÕH^£:ïiô}ê<ÎÉVôH¡Ø¸·\I<¬Î{Ü4­&ïTM–¸æ‹ÙOg£UâLØ*ñZ%^«Äk•x­¯UâµJ¼V‰×*ñZ%^«Äûc*ñ¢`”¤¿{” .«º‹íøãiíŠ^5¥°[ïÆù5vQ‡Y¼ˆ±åJ ¡¬Â@(ç8q e°†Zî¸"Ž)Aã›Å!1$+¶Gc÷¦èN¡ßÉ£Zj£³­ï4%Þvàˆ<ËgÅ(—Ã]<jŠïnŒü¬©¯ý{´kï_(·Þ-ˆ­?YˆXªâo}óµš¿“CwAqlÒF±¼Îik^îŠn±
÷ý‡D}¤ïø¹Ÿf³™],$5²€ïˆB„œ0À  OŒäaJ6—ÀZ*ÃtA…TÐ(!'ûÿÛÔ¹Ø»`½ÊgÅ/-Ø7 ö»‡¶ÛY[L×³!Ò’|3fa\âõ˜„Ipø!Ú}{­E÷“=´)9ÍCûÉœ´Öƒ	[ëNkÝi­;­u'%akÝi­;­u§µî´Ö„„­u§µî\—ug)Ü'§_hRBOD¯‹š…ÖZó‡3­÷­)Q£A×ô§™»`Ð30Iõ
!§ô\SÆ™@Ì9ç9Æg)‡œ­ˆ6JRÅ%ts¸Guøcì[çMÙ·ÖÇ»áÓý¬Uƒ¡m_oD9ØðõFŒƒT“ÏŽÍÔêOÞp¢npÇ¬´ÚÁƒ	[í`«lµƒ­v°Õ¶ÚÁV;Øj[í`«lµƒHí`! -ä£ßê¢:¿öüá´~›½kLï7.¥îs€i)9õ)%ˆ×$™TY‡©@ŠXƒæi€ÆV¡âTaÃ Ù§î]ZhîºQ—A|yø¶?+´o¿¨AÖêÿNÔÿâkTòô÷ÂòÛôÿfºþvƒ¢T_ÁÇmÖ*O~ß	ÓÓ‚?<NF«ÿ;˜°Õÿµú¿?ºþ/u¶[EáÕ*
S7C«Q< 1K]g­ê±U=¶ªÇVõØª'lU{.UA$;&m¡k8&ÃDUªOeÃËª2C3þxÌØ©¦—yæ†SÎ®)/­'”!e-ePi‰U÷Ž#¨	À"iøCÈµx£BX«ö(/ß-ºÕº)6 ¦ÜÌÏZ!É  ›KAŒ$^×GBŒ%HÕGnîžV'Ù€sâioÎoNH«—<˜°ÕK¶zÉV/Ùê%[½d«—lõ’­^²ÕK¶zÉV/Ùê%›ÕK.Å²Õá¦wQõá²)8âªc'«Çªv(\Ô=Þƒ‹ž±Þplç÷>*`üAð…-ÃÁt}¢0J¨½bb¨0@Î4Ü/, ˆxe‘ÔÌI†€•bÉ4×£=Ýw÷ù;7˜¸ig6JÕ]ø-ŽUÞ1c­á«ñÔ†nvB7§n8ž¹ÎP™~6*¸îU?þ†/êA‰*ÔxwY¨:ªEºã0D]Õ¹ÙýxzW(Õ`0¾/ÓEMáÍò»…6«TT}gäî;³él®ÙïÎvnç.FELÝzâ›8Ôï>eù,ÝvÊxš½Nço¡Šyî:÷Ù¬ßQ¡¶ñ¬›»ihR§Ô·Ì§¡ÜâÛ7e÷ŸS)èOUÔF9S¿Zù«=JAN)•œã5¥ 'ˆ1$ÁN¥ …œË¥ §P¢5 g”£C*Á0•ÝÅ’îV.æ#tƒM©_O&!{ÑîüÕ»bš©?	Ö¨Žzp1=‰ƒq²ÎP
†ÓÆ©ª‚Û£é”³`ò0ëG¸[4j/®×@æ¼¿ÌaJß3’ Ì "  \9äÈÐµ’ZÌ½SL3M´€L‹e§‘µÂ1åRŽ¡€7Ö0‰œÂ!Î0ÝƒÁÑVóó4»ÍFjÐyýë¯ÆÓQç]ßû!ö‡wßu%Ž&•hä†5:×sgÙù…ý#V”UZGÂ<–åýÍë_ÿ‡Nþúkç«øõ[¥ÍÆÓ,`ûÍc¶P…êäÅaÜNÕpAuiˆyÙ¹ïg¦“Í'÷jj”'aK†½rS@iËÿè¼ˆmù*lƒ‘+»öÅó\BŠv60Üª‚K€•¬ªàLr€w[Z$lº~c,%!pW1P°ƒÆ–¼ß].Éîb1öÊµœ‚¡ßüòö¬¶•8a-»Ê®ŽžŠ åÙ•Š¯t6Š£^A•—f—¼_ic©B’ÝÐ÷@³å½ˆÂÈ	í¬îÅHÆ.M¦qU4t™²bÈûwå¨'¥9\cRyã©›Ï²Až”&¡Î„ò¢‘ûPšÛ©›$TW$Ûÿõ ÓvÐËÇ=ôâ‹Œèj½õZêoß~ÿÕ›÷¨‡z4-ã0æc‰µ,×­d•§e‹csÂ”æMgûâÛŸþùþ»×ï¾«J˜;[õmAAmw>Êf)ë&4ÓlöòíÖî†ãGq•ìŸUp0»†ve9[™Ö¤ê°Qýp$ê'á[2ôFÚdjö|—ß¹Á«ÞîruŠÿøŸ¯æùt‰É;
[ûVâŠï§ÕÙËÞœ¤˜Om6‹“êÞ;}šW 
Ð•¡<Ž†Jk)	ò¾&PJH ;È‰ðP b-‘ÒB¨(öÂ)¼3BŒ9%Öú²ï…×AðµnðP¾ÞòCìsÞ/\c
ÑüõTéÌtÙ]8Ö–?:íç©¥–¼1ŸO&ãi(ì£šfãy¾«¢›å‡/—¼ìü‡V¾XhòqÙç'•ÅZ(XR!³ÆÖ½Š£[éÉ#Ÿzò`¸“_RÆáæ+bÉÉº'O˜óÃ¯ìY³Ýåâë–ËîH¡Ÿ•rN&†‘«K;S‡àô÷¦Á±¯Î,yæž& u{ácg]ëž6Én©ö æ}Ò]’=R«N·²Ï»³Ô¡L7´§[»“-Î©L¶Ñ>ƒÝ³y‹bó†Âd³^ãF¸dCX“æ­ <ª´líA¯&ÁëH×“5mâŠ<ê±®EcnVQòö0®Fñí¯‡FmV¿UW…ålÇxl9{Ï'	ÌÛÍ‰ÓOXrÆ;Ì‘aãsLå*áG*jñÜ†,ñQ;K¥çŒ
îŒVQ++…tQí%ÆB!ÃÊÑð3Vò=ùm¦§*ªGB¬ÖlÝFè±ï7eç÷sâ¨ð}2L«ç—«²ÐÞº<k$SƒNèg4N–m¸)Ú0zØ¬´cYT/4µ&ÍÜÔ+ãž•ûh|Óy¡j]ïÛ>½kÁ‹)ØŽÁËÜÍ‹1ç@l¹¸ƒl¬3c"@Ãðn}·\lÝr™õâ=#.ÍVoF³éx4^­Úó³6a³ÿ§{»3tì#Œ[SRu‚ìE†¤’­)F•û´*¿‹n¾õ¡ÔõZ
…;ý˜|•GÕËÀ&km·2T6øÖ˜÷yÑÒÔt/¾}óæ=î*Ãõ}Ü¡,ƒß‡*æ ‰É^üûÿ|OJ£B%›¢=J{z¨æÉ, ¥²1HOY«øGgL¨N&|0[>³æ/I×µ„/Þüûß¯¿úþ=ìáôÒ×2õh½l¢^6yD¶bàþýï°wH½\=xhv÷f<fT623.ëÑ¡Õ»7cÝ>šŠß¡\²Ýâ©¥‰-q¨–Ô²÷äÞ!µlœLx³òšžAêHõ9Iî Tc"Œ&pY%WD’ø‚±†Æ:n fÐ{G´Ö^ëN+Ç=·@ cõÞJZ¹£q¹Clëã%ÝíD‡Ã”A´%w .Þ;ä‡/×;Ò]?®Eò¨§–VÉƒ=z7\£äqÀ_ãÊ%F[¿Sòxb«¿z$Ñùa‡,’”ïQp86ýBÐHÌµ7Žsåx^¿_#Ëi®‹I¹×9Þñ9ÖDˆò¦öt¯@qJny|îuñâ”ÌQÊ8-Û’9NÊ7j…rRþÄ¹û½y‡ª‚IªÔg#ŸÂ_'XCp°òÛ?J&Ñ^pçƒ@¢ˆ°rF%
q`„T‚C%bRXÂ-×ÆBŒ±Åx½Ðž˜}2Éë¿éüøÄËŒmá^PÇ‡ýâÇÞ,Ï* Ä‘ï•\2LÚ­ëÜ8Ûg”}n
H)éºp€$c«Ò-æºËŽ6E4qŸæ2AÑ÷õnŸœ²#-«ñ¯"¸{¶au):û£
Œj‚ËúQI[Ÿ(?"y+yµ6ï„Ó‚Tœâtªþè¤†Ôhn¥¶’«Žf4Ã‘Ã–,€BÞz-´A–(Ë=dVaìtX+ô¾qd¤FÛH- ÙÔL"¶e>F!(7šãÃ×vv#õqÊ›«ÀêZvãgÀê0—W…Õ´'`uƒÚK]¾xr=¡Y4‡OäÀfP}t¿Ï»Ê×uÚ‡«X‰ëŒyÅ1¤IîáØ:Á5UÑY_*"DQgŒ–"¨p !LÆÐâ}ï½öÓìN©QÞYu¯Ýº‹‘¨²d;Ôþ‡Ê{ì¯Æwü„‰#´ß¥ ›<œ€u—ùÃÊùõ%ÒsÝ-gùwÚÏr%ó±»k}=Ê%>žu?Žzµfy×æÛYäq£a¸ze†ÐÖÎÌzoC“âª-Jõ=	†ç$ãf2•5qhFY¯ˆ2Fºi0Æ+¥‰!Rc<ë™qZî¤a?ÓU–vÝ`Ä%Ú#°F Œ†-Õ££iåã¨_ÏFÓóƒ‘%P„Ä0%š)Ä¬Õy(-ÂÅûÂ:& K‡9PRÈˆ¦^µ?Pzya°),ª*ìÚ¡hó6!–¢.M[(º M¯Š¦g¢Ú·«O€"Ë µ„IPÖKÍ€ÖÔ8,$Šó žV¥Nkäž!ÉB$j{¡(ÏCGr×Uw	8"'ˆi¨®˜–·pt1í€Ñà(?ÍÎG l£€GñìÃÞÀ†Z6Ø‘å
"¥2BRï5HYà	!Òmß5¶×ùl>¢4…G•Å];‘-<ÂµñhÖRm@:ÒkscØ¯‘fç€$í. Ê¶Ì:à¹÷X®,Ò†Q¥±·J%@Ð)*` Eˆ`(	·È0á wAÂ“ûÜ¿r5çÍaÒÁ¯•Ä*±T:ìLò¸HZP:?(iwm˜¤ÝY éöü É`‰cÈKÌ¥æ”`iˆñL)íÐhÌ1V3CaQìgÅ[Vìƒ¤ùàV5È’•w	@¢°®éÛÎ/¶éÛ«¤Û³ Rí þ'p$-\;î¡!Ö+°Æï¤E!!CÇDybü‘ð+”’(!5ä^ï“Ú¾r£[5È#HU¥]75g]Ó£ŒÎ¯ÒÖ•Aê/F£³€Ñ¬k‚BÄ˜×Ê+¡­„cÄZƒ¸¢ŒÉ˜¬ˆZLHID-N
c%‚Ú+ô«©›£FU…];5e]Ó­uíPtuÖ5}ëÚSÿöç‡"‡€Ô ¥ƒÔEå@om´å#M)tZ„@R«SÒ’J'¬Z)Éñ>(ç£Å´ÊÒ.FÛÒÎÂ‹ZÛÚ%Àèêlkú,¶5£.àé¥'‚ ¢,"‚rŒˆ$ 1ˆ²Ú ad`Lar5áð³ð˜1¥Ý'¤½Qaó5FÕ¥ýYÀÈ¨ŒÎFF]u0º 3R_º‡Œ’ÎB9€Ï°qA(%´ÇÐÃTøÚÈð«€0Þ,¦TÛ}`ô»3ý¦ ¨¢¬+¢­¨±X®ÛÒ‚ô›D-+ªD”Õ¢«cEæ<¬èá@¤ÖÂ¢h0s 9àÆI§1¥FQ‡!Ò¡ !ËôH!§X{¯™û´Eÿrƒ¼) ª*ë@ôäa—s ÑCD ¢‡«¢‡s ‘½€xæ™Ê`ëÄr$|Dªµg^¨¹VÒ+çˆqp ]¬)84Ö.Í>Fôµe!QeaWE©­m+œ]@8³W'œÙ³gö.Þ,½Ôxˆ’\kÉãã!” ¦˜0åÉ@”œõ†Œ8”X"ÁÝ(úÖ…AhJQTYØ% èIxÝs@Qëêx	(º:WG{WG7¸€1Ÿ	Ï”4F9 0Ä2í€RIvD\ìá
9¤Ö˜8L±ÏÕñÛ©swM!QEYWD‰gnÐÑùÅ37¸6 rƒ³ Ñ\”Vn%æ™FÎÈ ˜Y¤)fŽ <±Z«@0Á ÀK!.[Û úft;hN>«.íÊÁ¨1ë™k]/ÀŠÜÕ¹8º³¸8ºÑûo¿:?!&'Ìa&-ôÆ@'h`JÚÈQÞxj J3`¹åá\8£<Ûam‰ /þ9ÊfñõòltkÇÃ/¨Äâ/X2ý†Ùº²×fäðú×PZ5A‹€Ú—DŠ¿>Ü
:t]Àðcübç
rÎóš;fˆ9ê¨
3©CR)Â,‘AÊƒA ÷©¹ßMšÔsW—vÝ¨´­]:GµÆÿKð¨«3þ»³ÿÝ¢X¦ƒXWÞZª	dÑÒF¨$„q©<µ Òø3ÖcÅ‘„^‹æ– K÷‘¨|6nÐAû@q€#Nˆ6R7ú‘kƒÔ‡£úéêb¸³„qóè˜ˆBi&˜ u¡Ê#j)uXR ½gAÌ3Fú€XÌpHEP°RTî³»}¥òßæM…b«,ìº¡¨9»››·Ptf4¿:(šŸŠü¼‘,5D np€
âØb¯ô{ƒœöAjÓpd|øÊ3ÐKCà!`ýÛÙ1ª.íÚÁ¨)u·oý‘. Fþêü‘üYü‘|v~0"Ô²	ÒxN´ŠaÅ¶XØxÀkÇ¼q–S¬0ÀZ(ì°²B
¯ÃWZïÓuÿ-5¨3ª.íOFYF £ìêÀ(;] ¼‘ÊFÃ6ñ :ç)†Zs¤ÖÈh A@ Æ™qÜ¡9‚ª LÎ+@ñÞˆÙ›ºQcW×*»=}^ôù…4ß†¹]]x–ð"·Ò€dÚ„ÿkÆ3˜hj qÆ{u†§ãC¾Z1 €”èð=õ‚Ê@ ÄÞWÖ¾Ÿ6ÇŠªÊºr jÌ9ò¶ÐjQ}çÈÛ«ÐnÏ" Ý^ÀK[joúxiuø ëPÈ„(¤y JÒƒ¬5TZ…ƒøFµ!ŒëhàgÄb½ÏK[…eßœºè@q—€£'ùžá‘ÛÖWûv´Û«óÕ¾=‹¯öíìhN	ä8EjÊi`By2`¤±>à‚Øsm„PC§JE5PQ»ÏÇèÛù5›«)8ª.îOG­-íptu¶´Û³ØÒú¸NksP$IÃ$^sã5Iø÷J ‘6ÜK¡,£Äi¨Á0í£ïœžºû†À¨²°K@Ñ%ž{ì·×i/ 1ê_ÝuÚþY®Óö/`I³`o€™°3ee°5\S­(VP‹ L*
˜r”qÈ”TR¦¹·û<Œ¾ËF¶)ZTUÖ•Qc£~kE»€Æ¨uV´þY¬hýKXÑb>hP¨‘1Ê,'Li
¼f !¥	…J4×°V@[Œ˜!
î»×ÿf:[«¹h´ÕÅ]75'¢õ[KÚD´þÕYÒúg±¤õ/ 1Œ2‚ T–{*3&0ƒ0F#ÜñètÍ P&HR{ÂBM¤fÈ…Ø>^45ú¢Ú¡ò.H§<„]÷Eµ~«3º ]Î¨Qv	ÿë@~¤3ÂCçƒ-iŠ@Æy«%ôÑÿQJèÆCD€öN9…¤N3ºÏËèûÑÌMÙèv®š2ð,ñÚAiû~š¨ùîlÖšùëƒRíwg³«3ógg1ógöü D@Š$¶œF
w "Ï5æaç)[à”4*ñÔ¨OA¦ƒ@³}fþïÃr¹ï…,ðÚ!©©§°3ÛBÒ É^$Ù³@ÒÂ‰x@(Š« ·Q')B’p‹( 
+£%Wi‹Adsž9i-"QëLŒ›½’Œý²™i
‘”w	@ºÄSØYRä‚[vu!E²³„É.RDZB(1Œ	 ­CÞRÄÂnÓ ì9!-°a£ADµ‘P3á8ƒX`Ç<‡@Ê€Lû )ì½	Rei×FÍÝUËÚ€"õÁ¨¶¹?»º€"ÙYŠ|¸€‰«°³<ò.Æ3²ÈZÆ¬@î£µAjcáWæˆf†É8Œ Ž5'A|ûÌýWä«¦BŠ(îºá¨9+Û‡VtnôáêôGÎ¢?º»;?iJ€äÚ94àoèc®4qûity4Þ9I(I ó>Ú6Dl5Ý÷ÖÚêwu×Ô…µÊÂ.EÇ¼?Û”#äÝ]EçgFww×Ewwg¢„ó(¾</} ®$„
fÔ^#_šŠj‚¤†	:¸†ž:	…CŒîóÉþAFÊ6e[«.íÚÁ¨)1í®ç	0ººpþwg	ç7¾€˜ÄÊ3ã%–ÔàP˜¹ !Ë @L„9¤Hz$\ÜŒSO˜4Rï£ñÔ5¦2ª,ìPt‰§ïÆ-] ŠÆWEãs@ÑàêkE,FR çœ¡"°"•³€ˆ¬4T1o­ñ°ã,Ic‰¶X v½Ífý¹j0&öÁ¯’š3ñZ%v}Hªmâ\{p%öàã,j §4·^z)±u0O±àR+ËEÂVO€âNqA©’Z­ŒíöYÔÞªÙÇñ¨²´ë£æDµÁÇŒÎÏ¯Œ>žŒ†ê7h±B
I€¡D„:h7”KÇŒðÞ¸xeVçY|±‰À£àœz E”(¶/0ö*šlÐÔ%ÚÅ]Ò_‚|JŽpM“ZX!- Ÿ…a¿6D
M:$]Àª†¨&:b¡ÐF*`iÀ$E G b•÷IHÃGœÇy@¬@‘”3
`÷YÕ~T&eƒ"ÛÁ/JG¼öøä¢H]‘mØZ×.JWg]žÅº6¼@<H°HÄÐ!Œ8 ½R0ìž@š4ä
B¹g€;Œ©¡²†®¬…Ôx¿ï:íj ÂÃÆ©º¼k¤¦¼²‡mDÈú€TÛóhxu!‡g‰9¼D¸«½ÀL1ì7B”S…´Òhb–	Gˆ‰‚Æ:ˆ,aÖ!®âÂŠ}7×~ŒûÍ	mU¥] ŒÈ%^¶ÁF. C^]°‘áY‚/pgÍ@	¼æÊhdÂœ®GA<“>Æaó"
hT.€à" æXH`½£Z{ ö½:[°™&™Ñç	Da¶wÕjQý lÃ«»«6<Ë]µ‘¾ÀåYá ¤7ˆJÌá1‚È)OYø{J\Œ­…¤(Èi@ÅÇDÀ> úi<½w·QÏóÕønø¿þŸAC ”Zîu”À[L	m0%”Î”Fº¨º %jë‘FúÚ j¤ÏP—ˆœí­¶PAÂ¸”Þi =$†@çÃPPjA/ÀCo1ÔÜ‡}ô”Ù«GúÉMTc¦¶ÊÂ.E—xkmÔFÎ¾€Ð6ººÈÙ£³DÎ]B¥MÁÍ2â¼pâ ¿C‚K¯AicIÁ$BÞH¬P–¯÷YÙ¾žÏ{õ±ª¬+¢Æ„¶Q«Ê¾€Ð6º:Uöè,ªìÑn®QN2Ú d”ÈÎ1!´åÌ!àw„{oq pH‚Ü†° ÌOÁ}‘!z§ù]S¤¨²´+£ÆTÙ£öæÚ%XÑÕÝ\åæÚèv5íFbXÔÅ0ý4*Š´õJ@N¬	_Sà¸p¡µqØþÙFïÆóYßMGŸ¬ÓnÐT ‘Äb/OG¼¼†¶ü ¨«?j-mõõGõáéê,m£³XÚFùnÖ"(Ö‘1zOPØ\^;¡6ŒrTéQ£„Rbe0BÁÀ©ä¾ð?§%¼ÏúãæÔÛ‡½vlÚrI‚t›àr\Þ^µ½8åWw×64éð4¾ {²Ën„ôQ‰¨À–âkŒc…­3˜H`+¡w’^i£a@2ˆÌtúyš=4‚¤ª¬K`Ñ%^c·<é:¥ñÕñ¤ñYxÒäq"	ö–:„2“06Zá ¯ïÔ0®‘JRŒ!WN8ëÓ€‘ø&ä=@ôË|ôAé¦mÕ¥]95¦Sš´Q"/ Sš\]”ÈÉY¢DN.`is Ã¹DpcŽz˜£\ŠiŒ…8‡ÞI£Õ	N!t1áß«Súe<Èò¦Lm•…];5eôŸ´¶¶K@ÑÕÙÚ&g±µM.Ép@|$1
PýüB( Âl HÚ†b†[Ž á,:FrbCÊ·{¡h:›ßÎ›‹ }°ÀK@Ò)o°Õ½Z;i£!Õ‡¤Ú.‘“«‹†49K4¤ÉìýWÿ¸@Œ6¶g”X¦„Òå°´ÈQ³¥t <NX„Ãï¼tPC¡â~_Œ¶5yñÕTýž¾hž”|å8E¶“ ¹ŽS8]¥T¬œªêB•¬­U*þúÐ*4ê€5½€	xj1Ñ#’	Æ˜0Â!Í9‘€í-ã’Ç=CÈÄû·ˆcO€1)„Ùç¯ôñ°Éx’Š».]â’iku«ÏŸjG˜^Ñmz›Ût~›£Ö;e€ÑD:£þsÁTØ[„Ú(åI áNkHœ"Ð*Ã´GÌX®<Û§êþÇ<oðÛêÒ®ŒšSuOç-_¿4_ÍÏFù‚IZÂ·ÄEÂ#!5Ð)êâ»Ù;M"ŠÐ!Ähˆ$‘0¨áFAÈ·Ï}2õÕ )€êÒ.FõŸDªFyIò`”_] Éü,q$óÄ‘”Ì &”BJ‚Pf ÖJZî5CCÈ6APÃ@,¬·˜âà åßFƒñGÕÔ½’ÊÂ>/(ªowËÛø‘—€¢«‹™Ÿ%~d~ £ˆæ@l¼òNK½÷F*¨þöÞ­¹qãl½×¯`åj\Ÿ©éó!µöªšoìdy-ÛñÎ8‰kß¸ú8b†"‚œƒïöÛÿk¿ˆ	d)‰ã©»4Ïóžß”Yë˜õ–XGwœS!,1.rM¢ÂÔZ×h3Jèz4í[ï²©¿ú‘ÅK À¬FÅÅ'	(þs—›µ>¢ Hˆ&0ó: @•vAPétT* A•3Ô·`¤ŽÔ!Í”ÀÎ7YÞŒmŸFì=ËŽÚ´DêËˆ]üçŽÎ Gÿ¹88úÏIàè‰#’ƒ²f‘Î1-°”KÇ‘Qˆ8DÇaƒTdœé£¡X`,4W8€âÆUµ0³=JG;W»l0êÏˆ]¼$œCY»¸ä‘â$É#ÅÊÙ"c y(
, ®uÊñ—L „9¢„JY‰Â(8%­R…77uDz÷	¾¬¾ hÇZç ¢ü^Hýe±/ål;Q÷,¶ââÊÙ')g[œ¡Qd
‹h^ Ã8(FxêŒÃÆ0© Å†K•þŠ-1A˜gÒo›(øþ2Gv¯vá`ÔŸTôÒ(òRÑÅ5Š,NÒ(r~†”ZB¬0˜’(©WšYb=’$,¬ÕB!á5CNPÃ,78ÊSÐ¶M)¸ÈiÜ¤¢ýjnG}ÕÓÞµÖ…QoRÑü%öRÑüâÒiç'I§Ÿ¡†¶Ø€„P;åyK<µ2€f,Lúè!í„ˆ0yÉ±”7Q/Þ/úB¢]‹]8õæÖŸ¿ÔÐ>ƒL4¿¸Úó“ÔÐžßœ¡ÌaÛÒç$”³"DˆÖÁ²>à ¨#sŠ(|[JHJd„Zß”¸öëéËP´c©sÀP~3ÈºjF5ë*Ý¼ÀÐ$¢›‹ƒ¡›“ÀÐ*hƒ¤¢Ä©E-wÚÓ ´s\DŒƒ (ŠSOH?öžÙ`÷§Vm^(MU³â“™ôt½s±K‡¢Þ$¢—úÙçˆ.®~öü$õ³çgpä‰BH	@£¢A[@ä•AL[tDRãQ6àT—	HJ1áSS\Ñ¯‹Ù‡þLÖ»W;ñsô¥¿8òÏFçÈŸŸÄ‘??ƒ#?J…ö(J'±D8LæÄ0èC	<D¬<âÂÑT0;*¢RðùhL£¥¨˜NÞ÷'íXìÒ¡¨7¹èÅ•(º8Wþü$®üÅrÑˆ¤!®GÑÂ´ä4DæUÍ(‚tŒÌDê„rX `äÁJëÆ,ý|˜Ánõâ¸o½Ë¤þ@/iÝ©sÄõââ2Ò'ÉH[œAQ£Ôbä)Iu°‘öRÆ	Ê
	_’¤Ì³²@?‘˜a*œöJia£õ®)¶è3ß—mÇRç€¡Cš?v5]/^T´3˜®§¢-N¢¢}<ƒ3è"eœ©à™  AHñÀ|m"xƒƒ–‚yŠ°¶ÈiD,¥<ø™ƒA7FýA_Ú®µžu*úøâÊ?}¼8WþÇ“¸ò?ž¡r‘ÖÀGXÃˆh„CÂ"bµ/¯µ%ð_fâ–a!¼&:‚N'8\‹&yèŸ£0OÒ[eì½ž’Z4TCª§ÊØ_êuWÑ:WÆþxqõ‹>ž¤~Ñç³D\Ä´ˆÄ¡d!B,¨lVX¥"èpQGÍ¨ž#Æ±A‰R¥¤PÈ‹HúN[_²Ñ®µ.ˆú“>¿ÄA6ú|qñEŸO_ôÇÍïo>Cˆ‰ŒÅ¿ÀÈ#‰áÔ3nA(Â‚IÊ%ÑË‰£ ¡i8QB:À!RUcaÇÛ»qytooF“þÄ¤ì…/¥«5!kýg)ÉF©òÜ¼ UW Ò¤+P•iXUÞÔ‰àê×®°,˜¨˜”JSä< Ñ"±‹Öy¥ÀØ3°ˆ‚c­°0:RÍŒ“®1ifü(}gfÜ3^å¯|À:¤£ˆìX¿þë°:VgÉªÜø¬_ÿuÀ:C	§¸«HTÞˆ€,“ ìqREZø•„,ª­DÅ”Ð¦°7ÈE›„«ÿg1îË·c©ËÆ£þ|q¼ï?ƒš÷ÇÅïÿãÈÅûçÆŽ;;âÐ5ºN¢rOXË¼Z	Øã…2>2¤¬'P[¢= ‘z¦tˆ, Ä!Ù€¨dHÈ`±Õ(ô×E(ŠÑä=Ü“)@¾§xPãy1€¤Oo¾|_,<¦œù2]Ì¿ÌÃl6šOg_¾˜‰/ágQNx=ìß @lQ€ò7ŸRŸ¶¢õÕ¯®þí`_fóÁ4æ7f>H'!½æô:à²f—ò_&ÓO“ëÁ_¦³«ðÙ€6
S«[™ß„Çg+O?©Ý@ºLúñòºW°t¹ä núqå¯Ëe–x¼Ö¨¸Z¿½£`÷Í|~Wüùõë÷£ùÍÂ^»éíëÛÑ‡0Œ&•Ï{½rÈ·b|ê«E°Xm œ~„µØŽñ“š–Œ%ebUîÄ’3œ#z–÷5¬¾¢!ë€ô´¤ÿ.|ãéÝ-Œ|ýët:.öá½Iw(Øñ®˜¿å¹E}’Úµ‡ýòNva~Äõ…Àé·uø	%öƒ/½V|¤Úfði‰tÔ¥Òr¤Òwà‚ä€³tYçœ*U3`QÐZƒ× 9é±jÀÞŸ·a6€ŒA¥43 §÷ÁÎÌƒ€7Áßf£P4cêo~yóöÿ^ýX­ðæ~…ôCXá›òÒëŸøyÊ¿”Ð:Y^ýjýê×ƒû5ÄK8Ùó¤ó–ÓŠéøcâ y¸- g¯ŠÑ- ¶™„é¢X>JøÏ¢üŒ‹ocÀöù°€Ì`˜¿(‘º|õ¸Öê¼0z&ÍxQJºpîn‹
ì_-Æp‘ò—WË_^ÞÅÔÌ˜ŽÕlôyhýQ­	ÛôoAŸŽCñ˜ãÿþû·ƒwÿüîÛ«wîf1«‡k†™†ùAùãoÊÃ±)×¸¼[Ì—Ë®Ãõ·W³0Á·–vž œT¿pZ" ¤ðwæ¦“ÊžÞ‚…óúÍl¼b
HéÆüÃ{pÀ(¹P«\ÌÂÿ-ÓØ»˜_M¦óåý
`A»pl®£´iq1q•)c4Oœ³|Ï>½^x˜›.t>?, ÷5°ÓùM¹ûãê&üt‘ûn’oúä–·œØÐMÓ’0	(v(¤Quß vóÁ'àžÁ{çŽÇp@pŸ>}ºž„9œù4öu…¯w«.õ’­Rrµ]uA‚	±ÐŒa¯f|aE¢l®EZxXBÔ°§ëj9´ößï¾;œÓÞ•ààûÉÇÑl:)©íÇGì9ž:³ñÔ‡ÒæTPÕšØÒ}ìbµîØ±Ú«´-”|ÓÛª#[-|]L¯iÎÀ°6r“}ïçÎ qG³»óº°#=`V½ÿSúÚaŸwÜAmBó@¸Ñâû”–ÍØ¥÷±¦4”·úê¯ùÛßýû›ŸW»”U˜v›Æ‹œ1¯þúãÿýöwr²–|ŽÛ'r×øÙ|ì_ýõçüþ¿Þ¼û_{vë³šž½z¨ú’òà üž2mŽ(ç	Š	N:¯eò F•g 9þà(Ó‚r#R’fa42Ü`‘‘9ïEÎ{‘óž€œ'êYkRs¾UÎSZ3BEMÎ°eërhj
Û†ÄSÁÚ‹¤÷´%=ÁŽ$é½úæ•`v4ßÃÇ«"ßÆ”‹–ýúÝ¹Ù/sßÖ%».sV¤Á¬Ù÷"Y«ÁòÛ5ï6OfL;HüÛzâú“Äwr90be=b^‰‘£œDtˆØ¡`SÅ@.q”8`d0ÆÁ³ˆ­°È
g8ÁÚ4õI~‘_äÀg.^•¥° ÏXJØüðó¯ßÿõû¿ŠÅÝÌ¾8i±žÓ×(-ÊÁë% ¤BTãµ<…8ËˆµªðïEZìÃÝ…Uû«jÿû•;š¼(ØïOKþ;Ê^¼H€_‘üÞÍÙK®EgáÏ;„²T#™·‡ ­¶Šë@CÒ 4ž›ÀU °€Ñ)Ý=E¾9Î„?ÀÍ0~3ÌÄàç’WßÞO›ìøÒ.TrÝRœ«[_'H®BMö¬µ”	At¨$Ž$—¤‰ïÞüôcIÕédpÆVqˆ?ÌALO?)X§K®Ò´OIª‚;Šaè¾8øc…ÒRÖ¤Èž¿€ã¥d—V. Òµ‹«$]&Art7~Œ”)ŽJþå‰ºNGyº€s2/E€îWÞ6‘«¥ùáG˜SÚÀý@þtú…Ð0|5¢QbœAüp“Ãò·ôöÌx0í“n´_îÃmDº}¹#¸‰]tÔ€,Í‹åx¸Z-šø>ãKwï%–˜}¹›—wŠ¯w­Yúêo¿|ÿó»w?þŽá¿û|bïá86(ÍE{†Nm
Í=žûq&wóÅ8k>ßŽIH2‡½þý`;Qð5Ý·SÛ¦ñ½>Çí³vºf‰N××„îŸV‡‡Ó;À¼û­Îš‘3²ÏÛ{¸s‡ïóÐþ±oél¡ìþ‰`æ¯ßo	ÈI/ƒóÎêáÝ"ÙåöídPÎbŠ-ÃØ:©£7,D½´QR®¬5FK®½A¨ˆ‰ÕDai´ŠixS*Ç‹l÷$e;…6d;Ì¶Ëv±Zi4G«é¾cœQ ¥.ãä[t.FºëhÔé]ºH¶Îû=Št·Ç‚ÑYº{–œÙ-Ï@±KÞË3Â¬Š}¹†›šü—ë]]
‚íŒ6yƒEÃÌ	2RÛñ5a±óì$309ÇµC‚<`2’¹³7äÉüÝ~,s§<ˆŽmÇ×DÍ¬Ùd_êbDÏ£ØçÓaœNº7> ÁËâ-MŒ6FÏCô‚rÉ™3 wzÊ˜AZ h½( '˜2òHRÌ¡JEMTT7™ß
BÁ,%–Áµ£I1¦¦»_vI ó{´iî †ƒœY9÷J¡–
³Aì—Á¿Ì¬0Ÿ†¥hxu?v6øÿþßÅSü1øîQðŒÜàÕŸÒ¥þ4¸pÁŸªE’D5øe:7ß€8:|\HÒju¸ÚUyƒ÷wòÉƒ»…MÃávÊ;JŸé°’ ƒ?þ/¤æRFJ÷˜œŽq
f_®æ_à‚ µ~[y%ï}Žƒ8›Þþ:‚\}}uõ¯XåÓtö¡tòNé.¾}x¨ùlT%/:âÝb·fÍ¸”Ì‹)ˆ™wÓ9éHŠ_®‚´Vºïf£él4%÷ìÿ1ÛLæ÷ëÌ‚™x	{_ªŸ¦‹±¤58ëópõ§äuHž^XþO ¦ÃM–y”¥¯Öƒò>Ï“gø~¦wcó¥º)¸òûQ*`1O+ÊÙWËÙc3‘z¤ÞêÞÊ_¸$Š” r¤]ª¼à)¿rä’Güã¨•)åá¸‚Ý3gá›2¹$ã*2Ìça–>Ò¢z™#3cv;T9–aÞ§¼¼™—3
ø(¯’Ðþí þVmOÇtÂ‡ÇÃ:žN?À›¼¹›Á­ù :HH²Ñ¤Z$yå«­L/ð*ŸÕÓ\²!Ìéæ§‹÷7ƒÑ|à§°Jr­ÇiRŽàö¾Üb6+…ÿ÷p>~MwnGÃY:U°šOIÇã¢J;]>oQm@y„Í †0¾øO>¿)ï{\n¨p ‹¿)w¶póÅl%¹_;*}÷e,<õtQLBïéO?™{Ï|·ežìý¯¯ÒˆpJA¥ûr=øW:èå~<ÞÂã—üíŸ`;Aãº?ÝðtåÃÁ-FÅ¼|¤ÉhÇ5ŒÞßÌÓû/’¿v¤¸›–
l›C^|³ª€š+Ìb>‚^õh–‚?ài¾À–4O7MÀ: ¡ÿ¼¹»;Á4¢zÖêÓ,†¤›M*˜yÔ(¿p˜ýöËlª±«ÿv ïûSÓ¿ÿ:Kç&-ûÃ/o®în¦“ ‡ø¸*iŠ5HDSòL™i»3Î@ÒzáÝàk Œ]O«ÅJr¢Ö¢RáGšªýJé’‡%©yËÔÚ¿ýåÇ*(ÀÙ
H0 øú·ì´ZÚMÝúÌ‡ê¤cÚ2Î R°^=ÞÐ]r«Ô±uå´Ú«?§¯áÿ2f—ü¶:ÐæŒ¹?äœä,vŠ­«#?æü’;ð¡ù#s¬ÍÝt²Î†>ûòïsŽ²æ¾"{›;p–;°È¸ÈÝv—=0÷ý¸›ì¹ä¦¹gÙÏÝJWä¢[äÌý"]îésß¢Ï}‹!{à8w`îwrßvÈ}‡!+Cî+Œ&wÉ˜Ë1@`ÊùïÜ¹[s¡*.²Gæò÷¹‡ü½Ï˜»‘ïsÏîûÜOû&÷anÌ§Ü‘¹/ñ&÷ÕÜdcßMîçp“û…ÝäRü(w'G¹Çb”‹}£\éb”+ÿrßá(ûv›7Wþ;÷è~È¤?dKÒrÁïC.¤}ÈÝò¹ ð!÷³ù°ÎóÇæ
A²ßO.`|ø”}í\ŒçqîÉ‡\ ç~ãÜÃ6Î…ýqîG6Î}‰·¹s›+ñÞæ>õmî—s;ÞæîÐm.°ÝæÛmîžOrÏä$÷LN|îMNr_ã$…&¹;>ÉÝñI.VMŠì%sù$X¦.w`.¦Msßá¹fÛeÊÁ¹ |—ûÒïrÏúrÅ«ÿ,rau–»¡³Ü=šå£YîÓÌrw¼0¹pYä¸"Û:QäÊ•E¶R]äâK‘ýÜ7¹ßE‘ËEöÓäµâ6Ó‹Û\±Èæ²"›£Šì%³ÏÐræ¢z‘ý0¹ Tä~¶E.M¹ß÷<÷{˜çÞyîáç¾ëyî»ÎV"æ¹¯pžû
çÙžKàó/¹/{‘ûj²)ìc.ð~Ì•‘?æ¾ÃÓÜ-ÿ”iŸ²-©Ÿrïòs.;|1w¹#s¯ýGîsÿ±V’1k·ÿ˜¥‘K¯}Þà`>îÿ ÒÈqŠ#Èyü(ÃH†¦h;ï·s¥Áó›Ýž¬÷eÐðÑ'Û—K¶ÿÛUÎO×Ï-¿ÎÞÐâô8÷‘	Å0E4Tå=Ö^_¥\cj‹é8Ìw¬Üü~üu[·Ì–ýÖ/^»ÒÿH7ù?_‡¹{]®ú:¹à¯ýkËK]§¿þ×å «A—ØBw[®yËúþÚ¶TB4 Ãmd‘hÎM Á;eÒpæ‹Ôhj°Ži£‘êÀÑ l›JT¿Ž§³ÁOfÏš2ßOÞ ìˆ'Íçãðö§wƒÑd&¾L-±)´äÖñ^ãt~7ƒß}›²Q‚LaÞmY}Å•×º}¸ÖU(¯•µR€ßà>À/½ëÁp	’SÓ2:k¹©ÓXþ¾JNIåTl¸º3³(3~™©âÿÊøÁehÜ+Rq“jöÍ ½Æã‡•û•®´?<Hl„áí5÷±âÕZÓ1Bñj*2cTÊ½ýUÒIÂ¡’V‰È?ýðëSi©R{ÂÃSŽ9j›rœna7l…æ¥òŽ³—ÙrÕµ¬ÔÍC9ÁÝ»ùMjà‘‘\¼:2ïn(Ï!¿ifãžø-?{³#ÃÉ…“žZ`7Œv”8
ˆ„3DF­ñÖäŒ4 ŽXnœ@Tâ¦ÜÍ†» †S‡ðv†Š×Žj]c8„Ú3\~:æ³æ8Ü6ñò·7í²Ç=•¤Ë“”‘Zc©SÚ]ð †ÃÇÉóæîß~£}nŠ»&ä±ÞõíÔ/Æá÷ô	Òkô_L¢ÿžBHšOƒBJ9…i”Æ8Š©H½¢!F•¡‡È¨}T:¥2`&´µœ Ã„h*aðÝ›_ï¾û?»ZO†ÁOÓ?Fã±,G eÓ¶/ÓE¢ÁO³QJcº»/‹Ü§æçBQ|{Uq_E[‹;Ÿ’ž=­6i+æÓY•ž´V^ÈÃLÕ5¿\_]ýôËñ5NmÖª|øô§ïÿè§½zg¯ïaùzþy~lŠóÓ÷sóþîÃhWÍ­4!eÉ€ÇÆi*µ?æh+ÅQøÖëÇÓx…â(ç©	ÍŠ«6dXÆáÎsØ"éc×›8)1ÞÝ9ÁR´näØfwîµÉlIœÕííâ¹¶(³õ:·'¯î¯õçûï$×û‹¶ZðÏwÓÛ?÷³jq¿jÑ×m®,Øö6»Ëÿ6Í0™1€ãŽ›LãvXX·Í¸>\ÌGãbwbö®æ7ÿ.vNfee‹æéÅ8²ïûýŽfG íaÚ7à„K¢oCF8[ˆ@˜RÎDàrå¹ As§ÒXiS"ì¶ŒÉœ¶ÀÙ@ßÿ»zÒªgêRhibò­ƒ/‡!e.CrŒé:AÂ&•ÝFWŠò I÷ê€ëÇå…(ÏO” ß3Ú‰)—o±_Æ<ã[yÇºÀÝd£ŠEž»	_Ë‡} ¸=N{$$¢äEÀÔHAÇPA9*#È®kj­aØ`.œ£Ü¦´¥Ž:„IS³¬§Ÿ†ãÔbwðÝÏï^½ûþí7¥ÑJkÖ›_~ØÑavb½œÚƒÌŒn“†R¤Òj£ø%­žrìßÏÌím™Á>¼½NÖ®Æ«wðþ›Hö¹Ù²¶ÿ,,SÓSÕþÝ×ñ÷!&[žÜŒÞß„ÙUµÜîRª*­™‡«¦âÓÁ«„Â%„M\øfY	"5^½Ÿ\•]]æÇ7ÒMÆ©&¾±üéuÚÅ&Œ–œ(³UW”¤„j$·gªc¥”\¯ŠËáÓ’«Z—
Ñ^ž¤¶÷p^‡ÕI}b2»•ÄÝxèƒáÛÂ‡›Ø…¦M Ò¸XŽƒªÝ¢#›ÖíÉEåÌ6u^J»äòSU¸mž¹Ï•[wv¥Yö`­#ªg3Ý&æú£¡@"	˜!e¹•‚r¨Kì‘Ó^k)×!(O,(ƒŠ§ªNÈ‚€_(ð	S ¬Q R”n§@¡_ï ÈP¨\¥@šK{
|í`ŽA‚]	îñ`u&Á}XÝÙðT…@w±ãq*p6²åStq…Ûé¤{=òXÚ·dO€Pì=³È[XjªB¼T„&CÚ±g!RÁ•&AJÃ•ÃôËËÖØmùÍ ì„6»ïŒ6ŸÎvÄr¤‡/Ùr2øñÍ…¿Ù˜]šÉÞ&:zû_ÿUV.+Ä=Ô¨û÷Ô¦úbvTL'¥_ë‹qîÈh>/—OÕäüâý@X.»rãé¤ª‡¶(RÁ²ÅÊX’!°à—ÉÜ|¾§ÐÑJ; ÎYðWí®:Ë¥È7-ë¯…Ùl:+®ÕC–}ÛiâïéÝÍ¨˜—ŸµOÁ#E9©ŠH©ª§Z}€ø©È"lPºßª§ÛÃ£>ÜSêw5é ›É¼ü]å&Âóýe1KŸ.üíý­Ô8@ø8ÁWåe«p–ª!<b@:IŒ¨dÆÁ|(¾MõþJ±¥ Yd4/ý©¥L,KN'ï‡³ÅdRU^,Ž42É!EÚ\xüTÚp‘ÞöhYw¬€7s•JPz_ìÀM³gÇ—?ŠÿŒGó°Ó>*±âJèUû(üñ†0P©(ª×ˆ Ž¯Uˆ“jŒLz_Ãê[â¶’Ç/©`§|7½5£Éá2ÈwI¦œÞ•ÂÇ¯ÓéøˆÚwõFj~x…8ÆÛ*àiÿw·Hk€áæåò:¯5.Û]ž82–Ñý‹böº¦©øí€hþ8¿ëf]e×êšuvtÀxLE&¨Ñ8"*| D	Ã.hê|ŒBKI0©QmÀsÃ-²ˆcms…àUÔ/‘ePÖ”ÎY‚äºüË¯¿Ü^_f~÷:!Ùöõ€FBêqómª¯šú~i^ÝƒkRÜSjâŒ²PèjëÚÑän1/I2ÍµÓé¸½eÔÑx>M®nG‰ì é#"n£ ÄHRKã{b†e d¹â*¡&MXl<ZV\…ÁÀ=þ¸}+`÷®¿˜ÙõlÑØ®BsEZ-š~„8ÛîÓ
ËZÏzŠRJÀj¿
Š„¦ro32¸»ay[¦ $ÿíÁ¿õf%˜èuYÔô#Z\ëÏ{(Þ3àÜ–	+ñS;³ºVÇ•§ý0ŸîÌR\V…á{B¶b×v¤†Åú\+Ç>ÜjMÐŒÓkÐ)rÚ~¥±pÈRùož1ønþ%oàÜÖoá€àÒÄnÅM~4i¿á§UGŒ=}Êîeg[ÔÇï3o¿wî÷"£9×ã¸W}ûöwº÷FV'dÞûûÉb>®ZÏîëB·22‰B¿þøîwú;Ë
áí5¹eI¶Mî’î5þ˜ñÊW¶¸Í9dŸfîèã­÷¾zûÛooþû‡ßñõ¾†rÛ']ëÓÊùí78lûÞì¼LÆÝÿ$)–+ã°?ËÞÿþšÐµtõVsqK
[Ï½Ý”æKa|ç¯ß'ñ _q?×v€ÀO	¥H+†¨gL‚€Ò>uØ8…‘Ç ÒcŽÒs­ƒ³ž)d™&<
Š0ñEàÿ
~¹!ðS¹]àGŒUøÓ‰ZG”‹ýÆžº Ü®AÝ‹ÈŸÏtÛà‘¿9ê ‘?·ÓÛºìßfV¥´™ñ¨ô™svjAæ6Ôåýì¼´ù<sÂªÌÝaÊŠ˜ÞÀ®Ùykò{®ïrEDm?cE€>`.ÈÑ­g¯ŠÓY“¥êÌç|”›ÛŽoýâŽÐƒo‹ä½ÑgñÉàÃJöêÜ›ï AÜH‘‚°£APf(ö„Æ 1é¤dT ëX@ÜP§1HDJ¹5M…tÞUTå\”{Ø$sÿc^‰¢ÅÊŒäÒ,Ã¸ÊWtÂ)Â©Þî†$ZÔZUIŒÐŠ`
‚n–Tz¿#k²Z~ÆY¥Ó‡fU—!¡!Ú¶©Z}¤´Eš¤Mî’Qö‹=KŒº³q®h»5ç-_M—zõÝÿ°¸«1#8åó?ÿù§ïøÞ±ïæIïýóŸßþý-Ýi%+G0Úõ24²?¼ý¾kÆ	z(Ë€[¶MUÎE‰5‚i…„Òm¬–ÑË-’IGHT,Dlq@†x3¡ÉFòÛõßfï¿a<€§Ì“íîÍ»óá×§¾*Ñ`øv<Já;ßv7éóû¦¾äÑ#I>W¸Ò¼*Ad=x•¡ÇÖõµ©õº'‘ Øw½ßiNöö,ÏÌ°|ýÃêÅŸ¶šØ™8¶<öá¹q”·-¿RÞÆîPÓíßåŽåòÒ8Z/»f?KœIßÙ	[á2??¡;`‚ëEt,ýŸäNÀLpÞ¦ƒÓ†sG‰ä¦~¢RƒsZÀRÚ6õ™~Ž€Ië€‰ÔvS¬ä‚©`rEð`J¢÷^lAŽ§:S¸ÿq ³µ¼{4ÈÜôß2{´!‚þ tèSìçéåNƒT å^n­$€šy´2,½ÔØ2Îû(­U0£ÌyÇbSÍ†u,ôq­K0éJ·,{	pªråO.Cëp*¤"«5ˆÐœfÂi¹g”BW£—Ÿ¬øÉ˜ê‚¥Õæ÷}Õ¢½‹¢ðùß»ÍF©ùïÞe·q<X'>¼æ8ZN$€ïÜ›Ïð¤+MŽô§™‰Nx8((A4Ö1Õëñ‘xn“$Í(ÖC5
 dj	
HÁä‰ÌÏëu®èXÉ&Ö‹þ°þÄtw´¿ É™µN•=	Ú÷)E?´?•îpØ÷SWÉž\Ó‡ZNíÊF€f©ÐÈ¥¸29M¤S Èƒ˜¯U
ÉK„P*o„µ0 öK#@Øöï~êj™¯Þ…¢|àÇâä—eIE»¹¼V´[#¾ß™®ç#j¢ôª)YƒÎÄö£û»Ÿ†å[¶+ô´"µ‡>¼ˆ· íÅøw?í†Ÿ­ŸbóbylËE{2 ç	Ã)d1ò9aÙËa¯þñ¾û­Ù;>2çKâ±Y"”2˜‰¨Ž^ùà3,Ò€ŽRŽ=C–¤º;Ñ¦Èh©­Ó2F£<oŠÃxfØ\oØ¼½¡S©ô6SFä6+µ·BÍL=“uÿè,.÷Jœ]Ð¹G[uK)vˆÛŽ î§Xç¥<£YÐ;c¹ƒÞŽÃN€tHqsì8÷4Æ¤B
å•òÄEŠs„ó€3ž6õ,XCäl*Mx~iö”
Ó¥Ì•·±R5LÇšÔB7HŽ5eypÎ'uŸÞ’Ò; #ÕÐsÌ(-¸É<éGó@êd¾wÑÓ›Pz&Ç|+yiS:§]åPkzgÜGÌhCƒ‰YFX³ 	^ÓˆŒUV;¦•ó‚bï…t)c
û€Ñ~cúsÇý†æhJ±Ü—¸†û{C®pÿ«·¡÷üm€œ ù{ëŸ%ò·³˜Ÿ™ ìºÊüâZÝïmi¿Á\sç£pBâÀ¢×X¸/“Ároƒ6F"o,¦ÊaŒhÖ;ÄPSuÇ·©taïr£Üt<p•t¯gßÌ³B¼’€Ð<aôcNZ1²½¬¾àŒ«Zm?†±$«y5ð"P†=veX¾ê!}FõúSôXËöqÙp»Ñië¸cµ<Á¾íªýÕÓ¶»éíjIÃ­m©ZÝáET#úìì¹
©ôEùJAgb@„Q¯¶ ß!®}Œžk™£A)ŠB Â DiCPBPo‘Æ#&©ÇMÑ”_71ÐMbØ^úO®QMø§ŒjNV‰2¦–A|mˆá¹Xóû§PÉ.„öJþ¨¡_‹þ19âØ¥)–,pìì~q$/ÁãÞwÍ¾?€<BÄ‘ÔÞÀŸq"±óœG%±—Öë(¢C’‡’F¬5‘"Ë0iŠÈy[>ÏÀ›¹©2ðïÉ¯±‰Jùû{œvÀj ‘l°ûÌj÷˜R]ÂÑ
È”´ŸÇÕF¬Ab‹þ‡ç¦‚‡ä{q!tÀR}:¨ƒbüÞäÎðp±36pm¤ÆC¤Bš)Á4Q†XÄ1ã˜s­½†yE‡‘1`¢yp^F$y6¬ï+Æå Ä£ù+¶Ú¡ÏŠä´Ö¢VAc„Ê2˜A(Ò8ÃpüpHÎgV8½Ý¸w¡‘vƒ‰Óq[)¯×0íË'Æ«f®4!,µš¢{éÓ“ö¿bF8cÝ&´ó•|°ëvíý'!kàêKÞªàÝO`w?Ô÷Ú-±ŒTHyê6§£‹ÚQ¤s<Ò”´
\àµU
sVh\5æþÕl™meibËuóûalùÕûYÁ—2SÏ—=Z\^øòrù2Ó°Ôh1{aÐí
7yr]S1+¨Ø
ä½uÚ#GA ¨Ke²)†UWÍ×Œ"”'Sw«`$iÌ>xûßU«¹é];ÔëÊª¸œfËjå®³3'ÏÕ31£dÝ4%$_Õ1¥à™”	[òâµîÁ5Ñ¾î‘ô8Þëæ ïÄ~gó!Ñÿ+½I¶ÖëM?J˜§wží>úñ×¶†ÂµKô‰Ý§Ð}„`Ü 4iÉS_Y•úÆrkR=‚ä5`žX((G”xç"¢.Õˆô(:¦iÌëýZÑ[äê=€Þx½¤dl­”ïCiÂ¶èýâZþzð»ws³ŒÝÛS»é9~âÀþó?ßÎg@ ×©by{º¥T. Æs*"d8åH ué9ÈåÎ[`&¤ Z3­¬7–hBtQz‰Q®ÿxßy¨:E©]tjLôó?‡oÿöó¯ÿÛƒ7¿ü°+§`T,²(;FÀÇr‰Ç½zìn4›Þ–¿›¤K™aæs¸bqµÒÙåzP®9^»­ûvIëwUÒPò	.&å\¸õ²¥Q	Óî Íæi‰Ÿÿ™.6ø05ð3@êÙý5–oºližº”ßßºÖUíóét<Í‹0Ž©…ö²GøhâÆßMiP¿tu¹ÔÚ;ÜÂÌáH´cIx~úi2ž]Ýû5ìÍëßþ2Kqd¯kÓTÞ>e[Æh=Û"ÕAÞÆ‰DáZÀ#bÍmÆ¨ÊŠÂ­ŽÊ°úB†ºu»UÒCuûLŠ»àFqüQËÒm}Øƒ¹£ƒÃ¬º•°@kÏ’9ÊLÇ¥{j"šçÈI£Âçù¾a—T³¢£r•CX* ž)šy¨1ÕX¶Ù²²g‚NŒáŠÈåW“ˆ0æB$Š¦2õ/,õÂR,Åê,¥ôvÍH ¡u–¢H¬ªnh+'lp·ëxžê¬®‰§tûrÔGæ©=JÛ!<Õ{pp›rÌud5ïhe;~{çf“wÞÂÉw!¨•*¦²Ö1A$`VÄÈˆ¢B¤"LXÅ¨¢–Ja¼Õ$®r^ïOàNWù…˜öÏ<oš¶`b=M[!„Ý
ÉK)j¬R5½GHæ”å@òÃy†eñþð¬mÕ¡cÀãÍô˜qü¸èÊåÁ7ÔŸcä+U%ñ÷%4BpI‡µR^g•ñä6†¢'ŽcÄÆÜ"¦CDZ	"œÅà9 ‰™Òô9"°Ú@`Þ„À¬ŽÀl½g6ƒù9yrÛAèÙø4Ž‡ÁªO€ÁýÅ[bð³“/%Ÿ©È@±a”èh¬b>¤n ˆ‚G0f–z®]àÈó@p°RsPÞ•DNyAÈØû‹I¯=d»ºG }añ·÷À­sEgÂ8_nŒ0¦kÁ·"+ô¶vjžS…»c¡¶D¨ƒ¾ö"Ž‚ÝÇ®|÷¾ŸI‘®t‘uŽÃŒ5bç=ìÏQ‚YÁNÍ*'Ð rÆ:Æ¬ÇXæ&ÄuÛˆ¬óÄh’D©ÑŠD«b*¥÷Â+å*À+”lð
_çÒÎ$ó+è‹Y„–‡ØdNÃ,G©¬÷œ™¥]¢ÄÓ£³8¼¥eÛô­•ÃÑR‹ÇŠ³ˆ,P4#Lq‚5R;K¥>b_&‰\DÏ¦MºÊ;s{7ƒ7‹ùÍt6ú£Ç_–U•’ø·=jøŸIO÷ePŒÊµnCên6*nËé¾ïÑÄà3çB‘ü¾3ü6øüjúéêÞâGÅÝØ|¹þa>X¡„Ï£¢ô@»Tõé¡â“™øOöÍtú¡Jk¬\Œ_`ø•Y{¦²HåN¾èIpå‹0_Ü,ðÂ‡t;p*æ³‘+¯<˜Ærôýý\Á¯§“ñøÙ~YœºwV7ÓOÕŸ`Â—Á‡	üÕÀÚ³„3÷^O7ø¾\¹’¤à—º5ïágî|þtÖ‚UšP¢)]¥Üô#ÅèöbµT‰Zƒy˜Z­T„«rÂ§Ìâ¾õÙSLéGU{êÃ9¶S•Yä¶%Ë	ø5‹¶­-óV=kùþ›ìÑ¥MfKþ`ÚkIœÈÂÇ­¼Çž+c¹æ„(n¥Œ¥lhð™ØT‡…Dá‚5²I'yáþ¸ç¾Áh{`UD®«l©Ê<Zã™Uë°†¤ÏÆyÓ?ƒà^›£0H‹v™-¤G?Í%:Rà<äAéÌ*‘D90
áÎqOXÎGÐQ¬uTZ$5Ô
G$B.ÆÀPÚF®%Ì9ßºdIâÎ<Ó–Y\ši«ÂIž-gŒx'ùZ–ÌÌIÝ[žŽóÉÚÝíY—#dË.ŽíåÖ÷imœ"ùk¯ØLÌâ"[*÷Î8Ùå°ò¶m¯ý*ÅÉSñ–räýÑ8œ@Ç Q3+‚pÈ!#]Â:L}&ÏƒâÆ{&hˆ.5”#ŽE¯âTÛ€C‡V_\©Ø ^†ƒcµÎ9îó­lðõû7úçƒ..ó£óAâósåƒVÎ‹§DŸº«øÁ	„Zöu"©m¢2”‹–`ÏAk0‘;&$N;Cƒ2•V±¨däŠRÖ˜Ž0x3¿	3ø×È¿óÁ»0ßÁæSeeúT.àkŠàÓÊžóÛà×étüa4ü ïväŠÁ«ßæß~¼€~¥Gœnö…%j+Q` ‘zŒlš¿–¦ 8Y–OÃêý«7ÿÄlôÝé¢þÜ‡ý]<áæÓ>„ÛúiîX/Wmh»nÂNya9	iØí^)?º»M£ØžQÇL‚À¼³Ðâ·Q:c¾WÄì±×&Å”GÜ8cPJGM°Á:R©5»(¬ÁÎ N€e"°Ì_b¾ªc¾Ð5úRñºvÀ	UT®`>'œåYÕëØ÷ÔìêÝFG@}Õ¡ÔÓ‘P?C9è„úO'b…r‡ß3CîðÓ$.g”§êJ‡z:Ó3QrÊ´eˆb¢ÜP%à_^	jIdœY"– c¤&Ô<J™sÖ¶·}Ê¶}º4ëQEµ0Ù]JÇ¯;4Öë‚ÐT²¬J®ËCrNÕà&¤¾ÙHB:T?_nßXÞÎ­¿úª!é“ÌYø¦¤Þ)wM!:Ü†Ô)àu÷ÈÛEn‹ëÛN½°w=yDë±ÎGBœÑ{/¸¦6pü$qÁK%e”Ú)´Â L¼ŒÑEE#
ÚKñégë7ãZ1¤D_×èKdEn§¯'ã¹õuRoŽN`½ª:Ï™ÀŽàya²½Læ¦·wÓb4Ýô0tÍ®Ùòe³–D¬£–GÂóN!Š`³Å2 Š-&Á[EˆWÎD  ŒIbeÄD)KL£õîíò™ßžl¦ûÞ_»d÷´³3Ø¦…Žmg0¢™^×¿( éjÐ+•yÕüÎÆ°|ÍÃê?ÇLÃÓ^¸„áî™‡»Ù…½M_ãþUst±î«Ÿ´ŠÔEe`4Âk®¦pÀ2£)€AðÑ	L£©0K‘³DkŽ#å2"Å£¥R¸TT
Ì,óÍî‘¯`õÀ>d–Õ+VXÂ«V 6/¼bžähK»”P=ÄîÑ„Øó¹G.1Wáñtàh863Cž'OuPÒhN£aÜ»-áX!¬= °ŒÎ+)fð["œä¬}ÎÂ
ÛäÙk&\¦ÙFmx…^Âj1«
‹U—F2«\jíÐœQò=ƒßáXx,ë`¼©½Šãàf¾+¢Õ5VÛh./•±ú¬9Gf½üúOSî";Z¢ñS]@qô96'b«Sè!8OgNPjƒ±^#«M@ŠX £€SÂ‘¡
Ô“Ú"	?u8JÂõ_mºštÂj–¸ÆW9!T;ùêëw4±ºä)Ÿš±úÔ&^k§&õB];¨k1+¦PÀy·,À@¹‰$ âá,:¡mpÜ3N‚%ˆ@ÙbÒK£h^IÃÖ–¸Èœjä«·åãnÍº$˜½¶­e}‘TK£ª-²,ø£Fï'Á§š7a|7(Á<TEA¦ÆªÍ+®¯ªËg&Ê_Â´²ÛRÅšéžÂítöåzðæaýi,»'ÁÆÞ/tUV!)ŸnFîâ.]9Å!ÊM¼™ùÁo÷CËãQ\¯^·œ¬tU ÆÌÌxX«(oö¾TyQ³˜Oá”ŒR/ƒ»ìaù{`všr!ÍJn´?Bd+SUÿzD³^U“É>‹ŒË­Vgúy•šÚöè‡³°Ò]X¸¼•Ý>êí ³gÉ¼€µNK÷ê!ÙÅ?øš_k}­Ñ®åù©1%ù¤tÏÀ¼Ñ0Û§^–ïf+­å‡xu'6á5œ}‰)'Ö#ÆTˆ>Oy¤\ËH#5ˆqÑQËÀ€Û(
§€0Àª¦Z/ÄöUÛ–\íÝg©5bcJò5bC<Ï*ºÝŸš—ª»Uô8ÔÖ%Ió¸Ô¶7”­;µõî™ê“ãr3nÉ.wÆ
ë=Y/ZuúÊÕéÎ„F[.’ˆF"§É…†Ãœ„ü-äH4Ø’”t‘TŒÐ…M-®v˜$ïI¿‰Çl3A^=lÄ14é=D3¶nƒÄ@«Éû„=ô"Í¡‡e¬ó¹´ŸsØÀ	Ñ!Ygõ%ÆÛäì´¸ÀªÙ±¼NÎÒç0:‹yód§0	î[ÑÙI)æê–ŠÑPÅ±C8F.‘æá"çŽ`ê1¶ž…`}ú“¡ÖYæ±ÆŠÃæ¸î§ñÔIFof4è @25$‘Œì•džŒ›ë¢T ™NQ'£™>Õ‘šiïÕújùÆ›Û2\ «2Ó5¾N54¤É£6Øs£¼'kcPFêH‘q#X V)ê¥„Ïš^¾+hZc¯…UTRïÖ{‘<#eƒ2#¹XçŠ àVƒ²±Èâ™j3J¬}n)/Ûýð`lL:Ô¯¬ne¶òðWKæj0–>y³ô,ïËEùT¶Co!¿+øZÆ¥vLÀ¢T’ï„ÂÜrJpŒHç¼ŠÚ9iœ„Y‰(eŠÛ H$Ï|Éøò&ð¥¤¾©bü
ø¦;‚ï³q4	~»D²~3$û®ð{Þ
aí<—hî¿?ƒšû»G ëèbŒÆcKÁÁlŒP¯½#X çŽÒ{ ’wE+½æi[[b–|Ô
ª/Ô&CseeÌ%[O–×Då,¯ðêY9£¼|{ÌQš‘.ö˜Õ—pPmgöïm\]'cé3˜cŽFƒùVÿjüþÀb|A^„SÑItnrˆif)Â‘ˆÚX¤4VGÊ¤SÄ‚b„ZD¥£Î#GÛ;¾n:jÐpr·ÔéˆöIG_¿ƒàH„Ô]u8!õ©F¼RkÿÀ³f¦[w×]=ÚÒè>K;Ò{¥„%	æˆº1ZF°'&XDY`G‹XX‡ŒdÂE6ˆ£fVÕ8vðS<¼Â^NÇíu÷›´²×¸€²L×[aq²=M3‰äë†-	\´ÚQRÄrJA¦SÂ3â'èRè µñÜ‡´8ëâO€ûØ›[>ËëåjEm×=+rÒ‹mˆÙF†ïˆ™ðµöYæ¢ÃÎs•dð¿F!ã©gÆŠ(“Ápª¹•Úª¥·FÄÌ\¶¤íõöö«š'VÄÑf
•“N·ÏÇpÔìä…=jfˆîPó2Úo“£uÍŸç]ÅNú¨´l½m¬Œ)åÌ9­hP„D‰BNi‚4#Á%	Ê§©”#4óÚJæiª7¾nË€«»@sÍ [§ž/™¤L¬ã%oo¾Í4©…ákY«‚hVÁVØ‰aù¢Ÿ¤ŒÙ-ëÝCõÔ! nc7¦mýw-—'`¶^¶'ùò¤ÉÆÅ²…óEÙÎ8¬•ÐÞ
±Â«H0 •ŠËh¡¥*ùFò€µ~ÏAYÅØèh¤6áƒ_5sVÃa®dÏV+ëª±Vd­ïE9º~žšØÚYÙ?ÓY²Gâ½2k7 ~ò©±‡´—;ZK:Š±t†iÇ„Â)ÆÆR9üR¹à,²F*†™Á$*LlŠ8j,üIl­P&â|qyk	¼|¨¾°
z\Ë:\7ŠÍŠˆ\c„aÂªÜŒ©@¹róÒmx&éù>Ã¾ÑšHŒ:Ø6¿gpm¹’¿x½iÌÞeÏà$ìŸÿöIç{îÇ7×ý'ÑcNÉ )±Ìb¢¼e[m´5ðJ]T„Q$$GÁÎ¤´Ìƒ€N#gŠþ¼Á_çÊê þm‚?¯ƒ®´¾	þO&däb„u"Q—’6'€ÿ÷gÿÇJ=”Q"ÝÄ~ü²eÅRG3fm &0/™%š2?§Q*Ëe¤LYÊŒ‰ÐŸ0«8×RÀ<ŽI“ãU\xþH@†6óˆôv™ž à×Ó•Bk¡€ÉÆ•êå»–¯q(Ÿ -¼3ªo>xËd‡0ÀòFváPÃ7¶{Áq¾ÓÂkY”ÇµÀìËê|bÆð­0›+j ´
Gé#s’
-(ü×é`•ŒagXda#™¢!Š -1yl#•&Nnînötv3äZ5´Ëá¼r­ÉzÌuf¿œM¼y6Öî£@­êàx<"Ôî»Cí‰­Þ™˜ûdÍÝÕY<Àà}ˆÄ5•Ä+}äy‹©öœ9±*ýÍìã˜`làŠ÷(esr™Â”Û'mÞ3Î®êYåK³rÜ£4Ë‡±&õVô„­–ÎÒ:+,dåpœO$>ƒ…ã Í´ê`â^y½£i¾™»Íò›É{>ƒ¥ã8Ä·¯ J»&ôå’û“dàN{¶«Ñ¨r˜yý ªÁÒk¢‘Z)	‹QJì™–A™èTàZIk1—ÂD	
‚I-5ŒÑã š
ãµTÃs .êT£×©&'d»‰j¾~súQÈ†w0¨ŸˆlzÔž=Ù´2­?KÖ™Næ¤›bCVÞ
iÉ‰QÀÏÂ)ç’;E{¸6ÊJ ÁeÄˆ0ï´AD)*©ó–P'©Ñ´1whÍ[>Z×Ë†Égç±Qƒ¾!ÁTÄÔãi­tçš¯™¢`’ãÉ-wcX¾ð!y‚FÿÎ‘<›~0÷ Î»ýÓìÂÈ†¯q÷‚9ÊM§…ø’Ã¹ÖKË…‰ÛWÖ%œ… '£¾ãmö˜Úcúãˆ¸ˆ:îçê ?J êódÌâÇ‘‘{g¹EË²Šh&5€¿Àii(@¿"R>_äßìº¨tò3ÂjÈ¯aW‘ )«lä& >/Ä°Ÿui»xDìß£ktÇþ~½«$Y1r2çÜvü€Ñ×©©»ˆâØþ£åÉÆŽi²äšv­4`™òVbÀ»È©!F Æ @(ˆ§$ù§i
SC<V f‰H•¥&/ô3vÎÎÚ6óìEÐFQ¾½¨€(5ˆµ€Oª•^­Ä‚æYÑþq>,_óóJ’­=õá®j¥»§v†&6|};VËSÚ®Ú“^øàÞf³Ã ¼¼¹ƒƒÒ¨¼N»÷tUÝ^jËe…&uNÓ=€Œ•œy*©RÐˆºa§áó¡šx<‹ê¨8Š‘p¯A@Ee1ÂÏ‘øÈíö"¡(&5 Œ¯ñ -$+FtŸÆÐ7tsSƒ	ö*
˜ G-áH”p¤~´›$q,µæ2ƒªJ!>€B°“^FÏ€H¬TIŠ•¶€‹&–iÄŽaP4DzáÈª¥ÂØ…KÖÔõvƒH"kš}n*"W¥ œËZ,¨Ö™Pe*•ÇûljÅ²‡{gÚ¥¬cÌHkúù1UmÖ^usïN«V=‡»gR^S¤vnÉ#Ïä9š—CžNÛÁ&:9N¢µÇÔ,á_˜DjxDÀ.\ÐÀ±pNKî$õÖiêIDŠ'ŒR%{Î„¢ru N6E÷E(Ï „ªwJÁ“#SJJÊs¥”v¹ÈÏ€[F]ËÉkŒºqŠRÚG¯- zh#5F<â˜
îy­ƒDÜ£ bFR9Ì(A‘ê¼rt£®f®-Ï\Þ‚è“PÅØö¦éœ Z´"|-óCQ™UÜb4¬^ñ“ôut&’ÚSL$Z²iy£ÝU¶yÍ«åU2j»êS¬:Î+JtQ®ˆ€Î/FÔ¢w5÷d{J¬A”sŒ¥2H)¬¸‰HQzZa*B²>ü@€ š¶Ï¢)âªÜkU«Ú,9«-(í!ú©¹!:úiÕ¡}â1@zo½¡N ýäë„®Âö“õ	Œ«*ÚËã((Ki¤R¹'&c¼t[&eYa(Àï´‰2øÈ mX´Ž4ö/¯Aòœ†ÉçÆt²‰éb7ÆT×’0Ñe'Ãµ(#ž’:z(*w.ùûœž1ø¸K!þQNA¹¶Ü¦œh‹µWL£œUÏ`Áé™"³k‰fíÚhr·˜·1À´©K×W;ÂÏð	áÊÃòFïOçiˆéj†r’ÃR\ÀŸ´2>,vJŒSÒÇŒÖ\#­VQY K9
œÖÔ&÷PÓ¦E¨AÝHÔT¯xš¨‰×¨Iä…¶PÓ“q/\ŠÂAë¤p™œúT>ž)9õŸŽýÂRK–š„™¹5Ý[çv¬Ë-£Ø"(FØÉ ‚HrªwÉ¡K\ŒÎy‰Hª&âÖ:
â|Zë`ó"ªî®³=¬iú¹“úðF:·&r;M	R«+ˆ9Y')ñ\¶›£ªÍXv4VÞ‹-~xNE]Èªº•ì~ã9[-™Û;·ÃÒkÙ—d$ûÚ\Û±¼MSß®]Œ€J
Eê©!Z«$û:î„W40äág\kw„aiƒˆÖ1PN¸¶Agú5¾V4ßHÑÖ¸Í¹®'[p‰õšk’Ð´Òžš£ãÂðœt©{d<ÏèêÛÏ_¼m þXÎû“|¤3êsÍ©‘œÏ¢fIk¬×c#Ò(„ˆÓo-6ÈGøáÁ§ÃØ—W”c	Û‡›v-qvôWÙ²|jL¼îáÆk	×J¶Âþ¥ÍéLòü9¼!G~Ù¥0ÓÚK8F·ñŽä_`ÕþT]'cés¡ŽF«û2³k2º¿‰ãÔôÛI&'P"<‘@¨WÎaNG.
$ñ$D¢e‚¢	–LN€Qb4„rú…NèleÕéD­ÓI–ó¢‘NžŒãÒ…t×$NA(=j/„’Åý„™åvÑ]7é˜`Sj°6xg%õ†;¡X å#ZLœ¢K)(©:ž¥F¶’E&·‹×Õ¿5«ÒhWò6kœ;EBÕ;€*Ê·—”Z&[µMI ¶jœJ	ñ9¡Z·‹QŸfA¨ÎdR{êƒy„ÒÁÃp»ØrmÒÃn¹*H»UsÌ÷ðIõêyèÉe†Ó¯ O ßm´Ž ®˜e¡¨€H™4 åSø³jQ¤˜PÀG¹ñÞa¥˜“ÒøHI^Ó×àZl 8Û®H™Ò#Ö ðz½’“’ÌÑ	jPöl<ýCx—<·£@x†ÐßÂsõK,ïÝëp4wÁ#Ì?ÙÔ
8Í:ºVnuÜÁ¤Š:ÐHANg9 uÄ9«±Áš¡fÆFE%¡Ý™HEà¹Âû!F ¦Ùg`E¹;ìz­™R®€$ÖY™Ësr>¡ý¦Ÿ¾¡žê.þãåÖ÷ÍíœjcÜ.2VÍ\©ÅR§´õMÂ]4ž“[‘ÚDÔžŽ¯N ­ ÌA[ÁÔ"y`QéYtš`#(÷L	e	Ž{­ŒdÞã¨,ExíC$Ïš±X®†».T±Yg¬¬¬[ëëwWôÏY²ƒëûèœÕ£ªòÂYçWñž‹ÝuU·{®ÐväEà."	<£!ÀZ! 0®œÆEÉ´QÈd‚PF{Ã¼N}€Œô\1.YyÝuÛÝ2ñÜNv¶îdWö«¡*	Â¤FYºLi_¡,Fs”¬»aù†‡ô9¹DÖú`¾¤K³ð»Ý ¸õ³k^,O«j¹h¯E£r4“¥<µŠèÍ×ºƒo´Š#m4ãB)„±Q;å¸¶DšºçÜ¤¶wÎ¥n§L)ãSÿ;‹’>¯§é×¾k=Š*ðåÛË‡P%jéhk|	ÍŠqZÇ¡gãÎè~E‡ôàw¯‚Ð~Ïëš0í„í'_öéî0×Dg¸V.j¬™G6•TÎQí	‰:„‘ÑÔ» (Å”+$¼eÚKTÖ(Á¨çy™nw‡Øy&Ÿ¶q®ÌLR…ó5Øfˆ’ÕJ~ã¥±|l/­<g’œÏ`ãé³A½ë‚Ù9ž– ÛÆ)‘¿ô£*7M–%!ö.žgGÈ_è”V³X/%qÞí·ÈÔê»ê×JdÌIG&µh!,•gZ†ÔŽ,×ˆÑ@…LE©¨C†¹ƒ–ÊXA"1L;O1@3±y¹_%­‘\m„¤\uZ£xÖ²Âc·ÑÚ×ï¼èØpßÅ‘‰­GÅä…ØNHlý¨úZî¶›ÆF¯ù5^ö`T-SAŒÄ§ªêÁRPÂ¼V[O°Æ1¯·{¨“Ááˆç„uD–—¦~wÛÙÄ¶eæùXÔTÉ4ZõÉ+Aˆâ\me5q-‹†õ*­ax#,K]»Vïy¨ž “£sÄúcLmø¡Î}+j»Ý…‹MàŽårTµË&Àí!0Ï×qQy›à™«Ÿ
[‰©¶VyE8ñÌ2/“›Br§­£R"%s*hLŒÂ¾vê´æÁP2½Ã_|Š:|6µ¨ã:%i­Ã'Rd­À9!$ÏÚUÃ‘§æ¦¸$ ídô:
€îQ	ºèù¼—éN¸=ÄŸp¼jÃ‚ ¥Â9ì-–ØáH”õT:Í¸ÆÆE #,6š	ø)s$Jf©aBè¼B¨ ’‡˜^fŸf1Î•R’µ\Iñº'˜#‘	²•ñå|’ê*u÷Ž°wrßî7¿t Ä|ÏB«ÅW&·9ËžÁdÒkVsï¸&ê7ŒÚ{gÙ6’#…"%< ØúŸ/Ç}N_Nù³m¿.Ö~Ý/B_0(PL™ð:JKA–ÕNFe¬R2RMõL8AA`Då¨¹Aa	¢Ê©l}ák$4’«7P­Ùz\©Tz½zRYu½·Ú“q'\¥uIà;>¥õ©@<!J;VN÷qH®ÿŒòSÐ^Ž>vúƒoÔÏº††ñkÒ- Ã9ä	ŽTXA¼IåÍ£¦Ì²„ïÈú <ÊY$­¤‘¢h‘€&§ŒYÄW>ZW[YÃäs×(²žÈßN{‚Šu:—h-+†sh¯ÜŠaù¶ŸW•©Í?<®—kÑžùÊÙíŠÝú)î^0/>¬ÃÂ	ùzà³Š¡v×:×(ãúQÛfðÃl_âøE%jløü0©Î¶ÑZf<EÚˆîÆDõƒ°Nâ\:–ú¾b­BŒ4H$õÈKÝ³…xI6!o‡xFõzÇ""Z…x¤QŽ©néžGä /º8•ò{c¥º‚ü‰;[d£ý±4šü²þ›êÀ”Ò™¸d‚Q¥c$	K©¤Š 9Ç£çZ[HðÚ!,rD1Ê‰£Á8')õ"´ …l^;879èlùŸHŽÖåB¨X5{N²bhWÌù´€3DÑÑ]™!'š¶Œ·IÉ_~Å¢R^%cá3˜¿ŽÃ¸kÚÏÎ½)‡×¢·wtê9®õ8õ=*r<%_@¥%`B@gÁZ#Ë)sØJk•aVá@´BF£=P¦‘EmbD†[B mÔ˜¯’±(ÊVgˆdRÔkM!œ¢œô&Æúú]5Gá,Ñ¡È‰8«GÍæÙsV;WÉye‘W¹l7=]ëÇð²eÏpé)*R6Á:P±¨TAYÏD ˜QcãÒH‹dÊfD’ø(e†1‰òrï«‡ël~k˜}î4E±Y4ElÏ¾§ŒÕŠ,r®×²ï¹$YEà«½Vo|(Ÿ “¥;cmyôÃ3áÕtà¬òVvkÓ'¹gÉõªãÒO±aøeùG¶"t®fqFclA)«!RÃ©‘‚À©¶–…`ÅDB”ÎOgÖY&™%HD¬ˆä9côF…Ì¶‡3SÊkÑ_œpÍW1šjÖ£Ÿš—¤»-ì8(Ý%²ù¸(½G¡8¥Ÿ|ðËtgT'ó Æ!î©Ö¹ÇžyI(ârDlr\à€5 ;$b5Ö;—*‡àh‘"×<T¡ð!ö¡+œË7Ë‚4ÈÛ„¤Æ«XN«]—(Æ<+¤iåÐœQê>‡è(@ï¬+ï·uÄÜ|ÏF«l±ì_ú†¢cÑd~ÛŒjü~ÜHÏ6¢ãôfÝE5§Pœ"NEgdDRf¨B2&bP4Då©7L*ç”b"h‡a$èHRïÃ/d³lš ›Zül"U#›,ÿy#Ù<Äeé¬S/ÓÑMŸ:ÄÝ´otñõñNÑ5R‹\/wœµãGlô
Q‡ˆ­ÅjÂ¸´8²H¤šéµÇHy8\hE˜“N„ äÓÄ5Ã¿‡ê“„Ïs@²t×n<J$±ß6õ8yTÌde‰ù™ §§ŸàËçÓÁaöåj~¿Š0ƒ];]Ì£y1Xi×§qðpº(`£ªå‹ë`*ºÁT„lg*,kE€±ÄkL…Ë*‹Ï?,ÏÌ=AÄ$µþØ=èC¤C~#î}²õýÝîöÿnýæw-—ýÕ°ì%±Oò¸0×ÄîçG<uF~¨N<—‹`µŠ+Í‰·^p¬‚Qo´VFxŽ@Ô*$ J‰â/È(òóƒ˜¦ÈO‘ª!?WëÈ¯órüjøŒýc[ØûóŽB{Ã©ž 	\X_£9>æÝ{óe|i™Óg±5Ê¨h”V{•õ	é"6ÚxÅ–ŒhC´ Ö‚\ŠQ„2Ï##¡‘ÖÌGó®Îê-Ïå’sP¡Ô*”§þ­€çÛ…x¬­;ª5!©}Þ£§Z—Îìýh>/{—òaõ~O+ÆÿcRÜ7Š£à‹Üµ‡<<ÎuñFÏ÷µÝö­5¯–ÛH¼Ýªýõ¼ûáí÷’ö»ŸrÄqŒ7žöbãŽú¯P»ßmZowp‡…1\'¬%GbY´D8ª±§8‚˜eð8åèIdUÔŽrá\ŒÞ[ž#€« §ºÀ’¤à@€ká Zé¬&z5l;±4ÞÂ;;£ áì.Ç€ðŒ¾Ú ¼ß¢%–g
Ì÷ ž+^ß£ûêF<ç0¥ùa×Ý!ŸqËSó!y ÔqÀ´è\@8`áC”œì±õ¡Yä–$•ÃÊY®¼Ê„üüÅ“Ïýk©Ö;ew&¯µ®ÆBRÅW«-aIÎ”Þ—™k/2|; ¹Ev(¯4ÏÉSkØm«[¬½âlœg¬zOð)t˜?Ï][ÜöÝ0è8þßî8…Â€÷sL‘°R:ë¦>`¢bÀTjï—Ô2æ©\¡£!Œ`ÅŒçþù²‡ÎUJö@[ØƒÕÙ#+´u+{¼(¹üÁ/?úT&ž
œHzfDRtv‡V-ƒVU°>…Ñ”F
b5×˜2ç€@¤6G‚°ÂÞDíS›9¬PÊ"í±y-åàÁ:¶M=·Xmÿˆ¦V©¯[(x•:(ÌÏR;Šyé	¥Ï+ÿ¸þØ¡ëü·±ÏóºåÜµ\nTOËeûó%\\ðO6zRB[ ½M„PGHŒÎ&0ÇL0M0²L$'°"Á:£½=B[E Á‰Ü8C ñÑZ‡¼êÝ_¤³ÍxÎ¦ÌBj™­5¬ ‚ÈœÌƒ:¶=µ¨žKõ.%]êQ:]@ýÉç'·êyÄû'TèWèÌ–;÷©Kõƒ8 >VŽ{+)’J[¯A†78"J]£9õsL‰gšGdsÀ!¦¡¦égç‚Ï&ñKI×kâa¬èjù
ÌhVùŠ‡£r>!ÿéÎ½Ö‰ ÇFÔ·Û8ò_µû¬DiÙ3X‰FµG¿uhç^Î‚›Î|›štG(‰#ÛÜÁètŒu½…j¯¤–Îlx Ä¥$d\jÀ‡Šänc…	F"É²Ž+É°Àj2.}µœ%sõà,¼ÉY²ÆY¹&©MÎz2YÓ—ÄZ¨›MêØ¬Õ£*óÔXK°\Ö:•¾÷B_{éëcWE]'}¸“L¸Ã(1‹2ø ‰“ØP‰¢%ŒÙˆ™ÀÄ{Ê½Â–"ÆˆµLˆÊ³¶}ìjkÛ2ñìL¥6k|lw½Äk!»DBW+ŽK½LçÚÉT‡Õ+~’¾“Îá[µ§>ÜÊÆ»öø¸·yÍ«å)
mW}ŠuZ3Ý&åÙ è|½¢;DÄL° Ø;¬R¢ŽB",‰Ú“ Ã9#±Òú •æZhŒsôùA´Þ„èÿ6Bj=8ŠHÄW`D=”mÑOÍr9 -ºèÇ é½rq'~vn‹Ì—øx˜_£;–S$Œ-{O{äEÊœ ·Sd‹Ñ¹Ôâ‡¥ËT¿˜¡K˜–kÅq^¾ÄÇCLD“Ïéz£oB“ØÍ0§ëb7#„¬:¸™DY­é>>˜‡Î%|Ÿ¡¦^ß€Îp—ÆÇÓP[ nãÏh±öŠIàcÎªg°õÌùEZÓ³MÏlÖ9N´k…œB!0Ø+O™%Z‘ ì¢Q`$s„¹Ž ÄôÍœE‚RÉ1Z¡\›Íó ‘íŠKU§ë$BÑ‰`”§l!‘'ãd¸ Azî›FúÔž)´ó|Å|òÓÛÔ‘ŽýGcÎK“Ò1Š4J1.°¤b"©aZ)ÏEð†Z	Äã	çN#Ä(å8æ1ÉOo;—þöÞ¬ËÛÏ|ÏO§_*},RØ—îSÕGVª<š¿dk,Ùåž¬™lqk.Zü0Ÿ}€’\dd2%ÖbI™ @ p/.~Ë®ªšsILézÎQf»#èa7"èa&xù “Ž"o_ê£¤Ç~<SÛ­q$ŒÕ ·øîÝ©ÞšëäÇžº½äóMÍvS¢Ç†bÿõßE$~B!Û¯JÓ}_h¥v
ql³üA`kéÖ$î4a/\ ÊmütÿÛ<w3ó<Lòóøú_æK€ÀPì¤`Xë`Õ÷Z¢`ÌšG
ˆ½…’d ÑTGwk!„2™TÔ(„kÃ¬Q?$®e4-àp…jÚ%Ž¹@°‡2Í›p~œû–Ó"­›û)bÊI­	 ¦^™¬ñ‡» ªwÔ+]½ÒKøB]úèî6“_½`öV ìWMœyÒŽp0´Ö!‰¤ÂzÉÀQ ½¥È[Ë¸ÎÉ˜.™3¤¥DRÉó.×+÷VT¼$<úV®á%aÆv['p²é}ð:^†ãL
^.&cÏä	ž æ®¡Ÿ"·l5rÑ•äÈ#	0´h²vP¬ô¦¿ããÜY™–íÙË…áª™’C;¬hTÿ¸Sˆ(Å?` –JcÑ×‰EÊ‡ó6T)+,ÂÐ!+\Ø~èÝ|Íñ~±›ï>ýÄ$Vb ëb "Iñ{wmiOí ÔXlk?o½åý¼Nªšûùw9G÷úåJ>UèÞš)øâM„ðF#ÇŒ¥Bûq10wœƒx(°^`è©6\(Êµ11úŠéûjíúG˜lâ‘wÿ<?R"—'¬‡] ÄRr[„2%ãÚ²y<Fÿ6­lýAåk†fLß¥Æ÷M71X<ç<ƒ4¶¬é–kmX}hÇ~à š<À)‚ÅäpZzÃ‰¦DŠ¨±Œ9ŽsËN„Sé€ôHcç)¡PR£Yøà‚'O J>M¼á\ñ„màIŠiÁ~<y2Vjçu˜ 7óû€ˆrÂƒÅQ±=Ehô¦¦¹}i†)"	8v(œBŒcN =Tæ‘ÂH%á`b½gÌ*¤’D
&¥SF¦ŸQâèŽ‘¦v×tsç-?HŒ÷$ù&›Ù¥pÄŸ²6…ÓÌ—³‘_R“ïªakìÇGWAM(±/U—Þ;¾ÌÊ6S-Ìš´}Òë†ïõž`×f\Ç>ªáv„q„9%—T0Ä5€Ü"Ân©ƒ*Š©GØä”ƒ”«@î™§Ú#Ó/
¾Ëí8w(YßŽÑ»a„)_q…Qˆ½´Ó¤È!;·¤§vWpn2/ZÝ,œoÈ'¿/8G¡¿=wóÕ:<Òë¼á¾í±ŒA+)ÆÀQN%ÀFJÊ¤–„#H¤qe÷as÷ÂÀ°ß['¤®·o©ÍìoãÑ÷o˜J§!a›aE$-k3DÀTiæ~Ý<¥~$­¿…­›ÃÎèë¯¡M¶žgzê6Ä™ø „¶Ii]ñhW—9Þ½!°@äµÐÚhŠ¹ãKT8HJ4tIf±×žzì%x#×9äöî,° ÔƒA ¶,k¡MD²Ñ`y2¢ÿ¹AGÈ4-'<!\ eïÑèûÃ˜ÏƒæÖIËy•õiD<cÜjL §NIðÅ­= Ì;ª LL›- §ŠC®­áÎNMK RŒí¡iWíóC“½ª?AN ¬¨½¯[…'Ÿù5*éÈMóßù	Õ6=¥|TÝpîø+ZL5BªßòÅµàá®¶÷ð:6Awq* VDH@½ò îˆæP±cáL€°‘+IÃ¾©3Ä[À±ÐLX‡Ió§þNwñ­­huóL ó›Úµ]œ¬Y–"Î“½Ä6ö²§vUp”%Ðé÷ñ¦­íã	¦?÷ñ‹KA-¾Å‹†°Šô(h¸Û+Ê¦Ì!`½šXötÂ…$#ˆ=WÔ#n•Ó$pw/(Û=3Úajói±mûõ‘ZÐ¾}×ßJãºŸ»±áO€0-{“AÆXª´\3ÇàI:õ–c67ÝòÓL?ëoÏõ|	RÛßP€>Z~$ý§4}ôk…0wƒ‘umª>Çû4DàÂ`ãFÞP«˜§HAc„rðè~lq„ÿ‹·
p¥õ–rN2é÷
ß1’l%Ýw~HBÑ’Ð$©q~ØF’'s§pVÇ‡Üì|±ä„G‰–œÉ=B› ¢(jv$]¾šTŒjæÛq¨ÇRCE	5ÒXJ1ÃœS¨°„qX
9B1¶­
˜p01ûÜ¾ÈüÄ¹ìÅ‡÷/³Ï)
ŸïÄ©&LßäY¦úÓQöi8ú2ÌÔ4{ñ²ƒ³Ñ$ü‰÷cK1EYoš©¢õ…•…¹.îo·9ífî\þ“«°‡­šØØÆ|êÂŸáéÙç¸ýÍ¾e#Ÿ©ñ8ì«ùþ=}~kúó¼QÛ»í…Íÿjæúîs/¡¥ìæ¯›nöz–wiÿxÚCºbFºÅÞfáÖu‡nv öƒë°ÇhO„w$7`/¬R>@…Ê)VZ¡‹|‰vŠÅ™|núõÝ›Ïèx´ûs8;Óó=gÛÃ¸0È°×Çy4À¡ÚÖX‹n„YŸÚ†÷íûöaWÂI›K9m5h6"8úBcƒ„‹ŽÁºjU v£ø#Å§?éé¨ïf•iõvÞ|8øv=ÐÃ]k2¹½bký=¸¦žÓŽW­9g0®axL1ÈN`0|üÖ0£½äFz‡55ádá0 B§Áû$¿¼~ðÊ7âp.£Câ=¼J(ôÉ-xM?L^ 6š¡Ç [qm
°§½ÊÔ¹ÚÀÐ3	fûƒbªþÒôÀ
»ËXÒ5Â ÑX;N¥Aa='©ÓŠ Ê5”kÍ´¬‚Ô8G‘‚ûh§E®îÔ2ÚõãÑdë…îý×( ZÜå§‡±S)°3¡¡nk¨5úgïS¯kGfõ=?šLŽ‰5Ÿß¼yw¯ø=_¾Ã€†6dRŽ;
6S‚É€qe¯Ìz€¦õ—N¾H:õNŒo# uÁ´=ÑHƒî¡‡abççz µ´Ó]ÝVó™:IÜói6ûv!kfãI\Áz°Qá`Woù8MÈ‚r_îú×—/?âÊd¹B­3çá2¾‚[¦¬Ÿw—žÎ¬ùùç„fK¯_þý÷‹_^„]\ÑßÝ•º²Fµ|jþþ;Ì'iV«iÃŠ¨êuì­xP8P±jb¾ú(!×ÎªØuhûï·oP¤>]\5œ]ÕhåšÜ]5¨Å=‹u!¯¨öOÕç{Nö«;xXº¶Ñ˜‰‚ E 	Zê”FÞìœ¥ 1’6°g°gXî-Õ	˜õÈyŒÙ¾ØC&¶‰ñ-&Æv‡R…ëâõð„PÈÖ¬	ã)ÑT7	J›êkbëÔ«s±jDÊ•†ì¬ŽB‘Vx“z%V+³ú5JdìˆºzÔ®]¦fÇTŽí¨ú(ñeàkGÕOœ»{öR·ük\›¦.û}¤®qevÌ“sŠ—TûŸä=á#ç¨QS+ö ÍK^PS‚Ã”`n‘Å\Å»ƒ!E  
„bTâ=‘Xã™çÎK7ŠjÞCü^NFÓiö®¯fq²sÛe¿Ïgãù,{Så³ô&NEÁúLÞÎxÙŽÊÛí,a~«dæ“IxkýoÙt>ŽäpzõêýÍ³ì÷÷ïŸeïGý@Ì¦Ïò{¨×¼þ»=¢xâ×Þø.'…jôü $ëK†Èn5Ž1N6Ìß± PlÄ?N	Y©F|¹tŠ…RÏ|ãç3ðyjj ¿9ðc	! ˆú„°?1t+Ùè°ÕÝî¯}kiÆðu[›"I*·ò¿“Ñ^°êˆ>÷ÊùÏûSW*u¦$UMã!1A¯)¼~ñæý‹ R	ÚU¥&¦J${ü\ÍñýÍÂ¾¤l‚<Y.™Ü|yt¦½Á¸ïRž±YüúÝŸoÞ¿ú˜ô˜Ôö“>‚— Ñ>!Iw‡hNI æ@µØ)à”F;ˆ1óÑ»Î„_X'½H® ¥À3‰óH‹}~ÔJRMI(H¦$odë„²ž’Ë¤ûÁd®iòr!%k¤¤Aøì)I<–¶ÂN*Ý+±“äí )I5¶’ø˜%<‘­Ì1'r‘i\³à3g“D{“Ž4¨Rÿ[Ü¤i½%õ¨µRë=¯îƒÎR‚{CÍZG“Îíìn¨È„.‚û«¦C¨‡‚;(crZby BØ;dŒ2":îµ7@„‰³†·ÌÏ2jzqo°›­9]]¬u²_?ü+;`S|™7eôG_Öl€ãOÝ×übNeCçá!áG³;—ý9ìÍ¾eoãÏ´št³_ÔÔÙ«Ð½ÿíuÖ›Á_F“OÓhfü¯›W9/úÒë÷3ž¤ÃK‹Íßº¡›ôLñz¢VÄ*ëù«áhèâ…à,À­$üÿgÕë+>€««wº-_}Øûfª;º–9[¾Æ¼ÞjNÚ½Pì«ùÐÜÃæ0t³ç‹ï0Mc·‡P¾“¦Â7Ý]Å´lÆG)aÏ¶>Îb•w`½
orÚ–¿áü¯øáoóµòlÿÖ^M¥Í·rFíÝ–’›OÒ’Žz>] 45û”‡=­>¤˜çv¤ÿ·3³‰$/Ÿ"¥èù4î…ÛðÅì¾|˜ë„ò·öS'Œ/”û8î}ÕsßAIrÛ¥–ÿŸZ´˜ßÔÒ³´±­¯^ÁTÂ×7J\yÙbe$VH¶ÎÊÜ¨Šð$+>GQa€	PåœW€Jí¤ÖD lnc%…HCç°Ì*/=·
$…^{K÷åÓ¼Pžï†òlLÉÝÊÁ‚ˆÊÅZ W0KòÆª¢<éRÕžÆ¦T­’J˜¸?é©’¨N@zNëŠUf?‰çømT§b-f‹Õ®¸dH©&`+ª”^a“3¥Ö,‘§Ô*e•ZgƒN¥V›Õœˆ‚•ª	­1­:•Ö)W¡íÑÝ›q±é·¡N›ºá‰åÞCêq/B$v0f—õzÉ<±†@'¨ÞqF©a
ÇœZ3Ï±óÈ`ÉŒBB0ˆõ^îGs7Góiö[QöÞM>¼«¾m{‘M»s´ì÷nïf_\üï=»S³,7ã]Í4saæ"YšGTzìÕ—IØdÃ|èúrNâûÌ~{ÿ>ó‹4îÖÍ”µ“ÞÐ®zfqúñÿÌÝäÛõOyÂ¬ª™³­^Ññ(pG7éZ÷¼ï†Ã ”ÏÃ¾¿ï‚Škãðõ›×wîƒ†1Û£Lc*›G¢"¼ßŠTô«–_§Xx5u s¸¾kÌŒ¶|fÑ Ÿú¢#‡­Âwí¦¹þ5høD¡]Z½ÿjÛLeW¥*Ó™0£þçá©TðþÚééžìFÂtG¨¦X¨=%Ô`³Q€Àa‰¬$
;‚5h¯¨#
IL™rPso¼@ÔF§)º?‚Úåî1eÁ8]ÃBŽá:ÆDdM°°®@pAÃM4lT U4¬t¾jŠ†OÅ,äÁ ÊPV¿Æƒ—Ùöb:ÎT€€É¬qxÙô`È•„"E1°˜p‡1†šJ˜È+þ%@^K.56œbTQ!¥…{‚?¼ÈÞwßv_tÿè~èf7½é§ìÿrª?»ËÞŽ†½ÙhÃˆ5Æ±šLÝdÍ_xã‰w1¬™½º+;X=¶U\»íÍºelûŸã/½ÞnøõÿPÿ¾îAlhËLîNœÞÚÃCõµÌ	@‚$çáE?£³¨üÏz»†4¾LØk.ºRá¼ë³¯j21ÖK“¦×n³ÏÛæÖ}Nˆõ²*MFÿ¼yõ×Çpjo	V­â6†ÿÈƒ{çÃœ~²óÁ8ÀLüñž37Ý—8)$ÕˆTÑ”„+ã°×JX¢=`Ú@¤”wŽ{±eJo“@è˜'ÌJ.$N_@©-PÂ[ ´Œ˜°	JÑ—c” ÛHÂ C)òã®]ù‡:tµK¨)ZË°Tö¢1,=•³×=ð¤„vÕ£›f?"n=óq4nxÉÆ»lZ×Ã-Ã•çÜ`"8×VÏ†Üƒ‘Qkå¥ÐÜo$b^JÏ™ÕÒ µ‚ °}¸•(¸Á(¼”ùØª™ËFc7),”ö#Õ»ÅÚ¾×6M›ÔáV³Óùj8è€i1tÜ¶gÎÌæáÇÒyçþèË4 Ú$ü<W#sK#þÒ†TÓÑPéþ·«hÎm–²íº›ý9ì÷>¹Ì©I¿ZŸö½¾š,Ácú¬°VŠ¦Oîk´ÄêÍBáÛ™†ÁL¦Ë.k5™äÕÝ@g=³ð´[t*JŸ±Êl2ÏUÏØµøô«BL~õ?‡™ô†½Ax©£ðîãŽ™©Â÷o=öÚØ[µž
X|7×]3<ï}¨Þóµ}X•t1Ü-‡Š˜ÿ¨ŒÎŒ‹µ«A(HÂæe×:ùwÓÁõ#äoí$i’ÌZj÷¨Ok6¸\uærîÙÕªM9-6n<áv_øãí¸"»ñ³²ÎÝ‹W©'­#‹
	ÕSj¹r$&¢³ #šðsf,çP	N_ÆhõP*A1òb]ëÄÚƒ÷\à	¶á‹Î™@h-ûI“8wîÝ5Ò/˜uYŽ‘ícVÅQò8ÌJu–Þ¯CÏÑ¼ñ³X’¦×Xt•ü€×Œmë´ñR+ƒÆpÃ‹Pè,g0j$£ÜjÂ#Pq/‘>l6ÖHo1šìÃ±øãù_áÅŒ²—£0££þš¾÷úÕ«W8à˜25líCaŠ±˜ U+‹½>ëõ{³žËÝMÌâI[­_Í§Q¡Œ@ñâ¯ç/³ÅÎQìuÝ,ÛÕÝÅÊ.-W¥g,ZÎrx‹ÏÔØåHšýõò˜³Ç¨MÂÐªD¹‘³gÝ¤˜³ƒPÂÁ¦¿,’b·4É0Üô—Åór&Ÿð8IRœGŠžuò•Ûá¢­Ý{‹œB¢|00Ù1î£‘D€&HRôä°h¸s[©h1í–¬IË	Æ†“Ñ`«ä¹%Ç›¨/Ë>Â–¯óT}1Š‡ösÜÓöÈ‹±ÀàÓÄÄ19Pf¬†®ofýc5ÈÝ0˜~uÖ Ða`i8®qæÎR¡äˆ{e)U9„
å¤ ó šJC	!‡€íM·sÂ'„Û^”b·ƒ ‹¹7€P’ð1—ã{rt ÔñuÂ²sƒÂÊ›¹ÆP˜jðWÂÄ§–Ïn.Ï zõYã§VS·	žÃQü#%,%ìâå%±¨™\¢’œ2£°U@y…QL¨«Ö$¢8BmžeAÍŒ¤J÷É¡ÿ÷Æô¬1<ÀÒ'à >¾éé¼äZF”€N®?;aq±Ì³8KÙtÑ`\ýÑím@ÆgWÅMó¼Fóµ7¸ªú½Š…vFæ–ö*qs-²y¦Ø«ez…B9fkÐMaÞE¡önÔùÃEÝ4Bó¶ZÅÊÉòqÝqÑ< æAt„kf•‚!Bèî|¯C¶á3 )1«Ë=<R(xBøËø¦:ùÂìK²[¬ætû•'l¾²=øã] ªï2ûq8 åîãtQa9Ý¹Žáƒê,>Ï›ùÿVŸU'¿ï¦ÓCåë´	ótÿ6ßlûKùSØršÉx—L ÖŒ
ÌxØo¡R€{ËÃ‹DL	ËÂP¨•ÊAæÃÖ«¥¥Þ*ƒ­ÁÔ Ýk÷·¶_…S@§·Ól †½ñ¼_|´_z³»,xòf9MÅVýrõ”¼©_Ï÷c´˜É(RÑü)ËÐ.ù•ŽQÃL»«<óvž³{wÎûþ•®¶¶{Wì÷S7Ë·Ûù8{ó×ÛgW¿|øã?ß?ËÞüù¯÷ñÈòö&ûãÅë›"å÷²{áy1¶ñü6‹¹ŽÕ²¢Z·Û-À"¦D<˜^©x±&§ð+[º•õf«þmåV eö­›½pqbñûgÙÝèKÍäYî•vE¢q5ÍŠäãýxg¶‚ nöû2ÞM¼›„f&½¡éÃ×¼>é‹‹±<ßxh-&#ŸN3ˆb^:Mqî¡ðßBÏÃ²ÍßÇg—]»îm76q;eÑ%.~.9hêÑ|–ýõk˜ý;7ÌÌÄ©|®Ã[{ó×Ov©¶†í, õùÚºê$Bâ5‚ø#@ÙžL°˜±£ÃA	ê0ŠÁŸ nÑµNÜ:ðq<*Và®ÁnŒXÓ
¤Xá×¥<«íÞ ÷Âæ¢ÉÓ·˜"±6kyÍyú¨³¡¶s„MpÇ^-†¼Âéwy$Un^W÷åñã~ŒR²¤Èï)~)-Ù--XK0¿³Ùñ·ÙÝhˆ:[{ÂŽTöû÷ŽdöaÁmoòßþã¹›™u¤ÛÐ~7Ä®Ý¡Sì.ø€Žu^Íû³®ñ·ÇŠ{Øsªúßœ?Çˆ=Dp‹¦ÀS•NC!8B íqÀ0" 'š * ÆÚ:å‘ÅD³½öÇþ|áÏ? f[ü™â=ü¼nR€$M”øs4GH¹IÙE)ÁÙéi3hZ7ïSfÐ73G0èÓ^³¬QéÄÛ–œú¤Ã} ¤"–Ëx'‹þâY®xv½[ººtSòÂÄÛ`â3ù6ž5Ì¼ÛœŽc…% \"‰iÈâQ­ÖTkgi~€Rc‰vœIë„âXì¡ã‘‹ZÄœüÎ68u¿Ê}“„/éí¢ÍëâÎ°`‚1šYÎÔ6íüöÓUK‹œ5B»&–‡QæÝÿXrðëH´Ÿ©Rª¯|#Ð¢d-Ð&)Æ6ÖîENmJ)•õêW)æ½ŽîWÔ8=[4|Œ¢øpè§žMïË]ÿòæ_¯oŠØZõëðúüñ¤šlþf¦n6ç«Ê(³QúúåÿëÝ‡÷¯>üù.]ªý‘4Ñ°ïL¢ÉTU©)N-týÛû÷“ºUZ¦”+¬ºã¾©Ð8`]B©vc×N«´*¶˜«ªìÔÓiÂ,%Æhú<êÏîã'÷­EáÑ|½ZÚ¾NÌ	ö”QÆˆµØzˆ¡òVŒŽpo$5Š:‹©¥Ø~J½aøBLÏ…˜JªQ†ÌÈ1%‚Ér.g"Lp =@L/:eMj*êÞôoQÓº:ÚCpÔ†
Ý#ˆ‹+BY»B‰µ6®ÊÏCÝb¥‰é€*ÈlI`rÉ„“‹üµ^é%7nPIÖ¨¶dÊ©‘¥Êœ\ºàÎ-¥ÚÇ¦“¯îùrÝòK~VmZgŠëÆœÛ Þ-ëæ¨­¨Û«ÕZ–P*½†ÔJ¸uFb ì› ÂIø	Qš« †'©ã20<©,£jŸ©FäÎ79‡ÍÞ&O‹‰¯õýìé7Éº0Çhƒ~CÉ×èwàç2Å•ä~Í^4áÆÄˆþ#ö£ÔÑƒí žm£'ãÎ ÿ2+úzF6³îsÑã§º Êzv³øutÅ«â°[•nÞ~„ú(«äéïK­}DÖSÃû’ý¥÷\ú(ÁM(ç€¡!ÚsÆ)qÄD`™àÌ"èuTtHƒ»€# (Yãh3#„”3V#ˆI‹áupÑÞjR Ø +Ç=¨«»µÉ\okÊÎÅèo°ÅªÝì aÝI¸ˆ_OÆ@ï8¢áÆ¤oN3˜ñÂ:E)AÒa‹©Í¡8!¼3hO¨¶È{­àRÅ8ŠŽyc”=@3þóýã›þ ¹ñâ4‹ðp1rSLRµ	˜XëÄ¤DëÑÝªãËë§­¡1Ñ Íˆ†¯u~ö#é6äþ¨ù±÷yã0•Ýd’2OÙBm«ªr|m[5¹8ù¶%‘Fóá,afïË]¿ýýÏß>Ä•$«(ÕvÊ•´«N•­ÛŽ:¸2zø–æ	ß} «£µ]UbŽ£w/þøðêæã¾ÿøÇ«÷¯ÿßWAx‹iHx‹-‹X‡Bšžš[¶/bÑ@!™#ÎK…kƒ‘ö (–˜Å´êV@(4ñáO,…H8Ä½5|_Àž»|xv™ìì*8Ý²#¼œ‰qÌë’­³Ë‹U“_rt¿¬«É´I4Éplh¦ÎÇ÷lo¶‹‘ž…rwñ£=g™®DkW(±Ü¦USénÎÛ´*N\Q»éì1u÷SáÖY%ÃníS§¦ÊŸ´}hIC™„ƒ˜±š 	Œ–B(hD;J¡Æ?»(¿OÒŠð§´¼/.¤¹ÿúåæ‰QåOn2týx<×ñ…ô¿eÿüñâmŒ¢sõ‹‰±SÏß	ƒ™ì8XWf	Ècðß;aÜ‡¶MâÎa)_¤ÙÆÔÖS0¿0éu´ÙP¼ÎZ}Áíj•úÛl…‰Uråw%%¶,T¡ö”ªðÛ¾TwŽ2Ë4áÄra¬Â) Î­¯Æ*î9sÚkÈ¬c
3+±ÉP…¹ ðù0ÝŽt¼Ï
K0ÈÖ3ÎÊ Œ9[æ^iÀõª.7ÈtS‚àºòU»Xüt<ÛÕiÖ@ùâÜw.kÔúÉº?úhí,ôJ)½'a€pá	 NˆF(@:0€‡•³ÈsÅ@H‰@ä²Çá<1hÏ»¼€ôóGnF“¨rëèõl<tíè©utŽ3u9;7nÐ$ýg½Î±1–o±c³—ãóåL|.gâ]ÀÙþ¡˜è‘“ñ´«vž@b\8î:H”H)þ!¹·ŒrS‹qÌ+«=QÑt>"tnûï;ô‚˜¤n:¹ kÐYÏ÷x:/§ÞºàÉÑQàY÷œ×6Š^¾—Cì÷sˆýüàá@¨À"ìâÎ3€±.ìåŒJÆ”ÓØz"pÎF0§–SŽ¶X n½50ê 9äÍ_oÏ‡CÇ:Kô]O‚röØ+¶Ý~÷ùâÀÍÌ LòÝ%_œz‚sX—SkcàEÍœqÂ¤×:´~nÃÝ7´z±?:1ÿOo::VÍT;ÉÇ=êž{,‹ÓM[N7ë¢jðIÁ‡?uì,DvÐšö€5B@³è`ì¬¼Æí	@N0Ó93LM¨¥pÄ	àµ³¡<1X	€Ì!…áBlZ 6É7é‚ç÷æebƒÐZ<†C{Í‰ÍES¨Im0nLxImjK
­rœÇirÇ9!â‰Æ8¹øwœ±Â³Á£’CÞÖ‹.Û"³j_7êX=ð/TI¨¨7XP‚%C'a	êŒ1f	4žS,?„Œ§%ôTRAÅ÷%eqCíýS*—Ýü2Ÿf/Þ½~ô+=Æ‹Œ÷ïeú%åx²b^ëNg±z/âRcFyM¶vvõNi—“¼¼Õš"V^§–—7}‘³.rÖEÎjWÎJO–*|åŸî½õ¯¯v¬d]Õ¤¥@ÀYE~YV›Ï)Ìî£~ílVä´Ã
PƒR##©³éŒ²šK ãš& ñ€@œ#\0. Gòw6ä§joóƒ½ŠË—Š’×
Á²‹ü]¸šô=ú×@è{x‘ü.’ßEòû>$¿iµj«„OC+õÄGb£;Q½q"(#
-ñÜaÎJaî%vRX©¡ƒ”:$¬¦\yŽ p&½§’!ßÞd¼xýÔ¼¬½>{æIAr .ä†f¬ûO#XGv,ÖêEtlÌ:iä‡UÌ{«¨Ñ,¾xc]‚™ôÀ*;hÊ[tìÚÅíëBÞ3k˜ÒÐ+Ï òÊ8Ã!†Ør…ÒCœD’r¹F 90vF8ƒ1º ñ£¡1„ÉŽ]œn¢1¤l\Ž«“èa/*P]<–Ì°Jx\WOx`¾8xí@èKd““êÛø–c5»{è#7ÐŠ8ÎÖN&¼åÍtT¢=@Ìˆ˜Î)üCÇB`«´†C¹€\0u äóþ¬ÇôÄ`þ¾ßOÅ“›¢ô (“õ,Ò(¼Éµ,Òd>ðãT]NßÑ6‹‚’O{­Ãw¬ÐÄÇvÏÁgõÝ^pNd€óÃ	g™[z'/hÿøïòŽxi AÐJ¨¹Ò€Pdˆ+‡œ3Lzé™PZAI .Ú
3‰>draÇ’MB8Îsð”™!tP\ËÏ|‹\”€ºÜ ®=È&7¨-´NÙF£	I8áà‰Zg\¤‹'ŸtzøÙöÑ:&áJ8ˆbXp¥4gB{Oœ¦ÈA‰½VÞÌ9Ðœg1ÄFI´ÂÈoÝ¼~{¦¦©Ééƒx2T„l{†ï)$^·NE¬…¼ABŠ:"E±‚/*Es&B…›+æ½ÎQ»¨Ñ)¾Ø|oçú¡5³~­r1ïÙo7/?¼ùXåù²«>Eð—Plž”D|UìúÏ?_ß|„‡›òþ>5}c7»x€À2QB”ÂHHtŒ&Ã‘\pç!7Ò*$ Ô†8B‰•y-œQÆ"H8<õýÂ/ƒ_l_‚ì“:„›ü‚£5~!9Ž_\´Žš¡Fi\J£î9ý!¨ÆÅêá‡—J$¢v…Si\·á=Qf&uË¯˜Lu½V	MËªILûÐš‰6pâ1ôa?¥Ìx`­ÀŠÃ:@¤TN
À-`Úzƒ±bÞ8'ˆZ2{Èf3§q0‰§ÅlÊ]?C·ÃòïK‹e´Õ,'ƒ”y‘Ô¹²‰3uQIš«$ÍbÇY¯£Äò-Ð–Øìãè#·¶7ýTy#û÷ÑM&)SuQ[ÚQ[ê†Ù•w>¥JBwOjÐ_~§ßÎ¿ž‰*²‹=<€Ï&NP°æZQ€#FñõCÄÜÚ"#ÎJãÔYe¡ñ†JÖYpáÏØvj}xØ0%â²Éa VÞMþpQAj« ¬AW¢îq¿m*ñàúG*‘:gYåœd•Æ%vQ’Äg–¸É£Ú€4f+mK9O;M!!çÆ1Ã9cÀ (2FbŽ¹Æ­0Jô…!©8(°%Ðy¦PD)!÷p—·n¦:«	¸S³l<ï÷§YãwYŒ?SÓÌºqØÒÝÐôÜt?—y‘Žoþü)	O¾šaˆu‡Ôµ½µ<SJ«ñÂIšs,YUcÇKhƒgÜ·þx×-‹Î´à*º¦™|ÏF->Àu[UÑ¸oÃ‹vÙø'}”{qEëÇ¦§¬jþ¸\­ï|]õ€c­º+Ú?þµåcJEóÓ/ªÍÕóÙµ%œšüÅÑ>ô}—#H¨RÞyÅa¨0gF>Æ.QZ!‡÷êîg±æ	§õ½*ç‰éTy—ŸŒ½O¾çâ˜‰u
J¾¦S!Àp˜aq¦.÷\U*ÀD}Fh?ÆY¯s#Ë·¹-Ÿ½ð§$Ñûr×¿¼ù×ë›x/C+…©í:UþÀ—›²:7eß÷õÔ.°o_âáÁ!bÎ:cÕS-õ„xŒµFžŒcòG¦VH‚¼£   tÂì“x.pÿ p¿#ãõ^Od°‘ñ,Qî!u” M¸¿H@563Î]~Ýë’¶‘ÿé˜å~ªge¹›4®šèä{¹æzbNÄçz”¯Ÿ‡”1œ1m± ÌF‹Ïh ÀRD!À@(˜äT{‰ÔŒ)CóÖCÏÖv«x±¢ ¹;MžX& øÎ§'¡ÅŒe½i +Æ±¢ÛÏœOwÐßâs¯v±•œ¥Ì¦Ë«¦³§l8Ùg-ÉÆÕÁÖ.„×¢ùÜ_d„Æ¬B‚ÆÆ.mÛ¶@>Ž>5Á>l±ÙWNC¹Üj×¯òx}:çö{¤Cû×Ûßo>Vé$)'ýÇ6r]c	a`Þ¼úë#_ÛQYýÛWØ;H¤ˆ È”ÿµJ©|Œ~* vFAäæNJK¨%N"PØÃ¸»àÿcâÿvæ‘½Ö®lX»ºæõK„urÞmáÿEW¨Ç h¦+<Žùf«œàá‰ÖwŠ§§OË®z÷Tá
¶‹Uœ^8c»Õ½¤Õ°g­dÿlG-E H4˜‰°dK©Œz¡´rÎxl-b†ø ]Ø8bqŒ‚fBNâCöa4Oì~ã¯›ßŸÌõF˜ÿdk.(ÛÌ€ÑF´:<$¼Ú‹
Ñün4rÚ“^GUÅ[4;{K†v-.YÏû¦ý¨zfKÑÁVK*ì¯ƒðÍí_Tqb:Ÿâ—²ÿÙ¥ß.Un÷äˆß¾ü`Ò+¯¨ô†	ÊÕPpá5DÖæ‘b–+îh”K5 ñ°£yj%¦p(ËóÛÅüôˆc,wËÝÈ³Öó¬Õò´ÝÀü‹òPõY£»‡%ê×Ú…ÿ§cÎÐ®À%·Z{¶ë4âñCš?Z1Ÿ¨oÍ$–	Z,|\SCÐH È4¢Ô
ŒµÑ‚	«?‚[a4
0æB8F"F)^)¸‡O¼Y` ie<O³_úóÎê[=î‹ÛŒ¸DÆ¡¾é05‡xEoºÇüî¢7È™ÁhqwI„Ÿ÷ûÙx4™)ÝÀ;q.F(fÅn¿|øÕ‚`<Ë¾ÜõÌ]fÔ0Ó.'(ÑàÆ6Gãy_M²³=•÷.Ìy>Ž~ô¥xÐ²¹¡úÜ»-À7’›åP²ðï7ùÍhöz–}é….ÀâlšøË8T‹]Ío{ÂÏ¯Ì|2	e+šõÝôYÞ`^5”wjÚ5Wã‹¿sí¬ÍÿHUA¢&vÙá«é<ŒOM³·ïòäUþzó²=šXÒ—/_ºùKí«a,õÙõc¤Ø‰+¼{7ô÷%† 'œ—m?©`ˆPAw%(ÞPG¦PÂò5f"Í8ö®“Jü½K#[c=–#Å»µAßóŽ‚ô=[ÛáS4ƒF¯Š›¢çSÝ>ï[3úÞmØ'q1èÀF…ƒ=µý¹`Qh¡…ï(_ÊË†³¢³	‚CÜ®#B¥XOÌÂ—«lŠÑD©dò0wVB•¾ú(aÊWÅâ¥Çßoß È\º¸ªK»ª±Ã9/s]´&U'9‚ØaÄ ‚½ÄRj‚¨€Ô®&(Âƒ1Þ)´„(§‘²œ9¬%fîóþ¸›±iLlÐ±ád7±a”±uóÌ%E¸¬	Y3bó]ë?mP›&™õZ¤62Hsj³uP?oŽ“šÓnƒ¼$GÿÚ`1‰[£3©6eâÑ Jí¡ÝÓŠºå7ØKãÚ,)¦û\¶æ€2Ÿ›
5¤+šñêµÂŽËvZHK¤ÃBK‚…·Ò+ÇˆBžP‰œbÎI™·XRmrT	5‘·ÄåÈ³l ¦37‰\$ëIoÿ>
ÐjT?s JÙ›b‚Ö­Lõ·3	Û@1ãñ
Çª™ÊnÝ,ðŠ<¥LÑ~NPþûÕË›gÙÍ_7y~¹É®Üä§œ{¨þ4Tð>R˜@’”Y˜®Þ"oü*×+›Œ¹¥ªì,RÖŒæ³l>]Þ1c§'‰åwJÙëç¿/ÕÕ]`Ê~VÃY„Õ¼Oaî’wjêÜ ün¶Ëñ¤§fîY6DaÚÌgúì*ÒŽVóYvös dù¥˜¹SÃ¡ëw³ß÷‰•C§rÊ•æ2í‡VBw×ú™jžåì4®­QÑæÈç#Ë›ÍÂùÔh .°¾«úøÖgÕë/™åô.P±Ø¹Yà—qöºÙòJ/¾ÏØÕÕU\G˜†áhvŸš¤lñì¢šþºÐ¿_½á2Ý,þÆØ(›Nl«ÔmñøžZÞ×åüí0M+‡¡œKFß£?I€6¼„ …—õ'È„ 	4-ô²“ï5Õ§S1´÷ùúÊ^?÷&£á Tx^lyLÂÊ›R¶Í‘MØ8l¢E…nfU;÷îCÍ¥éPµ›0G‹EÀýåÏ?~Û´¹8;J÷ÊNe@úÚrÐt‰‡à)éÊKc¦b‰Rã,3Ð¤æÂ;G
ÿvœ8o,ÐRÂbBne /Âi¯<¾0•S¹0•4¦"7™
p7Sáœ-A	0º&(S,‰7ñ:]Nºp•m®DÛ¢–¸J¥°ÔŒ«¤ül“–§!G=¬zs–’ÈÂ–ª±,ÒŒj mÐš˜pì’X#ì¬€`–réÃ&©4E
zB”Gxc$±Þ…?”¨tÆ0ýe4ùQ*¿ÑˆƒŒøå#®6†]ÌKÁ1^®ÚÍc·/È@€ßiþõ'\åu»Ù/¡ò,f•Y1€ÞpAÎæÓÈ+B'Ã7aç&ël¡ön>PFÔ¼š¸°â§au»z 5•[%´ú¸ê_ÀÜð¯ ýÞ?E•x‰t¥ŒÍ‡³{f³ü°Žã5N>cÅtïö6"xà	ÙÛÿùú·%ÕNwµJw‚ª`„Ë *C¥`•o#ü| ÝõÐcbLË§ˆ¥)±F=‹ØòÝ[ŸlõXÅ‰¾Á‹ŽT@^À[4˜xî¯ßðš1ÅQ¹·ƒ<Ö¬8kÆ~’ 7ŒÍ¤ÒæØ:ýÉx\Õ87<Cc¸”œIFµÃÞ…¿-Â1<`$À—S
Jj”g€r-,ç¤÷\9z¬`mÖš3i,"ÈîS •B²MÀ’ ®„Ia­¶7ñ'`UÐøØ×dá&ù_[…¬êã_CÈ:¡]A»RÝ– –z6[¢YË~­ÆŒ2jbëÅðÊ‡†wÁâ5£øš?ÂtxsÈ(a8AžRï ñ:€”ZAhyø¯ÑÕ £4ÑLSC½.Ú;Á}Á_¾x™]¿¡»/
«»—a€?¥ø$–0bµõ»Á¼¿‚•i¨8Ëâ„ÖpÙçÞ$Z´å?ºšä_q6™óT¤|Tv;wÓÙªØ@…­sèºWWbzƒqßE=jšÝŒn²Øñ•[–. c Ð0m½ÌŒ¼…º“éÕuÉtÎŒFýOîÛOÏªoØYfa39îâf„ÒßÞ¿oÝêm:»sgŠ¸\Ž‡‚Qj[®°°ÄyŽ"åsæáíŽq@’ç("Ã‚(ÃRt¼O€¥¢_|wË÷û=IííÑŠ$Ä¨>0]Ù…•Ëá&¥Žlzí®ñL¥ÅqÂ¢›ÄKU¥¦8µÐuØb>â.¬²€_/^¯tU¼ÈõÒ¤Véªxë¥E­Ò²æ8åá‘¶N!®´°¡Íö/âÿ0±crˆ]}io>¬¾4´úÒèæ'³Öö	éJÕYü$„ÅCÄ…¢hËãFxŠ=ç™ÇX9ŽêpO2È-†Æ:ç°s _Ë÷CX Ø&,»4PŒ7.S!áˆ”£2A"8JÑ°Â¿ã“tK”…4Ù.eÙs–>ey*VúM",ILrñcë•^ÑšµUJŒt¹ÉuTJ4ÿßd>*ÉfS!“&£eUå	Ñ¢NîköZÓœøÀq¼ÎBç4È9„GNã@•¸ç"ˆâ„l¥ÔÚ þ<Ý]ò¦p‹”#ÇßÂe²Ä+.(Ê³²rž\ð’%sê-ß
Ø¸ÌÕÂo/¿uû½–§ÅíÆ|ZzÀY’ª¬@)ùº²‚åjŒhš’ÏßE]9Šª0\ß6½<ý-°Š¢áÓ+-a;)xÂõêQñ›øI™ùtò<Ò”ðüN
QyX¥éàD-9Ó!Ì»/ µ»ƒÝ¨ó Gr@EE¡×>ügAšyÍ—[TŒe(]8b…ÿu"œ¼ DÀ‡½ìpxÁãq‡¦î±…;rwRlàÎå\yÄ.~8ä9éù	"ÏC
çACí&ÕÌ˜tñrž «gåÂŽf(ÁŽKë°×Ô%²Ìx( ‚”0×Ž*ã…CZzk(GÀ„#‘Ø›ÛçÝ2¼ÉûÑ< Ã«2%{S¥¿ˆBo¿ŸJ¿w{7ûââïÛ• M¬þ¾ùuÑ|À«°s¿/6ªbc½º^  zÃ™›t­{>žë°>ŸÆJY¬Ô‰»[Æä§Vaè¶7ë–{ò?Çÿ^zëÝðëÿ¡þ}1-ý_$Þô¡{<u%[!u¢ˆÄx$ýìÄ…Ö)–ØÃ‚ÍfçðÅ&„®beÙ•CûžÝ ªÉÞ†MwTª*o`W¥o§³‰?¤WÌû³^zñá¼ßO/=ž÷§.¹xÂµõZÑë—/~ûåÕ¼øN¡nG(žÞ¥ÈÚ‹’{ªò½2!Ô[©àõ‹7ïÃ`º²BÄÜU¥&¦êÂ»µ¼«u—ÇRª.ßŸavx…-Þ™ù;½+x¬´øV*‡±*wýîÏ7ï_}¬ÂÌê„¸ŠËR×n~	ˆêA¶•?2Ôù<šèÞ4Âw¬‰QË8jn{£N¨wŸGí×W;v`Ù…ô×eã7…æÓl4>T#`›°·,KžÊã!ò‹0ÿ±:l¬öf=ÍãŽ¿<5÷NõŒ8‚}C¨ Z¬¹Ã 	äœaÈÌ…SÈ;†-Á^AþÊ²B*4T‚Gå>g¾ûn‹}“­89réê¶Á¾äI¬¢sæ:ûæ(%LóNúùRÐ÷Æ¿yƒìÚmóï
w„#ùw¢ÍÀN"^·î’‘×­· æu«-ùDÍzuì4ö²öÓ™¦´FÞ‡¸“Å7®YùsË²Íò+®è~©F<f‰€×®°dìIõV”¼fñ{V	Y·‰}’Ô|aøÉfJí3ý&F'`û”Qd ÷Úƒ¹QýÄ'þª´hER–[	˜ß3k	Ôß}žÐåkÞÿ\¿æ-†›½ì÷â/K÷Ÿšµö¸;MUÎ±¤lØ:,èšsVêenyÅ=®~^zaO™¸C‰IËçò‹hƒcW5yÀÆ¥nñ¨êÖk6Ø¹}j¥QœÜêC]@‡N¡Åxô[‘Ð——±8j¹;¸íöë^Ž¤ÝÞÛOé—÷±0N.<ûôs¦céä¶×>èv¬	š™´€é‚!!&ð‰%œ ,%j‘VFIe•÷Ç¸qŽ ‚<z™y÷ù˜]˜NÓa©*e`:|Ó]àµdr‘éÐã˜Î#h•ß×i.R>×9¡`yá:çÀuZR —\§¶½$=íõ·Ý~s‘¹žã…í¡Aq=¸Úwy…ã)Œ`Xã•ÚSƒ4b…¿•7Ys:ºÝ[`Ñôk˜Ýu¿f¿ô†1’økÙOxVUõÞªO’ÝìÕq0ÙVJan¤¿"74Àk’+Xi!]Œ OÈo8m¶¤ü::ƒ‘÷Ó­óšº[Â…ãógê ÿ7„	æn*¼¸4;£Â:O°?| ½¦M$a6ÚÊ1ÙÀWSí$í§ãÞW=÷©z£Ô’­Ùv—¥É¥ëÌÇ)í@ÃF9Jü4ò²ù÷Q§‚Ÿ¡ÔâÉ6©i¶™éö-E†:=‰| )	€½¢Ö!O˜tJ¼Ü2%	ãTDGV[¥@‚CÈµL G·ûb\h$OÉ0Ú0å£(ºÍ”h$8!âý~y±æ;šHò9evÉEci£UjÙTÒ8sj™jËVâ˜É¯fI6k¾Ë'¬PÕ™Ÿ‡K½IHÓ«m2ÓÔš%ŠšZåm7ØkrµF³Ø®¡ãÃ­SiêÖ©Yæ¼íÙcÖ4tl`Ex/n+îzi›zpUÂ ûVR¦-4ÞKÏ$ÄJ¡@ñz$œåB/4#„ZÓmbë7Ì©}÷Ì9ÃÅÍÉ1þþÈñ~[¹pÔX#ÇŒR\vs	¯¤–—K\Hõ”wÈ§±â'(¦Ë¨8¼n¢t¼/G2÷}:lgA_’ôØ³ÑmÓÍNŠmÚ¡|¦ÌÄ“Ñ<¿73Ûë _Ý¸¯¾ÊIb£{ ÁÓ)=±œZj5ÖŠQl-QŠXFpL¡˜·ˆÝ3{…ñ¡0ç c°/¡Î…Ó‰t«@¾ë:]ætá÷¬æ½9¾ž§euìÈ›óvY]‹bØQJíc¬'ÏóZE×˜ßVSkŠ‰Z¶{õq•üuÇO?lŸ™ÚÞ¨™ÄWîr»¨›¾˜`Æ)2Â nˆP†sç9‡cÃÂš

€—P;¤} ª!å¹U[ö…èyyÓùã÷·‹4Á1âNŒ«<õ›¦KRyò_7ñÊ¸œž. òTLy.àð:2íbìe{¥¿íˆÊ<tÎf¿¿ïäý±îsŒš¯ÆVÇ¢­˜€©hüª(3m=€óípžnžŽüì‹š¸ç‹Åð|_ìfJ©”¨,brŒ°¤{²ÚÇ@<hñ
¼a**"…óÚÅ^j&µ<ŸÏmœ<`säG‡è¡”7à¸¡‡ãïÜ5—"N5höçŸ‡X0/–Ð`QîúåÍëß?ÂªÜ~½éH2ŠNTh#‹²yûý]+zýúýïñ_au>báõAt
&¾ØÂ^èGÉô}­Ò#nù8MXc)*ÝÐÌ'S7M(9YS¬ªô‚×/ÿþûÅ/¯?ÂÊä˜åJ99ùûï„$™³øªºt=B¼1²;	¨rÏ‡v‰]>\"2Ìƒ%¬Êy—›(>ØªGÅ"ÏLg6õ[ x©šã$@(€èÕZbÄµ‚‚1ÇV
Á¹‘Ì2	 Ì;ÂŒãˆbÛýBòÚ'yb“äw“<†e$Ê$K,R.«7©Nºžy64¯±œyzšÇ˜8šW¡;5§y©"Ø=«]aIü’ê­ó¿Ä‡­³»&uJŒ01N›oK²½0ÄClCs+sÆÄ*ezW¿F‰EÖ®[&“izÝŠS¶¬½rÙ@|»pÌ³3|G½†	w è¢ŸAW’ŸQCÂ	¤×6^ZcÏ”"ÎA( `È	DFa`™kÍ"÷¤À**°…ŒŒBÝ½„3[,½žÆ1\÷ŠWd›/on^d‹Tê¶7MÂÞ›ÓŸë[Nš±ËÖÿí§¼h ¤1¦e‘ë|vç®^ÞD>jÃª4³~ ŸÓÌª™zVäUŽéTýÑm nhêì‹sÃg9ý2éÅÌé±X£Èò_shî¸7v±­îõùYÖU=oâÃO&êKY¾0Ê¡S“ìÝË·Ý««÷öÎÂØ}ÑµÅ òVûýÑ—l0š&Ùw_ódîËSÕ…®„B:æ¹[æz¿Ê;?öÎë×¯;qüÛtQÓu³¡¢êOGÏVÏ
Sú¿çÓYhn”õÕäÖƒÎí\·õ*w2hÉrçûF rÁJ:ŽLq…*ƒÒçôTEÓ£Øô‰8ÚN€BÒ ^¹W‡èðÁ0©õmµñS>FxJ±BŒe—=Z+¦¾P­©Â)Rà`žTenÙ(^¥Of	Šå¢PZZš³Ä³%ZÑEIÕÃŽ')TAk@ŒÍG •Ppi54x~$á˜Bå¡SS 1I/<FR·_»”I©IRÄ6IÙ}—+	ë)13oLÜR")H&¹¤T`ó&úµKSD3ð!iJ…6xšRCó[ç+§”Ç†¸´,oÖª6(Jr%©WºÞcŽ`/Í.œÅLšz„Â.Y|B¤g!XKÍ¬VRQ±÷Bxæ° ã˜V€A@¼dÚsÆ¨ƒŠÀW€&f_¸”«Ë¸xíÖŒG“ˆÜÙË Ñý›?^üWfÊGß€ýæM>#ÙÖÅ^éº¸À·ëù_øæŠÃÅ£VÏ¹Z>'–eŸÃÖ?šO×îùºÙÿÍó‹@ß‹-ÌSˆÏˆw‚¡ÖU|º¬#àP»hßûÔëÚ‘™Gœò1IÞ¿ýoÞ¼»G®çËµr€  ¸I ð*ÿÂ: TÄh,e 9
lµÄ $'T&É“N¾;¤–,ñ6ú,tAþßåiï²›Ñ@õ†ÇS€?‡Ó"Óž³-#þúÐFøð›“ÃVà;7Š­¥ùÖm5Ÿ©ò©õLÑ7Õ ¨t-ôëË—+‚¹Æ;>3'¢~ªlÉÌ¼Å0±èÜ¤ì›Á%è<g n¸ð]ßº°`R¼Î”ê¾ReÞæfX{juQÕŒí«XÕÍªÖùYE™Û¦Jé®–ÉÒL:‡2Ø‰¡!R[„¼PÌHd
èÀ›¬e85ÐKå×ïMÓp!KM–Ð&Y"l·QT`Ä ¯ÇHë ±²å»Ä$¹d1¤Ë#gD—š¿Ÿš.É&™Z¡K•®xéÒSQ-j›Éì Pi¶Re•j_U&Téu–Ì*Õ9oE±Ú°j,ÀlÐ©³·2ZãYíÛ(`]GÕOìû?ÉßLË*W3R6èM›
X´»Ô€a=N¦©jƒ4€ž3m©çÂÂ@ÌW†ZgöP-çÈ{ìÀ§"D™½œìåó—?ÿœ™"¥U™ ½|{oU~˜‘½|ûú}¤djc_F“O‘?å×Q¡åëhòÔ0Lud7?]Ý?®›}¸tdÒ‹Ì¦óq$p9óZš¹_¹ë™»ìV}vñâmõ°Þlz_ÍO±C±cÏ²¢d~w6Ý°|EÓû¡3³üvmø-{ú¦Ýú:{¥ò!ÅÁMÝ$¼ÀìúEß‡•cFñï·ùW*M\æ¾ªÁ8&
dv4vÃ¬ öl4tÓŸºW/†£ÐÃÉÎa„Nþ:Ýö]v­òÚã’Ó"fÈÝ\wÍhð|fýóÕRÞI… ’2\Îª!¸¤HÒÝ”‘
ÄÁÆ› q\Î&A,…4†ŽuòÏ¥k[þ Ÿãûysÿ×H$a>!Ú¸9ü£y#£œÕç¡‡)ÞÎýìPsiB[ífóÉ
Ûÿ¡ÙË¢f«ð™ÒK=
Käc ~îcü4sÐì2V“-|Ï±,Iå¢'ýÊj©e?¼èUé»·"mJøªÞÌƒës_ýÉvUì:´ý÷Û7(Êo]\5œ]ÕhåòÜU‹®uV*âÂš.#6¦¬a‚<5BPÆ‘ÒŠ1ƒ±D[¤½^[Ì¨ ˜K’ctù²ÐÙÈ[÷ß¹^(ë…² ¬b›²’Ý”3×¯„!gÊ5ÊÊYŠ×€²Ö³»Ö¤•i­”;›“ÖT›§uöúTTÒ½46uØK>[_dmW•­%eþðÚbªgïŽ{œ¶™øVY½çšuËoáÆµiêúßG‹Ÿª¬;î½_^š‡“ÃK 5Ã[†K`-×Ä0Ã€ÓS
‡qŒY¡¶„é¸‡ ,¨õB»}á_¾}÷:‹÷Ë$ÐH7I1²˜ªé}Œ‘HXw´³ Ýá!yBñÑ8Òâ6/Ä§ºßtókñ‚Q„ÜºîÐÍ{
ÐõôÀÄö
B¶a'd²ìÎ*sžD	ï—TwŠu‘,g¾z÷æ‰ÀüÅtâˆ‹Üòëã=š
"ÁÜ{ßÏ‚UUùmUÅúØõ™§´›2nwûgJðŠð¬‚MkrcR.äpÿ•±¡t×ž7eüQ\†aœí_á³ÑmgìnÕt>íÄ1¬7¹Vÿäô N(²æAŠÑd±âÎÉ”Z3 …ÀÌYÊ¡%Ää%…€
É­†„/(vZí8{!‚À·	Âî›Î0–l–Ç+NIJTØ½!]<ºP„%E ¯àEH–bˆ+$Ä{Š\áIK9‚¸_ÔŸPOZcLÄªÙ¤çšZ ¡®\ì¼¦šåX)B3.üU(€œ6ú@C”WÆ:”ð[¢˜B
p$À²‡€Ä­.¿L+0rä³›Ñ\÷]çÅd¢¾…}~27³ù¤l:qa3š†Âñb®˜…}4¥˜¥üŽo= 6b‹‡¨”‡t¯®>,ÛÊ>E€Ø@ï¶ð?›º8ç¡œs1Dæ¢S@~™Ã§~mÜìnd‹‹Äß¯áOW9ýˆAb‡YÁ‘ŠvBñnö2†o˜(]¡¸o0üãNMc™gy¿ò W+V„„(| F1$¬™cîga‰åmç¦ôŸ\ñØõûyßÔ°7ž÷¯‚«œÛÔ§ÐZ/ÀºP7OjZ6áï1Æ·ÂÒz;ó%´ÿ\5fÃºíä	aÒnÜLõúùcd‡ë/á¿gÂjÎ¿vgwª—“´ÿ/?/ÞÞâîÝlÐo“3nt!ÌhÌ‡2}¾üÒÐF	·S¢îÖ•p`„)Q$å«FÆñÒ¸ÿi,zÕÉ?åœ\¨ånºc¬GóDÐ„'9|¸sk=Ü`š9\ƒ†”–RÁë›þxýê#81io¥J-bO5Ö¬ÚfTõób¹çdú³›+¤ÿ4fÜì­¢+¯<#H£±!ÜÍŒT
z+1ó†H/Ê#É0\qê%¸°…[øÙÚbìfXÂuL†¨Xc˜§$Ú eó¡lÚá¥·É*-‘šò…Dibq8¢nªº°—FS{Oíï†T´f1aÕ?ÿô
¸‹D—63,†„x¨m`xâ€·HR£ŒPÌ3&¹Å8®,’å÷$‚ À8t‚ÈÑ¾«W_ÇnÒ[`àÐ}É¼Sæ‹¼Î¿~ø×Ï9 þú¦§÷‰Õ´øoFaó6KáÕÐ|Ûh6´V4³Iç©XÔÄÿm–…—3sWQhüÍAoÝ0ôÎ„=i4¿½ËëÎ§.DX¤¡âhº´(îÆÈáù½ˆ¦37ÉWóðö*î»ái±zâ—ž½u³øÛÙ(Nx¨ù¢ln<G;äi–n’…Æò “yù«Ò•NÛ½üB(ÏÛ¶Yp÷v8¸<‚žŒ¾LÝóÕÔ¾è‘tƒ¹ØØš6òÿÁÀT,ç¼†Ñ†8%ldÑ·N±ðxµ"PäÃÁðöXÆaŒp}kà¢'‡àrßNt¸Å”ƒ{³–W)e‡£˜mõô×W;®‘(­4Yåm~$C­
¸2¬Ò}®æÊr›)š+*”23W”ì—2W-2˜§–ÞÈÚ\Qz–6
k=#ó©ìzÖîìR{¾³R•BvVÊkå\ì?ýÞtÖ1&Ìu;2ÖçnŠ˜ª?C!‚I*Œpœbç8hnv!ª$¦šbäg”E,RÞ9ˆ­Ôh¨Ù…$þÐ$‘m	5’î6€°N	'(¦™¾'‰„3–v·³Mœ>žøÃÝî´Aq£ëib…^s$M<¡Ø=_,wùh¾xnÆ>;‰dZÍŸLíâ6±L­Yb˜©UÊT3µÎçL­¶A>S«ÍjÎßƒD[gœíí¦“?rPù6§.ŒK›É’´wãešYrR`Šy#´Ò{­„4Œr!µSL
<Æ3g Ö†ÔŠcD¡Bî3Ñ.›Nç<¥`…ñ–ì7ùäúî[vóKŠåv¹‚š)­¼.µñSAHvÜNThd¸dL­ø©7Ëiçýõ¡hg­³yŽœ¼E¬€¼kz4‹—œÊöò¾xh¯ŠÏ	Ö£­–ÊótØª7,lÊ¸/†ýìjE^‹Ì;ËÈ¨ÊŸ9G¼]\Œaºˆ¥ipLÐSlë9mFeú.^°œ¥çzñüŽÕûhŒX€Eä”+Ý}UHÂÚ¼M¡Ë±Z! %ìÖòãéßA§ø’eÊ_Þßä¯¥¸6Ìÿú¾ïÜø[xàñ¬ôæþ+x ô6a:Ö'âøˆMÂ·.ßÊ!¹wãªj4EÈ<Ðxs²™÷á$O?þ"kf¤êÇ¡†Ñ˜qÌŒ1§±Å\+ÊZzk°"1‹7”pˆQžMZ ±¥$ƒÔ¸ Æ=j -Ô ûPm&D;1j¤ëçŠ¯¿ZÀpŽ¸Q¡l´ŒÇ>ý¸1Ÿ†e5o˜-œué‚¥ðƒêÁ†—B¢¡ƒ	g	¢Úz`-öÚhÏ"š"ì ÈR¦ v dšè}–oJn›c5‰Ãù4Åý÷æ—ùÀjK=YeÓAØTV> ¡LïvèrQ8Úfa@“¥¡íMc¢øøÏ‘ÏŸuµ²°,=5›æy§¦yš‡yÌ^ùz–‡j›ÞCÈÿó¡ËbüUa¢¸Úã‹áÍµ«@÷Õ|hîÆáÈ×Ì~íY"¾©=3¶Û@†M|#æ.å˜pPÚÄ)§œ¥(Ï‹®uË²S,Èz®ø>†Yñ
âÏž½gN½‚4Ð¤½9˜[rïRÕjR‚íÆ­w¢¹„ö¨¿ëöZè‰WÍgeü¿ž’3EPÆ#(¸FÚi¥
¼?à—A~ÎâÎ;„ÒÄ;†ÃÙFh b GjÃ¦·ï\s¨Ç(±	Pì>d@‚¤\7c`ù”öI°4°nP5­ÙÏ¢š-Zƒ(V?ã@TUrå@Ô	oPðâ®Ù\Ýk«v}ê‚µÎíì~Œ£`ZR	FX ,H8‰y0*œ«ˆtÜ
Œ³*pqC¸ÃÆÂ´Æ"ˆÐ¾ÀÖ	È–u²›-U¯“	ÎcÝ~ï¨Œ[©a+=psR—¸xŽàƒ·®÷ŽH(¼ÈÄ³P9NŒ‘Ó±'ÎÎå„ÔüÀFNÙå×ÒJ„¦Û>+…Gœî¬¤fŸ­gsÎH,»S-Àëˆ¹(Ÿ–x+VÝµlªcÙbiœÔûOÆ;)ÄÃÇÌ{NÅCf¥T`cøaB‘rÄ#ì<xµ@††Ca^o&q‰ØòÃÞw‚%ˆuë^Ž¯kypJòÃ>D!.gØÓœaA±‡$-žf—$â´§Ù2›H¸E+êT¬SáÑ…‚*ÆñÝX	?¹o3KÜmÂò‰!bIšæ+@÷)k@=ú"™—2f¡ET‡¿SO”æŽjç¬Ç\KŠsÀ#ç¹¶D*ÄgV	f	ÿC÷Ð—8˜N4y±«9&Œl¢róžÉ¨_m¯ôf9)…Ð¿”øs¯©¨þÇ$^¶ú{b(u×»½Ëú‘­Ì˜¢#Ô}Ö«ÈrJÆGKãª0±Ù—»Qö¥7½[äæÊ{ùúÕ«WYÞ‰|0WÅ ¦E/b°‡ð¦cùHœJc¾YŒùe1æ÷lÕðh3Tò*¨Íj‰ô—’d]•c‚w_	`C#—æ‚¡²O}”ÕRRn=ëäë¸S¬à‡…÷þÛtæÙ«áç°Ò:uÇè¦P„4	v“÷äpœâÝ[ÍáÓ²%4i9gèx†Ôj¬ä|±'êËrø°ÂEy>Õ)ÀYëw‚aztþæpHcž)âpÜ.Wy£…bT) õJb0áPk#õK¤5ÖHxaù¿/8DÉpˆ$ÙpÆ ËpH1)&\; áb½}o€È\L´	ˆ•)šâSI)ù n¡kX™ø¬2h¶|¢l/¬Û@öOMÏ•²‹ùb	ÖLsCòÐaFˆ³rg	áoÊ"€0Î |7Œ™¤M@NÇ¬7˜Jn¡rŠ}a;^d7o_¼[¦yŽšéÂ¡¤?×'ä>,iág’·šÆ0£þ*¢ÆÐôçÑÝ¥äÜruó"”Œ¾y÷â]ëN$¾ÿm˜‡½XC®ûq†/ºušƒr¢›Ñ/0˜¢2|qHŠÉ}÷:ÅêÔK–w2{OÃ}c?¿(j‚_÷Ý95»?ô„fÓŽv›ïàb>÷#žú¬îzb[ŠýÅIÅGƒA À©Å—òuU<¶§xÿüxœxO
ÇcEzé‰‹çŽÔò…–|ZkòP2|óãNLé[ýÿ©*sVgõý,#ýÀÞœg(‚‚ƒXbL•ÈX¦¥â89£F;®"KœdLÂðÀí>÷©Ï¨Å3¶ŽÉîÎ¹tÝ3Ì)óFI’»ê>¬}„³òwÅ4Ñ;W¦Qyf>ži<•³óåH<ÚnqZõV$äG¿_g,éµÖ¨Kzµ“|q¿NfZLŒX¦7‰uþI.|Žöƒ¯}º°K–Þì5“ñ8¦Ôf¼¶\HI©âž&¬â«€4áÿUÎaKÒÎ‘À‡ Âl_ê¾¿»¿On³¿!ôäïl2æ_Étb@‘õª×7½°R{z>s6{;ïÏzk²¿Úl´u>óµ@ÒCœEn…§»ýf6„´ÌXÂ(E×|íäo¿ƒké!o_xÊjþÆ¨WòW~ðµøÉ×ƒVe»?Ê­%Å×nuíäw”Á_ø&Eþ„]Vub-$\\ÿí¾ÎªŠ×yukßN6o¾s+©š‡³Ž° k±àB{C¡£À‹% Àro- ^ %Rï¥ÐHËÎ]Ú¹Ù–çßQ¡Pccç¦kQ5â)ùÝ7÷°ôæeïÞØ»E»½»ÊÎ¸ÙÞ}Z«íÓmâ‰”|µ›?ÙKÏ¡›5æåËëvÄê&²Rz%Œ!†8'!R@ÍµE [%…×Ì†Kãø„¡Ž‘b¹–œ $÷:¿/QDIPé˜d`e¶3eýÑ—Â°'8†¥ˆbcØf½¡;8c1CK¡<‚F|Jî,òlÏ£¦á9Õ¿
ìì}æ³…Œ¶øu¦¬ïrzUN7ù,ûä&ÃÐ†šŒ¯ÉO™Qaì¹Ð[rñGEú£Ñ§ùxW£\Ùºå‹*rP^¿~Q"t:ôcì¿Äÿš»FðÙÕØ?ËºÝîO÷5ïGwÿlý!õ%{ýî*®6WÀ¯fw±ã³ÌOÂêZD T3#§ƒÞtÚ¶5“Y×½naÇÏ¯ó°:Ëð¶“Ôž o8IqˆPù¤Ã‘À)1>B§"p Nñ)Õ‰<û„œ¨7Gy|ÎŽïÝ¨@²]Û¡æ7u›=Ñéæ,³3ÊÐs2$«qRiŠe†‚æ=PÐ@‡,`Ðr@©7gTK'Âé…zÇ‰£ÔyŒ‘‰7lcBðË.XÖ&–måó€íÄ2,ñFHÅPrížQ„Ã_ŠsÊæ._+îŽf{-¡Yõq¯š=‰ÛÂ³<¨MM­RIF»ú&Ùä&SËQ¤”!Ê-óØd±	‡2†q‚P~À8 Ôi<$ÈS	Þƒn7a*Ì,û#º`äfoÕ0îzé’\z-a°“^×Oœø4(q!†1(G¸•¹Ú&øn»ÂYwm;&0üOÙ[Dm.åe2è,AÍô»'ã,ºÂÖ0Ý¦´A\…Éà°ÉÅžÏñ@{iF£õÛM‰i4|T{;ž'âÅÂ‘_õËGóÏNÍ»1	/«0Á¨húÓ`zº{¡Îˆ•™^MOÈñI&ëgz=æx |K·‡<á§U „7’[ïqPúÿ³÷f[nYºð}>Nß´ÜS1uÑk¹dY¥nÙÖ±Tn¯ó¯³´bÌd‰If¤¤¬‹óìÀ A2 É”©*É™dD ìïÛ;ö Z1	–R`iAPÝ¨P)Ã!Rz‰…Þ”®÷OŠp®#\³í2ÁñŠgcÐ0®ÅÃ3žT=tMôŸøÀéIc\—
GÂ¸îŠ1.5¯NìZôZ¢^‹NUøkÑ­‚ƒ‰½æ€xØÃ¶ÓÔ¨¬aåYÖ¨ÜF¦-îSr/DÒSc1EH°TJÇ$’€AÎcöO(PÔ0DU ×ÐÚjOÃ—„‡^‚ˆ¶ˆZ­÷5[–¨Ú0Êq3øµ…Öx®”¨<2 X)"yí`ŠJ R¡µ,ruQ!»À« °“
¹»‚U0L/}Ønôðú—Fµgåu’†NnÊ‡µ íC:õC[‚þ!G¤`‡…,UÎ=¬´óšÇáâ½–×ò|¨W¾UùÅ0r\ÃHÒ›|"breß`!EŒQ®$ž`Ë5U:hûVSd€"œ9äòZæ0ÔÀI¢¡ÂJÓÚœýg¡&"]ë’³5jëÔ¨IRÚŸÔä¢û§““.yƒO@Nj¸“9y4rr±hÖ¢õ”æsWj°ÈËx;"ã â‚<ÑšZ«%²Þ+‹ŠqÈ,ç )Ç´4R*¹A+…ômJãð~ä'_ÔØÊŽÆE¾ÃÏÊUÉâû5Ú&ó¿§*WEŸ8€ÉŠ5ÿ<«”žÏ‡/¿›^Œú¼¨7î†á›H}fœÆlˆú!»¸XÍiFãø
>+Ô7HÄÄŽ£¢h¹š\ÍÓBÄËŒÏÔõ§kuýöÿ„¿±–@ÿúmøé»¥SØuQÎásöEåWóÜŽ6S&^0Îk–«qä}ßôÃ\¨­Û¼v3	—}™1(0¹*ŠzÿüîÃ«CòóQ}ÄŠ©_¯æpÜê&Ö}7•„\=®BbZ=®È¤ªRŸ‹¸lÐ+wýL]Ü™Ã­Üùþ¹'`—ê…ŸwCëºXÚ<Zš÷sÛQWêÐù„÷qƒÇGŸt§çîøc°‡1~ž;,¤Ô¼(£©˜AÚXK…AaÆÜRàQEÀÆ·8†gZ-»àÏ
ü¡k±©²9a°à8z#×ð‡KXÃ!)JI„´"…ÿT¹‚@¢ƒÿÀ1h§Çr'zjgægé»üÙUG-‰†Ç†gM´)á‚®ã¹Ê3æ=¦ŠlñJk(1t2˜3
_dÄcÄJ%¡öA¯rhc®»A¥Ø\ôˆ’ùÇß,…o¬›nò2á{îç×›A	8Û#sŠ%Z‹Íq)×º¾ŠÈ/a®~á(þëŸgên‹¹Ç`–¼ ¼ìþ0€íìÚƒéM¯Ü0–òR×w±°¼ßþóúvº $YÑœv†q°’vÆ´zÕ„ò#‘dY.fÙ+¶^O´ÒQ'‹bY¿Õý!tq›.&²M€oÛLÑM:| õä¨)ïÂLçNM;ŠÅÓÍx£wÕÑ2˜¾RÕ¬= Ì†1ÖJâ 4€–j	™CÐ2Äcau‹'‚À³Ðëð•ƒZ`Ù&-ë`§°uG4çzeˆ®ZØbZ£š†ƒ dÝ ,]É¹@X„°.¡˜G„°ÊMw{™+Xö­¹QïŠw³¿â%[â †Yç Çcec%žaï@D@á%4Ðx¡‰eŒ9‰£á›ãV©¸üh:´¥„Ýx½O»ÞTR*DHòÓ¡‰½Ô ?Y›=Ì¢àXéÑ³<Äáò3C,¾v&ÄE#b	‹lÔ‹‡¼ŠXœSš’§|3).¿ukí^÷F,†Û*]:lïðÐžÝYÚ»1f×9}9éT’I Gl«¡¥ü$T´AŠ“gÙ(YÝZm¿5 õÌ4­&Àê¢jµ„,©	 Òc 1“ÀZ…„’H€L*¡—·CL5%	 ŒJˆ°PšcŠý²²Ö’SÚ|ŒÄ9\©Û©”„V!‹Až”´­AŒÓZÖ1@´T³Î	´Zèd-AëÉ(eƒV®~+°ô„´¾¨±ïZ	  0–}/6i™­€i„vJ!`¬Ò‚+ì°†C‰4‚Ê9/˜Ã:F°6‡ˆ$’2edm€©·óêÈA__úŸ~û)ûÑÙ}S8Eôˆ‰«µµîòÆ¡lÓPÙ—Û¾¹×rÊ¯J92«Â¼ì1òæ†Ó;íÆñçð*g§c5ÈAºL£P~	#©<{ù<{ùý÷Ïç‡ŸÂ¨A ]gÙ»@›åÎe•ÚÅ³Ì'6ÊÂÒ‹¢˜k~²¢Ëqá­ü¬bÜG^øLsº¾Ü¶À Á{¯Ù¶vÝªûEÖp"
d
îÅÉõæû¸G:øð=ÉRM·}ìàÀ§²Õ­|£Ù:dR8]·¡—ÇêƒmoõìÕÛŸþþáÍÛ÷áNµéiÕl‚ ä º½@;m¬”Î8(ä”@ímÐ„hL'ŒÔbÌ"c…W
:·XAi¬ãú¦@hÍCC,~+Áœ
\þ”„‘ZR;ÆYRR»&iÜÖ‘ïCK"Î»Ž	C»§ö€¡Ãºô-&M	j¦ó©ÿv4)ˆ½oº)M Lká¼Ù6M@¤°û­w4hM:(CÖ+9Î1«UÐbÐ	a•TÚ ÄŒ­Œô†¹ÉðU¸¬Ô‘ RêÆ]ø1úu/’LGYîGÃIÙr«Y¯\ Lõïò\³í˜©°ñZµ´Ü³K¹«åØ+“	ÿ·î.ˆó£ÂÆDÝŒn¯ÃnÑÓ˜,»(‰»¸•m6;
 XÅ	šqƒ"´’bÈ «yöaœâÙWN¬Wî§–©l
ÌÀçàüÝ5ü¨éî÷†Deûò·åL¶	øM¯üöS4˜n#×\ãÎÑ·”ÛJ ®ç!›îx9T‚¦EDé›dU«7»½ém k=ý×¿š~½ „C´E³géþøù-ŠZÙ5>V¤×Á¾füLÕøöAP+wªXžpŽð€
)2BvÚIilç„k#òBíé¦`ã‚î‹ k…ýäÜ˜´Z¨H²•„pñè’‹šk!e)®…MÒRïº`è†2xfºCýÚCŸÄÙÖñÀ4QM¬¡êË¹×p6±ÏIÛ¶_AÞ'éT9 7#ýg:ÖNÜµðÂ;¤r”B`­Œž•^Q!…P„ÅÄæ ¦¬¥Õ4~ýkq?+À[á€»WWnûùÆb³I,ë®Os6ù³ê5é&U
°R2AHÍ¡Râ„õ]zQx	Ö€´?²«?ÃCë|äã)Àó+œ½"|jcÀÙêÐó—ÿQ4î}LÐ×ø´ }
%ÚXôb%5\®!v&@=§¤žQ/ÆÞXTiAwí94Ø>=l¯…îmÒ¯l¯F°žo!‘’šdl_´ì}v(urRà>ŠÖ]î'¡}?š)â)jð«(.Šÿ>eQÖƒÅŒºß'_Ú<Skk#;¸Q0ákð=–ô{f4Ìéº¼gaÍ” RÞ¼XpÄBÃ¼"èø@KêQ`
(Ö'£ÈPDý&Oª÷a•ì
Öº;í¬ÉÄ¬ºŸ”øSÞÃ–’ÑîåïVR§UXA	p7ú,ê>ßßfKKW(5¼úÛ‡ï"ÅøúŸ*ð&Ž»ñçX·90ŒÑt2óºŠ„!lÐHòxùamÚ“Ñ•Ê£ðI¬]ÞÄut±
¼%^¯œAü.\o22£Avçò<ní¢Wá·•ç±êu˜Y¼ÉžÆ6‹ T½‡Â%lÐŸÅÉÌ‡±.0šA>OÇ¶œÛU9›bÆ7nC{Ì§x·E“0þl„páìß†£osemÜYùý(@õób…®þM¢ð)\ ¬ÀüÂÃÑ—ÿUòŒñ´ˆØ¹Î>ÜºÜeî«¹¸—gáA¹á¬ ÷bÆWzdÃMÔÌ­oÌÄ)òÑbœÐq¢zýaùŽÅ–_ú“Ûânã]U—(–	«ô‹~÷Ë8¢ÅÍ·À
Y,öW–ájrøD»Û~X´xëL?ŸÜ¿ŽÂ®SË…‹kG2/¬g &Ó¼$áÞÞøìa4Íâ6õê®?è«ñrÚÅ~[lˆg¿ýô2Ã`Wä‘ïT~ê?…E,¶E¹w³[¼<q{ž}¹­^R\#/¯WßÞqBá6ïá­±eƒyÀU“ûh¾Gªåè®äaA‰7å÷'ˆ@TËÒ?˜4WG’Q¾âfþWõ2'0É~&Vdªƒ½­²öÔÕÅ»;üu¦Â©+±ýqHd{~¦·+í^ÔÜv™Ô,º\ä$ø©ðåc>¦§D¯wxýòåGœê„Ø*ƒa>±æûï»öxùÇ?üõÍÇhÚ£ïµlß» ¢üVeí©Uçk˜XæpS÷ëŸrïgé,…Þ^u‚ŽÀÖ-Ž®£žƒd`ã„;ábE`©„–Û•–ˆZj9ÒD)m€	¬JÃ=ó˜ÀíÁw‘bFÖX
é€Ë¤¾‘»ÌVdwÑàšá­â=˜_åù‚×x^\µH©8J	PÅâ?¶¸þ,qäÍóiTÈßqÁÓ9
<™£ ÓÖWuœÂj†±HQG)+]˜ÊI™
Aœwb*»+@¤4:ÄEkeNâå®¸?§iU@ç´tqÛ îG_ºÖ}¡‹¼ -‘ˆf\ÊÀÓ=W*fOw  ýA<•˜Z‹±¦!l&>€” 
#1Ècº)±Vq3é•éëIMn~":üzï†¯ß.UÛûQ¡Çœ!a!£:nÕº› XOõµÝ½PÃÛÑ`òbùœC0Â	#Õâu‚!(1i>åA…2¼’¡‘3VÃŽð‰ 2=âÌzÅfø–kê®ßæÞÒŠÉ‹yl—<¯åÖñÒ*Ÿ´÷@>ƒ'ž_ŠŸDj§kå6C 8Ïƒv*L e	+8’–9Á™U Ï‡*¨¥öÊ"!9pXaÆ.r{]nS¸&·áÂ^‰;†H".kYŸPPxBú‹uö=Šän›ïé¨’{'+ï(¹`|æI–ø1v³èè<Û(YXi‚Âa‚¸¶@
í5AýðZYo%'œ Œj¨ÇBA¢Á¦l€•¼bàYJ»$«ÎÂj°ÕntU±ÛTí5å±í4w‹ëž¥tg ••CBÙjx0C2ü­åôÃ€ÏeÏné>7ê\¸y{	/:JøÓL{y\±Á§/m-ÅEÆ}KËÉ”ít3H+Î[iw|9ç7Zih(EÈ¨~ ò.æèZ¨”Ç@)B<2„­•cQk)FyjÄ&‡ß†¤cJÕ"†¬Zv
!«“-;ërÑÒQ„uðÔ=	ŠPgxZ(r2eé|ádªoÜ°sÄç²úd[£?—š#<²\(§˜wXýaŠ±À€8K˜ãX3¬ "C('A{„(Ã7Vf¯Þýý¯•œ;HËE(B«æ¤Ù0*ŠaíÈL#Hå×Ù›"›¸‹o&ƒ‡«X¦é¦pÏì£‡ß]Q,7ˆîIXºe.ô8xxë‚„8.¸¬Ö«¯Uô§žIòân·‡‰`Q	HOdsu(ƒuC”ÈjB*8)‘"åÔzÅÆê¡vJJL~wžÄ¬ßìþ #;ÔNŸÍdG@BÓ«¾cÄÄ`Å#«v˜ô«'rakí¹–â²–äÖ–t¢±”LaiSB++ÞY¼ß:¹½Ñ®ÞrÝÜä:úÇíZè-Žu;Šî®x]}ðŽcx=|†©f‚Ó":¶+Åqˆ8§B1ôÒA©¬uŽ)MŒxcŠ{S4jbæ(e)@dc¥æÅ9Å‘«Ë	,˜d+5ÁÂsb ZÅ’rNÒl±ë¨ßB‡~,’Ó5³ïQHgGrvÇsîCr.ûû8ì¯Ð ´ÃÃ>ô”â:¸èŸKtÁžÑûF'.u‰nèB´òÉ¸»	vÌ@‚¹bÊ*Êô˜9<öœ8‚‹¡\#)…€@FAH°ÅÄêâmr}?GF´p'ŠµÃI_ò–á
ftw_œ<Äp…|ç¨WEUpýP4ÿ-£Áè&³ÊÝ¹RÂìù]«X»/\+žJl%Odµž*‡ ¹8’p%û	ä©zŽMÂx)Ì)L°Wî•.9¿žR]ºõ[Ýß0DpËRª³yì¢5Moî¶ñRmBmÇ=û^g¥7ë6*qWqÍµA1Í#Õ€hŠq†Z‡ŽS§÷I-±ŽznœDŒs1À ïðE\w×«µD9¤²Y\°¢ê*™¨‰kŽ:‰ë¶•lA`w¶åC`·­}}L ßvØOB³=Kº=Ü§îŒ[t¬<c£ÅRiÚÉ°I¡—@Ñl‘ÆÊeÆ€A'±À20lÉTùBcj0­š5£äÌ¶8òÙ÷±tÿbJ’…ir»¥³\˜hºl1daí\TJ[|œ™±S“RÆÇ*ÑóõÃü·{Ž&îyöNjÆÙ/Eµ#÷?õ¯çÓ[VÆ.B‰|ûnû¢ºG¶ C-â€
  ´ÂÃŽEÐjÐ Ä²
P2ŸrÔ[Î­š¢­?ê“³‚6ÜìþñÂ £/g²K–7‡#¦Òúö#ÿéz«ƒÙbåÆ‰JÉÒÛá9íhúrì|êcçÎOì¼kö¼zpÔzKºÑïQs/Ô¡û¶Êoà¾mÙ¯"ž3Š¤‘œXÌ`Ì	I¡ÔC¡¡ŠÞØLÌ½wÂÏ½UP
ÏP Æ|S¶œû},ö‹×Ø/l¶‹ÂáûEˆCXc¿ˆ0Ö‘ý~Ë^ Gá¿°‹?ýQùo‚•dþû$l%§ô¨²Üv¾ ÇoÐqà‘Óîí8¸ëÓñ`pÒBi[˜óQ÷ÎìORÕüs7³rØƒdo¬¯–y¡µJ[§€!Zq¥‰âÔ	¢³¬¶Â[)wÑWÓ!µå^2dr›¬ÊëßÜöîÝ¸Xƒ¡qYÌ“l0Ý¿(¼Y7(ÓWF“˜h<óóNÇÛ2È¿K)vÑ;ðãgáöâ°¹<|—)SÍéŠ”ïe
ðWÅoïÜx0Ë¨þ<pÏÂÇÖ«|3ÆçFÅÃÇ€üq€Ø¯¸È8LŽ£n™Ø²Hj?¾šÍÕO×Ùóoò»HPÇGeâóÔù×¹¹3¹¿¶.†ßÜöóõíän°w¯»°uÒŒ¥âªA¬€"^‹aL$UyýÜ‹;´ÇZ›ÿúþÇ¨Þ<¹ÉÚÍîO¶[¯ê …çU&nÔ»ò6ÒTøó¶þÍrgóX)¶ê¶cFÑLêr¸cjœÙ}ŠˆãcEª¦;Z AN	x¨ôœhA¬ÄT* 0ÈhÇœÔ¨âØr„™ñ„@å,Ù”…à‚çŠÞ+Íys(æ«) ¨–5`’”ð &@[å9¾àEÀÑ2DãÜñb‡m§^6§Zºmc¥ãh©Ñ>ï“­;˜0©TÌK`gÎé¸÷J!µBÖ„ƒjÂ)È>¥ÞA¨ Ø:¯lBJ›òeY&µùÜ6£MY@h}À(Þ‹l7‹áÏY–³Õ²Ñ™ õhU˜c@xÕà1¢&I˜—©k.
@GŽ™DízeÙ)8Ó“Ÿmy/!{2íáhõøüœ
”$áýòÂËðÚ;I„¥ž+Š´€Lc½ÃJã…‘,pvaƒŒåÎ(­¾ˆÔv"uµ¤ïFzD*”G©–ÜV¨²‰%+T;òÜCÕRìCH×¹Êþ8¼Õ@EeBhÊ0ÃÄi'cVHŽ20ˆ-bFYæ(Ö	—JPH7šÌ_ŽîîÃ+¯ûƒþä¡ABÎ¬skEU@¶ÀªiðÉ(»SŸÊŒŸ‹hœ8—+®z5¿ê9c“ù-Ï®&‹ªÅE²´°ÈÕxá¸Åñ"W~;q\_ÿƒÊåúÐÈz5úÕŠkEŸ’°Û&;f°\àÚ€µÞÇåÇgÌ9^~Ç¬SLC(WvÞ1H ç˜0o”RS¨sÈo%Á9iœqV‹0?•0ßÄ¬)[ñ<¼0¿°ë¶â¼K€Ì©ÅùãðíCMà<Åy¹[VÅøpÿsTNŽ¸±ÑcAZˆÁÊ®„L1Å’‚1ýV8§žÙÑ‰uÒyj÷¦ðö#Ln6Œ”ë>‹UŸ‚	„£UADsºZ„‚*TÏG""Tdµ&–+U[å.;o)­âÙÃ¡û°’:¼-‰÷OgÏñ0‚¸£Ô²]ÝîàµX$—kÏâ¡!*ÆŒ;g­2JçdJ2Eã¡˜…€%±ÇÆX(b’JË‰p“'Å»ñ0È£Wñž²Ýç°«³ÿ«û Ã²·)Ù*‹Žµ\•L~	#dŸÊ¡Ë¶º4ÚÎž@è~ŠúáÝ›«˜§2Ö}SfRJÇIØÕnÞïèežý8–œÎ?MFe±ç¿òâýLÔ½X>õmõèJ½Á$l”lK°"ØbÞ”ª\#ñ@-A¬…IõŠ]õ…‚Þ?äw—½~îGÃS–z^»ïýÝ p[Á6ŸÇv‰ÖøÂo/­hNûq‚&—í¢+õ«ß|õûÇ]qœ}>î
ßmîÅ:õZ­Óy†Þ|Gpæk ¡ô²Baˆp„ÖÀ:’Äc0GbÆ˜áY  òTF¡·X{¨­¥À‚@¤­sœ\`èè0´ZPZPÑ(IY­K
!¬VN³¤RkùÄÕ†¾-(êäÀq,(ÚYy§#%F%5cR÷®£î6!Ô78äµáñ"—ö<E•]ÚÄ´7]‰hÌ…'Ô#é- [ƒ T"æ6Êi!­7N!d™öT@jA›lø›kãÅ{íbÝ©UÄ[÷wYÖÇ»ª=£aq‘ˆOÛ½]êÎàTI›VAÀªÇ$
ŸÂeÄ>&¥ìWLòÅéÑ¶¬O(\¿¸Ùêmî‹>HÒ!X?Í
¿áM5E)j3ú²RÛü:ÉC‡5Ó×jìf4vG½€û:«£^!PäažŽzûIxŸ•Í;^äT…	‹ÖqÒ_yq?P“(Lz÷AW&ìèCïåšØnk¹#[u(vX«³ÓªÏ|¤tjz‡·yEtúÏÅ“.¯7¾77nx}ÔËâë#Ð™T­|Bcy &ÀC1 ûÀ_ “‚9,’Îe°— è–˜zâÓ’a#¹Väù…Ðt#4lH¥	Fk„‘BC“Œ¼Í„¦•“ÁSr-8¥¡]êSPšÊõ…Ò\(Í“¡4ÜËk”&ÙX´ÆmZõ¬“œV]WÙN«Îk´§]Yê3à?_û¾k†svÃ¾—ûâ#Ng>”9ÏÀ±A PLøÑjhõÜa€¸ò˜k)Þ"ˆvBÃ8ölóy[ÉÈXì	SÔ],~ ^.P¼?Ýeý»¸2©ÙLŠ~˜—ÙþM?‚Ì„…«<ž<Ø©qÙ«?ÞüTð<ûrÛ7·&¸ì¿Þ½z=ãJ…#fyùIxÁ™R“9µªMHéÑtRp­bV×Ù‡ÛÙð³ƒ‘«ÀGF_òìa4g$÷jœ»@Å–S(xYÜeä•š¨ò.Ë“xõã–‹œí¦ë°R·S}Ým eàc{\9v/>B«m8ï Ô­LˆDWò*+ŸÉRŽ<Â{åæíÍ¶íéËí}ìÑÙðÔp÷{|H:Y…™lOå¸I¾l1-Iz—‘‹|ch|O9±´Ë~V™ƒ %=mð>÷ xÎ=gÌDŠSFp*m€d ½ÅÖ£‘L1ë ÒQ†ÇÒ".òÔ!…€5HÙk˜ÈX*„5Haá³”£‹¡ú¥˜ï,ý8 B:” >¨ìÌ<ÜT+IÍ:Ì¤%à=Ësé¯“IøÞÑnêLÌÏJ»•¡÷Ìs"\\!l@ $ÒD;”Á9
IØÚÒsä!â&1ÇØ’ðÍ&]æC¸€w3÷ÿUÊžAŠOÕb%
ÇªaöKïõXÝõþZÔ/F}Ù8j€  ãþàá*úRmh^ŽÃ+:K3uyÀï¸B[
ú·õ½-^A$×ã‹P°rˆ±dUªX¡O¦Ø|“ëjVý¤gØ¨[4Þü¾H€ÃŸQf‹Él“ÚÞúÝƒ¦è—R¨'ùþö·Ižcá¿mªËl€‘ÎG7Ù¾SV—ñí‡†eD«•okC±Rõ¥=0K@Å°×JH”±Z%„ï¡AP(Ë‘	Ÿ{
¨Ò¿ÇDª çFÁ&àfí…YY8›¯dl%…`Bji8ã€4%Æ®YlŸø˜òD-ÔE9>jíPdöG­DÕãO_)šÐS€±˜+ùùhØõIÊÅébKãÞ æ¬HX¹uXpf±Dà15Vàð©UPK™‚Ú"…úm,ö_ïý%ô¸(‡J¹Ùf/·d ~ó×Ÿ~xÿ¡Þ1FµiëÆnX„zO‡…åp¤ÿáÌäª(/Œwu3œSy€³hÑË'ã©™Ó¹*{åÅ<žg£éä¾´íÝe*/'\>»XL¬,«ž_Ñ2…Q¯¹A¦Ã£q3£8ÒÕË0Ûðjä‹{ù²ãìÚÇ…Ð™/Z—uÞ_Ôv×ÜkµØÁ	àŠÙc!d59e)&¿ù¼zån©ç$tæT¾ÊÍ·º·}°þÊó¹l·Ä5‹”]c¦uû@µÎÈ#¹	QÒ‘ºc
T;ÂÜ1& rŒ¸ e<—Sn½k-$å&=’˜á¡eÂ(4¼`Ê·‚)ëöÃY0—hS ¼Š)¥$;i´'È|ò¨ÂÚk]GG•gG{ Ê“¨YyŽ'F~F¦kFxgOL´,‡@µ&zƒ¤Öp+„ ; %–€(§Ñá;‡!±–F­2iÏÃ–nR[þ¸þu|“ýa¶¼·lñáÎí¶Á¥õ>ný×R|lÊ€T¢CëzŒ<¥ U‰>e4%UËl-zÅï‰'˜¬¥³„n¸óä¡êàÒ?›ÉöhöÆ÷qÇˆi)[ºŒ\+ö¾×qþ1ëÆ¯f`9–LMOpÒYªIà=w^y/0ŒôJŒÆIë‰5ŽAK‡ÂÂöˆhE‘$Ô¸±üg–ªxMªÒæ„ÚAªÊ©ÊªÖ6 ‚&QÝÙògÉ<r$¹Š:XSŽ*Wwæé,Wë/u’JÂÇªé—%ïš†µúPË„RÀj¦Q ¥*WÇ‘\há¸´XkI)	DÎ`ÆdV36V ù0žºá¢ÙOáÆ²·êa4Ž­µcÓ¼žDjêl4~äÓûûÑx’)û9ævµÙ`>l´|ü×Ocç~s±ÅõU;dfB	#.°ó©õŠ©•¾¸Ñ´RúW)ÐæªâŒ{ÜTãbúñ”û>ZnG;cbƒ¢\ú‚!²Ü+gÍ ‚.„¤já@aPb6j&ùÊ×"›ké([ø$ÿýå99ïƒ +«°7 @ÖÁ]¶˜HªFµ,QÝEî?ÔgÕ‹·^ |‹ýÇlöÂ[5ØÖ0ÜÈ`Wgq'¯_m¸“CßñÝt !~a[# ”Xe4@†/¡daÂx³Jn|ø…-qñ*ÌÃ7šc§ÆnÊƒýSyGÙ»háïºeÓùÈ^}5nÐ{?y¸Þ«¯Ñè›‚¯;X±|Ï:Ù«[7vQt{oÜÐû¦xÃfÚeÓèÿ¤´y|^÷r€ÂÆ=tÎF|+L'E&í8§ó¶bUØ’¹ý0«É³	¢×{iÂ¶X™ )wXkqû¸böþÞ0öÓ¢¶aö¶¨m­öåTRÅ-‡·*ì­[×¯È]x{ƒÑÍMØ»Ûäîä³V¹;¹t¾÷‡£àµ‹ìˆ¤e–:ë”¤R&%7Ø)êU ÂR
%¥C*æYuÑÄ+<+]üÂÇág€†_ØFf<>õË2><Á°eãýÅåÃá6Y½XŠlä},À8çÃq¤x"8½sõ!Çe¶—óHžZÎýEå6'QåqÆªž ‚sÂ‰Í¬–ÂWêÉ\Tz\V””¤j,'Ö+7M´²ŸOôWg;qÃÝïoÏ]ÎñŠ™l°ÍïõöÓÌÄ]FNÈí]is’þôî·7¿|ˆÁ•˜à½ì7Æ|Ìw™kíž½~ùò#Þ“ÜÔ_ïJJ~Ó%?Ü„¿©MK_ƒÔÖÓ\'<–E³øP^ÿýý_?‚€a;—¤¡ºFz‰¤Ð¾ÃE™¯7ßõ4‡yŽC¤FÏ~yÿ>l‘]KQo½+[ý}ÿëöà®Ç~NôÍ´%ý¥;qÁX;È,†Î' ÀˆHl)š‹¨5"Ï±`ÌÝ“0%˜! (•Î;(ÀvÓÁô…¸¤¹F\è†òJ¬jˆŒr\s8b4ðÊ”Ãíèþ3®‡ºHÑ>ÊQ©ËÎ“˜ÎÔ%1Ôc‡9äQN…q¤M¬Ótë©MZÏ
ÃId•ê¤öYá<©ÝL£mû:êÜ9’¡=:‹VYŽ˜"¡BUÚµžÓ $ÔHÑS-C¡÷Vm×¨#xº9ˆSâ8†;lœ¦h"’ÖyÏ½R–!@ˆç&ð$ @ÌÛ¶K¥æÛâƒJž¡þ]ÁsF>ûY™ñèÎÙ¾zñƒi—ÅÓÊ¿Eù<ÚtKž¡Ê:e•sÍR¸Æ“J5«[<¯žs?v“Âú^Nà*áê¥«÷ç€Õ£i^5Ñ™~m	¸ýñí»%xQÛ,[lô°î#x<Oif`’ˆ•„”J²â]¸ÌÇ¿•Í¦Ö+¶dÛ0¢È¿®ÁÓÉÜx·û[ã)mŸb>•í~Ùbb×iD†.î0®…Çsö>¦Mi`îr”`žy|ãÇ8&j½qá‰¥Xò‰5ßŸ0éJÃg/ÿøã‡¿¾ùwÚAš;]ËÝŠÛþãðˆH·^×h×Šmê¸kšÇô=¼ygqInëL]"iD4T:O¥‘ž@4°Sn„†(C$·ÐÅ„DjMŒ”ÚIK7•¢½P—G§.d•ºD6ÓH]¸«¼„qQsá%ÉÞ&0oáÄûXä¥ó9×qÈK'¿­#“—ñjû‘—'²vJsÒ’Õ´³I×€±Ê`/W…ñö=*œf¾3´î]e8ûtŽDg¯þ‰s?‰ßúÑ871›pgë¿–Ý8’Œ#G´>a*¨÷c«)¥È,©×Š¸€©0\jÏPTBÍ‘›Â„ÞVPL•üúÇ˜+9´ÉÈŒ[iN±¥÷úë0LO)Ïª”JSæ0ËFÃA`Ä‹JË?¼{“gÓâ›k_¿hÖëõ²»˜iz8Š¥Ižg¯G£›û÷|>@~½™,8‹á#*¯wï£ô›u\t{^­[•g~:d*šÛñhiÔìŒîéÖn†ß¬éÝxT$x±ÜW[Ø«l‰ƒæp§@„Ö
ÀðÕ²DC„’j-3ë•›·¥¡ç`'m§2ô4ÜëÞÕ 8êPe ˜È.Ó(L¶˜hái?pÁPdàiwº8™O»Ý;ŠvãB²öpÊÄã…½à¯T– Jl]¤Ü(f6—‘šNnÚÝCØûÔŸ¤´,ç›b¢)ÜIxb_ï)VÁE³xhøÇÏoQ´ð\ã]û²©;ZIŽƒe7R­ö¦îdqÍ‰…Xc‰µŽª¥8'ykÇ¢€ûm¬8ÑNPÆ±ó@ ƒÈlJ2{![Oˆl­ªqÔ|ªFÅ+ÙP„kd+l,RÎÕÈ#86=iºE@û—#Ò­Ý6©®tëbŽ:œwÓ‚Ž%O±ÆËR{Ê‰jIÙŽìwµBâ»­³¹ÄŽKZ—Ø¡ÊïR»Tˆ^ª!°Êøû,ÉYÛö+°so–ô^­®¹úùñMq˜)†„`-”:ƒ,á*¦9C”k¨œUX!è3Ô8-½wÖè@-Ã›Rmn,~>#+›‹Ÿ»¬¾$ë¥Ð‹ªç'«E¹Z–A¯&–ÁÊÓ|9þÓ"l¬c”0AD=ñ%•€ÄÌ™ËÔ—S™âŠ^Y÷‹¬+i£ˆö§‰•¥?8Ãª”L?¤½¬VB¹¸PÊØûÓ»Vµ¹Ol-ÜºLKž•V™zÆ°¾Û´p“lµáT†›±¯ƒW2³­Ãáë´T¡l‰k³$kij4mëœÃ6 ©Û~N–v­)J\Ó’Ý¤ßUÁ!wÜ\Íz~LÊr
“–à”"©d^Cå0BØ™ €H«P(­¥0Š{cÆp¢('È‡¸–£–5¨MV¦èí´â U–Zá×‚´ d+Si¹ØšZÒ–ùTND[iwzz´å„V·¹ð—?éOncÔ{7s›g‡âíxÒÄ#î%" aŒF€WZÃÕá3(0áXC­÷Æ ËƒÈkL6ù~Wâ"{xˆ4¢¼Ãâ l”½{ùs¦¦¶?ÊJ`Øâóýv±:³ºwoÿ}y8W=¤»wã¸ôg)Æ^^r4¼Š—ÌUL87K>·ü6HÏxÜ–å·£éÀÆsF7²±úIø5ŒêÂÛ©	­‹C¹ ¡²/};¹.íË›)ÎŸ¹›ë°}F(…;…¬hó„6{‚ùw1?]QeüÙÍ:ÿsª¢ïúQ½ÌïÓ›~áT~=ýôb¹ñ^üöê‡~µNÑÕ„Ðl¨CÉÑJjPíªÉê0â	Îä³ÙÅ*ò½ro'~ž|‚†{ßß­œtHB0›ÈŽ2÷hÇ€iŸ}(Ü9Em@žt­¹+öÀ ,¥ ¢ NÐX
‚Â?0¨ÆÐai=·1/‡Ø*A± t0Ðq¸)!Þ{¾IìY¯åH7„a³XA°ž)ÇP¨
ö0štô°&Óõ÷ú4¢O‡ˆì£¢ÏN=¶+ú<	ç‘½`èHGÏÎuÕPÐ2çO«	5à˜[¬$bK™s1$\ZE™
JŽ['€ñÜƒ‰´Zí¡èõ¯…DoC&¹è}X‚lÖûU]gƒÏ\‹XW¯LiÍ½2•ç3kqé>8x(sf Q{œ†çt}uõÙ‡±Š‹ªôÀ…éŒ²7a¬Ù/Yö}ör1ÙöèeoûùdöK–ýGö×0¥qå³^öÞU¿?Oœ­~/SôZýª—ý<LúÕþ÷ÔM]e´Ã›Ïígu¿¼f1Ôò“ÅÌª_Ìîn2ÏF(ZÔ>‹c-îh¥õÚGÍÿ£¼‹xÉ«ˆö?ŒÇê!¶x^ü8-néyXÙ¡™ŽÇáM{Û~r¶l±ü4¬Âóìo*¿?\ÅÂˆå'óUªüV|WèÝ¸?PŸ]íÃØ¹b øCÑ¸øa1P<X|¾Ïæ»h&´Š£*ãÞ˜±™«•îLª¸Ê†¼ÎÞ3eƒlÂU²ÜqàJçE…ŒÅfUçÌÀÏŠ“ºÂ‘wýC÷¥òvÄ]üÃ8FL§Ï‹N?¼{³˜øSÃYÁŽI ÎÏ®ÈØ+ÞŠÏ}÷%~å¼ï›~<gÉ‹š ƒ›¸t·wùó,/®ÿ<0©^xÎå%Õ ‹AíCë¾ÎÞÀ»é¤xgú³=gÖÝØ+	`V:ò.Þç(‹Â¬ß.Þö/ájWÔ~ý]ÔZ®ûAÿ“+²Ý×ßû—W3É½ˆÿ=<ªALžX,ßüæØ¢k‘hq:.Èlhv3DçqNoÞÎýÂGÖjúa	H²ºÃ	„‘xž³ô†Œ°”ðõ0¯^‰%=ø4Mº®¯ÝéÞü.IoÏïœÛNÁšq}Ëpiv…ÖÃ†Åµ`’ýr>rJã³2A¬“¾tóCwÚÇ±¥1ÍsR
Ç‘%–Yæ*÷35˜áÕ…$„l:´¿Ð¾í»Ð¾í»Ð¾.´®Ñ>Ô\ÊI PÝÐAÖh@H&Eá¯’¡'àªsNÄOv0ì‡øí4éu'~‡-0zÆ)ŸÏ2(Å}íÇºcãQÂ3ìVþÀ 
ÁN*H-'
AáöŠ"Š°’Jr	¸ô$PF‘Ò<ÐJ$BÌ,7F+¿.ngvªTî_Æêþ>k5Ç6—½*Ú¦±È®Ã^_½™dwêS,_™TÞ7™wª Œ}ËÖê³ê
*Àæõ/¿þüêD)ò¶Ë|o4WR`(<?\–ðQ,9ß\Ø” VpEPˆk°"8`	¥öÊyõÊí×²Ô“s m¸×ý…à.Àg²Ã?±Ql11`£ÃÈ‡3+,‡Û‘0öxÙZŽb®%wïŸ ½.¤g•—÷¼ÌNMŒ¢E¸HgNá Ó
K@–º„,tÄjJÄYê€hôÒ H,°Š3âµvXa»ñÀñÂ)NË)ð:§hvJádíˆBP!@S˜t@±Ž³§÷KyÚ¬¢Û9ÅYÅîxŠ®¬â°:k…^´O6räì$'Ò'J³û§Ï—;,Ô©óíž¥¡¤?él&Al!fÚFÀ2À FØ
€ÓHá”dLƒÂ`j)“pGH4!€J-1U›Ó^6ÉÝúñ€mü“Û‘Ô$²“ùyÙ—þä69Œ}¶Ó›°^%¹‰IÓ"yžÝ‚’¥^ûjq|QLbìzñÉ«á$Ìgø©à5›&ö<t`ô%zö>Œ¦‘þÄ6Í$‚,`lÕLóÉè®¸l-·?,ŽæFý«bð¹Ýÿ¨ž¼³U»ÿÜNõµÝ½Ø@”$ÂHRVÄ	Æ›9("…©¥Ê”!ŒV«(…O¨H©À'Ù+wuË´!O*—ûj\±ˆù¢Mk7¾7i¢¸mEt‚ð‹<Û÷~gö®ÉzÕ,¶—è
ÒzÜº…e/JeÆ÷“QAxvÙbjMŸýúîÕ/ïß¿ýÃÿv:Lx9c?²½Y|½?Þ«q^z1ïH›šž²µ–ó+Õ8ÓØi—Q¢±Ó®êÑvOìgy>Hz¶Ëv­ì1‹ÁÃ§œm &-<}:“G½ÓÄ+KgÆjìÚ{`“Ø8îScÁœ…Á¨@¬SÂ^ÈÉ7MNÄ9™›ÖrÑ’u—0§5—iÒáÐF·4ã\èIž´Ír.ôd·ÃBGzrXÓO|¤©ÖÛKÚ sÞ’xÁUs¼œ¤ÍD#Õ¸³‘q¤U`š´1¨U˜EëÙiêñ#OŠœ&{XPH7’b™¤&À	5P3ÁSØ2,€ÅÚX®‘ÖÔjB-rÒ	hJ 0éMÝt(ÔŸÔ•c‚û”£X‚’w?ÍzæU|æ$å&2€"kýâôçÑœ—q‹«a\ÿ•ÊÎ¤ÙÕ¢ÀÉJL1•„WƒŠ#mHÉ6Ÿ[‰ä›OgÚ|¿À{Ðág>™€Ûðï4ÙØÐeðµÂ,çP'ºnsé’kÅ?²ƒ¥§1qSXü„±’ügŽâærÿ”¶á3¥û[wÞê¯R‚{³ë.Væ‰xelBàV†‚Ž¬Á1üÇS4ÔÀ`C=˜„/T\b1ãpá¨
¢˜ø·Ä`žŒÁP±‚Á¡;®žð hŠE3&=—ÿóCaŽÎ…Stê½PøIä÷XÂqu= ÇÉõXL{ãò™ÅJ²ÙV—Ï³ô<|Ž%éÛ(Îp¶<ð:æó,_HÖ6÷6¶È $F VQÔd aŒQ„bM_˜Ã £-6Î(€µäžmÀìÀùúmö{!¸{¿¸éd¬Ùýü^MÌmšãd\Á‡¬õ%,ô†³Ñíbtõ³qÆWjÔ8tÞd¿Þ»a˜RŒq4óL»Éç†Ù]ŒÝãÏÆËcè¡Š)Éza>±Aô¼<²eÅÜþËïo~|óÃ‹åŽhö¡¤˜GUJŠIx|¸‘HÌyÝ3 "9¬ Ôt”bzÓê{®ÇZéß?¿ùð„Pí6÷|Æ:Dú½~;ßØIéÂ¤›$éQ±u¼mªùÎq÷2›ÛAÂIú¬QÚÑø‘”µ¸ëûƒ¹l·ýñ¿ýç71/f¯püî°À°KŸ; 4(BdÔ('Ü!)¤gÞ &•!B€°#Þ#¨uNyO¹ÅZ3 Ô	,/Ðð¨Ð@Ö 4C ®h™ÄAÃ¬`“dy®Û
ÒõÂGA‡ÎaàG@Þ¡û
:$ÓûcÁÄÝñ$0‘xó«x‘vîxd•áè Ò‹~-]Ê I0RjÊ„óÖcm-ópˆ©ˆJå Ì c´?BSÈ¬p†»MDÑSÇn¬òS®Ü®*?+k³(õS˜õh4‰Wî³É¸o>Cÿìrõ<ûrÛpòE'ùÕdTJÚLÝÄâ@“…U±€©òµ˜2dvæ7•îC‹æÑÕgä¯ú“j]¡gjhŸ™ÜŸôƒP~x^V«Ž[$Z.‚ˆ­–p±»ï®³7>‹~Fjì®ââ,ËE	í Œbå¢ÁC1çå—7§OÔÏÈhªŽƒ(Yq0
D¥V„(|SLœ+›â¢ìt3D:ÔZYùCcTeè½´š&+T­Q¼ØV“V9ôþöÏÍeˆi—Ú‚'ÐD8 Nñø2#Ly 	@­àDŽ™uÌ(.A@k=ñœKÃ-¡T3¥B{Á?3~°TEQ,Ž…(AÀù#HW…çO‡ £z@í´÷ÂŠè(‚Nr¡µB	€õ@Ž‰ÓI£¥Ü* äV`¦umÑ¨qÄÚ¢qü³”Æ¦²y(ZI%…@Å^äð	2¥ÉrÅ/l¾½,F1Ž´ƒqêÕûƒKáå ‡fðõmrœQ=ç»ÀÓzŸnÇ‡s}Ô£Ìù(Ûc}äãiyîf°žÓªvî&±}À‡Ïð£¹Û1ZjmÖ0Úvg\œ<±¯;¦´-®¶RZôÞw¬Y.ù	û¾zý6!”5±Ñ«÷á!¾ü9µ-J8}ýö„“ãVÇÌåYBÃ? \y|Üü8¶ŸÅ%‚P8ÚØñ<âà_6vùæÀ‹`åÀ$~´0f´EÈ·Ö%‘¼Æ‹ËÍ¶÷o4áÝ?Ê¸Gvq[\>„•/®5Òùhà&[¤jÛ§ðÿCÿoíVjÓ>´j{»¨ñÒ:Âœ7€áŠ/€Ô:§‡Ñi‰Ý šd õŒ…ß<D›<4.ÊmWåvÝo“ÏEPn1ZWnc8}M¹•éöÆ‹©qõ¶CRÃS¨·4/žL½=àœO¦ÞzÎ§Tob‚¾¨·õ¶¦Þ&zWµm]UxÛtÚ u»
œÜ¼‹S]E)NìQ×Ž·‡¬ÄËîqÎµÖ´ãcŒ½ÐŽ3ø×£]ÑŽ÷sž¼hÇíøµãðÖŸüØ×'%À@2sa(¿ k“[B%¢
Ê2Þ

0J ($wJnª;6t–Oïc6¹D¸|Š:}e9»XXr°(ùWW” (ÎS¿Å©‡·ñ•”ýAáEUåVÈªmØB—SÛ.¹únavàNF˜fÎO;Y<â³³Æï”Ðê@åðníw¥=ÖéKJí¡c¦Ã­Ð‘”D70 á"¿Á‘²Ãv‰%,pt²¥QüûÑ}À2Tƒ÷5‰òñÚîî\l€¢{)
¯yÒ@ N¾È¥‘ˆ Gv *îŒ¦”aµñšpcÝ%tÐhÇ6B0HÒØ	b Ó
ÐH’Ã
)à¬î¾%—¨JX ]])ÀÅ¶J˜ímÛÉ$`§Õ¢¥ýèølàQB»™”NØxDÃR«R?§M#»Ê	v$Ù9'Ø'LôÉrƒh¶;¹u€yd¥GYb¢Dû@	Cá#€ÀðÀ¬1) 	KÉ8ì4xS¢º·¯Þ·ç…5ûÿƒèÿ¶`Å•Î–"ˆT+Ö“ÒHXY…"HÂ’rÒ-öÒÅLÐÉLÀ»ä¥	¯ÒÎsš4CÁQü—›âI¸âU¶‰ÍV÷ÌìG±'<=e¾ÅÀüño·ÖŽ3Ï¾x‹}(Ÿ"Ì×± Ç˜†‘Ð1QÚºXðÌì¡ãVIë0ÅÌz!€4g=‡ÀÛM¹è.°\À2©š;«ù€ â¨†Ë	‘T¦¥˜/Ê{24CÔ>¶4ïTßOä¡q
°>’W°f«XqÆæ„£Xž®ÞýaüëÉUk$¢E]”ñÞbH9rŠ „’Xk Ðžï4ä¡;±Š+ ŒVB8¢ÄFÿ£„Næ¥ÿW+ÿã|Q<ùbLi]»¦€aZµÀSÀ[Áø×‹zÝ	ÃA—Øé]›ªZ'éÔ)!‚‹]pvÑg§S|ÿ€0á4û÷u’Ðì›>õ?Å‰þÓ°ÂO ˆ%œ!D´	Øì¤¡Ú› Ó`l(òžIbXâ ‡
ÇüŽ¦0ÌS~ñ žž›¹’“Š	uÂJn^!M>G_ñ‹*žãbÄ’`<Ao§·Šw8>°?¡3÷9Â§6ŸCýŸãHÿqNéŸ–±`¼/ƒAN®µkBZaç
"j•DH‡Ä0‰æÊ(è4B
®#Àn =›,ï³¼ú­1Ö¯Ÿ'bý—ÑøS>+ °ÌåžÐÏ“Ç9]A~ˆŽUÜ–VxÌ‘HVßË½uÑà;e¢ìàGŸœ$§úxÎ7ùÊ·}¬|~ª_3œ@ûƒñœUX«Cg„À”K¤ÐŠ"ã"„Äñ˜ËŸ:D,æÊûMYE.`°ëžR›Žd%‘õt!PZ¨‚’bRC{\4Ád8€ü¥Ú‡‡Ÿ
žrv'˜g©<Ä*ÂŸtËò‘•Tlqû¤m
*&À†#…Â2 QXòJ9ÄÈ)§­5HÃ¸ÑF8ç Œr¬ÚTóù‡ì“{Ð#5¶Y™£b:.åÙ`Wy°yªÙŠ¬g RÙë_~ýùÕ¢t™‰ÿN£€¼ÚpÙh‚yóðVãþh“çÛ7Éãª©‰³Ùd´¡óñ '"Oþ¥Þ¡~´ADA6Ï»ºÉÖÊÑ­VŽf˜6 9‡dÅ @_TOÃ³D<ÅKwöLzå†ë‘V:ÈÓ+Ýx»û‚f¶ÔE*™ÔžmXÕv7qâóýÜ‹¢z ®ÃU>MF÷»ÄîìÆw¤×i”9»ÆÜÆû÷;
ëÄ¦Ó~­ñéxb*žüvËU_¿Â%T¶N>T“O‹RÜ;ðKõÇ£y]åÕ¬hŸ¢ÂÙOá­HÐŒí§÷ý¯zêU¥wt¨ÔÙÞÅ*®w4])l½£õ$íÞR¢¢ïêüa×ÑïJó]'¿÷AÄŒwBÑ¶Ü‰’¿~¨Ï}7.8¶-ÈÌ‹Â·«*ÓM–n²ÍÅ_ãk	\¼²2äê?©¹…ï¾áV(â.ƒÂ!H"±–aœTL:©#ÚY¢”á
ÆˆðRY`D-VÀAãÙ’ÚQŠ…’ø($‘¬’DJå’×Ó½0Ì%©“DÛt$‰é¶‰MœÑDÞ¶`Ç7G7(ý¡‰©ˆ:_\ëunÄ1ñ¶ª2±Ë:•lÓ±•ÕgA.Ó;¬²ÌÔžº™l“ªðÎÔ>+4µÛ¤åB´Š×_!›Éž	uÖ™êC°N?—V NHS:KôÁÓf¨AŽ'ÝL˜ Ü	ŸÝnIN5ÆÚh@t€°À È9ÃTiè5ÂÌÚ;§0T"Pi¨aøÀ`)wLJº‘œ¾þµxk2PÇUÊLb‚û¢úæè÷pÏÙo¯Þˆ§T[ÂÊõ)‹ÎÇ,òâÊ5ú’¯$ÌéòëÃÇJ£ƒ~>É~ÿ9Ÿ‘Y›é‡@\g74îyÁeCë@^gÇnÃa¸—0ôÕ½‡4‰,wèœ-Hmì“ÓzÿîÍËW/~ÿåe¥Cü:Ö=ú	Ü@éëb÷Çæ/
þþ¢²­™®¤˜Vª(>B42]	ðJL¢^ÍÚÏÈÂQp+Ñ-æÕ+vn?Ž)´RéáÅÛye†ãžÆ­ßõþŽ™’µ¯('²n)ÛL±Ov8Åª¶løìõ¯¿¿ùíÃGp½Ûj´¡ÛÎ¸¦n¸k·•¡š»íL™ÝÔt[R¹·½Ž>ÏÂHY°¢ÄÖÇåˆHæò(xÂøA<Ü‡I“„˜¦¯wƒYBÎÊë§‘þ¤šçö @R-±¡À:à\!m­”ÇCE=Ü#Ë€CC£”+cp)‘¦èB€ž<l qØH€±&5D‘²J€(Â8%e
<‚™ïÛ @œÚa{ëN’M&¸Ð>½á½ñž½Ñ^½×Œ-éÒ>½×îû`äéMnu^u–¹/W)WâkÜ+Õ”6'aG¶¢Í±îþv4¡nF©ð4âv'R¸—ô&QF
A™CBá,´ˆ@",æFz cÌ9¨‘à†¤4GÄš¤ìm…ŠE—ç‘ˆÙ~`j™p“c•o'aåŠ4°0X”v‘u•œj…•—»šŸŒ®\ó:«Ž=ÉÝÀÇKG“xû÷7Õáž_îïGyI¼Ê>×Ù‡[7vE|plíÇ£@4‡6_¸…ÏÇžMùùÕíèK€þñó,ŸšÛLåÙÍä“º+Ú»¯êî~àŽz&ûåË—ëÙÜ#[Ûz+hí$–KN	k¤g^Ð‚êQ,GˆÑª‰Šq&Ò|ÅËEë•;¹¥•ªdh‘.~|B.ãM·½/GcœwH2›Ê6.µIÌì2ÅRÕqèÏ¦YË1¤ ”]¶­µöÏ‚èýîo¿~ø}¤wZt¶öóË‡W¿ýòÃÛ“œË†Ù¸¯}Ÿt×¾ãíþqïnŠß1Ø²]¼õÿz÷êõ‡¿ÿö×_?²Æ·õž	‚XùdÝçKÍ`Rºõó³w˜;®¬™Òíè4Íu¢G^ŠA¬FÙÂþøù-Šôêïš|S7¶ó–›zñk¼µW¹¯ŽÃ#‘8ƒLµëíÃ!9À8 X%(`SÁÂÏÔPÏ0ŠÜPâˆ¸ÇšBk¬DBç­ÓàÂ!¿%É×8$n6ñA"%[9åd"Æ`-ë#¤D}4‘©tCß…EÖY$tþÜXäcß>,2Õî²Nï:w\á•fA/OèýWc™ÉŽpÝLl]a…­;¬ÐŽ¤÷­ÒÑÄù.xéY¹ÏÚTX%˜Ç°úm£œ{³T›õ&šÐù˜<®=œƒÑÑQÇ(ap-‚&:ólÉD­E„Éð/Þ9ýQh”„D1œƒX  Ha$PN§• šÁMGÌs&º`†ó£Ú@Û&y6òñ`·ÿn´%ÁÄÛrIV¨è®ñ®³7“y&‹<‹¾ñT9~•‡‹L*?šÑtŽ‘Ã›øáÈU|­:,\è³V„/"Š„ÝÄŸ8N>…yÄq¶/®o'wƒ­$R‚UÉDsHFA½¨ÇK
$¬†„HÊ˜Lb#Û+¶_=’£Üû‡|âî²WÃÏý t8,î²vïû2HDhŸÇ0Îcûn³tØ6^š¯\ûq£(%àXy$Y[Æi%ÄQ¬tØAµÚF¶¶p»ÙéÀÅq¬7ÒA$àoS²Aî°V¸(Zì¢G¶Öå7ÓI§˜Ôòú—ü´­yÿJ0ö–mžýŸ0îG¸Ë;5™Aå…|¶óàËVúQGûáRý¡õbÅ¡u{—Al déNÝ)™‘Î)G#N\`^‡In‰Òp7
*‡¥±XÄ¥†c&¨!”Œ6•G¾P²SS2¸NÉD3%ß¯˜õ$Å‚Öê-RÉ’¢t×hÉ#¸î}S¤ãö)ÅŽFÊvzïu$e‡Œ=1;;¦¯Ù
_;®‹Ú:ƒ;+óÖ‚Ü«ë\÷¥ºÎU`b—oÛìö¯6vØuÊx@_Â.Ì±E¥îS0È–´çR\^#:â¼¥9/pG4ˆ	,5Ps"”üÑHè¨p[ Å.ôÕŽ(ˆµÞrkm ;¸c	ñPùuDá‚pý{Hß8Ÿé°ªPá…Úšà%°ÇAm<——Ãå›Ç{ži„ÃZÕš^ýðîÍóY˜0î4w~:(NyïÔðaÎ°òY0Jµ`Yúq9je´#GT.³ÑnJ?+€¤ŒVÝ
—”°	^9!¬ÔH
XËñB&¥Ì{qûõx+sÞ‘9â§’Û¥ò,ª7»w¬‚¨C!’›ÆÂšÛeÁæ±RLwmÇŒ2VîO•i×»S÷÷Q³ë™ðÓ–+7´îYÈ¤‰ùšÒ;Þ[¿¥ñÍhtžúAü«aÞóAƒÍw€Îèî£Œ<füp?I°½˜é}ž2\hÖ¿¯jBÛ³(a³¤õ	‹àÇÎEhKqRÍsußÿøi¬iÂ]öí°¸üŽë/šEÞôæÇ_¥Ùµýä1\,NbÇ¹îß ëL‚ý°»×h‚ïç'ZlÉQ‚•v¾¸;šÌ]’©õN¢1Sö?îQ‚‡ê½ºŸeÙÑnxYÑnÇL+Ÿ½ûå5d;ýœÃEµÛl²_kc§Ýy&}_ø¼ÐÄfqSxóÓOw'x<ëötü¥™)¦I¸qt—Ö5…#Õ`Ý]åàH1 ¬¡VûÀ^&Ô8¬XtTuÖ2¨”LrÅ±Ö.ÆE	 ´ÇÞBàÇ•ã<T¾ªrlŠdÂýqµæ’V«zÚ’R©¦r¤›«/JG©tØÁ@}x¥c‡iº“Òq@³ô7©}¤fj\¨!©æúH‹öKÅä¼
.®è ‰—«)#©vÿ­$Õî¿Ð;Ú¶¯è)i=—êJªgpUo9ûqº÷pM¡I¼ÞB³Iu7^¨8çt SÕ~’“uÎÕ Ô5§}¹btžÇEõ˜¤ÞK=¥mûª^óÄŽdöUwŽä9ûnç,ð’kg¬„¶Ó{ÃN"n ‚„Å¬\Ì¦Ã/\h¨	ó^2Ãb-v½‘ ca41#’À‹M¥Ø‹ìöï'ã©™LÇAÿø)ÐôÝyó¨åòŠû:ªL16ëË¸_äôÊ—CFæŸgÏÜõÍuöóûì×·¯Š–ÿ§ÿÝÑiY°‡‹‡ä3Ào‘C`=ÏãÚ	b<:lÔ|i„äµºìRJSò`å¾7Û#=ÚÁ½ùi:‡È­ÝúÞŽ4’uÉ²ûmJÅÆ7xËx)'$]ÆíÁ’•»ƒ³þJ°—=Å?áyw%:Ýiœ<‡â9a÷’y[Nòâ@»òb„‘î&·£áî¡X}ò;òš‡GÞYÚ›ÜNïôP…¯Ç{;h¬1‡Tƒé^ÜAÊ©"„
‰âž
ãöÎR!´V :ë”Â¤¸…Ì 38 c	qzîÎØw ¸Å|Å°)ç°æ‡Ëy$¸C[?Ü{¨³‡.y4Äv˜:÷bOÅwN#þä¥\ÎÁµsÝëq_CÂ9•Mù³r“Éè¾szK,õ³ZF	hBDjCŒÒhh%1>X*/¥°XaÌ‰ ÈGehâÎPÅôÆn>Î}ýat¿`ÏæSGßm7*:Õâ"G‰¡DJ²‘ŽU#E‰~»q‹rz4Ä“Þ–äb¤Ñ,	ÐäÖõÇÙ»7?>ÏîÜÝ(Œ6ÍÃ#8~‘}FÊV8L	‚%Wz;…‘kmH3I$Cõ,“D YK2I¤`Iæ¸{åfê”aò	eZ¿Õ½ëüŠßá\6LdA»üÕŠIoOïÓ,¶˜–}rÓÀûe>Šaà¬JI4	õôŒsÝÅzÔÀ;lƒ(\Ã ®ƒZi±ÁL¢XPËbn­²Ô"®´qAÅaÈA¬<’¾Iã¼ˆõ}Ä:\KÚAÄ¦ÌoÃºfJ8Ã×Ä:”"%Bt]ÖµMúögì¤ƒ—M°''­?š„ß™îøþˆŠÙ‘õ—n²êò‰oí¡	z	×hÛK¯ËÐÔqGãkð=¥ô{E©·)±è „ˆ£ƒ8áÌ;¥ÓÐScò^bH”c(¨UJ+e0‘N!/ “vc…¡2!@4†iöýCëOLÕ »SAZ]fûù§¬ðÚ’ôíbÑÖ±b™ßty•øÛÊ…®*ºÎ²™Ü^>(J®®ÞÔó›Î«i5	 S/%nn£X(ržCäÏc%¢ò2±ó‹è8¥Æ¤ŸOú&kÊXÿ] §þM%Œë&_œ²9<—ñç~>çWe³{ôùyq½Ïèsè¾;-ÌÄ|šÞ—+Z\63ƒÑ0`àl>Wcw®7~xñ÷¿¿ùñE”ˆq—ðù|æZN7&O½ËÂ÷V^µøÞ¿»*–2‚j Qw}uUy áÞòìm8ýš}rã¡sù§»›†²³²LqÕüÙ?û.ù«rÆ…å¸´H¾±å`ËQÔðy˜¯Ló³PóÃúwý‰³W“Ñ_2÷u‚^àäyöÓŠž¿|øéýóìíï??/½oÃ.ðn^ðrƒÝÙÝ/JCåaŸÞÅõú§})ÿEa¥ïì§úmÆ­õ[Ø|+bÝû¹›Í5lÂü~ÐÅ¨ÂãÏc‚Ù°Óò©ž;ý^_ÅúõZå}Sý8ºÿåj&‚–›0Ë^Î÷öUÃ×½Éh4ŠgõYñÛóòqú~~»Üw1wFöì§¿¿õÝÕ†az&ËFÃÁC‘­#Ì1w“è”\Ôï*¯þ“°;ûÃìåêœëž•çvjÂŠYwcf‡¦ïòïÖûÍ7uß§°p“Õ7µx¥ÆÓaô”þïßÎžýŽ~¯3AzñÝ/Ç¹¿}ë½e w+U†³}e¹ò®XÄÜ™é¸”M…Ä˜¿áïÊ¸hA¿ºú)æÞÆbd6óNÅs‘üùœšÕžseño|Ž²LY›g¯#¦ûÓò}xöú§÷è»y’”«j¿~A”&½¾‰™–ËfífeÛŠïã+S¾fEÃ«†„Yš©ËæsÏË˜}šßºÁ ¬ûßýr+4nÆqþ0{¨üÏdô¢'«ox^]ïJç¯~~üô~q¿Å’Ú²ÜW ¿êVúÂ«òâå÷ßg%G›FÅg·|*]tØŽ·Z>ÅåÉþZý-¦
¢Áåáõt[÷‡Qö¨>º™M`^<oÞºÌ€<ûðMà£ò‰©³rÿPŸÕ|”ÿ
?/†XÙƒ©ê-DÃÛi½] öwƒÞúºüú2|Þ0bXÑAïýCÞ{=ñ]ød­aiÅ½ªTzW|–á¦yŽ§ú¡Öø·ðÁ¢á1•®:xo8ûc€F$K«øQÑl8C"ðŸX.¸ªb1	¯z…O¸LÊŒ8{8%këmçk‘¢ç$1­bïcBD(m§›ééÐ†§ýìf8ÓÝ¥‹”wÓ¤9uæé;®µM[;Ö5›õ¬s<ˆ\œÁDÙëßmk«Ì`Û·“ÉxÛ×Ó§ò(ñ¶y½VZ-žÛæÖ(nKn«Hh³­É¿ú÷ÛN½bXÛ®1Ì}[ðrá^Xât[¸Œ½5÷=3è‡Ï¶µ
ì|×lì(÷yÁ>¶4rÈçaÞlk`ë×C»k.>(=[¾¾Q_>mû:òÈmß»aPý
¢¹­UàžÛ¾`Ë×µ¾îú~MÂ¼~Õp*Š¯!Xx4ˆk7ØrÝOg:Ùv_ÿPÃ<·´(ÕÌm‚˜Û&Î‚º]Úð–FÑÖX±²AÚHV÷víºÐ*n¼6NËöQ÷+b¸»õKt$Xë—ŠµÚuì·J°ÎŒù˜·òRYvxýòåGœ\`uµ_rQÙÙ{pÝ˜„¯¹Ë½»VA<'OÄæÑ^’Ô(íµ™5ns×“þøÞ$4iVéðáÍoï^|·HioPîn4ì}ú|·MØÒ8êîÑÚ<Ðeûð0g€AZ5…æÎÉ1‡ÍßŽ¦ÎÉÕž›:·z\«“#¶š;ï1mºÏ•ù>Wæ×¼{g™
(Ñ¯íüýìöêŒ_¶æÞ‰’·©³H›wž›¼¿­Áç»­(~Ý Óøâ@„—Í‹MÁrð¯Ñ6Êug•½Ûò}4üoÓºãëdºúæ!EÉŠ^÷yo¸M?½Ïïúù6ÈJOiÆS½íû­k“ÿsÓùÁ¶†Ó{7¾ë·c\–Û¶ò‡|k˜7‰ù9ÚîÈ:k‘ª¬Ï›O·—š¨mV„¸Mz»¦þõ_[¾|PÿHUZVÎµ×äøF¿Ühu	{²ý(fØûÒÎìøÛ¼jù2(«¼ìÊ5V<j«§Vá?ÅNÜ×Ÿv~&övÏŒb	Èh»]=ŽŽâé8Þ;¨•RŒC1¦D8‡6 Ä56ÜˆUÂ	­QHa‹=£Ê!­Ô›bŠÿn9›(]¹í¬´Î—ž3~ñÊo>‘SÇ³IL©4_ð¾ÏFÓì‹'£n0èßÄ#X½~Ù«x¹ÅÉåóê±e<E™—­žtÕ«ÕY]9KÀ 6'eN¸¸ž‰a.+ç¤dþÍ{6Ñ˜^nås=UPqrŒô {'a¼°X§,l~€¶åw7ÌošW£.¹u7ƒ£Üã¡œ°j'Ãgå‘…2R"À”áL1K™ãÔÇ”e¹E&ˆPÀd-s†8a(‡n“£nóÙ÷Šôß^ºéL=–{QAÎ­YkûÕÌ)ú„ßÕà!ï%b–ã–DjŠ€Dçš«é0¼”ám,Ž•cè¶RmöÑªOÒ—[7Ìôh#b¡™€YEéÂóá| …¥O&ER$TSIV- ¥òˆ.§Ô'Ç)»cIåÉòP¸vá#JïqÄ<W¢¿Ë“?8»³ÿæ.§)<sîÇmmñ­L™q;?{í&£ûÉ_þòv4¼ÙÙøÝÈþå/0;›æ“qPÁw6û¢Æ1'?–Ç}šeb£… Â|oÎ*–V‚]ò¬KŸR¸_ßÊ,QxñÕˆ­öSÎ¼Ñáf˜)d<áÂ{Œ‰7Ü!M^`ÉŒ%Èu|“1âÇÒÏ3úÒÎŽ—î›)ié¹à¢vû®êW82A²¯"¤€Q÷U„œ""«¾Šá.PJþåê2^¸à‰¹`x·xg.X<²“’ÀâŠ§ã%A •>€Ï–sØ‘{¥¸ìþ|2JÿzKÎùé¦—T½ðñhÝ‘Ì2‡¡’‹§œt*²ƒä+¸ÃEz¾ÿÕÙÞÂp ÐŽAg…ÙŒ#+eŽAï©Á†Á€Çãp …{¬´à¤±\„,8O€p¿1)éOïQ-ê$ ‹²eÀKµûdTß,›)Ä°ªÊABh6‹ô®†ðÍA¾¨F=ð^=ØÞRpZGnX=h\·ß¯O‹×’í×ñTèÇž©¦Ø¶	^°ÇEË(Ì‚ÄÎ
¦Ê¹xž ‚8ÒÂP°@¦¥@ÐÇ1aPDHyå½×ÈR1Gp¬ÀuPÙfËµTÚvz}uõa4×ì²|ä'_bmu;Oâ@¾Œß{^ÀÈÐ•¡Ü3Q{µ)¢ï|0$ù4 "ÌdE(ÃTÏ(#¸ö7_“žœVÿb@)Úi1¥¼æ£(1ËMº!È~ÙIÎ:Óä9hk~ß+=×Q3µÔaâ¬Ý1uÚB‡@P)œŠ4…,¨]á„9g á 2Â@Œrc1Ü”·å±½æM–È°{EŒy)Üú§Eò— üW«ˆJå¤t%X›D->¿š]ìlX@Ló•È0ÅPÖuI‹‡‹ª89ZøšÕ6ý…œ8~ ÚÝ3 öè—OlnšÁè&Î&«t•›œÆBÝÑúü˜¤q3qÛºÊ3b–ØxI¯Ò:TOv¹Æ§¥¬Þ²'+¾ñ{/j“Ù‹éÔ²•K<%@ã¼$’j÷ÿ³÷f[nÜXºð=Ÿ‚«ÏEË§’)ÌCÝÙ’íRµlkY*Wõ¹ÑB`È¤Å$Ù”Êºú_ã½ó$g$ƒc$SL;=H™$€ ûûöÆ80ƒ~b2LdÊK¥	&ó•i¥¨“žeÐ'Ó ël_†:çúy©ßµÄUR*Õ"?ëÙšRÒº;?3Ë»óžçƒÁ4f×2Ë9tÖæP<v®›=¬»æ§®ùlº1ê(t‡£a/%'Ë“¬•ê{}ô×ÇÌ|×dƒ˜ñ©SÌ~5è"g\<?wýéx`ŠË§¬O@¾î}óyJ1àýÓXç8^8­}êÇ&e¼+‘;¸¤ù<ê»¼äòj.[ó91ºQqGbþ®˜ª–ôÞûî¢ª1¯÷s;Û™*c¬æêb)ÜÞHÍ6¼:×ð›˜oÖž¼ç ¯p0@°ã¬Ý½‹1ÔÃlê›éÏO'†~6Îîzk‰_N¬ñÇm¥è3/ANŠ3î˜óL3")Ê¼Fˆ«LRBF•@^Qk1f&èŒqéu\íXË>×FËµÒ® ñf]‘ß²â¦îoûö6Ï4Z ˜vÒ ýèÆõúdÛß˜Î…Yóqía¬b­€uk>Üb].;Å%Ã¢Ÿ6äYy\S>&²aò¹;ö¨*Y¼à×PÕ?þ>ìïöç¾ÄséEŠ7>¥“:˜!KŒû½xßk|?G(|¥Óˆã‚Îì4µ¹Ä“&³ÁR­µŠYÏY¦)P›,ÄÄóèñ™¶RØÔ|i©²’§±WÖºÏc-ñ‰²#øb—ZrMós˜û–‡Uîâ¨¾¦/˜M'?¤X#CQ—Mfã
ntÞZ%¸‹ªÏ]Ý8‚ÀŠ¬k±’5ˆK\mö3}ylOvD„ûê¾=:‰9ë©Ãq_Ñßû±ùd­;)°¼(+µ`âÔËàgz'2ÐÍ1A¢Ààg,6p!@¾Z¤·Œ˜³Š¢}žv9Šì<BX.9[â²^•C_.íÏ»Â‰&ëaQa©e¹LAD(ÕÀ²Zlß³Mõ+@’@MÓ¹oß¸‹„Fàã'š?bœXôß™aoßO˜ëEÉí˜%FðŒ3JLÆ@A!£Öi‡…ÖçQd‘J3„òžáŒCÎ…ýòl†Ñ³ùÅïæ›Xá¨›VßÊ[W6Üî¼À¥†Èb]
¤ÔX¬CäT¡²MU
†›dá*oá3|4P’¶GƒòÝ»H8›¤?›àº(Áë8PiB‘4ãO80qÎ2î÷kAà?›YiV”z‚¤AJ‰À©µlßùØ?>Mb”!ÈÃóO'“¼óO+É»ï
—*z	ªïÓÀå•ic„ä*Yôn'zçŸžEï×½BÐˆÞù§gÑÛPôæú.Êf/E&ôm„§Ž#â4(êÀl	ZÌ—F")‘âK§-Â8£
$4ƒ¦Õ>y+Óz©HaPs³9Æl
¢0‚$Y>¶Ê®
‰OcNÚ¡ŸÝ&ŸV)¯ºM
?82öf-âåéú±m»ã²$Ÿ)k` É÷òÙ\ÿÈþfR·'Ãù-{TëB~É‹³Ò÷Çõ­1˜Ce:
¾áeˆ™{SÅµƒul¿j}ÓÙÄØCÅ>÷ïzwÀUïÌà\‹É^Ä¦¡È*ÂÑ‰,Í$DCÄ;Ê•a„ºŒX¦0°[€5™9/˜r„Yê÷@\^5·}&•õþõS© v{»óñ`d\7ž[î‡éç¼Žn*k].˜~1¸FëgWÑxÖÄZrÒ Õâv=ƒÚcgWQí¨Ó{\L‹W¼8HûÏùÞŸŠšdu2˜ZÅp M'Æ)L) õAFPMch62(-„ˆnMh=ÎQ%2¢E{Ðá}^Þ¸ˆ¶–“ˆZ×…æ¥B÷ˆ±ØÞ¥Í)–}Ç},²1Ýº\ÂŽ`À”-sè;û¯|Ýéü˜îNz›‚z@¯*Õ³3œy 3ºÝ÷‹*VÅØ˜Ïk‘îD?<Äß6F/CÐ2ÐhmfIKº[§¨cR„!¥G&¯'²lïgÓ„…ùÇyDW©R}7E,ùn‚…¿V,2¹ÈºrÜú-êfÐ¿Æ#óÞÔšXEÅ§[»ÓŒF)õ}\t,E•TÒÎ²oÌl–àÚ‹Q“ö“<hjm¡ñ¤a&fÜwƒ¸F¹´EQèŽGãùÀL`·¼ï;Œ´*–¸¸`Þ¾KäÀŸ¼òÍ†;Ì2†˜™´[)`­³±ÒåÀ£ñC/6ˆ5\–ÄµèÞ¿uµü™ÊiHÌÏŸÔê‚Š¤mKl$:›xÏe‹‹cðQz v<ùDæÓÙè.2‚[¹h´ãÑ+çš[ŒéBMK?…7.†Â-Fí,èÒã4íÃAÿ´ƒžäûq)›ùéðÿþÿÿ¬û;L°|;:&váfä— n	LžßÈl.â
¸<ÿðxÆç°0}t¦ò‹½§1´ntß½‹&|ô~A„K<t3ŸìSïòœ
ýi'M=ŽåÂüÍbSòKî’W]ÿÅúñ,}ìçy:ÑÀ’?ÿì½¹ß~‡–»ß°êÛØ$]~õ«8Àìf÷Þ÷vV›·.}Ýâa/ËŽzoS©ÇUg)`k2¸Ÿ¢÷(AøõíoðÇo?æþ»ßâÍá§8™ÒßÙÞåüîL<\1nLÚ(?†W'=#1`jbî¦iA½Èúµ5,_ÚôÍjzÝûþì6°Æ'ãn4ñkÆE¨èh°Ü„ë‡¶yb¦¹ÀŽ‰8aÉfø)­fyŸnü¬WÔïð_¢2#N‹Š/›f“â­/ïÂ¢s9{â¿˜»$}·^ˆtõÙBˆ8?KUëÒcÜYÐ†¢ŽÈ/ï¯ÊõDŠo¯º÷ñéu“~ü ›Ç,*ÆUçþÖç¯òŽ7ö%Ìã«T|¢Éu_üðÛ7 ~ÅGÁôÖ¾x÷Û7ÅµRªÒ\IÙ¸`¾—p?[0ÝÔ|cË\¸æû¹ïz²ãc’ÂJãö†/ÆÉS¯,!_ñÖä!lîÄ°Ü<QÜüj‘EtAmÈ`+W)l¹ªÊÖÝ$e
Ôì¯xÉUg:™ÛÙ<†ZÇü°ééØ'L`È+Qª?ú/°ôeÑ+<H!Á·ßvk„'5õÝ3ø¦—ÖŸ@ï¾YŽõ0…W{¼"60?‹;3æá,°¢mNÒvb73Y9ûÙÁhX$Ñ¹[ŒL1n HÜñ·é7°£‹''	…tË1ºê&<øÏÔ«þs5ÊdÄßt PÇAú?S£Â$‘À°³“pv»RŽ¿BÈí‘qË«-&r›8ñ7«ÍJhfÅKhjC¿ú›È…â¸š.Ö,²÷L–(h¾f¡XðrE:J¨l`É-¡§>‰}>ˆ­<ˆ¥·O”t½;E“’=_ÁòÑŒý©ÆJÔžÿú×ï€+Å+K²äÍ?ø»ñi‹Ç¼…W?ùËìõèÎô‡§¬7óþaú×¿þ¸‘kç`ã(Ä+[‚ þë_ÿbìK£¦ƒ9Éõ¡òÔcýõ¯€QŸ8[Åq>—ðîDùí‹Wà²NflÆ$£H²Ì™ŒJË×"HŸI§6Z[Š•É°gNSG¥£1…tŽPJ…þ#ØÞ~ÍŠdB‘Ò€v<¸¸w7ï_÷EžWa‘w¨SNôM"VëéS.Ÿ¨ôæø-•S\(u–)|ÖÒ-Òõ\;ª]O‡+…7³ò©8–ríøH*‰P“,ÅûsòS¤çC¤C‰R-2ngó+nÝ¾FËâšwŠÕ¨ Ï­ÿá·NÓ”Ç¡F;Åuš}îheç‰íÍp>¾!‡oSþdÆÀJ]3<ŒgM’G”:üëÕ¯ÿýîÃGR7„Ô.dXjÝ¸Âb 4jr¡Uûx”W-û©Æi4žóu•¯ãw3œNGÃØ…Õì2ø÷‰íyãöÿú?yÝ”R§CS?mr©‹¯Žº³7½&õzÇ®‘Çî²æ|g1­w“=œõ'ã”Ž…6ïðáÍ¯ï^}D×µ_á¦ÕbWíaï~{óë¸\®}gÜ|¦åÎ5åÍîÎ+ê®:³ºÓnT^w­=\ì_?½%±²À5m|µUoÑ|ªåÎ57iwç:ˆU;MÑªæÞæ°!ç¶.¾7òt~sSËî}4oqÏe¦’õ+­[Í¨WƒbPËBú%l¥–\ï^]üÌn)z×‘«í¨%ÛŽ¿\»—7¿™ëéížÆŸK>![M
Ó¨æÿ‘·þânŽìñr`zíöLg_ó²6~`éuºßŒošöN>Ð‘¯µ¹ô²óî/Èýò^UµIþUæÃªfŸ·]ŒªZï»é»›õÒÄ`–‡ªÖTÎ´pû©Õl4¯ná¼SÕÐíºßë-ú¡²MT«Ú”ü$*›&cMU«•¯CUËþÐù/½Ïð483«Ü’¥DUÃÁèÐŸ7©\kq®_Õl¶UÙªÆ=_œ W¶ËOÇ«šÅëê6“Owq´}"‹û=ÜÈÜ»¿©Ñ}qt¡–ª>Q
bƒÆÜ3cÇ\IÍ¬âŒ3kœfœ¢ŒÊxÆPÐ+92"æ9BÌrjdà_„Xœ¶)çWŒÞgòyåF0&Ÿ+ìî£qý·Øï6qà:/~þðÃûoâå’7Ð®K.¨6K¥4~ÅØK›>Ðx §éÖ¼øWð›±³î/ïÿã›RÉ¢ñ`~Óæ^8‹Äö7ýÙí<Kùì}Ö3™¾Æg‚Þôò±{¥±Ïie¿¿¿¿.®\mf—rÓ	áEðàº™"Í(£nH2Q®[Ÿ(Å¸"¬^™<û½ƒOýŸÀÆÞh;ŽOy¬Hû¸ðÕTÕËi$Ðê_ò%¬å¥OŒ^:•^æ¨Ú¬t²(‹/a+Æâ«žóš,X˜¢ˆôNÎUˆ9b¹Ê0Ã<£N	mƒRÁÀïÒG)â‘ä–8ã=fìüë‡÷GÄß•{Ÿ¬9z9‡¦›–DÚmäWÒmË˜©}2øgw²8»#ÊÌ}ydG¬/g®þTbì`ÎRûäÞ›è¿¾)ýûB‰juƒ^“J’kXR}O¥d <8«s<’XÉˆ}1ß!Gà‘L©L0©´uˆs„8ÆÎöjQ.Oà§$à‹Õ•k}NÛ´ì=É#E——½¶k¼œÇ†Éqgê')œ#]|8¿ó“èð³ƒgtŽ:Ä}ÿSÿúf8ºóIÔ¿›ŒbºéË·ýìÇ.nó.ñÏð$å{œK©¥$»=Š)¡\ÇZö™þ¯%z"ðT´/6¶—?Q½ô,]Ç‡ð’Ù:n+îw®öX±Î…Tª¹\/ærˆ	ï{Í«ÆLÒ‘’ƒ,»íØ°wñà“ŸFš»OÇý/Ù<,ërWÌÂìÈù^¬ ^§y©¶xEËA©¤xEÓJâ­gŸò-«h—Ÿ^7:á>Xis»9®hþ¸Oáâý­y
Öò¯y7^¹ÚÝ½dË“Ä6½ÈÁ>¢L‰<p´wRöQ×Üyÿð9KË¨ÄØZ'@ÍÌ¬¥ÚfT/ð¯<ó,óÁp-Ô EŸÊ}µGžùGkþAðÿÀtÿ D±-þ¡Õz¶wB¨¸5ÿ¸|{á¥1%Éå1
;ß±ä„•ÌvS‘ºn…›œ¤n¿9©Û¥ÌRêöÙ +u»-yK3÷»óúê­q”Æ®F_Ë5©¶¿ã>óµœ¢H¿³£ˆÍ™ªÖ,DÅÎÒkç·±n”YÀŒdÂ†]À8CÂÇ°5^ KTÆ9Æ†RŠPqaL¡À–$ÛW™àu©´Z‘Q 0¦/ùÜ~kºïnmÌvÀTÎ|úE"˜vV—ê”J®­¥JHQQ1ãkéÎyH]›|¶œ´•`¡p¹N,QÕÉÝº¶ûÏ6—öŒ‡†ÚÛ\ö—L;š›¬ª¢Òþ²¥–*m'ª3þñAËxñO7½ÊÂ­_ÉuxËJü¬‡ëö¥^9;«Ùxöé/ù©ÓºÄcjw |^›Î£ åc˜ÅQR80§D¤Ê<ÎlüQ£½TÄÀÊò–:§Ê„öÚù Ÿ¡òìPIëšd¼‘ÛP©7¡²N0ï¨|64KªÐeƒå)MO,Û^òŒšmQóËxËm«žR™BÖŠ[È›ef4Ü¾h%—Äj©1g^xå˜0tK‹½—$pÁUðÆdJrøJå¨”„Š=@ùã/É<ÔÍLÌ=Q¶¡ß®Š¼±0ã!ˆ˜ä8õîý²„iE-&Ø¦Ü Þæ"åE¾<.ïó!hd[Ð¸¨æ¼ŠcNÖíæ!IÊVsLH­<0«^zz¼‘êøÕÜ³ZÃáæJOä¥Ú¨0C‚yÏK}h¸:ÊQ‹a×Îd2‡OeBzøÂÖô'£§Á1[oo5º/àÜþ÷±O	 DÅªVí¢åôïï¾ÿñ£¸&UÑðönZç ýNãáé¶VŒ[jøâÝÏ?bñ±jèY?„ã_³YÜ°o~øá#;<ë#Ì?ö×Õ“@Áœ23YëŸiÃ”f>ã^kc1A+¤ Ôz;Ykˆ$ïK~ÿŒþÇ ?ßDEv»mKM7ÐkŽ˜*¡?Ö’Ô*Î¸‰‰d÷ìÓã¿-4á3á…¾×ÿO{.¾Fêæ6Z2‚º©ƒÊÔàq|^¢;”yD½ä:K:qIgõeÑ¼Ç‚rÔL³ MÛ—)ÈYº1;ÓY7`èÍ¼åwÊK³¶M‰²ÚQ¡½ÐŽiäUÂîsÊJ'•ã@J2NJh2+3 +D	BÞWúoi9 •ãùlÁòŒ|ý«Dô1sHôÎó&&™ÏíþkƒÞùÙíhU á¼ü"ÚÐ®oF£›OAÆã—Ë)ï‰	+ÈE›äB,ê°o¦ÇÀ.è:½‚I*Ê>yBp„fàC#Ÿ\/=½ü¡x|C‘öûág@’”—#Wäç-g¥»V4ë`1Øº)ëÈgr˜ ì~{XÏôÐfä5Çñ#ŒèÓ”1ÒösxQãkq`Î"¾Ù±ÝÝLQ±ÉG%§Ø-×ë«ší%;'Z3G4a™ÊÊ3ïØ"2L’J¥1¯² 4H~ƒ”Wþ5Lî«4ý,ÙÉ¾ånÍ—%2·$;|S²ÃjC²sRçLu—lû
ÚãM¶“æå³ÊöJµ²µl?¡fy‘B¾G?°ï“­|ÿõ<[ÝË†Ž7L*/©òBâƒdX8Át T²ŒY†(eÜ+ÅáwÄ7–:c±Ì7R´/çyõòýOßÍ§ ã¦‹ð™:Ò¶ ;Šuæ¢ÉðÞäÂu×™Ñ²–T^&-/G”o:ð\AOÏ«óÅ/`"±<Ór.~º(7–çõ9/:Àj®“m1Ï;–Œ‹)¹ØõøvüæöñC^`õ PðM€#ºÛ¾H¤Bh=ÅO´F–üh\ÇºÓî±(›9¥>­“Å¸È<{i©Ç'ÍI>Lå¬Þýv¬¹o<èÚiY{‘&ö}*y[—Y·—¸Ä8dÕ\ÏÕNeÜi¥ÃR9ÆBfµ”Äþ#£ Ì[Ú}™ž%îé$î&5? qÛ¸Š²&qy˜€‰ûNs.Jæ¢æÇ9g‘¹¤»Ì=!ß>JøžÇpRfp\€º¦Å®Òf’XF‹B3¡0@v5uˆÐÌH¬rÊb3.bnMÊ-wD
á¸7@ªp†IS§ó¸ÔJ‡óÕ~4u6ï®œÍ;{Íãðç•À‹‹95û£Å'‡í!b=‹+NÐîP,ŒÁæ…(*Çb	¯‘mµÛ½ô õhÆáî§øÃ5z"rx±òòšö/ŠÒÐbc2ãoûÙ˜L…×s|Ë‹Ëå­¬hK\TZ/©þàkÊýFë,Ït›çš^æá^nAå–z³2%–ý¨nöÑ~ùR³étZ»aƒQ?×˜ëêþ÷í¼×ÇêpµÏµÖsûx(\?ú«=#G<öÎI)uVé #Šsm¬§ŒIË€‡Ó@ŒÏPl„ÄÁHçYxÆáSâ0ÝÄa¬wÇyEfl‡©\Ça^'Ìnª=#qÄ´a"˜'‡Ä•QR|$# ÊH|ÂÍ*#qM7«5HnÐ§ÀæF=Ú\çs“õ\l»a;­_SÖÎ{¡¨QTrï¥#1=,ò8s ÐÜIÁ	Ï²¨6 fgò°šË±‡ÁÝg¾ŒÆ¡É+H Ì¸n^½û3¬n™÷»ÒžùãÏÿè¾Mû’œÎáÏ»ñÀG
#Oa‰|?‹æ±XÉU÷Ý|øOñ#–wÞ¼þùÛn!ö°í|èaBÙCnßüþÃÝ}ÓíÄéN»/`œoº÷£É§èÈžpã*/ëùA«³Ë;Ç;yF…¢¼ÄÍpžÌ¢ÓQ˜Ý›‰™?H‡iÜÊN«ôîR„q)ÖiD£2-˜ÅúÎÕ´À{ñQmâ–ØYü‘?þðúí¢ëk?žÈ¦'SÙ|èàþ½€æsHÎù;c§½|ÒK¤yûai`=(«Ì¥v@Önùu`°:iãA“;DE’Ôe³èdbá#ÞŠDn]¢yz[Çe¢hYåTQ¼¯½˜Ü²¶'ÆZ§ªçcÅ_vUÚXÜ"æ=Ÿ÷^üh”MG?;°ñÇ<êùe7®±áH’ ý8/’mRPW‰oO¼áJ‚ŒqZkG%¨ç 8l´©D“^1NULnFmfŒ¤6 ï0‡€<Ó‚'IÔ¦sŠ¨ßCC´ ÔT\¶ÚK‚Tçôhl|ZzÄ ­ãé‰rbP¡ ·$uuÐ]át.–ÏDá\  Â@Ž9‚Ñ€KÇ†f´A;‰XŒ`§Á‡2&dØrÁ­uÖcÂJÀF„\d„Iø_;‘QÍolú‡¥V›þ—ûq–|oqø3‡³€óÿµÜ…°.9@)—"x a¼;ìLÍ 3‚cÕ µ<ð«|+¨^l{/=Q=ÜHéQ`;Üè·9¶SÂù'¥÷“µ8Ú?J1Ü</üênBÆ=¯~õ uôñ&ƒ¯ñá25F~d#~1±S¯|!Q*’Ù,7èô&è=àQWé<>ŒbB(ãH‚jál¬‚µ–p¥½,1ä™Ï$5È	Là¯ ¬‚+“í‹>~†ÓÃÇnc1ÀÞ†M6à×³ï‚úÊá¥Èúá©„êË
½í '\y@žI¼X)ÚöD³´bÕ0‰\Uq¬`é’eA!Aœ%Y°Ô3ºÈ¯X3x&="CJƒJB´æ–ÆP¹=0ò~6ñæ.
óA)ÛÕ›ï¿ÿƒòR#Å~,{/C È¿þM¬D5H0óí»7ièéò‚¯»êüôîû{$‰03wýQwµ¼üu·û]ÊÄ[9Ë/81÷ñ›n
;;Gói'Ì‡¶°HÎ® eUÒ5vs‰a# þg0v‚©z2†/^ÿÖ“h¹\Î$ÿ5Ê×|>S­°Ó¼„VœC	óÒ´3XÎ§ˆ~~ê;nt?L¡(«Ù%ñ³éU÷þ¶oo3àá)6½ëÏbDÊ|ºÜü´²³ÚPûÞût‘ýá'Ë çÿµö¸²¯ª5ûª0•r'’2±©ˆi¦×|±´àµÎ\‹yõp!êO–ûc÷úÏ9Cøch1—ÃÆÉÝ‚¯jÌz'¢íÆ>Q¬àùÂÃK2¡ê÷¢÷@dýó½#@2`‹%ÆÔg¶	‰„#BÉL#ŒÒø@¤öŒC
DH¬²‰¡öð=ƒä3H	’m‚$æj7H2ºQš"Z—@R)êœ@î‰§˜F¥µ™ò\0ÉZÄÏŸ&+Ï€É'‘Ne/ëè‰—lÅQ¬mžÄ˜JzQz£!|úŒ9q›…˜êÉ‚	Š+é ‚t‚¥`
I§˜"*x@¾q3®Ô*xœ\H‚±Q¢GëÆÅöìèn‚,,£ökÀj¾QËÑû¹4&ßšüÀ%R2€±™DY:è&Wœâgûy¸Ÿ®‡~öðàeiÂ‡ÝUôV¥ÅÑn¤Ð¯#…¦L”Ut´lÖAŠ|b½üéé‘fúÔÅàD{ujçú
Ú$Z)&s83Öž·¼jÐz)[¾Nx‰q„´'ªI¦­Ò¦|œùéìXç‡=P?Åâ ’y†…‘D¹ÌÅÔ¹.dBGQ–!ƒÃ
8lƒÉ°AÌ ä×RgšègP8(l'ðß
’l$ØÒˆ‘ra;Md­t/»…âã—´ûÃÁ×B] ,Tfc<ž„qŒ;ÞVªù¯ÇøÉ4ÚØ0Î¼å!(£pÀkf¬J:j)!Úpœ™“9hÄ1B Mˆ Â¾d5?ìˆZ?à{°ËCPQvk¸Š/é¬o˜qˆ) V²¡ëÞ™!HÙ›&^‹àB1EÔÅŽ]W4¨e–˜Â(ÑMÜâëª%š§( øª½žQíÿÐZò×w£;p‰£jÂœ5wè;'³þç®v”Waƒƒ'ÁÇ^Â8©‘ ” ë5óNÅ$(HÏ2Ÿa®‚ÅBƒ– ¬GAeÏRüq¥¸l Å7üØvIñZ§ï¤øãë$9Þêüý1åx{%áÂåøåxþ{ûÌ¼]œ«¡™”2I­ÔÖ²,“>£Ü;Œ¨wŒ%Ç˜S§1v€`¦ã_F„€”Ù—«êÍßßw5Óx>üæ.®øC<¡MÆ“w“ÑldAÔ¾­ŠrR;ôâÍðÓßý¬ûÞO`µßTœÊ3.%{:%îÀgÃQw0‚·iÏ°A†èâÝUø£0óÃî(–ïšA½ú9ž½O|×"¼˜×Î‡Ò¡øU÷vtCM"®ôƒîÔû»xl¥na>HXöc”ùòÊÒÉšhº‚‹Ä‹ôÃ{—ö`šÖ?OúÃY7–Ç/Ó¯~r^ê›ÕÌSU†(#Én”¡HoÖA—¥AC¤uPæ÷TQ‘7Ì«ñí“‹¥Y_ç± ¢ÛTp‚9TÔwÜ!ŠV³ht³AÓ.¬>P.Ê]jém‰$hä‰÷
igaÁ‚ú®…QTY£‚§ÊèÌ3oá=·~ÅÎgžcÏŒ`HìÍïþŒ^„ØJ¾$ñn/`Š¨P!ZC±°7@ˆúšÇ3F¨ÉèÏÕ……ÛaÄeä£?[%ÕþÝ(ƒ·/?³<A,JÃ²{K¦±ÓÈ(-@‹ðTÐŒ¸F@),¦Ácƒc€5Ü±À©bY‰ö•x[:.äa´Ì€ôË—[}¼¹5k P9.ˆ$;˜»øÝøv4ôÓN²Í§}ÛÌlä¹Ül. ù’»)¥ü†ÜÝ““^i­ÅF#MŽ©«8FÐUÉ[žãÂ»ò©`m-”÷oÂÑGÄ²qžúÍ	Õö­QXomàÆ1M/dè%Ã„oìäXQ,d~( }£å‹_ýúßï>|Ä×¢ª–ûp>ä¹e«Æ/µŒ0õáíûôcUÚ] ¡ÓYLñã¼üÀ|+÷7Z.UMcW'\UÝL‡xí!©j—j§ûþgü}¤£Ï§ÙÝüKšÒ¡,OÇ¹
<&hwÓd(Àg2d€ûAK‡±
X:Ž2$I@DpO¥3†qâÆTNïb„6nŸ>ùLÚºMv'ÇWxÓëX¤¦D°Ö’GþT'g¥Mæ?.%hÒŠ<	²MÄ¯—^oI¨×¹Ì Zt)‘†ZWÜ¡æÕÖP¾E—¥öõ–“]%ò7î°Fju.3†3ÇÕñ2lÇ †.Ú%G“ÞÍìSÛì0?t½8€Å¬…°±`'8³Ösî6#œrt!(•1ÁpPÆ£Ìr„¬ãD¢à)ñž¡}±G?~ø¯¿ÐcÝòR÷³†o»S?‹Í§€ƒ<¼ú 7}?±¦-<E =»ß>˜™šîrx “è@ò)šœZÌ§þº›ìÇý	ÛSëî™ÛUâ&Ð¥“=,šñøŒîé©uÝŽá½‹n(ë{uˆqlš~Dì6AH+Þ­› 4Vr-•fµR)­=±½âáëå]#_Bú„Ò&-½±ÞãcZ1ia^»Ñ¯l¨7v-£Cûk¤(WyO•÷éã¸ÿ%›‡žŠóMT·%ü_·éÝÈÍ¾nëQö;è@u[Ï>õhvw5tô»|k@ÎÕû¨ÈZ[9?
[™fÔ2/4è‡<“ÁàJ5Ö™7(Bc©ò†*å‘÷ttPÌuLï³O=ÆÖóc+ÞL^/Ý¦Pb¦Ø¶ò¨ú—ÍûR³:¡_±µ™‡çW@×ÖÚûùÐ•´Énû¸èZ¥¿‹®'TßwÃl]Ý·„·u»”·nŸ®ÛmŠëv[brÍwMÔã”®­‡7Uü/1Çp<Ÿµ=a‡·dQ³°aÒ`ä2Åe†¨Í,ã`Øz¬©Ëˆ§Ž/‚bÔc,›kæ˜“’*‘q’ùl_Îù7q5…u»º"ÍbùëFó„Ê·&V×ˆòÕ€EpGMã…ëRïÉ·jGÙ¡÷.Â·ƒ[dgÉ3Ëòàìµ¯;7³UÖ¬bþÎÏ|b
W‹OÒ¬úÃ›«µî]¸’ºÃPÓTñ6fÒÊ¦³‰Iý»ÓQ÷®?ìßE<Mé«îFóa")v>îŠáR©ø=p‡	|ÛYnÐb!ÅS£qÇÎÙÎZú­e|	ìÿØ6;{åœ0)úé§ÙhœŽbn«—ïË‰“ãBö,(A£‚”¸|„dé¦µQH‡¨èb´æãE€„®•Ý¥JÖò5ˆëå/SÃtû?½ùð”tû­uË;¨FmÜâD›òw¶ƒÖsh1pJöT¡Š–¦6?¿ûÇ‡ÀfªO¨÷õd­{òÖ=uÛžµî‰ÛõÄ•ªü¾nmûUÞÝ´ëVåE°§[ËIòvÝd»núq+:58YóŸÑÓ)YÝvq]ßÿöúûß>V=W;ûTz‹´°qU½OMbw³bÞ5>'³úVL¿êè«Þµ—ÍâÖþ#í¬ªÚÙ{ªê^¡0l>å•‰:rEà¸»”‰úþ9íÕ‰à¹ÁÆa—™ÌSpXˆ0ZoèÊhÂ¼–D{&F”j§	¢ûBºŸÕ‰guâu‚m©lwÄÁHn„®sÅ)ã%ut`.ë¤ Ù¦Ùõš_E¡hoÎ<‡BÑ&ºð|
E¥ÓQk…¢naÌšÅQ°càÇ  iG°£ÈhCä¨ÞGv¯éNµW19¦wM×¥½jÊ1½k‡÷*-ÇôÖ_¥(m+¦¦€Ù­Ë´ïZ×«íQVÊKÍ-”f­ÏkÞpZ»œZ]WzÎ™OHö¼¦÷ôæ³þ u¬û1ÚÇ‰3†#XR…‚BŽ‹<òT1#2NÐ¥H2<¶1çQš·Gûù¬§?[ÔIŒ™¦é­€Nß+Ší«ÊZ»Ú ízŒùÈQ¯‰ƒV2q‘eçõ@@xø·_ªO‚øK]—øƒ*ºé/(]/½(D½Ôƒ«-~fÿ-Ù?¡mBVrªž{œ&pdeÄˆ³_¼}9˜Y|rzã‡Ùíhx9,àYYzÖužµã´?íÌEí%©R£Ýøa~¸á´TËqgÜÚmG,ÝÜfNu™S,8O7ÄRé¤÷9…8ð¡¬ÂÄÂ-á™È(&Òfð_`ÀPÔ½i•†3?ˆ‰Ž¢Áæ‡‰±¾ûÚGò¤fB¥C¼(>þðÍæhÑFŸ¾üÏ)ìDð“èšÛéÇ2o1œ2'Y9Ù…~©jC1Ôu·ûfÖµfX¤Arya9`Cg£áò  Ë>,[Žlôã=ÄªraˆŽn&f–0ý} Æ’Èð™³õg·ó,%<B8RÜñb×zÑÂïºëÒ­œÚšðÔV ´aÒÆD·-ß-jyÈŒ#Ñƒ§¶×,‘öwï_?!>»±È£}r1jã“;®0dï”F«çÓtÔµ3Ù£ülÏ™ â¢Â4¶á¢¾i¢5`(x ±PŽ–	ª°È‚1[•QGWÐÃ#kÍ¸$J Ì
I•#ÜHað3`<}ÀØJ¬º08Æñ)ÎÊñ ÓP­Ò>²´¾	äOâB £R—o§ÑxÜ¸ÿ‹ÌÓ7žYgf¦­&‚®Ù"ŸyC›·´ÈfFÎ3ÓÎ­¥A íB0£X*)<	ð±é ­È¸Õœ íC–w^ugæ¦ž·O±úí¤; ¼§É±Æ»þ,ýÙSó9C¼Fì×™ÎF“<ýjô‚éÇÌ¯Ó±A—ÄÉ‘åÎÏLºîtno;€&Ö¤9M¯º³þ,•ŠXGøÑÏì5\"9Ùä`=l eÒ“¼¾î”—cÓQ‘(ÿ“kÌ£7èXÍÓ©@¾Ì;˜OxH©…n}g1­³ÚèKó¼ÎELäÆ§ ÃÃ@¤¶‚ø	Ù­¹pNÖó·bÁ¥*;ã §Q¸ŽQ¾˜j/=ê=ÒÌ½ÿdù‚¾B‰?¾²nS™º˜Ëa<Ù-ŠªÆ¬§Þ´{M'¹Ä\@gÒoº›§´qCŽ=¡ÝTõu # Š/(fJ:ÎxPÁiÅ¨FgÜpÄ ¸¸rœJ–iïµP>Pcæ’!…Ü¾l²ÏPõG…*¶¯ñîb‚I¶U’0´Ut¨:ùfvJì¯Ü®=X¡G¬Ú§¬*«#ÀêId°;³uôšÚiÿÏ"µÌL¨®ó°ýñ	§×è/œó¿€e•¦M’™Y…©±ŒZEsRdN¯<–iî¥ÚhÄ˜ÒIª×NQA²˜?}¤õß¿zÿ¦ký€PÖâÆlcš™Íˆ¿<åi>(Üô
CS;M§Ó9|?š|z4ãÙÔÜ2?¹y¹º£»@@À¦	@°øG”ˆ  AÒèu'"
º+;Qø¨ÎIKœV/bzŸ•¯©\Ž	Æm¹€{±˜g•ËK£w¯”Wz´Õtæ9Ý£”WO¼Ÿ~µŸÁ†gÓ&~k]Þ|÷Û÷¿~÷þc} Ý½k: MÜ±wÜYJ=~}ýÓ·¯~ª9×Çb Á³ˆÏÇµ[IêBÇOA1Ž+Ê{¢Aö™1A!i1ö(Ó™CLJ™©Œ‘ )c”…f>£’ðxh3lÃ¡:DÃ­Ž‚Eô¥\_¸4¯6léÒ¼TDgµ{+YJ›Ë$¸6á ºF8´"¢ì´¬5®•ãtµ‡Ï¤ãI‘R7×LW7ëÑ€¹~aÞ“\$Ovu?ëH àú½:àòXÒñ'‰évBszE—ÐŒeŽ:«$¡Ááéè´Â4.s™0†Qø9.³ KÊ’µ×àŒíËÚãÏ«–q651g=Œfæo±ó&ºfD'‘ù2€gU€±³Ôˆbþ€Ñ<æ(ø\hÌqœù8ØÛþpþ¥èÐÂ`1ßá…¡uŒ F8_Oß%4]ƒ0!)­åœ¸º'§Æ°g;P-„"ÙÂê„êœÂš„ð4¼ìQÞ+vïs=ÉšDô,Z7h¡ß¶QQ/BO¢È£ŒnE‰Ô1k§‡»?üŸ•â¹§MDôŠ&c?	•¢ã”5 Äû³,*›OïÇ•mf~:ëÙùÑºó(›O†m Øµ*¯†iÏPå…vñ\YK5’\yE˜¡˜ËòJ¦C_:í01VsTEU2`~˜ê7[ØúñhØ›aZ	p7ïéi!P®æ¦²ThÌÛå^å6û0g=èý8×½ãO©Q¼\¾¿aZT¼Îg4m8¥TXz0è¾zý²óú·×/¿{Ý½ó®¥Çãœ,e‹Ë.2­/”ù¼eLÆÞ…¾ùõŸW4—®u‡£ÙbŒîÝ|0ƒÇ.&M‚ËÝ™!<2É¨ËÇHÖ˜q'æXŠ%ÖúÃ˜êSa%€MÈ€j|Z&rê¾›ÄŒLqwR¤”ý}è}sÛI˜nýçû ÿ¥ñ|$wÇ>,Ïí¿Gü£Î`í~äkéÏÒ-OÇ(s×u_¼zÝ{ýí7qrføPÔõº;0@—[áó`½ 2‘oNûÓÙÚ)öæŒ™èóc÷¸¢¾é0Æ\ÓÕ%åØzI9ÔOìöcBi‚6ÂZ4!X­Çµ0` u¸cÚü^’½æ•]žv-¹‹?þ8ô€´0Íä0Ø)¥+F¬çÖfäI	Ë-SHèû_¾ûÇ¯?ãK?ß0vPcu‹¥ªaZnw .¿2CiÄšI/WíŠ½ýá}UÍÛK¬5»Û½Š™Bè`{ÉÃMÿ]u+/«Îìn"Wß ÕšÊIcE#ÂQÆq)Í²ˆÙXmø!hgiŠ‚*™A\"ËÜ>wög*÷LåþdTNlQ9¾»:0ÃšÓòÀa…ÙzÄ•m©Üã[úþhdŽµ¨ÙwV2Wi,jMæjÛ­ö°º§á¼² w5W»¢oMÛ/é^Ý]]°¹ÆVôï2‹¯±µšWü÷£˜ÏVì7Þœã­q´…9…m,ŠcL©åŒcÉ	‰­÷ÄQçeÁ™,Å•Ëx@Š"ãÛë^¢p‰(ùˆÁÝ„Á‰nä< Š¨…éFVòåhf7½HA 9švü—™O¤lšs§_ØüÚwp€Iü}4èûÙur—ˆ&¬w\`>ñ®³¼@Œ1‰
oG÷ñ´xGœKQÌ¥öˆA‘†L£«µW•‹]ãd»ÆÅ¨•È™&pÓîFŸÍàªko¢Ä4â±M|RÃŽ™Í&ýl>ƒ_S¨É›%ãË]v–ëì~ûí›w9MÍçšŽPSLçÛWoóŒˆ_âp{èÙ4ùßûÁ Ú4Fõ÷ãÖ?;ç­Ã¸ŠŸ/¯ÿïü.ÙÑÜ´â«Ûqüj3ŒþÝ›B8l= Æ`¬|ÈÊ#µúãÞä‚¶0“¥ûu2— ¯É²6¶áhŽ%X›,1quy­ÅƒÂ´©±¬î¸Çs.œIÕä[ µ>V×:úÃ˜¨vv¢•Ý*ÍU+nô`Ð˜Xðl)€ˆz^ÔÆ¸Õ”‰LfÖÂç™ ’Š 3êRiGn…ÑØ`é‘²"ø5ÒRÉT %2Æ•Îì>'ªgfôÌŒ.ˆq²•`bå‰±™ö™iM¢éjÅŒÐ*[3fÔÔêtaÜ¨½óÙé¹E-²Mœ5°=5âF'4y\8Wª¹Ò-Òt™†½çÄ&žœç«GGµc@³»Ý1Nõ¬CÑço‘uŒ_7LSU	“)nbcJüÁ”äj!Á9©æZZî¥òB‹´ôTc‘í«Ò]Ãa—cÃáÔEÓº?âÃzÈ±¼¿£"Ã"÷F‰ê”â˜b½W,hÔYÁùÆÚë›á<‡ˆ¬	á’ª²[|Ä8Qz7"K¾aªÀ±–ñ	ë:M‹¬—ž•^ñ”42WÐ’‹Sy?ÿÅú<oÊò+²û«·%P?I2ÃGNÇ÷vcëŽÏj¨uÇâF‚Ü½ò rÔ:ÆŽ£·ÇYØßS¯èÔãíHî{>Á_Wý=Jô{N,bF#ç8	)¡•K‰Ÿ<GÎeóà¬pŠ2©9£ˆkk(ÃÆXbð³èo,úù¦èj™Z²mÑ/Ö²Î
Bêx ìýÍô±?Šðo¥ÆCø+ÕB‡{á_¡ÍýÁ…ÿ‰Äúï£©oyÐ»é!+M»(‘¡Xb´Ã@é&<“ZJŒà7Í(Ÿö^1«¢Ð	B^b]aË\&v¼¿¿ÿåçî/Y4?uß÷o†ñ³øj?L!R°ª¦ÒÝt_­'ÿó“¸ëéb¿¼ÿ¾;‚òd|ã903{;õ³—ù½<``›iñ¸$x§LB‹'}!ùZx'J²'qV=Œz¤ÿöýÛ.hÉO$ts}G‹\à8ÍùvœÃAëÖŽ÷õÐXµNŽÙƒ×c8NÐtÌhï>å€5Îî–Í¢!/¾÷5N·ûüòîûŸß¿_?U¼Pû_—£¤WTî­5}±\#ü[µCû{Vp,œÖ8y\µ{ñã«WiåMÛê@+O[b?Õ	­¨V|Î €ŠDÂñ£ø„€žíøŠE/_Ã·¶^Cr72}l›eÓÑÀÏªEÝ–(ÙqÉãDIíóÕ¬Íüd\¬öárK6&uÆcÊsY¦ŒÞÅœ·špJAVI-¡ØQ"<ÏõNbéAµFÀžÙØ	ÙÐ±ÝlŒ“ÍÂ.+¹1))ÙX}Íú«ñ±V6Ðó1ŒHs7ú³ð±ªÌ?,«yÌ¶›˜µìZægOã˜vAÕ[÷!¾vä 5N–HVã×®­›³LêÚM_RÐ@½Ä™Ï¼ïQyß1‡êm¹¶QiaXPl¼ÒÔZ¡ŽG+J¤¤Òiå™”ÜKÇ5÷1Š³/Þ¢dò^ÏÝ™3¢fÏìI®kb£B¢uR'¨Ò²œ@Mð:ùÓVÏ³™­YOB›ë[íöIISí3í¶ïsŽRó„Ã®r‡ÆÑ«6áx"Ö(ghtÅr¿Šñ´ÊN´Ü¿z{œ/è`ør2×œåÕkŒjvÑò7žµSÛaÏÿç6þ*P,&"×ÆRI±5Ò[ä4HNBåñªHÆC™S<ãˆÅäLÄŠg°‹ l:±ïµêP=*6	€^' º†û.ðlÙ©IZž´•œÉÊóLœøNÖ6&<s'ÊÆþ¦7›O²QÛìüšÄ¨a­ *?r–Ä„¤ —WYL…Š² ëÌXd¹ñ†Ã4f˜#¤<çŒÆÛÃ¾íþôÓ¿^¾ÿ=yùþÍO¯»ÆZ?ˆÇ2Þ­ÝÜ™a< M§7ï¾ÿ±T²²:±ûjãv-®ÃöæC›ûûí¼h§È
uNÌÍR–E€\Žå¥`'Ëð‹¨²™AÂþ#‚wgjÇáM;ð)ÖyU54W“ë¥­—?bµ­oþþã±4XìñAqªE	æ8›CH"²EÒ$YCÜÁ`u4ÔÆƒæûu8Æn·€ªµ^vƒæ£'ë8©Û.œøð_¿ûå£¨Œ‡ßî¹Ö©=w9â@ž
ËÏä¨,=>‡“õ£ñÛ#¥ 'Œ‰3e9wX;F¨ðYâœr6h¡§AxñÑ„‹ÁK,Ì3R>"RÒ-¤D»CØ0ŽÇ›
9‹ÉªWHIc˜y{¤¬¯–?ceŽ•ª…çÅY°²B•»<¬¬Œvo‹•u}1€fËvõý*Úàýé@éQgÐGÀ)àœd\QŽÓR›à¼BZ‹5Ò[ÏCŒ(fÉ2'àgg¼·Úr"@1Ý§+ñŠ°»ìTÇ>ÝWX¢‡ÞúétË…¥:â#<7sWäiîÞ÷ƒÎ@}ŽÙùói*¶oz®²¶Š_×S¶P†ÙZÊÊè²ú@Mt]”¾|ÖF["¬d-b»Ól*Í¾Í!±ö)xK´­S|³-æ68Âo¸³þÁDÚj›Ù‹ÑkL÷‘í_Aõ?Á«­Ç;p¼é=ße“Na¢ÌCÑŽHF°ÔP_BŒ£™âÞ(Ð»52Š‚•š g³#Ì½%×Ü8Ní>“ô33xf jëÝÀ$Ùfj“ÔÈs˜<kßM¹hg©>/78&þHÜàZù37x<SÇ3IØGŽ¬<~„5àÅð,`éžé@3nI°ÞR–1A{†‘¦ÌfVÉ˜ðVYj¹”ï!	Ë¢â‡lîMÌíeÇ—Äaš‚$»6¯e¾$©è4.Ù)ñ€•a>e™]Žcã—W]—ÿÿœd¿êNàx§SÞÝÎý$ÿåºû*µÈ	›²Ø–Î g£‚Ž¤Çâºû:up¾Ü¥³$,y·ð¶iRêºû÷b.]ÿ1šÝÏfÒÍ#Ïña>èÄï§ù¥Ò™<#+2tÝýu±×ŸŽæašê/Íü—¸wÑ;pY¤ÊÅ¼¹¥™]wÿY,:RŸònôK3_u¸pj¥Q]j¥™Ü`V$:o–™á”ÔI“»ù?3«#˜A¸¥@ùœ‰G4(·¾ïG•Uÿscœö|¢M=ò„
~»Šïˆs ÉŠ4Y Ô‘Å?}²í2Ð$¾xžúÓû ¹ÃX0eÏŒ·ÄI+$ö6€”Æ^1æŽ£ŒÐÌaK)×”Zj˜B\‡=Läïfl†~ê»ÿe†&þñ{?¢þb•öŠ|;º‹× .ï=‹æŠ	Àbä$FôkºLï®ÿÅ»â«ën¤÷fšž:×5! #Ã&EÈi¿¿3vzè[š­C—«hû$:§5KU.cÑ€¼Aw
¶ñéDïÂSÜ½M|¢*ÿfðPG~îEªÔ€”ÇgánäüàñR=Ìýpôrñ¬	Pd³¢"Û—E7ÂûzL€£rT b™‘ï`Ã¬zéaîáf1yæÄ'œÈ~kåÇ×QÄB5†k˜Æ!àÚ'hWÇÞbØäJü93œ/Ã“÷ð°¨µ=ØÓ²?ê‘kT#]ÓMô$¯Ùt”òáÔlý{Œ?H£ãZíã›ÕœÑÁjž-™^,¯»óÇï—câå˜¤ª²5`UjVJ:]š~úäú¶Ÿ:”$ëTü¤®­ä†¢â@O(óYFÉq#ŠaÜ£YC¥7ZKÐSÓ;Á©Õ.òÌPþ˜…nÕ||7C¡*æ™Zc(ŒË(T#œ`§›&z¾ ŽÒ¶á8
iqXs&ŽR¡³·å({¬ñLVÎÐ¨D^ê^ªÄbêv)Ó™º}6xM]cËÁ©Ùñ©03%:'÷9[-¡Õ=Û¤BÃQüë¼TˆÊ„sÖxA2ƒuÐ„`cd.#Â˜ŒIqH)â^(Ì´u<†}¹¯¤Ä«´ n|jÖó$®8,ZíÈö1Q<ŠûÑëƒÌ§Eé2³[3ë\ežŽefÝÉ|Ø@yTƒmR,ÕNª!ÚtJ/)¹…h†ë8Œ®öutóçì©'+X‰K!^ŒæñÇÊêmÔo-~âûÓT[üí„ðŠ`„²L«h¦2äg
…©`‚²L‚P’:ÃAyÆ-ÁXiµ!Bñ@ö•2{»¦gB¨™øI}v
ŸÁŽÁ£èé–DOçÑDàQ6·Ÿ|^Wô àI§¦ ’lžšRº»º(fRc´Qÿ€bÐ’´,§g‰Åð¾zò'îW/=3_OÝy”-{×{|]ÕÂW}‹Ã•dMÕ«\5æ!e§zìÉ±ø^ÎÌMÛã.qM–fšÙ’´Dø yð–Pa#:àQ˜	`VR Æ=ˆºÃ_5´aÔàØ;Œ~Ï—kJç¾0]XiN©ú‘ õÃC4³,DÓwœÕF¥RÒÍ/ÒY^äºÓù!/?=ýkçw§vÒºÓyGŸø›þ4>-ñÉÌÔ/ë0ÿæÔ[Î5ýâ¿Ìâïéç|®éÇ8Æh˜~Œn2f8[´ÎkH§ßnà=qÁ€hŽu°ónn>t±õÿîÞÂ—ƒ¸7£°.½ãÚRë±™Lý$ýxÓ[õ‹yX3ûÖúÿ†ÎéSÝ^oIòâ>,Í°Ø*­vóHEY·XJ4]s‚¡¼V¦­bf½ôÖôx£cµ·EE2xª~ŠEÆžLÖÍ=ë>Á¡šl.Í‹™&Ž;EZÅˆõÎÖÚŒÜƒ×¶7pwƒÞë†]æu»ì¨ùxqv17¨qÌV4Zšªð6ÛWÕgYlñ>NÐòf¹«[6‹¾@ÿúé-‰‡K×´j‘»º‰Ã[sLtó¡!§ä(õ¼Z³”ÌNÆÂ…±>˜,&uÐ^Ò™:d4(„É`¡Q DiÎ3.™7†íÍjõÌRžYJ–"·X
Ù}°&å–«.fdÝUjxþìBëúºæ%ð”¶zçyx
AÍÖÎËS*Ï×Žç)5*v–f}w”]6…©¹ÂMnB®y³m=I©9ÿ½l¥uoQëhó8îržÓªò-i^ÕšÇÏQ¦ƒC^d ¬²*Pc‘w^iÅç(PO…
{§,wÉ˜rFÂïËÕ]"«#«JCqy/v¤ìÞ:ûZ¼éO¦e´ìôAzÓÿ… ¤kV>–‚O45ìÂå}\­úSÿxu‚*åðyyuQMI‹"åGÙ“pFóY{™’*,fÙLªHÎIF‰AÞ
iy°™u‚Y`= ‘ÎÃ;Â%aNQa%ÝCâ)e½ß§½zÿ¾•
×Í×~˜ÀòîG“Oû¥ËÛ~ö6µOÊÏ®¾)â¾Ì‡ÍˆJÃ+3µÆÅvïgÿþÖûÙ´O	hwÝMBk9–ÿ2ŽñvQšxëá…íöá×(½â‰º‰W~ýËOð”Mæ6ªOf0»Íon¡a×bz‡Ñ,î÷Ãbÿ¤¯z±Ï·ïÞ|sV!7ñQG‹®ŽcèanGIÌ”md­"‘„q´çÀ]rº‘*8žo­•$PË:u&óýîåg/,Hµ¤„¿¤ò '‘p_ÍÑoçF_‘³æçîùTKº=²ä>ó™?Àá~7ŸM/.ÃôP»âA-‚’Â(v9m­¢Q•×y 0=<^å>Ø³ã£x$¾óÓþl4y8f B^ôr^~ÈCÌØS3ç´mñ-_X;x#^ì¨J‹XßN;ç¥É2Ìµ1<xI¤*S>cÐDc™Ï³mÔÞD½¿úüí¾å¸óC=lKûcÛ&sÜx>»ëayÅƒbÈuÈ»XÊ¼v`ÈþÍ°/šƒÑ}ü!öYŽ0Í=æcxüøöaMdÝ¥ Žòt6ê=¹à….Rä&83["a¢ñÉÁ=M¶o£_ûtàðìÍ$6…9ÄÁæSXÞb˜Á#ä)j‡bß] #@Êu'L)[suÇ”Y#/Qþ
ôÒ³ÜŸ2îXþñHh‹óÃu‰¼3 |·¼9¿ÄáÍÔ<'äöS|ÚæˆÅl±±]M8wÚX¦LX#©
A`E™Òx@´ƒ¹Ï”™16ÄÐ&FÈ~„tÞ#ÇS"·e‰ú(–‡ó»,—aåìçóaÊ)ÒÜ™þ r~x‘~ëNÓÛtÐXÃ/ŽmÚ^¦S\&©1 « z»e8ˆ7'‰á…æÓãÀûêcŠ“ÎËÏfò2üb4éÞÇó¸+y‡\.Œç³äéw÷Íu§ó¿sýt)úå¥Àçûƒ¤&ÞÌüUÌjŸ¤ˆ875k#‹§è¼¹ã‹Ï§×ÿc®Ïúf¸4	½,=Ê×·³»ÁaÄPuÏp(ÅQ<• ƒ)®Ê–!mruà"Ÿ\”˜¬‡‡ošS¡EßŽÇÐ=ÏÌó2G‘3ãÅöú·©Vx‘Ï¤1vÈµªë%5m3òÅ»‚aÞ?ˆÛÝÊX2š­ë¨t"û€¯~~³¶Ðç•Š
ïµ¬‹µ:¥³Ö(cAa±ˆ*@D’aâC-s‚ÉL2'Q& Çgè{†¾öÐ§· íNïN	ãëîœòµjæÐ×Ò”¶E3GùK¿ÖÎ–ç¿	ÇÎ~•™½Zƒß“ð&8ù‘ó¡áÍzµÓcD0o‡…£dÆ]æµSJ0o˜åÎaxF¹ƒ/qÌ2î¤s¤)>ã"ÁœÝƒ…?˜é¬;5¥¦½âØjtÓKŒîe¹¤Tå°ønÒ÷aðÐÍ?Ë¼»ê®¶*7úÍF£AÄ‰ÅÈ>]'ÚÙ uÞùQÌGqßûÖfæ“ç`£Ñ§Ó	§€93rÓ|ö)KF+:e€°×Ý·±E4ÿu\?Ÿlsw&:Í¾HvÁÕ¹¸›~ÓOçÑ¢—ºú>0Ò~L?ÚŸ¤	\w¿‡ŽÝ~ˆ‡aý<2ö.V""Æ%½ð×7×¹2ÀóxÃO¿¹Ê=üF7øpÇ”Æ§£Õ%¯rËa>0¼h³YœÔÄåguÆÅ¦>ÒH^¦9’wJ»ûá‹|žñZ70¯ëî?û³ÛÅÓþ?Œæ)éê&Àìâ§Åú:ßæ¿æw!ÇþÅøWâaá" ×¦UÀ‡¦x~Vî”i%wŠUOÓ ÷&7—.¯~V"p½šþuJ«w îéfír…ôîÚåZh½å­¨0Z÷V¬S‘O.e
àuÝ“aü£9(îXìñEÌ…-°=Íä ï‘Ô#ÖÑkÛ1_2¢ÃTýt6©‘Ò* äÄ\±);ÜtZEUâ³#¨„:¹ŸÜnrPWS>‚x¬âs‚%Ü 4òHÛ€$#VKÎÓ–f!SqÎ2”Q«¬Ïtr¡{¦Ïôà™ t‹ìÉ¦4Û¨õ†µFkµÞàU¬–)|13<„Ë#ºÿáIèþe¦PÓ2ÔM#µà'Í!ÕÎq™è¹Qët™GŠ B,<…ƒÞ€	åÁ©¹ À§”bƒ,Fˆ óàÞ‡èlM¤©Ñ¾,-ûðÓÛ.¬hmâ¹Ü[øÉ/¸ÓA»útžõ¶îŒ—{ñ¤ËÆ{pQ˜²Æ¿S(RDm¸ã ÄSŽ¨•?ÂŒÔÉÈRz°¾6´¼.ß¹§.ð¼·pE]mÿéa ŽzÈœÊ¯4ïoUDªk$]…†RK¹€2žPv3"ÓRøKIEm ØK)yPžÄP"N,õ"ËÂ!`P–˜Û—Øî»‰éÃk×M~ƒ•;a›Ð+X©
½-¶¦qYîÞÙÆEb¤ÍkÀgqKãaçv7<ªoÓ€Å“Ëd(‚ŸÍI&Æ½ó˜8Ž:èÃOñT¯¸êUgÄêÄØYL"-çÃÒåµ¥¡V±Ý©ý­™vÊ—½}ßúaêrÝýÙß—šG]Ã›i¬ÌÇóÅx…ÛI
7 ]!Q¥ü~‹áLw2ø^Ïuýtô˜VÔR3†gô9Ðô[l A-—Oðmg±Ç/~öwtŸ8áŸÌ$›Onâéç²kô9]nâl9JŒ ÷pÇ¢ÆU®hYè]±× ×O£v3ŸÆÊPÝÙýhí>çc$­^€«îÏ¿½þ6Mä—‰5‹ 4÷ù4/è4Ý­“J6Mlßºf:íOg1zcæíípïþCÜ€åQ]Úxÿ%×»²‡îo}ÿn0Ÿ–—¸IR¾µ“/’ôÅôÝw¿¾ýðá¿×gž”ß·ýáüËÂK÷ª{;º§ËWÝ›ÑÐÎLà¾>Œ†…vºö¬ ¼>96ì„_%£H\NŠ¦¤ -²ð‹Aý#l=:D0Š)/û7	&i­ŒŒiz½$æz¤…Ñ÷kçb<‡·,mš‰1›ÜÆ7Ã9Ìé0R"L‘ µÒ²înT;8`={r‹OUö"ª|ÓÛ:ÚaÑòúcF5®˜š=ºÖéÈR}¯=]µC[@]i…&Xø x‘1Öƒl3Üc+Ksäˆ¥Ez¹F”Aäq¦Ô3]z¦KÏtéOB—è]RJïö‡º$ÄF)/ K ¤xƒ.)TË\±Ågôy&Lë„©qÊ€§D˜*Mm	Ó)ÍëJæt>[ùüÓj+9M=‹“^Ôo™%¸™²Hr/´Gœ(a2.—a©…vÔà`'!E½5™ ÇÌñé}ìémáoAi
&"çô.žÄÆ."S#Î¼ýÇ½ÿŒ»ùÛ~€DA³Ÿ|ìOÚ_-º·/"JSê°çbÛ%šE¼À
±úÓ|Ý+S…*húy4˜?bù…AÌ7õ³—«§`7Žä0x Ê8&a„ïÉw#ÅÆI.#„”re´ŽÂ_Ì«§{ììãµ¹Ìã“žkÒÂ¾^Lãìxã«†«£‹·vÍaêBkíäa<ƒl>Nªi^7[¿xõë¿ûðþûÿxW•Òö¨ªÏ)uõò– ‚¸Ó!8dSYD
†@üî¤3JhíAïÃ^J'VÆP¬KG´5ÂêgPù* "7A…
´T6-ÉŒ¨ì±†H,C›Òö	xµ:¬à>Ag„•
¥-¬<w -Ä¨çáS4guû9[ªÍÅÓîüg?xT}F)LbÍ%ä¹•Ìf¬Â>™æDf”®C‚à‚fžjípf·€DœxŒŒÞ—iâu\Èh|—g×2c.%ëA—ŸmwŸ.à$ÒÙð…šÖUA0Vl3«ZKª@kåÚ\{¨žÕ¦xÛdÁ^Ûó‹÷|ÐSª$ rQýbqŠa‡”Ep&\ºW&S;´Cõv±ŒOgÖP‚Å˜Ó`vTxšQ§¤Ó™õ’:J¤rRÓ ¿ê@ €pF» ,¡3‘¡}>VÏ0±¼®R0AÉ&L¬%  µ2µí†‰gÅ¢6P€&~±@q"%ã©ÅcéV—wÆµ-’ˆù5Îçe3÷3ˆ88N‘Ùë½Á+¥ñY†ƒAŠeˆ€¾!2"#A‹‚˜:¯ö%!ýéÝ÷?vÍÜõG åí(ÚŽ*]I~úöun«ºíßÜöþgnýÙCw{¤t<oç“u7xX9DÄ–=Ü1ùñ|þ+Yü‰^oG÷0“÷Ñ ÏŒ
w-„»Š¹µïý :#Äîé¨g“¨Îg@®yTxÝAv±º/æ50pkº/ÞÆ¿»o®ºÅo®Òd¿½éšëO×æ¤ß¤øÁ0¡‹ËDÞ=øa>„„—"¼ênngÓ—ðìíËKª„Æ
k²tÁ¿{ê*IÖõ!,ITJa’Q]ì`V½âáî‘fåŸÊí\ê	*ñæ64˜ÈáÜûdÍë/l1ðÅŸÌa½"'}ß0õ+Ü1˜›ŒèOI60æ%3ÆÊ€<Ê8s„Yd‘W(fÃÖB0@‹ÂÄÐŒùgˆùS@Û„
ÒNˆáZ©"7éõøíXª¾Ä4MçöTlnç¦.d*+Ïµ™'qNs‰n_wîFK§/Š{E&[!™õK…”u{³úédÀ âOL´}y‰°%‡[nâaŸV³<£_«ë;à¿³ÇY¥ðíèÎ_ÃîŽ&×Î¿Ì~ùÉ°—ùùÌ^æ—?\…€¯‡=+„¸Ö»ÍZˆãºO|¶V”T'­t>³^¼ë½ü~?:Ý/Y8ú·"þ;V|Ü¢ny>‘C¢sÏ»xxÀ:Ä¿ÕÀQxÉKÅ0Óø?Å²WçÛJ©AÄ™$;~‘^W•8B¨sÛž° •äqjŒÈs^*†¶D<!•Áæ
éË2øÚí+÷gêrK¨ï9ÒÖJl‘¤Rëµô‰T3ÕN¦?>¿þCHuÕ†fŸOªW0íöRýI0íMñ^Ó*—óO5ÛQ*p¯CÛò:º¥ØG@ÓMf8bÜ(Ç¤ðkâˆÔµ^
žÇ´"{7”I+,Pyí„Áûj,%ÁòÐù§bÝ×~úi60#-Z&[RJ™çWagËÿÕýg$Ò}·M›Ì‡ÃTË,&ðö\~™Ž¿Ë|
Ì,Þ˜æjo£•èÖÝ­Ä¸êNý¬­»©nÀU÷S4ýTäï>ÌnSñÐÁÔwB*"Ð‡þEtãî«¿q>žÏºwÞÂ˜ý)\#ºóZg‹£Aÿ®n;¼Î¿Ç:§×£^\b2-ž¯
Ûªwƒén3ˆO±‘‘	KAÖN"°â¸FxÈbj=xŠ›ê&§ËÄÔÆÚŒ¶—}|º?Ù4Di&‡3òï’0U#Ö+tÓhäìâKÜÀ,ÿ…q•Ö[ù/³:ÍÂl-_ÅîV±fi>µªŒÁ±1È®ˆ	5®Þ@ÓºeQîÔlýûØ§©ŠŠ…­Ú½ þû»ïü(®IUöCxAF=\k"©m˜‘&Í¿„YÝæÃ,Ò-©ØèRÃï~þ‹c… Ç¿Ï˜óÇb8õë(µå8Te‘´2
üF{b£Ï¢Rƒ<ùTp_ï©F±K*
?z„ž9ÎŠãl6ÚwÆ%Ý,‹´Þà8H‘Zªú6Ø|“–£Z8¤Ÿ™åTV4jÁržŠº¾ ;55õ%ï©Û¾ @u³%¯3¡º½Ê”¨fŸ6fŠM’T³[‰5îP¦MõrG¯±§º	§7iT“~e>U·_‰/5ï±`Xµ:þûQió³™–¾Ü‹pY[Û<ª‹T¹¨óÊDFfXPa<RÎ
¯¨òYæ%Ñ‚Z†´ÉˆTR§Rzj¸ŽNJÎ™°Ïº´n3¯/?Á»¯¿Kh_xú
™ðÛå½zœØˆâr×EŒDôrý~í¤1š ¦1™Ô’Æ¤0Þ}â@™Þ¬ÏH¤*‡\s&ê‘˜bb½ôLôò§¡¶­æÛ÷o»Ð-1ÎïÞ¿~J®=;×}|{Ý¢*ñr2‡ÙÆîw¶rÐz›–ƒ_¼Gé™O‹+
ç¥Ä}C·ù7~Ó1’žíÏ\Õn4o^{ýB#ïî\‹ÍÇGÖ‹Ü>õÕþöðƒµ5ÒdÚfôzo'ÞE¯º ˆ‚_#B Íâ™¢a¡ã†;ä‰±d_ÑÈgøQ”lÃÏ-šRMÖ¼9l{ù¼›'ÿÒ¶ðS_þê Ô>€ál Ô&ˆáì T©K@OE©¾˜óì?<4“käxò*#Ñà1žÒ,„ÌQl•ÊbG¿ªñ3ä@•Ñ"(jB°c³/×U9’|‘YªP^ððÉ7•²Û`ËhŽÕmëÎgý’™F÷Óî›w1¥3<rÓnÑ,U.Ú@Ö‹ÅCŽêªcDó´ŠD!RNjB±âð0WVÊN‰4FX¶ÆÄê öÖàU?çI£K¬`//VcüãÑ³i\ûWÐRmX%bŽ²éhàgødVž©¸XÜÛ·Qºjí¢çÀÅÇPÜPÈâÁ)+´NfDbç$Š«b¸‰ˆ5VdÈ!nC0 T‘1VQ¤Â¾ÛgdüÈÈëjŠ€Œrå:2Š¹!"ã³¾x6¶ò.{Tl<¥îød±ñqè?%HÚñ¸m}G¹ª¿ÐWô?¨1Ã@=Ì¬¶™ÔQwÔ–ÆT• $¢ÄsÐ•.SœZ"¸Ýyùí`æ'±èÎgß}õòÕ_þ-ðØZÀ@°sg<ßÔLD¶xì»Ë<cyÿ”vï¬îAé¹ˆƒ›{ã¯‡~vØ-HòÍ¡÷EÈ+±‘„E¤ Ì’[ XÖq}†iöÒÑ#Íô¶“àÑš;Ð¢ÎÒcw¶V{¼'nQ6Îãp…”Ýoè¡ñê•ªk>îÅŸ™]Vôä©\¿\{¹Ì]°È0åçœ¼ÆÈIÌ¬áX³Œ(ì1õ(8ÏŒC
¾— ’	r6¸lŸ¾ò,—wËåÝeJU,3³.—9¥jÍ]3†ß×Q ¶$U}­áY2_ d®¬‰ÕR2?‰Ã¤‹Œwô®oà¡iïxÍÚ¥ï5Úf”ðY$õÂS€(3Dp!C™åXz®ƒ6yˆIšQÃdÙ}YÞß–<îÌÐÜDwú´H>³®5ÐkZô>3ÓOÞuïû³Ûå0W1V¬¨‡ÌkfÝ`×øgOä;0ÙõÍ0ÆÊCó—?þüËOß¿\»™‡ùVl!ç‚œ)Á6ýî)¨4eAŽx½ØÂbf½ôÄ<•¼ï­í>»V{¼$g¢…$/¦Rá¿ë-®²fPa›¡·B×.QœG'r÷éã¸ÿ%›‡º¡yýQÝ–g‰÷»¤rÓû §A Z[ðA„QÎœqDs„´D:#™ÅJ‚2"·Äj”¥\q£0r^Im¹ÐÈ†Å3ø´Ÿ­ /²'—<b3°Î±>XÕrXÛ%ŽŸ@6ùÖGòç‚ŸÁ^g†Ÿêh¯£àçI¨»q¨nT	.,Úê(¬:—¶t—„lëÃ1¶*æÌ|¦6 -)ˆLÃv§Úùz$åŒi¢ƒÍ¡!xnbâ€ƒ¶J*YF8ÝçF=èÇó…*‚Ktü‹ÀÀ^ŒFƒ"ØbùÝ©Ÿ|>T–±¼WEiÆd7³Û×ZŸá7.Ñy±°X-¾H¨óÍ¢z}7‹‘ÑpéþÍÐÇÁàþævƒ³¡ÓhòÐ™Oáž^¥«¯nÊÜ56Zðb§übÝiüêÎÏnGnzÝéÀ%Ì`:Z%žBChg;vè¯\ÎLfŸ¸·#ÓñÓ%`g~hoa³R%I³X^ZÖØdßí¾Šw'ÿö§m l÷³è”ãÜ‹[4ÀKŸ=äÃÌò÷ãÕhü—ª4ƒ¹æDÓýäÒ2gÐÕL\w4Ÿç³ÔmÜ-uKE1¡ay~n~÷ÿØ{³-7n-mðžOë¿)¹-¦1ÝkÕZ¶l«T¿d«TU®+-Œ™,1Išƒ†sÕÑOØOÒ ‚dÇ@‡dJ´l9“ "bßÞØCÙæ×ðCœÞ×€•ïÝxn^øç}ÀŽ°ü©,ÊOcžéùxÓX‹3µÿÒ›¤©¦õ.ï|úXÌÃŒccßŸMîbãßÓ±at÷H÷"´«Le›Ôxâbó·é‡0az +—OKHÓ7§¼÷®èùå’ÓãúIõúñ¦ÜÄãûùý#<NŸ\9¹g“
?Þ§)=lÆâö/Ý <(a/Ï@?<“øPªÊCnÂª¦óžÓùŒÛ\Ž>ÙXåŽÛ8ÆDqUñ‡dU“<¥	¹úŠ§wr/ñdÕ|Ì±;ŠŒ×AW=3	…`á¸ŸùÍ'Ø-o6Mý´|1w,÷Pî‡¸lZeAÏ‚zâì3¤Ú¤¤õ]]î¸Åö“ºZ;jeÜ9z{ò&aûMbçÊ"[jÏkÌ‡I“XûJ‡—/^|ÀYÅJ…D<4^–|¸Ùˆ¯®¹kÝðËäÀ[Ws‰´¹»¶ì½›ÜÔQ¬u°+×zF—Æ[¸µ7ÎÍ>0	\Å¾8s²“©5?þØäÙ¨öxñ×_?ÿòê¼ÁÍû¦µýõWx‚7˜£Îñ(ü þò"Â„Öuæ¬ô!Lg[“9­k4­iPs•È%÷·H¼±¦IdŠû›$Ú¸¿I¢Š5MoÛßb|¿ÿûú}$o‹Dí±Z¦mûÐ]ÃIi0Ž5r,€ŽZÆ‹ù­¡‡J3¯°BÉvŽJC½ôÈIÅ4g»2P¬è™ý‡LJÍJt.\Ã7G*{Q.þ¤>	5_'Ô’î Ôr¼êÏM cU	5Œå¤žXyŽÖhæY}æž<§ …cFäÐ{9y(WïÔihÓ3«=<Œ™e6;8ša?§Á‰;&ËoBîs)zc*ŸßaÎ.êºÔæäX£œ-ÈiÝv2Ú\*›MëZ×6nDK¢{"ŠÉNf4ßÊ=Îb9'i‡<“ÈjËŸ€Z!ã1õLkë©aÊseCLHO$–Òaï Ä¾Ë/ôÊ>rÌy€¯äbÁ!®æ½ÂbÐÈœ·…}\mzùlqž[åMÍ%g!"f"Za$Ç³/]-‘m,‘WûÛeØßc'':Ù–žva„ °ÊR ðf¬D¶@yjÇBRm ¡ñ`ßRôqÄp˜C ,óÐÛ¥•vJì »JW½ÐÞÌúÓÞ¨ïº½û¸ø?Üôópü±x9V£»ž™,jþîõI{óÇËò¿_¸<:çš·‹±zƒ"6}–®¹zÁÎâ‚?¤³ëÍb*Ü	ý0OÙ6¹)Ò`ËÁÕØu´šôb)áè7†Ÿªôö—±é¿¯5-š¦ËL¦á=¼Ÿtzƒ©»§žáÇx,(ÌÝlðñäƒË‡,%HßK­$Ûp‘£ÛëR" Z¥VT€Um*0&9†ÁmrÎÁ]ÞÈ–óÏÐ÷p25O«ÿÛCêýsÔ0Û²ìƒ½ä„-R¹n÷GÅl1{FË‹‚l:ê‘Ì$'õ„;i5“¾¹Ÿ Û[†aíXôQkŒ?þsMóÃ?[ã)rÜ9'œgÌ $€6JGÇ7gˆc:f­ñ€kà¹ñR9UF‰) Èñê¾âéÓÃS¾§ˆn7UA×žÂ¬¤èO
Ïñ9_–|ëÄQ×µMUÐ“ jmôj+D}*Næg-}ñ µG/;z€OÒy
PœÌ{=¼š¤X= ™!ÇK…Â7†;	˜U(f!€ÞÊ Ü2Ç…
ê¯ƒThæ0óš f¶T{Ž2òÈ­&z«Ãé9ô‚Óñëø–7c	™Aßß¹NuË7Íþå„ÎÅ‚aqèyöºTWlœü»{1À«£F£€	h&óŒt³‰[óËÛàâ]Ê«DÑ§tåX€@²z,@H^Q¯Å&?¢{æòÛ'ZÖ¦š×bïŒùIV›Œ½šGnp[;ð1´Ý¦ä"jÎ·´n—N¨Þoi_”Õ‰—Î 3¥,%Þ
@²\{)˜AV9‚<@^ã¼—ÎQˆ	fV4•²db—_Ú™.™6#w¨™0ÚD&¶ŽL9ù‹¶"Ó¹uÁo›(oeV=16Q!¼bS-6åè]'©þaõ)À25L6
•GRH‡c¾:¨%a
bŒ½ÐÎ[¢ÃgØ£8ÅÔiË”7ˆjŠZ”—Í”§r¥ûónWwckù¤¹÷RJS±–†»SÁ’ø˜Þ˜ŠèQŽ~RÜ¸i˜ÐÔ“£Ó¢„ñO‹µïF
Ð
ŠPA!`[Q„P°æöceU¿AS‘ãö´ØìäDºìq²'=Œ¬.ù`¡¨M‹Åö×9my¿kÇÌõžÎ{FúŸFÂ¼Ž½î¹ÔØÌu:ÁßÄsµ¥è‡F"§±ã±nžwÄ(k-ÄA¨œUAoáA#¡ÊCÊrL(nœ¢VcÄ®ÂyWÑßFôãuÑv$¦¢-€=Š~ÂVE?ËÊ›·Uô?©Šõ$üI›ƒ¤SÿÕoRøqÝá¿ã0íp™öÄ‘ÒV6%þHÇÚÄ[JÇ€n(ÅŽ+,À#*ˆ!HÃ$¤Z`€=×Š5ÝUe`µlêýÜÏ
M/­ xúîKV½éÝ½›öÌnPè¼yûbžàg£ëCÿ˜Äd1ê`v¯c“˜Þ®£Æá^EaÒÿZÜõnï*³(“ÜŒÃïÓ"H˜Mæ'ŸFw2L;å êM:Q” Í;ùaY¯'¥P	w,ŒÙ˜¸Æ0ÍIñfäÇ'·J•»ºXKm<…Ö)ñVpaHÖ«p¹b‚LRœã£02IÂ¢®l®QàÓf¿üý××ÇE—÷1™Òi‘emÝ‡×ãiJfQ'ÿ¶È=£åRêf£®DÍ]¨gÂí}Êëb>sÜò¢tÍÈžf•Du—šè%-‘)úÌIÅ@€"hŒžJ&…B…wAFåIe°Bî¸£A 9lbö:¹+žîŠL—‡Ll¤p;2¸vn)p™h5Çâµ&¡*<Wlªb¹lÊ`ü-°é©¸Ï-Aê$mØzª‰UGÆºÖ
¨Þ®`Æˆ€TAµò€‚±Þ+lŽ¥'“€aÌœ°Ê+ÊŒd«k«…çQÛe`{3›¸¸âBÍloX„¥HÔî/;FàÌ»G|ŠeGãÚççù)7xJª9ÃºûÑšôRvÉ„UÏTLzÓy5ý—I1N‹þp2	03y„y€¦ˆNYS,Æä#5vóõy1–V¹¯ÃYñy8ø—i¡]'e)£ao\Øž÷.¶v1ëôsLÃqm8îÝöª_|VŸJ,)–VcŠÊÉ}‡qBçT/µ“ 2z˜‡™ËAÞ¼ýíe¯Õ× ÚPñSø ª;L¸=_DÌþ:V£ž=7-:›ª¹~R“iø°w…@5~Ö‹ûð¹kŠûj?ÅL£6
ÌðPösï…°/cf'¬òSÿ˜@ô> ]9ÌHÅÜ£q'SnÓ3Àuù@Ôh¢n 5Ý^×‹xRj9ªâ4Ç˜äÁtx´SqSö(…óÏË}ËÊÏ°.Ú”uM3©«2ºM>î1·¶wó‘#¢ÐKëÓï¶ c“Úßm¡QqK¥qBq¥ÑŒ+§¨bXi,J€ Ò 0P:Ã¡AJ"‡§œ º+:ù
Wh<;4âß?¹=[æ€¬ZW™@°ê´Á¤ 9ž[ âÌjÇÖ)kNŽm«O	ŽÅ½[‚ã“Pi/2Âi´S#ÁŸß-pƒoT?àFzrI>dJ®XøTê uŒ¡\*¥UT8m€aÀ M8T
™FAÆl2ë%œëŒ ä?ÿ’„m˜h
»-½+ª0¿¨ºüd¿GÇh6'©èÂr#"0[ÔÊÐÃ€¨{/zw&Ã wûÃ0V@†êô!ÈÑÅÃúkñ¦gÆÃÉÐOOFéyÙ¬Øþföñ§åw!†`„‡›Tõó!a+bp"ÄÚy)È¬ž„ð¬ôfibÝð v×Á†Î~O;vïÁÁB0n!iBû}àØ?pŽšuÐŽTFñ¢t¢­R>W':‚œAÆÏ±bÔzÊ¤LY&|ëŽ9Du8Hn¸xÃŒ'HsÁ=´y•ó#çÉºœGb{UsŽàZ¼*Ät5*bŽ²âUwË¸¦ž} é[›ÐN*éQ‹C¯3HúápIDÕáB	þL·å÷péP›™Â0ÈSa 8Ç°A  \Yeµg†'ç@+@´ÖÊáâ`
Àòþç¿„Þ}ÌåóRnogºß›Ü¹qa‡f–*ÐíMÛ¥úbàò¾'ë²R\”÷1kÏ8ˆôiiý)¯»¼hçá¢óJkenŸOA$g“×í›â¿‡³Â¨A«q¨h‹‹ÐéÒ4ÜÐû ŸN‹½½›Åùè’‘æ—¼~}ýöA¢ýôðí±aºžÝ8~´  ­ÒŠ9Ž§‡”AXB3ÝMi6:Ky¡à<¡¤ÆK=\äCˆÚˆü™Þ/·
½ãåQúæã¦ýªf»D«Pÿ²JôÌ,–´LèTãšö d6™œ†'H¸ÖÖ4ÇüÍ·.<;9•ä¥þ<~ýƒÝ½"5iÙ‘¶ìˆ3·ã)”ïM–¯{·æ`Â`k Ài¨pP°-ð”‹­ãVÄ¤Ðn	Š‚Ör,¼ÍµqrWö¤8Ûà`h{&©è»"VýY(ÂVÆÆØ/™o·ALò5ò+‹¦ï6.,'caµêö,ìIÒõÏX‹a…ke^k…tå÷Y°¯KÊ¹Î´.¾hÃ
{Ä’«‡öÏ¼?{èÙ÷ûs:jë]þ,„$n˜›h”æNB©Þ8e”×ØVfÒŽj'JÇ•§šQ%¶@‰ßÉÙ"GúóRWÉÛ›÷o‹{g{ªõ£wTn!®…ÄŽNcÛÆ5ÃûûÙ Ñ­@«’{Y¸TçÙ›t­÷Ñ9Ì¢öv^êç‡ÕI<û³H³|Ö–_Ä«;ó_75'/ð5!ÕÃºn]½ãÙþAb»O1”ðÕó‘èDÁŠWq`u9¾SÓQ·|ìºøqRÝœ­¯ôàª^0Ðäæl:ÚïÉ´]ì.Ï{¸ñ°QXÊÃùV"9ã¯£²ŽYM¤Ú2¢ü÷Û÷3Y\ŸMtŠãª±¹dCÅÌºO„ŸAòÝÛc€œ ÒÂ`åt€°¢J¥å„!ŠG‚a®±3’9
5€RƒÛuÖ~Å³aÚÀ¾Cðz)—®¸ßr‰È9LY—¬3ç)£H›T9§A‘Z7Ûv(rÜšŠ+ ‘«foÇ•¬ÎUx9ªJÒgN§±Ì&=$hoðOÚNu¡áÑ óNÓèÌ´ñž@«¡AÔJŠæ’H4yï´Á1†…% (¤Hh©…Bd¸xU6Ç¥þ’–ZLÜøSî¸•¦ß‹öáÚ¨2ÅÀj‚µaq¯>º *SM4þpøq6*RÅžÍ‹?/nÝÀÅ²>EŒ‚QÓÙ8fpï‹ÿúù?‹8B´ZwÌØÅ6/~-^¬ûRüÚ›|,zvÞ´ªðeøåôi +OK}N²n[–‚nOåþ¬«52Üu¼
I$Ë¶\y »éÙìÂf1“OßçkçlyŽïfsÈªÌgÈì’$9ãæ¨B‡Œÿ]»ä°Ü0˜¿~×¹´>ÃÞÙ±íë6æË}?§ã²Y,Aõ×›×(ž‰ßàºålëÆö?':¤Ÿ0Ô“aßM³ÅYŠ›×ï7Ä©ä__‹Ä^¹ÎÑy[®Áàææ”„ÍñÒ!òšR…¸c’ °Xà…N;K¹s ˜Åá]Fç+s»æÆ×™ÛCdÕºW %k^œE§ÿ*sã ¯8òNÚòýõ[[NÇÝà-ŒÖçân5ˆƒ¹ÛÕ‘àãúvw=pÏ&g90ßC	êŸ¹w®iû5¦Øº7ËzàOì-ðôøãgõ¹m„~07t/•s8·ŽS$J(+¡4[„µ‚qc€“\h9Ô@ä¼s ‹Á®Ðý]î¥÷jðµömñF™¥_é"€r7ƒœoÏfñ·‡‘×¤\¤óºä“táÎÇÞ p½˜±Ô}™>´|^L`(;¹s.þébÌ=™œ™Fâ;°ExÜîÕ¨“Ê×…Áß•#Ç0c÷<MÆ}Q1¡êó‡‘‹’p¦¨Ð_œºí»ÿŽ?Nžw^ôq™”¿Äi¿ÏÞ4ýô_ãÞ4¦Ì©xâ†feBžðõMñságý~Ø…É´–2YÎc†7é“êõSn5íDÎ9	¤sýôjôÓ|[“ëOÿ6¼w?'¥½3¨–¡ˆÙË)Z÷ŒåmåÀ±`–k9Y¡CÕ96~D)ÌÉ&×-_³†!JóCµtCŸœŸìÆª÷“%m²Ù„yìwgÝ.ÿö—¬Ô|Ü´_O!uøcZ&¿ûÐq5šžÏhzQQD[H^~Q{šç5óØ í(Ö"40½÷Phd$•’@¡Ä`D#ÆáXg%ü´3©á•æ]iÞÑiY§yŒl§yˆKäê)µ¤Œ""+,/|ÂA–µsƒî4öºÒ¼9Í£m‚ÒOEój£¡ yW#æ!FÌï1æH\¨l@½Ä¦¶‡$ÂFKÑv?´³¾ûE|xŸ`û£3§$sÎ,4pÖa¬ÑVAÀ¹„^«”ÕShî,PØZK-¬ÓhJÁ¤
ƒv•åþã—_×†{ƒÌ=ŽIžÜnÒ;þÿÏÿ[üá¦ŸÑ*~	ÿ±øÕ}
Ð›¾Hlr4÷0_;Ç®6žtžÝ©@Áloò±¬äêö{Ã¹­'?Ã°«a´ùµn:äß+KÕ,áyt’ïEêXå¶Ï	Æ©<ôž¤q]ñÑ…n~˜èçÿÙéÿGñîëÀÜ‡ƒ&©&•~~û*¦ÂŽ	íUUeæ»Xd¶,Ä4Žæâ’ƒá «ã„_ž—u§¦w‘"šù0•pÍK… Ü8=¼ãÊOßô&÷ëFöÝÀôæuãffÝ3‹…–íÿËõûÝivöyd‘¼†I—~é¥šR“¸m“ âÇaðpãnÇêþ>åJ|c–xùÉèkdÐ·afúÆï#-¼¹ÉÔ'†˜^ÄmÔ•AÎƒ²â_™>‚o÷¯ä0¼Z*7| `µTn¬Ë’‘=5L*¥œFÝ½/ø·»‡•¢6æµavuù²ˆè=WÉÍÎ}œ«5!^Ëæ*ƒœL&“
lvDÇ_Ì¦ýDsqvüBµK`
ï_¿û€?dR«Q)_›ìÝJ—ÆLùŒ§ÁJ-bte%†Üqa=ð{‹”
y"‰<7€yâ¤ "jGL:”vì"PÕâö¥[–·O¸•Ï·,io÷Žv™ø‹ ÈÅ_$Œµ‡+ Œ!e¬j8Â˜àœø†å3vNÄí(…1¾58ŽåëZÁqNeûcÁd“Š÷‡_3È™Òô¬¼zÆ·[Í&ãŸ¢%*\¼›c‹ºªr,ˆqÓöF…R mvž!’XØè¬4’áÀŠ/,3^k§Á\Q­!¤1ua`ASÉ*D’‚wÀMËSŽE~ôÞ Úô÷¦_6g^·*(ye¡¨þ¨ŒJbxZ&ÓñÌ,G½õçe…¥’Ý)¯^ôTâÍ—³óA=tIõO 5üÜíÇWnÑ>û¥ž½r™gQ3îÏçë,þg6(§“&ù—Q£Ôék™n.ÄQL6$Æ¦›á°äÓÌûnŠÅª¦?‹3ÝØ¼iZú«·¼^êðågaJ‹ù§“âsP—ãÿU…m1?ê»ˆÉÉo>:´§Î‹Oü|îe¥¯S;°ï;æ	¿GÁ·ÿ¤‡ÑÊx{‰e4¯µ$ôB°RlD ž“m8Î,½yÝò{b…[còú²x¸Eå0º öm"qÏp¹W{ñÑ…—äÕ°›¤Hi‚R› I˜wZësa æ\T„+@ ôÎ{LDÜbe×
x#ˆ”ì*b|Á+žÙ²íù^N­e‰œP^Í£Ê›‘ilžZ‰Æ¶ø§€ÁÅµNƒ)cÚÀà“ðq¸Hëc/\¶é¨d÷á7@( ·½)&–B&€ç:Vj!XZ3XÆ³Y,<u<& TÐ­	ƒˆ*'˜—P;hˆ»’‰½/mñêÅoEo)€÷ƒá|Oæh¸Ú+9ìELøíýï…+?-^Ådá*HóO®x1"Ö~
R½ó[:9ìMî’}2ü2°ñäöY˜K Ÿ4£TŽËÏæ¾+±Å±Šñg:N‡·©¹ðšO‡Ýøÿâ?~}[Fdvê¾Ä]5›Ã#àÊÓÞðøÇSä4í±J÷qpÛùãç÷å±ì¤'ÎÌÆ1û¹º–Õi	šj:ÏN÷·/½I‚äÅ*æ³ï¤…”š.ùn^ìÕ  x¹i‹ÌiÅ³w¯Þþ®üïa´èžø×›·o÷e¤thÙIû#œJ¹ÓŠ˜VíÄ©ñ^ßø±sá§ÃQŠsN^ˆû ‘¸‰’J°Q xAé[IN	äU3n!Ãd»å{×ÝõÆ5ûH·#ú†A/ 4[ëŽ9;sx04iQ»,N­.Óy¦Ýw‰ÜÒ6G¸TBÜ#®<­7aoØEYá·á¿Ü¦•ƒÕvG°5½†:RóÜÙ”Ç®¹­g£Áh‘™®Æ ]¶íÝÚÌöÕàGÅuÁãU[ÇÞFçÏ':Fb‹7 Å¿.‚¶9Ð6èñéã]-ìÃ÷GcqM
¿‘ÇA)ˆ%\ B½µœk¥”À œSçŠX¤QÑãŽòX‘Ï25RnW´î•Ç]yÜ)xZçqÑd¿ÇA!b»0Ã+¥l c9aYl¥é)ü…1¹Öæó09
š§$<'“Ë(s4&÷$Œ'k”.×®ÊíÚxÏÁánôå^sýåv[¡:Uù`ÏÀs8ŽwØ39cÖeNŸæ±8d÷¶$!n/Â(È©Ô@Ï7d13dœÚÀ5„1Y½£FZˆ”°Òb¯9å ) 0uìòC|ùn¾ÊbÔŸÝöK·ÁÞ¾(Ž÷w®ØÜ§M¿DU,¿-Âë²å—I…h¶I‹­'^Fòª§’ç¸%®nåE›¶*¾«ß”M‹2Ü0öá†=s¥RÕS:ÉÇ}ÂpW·±©ŸÉtÎUê	Måi:}ª\íèæ·ÃbÙøÕÌŒ5™Æ95yÊÖå–ç¶¿#Ù£ZiµÛÕ›à.ÊÛg?—y$Ó˜…–Al9³RsFáÎ
læb&¬•
*>?BŒ–m1Ive8¹²™,6³Ë°ƒ¨ddÍ$/–‡(@²Ü6²™Ç5ð´ç3—mÙ¡¼i±‰}|&GÜClrÕë%ÃÉV|tªsLûÔÑ¨Î……ZÚuÖèP~·5^ô-Ù‘.Ã.z4W+ÕA´êD>c÷ªm8‘ˆºC«ôpZÆ0T(1S–CìÃ1Š€WÜ €×Þ8ÎThc…Ö1ÂÈFFÛ8»í9=Jçã7jÙGñò?^-\«›†£–ŽÁ¥WölRfA¬bênÇeiÉ8öt8ìO’ËrgõÊ'Wí+}s;Þ»D ^þñç›ß~*ïå."%)’Dâj®³ô!ÛÍB"€V™ÄHQ­È1Áåø:Ý«nù¼4Lg[	I}zY"Ö}pü)/Móƒ®{µßIwûk¼g¸¼˜ÆÃf(®‹VÏÊŸ?ÀèC¿ÉfÑªÜëƒ²£SmjÒ­Z]iÝ“¥%3ª7¦Œ5èª„¾pmÞ[ó1¼b!3î&:†s&n?–íê=‰y®¡ïXÞT÷ùÊg+<Z ãmYí‘óN®ö`{Ô¿Ã§tc»ê€«]=*«8uç/Û¸ÛøáR.¾üm§E HÀÀ¾×ë´%Îâé|ÀÏi6jl©LÅûC¿òR+ã‹‹æÇõÀFàØX˜ç•Eá½ˆ3ÄÔRklˆ¦ZJÃ¹Epc°v»jÐ^Ùh%t“.Èäzë­°Q$Xq¼‡HzšsR¹NÌòw—ÀG[›ìŽÏG©l‹v>Z‹ÖŽæš4¶Ó–]Å!]áFÂ²Flµ}ßC®»‘£öH¶yîáÓ&+ÞÊm3{.(n~Ùû*×Ííµ$½¹Îd±mëV×p9šÙ¬u•*·êØ@XlçV³eÌyþ.—X7¨wÁ{8íù¯m½ù_£kF°UZÄ* ˆ )TÅLRÔÃ¥ ˜+¬3Ø ¡À’Z&ŒÀšžÍ0Â;3¦Cä"­j¦QO±—Û°YöcâR>àÂnxRÖ®~Ô±ÊÝÏc¾ë|oàb†ŽÄÖ×Î¸‹ÅTÿX1ò¾›âý›¸ÎêµŒÚ•d?\7>üãû4rLï\(=œMc(LÌK?U lo2ê«¯)H¤“ý¼›ZfÖˆnÝ4©ó‰Æáþ%¨êô©+–*ÂÞ³~È×óSå8ˆ k…‡…¬Â!!B9gýéqè¦¼Û,IÓÓ3Jo®õðøHH³Õ€4‘ýÇ[Îþó|²Z¼âv‰1‘V¡åoAÊ€Å¬Ö¢h?~õ¾è™Ï5A>²ô dçMÜ÷çïODŠC]ô·bq¾7[k4†¥÷HJNðÐ[‚ãŠ@¥E0ôqB!‰FR;è‘£:æ}´Š	pEãïÅ/ë—®£1 «h,Æ¼ŠÆˆœ³âM„ú–K	œeójX§ÄãZ?Ÿ¶xü$‚€¹ºÇæ§o©9¼›‡àÃ·gü?¹V4”ÀB"¤áÎ¥­
c!pQ$…Ç†1IæPJi´ˆç[†@©°6$#¯Üœ‡<üsÂÒììª¿pG.s@&Ñ5wQ¹,TMÿ r^„'æbHux–/ý… ¢ÌÕQ1ç|-‡"ã@°•ŠŠ|-µÌüÕU[b£Œ‰Ûac}ÿV@VIØD½u51ºPÆØ‡£hãÜügÔÚ÷nS<ùx Ö} TéSBêa ^n·Æ;–ð;ƒFŠ˜•0
ˆ
¢’i½TŠhg„0GBÞzå×Žc) Ñ„Z† X{E²¶H†@®~ŒM$ëH–¯ám"ÙUÏkˆeM£½ÏˆeGÔùž –Oã½‚Ú.PªÙô®ml¸Áóû#›a™s„Æ½ua†:AŽ-2F+­Jµ×85Ø-	Á:dŽQ¥»´²?ž•™ñÇÕœó“½†Õ´¥]ÕƒÌ6‹tyoÿ|÷ê¯®yæ!¥^©h‰L×ë¼Ž]ñß_T¹Ì4wS,_f«{j:,Â4Ô(U€í¸Ú#±^À4VuSÆÇÉ°Z–Ëš‹`óPè`è}hÛ¹ëÝÞÍ¬¤Ù]'½ÛA7™N¢Ñ5Ü¹hGž¾-+Ùv*Yýç%e‹{ÿþí²ïI¡x±S‰û÷ÃòF’~B¶–Ã®…é&aÕ-’¼ðÒÛÊi–)’we#½òÍ«÷¢®-0o®û`\F6Çå4ýŒ[eÒÞñò"uš»rw‰6×h(ïWF"ÛÏv	$qLêsÖL&8·Ñ³?Þ½û€÷çµÝhµ®ËOZÏ¦½~ý”G}S¿øQ­²ƒ2&÷A,ÖÏm2©[À%¥2ÙJIòCZ“©!q"”³ARyæ4‹£ÂÆâàÂà Uh',fL hÀ‘Ø•Ç÷JJ¾+R²yL¶Û
är5§á˜àR"r<³6Á9ßDp¥%ë´¤MÁƒÓÑ’Ú€–´äIœ	WùIæÁêœ¨äº¦ÏKvó’94k½à0-:á62sðVˆM®ÇzÉp²[—Tçt)E–ä'·ý${µ—X·ªvœ¢@„ÄrN…t“tD¸Ô [ƒI™Zz†CDp¥GhÕç0¨]ÔhçÙÃœÖdr«ìH£ƒˆÊ	D*»¸Q¿`^z±—È1¶œ¬o7| x§V9´zA° Ñ •­~<óÇùÒž€`@,šçá¯lÿ±é@þÉz“ÑLÛé"ãžÿ$â$¬­Ni_9¦‰ì&ï¼! õñäÊ6×F°°Àr56\z%4E0ÂŠ£Jzj¼¤Æa-&F[®N;æ˜F»’[]åhˆ²CkßuD‰gÞUDaçÛ»åÌºë7‚)¬ylÑy0åˆ
ì÷)ÍÎ´\¬¿uƒö5–‘f©‘Æd­UÖri 2’rê<ÇVC=VÄ:L%sÂrLœ"YÒŒ#BÝ.XùyPüùëïEX’«i‰(µ!;ål†ìÌG‰@µC3‹â§,ƒZÛ°ófÚÿÚ‰‰§oS!ùÞ EÔŒf	Õ’16¦-°Å<z(ÆÔ9? …àôôÍÐûX.\7Ö$ëÝŽÕó4÷EEËñióÞlb’ÿóÈ–é¬—{´œðjÅ2Á1ƒx;8QJ×*–	Àbàå<EÅ•äàSšYÊÞÌº°YBÆ¹ãUÜô˜½Ý€§ãƒµmÝÆMST/gR—ûv›¤Ø?bnE‚æ#§]«&Í»P«êÉÒ¦ü,§Mv%ÔµæuYç¢0Ü‰œØÙEë2“tf§ÉÔšÌXi¥á³ýõó/¯>ÀÚãéíndƒni¯þú+ãt{G¯›ÚŒœ;;ÖÝŸ]÷®ï¢N§·2›&õ5Úr“ïQØŠÅÆ(¦±Xì™‡ÆsfÉù;0ŠpN(ÇÔ*Ê!7»Ši\¹Ícr¼Émàvnƒ‰„«çÅ<´§Õ(). e¢·iìV~e7KvCZ¤ö8)»É¨p »y*‡ÇgËX7ç(7¯ó¹Ælr/l§8¹g¦¸nÞ£Bzè¸AãÞU
tHç›Ül{ÑAýsÖ~‘§Õ··Í¬?hi Ã7h!›@ÃrcJª‰Ô#çMƒãI‹|ÂÒŠ0à\	Ç€ïx6m´B^JÆ˜Â‚ï`HñpàÏÛÛ"lSù%/Ê]©§K¯Ónlr¥{5èfý9[Ú5þä¦3`2†ãi GÃé]èýq£_y2±H—ïÍýxxßYmwòÀº/½Ñ]Jt¼ŸýlxðS¸Ãƒa´jØÁŒÈêA6 Ëƒÿö¶›±nùpeÛt~y÷ëxÊµMk¼±ì#TQmcÒ¹½ÝÆKêÞý=Ãí3æ0ì‘|÷/JqÝ”ÈuZë1d2¦^ g§(Èi`Pa]ø@[Å…2H Áá*gè˜ª«c¼Kk½ÊäSÉäÔ’t¡ÝlDU‘µdV˜	ÂVd2¡mdr¾.z•ÊëR™¶ˆª:TÞ¡„*•¨}^(qnãäyQ-sÇÒš(¢Ö	Æ°vXBë E‚9†•„ž)‚1ŽpÍ<¦H!³CTÿ¾–ý¡¨fXf|HðÔD\/k|ì–Ù“”©°SÝÕíuCVœy¢¼^.Ë¤‰s¿é½~²‹QCÉñZÒ¥˜wºš©BÐ¬ð“ÅÖ>"¯>ißˆnÔÆ1t±ùG–´õ^¡­¯¸ðÜÞÖ8ðà‡xÓs9ð¨Ùt8œ«ÝžSjû¶í\XsÅ à˜•HDû2À!d)J,º€Xê%ˆeÌ={¯RA5. ñW´y|´ÙpÝ¥+´YÓÚ@x4´9³ÆðmàM§ÑÓãÍ1Õ†+Þ4Ð£Î	<÷£–1lñü
.+”Ýí¬ï>Ä÷ß€	ã?¤°Tç‘€e5¶Äs­Ç
a¥qe¢¢¡ŠEÝH …AGò1/‘ôD ‚vÆýÜàÍÛb<”’3z)ôÃË¸wvõ8©´†‹ÞnúýO÷{áI!§`¥aøˆ‰ÚA ­WÆFÈw…ð	b$Gèßºåïî½çÙJÇ/Þýü„œr—„¤<¬¹ï§×&!	«Ø+€¾Ù{.“Ìv¼Ëå¬<Æ¿üóÍÛ°Öá±ÚºÞ=²ÚºÞ?³Úš4lMóZ7Zd£56ZbÙ¸Î±Ò8{;íÆþöw¯þü£¾qxoÝ4çQZ¶LƒW·º=mq}“Lºááç}s°¡Í`ö¥6TµÝÒjZçüš•gj‘ã!×ƒx½}}¡ôGôŽ>eAî]ê6d{©Âvõëž€­ÝêS€=ŠO¶8«O6lëZëdÕÎŽ-xy^àìè§4›
LvÐô	T0ŸJ®­Qº˜ïR3‰öÚ;c™ Æ”Zn²T#0#”Y¿Ë–öª0lª0ÛƒÉpøz-™wh£ë¡Z“ä8\ç2ø|;Öã¨0­ÍWgSa0âÍOÀ—*L¦“ë™u™º ê£ê2ù[°¢Ô4î„ÚtÊvÉ^×tZtÊôË^Ó{šöiºmva¡5íÓtãÚìÛBCÊí3WXË&ìÖÞ=ªá -®»ûbçÔÝº¥LÉÏ”·­ßƒJw‚Ä|ë*[vDØ€&Ëæ¿½þý?Þ¿zý.ÿÞÖ5s’Þ÷šDT\fËyKÞïÓ/<åh¡(ðÀP˜¹Ñ{ÔÁk(L;]ñ ´'Ð¹Ú À–2# ·–+fsA›!š“xþ€¡‰4A…tÚpìŽi¹ˆöTírÊžkUÿ†ZU±Úøb´Dsº ˆÁŸ«}åŠ´Œž]y*âÜ±ázÒur5QÒ6!»‹[t&e¬AjÆÆmÏ7“='{Î$JÓøæ‘Â,!!j„-wRYÀ”!†b CÊŠ˜Û1ä|t@˜kË€·Äî,fôÍSœkrÂt£<ú†0Å9%Í„éÕêv°8-²æ?ž8=ºAíéŠÓ©›L/‡˜2	ˆÖ`¥=',ææ#Î  E&ÐOJ¨Ä^(Ëœ\xƒƒXuHà˜CÕúb¹Û°]i-qÙõòt³Ã…ˆT–ËO™ät­¸6"X=Æ (¾Ë™$5nÄ•£žA¨²À'ZD„ÌoÑ¹„j¼Ö¥QÔ¥®V“»=KH²wÏ÷·Æìÿ¶k~üñ'EyÐuú[dÏž¯G_§wÃîö{Ó3ÑcÒz.8Ðë'Ò‘Àä¥‚ÄQÉ¤4Ž&E50„*F-p·íwÐÓïŠd.»P´–µ„"ºEY‰<AÑ•áFmêu>]Á¿‚ÑS£ ýÆêsûäå‹hÒ°$†ŠÙ½:FšI­43"“ÎPÎ¹§&üªŒSÒ
 qa+v–ÄHuMXÌXÿøù¿êlI[B Åpp;LÉKÆÃÿqfK8Î_„B~ì‚¼úég5ve5ÊRl'ÿ¯µ6N(ŒwSü9p±¨eŒ‰¼W½XRM†1«h'Í°f>‡ÁpZLf½é<*2´úÓ†D,/“RˆV‹n<O,Ã¸cW†qÆ˜ÊÔ7,'ubMŽŸß¾Š?&9»º”Âön{§Â’â³l"ü®V÷8y)ò>ÜÄ™…}œG)*3¦Ý™I6²¸° ³ÛP9À/X‹ÔarX-DÉ$fYf·rº)Q$ê’æ9ÓñOz·,ö`ï5&Zx¯ÍgR—ñs‹Xª17Szó‘ãÑ+?¶>É,éÿ3r)“Õ:<´{öúÕ/ÿþö·—ØÓ÷„´¤æíèÛ^ñTîì••œ–ó4IkÞ’õDc®ñJ
¨‘â †©TCÒpˆ¢fD;£BññÖS­°ÅöÊz®¬gÉz6²1°£ŒZÈZ6uH¨f¤àÁ¶¬§a6õ+ï‘mLÝ'å=9Ô[òžkþôÝD§q‡*3ºpOÐIi~°é×²~œc3›´¶
‘ŠA¬Abh®bÎ'4QÌa‚1 SË­a€J€Š”€ÄÔæH@AàPxWRówÓ@T8(A´f8^”`YÉ‰;E¿ëÉsÓ‡‚.û‰TÜ©’‚LÚ\¦S©ób6‡Ÿú_‹Ù ú6USbEÂòç¯ïž½~÷WÊ¤õâÝÎ/Ñ™“9m˜@–úJß˜áýOiÑ?Í’­$E )g¤BR—2ž$m%)D
±žD…PB(¯&Q	¿’¬‚«qfÝòIì6«g÷he^Zs”ÍµNQ°laš‰©¡[%ÃÞ3í2Í.·¬>÷@Ùø~2lÖa¤Æ“°Å}.”ÿèaxÄ>$õ-eˆNÌæ†±ºÅ–ýzÃEZÀFÝš]ê)Uò»ÄÔb-k’á;²–=BžŠ³—9DÌ·ù¦ÄÐïŸuBà¢JQlcÒl­¹´Cz‹4•Šs†$ VQâ!÷LW:ø ÏÒ¨¶TÖÎ=DLqƒ®\úÂ¸4ÛàÒ»2‰Ö²y@Ê$”+\šr„²²ÐnòË|‹ß•MG6Ý* ëtlºÞÚw›ÎM°I«õ\ç×OÅÐ¸›hg.'ãnÔ¿åÅ/3>¿m™É³Çõ_„=¶Å\¯ÖÜËÈ*ðÈ:Q‹c‡¦Öð%¿ÏyA.Òt>éü°e˜Ù¸íè>rL¥ôÀj!4á‹¤RÁ„3)¾“F )Œ<.¤3zW4ÙÏë%ãÔm*ñ®ˆ«Œ›³ðøÔOgªßûgúh?ÏO[´Zt"ù¶:ü<YªtEˆÛ¯<û“ðwÇº@Óï{AAˆÞÃ0ø½êGšË¤OÊt“Ò# ¸Û6cÇÑß^´½„ÀNàà½O|Ø?™Ÿö§…ï+6!
7¡j Aø(Ð÷ÅBAPÖìæ@
DªõB!g¤ùuÓcØÐn>¯”þ„˜þæZeúµŠbKÙ_°a«XØ?`V Z›Ãf3øjãxxýç»Wüþç‡ä1_Gò÷ö®3Fîï]›Ïzoov@ïŒdá{zgdßÛû=½¼øW¯3&Öt?ä‰©O ½¿÷a×>äyC7ü ÞuÆæý½ëì¸»{GE£ýão2ÜïéMêÍêÍê-Ž’!ÿî³USõH‡qê+Üö†]”…I·á¿Ü¦C]a3[²0
MIÆŽ|¹ï£Ø¬Æ!~Ù,Þà¿Þ¼Fñpâ×mß¶nõOä—Iš3õE³åàñ)¬•ì;ºí.ó§Üî‹š[¶é&¥àüB‘Þþ¯Ë°ÇÅŒ‚jb¦A{Œ_îi7'íÝRå¨oÿ÷ÌÅBß‹fGTO³ƒÏÛ+¨”Å'ŠhÂˆTšá7Š,`P2eœ$á¯”! på”˜ìŠ1¿*¨¢ ÊuWåt ]+¾8‡¤š”CÃV
jC÷óÇPQ[§_9…Š*Ú¤¯:¡ŠZ¾~Šš{¤T£«aL›}æz„AØáƒäg¯Qg0ÈîNRn1Êqæ’ie¯Õx0ÊQ¦r”™á©ÚðÉ<Ä©Ó¤T‘$¿ìAÂ|ð ìƒðc"ŽY² ™2}âSõ­Êu^ÏŠŽ;Éª²ÛgMëÎ=%¯ªß™}4å¦í×òÖ½³Ÿøºiû5=ýÞ9bïb´öœÓÝ'©½O}Û¨,yóœ”<º¡ê.°6TP)!ÄTQ«‚J8O$€¨°ÑBsˆ%ª» Ly `
9‰ lWÖçŸ‹×ÕýNl?©î#7xæRü>Lw«éïƒR½ÐÍÿW¹5ÿkµ>I*·Fm=é•éõ{S7¹éü#èGéEºÆkõu8›ï•Žë~<¼/þ|ÿ{Òv«>¤a¸I¸)e«?™¢·¨³ÿWJDý<=‰Ïs¯FÏ‹—¿þö{øûÝü’ÂÔ‹—oÿ|wS/†ƒp/¦AÝÿA/†ìwÌ+=Z'áÁtãb¬º*nû_GwEŠê_~¡¿³—¦ôðÓb>7¸+AŒ¸/7$]=¶ÿ}ì\ZïbÇžý§vòûA_Ÿt^¼]<ƒŒúîK1u_¦E?mÍñÂË[â‡É¹öý]o²*ühÕ™Mœ=RÄ?äƒE«›âÕ4¬ÅÝOJCJü>Ü¬$íÓìª·£³r'½û^_‹gá!Ñnvë‡ÅýZ¨Øæa2Ïº›ê}ûž¬°W1ÃÀW7/€Sq’á«Þøazï†Ï‹Ï.µíÌ}…S£0öpàNšàóçÏ7ƒáàv0K†—¸m»¬/eì?Çë±ÿ”îÈ2¦«±ÿ£˜ÞîÁø‚0,'!îÔwK1Ò…äð.YÄŠßŸzãá úrÿTŠ^LwqJKÌÆÚö
¦/ãpò1QÈísÝÝ!å÷Œ—`×|Ü•S“KtÆ)7"æí_É«¿e„L½{“Ñè¯°s­Ö2Fíhu?ËkšÑh±uM c¼›z;‹5gwª©ï÷&{)×ÔO‡ÚúýM>õÜçã²üàž(÷Œé”Ò4.#=€ÜAC$R
#	Å0Æ“ÚKgÔP‘0Bku¥dWJv¥dG¤d¤%C‚¬Q2Êä*%“å‡mÐ’G8û¦H-8ODÊjã´Z’²'*ÕŒeÆæ4-³õ‚¯å6ß•òj?ƒËm>mÒz…Ó]@$ÅÓ&y£ðÝ½úèÆmmoà†ÌßSÜŒæh©ñLÄä€RyÌ,*¡|ÐÙ‰RjÀ ŽpçB>h•Âa	òÚŸå43­åg;Ô®x–û&.73l{¹=E…‚”Ò$eSÔ%/4*¦t1M,hp½ó¢eÖÇOH†³ÉJöÇÓbïcïf1	?œlé{‰À¯¯ß>€ÛO«Æ>v°š¢Zp,ˆÜÊ_ËÕˆ£¢Z6‰ÞQK–Së¦°‹¿í<HÛ—{0#@€5gË¹ìÇï­b¡vÌ<ƒM»±ÓÞ]ºáæ”îÇ'È´Ö¼Î[v4ð,nÜ‰í­%©ÏÉÎÓ:åÍ©rY=¹ÌNb’oƒjOMT`#šaLE; 	Ð:,½R4Ú¦¨”Yä(€i$•QDSj´vW]í+5935‘ëÔ„£í¡¦‚1BÖ©	&kÔ€ÖÔä	¤•ikª89‰nÔ—GNj’“'aÀ8§_×Y²¥¬“L®9¨ÛÑ˜ï2õHÚZ\`LX¿15#6–QÍ±$–ChÕ2ŽØyÏ Àd4'œ)í-0€i
½¤NC…½ÜU›lq°–ÎRŒÐÊ[ZmÜýÇk©Ù’ÉÄ±”‰GDjð5ªõæ§a‰Ïl</©ÔòèLRùŽâ³*éU•¸Ä†Ó fÃ€åï:É„ÍUóH¤n1ÇÓ¤qw	šóùÄyÏ æ‡9‘oýz÷½A|z^ômÍÆ£áÄu´+C¥–S‹‡^ý¯ñš=SøÙ`>‡gC=U½ÁâŒ­œÇü¢ñÁèÄ¸-c©R‹;×»½+9ÜçžÞEê¨ŠÛÀNÅÇ^ø4üžºÿ½:+;`Ô 0¿{g{jêúHN{Ö4ÿ|ró·º±N÷TÉçâðÓâ5¸¹›Þ÷÷ò8!7 ðv‰¡v+<NH±R˜TRˆ2²l§™uËw­[¾eÙæ¥tøô”øÛæRfo‚‚†yKÒñl1¡šÀ©2p7Ïíç„íFÌËCÒfäûÏ0º½åJO><‡"Ûÿ¯ýÉMÍÃKo·œlÄ¬Øyò‘ÚÄçeG›ÉJ£ÞíÁG$[À:?ªø ¸†qì=	P,…v@@Œ$*@ÒÎa ª«Åk)¼âC¯”g¡¥D¯p}…ëÂµ›p-¶Ã5]7»H ´WàšežmbX¾Éå
Ø	°š[ž,`×Fe·ìcoN‰ÜÜ¾8Ð½~l«q‡§`§Ï†Yd½ RQKœÀRÇŒAP@I)ÁPYŠ¬ÔP§´Œ(I
2ƒw!øË÷ÿûÇbÔŸÝÆH­bîšpt¾Úý'óí(“€˜è':è%¯Ïšß«éÁ¦£„õuZÆtK\>ÏÁdqFp;Þ»„KoË’ž“x6P.z7*q°ê§@å;Òz X«¤-…X))[Ô£Ò|Ÿ»åÔeO#ëdk\ŠË]Yêá¨P…ù¶ïòÛßéº1ó4¾vco$ŸlaTµeÀà zãawžœ‘¾+µÏhwk?vqN:2ûñÃ¨÷EÏ|nþ²ü¤ha—ËïM‡ã¯‹Ý¨s«èççQ»ÚYß$ëZ|r6/¨[·¹iKSÛòngvOæÉžøÌ)äU›º(Ï…l#ßdÐžoh¬	X¡€TcÈ‰öZ‚8œ*ƒ9…À“Àðdj¥!â»Â™¯|£9ß|Ñ­|º–EŒƒX
²Ê7hNiÈí|ãN"v
Æ[„®žœqÔª¬2Ž#*®kÔ#ó\|“ƒ4éØ¤Ã+Éï°NOr{¶H,³°œ2)Í…9m.›R“[’f…Ý4é´Jsr{.øÎ)Þ·¦siXÀç t"/‡¸ìþ0	ÜÑ×éÝp€ÏoQJ+Â Ö0¤)± BD9ó‚M•cŒIchx“‚ÆYí9Q²«VàÛ´žåúò¸P:–XlZàAñ@¡Œ:].E­†ÆƒON:ãÙà¡UdHe×Ðl6q‹K_0’¹æ$ÉÂ˜¯dõÀ„äTüØòø]-1myMô·Þ£KÕÕû{âáO¢—C—
rù(Ìösì3ß%'æåéX9—6/pXÓ|6íõëîÖB6ÎwöQœEâGC=öÝ´µHyý¾Á-+g±rÉSqœsØ}•Ì9æ¼ÁÞë@y 2
i	¡áÞ[¢OÑ gÄs	0Ç­ÐºËîse9ÍX¹F$ÁZm3Lª}0ð,çjÿiÆs$ºòœSèÀk<ç¸&§9á¹fÚfÙ<e+É6•ÙoI¥rÚŸ‰Såxñ<]jåïÛ™‹ÈË*ïC%ô@XÃ±ÕÜ(	ˆÇ&`8§–Pë¡Ã`hÂ?Ü9—UÜK$•µÂjÄyËítp&eZ¹qÚ“x£Ï¦¥n¤9úkú6ùæî¦Yr‹ÈZ)Ÿaqçú£ÅUÖFþÜ‹~¨ëUx>ºñÀõ'+Sº¢¬‹­Rø°WÆ¥Tln‘~­Xìþ2}Úâ¸.^-e\Ý>Ìg°¤PŸT¯SÉ…ÏŠÙ¨¬õ^¼îf_ŠÅL&½8‡O18†§uy³
k	Ì#YS¿u77ÝW#A"ÖjAÌ·§DC„'vQ­Ä’ŒWkqD FdÏßwË§»iÊ“WïŸp6´eLó0ƒ-hž¿ß‡w»ÄÎžárÌ-†0AçU§ >Q¾ÕcÁL®Æ~Ð(¤ BÁ˜õÆxC!†síŒž	N¤ƒND[7A_wT½Ežzfv5¿Í74o Ûúˆáë¹7	—Ràj" ¤9V…u‰Û ÅjÖ¡¦…GÉi ¦Fck5O"iÅEæO[Jÿ{~E‡)Æ"&<'ÌFŒ–Z
É…2Tzâ$p £\QbÜ`â-£$În+þüZ&3Žol*öcQU~—>~),q7$m»J´+ßÅyìa¸¬	"êvàÍjÄÝ^,¹@dà0WA-]‹Š‡0^‹‡áçde^>°¨†TnþSD%iØ°Øü#ËðrÐÃt‘ƒ¬·gÕ„N'´Ï¡60(¼3 e±ÿÎe2 “”ÜR…°1LP	U|ÇMhŽ¬D$Úª$V|Wq„«Ø>—Ø&¹„" WÄvª±"¶±<@lŸ™Ô‚›µñ?½ànÍì"¸Ï«W.Á{1GE;Î³Êm)Úu¶à†ñ÷@A0DÈ¹Ðy	˜÷˜Smï´bh™B
o£¯†ÄÔ›|¬SýÒö²XbM=›²Y´¬¤Ò(ªw?©æÂHÅ_ú·AîNïÂ7f8vÉè%l¿ß»‚|âb~ãæÑ9/îzƒX½f>ro0šM‹{7½Ú;nÜ†IÎôÞÿ´\ÙO•»½ÏoC¬§¬`Ë²qkf†Züs^uPŸPÌsÌ,ijÝôLu›ž‹¾ø|5Zç0ß\êá%M¤l!ŒÓDö‰«¯øþsl«Ó™3ÎoKÛ¾}õÇ¿úã¢Í1ýf:¯vÈÌdÞÀ_õã×á4¼Òa®,&œ•S=Ë#w¶ó—)–ß>Ás÷(‰×Å“È×NŸLúô­'WC=€ä9 $èžZ¢aÔÓ ¦„9ÐZPB¬á>è6B@| ƒ+Æ‘µAœÓ+É9ÉAy¹ØÒç`äËæ®’I…\%9’Ó¬Œè›Èß,7×cÐœÖç	hmŒ…'¤95êÞ4'×‡o;ßy§Pý3¦NoãwºInNáBÚ6Oû:ï9îƒxéÜÅÓMŸs/òöá©:»Mˆp‡,’9•"D+£ÑØ	Ã‘wÜ2ý}œò20&mˆ L{ád`¿Ë&ôkXËÜž¾ˆÙiÂ•Ò^lÆðØå¨—Kr`®%Gr(Ìª3HéJÒð‘D +gøÃÖ]-:m©oMuÒÆ–®cf`oÏâN/Ï Mg‚äC
am¬`Tr„ ^I‰½q
Å™#ND©”#DgÑ«EwåÏü~Å#ÎÕƒr'%ß"™¤ëâã|[÷†x¼ê‚ÍdÇõ³È¶dü©È²”s;Þ¦:‚(D ÑDCàÚ{…	£KÃŒ'C¬™
ï¸r+-¤TKL%P|Wùä×•
…÷jÐÍú¥÷Ï£˜®ÿ—Þ`á´ñ×›×ÅÛqôñž~-^‡=¨I·iÕ…¼Ý5NX‚ðóç›0·ÞýP¡iÝ§ cRø^‘Š7D*gÛEªàë‰…ahVªHH×Œ»™tû YÀ7žÍfs­‡‡yƒ6élâDö‹šíïóÞóÈe‹K½îä0¶\iwñV³#f¥ˆÉÏÏRHÎ=Îû*ï/X|Ú*D•ºñiÜ‡Ø†ùùêP{Ô7^AG‰†R¥´uÌ3ÃI à*ü;b!ÓRn••DRí¡“V`J•DZÛ+êõéêãíùì¸\·2AþYñ¾—e©P›Hø-gw9	î‹ö¥Óá~­ÎÔ÷sÒ–àIDqóü¬YV”™H¶q…ì³°‹8­zÌó¦¬âÁç©’t†qïZ‡¥Ã¶ô¶nhoeAý4Š+¨äšžá·Ði ä1%D£4ÀÄ"ž„]€Dvå‘{=üÜíG_õ"Õ†šL£OMXá0lÿ¢šÀœÔ›`ïcÝ½E(xø¹¨ù¦x5p<žöL ãçjý‚yìÈZÏÖã™y1ñýÙä.’s¡eK¤‰ÄTwå\ìi£MÂÅnzÃðûq1,¿Q…˜„ cn7G ²0š®:B,Ô3ˆI˜]7=vº¿¼ûõÂÅ[Å{±²êÃš[eÙ›¿?×Vq°o¸¼ô^‡mÚí£Ï›ßÞ¼ÙøÊPÎÎ¶öÆ7è Þ9ð|¼òS¹sDatP€æ 
Ä€;L,§J°8#œ¥ÎZä8pÂD][Å ZHFF€Z@B9aõç–¼ú{ õéCj§“²É.l•¯Ò“¡Ÿ~Ž5†?ßõÌ]1‡'cCTãT§ÃðÅtØIƒF»BL3›<Ó¥Ã<‡·¸zr,ž•îõ{Ó¯7Å› ô[îzXKçs¯ß;ƒU{·w±ðqÚ¡þeÂO—{9ÔÿÇÓ®¸Ÿ…iÝGâeÙ£é…ð‘Ë(–|­>¸j¿à¡œ(Ôå‹ù˜\¡}ê…ÁÚØ0–{dLÏAm2x©•úÂá2#Î	–JÜÇÛnÎŸym§HGDFÝ? 0]kXäÇŽ)Ç¡Œªë¸* $ži*áÐK¹$¦|P2QP8™Æ»`ñíÌ¼)aænn{øýçñX}5Ö	éã¤†=*Ryú($¢í:=èãÅÐj1´NC?/‚X,‹Â‡míDáù< ’è£Ê&·f#«¦±zÝtxß3©Ä|Ša	£ŽbTJD¿ág7îxÕëÏBß˜`a<¼«û2¡Áx–æY<Cãñ`~õ.Np.œH,Öà@¢§Qå!‘©v†{uÕ<c‚Úižaÿ,Ãˆ'Ò?ÃÈMUÐe—¹úËëÿý„Q«¾˜i~ÖêµaÉ¿þü×‹÷¯?d*’;ï›k‘®tûã×x-x@×L‹ò¶¾™vð³AþV‘«Qâ2ªË.Ab&s9RFXh–0e€ŒSE1Çsâ´TRÀÏˆ5Ì¡=‘@írØm—¸R³@Í:ßC[÷EÅ?³wûèÜ(U<.Œ
gì{_œí&®Tˆ‰¬Òò:÷½Û»ii}˜VÍ!³‰ó³~L–»ÇFbÔÄM:å/ÙWãð˜¦šÄë..¦¦Eß©É´ úë4ÜKæVšB:¦¢)¤­ Å­¸qÚáùÜ/ƒ¼²l[k>ñ\XÉœLîUyp5‡T±¹å™ÉrûÏ2Ïd	WºX»È©¶öU‚•ý/‰rvóD9³[—¯ã3þðö1Œ?‘wXŠ½ Â	ƒ„cP"HHÌ¢çž2•¶˜˜4R#uJ O¡4Í?¯‡·ÅïAÄ7¢as– º<Y'±Q9èö&ÈÊ„˜%ºÏ0ÆÄt!óvj4
«ðñF†‘ú)—‰ŠvÒ€—„2Û{@ld§œ¯T°ƒ"äåaaØ†«çÑi†aÿ,YÃˆ'2ã„‘›êÌË.sµùõŸ/¯fœ]¯fœ«çjÆÙG¢ÏŒC¬FRy™ã˜ ¦ gÚ8ãHt*ÜqE‘#D
K˜2Æ[´xH™ÁØtL3Î¹HVg¯e£x°l¨Áœduïâ‚ÇHU…Žmñ)ÀyªÔwƒÛé]Ÿ¡^,6´æì±aáèd:{\®…CÀ°êÊ…|ÅÂ—)U2XÝÕÂqxMbÖÎác¹ýÇ'`g²p„+}_Ž“ððïÈÂ¤ñ?ÏóFÍÀY8PYè¸&XC) ÊÅ¨	¬¤ã@BÀ”8ä5@L"¯ 7ÚRb¥Ü<ñâÇ‹ðlÚ q%.obòû ;&*9Wª~ñg²èï’d8G\]Ïe³R’c‘#gŽv+ŠŽ•áƒÎ¼g„Ï(§EØØépO¸Ožœ+˜¹…LW–QL”~œÏ;e³ós‡Ò€Nsðy^íÏ|Â”æ0\xe¢Gg¯\EgÓ/un³¹#Ÿª2£Ñ‡°¼]!¦œ1D àÌæ
&1ÙŠÙñ5ÌÆœ0´’§G Á2]j*ïP².zÔ>[³rÁÝpK*‹=ÜCh‹Ôô«›_›B*sÜLÔn3~Ø‰iÏgà¼H—¨õãø­Þ´—¿í›^æzØ?ÜÑK[=<(Csvü”
- Ç(Å£7ÀÆË†§j)šI@•(¥Ä–{)4öJº+ÙÛ¿½óºë™E ”{«€öã»Ñ1£ó“…ÀQ$ZËGD\ÍG„xCØš+h´X»£ìåÖŸ2†æ ÀØÃ‡¦G°¸„4—@cD‘”& €3I%À`!)òHK¹1 ˆ@46H°ìÃËÃ8ü•ZçXÁ²c£!	_¯æjÃD§ô
¥&äºúDaq=Þ<ÜKÊÙ/Ëý?²Y%Œx¢ãÍ0rÓ³¤e—ùqÒŸ¿üû“9Þ´Ý~o0ûÒ-73.e­|[¿åSóSÒ3œ«Ú~þêZ7>°»ß^o¯Ç·ûhä£ß
c±à'ÑÅ²WH€˜‡EQ9 \+M$Èš ¡9ŒÉ„	üÓ)Àp|ûmÓÌâ×‡SÜûœ\÷×;Ä‰„}Ž^þj¼ûÓ(}þ«þõBZI>iOÒz‚a.	®*ôeŸÞ.ß”ëém{ÎJho	>ÉãrÜ“ŸÞ®0¿‡ÓÛ“¨ßÑéíh8|XæÈ	¨½Va‡<‡V‚Zé” Ô!£‘° +á Z|<6XaÃ•g*ÛÆ×“ß†mH`ÝqSß-;qÓxÈs.Q2|à£zä:Ê\“Ïq6\»ÿ5Ìêya{êvÄ`Ï”‡¸c7R½Øsb†kO
¨`Œ“Ó_+Þ\ÏÓÏe`^fƒôNYåD@J1«õ/±ä„USãEÛyV‰ïù­»šŽaþiêoÀ‘sòD 8tSuô¡Ï\%}ûçŸ¯ŸŒèjŠ¹šb®¦˜ïÎ“pñ±l1ØjJ¹öÂ
lÀpãŒ"…]ÖDé%š{Ìe±œœä”Cm¸-<nd‹¹RÁË¢‚<Ûža¸ê#!€”+ÿ„’Ìä‡ÏûÕ¢rˆ?<ÄíNöÿŒíL6•x©ïË¨r"òþ½˜U·µ+O#µáó¥ó [¦)RFae(pTkà$cJ:Ò$Ò†QÏ¤çi$™¤@Á€ÒœA¿³®õŸ}[,fà©\ßó”Ù7 ÑtXŒgá‹ÐHÇrBI®ÕáiÜŸ¥ÿûCäôM¶ eÒ«Wž.{/ÃÓ6
½ýãeñìíp<MAg¸éçáøcñr¬Fwi(z÷ñ’å=×-Ó/®3¹ÎâZ\Œ%³ÅpÐÿZô|ñu8+bÒãÙ V¾N32³ñ8<]-:)ìÎ+(ÅËÄºI£™þ)ü¼¿~ÙR5q{ý$Èc6È&°•:D r@8Þìnù\wi£²‰ÿÝŸPí¤Í…»¶©Í'²_zo2{Ì©™Øjàœ
ËvÏÂÑpé¶•œ
‡÷«j_]ÅÂÖUb<Då„ûîÄ†z2ì»ií³˜ËýH=ïzýàE–Ï	½`õŠ+ÃvóµÚöÀk±0F—ADµr5 ÖAë°åZ…ˆÓAã•”ãð~Š½õQ‰Üu–qÞoxÉfáBºx	¨º
¼,º@W—±˜Í¹ðæk½WèE\ôÖ*¸m¡7×»‰ÁOã˜£QIÁ5LÎ¶3ÿ3[µ=}u¼'Ö´­ŽLoð¢D'oÕ^0vq¢D nË¨"²ÜH 3Å9$–*#Â!æØ•Ìå4PM÷@5­ƒê›+V7Ãê2”O‚P>„¶bµxK-¿;5b‹L™vËçºË¿qym¡‡µD°…¯_œÇ~8Ý.cö˜§"·8Ín˜ šEIþÆTÙãAU¾^y XiCöÒŒPÆ™æ
2ê©FXz°‡Dh"¬4  Ä*¢—WÄ;}«o¬ÐfÜ¹Ü
VBr¶jÐE8(¢+`……ÌŠ­Ü”á—®W¶Ž9?\‰þt§ƒ«Zµ²5\5Ð+×qëhŠåw§þµ¸¿[*bè†T? |lPá…
E°wÒ2Ç­ÇÈÀ"Ž£ðqÉ´„È­™²ÂM¶;cüÃÛ|;vïþï×…é÷9ùü½	`Üd†é©~ ’€¶¨"•|-.Ù™_rQq$4HµJ¼2î¦(þ; NJs‘6Î\—PË{TQ¹3œÆR•%-ÚÌ¯\^nžë|1¨ó
*ª:·‰‡›vr•WœüÝO0¶¾ HHJ«.AR2&Ù_Èð¬DHVÃ¬8…‚ääMù»Üîü‘ÍÖ´öò	é[kk=Ø*Š—E›À×ß{!f‡Ù=Z–žÕxÔ(lët¬²Ñ³üÛÛ—`–³Ú5i-oØ^–åKÖ='íöá T5ã¯£é0¡Þ^En½é³?ßþöÇ»w¯?Àð§no'5ê}ø8Ö‰ ÔÜÁõÖÏ*|@Þ¼z_s¹¾U£ãnØ°Œ«U]ƒ[8×>;[½žk:M&ý¬;òÐ.ÿvÀ[8†½z×3ÿúýæ3n­Þ`HÙúÿ‰‚D´"ÈsÁVÒž¤¢ÎO„²HÀ Â…¯pøsŒUPPµRž¶»‚ï•#=ŽÄð&GÚA'%Y/]IIÊ	 Yé5Þ¯à?&Kj­æŸ%µ±IŸ‚%Õ©÷íXR®j¿F—ZtÊÔY'O.Æ—Å¡2·t™Ê`ƒ%µì¶I®²ÆYãXmbÀÎ6VaH;4½)—âðÈk{PÚéQ†KOˆÔ8Ålü3f‰gá7Ç˜ÁT+W"È…ƒBS® „–äœo“– (jlp°iòzJ,­%q°(Wq”k%eå^³TÌ8JÈzÊJV²ÀN²‚Õþ^„©]S-iCm*ñýAÕ˜&U"ÓŽi¨Z]ú»~à,þsÀúÏìöˆv¿{€rdØ_}šâ~OAŽþëÃ½ýPÞ×ÀâÇæç0Á8éb(v@]PÞJ$ ±È8L”eZJ®´¶Ð.Ð¡„ØuLueO—°lƒˆÅ–×ØÄ«5bˆÈË¸•\Í2sÑAì§æÇ4Ñ\ùÁ#[¼Îj¨8ˆ:œÄpp©b<üòµFlK!À‰¸‹èš†Ev"+`”k§tŒ”†Øã.H#(<æ‚Êè+!÷˜JÀ-÷ H‰àØ"àñKtÏL%íÃþ¥Cœ´Îz–°ØÍt‘,¤¯KßÏ¯ËÂ;åÀ'BáI€áÅEnn{Ó»™Ž)eí®cp%¸Ž†ÝDb+‡Ý^ƒcˆ„4†„eå\l`·|.ºó'¢¿~ùöõ'ôãá`üóhº§™N~*“žViOk_[÷áéenq`²¸ûäýî7·vØ8Ù7üA‡i‡Î`ÏÐçpXÌ™5‘_Jš#ˆûÛÁðÞ=ŽÀ§LbÌõžJåµ Ø*¬q9N€@ÂZŠ‚âh­$1Ì¼¤a£¼´”›]÷ýÙmo°"“Ë´íåJ³Ä~j»]ð/Ç=\'5?þu˜ä§¹’Ëõªk3ŒVÆƒ—+ùÓ¦\€ì?8Çìe€@¤…küÃ9¤nù0i’ž³Òáå‹pnnÎÛÞ°‹n@Ýå6ü×¸OY¡¢i·Fnüžñ ujÍ?6™}µÇ‹¿þúù—W`ny¥í}o2óÙîè-›÷Nà¯¿>ä%KÝÝùe>½;ûç,ý#øEýXAIþÊx·2iéøqØ€ØJ±DyÙ ²"ã8eLaî)‡ÊHƒ%÷ÌP#œôÞŠ™ü¥jÊfÖ—œEkV;eñ›N¼òj¿K%:¼Š»“q$6U—Ãœ ¿-»ze<GW{I›hŠ-·æÔgõ
Ê¬žMº0
^œ›>¾Ò#fªÿå?Þ}€¹ùÕ›S®o‡:î¯¯DëÌTé´æ˜˜Êg§?ö¦·ÓäqX
Vél ' `¼V
jî43ÌaBµ&ÌXäˆHO¡1ë‰öÑ¡Ï6d)ËåâL†ò°?ÙÖ—ÎÃE.•™ˆlfÂ©ž…c¼ZÝ‡ä„¯íæ••Ÿ•ðÇäi*ávŸ‚Š<ÜíÓŽþzÎG=þG}R¥Ô2Ã±[Ü%å P\í>ß99]:‹É4E0´‹% 7ì†/jˆ†E%¢œS‰
ZÈ…°Ø o¸´ ¨1°#ê8Î#é!ƒG<ãÜºäÝªÓ^Jc¤¿–‡õ“éCí™z&2ß™íd²÷2åeNîŽçèNÝ ;¹½1ÃûŸÊ™ïg"b#¹=ãÛÝò„Hùt«© ¸šb²¬$óýì–MW4JÝw,úq6ý°Ú•…Ê4¡°Ó˜oú~ù¾ý%®3ÇÃ¼ÅØQð‘ÃIÂIÓä>FBx2M÷L’¯Ú¶%¬•@H% ˜e1ö H8§ F(,¥WP)ï°`N—XÉ‰ð’£ÿŸ½wërãFÖßõ+jæÉ=m–q¿œµæ¬%ËÞnï–ÝÞ–{¦÷~ÑÂ•¤Š·f’U’~ý’dÉ*&$“dÑÙm[R	ÌD"ã‹D|![P9&¨ˆ—É`¦`¶Õ^ ÍÈ»”±ÃmMPIwk[X!DˆËƒ•½.I=Xyæ\¼|¹èÔèæü’ùt2x–‘–æ•„Û
þ}Í¾`€[àã6èN˜RÔ1ª”“ÚØÓ"Í5'H(FÊˆyè¼4»j˜Ÿh£šèç_+|ý;wó[ßÆhf™þGdz»áäi¾ ‰ƒ8k1ŸLÆÓÙöEŠ¹éÝ¨by7×¹}óæiÂ¥lì×y£r³/‘ÔuèŠBuc½UøXfc›lÑÁ¼¬Ázûó/ßÞüòá×oßü·êÇÿ×·7ÿ©´vÓoo¾>­ôíÍOÊÎ;ñ?ßÞüüî¿Â~÷íÍ¯ã{7Üü•åC¿pßÞü×}ûæýx6/n>„7aæÛ›ýa¼±x»ÿã&½/ÍÖ8MÊÅ¹íwÒÉÒ ?ƒÚ\§“njØ9/>SlÅs—
¸^Ý„ &yRå‹ê,¶yf›°ï?üP.äøž~[þîýÚOùù#'\ÿKãFnÖ@.^ÝæÂ
‚™™n½VUT¾©J(Û¥¬vêùrÊãÏ˜âÍÕ›¹³P?)ÎR9~cà á¶è¥#ò!¼ÌÐä>;óÝd fñ{ìL¾ÌzãQ…˜Q°;gÁŒßŒ+ªF~™Î‹N¡ŠAgh«
²×†ûèW^ýihÐ­jX14FÅŸZ÷üôã;…îaÁW÷ª×_Û8iøx8’‡ÇÛÜÇž¿™ÿP/Q"Aª<G€	\‰v0È«i1æÞ08(¡&ãcÏÐáØÎKtI½uÔ±gtP¯“IX†ÄÁZ.}t\ È“ÇG2N¾°®Ÿ³oË=
÷ì»Çaq3ýüÃ¯áÞÈPý%†Nzý…ÞÝsÇÁËF2ª}£
œ:è›_?|øˆ÷²unŽÞ÷ÅmŽ&ûGÇÈÊþ[žÌþ‡Ÿ³3aÔ2¢0î´ÏÚÀtºÕ +(AÅÃ`jïÃßqQ$¼ßå å”Uó
?H¼‰Ä-¿9zßÜŸ‡‹åÝóê‡E•ó¯_Þ£ ¾ÅûöÓKb¬z.ŒÜ‰è×Lìá8T¹]Õ¾T„-c¿Ev•!¤;tóv^*×^FlúÿïïÜ,‡Ë8Çª†ïfUã÷ô—ß»Ô·á¼0ì±pÝÔî¸Ïjøò´[ã§n8ž%Œ+‚/”6ª£Š/#³lp­;½àhbÚúaŒ/†ŠRO	9cäT™Hz' "6­µT	ÌˆŒ#ˆbkÉµ1œ(%4ÂÎ2"J’6Xô'	Q°,’â—ƒE‘žzûÈs&©àëÁ". àITy/‹ÒÏGÚpQ~¸(·Láõ†‹öœÒ.J=ûxŠó„§ ½ª RâfyIÊ’{)Õ¨­9A5Îv¬)õšƒœÑÏ£OMÖñlÅ£šÍÁÝŠP¥Km„ªÒÅ¶bVé‚›Á«T¹­(V¢ØSœ*wüZ\ëø	ÌuûÏm¼RK½–‘¯äá‹TÞèU` †P¢~ØŽŒ¥
­d©€¼ˆ”%^„Ì.’7n+Þ•/‘Ï§ÿ*KÍ…†åŽÏÚ«€TÞèµ`Z¹Ì{Ëú‚¶#lIBO¡°Üñ[·ÚÒ,I›6KashÃpš0Ü¿çÊ™Þ!½)D¤_yta^4N3{€3$,ÆR0Ô+ÅEÌÇ$'”B¥tÒè„°œ[,…HàÑ¸ŸÞ½»ùøÑÆjF­"^U™¾ýÒ{aƒ-êêÿMÕhÅ]ÜÌ‹ðã7¿ÿøöýÿYWÙü«õ‰kÝhl«kÌmw4_DS^nI„('@®“<#D(;:“b°Í¸!Üè«1MÈ€ÚÜkrÛt–&«¤?Å´Âoú³Þûl\¹œÅzäë¥¿Z}ÿá‡Ãã_kLç§(Š/xké.‡Eägo¾ÍªˆÒNý6uJŽSÅ%ê‡’ÂJ7òXLúBþÕÁé¼ÕàzVs<ª°„HIˆö^xF–6¶ÐæÔæ­w’¨Ø¼HkíµN[„SØ HDõàÂmx`]·àÉmÎa)Ü„‘À<Y	yÅ!×µú
4HäóVž öœjü âhZÿ¾_·°\>µÈ$·‘Æã JðÁ¨gÂ €±ŽÍï PŽ`âŒLxD˜Â8”>r˜ÉÜEnóöÆLÇEÑYÆlÎOÔ´TÀaµ‹ÞÍÐÙ¾ºYDww#ÁûÅÝôãéy­¹ßüó÷÷ÅBó¼»yûÛÏêûx¯·‹O>ÜU×Ý–g³»Üdâ ô²_ ¹ä›GÞXp
Ÿo„¯4Eõß÷;åîé,öM²;ðv¡ã_OË—çzíLê˜ï÷ýêb½—¿åªùÒjËóçëµX³µlÀ-4áÛÚ(†yXRÂx·ì…[Ü—é¼6ò›ŸÞýþß¿ýñîÍ„ÌI0Ÿt;n:O³Ç~óÓo?}üñ÷ßÿñ{B¦ô`®‚Õ²?é3%£ú‰Ï&a‡-ôoC1×£ë¿Ñé…úõAÚA¼-)‚ÊqÞ[D¸ç‘á‚QCÇÐc‹=À0G¥ÄŒ…á>À4 vW°®é\–› xGðN»	l4’t£A›ˆÎ]NwÊÎÓuKö›€i|I0½·Vÿ@˜~-EûxÝHÒÍ.×Yƒòæru6áº–Ð&Æ'Íðõñäå¤Š4o4Æº°~ëÛVÁhI³
€B¼Êý”™<ÆÆ 5ÃT#É5Bê ÿ ($§„Zi1àcEë4ñØ d£lW¸‡ÚYùuæ›¹Ý1)~ÜÖÍT¿ª‡ìÖZm&Ö»—.T¶p]Š½™nÏ¥oo>ÄÞCÊÚ~¼ ,I†¾¼YM¨¦á¯Åx™Yïìe>£BôEÃlÆ}iØ>rï–"ÓŸ^Jg}'vÊ=x»ØÄ—jg¨xsŒt 9ÄÖ¨xüƒÙ‚Ê–	u,G…¸ÇRØ­9^œ}£‡ëöÓï5K/v¸a‘×€5 –û<Q³=c>•ÙÞqH16wnvlø<©¶!åL‡ÐB¤âÁÔØç5Ú6õ„`­œç˜r]6M!ZZ-¼ñ2,wÑ¾_óÑúÃ²Îiìoþk®¦wÿú-¬QqcÇfTöhûÏ“è®\¾Å‰š[éR-/Ú{ÏÂç4u³òÀgyµµK½Y]êfñNbQT‹…SãyPèkÕ/·7ïæÓi:ørÓ·<
¿®j­Þ¬ß}<œ!·°YF¸þ]ÿvuï~<Ùò&Ëöß?¼ÿíé$ê»ÕÞ©Â´åpâ /ãed‹'ŽˆµTO¸ ƒIâq~žtÊÍÙÉ
ÿðnÁ+

o=èÁ¾&À¬†¯ùyR­{_T³¥Åƒsg-WêHl3Mz–Oäå©ãIÎ÷dê›yø–Ué]ìã´0ó¹IØEÅ–û³7û:|„]÷ìí¾<zÏ;yà:åx¡h›$‹­“Œ×’J`&Ø%Hë
Šš‚¨r/\Täü¹‘”8¯m&q«°ÖZ a S>üÀ4ôP(ë-#(¸ÎšzÏt€O‹­ h—)í[3é•˜Iä™™D^ŽËCÂ9ÚrŸ“|Ã}‚“fRzX¾5”@N0ÍJ{#òµ¥×‹?Y˜*µ>òÉ”j"`]·.rÛlj{·$[W‡É§Öî¶µšï|‰§SeÇÊ‹TÁU5Yü0x½ó	K€PÄ	ÅŠ,!Ô…ÿpëa¬ÑHÅgXQ‘gŒ¡Ôk¼«Çïïoö‡í³i_ÏgÎÞ,jØØD¦žEMÙÊ´Úm…-¦)óÂÃõ•¸ooÔ|6‡}³kþ2}0/‚iöÆ.²ŒÃ SÕ¶`<¡xç&½	V’EÙÔíö¦Ln—~³ÕÊ &ã‡Ò\³Þ¢1¨Œ‰öYœýù½Y<ù"·]ÝjŸh(uJ
¤Ò’ôÊ¸Fí:žºì‚Pi°ámƒ1ørš;Æ#¸Õ !f	´ÚŠ?4…zñt[zéOpÅõÈ€SÚâïÞu¾ÿïÎ‡·‘W`•ÛÏ€—	ìïþý‡:¸ón æ…;ýÏI22âÛÜ\ªC-?d¢§ò>žXHö)ÊWœBÍXn…—Œ¿}Š¯zÆªøÛþ™/ÒH´A‡ŒæŸ÷.êú¸GLÛöÑƒ»¾MˆØ=ûæû÷ÿù‡„ÄÆg"áëåûdÆásø¨fJÑ[Æöm¹…ŒéMpäÉƒØ}Œ*2O¬?^$ÌybË¨ãEáMžpø¦íx˜)ãºîsžÈ³dž(+Rd’²€WG©q×íñû¯Å©×²bÆGC7Æ~£–)°/‚Ü0¿òŸ‚1yß~YhßZ×"g~Qhÿ{Ý!¶ï7Jý’Ì¾Ý<%¨•å tNêz\Ó‰ÄÍxê”sš³&¶ÏºØ!Vó¨ndßÇz‡c°æ±ážSµ*Áº«Šö~%;+ñìlá¥×6Xï|·ÆUTËÅzœ1:ƒ1%¬ÖÄ/P1¤¶ï\óA5Ä¼á˜SÈµšHcaÌAüGRZN¹Äœ…i#µ\qïH,âõ»¯µAµWT£ÛA5_N"Æ 3N¶È… °¾¢áG’³‰—‚jéÇ¡¯9¬VëDµ°ZäŠ88¬–JØø_Ëh*Ð¶ãüöuÚ:‹'K_ä—äžâoIoi-V–-ð«'Y†åÒD_ŒÎ¥Þñ‹aº,áâuYò/î²äwFð²fÙåå	oÆô²d·ƒ{YÂÛQ¾Fj·ãxÉ)'K£8I‚Ã	9œaÆM=ì]gô5Ò?ÃÄ5;Œ;zgÜîéÄwbÞê—ãzi¢³%ó,Î—Ì¬} Qv&¯ô+ÊŸª‘‚´ <Dú°ô¥s§àŸ;÷–8—–;V_<L>õ“Üml4õ={=mì±"öø qlŠ·|L«<x~‹êuñ“ÄC!(vIîµR:Ê9×xa7Â‹x,Cõ#®‰ôQ"¬@¢]]üÞ?«Œ:ƒ¼ùùÇìÄ‡]†êªèb—] ËµÙ*¬pÅÛÈÌ#~ã2è÷4½ž·o>¬5øÓãY¯³z_7}ç\9ö1ðW†žâ˜‘{¸ñááß7å_¯LÝ#íÀ·n£é|Ô)#x6LjÊ Ú2À©ÂŸîË¹k¶ ãááÖºÑÈÙ/eÑÅÓºUG	Þ¦*èåî|\R‰6cŒ@°NT9æ()¾XÞY§Ü¸Ëæs9I{÷èQ¾ô°s ò¹–w²§mÝKªdÏŒ)ªõf.]¸©m/+Ä×à±ÜfÓ
;NúÅ¸¢­Eì}Q="@Ôl±¸6¼ØWgë"–‘	M¹'J;æ¥XEæ<Œ”õ@€ ƒ,6akŒ–/*éE
ª„lëµ#ÙF,Îv –lëTŒ#ÌábQ)Y=ÄÊ;;fÕåík³`~‘`³˜µ¿‰kmÌzÕ‚W6]8†iO_@%¤RH„D¸”IÃ¿ V{ë %*j:‚Ž# óDC¡vqý,’4tPawA§ß“žßñý‹ìŽé˜:Qfl”Ä¯7Ãù`ÖÉÏ“*bú›òúß¾Ž‘¡•Û¢ç
·ñÐÅ¤}PœZKÅŽQë G$€¬g}ÄŸHœRI>‡¶ŽêL	Hf·N_¼²”Ôàðbš¬ækk¢ª‰j‹•Ò2j$6ÔÉg¨“Æ°ÇŒÊª}LlpðºJŽ[KÔVãì<¨o¦®æŒõ¸É¥9ç,™ù3—À´µ,‰'ÇµŒë	Ö}Ä}E7óà8íûÔ"®»iÏŽwÇ1NQµâ!‘Ž0|ì$ç¡òB[CHa3ÄH¯(:r°9~ˆ)œ†!ÚÕT´d\K$ã+Ì®	[¬0„À:)Lü‰H
Ö?‹d´Å+'e`‘_¼²Še¤æA6ÔhëOvÉ5^Ò–‚´¥ yÂ5+Þr»O]b!HÓ×Xöp¢Ê…K(¨Ì/¸Ð2„¶ž +èÒV¼âŒþ?±žá1f“ò‰4Ÿ!ÒqÊ Ž½SþNÕm=áSŸÑÌ(ÐÎ+A<µÐJ$,§TÃàÁL†\`æ˜2ÔZŒmçX	.¬CÈ Å.Bß˜	ù6<søåïñÁnÞíß¼\†EçÝwïþú×Ç HÉÕÛ¨õtÅkz66ãÁ·o–=	cÌ¤Ì¡üm:¶óàÇ.Üú`]Ï‡áËv	·o~žÝ<¨â&ÜL¿;rv‘#9tEß˜uƒ~Xæ/Ë€Ð¢—Cœ§×ïön&nZ¾î‘‰I–7ÃþÈ†Ë/:3Üïlvúûl\˜V”t.«‰‹ï
îÓ–™žñY&ë7‰ÃTƒAxÒ7»†›åc4ê)þ×wßuÃRÌuíqÖzá¦¾[ß¯U ö¬¶€¬Â7[&BpºÅ
%l#W€AJyÁâÞ:‹Ï¢³’Y¾ÿðÃá‘›1À¸[ŸZ_4[eðÒ3Þl™¡Y)‹[©îÂð²ÂÚ3eZ'¬ZS/ðtß‰ábìÆÈKû4“ËRvV^Yö,ØÆÐoþñÛ¿~øðþ#ÿO¤_Móã_§ëà+I˜öÕ$\íg3gÿª (‚÷º«IÆÓ¸¬¯âÏÐ¯mßQõ×„×»óÍÿ„yÃ#ìÿ¶ÇWn‡¦*¾Žé7¤wc«ï90°t€9ÊAH;j@Z:ƒ©æ˜†Áƒ°{/¬ Nb€T€Q/'P·žCë9ìòÄó¯ÕÎÜò,ûÅmxHD×=ˆA˜¡¦ç~x|fß¡vµW3¾Ç u)¾ÃÞæp‡ø©¡ó5'âU‰óyÓ¨#³i^ý)	æVÞFK2v¶S¯G÷!ýØ+oÓït(^Ï¹ÙYû&¾È¯9Ûå¹RK,e+rLÃöÓÔsMÜàY—è´óŒøÔ1°ŽW"±z-vZ
ÉµQÎKè 	Î¡7Œ©faj¬%V@©´bÀ#Xá•ü¾L½ùñ>šèïÇÝnt~[úinJX”ÒG	­Š²'tÌ\¹*+ý÷ßÿöè”Ü.þøM0²F¶xÇì¹•¿,Ü ®¹©t&óéd\¸oƒ71vi@÷f°y¼HÓ\Ó .º?o”=;6?|Ñøç„m‚ð&Á‘I”Dá½tû.óÀ r;à#p;|(ó§n~Ý÷§ãÑ)ž=úÁ¶?Æ¤Æ¹A¸*ë|—V¨š/åÄ Î¼1ÙŒö’ò —n¥¹Sôh>”%Þ`^qæ÷>â•1¾Ë
“½€E©1²CÐˆ f•Ä0)Ú{ˆÃÏ ˜1~H0ÈjÃ¨  Ë#i$—ÈÇ»-ž‡¢ðË|‘%l¢“n¢¤«~©yh”„jñèE<ªQ‘Ðí‰BÕÆ£cF“.˜Rƒ#;ªYßéY¶æÑðjì}øx;Z®nqN5{$°Â™È…£1aGB+wX Ê˜àŒËàCIjÃÏ"-,	¸Æ¤A¾žY…0B¼¹~P3ŸéÆ¥2ë¸å©D‰Eÿ(y7`ýôÏŸoì^ùÛ›·±\®¸1S·Ð¯ñPdQ)µØÍØ¿YÍûD%Öíx
³7Ž:ko¶ä¼Û<’…•–®!OøQ4^®ŸC#€7™€ÆÁºX?aÁ(I=Õ×7_g¹‹:8‡¾ù% ¼…7ñõ,@é/å«Xüáé·è¯«ºò×u¹ò¯'(÷«›FMÜb®ßæ:\ïæ‡ñPõ/úí‡÷7«½8Óê÷ïÞWR‘·þ6ÿP”åâàZÅé7Uºq}Üöº¸›'{t«Ò“Á8=×ßæïÿX>~ã	ªJ3vjÙ¤™Sjó¯0™å,M6džÀçá Ybèâ‰ºWn ÇAÏvOØZQ_ß†KVN4h/|é7ýfm7~w?²·cUôÃ÷7‰_µ™G¸]A@Ý)‹ù(ÞÑíÆM\g=†'½`fºiÎ÷9EÞ'=Ïîl?8Ý‘€V™Ãó¾ÿàr†Ÿì°ÅhPa¦ºéw÷é~èîržç$­¬N^ø¨ŽŒ˜föãÆÓ† au…¨÷š™yòe>7{óó†V§PŸs¶yáó†³à¸=Œ=wbjá}ºTÏÛ÷Ÿ£6ÈÉ>ËÒí³¬‡k0íñÑL&óœ<‰M™ðÿññŸ?üý#IÝ‚›òQß&î¾—D³N^Mü\_ýRÓ<VÂ‹7l	\g­·¥W=Ykì‰æ.ÇöLµÞäË“d¾Ó—'y–cQc’¼÷\¨AîË}Y{£7þ\œ¤š§»Ä3^àsqZK<{çlIflÜ-É:K]ocÔÿþ_Î½…<¹7YÃ?“GOÂToÜ™º˜Éßu;>¶|	eäªäÆÅ¬\ù:Ÿ¬6,Ôé®0/NëŠ°îìœåä˜ØÏ‡è%ø˜žå QÞa´!® WÚ•²†B%Cœ@»×UtøYÜ|˜Dw°è97»yûØ©nì³k‚µÈÐe àä‰ [©T@	¸X?¾Ž?œ%¥S­í¢öázŽ  ±Rÿ¤gq¥ž!ŒÔàKÑÏŠ:Æé³¢”j–å•5sÍ‡ÚMgîs–{9™öM?/xºñBŠ5a+ŒÍò¤MP¥yîzÖ*LÞ;Žl^.kÝk5ÖŸr$&~–õ-Ô?×)¿èÏuÌ@MûÅÃxzWÔ/îëˆÅzÌZ·;,j‹Î”în¢¦AñØÎ½Ì]­GŽÇVƒñl^t`'àAÝ)†E§ö£¬Ëß–æÓm°\ƒÅu;ŒôÌ?Žb¡ÝC(1ù±g¹ád^Ã'®½ƒwlš^ÀìcÏ×Y=ø'.žlèffšuŽ{l¼>ýÁk&w·0‹ÎB7¾t¥ár;ŸâB‡>Ôê\<ªøcÌqÐ}î@TKÏ}îØºÉQÔ×‡ÅÇÚÚõs}Åü¹ÓŠ¨³0&‹Náýò·õf;$¢ôÂÿž«Ùl:nI=ùèôäìÞhyIˆUm”^L‘n‘”ãkèÏRîs¢œàsçO&Y{ÞkMœQ÷Cgû*Çz§›wÀ¼àÐŽÁŸƒH¸ë˜›{Èr¹O”O4U±mÆ@}Éój$¹ÙxôÅÝEœ|žøÎ®'a(
EÞð‰à¡2øºÙ‚ÌÜdIÌ°@éß}˜”7¥–ú´-—¨…†EŒfä}ÃõvsÖ	ÑØú®å~ãq–²‹ÆlÞ¡Ðxj‚ÏîŠääŒ-¤Ânš-|Æµ×œAf}Oãš}€Wœ¨6u÷˜\Ø go­Äøž-E’’›K§/)óNM—/0s‰."gïäÖ¤k0ï·Ù†Ñô ¶øgošzûm²æÎÑÎdÍ6ãò¨y’GÉØ|µy’‰Jü
Ó,IN†ìKâu2&Lò¬—h|´QXç}-½4Õ2|A2Ñ4yA2C¯]R2líOúÄYµZ-.Ø`*îÃ$Æ\Ê¨	I™ögny±É2¿>Yñ½§ñá…ýë—÷(ö¿Å‰‹ý’4KÕÁÊƒ¾ÉÓ'/„”lŒç³$#B ¡±RšXÉÐ ¹ñRi©™SPÜ ×8ã ‘nW²ñ»ð<7Ã±\‘Np³Œ—­¿ã‚,y¸ú®(ÓO—œóe’ï³I/+óx£õweæ1D Š’k3÷XbL0æëÉÇ H©ÈÊ>«Øf—c®"û˜	ðÈ`³”h<û¸¼‹¸ Á=NHB^Ð[}³½V&+ÛTúÃÜðÄòäº[Ì²e2O»MžíRç|\q›d‰ô³âÒ&ö±0G ?
lt¯2sÕ£„Wf6ž~ÉÌ>A/“ÿbK”é8hæ,sq)š·ë²	†6(Î¬ýcÂ“¨°|ËäãFSº`ØÍ[·É¤Æ¾Èû†2³ÏmpŠg]!ˆd/²6JÈ¡ *%†ÃL~©ðµ fTòo¬›Æ_I›ù2Ýy¿ŽØ°ŸWÚ°ÄÈÖÍ\TS5dµƒYR}3ûø)ã[.¾ö2Ý\ 9eîQ°Ñô§¼ñ—)âûYŽ«»«,u÷35ËrúÝçÉÃTe‘Àå¦[-Òfj<K. LÖøIñqa,fIM³š/þOƒÔ ¡•È¤ËÊ:ÕòYß?d­O·Ÿ—Š7wESä²Xƒ1èîòtBïK0=F91©.ÂW®Lá¢¿+•›ó—µdý‘uŸ3µX˜ŸsUtP–HÞ‹ŒfYË£—	„¡¸TÝ¨žXQOl>­w›ãYÏM³®™·êã"|¤Á£_Æ–² Íhã†ýî´ŒŒÇY[iMgÉ§yì|ã¯z<ž³LÔ¬•>ZÄ¸Z–1<œù©û4óJ_‚kò1÷‹/¥²$Æ™W[Í€L/%X™ÁðEäû‹çÜ.¼îÓD±š×.°æm‚‰ÉÞMö–^õ¦X–±Ô«œO"n>ï7ÆfA6;ûEð;æå¤š,ÓlqHã§áÏBAùd|Kax^úšÍcG°Ùì™óg²#df—¡ó•f1ˆ½qV„²Xìo5™äÈä-îÄå™6Å$oøt6-2bÛK7Óç½óÙ´?Š¼Zå©P^"e7/6ñÚSA‹‡¼•ÍÛ¯_Š"ËS‰Õœ³ï?Æ¨Z¾ØâLßºYŸb”ÎÛ_çÏf|u²mÍÄD™¬«LÌ°_dùAÆªû¼‹¸Ï“`å^&“¬(HÄÐ]ÞùYæz5’û½¾›æ]¤?ÌŒÀ™É]7ï"3;6y2‡‹dT™ZŸy‘Loh‚œw.ëSÏL†›ç÷ZÅjªY–¾ª›p—o¤äférç³Žø¢@Ök[9WÈ™yxª/Bã¬}œ—Â÷9ÜÏÇÅmåfó®3˜å;µŸ£±–8|ÅÌÂÒO»·ËÎŽãQêtŸ;E ¸ap?XpU­¥œE,{œ¬I¶ë>©ûy§P£¢ãÇá3O;ÆÉnÚ÷{wÇãî 8öÓqÖsª"kš²NÕœú³ý·nN=wóúñ™oYÕ¶:#áÆÏï~¼Í¨ÂüðKÎèA˜5<¬~ÖøõRÃxÎ‘\m»`îˆ(ù1æaÞÖcþXDä³…Ë$¦ô×Ó{æÆb°*ü<øá}ëœ§}’Ÿº:r‹äÚ,É w:à6AÜÒT™é—IVÉt)0^,²Ì|Rd-ý|Z–I¤æâ[yo3J"Ö%ÂGûÃ÷ÿüð~LünË¶ 9kf9O¿Í«ßçhI$nq”“†kã“ g}|†Ê4	•µ]´$²ùó¬ôæÕ¬ƒòÊæãí/²+rnÐO[žÌ%ëÖ“ç<“K,nÎgîêuÃ¿Ù2cý)XúÙb“îÐ•ÞaúŠOUpgåP²é35·a)`æý³²Yi¾ØDÇì…¢†d¤ÒpÓ‚ÑjÍ~Â€\^Ï¿~íôÍ¼Ž\–Ì|TÆ”Ã=²,¹2O%G¢ÍÔIH£>M\©•X*Æ¬	”ùÏß~üé#K­ýt?TÆÄ„¢ß-¿?ß ÀGÝf˜äuÈ³¬šd_d¶@hž8þ4l[jÚWeÏØdýµ!2xL3è‡aS‰:†_f=Êù’Fn\~(u	Ã'>%é[gT8ô¯>dÔ;oI%XoI%~q›Rµ„MÛM¡Ds`S(qÃn
%n·M¡Äºë-¡Œ¥ˆh›±‘jRÊñm`2¾¦ÉÀ9ÃG]X"1LÕyë¿ýúd©•ä'g®{Q:ù‹Fæl<ÍÒ”Së³†7Ï{- ˜0Õq£f.£³Å—˜ö¿ô›áÕÌ»ýQK¬×±^˜g¨Î§ñKdLd¤Ø–Kü·ÅRiÑŠA^à+ä,Â%óµ´~ÉÒ-­ßJ¾Æ‹ki³i[»,áKå±»ÞÎÁC«—C¶{’F°–à¯%ø‹ôAÏ~0?àAÏ^^ðQ<9|¼!þÛï?ÿoÿø1X`uýIºÎŽ?˜±¾h¥úSq*^3bæ;FÎO/HSmËÃ¸	_NÞïNT#/K§OKæ°üTQØY‰K±,‘eBEþøÕZÄÃâTÝ¸C:QËíNÔ:/K£DÝ¼C:që§se>þŸp¡ñ¤-eB±ùLß¿H±4ŽÍ~Ý¬"‰u=ª‹Þcôý/ÄAc$'WŸ¥~¾0cðrÃ;‰3N{ýÑ8ã«²µ[Ì£kó?Ñ>5NqßwvlªÆ<¦5/Èw,ö^nQbq,ÂÔx±M˜:Ç_&LÅÎ" <r€w”x$ˆ^Jˆ¡Ú
§©'/0¥ŒqÌ÷ÚZ§‘ÝA˜úþ‰Êô&>Û‚åt7UêöZÜ,ËÆ‹›Ø,4®l'‡ÄÖ­ao®MyYD©‚o¥†e[~[[D©J)$Û Ie€_Ð#I*ƒœ#¶š!…"5®ÌKçbµ©{)R•êAx;µst1©#@ÏºJ‰½©G:äl²*c5âf2_OÂÈ0{ Þª‡³U' TÀ &¥ÇÌ+ ã–h…ŒsŠ8Äƒ¦b€Ã?BG–Â‰„“>Aïþ° ¬»yûTÛSÍU½Gø²T­”ÉœÔ –Zu]Ór$Áºž„³-V§%¢®§e/‘ˆZHŠYž–=”‡:n¡êm™†š@†™Ÿˆ1tÑ†óãÊzôluÂÒ•<qÁE¯œ`G£¨i?rÝÕjz>±µÚ¾ÇJÇ’0¢|†º3‹Î$~ÁEÏMëÎ1VE¿(+9ƒS4/ifIü¦Özì™²Ù±:5_Õ¾¹gný Wwîb>Š»èöW²>Çí¡7tßEáÏI@£¡º«·/>—ü÷u—ásçaÒM,™‚ˆ&G+‘X–+÷°v©F[Ð_IƒÞå÷µ(3o¸IoÛxË³ÚÓŽgá™'ºä"©þÐM»çiÊÃsÖyN5… jöHrï´å%0ŠXâ=%ƒ ÂœxÆ¼·½Ã×ù1>ÕMüO§|¶›Èé?ÅøPr‹žGJÇö;³-÷gÁ£±lùs3¯_&ü©\ÐKò‡$ (Õ’˜K´á!ÆàzoÄEîÐÓþj¢+rŠ8&¤~èéiS4£‡Ÿæ?Š:®c)œyJéèàs¶,Œ‡â,ÀB”%" ƒ
CM˜èb°‘Ža¡$Ad$òÂsG‚Ï•†ÖIiðP"µXÞ7cåæ»÷yÕ¥mñ˜»ä—àÆ>®Ùøf2“%~)æ+þÜ4j¶:ÜX]$è©ÅUÞ,¯raÈÂR‘Ep4Æ:²¬Ù Êéõ¶\ŠP®	P :à,c¹#šÑ­ËÉ/Jb'Îf‘äNk#Å39¯AOO›â²~¼HPc½K÷\Oa ì¹Æ/Þ…B]«;Ö(î,;»ž§.Âh-8í¦ÞP	%4¸ÔDG+	Ë!al°¶Žiê vÔ.“ÈÚ~Dl5xê[Ð°|Þn<'|èÏz7a	ªNûÅÊT¸Y©È(g³/á—~ìÊ¹è…»¸n©\”UAúù#Æl³!.Ç"öÔ}4¸ BdGÏöZk&]™$“™‡‘•{£!øÝ¾ÌÙL§p'×>§ù3ù2ëG¸Sô?ïÍ
k6pñ+1'®tyJºõ¤Ë]¶9Ý@¶nXÄò€o3P7 @C’QC‡‚Y°,¸¦N è¹bqÌ­Ii’c~ŒLª7?-u¿wÓc6ÖeÞŠ4¯ÛæÔßÞ¸ÛîíMqßzîMØsEïæ"Ý}S BØ 6ˆH®{ýaåùo¬slWlˆáÌnïƒ²ùf^‹ýS«­ÓÆ¯Õ{ª&	&~]÷—e
oÔhônì4—*ªN_ïöö]e6ä>ÖÉøN/˜Á1›¹ð4¬‚Åd®s_çðA=™¬BÌzÔiÙB¹dF58ÊNM5öïÏ“|‚§+HÛ¹*Ò¬Ü^~™½á2[¯›e¹È¹q	ÄT¯˜Þ)õÖ_y¯·FÛ–µÜG×À}t>NœWLjSæl|!çåîÈ½…<5”Ù±¬Ì„Ïµj&¥U"4L…è‡I7×æ>¤ZÅHV²<j„¡Ï2f¡Ex†G?dÝá³„¤5µ€ )ŽC„‘ÀŠ;A	`
	A80Äpé½'Ð3Ë½°Ðå¯$„¤úãï½Á7ñ´»è
s)x;ýŠ²Í·«!ÏÑe¢™[¦7¯Ï~?^]ËîûÓñ¨,¶¹¬ ôv!ýÎ 4…ÀÍêN(	ãdý|5ü„?Vø¥¡ÃFkcÏW{Ì·CCà0s#Þ|Àá¨>Æ;œûØ.~ãçŽñ9Šþèî/I¨Ôv\Ïì(¨fw¹}†êDÝcÀÎ²³TŽ“ß?°N°>¿‘Ý…¶–;]3{×ÁYwfï>NúŸõÜg7;QÛ³Åéû©º¥Õj}6Ë\ôSv«wÊ„b»—t‰Zm°²Nm&á!²{¯•B-—+yê#ŽžW4uª‚¿€@úaÒÚçî±ÐÌ!BfÞè\“æõî¯,ú~‚ý6„Ÿ'~½!üæâçÇj—åQØÃí£ˆMgœ³=e?gÌû2õl=JÈ½Þ £Z·½Ê€ÚzÌfkùŽš‰õJG'›á½ÂPê¤×Æ†?3ÊåZxˆ %DÄ¸ JŒc‚xÎ4ÈhËw¾*Ý77ñÉÒY:~[%UWH_Vüãäø5"±ÅÇ!¨¤X¬Sr0Á1E9T°ËÝÓF±¯(Š- ; ‚z¹#šñ—“_FõáÞò±O.ËåÑÝ³èr‚²æA{3gÈ		¤ÔÈb¯¼ÇÔJ7µv ì¼äAå¦ JÉwèòïçƒnl=ª«Î«'¸0ž|"ÉçˆljtL@¬ŸI†‰’î;S£ën«Ñ¯J£p F×Ý5ºî¶½J£Î¢Ñƒ×”Jl4…RÀ5Š["¬IŠc)¿{®‰f–è§”c”BB
²K£»QWúµõy…øeis’\½I×ØÖæAo#(7´9Ø	rê—û§ÕæW¥ÍsyÄ_ØMjóCû¹_·67Ïšðœ&Ö‚±ñVJ%Ðœ`.5„Ž B©ÅA}S¦´ôžÆ1^[¤´‡;€ƒvW¬å

«¾u^%~aÚ<9ÚPPH´ÉQ‡$˜È6¢-’G²ìh‹Ùî½Ójó?¹67Õ .'oµy•6?+)´B (˜&„c,<æP[N¬À†0k-ÒÎP(4B;ŠµTˆc 0×îÒæ_éÕÖå;…/L“§GY æXlirAy$ÛZ×ä‚
‚³øG–{§Õä×¥Éó™G¶wD“šüB˜G/T“ÛóØåÒaà87ÒrO•—J ´‚Z O€·ØÊeP9*rOCÈƒUî´7ˆA†íŠ›ÿ Fý¢¶*¯¾,]N“c,bÉ¶ŠxPdmèr&’ÙsÛZå×¥Ë>µMZå¶µÊ+uùyšÐ%8	êÃAg­ÄTÂHmO´c˜	†s–RŽ˜d†iRË Îæ‚ÎvèòŸ\XŽÚ!–
éÓå$Y—3äV»M ã”âõxyð`^Iær÷´ºüªtùÁÛP™åä­.¯Òå_ÏaARhÄ	Læ.èi¦¬‚0fµhŽ©AÒ`	ÇX` ‚yn•Fìy¢f~Ù.ÿ:uïzª¶e^%aú<9Î"1áoö#I%]ÓçáGS‘g±_[}~UúüàlûµI}þµÕçúÜÎÔÇpc…u XÛ–)ƒ¬ÀÐÓ`—
I' aëœwœ1'´pÄî²Í§ÎÝÕ6Íw
_–&gé™,D2²Å×EXZ€×Ût…1)U25¹´šüª4ùÁs7hP“»A«É«4ù™òöQà=ÒÜë˜F®8±Æ"A(ô  Ï9E–#K°‚		CŒqå8Ä»h²~u„Ì«Ä/L›gÔ!@ðvß€Ÿ¡Íº!
I~Ýkó¯K›ÓCã,®É¼D×æ%Vjó3õ×eÀx­Æ9‰‘GÁô–Îim ¤b¡¹•Üª`±{	 aHc”pve²|˜t Z%~aÚ<=›……¿ÚÊ2GRB‰ÜÈK”#’eqm6Ëuióƒ£æ®Él×f³Tjóó´åÆ)0–A‰ÒQ¦<÷€x‚±ŽYÐæŽ0¢¡Á@"¬±1°Ä.Û¼˜GVÊ_–>çÉ­Ñ—Â-ë\ ÔùFžyÐùLäW¹¶áçuéóƒ£æ®¡6ŸËÉ[}^¥ÏçgÑç0mÂ-ñk(ZírÐ@@¬ƒÐ²xJª$XJÂ4Šn)ÞU5ô½*þ=wµK@wK_˜.§éÙ‰€$Ü²ÍÃÏ ¶y˜3ŽËÕåóV—_•.G‡f'ºy“º|Þêò
]îûç‰›s¯51Jyí97ÔRj°wÞ:.1… §ŸkÊ™–à`Ç;Ë¡‡h§¥Â»êùÿ£?:$ÒR%~aÚ\&ks$(@`[›ZðMmŽ8[%§ksßoµùUióƒ#-¾ß 6÷ýV›Wióóp'ú ¿¡ÕAI' ÐÔaÂ‘Bkì´Qñ’Sœ
¿zŽ°WÈrí	Ã»´ùÔê—€VH_–.(Y—sßÎ5gñ¼sƒi0$bc®.o¹[]¾µ#šÔå-wb•.ïž'7Qi ¥á@*æ¨²„
XÂÄ[ÝP‰2"%Q‘“…`¥ŠÅ ›]Q–ŸTøˆšWÊ_˜>gé‘‰·™‘@B7¢æ"¬~~íP·ÍP¼.}~pÔ¼Ûd†b·ÍP¬Ôçç‰š#f(‡Â3B”$ZcJ¼
*œsT=*¬wí„8ü€ ©­³V[ =»rZ~šR±Áfm}^%Yú\¦Ÿ‚,l‹£…#|¢XG(Odëó6r~]úœšqÞm2rÞm#çUú¼wžº~i ea,Ôbg¶œAn Ò V”;1¥ÞxÉv¼3Šb Ð®ZÐ¿¹ðxuµy…ô…éòäSP
cÐVÜœ!¶2Z(ˆ‹ì¸y¯­ë¿.]~0GK¯Éºþ^[×_©ËÏs
Ê‰7@`¨àV”‰E•D†;þG=fšrêiÐêÆs$”Êa+„Ù¥Ëû#[Û0ß-|aš\¤ç&R&·;I€àxó”0ŸÏÒkO@¯K“\Úkò´×ž€Vjòóœ€2Ï-T@CÃ1QÌbC´°Ž´Ô\;Œ1+±"hvì•^à0c»˜ßMÇA	@i^%Qú‚ô(‚´lh±e)G7£,ro™·§ ×¥ÏŽ²ôš<íµ§ •úü<Qs‰Áÿ7
Š`jƒ…DVÂ`Ÿ£ð3Dµ
?R–RB‚Õ®¥·ñ`Ô;†1òbWíÐßæ£Ã:ÈUOpa==ãœŠÙvŽb@Jˆ¶ªA)2ßBoãæ×¥Ñ>í57ïµqó*Þ·ç±Ð	² Mm¤–T¹àæ1É EA¯st¼RRy8Ò,ˆƒ:r-Z¡ ÓZîÐè?‡OläŠTúž.L§§G]Fd+WqÉ$AQ.&ùì[}Ûêô«ÒéèPÞ·êô¾muz•N?O…?£„:E-ƒÌY¨MP×Á£œmµÖNÁ`.ÄÔs…©ƒžJ„µ$Øì»uzÐW‡(ô
ñËÒæ09æÂ)Áh›}KJB [º€ù¬¸ý¶¾ÿº´ùÁ§¡ý&ëûûm}•6ÿt¶îCL ‚TØq"5T2¯VØ*†µÂšhéÀV"€%@;"”rÈ	NwhóÿTìëÚþ•ò¦Ï“ù·(â …[¥DqÊàFÛ
†„¤ù!—Om¢ëRè‡\>5Ù‚èSÛ‚¨J¡ßÏ¢Ð)Ì [73A°¶Lh”1’Ä^C (,É‰€3Œ%¡€K/%bÖ#•Ý•zþ÷°Êõ­ó
éËRæ(è<ü5ØJpÁ@È7[Â(åù	.wãV—_•.?¸,ônÜ .¿·º¼B—ÎjÚKÍa1`±r[H8€9Åbå'ôÞYÆµ¦ç-Œý-Œ”,èxW‰ÿûþ¬7W‡Ð)î™áÂtzò‘(“‰g-B‡ŒÒP&(ÃÙ:}Ð\®K§¯8’këôA“—Ap©Ôé÷gÑé˜Ç˜sÄqé´fi~„´¤Ð ,q„p*4ÐÎEÚá¼Ø( €'rWøü½šÝ¢Ð+Ä/K›ãda&É³ÂÐàð°Í†ÏÁ:‡,?eqpßjó«Òæ[èƒû&µù}«Í+´ùHŸÇBçÔE¥ÕÖ@ç @H£T+È}0Þ¹§ÈaO¬3Py‰Ð©-Ó~WÃçïÇwC5¨M»[úÂtyzÃg(¢Û–9E€ÑdEA1aù¤-#Ýêò«Òå…Žtƒº|¤[]^¥ËÏCÂ%¡öZ9m&@«„á
JO ÃR§ão ÀRù ë)—† `È+‰òïÒå?Ìgõùw_–&'ÉV9ÇóíÅ6ÇHn$µ„)0ÌŽ±ŒZú­+Óä‡ÆXFMÒoZú­JM~ž¡ÄZ"<S†"«1RJ¤Üjï´GŠsíD,õž9CEQ•[ÌÓ
ï*ñÿõËh<-j7{®¿0mžÑ¶‚a°ÝR.á|+bN‰à$›|kÔ6½2m~°]ÞdƒÐQÛ ´J›OÎc—k(•Ð#þ§1ÎkâpÐížHŠ ^Ä¤sÏ¥åB
†¼uD@¡¢Öï"ßúm|H·ç
éËÒå4Ý2§4¨è­x¹ÄŒC¼IÙ‚„ùÅC“Ö2¿.]~p¼|Ò¤e>i-óJ]>ë|ÿûYÔ9À^a`(5ÚYBµF,ò)‚ ÀU°Ç½±Î¨$P"èu§14he‰6–(²Ë8ÿ~ª¾ö© ªžàÂ”zzàŒÅ3¥¦`d3Ü¨È·”Û¨ÕëW¥×Å¡Yçå¦hRµÇù[í^­Ýûã<At
 
3,6–ƒœ&$á‡’Z*aH`/0UDc œhEíJYüm<Í»ó*ŠöÌpYú¥í=Ÿ±ŸÇØ9£tS¿“æª¡ßû£ÕïW¥ßéÁv{ÜÍê÷ßþhõ{…~Ÿž§¶H,æA¹8çF@nÂ0c°Pú`«f¤	v½rš9b-· Xû¥–G»j‹~Ÿî!Ùè•ò¦ØÓ©Ð)l»!4ã	¾ÑšÅ¢ùŠ}ÚÖ]—V?˜pqÚd}Ñ´­/ªÔççjSÄ	õ1§„*[´ L±ð«5 ÉÇ^Çž¢ž8¦1Z
wå¢ÿ>/áæª¿,mÎ3šˆ"H·¨\0ÁtßÐæ1TCÍŽ­O[²ÅëÒæÇÖ§M’-N[²Å*m^œ§± H*d$peyè$†Ø*és^!N¹ A™cÍqÊ¹Å@`Ž,ðŒH²‹ýCÔSƒ"/Õ\˜FO§Zd€Ãmû\0I!ß Dæº„ù½h\\—F§‡ÚçE“.Š¶ÁE¥F¿;}Žˆš›8¨ •0¹ó’F. C&Ê
¢<âšh‰Õ’k	¤5’[‚È®`ú‡Áø^ÕNc¬¾,].ÒëþoWÁÜˆµ –ùºü®ÕåW¥Ë¶Î‹»&uù]«Ë«tùy²±0Òî„6"ñ<ØÝ\YÌsÐ{©-‘Âj†0£Èh„ŒGe‘Aœ;BwUEmì	žWOpY]âôcQ*±ØÎKçÁ@G›yéœ –ŸöR´¹Œ×¥ÑfZ,šÌe,Ú\ÆJ~&ÔZ1¨˜Q˜bI¢ª¶Ð œ¤´2Œ•Î˜H} ðž sXz¼‹:÷Ãƒ³$¦W‰_”6G ]›Ã`‰“çUFP0¹UeDƒ)Ÿ­Í[&—ëÒæ‡ÛçM2¹-“K•6Ÿ‰™Ðˆ(ï	‚˜Â4Xl%‡h,àa‹µ¦Î€™u¾´Óí®æs¨a¿6‘ËnáËÒä0ý”DÀfÓ9Œ°ÄXòõsÐ0ˆãü–³–ýº49<T“Ïšd@Ÿµè•šü<m¡a¤OŽXÏ¡U”3+•WÞ*ã)àNÃ`Š3é-’
Ï¬áH(ër&61Úe—ÿ1ŸÞ`—W‰_–6GŠ –h;ùœB„ñfƒ"³Ô³íòYÛúº´ùÁíæfM6…žµM¡«´ùüLg D3f”$Q£ËhPê@ãPÊÚØ”ÈC%(¶È
©%Ò8ü# ä„hdvþón>ÚâæÕ\–FÇéöyÙn”lå)ÈFVKø‘ ñG™}Þž„^—F?8n>oò$tÞž„Viô¯½ÎßÔ¨8‹ZwÂ*)(£·/%÷QËkª´”#K1;…÷€zƒ)wá§@g5Ú™¬8œÊª~¶bå¦Øerï9 Ã¾•Ž ¥Œ‰ÈKð¢MŸ©Ù—{©UïW¥ÞNZ\n‹uüò
­¢ß«èÏÓÃ(²Š8mäoAÒhÅ±±
(¤©3X·–@©Ò{M°ç9BÒRFä.ûý©²ý¨™êÓ¤ï›â²T=IVõ2*p¹Õe2ÐtÃ† ?Æ¾ÜL­¦¿*M/£é›ìg´¼B«é_ÖôÁnóœÇšG±ÝhPÞ†pé‘ÇÐ§I$ÜŠ@Ä0qŽÇ&ÈÐƒ`ÉNˆ@ÊSJv6ª{TÆ7¿…‡oc¡£ÞN‚¾ÐW»ý=w“2Ãeéùtj/&Ýfö‚‘ew#gJ³è–û¨ÕïW¤ß‰ä™©êéûøæ/Zz}Ü»è6\ãn6žTMÄÖ?Í_ú£þ0lôé`|[Œ¿ùË7Œèþ,m7ý`¦ÎrD·o¹[N~ f¼|‘‡‰Ÿ-çO~ð¡›…/Ç+_îã —ÞlxóVÍÔíçá rŽ âzáC¸é7k›å»a1?„m<îªot‡üýÈÞ‹Î‘'¹¬íÄÛ¡2Óñ#¥ƒr½…è8W(ñÃëš™~æ†“š¹cÍ>VE?¨°ITŒf>t[kÔÐ´ðyÌ:5·VÊü«eª=˜9ÜÞ‹ÎâÛxñRÃÁq,ç‚å;Ý•ân>ÉÕ}kÅ|õÕíR‡išƒnës§ÿ0žÞuîÜ—Ñxæ:…÷á·9Ü]ùN÷Gß½jè0ãá$:Wnš˜n6}qwpƒÐ-Lëó±¨)ðÓ»wñ-H“F–x‘áƒzO‚£N”[ßu£ÜçŸÌ‚Ñ­luD~zÿó÷ï>¢[tK3›#8«{®ffîNÕ¤×7ÁG
Æ]³1±>|Ðãé¡†}—ù2Ê†µçóÆÞwðº.ì|³WbÅ,ìæa®tá?ç˜óÅx–5<8KËUË½¯™5ýkŽ®Y—x÷¯½ýþçð"{+ó¥K=ò¯}J¾…‡Ê'ê±òâ0y”ˆ'Å}ÞŽºÏÚ¯³AÎè¹Ñ¹p´ÍG3™ÌsnS&¬Ù?>þó‡¿$©[fS>Šâ[X_4ñyAô#ø˜ø–WÂ‹å¶G–I°Kúqé’?Õ½3ÑÜåØž©Öëxyv„Iò^Q¡¹ïåQdíedÜøsq’j‰îÏXûçâ´–øò¥×ÍØt›’ï7OÞ›¬áÓ~0!ÃþóÎd)ôàé¡ø<(uü8gö¯É>Ät6°ßüôë??þíí‡¿í™Õ¬Á]ðžCõóÓ§ÓïÜÿþn^LKßq<~<R*ÿâàªuãØŽòg9¥²
à0ÆÊyC¨E9¯µR (¨¶ÀËX !"Æ*ÍŒ²ÀÍ‰‡”#½ã”ê­Ÿöï”7ñçq%âSÖÈHPö1!áiÒÙ4üwPŠòD#¼’ò ¸ì„žNuMˆÜ®î†œ²y%09$×¶[{˜uE‡Y’¬°¶+šq¾×.p¶T5ŸÍx:¹û®ýx4ûæÅûý•¯”Þ<n™Á zºÞ—IÏªÇ4žC±ÚˆóÉdàby÷"}³ëfÊOmõ‹ÎÚÚ,7íæäÇÅóTKrà8ý<U^¬ ä’je”TJ"-m€AH™³\yŒ&Ü` ÒsŽwq€¿*tÚ1q1ãk…C‘ÜÒ‡ALÉf‰<¢2Ø%|£ï€å”T®m´¯	 Ç€Ã†J+×.p68\ºiÐM/æl¥Ì}|ºŸÓ@Þô4wžlE%±pá”b–ƒŽç0XA8w†cêXp©!%Ë—7C„‰tzÕËÛ¢ÏR¸£‚ÞjÎW{É$_¶Í%@cïF;kÅrÒ×6[{×{àŽGk»¢iØ;_iÒ:ìUæº<Á^‘àßUy•þ]q°ÓÝ³€RíwŽ"ãµ°”"	$^;Ž5Â@qÈ©Ü(m¤!ÿÎ ‰%5Êíj·=tÕ4Òíž&}µpÇSáNAØå‚¸^£EåY„–kÛ­…»k‚;vHÛÖµ]Ñ0Üéîùƒžá!“‚žº›Š•Ó-A±rÌüÅÊû~™õ\±6æ$0»¶ÚÂìèL4EÎxnGÔï,÷ƒ…Ç„" ’B)ˆ”Õ$x’FYO°%ÁÃŸØN˜u£®ô
²Ë)_+ÄÊä@jl#¶©€I¶Y xp;k+êQ±×±@bGMCìè<J]YÉòž£ð¬sðG§Æóœ/bªÃ?2(b#e_p-"v¨¤ŒoÒÂXK	æ(€'qhÐÉGÚŒÓX†rT\\Ìøja1½ÛÄ|»5NpF1ÜèŒC$Yuãk­…Å«‚ÅCX ÖvEÓ°xç‹:í|QŸð|ñ4 všCsžæ^{‚5Æb@‚RëÖ
Ç–Zê¥õŠ{Ï„×@ ¨µÒ–xˆÈNïî

ø¸!ÔÕ”¯Æ’0s Þî¿Œ…”›í—I˜¥–wgÚ^WcÀU»¶+†1s¾žÔðIT£’À®rº¥X9æ>`åý,¨OcN±k«Ý(Äž')‡Bì¡0š›ðÑR®­DÖH'¥ÆÜ3ðIKDä£X	 ƒ(bj™ƒ» ö«3½£l9á+…W’{{ø^1@œŠI€)¨ç%š6çªàUâcx‰¦éts¾tœ'x­Ê Y‡×´¤ÊéVðzÂ¤$x­ºŸ¼§…×Ó¤™/gW (H¡€²kX@¥2F*î¤hŠ$ÄÄ¸¢ZCITÎ8d¼È»‹†ùÿwƒâ¨ðº˜ðÕÂk:y§”|»ÈƒFZ÷^¹Ä0«;ùÚ6káõšàcy˜/MÃë—KÂš/iÀù%8«Æ¼Æ@­Ùæ–kæìyµ:¨\,ˆuûÔCèµ1j¬—Š0ÈSHTƒPUk~b‚ Ç»¼ÈÔ¨\œ[Îøj.=L+Â²³­‘†7:DÎiN;±µÖÝ5#â@g›ÓÚÓÚÄ0­MÓVN·„ÃÊ1gð#+ïgéGÚÓ†iíiÂ´Öç$ÅŽÊ„B ˆY'Z3Ç6Ðq¼FÈ¬tN¦‚PìŒTÞx†µ3pWsåŸ\X’£„.g|­ Ó›0K@·²\qì¦ÐF "jƒÚmßl°aW4°Çñ¦X—°•ÌßO [5Ý
`«Æœ`«îg°î´ ëN°_Ï°RÛ ª ÁØÝš[G€ˆ
´6>kb uJBÉ(åV9àâ±)@Ä)ƒü®@í_Ç£î]OÕ‡]ÍùjA69\‹ù#›uÁÜaÉF1ÄjUkÚ¯-È^ÈBqýÚ4È~½„p­ýz9 ÷õ´€öõ$€æg4eãÊ……Ã¼pÁiäŠyÀ1rR;¥œµqH!òœI×^(ÀùNqêÜÝQÆrÂWe,Ù_ä ²E< ¡@rƒx 
ÂrzÃ®m³Ê®
ÊÀ1 Ì†27¸(s•Ë=Á°{=ÁÊ1g ÅÊûYz‚OcNœk«Ý(pž‡RÀKè9º;¨W"¨mŠ™Öáç1Â¼?‹%t)i´ôžbÁÃ°ÃÖ
»8uG>Ì\MùjÁ3¹·:ä’³ÍÚI(!ë¥“P"‘ÕV}m£µÐy=Ð)"ÅÓ1 ³iBw>BÇP««â XØ4Úð%ýóCÆ^ó@åý¬0ö´ìî4ìî<U'Da¬dDW…QÐ2r‚Øà†oÙ[¤ŒB>hx®5ÀRac¨F(œU³c?LŽž0´šòµb,J&‚åˆ­¾ö Á8ß<Ð¤²^;×Vž\ÊJÄBÛãš®<qPyâ+O\ZåIåt+ˆ½°Ê“ÊûYAìi+OÜi*OÜì<ñ_ï ˆn¤Ø	&bÀzjUðf)ÃXíœ.€«žRJ‚ok„Q;¾Ë-fãÑ‘ùgç|µ ›ìÈ2)ÞJË¾-’MFD°xp­´\7kAöš@ö8ÜxnÖ4ÈÚ¼û8QàÊ>ŽOð9K€Ïª1ç€ÏÙi¡q»ceCÐ8?4
æP€*Ál€>cŒ3Êb®@R‡4½BÚCCvrc%ŒM¢vEx¿WÅ¿çGmC²œñµÂbä1H%Ân“
QDà&©•5YÜ¼…Åë‚Åc°¸yÓ°8¿Xœ§Áâ<«Æœç§…ÅùI`ÑŸ§ˆÓY¢©‚ÌLd`ÙŽÒi†
A!äáoRÔ”:7Bƒ —15~,þ‡
·zLT\LøjA19c³ànzR& _çQ‡”SX¯3—oK8¯
ÉQZ•ø¦K8ý”púÊšË"VZ bå˜×HTàOSGéûçáãŠd vÚRÆ‘ÄÒP­©ABr*’^2¤ $ÁAŒ[-µ€XPÃ˜VíÂ¸þèØ«)_+Î‘ôÆËB²Õ’3D9Üàäa’âz8×oqîšp¥¥ï7sýÀ¹~ÚÁ£ï_X)Hå¯¾÷ïîÆ§EÈþiò<C
`ç˜ôÖ¬}TÝ@p¡½eZ.…³Tæ†Ü)”ºœQˆ7Æ‚]T>ÿ1u£ã2Â.g|µø˜‘˜C[‰9D~õõÄœ`½Ô+‚ômãkÂGŒŽR9â›nâÏ×8ä	«ú¬ãcZ{‘ÊéVã	[$!mÕý,sžÆœ`OÓÔ¤{ž0+åe†ºD(í‘ÈJ¡æZRE5"†# Ã#ƒààœ*å€Ö—w ìÏÓ#; ‹	_-¼&‡Y™Àˆlõåâ<8 ›î§ ¨ÞÙc·³^¼"x”†&Ý¦Ã¬Ý³v™òºiLy•Ó-áµrLóðºÌîi¹ïº§‰ÙvÏÃdÀœWH©à[¤˜e^ABÆRÆ˜-Æ†f)æÄ@¼ Vˆ!`$õ6we²þ¤‚;r&ëãœ¯6“3Y9„1·™²ÃqYB²–²# Eµ¼ÒnËgpU°IÐQ`³i>ƒîEðtÓøº	|•cÎàovOËUÐ=WA÷<™¬ÖY!ULS;7cÀ4hÁF;Idø#pY¦ytt˜A–úøGì—» qþIMƒª>*4®æ|­ÐH“©a)ãb›µŽqÂb÷	™€¤^‘G·Íf½*hDÇÆ¦³Y»‘ÍÚMËfí&d³VŽ94ž6›µ{šlÖÞyÓ¼‘)¸qÚcä°’Hé"“+PÈpðÒ
ƒ	Å48”ÌAÀ G‘ýNï¢ø›øpL`\Îøja‘¦ÃbðÎ·­X Š7­XH\ÏcìµŒé×‹à4>½¦Ó{çcL_ƒÅ^zïÂxÎ{§å0ï†Ã¼wžäVí §ŽÂ±b„áð¤”
Ì‘ö„ZÅ‘ð*¯(4žsÇ¬·Òt1s‡í‚¼þÈÕ\Løj/¹±³äàR2Ù­…Õâ­ëµ‰­Wx#±µ×tbkï|‰­ë€W™²úxU‰¤K?°rÌ9@±ZP<M>kï<ù¬† ƒ€·8²›Qe©ÇÌB@˜§Ì ^"¨P‚l©¤	B¤Äïv€â»é8(êãž>ÎùZ¡‘¥wÏ
N6Û
‘
À%ßäÁ¤&N¯Íi½.hÇ‘öšÎií]@Nk/1§µ—–ÓZ9Ý
@/,§µwÚ|ÕÞiòU{ç9c”P	d½´Ì3ì³Nqƒ‚ :*‚kI­BjˆáÒ`ÜMã‰Á­îêŒõ·ù¨«¦GFÐ§I_-„&÷Æâ2æÖl•… `¾l–…`LE½pj{ÊxU*ù1èzMŸ2öÎwÊø¡UƒëšvY9Ý
B/ì,²ò~–Y®½ÓžWöNs^Ù·gÙà¥Rä‚›
‡„D’ï\€^nÃæH	#Ž	b5F‡¿¥\Cƒ÷º‹™àç ÌF®82Î®Íúj69ŒË$Ïø	x¬“Ý*©é«öm´×´Ç)éÛ†¶o/!ŒÛ·IVc/„VŽ9„>ÝÏIàqm%…ÇóÐ™°^& ŽCëðNA$¡GÒyrbO¼T)jNrbñXh£…¤tW:ÏÏA£—S¾V`äéA\!{Ö1”>ìš
8«×Ò²ß’™_02zŒóÍ~Ódæýó‘™?z ý*þñuøL£<¯œnŸFy^y?K´ZZôþihÑ?‡˜@BŒ¬Gn Aˆ5bÆ@%"
9í˜4N1lµ±‚q/”óqà½W-v”þ§š¨à+•ýqÎW²ÉY³œR·:†HÎ8ÞH"’‚@YËûüÔÒ\Èr|Œ0ï§¦é	>] =Á§Dz‚O•ôg€ÆO§¥øtz»»óŠPÄið½Ö–­(qÔÏ ´€Sé‚‹É”ç{íu<Þ4ÚJ!Œ“À`¢vuù»úªîŽJÈ³œñÕB^rÀ•C¸](‚”˜Éu¿!@-¿òî®…¼k‚<p¿òî®aÈ»»»„€ëÝ]’ÇVãdw[{îFAlt" ©SœXÏ´6 ³’ïÂe[c‚`D$ Ts Â{?»«ôãïj4RVÅS¾VÉM­(Ã€o÷zŒíÁÆ¹¡„ Ôj¨|7jaìª`ì(¼æw£¦alt06Jƒ±ÑþÀgå˜W	u£Ó@Ýø,PA° Z=SŽZM!Áá¿”k@,×ÆþŽ„Á1´¢È
'ö‚hFÁ®D™¿‡õ<îAàrÆWtÉªœˆò-ms0"Àf÷FŽÐJÃeÝ¸ºkº°_Žtã¦n|þåSk‹=p8NƒÃªéÎÈ<qçŽµUjçI‘!.°e(@·VC-B˜Q"Fá§’hR9¯ æQg1…ï*ÔxßŸõæjtä,™µY_-@¦grA·J5¢”mx‚”Êzãƒ6Qæª ‹c0ßšN”\@¢Ì 1Qf–(S9ÝÒ_¬sœ6	fpš$˜ÁýyN}ÀFç-Ærx…¥Ž
/¢–aÄ2z!¼rÜ1BŒ'”úà’îQ5»?6‚.§|­ð)“óL™DaÍ·É “TDMâ¸Á}Ÿ×Ÿð(<:ƒû¦áóþ©ƒû4`¼O Æª1ç ÆªûYf>9xÞŸ<ƒ¢8zbK½Th½•Öyb µÞ0¡Â	Ç ±Š:.4
°
‚WÊF€Av ç/*x‹ýÁQIèç|µø™Ì€Ã_“M²È	>ÿ~BN‘ µ"Ãnkôš ô8	5a±FÐp…K€Ðp'L=	N­?R£@už–RÐs‰tTbÅ-”Ð¸²Jyä¥ÖC¦9²Xk£$sFzÀ‚sç¼Sˆ#vãÔ@}	ÿT«I_-Rñä”™èÅm—Ú‡ŸÀÍ^ŒV©Ú¦R×TGá´6ÝTjxM¥†iM¥†	M¥*Ç¼J¼;M›¨áy8P™@ÎcÐLë•àØs)—„XœÑ€)ŽrF£!õÖ k9PœÂp7UÁ‡:.Ø-¦|¥PGbÛ§D¨¶ÞJšaD
¾Ù$Š2Z|Ø2 ^ÔÅ'kšux>Ôu¨Kã6&p›VŽy•Pw¶Ò‘>ÔqÀ‰#˜I¹tÐ0äž	® Q hdí¹£
j½ÖÀQ'KV ¡tW5ß÷ã»a€§#"ÝrÆWté<¥ 2´EõÍ%d|«BàzÕ|#ÝÝ5ÇÈé†n¤/èF:	èÂjìºÊ1g8½«¼ŸåéÝÓ˜“@çÚj7
ç	Š
ìµaÆ(æ°s€Q 9ã$x%„ Ak3d¬tX§)N;c8–T;Jv@çó™9jübÂWœéeð22òl1¿„ 7™_8¦¨V0tÔC¯
8ÙQÊ*FMCGç†>fŽªâ—ëðš2­œn¯'™&ÁkÕý¬àupZx=Mvtž}¤Œ—
[î•°FpDˆ!D¡“
¸5á_ì†ŽHmµÔŠq­4S[¼+ûë—ÑxZÜ`WS¾Vˆ…m¨ ‘Û…‘u³ ¸^aÆ¨-Ñ¿*ˆ=Nfé¨éýÑE”èÒJôG	%ú•cÎžU÷³ÏÑiÁó4Eÿ£óœ`¡¼ÓÊÍ!à0ü!¸¢PúØ{³å6rlmô^OÁ87»ú”IcÎÅáríÝ®nGÙÝ]ÿ¹Q`”Ø"™ÜÌ¤d×ýÏq^ì ™œÅ™¥bttÙ’± ‰ï[k ’s¯@ÈBk €p¨±Za#¡QHã7…e|ÎÆá]—1ëóÅÂgrà?†Œ¬:–†ßI²¨¡SÑLC½Þa¾*øø ðyì;ÌÁEÜaÒî0¯í~rp¢ûÉü<ék'ØD%AAÑƒØ[†%åz&ÔÔ{¥ÆÎ¨,QÎjì¡åÿ¡Õb“˜Žd³>_*’¡doLY©G	§„-:žB"lævÛÊ^”Ä'l‹ccY~¾,6‹`–§%¨‰òÊà,?MÒ™ì<Š™ÝI)±Þ’£ÒqÀb[¯¹˜‹4)æ5ÅhÃ0@8AènœýÃvšu´ìïÅÂNv*åBðgöL~¹lÏÄL4‚±ìª½*ƒâW†Ù±²ì"²,M!ËœJ·¶y‰(—Fiž§2’ÇRB fÔZ¬½Àc,¤R`1HÂp&C€<^0°Nb‰5 Bµä>ÿQú ñÓ._,Ô%Û	¯i%TA,ÀR¨`ÌÛ,¨}x­‹ôª ¡CTå».Òð|u‘ n¸µâÑê†Û
(M nk›—uÃÓTCžÉ	”m€c˜*i™¶.8çR9@R˜« a|AíeÌ½,ñ¿©Îî§¬×Íê:éñÅL/ ÈÀjvm	E™ÑeÁÑ†åç‡W7ÐWt‡qÛtxn ÃD7ÐašèÖî¦pxan [Ç3ñdžÖtx7ÐaÑþá·óÚU{óÀ0í$…X)s:`€òŽr Ã? /@Ž›xåµ@k5QfcŒâHýÑ=t5ûy§/iqrÁ¦@tàŠ;K¬gtÿåzö"âq¤;î
¶¯l1Ñ*ãÆ86ÞÆgPžu{‚ùÜî=ŸCPˆÄüãÃ´üã[»›RˆË?^íÞÝ,â´iÊËýq*"ñéËy”uëƒnTöÀ¼0DAÇ(wi ÜÂXë!ä…vŒ)ÉÐ"ä˜lªúø)ã»±ËÝaöY¯/–J¤—ÄbâYÒ)©@p™J`Ø,v³ÜsW*ñª¨<D.»rcŸJ|úr:*q‚ùÜî=Ÿ+•8•oû©Ä§/'¡£óø$3n…§\Hñ4©wŽRä @®0³z(Ã¿M´Õ
8jbc»)4õ·pôºnØ¬Ï—Ê!H²OrXZWÿa Ó¶#XD3sÄèê’üšÂò.É£c{$. ¬æ(±¬æ(Íkykw¨ÝÚæP»u<œ¶<çè4žÒ£ñy<¥
x	(õ€hŒ¤ð9& ô}ƒbn“@8æ¢s j(HŒ’›rÎÿ6ÎóCcì¤Ë±ÉþÒa‘Wý¥q ?ÈE5B›å&¯ûš –¤0Êh|lˆ_ ÄŽ!vœ±Ûº›Bì¶6ç€Ømã™Bìø´;>	Äæç)?¦x4Òpe”Rl…Š ¨BÈC­
ÿ&•­7E™rDBD¤U„y¬6UÀþÜÜ«ÞÍáóN_,Ì&—u!âÕ°$H)!dQ“i‚y#M6¿Ö{U0–”»üX~ÕÇò­ÅÇf Vã¢Àq>ž“ _~šzfùÃy<Ê ¦J2B b4(–ÐÊÐQ	g@kï"ØPÆ•õVlt‚0M)WbÓEðç^ö¨šZpÒãK…<šl¼1MZõ%#`Å—–ù›@ÞÃò^ä…¯”òŽyç×,Ã$“4Ëü!·u7Ñ,·¶9xnÏD³œ·9À>œ`ÏÅœbƒc„º¥Ð†hcc‚ ð­ V{-±Ö”aÈ¸%ÖYkŒÕ\Bº)ÍE„Cwè+Òy§/fÓ¸ æ \õ³’l)
8 /G¸Ì^ƒ£^Ì"Éá¯;8*¿€à¨<18*OŽÚÚÝf/,8jëx¦0{Úà¨ü4ÁQùy²I	 S+¹Ô)#t «´–’jÌÂOTPf=Õ€×Ðc¹ª¬ØT‚æ³éCƒì¤Ë±4ÙxKYuC’P´T¨0Ì›Aì5§Ôk‚XÆÑA4Ùcç”ÊÏ—Sj±ÛÒ@-BlZæ©­ÝM!öµežÊO“y*ÏÏs£©$µF “ÒCåÄ©¼@N1ÆTab¨òLa.wuË ¬n¼Ñ|
çóAá°ìðÅ‚arM6ŒZ1ëBŒcÖRÆ{‚x3‡¡<¿‚á+Câ0”çÇÃü"n2ó4˜Ë_„å§°â<Æ”ÇÀ	ì)t>º½rµ6ˆÌ¤µF¯1ÐŒ*¸§=#ÂrŽ<Þ”<ñZºe±äÊg#H!Vr‚—€Ü,Sp^\ìuÙ!¢SóâØ@V\¥Ehæ'Œ¾<§²Ç³ ™Fq)…‘@1¯¬gÆaÌ·jÆ¨AÈ¬´%^¬ˆ  `‹	‹ÝXƒìÉÙçFœvùba,Ù8É)«÷añ!]Š‘iV¼š0öx…±×c‡	àÈc`œ|L4N>¦Ý¶î¦ÆÉmmÎqÿ·m<Óû¿ÇÓBìãI ¶8O¢}À¡×ÒRO” Äs¦¹v
2¬rÞ
Š€PÜXjæáäçZ`€¬Œze Û ±_T¿Û;$ÀV¾XxMÎ=Ì(Á+ðŠ¡)=[çî5
n×$û¯
^ÑArÇN²_\D’ý"-É~‘dk›3 ç|<'Åâ4)ùwPŒ‰ö­3ÒJ! ÕL)­ó„0(”¥
h¬¡¦rà W CÃµB@	Œ0“›¨_\o|7>(*V=¾TXäéeÖ0X…ED)äb93¤Yv¿bõd¾Ââ‹†EÀÏX¸cÃâaŒŒûÂ¢KƒE— ‹ÛÚ¼DëÂÚèîÏãý©<p$üYha¡)˜Z
¤RÅC¦×,ü³Ók¤XK7¥¡ûr¯êëRö÷bA.ÝïS V@S\ú‚ÎA3ÀH£Ââþ
r¯	ä0>ˆîwl»¿»O¹û×`÷§°ÁY ŒÐ š9Á@–HáˆaÜA¨öBsÍ%#ÚSà¼óBåÜ!–žÆî5µüIZ{ÒãK1‘îæ g+n.ˆÊåûAˆ ™¦6¸‚Øk1€¢©Žbƒ‹ ±Aˆ^ˆNbç‰ÁƒXAd°T@9 	@{ ã\qDhM™…q$9÷N«pžz"¹Ðón._Æ£‡»¹L»|±0F’Ý\‚r%KŒðRµ€a5ÓÅ®1x¯
Æâß cÇŽÁ+. ¯HŒÁ+¶ÆàãŽmtZÐ;Mœ]q¦8;OˆfP;E„pcóXK#5`j"c†n(ñü	ªPHË‰·hSœÝ—<ÜXs+{|±—œ3CÊVÊ^CŒc¬Ýr€BÌöÒò®‘v¯
òiW;Ò®¸ˆH»"-Ò®xm‘vÅi"íÆçÉJ5@H§$å–jÇ˜Ö\p¤ÁRŽ§ŽHVk	AÊXå4#hSEþù0
GÐó§Ì;}©P&“srÊäª%¦’ÀÅ ñ€l4»I_s¾*(;L%Èñ±sŽÏ—tÊÆiY>Ç	Y>·¶9ƒ†·u<“ðƒñi³|ŽO“åóñ<ž–@ÅYÐ)0D>¨{jþ"™áá·–5ÑIŒ4Ðo(±Äc±ˆ  ú¯ð]T	¬:|±À™löÄPºšm…P	á’Hm–Ýóñêgùª€ó0:àã±ý,/ÂÏò1ÍÏòñµùP>žÆ‡òëy|(­ÂH  V Ä½¢Âkl@’Z$…‚Ü„ÿè ¢XÐ„ÿhé•
µ©Êàïá{>(„U¾X«‘0SBV Œ…“Š.A¬™óëÕ‹ò
akvÅ‘!ìëExQ~Mó¢üúÚ¼(¿žÆ‹òûö_Ãù|¦Hpì•áŠp'N*‘ÂIJY`üÒú˜ÚPL8ÖL#¬	Ìõ„n,å×öÊãá°µüf½¾PD£ Ù¥’sÂV\*‘ˆ`¹ä‹"d´y6@´É®»ÂÚk‚5!aÒœl#cÛä)Ç5ð-<íöýßOñŒó»Úü±‡`=¼ ³Õµô¶ØéÖ;%Ì—¯í„Hžü š#54Ôä¹‰šv{c%ÇN†¿RI0¡‚*b­eÖû˜Fñ R±M5¾ŒÔŸé³Ðí‹Åút¿SN1\ñ;É±^š…OLöÝë_ÖKpˆK“­q¬ß7ihþòïS<ãEa}ñt‘X_œë¿üû4X?>sS"(î0¨…NhÉ8‘Ø Ã5˜Aˆœ¢Â`©
Z¼Öhl%ô–:§¡6›Óÿï¸wÐ6e/ØÓ½k	"«é¿	”D,*ñ ›Ý¬þ1¾búkÂtÀQÔéñ±Áo|	fé?ÆIfé°;]’¶¶y‰¦ë…µ9ÈÁó\»RæŒJ0è­bE¼òQJÁ˜a& 6^k,‚X["°VYãÂn@·¤iýô?ãêüý)€U8ÐÞ…uëVGòfˆûrïZ‰\”ÁôdlL2¹â$D…,mÔs(£Ö+É·ÒÃþÔ¦æÇwÛNôÅv«[¨ðPdÃT'Ê$cÏGQžò¾íe<ûî/ß1¢»[k_”Í“[÷Ã¹p6pÏ¾[Xä·q*ýÞ÷_û[Ko’~ØN¦ònØ”Ã¸ÕÍ8¢O'~ÌãÞÖœ¬Ízl®?ÚÄV«m]çãA'Ìµ§ÚGá¾“uúËþäæ­îÞæ;®ÑMÖFýÙÒ7ƒ0äwuöÏ1·yhÞõ~yÿþw@š\ŠA$.…ºK]Ý^ºD?ÕküËÇ?¼¿EÔ¡‰ry€×Âê,t–}­Ó|X4U64©=§š…†ÖwûÃltdCáðÛx÷ã#-U®jm–Ü×kžµšÖ|ÿ}ïjQâýï¿¿ûáÃ-ìà}d;b/iY_ºü€~ÿ=pd/áLü 7Ê7˜ú¢<J< 7ÊÃDùÇ^­]õXo>~SM‘:Í‹‡Z­kM6D·f8ÇÕÅdÂùÇí?üÛ-IÝËòQw_åÑ[p›¸¦Ây	t7™õªôlþÉó¦ž­ÄÚNê­I®zub&²0ûÄÓd“8ÛGœ¤’½Mâ5V}8ÚGœ6zzíÝ²"™ˆzk$›¼©J20žKÖØÐõÎ¿GS«ù×,¹õ¨èÙï~ùû?oÿúîó_wtk–é>|v®µÙFKÚÿz;ÎG¥Ú–e•U´üíÞÖì®WÞŽ'KVH!€ŒPLQ!z¨ÒÜl€À1A—šH'rç)ÆRÔ¦øÇÖ?‚ÞþËÇVÞšquý×­nÿ’/'=|Yu¥{®ºÞo‘µ´ksg[ÝÁÒâÍo“·ÙºË2ÛúŸ±êu‹oe/ãaÔAÊ1}ËÆ£ÖÝHï»&o5²å¯µË‹–ûNþ®\Úõ$Nö1†°•ÀÏ˜l,ºa ¯33ÝºW«îk²êBRÿfò¿|,¿Ó:'ü³mtý|ÚûÙî1Ã`´ÊÝ]=Ý¨Á£Ê‹,ëÕZÔF&Ãaöõ[+ÓÉ†§±ä­È%R§×lëö‡aGÙaÿh†³K°UÂÚtµ(ìkQ8—
ßL®9Ú:
×‘U¨=5¤ äßKêµ£OÐ3MiÅ?Ž]3P† äÎIÈ1R9éŒ.èH6¨GÚj¹DZK(r ˆ¼F–é˜…,ÅÅvwZQEŠ‘#›ô¢wËß”ªÖçr}Þ¦[”:RÔ]‚2ÔÒß–ÜUJ•f€¢ôÃ¼‰š¬ÿéÕkU‹œ_˜Ž³ê‚Iœ†F,ë8=Óq¤`)Œ2fí«§ã¬l¾º]í½«®³S×QêÂÎÈŽÑÅ¨:AÙ5UÒ'q¾%’5œ•Mt_ÊÉw’·ã÷¾ÝÂõubÏnwÏbÔâÒsJ8Õ‚HlyL<¥eÆ®½UÎ9Ï#P¤tÚÅJ£F3N±lŠtÿôãÏ­å¬ÜhÕŠÕúq¤ž¶;.‰W«“—¿ì†¯¡eƒ|8Õ[SW—ÒžI¸=ºVO}ËÆÅMün'&° Q†ï<:{D©Ì—=Í„/ë'Éy=1btÅóQÞÎÂ	ŽxÈë¸ÐÏ6ãÕLõŠÌT€‹úAq³­ÐÈN5“¾l—˜“[ª˜œ"™là»wuÌH~ä\<öëèö¯ËV5Ì¢o\èW7²v„Í«•ê¢­TvŸ¨?›—Pw‡3ØÁè,¾A/Ø¹‡îá)ó¢¼sŽcÃ­ç4Zÿ‘L‹.Ú<\úxŸ§°£³D!-ÀXdT±LˆÑœSg˜SDxa7F'$4DaÉåÈYnÔ¦D;Ÿ¾÷a¤‹Î)I39ÝDqåiS¬„+þóïÿhEÂžÂkkõ3ëzÖ»°ÉžòVÕSÞÒYqã¾nTæäÉ–:ˆ
èS·¸:jì»;˜4[l3Òà®åGá­<e£‡›Ê=çiÔ-
7ˆ:Ãr´—e©ˆÖãäDêp%@†c$˜ÔÉãSîå«âõØ)  Õ÷§©>Ž^û®2÷OÓF”»Üœ=âì¢ÓfôqùêÌÛ3?žvµ¼Û'`KÄF‰+9m][Y¾LûD›A¹¦á–‚Ér'´\uùcéò5ÜÍ_¶v{1*j-eéÆÀ¼h=·‰ø§ß>üëÝ—ŸÂ·Þ$f.}¾Rõ|"Ûü_#ÜxïûmV1öi<¤ûï”î®ER0AÒ0…—jU\á<6j„¦>üO Ï,5Èqì¬Ô  w`Ê1VLCÃŒf)¡€Pc á¦ŠiQïÿm<(uÞŸÝQ6ˆž›	Q ›—:þŠ½ z,hûÒ¦V-,FeÈÂ6;£²Ñ®xrnp¸ûÝHõûÑ(0M.˜¿ie¡ÿÑüyõ„*Eà½Ù'5r•>]8S„w’¿¹qÝR(šF™qyuÔ,¬üìgVºñ	;Å‡ApEKå­'×ëÅ?«ºùPš0\ÑY6Ž„±¨8þè«Q¥Óª"‹âÐ”‰Ï	?ûQÖ¿ù¶v~¥æé¾kî[ªì{ÖSeøîÝßÞÍOÌ6¥’}£Âs†¡Ïá¨«Šðo£®MBwÊªat q_»yô„¼ ã	Ovó;™–eÇ¬'<†šñEGFµ<=Âþ¸ÚN^‘íJ@ëW9Pa,wQ±–1$|€á †u.:ËŠ<-µ„"F×[³Ì9áÇ,î€øÝÔ_wð¾¶xÒÔ—ªý¬ZWÿQªÞÊE‰úv´(õ˜žV+J»¥cJjóñ}­Æ_k´~ìWøTkø}ÿT+ûE/»«ÿ…¿Ä«	7zÇE-Ãæ(ûúÍ+SÏqË÷êoþ‘«•<k|^˜ÕJõncR37¨µªy‘™É¬µÃ‚\½Ü-û‹öŒ¨:·­©Ž¢ÿzœ0¿´ãys\¢Ñ­îæXßÉA¦³ç{ªÓfs'5&›;á‡è¤¦Aü vÕa`®nðØücÜÐA£ïqC_'67ú5áÒ.‘FöÛ…óv¯¹73´/ˆï™lj¯¹³=íüMVn.ýÒn(æÒM>õ¹t“/}*=!ÓgÉ1›¼î½/gš¼ç}¯uš¼ßæ§ø¾yØj‰Cep«Ãv/éâ«)Z÷­æ7¹?ãéÚš¹ò¬ãx™’õëÙÅ¾ö{#·Ù˜vä|è¯Í%«kÆãêb3ÕYê?ýº™Á8y&§	b;P@L„Ÿý¢ÙÖJ'CßÒÝ”ÉúýlpX+aQçõ^„£ÚNãš{“ü5dn/ùÄw_/â.@ª+óöad¿ÿú…ã ¨¹)K“ìð2üÑÎŒþ[‡³êóŒpÁ1fr%±š…rÄ@! J„ÿq	 bs«$ÒÑ»ÀÁt1_—PP-‘Rnðy_Î¨UÛMæ]˜k»;°.–©	-[C5*¢‡ÌÊ’]Vœ_Í»1§ ¡eOÆ0 p1##¨VQËùºfS*Û¼ŽlJíQ¦zo~ô\÷Øïœ{Ìºµã
§ž´&ƒDõÎ7l4áD K¹ÃVå¦Jhh)VÐ:«¡SÒB¦„€
	 ´R;¸fÌlJ^ôsw0èæ÷­²PfÙÂ*/»²,¦Š¥KóU9™äÃ/÷Ý|zX´L6(Â‡’·TkéqíòyÑ3nññ9sÏÂðÄ›‹N…1e’2Å8¦¥ÛÞ‰LUk8:vó›É°1÷]ôýûWù&Ë9Ìá¨'qµi:Ãq7Ö)Ûv38|1àr.býAÐ¬”€±¥êÂRQã®FÛ{µjºËUGîtQ{6ç}Ï½ }bR¾Õx¶9Q¯=JûÝæ8²£ÿ½Ò­êJùrÀàf™IÀY;ÈNñHŒ÷©ûÐm#ÈïÝè,^á"p^f$@€HhÃß‰‚Ra†”¦&Œ„Aë1DÀI“¸sÎ´cq)7Eš¿¹è^üï0ÁpŒ]Ósy+ýWg»ªüm™n”—!ß©0éðÓtÅ&9ëòXb!†“›Ô§ÞÄ§fã¢u¯ãÉdÙSy¨çßØ|L;þ4czgnÕé0nÊú÷TâGé>½’o/&‰ì=üÐûVÍ7F«‡á‡ÇªVÜá4¾»4&Ÿ\ b&ÉJÈ:’±¥BàZd~ùë¸ú_ŸÜËè‰æÐ¶¼3Žã¹üŒsfÎ{qÌóU-¾ƒ¬æa¸Ôy‚²Âáiˆõå5Á˜;¯)¢`D¶
B$	Åº[à0'T;Q,‘÷R…f	É¿ÿÂùT05­E¿Ò‡ºÔRô"¹la9‰XÑ{ |IóLPQ§}µ›®põzà
“×‚«}ÒW»(±$ýýS­(¡ÞÓÐ×
ÀéçOá h¼PÍã‚ÁdÃEÑSØku*¶2€ê—í~Ô*¬¬þO™øîª‰×’*%ê°æ“ú.Úé|¶uËÏ­Ùïás°ªP¯ý­)ðûáè¿ÇS/¼þ…/è­é©Q7nÖ‡¼‰x_™rÝn#éò+i"9åaoM§MÄG…o"ö8°^VŒóvw8ÑšvÒ¯zØS¼3Õ˜;á5Œ²ŸJÕÞF_Œ=û-\?ægr‡í·Ù‹ò™Ê»Õâ½ÞtÆÑÁóÀÝµÃiX´~GÛúí«¼h¶Ow÷Úž¾«Cw¬~ŸœnÜeè,¼žŠæíêœõ>ù$#áîîú½Ù×q¢Çí»`CÕë7•Ìv»QÛêLèô]/Óªñ^ÎÇƒ)“ÎÓKçCÚ{½ËÞ™F;dOñ¯m¥»M1 Çt¤Ý<ìÆfòg“í¢Ùüµ>£ø7eß7<m¿¶o&ý¡=,«ïäÞ—iÖS`/q'6Î³Á·¶ÖÍÃ >øæŸæ×vdß©’ñØŽù»ƒZ‹ëÈÎÈJ?µAÖq¿<Qq«k—”ê©oõX€ÈjÌ»áXß¹AÝµsEØ¼î¡®X4<ÕLÍq"ßïF=‚Ð$OWª„G¡ZNæõÝÒ/ÕÓ¼Ÿ××¥ûO*~Øµ"Z2ëlé,«u¼ê:.ªP—]Ui×cåøl·>áwa÷‚:{k*–a‹õëJçªÖÞÏu­Öõ06Ïj™Y#š¼’º“¾†_œ5|âÏþ?ÖŠÈëíþÇ¯¦f"Ÿ R«ùS-“~­¤U5‹1]—{¿ü×/8uÐë7&OÏ!rÒœ%Ãö5éICñ½ÓŽüIÊ`5OqpÞDµk×G­ªÖªW'ìih£²Z’W˜Ê^Ÿ†wuõâ§aDH!µ®²'FîãÜ ÍR­Z¦-ü.šÓþWYS'šH³lê“Wþþ¦µ§‡ßWÏâÞ'%Ó9©Bh ”x#¬²ÚS' ÕÌiÍ©÷˜(AÄq­´’ŸàÞwçnÔ5­ß!œvöÆwíîÿ¾wÓ&ÏÊÍ÷ª˜¹Õ¯éûÂüýdrY5Ì!^öQçDr$ó‚S€k¹ú…muõó+Û¼
??	®Ÿ|n©ŸT÷ÀI8–û>®0ìæ£u|”‘n×å6S‡Îzÿðþ§:µÏ¿ÖiNÔZÍÝ×¢Vûn8¸U_Õ¹4ø=|vT‡èü>Š©	FÇ¾¨TÝQVgXn6k%€
÷ë·:öÙ“]þÝÔ0–4AuÈô½y=þãv×ŒëÌj*WGæt·“õ`ÕOnÿ¢²Z]âõÜÑRÐ×½y¹€û“9˜^ÇíË‰’O]Mô6;ûµ~d]ñkž>ƒ}úx†Ú6×},sÏvêZË\©L‡“s›U¦¥pžEæPÚ~¯2/¬<j¥ß=|y¯¨¼²Îbë3ÐC‹8uŠATcóˆz„„DŽp ‰Ô1Î™ãÈÎ0UÖSj<Ø`ëûÇ°JAÔšO/Ö2÷\dJn·ø›ÖTQn)k»“§ÚÌD×æ²và×û¢ßk¹¯¥±Ìj_WÞi}¨Œj­"&m*²‰ýp&[I\–åP²äHaJ!K–CB$—-˜	… ^Š¤ùû¸š_‘	‘KR3gÓ¾‘Âó”-¼FòHv¿Yÿ‡×ñjkUv“#*n°ÒMJ¯£ÿ|uùüÞ¹ãõ=ë÷b2–8ÙÇC·8; Î9`-X)ˆ±Ì"ª¤ÀŒgcO4õ–:à–I ;mì¦ì‹ï¦É'à]¦1,ÍX‡/ö–’n¦
"ë-£±Rñ8–$ŽÙªª®7ö{SÜ‡ãúî¾õþíûï¿Óš¦ÙRƒ°;\ÕGè+fÃíÜÜüÀ&fÝ
ÏÉ½oÓRÏÓÓ>N_Åw{&¬¤Èà&°
7ê–Eóàn[•=:®Á»OþrQ„1’œO+4Ë™I‚L.^U"„ñ4)j
ÝÛ¾1Í˜`üŸÛ…d¢~Úå—pW<¤ërGèÐï9óZ©â¡ëù¹—wAí»LÿÇ™¢ÖPÝK¤×VäÎ>´q­++ûp;ì~ÕcßFõ^Ò]7«-þ_[¦Rck‹U›§¶XQsýj]Ã‘“ÕýJ¡ê‹¨+yê¥‹¸_yÉ>Náqd'¿†´=šŽV{—	¶;S:êÈ ¤õè:ÚÄqP)OqY£¡UyŒÐ^HX»sÌ{Äx„ËÃNâ@Ú7Ðõ_&uSÒMpÕ#i}T£n6Î#•×=×Ï·³ôÐØå´?PÞ•þl7êÈ¤§=¶"ž«„ùM ÒóV ·ë¹sEFøà=¾û£Ûë©7-_ßD“ŸyÓr…étŽÇ­ó@®U¬>›â>¦(É·²k–ºÈ®Ã¯ ™åš]Iw9’+Éj	§-¦ýCD2’–¬6.v»Üjíj“uâîLÍtŽÎé6¦ÕÏçº/§&˜×Í¬´Bß½ûn6 ­)È7›Îµ¸ón­—lo[=þO¯z,99FWÕóÒ¤šs÷ÈÖÐlt¿ü´ftïXçñS)‹¼Ðð»wÿüå§wŸoc0<ØOëÅ@39±S,î˜véÑ·cÞãÅç?üóó-¼Åuèq=z›²-Úñ,'uáú‡Üs¹*¾Ö¤z²MîbË¸|Ÿÿ÷ç/?ýúã-r—ï‡ªÜwÝÓ–>fÛ›ýAÁ¡ÊÅÙöÚö ¯Ô"hH¤„_hŸƒZ¤kºk­ÜÆÌNy'¼ó€ŒBÝ»A6r¶ŽÈüxJj^ýq“¬Jb¦–ãÙ‡dziQBk-V…@å±˜C<Õ 3Jc'0å–;ª‘#Dp ìJ2OK2)~N2Ù’	èJq3D(•’.‘LÎDÚñsâU¯ Î9hfsëí1h¦ 5ëœf&›ƒÈ7w”òÙƒo0*ã°Ä3qÙ72Ð=¤Á^â"Uz‘mÖ—Xä§Ç³â63Çžˆ¸¦+yi‘*›æÍ¬jÞÌ¨mRû—ÊqÓ#ÿÄT·­*tfÕ98/9D-Ó&$á@±À•v^aÌ ×ØOÔ	oãcÍ¬2:4ßäñc÷J—€ÚãÑ¤€ãSN;RÐ-´7¥«wÓ®fœ7üóxØËTÉ’cá°;þ¶ÇMÌ@×ÊÂÂE~û67ÃË#¶¤[8Y)ÉÙ]¬˜"1L7œNßÉ•ÜîQMÑºÅ´VÉíì=Îú>b×ûQØ=}ÝŽÃÊ'!ßíê§êlYï¨y çÜ“û,bÖ–h–wì[=Qüo§oq-Ðmè¥u>ï¤:"f}íÕ‹kvÓpû^öçµu:ûà¶éuÏÙHk ¹²ÆJ¡ gIÁ$ÔHzˆP j£@ p†8!še9æAe+´²góú¯<–kîGò^wà¸ÄR5ª~uè¼ÛöÜrg1au	Þñl.+Na»eÇýáÖóÃdN’1™‰–0ˆõBíÍ€IÎ‚Ómv…ã}àÀ&YD¦k„#>ôzF„¬or9¹!áT¦¯óÙŽi.8uv°E8<®Þ§÷0¢X9‹$ÖˆÁ ¬ YO  €¯6b(VT*Ú ‡Æi<ÑŽ@Â(Ütùóåo-?
ˆØ‡Q	|W\Ó-ÜÖ¬hºæZãXhÞQK‡eÝ_b"ÄR}€d8­Wì)àl±\uÔ©jè±Ñ=ôêÔ1±ä5ó™^À1t×Ðíqz=ž“O»Š1ØêK‘6;ÐAxúøƒ{üÈ?èyD@j @ª¿|m7ùtïø3yýÌ}Ùëx¥×vFOw(oàz¾Ë#ë¥›eR¼¡î_u8/©=(!ÙŽ"ÓyÖsÅ–ÃfÍ÷ñKnå	ÛY®ïFwn`¾©ê}Ë»ùvCÖ
-Ùç‘hì)ÌC "4#Š9%s	Ì¦À2'¿U^[£âŽñŽ
aFú˜pÊø•È®Yœ|#ÃÒ¯ºÄ–½ŒžÚ#šÙ«ñ§•%€í{ó"©ìQü‡fT6É
q~NÛÀ£èÒâ^_aœè‰>_{ç«`ÔW‹ìnúšîÊÂ×±ð{:K0å2ðkÍ­a
76È8ëBÌÁÀµ…Êa	$!1ÿ±"üž"*niãÔšßÎªéýlÙÍB€À2Q¿©¼³.ŠS˜îEùò],‚,ñqÄÒjLÌvÓ•ïs•t˜-þð.v{pÎœ8äÃÓßK¾Ü«Q¶ïÐTþ»$ò÷Ÿþýå6þíz—üçd.KŸÓ¨Ë
é¨¸Â!XÇ„COýØÎÍ^Á8“pàœ³BÈMøI)È­fÖ¦-ƒF[n¨#Ò+/Œ&§éôZÕt73Oå¿ÇDqSC_´þê’•¾ÙÓ~.Ì1”Ê3xô¼[öÃ¦œ,U³‚"ž~ƒ½²ƒ®¤cÒA‰Ü÷>{åuÃ¸¶òˆã?áEù ™ðÆö©å%OHkþ“gƒ¶©3¸°jUÁ¢TÌ>š±çÉéãôZßéïÏD«zÊ˜Ž†¦Îœ+‰[ÓëF»K}ÁéŒ’võÑ‰bZìB…JxÔ7M{Ð,Pa¯ð†½#,zßþp£Ûù‡´Wn4p½}ã5ÒÌ|´çù€¼»šC–ós0o-0ˆD¡BB£(÷ŒI‰u#&"?IÊŽÿQÆ+îÕ‹MyD™÷|‚­éJî$áëÍ€•Tëé¾kî[yàKÓÎ[f¤òû@i«·1Iô<c7U‘7­q>”÷[üÇù¨"ã»46Ï×ø£n°†w´|O ‹VC‰Hàx¶+¯l~¯ðJV³¤Ã–7q<–=Æ¹xv¤Ì¿ù¾Òð+¿Òð?;Fã×‰\/»»«_?ì$¬±ÂV!„¡#VH‚¼%Ð@ß¼X"8æÖ)§‘Jb…€bÞ†fÐ'¸jruœ›ÞÙ®ÈLèÛÓ¨[ÄraS+k,Ì1gl%º4Rã~I™ˆA³K¤ŒI¾˜ê‚H$kX«—p%dû„Ñ½Ã…–^Æ«ÕŽÝÿ‹2¬^ƒ{_e9¯m8êÖ'ÀJ2²},?ú)<&â½­âÏ8I9ØƒÒ‘¾êö¾žÇ¤„@À0 0ÄPµÒÖO…ñ\KAÃÈH,(âTQk™Li¬5rÀ$°‘rn$#•-iÆE»jòˆeVrãâoc1±°ó£'${š$WB?æK™¸Ã,ÝÓlqÇ]ÙÉ~ 5«„mb'å»8"9)û?r÷Wjr¥&Ç¢&Õþ½TêRŽ®IJ³R°1gÙ*ýŒ²LÆ)ËrÇ9¸aPA!0@*¡¤ÇŽÇ=ƒ 
LBp,Hq"8ñ3Ï ka6eVYä.Ë“ÜÇM²Á·~LÈÿó—Oà®¥ò<3]U8[ÖOm]óàÊÖêû»4Î+'%rNV*©ÉÐ"g‘ˆLsY¦s–å·q%/ûºožüõ/åˆ,æØqcëŸó¢xÍõíz‰özhßõí°Duz¤57³ýsÒC=ž[=·1Ñïxè3®[	–ìÎ’&Ÿ%—>¡ŽàgÖzH¡'XÆDúÜCG0Dˆ#¥4ÅÜ	¦˜W*ÍŒPÄüÿ;‰îoýò¹šà>$÷·¿¶&Ët¡ËôÊNp¥°“Œu1Ù®ŒåjSØÙFºÒ×½	ŠCÑ×Ù9&uÝ3çz½g\)ë•²^)ë¢¬“öéýþëGÉ^'VþZ'ÍRË†½^¶\+Ýôº<?P›wçÒÉ¼u‘d»Ž«Ï’2PHá•bPzÃ¥Jsh±&Pb½¤ÞiÏô¡‘È	ì,´ZX©à”l*µt»Ü5£ÝE]+ýe"Ô^pfÓ‘±–qFXYru‚äJÅ&F D‹÷Ä”×·¹Ž×ñ·+[­ÇVÉ¡Œ­“·qDª:>%Y~À•¤^Iê•¤¾ ’zÉLqø­¸Ï¸õ»Û}5ˆ hUÞ¿4›ìÌ4º=°ö¹isÊåÁG÷®wV=U‚(á¢Ò9©¬€i~ EÎ9*5Ú{a’ÞZÅÄYX$¶{”-M•Ñcð7g[U1Ë©¼MÖv¿b¡;:¿çá÷mðéö¾Íºreªšy7á|6.¯ÒZO{ªN¼Óúïq^ÜL8^[¼•Ð¾eãÿ
ýÙlpiñ˜ÓT"Z³eç,YÌÌ7ÇÀ¤Ù¸Í¯ôu_¸wF|Ç ­±ß#uûBK&CÐš›¶8íÆ×tQøVY{ë 7¿ìûm î‹róòÃçLœ˜€JÂ­3€B¡¹¤zm CÀ1ÃG£zf™Â–2¡œ‘Z`)˜Û”¾¡vIìˆAS`ùa¶‡-“½æ­ˆ7À¿Ö"þÝ¼üÉ)ßÂ.XIùF)_¼x¤‚§×yX¿ý¯x¸B€j:þïzG‚°çz¡ –bWÚo-ŸÃæÞ˜sV¨áÎRà¤ÚS 5UÄBë‘²á,áV(„}Ð¹"FÝ*¨^D*Ï½AùbdS­žd-èà³©×Ö²RusP™Æ7—*Éî,ˆÉ–ƒÜ	$|Q©b †;ËÒ¿¢É^Y‡$:€vuÔ¢K8vÿWŒ:×õÍ¾ºãí†¬…û@é“Ó§¯ÙŒ	Š÷Öˆ¨·B @°Á€“\#m‰tk¯apÍ4ô‚8*„Qá×àóc˜Uø³UíÎKWÄµl½ûô!µô]­N.
­$N­Ûë¯¤dˆ¥”,¥Ç<‡Mt­ÚÜ\ß‘´&BàŠïˆu•§ˆ‡¾lN¼c®qµ\ïF9ù"9õþø<×Æ	s¹äŠ¹‹·¯É—®uïZë]±ëvô8ÊõFp’¼mA9FBR€!ARzŒ$P	ÁDP¤ô{·Ä¨±rP~6Ü0!œ“èÊ	Ör‚ôÜ¹B¬ø·I [´‹LÒ5Øgœàª·Öduk_œŠ§DíF·¢«/Ú+ðE»ú½dÿ¯ãúp5&+y·ÈFßVÉÊ ‹ì&+°;³¢c¼fZ7#Ö 0„‰ñ1Ud²0‡€Dœa¥fB,¡ƒ'eøGE)“–c³ÉÅê¯]7*áÖ¨^k>Ã–Òy1R¦Üžú½è·P•ßæ‚ÓSs^4ôYW¥¾)÷zÜ{(„WÚ*îUqÓÍ[Õ 0¨Aèæ~qˆeÇ3ÚÆ3»aèƒ„ºÏ¶Q† §bÉŠ
†…x-åáX®¤Qáá¥-PÁg(¼‹òT+Þ.wU»ÚOj+¦Pž%çÙŸò|.ÂÖOƒÇî(ôƒÀÛŠ¼v]~t´n	öåAá}ðfÖ‘j4Û lÓ	°çøzTí8§^ø¢¶œ”ÿ™ìÂv<ˆ·5³Ñ*w³yüòÓ†yú|ÍŸÔ ©"ˆ;M¶\×[œ~¶Òpž2"‚:Â‰DHÃU8<½œaá)ÆBIá‘"Æ…O[JKtÒ8‡-¥rS4þ‡O¹3­òŒŸEõ)—y¡>üí§GXú·Ä¿¡Öƒû6¹Ò,2“õòíza¹N­n<býÈ¹Õ'd>öú¶zzÔ?vã¯Vk2žü&^¤~ˆÅ ƒNÙú4yhë³D´[|+Ç5ÎÃÎí,ËŒ¾‹ìn¤†÷eí–É&½ÑY˜Š‡ÞÅ´ t”uƒR"þ#°ÂÙ’‡§¹w¹›ý¢Ž¿ì)ÞÄFÿ¡ò[ÿfÊkÞñ`àzy€ƒpnÜÝ·ÆakŽó˜Sk¢ÇÞ~
/ý[q_®šÊóX}zÚ>ÎnI&.ÕdLáú[Ù¢;Œ‹q§
÷¤¾µú*¿ƒÒåèÆº•¦ÓFª(³ŽŠ¸ÒñÕ€«)†˜{e5ìê×Õ{
gc1ð5uCo3e>¼}ú{çæf}ÅØ»U®ŸÅ"ÜÕ[õâ_Š,ì’òåæ®(¯ÃÇÃ›ÙÞýÍ÷‰êåÙ4‡C>Ùoßýöó{Ž$ûKÙëçjÝ?*ízqà7K›,aªƒÖ?Æ_¶c<*“Ü­1oÄx´Üòç°+?¿ý÷»¿GuƒÕ>1;7¶ 4ˆÑ¥Ë_Ñ˜~JCB0‰éæ—®+$2KPœ”E¾\¶xBµ'gS]ÓÄK²L<Ÿì¾ˆLa{„ÛÅmµlÂŽÍX»<|)¶ŽÍ=7geDJ~@qäÊ!oi¹¥EŒp	3r_y;ì©"nìvÎ³E,œ)Ï7ÙÈUôewÛnXŠq±•ÆÄ“l‡1Am·¨£ˆ5lå¡Žý'ÂM­GÌ~ÿÛÿþô%h½‰	êÚšÊ8ùpŒÃJÇ®!t;€¾ë¼®tO—™ IkFÏ†U¯-3Èë´è(> ¹yŽë·þûçÏáÀ„‰osE
vËÝ?“ãäš=up#9ÚLê¹=(IN4‘j´ ¨‘T£5LÍA²,Õh½­FÛ°Ñ›’‰ÖlÕ¯s’ÏšüðÃ§w¿ÞÂÔcyrVÖzÖ¢ÈÔö‰R×}­tòÞ ¸QFµÀ.¨i&ëëœÔyÔc‚Ê[ç)ý 0Ô8¯çík}ù«b‰_ñªXâB¯ŠÉäçÕ¿ÞX	;âóÿþüå§_¼E ñSt6Øä÷¾çmÔ.œ@áŸ0åmì;ôÓÎ3_dÛøilU*Ý‡¸³˜¬U‡¶ÜÜb²líø
¶[ìX‡m+÷(èÙi¼Ã›´4©¬œßlwô-¶µÉß³ ý–&åµ!ˆ«ÍÞê ?¤66=§Fµ·³²hP4æ¤Ê•ÿ_Mo´³mÑ”Ïk>§jG¸{^áÿ#WlZÕˆg6¦6(²-Â5E/4¢ =·ÅlI~G²|öÞÞÄAË¸sÍ\‰AtÈÔjænÌ0\³˜æ
céèZL¨ÒXqoß0$R!k€7J#‰"l°¿+íg¥[Otü‰¶½X¤1ÚölfÆÑ¾-½1¿UX·"Ìk³•x¾<•ù±nÏÖ‡¢u¯ò›n´{¶Q,ìßb&“¿	kiŠðëÒ4Ü5áAEŠ*ß½{ª4¦†Ÿó©eúˆ%›þŸ·o+»Råë\ñv­OCûö©ûÐ};_‘MWy‚Ç{T¾#8“Ì¼’WâoXô[¾ËC„	¼x™‡¸IyÊ¡µËmÙ®6d²GówÕMÞ÷Ñ˜ükü[ ¥]÷‡Ï?¾$»áš%Øû*F.MåP¶Yá6;ºLqqnØu¹p»½^§­ïÜÀTøxóš‚y¾ðþ3¡=Œ%"ôle±M±A.lw{2æ6Oðß·ûî—÷ïU;Øj©çíàSýe>µ«Ë¼°æûïú]høÝûß÷Ã‡ hâôÞ„‚œ.VNä÷ßKý£‘TÂ¦‚´¡ ª±êË‚M‡ºkEÿØµ/ËA{-ÉJ½”ß‡fyf°à1UDJ¦”ÕPÔ%˜ZÇ€§’äœS9©°”Kç@dc’É+Íº`š%à
ÍÂRÒõ4‹B	V\¦×†r‰fAL“.b×pŒô›ØË"ZÍÊŽB´hÝôýÇ'Z;nR÷%ZÉþÍWÍV¨×ÝÖOÄÁR}ÕŸ“±$¹~[Ær–l8_„ýútmÙÔÛ‹MämáÈáö“o°Ð+Œn?ù=ÇŸ¸ö$ïø#'Åß‡÷µïlÃXý½lAŽ,Îï-Œ"„Tcc¡sˆpZ˜H€ÂPiéc–5Ã6Us‰[QD'õ’qåó@º	ÍÝVÂ|aYlø³÷Ü]oÝ¢S{ëÞõ†¥ççumÝ•	Ü†ÃÞÄkrÒjœ/>ä%°¸dc,n9YM`|ÑT™d5,ea©¯Ö²C“8DhckY|#Ç`[¡Ûý¬f{¦9ŽÝn–ÞºûuóÉ=§ÉúA´›G×~¥›e™j‡Gñ¤ZUÝÏ±þ+Ï>4(Â ¼ ’SG‘¡"c…ŽEw	âŒXB‘Ó^ ®4¥[”' €•€1G,Ø”Bæ
K‡†%	R–(:*,]­‡&x±ÀÔØÊp0`:¤ãåÓžë`ö]¿)$EÇœ©Ÿ¬YvI`=2@hÃP<ü<vÀÊ AæB”Çèðqêi¬¾ ­áÐá°b"ýæúYáZïªÝ"k}Š#ÏËÝ_Ã¿…w21rïF¦¸23“ø,6¸—=µ{%XM‹ËV¹AËçV¡Á1,l8n¿znôýïþqê·}×6j¨tÏµþþá}eL7jÐÒn–—zä*0skº¹»ã²ðÊÞfáwG…¸¸ nþ´›P,¼9BáŠ1ƒp-Š1HVÊ+D&/c• b˜¥dR‰Ãk—[²kØApê<ÑÄñe,ÍzoÄ¢¼Iq\ýíáÃkÏŠ­ý¥’Mú­•ãc.ðñÃ¿}úõ§µ¾ÑjÀöJºf»s%Ù•ú«ê¤Î¢-Jüüî‡ß>¼O÷'_+›høüóø¢g1¢5¿oW)MâÚ»ÆF›àFÛœuT:ß¸áÎKUÊZÀ±´R`íµQ€	!:èÊR1lpÞ*­±tÐ*§Ò1*xC>ò0lX^–G<œ\ˆ6ñ§g%“ ñ|¬ÛÏTüÞ#K±§…õ³ÕªÆàîçúý“”%S'
¢	"Ä?”Ž1î³ü2xJåED”»v±~ª\ÎÎ)9gç_Ú9¹ÑÂ·ñ2Iã¤A™ùâšÂT½š …Sr!ú<>'¡ëýÐ´²`x|;…Õ…l®ç7‡¼üñ5MNP‡O&Cj:¢e8qHsg	,œ7Ö0ã¡ÔJ
ä‹9 ¢MXyÎ­×sA"Jª-Ý”&ôÝ õù_¿ÌPh–<Ã¨ ùl†°­bÇ­f°»AÖwe²O£,¦ÌãYô[x5›²‚"D	aKÅÃ¯ |í©M…”«FYÊˆ‹wø—0Åå+î™võúÛ¤ÖMáÇ—ôù\÷Î	ÊYÝB×‘’w¿ê±…ÙC×aPáTØqv„Fí”Êå·çŠ\ÿ¡oí0-óø¦Ž›ŸÙw`«µšaËhcß$¬uë2-¶›kD;ÓVÄóc÷0£@FÛ `Ãî¬Ô>ÐÓ
Š\ðc*«x'8ÀÍ«ÿ™À®U[ Ýnþá¥ßV/=5é{7KmÙ;R&ù#D;¬4ßåm?TxhÊhË¶å~®#à”Ú|pËíw,É¢i¢c×®Ú¹kM5M-4Äv}TéÉô'oCÏ¿ÿúÅ ˆ˜â¢¾Û¹Öë¥vÆ³¬ã;vÌ$NBËÓó÷7'æ„x -•:ÖÄP*C#'ŒË<³)­­EQ.0çÈr+‘FrµéúëOFÌå
1‡’o"æÂ'>ÿG‰9G Â”¶ÏÉjº9åJÍ#5çu“â­§æ©w8sŽ^CâHd}gA€ã“u¶=rBÂÛUÓôe['7çð‰è¦T>9ŸÜ"§O½žZ&÷©R‹,¿~<ÈqHÖÐÿ&r•&ù\Hã‚Vpyu#NŠ³¬$§èz¦Ô‘\ÔRåæêB“ëÔ{›øñ4(\±žö7–f©_ëF% ±4O}ôiÂ‰ž¥Ò;¤Š°þªúøö{Ã	Ç&°[/™œXo«¡ôz¢¢—\Ô ¬5˜jd•TZÑMáD—®\»ƒ2±ÓÚ;×*çûd¶]N/¤ Ÿ]JÇ«ï‹wÏQ«°×ã½u¸©+lL¬Ç&rK#¹\D¤_0&—ï
be”%×7DKÊÒ=ß£×û‚ÆJ‰„¸ßÛ|é®.,Üñ6¶ð¯é~ù’·R@J÷g¸è­u¹rÄ•*Y×6Dš7+[ívÐ™Š'6žpá"Ý)Lb@(gÒs ­"3PÆÀ0ÌçZ
€aÞ
GÆCÌ	ER@-ÙëNŽu<ÙþÆ_ƒuèXw5ÁÕD;Ð ëÉiÐ®±‰ìÕ ]3å—ìÏ{e‚äsÀž\IPm<ÖŒXc!tT	]ŒŽ’)Š„Þ†3VD´9Üè¢õÓ×b¤j-5„5WvS:	ÂfWCÅÄ9ô9½7º\ ’(¨¦+÷D±ôâ-ƒP¤øÝÎwÕ¦ö€)Ö\)«rž¦ÊnÏu“F¡Š‡ºfÜÊf<±‡×º]ym×1¤p­;„WzÉqWÙ½ë‹Õ\¿Z—)×K‘C]Š\
“lpGr’Û‚„Üc­ÅÌÿ‘Å—kŽ©°
Å†³f]÷ÔÆ{V	ÈU,Ž:*Ë'4¹x Ø‘Í"ä¸÷NJO1„Y…	’ŠJ$0Ö–•±Ø¬eÄSé8…ZŽË:ä¥¤Jl ¥ŸËµâ”ZÕJ–ãžúEžkÖe-«
µ™ª~.?´~S:¼ÂÖûÌNrØæÏº/b(Ù´×2ž-4œÄ¸Ýd>°ºÐCùì²2idŽá§hšog³§Áä!:ˆÜxU&·AT9Îÿ92äðSà¢e«NUb5òÅ(ÐÇE™ÿ6ñ¯ƒÏ§Qw*¼<ÕkÆ}í&,,[ÕWhzSÖI¯GŽV‡ÎÙªÂj9¼¼—=U9}ŸÂn	ï8è£FÆ===uúîNµnd;&ë¿ýüÛû­É%`‹É9—BŠpÂ6x%Ü‚aÀ’W#(¨P»ûüsk—_Î$r,õ
å§Ø<ù½Ãæ8h[w>˜íÙQÖo»;MË	Ö°ó‡é•Æß=ÿÕî|û»»€+Øvq©	T>«™•Â!kùáØƒ?ØxH%„m,¶ünåçí£:Rêügüd2¢vø÷rÇ¤¤çµkLS¼uÖ1¥ 3Dz) ·LPâf@lÞy Œ ¢X .ÒzÈ‚“Àbø•¦\iJSš"ŸÑ¼Þ¤h
Cð9M‘+Éúf)ýú¥å:jš¤ïhD6=QÙ™#n¢’š>…±ª§g.‰—Ï_.É³x‰4yNZÎžþøfàÚ÷CÕÍšZbÉíY¢FYÂPä¬$…:F•ð˜cÅ%0‘Ô Î'e¥0ÒADÖ9¤&$	ÌP›(Ì»¿ÿÔ²£îã„Yä1ynwÐúë§ÿÊ[ýq¯è¶ýx`Jœ±î1 Á–zA;l}çGY?´øÇÿå¸÷ƒ×™Xšè~XbøýpÒí«˜¸¸E»Ì"~Ø îœR[,ñÃ1ÂÎ2é®€;f«Ùá¦"1æž-8^ï¦ ût¶«Õ–µ,/êºð~Øë—ç¹/†S.ëbøÜ3d¾ø[ávÓ§¾ï¦Ý§×[FóÞSÞªqöŸí$E MPµeâ31k3ú6,ªïš³	úS‚ÝÂêqèéî\c|Å?üóó-¼Ýjn{)cè-‡áí2Œ¬¶ße¹ÚnnbÆ·o	–¯ûaw˜Ø,­]œ’¡ i×¼®Èýr˜¦ßä5¸óÛõÆÆ¹NÉý^à=~Ð:ÀRLt]‹Êñí.þ*ÓyÖsÅ.­jõHùø%áHYé{±Ðwè°cßÚ^,ö=áyG"Œ©F¯}(càž¢QZÃ@QH	m	ƒÊPÀ$FXe0•D:Ï’ÜZÏ9¡Êlr”¾RÆ½(#Z¥Œ@n¢Œ ±L`|)ðA™’‰`eL·‹46²ÿƒ4®^3±ãë ;ìJ{’ÆdÃÒ¹Øã§¿ÄS}å¦42±ý"M¬/±H,Ó„{µ·B“íU«2ñy3*Y£}M)¹¼$ëÞï¼Tï³EJzPG®æÜ4ÑÌøš8ª3Ñ÷Œ\ªk£›Yª0"Ô8Ã°@š2¦m,7æ¼pB
N±Øxl˜Ç0ÐWƒ­–.ü^Ñ 9ÅzLL#çJâ°\lD7Y‰ifô)Ö§í§÷½³`VHåßâãbzñYåóø‹xú1RÇÖßÜhàzÿ•ßR’O*¦ÇÍ¾3÷jÐÍûoZ“‡tZ­•§¾ûô¡Š	,Ÿ·0¡›Yžóo­§û®¹oM¿)oM³reô¥¬ònZ=Œr1‹zyŸU­¡ûêÌ¸poâïâåoÕ¹@•Â4¡ÕäÂ¸œéM5Óãrô»ðÇº$ç“z;_¬MÉÖ÷fŠ¥Rj’r ñZFN!ãË6\É9^ºó„àÄ¥®]~?5ÝÈª s&\o|3;™ûâ¬÷¿–m’Ãwé-ìðe^wÀ%õ›lžÜÿRœâäI	ïGZ7Jq2¶CÏÞó.³æl¥Žs#‰kúS™þð6œm·¡AÖÓ>&n×HlŠÜÊÇ  z†`Pƒ4V†xG™ÅÈ„'B2Ç‚ö¤Gˆi¦	3xsEî+rï‹Üòr3¶	¹ñJZO€ØrVO p’)m#t×Ø|qÕRŽÞ¸~éÓÓ÷î@§×Þœÿ
x§(ý'@ñŽEóê:a4Ößšc¹\Œ¶»ÅéXÎÊ:ß[(xÏ<õŠ{tmì±t1´‹y†3Þ1b@h)5#Xl6aùçŸ*¼Œ³j…e‹¾»³,“)'`õ|iž×ýŽPõ¼û…Z`Ó1,ò†“áÙäá“o'S)S¬6(”/^U¿¢xÃ%‘•Œ9ˆ²”1Ó”:2‹+xÙžì£Àöi¬Ã_[?fýðv^ˆ‡ÑÂÌ'½/ª6"êW[|ÛÝµ{J·igzz÷eŸ“À7ròÐc‰TÓõäñ‡žÚ¼ç“¤&M@¢†è2òÍËgâÙ‚ÉN?³ãž»¬wÀ÷àïµBžAÍÓÑ†„¯Iå¸Ðq.–Hyã–{‹©#ä¼6Ð oÔŠc¨¨bZ3¾)Yé_»w÷íOaªqAg{—˜ûQ6ÈÆyë¯_¾|j½/‹ ¶>¦ÔÐŒ‹6SËxœ÷í*«MÙUUOu^
!1Ek<œd¼yÞHPÄ>e´,“ùÛxPóß½ûôÛ_fypbNéÛ0ìÅ,¨6p¥CPäFãÁ j”Q¡‹w,oŸFÝ2¨ß¦ÚZ˜b/t8)jöMòÈá|Ê«=SªÌA×»ypÃ²¦jõ»ƒn?¾¬lª·îÃ2Æ¢³eŒŽ¥ðQCkârwT¹leÞžø±àñ>†_1I%Y‹ÈWê†s)ÄRÝp‰q’â7òíòshoýjÀå»Ï[¨^P&®ÁÞ:!b”7@Ï‘ß^î±Öa¶í1i5ö¸êvþù-é¥Æ¼G›F¼Q &«'ÎÂ[7ÕË;ÔÀÿbIæŸ~úûçÏoaø_b0“ÕmÚ‰épjúH¤µv_‡ª¨U:"ÏÕ°{û0Ò´Îsž‰-üâÝþúáKZ?t¾ ©*Ó‡¦¶ïép¶DÃDùõ¬ÞÖ–:¹ÓDž÷êmß{÷4IùÈ|»ªÁh•ÿ²øG
ÿ…4µn‰ºÅ»bêMÄÐ˜±1P]ÏUX@H½õØÉ@U¬ãE™í¹J3i¦Ro ºÿýóÈ¹ß\Y½ý7ì¬×ú<™hE^~…¹>e£‡Í÷ãââÌí)ªu7é1_êÑO{¬ê©çÝþ°éFi¹)TþP^'ŠZ›ó"ë·þ£ÕJ?÷“ö¢#í1¹ä¨\›0Î0H¨û¬b8[¢´ÉR”¶`ˆð«u„2è(+•{)dtÑÜBMŠâš­~»ÜcíjwuªyÒ¼çÒÞ°{³GÀhýlóÑl'uë„}¸XüPÚqN=—oóWûÏd¶#WÚáØuÕÙ<~ùiÃ<|ÜÞgã¢©š/kÍ@ãbÒ¸ð†àRJµH ¯0”$f^ R3§÷AÈ)Ç–jb‰ñdSzÆ•‡Ã®Ü€a›ÔîÇã­·Ë~0]ŠÊnÐ[È² ¾OÉ—™,\i½.…”šùà¦;}º=ÆlÑXPž•Õ;ÏÌƒ+låÝoL–;
‡q<˜cÕÝq ÷ñ†¸Õßc+@Nõ¬2„âÎåp&—Ü+O>vBÉã¶hý“Cš¢¥T‚c±)<Y-™!–.jý0œÒ)Çt|írw¶a½8ÛË9Ÿ«ûÏ'¿¿b/yƒ£9d»Uwýñ±µÃ4×¤/År^¨ŠžÝÝÕ5l Õœ®¼óîJÍ1{Ð×„Håpf#•0ã…†ß-ý¸#ƒWhû˜t7?X,æsêð%×b{úÝtstgPä‰òZ{³†AðÜ› òÀ)¡ÅRiÆ\`¥¶Ä$sPà+º¿tÇ«èÎ9\î V^Fw€å2ºCÁš¡ûòîŸOÿ:
¾OË\¾ï¼nŠï/Å?úK5hîW˜uŽê‰ƒ]DíúÏp>©‡¸?¶%õÙ¢
þ»wæûïhªÝC¨Nõ™Ñzø\Yj‘•Sc-ÅH+-Te"@¼ Húè) qŒY!¼Ç„RHrþ	Ì•gX÷n zÎˆäï¿ÿ~G	œ™k@L,V:_2àÇ½^+ºdÇàÃèžÏõØ_åM(p</õöæFéÀ<”)æ¾ægï©6œ'wah÷;­ŒºwÝÊ|NÞ	hýR<´Û7“ÎsW¼i-¼±HSÙSL(ê‚PÌ&:ûÂµd?¹ésoÂˆ§Fã#Jb7cXâ¬ƒ˜ù3Lü¡\åêM•ŽU€ÊÞ'üå&ú¹O':[žÒÁôTh‹+î3û¦5Íñð¦†3Kø0©GFs37T[5ŒÉJKùI‰¾9[Š³Ý<t©§F³GV.÷*þyãTx'¡]|5ãAøÂ6)Ýß³0‰rÌ‡:{a››	hýòåoívë»»â¡ßÿË›‰+}å(D'þˆSÖ?]µ77%lÎ(âô›)-roâxòÅ÷wTŠ6yN§Bú°ˆw®3pÅªö<õ:k©a%3X j‚ ²ÈÔII×'‹Ñ®N’6}ek³µÓÝßÑ~æZ‡›MÆ²E­?ßwõ™f©ß÷¬^Í…s³;cnó›Ä¼Ýw¿¼‹—ïX¨Â†—P¯áwïÿýÝnagWÚ±õBYC¬$5¿ÿ~»iWK*Ò¡ãð¬m¡åWé–æËæ¬â*Ð&Á•‚8‡8'Î43á_¬À
;jˆ‚S€SÄA#&’^Ö•a]ÖA_eXbCqBÉ3†E£;Ãœa1œä°–r¼€*”Ç±š„}›cí´‚íÁ±^Š!lD%z<>g]‡Ïð´H]êK,Ð±=d+«-½HÎö^c²:4U;’E¬×›Ò5Î‚fW\Ã	§ß
ŒÃ@×¸'ã
d}8ï••TÃÂäQy_Æ§–Z´µRé¹—\[¤µáoXÜ»9O†Y€ò/ï?µ?|j¹þ¸§AØÌâvŠV¹!xìŽŠqh×W´®uf9zìæÙ(¿Y PÓf?#Œø¯±b6Ð£Çtö”îÄR²á)E6,/´Ê-ðv¾Ö—–Pébiéð+ØzDç€¼|½…¡|ñzcš²‡Õ.÷Z{ë.«W¦äx¿~øò‚âV’boü‡àúøÇ· kž[Ÿ“Bù¼ZdæŸ?~øíÓ-I®ó\òY…˜dÉg—O{Å³Ö®×¼ŸãÇán¿lCG =(kÁN8¡µœ"â­‘ Šüc 'pô0>Áa¥a ?Š|r¢iÖ‚ê ß•³`¾VÏSÌ4ÝJU.“ùCnæ¹–s•~÷Q“žíØG<FR/fÅ^Òd±–ëï¸HG»*/ÏóN‰y ¡†˜·;}Ï!‘(=©Ï!ž:OöS><áyûëÏµóü\4!˜¯àBŽjýnÓ¢é¤#&ëPÍxÀ0æ)E¼«GÎz¥€çÒC#‰ Ï&À1î$VáO§¥°ÒlªšþnÑê¬LPŠòÖç_?„Së‡p¶Îr l	ëw'Ö5ÅŽª7¿Ø_@¦p€ÝÝß¨Ö“ëõZÖù ÂÙ2Í]	Z÷ej½h£¨¼ø ìåÑ2\æƒ»›Ò‰Q…•°Æüß>¢…çE«py'ð<P–õòÒ—äMËŽûÃÊ¼?)™{¹)ÇÔd@ÿ¦Â)Î´nï[+fª‰]…Ç¹ vÆ¿WØSVU“úðÓ—ŸËÿðîïïeÂi8°jd—{t§J=ê˜¼SŒÛ:ïX÷vX%ªP°ß}ÛX÷µs_ô{[­Ì¬X™l¯¨@DÊgµIy,€†+˜…_>FRª“ö»íòjWOÍâeå«xáJWW`_fÕz[ÈE×ïî(ºþ¸ÛxÎ÷»î.­{ín—’È^¢ázžsî~K«;õô°¿G@êèÉ:êÓ+v·ÞZÊ…^_\¿yò½Ö³D}ý @hØÞÄvýŽN"¬loÑ°½ÅÿŒ]+ØÖ$/hloòµWÖPß/ÝàsÖ“^…½9ïa_˜%x	¦TÃ¨ùYb0qÌ2©¥F&ÀbÂ ÄCE¸Æ\9!9Åd“²~å=WÞS÷ UÞÑ&Þ#])Â94&^â=ÇÓú¼§n®b>G`>¬föÿÇ|v–woÆ|^ÄÝýa)Ð1+/Õª~%Gû£ªh|3³P,g…¦"5#]<çZQ¹ 
@e°€	¸²ÐBN+î}ÌÔLSí-EX*G7%Æü¸¡#­Ê«…èN8ÉÖNÜðSy±=èµZ˜Už”Ðm+Ç2ùÍ»?ÿü¦õîŸoZÿ~÷¯IQƒè˜OÉT+¸9·˜yl–~’FnÌx4
Jà/91Å›doZˆ”bÔŸIëÓû_'WyEÐÂŸÅ&7Œ”M|/«"u‡YxRÒT¢¤Jƒq_»Q¤kÑ+3|c‘U*Ÿ¸Jö‡³ö£qàXaCüßƒî×7­_•ùÇçj‚ÿî0::5ê»;Õ¸‘-OÏßÖ&?CÁÿ[ºA)6$ÒD(Põe"DAdñš&ô ’‚9ª¡µ«¥]}&uƒ9Êµ½8NÔØ´vIPY¡I0n5–íI6s;úL1â4í;¥ýBËïV~~v·pY(ŒöçïÞÇ¡îXŽ»¼Ÿ°‡6=o¾+GZ’´L³†n`v•…º¨¨õ\#=9÷lC"cÓZh«&lxàB*‹€¤V!„Åëi¬¹c‚@;	×Ž\ÙÆ•mÔdôÛëë5AÉY.kA`1r”Â“L.k¡µv`Ã•o¤ñeÌ7vféÞƒo¤º5n'/À³È?’F÷ë¬ÑIêb×L†R3qÇ3òbó&‡Cg¿ŠÐÍŠ‚Õ¼%’Ìz T1Z@gcÁÆˆ#„¡2hæ¥¢ŽXa(¶;Œ–VC7åûøëŠ£ey1ó9ÌswÂ¯Õ‚”TdP•ÿx›:©¶8h½ï´–nlªJ7ß²q¼­™xwnpí,&î££:®—g¬DÕ¹dýªèÆ§Åû”0ˆMEª ˜"¾X¤*þ
ƒõu“qLÌºŒæá]NïP0’(f–Øç³½Ù®¶Y»žÉ¡Š/ž,N1Îwi¦ûÂ4‘4ˆQœ­ûöHÂõ_þî^ÓrAÔè}¹ØbµŠ»Â ËîëtY~<5;>¥gãÁva9SŒ.KË´K`Áå³›µw¶ø‡no]Å»§,m D¯ýÞQ<V7BszªˆæàldÆcìŒÂ‚kÏ&ŒÂ˜•S	÷ Ç€–+C‰R
àœ1ŒÕÖ^Áù\àùfpŽå"WÁ9ö28³Óþp>}mä“…YžÑ…ÂóÎ4WxnÏ‡\ØUxNµQ<Çéš1WÀ^Øá*Fý	@ÍüzjfuRPFˆ¶œS"rLÇ’ÒZ¬œÅsd%òÖJþ•‹ j« a!cÀ¡Þ–•)~Ž²hÕþÎÈÏ%~÷å×¿´lfÆeÎ¦íFþjm*#Þ‡õzïÜ|(¦éb¥óã ,ÍéT^:qFìŽ>™±Ã2Åöôê`ÖûÍ¼÷…ž¨šúj„åÇE€|°±þºžB„WÂ5 btñ¶ByŠ¾]´]nÅš‰_\N 5sÝÛ(Ž¡lu±ÉvŸ¿µgÃŽÓâ(šô¼¤Ú]¨û®4æÊã˜c_sa=t¤ûê7­­4ÎÇ,úFsÍœ	h-ãœA5T"'¼rÀ2ªbø=qŒ ¨ã&lþ+x\x@ø<ÈúÛW"ÙJ¬ŸRà%ì 6ÄŽºïzôh’Oî¨è±Ó½1z¼wô9Œ¼Øë½aw”5¼Ù‹)T ž¦¨YÕ½ðÔhÇ1	¨¥á^1$‡^rE½fÖHã9b–‡/@X•Rf‡ÏQ8°'•I¿•æ:;RO“z9Ú©qÑõã^ËŒGÛ|–rÏ>uªêÁEã¢T™‘µ\¿2k”õ*žÒ-çf{ÞþDY«*€êÊ¨/ýÿýŸ?ºnÄŒ„_U	MŠ¡dnp£]•­;¨òÁ~u•-ËªªoUÙS6êUÙUMPÓ§ø4éöø)ÐîÇºô÷ñaâe"Ó·Ó½´-›i@üyÖ#	Ä+NÆœ!†–RÁtJž0ªöt³¶Em­¿(ÜY3Ùýùˆ&VÈ8”­–¬çÇÖ.“î°šu} <ñç÷©½(ÇÖu“|AµÆ¢©RQ07€1J Œ™aŒ8c0cÐy%œFA<sì©Æ|SÌ+Æ\6Æg1½p}ù8[Å¶ÎË…L*»îØ­§Ýœe_týIPf×UÌ(s@õæ$“©»ŒŠgY—Sc3i‡4Ã±$Za ÀˆkLµýÿÙ{³%7r$môžOA›‹3*ëb
ûr~³1SIÕõkFªR—¤ššs“†-2Ùb’.Zúédw ‚[ªbzº%eÂÿÜñ¹;•‚pc2«`¸Eš‚ºW.Ž…Dˆ‚„koÃ¸]î°á:G¡,7ñÞyâº¿;5èå‡ÝÿMÇ#ì¿›Œf#ãUÂ³÷¿x÷Ã³XÌG/WìC¥H?ûaÕ å(r‰ðJ»Ï>¾ÿðCÐñÊi>Ý%i&ßÆ³PmcìÕR÷“›Ýàl*Åô§fô|¹…ö)±™ b»«IDÉª6ñà‚IQ%O0	£l?­^¾Ií•ëE¨­WÖ»¹Ëlé›LÑ)~ûÃ¶žûº‹‹vLîö)Ü³zßp€¸ÒôÙoï~þõýû7·Ðÿçqd‡býÂŠMQÓø×!fbeÈÏ¡ãƒk«Ag9˜YBN (Ê	è•žÅNfÞÒˆ8«°†0J7QÌ	Ö­|Zj0šn€„àháÏ!hEæDÃt5˜”§ù
am7Þ	a»£)ÂƒaxõáS¹2ZUsqFÛ>ÕÕA©!c€KU)ð¯h–àUZ’Óû&1nàF.7l"‹é&H€2j/©LæBëÀËË ¤Â[!˜fZcÃaF,â†IG ?Vw±+vW-˜Þ®Y°XÔŠÝÇŠÝ¦÷'J/‡ÙÍƒÓÀ¯Ö%?;¨ñ„ø—°J„ X@Ì«µx¼–„Å¸ÜËwN­¨µ§t)å·ú M•(5hÍ<¨OîY1—Œ…ð)8ï³ëw	ûŒãäÅ÷½ÊƒNyøsqßóWÓËÏn-WàÐ‚{©ÊCÃkr.õOß«­`2.°Ô+î€QDh'	È1BP“iÎd&‰C [Çöÿ”×BZò¬U0ÙP0hGñV¯`Ö¼‡¹‚
&Š¨½UÁ<
®µ=‡ÇW1©ŽÃ§¥b÷¾{ÃV’/UÌ—ª¢bv«ÍußË£,óßl][Ü°euŸ4U£VÌ[*XeŠ:ÿ…)2é1Šqœz[8ãm„ÓÒ«BrM˜PãÝeG«\îþCîü†þ0üð½àßòŽ%‹/W¨à‹'÷~FæÃt8¨ç+“Îƒ÷:ëØjRsÁ±„ÛuR °Æ²Ã‚ªÑA¡À(‰¢x/çØËwQ&Ù5oƒÎ¹¡ýÓ3q¶?zó¢„ÔÈÚ¹œÌþskë‡~¸Ó8Ü]³ó|ùŽCÃ;SñØvËÂá1ìŒ‹1ÃaèA‚ßŽob×«[ÖòŽnX­U^GèFÖ¬N^KêZ±‚uGD‡^éNÁºS=´¢§¼=>åt'Š7¸k£ ¦UXK5 N3ÊeæÍnoÊ	àgAH!”Z#¦	Z"q(‹(é×¢ 8D6PÛQÄ ¬¡ ¨$Õ£þ'\’çîv(o|·8h¢WŠƒ‡MqÐS¹Ô¬ Èœ ›Èèz’ƒ®c ØkÓŠvM—¨ ¢²^•'KW1Rá •šÉ7En¢=ø©‘|äÚ?ñÛòüá›\˜‹J	iz“
°¸ÐLd aË±ÒŒKNŒ¶Èb“)F	GÖÿ:#¡dŸ’¡” “–Q Úº]‘£+‰çÂåÃãUDÀD/ÿö·ÅíC€?Xfý"‚Æ¿¸ä²eªùÐïr¤›nž”®³xý¡Ì¥ïwOpbÿíbžÊ<Ë,wËŽ&.¤®Ÿ¹m¤·÷ÞœôâÄŸø7wÃù¾[„('¨Ê¹ö?"	¹l™@k)ë D2\¥]CèáŠº™¯lí^¾K{åþL]æˆ÷ýâ±l×}5nüX~±L¿íWoŽZ¾rWwþšÍkK×<4ˆ.ó'á¿Ç—¹¤í<b:Žñ†í QØO1†3ˆvëœA{Äšçô‡¦š0›ÑŒdTo†3Ì1c&#Ò"&(cÎ
kÊ,ÐŠ9l•$\	I¨Ò^Ã´úãÊõ†ëúƒ-È¯úƒP¼ÆV†P .V‹ÙCÿîù¢žEMý‘ú}hZú§Ð ˆÔ©v6rÀpÒtGS#3½ˆ^0š‚Ì
H‰rÞz ÒiÉ1F qåÌ«è´„,È’dÞº ÞÊÈ¼²‹)U:L‹#c‘Ñ:œì[Îð=Ù­ßªá\~ìÚÑ×owþüõÿu5+ËŒW«‘‡Ïþïáu¸¼`Õ‹é'ßès7ÍOˆÎ¡)\Ç¾aì:ÃƒoÃ5î^sDW2•A@‚ë=¦PÔãVlOñ+:Å‰¤"µ¾÷êë<É)îû=ú!^ëõ+V7 ÝT8ª3DR‘y<ŒdF;9Ê)…¢þ˜t :ã-ri6«=œ¦!ÐÁ¼YNv…ÄPXí>¨a<«?ìöÞkù%ØV(ð±á]7´)…¼ Þ" oÚÕ£Ù}§À×“¾™ußýöþõŸyûâmä£ïëÛ‡›ÑÃÃh8øÖËs©ø#µã¾ztÖø´©'þúV7æ_Ï‹§¾¹ëÏö^ˆÉPv°£Â/!B®;AhÕ£"?]Ÿ£~Z½bkõ`Zºà·¯?<[¯ÍÇl|ÒQÒãõ|7ûãêv|ä{ú‹\Oï÷H‘ëd&t×‹Î/ÎßF%ç·œàñÑÜÎp¨µ–aEG¹þtæX"ˆöØŠJc 4Š+–qh[Œ VrfI³]çÛ3ü¨gx8bÏpŒÖ8B
PõjHU¢}ópK 2üÕOñÀB¹–Sü`ÔuÍSü¸©¬Îr5q3zªã}:„MnNÉ\Á‰ìüŒi4õ8œh*•ÇæÐIç	…5±NQè|Rzxo©ÿƒã¨7™c”î8áÿ¾›•‡„ù“u%>«È=˜§7,£´ò•ˆÌÕ±ŒÛ;0X§:ØÉƒÂJ¿Æóé(›}Q÷|1òÞ|…¬Õ(„owu`‚ÄzõLŒ\á©aÉbRLUvb/lª®{Ëy4’Ú™ýËE¨<~Ó!êœøËw±ï„ÞþíGtâ:_	øÊ‡9ÜssòZ8ƒ§÷1¬µ²å!^[ùõ‚ë4š·"´§qjù¯|üò‘ò—ïñÈŽü=J.Ö–©¯æ4àJpè´Ì´"†`LÐ:ÒPá§° “q\øÂZ*%W™´n—!Óª¹ÆjŽn¨9¶£¥Ws˜mª9¼ªæ–'m5WËß*ºª¢c5JEÑ°sZE÷}*º¤
•'Ñx³ÑhPûêº¾ÆsÞ°ÓÜ`E´±˜áÿÏ
mCÙ"…
9 %²ÖzÛBe™·è2‰°Ô‚]|Ø÷!çû‹÷¿ÞÀnù`iJ,Oï
Ù"?GH=oY—§n˜ÿ5¢cÕL]­æbÑš‹Òµ‹&¨¬¦ðà€£hµ•¯]µÕ\U½¨ ŽçÜ×ÙÓRS3žN­¬þ±ÕTÞi5ÕÈ¹vÑÃwUàÍëŸ>øOÞ‚Û˜p—&q¼†·/LôåÈö‡w¿­^…íp³wj2u½‡÷ª_7«¼	…àk¥(´^gXèœ Ž‡3iDT@$þ„DÈÌm¢QF’8SŽ+Íbì¼òÓøïvž¸¼½éúseª•ìÖ60ç¢E­G—ÛEûûê*¦ÛP¿Ä©©[°[ýBý{×oÈOÓð›¾WF/¥fnGoE”þdÅËëF.É±EÜ¬ò¶Zè¢W^[˜n6šÂfs7w7¡®Šíê‰SŸü¾ùÑ‹çù¥TÇÏ7üõÁÍîGÖOÛÛxÎ›’þO­¦¾s¯&ÊÌÜ$×Ÿázkx·¼÷:q¡ÉáüëMØ7C·ÿŠ
m\Q!¾=îhý+õW8¢š|„‡HÞ˜[ª°àÅ.¿T:Å‹eÞ|öæD+œša±œÇþ`Øí‡Ð¾þâ’¤÷‘ÙbÙ,×Uÿ÷Åë[p0wÆV™x(»Âv1D¯=è×£v¿»#Ò T>{õâÃï¯öO¸7Çã5å“Ø¦wã3IÔ×¼jíµ­å–+Ç×§
[D”ðç&DVJ²Á†hh2Šš¤2†ä e.k5ï_Kón”uFxGÜàÁ]Ó¼rÕRåLˆSuCû\ Ïä÷¥{E:Åùdº÷`‚‹šº7ÖbÜª„ë‹]Ü@mä¸~Í¹Ò;TôÓLQàõ…×(i¶2\¡à’¦RS`+¨P;
1¤6¨ofR`Ò)Ê ?h]†•7Ž5WÐ›@š!åÕ¹Ä»måð8Ý?üu_ŽüV™æS9ÊìÉ·ä¼Âþ³?¾¿ùmr÷ïávq2uÇsíÜÁ·ðœA9Ûîç¼÷à“5A5Îüiäl-®C„JY*ô·»ÐßòÿtfæÿæÿÝ}˜‚F²}´£S¹‚ÌOå›Îã4üÁç•‹íZÿvMNÊ&£‡îoCä»ùã.Fÿ?Ý—óÉ¤^
ãÍ¾Œ¼Zr¡Sÿ#?ÍáÌÃ€ÁÝÏþ¡óŠ«Ãðóap)«ñtA-|Í5t¸O-fßñ»­˜a;ýÑ+Í€ò9æw·!]lþÐ9AÔOÛ}ùßeçìè¡S.C6Ÿ…ú@Â<„ïß7÷û§û%¸ºƒC|ä_‘¸ˆíñwr÷v±é÷„V•0nÀ¶Â(8]7Ð!¡+‘ ru›O®—\=”–Rá(ÑOçJE½íAàÆ®‘ÿª˜É6í}è¨Ûßã>›¼YÏQVù²á³•Âƒy0‹¶þTˆ0XWÛ6éYõ'·±Òþ,‹žç¢m½ynJûŸ¬Ì³Ñ¥ÃèîîÐ{½.ct8dî<&¥àC ÔŽ3f€âØï)	Öãe‰Boš' HÒgÒ*‡v%¦hÁCŽøF=\¹½¢ËUðÀ$ç+!( Ìj‚‡3×<[Êiàƒ¬q~Jø°Ã­pøíXØƒ#zX*ùZBGy^$t²Ôýµ„šL7ê8f8Ñ|<Õ\‹³~–Õ7rÎ•XÝ—R²pXÃ¡˜gÐ!¤¤B0“Hk¡“–bäÕ’†(¬¨Ê0Q„cëÁ	ßE){SszÍøè˜ßˆìüðúï_„jöÂÚä|èƒU¥ÂRmÒÐ3[ïµ“úìƒº»óãu>là|wÿžOä‡ÅLŠiå
É¶‚P~òÅïÍÁ·NAš¼.Zúqü¶xPã±ÿMÞÉR° yÏ§s¯¿…“z2nü£t—1¨ù•ƒÿñ·€cüS„ä[~WÍüC«É»ét¶-Àô~4Ø®v
¸ë{ý6šçÙ¾òX>¿ËçÓÙ\ó“£Ž‚$X@½\äyù»yB É0ª†L	.)ÁË%7`í¦ƒ€¬ /¢8~^½ü³êT´cù!_üž£¶WcãÙ3Èy-ŽŸÇ~ÛöSo_qáQéýA#›å·þ#¼%‡v/óõkdçeÃE÷þ¹2@#Õ[åŸºŸë`t°áØåŠmë?ßýüË-ÛO&œ¤®JÃÒ'g®brÉ
•
*'ÄEñTûúÈ(ƒ,³Ž ÿ,”"à¡„Z&³ÌC#á$ 0J¹Ì!,ÊI¦¨%-2j‘Ñi‘]GFHnÏ%B|5XB.VJ¿ùÍ¢‚É7ÐA¼w¦ÅFÛ°‘‡¤×ƒ†*ÔÄF±N‡­ )ZtÒ%VAÓ1ÝÉÕR* *Vâ%%TaÕõe9Vu•‹VHùKTÉOÄFYnê#4£á X§3Á(€ÂP.pÆV„8H !†Ìï†‡µÎ1É­pHÙðÇ®l”Õ‚çELc 0þó¿›¨‡ÈÿYweöÝ?¹5e»]I&<tÆM§ez´»6 ÅmÓZÃ4[p¤ÇhyfµÍ¹{$õz!•ƒ%ŒÔ©ŒôcÞW	ÄJ R\–•ËààÿŒæÿ(¸ƒéh1jç±é¬»V@†A¬«Š"ŒÖØ6Ð›LTÓûø>€1©7—Ÿà…]VHvpt<F)¨s¶|ÇFO)i}z_Íw¯bDçÍ‰°É9.ï´;ì€{\ÌÅLÏ¥cÏáAþ Ë†q–)3‰!æBaÉu"Ó„À… ÏÊ eÆR`r¸Õ²­–=¦–…±n e×+†-ËÉ1µìÜß‰ž­“Uèzö˜>'§g¯À”àÅYÕ¼ìøQþük4tj\7¹¡K~Sbº“A
•´Rj3œQL0Âq¢” @kÁ–bc‘ÖÐÿ9…K-d†ïb‰†C5<•W,ãà´¿s…þ—Ù§¿íÏÖý¸…Ç¶¯«PPÌ-~hûÓñ@}Ë¯	F“í³{ÿƒûþÝýÀÿ7T¸™¸»°Œ¸«ÀY*Ð©8,‡üqq'ÐYžÚ!ív!„sn0ô·®ñçì§‚ú™wãGÍï
üìW"ùƒø9Z$	_æ
·®àÞG.|F³ÉhÐ‡§›üû´k½B³éŒÕÐ~\hl5íög~ºY¥Ûºn+¾y©ÅæS9iaõšÍýXÙNú|e+ï¡}b¹Nûõ ¶.¨ x-	’” “*ñÓÿ$7v#ìr‚½ò³©“©öIß.ìZæéÉ	¬sË°œÏþÀÐg\D¿qIê÷¤â'àT³O=XV?àÔU~GöîF:0êó;‚ˆöíîì'¿ÑïÛÝŽû_õ<ë¡¨	û³<¶¥ÿolÓâùc[ÏâžíŸÓÑ°—Ï"î]œ€eâõÈÝ(rø¼m±â&ÓÏw~Éo¼Œ}Cr¡b+ÇÆiñÙ; 5éŒ•„ªs
X,È3Jè`JIüÿ ’	2ƒµ”Zˆ
 ¥a„ìLßÑ"µ©íDjd#	ˆ·v!5JÖŠß¤ÆWâ{R{,½X©%f­¼¬V;xç”X­ÖÄy°ÚÁ$!±ÚKÌœ´Eú66Ñ[Š`ŠÀ#ž‹Xv±’„+R…z±2k˜/Vl–¸›(0érZZÌ*@ŒlRŒ”¬@ÆXN;^¾²S=,9Õ¾gÎÁŒ‰uù¬`Ðë_!ÅÌpL3¨EF¸’Sœ€ÔàL;¼ª6Ã\a ˆ0TîŽ	Ïë?¿YÓBœñ‚€ü!Î]2ˆ¼)c%Üô>dK+Ú-.©Ô|6
©MÎá-NÏòüñ××æ9×Â_zƒþ'W†zçÙàòªÖ¥L®n}ßjâÁà`¡Ào–3Xÿ]ÕñÝOû¾“áìÇîxñL!}’)ãÊåwK!‚·¸öóâáb/Ì¿¸’+Fê<Ž´¼ôâá>r}ªEp¸u‡£YhW%ô»p¶À¨a=_øu*®:ŸMçaÝ¦Ë‡E+ªD—?±å?ä×zk½â®._—ò®î‘þ\ùiqÕ·Lœd‹‹ÏpûWÜ:†u»Ëóñ•sìlÝ&Ýge×?,|·º?^}ó_KßtßŽì<HŽ¾é<Ì¬ðCŒüöYÌ)¼éY÷ñbtm]ŠÙ†_VW¦³±2—I ïç¸?<‘kùã%!ÛóòqÿýÃUß)b‚SP¥ !&Q\¼šŸY~î²J­ÜX©=^­CþËß_½9îUå‡¢¶À)¨ËÐŒcFêTçõóØ‡’w©‰}ýÅ ïÝýþUŠ”¨òÄ8Ð$œ!{šdý¡Ïúƒéž6wÆ<{PÿMö‚ßÓÃÔÙ=¿µAw›î¶’•¹>ß™š¾lá¡¦©éÃGÎö&´ß&@‰c«$ãL!K‘´¡gd†AáHæ4ÕÒjm…!€‡¨-ÀÍE(µ(å¨Ôë¹VÖ^Å·S½4#óòsv…’´>lîvk}¥úŽÂu}GÙö"ÅPNV=PS«yhEl©íwàê‰ödð`ã_Íq(jd[}ÇÖx•®c®	O©ü"´ÉÞzËŠˆÎ?roßòÈui²G1‘÷¨€óXËÞB6y’ŒQ—9ÈUÜ8$,ÂÜf¹Ao=ûCÇ04åÈ1‚cEI«Ž§P¬Ñ”ÀšÑ³]	Äš<»”Àò’'j€Ö¸z8¯¸ tF5Ë—¼
}07ýšv ¸‘7,¥,MÀL
¨q¦%4H€$"‚8Ç‰Ê²Ìr–!+ÂH(…Êjn¨cN@…eh˜ü´†yfH÷5/Ñ½›¨ñ½?½CÇüŽ|¼[EFÌ"¯Áîƒÿã°oÔ¸âÊìÎ‡ý°Øïå²3ß2Ïé·½?“¦7Ý×³àÀ}™vV*{àŽTÃo‹:Wºð?TÁ‹ë5˜WR/Þ½ÎÓm†uWA$¼Áå=ûrŠNM¿-†xL±º.¸u9¹îšçËÛ£ùgÌÕØ^­ÅVµ– Âíé-ky¥|ª£ã§ËÜ+ö|¯ØíIäÆ«¨ŸQW]myöæ4H7[ÂDößaï8“öuGd¬Ññ
cëZ/Ãý»ÚnY¥á³oÞ¿¸“m¹s(9Ræ bî‰«BÊÞ g"8}'$*úóBÙÈÖ' Fdï®CRÌf(¶ùðÎámx°JÃgï~ý²ÛCÏ6™EgX?mfúBME|*ŸGÝŸFL¦hXæX=ÐéÅ2•=Œôt4p³=çT±>ËSôÍÏ[OÑE¢5j÷J÷GC²ñÒXV É¹ÕLIìˆ!˜Gc)Œâ©¨tÐXg©ãRR— RÚ"3Aµ-–ý+cY‹e¹Ø¸uDNË2“©}žK½tnÑì*šå5ˆŸ§C³©žuÑì“áxV gœ;f+¾­-YÀÜ(ñ5´9ÝØ{ìÍUD|MTÌ”ló˜›Uø+WÇé@G¥×Hy”æµ*€;rÌ
òN’X@ðH¡«Éûöd°¹íO?MQ]Â‰?Nëw)'„ÿ!6AÄ%¨§Ú	˜iÊçj©Ó”hh±E!!%„©Œ°‹o²¸7<Bteršj¸a,Öv­r£a\7vµÿEÔÓBËvƒ¶ŒwÚp§»þì~®oÌèáùtæ¿ç;g{e™¨çÅ<v ]T%‚ ê¹?‚DnP‡Rb±êº•B²¸Â @Œë¶Ø}½|#%¦?ñâÇÛ½9Ø(X¹Ø.ûo»¶~é;õCñpÇï1Ž³R§ç§P³ä´—Ï ïPËEGë¾êæ;^‹gÑÔÖlØ “q¯³Fù·€ü‰iô‡¤„&³¥VCm$Ã™×vRg‘ÎQ;FZÍvlÍÆ74ÙQrOr;V5ƒT/%%ËÓ¾×Òl Ð\Æ•s*Ý–~-ùätÛA"NmÝvDÑàÚCT«úïò“W¡s3³ŸÕ­Êq c@Il¦Í8'h£	ã†æ8430ÃV8FÌZÊ±rYŸ¨ÔL¶Ÿe.T®í~êm—ø,¿`øaý²ä‰]Á¯®RmÆ?æ´ÌÒ
_xÖ{5±^ÚU~MT~tøÀu¼’Š>mÔ×þƒacÿ4a»éþnŠ¿-'ä;,f¨çÅpýigYT·äÒ†‡^<Qèº_>~ø{¦¦³µg,·£/—ï>ú	{ÕÏ}R“øŸö¦ã>5×³3ÿÅ{‰+¼ZD~ïªC@~TÓ`?B	RúÆÉÅ,‹¯pQÓö¯ÃpÚöôÍ+ú
œ~+äæŸQ·fÜ÷: ÆCzðªgÛ©º¿ËhNTz×OeW¹[{E“tÖÛÃ¨û£˜àë`%:­Ù6¡CóÞ*t¨òßD}XÙ'p}¢A‹ÛØñ?“:¡#ƒNü­à.‰bSÞ)æMl-qšRÂ”£Dp•40J “Æ)âµ•Ö$cÞY#EÆ	U¾…Ý•¤­…w-¼;;¼ã`Þ±1WØ#ˆÕ;æÄ¼£‚ÆxŠ¶œ¿éçD ˆ† /Ò×pZ¤Ãª‰ôž
cÈî 8Åa¹hòIÃ%ÕÁ´|ÅÎn…Å¦Kâ‘là²Ø©-ZK»ˆGl¯‘êyão‰×»šÊ\ðÁ9§”èL
Å ´ÎJ±0ÿq"Id	”A”UÊJ•Ñ`m8ÿÚz÷Ùuû£Ûüáº¯Ÿÿ¶ÀnƒCÅ…Þ-YÙ‰š~šîëßr,î›ò!ºŸÜ$O5Û†ä²ƒn±Ë²¾éû—ë‘Ðpè&?µ‘Gð& ßî·ÛW¯ÿùå‡“â=é›O7ÅDoì§çÓ¡j>,JN:ã7^]Ýè¡]×VI(B¾ÿÇk«ð#¼Œ ŠÖÒÐˆ‚«êŠ …D§x).ÆÇ¡Š&$™³'Í4»ù¨M‡ä$z‘OcxóÖ}o1¢:ýFØöíBÜ¿¿þõ—[pÐ-±]ê_`»®%u(îm»­%ÅjI­»)ê ´&º·²°ÇŠoß¦c}” €$£†h+8k4–9®™¡!†[%‚@8‚Ø åZÂV	žO	®¤Â*• Þ®‰€«Ô‚ XQ‚ÊZJð´T5XÛö>d5‚ÇO¦˜ÏµÕ`¬o`‡>l YQ~—vl 5³KW6fM„ùñÜèkúXztªjæ‰^­ÃeY™hKJ#-·"ãÐZh¹É€·$¥ÔÛ)”!’aÿWM3Å9qÒå0ÑØëTâ=ìø7£‡‡ÜLŸ•Þå÷/ß¿>ìä/“6‡eÙd:¾¬ä›Ý«…G¿[õèw+Òþ´û%ÏÚ=ï¹ƒ¾ý2é_yçå«ÞïÝgûê¤zÖØÉ§þì°c[¬;¶$Û‹¨Ö¿X3&¤Jî'BPQ{.¼^±ÇzÅîJc-<¹ôaÅëX{äÆžl!jÔtŒ1iÂ+:]kû	±¯Ã8û³FÇG¢èŸÎYÝD?ˆsè…xóªf i.­Ì„± 	<2Ç‚)+¤ ˆ1¤)RkKp¦­7¯È‚meÐÆ‘Æ_«Ž¦à†f@;réš…%%\©ûMä°žfH¼ðluC©XÝkÄœLI´Îê*‰'qµÙL[œÊ˜Ðó¯¶þÍÔ2yE¢ÒpJ0Í¹ êpf)¡!Í$!ÂhE¸c’Å#H(e„)+½Âà8ƒŽíP/Á'¶$×||ÿS÷a>˜õÇ÷µ^Êçþ”wÿ>íöý©{P<®S8ëób‰«ÃÌ§e¢ãGeœ¹ºXŽônd»Fssÿc§ÿî>¯èØ§
/]Þ¨ûá-ä£åü»S7)”NYÜ±ht”v¥ÓÑOcÚjèFóéàÛÉ97~	ú#í•L1$Ö+.†ÜÅÛTæ„‰Õz‹²•j‹L€ˆZ‹åÛë¶—f›\OlVíË¯mßXAk$Ú)¦rÈG·íT9Ðeì-X®ÃYL®Y³„À)cn§7vížýòòå->H<ÞÀ‡iÇƒþ4'—à'F™nraFÏ¤šSnÌê*g+Hæ,p 6qôz˜9ÀIÈ­$¶ŠÂÃŸoð	nÚã»®ÌZå|ýÊYn(g ·+gÊÖ.à˜×ÕÐiÆ‰I·M;=ÅÐé«SÏèÚÔsÄí\]õü$,ÀUu½©°ëÉáØ{ÈGõ}•äØfJúDfôç4.w<Ëø~”ÈkQRè´Ö;¯˜½¹œ)®Yt†ÿ'—L
±á–	ÍTIoOïPÒïj–‡ÈÔ·PMÇ+ÎáÈº›ÐÁŸ‹
·C÷¥;Þìâ×Ð…×›Óîx>¦.WÖ£etK÷õo/ßyÝÙùï¾?œ¿ŽÕÀÐÿêÇaÿë¢êíM÷¿‹RµÃ¼øjˆ9™Í5sƒk7¯Ñº˜BgFTs?¨æþ’™sRõ›/É}ëU¥dœVoêòa*·^ Ãxö	hÈ‘Q¹©GeýÜ+v^%™Âo_È_ÌOï_å¾~ÿò	Q@×º©†E ÕHP2ÿ¼M:v÷¶Ïì­ßëŠ!Ù(oÈUÄï^¡¹SÖÂuÅörg¯ënsC¿2ƒ¡a½Id\f¡•"SŽ"'°1”k%tGHøg¸(3P‚8Ša+¨É4"»ŠÉ·ö¬–mhX±ƒC)\Ó°XÈüGK‹%$Q5ŠÖ”M¼={:¶6¿ôè:Ö±bO¡cwØ®uìq“t)ròìÁ;Õ^énl[sµ±.üLêÓ?ÉªDÁ¬ÊFŽ2ä, )	Î‚Y#Í¼íÉ2½¦$Ra‡ÀN(šÂwy„Gþœ-r,RAõP&"x$éìÕ~M
åhV:|døÉ-•µ¡‘WQÃ•¼
…õºq6¯M=z}h¡[}£\Ñ=}ýPvP(ÜPÁ²ÛŸuòZ)A3WE9-(ä_ðíO¨º_üpÝÏa¢³bI.
.êÑ|Ö¹WŸóš¹£B¼;uc5	|$ãu~‘¾a™,c!Û/ÜÐS¿Oºf ¦~þÅ:u¼Ÿö§³<£®H.ëÿ-[ú†~ßÌ~,ÿ	ˆ!ÿítV-ÒX¬…Yü.›Œò|Ï>G_ürû_Ý Wìýà"ÿÃ÷xûîõŸ·ûáö§_~G¤ëjå§ÿóñ¿Ù–ÃÂÅ€á!ŸY7ž¸ÀÐ²?tó_¾x÷:wÄ—¯Ów´X˜Gã›‡r5ÃY'®k'ýÏùìóÀ›ð~·äÃÈ;6£‡±“º?èûwõ¬ØVþÙ:Å eGvä!Ýì‡åtQuºù¿÷Í0Oó6kžz£ªæ éúëºZ¼¶Êk(þœÉBü{õh1\=œ‹ÝûùXw7rƒüüÓ«ú¡ä9\1Ãìæ~ö0Øwñ€ ]%¦AÄÙ˜&%^+¿ã›U^ ¥ŽG8BüÊõŠc±^ lþI‰ vŒx>ë¦«Ý§A\#ý†ŸÌ:ØV}µ§»H*rj·½oíÝÁ$páˆˆp2Äd¸*›MlTõºåpõ”ékq	ýsìòÐ!v`íBŒÑ¾ûù—ÿé·[vÐé²)!T£"%â—õ~?	\×Ó¾ônÇ‚Û	¬úÚ€;3±!1Ô
œ•šgZ KHP™4H"N,“\2„Ê°Ö¡h7ÕÀÿ¾Ü-ànw¸wn¶¸	Ú¸!Yõ‹R&ÉJò;Ê©ŒÉm¼¸“‰>-ä^Bnšî=ä>ØQrÇ–[`ïøöñYÌÖÐx¼H–?ŠÒ™¼È|œ,°Åkv/Û¨æ†+øJüêçHØÌŸÈ…®êÖ?¤uï’±AÄî:Ð¨™!ã½c‚
2¡0sdŠdV‡T´ˆk”L ¸Ïÿ‘çä}aŒ¸I¡tŸýñâ‡í “§Úäß„µ(€ü‚.]G9üõÐéyWEê_U&ä3>i( óËÝÜ(ÈhwÀÁ'U‰Ë‚!Døâ2ˆ‘Õ\¾ˆQ
pµ|7“Qå»?«^¾'ÒyTO‡7µöŒÍcXIW¡Ú_%iëw¹»³¸²‚‰öìä!Â³åÞ¾Æ5ü¢¾ydã…0ªa|#”Üúï<$:ìÚ”©5º×þåM„‹éÏâñ8Ïþt_g1Í2o1O#b˜®Â™·ñÊÍÔ+âc¹Ü4ìè~/œ³3è4Zþ@eÉ0|©WïÂ1õoÿñÜÍLqøÞ8ë€orD,_3²6 „B“	h1–hE¬5 äb€ÄÌ5’hL‘Vá¼Ê²ÁÑçhæØ® «”h Ã4À·W7–|ý21d„ÕD‚!ß.Šˆ2^S”I”¯'âË8Àâ:àÀÁJŒuá@¬·àÄKTB¼Ô)DKÔi½ŠjŠn	w:’ˆ|”¤ˆm¾À±íAF¢³åÄ®™Ä»XÄHžaÄÔ8=ÐèÙƒèü®€,¶Bh¤¦
¨2¡r.£”	èŒ²dÂBl¡õº,¨Õ{	#vÑØ+	•rí[Üæ”ˆê@J®ÅZl¦åz¼A~þBy<vß±Å ¬e
¼BY¦âu]ÑŽ	ÙZ9j
0h%ã–D$‹äKÕº'Rñˆ(=ÅÖb¹ B—ÇvUø“¡¸x–ràÞ†îµ×ú
ˆç¨ýy<tÔþJEuÔ>=–Šï¯ÁÏ|:yîpüø½˜[œÖÉµ·Ñò5¦|*1MWÁÐño.¶ƒˆ3ø,”sJ`¶’“àµ°J­@Ô(Å˜“!ã>ðm¸@iã
i¢5äÆe¤…`ÄæýÆF€BlÀIÖ`DäýÆ&Œh±@¢Žcã´@âˆNŽHü¥€Dë; 6bZ?UÔaÇj^7èÔLoãÁÖ9,6ÜXÀ°Ê4¶„3È5È¢ŒRË8ÒØX‘ai`•èõ£Þ7þ{â¾›,/8µ–Š«“W.gøÌðÎ/˜_ÊåõÆn0òÇ«w/>.’Ïì'ñã¯¯ÿÌÓÈ=–¦v¶Ô¤¶e?Õ«–Ðé¸Úé²TtùS¯ù;^l2ìþòîã	Ë.“MœóÝšÆ9œùÒÿÔþ~”ÍÂŒžçK³+ãœDBBxµä"@b¹½î!ëu'¡lâÖH pDÉ§|;÷üÎü®ý"kÙÏPÌó½VŽ±0™ÚmË9±óÄÝ··¸È±Ô^#hy»ÛáŽ—uç¨\ˆ« 8œ2ˆ©Y”ÿÁK…â¡xÏ_
õsc²»¦×	Ûtr|dR]­Œ˜!J3rkä0€„eÂ*‰“Þæ‡È`)q†…3R­8u;%Á­V~Z™nje±ýÖ‚ ¸Æ¦äŒðjl— &eÎºÂú^ÝÇ×Ë©Ÿœ^>^RK/Çšwk
ú¸){NL1ø.38+ÏiÕv2««µÙxô±ˆoŒì|ànÃ1‚oÀß8¥ÞjfN‘x•!“e
zË:™ÓÄ1‹ ×qåÍmoMû¿É­vJ
ßFpŠ™“HëCå»„*¤?¹ÒÃÌÕ ÿ¯5þ¦X²‚•øÒëàÑàStq®˜Cb»<“{ç¹Ú¯Qc•ÇöÝ4žN\8¬»åâæá¸E…ågAy|“îoïÝô‡"òø!dº[¼ÍþÐæ~^Yyóà‡²yÒw/ä¾.BV·Ì¢h=­¾/g´/äœ…Üw•lxáGÄëú­zAéŠ^¯æÁƒ(æöÀO©—oÚÞ¡íúŠ.×¶Ä–¡) „c™†ô|hýû}v7œûÉR†þYö©âô#jßH1Ê¿Îˆ4vþ:?ëùV¢W”Ç8û€åAoèf_F“O—ÿ‹?Çüyþ	zK3ðb3¸Ø+XŒïWë¶¦Ö<Ïø—Þÿëö7'|êÌÄÿÀY?M¼Z?ãøþÏéiÎý5¬~4ÒÓÑÀÍ"þÕe™?<ÞÔ¿ùycŽ4ŸcôZ§ôV<ÊÊ¼kÛ#=eúÃë²JÖ€1”iä¡Ž&8TNPf q‚a†áB£•T‡Cµyw]ÿ½w³<•7#sf“Ñ`éË*Tû‰Ge}©iH"{äFµ³ŠPvx%èŸñXô/¹”pýCÀ0¬rˆ`(6CE^î°Ö8¯-àíz˜f¬¼®3öùxW‰ö•¤8ÕÜö“’j5îïRgÆà7[K^ípêéyH=”eä>?þ®ð 7 Õ}˜\ êZ+aÝõG=äw\ÂÛ¹óÿM–ÎgE‰n-2Òÿtf–:RR›á ‡ó
b»÷þØœ¹d¹ùƒJÙ	çO”ãEý<Õqª¦E†©ØÏnêr.pÊBL§÷)GÁ¬?›”)x“tW²<Ì“òd­Iù·óÇëß?Ü¾xõöõ¯áò>:~toG8±#­¦÷½Ð#ìþY}/§°}v—úªV×ÖÏ$ª”Âa˜òJÖ…YìA¾MX6YÖæPå22éØ¦0	4ÛºÂï~ýÇ‹?ß²øáëCq†Å*õoêŸñ `qªžèª/>ì÷?–¤èª9Üøžoý¹.›H-¥ œð)ê•µt†qf0åÆ:Š3‘1‡3ƒ B;`lÆ´_PœÉÌÌvXØ?ùgî>>s·°zw[ÔÛÛ{sf®¯Äj^©Ñ¸ÿÎŒâ§SM&Vê Å„Ù²wZÛùÌ÷hÒz¶óå`ÃÚÈç³§ëŸ…/íºFƒl&±æÐKb ¨dLqfA8Èimd&	æ\;d@
K29Bl×Áør«Û°Lˆ½p–È(¤×WEˆã0ýòZ}E¡ù-4„N•ÑM"C\É!íºÄL²Ðºr
K(0©æw”"{ËÝÀg=€æ8ÑyY¡5>¾¶£Ÿ~{Îß³“Š¯ÏošCéé}L^ê²åîwn6s_gûZäî³"ÇúïlëÌm¹­3·uæ¶ÎÜÖ	º>ÜW“ì³^Ê,<loþ|™êßÛÝÉ†ÿ*µ“TÏy 8%¯Á£ÐbèüüöcðìÖ|­‘âjÝÝLZÏÝ@Ê$;~Ÿ¢g6ñ¬Ã”¥ÞŽ<Æ·ËÂIv‹tm¯¾m24jò²jlèGáhØ¶]¸Á‚ÅÕïÞ!LšL›4YmÒdw7¸úixWÆš¬6krð&ÏÌ›<3o²=y“ãM6	¿‰¬6´MX4YmÑdµE“ÕMLÜ°&Ââb7Ð°™t£«sØ`{Ë&¯ºÁÅ{"Ün°Éd“¯R6Ûdµ!L³6…ko±F	Ø7áÚï6Ý°	èÂž¹‚Ì…›I7xÓÛhIÒÞµ—®­9réÚGB.Ýà³n€ùa¼Ÿm»p£%k´bµÑ Ü`µ˜*‰œuáVe"Yr]¸Á9ˆ›˜g¸‰Á€› 2ÒÈ@š<t#R m4oÚdÑfófM„l“úäE8˜íý ¾}ƒB	”9Zƒshæ“©ÛwëzbŽç†69ÎeúmZÐ–ìŽ»¹›Î¦lÏîJèô~ÿïg½@›è}Vƒ¾U3w¨ñøS?º­™[ÚÖ'\-ó†ß^áŠP*ß2’A•rœ¢3§´DBc'”“Ê!E±ÿW	‡‚AËâ†bë(Úë™ggÉ	WÅcçYÚÊ„,!]Ëj¾ù(þÕ–NËÍ–°Ô0õ³ÑÜt/7oWuïýšM>÷§~†%ÅÇøùëÞïïÞv²ê‹xäg•[h‡ÈZ h²…93«hJ ç¼ÊÖ‚AbÎ”ÁÔ-]ëœt-.LÌ;³F×*^Û9éZJ©r½t­ÝOpLB×R¿ÍžVè´ï×ý"çž6ýqÎ_9Ü¢7Û7“Á_”7V‘ðhëÕOßßÂÛHK¶%-$[ÒYK:û^d¯÷2… P‹|6ø‹PÀZâÕ÷D¼jpÔ²¶Ò…[ÖVªð“em5"^5˜vËÚJnY[ÉÂ-k+Q¸em¥K·¬­Dá–µ•(ü$Y[ 	+¥emÕ‘~º¬­–w•(Üò®„[ÞU¢0iòÌ-ië¯BÚ¢M¬¤kg|%q¶
y¯?ìÏzyô=mÃµŠÝóûq^ié¢ÿe3i½‡“p_éÐhò×ô^ÙÑ—2ËÇá{èé·éÌ=ØžÿósBó¹_•”î‹ö{_Ný´„%eÊö'ÿV°×Êýµ…3VùíâO{Ú†ÿŒÌ§„ÆwÑmÇ“Ñ×oû[î&£™š¹»œöŽ¦ùÚ’‚´§ÏŠßÎ——«Ùòn[Ã@k˜^Ãža—mö¸Öhÿ`ë|<vàZÑŸë"Z“9 ¬áÐ!
“¡"|(G§3¬1ˆeÖ:c´ö2å¬‚ZAã|Wv¶W.SóÁ¬[<ú¼¬êúH\©ûv¨JÄ¡Î¦n–óçãî¯/>tµš:Û-WÛÿü:H|0>í%cki/)¨f½d$‘»·ºÿZ*ßY©|”!™HåÛûú.]³ìûæÛ­>ú÷Vœì4ºÍ*8zÏËùLŸ«¹ÿÒÂ÷gj~(ßxp½¡P£»ÛÚÉÑômYáìº.B E@–FyFüi®FœgY&¨ÁÐI”B^÷fB„vFP€””
±CáþZ,i·xäãèÝÈ>ÍÀ©aÐ¿yìGw6QYÖ7W¢uY¬Öe€S¹Æœ÷Ë¾R¡‰aTOó–;±U½çU½"9ééþ÷wñz­ò}Â•1ëhßÅ\žû3iô¥§&ãT…»Öƒ½7ã^Qhû=5ì¢?4£¯9zýñgÒ´¯&]ä*¬Wj®Þš¹/êÛqz«ÝËp^·®Þt<e~™švõ ÌÑú:F?þÑ<úë5MÆ‘kýc:ayôd¤lÓùkó´ñ½:ÆV*úš„W×´· á{j8Í‡Æù³dåý±¿#Ûë5§¯Ë  ØdÚÈŒTX;Ka(ƒ F@¬ÒT)‰0×"HµÑ™V–8D½å 	Üa¼^<mÌÚæwýaºJ$ôÓ:û±[@	¿ÿ;jØí‡t·^ñ¹¬ÑP•¾_¼{=íÎ§Á”ð:¾ÉCˆ¯ÁœÀÑN<‚«ö„rXuä&e¢E±¾—[“â¬&C¾»4“bk`îÆ{<¤îÆ.?ƒS™7»gr[Láv9…›éhãÖ·­xÛ»¶Á®U‘s»íŸò‚*¿þüáåßS˜»[d£9=[d£7ÇÙhT¼”þËGû33åYÛû•þøêç?n¡ˆ<kŸÝ¡7h#c„ÚHçí\Ãú&m¤s²péœ,ÜF:'	·‘ÎÉÂm¤s¢péœ(ÜF:'
·‘ÎéÂm¤s‚pé\C¸tN–n#kH·‘Î‰Âm¤s’péœ*ÜF:§
·‘ÎIÂ×éœ_V­ºÖ·F(ûclO/MÊSÄÇúnFÏ.oøwFÐ®>6?>í*A¹ ZêL¤˜ÃJE `\ÛLs¢¹5aH¸sBd3HaN0@5ƒ)~ .å$´aJWQ´ 0WƒeÏ«´¢€DGOúÖ¿ÞjÁ‰+©y4cŒVëB0àU6š™©ñ-«ºå¢—‹æ_7_ž„A ­|‹—c¢],ÂuuüË±ÐÊ	Ü•ƒvÌbv8}PÓÿÝ§ÿÑÙ7†?2•ì­q5hIs-i®%Í•bm…ˆ–v¶
-QkLKÔj‰Z-Q«%j%·D­$á–¨•,Üµ…[¢V¢pKÔJn‰ZéÂ-Q+A¸%jÕn‰ZÉÒ-Q«†tKÔJn‰ZIÂ-Q+U¸%j¥
·D­$ák#jM”ý¼¯ÌÄy(X»Ê-äù¾v%
ÛÞz™0¸¦ØcÚâˆ2¥PMlÑø$±‘uÖ}¾.’˜ÀŽ —QÓH[¤ÔÔª	Í3¸´ÂJ`3ìC@`@16ŠBF ÝE+žõ($±”®âò”ù»¾ËþF†²nÈ£Ð¹Bb‰'†…·×Ò”! èJš2B€(Å‰aÅÛh‰aç%†!Jóï'†oñ‚Ä°b—ÿ‚Ä°bÇ%†ZžUË³jyV¥Ø÷Â³2}eŒ›Nk3­ZrÖÈYmÂ®Õ-,F¨åm÷Ä´<°4á––(ÝòÀ’…[X’pËKny`‰Â-,I¸åÕny`‰Â-,Q¸å¥
·<°:Ò-,Q¸å%·<°Dá–VCºå%	_<°Xž×ôÛtæì¾´PÐý3;f®®òº;’‚U6>ë*ÈSAœ[…ÎÍ¡4fP+­!¢k«$4”dÄ¡pH‘t”qAõ.Vù°G!a%õÅÂÊü¦ù¢ƒu
–ÓE>™;‹Ì2]5´Ýþ˜•ÿªÒ³®ƒEq|Ú. $]eg1Â$ª²³Gd±}ÙYmYúËÐ³ÃËS14¤g•¯ñ‚ü¬ULOžÀZåŽKÑZœn{æÑ&ÔŠ‘h‰^-Ñ«ûnˆ^jœÔ¾åxµ	¸6´Ä«¡–xµÝõÑ¯Ò„[âU¢tK¼Jn‰WIÂ-ñ*Y¸%^%
·Ä«$á–xUG¸%^%
·Ä«Dá–x•*Ü¯êH·Ä«Dá–x• Ü¯…[âUK¼Šn‰WEû'Øzä-NvU6¤Z-ZŸkU$Ë„–WÀ³RŽQ‰ 4C"ƒ<ãS­áÀI,SJ	¥È¬ÒÂ0ÿÖ,6„0
·RìàY_û18VaÁŽÈ¯º÷ë0ùÜŸŽ–¤­G¢U'ÌùJ¸S,–;%(R®p§Á’P!O!B0! ì =^@Ëœ:/sŠP.—çbhÆœ
¯ðr¬©0úE¿[ª¼‚¼L•Ã ÒBëüî?Üíi«ÿÕï+f|ç¿ÿ©[âUK¼úîˆWUs?¼y‹o#ÝMqÖVËÂjYX›ZVŒPËÂÚîiYXiÂ-+Qºea%7ba5˜vKáJn)\‰Â-…+Q¸¥p%
·®tá–Â• ÜR¸j·®dé–ÂUCº¥p%
·®$á–Â•*ÜR¸R…[
W’ð(\íý ¾}ƒüDnpähI°Á¿Fûî…SsõÌh8Sý¡›ìiûõ_ûà\•7›ô#³»žâzë˜váBÛýŽî&£™š¹»´7;¦¼BsË{>>ÅmêÌÄÍ®‹ä†™Î0v™Y&X†Ñ$³„Í5sŒ$bRsÈ¥Bc„•Ö:—eH°ƒäö>ÔcÐÜ¦	=EÝÊ?¹o9ÃíJ*62Ëkƒ’BÆWxm”#)«´6Ê)õXmÅò´¼¶óòÚ>jF°â%^ŽÙVŒáá/Çn+Æ?.¿mÐRÉZ*ÙwH%kÙ`-¬eƒ­8hÙ`1B-l»K¥eƒ¥	·l°Dé––,ÜæäJn	]ÉÂ-¡+Q¸%t%	·„®:Â-¡+Q¸%t%
·„®Tá–ÐUGº%t%
·„®á–Ð•(ÜºZBW”ðwLèºÂœ\›4¥â28.¿VÙöÔ£Ùhâ%®‹{Ä­ÎrÊrê°0Y$µPKÅÅZ™iXI†4³ûißØ–Ù]Ü£âY×(Cý¡Ì3¨Šj¿‚nh§59I[GhDJ*{¬7|óÇÛ»ý÷/ß¿þ±3V“™³yaÃ‡ÑÄ]g‰Ær–(ah•²Te+AT¯|a¹h-Wé¬\%J(\¦WÊr•ö¾¾Ë±„ŠñOEjDõÙ³Û? .½f=ÛŸ~ºø$îóé%‹N.æÑŸšiÿ:fá_ÌÄ™2ïÊÉFw}£ŸÇÃXÍî/>‹‰¶ŸÃ)öè&
>2^Í»ë­š`¬%Õ‚	¬R™sÂ!0'Êb©3‰™°
 i•„ &8¤[Î¤rÖÕ­ZMÝS@­!Nì 7è-áÿ‘#ÙÈx¶ ²óÁ¬>ÏE7×‚jEtunÊ†+°–K %®`[.	ÍàmøZŒ{^>>e×“0î~>~åU^•M2Lâ‚ýòÈÙBÑß#\JÝ–çðm6­ÙA8qvH7È€›×vpúh=øÔ·5~zó_¯_ÝF;¸7$ã¯Ê¶‰FÞú´á¹6\¢—8K¸DîMÙlm€E`±eÀA`#ÔXl¿â¬Ïok,’…Û ‹dá6À"I¸°Hn,…Û ‹Dá6À"Q¸°Hn,„Û ‹Âm€E²t`QCº°Hn,’„Û ‹Tá6À"U¸°Hþ¾2æ³i/\L÷´‰áõò{•²Å½Øqâ<Š»ýÈ@²ñÉ"=r†îu1ç`9U+&q1‡”˜kdbã€Fs!kµ2ÐJ*–”dJbÎZ[±	”¸’×ÑU6çÜEÞÂ0:d7î|ænAƒË+ª¦³‚w%Ì6c™mœQ¸Z: Y5Ã,¨f‚ÙÊmimçÝ`(5Íìáwxq&Y˜Ä˜dëd°0›£º¬ûì7p¯àäìŸÑ_25lKW*%[ºÒuÒ•ZòQ:ù¨èÂ<çÁYIEÍ˜(×œ_0ûŽaúÕ³êŽm}•¡‰×e€Ä2*Å™æ„3Nm†ÓÚƒ}Æ¤P–€ÍV„“9æÍ1¨·Æ¼¤UÉØrNnƒ•#­YaAejÜ¿û+:^^@¾//8•¨b	!ëøXÝ¢­	v^Œ£ÔÈ¢¨×xq+¬œÇbåL¶Ùb½ä¡9{ºhŸ“{ ï¬5éZ“n‡d®¶RŒ³G_þîÕbÊ­Û]VbôøÁ¾ÚI’À™,Ôâ»ÊëZ³¶5kŸ°Y;Ÿ§O¶fð÷`?1+7O9s]6®QP
k©ðÆ«ƒ@°Ì()3JhF™ [¥åÐHç;§˜bgõÝPfté6n¹'·póqvÝ2æ¿Ö†ùt-¶ntŽÉZ9KE°—–¶.A£F¶n‘©µtÏ|ÙÈ™'îšÒl]•›Ïã¸jñ•ô‡ýY_ùÑÒqZ#õ/n¤¶÷Ž­öW5ÐZƒ«5¸.cp•9>¯ËîÊu,ÃVÆ„qZ¨TLY`¸ãZi €ÎÔÆ*®&–gT)	ÏêÙ]Ë¥¸ˆùåßUax³èšÑpèÿôÝ\‰&p´æ-aºNøb…ðÉå1Œ°b­Z[ìi?¯*Ùpu2×b™•Ó9®Ö\­Áõ]\…Kçp“Ð§h¸Öˆk¸Öˆ{êF\Yáºì7À2o«iå´ðÈŸio¾Ynˆ4BCpVd¸ÕN@i(bBAŽRþßb™l¿>?tKsêB1z~×b§±h;¹šqž´˜G›–S*÷gk¢ÛD£G%†^K	–rW`˜•3im²Ö&km²b­ýÔÚO­ý´¸ïË~ò@}?æU^òíºŒ+Ã¤±$™ÿ.3ÊJI9Î‡œ.…6s
(‘¢ÄÒŒcˆX¦™”Ð¦WµµÎfbu6êy•fV‘Å [¢…+1¸d´Á1\½Ãk‘xXÈ\ùŽmÍ­3›[˜ñcš[×Qi2ŸÅ˜Zù<ŽkhµÙPNcmÈý¤¦®®ì«··ð [™Ø³5[s°5[s°5¯Ç|böÞDÛë²ö€Òac5£Cf¨à™Ö-9Å\c-Ô`htfg"Ë ¢8ã”éy.ó8ùšeKø™qãûP*z62£Á•XwÁ<‹Í³‚áêucl%öŒq‚D#ëÎ¯[kÛû*MÕ¶ó¯ðâ–ŸÃØu~íõY{}ÖÚK;ÅZ{©ž½4Qv4MÙÜÅQo+µöXkµöØéí±ëË	’i#)±NH•1Af±Ê¨¤™p®¡ÃØb1à›x“ÍL°#s,Å"Ûè…A·Ë½Öç 8æjEÍbÌk±ÆR2P¹‘	¬fiHnl\$ÈQ™W‘äJÒ€?Hk‘µYk‘µYk1µS¤Åš”JlÍ­4sëÓç‡ë2¯˜ÂYšQ—™$‚m–‰±„+J3oNm(¤Œ*‚‘tLiaÀz§yå&ÁšzüÒ-½ûÿ¨‡ñÿYXIå¢ÚîlÔÌ‡Ýÿúãm÷nî¦³=ÆÖ–>•7´¶ôø †ùûð–VXü¹ôÿ•›^”îú³¾›.Œ±0ö½_ Éçþt4¹
»‹‚è[0JÈÚ-XÕæJ'ó´µ°Îka‘¦Eü;;¿Eå=•ÕÈü©Ìñbff™+sNÈ±:ƒ¡›}M.WÞo8²Îe—ÿ‹?O/YYãÝÃürng&îâ©}Î0~Xåüø;bÓói]¬ÊÌ/oýÙ¨6ªŒXÄ5,%@Å4Ë°2ÒYÁ²f¡¯¢œ
¥´Ë$6Z# €eTÂ8§Ð;€Zù´ÝW½ŸæÓàîêþ0x®÷9½ûÓþè.NéJ¹½èöÒ`
Â(%Õ€ÿ#Š(ç[Á”ôË¶šÎ#%®FŒ`€xtÈHáÉÂGìÛOK¡&X*z!š¢)HEíÄÕ~ŽûÎ¬ÄúàX1ð)yÌŽBq£é½?u&áÛÙóùBíþup(¢åCýòóÆC¡Bn@ëk=©ã´†Ç1ß™aŠû^ž×Û7<²ÿÅ'Íy‹àÂÑ¼4·ùØ	]­¸á¶<ÎQÈÉýkà_Ä9„#÷òVáh—ÞiT_55yjÔäeEŸ:Û…Œ]/l»pƒ#MÞ3‰½ÏØ&L›<3kòÌ¬É«b7žæxaÞdÚ¼É´y“WÅSÎíuaÑä=‹&ÛS4yfqÃš‹úÂ²É‚It7’n°A½tƒ*›¼jÙäÛM>iÙd“É&–l¶Éd]a[¸]¸öÂµ7	l‚ä‚pí÷›À@ØáÏÜ ŠåÂÍ¤k”¹tƒ·å¥kŸý¹tƒO«€…ñü’íÂºöA„kd°	îFM2ÔÄÊÁ‘#GƒOýÙ1Ó{eG_Êºb‡D›‹~Ep|öî?«m¯zãó_6óê»ÏîÊ²÷:€°Í¸Ô"Ž‰ÑX`š¥Ó’R+2Ì¡±S´ÀŠÊ°hä4 
í¢`¼	a9“¾›þØíÍ`nÃßÜÌÜ†„=ŒýZv¿ôg÷9	bq0È¥¾íöþ¿.úê~ØÜÓ>]p;ÂÚŽÆí^öXá: :ÂËÅ×Aq§ :Âhk±ä,ä˜zd\€X|ÔqX²–pq^Â…°îAx]ç¼Wã‘¨î%3fý»gå"Mè­§ìCxä>_Í‘{·Êñ]6¸q	Z.(9?…^1‡ˆ=‘¯a²Wý¼ŒÔðR’§–½ž«=-ÞrÚî?¯`djó
N@á9®†Ø:à0å
nMeX	…xf…Ç"Ê(° $¤ÁŽbŒvå<	\ ¯õÜÄË©š_œžög®ë—`¾Œ‰;5¦9|Xím'¨ø1Hå gàf®cFão¦glŸË•@ÍþDK†Ws\JÀ0¤‚I$<ÄâEb¿A[HrVH"§²&$ñoëœˆÄw>ÞgýS¶<Éë´¸2}xã'šZkÐ‘ÈtD)Áµ¢Ðÿ[&,Í¬³þ¤Õ"Ôb±¹Ì¸ÐšPk­”lW¾àÅIW°#‡ýr7ÍS:•¿*ž|>9pºn§qmë7ÛúîX5S';1£L*XT^þGD
ˆÐÖDX¥x	ÎðjR`Ái,Å«Üh½|Çôò½r‰SñÕ£íý|iùŸž×•“5ªÞ˜¿å©w. ÞžSiÇgÓmÌ¡× ûzT™uÙ%[æåo¿þýõ/9÷$Á3×a‚o:¦Ã¤›¸ü¹q&\$Äu˜àeë0Áó×a
Ï*ªÃ#ïCxì}˜äŒë0áö*®Ã„«Ë¸º±oCw¸õ’£¿¥¸Q°=qðcMàZ¨©´íýÿùö
—1789^÷QšÆîÄmÂ,j“4ˆä=i oxÏ°*„v™c†ðLySž1àÿfˆR;‰‘¤U™åØB¡Á(3\Ä°JjJ\vÀªOÕakw´ÏM )‡ûr·[Õ^´›}qn¸tÓßL°&Âp¼ûî`4ŸÎí’bD0oD0êQêŠ Õ{ ý{‰½Ú€Ñ­QÛ‚À08¿êYƒ
÷ýXøÞÿåd¶Ãàòû½]mAÎß“ú.B,Î™qÁ,±Të«ÕÙÎº„ÚŠ1F1r†Š Æp(…dÚRË)ÌlFT$BgB“Ì…ŠÌPIé—ƒ€Dg`žø"¸ìÂoÓ^tÃ)œ¬È£zíS˜^…4Vƒsâ½¢À&Wk1#Ì ‹½3Y ùV‡ÇHåÂ›¬Ã‹7qtU[t{2M^îŸZÊ|]v©„ûé?~ù!ÝÓa’÷åp‡Iå¸“œ%1&¹c:Lò¾Ät˜äVŒéðÈo9ÑÇÓá‘·M¢-¦Ã£n›'å»ê éó¢÷'wÏsä€X¾úS6mOg»=Ýò'Þ0Œ»Q<tƒi7Œ‡n$|¹æ«Ý(ú’QÉ‹ÛØà:ÂµðÞï?0éõZ›þÏ+ã’sä2UF„F3Î¡@Y@ÐbÍ,1XK¨‚šë2‹±#ÐÍ‡çËA?\æ¹Ž­©‚ïUH<X	BS¦Jh\¸P‹Ô…×Büf±Äo¿ª’áÕ`4„üûâ+Ìo„$Åº1Ã~j©ßç¥~S
ë]®@ù—vÆ*&5*R‹ÓúÅ«·¯Mfíì(ÕÄÜÙQ¤ö‰±òÃ¿ˆM­Ð®¥Ìb¡ßüù25ÇîNRÜ¨[;IÝ‚u"Õ*B‹¡ÿñóÛÉyÖv÷#’<;»I»»º©•†âBþ‘yY.ê\ib”$]l
×NOÒf|Rî¨6%árÁ=Ñ|†žù‰zŸl&Å«Ý¦al]­qÂmÆDá6c¢pÇ6hâØns8Ön°MžtÈFw mþÈTáF7eVû»N>¹C¸Á9ˆ›X•¸‰µ›À9Òä™I#Ÿ	i²b¤‰AKÍ›6Ù ´Ù¼â´É£M´ÄÛŠUá½Wç¨)´h¹»…ù6™O{¡®uT£ÞÝtªÆýý¡LRéeó/ßÜFÑjnû³”aŒ÷†w)>q3Ÿä3‹-Å]–ãšÆ×â®JøMóê§ïoám¤î²îóƒÝ$_…¸nã?WZ'×JokM-e†óÙ Ÿ!®%òË¯?¼y‹o#qwMêöCA±Ijœ¼+†ƒÎ7ˆVU"ÿgì÷á'£ùÌ%8P)ûö±}ùÛh«r›h¤iVƒ1¿"’üæ¶JGßƒåRŽÆ©ô‡ó¯)/b:½O9®—Íý³¼ÿoÉ-½<rfýÉØ¤<MEàÃëßß½L¹
¹áS–á±}ò;~â9Ph¬§²~/üMý3^ƒ6à8nºYö¤öw3³à›-yg'ðšsüïXkÚ€@92Ÿ<\†?¯‹HiÆP@È¬D†N´
fG­Cpn-’„9‰hF7ˆ+1£P
hð"åûâY»ùÿäÝnÒæwý"çK`ot‹:Î‘‰yõÚ„^;‹^¯h‰h,Ñ2°'ñ
ÍÒ·æÕt‘\
¶x±	–•ýÖ-ÏJ´¤¼<Ÿ6-ÚmÖäÑ²òòÎÊ¸«Œ{¡aÏ—ò7Õµ°û9ÔüÎ©}…Šk8 ¾Sþ,ÖxkT71ªÏ`×²oÏb¦žÝ`,¹[“G™$r×g,&[|©V[®Š°™3³ÝÏ7\ÊÞ;:!¹-¸ë²­­FÐDªsvXm©nl™cÙÃM¿€\»Ìáei¼ü³XØfàÔp>>†M<œ^YL¡eX,a†%•Òn4q„5)ˆ¨Fþ¿Ð
«¡äÄB®T„rÀvÈÏ[µUõOÝ}ï&Ÿ½íÔ}ÿ¥?3÷»­àmòïß6¯7B¦o	ïºvô ü¯Ã‚æÉQGÝ×ïºÊZ¿¦nz%‡(º^žzv5õ)ãtµ| ±‰Oý^kÍàóšÁ”‹ÄxÃ á¦ÓÛÊ±{bWÄnïænš$¼Ø g~´ë³t“M¯³ãçdÈY½Â-ØºÙ—ÑäLþkrŒ×TÔ^ý®ké>ì°ŽÎ«E,V1-›©¡ÐëV,3j¸‚Œc* 5Š"Â•œZL3F„×Ç
[C…#Bj 3ËMÆ°…»
Å-Š·åº³ÿ0…Ô¦Y÷mßLFÓQ6ëþ·kûên¢öÄý/V¦ÛŸ.û,>¹ ‰•îú³o¡þmHR>O\‘’¼²³k¼BkV“þh>íªñØë”\«Moºÿ3šwòÚ¿ú™u´#Í§ÎÿkØõaâ~Ë2¯ƒNšãüKÿSÿfQÉ.Í‡¶(gôþ«7ïs>Ü;[ó¨28C´šG5ètþ64€$l5‘ªÿ< #$ÊAîçÕË·g/ß˜7aCÇ(ü·Aßß€ó+üúYS×µyÆT@²ZÏç±ïÈÝqXìí/× íÕ uúÍ×+ø)Žà<>iÚÃ¥C2Ùá/P*˜C"}3EÚr­´¯nÑtnb^Æ$ÒÍ¡i®5‡šOBéˆ;×¥{ô€ÿlfÍßþ1éJÃg/ÿüóÅO¯Aûwn«ÐLËûÏ?¹¹žTˆT¨'ˆ½™‚‡ÞÑ.ÁC³t
ÕäsÔábÔ“B5©§šä,3ÖÔ d
B(¢P­Ìœ„œBf¬&ódDZ¨EØ!‚$Fx¼©5Ï\y–YÝ‚Ì'2ùÈÄ;Š3ACjþ*Èô­eÕé$8,Êë´Ž¼âýJ-Ìo
.Oæ+€™5`æ†oàêñæ‰oÚWÀdäXTyMäîu{[5éLÙ@66ÚpÂl"»o6“¼Ý>Ÿ»ø»-ÏxJ§è\Ò¼¢p©)È£o™¤!Vh12ÈUØd@!'¨ÄÂ*1Í¤£!‡ö0†¢™q‚# ÈvÝO¾ð»x¢LdªØ5Ð<RÌ¶?-€Nq¹´¾Y,O@­Jª-ÏîU¨ðî)…«84 ØÎžÁo:ß²™úrïÿ§¿èÊ£Ú=BÝ¢Ô|‹	Lœš¹NÑ:§ëZ“ÝØ#®—T^V}s“ :õCÌîvƒ©û±«ÕÔOw0ã&.<ìpÔ¹sC7ñžùQ\¸e(FrC¥®úŒ~”¼€’ß#aÞNM¿•icýÃŒ{Ÿ¾û¸Ä_Ôp–w`îs5õµtÅJèø7[™2þ×£/jb§Ë%	ÖBuáôx€xw_t”ÏÊwîñç±“•7Œß¬?XN¿Ú÷´?£Þ»®¨/añúÓŽ]˜cøquEü{ô¯aT.VAù^®R˜Fè#ÿiñðþÑ¾}É×Þÿ(_ˆÓW÷ãÞL³›¡›í59\19¸ôßèv¿6¤‚
±brA¬#‚#Œ¢L?¿^~ÂôŠ³%Ú³}´«ì•íñüí|VÇ›ž§6?6¼±â_Cêža&Û,…Cçÿþ÷¹º›õœ¯ZÕ·y¥ÆGy3ÇŽu¯·?äk¼¼Gºz^ã¦ýÐl¶
íÓ•y·à²C®Äc 3ÇDfZ#(ÖPZ"0ux8F…ÂÄ0N=,ZX†!“D
ð¿R¤-2k‘Y‹ÌÎÌP42ó°‹®:ƒ	¡U«P!Î¼P.@3ü~°Ù²ÒÄµ`³þá#a³§â!>S•³xnÏKn¼ÆÂ?ªî­¬i7ë2·ÄX`3éœáŒi"Õ`žQM<¦âZed’a=Ì¢JR% @™¡hYw+«GþÄ
ZïÃËw¹>üøê]àÒ‡»Íî³‘†îï¯Þ¾èÞ{¥ì³ûaÿ%íƒÊ!U÷Í«Ûw¿ÿüæ·¯z9¬XAUù˜^{eÞ…×¿Q¶m7×AáF_V®g»_&ýYÀVùôü¡8´~vþ˜O.¯Ì4±và:™šÎ¼&›ÝwÃ=ÊòÉ²Éè!`/>€!ïéç “†ÅÝñóÑ¤óÚæÃ¾“úÒ÷=dóÁ [’fÃ°æ“Çc5-€ÄôHq€@PÆóÙÇoCó-o¶™›MŸOéNüÏo:¿ŽVÌŸ/a•J¤äW²Üº¶ëW³›Îã2Oçãp¿íë¡Jþ–ŒçËí1‰WŽ%†,›uþÍ?cèzýÓ·ÿx÷áö÷ÿ}ûîÅËÿúùC÷ïòÖ`Ùòã«E‹×ïF¯:m Å_ê¹¾ñxùù[7¨áèëóÅ7¸Îê2P3‚KJ	Û^ˆž.!Z3P9¨àÿ‚Ñ÷šÕË?òäô9–	¸ý§÷¯žÐ÷Úó6¿Þæ Ñ»TÉð ö^Fï8}wbuÜÞb.ÌÓ{JOXãÅ}‘ý'K¶—ÇçöŠµŠ‡MÛä–©§þšÙîüög|ÊP+"þÀÿù÷ŸÞÇ'ZÜ!yeœ†^_é¾ˆÑ<	óá.RÖæ±ýÛ7Òøôkr‘€§ÿnC.iØkILùB&öA™‡”-S•ìåÛøi’”aÑ:=õÂ50j"“_#§!Ÿæ¯Àç«‡ÓXøhãŽó÷ˆiOž;oŒÍ½=ùÍ7}èÏ¦7ö9½è–?:˜ Ø&{m›f	xpu]0ªªç‚”oä#è¸qˆb¢ÐÜR,c¤Ö8iPF%«°tXr)¹•Ú+w¸ þ…@}o§¾u#ÿ¶ƒ‰_X¥£`·—áCYHØ/È£Wa>	Þüîx4‚y¸²èO½Ý=ë>#äLoÕý\Ü)~ìNý[¨Ü\÷ÞlùÎ½Ý2öå¬ûÉ½íÆ*˜ìÝ…7 ã7FwôeØ}Ègß›Î¾ùzñîõI=üc?ñ›þÈÿi?í2‡B„\5‡‚ŒA¸ƒwX'ÄÂÞæ¡ÎqŒ1ìzù~K¶†b¿/^ÝÏÃÏýÉhHóùÓYÅáe¬<us›˜‘¥ïÕ÷‹¿ÏÐÜqìë.Æ~­ÑmRê£eûöæíÏ[ñÔU^\Ð®½˜]']uHoBŠÝ¨^s´ë
æ×ÂPÙŽ ^3N3LjÍ”×Ý3Â/ƒdP;Ê,'R…ÓÄf3n­ã;Tö«â–;©¹¦™.Í~ßÊ¼ÓùpŸ»ÚuoñÖý—?S>0X¨–¼ŸâL¯,NIÈU>Bî”d€0ÇõÉ…‹ˆð¤‹Óî: DNf?0!x•À‘$ =ä«vIQÙéO<pZ<kd]_tzl áO¼ê-€{ˆè¹9V]Ðþ~ô^	àˆl_˜ÜWqþ]@m‚¨¡V9§µßÀ\“±XŽAÍ…¢š£hf–Ö!¬²Ô)o– G‘j—ÚúæŸ¤oÂIûîQljªeö¸$­U¬Ö£æ
xÍâ‡|jÂ/Š×+¾QA+çR¨«Îãèe ò¦¢«4¹éæz¨¼ÝÆÛVõ¨¦KÕ¸øQÐq#¯ýF¶Ÿ}×ý¡tÜ¹YU9åê.ß8è‡›e¡™Ê§íçd¾ÁH…¸èîç¾Êûz¼ðï¸Gë+®7ÒW¢ÓX¼QGk9÷'Õ$;˜	wC\¢ŠÖ0nnTG·/à¨GqÑåIä¢ë'ÝZºYK·<Ú.eíj" ¢Ðe„†NIÄ c:“NS"iˆ0@<C[(Î4€R«g4ÓÈ	ì’­ÝPôf£^PÔ²y¿OôpJc¹d81–syl^Ò±HK¼–ÍyNVpÃÆÄ<®|‹­Ýe VƒTÿÿ³÷®MnÛèºè÷þª}ªöñT¬6î—½ë¬ªÄN2ÞËÉ¸b¯ÏúâÂµ[±$jK”íÎ¯? )©©	RR·ÚÖ¤&vº A<Ï{_Ûÿ‚‘¤ËG©4}2wZ©zlfnZÔáZÇÇÔä±ò®ÖDã¢>®<’0:ÎµÇT[vá~!!ë™ÑLX" °Âb$)€¼‡ž„Ö@I‚Á>ð›%n-”˜Ñ)»ÈÆÕûçï/{åŠ‹ð¬Ú8¼Ðö]Ù42Û=Ê³ ‰"šL§Î||Äe¤\Ï}îÍr”Am}=÷>t[Ê¦Ë]ï—ø»pù¿óÌdÃ¿SÈõ:ïÝ–ÖC"DEOñïœ-ò„åjö)bNQw-Nµ,aRFšl4‰Yæã{œ…mÅä=§ù›ë…Ót€¦=°$9<p¡
,?ì„%$’ë°ˆG³ò
˜$+E ^~ ýò,÷ïOqrTþ“Ë/_³æƒñ‰ñ.ùcs_l§!bz5ûúL_5SãÈi)kyÂùÇò/äßÆpþj»Š€ÜäC<½›”ÙÿÞvµå³__þñï·ï? m¿Rc+½eµ^u}¯?'®¨âÆ2Ü·‹ÿçíÏ¿~d‰BGƒñ`øW–’<`|YÁ²T>{ûû¯}l“b ƒÚàøêÔÎ¨n–?'ä¥¨4L^È_Å®žÈ¡P<ÝKOäz á³‚È¹7Öai {`D¼bœr!¡T> ¿æAÃ Ö	¦7iFEÂ÷Í>Œ·Ø­‡@²Â'8¥X®e|‘DøZÆÇ](ß‚òuÊÁ´FùRîˆû5æ‘=˜û]Œ'-(brdÚn®x²²¬{¸cRç
5lÝ¡Ê%Ó‚¾*”2ÕU¡Œí{,Iæ·h'«ÒÄö=ZOö¯däC¬p[“9ãÌŸ>u,MEbéÓn¶7¬½õ9`•³D!ÂµdB#‡’N8Ö„ˆ@:¤…F)çŒ²z„Ðì‰«)ÓH+™*ˆ‡E˜ª0"ÝMnÝXåÙ´&×Wa‘*Ë”ûô<}ÔÞ|ùÞo* ”º
?›ÇÄYÃ€Ñóø:
Æ¨V¶«ÂZ˜gÙ0ZÛîS^f«|ƒqïe`ž/çÓ…•/‡ý2³ÛµŒÏgÕÈBc:‹@>óÊˆ·*æ$sã«°ÎÁÍØÙ"­X´íÅ"—qÆ‹qŠf1©ÃjÒa#Tð±÷{dÈ·Ù÷Ù•™%®ÊeY'TÙ'8Œk+VUšâ–‡5ÖVº¸ä¥=ðËmM†Ùtþ’ÝÜEó¢ºß,U¼Oçóð·Yf;~^ma±cFFÊ?Óâ·ê³»šO‹¹bñhˆtÑ·°“Æß|½îÒÂh³Þ8[Í·ò{S¤åRÃ»Y<ã8÷Átí­Ïn³ùÐ†-¾_dØãò,”»÷#¾-sVsõ÷ù¸8F'åýåá½žÌ£ùP•´´&»ç›Ù½èªBè†«g”®Ê8ÄUW'î˜¢é-&Ù/.•…1î¡¼ãé´{í‡²~ˆèÀú‹‰Ôqë=—~ý€)
ÛN¯iwÎ’¢Ÿ°ÀXJÕG©¦%ºu{à"\]Kb[õ®Q½ýÙ<ú‹ø$$ôø™fw’ÏT]çô“ (§JL9Vz€0ˆ[‚l žÏ¤ ‰™k.£¹5–€ý¼ÐÏý<ý›ô“@²›~26è'CT’jø9‹ŽÝèçÃ«›& õÏ§  ´‹¿ý		hƒÖ¸;}ÊâÌ%Ö*9×%§Ða9ÌÉó$r
=Ç=]µ«lª³nÕ®âëXž•
¨¤²˜b¬=¶pM8tdŒpJIoˆŽS(°…\’@uE4`®Rîaºï‹àý¸¢Þ¯‹š ?)ý_VlÚ/×1ûéí?nn–cŒ9¦È¼râÆÏÿ÷Ãõ9	À€åîyLÃ^\¿àGÓìNó»¾Ÿ:÷|Y“ ?™O'ÙÌõ–VõÀ{Ê*åËªT|ˆcŒ'2½øãÁWg¯â–ñ†½ðö#E›-"W/¯·˜0s Ÿ;[Vc¸ªfÒíÝ¯ú´©p¿|ùrýu0¹-ê½îá[œR­ò-Ž¡á°ìæ[RŠM;?ªŽ"P ’’î§Øƒ~q´ÕNSÕ}çÕØjm-üaû¢CÐA1‘º|û{îúSŠ,u8Å÷´hèÆ&Á›¬l?…ÂB|8uKÔÈ¶²QvsÓ´Oç¥Ú…Š©µ†ÁEL$â#gÞXÈÜCÈ4@ØPÄ–P.6Æ°@Q£¨”Ðs×ž+ÁÅo×ŠÜ”¸öT<nT<—@	«ƒ¤P¼mxø.âýO†Œœ26”¸éŽŒ©.zkÙªÓ
+¨ïh«,èZ‡f‰‹§öÓ9™ø8ùÚÍI^óUÍ$Ñ#½ÄT É]¬‘•	ÈH™“Œ¾*)5†@±'Ž`Î´–Â„<´0 ëÞ®oÅ‹¾•½†³’•`Ø{÷ê?ë‹ÃL¾ö–Ç«Ì·$t|Þûr;ˆêì2Bý.›G£B,èvS$j?˜®Uu»**²,F)P/Žô¹˜Ž‰Ó™=ïÝnn{ÿ7V§ËÊ.µW kÅ½ò2Z´¿²n2Ìî\QVo4‹øóÌ ;Ï—ö™ei•/Ùth¿„çTí‘î‹Óõ³?ÉÀ‹ÓÝ‡ze-ºY³=^ß0Àê!*¹\Kt~"E’<8ùÚ/Îj_<Aa°3äm¬úp_oÄQ{¼›|­ŒÞy…ÔŒ–âïÑ~ÔxÕÒ£@N—ŒVòÚcŠ€ßPhXš÷Ê!x ¨ÓsÙt†jà7È[i±Fð˜ÓÆcGwAnñÜ¢=àŠ%Á†qà B„Þ1±Oœ½@õYC5Ú„jº
©_‡êp Š"gU¨Æ”P-[~"äÊÑ³T7òéñÁšvNOÖYa:õqÅÖæëo°ÂéÁÑ1-­íç(Qá®î*/=<pK}1S@*…€‹yc½pPÃ ²å,SB	-b*öÀ³ÍºpK[&%Ù§/ŽŠÕ¼÷z\nC¡.¢.{ošrÁ-7bÝÝ°Ð©®àwPWé˜‡í_E—¼xl…\8„-’¼UÛÇÒçy,@¯‹TiE¡P;ÄÞlë™Ö²^þÅ©OW©ÿëuüý²TüÌåÑÏnV†~ç¦DóÉí]Q_~1“«
Z„=Ûöâþ íŽŽe5:þ²Ý¶Q‚cÄš+š$€W3™Ã+Ñˆ®Å¤úÑ·„{ýþ°µ«UtsÕ‡+~y‡LæÅ,êqpÇýQ;Zš(ÜvÔûæ}»ú¯_þã·àã#aqø?‹	RæM¦#©Mm=Ô;„”¶å¡‰Å™“Ûå- Šu)CzÕê_…WßrêÃÁ,ïÇ;cØ_&ÖÛ	¡érjG5ˆrÊ!Œ¥Á#V ¥h4€\!c$RÊrK`R‘Ã˜­™…hrÑ'	¢n(ÙíÐM `ëb*èWu/b¤ˆ¨›p’.¢žŒvQO £DÔSÁh£Ú	F…¶½xzT·
«©NÚøšÚmhÛlÂSCÜôªŸ¼ÅÆl¢ï8‹œ}Ôj ˜„N%‘÷ZY!\À_YB)’qéczW	 !ÜZÈHtL™½.OMè»úóUXuï—˜¶»&æ­mCËÑ–à¼ü3îa™ü|oB{l©l _èN×,©”ðhnM„¾¸;(×“À?gÊHà3ÁÀÀY;äÏ:èÜ‹!1Ê'¼˜¼ü¾y¿ó©kOZ¶ã½v7D¸_~¬•s÷Zæ¶¥a¸ÑÂGf4Ôc¢¢Ç
aB2î:-¹ãÔ9Â`@Thƒ…÷Üc™‚V¢}ÅþU.kãÚ}íkBÓQùÄëhï
Où”g“:×FÁ'E…½µÒÝ–#¨XWkÑ¢m…‘’v-UH¿|×-ó|ånj›Ò¯_®vm™G°ÉöÎëßpíüþÒFNTtð„#%eãz?HvÓ8?g‹„”ºy‚sË¢Ñ½êDv ã§É­›j¬ÎpÃ%áÞSc+™ÑBÄãÀÀ²¥3V´u*@5ˆ{.fZæ}¼y¾+¸áÛp³Û“K¹© 5K)œW7¬zÊ€ƒ;³yPÀiV	
8ÇõaX"Ï)<ž˜'ÂÚµn7Éót_Xœ±ùt–u,ìsvy#˜%RI¨¬W2"X—V\Ãh€¡‘ 1aÄ%	vÄ â)ç\ íöêVXT,«vm´?3ì UTŠ‰f6Ê¾b}ôî«¾–Rófý€\D¥NÈEóuãO‚+ÅÈ'•Š'|‡¢R’ÌS#P=øÃ¢ÆCÈ<ÔlQj!ÆJÏ,÷˜pl ˜Æ°ÔÊk+ å•5:ê©\júáL•yc¾Ù˜Ä"’Ü 4%t¸7.2O2r p€ÌóÈq*™ç9.2Ï‘¤–yò‰‰-îf«X÷ée.D‘öXÊ™°zÖ`ìò ®1È4Ñ9BÃïœÇ^£}žcK,	kJžµÆç†:É†¸•Ê‰KQU´IÂv+§â"¨t‚ÐÉ¸¼ÚõS Aö”"J¾‰ªÜLõO´Ðc¶ÚîàxÈ=½éÉ½áÑ”éY6tyÍê6z—ç€Þ,×rlhyÁJeŒfQÈ#Î/)4Y“AÖ¡
æ•²J9‰‰ô’Xƒ€ƒˆñûb{¾=p¡©"”œoä	d¬êÌ$eŸ-p¹H3éð»øï>¼œHŽYÂK
Ñ~œé¼ìGÁ™‚Ñ·7»Kíž^˜ÑˆbkÀV!Ì±'ÑX4I"¥r… i(–Ú
g5Ô,â<ÀÑ¸I‘¶¨ƒ›9›íÏud²¯—ùˆ8•¢ªH¨„Z5‹’¬¹¦“ëÀÀÓ\D¶+8TŠÈžHº©‘½`¾A§³Ã
´ätFÀ+
ˆ±åÒš˜kÏ:%P\Èçèè¬´VX:à”VÌ!ÄÍ¾¢™ß(nÈ†ûÝÒ
a4 ÂzVs´f¸Œ¶Q†íÂ‹È’Žx9?rœHp9MùñïÛ ó¹9=é*«€Îª1¡e˜SŒ€@ÇÃ;¨,gA21D($Œ”  ¤j½µQvTé}v—eD`„‘² YÌcÚÿåôÛXZmr;0³EŠò(Š­cèþ¸7Å½[ä4/ømKÆe³ÙÝ*÷yÜœÌ÷ìàf®ú«Ém–g‹‡•Ì®Ë˜l<Ìò"1œ*3Çõ´š•YãþùV</¦®®Ï®~ûÇë_~)F©YL'÷¼ÞÜ²ÐÞ2½œžf_Âç~UùqL3¤ÏÏ³ÕœŸ/a¨ÌKf5èyîV«('ËÄ¹žŸº‰¦ÆáÝiÖm$««+è†Áv=aº;þ?0¸!ÂIÌÑºê@˜$Ä…ï¥on+¹%I][üíœ7gs•Gðœ“·0zHÜyÕ—&£µ6ÞÖ¼¹Yøàc¥ÆµÒ u­Gó¯)9yBÛEË³-8ò­¤=§2'»°;]bìŒÞ„+A±öÖyÈ‰ÖJ.°GZCÃ1ÆÈ*$±‘$HŽ Ü«Š	)µñšr!™eô¾ 7[åX);Ñ…ß	°aö’³5Iš–búÛÄµN2û„ñuI|w"ün””»áwª÷Ý·ê¶Dô–Ðþë£<¥Ø±s•Îû<¸ŒÎ¥pH
hŽ­‹Jc)uÕmLU+™6L…ÓT2j™õŽ{d)Ú‡ò¯*¥á‹4;Ê/–ú|£Âý
ü/˜ÿM`¾L–Ø¹„•ÏÊØ‡Já3””±oõ]„öö Op‡ ÷[~dŒ.=¶ î¼²Èù³ÅcFn1Ú‚({ÐÀ	Ž;d«(D¿Ì…&ÐO).ÿ=élÚÎ_ÞÚˆx0
ò ª…¢¢@XkÆ='Žx‡Œ€Rj‚8eRÊ-QÌ3GÒ(p"œ'F„.û|h/$äû%!¤*	A`‹„Èu‚º“‹î!†tfy rD=Ä…†<rQ=1UŒ'-¯Ñb:1ò	vã(žGõ‡aL uN ¡© œ!d„ÖM¤!PX„bµîÀY—ŒR¨` +ûüçáÿ2ë½Í¦E"þÞeõóþ1¿ýã¾ÀÀo_°PIb»²&ûZm 5½q±@Q~ñÄ+wŸ_72Xg lØâ·Ï>”MÜÕ0¼ú<’ø¬À|´‹c	"j†k=P–¢ð@|µŸÕ0®ršƒÑdèâ#Š©Z2Èoc„[õ9Ž+dvàïŠÇÅ†¿œ° Á¢d^ôœÚI‘›y_"f„aYçî>s RÂ}T .!GVUá'4-:6žó~qd[ê3~|÷¦¾»'â¸xk+=œLHÚÒp9åÎïºÿî‘½wì)Æ«—·_XeQŠp›¯7<ÈVa¦w“<+\îš<Á×š>ûÇÛŸ÷îÍGþir!°Ã„•-%û%l¶orI˜ù Šqa^hð“ˆM³Ä†s“Òð{vûhÊ}{6)sCûÙl˜ô-Ü·kõ!ÌŠ4û)ï¬Ú2–/y÷ïwïþíÕGäc`,FhŽÜ{£W‚áŠÑoÕ#Ä
îbªMú´#pUm!ð„k5Pc¡ã„ `(ÕŒi<c+¥<RL–XÊ½ƒÎè¼pÕ'ËUñ&WÿìæªŒoqU€ÀUÍWø	¾/·ÕŠ«¦«½­vR}ˆ­¶M8ù$Ùê­Ê±ØjªÆãž¶××f”¦M¦ŽÈ&°¤žíZ·ö¸Yc¬‰«P×ôK{©ÒýH¹±ñõVUºFÞÙºC‡ƒ¾ÆB;tÙ ®'õCiuãžíâŸv*Ë õ–H‰·Z;j°sŒkrÚ
-wFJ@¥dÄYN™…NCæ•VÚ¶Tvi3½·×T›4póÝ”»´dY½…©v¶°4\i‰-éÀ½Mzi’lrG›r4Ðn>ç|'Übœû´£3²‘50¦‹_+Ð!Žùlùfil½hH»pN„(iéõeFê“{VKµÖ1Ô¬³¨¼¿£3ÂFÿ±.£ß›½ª´ó mØ²Å`e-^xy]×íYÑ½_Ür¯ÞÉUn×½ÃT‹ià@iÖÕå™8í´›Ÿ×Àœ£ ÒÀjj´@pN¢ï·
{JµâÂxn€ãÞià±ÁX:h*©ã0?5˜³TõQóp­æm€¹8 Ì/*¤VpŽZªžœQ}tó#Á9#Ép~þÚ¿oàG¾[YôÔ’‹íqû?‚6À.H€î˜þj$<rØÈƒÈî ÓAPia²†p¥™ãÐPiVIÛ(¥ÿærK¿/‹Áï‡ñ×|º£­€áXñ%‡u–¥­a?;“‡æ«Øógÿúí—¿=Xax£²¡—UáãÛÛ‰Ï0†$­fègRb@{7>SÑzíe"ˆdÕpj"$b)Æ‘ïÇ£¿8Ébö›_ß¾ùŒ~(^Àú_xÜ:ñÝeñûq0zCÑ%käë0fï]3^JN—q‹ýªâ€yïf·5|1‹M†vqq÷&ÓøA¤wØßðÆ~êO_õÜ£­Ú‰§^ÓÅV¡ko©ß©&8ç$¹0E’/ì„ñÂª>–«
”$8„Ü„ÿ§6ÍtØHlýçÄÝnXÜ}»¨Öÿ?oþõ#kô§þ5R±}p÷¨æžKãÈ
KISNÖû†ÏÞþþ+dN?'vÔŠ_úp»c_qÌ­+dwë¯£aŠzgÕ, ¿½A1sÏ5nZà_M~^ÉF£ùôKßgã|ÖÊ°a½E)Ò…ÿXI‹73R“À'ãow5­›ÌZ„»±¡Åmh0ûÜ4Ä×ûß‹ §F0D@:¦1÷ŠY`†REp`m†A#AÄPDÄq´RÄ!„,—Ku¡À‰˜nQ`²,o¸A	£r=½ áœa²FáÊQ¼NWN]Hpª
«S¹‘‘à†°ƒHðÝŽÎ‰W·ì˜l¸¥oSZë5~œØgQNíYeÌ©}6¨sb·
7nÝ¡J¦“ú®8õY¹kUhqûK"}žžaÂ°WrÏ¡Û¶ßàÜI½ÿJvj;5OHv¡â•³ú
i§ ÖÄ(¬‚L"¯,·’%…€Ú9äˆ„_PŒ	ãLImS+é¸HQHÇ­	ds:K){±NÊc¯§ÍÂLUD¹g#Çd„Áµ(ÆÒ’r/ÎÓE}R9é¦Œ>	0ƒžJ-½S¯t ?Õ>^2Qx€#4?}s'¦<ˆŽÇQ,%Â
)ª©'‚ F à4r…X{É14ˆJ¸ Î#¨¥AHåÚãª4 
JÕípéªÐ ¼Š*T¬
u@•‹~çø¸BAK¥Á•hzê¥©³˜3¥:ËtÍcó	wjð5"+/'Ô²œ’µÆpé¼æžI.Mè`‚„¿i-Úkí½ÁŽ³²Pfž#¥ ì­4^ÀEïwõyp£"N¼ÌÂ­:›â¾üÏAM*ÄÅ^ôž…³<Îæcãloácõéü-†_×yv[®ð›"Aa®fŸ†1Ýáó«x[fùm@¼ÙÜÜöòÛ€b³ëÞë¼îöˆdën´1{<ˆ3ŒË·~~¥tŒÕÎ&nÜû²Œÿ’M?ÍÂËteŒø`Zœ•Ù‹ALµX¦Sœe;óÛ“úà†ÙŒ‡Y8õ7ãläŠä…åýYPØÂúd†ˆ¬%3œì“¶ Œ¯#‚‚3PÍ@„ €§X=âAï—g¶ZØ,@ñ)àöâE@d—òHa"aÍ&ûbÆuP¶ïö©0EöÚ?ð™b]š£Í‡?Ü,!±Ë÷5OmA™Ñ¯a@•*Rk6¿r£ÂWÑ_X
ÜŠö	í¢i'åÈµwdídt“§­íw¸²ÄW[´-ßoZ‡â¾™Oúã,ø\öáÑ„û]ÃM°­Ž—Þ|zãÆæ®¿ÀûCÕÑ»h[ªÞàâäã a«¡„*&) YÂ °³½¶ÐQ	|Œ^¦š+«m9f…‘âöt‰Ý$n+‡Ít<²È³NÜ@W‰äœÃnÄ­µ>ã¨[çÜÔ' nòƒ¨[jxÊé8\ƒžãÉr¸Ä]‘¹ÔöKV—Ú¾Bï»Ty^j¾ -Â×¦c›÷ðôÞ1Rx~5÷|ñ¬œ\Ö¨dªïÉ6§LM¥³Ÿ\Uw0Ëìäq
¶9±]ý âY'¦I@ 1á ·†K@,•–*è˜7;h-„Öx	˜Àa%äÆi¯%q^
Ç÷¨ÖíLâ«”ü+›Ú·nêÃGÕ³™™ùëYçÄµSÚxR†WÎézæ¯Ç.¯'sl’9ñN2‡`›5E –r­y°O©*2±ýòHtÓÀõÂÿÿöd²ÝìZôá…MyÛ|àå4ê-C»¿ÔšáÒZ[nVdÇ¨šqJÒvcÌÇÚ}»g¿¾|ù'ÆXÕ·™ºp®o¢e.MŸbÍ?$[iøìå‡?þôú#¼Æ€º«ÓµèÖ­6óF·)?|{Ú»¿§×5¤;¢Ú·xVE×·á;ÝÅ¤;€{nŒÀ¿0¢çœ“^©¥ó‚Qä±Õ1gaÊÈFÆ9IGŽ¹=¡/ ^à[Úvg·A„ÆBãë .U G 'e·ÙÄ²öž%	áu0Ç‡p:Ô;„7úŒáOÅa¤‚Ñ‰’ô6¨_ Þùd÷²Ú÷¨Àþ}¯·ÒÆ¶$­{W¹À!#%8¨?J9
gé4¹é*çãÕÑ2öÊP¡U˜kf¬Õ†:­!' ‹‘²
)­œÔkªEÎ¨ ó +á,á×¥iY´+ÜÔq…EÑÁ¸÷¯·¿^=Ûõ”¿-Š«^Ç&q¬XzaQoµ°P©Q6¾)mPq¤«—YØÏÞ,óù5uÏK»”š­-!ZÞ†Wî•€ŸÄøºxaê7.¨¬UP€®±ÛV@É×Sê"À°¬FW  `’³Ïä¦_œÉ–©tÏ¤t×3¬¯ù`Ž‚ë:1¹©';/ŠšÑÒ´mG-vjV)d}ö´äT-B.‰v‰Ýº®³×%lQ„t]Bw’À,2Æ#
(•<¯c)çÔzQ 1ýžqF:à€2HHe$U@@’pÞ$ÀM’ îï"	œ#¹IÃk.Á•gJ’ð´tçC ë	sšÐ¨ÉèL.jŒÇð¸¨?N©þhPÔ=Å¬«Î‚¬báÚÖOÇZ[Œ1”Ø
#±hÂœP™kÒÌ;G,“{ÁÊz-CÆÓ–tä·™fâ#ªš%[7fuddsÐÜ}­˜9ž_Í&1¶mvë\^ÖxxKl4Èù¢îþÖ³*WZÍÜìº÷Ë|8ìEWÚ8öl>‰qöª|¡åD>«Á°(i ò«elí&K˜”À<{ñeðiðâïÙÈ½ø¦Îd7ãÀl9Üé	Ì¬%akæ.%¥»c%%0×ŒFƒÎ=…‘€’äQ1ëù	*:º[cÖ×|0ƒ¡‚u1ÆÌê¹ÆÎÛ¥f´4EGÛQ‹
71y2Äåü-Sà>½È»\4íØÞŽgæäQ×±ëOU†üš -â•®	êL½” Ê*
áÚz p¸Ú5Òé(Ö”y£¡°ÔEÊe”£H;­5µ1 …À¶N%êuþÔKlR¯˜w§IÐMWV$ ¤šj	Dši†<-õÑù/É»8³ž‚|5ª:“¯‹úè¢>jËÈÑÿØÿ)øßÔs·ƒúŸ¸ ÷éTi³‘ÃnÚ4tÍVù°y;J‡ A´@BI™“  ¨Â‘×QnçÂrm¸¥+¥‘„þ·/¿é?bv‰H½×ËÈïÌ£‰ï]ÿ75›ºŸÌÅAŠmÙÈNWÒ€žu“(9Ôk\„}mO^óþI1Š{oL„%ç%­1§x·eF/âõt;˜ƒðÃ
9Âó¤’ÖÅIê‡¢Ï[i¦~z÷ê‰ÓVoam‡W ]QqšÕ'å‹©¯æ¸óC®0EwÕeàf8?_S`Õ6_Â¢ÏÇ<ìð,ÊBMÛ²zf¦LÎLï&y#ÝXð4nZÂ'Uê:qM¦5-³aÒ>œ¶ÚÒ®n¬~Á'Òö,Èô,º¼æ€noÞ·ý0ÖžrDV’ªj:€—`£¤²ò´@JSjr
;ƒ+g HrF-BL#	ü…01Ðn_ ò…—¼Dnñ´[k	…ñK˜"Î«¥0¥i¥¶yIºÚæÂL(êà¼b&©YcNHQ4<‡R”6+¬á*)Ã|û¤%5Ì’½œ¤²Òƒ×Ä¹'+gY¸f‹yt…Ç#5_î¦g	ï*-ŸBh†@® 6NC
¹C1½rtOò yG¸ È(f©Qž†‡ß ¢ï5„ Æmée/|ãEiÆ<+<–?@n†,ÏL6ÜObÞÇ–«v½—ýa@žyÜµŸÃ=ûðò§¿•¦´©›•)Ó÷E®ó!ìbÏ;•Ï§EMÈ«ðN‡Ãð«,Ÿ„ŸäÏ{C•Ç8½ÛAëyÏ†³½¡q³Ùr¦Ë§?ö¹p:{U~¿qÐ…1­LÒç¾†áf=ò»ÓV§ã:Ötø”g“:6%áDÈjReÁ”˜ïfSˆâ˜uo­Ú@Ì ŒQµÜ `¥¸…‰öËÙÒÿè·×ïŸ—ÚµÊƒ™”à =“
Ó¨û}7CÍp)j›ÃöM6šd³Aîô ±½U12"µñd4Km: ô¦)ytcÓ›á×Ä–“2è"±u8-všÚÖ™lš¢f)/“ù%5NÝÝpý¹ðíªÏÉcPš¤¾æÙí(µåÝØ$¨>cÓ¯^°ð¦þê_“wãë`ì¦ª¬ ™Ö|2O=_?éÔÎÜp0ž§Ð i³äI|Nn82iM×Õ]&	ƒ}Pó&—¹(Ç6µíà©­C @:æ0ãÐ m!NR(×˜"ˆæŽ: ˆ&p‹…ƒŠcì 4Üsâ/ðl Ýd€í³G8òüˆD´:U ¡H&Ñmq£t}Ú£pÀ®~O'à€’´›;lÐ‹ÎS•ëd°M¯%+lÓgIÛõi•?·J[t©2ÇÝî)d›N÷\²U¯©lÕ«õ[Ú¤™mº®øf«N£Ö]–´EŸ*mÕmÅIÛôª’Óvý–,µM¯]mÓ¥Ê[Ûô[Ø6>·ï± ´é}vïÀQHîSÕ,îO÷Ù^õ)½rŠyÇ”A4À
„XÅìÇ	(ÒÐJC‡ÌQí=Ž‰ß—@âU\M6))iàc³‚˜.ù}ë­nÇ’›õL6ÎUàe£îÀ•îÿ%“¨<À–õj½*Ém™&b1úyQT	`ª’Â ™l¦yà‡÷T5úBKÔR[vÑUv("Éªôl;¢Zîù±ye1èÑ—á®(”Ïæ»þ,ŸëYSbÌ¤Ã¬S&š8Ô=±>æ %é>êˆu¼@Ö<>æxäs¸… pÌ!áà¨‚ÃqGŒBÅqG<ê)¬#G6
*ÇptÔá‚€sÌñÂÏq‡Œ‚ÑQG\MG3TGñÓQÑe)ˆuÌ(¤uÀÏÇmÔæpà;µ,ÑžßOñ‡º˜h/&Ú‹‰¶¾õÅDûp&Úú«TÍïo©_Þ!.IY[±!1µ¤µm)fKjÖŠxµ£UmN”| ÞCØ®©eÒbXXZX).‰£!(TD Á8qV#'$Âc=ÓZpÏü¾pŒ‹
¯
¥Z™£
!±­Â“dC…'@wÞÅØœ¬Ä£Jþ>€ï˜–ç‹ï¢Ä»(ñ.J¼‹ï¢Ä»(ñ.J¼óRâ]|ì.>v»‹ÝÅÇ®A'y¨ÝEKùk)í¤«ƒ!èªœD‚KH™ÇÒ3m8ƒ„Cž@ª g„z
0ör£…Ìx£wŽyÏÍ¾*–^½íÝºáÄM—y^šU’v²­ŒÌï7¬ä‹ÅL31Ì%>'¡›pÍž_…¦ô]Ñ+téçY6œ-=©BòfßÎõuà5/âƒÃ”þt&±šÄ¾”2’ÉÖŠHÅ1Œw+'Y¡[‹€	ïK¬ÀiJüK˜ZqnZ:)€ŸˆFrµýk+=8ó/@¸ƒJÒNêYôÎO¸f´4{ÛQSl‹VE&Wo?Æ‡€»°‹€òÉMÇnØ/wV?=ñ	fÀe«8ÓŸÞþò1æÓmJº¶«êÐ§© Á®>¬CÞ¡Om5Éó
7Ý†Ät“]gPä±D’Ò‚Cc¤“Œ2J²\2Ž©Ã1óˆRÌ:­Œ‡€C8sjµlo´éÛ€"ÙE(vƒ"Éñ!g`Í\9G"!ýë&(¦›é	;yÛŸé¹Àb£Êª,¦Êw;ññhñT]`2qæ»ñ²sWÔ½kbúÝ Ú¹+ïÞ5¥jâ!¡m[S;À~Òá~eã®µegE.v/‘DH@M)´Ä	D)²À[$M¢w\#ÎPl€öZÄÁ>½þÇô¦Èâðá?
 ¦ ±o«[±,_\U…Ø¨·ŒƒT,—nÞÞ²ÆÌ|V«ÑwWEÿÞ;7Ûë¥…{v0›Õ]oVüü´åŒc^Ó¯%$ìqŒAˆP
6c8Äp·c"d#ýB¬ÿÇÁZù?È—1Wµ8»Üê~q€¾é¸¶K=¼xq'°]Î¥Þ±dç'Ý8fZÀnc§¸|®µ}öÏp+ÓÆ´Ü;:5¤¶ÞÝ‰wé$Ž"5'ƒÊ×OîNgjj“ŒÛøóPÀ“^‹­3ô8€mè¤¤1EçÖ8m„È)‡M˜qÈIä*ü5!!ØT}žvÐ³é“¹z  ™´'VE<d>”â¹ó>>sÌ³ŸugO>eÐ ŸTÙo7
uí›–¡x?&uí+Ž)°>BXB:$È`Å¬Ü
á09 ¤´’„õFd1À˜¤Ò­ÃŸÊQìEÌ"­ÀÊV‚
V*Â}ÀÕbˆÇÆ¶™Âc/Ö°p»‘)'ZA×¤!“´‰ë'ç"ët…Ð%éðúæŸÒSz´yBÅË`ù „±Á=ðÁ¿‡¹Ð@þ€áÞ– iÃ±¤Ð 4Jjk²Ä  Q¸ãB‡ta«1ƒDyL”Þ]®ôâJOÂ•Äö•Î7®t™P‡§îJ¿Èm.õø
ÎüR?¢<ñ4/õ¨Ž~»…KÂp³#­¤+Ç¤A’jáT4\;L)ðÔH…dÊ­,€b‹ ²Ð1O’nö &Ô¤g¦®¼¦Zi˜â¶Ôh™Š1Ã•_>cþïÜMïŠÙ±ËU©@:ýÛ¬² cx£@,C`½>,L)»¶‹>ßõê]ýaëOrñ‡qOIeãømì«ö[¶Œƒr±¶Êù‘ÒêÉÚ3Ç?$l=€H‚4QŽ#€` ("‘RV*‚†<È!‚aíôLŠpÑê‚Œ´œ#î7Ö\€«p±dà¢”­K.‰uàJ«k¾¸.RK;è’ç]'"ì÷PÔÒ¢°aÇL+Þ-œ¬UóoÆ¾t¦¾gñbìœT=P‚nÅ„ÒAL¥£ÐÒhJÀ9#5ÀQ,Vˆ
vR2®b•BI,ÿ©·u#ÖÝ¯­7h„º´Þ]2,]âê×(ß]r+T	¸U¥§)Ýâ,úÅ+yëÝÝ,w£ÞÏãÏƒi6ŽjÐo–Y²N›OiÇÊ÷Óf “õ>Î¤!À®/²aÄÄ<¡F>b‘¶ÅNT¤í²Ä®{µE®»®7«’&ÜžŽPá½òÆiŠó‚†‹#)BJq€H/¡ð@C;a5Åê;¾YÚºYßy³
ÉÉº…J‚«Æ»HÊpJèŽûå‚oín…èÌîÖæô-]ïÖ#	Z\²O¶HÐ§¡ú<pÓnt–^“åKhyçb-­‡ÆÖ*0šðŸ±*&¡Æ)ÁŸÕÈ;Š4w{êµpÐZ‡¤Tì­ô÷ÁÍmX¤ýñíë²neï?Z½ŸËŠ’Ñ{·VwSnIYs©®)ÏGQù²w»ý”Ò}uù¤«Õ“zÏ>üçO»î½¿ÌVc
/Ø˜sÂÆ²˜‹ª—½¿L¬È`Z¸¿^E©ÉMÍ@ÃàKØÞë<Ž0Ÿ9?®«‘Â³úáu¨<<Ë|þEMÝÕ³¡ºËæ¡ÏØÆ¼§ÙtÖs¹ùÛÉUJ›©N¿>^¼[Ì*^—Vgo'Â09àj¨å\J	v#g…qe-¢q
×"*Éªx=Â”3ë‡Þ‡í¸û›"¨ò‡Ã1¦’*·%¸tW?m/û`pa¬“Ý¤œIì¾|šFLaîÝF.Ð…Ž*ƒYÖ7YèTÿØz[Ý„ÿ÷Ñ5H0XÜd:†C'¶Þ%Óìi9‰ËêrU›aª¿½AÉ5nŒcÙÑ­!dæ °&Ò©²Qw˜FZx0Y ¯5–NcQR00á§ÐIAÔÑ—8i€–Ä`¢¥&ZëL/07aZ,ë-oÂ4"b¦%¼êª'() s¯ÒÁ3 êîRàwÔbà!@}D9°%b'ZMÐØzÃSûl€yº9g¿4ÝÀmÛoà|çÞiAIg)¢‡ÕÅƒ®å5_|&¢ü
bÚ0 ä1Lƒÿ‰ÐN[ì0·?‹F¦(Îkâ¹…„–áª1°=ð¿º$Ÿ0Ã¹`wavá¶Ýï­€Ø¿¿©íØÏ
¶Ç-K€ƒ÷ºöŒå>6ŸSþújŒÊ¾Ìb‡‘&óˆÚEŸbäåkX2„«Ð8ÖCxÞevàïŠe|™W‹ZŒð>P©Â«÷¯*cÜôc1òÒ§=öý¬†[BbXÂ¸÷eß¶C÷µ÷*—;(x‰Ê‹Ža¹°c•0ùi/W0!›™yá«f=íÂXÅ„Î³ê:2™çWqÓ´„j6ˆé½û1°œ<¬pÇŒSŒû#7ÊÂv½úÇoaë>¹°‹„¿Ë]}=îk2*L(»ûwž/ïÆ½oUXMóÃÛ,²¯ÀïâCGË‘âæÎÜ0\[a«to¯Ý8ÖÂnþàÂ}Ä¨â×1Óë‹‹èœ¹/p6
;}¥>«Á0F?/w/t˜Ììïïß¿-žþKø3lÆ|¸¨(öWÆ%Tã«ÿúãõò„œ” …o?ÄÚR1R`Ê1®zç„Ò.wò/báíuÿ‰ ¢¢jå”ˆr”¤Œ_ÝNýâ¢é‹ó÷,íL»âZ««<”s1AÛ‰™‘úäž-&“€ƒÍ1{ð¡yÐUJ›ÁïÃÊÇD^’0øáñ1Ö`v[3³v	Å+ê·{a&ZíSã¾{G+_ÿÚx¡û›þiæÎÆÛl'~÷aþcµ{ÅÑ)·/0¡ø«ãs¢TÈ!¬("%°uÀ ,©GN)Î=?æk¡	l	E’D9ó¤ÈåÕ:¦ê@ôÂŠ.¬èÂŠ„‰-V´â4;XD;X‘ØdEIyªw³¢oÕmùø¼ˆˆ'Î‹4W^´àEŒ¤ò¢#îh[ÔAªŸñAbuÆ S¤ÙíÈ» i]ý”ñb+QÛ$ÔÃè$§˜Ð‚c‹Â­Ë<CB €T9N™´š‚‘ÊQè”AÑ^Dè^_:{áqÓ 5H-WÃzÞíh]š |ÞS…a&BtïÕ¯ñië¾®\éöUiBáëžÅváÝ`U„ÏT¡ŠV•ÞOÊô²<#ýðºûèüåöÎø´c¡‡B””H´C¨êDê}Ûv|{#¦y$wùHÉ‡dè?¾³ñ¾ë1ÝÝ¸ã©½P8HŒW€Úð•{1ÄŒ9'¼¥á˜†ÁCViÍ-ŽYû÷ÕÕþ..H´uAâ=:N¼Éå!Ât­àF,%ïâŽ›ãÌI|gåæI.Ip~—d£kqçKòˆ&åÃnË"W'ä kd÷‹ÓZc `Ì: öF©Æx8$P!Ë•Kˆ‘ábÕ BNqø‰ØWÞ¤â¼QªžŠ;p"šÊ¬ïËvé“áRW(MÊoæþaW[¡Éª¨Üzù­Ê]ÐÚA;‹›'SUÐfØ^KKÈ’‚éÖ·øBX;ÜÅ¼‹{Ïú¾ÿÞL·$¥_I[µ|LãÈ‡+KZ'­zæ~j89æ*	u¿¨TPîx*gÞ,” ’9ªx€Ã¨RÚRl¤Ð#°¶îG„’LÈaÌ†ºk©cé¬`àBÊ[ 9€”?  ?E xpéäˆ0Ì“Â¢ÐbU´e|’œzèñ—3	eÖ /âÀcÉ,– ÄLøOá€È#@¸'Y÷®¢Aý­Ý[l@:,wéDÀ0ÌÌæúáÝ›÷ûì®H†9¯Ú]¹¤òÝÑ ¼¡ËŽ•´0©†£ˆ-,	–›Ü/OUŸ~ËBBXìÚ2E,$ï¾Úô¦ˆí]_yó¨©¹6’G_³§ºø †IâÕº­Ûg›†[Lõì¬³Ë½H	4Ó»ÉæÛ©ï1¹é»é4›¶égsô—¿¼+BwÛÜ[Xrãñ=’%w¼¶IÒ`™×ØQÈ4áÐ1ï„	P³):¤0–†8,<ÂÆxÃ‘Ã\b©­g0 .qÜì ¼ ì +¶v·.ìfi°kÖ`“J îØ3¿Î
b»”@|ˆMH¹rØãAljŒÞ&Ö6:LíÂÚf/«%ÖóT±6e¹çºwj4èlßêšÍ˜)V1o…D^ÈŒ^S«¨¥¼Ph‘pPpF¤$pÈ¨4à°öû
¬üÛå½Çe=Åßœ¨Þë±ŸªY>›|>u—Ý}Û4ÄõUìþïÿúí·Ggà»p3öâ÷–õÜ×‰Ð½«Ãn½Œç_K_èÉPåñÕ\_ý;ìvìn²iéô\ðë€CŸ

0*9Ë†ó8›ëÞ`áÁ=[<¢t»¾ŠØn]ˆÝ§G½û?oùVMmgï)cÜ0ü¬ç¤*Ô›A~;××&½ 0búêTíW¨RÀÖªœÜ£òFŽe6}À  ˆ¢jaãð“ÀÄ`=N¬_œÜ–‰*|÷¦>Ò§£PÝZéáÉ•i»ZœFƒš¯MVÞ8\¢©í°­¥Ø¡èÙfe¬NÀ<‹×ýÐ.·7™ÆÓ^‡ÓëŽèiixì0!¹Í1g	¹rîÛ=ûõåË¸±Œó(a†£u'’´!ïƒßšOòÛû“ [¨¶LžÍÎNmæ´ê„¯›´³Üš~HØÑJÃg/?|øñ§×Ã÷—>z¥ÓµèÖM¶èVìÀ‡á85qÅ=½b„ŽiÇŽ¨éïëØ´1ŸUßNG	ßlh¸ÈßØ0½Ñ³þøñÇ·¯?‚kÜðq¯Ý¾ŸÕýÝûëÏ;î^ÌÓ‡Šëoñä¸iÍžSÞ­]R@‡Îr@ø ^+n‰ã’c $
2 FN`é±GN$€SWÀ9NJGÁExòr ß’ØnûâÛ®Î€!Ö+Æ0JˆÙbÇéz½‹$ #í+þžJhö#è$	´Vã|Ç"A¢†o!$ëWä¿u‡¥´ÔoÔfâ º¦iýÖ8x‡.‡=°Jú“zWédû!à€¾»¶î]åö‡tÞ‘ä¬5Ó?¨ üõOÜ»
ýO|Ï9 ¹G—Öë’AË»ø{N–¢ï.P‚®U{!»†€. G(_ù2$"IZ ú#â$žaÏÎJ¸w’X!U (6ÈJBãLiƒ|!ÅÚî‹‹ù÷¿ÿÚ³*W1á‡F">«œÇ]6/ySnI!
ÔŒS÷2WJžeÃOƒü*&„ÉÝ¸÷,þð>™o8ó‹±ˆ/Œ¬¿üùÝï?¿±z¹;Ù:@âõÜkÑŽ1ße„)Ð†ÖžPÉ®²uÂHL;’ÀÖÇ7ýåê¯ŽN²òþ§w¯žŽ)~ßbfí„Á.úûñM=©­û¬ëFM+HÛuô‚÷%KýÐö‡Q†oÔjUÛÝ3®4NœFœSµÄ›í›”‡)jó‰™¦¤·?¥þ;Ná4x)jp²·i|Ç+¼éüÞò¾³ÉÔlšßÆÚôRÃ‡¢­T
 PÈ`C ÀœpÈ Ry zéôXr(BJ¶ÜPNÂ`ê‚¶‡£­ØBÛ=%Çˆ ¯Ws„.øZ" ^UBê> JW‘=
ÞvWoYûBŽ'ÆÛÆ¹‡âí1‹Ž- µ_N<]ˆÜÕïO ªÚÄÛd%M+ÕÓ
»èN®r:8§³ÒÝÎïã®ùêQçÉA…²Œ#Ä…61ŒaˆÐÀÆâž
(m’Œ1+B«”²ZŠ}á`oYO‹ü¨jXfÇ\.±Á-½l¶Ó%}ñ«˜¤4€ŽùÝéógn o<Þƒñ]T…/ÿVkš‚h£Ð‹`{LS˜„_ofáA‚ƒj¦2_HpQ+7«_Ž–Nj±Î>B—‡uË·°¶ÔƒQ7³mºåž×']Üù­Ö˜–åºÃÀàô–±<Èÿý¿þýú÷ã=™WµC¢°Û¢¦Û§»,^Ìä›¯±ë.·t'+üÄÅK«›³Õ9¹ßì&é	Þ;Óc•‚p*, X‡(‡žhM4#ì‚ð¯ŒðØEá^_üÍöå¹Ðˆ
À[4b•j3€ÅÌEë4‚AÖ<Ý…œ&Hñ;hDº ÿXD¢«"!Úg9%‘hLÝ™H$J‡{Å1«Œ?˜ÓG—*rÛô¡ÓÈ‰=LNÈ,ÏD<]’”÷vŽ6þ¿“î¾Àtål„Â¢€ÆÇx‡ƒ÷†øˆŠ±tŠâ4Tzk°7Qi	ÀJ!¤œôšAa„5ÄxÌ…—Þê9è5Òá÷Øj÷¥~¹ªðým£Òk0¾y¾ª\û¼°”õ[¢¡ ìÉƒk2—›WÖé=à×½_bÄþªðŠuyý4•=÷>lÿóeq›Xp7P¢ðÊcã¢‰É&ƒø÷pL>¼+:_•ÞÌëzy[ÔMé4-æ5Ã¬¨6+³,šös™FãÜÙX%ÇÅ†Ãb—udÂõ]¬“8M,ÆrRJVîu}e$Ãÿ«Éæ…PÄ”;»øWL6 ×é¯ùÇì«)äk0éßB¿ö+øVM*©Ë?œ£1&Ûs´Á¤Þa¸ÕVó”4÷äc=-¢=¦ùe õ_¨+ø³¢GÇ>ÿxûóïïÞ½ùÃ?‰Dn6¶{â_ÉKúÁ­èßÖQ#?P¬¥t UV:­²Ðr	u¸µÐo0“‚J¥$ÒÌ!þb(–†kµ„pùüœ¿wpÆ›à,Võ\6À™ È·À™pN‰ýY¢ê×~ß:87-ÿppŽtêàÜâ;8çip¾€s8³J˜Zå¨áxÔ$ûA*PÖ¶œKÇ	òB©ÂM€XÍõÚ‰T˜`À1³áÒ…Šb„‡„hŒcÉ‡öe´»€ó7Î’ J1¨‚süQLÐ´œÃ¯7%g"×íA˜PO´D'VÄªÖ|çÎ]="R—88Ëû¨ãs«;ì`p>ÖÓ¾Spþ5R»—ÞÔþÃ¤©†–ïšÃöè*t¬˜Ò1€ytØ‡¡7²^‡‘çÄÒá	/,†)h
¹ÜXfµû¤ô½•D
Ôdæ_îÓIrØÆú,ÜX*Mû~Ã€\O_‹£kéá	b)YîV›{QBŸ^	ø2ë$ç¦ä¹=–r¸MöÛÃŸ¹žžðÀƒA·uòŠ³RÐŸîY;l¢š*¦)÷0'æ†(Q é„ã<5P ¦£ÞZ* V-ö¥y½àNîðTÅ*¸;I°†;1áj[Ü¹èWOª_î‚øt¸s½g;Ü9ô™­qç©ÓOˆ;§×=Ÿî]ñÉ’Þ°@¾ˆ(ä™bÎ€gÎxãa¢…Q\r%
 d‰ÑTâUæ‚;u†¤ê¡ ”lÊ; µ’¹DB–hÑ[âÎEuxbÕ!ÆžwŽ¥Òkƒ;‡?³%î°ó–wB­zÜ‰Éfg¤gsx.¼ÂBií`O¥ †‹Ì	á¼V8Ï ¦%Ðy¼ÔÑD‡FûnYø3 Ãp0vEB‹YiÒj<e¯å–.[4~mŽ<“÷2ï]ÿ×U?¾ÌhRþeä¦7®ükìpÂŽHU²Â7d.©¬ªØd)©V›zÑ°=€›'ï¸â¯è4lÅ³N¢Q:wKÔ	M<ç£§;®ý©KJ‹ò®Ih±¼žë›”×öaI/Ž¾GV6rÁ@a¤ÒÜxÁ%D›˜WSA$ÖyF5B[«€Ö‚½“”Òøv_²_±OÓHˆ`[à+6À—'úˆÜƒïEÍxZ7N =øIÍØ
|[=ó¾g ¬¼€ïQÁ÷èWäV‚Rè,…†=Ä2¢,ãZR€nñrÃàH8ðÀ ¤C“½®¦ðmP·ŠTu+¡(fo®€¯À|-|BP[‚ïE×zj7M&ÙÉÀ÷hºÖàÛò™ïi€î´ÚÑÐU€nä»– +6‚Û%DŠ9s=Ãca)ðRaŽ)â0`•cÖa«45Âq¬Œ·3à³"–I„É=@öãZHÃ`4É¦jzÿÝtÐ+7©!LbäcäÀr¼û\Æj‘)ÏÂ-Ÿ‡{fêòÂ¢¸x\ñ¬«ÍgÅ¶Yï³š²ùlÍÀxÝ{9ŸNCÓá]¬?–ÃŸ³ù$Ž5»*'þ2@É`–g/^MÕ—ÞçéÓÓ™!,~|\/Wà³ùØ–uÍ"N¾zóöÅ›¥%õÅòøÔ%f"ë¥Ç @x©@¯äª©2£¨Ö2@”ßW.«ƒÏ‘ïç³Ì4œœÚñ··o>?©ªc›=
Á*yu(ùú|Ç;oŠšÑÒª´µØ©jþÂóÌÎ80ó$U€LCªÅÐtnRžAÉÞñd)é +Ÿ½ýýWÈ>6Í$}…ã¼õz÷ˆò‘ÊñÌ*çþÕtn	ú€G·BoS”ô
IJà'Êb&9æA²¦\*¨˜AØöq²Ðˆ˜ZQ¤rR2/´ü„ª÷ù7]HÊ’¶ERÐî2pÔõ‚KˆJ²îN%˜LqãÝ€ît!þÂR€@í‹>œ†¥4ÖzèÌRŽ+ù`9×èKâ³*<æ¬’=V¨HûKò’Ôq“ÃtÈy© z5ÕÆ»Žç_M€álè6I,3“’vdÈRƒÖ-‰Jg5°„0Š%ç1]¤–†S ½HZÄ´E’Î·ÔB¶Ocó¾´6"Æcgbæ‰ÞŸÙÝ,„Æ½ÿ©F“ÿÝºeîzÖ}P7‹¤&&~øä¦c7ü#k™Ìó@Gtà¹ÕÙ+³m¿ðy¹Ò`ágž»Y1‡H–JwÏùtmNÏ¯*3m7³Þ³{†¶`OWñ™37¨aoÆxÆ˜›Û0g@½çrsý·2GœX1z9h¼-òÞPÝ¹éIiV	Îa–7îzìòa†ÅGs(÷YOJr…à&¹”î$WsAÖÉÄÑ)­B®bù•f_õ¦°"€>éŸ!?÷*ýâÝâ”žŽnÕ-þ`æ%$m©ò¾¿±fX3íoù)6RÇÛÚ°“œjúØù€|Ø£±@«ÙmÍ\‹6õ-–fõåS=(¾{õ¦_”vK§1ß`qøChÄÖø;-JñG£ÂÝ’ïû7áž[ž·7ïwœ7®ÙÒ£sÃ$¸1z1v¦‹óÜæƒßñX‹¯¯|YÚ|í»×µŠƒ•KØ˜î†	Í}ØÝ_>£ÆÖæ½ñ³<¦°ªm4úÀÄÔí¼Ÿ¹ºriÞG¤¯iPà¿ÊsenkZý93jØôû~XOžMë¦[¶knµ>éŽw’wNìvŸrŸ¶#¶^;cb1¨1w&(¡¤ÄB}±siEà»ˆ.µWÞÓÀI$b^xöEÏ¿}ÿ6*Û†.ª§J’©Þ›¸Ì†:Ë|þEM]‘¦m¼9JæøvêÌ Øˆ÷‘q½Æš	Ù°÷,<øoWÊ˜lZðÌ@I_ÿüóÏÉÇVMm/zÞOåºxì<ÐÏ0ÁÍ¸w“©ÀÈããC×Ú\©Þ4Óó@@wOf5xY¶—Œ?Ž_Šû¬Æù2Ÿ\ ÇWB§~3U£Qœíë¨¬ô*régEÑØ,f’+Ó¶Å‹9/øõõÕ»’CWˆxèS†w–©ä&C•Çƒ8‹[9ÎÂŠå”0/òõ&sÞëÞKcÅ»*G.~D°Üm%G®—¯a!XÕ@2„%j¶’–å9úô‘˜qI†{??¦Ù8¬?©™;¥WÑÖª¥Ä"ÚQâUc9™†‚3;n¶ý|3wÜÑÒŠâìõ@Êèh¸\=?h&®E/§ùñUL¥âÀ&ìÃ²e+žÉ[x.¹Ü¼Ç¯ãéÝAbƒ0‹òl¿˜Üþ«¹]rO«xQŽTX×tß3#™Åpû%|˜£ÉG“ïc=E³ñlT÷ëý“®6izÈddj½gÅ«÷Ë>ˆQ}Îoú>ç[úÂqÿH1ž®H5b@ l>ÏÚ1,dµCÔYé±õÔ[ÁöT¼””r%Ì‰CZhZ#o­‘@«}yñ~‰++˜Ì»ÁøVÕª2}ƒÇòý¾l+ýjÐH7ì`(Ä]`!W‹g”|)›nãÀ™bó¢õ{÷áÅþ]¤›-SI”´åßj<Ì®þ®¦¡{ ¬yIP
~7î½îýãý/½\é˜‰"þ¸L§ºþ8žO•½UW¨|¬¾87UEß0VØçñ ÷*+;ÈoïÔiu€‹µ'2š…ÖOniýÄn­Ÿä¯ŒA áB“¿áF“êý‹í‡“Ûß>³×åÁO&8G0°Î]±ÚšˆŠóc¤H'rÓ¼ëÿÂçÝÒòº$;÷“k0˜6]:;Ÿ~ö¿âðÿÍuZ4,&S‹ç÷³=ÁdG.^7>{V7…U£b.×Ëÿ¼þ:Á"—¶øgý"NA ‰@±1/â›½¶/í—S\é5´Ý\‘a´šîu'Œÿ`4’ÂRÝÂý‡\BÈh&€Øc¤~¤‘Š[èexN|ÇAáG„3…£<üjŸÅ+Š±oþù[”e?E„¯Ãª¢áÂäƒh>ØÚ3~•—Íîh¶ Ëª¬„Ü]±JÖe °_ÍWÎ9hT‡¶_¾àí0ê«Mvòýýå»ŸŠïLêÚ¾×¡m=j†¶ÖÑò›Ü÷ŒWàöÏ:È•&~–ñµÌ²zqë¾Ý³ø×0½.{}»°-/ÿñË/EËo×Ø4²qbãWÓðaNÿü&u¿Æ¿þ+±í¿Ôl”Ò4Å§¹jÀ9[pª«nøŒcÏ“/'*·¾¥ðÚë¬÷Z†–‘¦&M¿íGÄ«iò%œ“~u£0ŽdgšpO0B+è4@©0ÕáÇƒ Mƒ0H¬’‚P(¤qÌz”0o•s$¶9ÞÃ9È†4‰€”hÍ…‘F’TÜMW™?ëè¦$0ÖÀ}4Èù±Ž&WÇb‰Šìô£­ãobÉ’*iÑ§ÂKÒ{U	Jz¯SIïR¡,éî¹Ë)<_:x°æ ÜÒM÷	ÐœÝo™îìN#ýxjlµâÔC5¦<ª\¤óÈbËœeT[¯¨Å˜0‚$…˜z.‚ÊÑ¨›qï£<oj³=’óª­Ÿð2Êjk¼±sQaŸgKÅøÉ—pþòpO]MJï†JéÂáÍ«ÀPüTÍòéÜäó©{|Š%hªZ‡HHÑºZ	&ÖŠÄb›Óœ,OãE½sr¢Åké£°z;A·*‰¤ÏKÕsBMËË,|ö«”Qæö'PàüQÆMyò¤Su>¡é¿üíMsÓ“P‘£DóìÃàÇT<pI¢_™’)ÀE,IYCc¤Ôr©¼ð\{£™áAk1˜à˜¦Å±
…)@©Š" Í(Ü\P¨
_‡á0l^å‘pø¼”ªb¸GæsTKÜƒö‰uÛ0~B=È°'õ9k„3;![crÂ,G¥]‰¸a„0ãå”SPÞIa˜#ˆ3ÚÁ[x»Þ€†ÇEýáé÷ú»–K
ðø Ó=Ç…1¢ê~/`Ø$Qõ¿2˜¼ñ˜\¤ßÓ£®àí“š]D¿‹è×È—âƒÎNmQ¨’ç_ãN¡ºùWÛ­äM	ÎÝùe+/MS²³j‡V¹íŽåZ²3Š¸i
;;5%Ù{”ÜvO#%^‹­k—KooGÚµ£èÚ±ã–^£¦Ã¸·c×]E¨cÇÚ%žÈýéx"Àcêø0qžYK¬ cjœòÞCM°—Ê N83ÄpÌ=
²—ò„
íÐ £½SôÐû×#†%ØHTÃ eU]›Y(!G.Ê·ÃÄ ÉÛz]4OÍÓyç¤]ýr^¥ü²q»úÝËmÚÎÌîÔž\ä":ØìH‰"ŸpšIø0i*k„‰Ãú‹û¶ùQÂ8¬ÿûäƒú§,ÿü‡†·LÌt.†H´ÊHÁ­v^:ë„R)­E–	è 8„¸Ó$&[B‰ŽPÏ\!bênbz®¸¸æ¤ˆpØlþø#ÉVˆ˜…•m¤!G`¼çÀo.ô¹8#+ÄÉÅÖÉ/¾œašñAç¦ÊNI]yn:éDýn[ÛN‹Mšä,ÔÜßC5–Îªç®ä‡×çÖïè©¢¸W8ÿ<*ïÌ‘ú3›6¬¬f É]~›q˜u~r‰Äƒ°ÊGœÅÔ!E=ÌiIñ”SÈ„8Œ¤×F8' gÞxå(qÖîCKå±û*ã~¼’³dÅ6 ”°|€S Öx%à’ˆÅv:¯¼(¶d–â>éâ3Ë3Òa¶f–ç¦nì¬ùï¤Æo©!¿hC¿u}æúÈÇÖ&íý©Ò \hë£êDõùèC­0YH)#$ê‡#ÆSŠ”)þÛpQJ;É…`Êrhˆs
 ìvoýÝ}Í{7nì¦n6¸¹íOÜ´Ø¬±q=ëÏ¼©K¨ïOEúÞx}°çûG»î½ÎcŸH‹òžŠg.¿Ê|Ø³ù,f8í™l4ÉÆ.fYýr;0·Å`Ã»ÞÐ…=ŽïÌ}”˜î]Dã®u5TÓðŒ2?ÍÛ2?ÍóÞlÆP³"žëeÌþ˜,	øDMcþÍ+{]ÙÁLÍfn&rêœ6V_/Éù¾<©RÈè"ÖØ¹÷ZÂvÎQdÐfñIÁ%b½ü$8%«žþžu¾‰‹?¼^éPO»8?iª¾E»D}fìÓÑq*<ÎR¼©õC Ÿ>7Õóõ¢6ñì›É$åüØaãêV’5ºÎòmq¼GÔ¾'«²þnäÃ¿FETšØìÙ‡ÿþHâœÞ²–ûØÌTÎRÌ*Ö^yt³A'ïøÝ2c—N¸¹[I¯YéŒv–Eé;vkc•¨tãß¶­æáÃÚlè%¾à(†¬Î‹ìÍßé×Ñ%€ëªÙ³0‡¿½A1á7í×®n¬þÒ\Éë‘Ð=¼©·#ã™®Oˆ¦ûAâ³óÑ¤ZewÃ(56
²àçæ¡>ÏLfÝYÖ¶TøpHxGõZpM…aÜZ£ŒRZé­¡ÎË,RÚHÂ§‚($²ÒïËdQ2<%ÝP2ÄíT201Ý*ÂL$FëJ†ð#RBÜåìoÕ ø`jzš!Ý´©oHî·Cílñ€ú‡32P~AÚŠÄ§-5íZ·6®‰Zi4Û·6ùîPY¤}~+ýBÛö}ÄùÔð®**R-Å+Å¹Z£÷ªÒzoj$3ôYDu0B¯)$¾[ëýcG#uØúK4ÓÃF3­é:/ˆ{µDÛöÚÎ½YZ^²ý…|÷*‘sË<¯¡‘H#öÆê:ÜÑWRŒ@Ø*£-ðŽ1×HêÃP‹ÂBÃ!Þ‹öªL?k™ïÌxûS}ù­Œ·[c,R×þt¯9-©®á·€lx2Î„ÄUƒ¤Ë$ÃwŸEþÔóÖ4VïçA¤øsN$ŸìÒÑÞCã”>Üßîüò+b<6Ì <Uá^×Ž ç(À@ã­–H2*0CŒá‡@
8“BîÅåîß¸ûÅ¦Û^s¼û7½ØŠ»ŸnÜý$Ä˜´ºû/JæCoÿÌtûŸ“&·£¦ý ù)·à`<˜t­ò]™/º¯°žrß#F0—€cíÐR­tCIbd C€5&`*VÚð[¥€¶ûsß½~÷²¿¸ lo0š]¼úË»*óñ¦~[kü|[?Çá.´óY|ƒá£[5µ± gž™l.úÙàf\V¶˜Í'“¡
Ø~;™\øBï®bMÏþupbÙi¶²Xþ`ãå«·×½ˆ07™.gŸ]œè«byøüËË¬0¢†•D{êÈ™[5ÌFeyaŒ:êUž;ÎòpÉ•wôì*´QöOo±ÞØå_²é§X“#lÓ	ƒ!g®>Æ±­vÓ±Ê¯oùí<ðýìEqäöÁožQR…/ÊâÉžIAXƒ/Â°`Uô"LÜK>5à5±ýâL÷‹Óœ,š„S÷t°ic:)f-C›òƒ›gÅ\ê/ÄÝ÷KÍ=1yaY é-£®*~}/ß¿ùH®Y3ìéÙäüµ¿g½÷WÜ¥£mR,I4Ù7èñ³Û ÓøÕÖÌrÙ²^½7½›äYi`iðDNrª<eœ‡o&ûò6ØÅ\>
3*nð6^4—Ð8oÑ~4Ð³”æÑ’5Œ‹4–¼¡é¤XZÃw~4ÈÚÍÂ]˜Mg	ßãl6Lz“gçÃ··W“'ïî^µž§ÉÊïÀ·lö¥?ÏÃYÂç°=w#Û¢å±}<Ñ¦ÿã?^¸Ü”P|½«<kå·/þøùÇW¿ý|ádOË0ál^,XîNµúl¡WŸ˜á ±I>ljrhAØm6ž¬˜éÎÇ²F1Ø6u
c†¨€D*+¢R!„Š¡•C öŽˆÔHª ¾ðñoœ£M>ŽänSlä	"œD²ÂÇ)IÕh7¸jººèQyW[ÁÑ9i[\ç!yºže/5?p€D‡:¢ž¤ì9_oR=-¾~·ÂuŠ¬(kœ¾]Ÿ
¹o×ñžå'ö[£û©}¼?½ùB HõS«H©]V"Á7æêR#2Ð9Åÿëi
)YG.rÄN9â Ÿî²„Ðyâ] ˜iÁka±×Þ`	ŒÚ;m0Ž[RÎYÁ€$Lb‰÷Õ®>H–(öcY‰º0w”Âž-ýÆ©êð( ­GQŠ¬’ï˜s0‰{/,¹x+þ-™X©»’²“”šÒm™cß›C‡O½"/„‹,aäÃÙèÒÿ1<½_>þ8Æ€#iÄ`ƒ=Ð)§û}m¡pÒRâ€d8Ê­1nl£8Š+"¼D+a­Tš+ˆã\hç­Ùçwy¹¯SÔ%(oÝ×øH÷õEc’vcÓöN”§¾±»JüßÄèVsåÈ¡W÷çÑ\èñqÜ(§qÜ„ÛY!†Žk!¹ó‚*E¬§F(”Ê2.sj`^A¶/}aÔŒ¿É¾ôÞÄÓÙûç`šÏÕ°óÖÆ®!ÿv‘M êÊÃ9÷œŸªY>›èDu¯¼÷…zhÔ÷éópß?•½šÎÇåÏâÍ?°‹&½,<e4øk…(á”ÞLÕhÖóÓlîÏp~bÜ->Œo®bxë<^™¥ºß¼ÂÍ?œ‡ÉõFƒé4LmæòYåÅPy	jÖûâ†Ãøç=B}	XÑ‹Çê³Fìòó±‰³TÃA~÷¸	È%&ˆ­ÇÁ9Ø]Ø†bŠÉ>AÎ‡ÕäáG1Úðy´ôŒ¬=ðßfP@êâ…3†PûìãŸGÉ®‰	wÕÞ‡šä¶£­o}Ò„Dº¨€þêÌ‹ÉPåñ¸öË¶º¥<Í|†IÞ4—$°iÎ¥8}ËüÍÛ$ÒKoy†Éý¦yÂ©ùró]’ì]’ìuèøØIöþjüz#.K(Äw<ñ°˜ñF›Ó}dö/á¿^Fé©&z;pùI6ç5MïEË[m¸©ýí>ëSùÛðÞº©w&w;÷~èšZ+k§hXHzë×c‹YSmT“îþj‚-Í¢èUC+ÕÜÄúá¼ü]cËìsc“Ïy8 ­¾~Iš…Ÿ6/àë×‘jÌü.ûæF›Æ©Ûá0J¾Í¾¨©OY£ýÒØÄ½Ò‡:Ðï d6/À}Í§Ê4nêÀ7Ž´Šûñþè§lÊŸƒ<ª5šš…›¨¹IÊ0“¬±MžÒ5µÕ_HEÕØ$³‰ïfÔØb<jj‘é?M6iüäC³”SœMòþ4À×´qf«¯÷Ølšy«òÆM›ªqÂq™6¾ŸHÕÃw–Ò,lIs3;7x1ÍíÝpŸ7ÅªUÔH5¶™;?‹7sãGZÆ7IÍOE€r	`–ëá7µšm¼kšš}ªºsÞºS£º#ŽsÍogj\„¡A¸óºM,·?ÿÿÙû¶.¹m$Í÷úyô°#+³Þéíî³²­–5+ÛÚ–<ãÞ “¬b’l^J*?ìoß Hæ¥*“	2K%wíìŒ¥@0â‹>Ô<Kë¦¨Øè‰áš;ûî4‘zåÁ‰bõ‘ojÚ±í:.ã‰Ý02ƒÀc$°#tBÃ£±ãzL\Hdš–D&cN?BS+xŠÕÿ;Äê=ëN¬>0Mgo¬Þö\qEÕn¬^Ü=äîv¬Þ_ÐCœ*Vÿ'%qx¸h½oN&qøÚ¢õS˜w´þOÍþ;­à^Ÿ.wúU¬CÐÿ¬ô¼Bœûà¤¶}hý‰ŒV5ÿD'ûD'‹àÿ)édÿP× ;qþ“›ÿ“Çù§sÃþ=}
÷?…ûŸÂýOáþ§pÿ¾Oáþ§pÿS¸ÿ@Ë§pÿƒ„ûOÆp¢?‹\Ÿû–Å$âaLàžE­È`67¸Á8	|B©G¾kRÇçvÀ¬€Æ†c8áÿÛ=G£vxŽÿëç1žã´¾OtÜÅÇoïw˜sÎ:²þpüò	u“Þð‹uT¿Ih3ƒ—Ýó#‹ÔÂNÐþËÇÕSµÞ2-˜»gj‰g‚št;®î¹¶cJqõŠä§Jø³ÅÖM+0‚‰G»¢½æ2lªâ³v37ýÌ:ÊÓ™u"úý³Äõ‘ÄþçŽîK{tÖiŽ$Íy>tBŒ‚GöÊ\*XÉ±^Õ/Sâ¯Z½¯R÷®^™þEªº‘eÈ^.}„#ö\‡bŽFöy¯}<¢×Ãµ¥0WÏî€Ä±Õãa"Ñ
–â<põKÖ¨°Èæ·"…¶eF‹/ŽMË<PÃ³¸a¸”0æÅf»¶GBâRÑ4
¢È9T£òX€ÕQ-À
oÈ½Xmâš¦·X]ßpŽÓ0N¬Oå º•<AÖ³CÖÇTòç¬î1|ó`•,“kS&Õ| j7E=…^Zÿ×$¨±¯ž«àì(~ì9îÉ4ŠúˆX V]D\Dwñp^ˆÿ|<ìP››¶cñ8"$¶9µC‡13×tlø!69·ãÄ ¤™á¾¸ADŸ{±K]SWDí†ë8¾ß~[TIqüjä.~uÉ~J,Ûô=ÿþm¤+ ïö•t†å8žél#5øÖm®G‰^©™k?~K±&/é±`²ÓWXŸŠkj¾,ŠeÆ»Z˜G“×baÅ‘›#±OÝ0ðœØ°C8 þ,Ï…?ÐØ#Ôö©aFœ$4ŒˆšžÅ¼àƒ PhÿQÏ`ˆò™m¦>ëöe=~že\ö¨Ä».ýHÊ3ãÒ¶F4,Ëv·‰]MÃö]5}¸Y§,Ôù¢ëL½áÎKz(»yÞCeuN®¿d¬Ô3¬˜¡G<Ã©Cxh®íø$æ6ã‘	Ÿwd‚ŒÃÐ¶™É,ß…(ÈúˆøÅûwU‚žz\Ó!¶}G	Úžiî*A×´î–A(Á§È¦®´&Ó¬~y5ø ‘B¤¡‡Çƒ=n±C=øžÛ"ƒrÛâ8Åg@W‰9<"Ÿ:ÌŽ,—‘¸XÜrâxÎày¨¯õ¡ÝÃïý–_‹s¨"AÓW³{»XP\Û÷·ô øÉ÷Õ¡ØHO8ðü
Ð0§fvÎYåñöÃ¯2@~¤,cÝL±Ûpø0¯k•®wš*u?ìÖ¯½ÊA#2qVÖP%rÏá”°*{äÝöÇØíâ8U¨ú“PŒ‚€»gÊ ¾VÒ»G£'6?ÆôøÕž’c3¢J}¢J}¢JE	þ‰©R×ç­ÿ/<¶ú•u.¢Óz§_4<çpË6mqšÃ²˜å2#¨epßp#3†Ÿ÷M3Œj3&2^à[¦a#t©i<{óoáŸ’{ÉÛCA:ÓìÀ´w/€ö<Á_æmÓP‰Ÿ\›(e+ÔýÓ§¦‡jOÑ=`Q×ÆÚ~ÒcvÝRŒÌ„Ç}!öÕ?~If­i„WwYeê¥Á£}"Öz b­ûnäƒòqEîž'2¯‰Îá™Ú|"óz"ó:ä\Nj¼å‰žð¾ù½éÑje¤_*˜*Ò{EÅ_.oJbßôü0‹nû¡aøNLØt‚ f É#Û0›Ù7]Ï&ah™~LiLB7ôÍQ¿TÎUÉ/½Óò+ñKmeÛpß¾[Cç[çÙî6ƒøºV¸rw½™žr§g÷L-B<LñH÷‚Æ¹êžõÀ	CqÔöIs¬¶zç¸ÞÛ÷†tçRÜnOªi¿dÐlß`¾qÇ¤&qÜÀ·7&qH©ÁhèœËE	s¹<ôã #“›v9ñX‰Þ¿®U/Ôóˆcƒ¶ÝÑµâLràzæv~•XJQÀ)ºö)¨«mmûëÑ¶ÌzÄÚöq!ÄËçvH¢Àô"ØRŽ'°«¸*Ú¶P¬±é›–ÐÀÍÌ2ÝxLÓV|)˜ýÄLÄ¤Ô?ßkþå5©s7›rµú E=ÿÎ¥¦é{.¬â6™ƒ¸òÙ<ÓVÑ¤Oç>æf 
ž®ÔY9Ÿ‚Xá!¨æ:n:Ê— M;ëÑAœæìX›e©–â¼dïË^ô}îZÀ§*¿?[•ßWSµ‡*Ú³žÊöžÊöžÊöžÊö”Ëöž¼ñŒÄ­‡¹®;yˆ'vw¹YðÐæ<Ù)só¡)\íè0Y–ÎÁ‹ôÄ’¿©¢æÙ<nÿP ™×m™cTìóç‚qG“Ëç±Øv}êZ†ïqFÓçàŠ"ý0n2ƒ{"„á‘ë…v{ÜæaÏ\ßŽ}›qÿÏ£pU£½¾éžáÞ=˜MÃ	ìÌüfƒ{|âÅS¬W/J±y#ÿ6QŠGTýøè¢Oœê×{>pêp>øÍ¨=ù§RÌ§RÌ§RÌ§RÌ¯¾óáyqÏHµ}4ÈðO<{u)íS¬aˆ5EVóSD1Çõˆq“pÊ}j†Žeð0¤~Ä}Ë2©ïú~r×Ó|qNäÓÈ	Dc›F‚ï†…÷Wôþw=Û]‚Ñ‹4ÒZ–ž­hš¯/ÕõhÛ]œ'q0üàû]IîNøÁõ²7ü@ø;±‡[Ù+"º‰÷è;ÿÓELZÝ°¼STÔ¡£²zWøz>lràZé¡øA”Ášj]ô‘eLW>Ôì@‰_ù á;­U@¡OdX(®<ˆ;>ã¾X†G©Ïæ‘˜z^»!u)µæ[`#âÐõ#‹z±`¢?tüãOkî!»žoîµAp'$}n³ðçC?°a°ý¯É0Lq6žÃ#4«5|ƒEUÏ»ÿ2¬y£Ó&xæñÇ4—iã±Ç¯]Ý2p?¦Žz–cñˆ„¾¸Úñ]Ë4CŸØ¡i9ŒšÔŒ't][Älp\Ç,rè®ÊW"Í(CÉ«´`iòv–ËzÖ-ÁL„C»kÑ^A2¥qûø§üJg ¨r6¯
pú.Ä­÷!­ùyuß'Zåõ¬ˆ‡hF«ÕyÓ¡ð~’6\DÅê2[õ{ Þþãƒä»¦	~Ê¶A‚ŸˆCì`¯A²=ïÎñC0ßþö& ŽÓ÷ßÛ®s¹ïæwÜÃôúÝÛó[ù"þ‹W!`%ÿòó›úöê½¼'lö*¿I«"××\v›¨>£ùÚ¬Ö±UÒæÎñ¼©,ÿÝ5IÏï¿ÒQ‹2AÍìW±÷÷°OS±š“žú8®Þ™ Jæ|ÕÄN·.BÄVY/å½0Õ€ªî#5¢¤÷"#ARÞD—`!º¯îrmì÷†#åUˆ÷š`Ð5ˆÚE° We@“ðqX” Dèz$°8ç†iÊÏ"Ã´©apê{AsÛ£sièÔ``ÖvÝË`'¦9æPòÙz!î_Ý{—=o–Þ©kq›¯è»jó@Ä-K0?Ò(nÝ×+ú=+<¨oW´–è žt ,sÙZŠŸ, ü¾ƒ\â˜»AKbÀ†Ø¾È‚¾e%!VuÞí”¹Ü#ÊÊ_Kž¿ýñå»¯Å³Ý™¨¾³éL½™'å–µâF5iÿrÆtç¡/|¼G•äáž5¸Ú¾¢óça]Æœú8W©ñ	Í‘ª«cÃµ©EyÛ$¿Öv"Ã%ãF–Ãí0`x¸†86÷ˆgÐÈå¡CÓg¦yð†'ƒtØ ™ªÉ	,Ã¿càíÜoØ^pÜ=ÝkÔ]Ð'“äNNŒÝ1Ij¾ÄymÓálÓãçpÔ(;<óEÐÃR,í+b¢ïj†U#ÞàBšÛar€ßZÄü62mn™­noÂÐA)øé„‘g‡VŠªŒ(¶)îrRÓ¥±ø^,*0¨2[nàXìÍÒ*¢œK°ƒ9Þ!FdÓèLdD$4áY)“k°Ë—]­x5+Ú¦lÑ­$â"<&Ã¦ôâFØ æVEûV]íÎ™‰t\PhpÑþR¾ãKxU‡Ždç¢g_°}ˆ7³?"J\qyß–Õq,“Ûn#‚ŒcV§Û}ónÍÇ7Ð„;ž_¾;ñ¾æ9!dQ±ÖœjŠ&-‚®™"–ãXíT7ÀÑôÎT=°÷A«›ü¹|ØwÝÿ•½©ßè<±Oë}I'¢útÎÐ§{†>½÷yâw^«³ì¥u¿'ÞOë~O¼§Öýžx_­û=ñÞZ÷{âý%ûÕÜE½LŸƒ†­ìyB—#ùq˜h.,F~òzð¯_­OÖƒ;_/ºéÑA=¨¢–9ÃÑØ¾ø©ëB^Ù:n{6Œl¯Æ-±w¹Ó?ÏÅôXqó‹‚äÈ¦TÐ_Ú4"õLÏõ<Ïò|+´qYŽiñ˜ØVdúÔbÌ6CnÜõHHß0C×âüg7Õ.3ø£g÷¢0W÷»x¬ˆ×TE¼Žï8þ.âAçfîZ‡˜ÞÑ«[wwÕø}@ðkØÎp~"ú^×‰Q0ÞLÖ¹ý—¤ÍœÖ5ü¥æó¾ð{hU%h.²pÖ‡w¦UTÙFìAÊ¹ˆo†‘kR×bANf,Š/$ÜsË÷Â0ˆHä0Ïˆ,;
Hp@×ý½â|ö²ŸÝLÌNQÕ¯kFgñNª–€i\Šh¨øƒìõ|Ú¯õWÒ¥ N‹Kùº(<×4<×q¶¯«v</€ÿgìUx¾áºwâÊ¶cÖ¶º³a¹–ãîÙBón/Ìå.˜ Ø~ýûÛ(µšW³7yÃ«˜Füò÷cš­,#×Î86Ì|túúþ¼kN¬»Ê—öŒmÀú„÷>Dt÷ü;QØúWZE:·†¹bÃUžm)§7Ìn4ÔºgN¶+.@Q\<ÁºQZ,úÏYj1j!ÕÈÐlñy•}£o@DŸSAû¦ G.Ó¥ØJvé:sc¾»ŽñOZ8²»çKš¥_Îö0Ã@OÚX'ö¼ÐŽ(gÌµbGžû^dzfx–Ï˜G#ŽÛ`¶ÅCæø³=ßw“›u¶AÇ==v´s<Ðñ|Ã0¼ýˆÛ7lûž‚½c€Ž×ÝÞßF_•ý¡bt®=7\¼ý™½¾ùYßŠ2?;Cû³YŸ~rÇÏÎ*<ÛÓé+2=ÃˆOcy¿¡9]ÒJßø8g|ËÆ…ºq]jŸs—úÄb7ò\xžE§†É‚ Š™ëXàY†C<jÁ!6~i|~\Ïoö¾³?ÇÛŸû=zK´ítq©ñž¼  Öîùâ[¶±}
ñ…ËPön«y·?¾c¤Qo£0ym[ä›æÄœ[twtÇÌÑÞÏú¨9¢ŠV†ªš#z«jàå†…jËã–°oX)7ü¬ÚRÕ°GªK©.P¤º>Q¥Ü¥òlêP±%S7õ·ªï›«î^®:o>ZXµÝ°Ul«N,‡jË+Õ†ª;(VýpâV¹¥ªÂX2Õ†ªë³¼Ql˜¨¾›$WÝ¼ÊJ-Q]ÈDùSLT7o¢ºySÕ;U}‰©êB¦ª™ª~ÛãE“[¯T÷Ïµê‡x]\«¶lçêÎ¸þ´Rl™©n¡q?r»¡êbfª‹¹¢ªÏ^-UªÚÅ•ê’¯T7[®ºâ9SîRõÓÉU×'WÕ¨¹ª¡ÍU¿Ú\uÅóZµË"Rm¨úÙ”´œ+#dÙø“jcÕ•/U¿³JuR•ê„*Õ…¯Tg]«š“šªN»V}éµêGQ«ªêZõÖ+åy¯T-J­ú•?Ÿú_ªUV­üUñH­jLjÕ-Ù¨¾íFõm7ªoFÙÎ7ªÞ¨bîöÅ†7ª»ç¦P}ÙŸT?†OÊîÝgU;KKÅ–¨Žòã{W~6qŸã‘ú»1¢“…ˆô‚õ›a=öx½Ìï®ä€ýaY×™“cÒØpÿ²½¢môƒý&6ØQG¡Çn`…”QÏvb‹Ú¾ï23òÅÑ&ƒ›Ä Žc5‚€qlšó=qêÐ1[ìÝÏN'Ç¼î£©Z.¦qY”°Iahß¼—d6Q;9Æ.Ù o›ž¿Ù÷]Ë?Jæ°gÍ»ðu„õ×5N8Ú£Ó×O2›SÏÖîöwÇv,¬¿÷>fk–Š¶fÊqK³;è“YÏÎƒz4VFü¤rŠ@¬h·3£bµ*ò±KÞ¯çžS£ÖjÈL¯—íT¶ªZµ×É)ª¢Lœ­òMB-/öc;ô¨C=Ï÷,7\ØÌ˜E-›…VÌ¸Í"#ŽüÐ‹‚Ð$ÌfFh˜¶3n«ºÙ­íŒ4/ò8Á»6¿¢a:Ÿ\;z|÷ˆ%ëŸÐ^Ð#2nÖ=ãx{›eZwJx-ŸxÛgtmÃuŽŸV¸¿ãº"ó·)§úÚ)KÇ®ž¹¶]³y‡Ž]ÛÛñê©=û1»Vw¶z»ÖEÅ®múdcî:/»ïöÄ}ëÚÌnÂ_¥ÍÜ¿ {¦³°úõtPöÒÚXË~Á&ø…Gd±–öšæ9¸bº†] ÆÛŽ¹â2Ë	‰ïƒauÏr¼Ðð¹iF<™å±8Ë88ˆ±eùéðwüÑêãÿÝÍMÇ%ºxôáŽÑˆ³q(îñ)™öÝQÝ@PÞl]‡êûöqf‹{Ûg.÷Á×áêzž¸¾/H,‚ã‘1™¨¯ëã¡Q9’~ ÇæÎˆO5`=“Öé«´hê^àÕÄ:Ã¢Æ2­hFoáW'X"ÀÀõfÜóœ 'ŠìÀ‰iì2‡›!7hh8nH˜eS;pÝ˜¸à€DvfŒS'=–ùó0=ó´éäÑ(û®WG(Ûî\›¾¸¹²´mCÍ<ÝÙC]ÐîK¹u_à\æèüõ•¸Èo¨îîxÔáÝ­ŽgNå`Öc9n­îûd£Ö3XëQ=“uÈ^xó;ëx2{QÑæ!C{ýÆœ©´æÜ6ÂÀ6lÏ¢Ì‹‚À%ž: Ï‚œ×õ(x5‘cp+"Fä„>‹b¹,}Ÿñ1kq?€÷s7]ÝHáÐÍ£·Î½Ó,ÞÇ‡$vˆL,c‡/6pÌ@-*¸³§æÝæ˜;_KPÐÑ1'®m6Ì@ë<ÿÎÐŽ½ó1£qŽc$Ê‡>ÔO œ¡‚\½VxBÅ¬rµ¥ê(OZÊ×›¹§TŒÿÖæ;ÙÞÓ5ýrLÞðoÅaÄ§1ü9/OA `c½DÒÈ·ÀÒ3n É¹r{Ì4Á¤â–Ût­(öìØŒÝÀ'³Ëc<4mbX£e-Ã!Si;ù_ätuíþNÇûú}D¦ß»õ ‰™däÝ1ý¦eí˜~pÕª]¶wÕ` ¿
¿Q7²yxâú–ß2Ë¿=2uÃ?Á[|2üÿn†¿ÛRÇíþöÖ;ÙÎÓ3ûÝ¾"«ßø4F¿`©vÒ_ÛvYnlÒÐ°76ÀS¹†°íväÒ8t	@—ù3ãØ¡†ÇHì7txšüû®þ¯0W]{¤×Gdíý»b“ø{­½k’;i‚0dÛÚû¶£FZ±ÙN_]é†©?4ký²¢Å™´×YJ~Šã†IŽCã¸iØöÄ¥>E•Þžºg=“#¦úhN5!%ºo)eD×w¢Qm6xë"¹XˆŸ=rX#ÙÐUšÀJZHÇ˜qFQRÓ÷Ù˜oÆ¶xNè$ö\—Bâ¡az„Å”;ó\æ3\c¢•ü &«íËNA0ü¯wo$ƒûFr¬mX–»c$]ÃÙa¹uÁŸV#¹ÝÚN½°¾øƒç~‚ëj|pøÖÀŽË=ò1cÙ(ÖÇÊq·–[Ã=ÙhõŒšÑ£±jÇíC7ÞžµËV¿øI=Çf@l›Z†Æ±X÷<ÎfƒÛd™œžOàøü,‹{3À¤D„’qêÙrj:Å5}ÀŒÚo‡ç–‰î~‡‰XLÅî	‡Æ¶5°x%j>Óöæ‘_	á¬n€ôà¼µM:5Û;Zø‰!šý‚Ì~§§á{"×;>9¹ÞeÞ‘†O”yãéŒ'~»ñ†ÿžüvÿ¾¬u§ç¢û’sOÌqãŸ˜ã”žž9î‰æíHÃ'š·ÑšªY~âƒmøÄw´¡"GO(PÖnNOÐÖÊ=šh­øéÇ2÷.&öXf¿fúãŠ~¾$þì»][!Hì/ˆ½p†y™ÓâÄ†+‚¿±e;",mÏ%‘iÚ<ŠCÛÝ0°\byuü(°ÏŠÊL×ŽYs?2Ä‰?E&S‡QÅi“æËY“ðÍ),£C˜t–®Ä–8D~+f–Š¸q3¥ÇÅÅÅ›fF³º€ˆ²V„ž³ô†¯¸¨(=@OŸ’4JDïmÍ< ëšÏÂ¢hh˜ñÈ‹‹®ñXñ#0¨œÍXZ_Á3#š‹î Ux“V“C#íøbVT/ûQÿGÝ‰®GÃóÅyÖø2m’6„M»ºüÄ3V]öÛo_ ÜA6!î&.²|ãqmwn¼1L‹˜ÎÎeÇvà*Ð À°æÃöžË½è¾
• øëwooÌoõcà/ËÄåëË÷Rq3¾gÎºÁoqµ÷Äà7“¦yÄçâ»«ç«4OWð¢«Q[uPí}Æ:ÀS©OëWvxêþž‹wêÚ§gyÛ$En-\Ð!Â20~Ã³ãýazÃ›öË¶’†ü3.ËŒ6â{œwCëëàå›c›£L‹‘†ÑÃ'=_Á>…=9Ò®¨ãZná±FÚf½X¯_Ý[,Ã2Fä¹×°vË±gÄiÎÚ&Ç’~ºûgžƒÙ‘c¬¼Œ±…ÿû÷K4û#-Gþºb˜õ‘6×%(ªÏc^Ö<Kóös¿¡¬c_) ²•Ø„|l™ï´œWÉègÕ]Ä>ØÌí$1#ÎÆ¤Ë?Ž~ÂÏ©ÈÉ|» 3Žë9Ëã±=m‰{åº¹NÞ	›2Þq¶BoðN+Uh¹¢×cÍêµ´Nâº'#c§Fú¹­åëÁ]æÝÊÅ=]‰ï{Þuv¸Ñç?v•.Êí9nž÷x?†á-¼Áû9îùôNK«gÔÃÄ½—òßºÿ{¨0SŠ0Í/¥ÛŒx¤åêz^[1˜@äÖ¢å=l?ÚøÀ<ÖV×<Nw‰ôé„-‹ZÌòK8wŒ;NDBE¾C	§¾es+ä6óàaÈƒÀ°}jK0:qBÃvB~sýøs×yeo¤çòC?ÁÙËwofïyu#æzÈÛ]“íª ¼zÿAv!Ü%	‘…«ÕùUàOI¿Kn®Çæ™ªgD\Ó¿ã9âžêmú‡ø¦wœ?a{Ÿ$}Éµ|{¨bû]œÜ‹Y÷|¶ŽuýÏA¨Ú:U‰¯cdÄCË‘ƒÉX‚Ë•>q~ËÆHÈÍMS}–jaÅÕd†ÀÖ¼iÓ17IF¬¢ú8
êÓfgCƒ1Ô·˜çà=ï“Âa¯ÇÜ«¡Ýã|l¹††ðßb¥àÏá÷8kãX¡iÍW4oÒècFDþÅWí<]-Ç±-(c•í6´<Ü”&ÕÞŠƒöÃŠ¬¶…¢tñX¶Šæy!"³_‘…Äˆ<ßä$¼Ør¨c¾E|Û}+òmR»ŒŒ»‘mî:‘ãÙ†ç¸^D™u ‘ÝmçÅ\ÌrÆx	&ŽçQ:gÉX*þ@³YÿÙ,¼Ý?çyÎÒfö	ÀÓl>ï|Ñ³ªÍgC¨ûÑ7ÇSnŽáÜ¡¾0¶cÙæñ>»;ï	±é#6@ÎSë¹ï¾†“CªM×_T­aCTTcQÂu»~WÏy~3‡O,¸¥IN:Ó4ÏŠeQ62:áË™Óôß×
ƒ†àˆ8¶iÇŽïÙ>i›„±˜x”~žŒ€gš'.#,V6}:ò¡ÍÄ(×7«G§ý=K]ûÛwNybµÿ“î?•îŸÌu´ûÎ¢ù¿¬ÞçìÚœ7«1ãÔŠyø¸O¯”7¹™%Ïy•F_F;S3$õýÀñ-î»Äõ=j‚r]3Š‰cøñ¢˜…adº®DqLÝÈýìs“Ú19 _wsêôÏl=Wú”ó—…%{BÚãU2»íTÉˆXö"­‹uÇ}ýJz.£(ô4¿èœ®~ì´u‡v›Wñ¸4¹ï¨jrß¶œ;•)f`9Û×sÛ±}5~o>©öbMÓr1ª}“÷=µn¿÷žÏÿ„/gF´LÄ9ô¿ÈÍcOÏûk–{"*\7d.Àn/¦¾çÆ®º]°¨Ø¦eR+  ÅáŸ8‰›9–mGŽ`‡?¡ôþ?~zõÖ?ÖÝÍ{N«h¦a.Ö6`6j|£Ä 8cy6!Û¦â'Ë"Æ^`‹«›î Ãvw€í+\€q“Îa·Íí‰gôO¥ø1Üf6^éœ¹®ú7áÕMÌÃí-æQ`{•Â>•‰Ð]e]d7‹U…#+rzÍjL½ìÍ¡„¹aÚFL­ˆFÇ,fžípî0×áža~ì{±¢Ø4÷¬ö;·%ºOçåìçô3èÁßëìmšsZÍÞUÅ²¢«•P.Ï~óöÝ739÷u5­ŸY¿˜Ý_ëYÙV¢¦Z½¸x¾}}²ìL$þà‰/f5_¥ó¨ÈAçµEÛÕgËƒf³¢‚¨ySÏž¿ÿõý7³UÁxVŸ/4ê¬û`#-ù"çÍ%l°+5 B†½2Â>â;w™¨,û •eûw®k%q={»¶ ~ñ½ãÍÝÀæýnœwûp˜}{*¥ÖØÙ«<ë"_ÀåÛ4¬h%CW
°w!ùþùŸàB{jÌ"ûÁ8Î¢.žóÜµÃñÃà}û1ýwXËŒõ¨‚HÇzÖ¨èÒ€¬«·PI¶ï
Œæ´Y»0•–vÓúõÛ7ßÿðÑ„É:j‚+!ç*>¥o<í!U“±ç¯ùíãO/ßÿtäÑîˆ}·ÿ‘îPf‘•{ý¥‘­“Oóe›bíå÷p\I°æçœš‰u8³ˆ%îXùÌ£œ»,°Ó$œ{ é­ÈˆjC‹˜šÌˆÃ#×$µ~¨6îuEËœðl(š}¢Òl"±Œ‘]úb}hèN³çbÑ¾‘g¡³7ñºñøë†âÔžxbÁÄY¤´½éŽ7ÉªN@ù •ÒüÅì÷Ÿß‚Yœýôáç·ÐYm!ÿ#ý,ZFðòSz^þÔümú^.Ò~ /ò$òXÑèÃO¾ï[ûí¡í¦­{ËáŸ=„..»ëwé|½Ýpá/ÝÁ™A1í»SÖ†÷¶ïL„÷t3éÑS­Ûí–Íõ\Œ_7ÅèQàáõŽ¶E3Ú§ŠÑœÚ÷´#¾ë•€åa´¡':Î+M@HG+òÀÐPx:YÂÜŠÆ/¢€õ¦Ødq0·³ôBŠ¨JU\òN±ËË(úXOyÈ–Àë~øh-E9v=ÿL|s“–Ä>–éç°'K¦ÅdøßÉ2ýAš©bE(¬Åd±µŠ“ Z	z®˜ºÅ¥Üç(É¸1§ÊÁ§XmÊWµ-1íÖÿÊÒ†[SFX7,úöÛ)K¿-ñÃï¿¿üþÍG²°tdÁti¹6¿ÿßö==IxAˆž¼©¨[Êk>_iíÀÒ–Ev=ZÖ¬á™Æ)Z;4‡ëY‹<Zóz¯„sÕT4B‡"…·®~ÓŸz³·ãºÄv|×ó"#
mŸÓ˜Z„Ã‰\×ô\îX>gà[ÙFàÇàa¾ÁñíØ>TÓô&t]‹šRéd2t>N–ÕÂqZÍØ-ÌVøQ™¨NÊ¯ÁéÕý­är#™kÕ±L0>ÍR„#Ë.4Ù“DÀcÅ?¯Ãì3q@VÄÅp2á«]¿ðÏiS/f³ÿNä!:ðâ†'t‚þ_Ì²þ±‚]7âe#ã•ŠŠÕ³°h)ÜÏêÎ„#éÖˆ:,Ñ¦ëþƒŽx]_ˆ§‰¨ÓeN3Q¸ñôæ° ·_á3
ÞŒ‹õ¸dµ¬àï³®¯Âº¾Ï¡«‹‹í¬NŠ6ckb‹a²ñìþ1ç FEw”­À!]s{ˆV×}Æê¢_+ØžE<ôÎÏ¯í†¹ Y
ËþC˜Ò\ú¬SßÒ%ÛZ_DœW×²ì;4ÑV îÜÛ¢‰¶MbÓÊÎ»uÞ}¢_ âàGA"P”28û£üt@¡œ±æ`ß¬µ½Rßœ\N&Ç1fÌjÐ‘þTüÅ‘~5²þiÈ>Mqm†Ö¯Þþý·oÞ¾ÿh,ˆijÈÞ3·ê²Ž«!ë«Éò,ž²<ëæëgUç¯ç;˜ò´ÏfîQŒjòå¼­ïÕw§®ïª\Àà¯ï,"dâ=÷c—X¶ÀæE$29	‰xëÅŽ˜Aäù¡VÌ£Øõ#;ôÇ˜¿:|ýáØGAÌ_—Â¤
\Ä«¹a +z+"Ã’÷
Ì·8–8ïºÛ
¤Õ"f,K’hÃ/:Õ[©¸,·«ò–C9oi·|yØk€=ÇqMg'2ìY¦íxöþÈ°éÚRóïÔ€X&1¼Ý¢nBÌã&¸ßZs¹KæÝþXˆ¥ž'•àjó§Ÿß|8­Qž–1Eå½ë m–MñEMÎ˜®5]ºn\Kmµ¿]Îá	bcÍcZ72~ž$×¥•›Ãfºž$ ¹|>U’%i’`ÙÀn§'+Ï²Îá#É§­¢T1RÃL;Úvh8N³¹_Ñ÷(›e¹äPÏ2)Îæk 2úél·[yK-ƒ>-ÍnLLË“‰í­£Ãî?…M¹ÝRy{…ŽÍb¯y,®+?–±²i¤Ü)höv–î)´ŒX}¬©NàÎÁ—'„ÊP4 $ó<t#q?a±¼(æ!aF@£Àò˜ç»n`E¡a9¢ Ôó,E–íÚü	@ªÈà>€ŽÜŽGÜ; Òµì HÏrü£¥ûÓÔR»Ç!qÕgƒ“O“ìƒŠnõ,©Ó®ƒ]N–[ÃÌÉ’÷ðæäöÏéÜE “{¸E§Ê«œ;EôU‚Óy73õosŸÜ³N*þ<s©è>pªV°"“G:ÀÄi­Ñ™¼ Û°Tq;øTEæÌñP^m)þø‰µ°‘HÕf±A|Óü8"±Íü(²]/rîÚÔ·LrÓó½Ø'‘“ d‘gÃŸ 17©ïxê»â¯â6Ô¹Lšù'.þ3$få™‘ãW’¿mi—Ù-•;“UµËœË2ÜþYTäŠßF¶‹ÙÐ±¸c oÞwvÛ!b
¿_tÀ7›—m%È«^€’³9ÍŠœ¯ŸµîG^‹[q#Šaâ×¨Xbäõ¬NWeÖ'XY}ÎêÛ¼¡Ÿ;ŽõÄD…ßlkî Pë¦j#ÀÛ!ã‚·NëºˆR˜Ä@õª¢·Ý19Ë:—dÝ/`lÛ‰u±	Ø‹.kš]äeò=¼mxTÀÓ_Èþ±mSˆJäèbÅW…tr˜² •ÝÈ—´
ÅzG éHù´¹î	DÀîP™¾èL¼kÒOPäÐÅ£ (¤2‘Ý0¸ôœøŸ>}ZÀW6––.…ëø÷]
²?)xŽaï^$où»}0Ýµ¡Ç£Ä -ËÏxº+qz¯¡ßàçôîNWÛ_0,w*©TKÇÏÄìWª‡úR;gs¨O½ð4_§_{ÅsIqäò¨­D‰È„G	$Î
OQ¦‘W#)?–J$]O¶O<+@ÅA’nø×H+CËÃ?—bµ›Ã©3ÒT êÐ%2DØÌ¢ALƒ†vÄh$ÎÅz1óÂÀõÎˆ:q`	–—ˆD<d„>=/ˆ‚CÇ€Þ¿ü]ž¯)i%˜®×æWJ½³=oãÛµ”ðE¹Ã³[¿k`¤êñH;¯P¾ÁCQgu‰y÷8«éï±YáïæhÁtÚÛy®¥då°ær‡Ì‡½ñE­âÄÒM[û«éûþdëØeL÷þ~ÇûT±•c}kYK9u,û1c0çÑùçr4çË–×M\OÕÛdýnlcSìí,ºã!Å;‚—ö­ã8ßRÇ‰üÀšà‰Æ”&u¥!l×ÈÁÓt|ßðÏ%¡O˜`;°Lƒú$ð='²lƒ™ÜŽˆCÜC9pÇÀØ	7°glIÃõôÞv°Y£™`%  Ðf#=·²uó˜Ã®‹kØ¶ëËÜ¦Ô‚ŸLÇw÷».ö;ªÚvècKWÛžá[¦‚²îÇ7ï6Æ||K|	F‚	4+å4ë¥¸ÚzØ¾5Q¯K`ØOŠ>ÀæïSƒh­pìacfBã¡ZÖã¼C}&:@ü1eÁ¡9åiŸW™9ÅkÝ´‡‘š6…y\XŠµ¹û¤]µÂÞ–žÉŸS8§„3îWu‘c‰×ê¶l0±hÖ³…—I¸oùÓúvÌcq6ˆ™”sÓì(ÿË"Är,N}†,&¡eß<DcôŸïýeöNºN—?QQ0¾Â ¿îíˆ&e¥µuS¬Ò?äÝ°òg&cžÕ%Ïå_uï^½–}oíÜIx[û†Z*^á—ìÃ¸Y^°¿ì! wÎ­¸–ïXÛJ/8^2Ûo,éš˜ó`"]Ú—sÇ4YÓöM[ßsÍéÁJ9ŽcÓžoWËàmÅH÷\®7îøÈèYÉ—£·s.î¹uú
P<’2Öiuwšä.èÚ>Ç…9ž‹c–i²(ðBß2,~¤ð[ÈLðt,Ó2HDÂ(fhËC
ð]§ˆD¨VEŽùµÈ{ÁÏ
Jð_v0çŸ@'4¯ò9¬(|úòBì®&¬ïçÅ&8uÿ©ë§>YsöhUšÇ‹²æUZ,ÂêòÿUEÈ«¦¸¯÷ˆrîÑ¯‘ý	7 wò7Ä3lk‡lÆ3Õ"Vb\ò€?™»_<‡ó0Ñª{SÖWÎTž™{jf¯jÜûUö§¤:Ð¯–Êýr§³•6Ìë"ºæèDÁ&ëí-ªhb•¨ß}—†ŽáQÏcŒ:ŒÇëù6å‘ê9CÎ‰ïØÔsü0vPá NMJPÍ¿ðæSQ]Ïê¶,‹ªYs‰H‘R}Ã{¹*‚B}.`ÐÌMÒ¥ú{´º#ÛŸ
O›ú;ûa&î‹¹íÖ·rÞÐ‡ÞÉ„ûo?¾µóZþkFoa¹»T<ôšâ´¶(è<Õº{8el§¿¸Í£î†‘´¹u·Mg·ò`x7¼íb‹n\²@ÖˆÁ"Ñ
ïâââ%ÈvÇÃúG¿?®@÷lž ë3d=…¬CÞÿüáÝ‹ÙO>¼“çæÿþáÝºC–— ˆ6—dùÃ”Ä~~óó«³ßþñv–€T&D@úí‡_ˆyv«ÖðhYÑ]ËÆR¾,„w¦–fÂ tŸÌ¸¥yÇÒÙ†³?Þçû"E¾“š1ˆcìäfßuÖ>¯¿æ¹HRl_ÅÃÅ÷Ff®mø|b#|‚n8ã7,VGºU±€ãÝ!ÏCÇÞ‹wÆ^×‚Úkÿ>l)Ã§¦É#jrb;f`†1í <Û²bƒ¡aÙg‘M|# ±ØÐ"ˆ9?ä‘üÖ¤R÷]Z7E%h½\!bŽ²–-íÒÛoûßïoÈ¬Ûû#–šýÌ›¾Üoà\µ³öà³„¹'UÀhm=÷âÞs¥,Y(èœ¡ËTÛ@U2»)²vÅì–«L¸^`j/7[â =‰íÙéíÒ“˜¶åî'È7ÍÀÞÕî¦cÛ÷]™Îú¦äÝÞjô´ðÚTÍÝ‰jëoÃŸÓéÆ0¦^÷|ø£}©¨ì½}j%E¢ê¶l`S·²f›¨Æôï‰ýð¾ûðþÕ‡ßÞÉ³—Šålš3ïV9§¡asPŒekõ¯ßZ/Ÿ³Ÿ+ð×Æßšf˜œˆyfló ŒSh0 ®q0W•Û‘#øÄnÛ”r7ˆ¢Ðÿ,0Lñµy6×,0L?·™0ÂñÊÒ?:'Ì‚X¢úË)Ã8rVrXµuîµ§çç¢³o<à¢#ëzWXÙ‚wCKpmdÊAØŸî¯¿–<ÿ K5Œ¨])¸ “­ ¹CXè4“ÅC•îÙ=–|´¼•µbv£þˆ{¯RÌ1öWŠ9 ‘Ý¼„iˆ·	µLŒ–{ìV¯~Ïå†œ[S_Âp­“(ãµo¾ºöËsàõM³_râ>$ƒÿ±×ª7ŽÌ±£øýäÆ;Ü«xtŒØZ¯.é§ëQ5,~*ÂºÈx3umÞ~˜²6ÝÓw…TñRßíêx5¥í…žÈÑoÜ¢ Ú#ËõPî–Pö¦Ž¹ZŒQ`0JA×œ×r£ˆFfÚLAÃwZñh1î°s±:ÔA^*«:IÅi™bj©ø$ý‰N{Gƒæ·Õ»‰iu$]¥ÔêÝÉš~//..>$kÕ·‰Òu“"@%&;Á›¤`³šréõA‡VòãQ'÷^ÔÉuöGLâØw²Ï¶oZd§Êç˜g2¼Å^é™Â¦¯Å7Ù;Umÿ$ð&û'iØ«±J…I¶3 ÑôX³aTÁQúý¾?âŸƒý>Ê£Õ„œ'ûc%½%Gå€Ð‘S:	M¶Ñº™¨êúðÓË7‚RµYn6.öÇ1’žÝœÅ4½)ä Qn´]È=øB½Ü0Œ˜9¥FÈ-?Ž3 ¡ç[aìÆ¾ÍhdP/ŠLâÅNÄ}Æ	ç–gò0$¾º¾Ãqì<!ŒG0î] wa.qvY}lÇÙ%õ±ÀVó"ïšÝ?küó\AÚ³‹1T™nƒ	2ÊíÏ
?ŽV•|•ðãÜ+k€qŽsË,1µý6öx„¥ï(u;76™ä>D¡Œ‚®(òæÞy7ÕH7€e{»oà»–Å¶ÃN]æ˜>7}×v°ha@"‡D$¦ŽËIxqäÇ´Šcâ‚o+jHÀ”¿‹è°ˆÿÂKš¥
åF;í„ð³X¡.ú¼Õ#¬ï/ˆ¸èZ¼k+Z_‹»[Pþ×4£·t6œ&>'|¯°ìŸ>ÆßÑï^Ú>p­x`wMGÄœwÒ¦–é«ŽßÚcs¹Y†Ëg'](þ°à¡,#×Î8²úóàŒOP:õ"ñÎF=ßÒæ´ý_óÞ¾Ew]Ï£dª[Ï>Ù£§](G°þz¢ëÅ„ú¥žË$—¼FFA…ó&º”Ëq)ÞÎ‚]ºÎÜ˜wƒ¿èiô47iªÏi­_Y˜C*˜÷ÎåÙþ·q›¦®æMÏ¥aÆ<ö=7t,p;mÇ¦D>—÷;‘oà˜šàÜÄ†E“[Ì5y ú…D‡¼Q*]Iy‰lOÂTu>¡ø<Qgóß<œÑHÜ°3rƒ{·bÂAˆª„û™ð¬ì{q±ª3–ÖQ[÷¨uS¿ w6JàÏ×Â\+V…ô&ßÃƒ!³˜ý–‹ïª5ët•f`"`·1A_õb6<{	ê´¾àº[mÏŠÎ>ñ°„!ô…¨Â%®%-­$¡­Û°K¡¾¸hóÍ_f°Á³BÜ7/L,Âbö
”¢üÛÎjÉk‘Ä]EòÞaÁÈ%’7šÁv‡Íî¸ô§×}£–$aò¶zÁ„[ËI‚Ã.Ï€—¼ä^Ÿ¨¨F-f¬èÞÌöìjÁ·emÇB&mŠd¿m.„œË'gÔ³%<à½írá±E~ýEÔŠÇ{ã¢•ýw³îî±^è%+¢ËþÓ¸¸øï¤_‹áC´^±X„„¯ïv’C·:}J³¬»Ú	æQòJ|‘0‚¿Jii6uµ,»*Ýº+°2ÝrXû‡uùæ—÷^¾}»øÇ«zùáìd_ðŽ™·\ÃpvÌ[Žåí¿Â5}ÛóƒÝ; |¬0¶ŒX1ÿè‰º~Mæ:š+¢/pAÔÎ¥ÅCÍö#“–CeØŽãZfÈî…hs TÈ'=ØƒÆbÔ¼­xô®â¡…B@ãx_ƒÛÙqeD¸JT¦Öcmª"OùH¡©ÆÞÊñaô-æ,ˆ²×úšŸæÝÄŽ¯h‡Ù„–G[Ìá¿7
jÒ£	p*^ÀÒ5–¼Ç’&ÉW4 Ø¾éøºÓ>+@5‚©æ#=÷ ’¥Õ³Nh|ƒé\­>FñrQÞiW§—†Z+?û¿ÌÀAˆ à>2¦í¦—‹±	O%«I³Êâ°Eè*Ì8V¾GÊ8ñ5[¾h>7“;hu»€–æÓ_
-Ì'?O öY~€ÓŸÙ	ÇEÑ`e…-GÉŠï Ì=ZVâ”tSDX9ü2ƒp^Hè5]ºI#ÄÇ‚MÞOÒÓ…Op²\‘i&‹¦/i=ùqà‹l+›*nn{o`òŠŠ½ŽúV„/?u¤i~Öbª”ø2dŒiêW´nä·<ñàK‹6U¬XLk
Fo§ŠeG>u†%x7….ÅÚ&ÁÈÁ{Ÿ¼ e•Þ2yz‚‚aêÃÀëmëéR…ˆÖL!˜UÌB®­1æh;.Q J3GQÃ¨AP¹i¼ÿRÁ†õ„‡Õ:ÜÈ#áá¦>äñ»bèA!v}` ¢Ä`D!‡‰i„åÛ#`b/ŒÃ‰[Â Ø‹OGŠAÅÆbE)Ž‹ ˆA‹ †ƒ‹Bƒ…
0‚ 1‚ di$f”’SA#aP#ˆ!a#Hâp#¢€£Ã"GÅAGDaÇAn2è§£G!ˆ‚Rp2~)€b	r(xÕÉ¡0ä¶(æý#Pä …š'G‚ ŒöÝdq¨©ŒÜˆãPäF"qô¦:Ð€]) Rˆ¡ñãFxºÜÈNG½,
<nÉ"°c/=:näðËŒŽRAA
……4
1f9d9<ba`”‚ñ"È à"HáÐ"¢À"Èa°¢CBEE!EÃ ÅAlªÁïå&ÃD!‡A‰Rn*H!FRˆbäÔ‰a â¶$âµO‡‡ƒfŽ(pršØð~ÚúpS=lXkbÃZÖºØ°ÖÇ†5Ö8lXë`ÃZÖØ°ÖÀ†µ6¬‘Ø°ÖÁ†µ6¬‘Ø°FaÃ‰k6¬‘Ø°FbÃZÖXlX#°aÂ†5ÖHlXã°aÇ†5Ö8lX#±aÄ†5ÖlX£°aÃ†5ÖhlXk`Ãƒk,6¬‘Ø°ÖÄ†L=nÈôâ†L3nÈôâ†L7nÈôã†7d¸¸!Óý1ÐÓ
ß1døŽé„ï˜VøŽ!Ãw¾cÈðÃ…ï2|Çá;¦¾cØðC„ï*|Ç°á;†ß1\øŽáÃw¾c¸ðC†ï2|Çá;†	ß1TøŽáÂw¾cèðÓß1LøŽaÃw¾cºá;ÁÅ¥ú,ÞaÊ(Ïåäåzk"<®‡ð¸.ÂãúcÇ!<®ýÛ#Ì%×€‡ýÛ’Å@KŽ„–\Zr-hÉ‘Ð’£ %GBKŽƒ–	-9ZrhÉ±Ð’# %GAKŽ…–	-9Zr<´äHhÉqÐ’#¡%GBKŽ„–-9
Zr´ä8hÉÑÐ’k@KŽ–-9ZrMhÉÕW“gZØp#ŽÃ†y6ÄÑbè@v] °¡D`C!†Æ†áéön#;ö²(l¸%‹À†½ôdl¸‘Ã/3Ji696)6rl(Ä0ØäPØäðØ„qØP
NÄ† ƒÀ† …Ã† ˆÂ† ‡Á†B‰A…Aƒ±©æ¾—›Œ…J¹©Ø„ØPH!°!ˆapS'†Á†Û’ˆ×>B˜9¢°!ÈibÃc”;ÛMµÂŽƒ8ZæšÐ2×ƒ–¹.´Ìõ¡eŽ…–9Zæ:Ð2×€–¹´Ì5 e®-s$´Ìu e®-s$´ÌQÐ2GBË-s$´Ì‘Ð2×–9Zæh™£ eŽ…–9Zæ8h™ã¡eŽ„–9ZæHh™#¡eŽ„–9Zæ(h™ã eŽƒ–9ZæÐ2Ç@Ë-s$´Ìu¡e¡þ¬‹l
²)tM¡l
dSh ›BÙHdSè ›BÙHdS M„j:P£@ †…
,b(ˆ¡À›þiúœé/¦¿@šþiúŒé/P¦¿À™þgú´é/4L1ýÖôHÓ_èš~õ³¨\ï,*×<‹ÊõÎ¢rÝ³¨\ÿ,*ÇžEå¸³¨\ç,*×8‹Ê5Î¢r³¨\ë,*GžEå:gQ¹ÖYTŽ<‹ÊQgQ9ò,*ÇEåÈ³¨yUü<V«/š³Œp2]5"CJˆs¬uŽ•cÏ±rä9VŽ;ÇÊñçX9ò+ÇcåÈs¬yŽ•#Ï±rÌ9VŽ:ÇÊqçX9î+GŸcåçX9æ+ÇžcåÈs¬\÷+Ÿð,=e®É¢ÌõH”¹.‡2×§PæXeŽ#PæHV]Ž"ÕåHN]Ž£ÔåHF]Ž$Ôå:|ºK§ËlºE¦Ë±\ºI¥ËqLºI†Ëq\¸I…Ë‘L¸I„ËQŒ¶GhËq|¶MgË5Øl9†Ì–c¹l9’Ê–ë2ÙòVýY­ž%o5-y«gÉ[]KÞê[òkÉ[œ%ou"D­F„¨Õˆµ¢V+BÔ"#D­N„¨E¢­…¶Z$Újqh«E¢­‰¶Z´ÕbÑV‹@[-
mµX´Õ"ÑV‹C[->NÓ"Z‹j-¨µH Ö"Z‹j-¨µ8 Ö¢Z«ÔZPk±@­EµV¨ÅêÔa±.ùV¬O¾cÉ·bùV¬A¾koÅZä[1’|+Ö!ßŠµÈ·b$ùVŒ"ßŠ‘ä[1Ž|+F’oÅHò­X‡|+FphÅ(­Ë¡#9´b<VŒ$ÃŠqdX1’+F’aÅH2¬Åkãx­b¯UŒæµŠ5x­b¯UŒåµŠ‘¼V±.¯Uœª?+Õ
ôlÄqž<*Ð3ˆã7Dª~R,úIqè'Eåe”S¤QNqF9Eåi”Sd@
N5È)Ö´¦HÓš¢<zÃ™ÕgVS¤YM‘f5EšÕeVSœYMqf5E›ÕTÃ¬¦³šbÍjŠ4«©®Y­ÔŸUé™ÕJÓ¬VzfµÒ5«•¾Y­°fµÂ™ÕJ#²FX’J#"Qáó'[²˜hF…ŒfT:ÑŒJ+šQ!S…N8U8àT!S…N•N4£ÂWØ
Yb«ˆ­B…P*,Î«8¯Âá¼
y©±ÂAÄ
	+$D¬±BTØ‚WV8\Yápe…Æ••®¬0¸²ÂâÊ
‰++M\¹T_Í¥WäR“+r©Ç¹ÔåŠ\êsE.±\‘KWäR‡+r©Á¹ÔàŠ\jpE.µ¸"—H®È¥WäÉö¸D±=.‘lKÛãÉö¸D²=.uØA—X¦È%‚)r‰bŠ\b™"—H¦È%Ž)r‰gŠ\"™"—8¦È%’)r‰dŠ\"™"—(ÒÇ%Žôq‰#}\¢I—¤KéãKú¸D’>.uIõ»f½ËbÍËb½ËbÝËbýËbìe1	î²˜Dç²˜Dã²˜Dã²˜Dã²˜Dë²˜yYL¢sYL¢uYL‚¼,&A]“ /‹Ip—Å$ÈËbäe1‰Îe1	ö²˜qYL‚º,&Á^“ /‹Ip—Å$øËbäe1	î²˜yYL‚¼,&A^“`.‹IP—Å$¸ËbÜe1	ú²˜Dã²˜sYL‚½,&A^“è^“¨'–½Är¢™XNôË‰nb9ÑO,'ØÄr‚K,':‰åD#±œh$–Är¢•XN‰åD'±œ SÃ	*5œ SÃ	.5œ SÃ	25œè¤†lz7A¤wTz7Á¦wdz7Á¥w|z7A¦w\z7A¦wdz7A¦wT¦6Áej\¦6AgjLm‚ÉÔ&ØLm‚ÌÔ&º™ÚDA!ÑcPH4=…D—A!ÑgPH°
	ŽA!ÑaPH4…DƒA!ÑbPH
‰ƒB‚dPHP
	’A!Á1($H…É è0($X…Á  2i–¥×“Ÿ„wXÞ…É»àx<ïB‚ä]Hp¼	’w!Aò.$HÞ)79x‡"kHpd	Ž¬!A“5$d	†¬!Á’5$H²†D—¬!U'kH©Öm~ƒ8RnÄqr#‚”©.SEªÏT‘b™*RSEJ5 eªAs‘jÐ\¤)S-ŠŒI‘‘êPd¤Z)’"#EQd¤HŠŒG‘‘")2R$EFªC‘‘R$ MÜ)Š[#Årk¤HnÃ@ËOÉ‘")9R%GŠ¤äH‘”)’’CÊM…–)ŠÇ#Åñx¤8Íã‘jðx¤Ëã‘"y<R]tÂ³ô¨×SMêõTz=Õ¥^Oõ©×S,õzŠ£^bxlØh`ÃF6Ø°ÑÂ†6:Ø°ÑÂ†HrýE®Ÿ"ÉõS¹~Š$×O‘äú©¹~Š%×Oäú)Š\?Å’ë§HrýG®/Ä°ØÉËŸâxùS$/ŠäåO‘¼üRn26D‘ù§82ÿGæŸ¢ÉüS2ÿCæŸbÉüS$™ªKæ¥v¼Ò;^é…¯4ÃŽWzaÇ+Ý°ã•~Øñ
v¼Â…¯tÂŽWaÇ+°ã•FØñJ+ìx…;^é„¯´ÂŽWÈ°ã*ìx…;^áÂŽWÈ°ã2ìx¥v¼Â†¯aÇ+TØñ
v¼B†¯paÇ+|Øñ
v¼Â…¯aÇ+dØñ
v¼Â„¯PaÇ+\Øñ
v¼B‡¯4ÂŽW˜°ã6ìx…;^é†¯åg]ZØp#ŽÃ†y6ÄÑbè@v] °¡D`C!†A ‡@ …BB„9€
9€9€09HÁ‰ÈdÈ¤pÈQÈä0ÈÄPæä0æ›ªÑ{¹Éæ_ÈaÌ?È!,¹BXrÃX¹NcÉ·%opº%„0sDYrÓ³ä™ú³2½b¦™@Ìôˆ™n1ÓO fØb†K f:	ÄL#˜i$3b¦•@Ì	ÄL'˜!S€*˜!S€.˜!S€2˜é¤ 3l
0C¤ 3T
0Ã¦ 3d
0Ã¥ 3|
0C¦ 3\
0C¦ 3d
0C¦ 3T6/Ãeó2\6/Cgó2l^†ÉæeØl^†ÌæeºÙ¼\}5s=
à\“8×£ Îu)€s}
àKœã(€s
à\ƒ8×  Î5(€s-
àIœëP o„1é¸I œ£„s$pŽ#Î‘Â9’@8×!Î±$À9‚8G‘ çXàIœãH€s<	pŽ$Îq$À9’8G’ çH`)75—£˜ƒsspŽcÎÑÌÁ¹spŽaÎ±ÌÁ9’98×eÎÕÓq¹^:.×LÇåzé¸\7—ë§ãrl:.Ç¥ã„Þð®Ð‚h¢:­Ð‚hÈ¼gŽÊ{æÈ¼gŽË{æÈ¼gŽÌ{æ:yÏ›÷ÌyÏ•÷Ì±yÏ™÷ÌqyO!†…hÈ”iŽK™æÈ”iŽL™æÈ”iŽJ™æ¸”iŽK™æè”i®‘2Í1)Ó›2Í‘)Ó\7eZª¯f©Ë*õcY%6–UâbY¥N,«Ôˆe•±¬R#–UjÅ²Jd,«Ô‰e•Z±¬Ë*Q±¬Ë*‘A©”*u‚R%"¶T¢bK%6¶T"cK%.¶TâcK%2¶TâbK%2¶T"cK%2¶T¢ÂD%.LTâÂD%:LTj„‰JL˜¨Ä†‰Jd˜¨Ô•ž¥WëUjÖz•zµ^¥n­W©_ëUbk½J\­W©SëUjÔz•µ^¥F­W©UëU"k½JZ¯YëU¢j½Jd­W‰«õ*‘µ^%²Ö«Ô©õ*±µ^%¢Ö«DÕz•ØZ¯YëUâj½J|­W‰¬õ*qµ^%²Ö«DÖz•ÈZ¯UëUâj½J\­W‰®õ*5j½JL­W‰­õ*‘µ^¥n­WÙ|üþ­5áÚVXÄ¶Õ´­{ÐØë>´ [ß
½IY€“’nKcØ¶Ä1HnG‚¹mqž:@@º-Q…G;!ŠÂvB	ï¤(
áIIÈ¢Hœ'Du žÇ¢½Nv2àb(Ì'±°OÈ"‘ŸÅ?)‰ÆB	…(®%§‚A¥(
Q"”‚(P($q˜©—ÄAÃaÜ›Å Äµr¾H˜(Dõb¥^ùUéU~Uš•_•^åW¥[ùUéW~UØÊ¯
WùUp°Ò(«4ÊÆª+­’³
YrVé”œUÈ¢±
U4V!‹Æ*\ÑX…,«Ec•NÑX…-«Ecªh¬ÂUÈ¢±
W4Vá‹Æ*dÑX…+«Ec²h¬BU¨¢±
W4VáŠÆ*tÑX¥Q4VaŠÆ*lÑX…,«t‹Æ*õ{A«V‹ŒµÒ»V´Ò¼V´Ò»V´Ò½V´Ò¿V´Â^+Zá®­t®­4®­4®­4®­´®­×ŠV:×Šn„1sòRÒ
u)i…¼”´Â]JZ!/%­—’V:—’VØKI+Ä¥¤êzÑ
{½h…¼^´Â]/Zá¯­×‹V¸ëE+äõ¢òzÑ
y½h…¹^´B]/Zá®­p×‹VèëE+ëE+Ìõ¢özÑ
y½h¥{½h}­ü¬úZnÄqØp#Â†ƒ8zCh`Ã®6‚l(ÄÐØp#<ÝÞmd§cÃ^…·dØ°—žŒ7røeFbC)À† ‡À† …Â†B…‚
‚‚0JÁ‰ØdØ¤pØQØä0ØPˆ!±!ˆ¢°!Èa°á 6ÕÜ÷r“±¡Ã`C)7‚
)61nêÄ0Øp[ñÚ§cÃA3G69Ml8a5õXãjMÖ¸Z5®Ö=i[ëŸ´­±'mkÜIÛZç¤m­qÒ¶Ö8i[kœ´­µNÚÖÈ“¶µÎIÛyV¶F•­‘gekï[<b[#ØÖ:Glk,ï[8›[£ÎæÖØ³¹5òln;›[ãÏæÖÈ³¹5îln<›[#ÏæÖÈ³¹5êln;›[ãÎæÖè³¹µÆÙÜs6·ÆžÍ­‘gskÝ³¹u¥þ¬J¨Uš@­Òj•.P«ôZ…j¨U:@­Ò j•P«4€Z¥Ô*$P«t€Z…j
¨UH Vá€Z…j¨U:@­ºLhÎ2þÂtå†yäU(WaA^…yäUxW!A^…yäUHW!A^…yäU8W¡A^¥ò*È«° ¯B‚¼JäÝ¨?ëFäÝh‚¼=w£ònôAÞäÝà@ÞµÜè –$j¹A¡–$j¹Á¡–$j¹A¢–ÔrƒE7äqƒB7XäqƒD78äqƒG7HäqƒC7HäqƒD7HäqƒB78äqƒC7häq£<n0Èã‹<nÈãFy4êá¥F/¼Ôh†—½ðR£^jôÃK6¼ÔàÂKNx©Ñ/5á¥F#¼Ôh…—dx©Ñ	/m„15b28Õ ‚S28Õà‚S28Õ ƒSNpªÁ˜D€©A˜l€©A˜\€©Á˜d€©Á˜d€©A˜d€©A˜\€©Á˜t€©Ñ05˜ Sƒ05È S£`jÕ´zGZÍ£ ­ÞQ€V÷(@« ÅhqGZ£ ­ÆQ€Vã(@«q Õ:
Ð"´:GZ­£ -ò(@‹:
Ð"´¸£ -ò(@‹<
Ðêh±GZÄQ€u Åh‘GZÜQ€ EhqGZäQ€y Eh1GZÔQ€w ÅhÑGZ£ -æ(@‹=
Ð"´ºGnRågÝ¤ZØp#ŽÃ†y6ÄÑbè@v] °¡D`C!†Æ†áéön#;ö²(l¸%‹À†½ôdl¸‘Ã/3Ji696)6rl(Ä0ØäPØäðØ„qØP
NÄ† ƒÀ† …Ã† ˆÂ† ‡Á†B‰A…Aƒ±©æ¾—›Œ…J¹©Ø„ØPH!°!ˆapS'†Á†Û’ˆ×>B˜9¢°!ÈéaÃ?’?ü¢ü8ÙZ!îô€‰;] pâVèý±Õ‡Z\÷‚ Œ½,3ö’hØ¸#?ÝîˆOq~ÜG@ÈM“QäŽ¨ÖÂ#±äÐNv¢DÙ	¢@e/ŠÀ•½$Zv¢(tÙ‰âf'Ã˜ƒìD˜Ù‰!f'ˆ›,
ov¢ÈÙK"Qg'ž({nINEÑÉ´Å€ÐAt*íäP´D ÑNÖÖ’LzG·#¦#Ó-9ä|Qø´Õ†¨þ{Ê?ü·6ÀºÐyOCzð°ë…,‚$ÎÒƒ ÖÒQœ¥’HK¢è#‡½8ÖZKÙéÖÄÐFd±FD‘F$±fD‘fsDèº^c6AgÃ„ Î†$R§w’H¶-Œ{=X{¢#ö¤¬WUâ{Ú´ò(n¸~@˜æ eÙÇ_…¼ªU% â+6íÐ™‹öqúYQ$½´äËOÊíAí~dá¤æ%¯VªÓ‘ææeEÎû%U)ò8]~ZF]BZŒòv²@4Ybß•[û$ÀwŒhÅT[·«RùµñÏe1eºëöª³]¨N6 5í-Ã7ð±­2õIlTg±‘PÆ’ç4KiÍU?‡4¿â‘ê6;úc‡(§HÈÕi
LŠŸru‰þÏóîC(Ô–”ø<Š'
FÍ>Ó´W`U§VEU ^Æ«	ŸÓº½êF\¨îÃd)¶.i“ÔêÃš«Ž~h¯:øUmž+ë*œh+¾_fâ&¯xÍ0£ê«´%¡ºP["ªkU­&¼ç:)>}ü—øwÕi×·y4q¥šŠæµÄŠàÙ&m®:‡îóWl·—A±õ§´IW3Z¦óî2žÚ^ÉLRGV«)W[¡A€3˜ø~ä~Hdð'ˆôÞÛ‰>v8ABùkXHwi‚ÀÚ]ÙÈÀŸŠjE›¿]üT]tM—ðó_ú?õ‘©ª\=“msºâ[ÑŒ.é_.å_Ä¯Býí³ï~tí¿H‡@þÚïÞ/‹(ùë3ãÙ~ùë3oAÌg³Šg}fZžùÏ.esùÍÕíªdPÓqŸÍÊëeÊþúìŸ¯Þ?û[lE¶Y®c°Èp˜m®i8!s›º¦?&±e1—RÓ£‘eÄÄŠœÐŒ-fZ¹"ŸØ§MÿörVVÅ²¢+ØÜËYG+¦Ë2—²€µI£ÍÏ ÿ³Û:…0È‹¾ë*÷ôWqó‰V|6,£èœéã7<+ÊÏèˆÍhYfiD…Ø¬ˆ/ä hUC[
 pÙZzx44}**VË>jèŒç—?ç´i+š]Ã­³7ÍDèzsø„yÉáÿÀ ê[ØA«îyEÃ+ƒ–[Ëq±³b«‚ñ,+?¬ûÝôÚÍ–F"¾3±¿`Š‹Ù‡†²îR+«‹4Ë`š?Ë}µ¸¸èþ þ9¤bþ°8âA[½Š¿Õí0„goyÜÌ^Öu¥Ðà†Ï^w+ùìâùÛ—¯¿y1,<tÞÎþQdbá~¢mþ÷1ß˜ƒp%'ùC±*ÛFôfÚ
uÁ`›‹ßòTîëF>ûU%æÂó³×àCÒüvñ—Ëí vF¿ª¿ý +óëûÙ÷mš1XöÙÿÈšÿ¶Ëú‰$hQ/Šjù?–Íÿ\…• ÿ·¤iÊï./“bÅðyÕ‚ñËðªàU>yÛpÁ*–ìò/—¢½kÒ¼3øÆÿúŒ8ð™x®ë{Ïf¡xºøÉñ|Ãpœáë«Ó?Ö»þÙ³\Û~6¤ÞÈwó×g–ø^ðlÖ§ôà‡À6‰Û‹gE¿‰“ŠÇ}ö®ë¨î‡5ßü¼ûÚžX•ÒÉêGª/øù;ø"x^ó¿½~÷öÆüö/—Û¿mZÝÀ^+†Uíõ?mÚ,«¢-ÿöãæ£»|;|D×`# —'­*ÔÙÜ02»¼yAÔ¦ÕF².Ú*âð§¿í™s]EbÂô¦åFZ#y5¯ÄnšÉtü_Ÿ9®á?›Á”à}ÄèßT/ Ú)lµî§þG™LŸ	µü×gÝ(žÍbøOý×g¯þÏ3EE<ÒÛs±(®ýª×nò»ã–Ï©ø¿Ú´™JþÀTboŽsh9Ò¢îÜV¹¯çB7©t{_èpc0»´¹ž“…±¨‹…ñü›ç®¦Í7ã"M«B˜Šq‘7*¤ˆªTÅ¹°¯BÆU”Y²ëùgBææ´ØÇ2ý¶ñdÉ´˜,ÿ;Y¦Eðb²XƒZŽÕ”%?íÇ»îPÁSBµUðaÂ¨KÐ^ÅÔ/…äîGIÆ9Uüø…OY.Ó¤ºU“±ç¯ùíãO/ßÿtìÃïz}ýöÍ÷?|4öÝî;µ¹«#·@~!êðø^/ oñCñ…¾ÁŠ^rUúU{ÈÅêÿüH‹Û•¾ã1¯Ûb•ÎoŠôúºÀz!dA‚þûq¦9!à1ì0ð)5¬È÷\Ë‹¹„VÈCß½Ètê™kÂâà€À¶™aZŒú$
:![ÀQ`Ë¿§yžÖ	àíªLŠ¬XÞÎ>UiP`Y•gÏÿK®ÂLøÀ ÷Í˜S‚è¿ìÃ;€ OsÑ³º-EŒ\Âï~u	Žœ¯.“Û2áà€¯ÓfÆ
^çÿÑìˆ½o¯Ó+zÑðÏà¡€ãð™WgÅÏÝŽY”mºj3ÚÁ¹¸˜»pÙ³mÏÞ—À²XÛÂË^ àÚÜÌð‹›B1oïñ¹Ø¬sç¡ç—µ¾üÀEºñÌÈùÐÜµQ´íáPôÎˆÆ¬ò~­¢Ú³
¼>ô„ûè¥^3Z±y•/ïªÕ¼èržÇÕª±°úñ‘iz•®eÓ äÇ@MÆž:B7p\Ï²lN	á<|;4,Î—Ç,äFÄÃ„‘Ð«ÿxõöåï³_^ÏDPwEë.¬“eBÃ‰ÙÎú™ŒÄs”»áøBà[“•Q•„ÞðYÈA­Bç×œ]ÄiN³³*:ØÙöïS´¿dÅ§<+(ÜUy†aÞ~•þ…ç¦¿¥î|ÃrýãÊnØqÅYs¹iÝvSÑr?¿ù ¯â~ËÁtEiœrvL¹•eäÚÇ+¸½óÕÖlÄtÌiš­óŸoèˆÞÙûaRmCŸ§êjÀ+ö0 a˜MŸ<Viýy•Á×C¡©ŒbÔáÖÐ²Z¹B×[ù&÷
ZAvøØT+mµ¸ì®ç*äóRè˜yÛ¡¯kÓü…{iímO³jžC,ÇwLŸÑØÜþþêqÐ®†Å~à3Šh…Ü§¾åsßµ˜ï~(e!bÔMø›4;]b‘‘É[šÍÊ.ÆyØˆ
PÛÑàôRÏáÛÍŸ}ÓIÏ åGëçÌ
€ìÕ` ê˜Àî‘¨;-a,àU3í+žæ‹ÙËìó%`—(hxÝÖ²‹Ýo¼‹‹µ-9m<`ø éÄ²Ý-Ã'2=c¯áó¸uw_@ŒmÃ¢ÆQÃwo{Îû}67'š@ úßÊ-Ð!~ùÇïßÿ(ÿæQþ÷‡¢¼­Òe¯1ÏºóæÕ«W'ˆ­Q+·a#ÕçóŽ­—¶	µk¢	Ý3¨1‹tPŒØ'á.wßŸÂ0v{»#ŠQ¡UJE²Z„Å0Øß…@„½_¬ÍøGñ®`¾õï[fÁ—p_]‚K^@È(hLÂ@ECÂ]3ß D$‡CŸs+änèÚflºŒÃ®9ÜåþÁàùvÓºKËVEØÂßÿŸ·3PqTd!g5¯nD®ýJýY,×ßw¹Va'Û\d	·°õ¢D¨½ŸoEÏsh·j³&·2Ùý¹ID|Ü„=ßär£,Ù¬îçYº6R×€*®eƒHÑ^Ð^:ã`»gÏW·õ¿2öœ¨ÈYÎX*¿BÇwÝùßÎŸS˜¯@‰ËáÛ¦WúµTïðMåL¸CýJ\vÓÜÓçÅ’ç¼J£~!dEÏY¢~+ù¸Ä÷]Ûwì?Ùñ‚½fÀµŒÀü;)RØ†»í‰Ÿ ×ã~ß¼ÿfæ£_ËÔÐL[ñ®„E¾Õ·Ý?õ¶âA](iÎ
LY&]‹à€l *9Î½þ	Z=ÐýòIö ±ÕY8_ÒŒW{SaÏÓ÷U¼<^e#í@‘Žuo›4«GÚ,+^É.U·e#WD9G¼+óë»W¿¼ÿö#ÿ1Ô:`Ù”DöÐzÈ€™çUL:³3Å“R’Û"“'´W¶¶št]gÓÞó– â%&ŠÒ‹¾ývÊÛØ–øá÷ß_~ÿæ#YX:²‹`º´|+¿ÿþÑºŸ¨Ý/<-qL)çèÿ_ÌÈ\¨¼»A±v¡œ‡Wè`#s5E5Ö}ýêž·d‰­5Žêõù+yP‡Wc–ÿåMv¼ Áï¾ûÀWåÑ¦¯yS”Íwß½-D òHã7ï~øî»_Kž[G›¾¿­¿ûî'@@â·3˜¾R•øI À…cî§p'vû¹#Ô{²K@º£nl·?:oåLûrp·Ç²}Öòvåñ‚]ÊIÍ;×¥¿Õ5@SS
Œ5Rù÷òYU|:Tf¾iYfíò`éþ¦Ù'š6ezèÞº"~ð¸Ð¦ÕÈiu#øÃNèv«±ëFâLà±6àú‚8ÖêXeŠl“ÑR/âÜíßÚ´å£Šš°Àq\3ŒYèQøWßyŽˆír7 –eûnÄæú–AßŒ=#Ž8a‘Í¨Ëè¡’³î¦<kŠ"“¹Ñ2¹­e•v‘‹B«Y÷ï#áè!vò}×‘qä³ôå¬óÛº®{¼.K¸	ù8^‰—%ªÕ<Y]Þäyñã÷/f/A°‹Þ¾yÿòçY#ŽêÅÅß¡§¡Í³¤hú.ž­ûõüE]§‚Kã1D+Ü	Ñ
Ûu}s'ZaÚiboE+ÄO¶í™ŠÑŠnaž‚)haûâ•Nco¿Î‡‚ÝóÎjè1¾¨ßN‹)(|ÝàÕË7¿~4Š^Ð}AE¯BºèS†¸%ðûÿøç»Õœ…?y!ûÃž²ŠÓj¸ï`nå(@Tñ)ƒúÊÂ¤7þSc¢ìâž«÷èB$„Áû×”WÜÏ‡äMÕMrH^süªk/OpNúþwDà‰ïÿùþÃ«ŸühŠÏ|° ÕYƒ_$¨r÷LÄÚ}óOa¿S¸§]ØïQ¹§†gù!aìû>C‡s‡’ÐŽÛg6÷í84MÏ2æ;AÄæ»œR# ¾Zà«’÷W‰Ô"Ã<ëß„ôûœ¸p%º(ÏaçTô3¬ì (eÂ›×âèu
ÞæÎcdup¾qQûÌ÷ââŸEnM–Ír.Ê¤ŠÁÛ)ƒ¿·5—=t%Wë~ºÂõôe×Ó1|wÇñ$"Êàn¹Ä÷S5EÞíß'§ó‘9®‹s:‡êÓ‡Ë>|™¬G—Æ>Ït5²Ù› ÷ÑL@ÖEÆ…w*ÆzŠo_nŠ;CÐ1ëÔ];˜º¾{¼"¸ÏMmò}´&t±‹í;6\'¢FLƒDó-‹‡FÏ	,Ë[h[Ôw˜1+`¶m˜»ÁTüÒ‘`üöÞ´¹#]üÎ_83­TîoÌPËn[}$[§)÷ñùÄÈ•„¢pQ€(ö¯ŸÌ*,¨ÊÂFHB«-à›keåû¼û›Òõªôàzì¼xÓ±£˜¾¢&L°M/QO[ä')…‹=­&4É/¾o½AçÍ«7?üIgÝ—:Øª›ÛÑœÀ6DÁ„œAA…¹_!´ÞAŽWòdÉ®r7
PôNånó£Ù-OYwz¾.ãÑLádïöøwTFU³ð]¹ó<%©Ü©ˆ˜/OKÀø¸^¨R¾X|¾©µõnnWÂÑ(Ú6/ìj)ë,ñkü–7ßv©½ì£ÚxºQ¶gp3W¼N¼þ¿¾*yïô|gî¥·y-/ÖÏÒÉ¯z[:§•.××²†o8³û7ÊÎ
Øíuµ-crÑÐŽÔ“Mµ³íT¸Mc¯ÒÃ¦¬y®†½›O#Mf³Jý¢òÅºyÿöcÃpŸèb[®Ù M·L¡mH×­n¡…mÚó…6tKë–ÊÖõÒÁt:›qñA hjþŠÝ ¨ÃÆ{†-ÐNp´7xçòØHf8c@3 Á>ÀT¨” 9Æ‘ÔÒ‰ôÎto”< x}î	#ËqAÀ— (b@6§jkDbéê”g¡[F—„Ù2¼lã¥¦ŽÚ„Fwi¾À•Ûõ²ŒMÛ8©¢6äÞ8CÔvu+g#9Ì±kKƒ;$<ž[6{ŠW“úY‚­‰cÏñë!œ(ŽîÜðU9¤›awÀÀ0!%Ý^ ð¼žÂ2"NMÓ°#" 
%âK  ÕE—œso©Cé<òÒ:„”ò†8‚-‡Z(‚6)eßKšŒJÄµ°ÎÓ()‚¢½¯rÃvTB¼Ú´2WˆÖõ‹ÅK]ãô¦?‰ÖËÒ°øt„üÂ²ûÂ¸¹äß±áIÇ§T¦ÈïzÃ¼´ZV~‘w\¿yñÛr¢ˆü.›ôm™w`8)2¿õFÓ­è”¶i¤‹"»<dKÒ—<[bÑ_†±Á`|"(ž®¢xfgr%‘+ùãˆäU)€©^¹Oß¨U,›žZâ9`¼Š“cät¡<$µL#·¼{ÝÎ²íÜ¦ÛW&°É*83
’å¡WÆy±“PQsz¿l*²6ü)…”å>÷ÃÝ
MÄsØ½„ÂÄñÀI	™ Pb F2E½fá7ˆ"ã4u"°6Ž™°”XA0ñ›ëU²ªWÛZ×&¶•ÜÅåÅ›Y¦	3uv0¸-ÜhJÕOq'tÔm¤(ÔD´«ð,ÅT…tüñTC#“-gB 4=.‚7 B[Ù‹ƒy¶6î‹;¶ÀxòPÌŠ1vµÍ­k‘¬oñ&¦ô¿7UJ¹²…JIP«ðh•«/Ý^|XÅV™"åôôìAüwXYcoë²˜7º%/¾>¼xK­Õ7µÕù²«ddöÇ±ípH<‡œ:¸»0X2CÚBF„a\ZÅ©P^Hã±ó^âpZyèÁìÌîÅîùS¿¢F&f+ì^`À–Ø=žç|ÝÝŸ-;;0|&·v~}.†¿ƒ¥ãÌð·³Í}/œÏ™E¾J Y½ƒg¸äÛ¥ÐR&rV9êŒ2Q¥¤Bcñ2°wÊ4aÚHÈÉ1"€(‡8oïÖñÛKðì˜uòf¶Q¯ŠvEFËYöÈÀíË"è¢3å.v‘³¡3Éc®‡¨îì$'fž|2fÙéü8k0©÷9¦â,fù×Îëo‹DšÓR$y'~}q=ë _Ò—£=­¾Xhãí(v{ƒðX†}eÊŒÈ½”Þ#ËzY¨®{•t6¾ëü>è™ÌºBƒþú×ë·E%Åú›ä+ØÄj“ÿs@Ÿ”Ê†ß£•Ü—T"\ÕXch.v²îÍé¯À45þ÷ƒLž,}÷ª ˜´L`Yðµ8‘p«oÇÔbãz¾¶özkÑ{€Ù0ÊNy!Žÿ>?m½uB›ø`âuìµp²é­D÷ƒÆÇ:a­S&4r–*D¶ù <2Â‚ É5·^é(âkˆœÐR;K¨µ€8Âˆ3Øúßç"xµ*qLO½”¿¹êN™˜ýzsVëu)µ//–'¤Î¾¼ˆÿ[2z›Í
ƒÊ
ã·Ë«+§pQ]äeçïË-¦º„*ÍËÂf¿Ò_œP”®„É	¢ b9’‰¥K¡LƒäHÝRÑpÔ=¡@]É	m]­ò4/Û¨ªØï°ÕúBÍê‹Ù˜;cŠvJ‡fµÑ6yT×j.µoÏŸÝ}`o6¾“'Ä¢fÔL‘TJó  
„mÈ°aJ‚ðK­ÅJÇ4@i/cÂ"äzS†ÅyœB‘±\yLW8¼Ã‹¢ŸO8«Z®Ü³Ð	Lsi.fSÁyö.
/µ†…œ&Ì!v6š‘Ñ’vî†j¤ÆE®˜•txp
¼ÁTÞK¡¬w%9c`ÇQ¯*üÃW‚’T‘zöÎø”0á ¶dÀ­ði†²\>;ÇcÜ³ÏyÏyŸvpÎëø­æuüª'Î™Ï™O23ã7_ýÃF÷ùí7“Ðqw1öõÍ&Ä9m´@VPa pÐÇºëJÍðÜ8@MQbÑJ °”PAÎƒÈbÛ$Ì®wÿzw•ózus¹õšæ(ÅŠ·ñç(/ëÙs¯¦OB„%(U„%Êe÷ôªäJHª[úòKq]OJt%RnéØ¾üX/‹T›¼«Dšâdµ½àÈzô£jvPO¯œÈƒè©¤sRŒ=ðk©¸´«±Ñ@s"8R8)cá£ÒÎ8/Ð‡­g	KÇZÔ%Z«¾Ü.Ï‹ ßÚ„Ë~«”Ëk‡ˆ,·Ê>§EŽÖ{ç.æÜv¦ÚnŸƒ9²ç,wsÄ0l>-SY4Â’Ð•2B(U*€(,YÅ\œð3—>).zÙ–Kó·çÊG‘÷)I–¹^º³úô'Äo'–2È±BNS`‰‚O	`Ni‘I¥âžäR"l…Ó!M£›3Þnà7?__¿þð¶£&á†ŒgöÄ²"bÁf[±‰½¬ï lÕÍÃ©v6»÷Ë´yþlà<y§Ÿ’™\XÒÏlL=‹FÿéFÚ²¼Æø}ÐûrŒƒ&'ð§²eã$a)9<5»ÜÒa=³Ž“bT‚–)êVòZ,=Üc&×¯ŽûLÃžÛ.Ûw€lA_Ì§ÏîÐ©ËZš¥fçð+*’”âºÝY›˜%2ë›òTí+;ËŸê³êÎªÿl—t¬0¯N··ÖB
Ì-&Æi5ÂÚzî€!doì¹¤ááJ'¼2€+(=‚j¹9ãXtÌ—Ü•+zí€RþÖÝ·M×?J%úÇ°Òéüc	ö²£úyÖù4ÈQ¿åô‹ô^aô‹yŒÖ‡ÉÈ•sú±hVg=¨ê¤§¼Ö òXz‰õ{·wãÿ¾(†œ;E˜+Jï˜ú°ÇÎ5K¦€#`…«øÕ'c°¦ß¼R:›Œ»O}:ÿÜ¥%)¦ÑŠ_YùØSL2W2C*æ¢ŠÝÓ§É¹+oL·8úÝâÐ·È(ÀW}myc6­÷”bHlé—]™RËò†‹j}×Ÿ3Hwµæ|†k½£Ë¡véþj˜Ý_í<Fx¶—³×ïO«ÍÕš-;Ê »/'Ëo{O†Jïq{Y¬"Þ(ñ®s3‡3dqYw¢b73½i·PÜ®êü|rZÔió— ÐrÕÆÛƒ„ìÿÜŽÔð®ëAÀw'¥^ÑÄ:/¡s1!¡`3 5W‚{å½bÞ`í˜GŠz‘d‚0á-HsD6ez‰Ê÷"Šú¿&.lôÏÿ|ýá—N¹üªB¤¥ö~S/~û¯âó_#_ªv¹xâœ>¥Ÿ[î‡“qÉ³¦V—=D“û]Ï
>çJÀ}6r±Aß}é5ÜÄ£‰ü‘ie\ç.öK”¤â³*zVýŽWù]ø)@“ø‹Ádœß¹~ÿåÅxä\µ—8Ž…—Þv3ßUÝòç@ñØ+ˆÓ	TÑI>€¢8 ÍnÏ>a/âÒcõåe§L‚šOúÑý™…õÅLªa®e×qô”8Kcé±f±œÄjvºT4ÅH³Ô@³åWô¬T:)¥C°¥=bE©´üt¨UZø¹Æ=E½Ò?&öñ`þÕÇOù~
ÎÀÏêÎ»«;nŠ;íw¥¬š¾ÂûRT iZB±ÅÆ+®˜ô‰ F’ˆ•µ6`NÌUÖsB0L†˜2íI+ÉJXa‰€›Ø>PÐãÛqÑî¢”Ù^MGïE¸]VKxSÞ+=:3_+TS¯“…s‘ýk‘ÿç>zØž÷n=^§Óbà%~(]\>-C.Ÿx—^¬‰²,òïg~)±l$N¦t†‰¿›åÏ½~‘“œ'#I&gbÙ:)¨d”s\A“‚àd*ž<'OG
ËÈï‚#n•<¶9òDíE~ƒpÓÞÕ,¡ 	±|GÔ)5SÖP$•ªZâ×ut1CCœ$0¶„9šlä&ã^?¯¡é…­œŒ]bé9^õ¯zôxUußJ›‘‡q>¼~„šÄ-^møÓÃczûÛ¯-ºø¶Ck7´N•úÎ¹íÚžsÏ¹õMÂˆ×ÿsýñ§÷?Þ 8æ±"{çø¯0~/1ÀÃü¾—›}èˆ¦§ ¢%6÷µ]Hò´£ÔH¨u–ÓÕüÚI¦Ø~¤Ì±ªÅ´÷ãl¸ÙJ;)âÉb_³ÝWÙ}2<þ>†ëg£¨×-„ŒG(,?ŠŠ²sþ¼/íLsÒT\Í¢½òÆ
\í©E¹ÆqS»åe¯-øV¶È™ŒzãÇBX»¹WÃËx”kRÀÇŽoÌÝ§&;¹Þ„7Ñùq¤l¢Š
¬&šˆøFìÙL‹Z—æ¾²{=ã¢¯MØÅu›¾HŒ3õãë¼Š¦çZÚ^®î›^ÒÕouIS¿è’¦aËÌþS¥àÍÚƒ¹LZ7kQhÛŒÿÝøìfœÝ„OMÔö&WÞ¥QÝÜ¹þ0êû7O³Ð×RäYÿ³»	ë1ŸnžÍ”¸WGó‡Aoò||SÂ†$Òâè•wt}±	õ“]PòÇI§¼OW÷¤V<¨ÁþÌ7Ý[Õw#uRVÄðc¬Šš9`ÑPpÎµÊ’Ð!C\cC”·š‡Ï\‡or@Û:¢5Å…KÛEa](wË)j*L=•Ï¶oÛ¶#“³b2„À²a‡ .ªagÒÒ¤S¸³eç”,;„“¶Ëk-;Ó‡{L! <MÏcç™ŽþLÃ~÷V¦•Ý_“xÑ°Ìº’]Q«äú½ÁäK)È%Ì«ŸguF­çVì[fá.}œ›ÛºÃÇñ]6HÞÍäµuí)|]ÑñÛx±NËŽfZ^V¯L’Ý¨ÀK54‘¬œÅÍÀ=ÜL[4GY>ÇØ#¤-vú¤-¡Ò#„FJ
”¢Bq <—Z3*¨‘Þ h°ÒPÆ„Î	é±åNCC7å®û5+—çáôôT×âê{ãÞr"»VUSÖç”‹éhõ® é‹ HÕm‹ó¾ôñwKý.º(zlóÁúiÉ²^	L³AÿqN'º;äË)À)òÚÅ_Ì¿/²¿[7Œº¢˜é vz39Ó„R¸ì™À	æ¼šÍ.|ÃÓsäT_”3î<)Ü)Ü2æ®úP¿A¥ïn•LÂ{¿GŽv~§ío~ì<Û­Mêé¦Êg~á½øño?^]Z™º)NIß6ÓÎyuõãä~½ˆcí´««¿F¿L$“I?¨ñ]"éGw?l$ýÙ³áøêê]6¸m$þðÛõÛ?©®ó««_Â]ž´ùxÔ3µg© û¬Fù¡ªòg±n(9-07EøÞMÉÞÍ¾÷åÆ}^bÊF‹Æ8ìè}/ÏSl“áí(pËfûD¡mm$/QÞÏšèî²±	ïDÙ°Hú¸‰%Ö“’T,Ç!ïˆ°Lg™âšm7R3I½ÄŠ¨06%p$ Xê<ÃŒkT£{Ÿ‚óÞØul/¾yz£'Ê„MÑ»'‘V;Ê #w^ËâyÔ-¨¢G¿(aà)ÄR ’Ã°`\B¼\}1JP
B«5•¹äT‚ä²ÊqÛÎBÇ)	©£m@lõqOÜˆ£ž˜ÑBÍÛàÔŸ&¬œ]ðÏ.øÏç‚ßÖ¯=Ð³¼÷ekaö[”Ïîìgwö³;û3{£¶|7¶Ï¨.y£FÍºŸ7…²™ìÁîWGöÓà¶ßË›ÕX?>7Ó|‰é´Ssf0nÖZ}÷÷Þ y3[kú®ƒ4Ô‚4Lc20…xölªÄ·¿ÅÍè7oq$ü¥H¾•Dú¡7L#¼v}— w,H3óÉµ!½ºzûëO›|xsuÓŸáFÒ÷î>ëý»ye‰Ú´]³QTD&h|ƒ|ÝürµSt£û««×¿^¿}“õ³æücK¯®Þg£„®{÷áPÿÒû§k~JÚ¨PéG]N#}Ôz5EÒ±4?‚žo$	|¸‘&ºwô3Õ|õ$jãK Þ¼ySº««üN\óðjë½JÓ€(©BõÒJÏ_zòOkØ7êßKâ›RIN{³(¥Tß(¥ãÔ­â4akw¼«n>âßc‚5gÞˆ’YB[Ö.õ6ÖÂ(g½EÈa‚µg„qË=‚†z©9ÕÄB	 vÆâðHx˜ÂÇ?„2¿Aõ~ÉMé›ø¯ë:ï{¦pï›+´å‹d‘).Çæ.:è¼îßf£Þøî¾T»þ3«ä½Ï®ÿØy;óaùp‘¿[ýâýë¾½~ý×Òç=¯ÎJ5Íê²óºt^/ŸM©ÈóÃÓÙÆ<™SÅ]¬×¹âBÕúÅØ¡›~ž½,”ó³ù‹E¿§¤NîÆ±aî¥ãü àÊú¥[U¡½VÓ¼ÈÂõ¡
}5¨/âè_ 0ÁË‹‹×›~7+Ë’wÙ¸ôqêgÙ§É0Œ2u–¹xÞÜEùýËN)ND_Bßû2ÍàYìeø¦èøó,¯çaóˆ›ÌºËÛ,»í»"—øðU¹‘Ýø7$gpÆ£îyž0œr C†µ¿–òrrQ¤ê\äå$9Ý‡™oh·|7/ãKš<<õ¯/=øê‚wN	N1 íìó·«Ð4È¬ùZ×ñ¦Ûµ¦»BôÅ¨6+õænw0	Ùyú¶ô³Mqî^nP‹,n¹ÉõG*Ý‹Ÿß¼¹	r|d©6˜Â–¦&¥9Y“´•žqKávºÁ­•j‡¤.îÛ4yìÝhmÀ1DÓpß;CâTPÈ˜°–*!“ÎƒH°Öí›
‹œÑÍÝœ º‘OÐ\ïe!z‚n FKYÇ9ÂmnÒ½'ÎøfŽoÂnï‚oRýSt6èø¿ “Zñí)âÙ¿áü$ì§ÏiM² î„y5eÛ@ŸÀÙÃ-Ó}è…;ë¡['µÏ_={—à%š¾I_" x`EþyÐg1öÈ2+HN´S‡H'±”;§ÂÕ”·AÀåê fÞœWoÒùüw±ÄÎt‰•räåt~tù§q6l€A‘²À"…3¥|î²AóÿèLGº.Œ½Ñd0(2ŠP1[³¨w>ì«q|n±mäéyQÚäÎý2b’n î„a]øø©—åŸJ>5x ÌõLˆƒ?ÜõBû0_ç%Äzxè0 Š{gBŸ½<ŒkîNçå¦>˜«FxßØ- –Ínž+;8ÊîçÛw`GÎé1—ñŸÎŒc‹Mµ×J°Ÿ‚ÀÖ‚áËé0àTu)8ÖAiFkß¥nx)ºO_‡¶nœû  yxhoBùp6^MÏ{~H0ÒjGvöØDo[wíDkqCó]·˜¬êx#¥`¢”·GGO«Š­g€@ØOü…ÑlÔýá¾Œ[d/—·©`û‡·ñ‰ôáº-Ïd›eøpãGvÚf)·á¿.ºm\‘n3oß¶Íþºb9,9(P·r¥×Aî”Vs*ù1ÚªÝ?nÝnpY±ªý‡öíiõÄíncr…)`³½Ñ4aÂì~Ù”púëWŸôT¬©M|7½«Fî>×7mB¬»Ø6Ãl[VxVM_Ò¹øH«bàü€åLIÍBéð*í& \bS^q*5u ÆÀRAcHŽ­2œp 0õ@{îÅø[”íâ§)„+`k©C*¿Ž©¬Fî®\+t_uh8ìZ	…óð&=D¹¡û§Ý^vþV¨ÄâÇ»XêoP¤*(’yÍ:)/›NØR×ï¼øðÛû¿¾ì”ƒÆ¢|åò¿ä%Þ{y«Gã©¦®c33YèÈª:ÆŒT¿3ì9õ˜0š˜èò°@6Ìÿ2Ø¼sµ –PÌ ®Ä%Q±„R®·".0]Æ°-!X–€_ÃÜºÅyîÖä%„__¿ëfQu~ûñ«Ñ¡%nÄÎ€•QNÛÖbnë Ûv÷ÑNJ®=æhRÙ0œÛž
×@UñÞLý†óX²·q¸FêK¯÷²tÚ~x¼uÙ£VÉ³Û˜ÿ¥®A¸½âVCbl¯«†uë7wŸ’ÕÚÍ4á6Ë½û¬«ƒ¬¼Në¨A÷vÒ«}¢·“À•PüN=Œÿôº£É Þu”áŠœ&„oóY¡ítúlT×ûŸ*p¯¦ßw*bjÉ>«nc[GdúÝè ØÍûžüY+âÅ›*Àº}ÞÇ™æž5¼âE½p­ò^Ý+¸Ò0šôÒ©ó6s
Ì?0’€ºê¶ö¯4Œ]©K×ÊnS]¡’¸˜@Qh;‘4Û¤ÓÙ$¶˜ò¦Gë2OÂ+ÓÞ-’*ÔÐõUž?d£ šˆKc@ÛÝùÛY¹szèE×0ë7ÝQSòÜ™®íåÃ(X¤¬¦é¹æ½|Òm¼Àª²Ç:ªêÐ$šÍ²ÙÍE¥ÏO³Il&ýÑ$ûŒb›ëœèjœ–ük9ôDÌâéä(Éà‚:Î$r¢1"PqK¹wÚZ¦t@â\«vš¸Æ¬óZÇtg9êë—£$Á`‚*rTø
J&× ïIŽ
º[{”¿&A
í"H5ïÄî’” |ï’T«+éTD©}ãþò!þi?uÃÐ¶^pIÄ£[íëšÆB7å|²¡„ùCx€Y­ÔÄ91nÅé(6™5J3À(5J¨-7ØP‚ –sIX`Ä.°a‡Œ¦VyŽ¡ðs) ôÀobÈo²È1ÃPxý• d³]¢}]°)/,’¢F†¨]gYªŠyêlx¼¬Ð	B¬„4 ¹¬„B¢X]yÁÐÂƒ€X4§)šž¦³~ðˆúAc†V\MOb`®}Q6^~‰hs˜ÙÆ§~mo{W2A™ñyð"<éÙW{U®\@Ñ£¹\»åLö1ÌÕ0»¿:ØXÂ{#HÛÿAQ¼QÉSºMi˜ƒ.©¨s°•”½x1®ûp}tòSç»ƒ½á³þºˆB¢?hç³7â(ƒ~¯:Â°?¹í¢âôð#t!eb²q6zìÞ»±Ša9GêÀK›êñÍáŸtÐeån<.“4¶ÿC_«ãeÓ;H„á?mË£rA-ûÞ]#Ö`ITßå‹Ò•êNp!è4t3™ón’gêR‹">°a+›EÌöî«òoêãˆWš–¥«Â¢~u5ÈnT6¼Jh?s•¸ªüÜÔ,.ñËåÂèvõg>B”Ì-¥ét²ÕM+n:Ó«%‹íKÊì^½’‘ÜW´Qï­³|‹FÊÖ•¦âÙ¥R±b·î©°&_=µ)§t=uîÔ$¿,­£WOÈ»ô²Î¤¼CK¶æúIÞf^ßaî.£ýøjõ‹¯Z}?å¬Rú)xÏUÉpžTá®¾òh
o‚:X6ä7{4Oý”ÑúÊãküÕrÙ«©“×Fßè
Í«¼^ŸÜè2¼-C7Še¿jÛÎÐËå—ûMe’‹xJ^X6,tõsÅFÊKxyûïäæ~SÖª5Ô+¦$òv#<þ9|fSËÞ¨@Ìk( $*!„V‹°ÞÄÒJK®¡÷À1	„¦ÑÃ•PÂKh¾s[ËÔo€¦ú@Ê)ŒÆª­Er[²µ)`šÿ@ik9ûÏ‡€ ÖÞØ-­-uÑz-­--ÕG³ÕÒÞ§r,{Ëöc¥Ù[vîÿ ‹hgoÙ×0]R’½eÇÞ¼€F{ËN}tò‰ö–û?è"Rì-»už¨`ÝÏ ‡ß«ƒŽloÙÃ]H{{Ë>‡:ðÒÚÙ[ö7ÐA—•hoÙ¹ÿC_ÛØ[vì°ƒ´±·ìi”C.¨eßß¤½ål9ÛAÎv³ä´í ~’Oó©]¡ÀWÅßgÊÙ‚r¶ $ZPæq:'dGaØ3F(20L‘(ü±– )©ôFJ¢€2qÁ¸fN:G”ÒJbL5’n°£ÄSÿøñ?;v¦QUEúÈF‹JÔOÂ;83¤d1»d™Œ{Ñå)YPXrä%•xÙ~‚e5ßó¼Y½Ùd~†ÎÆ“ã`R>Kæj<Y²xÌŸÛ‘ìÕxÆ£xÈ Äm¾Bœ¯Ét^9IŠU'¬3¡Ò×“g¸Ôçú‚_‘õÇUO¯°eN¾#Ï§Ä²Êi¢Þ3¡!sÈs†° Ô3¥•z¥,Œ9ôPBÎ(&ÂpmšX–Ø;Ç§Ä°äö+¦X$
˜•JcXâÌ¯ŽÎ¯Zû×ñ+ñ³+qRÜêR\‚3ÃÚaÍ4cmÖÂ‘…\ÂY¹ŒÕ]£Lü ÂÞ²Ëp±”(4Ä‚`Ã1ò
IJ¸#6ˆT‚•¶A¨B…_æ…©Ú1†´Ö’ËÙë©ÛDçŸÓõ7W=jhß«ø¬¬ð!}Šl±àm37‹¹É­çÊ¼ýÖ…lÝÀ<øû“"YÎÆa¬Sý¼ì3fø™^Âf^æ¨¨ƒÛYö^vÊºK_ïJÔŠ“,Jä//fsìÌÓ¡M+Ì¾¯Ìï¨zvF7°jHÄ—ê	…¯§¯¯'D1br™W3)¸À~ÍƒlŸ(cÎ•ËÅ»Ð­}Ú³ì£²j'ÇHÐíÙu«íØ¹ãmS",Ï²ÞI¯ÕÝ¶~´Ö&˜Æ	ío°fsâ^G\IýølyÙ¥1ì˜£yù1m~ôc»’ôÙ>ò²KSé1G;î÷7ÚÌDXú_MÝ‹÷u™oìýÐ8Äu4Ò¡¶·ys÷‡^Â¾®Ü½z‡¸T“F:ôÂövmnîþÀKØ½û,¿ím¾‡/w½ºŸß&—»ß[Cí|“4ô¿ëkÞÐýüÕ¸Üý%lªÝk±£fð¹Ü÷êïµÉh?u>WEÁmVðÎed´—´ H(ê€L;Ç¤8Ã…GÞrª‘Txè,WŠþS”A€4ä„¯¥ÇÔ›j¯?¼Ý¬óûxç:j8ìÏláÞŽÔý}Ôëõf•ç•>*¶iMÍ“R“M†R¸’0H<SÎ®±HèJ+#‚,¥eL¢´l¡ÕÓÖ-ŽM·îÀ|-š²R†V4e»±³¢BÚÒ!ãéc«3Ÿ´»v›A<º®,mÄmÅÅ{ß};Ã:øõpøÆ½L‡åºqÍg[>wÇ*ÿ´˜ã»kææo¬™íâ16õ†—W°4ÝÂŠ ~: ÁxÊ•àŽnÖ
	(ôH[°€`Qkã˜,	!h(i	ÞÌö!ÖÛˆû°ÑhXóÝëþÉ•òá«%Ãà$ã÷¾ûìl§¯³É8?I<Rñ…|ÅC†À«	1(å,ÍMfÓ‰<‹g [•ÚØ\ì„@F;èÇÑ]àÁ!Ö¹7UïN ¤2è+(_~nÖcíq°UÓ“ç¼ÐÛt=@‹ÀâtP™ðÂ+F±[€¤òÌ3K ãD-TÐXŽÃÂXÌ)Â	‰cú1q[UÎÛ%TUÊ« ,ó_‘‡$+p„+e ¡$2~UÉAÆ(i©À‰›wZGZ@î´Š
ª'„®¬'{d©fÙ]ÐÍÞV´›ey'ÄÔng˜t†Ii0iéöyl”Ÿ’•‹	E æÜ"$Tî·=–;OÇÞpl-SDB àZHK©ó‚Y»)*k4ºn²rånô9ðÝÎÌJ¹bÞz‚ŒVTá)~±N×ušJ«Õªy1hB
AA‘ðøZ¨ül{ü$ Þ	?å§e;*·Ht	ÛÝìk=;ù´íZ­àŒœö
/òg6­¸žÒpÔÕÌ”a ô!ª5ÜFc³Ú#…%aBR#Ç3¬< FÂyK¤ñq¶ÿ.÷a³il¾e«ê=+b_RttŠ0‚ÑT¥xFP «0‚ÃÄ²»›ŽÜR<ƒí·Œ¯„§/Úyhïjlá°½08Ä:÷æ‰¾içÞ{†&ßR'u´F7æÝáÛ¦‹ð9 \ÜÄÓÁopduÔRf¥„ £ÌD€á_ŒD0!0PøÆòÍÒ‰–øí÷°ø^™-q3r3Y 1ff:›M;E*R—Ç¤>. ¸Î$þ5ÙÖK¶­QÈ ^qŽf19PÕ9Zà¶ª¡¸—g ÷õé†âs;%ôvF°kôî.èio+Ú-°n'D¶ÍåÃö1–^Ñ#âŠjÆðmÓ,áK4¿>@Ø–½ ­´Þ¨4ÂÜ)È‘Š®7Ðiè13i,¨v1G¬’a©€Ðq G-°(½
êlP½<ŸbžîŽêÝ(B»ŽêøÉ @eZ£¾2…¢¨°JU“„N\ª‹./.ÞŽc:¦Azê@ þïäÕ)k2õtß-õ3¾Ë&·wëGâê/bŽ¥‹Þ}|ýŠ/ò«N?çÏÜ‡•Ù¼sF0}§q¥Ã—[7p£ž)¡¬¥¶óà:v”‡Î^¨ØG™E¥Ã˜öü¸@¨|0¯ÖÍ`$V4]BÊ×£€9ùŠÓ‘àV“+A!Ø¬ú]0ªÎ°[¼Ýúóÿµ #¶=2j¿';ã#DÄVø¨:Õú²%íî·tæSS¼¡q>û*¥l:2ßg{çû³²$½ìjñãÂ–÷ÏOÉ~
 4P[`µ’0¢¤`r£"@¤<À(zX.ãNÇãŒñzw×3Cý6ê4[!B+Ù
Ãaª+qS¡®Tì¥EN­eµ/ÀÉsÔ;/Gv‚öÇLë÷cwnÊÙ¹iÂívf§ß/;ÝÊ]a±Ñø’¬Skíþ×8mÕÜ e!ÄÊ„Ûñð'Rjm©pxÍ€Ö^j%²X)­“Q+¾‹~Ì²~ÁïÕ nÈ,«í<o?{Œ\i3G­8#”Ù~þJçáC©/ªÙ÷ò²’ýŒ‡þ%_¤×ãU´áwás?†û¬«óf2…iô;Åƒ	¿Î‹L¿>ë÷³‡H7³ÀäWÿoçïá8…~ùøñCüTü}}ýË«ë7ñ§ÿvúÇ×ÿŠ_½yßyÑ›&0	‡ù¯Ge‘Ó#VÃ1Ye‡Àõìñr5¨°ev(1MÌ·_µŠcÜ­=À'Ï§r%Þ^®Lß‹9 àÛe#Ùè%±å…”Îª6ÐxvøOœÅŽ#¤°¹‡‰/ìáG˜2ï£t¤»º
Ã‘äCiEq˜£,jÙ‹àX#aÌùàcµá+µ&ÕÃàæm‹çz^Ý4¿*>ö{áçûÈFîuMÿÜuxUüž4ðOÓïf…ïQüxÉ|m{Y^‚)kßŒ0b…7ÖC¡ÒT’X©Q))€p’<gZ `©fCo ðC‚Âø¢FQÅ´œ_¡U[’³6I5Ž«Ïªë¥1Ucl=XGŒÃÕ•dK)Bg‰)¨[œ„îWl*Jbíà3CêÛ°3P§˜nU_cñ´êT›Wú``=Nâ`½2ÌWÊŒ÷…éÒ6<‰wî›CÅkñt8”""ƒÆŽ"*	Ò« Žx $R!4£Vk‘•25rŒ ©•48T\dkUÓèä8”HæPœ e7NÄª:+ Aš¯BE=s¨ãq(F¶J‹²xZÏÍ¡´0;r¨6êŠ}ÕŽA]ñM±Þgi÷ ëÛñá?ÒØVì>B™nóé †¥Æ d?u†O¸¤fàâÞb-%’ÌS-­d& ~DÒjKdP™®u+¼RßöÔ`„©°…´RÁ’°Ðb)ž˜°Ö°eje?£—ã¡ÊvD/Ó‡v
 æ(—KCÏ×Ïù¿røñ¸øVºòÃë¼«ë<†­‰ÈkÅ<äÆKé™‹ü™k«Hô²ÁVp`„Œ{B¥VÔÁyL¬`›UÛšc'4>9–MRY6#L.û­0DaUÎ0I¬¥óô`yöy6á[eýxúÔž›iïý
Þ›þëgÛ;h°§=6G6®sŠªD6Î¶]²éAªõ7¨ÒøÀçîŸaÕ#¥uo\ß½œy\í7|òI™pGÜ0Òœ…\ŠK8›”¼oM:c´”c`	…†3f¤&,fã$Q¶Åá'LvJ¥•†(ª1§ŠPí‚hk€ÚÀÏÃá÷£€»lÿ±3v_Æ1GfÜŸNiú-ÜRG…wèç^>QýN~çúýÔžônïÆ7†f1igtK­¶îÜOÌ]§ßûT~TÆyÙÉÑÇ4Æd„¯»…™85ž„CxÙ)#>T9Ñpù,ÕÁ{YDwôÆÕÏ³ÀÑL&vqŸMòpaN†EÎ™ÎÓùý%ïh—çÃÖçB7á_]FµŒ³èÂúòâsÏ=tÂÅ[ìÆ¿{ÃbêùËâc fa=½À":ÿüð>/ Â”Í˜’ò (ááááò~º¶®™­­À› œñhU˜CÊ b°j” ˜	B–À’Y­½Ça@ ¤ÑxnºåÛÐ-ÞƒËòJ?x÷ÿp|€¶Â +ËÜ•ÉKÉiÇäÃëì{·/î×iºšÖ_ÉµÕpZvõ"î.#[În{.üJ÷¯ò»š¹½šä£‚jèFýº~Oß†ÿºš^æÙ%xñ×ŒæT'íÅ6%xjÝlxÉQ"ùpÞ<eÛŒ°Ôäçwoÿöæ]¢KšÖ:ï‡³Ûf†•×ï^ÿú3JhŸÈ‹dpuõ7•»øe"ùGw_+†¤~»~ûG#•~¢‘*z¦v1£qß¾øù×ßo~y}ýKÃf™¸QlþTà“‡²¶,¶Ä¶7úÿýÊÍ«ˆcâ/*4³_¼r¶7¾ì2_Žjèâ‡»Àqú‘ë„½Í¤÷æÒ:¯&ýñå'÷x¯†µ¤î^™<‰ðË¸ö÷	]Ü»Á¤Ž ØŒz¢Üç5«×Süpiãh&¿K![K5»Ö>ºÅ/mÏûZ‚¸¢Z‚ˆtÛ`äáw•&”¼ÀíüÍ;h‡’5Œ	%: æ9Å¥”#Âaj•F)ç£ç(+'4€e'9·@o@É¯ûc7 óÙuÞ¼zóÃáÈ…Çe‚ —6cá§´ðô®ïr_†áŸ<€_3ÊÊ¯¦„à/ÿWÏÿååEø§²)~ŸgÀe1qL'¼É1ÙÙç€+/.Þ¿ùð¡€Æƒ€~ë&[`ë"õY|o#ì !>Þq—1¤zŠ”Ã´Â»Ú²aÄ!«F6¿êüçÿ£î‡ÿëŸ/;o¯ë¼‘`öƒ,Qpñá‡¤¸œÏÈ0+ÀÅÇ{æ'ý[ÀímŒSÍªXwîzA8´ùEÔíè>ÚÊ›TàûJgÅ3+bÐÂ¼g =óó®Ãþ|,Ã¿ã¹žôm:Ø-HùJDxhùó›7A*h/^Kþ_4)v¥«úÙ 2÷^Œ3O+e†ûzŽE	¯C·qø—aócüôí™bé¼|Ô¼§øîØÎ_b‹¿L·¤ß|Ê/¦¦ÃYß1L=.*î‹R}8xq]q{wü(»Ë9¬†2Ìà²Üëð<nÝåÀ¤¶*u0¹!G1B-×çÄ<ÐVësâfgÝ0Ãnq³tË;¥…Äñ·ëw7~tŸ]?Æöê] <“8­C
«ëÝY¿ˆ íD8‰:}Ú¦›~cgu²Bs§ÛË
áe›ñ4½¢[ƒ³7Bº*Çwâ×Ö}6ãÖéEg{.Ù,°·cØÜCa!&Z[0a¬ ”"!…cŒAe$$‚rJ%WÄ`$¬Ä’ê ÞVý> œ‚k„uÅú1¥z©¸Ý.—‘]`y³Ô%›™øtoJÅÓ,ÑIiÿ	,lÑeüXŽYd*‰!Ò÷+s™þãÃ-ï²Ñ§Y*Òw½ÁäKçSàÝ®ÙéÌ–p1ë.j¥ò‰îÎ>n¨bXö¬ÏîËeTµýüá÷¿–LãÂDX}O6pÒÈ†MîÆÓœ%Ã,ìÂxÎžyìØQ/>çB?wñÙ÷²nÜ‚bÉ*Ï{·ƒ2¡JÖùÜ£N/°æ»jÇcòÀdnoèË€	^MÉ«ù±]Ëi$BrQÕo…¯ˆ`›²ágÕÆ$[2…‰hkà4åœºñèoC×»¨ÝB»s›ë²ÒOƒðˆ²ây½úÏâ`ÐÜõtÝ»³DÚ²œrubýeµ“*ivkÕ¬PÊ#aÀóŸ•½ÿÍ£šks›èÏPfV©±ýŸš_Æ¡¶P”ûxi7ˆ‰Å*úy$«£˜¿ ;°&§á*{ ×c1Ùck‚{%jÉœ<aG‘†+nwñt
Ž!¦‚{nœ£#Êm¸i@¸[¤‚PŽŒoªQò.OòÎuXLq]E;Äd™Ê›Âÿeíë+£…Wg4ž±Žùu>LSkõò•_L;}9ÍÓùT$(j_¬Ì(ˆ^ÅV.RrÅÙEIçv!>Æƒ9«Ï–ÿ¯0°Ë#?½xýYRè!ˆ†ñ&z>œòeç}”)»ÓŒÂºÞRSü"´/?Îv=ÎFá8¼¼xE˜8v‘|Ry"ÛŠº¼²¦KhtXÑf¶ƒ«òM­xƒéªxÃ¥XËt`ÀÕhÙ¦‚¨*à„kPÒF¾3›h‘™tËÃ~ß’tÎóÕØUÖ/vw†(kÇp¢hP9"õù¤f„Mé…×]Xõ=’F‰‹×÷¼ë+-­L	ül¥AºU¥ž´°‰Ôe»šÓÌ%-p 	Žï×eoûKU§îÄ …yÍ©Pp!•Q™ê±f8²;PÔÏ-ƒHb#&^(e¸UhS$ú™~ûð‰~#¹ž†+—/‹]HB ªÉp¶¶d€éz¾gcÛÉ[‡bîÊSTd‡æ…ZÂ¯›&ZÖ§¯q;{ÿ.¦kÒ¬çÜ†]¥·e•àRJ¶Î·5ìûDâÖ:Ì.e:fH&±Ó"üŸ‹1àXƒY„ñŠÈÀc…€:´å"|¤‘½z¸±PÒÿ¸qçõ ´~/q7óÝë¡sæ®àï³Ñð.ëg·QçUÿñß®ÆRùÞ½QºTqfÃ˜×¹´ÉÝ/u£¦ÝTMtoþù÷Î‹ÀÉloš¼ùŸaøì>0(Î_;ežÈŽË“P³ÒLC•Ÿãð./.~ýíãOWÿ“M:ÑzõŠSVÐ)'e{%g)<ë2Wæ§XÆÉ]„®
š3Àp¤­[ $dxÞÕ¼‘ rI%[Ëý@|5Òcö‡ M›‹óìg¸ÛpzÛ¿¢ÅsÊãá§=ðÈ×¿ÍüÕÇÂ‹ãpÂbúÆìÊ>b°¥þÌA/Î²–gµ¾ž6sëòD§¹hÔ‡ŸW1L
ëÞb¸“äé¶ÛŸn¹ät¹uífL'ús“'Cµå?¿ysƒƒð|"äY\ÇÖüðC›¥U[¼ùã×{{SÖú¶—b§Ö²}ëb›þø#<ü'È­UãKwkßÆö;ŽŸ²wÆ%ÿÃxs®õÒœ»”¨x#Ld¡½¡
`l¿>à@€™²º<e3‹™ Ì©ðRÂ8Þ ÐjC³–X¡¡†Y©@RÑXªcì69yûáuFx8›€tlW€éu§Þa9/`ñÅ¼º|lkîžp\”K©ôÑ+ÃJ~ÿø÷®ˆøÄ€/¯f¸ŠÀW F6¨} @X
¾âÙèãUç®ðUxf(	ü–´»|Òºõg¬^~¾:¼Õîì^U„¢¶©$*³mòôÚêBi5ÕÏlËÑwZiÆ¡Ë¨½\ZÑl3ƒÙEtúýÍ?>œ$£Æó0Qc©e\#0Êâœ¦˜#bgšsb¤7†zë½…ÞqïuÀAÔ†Q„qJsÄÛÂ¹*ìL7nÍ&þqqRÎâ9H5±žƒHAaø³œn2x51~Åa¢ö¤z|Ïlä¤Øk]
ûÉ}fRŽ}f)Û°ÛSÝa_=†“Ñøl[ÿäx©Lk¯´²å `šI¨õFki ‚Ük‚€4H´\C°—\Í´£Èa‡<’›ìß?ªqö®æâîÕñ:/VÛ)WÛ1jX²ôêª)>Ù ’gTÊ8e¾cG»xq^ùþcç÷ë¿uÞ«|n€ÜÄå]šÌeçãËÝ´C“Æª7èôÊ¢‚)#`¢Ò¿ŒPŠÓÃ_a;ñemç>°1?Œ‹§~Í/;ó.¦¡H­NŠå"H½ELÏœÌBþ§±4ª½;£˜©'Ú
+º\ÞâéxÊ÷#çÂŸÆÙ°ÌÞÓûÔ{uùqôxµæŒ×™ÕåªY}Q`q%¯äB¬”g¤ò%³‚	‚ÕÊüºwQK·æ½DÐ¬ñiŽ±¿Mìn84ŒôÝÖ,oãòwei„Ò2–ÿÉlj¹ÉšKoFQïH¼Íí~obZž'éBÓ=›è%BÛÝì<V¿%Ì[€<P)¯å„{‰j`H@û”#a0q½g¡8ŽHµÉµ÷—Þí]çƒÍ*_v~ìÅ p=‰—Ø{w/Ãßtá¡ô&.¾înŸnOy§ÇhÍî°Ú³­ô|_öœ•=›"ãö¢L4¯WREŠ“i¦”Á8	ÚB"ˆ÷rø}>—Uä“á,fäâÁéjš•<Š1ñNùÜSe¼K`0Qøèô3eR$9™mL]n‰îgt9öƒ@‚7¤AÄ˜‰Y‚ð%U‚ˆÆ@ÃÙìºåñœ^GŽ6\sWþ¨\LÒxHé`íÊw·¨rÙÒ!inQN¨Áhý-²ážv¹ÿÓ¼–6õ|ü¿×Œ)fô8g…I1Ù
éÂi‡cÛ˜ÞŽn\Û_¦¤5‰F'•÷Ql‹SM‹y¿Ý.Vüöá§_¯¯ßÝÀð'Å¨V$4yûÛÕÕuf>¹ñÕÕÛ_úxÌ(1­~ö0+5ÝxbKh[P¶2Ôñ–†º0Hy5½ª`Ÿ£]šî8Ëv³ºÿÔì€Å Xä…l™µƒqK	µ–âœTKJ”âŠ0¦œ±Dàà ˆØ†Rít8.¸ÖÆI^—Û®óÓ— ròž’à/Nƒx[$š«÷-ŸnÆ<ÉB™X£pÚv‹þîb³ye.‰Xh9ÆTºû€#23õ•s¥gó(ëiJÌfîT¬Ñ Z>î™i‚‹‹a¬ËçÖÔÉ½O»ñƒsƒNœ_¾èæ²åòÕo/bÌp™q¤P>gá},1[yÞgsflá¾¬]¸áé8Húœ½¨Äú€+5w
v_Î0íê*’»~¼˜mç";Æb#cÕê2ÁIuo~ýýýë2>9ž×Õ.I ãBçÛ;ÈÝY~’ÑŽ’wE}êb	Å0äŽ³‹ò!t¦	IB§6UT>w*Œ¯®ËÇ¥’|Þ\.±È¤µOv1\øEv‘qåèÌàbRqæsÂ‹ÒusF>'*Ý%‹Š¡Û³=)ÓÅÄ¥Ìíb€EÞÂ"7JLÝlÖeðCîú1WL˜r¹vi;ÃñÎ§úˆxÔµ+D*fWü¬zýbÓâ†85ê?vÜgÕŸØ÷òâïAZÐáV‰?¼D½ÛAôìÝûE°}‰C—·1ä<æ7†›Øqí6<Ûz9ïe¯æ÷ÛZqA ÕúL‚KJÑÛ"r´’	QP!—!"@šÍÅ´ºåýÙ…Ï’›d´ð®¸ùz‰)J¶`X·ô,>˜¶ñj2ÎîôC+çúéKm2¥oJXÏDë:LŒvØÔñÙ5rù±Ú~›Ü…3êÖBÂ`r¯Ú8`.è§nÂ3Ý¾i¢0²/Ù	n3Þ‘¯Ñ¸Íó˜Q/\¦°QŠ+6^o]«¾t?…oºƒÌÆ{½N¨(Z…q•v¹bd&£ ·¶•,bîW´ÎÝ;&œ'àƒä`n¡û¥˜Š¸rÏ‚”¡•#AÏ„Tz–‹¤AúPLÄ5&”káÆœCÓ•vºÝÂqc¡ž½~ó¾ÎcpÖ®Pôz•_vŠ„š®HT=Å™AÁJ.£)þ,‘Wu¤y±ü âøíOå‡°•Ñ
7ºuK–Ñ²1ç¿&½€ã
†zÕ©˜¯"tôL™wg6ÕÒˆóÌ®Û{U4¾Žm/>†³IÚw2kyñÓL4ÈÛwò&`ËÛ |ç}Ú¼·~VµÕ9Èju8_‹3)‰Øt%>ˆ`$äR<D(‹
ïF°9^‘”=­GQyZfäÞGØl5EÞÇ,ëTWÝb'vÖ`CŒ@KÈ¹
{:ÏZx×îŠ\;^‘o·;nQWá©—GáÂŸÞU×íÔÛÝíWþtÍ'°ïa¼áãø. KïûV©±Ïm{ÜC†­é_R=”¯Ï:0¨¥?iÊe›J××ÒAµÅfš÷ýð/ñ«æâ3§q“­©4ÓÙ”jmW ùfÒWw·)­³¬#{VÀxµ!Bw·µ¿ìæÕ„ä;ˆÝ»ÛO§#
C$¤ÒPå¢—Jn£NAŠÐ!ñB(‘BÊ³ÀSLÉF7ÛO]t‘+tñ7É¯;I`¡/’e÷òèó3KYcî
 qná¨á½©á]™Úó¢tÿhú¯>~ºìDç“Ø0ïè€MÂLKq˜Ëm™žT…-Vy/6ŒÅbJ=zÔö>¨Ç2Ýø]öýÇ½Ï§`söÿs/Î-ð·©ÏùÅmoü© ˆ¢È„Š×Ö–
íÀÇ;1©üt¦¥iBãkç.ÚÂûßããö›šÜ…ÍÌd®k>¸3ßhŸ¢d´/Atð«úì*by¾9Ò‡„IÔìƒRyÙÎXÿ¨X3
ÛAý¥§u,Ç:ÝÄ{èÕú˜\ Ø^JÞ]áÕáÁ,qêmxm®ºvÔëN9o—8 0É|+ÛåÃ@b!d j9TÞY…\cÃ¬òVì¢hj‘ Æ@1ç<°U±Éoþ}\Xæôã?ßvæËÛ¬Y[Gø*laXlËëi½s"‡\‚¥­ñ+Jùz_n±]qçŽ›¨¦§Ž_‘x5±‡åóÑ-u¶JúþíÇ¯&SZXïÒw½å±„¬¥ëvL¢ž\or¶=È?MÖÅ\EÂ›Ù¡­m°úDkï­ïuRÇ)iF7°C†©e¯°¶%X WMõ›ýîÝ¿ÞGûsÓCYÐ½ˆ?ÞÀÚ¢ó`;bb§é¹‰~tŸ2‹Ñýº··ÃISÛ)ñ ›|vj’Øõ(¼Ož7wíú¾Õ‹ŸÞýý÷oß]ßÀÆ}[×†6µù2Tã„ù,òã¤ÒÍóè´l@Ú5ˆ…mÆH<ƒ·}5ì=CZÞ§äM§5©o¡ŸÛB“×4ûõæñ-mêÛè)·UOnÕ¬é°izv[7¼8•\<É„ÕLKÛ4ºÛæVJoVMª´U«XrË†m–·’i»†MóïæêŽ,Tû»¡‘ýê°‘¨Q^ï_†KÎ¥±ƒg•±šN5ÔN E.$‘ Ïib…&ã‘X9®‡Ö Ç¡Øs‡´cß‰ÇŸJqt½ÿ_Nu)àÑjÂŠø•D²Ù˜_'Å¥kôžEŽÛR‘·w9NÄ éÝä¸dwÑ']š×è1%»¦ü”ìžÃ×³"Ïµn0 OÉ©t&é¥Ž³,òµhU•ýZ4«©3™­%ù’X¸uÓÄm_‰í³©6ýêé1­Ý\¼;™LókE¹³sª–ZÇ¶Hl{N…Û¶qÞvk¿ÅÒ÷™J7qïþ|¤ÖIx[£’½Kx)X±´àãÛê4×ÜpËÎs®8ÖŠZÈ æ‚9ç´ÅJkBxo”Æž’ Ê0Ä›‚o£Ô6•Õ:ÕåÕIyOéOEÊ[*W^k«Ã °,â1ªYD°H2Ð-6álŸk-×!ŒZÊusy¨â9ºWYëðýÈ8×ìrY·wï>¶žÃÒ€{¿Q¡9ãFI…#2–ø	7(rã(RQ#–áV% c°dÆÀ˜–Ü°ãPoªùóÝ©"Us†Ã‘ú;U6ç±«¹SÏÚ²´[É–¡ÕßÊ­ºÅØWy«PüÓÏïŽQ	THä(°@ÕZi½aH)î˜
°Ë;c¤+ÉpPHn	ÿèºû´\Sg4wT‘ø öZÝÔìTnW’½Ë(€p9—’/å²À°°\$\±å¾œ!këËÒÞ¶ú&Î¥É]¡òhö{O–}>›[XOÿa÷‹Ñ)NK_3V²ÛQ©m¢JtÖ¹íØ®»í?yœ•\ßpžR-2ŠÝ	è9¼tŽë:Óä²ò û*<.S”ÌNØˆYƒX±Ú„·*Â”NŠI‡E©ì”IGêüq`Ny$ýâ{_\žÖoJ—ùÝ½¹›hOÌod=L;†àËBÀ« É(fŒPÆšrGPCeœçVz¦l‰3Ø;Ä¡àF« 9¾G †“Hbþâe †D,\Í!0NˆÛ ÔÎrpT“mµ‹«P-Ùr`ÌöË˜­¥OÄiyP´·üO[*y[;ü2„«>Ý}@¸o­ŽëAlí‰¦ì5ø-qÍk€\bË%D×®nÛ¦ŠñZ4›ƒ½m*¨/½U«A–p`J£Ó43OY¾±×ÇWâq-±ÒCk5”§<ñBZŽ)N[‘PÊ9Pç€Xd€Ö +e$Tµ†æ)È³‹¨òlJC‡kž
>$0Ýô,ä2<d’ájFZšZ='gMÞÆgÐ>8t¾áõ—Åœl®£I{Ó® #Wfs|0YBžõ³ØôìY»yàÛû²½’.B¦WZN6X*,6fV°€S¥A
@
#œwÐ Ý÷z¯	óß`æ&«Ñ!{¿¿Ï~¢¡{‹ðþ­npVöwìüyÔ«7øžÄÖ=ë:ösƒ?‡õœJi¼Â‚3ä¼Ñ˜Î Ò#<@xÎ%\È	"Þc®	·œäµÞHÅ’¶ÑÉž²J–ÒTÈ –d9/ÅœP¹µiØù„Ô¼³óqÜíõ±|‹’?¿û£•éü ZØ¯Äp(,¸XuaWBîË8¥Ã¹Z7~	 ôsŠ%ü[theÜ¿í9÷hÜ?œ=<Ég¶¶ïÓ€>»‹Óü­§uX!Á‹X×ëðÇ9Þøç ök® ”Xc¬Ò>ˆò8‰”Q!ï©"=àöû‚éÉd¬ë°Qx ÕÄ4&MòS_Ï’{tG(ØÆ48LøÕægà0•¼‚S›Ìàb*ý7¦¶¨ ÈïÌa;ƒŒ<;ÒÁà˜æúœ<IÿamõO±ç·p^Œgrð#ÆŒÓTz¦I`ÙPL1$N@áCrC¹PØÂbŽÈ ÒImšœD·µ#¶‰'g‹¦®D sÕŽ$éÌ¾‘‚CÏ~ [Z‘¢¸=M1"máp0Ò~| ÖîŒi´ÀÑRºÝ/ÊL}ºí6—©m«};˜“Â®ŠäÚÍ/aèÚù.j!Ëxé‘MC_bDà>ÀA&<<I¡€"§‚ÖŒ¸•á’Z¬‡ o0çV@j¾OFµ&UÊz	E@<aTË’ò
“³ÃÃö¬
n£6iÍªÒÜŽÃªö‰ò¿*VÕJÔ?˜[Æ®Š®“æY¿o'UÉ˜­¶XÚ6[3UžpK¢CµFÂC¨™…)äÁQ,ŒA‚(†™×‚RÃYb‘ó¬‘Yý>ÕÏ?6p¨Þý°ïæÙbñéX ®¬-7²ØÑoC7\l2îõ{ãÇÎëoÊ½œkc¥6øçUWë ÀÐzÖ… |ÙWR+³UÔý	.fýÞ-ž~·|îßª„µn©»r/k¦ÑÄ¸~O5[Æ¾j.±M¯uSŸ) ~sß;Y~~—â{p¨ª'Ï_6ä;¯7±K1_x uåžš*îÂUƒì‘qdèÂ?ÄèÀ¬CZ"Ë!*ÐAAÊ#‰8p,°â3Wå?åªx½]H‚W¸*€WS½Q€8Jõ‚ÂjN\<5¾*·’
ùj;CûálƒrX{jãb‡='?h1|Òÿžñ.†Ã]˜1†ÎxŒŠQf@Ò Þç9Äœ•Ä
)%&2I”7ÊcC%õj%ÜÀŒ+µ¨Ë4©ÓŠíà±‰5<øÉÆÌZÇd]f¶pl+Šª—×îb¨‹©67–nWÃa`8S‹…ÓÕ¸3É—†8Y–¾Á/Ž¢•Ü‚±ƒjÑZIrfÁùŸeå­y:Þ¢âÑ|ßÓØj³öv[†nil5ÂBqxÛŸ$t{díím¿{¯Ãø*ìSeqÐm<.ï9†(”V 1Eà;VP1AÊRàˆuNZÍáÄ%•·¨àK¬ ÔŒåì™ûìûd’Â•ªé±±Ì}Xjº´Üç,S¶ã?l§˜Óã?[‹ßÿi)Út?Äˆ¶Du¢¥.Pæ’€ZêâÒiã¡¦{‰áÄ"Àm=£ÊKX…qA¥ð&¿É?ÆW÷Ù¸çgÄ‡ž½uã¤Ø‡•àÇçwCŒp"qÕE0%Æp½-°Â$È
“ ’¤3‰‡®(oLq|áäº(Ðùið¹7ÊS¼z·ÅJàÛ;¤¬[ûÎÜmSŸ5L£éšzH‡Éu·Ò¦×¹©Ïè½¹ïÃ[öC¾ i jŒõÞAÕEŽu»§
»Üï{i¤çšyC´—Š1ïŒ‹Ú.RsÁ<²µŽbˆ%SÞ{Î=vJƒMßèý.žÜïHn¸ßñJŠŽXÆ¼ª‚ÂbëûýÈðÿ›»áÅÉò’oøv@ôpW}¸=ìU HÎòòO¥NáÜ‰Ôðñ°‹ácÎÀœRÂ(¨÷[a´!’„¬3„[#‰¥kIÁ;l¤tL8Ä£4Á·ïa[OôµO…G,¥Þ«• •rÙñ Rª<Ù*Ý™ozRžQ¨¨¿rÁ¶Šèh¡0zhVm{û§,ZPUp<$t{|wóÔà€g‘Ä²€ƒï#"nœãZMR-ÝXë[X!<2›:†cp€ÄêœRA¥Â	n=BÎgË’Ö	m5Œn¬wÜ;¸—°”&„ö~£ŒŠ¦
3ÑËá)£+Œ*Ý?n-£:²Hó±ª-êÂœ"«ÚZ\ùXÕs‰”ß2Ïúí:^ÔÇÏD¡5Ò^s®	DH+ê¢	…â”ðaè°eV".ç(%¢yn(a$Huì*ó>pçafƒpmDûz?1-ZmÛçgZÓ@_™^˜"ÜŒhYa ±¬÷‚sÅ¯drfŠòÐœóR´ö%`‹J³ån×_‘%MBNŠ9m¼QSØÓtô}Ç¯LøÈ	×^å‘Kõí”Gu†#W:»Ò vß½û×û.aƒSé^Äo`S ÕÁ‚¾ž4¨PZi–š¯ãùÐV}ëù	&ÍmZÃúF[¥Ú=nñÝ¦“÷GnnÕ8Ú¿Ï™€S ï1²Û#åRP¥|,ºæ$Á K	¬å^ê²QpW+œ3*À<‹=‘}×àW äª>PB¶b€† œVããW‚%û¢®¿'îˆz*¹nŽëóÜ,Ãß6
…ÃãàgH<|$œh©^ˆO+DsN>L®ß£Ä‚>Å¹GMåw)öû¼…†û9Øv—Æ©cÿûœn¸çÞêûgÈ4¬¸5ŒzÁ	]Q®½ðÆí¤ÀŠ)·ÖzÉÅŒ4Ça™Võ/Â‚V}#€íš§gÉš¤ëu¹Œ@¸l€ä„	°T¥2=»pØ’³·}‘LÚûL†­nÀú>Mu{«kmUžïÞÁjužßRý‹“}'ÅÁÔc_l7w£pôš¦vz:¨5¼ù(¥™@Çœ”Ý:l-€ZpÉµUÆjÍ)q x!…˜BÁµÖL¢Âc]ë,ômqçä2TòÕÜÿEz
wF(¹éî|Ö0¥ñçù‚?7ê–fü¹•4r@Fý­©”¾‘ÚOßfÉ¥5¼øÀA'–›£šàø’3ÄD!©„yNpÌ•aˆhd	·(€,âTo±#JÃfÒ3n¨ÆžÔñæ0ÞÈÙÎteµL¹Jz*Ü˜&û=±˜°dÙðÃ8ZñÖ¤ºëÛp–—ÛW78³=?Ž› QO”™SO–žóþÙñîõeÈ–	s×ï&_šäÝ“c_Ë:Ž!Ø1Ë¸…Ö)ˆŒÔs¬”“±0"(ê”bœž{ç¸DDbN!×Âæ9Ðß0ó`É~ŒR¼’9Nª³Sºó8‹s‰ìc‹õVì£Y¤ke»=ùÖ»£+UÎr`)å°I¿¨ñ(¹Ñ3Äp`¤#Œ„ˆpàDè¥öZÃ»Á\sI‰u&pãa@™õÂÕ1›?^Çû`Ö>[]-ÃY%?¦#“­{!Ø²ÌÂXL+Vµð…oÇ©ZÄùÙ8K.í}ÕjÏzæ^AÌÉÒ$˜9y“}èÉsß;z:óo‰,rã+20ª›A6ùìÔdæÈ¯:tå’’äÏwI9‡¤,{ðAºmÃ6Ë«6DMG·1
æô|6"üc(”F©DÚéäBr‰È`É5 †+j´óB`¢ÇÂI‡™W ¾SŒ¿¡$‡ŒQ>Ë>|ŒRÀÆõ,“=6`ü³‚)åCÜ>ÅÕV(¿QÑ´ŒòÛ(›Ž÷¿5¥ÓÑTNÓmaéÊÛáäÃsÎÑ6ûÒªž£m¾Úh¸EÁÈ¾S{”ø’§‡ûœ¦cÑg;T“®õ"X?¾Î^i­ H‡4WI  6cÇ%7&Àx¹Çœ«±fP!¨^„vux¾«Uîlç_?~xý{g¾À:H¿®Å‰ zHrŽ%L![1C@%K°>~ÅXZ‚À¥CrVÞ·†õÑönÀÅ¦ßÜ†'Ø›”n¼Õ¬x›PòÒ£Ú/ _êú¹î‡T‹ÿa÷‹Ñ	zá¯L®îííp’²®VÚöH=
'?$tíú¾Õ‹ŸÞýý÷oß] Ò´oëÚ4iúÎ†‚³¡àl(8
¾CÁ¶i¶?‹,%¼RSRœH:l:|H?LÂ=I¿øÞ—§õ›Òe~wïÝÀ¸Ú´¤dEÅÔ¢úÎ·ž–¬V:<†½« T<È‡ÖaÁcZrŽ,5c $ÄË¤t;l¥B"D„ÃTS[çÓõÉ‡ÉV$¢`5ÄAê^*s |VqckùðløI“áå×KˆÉ¦š£ŠŠÏ`¬9¦I¥*:¶´«œž¦".Öv³"@¦Z|fò^Kò%‘rë¦‰Û~6KÍR­ZŸÍRg³ÔþÌR;&±[’ÏÉ’øØ¢MUŽlÑl.P¶hS‘,Ó[µdIÖLlÔ2càŠôùíçü<éRƒ]*nîÂ
ÄÔi‹˜&Žû Tè1'
³ hç€"ê=ò@p/÷JRç¬´Îãð_ÅÊ–ê‘Ow³úK!Gä°‘KÍzã»ÎøÎÍº|ýáí©H¦°årE.ETTs$ )ÓäÑÊ‰9›+Û‡¹Â¶YŸìúžÅÉJÏÏex\šÈ>l kÆXÚÁc^£ÇPåi€ÔÈr¢¡åÚ1Í5R‚ i9´JjEôžc…’
o”¶œicµ¶¶ÄÖ÷q‘Òd&ìÀéY¯—x•¶Ípì«ôs›®Ò}BÙ£\¥Ïå5g-dV‡¿$F™ 5ô\QAFjg4¡X„[5 SC¢TbÀ´¿¦ÔÀ”«´É ò1Ü‘S¢òÒÌ'Ãa67ê‰^ ÉÑï„J$VKµ°ðb¤¿”³‹2$IšÝÒ™9£Òö&ºEù÷}z§ÝèæýO×¯oÂeöí&w}gÆîcå»éÆ®ŸJ<Wf§^Ã1¾ì¤î`}±ÝyJ“Z?²*ÝBŸ™l§imÏI7ä$YdÚ™m} ÷ïÓwv¼ÛŸã]hÀ£õì«wöÕÛ«¯^Ó}÷5¹ø5œ¯Ú3°é~.…hÛ56=ŠYFfÓï¹dÇÁƒy$ iK4´ö^<¶Cb²É¦D…ižŽáYX+BC‰­2Ð(¬§A¸@Ç\PÌœ'\r¢˜N{ê˜ÔHaHrVC¯‘Tª6]Ü·,D‹T-$Á‰•QAäKB4ä˜ˆ¤BQuBôY#™&F3Ð>v­hæ^‘§ÛµšÖéÞÇ•°ŸÃ¿q*9wËñÓïÖµ[Þmý$ÏŽ•t¬<û:ž}ëDÁïÓ×1ñ’ú<%ÏÄ·çg	¿o?M´ãúŸÝ‰ü4½=Âúa]DOÈÙsÉ¾1«Û‘¼6ÇÊôÆÛÆs—`Ë2ÏANXd‚Pï¡až;+ƒ¸N©¶ÒéÞ+AEÄx‰%Ó’@d|FgHl*$ùû ÓãÑ$p?ˆéA|èÜ«A¤ëËMèôòŽZiD{5îDIèv¤Æ.ï‚@Õ\8ýüëoïê„î>³áåÅÛqä¢°‘wÆYG»Nx:nü²“ß±úe”òtß½ìÜºq'ìgÑKoœwþÌôËNxq"Ác'›„ßú‹Ç 3vÔxF˜æAµ
aÅƒ~ðí »w‘þU)±Fi¾ÜWtÎ¸]å‚,f~K+©,€hÅ`O9 ‚Víõ”#:/áQ£i(çÖ-ObKýÏÞ}F?ìA¿‡sò6‘‘WÆ½ú±<ù!Möë–½«¾
ÀZêÔp6®x4/ê®³*Ýlò—Ów¦®ïò±Î²ñ‹ò­œ¾”µòû¬ÿD?›EƒÒvÞ[Íˆ›®ÁÚSŒý›;>Å¼˜·¹{ƒÛ¼;}²Ý<\Ñ÷*¯oßü”`õº~Ÿ@ô„)T&»fyoœ¢ÕÿÃLFy6J¡´ê>ÎJ÷eœ2Ïyn ìÜ(ž2ô5ø-ü1
w‚KY·êÆhæfóŒQ½QÖ½ÍôŸ¥6²i}Ý@»ÑHuoÇŸRP3úÒ[û©›Òe »ö¾è‰ï¢¤½¸íe©”á¿TÒrkS©K™;™:q'â‹?í>C©ùÀÜ²ÄóXÐ–‡2±ÁkF–<vÙ¸ç§ì²›FK>Öu_Cþo7hä¢m¬‰Èø¿_MòÑ«ÈR²Gñ}I÷Þåy¸\¤ûuR˜»;DC¢¤{Ê)UŒj‚°³Ö	G¹áQ´A[IbYEEb6MËŒpÆ9ê6Væ=;Ï$ìÀ'ÂŸ†Ua‡adEØaJ«Â£ í„t[êYÜYwPÛ
Ãßˆ¸“f˜=¤ÜÓ`‚ý®äžDmäT J¤žIB©äË"Qr«…l”Ú¤"$¥6™IK©ô±)µEU~Jm³¤’[,$ªÄ&UÑ*±ÉS«MÃvV¥®–Û´YÈaéV²Ô–É,µIUDKm³"«¥6[Ú’›µÝ¿%1®yý°¶øe	/Õ¬þTÔÛÆ 3|¸W[ÔáÅÁ”òÅÏ.föFMÆw7·¡«X~;á^²K8,¬l([€$`ž:!AP#4ðÔ(¨Âc¬·R!G3á0²^ÓM¢¯;?__¿þð¶ó:¬.
US¡",xÒw…×êë°1w®ÞåuefÍ£ð8è¨å®ƒ\Ý§Räý°ïbœ~%Ç‹ë¿þôóo2-ç/?~XWÀtãÌdý ]úÀm˜:ÿüûB©<œ0˜ið6ˆ¥}Ð«°¸¸¤r©¯žµaçf´êjË1…Hàõ®¶‚CAVþa”D*!ÿ1Ö©º<»nq»ì9ük¯‹GŸŸÃý:ˆÏüÕÊÝgƒCÊ„5ËßU2„˜´u¼-…„+³ªr6\k»_é÷@Ý¦ˆf»ß^2‹/¢íÞßê½r!Â0EFj–ôi¤i¬?·p#þù§5‹âmàeÙýM@©­ñèq8.04L†øËm~ûðÓ¯××ïn`øs
qåƒ¾‰»´S³Ê7è&Ü"iý|¢‹õ¦Jg³ASéØò~‹g¾Câ¶Vxêÿgï]»ÛÆ‘uáïþ\çÃ;éÓ‘Œ+/9ŸÒ‰;í½ãÄ;vÏôÞgå Í‰$jD*¶û×¿’)Y$ARrœiOO·m	U¸DU=U¨RytlÞ¬c}6¹å1F£Ê;?ÖßîEšªÉ$õU Ìîòéz?ˆF¡|=åS…R(ðý0&œ³Ø•âÎÉcÏ£žÂº†Å’ÄWÝº|Eo‹·g°‚¶5Š¥añB‘r~ÓËí\€ÔÀohUÅ¢õ×ªVã‹´MEjìœæÎ5È8h+¢TåRû‚6zÐ"ÏI¸ÌUv´P‘ÍÃè\"ƒ5£Ì¹VÉáóðÞÎ©<7ƒ9dýÜ-…ì÷O§ŸN./m²ªhÎx5Éw	öýUŽ´mpžPÓÈ¶2¦‹šmhc˜³öâ[›#ûy„¿H?P'ëwªqke>ñ:–æÚÖÊŠq5ê7µçP³Up>cÍ¬¡ƒ¨ùÊæ†£ã¦a¼{Õá&p¥Múˆæ¶¨”ï¢‹Ep,irv@ÜÐ,N}è‡POäqe·oé$ö*ÍNòÁ*ÍH&âz‡^õ¾ý<H½ñH“0åæ!"©D"ö(`Âõ‰‹#É€JBbôŒQ¬$åDrÜê"#¢4~¤GýÃ¤Iz}Ì®ëUš®œÆ $)çËÉÛ÷g'ã…’ ÙŒY~”š‰L# ¥$Oa»i%KèÅ2*Ôà»Ì€KÑöáÙRÿyë&®­nâ™3rã>6(¯îFYPÏÇ«€]k½¤²^/:ÊþuÆ‚Ž™ÏÐÁÔ‰j'ßMµxÒ½…ôÁÔÎKÿ¢8«Y"£ÞÙGôÍrX©9\é7ìÏÌ¥?KNEÌ)ZÅZ[yn8‰—úRzŠaÅ	±Ž¢Ø÷pÄ•©H)ODÚ“Í|.1X”D…u±?ÃTOß;ïÒÙD {m
J;Öd+Z5ÓÑxa(Yñs«ÂÒ¨×!|°ÊÚàwDvÍ¶òEMîµØ=‡Sï^ÇïÃh>k7Ž ¾¨âÀ,õdrøO˜yþg:SÇ7Ëîä(®ç{ðŸjr—¹¼Ý0ÈbºÂGÇH5‚P‚¬1‚r|#³+G-û±ƒ`~{aÐ \2w[á"›»Eö6¬P¸9«H×¨ùà/»|ú­2¨tïù™x´Xûgš©NáL?‚óO1dÖ‰ä_]BÕæÑ¢STß„J”[¿7,±›¾¿24ûój.¦ýCUðZ!ôº~$ààô…\â†¡8dóDŒÝ#ø“Q—!zT1Ê=©¡$±ôc8c™çÕÝÙ>{f´œt‘üYNÓT}I@û‹È’hGÄˆ>-ÔŸÍ+n<<î¬x`¯MB·Â¹ZÎÑ–F‚‚¡Ý )|º(I²×F!SwB{eÀyøœ$?Š´7g’™«Kíz™/'“æù8·7Itã,–³ÂÉó'éu2{
I–Ý¦ùÿ¶=Dùˆãëâ††ž¹èëÁ“ÐTäm›£Po®wÓ
iKõœÐ4Ø©ây›NŠ]VuÑPŠ½Ö"c™·`äuD>ž‹‚5(dfÇ
V¢fÃ"fŠAµ„žì<¸Õ–‚ía¸Ú…ËÔp>
Ì¤[$mÙä+6–YËôC8ˆx,Ý‹gÙY¶s>ª¥î'Ù¥øv•}ë@;É.­›‚Öí!ús(HìâÐ³—÷”‡Âs}æGJ¹`(!¥B7&aøÒ…ˆÝ8T‚…*f1ÈC.¹>­‹«(à³®Udãb®&—YQ”‹¶ m'éí:Þ!OAàW¸.”¹ä’.î
‚Q^;ßQã(Æõ‘ÙzhãB‚š»ˆ»Å¦‹ià1æV*K™0Ç5°
\n7€¹±œ B¹Î£b—÷×(O{OÏnY†
YB8Ã½…lùÛ¤U§3¤VH–=e_–Ò¸cŸÏGL‹ù¢Ã-‚`™'“nD˜èbÇw?íœ~tò'ëÒ|*®“Nyäz‹fÿš$¹êt™
¶ç•¶–D·‡¡Éâ¬M_²î¦$¼ëNe„qw28u;¾Ë<öáŽºlÔäþ«ˆ=•ÃœW‡Ö™7À­Šú²8Ž@óâàVnÎŽ7°¨bÜ•n¬‚ÈC
	å1¤"cÁèX<Ð-¥©P¹QäE®«\\‹Gašû«ÈòwNM>“*a‡4ƒWfI
Ü*LfÐj¤/jƒ–N´®|gðÇ7¥5ÝŠ[öc8À €ÉøèÝÐüfêV#NFO.ò˜¢ªY®€×÷¯K
¬ÖŠŠt F…–ËHãcº»Ùrª…ü)»)µæ¬Hïñ5‰¾j-[gøˆÒÅb9Ï·jD,KÓÙü„ã Ó;(reörUÛ^¯K3\E¼m¸Šù»ú>![])'¼šïƒP”sµÛÌ8Â‚îz·ë‡V®kf?X‡f„ö"6ju}í:†jµWÃrÿmÝt»9?­÷i/óØËróFÈÑr–ä-i>öêŽ2Ï¶ja?)­{ @*¾v“m…†yÞÏ,ðÃ»¤7G>â…EÄ+¥a@%S’ù2ô‚Àcíp(c„£HÏC7¹tC‰Ã:é½º’3}ð	¸è˜XÊïDuCœ]€×æMÃš<\‚~uC~¾!ÑO ròt®E,ì¥ÙµY}3€‚(s+QzX¨*ÑB\†Ý$éq1³:™ø 3·êâÑ¹¸«âž‡ñ†Ðdˆø~«bˆs+¬Ê¬Ñ¨Øj£ÆMöW¦Veøýiê½…¬h›YÔé©•¦«§ëÉÒäëØãóÖß%¦<«Ð–ÃÇ’èô††c"oYýõÊ¼Ü¡Ÿ±1áåVØzÜ[ì-4€ÒGo€muwõˆ¶Ÿê`áHÍó+M­‘œi’ï#Œ…w³÷‘±#F"1¡à€D1â¤ÇQ R‡‘P•\’P'¸"O€jáÊf·V)ßÁ"_Ï×1ZlO3ëÌÌHÛÈ‹ål’òÒÑŒ
ì\GG›<ôXét‡JBÂb,Gš23W„*_$Êäð„Ñ#Õ#[…› Óâakâx‘N‹8“Ï—G&Yo~•å¯‹€•ÇsYeM3åD%õ7bRB™Ê3%|99û|yrõûÅÉ"kÙè|‹DÇ-;I\ÜZÞŠ™Ñ×•¨ú4Çºì|-8‚ÿGðvß "ÛÂhIÕ°íµë†YÆð¿¨Ð¾ƒÕ]7³·ú³s|Ö1&Ü ØÙÃÁ;è-ÃŸ! QU´ã†27Aòß-œuç“éûbÃ¨Ÿ’0‘bÞß	ÀÆt¥<S´­=sÿx±Ã(²×˜L”"VÒ•Ø”'’
¬Q	Š‰hQ ±Ïc¥(¢R„‚En ‚ÀÓ‰k´…ïßžïN+’=Ê+bwÕ§€ôúÑZÙ¬æ³s!åFíb=íh×MwB¥ÿÃ‚ÀùšPÄ˜K8"•PýBë4[<Ãl3F{uXP½LK=ŒmbHõZŽŠ6jÞb©Z±vK2¸&2h@ýc`ô³kÄ; µbBwõt=ÙÁý{ì/vu´Š	&0ëP?M#ø`ë´o¤cÂÕCëR Wâª3UWÈ÷	¥}Ð6|?ª@š~]Î¯c2ö/Ü¡þ¢uE·/ÒõCö¡ÀJrB`‹ÄöCc°+Ê9Šˆ
äq«(½q(ÅTmnÖm¤`eƒkáœhÉ#&f·µ}ËþUR_*i¹þ²µ†%ØÕÛ<Q‘öðÇÕ~Š~u/['³]Ñ²eQt¡³•)°÷¿‰ÉRe:¯Ç,ÍA€î²ìWµC`ÇÀDŠdcúVr³ÈÆG¿7\&¸úß;‚L‡K,XêSoý€ù@š±­…oF(ÞFhÍeŠÙÌÂ1ó7®"SÄln"oÐäÅF#öƒâ½oÄ4-ÃpG&~mesd-–óÎ3®^iØä}@ÖvvMÏÄî×q®á²V´MéQ¥ 	ûþ—ß/®ð•MñïufëÉõÁšYôS¦ƒñZyDcå@yäKãäg„
AÀÛk*Å!=F¸ÎõA	ö$ˆŽEÀÃ€„‘peì…Tqâ‚fêEa¨ã4CÂeÝØw:ç¦ÉÂ¯Š{ z::ä ¸§òöÝÙIOTà!Hå—9Z4×Mçº×BêËt*@¨˜NôU×T_r]¨#8ó%èúÍÆÎÅ\Efœ“É½S:@=(Æ¥¹Ž`Ðwo–9pÍÕQT3»±ãT&ž9·ÉdRªp. èñ—G«1j-:LÎÆèVý£{22š,¥^>¡½3u+&O$1­,8ç¾Aðg˜îýØÝ’pq€‚jN0—`f•:~Z”ñGïÅ÷P~ŸeÅ&Sò°ž Ë%~7–ø^o%`º;Þ°ç	W+´§;ðý÷Ò¤ôîíùh	Ïô’Î÷IQRË &ÇÉ¯"õH¡òÌSÑëW(vù±ð.ø_ŸÖŽ¸—VD±&¬fÇ”zÅÕ <šÖÆã®R'¢5Øa:p‡“O'ýuáøÆ<áû¾$Tú\Fì…Q ,DÄ=ÂÈc4TBùØ±r_Hy˜s%Œq>öÛåÙG£åý?auuQX­6åúÆÈçØÃ2®]dwÓ	Q³hí+ÅÈº»òŒ˜å á3ÃSÒ&ñ½³k¨ÏÉIVM³Òì$ƒo}º¥]â4+.¡ØæÖÊÃ*¿8Ê¾›£ÌGˆöÖ:ž`‹¦¶/'ÖC‡OÝŸFú„®³Ô%ÖC×ÑGo•í¡=(pÞ’+³–úè.j>&ý‰]«Ì7O£¥a–NTÞ’gzÇ[VQª»}Uâ‹lö¼ÕM«zTë÷f
Œ‚®@2Ö÷©ýn®@°7}*ÂˆÜ•:õ] \æ†È¡¸‚©ƒW% „r†9
]HßÅ>¥’ùuªÎE9£º’B6ÚÍY*×lŠB:ã S¦ãM`,ÍbHxrQ¾Š<ž/Ô7ÒêUš]'3¥c‚{Þtˆp™8sÔ4TRÿ_"ô?øµ#¢"sž¾^<OoÕ"^Nœå4„åžgäd7‰š@n»—"®Xä:qÝá£ya©W©AZ¹æå©cþîÊŽÄ£8p7ÃŒ1ÌªqFˆÐ´,´¨ÕGfÓŽüÔ1×žÛ9ÿá9têï‘[©%ÎfçSo—LÁÓ..¨†÷P¦M÷ÐïYq‘öéÃH §SWž©ë
a…#®sZ§Ïòzº0§ÉRt›ùäÏ©) ÏQš¼k2ã'ÇùžƒæìZs®%Æ– ò.êÀ¶ë{ñÏN/×2í;ú¿*ú\l§/õg™,þW•UUá’½ˆŽµnùM‡ž]-ô€ú1ÑêÖ¤†Uõ›+ó¹ùx¯¶Íh:I¯:éoáÄÈ§¡ëy`éà0ŒÜ0Ö%KT€E{v#F9¢¨Q.õcFb®<¡?–nTcáT­“·K™äÎÇôÚy—‚†¬|µÄ.¬VMC«Æù¯Ž–ÏÌ€l†Ûª3âúA5q÷™Ulßæ^z± öiA > ¦oóÁÄŽ(XŽów²)Öî´¹ZLök[ô1ëœ>´º7qoý|^½Oà(Êß¼9{ÏÓ‚ë¶¿Â³zóæ×d&-›ê 4 XÎŠ‚­Tpþ¼yóœú³ÖÖY¾H¢çŸiÞ¸6s©04?
EÝŒ&©ìŒ^k@ÑâQAÔYª´ë)´òÛ1}ƒ)‰ÂÆ¡Å^$<Š±”!—
Q¤48ë)*î1F¥A ôEMÂ„OêÒ7T•Š/…Šh¥™¬3£™è
ëÎb}‰sCc>¨WX«%é­ÈæF!wIÝç7óãw:›cº¸óùo/Î¯*“¼z—.Ô•žéÕ…Ê¯Îé?A{jVeØ¶*ƒyMB'Šˆ.VZÕe8¦¾_Uf<B¬üÉÕý62§¼©_l¶D—™Ï#—MÔ€«
µë0X§‡Ù?cAuXR¤æo•Pšq/¾ýµÀìÎJäþ5žåöÞ¹Ç«îò…Èšâ˜ŠYwrÏ5šÔÇ_Nþë÷“‹ËQ€Ðèäw¿8ýüiôå÷'£_N~ýüådôîËE;p`Û~:½<}ûñôÞ^BWûãLÇ0<zÿå÷ó··ç²çnÈèŸ¿¼?ÿrrqq¸žøèÝç³3à=œœëÅÚsŒF§ç£/'ç¿_î÷1`<:;¹üíóûÑÉ'Ø=ïNÎN>]î;½ÿ|1:ÿòùòäÝ~ÇMGïÞ~útòeôþdßÌ	2CþüîóÇƒ,Áüß^^¾}÷Ÿ{cMÑèíùùÇÓwf›”ÜG=Ý_xW_öÙÙÙÃ»“ýõ@wõpþÛùÞz`;Wé‹ý	lç*]ü×Çý=¶s™.àÕþzúÇ~Ï"Œ~ùøùÝž~ú0:ùûÛ¿ï‰ýÅ9Å'£€£Ñû·—oGOÞþçÛû8ú×œñ&gýöÈlqÿ·»Göt‹ý^Þƒ5w¶ÅýôtŸà-ã#ê_¾œ|Ü3ß x¤½½ýõ„Ù”·h!n'`ÐtJ€h³<K‘‹<“´ÝÅ"]æôOñMŒ¢TªÑD	c>î…ã~7‰“QšÀäP^`Ø
l$ÁÔÐßî‡é~¦ª9Å%:7ÒöM¦Å"æèPŒñ>¯He¶Ÿ•ÜÏÓÎ"1›é—®°â÷Ço¹˜ì‘ÙþN„$›]ï•é¿&{ÚÞšÓæ.Êq9KîFÙšL†rºMf2½ÍF&üÒpÔc¦b&;R£™Ê—ûÉå“)“ŒöYeöÃ,
y¡OTºÈ¥„0? ~ÓÈWÜõ‘ïF?Fžs*˜Ç•„Ò0äuå-/Š©Vêþ¹²T.Ü*>XGîŠ,K£Ääá	aÙ<Üõµ%]q:ÔE|¢ühs :/¹¯9˜ú˜ú¯9¼`&¿Ïª½KžÓ¦jáæLa<Ø¿ÅðäªþsŒá!Û9ÐÍj¼Ü_ún÷—Ìû×(ßåú+{{ÒÎž]Æ¿¿Èµ¥ï¼·qå¸Üû‘ËÙóºQŒ™”`Î1V<pUÈKÎ8ö©ïÆ1)Hè@¹±ë)8e<Š	Qaä‡uùu..>_~¼rËf-³ÉŠÍÚõ7aZ¤<¸^ˆùÍývÿPáQ™%oUoÚxbáG
2<Ïœâ¾|CýÉéK}ßØ¤é5ß­½Ó¯`&?­3í¸ðO7i]Md×,­1åž·)®‰ëS²QžÚC˜[yˆ³—«ÆßOTû «û‹êì©îWS]º£gw«Øe7#_‡…¢±Ý“
úïzGè»¤Íé(Ø£~u§1›=æSCms…Ã¾c]7Gi‡P‰}êjú£ö”4ú6®–Pz5š.^ë4˜øf•³91]XI¡—Ü¤9Z€ÝïsËcý»ÞAhô˜¬Žš'ñ¶†š¸¾kWšõ,	£˜p©ë9ÌÇ(,ð"¬Xì‰8vc]Œ‹H€ü„HFHø%”…±‹jÔÐ/ËÙÈhM°b¡s/W±µÒ8m‹8LV·`I3;]s©`XI…l®lÉ‹¨Ä£‚æ©3*®»~íÌ”Ò—¹uêålóBv‘öy‹_äT<š$³¯@ ®õUŒ¼I™Ž±üëtÎLÎÆ…3½>ÁuèøÏt¦Æ3ÕR~‰=ºÍíÒšl‹.Æ»™j™Qâh£¥>ÚëFÀ M!c¶*d¬·°úñÃùÇoäçƒh¡W;á–Í|°ºùPy»³º	ƒi-‰¼ëÈ¨“gs¯´Eø=™X´ú£••ÿÞ†o¸=•6—ÛìÄUËºã<¨‚›é&Yì}r‹ ñé¾;1Ds«‹3‹F`lÓJÝå6ÍbÓŠ´í½¥¯¹M#›Qýs®®M³–q=´ÓWxÿãüäÃ•;&m:ñì6•Ö9[FQiøêüÓì‚N»uôÇÑÆ£;P §bÞT!ü¡m2KòN:*ñ÷¡œ‚¶–U_×»Š™ðÆ®îÿ¸›öSL;35Òñ–¼Ka}tõ^ cÐ;j´ÕòÛãÂ¬Ã¯‹]—gVMÍs)þ‚KßMáP ƒë¦éÂÍÎÎWßö®Û»Rû«Å’cÂ’~HIÄ§RºBÆ{®ÇâÈBÆ<Ÿ#]<U…¡!)Jõ°ðdÝáµø{«Å.öxdUj}»R;ÁÚ¼ÙÃö8óªj1#>²ÈCþH9´‡gŸbÜó~òcþ ñž‰bl	1­4dËæØ3?”ÎÜêz}Ñ™­ufË§^*Ï¶{¤Ô¢m›¯ÔiÛö¥^m½c—¸Ï;µî4òŠNÝ™ ª„ÛáÓ»;ÅJ)ß#TüDºù^ñãýUÑGR}Sâ+^c
W¹2Àöiy4ò‰«BB9ercŸÆÜ÷¹+|WJ‚C%bß37’^X§¦¿×³Iç¦ÜÞ¦¦^h&F©ì¡­Ë
ßF…½ÚMÇ8ÉR­	åITÑL—2Ì`¦² VÃV*y5±ésR¿¹5*M=†i3l‚zOªÅŒ	'ÌGvê·YüïŒMW6Ö
Jcî³ £ò]Yÿý*¨ÏÃA»CÆÜ_YµYí@y+(Ö¹·l·žÌž ÞN\-ñ`+‡Å²SÏ–s'žvˆt'–¶øu¦¶x7(¿]ØÚ!Ý‡qô	„Ó=ªÅ[§Ñ+ÇÛ½÷V‘”O]Ò<Ÿ"¸ò|,1óÒµ/eLdäÉ ÏÈEaès†˜Ò@±â8–"F(5U(„Bþ‹îùÄº§gýjÝÓÛÖ=}ä¹|S÷ÔY·úêžß î¯}>ä´OÞ5&â)´Ïƒ€¤ß]û´²:BàÝÐÍ®€yw0të1î<íÄ¾+ÖÚÍ—°ì4–®@n'æaßN¼;ƒÄ]¸w•75ÝVþqäÃøi¨¼;2û¿h¾‡Ñ|•ìéA×ÐåtY*%|'Y„.ŽGŠÈ€|–‡çDø~Èƒ(ò	qD”àkªº›k[fŸ|é¥–Z(¢kNÏJõ­PÐu<º©…rFF«uÐõ'Eªô‡óNŒNI/´Xÿ=+¡Óa¨Çô¡{‚aŸ—Øï‘ühD$=cÊ]!õ­á8(VØIÄ•˜úŠs?ö)ÒXÉ}ªï *á3ICÿµåG•+j¡ÆóÈfõ`'0®&|ÖŸõ>”_°^Ç2ñÙs<–{kæû;–áG>–—™Êo•øú(¿í©LÇ˜¬³ncÜíXDkl"bÁ(Žà –¾
A{æJú¾+BQÉ d!…/àÒbäú$ˆ`k“ºcùLOk•Ü(L&:YB¶œ›
«t>}>;q`ã|ÍÓys¶‡³‡Uzœíº£/5»³HéÓÂäÿ?zÔák Îtâ%ýÔt&y¸9<Qèê6ÉoÒeî,³"]ÓýÑXÈ[t.ó<=ºt^„$Gbæ„«‘è°å8˜®oŠÜÕáå"tÒ¸„ÀõèÏáäUCÎôÅHßZ¤GŸŽjá˜e+8–™ÄF“¤Ç!åÔÄÅøz–N‹Œ•çpü|Ø(´8ÙZœ×áÙ.¦›2‹#Â‚êý>Ž]Øp­k=¾QñZŒŠ¢ƒÄÒ‹¿Â‡_ß.¸~×9½NW	ÀŽßÛï EÝ"Žk&®×9´b=˜æÂ5gXSéÑÀü »e‹PÝV^à,ˆ‰]¥®s´\dé¢K‘£?âäd  ÖiÖ	õù×‘¾„ß¥”Héè:uñ”.(µ!ìBp-¿Žh—¡ÁÕ<¹—Z£ì4©ë$íLÿv¦)V­3YÞq!æp°¤]¬!*žnWÊ'­ûDÅ¨Öq³UÍqTûg2™ˆJ~—¾z(«3¶c½Ë€E1ÌÇ$J…‚VÂ#L„<v©‚V8E>|Fy,Ãq\ØžS+"îõÕ¢‰¸}®k9©4§HïœšÐ‚ò¹H'¼_µ^]Hƒgr´ê7WÑÍ,¤×šf¥m~:{~êÌ'Ëk?h.M'_“ÜQw9è‡JhÖÕ_;Cl·®¦Óml¨jU´»´=KØö†ƒ×:á®E1Ï@OÃc<\A{[‰96ŠÚLå‡Dšæ?8 ÁÓUEÛP“2µû-·dl£­Õu°SUÛy¥!ûª&Çã²÷öúÄÍ^Ã®”å;=ð0þ–&_¿¦}‹ù‘1îWÊOaŸ…ØÓõúÂˆPL¤ó’Rù(¦ŠSÁG, G ¡ˆr_¹ALc_„uiv~Mf³$»qþnfåds“[·£h½ÔXšöw×«õZ'[næf>,ìxmu—ã:ÚP1ÊƒÔÅ€ÇÅ›cº6èoãÙì>Ê”ƒ¼ól&¾lúã(Ãn5í2…ó¹Ýˆ.—ÔAÜ¹¾ß¾ðÞ^§²Ð£tÙñž'ó£‰>=ÞÕƒj§w£	°ÔÎÏæC¶t3~ºãXbý‚
[öÚåøommÊómOwG¸ˆ{5•æëqDÏãÅÛdtŒÇîjlÝÎhªbé8^Æ¹@Ü•ˆÇ1Q.v=´+9GQJhÅ|îb!}Ä¡àÌ]$fÐ[Õ®Ú³ó_¿”±ûúãø·íx\™FKÍ­8]6^ÍòhºœäÉ|¢FsÐ©“âÌž¤Âš˜§É:°øŽ²ÍpÝ££ÓØÞ¹Ð*OWQÃ»rCÜÂîÓúø£©¼>ƒ/uz	Í¤<0MÃ‡ç»:WÇÎÍMœqIs´M³n}p·!tÖ^ëÞÝ&æ4 þî0Ÿ[
=&£dýÄuƒV½~½p#³ÇG¸{üý¹ ^+¿îƒ ’8Qò€¸«^€êÔËt-ûðZ Ñ]gPG›ø‰ZÎÃÖ}À¨EN„r«’YœZ'RØ ªo|=-ãL›ñó·%™ƒ6Öºº°ûsÜ’}
]b3F©Ä”ÄXIO²Ø%4ŠH ¦‡â:!(
©+"ê®tV#x*r=î½º¿ ó	:¶»ºO|µ
:µÚG»]Ç˜˜Q·%êX×ÅC‹ºv¯â‹¨ë"ê¬®|_™w	íïþ |ŒWf'é&ñ@º	
gOÀ¼À‹d(")Cª9"¥H¨bIÃÈ'Lq©ÂK.c?p¥«\ªP]±•/JÀÁ­Í³ó“£cbþåŽXÊ$uæ]Ðr]¬saD˜ù$sðk‡˜c‰ÖÄ½°w^Má˜9Ò!-élr¿fU´„ïÅWÒŸ^k÷É­ÒòI»`FËL‰tóU9µt™Ï—ùÑÓqû¥83$”‡EÔ²SB<ÒEÑ6 <€L«"x„¡ö4×fd£rKŽÈ÷
Úì*Œú9TvMv°@ò]Þ5ÔÅŒ£ÙµQsD4ð³s™Ôòñ	X¸™ìQ¥xûñâíý)Çh=rï&ïV¬cÕº›ƒ_³.A,Ó­dÝúè>¶â8êì §eŠòEB«°«n»}H»}[á¥°¯ÏKVÌ6‘T.§óö†ºÔpS³b±yÖ¿ö<HE¡±Ç‘ˆä?7ò|­§ÈG ãˆ§|©¦:2É¸a¾ï ‹”¯^T”ç¬¢<
ÿpÉn#šŸl%æ^ jâ	îëhv*ŠÞÌ[¢ûÉoüýÀZ
÷hG„x-(öwt¯YÚ Ä=Y!e-Íì„Ø¾UµÉØék¥ZÓM÷i¬´°£=¶R_:©8mCx¬HF‘°©ãÐî¢~ü†ítQ“Ê•¦={¨kÕ„'Á2°®æ
¸:«©Š„Ï04†Å	ÁÐ¥¢‚bäq—F’r¤|/òë¢9_…gª(ìÆ2&mbœ¸¾·q§‡ˆ´ÃíuŠÂ ÑIUè|wçàªÂ^È'¶€§<|'°ç¯Ž €ø¡Ô‡2šy4_N2e$àwQ&„À˜)W‚~¸*ÂQ¤<©(ö”ëú¾ç‡Jb„‰
H$ÀvÔY|\…ð=­CÎ×³*Å¬¹‘1J
/þ
úu…££Ú)>=Âµö‰øÌ÷·½ö:`íÁiOI{LsÝ¦~Q)†8í)êz×¤î9ì]œ>îâÇ®d¤™à(K¦ó‰êtÓñÝùï/Nl«‰òÎýuíèPÊâao_PFg¼˜I(j;xµ9Å¢ÜÞ£=»Õ×ã>B>Ñ×‰ú°?Ü&º	sßUN¼çK!Dä†Hvca \—E=FãPÄ>cœ “@(.°<EˆŽaþÖ¹I®oFe÷Ã1»ú!4/A’žÖtøòÝoúJ‘xÌJ?[xåADëô%Fö>foBït¾ékut.2¸Núà¼‚~Ò'èLŠ…4Ž@Ð?
m@ÿF*Ò‰\§b’•C~÷Û‘X¨7Î+ü“Žß+O}Ý	¾ÜF~#rGÅq%ðÙdq%sd›ô"FÝ U h¯;ÖêÇrVj½%×ÏÊŒÛzFA‘:©
|’åZ‰yUæP9*®ud¯ËÒ£©š¦°³×›øÇ(]¨BZç*Ê—ðŠ€Jc–Ÿ’ÎLå·éâkvô
#çCr-àÝrN`AõŸ×°Šq2K~ÁÂ‚Ý/óá-…\$QöÓª<å´ž\RÆ žÊ™ê”Ãq^ý2Y*çƒš©×Î»…¸/ˆ_³´jfžl´ÌMt¦’ðæÀP•8¬Æ‘^ïUú}ÛLd÷£<™[gÒZNhzx£ôlŒÎ—êI€¢¶ =Em>-­¢]šJÂ&³"ky¢#lÄ/çg•«Åðìœ¢ŽÛrQDr®Â=õmXä#X`Æ™–e-_ýv/â§J@jÙR’&zKF7«¿•ŸÝ‚ŠYéH'Ày”·g“È`ˆÑ˜ÍÔ¤Øv ›¥·EªÍ½ —øòÝùñé¹“¥ÑW»1:;ÎÆÎ3‹<‹<í&þ´Ìù¾ÑýÃlþfV|£¬èßôºdj›ì¨ŒÝõŽKw{£fÎ*:w«MfªŠ®ÎñF$nqR¬Æ¤3ËÃÞ^æéTgÓÒ%HI
JìUM²#îöÈ<ð‘¦Ñ-Ÿ0šºm§õ¶“ÐÄƒš`%Ï£[7G@UÇÔ¯*çÌÏÛzMŒdœ€g§—?LÌìö'”s;'”3àBbr½WÅˆê»­‘%Itw×ƒ
[Þ‰Z5Ý4‡‡îÔMê™ÙÝi©a: Ð÷`Å<×á& Â4æVÎÍWÅQš5>N“kly×ê_¬¶[«Ì´e§\GÑ•I'Ô’Ùè¡Ý«ïÞ]±1jun‘xI,”7·p²iÞbU²ËØ·´ÆN¢6íîŒ7}ˆh+YyX5²žÀvû¶Ad¹Œ~þÙÂK]iøêÝ¼ýåô
·îåÝDc¿YÐÌÌÿ?®è¸1‡ÿýã;“d§‹¹4¥å|MõÐ­VÇâ¢&¤FW42§ÝÖv¯ô¸3µ€S»Ñ\›¹YÞ…bš\Á©woEc~+mi[u§v•Y­m;¾IûÕrÚ+3[ŠÅÒzðßÄâqî”]mçbñ5™+4°Ç°¿¡ØÉx(CÁ\ÄÂ˜º,
åA,ƒ”fÏh¬<xÂeæBà€Ç‚ÔG*dT¼ /HÆ’ñ‚d¼ ‡C22yÈx¿dÈ6ó3—0F«9ó™Kià¶–Ó{dåwÈh÷=°ŒžîÄ`¸OxÒ
ËXùdJœ¡Xô.°FO„£3‡ïv´Þj~;V Æ¨X/{Ïí.ºÄ.¥îøÐ™à±¢| -že:Ý&”ÁŠz…tkÝyU¼;EW@;öQ[^Ñ¬žClÝÞ¡‡•YgÇº¬ü°ƒ¬€ØEÓAlPÙÛ$Í0Ä®Öí@ÄNª(b›¦ŒØnÜGl´Þ 1,?`oP¹T‚’DCá¹úN¦
P¬S)IÁt†/Tà»JÂXaT2?Š"$
P·ü€%òR‡C¼[Øª–õ.tÀ"wÒ:T±ÊíYþv¾†Z¨Ë‘»åç¨zÇ#„8nOž·Þ6ßÏúÔ•÷nDøˆ£ÎY„Ö¿W]»KÊ¼^¬-ª‚B—_iÜ¡hÌ>ZéH‹‚U«õ¬ÝÑû³Áà¨nµhàït:ºIÓ¯Y«ÂSçnøùgkÏ„µ›VÜ¶iìyÖMdÝÞ$ó8P(BÅãa&xP©¡¾Ç¤ÐPB#óØXH™Ï”Š]‚½ÈE‹dÝ¥È¿œl~TS¬ÔÙìmÕÁÙÌp°)›1µNz,›ŸØ{ê˜‡ÎË^:÷ÅÃþjÒùXñýÈToàw0Ñ…øvãF1þ¨q“ Ôx¸(ÏU–g£Aî>vÇ«¢®Ç}éKbA°¾¹€H¬+¨0Kìú Ñ=¬b3æó0Œ"Å" 4Dõ¼ˆÖ¬ÒžY=±Jj˜"/G\k‰·‰ö'[Â=&Ï×~Ú²‡CËõt®f±µ‡»áR`@tVC¯*ÜÍGí6¼D	Û4¼¹Ü@;ñ*iˆ("Äo—î•½42›¢sFßwçâôËÅûýV>9¨õ]Ì»:ãÁB·{Æúêú7Ö5ï«WA_Ë}Ð½¿¡îjëÌ¹†7½S?ëö>Ÿ_áîý:Ö®SwC²tHœø]•œÌ­ö,ü]÷XÕ	¶º¸Z=wãó:¦½Ü¡‰‡äéÙ/£“?.í¸²ÓÏ}¨@MÁ½èzñÓ/ïú“ó>d_ÎÞv%K³å•€ƒ"r5‹:øô*ä“ÉµÐAzƒˆ¿õ¤^(¹ŒTOâ<UŸ[wÚ^£Åb‘ô[®0ÖîÚMÂ$¼íE×‹
F9dGÅé|yÿÝ8`+^«|è‹¤Yô[oM9 ã5™¤}“Aï~2ìåO½ýÉ×?ôþ¯©{=ëdÀñ‘ô>?’yÈ3ž%ý†;`cd` ç=§ZÒöšë€¸$½šöZ¬ix{5í5_ü­{ïC<_æ½Å’¡íM9`¥ûï«‚òjÀîNZÙ—C ÏoB÷B¾úÉ$ò}ìS#‡žR®ˆ»qÌ|!ýˆ	cB	'AèÊHrJ¢8Àa <¿.'›ú¹žô  ´äò1Ð °Ç@1Ùrprùˆù›(|{´\™t
­kZöG`ÿHhÉø}C;‚¡«SaÚ‰Ç$úï‰n@Ï
-×­¥lÃFk	ÛáÑzÒ¾ƒmIk)[qÒZÊV¨t'e'´´žƒhÒNßbf61°±cšè- “Vò¾Ã·@ê©Û!zÚVsµž´/¡5–ZËÁN­å0h»Û«pÕF.½Ÿ€5ºZËÁ`­¥µÅX-ô}¶Hk#ƒ!'†-ÞÚÎ ï°C]Èœ:VØkuï•kE`ëI‡í+¸«•¼ï¼‡½ð¶€l-L¶žØ–­¥·Cf›É‡[ûA»®J[Ëd/ÔûÅjGólú= [ßE2ÆX¨ ÄOBÄ©ëÄ½‡’0/ÐG¥ „ù®K<%".Ü0B4
}4°-óÝ|žÎ’s8	÷‹ß>bþ\à\Œ°kç¢ÀEà\ÌØœëyVvì»Lw ¦«‘õa˜®yv÷t÷Ý}Aw_ÐÝï†înžBÏâ5#ìóÖ[‚½5ÔÖˆoý ±Ûb¿5ä¶ p¹-
¼ƒ¼\Ç¦ÀÓÆÄÎà­çÒÁ|ªgbö´ð4›.˜MkÜ¦Ž­]G?ˆº+x\Ã¦+‚\Ãfø.ßÃï(7°ö|ºBË5lìñåAæV.ƒžPG¸¹Ëàc¨#ðÜÆeÐ^éA×òzžu£›Y[R[XºŽ~¬Ì×ÂcÐZìá éˆW×pé Z×qè„\×0é_7ñÌaOfø>íi×pÚ‹ý€ÛêäšOk+å…„ª0V».Ã‚“4Œ°ïs$àcN$ÏdìŠ8>a¯¯¸Kâºr’°özÎC`ì’Éó‹BÆˆxÖ°µë"¼…ìR‚|„*°µK™ËX{æÍõX¬ƒÞ¹Ê'°w¨ºäûR¿€Ôí 5{ ‡_­Ž[Œúª©{óxÁ¨»cÔÏ<	ùP„{ûðzNØv9¶î¨v-až]K×Šd×Söiz]KØ†[×¶!Ö;	»`Õõ¬¢vòfS·‰ÞÂj"oƒZ©{ŽÝ¸©'nElêIÛŒàzÊžt¶xs-[¤¹–Á=:hƒvÁ•™ô]{[,¹–A;Š\Kj‰[Ð÷\}KÌ¸‘~Àa‰·Ó÷|öVØpuÿ3Æn#î»hmp=å ­bƒµR÷œó Üå­¥·Àwëi­ÝZr+L·™z í U²×:`·µ<öA<¯]ä×}1Zm–Œ½~ ­ô<y˜ù±>V”ù’Å^€ˆtUä)„cÒu‘‚V±bŒpì)B\~øB'7ÞÒêì|I—°.ÎåBèZ±Î‡…˜›c°–Õ5B›(Wg_.?üTÔÏÍÓt¢K^NS8âÊŠ¡yÑþÈ¼„…*+¾êºo_³±£©k5SØ«™óÛåÙGgn
ŸFEÎ}§|þéÃQ2-Ê¡šâžëZ¸ÎÇÓ¿Ÿ8ß’l)&°Øs]µu£2/Œ«ÁA«l¦4RyòU-ÆÑÍ±Þ:Íiùƒí’9Ø]'ØÄ‹=îz[%s#Äß(µI8òP{^~Ö¨ØšAâç¿‘Ÿ÷‹›*É°#?šòP”^D¯cÝÍ"ú+=–F·îÔØÉTsÛ+3Œ¹S]còÕ‡Ó_¯õQÑÈ1²eôæÍ	l­Éý¼!J¶°íÀõI~s&æûc(J4AYÛÍï@zPè@ÚscYÎ­æQ:íÞ`¢àd–]’Ys¡Ð]íçi2Ë»PM“;ÕeTó¤Ë¢vÎ2O&ííµ »­¥q!„h£O`/_|:;¿Òý¶íÖ1iÝ°ZXLTvÕz:¡1òÚ˜¥ßlØ M¤¶Wá­òe76µqË–-´B©[µÅ½–-"ã‹ Ý|=t™'òæï'_.N?zx&Nv¸IûÉfÉ‰íoçôËÉ—Öx÷á´½XÌ[ÜéÂïªýý5™É_’™õÒÞPåé<óæc:»nm|úùÍ›‹4úªÚ7ÇÃ¡ÔÖPäpÒý’\ÿ
z|;ßóÏ§´·Jå›7¿g š¶65Þ…Ê´­ÕÞØnò6óÞ<[gù"‰Úûýf!µG§ŸGÅ4F§ŸN.Ý¶æEÛ¦fÖ6°r5•£%Øp™ÅùºÙ¾‹ç®‹ãN—Ö¶–<ÖÊôX[f¬<.jlùG0Âê«’U¼«ÍJ2À·SQ_¥W7w^Ýµ5ªJõëQi¯ŽÀ$ohªíåå|¾‘å1(`y_Œƒ±>ë{aé—.SÆ°9Â€qÆ¨)±+UJ3ŽcWD¥ÄócÊQ ·ãP“‰˜¥w`l/¦· €ƒ½0‚†&šPŽ¤»Vû[3YÎ%¬¶áñÚù6—Ž\Nç&dj¡®“LÃ"æÝ ;Ò K”ÃRÌs]$0™2øÇzˆ—*º™F~­«‚?Ï‡PdoŽ¯Á¾Y†ðÊLWc8~Ø;¡
ßGKZ*|/à.¥ÞN¨‚z#úw«À®‡)g~]ÑmåàFÅFë‰X8ð4öØv|a½Â;ç¾‡bC.ëàV¤I£¯;Ú õŒ‡‚*LáÁ\é× n&îkìºÖ‘M8Ô]OÚžG‹ûyžd¶‘t›4ŸÏO>]\|¼ÂðeŒ[§‡‰³ìPšÖ¤cëÎbOº8ùs*4·ìç¡ýÿsÅŸU$á“Gñ•µ*mcð²I·½ýæ7(ÌÛ„ù5Ñ[î‚Ú0CËwcP˜b½åÚßM'¤Ë‘öÐúúãì#7†©ådÿ´~cæ÷ùM:k‚^’GÛz§ý¦?JÃ,¨¼A,kOnŽ©CxÌÆY2Ê¿ƒì¦‰cÒÀÉ’Å˜¹5Õ‹t­wï¶JË¯#1
—39QãhQ`ìF­ëíº¹QáˆjmÚ·Vs›ÛÕM Úäv*fÚik¦Ý¶­¼À.®G(M£…hi¡EUK“<S‹omƒžÞ.’¼e8óEòM«øÍ­@KÔÖc[£Bßoo	öé T e½!¼®MXÇ„k’ æ¢ˆˆ Bê
âS7FÜXì¦‹K&	¡
)ìâ€¢(âaI}c…k K‘ rmÔ/ÒÉÄ`b®	ÏFWƒo
|0kñ0Õrcÿë‹iknN±Ûu½ù#0M®bª#rç•ÁT\ÏTžDÕîZ11-.Þ]œ–ßªo`©f?Eb¶:¬ëm2“0×Žú§Šró[ö5™Ïõ¤Œ±bØ…`P-~¦5>::-Ìñr>IìÜ§Kg¦ôíºuÌF9øêèƒGÄ&`þ;NBP…“T·=ž/Ãcx8Ë»ãÂð9Nã[õ1XÛµ›1¾»;†‚³íÂÔs« êVHB/ ãxTìïnhÄ¾£'BlÏv(þ€=v0ch	ØqäÔó²Áêx>weW$ßÃ?z¿Ou¢03³Î7Ccû/89·…Wâú®•èóÔDº	¯ˆ¸{
þñõ¿4ä”Š#B7Ž8
q!
%¹ô¨Ä.£Œ€dS<ðBª¦ˆ½<]F7Îù"ÍÓNêKx·²Iq8}ëÚÕË0³Eh¼Œ39“t¦œIAWÆÒåš£^hh2â›X$b–g:|î«Îš8g—G
Î#øä„~Ù$ÍszEœ_t4žÜØÑB³l:_‚¤™é`@3ˆ©¸wB8ÀéôHÌîg)ä@„ÍU”ÄpªM&÷Ë·Îm†p027Êõ £¯FàU=þVƒÒ‘4ÞØ¬7FœE©TÇfæ-a€Þ#†ÉNF˜·%ÂˆÇxV'¾ç¶Ö­ÒC™½>*vùX¿6ììôr¸ü*D–s2û–,Ò™Ö”Ž‹]œ(»Ûâ¤Ÿ {4ëÁ¢Œ°®ÉM5*§b¬÷F1ZÄÓÎ£ªž›z”´	½®Äž9×'²°;m¤ß&ÁApÖ ±ö$r:ØK½…NH‰ðÃ(ö¢ˆ©Ø‘ÏiH)F®â.(`ELÊXÒ8n Å°	¼ ¹õ¹<^„Î¿½Ðyl7Õä*!ƒHÙ:´­ë¤»Ð±·›ž‡Øéi?Bì<Dtö;6 ñ¡äO»ÑõW‘?­†S1´]ç_»
"ò d¯RÇÐŽ‘<È¡+D|ƒ©Hå2Œ}ÎqHh©¸¤Ôu	ü&è›2»&´F}¸üÏŸõQ®±ˆ”ðÎ.¿4¤ºü¢sF…: Üˆ‹x9‹ô7b’ä÷Å] åüÍ`È}“éo û›ÆÎþæ¬Ðº£d¦Å|6Që™ˆë¼ãºKW§\ï58¸Úº›£ÝƒýãFÍô¯Z<š—[É×N¢eÖ7¹_›;Pz «¾aÎ”™²üV¹î@9†Ïb9ËtT‘ž‹¦[fpx”²d¥Ô\gå¡4cçm£º™A¿GRÁ_Óõš	)a)¬HéÕ(nÒyµ{«púÏJ¸1ƒƒ);‚Uƒý«f0] >}wvî¨è&uô®6™Á@(žZ€ß×=†ÿZ®Ó‘þSß[”ÜhWŠL„{“dfåæ­¯×Á„yeúî—~T0¢PËò¯ÒÃà­¾Mþ„ÕÏ& öurØãÜe”Tï€y”01¶Së×gSƒ,ÇÁ~	L±Û*‰Í®é×}DûÄS}Ï`=m¿EuºC0¡u¡~Õ$)ªí`IFw0ô10þš§±éåCÝ%[›÷&nM»ëƒ³l`}µ¥CˆJ$@ïëâ A‡/t€.Ñ)ñB)-)»„›\Ë¯£;ŒG¤ÛŒ€ìjžÜ…Ë¸3e’v&;Ó¤¡vRu&Ë{-Ç“ÄFÍ¢å"SY—®æpŒ¤]w«!2[¶eœ“ÎtOõ¥²tò­ËY¥èÜ(AqjýÜàÜÓa:$­Ù£©YøW´Èhˆ0~æb¹ëvÑ1^g¨ô:¦®eŠˆ0ð}ÎDì‚ù€å/•‡bâÉ d8&a¨à_c×õý8Æ”RÉ‰,®±3ŒÏ}ª@Çw¢-ó×¡+£ %7Âå«†+ÂB—^¤aªM†©Ò|“lêhÛb™§:‚¾`Tv1WG“áduýoçÎÅr¡.òt¡œ÷o/†îÜ×ÎÉïsåœüÏ{¯5“£ÕG„ m›è›å€47É´n.®I­S…ÞàTÂÀnªP»SÐ¦pþ?ŒGQ¹\™Ì iÎÛ÷§ï^;—ðe¨×ÇŸáÙNà×G¿€øýÿ·d2yã7£s.”ÐfŽB(ânÄ7¸¡ðïWÃœHÌE81t(M¬†Ž`€õ3m8™Ö"×a N¿6ü²›t9‘+ÝX?ƒn°ÿÇ…ÞoÎµƒ¦Öˆ¶aŒ¶Ñ6¯mÃÌeþfA;Æ1ª‰÷±…š7*^¶Qñš}g-¿C BO{¾ƒÕ|Ô#Rá®Þª9üê˜ÙafµLû+á‡…¶œGnÿâ@Ôº)8ÀÈ†Ø(KLTT[#}„4µÑßoŽ¥‡ŒÔ>­3ÃÇ£UÌå¦Ìœ¥ú‡…Ì\=\Ô–£^(AÂ8<ö%Š\ItÂwîs—sÎ‰Š"åú‚2?}F|7r=£ºxº³rfå¡¥Oè5™ÃØëÅä…Êþ¦/Ç9¯2®Ï)¾Í^;_ÎÏ4<³H‹ ¶Ÿ´ˆÒ5}ÔÝQ’eËC…¦­ œXÁ‘&àÝÑÊ¸Vn“¯Éñùjï"Î³ãÕb\.X©f!ð(Ý	Ðn!¸Û~~ßGdÃåø­jwàŠM4.öÞS&ýù}¶Æ$Û¤À|¹l¢úº\šæ=8óÏ:E“µLx<œÆã|ÇË~X8e¡äÈ«ÃÛ§Ob9ÓEúhÌÇ˜®Âðº~" 
{Jqq—a©D(vñ|7±GA‡R‰˜
?Œ‘r9E!Ip­p2Óêiæ,éüb:ÿ?t©äXÒRÙqôY–iç·Áè£É2Ë›ò«ýþéÃ‰óªøñ;°ûÛ§¿9àçÉtöd9-R«Í¶»Ñ!êIé[ˆÀ×ÑÀGZßþ&&‰4êÏ¥&`ìœæšt\Ï
K TÎMr}3¹‡ÓXLŒæ­¹-3eÜ 3Páß­& /ÀÚu:>^p6¥·zš°/#í3 †•!°þï§ïð~‚³ÂÊ0Iœtq´PÓ4WkúÈ7s:3 Õ®°ÌtÒéf®]…ibšeã#°Ã2U¶Õ{T»pT´\h,Ídªˆrúq¢gÞë67È)n?š<ItôUÝw“Ä„”2Yä¶8šÀl½îÊ©¬ºª®ùÑ*ž tÌè	-ÒÔø,¾%:·È?}óañ†¡-´ÌÄÌ'"×ÓXùq¢£©FòÀBO.gãòŽx’›w·Î°ñ°Â1¯Ê4ý‚Ý÷Â1aÚô_PU©F	÷Û#	ô¨FÅÑ0êI …ýÙ<®ÅïO*Ø˜7g=Ø¾ÁÄí(ËVIìô`Z<í>¹k$$°Û/7Ã©žëóˆñÖ×Àÿ$]|ßåâ÷Ó‡Ù¦»×ì×[¢ÐüƒÕ1±¿:!—æ ¤Ú^ ‘¾»·wÒþºÂéíÈ¤Óëpgá0·Hø]ßÙ\¯®ÎMT(¾­y‰v6«Ü–hùÔ§–ËYSƒwJÌ¨xð ý4b0ºÑ°Û…ëýÕï–Æ«   ‹À$àþQ‚0ô•†I¤b!|qÐ/t]×‹BI,ü«àËrf”#=©BíýïÁ4¨0.ñøB=×º°±ž™>è3[}bJ7³1Ì6êß1ga¥êeßÔl/4¼èƒ•¸R°q¥kÙú´"å¥ÍÅ†CèzÃÒ&ìdÙy¢>Òº¾#Ïã.V1ò¸ÀRÂIê¹Ôw¥‚Ó”zÒÅ2p©¹.¹^(A(õ°Ä¢iy9SWgªg}¦"wËÄfDçX«œ©”¶ç\«9S_¬ìž§*rªZ«üxý¦ô¸™Ã„×/óÎI1x%¹ýÃ…ònç+õ8÷BÏóY¨½u”¹1B¹4‚ÑØm6¢õý¹¾ô¸¤Kø+rÃ:7Þ['Ww¹3M¥æN&Tu`ò:£K-TkPÞëšêH‹p™ë	Þ;óôV-âåÄ0™.ÏNÏN
Ö‘SÇŽ£é€¾<i¹ÐÀs*ßÝç ® -W÷¾ÓE1Js	KÈobA£¬—%<V8Ñ¿*ì',’dd¯õ_a*²p0Â†Uamë‹[Gu½œˆ…£îtá¬ÀÕõã\Å¾<LmnêÉÌ€E®cÉ¯	¼óKX1“î3S“"!G‰Ik¨w
õ™zÐht®÷fC}ê"Öœ¢­Xsxx7XË}Š·D‰K9ÂŒl¨vq€[ŽÀÐFÅþï%HH!HÎ—!|ê¼OáÎ~¼ôG‹0¸P5î,WÖèmžï<ÍÛ«A‘ïÌÍÑ›Y“¼ig: ºµ¬  ÅM:½R‹EDñz¶Ì'½¤ÖaÐU„—/®è•e2¿ëùõÔ(Ø–­P|8ÿpvÒ¡œöRKhöÈyrõuòNË¹MVùàŠ\^ÚñIäŒtAyÚŸ¾ÿD®ÐÙ®ÑWþ€´Û–‡XMÏ¶}œ~Û)Õ¥ÈŠ<„¶t‹£Öé×{úZžÉóX©´ ¦#1ohQVY˜¨7oÞ¥ó{‹‚ºé‡IÚžñ¿hz©¦íõ .AÌêš‘˜ì¡6€µÎRþ[¢nM®±i­¬-¢šü„Å—cãÇoÄ¯ó¦Ôwóë¹º]ˆ¦tvÐdZUC‹l
á
4½l,]”ìIÓ1%ãU&ó;bÒ$ò<J»Ï…
°ç!D—2»(có‡’?•¢!$ò'&óÇXÖè÷ÿ 8½5ºÈ«yš%F9-³1>$£7)'Þ¤óÑúo›™š™dó‰¸/³Ï™o²£{Ðpœò"›ó-Îç¹š}ø8vJîë{»`Y¤ósSh äJÏ5|TÀ4Ú&(Çmb
¿&y,˜¥“D–£=¤âstŠý´Ù¥36Ê#Ä®¹œ©\D:¤£œY9sOWûkVÃúò­6>d5£EqqWÛ'°t	X4úÆïL®‚kŽAÍ¿šI¤ÃÙu(Ø½j…ojùÿáÓg°›.tŒäØù5]™Ø0X²töÚyxÆîktàDîèUO–°L`æ)6Lá=„0ƒI‡çH0—Àjº_ÕKTqVKyAß0wôp7Ää3•ŽÂI&ÐgªT^^SV2[]®®†Úæ¹ž¥ uÔ=.ÂAÀ}\ñHÍ²Óè!ºzâvŠ@xí@çfÕK¶”bBV‰ÍPß‹“aTœ	ÜOs9 ÅÅ®™5o<äóµGÁÎ¼ésÇ¶»Í[„^Åb9Ñ:L[¸YfE«¦Ñ¤;Iz=éÜþz¢2Ò™ª¸ÀØ*¿i'*(š°ÅZÙÚÀÏÆ%ÔÀ·¿Y^ÿé7â¡zDÃe¸lª™t©\ÙlTîÒQò~*û½vP£cÒœ*û:ÿJíá`Ü´ðÿé4Ò—„m¸ñÞ\løœ€vÐ’%ZY6:¹øFÚœ”ÐðôÝ‰Ñ™›[]œY4úãÑ]ZŒZÚð[é[Ê†¥6Ó…MK)tQe›– jØŒ3NîŠûÑM)çuÃÄ†[¢«B•2ÚÆ¢D.,òyf3‘jŠ;Ë\Ó./»[à!A[»Y¨a1„²>ŠU£µAˆ:]ÁmíS‹Ql¥UhÁyŠ‹úm­Ö‘#{„¶È¯ 
µ?±ÉZ*9ZZVS5´4¦r9Q¶­µÆ½Cf–¸©ìŽ-­sËÅ[YÕlx&³ù2·JÍ‚rÅÉLÚ¦Ë¢¡.îqúéü÷Ë«Bæµá‹»)	êM‰ûQâÖ^CFú‘Ñ~d¬…l­•Xn–©…`ØJÒ¶¼[ÍÛ–u;1‰×)»ˆEÛÍ¤"Õ\"-Í“¹ºýx„Æ6oq5èÙ¾¥õÂïŽÈn-–èr>š¥¹Iª­Ä¶b`Ü±¥ÞËÿ}qyröþŠ  mpu”¸íõYZä®6ÓÜò÷+ì·±¾ ™ZÈý‡všù?Þ¾û|çmg¯3KŒŠz,ËJ÷h­
Ú´-´Õö–ëw÷5,n¨éüE6\µõ÷+LÓ¶·×„]:éØ6^Ûæ¼zãíŒ>Ú8TûK;ÞÑ†æªY’ßwr•4Æg–´;I¢¼(Ô%sÙý¡€Ôånoö·ÅÜ°n/ UÂ/å+ÓÜ'n~›¬@çû¦Z&QeX_kÓ3T-°´/mÈë Ÿâ„z„JQä…1ö8VR(
p¥p,b*A<O(‚¹¯Ä\øyQ]Ìë‹ÏæÅgóâ³ñ	²öÙpQ¶•UÁÀWIt¦BikÎ¤]žŒ®Ñj?L¨ó!¼6˜uM™ô„^ÛÔU_L7šM?NGÚ‡NÂªg§yÕÅÓ‹|íë±‹W?˜Ó§%PýßÃéSä §O+£NNŸn]œ>–{°këµÈ’bå²l^:†,[W=Dö$zØôYS=8lI*^$[’•;É¶ýƒ_É–"éÄ¿êi²¥yp9ÙR¬|O–íûæ¹ÞðF*Aö†Ê’fåSêÖºs>…•+ê ©¾WÎ©îy/žk¢ŒçÕ¿M
ò-—uìýO×á³žw[û'˜m ûÚÖ"­»xÃºô]ãÂ€Xá79Éú3°¾ìPë2BMQ[^'yìG{NIùûÌþ­óo{Õžk£ß™íe”ªƒ«É–7mlùf-»V«u²Y‘V|h	6n–Ô|o–ýn:áº•Þ8{’.K¿ÃßÖ›påGëFß«Ó~®ýw6Ým8òZùÉ‘gsçéÅŸ÷,üyßÄ<‰nH_žÎ˜·JB»ùó$RÂRÅ˜#7æÈƒÿ!îR¬¨
‡n€”ëúJ+…â Ã™íE8Æ˜Q"êî`}¾øÝ9ûûÛóÓw¿çìütå¸hpÜ­Z×ÝY‘?À9™ñ¡®ë	¾ÒÜ´Eè$ÓùÄøz
—ÆÚGx¦ù˜tÀæa§ó"çíç›$u.t’:ç÷YbV2¿?lµŒâ±Ž£LSè}”™yJ.ëÒÞø(pv«io¼€»˜ÒN J9%[E30õöøæÅŸ¯ýâN¹Gf;pG'Ð/E¾ã½Ô¬}_<¹'+V»kêƒÓÌäu¼É£Uú¹Aïðƒ¢ój=ºâa´ÙÐöîn0xÎù &À¡éÛ’Q“Ç¢æPkägã	©å{ø
‡ó¨€gš\!9š$³åÝ¨˜”½ö»‹nZõhå ðmR2ûü×úM€w\sËùÝÜÂ!Û… ^¹ÂúìApúËÙÛ÷ðpY’Úúª`¸½ÙâF!¼ta§Í±ArúËßO¾ürÑ³ÃjÛ„ÉOÚü`I–ÿµDþM—ñ.€"êä$¨R|yööÝ™ý3/%•mOeë0Œ~þ¹Ë©R¼ûã·¿œÚ¿§»iÇìºNÔ¶ÐP…Ú,ÓÀak™Îïó›töJ„IK8BÓ]ƒ§ªiòP9lBŽAi9ÞÒqj²o@Ç.[·5²ÿæ^.Ä•Wu¥Ôu¤’¬.gH=Ù4¹å®.wõB­!Þ”¦d'*u§veEi&›qv'ƒŸ‹åìj‘Ýt¢Õ tÒµ}çAesqÛ­—ob‘ÙÌÅâk2™ìƒÍ³é÷ "Tz¾‹=…X@¹ÏãHÄ'4Äsó}åyžà‡Î\	!…D8T!¥Â§±×ˆp`¨&ýíçé,]TŠyÞXÌí;aGG¦°©étµð:ÇbùÄÌTL0ó2SEôîùÅq´ÒšéÊ:›ó<ZÍó9b„Úb°3p°•HÝ'.s)®@>ñ€³5ò¡÷þü±'ø¸cHì_þ0ûmßˆaú„ì	y6†CûB ž•/Yˆì¡½–Íö¦í_+x±Þ_¬÷}[ïF“ë`Â‚þvü6ycþm'‹þº³Y¿AjmÛ?¢ê`à?¦íhPo0°6õ7¨líým¢~c´·ü7È¬Íÿª}` ÷Ù¿&}m¬ãI×údñf^iK‚ŒÑÏ`ÔÿìÒaµ¾Œh
Šcê…¡Ài$—!WDFŠ…4`q@¼Çžð<…<æ!…¤ˆ±0¤1vë
¹ß_ü×Ç²6ƒ.À{½ÓâViYwò`sÕb†‡±ÉM¡ë‘®Ïðºü½¡ÀH·‘"ÚðwÊh2çô¨ÃqñÍ6Z¥3}ˆhlÁÜÀ-[I¡t)àWæiÉŸŽÊ›Ë÷ŽLâX-ôœvMm=§±sy£±²¦ôE.†´Ì•a]9¢~™®ÕL-’¨laŽßÃWzÐÓGé´î-"~à¼zƒáÀEŒï0aº6}µÖg{n5zBä[¤=ÕÃ/Á¨qûw½X[\Ww‘2K›=”"æ×_.Þÿ(Woí×h(úà3îñnèC¸œIØ¯ÂÆß¨ÿà±×|¡oÅ*‰–Œ\>ÆVŒþ®eH¬1ï Yú&]ïú^l°‡ýõ6ÒWýD>*Ž©ïÑçaæÛ„“½©º²ÎèP”™­os½PM&ß©âr=Khà‰.á)™ä.4}7ÉòÌäOÖex/QßåÈ&Ý^Ê
A7²†Úòu|Løè)!™zâ1î±ÌôCûï±tô=Ð°úa‹?&¶›¼Ž~àú[ß¾ÈýZ9ûðÉ´°aÕ€÷wIEç´2ÜäÔóúI±ŽE=Ý¦Ë"Z}gl³Ë–Ë"ÄR_6HU\É¿ÒzDZ@®[9Mê ¦u#øe’6Õ2­ZÒÖH.§Me‹L›dªÚZÍ-8e7émk›IµROÜ«|ožüÅ…±±Ç½ÈP„BÊ8"1"ÂOqIx1ŸË© s7–‘ä"rýºd{þ).Ý8åû&M Hé”X“Ég¬œz$L³«®à:Äfe¼ÉÖ²¸$b²ÙµîQÌîŠ^Kiìüwºtn“ÉÄ$lÓÜJŒÆ1éåÖÏ2Õ!/šÞI¡ÅŠKñõó@¤D¬)Ž±€©àQ<ð)r«h¢oMçVy/Ôs¤<Ÿ»kˆÆ’ª>È§ƒ6¦=,1Î¾ûq4‹ëU…¾¿	Á{Nç>‘Ç„‡„"Œ„KXä")„Çž+¨G&R J¥À
QØ^4Ö—7kÝ¿®O\ù_¦]Å±YI4x¿‡Žb<Z=Ž—ÃÚ7aNâ=*„	lÔ©Aµ$(DÔQ9|íÙðQTgðLNâÚŸþœ›Þê2×*§?u}×gV§¿Y£—Ãÿùþˆy}ÿÍë‡=ûM_Of8Â‰·*Ìmló7G,b°·Þƒ81ÕS›Pò‡HÆ¯×£b˜-0æÃjÜÁ`×Á“­z:‡w2[í+›§SR4ÍãO˜Â&Çá†ü.~Ûæ|½ílibªáA}õµXL³ëç¤@Ä8BKKŒ0Dò%")¢ØG…¾ÅˆSý}äÂÓZRqßå¤Áp„É‚1-î>dÛdx¿a?6ìÄ¼µ¾b’ŸßJ…2FúsíŒÚÊv€ ß”í¾Ëâ{Õ»
.w]†¬¤{±å~\ñþ¶¢©¿/E»Ï^ÒœwŒ<¨>Ó'õEgÏÍÌ{*tV£–ÚÏéÌ|é2.cÂ\$°‹ñÜó±«â€ú8 \xˆ‘ˆKÎÝ0vX™~ø10Ã”µƒ…VÚÀ°P}Ç˜P¯œ%HøÐå&P¸”æÀwÉêö%xx´:à¡St·šVa†®øî0SQ®GUy÷LŒNXŒóÉä6JÕì„O|l‰:ê‡ûãÊ¥;³S+vÝ„QÕ&3Oóð6I_ói'Ýæ‡W–)n¦ûDøpF_ñû×õƒÇiu
¼zò ªn!P/‘LiÿÊ‘L#‰ž*è/ÊópsobN­lŒe©:–
¡þl8(· ž¦4¸Æ}?¥«"B	‰˜O}—Ä”ÏWBy,ðÝØ÷ˆô%uwã0ðbŸÆœ7hb6`Ü¦ ¡Ðþ]/1U"AVÞÄ£|×jd)˜H"2Qû³{=”Z4ùW`wFyjx>ëÍµ¾ÂD(õ(4ØL ‹áCÂ8©f€…ÏŸ´'B©¼:/FÜs1â0çØï9²aÅô‰/ä~>ŸøÒ“Nô3èOm¹w´ò¹Â®O$‹–-‡5·K+_osÖÓ.Óµ˜RZÌÅæ¶5‘¤]l£usÐ¾Þž~Öµ„úZjîÆDï2Ä ¡P}ÓÐ”Þ#2îTÙ° TwùBô#]ùÿ;?{èã9^Q›ªH„]6ÔlÙ­ãCûòû,I»H-¯²„ÈS]ùn²*°i›j_¶éw¼ðWCm	ñÔP[¾OtÙp›Ðzv/Ø^GÚ^Y…ü{‹Ï<çÕ¿óKËz€/4kè-ú<ód17pªmA†
Áåé—ówW¦0Ù ZËãÁ¾~hü?°Zµ°÷Â®Ûg†Ž>pjG§Ú$}õAåé<óæc:»nZÓ8ËIÔ¸Êót’D÷kËtTdýfj»Ik_å®(0iÑ¢½Óv^Os½xt-&`û¯@Ÿ†ÝR¶ßl8èVòÇÕãz|9™®R¡"Z¾Ø€­ÉF¡šE7Í·½ñV’àíËÎá\^_«¬i)—%¨ÄX7FPu:¥×`»èDä¥ÏIîˆ¯¢FëË4±XNò‘Xæ70“U‰×ùdyÌtK;6¥ïdwû•„’d2ij1›¥+WPcœûÕ|‘€É_Ž¾.¡`Ñ6ÉÄô*Î[/wëvÑMó%qÝ¦í¶¹n£­ú™Š–uUz8ÌÂ·Ód“«E&€6_¶Þ0¿ÊÿLfqz•§W6wó—óë…u‰'nÉÃâ««òØ²¹RŸM/ºÏMp|MƒìÓpÏ)¼Íùsò›º^àùn€	r¹ç¹‘ ~LX¨D,]¢dˆˆSÇaÌÆJˆa‰QL¹”ÈÃ¸Áoª§êdË$WŽL´à—ÚkjœTÆ‹øÄ÷ êä’YØ†¡UœÆ›ô,<—BÈ:î”Àÿ<Ê˜·yÛ¹„¹UoEp\{E­\—zÕ^—ÏÅqIaSÀ£ëæ¹|xO¤Ñë®~d‡ÚpÇÖõŸÉKº¿ã°ÐCúFVÎ€ïâx	=ý÷€§{àlÏÜ~§_àåg/w@mÿdß~§äÎOñ>q™Amß‰Å¼Ú}g‚úÚ›ÝÊÖ6úÎõ›7ï—Ó¹lkœh8íÍ›³÷Üº­¶[ŸÌ®'IvcÑî[{›Åb–¶·ºÓ‰	-æük4Ës^­`–oÞüÖ½þÐ²ù»t~oÙô×dÖþ,‹¦º¶£eÓ°2;4…a,g‘1{-©.Õ´}7ë¹ý’ÌZÛuò~œ~Ö‹f±õtÃß„Î®oÕô<™Û5¼PÕâ~Y7M£¯ªKÓ7oN?\¶œ¿{óæó\ÍhkÓÿ¸øü©µÑÇœÃL\kÛ35M“?ÛÛ¾8ý£µ•å
]Ügð0Ó,·z	/‹³,]X4M¦°›K¾¨ö_´ÕðÔDCc­í5$ØÚHßžÈÅ¬}	’¸µ	¨­mRk“T´Ÿ9^FÝ¬0ÚÚ¯l÷æMqï¿µý­XÌ’Ùu#ãg–˜¸€´ý€›ˆ¿Ži¿R‹Öü¿WåMç·oóJd"nõ]ØpÒm3]«,RY³w	î6¹öñNä7êQÊÄõÝv¿„@`¥žt+L1A	‰e!Ý8ŠgR2Å8Ge\yLúZ®ó•1U!•aTã~x«ÿL,Ë¬¼Õtßäl¸„Æ…·!3q…ú¡ô3|™/–Q¾Ô©3ru—ßƒéH-fG sÕ]ñ‰A´áñ@‡N¦ô
ê„“4ýê,çÎmºÊ=¿Yˆ¬¼-µPÀ\s)ž©D­þ.LÉl®TtóÚ™*aÞÎ×Åí«ûY:»ŸÖIq³ÔØùD)¦†á]«ñLåÇ5å¦]‚<SV)7Í=_»,j(`þæ=«À£¼â¨ ˜rÒê¤ÐmdvãÈìÃ±Þ¿O^_úÂ¸%“‡2¼ËL÷ô<<šýà«Q„°uý$;ÿ‚8¢áÄFƒP·l.¼´ódiàfKJZÊ9ÕpàR0Nâ‰,“Z\ÃÙ$°D¦;#ß6X´5>ÒøìÝFó`Ç¾D¦­3€Ð$!õx{1ò™ˆh‰PÅŒ»*däùXD¾Ð©‡¼0t1	<,àAsBsë’Q½Íç 4ÝÇB“ÕM—±¡IfÞ†Ðô¼BÓÞyÿ"6kÄ¦ç›vi,$?[€ÙW~Ø…ÜÉ·ûý\‹Ý|dC*Ž?â¿?¹;
%ž¥úG»èÕÅ<K¯é&y± ^…u™„@Ì‹¥sI"]Ù–QW(&±±ƒVpxcIÏCÂccu©YN®5Ž1{¡õ’wGãƒÊ±ð:c8×‡Ê1£r„È–$ã#„ª…‚áníqjåÖÁ3Ow\lë`´ŸuvÊ¿žÁoxŒŸ4 m>\6Q#„È´ÍU,ÕP€I7©¶G“0Ùý2‘%¥XlÃ³å¼Ì¥SÏêUÁ«ÈŽ£7­žÐÖy¶Åª÷‘‰¾Gs0µËuäÝ5Æƒ(Œ½ ðG¾¢œ»>&qä{<¢Âå‘ïÄG¾ôüA[D#!‚xÄ}.)­9ÔÞ¢?±;Ò5=xÈm–ÆydzÕío“¯Éñù"ý§Šr8F´{g=óTšN:oû¤ãk¨jë¤|¾uÐy 6xµ•Ç±HS^n—‘yî£â‰w;è~þ>Ú%}{¾ƒ4Ì+õ»i‘hÖw¿ŒÏúP‹Ä¡µG‰í¡†Æ xÈ”ù)³#PÇE¥>hDq&àÙ{~QÓX!þÿ³÷fÝmi¢à;N¿”=%@±/ž¹wŽ,É.ß–eK®®êžXÁ4$	ˆ¤æ·OD&–Ä–@€ Í®¶-%¾Ø#¾}á’3è0r’:i„·Î:“ÇYÍu`fûÃEÍD¼¶xZ¬PX/:×$1d!&"™³mKüö.ÉÝæuF[‰a	70-pz¥¢zÜPa²îêÐ»Åq·@k¢‡87›¶sÍÇskœµTÝ/§S…Ú*Ÿäeã·ìDøÍÌ´ÅÍrC²È\n)iiCõA¥ÐË°j.³±F©áÌa‚žp‹µf*H«A‚õ˜:ª—áýîÃrïÔ(É¡¹MÈÓá¹, :w?o;¯B·åüäõ¸àá^[5Ên]w®è©J«ðÜÂw’ïÄw"ÈðøŽ 6±l«_ˆ$õ…äæ·§»yºÅh+·®ÄÖg-µVlÈñü^k{ærRuH±æ_4j´§býb ï¨Q®m±™¸NäØ)î‡Ô2,¤´XF•QC8ÐÎH°RQ¥	$6ˆ²:p‹ž90Àœø£ûÐH¤Ý„<¹D›–eÖ^Üù
ŒGà¶vï–YAàß ØZÃ†ÆËH/~bMIç£»:á.n‰îæÊ¹ç'ÀîZöñÖ&	[Z›–³©Ej{^àec3w"l¶]Æ¸¥ K :P5Hc%•·9@¸ÑÜÅ´ç€¢f…¡(0{sÆ9‡qá†ˆŠ`b:›8wÛ›­ž™=¢Kè~{j4	„"Å.a7I(Fe;º$75=¸AwuÚí%Ø'Àl*Î‘. G`¶Ë~!ö@ý\uQßÊçxÑ¸ÍN…ÛF‡â6¼Tu¢–<Z@WÎA=VˆDç4 9—&ViÎEÌ=B5´ZëÃÝðŽFÍªö µyØS´¶zr.-È¥‰Œ”v“À£½¾¡4M«-©dÍ¾  @„îÖÆ‘À¬	¹ŽÌä˜2&ÖÝ‚æMÝiÝ(0* ‹Ú2iß 7“i¬Pa:fðö
!»‘c°ÛÚÖˆ@â0´6ªBk»_âeã³Ñ©ðÙÁF´²G·CgŠ0ê™UXzÂ R"á"CQO!Óáeƒ Ç§ƒ¼¤	VáçXzŸWæçqc=Üèiqýdz3Ó1oÑëL§a/_O*ìüëià_U6u“×Y2JGÉ0­á×¶,îÆq	¸Á¯aB¸„áÂ	”Ôœ_•.ŠnO%„®Ukþâî§QÚ1j¶µU_CE µJkÃÎ·xÙíTV¿Umë „Úa4ð—²á€Ò l$Z;‹1ôŒ2å³F IqT²Qè½šS ¨^kb÷`´&1f„¶	yzö,1é †BçM:t½ñÍøÿO~ÿ_¾Úˆ@¶Œáûn‘CŽÀz¼ßà‹_$hè	â'ÅkÏ@“ö(èk}ÁÇšä@ŽÌW–&Úýô.ùÉ‰Xÿ(3)\€jÏ€Ö0Ç´¡Rm°D!g)6ê P¦C…½õØÁð‹±žRêµW¹Ü<öÓ¤!_¶xZ®,Ï7j”seƒ¬ÿ:®	|vïf:T"0
šú±Q‚1&`	Cñ€³Ê\Xø$PS9³¯º«ƒ>@qöÃ»ÏÏ °sÑÇc³øçC°Y¿ÖÌ¹÷^4RëŸÊÀy3;Î÷æõ%òÚuL
 ã< -OÂóUZmµÐžIÈ-¶c¼sÞY“PÅ´G–	‡µFû"çÿ15EØ|R­äú±ÏN°p ¹™]Û˜ü¡åm›AÁnž2˜ý,kÖ(‘ˆ•câÙ èüêtWwà ÞŸïù7Uaßæ «TºxèósÙ¹‰ÇãOq ÙáfVï&²çÉ_4þ¼™&[¹Ð›Kµ '‹-UuJx•Ao€’ï¥NP€(§˜<<r ‚¬µdX`$ˆÝgNý) ††˜sô¤xsŒú³\ŸnEqs¤´œÇuRÌ,mÀ0¢-†‘ïVÚ	ŠZç‘@œ²À¾HÖTàM¦Ýât‹³o9ßDÄ‡Ÿ¡ukÍÇûÃ1|˜ëHR™>|ïÛ¼h$·¥úXHn b„H–(BBƒ‚€dØ ß†P0‚^Yi­¼DzÊ™±Ä`¬†Pz*Öã’ïWý0»wáÏ&ý†ðž'Åyyî…|únÒÌª1^Ãd\Œv']€œP±ŽÉÂß	.<P£A£èîê»m…Þ÷¿}úÐy2/ßƒßEVŒ+?¡Á|º–sÛó/§ô©pÚ×Ã#UÁÒNÍÛ¡3A…)æ5±Üik·>|eqŠ­Ú¯QŽQ9AÄ¨¨ØBÎ †÷Ù#>¨é×†lÛèIQX`{ökoðµÚCd}	vcO¼ ›R,a\®É°4]|íæ‡ÙåÏÉê€ÁZ+%ÃæªGY€V?øZƒºó™[ŒL†ÉQ¦^†Û¶E)‚s+öÐ:æ™’#À4õF2Ã¸Âzâ­¨ßü"0QDÓg%ƒP(öI‚?«t’4A(€'E'c5V·³ñ¬7ŒƒöFÔ`•­ôî‰k‡œ¯»d$Ùš-³©\7Lº«3íÂ¶˜åÓL‡?vÞ¥C•Œž¿°#$¼«s ;Ì0LjÍûÞÞEsEÃäD\Ñ¨µ¤K"3<-bœÊ¬ÉAÌôF)……qaORÂ©– Í€¤Ðy¨ÐàÃß•Þ—”(½*5h”’hô´&N5HÒéMwŽ^zÖéÀ“åÚÿ°}.f,¤¿î(Ü¹~øqëïÕ˜nŠƒDÈ˜çEõ6Ì’¯‡„/45ƒŽt·¸­¹ª§Ëéq)ŽÒõ?‚ˆG;…Àº'zÑ¨nt*ptph'ìÁÝ']1&«Æ…S€b¸g-Œh-pk.ü‰ !…‘NyÈlh€©Š¡SHí«UúÑFi‚ç6!O‹æòx¨£Â 6™à„ì±o"ÅfTt¡-ÇH¸à†z­‘RlÉ^ˆ†Ï/B`}½Ç¢0yhHç¨2¤s÷Ë»lüuª`ÎÑQÁœ‡ÿ_lfKãc@P6¼DŽœö)C„N
GŽÉ$ B^r‹	ÆÖÉ¹8µoÛ›®c6mæT»xZ–šª"2=°‡9[üE«ÑíëÒl«°Øv*I¾Ç³–Êäº‚‹	Í¸å„D…oÒQØXx·­­1A¥“ÎÛ·Ýïÿý4Híï´]k„œkà0çŠQmLç¾WyÙîT!£Ö!!ŒR}`À£§™V(<•K”s@c	´Â(cMÓ à-fš(,qšï‹‚úød·¬Q¬úè3FySa"¸Uxº5ŠÆDF/RèÑz}q žÛäù¼¥ÐS…yŽæâ`.‚e[FE!ãp\#Œ$
hŽX0vŠza¢©„a¥Ð*àB	½Ô6p|ˆÊÀÓ‰}Ž·ŸÒ¦Që›§u£xÈã7z³ûÞxPƒªvDqÂ¨J2$ØF” 1Éš6ÄXãAÌÛE‡E@=#Šë}„LêÌÆ•\ÙîWvÑ¸j|*~l|°¯kni	‡ùPÒê$$JÅ‚b%Þƒ b±áˆx
J 0Š9 &·eM¦³þÌe®ÚÚ†>­ð™Þb¹Í½±&·!Ñ¹ŸE#}Û
‘b|·IQŽðº>MHÊXÙ**¢CqC_‹ñ´»ºÏ+­ÐQXn×²GvTær1®t{­|¦—óNåú:IO+´m™VHjˆaXQ®FŒAF0ÄŒ4CZqç'AEˆ0æµœk¨©áÊ*³O¿ök:T£†nbÛ°'Et“ô€Bcl;öIìfÖb<!ØÐªÅüAB–½^ÃÌ›f½¤]Ã·Û&zvŽc;×{<Ãrk“´:Ð®7wÑ˜k’ž
sÙ	b^F| OšÕ’K'­d†0K\ ¡‚N	C€2&:xRªqJCdYÀ]+"…@ò½õX~eYSüµ	ú\*°­¤À†íöÜˆ^ëh´ò5¿µðE6Îi;™uWGßÞuíIb1}î\÷#¤ø0mRƒ¹÷q^6¦;Ufv{´%téØ2e€:ºÚj€!áÏŠ	)öXš Y«<EZjn0gñÅFYC¥GáÅïK™6H¿ªF¶‚MÈÓ×ºíÎyµÛž¹_@kxµhm· Ú:72@J
$]óã Õkhþó]r¶M’vî‚,g¹sÍO—¦;»md÷Üõ/¡e·§BhÇ»vŠÐ„ÖŒ©€¡¡Cä9#†[î#L¤gœRÀ8LœöÔ9ŽXÀfVsê÷E(E4åš
Ÿ;€OŽÖ¦îv°—%5ˆl3R	„¿›?#n„ŒC…eþ,Ï¤ÖÔ¦™ŽBeÏ¶èÀÎuÎØ¡è¬™ÇóCg§²dG„ZªCPGT€aG½Î1o	Ã8f¯…ÒqÌ€@$<QP£°•H:ûÇ?ß9Û4—í&è¥$
ûrS'†n…NIÂvók‘~S’‡S­J«Ä¬ßÃ²x€bíy2jk‹}­ÚYM$æ³Óªe_O„ËfËš°Ç–¶ä¶q^!b¡”1«£2š¸ÀzI(pÌóè)FŠ‚ã˜#Ž&Ä0G±ÔŽJÁ>Ÿ´ßn'*iÊ•í >­ßÆfšŸ}e¯“Âß)žDÛ9°;#F`jå†q bÁó,%FM„½m;0»íæ§Ý>z`;Ú·­2¤=‘öí˜ÑÍÍz„yô0ÆnV)§î{¿g.¢Ž”wa¯îœîŽTv{Óõéhzp­ØCf@c’(Ã?Vi£¸W‘i±Rzë‰æÄ(á½7,<{¡°÷L%4°±vh´@ìcð>æËëü—Ó¸°ð¯Içn’L“Q¿óÛÄÎ–ˆø¯ó1®½Sà¾ý8óêíš(3u“ŽV™³R÷E±P{çKXeç‡}Ãå€WE§ónÂFþ6JLjó0²jb{/7IÖYìóÊ:&†³ž˜pèédÚIýÕ7Q:ËÇÉû×e6¶jzíÆ7ÅozuÌböYïj{æ_~èDÿ“@Â­‡ëŸ„›äŒÁ¼³Waf0³q=´3Húj:wûäâ¼™Ìãœë}7÷¡É^+èý‘Œ«iÇV¼†»…|&ÅF:’ Wæµ+Ê8«MH²ûUÄˆÚ§‡û>™fÓ‰SÃÎ?Ãa?AEç§Q¸^÷ú_§õg®ß‰ã%ÿÖ¹ÒÃ=÷Iÿ›Ýsû¶šjìBp;‰}ó]ÄÝÿËÿþm3À›´!`¢šº¦€M‡¾mº˜Û»aCÈºi9ÌŽúM'Ó¦««îø¶!ìdÔð®!`Ö´Ç¬égM÷<›6lº˜iÓ¡gMOqöGCÀû¦Wò¦OñY-`‘BÊñQøÐEJíÓombºÞâ—ÞýpPÕÃny†<œ«ŽCÎ)tÖ”=°S7¬d³#Øÿ~í¦æu>áèYë{ö5ãÝ­­ˆ?¾968ƒžM“Ál‹g¾ì:Ñªw,DâàÞÇ´ê1h 9c­Ä<öÚsGxà—•ãÔ¦1-$ö@AÆ½”Ôñ½qÂnt†jù±œüñã/?¿¯q›ïA'°¬‘öåö‘'íOÔø&1jÐÉn‚´Ÿ÷ó~;¡«Ûi:¾šÞ¨ihvÓdÚq*{èLÓy?‡ÀäBQlÎ;rÁÅOÅ­è]ý4íÞ-½Ëb[=	p®†™¦Ñ]'2Û‘mä½LÜ0ó-Úw<q_wwµk f±ì*Æê¨,KM’3ÚwÉ4×ƒ‡-Pƒ,“ÀD‡­ˆË½	=Å¼ÇùÌ³?Ê§²µ	gHáÐÅ2B‘›~3GFzqwòÐ’"({g†O\r¹[ÿ‚æopÑci¹>wøÄ0lÀI“ëÏd¡U(WSÍ3'W“;ÐB¶gµG§oÀP´ôÏ,ÝõJS†[Î>ü7ÌFÝ,õÓ;5‰A¨ùÝnÚQØ­ù%]ÜÍ&=½œA]û®V9v“ixõ½,PÊoÑI%Rî"[7M6lGŽw¬/,?ÏMPC‡áeæˆÄM¾)íØkd`tHÃ~hxH»û.ÿ£5ÍeÎ>BÝpmëF¼†ØòQ¦°èã¸ÖGÍ`\-ÁíoyøÜTò¾ò±NlðÇðàÉÕ£Lá˜†•bÌþ–÷‡yè€ñÄ[Ü–d”Z÷zÁï=4mßàh~}=%÷KÂU-¨»:€ao_Ùã7‘`¤RUÑóá’V?Ð?´5úïwT ´+–ÒÏÜ4j½³îœpw³ hÕöÚvôŽ{¢ª:ŸÞâfý ÔC¬ª§¯~5£J¶@Moó4ËYÚ9	£’IÚí§:Ú9cCÔ¦a›î>ñM6ôXUílè«¯Â×0° -ÖÚ7æ:2Y=Ø¾Áoß^ã8°îÁ†-ímË5ÙÛëqr¯g>ÏÄÑ¦e8¯¨Í	ö“´õ áŸÖm†©\ëf‘WÍ¹z5éÐròí‡¼iÛâå´žì´å9#0küã‡Ÿ¾{°K¶+–ž]m^Ë8vi[ü“7*PÛ–Ó …Ç8õ›´ÞÌ’Ñì¾Í–L'*VRéfc5ùŸA«K²}Ç’ÜƒL¦ûÍ»þÇ›Ïÿ¨Cøë—
’ÍEìu%ˆÊËA,+¸ŸÄ9[*ŽôáËrYh¹,ÈVä¶i£Û¹:u–M^ëdôz¥ñ\hM÷‚l©CÓZ:·M¥kÂ;±Êz©1"&ÐkÅb¥6‘Ú  åH;ã"ä¹0Ü¨
ç÷z*ÌU¨«ÅuÂÕ˜„ßöë]sÅ–-8¾\§X4úÎYô0Ðñ:lp¡ºÆµDÿñ`{ìõB²Ÿ|Âž—sZ@ÆëüñwÜ«\¼V—ê“Ÿk´ÍŸDÛÈˆ¤-C%÷Èvhüñe±MÑùÅ²5¶·5[} ?ÝœWmÁ¢¶cöšòx§¡À¤‚òž„nÅXh´÷‚Z¦0D2¨'DÑX‡sé<”ŽYÈ¡"Ìê€v­”zg:Î_(W-åM­dyØˆö@À²£™@ø(WsCÙ“Ñ®K²”1
Úf29N¸{"öºÅg¢$:“æª£è_­ z,,«mI ,i‡Ù"‰cËD6Ðh½šs$=4jˆ‰'(ÏA(¨CÏ„ZA¦­qˆŸò}é–0·!ÜO;C7šå>q¥Ñå#w%©"†®³±;Û´QuöŽsµ6Nçk¢:i ¥“…OÉšçJ¯Ó‰ñ‚tÍFfîË2qWÉpHh®
¤y0ëâôª“¥[S3jÔÑ® Ævîÿr¥¬Mòœ8ƒN‡Oèîs¯ððï…Ïôëüoó0£e\\¶
ÿp±™E1|ÝÏ_Š¼äêZ¹JAhYàDŒÔ'QÜ˜]7¿Ó]t€kËó6w,ùXª£ÔßŽj·õŸ\w
iî>¹Ö®*ö´Ö¤Û*šþÝwõ`æ¦iÀ(-ÚôU2|¦ár)òi	ì¼ŸTgiŒúÙ¿Iq\Ö}uƒ]ZâÕýá½R’Ò×;¦¶O¼ÀÀÇ(~¿†ž-4­eä´Rd1wÊÇ qe`Êk¬…A¤ÆÎzŒ‘†ZIæ¹±Ä# aìKVüÃÄ¹ÎªÑHÙ@®cš6–©QÜ±Iâó€µ¶´êør·¥Þ–#ÄnO+>÷?0Ó=“Ã©„£Yõõ6Ðñ«	ñV
PIvâX®ˆl¸˜¢<ÑmÉÁ”ôêfAImÓ°üòÃ‡g”"oßz!=^[ÓeÖjFMC¯`óÐ«Ûúp˜blûkÁ#¬6àõ_N`E¾ì£Ã)´õ³l«˜cSiØ¥Õ>õ
w‡ëxÃqüSúw!fN‘æø_kjÂ@ oL Ú”9Æ¡,jR¹?J IpÄHêŠ¹	 6rFˆÛWÎö‡ß>¿_†òFa1*’´mˆñ—¡º{º9†¼ÓÌeSŸ½^,`†g±$7C°”o+ÿæ;1<¢á§uQ‹Q´–•cY—…f~›ºùµèV^ˆöªÒ<6äûÏïž‰VO£­8>&W0ÞŽÌOª¶yÛUÃ4Qƒ¶î(9'ÎªÇØ
>b€èls`»-Q¤a»†®=[íØíDS³Ùt+qSÙ/Ü‰“Ü‡½£µL—àArüøý»kØT	¾Ý°á9»÷W`š;K!t£­+TÁâ,ÅØ?rKs›lÛiÎÑ@¶¼wdóÞÑpï¥&Ú[X‚c/¨ÆÂ!¯aLQCµ“^é,õÊÒc'‰r
!‰±Âc÷Z‚¿×‰éêÜ¤"T4ÀÄÉ(³NS“± Ê—eQ…­)¿íX—ç¼ë|s£&¶c“ì6Ä¼Šê’ÛX²'º—ÛIÃh¹Ýxä¦wéä¶wuUìw1Ê4Mñ/qîhžŠe5Ï,€Gíû­{Xª­£:ü»««ÿ«óól0MŠ›s½,å)]¦n³¹¼-¢?ûij;c7É¯ÆÈ¸^Þ>%C5‹GEùÈD£ö"òU«,1ósè‰v“ =ç#:ßÎâÛE(ë|I1¢5ZÈG·aBÑH0IÇ“$“‡°Ï+Ëy£HÔÀÂ$K`˜e&ï¿bÖ-›šY¡ôÕÉrÀ\óßyóé§bi*Ò÷ÄúæûŸ:ýYèxè¢Óùà¦YŒ½3q÷9ú³QàL—S˜þcã8]Xôà!þß¡]4$Ä½\š;f6ñanÃˆbÜ,2sy³’AL`³°A„©™Ûb‘~3î¤~ÙW˜Õ4L6‹g’oy:›ŽgÓÐÍO£Î¯¡Ñ?Ô´ó>&B	›6üCtA}Õù[±×+îO”âº‹Ç}w“˜›Îx6dWóÄA&¸Åµˆì Š^~6,¹ÎÜÚ|âÏ¾˜~œC¶Ü¹»Ùù}–MóÞŠŽ^-¸ÞÅ\ºÅ÷¿ÅËšvr]]:^™hÐ±‡E‹èoKq!Ž³iýp/ô"¹ ÿfžtlÞ¸èùüm<‡Y¸“ã|ÿŸ@¤X Î" „Ñ˜Œg%RÄO˜r±S¤ˆðë"ÅZJ8Tkµ)v§@ÈÝJTÜB˜xâ0Ÿ‹ë?Z‚´— n“Ê‚XmIiÅ0ÍÆ¶Ã.AÌÏ&§*Ý9–9ÍëŸ£¥s^ ÈSË‘ÞË=ºéÎ3¹s¸5ãñ™Bï9³À©–…¿Z	•—àÅ’khÄZ`M)Æ’pÊ§á7ÆÝ§çú^Å¬ÉJ—V3AÔ¾QüiIÕJj¯¤D5“@ºƒ¤.Cä¦6¹Zr©”‹nR.ŽöToÓõê´d-ñ<ƒ¼*lÇl†Í[d«;35;.oóY)šèÄvÙ¥œ}ÓÚ/\å¨½†Á/s¯Hë%	ó+b%]”W¬VÎZc¬“Vp‹¥\3Ž€‡H+)G€!Ññû}öéïsu¾ÞF{·"K‡iw»³¹Hu£¾ñl4x¸šN’¯É†Ì¼é»¹4Qãüâ¿±¹øTš9Ú2W<ñ€‡³è—‹Ís®dÕ•QaÕ¥nâÿ}Îo`7/¡“ÿ¾ž{¼M³E«·ñ[gþ±šÞmôÛé¼MÇÝ€mi7ê,ê!ß‡(ŒuãÒ·§h] Úèê§QtSÉ[å[ÑaYjé&“t²»eþS4Ÿþ É¦+øOeëÄŸ
-‹šOqÕØÏÔÖRNmâÃÚ³@’µG›Äô\Q±¹ÀAÚßjþ!íwr²Ew5wP¨râ¹j;J·Oð]’åšŠü—Õ˜‹ê³pŸ&ƒ‡(ùn®c”nm©³ù/z«I¤ÏƒU7áJ…ëoår:Q/Q×Ñn’®oÍüš/³ˆ…KVÝê7(õ>sÓõŽòKîN§ø±HƒiÖªYXÆ4wæ,µœ7ëD%]Ô-@V­&jºù :’a¹³‘½Kìô&N2 †‘ËÏµ“{ÈÎ`‹NÂÅV‘’–zú7h"fH
Ã:FW?š†-ÎÕJËNqÙ˜Ê¯.zÀ¬>*Ãª] ÚkW`~Æñ­ÆßÂKHLÖQ:M£CÍdîQ»ì`:™ÌÆ6|™{uda#^u3“§iŽë/þ+ƒç¸ëR9UÞXÇ"|½4¯„’•5-0Hêê½í¢º/ª—s0ª˜ÙîPFuuXçÕ:<•Êcƒ!9×¸eÚwÖ1×éäÙ†^²Tç±Ì{kÌ2×v¶17Ù¿s¼bÏ5âŠÛ<×ˆë<êùF}šGºÅþžoà»|®A×XësºÉ˜ŸkÜk¶!7ó»’Îf»(ÉçsCT¹¥â3>ƒÁéqýžšä“:R-:×<\’ZTArˆ(Í²JC‘d^Q!¸U#ã‘í¼E‚!`­ð@î¬åFš}©ñµèÂ§ãQÔ¢ÛµT‹F½Èü:‹ÿ+ô5Ù0êÒÔ0EVêŠŸ¤Ã¹÷J˜rLpŸŒJêŸ(ûov—‡(Ç2(’ûÏösÎ2ø¸ÔË Öûy=°¢ék2™FÇ’(wð*f¥–¹úÊjÆÁ`sBo–}äóÒwÏ&a#ßüåó§·[ªÎ±{›Ì ‰ªÎÜK¦ðå‰°ñ=¬i¸†næµÞÅjÅ¯ÛÊ¼“_;ß„7©gæÖM¿Ýj6VÓ€–Gk-Hî£ßW¬z0ÿy‡Î.Å¢Ñ|»Ë•Û¼„ÎÊú»‘M‡ëSý5ÿÖ™'Ç-ŸzœEª¤<»Ù\e§ó_kÎ]*›W(ÞFî¦æî™åþe¥™dãÁÒiÑÕÛ4'W£¸ tär'±è{µqëŠRY¥=Èw{ùµ¸¼‹»¹ç9¹±ˆÿŽßnÔŸÞìZþ…êëdc}ElÄYIDÙ¸Œ M£ÖÈÁ‹¾î,ú:È%=B_7?¬¿„—P‰RžMÑ±¢¦g²LzÏ§ÐYÒ¹sY"èçr8›‚ãü[»ƒ8ßÐeÎç|*Ž÷s6ÁÿæÜ–8«ói7ÖY²s[âæ^´­’ µ¡[kòãÇß¾|ø|¯†înÌ®›,ôÙ)cÐVÞ#*cL	æWþ’T1Ü#Ê-4ÐXJ°’[/1’Ò
£$üÖŠZ¦”æD`*ŒF#‰Sb_Þµ|ùòéõ_>u¾1¿ýúáÛ²xv˜N&vÓùfÑí·kaõíI¼V_)ïa†ùº'1F˜Á²´‡%¬M›²uÝ^D½sˆzAT—ð Q¯tTg3Ú¯†¼´h™ˆ–Ãì"f&’
7ÏŽžÔ*‘‡?^	TŽY¨¤€`m¬æT8
%×€ â9à@@Ä=öR3lˆK"´·VSNÔø®ˆ!¼¥Ú¸‹¨^Õ8Øf7=´õ½—£l¢qMÌÎt¾zµmõ¸PâŠ`Sâ*9ær=+&$ªWWQ¦X š‘×|§^ëY+êP×3'žÜ+-v6äð×"I[>|“&ÍËÄaôn1üÅQ½åÆœ€r¹{#ª.Ñ¢®LÐ…ˆjb1Whi	Š	ÏŒáÜAc´ŽÑE1…6ÑÔÏâoŒB­ÛCÃÞ+~›ºÛÛÓ¥’ÔXn“Œ¬»Õ`R®A‚DÝÐ©~ãŽ½˜³N÷ ³q\çs^öÒd¸§L6bïÔüYá	¦"1PbcP``53j<Î[ƒµ¤ŒYeD@iQ¥[²Ï	ëÇÿNÆ»\9ÚÓŽ<ÉOÜ¼šî.•€4N~ƒÚÌ§	)XË§‰kH@J·í…xœGñÅÈCˆGé¨ÎE8JCžÛ¿c~'ã.…N…ýG½áø¿Õˆ9ÃŒš¤Q|vÔðQ+ ì?üÛÉ(=üµyL¨óBÇyÃË£ÖZåà’i@@(«ÑjO‰çx+2’
 Æ„2
1µŽ¥•Ü'àýsîš'Ø+Üu"×_ôw¡ô7øÙðË“(8À4¢Þ¼t/DûLÖ:vÑÞ<¯³…HnŒ{i2ŸC>íúÙ‹­îÏ#ºŽ¦7éèÉ!ñØjˆHqk	ôN‰”ÊJo0ÁÄ)Ï8ñ”§™\¸ð»6«»}6»Oùz;ø`"8XäÝ-’ÿlô÷Ôž¸q:,…ëjO„äšÚó¦±	kí…ž‡2tXÒ»ù)ÍÏ,ª=væ»†cã³Z¾žO2è¥‘ûg@ÊcñƒâšôØ0oÞ¬hÂŸ’8P`ßýÆEroýÆ/N_°¨§p9l‘²¿³XJÆÓ#‘"Ò8­´Tk¡=6’SÈ!”Q!dÒ:&d©TûØ¢/Ëlôµ5$v[§›õFËä1ft‘€ÿ2#ÒX= !àaÈ)…W¾FÒ7*vì…):S„ =Ì|Š¹OCœŽb
ì M¥¬tëºDÏ€÷8w¨ÎÙkCíl›–²Ê\®Ñj|†ÇðG[g½—?Š¾c!N—²(Õc.½¸g»^Ke¬²y«œú[Æª›-ƒ/Š)QJ[¦°ÂÀSfˆ¤Ó*4ÃŠ
Ã-À[,^@¥³Âzâ	çÔî3]|þüãÃŠb'Ï&”ˆ4÷( p3Ó+"¬…	Ú0”hu«^xó(f :Ì6‘?hy9âò"armÂˆ–àl¼pM®éŸ3Îõ”ƒ¯Ö^¢ù\:ˆÀay½´Êr¤ÙŠ)ÏÆÊpî5 Ê:Éâ½tþùóš¸Î?ß½ûÏãìæ[çiÆæ9Ñcfú«ò`ë…ç¿,k1.+(^(klc £K»äáÜK6ˆšTšÞ¸š/„ìLr!›ŸR<±sQ²Òíx‚!/z¾HòÏ“º7«¤|ˆ1`í9^œ6þþy¾ÜKâ;2(pàÀJ@} Ô+àÃWA=•Âj±ÄŽ3™7!á´´\ %ÙÃwüë¿çÚòƒØ¨¿ÿc»‡KegLÄl3ab`Þd9Æ3‰²ËûôÂ,œ‡Y Ç1÷œ‹n/oÆÙ¼@6áÒéwh9øc¨bCÚp†+øý÷5m4¿gÇ%œÐg ô/ˆIˆÕ0ÃºŽÚ&¥%=2Ÿ8Ä½0å:p£€ÅÎzi5€ãCBrÁœòÂ{Íˆ"D |çˆ3ˆ\¤t8ì	ÛÃü ²ig±²8é<	ˆ+™M“A2M\VÅ¸Îrvï—¿Æf+àH©¯NàÕ\§U ßXÄ/÷c\¥“$\5èüöñ§­F,Ú?t¾éýw˜—P‰]gßöòìç™[reÔèoóZ|.;ÚöÿØj\äMyx‹ifšÎ.—Ú.²X/¨¬?Ïž2rª´â×{ÖU¹üNõòOÇ›Öl¹¤^A¸Ããê»ÞÈM_ïfÌ¨Ds@K.ù'Š(ßÍ˜ÑFÄ„$k©Í%µ¹WÓìÎc·x†-x¯O3þØy—UTPË…½Có¢ÔàëÂæ4âÅàA¼Ø¾Å]ü8ü‘´d¼s©¢pûfuŸM¨gUß‡s3§'§+Ão´û®HÒÂò»2m@ü¬™v'ÞJ˜`õÄñùV£vd Á(W‚8´1ÈyéœñˆcJ&1±–Á”ÚhHøìÇ.ÈpÒX+4@¾qj­(Ä†SÉZCèV{±MêB5IæÙ´Š‡³ájž+ªÜUéå.fÙ¼ó³‰Ña†¯çKÞ‰¦Cˆ¬©Ûã'È8€;Ñ4’„‰54Í	çå@tÎ¢¯v¸Ëx7¿2½xÏš è?~úð™KWäõ‡Å©žPRÎ×¼\íÑ8rÖ'¯v½
sîzÉuýå£JŒÜ¸ßUæªÅ{­ë÷h¼Þ.oÕbZ9‚¯Ý h7>|Åðº¹7•mEïbÅ!±Öå–So,u:Ì ²Š))½ãÎjìL`¥6 x/(!Èãôþè]l¢w*w«Gz.Dè]l ÷Z¯ä]è½9þ‚àç³ËBð5,÷ŸÁ7
ZÇômÔ£`z—n9Õ4ãßAƒ¥ÒµCòX¡­qÆé¨´ˆ9©¦3+X_J"Sž…Øk¨²×\Rœ‚n’3êÄlî9&þ/§ß½ùç¢Ô[¥öãù¸¹ÛL]¯
íŠê¼Hoê&^÷_7,Çò›¤ÓäÔb	3ánö;tÓ›Ô†!é¨5ïuÞmµ”*o:VƒËJ±Y§ç}5÷6Í:ãxTY^»mîå‰Í«N˜ÞýÃÂƒçUQ‡ðUÇ&ýØ[èìê?ÝD»I&3›Þ„æs:õª j*ËuGQUÚùüùÃÂ»õ¤ú£»»»ÞÓV}°¯ã:÷iŽ‚tÇ9”%“¥\p²ŒEÝ¦!”ˆu¢…	T–uG„ÓzgÖ0©nñºì ‘äïÇ“¬Ïá¸‡÷£¯É$@¹Sm-ühâ|Ké$âÜ0ÜG„×àæ%Ü7ßÿòñ\#Y£ŒÙn‚A%BwÕËûÐåÞÎšH û;=‚ðåñ;§ywÄ'S1Ùûê†[1M|Ä.®&©G@8×n2É rò0ž¦E0nÕ<7A¿ùåÓû]Ãð¿Ê³-ÝýXMó†5Å,Sãäúv¢iƒ©oBSúp®þéKÍ´néjI¸t>HØXÝš›4É­¢ 4R•{Rê9 ü§îhvGÕ:fÝ˜\«ëòGÝ¶SRH<®“õ°©è˜tŒ9gIÁ‘w
:¸¾˜*ÔZFÔrè4ÞPNŒ…Þ8ºÏ}ú…üëò€Àmìæ1“¬ó€qN×â™äµž][¬P[½ÅXæÛÚ×YµfÎ8;ÙÁ[âF®<'ak”æ°á™¯³~‡´Y§ÿ:XqMÙ6Â›mó‘úYc'Ž½ä+›ˆ—Ì¦m–œæ!Qèç\/ñ‰­p±š§¾¼4€nÚÍFÃq[žÎÑí‰…†ˆHí/íF9o2rJjˆœ4’@f$PfÃZª14Î8N4!Äi%T(XŒ}\g`Ž‘óZÔw>üùSä¸¦iø¿tPØ‡+ª¼Í›~ó9ÉK›|tÓ»trÛùYÂ~æÖ«Oó^¿Gù-™åŽeéäj4o3\¶éE¶ÎÇ÷_º‹yý¦x3˜…¡;_Ã”ÒYVÌ:ŸìwW	žûµE²ÐÑh9ÁfÉ+‹Ìéœ/ìoø[æ¦ñW±dw¼ya²I:,šç½eåÖáƒ›¨¼uÁmÌm~5¨q€VÅœgÿqÓÀBäÎŠÃØªð…ûP¬¤`\UçËíëOn2¸&º£'é]`ã†ìË)ï¦-"ÃŸâØ¶c•F&új­Ú«Ž›šÞÕÕ¿cnÆd0ˆ«•<v>K—Ð’e•´|ÊùåïF¼å^]-#3‹y,jéèwZ_½ù¬ºê1 %‰r…äœ‰÷ÅP`ºî«@++\% ±Ç:f{¾}	tWÏÿÏ(±g­ÇòØŒ$ÚñØ‹²`óíä:ëÑóf¶èó]VñÈMº>‚KŽ<ovÓ„=žCV@,í‡5`WÛpI‡ðÄíB8‡¢8!euf2’€qõpÓPŒy›œÒ0Ð‘ìv9)iÕ0y4ÒCM÷ðìŒoxéàk›;>EpÑ<IÛ4È^O'Y»4-¹÷H—¿´%&Ï¯\­ÑÿH´wªþãeüæšªï¾{7†¿U-9ŽÎëß}÷6?Ô‚þè¦éxúÝwŸ§¶ö§_¾û.v]øÅM†ß}÷k¸Û’Q%xc!)Ëm¶f_@¶¸š;|Ï%›Lþã¿\èëB¢Úòù^ü”ÿËö"!¯ƒ*ÐTäCV0E§ òN+|Òó—q¡*€–7Ü|5uÝ¯¸˜ýIE‹½g%ËLiû±°1ÿÃ¥Þhçvó8â/“šj†ƒÄJÇ™WB2à$c3Ï°WJK-Ü9£±¦Aþ­Hæº”Y&³Q.-ä+m"ñ~)F«ýÙ-žíé=—"ÃŠ'Î^…C[yd–½./Qˆ’B”@Bî¢8¬{Ò#p,/]*êÆ ãõÞôÛ›½)e4udyyê@kÅiä)Ê¡h)OídBñ7ní{-Z¬¸Õ¶Lj;ŽæœÌ¿´Çæ´²Üš\õhŽ(s)ª™¨ÕÔb6ÎšËd-¤·ø÷‡ì…ÝüŠ6r\s¡èùù”Ä¥fRRSá¨¹Lô8Ž1K	¨•HrÄÞÇå÷ó/ï~ûðþúí/?zóå:^‹>•E„žÄRÁžÇ*Bµ×ÒâÀï	T@å{¢±ðj'wp+¤•X
ÃÆiÁDŠ¶ð±ÙB›êÖ9£²u¶	DÈ[ˆ%°Þ¹–-|Q´·a_%í>œ1l§e\ã/R±ù4Ìã“.S)p^ÅSkókXÈ“Y^ôì.=û)5àgf7Oè€sHòŽÇa7ÂJæˆ…P#/µ‚zGÔi•âQÅ!e1è Ü/Œ‘ @½/Æ;2Œ¶çíVî°98ÝáÓýÜü=ÝqP¿ÚÏã½—¹™6gò·¬³í¹s•»È”2EM÷Ïjž:ê.¢£Ñmîp>ŸÝÕZðùQséü;ý-Ì$÷qÉóT…anÔW·6·œÉ^÷v¹šO4[ñªÈyÜT!‹€rÃ«†ö¨ÄxÆ¸¨~_;ÏMìÁÞã CÞ6~mïOÁ‡Ö¦;9/Êþ™ºÏßç| FÏæ¯…ïóhZ¿ç­/¯çÜRí¦@ùýš¹t–›jWYªRÁI‡ë6È‡¶²çÆèFÖå²›àÈ=‚Å÷ 4:Ãhfc’P`°cŒy„0Ž	•Ç†L¤CÆq`­u¹´PRa¢ù¾¡/ŒÖ£u<£E›ª8#£EÙ&£ˆ\g´¬Õ«b´^t›íX­¶Vïs²ZOêö{ñ¬Ö™e/_ý|Ùórâ</‹“¸¾lÁ9=gWù4Œ·ÀjÌ¼¶Ï­0Zá©‚NKO,`áw •1”I5µDP‹
8dª®qQ+>£È…Ÿ3	‘kï
™<îª!?–÷¶“Ë)X®À—D.'0òŠüN2ºŠaWûXªrÇ¯–,Õ<d*öVL50PyXÎAåzúËãdhcN3šûë•Ë¸#Ä,³2QŒPc¥QþT_X™ƒY™p ÈÉä19'Àþ¹¥áDŒŸÕ­‹÷÷óLg5åD@•ÛTÞÙG7Ïó»ïÞ|þXÙíÊkýòÓ»ÇëìK`	~uÆ…·5y¼^s.à‘»ûî»ÏER•Gï×:¯fƒéu6M'îÑ{Ÿó^×óàëôûiZ²ìçq§û|”N¾ûîÝûïûñÇŸ>þX»–üõO¿¼ÿõã›Ÿ›¶úíçO×ŸÞ¼ýÏ÷•é¾J-~þéûæù¿®ùôå§_>6RÞìã/ïÞ·ÿõý§oÞ¾¿þøþ¿ÞÿÚ¦áç7ÿ|ýîýç·M[}.ê 4„Ž ]‹ªÉ‡$«Ö¡£j7Œ´§‘ Û†ƒ¶t$iåáñ|ùÔN!íü)þ"lá…ñÏ÷¿~ølÕñÛeÁžï±Z¦aW¢Ò‡<ïéÍlš~H#³Y‹8ÞªÉ¸(xëÁîêc&[Åm¾{©†ëxù•&± f“v×Aå£ß«ÌÅ`Z€~RÓ›F ÿÈKv5[ýŽêÏ©MŒëÿù/d-'Ÿ"-59©ÀlØŸ¿|jÎ–å<}+ž½%÷|{ wYÓìÓ/ŸúW#Â_ô}÷Ý?‚<Ûè2§ÑÂ««Ì¦“ÄÔïÞW5ÉjîÔd”Œúµ€Ý<åxâb…Ò'óuÛÒæJ0Þê]b§7JÄ\™T÷{w6¶jêé"ÝdZwÜÕ“Äö]7t]ù’iê†á)?ŠJ3·<‘NB¤—–ÄdøÝ)ª½ƒŒY5!’2l°VSBG–˜÷LÇõ>æÇ-ûè*+Rg–-²D½*4G˜ž×R2­t‹äX«A7­ºWË·m¹‹9¬©AË¥³Kõ×GÈûˆ«¿O=_Ž«\K1–‹‹$Tkæâ]¹§æáÔ¤²Æa/ˆ]QÖ¤R$%E* õ¨…½íE‘zxb)IZ[ÛüS!yÇO rîÄ£í"56ò‹7•>‘ÿ”XO$Kž»:§™Ôºë[÷`nâ+ªa!ôlpÛwuŒF„ºSƒÛ0ëSU³/SÊ ~6bäîë Š¼5@£"¿cT¬­VRU5dµËŠ™Õu3UzPw¦S—Õ5Ô”VåÉ™ë»FÙ š›]èÅj@fYÝA}U¦dý‚Äàx™´Âh³><§ôïBÄéŠ4çv-%Ž0 €ƒ‚8¹Âe<ÇÌ`Å€cB;L&
qÊl`Š¡·Tpˆ¼Ãû¸Ý·“4Ëºãprq‡–eáû0›,Ì ®’ÁÇ¸[E~Ø9l‘6p„añ‰X0„;:O}G]Ù«zËü³k Y^oÜÝ/ª™'£˜‡v>å )Z7Ž:‰Ñôê_?è'½(ÔžŸcgy;£‹b˜TsG‚<k>úß²«¿Â€_ÝßöLµ(£~ÒÚ‰Þ>ME^ÊÙy‚°€}\l¬eÁ(+çô	Ÿˆ íäb1à¯!@¯Õ¡Â4`aïæ—¼[}½ÿJµ	ïÉÑ¾yí±V|¯žEõ¢ý¦?š…÷YÃ_å¿nÛ?J³šmG;ŠwV³¾S­2Å·‹„v÷Ù`Ú¦ûþ2œ5n2îwÝd’NÚŒÓÖg|›óRƒï¿¼ýáö@¯¡d±£-:¢-iÜvÐÅÅ¾7ÝÃÐ" –©kÛî	B»UÌvîbó¦%Lî‡Ôæ¦/.zS±+ Ï}‰ó<»Ì›%e°ñ…#å‘\íqu¶OÂÛbî…¦Rè°EÑÃÑ`H¦@K´ŠC(#Â;`•±ÜPC± Ô+ö•æÚ]ƒ{ÎÙ×¨hÛt‚Ü9Rº8&’‹¦L$”$ú–£cøZ²D²AdÌb‡/–‘<¼:÷ÅsTÀ–déÀÎÃ6¯êý(c®*~ç£7ðxç«Ö¿[ñ]g$ªËÍÛOÍ¥U‡ä¨;%©‚Lq E +Å±”[o‰ráOÎr9yÅœˆõÅ)ÀDX¤‘–Ð †èRõa-\5Ønpy4E ¦4…Z×“Ê	Ö¨
‚Š™†ç—æbÉÊŸ^? `¼uyæB%>‹@ºÙöÓ¯?ýóÍ—÷×ù¡^AXuiJžÇ,•sÂ¨ÜâÍo?¾ó9 lz	v¶M[ÿ%•U‡èq–-ò¿^ãÓ*€¶Ûµöìú£Öº %|é_?@QÒkTÈvOkÚC‡7fMŸK+Öüb°H’ <ªuÃK°§uÃ$–»[£¦›¼£5l6ö%Vëa»$…Ë Æ€ŠQb<¨>=ôŽ¤ÅÚkD`¸½ôDaµâŒÊ¼–š{H¬ã’0£¸šh84p_îœ7K‹l–….mâ½›DÍX¢Æ7‰ÉrÞ}n=­Ï’6i[5¶²þ¦¾ãg£¢üÜ;/àËÖ‡!‡Ùú|^;gój^:4öÂÈWßÄž¢óC'œÿP³o_…úÃÎê‡ÐÑÃò—Qù5šÿpÕË?Œ“ûü‡\±—Nob.‰û,ŽsbÖÄcqQqž¯WœˆðÝ"‚RÂE*[óXd@ŠE0Ã4»‹Û=/½Þ"M`¾Ÿ¹ø”ÿé§ÿócþßŸú’ÿ÷ÓLàÎ»t.ÑóñiÜ±'ÇJN#zPïâRSÍ“°Ê ì½ø«¢ÃªdnM:>Ê^Û¨¢È:Ù¨¬²q9‚g CM5_ÇQ"§)òB©ˆÅÈXH¨SŠ"­¼Rœ`-–Þi‹¸GI†u@P"8•*úô½P¢¿ %›”Ã}”"A6(¢²¬Ý£”Ð&å˜w`ÝV>ó—M‹UíˆµÌm»A‹)NF”j´N'&J§ô…¿P©©êÁÖš#¥'ËB€*k¥ñ$Ð$í¡×ÔZ„¤âŠ*e¡S!¨PÀc¤òVs£ˆƒr_‚«˜s•Œgƒ€—ê_£Ñ§tAˆæ¤ÅÙ6ä«Ø·]D,G‘„ÍvÌ$†ƒmÏf>øœÞEïÙÕÄôÒ7NxiGêu:?¤“+w¯†ã{µ>µ‚è¹yé#•M§i¤dÅ¬®¶y4X˜|8ÍiG]}žrP7É	hîw«:´/Œú±<Ðría‘å»*¯}Þ}\y~—ŽÜNB={Õ(o#áJAoól_á—ÌÍ»Ëoã|”W9dv“çZ¬«ò^„ïÊ“ºøVbJ.ŽpCÜ˜pcx|‘%ÊÍ%˜•I7„Ë&5@—{øBÁÏAÁÇü€LcËSztª\tût´ùñ²ÝôãQoºšúþÂ6ÜÀï*Ü¶I›
7¿ë¤Ÿ+¸k©»¼kª¾/5LÄÿùôþÇkÖTÿ~®¸ÀVLg4€Œúå-çÚ)µøôñGÈš†FNƒ|›çõi8Ð
>ìÃ—Ÿ~øáº±‰ø3G4nl˜ù£ÔãÊí²Õ¦ði’Kçý¨?H²ú<2ï'“QúLã|Dµ!è7¬O]Ô*1NÃ„&Mr•œ; —@:®Š~ŒsÎWd&IP¿hz@t%È×,€¨*¤eëÆÒyˆiåœÊ•ëÉ,»©›³	Ç1QuÓ6IVÛÑpv7¬²6°óu@A:£Z ‡Ù×ºðI8Ù´n'}2Íja²º#ëãº÷]íö •3é'¾$
ku{sõÌuÇ~“Œk~36µƒ%QŽ­Y{2ÐÃÚ~†ýZ‘Oë–™ÄºMŒ\º­í)@Õõ4pÊ×Í:´ñ°n§‡ÊŒëvq¨Fw®*áÑÐªÚ>ú“Z‰¯™Ö¾Ï‘Kë@ÆjPû$Â)kGi’UEÛG¨IR™¥*€è ŸG‘vdëàÜ¤$UÜ (VÅÿGˆ€k‡šUå4 Öå	ÄÊÔl‘uãº-²Im'IT4é»j(g+pDˆ‘MÔ¨f &µÝ»ªìc"~¨ƒ¸¯˜Nf£ºIÍûÚ>új–U¥¨ˆ Ëˆu{«¡iz;«™ÎPe·±‚ûØÕœÄ0¹oxÉ†i¦s;Jj¦—&5¯g¬ÂˆÙ8ÔÁ¹IT[Å\5€aZ5éXVCLœIiÍ‹ôuÄÃ•©S"ØLëºÇŸUww3÷?5 7Ê:$¾ÄU¥ ) W^™´d5ru·4‹l¥êÆ58'Ô"l<¨»OÙTÕoÔÏ»Ü^7qSS7ë¨Û¯{:Ñ&RaÒšk^—ÿ&‚ÜQê&Ô·i2¨ÙËpn_kNwšÚß¿Î&µSJ#^øÞ:œ¥­šS]·‘iÁþÕAÇ>­Ã±Ó45SõÕÞµ°š×,@¬nÒ‘¯ï¨õ4àº¦i6©Ýðìkí@Ó~Ub¬¤ÁÑÎêÈÅ4½KFQ©»ÿ:€ÕPE¬ÅI³Q
ûU’šÄ§ê.»´ŽÏ«dQôÐY¤rñz8H|åDt`nk!²Ê§ ’Ñmz—ÝVî±ÎóÔ×@ÔR?²UŸT<«s¦Í!*™E˜‚š#˜¦„Ä°Çj˜\#U4­ÙåiªõHW>¿d’ÚeåÊ: Ø>‚¹qV»´ SýJs ¨'ªêãZW»²~Z‘è!Â÷µg_‡|"Ìà÷Zˆ¨]Õ þ®F}B=Ìt’Ü§LU%vÍm%ÏAú•ÜlRMS"È(½Mj‡ªV¦ Ií>ŽkßØxÖ¡Žt<®ŸnVUÇÓÚ–Íj)\»ÓÕz‡sA¥†§ ªy¨ù#©–yõp6®0µv€±±i­FjlîkAr¬–Yóõü\¨tµ~¨?ÔA†¸‡j zQh]”ñÒJL¿V' F7jTMMûÃ›¤2Éf€¸u“ÝX¿–Ñ®NAÔoÆj°t2¾‰þOÕ`µZÆR™Y5@Ôè5úÃ ~V¾Î~½@ÜÏ–Ù¤(õ•t"BäÊé: jepRûµêÿ$Ó•åJ˜)©Iê‘ERkÎÿ^ÛI­Á0aµXbTk`¿	BUžã¨^ù=šÊd¿ *¶j”?£Zv„}­Vf˜Ie’ÝQ-ê•Ù£&êãQ­rxT«ÕûQ“Z±fµ¢®€©=€˜¶’Qˆ ±žHÌ×ê2&\«~R‰Œ›„›U­PÑÕµî$F_£™Eü«*ÉÜ¨EÇ
i•²UKì1iõ¨fÍÿ3SÕê£9ˆªVp‚ˆ[{)&é´FÇ0ªW%ÏA|rïjö'»qªfõÙ0MëÞg­V7€L“Mì(ê3kÖÄW[­båšÊèQPU­ÏŒ0¿×±Ñ\	Y¤µ0fp_s¢£’Q-¡©UŽê‡9HíE_ùZ˜úSÍú•Œ_’Ô\ÔzõãÆ*åÅwWùtÆC\ó»ž$ý›iµMa<¬­pa’:€‚àW«óæ`•':ZS§+0vV¯R`IåýŠ Õwg<7Q×ÀoÌ¥†ØŒ‡^Ùš]ö•U"° ’Öp)ãaê:¹l<Ô‰¤ãZ±l-ÁÕ uô7@L³JypÍRj‰ë¸qi,éjÉ9 ÕÚNL:ë×œs½a_³°lóÙTÃLSeÀŒÇWÃ¬çp=­V¡›èµ#Pj*‚Dï¿:˜‹á8WÇÖ € 2¨–àÆèt„‰^`µ0•šßq®Ž­Ýša`>fu@#WÉÄä¾h¦æ×
ô9HëALí½×îÌø÷jg\¯]ÈAfüQ3éëJMí8ç)îëðh ×TÒjç\c>×›FÇÍL£ì¾~¼Í RËÙ¸š~în\õ&gI­«õ¸Ö÷÷&Óº«³­„¹«›KR=R¸{µ0ƒZîÀ8×Í7+œd+'˜ëÚn’I-H½·r66õ é´v¾ãYm7“Z¯èlJj*¬0µ+ÿZ«ÿ»nÊÓ›dtû»›Öi§…ÇwåŒîŠ¸‚Ê~æ˜¢næ+°ÊÙßëZíñ}R‹¼ïëñ{áÔQugëöè¡~ÆüV7Zƒ †‡ÙªÛê?\’mâ±ÿç¬ÙT¬šØî4jEc\y7¶è¢<4AŒû‚ ÍãÉPQ°y"ƒð
‰…d–0ÆóÒ
§DL3¨„xj¼uÆ@êQN8~¤Fr·7Ü—Åú:1";¥ÿøþËçùò{æÙròuïÏXP*$»Àí¨Îrïò«ú¾Ê« $½Ë:óJ	ac }T¢'1/@?ÆÿOóXî¢ã½­ÕWXªíøÎçwÿyÚ|ØÜÌt/LûµM§•f!àäùoV©°#ˆòE­ãò
T`oE)è
Ž%Â¢u>1&›”›­¸ãÝùeíÎ¯i‹HüE¼ý›ÏÂa€üÏ‹èüy®ìüÏoßv¿ÿ÷üOÔÏŸ»Ÿ>äzÿéCÎÛ†&ßíÿü6ÿï/?àbiëgÑ_\‰°»[;|lT?¦ô€ª·w *8¶—0R“ÈÿÊý/Î£Ïk9‹ÇÍ3¸Ý…ušåÅ="_5iK3±LK†ŒD•†RqMœöà¨¢V±ðO´†Ü;@ýØW²\?§¸•EÕ	ø»;ÈËã•ƒç)XŠœÆd0‘lìlZÔÉI"uÈ’þ¨H®â“iÇ©,<Ää6Ãtâ®Â4.‹5xò¤1î~ú]ç§Ñ¼ÓN,”t›Ì“Æ¤:VDï¦“ z„§5‹Øñê›·ÿû«Î§‡éM:
ÿMnÝ«N¯×ûöU^c²L^á·Î‡Ïÿè„þ~üøÛ§_Å?…-Ð«Â»£“…;âzÎ¡\¦´‰´)…,OS¤ê¬Ê­“³¼Ö{q­Nš@æîî®7xÈ¢¹²7Hf½Ì½þÿF¹r¯‹Á÷R5A$ë•'cÅNÉNªÆ(„‡•‰âœa^¦iHðFùH—­›¿›îüÅ4NJš(ü÷ü0Ÿmµ ¸	ëË?:c¢mó–£
¯ïÅoµ½6I0Ú®÷U­Ÿ›´Þbƒ¾V
³nÞÙ¹Jõ‡ã­¬ÌS0ß”<Mmâ•ˆŸjr°P§8¾Å†Ÿ‰’7• ¢å ##¸V˜z¥‘¦1°ª˜«Àó+¯@Œ¤- *È€·Oà-¡å‡ÑrŽ¶h9Æûh9l›–¸IË%;œ–·,ÍôBÍwPsÒ>ýÛ9¨yøBÍ›Só’ [OÍ›WÖZõ†9¶ž}¿K'·Ý¡EÚÍÍýÓƒsÖö è²²¢9¡ç^!(¬…kf  @è º¨Á°")+‚<OyøÀµñzê‰ôÀîÍ²>_bN¬&é Wì0ebµ…†¶€ú¹Ø‡†JßRjÚŠQFÑ5lNýbòY5÷*Ž“¯æq}''ŒýQ:tyáÂðD#‘½^ŸÁ¾¤©’ÑXœ–’¦æŸ ä{²3H7ên À-g;‡°rîŽ«Ú-î\¡OlA$‹2¾)q6¯‹Z†'-³Q»G+T1G-Éd‰»û¦
3–áFÃùì{¡ç(QƒRw¬»2áLÔ¢ûF‰Y÷s8ù[†»R*ÂÕè¬2§b¬7¸Mr|Ü¦z—šÞFcD›2jF%“´MÂÍ¾1×Y›I•üøöíuãB“[íp¯a²¾½-êÐ5.ágo¯ÇÉ½žùð [m_?I[7	ÿ´n3—Û6›¶Üˆá°§×¦ÉhxtþÇkxš¦ ÝlÑ¡-nHmØ8ÏîfCÑ¼¡ÚB};ò¹Âžè!^ÛU»U¥9«vû»Ù´Íz·š¢cÚ6Ì³…U[böá&´‘fÆî§m1{Þ(Gï­[ž»gæÌ$ç‰šŽ8‘À´\^©ël(åq´Ç §OŒ?¥:KçÒ˜¹èæRÀr‘¾l± '{|}ÜAæ®Hnj^ßÛþk5‹á·©|½ÅáU80-aó_º›cs=îÙâD!l'¿
E„”§ˆE– #$Ö0å¬4NGqÏ,`¯5QDN8D(Àí‘_?†E1Èw¹CO¡ü]èVsýu®x­+¬²ØšÝºÛB&˜«p£èº¬ƒr†Ë²E™²•Nw]‡\”<‰Âl*/cr—ëºÕUyªåŠgQ¯Ý¦ÖÅf“N‘ê•ÉK¯,Zk•9ÛIGWq’YTn/ºˆeLæ5FJ‹KŠÊ&wj”—<™½kªyu–0ðU>ß“ºFU6q½$}ÇÚ#V†a¬ä?AÑn±šÉ·tÎ„u•3!õuH›×ßÿnqóÛÑ3Ô1‡…o,ùhÙ™Àö*æÅþW—„ß‡šj:mb-nÙùJ™ëFï¦:?³Vx>µœ	è­Œø{öê»”#«ùÁ>ª¾vkª£=ŽÊ9ŒÕÔ[©·B	5S€ åç†ˆ¨´Hs€…åÆJi£S­( 
¾P¹*ÇÝ¢rpiÈM×ßHåØ&•«×ï£r-ÍªOJçÔŸ„ÎÁ–Å0ÏAçj¶¿ kfŸ¼k¤Û¾‚×OF÷mi]IA¾²´Ê^@Ã³»Ž/ ôÀß¡ w˜x§jN±¦Ò 
Â’ìÒRhã|DcÄhídØ³ Áuø·0H‚‚ «m Üò¦s“ôo:ã@âŒëÜ9Ý	4#¬$'VW™GšÜ?Ì¨ðFŠûV8#mô£vö”«|ùòéUçóÏñßŸ~ù„#üÕO?¿ùA§©IÙ«ÂZ©V˜¤±ìdjfY'bÜ8ýp_Íl2q#óðjm-9µMï®†n˜†+3ËN^	2®?·oî!E0¨,yì†ODà “ï$EÑêI6<v9&ás™qD}íÇ8·nq9»•×²])ÈãiSaÀì¼}MÂéæ$ê
G6:%j¾GÓ­ðF[Êg×‹8ÉèòP\³7ÇaÎ3J	xÔÑú)PÌ#ÐÆ<hö& äI|lƒ. «­Ñ¡²ù±Ôà_oý÷§/×¨©²pÞÌÛ¶nÙæ—Oï?~þü!Ú«šš6ì 5vÝZå>6×fÏoÈív¾Ôà€moQ1Ç}œt‹·µ³Èìã¿ýn.ç¸¾Á[Únrâ9¦ã@À²ª‚³ñÆ=†µ¥Xm°	È6–$Z”4Œ”AÚ/Òôõìë9ã»e2‰pùo¯½Ê¦¦Ÿô"‰jØ³Î«ÙÎŠ[®Çj¢†»òzímÔûmštgÓê)G˜»‰%W0ÃÀÎõ"£^=ÃX£ÙŒcíž®Àõš5ÜÎ¬å^Îî²f—õvÏ)-v9^˜c­©}Á²%àQ–½#…@¶DI°Œ’p@Ið¿O@æìÂy¹‘¹ÏPg5wØZe¸§‚Jh"g¬…ÆB€¢ÚQ„˜ œ	•ä1.À0£_ÄÀ‹ƒlÀ˜GT
öˆŸÚ¸I%–pC%ÉÀˆ®‰Ðú`…à®g·æbþ¥Á&ûq¼(HyËØÎ6¢`KŒ³Ÿï:×8ÅÁÇïE |ÿZážÖ]ÛŠ“§îãý¿ˆw/âÝ‹x÷"Þ=šxWvÃÝ@Jƒ¿{Ä UJ7î”P)gÁ†Š5€€i®Ä
)Ì¡ÕžG?Æ EØ1!½qDa çöE¸»áŽJJ„°lã‹Ÿ ÜãTI¥€€lw(œ7Zî”¢6ÑÜB˜)"ó*®å_J´«ßã;Z&„k#ØµÂ5û9®óŒÒP¨;~´‘îE¤{éž§Hwüëè^ºîE [èÊn›ÂÝ(ÿyNc„B	…Ö( 8Â €V`d$!\8â5RBbn9pÍ$aŠ{ÞŸhfè¦jxPäz+äˆ,¦øî¨¯*(=pBn[nÍ>ñîÐ{WW1b¨’Q'?‰eÖLmsQnóØLÓ˜{ÎåÁó{`§7½Î?¢d'|3î*HyIj;©‚d85èÄj7APœYhgÒ }¥ùôÕàü; ›þî6ì!XýÀZ”A3¯tç›¹4/á*Î“‘.Àîä‰ð2|SðÄnX‡CÅÄÂÝxí»É0\µÈÙMK‰aNë)¶;à€¡§ó>LÏ¿Ü€8Ï¹Òl¤žGvª{´È‹G"â'pÀØqbBka½‘Ê -a;ê±°VKã(p–¥£Ä{©$S˜Ç0º|2~	~1xÓ/C´‡|Ì›|6qy~”^¼sLàŠÛæ€kKB[’Ÿ‚ˆ>šwM+2z‚Q›ÒÇ¼)}ÜÓïÞåÓG7xb)ÖDÀ)°Ø[a(sÜ(°2¨ ¤L†°fÂ3ãtš­“V½ÓvH·ìrwÍ+DbQ£G&¦õ¦·çGJÙ…#WDÄi	iKõýSÑG²f¶"¢>fsú˜C7  9\#òyÐ{â¹2i]’>sœ'Œš vj ¼ô…’œS¶HÃlåšr‹Ihé=’ì«Pyãbb˜ÄtlØ73.5õÎŠ|åQe[P¸:/¡<3ÎÆþíÎ³{¸«]ÃÚd3»¨1iÒIlÝ†I–åhæÍ®ý%OM…çaÚ\#¼é±F…oà±Úõði„Ããl›®æ¤1¯çðŽ	¨Ê¦wÝÙ4d›à{ÍÚs4žì”l‹[¶ÂÝ`¯ëjSè¹Q³Iƒ¹1þßùKˆ(Üûrû'%,§ÐqJ ”yA9'Zè5†:#Žò™ðáÂ ¡X(7Œ(†XL Ø'–½–ÓhK1h¬-Òßc“–méiK)l›UæÔQ7/æOH`]ë‡¨DÄÐ˜¤Ó«4÷Âîâ’¤ˆ `*ÍwZ{oh GÌÓ@t‚øbåy9«þãÆúCJù£K./úÃ'Ðfî´’ËÙÔ‡/„å„e§:ö’ÒerµÁÚÏ‰QŒ`Â#r/…GÀbk0G”ËÜÎ„œ„0g‰Ç^bOÜ¾„Ñ9F±l|åbåssO]ÈÜ¾v¡ŸbM3RbÊÐº• D	Óc¹ÏkPýÎ{ô’¢ò	tU’ƒ¼/ÂI°<öiLžƒ õkÂFúyŒn¾ó‘/‡Õº²rÝå–ˆçÊ‡æÒ{s@ÈŠÄ±
vy‚fHŠ•0î½‹¹˜!CûÌ.BÂ²ÐNmùòíËq…ë™Ž‘ŒvìaIX^’^=…¦Š±ƒÜ.Äyî òr‘ª³óØæñS€x ¤ŽxÐ$€N*=·È%Ã/X%AVç¡ãŠ{hWShÅ_ˆ¼,´S³là ¶€-òÖÉhæã¶—¼¼¤Ý8·¦J´M»qAe–Tœ½•5ÁKRƒ9J`i(5QC.œ³Ø†Þh #šbˆ„•‚3g!eÇÚiP0(1¸žœÄ·!#%øKP{Á­@Ý}j/Â¨X—N‚4Ça‰|0,HKòwãEÝõê®ÀG6ž".5Žù|Õ[‡dEj—ehX`ü†iÂfFxÚC›œ;¹PØøtðµÍDëU»$?Uésâ}ûîç_ÞýöáýõÛ_~þôæËuÜ®®ê5oeÒˆ'G•ÃÿÉ‰ù	”9du ÍFë”vÚp˜J¡,QJ…Æ–%Nl±R„:†öyNü	Èù\ÙH¶\áö)I$öëäÂµ¢ja¿h3‡…-rþ¢d|%#ãm3ë_DŒl¢~‘JÅ²þBÖÿJdýÑU¾:ï­	²w çž"çŒRÐÁèùˆ¤dž"ª4ÃIˆL í8+Å‚¸ª<W¢>WñF:ÝLÅKÚbqY&ê¼µkÊ‚¨¿¨vÏ¬ÚeòHÕîSÄë¶ ç¨Ê}!æ/ÄüYóRxü%éÝ)×Àq ¡E [‚¬5’Iˆ±rg 
;è=Öa<7Œñ0ï!Â|%Mÿ×ç_’óèEhÛqc'S°ßº±6`Ãr±;ÄjVñ|×eyQº?…)Çô§IÌ¸9ô³VÁ»¸6Ôñ~8@m¨Û
>ÐýüR@z¸a~û]­YÓB‹¥5å\Vð‹Á`8Ø0™þžÖ[ÉÜ êª{¹’N¢¢è,	tVHÂ	ÿÄL(„J‚™†
ZL …AÀÀA<ôKC$ÚüÙèîB-.ûà†­Ú »k—ÕâˆáEn©éî‹vü)\p¦Ÿ*—ãÔ÷Ruå/ô÷…þ^ý}tM6Pìb(3Ö;‘‡˜¤‘Ðc ´†Ú(öÌ ŽÈ{¦µ 2øg£¾sý5¥]”‰Ø¦¾®Sß¶Féêû¢Æ>·éjö4) ¤»—©Ô~¡º/T÷ªó¡^’~®‘Ä(Š‰E;Ë4†œ°2`é‰â˜b«™GrIˆ‰¡ùDV;‚ÅÅÖ§ÄÞ†½sã4Œ²X_·\s7ÈÆ´l,¤h.ëÆ½xÑ+?…^€ƒ¡5ÌtüØE~ž¯þø¯‹ÁO «dÀbcˆ)Í¸ó€`Œ”CL¨À0:ç‰aÄI~Xb,8úÿÙ{×&Çcmðûü
Æl¬_9$°q¿'Ž,éõÑÙ‘¬ðØ»ÇŸ&
@„`\º›ÚØÿ¾™°›ìf#+Iô\l¾¯Ž›C
…BÞ*óIÛJÁo2#ÓNŸíöþËð1ZéùºÑJß‹1X–‚sµ/Ã­€á1ídø%Fù)b”Þií4åøü=f¾äXä¿¯,Ÿ?ƒÌlÓñ³Ðv|é»‘›f±“Ix®V¦Yàf¶“È4Ê,GØ™¿ÊÀnlÚ®HÁDý×“äcä»ÉèE¾|ßŠü'’ÜñIr_¿¾r'É/ñ®]‘~ØJñ¹Ûœ|¹q­/X‚_>§ˆJâÇV»¡ƒÙí[I–¦A(ý(öRÇñý0	3,ŽM×¶cSx˜ç¾Áiˆ&ê¤nWWŠý9DUlí*ù0p½Gr<Àì‹}9`ï m9>ÌÆ%®òIâ*§Ì?<¶ÞÏø[ù¥ùDW×qR'ôÃL~’9QƒEj'¡‰05£ÌI#ÛI‡ŽåØi’„Qº ½¬Ì±£çú4áò|Œ°øÚeÒ‘„‡d¿VhZá<-ÝÖ‡òücù$1––é/ÑX÷gù2åúì‘KZÒ{4I“8‘Bš.pG8¾ðÛ—Â‘‰íø¦%’ÀwâÀô<WÀOžù‰åˆð_SªÑ–@;Ï(r¼GÕ5`õø¶u Õ=7ê—xËÇŽ·§õêÐ–èówz½Ä\>ž4ßIU–2Á÷×iÞUìœQóø#gÁÈ-ÇõÜÔMœÄ±,_¸ ÑH—!Ò®ÆNlÓ„¥ž^I'	}7± Rº©?_ùvQÊî¶j®w‰³|Õ7ƒÌîYuWúy8ö'Q¢˜ê •·O;>‰ýk=½€(ÓÅŸŠ^vUÕ­Q/ÈÍ+,õÍ»­ºxßÊÅm?ŽâE5ÇííírUV©´¼¿ÂµW‡#xV«ø^èx®µ¯Uð+Ð4Çµ
2nÇº‘>Ø~ß´Xv¬ÚqŠB@_‰üù—w7ö×çë‘oëNWÃm¯Þ]Õ^LOÈØÈpqÙNÁ¹šÃ	®/ æà«)é¶Ü±g¹„‹\wU=…±‘øÚeÕä…î:zF*:±¼Û“‰‰GÎ=¦š(9¨>¥ÿè‹œ®çŒ7I>´œtÑ½þüÝwÝ´Ô'ç9KÍÓUzm8œdÝU^Á+a²NÿcŸSÅ(>Ù§uÌÛùU”m[•xŠ«yJ¹á\`w´úøÁú`~Ð|¦O´üSÏ´O=Ñ=õÄ“‡êŸ(ž¼ØþáÈ‹.w~ÙïŠ½1Þü>>Uû~?:ÕJ+‹¼ìï´¥×Æ¸†-¾zï½½êÛF9ÇMí3ZímDÍ5Õíq‘Ë`§;<ž¡ž…ïEaÛÒò×Í(	ì8Ê2$/‰½ÐóÓ K1ÅNÄ†bÒÌó=ËJÍgC,£é,ïê¢g°”e6·2é´“ÛDÀNXæ?Ãœ,r´Å÷Mëò8|}+zxy¹Z.?v‹¶¯ëªéÚW5vcU—Ä_¥²Ãn¬%˜éë<Y/Ð8ƒ+5rÑ×¿ÿf¦Øv'>œÒÉd]æÿìeûêàlÑ-Æf‹CŸØ¤
ü™N<¼ñ¿}÷ËÕ¿€ÅZSÃ8ÊW_5rSuÃi‹ª–xG8Ò!JËFóê÷Ë…šQ´Õ€Þ‚ì‘wyŒm!E³’Ý+¼Ò0ðZ&÷g~³HeRmïïÿ=ÜÂ8nî¯Lä+ðÓ<éD<Ì{²Hà„¼íò¤ý®Ei¨ñ¥{°xùMÕÈåâÇr^Žð¯ºjh„[ˆ›è&<ð25
œA\ùð0áñÁå
ùÍÐM¿lû&fè¥+qìîõz‹lÝæ G3´ÑU7Š#H%xN+õÔpÙ}kæá~•ð|(»/T_T-šÝ*Ì¶/àA~U¦y–P(Hv‹•,å¸öð{8¸OAÂì‹bÛÂš¯‹«î÷//„™šÜÔ÷<ßõ£2ÇvýÀÞÉ‰GÉY–i9Žÿ¸0ÑóBÿ 6ÑsCìíLúv¢6P>Ó“ûY	ÄOåÇY'ùqnö\ŸÍr;â†û`Ç<i]ñ,Ô”óBAžåº(fºJimïåðœ¿üòÃÏïß¿CËU×Èá±ÛíŽf›6Í-cñïm"í»©@Œ›©ÐŒãÛ¶à-ƒ½NXm—&_Í™¸ý3¾ûŸÿùöO?~°–Î9ç.u*,Ÿ?;âŸ­žúÿü,­'Æ0ëdíÒÒgÏ×už9ß>á1œæøuæ^é	´AfÔçìC<™î£¾~UÅmU€Ñ8­{Œ¬©ÊÔyÿhV^ôÑžx\h<j†¾÷3šZçz`ê©||7ÌMï92¶2;‰ËölÇL\Ó	=Ó‰BÛMCÇtl0Ù$˜rv”E‰FN„{áVšÉô97îèµ¸Æo#ëB$÷D'\.<R¹\™]ß†¡Lw^šÇ;+zpœnó¢X Ÿ†ð«ÛMvež‹¤©ÚýX›ÁÌÿšÿƒ—Ö·`ßÇU·~…^þö÷ïYŒVù¦/GNý£ƒç«F~E,á0é9:¯b­«o°¿áç| =-À›‘'{H7x/p$\]6¯ö‚Ù­º­iÁïÂ‰Q÷ZVà§• ¨PÔ&Ï¿Ü¸ê`øà¿Šûnw±Á#Dˆá@±¸É›®³zw¿É»BÂ•ý&†#À«ÁO¯pF–¯^½úëø"~UƒÕùûÿX¨õÞâ‚ï1Ü-|èÅÝ€czpt_RÇr¿$0µýÛµ£Ç=¹"?2í=§$0M6»÷üâ—œš…9·ûF2¥ÿ#jË{¼OãÛè§ìŽdø<ÿZ~Ògé¾|Lwä³1ì’ûwäÝßŽm^šÞ¶HÜ%eNæñÃû>‰gÞo…Ú´…8ÚU+¯÷ìÁdÊXTfÞ9¶"HÅN>¶Ë
ÿÐ¹5&8iî.{5@¹òÁÑ·C_
7È„#7½Ä¶lÇsø.ŒÂÀ‹]Ç÷Ó0MMø_Ïñ¢Ô6SÓ–&ØŽtÍç²k¾—I!eÜÛHcFÂâÛ_~œ
Ó«ÉÌF$É‡ƒFs,¶DÅUË-ZŽû†ßh¡aø|¸J«Bà¯öÍVvoAçrº7¾Ú9B²`T(C°…ŸÚl*ªSáõV–L1;^aˆ±ï] [ƒ¶]¡YVVM·Ž«^ÅŽ®÷=D´û¢Ë_â¾Ùm*,p[ì;P¡ãÉ/émÁ¤ZÁœöñfñj\€W÷ñx@¹¡ãû Qžïµ±£Ð‰KÉÞÏÿwÁB#Ir†1j•»õ½^ëÝ\Y</ÇMt‘¦­+ƒó]ÃôO³°ŽÞòÙà_^;Œd*Ùäyés–]ƒ²U±¯Éä
<Í¯Qo»uUNè‚á€¯DœO&È8Ë)q qµ­}ÖýO€ƒ4êkZ-k›X'éŠÔQý*/ê¦EF˜O¢{Ëü4À“2óÌ@Dž“ùÖUIÇ‰¶pòí4•^Äijü '-ebÁ³9ùã.†TŽÿ_þï÷*Ž‹VÉû¼î%n¸™œ(¡9øŸ§te¸Eþ£"® “Æ÷³ý]šZáÈŠ»ôvôøü GžÄÇ—îŸ™˜~Ö—i$Ú˜0×Ô­8iÞv_Ál>ñöNÕU*mO.£2—¶{Ÿú¤°-°‚¯3áF~f¥ú2Û1³ÛqO‘Œì4J…t„o¥A˜øœƒ0	Í4.‚¥8vÎ…ŒÍ,Q™ÏÈìÿ7â½“‹¦/QfM¸0+Ë_ÛÁEØJ )#ú;°Ã7òµ‹§˜*5CŠ6/¶ƒ D»=m÷¦iô½÷Vöc·ËW»kªØ2x"dJg¤ÈÀò0øK#é§ü€¯þ¢røäÕF\Ã)y~ÊjÝÝJü_åÈ,Ë“`¾Á¶‰¨u¥JP9îz´ þª‘¢0”?&+WîjÇØ`ƒ0‰>‡ÊzÙDµ2§ê…-7²<ßÞëÀˆ_™¶˜GUÖHÛ³ï0Xnà;\>øU¤Ád­ÆgŒ¯ÀÓâØýÅÏˆ×þôãßÔ³ûöý»…½4‡0ýûï†
Ž9JÎ¾‡…UTµª5{r¿Ç»yÁ`.gšÎŽôÂÿsxú*7VÂWqSuÅ´¶@2á©ÜØTbòT½·45°†¾¢ie3	h/£¥«—'ý$,Ò©PØ;ÞwèèA•+¼G› s-­éº	§ïN¥7{Kg2Ü§VìdùWíM\‡´QÔÅ´`,s ‰e„’Fš|#ÖMhP·DÇ?H§¶sÆ‡kÔ}¹Màãô«;½¶ËzóÕ‡{@çïø<?¢D ˜Ç<_ÙNù©v|žÐÌ—ùWK­{ržfÞÔÇÙÓúØÅGÏv–öYgk¦Ð5¬†;›ðøÙ'$™}²\DÍ‡øÌÙ'¤ó]ò ñüs¯f¥V“/<NÿM¿7w=Iá+ž¹J¢ÑêYžjïœ±õo?ytÏ†ËÛ |ßn"ü¸ol½{ZàˆQ:{w×vë¡ëèFS/ë‹ÂÈ­°|!#óX¼ïéþŒå¬›óÂð0­©»
¿Žü8	2™è‡ýÀ½ÀŽ}Ûö#ºëÄvd~ä:aYÂñ×¯Îs½ÄqMágnÂÜ%¦çx‰¼„ÿÂž=
:¾{<haÏwßz-Ï7íƒx |…0šñÀá8èzXý—x Þ4ÍãzA<’*ð>ˆïJµjÄfÎ\FZáÅ´nR'$èšZQ¼¢À{$cSY/]ìonA”ÛÕ©T¤2ZÚS7©©äjä‰ëÐ‘J¼˜^¤’x z@:‘ÊñþçˆTú‘Êà| #rÆ‡{‰Tæñ°”Ê„ N’%ë¤/3&:_¢ª—¨ê§Œª^â¤Ìs/‘ÎK¤ó_#Òy	=òBóX{áå=¹gÃËÃE…—Ÿ^îKˆtºèû?Ë XÑ×^$‘~ŒA oJË’afSfNàÁ¹A’HG&iœX¾égÂ‹CG„ZŽ¤©qä»ž»QEÏ5]½D:ÿå"žkZNpéôœÈuãäÇ–eÙ¾‡uU‘NÓv|Ë=ˆtš¶ïÓýRÆÞð<¥ß_ý—H§Þ4é<ï_-Òy‰L~†‘Él8'€™äjÐ‰ëÐ‘I¼˜^dò¸ñÄÒ‰LŽ÷?Gd2œŒóàÏvžÈäŒ÷™TÄ£ý1L¼~íØyì Î%(z	Š^‚¢— è%(z	Š^‚¢_LP´ªÁMn‹©…oê%®úÜ%ÙqÕyl^f\u¸èRër1®j¤kù¬ÊÊ8NÒ4\>Ii'–í[ÒJÜÀ	-SšÂõ=/Â	Äò\˜8/ñB;ñ¤ÊTêGWÆ"}ˆ4-†ÀÍDËÎïŸ¬¢•ª¯À}z•O‚Tµ×îãdËgk¯-?ˆœè  š®ì‡á1ÜóQÁG5Ã—âëÏ¬øš›l¹ÿ0?ZM¦ºÚ‹&éŸ1øTªê½ÊËmK<š¸çÿ‚ãÏÒ4tó…
H[Ò³³ÀÊ’ÐO…D^ |ËŽƒ8’"³MKÂï2Ï·üÐ4‘>;5EæX‘uQ0O³ù]S;›?4G¹ü¡çZæ>`èëð-(˜K6ÿg”Íï˜õB
fÎTZ}Ã¿êé
fˆÉjñO•†üï©^"$sEb±œ»–“fÒÉ¼8­À†ÿñS†‘c¹NèÅÒR	7Ž/ã4S°Õõçþ=ôæ\Àº9¶éÛöaÆEäGÈ‚ø "p²%Ù>ºä\|F9¾ó°	>³>šsU_ñ¯ú9ê£Y7Ÿ¿X}T%O²)ÎÝ¿a[ T$^ÙIH?í”$fh…¡g‡v”†¶“	i¦n‚ã”¥.(¯Pø~’E1œø\Ó Qa õ9Üs’†äÝ•Oÿ4
¹y="×6½£ÈñløÑ9ìŒéŽozûMhl&>ÔŽ»Á²ÒŒ'éóí¾¼:\ÓÚGˆµe-›´·?çh[è‚5qšòGø±Â^z»;{™b{ý5^"Þõ°·2ËuŽo2=l¨€läLøøú\•õÿÙ^Õ}§\% Ç.êG·`ò2•wËu·9„}=ða2OºQ"3?”‘o;^ì§vä%QâÅàÞK´±³Ìs¤†Nf©å;^ä[`k»©ç§±}ÑCdÌz¤<+pŽê×Ž@î½8vg„4ŽÚ>Í´¾¯´Â>ÿ¶zà£ÅÀÅ?5(Fé£S³èãL“zàÔûþ×Õ/žrlÐ¤že¹–™Ž„½Dæº‰+„e{Žmù~¦®n,¥Œ³,Œ#3C:žg÷ãÿôÀñˆ”xÖQ=‚€wÍCÀ·CÓ¶¬`OøØ.ÑótÃRJh…[þmõÀG	FYVä‡'n¿SŠ`Æ°Ð,Š`Æ Ï¤"8õ¾?kEpŸÔöYegù	F^j¥‰ºI
Àö1>8že‚f°‚4HÍÈŒRE‘ôM¤Yà‡à?øÉ³-¥«Òø¡\y»^ $+ÆfÏ(ÜGÁþ¼^ø‹ú#Šñ˜xÕœo×˜y˜È¤¿o¯·º\üUnªxë¼}uÿT°ë|ÙÂr‘gª¸õpx-b©z6c3@ù‚ú81'O7Í+ðÝ(Œ};ð+ˆbNð•m›dg¾G+ö’ïõ9E ,?â6Ûxü@?ZšÓÇ!gýìò¾fÜO8_m¼D0IÆ®ç;8¡BÉ–	víóm×µLlñ—ñü0uƒÀ¶-²Ä÷2Ëv0´30˜.jã%CTÚT¬Aè™þã­Š|™ÀÔ|åÛº\{jã’Åõù¬¬À>qãBOmÌ™ôÒÄ:Emœ:¬ÏDm¼DìÉN‘™RfNl¥”…—	;K¬À5ýT€
“¦fè$˜1å˜ÂñL'^(l‘{µ1CDËÓÍ±Bµá=ÚÙ˜Sm\’­>£øV`[§ísè©9“†^ºnð£¨S‡5‹ÚÀ?›ê‰ÒÐmn--æs*ÏuÃ¯c'ô33ôõuF”ù¦#¼,M=OF©zV*…HÒ,r¤›¹©øžFV djYnâ¥¦ë¹6©0Ñsª÷ù¦=7›w Ñá«„{ß‚úèä=ÛO¯­²…X”ã¦„¨ëç5ÊÙÐËW¯þ·æÑØ–<ÝçQƒsÇ‡¸¸Í‹bq+ºd­6TÕ–—ê),•F·Å/n×93žöêV´ƒé7JF‚
åv<?Y£ øfqpÑw,7BQl_Á"ÄÓ[6ê¸gÆ—V€‡Jp\ºê*¾RÁê|dŽYÀdld·®R¸ùW{s±¼F‹s¾]Ü6¢n_XÝÊµ”uû
Éî¶r¡¾ÛÝ—bŸ[£ÞF*å.7±l†ßvWBŠ>¸Åº í®ž^³†£ðãAß 9P^ãsÊ»Læp0>FœùÛªICqõ«jxcàyQä%ü¾–%Þ¢ÂSw2, Öo¾‘›íÕ½ 8f0x‘‡%BûDxê+Ç‹Â£Cþ£À®å›ÁABœë¦v>Ü8>c8O]§}YÃÛû¨ÝçÏ6Xópvâµ«ú8³Œ{Úµa¼"ŽI‘ÂMó#<F,ÛÜE¾*	‚)=¦¹}ÔF®äÑÈžÚvÛ‚àýs–6v»A1?ë4‘æY6‰éò1¬ëäô³²V±#°}	²‚˜S.¨Ø"ì?ûiæ²C·ma©íÞù‚bäÍn»-C
b(:`jWÅ$s/…(™ôŠeÞ?šBÄ“²,Î£ŠóÌ;CÞ)âÚª$¹:YD>ù8,À,m-ÔhÉ7lªÊ1èéÛ·y¯AËTÒŒ¹Xø²H(P—'	Qw}#Anƒbt8s.[07‹krjY€Õuž
ªI•Éz\È-£ïrBd¡0œâé|›«÷`V9˜T`a&h;7y‹\H³bWüo	'SÀkå*`ü‰|oµHnw¨›º*á CnrP»Ók„#oÈ%˜è Ç§yyMæ+\•Y¾jÁ5ž	‡§v’ªÞ;ÿ©šž“Â_#§×1çk¤è@ 7.9|IS”…^ÁÝÖâvZSxLa©h9ÑƒH«îåjÎ0•à×’Í_NQ$³™†c*1daôMþðúËeì§RÖƒM’°.g=¤2ËKi€?WƒhÛ’#ö^š½ô¡™*/­:…K˜¼g××…¼#Ä0Süì0T§)å
‚RÔr|?xz"ð¹1–ÄÐkà%AYï€AÁ÷L1ç‰)s:Uðµì(˜7Çê6Z°ÿŠê–\ºŒ%Á@fj@^¤Chr¦!Ë‹bˆ8ÍjÈ@gæ”Äºõ¬+Œ÷®)+k*ªoƒ¥Õ·aÄ[IÍW‹5£ˆz#
"‚Ÿá àbÂžº”Ždê`„…‘æå®°Díªš¥¿ÔkŒ±ƒCW2ë#›%ú«Z$FÜµh1ÌF™I¬§¯…É\QˆI¯(t)™7Oƒ2ÍŒ{Pz91$Ÿ&*s¬ùªD‡$Fw'}Aû¿ŒÙÍ7˜câ7ÊÖb½¯ù¦oà?˜éˆ s‚ór-›œÔÚ&Ç¥ÎK¢å	²™3àZC$‰l[ÐW÷”!bO¸wÅÝ‡JkÑÍ|Fä>ËÈ¸wBTC2ÆtsÖ?Õ/¶J#f˜MùÎÅNts*c}`þ¢Ó3s¹ÃÅô¤Û<íÖ†ŠÔUNX=L†Ïœ†”$Ó2ÏQ†Ži £¡VPáî˜ËzÚôå¿ue™ sZ?z üÉ­â_g~ªt:ÒÄ_¦¨'päDW(þXëBä%ÎLèw‹'Ö9$MÍ¼²	¿ÊS—ÓóÌÜl/z›—iu;k¨;oÕvû¼3+ïhW•¨µª˜³©éð^‚kx<F5·ù%ŒÇ£ÉT:Ì­HŸ·.l×c¶ëœŠßöwªk¹Õÿ+š^#Dåò¬ìø‹á”9EÉFÔš±4ÆCP©Ç4)uö½äMž4£6:Y°e®ƒÊR
4o©ûgm†lò;PÕ¸E:Ôœ•J{ûŒ1–¢ÔxDxãŒ-Ç²ª5‚2œQb:k‘ÿ&iœéµ FÓ—:¸,Á:¨=µ+?ç{:Âê½ªŒip—užLgê03¶j#ËKÒýaŠ•1éÚøµ%4–Ë›ƒZ`?y2¹ŠéÅ+O ‹Fækæ·UÑw³º;lM†;j0æÜ¬EßJ=¨Ù¨zœgÓe:ÄuÕæw˜×ˆ¤“cÊ‹FÄ3äFÖ¸3J6·xê±n*Œ°¥¼ë@F¢YÑ6cG¯nx~tjg¶[Ù§•¼Å]¿¸Ìä+Hæk“ê—1HlìŠ1CwB5}åAƒ0£Õsn“/@ÅÓ
5+°æ0îÐƒÄéªk"Ùáa÷ð}SÌé55ªÜspóSZYƒ´ #ÖÌ‹ÔRt†,Ty‰Ìšu…¬•çóæ´Ü$§›™˜ÐH*s&€±ÙÕŠLêlèx<©®`éZæ2håæ†§ÇG¤«j˜¢•‘o62Í1]´]çtì›3¹Zi˜lÈ“z L_­]ËX€P«)çtUwÐ:‹Œ7æ|€!ï…™¦Õ–¢N±"< sž†ªÊçô3÷ 1“zÎxèPç¨‘¦îq,²Ôð%ÑO³†HwY®.ˆ¥fòL¨£Ò˜ª¾E’ØD/Ñ™¥„«¥Dœ—d*.ËÓeÕï¬o‡Âý0d–Ó»óœ§Èµ*K3¸? J"Ï•
£ÆÐH[#¯‡3Ç½ÏX‰CÌOíë#{<µ^òÆÀJû9u]·nª~E­_‡S>ˆÜ©QõÓ‚‡êª]¸Nš¼°Ö¯hU~3¤ÎS#Ó™)ºª×ØA`Ü>üKfhSÏðUõÙó'fõÙ/PgÔ—z6*ö·\YuUT¦üêµrïÎZ_§èO”U‡LT5)ëë›|úåb†ýÁFÂ$òV…˜Õ<ï‰gÄ}³°H0•u#¡’f¼^ŠÁgÎ­‰[$õèd¤™ÓG»mrXSH#ƒÄ›|:°Ç\VwéJU”SûÔÌ¸ôVµõi6èýFbk!¢,
­ã—«7_×"í[s¼Ö­Òùt¾3Eºú8ŠC¸Ãs÷8úw‡+Ú¡ÝþÁE«#>³Òîß?Uq=òÏ®«¶ÓO@8ør‰xH›q>
~£ôûPuw>J“œ1„ÁÎÇQ2ï,|HW»§uîcÇ	¾ÚÍô¹`ã†Ï°4‡ÏçBÓ~5ÓP«òê`ž;@õ<¯Ž<ÙOÅf8T†<'‰Mûk?ÓÔ³w-{4ÈM'r<Û5£4ðýÀLEl%®ÆYZ™Ÿ¹ÈƒëXBvd…¾•Ø¶$¦Ã,d$™á…ÌðBf83™¡ëØŽûd†ð•Ø;–ÒGý¼ìÀõ‘û‘­ö¸Ã Òí1?ŽÏPç‡ßž¨ùŒ¹ÌwÓ›ÏPg*Î¦6ö‚Ð½ù¿yjëÒ¾Á'£3<…xj1™±4Q½—!Ity›ÙZ$‰LV¡$³cqÏ1½pšzŽÉkòi©ç¸ÌG˜s®€PUKÂ³÷¹dq:t/†¦ˆcŠ-Š8f‘H’y™Us®S=z8›·V“¢*¥^–KØ¥MÇŒí2Èá»•Ÿ–¿©Ø¼bÌ¥öIxÅlN…6îþnêÓLµ¯ÃžêÓŠùL‚.°ÀàÉÁº(éâI»¡CsKõeØ´6Õ¯:†RÀÛ¼×…y¯‚Tetzµ£î0=<£ÉvÄ4m5Q™%ŠºtG'ÀêÐ1ÕEwñDÁ'¥;:šˆÄdfÅ æV4M=ëÉcÄcäRnåF”]žP“Ëc»¹	ÝÃÎNü£KšÃ.*[|NÛèK&Da_‚Ïâ¡EÂ›6A
ËÔ HáÓŽhp™³s™¼ó3¦ È¸é“¾ …Òã:˜3ËMeRjc0_ˆk¹Ž‡2ñL«‰IÁÀxÁÈÌ¬ÅÃÀœáM¾Éý€§ÿ‹¡"˜÷!Ñ4ÁÑò)Ù˜+é™ªZ`¦PW%ÙsƒU63@Ôq¼¢ZÝÚ{ŸwÿužhÐPØÌ¢bÝbhæòçs†Ûo¦‡É\¬EÅŒm
­Ê_f[/n‘.“ÓG»H—©Wwš¤È¯g¯kd²˜5}žQ¥[âÉÜg|©2AÝz%ví–&.s›Q³Z‰òÕDõ¿Ôr%n•²>rÀ[zåJÌí<UX£OèÀt¿e;·|iæ²ô?ŒÚÎÆ’_Î(ïZœ
-oÑb™¼P­‘fQÓ²á”Ä0#(ú%,L3G·ƒ¹ÚTž éà”°°JC˜Eàº¥!ÔS;ÌR£–#yøøÕ.eŸ¸Œ¿ù¬
0fHÝßÅ>&ú“âƒÏ«ÚbÏm™Yyþ
³ÏÌ¯qþBž}ßq~ô=/êeÇ³˜ýi|öU7lš#ó­ö?ójœÀô¾öRÓ‘^èWãÄiàº±ç»YdE¡k¶eG"ˆ3?sLøÑ/MÌÐrÏM¢Xz¶o¹‰%íØ÷¥/Õ8—jœK5Î¬Õ8¾åD–Î<Tã¨¯ÓÞ½ØO«q"ë#Vãì‹šÏ¸ç.ôÓz¹Jœƒi˜£'¸O®½Tâ\*q.•8—JœK%Î¥çR‰s©Ä¹Tâ\*q.•8—JœK%Î¥çR‰s©Ä¹Tâ\*q.•8—JœK%Î¥g>äK%Î¥‡*o¹Tâ\*q.•8—JœK%ÎÍ¥çR‰s©Ä¹Tâ\*q.•8—JàK%ÎgX‰ó4qøøÕ.•8—JœK%Î±Ë\*q.•8—Jœ/ªg8L²Skq¬`ÔqÎ“ÊVÇûÚr¬@ˆ8Õ/ÄI’ÄJ2éYfì{"ÊÌ,©éZ±0ÃÄv2Ë“&~¤–å¹¶)2?óm;t\i¹±ã?Sˆó×_~Zü$’¦jU…Æß»¼È»\¶ªžâçj(sùåa2ž«ºùÛ:ow‹¤*;šmè›ôª[ËfÑß_£o1ÅB]ê~¾_í.:>Vuâ^!‰ª¡ÜÁBZ¤øfçq¯~zÙ"L¦’M…Uñø«Ûü:¿Ç{5ÖH4ís=T<Ï‰l7Üï¡_9A´+º8¬Ú°MÓw‹6‚Ð´÷K6"'tõ
6î§×°crE~Æõuø.XÜgÕl0fâì’;2™½SrÒeaH˜³íjÏòN&Wu!:\F½íÖàT<ï42]‹Î€¯Ç4ÛI“|øj>¥Ôü|%ËÕ‹øçŽ%ÌÀöã‹î_á³TOºWê(‡Ð‰‚ÈrCË÷PØ›^à»¾‘o¹ndz‘kÛ±ˆ-7ƒSÏM¼0IS8Ëß‰Ò‹røôÊÁsMß:TžìöJŸ*‡ÀûHÊaoE~ÆÊáìb>Æ,Ì ,f)ßLŠáHoÜ‹bøŒƒí<ûèNj¦™dYlZÜö-ôç‡™ˆB+‰…ˆü$pÀ[ÒÍ$J3/<ÇS{"–ÖE1|jÅ :/†ÖaçE+~\1¸s¨\+D?â^1¸Žë²ƒí‰ÿF=3q¶rpà¿œràH˜‹r˜G9àj8Ô`­|ðÝçõõPÐëb}ÉnkFg«í'›4Vðu&ÜÈÏ,FPI¸¾¤Qde¦ -:N+rƒ,K-Ïs¼8±ÁW°£DÄnFiìÅ¡iË	é	ïõp¨$¨ŠeÜóz fH1{Üë‚ÍpÆ=« -ÿ¨úE"JÅÌ’wÈQ2Š9%íë>.òvýê~–íª8óÇnDl©Ê#“e’ZBñ :&©ªÞÈ>Ë^N'€J–£ÒÏ1|¸‘åùØA÷áü8ÛŽ»`ê»fpHñay	ºÃÝý–ïF LBJúÃË7.<CsÉ-‡­)ÿÕ¼ûþÝÂ^šêóï¿SÿôþûóuÃ÷›ŠWï@ÈöxS/î>ŒÓt„dšÎU>Øf!S;<Ú]þï÷ùù½Nî	«Bè¸EVð£²×f%ÖÐEeeÒ)Td7¼hD.€ÇI4¿NO*¼§¬ÂlMÆf®‰&·
³èJõóa—Ñàq¸<0m®RÛ¦Q±š†³¨ Uc¬&¯ÂœXÌYé È]¨ 
g-y4n¥æƒ4¶’¦`ˆ–`»À›ç¼ûmiÜæ¯•MgÔEO$q¦´Ý–É5‘<lòj(Äí—l Ô%n<d½A“b$1êø:Nõf¦ÁÅy‰Éz×Ôóç‘(½ŒófšÙÕ(Ã<¡I¤,žÆç’Hq8†ÌU#kªYÓƒÑŒÅ|3“!óã-™«ÉäÎ‰·¤ó®™ùË‰P´ÓwnónÙ6añoAÅ´zõ(¹˜ÆÉËð|‰ºëÌ\¿Ñèð}˜sµâpÁ@!-ÉM
GvVÝ–ÓYº\¢+f2‹ÇeòdgyÚhü¼jO=5îJP°¡û!ú^©+ÂvXÉA±/y¬Uä=U0Ä¼ûŠÐ¯¤9Ù¤F»Î§U“Ã”¥ÕŽîÂ´8åÜ½6ËµŒ^ˆåŽ5¤«‡v
~žQNÇ#ãÛ€å†ªfÃGy1ž?DÕ®ÏcQÄ=
Ô+¹†È¦™	™%L ÛV…Ä¿]ScÙm¾³^¹z«&¼o:Œ`ƒÁåÁ?X¸lä´ŽàL7,°;eÓ ¸(awpI\›ªÿ³·³r‚°i&¹ŠsÚˆ,Ñcñ®¦¢]§×•¥ö ì•¬‰U€EEO&kÊ
§f„y6Sd°@gSƒª'£L.þKm"?Û¬®(`‚NR› ësÒ†ä±wÊBlõk*
¹BÚ yA;™t`õ§Ôz`Z“#p)oI¿ŸI—ÊßD±¢üÞŠÐ¡\eî¦,§·d˜±‰!q@)³Ïá½µ2IŒ_Û˜*ïdyQ2Å.-s®ý—â¯-AÒR
ÖdZy<öZÆ¢‚5ª“f%#ëHyj¤`åÌ@Ó”Ó/½ÉcÞ‘¸Ýb8Št$y7¯øê~Ô/S‰ËÖG9µÉ5¶ºqôXJ0•€lQï(†7mZÆ2|L›ÞõcnÔh0L‹[XeGm§°62Ñv£ÉõÏž PtxŒ‚V/m·£§G­fX\ÖÕÖ¨û”””/,¦]Š< È–åÓ‚éú)è~V¶®¬èÛõÈ¡i1r%øÀX¬’NH«œ3É˜¡™ŠŽÚqgåà.Öô®+÷%!m&à@ÓXSN?Ju†"Ø‘ô=õìmV„<kÖ•û—r1k— ]|‹L»,ëË³qÓxZ3·ÌV¢'ØŽà¹qŒgx¯`°sjL|SAæ\ò6oYÿq·Šs‚Òæi`Í†L±øbÍÈW—iC’$ÙÈ%Æjë¶<0™Ÿhyàóõ[°²„Ö¢1Úd-7³&r!ê(rPW$£+B¾³F¥^ªßC»ÝÄU1kÐaû2'=<&ù&N#7|ÞéìB‡‡ÝPÂáÊ)|p¡î¶ÆÖ)Í0U&fQÌéNªÊ3Æ°yosóŒ¤Éo´Å«å¸Ek`ØY6§#H&›ié`ò¤Èô>Æž%·:=ó87þ…u+Á|·ê¶$h
™™
 [ä«5MHÎPåy¹–`Óô¨37kaHE€ëôÉ½UgeQ¡ÞûTk–0[Ê€Y¬E—ÎyJd§®ÌÒ¨æ´rÜaç°Š¥Û×qû¼°»Óð»‡|„;ìn5ÜµGu«áÏ
ÕX†ÿ(uËð‘9ô¶Ÿy
h!ÁÕˆÙ!ñ`P¨€Ë Ë[½¨we6ÿ¬ÖÇËu¢!™9\:ìQÊ;Ú×aj<xæ©ÖŽ+cÕ&ÀÀÞË®ÃKe=ÍšN5l4ÐN?f£0l=XL8bÇÌäíšŽû#ãÆˆAR}3wú^M<ií±@qOrÎ½cF+f^º#»Y_ä"“\£KÃŠHJ“3i½D‘$TUs/rÀFç´OÜuUM{¦Ï3P«fÖäºtd€˜3=a n%Ö’Š‚ÛéìrQ	3‰Yã©8"æo¾°×(aèýgf—¼äšÜaZŠE…	«ËÈ€	uwÝ-‡5äxìAÈ0VÂÖ=6Œ]âX$t”‰Õ:pÀW!X½¹á­ç¾ÊÎ¦Kø˜<‡ð-Q¼ÍlF¼_É®dÆÃ«>Ù7±tÚU5C˜‡BL«UÏˆÝ€mF¹³ÈÊ\±áý!–Ó^ ÷ò”©¸Í»uÕS«ŽUçþ‚mB›Þ ß@—þÓõxŽVÛQfÒ‰ÂÌd—¬µ¨k¢–Üã‰¹‘4`¾˜ÞÂ†	`­Y…‰Áº_è·©ì§ìºÊXªZ)B6ˆqÖœ–ùo`´‘+•¡wà¾[ü¯®§ƒÕÜ¾»×dÃH“GÉ°©n$¯NŒ#>v\ÎØz½´@“×!ÿŒ"Šr\™ÎŠB^m§Ÿ>³vlÌ4·öû;_‰Œ,ˆÙ§¢OóÎh$n®ÎùÒ"öøÕœ™q;¤G S„‡Ì©e}ÜM1È9mD/òLbâ¬%°
¸ZåàØûwÎ	b?]‰1YÌ’m*z„DÅç/„&Ë>1¤È¦)Ü\~L!Û>ž°Rê¦"ý~—gD ì}ç(%WItŽ´Fô¾¤+\Y¸}+ï“ãfÝßpª*Öeö‹ï71·MÅ¬/I¥ŠµÏ¡É3Ø†}u$>£€™í­G`=§1¿îr%»ê¶ÜEÞwÌ¶Ô¦“iî¾÷0X:!ˆE¦Ya6â†ì«ÉÔƒ€ÚmêÙA©2SfæZ….dºsß¥Ö ÀbêA²œ÷zŒbÏéÕ`;P¡kÞ}ë&l¹<A¸qëÖb1Ö&†ïŠB¢ù$Ê«†æLtP¹)òô.mOrasUZý¼zq‡­™QÃšj@­@Êiîhuö¡Y‰‘ Yå7(0oçÜÕ©é:vÞRh¼J”žs§ô+îí¥¼ëÐØã|Ö0ÄX#¬Ÿ×ÊY#¶JŠšÓEàßÁæi2zSu•¡á¤°¶:jÚ[dÌœZ#]œ×Ê>­(v,®i©¤2˜IFL·î74o1ç¦)<îûx:Œh¬!–[jVŽ&3öøÏF%Öv²Ù 5H˜,æŸÓÂÎçÙêÿì%øÝ¤Vþ2dáN«&æûØP¥·,Æ†F
*þÇ
2 ž_#“¡AßgRÏÇUÈÚ¶0sõ€“±?&.‚ï˜tr-†jâ`£sÄ°Û8ÐL¾ „·ØhpåSclÍ6§¯p¤}<q¬Ä~ãø9s~°‹ÁÁ";cCú}E:§Ìg ßˆ¼ÔÛK`š¶¯ŒdÕ±NÁ¤yÔ]îX)yè"63"K7ù¦Ó¹X6¯:ƒÕ°j{ÚidH{Ì°éîÉÍE†Ž×‡eM*–1³ÛèàÚÌY›r¤¬50 ‚ˆÉ¨¥Å‡­ìŒS7)S)TÚõô0Ómh×2å
‰67‚¤0á­¬Z¯Ì‰Œæ†ÓfÝrk:ÎÅbÈh7¢étÞ&9H[QÛÒ6o§^j×»Ìi­¤JÐ¨ÞdzÐ#°ÊÔ³!YäbmÞ!53YøÇ}ãWÞ%Rua¤“pøÐ5	Xå¢=eìcC#OéX6Ãýjë"ïŒ
M±†Œñ¦¥]×Óñ/EÎÌYÓm3ˆæ3—òÀ{%Ù!‰EL=ÂælèMsžlÁÏf­ŠÅÐHÒ)êgÅM:«=>r;ªZì9CÚ¸LE—é©¸šm’Il_ö˜µ°™1w2+òþP9†Qæ¦!x­š’Âr~T¦¨‰Êõ0ª$ªhNõPÛ:ô±Ö`/áÌo_c:äØ¼„˜Vø¥”-Ö ÃLÁ¨7ÝZŒ)Þ;y×}€éÀC]7U¿¢D$‹f„¤¨3Yþ;6­{•¬aa-¨./·à	ªjÊÐÈacI°'ÖjuSÓeME_–²Ð$eåŒ÷VbYBîÕ¸R“õÁäå ôy:fôÍŠº-i“r¦Ë¹zíœh–æ¡Û‚hHÂ4Çv°³·xéË:¯gíÛ×—¿)R§¶mV"Á¾VÜFeÕåYN†ÊX¹ýhDÿJ±^²tWß#ÉF!fè¨æG©Ç•LicÚæ
Yƒ*ãU°z<ôL¾yCXŠ¬ØÎ.eú Ã~táI‹”±›wô:¤$bÆn«Ë¬*·‰ž?Èx§o×9éÇ³vaà¸Õ8§†;—<7"í›I/¨mghôÒáÍjÕ\#+´ 33Ymn¡åò°^b­é¤dÎ¤*~tÔî:ìèL3ï.]HÕ@¥{3ßVZê2è­ÒiÄŒnEAæÛ1÷§t ™´§[2åƒ—lÄA“Â”Jz¾z®6Óº‡bó;øx@£ˆ¶Õ³_Bíƒ,Bôx¾¬àëL¸‘ŸYéÄeáz:—;`Æñ>;G&gÐ3¡Ü…¾á»/÷ÈÞ\áUÁ>ºA]0~‡_9í³£»Šóòª]OŒÿªou.fã&Ñ†7bj"Æ¿ŸíÛ?¼Wuå
óôe7qÿûóÝßŽˆìi;Å?¼Ü#ì7¨+èÿñõ
éÊ_¿½’]rè™ß\á{ßÿÞ$G~»Ÿõz3ùëÝ“_ÇA€ry=Xä±zxÆä)Ä¼¢X“Å¥Ï\DëÜûÌ²L6)èÙYš:e/mO8ó´1>}Vô)'ñŽ;Æƒ/ª0Ì<‡Ô·à¤,»»îd°Ý9X=çŒ)F°º;h¿Ôüü·ƒ‹}ôaëI‚'—:Z|~µ\åÝºÏº‰Iä«Vv6’^n7ÅK\fJŸþîÇï~øùý/€ü×¾ýþ§–g¼ËÏc+ºµsWýqèûÐG•\/qßèå®qüP!¬dÀð¡Ï™“Gå
ùÑwçÀùsƒ¥¥>žŽ„y~B›ÙÀ0il6°Eòx2ÆøNFQQ!£>=àÀ'\žÝÛWovK>ŽŸFãku,šo•¹¢>áWÈú\„¾ûæJý¿½¨sI?Á^ÚÖq?!ü:òã$ ½1X®o‚•~3Ž©]Ûó_/êëUžþñõ?~xÿú­í8#¬PÊÔ±¢4Î"ß	íØ	ß7}×ñ3×“‘/?
Ì,sSéÇfäÅã„A(¢7W»‹¨+Âßh¶o†‰„E¿øeœ”ŸD	`éîÀƒw”p×8C‹¼]ˆÅn7Ã˜êE9 -ÿ¨úE"ÊEßÊEÞ-ºj1Ö“,D™.F*×WÛªÎY€‡´jÄÎü±ÛEª
9e™äð</­àCÕ­ájIU‹¶ë³lùæj|8ÞqhÍÛïÀ£øËûÅŸú¼HÛm»ø]Ñý!îWí&ðCÕ.«fõ»U÷‡ûÕÑ¨Óû¦x‹Õ£ÿqu5xExÜÕ›+üÇ}Ñ®1xÌ¾åF–çyà‹Äx•ñ+ÓñÝ1þò÷¤w³ŽKèú¦ë¼^ÜØ`tž°ÀE–ß(`7|{Ü~£JÜqÑ­™ýñõø´<.<CsÉ-‡½Ä…?€ï^’{?lŒŠ¿ýéÇ¿©yÿöý»…½4Õçß§þþéý÷ƒ»µ;øáôxjÕnò‡ƒÆ¯ŽY5U_¿ý^ÞÈ¢ª1káê(W=ÞÔpÆpÀÃ	jvÑ}ÃÒ0áã
,éûç8œõpÔÃ™-¬²DÂ§·cÔgœ&czšÚ&Á9p0p×R¤ ”·„¥(šî¯=ßÁW-á¡úŽkš÷å\ožÆèðÔ¿ÿËÏïuêÎî°ˆãFN³O0÷EÕ¶¸
œAIVæ¼6*+C@¡^KYƒÕBÒ¶²jÅ¯Ó“êãûÉØÇX¼Æ¦s«C¡êuåá<+=TfÜ\•™5®PÛnKU«9Ìå
°*IŠêÉj°‹¨c5y)Ý$Q<]>ÁL”Ò@ä.TP…³ÒÙìÄ¦>˜ÒØ|ÐÌöQ¢%Šöm^VŒhK‹Ì8c¯•MgÔE?kSIÑnËäš¨>1y¹âv(l™NecöˆÐãQþ‡gÕcÆ¢@.”Ô Ùm™S'Í¶†'_§tž(C€{„;ÑD½.{FÖa\ô2Î	ú‡ÇfQçËÌ	Œ±ó-Vƒ ,¥ûåMo=ÆV5Mt*w€ÛåDM3S'Þ’‰Ì¾×ñ©n©Œ[&¥J"hÊp‹™ÈŠÝ4ˆÇ˜Vo_	mž²Œ=P&yA"jlCFøÈëERù±Ö· ÚÞpkœ“5Õ4Õæ®$ëê¶¤1J5ÉéžÇ/X’iGaJ-ƒK\°E®Dõ¬ö‚‚ÝoÑÇl‚°*‰ß!–(‹P{*YŠy÷! ™”eZä0Ì$œ‡Ö†˜µ8QùN*Ô-IúmV;•X+œ5¤«Ç¤	¾ug	T°üÀPÕâ­aù(Èî/:ƒ¢+c6‚Qµ†ë³„€ÊÐB½Bv[,ÂÌ¸í*¢Ñ;“É`1ÿvMUŒå³ì$U½å5i`,•žÏÚ}rèç4´µ‘I5í`r$MÕb	¶¸¥šÀðfº
cÅiµyJL@ ²-M^Í461J©Vðª^œñv§2&jg˜%¼
¢-g¦­§RYá3—õºª„rªž,%câËZ§ÀƒY¡–ÊLôQTÊtEtÒ®Wh®ÁÆ/ÄV_á±¦¢+ì%7/h‡Üð˜ðA¬¦59—òV£ ùÎý&Šå÷ðVDÕ©å0çþ`R,ëÌØDÚ×…¼“åF°¼È”&Af½µ2IôZK3‚LóŽ¬9b-Q¹©~ÕÙà	x‹IfP
ÖdZyH)]ezR…¥a*ÒnªlŸ¥À:24kyÏ¿iÊé—ç”A`*_;†£HG’wóXn`ãìœlÍÉTâ²õwdÚ¤¨bÄÑ`)9ÀT²MD½+-Þ4š\šaäƒ4L¨&ð¬†iÑ"6Q/;j;…µ©‰¶M®öÕ²Ã3`ôØ¬~ÇÝ:Ð²Ì—uµ5ê>%%¥Ã‹i—Ž]›ÀÌ£«£RA÷³²…gEß®Ç¢BM‹‘ó(Á†ó4y#8“\5x¬\ÜÅšÞuå¾$$ ³×K¦Ù©¥:CeXµô=õìmV„<kÖ•N¹ªÅÂgí ²ÍÓ.Ëú2ÁlCÜ4žµeáJô©òÖ2Œgx¯`°sjL|SAæf4¯$ç¾e§6!q«˜jdgó40Bk‘{3gA•¹¹	¨ä«Ë´!WE5Ý`7àQ•"ž(g›&gÜ}Uï
·p³¾ –©ËËZ¤s_ËÍ¬‰\ˆ:’bb¬ùZÌ•8Áæ|³Ýnâª˜5h„°}™kñB2–&NËÔXåÎ.tÈñp0Ÿ~ìVÛÂú*»<¡âö!kèˆ¯KÜËŒw)lÅµŒYsº“ˆ¬Ï7l3ßæû±þ&©×Ì.¸9nÑENÐaÖŸÍxûòLÍ”˜-i@¦÷1”(·T^
sC=ß Á¢Qˆßf¥OÊ7}ÿ­©f´ä1Õ-Ý»“•© ÝôŒ¡Êór-Áþ¦é0YãœÎø°x¬ ×é÷ÃQÜœ•E…zxïS­Y6ÀY¤CnÉ¯ÉLÌBXê9ñdÞF5§e·ŠüR‡ž¹}™£WŠÍk/]gNûã”K0­Æ¡áæP!7ZåD~‚É^{‡VàiÎü(‡î£z­GyÈº	Í<z].xo³j¡cÀ
¨n‰†dL,oõ¢~Ü•5Øü³ZÚ´®ìG¦ÇËZ\/0Jy7+å_Þj<xæ©ÖŽ+cÕ&ÀÀ3Ë®ÃKe=ÍšN5l4ÐN¿ÉcVÛƒÅ„s€ vÌLÞ®é¸?²ã«Ç.Ksîô#¼NeVðWÜ‡šuï¸Àl”YÈÊf^º#»Y_ä"“œÐ»H¯Æ°¢’ÒäÌ®¢Hªª¹9à	£sÚ§îºªèîÆŒwx@­šY“ëÐ‘bÎô„¸•X7J*
6n§³3ÈE%Ì$f§âˆ¹ÄtT'häy™ÓõCXr/„i)&¬.? g€bP"Zmpeâ<r¶2Œ•°uãF—8D§r®DñUVonxëy‡¯²³é>fÏ!|Ko3»ïÀWØŠÌrxÕ';ð¦"¶€N{ ªfóPˆ	aæØØ`i´æ[5«{Hã½<e*nónM7BaÕ¹£/Û`é¤q-·´IÏ™â¦7è7Ðå…ÿô@=žƒ³×ª§ñœI'
3“]²6Ö¢®‰Zr'æ6RhDÒ8€ùf`z&€µf&èžŠVÄ-sšî€Ù-AR•+h3–ªVŠbœ5§eþmäJeè¸ïÿ«kº%g¨Š×•p¶Y”›êFòêÄ82€Þ áÜ¼Æšg õzic$­àŸQDQŽ+ÓYQÈ«íôÓgÖ®!ïœæÖSÊPDF– ÄìSÑ§yg47Wç|i{üjÎÌ8Ez­Ò#4Wñ– »)Æ@9§íÀ‚LZý¹£€«U‘/!zÁœð£äµsÊ¶ý@‚ˆ£øüƒÐdÙ'†Á4…›ƒËÉ#™ÔèàÁ\)uS‘~¿Ë3"¶‘+˜‰f;ÈU#­½/éÀ
WVnßÊûä¸Y÷÷ œªŠuy.øÐúOm›ŠY_’JôÝZåW:–e°ûêH|F»¼oÖsÚó;à.W²«nË]ä}ÇlKmú0	‘À”£VË—ø¹	D™f…Ùˆ²Sj·©g¥ÊL™™k5ºéÌ}—Zƒ ‹Yd¨ÉrÞë1Š=§?Tƒí@…®y÷­›°Åìê¸qëÖb1Ö&†ïŠB¢ù$Ê«†æLtP¹)òô.mOrasUZý¼zq‡­™QÃšj@­@Êiîhuö¡Y‰‘ Yå7(0oçÜÕ©é:vÞRh¼J”žs§ô+îí¥¼ëÐØ%;Ë1Ãc°~^+gQŒØ*)jN›§ÉèMÕU††“ÂÚêT¨iOl‘1s>jtq\+û´¢Ø±¸B¦¥’Ê`&1ÝºßÐ¼Åœ›¦ð¸ï?àé0¢±†Xn5¨Xy8Z˜ÌØã£Î4”É²`þ9-ì|ž­þÏ^‚ß­Ajå/Cî´jb¾UzËblh¤ ûh3‚ˆ§Ç×ÈdhPÀ÷™ÔsÆq²¶-Ì\ýàdìÉ‡‹à;fÜ_‹¡š8Øè1ì64“/¡Á-6Ú\ùtì°=+×à}|NE{ºêšØ˜uxˆ{ø¾¡É8X¸ ÝÈÎÈ!‹<~ì‡jé÷éœ2_œ|#òRo/iÚ6¼2’U‡×{~Ä¤yÔ™}­iùxÓ«ÈÒÅM¾iÄt.–Í«Ç`5¬ÚžvÒ3¬Gº{rs‘¡ãõaY“ÊeÌ,Â6:¸ÌféC¿@b¤¬50 ‚ˆÉ¨¥Å‡­ìŒS7)S)TÚõô0Ómh×2å
‰67‚¤0á­¬Z¯Ì‰Œæ†ÓfÝrk:ÎÅbÈh7¢étÞ&9H[QÛÒ6o§^j×»Ìi­¤JÐ¨ÞdzÐ#°ÊÔ³!YäbmÞ!53YøÇ}ãWÞ%Rua¤“pøÐ5	Xå¢=eìcC#OéX6Ãýjë"ïŒ
M±†Œñ¦°R€.kM·Ít"šÏ\Êï•d‡$1õ›w²¡7Íy²}@<›µ*C#I§¨Ÿ7é¬öøÈí¨j±ç5jã2m\¦§6à~h¶I&°}ÙcÖÂfÆÜYÈ¬ÈûCqäF™3˜†àµjNH
ËùQ™N &*×ÃP¨’¨¢9APÔCm+š®p$½+Å™ß¾ÆtÈ±y	1¬ðK'([¬A†™‚QoºµS¼wò®ú Ò‡ºnª~E‰H-ÌIQg²üwlZö*YÃÂZP]^nÁ*TÕ”¡‘ÃÆ’`N¬Õê:§4¦ËšŠ¾,e¡IÊÊï­Ä
²„Ü«q9¤&ëƒÉËèótÌè›u#ZÒ&åL)–sõÚ9Ñ,Í;B·Ñ„iŽí`goñÒ—u^ÏÚ·¯/S¤NmÛ¬D‚}­¸ÊªË³œ•±rûÑˆþ•b½dé®¾)F’BÌÑQÍR	Ž+™ÒÆ´Í²U:3Æ«`õxè™>|ò†°Y±]ÊôA†ýèÂ“)c7ïèuHIÄŒ?Ü(V—Y7Tn=ñNß®sÒgíÂ*Àq«qN	w.xnDÚ7“^QÛÎÐè¥Ã›Õª¹FVhAff²Ú(Ü6BËåa½ÄZÓIÉœIUüè¨ÝuØÑ™fÞ]º2ªJ÷f¾­´ÔeÑ[+¤ÓˆÜŠ‚Ì·cîOé@2iO·dÊ%/Ùˆƒ&'„)•8ô|õ\m¦uÅæwð/ð€Æ.5¶ªËA¨}EˆÏ×~ùqd2™¸,\OçrgÌ8ÞgçÈäz&”»Ð7|÷åÙ›+¼*ØG7¨Æïð«1ç¢}vtWq^^µë‰ñ_õm£ŽÂÅ¬sÜ$ÚðFLMÄxã÷¡}û‡÷ª®\až¾ì&îa¾ûÛÑ=m‡¡ø‡—{„=N÷K'.8ˆ„´J^j‡ðuØ]õ?¾^!úë·W²K®àÆÚè7WxÄÞÁ÷¿7É‘ßîWC½™üõîÉ¯ã @é½,òX-ªcRbÞ¯4¬Ç¢×g.¢uîý?fY&›”ôì,M‚¼—¿¶'œyÚŸ>+ú”“ÇxÇãÁ…„‚æ žCê[pž–Ý]w2Øn¬žsF‡Ô#XÝ´_þÛÁÅ>ú°õ$Á“K-Š¿Z®ònÝÇgÝÄ$òU+»\/·›â%.3%ŠÏ÷ãw?üüþ‡@þëß~ÿÓË3Þåç±Ü¹«þ8ô}H¦J®—¸Ÿõr×8~¨\V2`øˆÐçÌÉ£²…üè»sà‡¼¾ÁTOGÂü‘?!¿ÏÍl`˜Ì6Ø"Ÿ<cƒ‚'£¨h•‚QŸpà.Ïîí«7»%	ÇO£“ñµ:­Ó·Ê\QŸð+ä+}®Ëß}s¥þßÞ”¾¤ÿÿÂ¬û©é}íE2’8L×7ñK¿ÇÔ®…íù¯õõ*Oÿøú?¼ýÖóÜ,Žm?ô¢4sMWú¡c:ah‰%¤m	SZ–±Iä9fæ¥ðð}è:±õ°»ˆº"üÝˆfûög˜HXô‹_ÆIùI”ð–îî <xGu w3´ÈÛ…Xì¦q3œ±€©^”Úrñª_$¢\ô­\äÝ¢«cËB”éb¤˜}µ­úáœxn«FlàÌ»±]¤ªÀT–IÿÀóÒ
>TÝ®–TU±h»>Ë–o®öÇ‡ã‡Ö¼ý¿¼_ü©Ï‹´Ý¶‹ßÝâ~Õþg?Tí²jV¿[u¸_:½oŠ·XÕúWWƒ³‚Ç]½¹ÂïñwÜ¯]àƒÇì[žkZ®¾^Äx•á+'r]g,1zƒ{å»Ù‡*t½À^/î0êáGAˆOY~£€Ý0Ý1þF•Þã¢[72ûãëñi"x\x†æ’[z‰ ß½$÷îÚ­ûÓSóþíûw{iªÏ?¾ÿNýýÓûïkwðÃé7ðÔªÝä_=³jª¾~û½¼‘EUc6ÅÕ;Q®z¼©áŒá€‡Ôì¢û†/¤a‚CW`Iß?Çá¬‡£Îla•%>½]ÏqšŒéij›çhÀ}ÀxÀ]K‘‚Rj`Ü–¢hº?¾ö|\	p³ 'zHdzó4>A‡Íþûý_~~¯Såpv­E7ršƒ¹_«¶ëU@—–²2úµQY™
õZÊ¬’N–Uk)~žTCZŒ{Ü#ÐØ,anÁ(T½nAœg¥‡ÊŒçk¢2³ÙjÛm©*:‡¹\V%oQÝ)YUc¬&/Õ\€$Š§Ë:˜	\ˆÜ…
ªpVšâÀÔóA[‚§šÙÖJ´™€ÍËÖmi‘™p¬ñµ²éŒºègmv)Úm™\U1&/çCÜ7Ó)vÌÞõ z|÷ááÆYu¢±(£%5hÖ]æ”ÆI³­áIÅ×)¿Ê$àá9QÇƒËž‘½Œs‚–Äá1Ú‚YGÔ3scìÈ‹U*(Ké>~Ó›Y±U­]Ë]`Æv9Q«ÃÌ Š·d‚³w¼E
^*˜Iõ’šÊÜb&Øb×B4¦Õ›À—EB›§,ãD”IªˆÛã‚Ñ~#ò‘ƒ¬u€Ã-¨v<ÜÚëdM5sµyD0Éºº-é†RMrº³ÅËSÖdÚQØSËàÇÒl‘+Q=«= `C÷Bô1[” ¬*.pˆ%Êb+ÔžJâbÞ}Eh&•ši39è¡¥¨!f-šT¾“
uK’œÕæe ÖÊQgÍéê1éË‡…¯C©ÅYÕ,?0TµøtX>
vAÑ¨1TŽ¨ZÃõYB@eŽ¡^!‰Ä-‘ç ÜvÑ€žÉ°°˜_ƒ»¦*Æ²…Y‰’ªÞòšG°Æ‡J[ÏgíŠ9ô™Úm‚È¤š‰09’¦j±4\ÜRÍix3N]…±â´Ú¼@
& PY &¯–›+¥T‹úaÏ*c¢¦‡YZ¬ ):uf:}*•>s‰ãPG¬Šd@(× êÉ7&¾¬u
O˜•s©ÌD_Å®LW0A'íz˜ælf,ðBlõk*
¹Âwó‚vÈY	Äz`Z“#p)o5
#˜ïÜo¢XQ~oETZsî&ÅþÎŒM¤}]È;ÙPnË‹@irfÖ[+“D¯å5C!È4ïÈZ(Ö•›êWž€·˜‘¥`M¦•‡T×U¦'UX*Ö¨"§èXÊ ¬#CƒI—÷ü›¦œ~éqNÄªRñÈc8Št$y7õé6ôÎÉ–¡L%.[GòMŠ*Fý–’L% ÛDÔ»’çáM£I¯F>HÃ„jNÏÚ¨Ñ0`˜= bs÷²£¶SX›
™h»ÑäúgOP@;<FA+¢‘¶ÛqÊt1s†Áe]mºOIIéðÂb`Ú¥c7)0óèªmÆ£TÐý¬,æYÑ·ë±ØQÓbä<Jðá<M>Î$WÍF§7+× w±¦w]¹/		ÈìA“ivE©ÎPDV“'}O={›!ÏÚƒu¥SFk1ƒðY»è‚lÆ´Ë²¾L0Û7gm¥¸=Av…|ºãÞ+ìœßT¹ÍwÉ¹oÙ©MHÜ*¦ìÙ<ŒÐZ¤ãÌYÐBenn*ùê2mÈUQM7þxªˆ'
äÿ¦‡ÉY D‡yŸG!¼Â-Ü¬/¨eêò²„Öiæ×r3k"¢Žd$³+B¾³F¥ Î@°9ß#Äl·›¸*f!l_æZ|•Œe…‰Ó25Vy§³r<Ì§»è¶°¾Ê.O¨¸}È:âë
3ã]
[q@cÅœî$"ëó ÛÌ·¹Ç>±¿Iªñ6³;oŽ[´F‘´I˜õg3Þ¾<“D“'f«Fé}%ŠÆ-•—ÂÜPÏ7Hühâ·YiòMßÀkj‡­¹ FLuK÷ee*h7cc¨ò¼\K°¿išNÖ8§3>,›$Àuú}zÓgeQ¡ÞûTk–pé›Gò~2³–zN<™7¤QÍiä­"åÔ¡©gn_æèÀ…bÛK×™Óþ8åL«qh:TÈV9‘Ÿ`²×ÅmÃŸxš3?Ê¡+ª^KTr#‡.G3O^÷ÞÛ¬Zû°ª[¢QÓ Ë[½¨we6ÿ¬Ö‡6Ý,û‘é1Ø²×ŒRÞÍJE˜·ž¹CªµãÊ˜Gµ	0ðŸÆ²ëÀðRYO³¦S´Óoòßö`1á ˆ3“·k:îìxô±ûÓœ;ý¯ÓÜ™ü÷¡fÝ;.0¥C²²…™W…îÈ.AgÖ¹Èã$'ô.²*2¬h€¤49³ÛÁ€(’„ªj`îE¸CÂèœöé€»®*ºë2ãP«fÖäºtd€˜3=a n%Ö’Š‚ÛéìrQ	3‰Yã©8"¤An1ä	y^ætý–ÜaZŠE…	«ËÈ ”ˆ \™¸\ò„c%lÝcÃ¸Ñ%ŽÑA+ÑF|‚Õ›ÞzÞá«ìlº„YÁsßÅÛÌnÉ;ð¶ˆ 3†^õÉ¼©ˆ- Ó¨ªÂ<bBXDþ#v¶AíŒùãVMô^àÒx/O™ŠÛ¼[ÓZXuîèË6X:i\Ë-mÒs¦¸éútyá?=PçàlÄµêµ<gÒ‰ÂÌd—¬µ¨k¢–Üã‰¹‘4`¾˜ÞÂ†	`­Y…‰Áº×£q`Ëœ¦;`vqP Tå
ZÃŒ¥ª•"dƒgÍi™ÿF¹Rzî»ÅÿêšnÕÆªâu%œm%Ã¦º‘¼:1Ž 7h87¯±æh½^Z ÆÇI+øgQ”ãÊtVòj;ýô™µkHÀ;§¹õ”2T#‘‘% 1ûTôiÞÄÍÕ9_ZÄ¿š33N‘^«ôÍ†Z¼eèãnŠ1Ð@Îiû° “V?Cî(àj•ƒCdÀKH§^0'ü(yíœ²m¿5‘ â(>Á 4Yö‰!EF0MáæàòcòH&5:‹0WJÝT¤ßïòŒ„mä
f¢Ùr•DçHkDïK:°Â•Õ€Û·ò>9nÖý= §ªb]ž>´$TÛ¦bÖ—¤}·VùU„ŽelÃ¾:ŸQÀ.ïÅõœ6Æü¸Ë•ìªÛryß1ÛR›>LB$0å¨ÕÆòe~n‘E¦Ya6â†lÅÔƒ€ÚmêÙA©2SfæZ….dºsß¥Ö ÀbêA²œ÷zŒbÏéÕ`;P¡kÞ}ë&l1»nEÜz„µXŒµ‰á»¢h>‰²Åª¡9TnŠ¼½KÛ“\Ø\‡VE?¯^ÜakfÔ°¦A+rš;Z}hVb$hEùJ LàÛ9wujºŽ·Å¯¥çÜ)ýŠ{»F)ï:4vÉŽwÌ0ÄX#¬Ÿ×ÊY#¶JŠšÓEàßÁæi2zSu•¡á¤°¶:jÚ[dÌœZ#]œ×Ê>­(v,®i©¤2˜IFL·î74o1ç¦)<îûx:Œh¬!–[jVŽ&3öø¨3e`²,˜N;Ÿg«ÿ³—àwkZùË…;­š˜ïcC•Þ²)èþÞŒ âéñ52ð}&õœq\…¬m3Wÿ8ûcòá"øŽYA'÷×b¨&6:G»ÍäBhp‹6W>;ÏÊ5xŸSÑž®º&6f^â¾oh2.H7²csÈ"û´Cú}E:§Ìg ßˆ¼ÔÛK`š¶¯ŒdÕ±NÁ¤yÔ™ý¶iùxÓ«ÈÒÅM¾iÄt.–Í«Ç`5¬ÚžvÒ3¬Gº{rs‘¡ãõaY“ÊeÌ,Â6:¸Ì&îC¿@b¤¬50 ‚ˆÉ¨¥Å‡­ìŒS7)S)TÚõô0Ómh×2å
‰67‚¤0á­¬Z¯Ì‰Œæ†ÓfÝrk:ÎÅbÈh7¢étÞ&9H[QÛÒ6o§^j×»Ìi­¤JÐ¨ÞdzÐ#°ÊÔ³!YäbmÞ!53YøÇ}ãWÞ%Rua¤“pøÐ5	Xå¢=eìcC#OéX6Ãýjë"ïŒ
M±†Œñ¦°R€.kM·Ít"šÏ\Êï•d‡$1õ›w²¡7Íy²}@<›µ*C#I§¨Ÿ7é¬öøÈí¨j±ç5jã2m\¦§6à~h¶I&°}ÙcÖÂfÆÜYÈ¬ÈûCqäF™3˜†àµjNH
ËùQ™N &*×ÃP¨’¨¢9APÔCm+š®p$½+Å™ß¾ÆtÈ±y	1¬ðK'([¬A†™‚QoºµS¼wò®ú Ò‡ºnª~E‰H-ÌIQg²üwlZö*YÃÂZP]^nÁ*TÕ”¡‘ÃÆ’`N¬Õê:§4¦ËšŠ¾,e¡IÊÊï­Ä
²„Ü«q9¤&ëƒÉËèótÌè›u#ZÒ&åL)–sõÚ9Ñ,Í;B·Ñ„iŽí`goñÒ—u^ÏÚ·¯/S¤NmÛ¬D‚}­¸ÊªË³œ•±rûÑˆþ•b½dé®¾)F’BÌÑQÍR	Ž+™ÒÆ´Í²U:3Æ«`õxè™>|ò†°Y±]ÊôA†ýèÂ“)c7ïèuHIÄŒ?Ü(V—Y7Tn=ñNß®sÒgíÂ*Àq«qN	w.xnDÚ7“^QÛÎÐè¥Ã›Õª¹FVhAff²Ú(Ü6BËåa½ÄZÓIÉœIUüè¨ÝuØÑ™fÞ]º2ªJ÷f¾­´ÔeÑ[+¤ÓˆÜŠ‚Ì·cîOé@2iO·dÊ%/Ùˆƒ&'„)•8ô|õ\m¦uÅæwð/ð€Æh«…!R{9µ²Ñãù:°¢¯½HÆAÇ—…ëé\îl€Çûì™œAÏ„rú†ï¾Ü#{s…WûèuÁø~5æ\´ÏŽî*ÎË«v=1þ«¾mÔQ¸˜uŽ›DÞˆ©‰o|œÆíÞ«ºr…yú²›¸ÿý…ùîoGDö´†â^îö8ÝCp,¸à Ò*y©Y8ÂÔatÕÿøz…4ê¯ß^É.¹‚h£ß\á{ßÿÞ$G~»_õfò×»'¿Žƒ ¥÷z8°Ècµ¨>ŒI]ˆy¿Ò°V‹^Ÿ¹ˆÖ¹÷ÿ˜d™lR6Ð³³4u
6ð^þÚžpæic|ú¬èSNãwŒ_

`˜x©oÁyZvwÝÉ`»5r°zÎRŒ`uwÐ~	üùoûèÃÖ“O.u´(þj¹Ê»uŸu“ÈW­ì:lp½ÜnŠ—¸Ì”(>üÝßýðóû^ ù¯?|ûýO?,Ïx—ŸÇV4pç®úãÐ÷!™*¹^â~ÖË]ã<ø¡rYÉ€á#BŸ3'Ê6ò£ïÎòúP}<	óG ü„ü>7³a2Ûl`7Š|òd8Œ=
>œŒ¢¢U
F}zÀO¸<»·¯Þì–$|?2LÆ×êX´Nß–mM}Äï°ômî‡þ›+õ¿»}ŸFloÏ\;õÃèÅ¿h]úÍxÅv-lÏ½¨¯WyúÇ×ÿøáýë·Âô2;óÃÌw3é7r=Ë±cÇ‰|ËsS¦“:"ò<a[™åX™ã{¡Œ½LŠ,Æñí.¢®7¢Ù¾ýYvªËèâ—ªQ»«‹¿ö%n7¾¹Ú‚‡ï¨à¶Þþüþ—¿.vŽÔ¢.D‡s¸@„åž²Lä¾Y”Uiüùï?.A vX´Û¶“›W™Hò"ÇÖáËÅßÖ²…Ãï¿˜¤èS˜û5–5´ßŒàÜ2Y7U™ÿ&pß¼äÊB)KQ¦‹Rv[üxõ—o Þ×øn¯Œ$¢€á‰¿“ß,bÑæÉ«ÜTàxlD	÷ì_mª>Q§dX»¢>Á#idº€¥ÖÀœÀß³h—o®öggj\;ÍÛï ì/ïêó"…_ü®èþ÷«ö?ø¡j—U³úÝªûÃýºkÔé}S¼ÅzÙÿ¸ºº½½Ÿæ·¼(|SŽùŠ°¼a	^½¹ÂCñ¼5‰üÐußy½ˆñÂÃWYÁ¸kù7æã5ñg/2Ã×‹û"#pèÓwÀ£ÃõœßHüÂöÂqü*ñÇÕ%ûãë_ aPÆ°Äqq/ñ½Xâë3œº{Õî¾1æÿö§_ÞÝØKsðÎv_>v­ÚMèpÐøÕÃ1«¦êë·ïÕ[üPÞä°Tðq^½SOVÖpâpÜÃyj–Ðç{‹ÓZnâ
ÌïûG4œõpÔÃ™mÕ7‰„OoÝzÛ$xçÃé‡>œ¾†E
«%˜û¦ûãkÏÇG·òÁö¬oúièâˆÛŒ¬Ä0wÙVÑ8ª.ƒÒ–8
¯6ú|Nà=§Â@ÎtîÄìQžÕC‘áC½¾SÁœÃ&'3-`&'c¶}õçw?þé;XBæïyÇ[Äñõ Iñ¤©€ô£#µ‡sô$Î˜îO²O9É!Ok:<cê‘>¤7–¦+Ò¯þüóß?ü×·ïÿ‹¸z‚¸þnø{24‡+¤a÷ü¢E©?(ÕÉÝá•`ç1€à­ýà»/m9®c[ÒŒ"0ÛË–i`F–åeAäÆVä9™+ÜÔìÔ÷¼X&p°“ÚAâYÂ¶/&Ð¿“	>1|ç¸	äzžmš@Và˜ö¾	dEvàŸ`oÆ—eÙŸä>ð%± ¯~ÿ•ïÆX¥ci=˜E:‡¿”}ôÌ6Ù—oi>ƒÇ†½ô4Þ¾ápÂ)ç]pßRÑ:{g‹ðŽæòÆ
ã–Œ‘ÊY|Š€Ž%/ËLÛ‰­ØöãÈ¬ÀòR+5S?±èÚiì€³ÝþóRÌa&"3³Äµ\÷kæ{¼ŸªVz¼Ø‰}eŒtk¹8ÁÖù/%£•vpÒ
Í‰tï:Ø`aþsµÂ@;PbƒñiX	®„à¤?X	®ïû¡©c%¨Ùûäá’½µòÅÆIBÓaš`få<€žÂ8bc—Õ—ÑAþ˜I/0:ƒTò3ÛB÷3òY¨žƒÝµµ‹«aà¹{ÇÔÇq¸£,ñMyf
S€&’ –¤´B_xày;–o[±ÒÐŒ½4Š3?ˆ2é›¦ú¦kGÁEEÍ ¢"SÛ‘µÁoõŸ¨(ômU”{²ŠúîìéJêóñcƒ(bó?†’:Ã¼(©‹’ºWRíiî“³ô°ädÌæÔt:úÊ)¶ãÌ‰=+±Ó4¾Ì‚ÐqlÐ>QjF ±lÏó²ÄŠÀ©
½4ŽÀÉò]ÛfæØÂO¼ç£Á*†ú^&}“w[øÐÜ€øj'¢ÁÏ²øêç÷ï¿ÈÛ…X´²[TÙž¾„|UÊtÑU¯ÆÚîEÒTmkÜÇ“÷œÛŽø†,Qq¥‹¤Èñ'Q¦¯Z¸$¨@Q×ðÀ•Po—‹o÷þ¥tÈ¨aT‹D”‹Ýeß¿·¸±_a÷Æùfñ·wï¿Yüò}÷~ñx»ÁîƒeÝ²¿Y¼¿úéÇŸ~øfñ?KÏŒ^Ý8ŒX6ˆ5sí7*l\ÖmîÇŽÒ#Ðiûiôín rxÚgt/Èn\ï0zÐ½ÃWÖŽNò‘îGPù‚{º×¶;pœ=åßø~d“Ú·5†wÃØ½ß5ü;H™`hú’áÓ;=W×®0Â{µE‘=+¯ŽÂªPtë;íãA(+àþ-jŸõñáä¾ç£¨-ÙÇ‡“{¸ONàhpOˆx'0Do[?=ùÔì¥Ã=ÁåžàqOð¹'0Ÿ›Í}nÌ9¢S ÀœR—».\îSf>2»(|îøÜ)y‡3DÄ?oðÜ÷ÞfÎoé8Ì±;<å0Ñ™ƒç-c‡·jxà.oè.÷†»<	Ë÷xëÑãMŒÇ{H<ÝÃ›–€ùnðdï>#¦LŠH9ÐbÇhÚÊ¼?L×Î|r‚†•säêvŸœ¢}¿ºJóÉ	ÔZ{rµ ŸÀ½gZñ<>ƒ;I””zr<{DÜI¥^á'Ç³g•ûÔ¨ùÉñôShs8èÁ¹!ŸÕãÈ=<Aç=~|ùtOÐœ}ÃýÑ	Ì)"%Ä£Ã™€7x—ýðxÞÃ"ÒG‡3Ï{²6s"I¡px8oá“&ïãÃ‘h„w
ovx“LfÃœÁ+€ÓId˜„ý(;#[]Òlë®2êªÈ“\¶Ó«UŽ¡WKó„ÄkZQ¾Ýø@ÿþ·ßi†¦Žž¦ã?QÃI8vâ‰×ÓpŽvâ µ,ý#'êxòÇN;íîtœéc§iø%ÇNÓpPŽœFúosU‘/[™t°§ûçˆ½èã’Ðh«¬«®Ë'ñÞ(	<µ“käeÞGâ“9ërµe×ygtMßN]ìk™sIé+Ü+–©Úòº|¼#½8BˆXã^zŒÖâà÷+Ü“—šF:^Ë­£yœ«s\}´`È§W9<´•É¦J@gÙ³×Í(;s×>±,GBšR‰R¸qœ¡L³HX‰“xiäÛQìd®iùAæeqhšnl'V$ÌË®ýe×žÚµœG»ö˜‹8.ÑÃ]ûÀ5áÿìÚ[¬>ßÛßµ7MÓvèâ¯§{ÙŸ [îËÝ·÷÷žeÿÍSÇáˆ&zñ}{ÍÊ›'ø'¥[ôd;ÿ¤³–§žwâ(—OŠ…4Ï‹N:ï´QÚ'ÎŠ}êCG7î´óÜÏÓ,\;’pÚy§=vûÄÇ~Úljä=I8é¬™{âZ9í‰{'®0ÿÄ»óO|áIg¶º¢Óîí¤;QÙ§uÒOZŽÎi÷åœ$_Ó®uÚô¾8'­Ä“.åžt[îi×:Iè¸')‹“.å´â½“¦Ð;éŸ¤pOšÀà´Wò$É{ÒTD§‰ÐHWB=lìrçYüÇ3*N=UsNŽäWœvžæ{v$Ûâ´ó4××ÓÜ‹ÓNÓ}	žfbœtš¦X=–—qÒ‰'>Mr,Yã¤O|èšbåX‡Þ‰ãN,ïè½ŒŽÓÎÓ#ù§¨»Jg{œt–öyœûqÊYºÒëi&È	çtcúèqzÈ)gv­Ónì¤õaŸ6óºëq"É	géú$GÓJN9ó¤y<i­Ó^(å„(Kþ¢SN´#Ê,
³ý|þÙ(gÍ	<—›rÎùç]]ßÑ=ž°rÎÙìxúÊ9gŸuçŒËñœ–sÎÖw'g¸|b‚ÀÇ	-/NI7{2Ì¾¬¾$Ã(V¼'oÓ%'æKÉ‰1DÑ)¢Ó-àá‡–‰âÖ€×R[¡m¦ï[Aä9"°Ì0‰-!¤%œÀvLÓŽìPf^(âØNá€Ìv…»™å%És‰1ïß/†.‹®ZUu½èëEßÂ,òrqß?£m{‹Y-Õó3ÿÏZ–©HKœ·»\Š2ß¶ê
È½´»È+¸ÈÿùÿÖÌò»ÿoïJß,Ú|“¢)¶ß,TŽ‚Ïá¡êû—Ë8iÿãêjè_/ØæJÔ²‘¿¥ÉÕáJ8JÍxžï»GÍ8¶ëûÑ(~ž´YpQ[!½—ebEžI÷Xx˜1¬6cXgÚïþŒ™&_üD“É˜ž½ásóM,Óâæ›–Ä‡Ý€–Dùþà‰v®ÇÅ‰ª“¡?þ™’¿d6ðqÅþTCÏ«>ts+ÏR ®+7Ž,'uPqe^ ìT
ÛIl'‹SËVì§Ò1/øÿÙ{³&·lOü½>âÎÃ•Çb)÷¥#î?B–d·æJvJÝíù¿T$2U´H‚MZü0Ÿ}2.à ,Ö"×õm[ª:'wäù“gÚý K§ÈŠ'r„îÐ$@0ÛqTDl¹)"Ö{¶ñ>÷U|!Bû¤§ß!a©äïD–t˜Þ·,9½z}ZérD¦òcSíÅ˜!)‘Q›2ËâfuªÐœ(ƒ€Ô‚»[ec
R%ÀRZnšœö›óÀöpç_æ€õ¾ëï–J:óÁ6vó(¼ÜEhn:$ àÛ©Ë!XPX×?„~ã»H•ö)C]oOwDcÅÆzÙoù½%<cyŸÆÝÔçC}›­ÖsÌ9ýßå³PpŠÙ­ìi‡=Ù®UæÝå »²„{ip;6¶ž<¸ÏÚl’rˆ6êcí&onq;isKí~¤LÚÚÔý?¶™T@Œþ'XfN¨S),’T &ÒÉvC1€;sÁ'™~
™¾›o¶1rqFÈNäš£…>cíF¦c@hP¾ÙÃ2ý)~-JªÇl½©~Œ/Å“T¿/©~Š]{’êw%Õ§j<55ýtup.Ïårsqœ	Â3ƒ°RÖw¹ÄTB—Ú©âš)œ:P™
'ý—N gHS±†›™þr’¸y9éªoV¦à/7C÷—Eá#âÝ’ê¹¯ ZE³·Èó76ÙZ¡Ä(;Î'ÏÝOGÚ<¯T{MÖ-Ï~IË¸y'dœô«6È/ã³Ò\¼²?Oì\Ÿÿ¸_¤öF2Š¯$¹¾™±þßg;s:)>pÒâf13ö|r]„­eh* Ãà£zÊ@4€ ±Ü¶SÂ…/…ºÆ”:Œ¢æ¯G7(Oä ?ŽwÆÞ€àð|.ýB‰èÖ¾S«<h¸16¾4@ûF»Þ/wIŸ½ùýâ·ß¼î2T—#¾­o-ÃIQ¤#/­Õ’î3L,ÍèmBO;›‚bÝ½=d`†ïÄP#3'‹¯­N·)“Úa§Jâ¶[*¶+à.}W¦®k­¯ÊWœŽ²òºg¿¼zåÔ®ì1t'ø¾.
5^}š¥4`ev©ŸÕ~p…®Þ¿ýØÑÝ(u×:'}ù#|JìÎ|ÈÓÿ’ê™Û¨‹—ï¯`çŠîr¼ùýã›_/ßþöë‘¼]ÛrJw†&¦˜1Õê·~rÁ>‘•?§	¸BV”1þ•]ÉÆüò´ÈGvÞ¡zoK”Õ´À9¹æ´P»æ[ÝRw¯ùM5_ó;³]Þó:i[mvWr›©ækYâóÒõ€3¦W¡ŠJ‡rT'SŸB£G(P§ÔW°´˜eÊ¢TùÔc
FÄJ¤™N}™ßj¤-È°6™2"Ó0kª)ö¤@Ý¯÷(qø¥JLÀ¶Ÿ&’Ñº£&…˜¡@}Ï~6§R¡hÿŠ^w B…‡\Ò¥Â|£JÕaÅ|R©ŽP©Õ‡Ÿ¿C|M+è Ç…0îjRÁÁ}5Í'ša¥[õãÎM´§;õdÛW¹‚ÚÙÒ¼ûÞQÁB}áVzO$yM)ëÅ¸­›ÝDà¶Þ­³`›Ö×ÕðÎµ1¸oÿ¤”}JÙòùð^¼O1Î´N%¥ØÁy£dŠœŠ†°ÑÔéj™ b%P§+äkA	ˆ 	…Qcd\cþçËr²v’¼/õš>)¤×M¼*£;¯gjê¾uƒÝƒÝÊÎ¥IÉw
»Ï‚CPM€rã+ßª4­Þ©ŸÜK{;¢@z¶™tì#ä;µ˜%¤ýÓû«€"&ËMín½FZ#g£½¬aíŒÈÅâËæ<”W‘§Ò9¡Ò9]Ã|$ubü]òïÑp^æ‡ëðÒº½$ƒlfmºïßìÑu%&ÌnóTEbn”Þ‘5² ÅÒ¤Nä
°#¨ á’b)‚©L‰ Y¦…a†âŒ3†ÄpXÓ[Á,¥þÑDRÎv2.H[90…ðXúä!Lc]¡¶g°ýBË‚WC“ñq	÷×°Ç€;À¯÷“ƒïîŒÌO	öúÙ¿j‚½À±G©âvðpX’‚Ó ã°$s‡$Œ;
ßcâ `G)§R’LfF’¥JHmS#hJ	V#fV©2eg† æÎ¬°4$œ*ÈpôW2Ä 8q r'œ )xACÉV¼!øù)wÀqÚi²G”ávô×)CËN•¾úµìî/'xkÖæ 1|Ú<µxÃ[Éßc€âjWn'P±Ü•-³Ö	í@‚H&©06u@#¨¨Â‚(Ë”r—"<¥,åJq+áÌö„î!4šÙB`d!È„’×´!<ÙÙ¢0#ÜrŒûF8¡E/#œ ¯'Œp¿¡Úã{1"8ùÃ˜Ð#”k
$#-¤`œ)™	k¶TjÀˆp Ár„Ð0Ê YÖ ~.g´‘èN–Ïol|àSä¶¾¬%Ë¾–IŒÎÎÞVò²ìp•×)q‡Yò-_$kMIšmù1 	BmXH‡ö¶ l½×q1Žy®[ÞLOö†ÞXB€X,áNgµìÝŽ=:okÿðò_Þzæ£³Í:?«¹-«æ1z†Ðñ­hêh‡™¾ñ-Oði%÷=z¬•R+Uí1/Á«­ûm£5ê(ìÍŸÊ÷†¶¼-,[ðpÁ]qóæ½*uÞ2F Í%¾ãèµ²–emÏ¥<ÇËƒ¶ãT¿5ÆSà™;2zè,#©vj6ÇÚ)kRX÷W”Q(Ó(å„$¡˜®­”L§ÜaBS! uæ	ÑÜ#¢¡¶gèNÚeÎ$õ¬Ëœ#C‚‰;Í“}$
ÓÄfjÜa¯ç­à¦G[Ð#‚@z1ÝFÇ»Ð'ÊËéîÐ=ÖF@'õ‹zì'4ñ/	uîÑD­8ÆH¦„QŒ€’dÜ¦+!¬$ÐájÆ©PîŽÖD\BÛ”jºOvh9À$wCÝJêOó|Tœ}¬:*Ói>›I)?Õ¨DC…O¯Rän\ü÷«Ëä@¸Ê³œƒ¯·ä¦zæÊÝ,f_†…MÜ))Ü…3shjyÃúL/nÀçÉK×þBß</§ì.&7äñØ¯Ép2·³L9üw6Vß}SŠI¿ŠžrQ,Üˆü”Ý½ä'£óñÔ¡’t8òÐÑÇ¢ç~f…[âd’Ï5Ž¾Ÿ½Þ³¸É#ãOË·$Ÿ”ÿ*ÛÎ³lè'ì~²\7nßÕt‘º³ž¼¼xû( µiA}Rè­t2A±•N†a$bÈêŸó“eëˆW2{Tá8´Ù÷b§¯#“{÷‡A'³JÝže›½#Ã´rf@ša¥‚†C'Bµ4:…,Åœ
woI§œ+LÉ¤4 «¹•¬Épð$IŸ$é½HÒ`?ˆ/×Z—¤ŒJ!ê¯CŒ)bœQ[%é“E%F–âØm÷.KOïñÐdéñö[¥ßŠád8¿'ñÉa–Z#LaÆ$£)AŠjÁµ#÷+A”PÈf)ÁÚÝ8"%j*­´*ƒ²©Žáei)(ïß·nrî^þY^>Í’ðµÍÔb4O~s×¼#uÂdÙÈªÔîš'c5ñwV)†Õuæëã*ãèÏ|o×£<-…ÀR,T&‹ó¤’Ë–<}Qû­“‚ÙpbÍÙŽt,Vâ»`N–¹«¶’ô¥L6u€‹*›¨2gjòmÕªãõéC“Êëdáåè’ú1"´ë¦Ð(ˆ8–t'$‚ˆë”…Yô«OáIð#x8"ñî	n$ËÅŠç¬ñT»A1‰µ­¾uyS5{2qV~Ùƒräwà%©ó™õæã" U]´AüqÆû>Æ¨ÓÉijX…ç;´!¹û…a&»þ–…/¦ƒÍÝÐ‡ïéyqs¬oæÜkÄ÷·¡Í(”j”R‚ˆzŒ; Ä,H²X.1ä˜qC9ÕN¨r†©áÔhÌj€R¥’”çBcîÿaý}zt·ÞH°	q-¯'Þ'!?[*Ô‰žå>¥ñHÍýÞl@¼aÙþÀNTêp@¢GCÿ+oXXæ\¯Ã¶óäeÄyI¹
q¸J«ÉJO./ß%ŸÑ™aŸñóäã»ËçKC]ý?_›6ÖBÏ“Ëïß¾ó<ùýœyö'N˜ÎPwÚây	ë*(·»¨£f¦8ßwà(×A¿o¹p|>¡°7’x2·lîGÃébTNüÖùimú/{ÿd¿%FÍUªŠÓ&‹¿-THCQ!å˜âmW„“[¾IIQˆ©¿\Ô'`x0„o‘(þ¶qTÙècÊª–â€R-çÌî¼ÃžÌc‹ë|/[q_8ˆÛâŠH9²Ížfe›/Ä³æŸìÅ×o”áI`¶¸z®exÒ˜:ëÙ;ïwRD®^]¡^ëµÓ¸×—û°ß{EÜëkéÕU¯ÓÛëèu/ö:¶½VOö;í²Oº¬GÞ+|o=ÅÖ_4EÖØ©1é×ôqøg—/4Ÿá[àùÚeMi¸Ãxí²¶EóÉ®¨cáÒ_øÚoó…®á6Wè1Üá
Þ±-¾^C¡'x›«__ý¦x+îpŠ·m®P$²ÍÕkZ<”íÏóÐbJ÷m»½%«¬·;y	ÕbÕã¢‹b6ê ðï›í^ûŸæ£¡þ6(­-¤ÓOu´æM”nýÛ(ŠÑ\M5+WÃ¸?ñL!AT6eDfX	b˜” ÕÄXD×:ƒ©£ DJ$Â!™YÀeS. f“ð?æÞË€—gÍvåik¡µ÷×ÚÍmüXrkãàP}H»¹µ¥D[_ $Ä«LìñäÆÜßõJö{ÿk”Þð*Q/Æï»fÇ‰J}4°õ›î7HÜoç°èÇ&{±ÑV¶½@º[Ì¡ôª…Uz$eeŽÎ‰}x&- ùö á9HÂ3k%2@CÂÀ(MS¬RŠ-H¥+Ü ¬±Ã-€ ©H–(|pIœ1ê	ƒ³@,);OáD8,X	§‚‡äq:ŸÞÁ#à!‡à(xø¸íáÇ8Öžþ×-—q'Å6ÑæÜï‡±ç1Üáj‡‘èÜ4„ûä¸ôûôùŽ^¼îÍž®NÊ&·ì½˜=	†™âÄ šr”i¡¶"(¤1¦0™P@c-ÂTsjeŠ‰œQeüöR o0ïS2ôô%ÁvQL<ÚªC_!‡õtèº]	ÚÊ'ëhÿ’ƒ@’È’ƒÛkº4Ö§/”²^ú¯™ýVL^m+¸Q‰Ã}—gév²|7KÀ»Jl2á„0Pâ0eRjB¬Ð)£H*d`ŒcÀ€DÂ:©H b eYS8É“¼%	ád `û2Á¸Ê*ÝW>¢¤ xÈRð¤¥@ž¤à-)Øß½¼ú2SÓ©w°é£ÂsxN—K‡ýÊ…?­"3Æ0+C˜àP0ƒ´È¸ŸhÌ4‚s©Ý·p·0VXéè›²:½L–ZÇSúÏ“òÚ*…—¿…Š2TïåÅÛfq÷ñÆÎ¬»¾ËìG¥øH¾ÜõM²üL£ìØ‡5úð@/üæy’:†tT&QÒ3«æö¹ìfßÊÈFcGvn“L†_ËAçÉo³äE1O
'-]Óe2‰¡)sM”y–”®%žZ&°ç×çgª¢-ÜîVb+©â/Ï“[Ã˜[×z™Wc+µÏöä˜ü±ÈÏª!V?WEñÅ”ËT.XQ¶}žüË¡vZ’áÜ•Nó¢.{ª2lœ¹nfIþeÒÐÔr¿8Ùì‡é&a’ô[â·|ñkíòsÖùlæ–|ôíÌÑ;®ÅÄC?´Y…eÞ¨ÏnžµÔåÔˆýœÜ'é¿
Ÿ0Äõ–d‹‰®ÂQÝÌÝ'–\+“%LñŸ@¹øÊ÷»ÂÐšIñƒOôáa‹?ô…ò©Fl}5ŠÄ5Ÿñsßl½ZuÒÊi»—±ÐeIÙï¢ «SºéÑ·âFzVî{‘ëOv¾êÈMÞm¯Ÿ†[Ï[fÏ}çþÚÉçá,Ÿ”ðë³C}þ;;{÷úêâÃ›w¿½|ý_¹-†fÝ^‘û”*WÿúðòââÍ‡«‹———ÿzý_îö˜ß¼˜ç/ª=Ü"ùåÃoÿ¸ØP”[»Eð÷ß.?^nüœm'03¹-&ÿ9_m`yÛ¯©•ŸÞ¼¤¯¾;ÐÜ*ÕÀå¿¹nÆ§C‘…ƒ‘Ú¯R	 ÃDÊ)eDàZfLÊ1r÷‚a"¡’nÇËºËm+Š4$-æjÿåý;(oÞ`ÉO—¯,<8Óc¡!¤€EÆÉê±údŸÕÔ
)*±Øõ"Qû
»ÀÌŠ´»Ó=YÜÕdˆ¡ ¦é- ¿ZG@Ñ5Ð´³Ñ­Òrã›ÔØëåjÝÝû/Ýrb¿ÆÏ^}14¿Øy>ÿíoïòÉu'q1Ÿuë[ÌO)¢å	e}Æ|šwGt\1ÚÁª³í–÷1ýú6˜ŽNéC­ZG€zc°”&…0Õœ‰4H9#–¥ÈðŒ`£S© 0+S °0³Fkë~¥MŸ@ý¨õO þþA½Øõ\ÐÃ Þýß¶éWê–_±qG‹õáß'Xï`½ˆ´øžÖ žßw˜@Ÿðý6¾g]1wQ˜èÎýœ!¦Œ”ý^°½asµ—Gz’ûÿtãz°þÆQªÇR¥à>!“ÑTb¦pÊÄXËqfG ¥)b©Hû’ ¥)•)iŠB¨Þœ¿yå «ƒ7¿~¼pxx¢oÞY&“ö×ü|Ñò*½BÜîÌËÎ*©(Öè~è+¨$m–,Ûò7üL;Ùüé?‹ÍŠú\K¶Ê7ívÁxìX}3K•ÁšÙb299€¹vr‘ž»#÷bìDýÃ„/Öã ¢apŽiÑP. ‚â°™"¹Ë ÐVEj‰I'ž©F4pgnPž¶óê”½]¿ýx§HFù12 ¨šÙ›é±8Fb½°C›>øñýòÛQÂ¯úD:¯æîÒtn‚m…åˆ“pbêË®—3$Û=î4¿{=¯¾þ÷²ûÆ£Aá~8+ŸAµï½Ú"w?ƒ¤P	è}LGs
uw1$†fL@-ÕT•?Ì$WFB‹P
¹?6ÜÏ¿½rÓª¾ú¹SÙN“_M/î6®¸JCEeøpñÞ]/î-uú¼º—Î.Ý/Ï“äí¼Ô&Ëê0ÓÅhäI}Òý*k5*c§î[±=<•/QÛeJÜ½L	9ì+éNÒ Žy=o>èL›¿wºt@"¯Ô_¼;Ðwz«N§š‘‘í©#6OúèÛÈÈª-{ci»g|Â‡nÙ>—ÌpPXíë)Òi6¸ÉóOý-¼è|uYºí)ã1¯üââsð#“òGÃ ‘šÀð;ˆ® 
qdHŠ8ä©µÄ×ÈÉ¨VÈs¤R$öµ¼ÝåÃ}«ÒZ5á¸ñz›üÝÍÔß×vâë†x«h¹É…·µ•>ˆ>»²ñAÞüô³tÚ}mÅÚ¹¼‰¼I¼éæºåŽÎm×ÊÊì‘è¨V>l§ÔIþiiyöC8_­ZM.rŸ‰z¢­ƒ¶ÓÜgžž¹Û¦ìú¿©Mìü”¾•;øs=[I:+!–cÂkÎ•îGLÑTO’wd¶.Q ¦²~‘ºŸPÒ^{h˜ƒòk´~v¸——ï’ÇãyÙ{AŽ6ÖAaì=¼?Öv»SÔ-Üg˜E-²ï£"ùR­{Ûˆî"aäAîðÔ{Õú[ÜŽJjN²“åîácÒl8hKÁ1ÍÍXM¶û©7Ú!”¶ÓÀµªÏáF[t>2¾:5Þ=Ç”ÉaªŒB–„#(20ePb©yÆ…‘Ôøôf`÷/„€BjŠÂ¥ r©Å0-Ha9û¤¶UX‚þÔ%õëLERU¶X™rÖ¿ô*Hâ©Ý/ô‹ªÙ´¿3‰»|=Só|<Ô/ö7üp4ñÊ —õhâKÈÃ×‰R¯ßÔu$Q½|³×.»ÒœínP«AèŠ¹^»Á· ÝÔ«•¼øh¿Îƒän/«ÑÑ«s´üÅTÈò·6æCòïî ¾Ûdð­Œá(y|­õUœ€t›á—W¯®Ü zòáÐã|1™Ç±°£ádñ5†å›ú#üìn^ò´È½ÃNSþn?vÃ/pŽW?Ûî}««~Ò|QîR¬GËÑyˆEêÇ_ðL"ÌoIŒCŒÚ€KÆÌ])¢TÊLK«0æ†ù0E­Q8…B¤e”QLÖ&Æ«iÇIñO±úË4Ÿ»õ%²GV}*‹sV?._ƒJ‘¾QaÏª_ú¥”XÅý	õÕ¾·ˆs)öÅ9:(Î±¾¦S]œC!ë^çœÐ q^kPž«Aè‰z4r¼·þÜoYŽàóHo—Êoc3æƒâóøë£ñ^­z½—NÛ Ãmtþ½ã…G)Ë+Á18pôjˆh#Ìkq ¸E˜'«7D;¯ß×çþûÚKT¾¡×þ
ù]–úµšO«¢‰GµrnŽ{È†Úô‹õö ˆÖ6¯¨L, ¥J¦ “pÊf"S©6I…á¦*dü­¨ Oûƒã0(%L7‰©¼z—¼}õ:ùi8ñÝ-o—ˆO«×»Ý¹¶çÃ±º>Ïf›$ËMhòO]>@îxsøŸˆÃÚ<ã;E}-Üz„ô¶˜nÓy9¬AµÍøÆœœæÑ²‘XÏTw3V²¼­Û¯Ðá³ß.ÞüúêÝìŒ&:ÈÔRt©+ê Sw°ÓA¦ÃCíÃ[nw›)¿é^kk/$¨®¹Ý#œr
ïÒ22K7Åî’Ð;-«[–¾­ôÿÖ¸¶:ÝÆÖÿàãåLÆéú´ŒœJÈ3 §V@å´z‘jEqFEF`šQ€ˆ„™¡”ñÔ:q,¸±©û¦Úˆ¦R$ß¯æ`O
¯ÓÜíÔJFˆ‘m)L´.…) …’Š§ï1HäDr˜öH]—*aÊRƒ@îÏ¨¤5ˆç¾¼èˆ1nÙÝ¼§Ý¯ûStª™…G®âÛHô¨Ð—SÊœö½¿‡7æ<í+ÀÁ9&}Ã¯!ÕÅ†X˜’Ä¤Ô	sŽÚR«±’2ˆ˜B0“¸LÀK-Î4…¦1üúõà§EQ†âú€Ù*¨b¶˜‰›kâ&[x¸ÔÞ¨Qæ£*Vá»5;l³Ä¯–ËÇO¨ƒýLíÌï€÷+žÍ‡Úû¼%sU|ªV]-Ã¸ÏÜ·0ñÑ¥>Ôº
ÅÂÇæþ{a}Üî¢(}ëÖQƒ/>ê{l‹Âïfº81Ø˜ªëÅÌ¡üÅê4˜ø½„$Û&~ÑêÉv](ÐNi2ÆÊŒ„tÁ¡¯UÖ.ÊAª#x?¨—U<ü›MÔó‹×ULþ	ãLûX¨Æ,j¬ÌóåhZåOÓqX®•íÝrs!R²¹ÙÓFä$\RÙÎ¶Œ»4:¤š£p Ö	*kNR½þé—Wð*´ÊjüCý×ñÅÈé½Ýïïß!/JÏq Z<ÄMƒ
«O‹ñ°ÐÛ	V/ýî¿ŸÚ]‘/&ÃyMƒLöë÷ãÓP]pÛy5ÄQ¹/¶-SÐ²ÆŽoeúm~“OBÛéz…©¾˜ÕzŸ›¥$k}K1ÃÙê%e)‹÷JÌn~i¢šª¨ëo1M®ÇjC·H¹W­½h>Üß&l­bºZ›ÂbCyÜ»PµeãO7ùØºÉÞ¶Õ)ÄW•‚eFh“B
1W)¥y
1Å:•:ÍD¦‘ÅN<£T+”fˆ*Õäör’,èù$8è¬Ò½TÅËª@ÿ7?ýÄÍßmQ>kM–}8ÎãÎƒ½©I=qŽ#;›ªñÕr×Ë¾¬œ¶“Ž¦6¤e8I™FèLÍ“Q~=œ<´|8°
kIU^wË°å¹"dgüÜÎá}‚··o	¥ÇÀÛÍvÜ6ÐÝ´|²†ïü†ÁÖ•˜(åbá¶,€ézf§dwhÝ]«²"w]¼|nzEÎ·¬Y ÝÚ}?à„³gvkÉKÞ¿6_LšiACM¼=ÐËx:œ\÷Ç,`íEf!©V©…% S‰¬Ã(PNiA&	<óÙ9…$u[AX–q awâ”2!ÞÛ‹d¼Í‡Z¹¿¬rá)OÒòÎV.JòÌ›ß“÷kî÷Ã¼-nžç£€Î¦³¡k8úæýi½­ïÝYPÌ™Çb…}±Úèƒ/vBRI°¨ûÍøa‰üf8ÞÛU­8E­ª!ÊC4¨ŽOäx{ùêîŸëúaŒó<þµñHŒQ£ýF>ü9·4&î›ší/îOïE¹£R.?Ÿ#nÚ‰Ãoè™÷Íâ¤õ9ø¿©«óÕ»uiÊ	–ÀÝºå’hj´JM-Ï2Â-×R!i‰2†Bj-à˜kË(@Z0DnÝK5š;ýìÕ¿ü‰ý`‹©î6y¹pÛd¾|êHÞ[}£&Ãbœ<»|õáåû’Aò¿Ôg•¼OGÖcþ’®Cy,ßCJ¶á›_)›u­7è¬iD?,Îaõš²Ê€•©±¿Á}Ëeg»ü^^—pz§¾9ÅõÙåËËwÏ“?¿J¼V÷C¢¶XÎÆ«.‹sŸÐÅuXÍ0uV›Þ=¿wü,»páŒó;Õq}±<®-~Õý<¤»—(:lA˜Û~„BT—ÄWgï’µïhPÿ 42ñË];|¬³¾ô“"ó>:÷‹UZÇŸ'ÏÜQ9¯Fv^Žìo>Ý_>éˆÿ÷ay‹5ßÜ-Íÿmšÿv}Ôµ³¹Æ‹÷Aö‡»Å~kF¦ª…×Ch“Æ¾™å‡VÔ2vÞêÓ}ý VOË÷'ÇÍ¬%+‰$ÄÒPª3–’”dÐÔÉ¯ŒB¹°T`F5ÎœXsTH˜:!GäØ«êqÞ[
·åu¼-S75õhïoD}B®úý ÝÊæŒ ‡¾òûÇèé¿ÅkœÄ¦ð:|Ï–sºk¼lþ$×øòL}Ï·ù‰eñí‹áõb¶«~ñRì\¬·&2!¯¶'PcÅ±Âý‹!ï¾%±M¹Éd–²ÌÁLKUf@Š•uÿ&6Mµ»É€ä¬)ÙÚ{]zWÙ¯S_¶ JGVå)k1$­V¡ÒXfÍmœŸùN-ð0ìlX8e¡¨Táš¨´=ùÒf˜evæÅËšÃ}ý:÷.ág^âX·Šßô—äiYa`ù¨¶¾óÎÏž‹é4ŸyéåÅÛâo‰S®}öëóäâ·Ë·¿—ZÈfBw¹¶?Ü•8ûô)÷¢cÙ{“ç¹¤Ø(¨ù†•?¢˜áƒJ†Äv:_& “u×s&ÂèjË‘Ê“»Lv{§`^ÏÞ­
ŸÐýàÄßf0RqŸˆ‹7õ´•!X·íRl¸}Ú	kjlø!ºF?œ¨Ÿ&YúLq„4á>/0K € `Lª¤VJ)âÀ:]ƒ,, ™>k0ãŒ%¸EF*Ëš2y<I“G#M$ß“&äð«”{®ÆL"‚·¤‰¬…AÅI“û÷Æˆ“'=Õ£É“X‡ãº<	zï>­`éxbù«–·›fj'ƒBMœ®•Oæ½3ÔûŒWË=`±:·²N¡DhAÌ©5ŒK™	JýkŒáLe@¨4…ÆýpÌ¤†ª-ÅCréæU	Œw˜&C_|ÏOµpr!+Ç”ù’zît¯'•ÝåÜÝøÉ{5ŸÛ¢í-¦­ý$¸ýçÉGGtözé§çÅÔËBÛ²¦Ý«|6õÕç\û«Eß6²åþIfn!ùFzvþ|õš3Ñ£…O+]ÆµÌØQ3“¼½ü-yçîÞIŸ/ÿðêÍóä—™µŸJÑôêÛl8r×çÙF$ºF}Ãõœ¿¨b3«²vƒ‹élx}ã–`îeäóÄ­¤
ÑqÍž9Igó™=O¾Ùyâç'fôÍGY×ÏDÛòEÈ7íSžŒËÖ^—UZÜœlú¼ß8O”:+k&úõ-ªß8FûU[ÿæ5OFöz˜Vî»XÀMx8wPÀÎçUåÈñ	£{œðýòåËùuž_l)€ËïìE	œdyáõG¿¨m–Jæón´á¥Ib¶%1‚‚ò­Ç&÷DçsÓöÝà‹²‹4Q>²¼×ÍS>Ú5º‹«Ÿkäö ºŠª¸ˆ¶î{ö·‘î)Õ&‹ê„i(aJ8	%üJø-0ujC	[ëžÕ	‡Á„¡ë“ÎB	‹PÂEèé`ÂÐ•Ô7Á„ãPÊ<”pÜyèRê"ôÃÑ‹PÂÐïA‡~&tMè.ÚQ(aè)·¡›hC·Æ¶ê6uÂÐÉB?n'ãC)ÿ%]Ÿ,ôºÈÁ”¡íºµ–d0t}®CÏÏuèWsº7¡Ës|Ü„É›Ð#9ý´‡¡[3½†¡2qø)”0tk†¡w@»}£FøGèñù©>…ÞŸBï€O¡ù)ôóú´ÌCù§E¨@þ¼˜_‚›½‚F¡Û3
ýhGöÏPÊÐ/bz4F¡çwºäãÐ1ŽC±Ò8ôTŽ'ƒqèu>½
Æ¡WÁ8t)'¡'hz‚&&tíõ•ë„¡_ø$tÅ'¡+>	½0&Ep“¡_w®C	C/–<tk¦j:ÖiKâ/¡Ä¡{9=Â³ÐÙÏB'4ÝÊY(r™….O¡Bo¢"ôt¡§VtŠÐ/·žMè½ZqzµãPLR_éE0aèY+þJze¡·Aú)¡ßC*Á‹Ðgz$ç¡'mzÒæ¡{Œ>ç¡;3Ý™y¨Ð™ÝšEèB.B!åçÐoás:ï/¡—À—`ãÍ—ÐQ~½ü¾©i åŸ¡Óù³ûKôyo&´_ç3•æ£nåzÅ1òOiÁÔ…»šßyEèóˆÐÿEÝw£‘ÔCÁË¿X‚30XOåøpßÒçñÀ‡5ï=~—Mvëµ®êéd…I•Ð†r0ãÌbŒ”TDCE¹äÆˆÔH˜@µ¤ˆI›™L™4µRš¬íùûŸÃÙ|¡FÉ{¥o†›|ô“,ŸT?/3®~ã3Øóª~ñ?ßQ3Ûõa“­UK–¹‘Ë‡ðIõê[=ˆP¬Z¯FâŸ{ÏÊ×ób1œ[ÿë:órŒÃ?+æEÜ>\æÞ1³¡ßŒ2¡ãØH[fÇÙŠA^æ»ñ>[Ö¿5»&=§2ã¡©ŸíŽiwM¼#Ù¡ —|2ú¶|€Ÿ•¹yfU](¿×3U½v/Íüpóìlk½î,ŒñóØÏëÅÎor÷âP¸íîÅ!“«ÔÛÌ#wâa0eÒ—ŸØ<2cAiwLc}xƒêSŠöú*ëØßr¨Ê	ì„î^Í?ö©™
.6ˆöïìtý©y5¨ö‡æ†Kï`ëîkxm§£üÛÅ§ë˜”-j:};ÉrÇšOfÕËÅhq=œ„3^ûtiq}•,î¿1º¹ÎŠXúK;s+>®iþÅÎ~›áNææ£…?öÿýþ2œÍ_!—ß&:œãóµY€ÏÃ¯ÍSw­,¦1Õ:¢­ïãÖ>­VƒÊˆ7¶~'Y¤:“ŸzÑèv[nËÌ‰Î–_—Y§š=tS\ÌÛ¸ÏôæzömUEµdÈKŽž<>Gþåå»+èþ	ÌkuIØ=ã¬-zÏø“3’ýÏÿ¸|s<=>]ï®Ëðò¹ÿ9è b.Öë*id4[÷Í6w°O™X¶Ñ¼:u<”þÏ±
v[÷ÕŽ+ë@bó?Eeœ«fÝ›%úS;ÈCK}Ìâ
?£¸ûªÆÐã²šgS“Z°Æðñí‡‹WWà<øC|,‰¯+æÂj•Ö»EíôŸÁÄS=ìûQI
[~[eÐî¦¨ÒR7“9å©å·~6h!*½í[~¿Ü¢Òlå>‚©¾“ï{ï“ï{Kå¬t¥é§M^´C¥Ì}Œ<Ýî»9Ý¶O±i^,Aõ~šë½´Ø•‰beš8˜²Nò¢Tmò,ó“06S‹Ñ¡×l“H.·º‹±mcjÏ‹ÊÆ³?¯ ®åCÆ¹Íñb™f1ˆs®æe>®k‡‹é,ˆgQ¸Sd"×²Ò²J®ýª¼Y0rY*Í1¤«¥Ž–—ý §[Ï;VAçq›ã…»»/Ë?nTñ³Òvþrb.fî³›Í¿=ðEÄ´YÛ|˜Ì‘›ùqüýú×j®Fùõ¹»{pÇí7¯è9úBGƒê/UnC†îBðp´ßl¾Ú‰^¶×·…ñ¨?§)†×¯e·a•ÂñŸ¿øÌ}—Uý¤:÷Q/£—[‰¼Ujàµ©Vª!P')çX>`|wúnWÉ·ºh½À+Íò=ƒƒŠ~¸Ý„ž*Í¿†µZí[í×ÌÎÜçQ»vŽ|Ír×sñižOïãU‹¡Ò (–"aaª°À"d‘d© dO5V›¤”AÀ‰&X ¦ÔÿØyÏñ!ùÄú:_þU«ùÑ+6‰Ùú'þy§Ê+à”|îáÉ|èÆâ·|¦2{R{/Pgë¨ûR´Uf¼õ¥Jv2_ºÝG¾ôøú¡ˆ"Lygb€Cgûžß‹î)OÀéŽ0=’Ï,7ãÍgÿ%F¼ÕLŒŽ0Õo).í<íà¡9Ù~Õú÷`¾w«ý;„1¶±ßí×yý0ŽzbÝÕ«bŒ¿»3nf1FœßçEÔÔüÓØç1dQ†~å®Šq•þ0‚íŽLõG[âœEÝ|à(Cµñ›Šãvçz˜GÄû˜ì½z<ð¦Å˜ÁõµØÇ®Ü¼ÇÊÅ¾‡?2‹ºÓÒtìÂs£ü1æ"ªs¼úý÷—?½½‚¡OGuÞrz¿ÿî¾®½T3QÌêÄÄñ£ÐÂ<Mü5Æ›øå|’8ÊSá8PrŒÿÈÞòÕ\¿pzt^ÂÕ•ºìµ¨óµ†Û¥\{ê0ªA±šÁ—™ÏJÀòyœ:…åÓŽ1äXÍ½0ã{QÛ¡q5A\d AÊ	Ä8Þ*HXkžA AL	Â™VLBD¦M2–u»_—ùôîOq_,k$-æÁêû²Ú¸¯´*CnÖÓNšTxŸòéóëÝX­ŸfåuZ$ûKò^MÜL¼™x÷áêþ‡êþX´­úcL%®iþ˜’°,D[ŸÆ=ký¯}¹Ü|ú¨ûH ™1½,‡WžÝõÑí¥‹û}<‘"î›þ´ð'ºkõåSÛ¯½øT¹ÐOêk×S¡é§šÜ¹ð°°—Û=½‹CÙ‹O”cREžíUM	K‰ïVg“ã“Gb®$¦)Å†L…æ„)Ì‰Ìâƒh†vRŒBˆ-`(#f@!Ýš_òåÂóä]gòbGûò]réæ_e‹Ô³¼(Ó‘šû¥LüÂ”èa?^ÆC™%;~}¦Êþ^^¼õ¡3ÿY”bØ—ËÊV¤U`T)Lò¯¡__6Ù#Õg5©tdÏòÙðzè¶Äa¥l–KÖËþêÖwšÃ²`´AÕ¶y1u¾ÃêJ<ÓjªÒU@N‰Fê›GÕ Rë€lœ´Y[ÈÏ=æ)ß±Ï|ÌÉ¢œëóÄäS7ùYRÜ³y•Ñ±*_]†óø  ÷;ú¤E	Ð”»Ô®ÏÊ:eVÍ3ÆäØFëbÙÕJ½÷a:Ê|ö]º²ÌµY<_&Ç,‡<œ©´ÈgÓj$£üË`ªŠÂãßY5˜™Ïí3PúÖV+ézqWãõM|ôæçßûÕMÉ¯v™ËRŠ<É”öU
÷©1Õx½NÏ«ò™ï‚1±#·Ÿ>uñü¬T*WÒ-´ŸÚIT~rÀëÜGD9”àÏâùÄÎ_,wÿfîŸë[jèÈýÌ”¨¡l7dt
I°O2½„BrÑ]q`sŸª«aÀ£Š¼+‘à¥†fÓtN-)éŸ‘r9¤®l”/î&i´<tÞ€Ø!^Õ( ß®&Ê	ÜÚøkm†Dhn»?ü,_%òñPw-áæ‘ î%D¾<À ì 'íÐ!ì‡`ƒ	#ÉyðìQ»&{©kÊ‡Áp_CxOy˜ãyÐXŽ1=²Ûò¢­]?œf½Ï,Û]ršÝsG¬šn*ˆ^þò…NF7TN_í­.£á$ËµK6@÷`ƒäà];ÀŽ0ÏJ@ËQHH2Ã$’P¤2cHòL"n,3ÐB ±h£žÀûxï-àí‚wÊÀ;Àl¼ŽI=«¼ >U}_ðnÇ½7øÞ;¥ü‰à;aý£üOßCÍd ÇwÙîNŽã–P\Ìä\Žì¤³¦eø..÷PrÐ ƒË·{öWBÍéHí%”
³v{§Ü¯4xF|ýof¤Ô˜&18L 9±”Q ¤´œóÔj&Ef	 ˆ!œ2Ó´éÿå¤V’ç§w//×uôRUTi£~Éç¹ÿjFÒg‡–Ü«LQM&îŠÅÉO—¯Ï–+æË"ÙzÞ©MÉ½%x|§R«/ÔÌƒ•Q	ßK”î+½ÊÇÓEÓ8½Ô¥þóäíå«——çI­jÏÌèiq®ô¹žÜÕsü×¡š|¾X-US}>Á§ ÕÝðC2J›žâ©Ü)Ðç‹ 	@èv] 	Âr6ùó=(ê²z÷V|½‡7ø½	ßÜÄá·tQªHÏFe‰ìVX‚Ïy—Åi5«.ãÔŠ®­»†K«µ½+ic»±ºŸÒvçÞ+cçÅxwIŸýòóo>~xùë•xt&ÓVèÃ)¥Û ”CíXÇ‰eŽ”“¿2‚CwËïBÇ±¥1–ÁÔHÎ F  ˆÁ(•1Åh†x&›ê²?‰å‡)–1ØËˆˆ†b}„JÀÑ¶XæÒIjXõ?"ÞXÓC,ßqéÜþ‚¹·qå$‚9ò]ô„‚9Ô’r2	ÝaÿxÔ:ÔQ­IT?n‹ÉCt+¿æÂý|0Vþ©¥oEâžEïD†*K	Íˆ0Ú Â¡€™U’ˆT*F°†ÀøDÌBøt·rhåî†&Ú[^œJqZÞés'Nê­fØööÔÄušG…¶×
Åîkáä \p';0ô1à·ï §ïÝ“0X•D/>ûþíÇ{iÓ©fddk‡¦¬xã"öÙàÐpÚDB`9ö#.ˆÊìz÷¶TH›¦œbq5ƒ)ÁPa)BÚrc%&‚c¢3ÖBN82(Žˆ´˜ŠÛ0°=O–FçõãðwŠíÏ°ûÎV#÷DÃÑªyµ.eŒN5º;‹¢‰Òä®~Ðl¶“\2¶ýìŠu§	ÖhøQDè¥º<?Oæ»£´bµ„´Ÿ†ÝV›uÛÐ~Õî“î/`„{LŽˆ>…Gè,ü4ÊJ¹»¢á)†ËŒŠ‘e9P‚´Dch`Æ¥’<Ã4C6³Ô¤I¨•ˆZíã_žÐÈ[+)fÞ2¶…FÀIÅ:q?‚d%û¡‘'«e<B"Ÿ÷ðHŒ­ñN€É“íñ{µ=>2o­£`Ç‰L¥Uææ~6´þn‹4ŠiÊ¨²BY%­°Òá% $ƒ)’)H™„¤ &4„ÈI”rŒ%¦	t\,¿ÕDim‹²²Ûû¡74yÇû7_«¹–¹7¼ù¢ðruâËçÌsÝš-Ä‹ÂWU«K¡–ÃÓõµìµ¹Ë³Ã]žÔ·ÛCÍF{ú&Q.)€Lb²•šÃIaHh)álÏ
'á·¼¼?PÈ«c5À;Tƒê8›¼+7þ±tÒ¿X¤î§Éë|ì€Õýsë-Ñ÷áèü˜£HS­¿Õt8¨›nÏs”ui§Ö,ô41rT£l5'¼«:±k45ü@ÑƒñÇGƒ×*¶à Ã³×¯ÞøÌc?½ýõõÛ_¹*n»\Å«f
5žwG¸UÈh6© CéÖ)#ÛF&ˆˆ]Q={÷ú'7^yCÛÝpÐ[°.MÌlàC±Œš…uöÈŸýúúÃÕåÇ—¿¾~ùáuÐÂ/Ó©v,ûŠªl?¦Ù5‹cè¶Mm1øÄ«1Æ¬ØÊÜ‡”ªžYcËc˜<Ï._¾ÿéåÕ«o^¿ùõãÛ—ï.ƒ–¼jÌ³êÚ	î‡eÙýß»üøê·_~vTMùÌFÁý®‰—=þããÛwa}m2<Ösh†3Õ“göâòY+Û=RËuÀU#|öñå»w¿•§²3V{n}ï€M©>ûøæŸîè•÷š<‘…D‹ê´lÁŸJ÷æ­È¨÷&åãƒ‚»žñvo[Mß¦¦j!î¯«eC0µ€)eD8Eq¨ÒeØH¡ˆòŽ,–ÊŒ+œ›	Ô”üèIW;^W#hOWƒºšÓžÁ¶®æ”m,Q=öÖý„ãžºZ\Å‡¥­õ~>…¶&e|6ÅCÚZ¨¹nKm‹`š†[{ëŠ\¨uø”]‡Aøñkt¡á»¡ª]Lkk/j}9¶t¾‡U6`­²E’×tÂžŒ§ÂÞ×ýúòÐC[ŠÙ¶:d?¾Àr4Êx¾J±|˜ÚãQÌMªgD›»êä1¼ªhD‹%³×žjúW)÷Zn¡®–Æsl)²aÜ555žcK±=mž…½¯ø±ª¹£WrŠ%|ßÖvC76‰#•]žér$0 *µr«J3aà‚,ËœŠ•:µ7•™DaÂ,Ç™%J+qÓÃd©Ž¾K6KFê[¾˜–&X«°E>¶Ë¬Xy©É.··tYZRIYKÚW/Hª~O®³~º™å“ŠøÅÌ^w”^èQ“òZE‚à½¤¯>ì!åÕ§ØR]ÁVHˆ“ÐÖ©ò…³,2ä–uÕcÊþ)?fF ÷V\–ãXõUØÒ{£iO“tà³nPÌfy©¾‡î’ÎÝ‹jïŽ.§ª?¼«ßl˜öó³ðò‘õóîDiéÎi`ÊŒT©±Þ™BS4Ä’Ì"êÓ"2k„XcËŒ#0ÓvŸý3YÎjá}&³Åd™ªo8oI…¸u¯¹?'s·Èž?Ÿ%fãBç/‹| Ë/>ùûu>Sÿ‘Œs³påy½ç³­žÏ“_í—]â.Ç¹¯ŽêúHLžLòyr£>—'×'ï{yñ¶Êí7¿±ßÊÄ~Žâì‹së£ñ>¢×]ùûâ&_ŒÌä?çIjýfØÒÇTù|ŽS÷!øçY6Ô¾ÜKµ@gÆ_…~˜e^ÁbèkµÖ=ý]R¹€:%|åýé.±2³â·åØü•p6ÏWRÀ­’ÿàWÕd|VÃ’ÎÏ©d;éu_çê®ivuÿÙqÅîŠ?x¹c!(Ø‹ô£ ÌL³±MÂ¸À!i½7ŸÛ ürî#8åÎ²ºÉÖ'yìNîQ¼µÈ•š-tîa©Q‡9°bH¯{=ŽâæîœL=ä‰aÓî¦QŸ?ÇûÒò…-+×†óL£¦ž)m£ègÖzÁÅ³øóÏo17YÔ”‡ãë«UÜÄðŒ†{µºÐòYk>g£üKËÔÏ^-&eõ¶¥U4˜w”ÏcèTŽ"¿N£}¡|{µŸNèÍlÔ7ìÜ¢Œ)7n§®o¢ XÌü©¾r±/uµèO‘<_Ýùó•o¢xòôc}Ü|×ô&Ÿ¬ã¶¼jOùq´âÅÖØúQùGÿ÷œ¾Êg6 „®NùìÏ¯º¼›ý/‹aXÃ+ÂÀvÿ54×Ë›¼»í:qHûõK¹Ã›äd>j{]Î&;$Àû©ÎèÑtí oÈtWdÏ~ùíý…·˜‡¶[1†°nÔ,Kàq|Ø÷‡ò¹‚C?á8Ìµüžƒ±Ç2‡;ŠêÅ]i“IbqBêºº"P‹ÎÖubEM/Iãïå0}¤GâÃq“Û0wÝ·l]¡Ùl­Îi·îË#V|›±w1Ë¹ÅØu42ÆìÄcÏ½ðuÁ{¿Põdìò™l.!‚ñfAa
1ðñA¥Ûl6ž†º>a>ÅÚh¨©E„ÓŒ2‚1ÁR¥Š©ŒaÎl†)fÚ"Äƒ) ÅÈ¦!+“n>™OŸÌ§­æS¶›Ý#›O9%|×³`(±D[æSŒ™$!Ù}Ì§wMgUoÝ€JQ¿Œ>;ÔPÇÊ–ÔHÖ=“jÿ–m5’umdãÛ±¶F2Oû­SÍþÉ¸mˆd®Ydã87¦Ù8¾móacm\ÛVÛ8Þómd#;nãÆ É·±ìÆ1î˜x#™ë¶ÞXÖƒFßÈF[ãÙ1Ç1ïØƒ#™wÕõHöº…8Ø+þ.LÅîñ§7.ä¾Í8”mmŽçˆêgË:Ü+¼¿-Ór¼oûiáØœûð‘pÿè7–~mWîÃGâù¢ºÛ26Ç¥äyù{Ú—#QäÆÐ‰­v-Î‘ì5Ós$4Û²AGÃ³-ct4wowœ¼«Û©ûÄ+ÜIˆÃ½ùÑo™´áLéÕhà¾¿ Ø#ØaÇê}…ß±Çßcëv,âÇE`J c#8ZÌäGñ‡L×hÞêÞ®Ñ|ÿäÞªñ|Ö3½ÛvóAK¤á@¥šeŠùìöd„	D¨"–Y		´a%äHQ$åá,£]vó™ÝDóË·’­.zõâÕ?î4÷ Ì¿,Ô{–H‚}zµ-ó/eT’p?">·g¨ùwfŸ\gc-¿Ó‰Öžü+îÎ¿b<:¹7F Û_Ív£â\t‹ù0ÞY²XLíÌíýiKêÃxÿòÖÍT»›nÝöuäúQ†¯_Þ8½½ßŽ³r`Á£ŽÔMÒíÒ‹äj-º›®Ñ¶þÑó°¶×”Á]Ôhˆ%	ÙsSÞmaDÁ¾…»ô÷–VñŽ<PÝÿ>6¼ÛCîÚI'‚©Ã\[ÝM8úpÌ6‹ùÔ{FŒŠp†™u™EÐ³,úåP[ùÞ×qóÿ1­ÉXÇYÝÐ=sÛ÷¿.ÞürÅ:³Ï=NÿÚúÙÞ¶5¹†¬<F3¬>»øõÈ®î9Ye/ÒÙ<à“YmÖû!:©ödûÎT{ûšöuý^<?ß<I3<w×w .Y“ù‹öãÛŸˆ‘XèaàXL†ZM?“¸}
!S]~±i92ÞNög×-tª¤¤·jñ»_YÆ5 ØH©•RÒTY-¹˜ HJÁ2%Z)Ìˆ\``„fÒñd”"ÚVõö/aóã¡.ŸDz7äíŒ(a)ÛŠ˜gBYßÏæ÷äïhõ“=+&=½z?ŠWïµÑð.Ëc}ÃÛc}ú†GøáíXOîpÐæØƒ·f|ŒrÂ;ò^Üï–VÈÀÜ5GöqØû^|üê¶È^LQ½m¬“=X®ïbÝÎšxi›Œ£Žv	º/ÉOÇºÙ2ØÛqÛ~í$H¿mÑçÚ5m†sîØ8#ëÆÎ@¶šÕ3”ccÖŒf¨ÛA¿ÇÏµá3Ô»¯fØŒçX™B¦ïáÊ’Gý8]ãþ»8ë¢x¤‹á_ÁE°f]Mø¼¶ŸÆÒ×í­A¬k³k`W5ûk ÇÚN¢èUÌhÖ6Ú@ú?ƒïÐ§Úîg¼5“¢°º‰'¸ÖÑyÃåm\ƒþHúQZ°Ri¸Mi«RÊSS•Ih3À2Ê M¥ÀŠR‘Ê,Ó‚.3‘ÂÊ2
|ùv®Ó›îë_//ß¼J>ù¬“ü™Ol2V·4eî_é‹òFì¶òNËF¾¨"ÑNîÎ—É&‰_ÉAeÊKæ‹Ùdàû)òQ™F L”P±žŸ½u}YíaÕ|\qòÇ¢ð)
2o!Î}’…©Oý\Ü¸†ßZÌoòÙp^–†:ó›µ,už¸WÇ QÉÅ¿ºüºñ}›ÎóeZ…Uö‚çI±Ð7~Ì~¾7Åø.*KU'¬µ²” P	ë•¥„äŒ°Užík´@œòmc4Gî‡[þ§œxƒv€)ºà <ËƒÖSüÝZ¨#–àXë5&€oRøY¯«zÏ6í¨¥u'ìqÓÕÝõV'*²Ç#
HùrP©*nZ_Ò8Š€êRKÊŠE1éÓÇòn+ån°ö²ÍóÛÅw¿»‚îŸ@tGÆŸ‘;1þ«$x'úùk²¹q¨Í"N.þ=Î-Ž™Ü×ñ¨Ã3ÀSÄlû†ÞMö÷÷ï¼]œœãÀ³|ˆ›†*‡™—ú0s ýæ0s ‚ùµÍoÉ—ï'å…òix€ßá`“)k2—é¼­Å/o
Úê±Râ6‚²2†8un^ÓŒ=°Ý:ÐÞ)9Xn¨¬›QVÔÐ³|rn^Ôµœ®"-´»/”ñWµ;“Ý¤À„Q~RÅ4ŒÒkNE˜·P»µ® Ó‹ÜhV×ývàÎ“Ãšgv‘ùSÚAågnæ¶KWjktÅŠ°Ì’75·&³‡Ç¥˜tPØùbÊÐ´<kÂñðzæôÂ.²bx=éfEeŽ­ãÍù¨_<¦¢°_Y+©8ÜK§)¥†KŽq*ÓH1ª¤û3!F¦Zq¥%â©5‚ÒÔéù2ôøWƒwËL|^«öo	rÚc›wVå‡U’.õ`¯aïhíë–Ö4ËÔ†•
žÏœN“Ìó3¥Çù¼Ê	èË]åÙ†õüìì /ØÙÿ¬5_ú””YGC5™'_†ó›²µŸ‘úýßV,“g¯Fª(0¹˜åþ ›áŠ]ÛÎËÖQòlÓÅš·l%ƒäïî#_[º.Jœ–è­“Ø¯ËlŽãÅh>œŽì²uw»¸ÁÍWø3W”Ë]Òx•Ôý|T²ß¸ýŸ­2{CÀ·NfV(þöâÅµ[°Ezîùb¡Gùâ³òŸËòœ7ù»q‰b[b8“Œ¬}Õ¶-	´S @åv0ÄXHxkùýÊOiYó*"¸µ\å÷o?>"cÂþ|µ@"A¿‡LQ—ÃízÈš]„í†Dø56|”oÍý¥<ÄðŽF-ñ4F{rëÆúƒ’<ÜVß[–	ÍRÀµJ±„’ûË“Ršé2U±`r†ŒAHX”rïŸj˜ôòœ+ð“,’å·-Ë9Ø—åø°,§î¤«ÀÞ›½î¸Ž©XgRˆ”åQOOÒ¼”æ‚'ÍCm4'ë†úÓ‰õ'ãí­<©Ÿ,RõÅ”"g`r]ô­(}”òM€“ÉZ­³”1†¥e ¡±A šŒêLSŒU„jÉ90™AÖÇK‰4²é})Fg‰›×Â?œ«õ÷Z.£vù}h…ö£§vÚ÷¥zëõœø;SS'6«›ÚG[©ùºüt5ŒÓEX)¹vµPJÑáLK‚‘2§Rý Áõ‡nDœðã!/Ý»ë¾u­‡×¥¾/A¶.Bý€„™ "6ëÐNÜ’,9æÂšçùhï®ºå"•–`•jKM5„Ê!9ˆÑ
	áC°–X&œúáý>ˆÂ€è,@ZŽµn	â¬.Çþ¼úLñÉršMWÔ«=Úmå¤ü˜½çÐpº©ªJÈ¢ðp|Õ!úÛYò?Ý5÷ºòàÛ‰’bý§.ìýh1ž>Ð›J„cl€€ ;[ ²…±ðBBo©ríŸöqH›YZygn<WÍÞ„éqõÒ~'˜;V¹yð	wZp‡~ÐqÞÇ+Šw¯í${O´uÖö”»-Ú:)K‰wÜ›æx:ì÷¢éƒÜðr½qP±if2”).¤´‰Xà´'Í6©	ÒP@f5")'@cÀ·†RK¡û³m*É{·n~¾ª(ÁÄÛÉÜ–¥JÚ’“÷okÐ¤’Ï_˜aô-QNÖÊºiÃñtd7
Už%i^Ù*Ï\X‰K÷'´¶8–5ÛÆn×üxæVßLòQ~=\ÚÝF—}9x4ËÇg…C²ÞjèuÚ¡»›}¨_‘<ûùãà½/Ùöîåê¿ï_¼_Õp»xùêwÿãn8[Ye+ÄQÚMS[ÌË®Ì¸ëùœ'ÉËÊpjç~¢û¥ýÙÆ»=åçÉz½ò,sg#Qæ³#ó¨£Dx•cŠ×ÙÊ<©[ˆš®¹¶%—?w³ð=.Ün%…ö…qì™[ë¡£8O~ö¦ÖÒ¯{Róª®œµÉŽ›ôÀéÒI:9ij½îš|²€à-ŸlF½á_D€ˆ!,Ù‚€3Á9¯a@á äú)¯ºáÊou€û>™–ÿý‡ùñ ðõ¦Îá‹w›”0p°w®àÝ8â¶´·çµN« k¸X‘Ò´Œ|'`Õø`ˆë‚WÓá•þúµãª
ŠçtÿËnú±.
ëÿ3¼ž¸;àjþivL3‘ìŽ¦¨xŠ[ÚÕes!¯ÞÍá¯¾ÂîfµŒÒN>gùÄÉÏ–EGÃ|¹ã¾o;Ï©»&óvOÐ™±µl¤Œòèv(i¯–Ð¿dÊT:–Ð³#‰bðÙÏ/úðöU@ÕûƒL]w©+=âé²Ê:ÁåbK%¤ôæË¨ÊÔA7LÝþ§!£­S>{ûÓ?ß|øé2`ÙØÂÒ’Þ§J^Œõ2{DÇNÇÃ¯ù£qjéÞÃOv'p qlÿ^(ãÐÚMÀºÍ¡œåá³¯ß¿|õ>à$÷Êï˜4öaçƒ}P‰]çùìßð½yWó€[“i67Ÿÿß5éÖ¢£M}Šâf }qÔÖÀOžùÔ/úT/Û­)>“†È‡

•­/JãÊÁˆ‚ªu]ÑH½O²þ‹±™ZŒæ¯.yÒÞ±Vƒ©š©qqî•™ÖyîÙÏCûå|®›BÜê¯èKð©®¯göZÍíÕ´rñ:Ÿ†²ºÿÚ¯O¨½B££ÚŸ-&Ä¹_ =²*Š¡
Ià¸òV‘PúÙÜÆÉ3Äv7ÇÑrˆ6|ý—§9±¹µÃ·f-}Ø=Â^JEŠˆf”ANRH”$i¦°Z¥†¥Ð £Xf(Vd*³€+JÒ
Š­/>Ežì¥OöÒGf/%ûöRLÛK%B‚n»¥J	¢²îÛ ”8¨ˆÚ®¹°×kùÃ0™ö~A¿u“)” ÖUõ.L¦«·¼µ°Úì(ëiÿ6j†ÔþÔmªý[i2¯ÛâÆÒÚ¯¥¼¸Ûqÿ&îÍnÛñZýí¶§ÎØqËlàL´ÜuÃh<GÍhÛŸ707_ƒ	÷%Ó­[vûÚ˜x¶L±=XêFßc¸7în|§jVÞPO¨•¹7”¾GùŒmè/.ß£ðÕ~L¡»vÝPW¯šÝ6ž£fé}Hnh"ÃíÃÏQ[³û†&­6>ôp-ô4Ž<*ô¢ª¬L¾¶JÇÒGŸ¿pßÄƒví0—ÆcÞÏtËVî•Í,ÔÎÝ@ˆ¨¯­{‡;ÎÚ½ÃhïÞpô°xï0wÚ¼÷é»­Þû<­v×òË÷!–.Ãñžë÷.G€ýûK|'±Si·‚ ŽÚâæÕ«j'Ÿ¢ÈÃOŸ§þú5†Üë1ôc;Ž<ÅMÌb6=+t°•‹Ø…’>f*†ð¨è#ö¢dˆÚ’ckm{¿½Tq~wî¯ŽF¥„pAŒTb˜öqsPñÌ¦
„)°Z(c|ÀÄ¦uj £iÊÚQ³ëÖs×ÏLÍu«ÐÞe­^HF+q½½dÛç(Ô&©7"×w)`HlK„Â€¸õzòˆ¾Uó¾t;°.fÝ_oE·=uIw»FÚªÑ£\löO×«g‹°7‹Ð¦í©ºcûúõ6›Ë8¿Õæ$¸Õæœ°º­öä
oê6LùŸ®Uß-ã»Öz°2š™æïÙ·9Ô7Èïõ)ú!º™øè‡ÑÉ=vƒJ½;}oùÙÏýÝŸÁMžj³èaª	pDlôUkS7vi[U=â»Vc—ØÉ“b	"ˆ[—m…pªFW_fj:òb«/Ê-ë9wàiÆ`&2ES#Ê´•ÌjÁ-‘: D[¢ç¾PÇ6K}E!÷7(SÙ“¦³­é°P/&ˆ€ûÝ¶”˜:U§¦é À9*ÅsXÓyreºW&Œ ‹LTô€”¾~)OÊÎ“²ó(• »õŠvZ‰óyrrü«89Þ‡ÃKœCHì~\Ž Ç¦ËÅ%:øñ†Ô¥Ö zGŽy=êRî·©wÈ£Þ	ƒT¼Ï®Ç+y…VÓ~ïXeîzž««U&Á ýNÉ¢L1‘ÀÆ
L†P˜rú
SH!	b±ûPR*NJ›"‰.íÜGöÔ"jª™¨´L³>œÌ­/ê³Œò6—¯^^T"ÝÖñ?í¡G%=JŠ¶n+(âûUnU1ôáAj~sæUÅà¡œ'›îö~yVÕ½5Iú-ùõíåÇMÚúëÜ‡$eõAlÐœf±p|åH<µýZ¦ûZæÕ*¬çW;ÿ’Ï>%¯mæ.¿åe¥ÜZ@ÏÝèºþ°¶(»HI„;+e×ýˆó2Cï!e‰ÑN–Kæ“"YÏÇË„”P=ìùÊ/c°ü&‚_õÞýrñî3úñxÝö²Šãz³q¯¿«ç¼³?^ËÅ0öIoT¥_,VUËÛÌû+Â6¹ÝxÓµ¶ò¤×ÒòzLYnld–*L@)×m†fÂ_^9Š¶W›ŽJ¯éŸÃ)x§Ó"“.Ú~}íØ;Ž”n³oTæûÕ³—¯Þ¤¢HGŸ†&€$ çÝ³ŸÞý÷Û×!½ÿ‰ö½‹ àeN»Û·Ô:_·“ƒRmû^¶	}Ï×?ýãò
^u%Æ°¾ hÀ;ÐéRÿì2àÎÔ"¥Mc€ïº,GZnFçü6”n þÏÅGw`ºÞÑüw4ðL˜§>˜9zªg6`µOæ^9tN”xÇýÈ³tÄ•ºó ºÂ:(¹øD°¥ëj¾d»•ŽãÙhç9h*OÜ‡«+åÎ!.Ök„Ì×ÆíÃ†úõ†º¾Œ¶®+º­Ëˆt˜­_g´‹k)DºÎöŠlÝ¸“Éç°sÝ³už¤l°›í›w O1 ]©‡°#ÓŠ¦ù´­ø¶Ã­zz"»U[¾eyZä>1F{VüR]ñj¼Å½p.Ï»ÆJûu>S7ÅÔ¶Mñ ý øw[Óoó›|‚kµdk¦[Óº={Oè{þQ$´’–h_ñƒ*ipHf'R¦ÚpË¬ÁÐ×"¤¾ô æi&â˜pe%´¶éEÿÉâódñÁœìX|¸`²Áâƒ)Ú©Èã‚H¾eñ A¸*%iñ	÷nx86ŸÞn§±ùàXÏ†=›Oè›Í	?.OÆŸ{5þ¾ îY‚¸¢ŒA#9h
ã\‡;
¶…¶·2…&n©™ƒâ9ê¤0ç‰µ)>¡È‰320rnìLÁƒ¬™‘z°Ô,OaÌuTh‡;–¨Pƒ•IªGÂN00íÆ}¦üXY”B3j¬MK¡y1bmLín´ýXú«Sonú7Ù Ž`LÒd‘:‚1îÒ>uwàí×h­:†;0%J“íêæÀ{`c4Š¥ß1iÃz0›\AÜQv®PEàá¼K½=¾º_Ç„íeüÂ™Á:ÃJ¦—T¤"€Ô á‹z#£)°ˆk%æ,CHøŠt€+SÎR™ùºªvoÖd¿^÷ÆœåÃ.*}ÓÉÙ¦lwr¸l÷Z@v"B=ƒ …\°€‰¸ÿÿzÄ¿kU@’Íw³Ö÷ítqþ'0!	ìQ
w³·oõ	åkQ3s´¼5)*$"Æïj	v‚¢‘nÁ›ªmQ›…êmKš;yh¡„F,É¸È$Î¨” R‘*Š2E‰ÑY*ôId#0ÚI& É˜|’5·#k‚ß$¼¬áÊqŒ¬¹‡—‰{ˆ´<´Y—º€Ò¦ÿKÃw$m"Aqbç4«{±c'×Ã‰uW”½-!É´B  Ô(J	ñµ³-22+™1$S¢µÈ¦²ŒcH-túÂMOüå…ž¼ò¿KÞ”L¦£Åõ`8)eÐêe¾]jeX$“Ü]è«çq§¯ºuôË2Ï«×wwŒç¹ÎGçÉÇ›aqV-oâ.éüK‘,5èD-œî:+<“úœMòÛ?_¾[¿µ—2íËl8·þÅ}8KTQØ¢ð¢¯Õ2v¿.œ[¾ÔWcv^³?ûI7Ï“;¹—jòóäÃ"ýö<9??ÿáAÉ<ª_Žv´+ŠÝ‰©‰;JdP‚cßÊÕË@yQ½Ê?>ÕŠ	)ëj—ñ•Û…à°‹ÚÎ@@n¿¿`/Ï:^Æƒ#‚ãBƒîÁ×?Ükÿžò§òyQ{†üìŽä·è#æ•îÎzÂ‰kzþkDœ—÷Ùl1)e\%îo#ô·0Þ‰±‚e‚Z.RD-ÇRe8Ó„ -4—9¥ËdFrÀ2	§
mxŠ¹¥ÓŒ=AÆÇy¨™„P±“—Ê)[µõ(¥8Øe³2Þƒ¤/h|P&EŸÍhŒñÛ¼Sôx/Þœqè1Þ‘ðTþƒË=°‡‡ß¸ÏÝ\/KÙ}¹Í…çþ¹ßµ“º¥E:íôpl9óôþ,w„€+Ï|/ð—k2£S®€,uð3iJ%R„+™A&“ª!ñe¤QÚ0 #Œ4t¨ _‚·p>¨×[Ýr]ö_ëÊÂÔ«†‹¼z†[±mÞò´š$©õte˜Ò²½‡>å®½²9nˆûõÞBŸˆcˆ©gEåµÀ•nº\û‡ŸßÉg 2QÌîVœ D.[¾7ù„ŸÐáãE‡K‘Áªb¡á%IŸpá½áÂjÏž©´=3n-¨qbpyZtÿšL|–Æ{@‹‚fi 00ŒMJ †Yê°"Î J1Ï f–I#©Õ
Pe2I$C!dÐâ:²ý²š[ò1ÏGÉ³pÿ—Ë²ËV’¥ÑrPÆ±{osoµÕ/Ï†¥Y4^/–añÞúùy1rí¹S4Î¿%ËæŸ;L9Ué¨Œ…ŸÚ™ßE‡B½Mt:ª‰vûzche-çµ4º> äIÀ®'r#òäeI±-ß0_ÿÖ=ÃˆS‚ßÊ—kyÿ°ó»°zrÚÛ-l¹' Ë–ŸÌ–§¦ë•ýåÍÞÊòsˆºžnŸÀí_Ü>™>)Ä}p¡|Ý1Ö»¤™Ô|{;=.…î¯õ«pÙ2Ð¡:Ñé*nCzóµ…·ë÷}3ËóÛ±üúb Å½ y`ŒÉ„ûú¡Ve Œ-ÐÌ@J0´™\hã¡Ò©‚†R…2­tF,åÄ°¦dXk$ÿ¹ÇÍ¥/¾—+±Þ÷`{QÖ¤tw˜ž9¾î²²û~;Oþ>,æùÌ»ÑèÛóÝ.†=Zk–Ðß·™|¹ê›Ê±âKRX_íÞçššçûêE±HËQ>(4/ƒ0ÅÛhžÆPÌFÃóN•‹ú„äoÉ»z"ùrN€ãËv4Š_Õ¦°_­~1©¹?lK£w[G«§Ý·¬"Óñ <Àí4Æ~./ÔˆPµ˜çî^åM5B6Bršwqw’ÅM'ÍçqII¡ŠAùá)‘G=ëxu ,·Š¸2“)r2Õ¤aÀÉ2¦\úZ‡
r'£§Ôœ!Š…M³ÔRãD4‚KIUMï¯^(&C}ü›Ú:×ã¥}v·lònu­_,]“¢fAÝÌåSCN’·o>þ¼I™Ìgn¡×NˆåãìÙêëOT’ÍÜ—¹½ë¡wJL&U²ÇýðÊ<1ÃBçn•ý›ï™ýê$»hû<Y	¦ç¥­nÛzç&ºlÑ	ñ¢¼ügn)Ü•<vEPœŸ• âÝÅr2õ„šûX&Ë|wñmæ§|QÎÌás–~K>üü*AîN¯JE–ä¤H¡«;ð‘¸Y½póJêRF¦Mu9™/¡ÉpÍH) 98q8H(èŽP
ÀVQNHHP*‚Ñ´T¢Á ú^‚£d~º|}<XøÇ¤˜Z=Ì†Öœ82fwšGç¥t¸ÄA„U	Ãj8­b¦ékÒ,]{]òËno­×e{!~ôÍí>ÄÜ–^Q÷6¬¼zgì
œ©“>ûíâÍ¯——ï® û§+ê"¨î}H¹ù‡X=Ám]>ú0ÁÎºè'«ð
ÿýøƒÑoFSÒN mB­Ç€&”Ö ³ ¥Z“LŠŒóTgÀŠLa#p˜Z%Dœ„2+µI3¤SæßŸÀÍ¸9
Ü=pÐAp#Üq®ƒÑ­ŠãPROÓÜDÕÿkÃ"#8î Þ›úO„s:Œç„>u¶ ž°wË¨ØQå¥ïþåmsn½ˆð1/K{i—þ)nªø4UEï×q¦pù™Ñ8„R¡F	Å¸Î2’iL5&
;1…‰0€q‰R,8)6R¢Í°Ð”ëeâç3½™)'òÍPòëMhéåßK!ý{G9G6¬p‹µÉjæK¹_<»´z1sàïv4úÁa®À){q½]{Ï§áÄ#‰Cuäeè:@Ô{R¹çs›Œ•“£[Å¤î=ôœ9pò;„í3º“wTÜ¡¿˜æ³¹wô:¿™G(C ™Ã­5”!¸¤Þ”wØ„‚åÎÛä lÁ›=(Oæ€ÞÔØzvyë¨i'næõ‹9ÜörÚßl@›pn¸5Bš‘ýG4?¸žäc{+îýîÃ‘—jþi ã<h´Îò—¹{¥Â"1þþô×xÌl®Í§ÁW£]‰Ì§«éðkºÈ¢9‡y4ËÝù:]Ï{-ÇÔ}yì©(™Ê£Ñ‹3›£h¾H¨·üænë>Æ*µ.õûi¿K¹òT°ÏÝ2þ/çæEÉ6¨5t®¾vqÕ™úÄ/…C,=ºYö}dçt¹<‚L)$…¥PCB!*Õ™Ô2E\‹4%L¦`Œ	s8Q)Á-†e6ulØØ´ÅLVÎ+yUÎk“ä´æ¹ðUvÝâíB%BX:‰]C\þGœâÃÞ.”R°“C@ŠXr¹¥å!¾ëõ32(·{ÀþãUo—jºõyíàéÿzU_þƒÈÁ/±é¢,Û½ªÚ=hÕGr[Ùm7ì…«¡ýjø9Yô÷ªbnô?Æ>{õûï/z{;+ÿf:—l¥¤þýw7]r"	5Ì¬ãæOËdÇ^sûÂ6üYª·¸µ€aË8T•$3Èý#5àHâ”dþÉÊHfÍ †Ì «¶’¡Lgä/(nñž¸Eä°¸%`OÜ2Œ·,@@y”¸}àÏ)JàÊXÛÆýÜP]êÎ$oç›Ëc•¼'®õpR—~ñ5Ù|¯ÑÑÜuI}Ú•˜4Ew&¸LWt„äN©»Ð±@•ZN2N@ÆPªO­˜.5¢Ê ÎsÊ†Í2J¤µºIr/“í¥*ª$sµ~ÉË‹·m¡,µ7µ;ÈÅ2ÑºaÿR¢µ-ªF‡ºxHb³P±‘{ÉÔ[©11‰Q³W©‰ž¿b!½BI¶–þöåkD&¢SØ~"}bãª£üîÜå (Fqó¯î˜ÄQ2ÀÁÌ˜Xò¹ý[2_ÍÝgVø÷à“Å"¿)kª/ßû)î§¬9¹a=E˜Zm9à^>A#¬E@žÊÌé Â2¤™¢:Í¤´KGÆ·&ÿ½w[nãÈßùˆ=£PÞ/ÞqdÙ­öÞr[Û”»½OL„"+3‹¬&€B£ RôÓù™™×ù”ó%“™U  ª*’j£MRÀÊ{æº_Dšâ„µ¥«)	÷eXWp¨\1ûIýmí_+@k îPÈí4…Äq@RFy9Ô/ÏYã¾àŽn‡ÊúöS0·Æ!S^¡BÆÙä³OžŸM£›øûûÙç¸náveºÈÒû¾#ÍÔ¤ß@óeR$¦EyÑ,lÑ¹·Ûç{|n¯ì÷¹ì1‘ÃÁÁð:FÕRA¶“ÔÉ,+R­#ŽiôÕ»Ÿ>þxùçw1Q1ë471ñAeï¿½ûå¿?~ŠíûÔáG±µ|b¢”V,slHÑ6|W4‘{Ø1ÑM”/#ÿñíO¾}N|žý$‘S;áêòDv¨,lê¨£äÐƒü-gô¹VÒÆs‡É‘"Å‰\„"×%ãYãû·É&Ÿï-ððëÊDùÍirÚnài_lwÙ¬ºéÆÙø·mZ—èu
A¿2ÇQ²î–˜ž@Çj´Ä†P®•cÛ‰€ÒÛ@­0€HD´‰œ[D)H	LN 2\;É
 “²TŸe¦•ÌD¢Õ§!¾UXAIà†ú
}Ö(3µ§ë:¤& 8ÔOéÄRS?]Ö¦øÔ«í¦Õ«é.ªW’U¯–›"V¯¦5Y«W»µÐÕÏ–ýÒ×3¨ÚŸYúŠÕÑ7‹añA‰½Ü)–í ùDA“§5blËcÑÆˆµÈÕ¼&¡½L+K£ú ŒÅºSôµê4Šgg›ÐÑmB‡˜sâb=ÎÝtËGÇqf/¸ÎøFd”Ø…ê'Ça¬	J- *S'PXAL äPQŠ¤rIVÔIo0N$e’b÷¥ƒŽ§µ4Y>Ð¹±:¸Ê,ëD—Á8¿;V÷Çø[}$´ìd²œV¢í	avVõùÜ#Ev5µ&Œ“ùøR¥Nz<Dx“¬(˜Ý^x›UHêhðãb£¿ä>¸à„ä.ïÂh¯r´¼÷bJè8›ê|îž¸rWðbá†›æãüê~ÎóÉàòÆíüÿY.üðŸÕ|C¼u6»ý<¿rß¼ûáÃ§ò›ÓI¥ÅZ,]Ãr¬¹´LŠ"åVRäî¤(ÈV®XÌåF²XBdDV”4ëWùeñöŒOÞµÎƒ³¢`Ò×™gì“Î/‹.³‡éÈ;Úˆƒ;Œ¬qÞÒñAÁÈ'2yÔ wjÕcâR&›¤;.Ô%N¯¢P‘ãPÁYÎ¢ƒ Pˆ4eVHmTB‘±€8JHR	|Bs‡éPB€Zc¸Mˆ"È¤M9ÈÎtð+§ƒÀGtàÝtÐ1Q[úY‚\õÊ›	!º}ZvÑ‡®˜}Q”öUÌÖ)aœfîT$±;Ç÷éIâ‰£?v’ÈãÇlÑÀ8õÊôŽtOÄøÂ·Ï# –8’‡uB! i+”‚r®©Æ†¤‰Eij˜@Ê@µÃ©JÖä˜2_"º0ÖJù®#"Ê€Še‹yïÏ5—¦Öþ.[\‡†/žr4HPº|ÅD¾Q´™8?"$ru]Î’ÔÞ†='ÑöÎõ´Úö£S…²ÛÃÅ¥Ý»w¾¶H.‹È¾}¿G°ý¬R÷¹9cbó««jƒÛÁN.Ïž©?•¼ƒ…‚¦V(ÊxJœ`#A’¡ âN¾Áœ8!‡A‹m¡ÒZ¦É,Ds@É­ãXÀ£õ­Z%Zg[h]€(‘ ­Ÿƒˆõž±ÄôÿÁûéÅ³£`ø¹Þ_÷ò	ÅÃìp?¤Î%€(´LµÐržjÀ‰’ŠQ“pKR TÂº¿ uP‰ÃìÜp…¬CCM¼zP4eãÁ/Ëé0 Äwùdæpâ¼Åo®ËŒ±¥ÏÝ}å‡·ùãC}>íuè'¤¼¯g†½pq?(BæùU2Ù"äÐ÷ÁÐ^ÁRÆÎçÊ!|×¡Qîü¡P÷¿ÝÓ_ºCù·‹0ü•Úy¦ª(ì$ßVß—ÝÍíÌ°»9Å`¢¦÷«ìö©U‹¥ûâBÝªlêxgÓÁå?}_âí…Õáû×U™@¿‚Â7	õ •1Ùª<øE±LA·JÓÆQsGÛ&váfV®ÈgF=©W¢¾Ê#Ÿ¸Òq³ÈËZWÅbnÝ¿q×µ‰ê	F8E¨å-œ`'lí’P¢MssÂà†9ˆqºÍAs=,_Ã?½üRVü0½ÍæùÔ3$o><øŸFÐ½ý<·×|°.ŒÉ¾¹ò=²­¦Ñ{à!½í=ÜÁ¶!å&Ì×ÔWŒHÔÜçMÁr[Ð‰IºcN‹l]ÐÝE‡RÏç‡Þ}L¼cå²ƒÈ·“”qÌ@
R…	)òõp¨P©M6%œD†¥2ûïýN4ÕŒŸÉ÷™|7‘oñˆ|ãÝB+äm%gó	ìA½€•€t[±¶IÙË©ÿ:ïáÖQ#à‘æ’G”<JÐ:Iï†¿R’~J£Õs8!÷pi}ªÔf§à†zM,Ÿž!ÀÃ$1Dr‡p•*%O…Qœq­Œaª!3D@M,B)2’„1Ç@Ëš‚ìu×<@`j¯}^2÷¸ÌRû¤dŽÈ8ºa‚ËÆ‹&}Ä’>À–Ž0´Qw…0‰bÄÖÕž=+¬éâ¿NÊGí›¬¶÷Ç¤KëNŸ‹@õ%#{Ðÿ=(HpLFa­Ý>•Ì¹ÉÑ‡Ršœ<!2èÔiqª¸@Nü¤<Õ–`ƒ8fišjNµt’¦aŠYi•š¤!GÆâK`ì{^|Z‡`—»¼œ•,sU ¬”ïBwSOŒ'J/­@+IÓØ™C"Þ»q~BÂcÐ'«Y¥@È-s¢ƒ¦õô™IÉY…*m‰Ï§^ýÚ‰“»ýõ'N–ÄÞ”)Ú;d?ûªÚ¹˜®ŸÁvø5è©8’$íH6ÈÃœL’]FÄ˜0£ bJYõ>p€c_ªÈWø6ÌpŒ±6D3÷Þ›p	­¥´Iv9“•H²B¢ÅGVxDVÜ"+Q
¿då,õô%,½Mž˜°ì-ïük–¯Húœ¤FmS™iîuSì–8B«Òäý¨ŒÒ)I NS ¡à¸×0VÁ…Þ‚&2‚»o%ÇP)ž
ÒÄ‰3IÚ¶UY"§êLŽ´Ìlî­ZÁ5ñ6+–j<È&3•Í=¾iËKåö§´¨¹Ï¬æ”De]	`•õ?ôèj®f×™vCT$À¨.–…CzY,òIö{°m¹3wW»4ByØC°—CÉ‡3‡ÕGƒ0…»|~S„é_¨ZQÞ@D½aï&[T”®XÎ¼ú4ÌDíÚŽ*«ÖE5û*à,UÚ^½ý4¼üøãŸ^ìèjºxÿ×Ÿúaµ;tf7Ù(T4óã<÷J‹7?‡;ÚæÙIëž‡‹wKbˆq
¶bž!!˜a±Q30QKçÕB8Õ°|ÃpÿGåÓ‰¡™Þüp‹¾yR·ÎÙL32¶ûSÌ­ÕL2	{ÐLÕžC}7R:˜
÷)-p7Õ7¸§#1üª–F2«Y8Î—Y7»W‹"ªÇu™Å›OÓñÅ\½QKwõü(_ÑúŸ£
Õ4äî¨tvê ]¡Ì¾4Ž ùá~‰Ñ$7Ë±ýì_oß(lNŒ'†”  ˆM9!H1
˜Ë¬TÌ'eL4–†r(©â`hH¤&a	…Bµå±\†g9x[óŸ|¯ì¤-@ùçË·ßÜîM½§†¶%!¶Ù›"þ¡’Äýri‘ë|\Å
»M·wj|SËáx±n§æ¶ÄºÓÅø¾r:±ftq±!ØÙ4µ!ôÙÁÌ­{kÚ–B^b¯Õmæ#ÒÁüzZ˜7îçç°î@÷œhçšÌòñ8€?šK˜a žJ»ß§¥eN¼^&#·ú7Åj*³’ =|Ð@Ô¸“¢)BõpNcÃÝDM`#ër ÀhC»è$IÑEÌÜ«V×{Øz±{P¹@äž”Æ)?5F†€ìEãâ7áðâ}Ò~´o%€¹I¶’‹ÞHj7¥uÃy”S) ¾¾‰öy€í&‚'Ø°£Á=ÊÝïÛˆl€wƒ-§NèÑm	ßFöýG~Ýû_´°u…šÌaÆ…Cé&àŸNw¹w÷þ(ã•û°µèÿãÄ0G8ÕÂW»/™‘ÙÌÜ—wÏ“º7ebºwjVôiZH²Ú’Äíq“&è‡ôiØ‡ˆx_6î«Ü&–S£¸ÖÆ'ÂfD@±NS‹´N-ã’Ji¥–#ˆ³ÅT:çòU”ºìËA6ñ„µ™Íjoõ4ÌIuoÖç±;ã5g’:‘¸žñÚ±ØÉ‘PBÉV`Ì¦"6ñ»x’0Þ®”´ñœÇÛË4Ï#_ï:¹½Øƒýp…}ýpÊ9´†àÙCæÕjÝ…gÓå—A–ª?‡ŽÏôýÐ­ìÊ:a¡M!ÛƒAØOšïÈw¬ó¹].²q›\íŒ¶|m¦iË·¥…wÊoàÊ;Å´q*a?c¦úÀÓìy!vôùO;Y³I+U±ŒGelÕ˜»{Óò­ß‚a¸g}ü…Vxò`ÒTþyq@0‚û)ßSkà\ad…bÖ»ªº?O`Ó"‚šHân(sÑ0	´&áR4çLÄ«$!8£*ààÞŽ5>xd½}M4ñ"¾“‹2×™#23w\!×Ù8Ÿ«/ë­¢[üß¥¡pûªð^¼-ÅR_¿d‹R»oæùl˜MW:ox2Á®]ŒÝÄX†4vu3±ûˆ‰énõ€DàÍüf¾\"¥uY÷	á¨ÓT¼5Å¡¿„•68Þ^ü´ù KqËšÏxdOo¤«ÜÇRËû3Üž\k2í£8u·Qõâ»¿³c3?œ#9¦®áÀªÄOT}à©ûE	÷·Ÿ÷?ìb|â¯úÐ[pþrïWd÷ždGíÝÍºí%§BÚ$þíºÿYžùØ‰£ÚJªG¹5íu§ÉÍEm,àp>´º¡OÏŽ"I-ÃŒcE1d©)‡† `8CÐó¤‚* 8Æ&ŽÏqÀŽW$a2JLSJ+U.©Ìdõˆ»j jmø‚ÙBŒbÙBL¨”mii8’@ÔùB÷PÆjj¶.Ó™?<?„ oâ«v¤u2ô¤½Â4¾¦ðÌqµq\ÏÄ‹ìXb#3r(ë°ýNzpG%ý%ûøÔF I*â
!l –B§å±$ñ…Ge‚¥J³TIa1·Ð0Ã(f	Fª)píçËOn1+ÿÇfòþ®;0µÞsÓgJqÈ÷Ê§©R–¬Jœ}±Ž*¨)uQ¥©æ¹ôD­¶	bm5S´•Â"D7¼Gdwúâu6ØìGíÁz£c©}ƒ øv›=5Ç4(T‹n!³Épè(>ó›«§FŸ	çD¹K#9 À&)OˆÒ‚sÆSj¤	cˆ;ÙH¹O±•>êWAëK"ËH#ú¼üáC0¿Qk­æºÝAéŽîpJ~W\T{æï|•±Jì¸,§7Óünºrœ÷/Í#"wý¿/Ö6žÂëé—Aÿ€ˆ‚Zd©rBýËÄÀ(#Šð¶&Ñ†F0ëößÛ¸•g¼
FhO›ùjãŸwëŸ+¶¬.Wi>îîô˜Ø~ÛxÝ=úV‹Š8EO~Ó¡MÉŠG¬3Ó.¹vË»Áó’};ßšüq¨šV³¡š*‡u*c¼‹øž¤Í—]Í¸/uS#Œ†2”,áÊ2ŒµÊb
¨M5çaimêþÓŒš‰T$7æ·[­kÖBž®|þ¿éÕÀ»É_¾{ûqE…*<\"Y÷*=}ëKö&äiÕu z«þÅZwï¯]¶ð„1D¡ù¡Ö³ZáþùE(õhææD||Xj}¨´ÿÞOÝöbžé2ìÊ‘Š©·‚«/PÏ§4c¯úf÷Mj •‚Ié©t¾ÛÕ"îÓ7l¤zœ¡R]’°jùxŽÃpm‡´'Õ|Î@®=‰fÇÚë¸oŽsjO¿ÃBL×ƒ{‚ÑŠÛ"º|]a¿–ŠÅô6Œõ×Ò³, »ÉŠôçÖá·&XX•-î‡WK·ñÇ%LÙ4Í‡&Ù—!€ ïé,Å„AYcK–ùZË ±‰0B«Ôx©ÝI^Dc¨yø31 ÔbŸÑ¿‰ •«
9t=P&±h·Im7Y‡ûýž†ä·I¾\åëÞSÑð±X×n‘óÛ¬ðñÐ•À$*'DyÒäü†¨áå"Ÿ„”º¥Wør®ÖyuÃ˜~“}ßŽ&MíÝà6›/|@õD9<=¡ï²£7>^?lC[½é‹½0¾©ã "Áv`±í2^Ž¿àb³ÞG "Šªº¬ÃÕ­û*"ƒ±~5,øp×(DßààÕdÚmCMèàêq}çßåIðÞ0dîÞ¿à”=óC"pB!gØ&Ê$©XùÔeT:ö($Ó¦V¸·,ÒRK¡=4HOšâR?­‘OÍ½ò˜dñ½EfZ#ÁET¯g]Ä ËUÁß*aD@pÙïUaßçFo	Na=3xøÒÝ–~Æå¶~É§A¨ç	‚Þîßíü¹q!‡áfõ6î¥Øíñ’OŽú&ßšN;ƒ¼óÙÇtWÙª¡ûƒR¥V÷181âþÅl_jõÛ«,¢èc…÷‘½Ûä‰/ïÛì…ÿÂx°_Cwçgn0Ògó¿LÆ¨çÃü‡¿ûí§ÈçyáÈ#ÛÕšF9#44fQ—å©sØ®Ÿ¯v¨gNoÍ&Ñ 3µ¸Ž¼u4ÒZ{XtÌ.—„¸lºž³Ñ
+‘ž5\Réì¦¶œ&Ø"AXb…”'NH K÷?¦a\§ á„;ÑÐÛÜZxM¦$Éó…OÿôzM&Ëðg)ü•Q ~õ-r``<L•”êZùÐ—Uµ™]MÝ³yæšgãüÊ§žòzÁëìêÚÎcŸ®b—œð&VÙÞVÜÏ«þéÁzú§×ªÜÙñx ŠÁÚ,Wu2În¬'‹™º)Ry!Òç¹Òƒw~<­²œàÈ;¹aM®‹Q–¿±Ó7c¯}]4ðP83ZS<ú¨›ltn‰ˆÔ³Lu+%ÁnGÉà Q^Õ!é•À÷Ù$Ã=ÕŒWzp!PA™èË3uyF4¡–îbòö6w{ Á¯#õèá+êjvu‹Z Í\ée›6q›»‹ˆeÉdk…2êÞ·$í`©C‚šG‚½úó¯—?xv¡ƒ~?jÀú6Ñ|go¾v†6ž“íÁÀöã[; gWC;Ÿçó8ØIyß:önüûDy8Ú6É—ÓÎªykíøéž žÓüùòÓ/?¸{ óñ1´Æ‡4>hä®GÓÚ˜ÒXìß˜wÞþöÆ]Ï­½5:¨õGíZp\ü‹Â;‘ekã.Š°ßâ—%yâ‡l˜<dÍò€KâýàiÜ5ò‰‹¬îŽ¦èR¬”BÔ£
tˆ˜}ÒïÑå_~úá§ïÝ&uñ¿wÍ£Ú?Èa|ñ!ª”	É¢T.èfD)[JýD£:dži~èù¼ã+Bâ£1÷W…h	…“!d‰’œjÂ¸¥4µHC¦­q×Æq‚±H¡A‰%†
%”lJ’uV…¼hUˆØV…0ÑO„p¾eO¢î¢B³sÑ™>{‡‚ ÞŽôµ™ÉO¡‘ýÝ¬N¥éÈ<+C6umhEbÛ¬Ô#‘ðê‰¾ðk…É~íØžíäÙLø$fÂM½K|£•&²ÅZ[wy­’‰-÷²!-ìÓæ±’æðNðú8Æ<"_o‡çð>ÄÁ}ðØg×¥Õ9B'‘ç.Ï:9ü|ùîÅöúŸCû±¾ Ú Ãû8ü\ÄöTaOåöC~Ç‚Þèð>"çñäy6ê*¢Xwºh&[J£¨~žà¶ioyâÙ”Hû8î<©.éBÕ‡è“˜À)¡	3
¡êÄžp¨A©1Šc¨¡J(T “XEDUjA’R¡ûQQ´””‹*_W¹«í¡²v%Î¦z¼4U®Ø²Çª¶¨ïv±n¶Ò1½`m#±Ž-P Œ·ŠSCÀáfQ™è®#ZÛÔ³ƒËž:D÷ÓétÝC³_¤ºWçµZ¢íéûp}Qïb¢‘füS@öÊ«aú2¬[ŽhÒLžÂÞÀ©Ö$± C#1SÌb(¤æ¦Ij-Ç*…È{]pŽ `”¤À¦Š§‰‘ÄÄTœ>Ó‡-úðÈñ±IÛïéØÎåé~D"õý;èÃYëß‹BôÏPòâ˜ûWI!ž[Ìy:Rq5_&è9H…à:X¢Ó”"&©&Ü(
5Pb# Q"±Bù‚Ì	 ‚0`-Lh)¡V7Š÷¿üúzH
âæ\cúÔJ(Ú[½XÔÏ£½>’s«®¤Ïjõ€öY¬L.ÌçïPsÖ3p}ãóC§ÏjõmµÓ–kîZE„žÆ×ÆóÌH?okköÆžù?½ùrÂ)9B)bF°TC¥dÊA–¥RN¨PA‘L!WP‡djRÛ”6ð\¶ß‡8î?žÌÖ{{ÉµŒU¸ø´ë[)Œ „4TèyˆÇv5f‘ÈÕïßYß²'få¸¯¾åìß˜ÿ.ÌÔà€ÃÆ~ÎÐ‚ƒ¢L8hÙ­ú«‰à‡=./òV«ó÷ûÉÑ»ñG%Ùíg‹!q÷ßí“ Ô8¸ci‡[#Ž—Ê¥‡[kØŸ?þð×ËËŸ¡û¯‹ÀF†	Ÿƒm[œ>{9ˆ¾ÿøþó¿üòó/Ÿa÷æÄÆéÖýIÝ ?ýÐ¯óu›®­Œ~pVýí~¦3‰®ù´þôó¯õ…aÒÞÑcßºÝ˜bü—ŽáZ´_ÜY¥Ï1ÙüßJuTƒËPÜ›¹ä[Œ,XÝ¨¶zó0±„•b!adšpn¥BXl$#XZFSŸ(ƒÔª„D…H™ „
›`pV\õS\5™Â‚MÅ•Ûk×ª®¸ˆ‘ˆjAŠ«³Q êj­bÜWuu8AøÃánØçŠ]*°©8ŒcÄP%˜ã[rŒù×	*áGyy‘öjµs€ÌËG8[y„sy!:A9÷õû<…Æî¼*¶5v§ŒHoÑá$¤ýúÝ¤ü;qèw³:ðDÁã»Õƒ{7<¼¾!ë´†§	tß­EÜ·):GB>Q$äa*ÅØ(Ä—¡Ytôl¦Šb˜æÓÅ#åbl}'‡ŸGh¿ZºL ­ÆŠ2")$ (	ãŒË„1#4©Ò
iÆ¨ R+Ê©0‘©\Ã&§¸On@×nU'<T´ƒ_G—£à.</B­%Ÿ„êNÝæ¹2Ÿ­jµMUò©fäŸ}”‰O/åëƒU5ÊCËý½¨úï¾ÔnV
5-†…giY}™Uù¹òù É×î‡¹/S\e‹q¨¶b¿<]±Á_¬ù‹Z|7wx³ºEMõRœsÄjõR( ÜPd
ÂÙò|†ndûv\D´SÓ¹qÃ‡áªö®ËûóŸ?Ü¶?‡ÊSù922t/µgóêw‰F gu¨UDÉÆ¤Z9íÌ²³wßÛ«oÇnºÿC©6´]Lc§±€÷‘€I8,"uìöèëXÀ<pÝeôjŠ$2ölLì	hcïÝI»?¶•Ù©.#ÓØ«ë@,ä?bc÷'}6é22öþ\™XÀØý¹º¼ŽÝŸëØU_G¿¯ëØ›v{Ó²Ø‡˜Åîxûb³ØÌbb»ÔQüGìaßÄ>Ä›Øçu{!o–ÃEìº¹›DBŽcÏ{{'ÇW±€±{9Ž=Æqì1Nbç8‰%ž“Ø;9‰]Ì4öd¦±'35±“œÆîÏ4ööNcÉñ4LcÃ´ˆî2–Üä:0öÎB-ð>Àw±À±G4‹½™óØEÍc4=¡yìª‹Ø*bÉSû&Š›XÀØ“)&±¸ ˜ÄÒb{8E4`ì)ÿŒŒEXEìÝ-b¡"––±Wr{/±÷b{2ÑŒÃ"vÃ—¿GÞÆ^ŠÛ<öïb_Ã]´x;Ë/±Á½šEBþ»œß»ïîJÓh¿,æ*ÉÇÝÜüF‹qv!{¬š\[uÛMZWÐýú.ì$ë5ÿÅuÖz+&Ö×7HóWQ@«^G«OF_&­ÏwS·—*n›·³Rúº	¬ëNtšNJ;H˜ñ¯S™7×k÷Å(2É§ù³YF ö™¶RÂ›F¬•b¡Ä¤Ê4×œ"d`”s¢|†GŽjÁËÈOnMÅÌ[)VSÎÓÁjÅƒj±Ï`öBUù¬Lî5YÏ2U_:äVÍ35}ÑækÞ Äèf.0õ„^\PÑ~àñE=8ŽfàðÞø8ÎåjåP¿U,ov¶ˆt@ž-"í€g‹H;àÙ"Òx¶ˆ´ž-"­€g‹H'àÙ"Ò
x¶ˆt@ž-"1€g‹H;àÙ"Òx¶ˆ´ž-"íæ‹³E¤	p¥òš¡^ÀfˆýAEÕßZð Ø:žÉ [³_Nö`õþ*fÃ¨[5´S;ßW»Gh½>4šäf9¶Ÿ½êÀ7„oXC³ÒãÆ”þæ\@ -†œ`¥)eÈ(Ì-ÒCDSž0©©@±àŒ'`­–pÚ õ—ÇV/*u¿×Ågvvnªí`œß…MöÑPRÛ~Y,ÕxPíO‹EÀ'cùùïo/?~¨`ªuø¢à:~à‹¿,®Õbpwm§ƒå"g¿[?ÁùÜõ9¾ÆpÇ’¦~Œ[Š€²éÅlnoÝÅõQ·Éàíl6Î*zaõrž-î·ËñÔÎUâz]øl1ÅR_Tqñnž»«v™-ìà²\çôêÉìa/ß<¾¢M¶É¸œâšíA2"«K·e{€¡pHÍôÀ"²fy`TvU<šß0¼…aë+èaøîòû'5BÌfš‘±Ý7¹Ì~Ûq¨Bºÿõ³OLn§¯ÜšFaÂ£j®ßV¿[M%ªk!,m=gjî€¿å“oO7ÊáÝçÅUö¸ÿÃº|t5º{‹&(„ÔÔi{Sòll‹"þþ‡õœàzN¬e}¾›^&ücÐëð“ëD·•ÒÄP‘ÂÀJ”¨Tb -óAk‰‚’Ðœj“m	Ã8UJØ”`FBM%ÿ£\h™ÉlßÒD–ÛÛ½tjFb©ËjæZ3ÎkäLQga¬Æ+v¦kOO× ç€÷#lÍø‚Ðí‰ñ¤w—™¨·t=^ºÎç‡Ô9q’©v†yÉí3^eáŒó]¢F«DJCe°Õ4õ^I
Ä ZaˆÄ<uQc'ÙXë@•á$MP*š

¾+×5ø°Îð¸ôGÉýàãjíÍ(qR	ÊÜzÄ¼ZChõ_¼xòöVeãR*¸T;é6¢¼ÇNlñHotqá%ŸÝ[¾–€¼@ãäêbÕÍPÝ9F¨ÊSyñ§rj­qëðÈzš—õ½Ð“Çþ³‰ëo¾ðâ“÷ŒZÍ( ž‘;<~ww7ªFsûQ!Ý‰,¥$‚ÀD–Ò	²”àhbì]kêxc‚9©ámŒBx{÷þ‡ì*d¸¾·ÑÕXJï§ààv4O¨ËðÎt|›Íó©Ovúæ{e'ù´8]–‡mÙÞ‰ƒƒ¾îéMªóñÙ2lá'wŸhk2¦fTÕc„¨Dím#”ù)ùEä[Öé•‡âP5‹È³¾{õîç_~¾üï¿¾ûüî§·#Òyë|ž÷SýÙqxîÇŒ5»êU›ÐÇ÷1óq·k=Ü5È|RØù­{Ðá*¶yÚ9h“,‹2UYG}òaµ	‚=“ÄO—‹qÈd…»ƒ«IDÿLb€–ù|9‰Èº^|8¬ÿúõç_~ý)â¼æ1Ø‹E>urDÈ÷ƒÚP»\f&¢Ë/“1Š8¥/Å¸s‚8ä(¸cÇä zH:ÿt\etòÃøJN4¶”9!Z04‚Á% Ö H’Zj5E¤B&‘Ø»Ê3GÀ ëLžùÊ¯¯Dp‹¯ä’î®ì±?çM¾!Nê%S1"„‰¯ŒO–þ9Ë½4§ä,¥ìYU{g“ÞíYYÌ®Ì¢'g1cs„V¼f,øš›ìÿ˜ûŒë`;öŠÏì	þˆ-L¶ºÁF§hÝdS#›ÕøÕØ%ãzÊ”§5V66eÅÓF‚WÌm,tyíßb»ÕÉ¼WêÐMö7²ÑšŽ„_3Ä±ð+Î¸–=
î;.‹ü8ûÿqYågS¼RÄ€Jœ$ÊHÇ-3¬‰•È¦”rÂH¤µ$KRÍ€)R©››vìt³ûˆc/Ý5‡ù\\ñnnøQýŸÿ[u}QòÁ!k¦crìàîãÁ|9†šnw~^$/‹Æ(V·ÊÅl¦Î„sZ/„ ëàÆ.ø¬U=)ï‹ý	é,Ð=Ô¥<zl</2wÁ­w.BK3³ŸçË±-b?Ö—/‹˜IDk”6¯ýiä‚gV9¿I²é›âÚÑŽ¹G2í§œŽW•ÖxTGŽ¿ÿî×ËÏðsWaÚçS°nð¯ŽÝøôáò3þÜUÙqª—ó¢¼Å]—øx
Ü(Íê"8úvÏ+R«úÀtþúëßG¨cÕ°kæÔ]’ß~ú€¼fÓA4OûÐ¬».èîV]•2wµb{Õ]î|W+Ù=V„.{ƒ±_uîŽ±»èýîf¨uÛP`á8Í‰:*~–§hò»¡÷(.â`ÏÒ¡þ#ï§îxœE3.³^þ‡O;ÜSÈhËõd£ÏcK(O¤Ä'4Fh"0©aP ­ „ÛDY 0—XHDy"4Â&	7’A°0XX’œe”*£X==¾Èéf!S!¹„õôþPzhêÏú“K)œ ¥Äk>ŸN_ú ÀDk&ë’Ll£‘&¾Q]¶9™ÞðI¥ç±~ì%íœNãÞ ÿ|½êú&	)ªq]Pz	æ~zúaêD:úâÕitûMâÖÞ­£ëª5	_{7f‡Œ]L·I";¾)¥MB; 5ŠÙây>ªûuŠmÕ!ìøt¨û•Žd½–JçVdUbI ûI€¯Ûi¢1N-#Fkåf8t"NšbÓ ¹]–‹
¼÷rv5w\¨c?ïÇtmí¢²Q„#V¯n..Ž+ý½$A¬\
b‚¯"z·1¶Ê¬*€51ŒpBQ¼V]ÐGÂG|ˆÔó_ëŒ¤ø…	`>¸­Ÿ vRôíPC•ðôÑ0ÏÂæ/‹y`õÝ¼†åÄŽkÝ¿Ñ×y¶§]ÿaÅ÷ËZb„J–LSË$±š$JB!5€ÆÒ„ABµT¡µÑJKÆˆM$f¤©BæÛÁÝ\ÍfkMÙ}‰ÿóÝåÿa3’]í‚GšA/¥¦ùâÚ®[n÷:¬[¨lRùEu¶5ð¹Ï×|ˆ ÝZõ’GûÄÒÿ>ÈÓÔÎ½öK]L|pßtPÕQÎç™»ÖÞ=€î®3}=0¹×®å‹Áulz_yº^,§®‡ñ½ïnÝæu ê6ÏL10væÞ›j¯ŸsGéÛ–5³Q™]ß_xÝÛMvÂdÔÒwÄå>ÍŠë‘ÎGË›7«lÏCÍ•ÙDîÄþ¢­4ÔˆáàYÄEg.ˆÕ¬†Ù•—;Ú5à”š¶
à]Ûž—~pð+ä¸'’"q9“.#á
®=ïFU­ÝÅ˜²›º= áÛM…ë»å‚­‡œWê˜•˜ÑeÛ†ï²°ÕsÇCÆMçE˜ì&¬±æ¨ýI+!„ë”*N!!ùx‘„’T%©ò.rÜ‰84îL#QÂ	5©¶TZ lcÒ†3iýW%­J< °Û)6ð0oÄ¡à½Hk¼EëL\wWÔ?|yƒ¸ÆÙTNGe;L(_'•í¬°öÂÑH‹A:îÑ¤ß€QÖ“ø¥ßø‡SõÏâú°zFÄ	êåõýH­ÅXI–(`8&’9É	‚ PJÐXzùU¦Œ%:é„R"mb¤HíŸýby}ë3ùéA:Ï'ƒêæ“›I{ÖÂ»òØ]#]÷ïÉ§ÉŠÙXj÷]Ô´µÔG~PkÓÁ¥ºR'ÎµTâ@7¿+;šÚÅ÷À=ñ¤Ã¯®žq¸MÏpCÉ"Ì1â›‘•””y×R Vú©6’¶½ëCw©†¢gÁ¢@ÛwÙâz`¿h6·8Bj¥ÂqJ?®X—7¿ÒO£m#&t¡ž¾kUÞ£yµœaç {U.Š.H›@¹Oå¢,ºÎÐÑ+E×zÎÂ<Ñõv¢ËèÄ.æYËèüA«ãÄfÿ>W¨iŒ/<;Ç›å0‹MØïaOQ¤&]ÅW©‰E©ñ¥b¢‹«œëµ´¿¸J¾ˆÅ35œÅ–i8aÉ–b]SÑÁÆÏø+¼¿pK,z/ÜrŠ2+çâ)­€ÑÅS¢k¢DW0‰½ÑüØñk¢DW:yáeI*©/}šÍmépáði+†ûò¤ÈÇvÑê)S®¬”ÄË„6/?·´¬ym[ã5Ö6áÃ=¸¶ÉCoÅÍõ0QE¦¥ð“ý~L[pÊ¸Ö©a
¥©„Å0Æ)X¢ $&9SiÊ5±PH…n²­m+ü^þ¬ÜÄ_~›e°4]fSsí¥ÜÚ³=ÔQÓùªT„è‘Ék­ãÛTƒþ©^ZI°¡"dÎdìçôcòëT®}
÷µ…unÉÁ*Cú&`{¤2Üš]¤âPž‡Ý€gÅáYqxVž‡gÅaàYqxVž‡gÅáYqxVž‡O¥8t¢_üâ´‡[‚ârâÓê›ôwt†;Vu4=ÞÂ^Ï­Ú¤Ãëé´§N\¦@sA°6„HŽa‚!LIÍ¨2‚%ˆJA]slhbX’$$‘³XÞºº}ùÃ¹í‘m$»-Œø–ÛÃÐzž%F æ±n{ûþ5;îãÛ¾‡»ïá¾	a·tq3;;ðuÁžõpg=ÜYwÖÃõpg=ÜYwÖÃõpg=ÜYwÖÃ½0=\%öÅ(á6$Ä³ßQœøª==‚úoz•ï—h
ŽÚÌ®¯ïF¤ ª„"† I-HfRa !")ÕZrÉa\KÆ¡‚žÓ”HÄ J5æ÷+óxuÜXÝçËEpŒ›ûD!óDž–Ù"¦Aõ¤ÆÙïÖöË¢-u»Û ¸o#Ç†ë>t¸kßáëRñ¤Ü®Mf×ªÈŠ·ƒ[ƒ‡?Fƒrí`[ÖƒUÓû»k;·eUßßj=Ù*ûë‹Åu¾¼ºLòb]Zõ.ŸßødeE>HÕ|àFwÛéÀäSë¦Pau÷Êw[¥Óxÿé?¿q36Wv1X%Æ¨zñ7ª¨Ú¸Uë«ö—Óu?5c¿r¿-¾Ÿ‘ÏxXmšÛÉìjê79÷‹›äf9Vóè®„¬g§W™›bm'.Â.šÌ§qÏ¯1q÷ÙíwQ%Â÷›z5/•‰nve¡Ý;•ÍóÁ
q¸tïtæß™Ûšñ24p×ÙÕõÅ?—*$^«[/Ê/3$ÉtñpÊ'OžesúEÊ)eÃz.Ž‘œòêY%$›ù%“ÞïA=+9a.“nbÃòé—	Ÿ>×¯Óbfu–fÖœ2)È£…ªk%D²‡t­QºÖ¤œHL­¡ «ý­ïÓ ] >à_ÒEx€m£öMô£¹·˜ä_Í½>EZ÷d3D8GyÿÃŽ…@4‚m;ì‘a¥ŒèÏuG²mò©ã(<ÉŽìmD[ûÊ’Ìdqm[¤Ï,âfDYkÑk5O“åï¿ÇÍ‰tedûÂˆÚV¿¥‹¸Éƒ®·çzŠÈ÷[I£"J1…‹ÑãÃ-‹ètu…"v¦º!1Ôz[«RŠÅA¯nDè$bE“Í;])ú¶À»2ô9V0ê9÷2ewWk^ƒùdîŸþòöÇÏ j–ÚŒmkv¢ü€k9j­7PÒqV,$¦ ÛÌÞ]¬ŠM3xˆ`%aRÄ7Š[frL¡”ÖMi"c‘¢
K‰‘\	`±‰¼¤aVÈ³`u¬Î‚ä«Ýé1ð…°7+ê!©VÐØþ‘¼ñ	¿ZÑŠ‚=êoŠVÑ5ÉX}ZÖ…­>íêRW\fÈÓˆ_Y!¿ñ«¾cˆ_ýõ¿º{‹¿:'~uÎ¨øÕ9§hñ+ò­ä°ÎUDËa±×²ØƒkÉ,²Á–ˆÛª.«E·yÚNYnKŒ‹l¶!ÏE¶™ôYþ–Èv-»u\¿>²[lÝ¸BÜþM½,wÒÄ´0"3í³‹vCcoíøéíf–ÄH$Â€DI‹S“"+GR§©¤NÎSHhÄ-”’.SÃµ	ôÞ×¤A¼ûÞ¯&ŸM‚$àÍ¤Aæ¨„Øv/ùõf¬}ã³©/½Xàe‘’o«:õ<¿)‡rŸ™\/ýˆ¾X¹Ð‡W}½q ¡h;’`«Ò	†ŒX7´`(  J Ûu¶·ì%PèSã÷
j›~\Þ¹ìó0Æ®¾k…±Ü(ÝãøÎrÔìsÔþœLÔ£¿“Ôûj1Îû@A#¾×xq£WŸ­BGút×!1|íÆÏ¾öêmÆ€>ÜžHøê^ Xð Ä¯dHè) ®ÁŠÿƒ®0f?ìÐR#ïzTŽó)L
)ÇÕ(E®°c&µLÒ’Jd)¤&š'”ªCIâøN)Sk €$QìÌsîÅsâh4’Ç<§ÿl“çŒôîÙÁsžUÑ½¸Îž•ž‚ëÜ[o{æ:¿J®óˆêíø^÷â:Tuos‡ê©ÿv¡b„3gúGãL'“ýô îvuÀíYª:á@(Ç€’”C$`Q‚¥Æâ„sÉØýËn…TcÉ•×Œ*b ¦<é»o¾©• µ4ÛùÑjê®›},ò*÷GðÆX•ÓüKvu=vÿ_çÖZ¨Ô;iŒÇÞ£x]ùûeáØ¨,ÛÁm¦\ï×vž-ÔTÛ²âå…w¿˜ÛktëxÜO*¯=VE8cµXy€ø—4¾÷^Ž¾'’wôÿlnÕÂV_¼¯Èüa9ÅÉ™ã«ÅÍdâAÛ“H¹™˜„‰vkd9–d“9FX:f¸^{š QN,œô°¼µCúÇª>½cí‡g–¼gàÍsSñâwÔ
´Æ5¡ ¶þb´:Íý¾Äê˜dïXØN¶µæ=L‰ÓÿÑ¥s‹uR®–°â„:ø»+­?½à^½÷î3îtéíã©vÊ?©˜‰ôrkŽñU>©bµÈ®tä\‹…Ñß|1áà«w¿ýöö»?Ãî8ÝF²G³`–þí7wø$Ž­î|A¸ýÖ¿ jé;™»X•ã!ìe)Ç”‘0”0c˜ÐX¹²Ü-Ú@ÈÄji%'IšZ¨Ð'F6™¹ÏìÝ×ÁÞ	 ¶Ù;_Ò|{Çdˆ‚¬³wDY/(@içv°8 
è§`ð(û”@ßdð¢u'âô:´$_/§×© ìÁéuêÜúpz}¼$k,_¬káO×»ÁŠ	<ßã&SxZoÉ^žO¬Ýà cÛÔ¸¶þ-j<åmkÙ»uÃÜWûÄŒfŒæ>ç,ÛO•HGÌ-µDÂöã59'&1ØcbRf…µ	ÅÂX }-1š˜”BdxBRÈ"”(c‹J´MxÍŽ¥òë÷\ÜÛÙÌñ%ßñqž_ÍÕdâc ÖYd[¢äÞ~ü±Î~Îªæu¶Ís¡“|š-VæìÚÐyz1_N§~´ªéi™¼LGº-7#k–oü‘6±zR ‰©‡Zù Ar'«“b³ì–‚Òº™› Xw¨Õ,†+3,/K´ï»ËïgñjŽoJvï”ŒÝöRåêcœõãêü$Úx¨¦×ÛØYŒ
®¹Óý3‡Í8Bu‚`q¿lß¢ÍÛ—£möÓEfÏ²ÏêVeãV÷}¤Ý£¾™{Y¨Î±†Nxþ<vpì,ŸºåDN!ïˆ2p0ÆêÜtlçó|þÙCv®Çá7?}çNbïžØÉçlšæpËñ"óz€¨5ùðê[·Gîû2W+Ûœîqx‡XMÕ!Üƒšq‰1vœQÄ¦B(¡1…Â}uJäXÉ¸‚†ÀDSîhœÁIF›‹ž¹‡8îÒÇÜÃîQ²•‹@Dd=P› „ êÍ=Ä«‰ž“@/† ½ÝãNÁ?t(vNË?¼¤àÄ5k§j{Q<Æ>‘‚gVãÌjÊjÿy»¹2 øÊG-	.$tLcZä‘&J3jSËóK5²„3:˜vã/uù•W¼¿«Ù¸NûË¤.ž©hg9*çü§üw›nùÁ\U:xß—&4ÏªxsÔ°p›o/Æ+«G°ÕLTƒO×YáSàTÏÜ„	Ïm def™ûÕŒ/Â0Koóý¿,Þ…ÃhÍ§ÞwÃÊ…0|ÃÊ…¤Œâ]J÷þ³þc?þ…`zfšyØõ£r1ñ!¥ýº®ù–Î²î~Ûãà6:Ò#wçœ Ë~>•‡-ÐqïÙQÙ½õ~ÛrpX€Ü!DÙ cÍ4ç–s,!æPKˆÖ:I*(OïÔ€È*”¦¤Ì"÷‡IÎDùåx…‚#Êà1Q†žÅƒˆÌo»‰òY­Ð‹,³þ¹NM–÷V1œÉò×I–c5(Húì§ùôs‚¥RŽS¤)HJ¥ûGb…‰CîRcNœèì3&ñÔ&†û”¸Ê}ª€Ðª8¯òJ7RO'õ8³¡vrsðz¶£‚°§³óåtˆÑx£[O4UMûç]V\Ûâb‘{ú)¨ˆk‘Ï‹Z§ ”R ë}JYLîÔêz¥Ú=É'ä˜íã«ùFéuÏåp:ÿÌ±q›.¿túÔáÖêð®hˆ(ß…•"Ö1a¾+Aü,v
Òu€E ‰£{¤í¤[O!V2N#RŒRk2Ú®”÷PS$Dš$ÁB %1ñÚA£6žÀ	kˆ%©mJå~¦\M”KìPÈ6È~Œ ¾v@‰WÒÖ)‘kœÚ—rE¿ž´kŸÜßÏjõÜ$bÏ`‹>=–+‹·wïj÷@Û¢lÙýÌëÛ´+Þd^±˜qq³~4#µ½ép7QT7‘ô¤gTå¨K1åPâD$,aÒP“¦×rÃ	NU–r´<¥‚H'«%\œ¦MA}ÇŽ>ùâŽ²|txç2O§ÜœÞ†Ýß7+Ê$»ÚÒy>ÌBÿ¡x…'Žvy}fˆø;)ùòs•èÐð•Mí¢=jn£jå`ÄéNúEˆ÷sª“/FÝ&×¨ã2Æª†1$}éÖÑæjÞqÅ›Ëdì˜w@'¾¶V}°K {¸T·Ò¢¦wÚØYjît2¤—³]•yw@vÔòm@¨ùÄ»¾ôŠ+›ßÏ½Òõ/ÃC}ÙúŸ0õþUQx/››yBûìÅÛÿpl›jŒXø'ŠsÛ+Wys¢á+³w“Þ|Îï=BpÝ;îâ{a¥'ò|TdÉa8—ÍÊÚƒNeÅ^dÅ*ñC1íµß
xU:±š0è>ÓX{'uk¡WŒ;é•+Í¤B##u¢”Nµ’Û(ÅB¹?§b¼|²&•Ä¸VM.œäËâÒØæÒ(i(&@1zä±¾áôE*†ò¢m2-Ožºª®dè—Ò`_=Ã‘Ù´²„öz†¢;[ø±‘çºÇù)øºªNW’öd…f{g[ŠÌJÿ‚r5P³§P,¤ˆñÒ4E‹b(€À3‰Â M¦	‰0)IS‹}Â B¡¦MÜgzGÏ`¬Ö¹U‡P¾¡u LìKÏžAõ°?E{!ŠGÑú*úJ-§&mÏ ²xJÒö¯¡x:¡ú´Bã>tq®BºóÙbX¨i1Ô*`ía9·‰å4÷¿"RëH D«´S=ëy¤[à<ESÊmBišÈ$!§
B¡§®	e2ÕJFS© Ü¦YÈ‹¦ÜÉo}á»ûy6vH5ŒÂ‹_UK®ê]{*VLþ”ðOÍ$5” þøipé¶mªI6¾Ü©b]ÌÃ”'˜óuîÿý¿þï ÿÕƒO>Ùžÿø—eQdjzñgëÐ` &ÿûý?ÞÙßâÊi¹ú×@envÊ×ÊVIp°.ƒ¡óÙ¸Þ—Ï¥ç*Áúnž-|)q›ÍeÈÚ`ìníÒÓ©×}÷Oó'á6ÔØ.Fƒ}±ñcW[—¼ýP€á½UÞv>ÍüÁ{š_-­ZÇ@g·Ù8l­£¢>˜Í5Oî/>ZÏdxÀ÷>½_Én@„ïr^—ÓUÞ?»*Î¼ÆÓlª¦:SãA±œÍòùâ"4­YnÝxðöÊNuÉ„|tÏ¡ô ÿI¹?Þå“ÉrºÒÁWµÃÃZWÎæ«ÞK× wô”Ùblÿ¿ÿ÷aÃ¶ÖZ;3ÐwÖ5s¿'¾¶¹¸tÿÝ¾êûë§Õ~Ž?,çîb¸Iû¹­nâEâã8]KuSêdà¦ûÏe•]Ñ?©ûA6ñTÓ²J{˜è$w˜Lv•9~Å'aÜ\æên¶Ïü…-|§U%u_mÞÍqµáÌÊ¢íë•ÖazîðEõîT<[°y$ó;wÙç¯™»žã"pÞs6Y±pŸ„{—ºs_ÎÃ.^T¿^NÔÔƒèjà×ƒt9Ný¦„ð[¸qFÝ”ÛÈkëCñù¥ï3Ÿº5WÈÏs8~Åîæ–/°ª=ŸÜÞŽí×h®ÿ™ÏóñM~«^~_©Á¯“™Û[úüÛX™lâžÉÛ4›ä·þC‡¼lØ'×ÏG‡(ý³u£¸KñÖ?æpCü{]]¿ÓaºCKý…wÛj×îHÝÚf¢×›…
*t¿Š¦x@BÏ¦ž>÷åŠŒÜMz3˜ª7gÙNÎ‡©7=)¹‚¼+æš·æÑ]t²^W„§*•SÒ«žûç?øj*míÀÎ•Ìy3Jzú¬¬ÝáÛN¨=We#Û°s@ßá«oýãûJµñRuÀ$pxx	˜Ä.&±±€­Lê€­ÕHê€óXÀ"p»l»l}8‰…l-{RœG»Cºˆ½¼:öNšØ=7±{ncßÝI»?¶Uòª.#ÓØçàèb,ä?bc÷'}Šé22U]™XÀØý¹Š½º×±ûs»êëè÷u{Ó®coZû³ØÏb_lv»ãYì‹m×•Ô ÿ{+n¢9›Ø‡x»?7Ëá"ö®Ý,c)ÎMôÒï¢»Œ}ÞãØ1¶­•Ãê±(u{7Æ±4‰å‚&±¤{2NbéÝ$öõLb_Ï4öt¦&ºËØ-šÆâóiìþLc÷gûÆ¦El—¹ŽŒ}byìŽÏÔl-kà»XàØ#šÅ¾´yìêç±j¯ÄXŒ%¤óØí)Tì+/boGac·¼ˆ}gEô$c©T=ÇI,)-&±´´ˆ½ÑO·øg,`,Ú(bŸnûnŠØË[Ä’²"ö–/b/Ú"öþ,bïÏ"ö¬£™¦EìÉ,bOfË	-îcf»‘ËX–é6ö-Üæ±ë¾‹}ÚwÑòü—XLu¯f‘¿ÇÎò÷î6[xed¥‹lƒžXïÙ’æ¯¢€š´£ÄèË¤õÁ´«K÷Õ–îthð'¦|Ø¸ŠMã#˜—ÃÈÏcVF	`*+1Ö¥	°‚0©ƒ–	J5ÇÀXmH‘ELŠ¤Ð	F,‘ÙÆLØfå³Ýøl7>ÛÏvãSÚá>.çþTpe;ö3XÜå®Çù<¿«›”/ü¹äjn‡¯^ IÅš”0“›1¢ˆJ˜ØÈo'Žˆ1©žÉûÇÜÓ³É˜æw6"wžÈíg#r'äÙˆÜ
x6"w@žÈíg#r+àÙˆÜ{6"w žÈ€g#ràÙˆx6"·CžÈ]g#r+àÙˆÜ
x6"·žÈ€±FäH°RÿeEŽz¤-ˆ¶47v´¿­:hcj£öu¸ûa[2íõI¦µÃø}£wª²Å¾Vn0¢#RmMr³ÛÏ^FàÑ7‹‘\å¡ˆÉlÊ50C-’iÂÓ‚&˜bKu¢¡´@ÐˆÊ‚s›R­ÐˆAƒuƒéû?Ô­ÚÊ«]¯ý.~ÌÆùbðêã»-ÔËý*í¡Ïz‰çªô³7í­„dÝöË,/Js×…ÎÇc«ÅÀÝäy¦½elž/¯®½ÔÏmÎùr1[zCµ·T¯‹N¿ýøcqá§n¿,æJ/‚±>~ÕåÚ€üû)ØØr÷ù 4‡#oC|¨72½6nEeA÷ýd'¹[ÑOj6³æâoj¼´ƒW?ýô·?&J_gSo]MÎNìøÞmÂÕõâÎúŸÁö5_z+f°kÎœW|ûæÍU¶¸^&¥%ïai:Ÿù…½Y_úÆ=!}ñGR¯]%„@DòÕ-ÞŠ3ºaÜÃÀ'…­Ùö0XtWÞÓ†G5l}N=|o/?\ó§7òí™i,~Ž%ó5"~ŒàwÑ¥Ûé«,ÍôläŽÌcö0ÝoWÓv$Q¡#<ºüëÛ—ùùS	ŒêÛY>ùöèã­†2_&§ìû´“·_Ôd6¶C¥'öIyšåè|é1÷Só4‹*ÆÖÎžf”'YPqÚQV(@çóÓ]íú O³on9ùO³÷ÙSŒq’Å|»èhW=võÕC’8D$û‡cÛ‡ž7põA"|ÿÃzN°šµyãønúåP÷{ìXÒQª¼Ï¤`Gÿpí‹à»ìYõ¡šNó’Inß#{+‘ÄÁÝµPI6m5Æ®ººÊó«±]-Ý}[þ„¢½øUÕÔ	P…¤Æ6òj‘oëÿèjèïËhbU±tË\N=K5kµÕùVãüŠüãÛò'tw’®ŽñãÔÁ‡Ÿ1ƒl7)2OTºZ•×¯-Ý³­þþs©¦‹¬]é×ÔÖûÙæÆýF‰®V‡ÆîÿÃâaªGJûðÝŠ¶¾ ]…FË”	ƒi ¢Àî¤G¦@
¬Œ2I­Â:E&M1Ö8iQ¦–»	oª‡¹R2ý‚±þJ/*/ìU¡êfÅeØ%/îLçS[©)V®‹ëüÎKô¾lXžVc•ûQjDõPmºVäÅKí<Vj‡»ÿ ÞÛ!ÆBAj’»ÿÈlw"ÕÍKzâŸJˆ˜¬ó…Æ	ñÛgub¶dŒç1¯ÉõBxÂ$D¤„h1ÁRÉ1”‡Ð€r¿˜E`l“cw4¦ˆ”m)çISµƒÿ(ZjeWÏ¼ýD_~Ñuó d¬wøâQ—ˆV8"ÜÌýŒ1A ®q$@*Y$ÚªnÚk=Öbˆï‹µª£zA²T/óÖ>Øp¡¯—‹l|@>|¼ÞúEbŠÆ )d	Ò‰„ 1H±QjX
ÜSóÐ©¤2©	°&	CØ‰YÙüt¶fÏBÐ›šf³åX•ö¿ü€+ºjÊ›TC·Á¥Õô¡o[ïÙá’‹ûÓº/^Š¥PEi,šåÕŒ»¸³v·fs;ýØâµÎs"b0Ý…8¹2jM+7Ú—Ò:æøÒér’¸s€ƒkÇ¬­ÉÖ\¬a½á*ˆ>ÞT,Vf¨rÂîV|àãÖTÙÿI#Äô½›«ß„þ}¿y¸–íQb˜nG‰ÒP†ø¯(1A¬£u$Ý5ìŽ[Mm®þ°¼ô=ÒúŸ¤ àé+¹ï^öá!a’¢~È:<wAÓv4F°-×ýÃ‚Ú»ÙÝ:ºŒËøßÔõÿ}þþD×-³0íëÒav>n[¯ûúÕ{»Èg‹o¿½\´ª¯).W%Í”'E>¶‹^—çÃ»/Øm«ë­"k%v¶¾ã–RlÆ^/&ã ©»@ŠY„ûWµÎV /ú¶èg]ƒ]ÍmÈzÛ[`Æ]S™Û`8ë„ê (Úìêd9½›«­EíÃ]Ý.½5ÏÇû²Wxg=í(qRa­¯œb¨“­á)J%”¢Sc”H³”Y‘
(9ÔŠ&Rj‰¶¸¹ú[>v2à ZV).Ç…}»4YÞâÛ³†T=¼«zxUÛ¥?•|V©“¼ÿôŸUžÛA/BƒWÿ6É¾Øù¿ý)ÌÁ3/µ1%òŽ»M~œ–MUJ/ë±*|œ|h:ó<œÙ+ôsàƒåïóe ­&™ä‹ë0F5ÇÅ]«¹¹SsŸôà6Ó•’ûÜ*Ç×ÍÆê>q7ÃQ¼¹U7“à]fÇ÷'e¤|.×ûCÉøM‘§?Ç73¿5ÊoÍ›KÙÆ[mi€ÈÞŠaºï¤n¾Q PbIwR÷õÔ†îâaßŠI'a­~ZŽýö˜LR>Þ¹òƒ¹+aÏ€ûšFºÕµW›ý¨º~íî£kð6i7êëê1†õjêyÆËq-¿¹¾zT5R‹›¾…†\“ÉÄ5b½Š>«lž«zH½ÊKû†½„	‚~œ:éo®†W‹Üg;V{Õ…ÒúsÑgvµïß½ûìnNd;s3ìµ×àó,û’,ÓÞµ®Œ¿¸ß®_eyïq2ºhDz³Oñ._»ÿH{Ö_ô=¨ÅÛýD¥½ËÇ¾OËðn{í÷>5¾=2œ¨l:ÎóÙÐŸóQšüõÃåŸ#_fè¥÷°{TdWºïm,FóMŸËRoñî·ßÞ~÷ãg8Â‡´Éþ­ƒ¬þÛo?>Ö{5!xXû˜¹Ÿ^±]½Æq MêÀÀ»IíW‰ŽàÚnÑK’”TY-¹“µ&­"4µ”J‚ £	ÇrIÅ4MUŠ¨áÁHÂ™„)²X6ybø|t‰“óÞJ¡­,Mzß¦‰wB^C+'G®÷çOQÊÃ}üÑËr^š·sw¾n%·=™ír~m–SwjÇØ&~ÉGªí“%‚oV«¥’áºb›AwV]²×zZŽÀ!êU{ÝË]ør×Óä:ÛµÒÃ]%î©Çö¤¥œJgÙõõŒÛ¤šï»£¿˜ªëý¾Ðº´*¨~‚Üøêí‡Ë·Ÿ#ý›ŒÀ\·ú)®—R«SX}|ÍwÄ2*½šÓPË#—no¤±ÊÔ½) dJ@m¬‘H­SÀ”åÆý†îÿÄÑ?aÁ© j‚f©e©&T)$›t©g
ØF	xLq$€lP@àF½ve·›á.ºÐO÷ø‡§ŒD£
µŸ–v¨¿Zb«cÜE÷nYÇÂ}èíÛîj^\µw=Û—†ÒÑÃÀ=©h¢T@„´Ü
Ÿe If± @!&R-RL"B¥Ž€
¦)ÂXš6PÑÒõe8öió›2xw§¯ÔÔíw j1Y6Çí×ˆk:wÛx—ÏoJ—*;/ŽÚ®2ÎÍ¯J7ï†ä3;­ò¬R‹×g²œfé}è,)Ê•“®OHŸ§Þ|ìð¶x”ÜÀG y_15(g[:ˆU¶P=ÎÏP3Šùõ¹ñ}É‚¹Ï‹àÖV®ažë2wþ½[RØªxZ„!NËiø@>oƒÞÉSHŠ$ç˜Õx
ÿ‘ªw§‡	Ä–'°ëA‚O`Î™èæ,fÃðn†x/ƒfØÚµ¿ß½~÷ß_‹ëïÖâæ2° }ÙŒUñŽÈÑÜÖÀ6ÌŽØUëÑ³ËálbÔðæ¶-hÒƒÝÙDÍ²#ùž×1L¼š¿Uþ£Øw·4›šÒÍ¯æJÝÝ´}=·³š=¿Ÿ-ãížm~þøÃ_//?|†î¿HÖ¥¹ƒHº÷áWÐ+Æè	l_“Mî'zû]KËÅ­À]7ênµ‚{6‹<žífh¿f‘¶ íf±lûV³¾ÇU5cû5‹M¶ší·‘h¿ÓŽ5hm7Ûs’û6Úï´Ñ~§Ä^Íö[Ú~+ÛoaûÝb¾W«ø«ÿùj™õAôMü`ïýÑ¡âøëÿy2¹íåIPoâüé§¿}†{øÐ:þý|öŒROâQkã‡üøÓ÷o{‘‘ÝíãQECûC'ÿXv·6»ÛÇ? ÝíãŸÒîö=•—°mßgUkäGýôËÛw?ô{ZŽ[ïû´ÖMüÿá;÷8ú\”]Í{\Ô]Í{¼Í]Íã	ÁÎæ=.ùŽæ‡Íý°©6ósGëOsGëxŠ¿«uì³ÜÃ#­Þ¤·Ðá›úhKßœGŽ8_ôy¿E1î'UÖì!R6´Ž|îËxªï~¼cê;
ëÎbùåX]FëìkZ¾½»Ît›~âËï½Ì¬Æ`8¯ôgzÑj}›{ÝÏ:îÓŽP¸Z Á›Ý†N»ãîüUáÓù¼m@âé;NZç“™ZÚK¥~?´›µš­µï"ú™Þf&Sm]y.oDãtz-ÝÐè\YÙËÐØdyåÓ‚G÷×1YY‡L6ÿ·2	w°D=
Ã«¾Ùéí£owuñÆd…ÎÝDšûZƒmüÍ2±ÃYn¶“|·1V‰õyâaßä³²Îl\£iQ˜$t–…Zª>uydƒ‰~¹ùuø±{?v–k{¼[°s=òf‘È-˜M2ÛÚcfß<r¥íêðÍ:6)²ë‘yÓkÎãüêªõî­@úÎ}³UÇü·û­a6Ï¿Ü·ö V¿»ïÉ&xÓmi˜Ma}&ùÖþKõm*T1F×»¸/J;QÛc©yÓBXf?{Kä¼i9uØÖ›ô0¾ã¦ã]‡¦'žþ´ ìFÔëo'*´~oÔb×Ë®´Gd;€ådæ–Ý
coƒI¿¢áÐ ®ìt¢Ú×ºGÕ¿FzÇßi¸ˆ5Gq[þQäÓV€±nÿ:¿
þ@]3u0UÍ„.°Ýw{$PÎ. Éc¶`Âó;aJÇV0÷n’öŽf÷‹ëŽƒhÄf5\ßt@,TûþŽ™mŸjP?µBÜî å÷NV°_l‰|CÆ‹ë›k;~üN6ú®†-¬Zø&ÛÙØ?vŸ9k=\åí1,®#LnTÓëØÚ»[¶:ÈmwkWƒö+½«ÅmÛÅzÔ`7alý|óÅÂZ>‹ÞÉ€ô?·!»ÇM®B^›hð•£BtÇô›k`T6Ž>[ßÀN\‹üUXÆ>.C{Ì¿’ì„o§*;›4S˜&ðžÇP5êwU#Ç«]ÅßªÑÜÞÍ³FÞig³¹5ËFDßÐ¢ß •5³b;ÀeâÇ´0,À.è~Û:SË¢´{×ñÀ-Löcè"»Ú¥h÷6¢¡ï±/maÇS»n1:{ùËþäŽÅˆbŒ¥€*Z•P˜RÌ™U”BË•O}L
€@iŠ„0Œ"÷•†þ/†Úž³Ëx¾œƒciI®–eîð½¼ˆ›ºz^Y‚c]d)D>F§î +9ªgý¡’ÎÊ\Õ½ÙÓCöÃ±rþ|•Î°˜‰¾a§¾°aÛêrê;<v¹Æ6º³vG™¨v*ãe»q¤D»+uöÁ%Ý”Œ#Ø/À–J¨R¬œ i5LÂÖ¤Ðb®5¤ˆ,â4Å\’Dk†=r%sË!î…aKäÖ™Ï|Ä LÑæß72ï…t7s˜û>ËÞ} DmÌgT`ð»£¡dm…?rÄ¸¨Ç?JY&[°¢úä ØUøjb!‹“)–²'N^ïü1‘gè0&À¿?öŒˆpñïH2ûHÓå¥çJÙÓG¼¯uO§ä¾nÅ}ý‰{:Ûöôaíáq··wåÞn•{6ŒØ„&?Ä½Ÿ,äèèþ7¾¿#c1Ÿ`ÚíÎ·ßúíiÝYøÍínGìVÍ[k¿ ;5÷Éö[O”ã‘ZþÊN»Œs“2F3äsÚnA3I‡…m>?	ûjž`D,#8IR…Fi*ˆU‚s¤™HÒÔýàišŽ	Kyª'µ&3Û›‰Ö%@) ÞÌbÅ!°lË]{ÐÇj{HÄíTµ@	è«Z81{t%À‹gcûF3>eðãž!c_AÝ~f{Åž|åG=Âž-^çÌ5ÿqÍý“¯þË1Ïû×¬<€u&Æqc©‚ÂH˜h«¨f21HÍ¥bîc„€$Èqx	JS­%)çVr)xS
Øïó±KŸGŠzìà‚›yæ=;¼xQ¹~ªc^×á\Ï`YØt9xÏ@qBº©û´êõbeG\UskY•—n²EØ•rÒ;&ý0³ÁàÇ…¯:7^ú‰¬6µx=øËÏÿôsñúÂ¯*wƒzd¡Ü7ÛRJ’/ƒu¢©kísùBè>»‘OÒ‘-2[ÉH*”f.ó-ªHWs5»Î´;Ì î<»xÃÁ¶x#ß)Þ8^š;r³ 2ÀHÈê‘¡Ð‰M12N®7ØýøÊ¡ÏšGHùY22ì%È8ÐÉö}¤T›ÿæÈ"ä^6Íw|ñaB;Œ“ûQûÅ£¹¡ûÙ±*™.lI|ž\›Ã8L[ˆAàÄª$¥	Ú lŸ‰•2B®w§‰§)#ñ>ÚœíJ¹Áz„4ñ¹Ït  ?”ÛqYmÇJtžOC»¡Ìy®jp«ÆK[\<Xîÿ`èÈ“É</—,Ö¼üòÃå'O,ªïC:7‡sï}wù¯|ØêÅ¥µƒ¾»»»Ug:Ò¹¯h7Y:šuæ‘.ç5Üþ0/U,¶ð.`#;:Ä˜F›îþAŠ¦?¨r	3$@¼ÛtÇÈšÆx.TÅÑ#ùôýãÚ–½¶#ˆ‡Ç¡«.ýºm±(zHr;ˆÎa¢Tí¤KÎÒ;À>9ÃL« °Ža
AƒiB0BÈŒ/‰JÃdšŠTXŒa)Å(¬—U"‚Ž½_ïÄéIØj×¯ªú…«F>³‚#8ŽÏ
(êOÏNpÄcwœ&‚ãøÍbˆPr_Í£FpP_‚³Ú˜3­Ù‡Ö¬P÷¤5«Ý?™Yu¦0{®º“l< ÷£Q'†—_ÌÞµ( )ÐN´IˆÆjÀ 7(U0Ö˜’BÒ„+À¬£![.¥µŽv’™büvâûïž‚b¬Æ*)†ÇÝÕ9øäÒ¾Ä„GÝÃ2Þr8«…w“¼ 2Âãå¶ää­ß52‚D”KçŽK{&#{‘qYíþ‰ÈÈªû3y‚Êy8Å)ãýŸœÚN¸RÚá@¥6iš¢1I%aØ}&¨á˜1`KˆL´V£H’tLj“Mÿqùó_åNžœàl÷ìÄCÆË ˆn+½0"´N<0ï+ƒøûw&{p˜®Ëïü‰ˆ†ïúL0N%wl¦h9˜35¿yŽÂ=¤Èˆ„1L1‚*IŒûb9g@˜0n¥”@rÍdš@¦–!­1¢œsudã­Û²k;¸,wãIiÀöð£AÝ„Îg¤Â÷Û¼ñ­.¶l'Þd¿ÑÅ³“•èš8Á­:{PJ7T[„ÄTÃÙ¾ÔgºòIØú–Ð÷™²œŠ²T¤àh¤åËä9"2ˆa€¹‹Ž¨`2”b¡P
QqB‡¥ˆ#!’@‡¬,§îâKÊ5=ª&Ë!úß~úð„¢ÅÃhÏMxäÈÔL¶c…`ÃœNŽêGÜå;€} Ø'ÐxsãO„þ]Ïgä*äõÑPÿïŽŸÏ¾<öXBâî0WZÉ¥	a’až2“Z˜Re5²Ô:dÄÀ	·†ª„ŸËÇÚc[¾ÿgµ§·bxÖr´;†w¿*O"Hª{yº¸Ssûüt‚DÓ	¼íîêŽßÛÅèó½èD¹?gRñ6ðrïOD-ÊÎÏãTc…âB3ªWè }ÌÌ“SÂ4ãÆJÉ’Ô âîµI‘ÐS&a¢„w’ÒœS‰¡PÔ&<%˜"¨D…XÕø)7Ë±¡ƒjå{Ð‰É®AV8"2	#.ò‹j¤ÛLÕ‰Ex0Ö~O¾¸3y…ÿôýs…G<±„ÂkÇ7tJÀºN	r,zõëy&{
ŽÐþ¤¢¾û' õîŸ‰\ôŽÎÞ»pî³„uÇ„ô;ö€ÐÇaè-$Ñçá+oPõës¸HfdÞ”èô(ú®–Ù³$7‘ˆc,-AäT0A¹“¬€q"”ŠÀ2bH"©à@«`“*íoY±Tãì÷ë>H7á…U`a3yÜ·ÇÑ:6Òmp-62s£dãû‡àÄÛÝ\ÔªñXT¡“cGfÊ ™’ä˜Ý1¢%	/1êóSXíI&Âd1Ç A²¡µs7AÄ˜nÜî-µÊÆßwÙâÚ±EÚ®JÅü!É/á ô$¿j6sÛìUö¬ÃÍ&úÚ=rýÞ,òY[³ZÂXwöGÍëú;rw/6QŒ#]ï?ô)ýø_ú.Ÿ‡Ú’tŸ&ÿµøÉg<j]¡Õµ|_VŠî1Åu‹^3ü«]øÈûžcm´ê5ÞGG(—eXÏA7í5òåíUÏ×-zó÷Ì\ÙEÑs¬VñãÙ2¹ù°PÓb˜æÓ‡ÊÝðWZ.ú<—Zƒ÷ïÞÅó¿“’ŸìüUpò/3ÓÒS—è-FóMŸ3®·x÷Ûoo¿û1¾nóî¶±õ‹ë­ÃBû-²&ûÎqô4²]SÁéÎJn› E7òÿxn©Â³IóŽ"xËÉla¿´w4±E¡š”0ÿ\ÚŽÂe^dˆ¯-²±Oû‰½Ù$hhª"¿c4óŸ\¶jL8KÒTžBÌyÂFš‘”êT
)Œ&Ì
¢•
À„;ÊJÐ3ÇçƒìZ®ÝË’«åÆùUØ¼cÉ"zÝJØò_G33îÚC]„Qx15jnšÎíl¬þöÞ¬½mk½÷¯àÓ7_jwÙ…yðÅ>O¦ªJŸ8IÇ©îúú&£Í.M-JvÜ¿þ ¤$K²,‚”*)íow*±Ä»æuWé]jpWY»ï•äøŒÎÕ\”lHfDâµ¼[J	X®‚)ƒ$Å”¼á,Û“´²%ƒ6¶äÛ¿OxÛÀ¾;[òQ4\*òX½™&bÿú¨øÌ7Þü$¯å1å‘²èoSfº—V1{/bÀU¸z¹êH
`\2d-7Æ#À%ÀBzk…cÃ1ÒAD,©¡½ÅkC„ˆx…ƒ@àw•f«/‘ø«áÿòC¿øÇò¥áZ32D„XÉ—¦iGOðûÛ•xb¤5ö/íþ@ÿ÷ÎƒŽ¶×ß7´”ez_©‰;?ÿ¹<·µ5}+âj\¸ZÚŸÃÇ{~þB.þ°–ü—²ÇîùùåÄÖÒ–ß¯Þ”o°žüýå›ßk©>~|U_ÔøkHŽ„§a¹§‹Õ>UhØ
Hïöóal!Üêã ðYb<ãÌzœâ*caFiÀPQÅsá9`^H¤\#mËLõ{ ®ÿuAé™ßæ“ô4wÖz† .àJ2Š I5Rß#ä·‹2Þòï7ÿ	ÿžùð÷øOˆà‰°{XˆºŒ{ÔþxrÕœ¾lpQi‹¹ÂVÙ…ûÔ&m¸™2@S¬ °JsH¨€¡F=_7AÛÅ§¿|]0]<ñ»ÒäÔ~~!Ö ”/ŒÁ‹nP)@:?¶Gm—×É[¥_Ûú' Ñ9ë?#„þÐëlö‚]…w]3ÏRõ?A$ÄÄqc~!c§Œ¢<&,Ô+O	Ê#…Š™]¡+¬üë"×üßpÑô‚°õàfx‹‚«§öˆ\-KÒ´(u¶ºóO \3ÎFÜz2Õ¯! þ~ñöüüÓðWrŸ º@¼Ýð3‚uÔÌ™`OŠ™Â.^b0Xk}$¨á„3Bˆ”0Œ™Ä„JÄ qPe=çÀ{an95žNË[?¬t¬b±æV˜¸‰MÇ¸õ°@‚Àq+ì"†«ÆKˆ£Ûz9+bdRòkÙFrù*çå `‚pCUk)Â¥a¨N#rØ¼)û¦üQã<Òfô¤!=mHÏÒó†ô¢!½l²ÕŒ¼áq@j:Ÿ†Ç5<¨áq@jxPÃãÐp{îNÃÍi¸7·¦áÎ$|'Ÿ¯ªŒ2”NY2ÿå·7ŸQÊ½¼¸S8âNqˆ;NøZ?÷û7‰œS–Ï¸¸øGâÒ6KYÔ†a)ËYôo@ºÚZ½åÀ”5mØú‘öcµ{Ë	Ðæ	WÑæ	—Òc=æ[L¸¨ëJ_?p2VÆ%^Z÷´åS>}|þòuâÅuëtâG=§,ñÏ×/?êÃR>€MÃÚ>®íóR¾šMãR>šMãR¾™ãZN³å,[N2å³Þ0,å£Þ0,å“Þ0,åƒÞ0lëç¼w›ÝŒ_iªÄè«'¤ØðôÁôKíÍ´L·H>¨;sêF]ç§¦—‡Ÿ'`óŒ|Øï	äf|7šË·Wwá­>{ÿáõ»ËË·Ÿaø¿ºKhVÌ)‰h±/‰Lï“8jè{ÿí—¨CÉžýþ¯Ï´vUr{
MòÂÅhLÂ:ª§=o*EVZ%¯»CW©ëîÀUêº«o•ºöÆ[ÊvO§L~!Õ·$Í§PE%|¥EÑKúDïé}ŸaXýYšÍÏR=ê­@µ¯qu@Ýñ[¥æõÓ)ËW¥’eÊgáu_þïå§×¯>#P'¤NkµÁU1éý ²Þ–Ì-½4ûóÁ|…ÈÁ•ÓSé¸7œ)G-!Z@­X0‡Â_©Ò˜ I 5žè)†2Æ ²G/LôÂ$‡½Q"!Ykiƒ+•ªÃO$I
#à…9d‰~Ù4Q¼£ÜévIÐ°åÃZ>­]‚wRíÏ®›VÃšÖNZ8rZãí†‰vÃ+þ<pò´Õ²À“§ó¯9€Zkw¶P»³…Ú-Ôîl¡vg«ÝF¶ÛÇvÛØnÛmb»=Lÿ<ï=F-†,;™¾÷õ.¨dO‹!Ë.©]F7XòFUòè{B›1+«ÝÆ7Xñcî«Ý´Ú´gÖnãÓ¯ÈÇ\[»O¿6stí6>ý*}Ìí•<~É£ÕjÐª,™ÃÂ¸ßbÈ²[l—Ñ>³ÍN²†ïøôŸèfÏÙNÃ| ýh»ŒÞmê»Í¼ÁÅ²ÑÇ¶Ëè—ÊFÛ.£S.”'õ¿uPnæW;­Ÿ~Enwï–Kz¼s‰×ä7]â¸U'\›1«ŽFÍXž¸uË½ë­)ýÌUw8µ«ç>¼ÄÇÌÝ]Í¨^½£/öu_‹AÉ;¶êñ;ÌÊØÍtÌ{÷^ê€{ÿ]ã-¾ë¹­õ’°Í8”úr×Ý-ñä9.»üZYó&1˜¦+ìä5|hÞ§óðÔº÷ ©ú“§q1D BŠqI ÔÖ{…­öV1Ê(?#§¹rNKÇ >+9#Vi›8+ÿ_¹Îá¨6;«Ü<íüˆ³±eŽòÏÎs‘NÍéÃµÔBb¾\„JBQrBW¹­ÒºöWú³fxÚ¦óíýöï[³¨¸îß·‰ûW³>M•>•À8ÙÌª»_žÑ†”ÎqÙ×\VSHó¤ú™ÅÓÊìpM¬géºøöÓ|Gž±¿F¥-Ä0¥+,×–i‡9¶‚!´ÑXxÅ€øÌôR2H©£Jy")Ñ^9M®ü“`6MîŽHðZÝè³Ùf“”Öˆ`ö.ÿ¬ñ@€rt ¨ÝÖ*xDí¯ÚmüôOíœoáÐnãnåUkâûÞ@?@Z˜_2b Âá}	&•ŠÅUÕÂ°i«¥YŽ¡Ò¦µÂqV#ÜñgkÍ¬rýáàq°>È†åßToF›=õûWã²ÉµšÌø™š÷›Š3ôÙ¨ß^Åð:õs7]üX
*+Ü$ÒÙ¼0Ã°}ÎfJ{%ØåÄe^ŠOKúœÄ†Ð£¥õ],	T,?÷~‚Æþp–eo&>Ši8±táNfsXîæ|³Ûk7ÈÔ(ÜJ£q®&îÇr
óu…qù¸ìÞ5NJ¤?8g‹Š{X…Á½‰Â/oÂÙ–«Íx88ÕªËšïÄOå.n|Ðû¤ÚáîûF³ä†Z’J±Ä ŠWjqR$£ÙéÛI,úóŠB¤aQí¥ŽÍ³ßk×æÏ'`Ùq÷æl4Ž‡zË\“ú<fïÚo(X¾eÐï7Ý.x75 äOÙ\71Æ¤«Ö¼NŽÆzl|jàÿ£ãw|~b|ÎA¨øí’o˜à9Ì¶v&õÖÆÄá÷?}|ýüÕÅëZ² Qÿqê§½ÞéØMÂ¼ó(Þ'‰@q=ìÙÚ1QœM"ŠâGa’Ó)K5-…°ïÆ{'?Fzz¯iO5a6úvœOT©I¡žUºWQKÄÄ+79kSwgî‹êzî´ŒÆJnü¼rÛ)Ñ#5ö*ŸœšÁd]•ãêUipFÏÈì»R÷ÐN{îs”žÑø+†è¯‡ƒ²’®b+È©t[M%V2'°ÓÎseÀ3œ„Dk¸ñ A„–BG˜<¦bWËÍþ6:{×\ê·kÞ«ÚŸ®ƒ:9ßÞØ„\]«Ô&ç¹çµ°ñ4ÚÖ£
~TØ •*WÔN?…qå;ÈLPQÝ—hšd½¨£nÐ¢OüxØ/Ÿõ·\”
ð0ücœU
JPÚóA6„QjKÙò³²g7¹*µóÓ‡yT/>‹Íb`äÕËnfF˜©åù ¨Ì^™¨aO¶Ø)¦EY„<p¿ª{¸ƒ/Â³Ãþ¡zS—=»¸øÇ'}ôÏA8õåÖÄ¥º¾ëÝ…Ç^]On]üsiÃÊY?­Þ}•O®§ú,,ÿ§¥½6ÃQ\ØO³/äµ\H$%"rI-B„ðùa_KY†€#ŒWsÊ…+šyø	ã0¥ÝåÊ÷{Z~ˆ§[?Á³ê£NQÜŸ_¾ÍÂðoEsŸíDÊìªÕCˆl­Õ¯¼³­ÚrÃ‹õQÁkå‰{}àŽj»V÷êx!lþIn†Ùê·?ýû¦öïb£8µpO¬3j	¢}.R-Šýÿt`¦ O4gÄ41ÞQÃ•—„ZÍË 2J$C*˜±"¶T¦ BÕ4*þ=³GÏ¬¹ñ^.üâï­ òå‡ð½˜ñ}5ìš‚>‹)J?ÄgÌ­ÇdæSPz8”Ìæ	¿*Šø(=þáÆmyzd,Àj'‚^näD²$áÂò‘<n[4Ã˜µh†±²ïûÔWïÝ“½h	1ÿ†¶ZÔ/ƒ(—Øk"ª¿¨±ôåÂ”<²&’{iCþ>uÓÄe||}ùée™d“Fÿ)\—åéûaO¹Õ~}À›ªEI.¨ÉùùÅ«­…×JÚ¿]¾WKôöŸa“+ÜøùUÊ;‰¯ãüü×ü£ÛWçè²5I¨N}áÕí0ŠŸcòŒ3Ã9ºÞëð7Ã”‘ÈÓ •®r	Qþ€Y(XÂ%‚z7ù£„þréÙ­ÓÑc­M]Ë"kê\é}™A«žã ø³å’ZšÒNréTE6"iZVkm×÷/€”l;vônµõ7KíÂ­úô>Ëo²,É~Ê;¤>°¹³µYà`³œºC•Ùvp²=ð®îUÔ‰v£.ê{"G¤u ®xo˜åh“ƒ ªka„q0î”i§!ñT(%`{t^„…gÅµëõ:qî§Ò¹p#“ŽRˆåj’æX,wmÃ’$¥,ÎáQ´i#Ú´Êë[ìùÞ›Èô`Åš…½zÙ\~hU ù>ýaÅ×ý"º1 º^@—Øpë‰âšoLô å¸1ÐAœJH’ÀØ§[C8PÊï èÑƒï^|øù§/_f•§mKßþ0}[1}S|þê¼>ÜM®Ã†Ï¦×=Î'{RålÕˆ„ +ÉüÑq“Íá|¶ú™½ÓøSƒ>¡´Mñùöïó9|ÈõGå7ømâM5w\¾¾zª¸'Á–|`Qèâ0gœ ‚8¨ƒ
 îY@/½ Ì;ª9Lrí”!Dj	¤•Àx$³jG¿ü‹7ï^e•õù« Ëe±“rÏ^¸ñ®çî²71–là&Ù»ð:fÌ~èY$H7é`5åœ—3Î)8ÙG_žÍ£
ÙB…ä·H2¿ßôýãIäz°ˆrÈ(Ý­?‡ïñüü²7öíõýýâíùùÛ\‡ÿ>­;÷1¦Ñí|Zzë(Õt2´¹{l¸; Bì€•
‡k:(#&b§´óÔ„0‚AÄ¥ä„3Á!/
ªÓÐQµ#†u;›Ì¹ŽÿX
fîÔ„ª›U÷X˜Ü€	‹˜@¼‚…áZ^‚Bdº†UÏ#¶ÀBÆAÃ,ãõmß?V|xØ3'®H|Yœ¤à€”¨'TA­Œ5AR·¼SŒ  p*î¡Je¸ Ê ðj…ÜÑ>7_y6«ÿp(ö¹õyu0Ý‡±d+Á0âËÉ/Œ‘¤ª+góh›ÛÕ!'Dk™½ƒýCÈŒñÁbÈj^fOMâA;­5Ø=Ø°_^oÈÄ‘[‹=2|Uæ¼m«Ã[[U?µ=0|œ]t‡uÖj x…´öZ#Š†rJ”£‡›3 œæÞ(eiøŸŽfB‰bR«Ù=zäå›Ÿ/³ð)L†A-é<€äeÙtâÞ - ÅÝÄõ»‡³ä”¸
g”s´Oë0¥”Œ^œÌ£Ô¾˜d-á+îùÞ¡+2=XØ:†É£J$ªäiÃDM,°ÑEH‚¸Zp&€c*“Ò[I9Ô 0BÁSÜfQL„Ôc¾Ò¿Œ«ÎÂ­=éÎóW¡üÊL:GõËi¨Î¥«Q¢Ñ:½¬¤
D@TÛp„õ°.AÓê‰«›þ¸¸2°ŸP½<¬U§×¯ð_µ†ßQ"h.X=êÈ*‘‚Ü9Tyg´3ÎCéÒÜZI”6^0gg’Fû@Ð÷…DX&€e€¶©½$¼Rë‡©£aÀ,âcQÚ=Ÿß¨¼§t/ïå“»ÎÉ3í\œÀÉF,càãŠ8Áá²@,#ë…‰ê¥‰6^R!ÛFU»¾wq¢b{°òÄ#Lé#}õâÍ·ãFµý`GK«)‘Þ ‰qŽ;Š)‹u¦ÞÂ„uÚ#¬9C¤°äÚ+âïÉ.Ô™Íù•‹ô«B€A7-Ë"ÄË<àÉ «J©t:õsìnH²‹•1€×b1_.ý	JÌ±ý#Ü´Q^%j›î`ûû‡šþÁÂL´G»›~ùõU]„Arïã^á±íØW±g1úA¢’¹Åƒ*ÓY ÄúæGcþÑ˜ÿ'PÝ‡æNÚ=)Ž$ä0,,UŽÉ #¹ Á+O¸ÖÒ»Øß2 ¡²4ˆZÖd&kAµR×¢NB+”ríµíŸžT\º¯í¼2›,–ÄËžxÓ¹„D“íû”À
9ËöýÀ-=‡§:™G©Œ[—¸ªv}ÿrRÉöe%3¾M†•¸Zè("|k"B'e±6NÝâ¯ÝÁ¨YI®¢è5ûfþô5¼¶òÚ¯@Wà¡ÿÕå9/©FL‚y,šN¶XS€µ€2¢‚\£ŒJPiˆ'ÄÒ ú.µ$À:Ô¢a÷²M,¬9{vÏLbŒËNó³+˜Ú8§ÎÅ9&Óý+P¬–M‡@¢{dé¥>Êsy”æÚ8XXë$‚rÓ÷/ÌE®+Ë0jšï$¾ÇÞ°Ç½³Ø8„-÷N9â,škäDÀÉHôÞa0£NÄVp8q˜{¨¦†í-²·eGµN‹zlÆŒØy¹sÜHo·Ã\M_æåë_²¤7Û˜Ñ#p´Ê_ÆmÃ÷çûþ4Øá£­w^MÜé…ä£oh\O“pË¹ªóáWGd2Èx0
Úˆ§ *‚µ±š™X$s&Úkç-uH°=Ž”blv±5´y½ºúu’•™t)Ñ4œX
‰µúÂDB.—óÁ ÉéÍ+Çñˆ,m¥½~eó÷/+Üc¾³:„O•Q|å‹.
r ‘P^zÎgÌ*Á´½ã"üŠRÐCyãƒ£¸ Z+§0Q\$vîúåçKT^–áî¸~ç‘\¿ô†Zõf©ÄqFÙê>ÒËÓ3PÆy-Á‡ÄD.;&ÃðôòôñXQ£M:1jN÷|ï`™,F†‡ä0Ü8>1íÑñ)hÿÓtÕ›ê"¨	œt’j£5 –Ò URî™b$PckiYhÞiEµ–Ž!Ž¤VAÒp;š5+¨.×~HÒÃÕƒ)u,;Ð 01lUv€Áå¾}AMjšíÅQ|heÎl¶<ÛöýKßƒ"ŽŠf`Œ:)]E1Ž±=áá¿9ª˜§JJAr¦‘¤Àx@=by(-àZmÇR³cA‹_>ü|¹¤Òuå|	#x¼ÐZƒyNÙJ&*béÚåèX¬ªe˜k£'(V™,0òeX¾««Qa;À"-aÀ#OPÒ3ÃõÃ	Ð\zâƒÊ@!¤„Å:Rc¡‘D
¬‚N";bƒ
·ñeöªËÄˆyÝýD:G˜œ
Ã¯VBÄ	]Ím`qgðˆ	­0¡um‚¸çO€	…=bBKLøÛåûwOŠ1}Øhd¯s­Âûür×Eçe3J%0ÔÚ›ØHK"M<¡€uÄ"dsf•¶x‹(WÜƒc¶}þ¡Z÷a”ŸM'Æ»øùÂ½2)²"f0u]° `Prü6ÁtM+Á‘å^8è%"ƒf§ôCmšjµ/¸7Ûö½#ÑŒïÁ‚ÑÑr•„ùÀçƒ\«A:
c9ë‘Ìcë  X{”ˆXœSÐs ¤£&@‰ŽÝ!B˜(j06ØîoKÏ~}ù¼ªeVÜæ“Àókq/M%‚E^† eÙ‹»Ì:¯¦½ÉY>É‚“O†ãêqñÂí•3?ÑAÑ1j©^1Ìt9-Ÿ_MÇÎf“á|TxCýáÄe¿üöæU@£©¹ÎT‘½y±XsçÐ„’fñw«ÐÀ
.dJD24ÝGtj–Ñ¾ðýÎï îY,F Èu_Ý¯}COx†Ïxè§‰KÞ¼¸xþêsxHêÈé>æ;=?5‚cyÄ›¿USnŸr‚isÀÒÁ‘ü»ˆ¦Ï¯|Šb8ÖR‹¬cKMœ @êãFC =•JÍ¹æŒSÔsasËeªhbÉ¬š¨ŽŒ¾Ãéd„¡@gÒ¹DƒH4­Õ¾AˆŠå¬7„ßT‰&¾£,Óª}5okð{¾w)&2=Xùå;Ó±ã^†eËßfùª"ÿò$èÖ“' Œ¡±„¦òÌ8b„
š:fFy«°÷6fÂy$µÐ@¹fÐkåÕÎGµ²K¦ÇEOƒÞÛWáZ|E}Éø;{|^T×ï½²^™€goeÞKÚ]«›<\BÙÐgWSWLN¢†¶v|“a5óUtT$¹¹4¡‚®u
tÅ*Ì M·
ÏvìˆU­°
¶M‡˜mûÞájÆ÷»@¬ùÑœ7Îü¦±­÷¥ßëÐÌÜË»høå5fPHk%VHš DX:D4µpã ¢Br Å1¡¦ "ËJF¡ÜCkÏ·oÞgÅT7ŠœŸüLeƒ¢	÷JfãÇ]ñQÄv½â$¿|yù&·Å•‹ŠPf|ìIý,Lå‡³ìÓõýP5Ž×Ê0š‰õ]9ÕÛ|k«—3ÏÓ/'3¦3‹²/–ã+K^å3ŽuÚßþö.ë¹×«üž?–vuu2[zq‘vy®?f·×y4J_]]XpÜ€^¯d7ŸðýôNª1ãfìG–ˆ›P¬—g’•< .“ó ÂuÄÌVžÔÖ)„aËŸ /·mÙw¦Ý¥ékãIþ4Ø/ÂÇ6w‘) -$Â*7˜% (î¹*š”Ú"!H)¤'3‰-eåM8«ií†„×jloK´™o@Ç©%¸ÝOkæ!´³v,éa:¯•Ë‚HÀ•2‹¦÷º^œÒ#¼´Òºpöbã÷2sÎßÔôúŸçõ½àÑC˜™êbØs“FÇçÔºpå/­¼ýô`ÆäÕç¯<lœ+ë vÑ¥ %‘HCžRê0rÿ˜£ªèƒNqƒÐ&ˆç;v„PcOÆQÇ	;P)JÝÖ‚\\ Õ&Ñ¹˜Wö, ò(¹"¨„=.èh£Ñ0H@™N®³BõGOJý-èsƒÉi1¹ë-ÔÇÎ!’%Û,)¦p­üBrÙfIÂ‰I×½Ê~ÄÇ6¡B¤½úUîúþÁ±d{°Èx`yò*.Þ**ðAG‡ý*¼Ób2v]¤¥X€ Y¹ò” N(tÚKM ÓÀ[€=3{~ƒÀ˜hÉµÔŽ‚²ûÁÎvßré³ìøCHŽ_™ÐA¤ÇsÑ¤„Êš†Ë0g+¦SÔ@Ã-·âß­Z5ã¶Ñ1Õ®ï¾K¶ßŒ–&_½H3ìwÑYzob8‹ƒV+ƒ BaŒÕÄ@è(ÂJ) {é™5T…º  å÷¾ß? Cé:lTóê<Dr&=álÍï†8áËæQ$qz`åý1=Hý·®û|¿óO"‘õÁÉQ|r=ðÏÛ!>(DºWh¸ÓûO¨Ž™3ÆÛ Ô9WN;N4DÊBå€>¦šb´CÈ´gÞ×&îX Âgn½¸úì?S7u¢¹»ŸG‘^áIeØÏ|ŠCºLAåd­±""Vä¼‡tFÓ»9”Çóˆæ­êq£¶e	ÊMß;—\~Äð?†?m2cßõ
hØEè±1Ä9Ç&Àr-¤ÔTâ2¤‰áð3Ã4° 
H­çK*¬w‚ ÅÉ®¡K³…ÛNÁ{1‹®Q‚d«-–­Ym!%Ë5 jPÖt~@Ý®l[µ{¾ïûÇêãƒ…ëÆ‰³ÝösÓE¸£HqdMÐßÆý§$æAí!†K…	rÀ#†k©$ÊíZ=hâzÙÅ›—™QcÛ­¥vm.ƒLoÌñZ6!â`¥1â¼*—›#>´êŒ ZãCnö¹9XTø~³"ö	Ãé`ÒE¦pHå¢ª&F{m$c\Á{$¥aA¢ € á€zá˜ŠÊ…á¯»¡Â}z\6ßqáÁl:G”Üsð‘¹‚"²‚€'ûíªõÁáëúìª]ß?>”l"Žv¾£ï[µóÅz]T-€q(€¶„	È5rDXÈ°&1vßX„Úž“žzçŒ$‚íNHuì±y‘›ñ°úIvù÷·Ù¥ßÄü•îR76Í§{èNÏH¬Zþ8r¹yEÐéÒSÝË3yDîVÉî¸m¶E¹éûîÈõ`qû¨Ú¥aÄ]7AcÙÁ,"kc,QBQŠVT)1LbŠXÞÒa£•ÐÐqk¡gûÃ9.îÂ]Üy<f9‹²À¦V…ëpz&åk)x1É}9S
	’Ë†•gðˆ	­BøYkmîîI0áî1áïy7î={õâÕùy¹…[U¡ŠôMÍù”â¿ºèI†X… —qd°T\¡4âL¼w’s'%‰&&9ÃŠyb 3‹ð³ÝPæ]µêŽQ¦œEy,ŠÃÐ=pƒ¨ºÖn›‡wµÜJuáê¨G™òQæëöR-7}ï(Sr=¢Ì7j0p“ò~í .h¸FáJ’J§±öÖhK41áR*èæŠM$6ÚfAO„@nv¬&Yä±GÖ;ÿ‘U¬º4RmœPçHAÒC$]k±Ê0Ë¡Œô«óƒy„‹V„x[CÕ|ß÷3ÆGsU*b„+bÒIE*	¼åp­!€c-c+Ã€•:\7LÄ?GY¸±4áHAb8b;*ó•‡;¬<^ÓÝ«‹9Åg¹2F!ü+/&Ù=ˆ¤«"öYé‘Ê]),•nÔZœÔ#†´Šak]›b±ñO"çƒE‘CF†CS=n»hãL@D)%˜Q9†Aa’KÅ c’qI­$|Ž‰€0Xaã*úÍ•·;º=~+\8ÃáÚ¾í6”miÃM÷z ²ÖÕKr±\wžÃàÚ@ƒlÁ÷ü	Páöp£×Ž€¾0½<L°‹äK¸! ¨­ˆw>p€h‹Â‡ …")½Ây€ˆw.üÔx±%ÚÄ;j?_f/Ë¥wf‚ZE÷˜Åˆ\Uáp¹Ó#£4=:jqÈÐÊ.Zû)æ¿x˜s>XŒ8šžÒ â*|é¢ð(ˆq†êpç#„˜´Ic(”a.07Ò9!´AŒL×Q-4 ;¶h,Í<qåÙ?.º¦]2;­Î§s¸`É*DU2{¥v9ÃËhA#œ¤‚EÜ†#P´
Ò¶±G¹éû‰Èõ`â/ýõöŸÎÏ—Ay|KaQáeåêôj4í¢Ÿ"·á2"€ÛÌc ˆ•Œ9-)çˆ$¸µ€	i±²  $¦
ºc)–ò/—Ÿýòá·N!å~Ýk<9¥’¸%T–ö©åÖ½éÉö÷Gñˆ(m|Þ¢u÷Þûß?¬,X,¶0°½˜‡³çÔó:tö ïÁæÇ,Îî³8·P¶ôÛ’D6t8rƒàugW
A¬ÿghøÿZAk ƒ˜JÃµšè0$Ú`" ŠEÚH1	w‰ÀŽqmïÃâç‚A¸©GÃü+Y9Ý—ÉXm´[žÐ³¹`°ôŠ‚€ðÓ÷Sí\ ‰ñ©}¹ Y-äJ9C+Ê­é!xK{r”HÚ¤‹âÖK[¿w‘d‰÷N2É¶g„•†G\»éýô74M¤g`½iâÑ¾ÚÌ¾º…*î›+&Åã6Ü +fë÷º¯f˜ñðÞ·ùÄ\w ¥Ä¬AÞsÂF
+¨—ÒSËu^*ç­¥$èç pÔ"",âÔ3d¡Þ±R®ìær¶øî"Õ—çÑ9:Fß_rcg ÖÊœ	—+ Q„“…K'ñˆŽ­â[»
—¶þIÐqÆû`5öïÎö«vñ¿×E‰íxû[É1òFÈPZ.á)ãÃB’B~‡(Ñ¹ ¤Y…aøsw»îûré‹Âû×æÓ=jðTÔ`X<h–ˆ@ËA‡“ônÇÕ©<BF…
¶6ñV»¾´(Ù~@áÆ½o$K-Ä{ðü¼¼Žê(‹x;Õ:)ŸÝªñ ÜfÅ7äÍÙAFÉLTwW#õÆ:m…!´#‡-õDjÉb×`Îw„0â¨!ŒÇÆrÇàÉÃ[7~õî²s›O¤ktC ]'®OBIÙ2¸féM%âù;"[«ú¼­©0îùþíwéÁ¢Ú£ÕnxðÓOá3?ý5ÿè¶ØóvAŽp	º›nbï‘ñXå¹w^™€DA°&ÜQEòKc!"ÒP«dòXy³;ZÕ®ÕØ¨À0LÂâ¾2Ž<x~¼&y1‰ã'×áöººÎ¢×ÖwÞcÁäØÎÁ:°„×
ñj®IŽYÐ#¾´ÀÙ8.?oŸ_={¸ÿOà,š³~:Î‹e©Z¸ úUÈBZŒG5¾á¢s !:)!6ÛÆËÄñþ¾«÷/¯uR;:>˜¤nV@©pÿÄ! Íæ‡tÓèp ¾íð¥}Û&ž¸uÖÜy¬Fy²Û¸ŽÑ©uA¼É~Ø‘'z4´AÖë"jÜ,QÂKé0rV[#µ<3Î*E5²Ba)„Ô†<'N“XUM¦øŽEpªeÏ¥ß¯/.¯??SøˆÔ|£Æ½|Ðy	„’M2”!²êp`‚Ðå’›ÈtwCµ_G¡¹ÐŒDÛ¥j×÷/Ï–lV˜mI~”6¿ý€ðûK6‰¨‰”¸2$ˆ&ÿxþñí›wÿïç?o·¢âÿ~€ájõyÖZ8€°Ä\R@9â h‰aRç‰´Ä~#ƒ€c”€*(¼’Ü
àäŽ&ÀÊyS®={vñéùàJZšMçÂféåÂcgìeáE¾\¿O6(Å1;ŽGÙ¥]õ¾¶¡³má¥ä{°ÒË#Æ×t+m¢œ}ˆåˆê"z"/TxÐU`ÓI?$Í(uB %Õ€©vÚ ’@KÈf¬HY‘w4üÀ1H‰’^ïÅP.ýš"ÝOå`öIiàx-+›3ÈàJ·<ÔDžÉ#µ
ÙkÚéãiñžÀó´àý„¬ð¾ß0òmTÅŽ®Ð“à×Xé œõÿÓEY[l¬“åŒ¥R@¢(N¼ R#ƒ…Ú{E™Å‹ÜB5RR
ƒwì³ô±\øÅß³ÿLÝÔu[Úv1—¾+Šø˜jNÝCXzICÝõ«½Ú)^ÉTbáå¥BØüT¬]­Û¶Fàù¾ï[æŒÈòm'(Í»ˆ×êJ¸ñ‰G† ÔsmÒ4Ñ@@ ·‡HB‡0	êŽ@Ê¦,ç;Æk¬VÝ]þj9¬ª\XdÏÊ·.ïîíl4¹Òah­Ù	—ÖJ£FXrc¾rŽðÐ
@ÛRèå¦ï"×ƒ†C¾ì£që•š¨ÓWÓ~øÇ›ã"¥šN†6wOƒKÃaâú£NºsH
<è#0Àr-87#!P9F9‚8`82Ä‰š!¤ñW»;‚ââ³¸z7V“é¸ûÜÙõ	uS,=–cDÖÚ9qº\šž^4?—G¤jS‘¶õæû¾°š1>X¼:Æ¨ì%Få€a—(ÙáÊûEáøµu v!ç%Ã:(RÄ+á©€Ú[h4D€dÊK	¤fÄÆ¢G17LwÔ#Þ}üp±@Õ0 ¢Tç¼@°åÙuoR0‰![3)’ø¶–Kœ^ü(œÍ#·áöy¾qo÷Ž¿£þ!Cï1˜´‹`Ò¯Í~GŠ”‡}Ÿ‚ÄÓVøé¯º¨"­òÄ	G	2‚¡!¨fBrbÁ”iq˜s!0AA×w† 0ÅÐï˜©òq¾î.}‘Õ:Òë]áª£ær‹M±RB8óÖ-	rBµþ£¬Ðª&kíy¬¶}ÿòBÅ÷`e††‡«U¨¾VTÐÆj §C„½À`¥Õ@$]=u%pX}luc4’RKvƒ„ËjÕB9ƒ®á ƒôvi’áÕ:\òå*A£IÖËCwÄ‚VXÐº]Z¹é{G‚’ë¾}ç+\a]ÄÛ¢tÔ$
è,¦T¬¸BŽa¼ƒÚy)\"d€%ØRd €tG(X,¼K4˜M"›Œ•÷¹éÒ<QH×ª©Ééró³ ì¥Ç(ÎÏáÚX%këÚ›ïûþbÆø`1âh_ü“ÕØÖþW\òtÑ6A E‹RÔí8ÓœDN#¡%w,fx §ŠXÂ@@@A­ÃX‡»MI´£ù¯¸v½^Àí0h`Ãü‹Ñ0 B·©	ÿ™ª^>¹Ë†¾?@•-O.+¹ïT1»~`ZÊ5Gcf¼º¤Î½áô8 V“ [W¥ ½ívu¢¢BQ¶îºRíúþ…’í!‹	Gàÿ‹GI¡…¤Ð›Ž»ˆ9¢ZfÑ\BOŒ—Šzá8ÓÒjÏfÖÂ¸çÀª	%ÄˆXFrOáî1G—oûx‘ýs8þ£7T6»è4ì¨LRy|Vã>Nv&@èjš
$ /§©À069þ·<ŸGØoc?X[Ø›¾Ô\ô<Í~®ÇNzháŒ°Î(¥£T@#€GBR¬<ÚrW†xÉ<ÇÞs¥—À3…ÚÑx|vqöüìãÙ§ìFõöšïÞ'‚ióâ³ÉúêH7e¤QµÀ”“ò…õÃD†ÃÞbfC
IvHR$Öz\Kø²ÝYi!9ó±ÜŽ#¤´Ñ$yëê¨å¦ïR"×ƒ…”£¹ùhnîD‰\¹ðIÙt’`jàÂ£p¹i‚<PÚÒð¡Š*ìðÜ!è¤F4üÈ e1öNyO•Š:wòþ¨ç²wnr´º™F-½Ù‡ñp2 ß­?úÝÅ‡Îeš®^B¹–^
	¡+­YiŒuJ•ÇÔÒvÚ¥€m³Zâžï_pJécÊ¡é–5)l¡”"". —
@Žç42áRS…ƒÚJl PqÍ¥ LPC `\‚0"ªióuU XjŸ±°?V	
¤òCç¸À’Ý"('kfGÎ±\VÃ{$8ÝáXnÄÚ4ÑàhÇ Õæï¿øgÅ÷‰Ø,üüjÇ¿†ï|x5VýÏf¡¹VÛÊ¶Eu!P4ñæ™ñÝh2Œ#ÂºÇ4Ó™¯íøóõ|uq mÖ.ïØ[ï{×è·ŽÿVšû…ñ·N—Rƒ=_‰OüçëŸáÛitƒånºØ=EÀÔ½[.ó¤É[)Š^³ÛpzÓ„ý“‰X'yâ.†»¨'•xÞE^µ˜j3DÑÚS,´ ‚ikBÆ(…!äV;O fÙ¨ÂxÅE‹N3’U=eÔÏ»­Ž6ÜÆKµYâîÃ"yzX$$xUOÁ“åìºÀ¬ýªzG5¥7Ó¶ýrfÛ¾E¢â{°šÄQ¢Ý‹DûbïÓÖF—÷Äõ»°:ï¢Ôz#µAZ§ózÀ!âÞyåqô	†€öÌh ¼rDëILaÜÑ6X†V‹Ïþî¹êÊcôØt:Ç_‘\E›‚Øáu1ËfÂ€Ç"«8âo+ü•­ñ·ÚöýãoÅ÷ˆ¿ß7þîÁ 3;)Ml+Cf^þïå§×¯>#òÌ£ÌÐBf˜Œ•qHÌ8ÁpeÂFV‚Ø5€]qà9QXJ‰–Š„·¤D"5Ä@rGwì+¨F£€&pÅ(SA»¬¦ßB6ZbUÆ§K3í^‰O/˜F%«J<e¬TV$=·±ÜŸ£ÑJ„h]#§Üô½%×£øð§ÊwÝ0¼wyP|ê§Ï_¾8x´<‘0ta5 FbÁuAˆ•PF^sË0¢T€1¤ Pë™1žr¬°Dˆl(×f÷Çßªµg¯Þ]f]1ìÝ@YõM“êú	H?E¬ÆŸ2^åô³X¶*úgÇóþ­úÝ·ÿÙ¶ïþg|V 86iL›þ­w¡7R',À’Qg5$Æk&gˆa¢¨¶
a¼vÂÿ)<0–Ú¦±Ç¯Ú±£ï?.ªewc[^L s4€éç!\³&Çô„•ÒÙR¦g&Vçîí*g·Ív¯v}ïXP±=X(8äëý°rnî¦—‚ZjÃDDÅPÂ¿8¶Þ"!´2Fn †0I5EQ.¼³„ï’ð}aÝ³Ž¹YX·UÔÖæÒ=DˆäÄÈ×È0—+Q£é‰	Õq<‚D›Ä„öæÂj×÷Ûƒ‰£ÁpoÃc%´C7þ7ïëq2„ðLBêp:‚œ÷ÏY)Œ[ªW€KË"ÌÂ(rŠ	ÆÂÈk¡ýk¶ìÑ½šBç Ž“+¡,×ô>Š9•Ë@ÞU*¤W'ïé­òÐA[H¯v}ï^±=XH?`h80½ï¿Å­ê¢\	UÞØ êÅAa5ˆB‰Z#fãT{$³šc‰eZA4
Z‰ãx—Tô fØ…½+œÍªõwˆksé Xz%$W#DÀóåŠebÞé-ââèÐÊEÛ†˜–›¾pˆ\Žî¡:`(\/L¿t‘„@ŒTáŠgTZª%…Œc­ÂÝ0"z‚4¡\ze eƒBA‚XîùXë¤ËjAÙhn‡»ùÖôÖ¿|ý¶äRLG£áxRI@³,ûtíŸäƒI€‡8žö\ñc¹ìðÉ†a¦*[$Ä»·ã¾„ØO‹IÕ ¡ŒqœLGVM4¬N½s 0Y‹˜¯5ÚÃ`E‹àˆ˜˜Ë0¢Üó—/O_üïŸ-Â»káCšíý>/ÃËÃÅ‰E¤³pÊ(·¬·üzÍpì¦“|kµÂù!¯Fœ†÷wåÂ÷ÿøÏ|ø4ÿo	k`ÜgâçRMjÆ­p“irKÂö°P†öŸ–õ»7gB!¥9£ÀiÁ ”r¢¥çi€ ¤¸*ÖDbÎC¥ âÐÌ9G@4×ª°òÊ¸òÉp¥÷OÕú·bGTúC;í-Á‡²6ª—U;(L«ªÅ·ã|2qƒ •ŠQB|ÖŸòô .ýä 2()[«fÌ°@h¹„!#&©Ëçî¨ 4¿òX7õ-dd«>m¹®–jZ-¿¦½µªž¿OÔYšåSñ=\Hk ú|­âQ3®hò¨.¼u°·îa©–¤aé>¾¯ëQ\†[jP™éjš7M<X‰ûå·7‰Iaô$ŠYò!üFìàÍL¨µ=c4ÔÅ°dÝÇ/¸U0xûúÁ¢ÀÙÚ5ºÆ³””g"¦ÍÇù¿?¹I%,—¬ïä…P½òûŸTjhÌhZK»[ÔõkIâæGwµt~ì\1*³Dë(‹Z’|P¿Q	û”L-Mì•@„úZª~=£¾«ßñ@cTÐ#ê	ïŠÿôj©®~/	ïdTš³j‰ÆõO©Ôç_êéÆÃú÷7vá¤×S%œ„"¼d7©çUysêˆîêML=Ÿé¤_OtóðPm¼Fý±ÛÆ­ü}õçY”º7®í[~Ø!SÜl£èçÃ:&Ìw“"bœš›’jÜ`„}ôË|tÄ–%n¢×hò­[¸qÀÈl:˜‘÷n¯¸?j8¥Á´¯åM÷uÞÈ9yÀD\ÃgLGÑ Ñ`@(r¿­ílfAô˜Ó|ÒEžFÇ@*	„¤cf5öb‚bØB¥Q’9#cé'cŽRL¸°/›Ìâj³Ùr³ý}Ö*ZÅt\2¹U¹Tåß¹Œ%çÌ ˆàë="¡”¡9D æV&EF/ÓÑ
ÖÜ
Æ$`¬EÕbÓ÷©ð-˜îd*ÚÄÜ{Ï.cÊ­êë‚êüü×ðzy±® µ6@iõÕ¼*÷²HXÏžÌ^«xÐS“ø5ÖÓÛ*Îëÿæ#´å÷WfÛè«0z»Îý÷	}9»&uáW†ü}ò9ÑX÷`XrùéfõîÃŽ|.š”„^ðËË—éV¾c}üo(»`×úø_5;!Úô&Öüõ¯MNØòˆ—¿ÿþüÅ›Ï0ÕÐºylr©·¥ÑåBÿ=ììëÝÓÛB­»q½}2¼šæ_Óü:ã·ÿu”¡uÊL‚ØØÿOí(j‡)”5˜}O·¨îÉòÝ†w÷„Ãš_éÈWÅ¬hM^˜a
¡Õ£ÄÇÛ~U´R“(,d2aLÊK u=U6ºrQ»Hpå‹¤÷tÕ›“´…]ü¶ð–%ºÂ¦Ð]« ‰~¹K!ýwQËYÑ…Ïó&oój/‘&£^¿ÊÔpœ´òð2¯Òö2îú8éÄW”fØO:¦}•÷’n¹µ;‰6OºúÃé`’´Oý¢øÏ6©þžð.‘0þ3éÐÜ¤4}$Òú¼—øuÜmÒÚ¾0½<ü*‰ø*|I"]?½i
õpä³L…Tò›â6Ÿ¤]=Ãp™÷’ÖÈ’&0ÚþÖÎ^K”¥#•ô*è¼il¬t–ÒÐy<ö'®¿Mµ»§%}×…êk•Dè6^I´×©YDƒBaÙ&=…p¶?³Žw)”³ž	¤ÉâÆ¼ÎVé¬
Kå,?r–á—BYf{l'\‰ª± ½Rw~þsin¬57UÄÔ¸pµ´¿¸Ép49?;\Õ¿y~~YºkIß¹À´JÐª¥úeœÀÕ›~ö¯%/âEYO^ÿ |NÅ6Â±³×j?úÓ*¼n¡kqÅ•v’L¾†¼qD ¦c.º‹™é|·o?=PÂ‚~|F·ÄŒ´óúü×‡•ö«;}ˆÅÀ)Fb'…„¤ÖqF	‚K •'€R¡…uqtø‡T#§©Á±øZs§Ï¿f‹Í>´K«©Îøt<+å}ëÔÅ"5¦È&Ã,˜±S…›'Nž\©Ø +ÆMûxDÜÀÜý˜áHU/s_&ÞbÊL¿µWŸPü˜©"»u½^øï‰šNÂuP&Øôs—ñèj0,òHÔsã2[3N%|þôÚ©^ùÌYåÑèªéEÿEç~)ž^ËbVR˜2¸R§ƒ”Znó3~ôEµˆÈ`Þ}%kàŠšoù>­JsžÇ,ï%ÉÆÔ	7v˜¤£¦{éhéÊÔ&¬aÖÏüâûlƒŒ÷yì¢³S$C˜¤ºFËÉ—~oÕÃøŸzT‡çÏŽäÍ`;
 ^:i©ž3¬‘ƒ
2µt‚c*±°Ø ”dBA“FPÂµwa!e`d¦¢`ž]>ÿý´QÇYLÔŠq
±ùiÙó1TûPmNö6×¿_¼ÍÄ©òu¦ñ=ËÞL²neU“Q¬0ôYÞõÊ$Ñ8ƒá h#ùMÐ-p
·÷h:É®0ŒzÂ2q|ª³&q6;qÈO€C€ÀÈQ‰0 o#!‰X# YigDµp´r<OËsvZ°³êp¦ ÒÛ’vG¤YÖØëÁM>â;üémù®sWÔA”Š“eäÐV0µev…¬ð"×]™Î6`yìfØYþ­n¶)ÅÿžÂÓº„Ì0{>ÏÅôyv§¿ÍŽXÄHf7Nf²—LþÙö/>áSßÞžºh.|ŽVw‡ÃE„½<#ó7E›Æ£i@b=.©wpÂíì!·˜"…s’Hì1š ÃYø1a{	¨t?–Ü?¿«Ë>Î¾¿ju×öýˆ’A5¬ºÅc¼gö·pŽ²jçwöQèuþîäÁðvŠÿùÛÏºbö?‡v#Óõ™q¹ñFF’2¾´Fp¬Å³t%,Yò•¼ñð–§è´:?oè=(»\Ñ;hé{²‡ÛZ4uÛ6»M—wÝ•°Ëåí{ÓÉ6R¼Ü£> bÛå½ï[ogá‡Ñ·µ+qÚS;ré©»át²	8CglçÏBSÔïvœN|ƒð®š­^²Uya‹©Q™ýe¸©Ý¤uÃ{P"w»šJq«´òÚ{Ì„	l’ÍÆq*3ñ×€•%4à¤q0–P‘ä±¢˜—á•ÅÕºpÿM‚ú0Éý¼UžU®?lƒÅj3"†ŸçWg£nµ—yá‚bÆ?ª™9óp†Ž§f2Ç:fÕïOªç_»^t!eÓ¢ljãŠI~¥&nÁ&/Š©{âr×WùäzªÏÌ°ÿSØ‰kuG&?Ý¿ø-à¹Òõž
JƒŽB6‚'„R ÖÐ1®À'”¸¾jælj§åájl]»xóéIPòUyzÒ0¶ÃÈëÞ1mZ!m6mZË#ßýV~)f¶Gù†™­gO+ßPµ”ô°ÞMãæ ÄÇfQÄsêÆ›_-üøÁ¸Ä}XGÎ’óÜ<õˆÙ£ÓË!l¸§ãI“7>§nüµ{*ï’½/’ü²K‰ª³kÎÖ¥¨.·ÑŒG;Z­ÇlÕu2Y¸:Yh5³ªšÓçGðü!ùWcƒ¸f}qO+M<²TRE£^p‡, q ´FÐ¨›oŒÁL8l4#Ä!o8\»G‹ÞŽcX°Q½ìõ—Iù÷° è¶¬ÌÙÛY©­R_¯²y\çW×§½°bx5Vý~”Ýæ5¨²Û GeãápRÄÖÆ/£ÛÕþ˜©Û?*?iõz'3¾ƒ«³,›s¾m¦fVëÈ1&Çª·K¾ÞË¿bWúô‚uwò`\,”8ãû?Eøq¯V=Æã ŠÍ7¢L0¼œ‚oýÃg'ÿ¼Ž©×ù$>`ZTR­†%GWöÐg6÷Þ£À:¹Ž!?ÎŸÑÂJ¬Ò$Ÿ“å^Îå#g±²a›ò WÒ\eäÏg‹‹}]–6óìääM%!Æ'Ý{ÄsŸ¥-»Uq
Ãùˆ¸Íå&ÇAšQ:¬!PçžO*G@ETm}Q½¦•ü¨¬¬Gð?ügàglÊÙü‹ÎŠaÆª:ñaâ¤ŒÌÅÚè§è—8©bZ.Þ¿úííë ÒÜ^‡ýËþRýû/÷ž¸»³ØÛ³ìõY83–3FŸ‚fp~~1»À,ì@_ýá²û.O+S7*ïÅÝX¬%¸À~6Á•%„¨òÎŽït£eÃÖV[V
”aÅðÄ”b{õÝ¯¾î²rwù«yÎÅ£‡ƒÞ]õür«ÇÓÁi©J¨¸á&ˆ_ó³°ük¯äÄõµ³1l¡T¦TPÚÂn.÷ÿ±\Wù¤øÝ&Ñ´8;E5½ˆaZ%÷J*ž…QÄ¨c‚mlKŽTIm«ï|±šrXi*	³{ÿ—bÔSùà/ñì•¯(è\ÙÌªõäåIƒ&w{{{¹ÍîÉ)e”ÉeÕ“ N7ªnÉ¡\Œ ”Ñ÷Þ¨€@‚Ú¢uqC*9­ÁŽ:Ý³_>¼ýk|ÏÇ“<ÆùÿP^.Ïf…MüâÅå«ò¿¦:°˜×%?ùíå«o%ð¢ÁNîª%"@–ÕÄŽ­öbÄ£yö|p÷êÅÅçŸÃßª>¾Û¼Š×t2|[º¤j>8Iau.©IÝ¤X§5ØÖ\•’ÃùùËáÀäÅögRÖÏæüü•Uáª[§…y«÷/þöúå§ÚðÐH9ú<ç7j²ý¹ô @íë	/¯‡·=÷¥îýÐVŸ\ý~$¼èóóßÃ¹û„‚`w¥¿N¨öà¼ì©¢;Uš0kÎ«×
·°i¹ûüæòyíËY†)îå­W¬ÎÏ_ÇXÈ¨ßl¯È	®ŒWuŸ'¨½Áf××¤æÖ	GèžÕùù¼FÓm>ŠLÃÑÚºk¤Ë Øa´WŽƒi¯·W†Ó‰»3ÌÇ¿–*IÝ©=Æ¯¦ýÑêMë8Áú£w7P	€nóZV¯ÿñúãÿÖ~Ì%ÕùùÛç—õ·þëÁU//®ë¹ÍYWñù2ù-Šá%
gPw•¡ÚwùåùùU‹¯õw÷&Æb¦çåT×~Éõïh÷ò;îMœ¿Ü™íÏf0Ùþ)‡PÏ%È†Õû‰?ÜÊ‰ÚwT±{®W5®ýAý¥=ç7º«™®E£ŠÕ«añKo¨ë¦Vÿ·Ÿó­»j¯¬ŠUÂ¬PâvÅÜ¶º‹´V¬^ÆLÞ:N[sÒçœnw•zVû"fbm­=¿$ªE°öÀÏóÎ.'uÖÎêWU\W—N³¯vÏïYÅCêz6þ n‚µ\ß@ñ.~½^®^fÅ-Zš?©«ºk–ÔBÙ*»¨ŠM\dž¢1¬³}[¾Ú:Wœ¸‘‘i¬!]÷¶k/ñ7^F-Ð¶ËŠ)òÓ‚®»Œj_È»Ô¬vRï^ÿþig+29?þòÓoÏßÖ§}.‡£ôæòÓ›w	Êøê°ßÞ]¾~ý.qPÃgÌÉ®¨Ñ”*âô'ÄTÙh—s5RdŠ¹©d6p)¼êbä5'Ã½q+ÜøfË|¿;‡½}eïGµúkŠ8óáýå›ßëìrµ_kÉ%Àj~õ¼tNÖ'_/|¬Ï©¾'¾LÈ>Ž7µoªöÒ¯ØÌìù`»Ù&hZõ;=cØï«Q­±¦Vvœs+Œê©:sKúänrU‡oµ²è‡¡bÌtPž„í’BŠÒ{¹·OæRù:¡¶^¸,‹/…+=¯Wj·êÒÅ–±—ê¦ÖlQ/ ]Þõõ°NÅL˜Ò]QÕ­Õ0S¤ŠO.– fÌ¸¯aGêÕèŠßG§ìÛ|°»>°Ê.êS]{Á¬Šÿ~¿é¦ãþHò%À×s­Çîfçò©žÚÊ'Èœ›°W.\d×ÃÃJÐÎ?åa7žÇj»Ù ÅóP²*ƒd**…<Åá–¶†™ý£ÒÃÓüêRNO¤OPÌÉÖLµeV©û“ ŒÖ+fNççïÂOmø`b(yÖ^Ç%ß×æÿ­½’x}t>aÁõ8±Ì,¬9–³×½ÄcqYê)ÚaÅkbgŸV"uÒK~vú1Äóu'‘Ou1§œÍzÊûáU?F˜Ô1«G¨’YY:$…_ÂÇùMú;¯ò·woþñúãeTw´Bÿ6È£îTÎ—¯êýÚƒò[ýRWã}èg¯Ñí>ÇÏæZã¿ë$XR»_j|§ë]*õG5™Œs=ÔL)ÈûµR^,‹3­õô×O©v](Á¥{y1½ùõ]Ý¾¤ÀTÉåóµS7wg£^íM´¿3bÝhìL¡6ÅÓ4+qëÄîl°¥vœ²s=ùüü¾Úöó^{õy§je„°·õ|¢I}ûtRŽiŒ=Œ5Çv†ˆ|{dL¨?ï½}DÔ}xá¯ç¡nw¿S¼Ý²ž0ÕÞ µ‡e(c1‡½{sF1Š£¯ÝxkIÀ•õÖ¦úeÄ?¨Õ)_n‘_}i»M*%ú§(Ë(îè3,ê¢RÞa¸²j™Ôžë›~Q³Q/„ÏoÃóó±»Ê‹ºØ¨–[Rw‰KmŸ}‹Æw£FùUû…Øf‰m‘þsŒSå¤H³ OÛ-d}\jŸÝðêË¾,áÕjz_8$ÃÞM“Ó
’MyúÏ«ô“Ï/ß_|xþésuÒëGEÝçÍûw÷_Í†Bô,\­{âA½Á!‘ÞÛ¤èÞ8±½qâ{äT{©'r{›“ÜÛ)õF—)ñç‹ úzÒåPõzêYìxáK5®7v®…k×QÏâªëÈnm}¤æ—˜PéêmPÇM¶8‹\l12F&Ö›EÖQ­E&‘P“zã^Ez9r¦éŠ±fÔzdRùû¹É¿Žp)¸¦¡3~czûÕÌ_ç¡+­¤ë¡g›ëöÔ{Wg^Ã$GÔ'¥ë÷·"ýç¸©O£¡y:ÙlšjÌ|óòz¥¡fÈï—óHó6Ä4óUº½©Žr žjdI0ZÔ‘&î*a[îUì:%VUfá²„Ù'Vï¯´Ï¢JBN¦;?¯òƒké§ñ$Ž]å «§.39’áD5™pY•Ý>ät)ú©ÔÖÇ]5}«­‡³ ýÚóë+3¦Ìp—ú{í»g]Lsÿ²Ø¥·¯7ìDë¥N×Ø?¬ÒÛ^L¤Wm}‡åBØ¢‚-¬a8L¥^Éó^AGeÖˆ˜7€ m”ÆÎPä¸ƒH¤ðB3üÑÂ¨‡[dÎxÏUA"Ûo·(HÙ£Üí¾›¨ùQ-wv¥ªEø^+Ëe*f5.ÊÒ'‹ÒqÌ¢ÚÅDudäÇÃ~Y´!fá¯•Ï(ËK¨l–Úo²ü?,²D3›éIüU´U¥=ÂF6/LòãÉJ±¥ß,JKd—Î=üíÒ©-ûsôÃÖœØ°±*Åpp¿y6vÉ+«ZFÒ²ÖÆŒóÓRO©Z1+8È–r*|¤~:Ç‚¢•š`¥³|B‘Á²ºB¸ºNg—V³+U'¾~I‰¶,z×ÒsÜ¼À`]åˆGåq,MBiÊ¶,y³Í'Ñ–gZË‘Çy·wH<b(Oª•XŸWŸ×é'µ½”m$Çcœþ:kÕP7âÅé+KìÔ½üðü]
ÍéE¸ “	O?VÛ}ÖÎô~Ôÿ>¿x[K­Æ[[³”4³,þÓêöôÅóQouÄ¿‚t[? O#œþ£ŽøÕ‹2ª¼–L…=ˆyê5¥#iŸN?|ø0ÜÞýp‰Ö¹­=Hï)/]ÏÇèd0<Üýõ(©N/^ÕÅÄÌ)/}^Gùº¬©FUÛ¡nF{SK2¶6ñ-‰fvÝzºÊÆzú²”š¢¢ÚÞ$r…þu,–L=«'—L¡þpñéó¿PƒÜ'œ›ûAô-A.u@Ùç÷Ë:úøQžþìjÚÌ.(£:‰ðSM/ÖaÂ!©¨N/Ë>uÄUÊñiìtYGúë§ON?åƒ­ÝK#á›÷õ‹Û3´ê®yúæCmÊ=üæÃËÓ—ýÚÓÉ.ïŠÚ›úo—ïß…kµŽìmˆÖ„…DÚø‰DÍ²!yâ«¿xsñú4ºTj£`çÉõé‹üêÍönck¤§?«bòRõ¶6=[óQ¥±¯v¶6P.i«¸ûZ²RƒLÇ.æc7$OjU;óH£Ä`KMQÕÞcKÃê/îq ¬ª—ÑÞ…¯ïCMæH®PÕXS×»¼¢\JÙºR\zùénTû&#i¸nruú÷épâì‡q^b?m5åú«5’¾.ŒÕÂ‘ô×ÉÖ>ºª5[eøKMÁ9iÚ%)+‚:^GX¹õNË#ÿ[M7“j@	+GT-ey¿×RÅnº~EáÊŽÿ«é^)cÆÛéów—o^{ÃÚY–Ô/·7°®èêïH´²ñ  KÚ´—}›áFïÅ6¹µw@I\ž¼Ç6a<zXÿ}§µÔ¥s)|…nZ?ë¼TÔücý7UR–`—Dù!wÛ;¨GÊ™ƒõtVˆ$•|áŽ­Sl^K¦ó«ÁtkßÏÊlQ¹MëèJåå©ì1óPúZº/á?yTçëßWsG\ãiÁpPËTTÆ×®®O®ñTg¾·ªØÓµŽ¦rQ×R…?¼úO-ÙÐ†OdXoGš¹–ÉN+tu]­’hæÛ—;qÅô¸¡}{ùrÁ¼WŠÜs'w·‹CƒE¯dBá²'Ÿ¿ÀþÊƒáWsÛ~‚£*Ï Š¯	çŠˆ‘”È1.Ñ”d8Ô„aæ„ÀÒX­¨ÎP<fâè(<:
ŽÂv‰žBIÂ×-W<…ñGD Íõíã¯øîžÂx§ÖÜfß”q—¢ôI›±«gQ`ÌÁ?ûò,6…¦G“&ííq	žÈý>+ÍCÙü™ûö\Ætë¹<º$Ž8º$.ÉÍ$G—äÑ%™@xtIþ9\’G7ãÑÍxt3º£›ñžÒÝŒG7ãã¤G7ãÑÍØÌÍ¸?ÃÈA¸÷·œÎÜ’û[ÂÑ]ytWVîÊÓç½«á8Ÿ\÷O_åÞ¯{/ÃøŸÇ½—ËícÀÜgÁ~šŸ3 ¹ršB+­•há€ÐZzE8†2Ã87ŠN8Ah©„ˆIi‰t€<â¼ŒJÂtâ²ÿ/Þ!½^~ÞÊÿ,ÜqÆ™v“[çÙävX9
êé¦xÜ›¹ä_«šMGG‘)ŸSº¯Ýÿ‡ì,ÿSÊ£ð$ŒUƒ»¬êçS>=ú+OáYöf]ŠÑU—--"Sów™y?RYlöý,°Ëmøué¯˜u…v•WRß•ÿðõ%ûKœä_æ¾Ãò1Ñ“:Ò{xJéÂ<ñùÀ–#þOÑž¡b’†E‘ìÿd…[qmš'N‘+ÊÒùgf¤¥ïË†}úiõ@oí÷Ì\ï÷Œç}^×üa	W»=C@8]vŠADçe`·ûÅV§xZ}<§Û?›³êSìÆKVÚg‡£Í?½-»’ç®xbY«MÚÕ{	ä÷—ìøÏå‘{üÙb²±ƒ¯kT[ßjkßùùç(ç×TXö¾WÛ•¬®žËÚk¨[W#ÈöŸ—R¹-©`TrÝ¦Ô%‰CV
l<”.äÛG(!%-wšsm˜PŽ1#qxŠÆPÂ vÜq…œ‘Ô,ÃHa
™r#Ô¸#ÈA~kÐ[ùð#ÄÄ¼Äó‡ñ|¯‚<ÅxäÙÞ@þAôÇ7ò£‘a¤çvI­oµQ{ úûÝG ßÐRüÊŸèG£ÓxSöóÁ´hóyQ*úàõúWä¥‡’ªt˜çX`¥-#;Ä”FŒ *½¡6(ìLî%Æ3 ¤HiÀŒ#Òh*1ÐâG`þ7ù1›â¾üX]òUHï,Ô3FøÌÃXö^ßý?ÿ§È¬…Û!Æïf~ìÜÙü•dÿuãa û{3­‚n«àáhuµ£{kOô4`iäÓWá´„ÿE·DüeîåˆŸU˜ê¨7½:Í³XäpÑlï.¶>ˆgþçu"ÆÓA,”öc'^L©¨… »xáøãó‹§2‘ÃGÃ©Âý´vÞ6£0¥A{·í
SQ86ç«º6¢Æ¹€aD9g"	†—gxZíÓ­‡úÛaçËÈ) íA¸ù6í
Á(ø!x1ÃíðÔìúÚ‚²£Ñùùâ™5[>´ÃØ¤z~ßÔ#þÚP¯&Õ§ÞxdÚ°Õ±ßýn/¬„÷×¬ n_Ú	ëg¢N	e´ªýå›²ÝwÒ‚Ñ€ôü¼ŒTh4b9V¶ÑÀ.û5‹hWÑ™çç—¿>oPÔzOXSÑ˜Ôö]¹ç¸ˆ8ÜÊ“ÑÚÂ[Ë<«˜Ä§)¨ýr8ª¿Z*ÒŸƒÎßi™î¼˜H:š×õ“­ÂÏÏc\b-qLsÈõûUI…wauëQ g¸ö(Ì¹ÅÌ§”_˜š%˜GuÕw¼ŽÁá5_$•5¯º ×•v¯p¢|[Æ`ÕI«$žt%W¯.›OŸ—}¬ö¤èUJÖ>
æ>„ã·›®4@£b¹%Û]á~-Õ“0ïIÐÒUO+±BÈC¯”FY‰<‡Î;J¬Úª X¼GHY 5B@©wŽ"n4?ªžß¸ê	éÕÃGUO)ªžì‰UÏù¡þöTÏ}Ø›oÓTOº0Í~UÕsõúz5ŽªçÓì÷ªž)•dªçQõ<ªžGÕó¨zUÏ£êÙêiâ éyé“”òK0Ê°v:‹ƒæ€8eÔpo-†œk$ 2Î{äQÇ0WFhM“€zï¬=ªžßºê	ÖUO$æççê)^W=ƒ«ª'I•wÒuªù¡þöTÏ]ã‹›oÑÔNÞÚ¹zu=ŽGµóiöûë¨-¢zåQ¯<ê•G½ò¨WõÊVzåc€Zf·~ïºç}‘¼¶š':Ãó_´ŸÌYÃ‰•V@"…PTSˆ	DÔ8ÂIôzöe@®T "ç8äRzÈ°TÈ0øˆÞù|9óåCX}PùùhÚ«‘ ™·Jwy\ñœíXìþ=Îæ"QÌrê;3	šEP'Îf}g®ÿ¢_>ï¾ ¯Ÿ”8ËbòÊ‚ƒé©¢ˆn¯‡A7CÂY3U™à ¶ÝUóZð9¹-ôª^1ŒEp‡·‘wó^ÌØ-Ö4_Òl~k3-&ÃþÉòúãtªz·×êÆ•lbkøXLj¾oåîÇlyNnóX÷6Î¤˜ŽÊ
ÊfVÙ*ÎgWÿÍG£˜š3ßÝ.”Þåƒ¾%§vÅÛZæÔ
¾ÙÛ*‚Î»–nC	—+é6”c¦ñÞOï4~P§[?¥NµÝ5g‘½¬½žÛlcvN¬ ¶¨?ûlù{Øªw–·eF³Ä,Js¤Ü+ÛJ’ØåJÕ:VÉqàúæù?^¼|óþÝV9“žÑ³F/¤^Í}äP´xéu
`JâÑ>•IUØª€ëþžZig«\‘ôü<fºîW™š_Nê×a^š2ì`¬¼õ¬£³£”À4éôEÂª
séos?Õé`“ýW©qlµT XÇèÃÐ†)Æ:tµ‹‰…ÈæY™ûÒÚ$ó=Ft«ÆÑ±-ëïŽ2šDik®¢lüµ-3ú·’\Ýè@4/`EöT?€)ˆ Ê6ˆâ05Jèð+‘ó–B‹=r+¬¸ð ÔCfëprTuŽªÎUgVY€¬Ul®,~±–Ò)EL®ª:œÏ‹5QuÐiÍÇô­(;¥Co‡8Ò¦Û²»ª#bU§®@KU§!ÛU§¶ÕAºªÓ$ºSv’òÊÎQÙ9*;Geç¨ì|‹ÊÎ¿òQûxB*7…ˆìP»ðÿ‚ZCtPppH)¥\{f$wŽ2Ì Eá<sÈSo¸ÓFYàc‰l¥vÓ+£®îJ_™Ø(1êaùsuka4w/ãÇ!3 T5b½´ò	³‚c1Ü¯T9Ü÷*•ûñ$Vê­‚oÇùÄ-?z¦œ,ÏfÖpÆ*Œóž7Œ¬ªV„îK”bÃBÂ‡>çò>Vg[ªËÝœW|ð$–l[Tl«Ú%÷Yå¶³“××á•ÏG)k#£±ëoâ_\Õ³úÙ¨§Lõ75.ÅÈj'n0í»qœBP¥>ÍçPªEå¸¡RšëWù8³<L%v†Œá-e	¹ª|œšwß*‚è‚NYo¡»«'TÔbßJWd3,)aª(6–×Ö:Û¶jsû³ßåƒ“Å>ÿk¾Ïå–­¾>|3‰*oøí=Ñ|_¿~¹ûo|{•X(×=Z”<Ä	A™m¸ÄÉ æ+¥kG‰ebï'xo“Ó­÷H-ïÙºš÷Cùá½¸|ÕY›kÏÆvŠvQü÷iç(N¸£ÚæYYIëó—˜ŸÏþµg®/¦e…G±¹Œµ×¼šÝwÕ5³gîqÚOÂø	™~GoßŒ‡æ'{ƒïÜí“ms_õ$¬?Ý¾w"ü±¿X¾ÒjY%Ë˜ß‡[˜5°””7m»›t·‹¬õEÕê"Úå“Ýá“ÜåûØQi®ÊT·sü«[˜ÊNŸ¢$&zkØ°¨ýlÆL70û$›’.û#¦¯ÕÛ_‚šiFÕ‡óê» ™íÏL“ZˆvŸ¿Û‹Õ>°Ã˜±Áè0Œ0lÑ=ç, cº±Å!Å•b’Ê=@P1B,eL¨9‰çÖ-ô­ÅPª‘¤òhl9[þ„Æ–ZŸzù1o4¶0¸ bÙØBÃ0·½zhl!œ­[(Ç«ÆÒÆØÂÀiy_ˆQåÿgï]›Û8²mÁïøÇL´è|?8÷N„^¶5G²uL·»Ï˜PdåƒÄ°ñÍž˜ÿ>;³  TPI©ÜKdÕ®¬¬Ì\kï\¹wMô&2mïŠ£ã&¾ñýÆMD-× 7nR×jí¸IÝÔ‹›ÔµžíÆÖ5|F3â&µ×‰›Ô5^'nR×v¸I]Óq“º&ëÄM*mçÇM¶ÑÂŒä¤ÿjã#m|¤´ñ‘6>ÒÆGŒÈE!§fôøTh¯¢~e±à¦ZQª¨#¼œ[Zh'a‘‚"Dã½Q\2-¤Ø¥Çoã&mÜ¤›Ô9‹ Ñ¢ÀÝfÜ„Ào6D*Z¾šiŒ"ŽÔ!qÙÛ»Ž<½xJµ•êuÑÑqŠÙ=ëS„¬Gn3ã,5­Ö³Ô|@Í8KMëùnoMÃ÷h4'ÎR×p­8KMãµâ,5m×‰³Ô4g©i²Vœ¥Êv8Kzùpñ—&Oò´ñ—6þr¿ñ—6¤Ò†TÚ`IÝ`ÉÂýì•q|p¢pt¢¢K†XSG{¤APA‘•’î“˜iQXæ†‘ Y¡‰4ð¨‰PÐBa»#jr‹‰ƒïí|èû‹SþKO¼LºbwØ¤?™ç?Hïù¼{Ss÷‡àÒ÷£—]ÜtÍÂ·|¾ˆ¦L/ÌtñÃ¿-ÒLGÔ·ÝÉ¬ <p_æ˜»gv%jpÒýÓŒûq¦¤üáÕ[àÏB0Ô7åËú˜}­É‡ŸÍÿÓžaù/ãÕ+»—æ&Îá×ÃÕ¸EJb“L`à¤!=‰ˆø“åU-¯;­o/º)÷Á4ö_S$ß;¶h]“/\”~™c¡su+ò¤û¬âOâe¦ûÝË7?¿ýõ»çÝï^ýòæÕÄ?¼ýõíß¥WûîÍ¯¯¿ëà¬úþ^Ó\__ŸÄ)•Â{Î¶ypFS¹5&¡¤Tr-$A5Ed5"¡Ufêó;½gl¯b®>•$	Ëx=8Qê±+;äØ8„Ð˜ÖÌv^ò²Å\œìïODžÖã*åÎ ¨´Xc…?ÆqÙ±!üeóYtöËŽ?ŠÕ'`jM÷÷àmfØ?–=À–=@ÈÉr»ŸãõG®ÙTÜ‹zŠÕÂ;+‰ÕRN5ŠkiâÈS0#vànžqjˆÒQî½¥Á§Š–C´â1qˆRªÑš”+E°ÞÊ!4â1sÌ½rˆrN>9®p¸´Ô&-_üXN ñò<aN°º2ßöY1X‹ýûS†˜ùã©1WEFc'E@ÄXe4sAÅ¸W…QžP¼#ÚP$³\Àï„Úr‚–|N0É$Iì ¥\;P¦Å±BèndAˆ5V dqÎö*fë“c‡×T+wÒ*;äX¡0Õü°ˆŒœ]5YDÝ5¾yvñ…·:›d_q˜Å»wöâìÝáù”±Xl¯×<ÞZ‚ ¡R\¡ ¤$<œ8å1.ˆ2F8â#ðËScÁÔ¢`¬€´3X oÓ-ß–¯r)cx¹ëÑøÓ2—ònZîïG9æ¹ŽÚÌÈfÝôlR2…‰‡þ0ƒîÐOãƒ:0]¦#; ¸—9=M–WS0'
EŠ›­LXqk¥;¹Í.	)c1ÓT±ÔŒýä¬º4n3^?F)9Öh+BrÅäºÛ¬5ækEXC˜d!ämózqpöpÝS”_ImÑýptÆaIÙAîóÊ$¨Èã‹+‹®;=}õû‹÷ß¿æUf«+…®™}óÏ?Þüþë‹ÊÖÖ4WŸ{0yzúâ×ß~ý¯÷¿ýýì^¬ßS'—Æ_¿ýùÍÙ÷fþ¿äééÏgg/>¼­¡Ê®ÛL¿û|¢{iô;s“#OÚrç‡w/ŽoÓêêT¹ÜeðÊ"’‹ªª¿¼ñªÐ™7ä\»kœfjF+s õ|Ù{í‹¨"lyz¶ù‹Šå;Œµ`Ÿ‚‚C¤bAHKÒ’¥± Æ”åÔˆƒŸDßr±ƒþÃ>•A¦Éð¼¿ºÓTÞþjÜN».vÐž²ãkšb4›vGW½(¯Û»Új6NÈ³|Ò=ó¾ó2¥e·ýIyëË(COÊ‚#å‰ç§¦?x€Ì¨óñ±_ÜAå¦¸ƒ-
o0LÂuŒ¯0L†t¬g¶d˜ŒPUúbÞ²^‚½½ƒïéqÎ2wÔèž£©(ÌÀCN™¼Œ5à¡R‰bów­4“½PÝ°}YÇËErV†pzD¸#–EkE;,RžëBcâ1ø²‚z,8Å!0QV1ë‚4Fs$H ä¡Šé ,Ó3N´F-¾|I|™G0èf"(Á¶'‚"Bêõ#ÉU|¡1ÆQ_D<xìâËFï·¼üñ(¡ÚïÏE‰ª`E&JlYVÈÍù¦Ðà¬fG€Á"<q=4ÐÆ!’ íe¡˜£qn­&*hÄ‹"xO˜÷à^H8a•&Ây¸ßŸ¢ ¾Ò¾$0´ã{/ëäMº±+?›t|Œ,›a<³Ç»îâÝç»¸½kXãç»í´S«‚…ò$¾	S_Öô[¤1ˆ­™ï[3Ž$´Ât'ýËþ ¬IÓ(t"(¼ZÜö ˆû¤äfH)µÃáqZÝóÅX®o'‚eo/—DÔ+ÇÙÓs,Ž¬«·¥Ž†LÐ°ÛR…
Õkci'd*³Ž•=Tiåîjõ@ “9Ñ¶wý:ûû´_}í}ZìNO?fççY§Ý²O°95ö0ƒ«Mö«keàkF¦ú¸â½bÚû3ÕÝF˜Å«FyÂÄÅ˜3…b¼ &m´wÜx«Š¢ˆ‚rç§Is.”fjJ¶A;Å‚Û‹oBèÛXç¶[ô§ÐÆørÏ»?°6?˜¤WÝïŠ~ôk`&AÇ],Òýì†Sè¬ÓÓ²·Ò¦1ôÅòY¯–Ù‚Jü›+Èbú ÙRLÔ)4I-štŸ­´éûçËÅ¿zô§—òïRs‹ÑhàÍ°…ÁåXð$„ƒáôìˆK““N'ÿ¢=ñ—Í|Õd~|9I÷ÎGé}kI³5ðõ§7)óI'úlà¢™lÜéÿòv–@ï¾O^^Â¿˜HhzØpž$fë¸Î\¥ìC³IÒ‡¹~\{zðp‡17ÏmC‚
,g@: ÁŠáí0ÉqÌ÷¸ê ‚SÏV«ïrÄ0ËÒ†ß¶¯SmˆåìÌÍkó™lÉló®üÅ%	[{¥
»LÂn†½à×Ê*¬¼5uzúÛ4Z&-8ÒäÊ¨2´†T[}ˆ`•Íl–äÀš™üœÉè$r›gß?ÖÖ}ðoV¼rËÏïÞ¾|õ‘œžq÷1DluœfP²ÓÓW3¬ˆÐ*K¯o†æÝ(N¼ærHœÁ+”¼no5URYõP¶ë²ª#	ãéÀ=ûù×¿üåÅÙ/ƒÄÆá!–ÃƒmŽÆXà«Ÿßa'T$T)môÒ+Ž°âè](<X¹8¶.gE¨À‚ïœDŒ†@	r‘ô¯”Åv_./¡µ?Q¿67Ý·À©ÆÁØ˜G(ÇdZ2@è¶+ þû¢ãÐ7'W—¥H£ˆgJª4-#ÝÐÝ3 I“Ñ dD‘
Íã1Ã_G÷W&®º_þøãÃŽ&œtß›ÿŽ	}2sÚÁÌE+æâ÷g.û“ø9æY»³«8ˆ')©¢[<6ænŒ¶£Ñ§”`0’­›yrÁNR<Îãùé5æy'áÏç­ÞþÝô%”ÆàÿèÒÃ{½×]±]1€‡Gé#ôMù&eÅk? Cw+¿øF“8˜nÒïâtJà34h00Ýù•~ø¹?#ËHÍIy!áCøI'gˆ¤aÚƒ;'³«¸ˆ¤ïp9rã/ßpþ²hFü÷OÀmã¾8ïLsn7ßÄˆoîG(¾ýÌÁD¨u¾É9&duG"n¡‹¬SÐ®^œÔµ·#v$P\ü­KNÐÓäš=r<ÉÔâ`4c/J+q¨ÿü0=[±”–fl­¦FjÂ^\‘ÀêlhãP¯VH¥›ÞÏÓ>¬rÓ2×cÞMÆ~
Ns#­þ0›\4c©Œ“g)ýJOl+UoeeZR'•ì2ÍÙü¯ÕD”´f¶œ´f$ÏÔúÜÝj
Wf‘,§í›á4±‡½æè‰¨,šú‡ÿkÓ¼'þ£±«^
3ù²‘]Xm|FØ¹¹3K‡ú^üÚÀÁ!ÒŒ‚“óÂ6 dM!•SEÜK7Þ¼Á8É˜£Ì3a¤â^iæâùcç­;œ‡ÿŒùy×®‡ñã•a×Èº‰E–MŸ”9¼c‡t'ýiUøtÝ"ûûl:ºŒ)Ë#O2ÓnÌ¹=»£Wƒ¨º(Ïà^šO¥g1't‹Ý×åããïÒžmò ÊMÙ’aOÀ¹Œû±ýK˜?Ÿ~$êé¾5W¦X’r°ðiÔ£ë Ž±Ùwÿøð<q{˜Êý!tÃ¯æÎOÀõãåÀr¦&¥5‡Åeh·d1´<I)âýÔ^t#¿M‡cóÊÎŠï5ôÓ ÙÐû{…¥jMø…¥‚¨G—„‚®m¬°¤dõx/VD+š¥þ‰m+ÏëìOo¸$æ¹}störÁ­ÇÆã ;úPÓU®]­×¶ç3®´;êè3VÑÈééwÙßß ~Ry¶enj6½¨†ƒ-„*©Eiîå¬2Yws¯¬þïÏ›kß«y@¨Ú`5eL«…õ¬33öîUÊã[a4ÓäÊßÐðK&GW°Pî?&/NPþ›ßÚ<=};á©œØ÷Ý{ÁÉ«&}[îûÝOÀ§<üNàÂãñaM^øÉL3Røî1p6KÅoŽ1ñ’—Ö2‹õt¶(d¯Go>gwÁ›¿¬Oô$¶ÞÎ€Ð~ö¯ýUTÈí~7¿ÎœÜÿ˜ÓÓ¡©ßÞ”5Å»ÀvÐ…UÉ&hê¹|Ž¦—¨¡ï³ñˆyìù£/ "[ýñªc+[ð…ütl«ú8³‹ê'Ó˜q»ª‰g.Ð%‘•¸yE#µÈmæÜ(@	\Ð7ƒª|&5,§m›…D¸¡Ïô&Ó_Uè”	ño‡aô[ñßÍŒÅÿ¸6àðU/&yÖÀq;=ýûÄ_œ7ù±ß÷ãäóèWuêýÕ[öŠü./U|Õ£¡rº4÷ëhÿX¨³zGaaWF':“ø”ÆÊX\èW¼1Ê^S>€ã}µ8dØÿœùYsü;YK|ì2s`]øÁþpvz~f‡ÿaÆÿ®(:ÍåŽÓ¿ÿ¾?Û@v/ÿY†ÏŽñÉ}Î<lŸ‘;&¢Ÿ[)'F½ê«^¾ì‰Ç¯½êÊE±j{Ÿ‹3VùZõ{Öã[ŸX]§dÝ‰¯å¢×tÀkº×uœç\ã\ßú®í.P#ŽK\¿	2ŸÏÖksñCIìõºu6êLú²$ qÂ<Âå§¦BQ‡1¢¹¼4š‹c1!DªÏZe¼Z¯·Á3kñÈZ¬©-ªCaj”|úQ_4±Ñ|[nì%´•Ô¸>¯2Yæ<kº€|Úð€¯Õÿwõ‡­“ÎgqíÙ//2®g–þŠ/õÙ2a¶.àÍ_Ó¨F€ïô*íÅÕºå=°¸ø¿z÷ûÁOªçÜOv8­žA¨¼Ü/£Kß²B!*½ƒ‹Õe_ZG'•¯õ¨tÆj”¸ûÙOGWqöL«ûþv»¢…¨:SÛâ aš	•ONæ™×bs=ïÂ9Áó¿½ýgµtÞ„êþ>»™Äá;™fÍ¡?üø2½qïúÃœË£(ççÁ¨jëwÊþ16Õ V§Àáß¯rÁ5À}'Ö\UwAdf§§W×9Ü,ŠFfª¤,éR~¥Æêí®€ÓœK¿ôQŒtQ~’çÉì<"x…v±ï€D'SÃz¯á·c3;=ýçYesþëE”¿ÝØOZú<ôbG—@«]e“³ó?üÍ÷\·±YóÊoKanýuï²äâGWÌ<R`¶¢R-ëCQ*5qŽ;*+¤–i¡„dÁÌœ#XJ'åŒ0îÒÈ™ °§Ê"âw¥çh¥dß’”¬<³ÕÐëg64Úž£ÉÚ”’)‰åš”Œ‚Gœ•¨p!—R½ùøry¤Ž—ŠÝ¾ûñ¢0-—±ÿÿq7ò½e¥Í…UnZ~YQXæêÓ…eÆ×ZQØ…e¿VÖŠÂZQX+
kEa­(¬…µ¢°VÖŠÂZQØ½‰Â¶FÑºVþõeS·ò¯jg¼¦«]Ó‘®ã&ààäÖwbpvqQš`õMÐö|^^›uJW £‡PÍVþÕÊ¿jQ‘|¢QIT]ÝÊ¿ZùW+ÿÚ~i+ÿjå_;®nå_­ü«•­_ÓÊ¿Zù×Åd§wO3ÒôCâ©f/Ò§fˆÂ•Ê	$‘ç(h©)¢XËI²¼DÂ01†8!Ta½#ˆ`N<UÔšVö•‰Â&§?þx	íR£:×ÿXŽÛ­¢0ÍÕãQü(Š‹•ÖEaq,ùº(LckÕ®ˆÂ`,”ULj.Œ"²·wV<9©Øá%s{äh™ŠŸýÇ•‘Êä™Ù2™µ÷P±cWÝž
²Üý«ÒeîÕ´²/©!Ë€­†¬Õµ²VCö€²\ÕÀCjÈ*ËH}ý2œi´Õ=JY.!xò²Ì÷¬«!Ë± !Ëü÷¦!«,4POC–ù:ORCV'×}¬Ê2ŠNp«,Ûh•e•×¶Ê²\¿	2ŸÏÖksñCIìõÚ*ËZeY-‚’O?êñ‹ª«[eÙ×§,‡£V¶¼ªÕŸµú³V¶óªV¶¸´ÕŸí¹°ÕŸ¤?{7:cêœÅ¿eŽÖG¥V»uRã£kR½îŒÌQø“U£ÎRÃõV{áPiŠûe<Óf´qBGHÆF1¤	1/#ÖV Æ5Å„s&‘žK¨·E`Êq±CŒllìtMÝ•¾\’‡-^/©½ÌúE±¯ã…»urÀñnº£á à¡Kßç¾MZ83Måé£ÈcyúñhÏJŠ:3É˜v§£Ž™LF¶o¦¾{™êC|wv—ŠI·¸‰J¹Øn˜Å›íJ_ÈÓ:‹VvG!ÉÕJ'ÝŸRúÉtCÖ6½èOºð_o&7±P=ÜrÓ¹0Ÿ}ÔÒ¹îÎ…Yk„!*æìØÇ†Ç¬ÚÞ½¾èÛq4„ÆÏ€Ã`Mí>é¾œM»ã0}FÐOƒAgñÒ©Ï’Ý¨!,[zmnN:»³7¶vÒ½ð³qŒÍ{=½Gáý0*ÇÃ)ôcgGêµøó.NÝ¶wxtRo/zºÔ!šÁdïÝn¿ìúÅ`ê'QaÝ3ègÓqeÉKèÐ¹ÆïaRÍ­Mÿ]yç’Äk½.1¤H-Xý†ÄkÄõºÂ#ÎWõ…“EöÄjuáj{q­éí_ež^-Ó«++ØÀ÷>NuX»§ŽÕ bÊðÒÁøwwYê ðÞmÃÊî»Pi0±ŽÙB:bïgƒ6Zfû ?ã?0ãLç?µØ#¢dQƒËŽ[&ƒ5Ê C(µš…ç…RÒX¸ãØV®	S-ð·ÀßCÀÏ9§³UàÎ­Ö»€³t9 ¿¼_à_YeZàÏî©€ŸÖ<|ð€ÿb5üYé„ž>ð;d$"Ë~ðë™FžáBêH€EÆa'¹‘Þ1Ë¬DfDRK.„ÄP¢Å"h…Zào¿þ&É;À/è.à§|øÉºÇt~’ù\8[¬2Oø<gX»§ZàÏB¬{ þœ2²÷
üQÑtDñ“¨/GËÔ¢^k±q8P%ñšPÂÎ	æñD;–…¦Þzc±R„:]ðpýv†h¸’;Ð}UÍØG§™šnˆÓK¼ëÞn ?…éuÄuœ/Ð	é¦‹ÓïóÓé`øý›?^œü÷ž8?OE	ÉNž——Ý\ X>¸˜_‡Í>€¥_NáNÀ—N¼f¼">KÏI«B¢·'ëã_7žtã¡ýØøáÌNgã8—ãyˆZýÊKÄE?bÖ¢}é’U\”O<XÅì/‡œ¬—CQj—wÊSk(%0JõT–0%(Íüsï±y½ÅÔèÍ'Å“;ê~dU”íp,ÎP)qÍò(;µ ÛN•ëY-è«ÑîMú²†-ÿ<¦hãvéÇI¿ÿ¤Ö!vßûñyó­ý0wé_•9¼kÛ-•býÓú®<Ý€å¤þÖèà½žYÆ¶ û…?š;ó’iIäJ·w-ÛácyØBpÈ´yhYûæ¼¨qWTùT)3ÎÍæ(¿ßmÎi™l-ñÿuö[Þ¨èF"):fØzú‚±û°Y}HûÌšŸžÆXQcR¶Íãƒ[Gª,À‘¯v“Q<˜µë¥Ü²–¾ûcÙ>¼Ò{dáf’õ¬=íÑ¸q²¹–S…šÀ‚G%0ó‚qƒ(ó3Ü0ŽŒâ…·¬p
ü<<£³RR¤&»R™µîÝ·ëÞ•‰ÍßHl&åâ”û]÷Nq|×½ãî]Z—›žÍÞÉòtÜ¾ŒOÆnFóøö÷Ëñž ¦·Ûq­'Øz‚­'øe<ÁrÐ¼‡ø…³"´bë!¶bë!~mbïUt¨×÷$Ù_j¥Ø¶[J‚À¸M¾‹ˆÅØÂaôxDÓÎYaà…¦F 	žb¨cX)0Ì©ò‚z+WØ!äv¸ˆúq?Ü¬ûRIvr;œ»£â¿½Ýã'þ¥&óìÖŸ£½˜^ºÖ®ùO[ÌGýJ'æ€«(EôÚ‡ß#ì xCØ¡©Øž-š€7¿îS¡9Yq©ˆb‹2ö¹Uj`/±ÞÞÁõt\ªùNk`'-¿wŽ–r!–IÞr¬ 4bk+Ë†VÁÅæëWÛË^šˆ >.ú•MUB¿÷óX[@ð©Ì ”uh;“d`÷#GÎúGb¬B¬PVbâ	,ßÞ:
N€ûPiÅÖYÊ¬V¢(¨f–iN˜åŠ´ÈÙrbq9•|DÈù(NB<@02¿cš Múõæ£8öÐ‚fšÛ‡çÇIŒ	–zÎë®.¸0®0Ä1ð5SÆœÄð¿1.(öÊ;EŒµ ÙhÆµs4ÙšTo‚&Ì•5Ðd¬aÐ|§j€fS‡köNÈ©¾Bä|çZä|ºÈ¹Ú÷GèzØÁg3¥TM|T((Ê
’”x!¹cŽPÌ,2Ô1í¸f±h¡ÁÜ2'•‘Å¨<óÓx(qÑâ;j—,	Ï‹î®aºÀA˜’~0k“õç¥,pcÓ—úŸ|g
K"¬K‹UvM)ss9Hç×T3“…Rf]?kv¬Æ~q©vgWñÄ¦qI»s9—‡ÓVZñ¼”õL»×ýÁ ºÃÍl:AyÙ™ëR	E?™Æc…%°'x;étÞÎûñ¦—Œ&“~1X3]š„öôSVèòõ./½‹ÇKá.hÝôb<ºŽ•çÙ­'(ùYòÇ;ðæñ¶ï RF÷z…;H$b¢%w„ËšâŸÕ†öÒ${§<4×@UÇÍ8UìHž°Ï¶kX„•|Æ°jºÒòW)ªÙL
îG»ëk€ÙY‘sÿ~ï*_Bú–2•]{Â#$kÂà]?¢°SâBbá—˜ÂlÇEÜÛõÊ)VHê¬ÔŽ&9O~¸Ý“`¥ašZY¥<¸ã»|ð–X´Äâb£xA<¾$’aÊ™Ø” Rs¾I,(^',?«ÑnüÜ;íž0á82ÇÁ¡v<©]`ùñ‘Œ¥ýb-Ai	ÊAåðcK’RfÓÌÇ}\OEÎl‰‹á
s‚« °*ˆ‘p­´“¦J fƒåÎM‚– ´å‚2?ù„7O>!¹ýäEïD>Ô=D>ï¨ƒÊ_J|)rÒ|æe.È±»)›œ|¥NZrò¸ÈI<XrŒnA-²Š¡Xm"l‚k…GEÐÁX°’Ô"ç™SŽ“¢°Ü"!öþHX¡˜,„Q†æ=Âï`%±Iâëq:OfÅœ9Ä>HÌ$a~R$§aHà]2“U£Ø“á9ñ˜ÃN|ÌèH?#‰CgÑ¨H"Rnz'2IÌ-[‰W¿ÿ¯Å_#'éN.F³K%ßI™,ÏŠé9¡ãî¹ú±”í¹2ð1áQ£ÅÏS»¦fòé!™AlZEÈ‚o„,âÛó1R`ëâCŽ…^YpJpMñal`
¨^ÕXÿ&•uúçhô—LšX?Q·CúPï_m®Îbù¸GBÂúl=E^õÈû8›÷%„÷…Ô‡Ç¸ÕÌa,â‚ÊàUE!ˆJ{ªSÂRìœ)VŒ	N”fŒOÜg‰n‘úkCêÒwgrÃw×rA±ï"5£H-±\GjV3#å$zTNû¨Ó5€ôÑçëH?E‡¼é'
Ò1TKÅèæ, D…gDëÕ”²‚¯˜p€Íi.·Öyc)¡þ+´—Ú¶Xüµañ\AHî$ˆÖÛ»S…g›X¬Ãâù~*›¢ã;Æ‹.8ZÑ‘Ù¡Z×V·{ps¶úezèPÜÄ'·{(¢!íã
;Ã)%Þ[, Y‚ak05!º9*í8£Å2MRsc$§
Dîrm_àaáüì»±3.¹¾OÈS6|/~únì¨.,Z€{¾,Èfƒ7°’tG×Ã…%À5k"lÆ2GÝXë'í‡Ãóž}×ÕØ‚gß?|ˆ{ÓÓ@âK?™ÄU&õLpˆ·næe}æÏƒ¿˜ˆšãÛéÉåS[Ëýuk&©,“Ìì§çq×:€ñr3|0žÇG¥ÂE”ô¯i|\äéåã>ïM7î/öìãŸ{°ÚOe‰'Q<NšEÃ;Ð’nÜ£¯mc_ÁUv<2Ÿ–µ™RÍ¢hÌÇ:â±:Qá#²§*G× ü>½NgNT®á› 1å§l¢ÃQ÷|f`yžz__JÿK6¥KnÍÃíÏ;±ƒûó÷;\7j Rm¤ó´ûôÌÞh»”tS ¨Ñö£þÅ"¸«¼´šw”òN-B³zq:÷*&òÓÛlo¢ÜDvïV‘ ƒv×Îí!i©Î ËÓÓ_¼ù¼?_g†­Ôe•6j@Ç…ä›åOìùâ‹1ª›‰c+¢%¡#)-B V8Ë¹Â9O/<w–±B¾3Ô#¤±"P¿+7[ö-ØI°ß­ Í·}{±°WjGcJµ^OQÀ¤Òhì5ÊLQPÂG½Š‰üT"MäÁËî“ãRàh÷ñ¼Aˆ¯´•ñõ ãú_!Ä÷^ÌðPœ'H,óNÔ‹„à©0­pá¨À†yUÚê¢pž#Ì98ì†)[PÁÅñ’FL¡ÖFí@óðZ‹à5ÀáÕ¸?œÆ(6XÚç=¹@¦Ì x‰O“=&ËªÆ]èÂ¸ê$æ0Š'TJðk:ßYèØïâŸçØÿ<JÈû3Ž-û.öý	|’XwÃBYt8®Ø1–7÷?Ç :`”ég—Eiv½šTºwò©Hz‹Áñ½?Xo÷àLç*–s^+"_˜XLØ#Z¤W˜øõ'‹—¸ÓðN‰Óðö‡‘$qý nºÆ§Þy9áývðlWìŠ,vØ	£b;	YÍ‰Ç”RyöEÛzqžôþHþ!ª³#¤çÛ^ÿhDd©ñô4¶f/–¥-ËÒ{Uº³2>P¿q¬_Þ˜`ÛŒïf2é½={qøÖ,KY !5ÌðBkd—ÛàaÑ(b”yf˜+7kK¸AÉ‚Ñó}‹¢((Ç¾àx÷ÖìÒ¹)×/XiÀ­+OXÙøÆ›tácv_GƒÆºé.FO7Ì†¶,•|±ŸÎÆ%"`Åè>ëÇòP0›¾‹ùbï<›Ì ¿{ß§§Ãf^§mÖy*B?ÖÛµ#÷¼ôEÁÅr³«AÜîõ]ŒýK=¾“EŠí1QÌ4YßKÅD‘U2¦å-õ‹¶õâ ì-†ßŽ€±©º£/Ž^ú1Ââ¥?¶çôT±“J«—þÅ«UÚ¶=î=TT},¨ž‚$–3^Òeõ‹z BX¡UØ&WÜUF¹Þ{N¬$„qá‚ŒaA±DZ­B^c«A»²”ýì£kPvIl¯)F³é?æçV'Ýe™½Ý0²˜
‹êÂº7ºž$ýóÏ‰Ü¨~zÜIç=Ìþnyoé2ô'kwÍß†Ñ,Uœët®ÍÍ¤Œk–¡Ï±þmÚ1ƒøónŠ*XŸ†npSÆ#g“Yy¤vøy4øEMðAR˜~xÑ?¿(}¡Ø‚`ëþ¿ÍØánhZ<y‘dh˜LÁKŒ>E')ÖÍ9éÞí	ð’.¯¦Ñ·êÌ'(ÜÞõfÒ÷ãçeÐuÑBh8QÁX_–g\ï€CÆÅ»T¸Bú>R¾ãÌ.‹/«Z#%Åª+$ y'tÖ[Ø‹S¬÷D!²‰9»»£3·‡9H¢"äGIÕ¿iðôô§]=ÖöfÿUš»³˜?n(Î8¡{÷s5&\êÇl§eÂGÀ]Æ\“ÞË÷¯È&Þÿ¥ÄGÁrÒv£˜DN#…ñV¬µd–rî½pZ"´ÄÖic4g81;‚"Îy‰vàýÛUxI¯¨U¾ilþÜ¬Ø•œßpzZ˜3—¾£)ý¾$ów×™?î¤û"U%þl†Ó-ðÂ5ƒþtéžº˜×¢´wÙ>›þÀß‰Y;ÖÛvr§±i?oÚ½öƒ²…çã´5¥f¿ýíyÜNLŠáÆàÇ±¬ðÛßbQÃKeDõ0ymhî‡dÂ7 ™Q‚¶B²dH¬C2æˆÆäÏ·>+§8³fÇZ{qÌ£tåÌyôAÊcscì|ÿ£AX`z«º>z+ò]juí+­m‰WæY~¿„`Õím4"
Sñor2àgß?¬èïÅ"¸<6=^á:÷–éE<ÌïB‡Üòó»·/_}„—?áw?
nñb6½‹._FõÓÐLƒ7<ºšE™V´ÿy–ù")] [Uv÷Ê¢¢‡r¢-Ž§÷ìç_ÿþñ—g¿TŒ9G›XŽ6¶9Ö/åjH.y°”ƒ7B*°‘Ž0aÕˆ„fØYEƒ°¥Fzà2ã”´¥bß8KŠjµ%å*Þ‘Œnˆ¬0'­S1ŽEÞþÁ*²_=ü”(Ú’Úýr<u[VË{zÔ-K}/”îžeÙGQ=ö”¨Þ—ÍBÛR½–ê=Õ;ü$ •Xc„ò¾Àcíë(×A{#Ä¨3È‡œNè‘2Xø k»Ñ»N´Tï[¡z¥ž^m$¯¥ŒïHUToãðæiµFõˆæyék«(ÍùS¢zÍFãî9=íWCõv‰äïŸê5/Ï?†êÑƒxÛQ½/œÓ·¥z-Õ«¦z¿›ëcé’l¹áÞHhO`G
å÷F£ ­óØ‰àÁŠŠ¼“à¼ÐBRã°bžjgµ%È¥âžë.UÕ»Ñu¯Ô­Ñ±âæw{Z¤’êí´Òy›$¦$GÀâ¶«$TË±?~FÑfü,<ÜFªÆ1á
©„ðÕCŠ"f£¬E©–ì¥aØÛ; ”W^ `Z½n:šf) GÑ,ho×ŠKO.õYvBµÉìÕ¬ÎcóXWÍÇ·¶Çak–Ke3Ÿâfê«Ëkßò£–ÿ4Ç4]Èÿ›‰wéÂ{Ë4BrfZ	¡Q²RJã,ÖÒp&)žGc=KaEÀÚ.EËŽIË°edì	*I¶™¤A/«mðÊ7ø×Z¬n
BE^ÉÆ­À®ioîào,®T¯sŽe=qª¿ëÑùŸ\ÖSg»ÖSïñm°é±›ZÖóäXÏÿ‚'?¢ ¾ ˆhî±&Ä1iá
M¨ƒpmlÐ¡…ä–"éLÁçRˆ™(üB»¤õ;HO$&ÿ†8fÇ/­×±³©P|bgËŸß&ûÚN†âS8›°?$î„‚€Ãn¥BBc¾¹¿F8—kûkpsý`PleÃ± g›dèûtÌðßiú<ù°Pv‡Ï>(µÕÝùÖpP(šüò1¡øÔÇzô1¸ûßuèÛüâÿùˆáè„z£:ìÆŸGNhòúöÈ~ì¯éš Â[§„ R]¸àEQ!”rÊaÍŒ÷˜hë
†m@H9‹°AØR¸·ìïž#aåxÙSwJƒ‹íÙJ%Vb=†Á‚"kìÉÌâàÛÈLƒ‘°{e «¯ÕMGs>"›Ø	Ìá|5Cbœï"b58ßˆ=úWËùÚ€_Ëùä|ÃÐ?ïEBÒûóð<‹D.ê14ì¡ÐÊ1%9)¨ÄÒF¹>uL*ËE’s-\A)âÈÒà©e†‹BxÎ•blÝ;[dÄrÝTsnìáûúÏ&eŠýÑíýÙÍ¦W³é~š,í2Âüwó›¾ë^÷ƒEÂÅ˜=+¦Šú+Âáô6Aðÿ^öv¤nñß3¹ˆ¦Šþ0&#Ž)ãeeb“nÍ/r×G=þd:'þ$æ¤ŠwDCe
ûÑpps«ò_0Ëdž“E.Ò§=ÚÅøXrÓ8iõÓ37ßkWûÃ˜éÑ¿‹\ÈûãêÎ‘N®ðV&J°ÜØ’%TÐÕ-YÂ)ÉÜ’]i_/Î˜ÞÞ¹òôÒ`5‘H¿n'-ECô@ZNäØÒÓÓ?+òHYÍW^¼ÒXöR{ñ;"rT¾MsèHÉl¨¾¥ó[c5˜DÓý]´üXïþX~,¶$J8ââs1¹þÈ5ûß-‰Zé®¸ð>8+½¦LX©;Í4×[áeÜ`3?¡¨€µÓ€kBw~µ+*ÓÂô“‡é=A£µ»'	wjà²íÇñl=o3I	³V`Z,K¯ÖƒiŠzøÁ³R~É0ÐŽ×o W3B÷´´ºîL>Ðn[ïPsR9µ€ZPã{vs»â‘Ï^÷ãE§§ï_ó×X½ÿ1z‘µ”±†öT„ÅRxŠ"h«¼Wž‚Å”¯;œ!C,ÆÊÍ¥^ã
XJ©FÒ‡½[ôÎ/N'Ý®{&	××Ñ;ZEoœYœn¾H¯b¶<\o"ÇtýÎ9¾"-|ûûGýêôÐ5P¿Ö2Û<È+;×ò'Í ñÓÞ‹³_qw,kÖ5²B9®z¨@\x©áß®äØz'+¤
¢°™‚Øx¢š _(é…Tî*›{öë	†Y«) ,ÅU+&æ]qzûb~sY¿¢´0é–fXâ^”AÄÂ/ßüþãë7¿wÇ±&ÝÃ€áÊ‡ÜŠ…JÂ„\¾Â ävOVÀz)6…¯’ê5éƒ@¹Â×Ûö•ÁÔr¬<Ì[”9ë³£Ž¯ªÀÔAUVGü±aãuk§§W°>ûý…2ƒÑËNËŒE¯.Bä#gn]³†¶®7>d§¥­9ÀþðÛÙÛV^u6²Ÿ|5¬ÿ+Öéé;XJª³²4½s>›õ¥yGXW4‡þã›«iï·+?<;{×{Ù?Î.ÕY¢“X»'M@^`J3ÒŒ£ÂæpŽ?dáL8…ãb=Ë´ä…ãÌ™BHn°bNRev ¾«kœ¿hªo¸xÙl vÍééü–ÓÓòúÝ¤µ©ý­ÕËÙ`Ú¿ž¤îI9êü¸cÆàåd÷íœ‚ôt?À(€¯ëI]ÆµÓ‹Ñìü"9ûËÊU¾{{ogÌ¬”S\<õ¶Acßõ0e£(3Ž:©î[ðÑëÇûž§RPO^k¶¸zQSjùVEù¾ŸÍ`Æá÷nfK¹gª˜ÕY¾õ²|ðÌ^tÍ¤ûÉß …Ã‚žŸ$ÞìÌßÏ^<EÚ:Ú÷ýÙfåªwT¾`okÔˆ‰Õ°Î.Ö¸¥•½8¹züÉU¿8">PÑÇS¦xšý Ê´uY¨`9HWøV³§§¯þ¨Ö­]UÙž;u=û9ºÐ]Ï9JþiccFI‰˜­°\¿ç·o~…ùˆá?¨-Ì‘ÉTySLuÇü©¸íõÍÐäŠ.a©ÿR1¦Çynzm¾þ~·bu>££ø0)†—’Ã•E!)%”ˆ/)„ža‰¹þ&HàÄdp%²Øøƒ]zÓ\:w{ñ–2Ð#8ËHüåù<ª“ö>æÏÜjÏ–¹¤ÝC[8Y£-:þt»¤ICÌ«´…ÈzniW:/¾³ÙÄÔÇóûo‘³ltAé€› ,¿WšÆõÁï•§·¬"5Œçqíi¹Fã\îžL5zårÒtVàÙÇ9P1ª¾-ûœÈã8ØñÅIê½ÃIILv?××"%ÒIÍ¤qÀ<ˆV{Q`B+¨¶–x„µÆˆ
§‰â4u¡ÞáBZ P,v%ê¿V’¦û‘™ø™Å…^³ã«ðãî¹ÆøM,åB,5˜JigçIq¡¢ŸÊ* šxïuù×,–)¿ßÚ‰?]¶j¾ýõ·IEûdïjëøØ˜Y¯½;Å”®ïaQÍ×ôŒÄÐM}†“ZÙ‹Ã±GŸÉ9b«¢ŽÌ u6sÇ½—4ÜæxÉd#Éh¥Í;ËS=ûy„gûsZÂó¤	OógP¿æHÇë—¯{ïoÎþóÝ¡d‚ &vž`Bôj„õ\û|–¡àŒ„À­ÒZ{IbL›¨[aÈ0ë­`DÂŸ=Üal%ÆÆDôÄ¬v…>^tÓ‹®D?bÈ#Dv3	èžÓÓË›É¿QG™A¼žw_›©‰Q²îmM)7,'›ñºòYn~]ÜFê¤]Ÿîõhì&§ÝuËf¸Ò¬ÂO¯½.‰ËùØ\^ÆpÊ ý|ÒDMn´zÉ‹oË.;º¶³”È–WÂ—2eU©eë:—f&ãñÀ.p’©¿üòç=ã@LÝ±÷¬§–tõ¬'•(¦ÜJ[°@«uÞ")Ò«Ú*…PY[JËyÒK~Ë1Æ•¡þÍ¨×;Çg‚Ào^Î†nàOOo§Þ^~P®lUQõ{±uzú³Ÿ¾†QuTåWÔ»¼ùV/ŸT"àí0¨îŠlÀÈxZÙkô©©G}Úçœ.±1’yõeIG2/†Ç¸"ÞB¹%þ=v°ôá²83%Ë
	~´™ë‘àZipv0æª†ö/W—ÌÊKßæ\“ÎE}÷|Õü¨e“û¡_{pñþ Ï€ÑSgk(Ú²kX$u(XÂh¤!ŒYŽ!
™@#Ü2Žˆ´„`Ä(âÜÂ¶­ð;bÓ	Àx¼ãÀ¸ØpxJ³âèÌœ/Y4w1ÔŸ¨pxX³^ï´N@ëdFÆÓqê<õx'`ói­Ð¤ð•DÂ›p1¶NÀ×ì|8?Ô 'òdQµ€Ý9gMÄ¨`^[dj( èIÍ=Ò†Ó ¬õÊr\ßk$…_`¦à·A[J±¡œ0l8)’(Ãîm€@cÎÇþ®pUí|8OL½¤äk)FãO+4äò×›gC:ð“•6,ø=Êöñíç»È¶fš*ÍÑZâM0î­d› ÛïT­m®(¡YjÈ²m½4°z{‡T=¦ý™|%\;³sŽ&ÚÑÛìíç{‰Y¹zä@Fƒ† i>˜Ù`úg< •‡Xñ®\†®Í¤×ñÚLnýá¼º²×áªGå°êÚ<ŠçÖb¡‡ÐÁ¥j^ýû/~þ¨OÄc¤œ_‚VéK·Ç>¸zâæ³µI•2çFÍï1½ø=“DSá™çù$QZHB@A{ sç0úç<1XJ¯˜Ü1]P†´wÈ…Ô²°LŽìÊXÚ’Äz$QˆM’(v”’ˆ¿CÉ&I$Ù²Œý<h1¤Z’¸¯sZ’Ø’Äëð!‰›|’˜_ç!‰MÖ˜iIbK!‰!Hì²Ö\IÔÂñx„Ú
¸S"K½Lbâ©ô‚­LbÏ8âXR¡5	Áqd¸EÎ¨–$6Iäw"‰Zí$‰ìIäQü»J±È:uTÍƒCª%‰û:§%‰-IÜ¹’¸ùÈ‰$f«K¿’Ø¬Æ´%‰ßIÎÒŸúC‰">áj¾X»òùCáŒu²5x¢
Äz­0á”¤”ÇÁÆc‚_„ˆ¦ÆPF‚ä^
Nhñ8ŠQ	.ˆDhW…ôš‰È½NúÐÝÌp~i"†W³ÈD×.MØýýõË÷gK†€zÞÎ	c¬0“†þÐuÍ´3çi×××'×ÆöOìèòÇÉõ“Àø'N*cp·Œõüéå£V)él2?5_
Cçvn“1>ß,[±O**ARQ?Þ.ÕR¨õL>H¨^-SÍ±&ùçÅÊöõâ8íí¡Ç—§þPŽ•×i¬<¥„?õúéxÑ(–‡œŒOÌªlæ^“–¤–VÚšK–ÌpZk·ýÙOgfðG,WÒlƒV-CófãÉ(“xn·ðÌFxÉ©ÏH1œg¦‰VEŸ;ª÷›°‘Ûž•¡^ùÅ²Q-çi9Ì»îSª?þˆEš	+iöï“=£F÷Ú2uøzr4ç•‰îïƒŸY30ãÓÓ¿OûÕ¢Ò?úðÚ¿˜ÉEå•YÉ0³Ó¨GÒÑÇClú¤é¿+0•l‘ð/‡þ[]hA)Ê9î…FÆúBÂÏ˜&¨ðaŽUÀJRo¤¤-ÀS@Lê`<raWõ–þ? ýßLÁÞIÿ1Ú¤ÿ\ÑÕLžàò¼DWY´v1B[úŸÙO-ýoéÿ7Nÿ×Q-çiMÐÿÍ§6Eÿo¢†fèƒ‘ñ–þ·ôÿk¢ÿoçý‚á]Çj±Ö?¦ƒ¤–>D
€Å+¥Ñ¢ˆÊ[ {NæŒ*HF°(PÄxN3ŠS&Oønñ’¯Ï‹Å¤9ò·¥pçö«+ u%ëü°’ëá6ÿÄ3xÂ÷ñeÞˆwó\±xqé…ÄVœ•onÌyp’0ñ±Dq'Ì†6UJzÞýåÂÂPÖq´±LÚp¥ˆÒR5N
¿í,~«ŠçÄ_ƒ_/K3Ù¸êÜ¾eáãËÄzJ÷êP¸¢’0(z{½¹¾y 8 Û‹I.b]£µBSªV+XS†óJ=Âgê¥~7‹ÂêÿFææöÆ±þ#ê 	LÁk®ªå“ÇÅÁ@óÔLS.–<$O÷äâ÷âú\ùIyq&ãNWPÊ‹ßüe.¯þÃ~rJNfg(^—®BÅw`yºžh	ÞV§³4”¶»÷l
t4£JÏíÝ5‡@yS1°rÃêž¥O¹ãh~uæ@*¯ÎI?Be¥T„9­®Ázkœ¼,7§§/	¬0ŽÊ›àÆíÀL&}{oö¯¼jzÏ"nØø°HO"õÏì}†IÞq×þp6ØŸ¸çÈö_õ¯ühØü ZyÄd¾ºTu×•uôÒÞûJc(¯»ÁÒêB˜7›ÓM5×¿tOå/]Ÿ»t•g®\éâÜ…ëW|9ø'+íÏ}ú«›jƒ!ša0+õJEl)úkÕF6ó·œž¾øõl¿ix¤„ÎXÒ·XÿíõËWUÖq{`ýw?‡÷Õö2³MS¶á#WŽIÆÂñv®Ñ~ï§Æ¥øjE÷‚K×½åÐþ×àMÚ÷ªZš2’¬Ý±Ys‘ÚrõjËíÙÑ··Óô?ú>~³ƒoNÈÙÄØr{Ö¼í¾œÕxË}YóÛ%È¾ùËÛYÅ¾O‚V¢2ÖÓ[»¿ûÍ|lK…]ÂiÞ<^ÚJ0Ì L˜‹¼y27|æÇ}3èÿ;þ9‡‘!Sø€8_Ï.¯ª9ýQ9›ŽÆ•›hÉqàªVgÕe¯u¿òìòˆGd²Ëì'|B•›žP‰Òskðuæ ñÉ`Ù+F«‡!)]ËzmMfä\{QÝyîÍ­ù³Y1©ž:Tçê³ÿ|LÕGL/N”œèÊªÉàü˜·2¯Üš€'ó¶¸1T*v70ôÑø¦Ú!£9¤{iúc¦e¬YLæÑ);º¼¬>¤Õ<{Ëdïsò¶“k>ïðýäg“ñE˜Âæ;Â}ßùþ7‘›ÊÞ	þHèŸW_víòc}5â|›¹cÂJG†trœãÃ}ßÃýÚC½ÊCœ±CØô!Lù |Ãm€½ÍLaG2ÊZ\®6O;€ƒÕä*AwÕMIó•Û :—ñ8£ÉÙj˜ŸìpZ-ƒ)÷XâX‰?Ì¼<J*/…Ee‹‰¾«qâíoÐ£ýê—Š×eAE¼ðÌ|††æí‡WeÉÓêƒïÍô"¼~›ã©%GÊžíg7—Å¨IyÓß}©Ã‹w_X•©pšMƒª¼(ëDõÃçå†ŸÅµìÿ\RVWô£óØWÿãÇô«W1·W<BÉ•
Èˆ¢påËgåmD40+)âÄsU  ´
S¬˜¡…ÂÃ?Qà)9f¢Ö ¢°Òî:jÝJ®žºäŠÜ‘\ÑíeÉ%Wˆ’MÉütCr¥h#’«ÅR’«cfäõF+¹j%W­äª•\µ’«VrUÃ~+¹Ú¦j%W­äª•\µ’«Vr•y+¹:èöVrÕJ®ZÉU+¹j%W­äª•\mþB’«õ-“½ÏiDrµù¼/-¹zœ™þÒg“[ÉU+¹j%W­äª•\U\ÜJ®ZÉU+¹Úra+¹úò’«qî.»RŒÌ9=>2_¾hVF«‚cãƒ2V.´68hƒÇRB½.P'(QHÎQð˜þŠ)¸ÌÃOÙyÕx+¾FMGÝ—~ü	æüM÷õËîâ%ðÉ_ûtV©GJ­Õ<ÅìõEß^tÍ`0ºž”ú©«Rh•qi>ù(PZ(˜‚±ýAÚ÷“ÎÜyqÝâfWKºÏú!%È½0Ÿ£`jè¯ýxy˜|ýòyü}çº?tßô/ûS0	O^²€Loº«»•X…•§}Ÿ_Û_—"/×½ðcß½ìÇ£q™Hwµ¹·—ÛÁhâ7÷'Åšœþøã¥Ÿše2][™—#u«4K$VrEšÅ¥B/\êi–bZ©ue–âX­VÒ k(·ÄojZ/Í†^šßŒëî›«·ÂT‘ÃRà~¬”ù”ëU%ü8§@üþæÍÛ_ú-ƒ4Îo‰QïŽßß¼úõ·œ[]ý~wÖãJ›yñ›¶JµêŠ?‰YLëW9ûvã5•{JYñš{q²ü€|&úÏ³LOéqä#½Ït¤µ»ù“‰þÁ:L‰5”H^(Ë˜¡ÀÊ¬R¨à†å…tÆïHQjœ°Ø8àOÁHƒHh	\Kà6µõ|M[Ï0åš²íŽÃàÛ pBÐ5e=H™)¬_¥1{çÇ7Iìö÷ÈÑ„!‰[Âw4áËX×'‚YÏ|(‚øíæPh	bKkDNv¶Fâ©fÓ|‚H÷„á`Œæ„+le°·qIuÔ‚U/ˆ¶q/.¬¤4Hjâm„¯%ˆ+Q3EµPx… ÂˆFlûáK%ÕsÅ×"e¹Å²–tˆ“ÞÞùñ¤â1	ïó{äx‚¨¹¾?‚È¿r‚Xg]oŠ Ö{æDzÛ{ ‚HÑ	n	bK'ˆfjzQ¢²I‡£ø¯ŠkU¦Y-ïÌj,~ÐTÐÏaÊh%(páˆgJY„•Â:0R¨C$ŠPEˆ£žhe8•Tzl€.¢bCûibKÀjbò Hñà Ëxf§3èÆÝäpGáÑ	ØŸ,èX×&NÑuÐÏ¾/s^L$ÆK€å1[Æg3˜ÅLºý)ük|>‹jæ”/»™-Ã¨ƒ&Î¯‚¦ÍÓ2)Gù›Ž§XLÉJíÈ•OŸeõð‰à)Þ=_µè¼¿‚ë®nlu4îŸ÷Avm˜¬> Òàr<EÊó »éÆÅ~û uSÃtWÍ4%˜È5"¨	;¶z©d‚®WMEZ±µ¢©Zåmô.ÚÖ‹s¡·wœ”ÓêaxàkÿÙFWñcÿønQ·ŠšØ^ÁŽb…u:èøbIè!´p)Ö«`1¤úìÖÒTÒ ¦ eèRïÜé3dÑ+7ý16¶ò|O5³Ý´ÏBª¡zË}ÿ›«ùãí©ìül¬9†AÁ¶²8ÒêhkŠNýáÇ—¥üÕh!OÍRé ã@•š"J“tØ¨ŽJo«:.-³sXƒ§ñýÛ÷oJÝª`6W<VúTð`&jTƒ÷Šc#
Ï¨Âb FH‚òÔ™ ƒ)¸0ŽFZ1¬Â9F¹g˜íªßÒ§¯ž>!Æ7é“ÔÛ7Zok¼IŸ^§O¨1ú´˜O˜>‰{¥OËjéSKŸ¥OëXÓ<}ÊÚÍléSKŸš£O€Û²°¾Fô	[K‰¤`Fp†Ó˜ê±’3ÆŒTÒ
­h€«ãB)T8‰°1”sávÕÔnéÓWOŸ°¾}Z ÝúÄÑÝè“Þˆ>åmBf°ƒÅ,xzôéØýÈ:Ó uâ¼¥Nß$uZÇ™{ N9'Zêô-R'?>TÝEN°Xä^áÍÈÿ©fAh]`Çc–#d¥õ”!É%µÔ	˜"ÚS!tÀ2ƒ½
…ÃH²xÚsWðé,Ñ‚~¸Iéð7™ÓóîdÖŸÆCÑeÆüÇŠ´&’‘ÝÌêgÀÚá-?êNÒIìI>€ZX‡Ößfµ~3îOÐŒfÓÈbúã˜È>f±ŸtúÃ²i“ F•dfibÜ3˜Œ¢kTü··Â37î½è,)<æ
žÔÞ’½D¸&‹$H'Ý_àc¾ý‰„ÞüyÓ>ðªÛÞGŒÇðÀûToU'?Þ—>Ÿk¢7%þ\nWpq%‘\Wp!¤ZUpaøQžÄÿ¶}½4z{çÁƒª¸çOGþköÏñJ}ªL¿—¼\FàÇÕ¶²—Ï¬çå©j?÷(!ÕPÎß¿ö]T'³z	ãÇ_Áâ_ÍLšUAÕÊþ‘­[*n¦YV³spä±#ôMøœŽâI’-”‹5£ƒWžy‹”ÑˆQ‚K¯,( %BÆQÃ
4
)åtA\¡­"T‡…v2ºeJO’)íÖ¹¯ŽÓ=Z÷8×´î’/Î²m0%ù¦$…\Óº#-bJ’õ*fÂ·¢x¯Ý/Gs$ ÌŒ¬Á‘*3Ù×àHõ–Î&YRÝ'7Ä“îM@~ÿð–'Î“1ýùíjúVÖC7Ù`€a4ŸJ¢^>/®r6æ`Œ¥… V¼Ó¼p@q´b
1˜£˜[]Xî÷[«%¥»vÓâøK¬HKH,”ýX,uñi›«;JàxØïÙ\‹ÇâÕØwÏa6N1šLGi*Zs‰D=Ð‚QÙ»†¡Ð½Ó¶×°;únúÀx¯Iw=¿=Û7¥S‚·Ü)µè¤û&2* GÃçðÿ@búq¯ú¦[¤§wàÆD£N;ÿm¾s÷?»ÿwa4êþÏH3º³¡óáyúaaÆÛ~øï»?üëfñÃÿ·{rrÒýÿžwþŸÿ£ÓùGzÑ-qb>dÊ×ˆœÌæ­„™ ‹ÖZ›Ön9=½ü]ÿ¬lè¿®ŸÅ¶Æ¦AK¾ßýøïáùi£óz4þ4‰gÍ¾Yü
i+Óo–‡KòYÕŒFB¼`É#áKÄS›‰Û–—ôËÝÌÔæ
„Í;hW$¬ÌVÆÕF¶2ªµÚÊï(Aˆ­ñ;¦•Fk›ˆˆåk°æÍë¥éÞKýém6¥·ÚÖÇ37$Êa¶:½*¶ØâJC¤æÖªÝYöhs«\Z²ÀÐÁ\Nró©ÎŠÓÓ·åÚËŽÐ‰®®«pèq±G‹÷²™}!)ƒ¡Ib°4Ø	+LÀ¬1	@Ã)¦4pë„ôR*e±äÜqŒ	Ì]˜i¡ZÐò€¯”;bb3é•@lÇQ6B°Þä‚¬ó œåY‡¾½ÀÓãMlˆÕé ã9Åe9xxÎ÷À%rvZ.ñð\âðÍ˜J¼ñ†a¡)°â†"Š-Á’ØÀãˆO-¢VX¢ˆ–DxBåÎB-—h¹Ä×Æ%Ê=#&7ó#I¼]]\‚ÞáÂäÃc
{€§Ç%®®¬`ôöQNj€O ùð‰æ÷pŽØ]iùD>Ÿ8óé´Êá|‚ øGÌÇ„n&<¡™ô¶ @ŠèzË‚Ä¢ >pXïŒâ÷ASŽÁSÒ*IÍˆ \x†vPŠßa.v/gƒi?Òˆ‹Ù@hqð'*#F	úÇÝ×/þxÑ,:fg†Â4çý·rhXžŽ¹67‘ÌS .ŸZÒ»xxg h×. ß}NC¢l"5£ìÊ¿MÖÚsÒ};Û“D¦‘]ŒÊŒˆòò”
1r?zŒ®áÄ	Ô¤¤8ÐÖÂ@B.ÀÎ.Gö2y Èœ÷`…ûÍï¸ßRn…L¢µÜ€LÌèj&&™%CVš×[ŒôÞÞ1þôP³©„25ûéøtƒäàœ7¶8çK[vÎfÙË^*È3ŒG+/{ÿûo±åå•™V€!ª¬˜›õVz°Z«ð~MÐ*—ÕxëUî2ÒhÉDÔq¦½#kä˜BÆxAYc-Ü_ #Ö#n3-„~=:ßÉÖww²·+)Æ15è*„R´ÁŽòu(„Ê}ðÍì/X¤aO‚Š°/‚²aÜ²¨=Ð>vvìT3¡iŽDÁ9&Øj‹8°jÎi®	qÍ ì`-,gàL
Cã^ `ÚÂI±SîÖ‚àà~µþrî½j|'5½@;Rja©äÄ ˜ŸâìãO—1×¦rïvü”3c| àk¨M ªï½2{(šŠ¶Œ2Ôò½÷Âª‚rÏÕˆIælÁ5•,X¨RÈÐ‚)'°òÔ)Èé­”^"Zx¸~`þ<öç€M&%E‚	hÆÝ´¡³³AZ8÷æ[ŠÕVb8ëfƒî>øy×ucJ×¥Í×Î–Ç?KY†©`ŒKÕÀÞµŸÀ ‚«F3øØý„ÎÜ|ÿ¼±Í7ð À›¸åx÷QãM‚>ÇÍâ!|êIÚ¦Œgà!nrÚ}{öÛ¿wÂ¼~6~Þ}ýö×n<N/|ž0v åÿŠgéžÇË»J Ü}v*Á˜«+XÈS}ùq-Ëa¸ß¯Œy»oýJEÞ•¥~ƒÄºDZ"¢øªFZ"É³3-•ÍëÁpïé§äR.c®ôÔ¼óöG£¢dT†Šeb »ãªT±¦ÞZ:=ý-6mÒâ‡YK«H³Ö }ãQœZ“¦íþ—?º­·ã­ÊÎÜy Çþezzú'Œ Ñ~J O*wjãÁ9èÏîµ$NPá˜“êÎ\8èÃ7uâïÃogoÿùÅóDU¤€:”bÅ­²Þ‡àÕÍC@O¨Xæý¨E³0Ò:iÒÖ0Z!•S.P«¸©ˆaimàcƒ4È	^®*ÖHÑÝI-ãû£Á`–@3¾›)ú©(]¹òwÏýÐL‰Ýl+ùÛ¤ûâÃÛäÖÛ‹@¥à•»ýŸwÏM˜”sþº¼™g2H›ç¾œ<ïô‡v®yÊ	$-ü_ý²-ÏG{7³¥òËwûàØéœ®u_•j®	üÌwüðs<¦¼˜ÏÒMÐ˜«Å;–uôoÏe<ØÚô6Q'P¸›«¾MÒ»««8àO. !ÓÑ˜¦XG‘Ô€‰Í“b–% S§ÆÞX¼jÔìî¶:`¢ ñ²çp{©d[(ê®GcÍƒ¹1E}òþ*½õFhîKÝycUF:.ó. /IÓ\¥öðñBú Dpe²ìå‚±= Û¹ &	µÆ©ÖT¯Ö†f+)²¸àJ{q^öÒŒ|RIŽˆ ìxû£ù ø >ÛéVlÐ^â‘–Ð*æ±òv•¶î,Çyvs2ì²ßT:'ñ„êÜe1°C ~ËEô ³B4#œÞ)-
E¨çLPít 2EDÀ‚ÅBÒ‚	ƒ©ÁBÃ€g0«¬Þ•Å¨%-±x(bõ1uÒfBJ±C2Ä‚mž¿Ã2	n‰Ö‚H,öÎÔ'E8ŽüÕì•ã‰ˆRm×<4ÉXÖï… d=÷±ç¡¼â’#€l‰K%qá‹‘†›Qjé
Ìx…Qh¯'–1C±A
iOœ/„c!DÝš)â1B„5†	×—–¸|YÁÉÚ,Ú#8âN~Hµýà–Š¨õ*$‚*†W.†€ß@\¸èí©OŠ¸4)©ì•N)–²qá—:Ëz“Ä¥Þs{bÈû .YÚ›o¸xÿéPÚ²R5†!ÖLÄÅI)°QÆHe¹¤Ty<AÌ¥Á	’0ûÀ|€E^*L½òð¹k+çE)áÊ3;?Oð8RÞ‚ˆ{ÿ<‹B˜ó±¹¼ô{ˆËb.ë.k„-I÷ú¢o/JÑç¤;6×%°ÇçÆ×-)€ï\šaÿ*êjbé¯ñè²kæ¹œÓc"Û(ó$!M¢£	pŽ‹QL'°ÒÐò%:émçÕÐàMÒ[ÂnRv†	,šñºôœW±éQƒÑèSª’–.3üª3¹Í€+ÄßÞkèâúúú$­‘ ìRº¥P’o{MØFÁV¦¤XÝüàã:H¹¬ªU1´ŸÒ¢(]½ÊÎ8à…Vò€‡¯vl•±•Y2+kñËy^¸×n—8V©‘“nùßò¢;ksîX1*Šs-Ð»?–ˆ-Ó`r²H:AWèôwì?$³X0X†kæd¶R:d˜ÎZ¬ãÃ˜[„°-
æ¢…6À/d
W ‡„G@,
‰-.Û¥¹}XÑm)D]
1WP5WÀ·-ÕœÐSš‚âµ*Rˆ<)í…½ù~RTáð @¹½|éc)$\£šÈ ¹5%Øºj5ý;ì·š‰âŸÄ«Å`æízhb
RªÀ™4\Ð@`ñPõJ9Æ9ÑÀ‘òNjA©’šÚÂ;KU `ñ®<G-ô?èŸdb¹W éú^eŠl`Ä¤Þ9Lùø³Ìs4kà¯z£ûI‘‚câ1âZÙÇ’EðQd¡¨WZª±þ5H"j>·ÝhÉÅ‹3?gÓYQÜ­l™{nŸ ÞôE@’;f”ØÛ¨¤BŒ+(£J˜àqÁ|p^U`5”2L°õHí<Ò[ê&âš6+&Ý2+rì‚8r"
—¯ä+½VÖ¿L8=·ECÌ °|^P2þ²4ô"ÌÓSt>~Œ¹->~„?ùa÷´f!88÷pß4Yˆæ“>0ÌvÒQÞôÀÎ²âd÷j`¬ws5EÙ@­Y™:e‰6ÝKtÅEúb?ºŽ
xh'‚ò.(ùI|“˜Ù¸D°Ryû­?¼ð1´ëšÙtTÞ6·}¿	¥ò76äù¥¦ÛUðËXÒrõˆ¯b«ÚKÅêlk¬^œ•ýoçð—ÚáPú°ŠwæwÌ#žGV,VüBûGÄô‚y½ã¦:ýð|u]Áå6çŸúàè»“<-Y8Œ­ãXS^Pg=V4&H
aê±H/aô^hJT¡9÷’*[xü¦áq´ç›A{‚·’qølÂ#_ƒÇÌÜÄÛàñ6rÿÔ`ðñDïñrÏäžá.3ˆŸwÇÚˆc·°Ö,¬5q–JK*W…$^;ïM,Xoƒ¡°)A<¥Î#ÄbJ`",ÇÐ"˜¡»"Î-Ü=q¸«¨Ö›j-¶oR+Á64íRIº†w,/‘ð¼«ˆÏ>5|ükŒ5âøxßaä#B´-nÂòqè-:QxÞBRÏ4ÁXëX@VSi™·¨^]Äm6‚™¥”+&˜Õ„YŒ±QÌ­\Pp»¼À´ÿ˜rû¥æÆå=ôËMÊ„\þr`6‰ý2?1ÕýlÆý˜ðooBÄå).°w`¥¼ÃÑf,/×kðä®Åˆ˜ÅÍÔONº¯`5î¬ìæ¦l†·µÕ"@Fk‹[oKâ%8ŽKü(œtß¦caåU©Z`%<gQ¿m
F§³ñp²zgùçtÅ#frWc€l3››çóúz·-¼¾ð)Ÿã zó¡N®ÇÁZáÊ;	q”ØŠ””²Q>žh¶V·†)TÇ7ó½8%zäsm÷ãÏqQtP©ø9êAs*²«ª,t+oViéÎ˜c5g3v—õÇ®ç:Â“=ýóÍïgoûuoê?¯*²×ìöë#9ï•µ•ûmf7IŒ7š{¢‹À¼Î*+½ošJ¡’ØZ„ˆÈ`äVyæ‹B¢]euZ¢ðí…r‡UmÖ—±]ûEáúu—šñTq~Eú…ê¤Í»Ë½“ä%ûûäxbÁÑ=±ÈXKïpd=õ±Ÿ;b§¸%"OšˆÐmÃøð@¾g8ì-°W`¢#B3Ç	ØÅ„xŒ‚+HÀR¹àÓÁ#‚Y¯CKD¾R"R‘²¦Å{bûTnÆö9ÚQœ^0´Y!‰ðµˆÇ˜Ô'"´·w’<)"rl’½Ü>9¾"&G¤ØË!"™Âð"Rc-mˆÔzêc¡±GÑ‘#"}X1ïdíË×àeÝM]³bôBº~ŽtÐ‰¸Ò{A<Ó`ŠÎÒ…,„’ªÐVŒ„XŽs~Ýx¿¨5wÑœ"Í˜$†áÒûV”†*;åô´»(\xkg~ÿó®LFómùîw@h 4KyÁw€ï"vûÉwÏ#Ð§|wñ`ÙóÅfÑžrû¿4AÿÙl2‹ûößwÒM“KøË¡ÿWÜÖH#@}ºËØélÎstbnÈù+XcÇøC3ˆ¥ª¦—éH\yï¢;à‘“~,@MšÀhJ¬Œ™1Œ¶X«“¸R<øÁC#NoT±#²Y†˜Q´];@$'h_!ÔªX†ÈS¤†õâèÍÇþƒJöŒ®bÇß¥ÒfýHŸ÷ó‰e­Å#8Å–~8>9/=L1—ÚR¡ÀUŸ-¦¬øVe¬JR°4‡ì±Ææ]ù~[VäcèÃ[±ÎQu¡ùgk
Úß¿}ÿæôô%|=q?™y#úŠf‚ ÄK¡À¥F1Æ½	¶àÄ9Å•`Á˜ÀÚZH-‘±Úi¨gA[CG¥tvWÖÜ•¿!TÞQY
¬v ²äü*“ãQyïœxzh}¬÷_£o¨óƒòý[¯»ª7ìY.{‹ìÈÞûåý‹WGˆõñ!,ïŒ,~ÐTÐî"`L çØQ‹%Çn¹°¥¨dÖ¬-478Xà6ž^+œr—Vÿ?üw½_ \S²X)ßÏ‘ìÅ°nKfZ²wã{ì§eÒ–h`	…Ã©?Çìúå“»…Ÿ^{?ìN¯G€ ° ÏYEÞ7–7À´c“ÀÏ“à_ÆŸRÔßŽ.‹þ°ÄŽR’ŸòÐÇBÌsnÑY‚rµ'Èï¾ÍãÒöËX9J§¶^ú˜´¿?¹Œ­.ß¤HeŸ;¿ÿôªK0b'Nº2ŒbF›D —ðð%‘‰/7Æú2)}y	 àxkŒv§æSÌ„·	–ï”^)%Î7eý•—Hœa…'™	 èù,‚ÌCQ„4vóMÉz†[øÁbW±g$7v0Š¹Roy&<SûÛº¨ú§½ý3ìéq…æ<ûì>:š3P%èÁœáô46´ê@UÍØG˜ûU++ý®„UÛÄÕïRi*>ˆF¬¼Ì‹ÓwÉ¼º¼9þñÕSŠ‚ƒÃÏ–)>sTv ÊŒÓD0ƒÑB ŠTaP ÆPN½¥Z YLA³]ƒ–R´”âPJØ&¥à0í BmR
©Ø¥`<Où˜—‹öô(Å±*Èšýs<80ËLK'¢ëÐqû9ŠÆ–N<*:á¼—…õ5"”JK”ŽE ÊHR`¹$‚hn).Wžx©æH!4Æˆ;£5ø~”-héDÓ
-7#\nÏÅ³N(Éî1B±˜aO”NÜ{tbÙ?D'äAY
Z:qX‡Ž{ 9ò…–NÔ¥ðò‡žh 'œ¯l|Õ2ì¸ñ$Dv€…1^xF¬âÞ)€:è€Ú i Xqá•@Œïƒ¡vßÙ…%.DÀ]âpžf!Þ2?¬0Op€½¨è6?{Ñ}sÏŸy;KlâíÐžÄGuL¥´µ"HYé#O êZ:Om?™+–&˜°íô‡1ËÑRç°¦)èüð<ž€ øC±pÊq?šMË›0Q=¸¶³ª«ˆ²Šîwë2Žïº‡ô´Ãuèºý²A|'‘B, ·õX‚„±²ë\H¬VKë)IêÀ:4®Ç{o>Òk@x¶‰ßß§Oöòìõ“ò;=r¼ðƒŠæ¬.ã{,-Wy`¦*-mYørìæ4Ømÿ+N²°]òÿ³÷®Ímiºàwþ
¬c7FŽè¼_¸'N·|ÓŒdkM¹í9_y•0 ŠæÄùñûf  €ÊBRª™î&ÞÌÊÊÊçyï[Ò
€‰|‘YÇì«Û.íZ°:zÉœÜ{ªQ 9«hRç‚²Qÿ!’iD-BEË‚cœR&¸F»úêvá³äE’…¬×Ph{#UX®·ÏáHÅ
G˜«9ÂÞ7 ãÙ+ÕœSp|Pm…ÓrŠŒô(\#kÜÏ¸¾BÇA>Orxz…RùˆRIv&|ô§bŽakµ¥ØpmˆQþ«‚RDba/µ1$¦ñŽƒ|9d^>o–O`d{4M¥t7ì‘5;Ï,Ÿ°YPøÂ8ÈR+ž?©]X¡%ò–Vè8ÈÉ9ÈåOßÖå xþPÄy:¾K7YMˆ@"Õ˜ÖÜEí©†ÿÅD†H=ÁAPfµVˆÇ”\(ï0·ÜQatŒÞDÂh~5§"ðàBØ70‰o¨bß ÆìéËpïú*Ë¹q

˜§Ÿéì.aiŽÎ?¿¾|_²ÐK½Ëà…™øóÞëÙÙ€µé«¸‚•,¤Ž $ ­wkî…¹O-fü²øÓžÿÂÅË³ôÜ@ù	ÜÅò—oŠëN-?àb3}užÄYÒ'gFgá%“šw0†[*ÈÆKøá†7E¬"DÄû)¥³ÈG=[Ûï1YKÕ(=&|»ÇDHÁ×›a¢Ör5pJ	­ÁEÒÊ§÷¡¿¤âÓ[ï½yi¦eŒƒ8Dá¶ÞƒÀÅ±•‡é j›¤ý`ŽÔ}L¡Júá|à››éä;;·‚<iÿIfI&Z]’©F¦h^@Ä:¥i‹²üàF³aåU?†ÙøÆ~3}h1„Ç–Š‹nÍdøsJZ•m ˜ÿ¹|i€È m ¶•>}"¼‹´ã}2Ê9´Q1 	ÖDØèR.·žZ½÷B#œJ/#Ï¥Ó)n-Ó2FU£ÌwÇÇ>>Vz§äf…oévËz£Ä†¨ÅZd*VºŽmhÉIö¾!ÏŠ§5¶e®Isþ&t“Ü–“ð·Œƒô¼.kÔÇæ{OÐWÕñ½Žïu|oóÀhPMÝ¬[Ah rGƒ²Ñ
PÈñèòX#®8ó’È4ÎÁaW^tÇ÷¾H¾·£:Âz{"’JëMû|Ýþ†D^ó·}ÜæK-¥^kM:¾w Ç¯!ßkßßwß{Š~ÁŽïu|ï¹ò½ïGnìkwÎaËð ¥æ‡EK‘åâ,Ö9¦F&l52"Jö„Ãp *JÆ…¤4XKr2F§±ˆj×{õÑLŒƒ½  7œfoBµ?š«\ŸZsóX§EØ"M½àneÛé2w{’rÍ=jî¦³pu¾qá$,KÓ¼Ê-&{‚r´åýîµ•¥f«›¶²E…ÒîD	8ù†µ¦¸^ó_" ê±UN°Ÿv^ÿÈ±Ü‹õÈ9*>øíÕI«w}æ/ZSzE´”‡„T•3¬ˆERU¶­¹˜‹‹o‡3­F*SºÒþ	úL…0–+ëÕ¿ÿÇ«TöÁŒf•Ì–ùs…¤Êlø{I?ýïªÇ-m<ŠƒUf¹Ò¾ÿç«ï^ïOü¯±fåÏI[÷ýV*äU–[^Èûñò- žjkí~¼ý¾BXeõæ…°×	øF¦š.¾ðïïÚz{þýìORµA³7A÷ï¯/e[Ëü¿¶µŸþã×‹‚ù³=‘eÅçŸ‚©Þö$û¬
…qùËŸÅ¬+ž8ÎÊ~†?THÌ~è—w £Ã¶¶ÐûßÛz>¿½ÿáÏÅ—û•Ñ 6qöþË+æRõRd£À—Ù÷s3‹ªêâ9™Ù6¹ÃÔ’ª‘öYM±ó’åZMTµÕ$[R%áË²¿,¨j=*z=¬ÉÚjÒ²ÚÔ¦Ù¨Á‡@ãAØW÷tÍ¶›ío¹X‰y?€š]ödx×¦mqñåÌ·Û"ÛrW4Ú©¼ÊÍwå…cXÖ!Œ\yáµ™„ÑlïÃAç¤ZœT?‘L£cÌ=_Ëd¹é¸·M>¸äz|šG2^„9¦K½ìS/D[÷Éôˆ%†ß%q1†%2ÈKf×4bÅ¨
ÄÄ™wØ`­H!Ñ™(i¢œ§Wˆµô
®¤¦‹‰%ÆZ	¶žê‰1‚®&{b"0Ërñ.mmZö‹už6ä“3C>ž÷á‚452ROùXFF­šf³5éÎÈ¸®´VgPvVÆ¦ªyž•1ßh™aeÌöÅY³ŸÚ)¬Œ«0ûŽµ2êzdX³—öË³2f¿Ùu¬Œù0p
3ã6¢JbaN¤¤Âœ¸]ò£'Sæ[ë	[LìŒ„_êŒ„Ç0®"GgWlÑ®x9OŒVO·3@~¾Èûmò¹Q“4u“(ÑQÝR5<Éœ2QrlÈé¤uLPåÁ Ï å,—ÈcÈ)­0ÑŠh¢Ú•#Ó%7Œ’Ó‹o¾¹
3³4IÂcp }³Ø»rNBkpá#¢%ÚžcŒ9Sã¸I¬Ó|=n	Œ³*¿Ì­piïõ+vÝSœ|t“eÖb56fbqß
¦]c&Íh[Ó3;cfgÌìŒ™1³3fvÆÌåý4?cf]¥¤j¬œ¨ÉúcvÙ¦I´3‰v&ÑÎ$Ú™D¿P“è³ˆÉìfÁÍí‚ï‰Q5£3rŠ…H¥‘„ÀUÀ–hB£'y!¨WÂsàÏ©†·QÊñÈ­VTiåCèæ¡Þ›ÞX74Ó²yÏ·[Ú7–Òd’LEpöJó‚?s;i*"4êUŒu3Ó³Å5å:/~¦>âãb2“«Á¨l3’¬¢Ó0[ëÐQÌkaiù„M{ƒ$<¸¼0Y|¯¼ÃàòNfb]n­=áŸ=ìGº=C]ÌÖƒ?	Aš®Æ~BE^uŸµ	¦VÚ¸_nßÕ·ïÞ|Âç8ÙT„_Ia]}Sþúœªmï^‹Æ|˜¢K]³¶Átñª4î÷½ël*x}å*…=<%3%ç´ÿØ9B£.œûsš@gjW+_øñÕ«?A9ÌÔÊÂÑË‚ÃW¦3ïþñ¤ëãÕ|ûÏ×âsÚä»çºþ·BñÇ°œE¶Æš×?önd2ùhMñá»×¶n–U8)“bÝW~¬æ+ósã`ßð×{4N?²8Ý¢•Fl=XüCl¥±×¬v˜§V9-IPŽ	œ¤N0ne,2ày>È¨¼fÄ:®´eÛ\ï»5þ4,îzÉêv³¹×£Þ•ÝõÌõ5@tÁ¥ú·iïv0-:É†t/µ€›«¼EÝÉÂÇ]ºµÏ€„Á¹ê€¬‡éy¯÷Pöž»Í=çsÖøÑLêÆ7³)Å½ÛñdèGžMgƒá°WTbL{Øƒ¨wó^qéÀ^Æ“Ð…à§%g,&S\¿˜IÁ6C³b^”²ìA·:fâ‘%[L_õÌ3õ`À¿ÎRÅÊñ)zÂ­mÚÝÅ 5%˜¬·…Ó	Í·ÒEØpŒ®»åµTkl)ZÇ!_Î/$Þßÿ^œ—oÚiÊATµÈ¤ù
ÖG´)¬±Jé%–’7 —åT«hUe_¸µ¯–®6án¬Ö›Ñ
[>Ùþ£LËpn5Ã×Xý¶Ã`Ç§eÏ²-Î2Áò!Ûïõˆ2á”TÁ¤QôØ;cdN3©¦­Ô0$¶‘Oƒ–Zqªv™g:Èþ² 1²	ÙRí„ìÍúÍZòÈ®U{°ŒïÅóƒìv¬>5V¨9\+&?'¸^?SÛ‡ë¬â<\ŽpíCÖ…¶0R8P¡)R8"#F*¢qŒAÃhä\{ø˜† YˆX(ƒAÕŒZ#‰†ÝÁu‚k¶Öî´€køß]p-ä›UÃ^¼Ï®¯¯`psÍcÝk¬R¶þ¬4ìõsõceï û$íÓkûtêç“˜Ò½˜ÒJ*©v;$œ·k!Ñ†y¤Ápä#$€Þe@©Ø~Ü×+ižÓõ¶ŒUø1ŒÂÄÌÆ“ÝxEþž–jdTHYï¸”pÚÞ-DÀ	=—è½LA;{¸Ÿ¢´L{/ÎoÜÕ×é~ïæsKüaþGûëóÞŽoRû¢b˜ùl Š÷gwpnõÆ·£ûpøCá0ìý<îý5ßøÀóbðÇe
Ì…Äà6ŸZÅ«²(?a¹Eù©la¹,Là÷Õ®à
Ua‹wàQJòwø3Â#´8 ŸlíY>^qÝr¼çYb·~]+”¸ò²2˜õ‡Á¨:ð²NljvØçc÷Ú©™fpØÎÙˆ§,?rã+86|Å«´¾§7¤®‹x§	ÕVæVnrìò˜ˆzI¥á,
DPð«7Ø“§B A‘Ž‡ŒV1"ãqÔi&#æHz¾·[cÇ@ž$™]’Üš›Ts)6Qb(T'ärÁ@Úª¹ù<óÕ[,±‰ùò‰ER;kåd}²´¨ð+h“4Ú!­ šÁCÿ|ËÄ¡øïˆ.h†pƒ„ÕŠ° ª‰„(g…÷žÅàläÚ2C7<HoÆ&xê;ü®øOàÿ"ú!þ3T…ÿ˜4Áÿ§aixôt‹V€OšTj}øÂ@£ò¹êÿ§¬Rl Î² #b€úÞl¤ÄÎ‡@bÄÚâè¢µ:8#)¦l=Dù¨…»¢ÿ:nðÜ Ié;ÆsKß1-éƒ†ÁEËá•²wT‘úþ‰Ç)}÷<-Ré§WøˆŒ¢í6ù\ã)²i¬ß±Gd!‡îçÍO>5rdÒ¦y=Ó„Â<zXM©…ÁÎ-C–Å)F‘jo­@<†T#8ˆ·1j)ÂÒ*i÷Óy‡"¢op•c¦pê}LÆ£ähîÁö¤Ú-À4¦½©3CØn	=Ìdbî¦»YJ)ÜF3øï.‘ƒð—2L³ø±xÚ¾÷ÿ|ÿó¿Î{?À0·©ÎÃ,Õ›0.1… ùÇqŠc„/§Âa4 ™/‹°ÃÕ‚GÕ ß®}v?6÷=	&U‡XÞÜòÞî§y
³Å§ý6ö°PÃÛã±$…"„’kiR‰Ì4‚O)ÎŽõçø‡61Xl,BcvÄ!@±OU¡„õ"?]\|›v{h..½¸ø×ÛÊ2i*g·å8lÂ0Žo¿x?›ëÕb\^;Ø"Ú	È“F+§´
Í˜Œþ¥Ô\í<hb& !¤üQ–a©°Q¡ÃœÏsÊH=&6"õ8_t3|€9šÐMÌa|srcá—ÇíÞý¥cÑþÅiŽQŠ–¬öÙ`TÆ±zìj1&ïÙa×áæZá•16jmq!HeˆtApÍY:š‰T… -ã±•>H¸ÆÃk€ý®NÇv=CìÒLQ­1Ú°ãJÂwäqaMuëúÒÞýü°kY …µŽ]í[o‘BvÓ²{|‹íQ±k2/øJ)v,½mh^QKD0pkæÂÎYi"–;¯°õ**¤á6`Ì¢æ‚8G‚¶Iu»¬}—E/ª^H·Û[¡÷ ÒWÅÂ|Õó!F¡ìo_óƒôW8ïzáïþàeåÕÉŽ¦¥èù7{F¥_°ì†Õûª˜ÂùÇtÈºá/ÏêóÞëY‘¶ 7}HyÕ…øÞÌ|xÙûêâÝ/—¯ÿøêåÙíÇûØ»M)ÌóÒðÅ_—–Ý\Ù£öÔ4º½½=/Ü›	ŠöjOœnjOJn/ü!™ ëyNšH¹@Z¨</bZç~Ú¢ýŠÍYÃ}Ø>=žÓ°$Ô•‹ÑqàñP}â¤çU9¤:=¸|m+„Ô8³*†Ê«ÇZwÈÓhR9í rŒ¹IÆyn¾~*‚šã–+oõÅÞâ˜ƒ³<Â«=Û¿ÚËé¼y¿m:ä-˜ÇëC®É?~ÓÅä€µ£}"+¼PDÑ¤7à=2 æÚFŠµBÜD(ØhµN žyèÞá÷#á÷4ÀËP P"ÖTH
Zäv W@ÅÖC4'dÀu¦ñsàõ+vçàI«¨\Œ¦ žz˜Tè#ÀiU{£ ¯whµàu‡<:ùY xºÕCûùx
w­g>ÆËn;´å¹$õâj|`ˆcÏ=8bfp‰ 6è˜œžT×DÊxàyç‘%N(&°p»z®¤ú&üíÂuy´ôS,l2ßŽz¿üÒLÍ]E+êËwßŠúv¼Rîë¼÷Ã`2šÏ/_\fÎŠZaþfb†+­«gãÞÃ‰÷.C¢K)É|\ëý[ÎRLqÊÓûÛšwuIqÀóØâdþ8ßŽ^AÈÓ[¶¹NÍÜÇ—€:géòéàê†²©W¶O|ð'°ÏhŒÙŒ±á;*“0‰v¬ ¾!«þN	—äå¥yõç»ºOj†Ùìˆí}ûúý£¢|®Í-ëÐØ,%;(Ò&Íe/<.N¡*HI‚...Óþß_¬žÀßÍdôÝ £ýDyyz1«íËéÚmS¬<y ¼ç„ðdv…dÕý%óºB–›¢-qY8Ó..~›ª›-g·«;jq{øù"êBæç’,ëÜ!ÜŽ^»B,ŽÂëÂl\& ½!°Ÿ ƒD”G"uÌQ«ÆÎ"#¥d7x^ýäl+Ôks3\x‘ŽÚ„œåìÑíz0_µe¶{É€±ëBK¥{îÞ5Köøl®‚Ç›‘+1=ÁÅšÏw òn¦°ðÿVl†Þôº¤oSAÓùDÓgËùLLÁ€Œî'5ïÎ6(³ƒÖggƒ3)•h!áìžÄô>>|®‡áï®:}Ù»ÖÑ[£DÕ1,ÑÀs±”gE'¹ñÕüÁŸ9Ñ˜ßÔ~ï€Øô¤·ÇóRNñº:	Xµ.p‰2kÌ§ÖO/P¿êÕyÆ^jq8©·D
áì€h[ÚËnáÅ1™‰WEïÜO•^ëåúTŽ[çx>‘õ?“@ˆ\±GJF™×¶íO¿éÂÞÁª=ÌÏ(çLi†•ô·ˆ7ž+,ÃˆS¤Â†;F™r6º¨5Gp’"',!¼ƒï/¾w'	/7÷¾ð2ü MXn.Ýþëð-S™¿øÆ$/¼l›h¿âÍ9)z?b9‘ZkÒ®)Â9ú3áºÊ~,¸®uŸÈÔß¡õÁh=KF†iÿUqTÖ‡í{Qˆ,-@T´T
Ü;Ã¤ ÙH[çbª¬Á"Q XÚúÔQK`Gü¿ETF„˜ÐAP`¾º_¯®áÐ. r8ýÕ{Õ[vÙX	„ÞÛƒé|“»8
Ïù«^zúãš´T†c0ú4þkŽ gæ^”k@èYliJ“érRé÷"ÈÛMÆÓiÿzhfé!§ö!£0)|ì·&Mb6ø”â°Ï@|š@Y=äâ¢x¤É	ð_ÁÍ^Â¥Maj„Ž7ÃânÇÀ_ßL®ÇÓ2Ný6‡§P7vb…Ž¼™$Øî€gËuY'wýz)¢2Qvc’ýÅ¾ïWìøç§07­ÉqøRµÐ[†Äå”/.s®0ËÏ¼J4Ø¯fÑâHÂßÍŠ‹‹ßFƒ¿a˜"Dýè£ü>€Í};}¼‘à1½zõ˜Ãýø¸Ã½½ü×cŒgehNÆÿ#¹»·ƒÑ#äÍä‘
îÏñ4>ÂH@knrvÍÆO·×Í­y7Ql¿´>>‘y33ìéÕmµ[ñ»»‘y36>CÝÙ„- \¶ˆ·Mï®†@­¦{=Q7¯
•n!}˜YDê™}Ì¼ôò:¸½“¤ç•q}+¢..~X3'ð>\U{¿_ÿ’*c«ïÿõ»Wð¯ª÷TRš..~¹|zá~m¼2Y,ü=KK>™†ßÇ_}ß')´UV…{âÊý2è³f`Â*JÃ‘¦twí8·k¡…w‚b¤U°( #„ÇNXÉ"\NI`Ø/ÅÎÀºN…¶*ü<¤Nm†Ô)µÝÍÍ4×dC…gš®«ðç…ÑïÐK)ª`wzÛxûêùršWÞFêžãY	¯FêJøaÂk+áM‡ÉSÂ›Ž’¯„·4R®ÞÚpyJxkÃe*áMÇËSÂ’­„7)[	o:P¶Þx l%¼éH¹JxÓqò”ðŒ¨úJø6®zU»Åj‚ªÝ©ÚªýhÑ­÷£ÐˆhoæÔ(¦#ÑLœëÈ-2žSÍ6–ú”ÍÆŒ·Ê3K¹•ž²+8½Ó¯O¥_ï	?{°÷Ä¡Q¹‡†ÑöV–ÁÞÙÐ¯¹ÐúµÎËYÛ¥XV·fxNšw“¨´ƒ¨yïŠCCÔÑÉ+£‰N~ðú:yÃa2uò†£ÔÐÉÛ)['ok¸L¼­áruò†ãeêäMGÉ×ÉŽ”¯“7(_'o:P¾NÞp¤'¦“WÝÍA:ù£uúàÜžùÃ_ûîÿ¨Œ)>fËNÛï´ýNÛÒÚþ”Ú‘?4Mž“eÝ½–*ÁZáQIÊ&‚*MRˆ['RûvØ>(~Ôj.å”Žavw%¹Bù]gVÔ…›aÎ E»e¦Õo?¿þ£ø£Ðµßš¿BÑ²Bñ_ÑêS	Ð§}•xÐ×GE¸”Þ5-Ôÿûl¶Ûñä¯2Oì}ûëÿZKM›™Â^`&nŠ¬¹ó^i{€©b®Î@¤«Ç=Ì°”³z3'ô–§9¤ÿVD¼K¼Y3Vìè¸•ÚÈ
ÇÉuw¹yUc7^‡~Ú×ýýSŸ]¤û²BMîôåÃÌY©æ)gL7ÔçËÇº—GY6,VÊË>àµi1ÿ›gp™¼
2¹)c%}x5¾®®"_£geuH€Ü“g¼Üƒt±q½h6CtˆZx˜³’{"IPÖp"4²Fé%åXa¥qð„ÁfÖ‘1-345î`ø¹Âð<jMoF­	¶½ÖT¨Æ©Mê*ëšAkK¦¬ŸS¼Zeà¶ìršg!,Li+`ºÿ ;h¶Xu­Íçšd¹×Ø²vO;®k†BÐœ8M=óL%½w+£%&'¬ôÖ¬'–"/Ž‚Z‚w`z0­öP/è½.j.6;qQ¶=‹› Áñ¦N«ù˜ÖôP/Á”‘þþ"âÏd—EÎh» [¹>Í£Å‰>¨ÈzMðeUEÏ²À÷°±}Pn³6JÊ'åï¯l8ØÌŒÏ)m»å˜¤Ôà46„J*3\PÇ¬˜2¢ãÔIÍD[J¢=×Zãt¤1:¿”ÓÝf ¯¢€xºkŸ ®ÀT€­Wß¼úÇ?zæúÎÊâðÞÆõe=‘Æ_’lqS˜Ö6À“RlÄda¡äjiO,Ë,í¹ºÕRZÙöêË¼Gë&ÔaÕ<W<½ªÆÕ]>Ö6C¥´gÐ§«å«â# È®çrdwfS”YZì±¨g/UZib‹AQŒ ;HŒÁï ¾ñ@¤w§£5°™LPÁKE@ßÃ
	wµ_þÂÑ¤´Er¼f‹ä
NoE…&ÐDl I=—àMàð,wÅ³CÃm‘¥ElyãMÑAbFšeËf¡C¾é1¶ž	'2=v(ð(ÀÛn0š=çÎp˜`N3› ƒÓ`W4%¯ðÈ¤±^ÂìQô"¨ â‹Ó5j6)Ô›M
µ ÛáAkÊ7áëux õ¬kKxà•-úžl<ýž…HÖt¸œä—ÏÊ“Z‡Ë‰ŒiOfŽ ¯Ë#âP!çˆ-Ë£©vìUÔ Ã$bÂ	P"õR#ë‹(5KjIpÊ–s‘O¢ÔÑ©@wU÷/ï´<çJ/NÆW½aRtÎKžš°6~JíôJOÍâ\-Ü9#ß»­|°‘ÿø²WŠ€_®Ìèì:¬/{aæN1_‰
ËÛ,È»l›ºYÍG¤ˆ‰U°QB’Õ‚¼JÕµlÍ§ØOû«_±³žq€b±µVª±[§æÇMph>Ý½HT*ÙY
s‰e£¼Ù¯ûµÅ¹¤Ýœ&šŠ|ðx+åÕ8ƒOd×kÑoõíÍl|	ü¼ZIk³gpVŽ™™‹‹ïn®®³²|2YÅJJÎÂ‰[ã;÷›òI:©¬€™ä_}2ïà‘- Ošáû°ìZ&^°¡8 j;rRxOi”œÐ¨±¥]Œ´×ZOQpž#ã#sÞ(hôkFÀæÆàŠÅ.&ÉF9E%%Y5+ÍX½†÷´§¬‡/Ë¼ošS(ÊÉ#P(ü„(T¹dR¨J‘5)Ô¶³òD¦ïŽ(uDé‹"JËw*ÅØÂ!YñV½ûåòõÄ­~÷	1¯ÖZ^J§1¾ÌL1Jµ²H#ã\G¦$õÂRa¼”/©b\0¤£byüÅs²êçåCßW‚Kmx`ØßÌ€ÀéœŒ®s2Z/Yh|-![iã|Èú4ïæL‘ìxÜÓåqÏ¿½eÇð:†×1¼£0¼·oûÅ/O§S‰è©´Ò#A”ÁP¦™UðÉ%¦‚`t†#ƒ½f‘Jã,UXh¤|;ÞÊûòvÞÓ{Zd–of=®aAÃÈÝõà·¼ZésƒÔÜ9\ÙÞ;öÖÆ›ÞØû¬½fä'”Ivö.1¿»³²ë²V,Ì©¸Î{£ñ¬7
©Sø@zfv3m™dJ¤gƒéô&”9s[®ISÌz× «H,Øh‰ðsÚ›8kûlPôhÃcþk0,ÆN¯G^¹›§œÖ^ºo5Ê®.#(_¢X¯fµS]Óv¸x¹ºâ2„õ‘‹ËpÙ,†èíÛ‹‹â×Š¤<œ_mp±U¾”ú2ËŸ†óéP€l^Å['IÄR…¢Vž+”¥Ü§bÆ1í=Ø3ë¬\)•²°¨ð„ÒÀ4ÝÕ^¬Â/çn4™]ß˜[BBäªzQL+@Ø•wi¿¼‹nVÞå‘áì9Wxùìaëx%Qbp*™Ž­$@R@£3‚i¼‹ÞÆ¸ç6j§C” Ø		¯‰F	0âðqgŸœµVaEçVXÁ
K½	g¢%8ë
¬ì‡¹G(°’
È>#øûk¬<X¼?[žŠ½Ó©ˆƒ"Ú	k­#–„”BX3G±—ø; £ÑÁ½’ KNq¤.(·«TØ«IH¥Ì¢ª×¢xVâÝIw	Nàoƒ£²ØídP[H)PP$ü=ƒÓ)­Ó|˜ÂinÎ×¿{SôªqÖ$\„+‹6U‹¿_þ”¾†½ùÆ.óÛ‘¿;ûn|ó°æR"œèð(y¿ô<i…kž8¢s-Q¾QØZAÙªñQR¡IM˜ªcUëìe$Léfˆ5¯à• «ië©°ò•~êƒ$^\üGE›žzb[½ë·oÿü6ùØZ8ºkWà?Ã/ûûmÕ–øªº¥Qm™ßµ=ÉïªÛ!Õ–ùÖ¸¶§ùóï¼]¿\îïeT[àÿ÷sË;ü·ß_ÿÜ²ÄªÆuµ%Võ¨«/°íóû`D[~Ò R·ºÿ³Ma÷‘*íËL°XÆì´'û/;Ï@s1×­J}ØMª±ÐY˜Î†ÛXbÂÖªKþ³2Wÿ!±z~Íon¦“oì`TåJÝ÷ÄþÏ>ïH¶:]ÞF©ó1bãÏÝÖìü¾wlµÄÁª[%òúÁª¡zý·põ¹x-®]›úÖÇýP³„5˜rÕøîhÃªÖµu?ÉÝ1ÛyÌÌ=K€ÎU•¤Ãl|üÍxTý²;®‡`î¼jì‹gYyáûÞÁŸÌd¦Õ­D?‚auçE¥Ñ³òºì^†K"PôSüã²êúŠ"?3ÎÍ‡°Žö’Wï¾ýJH˜ï%ÜÛl•ynÙd)jãêwíß/ÉïÞmª×§U+Ð÷~®•¤„U×3_¹õ_Ëõ+Z-T	ÏhÂ[@uzÉœÉx{Þ®àâŸ¿†‡Výõ•ùÉxú?—-™B
N?þoŠ?œÒöß<”‹°ÈRÚ‘è¥#‚(i´Z`F¸48R£¸µ<0ÎÖÊ(â‹knœÿéÙøçAU<7¨Š")ÄzT•¤L(¶jãgœÈzÅ·†=Ÿó“­"œµÓ9+Ãf]YÂ¶¶¥þ ‰9–ú:b[½ë,K}]•–úš3,õ5%fYêkÊ¬¶Ô×˜c©¯)3ÇR_Sdµ¥¾¦ÀjK}MÕ–úš3,õu%V[êkJ¬¶Ô×ØöÆÉ±Ô×Yi©¯%²ÊR_KX¦¥þ ™™–úZ²³-õõ¤fZêëÍ³ÔWK|LKýñB¶Zä7´»³ÈwùÎ"ßYä;‹|g‘ßsMg‘ï,òEþ˜ùãe©q!°6Š†ÿ8(I9ÖZ:U°Ø‰‘”Èóè^¨À×‚iNë,õO5_Lææ‹QL¤Xïã ™ jµkäB‰šÅ@êdE=þ³Í#BÒÇŠÁ¯lÍ]Û²€ÄË~±­Þu–e¿®ÀJË~M–ýš³,û5eV[öë
Ì±ì×”™cÙ¯)²Ú²_S`µe¿¦ÀjË~M–ýº«-û5%V[öë
l{ãäXöë‹¬´ì×YeÙ¯%,Ó²ÌLË~-ÙÙ–ýzR3-ûu„æYö«%>¦eÿñ³Ñ›Yü9k½³øwÿÎâßYü;‹ÿkñþž¥uœLÃïã‰ÿ‚]_†õÿƒsùÆüÏß7PË/ôø„òä>´šOq¨Ï;†j^/¦%Ë?1Ø:†¥´˜ÓàP@BfLiÊ­àÜYHÄN³À	ãŠØè°±»<¿&ÿA*(·4ô|¯¸6™ü¿ýùõß_¾ïí÷Ô‘rÒ(ûòùUÙ‹Í {µh¿iº—Ln4 EÿÀûf3Rðºöåûi³ôçÛäù•Ëù[‰–í·-Góf€Š6køÄmÑ¾3HÜÃ;­¸å i¢ oW|³BÝÚTF³5½[„<‰¦ÍØn&‹{@¼ŽQ×®E í¶T”8
'5‘ã"€QRì‘KÅÌ£Þ2+i ŠaH£ŽØhFeÕ YVšKIdë•æ¨Ü‘…&Æ› I6 ²v™¹uDØ»}žp¶[g®ÎR5ïÌ†vf{ šqls*½t`Ûm-°Å÷û{ákaTµ·&”ôEO EU„ß§”O‰™6Ê…8bg8Ð< g*²ˆ¡¾ °Í‰$[<Ø}­O’áåƒÚ [ 5|lý¬‚­Bôpm”ô+¶Ï—FVgšC¬à«gBl•×8b=‚Ú‡Ø,Gn±_*ÄFƒôÉáú,â‹ýZ*Ôn‘¢’¹Ô›’	'(qÔFƒ)ãyÄSkD¬a)x<Êè¼ãLH‘$„Ç/ð0ET¿ê%k}ÌîýÊFçn7ª@š.zñuofþ*Z| ´|¸IúM/yS¿ÄÍÆIÓñ£\_t&/!.›«AgE_X±§0f°ì[’Ðzúq|3ô=›¾3ú+xÀ5¸ÌôFá¶¼ØF0Í`~VL­ì2q=ù4èý]˜Z¶B)z¬\ácX€âãÕi‡gii–1@åÁÀWpÇÅª½ŽÅ8˜Lg÷·¿ óõIƒœ®†I¹âû¦7ufh&©kJŠ´Oáðf:5,^ýtÙø:ŒŠ'Øu3;ï};ºë=]V¤mùúÇ¢ü=Ý™Ï{¿¤¯Ý¦dÍ®‹î4ÑÜg‰]¾ÿî—ßÞÕÒp{{{žž@Á}öÛä¦=!±žmG2ÉèÅÑD®¶
ÓŠ×ëí¾xóûéîW¼¼_Á)•ÒÊiJh„FM›cÎ`¡A<ŸÐÌ%V
¬qàŸÈfp@øÔ÷W6TOÑªÖ4mT¥>ì‹­€E=§®ÒP;p•âÊ“H	hÊžJ³6Ä¯$¢ïµ&+82RÎ8¬pÜU¨­Ãø§ˆñ½- ?«ƒò½ç
ó[;‚r¥ÞîW—R2µóJª˜Çˆ5ÀyÑŸ¿¨ÏÏw¨—Ýå7Åm‰Õ}q÷£â¶h··ÖGÀçz‡Ï‚ÏzñÈyKiÛØÑ¨ŒÑ<‚¾O]ÔB„r¯lô(0ƒVN… °šZP×qäBŠ¼Úeþîp»ÃíGÁíi&pk¦B­» (Ób»BIJ×Ëi­épóºgW€[÷+Þàgè‡;ùK“vå‚4z…)åôU	9µ¾Ö©"Ã' ÇÆöyÄÿ¡žmšnt¹!t;fwãÕ\Dƒq0Ö!PƒPéáÔ'£×Ž3¸ÒSwZGdw@ûÛ²BJBÏ7éL/ Ä•™		àÞ%äüã²„µQK°öW€Š…ìÝ¦Ûn|u`g‹¬T`%¤T€0@ÐL öÂà¦S(!Õ0ÌßŒŠVäÓÔ^|p}SP‚b¢ŸÌðfN\QmfZ óøô¡ âÆ¥OaÐ1€ÞRð	£Ýæ‹¶ß8­Éƒ¶ªh{!—ä~_?¬8B«­¿±E¶þÍ'ÙO{½_±ËŸ_´ÛYsW|­•jÞ\Èf¸8Ÿî^X¤'ù‰EºÌxT‘m~°ð›ÑìÍ`Ž"ý{8WŽ!wÔ¢ð÷ "Wæú"a™¯ö×Ï9Tîë(o+ª*ü—B•9–ôô[SÁ³÷„­ÔåMHä³ê˜-©ò9·XªàžKï—µì|ÛÜìŒ=ômtFp6:‹š5Ÿ%ÇÍ*#£*.­•¸~yÜ¨ú‰NªgØ^ÄUo3Ýöïé½¾n/×¶¹j¸pÐ“z>Yá¬ŽARä¬ãEJ §ŽsŒÐÒ2%½cF0Å#GÆiÅ$Az$yQt
àç¢ ÎÝ–j3˜óÖO¦±ØT %Â«
 F\ÕËwZQkxŸ<'·e›©L[V¡¹
§Y3f¦
WzÔH…;Lx®
wˆôî¹Ù*\á¹*Ü"³T¸ƒäæªp	ÏVá’ž£ÂåGêå©p[xÀ	µÇm!Ó)j¢Ö)j¢ö”5†–©aºðE£L"ï(5Á (°AœåW‘¤©g ±yg¸¥DY¬šyJ…¦Îw*ÜSQáª“h—ÛoO-›,|Q&mC…ÃškºžDË£d5†…a„k¦ÑÞk/õ+¶ùsÑîZˆa9l}ë}R©û¨ãé}Õ•øè}
ÏÔû’ž¡÷$7Wï«#<Wï«Ìa=Pï;Hn®Þwðl½ï é9z_•àšz_=Zq:ð‘KŒwáq5ÂN7ët³Sëf?¼úñõ¦>ö·
V­¡ó”iUvfÀBÿèIØ3µH¿ÊPÇ‚aÔ*Ë˜pÎê œD:r
?µÖ’:k™TO¨bac´Œz'¥¤&îPÇ~0ÓÜh©˜Àê%uhº[ÑÚzù	4—òáì‹8\u8I*åh¡n¬k+”Z²nÏÑZ¼=ÖháüÜ««¤iõÓÃïïìçåFÊQO~yûæQ5’¢æìáÚHö
4V@÷†è|$Mp/‰*ÞÝªó„Àù:}ÿª2ü;]¼eÕ<,öô"=?Á¶ÞáÁÎê†›¦v>Ÿ§øª_¿Ìöžûé+3x¹ŒOßB‡|åÇ7¯ÿùêOrNÎyÆ·ƒeÕ:úã2³K5&NfCÿâÇŸûó§o/ªX—ÖBÜ¯…Ú\ŠÖ2ŽŠ”ÎEÇˆdùH)ä,eÄyjcÐGj|ä,¤ˆ°ÁF¯­µ3  MJÁ½¤»bO>S¤dˆl"%ÓÛ3Êa}¸ØÈ(×”­!%R:ËªW…‹ÇþÔ‘òðdòìèòÀÃârsÀ¶R<'¤l­Êýç”ÎÓÿ×å»CñÑ9B‹pzŒZ*’G¢ÔÃ9²N #´(%C Úy¥J„­5V1A,`bXHÏw fé›ßÆ(-×pðß%"$‡ß¯ïÞVtRŸ7D_¼M+>¸ôý…Ä¥Çp1TÚ€µé¢³_ƒïýdf½9øô^À¨_Ï©¿Œnþî¥`ÆÉÀÞ<‚îúz05“óXl‚ë0¾†ªïwÅÞ,:†dÑq…·"5áDn:à×kþ·T&¨—“ë{¯¿×Õs¼}¢ÿ8uÎ\U·æÊ4Åq-õ!ekËi^\À<+Ð<,UÀ¹¼çjQù‡TÜl ½¼tê1áàðÀàTJ0¡ãQyK¡Ê	oNhŽ™á"•PK¹Ú”1aiD„K¡¼»ê©upÐÌ‹š‹EÍõö˜zÂ)¢›p ø:ä¥TWzÍâ0ž žB]we:8xbeD>38Ð5[#Œeª”é”ÒÒ:8PÆ„¢è·Èab"FT‚šÃŽZåXtÁHk5 AwêûÔŸgRé™T;úFŽzpê‹S?«äƒ³M×O¡z‡{‹\_·’=¥¹8$yêÄg¸>yÉÇÓÕðNö_¥ïý$„CkPR=€ Õ;¯!ÑQÁ)VÌ"Ž<¨üÈ[÷ÁùLœ8¸óÜ3<œç.-¸KqÝ»â~½¥ç»âÔéÏÂtV¶ü™ö`ú¦7+îv§Ï£l«±X–‹‹Op6{3/¾îÁÛ9ŒÂ¢²bo
Îõ«›álÐ¦¿”Gv‡qáD_–[„Ójú²Œû¸VÌp¥²àõðfºø ˜õl“½;ƒYfç½ïe‹?^™»žNÇ©ú¢é}åüW/{ÎÜ¤9õ¦7v
6SY½1UuLß<KãÝlIoú$Ì B–W¥!SÆE‰È»ó¯{ßF¸ð¾ˆa1úÝøæ,Í ,ü?ÿ.¿/À8˜¥›0p`÷Âd 7ˆ_Žf0œž÷ÒýÌ‹öÓ3“6ûy¯÷ðFÇÅÃ¸ë}4ŸŠþ¿þ 5\ÃóOÓ.$‹‰ž¯¯ÇÓTaÑ¥2“é»ç©($ÌºçSGç‹`w¸tTVÅœŽá¬­UñLà‰-îôÖ”%$0`úíc¸êM‡ƒg0©4n²H›‚¾î–ƒMo®¯áÏðë¤7¾¥uzñõ\œîvÔU
­ÿŠQàéRÉÈÞÿ]Þûxþ„ÆeùÍÕ"”§ðÁmœ{à]Mxh‡RG‹’+ðNTŠÉ¾‡wŠH^ßäõùõÓ±ÔŸHÏ.¾·gš÷Jf‚ôë'ê^´/Ð¤
ì×î±RÚl:â·»[/”¶½@KàÈ…—°:6rŸ	ú!ÌÍ9TWåâ°â"Ìc‰YÔp@‚öc#ÑÜi‹-W˜+…£óÈR®…‹þÄ0¦Üxÿ„NM³ƒúüFVµDŠ˜n-Ñ«à>šÑ`zUE{ŠÅH–Ç·Ó’ „bùÙœNõ®Ç	•
Äµw	‡ãì˜ÇW	<¾zyöUº(ýûÃ`?à(ýj2½¹¯z¿ýúºüÆèæÊŸ(ˆQ,ª%ÆsŠ ÷;`¿Â*ØD#ÛãK(
+×J®z­Ò8ÑŠÉõÓ>{^%?š–l½÷æÆ©8ÁŠéTèª¼:Àqyg•’Z­Vpì¸‡H:v‡Ã–ÛV1‘Q¿gŽý>\U¯gºô§¢\|å¥¯ß½ÚÈ5Ûz?•ÌêÅ8ŽÒß‚7ÏàÞW×3(¢S†ñEÚL©s­¦n’¨z]^¼3s5ÓÇ
i¨2+ÈÍzÚâ&km1¶¦u'ÕÍ8Ôg»ßMÀÊ¾OBåóùý]å”àx&ãÙØ‡…N·7È¨@çµ[XïS V´!*8–)H(`lŠ6pD™3: "½$9…­ô˜ÀD	ÑÐF-ŠÈPº« wG¹Z¦\ó@!½(´+¤—R…ñ&åZK~ Ø!”kïÎ{.T¬…êkõÖ¥9M“è¼ü“Ò´ŒCêô­µŽ¾uô­£o};6};<¤Ïit,ëÄ2rå%ÞE/]j†ƒÁZk%e[Ë)y­×Hq#;úö8ômØÇ7û„ÔÛs—¾mtKáM>¶˜íÝyÏ…¾µlIÛ¿&-P7|H7”§CÝžT8_GÝ:êÖQ·ŽºÕ¥n?¯ÂwƒIƒN¹‹šY˜µÔM	‡¨"{•)Ñ"Ë±ö–J+RÞ’Bâ´"Ü
Š#á&*ø$v%´F¾Œ®ù˜xRLOÑ‡u­ÅmŠú2v=4³´¤U”n¾xeÚyènŠï)©GYisM~0e&¡÷ÕøvüWgi»™Â4^ÀŠ\·TÌ2}øuz4îMÇÃOe`ìæÁøf
CNoæÏà£iHñ_ÅÀ*eÀÒUo]{	Ä7OÓLo—
AavTñlq»§"‰óeÜoå[£‰…•O¢íV>A‘\·òa MV3÷	×5‚…æLýdQÿ>Žýô>b|>ñ7ä`ÒXg}š—âDTÌç3­j,[V³&íââ;3¹ŒŽ#pÕLìøxÒ„LëÂ'ðžµ¾Ì?LBø.Lÿš÷—œ<@ô[ã~¹ÔmK}ÿúûL¾yÿ@õ¶§QòÞveþ 3¾Ý_5CìÚR)+ŸiœÈ‚ž¸—”ºv4º5÷ÌˆžãJÅ£f”àƒ³ñ°ä^CÝ³&ä¼2›$WOÍYÞUµs¯…«ºžÏEýþqàöß!hc•YÚQ²N¬¡,B{YÍÈK¥8—”*«ÕF"4vsd‰u‚z/˜	ò¥¢Rz”Ý„
…}Ü•$Øi"ÏU™‡x>èî&ˆØ®‰ÍÔ†&‚´bëšˆ`YÝÝ0mÒg'ól–¡(šÙª·-Fsõ‚ªÃSrÕ‹L4¨«_&6[Á8X|–†Q[zžŠQWl£®ìL%£®Øciuç‘¥fÔš«gä%e*[ÃŠ3:…¢S(:…âÑ
6?D;+Æj&©†a…WÑ)‚WFˆ¤ÒH¸§ÒÛ¨½ÖŽ)yPœ0çT§h<AEc~ôrî‹ŒQ›%¯@Ý®h0Œ7]öàš¢¡0Êm^åÖ¬¿wŸ?—ð˜¶¢›ë,McuD|PÝ«ZêHUáÕ‘ÃÄf«#‹ÏRGjKÏSGêŠ­£ŽÔ•©ŽÔ›¥[Ôš¥[Ôš«[TWØ®¡[ÔàíëmvƒYw*G§r<}•#Õ¾;J4Ù®‹Ž\ˆâMY0êPFœ/Ï ,BXüCl¥1_ñŒgxê‘Ì%’!8E”px-áXcJHn¬LzÐXN¬ÄŒ2!Ô®ò\E‡¼ûSEý¥âÆsj(†â]_)¾µ¨¥ØsGöÒÿé/¾~Ù»M;­¨«dCRDüh×ÛÇ?•wbþÜw‡ÓkJ0akJƒ&É¢½UiÀ)b]i€'%WuÉI¾ob>½~Ú_ýý;ëËõYÔY¤Ê0ñÃC¥æ3ÝKŽŠ£$‡Í…UÊÊ?–NÄ²M6Íøéýûw‰]ÌÂ^«ŒÀ~ç@Šìv¦º]e«aÓ¸¼‹{â¦‹=0ØÛÛÛ~ú}yŸoÞï¾Ïr¼5áO0-Î2Q£k’Pê1.º ½ÕÖç½ã1r?…-ÀEF”EBFÉq”Ìâˆ 0á;Àl0ã€)…Ú	˜ùg ˜k}F°d™Á2±`±³ž`.­mÒê,R€)?#À\?–ŽàÀl­¦@˜_`ú¤u¡††i	!FÈ b˜Ð0­ÕDc†4e^Éˆ‹Á,>Ž„iP<u´˜j@N×fk¦–4LŒvj˜øq5ÌÅÎz~€ÙBNõiC¹<<ûÉaåú‰t¬l­|b‡•O+“þP $É¨>/- T;ù³:*ªE*0÷œ3â5ñE/KÉd àT’)¢”FE®4ÄDÄ*Ï4ßµþjRqù¢zýÕøÓ*h¥6	{zComlcR Ÿxœ½[s—‚8\9ÄZtJ¬°ƒ¡wg>\Ï>.âC|†Y
jãhßX™ÏôÆ¦)õâd|u_ r®N¬i“ìÏoeèA~+ßŽªT ½QÅNq¶ÚßŒkžÙéf1·~Ú‰ýŠ=øü0µ-%4‰šÃ*Ò‡« ëÁ-8Hª½x÷w\)¨ÆÉu"í3;|¶¥èÙö«í×¬Ä’Uœÿô1˜AsQ‡QÝRPã"QŒPdRÒ—ŠBaÇ°F”`‚¦šFâ( ©£!*d9c›Ô,Z&:Ð<Fd¹KöEHÊ’|Gí0]t‹YMÁ1ZÓú )ú{ð¹DGÅÃFFæ/Jc˜$D^ø5&óŠ‡eÀd­³ª}˜l3â«ƒÉG†ÉËfÒ,W/í5;îQ­‰‚é€„mŠ<’&ÕÒQFF¡u2·R—‚z@‰d´*‚ŠI©ñ;1™ àûI;*€)ýcuÓtÃ¾8å÷‚cÙ“P°nþDçK•2’aµ|
È¼pI‹¿šéôââuq.î¥ñ×ð^ÎQwž¹øçÂtþŒp†Ãþ_£Ô¨ÍÞÿÉŒÌû<9 ÙBS'Ø4ë}…‰x8˜ÍR¯6ØRÝ½,î{Ñïj<	gæ“Îë…ÞÐL -K‘pW7£Ô.î4êëbq÷'FË‡‰ÑlG77@ãõÄh&`­6kÕ”äg+,æ×/6|ÿô½ÜNª­n]ÆˆK—nñw1¥ŠPkœiñ]ˆ«–öàì;‘i÷±vãœÛ;,ÎíÍÒ>F+¹£„ÜuÑ‘Cx/‡7“ëCQ]Ãÿ¥ê¹?£fës£­P6ÐÀ‘(’¨mÀÁ(£ˆBˆ:aŒ’©w6KÐ9AÆ+.©W‡HÍ®~rßÇ8p…bú+$É‰øûd°èkûjœJ”îÿPì[´ÞÔ¢vžF˜Šg/jg§&ªéÐ¾¤î­s}¶ ½ÛÁìãÙ85Ù-J£îØ¢‰ì]‘‰BFó:ÛË‹à7Óð²ì‡áïAcÐ²§¥£Ð0J ß+È©A/Œ=]hØ žÑ]/,–£M	“ÃéøÌ¤ûYÎ$ÂÜ–âŠ!ÌŠV^ækÂÍzçÅççgg p
ÓN[èx¿oËºOþ*R1A/{×ƒëPNk:v	)IÇtæã—g×ÓpãÇýùµéß}ûþÛSÑ‹âVör…p±½<“B‹5n¡•&k©‰eÂ‹Ùõç/]Ðþ³"ÛV£9¹Pâðª+Å”ö2‹Å‰™Å-’´aß§Í-Äy5Êg9 '“Ñ¸E&àF³jÇò»_._ÿQyÕä³ÊóI‰T‡wÕ ‹eÍDÒŽs™X‹NF‰`Øá@4Ø18“	sÈ(áed„
”º5lLPQ ±j—sù×0»™ŒŠ¥-°ècQT½0d÷f°
ãdÊž[¤MÃ»ª2iéVc­V,åE„ë0Ú<‡Þ$>þùÙ¶í8Ðïƒ»Š^ëÑ¸RŒ1¶ÿpÝOÆ÷¢}Çò‚ûÏVg”¨ìä&a{¯ì?_Ì"ÿâëÕð±µ‰OÊÕIÝê—+”¾ZÜE±(»×«˜BñY†¶ãlÇâ¬|}ÉBNeþ/÷ÿŸ9§>sÅvŸ¹`ìa$šÐ«ýã±”©lV&×_¾eý½ï×ócËt'ÚŒ-ÔZ¥æNÁäÁ,b=muk¸Êh©{aU,‰÷Y)ªÞy¶Ò¢K>§·}k¾†šŒf¿	§²ÃÅœñìµÈ ÊÜúüðÌ=›Ón¥JÒë_..r;¢À¥—!ü•lÞ-Ñ¿KPôMJ¡Ÿªe¶Yi7?›êmtmR¿­Š%$¤2#ƒ¢žžTâµCF/™ÖÂ/0‹1åŽ¹ÖhD˜a¤2Î9X4Ü©èF2ZÍƒ¡Æµ´XÇ€våw´²£•µheUÂÄzT	EjG
½à„> •ZêuZ)ÕA´Þ³Ï%¸¤-ãSÍÕin–Â¢LòežQjýkt2·O Û6é`G ;Ø>,j*P”<)óÚÈ­X‹ŠAŒ 	uHk‚òŒðhe`Úqg­pZÐhÆB)-£ÑRš(@ÙÕïJì„7µˆ¦)œ{ÉøQ/p™Äqþ­ÈÆü·Þl”Á¬’÷kVÖ<½Þ!øð¼«óub.¾t¬%:[¡D÷¡±ÓñðfV’‚€%ž+þwp7åp0˜˜«³%¿èMÇWá¶d£²h*¼?½€ÿëf:ëkQx³)ˆ**¡c<_¯X¶ýi/\<0á1¼=fˆÊ^Âxòô-©ì-’Ï´ŠÉõÓ†îfÝÚb[Ù+ÔÜp§*Ú(·5¨òÌ]¹ãJIÙçß‰,láìï[IÅÚÒ9²k­)’¥™µVìT#XÀŽrm¸`ÊKlôž)•jûø˜Bn<ŠÂ
‰xV#O"B(Ï:°{¦`7b¡›A,oOW!´vË5°“5:˜.rÒ'_vüÊƒ•hn$@ìðØ•,ðÊKÙÌ¯-çÖ@*'h¥©£ƒÝÆT7ÒSí°0J@$äÆ†3£öÎb-¤AEßn!¼ãÒ"Á£ÃZÇeRR±«1w^^ûâó½¶Ï*Ž7­âš²íà%4Y×Ô(øZ/
Œ??»cydÓþÞ­ü\¬á-TúÉ^’æè&”ùÉB·*Cg>ºÕ8ðNdûîP¯õ®o¦}ƒæLxwƒÆÿA¢ŽXs“{<²È§ÂxJ‘Sm©3«‡7Å+5‘au4Qi•Òg»t¶W‹7n¥ ÀÜC:Þ°R¯Éñ;uãëP|Å²õü¸(pïmua„eÚ"œ÷I|á`¾™á	Íû/M€’Ã¾ô/Ï¦0èÐLŠÊB$ÀWÂ²^êKP$"YÃp8=ï½žyÓž½+}½)ácé»>+Æu`Zº–'ƒƒ‘_J—Þ;ƒ{¿£ò¢â»iºp—³Éø¦Ux©‹–^î4ëéâæÆóé/2'÷òÏ;8äà‚Ñ‡³Õ±’>¥|€Ü¢MTê)dó1¤™ÀÌ>šëk€Š³õU4%_) d/ÅwN¤og)?Î9 2YÅtÎ™"h{ %‘šÈuL‡ãtÓ¥ÔùõŠÉõ‹×uK¥•µ¨{ù¦GÎÑ³ôlç¯G‰œâp§v1Ïª†98/‹³U-*û4?¦ŸªäAéùm/Ïr5j¡-è—@)˜ˆ‘q¦ó)E0š:ª4K‘m©°‚ŽB&?(V,°hS“yecÊÄH‘CØJD´
A¦„ŠŽRt”â©R
ÌP
¹ÃL õFðÜ‘)ÅâEí(ÅÆzt”b×i~"ãxG)¾lJá‘¼·5Êhçq°
kmX^¢ÈÃ”9ØÌ”+mS”³À‘ûh­‘*a£„	vÕÇï(EG)NN)~@)ô.J±Yå(Er¤¯R
‘#V	¡‹õ‰SŠ¶Ò9ó×£JÑ —óiQŠõÓü”¢µ><¥8¥€Ý¤+ñ§`»éYn@®ŒGãÊ€fl@:`ì„ˆ–ÍxÐ2'Øh¯ªš{Á¥Jëˆ£q&ê]µ ’w½W¾ôé(‡[ÛSóéríºžI?
TšûÔ&ü=+sÐæ•¡l€EeeÄiH)v³—½«0X×{ßó‚‰¡”rœ+‡ºøj9È\fº*Œ„M69›Ë>	0Âœ+bÉÄf,™ÖÛ")ªÉz±EÌ<äµ$5D³£É`jý´åæñSå.}òN÷¢¾q#zã¾›"AJXPfRæ¸\\¼‚GZt¼2ig]ä÷¯:Št×ûsàêÈòÁMî®g­ÉmÞè´*Î!_Ô,„¦²æûu›”ý¨Q%ñEzÛ:¿*É‡óžáÀ¦9œOÇçÉ‚òâë‚ÙÁ^ÄN_™}LEöÒ·Ð!_ùñÍë¾ú“œ“sžñíæžÇÎˆl¿–çƒã£â+\¾§ÓñhÔlË…“ÙÐ¿øñçßþüéÛËŸ*öK;@Üï µ¹žõ£-µÂ©”·•¹BÀõ	Ø Pº½ÖÎrç­^„h%5Ô"Ä5v>R*D;S:JxDJXæÒÉ-¤”ÜÍ¡brƒ*Å×)¡â8×ù²¤F{7áH÷¯Gc
‰1>0o®£…l“Bf OËÔ2kÄ¶('{N”ó)Vaë(çgD9µCí¤!­•°ÖÃÛ+™RN:Kö©à—1§U 9*ƒ‘Ö‹)ÅHeqÐíL-êHgãÔ b§ìIj£ÐÆvHŒtƒt2%×k°‚Ìš¤S÷+¶á³¢:°e¯HcâI(:Ð;W“xV•Ç:€xf‹Ì žÙ²2‰g¶¼â™-ìj;é:DT5‡Í•ÁasŠ§UsØZpÖ‹­9fK<–DJOÄcŸd1¹ŽÇÇ. íæàûl÷^¶fúqÏàœÛó×«ø‹ÕÑéþe‘`~x§}ßI[¶cÄuŒ§4ò\‰ ±qm5õ–é#”PN‚µVjàÚL .LpDy“Ò÷wùõ‹-¸Lï!µ†=´¿cãb¯—ËUJxØáxz?Æ}EÜÙøì!uø{©ÅÓ"hpz³l@•â¯Æ)Ç~|uUÔ½†é©L¶óÝ±ßr«7ÀsÛá¦´\'Ñ@·ñjw#N¤ÈÍ­¿Ÿ_?mÃ~ÅüR«ÆÔ]¦ÆÁoÑ“îWÞ°ŠÚ³:§ªÌýW
«q„5á3ÇÛ¦¢T|å=èñ©ñ°h[Q×UWV‡=}ë¡V@’F=²ÞpÃ…·‘éÑD3euÄR `IíœS$U—ñVq‡#Ö’",“Dî2uÐÕ:tíŠCS»RÈ5ë5Í8AŠ¬B…Sâ èbO ¬Ù!ñØ-Âk«ž"âÒòÀ''ö:|¶5G€˜Ö·:ˆi	bxë}HˆUÊ WÑÌGä0&Æê M´„Pã¤ŒQn¼çLÅÈY¢˜•Tàìø´çuXn}5ÉÈ¦óA	±|("ˆn‚ëàƒr3ƒÖO^ÞµéØKÕ‹Ó°àÿŽ¯-ñ6«ÖÁÕ>”µWÖäôPv<”úñòòÛw¯ëºÉW=,ƒ i=ˆhM7r/s!r¤ƒ!Lp¥9’Ú'ß8Ç>iJ"cô §Œ¶‘ Úà€Å‡“$Í·ÜNE&¬K.êE^jyÛŸHoXYöTÜ\íÖþÎÐé†$8gfƒ|<O3-%/ä¾L^òRœ-@«7‰ŽHF‹ÄßòwVü¾¬ß	—Ù»BÔ„‰“ñ4•@<K*¹)Nì8_õÞ¾~ÿøJSy{ûµ%ý ´"Û}©5Âº¶„)exÍ[N…Î«QN-uNRýr7žÔ)~)¯aTæ–%h<‚Pq ð”S©jUëWŠ¹¸øåõw•‡îÊµ©éNµWhñ…Ë™™ÝTê
óÕ­¼£‡ça•È}îÔJÑ¼¦@‚ÿ“Iòf‘Lè‡éÔ\þükby£¯­|ð'ù³<9ñ"Æ`œ„ÐÌ±ƒæ^ß¥áÀ­·ãKÎvg{|Ûïhõ4|È˜-òÇ0_ÏúoÆI?ÌAÎ™>ÇífápbIÀZ#ƒ£s3)£­ÒÔ4¥%bÔìtŒ$†@°$Œ“rü>±?4j–˜Ø³E½”!°µÞ¸ L{%“M¢\¶‹‹´n
¸¤iÓ²8ú|¨Å¥«]H9	¿”#½øº¨Ðrm&Óy–µù„î}ûëÿz	KìÆFƒÿ.ë· KWp¶>œ-UÜÅôÝL“Þõn4UJùd†7azÞK£Ÿj³/©jÑ^®7½ÍÌßgÉ²mI^–µV`ßÓèT]f÷8
3œ—]¹
f4-,g‹Ù|4ŸBo˜+í±iAëà€K‹ŸLnf)>´,DoŠ²ñ³	,,èHÅ°g¦çÇ7é6¼™~ì}ÕïuÞ»¼¹NgHa¹±7#?Üó@ßîÝšb…Ï’i§¼›t÷WEÈéÄøAºÒçsê—sê™kØ.Æ}|™ìEs4&~3ëÆ³³0Jeh
fîC47ÃdG­¼Å{í‘MG;çÛ½‚*¹ÑÚ•*‘²îù7ÃhéëØÏ¿ïç×/‹ŠÌ Z£Oä)ðójÌÔ^¦æÇÅ‡0ø•ão/5MwQIµW„•6”Âæ©fèk_{—NÏj†0
·åy|~½?ôvjUýþe{”¼ãçÄ°jþ—MíÞýÅÅoS8)*a•ÅŠævµbü>žøjÿÎÉØâš÷é)09¼Ü§|±Kq;%o!Qcƒ‹ÔPŒ5—ÞZ¯dˆÌ…TôW’èÔs"­AŽòÖEN:×ñ¸ÏÇítý­½ÄûtÃñ'ÛaGåŒêu—ºyà5G”ÌŠ;Y'(÷÷'fq—ñ^sYš×„=p\ÖÆ+{t?QÖV9ñ*ÎvžÈGÙ1¶0¶xb³ÃsDÂÓ_läz~X*“k•)…´Š2ê£F)ø¦a„eE/³TcN±¨½pšïÍJ^Ñé÷·‹¦m½ü¸Ðüa0ëOÝÕ9ÐÝ•ySšX/öO$UBo…a©)%k0, µWãoW"Ï˜³+k×úüDNéÉA×›·Ú:9âò —å`ê*:GÕˆ9€ÓîûÉd<¼,‰m5\¦ï¼ÆêçÌ+ASùûõ(Žó.Oû*Çš®5 õ|
°¢³ðçõà:T»D³ýP½ý`j‚¤ò$~4ÕVNfNÑâ´íZLÛt£Yu¤Óqªÿ˜áÿ|ýîÕÅÅ/×aDªÃ±àTOtÔù§_'9ý—ÿúùd@ÒH	æBYfˆQ"ø¦62‚D!b­­ÖT‰\@Šq®œ³©Šv¡:d 6MºÉZŒ øÎ¡çÒ-¤Úˆrâ@ôªvÎµ–yQNåîèÈÁ¡ä KqH'ûÅîËR¸h€Ì2äû/üfðþÔùÆÃ±Í:{ï¿òf\ÚõÛp5†Í|qñŸß¾}Sç{ƒ“b×øÎ»Éøê:“©_øÕÔ¸8EïfÄx•¯×JjÚé©C þi¦E×ùÌË³.Ô"Õ‹3ª'É<_yU±'_'ÕòŠ+¿ÃYõnÏ}+.á\J†ðV‰S:!..¾ÝU^iáa·gzæŸÞ¿}Ó/M¡‡FÛÓs¹È@Çü¹‹hƒ²4æ>Fq†Žs.R,$ü›y¼ô¿XÚ ¥ÊDb•Q„x©M²‹Znì>Â7÷´%wOr—%oOZ„ý¾º•eZ¦>Xé/…×)ü=›˜¢_Tù8añgIBÏÝMáÝ{	¸áM‘0›ËdÍ³A€¿–ÿþ	8C9èË³ò“7ƒÑ_ßÿ¯Éâ’w7Ãáü’büòÓ÷ã¿ÂÚlO‘J¶¶µvø“4ðú*vš¹°¤o0VLÂëA„(†W›LÊË²e­Ì¯ŸöpÿîýBJÙÕ]•Æåì¨Ô‡ÔQ^cöÈè¹¨*Å•)UÂdUñŽ›oo•ÀJóÝÆËßÒÝæM.ónï¢
¼2­lókz»«{ºòfó,k¼œŠÚãvéŽî“lWåØ<¬j½žµ_¿¼×–'Ìö.TUÕEôþ]yÎ…ûú—â€­¦Ø¿ýúúÑ+ñUÑðÇK xònyLEêj´Ãõ–aéƒV†9/¨'Ò[¢©gcg•
Ê#‡8ÒÌÂ¯Vxn”Æ$P‡¬¤ÊwäýùwÄùyW|‘®ÿ€¼cÁõ&y'd¼SÅ²
èeÒÔÅîíÈûÖUéÈ{GÞ¿ò¾dYãµBÞ7ÇíÚ¢tä½#ïyòîCÖ…–w©‘°(RÆŒG/HôT{,¼ÖQˆ`6Ø«€‚gFQ5°:‹cêYˆŒ ¼#ïÏ‡¼²IÞ‰P;-ïX>´¼¯‘&Ë;Ï
É¤©‹ÝÛ‘÷­«Ò‘÷Ž¼)ä}È²Æk…¼oŽÛµÑîÈ{GÞ;ò^œ3åƒ<4 šž“Eèeí„ÍPEET–Å@™—A3æ±bHrip˜*í·Œ*œš<rIxÚ+¼tHüò¾ºm{ýž73Ó›¥8­iïfâM
ˆÎfô÷e+Ýx43@({Óð)e~ïûc0¾™öþŒ|*gYòùÅpcxfž›=-Û?‚ˆ2³=¤·¾Ü'¨ã¿²EvFlñ/|3þ	¹…Æ7[‡k$WËâ¤ø˜¬lê•ÙõÓNìïßƒÏ¥ŠrÃdêº«Ò8›š1tH6õv ÙJpHà®Þt¥¨üóª	WjpÒ2(
õý±Ü:eLˆŠYK‰„ÓÅhdh‚ ì9£‚2áé2É2É%Ë©&hÖ¡Â	PmTÙ TPx{alÃ¯
¨Àô* •ïU­>ÿ–þÃç„
35V¥9*P~¸aæ‰¡B{î¯®¥ÏêúupÄ3ÇƒÕ{Œ˜ˆTFM¹KXT ŽD«%‹ÔÆ¤,D€¤(h ˆN¢+hù@WØa±TPAê#ê
KÃô3A…eÇ•£#Ck&{@vHï÷'‰íÙVØ-OŒïßõ_Ç%^ƒqŽî[°µbE²Ž28é	%DŠÀ¥s’‹aNÓÈˆI  á3E
Icp6Ú€UŒÔ·«ôNºY8ÇÓÍöþ–³âàwC3¦byÉÛ;¶ÿÜ¬¬÷zË¨gz_Ýüª×ï/:k½ì™³„)£/Õòƒpîì]Îa.ÌÝSF½7¿¿K¥¥ÂäÛIr9àÙ_£ñí´gìøæ…•WwGM‘l»®À%ë­¸$Bdµ <÷¼R@«Óë§]Øß»ÿž*4Öê­Jó*ÊJfAJ„ùD÷BBqÀd¹#æÒR–½›Œ§ã¸küs˜M¹Þß0,CîÚcª”•}ºžÈæ•å1Ûxà‡®{Ö÷¾3³ýúDžœ¹«,’ÐL`:Ê2`íÐù×@i‰pjÍö?ôþp`oooûé÷å-¾y¿ûËñÖ„?aþQß^‰€V0!$P	 „±^E¤=µ! œô ‡£Ošp¬>øˆà§ëøÇ#óÄØÃ$í­@"üChMùÿ yõ€3‘ö‹³UÖ[•Ž<kþñ$¬«ÿèøÇ“åõ-ãÄà „ƒc¡GJz¢pôÑË5÷!Æ¥£ÁÂ-B*Ê±ò8Q¸(îjÛñcñ‚Ú?(ÙÅ?4Þ´`}DûÇs³Š/ë"²csö¬âDÔIªã ­p'aÇï8HÇAç éa5  ËÝŽFûÈ©æF`í<Ã„û?5	æ™äÁG¥’RÃ™ç®ÞkÎe1î` é.“'}q#‹ñy.øÅ½ìB5g>˜’\ø$¾|…O~Ù0>-ñ|}6vãaïÅ¼«Ô¨7_•}“¾>ïý2–ÇÁd:ëÍnÇ÷ã¼ì%Ì'°/_|œõgðI½øúeÑæ)”Ù §íƒ¹ÜH¾š‡ü]0±N¥4Ö=øLÊ5>G™q]ó¹%8&ýýûô¤Låðöôm&Ù«Ó˜­`v`t×CXÙŽÖUyc÷7\)(ÿ\;‘ï#;¨NÉØòÚÿ=u`ùØ`Yß]€­æTx›zusx·(Ažpœb™‰—4jÇŒGH++p Õ;L:ªH”0¬Ë'–[‚ ¥¤;ÀRlT†°dë©1,¯•A<	·Âá`Ù$E¦Îê4K~`‚ÌË'a¨ïÀòóËú¶m½²\*©Â$f
NJi¤Ò4Hb)£.RA šè-S^RæÙÕ¹ËÓƒ%(’›`	zX¢Í<R¶‘GÊ‘j,Ÿ„üÉj–íÙÁ?ÍòIX”;°|t°|¦©¹ïáx‰ÕÎ¶Éb%ÔHÏÒZš|Pž*†9å<Á£äco´ÄÂ©ÔoqÔû\ÁÓÙ`ßÕâ–÷×@»_œ^‚„ÉÀÞGò2/ªpßçB%§ñÒO</uv6k
@0M :õVf’úÝßŒåYÞëÁÀ©²€àBöªÀ³´ÉÂ4ÕSƒÏ®Ká‚9þöÊsjº˜u;˜}„áàW'©‡¶º¹ögõ„bÁ¶²aD8ß(ˆ†”X×81¥4?–m>Á~ÚÆ[º¸?ícVc¨·*ñSˆF~äQìïm_Pu¼~íJ»¸øö&õ'kWæ÷ïMËw½éël$s¾Z’ökyêµ+­lÉœz¶$µ<[w93³›Æ;qíe®”•â'ò:dV;#muY_%ä¦&z·@¦UÓ×‘ûýäœTÖ?,ÅÌéí~qÕ²–Œzïªå”)<B„Ef\ÇÆUïªwÆÔz=+.N%àî·Ñ?ÿ{pM*öªÞëB¿ûÿÙ{×%·q,]ô¿žBQ±#Ú5c¥q¿äLÌ9.ÛUåÙ¶+Çéêî=*@\œj+Å‰r:;Nìg? ()%¥$‚•;ºlY"@Ä÷­Ö²^\Q}—ë­~ñCIjŽ']ø»_²ËÛ»ÕUÁ¿DÁµÇóvœ>G«íü{ŸÚ4Fr¾·f¨>y½fzØòþíû7eÔÕLš['±r
KYÿ5ËkÎ&Ã„šÉõ@cÞÂ}[Ó	¬Ü‰“ª¶W…½SÌqúbb‘Ã™ÎFRY"df¤Ê¸ÄœeYëRF Î¼ÇaÐLj(Œ°	Ñ)æOJ1d3S9gt‡# ´aÜöŠ9fh]1©e†’TÐGá¾ïÔ'õf¦åÒN9ï”óN9¼Êù£ˆrè”óN9ï”óN9ï”óN9ï”óƒ•ó©EÊ«çLX¥µbKˆ¨WÑ	a‚s«]æ·i­©6Ær¨9SKl¤Th·« p§œ?Nå»^s´#ð Ši‚×<=P»Z}ÑgM”ó£{ÎÛ‹<ë”óN9ï”óÇ­œ?Š¨ÊN9ï”óN9ï”óN9ï”ó?ƒrþÁ~Î‹áa‡À`ËéE°Ë,%8Å%°ÐãD&•ƒ"¨-È¼^N”ÿIk¯¯I¸‘™ð¿c e¶³Æ÷«‹<ºo¬Â¡ÆE(Ï=µ“¯{Õô-§ÀTPª¯F¶°ýaø;œØ)•ÀÜ­f1þ‡Þx>Ááw5úœO¼Î|Ù_*[A]7åŠÁÐnÞÁWá‚ 'W^ß¾PW[{ô_•RûëRG!Z0„Þ§^=Ö‹á(?lëìdâ{ZŒh©ð—ÍÃÛaú³« ©(mvº¸•y?þM]ÌÚÒÐûªF3»¸pQÙä¥Ööªø—¹±À+âÖëüýÒHÐŸ[è„Úr©×OV¿=Æ…<²ëÆA^µH–ZÂdu€á4|ÌYPÀ•_or?ªvˆÁ`9ÖªójUÈºqë•Ò¾Ÿt(;Œ%û˜N‡Ä+ A›ÄR1ä¸GXª¼²aká——Vq`±„
c,2C="ÃÌ©0° s Å®"\wH\Ä€€Í´ílY&òodWñHŒÉÓÔ“©`óÔ‚ê–™Sï‰ÛÌ°"¿3$~QH? 7HŒb0ÈÉ<#—eX&0âFSÊ¸Rs$´E¥ÀfT!Ë­¥ib	áBò‰;$nŒÄw=èˆãe=‘À÷®?5ú‰Ù= q‹é[¾;$~.Ç‰w"ñ§áø¦)ƒÀÙüé|÷ñö¯\0H(Äé0ì¨!+³ÌQÌ­‘Ú`E,bÈã²RÂ÷„Ä\[îŒUÍ±ˆX§àÎÐ±óK¿Y>ïO#v>÷¨äÁI4_ÀØ×£¡4˜<0ìoýf.g³ùó¾o2ü·.š<DÍ/ýåÍ§M{!¬+Ÿžr/0ì%pŽÔÄ?37ñä:Ÿ|é†_ìFiŽ“^ïm(ñÓ›-ï$àãü‹9M(.T¨vzúnXØ“¾o5]…WaxÅ·¡öžé™o?.F7ý<¤Içãš…jEiE³Çvs£ùñ›á¤„ù(M¦ùb £ñ~öUqþ]ë¿yûáÓÇ‡
Z+—õ¼õø)7Ž“	ÄÅŽ‚©Ð‚!ˆVO“AŠJO–7ˆ/Ï âµyrp{ â[cf/¤X³BÚá…
Ý³åÞ˜‚³ATµ¤»ìž“¢qÞL&ã¼òªŸµß’üüç¹þb«}Êë®ø*ÏyšÌ:Iß²›"¡ÜHër¿/ç—^Q4üv&OOßžíå=àW¥ \w~þ®"º€VRäÿŽFêôôÕË;÷¼zƒyÐÛß6	Ð7Áþ`¤š Á¼|3ÁZ…{èßL„ä¿jÏTq"ÿHD$Ö:eB#ÂÆ&ãÖ2ãtÆ†ÊøK2¬3A¨¦6äžÃHf¦½«öØ™¿SaW³â…'þ¯¹¡*Aë°´<ŒV´û¢Žªa{’|WÄúÐÎ)eŒ²UUš{2I§ÛƒÑ	‚d½)$Ä«-«ØN“IÚôÛßaA*–ÂI¹º=¦˜ø´4’VNÆ¡0Î1%M`üío{á;¾Ù	ÛÜëá¤BNuðTóóp´_m÷‚’ô«çé•¢ÒîílXQbÌ‰¦
:=}36I~æ7›
j•6§çÖ~)#àZx@çÑ¾Y!
Õ€ÆªGTa¾ÚÞ|ª˜ô¨ÿðöïU7[IoßþV¹k€ç¾~ž…Íj5Ê²•þšÓèÑ0‹X5ÍOÂ>øìÇgŒdÃ½Ô.4)<¬(Z&M~y÷ö§W tBZàÙJág-…ð§)ÉF¾4í"ìÈþ}ðh™x©Ç¦êù°“5¶ûZÛa{zÕÝ=¨öS¥ŒÅ}÷\}Mx°›ëVuWJ¹ñ”'%·Ó?½¨¼òïçïòÀaŽ’ï;YI¬ºðÔïjŸ=ËÜ?ÎI12Ï~ùðû¿¾<ÿµboÒaWb·»’ØÜ”4o3—“ÛóCá Q¹Ýc
×»lÃz~ˆÖH##ôî9­FVsFB¡jJ0f
æ5DèBÙH¯/–¡ !:@%EH+e²ŒÉ4À
"qú»Ô§‰j£$‚ €×+M	LÚ¡6RJÀ¦Úƒ–¸ª6R™Vl*ª*ÖÂŸFmÆÆÊÉ8TmT4ª*U©6’$m¢ZmL““ 6¦	JRÓD%¨é‚ZTS»MTS…%¨‰¢RÔÆ:¢’ÔÆzÔÆJ•jc=ôÜ×OšÚX·¿–ÔFÜH| µ±Íœé¢S;µ±SÛV;ðèá`q4¿iD•!'ó1¢vü‰V:% @cI™ÃY]F¨–K­1ØÈ„Z2î”Ì(çÌ?ÊvGþ"–BLÐõdX”AGáÆ­	¥U…z¸–Šk%Ây®#úç”¶!R:F÷V…H¤E1*Éõ6:ík]1OšC«þé×\l”…DýÑ¢æ_ˆ º}X·AQÛû)[?ïüùUJ
–ŸàóÞüê?žØ“þç× 6÷¢~9}‘ÍœóOÛ÷R’¹<ÜQ<WËj–þV³•eþ›©½R;£›ç^--bB±q~ÝŽõhfVïrõVVgö´÷/ýÅƒ÷Äÿ{åÚm_ÅÜ›ß©©½÷Ðé•ìwörºáìBî8ÁÄ0DëZ» 2ì·Z»@‰¤@®ÕŠoí`ïûúôê^.CºHc]¾îªÔc‚Q_ðmB•2;Ðm Ü “ˆÝ/£<{¯®®l•ª@’Žu;Ê—&Í¸“Š¦éxwH_æ¤9’ü·&™ûãètð“ªÈßÕPfRª±&²ñôðÊŒCíËŒ) ý=.ögKk þ£º>ÒdüwûsñßGŠ°½]ü›oÅDµ#z5‹Óí¦·™–ªõÚÝ˜¶w1nqE®õ0¾9¦ìÛ¶/¾½}{o³¶/²˜µ-÷ho5ZÛ²og.~OÏ.w™ßF&5gÞ²Ab¸u©úž’ÕõÝ=®0åûî/êw÷ßix'ï½×ÖŸgsSÿ‹Ùtò"Ž£6ù]Dim$ZMJ“Y½#lMßz¸Ð2Ýt•k`žö!<A{¬qéBÑlÏ;‘¦r6}©*gËòï2»v:X§.íÉ¼«r¶#{]kOæVå¢ñÛÔ¸v$ïÒ¹Z’¾KçjSü†ÎuˆècøÓô¸CF¨ÇµßÅ&¡n«‡öv”}:K[r6Ût–¶dÿÞÎ\¼†*IÍÏ~;Oñ]k5R“D‘‰nç´¨z¾KµåržN´xœ5Ï¦yÈlP‘Qc;Ýß’SãøêÔ½uº¦NÝW¯­Ïoùä7ó¿‡ß,õ%§Æj8šþû‹øËC;ì%ÞYr£Q(·A Kå²"ä´UX(kFÀpH)„Žk¤8BLjé7ÒŒK‰°E2ëöÃþxûiWÖ^¦=‰W(ÚH¼"ük²ÝaÏ…àë™Wñÿ[Mu&(Ët»uöo)ˆõ3¯´P*¬îÌì¦güÜô²2b¯¶›¾fM—znúêñæ¦o,?ÕV·ƒwO™©núÚ²ñôðRÜôMdÖp×Ÿî¦¯+9ÁMß@ä§¢¦›¾™ø$7}šèCÜôôÐîÆtˆ›¾AÉnúF²ÓÝôõÅ··o7pÓ×œæ¦¯/÷h/ÝM__v’›¾ZìÓsÓ×QÒw÷˜î¦o½¿7ý:MpÓ·ßkëÏó¡ÜômžŠ{H7}õŽÐÀMŸ"´sÓW]ú‹-ò«"ä¡WÏÔ!>ýöôÓ–å§zùÓOÛ“™êÓ?LçkOfçu:_;’ÿ;±¾lÓ(€ÖTº6Å'E¤‰~lQ ­ª‰íw‘æ¢>T×jKjZ@*Q[‚Ó£ V‰šŠí¢ v^öø£ Ž¬­Ý[§	Q GÖÖÚè4%
À/=«.ýýÞ9Rà×Oïß5(Gó)¸;Jx#ÊÎ(UšJé4—\[)´”gTŒ@Ì•:L ç üÏ HîÊøöÛ•÷cÝ÷ï¢ç¶t[«Y‘ûiêPl¢t(ð1µEßOp™âmw Ad	AÚmÜ€Ÿ 5½é_«›àGÏc—eg¡Z˜† Áõ…ÿ¶·ì]F7±ÏÉeyÑ°˜ömÐÿü?bI’ÙÔwP–C{ÿŽ.ëOÇCçü‡ÞŽjhÓy¦:qáÀE±X$-ø0ÇFMÌý—›/¼ŠzÚl£v`‹ôÁ›.u!$]ó¨ÖJ™ÓªxÎG6ˆk{°U?½Óïí¸ÕÓ'èàj&~½Mi’îS_¼œû¾·[-'}<Äpw|ƒ\kiªææ«½´:Iù­ykï¨)o‰Õ%¶Ç
¶õ«t;0ÖR3íˆ´Œ8g4S\Ybã$Ó
0Jã‚;´”Ak²Ì)„|;Ám¶ßØBº	¶îÛð5‚¤Äë`KSK‹TbÉ£(–ý˜Á¶½‚ÙßØ>Š"ÙØ~ç`[¿7#\"ãáfJ^6¢Þ3Qæˆ¡VIªXÆ±Î¬9ã
©4£KÙí÷¶(l¹š-Ü^¥		áýi¶¢v#°=0?{­ÉihI³,í
hEìhhßÏFÅðjd¿5G[¸(a%Oü
KÇT,€0##8‘c±W=Î€Ö–"Á… F…ý>ªýÖ‹Ö4Ój¥Ã»Ø÷jnúío}?ØK5¾)±î":…÷		/èr6BµeÝlš…úb#DYçgºè‡BÙ´.C_ñÖ¼aì«7ï+B¤N—‹a„SÎ‡…Nµÿsâ!8l,±/“D÷=¦ö² ø¤÷Ö¶1Ãþ²KÙØ^i2Êó«ç¢ûó³báØ[YÜ$ž%+œôŠü…ïó26\—8Ví¹B¬Ÿ­ü¸òc>ÉÐ'
ã²§aVó±õ¨Ñ‹¥½G!³Gô˜°ú¸å6waöò©ín† ÷D¬ 7åAñVàÆ±Ü,¤Ü_nR{9¼AxWñ-yzÝŽB¼u.Z(›}[ ¸&$/TËi•.—ÒRƒPÖæ¤rw¶ÙÂí$´MY¬¯“xib8CjQm›ÜqY€û×áÇˆihVƒ­M2QNè ”O`ÍO¯s´`®¨¡ðê6•™‚&h€Œ2ˆ{eœšÀÙ%!œ1d%GÊPh³™Óþ:ˆ9òMßWpì·ìdoÏ•»°%ÿüG¸×ÿoþ7ë›<€ówsÆ"ï_ÿïe>6öjòbãÙVà,¼ƒ³ŒoÇYÌ(¯à,Eˆðœ¥˜³ÔÜç«#„e4(ÐÆÚƒtâóq0Þb‰@C¼]-±Â*NýðªÒÅ›wY)îî¾ò'Ñ|“ÊÕ¨–Së2v´r1Ç ¯³¦ÈN°œ¯0Z¸47NqC‘‡Ä*!Ê	î\&5³ÐëÈj#WÂ	È´ÿ‹­…$Lí ®×“üjà±cb¯F_Â1fó=\ä.	š^–ý·g_ITýV‘†¥´-­&`ñ‹\ç#ßµ±W~ÇýÎ­Ï³©]—Þ›Ûó¾
mMâOúïýö×j2Ó…×FÕäó,\?²/mq‘›iÌx2[´<«~æ×‚_Hfâm= dÁê®nDs]®¹
DEwUlÏOB¸zÂ
¢†ì&tµ(€Õ…Ô³AXÜú4átY6¤8]›‹ÃUWB†Ò³½8·¥t=«”ug‹{ÌZhëÈ·9ó­j¢{È <‘•å,Í¸gµóÉ€2k§x™$¤@£B•Èë™Xí¨2  Æˆ#4c^·4P0Œ©EƒÌ	­°¿r—–Ùõ“ë²ú—„Õ¿([úx7ÀZÄÈ­5°&’m€õ¢S]°Þ»ÜŸ0ˆÓA|ÿîŒ5u?,¸'l•G ý”Ø¬ô;ÐoúÍ R™A#wBX¬fœ!ñXG1É2¨ÆÆa%(ðÿ†B™,¤–&£
Ñþ÷
úeQ²&0p»oÙƒ~XœGÒÐ÷.÷§ú‡†ÕšŸð”²è€“Oø‚·àççƒ¸Ñ	`‹€r7€ü+Î¨RDªîa
¥jæœdTq0†L*¥=ªg6I
@!9£þ+h¨•Ôh¸UŠ¢}îá2+øMDÂÂoÓ+kã¤ ó0`«J›°ýâB½í{	ÐmÇzrsU”yÌ3ëBxÖ0F Å!9;™”Ñl!í2/BèØÄÏvÏK×£¡ïèd­— v™Ö<D“Å ¸Ð¥ï¬*f“ü­ŠÖ[ëÁÜ/s¹ûKf£Ñ`~‰C,û°RöÛWWWRT™g|B/ÍÇ…ïÉ“=¼ºˆáï£2 Íc=(¹ÐÎ†µR~Œ¿xZÑ­kjÙè¤ÿ²„ƒÏòñlCå®óÉ—iß¯Zç¯ÝÄèûž"„…|<¾±/aùê«³+
²È!V£Ð!åm%×£Ùü¿\¥1LRãÙnG8ˆoé`ïûYƒt<Ûdeü÷gï¾úŽî5…y;•ÆkÎÔ¡ôƒ3ÈšÆÁ­¼óU¹8YR(ÜŠÀ…§°“RZ%›Ö—ýÛ«ó³?^)¿7×RãoÛ~´Ó|ô5!Þæg³Ì¯Çó™sÃoõ[û?þxUîsÍÿúòÃëwo´µÓ°=6´ý§2‡/¬ªQ´þ~T/¹d*pO‡£¦ÓÑ>BNäIUEšcÚ¶RP&1âäü“¿~útvzúi8¾9¦Ymï´£ÊP˜]+µ¢Ù‡ùõVíÏÇOHåî”¦Ð*1¿|{zúÇÐŒÕŸ7Šô˜ÊÑY§jd[0qE4"SšSŒ4¤J+k,¥
‡ã)†+£¨ÈLÆ‘Ã[G„1DCg	‡òÐ)Dyà¡åÁ¥—ñŽòÀ!ØT8 ëÊI>“F‰ïçWÚpU¦ÎT§<tÊC§<ÔWÖ©À£TÚ³“wÊC§<tÊÃÊƒs1¥jD0Åµ1›p—i‹1%3‹•T‡)£’	ˆUVIL9"—I±ë¤{§<tÊÃ}+€MåA ±=ÿMP»«<lxNÍ7—F‰ïçÓTZ=û—:S-(¢S:åáÏ¦<¬SG©<´w”¦S:åáûVBÙˆºj¼MÐ[ í5²ˆ „P©+‹rëœu@eN;N(Ì¬µšdÈëÍˆ“Â8Ì%'¹G¢Þ–¬Gò› ,3Px½^À)I…˜®%›Ü%8Pøuá¦xÒûä‹i.”ùêWTxNÃ9Ã¿Ég1/UˆKžKmóEöŒþåL_”‰°üƒÂ=µHH/³¸tš/…]¨¯!ûe(yÖ9áÊ®Ln§ã¿ý/ãü:äÂôb§~“êå®L•Uj4³iÈ~yÌXäëëë“¨‚¾ï¬QŒëY?k$ñöT\H¾~ÖúU"V˜8H²D"ž@ÈàkýACŽ›˜ìqcÖ]:ù+'äPªÍ„à²!Õ^/¹=ËTÖ-ÿ61M÷ÂCˆÓñVå´|—§åÏJ¬²U'‡U¸~Œ(L*;%¹þY&™“„S ‘¶DH$âX• Y¨¥„r`°²€s‚€òÜÎ2½×z×¡ðãDái"K" xóô‘lûé	—›0ÌÑc”zâw†÷/ö'ÃÍ_¥»¬rB…ápt›>!NÙÛ‡áÇ]l¼ƒáÝ0|öjðêÒ4…ap"Å|å¡vTa V¡– ×c ud2Á±áØ1¢™ð@¬ÅÔ)ÁB	$ V\BÖ8;@øçá8,ÖþÉls*/r/{`ò_{xõA,¡°'wôÙ«ÓS?_ÁW•_O#Ây°õoÅ\TžEåÐíèæy	ÏJ~÷Ýô†.æžXóÜCJQb¤‡ÕK¿G£è7z€ƒ°årØ¯Œ"r'ñÝî"˜o(£‚‘p¢e‰‚‚“Ä*DåÈaÅö®µ'‡¬¹(}R>òŠ€àMppþÆTv•UïÅ½îÃÁz»Ñ)£iç\S­æo¾Ñ}zúþ}ª5:°ôÓÓs¿N(ks´¢GÇyõ¥aù„ê9Õ¾w~û7ö^}±Áãåû^^%ç}\)§§ïreBaûq™‚_*ÜÕ^Ê´ÓÅgj¢.ý|€ë`EjÆÎD"'Òpjÿ–OLõâz4‰±wÖðžÎ>{T)Rö­³qÅóXÑ^l
¿_J†nKÂ,óßÖËN
­“ ¹H ‚+K‰–De+!I†¶Æ0L­À +B0ÕÒA}+«vÙ?:êÕõš'•w„ÊíýþáðõáùôjH! K3@ÌYFXYøà©A›P¬jYÜ½ùÃ©AâXT*¾þÍ©Ôþ]ä”©½ eê(SG™:ÊÔˆ2‘mzcsWÇ×T) òÿ\[h0âœPŠ¬ÐžG1E!´
I“A@5•\Pã!Kv"í¨Ô•Úä¼Xû2¹­‡7ÄÛ‘¾•b(7¨ÂlJ!’–Èí–MÁÞµöä(ÖáV¬„I9¼¢	Æ¼9‰Ô«:$5‰zÕØÚ§d-fkë(YGÉ:Jöh}ç7Ó¿nr¤o‚ýÁHÒi9>ß•°äõKŠÏQˆŸñÛ–Ã’fP2(‘Àùï–B—ù]Md„P›1¡3,ÌD"ÛYT}³®šç0ç%úkßßoE4Í0†­äÛŠ³-¥\Úé4 ÷óþÔ^ª«‹|>‡C`±ÁÀïºÚ_ë·>DMÔùCÝo4òˆ·n4¢`G6‚9EkL‡3Fá
Óá’'¦¬-Kâƒù’9)WÛSKL{˜õèî,n@Â‚4e1ï§Ÿ«NÖT&2]:=õƒK„¿óÅÔNïKqµÆp¡¼ªòÞ^¶4†…¸ZcðËáÐî—ëªRÎ–»Zê³°ê©åVéÍùèh˜Å8¼i~,ƒÏ~|ÆH6Ü;¯¡Iá÷eB+Ð¤É/ïÞþôêt‚NhBëc›1_TY:¹ÔÛ:ªõúf¬/L¢â‰œ}e1÷l¹hRŒÌ³_>üþÇ¯/Ï­xÀ:<Z¶|´l>Ù¦.ÏæœG™
[×òÍx÷iùfeò/ÇâÝðè¹ÖåšüÇÀåDKG˜˜u# ˆÌ8ƒƒÐ
‹ ×Zf°!ÀcHCdüE@À¹Ð»
't¯Šã•1Y„mÆd¶=Mp(Œ×9žÄt52YÜú§êq¼½Ké‰r¿Nç×šÃ9!ÃŽuœðÏÊ	vþ#pÅ¤^Ûâä)qÈöRw²ãÆ!›{Mm–!…dÀdÊ1êt‚ÌÙPd0¦2ëŒ°Jg˜K(²£5TVÊ:ÙC–§Û$Ù<ÝFwd‹õrãtgã5;!‡sÈ;þ¿ŽCÕ;ÚqÈŽCÀ!wy¨Ë!Û÷‹¯qHÜˆ>‡l1ƒlÇ!;™Æ!=”A
MS±Â“P³Œ6®é[ÆY&¹ RBÂ“B©¬PŠqD¸tPgšŽ 1C\,éà”íŒ ïàŒWcá¦áænžÇÜ}cåi“é›¡ú<Î·˜îf¯<?
Qzg~¾þâ¹äxP¿èÿ¥Û{öã_ún6ŽDÑq{ÿº°“Ëaïºþ°è]+?Š™ÒÍFáÊ?<F˜?NúïláåFF:,ž÷ÿò¿þŸ¿øŸC^…£aìùÎ´èû%=TÙÈz6¿¾Î'£˜¦õj¤Ê”¤‘¬ö=Ã‡C@à&ÿ£ç&
öû¨™é|Ø»¶!ïj\1…Ÿ;™„„«þíò¿êK,=;Ê‹~îÊ Àþ_/i0­\+é•—†ñ„{‰—öóYl¦çÓf¿ù™«ÑòYœôßŽÃÝú•ãôS3.Â­dÖ/ ßì¦?Rÿôk‘|â3?1cìi/®ÿ²ðíñôÿçúYùP~ü·^/ÌFÈG›ÇN&ýÊŸ~¸]×!¾Ñú©©cÃ£ñ3ñ,„Pú±„z¶#jÐ&¶˜MBÁÛÚIîïižÈhf|ªÚreMB
ŒÛUµT*L_X}±÷Å ;ñ`çy`²^d‚BW“Sq„qZrªÍ!Â&2(·§<¹Ì{p„ÁŽyh¡Ð-dM5‚õ÷«"tUe,¼{§•ï"Ê!¬ð Ïï½g¾HKà™J±Þù7£Ë¬ŽL«§ë÷w5I™_7i-×Æ“Oƒ2µäÂ•@IXÆ	ja¦±UÜ1Î2d8ÃÖi®‘sBB”’!’û\F¥V•ê¨TG¥R©Òl¨n|.vP©;n|@0X§RµL°w(Ä~‡uG±ŽìÐ'‚à§N½Žìì=À‘ÚQ²Ž’Ý%; %iF°ÁNŒ8’1àTf0gæ¿ÅG‰d,#” ©ÕÌ1„<u8C»Rrt”¬£d%«¢d¥WœÉsÂL ¸‹’‰;”¬]ëÖ~ÿï¡díøÄkÎMt¬YØGKÇÕyâŽŽutlþz_–sÞ”…°\ð¬¤*s”i!Öšr/€[$˜eÐ1À9SLEaÌ0QÆ‘¢Ÿaæ$ÝÁÂ^Ž"ü‡TëÁi‹<ï1Mºk°?'÷p±«ˆØ¢Þ£§žªD¶¢n<Œg¶¸¶ž-uäD‹®Êüëa!Í.m¯ì3Ð‘˜ƒ}^bq€ß×S­Ò’<Í<…Ë=xÆôð¡R£5½XÑKù?+Iå‹0LÃËÕÛê»I~ét3¿]?ºxó.Jz‹ž|'%Ê”ØyÒÿëEÎ›ÜÎ›½œÚÑWÿÑäý±çja@¡W?‚PŠr8ö¼Æó”Øk hoÖE<_Þ”äjÑtj‹þÿûæïg¿}üfîE>éå‘-èç™ÌîD'Ë—eƒá`3Ó	Û³ÖÄ1\c0þr±ZÆQ2˜4n>²A|{ßÄ§B\Ú°%Õ™–ƒ9°g¹\ÀÞÞœ½ ©Ì%UJÞ°ˆ <8.þçùoš—:–üxµe‘V¦VˆÕ( 0Ì‘
0ngŽúoQXa£´@™d2$nÀÚãŸÉ2N3–1àvÕE	é8"yØñÃŒzn¸Ëþ³ÿT_ÕyÜHûóàíy÷šÓjÏ%N— W)7$Àg/Ö6žÆ¸·Ù$"³×j•Gµ¸ÝŸôöÛOb½½r[ÊKOrýÅ?[sâòE¸äÅý+·±Ûýál3\ïPh¥ `=\Q€ÅZêYP’—!l°Xˆô”Â4TX·ÝùÁ[;c¢IÑ0–Š8[É€U{S%fûŽs{‹!´ZÁ¼gU5YÍnŠ6³åþ>F¹2u‘±UÀœ€y$n_mV'A‚;Ì°ß6­åŠ ÕG2l„T &9…B@—"d:âæ!R‘]™ŒÂ­žžþý¼¿¢a]kEŸÛ|ËÖÃÒÞìÔ´vñR¿óü«æg´ÄÀ9@úùzuöòÃBÃäÂÃdvÓ{ï'¶ÿÎ^\ªñ8Ôûzõ<”òºªP«x]Eÿ@¾†þÜòîÕ+ã÷§¯ÃI>çdNz½rpggñÕ›*ÅLû›šåâ–?ýªÛÚžß)Ç)øö“RL ¹Q	ºVÅ¯ŽÄ‚œó±æKûû(ƒr`†¥zsr8ìzå¹!ì†· 
zãŽU±ß.džþ”ç#«Æ•BÓ%¾ëIäåûu??¯IÁ?˜”¾—’-/fÓÉ‹l8Ž¯Ríƒ5mÆ$pŒ$fðÚ+*§§¯g—W)çiÆ¡òb{lã[äWEH79®¶£ß.ÿúk»¢Å{U\ø«‡Ÿöd¥šÕ,/›@Öð{®ƒª„	…žíºlV8ÑÖ©¤uí`åhÒí‹OÁz_‚ÿ=àí,_ÙLóñWWžH†¯ïRÂíJ®iFÒd±6‚*­4uVBmtL1˜i†…G€ˆpjFŠ1	tŒ«]f”Ž;>î87¿ðTóóªÛàŽ’Q¶Æ!IõóVxRi‡À6ÌÝ›?˜rÜØ“Â1õÙ`=¡÷C«7Ød~÷k]ê˜_Çü:æ÷Ø˜i½BŒ6T¤Qæ%\JCELf$0GAl§ŒÒ JüWC´‚QÀlÇÜœ±\sûb3àFl†À;
úqNØzt)$ÄSÊU6è¯IÑBD¾›:4-™&ä`Ö(	l’e)‰5’ê45)c=‰÷ËëmËÇ!Ûí8dÇ!;ùòÝë—	d¬³TîT5	æ àžûAnRZ("3E!BJG%3–²Í„€©H£ ±xn¹ƒ(†›é'‘Â6¼¨áòH¼t>
5¯Â=æn=T9žEl-fÌŒM<|§´ú/ÏÞöBÊÌØ¥ß?‡jQeüîœÀ]ª›À#ó‹ñ¶aNûÆ¯!]ä!×bàþA„g×»T!bz¬Æ!çüˆY<DvCžM(“ø¼ol8§4þZú^†î&»ònø áºqŒºÚÁ	Cˆ0¾j!ô_AO	éVNˆ%¥xÝDònJ¾±ëy£L2†6uð¤’è´PpóÎ¥xXÈFis~š…Ês§§ËW®*·*Åâ³wóhx6É‹Ü¿·§§aízüh›Ìaõ	™»ªñ,uªkØ-%ž¾<ßç¹ZUíUq?Ç•e!+§tEÞ«%†ï#ª|ôë2‹I>ªºíJrW¤ŸÎ©ßãcmUwé¯ý‡ß§öU~usùoÂE¯.Â{|ùïÕØo°¯§êí§*ù•ZÖvù…‡wó×pàvz”;8óãß¿ÀAí¾<^çs–{¤¨|¼¦ç,°±©'
Åy¤ÇéÄcËG«*'©Á¶L›"»ÙÀ'ù·›—³bÿ´øýK6‘þÑŽÔ·£ÌÉ¹W22!AðG;*Å7÷ÍXû­r§i,ü£×¹ìôxƒ?/TQ9úF3ÿ×wû“Wƒ„ÜÙ;äúzå1µÕqGØ¨Bè:púæ›ß¤¦U(šPaz«P?!ASª" µ bEøGë¼¢ßêæº"ýÜ¤¨ê¡\éáoùËË·-OÎDµ.Ð“­×m"ñ\¨}=×±+1¸ÎÆñópT}„°ºô‰á¨}ûãŒ<ªj°uv ·á@÷¥5Ã–wÌU¹å¦üvìò6'äÝë·?WÍDí}™è¥bc«¥sÍEFóõåMº·*;±~/¬Õ(Ï‹×çoÚ|ŸÏ=k¿¬Ú!¤¬6¯ÊL¡¸°Îb[7]úWî°éC;?	¢ÉgŸki»ÁöÒáE£Û …/Ïßíu% “êó©	RÂÚh-{»ôKà¾½G¿~útŒdŸó¢Ü^“®¿åI—®;«6Q½ý-¼xÁ"žvi®¿Ø:—ú¿+ž9LØŽËcŸ)&º÷Z>Ý\%x›ÖLzM€Õþ¶·ïßœžþ¤¦–UŸ¾X1Ö461Î50¾¢ý×VM©õÙ]SBÔ€>4Àëúx\«|Ài¯û'û-¼èùllì·ê«‡žùüª‚ÂUyå¥Nv­ª‡š©„­1ÙÁ¼sŸHåáá5oî4Æzar}ë°ŠÞ°™D_Ÿ½uò&7¼ÌÍÄŒ4,=”‡»•ÿv6¸Ýu›wfÎÓ¼Ñ;±0ý«TP»tÏ3Œ3mƒÈ­$äÔQ¡ LK€¥œp¦„q"£„¥`˜jÅØì
Qüe*!Æ v+)ªèíÇO¿|—–åcÁÂV<ÀAÖ…›˜_³ìã™Móþ—q~=¾á€)?öBÇÓ2+h '!eËÜ­®®BÛ˜*ŽÉ.öÇ˜·êvÜ¡2dÏX7[ÓÏnbØbüõ¤ü54>é¿uñ‡ÿûâdó·*sZx)!n²ÝÞÁêÅ#™_8×jbnc‡£aqÓ¿¶evÎx[£<ÿnº:ðo{)ÿþ¾¬/âÝu&%F˜ñµ˜G‰ ãÛëÅ )ÀzÌ#C­æ£bó¤³Óë„×e°ÿE©áÿ~¶é Ÿ§“™eþŠþë<D+<PÊ¥wœ4÷Ž×Ÿºƒc$ýSn#y‡ÂîÑYµÆ¾që•ÒÒ÷ßCI¿šFZ]'
1Y	óÐ–Ü<|Ù
Ð‡¯cÄFÃìúúz>ïcëýµQôîžà:£Ng„‘t¸¶eêÌq€ &Ðê#+*¸Ñ„úOPe,$$‘H£˜»Iª’ebW%¼®ÿÜpí·âM¸”ì€kÎá&\c²×„´×‹¥ƒëÚp½œº®+öß‡€ë¤”#\?¸6ÖòLÛÚµ†X1È2³q‡¹#Nf 4ÒI"¸ÿ[b€¨âÈo¸ÀeÌ«Þ1ÂÿAé®Tb\ÿ¹áqG»ÆÛOzíÒûÖ®/Êw×øàz9u\Wì¿×)ŽÜ®àzá$Ä³4@6Ÿ/ÒŽ=\dH™FÀè5g‰2µ6b$ Üe™BœRš)¥0Œ¸%`FvÕG=+i?¸ÏûÓÙU,Œ 6¾o¿Oíäågÿˆö¡¶ío¸WãÔÝAòUá³i ây§ÁûeMÏsƒiylÞ‹ˆ}ËÊC÷£ÙçÁ0*Ê>ƒìØå’„Cþ½PžÊä¡NW¨ùà1¸<Æ5º9éÿŽl·Ç¾†Ó•ÓÿAbè)ß/òžŠ5ÁúÓaá;à~8¾Ø??÷âÓ»HótwîW ¤®!2‘‹½q‘!—„od|‚p=Y(&I'üï2@ì}ôÈ×CêËõgêp–‚7Åà÷¼
ˆ+ã·	MUÙ2•ÃIÞ–òŒàõÂoheÜÚ–ù­Ž}Éÿéõuzúêåþ/ !€Õ9½bèBÜî÷Š«%:VºïûCþú¦uÃ¼6Ž‰%Â„´ßÖR¨Æ)ä4ÏTÐÍY¦8Ç”š8â7{¡1ïÿÏ‰üpù1`$ùëÈŸ–é±ž5°ž?ä_cjž²ÙLŒü€ùiq?ÀžÞ!ÿ÷Œüõ­ô„q`T1¡™Ë Ž	'™É b”AhÌpG­ þqHIp¨ô­ÿ‰0 ;äÿS"?wt~Fø.äß¨íu~´üéNód<k`ˆ$È`ª¿f³Ôê7Êú÷½£~{†ûÌòê? ê‡S	vð*7ÍÝòø„ e®ðV
|ì`f C ì:SÐ:BŒ*X¦ýnnvÚf˜ÿÕØQî´ÎØ.Mÿõ0Lc6»“6-/1ÔöGq:úºœŽ]¨¿:i%<›UÉ:j
ú_BÁâÛ®VS­M{±ž¥±jT"¿ºx,¶˜»Þ}³8yYhÿ&Ž‹¡»ñ jjæ¥Ó½qo8Ö£Ypñ÷G~ë›4zî[ÏÆ1Éšÿ8›„·7Ïû¶Ð Ü+3¶·¨Gl³¨×òøífÚ5ÎB¬ÆÄPp²Zša$yZ­äÕ1Âšì]ÍO±—Vútõšst(^‡@
Ü¯ã8Ã>Sá!›W¬J»=~xÁ³ÊŒ&MÄÎßý¶å¾óíÍ·ýi ŠýY]Cì_ÕþTÅÎª+4[HnQjËK«í5Õú<¶3k;^¥¬dô@vµÄäÖèé–ßÝØøoìmÀm’¹y×EÇ«jßŽ@*&¬—[Y*`3b<éÌH 8É Q”X™AË±¡™À¿CÌJ¦½6À%2ãÌ:ß’Û±ýbû;3,¯¯§=eØ<3ß(ÃÄŽ$ËP@Ž6Ø¾€5¶/CæålŸò|Jé–—~·,p;fàpÎÎ¥]®ÃÙiµq­go 8…XÕ›Æ¯jËMãìÄVsöFb«9{#±	\³¶Ü$ÊYGjËK«í5Õú<¶358û6Êò@ÖïŽ›ß77ºï‹¾¿W_la¿M<Érç*¬d5ë£pæ8A.cS‘VÒ“v‰œYAˆi9”0 	áV
‰°Â1±«>ÊÏ'×ù$žÿ*ÙïðŸ‘Ôíæëe¼P"åòÒß¤³ª˜Ml`ÐêêÊÓ3Už¢{v}a=¥žô'³ñÒIþ<º¯áð›'Û³Ù±ZŠÿÇeP2Ûÿa>k~èýá‰=yÞ_½æÊ?Ê@êÕ¸ÿfüy4œz*rn9¥mÏÿ~ûýÀ“=ÿÄ&ÏýX±þ±o¯’ß®\76¡v_¸©|Òó,ø–þ÷‡Å_¦‹Š.—ÖDã¤¿x‰K£œ·:«½iî
¿6íÚôþ[XF/„ ‚¨´„i)ò|TBôlS‡ÿŒªÏØÌcÂ¿ÂeÙp®¶„nÃÈÃ‡¹¸(h;eÅš ~lý Ãpüf¦£n³˜êµ÷`Î‹Åî/,ªnh4|û9} /ÜjÌ'VVƒ8ç¨Ž÷b1ÈAx™ó×øé¹*ÚSo¶OÈÁq^sè8‹QUU©L<»)ðôô—Y…’²Ånû.“r¨ðÍ'S9[ é8ZzÅ‡’RŸ§{I8Á•ëâNO_ûIK $wWZj–+p×e_Õ¤šª=-JÄÛ	nÚ1©æ™£ÔJ­5…`N´õ»Š‚ÖÃhv@F`<Ã*SpÅ|WUê¨ÒS§Je¨Æ›¡XnÏ@½*!é&U¯S%š˜&a;3Øûz?=
ÕÆ™Ì&u8µÍftÔª9µJ€¶rYw”ëÏG¹ä"T™€êzâI”Ë"©€¶†HHTÖÈÌ%-5H;åµv.BÕW¿Ü)Î„æ0S
JFÊ`–Žru”ë¡)W•³ýö½Ûq F 8X;#‹ö»Ö)LQÖ)D×)#u¼í«LB*^ï§âŠa©­75“,ÂÐ}¬Ê’•ß?Éªfí“¬¤LÉJ&Y÷ÆŸçÃË«‘­K£n+g!¸Xy€´d¹²±LbC Tj)=òÿg@ãÁÄZ™qM!D°!î¬s^U·Bël*ot^Ü}ßÙoC½YÝ93;-å^O<@{&¥&¡²ËnÉÏû^ÚðóØšÈ„<æ}Ur"]ˆø"ô&ž¯ô_„>ô_ÔtjKÆ1ï\ÍŠ‹|r\ëËõõõIX5‘	ì·²Ü=Pƒ·ŸåœÂÄ' ®>á‰y¯¶®åAX”ƒŠåXöß¿ýt¯HßBžÉRë­œƒCñ	Ñ,·ä—£|rUå«vûbé¿zØÙ'ƒmhu°MmdKªuäƒ£G@+X3ôZAŒÃPF2ÌC"Hk(BÀãü—ZúÍjA™é¢0ì°Ñ‚dWÅ…•ŽƒJó0	²&A…@p»í_ .>:*Áº¡†>Íc"J7÷ò^EÙmµØ§2ðá:4iM(lÇ„L2 áŒYŠ$p™0Ž2, ig(áÒ#Š³Œ±¿>x÷)ã[Öé>-šAS`¦´wÒõ"wÉðv˜‘â®òCà:Ì°FÆÎ5˜Ù¿Ÿü47u–Ö¨Ê98–D6þ~`)e{ »áŸ®B}•AY{£¾	öGø¶ú¸là°åÙ `;:-½Ž#…Ä9œ¬3nCö<Íˆâ
‡5!éœ‘Æ!3h2êÒ1³¤ÞÌËÇDG™±óxH(§ ~ý?³¼°fp5ñP“È…¹Þs®6bÖbªç§htÍ…Æš5vò"ö Ìw¢îtÓÛ¸,¹ÚeÅ›þ¥õ€d¼Ü‰Òb¯óÛ|ÿãÏ¯úºiËåôž½ŸŠáÕlr•ûö±NöØý÷j8ê/‹sO¼ÿ˜ª•Å¶×Ò'Ø°ô1ˆ·;÷üòÀëáTS±xN¨ÄIynWF7kzPµšOÊ7ä€’3­ ßCä¼«?Wmä»ƒ 0Œ´,|ÂHÅq<H«váRØÅ7÷,¼¸Uq ®Ldåàêì±I=>« eZêõÜÀGÃ,²ái~Œ–Ï~|ÆH6Ü¡¡Iá_geB+Òä iò	ÁõeWqñßÏþÜû	Ÿš#óì—¿ÿñëËó_+&W‡ieÏ~y÷ö§W ?Eó{`i må€ÈíÑpFtÙGøz—mT:.ûi®¢gB@¡2.y&)„1H˜[¤tZYË4ÊlÆ™•Ê"If´’øOsÑ±Ÿ§É~JU_ÂU¸½â†­gù'¡Õ¬žñvØÏåö©³ŸæÚý¹êØÏ‘ØÏ.#ÂñÙOûæ‹5öƒ“¨Lkì'ÉHÒ±Ÿï‹ý|ümð*«máÂ;¾HÆ]ËÕÍÉ¢ÎëÕýÌÆ4€3
¹6Œ#
™1
c•k²LsGUF± íª}ø~’ŸžþËŠb½o0ïŸù[/!½OOä	Ý_á‡ËIþC|bÓ« ï¶‚Ç‰õgE=œûBR´ÀVbwIYz~aä£yî¶É‚•¿õµò8í¯÷<æ³Gþcb9¸xíÅðó…gD½­Å”½˜éŠ×¥†§£¡ïiþØb|xú,”)Ž‘˜4ÅK¿¹V7žõz‹hþ5¹…‚	ã|_'N¨¾P¬tíï#Ží_GS±™¿jªnž÷b¨y™õÍ0,²›Ð|Ú÷K-$>	Ï¢,‡£âgc/²$r^h–û9ËG~†zå3
÷>ïÉÏ…ðõ¿L‚'hX”9ê®†VÇËÐúæ~ÏF¦?~±·Ã·eö¹ž¿¸ù?a±¬N]l	fYãÂËO¼-ÄØ|5.zõ‡‹Q—+ëy9WaRnëS„gâÛ? ç\¾â{ƒd›¹°ÜQä™p°žêQ	Ñjê:NÓÒTßn6’ùÓfxØ>-„ÆcÔ„4Þ¾¬£¾µ¼³JIwp¤}WP›‘	I§<»U„§íxv0¶X)J½¶‰±ÛŒeæ]yèweÌd2Î2a`F·Ê•ÚU¡Cþù;ä¯ƒü¥«M¢;Aõp{•ŠPfo ¿xù]mx·wkyÂŒà S­:œ)Ú$ÎäA™BA´IÿçfÍ½#ÚR¦P9Æ4Î€æeÔ…~%£p¼Ë³
 ÌêpAiôÛÛÒ1ˆŽAt¢ƒ(ÝULlœÄËÙ[?Ží`ïÖòô„RžLÌµNŽp_àF¾©GCžb$ê“ j8¼þßoß7ç”4«Ä‚1FyG@§¹Ê,UÈÌ$43HO
2Â³pª2éQ\X*,W4Ë€ÛyÈáó8îè~x¡¤É2¼à2„Äý<Üï‹×¹ÿbü¿íM?œEˆ‰qª"(gB@uØ,Jøê·‹|6\$Ç¯çTB?q(Ë¾¦=Ï4¦þ‰B§‹8r¤á_!—¸QSâüÚÐOúÃËZ+Åè¦‹¯ \Ž&„YÁaÿYhú.}øå× ÿìv·Œ`¾„Lèæ©m¦AªÇÈ’xqšç4æüJ]¾ôwòÖ,²õÂ":=]ýéôôl4ûþŽ®â?ŽŠæ‹ŸˆIþíæ¤Üý|¶'~ò*ŽÊU«ºðt‚i”	˜ãµP¿G¥ãâ½„èi•ƒiádúÖÛ?¸‡²I-˜rùÆf?4UW¾uzúòã«ÓÓ÷åë~¾Øbªýò›Î½ÎÑ U8_µ?ûL£ûùkØª†mK}Î=ë¿¸,êÝím[óåÉTýá±¦Âwˆh©½ÇºzâA¶r>Ëýk|S«ù+5ÎÇÃÛŒe¦ñ®ˆ×_^Å¬q‹^¶"È?Ýqî®«“VŠ™ÎZ$gœ_O*|ï•áY“úfÍR¦u7ˆ-"ÌÈü™¶¸¼þp^k¯¿4xW^i¶‡uÜ ;Ï¶ê^ÿW5šÙwÖk5œÍ™šLS¢¿VZ6¸«³Éð«*lÝ›;›e¾«º­š=¯# `)²Át}²ßŠ¿MT½í¢-¤½åZ•‚Kuª¤q¯&7WÅééoWv|~þîôôãùËÊ6¯‡ž€‡£¶¿V_[+@²|p/ñ3R¡Ò°ñƒ-Ò6È&GUÈìp~ösS«:‘ËÀKHëV€eRåLÈ—€mf ³ÖQ‚±2šÐbÅ2ìd–áp|U
¥ˆÜaœØewø-û‡ÕÅÀ3A?A¡^èåjQöÜk)ÁŽ7þ2Ÿïn£Ã\¯>û9Úî½Œ¦]ôžy!?žøŸm%{Nîßé•šÛ<­Â$øÊ'$ª,Ÿ}ßöLÛó²_}çt-(NRÉð"-ÿ†úN™´kê»Wþ9X5mcJÊº°Ý .ÄA¹kèï?¿~j\·ßòÁ:;ƒ°Q ÜâÕØè€Ê¬°KQµÔ¦xý›—™ßJ•.br’Z-c‹÷ÑMX«Ç€7“IžJñ–>ù—Ç¿ÌõšÍÊ\Óö—Qž©ÑûšC}K#jÛà.ßŽ¿zõÄ¼Wz’7nxÅ5jnõEÓvÿ5óŸJâÖ@@³yú-nËQqhÒü£ÕùÄüµ„Ú&Îµ‡’&?ÙÉe­vÿ9y;.Ü aíþâBzóÍCS˜›WÅ·sƒy-)ò—ZÛ«xŒ²ÁØ?ä¿¯‚bg>¥d+YoZ„„OyTk5-U£û=[¦¶7¼o¾ikMM=pü6ÝÔ_ÕåŸÛ‘'Kþêo—­™›O­Þ~ã™Ù·úÝ‡EZÚÏ=¾ûÅçï£æäoÏ¾’¹FrŒ3Ï†ßÞÙñçââA¬…Á°ƒóûØÎ›‘%i¯%à[X5÷ÉFøÙÃêbW¸Þ«®šŒRÍŽ+Þ|óä¾ÖkT¶{{–ª„¯5J5Ã¯6ëÑÌÔÚqÊ†ïÿ^¿ÍÙ§µÕ\A¹	3žjwºmã7ÀX¦NÃ³|:ïEíu^&Ùdûè¼Ét6jÐÂÏ_Ýý{ÑðgÿU“vìÌë‡4ýéæµuªáý~ÈÇµÿ¢ÝYMhÙÎoÃçø<wEÓyþd/¯jw\XÞž,«»ÓžÛÉ×zjA]ºúûøË8¿×|/êMàWØä¥ýŠR[-MûUûíÀCLÖ/²áøÅôâ‡P¹*¤GÜ=ÌÅ•{®˜M'ñªpGU×MÃ…³+ãUí… U¿ÚiÊHö¶¯x<ÍÌói/Í/¶Èƒþ]žÀ_Þþæ÷Ëa²2Ú}’-æ{kÇ0”*(îù(åöMÂHåµç7ÓÓÓ_ói¾«¼ú÷o÷Þ¬ŽÄ2<¬MµJÐÙ“Ü	:–žj¸ÉýG¹ªÞ7³Â‰Ê‹¾&Ú5¼Á¤ëWéÜ¹ð9Løå›>½
Â+×®ÿ|²áýØ¸x·`Ox&7û…ÇK*:(L/ÔÄ¾0¹^7f§ôµ«éôîäŠ0Û<%w<±×JE‚;eˆ–Ne˜´ŠsŒ&B˜pÏ!N$ÁaÇ78ÃÒP-§À»ëàÊíA©¿µ˜-Ëßç´ŒGUE¡ôÅ"¢t’Ï>_wÏùûOgþò@öøˆ”ü 5×žð>çÙpîpB¶ÇfRÄzh&dÔ?ÈÕ„ÚŒCBÒ};qxƒ¸’üÁ£3$…ÖŽy8ü0M
9Ì¡?¨"("¼þiD"J;=}õÉïAW®:çP-yuÞögÝÞºIÂ_r“VÓäTñ•N·$îHây®¿>ööÃ›O-‡pÜMVc	UÓ¼8ðÊË‚›.pf` x:¡ŸBÜæ±h¡è¡z`îœ"
Œ”r[RDik4rdM&rXÐLr ¤ä:¸&PXvUbþëüÀ‡ëˆñvb9CLF¸çùA‘=ÇI–“2/ a‹X”y.ðlEF!¸ÈË,÷S x_XFxE\ÆdEhWé_H1Y/¹„€!Ûàí‘Cÿ)KÅî8¼AX5ôàÀÝäX9²ïÜþáÇ*jŽ×Ë˜¸½¶œê"»¥´W!ˆ²I?íÈ´)«¼Õ2n·M©¯ýÛß®Ä_ÂQô¡nMè¨¨ déÂ~µ•E“Ó…-ŽÏµ$.üÙÚØJa§§ÿs­×­Êœ8-jYhP.0ÖéeÑÖ½*òôôjxÕÖk³*¸­lMæQF[Øiá†…š‹muÌC·$ªtf´ *âè¡’n¹RÐ†û˜5ÁWùØ«Íú»<BDº•xqZœR²ŠtÆ_ÕØ$»êÅðÏYD#ô­ˆµªZÔx»’&1€©ÂW*šGY>|ªö£Ä+ƒa3ýJÿçù»ÊËÏ~;[ÚÑ¦2¾–»EE¼¸ü4üìiQSÃ:<‘RŠ¸(ÇÚÉ7)t^ÝÆŠ8Ä¬”b©£ 9Q%¡4eø•ª4´†– XŠ‘ÿo‡žþr’‹‰ÿ4ˆ*gÈôyžŸÉr÷âÂ†£º²vÆ"ÓšjŒîªF'¡®/ŸùÞƒœÑÍƒdQm`3C ¯¯d’‚µAL†B¥i
ûr€ƒåêì]WOEŸ?´~Wƒ™9Ø4O¹M­SGÕ/.NOý`K~/i*oV•±¼ù¶¢ˆEÁ0Ú¯ 7ûærvÉï†YRW—Õ>ïDƒþ|µÕLŽ•žæI.°±¶€ë?ë¤!¡ÖÈ~« Y¸òTrÇßî=Ò#-8#|õ$Êz´GÅÄòÔv+‰;=ÿBŠbK¤±VQƒ„'[‚¤3T:F‘ašdb TZ¦¥5Ô¡PÖlWüÃŸˆŠí	{Xyèûj‹m&käˆî(ô ¸ëÙýµ‹*Æ‘d0-ãóÂ!mU`×ÊA¹LÌáLŒòFk3±ªj¤µ™X-éL¬¦ØD¾T]‹µ_ª±·Ï—ÚM^Ùñ¥Ž/=>¾4øYM‹°g4­N( '€¥fS+¦`°fš	i‰CeÌj…©U^bþ{8÷Tˆ
"*ÃFZ¡B^²lW€è=±àœæžüýü6=‡Ç¼€w{)Ò
3ZÉh^&½Ž’œŸÃ~6ü¼äHÚw8=\PÉÝÇ»?¾DÀ;ñ%|‡¹Š“Œ²šöƒ¸V}QÛVµæ`¹œq!Õ(¹ú˜¢DÛ1Síœ”ƒÙd¼YfÏÕ·j1¼ªŒZ °¬`y×•R·o:õ:I©ˆº·³¶*¿³û­ü~¿UÁö1Ô­Œ!?PI˜Ú.£zä·\ø4K©Š§Å!x;~°,Ë8¶
¤`J‰’d8£%¥VP
 4”b=äiAJôE·8[”®0q§Ü‘d·˜®s)!XåHòÄÀÕ½0ºwuœ£ÎdÎEd³Z•‹$l^Çç(Iƒh‹»ûå.÷[¬ã.w©æ.rùæµä8Ðd˜"b‘4™çk°Ár…8ço ¥v(“#'¡1qk™Q@ñ§æ.).£•ç¾ÛwÁß@;|G‚‘u× ¬zŽ¼¶ãhŽý2«p”<$w©ÌsÈYÚ¦è`Æ‚–ÕÞî…±TYÏ2–Z[Ö±KÍA´ÄXpýh±Üs´Ž±|¿Œåã!Ui‘™šÕ–ËP8#^qçÐÓ!”Ñ”JäéðÀÇ4tÄ2pÜB!ÇH;‘oÂ«ÂX"I˜¨2ß]<»Ìü=ì;î;_á~:b¸Eý¸Õ¥UÖý÷ýìfNTüÂë­2µw$gfù¸»éÜsƒîxnÐvÏçh=a;4xìW’z NRë­-Ç7(ÖÓª¹ÖJ÷Sp0¿ðü]Â/>V–;A"°¬ª0º}[9¬…Ó")cW|Ð.œåMãƒøÅB<dEíø. p”¸bŠIF³A"©ƒ±\k¿OK‚0 †aj¼fJ3—)«ÑÆYÎ ßUU¥CÜ7ú3ÄšM`îÏØžF‹@(é&âr±‰¸¸–U`nö.µ§‚Ä­¤é¨95‡#4–òi"tÂötä¾_“}‡ÜrŠÜÍ-÷áÀ­TÎqmCâ%¡Ö™ô
q¦¨&£h2BÆ\+aWX;†¸‡öŒÂ¹ÛGîò$ÈZ­`Ígb‰½›È½y&·]]yïR{*È½Ô¡·ã'OÍáÈ‚UŸ>r?Í#rwÈ½\þó³#M¡žP9#	ºCJ· Xj( Á¿¡ @1¥¨ÄŠX£ ôBíµ=ÇYÆâ89b ÐÌf„éÐ=¿ÓBF°õýs>Î/mxþ}7ÇÚZ•‡5ç3;²ÀoòY_O¬*l”x©ÆÃ«à\·s˜_vxÒÿé¦oÊ&Ï£×¾7
uÄ¦}ÿŸ¹ÓËYBøs’ôí7óýfSûCØK‹ÈúY(¡4õcz‹žæüày_òñçy²ìxÉ"çíaQßÑò~ÃÃßŒnzj:Íõ0ææ,›Ím~!#lLØ¹y_Ç¤¡ kôž±× "×ó­´Âs*á¯œ
¼B+„ $UÌWÖ ¼ƒŠ×à©ÐŠ¥A 7¦¥ÆY9!‡’	&ñ wÎÎm=UIê­iŸ&!Ø^Q(Í—?Wå°jì½dQHÌªVóHeÚ™Çêçvî·=5IÌÖñ‰ûä´¥ >ê_sæ07î‡¾=´œ€”D^5ˆB« 
†,!ðÿ:3Ád v¹Í;>ñÔøÄ4‘P”v
Æ×í˜H†·
üzZ'ÑÕã˜BBÔ”Pìž¡hn§(áÊ	9”PÈ@ó|aß	¡HÙ|ÈÐÑŠ?¡°—¹ßh›s‰e)šÖl›8 ™¶I®fZP‹”õ*¨¶Èqj%÷²-“H!Î	Â.ƒÂjì8j—øä÷¢é•šøùÝ”QÿýÙÕ
 f7}­t(zîo¨˜MÆý¯¡‚ø>Cœ¼Ð@-åx¸þb?ˆgì$ˆõ\ Ö×òÝë²âVÀÂ“þÛ¢or;í¡¬tïñ~}„/—Ç¾ËX_ÜKq%¡ñ°Ø[»H}VþºH	Â÷Sÿ„=Z~žE¯Èóþeùèûÿ˜]^M£DÏ…>‡ê½ /4‰½÷óY±@ìòyDa¿Á‡o=¡*c^öèÆ¬°½[~pýð&–ƒz,öŒ;6wÚ3  ›ô£u{‰ô£œ÷Axw:SÆ}›2¼òAÂ,ŸZQH(VÊ9=}9¾yýÓû?~®Ê´_K¨dBmË;Æ?ÙŠz'µd~h*Ï ²È'a=Tâb©ó,W-Hf£+«¥Ši¦_¹|¶íÐÌŠTîG¢˜<jŠ	kæÜÜ!ÂÐ(#µ–V!„µv1ä2n…Ñ™#)AÑg¨"iv™¥:*ÙQÉÍÓ)ëuë¨n•…PÉîPIt8•,ßŽ'G›L)OJ,oü`jH¼ÒÙQÃŽþ‰¨!l)ÇÛ™:
ØQÀt
Ø–ÇÒ2ã&ÔYHr’pcˆ°“ÌpÍ¤Ì,rÐh5`›L¬V$ÃÐYÿÌÔ°ž—“Ãd/'ðnHÖÎQ	†¨Ï;ç=;8qÃÔ)—ì¸äå’ÙŸÝqÌïžcÆ¥7ˆˆ^—h¢å1‚NÐâ
­gl” JO	”M3Ì8*Ì5Âf	è tŽ8O99@‹¬‚\c (ÚÁ(ãEÖ4gkõ‹öÐÆxÁéiÙÞS?Õ÷D§°—‘F¤ôŒêy?ÔeŽVºT+F»Í{‰$Ò‹¸´j\„x²,DÎyºê¤{
òÕ†/ß|+BDÆ4”ˆýbÃ““Þ<ÍkˆÞ»T7e“Hã2{¡¾ýPæ¤ož^¯¸ðèÿù¢?e=RÓiK ½Ë™¾˜§ìóTwøù¢ð7r­&¦íjÎBo;£V£iùoœýùÚî©H û~x:YLÌÀ‹Ÿ.YèúêÜØ0W³‰„æ«w=…3e¿„<»žäÓéàj¤Âè.ÃÐü0Æž¦ëâydÐ&ÿ¥èûY÷ÇA;ðåÂŽFÏ{~œñÛEÛi4ôc|¯´'ªÏ"»/ þèYø¸?›Ú’ÿ'^Ó°j:…®Ši/Â‰Fov:ôØÓG»¬xågªˆ_Çz43‹¨ÁxOñìÒ|)½ë|òeêÉì8ÎÔü¿TûÃ…20^.J¯›Øë¾2‹A.º{€S’+Á~£­¼S"dÚFÌ—TõÚ¥L2HWk—r!3¬Œp0ßsôIoÈe°{%ßÈ«]ò
­¾ñ‡	BU‡×åù¿b¥ç¶¥† ºÊ£šä–lè8r_«BUGn¶Ì¿dþ¿öÇôzvy]Ûr?ä~óm_ìÙÙûpG<Ç?%eÔû1»ˆÈvÌ~÷	(ÿ¯ï:ü¿wvþ6ô(p}Œå¹ìBwþõÍçëáø˜=59rùA|nÎ¼b×Æ±†ÓÛ¤UêN‡¨ü/fÓÉ‹l8Ž¼©j<ÞÙË~W³ÙöÈB'Ðëˆ¬†¸š¾m±ú@wH†×’üÞN>W[Ú´Ÿ¼º®ŽÅôà–+2½óU\¥³Nn-³Õ"ß–Œ¿Bb¥qnU7ÝšUrû)ˆÊw~Ed EEÐŠSÊj.ZÅâïç+
U¦Kv«’Ü†/+P^Yë$ýê«›ÄKö¨–xé™*./=÷ŠQÅXhŽ»Eýb‹ü*TÍÇÕoÉ]dûz¦4‘fú@3fÝˆ7Æû[‡mÐ¨Š=ž€ð¿ÊGŒf§§¿º¹²ûVJÊý-ýZ\VpŠWú]¥
*7½(è“ýVm5>Ï]qí_ßPA7Ú*[|zyæoGMÆvê·ž7ã¯Õ-ü¹l’põ·b¾¥ý-Ÿ˜êÃ±>=g~§Õ·›jK/Ê- ¦ªÿXòß¾?ÂBý÷ñ§Çd)gíœü2C¤ˆQÜ)§…3„ˆ} ŒÿÑÍý5œAÄ´"›QM…4žõÃ;zgAï,è÷cA/OÐÑÍÁÌ¿¯»,èd£æ!c„-dÕ‚ŽhsúÞ]è©XÖÛÈ5Xr¶¸SÐ,Opgqï,îÅ½³¸w÷ÎâÞYÜ±¸'è`h‰¿ç¼ø%¾³Äw–øÎßYâ;K|g‰ï,ñß½%~™T°½Ó‘ cÂMFœäR*&4,f&SÜ:JˆŽ	g‰äJî¬ gJ0¼«([g‰ï,ñ%~ÇÒKK;¼™ý4Øë;ÄžC¦bã)’í°ÄÈ6jþ0xHo·b‰—’²†–x9Ø»=9Kü•sëOÎÁ–xo³ÕÏ_[·‰%¾®ÔTK|}¹i–øfrk‰¯;¦TK|]¹‰–øºbÓ-ñµ%×·Ä7ï"Ñß¼ƒ4K|sùI–øÄwv’-ñÍ»H²Ä7Ÿj‰oÞCª%¾yI–øÚâÓ-ñU¢kZâkè`g‰¿ï:w%þ-ñÙ¼3›wfóÎlÞ™Í;³ù½šÍË¯t~yiÇ¦Âúp€ãxÑ÷zGÇ7ÚÂ$5OjÃûXRF~‡2ú¯ÈI%Uéf{%¤ômB]µÌÿ¨¦T
C¹RàLSh­çB9G¨ƒŽH"!ñ¿gTBNv™íãªìÛdyÃUfúÅÔ”–ú"ÏGÁ¤~¡Æft+¦_N~ø%”çé«««Ñ°44öæ6:Ý7ö*Ô0ë¡>VïÌ¦eqöÐI?„+O†Ù,æV|°@éÅýîLH)Å1ÔùÖBK)ˆnOHØ•æ­fˆæáTDóìb„ƒrÕö®·5ÐÎ},!{ä‹wÃl¢&ÃàÚoª]¦#¡‡šjëMÔÁEÚ1…Š‘l¼h™Þ`ðoŠŒ7œäãð$’¹Èmë³è³iÜ0<Ý¶üXâOÊ€7wÂü%oÔ\·O×È•,oUmþÙªb– mmÓîP–‹¨]±++¬z¦ÙÚVüéh·ûH
Ãþ}ªÌ#­–ÓÛ`ss
10~NnùÜë.o‚OupK\ž
ó#,4"Ó™ŸÔ†-ˆ‘ÎR«µå\ÙŒëUØ'¸Æxš‡âÆeÂ)+,H3ŠØ®äƒókƒù…4qÌìd~„ßa~äØÌo±Þžókï¸\½‰jùáŽù=yæ·¾Q?óK+´Ñ1¿ŽùuÌïQ3?(#éÌ­¨ÜBçñ…`h™àD0ƒ¹3X(”–þo˜ VC¦¬rgD#¯·f²c~Gd~@n2?¼¬ì¶ÉüX('¼Æü €kÌÖ™ßb½==æ×B-FÕÙü:æwg£~@æ—Te·c~óë˜ß!Ì/ŸØwîê2?x[ÿ@\×Gí¤LfVKê 0K%¢˜çwƒ†eÆ1†(Tc¬PBa˜¼«ÂñßÂ¹šÅ!›p¾fz1¼ºZ¯™ßc,&)Î§¯¿Ø =Ñ)G˜+ÿÿë‹¡¾èëp"*Ø135Œ†nyÒ§wgVéåHy868¿¿ýÙ²ØÈ–E% [Ù gð›uà£r•
"¯“,k1ÆÁíZì]…Oå Î7ÁÚ`µ§ç`&HÂ9¬˜à|Ä{™àÊÆ“
s±§§Ÿ†öW5½xmG«Ä¡åNbÜO;Ò7å6¡‡lÈ‡°¼ØÛí<¥ƒûri´¶?‚T´€ü§!Ä‹Ze°^0EW<ä$u sÎ2€iÆ!‡Ä	À)ð»¸Â–‡°±ØYÍsšì<XF;<nçÀìí:ØWÿ	oÖò(½EïU<f\P°V˜UÒZGf7 '¬¹|JE Ž‚»+Óp0¾R,ÀýàkÜ0Ž}	ÒëCßö=î—âšê îž!NB„n+9C(#Ny½3$ÁF©€jä tXyM•Iç¿È¨‡@E•Ìx&$“ (Å­ÞUQ½ƒ¾v¡o^“œo¤‹\lwLH“ëÙ"d(I¾Z“\b¯›6WEãZ|ÊÛËQŠ†KÎÊ‘—åæs,¸L‘^.kî—íÃhRlo£õat|ÕÓÇf×…Jp)%Jø“A›šXÄ2C˜VA­a¸ÓÐ«˜j3È8&4Ód—ù)øåƒ'}4Œ™²–Àº†gûôÓEH5Ÿå%ˆªˆ˜Aì3øcéÿŸ©‡[³©—^äýÿ™…ÌR×Ô	¹ú×vP?cò(?Œ¬>vË.Kµì"èìœB!éªaJÖÌ®rgÝ},Ö]Ì¯§ÛŸêc²dÖòW×rM¾jx1]¢Oû¡ñ­à[Žû†c¶~[(ê-ñå ß}Ú>@$Ü´ØèéÎqßŠÚöþ¶ÁšÛ–3b öÚ51Êz[«Ìi“QauNi€HeÄB)hý7Ä¡±3Á×è8ÁýZ—Iªu!Îx¬s±Î	ø’O4æ…¹u3aM,ÌM1¾}“m‡åß–ï_#f?c¹’dÊI‡Iy–!#xH¶íüµÆJú¦ŽyL8êÿ!|?tW©ËËc.¿“]y§¹QpW¿ß¬ay­8þ-XÞ™Ì‡ÉœIÒÀdÞÿïÑÝñ‚ïŒ4\;"¾ð.WµkpÀå£Å‹Ã"XÒšZ½D^=W;€‘³m¶Èzf€C‚Y@È¸•œkÃÉ>e #Ïv0³ñ Ùü¿t–·®ô±‰ ·§ìÆÛyi„|<Š~|°&×ý[Hý!^p=úSkËr?,‹ßÇÚ¶g†Îy0.Fxô/9€êgjb×ùÄR¡†b‰P¸B{¤C_üð¼w+^MýÀý„!ŸüµGÎ³<]ïïÄ‡"µX×[éöy¨<±**ñmËy:éõ"
£úõ=-nú¹æÊûXôî×ÿ¼ssãWÑP{ø¿YÎþ2v èOæOæy:k{;ƒ±„†o¯/"Ü¬çEIü¯å]õ–_¹aQÞõE`!Áõl¤&ËÊËñyŽÕëý&Æ¿€£áåprÆf±ãÀ‹p«ËÛ+$,ž¿|ý·ÿóþÁ¼0áåÜå‰Ö¶Äò¡­JÀÄ:C#®†òAŠIkKÝ ìƒùÛÿôNS¶ci¹;3,ˆ©Ï°–Ü!Œ¨"8®:'¹zwû€v
BÄˆ©[Mü{oç¶	'CMÁf#C…+É˜k£LFS˜ãÃ ÎÉ¨t[±Y‚ýÅÖ!›Ì ;lî°ùOÍet'Ña±›¡¤ØŒÖ­'Ã:Qö«´wWxz˜­Ô„'3C-Aöþù9Ê	<ä¸ÛƒAù‘+kp2ìÏñ‹8‚e;†øÌ¢”‡i¨bIs@#m –8˜eLjÌéÿÏÞ›6·¬i¢ßõ+soÙqLVî‹&b"\¶«¬9^Ô–«»º?\GnxL‚´Jóãof¤HŠ$‚–äb/.[ÞL$ù<ï.RµÿcØZÍ€*|„ø#Ä?}ˆ¯r’_í®|²æ á¡öÑF	Àb5µÝCzÐÞï žáF%.çFz§ÂSq‰t«ŒW/ËÞÈŽÀ^™u½nîwdo„!Ý#{­Hþ'Šì½WÙhÞ5·m‘<Ðæ¹vÆtäõsheœiI€³RZ¯„h¦œ0D	&]
yŠ‘f0‰WF 3sÛŒéï²ìk8ägã9$,çŒ…ƒ:ìáŠ%€©ð°—‚ö|p=õ‡÷ÂD³<hfªŽnW»Lç'bÈß©ëÍ í,€÷bfª*.o‘
“î½ ºP
y#¦‰VMºH¢•j)ØßÜXm\ši/ìÊGaÞm€#Ý•ÈÛ½ûk†l®Ó·ÆØßkÑU|7˜°*?ì¶Ç®ûx¬¿]v'|ó×8+-v‡ZáÒ·±:huÈ€ÿ^c£3õÕMc›¬‹xV¶ ØÝ)°vÁÄUÂ²¹AU¥¯.¬Iÿ¶Ê>yçj¢®C­ c•TË©ªQë±n„šT×È«+Áä“â)9µF m5J@dÌêór³Æè)b1H%B;NCc¯Ô D%˜ÈŽüåQð—Âì-ÐºÙàÍmõJó:ax•¿ Ñy¼&ð¦úñÞá‚í–h®#8ý¡¸Îã59Ð‘9Ða9ï81¥51þÿœUÒ•jF´˜[‘J1EÃ)H‘NñÛ
¹6Èh¬¶µ3ØÍ€~9òŸú~€Õ}³Ë'ÀÖ|2üh3ÿ‘ÁZ³Â(+ü‡7*Š°Üù’0Ñ¡w áíï' ¢EI„ÖÜ‡×-ÔŒû49òÈ}pd>Gæsd>Û˜Û#ÌH76ªR(!ÃZ"­qŠ6¡$0‘Æ¥RX,‰ÂQí¸1†§ˆÿs ý? RÌ¸-Œç½š|½‹6É#ûp1Êc6–‹°àüGˆ¬˜º"…t©ISþÂs—iu‘<¹	,%wÃ41”åYw’ÎF¦8OÓÛ)Mëá`Ñg¦ˆZ¹ÉfC›ÌòYÛÐ^e}{â¿z7ñbæÓO>)O BÀ„%×³Ñå<ãÿ9ûðÊßûN…©\‡Eð¿È]2rroM^$y.º¡á”šzÖ5žñ ~2åÚyÁa+½(5
9'Y¬)£`Â&¹]b‚‹)Ü~‚¿,½‹ƒš´nnnúaâ‘Ñí6Yá{u¬0ßHÙ8=LWúU¸Ü¨”QÑ4ˆÃ…x zŸÖS!j÷nMÖ
CGå‚ìKÌ˜{õ¤*^^M,Q®"ˆ£Ù1ü˜íOmÀõñ‚"dÍ6$òÇˆ%)…+ALêR†¨Å˜)µ$ZâTyÔ¦Ê0+…â€‘”‚´dÛjÁï~À¯Œ7¡+ñ&T7Ç0r*	Y?ÚøŸÐ“¹öþ˜"¢añàû‚‡ŒîMòP`¶|| ´:ù±@‹vd»¶T*`æÈ¤˜cG%i*¶.ÕØ ‘FHB"SlLEf)±Ò¥ˆ#˜Á¬Â8_ÍJë;^µ¾c"ÙæèAéZ³¹ÐGzÍXãØƒšíþ¶žÊµ·»–ÛÊÙýD0x¢èWç~ÌõÇ€Šs{rûõÁÒŒqÛ|R¢Ø¤RAÅcš:–ÚY%	ùB„œ;F±ÁB:ÀSŒ3å<»­pýïLÌW!€ÂùÇ×+NÜt’]5åJ×lEzÝF/nHtóÂÕÄÎOýËbäër]¥³™Ç•¤?¾.RÁBE»ð#÷—3³ˆ³³Q®R—˜Ì>\¨Ú|T¨<ü^ˆ=£AÂS™µª)Œ‡:vK(!nâ¢Ï°7ßrO6¼žíëŒÝ¾{»\Å¢pp+8¸ïžÚØ-½<3êÂ\f-‘O,¢þ73šVW¶+<¥¿yÚý ‰`5kÕñ*9O(ëÊ:
ÒÆÔ)å57…¥AÄ	šbCÆKÍ¬ÒŽ*§¢©ŽJˆQÂC›M¥†ÓmjÞâ:†¸Ò¥Å×]Z”l.F(k.-Î8\…¸F¥[7ë?DvwE[›/Ñþ(é>ØŸxàõ*TòncyaJ’ÊÔrj¤{Í¸Tq‹R¥ŒàþWi¨g^M´–+€Õ”o+ŸvÊ¦a»wÛc—ÁP¬—ð@|s•.ÂYJ¬Nw@É‡ûè‚üÇÕí¤BWÓµÙ¥Äûƒ4ÁÇª“³>68Ã³-ñÍ(GýŽ z>œ]^*=tMQÝ2/7of4… ‚–¥a¸^iÒAÏé3©AÚ:j( .Å€.ISJ9š -@ùr6Í µ°B­ÂqW]p³)=ˆ>=n1eì×ÀŸëÍ»ƒ”®2=›¾H®²±Kg~ÌÑW7
é/…-KÃ0þ-žü\Žôs¬|µ4­~ò&ÏýËÄIû?B0›…>Ý¹bÑCy0çÖzšf'ñæðÆ’ÜO¬,ƒ6Ì²¯¡¼–?›/¯Âü¢"ég>½Š#Î!»¨Ä6MB…²,w'Adb†*Ï£Ì¼Ÿ|¾O?Á´@½0½¢|—¿¥¸Úÿ«|’Sˆ¸Âè+ï}áæ¼L°‡ñe §e §5ª«²˜bˆúèñ7÷¶*¼Ùö»i9öÏ²¨É7.ÅééÙhä&å»«pVÕäZP‚ÅcVuïn,ðôô£þ—3•MÇkòŒ…ÜMâvóÙ(½ñÍÖÎúÙÛ´O+a» ¿zm$üð0TÅßPF¨ä;çëi`í¾ó¶XÅÖ'ÎÕ9H¿“/y±MvíÏ8[“ÂšnTP6 ÑúÈËÃìGÆÊ)´OLÓæ=m›y°-EhRª¤ õÝ¡0Ús3g…öª2•BŒ1#Zjí”ñŒÍ«ÀJh°Õƒ]>Ðœ|…¸¦¡'B»˜–îù¶.™Oº´´”X§†ESµI9À\r [ç~EçaR/Ê†mEh”3ÐÄ‹CÓ4ñïn<´ð!+¬”«Ô˜Àð-…áf`…À`H<aYJ,µã˜r‚½¸ÁzèÁ	Ìw/›²i:èòAQÊ²õ¼ÚµtWd®‚”òªÅÝ;`L:Tyÿ{0ªÞ«—mOXäŸ@@ThÝÜÙ?BÐ8­øk K	…)ì¸´Œ •	\
pÊV~PíoÓþ/?Š#)†˜KS“n¡-÷ç<yõ2ñ›sêÏpð…XÖó7ï“b·ŸÅåý§§þö%¥7j“A]T½ Ô…&ª…&G]÷nØr¸,=Yº0Q3¯@N‚þ½rû ÀŽÕ££*[vØŒuÀ¯˜—Žˆ¥»æjK¢U^ÔŽø8v£‹‹wqŠÏ·ÕöàT‰d«¶f‰¤n<Á!åxµ#å«©œÔNO­7ßº½›¶Á±þþüÝ7ÔÙ»iŸs½éÂtP/š·³0/¾ÂGýâhª<íçO^KZíƒnX;Jªøÿ÷®.ýÄ H{LÐdÞA¬ yÂ(5H­âP:
8¶ŽÒTâThÏî£Z"K-×Ò0Ì¹³ˆÐ`åPc,„:Ð“  È×HÍÙ^é`«Ù”‰•Dw^·!QÍsv¾iŸ uèÞ|q: !Ü®Ñc¡ÕÃî!AèÀÍ‹žYç¸6®dœ¢P„3@ùš2cm°DQ*Sˆ5pÎ¦2Ø"Š…#´˜”"f	¶Gz
 „VìX…$¶ô¬Ý¤±CjAóMûd@hï²xMæ¨í>è€Û ·s z÷úåù:ùý…‘:±›^ë›["fëÑ(á“ÌQÅ)À€©T†z¢«	Ô„˜Ôk@Äa9&!ýDUÛ€&<Nô=Ü…š„Ìð‰ÏÂÉ¯y•\¼þçvÀi&çàeD®‹·Uôg¦Ùä6ž«VûWÓëmõP·¤ën†6'ÛAJ d+ç=ñ ÁÐÒ‰ïÿ%ê†^Üm²^Ü-½bŸô‹-VÓqñý#ÆÊ¼[ú{8òa>í#ÿþºì}´s Ä>G{˜ÒééËó³Š ÊÊŠk_e£QÇ"ß„ßw,óÝë³ßjÔ÷\¹çé`˜ï;‹HçÎjT;]Ù=£n<žëI~ö8#UÏµe„ö ìé´öó¬ž=ÆˆìEðWµÿPŸ4ºÇ›MïåãI¸¡öå9ntõÌo£wÄZ~úrÔ½eh<ÀØãU“Ë§”SmnùýÝÙ¯¯¾ >êÓzwç×è,Xž×^Þ‚Úýû›Og?TÅ!õ+{B4l¬GQ]É¸^TÕíHÕ”W»„ò. ØX¸ ìuÂw2µÓºÌÏÏßßªüª:àj4u—5Ö¿ÃJÇ½0æd<qþÏMÏyM(vîÝÉthŸýþá/o_^¼­ø¸LøˆÙâ#†dý+ëLqùðùÝû=’Íä<I££° ¥Ó"%Ä1……F(È§Hœ¢Ð´›;©•Q Q˜Uœæ™S,…ÙÖÅ;<å²þÑ0¬Rí f¹K¢´`ì
Ñí_ï'ÉÙÂ´å¯±'*¤/_åæ±î1È+h=ïÕ Ds¾yþj8ðW-”£,¤¼…×y›m_ÕÁÔ_ü«gž™{I¡¹õ ¿Ž¡êq>Æ®Œ1ó?¬ÎÆ¿¼ÁÔÿâftwÇêÓÊŠŒ¼I6ÍL6Ì“gî²Ÿ¼ýüùüù÷·¾…I6Œ>@œm®rŒˆ«v7ŒY?À˜×«z¦R¸do÷¦ÂáðíU±Ú‹ÓÑM¶1º½Œ›þô4L´*±MÖ`"a§§¯ß\TI¬Œ‹_•øþu•ÂP)1¾‘Êç¬ˆï£‹ìè°a¥›¯døo|ê‰Èû—¯¾¼M;dƒgïß¡ó¬zíæð4xCóhcÔ˜r+¹6–0E@Š!
B#Œ¬Ô’CkÑFQ8gòPß%…’ãmêGÞðCòÈÖxƒ`d[CrÁá:o€b•7Ì]3ûñ†Ñ"ÞÐe´È‘7|ÞÐ]Ë±)GÞðwâÍt°±)³[ˆpÎP¦5tn´DÆ‘”Pf“©v’@D˜…šPî˜ Ðmi
GÞð#òú"­Ù¶$Ü#"×º*{;„½¡E€Ïcãísj/Î‘7<ÞÐ]ðÑ!EGÞðØxƒ›ö^¸hOBÐNYOªQd2ÀPŠ$WRŠ¹8D=³†1kwB3¤8MS+8Ø„­D0åN‰m–ÿ,~:y6üæ&‹^*kØNü2øíèï„€]™Ãƒç9âQ1ÀJ™ièo¡’×ÙµŒ’~í’‹ØŠúä™—ò|1…~ ©²›" Ën—u}:z,ØAý°‹&îD»Û,TÞ	ÌA‹:Dá?£Ë@@ò©¾/-Æ-~¢¬ôON>¯Ž•_Å¦#žEäÙµ»	C¤êÚKT“;SìŸ _Å…½ã¦AüIà~ÿ²Yžä%;é'Î%Ÿ~{•@€i€½pS˜Ì¯g^'Ï^õ`úßÉÿ«®Çÿ3y7˜=¯Áº©gKùÁCÑF~_ÛQ^ÝÔ
‘{AgnäØÿ­–x3¶œë"8¤VÜòÃë…/¨¦É?[gÏ‹h³³ÏáBÚSŽû²/¹ RÂ6ióóÓ ´a¥~.ÈÿOŠÝÙ]ÉºÃÉS!´º+ò&¡á›®„¤M7"ÚèÆ·®ÙõUÑ¹”1¿;\”RbÃ)ïj¸çñÌ­XQYWjY ‡€bQúÇPU)æ%¡ÿ6³²ŠíLqeÈÑÈOŸ:ü6>}:=ÝûïÕÌ{*ÊóÿÓµÈß.^ÿÚµÌówÝK<==óÔ¦Á6÷½ê|½^ù¿ýóÍV}UELîI­8ç›K|óés×þáåû7]Ë¼øÏ¯:–ùúí«³×]Ë|÷ïUøP2¼.ñ «Yko6Zµ5›
|óÇÝË¬
Àn,ó÷óUÞô¥¿=ûðÛÇŽ§ùöì¼c‰gço^u¿‘Î.^èXdõ$›¾¡þÙñßaÔµÄÎwú»]ŸÁïºÞ“ï«HJÓýþ÷®àÛ~_ÁH›O²ëíýáåùçªI6–Ù9|W©Ñ-¾éú“	"ñ!dž¿üô²Â?Ñ\ðïª8~Ó­ùñüÍ‡óßÏ»ÇçL¸‘&^JôÔõíË³õ‘âÆwgo>|þrñÇ¯Þ|n%àãÇž½isçë—´ºím«ÛÞüy~ö©Õ<ý&øòùåïmný€[Íõüåë×gZøùÕù—¾ysþòÝÙ¿7}ÚîÏó®OøO]Cù§OgàÛÈev­ìVO±©1è"xîº6G\|ì\âùoU¾›‹OUºsã9^¼ý­ë]ù¹{]âó»‹®ßÎçÊ}Ù\äŸ];|ªH‰o,ñOD»”X:F«D6yÝ¥ÈÂ3_E7Z	þäÌlR)»ÑÁ¹ýÇ‡³*Øà­«‘dƒÝ­ê!e­$Ë«4ë¶r±U«QÏs'ù³û«Â›Â@,ùclcû‚Ýók ð¿²‘ev:ÜYs‘§§¿»‘›¨iVØ²éîbéª¢’
§m¥Ÿô^ˆÈÅÕÌ–gÕÙòõRàÕTù…]kD-Ç-Ud~ƒÊý0ãŸvÈB}X[ÖÅÛ—ëV½Ok¶m«’uö14CVK^¸a>%ñÒ¬pÄ6ŠÛ½Îû­üïÍ]Ô-ÜÓ­ÜÏ|ÁM}½-|¹­Ü;Ý7-L[Í)dúÕš^5ÄÞÆØZqÃçÁµ§w™QÕmu	×ŽÓ¬[##ó‹5ÌTu¦šŸ‡ëëÐ;$´þd}È->:©Sa ’9-ÃH"€…6…JKŽ-â)”þïJ‰3ÅRgEê´õÿ”ÂrÂä¶¨ÐwÙMoâÚbÄRŽEòÌÄ”ç»ÛÅ]ZÜÆ(ÑášÐ(¨Ÿ¼•-M(ä"+OÖoŸ„FX¡‡clº˜Ì4¹&ñÂÜMbøh=üàdžËÆ.¦§]èï#0ƒ¬¸v}¨|6HšG!¿xæ‹Á–ÿ€Rn¹¦í/Þ\}œ´V€‚3ì5„¥VËBÒZe çSë…mÝÛ¹¡ŸJG£.2A¬ÊÞÉ ¸]gåÅ¦ß©FÅÓªI±MsHëRä‡ÝŽÔFÒv{ÕjˆZ¼ÙJ9µOøî•ºîúE¿Ê®Ã¡›{B£n¼ž;èŠ@ÌhtùÅÅ»
}`©;à.ŒÌbæ¿ÏFÿ=¨~Ô¥Ï¡Åv¯¸åâÖŸ$ÕÔ+Ú!» gV«Ã¤Ê[=(§þŒžîÞ¯=¿‰nnnzáï‹—ýîóý¯hu¼á”º5/P0•€q¡¤r 3šc¥dj$Ô)’˜H @MdPi¸ žÙy:'Ôí‡ n÷j€ OÀ¶P7(ðuC+%œ¹hLSARE¦Í(÷(üÑ`E: miÛ¢m¢†È‘¶iÛ‘¶uKÛšWjaŒ¤Ìò”`Øk §oˆ81 PZ,&DbTiâçˆt*µøHÛ~Ú†Vzo”g7·Z"£uÚ†‘[¶¸±®hÛ£¨ÂÒÆâvPêÖ]ù•£Åí‰Q·GQÆåHÝŽÔíïHÝÎý³´î„Ù'ó&4$”É¸û´=GøBòÆBŒlÚ¤=Lmh=1¦ÆRª8G˜»ÔXÉ45L›¥BQg§)@pÿ	”Ðl!o¯Â=Qš¸ëlê’ W±xËÄ)sUT¢¹­¨¥Vj^Ï¯þTy¾°\oê¼ÌPufYf`oKcæI6:QÉÈMo²É×ƒ—Œ	oyW½N)c2pŸQâb*ñæÚø’@±Ú™	„V:#ÿ²ê¥°¢¡îUlŸ§B•:èŠ\X*d_–Ä„hÕ‰rñ%ìîCÙ'Uas‹P)§Áó@fŸš!˜¨£ÌÚ‘„¿™Ñ´eC¬á[ºôV^zþñ"DvW¡{½@Ã"ìéíà“«Ýï\y®€omr÷ÒÃ[/¶0¦à1b8Ç2{.Þ¬àÔZ)fŒÂ)@ÆeqJ5´BYô‹qÈÁ˜`Ç%•Å 5jÙÚò#V7Àê¢¶^m(J…@p³/
ŒX­í#K`-¨ïŒ*ÁšÒ^¹Ož(·*tÈÅƒï¾þ£€ì€àK«k‚ïæ“áô#ÈAöé‚lhR|JÞ³ö.ô¿ÂõÁ×RŒˆ§ñ©4TÓ4´¾3©T;«,—Žac¼r,‚Ûƒ§–"‚¨QŽ™³ZÁ7€o^}% ¾ZÕ]`"Ùæ ^±\‹â•Á ±Œ¾þ½×ks‡¾ö*6Ð“Cåö^…"–²rAöEká]µÎ uereM´nvÄtâµ[(þXQüÉôÅûÏç½‹‹w{ôŒ!åiÃÂïZË¤dŠªSeU*8{À¥Ìÿk€q-ÆP`˜æqë°ÄÊn8ðÏ2w½­Q¢Oè}µØ†¿g×ã¡»ŽA`s¿ÉËó³PÚ}q÷aÓÐ{%OÖœMq”Á4?)a7ÉÆ!Û:–F'ÿü•VèÄl½Þ9A›ýŽV@™P°žI=¡ªÉóÉ…¦"¤GŸ’JÜQÍ¦ØÛ}ýl‹¶aBknÓÍ}EªÊM¯<^¥¬{‡Æ©È÷|Çu<·á)÷ÇŠ}Îí‹wNÝ®ŸÚ	ö…‘:§¶ÿbçµî€`M•"RÕ?Í…KL)	=?5—ÄI&R„D
ÆX„&VS  VèÔ9f­ä¶œæçþy÷×Ôßá1ÂQ;Ëƒ¦ôqìF¶ê4þÊÒÔ¯Cìy‘\.¯’"xÌc¨?.Ä‹¥³QÙl+Œ¡ŒqyçäÆi^†~£$bKË“gáºüöÚ«h“Ûw 1È‹áœ’N’’plÏï~á5ºìù¯1æùÐŸ˜Ïž/&Ç¿™¦áž[„&_'Eˆ›¿/Ä¥ƒ‘?ˆoËYFåÐÃV˜\˜€W	‹ÍñK¹Fó“ü$Ï‚ÀØG,àÏâG,ˆ£_g“ ƒzTŒ}Îl¢ÆÅ_‹iA«ô«©ˆæ÷§S¹ûey¿o]ƒÌ«z¦?ùf,~‡²Hƒ^Ç‡r¹a9Ä„Šú£Å{áËêíü¦úÅGZîæ0—x"øÔ’ê¯Ç¾àG%‡¢5øÅiV Ÿ¨WÃ¨åUŽRÙÙOæÒ*VJª}”×íYxûUõŽÚÙ‡m&·ãiÖÏ³>ìÃgÏŸ1¢;5µ{÷„º¦þá¾@ÿ¿`_°ž€hó·wxÍI§þtQ6ÜÚÜòû»³__}A}Ô§õîöèÓlY—nh±¦[î®³ ‡4ýÊÂ</gÓì]V4ªéÄÐ2™Œ²îÌ1ÚÒ­œ~Ý\þ¼¨¹8EN¦Cûì÷|yûòâmÕç6[|!¬ï¹'ÄÎ‰1È¥ªAN®äbjF+ŠS*cÚÿD„}mM!«€	­8‘„ h1XqdçGv¾;çðÕÄˆØÊÎ™¸ÏÎWS‚;—¨¶'¨’Î¿©#;_[#;?$;_=Ê¿;_õoÍÎq+ª}dçß×·ydçGvþ4ØyšÄ”j””znCÀh#ŒÖÚÎF@ã K‹Ð)DÄB.GÎrc°åTi -¤ôÈÎì|/v.&ëì\ò-Ý¯… ÜgçtÝv.Qí(éJ6:ÿ¦Žì|m=Žìüì|õ(ÿ^ì|}Ô¿5;GìÈÎd;ï0àÈÎì¼3v‰Uû¤ ä<h²Y@¢–Ë”Z.‘Óœð”"ÉˆÑØqÍü[l­4a¢Sm=†ê˜°YŽ´lS0p=t/’ËØ‰e˜Dj^0HÃ—ƒ‘ÛNÆ_Žæ$>Š(Še“@9=½,Yzà¤þšP•(,d¤º¡NýÈúk¦Ù‰v‘çjÿð'Cuë‡öt7\4¹i²¨rTÛŠ]Œƒ7Êæ‘‹r3WE0Ô]áª”R€øJð"Åõ3
Šùõâ.ëá^|t±lbWy7Ðå·E^;‰€îGRï/Å¾laLÚ‡1ÆùT¤„Ã¡Öá…ž¾Vî:ùMµS.èÖHìoÙäkM”)ï¨_Tf~ÇYíÎ¦ËwÜ1ð&w¾Ë.ïþ á÷-î¿¸ÍãÃì²ÙÝïgÃéà³?×[Ü6ºšoîÝæÿúGu²ÂÊ½ç¿WçY½câšo–ò¦‹Aloz«‡·4‰½wß›—5;ê¬ÝúùUÃo¢¼ï×-ïûP#;eÛ¯- ›Ü]ÕhÔh ¶*p0ºlº#>œ­w&,ÁBõ)|¢í£èþ2Ë'¿èÁ(õa4¡‡PJêçW….K×Õó±î5Ï÷péÒ	¹»]eïîÃt][©WîÖo`îhúù7ûÎ–¨Fã3¢â†šiuFUhD:Toºšo¨	¦7É×«UÀnòkÜ]æ-Î+¯yõòRá¿ÙKw~ií¤wv¯¨p]Ïé>?˜yCÝ™[%-€`× Ç”æ@ ›j8†Z*B™ÚkÐF¦™V,¥Ôhê¶˜½W£è?:;ÿF¢NëÿÂåÓå!/ü(Ÿi¿Šy=oÖ\BµßLÿËŸG½…*­´ßªp$Å’Àã  Ÿßwâ•7ÿïrÄ^¥VÓÄ+–ÙMáüq*¿M®Õh0ž0°Ü»µh×µhFæ/|-ÿS(W 1’,7×Â¡pÝ$Àr~½¸ßzq§5pìx-úúG|õÏÊ¿/éÔÁ>2‰~šç¤^ïïÿÙ´>ûªÖ8ÄÛµS­ÃtŠ*¬;Hé×jÇ<—åÿßB•}º=Á­ã>º“únPÕ–¹OëTú½“X án‰uHøªÄóÝ«	ûÍ3ŠÌ†Ã™?ÇêÐ‡Õ;¿œí.iì	^Ua¥m»{—lD˜:bëxÖ¶ŠßË…öèQ{h5]{e^ßŽTMyõ]3jzuzúëàò¬F}†-gLû3d£Â³×²Ybó3$~¶ÑôxYµ6ÔuKÛz©ç¤úXðÆ·*¿
›«­§ÊcØÐªº•SPe‘sÈ:%µ§Ý2ÅÔ8•j*´µØalˆ§è héÙ:5Ôij¢Tjã¶°ðÈP“+ÿ¼½ wÙÂåª(÷|!ý_gytC•þ¯©›KH
y*zé~-Bð×È¸¼Ÿü¿¦^ÐIáòº‡É¥g›1+T¹ºyö¼¬õ"Ôê¸qþÿßrp{å•MòpÏIx÷.Ÿö“ä÷rvéŠ(_;ûtÃÌr7ýòòÕ«7?…„ŸW©a]j—1ýû!úÉ†¹ù_1É¼ªÌ\;0W‹ñ’gžJ'Fóç'7W~:›Œ¢›î«»Ž¹"6-®L¸¿Ð6ÊûûIaËó×]¹É hzâ×*Ž]Ö?qöÎî}»*ƒ­æ„ÄÝ¬ƒ F)]¯AÂ–ýx„y¤Ž²6Á^ü7„Y=åò`¤µúÑfuöÕMäÂÛH5)¦šÅ\«4‰JUbýá«åÕ>½÷¡ {××âlÞ~~}ÏM³l˜?"X….¥FB“B«UhbJBPZÊSaI
s.ÅÈ!)a
üoœPi‡YŠ4Ûº+ÌAÈŸjÃÁÈƒÈú†.ÂDŠGØŽµŒ~ŒL<LŠß,°)4ºZ’S È¼Àä‰º?hyÝµ
ðbRq#$¹•±µVŒ­6W™?ÖúÉÙ4„EŸ”¨W>S@®P²2/Ëc=r$ .Az ¬„?‡®ôËÁÏHŠZ¡Ï÷ýÐ]-è=ð(èŸáÃÞ—6Hþì?­Îñ®Ø€õöséÖBÇû¢ñ{˜¿á–/°Ê#æ/:=}ŸMvÛ#@_Vn¡‡ïøôp¤k§n>÷vÃ¿:ï½Ë.Ï®ƒÖÖGCœw»(V§JSÎ¼žÏH9DRL¬ÄRe)PÄ… SÀ†#EL·(µnO&‹ËÔÌWYï|0Ì¦É3ÿ°Ïvá—Ò†×]À}|ø €‡ÈÕÉH«¦ªàþž9Vî´ ¸pe+Öò^qì@1âØCŽÏÂKYžÄÉÝ$Ê±¿oÙ,OðÄz<ŸLo“âç÷'–xßË¿	_:Ý‡YëõÿéU€Œ‘U^J¸%8í§Ù$Z+ÂùyX¦36ãþ ÛÆe¨§dµšÿá„mä2DÊµf˜	±\f‹Œìæ2+Û¾÷oÚÔ³÷T’µÌxå1÷vÐqz×–°ëXýHªü8UWßã.a[Ž¨š’ëxs¶Ž°Ÿ7Ç@yÖÇuÝ2óËýô¿à>BµoûR@1i§þ`+w…1ÏÞŸüôù‹wÈ¨›~µKFÝhè5ßSHsêrÏÄÕÖ\²í»ˆã‰óÆ²Á‰Ø™é¦ü¨/
 ºe"rœ¦Î!RÿœŠ È©”jàñIg •ˆ-˜£1Oƒ°Ò)ÙÖM«Ý{Œèùãhž­žÍ¦ãÙ4ØIÆ×Ãì2Ÿ/N®S®äýx¥#Î].hrîÁ¤Pî=Ï*Ç(8¿ÛÎŒg-úvÎ–î=ÕÉò“Ù4öé'Itá”ÿœÊJù÷ÀÿÅÉõ`4¸V/’kõWüoˆËÉü`O†fuçè	óßÍã$N4÷ªè©®–iXœFIòâg’ªèåHü’øg,Ïý5gyÁU´D3ý?'¶WÐ¼ÈË’g®ÙOòqp³çWÎMóçÎÕ$¨ÍÕ Cbµ1ã|¥3J½¶d«Ÿì‘ªµ j¡kÁT­\ú*®VÙádõM‚¬•¢ˆ­Õ6‚:Ôæ÷Þêc4²l r€÷ïÿýÀŸ002Z[ä$v¦Ö-ÆQiç"©)âØ)âFbM—*jéü\½w×™_ï÷j<ö(öïj8«eÚð‹ÖÔ¨º€v…¸<âÁdv]D0GãÄV /ž`Ã\“g~&!”Â\©Ñ ¿îŸ!ÓóÏCœÕÄsÈI 	ßâ#†ˆí’‚CÄ$ó×ŽNVæTº£áa½£t¢Â5f:›¸²nÎÜŠr„©ám>È‹G_û™L¦/ü_îEÁª<à.q õqX_$­‹è!Ö¬/Šeë'õ‚ªËOðæmì.Œ·¶»„ïfßÈÙòÝuß^æ#ÇíVÖ˜/××ßšÚT·C†_—Ö”ÕŠq·};ÌÊz,Ô¦[ûÉá"IÃgzþþõË NÚ¦Šs§†œSÃÅ¡ž &Š2O§HÈç‘ pr+KIŠ8Q©¤pd[¨hmê Ûf&²„ˆk5øRXª3È
kª LË3{ïÂFM^g×þîäå¥!šÏ‚øüyiW	ÃôOÞ„Í8lAròeÓEalä%…Ø˜}Æ?Uú¢´N¨‚çW¶…Üí6Ÿºëäk(¼2|‘¼ä&K<Ta§*Êö’ž
-×|‘¸©yh‚C«Kp8½ZWBe€¿~¥P `¨^ù·rä8­|K¸µÁ",zÉUé‹·×9Ë	BŸª3©¾GgÅUß‰ÓÖs5¾¶ª)-»»'Œ^Kƒ'üQYÖ‘5$DÅ½246k]Î¿û€SE¤lFWÈ0-…"ØŒ¬!–—
“BÿÜ,å
KÉRcSpš:J™A¤•28­
÷¹›9Fæ‰_2ó5Ô#ö|È©|0Üé'ºKdºiLjÙ  H;	Æ••¡b nÈŸÉCdËu2Å¬œ°¾e"}9²2˜,²wy‘Ò¹+ê€9%ÛRÚïíŠÝ™í+FŠúpœnÎ*á|­³-qQËDëõ¶½7Ç^Ü‚½bó=½"q‹f·í3Ù+–dïž·˜óV¤¦˜Öééb^Uì¦º¸ÛBæ'§ÆEèê¼¿vÕïvû›=rŠk×Œí¦[}³²5·~7W_öà)1‡B´3ûàÉ1²iÛÇB€”DBð ¡µPÎKÒ‚¥‚ÑÔjn€Ñ6þ˜H+R‹ñÿ’n1=äÁ’{ªÂ$].ýÂ	ÄT`¼ %Á« 	$—« Y/ír+ìÜ”O8Ûw‰o¹T{*wå€ÚàÐ< ÐvÚØô´	´íO”T+FqÊ1LµÐ„j¤5*—JK‘WWu‚€Œ”kD•5„aÆ0VG }( -ëÐµ¬RMqîíZViÐDÉš&Z«Ly=ôxT)¥-Ë˜_yegbgèpÛyj)Äò®NÚcœ—Ýcl·í	»c'ê:ï½
XÔ^á"õÏ3?±¤Íºˆë”	©R¨eê8J9 þ3MtŠ’ÔA­€¡JSj9c*5v %^Í†I¶FÆÚ!Ú¬&Áq\\¼¼‹ð¹
„àþËš²"t–áxs§ÙÉ75Ø¢ŒD¸÷Û@yySw=úöc }6òX\¾ÈpÈ†1cˆà—V“Ëè…ÏO®gù4ô…7ô àz·Mv[x)Y·ðR²¥rµ•4ò·/ÇØ!IdMönz½°{åF|ŠÐ¹wí«±7Dz×ß­D†žÆ)UÔFÀÕ¾å¥çÛ$«ê\z Ûk½*õuÝ—ïü÷jË¿W_ÝÔýªŽ×k)ÑÆïùxá†uc6…Î¤H(§]Š-Ð
¨©µZaä˜ÁFÆ P§V î˜ÂFA¨´ö8…1:ÂÐã¡ÒŽJÖí¨t[ù:‚$\‡!´C¬^úÖ†ƒwç}ÂðÄ:…§Ý«´?l	ØN³{pØªq¾=…óg‡†³=Œ“FZË(ÑÂ„”%4%˜9N¹T( “Ðo )¬W³R”Æc„ #Æº-‚øgßÎJk%^¯'·¹ý‹æ‡ÓªvnÐ§g{6„h¾B@mSõ±AÙ£2$¡lñJƒq³mÊ‹§'¼|Û53rG)·J)Ž=h¥RAe¥@¤4•©„LkœB.¸å)LC1‘Ðö3I,'Äè-€U,|YlRAÆá1Cømo5élíHž=au–ë~h•{Ë],(RTåQ:Ô ™‹Œ sríwBž,\Ì!ˆ¸
•ÑýÝ*	é8Á7ç&†Dáù*Ì{òžyoáúZ+ŠA1X-`Æ) Ëñ)œ#X/¿änv½°ÉzÅöj–bòhàfŸà“Íë°7¨p Ú4 Zþ,ªrm«ÓPî®RÔýC¦–Ü:É([åûÔìç†Xüy«n»^`e"Ê±ÉJ÷Twùj-7–bç–™°Ì+¾’a" ×¢Ó$5€ GDŠ°fÚ(˜WˆR¼-òõH!º£…i–±5Ó,y›)C«º,çr¥·¡ðªqK
±sÛ=Qj±·&[{}ö§h/=ö¡(GÃê T¤Ö¸]Qò”(J‡Ñ¸GŠr¤(Õ__{³¼PÊJRšB)$ÔÉT"k(J%N† aK9–
¥XTP9„6)q)gGŠrpŠÍí5s»$h;EYÍÂáD`´båX(×{Q”{¦ä#EÙ½>GŠ²ÃÎ~hŠÒ½}…¢àV|ã(J—ÁÌGŠòQ”ÜõÎßÿ6îÑ§–Ìë¨ð{_¡ÿð¼ÂSªêS•rC”Õ,¸V”áBI0#ÈYË‰aŠgZq@,gÜNŒ@hå¤ØÚ¢&<lžôÇ×iC+Øó—\¼IlVUŽõÚƒB Áso2ëŠ¿ßå8Ï¾g£¢Äi,c%Çký8Yzòr<ñŒˆ5ŒòüêiÄ×!Z`–¿(š¹zÊ0]—ž_e³¡1þ…Oc=wO}úÉÛìÆCàäEr–\û/-L“‘g6Ó,ôÓMÆƒ±KžýÔû¿?=_î~{–„Š»žÌëˆõüË‹]jÃtûÉYìßçñÇd³P*&Q£[ÿ„ùÌ½ˆ$ëç¼X€j?‘ÛíŒ
#úi_ÇÊô¡ÎYäÐÕouKo©SF)­Ô)£D@¾%:¼–|Åyè¸ÔGÔö"-f×_Noç7óTùíïSj´*{³*Zu”óÏÂD+Huyö¥§®”Uû€Ý‡ÞìA^Ï®Ç±êså•áqOO/üÖª¼ô_|üà—û|'Ø£êºÏ.TÚ]èCƒ÷DË=l>ÕÁQ°4%”Èú¨n96 smK¹°:µŠH%Ã–Kñ.…Â­•)@kƒBÛ9é°ƒ¨me³Ž¨~Dõ%T‡tÕØRÜ‹ÄJ%k¨ˆêóoæ© z'¥Jš­LÈŽÛôæ}œÈ¾zÈvìµB+ŽÈþ÷Bv¼Z4©ìCmSA€IC¡p‡•ÀÄ(¡ÖŒhWè•„ŒC J-ö p%, ŒPsDö#²W#;÷mEv|Ùé*²óºe;ká×ü›yrÈ¾—'¤ÑÊ‘}û!{ d¯‘pDöÇ„ìÓ«Ï¡AUÛPÜgxžæÂD7áŒHî!ÃéÐ1ÍC»uˆ.ˆ$H+§…¶ *‹¨H‘EÊI‹S¥- õª=1[›§ÎŸu¥YÇ³W7öE²´Óª3ø
x¿Öƒ‘Ãà]Ÿô,žå¡ëFøí¸X8ÌQwÀF`Û=ÿåcïM”ü^Ö8æqNBNVC¡`Œ/WƒÒš-Âæ³ë…Ô«ØCÿÏÖ‘îy|¿^¼~ª	joÜcŒ¶Á=¿Õw¢]</û‰:=}y=¸T/ªd’&2_Ý^ÞFNó¿½S¿Íc•:•ú^u;Ë¨SyŒu*ð?#¼÷ï>ãJA@µÆpu"Zš{ŒºÝvvšVÛ€ßÿE·T\§ªQõª=|ô
<døÊÞ¤™ÏsÃ	–ÝØh„”&õ_.·P"8"N@¨K…§ÏþËM±RH#¸Ò@9n-±[—bÿž¤y‡}hñŽwË²Õ`YLA›I3’¡ìî
iF$T±¿#Í‚CR3\öŽrÑ«ØC„4Ÿu-–gÿ`YÁøA¨2¯'¬M•›ˆªK•›É¬E•›‰¬A•›	¬K•›I­¦ÊÍäUSåfòjPåfëPåJ‰u©r3(íŒ*7öý½UŽgežLFÙ‘t? Ÿ^ìhOô®=6V àŸk¡ús‰Ë··åèáŸýïÛ·Îðo©„S³ª>xzgÓ[ÈL¥€j•x¶.cq€¤ÂÄrOË5æZY&,Æv¯Æ¿×¶9<cœºóêran;üÕïj]”†+¥äãEoÑ0Z»+õmM‚[zêFÉÈyâîåe7¡ÝE$ô³ÉÄ¿Ö“{³ñ/ÌÏ?¤¿]g·2§àÿ]¿>ï'¿yÖYö¥~qòóp0šýõsQ.o~ÓÏáÓúùþ“ÇÖY¸öçtâœÎíÏý““å^ K	}×j<÷j7½qþ©ÔhóRxè2Jômò?þ¿'a”OSÔÜŒÓ&óä‡s›ø¿‡uò
J|ŠrôüdÞ+Äß™oâô4ª0ñiÞü5'C¨Yè&É³itþ¿˜I–ûr7ë“r	½"áÊ)‡!ãx?{$¶ÙMþsâ¯½rAÏòüsÄçŸŸ?€/âî«Ü]kIÜ+¥Îè<èsÍë.ÅZ7oŒÅj‹Šq½xº»ÙõâÇß+?û§â_ï¢€úÖ5Øß£ Ú5ÆôÎ¦T•«Ü»ËÏW-kÃÙ¿‘Û#®ëÖÎô(w¼÷ZÙÇR ü9¢ÇÃ”h‰œ’2C%TbÊ©a%©¶ÚX‘¿Øq‰ŒM-8òÿ–€\TáëeüÇ²1€ke:äÇÁSê}œ×eðÆ¸Uù‡ïøÑ=¨×²|<-P?ûØû6P½›eSgÏ'ƒÑ´}(8hß4jæB«%„ý†å€SBðPØX+	s) (¸¸€Åšs™þHP¥Æ8´ÍÍ0ª[&‡Ôÿ‰Ù‡çŒ_Â;ðk[¯ùd¬Jë¬{ˆZ‘Ñý&›|Í…36!Ô%ôxL8¹7tñÊb5ø›Áp˜XÆcù½‹o®¼Ì“`Ç‹¥oÂ5*ñ c=ŒG,”RŠQ¬n‘q3Döc.áa êþÎ«Pñºò(¶4@8¤Z-c‹GÇ]T³ýÉÆiöÂNºý¸ºHÄª±.ûb“”ˆ´„¦³§§~n§§K“«ÖÕ~‹Ï\)õñtëzöþÍÚ’4¨­–a“R¿§»§½XªwŸKEe`ê/ÀðÕ!Wä?>¬ë¨cÕ"ÕB1C¡uHí÷j,Ðˆh¥S,s&õ"µ¥’iR˜bÅ@8Ý}ÄÀC87Ýçæ›Ó– –r5m‰J±RÅáz=SvžõÇf`Í°ñÐmÁ nUŠä‘‚æãívÓï¦ííÂJ ÿ3Ë1@,,¥4Q0uÔ)I™#Øë˜ij¨T ÊTyÓLKã'\7~Bº¹™ß¯)”+UÛ»Q(­ÈZéš’Á»¤H•µôo¤™-zÎ¹ISô$³8ÇmÍ®Œr°Õ.EŽaª‘bX(EaÐ)¹WGIyÊ‘ô;È [,ý¬0œQª¶©œñ‰’ó¯›™¢1eËüÖÇ_‰›L²I¥Ë4‚Ð4æ(xdñ:HoWd§¬ÓÅ &ó€:P#ã±i0½Š0y>T0?mòzåÆâ}%s?lüáCäñÞí€
ó'½;³Àœ5W¦|ÕüI&Ëº…¬&^ÝÍ®6ÚÓµzv¡Ùm[Œý«Q $Ú MfËþ—ÁÛ´ÓuÆ«¥ïžn“¨ªãføøe–O~ÑƒQÜsÍ3÷ê?»ÍÜûÝM³ñôôô]6º¬¼xõ-Õ¹xÞ]sG}	ÜG•±ûK²NOß»éUfoëMàÜ•—†Ð‹ïèä‡Œ?ÿ×ÝnÉ¬™cgüÍãÁáŽLÂ€R¤¡æ!†	H+R«)*ÈÄ©WW·Òh$¤@iÚ€q+0‘À£ø6·èŸ;ÅçÂ4ËïUÚó
@÷ð™¯5´¦ I¶ŠÏ°žqö>$ý¨YÒ%nØ	mVóÐx~`{ëž8ÿý3ô8ÄùúÌYþ„IK$v‚ª´;F•`F¥Øú¿TpŽ%Â:CÈ+çŒx=]°#Îœ/­ÆtÍj,$ßÜ/c±2ôpØ‘þƒ‹»ˆJjºHà<oUEòQá|÷æàýp¾»ôâ#ÎÿqþMnTLÍi†óð~#¸îB¼(AšXÈ"(Il°ÊCƒ^µGX+é”.¬J‰Ò;•%¦Û²•>¹<~s•]|ê$÷í<þÖtD/2w¦Wá­îçè2Ë]:—sô&?¯_ÛäM Ý~¿€ön¬‡Aíò=ïÖÎÅ=í\¶µ„kõžå+ý/ãõQ»œ]Ñßñ‡ÓÎ»(ýÜt‘ö, M]Ÿx–Ý¿	æÝCoÕöÚ´÷PºkvzdýÊ2Í]çÎTU¢;t‚Í!a¨½º	B©
zíÅk—0”­PÒ8dvNPe)ÑXI–¤ÈrD¥FsÀ˜ÜÖñC;`¨Tñºò¸Èž¿Ck•å<±5’µÄ»NØHy<u®<þ0ô¨B‰Ž0´†ÞN¯‡í+7„8¨y
\1]hCÌ1cS"Jµ@î´ÁR¤)å,SƒpjüqhS€Ó”ÙÔ:²­¶é«läg=0TÎN³äíç÷ï*0h¾Œ¦¸?/oŽ¡±QVa¨|–;Lûeõêêó¹è¥ØÛ£F‰šM3ÿïñg÷mQÈ@MCýëþ
õF6	òž?®Ý$¢Ö"êö«sãl”¼“¢P Ãð«Qv“'WÙMwMÀAQïææ¦ž9BÞNEKÞËP‘[Fî5Ö+¥S±@ ¶¢6x¯Ü©½Š=úT

,œŸ¸5®¾rAöE3&E»Ì“ gáÕU`B ªÎª}ìÏðY‹žÿý/ÞF_+àÅ>ªšKÃÃðál©ÝùLý©šª£µ*:6«Õø«Ê]øáƒ–vln!.6u“-{U‹f÷Äm^yK8<‡Õ8V¡ÊÐc#=å­]‡sS°:äšüû¶it)T–éý¹š?°aKi)s¸#L°TKn!‰Æ\8
¥U*WW=±‡("(µÔ8#”RGÎõ¨8W.VBÃ©n®â$$$ke™+Uœ õZ<­r.Ô+÷â“ãVíÎEìñâÁ÷åP<XxË¡ÐcâP±äJÅ‘¹Ò‘+¹Ò£àJd~ÆPØïDí&ŠP‹9µÂTJ¥ \! àHrDpÊ±t¥°qÈhaÓ­‰åGu€@uTá—Y	Þ$Ûœ
.¥§XkV+É–‹‹a¿'êÕÁ\bP¤W±CŸ­jïŠ)Ìý•²/Ýò$µÊñ®K·*[N~7²Õè|8Öac‘#{Œ¬øïç‰«^ž§ÂÜþ–¤ìúìþl_î‡Í­çØ£D³‚
ž¢Ô1ìŒ¶Ü)¬-“R§˜ ã€46•"PhÌ´Bãž¡	Ìm—¡US˜J±8Sg“òi·ñ°¸Sã5Eõ2–%Rìj¦DQ¾g™<DžD	ýäeÞÔÐ¯¿ü‡ÊÄA!¥â:r­|%c&Î%Î³‘=*”*Ø’
Idb…M	æ9ô›×O…Œsë…Ö+·ÖŽeÙ/bÃRì_G’Öe
â|*Êà°*ßÝ“U
ÚpÀü¦¥†$£9øÍ«{õ®,ßhKÏÕ$w±ÕÂÎØÐ¯lÝ]Ð7t5 ¹AêÃÅ­ÿÖª	P­	ëÆçªê+éAìGõR-
Œé„Ä×Û8¡òN?Yô'‡ Ànb‹`*sŽ"D°ÑXr¦œð”I)`ü(Á=i°–î¬“•p*vŽaÌnkÔæ?¼‰†”yã˜ï«ÞÅ Ô-IŽÏ<ÚWuSíFnB°ëJåWée–Ë·Q:Ëãˆ~.4’‰gqð“{ƒ?ï'ÎÅû*M@?E³MüW~;ú)ñÌb¦†^üåÜvtëáá¤}¯«slÎ2Û%üPélÉÓÃ0’bûíK‚à^X›]dBŒájä-“ŠåÐÛPï¯¶—¬˜_/ìó^ÕÿÛò•F‹´7“¡·/ÐLœ5³Ã¥§§gSwÝ}wsX=Œ|{þ>}­7ðÙh<›~Ôÿò¸ZV\sQâE|7u§0u“A6¹(ãøk²¿÷k“u9Qãš6‹¸!ë›*6Qœ}–¯ø:’€á³ûkwJT0¾J¿ö›ÚÒW_)©	;x@–ßa®­Rä†ÐZŠD#hsUfõLkóÑmx5~ÓÕ´ëw®¤NÈã\·.ÐÞeK@9C`ª!þÆ•%©ÅS´ÀÚX¬¶*CœÖc¨e
Ø¶˜·£.ðät2	ÝKÂÛRIÕëë9
^ +5\¼.ÀQí,…]4÷Q¹|«.Ð}—£.pÔêð‚£.ðˆu'ÊpÔŽºÀQ¨¡„¬óFq*N gŒ:„ FAÌfR
Ml
•àÒ0‹ˆlIH-ÆDªcŒ#åÿQ(‘ áýˆ„Íu7 ‚¢{”Ÿ®S~2¯ùØˆò—ù	3ûý*llZ‹½	<¡¢}÷„#?ø#ÿþ~ÒÐf_'2çÈÓ<ý‡æéþ/63m‰z¬];ÿªy7ñ;F§¤Ü›R-­¤Ò#½±"´KR‡ß„rªšq¬ÅPm4§)àÛ*¥¾Ë²¯Élióý°\¿eHîv®>.Ö*zIy¥’ñÀ—dé}ýñBbQËÎó|w­µÎž”qÀQ›(ÙfqãÔãT |þUüº¾H¶ò¼w<T·1µêÛ@üäI[š&=Oâ“ÿ›üó—¿¿ùôS?‰:EøçoC½8™8ª]¯Á~²˜Ë0rÂÛ¹†ó@¤¾XæÝA=ð^Pc›kI ×ºaC&X.§=¥¯_O¯œ_/ìý^Å®ÂlO;~“EÚ[¤½¿œéNT»Dw)¬Óýœu,ÔcêÇñ4ÿø±c¹Ÿ³—.Î:Z§Ì}¹ïÕ¨s™ÂIÚ¹TÿïÎe~šv?ÏÏnr} ¡ŠJ+¡_;ùgE:g™ËG^¥¨té{(G‘CôBxûƒF=jª»"Ÿ]êbob“ôjÕÉŒ¦ÕY­I½7™Ø@§æ]ŸÝõ¸"%UÖŒyûùó¹5Uw£½±ßÆñµ.­©¿:=ý8v£jU>~÷+Ø±á¡Q6:@j*ªë´ -ì×ÒdËÌÙ}JNO?}þ­¢Y	dþùþÝÇÙôÂ+6êºÉ®Ô½Ò¯C6Ìj®BqC@C£ªˆš™C…Ðh«ølb«¿ÏG[_fÍ17<3ÄRaN‚º‰ä‚(ì´aXihSÎ"5‡ÔËü/¹fB#h$µÆ…Œ:$&;CˆæÛ\‰ßÙ±”mÜÒqþ=çßÕjÅ\»©Z˜!ürþþeeWîŠ(k…œ¡ÍîE	Yíý
9T¬"Xƒ®pË:v¬|¼{ß?¹22ûµ}mº:û! °uG¸ºFˆš•fˆ£âh†8š!vˆjH—¹%¢Ë˜Ë£%âh‰8Z"Ž–ˆ£%âoi‰1VûD.ƒyÅEÞ,nÙ8ª°&Î!+”2
RE¥Q‚cmRªœÿ•¢N¤þ×ÚQÌ•ˆ)y*SÅYºÅØÕiÿÞ½æ6â-k“Í;éM³$Ú^>½ºðƒŠrgåU>O–Âp’›«¹J¦êkñóEû÷äÙÈÝ<O~~4óðÿI¿Ÿ•<üÿÏ'~6~ÿÌÌ´(3;qÓÙ¤zöÓzæ¤˜Z”÷¯Y>‹
·ÿÏäçð÷Ÿã½?Ç…®'eý4›èÛäçØ+p8-.Œ?¹,~Ò?‰vŠPW»ÂBá—d<q=OvŒË‹§Ñ.Íb7Â°lÓ,æåÛ,eS? É.GAá3÷Oœ,ô¡â(ŠU×££…˜GB¬EGÇ‰•–ö(ô†[/hCQÌ-´Û#=þàqÑ¬	¶w$ôý‡ß¿>Û¢/qãC1Ÿª–‚UqtËÏV)êÞ¹‚±Å;Ùa|g&¿‘Ø`¶-`Á‹Ú6§Å}2/GÚQ®>ÆÖJŽ­#ÀJÆ¢J*t*5Ð#$\¦T"i€¥J)l$ÄÌ@ž:bÛ€¿MüóÝd“¯û<£)’gB¹Ïeûsê‹UTù\±P/zœ]®ñùl“‚<Œ¬Œõ<ñ}“¡ÿœgñE•†y¿:eö…¥üf2P}rÏZ^Ì#ÀÙâk.Ÿo¨fÖò-pƒ°‡¨Us9õgœX.J•õkqÓë…Û{¼É÷ß·Þz³uÙÛDŽ˜h]v½˜f…‰ŒÔ;¦ç*á¯ž#~ý5û«[©õÎ…¾vþ+íXäìzü2¯am%÷ÏP¶»K±E!ð®%þª¦¡”y×bß¹KenwÊ¥ý†}-ÿ·×}¢)¿ÉM¡™À…‹ö¸nŸò½›^ev÷#6z>É.=³Ù{Õ\êl8¬‘‡µ‡Ü7#û9ûê:^â;ùá,=èá8ì Ý_1v!pÞØ S™Kº”Ûý¹$¾ÊFÓhòëT°'3gÓßÞv,ÖóŒ¼pyD¬Ç1} Ñ^èx‘ÿì7[ÌÛI^¢š›$µS+»7<NGbôÒš’Ä#LT­é¶<Xæ©ªor£ÆnwEûú™§¥bÓNqiÎ [³ÇVì°-OÛ—‡íÏ³öæQ{ñ¤6´¥K/áLÔn§¼}‘¬î+[£ÕÁÀ“ŽËo=ó#3U}¦|gäVØ˜KÞÔKg“KE:I¿¶
KÈRÐ@¬‘ÃišF¬N„©°BBÊ”äBZF™SZ ”â ƒŒbˆoóCNüKNT2Ï›\{/ü7VšG#71ÊŽ3‹
Q7ƒá0Do’^Fß²¯Á@[ÜŸ<+¼xƒi~²}ìçÑ´êo÷«þ×`•÷/<›~F~ØxÁIîï›å!êÙ­Í#ÎÎ_v­n“+õÍyÉ·I6ŠáÚÓ«i=©º¹ÿ÷ÉOþÅêÌƒœ¿÷§Óä,•?,®†bð¢˜Z6ÞúçÎoGÙ8_D[‡Ñú'Ûî…å½ñ‰îß˜¨¡Ââ!ÕÉÒ¢'þS~Ñ<(ÅÜÝ¢9Õpž'^W8rÕä2.¦_‘b"'÷&‚–&â¯ôK¹\jùYÄ?ÍÝiè¡½âZ:ÚlÏÆËÕæ¡D²ðõÞY³äµ›‡Æ¹…bJ²WñåÿmSÐ,ÑÞîW´G!Ù²šÈîÚ9²¥îžx“ ¶x±~õx
êï0Ìf…w
egô£¨äXÍU˜UóÑ†aë)/‡+…³k£—‰MBÄæ|¡“ ±‘¶ö¾s„&DHœJÄ-‡ zZÃ-Q¦X¦)Ò@i`Ç\K	9ñ´¸Ã†(¤íHÚþ¤-!@Â×ƒ$Üœ²‡)¡p´q´\”B€jG lg$*á!«„6X¢#iû‘+ŸIÛ‘´uGÚ.>¼?ÿráÑ9ò“¶¡ýpÑ‚ al¿UÂQ!2”`ŠœN¥Ê"i=Óž	£X^“Z5éÄb&Äzž*Égã°uï‚ éŽPÆÙ¤L°·~ƒô‹¿£’ú''Å2¿ª`
f6	y!žÄ”·þá%ÿté¦?½ˆÿéüVÿ]Ï†_:‰…Çóx…Ê“ç ÿït¢ÆÉ¥gN“²¢xÌ0.Nø "xú—Yv9t}Oˆ~ÿ’®Ç½¼Ø%;Ãæ)¼WT\ ¼‘BpŠ8[­)N1‡t¹¦8õŒ¼Vèüò6î…ýØƒMƒçç4!A}ð@Ta·H[S…­±7)ß\Rðë›OUñó´ê$]~¨
a°²`t6›v'×•ôÞM¬ÎåÈÔ½~åUVNõþñ»Û9|Þ êÌqOª%Å=ØgªM†bzlf¾ºjš°º¹«.®'³›
Ëm)…QC5é…ºõ½X/~Wü%ØF¶ó
¼ØØd^uãÂS–r‹„˜Y)!‚h•2)‰8tAD©ÿ-2œ[*…NxŽÔ¹…n¼LŠÂÓá²´ía/2ƒ©çqA’Â®O=7Ð¦ƒQ@„ýOæk½èx¢VGZ’TdJŒ]²1¢YÆý¬¹³'7Ùlõ’‘G´Ã¿\âÈd÷Âwa*MQñ®Q6õ¯ f^hwr5¸¼òxÍü¼œ5ñx1¿)Z€TòÕÝÞdûbnqJ"îçY’_{1~Îæê$NV»h·Ù? ‚d‘™'‹)ß¨|êÒÙðûMîíãÝ/,Ö<^"º‘ù0!áªñ"!À²ËËï?kù¼îÍ²>›ÞÎ¦_|OÈˆ“Û{½Z-ÒþM¹à-S˜¥WE«
©,ƒp'êôôÏ‹½ÅËØÑÜ.fºI÷ßî&í@¥Á ÏÂedãÓ´¼=ƒt˜f?ÏúÁgøìù3Fô`'%·û½²á.Pç–=\”Ýò­åo¦âÒ?/Þeá»=X.ê†'Ó¡}öû‡?¾¼}yñ¶â˜°úìÙïïÎ~}õõ!Y‘¨Ñ¹B°ìÆq§¨¦B+Ì°„JXÆ4Â£¢åãà[`êbÂ%´šÀ•Ã†iR.<¿;RµªmÍ²Ý°•·û¹_K¶Å P¸ÙH)ÂkT1LV¨ ¸ž‘j¡¸WñÉ<(Yû~õZ.ÎÞ$#pP’F+ÍHHZµ¸$­†°š$­RRS’ÖP:§iM‡ïˆ¨áZ¬«3¢VË-y$jOÔÜ0-Ö¢½‹-vt(ÜI;²TñÔ)å?SEæ)D)d<m“þ_!¥Œ“@8`œbÆ`˜?ßÆÐÂƒ&é¼RbäÈº˜SAÂ¢s®x¸dê†ÃP‡;tgR’®;¹E#±råƒÎs$ÏšÔlš…DŠPc$Ds©Ôïê¢Qð—/¯_~~ùåËOþÒ¯nT´VCÏ–~zYÞå·W 'á­yÂwP›ÕÍÍM?ží´L±{±Øþål¤;r¸Úa¹Öƒ®×å÷nÏöÂæëUl»'WZ·f:…‚\¹ û2&x«²Ûw/®óQ5ø.DUJjp6À±ÕaLuWy¤\M5‹¶vÖx3üÈ+º©ÿè¦»{±Xï>ß‹ßòÜ€e…«C®ÈÀ	YÃÂ• £ñÿëuNÍ=0:iS‰°‡CíáAÅ™¡©)
•@ZfZ¹-¸åÝd´øJÐJ¨ôåf€$„u€\Y!×sÜ¬d±½ž¶÷Ê‹ßð8$­J=>(àÁŽ:~>bãl?°Ñù&¤ª„¦2¥Àj(9^åÃÊ+|@CÇ¸Ô©	­¡<bÈ0äNz5Æ7(yz¼=Mãu¯(7ÉåšœH¶9LSb)ø=•¯©„µ2=Vö*öÝ“CÂöÆïÂW¹ û"¤ ’Ãƒ"dU(g}„lt8uœ]fl<!ä|Ú ƒ#›:±çóó“ÇZ±éº±
êœ4\SËŒÀ@c. â”f0€ÒI§œ@N;‰¬Ò +íµA•þ–-xøÁMCÙæà‘=Ô¨l°ÈS˜cZ8–¸8ÿj<ü}ÑXÓÛà^ˆ~‘mfEBã`<ªi6)†Ì<NNî@Ô/Ÿšòø:bÛ"›Œs.RJ¿©áÌ"7Ÿ”)r&<F§³arR*cÍgÏ~Nÿ*¯.2:Ïçñ%^ëDå'ÅøÏžûù»iøG6öÿŠCêÁÈ>{ÞOÎ¦\/V wßB<@ñXóõ¼{¼~ÉòÞ2A¬SÃÁ<µ´hQ8Äýâ•›(k£c?÷LbzãÜèäjæ×°œ7J]œÍÈCæ7&UÖÍ¾Î_,ÊWàÚ¯lžýKù&×t·¹9TóX37/jQ¯BÊÖ½ë<þèÎ»Ž$µ?SëÅÏ¸·Û´ú7ñ¨×_ýC%kãEŸ‡³ï Å±\Å*¢œ]¹¢O÷ª¡vy‘[ùØ£ýÖo™{>QŸ>¥XÁCù•Oý{ºô§ÄnÉÔÃ¼7u’›vz{S‚M`Ö# UHØ`J`Ëþ¿P¬$u©Ô„zUVn­Æa§¥•jèM–í
{ð§“‚hùÓÆŸ¶*–ÚŽ*Œ­UáŒlŽNd€ƒµÆÙPJ±ˆDMù“ìíüŠÿ~ü©jAöO®%­*nÔäO•å6êñ§G|Wü©ÑÇ ¼#Ú“±¦h©ï<³§a” Õ„IŒ3¦KÉ¨áH±PÌ´CÐŒ8TXfaVS,5V‰·0³óolÁ&ÆþÀ™—¸zU‹þ•Gà4æ#D´‘£Ô3 •8Ÿ'—ò<bFiV2ÿ“° åO<«	°F‘ß¸Q@ð@Z¦™É†!»Àýïü„âr¢®¯#ß9K“[¦ú¾&Ù(dÞžóEüódþ´óÇ*‰Lòò·/gÞ|f‘Ff8³Q„«Üaõ3äZýæµ\± Ã2ø3@WbõÂ¬^¬^1³^ØÄ½Â_â½xýôP}åY÷Fo" jÞl'|ƒÍíK9•bîO•"wÁt•è®¬ì)Y3êÄ[ÔÂò×·#U¤kÃ~Ð$¿Wq«=@þŸN=Wq½wÅQÕ6vÂ36€ÿæ‹mO»ñ…ðŒSAU)"†KfS¨LŠ!¶Êø²Ô«tú½áR¢5eŽÈ¶âçóU‰I‡sE}ê®ÇZæå¢$åù½ó××ï.Ùq../ûh__‡¬GæIqžÞå!ðwuö;½ˆ°{åäæ yˆ¤ «n‚8	ð°€b‚õ‚$ÖfÙ›o¶ÞÎmöôêb.Â&ØXÞn­ön×ÉoZ_Î7´‰® Öò”©ÊÑ[—zzúÒ¿ã/ø`ÒýÖ¿r_àxàÐp°ÊÍïŸâðcð9<û>”èW¯À!WçÕ,Ÿf»»§í!ý·‰s\›ß{ýÎ/:°üƒ}Âá|8Ø×„ney²½‹S?ÜÊDùøpßÔû³Ïý÷`8T‡<î†8Ø˜qÀùC6:®ôŒúâbw3Ë=Äoàz0éžË]NÜÅ¿lþÿNµÃ½Y¿òNíîë¼ôÙîÚ¦{ˆþ/¯dFv,©Ð…è{\¾–ÌÚú÷>æ¨ÃçŒvUÒýµšªÐô°^[Ê@C@ñëAµ…é}|¡p{V„´¡}y|k"Ôš‡´?E*î,šM~.í*•—U(<~°RÕ‡ÕôùÜ$ ÎJ4§6¥Ôj ”0n¥N3&¸žRRF80˜q§r™TÊmÑEGS[CS[áóBàžÏkK}
H hÕÔÊ¬.{½Çx7íLm¸‡žR&î¾µQ+VaocíÒrÛËªZíc,k%½‘±ljª4­Fhh,ÛkŒ>GMƒPÑŒe­Ä×6–µ‘þæ¨8l‡–òkÙ„ÚÈo`ìk#¾‰±où;‚jûÚ
?ÜÊòdnbìk-¿¦±¯üšÆ¾V¢›ûöâ`/ ¡±¯Íu}md70öµ_ßØ×Jz#c_›ûÚˆ¯oìk%½ž±¯èºÆ¾æ²kûj76ömÐô`Ôë°^ÎÑ¨w4ê=*£ÞlšŠÇòG6ÿÛç¦D9¨8`.¥Œk¤3Œ8ÎfTJ†¡M¡vbÌ8°Ì `á(4ÃéÑ"X™ø¶þúw5¢^+Ð˜ØRˆÖrà#2˜—,‚Lî|Gz;·Ù“²î:ßnuö¶ 
yWzïÐÄÊFÁ{Y[IodAÜc„šzR«Z÷ã€ÏQÓÊÔFtb+ñµ-ˆm¤7± î!¿–¡©üÄ6â›X÷°#¨¶±­ðÃ­Ì!Oæ&ÄÖòkZÛÈ¯iAl%º™q¿!öZÛQ×‚ØFvbñõ-ˆ­¤7² ¶¡±øúÄVÒëYÛˆ®kAl.»¶±Jtb‹A÷–Å.ë‰-‹GËâÑ²¸dYœf“PJ¢ií¸(4¬E]Z&;*ýªRŠ¸Q887)ÀšPéC"%Ç2UÀ1+Á)a´Æ<Å µÀhk¶5Ç:OOÝÈ¸hìœXÿßÕïØY³Ã%óÅZT:×“ðVBoÑ…äiVÜØ$ý¤4;†Ê]E·ÔIh-zû"¹RùU°mM\ê&QP¦ÿåO—üE2è»~¢F·Ó«p_°†ž5
MCcá¯ÑÀo—á­&›ÅÏì ÿˆLœßƒî[(j6MTv÷$	&Ãˆj,—nwâ0»Wþ”ˆÍ¥Õ®–ï’”a¶\¾Ëï”šíDÊÉõÂnîUìã'Ú ~Óe£ÕÙ» Â¬•Á²œeEA/Ê*ÙQ)h“œ¶§^õh»ª…´õ±WEÝâIî¬®é«l”.»«ò›ñGm-
_wµÄX1äeÁöä¸êÆWéµˆ¬$þ‘Cïª
]­‘FÐ³d<óÀ”+cR"¸†þ;ó<*a*!–æÈ-Ž[l÷.6Ú¿(gëm[è–ê`ÀP’{¥oò°„–· ¿ÿê›ÃgØÎ½Šü¤Êƒî‘7ÑhMö¯1†a«
¡u(E<¤: M»n(EóQÿî…B JñXÙB ¼Þ«O¯0j[IöÙ¢èm£¤F!”JQ­)…„Ø RsbˆbÎba•ÀA¤´"ÔH§ÀÜÁˆÔv;-Æª“T•ÌÀÜFûIÚÙÈª‘¹MâÉ¥•¥µ+ê†–™/—N¸èÔ–Íe¹d>©¼h¿–ONŠ§Ç„Ìû''€Ü]¢BµÓÜ¿ƒPtêsÿ{54³"òJß&ÿå¿°7ï_$çÿü¯³sÿŸ³W¯Þ¾yõÏ(úÚŠ¢Šy){â~ƒ…Í—çj"¼&Å«?=õïþErs50Ww5JçÃ†·¥'þ’yýö,%ã³YžÜìô*OžE:ãÇIþ5Ë§	F‰ß©ùó÷§ñ‰æjÖ_ç'v¦¡‚|XŠâ!Ë:¯e	Õ<	Š¶9°}{»ÉÝW±;ãµLP*øf~ºê®6bõ;®4b…Ô$7wÓëù¯¯GV@=Ÿéð9¼Î®=w}Zfã“ïß†1ÑŠ«,>!¼; ÀÏTù@Vž®BØý·žØ:õQ·ˆ?–GÝæ•:@åÓŽŠšnöctËNNN.®Üpøo³lÚ:öÁÜ—Šîæ'ô(•)”TÕç.˜p@˜s\kh,ÒÆ
0TÐ
( €X‹)¦©
]eöWcÎ?á• ,ÝÉ]JœÄåÿøÇŽÆ…’D„ŸUž†Ì^^¬!¬Q=s†­VšÂû‚ŠÁØáoÃÁÈ%³é`8˜ÞìàDÝõhÙ4µ‚B„‹.³8½,Îtyš'qšAVÅŒ{ÃÁ×¹aäÁ`þnmmAK)ýÿÙ{×ö¶q-]ð»Ïž™S©³#÷‹§ŸóœÜ*åÝ¹uœêª9_j@ ´¹#‹jQŠãýa~û ¤î–Dð¢ØNqwW•,‘/AÄz±Ö‹µ0ð©ÊW¾J‰p|u·­ÇÂ×«]·õ 0	Ç"¬ÈÉv~0ãòî'Û2¾ûö+úûw¥ã±fdh; 5;«5{À4ª%7g«æV˜eP-2Ùî€JÀðY±x6Ë'ÏâtTŒé{ô#Ûß7vš§^è1ªv;ìzG°ï;KÝú)ê.»·œTÿ«´•ÅOÁú:{˜Jd¸õ5¦0Ž!C†@‡`DlhœP cK„1B¾Ð%Ê2,„âZ$
(ôÖ÷Z_ˆ·­/ZïÞa}áë+·¬o•v˜AYãGi};¨	ß¬³Ú[_!~Hë»9+ÞŸõí®DHo}¢õ5@q€bn}6±›c8ÃÄ×öRÔÆA€Db@,°ÔC¬Qbbn™v«^JS‰„ ·¾Îú±m}1Ûk}á–õ¥’ÃMë‹Â67×1(‹aüH­ï„§3CG7¼Ë~êÂð6Ó>pÃ»9!Þ£áýþ•Æ{Ã;¸˜ÅƒE5Ïø!'-Ç¤5ƒâÊim¢ŠcA…†H„1L°%Bc
´âÔòÄHÊ°Hƒ„Y ­L¸ í1®Ùøª˜ãŠ@¬ß`/6ZüD3Ü5õµ(¤õ˜Ågg‹Z‡ç—PC÷ó¼Ðµ3‡‹NÇ×ó*ÜÃì&?I
…œëe7’žº–L&·î“»v<XÅæËÚØe [gÙÐMF³$9=9yþò×Ï¿½óßæ7rö×Ç¡7LÕ¤,Ô½lª»TyßÅµ| èdã^ÎÎ>Ï¦Ù$UÎÆ§“|úßîAS·1øêÅ—Â¸M{Ì‰mnØc‚^—ÕA
@`ÉíµöŠQ>(Ç÷£J(ÒÂÁ¼÷þ[[SI›%^Áåj¡wvæ·?¶Ýèµj°»ÓfÜbM{/›?Œ§oÝkqðš~{hå5ç/îÙÙ›rÍª­ÿGåå7ÛO}wª·ÒnÌ£ÏË9ªâÒ²²èÇý×èšC°Ž
vj«c˜I(d¢½¾^%–
‰Ý:Ý™.³špcMfÐ‹@L#VŠž[üØÜ¢ØèûÛû—Ù¬îpNå6·àp½Ž($R‚°ÕþÛzpÜ?ÎÑE`»vß´ç#ÃžÔš‚ÀSlÍ¦ž§ô<¥â%i¾_Å€˜	‘ ‚rh´H0%Ké>Ik ã+FÅÄ$@b,ä1ÓZJ-ƒûrô<åá)óœ«|+çª{´÷œ†ïú@@g>ƒãþÑñ”€Ú}Óó”cò”>YTÏS~ž2¿™4‰Å;RsŸ"æš!Ž&Šq«0ÄQãë.RŠbàˆ‡T*–‰01I˜µ"ŒûÔ†ó;Šœ¡_0¿m1[m6tö0ÞVHæ†kõÅŸ?õ'Ýz¶‘VÂ{j•›ôNf£<½¼òi®m^lóeQùà½Aòs9Ìâ<zrâ7æ¹oü.ÃrÛŸÝf#[ä1Èm±“ñúD«qR±mOl‡O¸€»åœ ²A0>û’9`&eXõÆUëÅp”ñ^ùA£ÜFy4vvF{Y)wfÌÝÖUï¹[Ý^5ÖÝYéž"/º‘\™Pvï¯f\Š{‡e0‹@I‘
(Í Œ‘–qœY¬æ0&^À¹¡Ø-Ž9D1L¬â‰á½Ñy8F§ô«#¼åWgn®Úct¨”[F‡s¹itáÜgÐÇgŒ–ÊuÚ¥1:ÜIío&Z¿w#0»Ý“¼7^]¯Ü$AB%	 Ø&™HâM±5ILb	±‚Â"£©4Æ‰àƒÜ™LÈÞx=ã5w¶ÞIäFÄnÁâÃ£­˜nY«vÆÍxuïrý1Œ×ƒòþ5×m>x3³ù4É›f+…§œ¢…œÿÎó¥”þ]Qª…Ä5–^R‘ØÆn)e”ß¿DŒ)`QÌ ¢Ì$ºÈU‹ÄÊ HPBM¬ˆ[ 	eA|hSœŽÌr7Ó0/Ëûž¸Î8;›÷ÆÏûØvÇ­v4Õ€?ªY]µ03»­
„0÷ÒÉ•U)¾BT°VCŽÄVaÎÙ†Ø9K˜CkÕ…ƒrŸéµÞÞÃ¢æéÆWÏ+°#Ú'÷¡Ûöc}Wìð©´«Ç(Sgíé%èŠ!9B\¹U‚®Ë£6íà5keø²?n±àÄä}r°ùûäþf—Mó–‚S¼HÃ‹%¯ÔÆ­€X,Œ¡’ƒXNŒã2¡Ä‰Nb÷gÌµÎÊaD¤eIŒdœ`˜ºÔ-=ýçßÞŸÿåÅ½>Á?ù;i“ü4YöL”ú •€ÉlTTT:^Ëßò‡Ÿ‹Õî‰šorŽÆ“4›øÑåfé¡[6ùE¯ûz4MÜÑjr9ó‹Ÿ¼\Þ»›Õtu™{XÜ.‡Èáh E[Ñ@ÁnÇ,…^$´NB$w4f‚H)yØÚvÙ¸ˆƒùüë:ÙÓíW©p¥l¨Ë2ÊU,Rqu
òå½U"í˜‡BpCòyîÇïSz¶“*ÑŽ¤J÷“Þ¼¬÷Bå^{Z½wûã‡‹ó?
Âé/¶ú±s·¼uïvw•ß:#Ež¹7æÒ9V
øGÃ£DGÑok¬­›Î‘!$¦ˆèÄ2D±$q¢$€Œú¬Li°³ØŒp›ø\òBÛ}»à{~õ}ùUø&b{C™Xn	ÛæWx+v ½,¯ûx r£¡Ã:88{æUÑ?íiî÷¹?F0£…©]÷¡×š;
ƒëpS\Ïàz×387ï,J>Àn rl<o3@¢%lŒ(Õ9 Äëæ5¢†A÷Ñ{È¸D#€×µ!+mÏß:äoû·Ú­œÚFîñ#»£t­Ô»’³í‡”20ùß;aƒƒóQUðëŠ±UõIû
~6ÚZÎ×ªë‡òµóW‡l­ÖUz¿cpµ.7ö\­çj?WûÏt2mÊÔØ)poÁžI§™ÚIÍ 7j™ †h bª9‰‰2Žxš&$BÈÄ2J%‹ìK¶ðÉŽ]W¹~.øÐµù~ñ´(þêî?ºrí™|MsŸ{!¬®*Âh£Â®øÎ[x×ò.Äð‹…þiAäWóÿš©áÉµr4ddçÍñl,zþñ<?
]p™!š”G“Ù¨¨ììy^:rÆ‰‰kÝÉ.ýWI_æ,÷Äüuã¼)s/ø¼Ò£²štqµ{âyå¨Û¯Åânj±(¢r·—#„·ëàFÃ¦ŸJY(ÕóÍ£û.«i(Ã*UX™ëwJ[ª‡n–ËyñJ$Jå¤UeÊPgge]Êjã·}ÆK?³4À~Ý9÷b¤ÆùUVëÌ×“I@€õÜ¨ªu…óÅÊ´ÎIïw\#(IÀÝs^”óg­Síô&›|ipÊÇlR«7ÞgÆ¾²_ÓzÝqaõ$€#­Ÿáky_ÚYVMëîžöŸuÏrŒûºêŒåtPýž“ƒê‹…¬‚j_ôÇÌG«­ŽwWúÏóOŸÿt=zŠÛœ\»¥«“á)hs2lsòÞ]çäV÷,[œZõ8EÍÏFm.Ú<,Ôf€â6ÍÆm:·i6iÓlÒ¦·I›{&m^ÚæžY»“[tkóœY›‰ˆ·¹gÞæžy›AÂÛto3Âø)o~²hÓÛ¢Mo‹6½-Út˜8emNÍO–mz[:[×êìËÝbxË6Z¶y±d›™H¶d²Í[)Û²Ædž¶àbþäÆCÌŸÜxÀ6t¶¡û°Ý‡mè¾?¹Å=·à®ÅÉíÎnñ¤ÝÙ_éâìÏÚÝØrg·x1[¬`“¥÷úÉ­nºñ4èOn<ú“[ôv‹ej3‡¢6+RÜæÊ¸ÍL†Û,ípÊÛp*ÒæžI+ÇiÓc¤Íª’¶j7m3@i»v·XÓ6cŒ¶Y%±À—ò{ì{Î¾º»C»R'yïó]Cß™Œà³\ž¿¿8™³Æ¥Ü+ÌÖ6v²q‡%JhK1†–Cwª†Lh$´VZ¨0˜ ÷s,´t´ÁØçÞeÄ*añ¾ÚÐÅ}F¹žX;Š²Ùt<›F³¢´ï…ÈæZm”»žµ#}¨rÃz°+•GÓ›l¥ÿÌŸFÙÈ.«6kÑ'eQàâ³5ó¿|þ¯²ÃêØR9“Ï+;äY”%I!	¸Z“^(IóÈ}(ÑŸžü»¿Ê}UÃÔø¿–—v_¨ÜS–š¾ReI‰ØúzÃT§ÓáíIz]H–Ìü—YnÍ÷ß´96ï’wJM	*wjGŒoH„¤r]p !AÊÒÍü[0¨ÿ/±X)š›ôSkÍ)ÄX6"ø¶ž-{0bYL{ÐÍ{¯D«1‰¶	€?L@ñ…`]ä½ç;¶•l¾=B)*Œ4ÔF&¸P"FÆ@Hg&UÀ–TINg#MñÄ\›D2Eâ}Æz+ùƒYÉ=…Ž¡»2’;IÒ„dhcÿ…›‹‚vÏÌþ}úÍ†ýÔ•„?Š•|Pi8ÿ²Vò¥7µðòå£í¨P1•V1`A¦­)À–¬$¶Ä(ÅµÖh÷S"¨ØXŠŒØq0ýƒ{(×Î®ìÙAÕynÝÜi£av3úfÍ89óa¿M'J—wgG"‡«boÄÜÜ%“ì:RÅõÒ‘ž,¼žÌñsdÔTÅ*·÷dÜs¯X¡±íCh§íA˜¢Í’Ñõ¼Ï’ðškÚÀ­AÅ¨z|V§ƒB{õz¨µ½°ÑNÀÒÞ¸fV¤ë„•¥ð÷[‰Sc"jccFz6Ém^ß!²VÚÅÖdÖ]›1?ÍñòÄ½ÓÃÏsÙùo?/;Ÿ,"BK0^Ëóñìþƒ³S-Öq©¹; ëçKn•²B8šî,‘NpÖÆÔY¦„hec à\h„„„$éíT{;5ß£Ž·ÖHÈ=Åu°3mÛvŠ‚M;–Ãñà,üøWG-w0Õëlj²…é¡Ø¨î×AMmTÐJ©·Q{mÔgmój< .r@¡nŒ”u+n+I0ƒŽÐcj•† 6±‚J2‚ab Ø­ ˜±Žõc	³]ÌÄ9ƒµo1õKÑAÎp”/fa[&~ÿlQ2ÇÙ“²ºC7÷3ú¸îo®Ê¾/Ñ²¤°=%j™ßÃÚõ{È
Ñm+ÄÐî’ä˜ó-+ÄÜÆÖ¬¯çn…Š¶ŠÑ388nK5ò.ŒOx§´¯i ÕÄ)­OÑÎŠ\#~Z¨˜G×ÀœE³•Uvš@^¸—ãKÇ¸oÓ‘}1±ªkÜ÷¶Uw¯PÚ½rmxVCƒ{ršv™tåüzá6=X³ Êzé¾ê{`!¤ñ?­vÿªò+Ÿ ¥êâ jm½:L;^Û†oOýqüÝœÓ‹YzvéìV‡›7ô“›rÿÝÞ|è£Í‹n^a>øuví–>&è²ÎNŸ=¾°hûv×/Ó‚AÎo¼iŽ×'‹5FÍª™„1)¥€“$–(&Zû
	DÅ:Ê, Ø eHZ'
Ië$¦T±=Lñy4^ãy¾2Už^=Õ›»Š*“lx€-®ˆ‚*ºs®ÇŽ|™pcMê¨RÜ-çAþ.¯w2¿Lä…„«‹›Iêÿv6žèØ¿KO£‰ºñaæì‹5O#;Õ§?Ÿä³±ŸŠ;e£AìhÙï7‹çO£4)ÂØƒ›ºe6±óœ2eˆ:Ï®íÉ¥Y§þ—kã•ûv=Üí}b„EÒ™eóÓ(ú0²žû ºOX]fî{ßîNË@·»ö
Kå‘olA©‹ÏyžºÏO]+¢ÛlVÔ,Ž‡³KÇC£¿yÇÐF?ÿ-rƒKn·îhdÊë©“Ë,3E"Ãáí•ÿèš—Nwð]=Eÿß?óivSòôyë+j~ÈÐšBÎ6™ºƒØ`ê‚…Õ³\kÝÀ¿¥ƒº%?œßN|ÙQ÷h†·¥ÌâÉ‚Ÿ{®î9ûÏ×_´£wZSs*hLÍï¡4­˜pßòµª€º3wÁ†$ëØÿcçäh¡Mu;Rêô®#þ¡|º³©CÙA~'^x(gYÓ• Òä –Ú(¡”‘P‚WZŒ8WÖ`œXKx¬4G–@+5F€&˜8VD•€t÷¹(™N2q7êciã'é´ÈRçú *MäA1ž·ËîÈuoYÁh¼#¥”ÎMUþÅ›ßdoñJR±vfþÔñí¨Å•*êX§“…R0õ®»’E”þ·âe¿4šŒ|•kûmìh@Á9r{Ü`ÐÍÍÍi1µì¯"Zj Û¹˜·l¹ÎòoÖ¦vÆa½~–jòéÀÄAÅ|,·´pe|»²CÚZt&8hælË'ª+æ•J‹›LÂUwnêÞiÓ¥œt”s7<™n‘&÷³½~äÑ%
7/ÙMt©ÉÄ‹¶Èê¹,!Vpâ&UáLž IìP4FÀ*˜ð8‰c¸Q(‰P¢(DJÄ±0Ø E{Óx¦±\æn¤œ¹ÁÝ¬$d Ü1lÓ4†ås›Fó¡öèL`óMSåºbyãmM‡„6©b`êpe‘ìjS·{N9‚Ië°hcoÒ~“ÃvT·
3å–}$@Å1ˆAl-·Ìí5{BS•ÀØ@gíÜÒØ$1ˆ¥5Š"ƒÁ¾ºÎ½©k,Ç±u…ø°]¦F²ÝÛ¤¼žy«Î 3vPl»Ð}R¥±ƒƒŠAøèŒ`sOn8®ì¶ÆQ€åîÜ8ÂŒc­Ù©{£ÙåŽ§Gd4½=Ì§ÙºvÎ[‰O	Z&ä®µÐ£Œi·˜³H…EÇ Á:†œ`i ZS¤,7Æ cfn´%JHž$„ì[è}šJÛã÷þ51&¯ŒtºŸÊ¹®jWò¢çÅ:<Ò¢ìÆd6*Uˆ6ŸÝ·j6ÍÜ#H}A¸ÛH]^NìevÌÍ;óâó«¿}>=9y>œ^ùmÊOké.6Í&þdßÍ³Qþ´0‹ë(ò
õIÏ
ó0U_œ¥MÝ•ýƒ;)tõÓµÔé4e7Îz¦¾Í>€·ŠR;ÜçW¶¬²Všî¤0ÃË‘oüçØuÄëÌ¼ˆ„»Ûô‘Þâ¼McN¿};ÎõýibOä`doÜ™îÂEy¯à,·Šo´Ã¸wHO]C½©ôá—{ÿ¯ºûðZ—ã;!]²ÛŒu„aÃþSw8]' 8J‚À¼…ÿòàcZôQÛ6YBvß}[ãŽæMV¾ÏÇã³³îÐÃ‚Êb’¬0,+(_¦ÁÍÝ#ú ³Ÿ¬Ž‡ìhÝ	Á/f…Mq\¤R<îæ¶#Vïoo†:Ê³
¥n\÷ ÕÄÏGÃ÷2¹éæx:Ö<m;
èñšÜ)î|"ììììõèk7ˆ¥Òµ,7Vó
uuM¬³³çsŽÖÕ»»À}3QžRvzî†O÷M] ºÎ˜LÔaáQpg*tgõ.ü¢ªÑ1ÐQÚý»ãžyçLe:Úo]éŽìûLo:Ó¡[Çüe!f>øÇ¡êhÆ½ƒ<Q—×ê8ØÝ1©mäßF_ÜÒðH]òŸ¥Ÿà8àÿÏówo|”·üB_Y¿ïø_Âžý#‹†}1NG£ÎÛ^,ÍŽù«™î»zÚ1£oVÏ¦•ÛçÚ^¦;Z»çå‡£^Â{àŽzOêÆýÜí%üì’æW¥»ë±´ÿ}’N» _÷»µEÛp¬ìÂ:ìîmNx6Ë'ÏâtT¸·Ž£«î.ÑÚº¿§¾?§¹¿¦­?¦âüv¤¯Ü’¥zWßýÔ¼¯WÍ¾<ü—tT»½<ô£š^z1¶ºòÐ7vš]ß¿ÍŠÛžXMÈ‡^Ø¡m|üpqþGõÍ•Ÿ­‘­µC¨o¦©ï¥–o¥¾ï¤Žo¤©¿¢‘?¢™¿¡•?¡¥¿ ? Õz¿É²»Õ²ºÕ²¹ù²¸Í²·ù²¶Õ²µÕ²´ù²³Å²²Íú®íú­Éú¬Åú«£õUëõSë£ÖëŸÖ7­Ö/­Ö'•ëoÓùÙ¿gS=YÇ!”a‘³ýa'‹XKj]ÕKéµc,¿¦n>ØjÂVê¯.øŸ«µçòÿö¬ørû÷üJMì3“é»‚€gö›òÚÏ¼ I²Ékþ,D+§ãa[8óçÕôzØVqƒ^N¿¬†ˆ	u³ÁSZª§úÍ,1$Sàþ›$±¯µ@iŒ8O„ûÉP'8Nb¤¸UqœÀ˜2º¯æB/nêÅMG7•{\Ñ<Ü‚/ÿ¶¸‰ˆ­Ôr”{áú†¸	¾—gCÞsðu|,¢§NÊ#Õë™ö‚(Ú(Å\/ˆêQ½ ªD£÷‚¨^Õ¢zAT/ˆêQ½ ª6x/ˆêQ½ ªDõ‚¨ûD¸Ž£ûJ}ßºÍ½PªJõB©^(Õ¥z¡T/”ê…R½PªJõB©^(µÿø^(õˆ…RÍs Jl”b¯ˆRPiCäq¢J$ kƒbh¨äÀ`F%1ˆ3nb ‰E@÷Y z¡Ô½¥ö”àô¹žö¥¨”r;TQzM(…%
¯°_ôÎY·g:J±^(Õ¥z¡T/”ê…R½PªJõB©^(Õ¥z¡Tmð^(Õ¥z¡T/”ê…R%¡T÷*Ú	¥º,dÑ¥z¡TÕ¡½PªJõB©^(Õ¥z¡T/”ê…R½PªJ<¾J}¡TYDµ©NÊ+F@°n“JAÄXÌ5±Œk}etÆŒFB!hCJˆ¶H,P’p¥5Ì¢˜`J“8&zVÊ1ïTG³i:L§é¼zëzQ×PyÔb­^H–âÙ°¨ë?ëlb$˜(=¿Ðiä¨ttí~<IGå“r˜O}•×È?÷Ô‹¶”þŠò<ÿõÎõ4²S}zr²Ñˆ´¼üËÏß"¥läÞ ECÌLÃ4±¦lÓâ¤µ'~Oj£Åp;”‰m'eb¡Z#7 $ÞLÊä‹ÐB×ÄFpJj”X/[8XŒìÎ23=ÙVý\ê^¾Å?Îbwdô*»Véè~²6µ#Õë¸Ö5Ü9•²É7t.ç´ ÷"ríãyÇpneãVa~\vü2Mûè÷¼àq‹&ÀS÷†v‰úúkUµ	`¹=ì«T]öõHg&ú›¶…M9öëÖenæìù}V!'lû¡û±¬o{ñ%vOJƒ7@.a!Áôfð¿«‚v‰¼t©´è‘.‘ž×‡ó–ÂµÔÏB­–ØÞ[6¹NG•‚°&×9Â>ÿø²c8g;&Ž wz÷k°¥³èpXµ&úç,æî?éè°Ì¤&ìoÓn-³ÇófÎµ‘¾³ÓÃê¦Fè¿ªüªRˆN
‚/a?OT‡Í‘¿4èpˆ-1U®á@­†Tt
Wqú@èwÅšçö§;Jä•~Ë|N|Ã[§f&ë”—>•áÊuo‡€?èåóUãé¬Ó{ßBþ4«Ä5Ãe‡ÅþÂ¡g¹=;ËºáçÝÀ¬»Q)Œê;]_µý»ä~Ú-Uê2§­–*u'zêRóóJM•{f×ã€SMP6§<ô³½®¾¥Êœ0¹
ž¨<¬´éÊWu°[EL/n¯ã, &Y7Àµæ?lâÂkäž«ïzkàkàájêbjàä©íÀiàœiàxiæTiæÑ¨±üoº´ïbÙÞdI^gMØ|½×l-×`©VoÖx‰ÕlÓlýÒ”ÿ×àöÍXqÆÛÍv#Õ˜^M¬2ùÙY¡"¨Öî~U“jÑI¸þ#‹½6uZAë¶¨æÛÏRÍÜ³úˆôváèÕ#(cmQ‚}ÐBlŽ¦ÐŠ"i%®(fÀb¨…6
@ÉlœhBL¯zxœª† T¬«(À}Mwª(‘MÕ"@r°®zÀ#©Üc÷GP7,S­°îÔ«j«bHr<ƒŸ‹:T1Ô‚«£b¨	¬b¨‰®b¨	¨bGT1ÔU1Ô†sàÖ†W1Ô‡W1ÔÆþå8,Ž¨&Ž¨"Ž¨úQUìõl¤¹¨¦¹¨ ®\OsQþ?;5ju…5‘q+ôîû¸@uv#®Ê$Òüzä¾ˆ²7„Ïs;9Zã½õŸdÝÏ sø×“IH´x¢¦ô¹[d;LäÐû£šƒË,Ð1oÏ±?9
íl†¨Õ¯¡¨h (>GîøU©/>kŽ]O|Vó:G°íAâ³Zpáâ³F°Áâ³pôZâ³pØ0ñY=¼ºâ³ºèÅ”£·öRéÎ;#PÛÖ¹Û)³†¼­.â1&ãfò6R:TÞV¿Ñ¡ª§¦ÈÁò¶æ8ª¼-¸Yaò¶`¸Py[0`çº¶¼­)r¨¼­6~¸¼-:XÞ€ØL-yÛÎ(ÚaèjÛÐÎåjì÷rµS®ö6õ/W|$LÙÖKÖzÉZ/YëJ²¶ÃƒÚÂ;ÚÜóÙÂ«ÙØcÙÐÙÔÓØÔ‹ØÜCØÔû×Ø÷VÃQÕÔ	Õ…ƒ©‰ó¨Ž÷¢¹g¢…×¡™G¡· ž' ñ*¿Ù2»Ùºé´Æò²ÙÂ¬Í¢«á‚ªâ´ ÔZAæÁ¥Ò=Ë-ñFC½ìmÞÐN
õi$Y¬9‘”Â"1†Ri¸ä–ÉKk'Àh›DsÎ‘Öq" O$ìe˜÷)ÃÌÏž=»v¶g)ÂtCÃºw<@‡¹»ÒBîÑaH¶*ÝAÄ¨ hC‡I0æÍ²O¹¡=88¨(}f‡Ù§ª;®µn“3²Êà~×}t€8Óx¥¯f})Þ)\-Ýf=àpÝf=ÜºÍzÀ¡ºÍ`ÔPÝf=À`Ýf]ØÀÈD]ØºÍÚÐ5t›u±u›uaÃu›u‘u›uaƒt›uAu›µaÃô?uau›µaƒµu‘kê6ëÂé6ë‚†ë6ë!‡ê6 †ë6›ë6›Á‡ê6¡‡ë6Á‡ê6‡‰ÑAê6c»w¿²W‹KJaKC›¡Ã4Ô•†6BÕ9ƒ×Q#Õ•†#wü66†6Æ®)­w#Ð‡0ih¸ÒÐ&°áÒÐ`ôzÒÐ`Ø@ih-¼ÚÒÐšèu¥¡5ákHCk"w;eÖ‘†ÖD<ÆdüÀ¤¡µ¬lˆ.m|ãJCC›(…–††vþ ïD …,­‹_C
.­Fì¦JÚ<âu®îì²nj¯îÜ8°WwÞ³ºÓÿ9¬ŠÜZø©I¨Qt§~ä¦A¥A€¤i„¢3¿¶£¾·¼'¼™—»™7¸±O¶…¿µ¹/µ…Ÿ´±´¡³©ï²©Ó°¹C°©³¯±«­†_ª©Ï©R_QgEsGD'C3Bç@½…ãE}³Uu³sÓgÕd³uX›5VÃõSÅi]*A»Rv6ÖV~›^8æéX“©«®\¹€ ž¯³°¤õRYb-‘”'Ô žbcÀÓ ZŽÐ&LK, $&Öh£$°(ÌK…•{4”nJqoê42v˜^§Sk"O&£Üõ˜u·šGÉ$»Žü3rÝzHOis}t=å³xâ¸AêÌ|t­n£ØFnuìp³ÈÎ/¦Ö.ç/ÑŸFã,ÏÓxx{¢7Î¢ÜÑ ±W^ªh)}‹Æ›¤ßæºÔ“kÃàÙÁì“’ogŸ„bîÿÛV=J,Ù¦è‘2.àºæ‘
HgWH×Z8ð#n0k5¤ÛÊÆöòÅWö«fc_þÙÛ4ž¨Ijó`!#n!dÜÛm‹@°ôüÛ]ÈþÉô[±2*ÛTá3ÅrÖáæ„õ]bq¶N,ßÎjÒ³Ù©•íß1áuïBúÎ„ƒ?ÁNš;LÞfAUÒ3×Æ¡;ô(fuï>÷öWÔ#ßµ‚,{¹Á°„o^rÿÁXhÖMém¦¹pÿXàql„I‚9&1äì3æ"a†+b‚I"¨Ö"f,Nâ”&½åþn–»¬–-ÅVµlJÑ>ËM%¼c¹7w+8ËZ*{‡©:8ŸE_Æ†ÝZôÃÝÔÞÒ¯ÏX½¥¯²ôçÀ÷­hÕ3€¿h¾ÿ‘hÆ(ç@˜djb¹@V dÍ XBHýþH™wŒµPó˜'PYÞ3€ïÆ æ;ÉæŽEÄ’{ £w€ Ý­ÝŽÁž„uSÏ î‘ü 2’ž<Lð*M’¦Öžº™ºl éfõ¯”’cm$Õ±Ð@Ã˜!Èp‚K¡¤@Æ˜$	ÖVÇX¸£Üÿ²”KL÷ùí¹ö=w³yänÄ°¼Øx>±:›8ãl&@(&ßU«ô*Š‹Œ
îLŸx ·“¯©§êK:òÀg"xóþ·âšó´·§'çSŸ»`”9j0º½¹²œù”ãVù S‘ÏÀ'·ðß- ž:ëÎ,NŽ­ã¤£©½œ(Ï,nÒéUIIü©¯*z¿Qgf£ñPMýíç§QyùÌ±×Ê¨N¦WjåWv8ôÄñßxGDnÝ¯×?åeûí7«gÓÔçjÈ¯=nÑ‰Oý5O.ýR÷Ým”³GiÜ¥‡jâÈFyÔ=ñÿÄz/( [Þ%ÞÉ]>%Éw³uç…àDˆ`æâÛ6ðoÐàà»Ó>Å‚ÿú+ÚñÃ»óÏ÷ªhS«F¶&4X:ÞÚ”ÐøVVˆTI€Ö}å™IÀ`uÂBTÙaBöôU"®žb%P°™yØ¾’ ™ìóáe6q3úõöÈÙO¡ü¾Ìk×°ª8Åq/ ¬¦VìÈº…–Œh‘¶Šwã‘8‘Ø KçŽæ @‰›—(DRì¾£Ô}'Uƒš˜à¾ŒŠ„S„q,zFôWcD2P-GwoîÎ?E˜dx‹qH6‘¨áËYXs:8øî<tFÔ$÷í†Uõ\kD¸”GåAÉåÿÊ<¨†qyØ£ž=xôf˜ÅMy)pIÙë!5†ÚÆP¨Ä
C¬ Tc	’‰ˆ„"&È j5–M82ÖÄZ[ní~¾3ŒÊwÆ[s×%ú*ºtw{?.”Ñ#GU.•7gEh¨Šüøþ‰Šƒ~ñ›hOðÏnÚ¼u)®PäÖ¼RÓH;F±*~<Y¿ØÓÈG~¢‚|$v~²ïýydJvzP²Ó(:O¢Ûlvrã”‡4Y”Ìæducî‚í*w«-žw‚¿²›ìïÉ1ã[rPÊ º#Ep'œ3°ICbk,DrNB|Ë~øÈ½Ë@k0‰®EÛ·ßš1 ÷Ž6f¾5mk1Ï„ØVT	tgÂ:‚/!Dyl„º¶(±`Mh7q[=ChŠ5’Ž€XCÆá”áÇR&2–@ÙÄJÌ–šÄL±¸·2ÝÊÌÝÿd[¼ˆ÷¸ÿ!—[ÒÁå†•a¡Y–7¦Ùƒú¯k}wK{«Äqsþ½X¥€‰ïž<ß½µ
{hÍ}ÀhcŠ	ÑH[¬„‰’ZªElW˜K÷=ÆHy]<ÀØÍnÜ2BÜ§ˆë­Õ£±Vs×,ÚvÍ""öY+°&:8 ‹µZz]ÉQ¬U÷^WÄ!}ÄÖêAù'DkõÑAÛß³‰É›Ú,ì:¯ë\‚0hTó˜pb8vK+¥ wßB©M`ç˜:#¥­IÜš‹-“866(Þ«åò7[j·Ó‘ÌÜ¬6Q·Eõ—ì‹›@üÄ²üªøpXÏù+Öüù_³ljo|7>)ÃA_$³‘ög8ƒ¨}ê‹5m÷$zrs•:ë57iÊõäål¨&‘ý6vÏ·Èy^F"£¡›ï|»†…lÜçl‘;Ë—¼ðEm2wsÅo'³ñü—çM‰ÒËQæ5á«Ëç¥AUã±œºIß½OeãóÓ“›˜Øé¬°éÎ*Î«åÌû,ù§ƒuvp˜9tÑ§‘»¯¡=ÙÕAK¨eó
¤â¯ÜÞq7>ÎF¦°÷Eð÷Ä.h;ø7yêL–{œú?¦É|]!“þ«ˆ½®5j.„Ü;Ùó`rÏ<n±pw÷ßÕõøÿ^åY”á§‰ûÐìx˜N}RŸ“lTv»ÿ¹`&ÈfãÜ«ª§î,ÿÐrõÕ?çÅµ‹Ãï‰7¬ÞþÃk]¸½Öe°ÝìAP¼%ÓÇ€Éu•>ó‡U~¢ùñ6ê}¬]ý ÔšU@
›ÇrW­=È-
»Â-Vx•p?Ì¾¹®R&Sš-¦òxHHó¥³E€9–‘Ä‚	[Ëµ¤*±ŠX"D¢„Qma’Y&-Š$Ip"a¬AOBzÒ“.HÈÜ…·]î	ë
Jé	ñ)d6HE]‘åÌh·Wð¸D¤{÷¤ ùnÁ‡FD”³ã/ID.²ÙÈØoÛ,Äqô?	a!`¡²õ¤K	L1 ­µ(·d	ÒZ)HÜ€ˆc•„ŠIÉH4ö™Nü‰vŸŒñ¾Ô5çwz9ÁÍ-f^Þ¥3¢s•Ü~v1ï¯sVÑøÊY7I­N,ôË©?bå]oË<õ’k7hGîm;ìäµ3„i~åm \xÎW.ß8|™ŽÔðn+_(¦6‡ßž|Êb;™FŸfyn‡¥Vûš\*gÖ£ŽY‹ëß¿ùÆu¡Zš:‡ñ·ç×¾t¡Ìoòo÷dÿæ—¯Ð4‰mMÆ»ý÷á-M¬;ð©#¯á›ÍæÍøÁ=(†õiù>©¨_fã[÷D¯¦aYi¨7Ôxí½£{:>aÖØªÍTaÒ@•Zzãî*±îLza¸Oü`¤º­;ð›[Åaû–œæÙ©WU=ùù	#qzÐïO™ºWDhrÊ›·ç/^þ‰NÑ)8»…ì¡Zîrxþ6rKg¦Z}ÿÇEà6}cÝ"U‡äÉM“B2“éÐ<yóþ·?}~ñkÅÐþÙ³å³'ÛO¾[úòYÅùßŸ¨qãœ< ú×užš`¢˜ˆMìŽ³hFqÍ$âX&qb­tìÇý¦1"0•à
Is–(ÔÞÄ<ãÂáî»°,&+×Ðóµðë
Ÿ§Jzàû-—ÛÚJ’»î‹þ™Å¥cÂóÛûó?¼;Ä]æ	,íØl´üûDgî#“»&œEÊ^gá&öÚÍOÞƒà/1˜LÏ¼¡:=9)¯ïÙÙ™o­[¦ß¤Ž²8c\Œ‚¹›¥ð£¸Å¼ºtÇ\å§ÑswL:-ý~›÷¾x‡ËÜó1ò[ÉÜï–ß÷Ï,õûÒÜ‹:Gœf—Ö$î‰óøÿ¿Ðã‡#n«ìÞÉ{ársÑï¾áë‹~ÄÜ°æ=Ë—i°|+:Œ>|þüûÛûÞAßrçX“jŸH"Ü˜ùN´œÿ‚l™¿ùNð¶:4ò‡	f@PMEj²ŒòIWËÿ9óÏ\Ÿ_¦5Ž›œ¢Å`Ató’å:6õhÆAØ'–bA¬³)FãØÇuˆÆ5Ib#ŽY"MÂ„@‰FpÌÞ·¾§?.õØo@œ’ÝDÄêáß¤5òûXÖ1‡{¤]8\štN´ƒ6—QþhÇc]ô´ã öÚ'd±Í“îÐ…îÖ‹ØX Š˜‡	j$uC‘h……ÅÅIÂ‘¥nÅ‰y,u¬bÆlcÎM”Bº‚VÌï«Ô‰)iìul±¦ÈMsH’æe¸fXÌÊ·EŒ¦L)ã•Q‘»gX¤½ÉŸ–ÎýëçwoE»ôæ;›œ8SX¤°ñéwæmÉ£ebšÓ(zý´øá§yx(µÚ1&ßfÏ^N®Ty…ÂpžöØMŽF8¢³¼‡ïÈB‘ºg®%™X‡þ»×”øý?ù†¸£~rX\ïi!r°_ÕpVtÑ•]\d‰_&#rGk{â~¿.»Ð}J'‘?ïÞÒ
.ìáh„ÛÑvSæ˜	Ù”:@LÀz&¯Ö«±ccÑÂ7ðÞw²·óq´%;:£}FÀ¥«	™˜·¨"o­Ú—±wvöÑ½/“LÛü0W	€ÞìºJ°;Óï¼ÆMÄýÄMVÏ½âð.k9MLÖ[„—S±ê0I¤Ž¯˜Xã3‡ÐDC¡µ ,‘cgÃÀcËb 5”ÅFk.Ý¬í;F½UÿQ­úáÔx«‘¼ß¡€ Ûr(@v—;ò¼eÕ)ÝÜF9bÍ¬º|[Ï^Ì+O'f†:1ïU½Ò>žàÍ7M„šý*ùE³¦ì4û5æí‡íEèé@gt`)iÎ–ÒÚšE 6¶kƒc•ØJ•Pc0ÎÔsÍVØ
 ˆ¥Ä”B	hâ^j0Þc÷»<¿xy~MÝ¬ý^UJýAu·ëo¶"9ÂÉ–lf=gîB½ÿ4úg‹ßŸœžžþüÓ<x ¾Øüdq£¦ª4Ç~å÷4øWßæî1ÉpGÑ²¹úJùª%~gÆ“ôÔž>õæ6r×ð_d¦u+Z7þn‹$¶kGÇvzc‘ß (®¾ñ_~.7=,¯Vš*Ï.†×nŽvÿ¹Q·y±fêÙ€ûfý­.ûÑ`•mÑÙè«½-ª!¹FÊ®Ý™KêãêU§®kæzÏù–B6Zî)÷Þœä™3ÑY‘&âf’4jžâ~|Ëg\á¸“ÞŽì¡Ð±±¥¥ÒWXZƒú’XáÙ‡–mø—mpÿõŽk†.¢;ï¿-5 Ò˜¬)êÚÜÀ]K¸J´;3íÃ^¸¸û»³ùÁæ¼È<^ßÃ¾ÃfÓDÜW>‰Bì:ø™5¶àøâfþxŠ!‘Úh‚lL Y¨t‹w@1 FTIN!KÜ*^ás„¨à\Ìöùãç7•;Rý—¿³ƒ[1W»–VzºðËù/æ(yŒü†ÌÂ@ù£œqoOÔÈ=±™[OOÊ]ä^V·õUâw\ÖK±Ýv´±-÷I×l††	õÖZ7ðcçø«¿sî»==ÐÅÿF{ŠöœªÐõÃêøôÚÝUb=?rÐrïB«¡š8ã=M‡UéÉ+M m˜Ï"ggnþœ¬IÜyYTA8âr°[S‚:±€q+A÷¦ ¯’	Ö2–h¡±°Ú¡+.|ÖqM9 BezÓÔÄ”ZpŒ¶³Ð€½ZpÊå¶‰¡xÃÄ Àœ«w&Øƒ£éÑ™žë¡š=ÓÞ$qÒHû}ß&)`ú9‚©
h÷¦êA›ªæqLNy¢½¡‚Ì„°––&±E&Ö<¡V`M S'&Q2Äcs¤(‰°ÞT55UóPÝ
õIÎ÷i‡¼cªºZMÅTn».WH‡{¥3ÕL+ü ÌÔƒ
Åõfª½™rsÔà×ô“½“b-4¹	<-)t—+*©·."‚	£§
9£åÇ›à,F"Q’*Â,”Ò*k­æ$F[‹´Ñt_Øí×ôòÊµ3Ï†³b²ôãúi”­?.íÔÏØ™»ô­ Míä«Fþ»IE¢5ß‹ggE7îH_¢J9L˜(m…+góÔ(+?žÌæMÚlK‘˜ËNÓ¢)Ï.ŸæQ©"qI^Ä¼æA+ŸjèéÉÕÖÝæ¨ˆówtÁ¬åX;¸·—!±½·WÐÝ9Mp§léa¸„½ <ÌL.›7(ÇtÅº%<ÛÉ£6“5{¥½
ãFr˜Õ+Xï*¦«*3¹¼ë ¬«¹êë…¤>©Ý®’¢™Åk§þDx­ÅÑä^élAÎ€rÔ¤%ìxIKº!%¢YÄØKG3€N‰[£A1MHÌ%LíàcG4‰žH1PiÅ4Ø·1¸'œ|”ñJœP!ÉÜ$Œù¯ÖÄ¸‚ËFäCÌãuM’!:ÛR#Q#M2QÃ¸`íˆVvHvâÿØÓî—tîÉA§ä€-djËn\ë)@¬[ª&%IÂ¡äsLEàŠ %5Øa4×º£µû‘cq¦Gõ´á^iÃ~×þÚp;àØ'h;)ˆg»iƒ¤rÛg}.Ë5Ú K²i8TŒçGE(ZÄ k÷KÛxÕÿ¬A5XµR7˜jÔ› »$!u¯Ü=Á¸Æ£'Ç–<2–ùqiÆ[7÷ëFïá*°#@·q‘@c¨å`ˆ…Ï("¹cÑ+A9%\9NÁ±Ð_®•sh­%ˆª}U[_'IªS×Õ¾ÈHv=žù}¶…óÙÁ¼*©¿y÷¹ø¾fpUÈ¤,ç2)wñ¦#ßqÅb?£OŽø®_R\Ú_q^¸æòºü£Ø8t»V°Æï.Ò¹çé·Á¼KY"§`"'eQ—â²[\<ú¹Ü&ìéHnuæ“¦åéH—íœ3–âéž<y—š‘Ï[þ4ú‡ÍüŽkø4r\½ãFÁo£ôÛÓb¶ý¦<¡úyž×¾¼D)f8g¹#D_}^ûhd/•ÿì7)e3G€>~¸8ÿ£¬ä²ÉQ>ûW³ ^ž\nn~z’gEø}Vî÷õfÿ”—®Õm‘vÍ­/Eý_)g¼Ø&^|oüjþžˆ	Ñ»1!Âwò+LˆÜäWTú¶+zÅ a;¤—m/ó!ñë‚Z…wJ{Ù„ ÍãAE;+	
s´P»Î÷mˆÍƒ‰DW´»Y¿~áÛÇ`Í›{Œ›˜åÜçeLÉ8^Ê»óØ
nârã“’¯*·€*B‹Š „ôÖ¼·æÍšï‘A
¼g«2&ÎúoYs	ø†5'2Èƒ†ë¯ª‚¬×)XsùÈ­ùãS@þ˜Öü£O@Õ<€	æ Ý,Î)¢aA‘ÚºiŠjj˜Òn=B)¡6ÑFh ÷o¯\¤Ðýc¤þ<cõÞÆ~úÌâZ=Í×LøÒ3^ZÑ_Ñc{>Ï—5Ï-îžºQ³zÍ‚yµ–QµFæ&yÞÎÓ(:Ÿ§÷ÅI}µÓØ=Ôåë¼zNâN‡öäZFvRT0-Pf¾&êZ#|.³²*_æ(/óˆùàæÚž‡'±½**—æ>­‡k‚5G•ÜÜÜœ®Eoü.\Ùv‰t*8Ýiê$G[%Ò™[§®oNc”È°ÍiËÄ§£€ƒŠ1^§pÛmÅHyqñê1­aËµRe·´µv`ÙHò¿z]«rwT§ó,°.JÜmm`U"Õ˜]C®]¨{Ý[yl7Á«Û‘
¬8ÈÁ*”‡ç9¬7ö»b?¡©Y2wSC×=?lm¹Nidõdš8A*Æ~1˜Hk¨§Z,!Š2u,‡ˆ&JÇ\$XÁ8F VA…bë¸§[?Ý*å›x3C:âÝ,¥rS¾É X§[˜Ðˆn•cù‘ÒªæÎ„Rï¶¼ýÖô	Ãf¹f~ ú´>+ƒ&mâÿØJÐcK4{:ÔÓ¡¶th±«‹ÐŽ2×ãDË0&šgm¢c_”ÆÐD'FêŒ&!2¡Æ -„À@¨F ï/s×Ó¤‡F“ò@žTD`€›LÚí–‚nÅŒ77Ùr Ñú6îˆS¢ä˜ÂáQþH	T¿”÷úWvK[b%k…	"VÕ%ëê«0j±ª5¿vH¸j^÷ÇÖ¼~¿€WKvµ™;äÞ¨X°Ø¶çl8Û«•†Qb´Êwé²¿KˆqNØ¸*f0Ã¾ž—J3Ë!fŒ0#“ (÷ÿÌqÍM¢‰±Ài}Âð=„íy¹¡gÎ³¼îdI¨
½#=éx6,lw˜"(éá¬,8°ÊÁ•_{Ž0™ã….©§Fîz'ëW(Òum\ß Ñe^–îñM=ÎG¾À°³åî¤I‘ÁÿäUQ›ä—²±?·üâ£òÒ£Å5½(g^‡`^H•ˆŠJA'¥¶Æ‘µ¯j’f³<*GNþt®qòdO9°‰§£Ã´(e°¾êÄ×	˜©a´Y¸ ¨Ý0ÎR¿{*-w.ÝÏ.çWÊJ"1‚l“üI˜Ø“™¶Åý$p£Þ ¡%Œçmø—fpøuùkV¬ÓAm9 rO7à€ëoàábÃ§«­×!`ggo|Á1ÇÜÃÎzënlæFWóªÎéµ	wvö<Q“ƒ àtÅžƒA¯¯Tqoê7væ'N5ª®ttn¿˜¨¥Ã£ Ï†—ê(m~yåÉWˆú<ÇýóÍ‹î›ü/«¯:G}åLm~ØÙ´º±¨.êëÑåð­ý%¥~™ØQu7Î}+Ø7ÖØ¬óyçuskå›Vû™½™Xû¥ó÷ì×ÙèH3Ã¹¶CÇýª'àúÈŽ£Åï³É½<ò‡IvÝý@+Êm£¹Ÿfy~DÜ?õ"
ÿ%KÅa:Ñý"5êZuþ/ÜC¦ÝÃŽƒìQíùââÆšcÌðŸÓK·½=Ü¿M¼ ~=I§nUZ9¨›_`z•fã€×¦þf“/}[¬Û+V•åÉæÎ´ÿª *$Ë%Ø¡5}>mœ¹-¥ß½øê¨àéæ³æR°)õìjE}p9l+í²XkýJpû:nVê£ºecšè˜,ëd‡¤¤Æ‰fîPÆql5á	ÐB¤ 14–H ‰Ò0¶ ÇH)Î€ß©Nè¾Ê	½[¶wË.Ü²ˆn»eZl÷ØvË’­RÒ2ºé– 3·ìâuy|nÙ.JéÕé önY¿»µwËönÙÞ-Û»e{·lÜÞ-Û»e{·lï–íÝ²½[¶wËönÙÃ>ŸîÝ²Aûª{·lï–íÝ²û^Qc-µ­¡–UFIË%ãÄBŒâÄ'Qî¨8QÌ&ûb¶î·œ(X"0¶œ3ÄV 0­z·lï–=ì–ÝNVçÕ²x÷V)¯–•ÛjYŽ¦–]¼.Ï-»TË’£ºe—Ô«e{·lï–íÝ²½[¶wËönÙÞ-ŽÜ»e{·lï–íÝ²½[öHnÙMŸÏÜ²!ùz·lï–}¼nÙ/MN	@N&Ë4÷5pJÂ¸6PPn9Yl(4˜B_Ýr–›™h_A"KU'–!÷®#Pœìq½Ž×75¾J}¥’ßr;‰Î—ÅÏY6ü÷tZásUî†E,qø^Ú,eúù‹8%§'/#¹3Œ¤_½ëÕ§²ú¬‡ÏÊ#èéÉù4RÃ"_ÔÂ;é©æ'{§káÍüœ~ó‰†I‰qQ8™Ü‹yiOO|¶«¢Å[5K2æO¹¿ê²9¾¶G2oWy­¬9=9):çùÇsŒÍ½75Uþ¨"]–*3R¹–¹nKíü·d¡Q<›FWª€>‰­ùPä4òçøìWž˜O‹Z,=ÿô:2i’X¿|óžiëî 3ÏÜˆ1v8U§î{pØ~©ÈþI6²J*%Ü]…! /ð°žÿ“sèë¬e •@0V]äË`þ6P7É?/~{OÞÙ¶Â¶»¢}mUÌÁ*Ie¸ûõsêlÆïªðÃTÙ—ÃôÅLY‰rvöÜüs–odÚçÐ@UZÏ-éj”^¸¸îµÉªÁ`¥»¤ K§×j\Ù° ðb’Ýäöµÿ©²q4p6Üh5õvX/Õè«:œðÌcUçOóXÞ~ÆA,p˜ŽãLML%\åª¶€»6oÓŠu†«ÎrêÁ²a6yåÌ]vYÙ{AÃ¤ |mÒiVù~Õ ¼°C«Çzj ^³Ù¨úi¢’ôpßÕ˜åJ´Ù¤úé•W%ÿªì·ê„Í,h”€ w¿Äz‘}«lZÐö*|žØÊNCA“ælq»ag¸%\åðP¯&êòÕ$«œµÃ&ÙZ1ì¯f´š¨ÕÅÃjßøÙÙ§w=ìY.1/f£—>_×mu¸!O+ÌRlÀ^¤ÓŽ&ùì¯Þ¿
jnÜ.Û›ƒÐ‚Õ+·¦½}=ò‹ÀŽš·tw¡WÓI6|yâ°¸æ™TþY½ùÜŸ¨nad.¨“_O&¡<"ì©½vK¯Ê—ÍVÔÙÙù‡nŒê/fYÔ_Ü2;ÙõÙ/ÃLMƒjØ,÷KVý‘&îïn¨þ¯oLm˜qAïÑ¹ÎF!­
›^Î¯«EÁ”í|4žM«o2èžOíõÅôvX=‰Áýããë7•HAëµ·*óAÏÒ¡u8XÚ'eÒÃ¡îà>[ .NC1m5í:;LB:/ðÁºW*X"½ëïÞ…Øº ·êJG¿§#“ÝtÔ4;šU” óH+ÇJð	/U®•©Žî¬±î#	>ËO!Ý,@J¼—!ø¬;VUø'Ï‰+Ä˜ÁoHöòvCž‹ÀÆå!òjVuSý ƒ¦§÷/‚fã@°lj_dÙaŸtðÚòC ¹xyÃüRßWÄ0 Õ•wÐ#™› ©.°iWÙ´Ú×é·Î|Û'v:íˆ@|œd—÷^¾¨ž4ÂÌÃ§Ÿí·jÆdºêÐ‡ »ýd/CBXn¤Ùê¨˜5aÝ6N– ÝAúbMoz’‡Æ*Œ»^ŒÓQ ý
›I.¦jZŸ	¼ÍY|m§WYE›`#ú9hé4è>ûZÝ¸´CFX€,mŽä›Ví˜	ê~çã;Ý¡uØÿí7g­º™x?§Ãê qXLñsúíÍ$­Ä„=Ðl<ô„Žúl¢*
O{Æb0<ˆZýžšK[=üƒîÏ­ÔÂXGÐ˜ø½’×†­?ºiÎ9é‚æè?†iÜÍ[ýÇ¤£uÞM1ÚOôƒÏ_B"´w{‡ Cj” n®È}6Ë'ÏâtTH¤´Ó=N7>Ê¢OaÕÇþH¦þpxxâ†ž."Öþ,xÖ?Ç¶8ž…^fí„·ç/¼ãðOvŠÂÎ½®sû×›²ÂÊ®5¬Ñ;º„¬èµ&g¸¥"d‚‡X…Îý¯àÑP¼çGÕ–(Â‘HgH´3$^ô|6ÍëÜIãz—ªÃnª«Û½J'¿ª‘hækÔ€žz«UÓûWååvTø¡‚¿Ûê-äoì4O½„bTÝŸ‹ƒ/¦Õýzþáì,°cý¡™þb«_ÓÐÃn¯ã,`ãÁ|Q‡DÌ¾…;„MT£„Q·¹v4àÈŽø…€1äÐ•œ0äè…Z0äØu1`èñ‹ vÐñKu[ˆJb!^9¶ŽXk)=9z©ÆªqðJlUë¤O¡ý¸KÕtÚBVpð<¤rd©Ô=²»=wü9—„ÇÖƒãÓµÂÏáÑÖšAÆàbÍH\ÍˆUpMx, †{¾†³¼Ž»¹‰7¹¦Ÿ2ØáWËÉUËWî

öôÔðäºV‚½u|Ç×Ú™&•‡dc[ý6uX#º<l@µª¶\¶¨6Du¹i÷ßyö?WŽékþíYñåžßó«¿O¿xßÁê€¦[A'·ƒÏéè¶n†¾¹«ÝÚ¼£rÖP¥9O0“Zs¤‘UœÆ2ˆŠ-KŒ–RÆÐRdˆ œ"µO¤faÚîÙ%ú.õ›™†‘{Ï´ßàU¦Â;â`'‘ß©7LÿµLž÷þ¯°$}W«‰âlä>®®OÕ´ØŠé¾¼òõÜ1îàôrdÏtwíÛäwê‚SE×ÎÖ«/vž¥Ï~uÍ]Ë¾äO‹ý}ï?|þõüý›Ès{zrR´Ãýÿl4L¿ØÈ=É—þªO£›«T_­š¦¢Qªm”ßŽ¦ê[¤¾f©q?¿ŸôD²é•ëí÷©ºè/ÑPÝÚIyÑ|6öËÉ¼øÙo?uk6•{Vý.Rÿf­ôw´ýãØÝòhê@âI6›:²^lÍmä&ú‰Š«Üñ¶ØNj#ßCîS^nÂ=Iìë-7¡;Ò©uà‡èð6*¶(z­‡¾G‹­Ú=Æ³³ßÆþa.û:ÓZùAëw¼ž¸þˆ‡ÖïgÓåùöù.˜GDå#s¯“[ùûœå®]ï²,/ß×0GF'Ê' |zRvñµº-6ÞÆåc¹mê{óx[]ó³gÏœñUË®îå³nú~¶z•ëUòÆsúÖ†WÂÂ›Û]™`m³+|YéðV×yË~¶œ'jd&|wþ¹ýv×ßFùØêb[spe˜]ktDë=°RÐ¥pâßî:ä÷ò‹É­êkF@uâåÝVâÛ6¡…ÝÙ.Kã±ŽRt¬x‡}­•‘/GÓÝœ8M«)r1¹©€µn %;bîŠ#–ú…Þ¨Õ%HAk$ñ„B( fœ"„!c€BÅÌ*„´FY‚ÝÈ¶Jˆž°ô„¥',ûËÝw\â=„r¹EX'›„e!¬hMXT¸ûÞ„e™3ù¨„¥³JvŽ°àÇOXSÑˆž°ü „¥~	¬ÜªO#æþÏG®9‘ÐXÎbl¥‚%Ø'çÒØ!c£Æ<˜Q	¨',=aé	ËÂ²£ú•pŸ‡Åý²íaÁ[–°âÕvºAí‡ïMXŠ4b-êîÖè„öd¥YÙÝ‡EVS*Õž¬|²òÛ§ó¦<žr¸k¬A7Ö’×bd’ùB­ ql°!°À2¡Ý'3*Fœð$á C-”ÆÜJ¥@‚•ÖA¥š–é2½Er·ïj^Ô(r¬AÕ¦\^X?èlhžŸFâZ]&þœúŠ¯WEŽNþöÛ(õÏ,údËù(:7¾Ynâœ¸Ã‰5ÿæ³o.gT_
éÓ//#„%‹žøòK³±/Àd¢ø¶ücôó÷Ï»éî{_âMN)ãœ¯[IN fp±cËJB(âfÒÝ-‘|ÍN"


E¸†üH£¯>RËœÝÒº*«¼65¬¦kÞA{YÌ=“¦Ã8;{k5>¼‘Ÿâ0¬_ílRf_=¼…UÚ­î¼«{ü™Ü~Tux£J0ÞÅxX±%.ê·OoÑ€Â.Ðïn	ðBU&·ìú?ÝÛmÝš±››üórQh«´ÔŒª*%„BMÅ®òPÙeÚUg£ÛÊfápÿåÇGX¹½¼¶›Ðê M¾Vl»s«çÉØQˆnàièh”y;_5#†#•ûºkÙÙÙ/Ï?w	÷Nuô¢—p.P—pÿñþðnÌšpŽ¢Þ4_ï÷t„»ºßiGSÛe6¾êê%õ¹;¤Ž^õî¬€G:\Î¨TG÷w­ÒaÅžèp¬ëŽ5²7]!ºSãŠd©Á@“ÙÀ$¿u4£N¦yW7è§B
†Ê;›¨ò´; ŽÆfÞÝ0Ï+‹`MípT‘p!Ë™+ºÁšM:zcOµWïW‡g	;.î}•ÁþÀ{
”‡íÙðëøs‘ýx|Œ¼-=ÕïÎß½.‰4«î’Íƒ\¹2ÝÉ{;u]’9{\=4}®(5	ô§î :îžz.…z‹ü+ï:+ëš+ç:+ãZkÕškÑºëººkÚk‹pšÎÃ	_8M	¶øÁÆ3Øu½òÓ.ÆLðþ¯RÛð£GÍðÜJâzÕôdbU"€æK
¹±Æ”dR±MeÛ8ÆŒsi	3Z•ÍYLí£c1:V–¥£x£, Œ,·Þ‰Ž	ÁÙft2BÑztq‚d$ó0cñ^£`Mt®Í¥#[7Þ:Î%Ü“<Nœ«2'ßç
»Çð8W^Pœ+ê‘Ç¹Ân24Îˆç
„
ñp†B…x¶±Bã\pAq®@¬À8W0ZHœ+,4Îç
Cº8WxË‚â\uàâ\uàâ\uàâ\uàBâ\uð‚â\€Õîã0 °8WVHœ+©£W½;+ç
‡êèþÂâ\XÕq®0  @ R@œ+) Îç
Ä
‰sBÄ¹Â‘*ã\aP!q®@¤ê8W0PGc3(ÎUç

‹sbÅ¹Â°â\Á@‹8Wgpq°*´€8Øßâ]!{-úxWïêã]}¼«wí?ðG‰wÍ¦‰x´A167™ôÎ¶EÀþÎƒ„.ÊÓ„Ë"I–ØÄ*Ý_Fp+hŠ”´ŠA¨…81áº¯Ð&&îƒeG–íÝu]¤=®²×öËðuµ7ƒe”2²,scÔ–±ÁÁ1úX‚hËìv­ƒhUÒ:¸&![’ònƒk•U—~€àZØ=†×Âð‚‚kaP<¸v“¡Áµ@´àZ Tˆ[5*Äˆ\„
®b×‚ÑB‚k`¡Áµ0¸àZÒ}×Â[\«\«\«\«\«ƒ\¬öY‡…×Â°B‚káH½êÝY àZ8TG÷\Äª®……D‘‚kaHÁµ0 °àZ VHp-* ¸ŽT\ƒ
	®"U×‚:›AÁµ@¨êàZPXp-+(¸†\
®Õ€®U¡×jx
»º¥ïƒn}Ð­ºõA·>è¶ÿÀ>èÖMÐm”úWuð2ÕÔnà¾	ö'#!8–…Ý;Éå˜T@« "Êh(’Š#ËWš‘YÍ¨2@qÂ‰ŒmX€€D0lÁž Üü~£ò~ý<^f7Ë^WÙ]é>1¼e´m™¡zýÙê+÷Q£7Bš˜èÿ€ z2ÿýdÇµïcOÙæ“?œ}À­ì‹”ÊÝÙ™ÄXlf_$‚0ÅZÌÌ="Nð"æv8h¶ÙÌiƒƒcì´´!´'Û´Ÿ‹Ðëüš43cýk`c6ÊÒX6µ(žìÛZAþâ*[€îÃ?þÝõô’ûÍ„a•7±1ú?Î/þ ˆcáÿ{6±ªj	×ýc:º­ôÐ4F¿˜N²/G3ÿûjvœ¶¿õuZ7{û5¯„6ÎÁ—|â'ªõÕX—n¾Ü¦±o¤/´êS¹<Ù®°ºç”©³9Êø³@È)»õ±ÄÊ«Û‘
¬åûK±2¹Û€uã;ô„÷ÞU¨<%¨´ðÑ3¤ï8°EÅ_H‚*þú¯Ü%ŽsLÛÎå zûy9ˆÈr!tºxí0á›—ÜÀ¿÷U]ÎµrY°KL‚b1&'˜Q@Â“˜IPÄ-bÞ™§yL L FIÌHdI¿:èfuPfŸ `;û„#‡;WÜ‘ôúê@ºÃñzrv"‡au×v]:(ÆÒZÔ-hÒ)÷_tG{Ž/WÎ÷#r|zDŽß;Œã7EåøMñÃ8~Sô0Žß=Œã7EãøÐÃ8~pMŽ¿Ã”Crù—èŠ³³ïËÙ`¥¡FÄÿ¸\@ôŒý/ÄØù¼™Ën¶Ú(¬”õõ¯¹0 ccVD€$–Dc+5„VXN âR`÷ßXÂ¥iŒcÖsùÊ1ÛÿÀæÊ·6ÇBv—Oæ`*·¸¼€€¬ïŽ¡ @¸=æ.yåƒŠQÖ³üÐŽj_‰I6*¶\—ÿWÊFZðÿ¦Øaü¿)z(ÿoŠÆÿ›¢‡ñÿ¦èaü¿)zÿo€Æÿ«€kòÿZ†9ø¢+ƒšïhÍ€ƒ ­‚Ä{ýš¡_3üXk†åÓïÀÏß/Ü…@HáØ‚ ’20!Ø±QN7Š:Êª¤TÅ’)`Ð3Àf(¡ä7ñW,7]òÕ_Ü_yà²aYå½X<$³‘öÇÌëÍk5òeË]·L#?hÝ`tzšE_Õ$ÍfùÉâú£ëûç—ûÝ÷Æ&é¨Ü{¿8r¹ôx>ÙonBï/\°*‡åD^´)'bŒí\d"·Kž@½†{¹Ä`-]Óa+Œe+KyÕ˜¬±ÈxHÅ][ìËoØO­k¤#ÌšÔHße§:r½.=£aó[ëÖôÌ†^¿ZÜƒÐbµuâQÐ™žÍìc3¬khLc–X c;kHKœ!J‰vŸ­¢ša&V'‡Ž®2+Å z2séÚP9à1%xÓcŠ8»µÑ‚"¼Mf0õ	†ÖÈ•õ¤Fšuè0½×ìB¹HkvN{Ã¾©ÞY“ÀÔšÒºç/5/ßûº¢/Áœ$Ø³Ó“—£—oƒ‹Û|˜]6§-p¡ÞõÄ–î©K•#(FBD$Ì"°Js¢1Œ!ã’ †)ro-bÆ‘}[±ÊØêÈ½DiwïY™µðýùQ^Üéü³£ÃaW™§?\RÇJîÀ:Ä©½Žªcs|óDü}MÕ‰oÉOyôÇÅo/òÓèó•Ýùª©;yìó*f‘O™x»ëyØ‘ûý«=ñÃo°"GYÝ:ã1¿èÓ(ÏJ¾¤F·ÙÈF±õ9uS5‰nÒéÕIÙ¢Ó«(¿ÊfCãŽ‰Tq‘,šå¶ÌÚ8¿ÏIzyå°nÔí½øyã°~A2º“y¯Ú EJ¿k`C&ˆ†î[´ÎÙ{8(zÊ³ :‘{­ëfW´&6`ÔŒØ|;;+ÛSAªË¯n­
éî<ÆUvÃ?tÜö);‰Néq5t÷èqËÐnèE9;wÍ?rßÿ}ð)‹³é'gò¦)“DŸ¡¸C¹!û»TP'5x”)¢Ò0@…Àœ)ÆFqn¸€ ÅšC›(Ì5°ŽÓãD(,$ïÛ”á“˜øh¡7«ßùéôÛtà”³&r}ræþCy‚Ž%<[a¶+¿“ÜøoÏWî÷¤¢¢ÓO^ÓÃ™¿Üßž:^PØÕ¹Å¼¹¹9-Afa3oô³Q6¿ÎÕôzè-îiô»¯•c“Ü{PNJûnï4ÈÛ~wÙ85ÞÉâ‡Š§åAQ2É®#¥µÍ‹„Ñîž¦ùI‘ÞÙ¦ŽRØ8ÊÓ©ýþaspîã’HŒ Ü”š9£ÏÄîm#¶¹§Q,7²03IHGØlàÀ¿ƒÃ/À½&dnÄ!–õMYcÑ ›Ú;O@£]ä®©gg«¶´ÞÅ¬Wa5¶ðÎÎžn_½x÷ç/U)Fxå¶ÝÍ~­ljøÝ†´ðVlôM'z=šæZ:àq,­Ò=rgÜt´t:¯pVe°Ï±+Ý{¾Ëˆi¢cÂH8Ë 	Ž9Õ#$šYÊ	JÆ@É$‰9p4DÀØ`k†À$N$C4&Žzô,ã¯Å2Ùf‚ÂÝ,I)·Y,Cˆ -{¸ù\¼ ˜eÐïÀ2–ÝÔ³ŒïË26'èîYF¤£g=ËhÃ2Œµ<Ö¶†/#QŠ$PR¢U"!BÆïÌH—€Îâ„ ­²k¬`*(Ð=ËøK±ï°ºPÜõel)Z½/×—±xËhiÐE0ÒDòWe›“óFH”¢g?(ÃøãÝÛÁKguw('Â«K‚EAfëI'J$å±Š)Õ…’‹<!"Vî³aœij‘û­ïÜr­(ÒŽZ¸‡Fø2Ã¯Î¨Ìb×?Qº,Ö˜{š'öZ’‡µk—‘4•L#pJ<_ùGv5Š^f7jäµïÞFónžøãúúöäË(»yîñÇü·Ÿ£ÜÚ“'b‘Ï™E¦ò4dc[Z[]_§Ó©uvÍ·uzûÌs—ü™Îåßƒo×Ã.!ó{KòóÉüJ®ùêÖË&n&ÊK@"›:
1‰.>¼|þÙ›2ßèüv4UßNýç³³ÅÜ¤Ãá‰Ê]ïØùÑåaQZ°h~iŸ`”M=ôÅ}›uØïÎQÖ†÷aA»“£‹`±“ @ý0^#(ÐïÚY#(PPDPÖZçŸ”ïÏ_Ž…ìë‡ÖT‚UéÂTc}ðW¨@•äsììÌýU…XÅ\Ö»«²qwçå{boÿxvvQLž•Ç~¶ß¦ggýâí÷lbSòu,CFüÝT»ÕœÉü`pï©ûO]å#\”9£f‰&±æ*ÆÒn†,E V	SHL”p¬U¨Vc† I÷'GqLãDLp-í£cIÎÐ!ÿ_7-ÝÖ6×*Úûæý‡w¯·ÑOn®R}µRM.ÏÊÁîRÔîoí
ƒWJ¦ùÉ¼ÎTd7óm"ór¢®¯=qM¸V_l¡b,×ôÑUzy5¼uFuì%Ž'_Õ05+ìÂ¥1)®»8ØûEŠ±3r÷ôêÃ»-yæýXÝrLV]±it9`·ÑÅ¹)ƒts»O¤¹nw¤[Þ²…ƒrøw•óÝùçÇkƒwõH[Œ™DmpÙ ŠzÂÅì2ï—hn¡?èù·ÏHãÙÔþª** 5hÎ‹,Ve i ûòÕóÏÏ/l¡¹®w·/ÝzÃd•¸sRÖùMoBç ™žÕ¿ÁÅY¿LÔeƒ³§Õ•s6Nx]Îà5OšLÞ.²Ù »hv¸ôjÐóÑx6}é¦òØÍËõnòmê,±ê|T¼wß›÷™±ïªEÝ93w¦* ýËÆi!5ÀîœñÖ›Îo}vWT×m€ú±ºÞÛæñ~I@i«“>ÙR:ÝmÓ?ÙË×ßjŽ‚Ov¨¾½Sï¤‹ç‡KA7h»ƒ\3XõYq~A»ï×û/Â§¦ÝÏ)úbq×1´[¦\«zéW±õÎøÃ½W/3·ÒøÖù;^`»A=±E µ^Ãþt]¶j^ã‘»n jÍ‚{hJøƒ’Ê„÷sÊ³8=Ë¯ïœ0ÅÞ¸‹eø¯kUì•	<þºÜ—¸Eæ¡oÄ™/âëtØêxw%÷ø‘ßrŠAó³éi«“Q›“Y›“y›“E›“eó“Y›Þf;’ÒÕ:»ö Ü8»E‡»³[ô8;E­zµj9nsràÿ—?>Œø¢«\JuêU×ÙXX·´uÅçÎÎ‚¤þÀ_ÕÈZ«ÖôçÔzà€‚ºn¦.¡FŸ&þ•+÷F‹ëfëÒ&«Îæ9äÌåâüb6öÃ7ì¬r’ƒuuøÂAä³OCû½8óõ7mÇA~ºnÓÂÞSMçf³}Ä½Ì¸eû÷C¿OÚÚ,ÎÝ«=­ðmXk¼½k>Àév^Ÿ«´n¿Í@p±Ô"õÂ‡–	±TÔjÉðiTbŠ‘5‰âPQa™€¥ˆck¨¦†ZÀc|’S£ö„ŸGy‹.½«!ÕEßGÅ­Fyy¯‘ª<Pñ“%I!Z N3ÂózÜxP —:ÿw=™ÿý¹îžø&éÈg7‰Ôx<Lça©"å‰åŒ¬-by×§Ñù4RÃ<‹®ìpì;nl+ª»žMÒo'îÊk·òÛ§swÌøixZ¥w‰FÅÄêÃ‰nºpw_öÑý„·ÇXE@PÞUáìÎ‡Ýáb³¸®—Éã„mFÚÕLŸÈ½«qj¤„[î7jž®ª'Zëq0”MÒ¤ì1ä‡ÓÉh¶A+1ïLsmÜ?-V]§~ *–ÒÁØ4:õ…uš©Pæ¸Dbx‚¬›Œ„"T„2	5˜	cuŒp¬©"	UTCÑ±•F™C"–¹	Y—Œx;aæ\±nî®u[hF
È&Ra=Ü)þ=ŸFÞÀdc¿Mä•äÉ3Í±š>JmKêÅ0»q¶bèã¬›Ê˜øWãä¥[t}ù)¬?q¡9^+w¾O>æôI»æÚ•Å=^ÛéUfòHO¬rDåÄ%{SÎÖ^¤²³Y«V9¤ÑÿÏÞ›7·‘cû‚_~
†g"ÊõÚda_ôÞ¼x²,—uÛ‹Æ’»ªç‰”Ø¦˜º\¬R¿˜ùì ™ÜDÈdj«âÛ.YNHä9¿³»ˆ˜t¾Uû«V¹Uûx?>¿)ê‰M#[§‡”Z:fàW³ðŒvžüËhw@­bM©¯dæ¢n¦T,Ä-|c¥âOÐ“™>­ ànžÝ|«X–;OèÎW{õÂÛ.åÒJ èkÕ”¡²¤/‹wTRô“[ÓCzãfýÞµ*¶z×vÐ|hw3[Þ”äxqSÅV<˜°²ôi|±’íbÃ{påz±î2ÒX­ë@ÀBXj¿Çè(Ÿb}ÇÊ°Ò¿Z½úÇ°sË+,„¨+Í£Üt„DéÐK\¤Y’gã;×?æ±K•àÒÙÌ/žk„Eëº¹gcûy_×›:Iê=ó|h‚†…<ìuñÇa²1•æ6’ß©Ôœ—sÑ¦ã—à{xó6yüVaaŽ¶†=vy½z&©øÙáï;$ƒ••~+¢p‘H!…€(!‘X’)Ä¢ŒEâ‰ÅÂdî·ÒB 9’T²TA™™M¹`v/³˜iŸCÝ><=ñxÜáóÍð»´Îº„ì‘þ¾líÈJï¡ê·³¡=œÛ|ø½0#McÂ'³ˆp/”í_|éÜ¶¥‚b·-à³ðhìpƒS—Ü>œáw»ˆÞ¥+û¯,(¢¼[…‰(_,{ûê¦?¹´8éU;í9û”½0íù^=Òt€tnpòv¨|2n—Ä§’ÏÑèo1‹·€6/âÑïòÉJ%^_ß½=ñ9an=Ór»ãöUn!hûÌþY*ÅN¬à~ç³ØÝoÿSýP­ÿ<üý´ÌÀŸ¸×ÓÕ~cAvÿ®]®×Mú—4°/ïi0®]Y àÞ+çKÑúr¾Œ¹þKqìˆ`±X«b€xTAßéÚ\Îè¼ÐÔ±™ÙŠì„oWŽagl¡¨µ
êƒáòFÜJ–z¯´vZQ¨¾ð"ÝÉÐ8ÆÖà&K’S¨]HìJ{ˆw¦­›}:ÌÓIQ§¼Öü2µöÔj°3	Ëßw"áSï# »¼÷ðÀ. =3WŽp^ù è9®¿DÃ¡E¿Sç¹v¿ŒÕµzn®Ã›ŠFç>)ô›eR‡—1þå³;+""cjûý.@ gZæáîùo¦ÆnºHÇó
‰¬çœ–L×|æd‚jLÂF()Á†b¨ó2Â„+Ê$©ÕM2.Œ–J'|ƒBâ6S¨¯OÑ¿×¦jAœOàJ9ó½{7óK«Ñ÷v§ÔÚÉüA¥º³øÄÖÂîáû©Ilg_©=;¥7õ5Œ¼IÞ‚ÖÇSûRõØâóÂ–Ý²Ýýz2ÐWL¥^qÆðÄgµf“þº.~ñ+å-§k¤ùà'«J¨NÇyã×mþPnwoæY­EÍ‰+5´_…]üë¢ŠK$z2õÀ_Ñ€Ž@VuÖ7uÅV©+&8åK:—VÒÜB–ÏÀ«]ß¾›o{Ý9ì^Î
áy]žêšB)E¶c(YM(¹¼†nŒò‚üÚæÒËÒz..÷(<WGÚ?²0žN‹,MµŠñ×”¥]Y¾%¸üØ¦*TuCêB ´Ðÿ·b|<ÕF“„1($#	OM’¨LM@˜ šBŠ1Sœ†±°ƒ$¡ÊÂ…”³M-;ŽÕèÎ›!}õ‡i—3Úÿl·Jž—^íâDî÷ö*±€£ÞWwÎñí#œMÎ X^Ö¿[,&áÝõ™×ÓŠPK~óá¢ß™2[Ssj1iôó	]¿Ï€Èå÷Ìrx}ÕI!)Y¹á•ªN²h·s±¼òÁŸ\àV#»¹ÑŒØ•ï*jïí÷[¨V­…Ï%àO·=Ÿï,H©Q›Çƒ[!žÞ¼ðP© gVqv>“ºVƒ­Õ'A•h‚
ˆ-]º¦O‡?x`¯óeo´x›5œçßÍúPÁX< º ü>­H8	²j>ËìO×*†²$ÉT’i×²P*¬ø¡Ì•¡¸Ð2K”Øè¤t<¥,F½ƒ·p{žÊù©,‚¦žNœËòõ«›IßÇ#šW?/=¥µ(î-¹žè«¢)¨5¿UwE¨ú¯½‘ÃjôSûÃù†G¶–¹´•bN1~Z^rÀÈn<j»ÿÙj–†ÉMÑ.ýÕØŒÞ¼ò‘wmí-ºÉÎÃ:õs.nÁ87æÓ€’ùŽÀd%ÎÝj÷bCÓVÚ.ÅbKt"N‰„%óvÜWÐ)îÿKÁ&ÄÁm8€Ý­ °~,Ü|M[Šg[1"dN¯ø9¨®œLp÷yçs7ÑÞˆ"Ï²,ûÙ´`_}Ãkd{°¢Ç“[ã}þe}S<)(p5±›’1ž¤¸ˆ0©“„#cõ9C”ájž*@’%i&4¡$E:£Òœa²©Ý„ßÍbEEóCõ'ÎË ´h‹W½ko*×¹•ãwÎd½`!oYŽvQãÖB+‰[ìåÈù×_\øá•_ËU#]¹å®>
|jÛOÓ¢m…³¿»wéÔóYínûS¡™·GN’»rÓgÏ=ÍßOs/”òÎòvš·¼e^ŠÐó2C®$¨¬hvöw¹§`×÷4ÂÕ?z»\÷ÍZocR®TqF€a±Ôg4+G”¬~uwÅ;¸¢L]l«í_ÓýÚ’O“IV¿sÕÚÙ9(P[ÈúÕ×$®¤’'W·±2Íˆº[Uiº¢O|?e©êW™æô£müÕUÕ&¸PSâ!iŸXõ ôgECŠr±îÊ³gu4_×”rÍuÍ,M°²íšk;=y€EžÔ\Íy¨^½õ8²µVTkÒ™ixá’UIF¨ •IÚ_„£a«ÑüšçÍåÙØÜ4JðjØ+LÎµ?7ó‚æØ,Hèž®¶‹šÿËd4ôñ–nOqY©ˆVó%¯N¿œ„c+¹8¢Í]×­dŠ•ë`áÊ¸´î¬ƒ+kãÆÊ¸pÜWwÕGF»`—ZØ¢&¨#rkˆÔ"³²øª,žj‰Ÿzâ%­t6(7Ò4gâÑj˜8[eåÿs&±¼QîüâYß~úÏÃû=zâM§ˆÌÄñB“HØCüÓÌ(DM¼I•a’Jšh`¸Âˆs“‚„ $5K¨¦€y* #LÁDëŒqª™á)FY*7˜TÝ&Û‡=ÅûI¿OnÚÕàrâæõøúçí‘Mnr÷æzmëO¸Èö6²B€ûâ¢VÇ•iù1öH–m­Ýö‚¥õN]÷½YÑù¥˜áë ”¥ÂRÚö;è©~ïß…É¯_îÀûAíhW“ãº÷oã{·®&×jÐvéÙ*é9[éJ´7²š¢òv‘é1NôxbÙÎ³Öu>{ßìp0ËÊtÞÍòÑ¾HˆîO¼ËÓ¡ênë½Ð7Ñ­²8ƒâœŠv{oÚöü\ˆõÐdö¨¦Öh7 µ|@nÎukØdÉuÍô¸½x–\N ³èŸK®¤®ÉÛrè– xÑE
%qÑÒna÷±u¶~f/Åa:æªï4=‘»ˆYÂ`ã®[_@%BÁ(GÄ7 nˆR¤v±882›¨˜WØµYQaqp¥µX6oåK?Œ°§ÃóÈQXºz®ÂþÚéH+,8r%ž*Í‰JÓ[œpÙÏ“J,;ª8þÒD4)YœâÂ«<$§Š±¿ *gàF¿°h˜³‹5b+ÃÛð—ÆìÝÊžYÉlðàÉ‚E<$rN3Å2“–^âäœÊ0Ìí¬‚2ÉS• 2I(O3„)\ “``²44™Ä©k€I7­Ý#ç=rn9‹UäÅäLàjOMÁ9XAÎ„GEpbù™í‘ó½Ù#ç=rÞ#ç=r~Pä¼s 9“.Ù#çg‡œÕdœ§½]2gg™½À‰Â•‹…äßt
1J³J94e2£	 ™¡‰J,JÆZ'MÃ@±„¥[8CR ‰Ì’I¢¢EÊ3°?57}—k2‹ƒõä\òê¨€Ÿ£‰Ö.äÕB
$Ûðô«éÁ½òˆùÕ{îê	©Ëkµ˜`co‚Å=û>‹D™Ü–_Fk¾ÿð{{ýþýw]íLõ]…=÷C¯o±l±X÷Â¨¾î~Úøj˜ßºÄ]Sf“/Ìé¶Zò[W’p¶BW$1ÆŽšöIÛÉ¯®þötSÓ}tÛ§ÈµH»UþSoà{M¸z‚EÞÎ”òã#ÝéŠ¶]Ê1X»˜â`×Þ_áÊH/FüBÊ[Šø•RFÙ‰§‹sù­²ú4^^­ÐoµÚ9ÿ†8«:QûËJ–È˜îµ):®Ýlî@Ç¯5L†êÙØ÷ÝnŠt!6›¢f¢
Ô#yp`YÔØ\7Gúª7p¾›"7úÞÛŽA­3_2UdûÆæz,†ág¦<ÊY/¬6Í¡çÖuS"4åQ¡Qz0:9=²|À ÷‹"¬Ï6F)>@D›ïßøÕdQ½7pÍ¸b5®Wƒ«=º~Ñl¿‡ëôpú
¶< ö7.$´l©U&™Ê ¤25˜i ³ŒØßpÁ	V@0’iÅ”É`•’šp•&<e:1TdTmÊùßë+)}EA Z
k±¿réýe“ºU}†Wõ	–ôÝ]_Yý4^ž¾¢Ô„Ýa:A«*÷g÷:FRîU•½ª²WUšPUÖ‹õæUl‘ð^UÙ«*{Ue¯ª4­ª`Éª•CI’HNÓL	¤dZjŽI
 B`#K ÊP"¬*¢¡!RdÌ ÄÒMeI÷É_J#ñ%S€‹ Z*™‚Yß›ÓŠ^ŠÈ=¢$®Hêèž~/OñhÚQRÄîJAub‚öJÆ^ÉØ+KùÜöÞÜë{]b¯K¼t]"é]&×õë“’s¡jŠ„â*’Lˆ„")\Íû„Á„£”d	H¡„k"-îCT
n2Ì(Nejq_ÆTºA‘8·°dTœ}Ûn­=ð™õóÂ‚qµËSScûÙÞŒGE·„ïaÛu÷ŠÀüÛaolŸ:…ü®×ÐÛÞå‰O¤-ûó{{]\}áÕ8Æ«³*Çããòâm`ùj· ÌØúÀ&B(_Žâ—¸¸¨(—‰(L^,¬ãîS=9 ¼ÂÀ÷÷½3þ†„Öé
ô©¨¦2½°®{¨B˜ÿøŒkFÕ~MÑ´gÖ”U‹$c¾	2Cµój¦!Hå¯}Þ‚†´GGS/_ãøá'ƒPÇ)%‡"šàWµ`Ð+oú££—æ`Étj\Ë§u­žÈì2!Ô-ºb²rý›h÷ÔºŸQ+ZfL#ÀàˆBÌ¹d 	¨Ä	d'#`g¥iÊ”˜ëTaWy$Vòî!Ró©ˆý&ô^ì7ß‘˜À+	/E~ÛU¶«Ž‡H[oØKNX0ãÏdwXÅßÃª?5¬ŠàÛ ·ŒDÞÃ­=ÜúËÀ-
Ëþ¬X6nË%§
ë$ƒ\e	&cš™¥ŒJ‰­2Œ5¡8K†`ªÏ´ŠkÁÞ&µp,âº6c5ƒ[öå9ö/åEØ¼JWƒW!\¼J(åppÙ÷º¸X\äê\PØ	Ü±¹ê·Ø¬r*Mt¸®°ZtQØ<è
ÓŒ]QdÂ +ŠLtÉD®jÜ»yØÕdTåŸv‰0RÚÃ®»Êc¬_ÕãÆ3¤@hÄ JI4N01H3“aêrQ¨ RIšeXqHSM):Ã@&"A o@^V•®Ý˜Ñ}tÚåŒB«˜é[¡Úwùd-‹È|÷5X:º´Zr•ÿÞ>=iÿ_µIû¿Ù±j€^Ã7møóoµ~»2O·$ªæÓÊj¯NO^YçŽ^™¶EPWyÚ]å·½%ö®¿iùÞ¤×öÞÀ8rÃ) l'ƒQ{rc_¢«lv¥~GñZîÚ©ýèÆ#ß›]ë‰•ew-åº ú‘výÝöa”¿)ÈM«›µo{ý¾+6Ç›®‚Ú›öun×Þï}7ý»VÑ'®ì-oÒök…¹ðwßDÕ5©ûùÐÌÔ°íjûL	¸¶°#+ý]CyWèÝ=<1e!´Ûanâ¦¯Æ‚i£•;êAžä©ýÂr§\å¶+œiZöû,ÀÅ¹·W={Fî¨-‹q(iwúÎÝ¾w_ÿÍãAYÎRyãAz"êÊ‡}ÚSl¹Þ}fá´Ý=(vwí›Øº Îiý9¿¼9Ùv6Úß»­“ëh·0±WÁM¾k»úEÓ…¼êeí×G_>Ÿ~>·,7±Ðõûì…ÌŠÛµ”eµcÝS÷äcVßšZ.a«=Uˆ{öTBøZx¡ËðqÀÉb¨@$ÊžZ.­ã8ÚŸ°’F½ô*ÑîpŸqXîÏ‘ÁÖ2U8Ô‚d¶ß ¿Tñ‚(èZK=d«öD8õmK¤hš"ŒJ-ÂÉDŠ©A&‚E¥F:Ñ‚§\Q’°’ã„BJ2ÂÓebpögp^ ÂÙ`Àd“MG®"¸T×"eÀÜ.¾Ÿ•s7„SßšYñˆþêç%Zçþ”gx/ûóÁ.	£›>–ÆW@š1à°gŒhT¢5!Ôþ,í_I"´6R
 ÁJ¤ögIYb¨´OÀ˜()7ºÎ\Iã¶Û²Cjz.›1Íáâ°©D,ÛœØð“^á›V®M»Ú[4aß´Q×-ûõ&nR6Ì¯ýÇYTÀ¸b÷åƒ¶kÌ®jÌ‚Óµò„¼RÌe1@¢¨ðlwá:ÅÍéîL·¸ˆÏÞæ·ëŽÈÃØU`p€H°#ÿÂ¶ñøê\`û³^»ãdd«|ªóÌ'Q};Âƒƒ£ÓÃÏŸ,G	ÖÈ>,¾§Î¹‡–7;,óé[&šñ¶óÎX6æ–3¦ãv=°óµ8hßÒ#~–/m¥npŒU7œÑùªn;oÿÝ»	ö^šñÿô{Ix‚Ë.ì8Ý§óÐàwo/\¯Ýà0«wŠÁ¡ùvNOOóá8r¬1ßãFž™~v6ž$IÄ2z–Ù‡àGu>½£‘#Ï>†Fœ7ª“º}…ÇþypÐÔ7v‰‰£Î‘ýU&äÈÒèñÇ×‰‰}RÈüèñŸÔwãþ¿þOjÐË"îÍ|BoÐó>ÐØ	žÿ~ï>ÊÎ{3ÖWQ#}ò˜çæ:È£ìÀˆKRŒê)À¡Á¿šq~3î|ÌA¶ÿáüü´sÞÜ…ž|	˜qÏˆ¡g¹þnÆ“Óˆ±1|øäô¨st¼ÝnØÙÝ(È©ÿóìËgËVCÃ\Ãmûž,s	nz:Ö}"cóGðÒ¯|õŸN>wœÞÃB}k:.
£SDuTÚy¯Fã#Õ×±s¾ª8òîîôÍÁ±æ:·Jp˜‡–èÐ|ì…9ÌÊðÎ8ÏûÁ:äèTêCÚsº’
ò±…iaÆ=ì ”k7þÙ~}§½0‡°,T][YãìðØñÕyÌÑy¸ôåÌ5œ‰jyÀžêüß“|lÒÓa/|cOó´Xr˜µº¡Ç#­nÂŸ°úa||on\Ñ•<j¤ý!Íƒ”ÇÜÈo#«‡E:þÊ{œ`!aÑ0*8Òó÷à¨q>t-ßƒãîFîý<x]ÏÍðºsøùìä(ïçÁUúÑG*(¤Ï#PŠcµ²á B ú±q/óÜ1ÿ·ö=t˜øÁþæý–ÓˆeØáç*ýí·aÄ!\9o–ý
Í$¼êÞµUQ{_Ãß”é…]ÔÈÓžÑÁ§ô<Þ·w ¯ÆÑÃ?ûJmÒ¥¬Ê6d5ªÆyåe›¥„<€uÆ8Å)BJ˜?ìzNÍ¿G‹æaÖPŒÒYðÑvàè±åZéa¼Úù„Æ¹ÁQöLýWpXžÚûž‡Bcÿ)ÇëŒ®ì*ƒÌg#A¦~…Æþë¨êÕ¨5¢‚D–r	$@@´DD2ƒE¦¥Ö
¦LS–h$”©TN¥„JN¡!ÌÎÝàÕøàm¾íÿÃ™ôG>ÿÇùø]õFç—Hç®ÐÈ” Ë\äÁ¨]“Û]çÚX Uº9º­O®o­Ô”À¨ð²LÑövê*hÏßŠû­·‰?ïƒ€Çz?¨$”.÷ÞÂHJ.Å‚cˆŒr©ûãhÞòzÕò³}ßŽÞí}"÷|"0Z#+hj;|$ùò ²¾¾Wä—ÉhøKÒü0Â]¦ÉuÐØzi·Ž²ƒÒ$f”ÿöGy×ÈëŸ_3’ôÂîözžèŠ‚…òàà(6ùd>å¤d9æL­áÚƒ–ºE];ð9Ú©ö‘CÏ,Ã-l”®ýp¸‰ìk§§8¥©8‹ö¨ª§î<Z>«›Î(/k“‹œøûŸ³o÷
ý1² ËýnÝ?»õ~ÜÌG4	ÈzL°(8Æºe‹ŒSl4ÖÀˆ4±çÉ5¶ÌŸiºS¥²L¸ˆYRm’ÔH‹¼€Â™‚ÈÂ4’$z»š†]¾2 r©2 n¨hÑ”`vQLìŒEØE	G$*þd»ì­êLïS×]Å—®ê—ºYÙüÎ 
cŠDmøôcÀF!ö»‘øÃƒ¢eŒÂªC“˜Êz{h²‡&ë¡ÉßÆÚC“^©qÇþÚÙ/í•ûSÂ•
ö£ ‹ÎÒfHj‰©Q$ZèTkDd
0ˆ!¬ „Ã„1L…v¤&‰ Ô³©¯ü°ìX$¸XÊù5€e¥Ãˆ,ŒÓÀBãŠõ­,/Óôœ Ï²„5ÆçYv0«ì±Ë»<¤Ye]êc—.Um(a™aìšn%˜c.2«é+¦!Î\Í@µ4Ã(%@	äò˜Ì“Pš²”( ˜Þû¾ªUÆ‹5’,å¨q¿"ö¬5B8À²j8–\ðÅ¾iœX`×8­5îºuí…‚]œ_QÇ²+’Xü0 ¨*iUè#ƒ&b@“ò‡ÞÝŒWö^fE%¾FÂ,ŸbŠO-Ùƒ²=(«Êá:°VFÔÕÅk¨ËŠã¼™8%)$3<ƒ aJ)²ÈM	“30ÑX€RLSšJ“D1LG©ÄÌ¤›ìO¿ùbÂ¾>Ê©ƒLÓš+¬òAçðìèäÄ‰m÷—oçï;b3dûÍÕñeA¦g7­<ã«¯ø‚,·ŸåÊ„Ì¦Ù-WE¥ýz”·û®RŠyÂE~Øè•µ•]“LXXaQü+¿kOƒE[ÓAóN¼o,%-g›³¿JÍÍÐXddAâdà`¦‡´E·}âK,Zª}mô•ôF×e—aßÀ×õ•˜×r4ü
¯z—Wf8+©ÒJŒ½"×ùi¡–v6»VÃÓ;eíZû25ÑºIîÿ—h4°0î‡_û¬*ôbÝKÒ¿²Ç¯—R¼¨­ñ]Ë•ø.òµÖnÇW³Û!ÔeÇÏSÜ±dqF»òÅwÜÚÙúm>i–{­b);Úò¦ù—¨+Dàdv®‘Bh­NåÛtl…Áž³ˆé-²±?+FW}æ“äÎÇÕ9ö—) YNVtý´Ð~àÍ	ŽD^“q&½@p™½¦N0šÝVF!¡å§6Q#xw„ƒÐ¬§J%Oš€’Œ&-ÓÎ%XÚŸˆÂ4	` 2Á°Bq˜ Î2¦SŠ™LIFM²G2{$ó<Œ÷@ºR´ËH.Ë¦6«HFò•fª!ñ"’!T‚(KÝ’A¨ƒ+zŸ¾.O8Eòé¾wÆ#”nÇX<‚‚MâðÈ:ŽÛîXOûI6Ú0~C†”ŸêäÒ…	Ü'4O¾Ì¿Ÿ%Â‹DžÞ4Ö{Ê@¥Y¢SÉ’Œ!•IàúpHÊ3)yb¤ëê¬´N´Ö"ƒÆbÉ…±(	A¤(Þ›pöÀçñ:voj[Á[@ñJÁ[ÉÁú‚·BÆW€cpÉ„C8+Cª ŸPª—‰ê{&§Èîþ:v1‚éK‘Ý§†QÏ¹çÕ`íÖÎ k¡–DýŸ`fîDH ƒ°Ð0!¬-€â&£LÓ„a.IÊ0K‘Ì J¢% '„šf ³XêxaWíÌ('Ì]¯Ôñ»¸Vå×ìKïÛY^îÛwi¥DÏ-8¸7WTÇIœ´7r?¶Ìº§?¾ÑcqÓ]2}`ìúl1D ]6}`°ìÃÁË¨üüÅåuüêøËóRtÎJÚ×·€l<‚Ý[ VË²° @oIáY¬S$v<g³Åô«n,j¤`¬Mˆµg""´GuTÆ$I
3lÙ½¬)ái¹VR©4µ’¥ Ki2¨‘ó1c2ö/íåÃŽò¡pò³{%ì©€ä^	cµòeùÀâ\ü÷™ãÖKõRäÆ¬±s£rcûÑì.O8¬¥+>¹<‰àC gs¿ïåÌz9ƒ@ÓV]&,[Ë¬´!,ÕŠ˜Ä¤EQŠ¬ìá€Cqš(	©`‚1+qH¦€ýU&€N(ÞTÉâ/%i6Z!—ßú–æ[h%cqÊ7I¹Ò|N—ŠV¸æ5u$AãÛ‘537&k"g÷Ö[ˆ>´´A¡NSU¤M5nôœ­…:ysifèËtÖï1
Ë×A3ZÀ
¡Lf416œ•q˜)jÕb·Ì„Â(Ä\ÀTF,c3’iMÆÜ k¾ž~*Üy©¹±’èž•‹'•§7“6!zÓ¶]®W¨ïRi_PëÒŒÇ…Çq&²Òyc/ßŸË“Lz»ØÖëAU ÝØ'zß»™±LUÝ˜ÜþÂ©ÅÚ¬ÉV• ÎÖ‹&(\V‚t1“Ï^›8#Ù|mw;Ûo`E±ô”áÍõ}ddwÕG°:m½æËÜÞÀ±sÙEtÄ¦Ôí Ò¼÷ŸÖÁÁ?ÎN#Sº\÷÷Ë`&To0¶ïmh\û–5=$²ÓQ·<QLaˆìrméœDöïy×¹ˆÊ·MºvKÏâ‚BÝX4p£ÒNVså`¥R)¥•i	I¤@hAEf,–ÓR¹R;Ø
°”0IxŠN2` £"AŒoŠÞµjKé;a. X/Ôwoü!„š¬áöy¹}Œ×ï~w1å~~1%·*ÎŽœ½4ú3H£YVs3f¾T%Z±¤©ÌR1¦)’@M²„¦.Î€4!@¢Ô`)3©ÒBê ªiºW½WJy« ^j"à­‚Œ®O2…®ÊÊŠ”KVA„`);[/à£K¯:F@ÒÌ
Åîö?êN‰–exÊÓÉ¸(£Þ^Æ=±ŒsLåªÙ	ó«ˆ»P”‘/`õ6RJÿ¦¬ö$$®RçzÝ aR+Æ°\	ÈIâÈÓeÈ c$àB@¨R(dF	N„ëœ£µ$›B&JÑáÂ‹j`Ó­olóã™WþÚ@äA¥O¿—\NÌhœ¶ìb€FÁ¢ûÉýŠËÖç B—ÝO`ºT®G"FÔøCè·¡³ýT„ÿh%ÍôB2«Á®òY`W§lÁo½ÁÁÁ·Ð ¯=8øj.M.äYÜ‚í’«"»<k[(üÏ|xùH'e9GÁžFy7¶´˜[y•®nJÑù­ÒS§üúñäíÑê¢.}àš±Œ(¶7[Ïë4O|7ÖàÐßÏŠÞªÁÉÝØ„Kz=vy°á¸Ÿ¾þõó·‹‡g·E»{Âf÷„¬Þ’˜z]î;Œlçª\Wùµ¥3¬k°pÓþÂ³ˆáF|²TP™°Z?0Pqª”b ƒ0wiqš§4eVešHŽ…\¹.Â2¾6u¬†>Í³t( `¥qÒ™ñä&„žŠƒjÅØ|äË;,J¯¹ˆ×ÕžÏRíßµµå	cÓVíÿÏ3PÚ²s¶úÐË@4J_9cÁð§QûÿüðåÓqÛ­_Z?¿ìºí¶7EXJùíh>Ú>¦U–Z=:=ü<¯Æú£§ürüoíbìÏv­žô›ö­ËAØ¦eÿíV¹‹Yìw3ìý°7ÉÒ*1Ýœ|2.A•³eXš×Óývn­8é¶Z'™Oc½Uƒq‘déVé/»w µPÖ‘uUk‹µå·ƒâ=L­of;/Xa?×_Wìo›­žÂÕR[”Ðõyš®: %'Ku¶DTŠæôþuÊ/®³õ[{Ò ¨Ý¬ù´¶edöêbi÷š[„×Ž*ßåö¤ÍªŒu°·||M¯kÍGó®º[$žë_ìvÜ_ºéÒgÐÕ£«55+·LXÿ¤²²LLäÍÑ-çaM¡Uyy†0 –á`m¹‘\(ÅP–¥‹2ˆÉ´Ê4€0<1ÈÊWº—•{YY;–8$,7²!Z‹J(›–¤³õc{)Ä³l•úï{"2t4»—²`ýAEd~ú¨"²Òºþ,"²7Ð¾eæ£qU)‰f!Ü®WT³1¾”ƒ”JF…”ŒdR¤Òª•ÎóÌÂ9³bŒ“”áŠ¨ Lg–>¦2Pdo‘ßFeÙ‘åoƒ´_T¬±gðK»—9Þ}ç½ÂsëäÑ•Ì9›bf«'Úu÷ÐVäúÃ,ò\™þ}VžGã¡º™ØŽg»KjgÑw"®åÔša/™8Â£®•–fdV}Ùã…"Ñ=¾=ÄNÆõ-Õ^¤æÅÔÌïÜµ?©ïÆß¬ÓŽKzqc~|-n~·fSR4µ¬ÇI¾¾Ð ¢\ð•Ng.»~!Ç…³¸2ƒóÅuümo.’øðìcÛ²Ÿ'Sá® ìÓ	ª#šªžÊîQZÕðl¿^ø,‰-³¦wQÄ®´?îLuá(×‘ªËiw•žZ¹FOj>øYC›»'ê¦áŠÏ¸áMÙ¿¯ËóÉß ÎÛM ó‹GÐ<ˆ‘4ð(d‡p7É€`ÕÎ˜Æ¤	Âœ5[Úq‚•hES’ÒŒ( àDZ¨’B&ö(äÏ‡B6(Èõ¡ÈbØ•šTP¸ŒBâÚ’äíJòÓ¢SšªK0DÖPÿ
0äå¥ìîaÈ†<©˜–QÈ%Aj…á)¥TÃLk%Ld"$J¥æ‚”%	,•ÐVòØ0$Q›‚ë÷hã£_a;Ñ³\aP”èÚpõƒWÑjmTM4{jÓÆÎ7œÀÎøHÌöø¡Ñ„¸ËÛÃ„=LX€	³äŽú½Ì)­\" Í¸M0‚,K,bÈN’Œº*)f„ph!„Â
¸”(ã S”d<#ó”+hßd°8[ªú´ÍFOÆÞùíýÛKG±5KÏyüÛ©q7KØsîók÷¹»PíßŽ{I¯ß’¼ì#à4*ÚøæVŽ·ÝèŽNjúV¼ÛKAÐ÷–ø ">¦³ùÔ‡ÁW}‚¯ïlÎ¸DË>ŒÅjEJòÙtŠ{×	Ü¸¿HÃ€ÈÃØUàÛÂêmÙÚöÅUYIÔ#ã:'WôŽBþAWÕ@É¬FdCÕ~ÔQ%53ÐÆ”‰Ñ	ÎR ¬H)7\$„P„iBEÂÆ\bR…Œ‚:1)×dSãædÃê×.G¹Ïiý%6ßš¾¶´È‰³ã}D—§W<hä[ß¤¹Õ"ù¸ÌñnñX¦Û?Š¸¹V©)ç.-ï\ØšÈ-§9ÏbÃ¬ø±/‡êÚ)Öþ±vú´ždÑÉ¦Œ£kùÕ™¥µ²nYp-Ê¬2mÖg–•>Ê¯Ír˜Ù¬GÑ<ÜÌ>×= U|>D¶ŸÏ­Ý²i¿*þþªxîº¶ó¬=;Ï‚l·}Ü½ì–$§„Î½æð)wåîÜ	\[¥º=ÿåâ²Úê‡êõÝiÌƒêÆ’/Ïq…œ×ngþ\&7n5Í¾/¸¯Ýç(oéÂD¡ÝÓfû/÷íO±³›=5ôïŠGûN…I¢¸iWÊí¹ï5Ì;Kªkw¾z)[æÚ~ii‚Pƒâî¨›+ò¼~S\)÷$3²ØÜSýùµµ‹°¤^â®–§^HFþÝ%/ä“7ÓøÑ¾?üÂnü´‰ÓGÚ¾ÁÔ«ÑM_õ¯ÜµóoÇâ–WëI³%þ0=”–bó]"Ð<$ bµ‹’€I¾ÔGIZH%j #Çy;ž[½^…GE‹¯×>¹tÍ?¼={çÿ{:I,‰ö»üZõ
Ö·£w/ZEäÎÉ¨PÖŠV|}8¸{÷öÓE¡ïnÍ…¡¤ü×‡“q^¦Ãm!E»œÄ:³¬d»…Ç.Š…(½Pàa
Î1Ð½Qð„@p_–Ö;s£†AZ$TÇÜ‘úòö?Îƒ7òæ"Æ¸E» ~Ó–âÙU~Ûw9ÌÛ„F:7áó 1çñ»ek!:<HÇô•…hß”‚­É^õÕhdOj<œè©’j‰š=´ž¹89;ŒîÜÕÀ[/Hÿ1¶œ×ù'Bõ‘CýÔ^¿}ž ¤ª½ž²¯q€ë€^1'upàÌ0[6±Å9Q3Mkn¤Û5Jq0é_W"XôZÛ•`oøÁë;sœw“ë›ª?	Q
¶’xýîn "žåæÁEÿãøë?>ž…ùùñà²ß]…–ô}ÌùG³îz[ß
oãÉÂò¿ó§¹Žðé0ÿãîl’¿Ñà‹\GÝÿ"D9(ð×Qþýlç¯á½Œ·¤ö„©¬xf¶¦†ˆàË/=7×à?.~ç‹ž ­KÃÁ×Pz—~íçIhiAÁ^P{ß¤¡ª'‘{ŒXŽ\•½cAÐ”©ŽÔ‘ÒWá·C)‚o£˜;oÏûmoXR°vØë_#<¦²ªÈÙ8tÂwêƒ]L'Ä„+r—ÔôS÷‹š¾É(>»¯±ßiö†×XPûhÕÙsub³$x7–É9%kl˜;FX%û±Œ9 ‘éˆöY ¾„'§GN¿3ƒí(F«)¼ómùû‘¥ÊçãßÏCÊSðE:"‡Gçß?ñÕâ`{•NÎÎO>G¨ÙËÓ¾}>;>þ9©â3ÊáwTiIÅàø'Ë)ÌPdsðÄ&†VÛ{Z7Ã|œ7Fmd†?šØæ—… Ûûû•qÈ—› f
#øðé—³“ßTD¥y*V¬ö.õ8¦óÏ|Â×p<Î|ð™‰m\óìqPAf±÷v!äh%ÁëkulŠ|ý%µ‘V}2¤àèÝþè©|oÔUc{?ø›°)Äè<g	¦3•…@mœùxXËÒ{À•3Ó·¨çLý$ÂÌéìî:ÉC*fX“8»³°éƒ•A3Æ¢zn†×…†Ù7AJÂü³ ÷Õ¨ôco¼Áó_&çô‚Id0«“ÜßT8óÞ¼ïSþ°âë0I†æÇÎäÜÜJG`Î‚Œ=+cÙU0 ˆ/ü¼gOãp8TÛÍ1”'uüÇx¨
*fxŒ+-|¸%%{Û=<~Âs{ÜøÅœtãÖ>ÊhØ†;£tpðÙþ6µLÑqp»°	²cO÷“¹Î{ÿ²ƒ(Z_M±a´P.³{6#ÿwâga¡£´ÆéôÓŠuÇ‚ødN-öšÙÁå¾£†O’Ñxs7#îÐµ%xyí<8tGÌWï‰¡Á½ñõÎ»üöùäÇ_Ïœj¸#"û6è9ÝÃªœGï02£o#çqºFègá…yZ7·M(ŽúJÝßC6ì*Rã"¥+@Êâôà]5»IÐ÷ƒ»KB.¡Ñ$ý^È–ØÓ:ËMP¹¸2êÇ]÷¦ä Í½ÛÔÜç …GÚS—ƒÜET…VvR¤Þc:Œ9ŠR¿=8˜§½l—ÉÁK:ë&¼Ýî<‘Ì™Â·/Ç^Ó2N÷ØcØKo{¬ŠóŠ†õ«~!
¡/&<Å‹¨Ý£x®‡Û-â1Zb~ä avd?è70ÂRrq×‰‰(Ü^Î[‰ÂÛpÐ4‰ùrG½K—¥¼óåÃíßŠà^£W?æ+Êäï¨iü¸…c-Â*¹áÁÁÐ\öF¡h¥’ñi1U³(¢—€RýÑõÓb\‚áÝÍØõ)€‘-0RßfEŽ¾L“ë¢Büø‹"ŸÏM#‘Ó*=ãz¹-C\ûŽ5ópÕÎ$¸V›‘ïLâÒÌ(ïÿ¨òb]6@ôµñßs½R,Ne:ùòyþÕ,ôB[ÇìÅJ$%ÂvŠHR¸±EÑÆ(±Æ(ñ)S$%ÑØšdc·@vÃ1î1é³ˆúðÐÅØõðèi0y``T±ƒ•øíÐèi uhØm¸bBt[£Íá–5&NkÌtiÓ€ÅÐ¨:¥"š®ÿ0ºäwÌZh
-2±“SÑ‡¿æŽ1UM}ø!Çž7®®F¬­}dØì^:£üWç*	Ÿo1ô·aUWHE«v´µ5ÖúÙeÐõ½÷!0%ºõØ¢é1Îzoî
œÅ•ÇÚx"l&¡!VG¹Œ8–¹†Ò¡UaM‹X}dÁ˜Bù*rô¸ƒƒ"­78~ânâÐ~µðhŸÚ¥‡G*ÈÑ5é€Úê²Œ_µ­Þj¹QÌØ‡Òm7=sÚÍ8¼ÂúõÁ¸†}îWybõ'gãÜºêÙá,TZ¨<ÁæíœeÈÈÒMzé2Íu-¢!š;£‹Å¯¬t¥Ý £¸¦Äâ?oqçæö¸-ÛéwŠ'úß»Û8#9ëMU©`¢H„†Ú`NLEšrœI@”IJ(B%±¿\a–)š¤FqKAF5ÛTÑâÄ{ªè%Ôûw‘9>­
à+LœÚÝ¾™Õ+êO\šñØ
ßíÕË]<8_{aP=ÖWGh©ÞuÙ†hu®ö€ªv¼=:+ªFþýÕ`Ô÷Ge-
5jõ\8‘«ª7­œaþPî7®V€ýÖÊ=AC¿…ÃÙ^‘¬F¤@¬/Ã,0Ã’-Õ ˆÁBÙ ‚%Fq5•×ØqW¸ã/oµÂI?ðß|nÑkúo/¤ÙôÖýïšÐÏ‘œçŒüû&ÑMÒñ£wÃ¸åCöo4ç—¿š¨Ž¼ËÃ.û=«Î…Åú½‰V½œrÊª“ß©±ª1åààðìÓ—Bd½Éç‡_O."Ò7·M¾8þöõK-
G§ ÀëÎEÔŸ6|nœŠêO+Ä§†{wlœÊêO­ùrÎ>_`&!¨¹ßßNjÍ{w|tñé(lØY7÷øíÑ»“£‹Ãó‹wÇ;¸×8ØBâèðâý×]¼ûûÅçz_ä"Ý6q¼Ók8>Ûõé;=ÿ½el;]O`·=ìvNÎ,“³Ná¤ž`˜Î>Ýiö·¿ï4»æ¾>^ýóëÉÇ'Gµ(üzüåë¯'‡Ÿ/ßúçnDNëmã×/V*CÉ™¸àõÄÆ¯_ÿ^÷S/¾||WúÅÑÑÉy½ëóáôâë—O‡ŸÃ&žu³OÞ~¸Þ¾ýÔÚOµ@¨Þ›òsQ=	ïç’ÚÛ­,ÜT^ø©µ
qZjýcâµoõ®ŸZáú©õOXÔ?aY¯²öË!¨öS	ª}‡	ª}Â¤>{¢ ö^EMUËO­}EMUËO­}EM¥ÇMeõ‰Õ?&Vÿ˜Xí;,Xí;,Xý—ÃjËÁjóaÁêÙWÜT^ÿJðúW¢¾õ…¤¨/®„¬½WYÓÊà§Ö>&	j“„5/â±Uª¿¨yRŸOêinâEÍ»©;éS'g_. ÀŒ_¼ýðØDŒ­B$j^KTS*L'_ø’0õ	Ô|v²TÖ½3³é5?ìÙü]Ÿ_ÿÍók~ç³ù5?öÙüšR«œ_SÀ—Ów<½oÇ³Ûñèê¶~úŽß]=Üð÷/'â¢žù¯˜ú­þÜz\ÊO­ýÔš§üñðüäó…·í:¿&ƒütxtøõðmMáfg}ýbq®pµiþ.ÂÕÎ¯xvò‡ã·_«;ûäèøãáçzVB7ýóù—íEÛf{áI=û¼~þá°ž‹ÊÍýöõï'õWþíï_O>×sNØé5Q ›zvø©ö®ëô?žŸ]¼;¬éÏò³ÏŽß×[¶«*wv~|Zk²;¬‹ßÎêIîs‹›YMÓÔ·³‹Ã³£“z[þvþ¾&3þÇIí‡^OkŒGÎuÒE{ÆBEŠðÈÁÓèª‹tr®•´:é&Ý½:åp4ÉÅÅyÏ¤‹³}B<¿{Ñ}A’>®è¡ènsÑß)MÓ=¼H"D±iŽ›DèO§^ÕÈ<*ÎíŠËQŠH'Z,SÉ<Ša>¸+<:6©b“ÖÈ$Œ’ÌCââ`’˜<«È„ŠØ4‰ØÜ†¾ßrpXd>B(~‡¨ô5ŸãŽaé÷˜ñBxúS£Ë[$/– óëk3H!—Ó[ëÒ+ÞõÂïfµüóÊ¶—Ÿ¹²îó7~Is}?ðö—‘Xþeä#™í«÷ñí³¿uoúMD¸Ìx5¶½h‚ŽmÇ®†Ð4 Zl;C<å¥\kä"˜š„–©’,£$eZ
ÆR"L3€)I¤Æ™±í§vOmÝïÙ·3ò1ßöŽ÷òÉ¨m7y›¿·}Å`÷G1í8WxÓm<Ï–»øÝ^õôUÙhÑw×óoÅ…;·Ügßó“Ë¾‰×®_£€Ï”6í×‡§'?» wÍ^¬ÖÎO}oÂé‚[³…ºvÀ¾¿\Ñß@ðz2èïž$|Ý® zàú4f%p"ìÙ-®#Î!¦qëH VFMÃÖíÚ:î^vüìWùetúÝ)\}eß»ªC*y@u_Iûè:T@4\{¬ îrM+BŠ¦õþü´1Bn5Hë¸AZ'ÒÚ^O°­‹³³g–§öÍ™–ÄSSH­NmÙtC·áóç¦®ƒ£Tì/n3ö¡næÑ§_N··‡¨D©Ê&Î>5u|ŽR•'Ÿ‡JoF<yÊ{ƒTîÁ¤]”í‡WdE¸´H”"û®wY4M~vq‡ƒ¼Aµó¡jSD*¨N—-J·ÇÍõw3•y6›“²üt+¹˜Îosy^E^W15˜v#Š~Äy£˜±E.|Ío´hÎp©éßKÂß¨ŒÛ'gòŽwÊGóqÂ—¹B¿À²“KÇ#B'V8ŸAw_ü¼4Øþ’Ã•c?|:.¸ÄBHß\/,ÿ©µp²X®Àr‹¿!$ÿ¦SˆQšUÐÎÊR ÒbàÐê_@(UŠ‘à˜`#3$§ZË¦©í_ð^;¦Ú9§”1æzÉÏ´sN¬²MËê«÷µsFðŠvÎ¸Ë4_ÔÎ‘ Uµó­7õ¥híÊ­’‘]ÉÇŸÉÎ=ƒó†j{~¯Ñï5ú½F¿×èwÕè# ×hú¤8Ýkú{M¯éï5ý½¦ÿg×ô×&ŒÑô)ÂÆ ŒLèT0«Âg&å”¥ÀUT#”)e2Šxf4Â*¡ 1eR¢ á{Mÿ™jú’‚š¾ýâ­/ g5})ø=?<â+~ø²uMMMõ¦¾Mßûç@Ë¿w{-¯åïµü½–¿×òŸ¯–ß|£õZ~“½göZþ^Ëßkù{-ÿejù¡”ëì²ª^¾pF¤KJQòÂë,…ÊÅãše™ÁÄž@š!©1`h®SûŸ„ËL0Mm¥VA ÈÎÙ ›ßôdè«´{cÄ¶Šî³³i»fjVÑmk5p•Ù½:lug=#7žPeøöö¶ë^›×„·û¹åªŸ[b¾VûåQ¹¤üBà¢î‹®œ^X§¸À}x)ðÌ×kkÁ‘²«
Ìå³¤Öxxþæ¶÷©ú©ï‚—šZ„TÙÂë“únÜÿMÍûÕŒó›±o“…¢Ú`ÕIUÛQØuRóÃ4(ò–»,È’FR³v“J¬‹Ë«
YÅî#2£Ú S¨yª5šK L)àŠRÅ2¥£˜â˜‹ŒBŽeºJ %Gò/,}¦9Pr)Š
+Qäzé#,]‘>KPVú
!VSécß~gúÞ_œ”©Ÿµ²ñ;vX^NPšløD÷Rc/5žHjTm€%MÀ
'‚HS¨,#\@)°r†1žàQ@¹!&áÆ$Æ  ©J4ÔBh ÿŒÒd)N¼+´ìÊ³ò…áµâDxü»"NY'¼B>m!NÜµè.Ä‹3õ]z‘²«ø@Púpâ§z³Ã½XÚ‹¥ZbiTµƒâÃZ×°HvV!â‚[tŠ•™Õi Nd’B•aš MÂŒL¥<a *©€x“um*g†jØ3Eè‹%îÚÃÉ ãûv!å#^–Æ·}}˜áÍÐØ?ÛÊG¹ø¦¯³ö‰®É^o û“Ô´R{ô8wÿùÉ5!o‡ã@¬Úá§ë£P¨ €,‡¡X•’pŠÄ—Õ¯ ŠÖ‡F±v§øÞ†¯W…×Ïþ|8ûøÕÿðéäÜÿ÷ÛÑ»—¥òHö9hT1Fe¹º‰)¶1r:\2pÝ¬OìšYáÒ†ëfEdq7¾Æë=e·!R¿œ¸°ÿûz|ø.\.³þñðë¯ÇïO>F4>+&œýx.kYŽ]Ë¼Ãú–S ]„B„fe»¶ÚAÇûp{0èâàRJè±u%áhŒ:]Â·?2X]Ò¹°ãÇ]÷&ìI{>·>‡¼¼ÓÞáÍÚù·=+®÷øcú\Õ¶áÝÍØñTY{qaÂïG_ÿyz~a±eÜÔÔ3où rtµúŽvâuQˆ®ÒàÊyÜª•å™QÞÿQå …#úÍÆ‡ÿDëÌ™l,} Ðˆ5w)l(ÂuŸDEz£Hâƒm¸UŠ¨N€L°FVSb”!,Ï¨TòT‰D
	Q–iš “eŠýµU¤Šæ=¹jÞhƒŽ$8l9)Ÿ»¤|´hâ³oc±0Š5g5 #}ýø²u¤G1ûY‰‚]t$%˜6ÆÖÐ‘jF«®Õ@<7‹ýŒ¼hÁûç×Vp°îôãi+Á»çª­„U¾ÑVHHÛŽÐVªòw×VÓy°×VöÚÊ^[yVÚŠ·¾LyÝlfÖÅ¥±ã>ó€ìoRAœUPX2,‘ÒLsfx¦•”TÊTêL"	N57:a#AÄØÒV˜	ŒT†+C7(,‡EÎñ<qxš2ü[>ì§ß\Æðo&	Æ”çµ˜ÏìU™‘×MlV777Ø~}’óÚµvÛm·(—XÙÊr=¹çgzÙ[—8}|[÷ÕhäVañz6ø¥ÛWÊ. ßÏoÛwùÄŽoÝ{cKÿ·ßÊÜïnû|¨ê|ŒÅØ>v¶Ñ‚ÊÐ']_[iÞ¾43TýÖdäwÛ6óÏVàG_™þ¤?’kãÓ¶ýé|8??µÇ9t7îa5»k3V³|l{‡™_–>ŠÊžÄ.`³¿²Š4Y_€ANVüarÄñ‚ªGc¥Á3¨é•ëë¸¯¯³õ»{9ÁWv‡éÕLÍ®r&»*vˆ#Y#žãõÇß¶çZzf6–ÆÁA™wóVzÛSP+“,r›¥ùyÜ¿n†âQ>(ó› ÷ÎX†Ñ ©ƒƒó¡å×Žƒ=Õû‰;S/¢bš ÷É\'fø©÷G Ó?šàé´nG³ÔÏoš¦K„lšfÖØ«Y 9¾išäe~s°IÔ ê„ôCÐlöZOû“_åév“AGôóü&±` iºBöÇyÓTƒæ_à ¿lh_ó$Û^ý#šØ™G®ÍÐúf¡ï¡ÅÏ;_ÐET$­Âíbÿ©<ZÏ6=ƒç?…Òöƒ†Â¸b
¾µç»ÉõMàyA«Ý©©Èo¶’Ã´àÖÜz<”²¿àÇ¸>vRâ£SP—[÷¬P#Òøc>RøpþéãÁÁñ`Ü÷"Ã?XãTGUàÀÈªåàü»_Ë.çU²wtûŠ¤óÁ«X£ÈŽ´ÅœÏæ2÷ZÀWË­–4I¹s¾¾ÎÍÝäƒQ#;=«ñdÇ—_³nJXàÅŒ¹§ðÆi#iOßÝìzíï«6ÕT—:¨·
æ¨ˆ)Ã—‹tl!Z÷«µ­¥CC±w¡e¥zÝ›ì†ƒ.”Œ<³ÒM#ÙÓùðÎ´ÜG~ûz‚	A'°¥aåËH«›ðë÷c?˜É°ßÿí·ß¦Ðø«3ìîöåDuáuÆÜ¨aÌým¼øN\!œ£ÓÃÏd²“øï½ö4<°8Ü5>œàÑDöxë¸ù~ñžöjöÑ¯Ççó¼£{ÿúáøðÝ–>ýr¶mvÿö¦“æ·ƒ~®ÒÐ0‹©C®{Ãa>’¾‰Tª‡ö¼%4Ó	aeôXLÇ ©3ˆ'"Å®i 8KL‚%a¸Z:H±,…ZÄW; L2$ÆRP±÷¼í=oáyCtÅó&9^ŸE ç+Q–2nÇ’çÂ=oåw÷r<oÓ4j²Keä*Ó„û­Fm¨½ûmï~Û»ßöî·hš{÷ÛÞý¶w¿íÝoOë~[ÖãžÎý•œ¾w¿m»w¿íÝo{÷ÛÞý¶w¿íÝo‡ïÝo{÷ÛÞý¶w¿íÝo/Ýý–Ãm*$¾e€¦X	È9L ×FjªSA¨2áLj%’ÒÈTÀŒ“hŒ’,£€SÂö‰o{÷Ûc¸ß|K•åÄ7N×÷#µCéšÄ7±â~c4¶Žq„—©üî^œû­~K–Š³w¿íÝo{÷ÛÞý¶w¿íÝo{÷ÛÞý¶w¿ÅëqOè~c¥÷î·c÷î·½ûmï~Û»ßöî·½ûmãð½ûmï~Û»ßöî·½ûí¡Ýo\÷wr¿®³GýÐpµ¦È`… HI8U&!&š*ª0A¸2|ö‰1ÀR ƒ3®3	S“â¤+µÑÏ¶à[uˆ¹ù·ùð»ónÝöÆWíß?}Üìr[8ŸÂÇ¶Lytíœ)Ã¥'¼iÓíÎÉ–æzâ\KëŸÜîüän»½ø¨Qžo3ËÙA-_Ûw_¸dÊÉÓokøÆ“8;üýMñÛw_>MúÕ*Ç…¯/·¸å!}Y¿ü22ÞÍ3óf¥–Õÿ²°«íý)Yêï, E®õe	ßns©!'Ç¥Žœ€ŠØŽfåú:î&wŠ;\Ágµ¡2ÿé$±#Úïrç}I%ù7ÈÎ5øå¬év%gUaŒð7y«%Êó¡(Ã†§e¥ä•*=6Ã°n¼4ïtŠ š\KAÓ™ª­å½Qoœ‡ªÙ‡ã¹ÅñÙÉY©û7Aïƒý,w´'­ùÀþê7ç×ošø™ŠÒ?V&M’íVñêëhxÅ‹°ÿ-X{SDÇ‡Új‡Gç¾kD¥9×#»¹Tm÷ V^Ê'5ÖWŸÕõî÷ÙÓÃóóã¯·xžIþe¥{CWÃ½:ÔØ»³„£¸+µE$u×íbwßÁž~¿ÓÉ€vi7¨µFÓ£›û|âVvø±Šg!H°1`3Ý”ëªÎFï.^]%uý?„§5Ó´XqiÒ”¦VÝ dPe©"ÊPLO¡fFi¨'å	€gY–HB˜Q‚ÚTfãhhÔ¸:óÁgm¿}ðñJÀÍ‚¶°-ÚÏ*Å¨Åø=û.ô÷7.üÍ"E×¾UwNIò|l_²º¹q
†rvZÅ£ô“Y‡Å&õÚ„ÕB\Ôž›òÓ¨}•[t^võºë¶OÆ­2äÎ>`bù£ßÛÍ°çÔš|2žus¦ñ#‹h?zÃ|à –½Z=•8l2rKtãFwƒ±úÃ…sKÏÛ"-»=}dÞ•é÷Û¯Õ¨5ÂíäÎüéìÃñÇ?->¬]>ìg«ŽMzc÷£§\l«×Riê‘·ó±Ï)èko9™…Ái(ÝVëÓB8aÿîMñ:,œOŠ°Åy×µ•wà/€û0ìI¨YŸ´»2vÑYÒMíQŽ\œäTgµ«úé|>úÉ…?ºË ¾›Q«7n5ê¹ƒÎíª{7ö9Kñ›^=,~×™ž•¶¼ñ·D->ñMË®{Y£.¥Ûþ62ÙÄ«¶µr“ýÞw«Ž^™#=¹±»4êÚG~º­˜aëJ?M#Ií»QVa³’Ý-R•W¯í§ñ—.ôr`ìXw|ö/ÃÖÂ6ž@U3©-Ý·±\í¾MhYÙgYOå”¹Á‹zªë´½r	-ßŠ¹,×)Yag+|Ò Ëwæ‡éç7îCüåcÙš0:ü’ÖW]«ÒÎ:-'dÞ)^§µK<8(šmåƒ~ØZ?ç8[ÑßLJ†`yNQÄ¢Eî@Ãzm¸×BCÖ4tƒ¼ÛøGø½Eâ‹ çì¨ˆÖkÅð_ûy94*¶ 9ÅƒD2»±•ŒÑ‚'šs®3œ”p!*RËûà„%4„r”R.XJ‘!\Ñ$ØEö`p÷`ð¯§£«N×·æT²
­]ƒÒ¸òw«8‡tPE¯Ås}¬9ÐWÆîà®žÃâaÁ]8Ú¶¸[#*Ÿ·}oâþb Ž‡ûàFYú2CÒÔb¹@˜2"¡’%Zëše‰àJ!aÿOgBÊ)¬rï"P†öànîöàî¥»Í	Öt'‰°*‚KéÕq@Ö‡¤p¶ÆÔ‡_AwDÔDw[¹àKÉ¯¾¹ÑŒôÍN±)Ufg(ð34ð=Œ´ÍcÃ¨Nb{løçÀ†×JóÑ*0üC°F6C2{ÁÎ<½¬ÄÕHoÂ¬±â2#Z „bÀSö'Ë§” i”ê,I82“”‹9€Äp&q"3.6vZøä·êÅ=ÏÙ6ã¿5ƒ}%'1­ÌL'C‡Šß» S;ÈIëïù¿z^h&I§<þë‰d‰™#WÄ%/¦-j±0)o[hqÛ³(()ŸÒ²ëÆ¢žNc]§OOŒVÛÚ_öÆjˆ¹½½íú58Q½Õ	GùªNðvÀ¹\©{"ÈbÕgs).o§¸…Àýë—úÙ‹äCE#cW!Ì,òªÑä{úÊÖ‰Àú<%ô´×îHS–zêƒzÖž‡wp <z?	¼–êŸ`H!§‰ÓïAªS*iJ1gÐ*ø R¡”A73ËõN„¤$ 7Áá¿ž~jg3¯Sue•Æ»BÏò³=ïœÂî†OÏúËOÅ°\¯¶ÜêÅâbÖ³\¥Ë,—Y½Àre\——Ëu×¢¸–u»²\«¡÷D±Üªy3,·úSŸB×éø‚{7Ccÿlœ;ç7fP×,ëóAÆÞXãË 6Xpœ2žÉ„‚1å€%kIA†¸L!â‘„¦HÀR(7pf`o†êòZyÃ™·S“©Iì±íÉ—v_ÝÙ]zÞÝÜLÆÞ~—OÆöÇíÕ_¹#|U÷Gm5r†Å²òá¬b¢¯|˜ÝwÌ¾\À«âÑ¯Z¯½õû ¿8¯ÒÞH÷nú½½úÙ¯ÌòÎöÉ/_žâ–äâ–˜oòt²åJƒzÀ¾`
ƒ³fx[€;íŽ»yAˆùBL`”|4ÌÍhÒ‚î•m5aE$–wŠ¯,@ãùÀçíV"\Á ÊnUÖÕ	3nX/¢~L|nºó¥Ø/(œ>;…çëT"ÐEeº	bË\¢ÿ4Âo† «V¦àR¸Æˆ
Cœ%T%F	„4U\#Š¡2ÔŠ3’âL[5Ä ­%G‰Bc¥Á&Ïã^È5*ä|8!Ëá<TT&Ö¬
9áŽ—…œS‘…Šì.…œõÅÝzqÂî"ÌXÏ6¾«ÐâÐŠƒZ!#´Ö2‘NÜì…ÓKNMÙÌ„R‰F¸þÒ±ˆ †ÄŠ1#3,L’€,Q‚JcÕ …ŒÒœK45XñÌì…Ö#Zæø=Ëœdë›0[yÆáªÔË1¨PFÙæ¤VÀõÒ¤Ù°ÍI\ÃòøRîùšÙöÒï9I¿¢¤ZUùgu
æç…£,%˜e™Juš™¤È «¾%T')!˜fL‚M1H‰–‰„œ ‚8Ã\	7ˆ¿ã‘‹Nì|ÌÞÉÙ¡[³ç°>¶Ïó¹Ruó6)ã¶Î¯o,³o;¶¿Y ±‰E÷”v’[B®Y!ü†E;”YuªÛ+GÐÊ^W¹¶=¹±âàÊ{c5Ð¦•s{0–ÍÍ&¸UøøMûrü2ºíO–öï\¯”ž¡.Ád™Ñv\~ÐjýGù¾ßªÿwû×·Ç¿ž|nÿïÖüÇôz¶ßçù_øë[5tãþãfbOæÙsyÓþ¯Û×vû—ŸíÈÿ÷ñË+¹Å"êz§,YDÄë•EØŠETBº˜,EœªX¬ªãoü3Nÿ}Ü˜À
‡²s4 EóÒž$ïMLÅ(„CUC§[]G¦&3|"ÃèJ$Zc®$õõ(IdD
€¶z?fI'<šéHB4'Z ÁuÆÎ2˜‘DPeÜç³$bA23+ú"+¬ Y	f“P,zÖ¤QŽµÍ<óÅ«oõ=kewA%|™‚äY©q&Hì™ú¯º&9§2A ³~&•|FœÈ”¥©V0¥KA1O’ZdR&	£*'#TÆM€RÜÈ­$dRR™mï}Õàc¹jôÝ¤m_CØ÷`T‰KîrF¸íf¶éÁxq2ì9Ù22?\¶T{^ç¶ˆpŒn§b×ö«s®]&DñäÖº'eSá¬å$Í^þO«‰ßŒ¯OÂ’º¬îE¦ÍêØ6'ŒÅåM×Ö™ß°|éõj°¼m<–5Fµ<JÓmåÔ\"Ä®j‘Äî±œ'ò05^¿[ê–¡#˜ð°e5,9²hqƒR(!’DÛ¹–€ÕF’4ÅZ˜ÌpLAFÁ„¥‰a`©€ÀÚ °Dð½Dy8‰âÌIt/À®,åz_¢€7Ž/Z–(–sÕ”(MY–ž¯¤©_b®òqí.H-oÏÓK cÚK¦XÉ$!h01‘eBY¥%3èT#+Š„ÆÈ„ad6ÐHhUûhaE#ÔÀÄŠ¯DB™¤`/™N2MíSd¥‚¢â°dàÉ„Y–Là¨ƒ%VëoÞšvêõLUÏN2Íü õcé*×Î’É™³R2Ü¦!ÉT‘u=ƒÖ_D2åi_óá½ÄÑXÙDº@–A'MéK’J
%N3„u†2f0ËÀIB5Ó„&@˜¥)´ÿŽ¤áHiAe’$ºú›¤’?žöé—wíâƒ+ró]	£|2šºµ‹CŒ*uZbhÔ>ÍS×NcP°2÷×¥mæ~¹½êé«¢šÔ°X‚°kÙçÿ·ažeåŠŠE¬Sº¶dok~ã¸æM_¹:R–z·Ý>±°?Ê[½îOÒ)éŠ”(Wçh¶"G°Ø£«J5Ý´]ÆØ­´ÄZÞ…UžŠV7*éõ}ÛÇ/9»œÛò£8ì^Yp¶Þ‰¡`+B	À—2d‘ 2.Ej¶¼Žû:MeImŸNÎŸ¨PäŽi³•ŽiwïŽ„u¼;å¼U2z^žïò±7øÞ¹¢ãcS”\Ê~ oUE‚_œp°âóûöNB©ž[ždÐ®$ç0H(ZŽíQfÍ$½ôK¾„²ì‘!–ñmàë”l*ê0mÙ/è›=Uêñ~úåìä÷ð¨c‰X6tÞ²‹™ƒ]w¸FÌÈo®|b¸Á±ý?ŸLùGÔø#¾?‘È{Ó·i©‰ÒóÀðÍÊ L–¹B¥Ý¬å\ÈÂ¿-iÝwîF[[€3
Q³\$(ÅT
†T©`"«HNu’($2¦LÆA™eÍ¨jŒÎ`¢ø¦ú`{EàÙ*›meóÛY­h¨Xà3DWÀbd0’Èê—UˆêÚ ¼?{xú’êæT:ž f•Â‡S `È(VMˆ$¡ T § T"­ T¢§ InW êÉ¯§S žcÙÖ½ÃXö
À^x¾
€+m»¡ˆdt:|¹IZ-æ––a	S%¨È¨,K‰EÿŒAƒUF‘Ü¤,±,Øhh’ÄþJ”¦\p±©ý×BåG‡vg•½ïw
´Ëcñ9Óßí¶|k÷»­Nê‘i/<Áå³OFÓ2ûÛ5Z|Vkö,‡«Û–êÅ¤Ybv†'Ó)/¥ÏÙ÷ªŠOåX"ú0|[.E«ý—šù–W­î€¢eÏ´\,A\
ÞÂíÀNqÉªåHüÀ{™6ôµ[ß*Ìç)ÅÑPyq1[ÓÑ×pƒu°©&¿›Ñø™4'ši¤$ÕT&À•²Åœr–bûÑ €4Ú¿I‚„ý1Ñ:ã	uM°•ÆzSéã‰Û²7	lI#[o–pc>»=5mi
ÚÅ‰t[­“â3µS,¡^æÒnÕ`jù†"Ãi¥òbhñÅ¾žÐu*ªë¾ÐšÚ<~~òSÞKHâë–CD¤åIK‹0†X,×A†³ïg;ãòWu_¾ü	J)B‰E­úåþ•=Vùrÿ°Y½|ÓŽh<3lWŽÏº¸n%A{¨†³,É 
da `Mƒ1D© 8:iBšpd+•(i™Ê$›bø‹³Ûÿ)9{DÅ½Ò¯/Â1€.©h‰³KÈøRgx
ì¯ârÂfœ}±”ÞKâàÏ¦~ ²o†ÖA£1œzÃ—ßGÞH|7Î[=2`11ì¹0Ý‡è*!”Ôh˜¢sÒX8ÊR¥åQkšA’q	˜QH„ÒÊpA) Öd“¹à‘˜±;‘—ÅŒ«•Ä“«%66«€Xºâ…£HÆäR“ &d\a¼’ï{V¹.r9s5j–ÇpïæzVTàêÝ²b77PsÜÞ~V*­ÌïKê¢òÔp3&ƒI¹HRÎUæ8—)8efÂH’ZØm>dŒ&‚¦2Eà$Õ@N·–ð^è÷Ñq5{Òölû›ØþYÏÙe§œ\¼™NXL$j_©Q;1®ƒëÕëûà¢¯oÐjúmíY]káéås§á!}ˆæ¶½ºVoa6Êu}õÓÞ´¬,xãÚôNë©¾±o`dÿ;rU}y;Ucåø—ýl½P*n†{}‰q³ç>t]èÌøÖ­{º+£^Ÿ{¹ï€;ß1€Î–k·:ß¥ým>¹¼òBðÕ¹Òµ7¬}xzÒmyyYÌs,NbvT©±[ó’ßxÁæÍuþÃµ¸•zí è‚îÏˆ>ÝðV%rÕÀÄàzƒ8C’®´¬…˜Ã¥æŠHãR±¶Žûö:[¿º%òê+&d÷hsÎëD›O—è7‹‚a§t¶…5TcÉÁGm“žuY_rö{‰¥£¼ëS¯~ÍHÒÛêHvSŠ½¸Y Î”_?ž¼=º°»ìÒˆÙÆ-šj¾×P÷÷³¹û*‚-ûºv–y·fàpÜO_ÿúùÛÅ‡Ã³—ªÝëd³×	ÉêÛ|F°ªM"X6\›RÈ”ÀBeÐi^.õÎ0J`¢KSI¬X’ "+œ ©}TžìÕX5Ø;»[Âz)Xë¥eöU`EÐJûKfKÁÍgÇ+Ô	|w/
ZÕ·&T:’Ý#y1¬É	®‚Q£qàªcn
^U|hC ×BKO°šmE°X/`u
‰[gÍh¸ÒðMš¯(Æ%Üb-šòkH‘É€‘@Ã-¹Œr ‰LX¢ Ã%$’Ô918VÛP–ùclE†Û†Ã-nç xLbß÷D'.hp|lF`o`ŽËúqÐ£k¼ö~8€cáÊ":ò€ÂÿÂ‚©þ][ÛßZ ÑšB·K3v@«œ¬ó›;‡7üó‡}vµåƒ\è£Å1Å™»&?ùí¨5-…íßéâ’\àÙ¨ö²Ì¸Rº3÷Ú-èfd&iÞ±GòÝu jýÖ`ôs×eHÙøÍqn×veñžwËxŸÍ”BñüÇ/t°|}·›™Ä=3ëý+DÂ4$°+"2C‚òjX¨X`Ç}({[S­siÀäDw09K4#¢±ö éÎƒÔš³@MŸ¸)Õ}òŸÛµi6î¢?•ëL«¾|÷úÍa­HuOùX³UØå!}à¡¡ØóGblÖeš€f,^&C2•ŒPa âÌ0¬ %¡ššÄ`d8çÀ$’ ‘¦R°,I€¯\w¶µ±â‹½8,2IÍnðË«±.tƒËH)Vª3
ã\ 2*ææ` øH^ÛÝ<Uådv·RQQ§c5<ÆB¢±«Æ[›EdUŸýç¶]=&{Á–¯=t{Jè6±§^;÷÷a2ê,wå’c˜BI¡fÌÕþÄ$aC.0•”PF•V i!‘¤4MSH°ýLRµ©Bµ»_¾”M) Ó9þðxÎYe†½dâ„ð§å´ÈÎdF®¬ïc‘Â<æw‘X»ßûnº¹zÓ¾òº£·¨åMËý0¾Rƒï#ûË>º¹¶ÿ)ÀcïF¾âO·}æ¨ÏY BÏSç«tâZS‰«çIÇþ¹îi®Ý0ÿÆOó´sZüîÉs9¼u‹óÕÎžT–-µV£‡	E+Ù “ˆ-EQqÈã9üÝÍJûëôe{¤4=!ªÑÜ³xkòÓ˜0W­°Kœ–µÁŽ”Àµ*¯œªñU¥"-QCÏÍux[eÁ–³qØ6-*¤"ŠˆÃ[DõÊ‘lºð4ž•úhõËìÖ¥OœŒÜR÷äjû?O¥j`D!n·rrxÛ¿zËˆBjï\eWl¶Cî+ÁB"9L˜0(¸ÉHS ijÅ6Ñ	¢Àd4ÁTscaZ¦4J07iº©#âSc°0úªºÚ%èj½Ðåh%«	´hC—»±\î¨h%7KVH²¸º‰3Ðµ˜HúÒÀÕ³É åQô@ êr\÷`©°´G@²ŸÒyPæy •‡È'L M’iC”7¥¦›hJ¡HÎ8à	N,(·¤I‘’P‹sÊö æ) L¥¤sØª#N²%@Dx%F	Œ€@P\IºÁD%Y¿4dóì³Î…kÞó0ˆç1ó¿÷Hh„	Õ½Ä{„ôiŠ}ª†F±Yk)»¨´ñÁj¶œ4	LˆZ ¥±4’!–2¬%Å	ÆfÌ‚¤AF1V)šIÁq
0@nìøº&êÓÕIþeô¶>åÀ¼Ø¾5‰¨4õÁAeŽ^‘¡¶˜äe`§'Õ*I¸çç}+9Ê™%ºù¨¤2ÐµKOw)unvËUæ™þÓ,K®Û>ì»ž±æ‡ïˆ1rQ]™O Ë‰‡Uóœ;÷¸Öè*ŸôÓö Û‘EÐS:ñ\½kokÁ…KòsOÖWNÐº³Ã³4¹ËPÚ-k3j¹»ÌÅŸn\Ÿüv~JîÛçþÔ¾6ã«<ù8­±ý'5Lô™¸âÞÝö?ó‰[^Ëòª|pÙ¿kO†—Å»ºÂþI.ë°}Ýô®í%²‡îK¹Êî?=ü€ÝJ®– fp½³	)ÄªÙJºNî‹ OÆÃO×öÿ³÷nÛmišè=Ÿ"wßŒÜ©8z¯µ×’e—K=’­.Ù{<}£G%@#AÉôÕ<Èì—›'Ùd$ @$ *­*‰"âŒˆŒÿûÏçÓ7ñŸ\Ö·í‘ÝãÏ¾³•¤Û¨®^À3N£mæ¼õ´×ú&¥G",s¤&yþlsÀ/£õ•.²†›mÐcmä G]çâ•1z[þõbO¾\+|ÜçóêíËS˜uKC‰‹¥T~Øï[”òÊaüþËÛô|¯ßµçßØ1ñ»Í[Û‹›¤‹¿¿ð·y¹|«´$#Ü5¬f³~5Ò+­U¸LÚqK‹°3sXOÕ)†ƒvÈFa1wRá Ÿz#¨TRø ˆ´T9¢ƒ¡<šUé€;ÝÁèƒÂèÚçNÓ¥wöÛ%­±^Ò‚Ì¨\î(Ãy.wËPrí»yRðz{“p³5Ùv‹mô§ìnvgp¢=Àñ,ªÇ»¦·ŠÚÁô¦w0ý0]>zM1Ö’é?çPÆ*‚¬AV)… 4º¨CR0ª,ÅVÈ½ŽÎy¤=ZBÌ„; ÞõÃDß½?+½ j/y90DÅã~š¸i¦\ûóún‘—ax”nx;O
ª·§	ß´*;ƒuÅõ6‰_:°Þ¬ïÀv‚ë;Ñ=öéÇ{›qÊ`ï {Øó{Ù»lÕïïXŒg	H›Vzö„Y´”Â*ëäQ³T:SÃ¤6
)C´³šî½%˜Rk£‹©Á«Êy|„ÇI)ljÿÖÛ
ÿþÓßÞU±¤ª<oóBNõ*-ŒYNé,Œ0òìk ¨œ*W¹lLY]¯BÄ“á°_îN^ö&W7ö°õ«/fr5
}ój¶Ãkœ'ê4%ç	™ê›>ê2«€×,pÆH ¾¨÷EB‘ÿ‰4¯óêÍÊ7‚‹_ÈÉ`Ä‡Oºs•%)dC7	Wñ˜õl6@§Ç_ë—`¯åárÈ¬vÿÛäÜgMyµf†µàÕ¿$y8¥bÞÜrM‹äPW}ø3¸W£¾™¤>ºiv°ž9ø
©‘L˜bï‹§x‹À€à–û_ÿã@ºKP¯yÿ…_3ûÃ‹=fÐ>óqeI›·þåãÇOçV½ð…Üª_N: ½¶êD·é”y>;e&HZì$¶é¤³;%nßìLÜõ R¿ÿöö]ƒÝõ]ƒÓ:€Ð¤ùp4i”Åê®=¼¹~ýðÛ§Ì~ðŒYå5 ™›tß~ú25¦ÓèuZî–ùn”e“ƒwsÓóMnöûö¿ÿþöG¸’s67]§k¿.×{^¡ßmÒû³À±\'ZÍPããßæ
^ «øá×Y`ÐFÿPN#®õ•¡C[ûa²VoWaÇñUU±òPâ\Ìw•	Í=ä"ý%bÓˆ†0qS(þªÂ¾EEÌµ¹)A|Ðd*æùÞø_¦­?÷îü¶³Ç\5…_¥õPÞæ÷øni£ep×CŸÓ%6Ù³ØL=]Õ~Úú"ý¶&jÅÜL® E­i0¦vnÛB Öï=ºO÷Q6Ð¦Ð75ZGjº®ßƒwb§h›Ksã{“ís³»x%¶¬†úûˆõá|õ‡Ô8¤ªÔ.:+]Ð4 @BS¡˜%ŽHª­AT!‡|”Áh¥²špUä«Ì‘ „^ŽÃÇÿxW¼NO\ü43M®Ó{„âA¿{“æ‹éâ}wo>ôab`/|Q†²2?š•,µ)±j^ô‡——U2áž©”(3ÃÜ<­i›³h\¥Z¹8;K³¹š~²=NrgÖ«LÓùÍu©î«:vÚ™‘±µ§n›‹÷sMÆN¸˜^ÓI_s–Œ”ýÛºûeRH’Õõe{3p=Ó™LVo?þZ¤W?ÅKWªŽT×ëõ`:4LÍ$+,|	’ædk4µÌÂ7½ïÁ¬oLÿ¿•i´áøÒzUý·òÌ87¼LÊ—é,õR]³Û}]w£ &…úÛd#^,=vi’ªŠê>k²”°6Iµy;-£–ˆU_žMÆ°íi’w«V„ñõýgw{ƒº¦¹º›´pÕ¬öêù8}ŠZ3ó˜ÆK %”âh.·`õ‘TúñÊ¤Ž-š¯KŽžâ„1´IÙUÏë¼ºHÎ×^!”`÷ûy*Ž–ag#)Ò²iÍ°zzë³7âëÈä%InHn{Õ×ÑY&®FÛ²k	ä\ØÑÜ²X6Šé÷1ŒùüZH‡°õÜ)/-ÂˆF=\èà²–za,pfy¤ŽÆ@¢ÕÌD¥ŠÁ®,ßô÷Åô2VÙ‡³|“$YªÄýUí€[X†ž+¾[”½É:F®f8ÿíý»ópmCåNôÄE‘ÚšÉ$\&÷¼6Ÿ}LÎ‚)k‡_B?q‚êë¯c =›KÅ† &†qeÚH3™Ê§µ_Ï†©@YÝ²“sà©Bª Z•Ù¼××deI™f=f{Æ“LÎCƒ! ¿ûîº_›PJì¤ ÓÖXÖÓ«*€žÍZž‡AªLPÍ.MnšA¥^¡hz‰Á••+UÍÄ®áÖª&xØWåûÝ°ª¦Y³E#ÞÖÎBã0êWO$=Æ›ŸßN—¹œ¢8Á›“¦n\/f€ªidøòôüî¬Îýb¼/‹òf4Žk:#‡yÝèöÈÀÇÿí·ÅÇ0†õÜ:¹«ÑÅ LV…¤Ì UåœaI)…5"êQ6›¸0¡‹e˜V©ùl,ð	ö½‰Ù^Îë+à|íËß„Ó¦S=ðÅk©~øáãÕ¿ïßþVýûúã»_ SáÃ¹+´+æ ­z*ÍÌTWëÝ{šÞñ«XÐ‘™º¶é›¹÷YˆÆ‹ô6¯w¯€F ¥ù„¶G)ÕœÏÓ-S_þººËõõZ%A˜ ‚1<®Xç4–ÀÏðú\ØMÌon|[kÔsu´U‡aÕcË>¿~øé—ß}Âð'S{ßÌ¤8kÝXgY–fÔûôylyzŸùýÒÜ>S¹íû]›Ê.³ýuƒ5n^€`“³¯Ï°ÿ¥ÉÒÎ÷h<½q£ƒ]–ýf§z®ÃGúÏë>i²÷íaþxÿŽ$é&ÛfýXožk+z¬³Èµv?Þã¼Þeï`®ßÛWXE¯‚ä#¹ƒÜÀò3•l3ðk´ðìqt½O¼<‹9ÃBÅ5_%0–Ì öÓ+ŒsmkÒ%ôÁüüa·«èA«Vd‰ï™!’Ø@mO½•T JQ$Ê*a•S˜;æX`ÆÓ ™ VE68â•µ˜{Ï9’¥Ywj€Nð­¨BD#4Ÿœ+}$¥Z‘U s©_RHNáÍ™WHxÄFÓJÈMWÀC!wþåßƒ úù—7_ŸŠ‡jîRí®Ð¤¡R>[Ðì²_‰¶[Ö´0«ÑhQÐtB> Ótú€ú r®š8YµJ`Öº¹óg§KhÐù´u	í°¸Fº„Hž¦.a;îýÜu	ìB¬rÄ`”}OŒåˆ#“¯J &¥
4	l´0î‚ÑŠŽ=qTY,²(™2\E¢1çA1‡‘Q®S%tª„ªŠ¯Wap6¾Ta¯°ü ´¡÷ç4ü~Óf¸hÎ)“l¾x]úˆpü¸WæJrµ˜¿	-hòX¸×3-ÞXý¥žázxèÐ61tj†ÿ'w¥vÖ2h1—£]-C#6°Â·¬dØ}R‡!Ñ¢Š¡á|:C§a8FC§1èœ¾IÁ¿ ¾;ë9*9<[çÑ
ËÍûÛ!÷ÏòpÛšè]Û”ÿipyHšÃ‘KÒÑ!IŽüðäà*Ø#;UÑ¹uÐåê˜‚PHôÑ§VêŒ¥Ä§*ì‘2á¶VXm™a$uQˆÊÂ_ˆ)Ì­*6ñz¦?HÚ€Jøú³XÆêÃ›2	ýIQP/J‘x6t]Tz¿ˆµæN	štÓØÑÉ•™_{)‡–÷gójŠUs¨råþýÃS« êˆ‡TG,/âAá”dk^!—zNý ¸ØXx·Äû
yxW¥Úú¾‹lXÒ16K¸Û\Ç0Ý²ÃøOÖ´HêØbNË‰gDS.°Át/ùWMWÿ¢7è=5çkßïRb‰r¾Q\
ƒ¢¦F‚ $‚yr¹ZL'8úô™ÁQHáŽ¢ã|ûvò2×ÉO!ÍðÎ'7ç#Ÿç|{ñò{2Îwä>|Bn¯]Ïã|-Yûs8_«¤ŽÍ;î´\žçkÝKÀR,;ÌYÇ8ÆÚPK×4xËG’cK‹È/•s>(e-NÆè;Æ·w«³Îµ:+Ì—BÜñ	²(ò‘F"ß>ÌÎ§È÷`T–)?Á^Ù^;º»®×&¥#³×ž”uáXžë÷ŽIÇé<çVÝZ¬#Ø‚ÑZ‚4Ç¤£TJ-¶Ëƒo%ã, ‚¼%À
ñ*†÷Ž\nçýÞ vGãîØßf¦«ô¸ë•{tà³”Ñû¦ò»wÈ+_÷©¯F/«Û6‘<½îº>5W«™*;u%,¥O[*
€„¨Ò³ÏU@)óZŽ7¬u—ÀåHÔœZ¡¦¥¦Ò^ö~yàXôþžëÀ1ö#7˜¬M½<ks7«õmSJït!f6[uÇkK.tþT;ûS…”b³3Ñû_e„×ÀÝŒËP6!Õ%‰Ùþ­)'Þ}ÿ}“Õž¤,»M:t.dOëBvya–rŸ_­ÍÔž¾¾ØØf´þÛ„ŸÖ· ¤ÿ¤òeû–ÄÀ0v–rË´Hž1
aŒ9&µ•ÚˆT&š8¥¼fÄ!Ác°Ò¤•´º“/[1*’k.¤ÄO²(_jèÂ¥˜/uJÊƒsŒ†µtù´yAªž2}÷q›aw›:×dImEçJmÑÛ$u¶Gç ÏÕIÔÙI'.u>§À¢SIEÒI¬Ï^b=‰ì#Äz  L–igÈA(®)‡Í÷Úi•Âœ(ÄÒ1®@¦Mq^z,¹ñ\®J9Ú	¬ÍÜ|Ò¶ä¹ùPÛ±äèƒ“€«å|v	øHÁÞæ¤±¬EÖ'M1qÊëþƒ"¬i±©µ?lyµ%r›ÄÕÖÈ4³V;aõ[V;á³³zv2ä)Ê§8ã¹ŠÕ6“_-¢XsbŒEÄ
GHdá2ÂzI‘±†mE@œ«ÔHÇt.™ßV°|S=h%+•„Çº×ù±¦*lo;œ\Uâ t9›µ‰ˆK2èS‰•×,¯+¼ÞkVÈ:Ùà|0H™ÉÛr.„
RFŽ„X-è¾¼fA8ìc—$>­›J|öfàa£_$˜d.{nííœK¯¹ogc¥3ã­»šç¢PêSr—Ò g×"K$±š’Z›/7ËNš3ûÌ‘ø­ñ/8çÆ¶úÀçö/²¹E¦°éL¦hÆ™ÍrG­ŽÓs,V“‡]OF5H[ÇìÜ%îžÓ&wÿ€“e4ÉÍ›É¦É¥&™£…?{1£Iæh‰K'é%³Yþ¨“°éªåŽ8mn‘9Öe˜LÂŸ“¼V™c^™µŠ£Y“ÌÑzÀš¾ä´É¯Å²eŽx]=ð®ïíõÂšì:Úp¬Üô˜ÓV™Ï™t)MrG»ÚÈiR“lEiì—€ovÃÌ‘ËP–›‡¶Êsè>‡I™×*wÌÑ¦Ý†¹cMLâð~çc8¨µs=~‘6»v™Oü¼ñMÚS°Ã`€ÌŽ^žX{êÎŽP?¹KHõåìJ½ÓT[â{ã™‹®^‘mò>òöv!ìúñf3,Õ6M$«aÚ³Œv	å´›ž¬¶“QN³) ÈiZñöœ†•Þ/£ÝôZÍizw‹lhÜF€ýŽºÀöc xpŠ©ˆH”ZÄq’:"‰6Q˜`±¡áÀ%£ÆÈà‚CNpâ¸@ZY¹.¢ÓÎ"4ÍpŠ#¼¤Ú/¤†‘š>?Óî%ÆáItG® •h$"ºÀ–*‹fè’·¬¬fßª.0cÄ\]`“~&ºÀÓ,â—§Ü|2èsët.°Ó®lû$ºÀŒ÷¶.0c´NØé÷­Ì8†ÍtvºÀNØé;]`§Üwt™uLxä§ÖD§("Ö(O…Ä„KbRQAU Ö*Œ—‘ROƒÂ;æÖE—uªÀYì˜à¹±c°ìdI(‘¨J„Þ«%‚ÕÏ*p§
ÜGìØ©i÷&nZáDí”ÿÍÐj¤iY˜&ßªpó€¹ZÀ&ûL´€-Eÿ4"O¸ñX4PfŒÕi ;`§\ÙöI4€›_Û
ÀÍƒuú¿Nÿ·oýßæSØLý·y¼Nû×iÿ:í_§ý{vÚ?oÍ1…cA£ðZs)¥gBp"&Ø3«-
Âr/S4`Š|ôÞZä©91žÉ°²¶ {cM
cËÉØT|¸è›Û0^Wvn³~Ö¯Ý²r?þ°v²ÇQf®-N›ŸZ,5KõU©djÞ—‰,OBXï=„w¡ÄËU	ß¾²ìÑaâ!Ð¡è[ñ”	Èžó
 #7YÊðó-¼Y¶/v‚%úù•5Ø¾xlñ“³Óö½êU2K˜b^.­uˆk‡ƒÏ'È
L•e†Z!pÔA*!¤°ÊÅˆV;=œw>F<×;Ø©zÀN¹X`§å¤q¬ÙiÛ^ù'eƒ;H}rÚÔ¿;mÉ¥x#;mÎ±•%?VvzªåÏ¶î˜¢1ô(ÊMD8HŒÁÄsE)ãÔ[­ˆDˆ ˆaLö[ŠCÔ®ã¦tp‘$»:bH/Õ@l´ÀM5Íñm©¹iËŽ-'ÅLQôq¹G^ÚŽe~#+mÌ‘Õ:?VFz¢5Õ[ã£—Ç¤å‚:i<–FE¦Ê©áÀD­'Ü*0,"Î¥Ps…”×Ü(I%õ|e°wb{UŠþÄ”¾„Šaú ìøH³¼|¼zÀª!ŸšÏÕJXFs•°X¢Ø¢ÜÈ	’ŠÍKŽð‰Æ,'Á#,XWýHôµR‘-ªÓÁHzy„úÓ.¡|—P~Úþ9U?ëjnwÙç»ìóGhœÚ2ýü¨ïOˆÿÛ7K9£Bp‘qÁØ çWžX±bÌë¨#*%
^Y"½L2ƒ	Ö"Ñáÿ{«Q
ÍÊ³a¡i*b<ÿ™–Hs4‡ÿáBXžíèòÉ«VŸ”rì–&…dCíX– Ðšå'S8¨å§:Aà
Ï©UW¹"ŽDˆ8É2ÈO.D´Ÿ%ÂFŠ¬”îB4Ö:M,CˆÅ`¹±T[¯©Þ0ÕTë˜äá;bÎV.småX"‚8]ò=SDòÅ"QŠ¡2Ä“–>)â öu%¶©¼Q‚hËà)@ÒàÝÉüÐÉm ƒõ'ëO±2m+¨>|	ýcrÒœjF”DœXª4“ÁXé]-áH°AD*¬"Ræ5ÄÓ Y\ìÿV%l„àƒ¯¼Z+¸•[bN þezÕ¦{æÇuDÎî‰\ocq;¼©š&·Y8©£ôŸ‹á×ÁÒ¤^V“sîÙ¬Ç€Ù^y,©åj$Å³ÃBa›õ¢0ÂBt>2”sE˜°V˜HÓ¹$‡KFX‰m|’Ò&Æ+)Q:6¿¤êf_›ÃÈÜL†É£yC“kóy]ÎœKçÖ{€gÄ×&~È¹´Æ¸u¿·ÏÝXâ¥é£¡À&N$¼”ýó–ÃÁÒÙ|÷Ûƒ¹á„ƒ6<æÝp®áxõc,Íù±bò•»ûã‚ö‚ÆÆ2ìÏZ+˜ñŠ£Td.
@fJá‰sÒ¸¨p”GžŠJÅÀ¸´ªZ|‡å©ÀXv|+'z©=çR1:¯dä‚b¡³rFLqAçªpL®
¥ýÛ@hË[! Î_áy²„°Ýv!È–‚<Q„ÐºEÐx0Àì$¥ ÿ¨$–ÏPØÄh×³Hd’R7JGï ÃFß„'6C*“žq¶”“ž3$è‚’3®k¢8èìÇc‡x@HÃ¤™ð %Sd>:8˜1òTÀA2«esþÍHbjVÈqš}xÅþüÓ#\]¬E‹ûƒ2»Ö”@öñ¹öääØm{Æ;,ì	×6 rðÇd3‰Ve%Ñ.(n)Ñ
†PBL¥öZj#d(¯¬óˆ`¡´F AŒ^e3I<,™fáç
”ÔžPIoÐ0ÉlÕËG2#ñõªç®
g…Å¬ÃY¸Ó±b¦—c…v¦Ä`V³šÅ4{ÉSÃšÚ¢ev„6 IðR„FŠ‚_ŒÐàBðÅÇl;›ÈqØD¸lœ,ùn\d5¿¼Œó;ÊŒØÁbðŽöáìE‹$ÍpÔù¡íì‡vÄ~eG—ÒE›o¤;w¯.|½¿×SI'í[n©´ÁªÈ,—Ös"™	\úˆ¢QEKê½Æ& !ƒƒHÂ}tÌêfle¸w'´a•å4;~œ©ÔRü¸$”-T…Oå9Ùç¤“Î2{L–Ù$o6¹Srÿå‹)-Ys›‰)-= Õz1¥·ïÄ”g-¦<§Ø—S‰…ïDœ.Pý8EœÖ]O"Æ<ðl˜¨Ú»dcQ,œN'w” M4Ž²*•”X!*#	ÊvÎÝJ4ÍŽnç ý¾(áI©˜HO9rç$œÎµ$WÀ9Dˆ;nš$ë^¾a­Ë7í¸£4oÚ¥y8§›m„›.@'Û´ Ût²JgUéDŽ¢ßRâ¸+3˜“Ç—¥A"aµ!H!Îu:Ä´3.Rƒáj­œWØ†(5FNxìY€]à‘iŽVH?ÕOZ Úë÷¤¿s%ß²ÕtéÚ-C5t&¸GÝ©ÊÛ‹‘ìz‚£%_/¢…š·¥PÄU–œQ¯GWù…‘›Ú˜«>5Ý§yHÕÄIë}¢¦3{¦~Û–š­KÅ¥væŽ{¨{Ì±ãŽ˜H‚qA•rQÔˆEç("Â0‡áQzf½\bà'†<]•²ãŽ»zˆìÇ‚ãeî¨ô‚§Ñ’ää˜¼çŽ]ã½×9¦Û×fÌãŽmYÉs¸c»´ŽÐ¿oîxªå‹‰;¶n¬BT•Už0£±‰†|è4\ÈFy'½4ÄÊè4õDs`ŸT2duªxìa¡cŽû2T©\C• aS.‰ŽDŠÑe•,¾gŽ]Ùâ=—-nšV¹1klÉÄ’Ã[%u|fœ¦|1Y.R”-ðµF‰ŒëçhÚm4Ùøì.'¥Å=
¦cïˆ6Uù@3\ë‚V4å2ñÑ"B žM­ŒE½á"z-ØaÎ%“V®Jl2‡Þå øÛÍÀUìám*RA`^Í›ÿö··E¯,†ƒPc¹$˜ÉìKÍ}¯Mr
¹\ÁpÉûàÝù÷·¿¥•¹&âM¿âÇÑ”“3x7'Cxj`ÍÅÛIœløµ,œ©áÃ›"N'VVCÕ<üMáÍÄT‹Uq<¼.F@ýì”Ô&,ž³¨ìÅÃQñþ×ÿ&>	× '|ø?ÿëÿ+®Ó×0S•gèß^œý­,/‹ô¼U¶  _M¾Ž{“°”f¥"f{ƒä›SùÇ¼™Œ^(ÏzƒjŽGƒ3ÊwˆÁš¨E)Š•œCNÊÉ²/Õ1ÂŒõqøið¥7®¡Ã«w³½{¸ƒrº5î€-;æ :"s|X&•íYpRœ¼QRóNž–¤.žÞ›#2Ù"ìðiÏM´
{Á#KyÉb¤ÊyL¹
Z[ËyôQHí-šP!8ØG½Êd›8Ñß€Ÿ¾ùùmña<t¡,‹÷f`Ö,‚Nçûð¾x±¢çw‰Ëàá}€sW·hÚü¬w=ê‡tWÖ·ý×Þäª(‡Ài@òî¥LÿÌ1þx'À‡xf·Eâ5/‹PIyÀ]n)•½0môÔ¬²¶æ²ì\æX("Ð"¯ä!BæÅrø„–cÓ…ÃÛ¥í8£¯€­o˜¶cž‡Ž®bð}‘Î¶ßÄ=`6±c³oNŽ6kâ@z£3Z®i‘2O•©\c¸3F­vð¼ÊYÒ­º¬Îb–|Ûðºä£ÀÃë7ÑzÜ5ýæÝ'œë¾ÖyÉ>[/Ù£ |6‰JN%ü¯¾òµ”Ë]àñ>þÏ¿ýôþÇOéÎÿ÷)ü—½ÁŸóÜå4§¦ç*ƒÎZîUÎ­xö«AÜMbHúñ^Ø]hÛt)+ÔMk™öÑ–Õ^Íšš®¹nïC47ýÉæ‰¬q*õúÞø_[û£ùJËsº7Óï† tõD•GIÝa°K÷…öÝÜ’‹7æþ’[,5‘JH.Nr&,òÎXJDHU]Ò Âr¯9ÎBX§Q8¼œÔÙùv„À”,åÛQŠV~q÷Ñ¨JILs²Ö….ÕÎ1yÌ	œ²ÞïOµÐŽ[Kª…–Üé²UÇT”¥S-tª…Nµð<UÏ)`·Ó.¬ Ó.œŒváŽçv¡Ó.<½v¡u¯Ã`(·Öˆˆ=CSÆ4„{œ0Æo”ˆˆ{e<õÛ@M8R¬ÐQ®ª·Ú)öéÙ—A€…Th)Õ•`œi6ïÛŸ(•êªV.tY®ruû÷ü¤q±‘Fª…V\òZÒ,´ä˜«X8¢zn^¡Ó+tz…ô
žàø{uâ~'î‡Ÿ{'íwÒ~+ÒþåQUÅŒ…,.UO—þå(""æØç…S„ HÈ”„¥rê8 Ã£¢X§WHû¯‹zv¦ X
Í¿ôÅåØŒ®z®œ…çoNpùhFëíó<2‰#ÉP$¤ ÿ¼€Å…¤‹¡{˜hBæC÷0U(Gº¿ÜG	Ñ.ÌàAöœBõ.ýaÒÊ]¦¨èåžÊ‰îª÷ÆMd…?F•´À2›Çqé‚nBâÒ7‘tþ9
—Õè¹v4¸Ä¢x¹z®û¶ÎJ ;ÔB(ã.`¡}¿Cä¢\@½R>a¢£˜K´•Zg‚Ž®:ÿ)B@XVIøÂÊBXhÙ×p>¡Ðz_C H/ƒ¥Õ"X2'¥Ðå>*ú”rÿ ©ö8ÛÞqp#XhÉUoXhÌ±9v`áiÁÂÓ&<a°Ðºp$	À€(±’–¦AjµFHn0Ö2ø|	`a(À_ÞG 1˜`[•õ Ã
-»àì¤@*UÄZÂ
i´€¤99.÷Pë¤ Â2 	-öˆÚ1½o
mQ92û~3¦|ÄV‘ãã×£cR¯;Ä©5RDÍ,±Àýlt¨ú5F1Æy'dPpsœ‰Å1rf”SA°Ø„m,ÞÈb€e˜Ï½—Òò·Ã›*ùÝpü¹vŸ3cØÜ4Òy?.áƒÞ`€•g«H>5Ÿ«èpâsèRb¼Èç$cx^.9ÑYñu¦
ùÈùÜ±ëÏñ)va¤@¿ŠÎªÐaV•Ð·—Äµ§ª"†5yj–×¾’Xˆ 8¦Æ†äˆjCŒ2é#£ä½¤ŸTÄãb”Î#­¥©Z™‰, åª,Ëkª&çªeªH½Ìòô"Ë£yJàëLEè‘³¼c×S¶½÷f–×–~vËkÎ*‚÷ÊòNUÑy,¯uU§ä< Èœ´Ä(Ã™C,Ö ‹…Œ’»@R’Ì3Hz/	¢ƒmÃ‡ê[çx3efvTb…x‰ã)‚8žD9eÆjŽ×é2÷¬ËÜ+¿kIÍ¸‰ÝµFæÕ™ûdv'ªÐl‡×ÁÕÛ?&•fLþÂXr¤ažbi(CþFÎ"¢´fJêy*±éÓŽQÏàW#µå¯rªŠL”Ûû«¾nw-%–Ö®]sÞÛ7¿™¯Vo’ü„åZ,gã˜ ÎÒ•Ír˜_ZàNÅy §@Û«8Ó&FÇ™(ŒÐ1j9ûT6ªvßáç7o>ÑÜØ­ž»Iõ*N•}zX÷6íqãõh‡YN¼ûþûm{¼ùã×?¼ý„/è.}/TóÞšøãØáxâäàÛ—nK¯ñÓc¤öuà)âÆpIÆ©9C‘(ñŽkS½â
J5Bþ'(Þ"®#5‚£W%hí0ÒNúðôŽd¦`Õ‚³Å$)IŠçý¢9RyõÏ¦©Ó‰ï['®Ðö:‚ŒÔ’²z3Fj‘Ð1ªÅ;ŒÔa¤'ÀH§Z“þ80RëFå¬ç#Š<g.FázwcÃqÚJãDD*0î‚(EçˆÚ„.Ž«<ã:ˆ´“e"mH$§%F Ál"á,Ê"uF”ý–„e;øÉe ¤vÌ›ñQ{tŽÐŽÒ¡£=:zRÛÓƒ£–ÃÁ1Ù0qA[Kyàç¤F	Ÿ.%B3Â¸¢ÞH(7T:,7R)xTH‘èèßÍó±ÂÅ¯5Xùe8Y‘6Ã¢´hw°hvß¥t¼÷c­ÆBk¦òâß?þúËwG‚‹jóGÙÑ‹EÇÆ9ŸW1ÁXŽÞ(-og[;Dú¹}ú´I‡±­%J#t0³C"‡©ÿbãBâ”Ù0{¤œÈqãÒ7¨ñÌ¶Ç“ÏÒŒ”>ÚrØ“þpïÞý¶ÛÞ¹ì‘ê©/Íó1“†}z³‡\AÄ H4LX‚QØÉÀ‚Â‚#,£&sJ %U †!¡´÷ÎP£«âÿ;³¥ñ+ÅwdƒÀ†/Uv)LVüãÁt–¯½çÚ!Ò?Á´dÚŒ`Z$t0£@#[G0y#f ˜5žÙáÌIyZG0ön‚y°i'ƒ`Z7PÖuÜóÈ¨¶†+°UÑ¨èµD)]ƒa„¤´EV	R^)E9‘L(’K`Ú4MQ”ÛÃåŒ&‹ ph>€éìRûµKáý*`Ú±mF/íÑ9”Î>»ÔÔÚÄ.¹#f.|‹ØeaÀÃa—S0Á´]mÝZèòÈžºô½9ª´S W¨	3ƒÑ"å<µ’T¤‚hjœaQD-	Å* n#³( ç<òDl‘\›2ï~|]Òš%HRïz—W“¯!ý]ü‡ÍM†p^»ªÒã‡ñp2tÃ~ñ"ûÝ€™B“ŠXU²(Ã¤Æ„‚ªuˆ´©FIn7~6òÙ´ÚGYajwœÊk(L.ª§ªkJþý·÷ïÎÃµÞ_Lç?¸<ë»ÃðÔ¨¨6LI’]É¥ºR1ºñ¬)É©
‘v®3L¤.„Ü¥M:Œù&Q:¡#úê[ØÄTò«AÍ°ô(Ÿ÷*MY—ìÚKÚÈ“°þ<ÂÄÓZ>=oß‚áýÇ"¥²(*î\ÎM#–2…×\8M­çØTÄ2êœF‚;£mÇÄž‰Om3<;Q—T-:Ýj8\ó‰º4W’ä3ñÎ6³wÛÌÅ2˜xKŒÍL¼EBG•ô\˜øI@Ž–‰·_Á€Œ%…˜hKIÀ;D„ÄZ1'µCÆGeA)œJ‰3ŠXÉD`Ì³ÊˆÐñðãáá3óDväŒ’l)pFk¶7ƒ¢Yq3S&ÞÙ'ölŸØ¯ÞŽ3oÎñÅÍ<þ}
F€=²ïk[NÆp¹“2]9„ƒrÎ2âœŽ(ƒWÄEÌÚQO­öîŽ”{,=“Y†’ nyØ®†Ã×«ž»*8ÞõMÒ;··“t9¥Å)®ÌÀ÷«UÚÄÛgëÙFôêêy‰Ÿ@­O¾‹yq®©Ô‹i¯1ðf-æ]àÂ³˜ñl­÷ ä‹w?x÷…T?þ:
ƒÜu*ó¥<¡´!«¶7p†ƒ‘Âm\âš"÷Èšu6ÖpÐ»¼ß\›µ£‰t«¯mDÌŽÖaú3j%vlŠýoE{>[ÿãàÞíkÑ¥&BJNI%ŠR¨ˆ‚çZ(fBÎFª,³‚A(!R›È¬L²à:î}PU¸ÈV…Jè’AÃbAç¹·¨"f›qï¶uâÇÃ½\W.1m¨+Jî­[æÞ-)Øó¸wËÄŽM£ÿ­¨Í‹{·®>ÇÆ3ááÒ`’x­=EÊHäà–çÀ¥™‚!¤¨N©3ãžF@$&ò€ù–µ¤:æ½µ\çêÀ™æxÉ1B£…jÂë,?ý9æÝ².üYðîƒä–jêÃß&ënÎlÛÑ…çñÚviŸî=¦ÄÐx§ßc¾-ÿ«?ðÇ¤÷*‰Åœq+‚¶4"£Â‘+g$Õ,R±6X½FZy,môÄ#Éñª×™ví÷·ÿã]‘Ò—YS†ŒŽÓÜ–/Ò+–-ßõ×µ±ºîk=ÍAy×íìÚ€ö5œ¸Øð$\¯0rpgæ.îÌÜÅÛx–*uUÈ¤¦9–—ëeUÖ«z†ªÌvÊmÏ&W@t¶‰«Mêuš}vqvöÛ|“´æ©IMôÿK(~ÃßãcPùWÉ	r‹Ÿ0)–“`%çaãe?™žªÎ~ÿzýª>é¶&øé>HyžˆõHê ©š¦KyHZ‡MEå‡Ÿ*º¹íîf·¶ý§hG³ÔOÂ(Á·FOõÖ/‚§GšÒiÓ^NË»=;
LÖ¾¥#`µS1Ú"&„ä‡  LˆTTPK)©*·aIŒ3Mb‚© Òt˜¬Ãdír¤Ê/¶BÙrÂ)F‘ž÷ˆdŒ‘“4ó“u‘{¶Ö$«êž1Y[VŠLÖ*©ƒ&ŸÊÂdíÒ:lr­ç…ÉžØÔÔa²Ú¯5Ñ§&Æ0–<‘ÐÊi´!8"#F]rCqœÇè©q1j‘&mç|ÒA²’=jžc<¿¸‹HÌ}’)²P#˜qÄH3HÖÅ©ìÕ§ÔÞ•d-™²2ðX›”™N+µJê ÉÂž{Zãâ3†bCoÝ1Ù+5§Ñc…±çH*M(ÇX#êV;°Q^ê£AˆG«1&LEáFå*òUÙÈ3Ø¯?þð¦	K«·-{¿®€§]^Õ“˜a±ê—)…A1eƒõÌÏj¨ût¢ie°`²×ÞVOëÃ—Ð‡¾ã2šžr!Ê·šGQs±²xQ³.††y	8dR†“Âô¿š[ aw«óÝÜ;Ëƒ{ÅÜ«k	íå¡½bÚ;›¡½£0u•kêL_,yX!
ƒ,Äó<—dgæÜ¿™Sµ}	ã´I‡±’%J#tpû_õtyÍŽn’·•¯DV¼ò)Y·öµªV$á<lû gåVSÆ¯´”É˜„u'Dä€_!ŽFKh$AiËVQ"m8÷B ƒ$;:du §8-ÙuvÄRšw 8‚-&RáXåDMNg3Üw„“Û«¨2 NK&§Í §EB7¦}³ çT£¼Nà´nI–cŽqp6Aê8ÔXë”`Á–I"‘Fr–”6[…\°†€ˆ¯*ˆÛá›ßÖ7Ÿëu½NcÂô¾Iá‹øF5Qàt¸ýàÐ~ÑM;6œÍà¦=:‡¶M}³ÐæDÃäžÙŒœ0pLæ)”ç$Ó:bqLX-ƒÀ( ¯XHiß‰’qku0NxšÒÓD†#ÀUÍÔ
t“àÈ†µüaúÈë€Ë|Ë{ìÀ†…?ƒ»™Ô5åjHK9ô€p KâéÀtÏ†0àuï¯ŠoŸ½ë4Œ”† ¸QmÙÀ…ÂÞÂ:¬CäÇÁ¯G°­³¯g)Ø½¼7¨ù2]‡ëáøö¢¨oBHÌ$”u“Iâw)õì.ê4n5@¯ÏÒ÷¾W~®€AM+5èMŠTnïfrÈ¦Æ>0éAb½ô/S‹
T0*†¯÷›RàÚ“”¹vŠ¯ÍçP¿_³z!Ÿ„ÔV$r­H„
—<Ò/TÓÃZe¡úÍë,IH„§ðöÎÙÓ}:1©&vHZ‡5)¥ªxV´Áhžcó¨ç¥#{3šØ|¦ßJæ>"·ÂNÍóFø4»u}ˆæ¦?¹°}¸“û½ròä@jf0UD˜KÎ½r"ª<MiõUòêQV	B%×©°òTJƒµS.8'¨7–t@ªRM¬U”ð\kU´”l˜S&RÊ¤; Å)ðíf@ª³XíÛb…Þ3jË–”Ã»Û¥uXÓU>ª(¶¤2GÍR[Ø|¦ßJÅoHµŸx1zL %§BàœÉh"•ZP±"•´‘{$R¦'¨Låá>RøŠÑGu8ª‘ULæZÅˆÜµèö ‰Òy…T*çös‡£:ËØ~ÓCŠ],cY<¿%£Ußn•ÔAMdù*lAåš š×xž;ÙûÆ“„Qpfe©Yë;Dsñ B¬”ö¤–Âi#?<&“¡€¿‚®òó–’¡£t ™wQR˜1Š­EŽ
&(à¦ÕBz²
¡½¾ß¯ÑGaR&Sã*ºÆYj³S,à¶>Qfí¬úæ6•œzFÕHl:ÓÙ{{–\ Ò;¸@O4nÉÝ©ÚY| Vy9)€¾Jßyd•O•jã¦ÙÙ.	§|ÑxG0’™•&Zäd»„íëwS‚o”`bÔz‘ƒ±½µÄÂÑ;•€Øh3òÃCÅx:¦,­UËKõ)ÅuOBvÃ<w§óº1Íkµ<æ±Òt©ÚGÚñS…ƒß‘ Ùlù2]¯êæm8_í„¢Ú·ZÉ0Õ!h0ÃsŽ•ÃŒL9l0÷ZP£‘EQèÉË¢‡oITiíW»•w(êXQÔÔrÇQv~JÂô’AJ-T	%8Åže£¨Îj·ïÜ”HlH¿EµcÑzÕ^ Ù¡×:uj(êTîž5Šj?6È€#D˜‘ÊD)§Ák¤æi=Bðf:Š1f(Xì\ô>¥*'L­rºê@Ôñ‚¨©ÙNÐìŒ’„sÆ—@”FõÞ DåEë× ª3Ùí7˜MìÞ{3„jÅ õ4ªµpµGÇuøi3~Ú7":Ñ8½£DÁŒ—Ñ`˜þYˆð]qIŒ.0y§¦m¡Z|¯òRû&òˆ7’1É"gÄÄ ¿@ŒŽœd) ‹£µÊ[ ‚¬ÑØcîƒs\®Êü ÎON€E¥I®C¯ïOñx²²7ÂˆcX‹¯ÃñçÕ`èÃO¯ÿQ…éß7®Fô½TºÐÖNBu
î
 ŒÃMYñ§˜üä±4Àq+g0çžJN€U OU”æzì»¤“p^¦^¥	¬2	‘óqé#LïªÆ/*ôrµBˆzÞ‘›Á%ËñäNÓ=ŸžÀóµgï¢>Ï9hæ‡?Þ×­¥ßŸ­Árìp¨V;XÚ`¢^õ[ß*ëØ¼Öaü"Ñ|5=cŸ&+èß—ÌeºÑÈ)GÈ¦x&ÃÑdãà›¸óâàÕÆºá8œ_Ãum6Õû­¯	¸´n\r›,?]ŽÍèj‹M§Åáÿ¼î‚+qÓ¼Ùß†`´ÃœDéÅëéyù­…óRøfzL~nç˜Tc¦û¹…q7Ö§÷f0JwìæA7;àÃ˜ïÏÖÏ­œ­jÔ?Þ¿ûô{£#µ=´}e{ƒWåÕši%þéÏ[¬yþÉk–¿ç~ò?ÿö`òüb“aÿÚø–÷{ZÄÉhÓr»ñFÓŸÚL†ŸÃ ÐÀxC;¸+6´øÀùF>…—¾7þ—)x®Pîã¸:ÁžÄŸùþ¦WÛ¿¢ûü×>|YÛÂõŸ©óéÍ¨Ûñ£ˆ9OœTBQÑ½Â1é1™×Ú"¼
8bã3–"€uH8«HÀš'qÔÔ+ç7‰—òŸ¬”\ÔÔ°!Q)øP8ã+™@Ÿ¯=zO‰Ó¬sº¥âI¯ÞM/èr¿ºÈüuÙ°½}A`op¹ì¯7ƒÔñz3¸»^ß|®çàÓƒ›Æh=Y7DëY¸5­çÈAÏ¬Ó¬w`½ëõ«WûÐ²ï9µZ¤òÁºF1hAQ”::æ¨{m~²–
cd@XGUTLJ§IDÒzí	
¢ëë„> ëw¢Ù2X—B,¹,ÉBž9B8%*+Vå”êÇâ5îÞ7¦Tß´»Ct¹KôJDop¥ì¢Ë}Bôf
ï- z3ƒÀ³‚èm›Æ}ÓiÙ¢g+Áw?Dï zÑ¢»þ¹¹›m‚yz½fæFÒŽR=g%QD*j<ÖDp,C pèœ©‹žªT´±H”G„[É¹ÑÜkÜÊ°ªoŠßoÖ'‚v7	ƒß@Û~•_§ÎôoE!áðÑ(ù÷Æ¥|AggU×á ;«Bñp”Ôï‹÷j/«ðS§âÙNœÏÿ˜«ÁáÇÃÑYo =êWW¸O Ü3vwýØ==çZìN—±;Qòq!$ZªSÁ‰¤u¸8Ó"Ë³÷nëcy¾ö@»ƒïˆ½Ñ2ì
Û1GhØ>ìZ¾ÛôšYyÕ'J„6’ã°™5X•'wr‡juv¹‹¶ûîÜQk0ÿTO!ì_†CzeÉÌò³~ñ¼¤y^î™ƒîß…8}4´I¬™lH0¹p2ß=„¼ì"ÉSÙm‘æ^ÆU£·ã_ÜÊ’íjCä‚kHt+b‚‹1¬bˆQ¬¨ð(h¬6Ô[@`Ú++£sJQÅ*mh‡²‡²~€²8{eq¹¤ ®M…\@Y„e:/À¹A+xä(k×…FË°3ÊbJîQ•²\3»¡¬Mê­F8`³®,eåÕêìr­EdS”ÕˆêsAY
É”¶]”•=h‡²že©v#¹(v4H¡TLqB€³üÑsí¥L …ˆ+‰æÆ[‹3)44PJw(ë	QVÝ¥ñRtÿV ,¾”\sŒ8_@Y ˜f¥úY„jC<Ó7‚²6-Ãî(+¥? ÊjpÍì†²r Z6ÈA™(+¨Vg—»hmÄO5EY¨
ee‚%4"mƒ¥ìA;°´5X:¯*¹“ù/Ä"§ˆ)­”ñ8PÍ¸ò”`çƒ•2*BxàrÂ,39Cæq5dº¹/[_ñø²xQóƒïÖ&ýIÉzÆ¡ò«{¥Úñuõøi™n.Çæ:A¤„‹­£B2µ¾He[å˜Ðt±Ü€U‚æ«Çx•YåÆ–ŽZg›; mŽÙÔ67?ËzÇjú©IîÇþ³‰S?ÁãÞìóyw+Þµ8±#0ÜmÍ’WçÇ˜ó†üôŒ¶e‹*:‹TDŒy'7†Ke£öTR8¢ŒZÌXiN¬gÈ¨ˆ)•˜ A¬YcúÖ­F¹†¦ØRv`J±Æ|Ñò¼é2ÚÎ<só¡7/Ý‚Ñ¶©ýoÈxZ5<<Áã6e´2yìŸÑnñ ß<£mÙ‘¶ÈRemR„PÀ‘ð¨ŒæYŽ¥ÔDDOcÀNij¥ñÖ;cpafˆ
£]¡›§ˆåêæYŠç[b´a±(Ñ"ÝL7?Çh;ýA4ô¤yâµ-m›
à†Œ§UÝó<nSF{ ­÷þírºŒv<öÛrXÀ¸]IVGÁFD8e . H”ò‚8cì˜¥˜x"„ÆƒÄå¬MêË€fÛ5‘Ý?ô©örY‡[ýd8ì¯‰ß]ð7cÓ¯¢}ËÞõxé¯¿_ÇfT1éûQŠó*|Ñ^^NËMU¤$ür6ã]±½2ŒSÍæÔáðl¸Úìuâ®\w¥^©M€G/–_F,å¿¯¾LP^÷é)<¯ŽSkBî<5mrî"ìçAvó€©®·ù5»Ö^/òˆe”ÃrLËp¨UH´òç¾;Í¬GÛ8DãÕÞÍ>öÉ&¬Z4‡¾ƒéå†[r²zm§Œîrq´¥®ºÓ¦´eçÞXÙÁ%P+‚‰õ\qDœãÄ¦¼1H`šˆzcy HsaŠ*	¥âÌžåÖXÙ¬Ôî|FðJe€µ^VÄ2X©lès`…¡]ÁÊŠ‚'+»)
rá”ÁÊ‚ó3+Û¨v+iv`å›ñÝ;°ò§À·Ç+êÞ»°åŠ
Î‘(‰ ˆJç}DJG$€’”—%-ºÖVc'2)#×FÂµŽ­Â+?½yw CõÜ¸HP¦ÆªñýQõ)Â]ö½«Ð•Åíðfn4øm<®°·Ó8„
Ã š™ÃxöÅôoª,zõp½A½y0àE‘È<ø¸®ê7¥îÌ`ÜpÖ¸þM
r¨L+Ã~ø5E[œýkâQ®Næou½¿TøÚö`ÇcXëP–	3_{“«ƒBÛ~V)%œ "ó½rÔ7·Õz¥h˜ZìÂý˜å´×”B:D/+ TýX‘ïC‡"ÅiÁÃªÇ4Æ£ø:\Û„þî†ü×ôQÊ`0hŠrà3xæI¨É¤^°<ð
Lœ=wSÍòìlºD¦_ï@ªÕ€_`Viæ—uVqºùÐ®JÂÙNÇÄLÿ¶ìU_˜ÜBýÞ$!ÍÉpºGs{]ÖSiÅ/¡[­iŠ=©÷¬ßƒwÿììÇ¡»Iá'ù+®,XÖï`7¯üÐ•¯öb—ˆ­Ó²©ä²äT‚O^Ž%ˆ‹IU8á’¢èªÉö*©çx^Ý.§íP²›®­Á:ìlèÂDèÝl=ÛÀ¤¿X=ÿÈ¥—?V¸Êsº‡ZŽ)¹ü'ØlîæŒÒxåw‚µÁ÷&Ùe¡ýu5n%ý&‰7eêTƒÂcÌ§jE]ÇY:»ªMÍ—Gë»¼ü-éý¬ÓÍ¼¦‘RŒµu°kø8vÞoRj‰„ÂžE€ÖÀó±¢š›h½hU(p‡£;Ýáè,=ç~è3†wÎÆ
§¢18šIæÆ8G
åeŸÇp»|ËþbÖawMw)Ež£ñ‹p´Î¨‘ÒGç™3Û[ŽFx´²¹ØŽÖm”iü¦pôs×ZŽþ«7ÚDãÌ/èj¹v›èpKœ#"Ä€sŽYÆ½&{O‘v”:ç‰E–I&¥`Ò
gGÑ	âáNòU¾ôÅ¾ý0ãêÅ5 ¤Ë:/Í&^ ÿ³7ªj¶æ tò¤3©¡"üäXÈÚÛþð6ñj×¨I×¬Õ£ˆc©–	b%ùB"ABáO."‚©×çä1}ÚÓE„o_q7cözìl!‚îR±žë¦ÚÞÿõH&“ZæH9l9{Ä´[ˆD¬Áìw'z¨‡ÛÛsí„¨`V‰ó¡ËÉæo&r+èÂPÚÛÖ,ä»"Ö®}“h¼vÌE‡^J&¤õÆÒFaŒÅ†YÏ2Ì	 ,ÌÇ¨„²¯Lñ÷M#ö ‚–u"d©€Öx!¦ ‰`Ù~zw˜¶¥s7Mö*´€CôŽú™,dÐà­o‡lª´Ô‡äŒ˜ÅªÛZˆFüº¢‡z¸½=×±á“5E>Ç¤]û"RLL½fŒ2G¸IÚ0òZ8Ž-7ÈX¤#Ž Çxf‘aæ–úykFÊæ@d. „¨ÇsæO[ŠmÄ)W’ž"K‘m,š²`8(ß²©({v";çþÍ€^ûˆÊ(øÙˆä˜Á«Û[ˆ»¢‡z¸½=×±‘“µå<=¹,ÿkë\G*Yƒ`·±Ïª¢Šib©v&"âõ-fHY¡RÞ!¹œ
Ï|°Ö{j¬¥LÛÕÚÀ).Çáã¼«­)T3ž¹»¬÷qº[­;g)ãý££Î|x ©À¨gsmj03´ÿnrËV1pÓŸ›Ñ>šEEV.Nw%LÿFK@E/•ø®ª—•ÃN5þÙß{ÿî<9ù””iúƒËbVå÷¢x+ç¬”¶©°ð8ç!pÞûÍÍùeÕ²¼ÞôýœÀ¤€Òlzƒ´½É%—«kÓœÁŠÍÚìUAôõë×;X¶V)çpA)¯8yÜL…	"xÑs‡ *Ù|YQ‚8‘YéžÒ©9¯_–ã2RÌù=ëáw`\²CÌfÚ¥µ<¡éu·tøá§Š\n»ÜœCÕ˜y‚…Y€â§ÙÙ
ýW6™ký¿øù“¾y¸%íÞÁVèðî$Õ‡`…7É}CŠîÏñ zAVFJ0­¾<"‰8±è µåÒsâN¥§51«dR£à,Ç&•”^`ÂRë(&<†•åÆ;Äò#Ñ€8È=bII©èãù)SRí¥˜=@,D,"&óTNKzY2íù×äØËÖº£¬‡ß±0²ƒÊ(±4»îŽ±´õùˆ¥ŠÏ±´°BbÉE,ìBL×š-ëæeßc9âÈäÎŽ)€Ì`çµeÈc'$—ZF¤ˆÂ¤rˆeÜ[®Upš©#2šiÉŒ°+ÓIw€å,\sNYª5gî‚Ç|`Y®€E‘%åM ¼+çkß’gŒW6?ûÎpE¡=Ã•FwÝ1¢•– ¬´Bð9c•Ýè[‚*)¥cY“AÈ<Às,0öúÃAÄEEŒÁœc&CA¢µàÂPm,•Jc|Ôˆ¡hå}5·r)ÔyZ­bŠ¦«Q0Ç#ž_¦}f+à8uYø[XÓž6oÆ©dvPÊâëUÏ]%æ~¶ˆigr?ƒiŒ7ü:#uæ†××7ƒiùSÃ€ÚÒ¢d®¥E¼ä~‹ƒÆs^/ˆË¼€ zA:SËþM-5-W5ê}:±eXöþÌi“êÉfî5­CZÎË«ëá(§MæzÁEóåº¼ÌkÕ`Ì2\çµj2æUÖ˜WÆÜ­®HºÀ‡ƒgn,J¯ØF<«³•Õ°>2¹Má$d7½º>
0Õ¾­
0”Ú0…½!„Óh‚£6RI|€Æ”z5Kb¼ˆš #©ÂÄï“ØÒU¶ªLíÓ¤U®Hq­é˜Ë`Jó<Ð˜ê¬@{¶iÌvÈÔ˜¦Ú²¢<˜jkîMÀTK4;0uÔ`êdíX˜zz3s”i@$k9c3—ÆZ%l ©0:¶\Q¤#R.Ì­ŒÐ'Âÿ´YUþ¼ÃR{µO‰\û”-+¦¨f‹XJÞL1Õ¨öj Ò
ïž…¤Z²ð<jiêMpT;$;uÔ0êTMlßŠ‡”È÷˜Ì{Áji4ÁˆqF-µÌ	†ÁŠÊ±á*H1!¹—˜ò„¸
˜Zã•+‘
3õg™–§i›ŒIž4õ¢©8tÝŒ¤¦í )ó8”ªÝ‹¾öúý4µn3¿¦c°åiÌrmyI¾¤~"H£…L::«:o½!oÿ†<AvÈn\oÓaìR5­’Ú=f·âmÕÄ²óó~+¶¥é²lßbã£ÀœE¢Á„ $
&2KiÍà¡bô$èˆà7/¬Îsƒ…ÀN’ØñÇ=›gRG¦y®Ýåä·»òÇÎ6³gÛŒ`d{ÛLlÉÔÃ[%µû1óÇS5´ÇËÁõÖ9Ëö!=:o…àÄE„öQëÏ±ó 5z«¨š*"9ÁIiSÇ™QŽ8¾&[È:îXñ«ÿº	°Wyÿá¼(ñ…_zYªø´Šm°Çj‰C¦iÌÈÏxcq­RÌE«¤úJg›âUªñæ)-¯A±rVMªê 4[I)Ú&õSKœJ-Ô2œ+ÔJ.ÔR-L%™/á£y– m{'Ò@¤å;ø¦¦M:£%P:¡#fÝøv4©Êºà¼r3p	¤GO]hn4JYöÌ(ÔÛØÉàÕJ?9Âh_þ¦[¢XÀÜÃÒke9×A2L$ªå„yê-0V!¢3Ž2)#iÅ¢ñÂøÖÆT-À²Sw Â ËƒR¶€0ÉIû:ER`ßJ¹ƒ›AÂhËûp#Âh‘Ðª:„ñœ´Ç0Úw#„`éBÜr5³ˆPì£"RPJ5a„ëHI¡®Œ¹dD’KL~ì Æ70¦®Œ
çº2J–2m ÀÀh` »Ã`t^Œ{õb”t¿ð¢%§¼è¢=:{ñCë°EëØâD=[ƒCsTæ‘ |ðV³ˆcÐF(EdI=0É½“XªôVhc´—.Ä`¥Ñ.PÌñöØâ¦×üøëë)\a2tÃ~¬€ÜVLÃýªy|¶(Ã¸Æ³I=53¯í‚f§&W	¼ÀÍ)¡LÎ³sJYüÖ»3IÀ$ÁÄö^i“d’ J#t„&	_±O’Émû]›&™®±ÿ?¯û¤ÉdîÛ7üãý;‘]P´}o~ñ 8I~gq‘Iù¯
°tÞŒs`Þ§#í[R,VÑ¤}ž å¸ÀÔIL„µÖÛ€óž›"#D`•4E@‹U‰¼:0Òºéb¾NÊ†¬ãRS±èÒH±&„,€„q–DF:ëÅ¾­Bl_&%Œ´eTØFZ$t„Ö‹Œ<#0r²F—£ #­]¤>©°'ØäÎIA°WNiJFy‹¢CÌ)."Ti(ó„KµºfK‡EÚ¶rÈì„â
Ñ¥T¢€E8W‹X„1•E:CÇ~˜ï`èØŒDZ2@l"íÑ9>CÇ7Áû¿;GKÜú˜ÌF[¦A”êi´–ZC˜¶±KyˆðSÇHR0`	ßæ<ó,PI·âæu~¤ÄÎá¤mfà°dÍS/ÍÎæX÷µôF7©¬	pp ]ø¡»IÕLÊ9®þã¯ï‹É8„—gÉ}aÆi—«ßÁfPÖÛ^=	lÒÂ8OÍøk‹ˆÊŽÐÀšÐ¥¸J&˜Ôó”Lhžåá ûÔDön°gÛë `cñÃM¹w Ef.h	óÎj”›¨w=ê‡ÍƒÞµË÷«÷›RS¥&™£¥ùb¯æŸï@ôÆÕ!Ïm—¿^_Ç½IÎ¸u»ÜqËMçZ´—Cª±+ ùIvèî· ñÚ©3Ù¥ó€y °Î/Ô.õT„w~Éõæ»ô&;ÍœÐzï°_âb'Ò;­ÙNåÏ¬³Ùô2Ìu-¼o?#†/ÐÆ;õÎÝŸÇ{ç.Ó£½IîýõxïÌ×±s>XÖ  ÍJI8ƒ”9ó›Õ€&«q™U-áÔœvw íÉµ#{È ¥=c§2ôÖHÃ…!…¤(é°cðŠâÌIn„8Á‘áÉLÂ:íÈ1iG¦.*»&Ö˜,™EÇrÁ_”qAY¾v¤óÐØ¯‡† íS;Ò’ßD§9€v¤¥½ÊÖŽ´G¯ÓŽtÚ‘N;ÒiGvÕŽtúN¿Ñé7ŽL¿qªþŒ~ã‰õ­»rjK½wD¥e(µLJ"‚c„%QE£y@Ä K­¢ÒI#€Ù.h§ÞØ¯×§Î.Ó…¥K5OÆRÍ{}2ÌUV8l­Þèœ>÷éô™\?î$ÚWn´ã‹ùmê66j#ÚYÜleDkä:]ÄSê".«d)‰ì.£Ëó0ÇMèt:ŒN‡Ñé0:F§Ãx.:Œo$.ã™i%ÚÖ6ŒGî˜ÂM¸‘”+d4S6R$vÑxI§\PlCÁYâˆ ŽÓhŒbL*n„§cµ«CEñá-:ÿÇ‡7Hëel#eçcô£ ×4rDëÜÈý •–RzÁ3BélÍ,ï"Gªü£?|ü±‹ yX˜k'	Ø®Ã
ŒÜIu‰µÚ”ûšÙP…rx¨2åí#wŒ½}OIm$‘Lì1’ÜØè¦VI­PÔ*H«‰Ä„3#$iY ”ª€tJ²IÕvµ¨;ÆžëôÈQv¥M1[bìL-d‚P\f%‚¸cìm;=>c?nçG.ÄnöÍŒ½E·MŒ½UR]’ª`ì'éqTŒ½u"Â)“ÂXx«ˆÅZf¬u$L…Lñø9\ CÇ"¨"|o<ç¶ãë{µökÄr­ý+´Ë "JWyÇ×5Â\4áë-[ûO’­$ÕÓ5-²¸z{ÆâML½MJ'žðéÀæüSæŒ=ÙlËaþ°LÓÕã°lùìO‚2X3Ç©·˜˜(ášeÑ3ãˆJ$D©½fB:(bœ
*¸4bê¹ZÉþ~ž|þ¾°¦&t}ÓŸôî˜Ku?&Åu(Ks™\Ï\¿Û³šë}¨V§€K}øµ¬ª8ƒ‚;þsú×n‡ƒ0õp3Å3î…Ém1Œ÷Îf´K îú7>5}ýöýËâýÇ_^ÿÓ\‡ÿ×Ëâßç‡ñËâ‡áàŸp‰½,~6þæ<ýõòìí›ÿxY¼ýÇ›—Å/Ã/øèÏé¾ýÚ+ÃËâ?à«wÃÉMY|„íK,ìeñ±²ÆT÷ý†ÑÕíøâx7ðûû© .ªVÉµViöÕá7@>˜ò6=a‚	°½ËRÿjîÆyYüó¦œT.–È¹áÍ`2çï7û$øÞd³8›.æ”Ékð¶¨ÍhEfrÇ=­Þz§[S¾,€–ôÜ¦îqv3èý×M¸ëñLž‰er)ìw¸^¿½ywÿkµ  4ú70‡ò~6½²á)"¼B=“VãkorU >©Ø_:Dö¶x}Æ ¡Š_ýÞ ùíÀ]¼<{ßsãa9Œ“âÍpÏTqõÙ®ÖmÒ@°ƒÕ/û5õk|Ñ»^i$™¢)ï!@ƒô,Õá²#'
)´˜·RaJ
tQM'-ÕäÎëËâ¼º& @-ÕæýüáÝòýýÕOïæ>}ÿö·ÝáÍë9°üê-¼cÀ‰{4L<²4»‚Ì)žíI.ª™“^¬c`óí¦g†ý<ŽÖõº4½ëÇxpe«É:¹n61âpíÄîMgõf(9yf®
Uëuø`‹[3\ìX=ìö(é•í^•WÀfÇaý’ÎZ®nñóÀ¹$c¨iÃ5› ‡Ü-ÅÏ?=²|=á²œŒü4ÆçÓÛûÜÇ!4ëu9úõØìí›Ÿš¨v>¾oÒúŒ5Nµ/Ë&^?fòù<ù»4ðct¦76Qey{SžWM·è ùÇ~ÿø	Êt&ª:§ÓV;ËhÆõY9G¤‰0“Zl²ðéÜ&PÜdo/ýçó?16ÑhÃ Û§QïO{÷ìwIß´O-n5îVë–wV95=õÐ+É[t«ïŸ-:¦‹Ø¸ßä*y75^”ÉvGkò¹*oÒ§çÕ‹²—º”×‹b5Éuòˆj¼ÖU§ê:ÜªgœÆýêÝÝºKóu¹ƒ€¸’Y7r“'Ì3ìÙÎ+>£}¶öæOy~3éõË}hxÒGC&k Þ’~÷[C$=•6Â—aÿ&Aøû‘Ce]ˆ‡ÀtiŽsš©ËÄ_•î*\ú¦Û\ÿúˆoæM9®`hz¤5_ÏT»ª¸ÎËÞ(l«çÂ„^;ûY#=R.rˆƒv4š œ	H
'•d&JD¬pQ*‡™‘Á;gƒ0Ü;NÄ
=×Tq§ÜªQnÒÚÀ6*ÓË°xÿ±ø5F‡‹7Ãëë›AÝ†ãÕú®×©ÈøØŸ@¦¼93ÖL)V:µóG•jÒñÅÙÛÉ½z©¬º–Ñ4øb¶¾ÃX||ûáÕÇ·ï?¼û))–*5KR¡oªZþÆMÊ;«NÄ¿?ÃòVù!)˜€Ôô‹{Ìô9©à¾šõ)>Ôãö¾ôàéj]Nññ¦7	Å‹>üúñ»=ßÝ\ñ1ŒaÚ«Þ/le_«/~}ó± ÉWé¯âä‘±{_Vö~W÷¦©7ÿîìì$T]ÿ½Þ“¤Š,¯†7}X·P¤Òói»ÇaÔ70'øvü`¦góG`ª^«•]õÆ^œý6_a~&VØƒCU”aZ³¾n¿O}VzY/jÝP¼ë¬u‚ x‹æ½p¸ÀL!ÍÙ£ª-J‹uç…Lö»ûºóR°YßJ­4Ñóúz8Ç5[µîªeÕâ‰Ú»æêáóïª¾"ÖL{µ†¨šùÅìÃ<=QÕgZÅ'6™ƒ³V½½Æ¨fÒ;<ÖC(³TsÚž9ã;üIšñfmDPH!´VŠ2,·É#‚%Ì£%–&#WJ[/0òEl£ò+³4¼Â½â&SFWÇÇÞþ’¬#S–£«1ˆ”E½¾gúÃËrª^Ÿd«0ÀÝ›]{}œ%ìšnÂt¡¿.Ë3LYÔ4mÍŠ+N¸¼ãN­’Àýgsn—ƒ›Ñeº0^Íš¾ª„OoU¿¼Xd(w¾"ilw3.·¼˜ 4ønj­›Þ€‡šŒ½{…<ò8ëYÎ|:.á a*·¦ ‡kç`€ìx¾A„¾ŸÓ³p^úsòDç0N =ëÎÆM‘jÆ]fóXC>z­/ïÒo>îyýnm5ìq^•©Éôe9Oü9gØ‡Ö4NâeÕá&Ù‰Â¹é'S¼s_ÒÊm$–4èÕÚD1ßãÝÛ^üøûë_RÔéq)e·Ô®n“a©ÓÏ~þôÓ?þñë?òePö¯Mt…epã0©­¹3T(1—È.Atk‚î•$3µF²p;ì¦P™®+Ÿ ¶!‰Š†Sé¬sŽaŽ Š£À„)rÆkî”@œj‚¨WšYµÐPø@WyÎ~¸ƒO¯–±Ç¡¤§¨Ÿù›kÕ3Ÿ*HÓ¹ QRÿ<FKbÁ|Íx!e>B«­ÃiÛâ4I(Ù§Õ+ß:ªªFÝ	³íäÿÚÁc€¡CÛÂÃS!‹¯o5\†×>l Ž:á]P*Z-1Ë×Ô:	¦D`¥H¥uÌ[Í	Š.š(mØ6$ûó/¿¾ÿ© ßf˜>õÉáŒsñœŒ„Òt 9|ê×¢[É·õÒ·Žêa÷¦æ¹¼é}0d[GÅó)°hâ6ÒØÃñÒ}n¦F¸tãóÊŒ6ñL½nzûøÏu‡çã-xRH19Ö5Zÿm4Y#ŒÏ?÷e==°ÃÛþumÏaÏpq{òù	ð5WVGSª{&‘ˆŒJ!Œ6ÄHd"wF`«\5T3#,óR,œpA0_Ñ—¥–ûù·ÿþý·†°ûïÅÏ¿¿=Q½¦Ù8›Ó¥@4Œ[ Úaº9!ÞÜÛÑÁì­a¶Â÷É×ÂìÉçöAðäóþ öä3éPûAQ{£À.þæ›CÔ[ìÂV¸ú4¢B:p®"ÞlOgŒìÁãp[ì.ð]š.Õ}3d˜Š€¦ žz HØÁ­RÚI‘bØÈ”YŠRd
ÎjlTÈ`7«òiŠôHz+¾ôÂ×°&~àCÕ4ìù^/êQ€è.ÃwÓ1jÏs“\ÿÇÐtÆÑ¸p`¼×7ã*Í Øw·ƒ?‹ÿlaÇÃ¯Ðò¿•÷m/Š¢&w—P¢ \žÕY(Æá2å³(ÂŸ#8iÁS:‰O¼™éQ¤X#x¬=gjHïŸé÷†“ÿŸ½wknãÈÒEßù+ý2rX ó~éçDÈ²Ç£i¹[a¹÷î½_Y™Y$, …ADÒ¿þ¬Ì*€¨n¢ÜÜ³Û’È¼gV~ßZ¹.·#ç“1 l$tM\Ynqe¡ÄnÛvL¤ÜzÄ¦˜ãŠê1hÖX·£
Ã–rXÅ¾<ùxšüñ!/ütðÓì\ª³àNrýìÛ9ÚŸÎúh{vÄQÏh«Sa4´vï…±ï2–t'm®ùnhöyØv´0l±)<kœÉ²ì¬ÎŠµpTaôÛŒ­Ô¹¿ƒÎ·Qu·`L¥ëø^==÷RÏDB¹Ñ^Ó>ã„°¦Ü¨R+ JEš`ÊÓTr¤„5IlS‘`ð}ž{¿x76ƒ·f@ªtùj‚Ô¹ÿßã±)¨®¢óÝ46—¾bAYô~<[ÞGd+c'ýs6¾0ûìÙÜ/bZÆ«<Þ¥gL¤˜Gp+·*êöWdÌë~ÄCp¢Ý¶óãÍwVFÈV*EÂj÷Ø*7ŒG¢òV
‡¨¢$¸ÐerìšæÑj†DO§¬5ˆ•ÃiAˆéØ)<u{É(9lœ—À±¨•É–³èÒßqg³à«7ï?¾ù„Fº{ì•Î7‚´´È¸õcäÕ–âµèÝK®q5µÕP‚}Ô¶ïèÏãâ ˆä²»
ÃÛOGy¿»¦@KX±~d@¶³€
>Ýxñ—!X¡õîlLÕ¯¡"Üôao{ÛE†‡y)ëƒrtä&'Xø”blŠ½µŠy¢?!¬ãnˆÔ¯œ¶^céJR:Oœ÷ö…tì'â)é z7éÀˆóM'q&)Su‡=&ÅZ²ëG:ºÒ_…vøÚtÚûzë}“´£U€~6´£óóÑþñƒÆ=¡%Ï2 ÓSÆrè‰ùÓ3–®ê‹?7q:ÿÅO.®1¡N;i¬Ã<AÞ+nQj	6VƒI•§:5TŠÔ*(ÅÎ*ŽPë”’=äå¿"Jä‘l”:ú±Ï«P4Q©âÙÄigó *ÞÏnö7WUñ¢ëY3bkf1\u]ÅÇŒ+ó8„:Cz&Œ‡l„(hV³„w‚M5‹Ð’“ºšEb­º3ž¸˜/Ê–^4â½mlê‹~jŽR¶zjI.ŽŠ¬máp‡:¶šÏMˆêÚÒ 9Z_éŸo†eÿ§S‡œU_±{½ö¢ç©!é5!”°T™ThbuªœEp±!wˆpH2‰´•Î8mÌ]’b¡5‰FÄbšâP:1(m¸X5‹á4r{J”lƒR»—Õ^PzÆ»Ãé)Œ_–N(½ÀR_qø¬Òéñ);8;àè¤	â–1yÊ­VÄ'Z¥~†i"<vÂnˆb	6Ú3á¶žRœŒ@§ûÌ¶vÀ ¦¸0ïÈ¦d»|6*×¢Â>c¤!OÅŸ=HE“l+áqIÑz"?Š$gH¶›O=ª´9ÌlJpz°”5æÊ;l²NYñzèj¸«Â]xqíWD;æ<F)Ê2¤9ö*%ØY•J™8‘	°íÄ%X®CQež°=WÕû&òÜji¿gÔb9‹—Á&éÆjz•š4¿õùU‘=–®LSŸõÍÆ:+v$"mÆž„¢RY¿Ö¡´ƒQhíø½hv¸Ô$ïë=Õßt"$3ÉCJë—nœÁÇG»è^a:¾÷‹NÅ“ÉÒÿÁ;Ÿð"›t*Þ|:¬ŒÃ;•ýÂbÖˆC‚–N‹¶ñÅœ’ŽÖéTv>c¤]UFhaÙõÔ×5~ªòÑw*ÔÍ†iGyÜEÂ~*s„u-÷êç·o?ÑÖ<©@[ÇR¦ëéR¦órœÓbl_¥¶iî®D©EGVk;›yùˆÚr(V¥^}„fqëjmoúÒù/±.>½þøÓÿú„UãôŽp7#ªù¹üQP½²·‹$'¸¦7{;±ðpM‡¤Ê#œxšx!KQ"¥!©L1‘„Ž™ÑFit£‘ß:¤BL	Êå>=ü‹øp€øÀ;«à%QO<Ê$–Lâºø )%øpñáE+²ªß*@ôŽrv„‘SM’èScS¤è[s%[ô¨·2zÔy”6zTªÄŽ5å•*A¤OM‰¤·Öþ|¢ÉåM/l°¸_T9ªºz–æ’+™£_éÞÙ'kEï
+™å°zAtyFÙIOde
"Ç%r†î“[Ž©Ýñ`®ŽžÅWâÌ!µ:NìQjé[¾.åœ5éyrÛœLæ9îþ?™Ì’¿‚Ðƒ¬@©ÂÌ"Â	7XÍMÂ2‰U\8„Sî,B”;£'ž*¬)Flß›ÉîçÝ®ûÞROXäÒðhæ[ù6Þx¥îlMÄ8Ú²&âTrT7qåŒ2ÚY‰§êE’90^³ècsÙONYc«_³^ˆZ]†·|^5Ñg.Ü&½¨C½ÊÖ¿;‰“ÀãYe¯Ó’,	Üu7„»·Éw
LÆÍ\ÖÒBHÿêLaZJÝØ-§óöRó‰iÌÁU–
¤fáZÊÕý€vhï
î¡ð³Es©ÖÁõÂ8ÂLÓb†R0æqL/~¼ÿ‘ã\˜ÈHV'[ô#lÖJ©° î×ÀÊ¶\ëq"¹ö!Ï˜q€/œRÇ•°DK$çÈÝ>¦·Ùt\"	Ôêaðb;~Ûv¶ØžÀlw(4%4Ú2çÓ<¸/Õ<¸‘Ö¤kØ˜õ‘ÆÓ5½_Þ­ÐÁG¿„9×g{¼QŸ’½“tl-‹Ñô®ï¾[ÃÝžèzt°Ç¼K½ì¡q÷¿Ž)9i{Û­ïEw£–=[qJ£ð½8Ô]up0É” káÎ&)ÒÊ³.=/¸6\Ú„XL¨QF±Y!“JÆlª•/HtV$zâÅHD÷ ‘’â)±-$b]=kw#QwÍÃUXÄz†4»0µŠo/Xt(õy Ý ¥C÷äÔ tŒÀÁˆ„Otð‰u^À…—†Œ.ÄŒ$œG *áÄ$ÛèÔkï”ç\2¥½e	õÝd£{žCÀhÛ`¯XDAºÝB#Ì© |#Ÿ
AKõ‘Œ*“žÁè@0â¬¯`Ô“b×‹O3·œøÒÜfèòy«ÑûÓšE6Ï>÷®X~ÅÃYæ|ïº¡Ã!|‘E¶xè]¹›ÇÂv­`ºcÚ=žT«RBgðÝ|é?Ó‘©w­š
î ºaS^ßUý+.á³¹a6ŽÝ¤½~ï–îÎ*±xáó"|Î'ön9‹ÇJë\[ú,Á—l²œ¶lÛ+-ÄsyÎÁÃO¤‡xq®ù·p®9ƒCËVñ>¾&<™^ÎÿåßÀýåõg	¢4Pð¢ƒ	ÆÎÛñýÓŽ;$þ^N/_@3+Dâ‘³„#É•MB†HÏkUŠ°O-sÞ	ë(&*!%
ÛD:‹ÓÄ ‹^äà³ÉÁ;žw+e©DHl¥å˜-6ä`"Eg¿–rð‹Z¶¯$,DÏ(S‡*øZDâƒ›XËÆ¶°)$ØÈ–´|`+=qöÊÏ‡Ö"HØÐJ¢>°ú¦h}D#[2ö‘-ÑÂ©ûü.a8vm	ägv	»wW%´Ÿßì …[ËógŠüöŒûãÞr^\Óþ-]Ó¾)¿¯×­§¢öŸÁ	ëA½~Û]HP¿ŸšÙÁQêÔˆèrÅeÊ$FhByjORkt¢$N¬óØ"„dJ	1s/V
§R	-ju{]®îý$ä1Ï—“R,é‡¦<Ja	Ê,Jó½õ£þ¯h3õ6¤?¯0}3.&&¥ï¡—ÏE6bu¹[×«MÛ)c+ÁBF€ú[³„DvËØDÊø®\“±%Ñœ×CGHŠ$kßF5,OÅ×9·#ñZ?sNûé´ö»Âšôô»ŠòC	nÓ.—åZœNv~ÙÍuŒ³§Ù#ØšRôò¾õy¡^îÿžm¬#0Š5`Ó©¢‡WîÁá\’¤pÛc]b±Ñ BZ›jër”¹Äë$I$“
yL¹Ö4#¢ÞÆø¾XD/±Âµ… ²»Ã“A©b[!þiLÕ·Æ¡íÖHO/Ë{ãºçž%ô!Jk(ÑMp.¸hw}<\Ëþ»K£»ê=¢È·+•ã3Ú!ý¡xsdn´ƒ1ÇÈÔ1 Â¹R^ÆTâhªÒD;dS•P!=RL“ Q!ƒ0S P‰T6í9u—Õ…»‡~¬®ƒN¹hÏotw™q¦¶»²M¯@Eº‚Í:›ÌWKj{öíÊ#Œõ|ï«/þ‰±£W¦³¯%VÙ¥í£é ?‰¯#æ­–çR—ý%DÂ5Ü+Üx&@h°†`gHbaÆ¦Njlö(JµI„JgVÂUŠàG/×}Ãu/;‹(¦°ÜºîÉÖußQÿ´ãº¿°„qø…ÿŒDFzûÝ]âÂ?Xdø³\ø_Cb;ËÍÿy<LLî·oýYþh¿õqxç\Í€ŽJ“‰OáìÓú^ý=ÒÒ¤ÈñîhTLDZ™ãp¢CAïÖXøS(L¬c€(eÆ‰Äxm‘ ©»-áRíCƒ¿½ü S|h»ïqÜ¶JošlXŒ bª\¾Ã×qá®îã¢ð3¸UŠÛìŒphqww7rÙMan`cL  ¹²î—~„•”r·	 Bóp "ë&€D0II@TGnXžaã©•±hD“À¸ú¥uàE¹Åx´pKÒ6`5l¶è¸G[
Îh?@YÝÍÕ®5ÞÍ}oƒ=÷\ÙÓi;:(bÌ¦[¸£áÓiùªäþ³üÑLçç§ËtDEsðx…Ð!¬Ñù÷áä}m­à1Oöñ«™åÙÄá>ž>–÷¿íaó‰ûÝ|1õTx‡¶SÚxŸhPùÃô³èÞÌ[„A}¬‚[7^üåÿ»ö…·ðŽeÕoÂÿF¡™=QÌò’7‡ËùÍ.œ£Â˜­à ìÀs¢!ZKâ%")¦ó -@¦â*¡H:“2–
`‰'ÌI‰´áÂ‹œÕHaÆ“6òß0ßž\¤^å„$4÷¬èíJG€‹ !Ù #Š!¹‘ìZ´JZ¥Õúé{a$—g$X3!{Š¸õ={.,ÁÀÙ¼õÃò;Ìƒ_BÃÝ¾]8sÞv/>nòÞ*;eïQ:»¹÷©0óECá›‰ÉótœßÂNÝ'C3oZ“ßÍg8fÝt¸BÊ«¬±|µá„Münf…WGa¤µ´¿WWËV¼ääˆ¯DöÆ&›¹ƒvO™ÿî>77AH³îù,TzGGðeÞäÍäH“O>IÙïm¿Âšà&ÞtoàÌo2Bº÷pKå-e¦“õQ„ƒ›w,
‘M`º§ÖÑØgEâØq…E"I%rÂ§l¬“J+n”ãÒ¹+¦³Œb”Ê”+• ËÞk<çí›nœè­_€ƒ1Þ›%H*‹àúêí›ïJó jÉ]$Où2ÉK{“»Û±½…ùÒç¯¯~æïò×PøKö~±z¾L&Ñ¥s`û€&óÁŸLÂŸ°Ùs S!<ßÌ]UåÃ?ëƒúÚ¬8Çûq^ä0¶_ßçß®®ö?ÄöK"³‘{FoÂ\r?I‡ùøf¶ÕÇÕºæk˜˜_øÁ¸³¬YVÀb¾d‹ðÓÐ²±EÕÞ2Én<C‘«uÝ,)å†›ÝÍ«>k1HÙ4˜_…Y[¨þ¬$ïJ ¹Ò4dC¨ë³„ŒÖ#Éáûè¢Ï²/Üñ+pGA…ê©Í*7ë¹ÆG…ÁÙº¼ÿÜp9ƒ»ƒ.k³ü‰ÑìóâYÁáœaæUÈ3N©’˜1¢á:Ð–„À±<•Vc¡s&±R9c(Zƒ¸/œ¤pö·_;âÙßü@†Í`’u@ƒJD›²XÚL¶ mî÷«x¿†¶ÊK
§ÆÆ 	£ÁàßúY\Æñ_¿/g6Þk1h`ÇÕ~l}±%L*/à3ÏáA'PÌÏìâ!Ž/ôÑrŸë K¯¢z¢Ö¢Ÿ-²É¤|y_d@ÄrZX‚aO½½5³q>€¶ß :x 
&:XÂWS5”‡i•–$ê?>öv¿áØwÒÁàŸy µí™þZþ~ðŒ(ÞÿŒ;Àö/ÿùÝªö <î¯+†~2Î¯n€G, ·Nøû–'Î¦&\Âõ¬\Ï°%W«^Q•úŽYY°\äqPø¬Ú.;#^ˆl6y¸>ÒeU"y 2G¦8˜¯fQ-H¹°m3øx__Êk-üZ¿
Næ¾<-Y+T<`{ÿëë°±CÎÏ'ÙCØ}`B‡ÖÊá®&]ao¾Ýàÿè‰ËàÿÇo«Rk~J¼¾‚]µð³%¬ÚúÝeË‰,g #Ó°i–Í€£Ï—n\b9LhÎ 4ª·÷œx]yM´áØTŒñ «Ó,CZ(—×ô­ù
tJ‘hìÖ¯ùº¼¦œós¢6Bþ¢(M<fÚ$ÊHÅX¢eŠ8×ØÃO3„ª1{K¨'Ø
‹‘OÑ@m>–‰ô:¿`l–|¾ØóP1˜‹·Y©S€úì.\Îì'ÿëUÜÁ¢Q%ðz]¦‰f=–úÇ,f÷«7ø±0Å2|¨¢¬^ýãíÇß~1³p¿?Vý-ûhº	ó…{mðê·¿}ü.ª¶
}(ÙO˜ÓcÙ¿{VÈ#;[ˆŠµÖ[ÞIJ²G™ðpÃÚMÆR_ðçòO2„Ð¾o2	P,ØòW¿çÃv1Ùl)2bšëz{YVäÅÂÌ¤Ð`Ó½_kðw`¼‹‡–Öx¿Ö†c¬fÃG6Ù2ùæÈ.µÖç¦(üb–NZÇ«ýnkMF2œ‡ãÔ2ÈækvAå§zË ÑŠÊøe$Ü8/Â$á›™·[ÌS;ØïÑè‘vL‰i´O:¥­S´p÷÷Þ^Ï'¦—ò°\†ják(2žÇG¿ÕÒÅ«±¡8Hså«^ƒ]–/†E–5–O{åª˜smEó|Òá(O c?»¶Ñôz©G¨%¹È[¡s~ƒåJ½§`ù!ìmÛîm•¬ÎØ°µð¯y>l|ï.›ze’qËýÛô°¹²¤§§K±q’ûèæÚ¥ðý´ñœ­Œø:/fÕuUcìàÆÞ5¿ìbøÿ«7q®›Z¿5.»[½²·KkK×dìP	sçw”+²)P×–'~	,¢‰äÿâÇ	"Ã•¸;¬ƒÍÁ’ì2|´¬Ý²»íŸØÂ–Ì`§…asñërU;Õ
»Týy]ÞI¡ªÂÑ½ùfTžÛÑ‰€o°¹¡ZzØG‘¥Bsagüþ¼µkûÊÚú·]éº”zj·¹³4Œb‘íK»*•ÏÍÝÞ‰Üš…[kìÔ?#ük¸XÎŽ5]A(ÁJ£¯æ¥Ž¯­ýp¶ðŠqö½ÎZkV‚k—ä¸)Ã„ÚD)j³T{Â0M©Ø¤œ©ÔÇFÌšÊ~AxUœQD¥Êc»Góò&`~‹§³4ýX.Âà¬ÂàÍ‡wƒwÓùÄ{)\¿fX¾!öf›«æö·tVEùÝJC³Æ(Ö\P"u=z
ü+¡V/ö[ªq¥ÙTS†â5õÉ[cX?=xÃòÏN5Å›ïd„¾=¯÷'´¶ÛÊ­²@púi,¦_f¯`V«ƒV»¿–¬ç [ÛÈûª‹c?Äwíå¯ólú×ãºÚq,wµwèwŒèio?W®‹íì±lW³ÏærÕ÷ŸÃ½Qâû9Ôþ'þ9I1—–`›«(a
Œ­`Dsk0&\)Ä…TÜ0Ë‘I8%	‘$•‚&Ñ}êÿ
0*¤¸þï?Å¹¿üú.¾ý®@bü5Ñ (¯%øTÖkÕŠÊ-ŸˆáWË¼´ZE²4Û±™~õ©_ø™õW[hµzƒÞ É ú?X¿FÜSoogÙ$»ËqíóÚëTZßUn^à9« ñÑâêãrV¾;?Žám™¶·xX©þƒ1àzÞµËwý D(á¶ƒ©ÎMˆ„K²Ž˜ßà¸xÖå±³ÕödiqÆõ¾Áêà²Œ‡´P×…‰˜Í&“dSèO€³t˜„HëÁ.òÊ pâÇ‚wÙbâžEÐ])—˜è-7W!´P¼ôF@)Eû°„>PøHÂŽXl?FñäOÈˆ‚qØÛFyì:€ôháÜXÕUÞd¬¾¥D\Œ½Ý}™‰™Í²òÍÏÌ¶z:jîî¼“9ÿàf2ž™t1¼½P/—Z³³÷“=dEó«Ú):8÷4üäÌŸIÙÁ¹§ñ»ŠÖü*yŠ`6—èã2«u‰^ÆöÌÇë±“³OÇ%öÌÍŸ}
³³nÅìü{ÏÏ}žÊÎ>‘åä¬³€æÏ=…b1NZl_NÑÁ¹§^'ÏÜü0·fv‰>.±VçîãÎ'yf?û.²×Ñ}œù2ÙèçbwÂŽ¼Œç¹ýî‹â¤ýd\ü5èYïG§"BM=\d"•(>‚‹ÿ‚]`jY~3~zFÇÓ”s¥¯ü´pi«6ÓâÔ]vâcÈf¼ÏC`ôxR9MÄæ·™]56ct|Å—°]}Fc²Z>Ç¯¥ª™%!tZÑÁ…'¬aåª±Õb«‘šéÐ£UOW‹ž~å®ßVÞ®ƒº~´Ò{¢ŸUåW*£Qi×µðÚþ»óÀÂ:\Kû±Ìõ¯?½ùñ—ŸZ‹þ¾ÝO'Í+!¹ºrù!5ò–qWá„š–e£|•½u$+ê™w÷fé¶1W¹'ø]­ p«=}¯¬¼ªŽÝn¸]Çm«\°ªÞ-Ì|ÞlÆµçS©\UCŒÐ¸òžýnö6»]i­›-Lþyßï¬Y67;<ðe=5’þu©¡’&iš Ä'”z'bjdâ8µ(åšÊ41ÆkG°§˜QlIŒ¼PÂšb||˜N=H¸6ºu÷«Û¨¶"0ä\ž_º/f1Î–ù Ì~•¯«ïðqV¯ØEV6 _ìÍÂLŸ•4ÛŽ(5_…÷ÛzÆåJlza¤8¯‡*ÆH+Ù%²Ky»9^upÿUÝÐŽ{´½ šôÑ¹ÓSm0Ö5)÷e'Ê®ºDÐ¿¤·öŸ9ˆÞ8¹±öSÞ'q­ÂÏoß~¢]Ó&÷Ê+_ë‚uÏ6?ËsÚ¿ôß?~„áÃQê˜›z«^çŒj›õê¬cšõÍJâJóÁC¥pŠ{¬ú|b{ìè@³Gñ|
€Øc0yÞgèyáì÷ß÷9¿õoÿõ¯7?¼û„;'1¯ÕIìþõ¯î'`OåÁê·‡_o¾àÎœ¥oÐÕÛç%üy×ðç‡‰ÑÁñ9IL3#xj1âŠiì=©K¡”l%aàÛ2‰˜—˜q!”R‘a"¡Üïs&	âÃoa®]¤q¾bØ±;BÁ¿wY˜dcnU¡§_ë‚@që'óÁÔ|ÞŒ¶UÙŽ~Ì`bZ…°šAŸyñ"K–yQûÈ&Ë0†ç$ŒpÖU‘qŠ7¥¢(ÇõL˜hx“Òx4_Ä‘¯–‰÷´½ ³ôª§ç&\ôyŸiÄÓI{CF=rCà®ß³ÎE™ùeùüÅØüArÃA"@ÇtÌ'äy…z¥‹þMË(ëò½ŽÚvµ®‚C–ÙçÙùd¨ªôZxîxÊ¶êuÍF­®+·Q©KOpÂZã¢<–9&³Õi£«`<ü<æbÀ![PóL™D¾Šô¸ù®ô¦È~hxvz³tãâùÅ8ÝçáJýPdo~ýö—·?Å0¼ÍeªØºm…ò9µû¢¬K…XýÍe>†g)£ì5üõ—ÿüÍßÆ×PîÇ_	BRC‰Ÿî‹ÿÎÂyC™ŸýŠýÍ?ü3‚VSÁw!?ÁâÍ¤ø;œ¨Õ\úã2ùÝÛ¢Sñÿi§uÂûõMË„CðÃÖf>üííGŒº#?ÝÏ³Es±wA~|7m+·FV Y†òK.šfÒ»Yš5…ôEó’ÍÇy[‰)ÙV¿-sT4°ÜóqÓ‡KóÆ7¾DÞãê“Í@_ÛJ”±P¢]…m¤V·mÏ\â¡4ÅÌh†]¢•O5Mª‘SŽËR§EJ­òÜZK™5	’ÌrÂa&MÛ£*y7qøÌ$zË.æptübå[&v]=šNC@ÏwiÙ®P©ÜÇí¯\{5—?£«ß² iY{ ¹6¤y=˜G·à•Ú!Fô®Z¬O‚¾fU‰®´ùë«Ð¼¿7A3¨‚G‰óf8š—²§FW^EUŠ×]yÑŒ³•mSí¢8æd3Ø‡ a°¡µö\µ›§yæ°<’£p–»hW>T_Â·¡S©†mÌôèD’Š¾yÌ·6_Ûy[ti7ªK(iîÖ£ýÞã¾Û×#:>š.™I¼ç‚JÁßS¡Ãúö˜vH3Å÷ÞFŠºIT$uyn¬¸gŒ‹™ä[J®âNË¶ê€X°û0Ú°œ·	yõØ„gúfèp>žïn½ïÐðqÔ­UŽ»‚”|Š÷ºrÐM/YaÁÄÊ"‚nö¹£¯GH9·kç+4,ïö\6ÛØæ£.³0®&Êú Xõe¸«PEÑnÒüå±ÆrVq>ïÖñdls»GÚuØÛ‹qŸË]ýxgBCÞÇÕ;Ì”–ˆcÆ‰ÄNú©2*e4¡ÌcÍdªœ×^
ÊÛ÷D÷6sáe¬œÖ ¨Rµ”
ˆÈWn?Ó|[Õ–UæÆ[Ó¾ª™øj7º¸)}ìFn¹ˆA÷c•«ò­/¼ÅÞw®²»ðjg&y`´ñE1¼&cCíÛ,ûœW©dÖ|®ªa ]˜9³pU"€‡ðfèŽ	[Ê,8!cçñµ±ÌÖuk¾„5~VýÞŸ7 ÞÄ°_`=#øˆ®Ã
\—Ë™_¯ot[ËÙ|V$•dµÄ.œK…¤\%·ÜŽ^'h0X¬Z-8¦u£F­4"­±õ÷|2Ãxö‡ñÔ÷x:¬‚ÐÄ½øåÝoñÏWá/p4þðþ»oŠöî^ŒcÙ/åš“~ì·_´z .ÍÜåi¸zç“l9³m!àû5z›!sRK(ó&&°#®~žÍà3†O»5¤~Ç|UÃ¥ÅB¶(BŒˆîliuBš³Ezµßå·W?íW½th¾µÉ<\ìÙ"Ð]³¶™t'ûàÃ¹ò‘1Ã ­'µ4«èö“c¿3ºôžãx»¬­­€lysyõ"öÈzü9ð8Ÿj®©S–QàuK,’”À_qÊTV:‘–ù”hÆ˜FBï£y?†Ù¬ômªþËY û	Þj“â’¬hV zí•ùgË©_×X9¸k]¥Þ‘	úY¸#-(îB^@ã¾@·jªLïW¦ÜËëA¡Ç5e, úÃ(*z3 M\.²Èh 6õÓá0ÒºñdŒÈòIv£š2êãÂß,'fÍz#¨¿¾¹·
™.'¥†˜çç@=]Èc¼X…ˆ„s&?/S@Ç¾2hx1°JÎœ<>RÚ*¡bhzÒQÞ„ÅÈ³’0¶‘Î•Ä4X¯á
jÕÄw XWÅí¸âÁ·þ‘æÖ6¥œÅëA(³ÞƒÁz€–ÏbWo¯ß~ÿýàÉrÆÎßüðn8žÕ†z:XÃ°H1qåÀØ¨ªÿ«ÜÏMHZ9y¨¦]Ÿ¸¤ƒèØ•¯ØfI$Ü¶Èbª®U®ÐÇiUÛ]®eŠ£©-We ûp£«·16ª§sšmS†Ú4“0Ëxý^ýÅýå»U ÐÐf¸^_A—ë&Ê”	ìíjÂe¿6úûqHÛYÖÎ¡æzfÏGÓ­iWM7QL*Á6DƒÁãzâ-%…Ôª¯pÄ‹Öû0Þ	á¤§Ú»NT\@Ó*†äú…ÂMÉU²ëœKû^¶~œ>ñHõy»Â»|š½¶khRÇmifqÿ!®]uœüAÚ¼+¥v¯r¯þõö×ÿóá7 ¨mvW˜o}õ?ýýãÇ÷Ÿ0ü_['TíU¡5ñíØè£UMKypÚaÓtÜaçn\§·PìS‰ä¡t“D°pýcjB±&»£z±Wÿú¿ŸxëBuçtSèèÖdç¥ŸÙðŽßuÈ,ïrVV¥^Á þaëˆçfæ']Ðã5§.¶v]¹•ÚÖow¥Ãª‘C*ÑÖj¡NÐë†zMÉÍÂ“ÓÿLÆE´ùl[á¼ÜæÖ›é±\¯kiOµ¶e-,Ð	5[ŠgiÖáÀãÅ<Êü´k¹W¿½ûõÃÛO(˜+¶õs—¡vyh¬ë|ÚÿèÐjYæÕÿ…&?EÅ_Îé/ŸP‚ŸYAƒ2gì&þl¸g}!ï_çküs4¿:yûG¨òˆ:¥o“Ëó}&õ]×gÚcx„	Œ%ÂÒ';ì‘KM‰6”)ëÃV:åe©tÌXK}ÈŠn¥¦ˆ¿(ð^x/
¼^«Ol+ð°Ú§ÀÃH†‡üáËžÔš­.º#xÝßö_Tx˜ÆUM‡«ðº#ú“èòZž­ÿtyß¦WJ½ŽÅkZ»Þjj¾îU×*¼CêlÊ×X)êú•^“æ®^Áú½Ž=­}]#I¹~A¡¶U]½Ü×Ê½¾å+eàéÃ[miû:ïÈ†Ú¯³O}¯Ó²KØÍ€äQØÕää +•
¸®Ë·W×©ö†B®«×sM3×ÝQºßu²WWwLí.á¢êš»Žc}Táu®°ÖÑõ®PWêu«û¹×dµw}Ë÷>¹ôéç©þ¯·%×q<¥—ð¤½œExúÖÔ€çh|­<Kã55à)Û?Nxz“¾ç¥„¯åòÆ|©O¼ñD¥ä<JrV¤š(¦©Œ	š*ª„²J`ìe
S‹g‰TL
÷èß¯­G½I)bVš“™÷Á¢æ¸á3´÷¾Ô­‡îJÑfY%ï­ú+²¨Þ‚B+¯‹§ªšW°Nck&“‡ÁÝb\À¯ƒŠåm0äûý÷ß½øi²Ö^ÅØm¥îm/ºôÉ€‡xo¶‚?G0^DtXiuV>Í«u]]½+f’g›“›ù%9´15v‘ÅøÔ¥zë×¿¬–K]VÕf5›«0Rd4z£„aÌ²ÈàŽí T„®àWë˜Â¸j€ŒþõŒ”Hº³'‚¨ÍÌÅJUW!I$	é¯A‚óùbv˜þHÊzZ€…C{:LÛ¡R:†9ìhî(ÕV{ô¤Ê®zFœoé•—O{jŒìÔ«ò¤é[¾ÃÕ†-ZÃ>ÎÞŠpA—ªCøñ°Dû¯mlFrãg!9F¶è2š§C?†¦ïÙà=D½ïìºÝÀû«Ö;$“ÚµÉd³ÿÝ9§VŸv¸7¼ÕÃ¯wúª×ÚMq›Žï Ò-}§xscÃ¹2JQîDâ˜Ç˜RAO´•Y/$Òœ:œbÇ„3ÈcäLŠijt¢“/Î‹€sNG#Òù•œSÊ7É%& ’×
?èïãòDÀyy"ï%âô"âü™EœshY¿qçOnâp9ç /üwYçŸã‹¬ó"ë*ëøûe>´ãùmˆN»)ãÌ²ðG‡œ9#¹ZV®Fè{ª¿ ŽOHwÁ'Iâ&F}åŽ¦ÖŒê\biŠPÂç…«Ð˜`I8bLJ±Þ›¦3Nvð6Nö¯@€¢©Løôê¯ƒ`›ÍÅ¾íœ‘­ß€l±LÖA¬nlf¹§×[[»;ŽãT2\Ë*0U‚¯òÉoÓxMÕfnNŠ1§õ¸¬„µgæ¬l§gØxnFå9ìÏê¢ŒÞ„Á	6Dô Vßs-N`+d?Â?ý2{³ÈŸ™ðÍŽÊ1ÿucè-ñš\;µÿ×y6ýël4ÖÖLçËìFØ#qg	Í¬TÃ¨g‰¡¥÷ãú×	¹‚õ=²„¦nh¸SZ5+µ„ûÞ!Ë‰rR¤Â'Öq+œ¤‚34bFƒqÔh,´RFkKqŠq‚^P¢JÄ [%Sµ¤i€µ’r´;iÑ\ò-”@Ro¢nÍ—öôfl<8Ï&ŽPüô]ˆã1‚+ú‚0¢Ã]öï“çwÙ®ªC‘‚Œøˆ¬„º“È>!Ä{Ãlâ5)¥=Kå9’>á~d¹áži+4J¥M1qŽˆÔDö&à¬nøÇ)—ŸdñÑã?0}øùç†à¾µª1¸oºª"ª×hëÑ·óêî6T[U%Ý¼LÍl<_VŽ‚Y:øoØïÿ¨Fó>Ž&]U?,ãª×7˜úà^9Î§ÕMøUå(h+üÕ4¸˜†chì­_¿ã,ãîÅúEhÜ‚à}zeæóÉ¸º×Ç>|Xd!ÛM^EÏ¾dŒ{€£2¶Waå‚ÿ%LÁ®1O<ñçnœÔ9œQø9¬Ö¬è?®J¯Æ™OÇEù`C¯¶#4
/²Éc$ãäáªv\Ïû¬Ò‚ë_Nƒ´FÐ¶´ÆôîG†ƒ	ZýÍ…‚œ\ráŒ¡Ž8ü8¼aüB‡Mßf0Ž§ªü¢¾ŽøÆÁæ~‹s4@3®{&3 Zå_koDÌò2næ=í¶Ãq—Æê¯¾˜mÔ?áºusü”²üf¼«³Ñ©&ótÐí­uÅÚo‘ÉtVýîZ±]IË×Qr·­ê7ºøºJŒP5HvY[IˆÔSòv¤È8MC%È „¦	1Ò9#RÃ–%	òÖH(É“}y¹^Ôƒº ƒª4‚=ÑdÐÝy„DxS“!u}·HwÕwoøD‡ç·C¡ŽWmô\™ãù“¦øRüI4ZÉŸÚ?	:U7ÇOéü©¹ƒ¾ü©Ô^ˆ@5)¹.¨
ZAKøkEC3›eE¼%¦70¿5S'Ñq¦l"´À–8kÂ*ÑLk•Öœ’x/á‰ÑF0/¥âˆSœ"á—iJöfªf=xóá]	©O–¦)ñS{í¯Ž¸µy4¨,¨~òÀŒ÷<037sp±æªþt@°â]ŸZà0ž¤aÓ:„W¹”îçóo‰—¬ÃâÃ\úÐ°kvísÛ“@cÄÒC:ìôÑØë~˜;ù;~,í]t½‘¿E-Â³A=ÌÊ%'§‘ñ¹Oc–r’¼gœ¹4±	VÎpWxª­çiª(1€È‹„Âe®=ü„aöY]½ `%vÊ'èã=((ˆÜFAÁ7Q°Cúën(Ò°ñ}c0xþãºuY¡£±P`Í¿2’·Õó`a[¯'ÄÂ¶®N€…=/æ+0Œ¡yæY©e=\ü#§µ êYâLxÒ\Ê=r61ŠžÊÄ*®		VÆÀ„rË´(I‰ö”0c}³nû]}ÎÄZ-ÆW)[vPÃfË®»»â6(v§ËI1†%Œ_:RÆˆÏ5WÍ«4³ËÜ»tYž¬ ¾5Uœç°ffñŒ¿áŠ7öeSƒ~z÷÷Ac7c××ÒÄìaÕçÓl6yä¾tÈüÅÀõýºÒB¾~ð|f
Ñ¼Ò_mÐÞ:‹Ò+gOÜ•Ø‰Û
‰ ®GÆ”mÄ&]b¸<à0œús¼¸‡¿ã^Áõ×ivL÷]¦£q«CÞÞ`scmyrxÇÞè§‹ˆÚØÙ®F[›û3?4uT\y"ÑÓˆƒ"\["¹ñ%qX¤¹M°6M¤L‘4žRËÂÛ¯V\¹'»”pÄEêÒXü“Âb%Îj¼%Î2Œv¿¢*Žñ¦@¨ØO;Çß}ß‹aãÿ&qñãÑÂ-É‰ ±m‰Ž7§è´zÜ^˜ØtŸ›:Û+©ö›Nµîö †+àÍ½ºq>7…=Ê±‰­Ä}qy$‰…1Œd¬E‚`Â°'Zjâ5U^Qi,V8„R¦‘ “2€`r”ïËqTÁèGo—‹qñ0øq=óÞL-µ¿*tmogƒHÀgC¤S
íVÅVî±5ìb uU,ÃBu´¡Þ!ÜÌlØxfþì.M½×ãx Âê´Þ¯›Sh¹Ú›ÒÁöê§R5u¶³Ñ¶æ:_rÏDú…?o
sÒÑî@1}ù‘h­‰Ž¦©¥žÓ”xËUÄ¤Ba…¥r^r¥BIbX*1ü §”$\Í^`l?Œ•"˜Ò½-‚½Æ¸Ô[0F•Ø„1ÔQÛum7šoÇÈ‰q¬yAŽ2†ÔB¾ Y÷{îÉ.‰dqd‡­½»Ò“ÈaJã4õ:¡ÌñÔ29¯aC­5"uio­V˜bŠ†8%yÂl‚¨Qm>/QE8ø'Ìy\Œ}ƒ	LHZUª´„A­ø9†µo
î„a‘áG_‘Z44½
S£¦óÑ§$Þ”YOmP~VúÔõÃ÷ëÊ½¤ô	¹ŠUƒÃG¶ˆÞ*f.'“AnMHvZóTÉývc4€1C«!7êÔÌ®~™‡d¶uŸ”ÐÎí8ñ8eþuLöæBªÂX_~Ÿ¹ñëÁ«Ùë«0%xýzà;Z­FŒÈ:žÙÉ2æÛíI9+˜Þdü9$3ýoòÓO;Ê½ŽQZ³eó:‰K‘˜›8¯çÕÇnQ€QÅÆÙuý“Ø„µ”e%yú<¹Ç¬HpÌ6ß'‰”›4€H%tGûÚ8¸aüð†MŸ\Oø_©]ëêØûù<þùÃÇK/—eU?fS8®ßYè¼j'ðæx¹´CGcøÂ£,ˆbíœ K/çùY»Wi|ü˜ëmo§+v>Rô|8	Ý½®ÇHÕDS‹A~C‰2yÍ)ˆÑÊrä”¦LÙ” eÒ„¯œòØîŒJÛB™¼’Rr)©4X<u±%{H‰¤o‘-É)Qu}^Á+Ý†×#•ß +9Fß}ÙŽwúA'6tî”ô"´¤½—sŒü,ƒ=Š–47Ý–ô‚Ï^ò0H¸=4!éµ
LŽ"	ÌáŽÇž
OQ¿5L¢½3¨…K1ñ ™3ì1–©’PŒ•OµÑ†¤Ú§©	s†x,‰¦fŸŽäç…™ß†l/ƒ²¬¼™§ånÙ÷ÙÍMPŒï×ñ—+´
SQ¢pQ,Œq;nÖ'¡q³n|<»šOŒõÁj, máï‹Á4¤x	i\Š[Sfa·Bš„ç6»›ƒß ÜÕº\àÌà0Á*;Øi[”9nÌ`’ÝD Œ<ãËØß©¸2iHòÆr>\¯»¤‹p'ÿ\dó˜Ýånüy|ý1K‹;õõ‡õÑÚìXkÁÄÆ›CøÂ»Ã€b¢5ÛLj	{Ž8ªE
ãvG¦r\Ãxv‡ûNmÄ/?xÿ…|<BŒŸ÷à§Ù—ñ"›ÃëLîÏ©Cè¶Ç‚44jè
Ò«D)Õ¢û%´@Ê>.ÐE—œ}º:g‘É8q1…;é˜Š}Ú'×ýt+«u×äð°’ÃîÕüv¤ºÐ
ïØ%TíS|QôÊwBiçòëï®¼"ÌáŠk¨rDÆp,;gÏ— †yCv€œEð[ó›MmÖ«rK€{½.?r×“àßO²PT„ °í/e¥GRò$_Eý×ë¿¸Q¸-š²[ìo0ÉëeÜq	0ªg3¦ý8,‘ùii‘1bL-e	¡.¥IŠTˆ¦Dsã¡ý$M7	Á)N¼dÂsâmÊ¹‘FíÕòTÌ(ªWÖùíIìW~‘=ýÆ›¾ŠæöÉÃ`Õõ7Aqä6ÅÁ|w„UL)–›ií("!@IâpBÚÓÚmÃ6„ïšÆûTTçÇG7Šë÷'ç|j‰Ë†é™ã»:ïárÚÉ~Aª?
v¿.¨´>5`DuÉÝ{!naâª´iíà¼U¡§êF¼VŽZ»<îÄ¾z1´¶!loAÅ®:’ª®Ü:ÿç?ý¯OXÑ¦þ SDØV¥0|MŒLqÊ€$ŒxÍ\Š¬ÐB&B#†3 ¿‘œ9¬+1Ju‚”6Ô¡”`åí~sËÊÐ2HÞ]+Â„ÚÒŠ¨`´±ñÞ!ˆhïèK.¯9œ4<kíû{ÒÐ]¾„ýøÄóÐµ\€OtÜ¿m¢ÐYïråÎU.{iB{Õ3«^Ž ÕÛCþ|4HQì².!”P„0ö>åˆ3i²Zy¤OŒ°N¸D'ñ‰±”»T#¤¦6¬&|
ê°º·Ú|X3†Ç—uÿeF¿ú“‘ˆt³£ÞA#„69æ
‡Ç–5‡€8ê¬vØ8—/ª‡©ˆ&±ˆ­ï ³š`c—/í¾¨j…Ó¥Î ôŸEJÍn°ˆXÝ2ÞZÁWþþ3ŸÚ†|JÅÃme.J;ó”ÒŒd8Én“Íï¤3—ç1_G‚±5Œ–pÎR¢CvXgEê½tÆ)ç‰ PÇc±ÄÊbNU*,ÒœP)±Ã/Læ„L†uU‡(!A”Þ`2QN6˜Q¢=ÂÂ!LæE#r2.Ãðé¸L/]Å3 5/:‹ÝìæßÓ¥Îpú×Xq¢g ~ù£¿yÌŸ†5S	4Ÿ,oÆ³a
7ê°¸]dIò4nÇ×áP^pÎiãfBQ¬¥%&åXQ-("ØÛTZ%RD)3”xË0Çy”ˆý1+ó—ÿsþ­š3ôWâU¶ônö—Òˆ·ü²«ö¢{Ñúõhð®¤ÞËE0Îüô`YãiÜ¨`Õv"˜,ã2.‹«»Û`å#4–å`ËI¼š tðhZ.‚óRyÄÊ1,çß5ã¸+5c2fÊÛx¨ŠˆÿøN¥i÷gª]§þùñ³?­E/UT©~­që.Á´võû|×ŸÑÜö`:~	šôÜØÎÅ…ç@ª¾[š˜ÄOž	K¢á	,dïÁ{‘(m´ô#æ#ÉÄjN1Bœ#ø/ÅN$–xžJ	ÔJ·±¤8Õ#¸QY¬w'Z{G…*&	ßÁKipµƒóS6»Úò–Zi¡ËàýÏn²2±ÀüP=^J¢jË¸‹ãº®šRü’wäâsIâÃzëìÜ²žØß³":å×}€ÙJ·Ò7ð¿!¡Pu­“%!ìDßj½HX¼Þ†¸_±R\°Þ5_¸Ûw»(wc— n%!xÜ-e‰Çš{‚Ê)zÆ	áÔã`=mEJ­°œJÂ˜õÒ c\ÅÃ"UJYÖÊÝþRNö(ÕÖª‰~š-X¸ûà?¤.y=(ÛˆámjÍ\­ó”D½W>žÎ'!¾HÙqè¦Lš’ofáÙe^dÓ«úX ìôÛx‡TÍ²…’Ös”H¶a”­’íñvü²wI²GŽ${«¯ïbl¯ìðYÑ½½Ö7ú·çF—ÑkåPØaþÿL©áD
™¦&E;&©cÚkÊ¥RÚ:•"ÈªF‰ÙZ3¬#‰“LyG;P¤Ú”#Jõ}Ì³Õó^´WEònP¶ø:ZqØÔM‚òµ¡Í ¢³ÁøŽÓûBs.HsÂfGs6¾Ë‘Z·/”ç…ò¼PžËh“¿eŠŸþoBªÕçA‡%ái*@Vr9á>&;åµJãTI%…ñØ8™JjP#c©E>¥Ú’V‚ôÛzÂGÑ£¢ÖÌ¡VRÁx.¾ï­ÉQ>Ïq
¤«ðÖu">»ÉÃ ´œ2A—{$f10î‹™ÙÐpÝ9ÉŠ"›²4¦Ñ…¹x?ûØén;¥áˆmÆ[a¤èøðÉ‡ðÂµ.ÈµØ±*¥ú‡x±kÿ±ÓžõÂ³^xÖÏjåYwÙ.ñùó`YLY+5ÂØ:¥)á^ìÂÆJšë*Å¢Ö%”&œÍÕÖ!§‰Q+ËZM÷8Žµn¤'Ã‚Šƒù­‰þ~¡æêñ­|˜(”G­ÔÕ#—ŠÙ2ÖÑªó T1®t¬éJ jéx6ŽZ¥Në*¿ÍÅëAjò`Ïå‡ðïZÐëov±Î´‹+¼¥äZ²ú+žD¬Cz«ÝßÅéº(é:ÒZýñË¼åªº|!\/„ë…p½®½„«Š"þ<ˆçH:dR¥)c.d‘¦(e€³œ8®AÊsï±Hž:i"q,åK¤÷ç9­ˆ³T­&ÝfUÕJbtë's€÷ÂÃ™+ücp„È”¢2)"â·ÀjzØ¡3Î7Yaz#á²CòîÍÃ÷üØÌ›Z&¸ë’Úü	˜Œ”èPõÑ:ÙÀù¯Ôª«çÃ\b€Ä4&¼ä¡Ì"ÕPf>Î~íÆ.‹† N¹¶>nþÏ»`ñ^(ìMn0Ì}1t>5ËI1Œ†—'ÉvP¹ÆW>aŸcmT|;¡R;O¬!‰'BkI¸I¨˜yI¤fZS§ˆ‘©ÕÄŠ™å¼…ª5TSnÄ ©/Ìzá€|®Q.Ø×çÅÈ[¼e7Úý&pGwÅXq²e°Ž9¸{Rƒúi{~°óç¢…è”gç–]jý=ZïU}x'×‰DŠòã²·fqó\ntä±V‰C‰F Á£ÄEiE/¼O%îu…RJ¥Pp³)l©´„$)ßŸªx¥À}'{”úÖVM<qoxª»½3e?&òû„›ÿáä§ðf>_Œs?x?ž-ï¿4ÐObÎî•B°ÚŠ[O¹ÐuûAA;kVë§õ¾…  ç¹› ¡~F.Ýßó ö´_Sñ½'ÞÞtuo³)|P®)÷£27Ún¹ÞÌÑ¨Ìy°)9Á9k¥Üsˆ<C$±ˆc.pê¸L¥àdRR/x’²4E)“L †¹o‡Íuä¬.¢Pà[{ps¯UYSè­puA_wãÙçÉ:æVŒmj~«Á·@”íì¨ÝJ,‡®¿dR‚TgßÆ9ÜoÂqcÏ.€U‡ß2^<PYg<ªž“/=Æž`•p•ÈÔ{‹\€(‹9
SÅ=éÎx$\JCh¤à4&I
ø•:jRÝnýñ<¾ô{€jÿ? TôŠ÷oâŸeéÐØ2÷›­^•ûGâî¦Ë”ãMäÑRÊºâÓ¾‚Þ‹üÅq‡‹Cígê[v9Øyn^ð]žb:Ù>ots L61Ï$1Á©R)e©‘„yçœÁJg)ÓEX"t“HØ°ÀÔ!å¬âI;¾„¹#Uô“‚’ÉÒ‡ýŸ›ˆålË÷8®ÿ·ã,Vt|NÒp)±-¢fª®C¤p…u)\;±/ØrAlÛfÖvì‚Ðº{FÈÒ[ž¹´¯öÅ™ùxÖ‹‡ç9854¡Išh)p˜"5–	¥žXÁM0KŒKÏ`‹¼µ^§Zy'¨õ”º4iw:ø¸žðQ¸Skå\›cçxûƒ•šûÌÌ«Ž!@Ø· P¤³’zËÎŽs-ê©ˆ•Ýs*nŸðˆº\:"*T»åµ/ìb8µîó[«Ë:»^ªfÏ%Q‹pžbí˜v˜xÒVp}‰0’±Ä!j™V„"î¸ÑÒ.Õ’ê¨lµ–‹žÝŽ ©ÕË]O„Ê§pù®ÁÒœY|$ÐÉM|úP‡vF,˜ØNÇhpª©Ü@p:xf/)V.‰:j­=uf—y²Øèð›Æ›çhîp ÚLÝç!\ 0ÞƒŸwðHV“ÄýàÄ$8	Qj°u,Ë†›Ô©Ä#?1)âÈ–²Dz&‚à“
Â¼gÆ…Eâ‰Ú'oãtâH‹,›Dc¹¿üø·ÁþÕàT_‹òMf]Ý>6	òÈccƒt‘MA>yT¿¾*²øO¨{»,à]ýj4x[ZrO _à?ÁÓoê§Yò{ÕXµ•WµÞL4@€ÁÄ¡äËù<.Ú±~W|†´lâ|•HÁÉ½]&#›M¯ÃÀ¯7Ï.XâJÂ$ªD?Â
°f',Éð–õ·’ŠmdfUÁœ¬–jcÂ	âž¸óÃÇÎò¹·!Öµ;#Ðìžê±¸oþ]q¥:Ñ«ÁŒò¬«ÇëV­÷ï~øðËO¿|Â£.))ëÐtï¼¨Z[ì‚R{Z>ÂƒÚ'Á˜wXvÞÝ—zW½•{)=GUéþîØ ²Á	ì•©¢^å¸×k2"GÕ~’Ê`Gí3{ên\ñépã^>Âo¾Ê +‡1Â‡QÍRi)·	•ÔHÎ„á„9¬q‚mâ°Á~ˆÒÄ+F•`<QÔ;!‘aØ2£ö¥ýgN…Ì‘„a‰›ƒ_ ‡M'€Tµ•½FØl&ÙÌ–E™Æ*´953XÎ ^”¶…i>È#ÅL ·«À¶û­ðß.b<»‰=RŒuÊ÷ÍÌYÐ·/B;ËÙ71XŠE‰‡¡w7673€ë}¿£«ÙMÍÃ ‰f'é²d?€V2ñù-HÔÁÆWAÖúÌùUèê-bo1ÁWÍ·Dév†¶5¹sÊÕaV£q?‰fŠ¢·(Šï¦(Œr½î…­h]c+Ð:TnE)W|¿“¯CP./‡»©>á£iJç‚2õø«Õú· ûÎ;lk(<u{ÝÈžv¿Qbîm1é¤¤^úúñÍ¿ÞþöþSGp¿å™¹jˆ]ãºÔ*@_ÿ1L	Qµ[ÙS·ãÆ…3{ªó_5×ç<–ï'BTU“ÉçZì;þu•j
?¼ÿ[¿YL²›ÏZì;‹u•jïÿñs¿YdÉï'ž´Øwë*Õ,þñÃ÷›Å)ñ Ödßy<Ö©&òáÿxßc&/²ÚÉdµð£,É³‰/Àwöe:¥ßã{æûßú¢þV7•˜èCœ|²Y05ñÝõ£°·wÈ•ÛE‘)Ç÷ÛòäX(Ñ.M†ÓÃö@Òr”b‘àDc„SØ¥[ž0¤„H¬1B©1”QçeŠ¸ôFQ"SJ@  ûž.«ø™¿<Š}ï‚©Kj¬ütork&~ðêÃ/ïî¿k–.[
|7¸5 Dy?2–‹’¬Hq\b$NÁSofQó÷öXsÙîà .C«r¿ÂòÎÂkcÙÌ¸t!¸
>ŽËY%µ¿Ýe+vÇ1ÄQ¶#aL_|9(Ø%<žfÅ*Ðú/Þ½ý¯O¡£b4øßÑÑ.V8¸_gQxôabb,¦x^ds¿(Ê$Á ¨È¯ÊÎçwi¶x=0Exúf>vƒ‰YÎìm`5åJQæævò0À¿\U…–ý}ÔÑ‡ §v‘Áâc„>f™‹¿›{[TäW;U‰³?¯ÎW°Æ Æe]…1nï{TŸ?ìhÌ—C†Ï¨(“^Ã÷ù%ºyä6Óç•¤üpUö2öj™b1lVí"L*tVê!Á*jš¡c˜f™I1j½ª^v²a„sX•¢´ÂÏà‡±—õƒ°›Ã¶Cót^ÅË”·á)£ÚR\øIP„Ì²8åÃº‡_úûq×tžû¥¯dÕ f&q†Cèú
Žvñ:Lâ~.Ã¨×ïIVÜ®&¹noëìÞ|xJ–ÅìÉm°!Ë¯Ìw³¼Y+`Ê¥«ÞJb(ä'ãéxfVŸNaç
¶£XŒm9Âè':žÂ]VÄCYå*[}•|·ÒÇlcê¡ë¯¢Oè»üÄ·i˜ûÅ—ÊÊmóÜ—Áòq´Žó_ü$,r­Ãó>é„ë8ìQŽhB±ºfm?"Js*w³!¤ÅæûcšJROBÀ8’º=«%m¸ºô+eA@Š?ÛãÍÓY«!B÷ÍÓ´V‰ŒïÕûAxIšZˆœøO./ª¸«M¾+‘±Ž»•"ÝŠÝGy½QÓ2nþíý	%4U:”¼Ö‡kuü£ªïÕ4sË‰Ï»©;úéDPO
n)7ã,d]Ç‘sw(û©òŽ•¦]Ê,áƒë°uùã I¥mívVj[ÀÝòØ¡bXsµð0Ñöe!hÕþV‰n¼øK)ñ”‚ÇÙfõ«nà²w5Ó|nÄS:]ÎŽu¸à©ÇŽ¥’rgˆ×T§ Ô$‰&Ú¸#©ÑX:wÁF:+’IbYâ0RÜ¿ˆ:/¢Î‹¨ó"êü;Š:ªžÚ¶uÕ;EÉ¥b[Ž¥ZI¥ê¶j!‚Ú]KwNKµs;ÁêýY;õôãžÅIÏò÷_9¿Ž@ÔòÆýÌ¢s¿oŠ<{Û#ûœ%ËZ:äIèù¿"­¥˜.c=æÝHt¶ñ{RÍÂgw¸CÚ16VSEppR’V`Ìhj!Ô„(ãÖã¨€Ÿl(fR$L%B{G-¶>aûÝJ«8û0x
 w9È:°Z™ÒT?ÚÚx]ñ£ùP³Ù:³H·!"÷Ñ|ôÄ<ÔÉ÷$»¹)Ãû[œPA3˜?ŽoZZóÅßúF0ºú°]2°ˆKƒêWÑœÏwAªyÚ`b‹q ÑÃ«`t¬˜_˜J
üúv˜–ÿ\5š)ÆpU&:@¬Vu=. @o}Åø½[yzÈ“–’Ù¼b¥YYqpwë#å§š†Á‡À=ÄÄuÅy£àw¶#Ä¨«!‡¼I1…ò1¯¨¦µ’Çj/¿¦á§O?ÿú~øôñÿ|üôÃ›?}úô-™
Ù;býjÑOgëW5ø•ŒýÚ=à¢@`÷ÀebŠp¢†å¥ÖË8} GÀÐlJæsÓ„ðzýÐÊ/õtNµDú”+gS‚Ê­ÃÌQ)•sÄÃ¡ÂA–²DÑÔ'60Š%‚#n•{@èÇÅ8Œ5Ïnå¢¼ÆÿõaðáÃ›òGðûýô¡\‘5î@;.¶›¬š	ŸÔ°4Ã^µ8È—A‰¡áê¿>Àýõöõ >‡ð_ÿNÂßü=÷åŸ÷ã×A{Tþ \Ûñ÷c@œjÆZ îçÐa9Æew¾,ÂÕýáÃ/ƒrÃcí<Ta‹,¢YYòMUrtuõ®¼(óÕLÓÁC¶Œº½¡¡ZTöÔWì¬ P^50@ Á3_\Wº"¸’WÇs'P‚¤R¨þ¦Ê%ü[á=>q+´ù¦Š5Q”×ãòb@
Þ™·Ø0| Cöµ\±ûêðA(±cªG…Ö}cP­tåhvÞê-·Òn¸(Û;qsMØÓÚì9±ç")Báž˜6 aÎ’¸à[òØf‘Yc‘ž†G„$èW?Ågo9ç¸›Z
UÃj.QÌoš
ÌÚš(|¾5Ž@æ@b8\E#Tb5º:}Té¨Ôÿ|
w¡ï¿§Dë4µ½BéK“xÂ)wÖj
¨Æ©d‰¥ž	NI’ i \%6Bj—h¸Þqj¬vD(„öEI)_Ë2—¿¼-cž ºþçàÝ4\ôûyBŸV®‚
%suÏ³Òk«tuÛpîšdY%z	0><6½q-‚Á<›/'feÚ¿-¿˜Õ‹ù®Ûõ¬¯Ë	î	©‚™Ô˜o¤ª	?B‚‰8­•b"ø‘Õ_àÁÿÕ­ŸàGŒòö7xÂ‡ñ¨»Ò`þæãû¡oååà Õ8:´
×L÷Ãûd9s°ó¯n²	4úªvìÞü±\øë›lhfù¨éô»fO§’¸”9ÄÅ6ñØr‘À¬ãV‹Ä$i*¬ô8µ,?,³âã2¿_ÙtÒ<’/ ´ÉŽe?¿ŒÃcs–aÞwãÙ8kîJ*¸,µ	UNè$¥Š™&iˆ"¥ŒH½—(Ú9˜[›ÃÔ[6€Ñ4¤€¤Hj­<Ò)ñTaa‰E–
gáð!øO“)Ðþ±üýËïg×?gEñÐ<Œ©	/Ùu’„\ç~
µl1ñ·8É&…Kâç›È®t8Bí_I•K+]Ÿw; _ï4fŠXÂ\
hœGÆ8Üµ—\Þrš¥DqŒ&,ÁÔHi}â¬¤IàL¦ÂIŽ“£“}Ár|Æ£´î ú.[¨¿¶³qëÅ!×<ËLæ·¦É ¬_çe¦–²¶Á^ ï0ÂÆXË=Rp\â£¼N©cÞ9ªüzèRËP(KµN¼#®6¢¥³;Ì	Üç©HázÁŠ3Ü$¤uÊ<¿i¹cáNM­æ8õÈ(“APˆ¡@¬Ç†‹TÊi!QòØ‘„w†öe‘ð­ÂP< .µ>§¥w3,`˜˜cä¥'‡~¯ŸåzÊp®å¸bvX7‹ñ0»Îì¸õƒ8æ|€Ïg%¦¹‰Y,Ð‰ß³ñ¬xvÀùâíÍm\¿¹¿k[¼>A\ÞÜ®ëù[îUøtS/±öœÃ=oÒT&–K¬¬KáSçØE°KMü£y
¾[…l
_/f^ÍPH'*•ãˆJ„…–YtÜªÄ?†6XÂ-o&Ã[?	/uÍCsB¥Úxk(Myê(Ô{ã¹×KîWzIáþ9fhp.àsŸ•œ-ã¡0|J<A4x×qÄ½à9a•P–$îäíŽÏr6.ZFm´ßní„Æb±Ì[èŽ1‰…ËË†V[ËT#¢RÆ•¶<‘‰ÓÈYrÔáÈç.¶…7-¬È;¦>Š(*· &J8–:'R–”(+“%R_o¯-”šX“·Ü÷©0’!ÇIÈ±aáÎgÊ'	FÚ8pÌå.Dö9l$ù,+ÆéÃú/-×ˆƒO@x'<0Dâ<’6ø£•ÂyàH¿<p,ÙòÎd¹Wv2†Šgƒ‡›ÛÌåùõƒiæ€mPà"˜¦©ÜzÂS¼#II€xË-ÒHÙÃF‘¹d™_‡ÿ´|TévœÁñÓÜ1¸>™„ïî'î%I¤"‚Qrè(n²ðSdÉ2m‡E‚Ã	pÈioi…pØ'$m¸>Qx}çR':pQþº™d7-BÜ‰p!`=	s@Ê,ñN!$)Àæ¸*ƒzÔ(‚¼b½mù@‰‘)œ&(€j€YÇ¥^3F(%ð‰¢ÃY5–n{žQ5AVŽ†Õ„Ã'ª¤1G0)—ê¡{“ÝL‚6&]þñGË8˜Sq$pcé±…sb¸QVÃ[¯M
¼•zVÃ8Ì|4µŒÔÕòùZ`ÄŠÂWVb=
w˜MX¤s©$Œ !€Ô8˜Åx21‘Äûû–Ë*¾£z™.ï[{ RÊ[“ßŽþÏ¯ýbq·0ó$àœY_;³Þj	ÒYj„`:AöÙj ( Fr~äX ¦ËI1†1emÔ’r¥à&d™$Mà¢lDÞ'"¥H1là¾tÌ&°ÔG~7œ,–-ÇÎ œÅj@6ã 3’”Àò d0KSA­’¤Mîsû‡3ž:³g×S¿h“]ƒ0swû=ÏfÃ v‘ê®Ûú)ˆéçóâzÞ¦‡ùrxóSS³pË™¿»â¶•í¢¿ÓiðEI`c »?Ò6Z,ìæb&ó(Û›Û–žŽ`IÓb15öúf~3mƒA8Ðp™‚t¢­áADQ^9o µ£Ds6µú ads?«)JGßø6âKýÕra;?[]GÅUî[`çˆ»Õ#ìuK_	óÄÛ„q¤Ì3[0•Ö"×Ä<Ñ"ÎîVžŽ&<ù]zbŸ1¸Os§‚ ÎSBB€SÌ±‘6I45*a˜‘¦y˜¢ckX¹AûZöF¤hw2åA¡™Â©ÆÖÇ2î’„1~ý`J‹òXÆÁ6Ì—A$gïü—êoÃ6P8¢¯ùç›ëˆúíÊ	uà)›OýfáÊÛ$M'ã¤…óh"•° #±X„¤ ÜÅ°K4Ý†¶óÿYúÅÌ\§iÀÝUÓp½Zl` €;dƒFÂÄ…[ª4$“9Œ_W&y úÓ±½ŽGÊ´@&‚Ê”
ÂWÞ#%œv©S‘$@ùÃ«¬²X§‡a]îmˆºUÓ“ËBg;z«á@TíÔã—¼â°“˜Ëyîg× ø.Ú4GÜ«ù<ÅôzÚnîC‡—r¡	µiš&ÖqD´b€è é"¸¿ ÕµPÉa’d¸;
{»ˆfM­:'æÐy£Rì0"Ò²Ô%žJR&QäRŽIÿÀ¡<Ì\È­5óÊ¥¶E/€¢ð™”ñðèÎ9\ð†$XËÄ€t)ÄÒ$,Š‰2ÏÜWã±i%¤1þÆþž–“ñç ùýãú¾E–‡SÍG‡	MËÉrâ¯÷s›ÍÇgÄ¥/fHü¹UF9¦‹Äˆüº0`>pLZ£Å®/ãüö‹™·øë™/ÂÄÎ7«Í¾Úž$ŽèéÞçËåØ¢ oó,šš_¨·µþ…úËí­Ÿ¶|»½;‹Dgüûk»x˜-g]a¯‘FÜŸZ'RG°Lh4j«5!Þ¸„öÁ‘úà´´è‰‘p2+œ4
3‚°ÐÜ°8 î‰’Bö¹Yêýç§>«õÖÛuyÁÒLQŒ ÔñQÖZÅˆÀšôÔ”KÞçvÞÀ¸MÜÜ³˜HDsAÓÌ,NNPj“(†á¿ÆÚ‡sEÅê¨6Ž›Å¼‹Œ×k×‚ö­¿¹1Æ\Ï“ÑÜ¡“>ø¾êd<KG_Ð‰YÛªñéM6úBÚú€†óÿYšÒìñ÷,÷úáQŸÇ…U?áåë¤3ø¬òàðiæ-6ÜzfJR’"-S†“œP§¤ñÒ(‚ˆH|Ç›ÇžcD—Žhžb\•ÅeB±'Â)’bo‰×Œ[.ÔÈk•R–$<%ð%2š©±·Adi!•‹Ø,pJC¥p?ZŸ:&µ )ÁuºÇwö8„.KÀÆ‚"…0)-Ü`‰I•¡F ­½â+!ûèª«þË'ÜV5´ÁêhœH§ØÇëÚ'‚k@ü¿ú«ªÿÏËÄƒ’¤õLÉ=±^cçƒ
7ÁÈ~zç!á$êÚËjÔ³„+OI ‘BŒÒÄ	"¤‘G¥ðUXjAnšþÊg*Ú|wÐÓâÈ±³ã²Ç‹wØÍå÷ðŽ÷ÌÚayY%À|KþóO;ži$\âå`›ÍjZ2jNs£xDtÕjÓ6ž&¤+jöà2y¾4³>±HnÆÙÀ6ô©ÿë]§ŒAÖ»ÚüfUŒ=+MËE]£Õküüáç_~êžD`WÕŽÉL*-îïh³Îûw?üãão¿þôÓ§ÀÝ»¦¡ilCý)£ÞTJÂ>q}ª§ƒÎ›3K[?ÐÌŽWF»ÃÛ,û|
·ÍðôÔÏ«³{B‡…Xðdo¿ì†Õz5Œ%]æ õpíMÌCÚ´Nùd¼˜³¨íØãæ€jŽ¥v6ïÈ]+9¬«’ÅØÝøèk:çE“gåyùõ|7Å:©2aOà‰ï)µ(ø*j_M¥f¢÷*O€?[mxŠbaãPZMÐWJ$©õðiÉ	ÉY=6Ëå¼
N”e‹‹ïÊ0e$É*‰}ô°¬šŒ!:}×1&ŒÑ@ÿ d'!öj4T×<<,Žß¾Âò„°Qð©nFè‰í† ¨e@¡b=ÚÂ^ÅtÈYŒÖ³=šrÚf2ÉîÊjµL‰1}qX$»¹Hñ0‡a~ãÌ—Å_¡‰±É¥Uåÿ[ŽJüWõj6Õ`ó…$~ ~ˆp¢WÞßÓ˜£ðõàn\ÜfË¢J»ã:ça&!~Ä8á¡û««ªÝÚè‡òéþ®Œ%;‹AHC°¢˜½±6ïÕè>ãkï __~1xâ‰®K7¨ü%^ncX%ÒVœ ô:(KŽƒçlQÕÏ¯üF#ùwõ’a‘ã^ÀqûýXšÚ>­óa7ìÖycx–Û’È>ŸÝÿŸ½7ÛnëÈÒïùXyóËmŠyðê¾°%¥KÕRšm)«]W\1RHƒ 
ƒ$æU¿C¿a?Iï8Ãˆ!&‚ò©Á’È˜#N|ßÞ±ª%HwK>»´ÈºÞgÊ…ÄtÉi—Sœ”_¸â´?J9³váŽjo¿žƒ«î~7j¬Á¡ºœiÕ8è6ºƒnã »‡ƒ.Wœ‹ÈWŒ)¯5`iƒ:f½•’IƒÝoÝŸÞA÷¹ùÈªäûÃµg,z‰#E‰À¨Wn•òÉ•ïg$PËGfÞ ë”¢)ÈœJ£˜„[±Â*ùG„ýîöº>²Ð·cÎƒb¢HXf€ÑÀ(ó)ê‰°X°}whæ#;S›íRïz¤dL¦4^›àá®%V†“#u€Ž ¸§ÓTã°Û8ìî=šÆa·qØmv‡ÝÆa·Æ(‡ÝÆa·qØ­=ŽÆa·qØmv‡Ý‡ÝlÖ«`F»]¡áÆÚs%	Qk@ã¤‡KÄyå€ˆï9’Æuø{snüwsýw%ðø‚¸{™zÄcÁ”DcS^’íQG•áá{ˆÿjã¿Ûøï6þ»EÕÈ­Éƒ@F„	
„‘è†3î0aÆH”æûÝ¿ÿnã¿Ûøï6þ»Û:Fó%$o‘§š²$)’‰/âR³€y°þ¢s6ï©onœˆ'âÆ‰¸q"nœˆ'âÆ‰8·ŸÆ‰¸q"nœˆÿzNÄõ<ŠÖv—ã:|´nrs©»6üÿ ù7·¿S&Œ„Ý¿_¤%^_ Ûoo/hµÈÒœÓüQ½ ³]Oå.í»u|Hg¥k{»~×~ÏÇòÆ™Î¿Oéx<×ñîž•®=È©uÛ7F®ÙÖ÷Èý¼¤§*™-…2ü¢ë9;o™c5žß&IT=Œ·ÞKlÞÞŽµ[ñ²&üè7zY÷í¨ßM¹BkÖûOG¬•A|7ŽÕ¤°;/×C®.‡ÐúG/°×nægãW¸5”8dÔø´Á„ˆôüª£c1¤<	8(e±¤GJl°ÚFm¢q=¿ê«#úU_×¯úê0¿ê«c¸U_Ä­úê(nÕWgt«žN÷¹ºUSªô²[µÐsmÚª[u²!lÅ­šÁG.¤ªºU3‚ èTŒßåV]ÜPí­wS}¯êb½yÿ…þø¼r!ç¬ÆÁþÕJ,Ô<ÿûcqí ¹»&àlÁûóô’#u¯·,¡»vwûËÜ/IÌ­NlMÿ
l>›‡m„ô˜2{#‡7rx#‡×«ÝÈáÇ”ÃS|²©™çî›H÷{ñöÉŽv`»vàQT¹mê=zM3{"ô¥+gú‚ÔDvãEÞ˜Â{gMàÆ2ÁâY‚1KF Xªà=W+*X(Ï6¨~1ÿäÑ6,ÕW3ô)R0(—ÄýRŠÒÛ‚?lV:¼ž-[©?x5²Å£<üZ¼šû¢¥$›&1ºÓ«4zÝz7¾š¤TÓ½á‡$ùOÇ—”…t:˜¯½¤¸øbÄËÖ8˜aì¿ö®Òo’ôW‰Wh…o1ˆ¡I.*äÜ¯Q¸rÝ`z£Öd0UC¤BPcºIlþwÿÞvÂè‹?}†ÙuJÕ@!í&1·”ìúñ‘£:}hg4	ÝŒ®þ6†_ü-…>û›ŸÜÛv*ö·^¶’x^¨àÌ l½/¸h4.LvB¥…rY¢A~ø¡˜Îg3É¾æmªä]_‚|­I®|Máüb½$]K‰‰$ÙZJŠä,êÙÉzþ572öÙel¢${tåÉØyÅi%Òy'‘„÷MO xL2öFÊR£º
“½~ú#'Üé¾q¿s“+†¼„æ°Œ1z+Ž”c©1$!#î£ˆŒ–<×åZžÆùÄ|{_jTKw+é¼'£6§ôc<À1[ÓéåVèÙ‹Åvû©Šz…´ì©Ô|Wº³Wá[p“ñ¢×¹þúeðàr¦[%íûŸ£–ã¯1!j¥)¨sUÐ¼â›^å'…‹õ±¢Ê¨œ› „IBU I?Z„Á]à"—ðƒrÉ*è¹$™jÙiÄ›â¤¶sÏèuù\jøKc>c|=ô²oôËZ‹q0†H!e=)wm÷¥?-wq©	vëO›Ía£ZJan|ÀÒÏbHmÓ-LËlA7-SÜãå¯ŒrELœaÖÁbâ¡àwüXßN¢gB:­"’Sá´ÕJ3…9Ç, #µ•:`Ÿ•×ÖYâ±
cŽÒÍqé¿znˆ—×Yá•¸Î r¤äu¾üú¤¥‚oÉÀÕÄ·Œ€Æß;ª!¦s
È]óÍ±T]’‘ê)l†Ÿ-,­)wß·íÒÊå‚×	œŠ §¢sÊ†˜ÌóYŠo•"[)l,Ñhl¨OÑ , ’,#3PÙÈ@>h°ëÉ”{áGÊ=¹>'Èm”/c—€¼‚]ŒSR»rôXµ¡ë©´z&S°6®ÙcL“ý¤²óèóNÐÙÓÂåÔ|§C“©¥Ê½—QË”žŠÀ9Ñœ*b„qH‘€AúaÞ"Qˆ‚ˆè¥0‰V$<¹s,àprSNtfÑ˜ E…Ö(Œ‹¦„…uflùÞèÞŒþ§ËaZwpùõZ¯ÿñ®5µÿiúW¬$ûËÂ¨6±ßý2µò,ß™ly|®[­ÿ;=w•æiÉ®÷eñ–ÝV–Ð÷»›ô44LïzÉž4E¸õéMÍ,:,ï(×J×Ë¨¸áËÌúµp”Œ/àú.ík;]3ì>¼,ÛLêï
¦<÷ý/ÐzaØ›Æ1í¡@»i#©Dñ»ò#˜-ú¾J}CoÓL«kRTþl jšRÿko>¶Pz.\Ê|[R,V»  )´‚‰ð&E¦Ærú)6]OðØ¥É~ÂÝª¡ßi¡qÚÛ…=tM¿äóØªÃÜ,Û`é±aÛm´7T§»w.)C!Ä(ëppˆFîÒ0U
á§¹`àV ç¥ß9b¤2JºÀ¼Ù Õ/Þ~„a§0ÏèþÐú½˜w«ôQ/ð»°oYzCÛmãR§•™±H¨Œ£5\j ~;éÁÒ‚«åËCË‡/¡Û¤¢×­›nr—39l\%‡”¥ÈH†%~Rd<˜{œÌ~;™yÚLM[‹ì…çIù¯’ÌF^ŽiÜ¿*-Ö»l<Î¸Üñh2ô‡ Ï£Ñç«JJ†äNó5t»€ÐJ(žD Z¦4K­SR]}S„Q”ííQ®U“Kï\zWBq£ê@s¹Sç
FPövšûCscšß˜æg¦ùÙgó —iÞ½ÎˆyÎÒÖÌF÷N ˜Ñ2€8«ŒQD¬3,  vÆÉ-2Þ¢¹™ÙùÀ\HAI‘ãD¥ gžlRÌ4l¯a{›ô1éµ<Sƒ¸TR®(d0=†ª¾½éG\°zl¯ÑÈœ[#CÖ5S(gÓ¾#*dòYßõ1ékH_Cúž'éK¶'{?ÆBÅ—Òûi£,W„J$½ÄQŠ-Rgõ	DÔIl(BH!±Zpàƒ”j»ô}
ÅKUÎ[ÜJÉ)Y›­å”æ )<([ãG?5‹QB¯nÔYê©*Éª/JŠ‘i!X,E£©:›¦Šºß#R±QçRT]šžª¸Kµl3´ø×¶¦ó->Íµ~ŠhØY†¶†Eì½aV)œ¼¬qÂ™d_ÁE°8D©TÔð‡wŠxçHO
m2ÙûÝê ›ª\ÙTi¥–Í¾	D-Ïáô]ç^odÒ³Ë¤$mãI.ø#Š¤Ù÷û¹­èv\ïéëóerº}A woí|;Om®·N¤HU®?,F¶ï&ý-¼g ô5»Õ7Ô3%ÜûÎr
—=3¯LôŠÉHlRþå…äIïË„‘ù¸>¾-c!ÌlÜÊ«í×¾ÛŒå­ß.k,{%#î´<ñÃ²J7éOgÝ„Þ—Î°ßKºÙs¹ÃN»¾)³ÂÍr®®¤&Jb¶ ø‘Ð”i¹^$@ùÑz`Åç¨ê«$cj·\ðèÁÅ©ÛÅ9©ai ‚<q5Ý#–ç½˜óÁœ#EX=L0ƒ§Ø Û4Õr•€vw¡ûv=ü9îò(¡v½u_bN#kÎÚöKwÍ¥u0älœB‡ÓíØäâñjÐ5ãtÞÛƒ‡ñç­áþîÆn¬·:oo';íÄsZNPGjº˜ôc;[ÝšI¯l„¶ïú6]ƒ%Wf´÷ùØª¡{ôél‰Cµö´¦Õ[Þ³ðk¸¿ö—÷…öˆ<uÎ*m•ŽrãXr)Öž9Ïµ¶Ñi*‡ŸšH¨Q‡iJiåhŸNk
Îmñ­?ÖíkWå±ôWD*ªŽ*A—ï†fð.¨îÕ´â‰ã†ô”®"½–d-ÒÈ©XBzÍÙrü„ß-&®]Þ
ìåË…ç‡úC”}§‚y¬“¹=˜ŸG^»;$³}1aÚúIÏ“-Oç;$Èù5>=ô¶%vžüvŸ¤ÁÁñIBz]J²è]·À»Ê}Wƒ/Ö}Nö×|t_ÛÓ¨gÞ5g?½}ƒï¹ýãv™ò¬ýG|~X8ü­ü‰Ù\&ß–ènÍ«ž¬ñª—"YF”Ÿî«9X¯å£’\LzE˜ÿÃHîÇÝ¡ÄnJ€®…˜G‹!²-`)ƒ›óQ	±4 ì[,°#Ž
á£C4ÙáÎH Èy&¼õÖzg7=îÝ¼ù;Œ'ÙK%á<=ÿÂO·¥¼(æ_Ê÷këžÎ©P÷Ý_ÇaSÁ¦Hª¹	ÕÒ‚W“$ çp}-ªk­QËÚ_…%YŽû¡@‚Ï‹XŒ´]îy»ÜíëtNr üEå)re¡àýa®ë%?}_ùû‡wŸžþwÝš¬êe„¨zx_B+O\@r;°å¶]»?ëmÈLÉVdÞÒðè\\†]_^œpÇÃöPÅ+¶^è¤²\Œ;
ÃGœî»vú8w;ÊhrQîÅ¯¯_ßÒk´Ë‚¨RaŠB»ªükŠÙ‰à¶(÷ZþÏ›·¿ÞŠk²£ñ®»‘Â‚f{¹ûŒE»_F×]óZ)Žw‡cÈ Ê®R#š[èÅ?>~„-Ã»Öh¥8¯U¼^ã´ViV«´ªUZïyJÉú¯Aqx¶Å[Ow_ï‹âÐï8A•‚/nþñ+·»QÕPm“¶:ÍgŸÔõ¦w»þ=‰ÝGw^lvEn»™çqµü®36{÷ã·C¥à‹×üñó/ïnñÎó¾¾Òõ®OpCµ]_@µZ±oüQoªµ®ñ®îÆS5žY,]ëŸÞýýï·lû¹ÑoÆæ4æo—˜Òr2–ã¼ƒÚ>Ü÷·¦% r‚'ÅY“{àhBV®æõ 1Ëï
¥Î <æ”KéµÂAR+±ñR'ƒIÎpDN`ì-âFÄÉ_WÌÒhUÌ’jƒ˜Å‘Âd9v0R–¼"fÁO˜ÈÐŸ®)òu¦ UGÐ¢ê@A+GUvR‰k‡.ôÙK\™êË%Ñ+×Oc!*Õ®0Æ²êU§Úª’VVÝ…À•ÙÙ}5[‘©²])fÂUf73Q¡^é¹¸µO­ì‰,_{T¢ûTzÛ%O"Û£’ÎUU>Ëõ8ªÈ_õkÌ$¶³úCå{Í›ºåç’Ö^õ2wë±Ü•W­"|Ô¯Q‘Ã¨›½›¤²Úµ«ÂÙ!•“ŒvP}’yÚ2\ÝòU™/›ËœRôËˆbõl%ÀbÝöµ­Mgï¡¸æ[§&(æ‘‰Öª ØXÆŠÑ¨èãÂp¬ádZë­F>ðh“´)zÂÛžë¹ß’à4ZÊÓÖšË¼Y‘’ñ:ÉÍ¢›ïlõºõ©Y¼*¦ •ýÁ4‹Yê¸:‹øf2îÃ–%ÓîCrü9Ü§Œ½ðçCQˆìŽÏõÕUs.Î½œÆœ\Wè1ç½†ÃàÆEûEÄ›²¿þÏÿóªÈ~þ0v@Ôj¹ÏfhÜ8K ú=Ãî	¥ßQ}ñW$•¢ÕWF}‘›2ç¦$Z1&ˆ+ÌqÕ~ˆ`„8Úm(¼øTÚÅ™oãš6Â¿||³{Ï*âN°nØÛˆhÃÔv¹¦¥ðÒM¿UÂ\{+­“/÷¿6Óýý&
–iÅ=Ñ8pJ,×Iƒà°#ÇƒŠ;“bþl…ÕÆS‘EÈ!%­ð2úM–‹¿ÂlZ_‡f0˜¦ÉÜyWnªqqJ3h®m–T¬Ø&0©‰¬š&ÀRÓã
È7æ	'×šQ‚I½»d¡5+6)¾ýVQöèZ³¢ÕïÓXÁ™Î°ŸñÖþLíî:ý6”ÊxŠ-n‚Ì¢¥Ã@fé§·RÈ5óù®ž®Ïö|ø£,Éy9=ðú9®ÀÍ¶ÚÇelgyï”\Q®<Z†¬fQz@3¥Q(RF,‰†JdYÔJpª˜”Túˆ8·Š¤°úEÎÆr:±à|ÅK„)V˜˜V8Ç8×štgkÞ:OÃÚ°<k«ñÞyjúöÝ½|.èÛ÷ðèYek¹]Ui[nþvIžµ-žäÙêÉxŽöÈ’õHr£‰ó¿uìOÁ
÷ª'á`ÊxO‘õrI<ñÞZì¹0”‹°á”Õ¢42O‰Ú Dµ“Vè ¸ÀqSBá×eþÃ”í0,Ü}n÷+»HmŸ¬Ë
ýfj¶ÔPõeÒ£3HÙ—š™4žµ_¼ŒûWe.­rsF—Gê0Ï%u„"$–µ÷‚bh¢BêÕbæ”²“Ô•›«;=«c˜×u^Ú¤ãÓ³¢Ù'ãgß‹ºLk®†Ø<Û“\Û‘õ3#Ooª¯¿cVÖz‹ÙGÆ&ÙqlŒðe’uëh{‘2cÂŽ2½Øß^bfhªa¡×–êÜm/0î÷é®BŸÇ÷Ý]e	çvÙ1íq¾·—™ô:‡Ãcç[ÛùÚ
L2UDvD¤æ›sÄÒkÏ„SÄ:ËrF8ï”!V:b$)—Ô¦×Dpƒ‰w"%%¡›ÞœoÊYµ^¿ùxî`–c—yÎƒgÅš<mb”’‹L›½n½‹­‡þ¤5èš"uH2ØrWE¹ÂrgZòeQ¬RYèá¤¼ùë×¯×ÓÝ,iÚzº,˜ätùÝZ¢1^O—™ „-Ûºh‰—â©"‘Œ|~ÊÚÅqi—¥Q~÷Ë‡
9þ!QæooÞ·«±Táç‡3äe Ü·‹è†¯Þ˜pßO©›3óž¶0å--ÎÁZPØ˜š•Z‡N»>ù]mnC¾ÝmÆ”½Í¦°ÓmN›å´U©2ú+ÿ -v\º‘®]¼ö¯Šþ”T«Ìö©Ð¬ÖØYºÞžZ(sÜÉ‘±€0[„RÞ*O9¦Ž#m…µ-²¥ÍRn j2B¸°ZÞ¿ùùæPl™µ±\RÁçƒ.8]$BrÙ“PHÂ«ïkBåhb'­—3Â‹D{ÂKÚ©£ãKjô	¦ka­àÂ®£¿(Nl:„Lø‘À¼/4•Q›–«ìN÷£ÿé>:1ˆ#"BAa–:
Í¨”sGXÁ?˜ÓÞÎ¨‡_¢è–!gäÆx`Stúððñÿz(<ÍÙ‰OEÉgP2 8ÇJ­¸ºkRÍDIŠ/–PÅikêŒ%xíƒÊV¢ŠVŸ£êéËÍ°cJ©‰îS%ý;Í·L¢z›åxAø¶Fõ¾/ÀMQ¦Â­ÔÙânX;µñ1Ž`ãˆ„Û•©eÆJ¥|¤A!­@¾2Æk½S"fA1Ú (Uœ#lµßè…7C¸›×¿¿=àfmìÄ·TðùÀÁÙð–^Ã—f
‰ÈR¸L$sµ{é¤5èvNt£5«;utpK>!¶¥îÿÒ¾ò¢¯2ËUÀ˜0ì¶§éžD×‡•s<r’_7@
gk	1†8	È#Vš`¦ƒ¼öV+ÿ,h†ÑÆ°_S¬YX_}vÆãÂYº•æœïï]fYHuæi±Û¿Kõ‹ûí`^ƒp}uu3ÿq>þ¿7Ý‡‡á´7¸ÂKûä§=—ø>ýÐ5†JW0ŽÎ]/¡R†{ÐD«Ÿ"€é„¯Éí|VÍ¸qçKgüpÝš÷{uz!½¦&°,ú+ÍÂ^¦Yú 7ÎŒÂèe+=ÃÑñ°ge~{h÷~rUFo‡&ÆŽk}éw'÷©Â0$ëU¨&lû“žƒ¿‡Tåeñ£²ÞÕW3ìuzwP¡È_]Ú¤L¯ãF°>åBÁÄ:=èr6ÿ™„Ihù>4Ö+Ê§u÷ÑxØ±“´#—ƒÎ"–+qÖ0eKY*0P¬Ý.£¿ÒËÇéŸ¹‘F¯JÐ~v ÍEm?ôÇ[u| ®4~`oëdvœ›
,Ì#`šÛ
¿~ñ®¹Ÿ~zmºn+[HEÿ_ñO?ý½Óó;‹þÆýÁø§ŸÞ÷{wÙ…?Žw7üî·4‚nØY0]ÅÒõè¶¥Tì‹ŽNÆ¦
x³Üo%ÊÍ¬_â¯yF:‹ÍÇ6·Ñ5‘sZ²XÌ›ß–ê¢D¸£ð²»'Ro$‹NbNlT„HÃ>F5õZ0­pQœ&Ñ“”Ù†hWPÈ˜Â?üy7GÐqWZÊÑ\-÷üLô*[@¥Z¶ö!š-eO¦He„¨¨œ¾Ë'ß“B@ =ùÆÝ)ÔÝE«O©øŸ:Qâf¥ÿ›_oõuN€ÂïRpW_Y½RgÀ‚f
ƒÖ'P!ÄH”‚Ÿ{Â¼âke¸ŒR©¹	„3´¢µ„ŠÈh:2¸I™CB3Nv" LìP´Z´²Se]}>Jkšo’ª¥XÉòCV•Ötþî·¤Ê× Ô9Qª~t¶ê^¦ÊfŸ§ÊÐlo¡ïvf7-ÜY­´ð ŸO9ž]Ž­Ä¼ˆ1Zøì\ß÷ý¤nÓ7C¯Ñ‚ #6ÖK„k8Ï]äSÊydHE•÷DxéÈXN'=·À$XÊ˜ OÉ8n¥©s3ìû®ß…{>Æ¥$Ô7´5]@•É]§·®~®
Q«•û“ñ`2ž¶‘°É‡n')‡S¤Å+3zÜý}Ò}Ú ¡•LÃ>ØðïÎäþÕú³°³à6JqZ	%SüH*-7xs!—#É ÍQ5a*ÇÐuu€íòÔµ·ž·ˆö$NÆ{£Ó~«q(„i‰y}[ëv÷¿zWIv§y¾‡u;?LJK7 Œ­íêø¯Ö<ºùý·O¿ýòÏ¿ß¾¾Å×(3Âw¹DÿÓ¦È}ñÓ‡ßÞüóýÛÛ×¿}¸ùùÓíötv‹A<sæþ˜W_58ÏGd¦ ÅÖ?zë4Öåd&
G‘äˆè 8ÇÈzî­&€xB‘ Þ,7T˜È¸’kŠ9ó!ÂéFlS
4•vhI°ºšû-3*uÒl¯eüS¼UþV†ßù=tÍ4òv‚1kFI&K)¡/oJªþâÍ/>þp}•‚wEëþøe8=å®~fÆIZû_ÝîT`ë_ç SZ©Å S?Ó·Ó—-€Ô¯!E µþãÓ‡÷-ßw“4ªPf¯Æ_?÷»áªèu+Å=îßÁÔmhh½CõTu'f°Õ©øYU+:tœ‘ûþxQ¡˜S9‰°2éëoz¦†_ôÂøkøgZ¡¬yzÁ-Æù¸Ælœ±?«SŒòêÑ‡r´mO—ý,BoÙû–Ð%c@áe‘6YK"0
§ï®B#¸TR2^!\Q¢3Ï×§ø˜Û[?ãüa±=G~~3ýÒN,ïÖX”ƒi¥ŒîÇ#Ö+k÷¼žwô”Cj÷xF3æ}Ã~ì¯<Æ¹Y{êkœŸ"¶Hªš‚GÕÉ}ôïl.w=’{Ä®pÝ	 Þp­;ì¼L ow‘É(EÝXÈûƒ­­¤;ÚÜÝúÉý:©•€ÛuFi'¶‚e÷×V
MÀüÖBëf¿†NÏ‡o[×æ‹q“ÉýáNÈR]r½ùbÛK¥#åÁK¥‰¡ÆQLTÜ™À±ÑpG*å¡,:G£ðÔxì¢ôNB°dÎ †é6L÷2]%0^U—Q¾‘é2ŠW™.Ðˆå0}\@©,ëÇ©ƒoy§ÛOQvL¢{V}YÞB®#KÙQNAnk]ÈÇà¶5;l¨í£J™Y>Üðá†_6†Ïòš Í¢>þÑ`æœž‡ßÍ`Ä×EX{.¼ÜiC4ZÁ?drâ¦ÀŒÕ#ƒfœ9B8‹FG'#2ÛBõ4Œ¸aÄÊˆ%CL¬è~‰àl=#f\ºìÄ‰ÂUõÖM¶¾yö¹Óõ)¿æuzÎÅwü×Sþf­ÊÁé}¢óí&Èuoè#Päú]~×$9›º^.“¬ûâ$L²ŸÍYèæŽŽFz.FÚN„h¸"µ% c„”Ê†•#Ñj­’{§tpÈSY`)D%‰&Ø(5‹^D`¦Þ*½)“ø·1ÀbšB9ÊÑÂS¸ÖÜZ{†¤›íÄ«¼r¶|ùå3ìô'£VxÔmÉÈ†áªÓƒ×‡…ª­³;Qg?œ“Ü‡sE—z%Î	Ç˜WßÍ‰$8/Öäòz7ïçOõ~Ž±FTïK¡fûw¾‡ôY—÷ î†ƒqë»J…?^ÿþß7ŸŠªùU‹œ%¸^wó:¿Ý¼ýÇÇïo1üof§gaŒýÑhÐžL:…^çö–<¬îxM²«œšž?ƒI &<ùVçŽFÝzç¨RaCôí¾[+;Í¢<¬ÅÞ“ä/qMs{uk}’‹ò³Þ’ìã(­µjgftY_›dªýó%š%]€6¾ßñ$5¸ÝOI‹ëÓ›ì< 7{Þî)Æ SÜÆÑCÏe”.ÖÙ*3AÁ¯¦»S&²¡·5ƒL)^tû"^Ý3Š‚ˆ3B"ÁAL•2S¾fäU@ÞGç¢±[ì¤#	VD°Å‘mŠÜHG1V¹Æ
JI’ª,EMÀˆ$û……t¡¡«¡™KÍÂÙl0ÑTîéÙ“)PÓx¡–<qN#††â7mí‡ñç~^‹ûrŸs{mDƒF48²hpø=ÜHdp:“‚RS£Â#xTR$‘PÖ9%œ:ÅU @MqÔ!h¬Q‚Þ¼<œÒlƒ³\³™"à­DXgÐ ©æ¸"Éåí!4ÖOf½1šÇk8¨pd3Ž:ÂÂ™Í9š×‡'M¾G9£‘yá¸òÂQ.ãsÛc}/Ã·nÿîÒDßw{Ç	;¡’åˆ"#(%†{n£6(RB¼¡*¢ˆ±“Ñ1*‘cHˆ,QÌ£‚ŠŠki¶ˆC³ÆŒ|!-Øc¡H'a¼ïÌLêW»ª˜—_·Z¯'Ã!ü¶ûð²^Ùš
¥	}‘úa¹#óÍß[å>_)&
ªWðùÑR©Ì1žŒûÃŽé^Ž¼¡ÆÙ–Nš1MéŠ©W\6FDb¯´F´}¥ÓSY:¤™Æ{K°yg´rJGåÌÝ]˜EÕó2S8qŒ±Ã òèîF¸ÇV¸L=ÆŠrˆèµó„;†9áTI§hT	á1¡ˆhn©G6nJÕ å ¥Œä¾Úk¥ DWžíeÊn€ä²U°B
±ºHÙ¼ÚŸíÕž`%ñþfÀ»Àñ¨/ö;±ñè½]–qÀ³z¥»d`<Å›ÑÞpdMÔˆRå÷–	%ˆ R0¹à1Ç½B˜¥@ÓZJÆ‘“Ôl±Gk ñé­Ê}´RP²«fTJjF«ÏVX#A«á1S@cóhõdV1:KŒq|¤<öƒÕ.¬<E—ö:öÌ´Ô§FÌ(¼Š˜½~úc7b²ô€D§‹CSFŒ[’80nÒN`£1w" Žf’i*¤Ö,2%<‰Î{bç†0„³Ê1‰=Û¤`ýÏ7¿¼nùa‘!Q2ü±‚­imçØº„‰×ÿ2Ã)Ø¥P$ÐQÂÔÿ4_L%^I¿µ.<É¬ÿ“"ayr-˜ðJ®!-$GX«µP 	Ð¹„„R"ŽªŽ£Rk¨RÓpÛåilOÏáuyˆsðî—oÎ*N°nh#r Â­›öÁV„ózxvÿ¥÷_9/?îŠ±™;ø÷]J;èßÿ´õ¢Þ%›ïÆu½ÌÿzÂ¦4ôûTCîî:+kr¶”‘ÃÚ-FFk@eÛ8¤åýùÄ¿àÒn§
.ó¹úõí¼{<½¯·%ŒJÍLïÈQ™Œ©À”Ûïú÷×ý^šÿ5@¹ÿ©:µýI;ý(/põž˜$âµáh-fYIä»´È$#“ïÁ¬¥–æÓ°aŒbâ¹FÖEˆ£ž†‚Ôª¨i,Yô<*Q”ÒØ@T HZí6°—ŸoÞµ
‘<Q—G4m{zÃuAÐR{oé	V¾0*¡s©„H"ørÞBŒ‰ l){Æé…>+{ášÓÕÐŠãÐ
‚Ù#“îšyš+~ËÝ|d‰¬¿F"«aƒ@0…ÿ™çšª•²Õ{íµ•ÎÂ_„ð”(µ4Á+Db ‚Qã…“^£à¢N1yx» ‘ŽïùÛB<Ë¼Ï–§©`·šZ¦¢aªÊLKQË’_:¦ìÿÅoƒÐkÍÔQ­×Ó ˆ_:ã‡N›$¯Ÿ
‚¤Rª*Xq çáõÏoŒ!–Sc*Tñ..C*	«#Z¥·Çª]7ëû2]ë³Ö$®_ƒÃÙÄæîýdwÛMÓv¦™EÍ> õÃ¾ÿ%þj”l»èQìÜÁµ7LŸÃ–Á®TØn)“Jß]äïÏNü=ç£	 UÛÉ>öÓƒ°ñhóÜc£%&Th,‚ˆ”\_làžÃ¤0	¢ðWjî ï&}ç§4§IÊa¾x<›}gÙ¯€‹Õy,F¬ª)ç.heù¤¸\y¬›ô:ß*8iˆªr#øJ€`&ÂK34'5Í+Ý ê)P•JN÷[ìÎ)±µìáp„= ´>oòÛfyoþùó=ÕZ¦eÜRrvµ}øº'Â•A7…¢¸ ¿­<¥.ÔD{"¸Ã‘!DZYä²,R©|À,Êˆ¢Ç'¸a¹M‘ÿ‹Xñ0Óô>å‚ŸM·•âüNÒíi{R®ÝzÅÕÍûW›º{yõõsÇ}ž>Õ-¡Aø[uwžIxeÐúë«wåM>µR‰)@ë«éSÝ¯Ã¢ó*qÒs¥P™¬UR¸‘‹1=Iþ<;Å)¢šãË$dÕy+ÆQ«“rãç…§r^àDëýÍ3ËÝ;£?AÙá…yìDè¬U±l+éÓÓ`¯i½ì—ï2qj3—aúè>1§E44…!”Ú™òP{©Œ>nŠ•6"2®¢Ð¦[œ0dEÊÜã„lPúòQZ‰Õ¨&[Ò3bØðe'C¬%¥ÕäŒa^'¦É¥Ç‰³9Np)ÉÞ)s€ù¨Î5pùœ±X¾ËFåS8lPí’.8Ï¨6ÞÅ€‚ÅŒ1n¸§Äã¨¦Þq/´0ÉšÃ«´e”07>€6¸|9¸œ7Tv’8D¥@+Ò3#’.IÏªÖ“ê—¯'óÚà@¥÷zÝÓÇö£Èê3Çk úr\EÎ Öe°áRvsáSÄ!O×Ñë”:XÈÌž¤“È¬BNjË”‡½0(9dªmp]NöÈˆ=kthoîô)p»M‹^v'Í÷*voÖ|F(^É"P“V“PVSó]nQ£ü~2å7–â »ÜÀóê¿Ë>/P¾Oüøç¨`>¹#åáðxt%3³$hd	EÁYèˆ;aQ@€ŠÚJÅ­÷ÂR/±ÔD*±“Ê ”nU27èxè¨„ÈŽÖƒ)V+Áz(TáUÉ–bÍU@=tl”ÎçS:z@ÎÎ<@<¶Þ¹žUõü,ò·<CMòåÃïI´É9I4Xpo­´!*E&; j™
.¥¼Ž–Z„,JÉàX ÕÊ ~^ ,Ò:[µŒK‹•hyZ‰¥wŠ’šªå) 7Úå§Ó.cFØiñø
æ|D>·ŽùlùÔÜ3€äØ]”­rH¦MÊPî|ÈbctÀI#qIáBÄžê¨Þ
Œ¤všàà5U–nÁÇOîÈ­c·ù­uCgO€‰0’ËCL';ÎºÔ‚È%4LÑªŽüš#VK…-kÔ´O§¦¥xÿÄ¯ÅæUEý]žz¥ ”FýïU-{Ùˆwt¬fÊKŠEpÖXaq.b¤°õ%OD®¨AˆÎ¥5%E­°:ÔÆ˜wà]à%y/;É¹Ð+úWŒ8YJcˆ‘Æu2œO!¯Ñ½žO÷Ê•<D÷ºåŽ¬wÍ¹sê\Ï€qß¹íw
­§×˜Xå$sÑYB¬õ”Rl¸ÓŒja¦X[i(|E†)k¨Â”á¨“ ñ!Ö€ÜEƒœd KÙÏIÊéºrŠ %çSL”ªr~ó	­gñAÖ³;0ïøºÍLÔ;§^sw †³ ãSk<3°±õ(1eÚÏ[º0Úmù+‹bÝÎhœU®oüR¹ƒ ¹Ü€R´š 1	Š¸ÈŽ©bŠ`,)Üx¯ƒ—:RÁIt)1…²Ü%ml›%Ð<^ù4B@™X–òz'½åðå³¥9Q(öY¨¿o~ùðñ‡ë«À/{_ø'rµe"/[%øÚX¤O†P®Ûí-À}¹”	%õ·Ž#Œ.à“ÚVäªm9Qœ¬¦ÇÄ8¯¥‡LLP
x—óåú6úÛ§Òßb„TÝ™vÒóp^,mãx2ØŠAêz[|ï2úÞ‹GãäJÍG=ž½ÃU¿Œž^û{ ãOdç™±¢ŒàŒ;ùSðEÇ	¬ \F«‰ ã~½ÄõËuöÈ]ï»uGÎJ×66»Ì sûçÐò:ý=ªVùÁ-¹ýðîS^;]omà|uú¾/ùb­ÂõðÌ}-‹¿Yqèçæç·ø:s›¿¿ˆŸP{X=ÍýTf¥kw3uë}”•
{|‘%¬µŒKU`zÿûã§·ÞÜ¤óøvß%u¾EyèíïI¨®iæ×Õ¹'ùßÙ{¾€¥‹{œnXF‰ÝÈ±»­5æ>²†ôÆîUºx|…#?’j§ ïÿ6­±BÄê×x5€TäÃ	z[ñÊ/®…Û"€wz±·Û$ô»ÛD­-	kf°T.	tÃ~7	U;
Ž¯ÞRap$—¯fw¹/Ýþ;Âe4÷µÓÛª®˜®kF‘›¾\ôÞÀÑn(4Zi°¾¶§g½=»…ÉÑßé…Q&ŠÈŒU’³”qNXØ(ê,&j‚I5–\qæ£q2²àÅ¶0 ¾ä»Ó—Àÿe¿úsÅ_õJNïcW=¯àGŠò:æn3}Ióø¶ÇŒæ5_ÿ÷T‘°-Ìb?ÉQ-24$'èï‘‚„<¹é@£iô#ûêG:nÒÁªW	¹B'Ô™¸Z5-L£…i´0›h´0gµ—k”0ßŸf*únÕQ4ºš¿¦®æ§Ö,¤d El£)ÎçFí”&ÚIGÌ«Œ°„3e¢µÚaå	Ú®ÑÖ|oÚÉ0–¹æ«œ ŠåŠ“>œ.Ä“ÉKÅºE#$E}mMcÅúdV¬ZËº^ú—bÞrlÙÝÚ›Óô¸ª¿IâÕÓ[¸6*œF…Ó˜¸\°r¥Ñu4ºŽ£é:ÎëñäÚŽGg¿Ñvªí8¶ã[·wL=FN{aEF™ö’|uŒäØ¢„çQx-"'&°ˆ2\zcQXS	EDzMÄpã#£ŠNûÚŒªTžfÜ…RJš&ùNb|‚L3ì¤ÍÎô¢­®ãzåÃæN®*êˆþý ]¯[ýaëõ?¶LE­*"àæð1=€PgÈ¸ñÕ×Îøó²þb­ò¤ôÂmµÞ[¦;ê/1¸ÁÝÕÛ{|ÏëYc£t^À£Q*ÿwR¨PÒˆ;UwÞÙÄ+n½WPfºÖ'3›Cëñ¦ã½ÍIòZuüÝ|3Šð²“Lã c®8aJr^'Àaõ¬]°oÐ›Åöêýâƒ:‡ÙË9\ƒ¸djÿüÕ=<»SMÙí%úÆìò>ï›ò¹zïnËý¹-5b—ñG·.žx¼ÔØ¢ÁÌ*Jç$…å7žc4w-³SpKF¤•±ÏáËmœ‹}Ê?Â¹E$B<%4Î¨O]ÍáÊ˜†}­:Â2Á©“qfñëÎóYwJ-ë:Àîƒr'0Œ¬rçµoÜŠqIÙ:]¯]6o9Åž^Ö2Ay€y’'þ ‚ŽH¢nR&1	Á‚LÎÂrL#"QX'XÔx¥X Þ.Ìs€ÌF(~†B±døQŒã-Ùd™Ð„-SÌ#UßF„”t_¡ø‚M
žN*>‹EfJÏt'$§y‹Ï§—&ë;‘SÇð»RBsë$#–"‹˜ôÞ`N¹‰Š:ÊP¤î§À<"3‘û ®Ñ3c7*þXÌn¾@»ÞŸ€•«=dóêö˜qË÷[½>`¹ùZþVv©â•ëOÊà+¾ ë4…4eù	NZ	½ÄA¶¤ÕÂœ`RKŠ¾`Õêwv‰Ìy€ÐYìÞ9•ªE‡¦N=¿Ò÷hÁ|‚ã¬wÎ8²Þn¼±2xb#T“hµE tYäàÖ’Z"¥H`ÔYÈµhSàÀ24*[ó(”H§¶e—0ÂíUÂìÂOÔ¼HÐ¨ÏMž`vÀ»ÚîËÿ¸ºÆü»ÿlZÆ³«B/äæ?…ÎCRÀv®ˆ$H¨‘ð*ŠÀ)ñ9Ãƒ\Á0d5c+‚‚Pž$Ù¥¹û3TJ*W¥ÀK—ýS(G‚W¬SŽ«óâT^ü¬HúÞ}S|=ä„8ptR6œSyô:®£¡Á8ŒÆ¤’’x‰&LrÁŒaîc°p/I!¤CK‚©fÖã)¦Š(J­ŠI¶ÅÃJ3m&Eò‹Îh<ìØÉîôBó_½32ß]Šæ½·”,Óg•”,ä€D2*z?W»ÞJ
Ô—pÙºîÄwzw°Æ©Û2ýGÑ’éù+zî3ŒõÏÂ”¤WâÙz%É«¹©Á‘¥ìTH3^YÒ5ª¥'3ÛÃTÐýS2¦Í;£f)uwaz¥Ý¯ûÅ˜zfvŽÇ}…9yÒãƒ ôè
5F˜Å’rŽAZlUB[f×LÁo	AŒDJ±t„:AÄ²ÊbF5|ÀÛ2q4HzÍœDÙÑ	BËUÕÂL/çy„£@jÙÁ—HÚ¨æÎg˜²—ì¯›Û	žGÕÌecçYÿ%<ãÓjÿBÀy
}$QŒ!Dµ‘ —£À<±Âš¨´ *BÅÊJ®àÆ î)À*2ˆ:Éù&À:Ï¨Ø¤(ÛVNP0—må4	(+È©ÑJÕAÕæÓÉ!MëÆÝ©£ÇÖlæ"éeÅ)RÎSë\Ÿ!ž¶á·í{ã†ýÑ©w…4ŽHc‚Ü@Q„õœ˜ã˜X¤ƒSÞóØ!‰¹v”	¬ÐØn@Ö×ýÜr@¢ÐúýæC«œwtÅ¥Ô. "-K‚1s—Pr\'œÞ§%óQë>L“)ÛÐ2…Éº•àöûtjù0€‹ÆôÐêÇVw1otU<Î22§ x+ã,)Âl¤P —F~ÁæéIï»ú–¸9—#Â+™	8ìtÕ˜“‰šWÎ{£ø}2›B…Éa¢keÏ¬®ô|aÚàZôžÚ®pöôúé§Ð‡fÕ=—XK°Žjn˜§Zyjc–Qé1¦Vc†åŠ;â•— é)7éCèyzèQÉUE)§h=ôÀ~ÓBÏnaù	\°¦Ô¤ñ	ÖFôòµ¥¾æÃ^sçé,/Ø–ðH’Æ)”x,2&WÆQ½à^SŽ#,E>h*áŽ)Zœqc™4œÂrY+7)ñšûþÉïû¤Ý[M¿Q»Ç4K Nuß7
¾'´]dâ0ý^æÕ
U_MiãI­/Ú~qÂóbt\6jƒ]P–ç0Q‡xàp˜‘@’(ä˜6#Œ“íz$Ø0ÆE@#eyp›¬Ù'ƒA8.¦œtº¦ã°?M»¾o<÷æ_P&Ò{ÀÁÏJÓEÝàáîvöûÉ¸ÓíŒŠ £r|0¨«GïO‹ñ®±aW³M[šÅå ‘Bš­>3mÔyQN„\Ñza‚¡$¼T,4Rã¡iºÖë©´^Z&mf- Z“à!…ÙÞäšlKÏùøLœQ…6íñÂTgYñ‹”u"½W*üñú÷ÿ¾ùtKr£‹Ÿ);ÁyBý‡a1>~Mr»ªµÿÜÉãÏý½÷e|ýÜ^ÇN¯€:™å÷‰1f;ßCÞ7¥WØïšìÕàfùjIŠ Å÷Ûïx’úÚÄ{Gm +Spu@‰z†ïnfw öŒ66Æfß]wwØöœ6¶jßÝà_ÏÛ‡½ë'éç6Žzî°&€Œ¡Ü»Í¡ÿ³êVO{VîÂuqëC>ÌCZèvFãC›è¿Óí_{klþõ¿7™ÜwûGŠ‹t¨yôç*ƒ9Ñ\yâ€Ñš,,Å’XÇ„Ò\Ro¨³K61×’!k¨Ì©(•¤‘"Ÿ©$Î¶ógDRBäŠ©')Ú_EŠT’¥øõ¥ÈÆÔÿ|¦þH0­–3ù•Œðh¢ãQáëHŽg{„û>ÅÂŽ›t°êt=W¶:W«F#|žUø<S–ºK“qŸÖ%¦n$íl£$ÜiåÜE+{Ë·•&êŠ·‹ªQúvjÊ•‹ê;S³ç´°#ÙYF[Ó¹gÔß’mgí½$óEõ}ó•ö‘ËMì%–/ªÃÚûÉýž_À^òl¥ò>âì´úi¤Ù‹Ë8‡ÃÔHO©‰ÆxJX¤y‰óFS`GL¹¢TH§%U1£½.*CY†P[ðû$êÍ³¼ŒZÓ[¹*EyêSTùliööÍ0€À›†o6Ø«é`/HhEše‡–òQØH
U°¨¦¶§D0^'läÒ!¿à×Ïï<E‘JÖ”a7mâùŸ+Ÿi’¶3½»—3×‚Ÿõ s¼ÈøÇÁÌ£ë=ÆÒ2O8ÓÔØG<^`âµ&<:D„Öœcœ@TXm”ãØ# OŽ¸ÌséySö•ÌHË…û²\ÉjJ„bl)«© ªŽùê
f6ºÞóéz¹<$är>NžB7û<Ó¼]‰w¥öE¢ò’é`P{ôÛJd ð‚ãÐkXÆÂ)ñLXn‚¢#‚±·)²ÔR-y œkx+lŠ‘†ò˜c™‚T³À§›¢¾À0JKÐ‚U¾7ƒQJ:Ö‡Áº1 œ’àØL½)W#¹‚˜ùSiÂ~\>†–¿œ"br½L¿.û­–¹*ú6­Ñ}¿?þü²5r¦k,@lçvãº• ¼ÓLÆewe¥Ö‹›_>¼lÝüšþsÿÎùpsUîë/üN îC4“î¸ÕŸŒgMÀþôLzÒ5ãi íÅÔ
dl½x{óñ‡ë«ŸÓ¶$Å[k2*fšÀ¾ÂqhA)K(žwaÀ½4”””0üIb £‚(˜ÞìjÒë'©Û¿ëÃB|†á}vÆÀmRŒî ?
cWÎ/8­P± ©ëÆûoÿ2ww»êvþ•õµ0©rå®S;Jšv/yæ“ÿMâKfÜJ#†ûÝIÚÀë««Ù¦
n2„²)\z~?M+ûÝnÿkÇtíÊµý”æÿ²²l/¯nÞüýeëãýÚz1ß¼•³;ò|‚/[¿vî“ö9íì_ëE:8ÁŒ®LoÜ1ÝŽA§?\·~ö¾“F[`áÓ„ÙŒZ÷»Ïã…ÛQ§Wu2žÌêÃŸÓãQ˜ô¿.ªQ9ùòp¦%€a›†7†ö”¨]çg¯ ¥6lqÈmøl¾tàçðÅÃ•óæ¦ù»ðãbûNKö¦×Òu	þ0Fø`za¼‰ð1FR°½*áƒ¯Ãë	QH¡%¾G$–¬—H¦Ôn¶W³.Âvq^§›3‡ÂýzóþùñÈöÞÒv|Çœ’Ê=šóá9ö’‚«]Käa~F®ÑV¢PÛÊ
ÖâØ¶Ö
®AÉv®±¡ÕƒÊË'ÜZÏ¼¨Þ«0Îzk<AÊdF‰ÿÜOïÄ åKÁ”Ý e+)ö¦HZxª	28<ó”3Å(Ážª˜8‘åNú 5ePHÌµ’H3A°‘ÁÓM®MEj(RC‘þªI<¦HtEbB¬P$!´TK	áç¹Gt!_Ïu	$‰\IB‘¤<û S±¥]š™Ó±¥[Çå_8Žá“1¤¯a8îö¥H092ÝyR"	m±¢Lrt4:‰(áa¨·Ø¥ì–Ò8C]ðu"ù‰“@ßáð&M(=¡ÀŠ›»ußïu Ò¶±"¨òé·›|Æý~·LU;	¹”Œúqü5= $rÐïÁn¿ýPº7 ëp#\¥ßMÎ$Þqß¦ž4(Ö«¼¼ v%ŽTPšŽï†“âH‰é­e¶Ë]¸&„Q-*±¡Ša¤äZ€4ÁL-Œ qWŸ\„"± S¬ÎQ›ìƒ0G˜E0çSJàg|(ºŽêf¹ŸYÇÿ†½ÐmXšqò¬Þ/åÐ·!Áúû`ks9 ³©ÙÃ_Em„ó¾eœ»ßO|ìIše´k|çÜí¨Ž)r¥Â¯¯_ßÒ\cù³ h¤QÕéjZåk­:] bÉ˜å¾OUkÿ¼¥ÙïÂ^ý-W«ÕéÀuR=šûø6+Ûuóú]þ™x\1×êþÜfþ£±w?þXçŒTk¼þãŸyw‹¯3×}Ýk]¿v1Ñ?þ€•}DûjU¾Æø°ú$óHl¬`ÿ™k7îôb?{›³ix™•Ág\É³’u(=©ë×0*	ûŒmÀØã½Ù:Èièz„ŠÕãëžDo<Ñ…¨IâèÁ!îµp>FçBø@	³Ìrç¸‘S+%åŒIï6%œ¼éw€yŒûíâ/­O“ð‘"®Þ°?î;àâ/nn>ÝüÐzÝíÀ–lfñåïg9;’i0ì„q¢Ü:)|pøÖ¦Þ®f½%­ä§›ëÖÏI‡–”PÀÌµÐu¦_¶’­oý×Í?’º0iŸ®ìC+ÜºýXöÒ;·ŸTtvªWúùÍÇ2: °ÔÖ”­O¬a‚câŠ%YU2m”æZ(Q‰ÓTþˆ²Y¬e!@!¥—ócN•XŠÑÄ…D;•L0Òvy2ÛìtLïRêBw2Ó£)¬`ÒŒ,Xq–PÚŸ¼HcÙ¥ÜY{i¬m4µvÔÆ2ÕO=@>(.ìÎ`;*$Ö_‡É/Ê×4˜,Võ×·kÄ#@ë#‚f{ÒëŒGõt\¦±ÃØÁg?xÕ/n¾Ñu‰ikõ\%n.ý~ÌöÝ½éìm­L¯ÉLüd²l"ïå’qì„µÈjF5qQ
¬4VGBˆ>ƒÀF2gbØK'(‚Ö6Àæ˜ÍÌÌ8¡åôÉd‹’kº«¯&Ó§±ô«©Séèeñ¯ÔjŠœÿ%èBÇÕé¹~ñX4U< ŽÂÀS±ßM¨öª|a{ív~–A€Ç­¯éuk4±iH6A.Ôí÷Bz ,”eK}¦Ÿ&$ï;ãN1Ç4‚¢Ø/©›½õÌü²¼‹7³éz >’
0Ö‡/0¦áúî:M¤µPŒÜwbé%í
pëUŠV¿ö‡™Ôái8ó‚Å†’)x1ž4ÜQè&¦ð%tÒkæW3ô-¸Ä“%wkyÙÌdÜ¿OéÙ6Ò@[€¥8½öô”0µ–‚¤ÒXWH —
I<KS¼úÔ¤˜`ËOM4q¾êSUT±šÀéØÚé[k—_Ym"öáç!XÜ§$ûi×­ÀÁªAÌêªgãØ†¸.Ä­íå ùÆvOlþ|zMÙ¹ŸŠ/¥³ÉÁ:•€/ñÏô“-ERéþÛö5‡Öƒàù>€Ð6µÿuÿ­¾%›ä ¼ŒÖ¹)QÐ5&s:(jJ¹†që'Sf=BQ2Ònp3*«”åÚZÇ¢2$ÅÁ{˜Òð+‚å&Ã›ù[ÿùáÖÛù7Áu*ÈP©7[•Ÿ@Aµ[ÚioPSH/	ýdX;´eá*‰Ÿ©ê(´>ü’¬yh™bpYÜ…q2^é,š/ž¥à®ëM]‹’=Ê¤’îT2_Lëg€ÍñË²ÍÒè?>P\r‡RøM‚n»0v\Ña’ÈÓÍßmýç}8Î èî:ãÏ{€ûjq®^Á¹ºMqã+'ÀÎª¾‚¥ºþŒRê•ùšR^Í†	-P¼ÓWwýùo—¹]áÙP~þø¾õžS*”œ8<ˆ”¬+"Ï^ÉlçßS-Ê­ëûðSÒ 	–þº=šA¸˜Þð~Ö	œØ{`íÔ¬ûié_»¤ßmÚÍYóþõb™¯a™šß"[›ŸÞ¦5;øiÔ¹@ë…jGûâÀæoËµ:u/ŸûãÑ òÉ÷Øî@e¹=Áxý`î»?zæÏþ¶ã0‘mÊ÷_z§;H;ÿiÐ¿ÿé=$lXüèö_€ræn÷±=j_G˜Ü†K4£ÍGLé¾¦ÔNWq„óuJ+<?jÛNZjf–™§]¨
ÕÔf¼í÷í$îç?G¯ù|ép]:m$öžºÀHùóŒ"’`-·ØQJ±¡¤hN¡N‡ #38Zé£±!nòUŸ?™ü2IzŠQ«Ýúµß¿ë†ÿ5*ŒœbÓ* ²\­­
£åÆ’ý“i}5Eê¤Ð`J$o4NÜ¸ Ó.
Cí;.]gWa<s—O¯!e¯×Óq%-Ô¨õ¨§¤j1Ý{`ðGº»êŒKV:LFÅ¿ß¼n¦uÊç–Âþ{jæœl¤gÚ¥¡Çnø–ñr1¼—3eÿ>¤•éŒîSKWp'›æ¯›ãÿ÷ÿü¿Àh;½?[|x?3åNpø²‹ØF…•ôUy¯¯[ÿÝŸ$ƒöN/´>÷¿&ÝR™gªP2M–L»ÒQ¿ç` É$<)¸
ŠŸìÊ
Bk0Ó]¥§¦ÄKZ‰'¤V‚uº­d¤^¾=¥øRG¶:ô¢•/ÙÂ›Ö—T`\lnñ[(’-™”LÿªR¦‡hRØI³KãKFD­ÉÀ'•Úbfó^îþd|e¡á?Sƒ>of~¡­+Ä™™¡lªŸ§ÛJÄßú]ÿ·Ù:—qWœÔW‹Ëb“’’¢e:Å0Û 7CKÅ–g+‰iUsF	â9âC1´vq%µq=_¶_>¾y.qÖÎó`±@1´‡ÿÚt,ÅcÎÖ€±Ó‚Ûµ^ë¡dkƒ9^l›>À2Û·»Þä[aå´MU-7×eÑlS·Ú&qùjùÖå›8íaµkÓš½LŸö²yRûšJíg#µ·qÔžëLoÅœjo;ª}¨.Ó›óxT;ÿv²M=!ÈµáÊC<f„b4¶Æh#¼Ò,`¨¤LYÄŒ0–ÀïVZ¼10TC¶²Ýí§$ÛòÙ&ëCFhL©ZvW¡„iÆ—¸6¦½;¬æZšÿNÝ°m¾#äÛÎr…<)íÞùŠ}:ÚÝ.ûÏÏ‚°®Þ‚×õ?¹ ‡•¿¦C‚úËº3à=¦þÝ!.Æ#y–ßvû†¤£ûz'`FcdÄF©ŒåLrÁ#Py"4
ÎP_=†ÿÏLÑ#­‚	ÒaÏ¼µNm²ÛxÝ²^¢Þ%OžüU}jfßfµ†Ù¦³-™ÁJa uJ[û¥UÆpÒk'u5 ›8i¢¹E‚DR‰E¾n½H1L^ÿøã@õßKÂ´îaÔ‰~´*)ÃJ)¡å
†5ýWÛÓØczø^UÏá+Ç%m-—*ÅeGk	$ÕX¬¸;cÊ—¼‰â"—;ºvqÒ§¦ÿß±¢vy¢sGŠÈþšÚ¶ËP+®.œ$ÿíÓo¿üóï·¯AÑNÝ®vh*Õ·¿Ò¯½(w´˜÷lCËû3×‹SB=†§|ÿ¹½Ê›d,†±qXPï’‚Iaœ#+­6Ú(„N±"ÁÂ(OHDÖðM=€úžŠ<(²>
:• @Ë–ˆRp´dˆˆÅÎˆ˜ëïíïZ»qtˆÚ'æ
fd
³Xu”†òÄ÷“#×N'ÀKB®XÝÎxÏ°ß‡¼¤ 4%¯n+‡QŽYp1¥Ã$ÍW1`DHT8¦˜ÖÃt$2r_RÞ¿ûôöö÷þãÓ»où.j@XúöÇeÈÀäbxwåm‚Çÿc©i ŒO…¢{s‘¿µJE X’b|ª-.¹%<»*Ãö{Ý‡¤m/âV?¯´i³Àš€Š÷)àäô)£U)œÞ9®ºpF­ÙLûÉ3.ìnéþráhÞ‡a[1˜„Ï't+ß_Y_„†Ê´ŒIY»—ýÊ™B)áU5f*Ã£l±îmÌ^p&1'ûÃYZøl™¢ôÑÕõE«©Lc*sS™Ææ¥±yÙ‹¬ÅðE2$¸Žæ´œ1""ÃFÌÓÑ`½4Ž`Œ9ÅÁG®•0Q3ís7tí¯K×T®m¼b[Á’x‰®	,ò-+ÓµïZqdÂFdMwÿõ„­ŽÅ©™[cmÑX[4á÷!}½Äe«ó&ÝQ0ßéïý GTžeE¬ÅÂ§ƒ
Vl“Ï¡EÜ`Ž|Dš…èñEa$çÔI‹µ‰ÂÒ”ÖOó°ñIêÝ}ºqƒo½O7aëcÄçcáÑ¼…¦¥ø9-E…}TÔš•HD¯l,q¨’>ý³×ùÖ*rªô‰Ó¥ˆR¥‹è¨H¨ò8Œ0¶Îlh~Ø´;=X¶°¶RŽÏ"G^½íuS²’RÃ”ƒcÂ=¬ý‹·ûç?Þüpò8Mq˜2ûŽþ÷Eøö¯?;¯>NcÐ¿Z,Õ–hî˜âC’©õqEVRª¥@ŽœWc9RM8Ýý„4?ÒíéÙlãšîý±‚:ž‡Çmšð¡TNƒTV“ÊÍ":Î‡´ýÁdÓÝ±éN4Ý‘iO#fB²ëvòÏÜÚûÕ
Å±GÅôåíQ­gR´·=*–ž
5*¦ýL1æ§',»â°Î¼¾(ïêìïâœï˜-ÚÌzóÛÜöÃ¬Ù2lwP±cæxJiäÝë·u8øÇuJÿqû›³u„¨R«‡ñh\§¼™]"™+¼\ãç÷¾E¹Ìu]Ík4t™rÃ¦ê™´ßŒz®7ª#Ð93¨³2ÞNFíb·r³TkÀ1}óË??ÞâÜ
¾[kpÝåÏ![.=›xÞ—c”õÂž6ÛÇj½Gað×Wë]]³½µçP8ÐS«»E…›¾ÿøö6×Þ¦Äó³ª>¢×9y£žO2ÁÞUVþ{pu‡o~4¨Õï“i{êëkÊÙuNÊRèïãüôöÃ›[‚rsdøZ 9/þéÍ/°*)/p^xr¾ÔégQ&õÏ7oÿë«Ì-(éæmAõRD¬i ë:½×a1-íÇär­réÏÎøÊ§Ñgãû_Û¹ù¤."ÍIúQßŽúÝ0ÞXäÝ/îs¿?ªD%{ÿi%Zîm¥éJù’0¼*§ví«ê‡éÏ’L¼&|m>~ååNF¹2!ñõÀl-6ívm©yÌ\ÓN9o¶•¨hˆ«»|è÷tÊ:DÅh…µB)#(Ö	á=òÞ¤%ˆYbœPTHqtVÚ œÒÂ§ˆ«X„äãû¹…xRÚUt‡eÅ-oÏKöè°ç)<{ùN<œô
-Zw©íKÞ,â€—>ó_;£Ïa”Øab‘’8½^›êXª*Ìç¡2dè‘Ê¯7Òƒí)4UKaß•²êE¥ÖJì4Ó[>¤+Z´\K½FiX()'uÃ½?RÛp\ÍaÑøBïµÓþkµøœ_çòÚÄ½>cÏ¨Qrà|Vr
5Ú‚îìòü:….­¢@ÊÒå«‹ò´D™Ê¡|MIž‚$[Ë±Ÿ:$K³QOýqÏÝ@^“‹'ÖÂýj€ŸøºJuÆ´àÌûT¢ûUÛeI:Õä)r'PÕ	¤MÈš÷¯óDÈÓXu±i… ý;€´ ½]„ÂË=¯¡¦¼Ýw†«H0[¥›iFÁeaéè‚ÉY¬9Õ(…Œõ)„p&b…‰†#øODÍ¤ÑÄS’îc€¦”óhrVÑ„æZ3Èßo%°®DL)²$š¹=M‹†úÂÉÁçNê¨ÿ×J)ßÍsCEŠÙCÉzZqæ)LþŠïáÍ+ñ>¯ÄgyŒ=ÿé&ÑeÿÚ™nõ>I4ÙFçOôbúOŠuî™Cd £¾ }÷¢PÛ‡/áQžâ3¼ÔDá(‰ZW—&àHRæÃˆ06iÉ°"A`œ"ë©×BÒ€9ÈOÖqmUÜ ýGA	ËÀÆÝí¢Q«˜zŒ±7KI›œV/‚'W2·.R$&4é¥Ÿ—2ÑÕs—‰tîsR’e™6Rk®—‚*ÅjÊDÅª76‡ÈE’JU3&2|¹SÑhÆÒkáa°ý>ðÀ!|&a›=Àã^Ú÷¦ÓëöûƒöüèL}–"ÖI:[w˜O&¶”Í?Ù[ÌÂ¸àÏ»v¹Æ9îÒŽïóxw„7»Å¡HƒhïÐæ¯û8ÎõT–q
ÒÈQNÁ±¼Ï¶0ó8¢YMƒsÑH-%òT+-PÔK$”fR{$•Dy¬#æP’À©R!îBÃ=ÎÏ=x¶wYâL=æ¯p…êšŠ¬ãV¶>û¨2 aÏ›}<‰WÕ±ØÇÞÚùS¨åÏMLŽj²¼™˜z@ŽKLŠq=JÄq"½Tá¯„1-C„2W&âÜã2j!Æ­M¢¶@˜¨´$iÆZäúÛräæÃ_ŠçÍMïŠHGéýø1Ý)ÙËÃŒŠ,†dF)Ô‚Â<6"s5!£2‚5—Õ§a‚8©áå¾8¡äB(Ù'rò"êhÉ°]»õÏAXlÌ7Ïn¾™cˆ9ãÃ;rÍË1–Î²R¬au˜m8˜qO®ºœx•9´ë<¦yžÙè¤
‰€#v.cÌ+%„CJ8&”çEL¸ÄXp%CpØk Ñ¯³¯ÇOPÔ@	¹Õ› ²L¼0p€#¯FT›zQ½GÐÈcÈç[8Xms³óQ±Æôì/kzVËzl‰Û"ŠÇ>`ÏÀìôôQ.êÛ[]X°8ãIY¶ïû~ÒmÛ„q¿?þü$’[Ç$ÐE…¨ö,…µ”Þ"ë¤yÂ)F¬‹1Æ=ZøÄ†8Fšl7È_f“j&ƒA8¹é-o3“|=#‹6‹õk½ø™¼¹yõáÿÿ~óCnGÏƒ-¦'¿<¶¨4×«lQJ*–è"¢¨†¢nõ`6¬ñ@Ö­ŸÉ=-ÿ¿ù~QmáI¸Þj'OÆøŠ¥š÷úëÛG½ò]ê†0>=a<Ÿ¯ÂIãÅ5ÜŽCmˆåZ‹àÚZ©$çÅ?þRdŽ<ñÞ'4\}²^3\Ú~Üþ¢hý©ÔÏ`ñÆOÃè©¶;f:8¥=	Ò)™5ÂG«Öžc'udZ*ê@VpIDÀ÷71z@¤Ã¹|jÄ†n·ÌðÜdØ?´Ê}Ì¸{¶¹Õbù]""ª~’è™º±o‡ƒ×0ö;Wµ-ýÖíÃ)i74ÿ´¿·ân8õ%pêçM‹÷Îð}*{ÏÅˆ²z2ëÑ2VíS©«[UßÜoþî•™ Ú&ô«Ðˆë)Úsµ¨Ò®L«àºGñì-èIx³–B[a±Ì[ª€&{¡¼÷\ðlÕk‚ò«äûk¸g\YAi4”PÅè¦ ¬Èl+M´3Þšýs½Eº;J·š^X´ò}gžMžìY¶NU‚,©½±Fjwêó•£×0ç™³Tu#=ºOvñ6|¹áËGäË—ô90Úç‘¤ã¯kÅiBÒ,ßókBÑÐyžbºÜóú‹t€ò[Ó	¸{¿ý÷ãîÖßƒ³ë÷mJ¶ïdëï]ó°µÀ0¸]¿ï·Os4¥4îIW»¥ÐúÁÄv;£Ï‡±ûá ›aobMè5Ù×‰öÌ8„´!#˜ÄVÒ9åG«5eH°ô‰… Ø9ApÀbõæè¥åÄZ35EkÐÜuzÉ¶Èz/¸qúë‡­ßb>Øz=wlïoQ‘ÿ,¾3ômØÆñÃ¬É9¹ïøôÏûIwÜiÏû-HpoÜº£Q Z6¼¾Ji]“?gòÒ/#£†oÓ¯³%îÇÖÇw7¯>¾ûpóþmk’ŒªíCë‹vú“Qš”Ÿ¸ñè§«âhüo­Â
ùe2Ñc4šþâCÇû# ú³yRÁýjV§uS¶Ûù’ÿ¿õ
!æã¤3­¿Üüöñ‡G5ßK˜æÄÝÔába‹HeáÖ‹ß^l¥Ì¯ÒZ¿“5mƒœ°©öû²6MµùWWKÂØŒ+»ºÿiºóÓ1µ”?©ü•>­ë’¬CçwáºÆ¯6Z‚ ©´®Z£ÌÒœ­´(§B®HZaI«oá'jžNa‹¬5¿Úå][Ê:–õs%ôÄ«åpB¡«øz×Ìÿ`¡+e€©m`4=5ye¾s[yÉ†kzW›YœgcÛû‹ew£QoÜ½ÛŒ‡ÐõNó!`¿·a8ünd¢ŽÆ {Ü·P‘çÚq¹«iÆ½é÷]ßþðµvµÑÈ:·-¯eœ¾Z­òƒ[rûáÝ§ÜvÆÉy	ö°æ¨‹­€ïŠãAÝZr7|ŒûuŽælirËÃe[Ê`¹ƒêC–/WöF#Z¿ô?>~¼¥0¦}jev]®”ùí.WÊ»\)Sg°\é‘ð—SI×XŠ$ÖØ§A×Õ8 SuŠŸ_?3¬petD®Æz-Ê×:9£QMùvß%u.ÓEyX°?>¼'ééêšf~tëj‹,EÎåYŒ=LQloÏá”6åZN)».íBn¡D×èG*~´V)ÌÌU4CXfŒ†ˆ¬¶AžÜŠ%1œk“B!ç-µÖJ)8B
Ë(Eœ'yÚ™Èì¦@.7ãÏ0~²ìOüëoÅü·=€ 2_¦ÇÒ—I‚60üÂ_økEj8—•§­Ïüˆ¯ÒÏAÊA¦5´s74÷§•ÍÒÛÌaügñ*¶I(cœÊÂ£"”QÅ$¥k…2ÂÁhI(Ó„+Q•É4Hnt§H6_ÝvyšÚÛÎQýç°—-`Gç#{‰gõÖâ`¡Mi¹G—‡_nŠSL²d1¿mrVÍKeGO9’]íx‡%Åf×O£ªíÎ¼Rá9Ë>%Y©[í¼´¨<Ò/Œíì81òy"}Ûõ}¸½B|$„ÓLÆ€‘ðžF•'^GdP‘ë­À>«%eÊÆè±•Ú2b	4šˆŸ ;M¶³Ã{¦x[ÆyÈCÿuI¾^çµ|1°®sac‚ù²I8Ç@³PÖ9aX©|XŸž¸ÞÏï<1´z†0ví|@=ëñÒ {§áÌâ¹²¤CÖ‹3,]|$è —ÎÅr"ü×¼Áîlcpåc×£Â0¤rQX'…Ä*Ò =ÂQE!•Š’[¬)f˜l¸æß,‚·^)ØbáÛû6L¯;‹ ^×Ö±lrº‰>=§MÏd½²·Êª±¡®æÝµF÷¹eF­â¦&Å‘’	½,æ1¶E4 v:÷¯ÌÎŽTí:|qOQ“wßÌYþÎÚG˜ì Úç„—Z¡¶Ëjåºm™òlßrÊ¼XÚÙË’ÝŸ€„ø¾;}oMXÞÆ#Ky0‚þ(„åÁ2¥iL‰ËŒ·!£5H¥$eQ÷¸ÕlA‘¸ çÎrn	Ûý}7I¸_Îü«zízhïw¶øÿ³÷®[nYºà>ÆÊ>NRqGDŸµf–oU­nÛ¥¶ÔsÜçV Èd‰I²RRú×¼Æ¼Þ<ÉìàHf*åVu;•I".ˆË¾ïo?Nig•Žs-·Y8PÝŸæÐËV+õ……?57T³³º'¡lÍÑžˆÓžE'A¿€>Šul0»¤Ú³¬š¥9¥Îš9ÇÏ­á„	åe¡4!’û"'Æž"Î[– šš‹­¼LÛ.¯7ÿþíq²øê¾OÆX6)Æk†ˆ¯XÙ¶B—¡VÒ-Ž2y˜­›çZ	ÚQð{Áƒcwë—Ié—£$ù·U¹Ll6[ÁÏ)ô€š¶ÃjK{9ž&? ÝÐzûËÁÆažˆ“ü‡oÞ–³é77@—ñ{ ra™Ÿúb¼,1Ð£?AÜoï†ä¼IõÖðñ.Ü
NË³!îr‡¸3<LÜäFoÇF
šêí44Á¥ò$\o¸Ãx¼‡­ûS$¥5ôü?Wûõ˜‘’=VãRº.¤}U³0½”µ™j¦#!ï9Ü5t¦mƒÛa‹]¾ë€–ÛñbÖ+ZÈ¨NõIÂ„Uä	}’¸nÝ» ¯Ò×÷æÞ½?f«¢wËgîS<k9æpg}OEhŽÆY-‹%ëÝî‰]Ÿkÿ‘ý£µóqü¨L_1oìv:»÷u´Ãÿý²-wŒ8[CÙ+}	îÐùûÙ…^ d^—»z¯.èLØ\Jde®%µÞ	gAõ´*W…UºÈ@ôEšQå©tÂ(Vh¯9/Rá5;V-¢ƒ¯÷Í¿÷5trô¾ù÷g#4îÚô
Œ§fÛÇËi³À§L;ì‹Ìøô2#ãBöŒÝÚÞ´'’{zuŸN†ÜvëvóÕi¾žŸçRíÕé³Î7…Ó@‚½ðDzž¯8q,õÜ—	Iå©SM½OÑì˜A¬ Òxz,úö98iƒ]!ŽÔôÏÎ¢-ˆýC(´˜Íý¢®üÝ¶Ï…Â³´+…§Rêè\Ê•¦é·…O7Ík§íBÿ´„£ÛûFñ4ý¶@³:ølEk~aó<ßèã¬ý–‡.ÞÚ†uùîÛî‡w¼í=|é§Võ‰™þ“•“®kÕÐYÅw[½É®80á?ŸFð.“ÎçT4¢­%)eVÚ€²}a%?ê\æ9Õ$÷8Šc"…g~UGc¶Ž»YƒcæjNÛgrÅöÔ3MÍaæÍ$et§ð1Õ©¦Zn!D:;	/·>XÝøU<nÏŸ{[œ¦C¢ž;§DIÞ?÷QÛuÜ§ïÆp§ñ=Ï¥U|DÕˆž/ŸkÐQ$U^<w„³œYO˜iJ…ñ^X¦
•9í<1,Ï¨sÜ²”PeH»³tÏòÞNÇóÕÄ7áúµ#‘µ¹Qûö•$hÃZg)"¼&ß(Dô…fèE<MDøÙd&`l)¶nºÄÖñC¾ùt ¼iîøÆO*–@oAuZe£|vÿ¢qX^lœƒ¤Rkb”b¤A*uj¤Dè!R©$¥Û¥§„¢I%…ÂZÖóV'³‚EéN-•ð•×ñ-ùiú¤i¤Œí¸#e”çQÆc‹q±›SsÕÛdµžL<JN.–õáú>1‡k‹{_9NÊ‰{wÑÄ[-RïJèy¹ôm`nïÊòÎOÚåÞ•ïídì"&XÛS~áÆEq™Õ+ªé¬ôÈÚöP–»²:âë !NšlÛ©þ6•)ñ„äÝ¹Š"Žç”P
â—uÜIFO]ÎµNÓ¹4Ò°"Sð¿‚°ÔIîµg47Š«ô˜gâWx×dKÞ=Î5vÄb`ØúqI5îÅ=†ÀQpK‚ ë§/à`ùò(„—Ñ†h²•¥\¦ÓÖp[ 5„kÞÌgæ4z×Îñ†s0l?ýÚ@Å_!ê`;‡U?HåÆútZš‹%[-Yï€Äí=lÜêwÍ¯%Þ>‘’Š}ë)h…LÙîDŠSn4QÈ)&iW
–)PÍAE”’p¢sM²¤âÔYxPˆ”ñÂÙBˆc©²J"¥¼9AyM¤ð#Å¹¡Çˆ”POG¤š'à³#R—jß§	ÕÖò\N¨„é­_‹Pí_õëª²¼$ÝC’Öè>‘•â[RPž[ÑL	žåŽ§ðâ d:“tsæm!MÊ­”@™r§(©³;‹Œk§˜Z®Su,ßã»W/wŒ}x	üG‹8³-NÃSí‘r¹hÚòXØ?Æ“‰­H×ð?_¿ÀSõâ—øñ‹W‹òË¿¾~ý"šÞVqÛoá`¼…ÉbRq–ª¦o>fÀŽÀ©Â²S³m]”Ì0¶§*‘ä´m±yCt(‹­‡¨‡wð$t#’ ï6Ò<øízFÇmv×A&;3Ed½D–çRJÂ@JÏ£tqÛé\?ZÑa¸nÀ«}‡½"yÏÜ½í||¾ ¸	D0ÓÛñÒ+dá÷EZùm.Iî9ÉzÄlp®x‘Y›TçdÂ<3ÄAF9µ*ÍáB¨ˆ­yži«¹% $Gå1ÍõUxñˆg‹³ñÌÓØ+¯¬ô‹­jQT¥ÒfGQuþ°ïE†æ˜í¸	¡ÍVØ²¨n”qsx†á»ïo‘ð³É™»xe.–1Çô,¹™õ	 è³/|«Mñ)†?ß`ºže@U½®sübó­2žYÏTwRj¹å”©$]¥UîŠœäèyÂÈfA}N2O\ª€&)Pä-]^éÌ‰L¯Mþ''Å”q²k34Z%ÅÄ|BR¼Ùÿ/¤øèÊ\ƒŸ'®^Ÿî^ø'&ÅûÃ?gR\>ä³ùí…@éHV‹“^Ç‰“QÍ­#)Ï”sJò´ ºê˜ÉµÌ©3©†>a•s®3ðwNæºšZª²c¢ð¾Í³zÿÊËž¼‚+v»ð¯ÿãçÄÙ¥E¨Ä:;_¶•¢ÿñ˜I¢ÃüüÇÆìŽõø±Nq*ÁˆQýÞê"BH‰];²”œìf2CôV"³0ì4ÒÔÞ	†£6l=d}Ã–ù·1BÜÌý¼Q¶åó±I¬W¨Ëê\^•3¥½ÿ{y"å°9é:d·äkÍïu¯iy¸ŸaíÑª|¤66zï˜p Jo„¤ŽI3¿g~:ÊYšÛ"õ…÷Yî£è%ƒç•RÂ™g…?v€úo-C_ÙvËG¥× šŒÂ(.‹ô:Ýæ+ÛÂˆ¾2¡;ô%HâZíä
"HÓˆÌi*™îJ¯7gjÇ°ýXôÊ¿{ýs‚†ä«Egã(;3kkm:­ËÅaZŒÞh»[ØôÔïê_•týs)‡ðÅðÞb	¾s©—Q~n•w"Œ³©É+h–R“§LD
JEÎˆõÈ“¹4w´[Ns
²¬Ê¹ƒÿå©>†õóÛ«_’øRÉæU“¦ƒ?ºü¸ º°Èìô]>»Ÿ¯06XÊºHûüáŸGcŽ´$ZjÅš±¡’P¤ýˆ@©ÙN
œ`Ma²«+ûÈãÞŸ Ê?é|ù­7¾XãO¥Ðg‘—í}h£0Ç®g‹J©W°/Ë.³hƒ~£.ÖƒîÄ	oÍîlÚw9ÝãuƒéIóõB°4+7–q“æFIËò\i¡Nfšç9åˆ#Ë@„ƒÎy"È±iìÃjZÍÕ»:|~CÛÎ|híð&fßÃ­¬ËÛVu[Ë»Ùjâp’Ùt4ü×lU8-“©¹ÉEÂ*»›)ÜÛé
>|@¬hœEUw·îÿŠ	g›ÿÊˆ“Œ—£äõ¦K[ó­ÇÃ×
ó(äýhXKEJ·Ãà#–!×B‹P
Áš‘ü\ËŽ»A¬ù0Õ„ús‚Ÿ<úºSi.äy‘§©ó!"ÒÖc7š¸×KM¨Ã²1úå@B‡×èPõùÐ ³éùÏ‰ !½¸DsÇ`·º
.»ŽÙVæÚ2—òÜ{–I úŠRB,3Æ1A¹tº°™vÐó™ÕóQÓBYorR°Ži¦ ~¿þŸ¿‹+ÐGio¶z\ùx³Cm	¥Á´*ŒÞ5­*£’VÆÃÛÚ:#4-ÑT×‘T§âte—‡)„q¢%ñ:‘øW¡Á[i¥½“§ø¹±6]ÖåRb­RÆÎÓØ·7ñTˆk[Uý	èÖyG#	æv*wFk¥3÷RgEN¤-¤ƒK*åðŒQÚs¢¨¥Læ$×ü¿ÝªŒŒM—P42êÚÞô|èÖ™–Æg@·.QöOÓ­«Z?9Ýzd[cCv|r…›a,hQ°"óˆ'®r‘U²$—D;‘ç*—¾@«RkRá¡’§$M©&ì˜+¤a5ÜðªôäxÖZj'ëc‡~>ÞÊhw½×m½5Õ[vFÒ¡8Òîyù¢¸ž­¸v^¦OSÓ»‚žy6Õx?^,Wvâ§ï/’väˆ®C¨¹Ž¼“îœ—Ïœ@…Ò˜ãC—Z/")‚qfsF´Ê´¶y¦YÁAêXÇeí&M6KÑßÇÚhü¨nùÃ|<ŠCVnÖùøEsâ-¢0;¢ÑéaŽ¦„’ÐVÐ…áñ­ÊœBSÚ•ÚlŸ³a<0Ãö£òIE¡ÞÈ@—ˆBÕé¶2—È {êÂµ½‘­ÂP_¢pMÂvAÁ•tDÓëZœŒ
—Ç;-A‡ã4wYÎ”ÏµÈ+,ÜCgÒ´È8…n©-¨ðhæsÁ,wG©¿›FÑùÂ/½»‰Ø€¹s“T˜~3çácW#Iß7+œ„bUq–ÙÄ%õzÍŠà2¨ûˆ.
xl<E7+Ð€lRÁ™âc|ôq0O=6ƒ%õ¶Dø¡7Í -z8&¡A	»««ÜÛéCâüÒŽ'åMà„Æè´ÜÍ>B¶Ž§Õ{–ÉdüÎ'nœãô#Ø*`”ËE¨Eóa¶xw“ÜÙ÷>ÉïðN¸A>›–pÊ6›<Ü„‡m2™-q¢ÎÃ’9ƒe+¼]®Ð[h[Œ§Ám’y¥`îgï}4€7MðMGƒÁ¯³eµ.n_4W¶:èŒ¥ºVÛ,/Õ‡î¶¼Gõåê8.¸{}¾ZÂ»øÿV³Þ&8p[w¼G8vUÏ¦ÙËp2Î@Yü×*$´é£ªžmx“”¾v)Ac˜ãW5†ÍãæìGh¼5[lI
ŒÝ¤ qþ§¶-šÞd‚D“nŽ¢ùHÓæ¹î¡¯ª«OÂö.Ç;®Æ¥|.Õiß"fvTtj‘Šaí¿ŽómF½^•ŠSA˜}XSÛ8]M¯5^zÝ.‡bBŠ7¼eækq—øXãÐ”ýt˜Kß‘€”»IŸ¢B÷}êS*&žØi¬YÔ¹f”t®rÔäcOvÀ/)³_)ç¨»’Ù=ÐhwJBgÃùxÞa‘J¿\Í—³ÙdÏÕ¼=Ð^aNXv[|`”¶>R‰è§ž8ÐK%fß"ùjÓ`_â¸:Ž¨z:O• Xn’‹š—iú­JE‘¦}Òï­§/ó^Ê</(V­ç¹2„(ÅU®3MOÓTb0µË(‚¯™!…°ê˜©µæûADÅ2ˆûèneÆSqN¨2$®Qƒ¡¡9¼zXø7(iWº2ðZl®:{ôàÑ|-M3ªH4Æ¦[€Oðçæp;ç4énŒ(gL#hÔ&ËT¡6h*§dÊxB‡ñ¨ígÕ4YÑ²ŠaÿL¼}Öàrxe#ÌY©Eõ^µ1¤¾£Ãp]øà5‡¥n\.¿Î+©ùô¨'{<¯¿§*øøD¢ÐUtŒD*®Xánç"ˆHÛ:‘½jÚå·.¶ÉÕ­J<n'º‰tèø@‡®ÂSÍÞÎ—[^=üòðú?~>×CFzc¸½â-ÍWŽ¥iVäN4²‚nœTs…Õ	TJ­ôÒz
¯-Ï‰É%÷"3²Ù1°ŠÕÂ+á ¼s’OÐâY¡™·D°ŽÉ¶ÉüDÑzy;³“(ÐÄgÆå Ay}³ù0”ŠžOlîc*rÂƒ.¦F´G&0Àq èçÕÃMòr1›ÆOøÔ¿EäQ-g=JÕ[µ…¦F¦»!BÉˆªílëT‘T6åžTÚ1Ûz}¾‡á 9û„€½rfî(-ÜŠç6êµ»Œ`‹Ï|ªy¶3ï~$§ƒ2¸(ÿ99!3èµ¨6"Hïþ.ïÃí¯‡¶Á†v¹\œDœŽÄÕ™–S•‹,…‰poõÞŠycs¼ÃKe´£Äs!0*@KÁibuú(óˆTß-M>zEf«e’Í€Ô-‡¿ÅIÖ©òéVTcÈS¯up†å[– ç³‚ß—Á?4@Xð±äw3ô2GY»jP#Æ¯‚;m2Í©a}ÑA5ˆþ/t-gùlòHáKÅ8¼õ©€ñÔ(ºËŽ¥NJAw 8¨RJnL9p‡ŽÌ!LpÏáçËæó\‰‰¿,æ©ÏR\¬+ÊÏäaš­¡}‰JömG£vã}»û\™Cf³ý"²Ý«ÆÉµV·rk XÛÛç,“‚IãwÜ˜\©¼P©¡ª`¹g…RŽ§ÔY"9­Ãg±®¬×Ç@ðb(ôCÜC\Å4Ð;ÿÑ°Tbqöq¤F-VÑïqÉO`€Ä:ç?Ì’{ûŒ ƒ›TþË`ð?’`ß”]+
ÜúåÒ\&÷¾,ƒÊb\ÎnKlhë	…© u`/¡¤øÏ?þ–|ýCä?åœøäGh™ü[SŽ=|sŽ1”ÇÍsÛWY¡É$6ƒc1žÂò&~
„Ü%ÓÕ}æÐ	NØa5Ûx¸ƒÝ$~™?*O
rçl6;™ÆDÅ®ï?åì0>¿$T‹½t c“M(F)§BuK¨nÏ0\ƒaëèÁ™¾ýãg2Ò}.fHL“ó
†TûÔN]{Q²ü(y‚¢ËÎöÒž½=%7jYvø÷‹\—×ápù»ùhòEjQE^Iÿ±X‘¬°’Jž§‚™Tf‚cå`y„e"Ó Io3¥ó"Õ™7Æi!A:V‰)ù¹EÈ‹¨Þ{£ÀÔÁomF4¿nWFÎú>ÀÍŸÐ‡_`¬Ž³©kX,f÷ƒå¦&!Üæ©³WÝÍ&pÛkÿ_oÑ)ˆþÁ« „Ýùpê¨ºƒó›&õ@m2¡:þ8ñ"™}˜nš¾xûv</ß¾Íbtb…r°ÆFhâ+À|¾_
3÷v1ž;¿IÆE¬&}“¸Y¿:­“ÌçvU†HÊÃX‚ áÂ»Ôxøë§W‰`dðõVÝØµ…Ïù÷/æ~^â!_|ó	LŒ[Ö¢E¦ûZ¤:œ¾GI ÜipkÅ·51]ãôÖS†HìÖ;Ü'^ïó-òÕkE.åÛF©³òôw¢¾CêÜm¼Žu%zûù*ˆõY)ËÉ[è"¿{‹ç:¿Q6«rìÁ¸ÇU™µ0L„nL… Ñ^3‘¹dO	ÁŒê\ê‚æÖ)TnS–rÐsÍŽqUä‰ðê£íWÿú›¤XMóÜnM³Û™ëkŸ¯L^Ïòw£Üíðà4³)¢÷„ànø¥ŒO'y˜­’0«ÀúêÁ,î
7q	CÛa)cHwVÞ#‡^ »úp7ÎïBOv\cS,ä‹º*xðÐ¸xÄ°ŒÒ‡·ôÍ­GßÕíá\KæF´ Ñ oö›Ø4ä#ÌnÇ9p>_Œ§1þ·¿þÀ4Õ7IUŠØ&Œµ\ŒówAXIa!0R`×œhW¿F>z]µbß`Á#÷&0LV°þ›´l*ì bÃåˆöYTëÃz×AHtÀ‹ß<¬ÖCÓL°=ùhùÅÖ¥ŸÛlËä¡ø¯ïQ’Å†½9AO ,‚4q\ÂÞ¬Ó `/_Ÿžr2¾½Ã´¸LlŸËÑ#ô¡T š­ðT™ 6¸Üt#ŒQ6{ó@	‡5{L$ÜÎ¡¥nþvŽG Ñvr7¬èÖÍ3uýkÅü?5°ß5VéòÐ-.ÏÂlßä>rÂ¡æ­Ø¥}Ù^';Cã†Ãd†õdZå…z6]×æ™X&6¢åégÇsëÌìq¬åùÉíX¸ç	QZ¦Ú{c©VVfV:aro¨Ë¨Õ©Ì©Þ‰Üç©^ÂPkmn/q‚“cYÚÂ·=Êóýë¿ÿMÙx
ý9C™fŒFêHÁ'þ<9Œ©‚Uf^9JêæÐåø*’'°ÇÞ€èaqQc¾[¨žP€…qA±ýML@ü·ðk¹šWºÿøûÌ»`Y‡ñëlÅn¸XØ‡u"Þž]øþÙ vG:{e¸Ù±¨¢S¾ïÌ%¡¬Yã–«>¬ÃQTê3•òO‰Ö}±Z~
©ûºñ?‚‡Ô7î|Œî¾JyÙ-è¹ÿ ç³¢3ã„›MZr†Ž´þ“FŸÏ:s;^ÌÎ7êS5ªáXTó¸8.\}›eÊ¦Ê²î¬ÓûÔ‘Ô1Is.2•e^è\Q,ž# %V).R+¹ÂlårŸ[ã•,H–ÛQM,©*únjû„8ÍN;vð¨œ)Œt»°ó»qU}þPíßAæ¤Oñ&^»¢„rX	4¨ãmó&Xï­LÎ”êœ‡æ6Œ‡dØv<z–$†7…ˆ?+î„Þ¼î«ryô‘IÏŒ>
“l·Üöºú§ëf.¾Ú ëxØ0x—Q»Äöíð"ë“Òü%5çZL3"¼?#Ö©‰ÕÊ[Â4Ó™çL
#
PCéAÍsËÏIAà3œ3%Š1E™s„;
_µF}Õà1‘ä”Ì«ØO¿|’X\¯Ú
·‰íú ¬m^wÙªun8›&ë9”³hIÞáÙ5ƒ&h»aõ”ž#6]ù0M1²É‡cM@C“v®jÕ/œøÓqb¡{C‹½»Åš#ãÛ«ò¨æyxRö‡|&¬Öw·Ã¸Úmï³Þ‘j?ž§dSmîc°½;»p~y¾ÃšŒÄ•“`´g™£Ìk–iNˆ,lŽöTP¥ÎÓœ“L€>i€û™IP}a2þ– Zj~Ì]ý¼©Í¹$ÁjB€WK<ÄK}žë £ãÌ¯G'£ä»rPB/K¬>|·Ùbö¡ô‹Qò÷¹¯ñx×ùØ,,wúÅzÇ?	ÝfêHYÃR®w›&†6Y›¤ÝŸÕô†ád]/­åZììÓagöZ˜‹ úl#h5Ïv“d?ªÑAé«F=a	Åa;â0ôíïIp®ñ”ìeåÇWEÍÖäýÆc×ÉÞÏg0Û Ïyž¾%±éâ:¼'™Î jÊ°þS©vy^ä™§šB¤¶°Æ	E5|ÏœôÂk¢Ø”öÔÈc¼ãQê×M–¾IqÆ[h™-œ§j=š?DàÚzYuK¨y[†˜ã|kD·Zl²yÒÁ…’—KŒ­‰ ›¡‰ÚÉC9.«T—Àñ°õÝlönË³,:ÈŒ§Ã‡|i…¨¡eˆ•j‚j†ìü~ GähüÞ?RmµJå›z—… .Œ·Ž,VàE…Åô¢^¼ÑÝò~ÒÊ-™ØÉ1‡µ@¦DÊvr@‰Ð$ÝBF")éÄ[OsnÃ°õœï/ÿ~¿ÀaVúÍg™TóÎ>‹t)ïäBÈž&Úl5up¾þG9üÇ?W~ñpJ± ­ñ){Ý|šÍVÓ¼="¥o§w³å;ÿÐžJFmµèöû—³)\x '¦ÊZ3V÷;Ô¦Ä,ŒE'-¯:1m“èÉ:×E±¼â¸µôTÞaØŽâSï¿àXõÉ»®e½æÕŽ8X“ÔV™qýÐu$F c«Ûç„xO¸ó‚žf"•\’Œ¥EGÍ•T>—FeÄ'ENMN½.ˆ•Ô*GD–çì˜}þG|Ï]$úµÀ·XMQ
9.+n-×IÝžê1ÚÛ§«{¿À|èÐüÃ»×©l~ŠdÔÔ»$NëÞ[`,ë\ºª¡a ðÙ²ÆÇ¬Â·×è>ðep+Ôó2éý$Å{ÿ<D!q<™`¼Z9™}À þ;CÞþv5±Äù ÜBöZ‰}«Itíƒ$ûEY‡Io Où…‡¹ñ]E’qY®0ç‡‹j(Q†Ùdú ÊÏÌU",pÓ°³ö_€hžWŽ˜P°.ùå”kqºË³ÁRhœuÌ¶ÃÖË¾É ±~ÇøáÅß~»:À¿ûþåðPu‚Yécu|ÃZZ¯6Þ48à8X%œF©ÓÈ—³à§Y;X7ß=@ëµ š‚«ØX“*Å!ŒâFIòÝdÖ¾tûo”ÜZÐ0lòÕ[÷Õ \ÅøcòõWÅlöi7Übö'œü?üf½˜Ñ(A°] &2˜Ì,¨0Ë2¤?®Ä(ÄÞèýª+z?ãFð ”¥h;mâŽqÎïªU„3ø\ü¿k Q¼xýP.ýýŸÆŸðÜ~ºCS@	w£³ˆÒðF-	:ˆ‰È²Ûéµ;d—÷Øìç©êÄÑ¬ýò"Ç§ßÏgñÍø#œÁŽ’õï Èö€ãÏþ`1òQÊ]<Ì—g6øý‡ßþëÕI¦³xûz·nó÷W?ýúúõÏo)ü_ÇA]6”p*:/w¿J	õÓ½#rýG@ú¬;0÷>ÇàÖõ«â€Ï¿b6Q)âþdÅƒÃí¦ùjÂî‡>cMË^û¸~æö+°®gzn§~ÒkfOüMC1*hžv±üçd¼ô¼Ï$Ë¸„Ý¯v£Á÷z™µWÝï5è.Å¬Ï>-Ç‹y°ðþÞ¼üíÕo	r£Žmßõz™^•P¶žï}zþè3Nõðÿ†AÞóc÷B-O]„¨{`ÎUG}Òr4õ èL{úAß…0Å§m€ŸEÅ}†I±©1œ¬™S©¨Q$=]a§c¯¬g·µÆÔýÉ½®/±†^¬üÖÐBSc´•¹åœÊeœ§B2_¤iªŠ”yâ…L©ªÈU–›Bf…§Žk%MÆý1ïù¡håÊ¦„èQÜÖÚÚÓ(ÉÓ7Šyr|¤UÙknb‚]Äre^¶]ûÏÄ²Ävñì[–a;Å’¥Rñ­êÈM]ÍJï(â³4+m…vÕ[ø'1,¢L_LˆÃË5Bðø5MBW1ˆžþ\ä³çcÚç€àf­ÂÉEÂÇÃ{›/f -ž\°ë3¹nîàø0=ßú©hümÒžwwvžß^Ò£ð1 ¸Ë“1¡mÎ=á;ƒ‘æzÈqW”Ë¦çW•QyõªÌð1¡3F\ÁS•	Â-Ü1/	É,H^…^d$Ë½`Üî¼g™à*/ŠìXþõ¿¾Q‚ïÆËŽ1Œ°0qbãáBPâYÄNBY>,Ø¹p|Ï2<T9ƒd†í1ÐgŒîÛ?fSÄc³Ó²Îè€×ý ;2Î«9"w—Û£¼yýòoÈ‡w¢WðãQü	¦JFƒÁæÖNõlÂßÝø6J€“Ù‡d‚Ä½/mc-%|j¿U2 u±VO=¼†CØòYtÖ4\¥›°½áM¡m|©ˆm‡u9à]Ñ)¤¡ª:¿žH=,!|ý¹ƒ{;ÏW“5^n®ô[¿øM„‘­Âµü¢ë>]xÃì•e¢ú0@©Ú­¼A×¢‰›Ji*Hç4x˜ç0ÞÕgVyã²ü„Kb,»/É¥Â,BÖŸ‰w“<Ùü¶VÅÖ­ô©ØKÙ¹Ç9]~®0«n–ŸÍMƒl¡®kãà¹“:—Z!°†”™”¾…bŠÛ,%…§ÖhÂ´W‚Ð”{E¸HÓÒØÌÖÇ˜iÓe×è›[Zóœ|°8ë’Âí€ªÍõÛ7t¸­áfÓ­Ñ‡Fl X=çŒëÇ¡HOCÛƒÃEœÖ¿¸ˆq<cˆSsøÁÞÛÖc>“h¬²ev™"‡ñ¹¥Jù.B7—œ3*›9q\J*eç”o\Öh)P',O±¹utŸ†Õt^‹r$ÈÊäL^³<©@ö N­4|»–}Uìø„vˆx³çËÈøÝ”Ï‰–SSøÂ»¼°H¹`>%œ'´ÏÍ5¡@áANy#%”3k©¥:óJºTº‚¨ëÑr•ÅÕ:r{ªÅÞ’>yßžP±ßžÁÅG}Èsí‹²žÇª¬ë†Žñô…hÜEòÓ½ÍŸK€&°¹W²áK`ŠE·4á3&«lÀ˜AT ¼kñ¿õÒá
Ÿ‚+€r>Sûödœ¡£ÕÈî6{îIûp|¯“…ÇGUÀ`³Õ2¢ë¬ô+qÏ„Ì„’Æ3©³Œç”q*Ïæ³ˆÜDÓ«ëœfÖ*§¬qÜ:¦%Ôá01è96-fhhB¢9ŸX¤à—É>±­Ö¨³üX- vª­Öš¡^øºwhÿn5_“ìX²×ËÅ*Ç\÷ž¸Ä„ßq™x[>¬ù rØh,Ú0K>,ÆK?J‚µª¯.M€ÃÅT‘F:ñÜ.@}X¼~SçXÄÜäi,hÀ1î‘ÍªÄMÚœ¥2ä£€§ýë›_~¾I~ÇØþÿ9ÝœÍ–5·Áˆ²ºH!f .°$¸ý˜ß2Ø÷Ba„ºj‚Œ—X×à‡Õb«?y¸	­êwX›ñMpÃð]b}	d¶UZÅ—ë7¼úéU™|]ñÉŸ¦w˜lj*¼ZÌæ³ÒNÊo`ÿ–OÄd—)Ð­vw½°êTÕÅxÞnû„Ô9¸$ÕM{\[_}UG‘úÂ.¶7=J²_ú€ÕNÍ¥8Û.j¨¤LÙVJ„RŠò´sJD5å!’‰a;èÃo›Õ’Â|ÿúÇðoµaø+‚—ðo?™uð²êí½îòâ”÷Í¾ÞÝáö|æ^<¢‹}°õD5íŠ\Ò»¿Ok¬ºeålŠÇñÁövç€3±÷îÄùl~¾ül ß^àü##VOŸ_IÅ’W'U.È,á©O©ñ©m6ci.”Ï½N•$ŒäÞÜ°ÌYú.)—˜vìåu¹ ,(På*Æâ:?½âŠm¹Gê~¤žñûö¸(R¯cUê ®T'­þô*	}ï½É—l2<>â	Is”0â¢FÙºçªdq3krgÖƒ†€u”ð%Vó'Ãîªc†¹ÍìäE½>ÿW+·${þ1¦cxqÊä66¥›¯9¥Nëjª¬g7ÇyØ~{0Ê
‘äóé·—W–ç:Æê‰ž¨ì×‹>u`~õ°§*
Ž:€$žÙáçê»©½ >}µé•"97¹5@w¸&Î;®¨“2…—pæ\F‰§VQcYaáÛ,E@A¬C¨5)Rj°™—Ûé½«åä_14u¦f.pòõËýî›ãŒå»&:U¥ž²=NÙm´£.gù,0…5I©ªú%Rˆ~¥ñur4öË"˜TêÅ/Š| (Âã²‰°ŒŠq‹ÙK_¡TË0îW8àñÊ <	Cb [å~àÆE 8XbYâÕdY±æ ÇVeôÖ‰üáè†WXõ:!ž”³`žºjÔ< ZZXÁq@ÕI¨¢Ã1Îm>±•zZYx_Õ@™ðòpb¿Ú‚+ÞÖÄ8†%–­–ƒ¼Ö©«¢~ÒCUÅdœ~½q§žŒ?¿û‡{ïc¨¦ÜgÈÇ*
‘”lk¯E´¦¹Xjª;ë®87¬E?l½î=˜ñõ?§cDÇø¼øsÇ…¹<¯Ÿö¿nlÝ‰òöÝIyŽŒã`g²#/îÓÕgË…ëx—(}èÚG‰>Ÿ;•9^dNRáuáuFkSäF+m¼sÊY'ðc•¦ŠàÓ:å…Ï$(}ªG•¾†6_+Wß&ë5XÓö*N-Þ¦Å:Ž2–Ý™Ã6NÆËq,´›/@¡ó7É:Z1º)«ê ÿå«÷"|¿¨¤ê´2dNýòÃlñ®†ï©õÅøeP,Çë™ßÛw«ý–Ë…Å‚xp,> 'ZÎwhöÉ{»#8ÒÒ–ï°àÁ$D‹Âd_¾ÚŒSY²ÑÈ–A”>ÜùXûn
ßÃäB%áTùhK8CÀÛ2˜;ô±Ä÷õ°b1p‚Al€qæ@dÆy@>ªÔC%;CY|œ0h˜ Üž ¢ŽkL;<×,–(ãrE;9ˆ ÍNçóqÓùŠ¿X”V_,zãöX+9ÈZ1Æs;8‡q.xSÙe\²Îð›ë	ãE¶^áÏ¤îEµß‚\œØdä™á9›ê¥'4Å>Ô¹ƒ­Ç=©¢Ò6èÌ-F{F—Ÿ+ÃýÇxúËÎW|iÞ«¯ÃkMáµN3QäDf6/|J\aS+0èœpS`X¹sN;*¬d…ñ©Ê—9A ÀBáµ);“d¾ZÌ¿méïçúé-úï:ùtÿ-¬U4£îv€îWÔ'—ÌÑvZ'_`^Ä1pðã?àâÍ‚ù4ö™Âÿý—Ÿ“òaº´fÝZ«\‹þ#2™rÍjít0›GÕøÛÔiAÀ·éûñb6E]£‹BÜP íôû˜!u²öç¢çy˜Ù…[¿Jí®ðÑHû.< +‹3¿	ý–w³Õ´\ï'Éù:"ÞÍjÄÃ¸N˜ò—r:ª¹‹˜:Rc‚š<ªêg(pßÀlaŠqñ ñØl>ž×¾Tânù‡· 	ã› kn¬Çãº^ÃÁµ˜ÍN9¾W—ky$È‰ò•2i(m&S¦§]cœâUâ¶ÞÖ~Šë§N²àp×îKr9Š57gúQã$ÛyC2Ü©Æ!Oð#Ú5¿¢goÏ¦t{ÖHaþÛO=±¸ënbtOiV*ê5y=Ê<'|-
‡ejYžQL<ƒ+B³,õDûÔ8+@³Ö,c„Ã— (ÂXFˆ§NúBšcñÂ¿Uè»Çp#Î©ÄWÃU„ªì$Tj‚W<“xZ*ß­¢p–B1I	?O«åv@-7
:îÈmð°=WhŠ?/â© ,½ñ´7${Üè?&ÖÓ =t€npm|‡áµt€øŒ{kÔè‡nÛÊ!Þ"U[?›ù012µ ÂTKŸ_@G¿€Žú/ £_@Gÿ€Ž>kÑ?!*èp>ž?ÜùMa×NŠÖÉ&Ûx:÷ñþl¸Bk[×Ò½RhlA'Yæ	-”(
¬"ëRVd4SÌ[n
PA$· Ëe:s2-¸O%eŽæÚ†ÑæÐ:ÚHÊ©cX€€@U}Á^à¿åd¹	ù)©x³ð>ùîÕËãŠ.d³à8Gi…1¢É±J°¬‹à4Õ€k=-žƒµ±UþèMAcO3ÑÅ—Mu“§Ùœ6ôŠi¸òÐ…PÝyÐ¶‹!JëP,œôï¯ìòî&ùÍOìÇ_ÿv3Àå|}oo’ß_ÿüæ&ùŠ_Ã<ï±ÆV‰½™Eý7_ÖQS˜Nt“ÜÎª©×‚ÑsZƒ6‹vâæŠó®nc´ú"¸¼.ÚŽ?Àd›ØU R2ƒµb]ÛGµÜâ¶0Âæ¸ÁVë½Z„©8œ•J¥bÍpÍ(#Â•ÖÍ²ô’ ÐEgf8WuØéÚ]…¾ŠÁö)CŠ:¯Á¥ª³f”žéûÄ9¶WfëEmOŽÕ­ªÝÕÆ¬ŒÂ8r‡!»Ù„ûuv¾rT Ò}$Å^JÃÀCNÑKC6ÕGÃØ<Âp	†…ìF¼£<y¨µ±K§—4Þ¼ú46ç7V]ðÃéE/z¯ja¯Ö•#­ÕE­/8)Ðú‚£¢.9áÐø¢cÆ/j}Ñaá­Ú'-½äv¦ûu=»76G®xUg2¿~¾,Ä%u=‡[w½[³®»{¸u×E>Ðšv¾Ž‡w¥B[wdÝ­!Wqf_`¼ØgG³»ãe3oWËq±š€„>ïƒ=ÌË²ôÐ5;<‹Y@ÞdwÂ×ÁÜÚxòÏµºÀñ®Erj®”ìœ÷¤pV©Be¬(¤/œ³qQ¸-Dæ©VV	nxÊg4Mi&²ŒhG„"ÇÀˆ_Ö%>Ñ*gü}¼ø&¿D¼’`ßˆÐì›|1|>´¯°Oà!;‡ŽUß?_æuØÔ¶À­½ˆh¾Öâw"¢õ>8.§?ÔÀÆÕ²sDôæÔñøÛÎS[Î
ÝºØ&ÐsM.N7R*=Ó2Ðˆþi…èE:ŽØÅJpÅ‘++ÁfüÓw3œÑãEö‚Ï©¤ý#ó÷˜å,w~T9Ù F_É;a˜²N§À©ÓÊ0#­S²È
Ç(u¹P@·eNµÉ­W™0™£ž‘i‡i\êX\ùw5Ûûe£—C§]¥‡?~n°»7sâ8wÄš^ˆ­ÌÞFÑù<ÔqÇ‡CÒU@Þ_øûÙû*ëk8ÖÙ^Ð ©)æ™•ËU† ]¾½›­–hŽÇ˜érRý(ù®@¨Ê
D?¾ÍÀæ1m	m÷˜Rº0ÙkQeeØU(»÷0qW&/»Á [-1Ù/ª¢ˆ¿e·«(WÀ\â—y`”Áq3Jþ«'äIG3óCÌÿÞNVU(x‰àVžÿ~6v%<àññÑê]Å’_àÚŸóÞ-6žRBÇÞ¶ã3 ©dtI?ÕÂtõàÜ†áþ\)ä“¸è%âAçE¸X2’ŸÕ“l§ûýˆ`ÖCžà5¤3h~¿ÎžIL÷–¥C„Àøc[ÐE“Îc0Îé¬ÜÓ/»'?óQôÈ¯TíFÑ‚†¦F£É…#Eá¸L]J¹v¹ñÎ¦Þ[ÍDz7…Ê‹4½3…féÆù+faí€ÚãŒ¸$IÓxÖdf]Íq«iˆX#V»[MÇËð$:óCÆ0üím‰@5^æî©«»Oc~ó÷˜±kWhÿ0Æ‚9õ˜äÃÂ±¼L¨ 3‹N|„‹0µW³qbõSÀñî°CÜß²ÆçL¾Ân¿ÂÞ¾z~ŽoÐÖ%À]¼ã!ù:@@‡'ßbŠu||“
õv»P6øj€	e˜²â…ðoFAI€iÏWª«ß1ë9xöírgé+¤‚,©°DASÈ¤@²þª§ yRØñ$Ä1à2Ý¹KC×rX.ÝËvÞ¢²ÉËÎXÌ¾Ç„5C¸	™Üùª\ÎîÇd”Jx	‡ fÅ`>YAg ½Š¿ÔòDÜ¾ŠîlF¸YßQ69¦„×¸ÝðxÞÞ`â?³µ@³NšC±)¦P<T«P-N|¥xÔ| |¹ê*°ˆ„Ì~ú³ùÊe»Œ²·Íå‘T´¡´wL„1¶•ŠF™áºkáJœø0P«a;ê!¦üŒ¨žìÛ(7Q@?/á¥ûÒ\œ+€{xžð‚“lÏîÇˆ:/8ä‰|lÞE8£³RvÿÛÐ',Ù­Ý‡‹÷µTøk<5J¯QÞoººŸ?ôµ¨7rÄÕA>Ó±×l‘B|¥‡$)hn©’ QVäª ZKù¬pó
äÃSg
:sïå;`À4îA¬; ÈÓ2&qÛÅÂ>Àwù8ä3oléÇ%¢_W÷¯"šX‹QN†uf{èmØ„1¯ö ÊÁà+¾(Æ9F$Nšh0 Àƒa‚Ã½¡Ê.²ñmƒª„]à²(”f‡½†îYŒ&²Y,ï±ÚÅ^×ƒØõ(IÖ¯„TrY¸À§~”™t‚œ·Î/×RÃ D‹Ñæ0ŽS\ÐÄ¨Vâ#<òÃ#'Ø9ôñq0vrPÛKöß5•(­ kÇÿP"‚éÀÌª}[WÃ.Á?V‹ jÖê7ƒØ CÝ-ÂÏÜúla£ì	?@z‚©gÐ¢*/ŠáÉwÑ±ðËf’b8 ˆ»‚Í¢zP™ûìq…Â
?zÉÁpOeÂªØ~¹#pª:•Rn§'RM¸¬YŠjÆ(M»JÂ4‡‘|œ²ôò©4pÜ>;÷JŸE¹Øt’‚ y¦W%Ìó—<›-œ®Í›ò(ÃÖr~ª0¡èèÚ·»<)n¤nõq®{,â¡vµÓ¢cÔÒ“¤}í¶ë†$yšvÞÇ¿T·™Ÿ•õ‰\ŸÌ¶¥–|ê`˜ÓÐûÛä«»ß #dDkýi{Ä+ëGRïfy_[ã£JÞŒp.„JsêSï˜H9eÂú4/
/å,Ñ¹Þp¥x,3&·„e<cFi,‡h¿‚\¥tt‚‚ØÆTœadÌr·âöù¬ä«tO¾ÒìpqÉX*vË©¢R¢š™+Ì¤ ÿè®×ç«£8q.Vî§F’Ï]Î’œÀî_ gá&^Yè¹Ôô8àU½8aåP{^–ã•v¤H¹±ê¬3> Îe6Êë”`ÆH.)³Æ*ê#…•ªÈŽÑ× wö%«âdŸ§
›(b|X…e
³wÀÜ4M·£9ô):[Ð×ìóRbë„×?‡+dªÕ%´7ð‰Ù0æ#i³ŸŸ¥<€Qv]ºGg8ýTˆíÓs‰±gå„¥Íhz >Â®á!˜ççFD˜YgÁÒ+AÔ:G5Éu…V)Í”4ÒË”1Q0FeÅŒ3Æs!ÒÈ~‘ëˆËs­¹Éò£îtØ6Zñ‰:ºáÞN-:Ì5¯+vpœÕÂšEóp½À¡“XK¤ŒåNkL»j´ÍP@éfÅòºë|ÛÚötÔ×„˜½,˜½Cåëf’Šy%/§Î|ýêáÕËoFÉz†ø9XÔæ‹Ùôá¾*fb«Ò%1Œ``k¿z­ªÚÙå æŠ1ì¡ùU5ôW.+ èHÍÖ‘EwºD×`uu8 Ž˜JÓm­,d¨Ñ,$Æ•¤Ë–à\Ã…¶_…ÊØ//ßì.©
‹mÕÞ|ùú‡ðoôÑ‡_ÁßªÇ¾®ÛÀ6B“o>;™£÷
_^ÅhÚ3ò0[aÅ÷uÓlçs7^”ßœ°‹Ö°ÀCç‰Ü]s“öÞ1[±•UìþÎ.œ_¶÷ÌpÝûv<›ÌöÞžšs{¬Á¡žñÇdœê˜Ú²âŽu¼˜ÚBúõ[gÓì9kE>Ôu„ý¾ËDðÝ“‡ŽµúLu‰30â+¢Zö¼˜Ý†å8±½güPÕÆ>uQh;šó¡¾QnÅ8“]ÓÞ'oááûÓë—°-‡èPÏ›À˜ÓÖ#Ý›v”ã§fLÛ¬õ
â\B~²ç6ÜÍCý~ðÙº–Ü©ËÒ¡Dò¾¶NúJâmcU®Q±uÞqÈn~Ñ^}}~jn€°Jó±à«ÿó…_æ/2[Þ½­ü”âè|Ÿ{‹Ú¦C¢´tòûVóô W
R[c>'ETZÇ)aMMî‘TšqNÒT
é()˜Ë˜O­Í© }Õ¦¾`¦Ê§Ô3ÅåE«{¡rV½ïñlîJèÏ¡íUÈnÁZ²ùûç¦€íÙl*` i­vÃžA-#[aÏDëÎ8Ö§è‹ö'QÃ4•=Qþ©´°/ÊÒeé‹²ôEYz6ÊÒ#(5@ôUU›}âÑt²º½Ý3è*—„,¼n	?MR“¥y‘S—q§Q2%Üe‚8+™vÊq§2ë]æ¤)Rå3W0ê(üVª•oKCŽ_å¥Xô¡ùÜ» |>Ä”¼ª`yâüÒŽ'-’óú{²èq|ôO¾¨wø¸\KÅž\KÕáp/Î©Ú‘j‰¢Z6…Z¢Mç@¯8¹a8GW++òìç…RÜc.–9™ìkùßÞ«vªØ‹´ViÂ˜'H±ê;Ð·»Ïµ.ë¼|ÈgóÛ½Ê¬}êµõ¨dß…®sëYšIá2Éˆ`Ä¨Ü9’nøàï25Trb•”:M÷h’"+L¦òcPsß%¯àrD÷ú?~Nœ]Ú˜æåìÁhº!Ë½Š«…þdô;ß#âÍ|6Õ¼½7;Ýø§A ´÷ñ¦®:J¾[&ãeávÆË¤XM&Éxƒ‹×ppÿøý “ÊPu®ùEU.yíß‡Â³!ÿ¬*â:™Ì>4J„„÷X~Ð 0(ü"f´m^àñ)q#<^ü½5‹œ™ý‚¦ìp…·“E.•&[õLeªéÌxª
«Éaë!ïýl#üÛhÁòsÖº¼rÑ¹«sþøXy½–éRÞÄRžö´‡ìnç©ªn=ˆZ§ñºV“»Ò¸5W¬Fï0lG¾Ø»ÃË0òþ‰ù1²kZQõôoÿúêooÍ¨#ÎîŸü¥K“öÞí1¤a myF²ˆ× y¢<·ÄHòHšë¹’©·Ä	§ËŒ'Ò¡„Â)ç>ÏAó$6?†JÔ]I¾K™ß7'BÞC˜[x²âóIµ°'‡ÃgÃ@ƒuózÏPØSB
$%;ÁmLJašZ(ì¹b]Ãá·ê‘à‰”ÒE‚¸©O-ÄQE<øÂz²Þ·îS%?• úü™}€÷yFÌÞäZ‘œª©rBÀ/y*ˆ¦™+¼ÏÂHÆ½tšJK"­Î2OÊÑ”¥öxÀ=¾(Bß^ûÅÑÝ1rM¹Ê†x¡É"ó†NRbý‚Õ?;™…Ó}`ÿc2‹ÖÊìÀàh¿ƒG„æ±ý·oÜ©åùH-œós!ÿ·7õÉ¥–0ê3“Zž?Ÿ¾*=ÛKGríHV×R”Yaú”In¤Ð´LãE®ŒpšÇ³Ì2âE‘I3•eR9`žÔyFÔÞY#Ûâ’/fe9Œ¯ôëÍŽ§ãaMÌ"ÊêM2™Ý6 ÓNøf°\Ì"¾Û„“­±\×%eÃªŠèŠò¶
‹nRVx¬¸žå¿`´ÿÝpªÿ‚`·¸Ó	ë˜W¾¯‘Ì2,r[ÖÏÛù–ö_€˜"VŒ¼¶Š®ŠíCàÌ0/Ä®šÁZÀCÅ[ÚSæÂº “Äï"”pý0®Ó¿$îP{·Áƒƒ¸;äîøIßWyÜú:°[p´ã¢ÑuÍ&¾•—ôN\fZ±›KO8aÛlMµ0|+-N+ÑÙ€Éâpï†­7îœ`ÌOB{:IÍo»­ËÅœ6¥¤g
ýNàÏ0ÞËSÁ“Ý#‰†ë{2â®ƒÛzx8oüLšß6Rí[8…ï&»gEôèê™ˆ]2.áí·Aé:¿´[ÇW°+!ô{§§YF­E0Rd©ò4âÌ"H¦RÌåÆP•9G¨É­”Fg©Ú§²8Ââ_?L—öcr7¾½›ÀÈÑàÆÞŽ§>ÙKoQˆ«k€ÕM,wú®Tá
Ë6dŒ±Ì$y7žºr€Õkê”ôemP-aYb.{y’È»q äŸ…DqÛPRB>ù ëâ –;_øå‹ÊDbxì(ù×z*%¼V2‚…^GÒsÀ:‚°§µj^‰±„]<Qá=+ÑÄ»ÐI ÚÈŽqÉ#
 8ã0™*ª,f¼§ˆAïÞ\óp„ÿ¹²Sûk€ØOý‡ÙÔÓ(µAc±äÁäá[DèlÓ ×Ùb€ùÞÒßúº=¢ÞÃvßûüÎNÇå}µ@-¬Dú¿yiû^ýMba‘‚vŸ`ÁÀ›ä·7½	CÿlßøßczÂ¯¯_&%FÅNóJú‡r«2 ýÛXêÕ4àAúˆŽÐñ«JìG£Q”Œ–›•+§É÷à½ÅÿÈßý+ùÄC~
3H3!wåquŸJbR±-è(Niš6$xßÑE8Ïa CÃvôŒ+Y{GéháVì\Ñ¦Ï:\°GŸiL¨fÚÎûñ”N"Dö?fÝÃözwøLs,;àèWï
·¹=»±ñØ•’ðÎÎµÜs¬†^‡±ÓëÈ&DPëŒA£ÐJ‰LX¥­N¹H¥Ê¸q>W45.‹p^k2ÆQžÐBóÓ×ö€šœ'üßüÇïÛM
G›’d›•z;žFÛzµ¼”ºˆÂèQMÚ ÙŒÂžº¬*Y¥­#É~†£8Èaon× -µ iö“*bº—Ÿ«Nà0¥aû!êaÊnæ2~’ÐðK
ºôZ“‹µiîÏõ¶Çy¶ÑÁ¾¢Ëx]LÕ×wÍáÂè†íÊàzö÷ß¦Dm½ßY	]=Õf?¨ïÝKõó~%ÁOX½¯ØòJXß5º]Œ]q¶cÿ1ÄS0Â3“«r«mÆl‘s™yCXî¨Ît‘SkS/œqVk£(sš
É”aE¡E»xð7xß¿¾î%%TM‚±¢\ÎBI¸-Ozè&ÖÉ©Lêh©¨Åˆg&¨Î²€:Û¢€M3ÝªCKhçoÛGî‹<ð©äš*rf·í-|j± öqÆ31U?ªt9ÓÚÝùOÄ»Êøó=êˆ/p]º£ÜxC©“L:§d^Xž¥iž¥JŠ¢ÀŠq<sÔÈÜY§…’Ê(¥ž(Á¸9†¡¾†Óyý÷þýu’O°<[¥c¶ðÀÂ¾C‹ìk\¦ñ«Ê%¡éÅøceö—».˜6¾C¾ì¨n1CüX¡ùÄæ6T‚EØü¯§0JþZ;Øÿe0V³„+ôñ¡žk3Bn¤’aÂGáÉ7?¼
“øÏ_%Ùæ¶1“}óæÕv/ëbguéÚõãhÜÇªs÷÷±’Û×X’¾¼›­&-Ù°4*ý¥ŒFÈ…¿$³Óæ@ãéÒ/
xÙo`U“äÎ¢p±þÉò¼¿›Î€½xõð:žó'yšî'y«Ãª=†zìøÈjrs8—¤;3wp.ÓÕÜäŸ¤¬üEh=–ár›±gšŒkBÐ‰…7jwñö" 4ï0è	Çr;,Ì¶æÝ³¿O›Þƒ‡S×c;w½2#ÆÈÂsù0]¿˜‰4ÆINŒÓš"¤ˆÐF„ZÄÉöDÊ¨à9/´Zq—å…PŽ<•Öƒ¿{Ý¡óÙà«IdFghà«§ÜÝó‡Q€Y×ŒŠÎÕ›äÁ/÷»ÜpÌGÕãÖÀÆKMº§-rÖ°—m×$èñŠêf=FÓª»k2À„sr½ZQŸŽHç÷¿ØH¬Í¹UKâ4Û5•«—ÀŒƒžÐº—ÀìÛÝ3õD¶ì’].e‡çŠÕ4/Ç·]­ czE»ým_aDCfÎ
ãj{xüñ:·y¶õT6«¯7eí[¸l²ïëlá„?¸z¦ñö¡CGûý\Ê÷‡÷ [œ¯„›u€‚¸ïW"—„Ö§™OBR¨N ¤àF¸\ÐŒæI¨æŒæ0@áèáV+Ñþæn<~XØùCÈ¡–IÌãÊß­Ã¡‰-±¸÷ê¶Ú¼S¥Ï"ÜØ¸.RbCÇh›DÕ<ùp7Îï¢õyyx*ƒ¹]ƒáƒÏ+¢²³vçy4è0;ü*óS_ŒCjjÕwö=—ªÿa¶€+`3,âƒÌbÍxËÐ¸F(ˆ—ÇÕŒçóñ(ž½ÊÊ=¿Ø:ƒm
ò^9Õ‡Ñ}3|[AV„m )Î{X»×ó†Ã>l=æV&*Éý–âbE£«.‘eÂTÛuÇ^Ô«³<>¡µšVgôùLìàaºH[üù€tñXXlË?Îø&4ÝÈÃìJ›©áTËT)UE–ê‚[n™3)b±Ù<Úç
DHIèÇÚYi$«”)á%Dÿ¯Ùbâ’7@Wÿ˜M}ò#ð‹é8FPo4Õ6ÝwùG’¡…8ÆMý}RÂzÀgë\ê1”uù°Àëì­Š\b.òja—~€ãV<Ó.CRÓ²žWn'ùjR…v¯Êfa´GË/ûÅ(y¹X˜C’Ùûª|ó¸,W!”ÛÞgãÛÕlU†~w9³!Š8)›,o‘3£Åë’að0[Œ±|s»ÞY÷›ÇÔéiî_Ãxh´üc<-fß ~²Ã1Èýë:¨¥ ßÔø0ÕÚU¯Ã¹×†ðÇ6ü1Š„–ýÖ¦~ÙÓÌ÷R¨%=RjZò®Kµ1rPþìŽúsÆ6l¿[OÍr/+*-ÎdÀ]ãrØû¢Ì–´rŒ¾ô²¿ý£MÅA;sÚ>½}>ÖƒåH¨¯£HÿÑªF÷ßã+›²ìý^%—îqPt=÷+¹”…s‚ÄJÁ…HEÿ¯Ri€SÁ”$–‰\8Ÿó‚3ÎBŸ¹‚Š"õ2WúX”ô}÷ËÏ!Û5HtßcÚÖ¢3mƒ"Š‡".Æv2þcŸÀóãÛ©:ïV÷c„SˆÉJ8ä øZmHUŽªh5Bà¤%0›Íx;³ìÏ˜gÕ`Rr…°ðíéˆV}Ü$ÿ‰ÙœnÍ?o’ù87ñƒõß¹‡œ£54
êÖ71?ß-0>H
åÖ”ëNÊXªÔ.\	g?t°vÄ©×xâá‰˜aX@2Zø9¼:Áa%í"/ƒQI1Ülóî¸X1Éç‡«cAúš`²ÎW[ÚòÈn‹Ù}µ<1¯uUå“‡Ôs:v¾³Íaþx	ðÝòÇtwòTUjô¾°ÁŽ$P)õvÑu¥1@¾©ä&twNqˆ÷Ø~ó{„²]_Úxü2;ñ vZˆ‹Ñã„1çâ°„íj·ò÷¢äFëÊu½QŸò?Áû­å7ûô ]å·^½}qúÐ,&‚mØg[{Í ûHÚ$ÎÞgòªòf‰vh Y› ¯<ÁÐ’;b‹\¥Ò”;žs'©Ë¤b,KUq%tš
‚Àº™öZXž	,0xDäav•Qçf'à¦!*f-+Ç%Ð_Ð:â?Žc¨D%U>¡”°ÎOí«×8XJ0ÞÑßûÉ®_6Ã,w$ó½^Îîý¨êîÿûþß2HK¬CãÉ-˜i*»Ž5òb…a”4‚a z]ðQôÏÀ°àÛ;˜Hgïü®åk\ÖrtÀà{çwÞ(€áWðGðOàƒÏ^À
 Tøbs~ÛòÅ^f{Jf,eb[0DÂ	lf‚¦¬sYÅz~ÃxQ†×Š©Ò>?èž~r9è¿¢gÊhõDOd…÷¢~Šu5¶ãv*Îèñ|Á"·CØ¢eÌIò§$®ä¦Éï@½õËOŽÝÔvx¬ªlý.øtxoÑƒpvÄb}â®TÍ¦Î‹¼(tš‘¬Ð´È˜dÆ1—aä'ÚóÓäáGA3+,#˜Ïy¦rà·Çîo¯~Iâ‹ÈCÓ#R“ÝFÛ¹‹Çá:­\…íÅ$s8&‘ò”ëß‚j²FyW\ÖÍéòaûxî¾ü2Õú­ÃåeÍŒ9³¬Ùfš­J]}ˆ:ŸOŒÊ|¼	ÚÕÜQæ®‹&ržåiÎŠ"SŒ yQÈŽ’X­Ñh‚†ñS\zR¨Œiž9g™Í	)´ðxòGNç˜Á¬›oêfCók\”A°+L®5Øö k~çáÇ8/o’ÇÈýM482.g”ª}ÄÈÞHÖÉ¯«{Ìˆ
¾Ûµ<ŸÏ¦p¹ÆÑÎê…ñþ×¡âŒ¿ÕµXØ„ÃÏ+Gsìæúê¡ÙÐ@l|À,¬`àŽC†Ê›mpÀ×^•p	Šï&Ñ,_ÀŠátÓÕ=Â£ÁàRƒÚƒñãÚÙúƒ ûµ~íë·pÐÁõ¾²ßÂœg·ÑÐnP!yH«i2‹°j5&9j6(Xk 5Xö°àüª#9/6dá#Úæ@ê×…oãâõXxÕ¨­ßýU!ì8CÄðyLäZÍaV²ÝûZÑú€±) azñl×¬ÚùGÔ„*Dñpyƒ]:ü›ÿb³þ8ÂŠÏÇyuœ-Þ¥5?ŒiJ%gdW'’F¤„Ú¬fc¦3²i˜ð0SWÝÖu-ùïg!záú8§OlÌî±HÇÝ+ÂÏVÓ<Fz°8Zcï5G­”³0ö5€WÏéíko€)\}ÆUël‰=Ø®6“ònÆßÛ<[{qGkq£Áß~øá-ìÕYí.]Ç–@P–p1úÔ®Ùnó·¿þý·7¿}÷ë[Ý­õ}´8÷z¸wÝšÝvi·f(ëd[öqÔmægWåyTÄ?WÖ¡¤Ög¨réòo¿í³OÍ?üþûwß¿|K»Þ’ÃmG¦ë°Ý¿ÿ÷fÏÑ«ñˆÑ§FaÑqÞ%'<7,X§‡ù7ÏØM´ÍB YÝ«}%P™ƒ¸p®)ŠŒx]ÌÂ4Y,\Îoeß*Ë™r²è® ¹‘š g¶Y&5õNbE
£™áiA¸Î*šnSc2ÃC…4Šk-ÕÑŠJÓäõÿý7ŒñYe™_´ÀVl?ød`a†µ_£Ú”ƒ"|*auÒ-óSÊS")=,ÂkÃ„ÙÎˆ5ÂlA)2ctgÌ…8SÜùaëž?swÆ|ž+1ñ—å”t^‹ËmPšm úzÊç0\{Uú>—¸m¬µœ#¶r„0dW1¹OgŸAá*¼N*=Û+`@ä¥WNç Tf$å$çÚf9ËDÆ¼…¡V¹Ì+[äZ¡…K3Åú:N³Ü£siN…þ€ß«º³¨¨ãN/ÆÙj¹ÎT8íx½^²™Ï€ºÅxÎY·æ#«:t³f¶Z®±íCã åèäžE+Q×éÝ$¾BÑ‡!"NÞÙ÷k+Ò4Gg<Î*Àÿ¯]ƒÁ°oÈÙB÷]¬¦ðc€$t/‚ÕÖ¯}“L=ÈC‹ßr6ð}Ž3Œ I••2¼a}DqkßÂ¿ü”£ùÃ'H˜lôãÞ.÷mïJz^!CÜÆ
æTiÎ›Ž3jRÙÕÉ²™ã0Þªg–Â±Uæîu°Ž>2.ýkr)ÇS&=×wßÈÐoóºô%˜]8ßzäö(¾8tGxNŸÏ4·£F=šèßV—¹L`ûÁë@
4Nù‡;ï÷21>)3Næyá|¦4cÔ	
ŒX§B§Ì3V©"”ø4õF¹Âs§(ó–icÉM‘»ü(²€o0•¤zïã°~Ïm3$d kÜ ]ïŸ1ÙËÇ?Æ_˜á˜R¶Å_„Pi35)x×˜°Ý3ö…Ç|2Ã4OÏôìïîâ•9ÍUüë©¾-óûó¡R¨\CÌ\)»Ì	ÇrÍ¬tÚRÌgDšT9%laàSVä¤ zF–
 j…œKtNä?yôý¤bïÖ¢u, ¿”¿¨«e”Á±›ß‡|§.j®^…ÆYÆÑýºœoi›ÆÓ0Â½_ZLV^.£ _wƒT	~€š°Ø”¤ÆÌ-¿X¢=¿ŠˆÚãD4ž˜`“ý¬'®›p…Næ&5ŒsÓ £˜pÝ5åi{ŠÃx:¯Y(óÓÄÖž›_ŒQg,ÉÅv)AäÅ§ÛîíGzz	êCü„6ŒÞWXïÙïgk¸¼€£Ðµ‹^^)y$3J!™³¹æŒÓT{•3…ì£°E¡@zvÂjåÂSW(Å
›ZAˆ#NÙcE¥×§hâÁ"Ô©Ê&F[Ò‰ªÑõÜÅßÜ´ä?Àj…Ìˆ»áÆE…ÓÌÊ/?x?lM¥úƒ6W‹ý)¸…Vav£ŽRÆøaV¡iºSþ‰Âš1³”(Þ¹øÌlOÛ°õœ}â"wE×u¸˜-ð4=†=¶íT³ÑèÂÆOjÚ=ª§WgŸ-ÕÿçÄN€RÞ_<Ì×@W²pî@êu–{®s@÷±–SBRîñÞhÎEaâ£Œ­TÎg¨K‹c®ã_pn6âTX~AþþÛ/ëh[¤ÛóS±ÄÿñówqÁ‚³bšü=Âüæc¯$¿ åGDÅ¯¡ïo¢á~Í+ìzä›bH'Š¸©€*±Æ³Bˆkl«àÁ!è_Èý<æ"œÏÚL030ø@íÄ2ULðÇñ=,xyœCfGÉæi®ãiï+>6±~ßá©B42–wX-g!p::Nø¨T+üs`cîb~7›aœ®óð–÷ã)v·¨Ö«¼Ï'†’ÀöÃo§É;ÿ*,L°rTÎà5‹P¤«Ìâ¸
;ÌD#Çx9y¸	‘¿‹±»OÞÚyÍq7 aÆr×ySÕfhVeLše+ÌG¯ÊÂ‚×wódÑ_aö‹þêÃu¨ÑRíBdQ‰©+¢É–©ŽtŽ^ÏuÂ°ÝÞóç¯¨™t¿5¹LåÙ@›©¶³¼^¤¾ãˆÝb€¯6r-+¬Çï0pG‰áŒ.?è‡OäÐ!@ï|èPÅ‰®¢.#M¯,ûÉ-3^äFç‹;1!¹NSÆEžJ…+Xj8¨ÃÂf©÷,uŒyRd¶àÄ·ù†BÕˆ5º"6f†âDµ5—8.þúuô/õØo§È/ü=hÆ ÄKh)WeÌ#Â‡©GÕEŠ c9ˆ¯PRÀ‘0%<ü¿@Ê¸hšl¬.Uq·fuåa,›Qsú…Š¿,|y@©+Ž?h^AØñÊMN“¬JÄ°FÐ‰˜›òm½ˆY]Át=®¾ŽrAC]oI’l/9ÈjÊ >²SÍ‰I­Èv¡f¦¼k|awäjâ@êwU‰ +xæ¥ë¶ç Ûtž pªôF_’wr°.Ü¿ÿ ×‹šhejgòàf“Þé çspöèûÈaøpùwAÃ~NŒžª
“û¦ÖrF­È2ær‹XÛ:-rgm¡¸§ÀómN=·ž§…æšÑœ;øïhÇÛ…ß…Ì]Ìn˜j¯äÚÂ¼”y‚ñ¿‰Ë˜|ýæ]£Ä!²bô¾2ˆ´?81~ÅÊ+°£<¼ÚÈ].î’Éø¯ÃVìfƒk°ˆó¾ÇÜîçÃµwý°Ç¹6Å`òŠÊÒð­"ŒT¥š¨Î,;.ï®ýô\öþ\lµkOÇ·ãxÃºŒ[÷øü«è¹	%À.ßŒ?Ãì(aüNiŸŒÇ3d˜e/ªºÏhù®ûãŸ´ò¸ÂÊ¡ì‘O)ªˆ¬ÀX.B¹ÇýŒóœå„y¥”ñyê¼²‚J•Â'(°¤¹£Jk’Cã£¢Êv¦‡ÛP÷¤J©57
c&ìT¬]S~‰vGÖ¡­w~2ßT­j³¨GTÒAySõ„rÊËþ)ù„œ—?þ{ðè‚€o‚oÆƒXbÉ@Ö¨‚¾¹Iì ÞzÁ£ðÏ×ó‡)¬Ç7àIms¸õË¥ÿ¸\SðXõˆß<ùd„ñ¨|¢Ó4Ý	¸eZFš~Ž6ÖÕÍr>éäM¼Ã
É„“žëX8™¼q]ÁG{nÌ;X2[Þµ¼@x¦ý‰>v‰§â *€vH1»‰oË,	ß·Öº¼/o‹û%NáÓN>ÖúÐš`Ÿì®ñä‰çS´âO´¾cy¿œ»“sªžj>s¾SÁnžPÈ~¯#Ä"i&­³"%LÙœ
/WHí$‘’’ÌI]*5‚ÑÔª"eVeYN´÷š:æ[
YÒD¥®eª‡¥-0ós:­9Ð¨Z`AãóY[QÏ­þ+ØèÐ}[—¯þþúM²Æ~:èƒ;ûÇìÃ‹õæ·€n’t¯Œæ1ÐÍ”	µ]\))d³¸Ò*Õ]eˆjzÃxÈ†­ÇëÇ^žÐk.–!¤:×ºQCø¶ºÔûÑ‹¶ñªø€jÔž|Ö½$xÿ?;ôæ®Z¨T4,ËÉÛ{,ðûO!>Õ¡ùxnƒ×êT+ü¡œ1îtM%ýýx±\Ù‰Ÿ¾?›ÉÉÑ& –šëp9Ésm4K¾–1ÐÄeê”ášÊBó\ei(»@ò¸ ži+¸tYFA‘3ìhø pÔœs`iK,q9›À¿ë°uX…ñb6ÇYÙfÉªòÓÝ;%›ÆƒÐ¸\å™€.P_$Ð[ø²Rª§B[ ÓW‡•Ž›¼\bM„ºtDö¼„ßsì¤*Ê5ŸM¡óMÙë¿ÏáÉW;Ñ‹¯"¼OÝSEò·%ÅàÃrù€ìCËøTR=ö¸5®Äó7Ïj[y…½°~®ðdB9Ùö<pž²-ÇÔÈ®qý›ãµ¶_ˆÏ«Öæ%\º÷Ê\AÛ?·ðæf®­L®/ÝëÀ­7#·ó×8t7†}VŸÏ®¡eÓ‚ù³ÇÏ«é<wƒÛÑçáÎýÇtû­§;XW©M¥n>v0Š³(è‹®sÎ¯dÐ7ÎxJ¤§N{A¬IsÎiFi‘yŸ¢LÀ â-¸5<#™wŒ’<cÆ“ÈÓBK×eŽê©*xvhÿ®ªt´)Ö²®€*÷ÿß/_«‡*†•bÖ Nñ{(pqñgf>}¸›l$„Š‹oj.×øMI~«XÆ
˜¯~z•ðTêäÁ‰_G*`‹äƒ}ˆ¡ƒÐ'láC’O°>T…]4ÈË»jz¡ÖæS&ü5Ôuì‹êl¶ˆtÁ‰¥‡S”‘z[SgDJ®¶*dÄÂnRA¼æñœ°q?_=}-ð¤€+q9ÿúL ñ£øçÒ²œ?Œy
UvÆhêÛÝ3å÷¸a<RmŒ°zâŠ<ðùqB.”P@Ðò4Ï
®‘Z#8š'žj‘!¹`¹™æÆ³Lc‰(˜Ó;Æ	ßlÂÜ"×ªþÅ•r!s®?BSüeœi-¬<;¶±—‘vŒm)¨ØÁe
Ñè]Rw®Ô×8h_XÇÓ²ÊÔE¬ã1Èõð—øðÕÃ/¯ÿãçó1¶õFïÝ+d!ûÖSÅ4S¶L†ËI!ÏIjˆ/d‘Ê,+re¨,8/rC½My!¥$ª¦á™¥™Â‘Â‘c^­ÕÂ+êÞdØPÍ¨òpuÁY£ Úd~¢ÇXýèvf'1'>3.±MÜb6Çª?ŸØˆäñð Ë‚l’’a€â@7ÐÏ«‡›äåb6Ÿð©‹*ÅÓãjTou$¾F!R"ICÜÆBîa+œbr‡pªT¥[á5)a¦£gl}¾‡á Ûèç@6/±»õZ‹‹3v(ìÓ9„s½gík?ºÓ6ÞHUÎïÊž”u[?¯¿GÇÛ€7½¾Ûˆm¶¸ ÝvÏl*!ÁöÁÔ R‹"Õ¡yF$%ÖñLÂY!}Æ…•š(ï™Î˜Q.U¹ôý\¦Ø±Îï{³/ÂzÔÇ9Ã¿nà.°n5Òî®üâ!ø\‚¨ŽaØTÅ›Þbf6ñ÷e…´2aÔuÅï„?.-Ç=a,ÇòÎ»Y^¶ÇH2C…ÜŽn`Ú¤L6™€P,vj²IÚÄGRÜ˜nx×ñtã1ÆÒ#òo¯~~Ï¾ýLb¼é¥DXPÃ{á0‹jñÛ5ó#7÷d¯Ý‚ûôÞ<+Óë…s>Ÿ´_÷•Â6¸lu"|µw—X«éz]Bo>õÈÝp“î•ãÆÙíxôàþëÝfp”ú6ëUíl¼îû•*-eÖoWJ»|X`Þ±âv.È×_êi¹äáRœ~¬ÞR„\êðøzÕ>YÊNÕÏé2_éþÏo_e±=àUª}U¬Þ:‡nµO!NæK‹4 :f¹tXÖËn]šæ©Ö™bV³äI
s”šeŒÂW:5©äYZ³;à[ý¥LÂ{	1Ç ²Z.´S;yø£Q7ž'þ#Â ýÿì½m“ÛÈ±.ø¿ëˆ£¹#²ëýåœˆ½¡‘Æ¶lÙžµfÖŽý¢( 
Ýt³É>)©}c#ü7nÄ½Î¿d+ 	²A° ’-µ&FR7	Ô
ùdfe>	`}]÷u7‹ÅmÉ‡V~Rö9Æ³õõ´FÐ=A]Ï3³ž‘MÇÉ†õÄ·Uç}m
©Ð±
)ïžáaŽwŠÜc‰I¹ss—~SK‡ú´=ãq«~åt§íó«¨þÍ§×/o¢©Áeã—lû‹©Äub‘—Lðêy°ç^‚3éahÇ/+ËËÛsá{û4å“údÕ­² ¼¯JhÙÈÉ	ìø–“X¸~£]¹!ÖÖw}ÄÝ[wèÅµ™-®?ÔMTQ(»mœ¨•TëeÚ—ÓO¬à’xœ¢*CŒZN¸ã:ÏE*3¡,ËÉò1 ³FX3¯« Nuªrn´aÝúÉf†mšÊEt“ZIºMÒrRò£–£üÚ´E¢µ¬õnœ±º©Œ GY]doo~ÓJ†j%ŠâAcíÏáBØ»×ËCáí86oíØKaÿ6B"ˆw¿KW‘§|$;î´p">x!1ôý$L@9–*Ã\ž+¤Ã:×Sn¡Èi®‘¶ŒÄ™È™±8G\a‚MN˜³ØŠC%%šG p°ñf‘­át:£Ã’ÿÇÏÊF«wãž 'V¾6!¾Ç8í…¸¢xª8ß3)%å;U”D’JnwÐž<‹?þ’{s Í¿éÍ"=	š./XÿIìá--Çç·|NY“Ý›;Oä‰]œËk±‡–†	è	ÝÔ›ê‰:s.v[Â¹Äœ(&ˆ°{H©Ö©E–ù+8NÚÜ’qEãì‡óSÜ$+“&ÕÔjyï'{o–Eã«írlëI@íÔ—u*d"øKî Qf¡TÂn?‹|ä»Y—¥´¡ÓPò®™²£É*ÛÝ™[(ði‘˜Â§4bþ}4Jþ[ôŒ@Î¼.B•	˜MYåa™7n6{|M=³ýê};#ÝŒëjQö65çŒ¤åjšAÙÄ¿BmŠ’ýq¹áLºñC™-ByíQÕðGë4Œ`Y”Éû·A=ûàwXUÅ¢X{Õ¬X¶K×X®z¤Õ@“f¶ö‹õ.p%¦¿„ ×È'!]5].>eÕ‹ªfwY
®™»„­}·Í¡Ož	r;-fëÛ«7®û@CÒÄ~.ÕáPSµW J+ n¤„ ßjlˆZc„ãðrEOüõþ]B&èI€ûûL°™#|BDÚ¡©Ÿµ«ø`Sn;¤nZƒV)ÜÕtgÖèàqôk6¨ÍÓ=°‡.fÓÔ}vÙÕýÌ¬`ïVøÛ5§Ý+û$]žlTn]Œ€ ¶‚rãlîIqÓ‘fb²Õô£ñ›úz¶H7Iú»èßÁôèÝ°;`×EÅKÚ¯™UÖ9ê¥»ö›É¿V]Ã=I÷¹gNÄ&H^õ<×5Î™<µ©”ç˜ÀÙ-µ™t(MSÉÄŒg‚iˆfÜ_IqæÍéÔ
‹3Kõ­ç—ù"]-×a£„‰C"ËÜ¬Ö@ÒX<x+øsu@¼ WÔÄ8hŽçÿž$¿^¬=Ì\n–'ë•ÿ
nùç?þ,ìÿñÏüïÑ§`J*ü¨®¯ƒguC	Fü"ßŒÓ·÷f1ÿç?þç¶¸DÈçœ®ŠQ¨’å¡på-øò’¹s!Ç´Ò»>OWÿ}4Ún’›f-°zš
à$I^Õ+r]C
i]Žk/ø$I³ÁP’¢TÙ¦« V)B_ Ä½Ü·]ªƒx¬:´—ˆñ=vkÉˆÜq(¢ãÏ¢ýÐÆå»1V=•†wà5 Oë58—Ò°7é“Õ!õÀXuLw„w»àŠSnŽD‡¶£U„>­=Û`ôÕjùˆh8Ú´–¶I+èi[ç¹$"#4O¹\j¥¤bPê§þS¢(GXrixª%ËXL-ÉSŒ3žÒƒYKU Ÿ„Çyy2}á¥sºðBh	S‡–£*b ü=VŸªÝzIKú½™7¨¼¸4«Å²ÿ#Õƒô¿Y,ÁÊË“PFÀ˜²z × ]Í¡ŽC=DgGeÌ€Äj‘y]îâUÃ¬»Ü½•Ü–ûrÛ?¤V¹Í¢{r›s¥ôNQÿ£å6p\n·ÞÖÞaå;I`?žíÉ›ëÁFÓi$1"Úî¶ÀÊÆ#evÏæž­Ð^_{)3Ü6àÛ\0ÒOj+1‘ˆSÆR%3“í„·QÜ‘<Fe,K3!½N§­7³œdVK”¥òüÆëåÍ*PìE{=Ëî:ìõj”Š²7€î›ÖÌ2Xå•§Us·:$K¥H!Ô¥’ª4Å­²”B
èŽ,õ—¢&¡ŠF*²zz½Xã°ÆåÓï«Ÿãäl™Úy´á–8CÒ;*]ÃpºõÌö×5B¼îLùˆ2Ë{$jjõ„Ã¹ò‘…¤™Ëºµ†‹äÔ¤ýYM¶h|cóð~YÛ4§™K¥uÜH"½À¥ÂYËµ’Z/xE¦hN˜É3…­TŽp–r¬8ÇÖèCïåÐƒWe^U6Ÿ6cïÍ=”Ü6GâÛ~€¥ñîE(ò‡ƒ¥;ó7¨¶îß&8XúoÛâáEÞfóe»®qçŠ"Ê•QŒÜhêíÔPEûõ»7N^¼.5íw^6Î\¨¥žüÙ?‚jq<|÷Ò¸Ü–Á¥8Eáþf9]¬á4)Üæ÷¾7ÊÝV¼,?õ‚Ú&óõ]ê–¾‘Å4¦íXÈju«ì¢€6ÞÄï§Å¢Kƒ¯P‡ï¡"¢Å[_
Ë}&/M0¸4¹¼ ÊHô	ƒ‡í>æ=±ç‡÷o¾ŒïeP¼Ýã™ž2ŠÕáÃhºƒZ%PÆ„¦„Óñh¯KÏÖNPàŸæä¤ã™øÿ~$Ê…ÖÅ†[£	ÞZr¬q«,Á[®„õú¨µD{À9O©ÄÌ¤„#šI±‡%)µÃ)¦‘Š¤ö•‚½a "ýðÓ¯/ÓïÁ¡ãØzñÃë×ß«£Ð¯­§9|Ÿú\,–WáÙµÜi.ÁCÖ¸óÉHØ/¼ÄØžÕàí"›qÓ”øÿ¢%w–Ëí1f=ã¤¿Äiûð@éG=YnK6Ô8ðcéV¯Û_×cmÆÄ@i»F„,‹i:z56.·,_Ì"ñR®¯ANÛ0&=ÁxBPS#ø@kÜs!9E&K±æYNSÂP®A)Î½¥2_a¯’“”!‘1-Tæ”aBkmÖ¬X½P[|
áTs›Õ§À¥ñà_BÄ`ËÅÝÆm_¥ÄD&á4Žgër;7Óì¦ì´híÍÿFbýƒËV@=ÜÒýÅùÓ"+Ïa—~ØÙª¸úáíßâÃLø'¤>bˆ´ÇpcN(ßËV„ÉãÖ«¯gÑ˜âwè¸ÚiãÍëãÙoÔ#‹17~ÀK»&}¥}¶'Ã„ŒÝ‚!µI¦81~?Qæcq GK'òñöÂ
O¶Ú~YÎsY³‡Xßìáemý†›y)ñˆü,–ü—NÈ¦ÂSÏÓf&rÂR®=
aÌ<î¤¼&'Æ'‚M´3<3TQáHÊ]îqK"šf¹Âú õY„C7ÐQ‡ Oç&³…æÀpæ_ÞÅ²ÊñÌ§×ëeŽ“.LªkÞ×+Wrès´ßçíšªKs?-&ŸK{õœJÚà²dNqUïƒÃ¹Ej?·H{`âí¸„8Bí•¢”3¼ÃL!v-šÂ ÇaÇõ>p>Û)ÉûÍžü¸­‚tU:f§—/yß¶'óÊMÑ *²õé"> b,–Ðö	K"Ê¼ÑAÍ==`•Öš•9×‚ÂáŒ›MçëÏº„Ž‹‹EÞµ–~ß¸­bò›[â²ÕÓÁfê…Å­u»D&uìî¦V„WWS(&Š½/±¶[Tº“ÆÕÙØúÈrx39ÆÑ¨Ë×rUÅå1¾8ÐÆaçy@üÆƒãÚÞFNÞê£ºí¾T;ÐPýFÔ™Úb;eI¹J`ïzù}xMüË_¿$ãtµÌ‹^•f[Ùòá~µ8ScöîLmz·içûØ£¥Ùbq®¦>žkîìÒLÏ5C(³ts¦¶æíôî\³¹z¦¦
`y?SSŸLô†¨…aó5?ÅÄ+‡0œò‡°Mß^6ž
eN™B”æ¹Í1¦)fÓÌdB28':#ÞXÐÖæ4÷æ`î,!TSÃs"å­Ô§F5âNý’/À]ì‡³¤ÆèK÷ãæ7f^–4(êà…ã=Ž=nÉ°/Ì…Ý¬ö]šzv\YvW;+ÐnÝ"° ;d„þ#(Ö~…÷ŽJŠ2BåMöx»®zA`›qÏ“¬³vOr’Õ”éžjÄ	ÆÅ`nO“nuäµ½ÿQÍÆqû´7?Ük,ó)¸´Óf0œÕµ·œ™ûéðÈ1‘µNÚ3_çœb/CÏ2£r™ôû’‰T*™bKIž#Ml†¥99Q%C™AJªßµ“\F,gÚ‘VÛR`mÍ]6>l9[­&æþ¾;¹ƒí$å)Œ íÉš(½F(•;ùü„‘øc °sÆaŒË‡ÿ/+“Ë§1æQÏôdŸ°Çaá»»Û_ËˆfãNÓû7_»ìB'­Gºìz6wB ÁeVP(´øæ/J‡ß¼¥fV'~A2ý³ á	¼ñøœÄñµçg÷åk¡Uðv“š=+sSº\¬fƒõ{xSã¯iJ	æ¤&ÿ­ËXžQ¢„&ZçÎPfMÎ´ÈUŠœ´©×f…Ò^u`.%(u‡ŽúÞ-Šb‘áÅ'Z0j3»^,½9t—TY	íˆ?ü!,Iy†wíæn9ÍÆ÷ë%ÄÄ@Wó¡–tý•+Fà~¬¹•às¯T˜Šß©ZqËy`¶‚EÉDôîÿ•rÛäËä·ë<¿3óQ¶°õ¹!ñKs0LC¸½ojÙ«âÚÍñ…ÓÄð‰YštæF•áš:Ho]/—~‡ÎóÑLgð}9kà÷¨fÝlìÎù´ÅdTVâ.¦wþ&È>€zÞÎ–ý[—CŽl [Xä¹ß<~„Kç?Ÿï67í¨b•²RlShÚód¶òõbq=sWõ{Ñns"…ä;Õ¶á#ŒÛ>)f|¿KŽËošÇR(Í­TŽn^¿1é©Š}‘DÛjØ£ižžÏGç‡ÑtóµŠÃˆVc­o´0è#¢ñX-¬_sO~p
EŠ²ìC]sg÷†ß¼~ýNÐÊÝí*,ñêØÓ•C*V6ûþû>“jÞñú¯}õÃÛxBûßVå¯õKÿH{¦Êæ	jY1œßOy“$„ñyŠcì?ˆcHiÃ½Z¦D&EjŒP¹L-Í¤µ)Ds‹wÜ Ü1Ç™–8ívÞÀl×+þáýŸþXje F-Ænîu"¯r^Eƒ$¿jõ;åx6½u¶æb’Ô·û&§×sg«rÅ³éõÍê“ƒ¿_&«¥E%¨äŸty>Í øqyÿË$´ú»ðc±¾‡‚Áo4rw©³AAóý—>¼’/Ú,—æ¡¤7ñ:ÒÂ_»lù~’$MEh´9pXmƒËj®ÉRQœ×Œ OÞ[ªw‹ùõÂ¦s¥«*²@x¿*2;@…‘r/û…HŽ›¼Q”jL¢ü>‡í?îÞøýÓbÂ³z>šSe½Þ?„‡·&'»¸˜æCOŠîÂ}EÚÑÎbô­þžt:ñÍÇóÀnø5ÜRÑž‡#˜òÜ‹O†¥GQ…²4CT§NL˜ÃkÅ(uR*£Eæ?RÂ¤™5\§V[q_éãóïÍDûmØkú¬µ·õù~œÕDt
ˆS¨ÌB¡—¡/4Ü~Ñ£ñÍâ´ZÿJ0oû³fe%PžµÄ@i£]”#^‰j‚œ¼(Úô¯ç­b6¦ÏåfLãQ4f{:‰ò`VÄGq¡­–o‹ˆj5ÎÐÚúiÇâ§÷) h‰@=§¸ÏÌt¹Ø—õS¡DŒ¤Çbh½‚LÆ2p~ƒ(ÉP®‘TŽjÆ("9e9u˜2ã¥¼7vHäH3dqž«Ñ^Â>PÂ<X‘\Ôà=]/ÍýÍ´*msÿP=¦ŽSqŽö)Ù†ìdïTœé½
7	"›”‡iMÔÆ6.wC•~(6-ÒßeJ¹üll‹–IŸ«V±aR9Œ¦[hµ¿«Ç["‘’#"±ëâ¯ÐKLó‘	½<	9Bg¡B}¼ÒÓ&ùŠMv¤“âíPÉ1ê_Qiq–Žu†	ÆZ¬52™©<#¹v’CÝpªý§™ñÒÔŠŒIå!*€ÿÊ¨„¨ âÕí¨SÂ0á;40Ò·;•zœ~y\Èy\ÒÓö/KGUõo¸D._õÍ{öºfþ%hN¡	Ú:[÷}­LÈï=(ieyh9!Þ¸ÂˆçZr5—Â1žæ)Í¬•J§–g9)!9§9ò(µâÈyiÛ‹ê¬šz/J³pÏEak6ûxWJÏü`è¨0¥4çœµ¢Jï¡§r×vâ\EÓL†—~ÜùÐ£mª?¾~ÿê™ÀUÙŸN+ÏÄPã
FÙ)¶{¾¹Ç{‹2ºz÷zBIèð  Xá2#»°óìÉ$}´‘rYOÏR¥±"ØÛ*Òe9”kF¹Ô\å©ÍœáÚ¤ð%ÈyKF;L˜¥©e†t—)ù’õlOÖKÊÛYÄ$b{Ù#O&ëã-•/#í9ÍžVÚõ¼¤ý1SæËIû³ìYJûiv;”4›ÅÐ·¾!²"·JòTfÜ`#Ë¼ŸKL8Ë0‘Îëð©âN	šúß‰ÿÆJ–{éÏ³\éïC•§M=¿ªäÈâ~UÖña]WðÛ­{&ÓU t:$úÃB•!j5¥dƒû+ó&f(-•:ãÛï`´aÅ/ šÞT<ü! ÿ“y¨ûíjÌšw~à!i ‚àà‹¹J|p…Þ®þ­ûÕëª‡w0…·Þý×a,~€¿Ÿ®~5I’pÃÍôúfö°å=ƒžÓu(®\èJ®Ñýf=ƒÚÍëMÖHÄ/Xùnº*Ö7ÓÛÅUµY»Ürëcévv}ìÕŠ½šÈR(›g÷œqL£O‹`pcH ì[Öð‹ÑêŸRÄeº'G˜!ŠÛ1~(]ÒµUNu5YùÊBÃr;>½±W[Ïµ*VõÔýECÍÖ¨ {BŠÕ[dmn9Î½âR¬¨ä[¦r'3ê­o(#roB@™Cáö¶1;v R^ƒ ®§•¬\¤|EI’¿‹‡‘ãuu÷äþa?êô§2³ìÎ™bÅ
³íz¹­ö2‚\‰u ôRb°ŠªÈ- ÄÜÌŠiQÕp`X-Mwß,·Eo ¬¹†çÖ,í&Žkµð(àÁä`¥d]ƒ^.)G°¢ßnÌGH9sóê{g/jÍMÍÊ?¯™—(#`®Êå,®êÅ›Ü¬îfp!âHÜî#D	¶WN‘b²[M1:ß¾á8lø±Fç_Ç-‡_À~?þæ§wß=/Y$m‹q:å?Q–ëñtÉÏ‚*ªÝÛã`û'ä[A½ôâÆKÍ%ìÖŽ×Wv\1,wk¿âË…V:Â”Ë°ßZkÂ9È“
•®a£ÿj[›~³¯iGûíEqŽŠõÙýôQ„A|UÊz¡‰îYIØpëxê´¾æT;IÆRSªV(åÚŒTêA™H$rçŽøOÂòƒÜÎF5ð¶,¨S­Åï±²MÜ=ÞØEÁË–u=p¥n9›ú[<tmh™ë7Ã§›,æ1t1v º„Ø@Ðˆ5ó“T‹….?2¨Î2.÷È—àd~RpÚ›îJˆvàù¡)ŒÒòúF˜9©«¼Ð»Ågkò€·Å-}gN)úåA#ÛÀLP£rÅM*I‰›Zhäf^;«¤ÑY…­ÅÜ‚­Ãü/©·TLmÿØ®ÆŒO
ñjiçÉœJþaŽ‹E¾úäšñ·®ñãÕîãl?n\Êð¶Ç-þ#¡D{*¤ÿn$A"4l"â%pcˆãjëô&ŠxV”]3>Ùí$7,i½åqcTG„\ûÛÝzdY¬þ½Ô~®M_ã£¥¾B'‘.¯ÍžpÀÓÜ(¡XñÙV’iþNú°N4Ó'ú¬¤Ü.#Ï¢ûò’
î`‘×[ÿYŸ1]û?c`-ïsOEwÙó¶Ùßï\Ïcy7Ìõ4ëó\JýÿÎö
"È¸Q-³Š¿|ºèsCñŸ³éÊÑ>ë[³~{ëóÝŒôY«¿G?Œ/2yÙˆÉåt=œæ×åô£ƒg©¿Úãˆˆ×m–—òŒ0#¼®(Ê…Ã9‚ˆes”Yÿ‘RÊ•“¹äNáÜ©³øÉÇN<L˜ø!}°¹<rµsÙÈè £`·VŽäN\FZÓvCÔ:(xÔÐô¼Žh³’fŠöÐô¦ë1ì…qç.è«ö=­/nö§ª€c¢‡ª€Óu·äêóí*ŽÙâ\]n”Ãiw!¥2L&V%ìÓØSú:–Þ`µH×ùa”¨nŽe%»§…!
Õ‘G»Ýž‰ôRèÄ…þ§ÆâX<:å9±8õtŽ-e)fBÌ-™Ü:§˜Ö25¹¶i–a’ùŸ‰“†(+rØÐÿÑI ÆýÿŒí22IÆéF&NT>:5wÁ×NÃBü#gÿLÑéñ{|qtê×å7tú†N‡Ð‰
ÚZo¶:c=
©#	if.ÍsF4g‚g%×”g©åÒä…Š^Æd/…Sám-”	•ÿWD'Lµ¤DÉfesª…7Ú‰”°¤
í¢FDh¾ã&÷FY,›R-¡ùã˜üæ>øúñé$ëéØìOÆ'&…¼>õx“Ï…Ogêò>ý+ãÓú¾Îã¡'rSü³,¶yjQ…Ô3šçÜåÖëIÊ›ŠÂN0F2!$ÑÈåqˆºŒcg]†qŽ…ÎœLSÍº]y{ç´¯ùé}òê§·/“ÛùâÓRî`ö5ÓÛ
0µŸoÚí·®Ÿü¯Ÿüž_¹y¸H!UaTÖ¥—Ù~‡…ôŠ—¡$Afæ@ý{ï\-*NÞ(m¹Ùì²¨ø:ÿ\o's·ºòxxU1_•³êé‘™® ¥’Zì)ªgÍúOŒ x¨ôc—s¼Ý’Ïà8ù¤ÐžöIŸž¢§ÅÐe?¢nÑq´å8b‘=lÙE|O1]ÄõlïKÔ#òêÂŒ$ßØ€Û4‡S¼X-ìÔ•“ZÇ üìŠ|¯FÔ˜yî^–Ö›IN
gmî°¡i*	Æ–+½qix†4‘$Ã€Ô@Y%„µ0)öOðûu:®W$äùUKÔKPÄv„ÐhâQ£ÑèuýQˆ¸}ï²¥[þßåG
ÉOå{é¡zºJ€ž×ã2$e.Ÿ§ Ñ!×ãöèÖ=/=ÞÅ§ÅÒ–©&Eh,¹ƒ Š©™AKUÌh’4»áà?uÍ~ûóÏ?%AÍ³’˜?ùóï†,M¯{€fà•†·?½Nî\vcæÓâ.°l çlôË|ú9y¿ÈnÝ*è% c˜Yj¸ÏPFÉ‚²aû~¼·ÉG?ß‡ƒÍfýùaTTkàç´¾ƒc?¢¥ºöcœ¯¦BÃðJ„I>šÙÔ–ŸN‹QÈm…µMOÙðdwÑÃ£0~…ËÄ *Ý34bÕÁm°„¡›Å§½¾_Žà÷Å²ª¶ð2©”Ã˜`¡îgëkð8˜Àç¯üXB)…rž,zoÙ?…×±¶¯qû	®Fù¿wOp•8ÄÕ†½ÖDôn¬4S˜5ó|¨ôïhtRh5¾PZ;%EPjP·èÓª[›¤ÑaÞˆ>ëpªFý#§C5°rœÇŠBöý1N‚ª×£µ(SfÒ>¹Þ´Ÿäßæõ}H]|"6…ñß>•‘v›–~ócË±NÔº-X%W¬ŽŽKÛÕu‡€ìöïö*~ÓŽÝçÕÒt9FZù^7½<1'v½×Í~fTÝt6›L¡*v®¤çÈ ²¦H×¼;±z!žaaüHJƒˆSÄ`Å¨@¡L#L„Ê4–Ä1–I8—(%9—^Î0
ñ\”úË„:D‰ñæ‡u±ÉìõjÃñtå7aþ¥þ¶swí‰i´ò2Zæ6YÌG¿y7Mƒ.à±óÞoe›¤^O´¾­ 35ª3%eu&gŠ(ÔjZ©DøÖ/¬CÜ?ÜO'å“®¨^ï§Wõ?í¯(Uj7Ú_Q|À5£1Þ‹ö§þ?Ò<e§LÓhòrpc¿¯ªˆ÷¯;áÊÀà#~‚gæÑœOŽò÷ZÜÀlàr,Ýˆ–W>õË–ø6b%ýûJŽêq"—0òAø |ø¾ÇÞTnë³Í™P?™žæP9–fB	†œ@Ö‰´Ì8Œm© ZXÌ]žK*rbUfm¦·í­Ð‡XJßÕw Ý?XÀ”âÍ¤õë0Ýx+Ž¸èk¹¾9H6Iî>ÕE€ëzÇsßÈçä¯x—Tb ”X£Pè¸ìuÃo$¹7Ó×Ë9ãA¥d°ðóõ<ƒ{ªfïÌ €—üÞy@~VËu¶*Ë)Wþ…²íòN’Ÿ½AûhÉ)90Ê=2ª(‹Bqær%Á‡oÁò…»W/¾«¦Y_¿ý*0#m¦ó%yü‚ø)ãÊ
¿z´›»ŽšÙiÂM:”LöŠfp‰wNÝýÑää{côæãž°åd‚žÉ9{Y'~zÆ0Z=coPÝÆ`‹Œ‹±Ý.Žœq]§´ú\sˆÃt·¼Z'Ã•Üx'zÁ•PTY&q§ŒJˆ22×Ê¤Ì	â$R^œ ýÇFè4…xi¸“2£YwœÓÔjÌ=»5÷ÕÉñ–§}  !LR¼[$Ú¹]‰Â{¬vjØF1z„byŠÚ‡ê…›¬
¶}ÝR}cŒœ,Ù»Öàdu OðÆÖ--[„C¬œÔÓÁËwZã_‰1“ˆ¸Ì«–‹æsëö>¢ËáøbŒWð£N³~Ç#¢Ã¼^‚¤\Pä8œ¤)¡¹N]ªœÓ†[#ÕÔQ‚ Xjª¸¢Ä¦„åH’Ù\¨ƒ±LÀ÷º,)~*+â}=Ýdé¸ë«ÖÇ×e¨}‹@€¬4Ýµ¸iÄ)"bC‹v›¦·K«b¾û2(rJ°QÌ2œ$ä$K¡exG‚M[ÞúX,iéìˆÀ-Htjó_	žlŸÁ%À/ÔãRtñ‡lsJŽOr•åÒÛ9Ç¹Ë¤ÀÖå©6Ìy$wDjŒµ–¥ÑTbž"ÄL%'¨ÌX~(ðÝt¾þœ¼ÙNÓÀœšŒ½p/?öº>…ôÒ®\J¸âÕOo»\g.)W/yáoù÷äqß=Ž~m6oRàÖÖòVÛÝt•,×ó"	áë,°‚ƒ'k6Ž©;ãEðÜ!,|ðöÍËd±ÕªÑG¬òØnŸ»Oª1[¹¥-¼O6á$UlÈ†ÊößÀa7½žÎÍlT/Ïd#ý°3ÒÚ¥W†Ýúq‡ˆ˜ÍŒï`ðPù{T_hfÓÕÃ$y5ïGê2¿%·|çáƒu±a«¥žXw¿ôŸB Ì
™Û‘€óqs¡„É»ÏàÔ+Ïœ–în=®F~ ‹k±Áp6Ô¸&í{l¸*7{cÓ±ÈfëþÐ€A³ÍàÈD”G`E¹ÍÎSWõo›h9IÞ¯¦³Yˆ×Y:­Ý™ùC’™¢$‹/x7¡Q¥µ¹Ÿ¦@ïÇo}SÎÕMO‹bíì-ø<ÛPƒ}ww|1}f>]¢âªA’[™DëÝäVA)£­:$=¢çå;q;^¢Ñ%MÊÁƒ wŠ¸ç¢¼°S”—øÕ8?¢X“±å‘
ç}p+F•	}+«·Ó·¹§Ú9ƒŸ4Ùô¨%Áb7æù¸Rþz÷ÉÌ7!5Ùä‚í$ƒa¿[Æß+2”f²‡–C°TÚ+4y.yžI	ç\žŠ\8.rM2¥åœ1F”¿@!­Èe&Su°ï›?þºŠÍ8þ~;õ£¬ŒõaZ¼eNNÛ">­[÷X1â^5žc«u+ýú!šç]’B…+u )Ú+tÈ¤ë›l¸šâèó®–µ‡3îÞ3=ƒ=Ÿ6ëô´!Ã×äôÔ‚¦Þ´ºKÂõ•§ÈêËíÒ¶,„øc)o6.à2´Ã=
ód±ŽÙà @¿ û™lcÉŒb5Û¥³Œ¤D)¦ÓœÂ™œ"¹ÒÛTi–if¸¡Î	IÊ”µ(£‡Pc‘­wÀSP#Ã}¨Š~R nÚ:Ôué2‹›Ë·17Ñ%v§»Å|§·Q[oU8¡·½¹åÿ‹¶ÛáÞÖî¦yò°XÿT3¹uI]"BšÝÍ¶îó²@÷éÓ§fôa§ñCé#ãG¶g-H‚ýöP» Æ1õ{ ÇÁ¸Ç5Ábé}`YÇa7ŸÍ *Wût(ÛÙ¹—íˆ]ˆ“á‹A=¢øåyDN÷Kp•íü€êøxödw³á“¤7Ôó,ÁÑobaÎ$Á3¢(25Ni/Æ3&Ne9âÀïÂ8ŒpœBvŸ!:ÍÒ\Ye,"”Òûß‡T‚²®árQ—²ðÖÍÏ«=‘.+×¨[Ž¿©0©tðÚH€½FëþþÛõýFr¾ôKö>Äð­—Îþì¯x9*}Wà†3ÅCé‚3eÆ˜‡éì>¨r7IBt_ÝßtžÍÖ¶ì.xÔ¨MUÖr\¾ÿ¹2YªBWó"øq½Pgn3õÒüÊ½T—êÈÉoþÃ»—MXúv­ùàßªtc(YVÓ
N·kðWjø=êÛ]ŽšN¹†²ttBZÞréWöP&ãÕs(Ö÷÷‹%xKÿ~˜KéÕ¿² ×l1wÛŽ~úñ§"yQÁÕó3Ï‚×r ¡’ä¬øÎ/â_ ùÐ·²ž{9…%w×k¹¸«½~Óy˜Ýî©Ò8Ã’ToZáç±Cè°Ás˜RyÃËæSùX×ó²÷z«]¶–JµS'¥´õOÙ#øÜ­:•‰=`eˆÈV`ÅBÍv­Eáï¡ïÄGJî?Œ‡Õ0dà±gãnÓZ×©ÿÑ¿ºwfZ&‘þðþMÓ?ž+mðMYÂ&LxW½þÅqOä7F–vMÃpüÂÅHÉ 8ô÷|Œ‰ñDV½#ÚÁìÛÞ‰¾HpnfôÔÈe±"e±Àƒ…ºêKXÄ5üÈ53ãôÈ5€Ž\±°«ãW|ð¦Ó}±zùýßnmŸ.BqlvŸÝñÙíæÞÝï=‘á
¡›CVÿj¸#5ò}{…7©LÆt†0M‰5I”ÉŒçÔ	KiŠÂ"åÞ¤çŽ3«WÖ¤™ÈpÎUj‘ìU›çÇrš ­Ífá¾`L/ÐSßÎŠ[ïÞ©tºMú:@u÷FEK …’w&»Y|šf¿¨°ÑRvrúªÞÍ¶¤ø>Û’í.cŒ™–{>c†¥ä;Æ5‘*6&ª_¨ŒzGÒ>Ë:jmS>9«à¡Y}Õpº½¨­¯}o6`'B•íÇÒ õnq8ï¯M‹çOxÄØ¿T:…ûhÝÇáô|Û|ÎžÒ^co_(‘K«˜±Yj‰L%¶K¥N5¦þkNR"5Èû,²¹“FåBÑ‡'o=4ÕÝMi®^{ã2-	úòóÝïõŒZW2ìxÃ¢ìÆëý€›d¿é¼Œa*“óÂº7¾Æ›ªBõýz	1É"¤>0ÒÐVQQø”¤6#¸ôÖ-çn–X¿2o;W>Üe8ùðmyu}“øº4™ï(ñ]zXYè@LãŸÏ4óbúaÄpoU7¯Â®öÚ©ã-~ßFà6j®À:ÜRšïÛA”k±YéÉè—òßéâSÑ¸°rj‡¦ÊjP%½<¬º™ñgf>šÎƒ¤ZžÍ2ŸŒãQï£·óÊÙ\I@›T‰Üð8ªA=,Ö;þ—àvi>U9+·Ôdôj^=éŠLÑø‡ò iœézµ‚È(ÿŠú~€÷	ÜëÕ|!pzeî¡)3Z-ÖÙßvÎ]8´¨9ß	ÌÐ/øC'ÓáEµ WÿnwPg§„Ÿ&¤© @µÛhßzê8ˆš
ã©½]ÿÌ ÿÑdO¶Î•ZD5¦;¾¦Uþo4Ž^±wã•Nºˆh;NŸèÙÚp]âÛá¡Q>e)2?Ÿ¢wÞúxÈfÓ²ž†Ë”àLžk"ÑXS—)I5–™ÿ-(Ký—$3"K‘Õ2EèuN3w(½çUr7Í–‹qîÁÕÂ½†}º1Nÿâ–·wëë—Éï<¦š„à»^,ÊCåyà#8¬&ýlâ,ˆ|lÿüÇÿÚë÷Ÿÿøßu€r‰ÍÖ€Ù[çî+¾¥!Æ9„IŽ›bšÎ\P™ &·Hæ‹ÀW OL
Ù>e òÌ< U¢ÿü¨A@;÷ÓzÔX‘C[všçŽ*»=œØT1Ëî³ñGµ–Që ðû$ùíâP&å”‰¹¨é3w¿­­¸_±mÆÚ–ƒRSñú†ãýýlÃkXÀÙü4RïsVK½*Ü,¯×%pÖ(îÃ£.yCF~Kš²ßäÎ÷å÷ïË°TæÄ—Éú~¶0v£!¿ô_.§^oI÷n>Úc_\¹ìf¾˜-®§Õ1ÄM?i¬´×gÂë:ñoábÑUžN	&9ez/5Xv  cíæF%ÝázðMD¿…qŽKù0f=½O­Æl¡Å	ªLËŒOvb„Nƒt™0š6´:&º#ôÐö1ß?‰V8ú6÷›;Læ÷ômL.ðª°°-ü¦IþÀXá§
ùzœ€T*ÂA—|¹óÑð5®˜ˆs¸ìso5.>&â‹/„&ä0M§ß#­HšmÊÅ8x45\©Œ+®™‚˜lÆrÊ¸ÖX˜T*¤ËMŠRÂ,QÆ2•¥
•çYŽÕ1w~ ®¹Ýžœ2ð{ãÈÙ	kk¶_üÚ·úçWoÞþò¾ôÎ,ë˜‹‹„½mçs¤ä*’Jìö"!µhÅ4ÍÛ|ƒ¸·¦cÞØX®½íÇåöi!ªmlœÞõ‚Fq6÷}ýóãüãt¹˜‡Ãø7ÆÝ¥6Â¤×w…NEG…èâßµ[ ÷‘]ÆÕêÛõ“£â®áÌŽC’é¸\¹øz
m÷ÕV5óØYŸòõÕ½w¥Éÿ¯T$b²gÑß/ë!©t’
Áítù«ÿëÊ­²+¿…mzå÷eQ•ª%~‹:Óyý•ûlÀtÜ?ô¾µ|ìÎ­Ã¤ëà ~È5Ø¥ƒsé(‘:3˜Y‹ü;…µ¢Z§”:Kvy.ræZ!ë$QQ¤LžeÈèƒ.láñjÉí¥§Òaª’
Q¡×ÕùÄ1D7Wž¼„Q×pV1s¡xD%e}K7Óë›ñBÞ’âažÝx°÷D Áâü# [Cçåß³Åâ~2ýÚŠ¢Žhý÷‘ò¿Š¿*“…ú~¤à™ªz/Â5¹¹›Î¦f¹é³ªÊà¶éÝRç‹äE9áIøûeRýöŸk·vß…FŠP³¢
Ó¬=¡ê„Y¹²›¿¼ÿÍÛZ|<›1(páº7|ŸÔ$ç‰…ØÔú(ns­—MzŽ‹î¡F¬3ð­~„+8
Ü(¨uÀ)œÕãzbgè¦ÕÂuè¥e–!–;Y†„“N«^Ê‘Òj7!``mCMÌ¸Œ&‚.9¯nå{ˆ×?ÿðöççuhÔ2Û“ËBH6”g­Írå¾ž–ªÕ¸s£¡~œ²ˆÆãü8}›;éä(3þ‚>š™ûW³)ë¬Ž©bžáVÅ¾¯ñL…1Î â‘uŽsŒ)ÓØä2uÄhª¹¡©Ó˜0•k”
©b)Å)¢"+SKgY–c-fháüÍŸÂ,|Ô!Ã-&ë²Z Ç‘=¦©o|Z†ƒ’C¨êp½ªcù?e@Éöi^“-î<²Ã	V.Ó:â—£º\gƒëfsáËéítr=_Ü¹ è?•þ­âê§‡j¨‡\Oœáa¾éz‚  TÄÁ÷‚B1W|‡qFˆxt¯¨ðËZÂÁæîÜsBújÒtwÖ'Ÿ¨ 6ôD¥P· m%1í¨§äˆ ?Ôþ‰X:].êqL="Úáúˆë®§Ø_LW‹åƒ×ÖP@¶#·ø?!PôÈ¥Õ[wuŸì¨ÖéÑsm™Å8ªTk³(ÆiæÜèþ„°Ê3Ø™ÃºsŒsí¨JSËŒ¢ÆäåRRM8'ÄP’ê<ÅÖ£:Oi–F9ç"ÏÑ!ÊÁoÀþU» ñÀNÈ—œ íÄzÂ©Ó	Ào¸qhÈœp1hšññÐ~ôÀç‰ =ÒšÝb|ä­`{oõcïÙƒÿöRš»á¬
ÁàmöüÌý0é§·ùYÎuª‘bV’g<—ÚÛþ‹¥©Ñ™…¡”Æ"c¹â"åb<¼!QžÚÓUƒÆZcRß\Àÿ9ÔR€½¸¥øóÏªHª‚W­ÖÊÂ×ŒãÇâ8¥„‰= ÇD#Ö¤²Ç˜	]Î¹¹+¿™êgpÉSÅ&rìÔ¼¨_ÆÛO­:‹é 6[´“Ã5z­¦MIg³îŠÖ^åù4€Î7'ÄÙÁû"¨]/5ç¡Ü6¦sM¤7ç)¢9r+$‰Læ¸©æÀñª&TÈ<£)¡Ö)J2†0¶)Ë©>ä§7½¾Y}rð·G’qÅ³R#Êì„&Qb·A¿	/Ø–„¾ÙEž2¿_ùofUre½Fþó×¥æP¦^lø£Êd”r¿mÒT~µ2Å-Düj’ü\ý¬L£’ßc¼øì!y±I–{Þ ›ýµ·ÿC'ÔýÓû*ð¡êä»Qp#,]#*Á÷ü¡ä¦û¹ã×.d“þ
~ž»™Êd›¯”«Å¿ÚîÑŽ¬
¾_pMJÌÛµL÷¹!üNkòC1EUlbh=¸qù&<sþSÈÛ'|:“"6º9"í.9Ù*¦¢Ž1á†tPøWÝÄ´yæß¿Å'O}Ž)Ÿø²tQ˜ûéð Aî5¨rÿñ~8L0a™ô³V#LUŽÖ„{ÓÊL™uÄàÔ¥VJoeaoE“SæØ1Ûù‡Ûùý{ˆ {ñç_¿NˆdôÊÿÅ‚qµÍüî0*¿J
Ò÷96*®…ªù×›XÁrKCT[ºXÝŒv‚Ë•\F™Bh’ÙâSuÍö«Š3ÔeÉf‹Ây¾ƒ9W=›IâíóŠ
³‘É1ª¿Ù$­¼[ÏVSÈ3ÝÎü‰1¶ÜrÀ­6`G<Qûñtâ@}ŽÚË]$È·²SÙ” Åh4c9¾qØécÞgß¾ýlL÷ÆÓØ™íéñt›*€½A6Œ¦;Š¬U E´O×»õ^CGbkÏæ†ëí2åÀÃßÉ¨'øˆyëßön¹ìujæøpÒm>^Ókç–gË‡ûU8è ‘}×Æ^ÿ¬T–O©ËK³Z,#®-¦ŸŸ£¸ðy¸D'XÕN=ôˆ¥•óïÁç¯4íÃÉ­$Yæ5"G”ATç:£&‡
?”f‚2sG&'†I:#4öJMnxÊÝ!&ðö“…jú‡´ŸUÚ;w´uÑH|xç!¿ ïÊ„ÍQ´ËáÌCí¢”‡|Ð¦}Ž¼êÔ´Ï)Š¦<«0.wÆ¸{Oô>ä&
EŸ%8ù¼ŸRŠû©~…úaM²Jù¡ân\>*Wðz¾öb(^âV¾¦{J‹ãÝÅi2½»®C<Ñ"Ôðið¿Ö“ð@(íûÎß¤ëÿª#úô9õ†<giÆRj3êTæ46ŒJ)&˜Û\©L(“é€mÌ\b3B0#Åyv0ã¯¦œùyP‘¡¬U°¼Z-nx–—]–ûñ»wyŠÿòÛW?ÿå7áJ>ªÏÄ·•1îÌçé_‡:®ÌYží;ó7(‹çŠ[HûäÒ$].>Ëã¥yï§»ÄÆÞºÞn‡ÃÌ†ã}fC%ÛÝ×+àVØ;$gLÑÝCrEiì!y=ÂqcçEOz ³8²wêÔÑDAüs»cN6»êÛ®GÕÍÔ!.ºZ¯äº#Þâm'q†òÐf¿’bîÝöÓ–·'uól”î‹@ÉúÎ€d^ië6Á=É‘ÓqJ˜¦ÆZ"¨Ò*˜K¬2Yê$ÇãeŽRÃ=¬ Ü9‘š”2lº…^/¡¶ä3Ãæj‘„I&›éåZ½LÜä:ù7šÜyý®5×‹;Vå•o<.|SóÇA• ‚å¢–"±ÌuöRæeU€ÎÏ?Í‘Iæë»ÔCR Ç3I¾þûßö‡j×Ë²•{ýNd«;Ã=£Í=Aš‡ï}¿¾ “ÏžÓ÷ow ž¹Úîª.D"ûˆÄëÒ!ûˆ¤ü·»Ñlç@U~]nöî÷%ÛêÕÓJ¯ÖèÓ:é3TW•d ðTêÞíÂ%sªæ€C¼[¶ƒO‰3g…„O·1¼4
kY¾´):Ë2ÆxJ?‡üZK­F@œfý¹ÿˆ`d¨¤,uqœ²	¤QK–€¦x<–ö§Šñ£2,¶<ö«?k±Z,KÒÒÝf'£·«=®u »Ø—ðÛîàÔñ—÷?”%º^¿­yàkvúé‘[xïëàÝÒ¬~2Aÿªæ=ÔçzõŽéöt_Ø3Õ.ì©~d}ø„hŠñè Ýrpã°/{Vyn…¶wÈÎœOõTM¡-GÓ]¦¤UhDÈùûlz¼&YÙ|d¤lïOpž•sN/Ö9`jgƒ-Ä¤öùQÜ³@u8Oešf)ÊµãÎJG´¦Î*F3ÂlFrì#*GZ§$sHä:Ku9-ú–¼°žfÉõÒÜß@€#ˆ×Úà·ø†1±A~Þ¾y÷#äòºþã6á®Ë²%'CÉïèLÐù›ÄŒP¤¹1¥XÏ€pQ^1Dý{-ê‹ˆçðßÙÅ§äE ! ÿèFJØß•Ž©l1[,§‡v<2xÃ±ªèñ2Y¬Wáß	³\‚ËˆÊÿ…@‘qÕC¨äê,„NWÎ®:Œdí¿YjÛÓËQá	ba­Ò©,”ãžÞCÈê:ð8AZI½½Í7­§ù£ÂÁ~
}…B•Õ\¡|ìýà¶új3(ø¶Õ7×ÔS›±–uR!Ríþ»ÿðÏÚCÝµ«&´àþ]÷ƒ¥ˆoï~!}{þ£ûû@Ãü8uŸªu¼ž-R¿càS€›Yx=CA?ü’Ô­2Ô^nÍ¹Ú©™-®/SIœkEÕx—NÕ[Sœµ{•WÆä.SŠ”ÀMó‹2Di4"ƒ\	Õ³Õ¸Ñ©2õkù,NÅêéîÌôô0V¡¨è‡ÃÎý]§ÍëàÑIåàîº)\x¬¬w´¶vçÀ¡’/:Ç¹¹¨¤6ÀèäóÝ¬ó.ÿ”%–/@Ä]}®ÈNcÎú §³M²Ùh\*Ñ€ÆC‘êË´zÚ˜O`¬NñâæWPl
¼Ó‡‡[_ÙqÅ@Nø½+Ï»¾gò,¯nƒ^pî‡Ñµˆx6û­µr¶ÂG‹´Xxµ!ÂÀØÝëï~î½÷ºjRÆ^ƒ|ÿÕ–Ó>ÈœÎûR&…ñ¾MÿŽgA®çR	f (ÀþGrªÁ¹cÚå)–^;Wþ•(Ïl–erž1šD2¦DúMÿ¦ÓÀhàïkàXÖÀÚ×À5FrWg*ºØàc<>2í›:8ê™£þMÿÊuð£*_¡>xÌßtðo:ø7<J÷h3¶éº¨vÛð8Tpô$ÊS¯†[ž!œJ¤,âÚQÊR•CÃ…p>JRI9QÄá\šÜ`¤r›)œãƒQ2Ý
X¯ÁiævŠa,]U0MVE´E=.W §™yU†±¤œÎoL ‚’—µÒ±7“—£™×ý/¥îg§ü!-Úy4Èºøbòj¹4/ÃE“_¼-@IõË›iYŠÒïÙMø§I6ÚG¸()¦×ó Ib(ô¹šc8Rö×^=Þ}G¬d'žFaD$n/E@»%²$'¸yÂªC±ñ4ûƒÃ^¯Ø€âOZ_½—	ú2 é	g­]Ó?YÓ$ìÜVwØJ›pêj¾:}ÝïäHpLììÐf¿’ÈNyäeãØñS…`u/F/r”ë/š)ìPüb5‘u(y”ÅÙ÷NJDñ&å*¦v¢Ì¨ci—¦4%2C™ÍÃ[—[	áŒJž
n²Ô-RI79Ç8c²;ÞgËg»™Ÿ>$oz•Ô«pÐ­ä¯ž2Ø§ò&yÅd]Ö^ÔŒz	ÈŠe É¹3s¿ü6y¾Èx±Þ‡Hði¸eˆãùîeòj·´ð‹÷ïÿô2!¿~õ]éª€¯Á£¾½€û“ÕäB«åbö2yÿã;ÈW‚I-ÿ‰kö*%o‡[¿	£ÚÓS–‘\/ƒK¤ž \œ2eÃ%D–ëTø!þòæO¥én±ž¯JºŸG·¾
Þ°äß©PnU­xqi<¨­³²û?/×~M¾›ŒÞæe=èªøRYl	F¸[ùeYQºÞæÅÍb=óÏ|o~ Cµê‡jØþ‘@¡†C5*XúW«39i…± ÍäD¤¥ ¬=üIh¡¬;àÌâ´éí‘‚z€f± ]¿üãð»ßßžÑQôe+{AöÆ“¥]“žhí!nú''(ú'(†‚vý¤º@¨¯(ŽÁñºßNô+;Ž„ðþ-Gox¶Õ/#ð/¾|¡Ç§éê¬ª‰Y_;¥œÌ±BðïÚ½9[t‰Í¼WûëÕŸÄþ<%§ßçœr«˜×ŸLÊ­Ér“æ2Œc‘;0bçTš¥Â*+r:Oå=$#$Í°Í$ÿ¦?}ÓŸ¾zý	KIÖðñð—r…„–éËêOïï¿¾þÔ=ý“õ'‰8§O¥?EˆâoúÓù—o€þtÚ“ú/¡?¸™/«?à«¸¤óI¬¹ãFˆjUçYÆ2A2FÆÈê¼â”f(å^QÒ†`š§4WÄqçÜ˜nNJÚ®=}S›¾µ)ÐU¯Á×T¦ÐT}æó2\0w¾¿ì•±£A}ZQåU¢±^%IÞ‹!"Jp©›œDßDtQx¥¿¹”žÂ¥„´F“ïžØ÷ÝÕñOÚçÑ3®ËxÍŽÑDª|ÛëÅ;s«ÇÑz*§gšø%¦=tÒ'Ô;™¯ï¯»ª¢>¡»ðÖ=„üÕø ªqáVëû2~ç‰Ôè,Ï§1—–Ö/þÐ­MGËz¥
–æŒ'¸gQò÷˜["•c¼þþ©\±®¶€•¿k«ÖmÍ¬¹ïj‡Am½YãCÎ€oØ¿nR“E\=w+cí²{Br‚#8£ ­iàYïnûŠhíþÁsÜÝõ+]…UD·8._û#ƒìÛòºH#®ûÏ%¤+Œ!\««{>AQÛä¦ózwÄ¥qdXEQŒïÖKÿÄÅëtšu¾
¸±Œ{(ðÕY½g:2 Z)†h–	!‘”¹ÔßŸrá$úPœå"Õ†a£RK)ecF¼a!S­¾Y½ß¬Þ/~ÀcÏ$•˜ð}«—bÂv­^‰t,Ûó®Õûí à’I½•Ë—´zOuœ±zÏÑg?«÷lgß¬ÞoVïe¬Þ¡[ô›ÕûÍêýfõ~³z¿Y½_…Õ6Põ=†/nÆ©0\)î	š“Œ¸\cNËpŠ8a
n\æÕP)p®„r¤qZtÆÊÕ«ðÍüýjÌßÊ¬’·éYÙ¿"Öþ…Ca
DÍ`¸°Ÿw‚á(“BDgûÕo÷7ø)l`&$ÚV.èk—OêéÄ²ßsš5}[<1îé¢àª—é_:.ó‚xa§æ˜v£I?S#åÉ#SÇ·6óÛÿs§		JÅÈð%£Ïw1æéým÷“@½éþKY3^W·%UW«Äošº”;îZ!ÿ{Y õjúª°€:‹á¬¤Þ@˜õ£µ „Ò,§šPAYŠunsZY­±I­Îs«2—Q!ÊÅåç¨à6ÌàcU/ëòÜ …zøÇ+ÐðXú½žçuÌê“û\óÅÛÆ’Í=éì®ì¦¢EÛô5jö•¼€Ügül/“ßþüóO^ý^ÜzSâ»äÓP xEh½£÷êvhÒ÷<_¬F+“ƒÊ ™ÎÌƒ™Ð|¶ejÈoÿðêuÐûßÿö£„ÌóPµü!±.7ëYÉ”ÊtàÃMaL0ÊR¬j¦½ù›ox±¹»ª;„RÅ"¹Y|‚L’º6y‘üîýŸþ˜üÅ¥£÷u¦»Ÿôïþòþ»‹*Ôå&ýÍÙ Q7Wä1[E£!W*­ê5ÅjØ4”kÍ…nò"{ûQEg™4F8†k\¾R=TèÞ¿ù2µ
È)ü‡æ}:yÓ=™’ÛžE7÷D«ü‹Q’=¡· P6¼ÍçZ¥æo&Mý~x8¡pÙFW ªg¡Æ=6YN%u*'Xòœ:ÕÊœÑHP¡2Ä„ÿÂé”1e™CÆãšãœ{ƒÜ*QP‰×†ŠÕÒ™» Ëy&oÿ –Õ"[Ì k:@ª¼arÿ°ƒP¥œ‚¤xÕj]ïxH¡*YÝÉ$Ù¶cí¥ïîõãK*ª’0Âb‘ÝºU`:}9š9ó±+ßÖõÒÜUS^-*ýX+XRq¿Âµÿ¹6¡²fÙã¨tç4ˆ‹f¬B]§šÐ¦[µ/6e~.
/¥4ò‹yí&s·ºò3ºªâªÞ•G Fî@ŒÔœ0Ò
1R¾1„sì/nÄ/„x,õ~=>(6®7~„)ËR?­—æ´Š8í3>½ðe=@÷Á‘:b­Â)X6¯í “{¿d±ÕÏ¶zÏä@nÈ/‹I!nxå4oÂÖåî×I<g¹ÿeS£”Á”kmãJ#•–!§3¬¬ÒRÇXêí)Ê¬QNf&•è &ýÆÍÝÒx¿^ú'ë§ïîài€Yâñ¢”jú‡!éwa]J<ÚoàÓrºZ98>jšÀIE½q3ªÌ/ï§`óÌ½æø×?¼KŠ/ÿ?{iºÚšÓùZvŸïý-€ N™ùhÆã§Sø¼,ÙµüÀ†*
nÌGh°}‹†å¬$’ÚÚq	Q›©ÌüØÖ g_&PmdŠä=ðq?@ÎräåC•{Ÿ;7K–Óëo4­¼ÉtWòk'å:1õoÅ(õýAu8o6ùnads÷rêÅ7ô¼ñV¬¦Ùm€ÜEµxþæ{o1fÀÂ]MÝÚÀk¾ž—Lˆn½]˜¯g¥JPÎ€¦uzQ/‹ÞÜíbËL	¥@ÍÞ ¦ÀZsÚ2¯bqº[¯†Œ•D;˜É$‰ÍðXÆåû9®ÞÌ§6Ëv
W×û-Š8ûã¬}ê§¢'cREÏ2E¹³6Û!1ƒž¡ù#µßBû‘¸Ù·½Ì±/ß”šÔÍº½©1üÖ^rÞ®ï“»‹`t(°ºn7n½Ì¸gaðÝ;ãŒ”9’ÎP”yõe&˜¦åÊ
Ñ&“4yÎç†)ŽˆuÒœ
B.¶?˜p¶\'?na¯‘ÿðãûŸü*ìÕ'µ.›8k÷²æ¡bÈ} Ÿ|éª^$®ô
…w#Szøì"[}ºRÓåsÜü0_@—Ñ¥•›>Pòt¦]£c­v{˜IccÆëŽÃÞ—»æ+.8½¡Å=¥iû¤ÏPpš,8]¨Û€i¹c£jþˆ¤cN6ø,­­zÿxå½’+»3óbšÎöPáÑ{\ð»‚á W|ø~ÜÅ&_]q>ù¿‹ù=ˆê¡øƒ'dG¹‰GÅ]*0Ë3ÿ:å4¥9KS‹”e†¦(Ï…É±RBz`b!:D°P(ãgÎw¨¬“_ÿ ž€?ÁÜØ`›³±Ã(ô®:4Êwhe·	“e‹¥­,›?ÿúu"4"Éx¯ ör³»ÜÌoîzvõþò‹ðÿ¿^°#:­E$lv¸à¤ÉÊÎµB±ô›6†Ó›Žý©’N·TÚæ{ú’Cá¦O—dl™cÐ¦n½Sð†æ#Ñ¦wƒÏ mŽ=žEY£¥›ö Àße§yÞ…Õ%Ý²¹¨‰*­—U`qüš£VWÇÊõŽdx¨!%PŠ²4ãŽQž:ÊDš"‘3žSJE®4Ö«çbU
à¥<Àa‘fêZr ÊþìŠÅì£«`¨œ]Ê¢€lÙÚF–á/]q9Þ<À.üÒÌ&Ûñ1„öÊÔºS&Z è8ãÆÃNéo6=ËhˆCÓ>É8?ÉGËYxcÁ¬ìàúàhãi@“Ï Ð"!jó^wãAµÍŽâF}Ýù£ðâ÷Î?(+½gÔ!ÊÉ˜æyÈpÂQÌ´¡Ü#…Ç£,¡™5Ü+íÀùH=ÆXšsŒ²œ©Ì˜üPÉ‘Wód?Z./à}˜iòÑÌ¦¶üf[Ü6	+z0Žc³NppÖÒÔÞZ/—¾ËÙ¶°Õ¨:]	ŽßÉÔ­òp¸r³º›]Ù¥ÉWã¿?Ü—Ò¿l|Œèeñî§Íš¨ðûUsô‚±1öJ¤Ò}‘SÝ<òQ®‰ŸjyÂf÷Äûb.;q"ö´Ìút>´ÆvDÝ'(­ò yÊöÑˆx·Ý€&ÿu§Ú>ô,@±.V!yøQfÃ`B#›JbyŠ±-²1œj8QÞÔ Y.s’æi®±&Y&\Î²<ËR¢TŠ³ü «,)î ¯p'X|é_ñÂUeÃ4R·úäÜÜË®tºZÖe;NsNk7DÌÃ¡O]ùp¾¾KýMÑnC†í3o¯MˆÔH5}jð‘Òxo™D{ñs˜)8÷iåpÎU´URo›«7,|‰ð¹4ðS ¡mÞ§×ÑfCYm7ãé>i{ÿc`¡nýÈÙŽÌîßàWRÊ°ÁPpÖCxX‡ÕYD{ÏSÇu”Jb,f4‚¦F ÿ)v’–[bqÊ%ÆÆ
o3Seü%Ú¦)ó:$= Úß5Do¨p¾žlqw¿^5R×Õ2ìÃ<KÕ*–ì³#m-—¹ùõ­!1g‘ç~)G&)ÓÓÖK“Î\òÉ<4ö!j{é ~ iÈ‹cý´…q;¢\³V€PšcíM…@„iwZ1pîõÌÄÎY?•4Úr¨ÇW
Ê¾Ç.Ï öç}:@(14N¬O$@ô<~©[?+@ôjð+ˆ-90©øŸNÈÚ}ì']3…¿OµÑZg4d¼ñÀµ&ç”(Œ%Ayª˜Æ"CDPžgNK-…£PÖ6g”!‡2 §ÑÊ¦
^ÙVy[û˜ŠäwùýKÿ×{øëÇº–y.S’|Vof“N¬#µõô¦Ÿæ,c§X…[]m{»¥ ürK‰›–|„7TŸ{uÃ<äï¹¨D¸i)FQtÑ°zxã°½Æ«/@<1MÊi	85@ôYÓÃÄÐàsû}6¹öôœ>#Pª^ˆï†êÝàW(ñì‡üÙÉ0ê2•§ÄË"K„uV¹œY–êk.Yšz€!\yû%W*Ã„X*Y¦M†™õ@“²ìàa÷70‰“’x‹`¼O¼%D{Ú¦¡ŸLRn}	0	^—’³òoaâ_H‘o}’¯Hjú¥á@R›¦üL0¢-Ï­–˜2–)ëÕâÿ¡Š3‹!eR#©´6FeyŠˆð 1RJ~¨ZôÞÿû7¯J^Üºeê–‹"	óþ.ùËûß¼­ÒôCÅÏÍÒÄ›dþ-±Îäs³êdÃ7Àá»Mj¶ÕdáWmøsRp–AZKÍC°â–Ü èj¦wø¾RÿÞ‡Ãû2æ~¶xx|j£»é|zgf[Ùê¢.¯=lšßße™GõÝÕv/u Ù/‘Ì$=àóBþë]Þ‰v1¢,º$B=:/Ù¸s³~Åè'ÃRU8”„×&†Ò#R¸VaÞCòD@RÝç‰u•õmî+#`š«‚ã{á%0É=d³…¹ƒ¸±uÉçJãEÃNbhNÁAÆ¸–BSK©a†;!¥Íp–3cNB‚jÃ¼í“1ê¨µ9wTçÄèCx†È§Šp&ˆm—¼ò‹ãq ÐáMbŠä÷Õ:TÌÃ‡ÑisaIÓlv)•KêN8kiÃ°-'´™ÛQÅ…S ©[v“dôùãâÖ„Úôóçßÿœ¼úém8“ßN bH…Ã˜ÍÅUÿO–qiÝ|>-®Žì¢Voœ×$Ò;Ç2’J	n‡(oÒî'ñ{k‰©¦…à/£ºÆìmÔû¤&˜NÏ(¾8vN'ÁN]CìŽâmA1ÈÔÕá‘¸áXûé,}<y€Ø“=ŠsCíT®ï¸°Gu†úÒñä>”“Š…;"#Æ[oîó¯ÎDw;õ	/éPx§,&oœýˆò46Üp”cd”ÀVâRžY)³–x¸wšaKò¿æÈ0©EŽX/’×;3ŸÞ¯K›d3í€@Èvâû·•„à
ÿ´*t_‚Yº•
Föîa{ÇÅ‹ìat£ïæÏ‡‚%ÒBPÞ–šs#àýUËJïqë ¡Hlšêfˆãj£û¦ù„ˆ‰ /Åf|ÿP¬Ü]òã–éê]­É]:’âÐbœ!ù‡ÍþÙŒ©[H Ü˜ö (ûˆƒÝ­~%ÆâbiÙ8|Î‹i
Á¸]˜ùðlžPËªÚ;;¬÷^™øž`ô½¡VÐ|ÁÃ.Ž“’±LJb¥¹ìŠŒ°©“YŽý„]f2gR5\H•º4åÚQž“Cunëf÷ÍtÅaŒ—ïn	k5sÒtæ¿
O® ‚Ó¥»[¬œ‡ åé„ ÑïýòÁk;·eÕœ­ ¯æØ@¯O‹åmÉåV2öÀu@7ª¿«„ò&joî>%^†­€\õïÎ&×¥ŸšXºæÅÁªôå³o ïŠ =ÌýÚw±.*n:ã{[¬ªr[Ó´dO^—Ó¿d8`î¼¸6JïjÉÇU&'išœŒAt{‘ôöäî™–Þm–ŠÅÊ·íõu\mîqç¶îvg8°{Õ`×½*!ïrÕƒŠ\Œ“Ó¨¢+æÀ#ëNÚé)ªblPßç‘L!](§_c_EÚQMÜSg.Õté®ý*v&Î–Hwº]”¡+Á~>ˆ&Ko¢65¹rÂ0•ŠœºL*¥$sœ2œe
‡9w)5Èe%Ï´JUJüµRxó Û,«ŽêV‹Ä«%@ŠpS2¤†éB=R3ø8°­ihpTt{<™Íu7½uãÜïH3¿j<ÖCùKX•vó— (±=ûo¤Þõ„bŠ=ˆ5+¸að£²Ø`’í2•{¨wÓ¹¢Fš”¦ÁkYûêÀ¼OÇÜ7Öpw£vŸcµ¿åGš­õÙZ~´uÎÝr†›öî…â qH“ÃñRtŽ½EZ,fnÕc¾ûùR³WËåÄvfq [s¿½^Åý X”Otãææ==¢H{#”nˆ’2Ã\n¹Ëx†­ÖWØf;·(Ïse±œ¥XzÔ`ÖðC™¯¼É—B	Šñ¨Á¡¤œ"±^YÓõÝ›W?%vS2µ4ã:Ïª¨X¥{{/`Š‚	
ÆcYÜ:ƒŸ¦ó:e¬>ÿ,‰Ý+¶›eûð ”çÓÒÜßW‘<£?Ý»y¸”L>oX_Ö§¥¥¶P•’Ã*9Ûá¯ÜÍBÝ•)n‹Ñ‹é<›­#“~|÷æí¯_†Ëùó»¢üé#MÊ¬ö—‰[e“§¨[–½‹½´m5Û=Nåˆh«á1Šîe7(&9¥%B)¿Y£u?ÀqxÆá˜”¯NŒöPsi}IGíÉÑ>æ:%ºÂ=´;eÛ]œmÒêh›/`•;æ>íÝöýÃ%F\¶z¡1o\Õ›‡ÑC¬£z@›'Xî`Ä7]`=MgiðÖ°I±˜ß½,®¾;rŸÀ‡ÞwÝ¯¼€1nACnùÍ»·?¼þ õ4yäÝõ½ƒp\¯;ÇŠŸÂÄY]µ§ó$ú‹óôÇ•=ð9U-+Äín±gÝÒâr5³/~óÇ_>üöÕûßy†<:±yö˜í?Â4àBªEO¥—QK§)Uzx,óONU»P>ß$ßs©…ã¼Gà8Î(³é,U’QÇ,æ)™‘šqcr‹‘fJòÌ¥¹RŠaŠ”Ì¥LH™3”$Ãiž¸—ª ×Á^&~Wá‡f\Ëí'y³Ñß=ñˆ;i¿R\x×BãÛ½CEá²Þ¦OŸ>M ¶‘ï¹TTÆÖ,•S~„¨jÕ
5Æ”îj…cEv*0È\Šf.·ï¸Ú‡ãÎø…=N=Nõo0ž,íšôÔa%lŠEE®ÈÉýX1=T®;¶«§t‰P©Ê^ÄÁ±I|Åþ>ù1ÈÔ÷µ^¹#
GQtEÿ2´ÙfyÜ3 t1aìÞà^¯¦1ÅÝáÙ-cBã,G\6M7›Î×Ÿã¢ÞúND¼E¼rw$8c³'ýú{ùeïJ/onÆÕSšn·FÝäîýã­L[ Ú8 «¯ðú÷Ê¹fu(Ì±º`jïÎrŽ6MC`CþˆJê˜3o¥šZq”òÂ9ÿÞpž)M{¸ù¸5©•Îê”0e"ÖäçÌáL¥èÈ!ORGÒe\…eª05VÙüXàc]å6(.Í5èöç5×k«kõ¢¯F7‡^1&Êº·Õ>"\µ³yŒß‹æ JI¬vˆ4òË¯ÚT—[fÜ½Yz¸Ä¾ëÓðpŽÞqºV£í§ÔlÇè6É*S›Š»qùTÆÆ×óµ·%c\ wA˜–)‘}v¹·Nèû„ó®K­³ÏÁn£‹{šÎ¢t]Ø'rè–îÎ=B#=ÈàHpšbž"ªAg©Ô©ä"J¤Æal%å2D¯P‘çiŠ˜ÿUs“IoÈs$zå1
n§z4‡àð­OŠRÆH–ú©·mWW;ƒ8’‚(á»!)\*°K&»9 Š£&³‰æÑ•£‡Q%¡ÅCçóÉ?4×“ÑQê¡,º!u¶¾«±MÇœÉìâ$h:Ë.mR_WGêà&ŠôqxCñœ¾îG{ ÅÛ=Bï¥ÔŸÏã}·XÏ%¨Å#	%ÛzÏ=#!Sãm.¡sÍ¥”ijNu†­sXäÂpFœB.UÌé9'INM±°XŽ=Ä\Â¬JFÞ0×ÚõÝå¹Þ^]ùxÚâ"ë€È*án
þØîÑ'+Éæa »ÑwàÑ®‹×CDûÃe¡àKn27
å5½\„PŒ¶À]!ý ~”_…PŸ"y‘{a•¾…§ó|(¾.õòÂOŽñ/kcºùäÓôvzïìÔ+~»úe5•vÀ!dä”c¾SÀ>B‡
`a¬(ÞÕDh7…€‚z˜œå(÷ø¸ÜÝ_Â°ä8nb®7foê§‚¥"„õdöx/jg¯`õó™ˆ«bºrãûú¹ÕÏË_Pÿ8™™H³2\ÞP]TËqx°‡“p8ÝNh}¦V·Nð#m¹3¯îæñöByÃþôË3M¾• á·âá·’á·Òá·>²fìC‚; Èz=Çê\¡Ï-ëõ™÷?4=€/íŒ¸´/bžvCà	Ù8¤Zù÷J1*œañ*¥ÖRsœZäPŽ%À×Ê ËFXí2éŒN5AHs¦Rgr*¥TsADæ´‡èZúÂì#Üþþº—¿¿êÉg¶Ž¼«z‡â„ l/®Axm«ÝCÁ¥ »üv^çb;Q„!z5øÁÃ^iãÝî’çàóê¼ˆ]‚Ó	„”H¹ZŽòHë>ï{Do1zUï^/ßy=_¯fÁ{Nc!òR3=Ø[Gýær8üáÍüCoŒÔoœ&|¾›‘èÐØ/Ù‘1•»¹±~5‹›3êÏï¼dXK7Þ<,AŸúÐ£|‡–™É0ÍNsâÎ­$È íÁÜ¤FJ®±ÈS#RË\®³Ü¢;œ9Ä9Ò¯æ´_Hž‰ðµ¥Ä6œ9»ÔEU'OGS[öwµy`íç÷Z3Åx“¢i íç÷Ø_ˆÐÀpÁÒM’Z!y¤×Í–‡½1®wÅs)Î4¨°ë)Ÿœ¬‚6õ‡@t9¨îÉC¯oWãUHaÕþ‘|OM8Û»½áèýÇ’Ëåf¯]¹XmQõÛuS™ö<'-5sãgªSŽ>·<˜»YüõÛH»ãG#ÅúúÈpbŸÃâcWøÞÞÅ+gîvG°Û]lßn³ñý—ÑêQOWðßIø¼t~Êé+ƒ{fÐZÆ‰P¥LrÅ¥GÞ#.STç.™e$Ç”ê…XšS‘z—ÞVÄþ?íú…Ö•ÓÑ¤}ÿ·^Œø¯@õ:]d]qt\+¢	Ãl§*Ñ˜Ñvößîñðb¬ä.ù<þÕº„-0Æ}³GŸ[¤\ÛlOfœP¨ï‰ÿv$Ô‡ÞÎ¸–cÛ£{x´w.×òic?éŒÄ¬¯éÑfg}2-¯ýŸÀÀÕ£‡:4¡çmw¥-y¹¸¼¡nþóîžM‹}Æ^˜ÕÃ2x^boçã½ÖÇŒ^‡«éìiÏ6Ióü‹8$±Q2‡EgK˜Ì1áp¾˜ vª~y›ápÙ©a	Z`g±Ñy–æ"K• :£F˜”æ’ä2r+‘ÃiÊ¸ÂÜID˜ÊÃNSs°ºP“Ý’Y–8Oªõ¨¯îpš½Å;c8T):)¤&Œ§QSß´7åÌÜûo6]M]¨áõy¿SëbÜ°~¾ƒ£ÉäÄØ”Ü'zïŠËr–TãïHLÙ*â5³7¼/ÛµNŠ‰WîwÕN®´–Í0S¯¹JÕ'19[ÿñ	Æ•Ä°U6DÌRœ¬ªb*z–*Úe§¢ÚSŽÓ¡Û'î.Fá<c·Û¤ÛÆGtç(ÚìIzóó`©—fö9ë3ÒÝ{üHÿŸ·þùÃ»¿¾†#®Ø³ªÃ€^yRùOw·î=üíMu×ÿ÷øåšà¡ïµã_„s4£ký›óÏ£é»˜»=S^ïÎš7Gîø¶›£XÛoŽŒ@k¿¹Çsz|óIsŽ×k½¹×no¹»ÇÛ¾79¥krÊÃð6lo¦§›ž²`ô”a³S†ÍNYmvÊœÙ)¯?eÎâ´›OX0qÊs§"yÊœå)s–§lyÊ‚ÉSvØÿÏÞ›µ·diÂ÷úøê»h»S¤c_j®œvV–gœYî”k:ïü"ËÉäb[ùëçD  @ŠK  e¹ÚSÓi‰BœX<ûyÊîƒUŸÓV}N[õ9mÕçÀÔPô¬ºÖ}N[ƒ¬ë5ºÇË‚Ñ=®·îóªuŸ/V+Õõáà—L÷ùVê~—¬³2†Û™=w¾b-­¶‡ƒ;_ÜGÝƒ;3ÜÇVÀ}l…0¸ÇõP|ãà~£{\“]é›­F÷¸(0ºÇMI¯ˆÚ=º×Ûîµë^›îÌCÃàÎ<4îqÚ=l¤–~§íÁ=ÌYÚgfÚ‡“Ñ>v!íc/Ð>
ë³gÖËëÁúœëc’ò^ëæ}.(ï·î¦4ïsÇxK$~)¿vQÄ‰³
vF¹Þ>„Î¦á­¶‰ÿœ<Õ`:úøqÚµ#pŽí£eÊ£<÷„\Z&„—‚m‰Ñ¹D\IOH²…œÚ1ç”’{“
ª¨ý:""îmIóÜ=ìr¾ŸÙßF“ÉhqÓÌ˜ŽÃ‹8j3Ér"ý.ª‰fŸÌ|4]-à–,Ws3¾'a&f|·-.bÿ’Ð`´žeé¿,Ïà/w8œ­F·«±Ùçç‚ ©±’ìR.¥ÖezgœŸH¹™]Ê9ÑM¸Î5o‘[Z®t¯\·FÒ_dºOÇî­÷®ÄTµËxð.1ê=œ!ëî1ïIdÎi‹Ûäx¥WÀáiTÒ˜ÀÖ0™§ócc(¬7F !rG97VX/,b;.ràÒLZ.ÉBX
nœtiÃgûêâÞ¾ý¿¿ û\FØýl¾šLü<¦Ð×éUûyr5
™[±%sd¦UVU$
W($°Fb¤{‡¬®8Õb5Zú3gçÏîf£aù>cb~øýE|¯»ô‘DDã&ÕH(…ÄîÎN˜ÁßÑ&ÅDRÔd¢É\t9(ïÎÃÔ æ­iÁX}uõòëÍuêYwäI=ˆÞ9RŒ2Ô•ÍLXjËÍµNZ)„Ãm†Ú{íŠ;ç:?D‚O¨¨Ž|âõÔc—oË‘‘P"ÅN	{nò›­o!E¤UV’Üð¢ :å<“„RøCÔÌ1PÌ9höÚ¡Â9k­ãJ¬àžq”Ô}8pü·o_ÿx$%xWYu¶Ùpø¼é³ðr†ãñ§ÛÃu[¼ÑÌ>B ‡w7³'D†?mdÐ28k‚ `&K¯ †uÊûð!6oÂ0\­')zàŸ$o¾·Ò­Y[„ºæ:ÎÑòË|t²˜½JÉaDÖ“öÒþã·)äe>VUôá®§åÙÉ¨VgàÚyî¼òŒÊQN9á\éXRn…#VÚ ëB°)øyê7X;ÊE¤8‚”úoÍµÅ×ÿÙÇµ‰bÛ\Á7¹6(øÉê|2ãJ¯zø:|»[ÉÃcòm*¾%¾}ÉékñíG¯B<Ÿ®Fš¥zoÈPÜ7Êhé5§Ák±’"¼Ä…qŒÚ¢ÈÉ=.(SÄD UHn™·ØÂ(+ÔØ¶<°vIocV;N2Z÷O${î
¶r’ý®m°EˆR~%…–LïQÀElƒP¨&|¡B’T.V7ˆ—b@Úúµßž¥{bõ¶ÒÛ¬£c{ÇÞ{ójŽÚòêõB’ðvyóå@½Õ~Œ·û¼gr—g-b¨»ßÉÎÂìû]œ©sï—ÛqW……Ü¥n1R¬@›Ì…UÊ\HŒuDhÌYžSÄsê„][êHá”', ÔqŒ”tR{¶‡ÛÿþËÛÀ£«Ž¸ëà¦Þ{®>	ˆ†w~YŒ—%þPÄûÀ!ÞÏ½5Ú|÷0¾tÞ—2`d/³Ûö\‹€fß„0YÝ´7N8®CkÃìÍòb-O¦ðu×^àc#XJÕÙ7„YØÂ7úþ®uSßæ²žÿ²8I»v”-F×Ð[­™,Ç±\{Z~ž…ºîé¼6üþÎ,o.³ßüØ|ùõçË‹pœW4ë2ûýêíûËìf¿–­V64N˜ûáûiiÒØeœ¶
^\f×ÓjéõG7ÓÛ kàFY—Á„X0BN°9\WXYfÖÀvï¦«ì³	î+Ëíj>G3/.Ö2¸ºžç¶ð&‡nP`BÖd#„¬à3¹»‡1ÈO[HÀÝBMYË—,¤V8ˆ_É*šnýxõúñhÕQŽí½öî°@ƒ	ÛÍ‚µŽÛîä’Gi¦˜;h×‘/¦î(éÄˆH+b½¿\ôßÖ§z+Þçß¾ùØ8	‰`Cš˜ì¶k4O-Ø=81Yx÷àÄdáÝƒ“…wNÎKÜ=81•~Ïà~S'¦Òï˜T¾gtbVùžÑ=n
ŒîqUDŸ.’[›ìÝë²¤v)Ù3º×e¡½N­ÇMKNüÝ=¸Ç¦“3Óka•Ìæ×Ï×“ÅÂ­Ô»±{têWbçèÔÖ9{F§òŽÑÉ¨ö{§r¡£…ÆŸÉ/÷kg'Bã—Eù­õÔÜ›ÕrT¬Æ rÏRºOØÅbáÇ`&<{³¼sØÉö‚Oƒ|kº'‡ÇÊÂZí¦í<ÚYn™bV*‚­•TJÿ
F…0N0škã,ó…¹·çÈZU8»Çóñl'[úÛ'ä7 õ§#Æ±e>â6r\I'¸-îÝà&+Ìíh<2óËlv|.w“¥ù’}¾Ù›ày™…v‰!ÿ|ºè,=å·æËè¬Ê$7ë‡YXÐ,jJÁÝùt>Ÿ~†aóémôä!Öa"†Œ½+Ñã—0¯¢3æõ¿Àä›^Ô;ƒ¿½ºñ~in.³_î®o–w—q‚ŸÁî½³WSXÁ,À×á/ë“+p›{ç¼«ÝÏFCXiõËU„­ÎÞÁ¥{¾	\Vg æúhâK§L}\ëe_„šNàþþôÆÞMWË¸¢Ñ¶2Z†‰©ös85øž»Än§!t97#ØœÞg3wah1ö_Fù8<áü–ÿÉŒÆ¡½e\|nà6Š‘èpJv<.–à\Z¿§‡þH.ìt~^x8çåÈ.†û{<„/W}é^
^œèp«m¦s:l>þ<ËX¿øC!ïÊC·ý7’íé™)—äA€nF¼¹”Š§†JÂJ‘­J†Ò"Ròì—7ïã;*_[ÙªôÙW¯ƒ‡-–<ÿJQ”Þ~ž‡ÇÒ×ÑC™¬Ë:Ú:zÂbwÚ-­¼1ô‘E¹ÅùO©Iª(~Û™ª Ù>®fÁ~‚MI”l¾òý¥÷½òAšNêÕÇÃÝ²íÜÛø™ÃŸýü9¸÷§Ú5HFÀÚC©[ªJVnD!©UžÎ5!ÂræÑ6'œ"f6ŠSSât¡ˆÎuž#\ð}É[o@ ÄÐHÐ_@cyñ÷÷ðŸßÃAà‡ý–á¬u4ç¸õrCçŠãË³Ëà!DçY¥ÝÎzr3Wñå{êØ«}áÛ•oZlI=xë†ÐST«ÔÔÜû»5—dP^Ç[|-Á¶sï½S„ìÆhðÏƒµ;¿Í‰”SBfXÑzžã¤
ÑÖ¶Køá[pFôYþ¦{ù!“NíÊ¾-Øï‚Y<s%sa_xä˜Ež"ƒÀÈ—X ©Œ°¹X"G$H5­Û#­^VÖÒVÃ¼Pò£qæ¿{5 ©§áÈÃé¬m¶hó$	¢ìSü7eGøõâ~ÖGkÙ7¿©åÎüEÍEÃ›>$Ùô¦d“À)÷tîÃ„nu¥ÕFêÅT‘dáæoåmújÝ’ª|ÿ&6·Û»YU²cb2¬å0·ÞýO0÷›="âi2¦ÍG7ÕÆëv"v<ÚÕÛï>c-DêÓ},ãÏå«C½îö÷bê¿:X¥O`rn\Þ'\‘¼4Ò…ÚI³[¸^¾†8VÚq	L„åN;l(+p‘ççV«Â;­7y¼ïÈhDÒ¬ðBäLNÅÐ>–Ÿçfv3²&–íÏ°*uÒ_SÎŽwÉÝÎêa®¹É~þç›Côÿ=D0á o7%0Ó²‰ O´’¿pšßep¯â ÝµÄ¿:þnr¸»t»^~<dÛÝK1xðéI±ªq]ŠIÝUÅ9‰€Úx³'R](žVPMÝ‡Ï‹ë’*=^¬[?³v‚Ê3°*Òï™±„If¡ÕaÄ”Q›\a0.%¼Ð4–¯zmAû€^fÿ}õó›-Uù1?û|£AXï¾„cºñ‡EU}J™qf¶â/†FË¡›mÈî…W\FˆrŽGf²¼Ø\PàiÁŠ­–›€…ó`y!h¸^â0ƒ¥\4VPÇ¨ãpÆwa?¯àwç3s‚’ejzµÎW¬'Š*°i/š«ˆKÝ?3XÅaCãég˜x
ï=ðÏ°ßI™‘Vñ¨I¨\bç†£«,møíÕÏoÎ+´aºð¢6ìŽ¦ûÂŸJ0É©h†?• gOÅ/WLMa­5EbC\c„0ÕÉùëõåÄïÒ€µt¿¼z›Ûî/²¯bëÊì§É§Ñ|:i‡‡ÖÝ/¼s÷}¸äB·v–}¸Ÿm¿”#ÙÝ;™ßa	V>Ý´ìùÖôkWóÔ%ÑÓÜšà£» kqƒÛÛÉÁ²;„	"Ãé‹C{·m|ö4þ¯Ò]íñ›Øž?…°ŒGû¥}oÌ‹ÀQªBüÅÐ½À(^ôºúqþ|©ÎÄ³k¾è¿Ì`ŽÅ€ž"¬=ñKãÜ¼»_BCØ3rÕ6¨-$sØi½0e8ÏÀ„¤s”;‚´‘:Çˆ0,<ÅÆSç£YG°ß‡Fø2›…ÄJ‚ý}žÎ?fa“¡†¬ø^o)cŸ™Œf«qùÁQGÅË$woè˜ïÖµ÷†½¸xkî@{¢5¿¸¸Èþ3{óî‹Ë‚Äýß.ap3/Båâ#ü3Ùt_`ve–e”$~ùC ÃNFÖ	lvl‹Qq~ó®ÞN¤ã¼‰¡”˜›VCÙF™u7¸a‹ìÙ«7¯»åîÜjõ÷@úzVÈe6¹5³çÞÂ/+Mv:‹+šä³Õ$ü{Yjä°óâÇð=yuÉ°¨õ¾Ë”»rëâÌÌcÉ'(Ÿfw;,Ò/#j¯…2Nxµë¥†±“é²êý£ÇÓéÇ0z5ËÞ¼üõe˜)mì#,¥†ç®ý¤:Ðìõ¯WpiÂõ÷qøj)Á«ôsXÔr×CBÕ›%[oöØÕûåå«­}ÿôÏ7 ¹C†$héÅÖ°½‰Ÿ~ú	´èk ³ˆDÌ¸¹•ìÙ?þùæ¶úãó­]®šéö%;g^FÃyææÿen_¬YÏ~§AüAF†Ø‘EøÛ&dšRK*›YŠ"DR›W+”\n ZºÎ»˜t6³‚}¿|Œ{îk¨XWÿYµžÃNžÝB(A}­¨	8Eòiêk{‚ß@²aÒeµïSé$£ày€¾“ži‡ï³[:¡,ãÞxêg9‘¹56NyÎˆ•Ä¹Ü;^˜Â:î	,2Gª1)¹gUø(úÎ}—ø¹_‚ðúä7X¶ÉCÚ{­c¬}D­qyLfçSÐNê{‚Vr]­J}iŠ¾XPðpî¯€°Ü¸‡ÄÃƒ„=EwãÀ{æ›YaÑLØc„‰Ô˜Êzu%Â°hí£ùåÍûo+¤²gÇ½+¤s`e½¢£Ä;8Aå´,½ö3ÜŸrž”	’ÅOk’ÿÚ·m‡ÁY³ü*~ý¥{^ãŠaËä¯(ÓÎãå
q„¼tX)íe sÄ„ÒLX£áªÀÈË¤‘ÌÈY­÷ˆËWpC–•ôKm$Áï1é üø×ÊnÝ/«'~o‚®Ï´Î#°a.xþrÃ‹y~‹åÊÝÕUf‹å|e¾Ñeæîà¬GvQf«IeÄÂ“eðåËÚ®>k¶{ýî‡•yu(²Am6"˜3¼ sJ6ð(Žû$@ÕF\ÆUÂUÔ—ì	[R§—»vÜ[\R!º‹Ë¸¢Ã•P{8A!ñàØéü`fýÑUœ–mÆõ|Þ©ÍsBå‰¶B3o˜Öb›s‰5[øÎò9írf…Q^‹3ÎJ%ÌwÞù¸¼S&óNÁ8°Ïî)BÏÜÌ¢!2DSëb7®ëwFÚ·gÒDv¬~=#K±â$G*WqBZn7zß€[êÀ;r^ŽYNç	ÏÎîª BÂ³;šÝ%<wgnÇçZŸtK÷Šq°³Öí„Z
+^K\®¹,´äÚPšŒFN(„á¼Ç¤ ¾G¬µÈŠi‘[*qa%Â¹?æÛ@.·™’+žÜ¼°›røKSùá*àÑ2¤T¥%Õž²R¸|Qÿe$Ï'f®AV‘TÅ±bM±„Ç»{‰€»Ù 3ÅH3S	®ÓEÒçÐb+Þªnµa­ÉWj×Ø].íÚtïðo-Œâ2ªqØÕ³ïK”lš÷«ùæÍ9Ù3¬z1›ß•^/ïÚ3ƒÂYE¬½Ë_úï÷ÂO}Æq"\ßžá‰Èffº˜Gm^Z«Ä§3]ðoÀ=š¥&çïdŒ;é}gO”P?™.z¸èPÖ¨÷èAïpA~ðXE„IWäŠ‚ÉœCq.¤qÌä9FÈ)t;î¸tÙ‚(C
¡&.GË1QRØ}€ó¿Ø¬×S»º­3\ö+páH²&B{ìæ:žWgÓ„&²rÄG@ùèXMª³ÁÙ2`.àwo#?ÑÔüî/A9‚á‰øtÀçúñ.s¾0«ñ2 ³Eð­ñøþ‰%_Dp6Ðú\9–C„—è1a…5Þz0¢bMõÔ]öù&ïwQ­ùì/ì_µ¿¼?™ef.`¬Ëò)àgãÑÇêÉË›ÐÃ!<^»CÌøÃ&W!kë/yO—YøÅž³ðçlºZÎV±™îbt;›y‰9o¸ˆ gÕZ™5³pÆbÏ¥.Ìh\jÀ‹zûðšEÐšA,–wc'ºíuÀu	@hŸ¿~k—u’Ó]ÈIc¹~±œÞŽþ(l°@PÑ®ËÆmZ\ÌÆ+ ¶fïÊê…º2+-¾¾Jœn@ö»©-wª.lÈ$+û®»ðx1*‹ø×€pf¹œîëe‚ZÙP8"2ÖEu
Õá”	 ÿ[`o•2]^ã¸¶ªø£Ì=[øxr4,áznnË7zÇƒU×xQñ‰ûwtfÓ",j£"ÄÜýäEt.÷¸ÀbL"Î5Œá#A©ÞG¤PxËØ@„ ¾amÀ¯%G`áƒÈ‡yaÛÞ:ä‡4n•ÃÇÀÃà×éwÜ©y|í)K>žÞˆD³®¾3XäaT;wh²Ú“Sñz…9Ýh­ˆõð¡…œªÅÍ_B–ïáÚÁúÉOÔ9Zësy,/ÜÃžÉûN 'Žc›ZŸ2ÏM×åæÝÝ	×öîî†Æ,·Òß®Ã—þ/,»Z 4“ÿ³¹x÷OÅIòSñp³áƒCaœý dhmXºKWžåžQ#/˜ÆÞ;-œÉ¥æ<Ïu¹eyUn½”ÂXA
K‚_CÛ¤ƒ®È-aË®<h€£å]¸©°Èžýzuõ¼c·¼´).âQ6íž z>{*OÔž~«ª7á¹w¿=Õž/v!ñô¾ûFI•¦T×–óü$P	e—¥³+á{›•ŸÃìe³´±ªX˜-¨2µvuõ6ûD"îî'z™½{u™½û?¯®²ÿŸ×?ÈúŒ×?‘ËìêÅ/o~ùé2û}È‘†Á ‘–±EÓ²Ö"#žñzíA*5ÚÁò®J1kÃz.F5¤aµÜó)À#ûIö·7ï®˜¡¬¢íÝyõ,Wú%ý.ýŸ`n˜JÑüóêEÐ»^üR~üâ]ÙjñÖÿ¢¼ ªòîÇøx_Z.(‘|£«8XI²;Gžh¢©Þ,V…Çy³VUAÒƒ’‹E¥ÅƒÃßí6™‘A!¢5bïá§·§B¡èŽqØ+ˆ™zL}53÷[vÔÌ)Ûòñcs%µ°=áœ›¸U°€„™ÓTÂ.${9…Á®˜ÃU™¦zmÚþi`:hrë­Q‰]:¶G¥¶	z0.±QÎÖ¸TÏõÖ¨ÔDÕã;ilKuoŽJì6²9ªÓno­Ó¶:íªÓëJ,lêt{Òlêt•tê~ÌpÉ-è3-ØÓýóíÔö¸Ä“X,ÆmW=½æK‰÷uk\rXkk\§ÙZD«ïáæ ´>Sß@(ª‡½C*ï^kOï[\¢¶€Ö;!6ž3­(ÔJZ8/„ÖrØ)­¥DÌ
«¬>ôæÑ
YosB99–½ÓD<ŠÝt£±ðÒršý±òpú¿¾—•¦æ¬ÞòÄ6àyÛOUYµ±ÑpÙðem‡èk0'ï³PCÔÔëElþÖ	–"˜€ÿ‘}2ãUl
sÓP‰¿ÌÆÞÌ²`¬Ùm6ŸƒA:
jFËÿX4¡*3v2±¨Y}MTÓÜ_T˜—0&[ÜLWcãLY¬¿»/á‹V÷:wÓÔ}ì6À»«öâë:Ø[†`ô ¤›îWÂZ°-D%1mâ ÂUN¶UãÚñ[4(¿?-]°wšZî[î]‚€tçÄÙ¸œÃy»YÜ!²µ›??’A“ù¶%×·>¢_9v‘´ºÝµuîâû|a¶~_-[šXá,±…(pÁ
‹¹Þ`0S‘ÖHzêS\XQN"OæV›ÜpÉCûòI_f…Y,³ÛÕx9rÀ|&‹ÃÌçØ¼±¿_Ã³(XÝ¾»+EO‰œ1 ;Ÿ…o¤6€·úÒŸj}Ô0~t=	áäé…/Š‘žUàøëê_á–Ä¬0&:¬¡U.B‹›¹+Á÷Bh~a`uEx¦eïyà)0al¶r|ò!é‹’ô0ËÖ[*½¸ðF£cyuëç#[Â†hx”TÆÁÄu$?€–m×\–ÃÍ]Ý–j`mæ4eg¸˜Ò¼„ÚÚqW;:œIL©õ»ö¯J™AÂíóª5,VV½·QÕ*/ÄÎç~ÊPVó˜þ$vø
\^”Æ£‰7s qíó¹)óAà?¡º}u›ûù%ôñ{ÙH‡Ýæ.–þpê/ ¬¸ ³»Rûˆ%*A—˜ù9¼ãÒ'NøìíÜâ·öP7	’cÖ¬X‘”0‰ÕîŠª	Áb³ÞKÉ˜&ÍNnXj ‘ÜË-.sPr‰A‡ž6^n_µÒIðîØqo«%ª£ÄËÙ%UŽqðãT9pûP¯Åy˜ãX±
Kç-ÉõpÐº0ŸÕ—Ay>é© »ÆÕVi¢·¬Uðí¦á›ì×Ü—èõ&9ÉÇfÑÆ«T™u†øŽH°ÇÏqÞÆC%’òk¨–ÚZí˜0\9FE¡@ÇÄ4K)”Òƒ‘ÌUÈƒ…&åTLe:/ˆØ£ZFÁ«“J9)ò¿Î²üVuž¬CŠ¶;i¡1ÁÍè²†áª•úÎê»Ñ3cÕ7 ‚Üì Aì%Ý_9‰¤ûi(O(wï+×ÒOþ f³¤ÿ©_êÌÜõíx»«}ãCÂð¬ÉVZh‹´¿0Ë¡„¿ø÷Ó¤úMçÀG¼©›]ã¡eé¾—#l¹.w$Q¬@¤àœpf”Ä¨¤6E¡&E\Ì¸÷Z?µìïø*d¿¬bâÜ•_–ÒwîoC7ûù"-CñGì¼ùw’ý£<0>ºl2Ù€Ç[þ1`ÉÞ]”—é¦ô›Œ&Î¹/ÈK¤Yï²ÕìÑ:½]ÝŽ&ÓÅôÍd1º¾Y¾Ø¸Üù$hÓ¯÷¶Š×[pèžÐt/(”¬4Ö7ˆ7®B¤{º.ýÞidû¶ÜÛÃ€i×ƒ%ÃßÍ‘®ü 	Š²r†4g@'šßªƒº0ƒÐ'=¨¿Ýø9©ú_·‘‡Æî£u‚§szÂæ&Ç‚\k’ì©†n0'XÚ\ZA¨åç\£INq^„°´Ìµf_Gó\½ÌÊÝ–}û¹ù:XÚ|<›xïJ7œ[YG®ÍÌ,aÆùc±c˜ÏúÏfüqVfßpÐZÛè\#‚ÒÝÜ˜)¡7S1U`Á5Ù1C(ãíþžª38xUÚ¶ û:Y¬»W'ñú7¦c¤eÂïý‹:Äê/ýq¿½d&ò¸÷ÀþþerPåîQöZ¡ÜÏåÁ£w‡*ˆ:Ò±Y~>É,åž·6˜h*í¸;¥rQçiiäI	?Ákµ0¹6>`ù1Ï°V`ò…±cÊ[ã)°ãkÌ1¢ø3¢L1i÷	¿™ŸdW‘‰d/_ú¹—½6þöP¤{-u)M)ƒ³³<¼§-ôXªÐ£s–OƒÒyËdü£|þ»°;‰°“ªcuËOüÚâ©£Sï{xlÙy25â8½ùÍdP6Ê
äƒMnUJº@³™À¶‡RBLz°flƒÕbôå jqïê[__ü¾ÊÙ·ˆßíÎè4u_`Ú3œœâ{Â¯ ‹‹Ûœ;I‰`”æ\#q®(¡ŒXÇ°¥Xb§,ñ>ôØpûâs/K!-Ê¶•AxdÝ–%~ûûyõ8r¯z/Öïcwµ§a%tÓÂ‹á=-/àõ&-!RófÏÂ°j!îâ¼¬´¥«íd-I-ƒöÁf{#Î‚šÒ1W­å`nÇWñÍÚ»VR>œ“@®±§aÝUçð¯Åt² ¦rkÎ’1³³®ø	 ðÖ5°-Ù,vŽ
Ê´á\XæwZ‘ç’ë\q¡$Ñ¾à˜¬žÂ§œ:„±Lå^ís±½óóx¡ÆáÕtðn4ž.³gï^½{ž=@Pþ3—†	VfM”†«Ë<6 ]ÇUÅö~ÂEsA¿„–J6"¸>{÷üóMFË€ü´€2à~ÀE5 ýÉ^^ÃBÃÈ×/ŸÃÔãqÄøª†ÖÝµá¹j£gÆ€µ³áhº·ôŸhÅ±Ø(ý'šI&v
,ßîçÀYìt½–`L1œÚ¤V7ˆ—³âéI§ªåœÐËÖ6O‰;ÆZ`)GTã]œâÉ”Bü¤ëz{;;B%J—”ú54²1Û¦¦ÖÏú@‡‰å¨[£p*Žéæ°ÔrÞ­Q‰õÚÛÃºÍ–¾³×«QàÔ0dt€g’áS«Q··ŸÚ™Ý:ÓòZ4Æ„£2¥ÕÙ=>1ÛvïøÄró½ã+Ï«„ü”<8}Hu:-#<šúÖ:ÏüÎ“ˆØvÕ{Qn•rˆ(Ä(h²JåHQëœrÈ c½‘…Ë­ÔžÕaWä Tä
Ë=zï?'£P 50ŸCqÒ»FñŸâNÏµT[¸ÚËc©*šD*}7–qÍÌçˆ~zÙØm€qý¯¨ÏA3ø· ßþ¯²¸É/fÓ¨‡ærï@ýu1Tƒ=šWà®Ã¬^G™–~ñVñv”ûÅT;º
4ÆéçEvúNVî%L×² ¶—¡Äª…†šf(àÁ›(ÝÙçPà¯/îp
Ç4	(^YÓM­ÚÈŸŽZå‰…ºçj•UîÔjQ•Ã™Õrz[vpˆ…áÆ.AÏÝ8Ïl*è`}‹ÅÍeV,g—3³X|v—ÙÒ'~yú’ÇÂñ&uØ|EÜgä°:•ª<mUM ¯h1-–ñÂlÆVÓO'¶åë2õ—ðFGösQOé²5Õ ów³Æ½*ß5¼,á´¼Ø¸1¤q‡Ù?'ñ&—€kïö¢Q<yYÏ{á¦!{brß"÷ÈÞ¿z»Êñð— Ð’ïŸxUÖ.ê²û< öÞÎÀÀqÃ,œø¡Rø˜,WÏ-ªS%"\µ´‹Ùò®¾"åÇ«xÞ‹5ï;”7'7óædpæí6Ýfj³±9Ç’ðf_sN)!©©sÕò‘Ç¶öå=vÚÜ:<Õ§~×–{{ôÔº{WkS®\Î!½` L±¹JâµŽ’z¢åÕ–ÞÓpí€TÚgÑoFã&¤¡EÊvº“ÜH{©HQ(Åsm¤³…a$”ÄžçÖRK±Í=">ÇÚos\é°ßÛüÍëÈžB:l<¸ëêIûU8f»ñw#÷·@Â ú’?—ÔYM>€ºWOÕ…åªƒðåŠ@òË}=~\,"í¯b}a'ËqüÜÞ WÏžUxþAz¡©`ìyõÇéçrx•ší¿X—» =¡^!ÈÕ²¸¼®&ærƒÎû<ÅEÏƒð2ÙºØWhoX	‚¤»?ÊÑ–ïaÚL{ ’%WuÃºñ
ä7Z‹ÚG|lm¹ÛsÔÙ8:ÚÃ[RÄÆèpè¦¤œ(2ÚÐúV3«AS«èLÂ›ú@Òå€e² ÁÞ0[Br#%-¨$×T¸œ¼ÀN”°Xxa]¡¥Á† Á	óh_Ù:,Æ¿³ÀÉQi°¥Ú=0öùXwƒ­~‡gÊ¶mwÙ³woÞ>¯lTãî%Le,|*Ù`V¾µÚ¸Œð#5àÊE4÷¨ÊÜÏà=×Ñ§‚k6´X®ÕšY‰U2ò‹(’elk²XåÕ½Xü5[~ÌžÁÿ­Çž_^Ä¹ ™ÖÃÏë|Úƒ=?34WÅ´Âý<ÞÝVÅ@ØÈ+’é}(Ò lÉTÁ(”X73B&^26W¹Ô*ÐRÚ€Fk¥<»7ÜW¬©»Z$£ò«˜êüÜäXGVØêÙ·_¥O°–‹ašú©¢±¹^Á¬bî}ÄUjò¯™ìDj ¦1àí›ÿ÷»Ÿ~þ RcSc{» m¢>ä_³8Dþ[‚„~^£¢#xëça…ïßüíoXj|é³ÏgmÎ0<ïüíêK›wUCRãf&æþ½Tf£C©Þ=D÷Šªm“gI8Ó ás¥‘äV8Ð2½Gð1ü‡©\Z«­É•ñ…Ê‚"C	¾ïö×_‡šè7®”†ºÏ_4¶Ã/uêP­`r;ÌªèIuŽŸE•ÄYûè«ÉîgòÙ¶?~qñ ­g˜ý]ÍÕµ¾ûjçz¥ÀVŠLö&p_<{w÷îÍóa¶^á<t+‰*«±óéä®Ñþ-z«Ë~z£èhÿË;õ¦ê&wQkHeÿ¿æŸª©ÿrv|ØÅ Vñæ¥z³[}UƒTn¨ŠhÉÅnw6A‹-TWÞ¬gL d½q6ˆ÷}PÞôvnì4Lü±rOÄŸkä˜7W¯â¿e’øcÝ¡$üü¬¯	†<ÿJí¬OääØ:Ì ×u÷rŒëïãq}Ô¥vmÒ¶zƒu^ïþ38S²	 ^ÝFMÀ®'NT40û8ê\0€†zÈÖA­†.’è–¦@Ž·¨¥ÃÖ"E¢y¦˜õ³¢Ðû\K,-—„xì
és¤rç¨DÞg5zŸ'äÿ¼ÉÖÞŠï$B~­ƒ×FÕ[«öfÜ‡N³3fVÜM¯—æÞ×”/×Ln4ö„°’RîŽF
	ŠÁÿ–XQ­šEt”p’ÌÃ?ŽåÅ¼mkèlû‘Î7çnEÚ²a8ˆ Ÿv½£—‚rÞ’9Ã<ðƒöÚ»ýË¯z‚ÿq”@'™eôr'Wû;ízÎe»l¿„Õhtx|t`çw³eèN<»I)Ô¹M[$4ý„w:U®©)YÂƒc…tá£d¯}—|WÇÏK~ÒšõÐûúzfz«pd²ç,XrH*Îà¼@yÎ…!ñ"—žÒÁåÈYæ¥÷ÜpFq°s¬‘åÖ‹}‘…ÐÌ£ìì½°.– úf`©M‹Pøûo×õçÎƒ‡NØ‡ºƒt"øH©@qþ ›÷¢~•B¹ôˆ¼€ÝìD£Í\ Ïo@l*•ÊKÄëòäº#jÖJúÃÝöäbÄ:š8q5‡Lìü¢Zû¬#í#Ý+’¸j'rßlDwî—Ë»ˆå×óÊ5Òn‰~ˆsN­ŠHé¼D!®rŠslüXë”/¼¢Äz-4ƒ?ç¼P@†a*|¾·`¯´7jd9ýÀ€…M¾›yæÌÒDÏVØù!Ì¬x>ïcïáQ£íÒÖ&À›?†VH¼û1ªäÞ,b+ˆuhöÁ2>+`nw!S×›è+|yõêÍ›j}1÷sÈ)ž„××R¡7*}€µ·ÃõÜ_ý×ÛlqÚUÌŒ‡Ys;U†sH³]øq™†äÈç›‘½	¥€«[°èb,8æÍæ!òë.#vcèæ6k½žDG$Œ¬Æ\<ûbüCó€«˜ýkµ(»‡ƒ”aâH2lÿe±ÊåNþÐÈJ&y2ŠM6Ÿ~Î"CzüO#;,ÐÄVwÚÆ!cš ­¾i½Ñu‚r”lNÞ‡ñË8Àm!¼zý•:¯kÖ{Å–÷@a·Ö,Z»û5–"»¹gŠÈ»Ÿáˆ ’É@‘h~»Â/ô÷YÞv‡âŽ;Örma„¦2ÃÂ!Ë%e`e¡5Â”á<†æð	Y*F'ùÁ÷v#…¨lÓ4_XÞà†»‹ JXq,ª Æ?õG³Æ­gÓ…_\˜LºŸžv#óhö	,É+×OÀ‚òDpøûÐŽµóÝ¤[u„	.›u„S©ÒY{µ¾ Žß¾pádMä»ßÎ}Ÿ Luì*´^Ï‘¾ ËjêÇÚõ$gÜ´&øD
:´z1úå4_]ù<òµYŠÛÖfZb¼sÊR¯L¡°Z ƒ,ÖEA˜9Ê°Âä&/´Ò(‡ñÞ`‡1ó…qbomæ:RÓÉ~žN¯ƒuöÚ8pÎØ.¶u§&>®Ã±‡©?¿ŽÓ¿¸™»ƒó„(P½›-WÃGíN–ÍElï¶Q* <_«f€ž‚(H*0p½ÂA¼7Ü–mŸDïR0ÐMß¹ÛÞ‰‰¶àQõB‚5û¾ÑÇ¤@œàÔ„ïÅ@$„¶ iMð	‰á<Ôû¥DEö84ñúºT%¸óCq£Ç¾—Ø8âG¾±Ü‚nÚ{w/Ð`Û­;Ž±ˆ)b
RxÆ¬cZ0f…ÔÖç æÀ€Á
dÌwŒKµ1TR´7®*Vˆþ¢:ÙmY·Fm@”2ë@]<šÒ‰W»·abG’º‘z 6 YþSYH_¾èetã‹ùjÑ
ªµù‡«û³|þÙ«wÿ¼;çvêAàKùqq™Mü2x_‡Ý|ñ<´_5Y(éˆn¹Ïæ.¸¿ÊÀZ_Þ·>ß†l½º»©Î"v†/]ƒÆ@ì	[AyUUÿÍf°‚åt«).³£ñø29Ó—Ùx1-êŸa‰À’——£"ÜÌÑ5|²–1­ÿ‡#­Õ,ÈàËl6rÈr	»ý|3…Ÿl9`
ÌnÍãuv¹™Û™™Ž§/ê/ÄNUA)I¹Ø°îâG`ßíŽDímË¼CÒT‚Üº÷üUâúñ›W÷+oÕìí‹GíØn_Mb¢»úèâr&ìf‰	dÓÊ4Ú“¯µ…8IõD]¡%¹~ˆcßD}ÂWÏ·Ð÷¤6ñâÎNg×¤«²@†rÈ»•ô{f‰¦9ÉºQ$Œ\€ÍËã.gª@ÞkÁ–9÷Ö[n
ƒ
O4·û¢~/›Q¯à…,»;3É¾‘‡xÀËYžJPBí‚hžÅ`]ƒz“è}rü|®çæö6VVaör›¢…D·,V!Ð·–ç‹fvýë/gH¯®ó8JØœavº¨™qA&Fð2c£~# ”õ¦5Ú@C-hlàü©ôå9–a´òç}Å˜•UmùXB»¥0–‚¨ÍbL tSs!”NÆõ¬¾	ƒx¥«z÷t!¬ô‡²‘í=øBÁü²ÚôâuuŸÔN £wGïÜKÉºér=‡«ëw2£$º)rºýµ˜.gI Ÿ*¨Ûì'ªÿhSŸW?ýÛßßýüA'Ca~WRÔ›;©:°†êžÄ»6AeZ{¦rÊšó‚;Ã8¢¸0R¹á\ÞÃ
°>(€;P„|®(c#ÍÕ…à·UÀê•a~Ÿ-üÊM3ß §Íx¿.ðÖ€…}sœBöïy‰´P£î•Ò ŸÂ" _Ã‰tðøm7|@3ü°»©Þmc±•Ç"8ÓMxmÂ*Ùi¾^Þ Þ¤ÖÍMß\½úÆŒáÝ;îŸ³Âh×´{ü°ƒ¹;¿è)ÂpMÿHr	OOXé@ò›ÍWéœaû´oÆ¡#›RÔ8Œ°%(ôJ N8gUNUÀ…ãBKÉiî¼ö’Z	O*0Ù¬/ò#™*‘OÚù¾å6‚ëMH2Bf	˜RÁËx™$ÚËl<½Î
c+ÿï‘\ù»¿,=¾•}Õ ª©qtîÕ¢Åñdƒý4ÆU‰.[wQ¨Ð@ÿz³ý'†¥þ5[MF 3p¸²òzñ©ÜF6ÍCS·Eý¼™àhÿÐjI-Œ½56:lÍŸwƒâ;$>VÃF‡7xaÿZ¦’VçL½ð·h®~8œÓ_3wedã©e×~B©†©2
Î{¶žkµ•óæ_Â»½Þ€›ÚE€ðñ“‹è?l?2ú@lÉÝb®¯Üó‘Š„z/®"„¡dÙu7ˆß°.¹Ë’ìU>^÷äøÁâ6÷ßW‚qŠIËƒ|5qð*ŸÕo¤ü¦I9T¬·Mpý<B%nÍVAìáÖ)öpÉBI8Q°¶ ÕC nU•Ghé²{Ý)-±>ÕqÛuïw‡âÄ{_ÝiKåîBãÓ««·ÝûØÅ‹ZZ*¤¾`ÌzMŒ#[f…ÑÒçÎ)AóÜ0ý‡p/bŒ)I‰fÖå¹À¤(Šc	MŸç¡b^iÍ<¢'iµéãÈ|]ßÆ›®¦V‘‰Æ\²–o‹dÐ;ìxá]o§AÄ¤­ÿ™ÁSÃWÓÉ¤.”(Åáe9A¥5„ü×›©N×JãøÅ:²®Ábj?úe¤÷
dOïzG—¥ðçŸÖØ~>ŸÎ7 &b]È­·ðóhq{™ÝŽÂŸÂ‡Õ6`¶øtûçÍËšÝ\ªÅb¼!¯÷WÝWbš£m1ÉîTZŒø7¯zÃÍ2:9—¶þÒÊÛ?À_ËµàIß¼Ú›ïíÖ%´k‹¿õŠ7ÏÛÍ§’DauAtçK“ØI>‘ŒªŠ÷ƒ•çdˆïT¶«YLpwß"Êêˆ–âJä¹F~"4q¡~[hËµçŽ…†ãžxáirNðâŠÀ—¢8sïm½zõëW¶aZh1¦Úctrü3uÑ]EvQššÛÅöÍÆ‹u€ñ¼&YxmÃ’5À>aº‰_1Å¶K»»M1ÂÀj“ÇSD6Zô).“Cyq¹ƒx]âk¤Ý^•I`?M>æÓI;ßcõáö{g×Ð]9|XÍa¯ÜÎ¯uw´¸üñTÎÞŽÜ·ëAŒ¤rd}n,tá™eÝž)j‘QXËB]ræ”ãH‚Aáˆ–ëûØ¸Š¸}ØU¿4úôÔ’foûë«½Ý×<£o™«bò 0ƒ¥V‘Ê	NNRÜ¸5ß¹ëé¸+‘`!÷á®õK9'—­ç8Âqz
CG²OD—Þ’k;´è½'~b^¾\Ì:#‚¦µÒ’‹çžz/êNn¢Žæyè(èˆ,¬±ž¬­p˜
P¯‘¦ùÜK!"Z¡—Ôtm•´™å îr;/ÿ^£Y˜ÅnXp›,½½™LÇÓëº×•ir?¿ÿ?ìÊ]4›â³Ÿ˜cA8FË¡	5ËQû®[+D·ÎF+½F‹ºØka1ÝÌ¶=ò¼ŸdóÈ—Ù­¹ž·|ø9 á›»¨¶R·ì%%ï+wïaVÁÏÿ\Êž¾{÷U-Ïvá1–gvö$Àñh²úA„ãùDïŸ¼xù~põîÍ‡éäÃëÁ«#Ù`¢0Á;¥ž˜n‚ìR¥C¡³‹¨¦-L‰ðõ”ß“Öâ®ž{"@Æ~ð½F;Î 9Üº²oóÎ|ÛÍÖúHòëB"Tå¹Äê­^—æóß¸®yßrÈèuÍô¢Žp*?U!@)#±Æ"0âÈaâµäá/™BX…0·Ôœ6Tkv8xp_Ã?dÐÁ>S¿ïì?{»‘,°‹Ú0«ÜêZø¥½¹¨‚Ù(`#•G9pð,(æÓÛ{Ú•#ç2àIBr9Ði0EÈY¨žªšyf÷‹»YÝ—áU +7‹e™v¶nj²ñtyrªÎÿÍbkïQõFÏlÚÄcJ4m°x¥ˆnV`IxÓbo[7¢Ä¦ÃHªÐv§ÁåK/ÕŽËÔ—º
`·Lþ&?aþíuäÙ¹÷þÁ{B:³÷° C¼s?óI œ’èÝm‚µ¹¦I£Ÿj)µ¦Ø+Û»”IÑI=IŒùÇ»Ÿ~½ºzûÃÿ;³ì|7;¬*9‡›Õ<–ÂÎØ)§Kò8Œ±ÒVÛÐöTÿÍsÕï\¾êá½¼WyK»·0Á‚Ð¹£–
E)&"¹dÒy$Áâð9wô5·Ha„¶„q¶y?î+ä9t<»¡ÌmG°YÈVßìžÒ?¯ÖvôðâMìíÞPÃþîîç7—ÍÈÒÏÿˆšKö¦™¸yQbBVEqsêË ¤‹Õê º€”ýü—¨å”DUóØßR¶º+‡lÌíÒ3¹¯/9gXoÚ˜˜p‚›‰ƒ8€Ç$·%‹«àyùÿp¯‡»îßwEwÆiŒ«I%æ-‚@ût Ä-É=ieÊ–Î"®c!mOèúý´Ýà ˜Ä¢ˆ0-ì\¦÷9Å†+&…Ê±@^9­86^†,U¨ˆá+A`çÎ{êr•[µ¯Äùên²4_²›ÑõÍ8`ë¯a‰gø0‹ì­[XiíÆìp‹-ÚUys™<>Ž,~áO² ÁÈ\·«ý0 Ž¥B	¹q£0‰it›¾ÓÐìbâKó9ÂŽŽŠ»¬üîÇô‡aö÷z)†¸J»7@Õù¸¾½¸”µG¬j}6ÿ¸šUsã>+Ù»H$2¼áŽ,rèèCÅÅTÀùeç²ÑÄÎläÆ™Ç+üÇ* ¯Ü•ôªZ‚p`ÿyk5õ2ÂIÄ&PïþW¬/Äî„s^ÃLÏýµÿRú«³±ÿ²‘ÿWÆdu›‡ÞíE6]-g«esÓæl$ä^VéŒðn³¿¿ÿåíeöÛû¿]Æ©ßš÷þ÷²Ø¯Wo²EèO1±UAÁ(*«E‰]6Ø2ƒ5¶LÿTi.qàp8¬ªÝîOnÞÙs3šÿi?þçuD”—üP' Ä˜D\6;ÁG‚Rµ§VŒá-ÿƒTË^@”–®”ëD648Ì€ž0ˆÜi€œ[FÿJ9‰P×R¹j¥G|Ñ­K’FQN{¤ú›´Ð)Ú|¬~s§Iòßê	Wî¾Ô‡Ç­ÐÄÇNÔgî.0éiWÏ<¬â¾ç3>ƒÝi«ÁÊušl4‘$Ô˜z®€ó…aÈ(á“ÞpcMq–K¤•8â¯ws`˜¥šñKØùë[½{‡³l7’é2ÚÊe ´>¶iq±WÞõs
!i|§.¯LÒR3Û/âÛÒˆ‘Ý}(A³™!™Ô
otàHÊôÎtåÄ«48|‰ZxÉ›mF¿A7y‹3én)4ëlÈÆua–­8DÊ|)^õSÎ»„qö„iSå`Kz€öÕ0Kêž/€Ôc½í§Û§¼b×ó‘+ø¾¦¬.¬°ÂñœX§…³”ðÂ[ã¸ º¾PŒ#Ä,9ò„#‹1É½1–h^Xª->,«†ýþíª•È®†”}“–ÓyìFÞ„5‹dÆf,ù:t>Ù#Ó/ŽÈôì	ËtŒSe:Loõâ
à^¢$yzSó¶~—ë_K®c)uçDßæ+|lñ^M{¾ÿDÔgÕdN+{f&ø0ÛJ¼^=¬¹k#SYhæ°/¡©AŠ0¯¬òE®”Ú:kDè@îò¡ÂCk–Kì¨2vH×:FØÀò¹ŸÕ;=Ò¨1*Ê…8ªöD‚yS90½+™É( yF/nxx¹gÝfoÃˆ\GU×KÜHL.§z¼öE7µP˜¿¸¿‡J­ÉvX“ˆ=¥Öð®åVî¬T’Œ¤w¤«Ö7(/\Ý"]°œ*´Ù»^¤cœsçö{Û†’ÈÖ¶a¹’],í(S8Â3ÏMù;î5ÃÚ‚,ç9Âïã©6dkŠý¬È’ñCžXºÓ×Î?Rçµ ÿXòÁb4ëjü±!ÖÃà¥+#íÄ°bÔ!S-ÁšsA"s‰¸ñ.¸ò(à±ä`*‘+†Pf
mr·/²üæ]6XKº¯~ø!û±–v?—øaÓyU'	Û?^æ¾Q·ùeÙ¤<œLvöâ“h§æfò1tdYyÅh²~ïïEDBÛßGŠ±Py¾ÑGŠ1ÌvÃRkª4Ùjý‡%mÖŸÀh!Ò3“«[6¨®Ë€t¢!úª£‘öl7VõóoÄr{x½í2$U×ž€õ:Äáö~ÕÓH§˜$=§PiÏða8iLR*éÒLY~íµÌ®fH:‘T©Ýf/¹}mí‡E”¦‰2ø¶”n‰iÃKgø!yÄ×ÕgvÖ.ü|d;¥7~Äks_µ”ÓÄzF{æY.rV8ëµqš3c"ÈÄ„9Ê†šaLf"<caNÌ‘Èi¹­ˆ-VW¶&ä¯¤Àü¬™-‚!\¹VDj;ºA?6Ÿ_ÛÂ²Ì‡ô¯ð$ðÓ‰3sWúº/üøß <L?/.³·¡ô2ûñêuöl6],Fyhs?¹ËÞýãêÍïe¿4ðX£­V6†ÿßeoö>öàˆ+/Ðe)Bµ*»µÈ•ýëq#3XëZúz±g.x*—´]òtØ6ÐQ¯ƒín”mU<	¥kÚæiÜ"ß¨\ï Þíj™u\çöÕ:a ­ÁJE7³|ÇÎ{W³ÆåŽ
D}™Z‹»P’¨,©3F[DHÛì™)ÍñöÅçcçÝŽ&£ õ‚{oFPãÉæs}Ä°çewáÅÖ…l¸%È§‘”–%s`pÉ¼´ˆ{N·1Ÿ
þ`…b Íri†Ï5Ù×ÎñªLkM?ûy±ga{A`D{äXÚòìnž¿—Ee’ìevç—IÞ—ýž™ý‡	KÔŠá3Íw3|ª)'[9¦‚Š›A@)±¢-ª\Ã"ñBp[ÜËÇŽì­¹<ïÝ{°×¾L^c,;ç‰†åæF»¿¦I<>?ÂëX‹jÓväŸ¿?Zô×i–ËùñÉàµW××wI6óáNÇpÜ	†lì˜|H¤…º`]o\Þ}‘÷]Þ€×fÅÑ¤ÙVÏ4slw<•@è!^¢yzÛÙ®°V˜­kÊ®GKé¼¡¼eH6·L*YÐœn8åFjƒ	üÇ+™{ÆóÂÎcÍ•Fæ¨^bc)	Í”´$ûlL3_T9>ïÿñËÛPz±EãÑ‚û€+$j>™&DCËWqHüÊàyxwá”nºqá÷ÖT¶i–6(_÷`ûE?aÜ¿¹Ñá÷öÛRÔ½à3¬ìèÜ‘ogšp†yŽ¢ÛáC](¶¤s;z_¤4]è4/Ì!YÓïµSÍpâNË?;×­",×ÂW·“È» <²`ÚYe‹‚â\–£keÊzàÈÂÌ9‘‘ŽiÁMÎ÷IŽÿžÎÇ.{øÏéÄg¯}Lâ+/ÁÂ[þ™åótŒÝÆ‹œóç}7ß°¢Ú¬+³uj\» ÐÚÕÜ,ýEDÑ}¥²Z«É–õº¬Û˜¶Š½”*&Ò1%‹~<ŸÖÁ»þT£.«XxjnóÑõjºZDº0ó2þØSø«3w±æ1[˜OM…»é*bG…0|vZ›|ºZn!}×Ý±~ó¡yïÄú‹gp>L4\þ9šÓçÃ‹‹—ãØŸ8”ä>›†¬\ÎÐóug‹òìª-—Å§ë"Øs›Ä¶Ã¶}(ž©ÚòÇ9ÝêÝ„AŠÑ/Ë?åi ¿†Lî„ê·¶»Jè­=÷‡_ [Âb–îariøÏÃe%ídñÛ†ÚWNm]þXæyBj«EÞ½á};½=Ëþ!×Fkmiº$3NiF±Ê•(¨ç>ÓzÎö£À
ýäEá,ó9nMâ
sD2W I÷õ'¬ñFÆ'ˆš¸÷ý)©ÿ¼úñÞ={õ…Oî;´ÏÆµÖevl‹1à¢î#CjhÈêµé¬jæ·83‡½¦²q­4R6[ÇÆ0Ú]H¯âÛ`­„m$ËP4ÒË`±ƒx»ïÕ·P@ß‘©§ž@of¯‘êñ‚EïŸ—Ì’„ LyŠž}]¨}»m"ÎÅã…V?8á„\›ï)<Þy™‚¥†®GN*·ÀxG­âØY\¹Bƒ±–EÁ²É#6w˜aƒöE£¾óø<^`ª%f´¡ª‡„fzÇH?oÞ«'Ìãû¸ÕRwßŸ¿c*¿È¾ó÷sñ÷/îº{ì‚ð:âÓ²oèÜ\z9¼f[hâ˜Å’œ`]Ð˜	‘Š"fr†´â9‡?r‡$ÜM¯$÷ûz±½«ŠkWÐ}·‡bî=¼™Ëé,|ÑÖ	k:‡¿»ûýõÏeÍry\mÈ–>©‹0$æ>¾Q±§:+ƒßZè‹«:û½º|2b»|L‘= ÜZ„/ì£G˜	Ôdô8$5&3zXÛ \³îÖvák·èìX–¼½íþœL°®œs8Ô°“$ql }$ŒAÒ[	µ!ö­òë?æ±+Ãæ÷Ëä4>ÇrK”ÒÞz‡5…V#¸"ZØ#*¹U¨ ¼`ËBƒ‚^xÊ±ÌÖÇÿë·ìl7Ý†s¹®‹Ò›Wu×žŠØ üûµGýÙ»7oŸGVâu¾óE5KÅ˜«,†Øö£•ûŽG;OÆÓé¬bŒë[°ßóMÓhO“8©¶º+ƒÖGérM†™(—6àHáà{Âº¹17çnEºE¼ÓÏ ?n!Ñùz¹ÈC,¬·èÃS¿Ù$°QÉSž¬îDltò3?˜µüÇü@*TÍIú§AO2IN(€9Å\ÃœzdCt›sCs«5ÈÎs)öšäÄcÁ˜òÄÒ"ç”pjAO²¢áò»d:µdù/©"T4ýFð“dw!-–:ÄƒC25ïØ–L½“±Ò¡¿h¢BÑô]|MçMûÏüéˆ¦¸Á§c9y&‹Ð ‡ŽÄ%¦yn”Ô^Rb•ÂB[Éxh@-5šq©1¦*TQÚ#¡²gájOÖóýëUxlM­®„Ãqf÷âh˜½ž‚D›L—µŸ«šuZÃ„$®§*’jcI¤KLH±…Ê‡¤ÞÈ
Æ˜K‘šuÔ¸šßm¦G²™$&£ÖgRâ:ÊÊy
ž\½ÙŽØæ;XÕòd%C7Ëó¢À’1’—´/6ÄzW0k=!È¸ß”AƒD!\p-DnBkmo±ß%Ã	™j¬°ÐîQ%Ãw›åä6‹ÄºcÀûLJôwÑðÕDC€6Û	#¡D’@ ÷o¹eŸàR"ÿ_1‰¹yîgTîœ%9á¤Ðþ Rœc¢‹B	ÏŽ¤°nÁ–þ×!ð¶½C¾:\[@iÚÛEšÃy ×nv‘æÎïnãˆCKÎí6Ò@"¾˜&ªŠBÉÙICª¼ƒ²æ<\›T”6ú±æí½öF6¥T´TÎßÝÁ­<Â²v~!÷S‹heô0Z+ªõÝ8íZ7¨žmÍœaÅô]o/ÔµŸßFÈµë„‡àH¯ür:]Þ„Çå!ìzüÙ-?ð# h0((Óiä×O¶¥Ÿ`¿cC^ûÅèt÷´m<¸¨ŸW£4âõƒ‰tÿîÇ³4Âë')¿­Ø}õ§gøe5BÌLÚ[Ï·žå¿GîÚ/m'kKœóW¿ü<L›©ùp*ýÂ&Ò®L¤ûnºˆµªA÷H¢¿= ý<ÿµÙÄƒú¯Ûq»WÓf	ëG[Ó®¹Ñx÷Û›ÿûòýO^¾{“H¡ÕÕ}0"q­W zMç‰“4N¦ÀÓÞ@ÅÄ)6žOåÄ[rõ)ñ’×&.à¿}þêÆL&>q[Ï§Ïr5µ“/ÅÖó©³´¹w®Üïÿôe97‰3l>ž:G*Û€ß…vÈóIêr¶¤,èùöðs%àíágšXö‡Ÿl â&?øìÕï¿¿üñÍ<¤-ðvïu‹a÷÷ß?Ð!{´nnÁˆ
'· za?’O'©¿WGpU`ÌdâT[«¡¹,¼”…ÓŽž{é…Öb¥³¡É*.¸µ	œí—ó?Ä«#¶½:JíÉÂiÄ¶€)Çd£9·`ŠàÎ^vèû_Á¯Ó§#Úü:Š·LT=—_ç
ý“ôëœcÍçôët^ï)ü:‰èø=6]ÇEu'uì½[¦ÃŽ3Õ Ô‘›žŽÃZ­uíîi?¢Õ<÷ÞŸCZÍ´é	ê8¬ÕŒÛ~¡Î;Îºa÷ôßj®£n£ÚÍW»“Úh5Ï·R÷‘]çm8n’‡¯ýNíG´Zf§µmy®:Ž{èÀjE¨ÛWeC+uø†«ªÛ¨–ómú­:l7ëm/ßÚ¯Õ~D«•m;¸:l;ë†Ã«óÀv³vºàÝïö–G¬ë¸vs¶fseÝG¦¯ô¼=¦:ô‘lÙ–j¿7®ÇØ¡n?ºé›{¤nZ;]t§4{¸èðYûuÕ;~ü,¥iN)B‚î¹DÄxdõIÎâÔIª^Ìcg¨!Bðô\x¶hë­ËÊm¶vÙÅqß‚ßN§fcQŒ‰À›h€XL(Þ(úS„	Ý*+Õ÷¤¬®Î;Ž$í±]XñøÏã;Oàbûêœð¹VÞl’™Bü(ÁNäzT]†ÀÅÍay”šÆõ¤R¬i›ñúÇUbXvýdânÚe+“ëÜ9Cÿ˜ùIysŽ“o<›šÑ3M–W%ˆcbêÐöˆÔŒš3e¥çüÑŠîûÐ-‰ðúÉ§’œÑ"q"™®ËWÏðø¡2ÀÍŸæýúÇ^}ÀŽ¥"¤¦W4ŒÃŸ_½Ó¥[“µ!plÈiS86ÎÔ%¬Åb\þž&ÒÚ*üipkB/“kDáš'<¶¿Yù®ži‡ŠJ,[¨aä 8S¶Kö°{Ùx5=@øÁgsk?°58½¥þ™5†åÆåÚél¬÷–Æ¬&9!„zCmÁÀ^ÄNLq‡ŠÂp‹¸qßmõ-[¢Ô›X¨#·muÊµà›¶:Õ@9µ%õn[ý{ªM+k#uKüD­õ3%´<‚µ~†•ÿO²Ö»d½<ÝD™cÖ|ræÌÚTï0¤Õ^;¦ö<V~Îcgr4-üNƒÚåU<°õ{m—¾ðH)¢ït™çÞGÐaÈÓŽdw‰*·§éTh?¢é†8Oz‡[âI„®w:€é'ŽÞöB|˜wVtsV×BÏæ¬H‰û?y§ÅÜA:6z[¥z-B»ûºj™`Àˆœx$˜59ÉuŽ¨˜Â¦‘"Ò8e½7E¡sÆ³×R ©s"-ÖŠîqZ¼­ÐƒƒË¡Fà
íl_ÿ-v™Ê®çfv3²žDŒâQ	Mü[< ·&²÷ÓéøãhÚàÖíuÚ(ôÕõkDâyèjO_¸©]…~‹Ë8qì›Û|ÐÞ€ÍºnMö)ôÓXÞ…áJÝšYòÉÛåt~Q¾Ýóv¾ŠŽ“ú6ÄÖ(û<$R¥h³Š’BS÷T!Q$ÕX$gŠ
®²FHªd½ÐA¼ÕÒ?òU°¿úxGvo¸¯‹Di¡;&4¬tXFídi„Sø{‡	*'Ãzšúi~†»»œÿ—ù´,Ìd1(¦ÀbN¯âuQÒNšì7ûõ„w©úÇ
¬,x5À3»wdCZÝmÞ2@sTX¬W:¬„0N(R\sÆyˆÃšäyÌóNzé@Üzì„QÌ˜=’õ=ð‘ElËhœ™-ý<ÊØ²[|Ø)H‘ìŸ¿½]dŸGË›lû0öËÛßêãú)-÷LåKÚ¥d.GUœãFS²Ø/ ‘q\XqéoëfeŸFfc½Ã‹‹¦ÈßÕ˜,|^oäC$Y‚>j§3àå/¶.ÖfeRo7+C˜í–ÏBlÕkš­Ê0AÉhÄ+<à-;–½¼z›‘!ú¦ZWBzßæû7X¿‚ö‚º±¨Ã}wò›$YÚ˜âH¯Hv0ÏcSžv¢úDÐ8ëÕ'<z&àÎûó[Îºw¶l8ZÆ¤½0Œƒ¡`‰9ã”"HDIlVäŒSÜÜ+Í1’S«<¬È‰ÛgÞýíý»=Ò¡‹ÀbAÞ8æÙØcmm™pwðe\oï´BÉ|ö‹éíáT£I'Jš‡•ÒæÑ@¢ß®>šESÜ„+t@Ú(ô@ÚìiI¨V›¶ •je”a‚Sc68ˆ—uP^ÓoEÜô³	÷m¾¿¸a][4u¸	ånÎÒJÜ,gG]¦G‰»}¢Âæ¤bäf2ˆŒ¸«‡Õ0³”¯š6Ñ¾Áªü`üƒqÂ¢ÜÊtáR8çsÉ±"4ŠQœ"SŒ
Và‘Í5v–ioA9Cš˜|Ÿp©‹¡›ýõÜÜ–ÃqÝí6J™ß¼Ëþn–Ù•Yúñx´ô|x'é?›ñÇ„œ¨ŠIØÈBKšë3~4¿¨;ý—·Ëûöðy	lØB£ —T"¦ÙÉç©’[YQ”)µÑYs•lVÔ4(oÓàð=j™)u‚îÈâŒ§0Á˜Al¡•x}¥‘œ¨ŽÒ ~o‡x\k‘6eŠÿ°ÃÔßBí’â\/âHÈk¢U0÷‡òËk<IÐjë{ð¤$“¦šJ›ƒu	–ˆk](îAô`#„²ÜbåÀ4&çNi–;æ˜ÒFùœ0±¯ŸÙWL!”µuÒO]>q”*Ÿ0ü¿-·ÑB©¦%B1f4ÙéÆœ¿KªJ*
j`IÕXñ#¬ÆÌÿ.r+¤/­œÿtà‘‰ÿ¼¬÷
žÈVJÌYq·pL±ýêñg¯§yàQeÒõñÇo>;³4	NürT ÛKY/Ü"8ðC‰5dÈ‡2)[ó¢ýšÄù¾(‰
Å .rô²/î&ö”zElPû¤
C¬.‘Zã¥´Þhã©—
®59K¨ö^a‰™äVË©eY¡´Ý×éÕtRŒ®Ws5‰¹¿-‚£ÑL²ßþþë‹µÚ•ïº»]ôÉë*Uo€#Åd³ÚGs¬7j}´BŒµPâ}×¾‚e+îšÿR¿·ÇUâ”ÿ.ÂcŠÿs½¯T¸f°›²jç³ðè‡‹c®ØõïäRpp=™Þv.g=‹,äœ æ5Q"Œ(PŽd.˜-Œ¦Däž…MLAÉ‰F¹¬Ð¬þ¨±|
²°<Ö§.M–ˆDmuq¨(ßˆB±6¾ÞÆA}—‹_G.¶D©ßóö¾‚t,'~r2òzùñÂIÕ+:-©ó¤6q¢{Þw{ê å§Ñ|¹2ãÑŸå©/¼Nºw7gCYg³‡ÛA?ê-nQÿSŸcê‰õH‚É 1Öbá˜÷$/HKœBÒl´–JÀ“Þç¤G|_‚L9ïwY~—í8‹ÀoŽ”?Ô§\µ+_T’lyc–À×}ƒ~LÜ=ÇEEåÉ;ÖvŒA1ß¾¢°’ÂŽaÆe3}…sÑÆøÛyMå}¼i-r\_æõK¨Üq0I'Ò;ñ…)Î»¾ïòp}Z;¶ÒG 6ãdÛ˜æ¸6XV3+Ó|1ûå?ñ·ïwž¸ ›³oLuR¡S2Ú§#rÀ\Š	0’€ ¡Æ(é=Ö)}!s¥Š¤ƒ÷”cJ¢PÒD
â¸UlÈÙ´’þïÆd‹*r¹¶‰–Ó(3þgS%æ'XT›†ÔŽc~ò2†§Ê°qƒõÕ4¨(Õ›.F†E«ä™ö]Æ|%ª3N&cÂöžŠ„&¬î±#z³;ß»D¡õ":MTëÅÌ€²ÅuwÑ…Ñ“zõðËI¤cF	SC,ãÈ+n¯ó‚ ‡ö)ˆ2`©B­œCŒ[:GJ…©£dojÍZrÕ~À’¾ŠúMö¶N²éì÷ƒ“|êÒ‰¡‡Òi78½mI'oªÙQsV-òfà|õ•¾,OZõòóµ9„Þþ=®í,‚`¥G07Ú~ù¿BìéhÞÏÎ
5di4æb¨”:¸=6Óns¾×rJ‘206pƒ9›_Y´äÞ¢DAC-´DÚam•—Fbf@°Pœƒ©ä8&ž
ÒBIm9“‚ÃçEËËú,º–ò\ÉÖ¹>yAƒS£dË+T4]m
±ä¾Å›§ô]Ü<ª¸¡Bâ>â¦~mÿVb'ì«”<Gùú™÷±*Èú[‚óé)3îá©	©1p«‚!¡&"Ïµ“HZgñÔ°œÑBZ*¼ÀcÄMÁEHý7V»}ž²Ã¡…Qã“çÿ$™ÿ#Ä6ù?Çœm`F)œ^)Ü<¤ïìÿq­¦»Ulò›çþ±cÌ¼ñ-8-¿5xòöé±rK§œ¨Â ©£œ¼ðR8Å¼çÆ1.Dhûy®”òØúÜ;-¶{•ï‹³ïcå¿¬Ï!•«“ýêýŽÓ}òž&sxµíJÒ0ºÉá1" ä·cñ÷'õÍ?*›W æ÷bó÷oîß†ÕŸ}K)ì¾\Äü„üÎ£+“®¯:1L&+)§°EØ6ñÈ«¬bœ!Í©bÈo!œ]YŒÉø¸¾,G†ÚÃÝo6‹lCäúžóWœq?‡/ÏªÄ´³S`r¶†*O³öYh»u6Õ=ýg8ëšóçÞÝ˜eàÏÏ³º¡ÍS—?Ì%Æ;%‚T\oV×xX6>Ò&Á
Ž?fÍŠÁÁÛö¤e@ï@wê!ô–Lö€Šh:Í÷ä”¶à‡f«‘„âœGs„‚ÐÈ=‘\®Ù]häquõöhN–E®üòpNÖÎpÊŽT¬€¦(i­Ëéí`4)¦Ç²º½ö­ðÈN
 uÙA¨x ±i¸í bü^0Ð˜­7‡ÂÓ¸	ÁÍùrwì„Ý€-RƒšïÎÝJ Û¸½‹p:ÝÍG89\+QâDIÚ`›Sêe:øý´—Ò‚j[poÁ`1aæQQ„tnbÒTHæÞ*½¯ú¶’TÙj6žŽºC·Ø‰èqåç°×Î~Âp¼O^[xè!Ôh·¶À•ä[•GÒÔ×m|„á€ÕE¼BOZa0æãáÜ­H{]¡Åô7‰ìîÜà¤;­ª–üà«Åƒ¾^Rö9Rrø^Áë„.8'Îq8Ã+ß5Ñìv;‡1ÍØŽ_SYÙ°ˆª}ÉtÞ=]b}í°{Áˆ6F)VäÂIËˆÕÚH•ûœ¢Ü1«±"ØxAÜùÜ(ÆH!QHÈ3žJ·Gê½ö h:?±wÙýÖ¢lªäÖoï~9‘4ü¼â-p¼Âw6•P‹Rj@Ö­W¶»}Š`’Ó€xß>E‚¥Ú-ä`a0ÁU³º„¤Hnœ²±Äˆ–h¹Q–ýðÈÂÖ&Ø ñ>`¹»7Þ;™	Ö˜}cE¹ÚÃ/q/Q¸Un6*í*Î6Ÿ,«E7dQÛ,¾ëCÖ	}ÌÐZøL†Êº¥ZW¾\íSÝŽ1cg-.$˜#GT ê©òœsÊáÖ'	*ŒåÂ
ï’ÌJÁ-„õ2W{Á€€qfå†";§›fÕæDu*‡0ÕSIœ‡Aïá¶šÉ$nÖwÆˆÜH¥Ü‚÷	¿›îÇô^ë[2 ƒòE·`´¿¼yÿÄ™v{»½Ù+E¨+yRÛÃ]ßÃ]¼µ¯(Æ«¢èÞ‚å=?kÇ.´ Fä4hn‚PMDî8pËq4÷RhQh#½¶D(í‹Áw€bï”Øy;º¾Y~öá¿ÙgS6­«¿ïA+ûÝ-L>]šëðáòæP‘_}DY}â™©Ã#ãF3¿ækn§ºØš*[ÄÃ»X©žÏ§`Ž„.{Uú|­ÃªCÛŸ7ËšM–A¯t÷=†n`À'3¹²w`ýžÍÄŒï¡yCiÙbeo2³ˆë‘a gÍ¤ìô—û2¨³œ†‰ËùÊ.³¥_„Gu¿"|&\u.jêp:ñ8ïV·°âí–çUwg& âGÓ÷×x·ëFÂÙ€X	ÍvkµÀ…õ&<8áRoô \SÕB¯ËT_—ù†ôZÚëîÚxÆ+:rªn¢°‡©¢\m*úGº4”$n:ì®Ç >´ü`Ï{¶Ö™ÏPÑ±0ø^vnA‡jHÖŽp>ÐtÉ&­gELa(òDâ¸É…³F[-±v9‘NƒeHaUNsË1èÄ(7šéûâpÌ,¤ iîCþÕVkyt<Åg[çóKÅTaÿNeæç·£%|:›ç‰lnqñy>Z.K±ÕèT¡ß¡4†¯î*¾¢iZá± Éæ2ö"TÝG÷9[x,±QM»§—l(Í$ZÈFi|ùB{œ!Šmub+Üt† $SýýÕâñ"ª+ØI,ÊæRzÄßžJ’¼öŸüx:JÁ‹Fê¹´øÝ‡Ñ¿“å6«æ}{8H
á´þ²&¨äT} å§	Ó¤Éª®d{•õ?VÿØ2(÷=ZËÙäN²õéIUiwo¶§=kwÚ…Íîº
mx‘ëŽËd#O‘Ñ\<Õ‘Ó"A[ƒÔ!­Q¨³‘TK2Kp®¥F–*Œ™ÊuÂž’ÿ?öÞu»m#[ýÏ§ÀÉù{E¤ëŽBï±ÏŽsi¯å$Z¶³:½þxP‰mŠd¤eå×~ýzûIÎœU R¼ $EK½tG‰šuÅ¼ÕœßÌD,c´msJ¶hgxæ/Áß{{myS°]~¿ÃÅA£p2uã~àxµMæ)Àšƒ‰	‚%ã³À>2¬P7Ô¹HçA„Š@66•	4]Ü\Þu‰âk[´ >‰ä,Ä_ûÄä7ÀŒ@¸ÍÀÈq8]Œ¼Däa¬@®A9<Ø˜“Þídö1%]z
¥Y^wïPs˜õs-c;ºóß»V‡Ó/n`2XDäÂniòÖàŠ,ŸCýãªŒƒÇÉL`QoJÄóäÊÁÚÍ.‚q>[Œ#|n4Š¦œÙ}Lî „CSN=¨. ç”‚?LÄoÈÌ9t?d×fvåÕtáÛ°8øŒ3VÆB°D pMnAKZŒ@DMW×HŒun—l´˜¢xùBŽeEFXÐ‘ý¶è€úá…³…ýš•;ÿ€·O VÝÞÞüËë/üo°ù/@WuŸ×ó›Ñ-‹“¸™y‹)óÍZ• µ…`k·ND(‹¦®¥$Xè¬­?Ô¸ïH7ëè ƒ}ÿî‡Ç¢vœÙaQŽ®Ž¢…Š4êý0w×àí&ö÷ÖF?;e¯•Ú†}·è´¥¶ÖÚJÆ[ŒŸûaÕP`­4®Mí*5„·SÙ®²ìCÑZa[mðó«W`fƒÚ	\º–-`U]l,ÛŽr¥ÍÏ?ýööýÛ—¿~ÐíZß®ÓÃÕº³<¬]Ü®ê6éÈ]ôùªÍ´“p>»áŸcQ5ëÒW1·ÙwßuÙ¨f‹Wüñòû×hÛ×dsÛAÒ½µßï?þ€çž¡Ð©ñ€ÑsYXkÏÈ‘ýJÙê¹=cmÍºû}XP³¥•ux2•ªåŸìv5hxjc¥E
Æ”J$Ë´3Çs—)óÄ°ÄY»sd³”0;QÍm,±Ân²õj°´Fªzêå\ôí;wó_nö-¨Î`>¹=ðÓÅ7V/×ƒ¹»-/á@y¿pO¹¨ÕÕôÜŽK‹oÃÕÙ¹â g)˜_“a¥×›_cGaõ$^/¬NÙfÔPN²ê©¤ÍdÚñÄÛêêk´ïOZ_v¼Uíü	%J­íÏÆ¹Ÿ ¢0¶>®ÝyFÃ.ú•þ[öÒ/{Ù“Î¤Ú«Â>gžÔI¹¼g‚ ^ß+¢Ó–¿SP€ý <6¹k©”ÐÄéØp)±àl¬ÒŠqaf9ð$&q.Gujr'F¸-üýeÉOùJh†¿ÒôœÞ}žG¿¿Þá_«×$$Å¶¡6(ã4€ÎðjB*ªè
ïäBr¾x…Å´ktLõÐ)$Ä37¸€t˜ÍÈ‡bLFîy1óÌ}<. OJoèïá‚#¨ªN'óùä¦òÁTœqr9Cg—õ­Š²$‚½*¯îþŸ³É—ë:o«1“·Í%Ä(KøªKˆy€Íqq”¯l
¯T>àœ·0õûþ?€³jîíÊÊœ÷ëÄêP·N=¢Ý.Š\¨0©éïñÐÖ±‡üÂ‰¶³6ù$Gˆ™:Æ¤³ƒÁwBžO¥1œ$w’±<F‹œ2#RBbb´aJ*#bMA
¥Ü§A“¤–kN¨£"‹¶Ú±m1/¿û>šŽW}Ðî«Š þÉÃò"W×ï‘§GrTé×áu¶¸ñAìÇku†O4ÊèÖ š««äÑxçAyä’Çß°ÇGRPr ¼Îêh÷Át`ÇpÖSà6ã;D^d‹¤¾µ>Qnßæ\Éc8·Ð§-ÃS­€cç”æ™ÍR–k™	’&ŽÅYœÐD*š3¦ó”0åœ„Eá™xFµÎø^Ì´°¥†¾
±ó“Ï¯‹ßÎÎë‹¹¨Ü=ç¶…:¬XMòÉqw)øfðrª×€øEâÕ@üŠ¶†Ûx(ûát=á*15§ÇqújUZ-È±Ü>“üÀÌø-‰Ø{¸~òÅêjªGe˜‘‰xo‰wã¥Äë®¬¥!.‡ñqbŽ¸CXÂ*4%1ý˜œ+b8ÉL.Rø™:m,%	bì›Øq–e¹Ð#xSO$Ä©œËx[ÚÑ»²’Xµ6+Ê{„k \õ±Æ Ò{ìâ‚­—m‰™Ü–FŽêãZä´hB¥HÆZ×h^]¥ZìéÂ¥5Ý}!Ž¿A`úÀâ-«£m‹µöSÆ]2)23=†mÊÓ*Ý6!Ü)–M¬³1K°ËTJ…Md"˜ÐÌ2+¬&<Ñ±åR*É¨´.¡©·)ÝÝíÕËË‡ñ™øE|r|Rq±%\2NWµjø¨™a†xÒÝiâ—Éóù¯ K«ã˜eûÕ8@Ç¡¥®Ö†»]v`F^zQEÙ«‡_ñS‹4(Ž‘ ô´w.3—¥eâ ×œ2›ø7“	£9O€•Å”Ø¤H*HâT’»<M2ná*£mÝ67Ãl6‰`îû"ß4.vñfïu³‰-sg‹±wÐÔHøxmË»4Y¯a%$Ý"M˜JV¥‰Ð´B¯hÜ]–à¡óÌ“þ+8àBu:`1N IâäT.ïˆØÃÞ:ð†.îSöúe#sJ²û+Å·Ü‡ÎX‘ÕþOT+^—]ÛC³ðl”>Ú/•ì
§ÂI—pž&©2Â*‘b×4e$ã2qiæx¬¹s  rê¤‘¹N2c÷$Îóº´áåëÒPÀ‰öíÖ~-Û`×–Éñ[š?\~•ÅÔŸ¦”¥˜ñ²¬ªÚ¤‰÷¯ MM	Kâ-°'Bi±†X«¥à+ˆµ`ß·…=)G×÷ç¡„´ë˜¿þS¦ÖÏÄÊôfó2ÑBN•»±Ddã‹Û†l›|¨­ä‰½1½ûl¯v k[{‚IŸHåÿçÈŒ0rýˆÌi^ç„³Ó$NS›*g1Ïr™˜Ä¦‰t:!Ãô-O)Ñ˜%;ô(IÁ?‚ä–s)àê[xù/863óºx>rŸ‡)pãßÞþ²¤9Ý—HýŸo^†óžãè·Uìè­)Ìfýb¦Ó©›EÏ€öó¥â_ö|Ñ»^]÷GÈd– 'œ	]DÖÌF~ƒ(ú¡üÝÜNnLÀüÊÜtî#4{ÖeÀŽ€ï^`Öñäm‘t2¿K&$DÞÀ‚‡ž‡£á<¤û|áA´œQ¯	TV%ßÀl.Ë›…Ù ˜OÅ6ðäb>ñYãÐó‚»Ÿ½À?{ðûÝde×“	&)[P0f7CÌ`Àó a®‡Ó"
A®ïÃsÃ«qôÑ¤j “xÓ
ÈÀ4sŒ¯ÅhÕLÂØ¡§¹Ïˆ13œî.|ílh¯Â“Wf¥n~ëÜ¸^TŸÃrÐëùÄŒê]Ž³ÑW`^Þ,3+ªXÙpÈ>'º~7½ÈÞ•­¸\Ë‚æjKB#„ªd5¥½IR­ ÎPó%ÈÉ~‰]µïB'+è ÌO‚yfÌ™*.¶Ûš-á)¨gê@_uwði'Vß²Çv	Ñ'ë¹
á­ûoÑqËÞH>	øšóbÑœ6faQ#ƒ¸<”¨¬%B)a­Êt4^yÊ¤Ž5Ø¢ÔèÔÅ`ªÒDÆ6ÉH®1ÁÌ/¦a”U&-1üÆÈMm[Uæ—•{÷ÛËË(ÛSµ¡Wp1ªêo!‘¥¤PL@ŽÞºóM>'.*—)ì¨(ï°ª23”
½²Ñ››l7ÍåQBPÃä÷'W[Õ˜Å²ðOBW½ª+ ”,¼¬3U¡9\MÌAÀVxr{÷ÃwÙ‹íaÍd*ËÈE¯ïQ[¢Ër`°µH7Ât™ƒoÕ’^J«GãU'ÿy©´ø¡^)J=*Ë(½ÇpîìÃ^!ÂK‘.².õÿXÌ>N^„½Ã®_¹5ôÉ—lKÝ:&â˜²uU!æ+µh(%,–­Ý½0:0lãþ¦7¦ƒg×£ð/eåŸ&!sçR« =z¨6 Ûm™îg{mD0ÎßŸÙ=vp<°îSë|ÌÃ¨>ÙdÌEq}ÏvoŸ‡ÉkÇ8ï&²u±±9È-KH’³œê¸Q4%6c±RKjLªs™–§T»8!4#Œ'"[ÁÍp:ÍÊÚ8÷xÓ77‹1Ê $ß:›‹ë’—ØZÛ%\ïÔëÚ¥³ðíÀÞÌs|ñŸ?¤982‹qv=]oìæ/üžo±+Oï%Øo©6&ãD­Yƒ±¢¤y›GÆÚ'Ôàà¼ÁCû¼#SùîMÄäËäÖeêÝ›ôÑ5ÄH¬M¨ÇÁì³@6¼ö­X6ÞkÝ´ÎyìFí‘8{±7WÌ‹Ý!T´±ûÍ{ºt(–ï$"7<;;ø¦ŽqQ—¬í&7\®dÌ­ $O\bs#ÒTáhÊr#±”2•$¥y&ð§:!N¨T¤Új³ûž®¼b»•NËr–Qì3xg‡óA«T<¤ñŠÉ@ó/ªÌùšªÉÐ›
úâ ÷S³‡¥±pq–P*aI=7@™fEðÀ ¥OîŸ•PŒåg!8ñ"‚37»ÃÏK$ o†¤“	˜iÖy8P´c<~doä¡Ë²Ÿ•G*ÓÈCA†‰¢ß¿ru•zÍ1#¡œ4JO¬á×ø¡í›fPKè¿†¨Îï.!ÈV… pT¶9 Es±VŒaÍ¦C”©FÕ‡½B0Œ®¯I_w¼¾<äc×Hñ£l™{>Ú©É¡¥ÊÁì	ÙÄ¿Úmã­ìL¼’®å"¶ÀÀÆ.Z
ÙS]%ÄO³ kDXÝ£<©_
ê‘£~óp˜ƒÍ&AF:/…JÀÂfç»¿¿{ÿã/?|`¤-Šà6÷ñîº8vìX¼åÑÚN ã—öñÓ{ŸGÆmcU›"áøšz½F½d!è ±´OöÔrÐN²õy4I®·ÏÓô`Ð%|ÇŒæ&µ)¥ÔY)©¡–å2ŽSL+1J®NS’ib2–H"M&³4Ï­„g¸ÚvCQÇÆ½ÿþûRínH·|øAïà÷»ªÐ–b„bÇe|¥w®¡R.·TÁU	]ó¯3ªiÒ„ŸbpB…h©wÂéè‡mî'ÕÎ“ù^šu_ àá.ÚïM÷x¯‹LtšÃXvj-[^¾}4[iDÐ.UNèa›¼­3§¥³£«œSÃÎnF]úé¨ýt”À/A}2iÚR1‡ƒß–þ¼ZÖ)YÒ¹¡¤±¢èº¢3TZµ©¿§ê¸YN»©9ViçZ.œRŠ:Æ¨‡þÉyše	Ér’2•žKi„q.—‚¥FŠÜ
!­Þ¢æøÐ
7Êý¬¢b1œ»ºŸç,g]){‚4¶P*õ#K:a¬eÝˆuÆ#_C:ÑëˆÍ«s¤8ˆ~B:ð9zC¤Ä¨z3Û.zËY\O#[Wæ[ŒhU>ÓÙä¦.ˆ/×…	­ïÙÊB;½eä´o]ÞòþxR< ZW”±•¡·]ª\¢9á	ÓÍÛš%BŠÍq•	Q$ÆÇ›Yq
Ô9¦šwiXl†PÞö6W§ïOt?œå¾mô¹Ë2ù	yùêLUægüÐœ\÷=z#“ÙKÔësœícÿ[ˆ	Í)›ÝMç“ þw)ƒµ.ÓJß©¤é ¾ èì%¿®ßìÚÆµU;íñ8!vÔqgì´~ñ0ÚÁG/åÎ¯ ä±–4#†&N§ŠüOm’gô ‹3ÄhEEšPa…µ<IÏ§\:žÐ$e[#5þýµÇõû8œ·*è‡ŠÀû°
Ñ³÷—$Ï›•óLt53Ók_ÄKâ­$šÔõö”â}<â˜³¶â˜kÂÈª4¦R¨ Ák…´•Åa¹¿ŠãÃÄ±Ž©>0¢¥\ùÓä@÷éÉä?(m!j;Hîb¶ƒÄDë8ƒ££àÑ=}ÜûÔ£¿OEB¶/b„ŒYÌÉ9eÜd†¦™ÒÒ¦YÂ¹Êµ•”Ù˜æ2×’¸$g	|Í$ÏœPq¢œØâóUF¶”‘b]FR½EFbHŒX—‘Œ)²*#®Ú¾l”‘í/!¾JI3r¨Íz)¹·°üc”’-=Ð+âòñU‚¬%iÛç?¶ü_W¶> ‹z1N'‹ñÁ!´ \% ¢›ˆ¥Ä0¢\¬µ Ù)R’ÇÒ 7'N3*óT*§,å1Ít"tl–±2$$Ñ¹Ûf†®AÕ”EÀ?ÏCÉö ‘YÏº%ÞÍn",3Ë~|ÖÄ6¡É˜æL6ó%ð#&¶„ŠRF)_«!Î€i7íJ	[×/ÇØ÷ç¡NB·JáOD^nœèÑU¢N-Ç³;ÿ`ó;Ú†n»¼ömô
g<D’98Xò¥“È<£ø+ŠQ·	Uïþã¼›­^†Ú_{ðIi%Ù½òÞ§”„Ÿ†³ùÂŒÜøÓÁ™ˆÒ»Êù%§Áb&V„k‘ªMjâ$·TÐ,Í³”cæI–Sªâ1ÓŒ;ª•,µÔ`0bl(5ù„A¬çˆõ' =9[Y‡°
ÃÙdŒñO;r—KlÐy{¢ƒhÙØvÄ[UÌOÁûÛ‰GæË¾¼ù ã¥ôÅ¤²q©ê"_„²WVwÄd×Ðâûa†D…bŠÕ%Ëj4h#ôvt	¦¯‡ò¹x¥RYòÀ¸±û_^¿ïó»HQÄÿ)
L©){È ¾éÝtØ4›ñïÍ³ºPGè5@DÇz³B@@åZõ4s0£‘§V8#²S{‚åûáµèï~!:$XžM§tìò;®\M]ÛyeŽŽd”±Ã´‹åXw²õ®|oWŸeLß²çÝEî»ïlD÷Šæƒ­Êþ_íDÇßæƒ¯žÜñDU`­Þ‘sÝûN‡Óþíµs£Ïn¾˜®”Œkõpkúþ¹¶O·˜œj±7¨õ= êÎ4ƒÕjyÓ»U§ª”W>Xj WÈ½¾Y¶:¦EŸßk³ù±Óî»u©gŒq?IÖIåá”s4ãR`ù$m²,‹Íc‘È<ÉsA@I£Vîb›±Ç™%&‘™ti*]®’-zÚ“lB*Û%¸ãÚt·ß„È¹+ÂWè],Á ÿö×—ïÿösôcI…ÈØšÙùc¯Š±³ Ä*bmz;òä=  ¾ÅéÁbÉWËdÇ44œX‹ÖïÍöý¹éw…ÿy:^›²2çã¨ÊC Í1íÝßøj·PEš=ìÉ­3#ú…Jº~)\ [7ûø§[\ÎÎ)«ƒÃ;z§I*±¤Dš’[-sàÚB£[ÚPehª˜%ph©M™Kt.D+Åsª$¾¯é¶d1¼Î}wæcôrvs}s‡\¸dÏˆNg—¦ÉvÆþ·rizÿ³ü§×«>
ïØ®¦ˆBEö(› ÃË*ŽÿÉÌ†“E-æ%òƒ—+{÷óëž™"m µõfó5I1íF9vKðØbûÉŒ3g}Ë’Ø]¯t˜"oIW,^ë@J€8¸ˆà¯Q”;ð$JHk'ÍuWÓ]D}ÿþ²1àùF6¶05X%«˜ÃÑ¼ˆ2‹Ž|óÙdÔL§jlÍ1(²ÉäãÐ…ÖÞ9àu™Åt41¾nô÷·ozÀKçKŽàŠ q3Î®q)J´%èÞw9L~Ù­­ñ7ŠAc_@#6X1·fVa!»büíæ›9t„T%½ G|S]Ï¯†cÄ®±­™b@ †¥áäàÝ¨paÕk’ 2*º½Ý[s‡£¯– Zù°á#g>á†ÁÖxœäÅ´øè•çá–_Ï¿-Â!(£ññ '±+‡èöz‹UFÜ£[§‹ð•ï<£›­8†ð»é¤(<°õ³2Ô>JGÜßÛáÇaqÑKáà8Ø—(F€»ææÙàùÃb—›8 3™ìOŸ\¹‹	jÉ–RðBÆ²êzaD+7#îñ¾F©¶A~Õ`ûöÅ—PLÂ$¬=,Ç YmžþÑ—4‚ËÓ*«íI-Ü(«Z)(ü¾ÔEÖø ŠO{Ð[ø]Z/§µVy¢ÂŽÛ$ƒŽ€Æ‘J‘2–2%²$×6fŠ¥™3,ãNeyl¹ãRRvdŒ…ÂRNÓ-Š²¾y¿QžV«U ÚKÏÇv4÷2òË,Íÿ~}Ù/*ùW€",%ÇØß£´D¶‰‹ï…Š™Áíõhéì/ò 5Ã«q@¶Ea‹	gAF¹FéK0s¼Œx¬z š§À#Qˆ”Œáu—}^®MØBÜ£Iá*+`pþ?–Ãƒ‰Õq å8›A<½›šåÙÜááW|2¿.@{/KßÕ5Ãä@$%+QrhM·uðÿXxö€ÂŸÙµ–âÂ•¨i¿
G»ñAµ8Tþx/æÞz(k#”°Ï=òƒïé^‘HÉý_îJ ‡ôV?ógpx=vùË'Nä^úì“D'FHg¹Ì-âËÌ¦IJ•ËU’©ÄòÜä,¶ŽgJ€Àa.©Œ…VB%ÛÝÞ/ƒ¹ƒô-Ó—Ë•òö¿‰ÊÕØ.ÝWH€Y~ˆéÑ^p/}õNü©¶âÖU¬:¹ ²ibq¡iÛJ1ƒöUžORÓãÊ›×y'„÷Íüës¿NGÃƒÑ±Ä€&ð¿zü<ž‰’©6"É$gÜæ‰R–¨<IÂMgÌ8¡¨2ZH'¨NòØdš
G²’§FnCC}õ+.Ã_¼úî»èû¡”-¢ŸC-ÐÜ}	âÏû/²,<¼úžgU*{;\†#!áªd–«ºÆÏq,¾¨‚ÜN‚] Ü•u0z17pÒ1îéK"´DØÙÜ|t¥CÆ2œˆUM<ŽÄ»¿½þ:¿è¥.3ÈS‡Þø¨¼qÞª­›jTh…®.ü\ÐŽ–\NÄõæÃ«kt VÓ	úidžÁE«ÝñuƒFgÖèÖ`u²áÕp¼:†F?ÕtWVí?~ø1DT¡¶èUeË¢b1NfóÊÉÁŠ£É<ºqÙµ‹”*uÖÎ_ 1¿˜½Qå#DÜb–?©²&‰o·oh¸°|½P)¥Ìzðg3³ÔŒ?¢ÑéýÅìw’ÏÑÍûŽæ‹!º¤·Goƒp"d5z[*6k%‚Çk€k‚Æ²«…[ç×oO¿ä}vHµRôFû‚&þt<µM‚á>c¡?ô?"Âdm5Ž/mÆ­eRoÐ.»`+ïoGºMüî‘]ôÍtøŒîNQ¦lB³Uøq+Ú•ýZõÐjEZ±‡Ð</&p'$·Ž iÿÒ‰Tw‹t˜MŽ)b³D1[W;©øÎÅ1á´*Øª˜xæPXi’d)O‰‹SÛ8!‰Ì²9˜˜YÎŒÈXb5w,eÄPãÍ’ÜéD¨méU‹™+ãVjÎúôJ“y%Ëóü¿Ã‚`ÔIV]Ix¯Jý;›1úw¿µUdRµÑ›ÍR’hŠ³”$±&[â®•HèªYÊ˜äj³ŸK’´5LÃàÊR;Ò¿rœR‡U8áŸŠðFÙ¶bh®ÐBª­,ÐÉŠ†Hõ‘ÔÂ™Þ-Šô‰‰•èï¬²*&uuã6%:‰R3°.<£Jr™%–¤™4’%Â¦‚R#­"Î2Ë¬5”§™uÜr•ºx+2äW‘°K$PžÄT°¦§?"DmSUBky6‘Ð<H]$ã¥ì°
'(úRa•œY$Üç
_EÂ£	êPF'º•Š­Ì\ìXœ­Ó,w4É¨¥R%™H¸ ±N0²DÑœg±°™ i'±Œó8ö³áèõ¹·ŠÝ8´]—ã²tFs\D×Ã«ë>–i]Dö–³ô¡âLíE9Ø6{ìU=^,!*Öúfzm
/ìA‚Cù²ÔÇ³z+a¬uê'W'IT‚ê¢˜5Ñ'SÌ#—MÊ¸ÑIÞ›_g¶?fq-]ˆmì*Ø`U	ª¾Ypw/ßW8ÍŸ]¶˜£;ø/þ;`ùnæ°´s1yLy9õêtñAè·ìÎ×B+ÎjŸÍËPNŒbÅ(Ïl2Î‡W‹~Õ[¾46¶4#B(9WDý~x,ªéaÌ,¬Ó ÷S9ÈÅ¸ìÈ7tKùÔET8D—/ÌFCý¦ñx¾¾¶Š!5ªž\-T4Â„ì¤MlÄ^7ÂV{e0R“f"x¯ÝhZE¼†Pfô÷öz•Ü­úÃõ0ÖC-ºå–7§`T„qÀ%Põ(°¡Pð{eúþ®>~~]åÕ«NÖ®^#mÌ->²Vœ•Ã¿ÍÀ#AeKuF•HU»/?X×ºLË58Z‘Ã²Óxõ1°Tö»wÖaë(úvuÓýëÈîÔ¹úyy=¢ªîyK¾YÔ›â¨{ƒSèÚS#Ùù 4ç#JŠ­¿mJ‰á1QUÒ:_ís½ªØŽÀ/gŠ»%Çßÿµ¥æwy¸ý³wv’u wxÚ¯êŽ ·ZkóÌMû~?mÎ²Þòü}Íé1w¥fôˆìšœétF…`2‹sÆeòŒ#Š«rÊÑ˜Æ‚°Œ°ÄR"µ–„¥D¤\K”¤n["¶W «i¬Z6³Å5¤íÆÌšY«÷f7Á`¡Œ7n†ùzµºÙ+“æ
Ô¨~ƒžlàq™FV^I
uõ¢*YÕ9\ÅRñí-‘u–Ik>Þ¦Üdn& ©Þ8øqçÛáh„Åæ0xf\š$W‹‘©u\¯Ñ`ÊÖ¼´*åy>3ž´ñÛñÒƒ'?Fe»X”È{_Ú•ÙR×OïæÎ›je¢O­Ã“+\Œ*–”Ù¬TûQÍnä¤n~ëÜ­²¢Ê<XtM©‚ppüøL½Q½7ÎÏÜÌ{¯|tÓ½åô¿üþuìÈå°×›˜‰°†>Ã"$ÑØ¨²ÿ^áÀ^4s7º+§ŽO{‚³½—L6èÌDB6Ÿx;£6"êi•Û]®•eò£i,Wtãû [í{ˆAE÷ç†!FufÎÒ—èÙ7ö›ç˜rQ%h ¸èA—k(Šédî'<,ðì7›ôÝça1¯Z˜RÍì£yºZ@ÉzîÅv(Vší±€â¶™%ùjËâŒùï7êLF@èìÜÎY§¨pŽÃÚY3pÊÕ}šðCL’µsôp†ÉJ5ü’ñfU~K/[Ÿì@ÚÞ76>Õ‰d?È‹{mŽ²>ÝOÆù‚ÖµLçÂR'Be±`YfS…tÌ%1&6.Ïœt¹ÑŽ¤,—Ü¹”ÉTóD¶N³Npw ^¢”ªÔØ9[Fv—*q+€¯€ßóa£>´B»«=ñ^k(ûóy²^k«’XïënÏ`ÊÛ“
:t®WQB~DÜMZxÉ0)•ñòn¥·ðñùè0¯ìñ
ÐÃaÔj^uÑ¸ùxGXŒñÖŒçØ>hµ ÿ½½ü%2W8ÝùŠ¾ö…oå¯,pªÐ´Weø®xìá@öoL6›ÔËøˆTÇöÎs%ã}Îs®;¨ŽŸBºÝWÕñª#£ü`ÕñÓæL¥‡Q¡³/ :žoŠêçøXUÇO_¹²k¢pu;èVíí¢=„´”D‡Æ>€"”ä91¹VZkkIyœcx,­'Ëa,O'Œ#Ë¹UÊ´¥B$Yj·(B(¼K©ë½;ÈŒÑ[Ÿ—.©åÝ÷vå§•f·AQ§aTÊ…W	Þ†“ü—MêÅ£Q+bBÖÕŠXlQ+¤ZƒûÆì¤Uµ‚È–X˜ÍÅh%WÛÇ~ÝâTçÒ/(“åC÷ý¨Ì¬±qÇCNÔDÏ+Ø[Oá\R½’eíó“ °ã=?fß~Þè3Yíz¥Ÿƒ%š>Üž×uý¾¾	BéïH&™Q*îÅ˜fð`©â,‚:žhiˆ’B'¹†ï|–1‘¤ˆ»Áy&¬I5•šÊ3e·Ùóÿ*QŒæüQŒzwã©coÌ?&3„à,Sï×çƒk_ÄV7JÕH}ášj¸½¨ÊÔ-¥cdó	¼)å™Ñ¤JC¨(…±ÌÜMù‡+T¬œ{#ÃkÁt6ùèÆÑ¯GÇ%Ðf=¼²h¡ß‘å‡’ZŽ!1ý oÌ]¥°¬Œ|õ
ñ>˜øò|n]#;É–”Ãâ7Ä8úåë5†^9öv‡.PËøÐ/¯ ÉDë„iºR¡>%[lTÐ4¡d=Ç_Šf}6&µh™á¯ûžóöwòÜ'àñ9¦Âi»58V#S2‰;z|šl‘êÐBTï!ÑE`ïêèlý´óñtìïqøxqTcU°¯ÖÀ!þì¨u-¼®hGÔÔÝÊ "Žyë…ZQVäpoèô”6ûqê·=€sîµ¦t»xY½#`vµ«‡]` OQÚšäƒêþ«’Ôaö °d@Ez½~VýŽ§RQQ#Ÿ·¹ásÃŒ¹¦¹LÓ„$”§	–Nä¹IŒ²Ú±DÅ9µ`(Ê¬~egÖJJµÛ›U‘¸€T‡¯¸åfµMAžÆ-ðjÀáÌ}Æ:•ÅÓkÓáY¡ŠK¥7«•Þm:/lT7u^)yBÈ–=XpC­ÂaP#x>kz&	ì©-ï<«3Ú/[ç1ë ¿|÷&bòD´àN‹pü½'Ó^|´OÎJ%x'Þo`-dÂ«ÒpÜO¬5'jÓaa}@ÇGZ§ÕˆNb˜¡zÐO÷DivweÓþ&QÚ|Æ¿=mŽ¶úÜÒõòî—»wÿùæðòGÉEð ášf†0f„Ì¹Î9!Jƒ¤µYfU®¾l5¹jRB,ÈÛ„cD¦D&â\rµÊØÃ~”ÌO9ÊFCŒ¥«¬k˜”‰¦{("tØ]MÌ(ÝðÌ°èˆçÙdÚbbÂtd2_2Ï‹~ÿ MC
ÄdöÝ­¯ª,Ë»Ë»‹èõl2.¦ð©ròAP«—³Úê’BñLšXU^<klôÕƒW!”™Z-,UÂ[fòÖÇ»ïÏéÇLS$=r åcÐªº,ÃÑE8£‡ÁU•‚yzwsWüs?òb²œù~Z­yØñ÷v§q«é~pn\ÍÌôúîDtßc:9aŠÕŠO$dœºÌÑ4ObE”b$‘–¦ð˜N¡Ð<ËH–d,–iâbES°º‘2ŒD²mS?áETÉÍ_¾ûu@ñ‚¥(oFàçÐŒ€UÍ¶‹	O`GËp›c]>—A«ÓÙðB#ÐÔEoºH¥„?"xïæ¾Ù•{õöÍEôÛ«w—ðë/ï@üÇ«wÿ//ÆåO}Ñó?)+?ÑI?–÷ï.Ï†^u›NÆöEó í‰\·ß‹7
ª5“«Áª:Ž)KB'T´&nžñ¾?¬OVHsMé`fì0Ñq!Ž¯5Ãùa@û¥˜XŽwökS½½yö“{¤Ââ¤Ì?5i÷'Õ Ø ^¦'§aü}lÚXBç‰¢Žç‚ÒDsdù‚Y )\ÊÒDåIê€ëS‘+3çÚn+—úfplÂEóðÏ†;¬Ypr»ø×}o˜1A8y¼Ÿ¿„‚peÿ—^ïß|Ý€¢0Xjú^F\¹ùÜ}FDû¢ð6‡^7¹*°á²Ê6“JªÂb¯Þüð6zöjrsß¾¶7rÑÐ2z{S1±õù8E§îƒE°}U®ušÁûI8‡ zü§À†-æ‰§nD|YQ”[e•5_æKd>¤GÐŸÈýÕ1½LáüžLã°‘QÉãÕÂeLi¥	çÍËð˜`­œÖ‚Å¶ï_„þîWàƒ"Ö‘Šêë£ÃŸB;vö})Oü`wrÚÀÔZˆOj?¥öìñl¹Ó(ðËŸÇ]¨ípªMïÂñ:•',Ëóá¡·Lt@—˜™'²s„M%ðyL­KiÂ4H70}Ø3š&NÚX°XšÙ,ÏD8G4gišÅ|›ì§ÉÌ¯ÆÑO‹q¨Öýº$MØ8ŸÜ‡	o¯|¤ß³§½‹¦ÔAp&ï*•¸GÃ þŠFc·¾Ú4"4à/a!?Ð®µ¥=,ZmÑSöfaþýõûÿó¿þwýôÓë‡5xðÌÐƒØöŠ%ªØ=SGnKLr½^N“ÁT²rQ%cô¯µ”I8Þ~8¬{Ôûö—TOÎÖ~Ž¶q$Õì™„CÝcÝÐV€¹aë[Pê`Ùìë­U½”Î½Q«Äö¯,>÷Ã¸ÚùljWÝñvá8È'8N¨ÙdG ÌýÚ‡›'Ø®~øî]àÚÌ¬›žKGÕ}+½¡} õ›™˜ä`”C3ª’XÉ4•RXme,hjIjµÓ±‘YB.'Y&´MuL¼Ž[ÔW0S“a¸ƒ”õz1Ÿôaö.ÈóáxoýîDÑË¢W •9b…ÝOÅøô[8)ƒè·©GÍžÍOYîô‹zÇwÈnÉ×ï±’Zô®ÉnB_½ÈÒ$f+¥°ÁD%íÝ”åøúþhõwªöä_VíI%Öw[ŠcE8çòHF»‡³"¿h#V±ý´Úóž'jZd2–Ë<étVcãîPë‘Õiƒ§
¡p"Ë¸“$OâLA@,Ä.Íc¡,É¡-§6g"ã)È„ç:Õ4]5„æ<ÞBq÷êå·EÔœòþè‰•§}Tbµ®Íj î3ºK›¤‡ÞÝÈ{°³áÔyei¥.¡&ØÌkÌa0œ¼pã#¼•›ï´õ¡÷äE²Y^H»´V¤K+J0°qé€„Ý!¬½­×tŽØÉ¾2*!|ž\Ù®Ž‹rt®ŽVGJÆx÷ø&»‡ì!w*S°Ñe“°c×GÕ®<$=dµÍo—?þúîÝ›þ%GøÇ±èc´/1«¤u[åFƒ–xKë6«âdÍ}*ÌÙ´™wÏ?ÿ¸)·@Îš«gÚ¦F­îíØì"Vx+Mmøy÷`ÄN:×Ip$*ùÉq
¤°15œiÁ3Gxj$Ïtf	Q†ç&ÍHf¹aŠæ	OÁDµN¥4‰‹ÌmÃ)8*¹þŠJ~"TòSÂsª¡V`ý~é~‰ž¦wÏ/–èøwö< 7¼ê¿¼|ÝÀØî=daŸÿÞ¿çHe3z´
½WïËÊT«± ÝÁ®N§„?h,‡ßØûc[:²ßÔØáÏWk+U+îq	ÐYxD‰ýqÛÄ~Nc‚1¸«WGD$>Ê¡qwD)FD¶5(*Lð¯iþçHó§,A0†N¶C3]ØvÈ)°èªšŠØþ½f½¾‡y=…¶Ôüt¹þ] ÁŸnÆ¿wâ}¬Ð¡wkYPÚå.+ý“uÎØ?°Á¯Þþýò=h~Yb_Üüki¼uÃ'¨žîl²¹Ï ¾»lDÇ;Î+Û;Ÿÿ”
l&Z6ýycðyÙùù?þûƒl{’:Íäf/šÁævãl1…ô¶K_ã¢Ói©‡±ýŠÇ²íLÍØ:ìì>ˆ­ù€Õºåý?6Ç›Ç-g;ëôöUOwwÍüs4œ;ÞežŽ7ZÏ3Á
´+˜`ù¤ËAžgSïyàÝ¼ýöòÕ‚*BË¶;M¦ÌÊóÏÑb1´ºªŸÿý÷×?`O-—àÏ.½”ÿ7ÌæƒÏÝè ‡Ó”ºÚz.\†âÚŽü„½íÈ½Ósâ­ $ž¿Ó€×ø@štk¤„GPHGÛVu!xr˜w}l©›“»œs§IžSÂ¤â¸fYçY¦b§UšRËŒq’0m¨uLkš[Gs¦‰RnBúZê¦{©›y(X³2¹±Ã/¤QBÝ×gˆO_!¼®ÀÝ—³ñ°l>á>UíÂcWµ•“ØÇñÏ<’î24?bƒ?ºWÞÑ*ïèÇYy§tÔòÖ¬LÓuŒ|-%[I;Óš0Õˆª*¾óÕG{­RwÍ9Ûà=±§õ”ŽÖ½(ûOB_=ÜÑZ-kƒßóÿòÇp—Fô¬ÒDðé M=ŸÌl`ßÍ8ÉÖ¿¨s¹VŸº\_<ˆ½öô—±(á÷`ŽÝWùÍ;ŸÞíÒ{Íü:~ÞÿÜ]™Þ¾åÉSUoÒ]=½¦Žfð#RÔA—J”¦ ’ƒZn¹Éˆá‚çŒç*Ëež2-Ï(M¨M3)IÃ“˜P™šm 9/£Ô –»f´9êÆŸ†³É¸Æ5Û—Fòú‡7?b¬DxÎgpb2é°ÑÊ¨œ¾qfæKü¸ìO$‚µ%|UðÉh4¹m–RÿK]*áÚR	ßÙÉmôÌÕ&Ã`ãf‰ˆçA5Î&£É,ÀA`~*DÇÓÅü‹*øŸ8 7›Á$KÐ†âôn£ù°_öàœE†@Ó;aý;¹¨Fµìé¢Ì’æ0±‹Œ-ÐDX”æÈÈáº]4"Eªiþ^áð˜ù¾À
1ã»r®Ü\õU=(ü6 Uãù5hhW±+éÙxþ?Êø‰
ÙckÀPÁöÐÝýq:…zðÑtêñ!p˜Ÿ†î¶\Ç«Ñ$…ƒŸz„‰ 7oÅ
»¨r„Šæ\íÐ£b<"Å_µUü*°â÷
ÐŒFSóç*æ\µŽ÷FŽóUó?WtlÌð³a§ž¾?öqD/<qÝ¯tçžGíÛ¢Zá	Ùï¿?QºÆŽ)U%¨Ó¤IÅšÆ*&$™NsÂˆu„å’R—Â%JsPâ¬bÚ$–ŠÔÉ˜9#U²³°×D
U—	mŠ~Eù†>Á—0©èÙë~}ù|»Vô².æR¿|ôÊÍj?E»~zðÂÎ' f`PlÍ•ñá·?½Š¤N¨’%â’7C7Ï½ô»žßŒ^ÌòC¹9ˆ"t¬öÖbyë.°RXŽ~Pä:~Tè÷
#ÈM½ÇÕøšgv‘¹žæ>vm
P;ŠeíMÐIFCûuà¨ÿÈð2`´QŽË{ñÕ—Þ[Ðí"_p¬X}]§­è»Xë›*&ï£àÃyÃXß9j^ÍàÚJŸ\/½•.æ½l1Ã¹Œî¢É¸¶Ší&#ô;ãð«};u¶Ôçÿ°/Âû¸šq=ç9!UTâz9)¬¥°‰„SÑÄîI¢hËŠŸWø­¯{7ð,Þ*H7øõ÷ñ0ÀÛœ[Å9&ºåÂ­ã¨Î¨«Ék8ÎS$­­$¢ìÌk!ŽQ\º'ýœ4áäÃñ?;\|RR+'*„â¨i "‘3¦s®2k‰ÒŒ++ˆe9%:'Š§:uYš™\±\FÒœ»LS—l»ÿû9òC„uŸ<w7X{DÀøj8ÀRåªl—›ÿîW+¤¯hÜÏ!Š{M½ž7rTz?ü^”#ÅtˆÒk/ß¿¼‰Š»ñÜ|F¿déÃ1Æwa"ó+p¢ÄEcÆ½É´,\XÀðÒ!·ê²we×æ“ó†ºO†ÆaÕ×ƒè=è„«z*Uñ4±Ùu¤Û»_5V'Œ<Ü¦•Õ&sçFÑlxu=Çl™ëI•eÖi Sÿ¶è¥Qì³€q8âv|ÄX
’l>9,u264žÎ†ãýåÔ­GÉK`0ƒUBWò`ÂL0­§±hÏƒøó¯PKIJ6@Hn)+£´^C¤XV6?(Õ‰j•Þö~xm÷TSy ’ò×e)ŽüP1=ª®Lì¹çYqÑˆµ u–â.§Mz]EÉÜ˜ïÚŠ0½‹iar·'y¶ÕŠ·9B†ãeÏ#º``Ìš$æDX«Èr°~¥J3•0AXÀ¬aE”`ÒQKbË	³‰LŒ¶‚)ç¶"…¬dsÖq*]tîð‚dÊ ÐÉ_z}oN5‹4ï0Ëài³R¤öG·´Úô›ÏÁòkFï€5	s {2L¡Qª;ø¨@è›
S?¯µ`­«8Ökèû\Ð˜p7ýÖÀk%Z;®ñ•øê¸>“ãZÄJÓŽ¸ûG^Ë(…‘ÛôcüÝ_Óä¾¦É}M“ûš&÷5Mn[ë¯ir_.MîQ§½}Íc;"ëš÷o¯XÛà½m>;(|´·‚û2Þu-?*úŸQ­Ccç«6m–ôAã5›Ó=ÆÕðùæà\!áQ¹N{W@´f.¶9ü'±<sÔñ$Ë9I¬dÖÐLå±æif	W,Î™eB¤YNVg®·Õ³@<(å˜çâðÒŽ‡5­»ü‚½ÀŸÅh¾¼¸ýqä/}ßÏœ‹^^¾Þî›À…÷Á®f`×cœfè'w¸8®:Ame‡Ë,èõ¼W_/ ÃªJ8ªËaÔ™€XÑô{,üìÖ‡ô|’-6Í(B7¾¿WöWÐx›€—ëuúK3¿¾ˆÞº‘ùüëÏ=\Îw°Ð7æ"úãÝ›÷Ñ+*~õã¼A(-Ã¼/ÓŒ²yußÿ—Í/¢«IUŒªü¨ç¯¦xTÑ‰7ŒÍ£~/®Þ3Ì£ÌÀt›Cè„AJåz4œµ ýÚ]9á…ÚQ‡^ß¯c¸ œJ‘ÈµR·B3•à[³¼/×ðXûê8¾¾sOVþÉ¼¶^ƒ£s$GA»âHwÊ±qeß÷:QÝyì¬ôëÜéQ@®9mÝ¼“%z€ÖÍ*A™ÑÅþ\>ê°l•ð–Šç¦Ö²­·¹q|Lã{ª`—ÆÉáU[ëcsã–†Õ–ÆÇu}Ù´Së––Ð–Öê¨ÖGœh}ÄQQÇœpÕÚªÛÒú¨ÃÂZºO¶´>ê°ð£Víˆ“óvÆƒ#&´î¹:­Ù|ý|Õm{66·nûJllÍÚîîæÖmyCkÚúuÜÜ¸-ÚØº¥Ðhï¡9IdÄC]W*3ælóÖeQYÌ‡ùb:òT´ðT•Š¢p#°ŸïŽÊhq©WRÄès	S_›bs>GxK–Q$G­5Þ{¨2VßÙLÉ\˜*¬MPF¸Ícn3DP†9ÃóÔfÔ"¶
51â{Kš%šk'ÎRC,ã–Ä‰Ê‰Ý–¶ùS}°]d"x)^üõ=üçüoô‹_‡à@Ø‘Ò¹QYÞmòðyß>¬iÌ Dçµß§wÓ¡(½/ÂÜÞÁÐ¶„D("© ±N–v¼ÿˆ$´Úµ5¨e¥Öjt*ªx3êO)-ZÇü-aßŸ¦ûÞÍsôØíøcbÜ;®ÄÑ±î1%GYóËñî«wÙÎ¦ßÔ¶•\k–Ó¶Ë–•;»u}”}ßÕ
òøa5±n‹«ƒëUPÍO\sÌjI\Ìµ`:I­J°ÈX&ÉùwŒÑ”’Ì9Bò”¦&¡’åY–çŽ¦™eIºaàoï~~Ý(õÜF·.]Òó)oèìŠ3tQµz‘±fŠðU¾*AÙt%Õ«Q¯ÂÃ'ÝÍxÞ[r3””åÀB¤þ½á•	÷¡_Âº×A•“P&ö»Ñ]€ópMÈ¬rœ¯–¥Æ¶×…êöž=:‚‰BõŠ	œä¡Œ…¿eèÕ…·¡0Äz‰KN¡‡5ûùõ ×ûmìóÛÜ=éŽ¡˜õZc’_ê WcC½_Noäç £C±m/z˜ðàr¬¹1_‹	ÍaBóFæ]È(;ƒ)}2Ã†V>¬V3Â	­”ýNvgÜ»Ð‰’Š„pÊØ2 cÉJéP.¹í‘ª=èû×þÔuàžˆ^ÑiŽ.ü­HÒ1‰`Æ«±i{œìøx=fbû-»m£R”“8Ó–¶»¡èØñ™
¥z>Ø¿¹ïLû ”F)ÌsçÊ*Ú-rò¡oRŽŒf; p¹k¼ÑSP6KBµÝ÷*-_Ý’kíK¤7Ï^øSû¿TÅ´ìJ<3éW»€_ï‚«xt™Ey²*½ãÅÍôàò¼`çÄu <Q…ÞD+îdªµ&å*ŠÚ„€˜—	Ñ¹Ì™°)5	×Ú(I(e™Î™äy’»4cr«¶œÐ=^“5ÄÔ"ÆÒlfîà»lè“0Û€qýº¸¹,öðÂQ¿JÇõÔú ›}{.Ï‡µŒ|v<œ.Ê¬Õ< ±îÐ—ð238É>U#¡f6(|Ìµ50:¤êóN'! T‡¸¸Aˆ¬{¤{ô Šê)¡¦0•Õk‘¿b•¹aôlÔÜ«äÕ¢FÓBm?àSø¼8MaAA¾E1ãí‡‰ãªiU3`~ÑaM2`ds·i®þ¨‹™óåÓ<‚E@W+÷­J9!:ü±˜! Pøn\ôB¡53 qåÒ™ñ#Gìä‡žB‹Ž=pÑË •‘ÖôVÔîáZ­¾œMï‚mt;™},ÐBšºB£VîWøAx1³É¿Í{ÓwcAÖ£qø¥[hÍÄZb‹•ÇqÒ,ÀÌ„ˆEûÄ&?Î~`ýŒã_Ò“×aúGëÛ”vV…ì>‡WÜ.i×ÓjAªµDiÑ]K—]ÇnðÙÙ>p¡Åç~W{…rS»:àe™¬·k×€å…Ó‘)¦«À®5Ÿ6Ëû~>õ“ò´&f'Ù¡°+¡=r™+cŒÈ¬!•ÓDÐ<Í•tá&mÂ2—pê¬pŽ³„Å Y*•¹œf¶Uúd¼RURon•´]ûJ}ÔnéÄŒì=šKG¸±«ôæägÄ{$jàŠ+AðÇÒ5“X±šFKV© <
ìêK8ìjüþÈUIã¸kbôý]|,â÷!u‘à¯hU<&óœfÜâËse“,3ÖØÄJei’Àw–“Å`ªçÊ)ådž¥¹ÍSêDš¦2wÛÌso<uå«¥iö„í0ÝÖcðU²£DàÃU%"¹Ö­C*–ì,±ÇÀaŸ„&4f»Æ\qïÎlM}±>›÷0µ@Z\‚œÔióÈIñ£ËÊ9Áxoço´ÿþDùépz°A•ÀŒ«È#zy¯3ö
ì&¥s¢uÊ‰¡.“T*§’ÒX°Ø¤JäD¤ZiNRžÍ“ÄZETluÇ£áë%~)ÒÐuís)ÍØ\-#Fx]‹m»R K¼±Õ{·DøÜÝ`Î¤;®J¦Õ=Kžäó[ô+Wõ˜üå/ˆ>YW…+#6òÉbì¢¨Z¥˜^­ûÜ{vywùúù ªG8sÁ1D8Ël6ßÝ”ÀÉ¦Äãò+â†>|ã›Khõ:¸èUòû/Yùªìú›NÓ»©ÙÑÁbu/Õ3æ•šHšÄ«ÎeM`­	š¥¹æ<fmµÌè/Bç+ÐÁ`üåõû-êŒÿ½Òv^¿{Ê¯ü|ùæSHtþ+{Vµýƒ&Ï¿Œ±©ŽÀáúÜ~qŽ:Õ‚wu[§ð6Âz¶ê¾~…]¯&xM5z¾SŽe¹C4mîÀL§v8+vÓ¦˜„Ø™4,Ú¶w7iF`G’Ý% ·¿63ëæ»ÉÃÖv©j[Hcµscö­øî<Þm´Çˆú;¦ly5 Éã0—biL†šÂsX³ÉþóÒr²‡69`Õ=dù˜å[¨NµÐ°ÈŒu¦~S\¡°ÙJº“Bô”=O¡í¦’ÆûFp@|1Ý«Ý¢j0+ö®&c° wóÉÍ~î=`Ý5˜#µoØŒ°Ü3Oì?#ˆÖ™öòöh7uq+)†Ÿ÷š²$ 8ƒâûh39Pißº´®N²ï°È6É&ÕñN÷½ä¼]î
PjA¨µ÷$ý™é—zhòn×Ýç÷t´ÁË®wk?×J¼*âr­ nq¶ëÙæh×{dš _›@·vûIÐ<Øå'ñßo(©ºÜj'tºH·ÇäzÉ”a"M]BS“¦*ÓŽë,Ñ–3.sb„4Ääš&Ä‰Ä*mrn²”pmR„c|‹ëó|ÐQÎw{Òj•K„ÏáÅ
6*á§üU
X¥Ÿ‹Ï!nís`R
²zYM™R2núà“˜óN>¿L_=Oßó(òÕñðÕñðÕñÐòWÇÃWÇÃWÇC'Ò__»=%Èô#ñl1ÛŸ¾I{ŒÙ8º›×Ö`ä¨7…Ó§1Mšq)´Ðð_°sä”Ha¹Ib•qB0cÎæ`+Q+AáMc'”j—ÇÂ
Fv¬zã>÷ÿn²l»ÁxùæïáŽ”ƒÅaYo}})÷ùÅ4†¸R™_õWÌèòMFð¡‰9œ=ðÈÐŒê$³¿ôþËOÂ“5_)rG.`A”×ôá90P‹èÍÛ~)À€f×ØzæL1›ÚÔ9xÞ@ò©jXþ¸Ì—ó©x3˜à¨’0Ù)ãüêHî›I°‡j¨iU­^F(â Jdi éoøo¦ó»²²³Ç¡¸@×Sæ,°Í0Gô"r³<Š‡NÌ]¨µJÆÜ¤Ã«ÅdQÜ(Ìv}JÓ©ÔÓ@Â!;ÏÇ$„ý1@Pª’–¸büí<ÂWˆØ	–âDÔŒ+yVåÈcs_‡jÕHÚ/L™rW®
Ž¹Yðr½—@·˜Ìx»ÿm's<>²ÚÁfç0šû2@ƒè'cÜ>Øƒ‘´Ã–•ágÅÃ.C>­IùÓCb[ØS>“®¸+•”Å›ÝTˆõÚÑãjšXØ‚ÇI{_Åè®Ì§¿“í<âº™Ói¦ÄÈ†ÝrŽÏâÇ•Ì„qî1’wšßÍ]ßK¦µ4:FèîÓ?iPý´@ü‚CêA7ˆÓ‚C	"L¢r-ÍÓŒÚÄÂÓ„ç\e]lŽä.N1*1‰¥ä¼1,O¶%,½¬*?©QÁÍ«déÉ©M¶{X± ¦ËfaßCÀÞþC÷	¿Ãª9¸K>,÷êÍc_x¢›»?º?ÃóÏ^]þ~Ý8/ øàMøâaìæ(.PŒÍŠç˜m"”†ˆlÝ_~9Tƒ¨¸ÿÅRcðâ
£øšB×ÂW~ðéë=TC}Š±óŠ…/ ™â/ÑF0ŸLa4ùEôq8]€Xrî"“¼ú†L`~Ñæµ>®Ã˜T?ý÷ðÓÓC
¤ÿ¡E"ó9Ìööz¿˜²ƒ§7fz¶ZWCs35“ÑäEõžìb	½‡ÜÄ“ÍIäTÑõrš$ŠÅ+)ä4%µµóìû7òd¸MO®¦C‡U8ºú3#Éay
•(ócÝÉõm#Î<­ý¤N„ºk‹Þ¹Û³b?>‚ìçcò™ï%¹ŸX5¸Ë&Ó+v¨rÀºÞúS†J¨â<Ë¬bBgŽjÃ3°Ø³Ø¦I&¸1qÊ‚0> U!—’f–ÆZå)3Šn+õ2º¾r5sïþóMdÈOíR.¶Ã4¾«…z/æŒöðt‚P6³&õ&Ñe”|Ï»ƒÁbm‡D/çè  ãÝsÔX…z¸Ddn„Ùÿð}‘dðR³ä¶% ã zç>!&OeÖzüÃÑhrÛ(!åõ€`½÷j[}©4&ð fãp<œÛ ÃVsTâú%·N’mõ\éU¨DE¥Í
Jp—g±…¸/GßŸò“QòÖü»Oà>gÎ/sñÔ„p‡µ9Ï%QüH1F»ïF­­ Ôö;Q‘¥ªÃ6Â¸sÇÇ	ãv©\=ýö¯—?h[òf¥Q2hYèáÿ2-áÞ DKØ|ò5…\RNóÌINSžÛ8V”ç©¶R1âCÈ$7œ°Ô&&c”2–Hxˆ¸XÄifRÕ÷¤œyÅ²K‘Ø®;¬REƒÛ}6(æ½À+jeak_½õ¾“˜™ÜVLSBùª]Ì©dÐ·ª½s·q:¿Šê/-ª%?8³¿¹‘g—­Øé™äë)8ñÃ(/6Ô(Ç•q¹Ê40`Æ53N)™‘„Pã¨ÕiæÀŠÓÔ¡rK€GÇ¹p<–;R¦q¢xKé9dk+Ž}µâz7¦X¤ý% ëhˆG"*\¸ÈÅµ­'øÅJë/¡k¥wàÙdŒ+¡š‰îÖŸ_¥¯‚å.yWý-[y~Ñâ»}dÆÛ—ƒ_yûù´Ï]†a¨Ïé&YrÚ;Si’rŒgÒ±4)SŽÌ™Ô¦9p:šH3k×J)§ÓÎYîRÅS£hN·ØWQ˜h™fñ¾Â‚™pdÇ}iµ^áÊ´†{,?¬$Ì«Zb^4©OAˆÕÑL!æ©¾vm`ˆ#úˆ3ÅÐG?ÍHá¹G¨†oVªÛ ¸HoìB?è8pêý ®q±è°5¾_õYjÌŽÖ§cMÒq¢×PÑÀ ¥+©<±Ô`·–tÕûxl÷\©=Þ™:éF#Óº¬Åñ8ÕRUf®í©B“V|¹¢¶—ØYîúN,tZ=Œ()&ÀvÇŽë`ç™j”	fy›Äæ9IM–€Å–d\JM¨‚¿˜"ŒµœçÚ¸Tn-Ë	ÏˆÐÂÊmn³:wòÝo¯þã]”|¤iñvÉÑ{‰Òá#Z#ïp†—%f%p]`‘ŸËp°ˆf¦1ôz/±ô—/\fg“i¤ÈÌMG& XÀø}*PtÕÑO¾9néõúå0á`~¾«Û´*êG|ðž|ÿêÒâ÷.£tc+R…/ÿúþýå*•ºxBº˜ûÈÎúñ¨mõqØðç³»É"*®'‹‘ÅøX›°Ï¾-Â£![âÛhr;nvT‡=‡”M¢kƒQú³ºûÒþkTnXNoY“Þžh2= :èZ¸ÍËñxÁ‹Ë»wáµØ%×‘BA÷ÙlÃcx+"1!\¬Ø~œÄª½@ôïlß¿|{ìšÇ+.ºÚeŽå ¸'
ý`÷dºÄ-Q±ý´Îbª"|´$Ûºà“îWìx•æ
£ÄâüÏƒ+ÌÁå§5¯xš‚ta\&<Í9g™¡*79e6§2‹‰KR"3Jy"ÀÄâyF\*ešjAšoŠ›Ì€·¿Þö'–ÄüÁåèófJ«8TX¥(E‘\ˆ¿
,SôçÒõéÍŸÒvŠ<Ã¯Ên{Ïa®ÃZJ=”`ÙlR€HL¸ñ¥6ý¸23Ê° “ØJ4)pE×Ã«k7D¯ç=_‰¨˜Œ>•ØþÃ¢X8_½¨NÌ@ºEUÔ^oüÖš»ffD…ÁHÙâ¢RTP"$^½†Ô
“bu§U„É7å¤Þ:ôtŽ3×{Kà°£ÁüOŒº}ŽJÁÈ;sëòæDRçUÆJ¹vå”_U©–Ìjâ.O„e¿rƒ±›ïô{’{Q/I¢7û=áqº‘Ã?´‰ë 9l/ûæöÃv2Kð—×ïŸV¶DË8v×CÝWÐªJ’jAééX~ó?‘I>MwgnŽH¨89jŽäy,—~Ò«×g˜
iòÄ¦’1Aò$NMëØðœÓœei¢E’å"Ž·Ý¾ýýå/ošþAwƒ>»Y+ÑåÛzOnC$†¦Nu+¿tîùrÕ‹›RT%ò°µ7uŒÏ]vaÙCãökù]Þ-û[uïþ¨}ªœ¬¾Bk8-ýt@KÑïã¡¯XJÌ\È>Ž\¯þ;3SŸŽQßÛE//_—¹‹øÿÎ§‚\,V†\)–•¾ÿ9úÕ´Å0ô~ugžð¾ÎpGz ˜À0—àÙ(&XÊÐIú—Í—sÇÅ
~Ó´L‹1 kLŒ¯xåEºÏÈˆòÙä¦\žÏ½â±˜•écW ë@|m›ýøñ%(æ(³ÏfcâÛù¢zIw˜òj3›LF‰\PR±dR6ƒKu¬»ÈY^_¶@÷i­xnA{¸‰Î`«éíe™:ÒËŠ[µ'¢%b˜÷~Ràöw×.‰ã„Ý†;swgŸåYçø`3<w2Žg{¤uÈ/Zû°+ïáÍ+'ìwr"_Ër"ÓÔûþ3j(Q‰ÌtÆ1ÆI‰K¬"LÍ2C,aÖ
K¸•45FmÓ&½»ôN\Ü¿]¾hh©CÁvåò4óÝg`ÎWEYg<Î_ù>«5ö&?Þ$¸„Ð€õK'¢—ùBÈª0(ÉýŸÿõ¿ËÊÐx¹P9ÙW’× 1°¯žW«Œã†{ï£/ü >Š`>ül¢õêŠ×G·îÂ½æý÷ùèÖfäLJˆù
3Xó«x`tÊ»é‘)aPá{±<¿»’xî•U$Û.·Y,ôZUÅ8VI3‰ZwãªØoJç;ÒÁ§ñeª'^S:˜Ù;Ì¡ßm-ŽÖ»tBònÔhaG…Ý;	-¨µf§_ÜËQÏ®„—¬)ýüãFpÉ]pp5-Dló\	/¶«O„‰<ÌÍ:|Ü¿ÁŠBOXÚ.-¥¿#™dF©¸½ìÌ3%œÉªÂBÓþŒsÆmªˆJ‡—+_¦Úp¡	±%3§|¿Ev¾½ü%
sõÜÞ¿í(ßàó"øEªìU‡Þ&6»P	V¿ÏH)¼ºGï½Î½d»5á¦Ý“A’7Wy÷¦†¾U˜Õó2èm8	‰6lêÃÊ1D/
î¬X©uÂ4^$/Å|D4¡Å—Á¶š‚ÊXÂW¸æ­ï¡—‹Ñ÷Guƒ;ºqH;¯ÊywVÙu|t,I›u8Vp)Š¡ä®¾•™56îœ½"Šî¦×…í‘–m§Ð­Ë£k7vªÛî]ûöóûýí§º/²á1…ù©#ÅXÂR®$wTgÚQ¬‰msšH"’8I]œ8jŽÅÌ	’g†«˜§ÔŠT0Ââ,Ý†ÓôÎƒz'ö{7Ôæ>á®M`äŒûe8o]Æ)Àš_;Ä^ÊŠ‹¨À>|Èß Œ¯† wð-,òt–VV(\b&Ö¶ì*°½
/±—k¿ö-Èïã7#àê3s‡)9Ãiy{ÈÃX\ƒ¾·#Qêy<¿eMæ@¡¸XõôûÄ{êç3èÞŽîÂíKßØ/n`2Œ Ø-˜À®†lZ~PÖ•.Ÿ«¦K¯|o‚L¥›Æ<¹rˆIxbû.š-*ðª:/
-Kãí \…Cž¹¼qÙÇF‰É0¿!3çoP-Å©rºðmXoŠ£ñ
‹S¦ñtrëfùblÍâ2æÛºi—[LaTé]À>,î[°ø¶è€¥ûá…³å­}\³rçP›(•	ÿîz]Âÿ›ÿbˆå0¾Ã:NØªzÖq,7Ä¦R'1a«†Œ¼ÔIó&BÆ1'¬ý]„qß3“e8Ue¾Ÿø¬ç°HáËè‡É¨ˆOäš¢ýÊ]›$ÉaZG"cÝ‹}Ýê–Â“ÚOéDyR¾·vE;öz¦ô¨‘í†ãÅç~˜CkßöÆv•ãùðÓfwõU–}(VÑ [7øùÕ«°tµÒº%0‰9œû.P!«m~þé··ïß¾üõƒn×ú&øð;=ÜñcC»¸]3Ô_Ò‘)¦c“´kòÏ…±¨uiSÌmöÝw]¯ÙâÕ¼üþõÚöènn;Hº·ö{ðÇp˜ïÝÖtj<`ô\WR5÷ó%ß[?ØÇ²ëOò¦kYBáPw ¾ÄÌIMA¬ *N‰vŠ[IRËd.‰Ió<IuæRó,'YLrAIÃÃä¸™ÍÀ
ÚVoìÇ§X¹ÆläËÐAÉ­CZÛyW¯Y•X	:_†ý×¯Í8«&ÍxYî;D Ç#¢{è€Ã‹¤É¬N¥l7Ä‹ÈymË ®Ÿõ‘G×æS­Ÿ3,[Á›W-½Õ<>ŒE…ÐOè‡æ†×Šk|óÂœ×SG„Y„?0Š½ç>»Ç|JûÏÏ±:¨¸Áà§WÂŠÁô“[ü•XÃ—ˆ¿hžö7c‚ÝÇ“Õ›]‹Å»ªùs"_Qü9*‘J·ÖûëAöÃ»u²\—ª†Û34·#Ü–=É*l]WéXK Œ·® ³ÇUMR”’j]ˆPýªM9ÒæÒï~õž=Å{v—0Ûðâ´ w{åKU¶=©2Ôæ‘îõj7ú‡w”`E¿Ô‡’Ïî,íºúà‰Ê²6ØÍQÕYB[²Îe6eÖXª!¤&™à,×‚0il*Ê—$¹­É‘*c´=J¦6ÓxGuÖå´»im´=s­ÖcDÿ}È¼-¢ŸS’¬sEæá/%¿¢<i}±¸~Æ¾ŠÿÇ#þ9‘]3a¿Šÿý‚za¹Sˆëcøþðóá ôäA Rc³„eY"b1Ìaqµ\ñŒçY¬ÐøàŠ‰”IAMÔ‰"ÑÛã*­Ô³îm>`UeÂO]«egF¬Ï‚~^Þ—h¯Qé%÷èEf:Å!Ÿj‡y™8ZD©›ß:7î­¥|9c­íÂŽôÐä~ÞÊ–ôP0×ë~Žç ‘J@–´7‡Ÿûá¸,’òÉe‡–°Ý:#*´8*{¹éQ¥E›{ß‚Ð#<©/ýÓx€ Ã,SIê¬ISc%$çz†Rk“„ËT©R¿åÜQK‚°¦©”±¤‰ß’jù(÷Ó– ¬5Õ p[	&S®Ùv®½‹RÉo}¢'˜vˆ@Zº1Øc<ò¡€Nl^5˜#ÅAôÒq! €×ªG0kó¢·
²ãû\Œ1ù ˜×5Á0Ö±Þ]¼¸ðUëŽ2¼¢×L—Æö^ûç'Å§8v	Z”t=h‘±-1÷„ÍÔª˜@%²ibH.5¼¼­£
pZÅëµ*øq‹Ç¢¤ž+f1tˆœ;u¶ÀBì¬ÍeÿC½3'5;bUáå‰¿o}Û~–›è/Qì=qg:1ÈäÄ<©ûÓùG/"‘Ú!ÑV0•Q›jF2™a†ÆÖ%i«œ—H™—:ÐB¨Ì¡\Û4çBl+¾ý2úù÷×¾åÇá¼Ul(ªïÃòDÏÞlàã5ƒ0Œž^ûxÈ…Çª­«x6:ë5t’XïGÂ«¶žÇ:Y«¹A%oÞR©DÜ>7¡<Ž_ü™¼æêpùöê|">ô÷È¤<°‚?(í"øÈâyóUÐ¢íóÛ?~.a}„Ü|X±Yæ(îZerŸö«Ys-R«r–æi"3§"5"U–PkÀ@W¹Ë8#–3)½De†é<á‰¢tÛ-Úei7óìÃEX8’ýÂäe3—!DSz¡ µõ¢>@·ÆÖº)Mú¥áìÉï"yùÛ»÷Q6 r×_Ô»¿ã"Ž®ÇßkXåÍ–rBã5´=¥€/¯”˜Ôš±ÖîÔr|ýpÌNyÿöDìKwj§u8¾”ˆ GaÍ–£ÝãVõŒã€,êíÄÎI’™>¬ç<Ô%rÅÞœ*¶mÒy…ÍÛÒaý2å¨¸2à| Ê½”'‚t· D&%;€'\Jç,Ø[<K9f³j)>"µÑ15&—JZjE.·±Ù†^û½‡?©–¤íkc½,‘S¶6E°Ö2~Ã[fÿýú²_>TrÒ ZL´;ß#Œ:òo\|/f°ÖàöºQ5aj‘l;¥Œ8õImhá-‹.šèòÇË¬¡^u9r‡GtÝš»`
4aèqcÊˆ[à^À>–Ãóðzç¼@l=¼”QžÍn¥F’Ív£är­¦BiÝ´A"ªÖ.álÞ€þÎ³ÿˆ…]WrŒÀë°Gã°ä8ü;?Ö,¾äi-XòÞ(Œ®ìñh¿ï× É“M†½+Z²|âDa’Úã“ÄÄ®iœäŠæ‚)K]F˜É­F¥9°Ïœñ<å š	O’L’4Ëh‚Y(	Ï·Wy¿tJ©Y‘…¥²¡JçÀÉðËJÌäp6_˜ÑƒGN ¶ÖS%¶Š-Îc®×PXü}h…Ùc'¡õUt}ÑEÙ¡UAV¶í¡åMw6öOw³è_!Yw&¡²
Z,cnø=Ë0–ò;­WÎˆlÏÅËµ‹È³$[9±© JƒÉÀDêR+cI`cr™€•¡tœErÌ¡#‚ZnÛÂÅþóÇ_~ü¬£rÖÛX•_ŸŸn¼u0ö˜U	¿’CÁ?Zyˆh>j q¡óÿõKtÓ}“ÙzNZMa³q`L{A)|†\\” !X¿i1Öq¯ô¯¹èÚ#Ab¬¡ñCNú!0Æc`³¸Ã6ú^¶Noà©~ðýÁ®ÉN`8X<ª*d˜º%CÃ,»ºÏßÞ=8¶…îöû(EãX)Å(þ#.™ÚÈ á­¦,^h§D¬´3½7 }ý5êû×¡¿ïEèp!…uzC„¨ÿí;ÿë«Wýïÿ~<ãþ!`vbþæ‹÷!_à¡®ªª÷©íÍ¸©$„wãÜYþÙúžnÔàû^ïôKô¹ëºì¨¾7%G4[¶„	¸‚ÿ÷aÁ»Üæ]…=éÜ¬¼¤éØìIÅQöàÁIÛZóAË¾gó.G¹;`ÆÂºO]zX>3ùý‡ÿëÕmð5Z_È@/ÛÇ˜Ø¢…£`õù.½ìzË>'ƒÎ¾ùÿ^¸yVJz³Á½ÐøöE^ îØŸ®=™|¼÷ì6¢«ÍvK'0ñ ¢v¦òuÜ{â@axsõÈLƒ4!™!ˆŠ¾2\›gšS
Â_$ŒåqžÐ5‹ebdf¹ŒØÌäÌ²Ôm»¼ö¦jÖ¨_†ã“UâúUøzã«È»Ú‡7»a3¶(÷é?µš³¶j5%Jx?G3Ž›¢W2Eá¶?Š»:}_5êÇ£QS.»iÔÕ&žM›…¾¡’È']„ný8H®—¯û@Ú*š÷¶Ô433í¯ºhXvÔgî_[I÷az~1Z+ÛÍ&?¿zû÷Ë÷è@=>£`¼˜üšðƒš€þ÷þÍ»üCÛ¥œ^õ}¡º¯–ËWËåž%2Žºôðgë‡miSàG“´˜`Çýò²³+©~jví>­öºÖÅ&£Àkô»í†ádßãÔmZ€îòÈLÍ«¥B‘4§F“ÜƒE3b—0M¥HœÀº¦™äŠä†RGµ–ŠÅVÆõ.ÓÂGÝÐÇÕýÀ$5mÜ'<Ð}Doå>"ÚpÕôM†ÈÕEy‰ t{Õ o&`pcó¬;ª¯ØG7××Â% xè6”éîÕ—#!æ)_ŒF%–wn¢ËW¾áÐ¡˜dCƒáV0ÌáôkM¤ZÛD´æU“ˆ4Ã—Ø¾BR]õü¯†ÐƒB”dÁÏfA_Ó‚#q³cð7®0};âÿ‘ùï{(þøó›Oí|¨>B)¼…û¼ùçÜ©²Û«Ñ¢Ø’%õÀ=‹¬~~g©ý½qwÆ^±ØÇ½„‡k™8°ýZ&>µGË<\ûk¼mL….e±ÎiYâR–Ð<§‚ÑÄ¦©e0™ˆ3šÐ,¥Ô°œÉÔêXP2%ÉNEðÕïoßD~æQàq]ÝÈ¨qk‡óPæ=¯`aWƒ^ïuF>oR®–O3‚ÃÞLæÎûŸGÒC­è"òsQ>Ÿzý €+#2~ÊÆ—ã²X‡æÇSf=mM·ÖÖó°†ÍÀ.WãBÛo¾á„UßúÆ‹Sß¾¬~€Ý>N¥®»óç‚Ï‹ÇâlîîÂ}Ü^ØÇêH=À!útýŠðæf2~°—÷´.Í‡Á‘Ùlì<2Å/QÌjJ_ž¥<ç1±ô?mhÒh)l–*™Ê’ØFæ&µIœáTÌv)~?‡ŸR÷ÛDò8õ¯¢XÌ'³›é¤À	Ú^‚ñõúíbEÓ¨ÐuRàÊÃúU‡{<:œÇép_ÎÙRöü859“u…0j »"—›é°“š´lðóO//_ûÂ]­KÑÝk+n«Ú·œM³nSül»©Ž‡hÃáEÈ‹¯*ôC«ÐÇ…<6|±Ú¯
ûXmº"xdÚzš9›%‰¥&KrNE’
eH®Œæ©à†2Ôásk®D‚Z È¥ËœÌ³\•Ê÷õï^½{}J]ý>Á5õ@èÓd´¸y41ÂÍZ2{tN(YM½šýÿì½[“Û8².úî_¡Ø/§W¬.w€+VÄtÛãÝ{wÏØížYsÎ‹À²Æ*I–T¾Ì¯? UR‰71R*U™si·«òK€$HäµTÁŠ%ƒï*«sTÏ/G=§rŸÂ¥ž?”G²÷2Uó'¡kFÓ;X±Ðr€zäáª—¦>ueï,ÖÙUßyQºž´Œ'^Ñ#Ì‘fyfW–d\b““0¡°¥"Ë;Šx]¥š¦Z1Z&òúrÂuÉ»å‡¿ÿôrP·|Ï~¶ÙœåNï{v›7?Û¶/Nm>‹ÍÂ,f—¢‚+1xM!É«€ÚkYÞAøÀ^Ë1	t¸ûW2*ƒ¤²ÀJ&æGÁQ|ì¦¿•¶‹uÈç÷ë>äãúßÓ3ö­×.LýãJSªQ*™Å$aÄk}(!<EyëÏ„g†X'â–H¦˜Á^OÌ¨2ÒRÌ:žšóîÝÿRó«²"³ÐöŠBbïœ¹]ù?>8Ïæ?Ö\œò—À•¿üÛ•mˆ¨Ãü†%aÊŸ_¼£òw9ÊÇ‘¹2­¿uTþFåï±+gõû®?„DôîÉý¬ü1öž½çïáu¨CGýó¢õÏí«¸0åÓpMµÒbœX‹ÂZNj´NSŠS¬™KˆSB"–IÉ©J‹3OIÛjjïKNåyÙE;ˆ¼Öê6“&W‹ßû#õÚmŽÔšz JµvanseÎµ!}ûu:›æ=ŸîÚæj«š"M|7ËÑQ9¼¦U^FŒ—S‚8'œÈC—5çLQ¸•rûÑG-õR´T*è¯>,{ÿIÏW+ö~ÌòUcHå“´Ûð»³ËëõvóÌþ<u_y±ô»n.ÆWÛrñ]°u1R.jÚZèX(o4Ã\æåâüEÀÆb^-ï¾˜WÞëÃ2W=×› ÉÝÎ6Ó}u+‡õ»Ã©æqÄuñëÇt{¦†|è
èï<‹àUÑ.®‚sþ£€:wê8¬Æ1´öZ^¸ùãúfs;wöy®4¶U…Þõ³* yi´ÆÐ~ç÷ÚQêžÛœ¨™aòsÎúèà•’Ôíãï~ý"]Míµ;6µ^ÏÈp”r_ØÚ¿©®ÒsÎN›
d—h>ºo7zÙEµ\]}p³eîð9N¸Yiã®ü½¡e¡ií¾ò…ñŠš1fA* —†9i‰–‚ðTÃR‹5Ö	Wab$ÅÜYšd©ôrêòÂxe<ÅY›no¿È97‡,s/x§²xŒµð·¥€ƒ½(gR&e[
Â_¿éapÿ£<µº«?ZIVF[Ê¥ØR£þÇyüNR)«kÀK5f€Î~$W‹Ï7Ùš}žå•^ÞçT¼~ÕÐîS<GGM—_ÝÕjq³¾Ê_à1Naéz÷Æ:Ì 8ºñ;vˆ†~jKŠß_¿Ý«··ÞÃËåZjbËµ—pì¹„Ïu´=BÛ¿”ßlMŒð»X´þK_~úÇ«ßzç¿4peµ ’0û÷‚„lg1–ÍýKy÷ôw?ÿrúõFÏ¯p­ìÆmˆ÷ôþE¼ùíÕoð»œ_cQ`Á‘ˆ7}4¼á»2Zú†‡ˆß_þöçŸ>b ‰2·}„ì8kgò«ïQ*¯2â²¬çz¹üôlËinñ×e·ê‡{÷æ—Ÿ_½÷êw¿ßåZ‚~+àÞa\V@+2„ð¤íf…‡{@2$«ÁÞUCÐR<+àÞÖÍ
¬èv³bƒ½vpI¡NNj°ÇSƒ=¯©pÓ:õ
H^ê!+g§«¥^­Ã¶Rüzì¨È'‚“¡EwöôÁç<ÜåtOüÿùAüéL`ëñß‹.kÏ9»Ð76î¦s:.ÖWét~|ñäGÀrãù}¾†²<xÔc,ø¡*t–#;É:6'äïý]á0çp>>TþëùâÆíÂª®¦©P¢ÝÑtÿ
Ùî›>÷ËîJbR™¢gBf‰°¡‚P•‰L3ìˆ¡ŠH‚qf§i¬°I‘°Äñ<ÉËdmµ›É›»šüñÁÝ¸‰žÞ8{—T•¤ÕyÓüÉ'k·É®ñ3½-÷‹NÀ!ôzr“;rÙ³×ýÛo¯ö£å¿Y.Ökiw¹C!ßUsÉÆóšLç9¿¶gÓ­Ëc]ø•·›gžï4ûv—ò3¹šÜèû¿eÓÇú)ä(7ÿ<]-æ¹o!ìKž'v0èéœFë?½xqí§{›>÷/âÅozåŸø§ÕôßúEùM6{“¸â”ŠD²{oÒöGLàFofJ TÎãB¢ÃÚŒ+Œ;óÇJ¢påWõU±žŸçR qýºõõ÷ý}¾^:3Í¦¹à"Q¡¶ÇíFËóüøM¶<¿ãÛK´M‡ëÑ­	À³pQÒèêàïîÑö‹žnôÕ§Í~ø£çÒë_é8ÑÛÿy±r9å1í¡BùÃÛÍ{Þ1|>7uB^þt»†MfO	œÌëÛ)ŒñŽ0ïîŸó÷o~ÿåþãÕû?¿ù¥ÿ?y„ÌøÐ‡ÄùéÍÇý}£ËåÏƒ«ëEú/g¶ž =€îÞìê Ø~Gê~0O÷~9ýšÞf{@`º€Rz^:H·/J½=ÛÖêÞa>õûð¸
ÚíJ l³à»2üRýó?ÿùçŸ~ñ<p¿=O`…þþÏÂcÁ†û8Õk9¶Â×²úEƒ¹`­éw•õÖõµ•&ÃL)‘N¬£"#	qDYŒL1'Œ¥Œ§ËŒr”§Ð…'$ÖiçF]ÿéêú²¦ëË]]µj¬@yQ°C]Ÿ –C]Ÿà¤»±C›ò{0m?.þëtÚ¾T÷ºo´¶J”>Úßv.µ_=îÕ~ µ¤¥G@
4v—”ýHÐ÷ê|8"nœæk”MéB‡‚Oûð6Žp«^+B€!€óÅ¢í/Ðê7(òà*rÊª)•Ë	8Ð*ðE„Õ1)Ý[B@åÌééÂÝ-w›XÅ	FÞt ÇjùÂÓqüòÂs¢šÆ×Ëë›ZÌµÿ|ÜGr“_eœU™å™e8q4åŽ0N2m$6ÎeÊ$D)¡1ñ× Lòÿ“Ø1—ØÖr!›‰??&étnóÛÅ‹/+{¸+/÷úÍëß^¹ÝtAO|S˜ß.¯‹Dÿ:ó,–÷ëE¶É`^Ÿ¨%¿„'„b‘ƒzrþGD%XìÒ–Ê·"Ë[½¦—`E‹†p÷Ù%X±ÜoÐuOÈ'vµ]OÚÐð }¯‰"17ƒ|"ù¾ íYÕ±}ªMr°ƒØ{ÚÙÆ_ ŠÁ—Ë~Ã?ë¿^¯oõb=™Iù pwætBJê!´?ø-õý«ßÿÛïExi't»êq×3oÀÎ
±?ˆÑV]Œ­·•ë"‘À.Éi	<úb.ÈþÜ¤†AíÎ}1ž¤Ne\K—
Agœ6\a‡%!X§F"k­p‚•	‰•L¤ÎüŸYŠ6Ù¨ˆ•1J+Š˜JkVÄXÞ‘£¬ˆL„ä‡ŠÁT‰EìØj/FK¸è£ŠÁÌ³§ÒÉ:®¤§ÖÉ¢‡¼ÙUíâ¬sQ)ƒÇ43(‡‚s¯©Â~vÖ©Z,ìeÙ¶Ž+xýðÐvu¯òî.Ï·´Y¬
(Ÿãý6‹Q˜
˜Iæ3ÌŠTkÃ2—Z®Õ(á^¥![æÉˆKQFg™&VgFl)Õ¤-úàç…ÿsn¯fy1˜M^Á£(2ËÛ­øw[T–ñGò:M¹ëþÍË¿lKüQsš"îÀ2¿«¥»­fcníùÕ­ÙÜ®ôìGO:Ï«O^-ý‡Éë×äM"vãÞEø÷¹ýùä—ÇÜÎìäƒþì&©só‰)4´Ézqã6r³éG?®Í®6‹+ÿGšÎÍì6¯£³¾].«Mñˆ7nu?]þèëålZ„=ä£­Ÿå?Ú,&þ9¦Ë¢ðM¯0›®7“EæE¯Úå!z?·í(ëÉ|±¹ûéç©ûâVÏŠ
9»·`ôR§3—óðîWÇnÄmLÄ¢¨Å³}øÓ–ÇÉ×óó­>æ‡»vÏçnÓ¦=KÎ¥_k‡fLIóÖ¬¹LŽ ˆT”gŽ±<ŒkÆyõéÎ¹ù7,„çj+6Šóö¯v½™š	yŽ&þüùÝ¯ù¿þGñ±ûåÇþP{½ã¸ $L¥Î'qL‘lÛàZ™A´Óv¦=êÒìÊ¢ù;ëìRÔÂðÊÿZº¢4‹8IÁ„»­á9†vv= ø38?ÞãéÁTÁ}æi(’=9Ñ³âÜŠä,${3ß~øÓ?^ýþî—¿ýõ?Ž%ßñçê¨M½àô~þéO?éµËØ9°×‹¦¦{~_ôjžÛÞŽZ4òS#sý6Úó+æ“jýÊlúõê“m*¼¹¯p¹<úëçQ'Y®Áõªk™¿P»0Õ+À|‘ÿqÚ+ '8Ói†œTYJiÊ,ÖL‘ÌHä´‘Ú+ÿ	ƒV˜RÂŒ!)Ò)ÇyN¢!­Và\ëüMÏoõ¬C©ß]’6J+Ú(M¤lN³#(/ÐXiÒ&‹Ì»ûÐ[¤hwèíÝ(«cÛðøTRO[°+D/D-%24ùn÷AÎ­Eîw×>÷7GSˆ‹ê³!Eœ²š¥)&*£Zš$79päXf3EˆÂœ»Ä‘LY+ŒÉ¤•Äh•G)´æCä;Í0ö‡Ÿÿó?÷œ
³Ã´‹M!g•ýÎQ\ÉïíÏr;ƒöïm^Ô¿»3ŽÌ^å{KAóãÄ}].Ö[6þöîVs=[çlî?v[Ø¾ÝÝîþ¿3mÜ®]v;Ëí9Àn‹ªú/va7†j7ÞR Wq^IiÆD`)Ê~3qŸh{|·ÍWxy›Æ0]Öf{Y÷Ý´¿ãÅÜ!ªê †{å·#.é$V†¢œúÌnkÂCºÝ”'ÄèÀt`ä8¨µƒï»Âwîí#`;ŠâÿóæÕë÷âyW0$:©Rs²ë=>H0SHÐÎ£‹ŠHŠ
øÆgžÚ›=Nt•ÇGîðj³gñ°ñ,5N	¯ºpé¼fãHª4õ—lê˜™2sf¥´4AØƒUŠ2š­@õÙG§Ï¨'‹2«Æ!¯Ñ–ãÀM@Î¬º>;z´ÑhYöÄnŽSk¸áG;†{yž·~5ã[ÕÙÓxýZÔÛ'ÐÕÏ‹÷˜ýp½ºžšï£ÇÜ*:|Kd·ƒ¦rjŠ)—L’9­µT^ÛuŒ3l³©„ç†Y”0¯Ûº$5Xx5—[¤-Á‚'¢M¹ýÍéu®c®æ£Ûj“y=ú¼¹WñjæÆµ+¶ ðÙ
¿xøöëU^WÿÅÝ7jÔA2a^I¼×¹TH1•4ê2O‡-«þÍ—:®c™HÚYÙ1ŸÓÕv\á@…qÛ Ì+Š?½{Ù_7ü«Û|Y¬ò:>/^Nõõ|‘«¢',òXò!<L(LM,fÑQS¥Q6Û¹+µ´pWÙf®+Ìûcô90j‡/ ªán¯é°ò7ù…ÎJËÝ]5 X-Æ¨”He±Ã(2Ä¥i&˜²IÂ©ÊdJ…àHh…„É¨LefÒŒK57-GÊk7Ïínòö÷	y9Iýøç;f¹{[IQ›lóm²Ë›Ü®s;K~mÛÑm“»Ë#mü/­Þh¿G?Óù˜?ç¿(óÀâmË¿¾žLoü'8©ý"»ýxëÏ„"«-ßaý®7ã6+Æö4â¨vµxåˆÄ’”N#¯ÃøêûÎ³ènVWÅÚ¹â%“-ÎHÑô°ý+Ž!y{7c§E‹,å9…Zùö:„ÎØLj÷°Å;¬{Ã‰ÏŒÚ	93ö[~ÿc£GèH“Ãß4˜1†ä¡"Tø=É"ÎŒ"Â ‰9ñ‡ñ'FªSåÂ&³Æ“¥ÆhlD¦%i³´ßmÞÅ£Ýmú…­üjòîƒ?
vi-Óc§ÉÜ¤ôvvÛg‘¢¢ýÞ¹5¯W'ÆVì·VôÜÔÿ¬T³°Øß®ïÙ_æiBë§‰j<MÁªr·aÄ(‡wÆhwÕúÃ·]Úg/¾NÍ%)"ôNSÝ§E§õ:æ‡hœàºœÚÇ6ä3(ó*UÆ*D©’	uŽ‚¤6±JËç.OšHf°¢¥ÌeIã÷hÁ„Nõ¸%ŸwKnI¸Cˆ—#œ1UŠàÒ–Œ<‡è-yÔó7åd¨¶z¦Ýùü·„Ë3ßoø•^¯§þSÏ7±»ô]ýÉí›"Û´À(£ØkÂÊJ§“©þä×6h°ŽáÔº¼ÿ•©ÿ‹åX¹Œ¤išQ%V-ÛôË…¹Ík¯o7ƒtµø²¾«åóvÃÛ7æ£°“n¥_¾|yþió|ºh«óƒa—
.úùS­¹ÎL'e–2…ò\çû­“²DÊÎøŽÃ5rµýØW$fó¤¹Í~»>–]´(ÄZ”(?yßÔ7˜rpÐÿplï8¤+}»çžûÇÍbÙUyv ­	}7×€’¶Ü{™hždösUOÿßn¶è4ÒG.p°*h¼7«é|ón[>#pÐ:4häwŸfîAãœµd}p˜SXò±hxû&»;«Ú{ÜFíßçÎ¾W7>åêZc
´J°\9)#Â¨ËüãôgM¯çnõê³ÔÉeÈb8å˜3Å±Ã–$4Sšs“X%•t&Ëd*0–‰6ThæÕÕæ²|Y<ÒäõßYï´ßRC¤#tò”hŠ¡J4–TU¢]8Áö6â„H±ûbÇTèÝ25èÁ4hX@3VƒÞ}:ˆ}ãÜ=·3·úá€Ï‹¯{.]{øŽnPí{ÇtT¾‡U¾_î–FØ<Ë° ¹î ?/n–‹¹ÿ}p“¦ýš"ëòýÜÎª³{ä?oBï"{Äx7xDwƒÂ2Ìy2’Ùo7ƒyîëÉ^•ƒÞNî¯ÄƒÜM¦øq7á‚pÊ2ƒ3‰,"‰´þ¯‰±Ê§4¡ÔúKˆRŒ0#RFaI’ø{‹ÑV«Lf­5þùÄ?Ö]m×»p¬®ùÜBJ¥GŽÞBD¢D¥wÁ”ñR‹Õ¢b?ÝCî–ÄxèÂhpy§ƒÏ0¬–Çô4»zGAªÎ6t“n¶¼ÞFD/ Wœ®“Fo6«iz[ÖFÏa§ñ>óÀjü@­X/Ý'ñ6X§~{;5Á£Ücú½Î'éŽ03¿s¢
n {€øõ×üöCó®/ívS‚ìt^¿:Æ»(·oþò4„¸c´H×‹™Ût(%¥#þ×?‚‹9ác¹=à»˜n_GåÙ«Ù¶pçõÏ™ÝOüX]Þ¢\nû¯K/àÈ± nz>ð½2lîUlëSTKÏ?NÓËˆGqžMç×·þ%?ÄñLpE³F8G3çoÊ˜ck2,qFá/*5’hžbO•
+˜v\[™X'Úœ{ùø×»Çšü±µ´F*·æÍb¢­ÝÖyší"—èÛcà ¹„QÌ+¹ƒ‚K™ÐRö à€àâƒu2ÞªºU+,Ó?b½{»Oñî™ýÑyÝ“ï¨~ÝÙÛ=†»™Aý÷uóâóÜ>ß¬³ÙÆ™Ï!,_Â ƒÓ‡r:_ëªH•ø¶Þ¸›ý<Ž*YOò^_C^¸›o ûÀè½ FïÝxCýNgw½é:ne{m®ƒÌ?£Ók×Ev»´zsŒª|™ÙM2ˆÎ}£	 †s¿{%AÄpîÛ7B;Ä%ð“Mo×Û¦‡qd\¤	qÆHIÏï{qÄ44Ë¬Su–&$ÇHº„aTš¥†X%T›#õåÕO·ë‰uþæï[Eréî[©/÷/¢(º›æÕh\ÑOrW¹wËu‘þËÿ¥¨±»ºç]v"·(§óÏ‹n’÷µ\Ø¢¦ÿ—µÛá.à&ÉØ?K¤ª4…d‰RSH&È9{°ÒÆ›ä`q¢øLq¢_šku ØY»ç;†|òé7¸ÐË=$,Ô³»üKÛxçï<ÃF,¦^;¬í_]+AÁ"Oâs¨#ÀElý 
ô†Ú¸¢\}ôfÌSeHIg%ÎÎ¬ÈRI1ãÚ †T–ðÔ*Ã¼êLÒÌ2§•¡)Ï¤‡XyÄr5y»¡/'oûuâ_W^f[%oháwæcÅ7Ü§“ìvnòŸë¢Æcž1•·®¸ò{Â¬PJ×Ó›Û­Ëe²µa®'_¦›Ï›½“—ÅØžíÊk<®¨ 9õÊùbóÁO³˜Sþ{ÿ¯E HÉgóªj+ŽWÉ¡ªí„¸¿Û4ªÚL¯‡WÊ$Š'’—ÔíD)ÿ‘A
·_™e}3¬FWñ5&î«qË­_Ì­^ùÅ£RÃ«ï¤¯ÎdþïA:øö¼¦/ÿ<ŸÞ_¯8·;ø*`{ÐÇÁ:»[µ»:µã‡Œ³«/ØdE!ä=®a­À.P+0z-‰X Œvõ3kvõß*€ûûS-X+·3TTot1˜¨¢F­ù.¯]8‹˜aARVÁ€¬‚‰Y ±ª`@UÁ€„©‚ÉÑ«¯›•^C%é€,KULšj(Ð*¯£"‹´¼`árUc74H¶j(tÕPq«$a5HÆj(”ÕP 9ûe¾¼Ý@Åìž,eLÈª Ðª¯â†Š´Êë¨pùªòˆ$]UH¸ª ¨5­*$YUH°ª \ýº¸ž¨\ÝƒåªÉUZë5PÜPqc–w.WUQƒäª
ÉUµF@rUäª
ÉU’«ûœ® b°\UsÆ@‹½–hŠ*n,ÐòîÌŸ‹à50H®ª \UAQk$WUH®ª \UAp¹
6*6 Â$-Ú¼ØŠ†ËC¼¡±Þst¸tewleÖo*p‰6C¶¢û­>¸0G[%[ÑpñŽ¶Oè0ãJ&áqf–f(\º".-Ø>ãÂåhûK3§“€Krœ9¦Úc}Á8Î:Ó…‹nœ¦€k*ˆ0©2Û4"á²gÀi†ö.+CØsÅO.­QæFdüª‚‹j”µ§	Ô(»Oü½ˆ7	ÔH˜¤V¢ZƒÂ¥¦í3lŸqá²Ò€”×§“€Kl
Ù´Çú‚m
—Ú.¶5(\nß7wäeàbÂ$·†Ý:.CØ^÷.9MàHù­³ê3¸×±p®cû¬4¸×±p)®cáb\Ç‚ä8ìè9uãÜ¸³6ò˜<a#×AÎÕ¸#5î4;HãÎÐ¸ã3îäŒ;4ƒÏË¼KÈÍrË§ÿs[à8ÂºLßÎ6×nqãü/f½ñ8êz¶É" ÅÄÜWÐÄöôÀù´ù”ïM„Øåìöz:Q0(‡P«wv¾0˜Y¬\ÂV‰0Ì4¿ …Af¹Ï/²Þbî¾ÌqºOwÁÜ÷¦ÒÜø´)…òþóbnnWþíHzà)	‚ˆí-ºËúŸ¥£˜K'þ°öj1p~»*­`Â@¾±ÏÐÓç}Ÿ	¥ûáõÏ?¿§JdÐ¥³îÒêºÆØfhBhYÞ'ö…‘“.µç0MN	žýAš&˜ð0“4ÔùŽZ`]º^kÂ*v˜©…ê¾‡´£Gì’ùV`ä›yNVUûrºfúï®éS9©¦Át±óŠëµÛ¦	®klcr•{$ßï#CuoJÝ=GÑÁ±BŒ0D9uHKIB5JS¦3„©§‚§µV‰,qþÏ¼U¸%T 1y×#y7A¸–¼+îw5y—zúJÉU‚¥„”:™xBbHWòz¢j`™œKNß%”¾›5Hú.¼PGso/ôs`ÿV<°Ô^;¾÷zÏ ^å˜ñÛ]ßé k˜´âÅ[ñ}W¤è‰—=ñª'X¦ÀG”vªeÇƒD¿–Gí3lŸqCäj¨ÊÀ©ÆÑÐ¹®%GC{¬¯A®e#GCCÄ·–›‡òEÂ¥·!–¶8D’šâiû û"BÝQµ=xõšHˆ47ÄÖö ÷Zs!2ÝaÛ"×Q¶pðAä_*P®ëÑ¶ñØÉjˆ¸íî5rˆ$uÆÝÆ³ê3y®GßÆcû¬´a®ÇàÆcCD¹‡Çä˜Æ¡%¹ž–‘§†$íà^#‡ˆPgæv<«>Ó‘äz:w<¶ÏJ‘äzŽw<6D’ëßplLÐzx42H’ëùà=°½î5rˆÖkµ)e<"ÉõòxlŸ•"Éõ¬òxlˆ$×sÌ±ñðÖœóþ,Â…¼¯=üX"ú\†™K°l#?’¤> “à=¢¯ÉüHæú L‚·¾ô#éì0	ÞY"ÍrÍYî=ñáJ/+]kê{oÌ"XV‡´Üµ¥Å÷å¼wô2äµåÊ÷å¼eô²ëµ%Ð÷å¼SÄ™ùóêûÁÃ·‰>V¿¶dû¾úÏ!X´¶$â÷d¼?ô1¶dç÷d¼9ô±¶¤ì÷d¼3æDõÁÆìù…}9KfSÞaoÌ"X»sû2ì?¥à=¢!±/‡þ«4x›hÈqìË!x£hÈ}äPJSîŽÙ+šJôf,§úóbÁÒ	¨2Ð›ã “
Þ3šJôf1ÀzÞ6šêôf¼q4U'€³ˆT/zh½”Š^úD?U¢ŸÑORwè¥6ôÒz)½ô„^*B/í —b«4•E Jw[} ¼±PB ¶\1!ú°-5"Ð4ÝVU!_*¯­ÔY—.„aË•Â°•ÐöªûZÀ§“ex4}žËÕ¢AêÁcè.=T8þ¹z>wÔv€²)UmˆCMûmpëè·á­£«¨ø×4L„KpÛì†Jq8 ÞÔ¦»Z¯ªÖë<€`]Áë>€çy=Å7žÖº}Ð'ïgÞ_õŽÔŒè‡X$•
½ð(éGêIôÂ§ÿoðnö©½wý€e&Ùž¹Ì¤o}|¹‰+ë>»ÙùûÅ'%Šp›l4J3‚U©‘ÖaÎœv©³*%Ö‰Ì"AÒ8µ˜&ÅVÞRrâeþ4‹å¥Eí„uQ÷áÓ¾¶F[±‰ã¸(ý€´o;õoRæåû¶SB…dì°o;e‚uWá¨»ôC±NÆîí§.ÿ@MÄ¾ìÔÕï‰{†¹ÑÝ…iìÖo<à˜ß‘c¶¯Œ]á’Œ[‘H0·B³–Ûð÷ æiXžÃ~™·ê°<ï<.ƒ1bŽþ”4‹y6½T¢+\ûKu…á‹¨Âr€5Tá8€„W8 åMOóÑ“ö&¾Ã­Á¤¾‰ï ’_a<Ä\ËúÖàvë-Û‡*)üâv½z‘Nç/ü‹»Ú¾¹®}õªÐÆ‹‚nûYw»Û‚{NÂk—ª  ¨ƒÚk5x¨XÛ˜
EE4öï)ÑÝ(°±JÈ—Sjú,µÇR¾c)ßG^Êw¬ÈÛ]‘·ýfxo¾„êü¡}¨¾¬ÒA¯çõíL{ç|Ó¿½™Ái»ÞÉ§A:QµÝWôÒ“ÒÕkÎÍ—^ÑüïBCõÐÜîYhªŸò¤ÿzQüò†ösTw¶"K™¤”[Ì¢ˆ)ªSI3®¸Ö”2‰•Ñ˜
”9¬Ë„$)³Y–’(FÒïÎÔÎ¡U–‰J¯™ÚýûC’”Lí	Â”‚«,7˜ÚÇZË§1¶3&‹-ÆöÑØ>ÛGcûhlí£±}4¶ÃŒí*>€±]tÙqŒíqç@‘¥xâêrÄ•úŒ‰ ¦„YŸ:E=*—ô)m›ì5æÅg%œ-”{Én1¹Ž!Ù0ôå„d!ÕÃ†T~‚ÑOÐÛO­ñBýÇ•ÓÜWý‚Àcà¾ê›¥WÈÂiPåR©„‘BbŠÇ3“PÆý¬±©ÿ)Ñs§Œd‰uL³4ŠªLgÖ˜§Á›Õâz¥onòÎ‹»Çú:¡à:`ì:‚*ÎUÙy@	I¤D"9ðPB‘ÀT‚Ý»—3zNïAP’0æ@¨}§áí;Î)KýÜMëÎßhëÜ€În»ˆšåƒ—W>¿ÙãÜ•šz€¸pkÉÛóÕ^x²EÎ]íà¦öÚmB…½9nÐÈñ‚mxA¶¸ãØE˜·Nnb:ÙõóB“·óûð ‰Û"ìb¨LæDfRQ™"ë¸ û[‹NÒ$CþÊhE‚9¥Ô¸D¦	²þWHsC´#<k¹zi›\MÞn~ò51‹›åbîßìºý:øv3™®'z²^d›/zå_Ôb1û8ÝWB»1Ë¯Šz¹ôw“âÆ´~þìÙ<j÷nÍb¾Ñþú5É_eÁ`ýãd6ý˜kú+þqòõföãDÏíd¾ÝÈŸ}ð™ù_ô²ùisåÕî9³Éi_´\9!8¢B\9ý˜ù»«b%1\	I±(G«!É•ôwËƒh5$•BvÝ,l2w7*1&…ÿwÛ[é{Ï”…© èž™Þú•êì~Súú1õ"uÓá€r[x¨2¬|BÓdê¨ÎtŒ6\WÀ}+.zÀèÙm-ÀJÝ¨86±Ãw¥²´á ñ¸Ø$"q]yFm¸®¤›6\WªÇÛ3¦¨„ |{GD1
hy/	Ê |H,• )*!ÂWHrJÌ” i)! ròò§[`îêž('ezˆœT€\ED1
`ÑÖ ¡rRa>$@N*€œTá«  '@N*€œT 99´TE˜µÂ!©ƒ «¹7TÜX€•Ü„
•Ÿ:¨RT©ŠZ# qªƒ U„ªÈÕ»O3˜LíòT"‡ÈR XÛ@øác –p*7e|ð€ y) ²R{€Œ” ù( ²Q äâ·Zö”@É(ÓCD£‚ ¬Û*"bˆQ «µ	•
ƒð!RA D¤‚_ !©  RRA Ä¤‚ ÈÉ?o€çÇ?o‚Î9DHÊ Àê­ Â‡°Z«ˆPù(ãƒHG Ž2 øÛD£ HF Œ2à¨\ÜÛØÁ>0®q!ÊÖÊCG×þ×d¹Ê}0Gæº£<B‘¥®s²Û¥Õw¥g·šëÍôsmÖ=ÂQü‘/i¯fÓùí×üC(ÝÞUÚ%fõm¹Ynõ.7E‰ô‡¿½yõ×wï~}ý»6!›Þ®¯pŽ¤`Âü¼üéïï<û®g°³Îw³'W¡ªÒwm›g))v× >ìµÿÿ•'ËQ%½®·@ê©¹õk]îûnÒ)Vs é­>|mµ¥Y9r…à]¸¬Z#¨sú	`1 ë,èöi6Ý8
xmëõ´ÑÝÓír-°€Âd`ÂÞåîº¾E,r´ÇQ%/Ø]z®Èý†ö!e~ ¾ûßýñê·—ï	ê]¦î †bµ0˜š×#‹Ü¯ŒÖl »¨);]ý¯ÿ~á6æÅW{ýâíæÍ6”ç>%èù§ù°X¬ÝªFÞ@ó‚{Uõyž¡ÕÆü:Tibÿ‚GâîÚJVÐCÆ°E¥7F±¢¬H5‘„j”1kYf‰I´±BY‰¡–aK±S™ÒØiÍ2D¨'²XdŠÑ1ŠmØ(6ÉªQlT´´7á	A•škIÂI¢K®%þ¯ØÜ¤­5æJ(ŠMpØÛä<Qlgë‰ÙÕÖo]ÝãÖßwünÀ·^ÜzNÞB»%®¼ç:„7Òn	‘ë‡7Ón	˜»øœ¦A«„ÓÅã‡ŒóüÝwkw‘Àé­ÄßE£×Rˆ¬V‚ò"!òY	Ñƒïc–" A’Y‹Ü‹Â¥¤Ç‹Œ.]Á}‘|¢' —ÌZÄ_$0z-Á%³	„Kf-(ðRs_›bã±p‰iŒìî52\Z á„ñ¬úL.·M1†ñØ>+.ÀM‡ñX¸7…!B±û0­pDW£ãppù©Å*F£G„‹IG c›ØááZjŒÃÅ® ¸TVCãppi¬>Bq÷‘` Y¬ÅCFá²QŽŒEÆ	—ˆ®ÉH>Ñ€Ëd-Ž2½–àbY®ŒÂ³j	þ3¸òÊ?£*¯T#0ãpp	©ÅcF£G„KDGf›ØááòXÜŒÃÅ® ¸0VÃ9ãppQ¬wBk¹œ2Æ3¤@ÌãyÿAïb7¯¶ï0ÿ¬´Q6áîC?A+©Öƒ)Iz†#CCaàü•ÖC?ÁÏÏVf¾!&†›ÄyBçX	øÂJ‘ŸpÌ}(³‹=E]°Øý¥¸ÏÓÕ ëW ¿5P³ZÏì lZ>í>À2±GµÆsÂÐ—Pø%[£=û që„žxpëÃhÏH%@Ä Þ¯àRF+3¿¨¸Q¯‚=ö¸Ñ»]/ò?N>ÊÓD9’!šÑÄ¦IjT"uæTÂf‰e8q6å¥’'Âf&uIB´ÖŽfÚÃHKøèÏÅtÅõw§öØÑ&êË	èÕ€NÄš+á3”$å¢„’–¿çwéR(ÎíŠ(-n×ÃcæÔùCv…Ä%t2$ETùûÞ›uü-¼¯i¡qÏ´H×‹™Ûtý)/eŒ÷ƒÿúGÃàÉÑü‹C>•Þ…]Ü¶³/Mµ×ÜØÕüôUh‘’H3Ž¸¦Ê:“p'Æ	Ë2L˜˜QN5™P<%\¥43ÂZO£2Hæ"zšoSbºšçÈ‹Ù˜x½XÎe•îæ
a©JýI°ÊÉvm´!»t©¿ùX5ö”Û3Ã”„íÏûËõi¾×Œá`=Òó€¨XMºá´oá5·¿-Ýüõ¯1{³šÎ7ïn—ËÅj¨¯ùîÓl N¹¿o VwuÿâöÏ›žXêÂ6 «¡D³¡µÝ`ìú‹h½—Þ`ÜÕÇ!ÄµÄp8‘-±í-¶%nýE·Änñ-qì-ÂUíç^ÍƒÖˆU¿ÆO£ÓgYt$w«ˆÒ¹|×‚Ñ}uæÅr¦7¹òxµü¶ùàï–Ûsµá9=^mà¤õmÞÖR› ôgªTN	œLïZÃ¯®gyçohþðË|ã®W÷ÖAØõÿ½Yßí¡0Ð®ÅT'aPÕÝíá £=Ü÷ap¡RxåÆÃþIÝA"&}»Ô@ZPQ¼G]èèN\¶çAÊÃ\TÁ–ÎÒ&ùÁ÷ÃÏÅ‰vŒÕ–ì‹í¤y5¿žM×:éþâ¹?ý)¯J‘ÿHþ—é¼{[Ò7zÄ»¥;Þˆ;'}í6‹åæOúu1ï~Q¿ü-Ÿë¬û±òræ¨'± û¢WóéüÞŽüdÝ¼÷Š,„Þ][y§û4P)Äãºêõí på ÿ³«mV‹cQi'.ìóß{4›~ý´a[³ÛúùrÖàmÝ‘Þ,ŒZ~„âS)f–Kòõf!õdÄ“w‘Îô¬É¼ÿ}¡øvðøüñÚÍ¬L×Ã­¿ÍÍ§ÍñWt;=ÆÅ«}Suà{?„ø÷£Náðk’‡Œp÷‘É¡#Y%º|@é c[S‡„+ùpÇWà!e×J<¤õ+FU{xÚ9Š`)AH–¹Ô¦ë2—IdÒ3ÁÇ)FŽ¥±c§™4„gJ WÁbÁâ»u¢1„Áåª(%"!e'šôŸ¡ÃzUX
Aó²V}œhcÙª“¹Ñ	ì¾8ºÑF7ÚèFÝh£­›ÛèFÝh—èF{¨ÁGïFÇ¥˜BXw²Å”Œ¬…[B-ªr×™k¨EçhñÍÁŸ¡ÉIGï¼u‘¥­À¨ÿTsäE”î9eQ’C_@Å„{g_D™…'’ãzžôÎs§j^D:áå§ôÁÓÛF§áè4|\NÃhÅù¸f¾sW/Ïä4„&wŽ¾Ãò
á=< õ–éÀù[ a£tú[ ðQŽû){«”ðtxHúËtàá~Åê£žÅ2Ý€¾E÷Uß,ýÝüüz¢–&’a‰\Æ-ãÈYÇŒ`Ú%Æ¥BeŽfIÆ(Á–1‘¡,“–êAÜâ\|³Zø+âÍMÞg÷p`ÿ" |1.FŒ yzáDÈ²‹‘`ŽE’óØ»	AŒR¾ãp1î^Ñ˜ªwz#'Dˆ@cn­3ËÙíõ4·˜tÜêæË÷îëf¥ý:Ûäç``=-¾þæÛÌA†hX8§Pw¼*ÑÁ¿˜­'¸ÉP°e20T?Ôa†„[CÍŽ`#Üšã_/ibô2Â¸‡‡ù×í‰°‘Àéå‚áp“c€qÆ9(û dÆ„ñ‡%!¼­–‡…ÚƒmŽpÀÃ¥ ö$®=»:ÏÃ3$Yá’ÚÄ~:]œwÃ
;bP9ÉEèq–SŒ´“25ˆjŒŒpÊ¦Ž3¦ŒI3D¤Æ:ñ
>!Î+íÖH–i"±Y"®¾û«¸9(Wy{PV¹
%HHAJW!Æÿ_ß«ÐpyªË§$°®Tõ2õuÕoEP¯UÃõ(°ZáÙîIÉrOŠo®ŒŒ¶ã:b‚!Ê®Ó†PÄ÷‹
¾¨]ÈÎµÑrA;]ÐG\‡§óõ¯‰‹0©_è.ªÿGÿà”K
2©ßÓN›rÑ%_òù„þø—»úÔ¾ä]ßNÏïèJÌ¦,s%2å&¡q:Éoo’2‡‰ÿƒ ƒ0¥Xf'RIƒ4Ï2„8istùmeòúï¿\ù)é³ÿ:Wz5Ío°mwº²'›Ü®=*¿ÑÙ•þ’_ó¾lwÄ‰žÛÉö`›L7îf}1÷<.M)T’\uy!.òr‡÷<Œ¤Ä$àžçWÐèí:ýOÄîKÒBïwÇ£…;Oé¨J>‘Å‘eˆNåÂ(‘wš`k€.#l>Dø gSû=víÁ€‚^e@—!·þö"ÐeP¯ºêíÔ ]6ï“»Èªˆ€Ô0€õ[ÇD5`í6€Bå¥Æ"fX€ÔÔ0 Á©abV@|j€Õ0 !ªa rt>gp3"Y-HÀªoCö´Ç¨€¥ß
•»FñS È` ‰-ÈøUÊ$@6[ 	mAäôÔ	5D0ë €t4€â†Š M¨Pù«óˆ uu@àê ¨5³: au@¸ê €\U=H@^eƒÁ©ëã€ýWŒ/1³ýzöõêv3m@;M_0AD¿üü
ôöÂ¢,kÐítaš'§|÷àcýã«¯&||O	áç¾n d+7·nÖÜ.‹Wz´„ø¾·/ˆgW7 ®Ùb¾Ùæý'[9—[Çïèzë(‡6{Ä‚ ò9
ªô|Å¥ÎÅ¤•†ÅÇ©?èU–Þþûß Ò-]ñéDÇ‡¾§Ë[tþŸ7¯^¿ÊÍÃ‡….ç×Û~Å¸c„?¼ùëk,Þ?pìæÔz¸+0ÊÕéãŒsnF{5o­ûØödùzþûËWÿxU×ð‡Å•×< Ÿ<§œcŠåÊ ´7úÚù~tßÖßn û^N½Òs»rÞL…b„ ¯?è%ô!×n ”ßæø.¾fÓ¯näûu:w+}£áäËÛŒ2Ýé¶é%„c‰ö‡¼GÏ»/òè/3ìûàþß»½fí‚ÓØ“m‰9ié´ì5Æ~ILM™÷¤Û®ÌsÛÒš¹òFyðUpµXºùõŒ<_(+¸!NâqðÜÖDãÔ‡”0Üj.q†¥Îˆ`*I2’ëE2­²*&1V'¹#%v‘\X`LCåúÃ	¦œ”"%ü¸½"%Æ`øÅJPt¯æþWÝüÒz»¾€ÊjÑ—Ÿ\ªˆÃáX\ô€Ñ#ÂƒÑ;â.âØÄ/üXÆˆÃÅ® ‰†Ò6jÄá€±­g¨oãˆ†Âe¤)¨#Ûg\¸|tGzDsê1	¸œ6„DC{¬/¸À6Ä„DCábÛ!rùÙ)­#=À%«=Œ¤/‡þs€‹4¶¤'¿Þ‚K}kÀIO½×&|hBéÉ ¾'´Æ¤\j®US¨J<.+=À½F†K š%žUŸiÀå¼)Ä%Ûg¥Á»)î%ç¦(˜ÓVØîŒŠ	Êo?qpÌ‰ÊÌ>ààG£Þ…Ë<­¦	]á4——¤Öäù»¨à8‡á7pHÐ»€(ýAd²ÑÒïÂpÂ¨ƒÓ¬wÑ;Àq*a<PÔa<49ý.°çl€:C):V%(+Eç 1á7Á€ÃxË)ppŽØ…èœªxÀhlqñ¥f‡A8¡ô‡A; èaìp´rOhÍ :ë	€ÝÇ÷„€*>ÁÐPÔ}èOè&²
ÀD… ÃƒÂp»8!8*è‘ÊÑ@Q ]ïOóéÑ¹c4FYtómý©ÖËüô5X¨‚Sjd’º„Yœ2i±âŒq•¨4eÈ8—,”Êˆ§sˆY&ËRåhfÖYôÛ·woØÕÔO°ò—¨ÿg=Éhfz½>bÔ½˜h"–@ë®HJE¹º¦bˆËƒ@"Å”h1P¬—±âÊz˜‚+®T?Ó)lmã,åÿä2»NU¦½D:/³ú¶Ü,
…¢+B”õÍeªèÕTÛB£pÊò¿çk×Ì¦žÌ_X®ž·¯õô¦žPVÈ#ZgGTËáµ¨sDh+ç¥Ô¨!Í,O”F6!HZš1”9Ê¥Ö“ätæó”*Å2ƒ•Kuß·ÅÁuÊ%"	©èQñC=ŠçåðúèQc<ö©4)ÊÉ%kRSìû;óõ«Ìr‡Þófª_'ñh;tÂœ‡ŠW¤®«ÊÁp¯»åŒ¿?sb/oaSs~Ã™NeŠ&•$.MS”+¤EXj-Å‰L„eÎ'¸W–R'&ÅkÃ¹r¨EáûÛËŸ~ŽÔ÷:¡£î	5›)ª*Mi0JüK>LÀC‰¢®ðåËe´›CÛC*°-gå+BÙËùŽV³'n5ÔÊU>ÍºÊäë`‡ûþÚí}g†¨&¥äv¨D¡Äº-Ä5f	12ÕÌ 4áD©4Ñ<åÜ!›	ÎVÎ&D8Ç2&2ÇRþ]«%5o^«*Á‰¨¨%œ	^RKQ¬Z2š¡NçÐ»`Åd4BõÐWž¢êÄ&¢ÈxÕ½¢A:šx¾{«ÍÒoû×žÑC=i¥¸3j’4£È
a'2“
žPd°àQ&ÐVR¥œM1Nˆ¬ÍvófûHñ; ƒ‹Q˜TÍm×þ$/+Lž¼dÆI$±âÜ/ŸÑ–s•	‡VRjüV§Pœî¹vÑ®¶ë,?žïŽè‡ßÿ÷›×ï“ÎBÿ£Uç‰[uÚ•–sØvŒ#Öd^'Q™µ
aŒ!L0©M–&IæÓ– ‘fKž’ØÌ-"BiMGµåNm©uËlµóPEÊ ½z¨ð¡ÚBPû±Mmm='³õÐG¢¸ŒvŸúÌh÷	µûìT›0ê½"4Ú|F›O¸úäµ½qWÖ}v`öQ:á:TK¥	âþÔ'Z`Ç”Ë8"$#F)ËR,Rœá„K-a“L™Œ&¶Ez™?Íbyã_n¡h¬õçþ±'w=ñ’D‹
bs1ºTî<žp*QY™X	NÕ)A‰ÿláÛ¥%5š‚N¯QaFŸWú^'Ñªx(‹P^çîA“l²}s´ËŸ¥1KÛO ßM€–/tºƒâWm›ùk^FTM!„5˜»T¤Z'‰±XcK¨ñ‡ˆ¿U'Êšè,#œhÿ¬(–¢­áÂ÷|Tpn½à
!ÎyTŒ×ïÓäQp?,zNöñFÏ?ë5µÜ%p`Ý
h‡CD
â¨Â¥4DsËˆ‘‚«„¥3Ê-Iô$)%ëŒ±LªìHGž«ÉÏw51‹›åbî_ÿñ†<wô/éO·çùòåù§Íóé¢e·W)9ØíýL(mÜí	²äŸ¿ÙvÙIˆâVc·&v;~Z—û{ó›é½ÇS.XØ?›¦÷³y¾^tî{;Zðn‡AgÀŽm°æ³¿‚z-_šwy×÷Lx	-=äíÐ©½#äël{;5À§¾'…ÌmP‡ùèÜ†lÆ¡Ý¦;E]¯µ'îP¦5ÖeŒj.‘5Œ`G\b´ÈˆÕ˜1"´Ì(É8¶Ø¥˜B¬ÔÖpIõÓ×žXM{"¼Q{ÂIâ5ÐrE*’\¡º/‰AU"`¹Í:Âx?>¥þ$i`UŒªþO?‡"r+\‘zZõõÏÕ²ñ¬Uñ¦pDÜ8ý¢”®|Ê'vùîx¢ÛÀ~|¹¯úf9Ë#úÎ¯ù)c¤ã:£È+~Lj¹BB¨ŒsÁ¥H¼>èdæÿC,s	&Ê	£0)ÒŒd‰i‹a\-®Wúæ&ïA½{¼§È½®ÛÃcpRg
L5ä¬*%x‚ËÊ!!BJ!ÑzHˆÄ*W9ƒÄÝ[5ÅsiŠL!ÌXûf'RÿöüG=ð{ÒÏ¦Íjl!/eC²N§Þ,æsg6ÓÏÓÍ·óûµÃF)œd†9NœÄIjU–J&¨0Ä¢ÂÈ
dˆ’Â¤†’Ìdœ‚UJE[JéEëàÑî­TGDŽÂNÒ¥¿ˆºiko›*ë/þä+¼€‡ÚE'É¡òB1’¨»¼Ñ=XSZZßN_Å… ª¸lwïŸf·n³Xl>Àœ#er ó¦ÔYå©†#a±ÃÅŽpñ5ãB[M\"ïrµÀº
¨·À"×MW‚hLÆÁº*ç·Àº<e¹˜ öŽêà=$‡HY Xï@øác t*Ge|ð€ Ù) RS{€¤” ) ÒQ•‹ú9ôú€õ£ˆG™›ÛÕÊÿ"0*åâWö½ƒá”ÀÉ€#cm¨0T%=<x:ÚÃ<L”JcKÓ®óâ©„¶´£rÄ£ˆ‰!÷|c8ó¶™ßízU´ˆ_ÛåÚh¿Å®:þåD~€ü–ØJ|
³Ä9.LÁR­‘ÂŠøû6Ë“Ds%¥È+!j‘0g9ËëƒÒTQñTÛÌ32Ühž~G†	Y3L0Ùh˜à”ójýÏ$ñ—ÜÃüÿž‡áô3LŒþ”S›&¾©ß¬Àé&E,´)m«Å¢ºçà=G‡ûO@ÖŒ>ÌúMÑjâèƒî·ú€… Zí}ÐÀf4­V°SlwKG„9ß*Æ‘8\¦j¦’H`ôˆp¡é°ŸÄ±‰.­U£J.vÁe³ji‰ÃÁå±jw{4Ïh~y4Ñ%;ÌÓ
{¸·¾D@‚æ`ñdCfCƒ,Ê–ž‹h{aÑhCÿ>ÂdžZ˜m”	I°“‘«ž¹‹˜™PþŸš%Â$‰¶Ú¦*QŽ§	ISKâÖ¦R;e3e¹È2Œ¸VJŠÛª«eR¶ÅTC9äðÀæ%YÛm‰{Áþ÷²÷â_;ÆôÀº$	çV/½¾xÆØ—ó˜˜¤*°Š¹ÑÝ‡÷Ö~åžŸ×»ûqòûSÙôzÀÙ•xöžaÛ’?áu!²z×@—†ýñäßãÕöEv-…«b—ü¶Þ¸›ý¬ÃL(C”¾{~G€©•·}n·úÐ‘ª–8=ÏÓ„	kñg‘VR‚™J­%–Š‰³3™$©õÿ¥L1¦¥VŽå4ÚPSâìiçê.ÊÏs…jç9ååó\ ûŸtç£Ëh<ÑÇ} ýÌ€œè"<ìõ$îþgüñ'9ívð3þ!n	O’<ØÃ¤ZK+”‘$ÅŒ[­…¦2A,M’èŒiŠe,µ*1Badõ¿m+µÒ•/:é˜<ðaŸß°Ã^áõ¨JÒ
¡^§*%­Š`=»¦•4žøg=ñÉKÜùv§<¸cîCDÒ<ï×e'ýž+*âbý^o#“‹=î¦öÚmB]›%Ô÷“ÌüHeC«¦çw€Åª¾Ö™™^yæ³{€<ìL¤LQ$×È+¾‰#2	VHÙÌ‰ÄLk£K²Ték)á[™—eFüh¸óÛÍËûgƒ–l…]@-™WÔZJvÑ°µ–QÄ8.;¥°×Q‡¥d°ÀS`Uþƒ…2z¤ªÚlëËé«ÌrÌã"žÏS=±Y©ê"|€K¥wÕà>x@@Rh °)•ÁßZ ’BË @Rh H–>Yõæ: $díV!1ÃÄŒY´5L|um¸¤T Y©@ ÒRD¬ˆÄT ™©@ RS@åæ?ž¦fæ€ù¸˜^ËâÝ½û Ðkà?Ü˜9]&Ù7Ê ðÞQAåº
‹.v<¨X×pý¾_ØžRA÷•
º·T`‘ëºÇT`Ð}¦ƒî5t¿94¢„#B¤¯†`	•‰dA{Œ
•‡&h”<ÖÅO*•u$T0ëÈøUÏ:*¡u$THëÈ.9ýt3³éõ{ëÒÛëk·z~´9Ð=ý´¸˜o`@n™˜A‰oÜzÛ- ôóâÚFúÄË•û<u_àä‹Üôfÿ)ÿ|¡ µ[}†SoÌò8iÍ2°çì€ó£¨¸sAtjÐMûT-¤Jä1•¶N\—çÝ' mGä¿O„^%zëËA*W„¶Õ[‡°Å›& "p¥ hQ£÷ÜëŸÔí9 ç)œtSvÁXÞû“Ü„Eèlš³÷:@«àó|÷ŸŽ ÉÑÏò©œíw¡ÝÓî@ûÞzeVnnÝŠÜ÷Rjì€+÷pñ±•¿eÿ¯uªÍGÏ÷8Or/D6Ó=â·=G ¢Ð©r)ëd"-Î´“(³Îf†k›"ëTjPŠ\Â,ÇV¥4Olª2™diÆŽWÐ~zžÛjmŠ)jôÜRE¹ªD$bNÃJzn9É½ä°zU­ÎÉ'‰ˆ/ÑwK¨
ïµ{Î(ªŠ/7²QW,.zÀèáá|Cõ"«x}ãpð6Up.vÁkØTÃq8x›ª›øãëÞãXd€|Ô}ÉÑÐ£F—ƒ9–Qü¤³æuŽEÆ¯ª ­¹¢c‘rZsL!+¾æ^à–×¡û99ÀDî­B±¸ð¬æÏîƒÜ[êÞí^ðž£n-]&¼>ÌúM%p§«ùÁû û­¾À]¯æïƒÜýj®ò t\²B‹ë¼<Tä›é}ôŸBÿ9ÊÀ@Þ“_ï	îMž÷žz¯ÍÀ¡Éß“Aà¶Ðäœ1¨ûèûBƒ³>¹óÚ‡¡Ü÷aÀ½?ýzî=û¡¸½·>Xõõ‡¡÷Nÿ0ØÖûïfy¾0€G’6ûRX»Â.-¶#zàÄµÑµa÷±áˆ q".}‘÷½¡n,gÍ´…Å"€Xí¢Â¨ƒëÖç7D+ŸS\‰- ?ÍÙËþÞEŒyÏà@ƒ^x¹{UÂ.¿Èpþ£1ü ülUâ8U„kC"Ê*m'Ø!©°4*Mdb\ÊtQ-)uŒQ˜3G9"Üº¶„cKA1<|XÎ=Õ°„rŒ¹¤y/ðÃªˆœ*U*s,„Â
X(©¶€Æ¤ò³&`F˜¸¿ÕïA{Î¾ˆáÛ›Ù@å»Æ¼~^Ü,ó[ñ±¿ŒÈ5×!gp§QX‘±÷ë.sëÿÊëüú¿Ä:ÏA^dËNs:‹ÄÅ¥Aã,WÓÏzÓëy.»ˆõ˜g">Ë£í_Ü·èÆ‹=DÎ.&¥>8þùëA‰#ð	4eÈ^Ö)ð‹ï!©¡+#eðlˆ£ÏT¹Dì÷e0íÝ>¦/4Á0=H½Uà€Ä{ÍbÕ	ìÿ0XŽç°¶¡§¤T´¸-CÎÇíC“j_­O7³–†Zw¿õãóãF›îÚÍS9½žÎ¯ÓLo–‹ÕæxŸ¯;ÒÙ4O 9Fq3í˜‘'è~¸åìöz:··7K íÖwÜE´uõv³[7w ’nNþãoV·Ç›§í[§µ¯ˆ
Õ‘q+”+¤B}t¥Th!+¦9²r*”í+¨N÷+*”>`Œ£+±F¼]‘aÔðÉ[ÇM¤pÎMëúdð³¤á)NM1ÑØ:g2!	kBtæ8#ˆ®$Ê¨e)·Æ	B8³NŠ¶~ß“<¦æaŒüë­tâ˜JQ¶s‰€½:làczÞ©­à	
ÌÏ­à~£|´‚÷lÈô]XÁ;?a†Gø\xÇËï?PŠó¦Èö›t¯lÁøÜ¾‡HÆ‹‹¬Œ˜éj–rÆÀÆ1Ø˜fuª`EÈ³^x #KùÖ+p¦ˆÑÑ;0zŸw@0˜ LwÜ’[¦íö”é»¼ej Ÿ :î)(ÓõÔHC^Ä_Ð†§ËgP%ïò4Ó‡L©ÃsÐ@ÂýTÞƒm8,Œ•V8”dÒhÊ$2©²	OTÆ$—DgÔHÁýïXŠS©4—Vc®lJ‘”Ç5ùà<.À€k¡ômn‘P†*nÂg”öf#œ$GTø{òM‡/Ñ—@(Q*0¢>×(?xFëíö”“=½ñ_ÿn„U,Þë¨Kÿûðù”‹ÂÝŠ‹€oÜW!˜Í‹yº}ÕŸÐÚü»5?{ð˜.~y6sð£µã>ƒjÏ:KçËèÍ¸£÷Éå¢ïlS½¢Íù§½¢9å¨Eij„ÅiFeF3ã/h8“e<Í¤âÌ
ª3-r–f4Ña– ®\ªLËí7=O¼ÐN~w™WçÆM^.Ìm²UÜ4ŽU[÷„³ð„þ3Ù|p“›-³6^?N¾|˜šþÊcf·žÕ³…+¹ñ`ýcŽÚ,–SãÿUÏíýMo¾ØLî.ÆSø_~Ëioövv	7>ÊË7>Œ8Ý}Õzà¼ÒŽ;‘ˆQY*êž(ÂæO/Lù
³]ŠÞë¿¼üõ¬×¶åÒ6sý’¡«ÏÛ;üK–¶ÖÞOeèk†¸h®­7
°×¡2z£# yN8b·Ôë•^úAÏ\–9³©™ÀN_E"å$å8‰“Vm¡³imRf¸`:³Âfb6³šNÖ’;™Jg-÷¿ìhdñz÷€¯¶éfñ‡ßPýN·‡NvØíÞ7Ù}ê‰ž¬Ýf²È&oûµxÄ­}L[;_?û<]ßúÍæÛdz³ô'ß:oŠ‘ï°[§ÝíJ§ž×Ý{Ï7ØÛµ[ùjãV™6ný|7ì3½r“-³Étãnò_o&FÏ'©Ës6‡ûêm…ÏD¯'ÿåÙþ±×—°uËŠ±NR!›·nÿÅ+Ý8DB‰<´ÔID™„mÚÕåþDk^ô°ÐC½Ít„‘Àˆßæi¼ÿWÙÃï/"oþdIð—›Ä>æOŸ1ú>~æ’[´J<‡3”‹ŒL\"e²™È2²Ôk<AÖqÊœDœgYBy¢³Œ¦TbÍtbHÆtÛM{Ô/Y¬æIJÛtAJQ%ý+Áe¯­D8¿è÷×Gí9´AÚŸíá´ÁÑáøèŽqžÂÑß×­mŽ~¢Gã'z,µ}cõÖ"’f} ë¥Ñ
3Ã½Öá4q^cåÖdRg<µF’4JãŒf\!*¨uÒ¦6·hiÎ»“vh¬¿ä÷—íÃAµUã÷åBe½Nü§XyºIúmb]¦og›ÉúvYDÖNr¡ÉCûr5ôËjºÉÿ½x™Ï¶¼*[x–¼†}ã_\þ‹ÉÝ»þÓäÍ__ÿ8ù?o^ùþôÛ›'¯ùKÁLO2÷ÅãVîÇg^ñz>ùý`¤ÿ¹©x²É_ò‘žOî”ì»ŸÝ=®Wf¯ü˜[=ûÙ^Ï^OêÕß»)´ì…Ÿéj;ûÒ$¼óxùÿôì·|¾¼þ³ÿÇ/ùË“ÿñ³¾ 8÷K•`‚vZQÍE°*× ¦‰ò—£˜!&)À‡’óD¡=ü]ío§·Ú‹1‹R{§4°Ê{ÈúDåSK/ôA2ÆGëj„éð°‡Ð4ø/í¥4ïqôœAT¾AÍ’7óë@à:ã÷a¼ô¨Í4Ë ëhOöƒçœŸ”ïYç[ÿâÒ¼?ÕsÙMfÝÍí×®Oô8L­“07ÿ‘°ÑãÏNÒ8â˜¾|¯QŽbíT¦¶iªR‘	FÊ‹beû_#éFV§¥K°Ë„%‰F2I0ãm]#Fù;Ò˜yMc–¸YcF²šêÃ•e™¢Ü¬ÜOcÍÅ§Ö™	Š;§Î<|±¥KÒ™Gt°:Ø`z 9_’‰u§TÇ´‰-²-Úu(ý¡6‚î•ràPeížøX,ÌR]ß)$ç7mk¤3k´Uã$3Ô)ý¿'‰SV{Õ\'ØfÈJÇ´ÖJ(¤-B©ÉD‚R&ezTQÿu§gÁC0ö\)ö³XOó¿çºñŸßü²ž\{un=±ÛÊ·þ}Ê¸N§³éæÛd³xfý·XÝLçþ‡“å8×óo×…ª=ù¬WSçI½ï½žæ![UåP+~¶Ö7ó<Ý¹ÒöÅ+VÅ¿ä©´…žºM£X/&‹ùèÊ¢^¡$k¯ ‚&T”•eL‚%‡IT1•$°‹ÝoŸ¨y¹‡ªÜüfúªÉ+¨&o•›pÁìŒ%j Ý³Žé´*5£ºZ•´ "‹`Õm„…¶0j`7t—¥²ÕerlFÅ­…’Q(…ê2ÛzÔÁ¡µ* (m0ˆÀ5RÐŒ2~L€´!Cå¯™Oô RØb30z-Ä±Èf @(›arîßˆ
—ÐjtV˜ÌÔb»ú¡{Þsô0Ééßð³~S	“ä*:Lœ«è~«/L°«è0é®¢ÃD¼Š>*çeµ{`;íŽíƒåÙ«ÙtÞíW-Ñí']k417·«•ÿE`èÄ%Yôîûò§[`—Ì=%ðiN•]×Q©?vµ =[WÛwŸ€omG™™Y}[nÅ6ÐµØ  '&úèçŸßÓNÝ("\ijn­ÞèÂ ÜäI§XÍ¤·BxŠ ¨Šq<¼k1À£§Jž ˜ÌRð34ƒºöýõzZÓÔ”÷ 9\×Wou©lßiãN!j†¼Ð0ò•>']Ù
Œ}«¤S.cºF{Ü¿»Ž”ÇX8´³ðq}’É˜L2—šZkÅ2IS†‘P*5<CŽ±TRFV¥Rq«LJ87Hðãu|Fwá™Ü…×Ü…ˆ7»‰Jü/»I"¥‡í8ý$I0¬<O³Sì	ÅÖõÈG9‘Ã0<»Éý¢jðÆC¡0m~Ä>à~C÷åñ1öàÕk"ÀX­6Çcp¯5'ú€e°êÆ¶5ùPâ‘AòÝæ²ì‡‡KZ«³'ƒÞ3€KÐ«Ù]ßéÀå¾ÍÕÙßwEÂ7€6ÿg?<|hó†FàcŠUñŽög·1Ô}¥C0f*ÃÌ%J:kpÔ: “¨½£î\€É k8j+©{\`µ©Ôý¯Ðñs¸a¢`Ó{õj;þÖË
y³M¸{ï,èÓDdé”¼µO+½g¨ç÷®ÚHÐ³Ž]xŽ"Ç¦ìP\ü¤÷áp|Â%O2p¤;—2:8ë®ÁÉÂ•ÇÀ±Jd8fçJ>CV †&–a§¬×ÖæÜƒg{ï!~L™Œ1íÜKä>hè›mó'_z
ç's?|ßñ#^|ÅóÜßïåç~è~øžïŸ 7”vç4þoðÑôéQ¥×öuZoslÏŸçÊ²4MµK‘™N©B‰ Z¤	Éx¢±ÌxÊœ”D9œhe5ÑˆÛ”§IFrY‹ãúåÖ±œ·àšlËÃÜ·N¾÷Ó·9±!èp+
Í.ÅL²Š·8a2!%_±Ç“]_¨«¸X5c~éyÜÅ‚‘ÐüRs£?ºœRý6±=»;Ôð‹+U?¶~‹Ù÷îÙK,{þ6®¼ƒ&Q=‘ÉoËü¡ò/^Ü®W/Òéü…™WÛ·Ùµâ®ŠmýÛzãnö³òë»âL»Ð•“[ÜŽ=A‰øõíL{g3Ó—#zÙoofpÚ.Î÷ú^e5Ù½{.ÿÓ«tçˆF™Ó&•ÆÊDˆÌðLëDRÆciÞ'T#'!‰Ö©Îlâ°3)ãDg^ýSˆèïZ©«–×k,”:USêxU©£û‚ÖñJÝxRµŽ¨Q­ÕºKVëÀŸ;€Z'‚K¤œ7P/ÌQ5j|gÐøŽ/™á#ÕøvíãDéK¬ò
KCy&ASjˆ×ìœ"YÆ9²Ú¦©ä˜2æw)w˜Š(M3Cl[ié7«ÅõJßÜäi»ÇÒû€.AõS`Õª„JQ.­ŒSèPùcIZ+n÷ŠFýï\ú'Xê-ßìTjÀŽÿãjÅ÷„¬Î®©;<éoK7ß.s+pƒeZô{y‘]gÉ
¤úŸ©½v›ÐXÃê„uÉƒâ‰Æòß 3mð–êß¿¹åš¦êóûöibŒäÊd‰É°´s¦ˆãB¥×Ú$ÔPb)§y3qž‘,5Ij2™ºK*&¥ÿ¶°]g•Î¤ôH½øjj>L2§7·+W4/Z{»yÞ|=ù¶¸Í³Ò^Ogß&ý1o÷ýYÏ7ùÛ_dy’úLoòO´žÜ¿ò‰ÑËmN{>ÄÜN>è•ý¢ý©ÿìÓõ¤Ðýedµ¸)òß=o©ÿ¤íÊ™ÅªèC“ó¿µÓEñã|¾‹¼sù&7dû9åÀÛõvŸõtV43÷÷Y¯R¯'³©Ÿ©ñß}¥·3XiÏè:“¼—x¹ó¸d»<õòe'‘ŠQR½ë(†K}d°Â˜ÂÝï?Ð¹P½â´½›þµ±ŠJu¿Z˜µB,üÕ„‚TmÄªp6ã¢Œàön†Fkd;< ¾g#`nÄÅ® @5ÏF Žg#PÁ³¨Ñ{{½Þü±XÌ€å[pý—Q@À&Pÿ	ªÿ‘°àÝ©Û¤êð £Þwø¾ãí Møa¾ÄvV‡íjuxÐæV‡÷\‡A[]´ãÕáA_¨]|¯le½gü`õ‹igæÞEƒ¿×Ò¾öÒ Ûê>aáß ³<ô×þ¾4/,ruyøó¯ïþüujfMçheºƒ6 ¿öÿ¿òd…	²ƒt‘þË™”Ú_+—K!…çF8y ¦^¦·›él ø°Øäžèå‡opÐÊå¶8}a’?|éã…ß[ô°
¢æq×´¼ùõr£§óÙb±¼ÊW=d~9*ˆî‡7ÿõÝ«÷eb£l÷‘Fû8k}ª£ð§r¾Þ+.ÛnÇ?GlZY‘é1³N™eÂ.	Ó#n¥¶‰L…QLÈ„(Å‰22ãT©ýt´ä?eK>©Zòk[R	Â²lÉ§JÉ¼ü½%Ÿª$ñL{YòÇp¥ÓÚò#û\Vm`O{£Q¿8 €]‹‰¿¼ïð}Ç‡‡ÁÌÿ½¸õœ¼,]‹O ¼ç:„¡kqô‚ÃÏµ¸Âáe/@oC-Ç˜ø¤ ·B8Ë¸¤cn†xDm›MN‡A¸4™f³‹C0fj1ûl“—b.Ã¬æ˜Í·Éu1—˜­¸É‘„;—?ãÑ„‹_~Ô÷Pe5Çb—G‘QÑä57É÷€}ÖpêCH8bïf‰Fn½-'ªyèJb*>(¬ì\	@•¼,p\ÉÝ‡Uý.È]ñÄÀe—ÌJˆ‚«k¸_N—\Ð¯ h›“:ø½%°s»Œ)@ßÌXR±fv} ¢ŠÎÒ,Q.Aq›HÎœV$Ã&Mã˜&Ô¥Z¦ÑLš,eÌ*9ÓIfhJ"êïú§b*ðÜã/À£«…[s0A—ó°óoœ84$b„ÀJðT—Î˜Ÿp.Ÿ†@‰ÌOØ×¸¹¿T4§vÃ°ÍP“ma:È„›…ádvŠï¢za|Ml¼T€>0ï<¥pe	­ž³—}³BÓ¸‹ZgfzåªÏ¡Èaã™Ï¡#‚&3ë$ÕN¦Æ²¼"·þ'Z•&$E"EŽQB†©“L1«)Â6Ë2i‘Tö»WÉ4È$WÉhM%S˜•U2Š†PÉÆ@“+e
JÙ÷®”=ÝÚƒDõŽ§èùjê·Š¤6a³âAë¸Xq{ÈÊ†4sØŽI5‘Ú	¬„Æ*ã6SVJæ”åY’1M]F5\Ì©æ„Se©Sq•!ê˜Å%hp	TƒK(#þÜ/…	ç•"“Ãâ†T0&Tp˜ðXÞðüjœ"2Tó»c–å>7¸{ªõSŸNEyœu/?Ðå\*þp1žq15cdÌ£ŠŒñÈ†½ÃÓ–&<cÏÒïÃ?¬ÞÞ0À…zØ?åÒ—'Î­üÅ÷üîu	°Œ#G1#(#ˆa¤y–Y‘qå\–¥G‰¿&hD­e4I3I…2L%Š:døÑlÈ»|ÆBÌ“Ùäí¦Øn&÷OÜ‘¹%ÿùŽ¼!EòŽñŽá6CÒèù$-2mžXhŒž$×p6Î+ã·ÊtžŠ8ï¹€{¯ß+$m¶cœðÊÅ‚3’$%Û0çH"»X”b/g½¿@üº½Aä¹¯ÿòò×Guu8ò"zß"žù†9|	(ñëö”´|°²¨Õ‡‘ŸºìÎÉªÜ’G<Ä)«äô¯žwÒ:;Ðš6_ø^Ïä©”õ¨„~>±êGÒs˜¨åÚd,ÅÌšØL§œ £ŒW<ãÌ%yŒcÒimRaIJXÊ´‡Ð´ÕD=ª¤Q*©¨WÄà»YQIQBh¥$gHò²JÊ”×Jañ
G4±`+÷¨”¶+¥I²ß/W)mÒÎ&ý I“g3¹Wr/Ñr;X‰‡'Ôkf4èžÄ ûÔ¤ÊçòƒFv8¬Rís†R®Œ×’“4Ò"î¨ 6É¤±¥†ÆSÅ3c“Dæð¸ÄI[]»Ž°ŒÊm!2¸£Äå”^	VzÁˆW:—c¤°H.õ.W‚ËÖÓ¥yMúï‰ô_Î¥,wì;R£4`—¨_¸*{Ñ÷ˆËRÛ!> ª9 Éà‘êŸäÒó&%˜%TS¯arŽI–dC­×zPæÕP™zª•°(%‰b	3N&IŠE[.ØX[(‘î&uÖæJH‡åöW®Ïc¸}öìïó¢ÌqÍ^üc^TyíîÑ+7YøiÞxÅÒ–žg²MÁX?ËU¶õ¢ \zÑ­Vw”»ÒÍÛw4ó<6./Ò¼Uƒ.A•¦¸*MUi‚)Å„•Ti¥%hÒ*A”c¥ËÂÓPhÏÿù¤Ôg2°ýûo¦?¨;± ~Þ2&ÄáÛ€„tkÅZ~µc{Ükd@`Ãp”¿‰UŸi ŒµbÙl­Ø>+ÐW¬h*ÖŠtkÅÚ)Ø?ÜMÞlÀ	r"ÉMP°(7‚¡Õî7t¿±¡rÔ‚Ž’çF^½&•èF0T¤Á½ÖT¨ÁP©nCÅºhXVNi×"cØa˜8íÇ¸Å1nñ(ù·G·Ù§jrëëW±\‹š¸S£g.ËœÙÔãÙcX_r„fÍæw_3§	Óœh•rJ]Ê9Ç‚Cp–b›ÊŒæõ˜ÕZº4ÑÈY«0×8M1¶.1n´ú=u«¯Yýp‹ÕÉ„U­~	O0>¬;š †0ßqˆ·úÁÝæd÷ëQbô´v?Zf´ÝÖæol2 öeÐèˆ9°?‹!¦1Ä<àÎs¸©°7Ç&oýsÄ~Ø›Å ëÞñçˆQ±7x¯Ÿ#&Æ UsF?tøÞÑbyìÏ#PjÛì0d&²
3Nög9Ä´÷‹eC¬ÜÀm¤ÅŒÙŸGàFÒbÔŒ
9ƒmsŒÕ,Volv‰¡ƒcÌS1³`‚Œ­}ÀÒf¨ÙôzÈu`Ók_Ö"ìòAó~ˆ¢IìÒ1¦3ž"¥¬ÔþÉ™£¢ŒÔ2K©%ØÊµ)uHd:3FÑb‹}Õ‘¥CÚÍ®Ð0Pæ);@¥R˜ˆ²R‚…<K””'4¦Òéà3Z*»,•^dÒ?Å‡œ%Ç‡ŒI>°1Éç’“|ÖÒ?¦ëÿ£°Q/9F[Míü¹EÈ1‚µŽ«”	I¥B”b–*•z•JÌ4µŒc*“˜P*ÌÓ$5‰Ôm­?·Qo7ïŠÇ*|ú‹¹»í
mâôXUÉTÇH°–Š¡Dâ¼ðÒ¡Ë¨@¶"ð?!’ÁÊ3mŸ|ìëYUe›ÞKoVX¤éîH+&ö; F#Vüü^ÇD5 ·•Yc3, „¾†DÎ×01+'_Ã Âãk@T|HrÙbš‡VAUÁÅª
¯ø0~Èø1Ák¾ŽŒ“·*Ÿè	€%¯
‹_½–À‚X‚¥±
‹dHRÙ¶d¶LÇ¤”0Ñ¼Ø¤”“f<4ABŸš5qpùËŠòúu±„gN”Ì	1ì£²9îÝ—Q Î½¼F;G{*i$Ÿ†Í¹°äŠfcÇ9y2!Le2õ¿ 	åX¦:ÉX&2ä„Í´à&Ša¦•QŒeR‘M™Ú¡”}æV5wð$i6w`L-W£fˆ)¡JæÄó‚‰ÑæŽ±Ùâé…7Z¬\îà†ÿªå#Ü`‰‡ö¶Ï¸pï[·$šSIÀ#y'ÑÐë®Û`M‰†Âƒsl+aÐ˜àÍ¶–^è`A®[^zâ{O ÷BåªÓ*Ó]ßé„ÊzÝTÓßwE†Š~Ý~Óº	Ô­9P?ë©:cPÍ`A5-ÿÜ]k¶¡ˆû8cÜw‹Ñ%fÀCÛË«Òf y¢î.Ö}v³óÇ¦ÌZÄD’R.²TY›FIª˜’©s‰¥”;Ã¤Q© .Õ	1%R$Fø{-AI‹±æeþ4‹å­…åã0†zg™j3Ûtc/À€“ h¼ŠJ¯4£¬¨{ßKLÁvd¼)VË±rC‚pÌþè~Øëý¶­
³BíÇÑË¿YÌ³éõPSl`8À4ëþ$Šô–u?i×ËÕô³Þ¸>O¯±¿¸]¯^¤Óùÿ™®¶ß©k¹]ûnQ¾gÿb&C¡”ÖV®¤Ã4†ÊW=Ÿ£üÔ*Á9<8Fç½dKy"4VÌ1‡“9›z@&J’TkIµ±ZQ§Lf±N!Fr‹¾[¥ C½:¹R jJ«(yt”‚Ñ¯sJµ °jÔ¨<Nµ`ÈÔˆ'¥ˆÀ˜Û“zPú+
Çghãë€ŠÂC¦mNkyÊŒÔ$£1k0KÓ„KG)2Ø•eò7^n™EÛÌÓ«ü
,SÝíÑÑh±K] Á/Ac ÇP)TÅŽ€e"V‡íóZ†$(ëe ¶Œ£Þ Ô(ÅH…éßë4'Ò˜²‡]bÊöC?Ðá	%*…ŠNâ4BM{D.$˜.V5õïôÞ#I¬JüéÿÏÞ›5¹mdë¢ïõ+çå¸Ãb)ç¡wÄ‰°%·ÛwKÝ¶¥Þí÷Á7Ç*¶8™ 5ø×ßL€dq Á@²X%îmIUke&‰\ßš‰…–¤ÖPNµÐsç¥
Ô!F¬ä!‹´¥Jyá0L×†ú¾+Ÿ*%ÒwQ }ÉñÝÏ?­ÕE7Æåy6gå6=TÿØWÙ/oßuf^}ûíÍC1ôÛ,«Ròñz½õá¸@WRÍæa¸©3ã»Q?þì&’G¸”‹þÙ*™¿¬ƒšì”2'„UBM„%d`«x8K‚otçŒ¤Ú§ÊM|¦þª. ³jcº"L„iˆ0B¹\M¢	85%t›%)t‡)%-s—©ÝTíæJñ–Tp5NýÜ£ÕÄ))Ÿ;L)–Ÿ¦Vg$%Ís‡)%Ås‡)%½s‡)%µ³d:¶ÆVŽzMî<srçëïç‰WäŠ2ñi’ÓF¿¹ØÓJô<YG­Vy¡ÓYÂÆ-ˆ’S@¯I™•Ã]ZRfµ¢v;½„ˆR(,B˜I‡ £ÄZŠƒ¶¦åÊ	D<’”hÍEPÏ¨NB÷pÕUU;£ª¶SÔ‹êàB„ÆlKU3¼¡ª	™ÚtªR#¹zN¨¬Ñ¦î€
$šnwÝÑÚZs6I,«Ðá:ðvš¸ÓÌ2·ëwí‡ê²ŒÉcJ_{Þ.'­AÂX…&Øž·A¢X…^˜l«>¹zxuäÍ‘w¬4±Ý°K£gmîz¼àºÏÏÆ×-{l©6£n<Í×ä1|öifôúHyfV{ª$7@(#AP8Öž9Ê·*F´HÇ„àš˜pFYëFÌZØ&¤|©l·Š)_ôÐ!KuÜŽ˜ØTYPéáº.(NM5[?1WßÝYÔAŒ¤lXù!¼\Ð1c¶1bÅa:Ô=F"×ågY¥ùhÏ”5u<ÔÉEÜ9l¬^ É¹cÌ:Œ1Æ<EZ)ˆÖHA' ‚NªSÊ#.ò*á‰°p_8ÌW!äxªÉ39Bv„ÝrœurW«ç)ÅoØÇê*ævÅÜ#ØuÎ•5ÔÐº}¦äŸãÙÔŽ)ï3ýG‡Û[ÓØ³‘cd4Å
bœØ(2Aó˜1¬$òÜ®Jèø[ÍÛ¦ÿ’ziü— øHöõqoÍuÉ'‰,Z:®$Ÿä‚4ôô]€Î,ü MŠ„Kq­×íïîódî¸i¸írëÜwÓ¹KçŒÔå6419®¶®ÉlÕçòDRôšé”Îv‰™Nì¤øå¼Í)Ï	ðŒ²¯®YT)wå×“F5í«ž?B"•4r`V{åÆ	©Ü( ¤cÈHÏ áB@¯`Žàðà¡ôDŠÎ‹ÏõóxšØ5aÁ°ož}Ú‘tEäyŒ¨ÙÌÏG¦Äz³ñ*tïÞeÕ´?žç7ý‘ç³b¤rgÎ]ò†gc3ä/²|nî3•g¯¾ûÇ‹ìíØ†Y_4ã0Ø¹0z-DÇ[½)¡r™c¿9Å9ÙôÀpA%¤ëÖ%\e€„è‹yõ¾ì"óÊ­éÜ­QÑ2/®'95`“<9j‡)-ƒj—-)¯©‚­ítmçKòˆTñ5Ï¥Ú¥åäIùT»lIV±]¶–ç&)«j—-)¯j—-)³j—íP~Á³IGÃÍé‚õ ƒS’‰ó±ùàfÉä³þèK2ñÇþt6Wƒú­ïè
ñbÜGÌ${vIb2´6TÙ&¢ Bº&òfEÿüR¼Nœ³uM¯ªîDéUÔþ
gS`p¸p:•·å|Ö/RœBÛ;‡ÛZj¤%Ncƒ€òJ‘wˆ8ì%ö8HœÚ†&TŒÐ`HàÃ_õ½Sê{dGß¼Zßƒ‚m#p
°”ëú¥¦#T*5ÏÈÓ¥¶û©4>Ž ñ51¼îª~x¥aU)‚¸;NÞqö&yP	Jb—Áº-¥IRV•æØ…»Ûék’šU¥Nván’žU¥\&z2wtÌdè†²™î9ÝÔ:“ù6ÔÏd®m=´‰£ö
éã¸fŸˆ³õXÙhíœ©»zk³ïñAmÍø„‰Ý2À¾&7äSIÍÚV[9­âú¨˜KÁbÆ"êwÒ*Ã¬0ÈA¬b¼eÊqÃ! K44HP	 óÔ{ÏÛþ­”öÖ¡‹.@Ñ$Û™]ûMÄðNIF‰ Ú¨þ«‡ã¦ªæ³ÿ»<!Ò4ü}ß[;öºÆÇ]8d»ì8»Ç3ŽœT^£á¾"z$½ôü¸´Ðœ„ïâüqZ‰PJ#!(SÒ$Š´À+`]¬€±H+cˆš#†4¢NIå)Ú—WÒÍARp¬|#Ñ÷T“¾YyFÔ ?ûò"ûtß7÷ª™Á¼ð¡‰Iói ¤/n~zùÏl<qÓšå/²pÌ"R|ñ÷8p`šMÇƒ,ïß…aœòÅ}×Ce“þh<Ÿ]„¥Ûy›ìi`Ã)G›®„1•ë aÊDjIñåÙ|¦±qQëîÞtv•PI'8[´Â®ôø¸-¾ä€µm¾Ö¶ž19Lm‡±]ÜÖ0m§O“ÛâKŽ“Ûâk{‚’#å¶ø’Cå¶ø’cå¶ø’
‘//†“¨qàkÙ‘‚ÈRÃ¯Rb©NUmÉþJ"ªW@yÞÔŠì›0ò¿^ÿð?¿CQûO#XëøÚÅ9Ì×\+L8ÒÌA. „AnàBï¬§Ž!†‘H9dR–gˆ$˜Axu.ºêÇÒ/äŽ~!`µ~ÛÖ/ lC¿@L¦fÇWcègdïœ}sƒÁ¶­‹Ãö·GãèÄÞ4$jWÿèÆßuþ¦P‡”’N£u\LÓ°¬M¥{ÇsØ42kG}éÄÞ46kG™if•=½NsCjÂÙæ#¾8çÆ5B'‰ùA¯iJ¿®=·` îjÑc•jÐpì…ä”Z!‰ œÂ˜à„(,Ñ@"Çˆ21ù"%‹É)D*…¼­ªX>è‚í
Y.ù/@eaÛQ={]"aëÄfPá’®·î¡ÁÆ
Ës.Ø|‰nÆqûšÍKðsÔz–Ç´ú`f}%õ›S]aç*á|LËý9à9¬ƒÄD‹VÚ
Î4Æ
Z,ÂFYôÚC©²Ïc¦5öÀy#q^Y"úêEànTÀ«]œm‹@¶%Å´îWËÝ‰… "W!xL!øœ«;7¶Öž«Àó1m>G–†™ír2À¸ñ!o­1Öci	·¼(S ­W–úÇZz`ŒƒiÇ$µ]²=êebò 9L‹A/„[Þ,F)Ãë‚1l3’%ã³O÷¸@áˆlª!î}o§“<×Œt¶K¬ˆ|Í8¿‹àë0ò×JSüÇ»ó[ß¡Ú@(¤TIC½acê‘ˆb"…DF{ €ž®#Ä(_˜4ŸÄ÷Wà£iMnºŒ²ý|2P_â?ßýÏûáÖ;£J\ö?ÎÌ¢ÐŸªÉ}ßäÙ7í/Y?–{Ê~{û¦Ñ·ÍA"Îã.ÇËq‚zqw3û4îÙ FyÖ¶­ín1ÚmöËl·ÕÎªo6WÙ©úþžØpHqÃ”•¥Feq©€¯ú£YXÇÇ€G.!ºIì ÂðÖ«í$ Poú
˜Dˆ¯‡71Éb7$@øñî™:ºÀ¿íMél¢e5áw‰™ÂÔ‰uò¤Üˆ†”…M†æS4Ÿ#Åê¾ÅÑ8ñaƒ¿ñ„)©)6”†Æï>%«aƒ!%aƒ!%aƒá`µß¼ ?LÔ7ãQ=áê{?¶6õñî ÚSº*ÓTWj¡$uJV–jUÍÈ[¬k]Åi¡5gyÌ“†Õz·ÈÝùéù+Ï(«äÏC¯æ™§‡ì*_g)k„ZJ¢ &ä,öÂR,‚Hj¡¡V@ïƒ.¦‘ƒ­£Ø3oáUýzRêÝQ¿–é;öx.Ñ–ú% ‡ê— |YJ¶©úuµ¿ŸF“°i¡¥-dšnDÝÐÄZq5IÙÒËZòµž°õŒ22êu¶vÃ´¾A&È–"×Ž¯í	jô±¥Ýµãkæ±¥ë¥•§-U¾Ôb¶º_ƒ*¶'S¯.´ËÊ/9£+î€îx‘¾µ4•òÜt[ÊcrBÎÕ½·ŸùÏä·õ•dá$úHé7# ’po™óLrG<g1ù†HÅÎy‹¡§Äc|PN- 1n½ö®MìqÔµ[ñüøjœÜîÏ¹×‹†ƒF¿©Å	„)ZSâ'<1¦jyD®Ž´38ÒPûèâwÇ+î:ÚÖá9>öü:Òh;HEoô–L»€L§ÉÍ9Ž7é¤òð6Ùp'{JðsE„XÇ-F\#¤¼`À!¥´†Ã
a^*Žö?g‰¸ÝÁl¯a# Ä¶Dd›‘¦¶«®–ˆWÛæ©d"lhÛ¼ÊÄgUÓÀf}ÙÂ1)Uç8V¶c	ÇÇLÎ 8¡‰Qœbî±rF;ÊáŸ€ë(dzã ÓHb# N ÜW+ûPfMˆ<Ì{	Rr'Ku¯ûsÌ·ä$&„rÁ×$%&‚à˜×Tœ3ŠK^pCr÷M@2]³nÒÙ.1ëæÜ­óþ9q£ò…5˜n©úÄ~ðg”EtuOÙ=q$¼÷tœ³ñxp ‰šI…­6Âh‘Õ–9	Ò@‰X¦d@”Œ+Û¯H£4wá¿BcÁ½§Õ¿ý2{žë¡ rM¿=
%(<"XƒŒñG(`ÆJÈH±ØJàÐÆ²µ~}&ÂÅâH,jƒqÄ…%b|RU»*ž¼sû=ˆ›V^[Kòíƒ’0`1fã›ü=8÷ºy/¹×íÚÈ½>R—øß†ƒ†^q\
”yDHòäz¯ßVAdÇ££]§o[4Öùxàf.ÁÍ+ðÍûŠ'#·`ñ`àmN»5ÇZ»ähýÃÆÆ£a–‡É»4³‰šÝç{(M—‹ñÒ)kfÞ¢Þ^C' ·8-Ûxo4Žœï­¸1#+4!a„ô;o DH¥ (è”A^Xè³Ü/ÂlÞ{U<ÐŽklk÷¾:®K@~hùa¾§ªkŒÞÙ@~œQ¸îQ‰M(ÖÏÇ&*OÇÅƒ?WÉHà‹€PÄÌ¶ °Óõ¾«¥]¿§7
6Ìïú£Þ'§?ôgõ÷±¬Mš[°(O{f0¯É%Yq³w»w×ð2„–Ø üR®C	 "Aó…’LpF¨±(ÖE„!¾a
cA0h&½ÞwÖ¸²^Àµ(ðŽB,÷U°€E¤Þz¨Òµ›QbQx#Ü 5À{T­¸ƒ{ä—"ƒŒ´±{½¸–ºAèÕpwƒÉ‘†úWÿçâ¦<b¸ÃqvcÈî¼1Üqzç;;…å£e´â‘ìçˆV|’U–g<mAKêW¦ÚFºæš‘·(Ý?Ç´…­ûñZ8ýy¸Z¸ÃRG)6£tSQ²Å¦•¯ª¥5©©×á"Fûk—yž˜­wŽßµAÿÛ°vìuç¨²ÆŽÍñM÷ƒþènÞÏÓÛŽ¥IÅqâ'sK”
áò•tÒMfzpù~Îûp×}–ÕRÙ±†NúŸÝ >Ì!«©«è!{tû©š§­¶¯îê-±Èìü¸Þtº2œ®–Û„6qìªGlÉ–:cÝm>ìTCòÍ¥œÀ®rŽ°À¸uLZ$ˆô”;¥UÄ Ó’# 8iÌˆ • ìëµüÜ-+45Ô JŽéf!1@–S‹Åïµ¬\#ÚÛVÂù¾ÚV#Ä«må4¶•Gˆ-9GÖË³Œ\Þ°½4w©6Â´ˆ~ÅQVFš–Q×gˆÕ~FQÍ×èäÆÌÉUÒö[ƒ.%‘ïjº(£PJ~ä9B­ÑE£ÐIç\…Ž9ËéÃøž¢qh-®.Á<TE·×ÈDt€±A´`½™h3°0ÁP´‡á˜¦¢}ÙÌ§ÂÑ	h5cH¡d„XÑBäÖ®±3±!¯çRÅº :a 
ãv¹ÌÌE)Ü`1’É±87-FHp7ï"FY%D§ØŒ¶š¯9]ŒFÓÝc°š©~¸¤ÜçYYßûöPÏ3ÏgãaY±»¼O²üäŽùP²$ž©üÃÐæé+
úÖÀÆnÂ±û²¦ªcx|°‘¯ý!+_WDI›¨cG“¤Gƒ<˜$ÒFn=òË";è0aü46Š1ÙáHí<õGâêOÝ6å·¤m¼†Æt	Y¿//'ê]Jêáò9œ«\)à<´– ¢µsB(+8%)F	†ÖÂc_@Ã4¡ÚY, òPóØ¬ù–¹Ÿ	`fÉÙÜ2& lfF¹Àë>VÄd@l 3`¾úYÛCfÑ´Ñö>Èœh²®ÄÎ©ý
6At"WšNdÝ«ÓË~Ÿ_?NJüÕ«XÄ/ÍŸØÂ¸ÔOë?ü¥q!€ß§Ãq¦O®øôGÓç;w_‹†¥®žÔG,ÈpiZÃÉ=mz¹Îoq7Š!k­¦F8@™ƒ ci0ÅJP¡‘£–ô‡ðOà0¦–si(‡j‹WMÑ§¥ðÈ¦óQ¿Ã£NÃ/ë+?íãz|…" û,ì Ž·;HcÊµ– ²@Ö@cØ8,W;ûQÊAÉ&¾žË¤¹Ë“Ò´½‚+¡«zWËÉZÎÖÔŠÜ6½¯bvS'ôu¯àJ(å]ÁÕî´$´y¯àJèõ^Á•Ðð½‚«Öü¸÷æ»ôl§¯Ï¿s©¹¼ß†=Ù'ñËv…¸ó¹0®íÝ¿vÉb€¶âì”Eâ6æ8¡juïLP— ãÒyëãbI™§A½‚T ¤!XQ&óB(edŽ"¨	À2LØ×šáy*W»áK{¼1HpÙ¦rE)„¯7.
?	„GR®®>™öÕvhÆô(ëJu«sz—ôjå«w·¹Ûúº¥ôT*f˜Ó»¶Wªi˜;¹ô&î•º[æôvî•š\3ïc(tW‡âÑŠO,]ð©öRoî¾ÚÑ/ÀéumŠru–=Mr½‡É¹ÝuÐIolP¢Bs( ÞaC,R–R„<³@;í ¡ÒpëŒr¤ vÈ»}ñ~ºáC
yKårÿ — gîVÙãÄ“˜R¶ÕõÎøºš~"j’&³ç,]½yÇñæá¦el7mÓ"–ûê.4¶'‘§Szíës€<Ý—ËH¹xD÷ÆÕqðñ™; öÃÆs¸"BB:O ¥VS+!†*˜0P9´Q†BÅ±ÜÆöÈÌ	C©ÔÊhîý¾þ_pä©
$›þ	Ä%ñ<¤‹pÉlR“/	8^=í¡#íæ©h]z«†ì`f}D(y5½Íôú|s9.<3àM«WiÂÅt9÷™›Hcå¬óEÄ
„ÿçpd…„ÆyjdÜì †Øqä4¶ŒI‰Úp<.PÀ½Uƒ"4©bÍÀlÇ W(RÍžâÍdgÊ!ßè]M9â¢I§®Õé¸š9ƒUY‹Lç_NYÍd“>%Qa‹#!m`›£Å$-fI°þí°´î9”œ°Å‘Œ°Å‘ˆ°ÅÑü$$ lq$$lq$$lq4K:ˆ·Ö%7 ùúlí§²„7*È”\Òh• }æø«Ùüj6ßûh—¯JœÃP.¹r˜xî¸!@ÆœSŒ[ ¡Òë<ÐH0ÆÆS	¨ÓBIŽ…³AÓØ×®æY)QHlNC)†›m	'­§AN1hR7i2q5}wÈ½Û¨'/¾²£^´dLŒßU6Úr¶Ÿ3Ý(|Hi9Në¤ßï¨%-[Ÿ¥ô€û]¥%cz ýŽæÒÂûs&æêá9š‡ç\þ–v­šW|ÚT.ÒtõÒ\½4ÏÛKÀ_>(°õN Òhÿh¨WÁ†…¦´SR3‡V–{Uˆ	rÀ ÔÞjÂ ˜jA8sVq(%àc @^ÕË~™½_{¼l8¶ó«W­ö0=ªv%(ŒÐõ@£ð#(„ÕÚ•  òÍNÅ2S1n}¥`…II¢¿fmO–ZFñªoËS’¬_¡ìSvŸ¹ÏÆMÊúV©xmÿBlöãß^¿yZzØÞêªŽ_j#uì‡FQ*=›&½bT£N2jz RƒQíIÖjÝ)FmPG·Á¨þ$;àû'õ$çõÎždÔôN­F½?ÉÉºŸŸbÔ~zs»£þç$çõÃø£N²ƒ§ur’ó:9ÉLOr^ó'õ$ûšŸäÌO²Þÿþê'øý¿<ð:Tk7ô®ª­öI}¼{„(¹†
˜òÈ*ë1"„zBÆq­Qá¿Z‰ ˆ)‹%³Vyª ö€Åb¡àÔÖ+`ÿ.Ÿ*›„]Žû’åóÉd<Ðþ—YÙž÷gAHÓÍšŽwjƒ›jàájµ †¶BìæÇ®g“ðFhb«Å¡ÚTCš×=)Ý«òy»ª]˜Iü`yià[ÖWƒ~ø]bàÆ‚euŽ»°¥F–ìgN	×«cOˆª«eï:}×ù‚Žêù×%­­ãb"ëØÂëØ;žÃ„€Á:ö„èÁ:ö„PÂ:öC!GzªìâŠ¨'´C¥ç¾—»éÇ"_ç õtØswƒTòþÇ~/¿wƒÁAÊ?f½²KPoyß†isµ".:+÷M:Ãg³x®ÙDk|wƒÏùòû°¹Ãy	S·xmòÙÔ©a/6™šÆ6Ò	ÌƒÄ×Óp>øg{W®£÷‘6!féÄõ”’þÈ
ÁbÔÆ·t‚,ÝoýCRäí“ÏÝai\¡ÿûyjõ•%å#×ÐèZ¦üD­`Ôø¥yçØvc·Ú¢ß LþmuÃ%|5¿¹Ï³„1m±…(‰(¹BºÒ :uûw	õSç¢VŸ°ØÔðîµ`‡_½:ö¼ÅøŒwá½@–~WFG$RŸ b}z(ûF G›áŠ ¦ÇT´
ûhïÑ.Ð£W³HÃQf¥Yx=+†ù4/¡y"C	 }7Kê<4üçºŒjiLûÍÿünëåZõƒeµØ9IPzÐ®Ž×Cm5µU¢@C{ªÓÒ´bJJˆ(K‰vQ4W<üË" œ¤2•fFÀ¢ÙfâjO=`O%;öTPmO•”Ò­(" EDlšS1§Ì©MÓžTŽòiªœ‘Vi»ÕñŸÕš®üÍ"Wk-­Ç%=¥à€Ýõ(Ãi5éÒŒ±Çô8KKOŠ¨·Ðc”ãœæôÜ‰z³í1FIÏª¨7â&²fËM¼[¶º©lÛÖÝD¾u3ojGú=öÞTön\à¦œ;†Ð”¦ÑÔˆûjãp"÷+qê(ƒ¦¯¹ívµÝ¥-Krs.Ö‚+‘å\Fæ&ÉQÇ72'nÞ³Ì¥:dN.Ÿ·25·`¹Èj{Gj­Ò.‰ì—Æ¥÷~i^zoÓðÜ†§í\¶tiëN\ï–Ñ;•kiýNE!w3êÆ_¶ã‰ÓmXÈyçûUØÌÓøÖíà©smÄ/$%±ÚŽún¿Ž„Æzsw#\¸fõnˆ(×ÌßÍ±h“¢Â ž
Ô6­Ý­˜–&ò$Þ?“ŸkËdžÝNb2‡;ŸÖÑ-ç=÷Y'wœ¢ôMè€ïg^2¤ƒ !Ö^a%(5\".y{qÄ‚xH¨‘fŸ	ýçéønª†Ãþè.[>^v)Ûòì3™§ñ_€‰\°T9Âx»¨gØqLézÄ1„”V‰gûø\mås>Ñ*Ö;ÕV^ý"N£Ä®†DmöYª§-ÔÊ«~øÈúá“vO]<–^ð˜¸þ ýˆVÏ#Ãè„r.­a´Óæ^FnpþŒ>#P°§žxª0,@€‘ ÎJ†ˆz­Æ\À€¨-tLA 8”DNe}ŠÓ¯ÊËV­\öCæ÷÷.ûe¶ÎTÆ‘dKYŸ©eýÊIçNšÈ ¹ ¶ 9öÙ«o¿½)BRÞ¾ÉÔdá¢:KQ2äïïß¾yùÿ¨ê]1qV~IùmöÝèKöË?õœ	?T£L»›É\úù½³Ùlvw8ž¹%ý‹ìÓ½›º¬?Ë³‚ÌdA ¦ð q¥U ô‰ƒ`£{¹S†­Êdn'BF6Ñ=FÍo4*EÚ§õ)}8Ó
ÓË¿<­ÌÃ={ÓÿCJ[ÆÊ¬>¹Û¤Ðí-úÔÜÁ
®¤¤Á*¾”l½J¾Ö¶ž1%¯š±qF`Õ0m§OÉ¬âKIþ«âk{‚RÒýªøRòüªøRüªøÅE[g*J±î÷‡â6%¿iE}lÅ}5ð#f9}ùKÉYFO*íçÚ;à ˜îTxÄ8|rV-è,nŒ±À˜ht %)^!§p€¼ž õ ØLzâ¸ðHAÂ´C«ˆ"üª]´DØ©‡Éª[—I*ØTƒ_OÀPÈÔ¢*{ ~CçÆ%+B]¼ 'S„DË*,[À-Ý¤Z¥uanã_­ucï:}×ùË'éNFë¸˜!ûÕ
U'öŽç°At~µ–Õ‰½A<~µÎ•k¶Oõj`²>“vu›Ímz¬¨Þæ¾ÔgæÎ¼º±ïÁEÄ˜Å9Ö³îãc¸Èå^%sÆEGWÀÀ á0Æãž/!ƒØ„-0–©ð{‰€ô˜sJ	Ü×úu|šñd¶¶PV6ÂÃÖtá}jbÿcë]Éþ'D%ÝÌ¿¦˜o´ üÍµ®âÌ\]PgtA‰†.(3TÜ7®ÛE¾Ý2þÿ˜ƒV¬“a½røÇ²º¿œçÓ—º?z¶²WîeÍÚ‹Ø+® /ùÌW«nÙS_iÄmuƒo”&C·vü¼®‘sÊsXQ•×Êá47J`¼fÒë —†Ká$ÀYïœÓÌK„=åŽiâŒõÂE¿jQ)RM”ATnEjQÉ·D¥dG•W3å‰…%#WayLaùæ‘#KÖ"f"AA<¯Ô¬ˆS³Ž,53‹)(JN )˜rÀ
·¿ðRZ+ ãÆq½S€S„)d*(¢Z¢ g‘¥¾mS‚ìLâ‘Ågì{&>Ãön‰OÄ†ëíÄÇ¤¹ =JÓU†6’¡ ÐP†î}o§Pù´’Q£±uõ¢æYšú/»òW3S}c—À£y¸ßÍ‡˜·¯ÍŸ¯NâÊãºENëÉËïâþÔ«z\@\’Î$0k¹†ÿsÞsmÀŠ[b¹µ˜a¥ƒ‚!å 0ˆèC¡r‹>=Tng)×Ò6š{òlHV1„n66ãA¦òl…}Ì~ýÛ«F(½Í~šeùxà_2ë&c 6ŠñxßŒÆ|ÍÜt¤‹_¹‘é»ü/'F¾½°èi_îÃÀ’JÌ]ÇÀñG.=&ÛÙ>rÛÝ‚)C˜¯‡¹QAR‹Ý®ŽãÝ¡çåjé†|+÷¦³õˆ0Ú°Ãs¥Lm'ƒ[q%fûìò¥åÞTðµž°õŒi~*ÆÙ>»Ã´>-Ûg—/ÍrµË×ö¥eûìò¥eûìò¥eûìòÕ†ÿo_É`¥*ž‹û¦ÐqôÍç˜‘Ó(ÑfW¥KÕ’µŒÔÎ!×\šý_Ê3Î¥Ù£´2f7TœàŠ3Î½'#O³@zA™J2ãœ×ˆZ ¢(¨9&HA‰€@_„“)r[A€|OŒdlU Éj ‹äj •øÙÆ»cHC¤¡müQÍuÕC'öFi(•úC7þ®ó7Ê<IP*:Öq1Ò`ª4NìÏa£4˜*õ£{£4˜*e¤!õ,:Iíit’öV+1å¬Þ¨«ÿãšrwÇÑ’@š:=Ú{è½‘Ê%Ê"
 Øy~sTXEx,#tl-¥@3kZ&¬”¸–‘­þ‹Ñ?H²ƒ‚„7ýCF6Jc‰iªlD¹^½'×A„ Â;IYq]`™ãÆ¸eÐêƒu2ÔÔ2!äHØéL	!e0>©½÷—ÓÕb:ƒ{ïZÆ©‹é¹}Xöâ”*¡é(N£§d?b¢TC8iU€K! 6‚#»X ¨9CÖA-5ŠBÎ•s”„ÿI¡\ ”ÂÑŠŒW8YÀI–jÎ&;1ß3¶Ù¹‚D“c¾kàäÕ¨}R@)èa|”»€òŒqgJšz
Ö¾ËoWFæœHWä£Ø Ïhsâqx’VÒ£æ26Ä¶‚8L<Ž@#å˜‡”kâ ¸£–"*<ÓY„"ÎBL8âÌ"‹¨c­sÂÛä!.áÒƒé>„ËF›ˆPézV#å6èÞÎj¼‚ÜÓƒ\„yÓÊ {ßÛédë¬Æãyt¯ÙŠÏ:[ñœ·¯xõkÁ«_+>ü¡û<›ªcä6-%þsiŒ2B(Æ€ñV m‘ÖBxŽŒC0Ž%«B)„Ø[ä¸ª	þÂ,ŸO&ãélY¿>"82üPìÄNi}ïÔlöyükbÉûÉ@Íâ–çÙ<Ø1ð¿ÈÜíÝíÍ›þhþ9‹UöÿõŸ~ëú‚8/l±¿Ìm5‡ÚYëlV’/	f÷jFtEòo7ÿî8ó){Wüöñ;S
·:#ÀD%ö$€£-ë*äÑ¾Àà4ì¹:¦×²ÛxsÏÖt/DÅ›6.E_øÊï(ÍÕ¸IžèÏ¬`JÉ#¬bKHê«dk;]Ûù¼ÓÕ|MsšªFi9yBa[‚·Š­å¹IÈ¬bKH¬bKÈ¬bKH\ÝG.Y³÷Úï«Ùç˜Ü®kSS{ºaÏ;n/R>G-8&%qH¤Üx'•Öp½õÖÃ0Ò”:/0”Øi0¡˜(…€V]±òc`e¼ƒ•IuóJ¬,ÜÄÊ|ÅÝ
+?#ël‡˜Ö“¡eÉ†´V
ûdSlîÀÛ §®Dwâî8yÇÙÓ°I »Ë`Ý–’žLWº»pw;}é™tÕP¼wz]50Oµ-žŸ_{A=-—ËS7÷_N®Ù9ŒäÕnHÆ´2™IL„²@k¯ "„im#XxçŒpYÅ¨#sÌ4ÃAG¶^SwÚD¯Ø/ ˆ3j´F€’Í€	È(ØÀá²´ü²­Cs5\ŸÏpÍÚ¯$üc4få¡:”ø*Z%;*ÚÇ2@p’Äœ£ÚdÏ !ÏÒ.q„ZÑ µÄÔz£¸
÷µ³„a‰–ÄRO­BAke¸ Ph4˜¹¯\F¢TcU‘ÛÆ*Fá–Œ”MÝº×FCg—’Më@]¥ä~)ù|{57PžW\¦„ýÕDrq9LÔ,–|„¸+G Áœ`ï	¡@	BöLQtÀÐ(@Ãå9“áÁR2Ædq	Q­/é—ÙoÃÁÏ‹gK¯Æ˜ýööM¶bÛv*-SQtþ¨î_d¿ý2wÓ/áÏwoÞ¿¸‰¤8Â»°²¡Ê>ªAßbç$+ßÖ>	‡¤R²BÄ  bC¶”UÀÖ¤kø	<-)uíœ]õÏÉºosº×7¨3èáÓIžÚbHŸªbK
 ªdL	iªfl?eû9S4Ã=œC©*Çi½€”pªJÆ1_ÉØú,¥UU2¦„UU2¦VU2ªæñÇpnŠA?Ÿ±ä“Áü®?
ü‡QÇÃýrlú0ò#e]Z¼ÕeWsÿåtÕ}6È›>w›*ó¯^ýŽŠ‹•¥nz}ùõ•zæQxû5§sµ‡(
,…„i¹‰n6eÅÞz$ˆqk(0`¨ÂzË`€X{ÕšéNÛé&„I\­;AA ÚÔ(’oôp¥P"ýwûÔƒ«]òÄÚýw{à]z`O¥Õ‰»I@Ý¥ª#çt^Aƒh¶4…«Ûp]—Ó ¼nÖ¿ë‰ld·G5ëÆß Ðn¢–Ä¿O_Kf:Ÿâö8ÑzO$þîI–¼ÿå|Å´¨}§	?¬P¶¸¥ã¡Ô«ïZÝ öö¹„(Í“Ö2Xƒ¤¨I1Á°d˜`Â¿‘Ú×ŒKÅ$XPm£Ž/BØ Gl„²®·
CyàT>‘ê.Ãá7m•·â‚I¹Qß*h²¹·ì³y^­Ü>jó.3"åX£î9\§ƒ–_EôæE¹yÎâå½ä<ñË·¡_f9þ£¹ýÎgær2|Ûÿgu)¬_Sá©Ô‹¿>@¹°I§5,a]QŒo³6£n>þji-Ù6g<ò=Kæ§LA`¹ÕÞi,#\æ1eÄÃ	–À  %±Ö;Îó&j_×¯	ûÊTwGP) ßÁ¾Œ²ÍÚ®TX4 û^}'F¿D²+ú=6ú}¾QÙOÁ~ÛÎîú(^¼§ž…ýDÍ’—Ù$àhNšó[NÏ
·i¸«éÛÌ‘ º0vµ»BCäm<pÚ[!À–c¥ÐÖH©¸4Þ:€ôJ®Ðig#ƒ©Àj_ç°­’Àwú€¿IÅß!¹¿€b=Ö( ÄÎ
UçèŠ¿Ïˆ¿E¢Uo…ª7wBhÛº»ÂµÔO-çewWøwßÞµhA°ÎÕ- í
ÁŸ-ò·v?é•™ŽwðÚhÿhˆ×pCK)°`ÅµÂŽÑØö€açœ–Fzˆcžf˜Jpi‘BÖ{l"iè÷àµ_~›•U ¬B¢FÜ£Ëc”÷¿þ!û[ c.ÞAyF—p¦¾µòth.p.\lÞ0¢j»e˜NnTa%²h%Q‰é "b«øSx7ëˆŽ,ÛÖ×â¹‡³µ)Åñ¸-OV
†+ÚY‘™ŠKc¤:ÛxÔÎ1à5m>°¹óÉ·>’Ù/*šùý!SßjY?þ°³,\Ã„c/\ðµŠüQ4„3;[¬"«½y_±Qì,ö	Ü"¼9ýÖ\[æ„?
Ëf˜í6¿ïªhç{[kË-1&æý0+­ ƒ _k ±§x‡	Ñ
j©Ò^ÃÄ2çp¸»!N»­Ë¯¤¸X_Ë¼—sÿ’äûPÉ6î_°^T¥¤íä×Ë·ûåHÓœ­­?ÖíÛüº˜*ûÑ¶5ÁÀÉ— –6»#,#ÔZ6Vbj8ôÀR#˜°É)–zÉ¡ÈB( ÑJj/ö*§ð¾¸Ïï²_Çó Ë³ïlXá¬Ÿ»Â‹m•ŽGû¯‡b²~^ÆŸ–#¨ŠŠËã§Ÿ?²Û,û)ÖþÏgá¼ÇŠý%ÓM>Ÿ@¦JR|y8"yå˜á÷yV®B»0û(û_ÿpý»{=žÞ¼îçfh¿,fÌþgñXöMœ?hßüú·W"þ%,æßÑHŸ»­9nâggF25ŸÃÙè›pY|ÉJ×À|Z4èÇ¥Ù s·Xõ8ÜKãð›éÍDE¸VŸ‡yÞß»/™äãbDs?ÇÃSx5Ì–¥¥ÍÂj‹Ýl®èöææ§òÆÊÛî³/ãy¸¸Â·åf³ˆ–ç“b—³Q©þÇ%½ûðv¬ÃUYüê&wÓá¶9½tÐŸ¹pÆ{»XïÞÛ[€pUGüûp{sIiPAöÜÞAÙ‚ÏÁÍ&’z(·XU/~‹½ò+l`üüþÝëÒÀ¹|Ga÷»_åeG‰ì‡ÑÇþt<ŠoýåëâûÉOgðÜÝ…Î6NqÓƒÒßV¬¥Ö °çæ¬¶ÄÑŽ:XŠÉbï Ý16™Æ³]³ÊÃÚA²‘$;þÔ›Ïúƒ<aæ2¬À6 ldŸÙI	¬qIº™)¿íÛx¬*<w‘ ¬¢<t/’¼Ò¿—ÇýL#˜']Ô©šÌÆSÔ.‘Ý‚[¸2“5Ô:ŒŠ•§$È	ëœô†¦¦X9‚=VZ’p›z¨ƒž(òávÂ;mÐ¾J¿¾þ[ö³šq“½úee€_©T£q±Äõ£”y–ŸÔŠr0ûx'¬ŒGå “b€üEvçFnª
I9óÂéx‰^þööÍMù½÷åoN*Ã	ŸZ¿ñy÷	G† —L¬§ªP¦€{êŠc°m[b	€×„#G ²/-Îc¯<Z½òP%g¦®Áo£/ðÍÃ_¿{÷&Ã=‘4”êè¬òÞ¢}Ïb-‡ââdõÒiÏMQ7`JxÍÀ_q½ì"¼-Aþm2Ô‹˜ðÁÅ%õd¶ BõD}3Ÿ—"ë@ÞÂàÏ¡JÈÅHI–ø< „¥­È¾	²4\r(ÒßâCåŒªØØÁ"HŸóÁ,!dE¶Æãs¨ÔÞ¶CÙªÙÐ¡l›=l‡b&ÿ<ôü]ÜT°ÿ¤YfË¯ºÎÃ	Apù1ƒÍ9ëÍ±að‰›ž 	¥ÛV:`!¨E‚a”Vrá8ÑVE7g3.ÕyÌSÚ.¹Q@â¹³F™+:=’ÛXˆÓê´]q(µ^¨I¢"÷á¡N“¤6TAtcÁíEC¢E¦u4”0qRXtÐðdaQb,Ê%R¯¥DŽb:E´ÎÊiJ¿¦Zs³Ôº&p¤)ýÆêÂXYi/âêÂXÕêÏäM:}ˆü3ÁcÓ¾µ3L[q»Z·lè§Š L"[®¡ÈíÙ8ƒ‘”ÊH ‰·á_Ühg8U”#îqçÊ†Ñô¾,Ï±™GËz)é‡n¦zVÍÔá~Ô¿ûÁ˜Êlý %˜cü)PãòÂ×µäÊ_ÜÃH“.
¯QäÇå?KÿØ§ÒÁÕ¿9]*ìàd LéR+ñf:>8^îIÑYùöoýÔ¹0É‡ÙxRç‰/!šD»æª=¾ˆ%ÜoÇ¸…9'»ü”Ëìç­Wž´†eT¾=‰ûæ{•»S¢²Ý§îŒÉmš!ZžúxL¨"U^ÚwaÔ—bÚ?ì%¢03žºÒïR¨¥>}HsNŽ‡N«·bœz”ú‡Aç+ë± {	‡bIyÈÄCÕôGóÏÐN£º‹;i‘@r|à‘jê=ËA7œˆ¸ä )Ž“Z3¡¨`Â‰ÕÔrƒŒ”aˆEš½þ®ÐãäÐïX‡ðžH@bÈ¶ Œ¡×¡GxÑ‡¢«„pÓ,º+øX‚Ö´8Û&øH³
…0}Ý(ä’ê¾^DÊU¢1å±¶ž†iUÔàØX¦[m¨Ùc@Å¼Zi	E\kÉˆ§^)iV0JÁJˆ 	r
¡ŒvLH$”Fj_”OÑ±s­ØUù€}Ýôg_ÊÉu¼P×a$ ›å†»i¦‚`^<Š ÀF3?¿Ét ü¤¦¶·;áÍeš
PÂ[Eg1æŠu|B‡#yÖŽ^[˜rE)ë(EBÒ¥l¼„#CÅ¨ÝHÅèëßQý ä8æˆ1®«û[«Zº‹…'íÐ$š%î?xÂŽ­ œÅÏ4Öùxàf5ŸXå÷üf7?„—·>é­Ñ«qRþaQˆ®¦úÓiÑ(ÛÌ’hïÜ¨7Ÿ÷÷EaoÏzfNÀFØ¦^LJJf
‹¢ÀÙvÜ% ÙWÁj“~!ÿ“h‡ý»©š¹$Úð4zê
9›D;ŸØúU¬ŸÄÃGfƒúð©Ù 'wÓ¾ËkÏÏó³Kvvøšž¢úûs/ÆmõìØpß„{66ÝyÓ÷õðqÛ O: ‹3ju*Ã|Ôp†í“ÝFÌÿP-û…€[y‹ñBì°†&máe]tÀ{…”ôÂB—œ0ƒ¸•!K„° z*± „{¬\P:(¢ª&²±hò˜½9lÄŽO^±—Æê)ÆD?6ZHþG¿ùÕ•ýæõÃ`¥@²oÂþ´$3˜Å ÇøgÁŸå_‚¾øÙå/¢N™Ï¦s#ob8e$èÇß¸ÏÎÌË@Èû ›D«øÔÍæÓQüQ²1A³|Í¹™O§ák|¹¹ÄQC]†g¾Ž–øÅ~åaOAXà/oþRûîçï~ýåÍ‚`° 8_peÜÿZí”Ç¼ÊuíT@¸r½oÕ…†Hl©§RJÐšz*?\º\V¯<Û=ÖÆsÿÃ)wº³VÊAÓR&ÅgWQg]Y’ªWßM5Ã¥9î÷{‰&óDçxÃÎÒ[ä‡²$†?MÈk™˜²†ÝÃnjêQ{‡7²ÈŽÿp³ãËßtl	L%BÄ9/œâ
yŠI4ñq,¡qÖ2AÔB†”W^†a0cE¾{mnÁU?	Œ¶%0A´:½A2€7ØŠ×Ä	|Ø½+Œ;°U·,|p
AÿõJ§ù¯O%ŒZŸ¤0>q/Ð•¼M­º¼ÉÆà†é.g®üÞ]$;5mŸíG–fXÞ´4¦$Þaå‡š8¢	2XhŠGD:ààž)±Ôk-’Z+Å”†Þè½¥1Ý@}îQÓûÕ•ˆJqû&:¬3ÛÏUýLÝ¢JQQ3¨ô‰•Æ»øŒ³ñxP#Å«fˆâoî¦(0ÿ9q£ì]Y©­nÆ›‡óñ`ÿr[×ñp2íÇŠFc–>Ûù@Mo|ø½eY¡,V¹ýÒ›{wã,þÐg7Õ(–IÆºOy6_uš#Ø°ó€#T¦Çã™Ò—õ‡ñX”æáœ»21úwç“lž—  <aAx›}wS»‘óýÙ‹›þ*Ô-–’ZÃÝúÞ»ˆ²{5µŸb‰¤8E¬½k39é´ãQnaA›»#ß>¹ÁàöææÕjd»¿@KyöQMûãy^<V6t¶¯²o" 
ûùîŸ/²ŸûáÅÍ?¿ýk6S÷"û×»ï£¼tï¾{ÿ]í//ÂƒÅqÜìKÜøe	§°g³±òÅˆ7¹ŸM^dÅ"Äx‘|W}Ÿÿe¹ì2po`SØ~ëâp‹ LÍÜ]@]7‹f?}ÿ6{ÿîí‹ìï?èéç0¡3aQ/²w_Â»ÿÈþáfß¼È~xû*þóßamnúâ&ü8œŽÙ÷aÇaßÿó×_d¯ç“¢ž×—Ù4 @ó—°‘»Û·kÞZx!Nå_â_còjœmyód£…óßÔ(ž Ñ²ìXùÂUž÷óYöé>ýÕ™Ûÿ
¯(Œ8ŸÓ‡—†©€0ÝÍÔÃbb0ä—X­>œˆâÆñì|ŒÇOU|EË&ËÉ ˆt6<cØ;ïòxQœ½¬´U~r`]Åª?ˆ§ÿ´Ñ	«ý^¬º.8AòpÂ:#áGLbXÝ–€1.·Šp!È¸ mÁúËAø®ÿ^¸Ç{åÞ0(á¿›ÄÃZÞR/ÿÖ¤E#´Ãœ[ÏÚ=óÆý¼µ¶ÂR¤®V‰ÖjÈÆ:âPi‰µÕCvŒ@81¥ f³iÍ¯µ©ûe /Í4†Hé:7»¢¬}ôæÝŸýIÍ¯û“¢ja-Å¡Ç¨’çukœ„#ïêŠ……»ñP4`ølº~O$'ÀâX\,¾[û²¶[ž¥$µýéÿZ”*K¦zn‡*÷àê÷ñŠÔU=+¨Âuµ‡ä¡¢YÕš¿ˆÊ•åÜàå¢„eñeØ{3èG?f)ÓÚ01v£”s2oßÏ'-Øã»þ¨›þbÆÖµséá[¶¸ÆHCý…RD%ÀÈXzÞ1í…¤aA&è.Š… A­÷ˆ•õ’2Ä¸#N³}…`_GË¥ê€@‹ÕJUt¹G@åfK43õÊÔŽ~’ÿ¯Ü™ÿ-±Jæ2ž³fày^¤¢Ü5$2ßê(z
-T‡ª¦ŒC
ÖPþæHKtX(Ì;Êc9Òˆ}·Ö Ã ¬ô7Qýémöï!Ýç0ÚÍ:_ÜˆÝ".œŒÄc¿È‚þ1T_²'§}qvTÄÆaY£¨ŠÝ¬ÖU<ƒµ[#%^Õ$<Òçþ°Ä‡¿ëˆµi!&tç‰b‘×B yZØßÙmXÜ]@ðn÷ô¤kT½Ù‘”ß=­xaÒÞ,ßÊ!‘hÝn~"9=˜ô[,µ¾¡^ùõ4¬O÷XÐ±Ëpça;ƒGAÃ^TÑUžCþ ‚ªÀUß|5ƒ¥¸÷z!q©…l]ü^Ì¼K¶wn0%GhM=WÛö¥0=¶8N5(¶È†LÑH+ám¸¹€‚[l¨åc€e9¢ˆåi¡±Êrë‘BÊzÈW|DÌv²¨Žäáf×M9Q€6zL"$ÅáŠê;2êü&_·HNrH6°Ø\eóÊæv¿#Èhëûù}ÏÇ æç_j¯%p»tF“f¢èa½P Å‘æ lÐÃ¡SZ5Ô„Ç˜‚Zy«,$†é³Cà¾6Æÿš•YˆÑ°‚y÷öûŸÂõÏÆt¸ZÑµè"IŒG±»HöýÛW‹šûåø»@žgï†º?Î7†³ÆGÎŠ.¸°õEÉ†Z#˜£ŸðúÅB¸»ü¦(„òFc“RN¦ý( —®¨è~)`F–Ë:‘2.ºŸß¬ž"`ò¢DÎ>öUA/ÑâfËw_«âOÛ@ª?»Ÿë[3¾ÝÇ§ÇwóðUw%a.6º’0)²:“íBV‚‚õR£¸¨ã~H€®/­x´è*…žJì¾Ç=Fg©†rts-õa0×ÎÅÈ±E[úR÷r2P³xPz“/³ûñ¨†mÑ/ømqoÔYËí0<]jlöÅluñÄ­»…$I§ÍÏ»“”
—\oë¶Ú$Ye	6Õ&µ Œ+BPr‡‰Eˆ¬g–x©'ã<Ô B1FÒY¹º¦b”íëøÓÒ]]^?A?*#SÞU¢§6‹ÙØÙâÓ/ï¨z•²Šý›7ï¾ÿK¡ïa7¯oR˜¢äx’m•¦žÚ¼&7ŸúAëÌÔÅA6ûÕp$å*Šf6íëùBOši;Žà&„°âUu€Aÿ±ÐYã
Êèõ ,d%Ëšûæ»ïúK«7ñ$Mb¦V§ùØÏŠ€’òâªqÜ†pFVÕ–W@6/ð@áºHê?t3s»¬hEvØ«ìUXæ ¯F³›uí¥x´²gØ²Ââà—]Ð
	\lZ¸åK¹]–~º‰=D›é/…ŽÓÅÕ¯Õ¢ÝØ"&è]ÁÂ+ôãyxñEÀQŒI0ž(=ŽÆ€—ñ*DMþ²øîjT\¼•¬à R8c $ÚßðyX³]^ABÁ–ÚíS	Œ­|ÖÎ]Á¤¤MëJæºNW_®ûFê©¡eäˆã•ìH>ìùÑLÑÍ÷|Ê>Åé¨gí@Æ¢T]èÀèŸ?ŸnðE‰˜ÓM°Lg¨íŠÚnè Žb~Fû3´~`º ±â´óµ·cD
P•Ó–z£!DZ„œÔXY¯¤ÓJA5 ZÃ  ±8µviI5$û|í¥èÂ¸±]Ù“Û®Š¡°Hñ>JÝünAÇ+´³ŽQJãÀt>*„®{¨Õ“Í¬È>Ý÷Í}Ä…É ¼ÉhX_CR¥ãàñ”ØéI!¸‹,ª½Ù„I²i;'¼£|è0‚p‚#{ãx¯‹ÝFí¯`Ú4ÿu¹á}…kûƒ4„Å˜'ÂÅà§5ÅÃ~"¤w9TýA]Œ^ƒÂPÿo
QmÔàU]UÃªÚHËõ‚U.þ(vfÒª`ÕÅš®¨LÚƒ˜{_gGZ£»›ÖE®‘•F8þ”8uÚ!(rá0íIjƒm×È†i³¦M:é×:VteÀpiDyÚa˜'‘Åš)ItIçÀú$ª¾O¤›¦~pvèò:7Üá<…Ê…D—´+înê’L€sIdŸ'Å%R&]”^ò¤}ö©A[]Ú“øñ ‰îÎoË;7‹9‘tæ>§š¸?%ÚM¢œêƒý(é"XK¢ 1õìÇ°¥$Â¤© =‰tb¦I—v LÚðÿŒûI²ìC?m‘.ñYIÞÙ¤·RRZ—tÊã»zÿÒ:eê¹$ÈAÚ5U›¯²¢ÖUWy R’`¨’ÞÉÐÒDÄ2ü3G’}¿>jår”†Ó†¢Ç'‰2j2ItóQÒÅ8Ìïü02é¹O‰(vtî$º¤Ot4¾Ÿ'M›öF&*Ï?¥R¦AµIªòë
šû$ågÒ·ã¤K$íC.l–iã%}ò“´-œºÔ³&Q¦ÃÄO9OŠ¹û#‰,éíæ—Eòñ4é»LV=¢xt—ôâ"iÚ"g³/ItIø>æ½§ÐÍT?éR¨Ïb| sI‡oæò¤}ŽÖÑ$ºñ<íB¨M‹]£š§M›z°_í<YÖÌSÑÉ|”®KÍGý¤¯óSÒÉú¬¦i_ÈŸ	êLŒêçùaô–¯tuX£ ¶îàgð@œ`3ÊËÛnd‡	XI|?ŸÙ#SAw"õù"mêãEÚú§»‹a¼+[íº^Yˆ¥†¬,jŸ0ÞÈÌ§¹Ë—$b-ö®‰&P­Y¢ó¹ÏßË]˜®?ûÒÅ(]1Q>Qu6ä?ÃSm/·&æ¬øqé¿‡¥ÿÞõw“žwR¹ãC†ÅÆ(§ÛªâÉ;4/WN¡è§hÆ±Œ¥>œ_þë¶'u|I§ú=*œ“éØ¤Qeî÷¡Ëc.QCÓÇ/¼A¿[å†ãÑžðR·Ó¿/ö¨>û}õFtˆ
ëméa>F(a¥ûôñ„ÄCÀ€dBG¶rF*¥ "†cC!äj ±äÔ1.¹„Y‚tRB‹¼äWösa£Ôà8ÂØVDÂYOþ¢à.ìk”ÜÚ ‡Ø¸­ûØnOÙ‹ý8ñnW/öÕ‹}ðêÅ®¢ºz±+©®^ì=„W/ö^º«û0åÕ‹}€ðêÅ®%¾z±«è®^ìZº«»šðêÅ®£ºz±+É®^ì½„W/öÝÕ‹½‡2\½ØiÄW/vc/6#Çõb×·Ï‹]Ïµôb×Sðb/ë7Õ‹Í’jo–ÿ|^ìÂQquc?‚{ég>Ž#ûóçs'båÊ@j=ÄŸ+f8Õ
Æ½×F«Ãï)Pœ{@˜Y®ö¬Î‹ýÛoÇrbïŒTú®ãa^óVgúËÍC÷ÅÃÎlUéÎŽåi6×Ñk9[5NrÙ«o¿.ô»©F/÷CÓÃ,<E¾¾ Åj\6êb±žv«GXõqÌ—õU—c½YµÄ)ëÊ,w(z…ŠÕ¬žëIùÓqjJ8ÂýÅfP£lðÏŸ¯Éà­üè6í‹³Üïcç‚‡!OæDÿüùtEPÎž¡ØÌšo¿m/xœÌõ½½\¶ ÉâƒLÄ[0l˜cKÞÓGa-õÀæŒáPS†Ú`cˆX¬”²†
¦±Sˆ­½–RQé½Qx_}ó«ì½ÊÞC²—¤Æ²!L¶z‹Mö^£ØIßµÞŠ?zÛS¿g`Û¿É†Žã„Ü5¿,§¿‹RnçÖ~1'JÇ¤A20Z`€5s@%²V;c¹‘Ê*f‘2ÒY'!ÅuÚïëò‰Ž$…—£½[¯#£¨}TVv]T'-+–]XeJË6°“p¢+ª¥5Kâ´Ÿb¥Ò
¶Gydï¯TJXB7ÕíSzU [‰0*e‹@ìåžY‰\{TIÐtrß7ù±¼÷T²w±#§-ÓyþZh« >Ó3*ÜÖ)~¯@;è§ùAéð@Ìƒš}HÐ¿
ZPŸ:ZJº¢ýÐ›ô?ë¹G‰ÉIt³)da´Ÿ^ýFøîmÝo&ºÏ³DJŸJØO¤›Æ²æÓDâÔÉgy"å&î®7›OuÊY
ô“Ñ]2!D‡šºÏÃAÊñº\EWáoÿ+)?vt—òôG´xÕ¾ð\çƒˆdl_yªÏö®·ÑºRˆ?ë|<p³ú¦Ëe/%Îj•oÞ7¼°·¦Û«R¬ãªd;à:Ó9t‘ÓÛ…4Æjfœ¤ÌXË„EAÕ(^(¯<ãHÍ¼“Î3Æ„³À1¢sîª<–6B“ÍiŒ¢ýæ4^d'mäjRk¤4íh´¾ëÇ6«^!9öŠŸ‡Frþ¼ÖËÑHêM’I=Ý†Fr ôlK#9¨–D·ÔHêÉÖ4’ƒ„ä ÝR#9L¸ÔHSúTÂ~"ÝšFr˜8uò¥FrrK#9H¿ÔHRIJÖuÕ¤~è-Õ$•ø_IAKÕälÞ€6ªÉñ¦zVªIºädºÉª#Í¹=%ž
Ž ” (-©ÐÚ9±æAQr‰ÕR2â$78™0<(3)­5ºÉ›å3I;Ù7^¾®™Ä€EÂÍjS—Ul¦àGÅàÙè',Ù[B	Ùµp½p†¤¿dµ±WI+…0²²¶¥k(»~dÄÃÀGEü7|ó¦Èþë__Åp¾ÐDñxÂ]«¡Ùs÷'øn[ìô÷ýk¸;k±RA÷êÇŸÓüüÝ?Tžÿõ¯?½ûî é£‡i>Ïb[ð0â[õÁÅÿMòüM…ëì0U¿8QN½:M"}4‚$ýÑ80;?Ý$~øÂ‘iFøm0Æ-Œ%&2ü<¶‹íIØò‚øzï~K#ýy ú£„qß…E«é_ÿÏÀaâ/aGÂãÃ»þÞåáý]MG.?¼y%õ»":0øs$Ž²Ü}>LxXHÿ×„—ÿÛÛ7ñsÖáÏKîÝ É¦ýM¶ó èÓ›÷¡rN1íWÐAŽµÔ` ³@RàE„TYë¬ö^:íµ&hðšW\!ôcBhžlâ§d«úã6„n3[	¡¯fþF ´0ó?ìû±Íæ_5Š~<kûE_Qt*õE_Qôi­òPtºú„0zÙ¾üÜfhFõTè@Ü› ¶ UD(N¸pe9Q ¹Ò)á&0ã ÂÞÖ`èŸt$½.O	’¹‰€ù™ÉT èýùÞbÎLÐËƒzµ@·K;C …zµéG6@¯Æ=UÄÉr‚ÓüØQðãq8ë}ÓK,}V['Ê„Ï¾(÷óˆ–§iS×ñÎ+>™ëxãêI¶}mpEfŸÞò%)õ{%BžÈ³ªœÐŽs‚4±ÔpÉ4TJO`ØK¡u¹@¾JíÇ“Ú¢A¦8ßŸh¤¶è&µ¯F¯&r²F¯Õ¶Ûæõ\÷#‹^‚à>¦²ûTwºº}:É½¥wnµ1Ä<‚˜*ôk«ƒdÆHBVV©™£ÐzÇ51Ê h5òPbSKY#Àß®*+óR¼zÌ*‰~S‘¬òÜ%ºLÖÃcûõpÒÄµs‚¯úx+¹½YÍåúîîY1ßàT‚~g¦O×l/úÕ Œ,?Ü<õ´²åôê¡r©0˜"ïµóš;*´Àžb£ v±¡"30(‡+!Ai*˜ÇPº«t¹éB@²¾@Å9¤ËUol$_ÐQäË±È¯@Àœ]·Ü0µuÍ!`–uÛÏ­º #+NS‚-‘Z[B•RÌA¡òŠJ¢1¤ZAdµ¢‚…%U°®Ä×»Å#O´Tx,{K+µ…4°CnÝ«ÒÒR¨´©]¹½÷§QYVÃŸXž,ç9ù£¬„Ó™Ròh”ççQgöI›Ó+3ˆÓXQÒAƒ™"Î``Àž;#CØƒ —ÖIç¼ðÒy,òÀ"ÅI©ì*oÎ)oà‘™#É›«ÓHâÀ#Hœ)1ÏSäœ]}Y‰œÝ©ònTG9C7šï¤-}?‡„D·à-¶%ü£™œqV0Di/Ú3oŒDÐÉ¬4
æ§ŽYa°ÓØ"Ã‰0)ÁŒÐz_ó€WáÎîßÍ§åM+õ‡«Twc¾*œo—ÕÄÊ§ß/{úùòšŒÂ`¦ÂYðÛÛ7‹!iR2ÍêËx^öøñÿ|ûC±’ÿ~ýCÙ< ’Ý.±1N¥ßH^ÇîÐùÍØgÿ+[Þ¸™c½þxc¯&<}õþòÀÜAZ/v¶J‰I	«;á×’lÖc×„¦Æ]ÛÐ+Ïd¯<·åIN:ßAæänšý´ìáðrQg.?$T\%#ÝdPÕówDXÐ¦þS|€ß¬/ªöbÝ{‰Ô]âÅ°-GíÌ°h ¡bµ.Œa³ÕìÞhùnuŸíÝËÅ­t¨±ÝŠôåzÇ‘°5Ó;·¯ý^5ÏmüÑA;6óØG¤D¦•,5k[æÝÔŒÛ»ÄDîIøRŸr/í!Ã÷ÎO@³	±‡©f¡KÆÔÖO´C?ÐÞ}x¢DúBkÙ÷4­ACøa¯üÌÛ#¼ü6–ER¥ö
E˜F
©À8èµÆBcuLŸ`	(áš@o1²ÎîÓNr©;fá	3³$
)½*$p:)1o{ï‚\RávûOÀ	…þ–²’‘ëo®RˆKŠ$Ar]w,„x¥TÀÍ É(Á£ùò!r’P*eøÃú‚Ã=ø(Büul¶4žÄ»îå»â:$¿'ÃÈÀõ ì ¿+Ÿ½« '”£†”;Ë©—³rå°‹»¨Ó°íE÷7j4¡œõ}vgj35Ù­U}£øôVòñËJ£Kk¥}7MìLï’†;ÔK;ÆNnÀ« ±Ÿþ\½ÌØy™à–Ô0•§—ÇS1Tf:®›æîÞ¤RŽ	Ãm4¤ÒNÜHTžH3SI‹”íFÄ¸—DüÇŒ&o×šwHn!¬­œ?T–6ÕŸÀ{#kãîðÙþ/:|Åu‘´[wÆÆx­ÏÂZÎ½ò=´@ î'j‡¤w¾'`…Ãß©‚RåƒàUÒŒ’Il¹0L	GBi„¨R¶/‡ôWg³¿«YönÑeðÝØÏ>E;ùš<ÌÞÝ¿´±™4ÿöfImÂ¹0gF²y^ZGÊ¦…_¢åÞ©¼?øR4N¼‹6òøûþ4»wƒIaç¹ÉÇƒy¡æ¼È~zèüT•çS÷"€ù6ûÔŸÝ—íüïÇnc3ý%þbµœW‹åd?‡GPƒÛ››÷kËÙäZÛˆ~4ådJ‡‰•)ðÏ@}qÓÒê“Çôñh§ÎoŠö%Eþ°ª}“gEâù—ÌL]|ð0CÃ‚¶“ýMäüîçŸâZ[¦%gbÇò°^5gxÚÿ³„daÞA_ÂVÂÕvßÄaÆ:"Ê¸ãËE^àÍÍ»ðÏe_Ê‡[|Jk{'éÌ`nÃkÑóÒG3ÏÂîû³ÂMóâ&¬¸Ì#Èl_Ý¤
]½µ¸¯ã»j¿È>ŒÆŸ$Û_4»Ì]IGw/n–4Müy±{aM/25›)s¿4È³u²0ÞÇ¾û´l¢9›Çv›7[q÷f‹n›‘:NVœ°“Â~5éß*ßéa#à2(E|½žfø—d˜“J|0tà„Ãë_‚EbRóîÚ+/ÃÆhÿ»wo2t þÅÙÿ(¾‡DÜÿfÙ5ÙtG:@ÿC{ÒÙŸ»ñ¶ÒvWVÛ÷IµNF·ˆTÃôî³3/'5‹ça¹–Üªza“f¥'ØTß(Ý¯µSâ[v•%à6–uéàó0…lõ©Õ3´|ó³ñxp”ÓÐ?DæŽ  YåJpN)”ˆs5ƒœ¨‘¡^cÀ
+´5 Î•6ìó½Sø¢We<R³¸9ãu¿”bù\—îœéJ²ïÄ™o³Øç¹òWË~ÏùjeQjÙÝõýï¼j…åÈ¹»Y	ÃC²tß<7+¹Ù+åæ~*äåPÂ³Æ[òE¶ÇýA¯Vp™¢o‹>ö„E(èf!<H„Öë¢pB$k&úâ'µ¼à›ú©.Kè±#½ÝÝèìµâ;ãT¬)YÐË»ÔNÐ=yñ5Tw}sØåWƒD*mNëHä îÿ¬ìa•Ò¯“Ç¤ßºT+½·xuÈÊø¶ßã.€oƒÈû6èøŽq§Ò¥*°Æ0o´"Ô ï#Òh¤QÄR­3IR ;Â)¤Aî:…aŠú}©Jße“øù,j>Ü—ÞG5˜»"ô"Êýâó×¸?KõØ~Œº«] ¨“Sw›ý4‹$c†Ï
Þ"jO¾b’›•FŸ•¼ TG58ŒT’98ž°Ù½Êï£ˆŠ]‰Â¹›Ñ7y©”ÆõõÿŽçût–D]P6ÇáI±…ã"þ"/ß|1Ö‡€'&“p	ºvXàbÂÿ
š}Ð3ã-»ÔÂËKRÅZþ+›Ìóû[\Öå:æe97+¹3¥²:­\ú~áäü¯, ›»ÒÛ·FP(ê÷ý»°ØÙM¸5?ÄßS?<nxÚŸFßF³DXBpA4dý°/ãù,šŠ‡
O_|a¶YùöbPâÂZ¡Fa•½0ë8|¾ñÅÄ³×n¹%aÅ_Â}^"˜xÿYìðâü„ù2FrÓF˜'ËGYŒ×&ý…Å…9Æñ-Oòé>|¤/âÆÕK¸qQ£û8,ânŠ­ß…g-—®ùJÍØgÚÿØWƒðÑG—é| N8ÑÓ^>Pc¸èÊcþ¢|Ú¸‚h´õtþÅÆúþ4ü(ÿ22÷Óñha])±RoêÂI•ï0îÆ(<QÆÝÄõ…Å„ÍÝ‡õý3îAæŠ‡zæ²÷áíåÊ‹ìç¹~ùn®_doæáU–U49üw<öå¹Y!¾€…â“n)£6ý“K'qÜ¤¡úà/W»ûøðñhß¨¬è÷µö]Ä÷XÒùéx˜ƒÈÆ¦»©a³e•ãNŸ4F©¸ioûã}èOb XNB@‰¬D’„{Pn ?Œ9ˆ®—BÆœÃÃG?ï—y¯öo#ûý»×Å;|ûÓûóGÊ¶õr&îBgk6ƒz>²ásß/–Yç\’þÇÃ¹›Q£Q‚lÐ¹Ñ¸Ÿ×]Ï‹´·¤Uþôµ-òVÁZýú(­†Pdë×mm’oJÞü÷ˆŠS¢{ëb¹Êi¼üŽ‘hêÓ‡#¹±´UPl¯È^è•;ûÚ¡¤¾vU|?¾ùéûW¿£[œÖÏÒ§{ ^N‚niã0ò±ÄYÄ'™Ì‚øP¶I_À–å„u`n·ÚÕ[»Mœ{:‹Œ0ñ1—ÔÐÈx´ÖºO|6°ßüøýþ÷ïÞý½n° RÙñ§EGÀÃ_MóbPÖn€Ù:RbûñUe^nÅ­}¹PL+KQÊŠÜF!QGYM°$¹xÄÅŸÛ“,Œ†·ûB&¹_p·ÃŠZ-$mþ#CX½*Û}ÐŠ?¤,tîž³¤œZ}˜rÐ?H³ÜßÂ¨tw6”ôl´F^¹DqGZ­á@8¡5¶ÖKŠ<´Ð Â'˜Ój	 Öƒ%‹¼í¾–7ë%˜-\¥&µÈc´4ûÍ'_0ÇÓ½JgŒCX¼ÐÀÆÊ*=pƒçQ'Ÿ©ÀeßþFhwaù~Y°-rL¯gl–Òãër¥êrˆ7U9@%Ûèi“TÞsyB¯ÊÜÙ”9(¤h¨Ì­½¨³håT'ÑöNCPúæÄÚHë[|lÚzŒOp‡sl©T‡»h$$pDQJHâ(•œC§°±é/FB€ÅPA$°%ûîð;óáú.-uEEçhÖ,[µí»¿ßªÑ\JªÒ–»¸–·®ä8|îK¦âÇM²~1Ý<w/n”öGý\öõø >.àªÞ1»=ñF„…_Ó­„Â Úpº‰`JJAy“î©tì«W½ïÿoïÝwg½ª;gžéº¦,f€¶¹®Ç§¾Í²ÔÈâM;Ue•^°9M÷èâAøfÛU–‚ag _z:Iã „­#J+bRå|€°
¸âqâå®OÂßcCk¬•–Šö…¿þ[öÝC‚aö·ix°è&ªuŠlç¼ð~-Â{cxì*.F.¬Þ Þle0iL²-¯Þ×»ùæWWØ€mWã>Lý—¬èÒ/Äp½ö‹"eLk¯€	@øö¦ô4çKM‹‹tåZºÙfq¶—1|¢¦Añ‰ÞÃÙx^îÍÐ™{.âay™Ž+'˜{íÃóôïF°¾ž‹y³¸¸cÄól¼|ø8å*µ„äýM¾èýäƒðçÍbG²Í¡Üçð·~¡s¬wgaÁ£ñ`|÷å¤B"¾Oë‹l´ÚäqºU#+H†*åD¸þ·»TR
ˆX”²$)ßI¯üŒzå”\ëMQ«äÛèuLÌ¹ º%Ý½n‰lÜ«²<Ñ~xÀúgýï‹ïì÷üAæS=NŽOXkõßwuÖ˜RŸªfà6ÿ<Ú[v™=wØf¿ÉPo×àú}0×f%?ðBÕ$¼N”òêUþ‡*†¬ó¥E—Xq.ð¡!“Í½»6×º",‹’šßÇþt6‡=¯ÁG)©ÀÊ2g}8f¦ÞvW¬#¼üùän>íŽ¼*“j½ë„cŒ;.­Ò.àÍ©%ÒPm¡á,c¨Ú`)0 Aâ5³
8±·hÙÇ\qL+wp…Õ8†K*7ókh¢1ÆÞÇ¤Û ¯HfÉ4n@ô€dRšU&…÷¤ØæP¨ÄÓÅ6ãÒ¨Wh'õ¥¯Ážd–þIäXBIª="‚$Éýu#£ú<º{­f*þº­mWUùºß‚o	%ß2n1Š¤'ì0Z*g¥ãFY‰-CÂQc„"Ð ç<wJA4qÊÅP"à™CIý>àôÃ›ï~Ëþñc¶|æˆJj@Ó’¼@M“¹Ä¬ÞÉ…÷¸H±]ƒ#jdúƒADWù"‘ü&îs™ÜT€‚˜ßT„…±¶eòj¦edjYbo–ß¬PÕ¢&ÖIó–îp™ë˜¬ôò?ê£êåa‡ªˆ+éÏú…8/ŽLL·(ö¯ÉöÖìa1A7jö0(­.¼÷ÿ³÷fknYºè}>?ß´Ü©˜ßÉ–Ê¥nÉÖ–T{»ÏM~1f²Ä©8HÊºÚïpÞð<É‰ @d@€C&S¦]e‰dLˆ¬õ¯	 ·<[!Àåœ¯¡„ò—º›ßÎní½l¡eÿåã«'@öØˆƒÍ¢ÜŸ¿Œž…×+î^±ìŸ·–_Ëû
TÍÒæøy2þ|øDÛ£ýI&8Âcl˜0V2õ?Že4)ÞÀ›Ív…YÁ®‹*‹ÃTgÖÍ²*d>SÇVžÍ÷³›€žXmgËÐd!…ö#ª êAÍ­GC1Ñ’ø¢ÆÐ Æq ³ˆ§¹ö ÚH-1×Uå—+}A&L¯ã~_üäƒ ëÔ€äå@_UID_vÄ5ë/ã|²iÊcç¥Í@õ‡EjôŠ%üÐë¼\-§hÞ™ÝŽÛÉÂD*RÙN]‘O=påáxî
ÅìyÔ1·¡›ßŽmœ•åÑ1"(²£ÎxÔË¢¤‡êŸã,¹{àÝËµ]Ùñè?æaÕóEh|×Q6fCÌ9~xîmeŠ<ºý,OeçM`sá&?/tËÕ*z5÷GóÎb–u«²(´è•=AîŸ‹Y‘ž%ß¬,li<œ¨"þ,G"YôWLÐºf¡ßwaéw+5Ç³?ß½í~xÿëóìX—Z~\FµeëþÜ¸Æ¯&¿š—O1¢¢yxq&ó">¬úä9oFã¡Ëù`¶ƒ±{™æÁn«'o%	Ýiz Ð7!ãülÞÍ^à"b¸½æÉ8Ym=åÁ !œ×J|<EQ›ºoó °¦ôˆÍë£¬w’èÊ±RL3•cž©òâ¦?îÆ\ÆÍ›#£›
ãÄÖ¹bërD@ƒ’"¼2aÐ,ä£n»–M3j”ØáÛp€LU«fÏÞ¾ù%ÐiM<=T »ºÑÞ~½jëÍTôbõsÈ¾ut–j: ŸEþƒ QžCŽ´²0©^h£˜1E°Ç1þÝ ,2GFÐ\•5è‚Ï.øìIâ3¾]’a•eŸ¡Í¼‰Ïˆ eOù ØjŽxÞB.míPa„&ÛþÙBh©6…P-ÍôtÌÖ`rzÊ˜-ñ86À[jŸ-—ÚmÎídšh…*¼6}6‘^bÏ5PjÛ~ûíÝ;BÀ:'ÍVÂ“ZùŒ|ûÁÃ€tî9L5ˆáXã…„Ç &¬àœiË)4žSøŸ3È'˜æZ¡¤”†s¼„D®¦Ò $BëªI+÷ÜÍ§ 9ÿ§Œê¢!ê¿ÔµáS#¯®â(¯Ãö­ÓªÎý2žeÙ‹ód½~G~¹†µÆÉW{ÛXÎÇòr–?Ü[Ö©NøypwU¤ÚŒiC·ˆ}òàÁ›ÚÒ÷_/ÿì~ø¸Y¨ñÄ1*ù=ëýS‡Ý©sßÉLi›€)û
@ºÛ}BŽß„LHBLx3!IHBš˜|•ÝüZwk/ôÑ3žW¸J›8sI*Û›ÒÂ³÷i¹Üe¿i¬Q4l¶åO×û[¤Ëô•M&©³®v+&(ë.×ðx3?üƒ›A?4„)þQÿ¨Ål<BsÎ÷fŒø¦ëáK3?ÊƒOës4dÆnàjô°ÇŸv9~ó˜é ²v¢MÊ˜Ò!',I-ÇÓÚœ6•/mZ§ÒeP‡‚º¨‘‡‚Š‹R|–É1ˆN½b;zqû~.>tcu¨Âñ«N.J-~8Â0YöÔþÈî7Tþ
-ÇÊßåÆ¿®‰gó°³Å¨Ëø9»Ò'ôÆR”ýñÏë¿6uŠä î­ëEØ¾.Øþsö±`ñÉc„÷.ÀìŸó?²ü47ïªI?eŒœ,Æ77ýÑÍÏÙ§nñéÀîmnZÓPÑ‡5¼NãÆ“\|/¾Eßzë…Ã–V÷éöÐul¿×è_UŸ|$ÄÆ!'Ÿû«ã"=ûUçäÞî²Ý8«é¸Ÿò!–Ã*T’ ¥yÊ3$-ôœ`¦°¶”Jfç†¢l6ðžA¨¿ {lFQ9ì™W*†n%ìU@Q^îz1Êåòü‘KÉûkjYŽƒ »òš}9šõ£,ŸmV&Þ9„6´Y¦ãLæI”£çm‘z3Éìf´S¶˜,SÆb0ïOBçb¯3kÍ²HÂëØg2íÏ\çmLø`ž¹yZÂò]©P0 È@¬ÕùW+eþ–Ú€BÂÁfékŒp*;áÊYÖ&¨ÔlßçÓÍ¯d»Ê™_ðOË,DÙŸí{`Íº}8<	$¤mEí5Õì &8RÒRq wÿ9t³‰š×W¹Ž_%Ä}Ü;½Ñ7™ºXE«!d	Õk"@öa£<—Þ¾î(Ú¬–bÜ#ÂšBþh½ÚðtÎ¼`^8rPgÇŠ%a\3&7D €£€2Á¬Å„I¦•·DaQUý8~™+¦ÿþ{§È.^ÍV{Ó™N•À«z6jî1ò(†~Œñ_Õàó2%ÿ|Ü‰EN3â¯Übî®bàCÜ»œöÁ¨ûl¹¼BY¾þ¢B7Ì)åPÐr˜Ç)v;;"ŠÑ–1ñS:k.³Üên~Ÿºõ7©…ý‘Ììûéƒã.d@Vc–¸Ç€bÑÖ]ru^µžümICýT)ô=¦ÜŸõØ‘ïN‹€ìº«wª®VK4»Ö¹
®êœ=ðæ–nÜIö¶²Mæj–p]p "·žã¬¸ÖyD¡Äh.9·€H´–Ê{â•ÆZ"
IÃ•D;ëŒÑPWq³eQµ¢E.³–¥­–™újøUmr‡­~¿f››p›­-­SGw¾Á`ü5«rUHdáË©3.p„U cg1‰e–Š¢õ‹={~ÉSùe 1`‹a¢p7€Ø@ ¦hLa›íÆ…{‘{b‰˜hÇ=—Õ(¶|lÎöðô>aÆ³ãâ-jC,£æo&uŽqQ·'Î¯n C*xØÓ
$¡ÁZg§$×£ñh24ŠÅ	™(Ãƒ~îß®:1˜FÏµíjwf¹Ô ¨KÕt£qèåÖ…S„±¿©JöPÊ2W¬¥ûy¬FuC‚°ó<aÄÅE–Z¿:PCïÃìæåÐ¶^)ÁzdwíÁ­3¯(ÎP¬6©‚AN4#ËkÙüE†Eœí®þƒº¿ÈÊ¬r‡•ã™¶£ä$áW5™Õo(u¨ÚæMí,ñÛn¬èv0_Ì¢E¸?òãýSd“Y–¶$÷	øIaË°_ÖÀJ‚âLcA ñcÃ÷Ì)A´šÂ È!˜Â^—DY¢„ (©ÐRS•6š$rxdž×=œ-µM]7ŠVÛÆ‚ƒ£ºÀ™—ñ’ä£aQ¯n5~V^Ð/gùìî^ä'ª?Íz]©ÑÆŒ9þ~Zø™ÄJî¢²Ê§[i=Ååê NÒ8­/i7¿mÝÚ{ÖÒÎð¤€sÛ­8<±€-½·ÖYŸF»í8@îg]Ø©=jÂ„Ç)Ù{Xp¢–fÉ6HúaÜ!«:zV:†S°Ðzg°åÒ9È„8H82\îœÅŒ9 Ôá;¡Æ¼šP¨J‹CaÎÓ/MÝM´ÇœN‘B¿X[r–^oŠÈKµ®|à7t/«„JQÍbÖ“vÖÊ—ÅÌ]Õ«Xòj©™žf¹Îeÿ¼ÆjšýãÜ9K×Ô mÝ%NC$(×Ee‚¥¨h²“»èfÁ²A1{ëf²c{ ¥L6×Nuvj˜²Îã7ãÁ•a³ºÚ‡FOÃÈ®N{˜%pî(NÔ0V@¼]/)z•¸èÌ"F¸GÙ6ºôÔd2kêXÂMÍV"fL·\]goÖr¸Ðìúó®âŽ«FkË½™@.yÜæYá‚”ó^bC—H`ƒ«8$1i—C$H½DÍ¤ˆIÏ—4Nh  €Uü^v~ûÇ›íÜÝÈåCvT¹Û[~É·®É÷Û§ÿþ©Ìä¶oÔvžð%”)à«åÅÈ>—àD¤‚A)Ø'˜Q,7<ëž© e|)Smë€Q
R}Vçe\nW¦¬½0øçùxRF½y3äžFi.~ÌBã{×á ÐãuVŠGÀS÷¦|È{óðVÍSìêq<ÿwÚ¾QÃsp\5<dN;­´e”ê„Ò0/9g$ÀÏ‚S@—
z1LHÇƒ8‡pØ±ªlÜÈäoìÁ*Ò2™=ûïã˜[)CÉ¬–›¾/&@õ%$ú\³š>|Þ½€«eR§š…tž©Þçžêu^‡àÇ³Ç,r[u+Ò Lé»áù‚Ø¦ßÍY1w_ðn~SŸ°
ÿÐÈ€{Û’´#kò1e|o%ËŽƒl(-ÜŽU’ï:÷€£Ìû .)Íˆd%›éxT§|(³ïÚœJÍE\k®ºØZJ/þR¡Å÷Ø¾ˆùövö,˜`‚¹¼?Œuß¿Ij=›/lÜýüeØ©ñbe†JÚ¦ï77ªïÛàtŸ>/Ôb~¨-'Û¦}‘=ˆ–÷&|8
¸k	”Ök„(a8o(&V{%Ô ‡µöR	©½ˆyË9Ða¨¹£UYË×Àâ×P¿Â3öíÒûµD¸N,]Vò”Á/F¹;Hgäœu¶£ï¢ûl'ßÜî.Ùçù‡Œ û8 ¢2n†ŒËƒ­cF„h.–oÐòuë/ÐYsþƒTm6á`U²½Ù¾ì/·“}´&Ã^—,1æësY˜lÿ<Ýó,ÆË²r„;+ºmµå’[†2¡7·ÞX&…Èj™
b"¢’K$Bœƒ2ŠŽ¡™¬¯§Û/›¢ ?e–‚ Wl}n!_Œ¶"¾‹=í¬ý¾ôU^Šéï¿‡ÉÔlD½¯NÏ
ÍôwH§õˆlUa‚ •è‹æàïò½½Pü¥øQº¯xW:µ©nŠXÉk–SžÏÙd'[àC³ßJ®Úc¹Öº±s…Çô¦§Ú’NDEÝt|¨Í7ž×Ò?ë¬¦³ÈÅ!Ô”Éy%F‚zÅ•4^kÈ™u†1‘ÑÄ)NI`©ÈÀÂdz/†Yã·SÒs7å‘+r—e
s†ëš/Â•YU*Œì±<ÑÕ»Uî–§â»Œ“™aøa3‹*b \Ã”Xùõ•¼ðÂ‡•~$kYp“&dð<2+,òì-'<ÑúÎ”n<t/þPÏÊÊ¼ç`&VÎ‰uVŒL
Ê4" êëœ €*5u@92…;S\Z“šk‰RÇ¥Ä˜JÞ’‘•øËÞ<m1[²‰c•ÜŒ6¤Âïˆq 6&¸œä… ”(Å­¯á…y=0ó1¯õÁ=$[Ïz¾Lì„k<oF–?ø4‘“­deƒ¾Þ»²|Oô–9â8Ž·4MÆUÂQD0¶Ä+	•‚Ú{«<B~F¤ô2"¹wA6€[*UhXÁ»Þgl+K—Öœ¦ õµN·¡^¾ÂläºÌ¯ï*ÁeÆÌôÝÖøÏŠª+V²Ì<Î«.gÏâv8ÔÂ,Æb,lÔ¶h¬k‘mwæ2Êºµ·ë¬ùÙÁN(©›p°ß	mƒ{Š¸ÇŸ½âH<¤6s/"9YÌn÷GùÀ%ó`Grù‹e† â.àL‡¤‡šzÂ…öÚS§5³L
=°?ÒOÉ´`D?n´U.ÅÛ×YLãx[vÐÉ¶–Y4@-íŒ[XŒ»öýËïäl©ÓªŸå*9˜E¹aÜY½"%7ÿ«u¸ÿÌ…ÖjP”s,Z]­ÁEg<q¹`1‹gã¾¨ð]ðõœƒñ5KV\Ð¤NL²¥¾¨þ ¦¸š¬G={²}ß§P‚dcé–O!dåt CŒš‰w<ïnq÷»µ·þ¬é·R·ö¦vÚ“î[pxÒIÂá¾ÒH\gƒÒ’„U±‹8Ó‘':
Ç8ÙºÒñ\ÂÔÔ£þœU·˜Ñ0^¢ƒ‚™Ý7/¦BÂtW”ýC³O™çÎìP€{!-#A,ÚJÑ’&6·s+¬â¢¾Q™õ¯…7Â*7¬‹¸‹nK†ô,ÍbçåMä!™ûytüÛ#îwÙˆYî€uŸ«ßÝ<+ã·da‘UY7wÓaÌ^SO^ñ™è¹VÔhÎs:ÆêÉW1ýã2áMž\`ºˆ1£»§’™¡ûÒÃî’Âm‡ãA@8)Ûv ”Ó43¢™íæ³ûÄcðö• R7à`$(oY…xÍƒf¶µ#-Uhff–”`»ö³‡¼¹ýœ\ÿxÝ¶!Þl#AóÎø<Ð«-
Z¤6·Û„µ/[6¶ˆ%¾¤˜7¯nv¿Œ.¤Íut;{åú« #³]™ðÊ¹ÊöA³a÷f¾w•ØC¼Ø®ŽŽ—@£ñR@,„TM©ˆŽÂÒX¬—°h3†jË<PÈë‘s"0!Z(²Àû¯}{ãækàl¡Wìx©¯íÞ,ú÷Ž±}5¸.Ò7µ–‹‰â ©3^e…yÿþñÝæ´…Ò2“—_ŽTÞª“ÕýúõkÏ„µÜ¤?*ÐCMi] Æh˜uœð`·Ú‘(ÄVýK,o”PˆÆ›æÊºÅ-í×­›]´‡Ç	ó Æ×£/ýéx5/~Q3w:KÚÎ;´¹	‡c@QË<ÏËó¨¯ˆSAjGLáÖ5#ïÏ–}xŸ…×!ìÔÈ«Äõ<c:ûrƒVOò@©ïnÆ:¾ÁM{Ü™pê8£‰
·ÏÎMÜ4…‘–›7çÿÉ.ÍQÂáéã{µÍ¿úL°”úó¤‡VJñV¼‹a0'€2H{TÒh¤áÄ-78ü† p’ææ”â°©ä]ïÑ›¾äÈñrç¢¦¬Ár2›X^¥ífšI«ÃlÀ’ªµ”8#ÚŠm& OÆ_ÝÔ/W¿}œO]ØÍ â:ÛWë²óYÑø[Ín£ÅP‡c¿r{|f5ƒ…Í3ÚtbÒ 8_…“/Ö §ã¯á<’wFþ‹Ô¯³ñ4¦~}RÂu»Ä9–RP1€°“ß‡R„y ±7·Õ
ŸwÞDÏ•‘›w>¨Ø¡hù¼3¨»˜UvYñnêzWWûä¾Í]Qo9®êä‰+Ä=ókÿs¿—%’È¸îË˜™êÃú>ïÞ\rKÂ;1"vëiÌ!Ûß©ŸÀBF+£]r±ºnöât³W¦_µdüSžÔÈ}3n’ëûãñüö·WoŸŒ¿k7ùQØ¶ØÂ~™r–«·îKØê”l9;û§tœ0îtÜ·A†jhßv“Ø.ò^Ûicsc»SgÆS›ÐÖ*5in¤³nF»EÚ­¦~8„©±Ý¹ißt#ÝJöfÚ4ÚŸŒ›÷´Ÿ¶Àáð³»›57‹…>›[Í'Ålj9Ïc.‘Üë°©qÆÂV¾;M­×/C¬lå|XW>`£G>œu£Ú8S÷ùŽgœ©ádÐðÌCÅJ?®}§WÖ/dxMc½éf_Û3°“ÛLê›>+½Ù/Æ7õ•‘+º}ë¶éßÞÃI-(ÞÕÁµœâËxªûõå™ïõùÖ¼¾VòŽ>ýú’Ö;zÜºË·ïÒvÏò>u´í6ÃÃÖ]ÌdÐúxfóÖóìwò^?µ¾Øßºß’Wø-‹áŠ
„¬o×X«öí›³ŒôÞ1’wèºÅ/");¨smïª—pwÊaõf6F¢ówý©9þ¨‹É¨6«Zå¨û+5nf…œ5ëÞŒÇuzô¨Ü¸·±;Œ ¸Ym±›/~ÖUÞÔ3Ä?!Ìôë¨/ÓüØ²Aëih§ã¢áŒ¥7 DÕÍÝIl_—zpÙ>¡ªÉìVÅ|®)Û‰z²·®Ñ8d=@Â"nìç.NØµÐîzÒÿ¦¾‹’¶ù&PÔ–Óð¨³þ|<½[žaÃ‘Üä~–I£ç:óÔÖù)§¶Î±s44‹@¼zIû¿Œb§]æÐ<*hÒ[/Ýå2qbŸ‰ÎJº¥wÈ	Jzû¹ºIm<¿ƒÛÔó™'^îE4WðÏYÀòÙýKk?L ^ÃM"h˜·šÃ¦æó(´öHG&DÝ%Üæ‰Ý¤^Ï¬mN?;8•zÏ²¦7Éd?kžûÉõiÖL¬¾c~åR¦(µL>Ì™3S7Oa  ëPÄj¬.LXëlœUå 	Ävnu‹VÏ>½úåöš¯å|<wÃ€9&j:Ë$ñÆÇÛÕãYØæO|zýîúýÛë÷/?||ýáúÝ›ßß„%4í|‚Q‡\5‹Sýùî-ºŽÛ†“G/ucékÚèU+ÚUö¢{õ½þÝtrÕW.päµªŽa˜Z¶ªÏu&;–ÜwÛàõîñ«±Ž"æµVÏÂŽú‘GÚŒš?ÓÖÜóY]YjüZW
±#„fWXæR=K±ÍqÏ`JSK9·,Ö;D½’û kçŒ'B9GŒÜkE%ti¢äÅ6w±Íío›Ã÷ls´Ê6â¯[¶9Ž8aYÄ¨àÐæä)»ìR-=d.Ö¹*ë‘-ýiŸ–uîÙ¶WcE‡•™®M‡²½.±ß¦á.±SaÁKm½Ã”—ØumÓKìpÏ¸—Ú¯°ò%6/Ì}©­[>ÄÊ ˜Ú¾°¦6/™»lÙ{m	»í²¶îZe6Lhe?Li1$^‰CâÅx1$6˜âs|1$îkH,oìé‰©¸´¤ZNì²Ã´˜
fïÙÛtlÓaÛêØ°÷ûZSÑëÊü˜ÞaÛ™Ú³dLî²Ã2™Ú·l¢Lí³e«Lí¶e´Lí¶´^¶‘4VfÌÔNÛöÌô~†Íôn;,œé·Mé=·lžéËÆÏÔ^[VÐänm_¶»hb§ûÒTé®uÞ²¢Þ½ ËJ23†¶ïÚ¼%›æÑ66í¤©=ËÓ6}nÚ³·*j}Ó¶a4q®]¶ÔäS.Uø[K£jª^¶®&öYP[6_Û[Óúí2¢ÐµÎþš4êÚÙ¶ý–=vïÞ¬ýR7­³tN¼ÐU¶Ú¤ÎÿN¾WOÕvIRÈýôbÃ=ºwp¯”Rz^ Â{«4­åŒAˆø‰ô“Áš«LºY×	j¥’JXiˆqžj0ÀDæ†Ö:+¨T8¨åZôBj ðUõï>,fóÎÛÀ¤YÂëÌEá¿yõze­­5ñf)‰v²µ;ªH7”')Ê’õsË®û-a#ûü*o¯aêÙóNxaƒt2Ë3å¹ó²2Ð¹•.¾Âñ<³"Mz¼˜çkƒ„g½«7+ãìlU‹Oúó˜šÀÜvÔ¬ó7ãù¸cÏ2ŒGÿñ¼3»—gPØŸ_M]>InŽëÈJFE{p¸§¡Kþ¥Å<|1y_¸.Këqè«Lx€ðùÄùb*ƒixøî @n+Ü™Â bÉ% ¥|ÙW„¬Jòmšh¹`\¢Mm¸–`¾QÛ7|…@s±§LöˆïE·öhaµ}öòãÛNb–Æwo>ý˜íû³_>¾Êþ¿y*†ÛxzI›s°1—PØÒ–«QGiŸeZƒy}ÄA„Ýuê¬i}÷¶t³jŽ´<
Ç™«;™º/}÷õ¸sí¯¬ØnVÒ°›ïA:þÜÕo‰B ™ÞMæ™Î¦ë7úüñþõï?¾½†áßDèj±k#ÆÚA+¥â`s'’µc®g­Ôjë¿ýúë5N…î÷ú%Öƒ(%\>ÞÙ÷P¢t;´»½¥{\Ýtñ%Y‚ˆ¬äáÈ_ä[*Àª»Y¿.­Ê±†S¬ÙA…wH°‡á:^!IäÌ’ &ÃnÆø÷•#HÿzxU€½•¨aL„«²Ø9­—Î{o™·–B¥1 €BNµ·†pC ÖNX‡eUÂÒÅæ®qî›3‹yÄ¾+Ü½ª “=÷*“h½ô°Ú§ûéÅ¢0«Ÿò*O}:us‡¯#&Ï² ¾×Y¦W¸Àœ:ÉXx¸š¼bTRL)%´ä7¿B’íåá¨ØV=  |£Ú@°1ÉrÓ»ù-ë’½|&GØ¯Ü7O²|bŸ¢€wÂÒ<á™7žöP8-l§Wû^G«^üúSè~õÈ&õÔª6Ygs:ÏÕ½±º«¬íöGÖÕUæm3“V]“÷'uA0fÒ¯ÓÛÙ¾÷MS¸AÑ¤^êN0ƒÚŸG¶i7êëçºŸ§nR÷sØ§Ÿ3hf£etÞ¦ƒþ7jçU0iåK°‡`n!Í,Â§‘+¾¶yÜeë×oÿöOoÞ~¼7ŠÝƒP»û†ÚfªUóÕ\ÉöŽ]]…‘]]YZ×ÁBµ;¨Á¿‡*NFOb½U7}Óf¿'ãÉ¼•x´j ôû?ÞJ6\‹È'ôLµÁ…¯2.Ö²OæÄÜ!]âŠgs›Ü~¢ææ¶ÞßˆÖuÿ|³Lf}¸â#¨.„9‚¶£Šä<Ö®93u7B”ÆüÛ]ÕüºÕó¨oÿ®ù1žä)äÓMqñ&`Â€ê+ca]“¨q>TîNúÝÛñøó=Vr¹¨ýÄNÂ!¤ÔNbhÆY¡Ì¡ðÿð¢'ˆI –FZfyøÑ{ŠMUÑ×(¹Y7	ìFæ®“…”¨ùxÚÉž13X½{ÿ&AÞl9P¯³‘özv;^ÑR»ŽŠ·«,â0“?#ÊŸA.ë„ýïô£™(Ê5Eq§gýžëÅjO£ðëóØÄÜþ-Q_]è¡fWªS&J¬áÿýi'FD¹ÁzQ'‘Ykûd¹påHAvöAE¢²|*	Ø(¹âçfátuƒ»´ÖÒë3½{óé«3……1²¯ùgçÓlêT¬¸EºlºZHmÉˆ‡ Ý:íø³¢Âe[Š×7g>Õ|?Ê:Ž‘n_•ôÈ~4gŒ;è¤bÄq’œk¥)¶^ª´’„“ÐÀJq>YkÃFbcqmýûžöm Vá©_¬(]¶w5•ôV;‘W"½­¤×é”ŒñW?Dóù8êä~Xëè¢¿ÐÛ¾Yq=5êüññSœdí®üü*¯RdTæC0ŠÔ8üšÅRåµrßböÂ_ Ðøaßt“›ixkf½«—ÖösŸ€ÁÝóÎb4èv1ý®óÃd1u?ä²äy>Êú©¯œŠk(Ï”­(s0Êg5þê)ŸwV>Ôÿ ÝlãÔõ8Œüu<û‡?‡¡¬„RQû ßŸå¾[_)T€²¾2~…8ßÉ$GHnò„¥ü$!¢¹ëjmÝü-j]áí±t–SH¼âye8‡¶VWK©­²ZAÛ†LQ[V}x-¢õá"Fnª:ÁÃ/fuÊ»¨Ëïy&JâóQp],ïG·¼§º*ï±³OÔÍ¾á37]7Ž§-;ó+ž¼í¥¿½ÿíÝëtMã®®‰[Ÿq˜6×öÂ>2L;¼oÄÙ­JjLÎW×æ+˜lóîlö	¯jÀk^¿¾F ²ÎË{’¨A®ãëH¤>µc$ªìkÇHt¯ƒ÷`â{V?Èá;ÂSsjÇ8ütùNFáYÄn»8ÂM©Æ—š1äáÏ0_"UŸŒŸûóeÄF»¦‡7ŒrÞf¶ö†”vF‘ðÕ>¤6’…Za­­Nß½üðé×?Þ~Œû—W3D"q¬B<DjÄÖl<øÒjïVí?þñö§£¥{ý_ªØÏ}keÆßèÒr•ÿôç®Uo{wÍ¹5?ýÔ–•{üúçŸ/y“nÔÞÝ79ÒswïÔ^ê¨?ÿJ"§¬èÐöý­ÛèØæõPêU®êàþ¥’¦¼¾o«7©Ü%Ìøñ>~zýîUàÁ)sª¡eO7Nv˜Æg×øûXÞg5–ÞX¤xý,¶mÚõ¶Ü•6õ0snióö+öxˆÝO%0B¥WXyI¤ÄRDqŒ"41"q˜ˆî°UÒ;ˆµQ¶Ê•øVMíD >f¦×ò†5y—¶deŸÍ½ºÂo¸nü³Ö¯3H·õëíÖ¯#„c¥á;Ç\R¶¹r,À*ð+EÁwuSëœZèðÑtì{›^O¡cG„·-+¼ˆ§SÔ¨å×”º¡ÌÐ)tóËh´L}UGÏËíJáj-òizø$]u;…vSÆüµz¹µúº­ÞzEwº†»…b»>»­Þ6E]›¤Ò=Q=“Ô—¿Yez®ô %éAšÍÃTš‡é2R@¤ñÛCµ•®žÚC‘Õ´“;;5ÝíÝ*³ýôl[VºW·¦ÙVê¼4-^ªò.Q§ÓZe”.î/2žLT«–ÑŽ.W=„GÂN+å™tÖX,¸eVH©Á^Z´`…3”+ˆ¤„Fµç^iÂ/’UkÉ
ÁTÏ¥p9a`C²brFDI²
ßNRüY+%«‹ÿR[ÙJ´õ_ÚÓÈñBÖ#8@=fªð‰úþÝþÚnJçŽõèÎ4ß“Ì÷åÃrø®&û}<)?‡ÃrñTJcOÒÇâÁlýmû;±ém/±Îº/ó<“È¦H—û(qÙ¯ø¢gFz=V(`•÷šSJ%Pai¬‡ÚS¯˜ÔÞ:N‘Ö{h„tQ„@Møc)OJ§È“R-È•bW¹tÊytžýùãë¡2³eXN&%åÁ‹1ŠgteK³}–9g~x•oqwææ‹Iþù5¼¬ó<ÅNÇ“ý£fú£˜™gú³Îí8Èc6mLŒy·&ÆÌv–ÿ¼ŠŠÂ,³8óüëx)mÍ–=Fîk”_òùÄ³Nø²ÓË¾öÓq8#7œÂË>ÓaöHáÓ¬Óù[?îA–Xt²
ç=q?v~(=ûñVóægÓ¿ÉçÖ‘¡ý›Q^n²È7¤±üãrK>»»˜	43—vÊÿ¼¿Ìw$4]ç:ÊÏ,·ûëmZú"\Âÿ,6n³w–÷'Û¼‰šŸl85ZndöÝr”pãÍpR¬%®uùRÄ8­0ß,þ5ê¦Wq{ã›U^þëo“¸ºø;þ:ŠYÔ;¹T—/;ŒÏW»gËYÎýµ?qËÔykŒ”–\Üp_f“rÝµ}ù–c¹oó©2óå¢ò_ÂŒ³ÕzÞ‰aæo_üA²¼[ï‚^'«;õKøÐ‰	Å²}(-üª×ëeU;cœXVºó¤ÊŽ‰º	7ª×¿Ø j•‰¤Áh+‘%pw")!ñV\ä„"VŽÔTð£ñreÝH7‹ª“é±ºEíÍ¬ÖfüëÓ±ïzîƒƒ³¨ -£vóÄ
ÏJªÕ$ìfn»yûzÈ#¸$ MId!Ø„g–jâ¦ƒ¦vDGªý"ržxá‹b5ÝbUÍÏI¨"#ïÞxÞÑôÑMÅM|ö·°ŠŸþ®B^,5ýxyRÓ¿gõÔ›þææïÿüóÛñ¨¶8]Ö8Hm}SŸú¥¨°"vU/ÓVâ·‘=$z	öê|JùV*Õ
€8ç+Ÿµ5û¸ç®¶ÕâE¼“S“Ð°ÀaUnpÛÍK,µKF/
$×ýÐÛÌŒ’ÖË|·WÏð6ïÕ/@¼þPöê¸ìp¿žñ²î×ñv:«é~³»¿W×éB'ŸË²S/æê¯÷¸,£¹æ–KHŸÐ2¢êæfÍ€J`µ¹aÀøÍÂ{˜¶/ÅÛÜp	I›[–^êæÆ+ÐžÐôVÁ¤V‘´v”%µÃ"m<
QB» ['´J¹X¹œÖÜn)SÕ·Œâf}‹¬bùûÇè×ì†{çF†=Öƒ{ú3;*Ž(¡µ¢’/ÂÐJE4àXxi¸2Hr
”äŠ¡-EZŽ¬Q´BIóIMoÜ¼3Š%B^òï¬ásÁ5WÖ%U)ðaWVôKcdIRæ¥YJƒ.ñWQŽòÊôýy¦Q&g>îLâFÎ¢b¥:Œ¢ÇD+^½{yÒ,ÈqyQ†×ós…ð*Xx‹¹à%á5šêƒp§ð
¡@leAæ±I)2ˆ^ÐÍÒkØínv™Z›ãùøêpaõcž;æõ:½Ñ‹_ÔÌÎ,aãN4E‘héëœo{½¸óõ®--ë}Å¨ÑûÚªofÞ*=n¹ÇÛ7¿¼zùç¯ŸÞ^'FÈ®í•‚O°³r^	ƒ´Ùšr¿½üåÃ›_Ó;û&ÚºG¶8‘TÃp©CØÚß_Ål?×ºk¢qWßTãaxMŽõÎÃµ9Ùuû˜¹öÝëwéû}˜.SNøRûä,]‚°ƒ`Ü Kíígkƒkå!l™kTiˆ ´#j4WQŠ¥Â’¡aÂ² ×¬qb‹bn<Žõˆ`«¦U%.¢q-óiÌ~¶3ãÊcNœÌQ6‡ÕæÈd¦˜ oÞnÔ^§óK´t9W^§Ë[çíä¯Ì`óÏiWkìƒùaFÅÖlìç_ÕÔu‡YYÆ¬.F…½QŽkÃ^¾ÂËšìÛO2¹•X”Ê*‡¹Q.Aä‹ËêÆ‹×…m3‹ÉDÑºèÅdb¸ý÷žù`Kbµƒ}kKE\MRÛIªð_o¯á0/¬Ò>OÇÞß2ð å-Üìó|<ÉLÝF½}úí¨}ìÆz¡ÓÉÔ…ÿ6(Â•y³*¼îñÖ)¿[iÂs¢T¥rŒ¿¾È/jþÃH·z¨u+šÐ*êm•†›cìÁ¥§6××lré´àqØ+Õ
cí˜4@TSä ÷†zÔ:ÈÄŠzá#H"ª4aHCn5F^Bc0BIuv»=bbÑØÎ‡qØžÎ+5W:údœ{>Äj<u¹GBáYOwæ¢÷DÇ†æ5	Â?¼Š;†9¼4A"¿f\{×|½NÑX-3À–ç¾ªš»È>ró¯ãéçŽm¿öíüöyg¨#¹ît\8°ÄÜä‹©{~U$ÅÍœ+Tø[8æ{YZÝ8]¾Ülìèçí.wß0óÎ×¸„X"ëk? †Ñx~årLû—W±íÇê¹n–ùÝ,fÎ/›©šÜÎ¢š©PG-ieSÍÇW.:­`¢:yD/£üøb~—-° %Ym.×ÏÊø~é‡Ë’£wbnÍIt,)|“že¾;³ÛnÂ®¿TåÇø—Ø%üÝ‚ì,œÉ8>N±‰Ö}é'W“Å¼[÷CÛÁ]æ{”U2žz–:æ'Õwg¡‘›÷?»iÏÜ¾(Þ¼ª`Y~uùf~uà’¹ná ~?m8nä‹-{n É¢Rò•u³×»›¿ØÉqþ…ÛF–Ù}3.ÛÉÙáÈèå$OåG{±|ÓÒj‚ívmÂÁØH¢}Âÿ§¶)ò¯Xm=ÔÙM¬ëÆK	ó¯÷ð¼‘òÄ2'‡8jX÷OõeÑ©Ñ¬äªq×rÑT•Rõ§ã„Ðý“Å¨?~Ìy`7ãÄù¬m¶g©F7áªDOÃ3–>{ÿûo]·	BÞCóp1ÎÍqÇß†”p	WÍ¢þìÏwoQœÄdsí»±ÆçßÝò£è®
ó„×~Ù²¥[yØÔš »\mMžÐæ¦ßÐ óP­oÓdt]bôº‹‰Ý˜çh¢@ºáua@HPX;Ä%aža¡ÄÈƒT`¨qY ¹ƒÒ r±idU•îñaà"|GÂ€¼'TÄ¨SÌ[Â œl
´$M´ÚV¾ˆUâ Ù_HŠT?¡\ÐhSÿžå‚ó{~èåM© Õäz_<HíY‚ÿí{,†ïÑ”¼ÆámÛo		{÷f©FúJ‘áˆVïK{YÐÿªDæqþR„"Zc-˜k1E˜[B^+@bÜ- RGƒ<´¤1ÈÂßðTHW!ED|A|f©›ë´ÕÙºNE—ó‚“ˆ¦ÂI%ß2±3†ÊX’!#K×ãÜàdÙîþ6°«EîÁñ´Ð$h&³@¦pO'MÞ‘RÊ¦x¨0L}€aÒ0Ý!ÖìÖdÐÇÂÂB¸¼Ðí¡d|ôàEMZH+ÙvþüîWÿxûúú×?Þ½ùé:>[}ªÅ¬×¯jÚ
øên¤ÞŽãKÔ5hFóAc«7üüsblá›÷¿þüó7ªÕú¦FÆf_Ô´¶ÔíÑß¤ý]ïy8îÄOñ«qÌpâæ4ë•xû©õ;·1Ó`'ðéÁøf_œ#zPB¸Z`[¤C1F
AÍŒ‡\:j´åB* (ÇŒ @€¦*ÖN÷€@¤¡¸Ç	‘TŠ*¤ózt«FÆÙ¥¦2<ßM–³bd;YŒÜ 3t³Y¶%Q'³Êé¹FUšïS¦»PÌð¼3\æýnNZòc«|´^¹0pçÝÝÇÿõöùUÞâÅ§_ß?ï|øÛ¯%}ƒW†ýyŒ‚™ÅÚíÓÎ ?›ÏžG¨3w1µF³2Ÿ¶ù<†é\Ô^öGñb‚ùÈÒŒLÇƒlaÙ™ŽtÞ×ƒ<mIÔ¦šÏqÁŸÃzl6TY™Õ~·Óñ¤Žˆ•Éü{ÒVšÍ¨
vóÎb’×¾RöK~ ÞICf‹~–ê#Ó/»Üª?s]3P³ð˜n”UëÝ<d£(—{y.V–÷#&y9©.óë×¯½âuÈ?«=;%ålzvJ
WÈqur" ›%‚	˜•];!\,aO5ôÌW×]¾uÝ¶¸óYž8ÏFñòãÛN4ž$ÆçUö¤AÏý²oîÞŠƒÁ'#¢eòÍ¥×g¾ ¦ÜÔr7§Ê‡<þˆ)X¯åÈÅRÏJ5š%Ç¨­3Ú`Z?Ó
À. «ºç=Ø«PŠ!Ú€g¯fó˜²Ín<BÅ­”ÍÇ’9à!a6¤—¶+‹÷ÐYùÂ ‹Eß¶Yãºý?þñæUzlÖ¿Ó'F£’ëÞM¥ÜïFUœ&ê,1f½˜C—BÜœrkü’;ûjÃ{öÅRŒÙRßsŸ|î¿˜V4.œäWpG
—û÷Eë]êñø{ø95³®´×¦™:ýºÿê÷&UÚîY©ÃañmÅ¤ ?ŽÈÖHÃ¡Ð;êaÎ ±2†@Å±tJxÔ6DsF-‘RpÀŒFšãJ9p)U,¥°¶9%U'/4ÞÉ¡L”Ã¢ä“Ý„µÌ’ÁiuÞòD†#—ÇÃÅ¬ËL	yëXV`|sNrO•c0‹yé7Ê ˜À T, KÑž¶qÝ.’ÌÉ$Hh™ioólŽ/v*}–Ì D¿ÉVœõHv{(wùí×ÿóþS ‰õÆo&7Ý,`6J@F< D;MAºÍõÂŽÅð¼cp1;6dE>€…-d‘ÜÌ£À¸˜€.°0)¤³œa«)Í£c1LaLB•¨‚…ýýÓ»·Wc³ˆ´('¨Y9š%–¨eg³…¾ÇÑlÕXçÃ’8ÚfIUäÉa4@‡-“.S¸Q2	£…Ö7h›§‡OŸ†+mœ#Rq­Œt>'fl›÷µt ÇãûS7P³yßÌ\NM&LÞ*cÚrG=T‡·@	Ì±§P®  8¦$PZp.„ÓHZêªB¼ÎŸìcödKB{Ó‰ÍP.¼´š(SuÝ•Š°Ø»	ùÒwÑmy|õº¼ËgD’ÒQ2¢[y§)ÈrEŽ(É(yãÒ]ÀòéèœíGž6Žè˜ycüG…ÎmµáéÊÕ'b÷g#7£Åü~åŽ‡áTþˆó\¹,« ˜9ä¥æXb©”9¨´dZ-”&Všð7ê˜v¸ÊÜþéíÇHöçc3¬n¤1×ÙÜ˜û*˜ùºMg2XÜäßÅ˜˜üÇWK.“¢‹j­¸X¢è[ÎgYxÍ§_ßÇH›¯ß¾/êY„‡¸Zktz¿…Ÿ­Kk
´9FWë$‹­ÎÍ$›k<ô_mÁÏH¹#ÒÙÄbS¹C8FåJD ‘Š¡ó³¼ð«ò+Ìö„ÓùÙœ€Qå?*‡Ê—É9NV×”»†èÀ5¾NJe÷bZtNúeÒHæœW}1®öÊR„tüƒˆ¸2AZaºª¬Öž	¯5Ð¶Ê6ðÛÇ/ß¿é¨E`£y‚—wÏj°3Ë6,™}½í±k9U¾®«ëš¹ À²±FA`Šþâ½¢uáÝ(Yj³ÿ·›j7Ï¶Æ:îå¤Dî„#¹Ûª(eîD9¤! ‡sáN'4=Ð}MùÙœ‚;e?.wÊ–pýyªi+Äv·Ò×èúÝ›OOŽYÝsa9&³ú¬ügõ8¼ÊcµÄ1D]QD-ôjE)WSª(ÀA/¸!ÈRÈÃÿlŒ‡'‚8§…¯J÷~©SËm®”w_îáJSWˆ-Ùx/'1Ö¯óßYËþ(K/å›L)x6¬#ó§Md’²e  ñ›µy  ˆT}\¶ƒÎqB¹†ƒ–î·GsÆ‘û¨|cj³5$û¡­?©`hÞÂöï%ç~jO¨EAìÀ@:½c

°%4Pt¬½`
:ý˜ò)î0
¼AK"UuVÞ,÷ýR (¬+é
«·ýÑâ['{ü"à£¥f¸kžÚ	®ú£UÅÑ™›ÇVç£ì09"#|Ï¶³Ê€q"•´1xó^¸Â)­3dO®PÎ	øB1òãq†³"ó'¦ò1ô`¢¦±nÐcPzè\ ÚÄ+ï<uI„ ‡ž ç½gJP ´%ŽF],¨å¹´ŽsœÄßù
Jÿ_ÿø}J¸ŠRLsUm0·Gc…3ã›Q$|y™ê°{¯¶,#gDÊ“íÈ-ÿÈÜ¨òÌA²f¨tÑ.äü”äœµ-¨uÿ€NBÒW£?*àolõWbŸ:†pÏÝ#Ñ#P@á”tÐJ¸˜F€y+¼#RiÀx¬@"	ØÇj}B›t<‘—Ÿ² ôižŽŠžLÏ£lÌ°n}UØ(Ü4ðƒ¹Š©-Ï‡ tu"pÛýŠ#Y¶„ÓKçëº0„2†öÆ÷ë:	GXÿ¤|¯ö‰×<
w8ËÄóä¸Î©õLqgÔ ÐšGÒ59Œ¥±XbN¤‰b’ñÏ˜ð Ne2L`4zË¨ÐÞhímà:"
"TUp·þ/ŸLícòN’DV{×¹çˆUºvgÃm0L–>ä›µJ p#¯DK¬›ÀmVua6'•>öf6«:	¯Yþ´¤§Î:NÌ9f£á$¦™Ú»üaœC#%¶‚iÅ(.°Úc@½Àrc)"Ze$ÇÖS7’Q`¡ÒŽ9$ö°RDÞ±zêÎÅÔþÎ®(C©z®>¯M³ÒØy.ýÕ¤17~Þ?çHá·qî6>Ü>4þxÏg—Oû7ýÑzœÌM+‘Õãé±'™®ÛŽEhoØ9˜@éìiµ½ötJö$öô*ÐIØÓjô‹Íã!DŽ»Ù¿öN?}Ë°Hâ¥PH‡	ssÈ¡RÈzÎqàPB¤˜sŒx¬¨R2ÌŒDá'QÉ2bÄý½—²Ù•¢ÃÞ…Mê›Nx”i àyÙReíU>·]ÏY.bÓq>ô$»Å"$·ÜbQt½,‹ˆ¤Û±ãþ^(ûIµ\ûRöx4§ éqÜÇÕkeA2×¦äL^íRx´«'¢¦}eu²O—ø9î©ôC³k(Î4›õl6h·çéYÐÎŠEŸ”C‡jø¯	|$—IœÁØ@Ø²BŒÇ,ÊAp3Øk†<¡(Z§¼Â 
3Ë‘"z%`ä<úå»ÿõîÏ£‹-Ù—KoÎ~ŽÌ™âTæ,A4jl_JPö<†Q˜Êž‹­½0è2è½ÃVŠÃ9‹.F~<&mî¦‹Yw¦fƒn ¯Ôwn¾Ùç÷¯ÿøñí5ÿ~Ÿ¯âN¢6 £5¯.uh»ãI ùI×•;+¿×1™üäæÑÄpfI§-×D„½ÃV1Ê8¥TCi‰–V
%V.ã58€’RX†¥CU)ÅÞ²zöå a<Û–}Ù|±‚'#‘³6A¼e„oÅ©,?ÛäÃ?e…}u­ÙÑœ€Ýgã>ªD>ùW²¯ÔúÃßßÿv-“Ò\žó8©€?y$ébÇDø`E‰Ašb¢<ð8P/¬Ò fA¡ ÃLÖ†!I$ÂÐV"ùrOõ÷¥}¢Ÿ«Ø`Ó¿½2¿OnÀô³’3qÕWËUŸW-œ·¸
¥‘r•œK$ãî_˜Ê	™Š {z·Ç“9O‰Ã>n kù¹vÔDˆÕ”q=ÙŽC|¿9‘÷g1Ñ&ûH~%N`Â0Rn¥æÔh€¡‘	Æ¤|3îy`6X	F5gÎâme¥GâÇßßƒÅÄ}Ia1f¶3—Ü6Q³N\ä˜ÑÀì¯Èd…äÎ(‚ŠÓFD±]L€#b–k'¹Ä}¿0—“FÂî)±Ä“9s‰Ã>*s¹y\C¦Q{z¾‡'âóÏû'E ½XÔ#/Å#[z©› Dx'¤g„*¡b>6(–¡ bH@0Õ¡7^c„Á1ŒSÌ
*«òß|pjÑ¸÷ã@î2òðÔÜÜÚ@—_5î,:ÿw?«‚©:¯º¿Äü9Q˜¹é—@Zr6`nãk—sY,y¿Ä ©I>ëØÇÜjÓeE—@ôr=ð,rŠ¿þýõ«ë:Ïú=×‹ÎƒÙ¤åa†cë~ŒiCãÙºÙ|Y—³?šÇ’Ÿ6³Q|3Oøv5tq]ýÙ06$zü5¾›íHiüRw}WøÜg+¾Z­ø¤üé¦?ïÉ8>Î´ÞÊÙ-ì…¯ëë·Ó²DáƒÝéþC{ˆ¶ü…t#ÚJÞÞÖ÷¼›ßð–•ÛõËÇW'aN¿¨ç~2ÎtïáfJ·•x–53ãZjÙF1ª ÃŸë3=´,…±Uz50­^ÔYr"GR“VU+Ã€]ØÆ€UîØÞ«_þññ^ã3µîµ«|¸l½÷4kûaJÎÙÀŠâ?™´|à=¿§š:@±J^~E^äSõì‹@Ëz~ê\xq>ÏÇ“^‰‰ÃÝ…ùÊUñâ«kæ‡ÕZè»m Õg‚5Ã§pÖ¥ëå×‘Ðâø‰rø“V1mÒ•Ü @S"FžyZ@„ÃGŠ4*lœÅÞ°˜»¬š:7R#Å4­òÈ}9ÊÐÇ4Üðßˆpr{]w<þk±wbÝ»@ýa»jVØ³h¢”½v×™<®‚ùœgÜU³»«í™á¼™ªá0ôëu"Tº hK ¯ŠŠ—ÊëÍÝ·ùU<îY6bøÅŽ—/t
sFÖÚ™«ÙçYç™Š¨«óÞM?æc¯J™?¿šI¾s;ï†5~USû<_â· Òf±xúI1T¼vÝ¸K±ilb€BL$-% „¡Ÿì„MBP¶	›
2}	5	‚škÇ¥e—»Ûp­{ñEI÷³®B@R?fÛü~¡ÃWãa,g¿y÷æSöç¯¿‚ìÏb“ýå¿}½r_Ü`<É`×Ûâr¦ià^Ø+}eT
Ñ¶¢IX]ÒiMÙ*gy6]Œâ•¾vß‚Œ3VšZŒ•ÏÜ0f<ŒÆiõ‡{7g|>É£¹¾ÑM®ä€5Ësçt„Ô SÂÎfk«ßÿTÔ‘Ó·¾žè´’À	i®i<[ÜB0¯W&mŽ´Ù­¸&13{x%ëÇzÿ˜ÔìÇ:C	êñ«/óL÷o¬3ý¡Ô#îLÎöíõÝxq=tjÔ0 ª½RËG³†§…ëg]Õænn•’tS]W^9ÃtÇÅ„©Jµ“ BîrÐRHL€yÒ#«0 l4R +(0Ä ‘fR,`”cÏ8$ºÊAì‚
Ÿ0*d÷Pá’aÜC…„oú§Æq98XŽUiéˆ¦…è	ãÂýtrŠe[÷„§tx‡Oò¶BŠ§‘ÛC!W‘IºýÐäñÏ8M¦¨º. ò*®hd=¼ûBÃp¡‘?ILð¶pµœPµDTHn,g2¯Œ‰ž¤A§•Êy
9‹l`é8`à*ÇÑ¤|‚’r*” òÈ)…¡
E£ÌÔŠeHÉ7Ó¡	¹
±k‚”ároƒ¡íký„ÿÍ&tú¾³'‡‘);w(Œd Á£ÃÈ–ôìˆ0’ÕúŸ¦«[?Á_]½˜²ü5|¬›÷T:Èc\ÊïI‰œµ[ƒER{þ{€Eü—‹éÈÀE37KÌ ·Ðs†½ÖFÆæ^C-˜aN&` pŠ!â¬µF»*'ð\|Âp‘oÃEˆw{ž	·4¡?-ÃE¹vw>\|JÈ¶€ñ{ôFü×Œ:©ÇŒ½c;W¾5Ì|L-å©ðæ×R^`çyÁÎT%ï­¼£1ÞVº$bˆ:êˆke‚­†DC kÆ$VJ¢œ~‚ðY À,ò$Ö]ŽàTFH.( ªîæt>EÐ))¡ ´îH(€ï ¸eö¦„m8CrÚ\:Nárw®õw¬£<r¦ìÜáSr¶¤gG„œ¼‘a¥)´Z?ÁEGÙFGÉAGyŒKù}é(á1Ú(`Ï³ÅvÊ˜³Õ8ž üq¦­âÂ
1²„R€¡ÇÆ"#ˆÆá4…ÄŠ,õÀZ!M8×ÐXjUUˆñü=að·Y…)Ú	þ„”xüÉ¬~ðZã£¬Žþ¾gã!&ê‚ô¯ÿõKÿ.Ç:Ðø˜ÇS¡Ç'¯q¼€ÈãÈ®u^-ónÜ÷mD9Ç?	Q­	@DSÀ±‚ †ÀÊ+¨jà1ÒVj­°HAð†*"NrUˆòUþ¼ø¼¯·}sPFÄ"Óy„—»ÿ8·oûºWŸÒ¬Gœ¹³uk¦1‹cÙÒTÏ+æºZÍu˜m«¢7¡ÀÝI_8A[VbF ,WôæP¦Å©”¯`"Éoæwà”º…°7µtÆø-\Š=ðÛÆ)ŸÚ ¥ÍØ°-{ªä­c=bõò&¾Ó-[ºVó¾ý´ÓrVÛ–ÀÑº‘»4Ùý!ó‡Úz‚1L‚„åØdF¿¶ú—SˆÄÄõ/b§ü?qõÝ|‰;xåÞÌð‹»WUàó‹xæ¥S€iJœ‡˜[‹öÂRDyâÓ„ à„P{Ã¹#S¤2TiUr6g×ÑtáÕ^%ºªf{Ï(C‰áE°¬¦±–kÔ—d$*jQÔh©Žû”·¹ËZÄnKz©pÜËB²n¨ÍzÇÎ‹¸MFS³y@$ä–—=g$p‰#bÀ i,1Í%­Ç“Ië8R[¦Þóeºµ°Îƒã)ó+ó0ñ ù\g—ÙcÅÌÃÖvó½M€<Š	ïXû›A¤JqLÞö¨yQ
jÊdÅ%3Z¤‘ ÄRè0‹~«^8.ÃàÞÂèM‚%’ÎAi+ƒÚ.Ü-•»‰Ô¬‘»!¶ÍÝ0[Ü­¹†N[îö”Tõßoz†HÛôß;§‡ð·$EöéÒ2<:£{ÄØméÖFe,å–cè½Ñ@beàçáX<hEbN8Gš Î½ö±2¯Ltas‰¡/P¤FJ#"¸Üâ‚˜M*çß(/'×‚Ñ]‚¦Ï:c‚NÈÜšƒRR˜Û±‚jÚos s«?>]Œø£ó´G1˜@¦¨rF+„WDaL¥4ØÄ¡Ñ“¸ À'}`p¡G@h.\í@®«˜§t¢X<ls5AÛäjD $û6\í)‰oß]l'Æ¨e®áïƒ¯Sxç!|í¸BÛÓcpÌ¦½Á
[-E ªR*˜VÆ*9ÆÆ|®^(1ó€I~íyÚ¸ƒØâÊÌþö–ê‰"RCÇË¤–ÙˆB^fo‘–´`ÉÞ.QdgíFŒe[7âVÌ­Ù¯7…¹Ë/¹Ðöî3í™[m<Öé‚æ§=j”Ž%.°(‰$5ÆÆüã^A^3 …D	ƒ=ÕÈyÌ˜im$1”x¢šàW;”«%ÇÄ e´ÍÕ(”›\BÚÎæv	9{¾Ö6:úûàkç!s_;®ÐvÞnlö8…»$rVn%µ	}‚†z@‚<ÆˆŸ‰ÄH	ÅÎJ£Å¨ ‡ý3Ô8JyUÈÀØ,"#Ë‰kVó<‹¼¨ŽèÏî9·;GytÆTå
ÂÚÉ˜(ƒ¹ãG™3q
¸@åqP†Ýæ4ÍL66‰~OÉïãÚ4{þ‡çb¤È™{‚@É0-ÍeËS>?WŠiÿ¼¨â	,5Zk$!:;å¼’„òÀ¤¹#ÂrÁ ?xJ‡@X-vÄH% û+RÅJK —;©"£¢-ªˆ Ž–X¢ŠcÈ1KÓCeT1ÅPð”¨b«h¨‚&â37´ Ì¹àà4ñ1,çFO 1XŠ "z‰¥Ä M! Ä*©¼°@[¤°£8~ P	­¸³ÚÓ°ß
V%Hþ¾ib®ÂÀ05D”1&Á¶áYJ!1“4BEZ\LF/¢g!Š(€ìQå¶™>JhèñÉa¼øßöÕÇ”¦Ñ¥1ÛîeJR”Æ„K" Æ€LÆJ:ÅiÌÏ)úI.%dÊ‡·”XG‘
§‹'Ú9Ä È)«¢í³W+lbTÄæJÝâÑ«(âz{Öô°b“Ä˜Ädáfs?«•	a4 ¼MÙ™*<q(“’nDÎ±Àå<—\`.“TºÙ.tóëÐ­¿-Tºo{ÿöz"Ç6[p(YÃ@Ùž¨=ËÖX«æ+ÞèUi6NÂ0é„¡a®åsîO’hÂ»Ÿ˜3©¥Ø˜—Àœš¹†¶Ï´'sëÇœ6g¤V¤$&ò\($½æÊF½uD‰p!¤Pá!-7ˆ3Ã=Bsä0¾*Ì0æ€y“*3·%ãRõcÂÆÄ<~ÊLÇ£»aÆÈ¶È“ý¹/j°Ps7Ë€Ç}›„‰ûuå§ãa–¾0töGjðèRA¡?–ÛŽ+õÇ¼J£­³,@NÂ¥ðÀ°§ß£ê¸H¸´‰7*d†y[r8æ*ufz à·îñêaád9ì’ã9wæÀÙLdÖ/gAÛ“ë¬{[¹
®óÝ€Z‚z¹J“Àv 1B;F±s’ŽaDhÌƒ¸*±á?è¨–
ÒÇÆHŠ*Ã$î‹Dåç¯®Öë$¬’üs&b$[¹X‚¨/v‹YaÊå&‹J²ð $Ië´^e7¿$ÝúëÑZÚúé‰øÁ´ÞˆƒUI à}d®b•¢Kö¾7Óºb°]cíM;R&¬“¿˜ø Ä±§]Zíœql_Æx%>bJ3¨
d—Åh5åˆ‰2HqQÈZJaæK”×
"’@è¥¤‚!®Prgäb¾õè!:ùiÔ(˜•L0ý‘,¬Ë3Ä×èùîÏFðâ©Ê0m;î !c,›¨§”±vh"cœ9KYIöz$9êI$ƒ.BÒŽ3êÅÈ†SfŒu³'¹V³™›Ö’ÆNÙ«w_îô.9ÆtÓë±Oî4èÏZPød‚|h
š4¹ç(²az‘™6¬k´øÖX¨ÜnÅâ`GL,ITÊ]ÿç¯þçý§06H{œuJ~ÙôÙï_ÿþñãÛkþmš$©VÒ2‘þrWMÞEïû	e–nlR5¦ØìÚŒ‡•m8ih}¼2PÃMtÔ´I[Í›öhdÓ™›µÕFU‚ÔuïìÔ´úÝÐ>½öëÔÃûtÃûÍ†g‹}¹q±_]TY$©³A˜÷G~œp=óþ bý;¹Í³ÿ'<ö5ì5>w²Är_Ô@¢¹öCZ~êîÜæŸërH£,+õÆlCQ¦yÜT– $L±“JÒÐ€KðR	¤mÌ•¢€´\£ òh
Â†ò˜L`à«Ü'þºRMrfJDI±(8Šé)7¤QNr,©&]Ñw&rÍ¹'šrm›´ä{•k’#Éž´€sN6—‚K7_XzÉ«]ýÖx‰¦)-[åÚ-	¥w]I9ûôÙ”ŒNPDl[òIÞÇ¥”Z¬Ì¶«?¶-CM´-(y«Ê’ÐéÊ¯UI,ûwN~ÀJQäÞ8ÑQL·j-¡$vX‹*‰V2KbûïÑx%Å¤ìó!¢Ì½[ð=I4˜³X0e0—A\‘Ž1ëc`ŒÖ¬©Bã°ëÄJãaF1Äˆ V8 1„ªø˜¿ž<S2”š‚#)·+«ÅÄB²™®1
‘©î³#'!>ª4ó½å†“¶nß©Ó˜š7MtIÈ4Ù,º-Ñdºmæ£7/¶™‹m&Eú¸Øf.¶™³´ÍLSèË²wê&]>ƒÏI$„bvmÃÅB°èÂ¦87h-‡Jy	¶FS 	Vj‡±‡ Rc²*ÕÔ_W@"©Ùìc¶U &bÎŠW—$€ƒ”ulé‘>ß[jzHQëô½ß«ˆtd3Ï™ÊJç”“ÿbæÙWÈº˜y.fž´.3OŠÓ®uëmÙî˜üL3ÔÅÕyü*,ÎRÁ<ÕÔFQ§  B$°\{Î•6„(àò…fR¶  gå.ÁB[¹ÛDrQL¨ ”lKY$ìþf-L@$“IY~)ë˜eUž¬ŒõiØ #áß¿ªŒµl\$?ïÚ¾½¾/®‡NšÂ‚kõÉÛO•1Â½b)üq¤À„4ÿÍRàÑ²ü§[Ì0Áßi-fj”¢(^¶j¡À¿˜â.¦¸‹)îbŠ»˜â.¦¸sµ¨™‚
bœ˜@™£J1k‚@mK[¦¤tP,…Ðaì°bŒ+aåEHÜ%L­Q†1ŠY·„DÆb¢‰LKœÉ1©èA!ñ‰˜âÎ½àX»ˆ‰OML<²ÕðLåÅs*
÷¸VÃ•¤Ø²ùÅ<y1O^Ì“óäš'/VÆSÉŽß‡•1Â!nÍ¾YâAdî×'ÇqçtL¢°ƒcFJBqª‡ˆRÊ%2„y5…–j¤vAtäT1!°ÑU…±ùð©3[L&ãé<K«[/9¾/PI'ë7u±[¬`]a°K_”ª]Ï:_§ýùÜ:‹Ùƒ”¼¾éÏoºøÏ‹/ãoýÏ/âyvóbW^žT ð–—''rwZõMÁ’2\*9ä)VÇå]ëf—¦[{]Z¤ˆ÷æÓƒJ’“‰adà&[mÄÁ2%¼erÂRëåRk¡K"PIÃdÏ'k([õQ}P®Þœ€tã+^ò¹6ŠŠùcÌêLž»ÝÍÍ‹Õ/\¸âóYÏfïÜuö©OôÐ´î'cû§zÚiå5æpKqèŒ,3À¹ÖP	™Ì;H•pHx'-@Bb0ÃUžÿVQÎ E¢ÛEhEéUø
Úbl²Š”¼Ouò€j"Í*S:¶Ú„#°	ÑRóx46Ñ2_Q6Q¨£NÉ.NùèÂ.²'ë<ŽuŠÉ2A¨ˆ%A6 ag%FK†
ü„iŽ•Nî²b¨£(HU™/ì¢l´"@Ê-ÏÆ µí6Zv±=F).§
ä€¥”ž*QÊpiºµ×åŒÙÅáU£ZmÄá,Ò–…¶Û³ŒVDàP–QoFJg-}aÅ­= 4ù	Q"……ã\zìcV#F4‚ÈŒCV‹¨…’`51!oáJCc£­
“¯Ùeß¨ïw^Œ P1mWª˜P¬q,6‹ñÂ(f”y’\´â±BùE×ô€º&€lÉ¶ìLT6'Ö"^Kè¤4sŒUNzË8ÆBxäpÀ™°	§MüB
Ì”p@Ò@\†Ä!_9ª”÷š¹ÔµÜ+ÞZ¥k	4S´M3•Ü¤™‚¥8{5ÑÌ‹ÒåJ n™yá(ôòø:‹«QÎ…^]%ä†'X
¨™ã:‰„œµ5TZh¤ + qŠP ™¡\ð×¥—¹²ªl@€€­dž°aÉd˜ØÊ–™ÓË‹ÖáÁ´±éIiæƒ	ï'Ö'‡fêþi¨ûÅ¢Ã°Jrì/(IÄ5dbK-qX0$qq¢žxÂ¸‚à(€Âjm Å’Ù =+¨æ/ý›Wù³v–çHƒîÏ§á×îd~ËÑÆ*SÙNÆýÑ¼SìOhHØÐÍû¦šÀfîï«Áã«5ïöGºßÕŒõŒahfiŠÞÕßB[÷M'÷óÕAÿùŸwº‘Èv b”`Î¡ 1%tŽBtuµëgýa ¦K'w×	_†»±ü¤ŒYLÕÜ­þ*øÑb¨ÃÉ÷:¯îíB§¶o0w3çƒlä7rÓÐÊ¨Y2òúüJ;£B›N¾^VŒÑ0ãiØyGf_Ã‰‡‡HÛüÿû¿ÿï×[7ujÖÅ»=ˆE³Ã®]mNi=c•çáËi¸„&>ûBÏã€Óé8¿\ÆØÇÙ¯Ìx´¼ÓÚÍ¿ºÐU«ð3aA6ÿ;zô@‘¢H“©¥GŠ@ÛÉ €b£B•Iå¸7)D7{Ù/åG¶LO nx?¥Ë³õÑ5„C´¤áµìn=écÌ™ú¾ÇÜ‡©ðIõSÛÆN©|½eXnÈo¯wÆv°¦0ñ{U´Ž¤Æ=ž0.…Š T‚Jaa±Ìd;@‰²Š ªhø /Õæ4tð‚I$@òÝ’ŠªR"¸iú‘’²ÌF²$[~ZÃ‘KÝÀ£’ÖA¬u@Ò[ùˆ€$)¶õi!HšƒwSaBÖq´ÇJ‘áÐsjqÔ4ã‰7R…¹PŠ9C28‚pšêÃr#¥Zrl«jH]ðÉŸ<5|R$¹GÉUÀÂKHÄVQcä¹	{)LHL+q©vú4÷Ô²XkTÒ’r•œfÎ45Ië¹B%Ÿ…m‹j‹©=
h°¶äÀSRÓœ ÆŽ©aHÀ’LQ	0À
‡±PS¬ 7–9~àQ9Ã¹%1¨=„tAß¢©µ~¢‘ˆ‹­übœI¼ƒ •©ñ}­aÐI2vîõ~":µzæ;Bê™Ç B'NTÂ:g®jzÎ[`ëÚßçX™9-õV@(…D‚„GŠPb¤ÎBI ±V‰¥#’q
¡ñ<€GõžÀª`–ô¹@Ÿ'}òÜª˜¤à€€R¶•Zp€64@¤§6(AŸìe¿áxˆìª,ÀÓ–™pZŸÖ”ûÀçTs¦Õˆh=÷w£ª-ò˜`~'Ž:'AÈ3••Êf¼ñRMÔÜy¦8ã‚©=²
1m=%Ž21ÂÈ/`UÆ ºÀ §
ƒXjŠyä÷<‡)ÚÐ pöpÕIƒAODtîiæY º tLÐã ¡Ó ¥e¸J çÄ Ùx´/ì!¥Yt¤ |C=”€kl6RÇÔÎæ (	¥Ó‘g‰‚@I5zŒ‘W€žŒÆ¾‰(b2šsÀ@vÿø½SÍœT›—Àâwj¾˜:»£o§¿1ÉóÀNŸü*ža\EN¿k"ö	ßŽØi'¥TlGÞH*A9ò&©ŠÔ€ý¸Änv_ºµ7¥ß|ùñm€&à	)ZmÄÁ)¯h›òjÅ9ÃkyHùÅOÈX˜xí¾Õç´jIMêYb˜ð!çJa¼Çž3nèCÏw’ç<cÿßŽ=žk}lvàÑcóÿb ´þ;/ÐŽ4þ$«º·õ–5ÿaàƒî5?ÀçFH#•ÒVj c²~ä¬‘ÄKî9ALÄ PêÔÐœ{i¹ÅŠ3j–UI7ÿêàc™bßK±FÅnðÁéV®M	X£>H-ÁÝNøp€ÛÆ£ƒ²%oÄáàƒ‚}7šÁMÉ}™
:ZQ‘AÇqçJcÆÇ³t¾“<çÃé4NërA(gŒPÄzuÇ±		è­s§$âFp$8@P9„iTˆ(èöZ«ÈrC)ÇPð*›P†PúGB(w- Ê¹ ”<A×F Mfr |w p@Š[ù¹4Ä–
“89#xÁ˜EÔ¨É¬ð¤JóFŒP$ ûåæJA(¢±.j„ÒŠŠˆPŽ;Wç>îœÍåøóä9¡œÂzrA('G(‡d
=ÇY$Œ€›sÉ½3ˆÆx%æˆ`2ÈHüì 3Ê …pQÏŒ÷†(.k)4Gií3…Æ~ça™¡ø^.e²[9B e[¦0ÉAÄˆâdÏâ
%Ù%Ò³ƒ>Ye=
9½‘F°}õ$«C;UüÉ,/Ç6vF+®s¶D{¯…†ØK%´Ðx¤ÃXA¸WÐZÅF[IÿP.¼B„YgEUœçwI+E2¼W–¾›V"æØ •< ÿA
hj&å­lV£>Z‰Ÿ„NYLöËŠH+Lƒx2…ñyÑÊ£k¿T „!F˜3dbå;d8ÜN(3Ò;(±
`bd2ü×pËCóªÔ@ß'­ÌUZøžJ‹ŠÝ*-‚‘Øªk„ˆˆj­¥€@$gYÓÊf…Î¹ÓÊ[{S»@ç®Ø’Bî:”H&Lq2­ÕQÉäbdnº/•„=ÈV‹¿çŒ»ŸøM!@¨„0ÊàÕÞZƒPŽõšZ¾—Lp„%Šá%BÆt¯‚‚Y•r>Ïüx—Å,æýAÞ!ãÎPâ.©L“ß)UýY'lQÇºI¸™nd²¬‘UÔô—|#‹Ñfaš­¡ÊÃtæ·áU½¹íüÿì½érÉµ.úŸOQ±ÿX¨œGœ8Ñ­¶ÛÚGmëZò½ÞçžŠI´@€ˆ¢Ÿþ®, $ bÈ*&5Ân‘r¨ÊÊZß·V®¡;*aÛà9½n¯ã†ƒ²¼‚Qa([ýP¾.&åa$gÒEº…!gFÆöö|ø0¹­ëî`£þ¯^èÿL­æ´©ìÇrŽ/ Á‚âÅìæÊéÉ5v&›±³qº:ÈBîQyãtåpÓ¬³$»g!¥uÓ¢O®Ï?•'M»)½”åF4º–Ï—G½ôºýn¯7Ø2ª¸f5Fí‡Q'½û$Ëþo	YÐµ&Ý†[®˜ <’É6Ø’RcN„çÔïžš=f,ì³oÆåðíö+qpPk~wÐqÀc½°Ù,?)ð:»ÌÉò=r]Ó`¸¦ æ0¼I÷0ùgñMO%dg½È¸ï™HÊ~x€ÆÕèÓ+¾ö4AFãû…áÉN’Àh;Ã«	)”•IÄƒ“ZZ„‰'¢±ÔZayd†+ŒÅ€š'4E #¹§ÆQ¼®Ø…Ÿì;—^NÀ%ÖÔ{¤‚¨%N­ÒÑÏBø%å*ßAâù%‚¹5ñÔ”0klt;Pî-­”®©G6%%a‰ÙäØœ™l¢ïŸ™Ôß-ð–Ú3Š¹2×©2x8ûe8YœÃ!°-ŸÊ´•¹C	‚Ä;+$±>*4–^0Ä#7Ò(°‰Š(NÓN«¬ÕÊ!háÔ:ÿ‡ÁÙs~	¶l,‡G¸:<–jìeÉ|ˆ-æÙ’ç,N_¢jGnÍ«pÊgKù²J$i]ïÏ”ƒtì—žäçûÁ`[n	RËÞ’G˜påBqv\)e>¨sÙ[¹¾n*ÕÆ]™Rƒ	Ï“(mNwq’D©z6{äI™ãï&ír ¿£*F°RF"C=ã1åyÔJk£‘6•RKœˆyL•ó‚S¼–{Ä·&è„S÷D¶!êOOrNá´ˆçžaJf‹	A¥RØÊSQL3L²ÃiŸ÷ÒiÍ?Âïì¨ˆQ­{A=?·S9{8À‘H;Çü¾ë??ÆŸï‚y˜/@É³;W[å\¹·Ú{P.Cˆ6Pd=üËˆ†ëGBét¨/IdÊ)ÎŒsË ¬p–	Ïü	ú?w}7\¤þŸÿQ¥#vA÷³½õ"ô?ü¶¾ªB«Œ„Ð¨,Óê? C-FþI]Ó÷ÃîÍíèjÐ‡ïnC2b·E$‰±¢Ü…h—7G×§eDå‹#|P"W
ePü—’
Š‚%'Ùâx~kvª=¶µlæ1Ïðsë‡>ÊÙ©×åªiÑùG·EÕ©):6JÛùi[žu7(ØkÁÍÓƒºnu›Ÿ­¢ 0’¶rè"<zF’sÂ§¼5A`@Œ`BD,<åyÏ¤ÂÉ‰ˆ®ËŸwƒÚ§¥éü3ï´4åÆYtè’ˆ.¤ÚS$?ÓÞÐ—pp9-ÝC¥"xæûš£%¨=ë)ÀÂI]›ðl±jV:]³kÑ¶6 }Œ"Æà‘
†	„ Ü‰bFg½’ˆ+éUPUúx©¬P[%Œðé:{Ê»¿¿y;¹×*ÝyJ§žr”Oïrõï”¼79¢Zs#=eA¯R¯O‡LC)C»±éç Ò	×ÌÔV¼~ÊþFWÓþÅ-àB=óÿNS¤§±»…ëù—9–ÕyV:s2¾×í‡£ƒÄLg`K:OšÁêŒ#jéÀ‰àê“çØ†³Ó™?oÞNµ·’äÜª.¯ª#ÈI6óª%ÿ0¶ðeñóàÎ Ü§O DªŸoßN’ÌÿvMõË?ß¶½‘²±sQ˜C(\SÙ0ú¼y}ãPM™´až'=Æœ9EaÌÝV²ÒöòkìQeZ})Ê²^sÓoí`9w‘1
ï©Â@–2k°Š\zÐŸ8‹Ü:k4Ñ’2ne Ô
P‚ã!š¨Ðº\€ÝÀ.Ÿ”pÐ× ,B‹ç$„à¤ÄÍ,ÏöW­°ù‰½Îbw)7rˆeMËü^!vKÚ«#Bì‰Wi†µ{,Ò†F+Û6h
M$ÎXO‚Œ#ÄQ˜+Î‰ÖQ €£'ˆÆÈCt")‚§¹ )
ëÎ·.€»/³'^6{>Ÿd-.ÈÚ%–Ãî˜\©QCÀ•[-~ç£Ñ²¦×!l¥\KÕÐVZdkI¢–@vsæê±5çÞ{qÓg Þ
zNµØOYÓmxÑÑPD‰ŠŠ a£µÑQe·Ü+g)74xjStJGwÈkùÆÉˆ/¦äC/Y^ü” rYÓåx)$W’Ì¯¢87n¡6ðž“¦{Èºâ‚Þ¦¾*¿WèÍÐo½'QzâØ`|Òª0¶z´VhˆGˆØ äQJFH1¥±ðCZ«°s´_©¼F‚",¨Å ‹h•âë|{.ˆ¼¯pB¾Nˆ0¦+YÒåj›”
<¯
S®Qn:§DæÉö¼%œîûU…wÁãƒ”·FxïªpMIÔ
ïgÎ<U¸öÜT…å©¢oÝ¢Ô§«
ïx‰f*‡‚Ãt£@ãZ!¯ŒE~p!P
ë\GË	èÅ Zé<\€÷ÀÀ«—i-Èjà%d)?8°&:_h’.©Â9Àû=«Â»X¡½¤i}ìß+ônU…½'QãèØ`¼OUxh›G¸ ö#\(ÁZ{M¹ãF1&‚ô^`á¼Jµ1·Üc$':¹>+ø´J«¹"Ê†uIà?Ý†â]†Æ@ðo‰iI­aa*ÜvÃAÿñ®
_àºHÐ¾šÞ8÷W¡ä)þJZ¯«8ÜU±-Ðí®Û7½ã#èÔ˜ÌsƒW@¥K©þ°¤0Â|"TþAîÐvªÓbØÊY¡çÙÄ¼HÄyMg)x¸Û3º´aÈ}3mIøKÔÊT-7ÕÞL÷Ør_í-áôely²óLb³1†h:v^áÀ…%]Q0°ÁnYQN°XN„S¡øîidv"äùÆÚÒÌ­ä÷qe1¨àœ0„#u)w)åQˆRIª¡
´tEuäyî# œ—|;ö…Ì«Óóµ	7§ÅÃX åZ"ú,ÉEn0ë„f­%Ä;32púÙô$®]¾`+®Ô”»ð ùœ¼§©¶ó€¶fÊãm-a¨=Ùyò€íÉì:>D3î:i´mîßø`¤¢öÖ; ©ø­ª²Öä˜T)%[60oá@	–’3§æÑ"A#‰. «@Qyk¬†X‰¤AS1›¨…k9ðƒÊÎÿŸÿþ·¢2Ì?'š3å,}oø6`IŸ½ÝÄ:fã-5ˆ‹¨f™âÌdsƒ¡O'
£Añ¿¼-˜ òúê¿ãÂ™~‘Òg|IÝ»£ÉõôE4ðG(IßTLzþë×÷¯‹n¬2p<˜þ(}VŽÃpåÍÈ¤¿|·ü’vQÞÁpðÿ<1³Fƒá—bhFé|atË”¼¾·ƒ2\ÁÝ~ß½i±Ÿã³ ©IDæ:¶k†—òy`Ä’Ëó|j`¤²Ë3¥÷£Ê¹Ý$Rû$ÿ—ï¿’Îó”à y=ˆjXMïUzl[sÎ¶§ªÿ¶¥J^û³åÇ7˜õâ™~*žé«€9÷ ~/ÐL12 äéA 	c[ê9
ž´£û@$•‹¨™óY¯4±Žc½.±þšÏšU®ë»&œ-C3fš-Ô%’<;ÙVhnpÖlp>uoöTeêÎÀyËýqÀùâ»~÷zb¿}ºyÊ@d!¼b–{¯‰Ž^‹	çLIXòQGÞÃwÒEÏ‘8ÅQÉ•.8Á¤½€ö÷ÚÓÌ,
å¦>Õ[/zÇk!(YÀl"Ñî˜½{Ö³¶ûûMf&¼å‡ÇîùNvÀî†³í¨X_R—}—jssi«-^8Î€Ì¡( ÕxF<•”YgBƒ¦Lœ0È8&¢äæbÑþN˜äæFÓ„âÅc}-“Š½PÍ©\¿|Zó÷›í0øúóù`psýù’Û¬6Ÿ®R<— ½-Ç5é´+j±VÊyº16
é&xŒ01$hÐƒ¹5J*¬¥ŽˆjºÞ‹ýÉg	É3W;‘2ûb	’1B
/ÔŸEB“š‡ÌU¹ˆ¶ÃÅÏÙŽ}P4JuÍj´5p¸¦ôÚ‡Ûž-O®=ë%æûTb¾wÓ–÷ ÍÚ2Ê#"á­ …Eã£Ã$RÐ¢óYowž"f¨SÂYP¢'v]â³4Ÿ94g•kF–Êû×cxQ[–uÝ¿rù´åï.Lœ2|Áæ]täc`ó%(|Ïêô]·ß…rÔ4Œ_c´.Î­¹¡›Xi½Â ¨(KéI}J	®˜ŒÌ0á‘ˆÂ8
a†ñ){¸¤
^xè¼ºÞìsrS¸ABÝˆŒ1|W.´HØëöº£ÊH¸¼gË÷fÜOèXe¹°¨äp·ï†ÁwmïÆ‚Y«6O£a½‚^_]=’Dîd”8î»4Œõ8wéûÐ¿I9ZæºÙÐw·	n«¾ÀB*£ þ˜PÜ”eŽ*2q†ÕNIEò¯Lïf0ìŽnïÊÄT<Êû`&)f a?ç§º¸/ ÎÇQ à(~2_Âðõä’m0ãQ7ŽÓÃ->UÛý-¸ÑÕÊÛ½¦5åíà¡,&¿ÃÌ(­ ñ¾„»ïÁõMÈNºàªÅÕ`<ºŽN*f&x‘[3Ž—RÕÀöGzÞO–Ùeƒg«Ù™¼Š—šÁµ¼cÞ´”×ì¹mDÝúâu#ØÏæl{ÊS*¹ÇjÁ-€%®ž–¥ð”!+™”pŠˆäX0¤f>òè´FÊèè|ÐÜ„Á#ÆÆBãà.`yËƒºy³Î×&¥!
-¹Œ‰™X,."ó‹*Ïƒ%Îðl¾TTn"US±\ˆ¬)TÛ€ÈÚSžDî­–r ¹C°	Xê4A~Je£²”Å¤7Fá˜ñÚQ¢XŒ>8ÍQpž&:Y9³^ ò5Q–¨Ü²6©¥z µÀÙ‰Zæ2ÇR}Ê yúW` ¦QÉ¹ØØ¦­8h(Þ³¶UlôoM‘,0Ž–`Q»FÌa`ÐF†H"– M”a4 \¦ôœ)3v \z­,F6á*çI4ÔXµ«)?ì¦cÂ”>ë×tß?ÿ´õ~,ÖtÙŸ8.Aû+¯«‡âí5`âD@O®b“xQ¼,ž©Ò«ÃT)âxIIæAÍU…R‚‹\®¸C¦êKK²ùÇïrŽ£Àð¦
LÍåØ9=uÓc=	ët•Û\PñÆàÃ…Î)[Tì"~g"õ•MG¤EzãþGÁ®Ù5)€K_Ã;Zð”jr“¨®—êI¤oJÀ´˜í¨ZÁÏOõ	fyÚ¼†7iäÉ?óÛlÓ Gƒþ”Š´sç÷Î(¬Œ´L['ˆ	ÆD/@‡âX!Ml°žRPMŠõT”H¹ÆC;«Ï ž°¡’HkÏ~8Ftþì>‚•«ÙºFh©T®E3}4çRzivÆl_Âãïl|ð'÷÷N°Tn¡±I½ÕØ¹þž’M½Ir°àùmÆí@B-ñÐ&"<‰ü•€0ÅzÆˆ +{’€ ž•°vŽ™¤AS%¤pVO±ÈR¢ˆA$žðN F4:e…VRF‚°ÁÓ­üïÒa†bÓ¥óÅÅjóš/çÙe”0¶Ï‘V¬."¨d¼iélã¨êA+ˆ°}5v6åhÝØ ÒëÜ
Ô’Ý ÀÊî	:~àNÉzD=Î#£©ñ–2k9SÅha.ŽVPL‚Už†È
FNxL\dë¼~¸ñ³|’îKx¸¶t<Y[’Ìµ%a™Nº—’žaI•Ôúá”è|{ÿlo]LJG0)q¡šf>{~r§bÚ»…ªE;ünÒ´ucEA*‹1•Æ¥àÑ()pgx‘%¡AªkœªVª ad,D0ÔbëEâäëüÏO˜Ö5½°lÓK’‰xñ¤T1ÁÐ‚)^#ü»ž)~";/˜Ã`EM:çJÎƒÙLömÇ9¹ÙºMÂ’¨…£Þ€Š,…§Â+Ða©@NjL	AÆ:rUD†è± Ñ¢`A®®Ë¾ðýÊÍ™…‚åZ(0'R-y˜`„µÄb1EÒJñÜ»ó’ób¨8¬¡‚#®ÖªÏ•œ³1ìÛîÑ’ä|,ÿ»GšWBg×xví¬¾Éµ¢#¸³)`™Þ)d[¬T ž»¨"B‘Dj¹7˜®e*×ê”_—ýÇiò×Å_Ó}ÏŠžWÒ0Yn_¶ÛŸ¯§@ÏÔjsQ¶j RÀZ&ßÀ»0‹UÃÈÂ·Ñ0Ü…‰s#l†‰Þq¦Ln‰WnÐï—¼ _ÿ=ÃÇ™?`7Õu«¼¡<åqoT^“¯c
€·©o²”\Ó\Ã0×”…‡½áFþ.îÌý=ŒTÎ¢öM/SŸ9[~+Þ?~x÷þP^™¯¦ÛKî×Eù?èWUãûƒýzÞtG·ã‰mÂ»¦kÝ¼™íÌ{¾û$²éÕPÁ„$Kæ	/ÕBv9¢„Î‰êâ:“ýßÙ¸ókÌÚq·àøºë°+8`†[±«ËÜRX|N”elVcf™!3¦Ë+‘^wÚ‚áÝðñ~4HqáøgÆÄû^ŸÙºV¸}h&t¡MºÌ¤¾ëu¡Ùg¬òÆ¸Ý&¡šÆ@™Ó.t™EÔƒU7­@Vž>èQ–½zOéßUó=$-X>üØðæÚîivgz[.öåêw%Müš´«kFì˜52zåÂp©‰
&) ðÂSlAYªh`N²ˆH$«ªÚ¹p¦³âLe#Ò4Ó¯—ÙH¶æT‡¥"	K D/dÀL(™m“œ‘Øÿ[ÉßgÚ¾»S&ÒØ-8‡2ñ­¥Js™R-‘ØQª9ë…'3OÊ]™O:žÔ²cˆEy¡¨¶J#€BRå]dœDšq`KÜ‡ ¤©’¥rD¼W>J&¤QZ±®LÐ…'}W<iêý²”‹‘.Wçbd/—(–r!Ž
¸v¾›ä3AØæäñ;áIûöuÁŒò}š–x^øTOªåœÒO:ŸÎ…'Ÿ'e¥©¼ð¤ÖyÒ.þû8ˆcj:8QÈ{âƒàØ"®iK'‰’)Ê‚hàO12j…ôTP¯¥õëŒJü¦ ÜÀƒaÚóÏ¨ø‹ì‹\¬	ÈÆLò¥€l$iåñL$0ªZ“I$g†¬#šSÎ˜1õdçr\E5ÍrKÍ=¶S9çÙç¡×©IÒÖ­óÁ¢’ZáÝeBiÁ­õžx¹£Å:D¤•TšYÎb$R†ŒàÁ¢Hù:†3¤;®Érj>ÉÅêRrÓÑHP)Ñ‚[˜†G™‹0/I·nÏ@î‡p86<6ÑÔ%,SŽÌ¼G‹øéIÑ–mwÎÇ±KE‘%JÐH‚ešqO§ØF,RñØ1k‰ .ªu éñ»—¢³ÑËf-ÁV›µgt9*A¤ç…¨’Ck:MÍdh{ñ\G“¡çbß¢zîY†:”«}kY›2´FQèÁæ2?§Úh¯zÐPâ©² ÄÒH(w¥ÒÌQj'°•œ`¢Ê‚ðc–ÐuRôÃ,Íèä–‹‰µk.·gwô¸^’æô¾¾ºªÎ\Ï”eazå ¸5åëbt¯éÍmáC/ÜTâçu‘Ò’¦Ãˆ»0ºøêlÂåÀ}±§Y:_¥4!šqoí‹Oo?|¬¾ÂqTUª²éÀc”2€¦¡à¿=ƒêzÓL?<¼úá‡ÉYÆÕS’ÕÙ„åØÝ¦ƒ×”áÕ©¼‡Õ@e(«‡b@ô'‹Ý¤Aú­:¹š¯¤\ªÃÁ]Õ)É’×• Nàv¾vMõÅƒéŽ`‡ÂwÁÝš~·¼».þ6¥ã!3*ºñ*ÐòƒªüÕótO3<Ü†þ$iµð°ÅÂëªæVy;÷|J{ÞÃª_¥'ÙHŸ–ý~ ƒ›šÞæ·ÑÐ¸ÑÓ“ÀOw
ïTèC³£§1Å¹E1$D,  CBÏWÚb”ecà³XèTïw‹%1žÊmýôñçI±­c_?îLw²ã )«Ÿoß¢êç¿{]{ä*ÖgSOƒkÑPyõüÔ·´Ô”øòyÒ–ç<¥”¨[+j›Òc,¿UŽŒz6VÀ1¾o#½F,‚¬«¾ƒ¿©(ìÄÑ­A¢2Œ-–8x¤œÆ‚
†€MhJ936kAD P6bqagÍ"fÕB–³i­­"±^ª×É°"|žE0.rÏu„Ia™­Õ
9>‹øðæ¸²¹CM9ß
w¨=ç)q‡-¥FòaŸL³kíÀfCœ*sh«Þ	’ÁD†ÈPŒCªfpQ‰æ˜QeØ2Ï¢¶ŠDfö”	ÒSK×%v¿0‡s8æ0-£ÂsË¨HÂð2s „.0”Sí%sh­ˆÊ™1‡3¨À‚XS¯Ô&¤aç,HÃwWƒå¼IÃàÞ½²·ÌºB‰¬LžÏGÖmY§Üx¥-€¥ˆÚ)iYÎÒà¢ÃGE¥ÒTi‰¼’˜¡Hq,j<Ú¯á‡ýøñýsy4øãuñéýÇJÝ„~š^q?Þ€—ä›¡¹¿ÝÀ"šy]¼ðk™@õj6Ð4‚äø5Uvù²²Kž
A/#¡äâÉ±@Àùæ’,µ¦û²Sm±­ÊZÚ®9€5‡Wgq¨Ò˜³†ÖîéÓÚVS¦ž°Øˆ<Ó>a=A7G4˜¸½ø‰->î¡ÿðç¿ØùŒá3]oì‰³‚/²c6sC²C²ï²fÂÞkÀbx‚ÜK\Â:À¹B ¥Æ*Ø›`‚¡T“È¨±Œ:ÏŒð
;=²Ž"á¥0ˆ¡€SZj…7Ø­+õp!\&˜®É®`ò!à	4ïJÆ¹ÀÙ©$ê‚ü(É£R|ò”€4-,ô;£[*J	2ƒõ6qƒÀ{Ó<@š‡µ$¢õxÆãr	¼×XÇ}™š»DF*Rí;„ö	ÄO¬Ay½ÓJ¸ñþÀ7pP(Pø½Šä3ÅuÎFÑÀ+o9¡g*q¿ÎÄ€õbu*¦€ÌgZb…Ú`/|ÉŽbbhä^·3³8„k0?}fÑÀ¯n7fÑ|ÂûOþyzÆ†¹$™¿KCÂ’wäwiJhüRq²(’9ŽØ:‰R®B¼òŠa$ÓQCÀš+‘ž(#=v.¬Í4~þV€¯ŽíÅšr¾üT‰…ŠŒ1’Ù[ødJhý»œ3úUÃ4	¿7èonT8™¼ßÇ7* möyÚ	šP…s±´å¼ÈP„ £qV+N¤0Æq!‰á©r´À&´ÜZa%ÅÈ9Ë¨ÔÄIÃ-õ]C{þsbÉaLW[
0ÑKé9’‚ÏGðfÍÃ'°³pFØÅ>pO8"pÃ<ÖµIÂÎnpuIB[Ö¶ìÛùîôíõœäïÒ†°àðøXÚ"VËCˆÄ*‹ÀòŽ+%¹œS¯$\('5G!F‘¥QQ*‘ŠØGŽ/„ =B°T¬œi-ÖäµAˆ.åYdœa›· DQn4^=Bp&Î»ØD	Ô¡ìçM	êØM	ÎÆnÐÐao¹”ÏÓÈPŸKì×ÄpÓ”NàkôÅ’Qî:ë8Â#eb2#ØÈ47’¯¦œo5aDh)°µÒÇ<QRÛh		Nak‹ST8ÒíÂ0R”\QBüf>þ_ï‹üüÓ¯7•¢è–©VÃ´âH–´ ³ú0œq) ¯0óc>U’¨‚Ó%\O(gýÃ/eñÐÝÎwÓ×¸"$=—»ßÊ°©ì8Å\Väâ&ø	Ý¸_SžzšÏY.œT$Ã$r%ÏPš.…ü?dz>‚ÀSÍöy¼¿éT»nKõú|~ñ
ˆE1­N2Ø{zgD8j¬ÍÎu"8ij‡¸¿ÙˆÂóò$§úèýMîhÒiËL9,¢öŒ;qˆûÿN(‘kÁŸµþÇ_?üòg2†…NúZìåx¡ý:ç„ øšµ›h[Ò@ŒÇœ	G½Ç†˜@¸•ÊP)55)€Xé@G·É •œ‚:nAW·¯/ƒyAÐ6t–Ç{9ŽPr½æ¬¡ª\å„RŒT²æ?A(ÅL“\M½‚	Øv­UŸ<-mlÆ¯±6»C¨jW¸B“@Ù:k‰¥V ³æŒ;Ag-Eöp6ëVN¯žÐé¢2i;q{Œžñ¨¡WpÄ3&-&€ÇLÁÜ¦dÃÄ‚f%óàÛ#®#QY‹hLü‚ÊSÃo‡äiRxö¢ÖášÒQ&OÓS[9ï~GR°îiz;¤ÅB‡§É»kµÛ×fgHˆ54¥o…d’Uùp$×’I­@rÍÉw‹8’]ßïÐPŽÉað?ËÂþûÃÿ]Š·ìÁ¶mT3ã•‹22çfÎù`
’à@II™>âqôÖP‹çL9Ã×¥ý[_‚%^ýÂ-÷7'¥0OMÎjÙäLñ,Zj	¹PD£%tÖ£ù°8"‘%,ŸSÁ–ëjTq§‚Ñ;¥; áY+D›ž§ðDl·{2_Ÿ’ìlÝªIÁJ
Ã3ÂŠH¬U”X‰‰öJQK<ÂKï¡ ;‘°GÐ¡„óÌE¾Îëø;—3c£^66
º:Ï&×/‰ÉIç“tMU~²Í'Ù¹Ý¬v–²³’¬‡2;"EfàÎ’ 3áíÉŠyJ´uAZ8-<¼Ï&Å	wÛC(µÆqÀW¡iTQætH,Ô` Z‘šuI$ÏM‚60Ñå4ÅDÕ†!Nµd‹)žˆ¤œây·J¢„Â¸†ÃÃD|n7œ³øÜ©ë¡LD˜4ÍÐ%>fnÙ“Å©Uñ9xÃÏ¦,Ã°qî~¼Ú^	à”Ñ:æ“eÞjå¸12h³)å¨¶\Š”C'Xg,&ÐÁÉhí~]îþt¿ÅÕýVò0½š’õÏ7/oeŒ»-¾šÞ8T¹éÍ°kl/”ÕÛ=I‰_8Ie•i¾2öß'ið¯¯ÞÒÀ¸qÜ«f…rÔíß¼žzÊÃ¯ÅÃm÷i‚SöÿËS
ûIûäï}ß­¤×À¥l+“ 8º‡ü4Æ>Õ¬Ë,yP¸tìÎ…˜çÁ4yØçŠñ¹ý\q½6‹Þ?Êþlê×	„tÃtòópëYv{ìæ§myÖSJ)¿[»—¯Wƒ´òki-±|[˜FW?åæÆ#!Ž*ä1PˆKÂ¨œ³ïL$†	Á4àÍ&
ëñTPOÌÓŽš‚–“üld©˜9•„/¤‹Ã8»Œë‹÷e{öÕ#aÚ÷XMØjz`]ÉjI›Ö¬æ¬§„d»TT{ùJµcô4qL¶‰,¢ŒHKCËï%T2˜²Ú¤Ò)Þx¬5Âs*œ‹ yˆ<Akëº_pì ÑËg—Ãr)ýÉ£vÇ$¹YO_¼/²Å‚`ÇÃ±s¨í¥š†/×‚°Z‚¦5«9ëiAXóú^/ß¦6 L¶aåcB©&Iµ¼·ž…“¹àUTÖ§‹žX‚¹"DcÁdà~W"Fµ4Ì	â8²Ìá,ã:âZ÷à^×>š»^•ºâ`)¾ÒÒ$Œ0Åýøë{ºCx
T…»î(yî“6½ ’$éÕt–ÿw*óïÓ_•Àè~é&3Rêÿ«fïŽÊçx=\9sol·@Êëâ]¿0~ŠZ£Áä&R—é|¯§R"ýÒOHp-¯àŠ»¦—0#îCçùƒ;|¯éIÒ²rr†VO…>««›ì¬£CãÌlIrs‚kEébÀ-&Óù"#˜&Á›Ži…;Õ¦o-!ø¯ï>]o€ÅªNL3XLOk#Ö_›ñ0ÍwàérR|5˜v'ïå¹×Í°IluPÕô4³S4IÉöã¿»
£sCxö‚Ò 0êh-Já9*Hä°˜ y4œÙ dRb¯‰qÚ{Ì…ÇL*Pc¢Ô­s¡¸ ô÷‹Òkxk‰ø2JSÁÈJ™¼X¥ó£ˆŽŒÓ'Ÿµ›ÉÆg‰¿œÞctDœÎšì=Ù¹÷³‹–ŸSÁ´uÎ	@l¸òXsMœóÞY‡]à!
É5F†`)e8DF¬
V"‚Z(îóëŠ\]ðûÜñ{vÊr‹{kÍ—ÒZaª5›wóÄL#šíå9ÅoØÛ­Uön½¿»ŠÞ“=êÖ5…Ö®˜Ýútyºuíi[ˆÎN…qæúwýR•'©}ï½-|’B½,â–`¯˜t”“Èˆâ¦Ô*ªvª“²Xà`°µŠ'Ü½¿sô¹•¸µ"rñø3ÐÇ—Ð[ÔÖ¾sÐûÀÚ÷wW~;U™¹à÷n:÷1ð{o%¬ÏGA?µ*Ôm©çm¹oEj´5DyÅƒt‚c”Yï×ç\P®L`ÞPA)fÔ:d¨çØ"æÌúY€?s€Ÿú‡-'èZ[îJkµäçŒ‰¤jéœ6SÏ[ªuuvð~0ÎšÖÀ®	ï»»‚Õ‚÷v¦«­ž ”E«å£Î@=¯[¼áÔÕó¶Ð1B–`Á‹\c†F;©Li)`{  VÚrL-CÏ5ŒÁÖ]Ðû{Ao‘[›J+ºäÝ]Þ/¡·n¦ž·V˜êìÌë‡ÁoNšztÿ^ð»Žz~0üÞ[Q§sRÏO«.ÓÐ|	Ã«HÚ,­ç¾À’€Nn<(Ð@fÁú˜ÔNÑµ#F`	’9á=s!rT9åì×@|…d)´/îàž;½î—PŒG	B7€ü? éã}ê¯ÀÍÐÜÝ»û^HG0d·?IP]|2å—r
¦÷ ­BßuSÖ0\=	áÔ¤Zß›¡Ÿ lùØ™oGÑ™‡ÏM_¡K:0B«…Õ€ª<WNÛ±3ÙW-¦®8ž‹Ùù¤¬H•Skb*<«áIµÅÃFèNÓmÂju¾Î>n¯9†VL):)]Þ1=¾¶jU—XaJVÖÜûÞ €k¹wk‘[;£âwÃ¼Êˆa˜´[Í1²H$ÅWSÎ•ç6RK´—;.™
±ÈS,bk@†_Pq×“_r``Æ("/ô	±˜ŸOg§ç{Þç/¯wH~qhÝò|’^(AëÚ‡sÀ¢–Ph[›/kNwŽXX'ëFc$$UW;îû@Hv‚Q²ëU«t´ÍºŽíÀîö>èOû·móÖR¹À(ñŽzM¬aVÅRÜ—ð–‰sHE4
œ{A’é
Z`{þ]­ÊŠäæÁðÝRÌ‡¡SóJžþj²Ï«}Õb¾ÃCÿä	Ñ))}»¨_[ìˆú­Î·õLwž¨ŸŸ¨¤~VëØõŸ;7AýçÞ;\umÔŸëÚ õŸ{·‡ú;¤ÑóoA[VpG1QS…yTHH-¹!N¤†#K%•1
‘ñÌZÉƒ—ð¦J€ˆõQd£Á —NroB?Í(ýôëû
ŸÝ Úô=`z?þEîü
—áÅ­Î‚7„Ÿ.5óc0ßhðë¢H£\uû®7†±«Ãæ?¤Gô‡j¬?»¨î£¬úNïdvDî»å}Ï<¦?ý4ÝÕÂtGçµìLK½dNÀŠ`~ógÕJ&r“‘¥µìˆ	©hÍÊþË‡÷_Iõª§™~žQýüû_ZÈøÿ}àl‚º1c[’ý×L«gé`ŽÃ;ÚÈpZ®³‡<¿éíÆuªöì‰†ÏrwÐ™2•¢k¶Ñão6Üoå ¿åÊ’¯Cú¶žÍT_wO8öø¦"¦VENcà$('0¦(O£R,PmqÑk­xˆ`9fÏ$„P‚0]—ÖôB8ŽN8jŸ_0­8UË„Cq$	ã"7ÁÛ”päÄ®áøÏ6€&ÖöÛŠ’­D˜m¡-F±åÐŒ6ƒæö°€çiFÙ™Ö€lrônž*­gRõÂ3VñÒþi†”‚y"ÅÔ§d& ®å™}«ˆÇ,J-•ÄÂxb™”ÁYe©õŠéu§žq|ž1=,¡¹‡%,1ˆ%Ã†ÄL '|ÉF5¤ÕÓ’“â§£öAÊV„¬)‰QŒVæÈ§-N—A1jÏvžc³w}mŠÁ³LÛ)Éb>ƒžÅH¥B:ã~·q™Z…l¶}€b­B2Åö£h´ÃQkŠ¤T¥”©ÎÑ@šiPÂ"É‚”ÞXá4CtmÝ~ñíŸp¯E4wÝÞc‘î{V,¥ˆC¸ÿ‡ÁðKFøà'èó§?UC½zZÁª*,›‡|=uÚL¯äê~|¢{ßK€ŸnCŠ‡0Å`Ø½éöW˜·{Ó‡>€^ÿ6^ñÜÙëÂƒÁ¨ƒX„o£a¸WSWŽ»4u9ˆ£#ùgÃû´Ì 7¸I—ôñ¦ øþò‡²ø˜®çºx7*à³ÁCyõ0ìVw‘î¦„	ÓŠ¦¿a¿Ž{£‰[ˆ°ïàêf÷<ó96¡™Ôˆìp%ð¡LP>Ïg„ f›ëýñ´1:Õ;ÒâaÍ«IdgU2fRœyþ“ôãÃ#<éþêïÞW”è?\u6S!I‰h©ø,6ÇñÕYÄÓœ-OyJUgòÏ)«ÿì!ö®àÔ­gÀs”…¤Š(d)÷ŒÈ ½=]ª€%¦Ü9ÄR4Á)ÑŠ3 Š(ÅàüÝçìÄgGL(%SeµyàH£y¡ o#àÔ-:œ
p~‡’JÔ0on>\Ö˜íÀeÍ)O	.söç –ôšµmÍ¦ O¹<85`%%s€Lå0ÓÆD°J™d²˜+5÷ÎM¥Uv]XÞ,G`95›óìØQKÕ×„Z/‚¥:7¼p,áiÑr~–`yúöQ²gœ¬)+ÛÀÉÚSžNæYž÷Ž“ßîzÃûÆG¾h}Nƒæ¥˜ A$‘è„¦ã(<Dz	ÑZGòBDiE´‘h¯Bð4R¹.åê¿~}ÿo'Áh½îÍíè!¤ÓiëhàÒað­Á3©‚À3U±j.ø1àÍ¤ö n»øë§OÖchkó\¥yŽ7SåŒä*gŠJ²¨›)­ù|1MóÓ˜Oög­Jñ²ƒZ6ÝjulÚT·š<²€Q[nlŒÉ„-ÏwZh‘G¾5ÿ5ûzÑ½µª½!Ï¯%B>PË§Tk bÓVZàs„B‚[©"Bt2AÌm¡ŽjÇ×U¼¾ ÏaÎÓeK%4”R, ÍöAÞ„<;œ¤µŠ<ß÷qª×0ñönÔà,l':Ãƒ°
½x¦­	‘â>p½¡28`Ó‚+N“O+Ìy=üF-3$r¹‘Rl„Æj½ Ð>ìm"×Þ¦^*Ã¨4OI>æPˆð\—ŽEjÍÒv<ýçôÍeÉ¦æ²º°³³­¬&ìœ¹¡ì;²)ÜÌ0¸íÊ"2¦ò»`¬3B€„2Ü¡T.ÁH_Œ…‹š€„[§Â¡Fd]ŒÅ§Û0ÍÎ4ËÕ”Žf&ëS·¤ïzÏ¬um$´ûV-AÊhõ˜cÛë–·³È‡;ÓŸÌ0ºíB‹{xÁ¯ž&::¢ÔÎè@Óá¢IMS	4)’ëÜÒAegº‘ö Ö\r'oxP’²zø2Éóãg"³s7èuûÝ^o°jøÆ7isR€ÚÒ¦Ž°ßóŒi²Öç:­ ‡Ä8÷ð–•½­‘†Y‡M‹Õ.Ö"7£ñä£å{};aj9¹ÃbÍŠ&):–n`ñj—‚`ØcBþÄôÛò	[ yŠ42-ƒ¢ ’8FF#9EÞSg"ŒÒÅ©‰‰
Øèˆ£òøûÍ¨@Iª‚°øq4ˆ†02’èXvª}´‡´KVè5(¯q*uú(_[ÀìˆñíÍ·áÌtÁ÷m9	ö‡ï9É2ð}Åœ6¾ãgÚ–™ä0WÂÎSˆ.¹•ŠÞ£(œ`ÊÌV¹d\6Ñ!cµÄ¦ÔLÄ_ú†&âåRÀkMÄ'‡ßE|'	=¯ÐTÞqRç[·_2?¯Ðß¥Ö5k	ÙkŠ–‘½­ù¶#{í™.ÈÞ2²O¶ôpëå³ŒËo9¿BK Ç±tª¨…3ÿ[
¿Ny–´sVxa¨’Þ0£h®Iñ§Ê	lBé9G”À/&¶.•ã¯Æ³RÏ±ÏùŠž‰ÃŒ¬§;:-¨mç˜,E5bB](1Œsk#N÷ÚÅÔLS?—J5èŸ>¾³µ`ÁÜ_3å^ëfäÂ1vˆ½‹-¦Ðƒ(%y:ñ¥{®"h'AÂó‰ŽB1ˆ	YðH`eRˆ
bás‡–¢ÞS²˜¥ôw„‘›0%¹¹bfðp±Ø.ÌUÓ`¼H8a“çÁmÃ…ƒÊÕñà`¶Ešrvr/æ
!‹ˆGž ƒ°÷Êi‰ gU°Øâˆ½eÁÎ6jm¾—Ô5"
¬É²¶€‹¼ hg[gpp±#ÊŽÈ•{D‚“5‘å»}¶•]µ^¢ÌÖ-K»!AÿEtÂ7%>–Q_´JU>YD.®‡Ž_Ã¾¹¾éŽˆ±^QùBßúØoH`ùˆ@}t’
­#‹Î¢è¼£ÃœÆÂë¼¦Šq¿*deð^J¬´ÔŠHdÜºx…·ïßU²V Ÿ$õßïC¿x;èL·÷»!‰ÉmHÜ,×váL¿°¡§%£ÁäM„/g#·]w›JŒÎ„«¿êöãÜ`èMß…â¡;º­Nª¯¡x×ïŽº V¿†?”ÅT6MÄlùú*Í³UgWa~ºÙû ª+Ýø¼yOûvl¯a-Þ$‹óóu¼™l­Õ–+ÆAŸcjÉrÿ'+±ˆÌ¥‹QRHLçsY*xî<Ã~ÕwjëvjoÚëÉ«‘ƒL?~|_ktPT‚«ë ÜLAÙaQv*¬¸Òuª¿1*¡Ñ´vÞWi™Û\ú´ù›æÓ[Ø)C¯Û[…)ä	œfH?ï‡éÝ° EÆ¾îu­ï]—ƒkòê‡W‚ÙîhÓYÕ\ë_Þ¿ûéíg¸–kž×ñ~/¶ñ©7Êœk¡ËnÎzÓk’×» ïïî³—f8êùW¿üíŸŸÿúãÇ¿nÛ¥QÅÓ5a¶<~NnîJZïrÕ‘HÒÕaô‚‘I`d:ˆÈ§Œr+€ÆÉÀ<2ÜqIB‡8¶ŠhlF²˜Âï­ÅÒî„¢ÔsGìº£§uh:”jF¸VÁæíšðÒJ®Vd‰T¬j>ïÃ8Sx^™…O’L>yÈØ¨¿º³;MÞAÈ9­Q‚3ž)	¸ ów‰ÎÁÆÕdyã‚rþG/°×Žá|t6J;ÂàÍ&0Œ´tÄ9Ë‘ÑÔÃkà<ual`Áâà"WHY$‰EÎ·®&ÆˆÎS-)cs±(é#¡Ùo[òUUbâ„2oh¦\b$ênÁG ÙÛÓº=SÆV=|&;âsÎ2ìŠÏ1$ëáóÀu;p•iëlÍ-À›¸Ùr«5ˆ¯1ãQÆOî‰:
Ü—/“çÃ=“Ï=–÷¯DäŽZÉ¼©“"ïŒæ	ìµsÄÄ§–Q'­’FÁh8
,ð5Ò rPÊâ:¤ŸŒ”£âÃ\ï÷ ¤Æ°0›âC K•?pq”Eæ3€÷¦ý'y„àI”…í™ÃW½Ç"šrô:ñcî£òª7Ñ¤¤Þ¯«Ã`è"rªRši{¥‰aôx}uõé&œ=²…‚›ÕÕ¤ÝO{89S^(Û9-»9îì®Ó¶y:GÞ€ïºˆï’1¥Vã;XR½äX„0Ja´p
3Ò„ÃEN6igãö¬î¯¦ð>=JžæÿNy¿§Õ5›ô{Å<wqv×Éµª¥’.n3|Ö“<k'ÉÃê–&ÛÂAÚše?÷ÔÂ™¼Ûté½ªñø[grõù\dU¿'˜Ïù÷ïÿï_;AßLF2×!ýú£z¬iÏëÆ¹Ïeê‹3gšëðËÛ·Ÿa4ì—¹àKýÜZæŒwÎT«ñ÷ÎQ×ôÎ|åÈ»?þ±Î²Î÷xû¯ýøÓ»Ï¸ÉlÏ}¯uýÞÕþë_°é^˜Éju^af«Ù?ó!¯ëOðnýsÖ.[-©hÌÿ§Ú–äY?›©C €›
Ã÷¥…›iLÓ7½Ç²û"Øþ˜ªuš(e8#ÌRé9†mPˆ@—!Æ*Œ±5Êyâ}Œ–†h½Žyë#WëŒ¤Ï
ÇäžoF¦²›>)%O!ó“PøMuæµ›©°\º›ò±ÕðcüÄ4Z=Ø?”Eç—ækxZÿ«Ì(%kÝx9Uá§âï?¦J=ðýLñ+>†!<Ž’Ý6©X0^u£A1%: ŠLöGz†ÆÆ£³œ’ÖÅsµ."9BtÑ}—RL$‘óI à#Jh†Uuîå¸è^Ç×½¸D53ü-<Âƒh,O³šær0lÇ7.Ô( ::éPjÐo«±h"ÈËgœ+)¥ršg¤&€V&HâlTí½æÁ¯¡"â@àûÈWn=4Á³OÖ¶Ñè±HÿFélR08³àhÁØ6YÄ"Žû.µ4½.Œ<9,„µ¾ñ¶:‰Üóö¤„¿XþœÓ5ùˆ–‹ö6*è¼¯Ãa|/÷^žp«QŽï´$ÿ®Qß“þX¢Úe+^>Í}‹ã¦òn°ƒ£ÂN.rÒ9‰‘C
C‹Qä·.FE¥ð–jˆÃ
ƒP“BF™€WŽ	´.•åÏ&þ¦í¯Ÿ~}¿tZ°À˜WkÀ»uÕ•'Mt"6]A5•-Š;L•  ç©.fLk)¶{øM6á…æ_ÐIN)­Â6y~‡á¸0Ñ¡èmCy
œæ”8#’GåUÒXB5£>
+)ñXÑ(°˜G`‰ÂQbUyK%WØr¦h¯z<ýåçŸZå‰OtpÒøõÌÕ«ªð\Sv˜N 5	×A¬fšU’Þc´o}YÊY6oX.Eü
¦Îh%ÉÈ8Yº[<!JžÈ~-
OðTöIq”Û²8]ì6I½ö»Õ†=Æ;©“^zJ"q rR—–GGµw)CdH¸ˆ)°dá…æ†b¡QX!`Õ„†Ö%lxÿ~"=-Þ÷ Ó—ÁëeºLn‹äXÓbLrª%O×î"ÔOE¨7q¾©áùHõêj×}ÿ8ºôigK³Ó‘þÉ½£ø‡­sJÒ?rƒ‹h½Ž& ¨‰š¬Ú“ H”°o¥×F{¢@Á§\‹€e4hôÿX½e+ç‘O(0yÑ¦‘[Ž‹w£âÎ<6\ËÇ½Â$‡Q‹aRhGêï¾2)ß÷B%5'	€ºýâ«vc ß†§ÙfdB4çK
å yˆRóøÁ <Ù^öx²y/rl¬„ÀÄ'jé(á³Î]•š«©„ä³Èk¸â|!è´Ð‚‚=ÒŽ(­©¥†J‡RÃ (K¥Bàîµ3š*Ël4†¹.…å?>üZLî§’6ÕÖ™äK"k"Ì¦«²©BQö+¨îÍÍx®»ƒ71Àkf:é±U‚T[ye´· (¬œ/Ë¥ÂéÕY,5ÃK6òmÞ„³<ÌçvS‡wªQC*-=%o,vVÝðÎ¥˜h&cž.e“¬Yñ¶¶)Nž<Né<
‹hi4\úÀƒË©r4Fø'ÕXåLKÌ¥Sœg	e‚˜2XøoßZ"@;iÚKlª–$¹¿ïÍÂ]¯†ÝÑ(ôkJóUÙA.k¦µ`K%Wt*õ¼P™>ét+G =í¿ËQÔñéo(ÉžâaÎ£ãÖÔ‚t­T¥pRAŠVË@½—˜qeƒ²”o½ ÀÜ´Æð]7ZÎ=Þi'‰”Æ!‰w™u,îÃl)R8áT<”Åâ"l”±Ó*VwDäl]Ÿ\–¦CìGln”ŽŠ¾ñkldãR€ÿ‚
‰…È‰Ó›m[.ŠÃ³	ñ¯» »û!ÒÄïhz‘‡€ÓÉNÍçÔ™áÍ ãb6ß]þ m¹ŸÆ»“Ñœ0 ´ð?©ÄA±ôÞ:n(ÑnsLxêÆPpTn›R„I¹6Ž6M
ˆ]à?‰Åî·‰~<Y³Qb­Ý²oÒ³¬Ì•džë5îöaš¦ª2˜RÉ<öBq3†}Ôëö÷­x×´¢ü(	 ¹XhP©TºiÞÛ>¥$Gé†ÝváºÇçºL‘\ÞAD<ÌsÐøî´)SÂ‡nx8-49Í¨ëK0ô%ú¤‚¡wIÕ—¬š>ØT^r´]F¾%ï?­É#µ0åÒøKÇË•@èTdmcìB‹úŒ°4Ævâ ?j|À‚®5žÉHQóÅ9žŒœJçB:=z‡­R	À3ãyæ1¶N3ÍmÀ<º€6®á~†P|÷3¶[ü³ß­¸ZJ×÷	®¤øÜl¦	t&ÈSÄ4æÓ³Á_ý2Þ¿Üv(Ò^_Mk_ØÇâ§Ûñ}·Jì÷8âí>ËÅÜŒ¹žØ7áºFo`á“ŸÓýíã›ê	¿I{]-™é¡Œ\>”yòJY"ŠœS‚–Ne8B®¥X ±ÍéyvÒNêLöPs™_>¼ÿJþ8	>ß\¨–·l–UVÇQFãÂ›í·œØšeØ™ø¡ÚÄÏú±{óêù‚¶œ^ùö¯9öêOIaù÷f“Ø®¦ØÔèù]_sª–æœ®v*Ï“*åX†ëP¹é›˜ùÚ¿²“nã:ý¹›ßÁƒhV>¨zÒ[.#Šˆ2¬– NS¦uÅFEÁ˜±[‰J™ß¸ Ôy/ác¬ñ:?¡ÿ4_ÍóySwöVZøÛAáÍ\/Á?þøvš	nÛåëê+ÐUvÖ‡ÁðËDŒ@ü:ýK^_Á¿´R,£Û0é/È7ÿµßJ`IÓ U°ÉÄð.áÜäA®ç¹„1¾:[+¡É° È•’¶\-Év1žÎ´hg²‰jˆïÿ‡¾=¨º~ïë…†*ûÒmîîôIxMOþ»¯ýWp±°%Üµ+Ë?ÁmQšé!ºb´?Ýîþ´Ãƒò¦;?æuÆn4“BÿmWóR€í"à	ÔIOD{¹áÂR»' ¨¬ÔmÚjKs÷h¾¤²m)k´vw£éøú9<Öõ$½ñÖ†€´“œÇ@Å–a"¡˜‚Ð'œjà+¢v^³ã‡2Q‰^—°¦Ê ýÄÉ'??ÝîÔ§¿n†šÑpÒTù­Ó/3òõÝò¾gS(Àÿ¹úXUÎMºWI^ØŒfX‰rØ—¿Wqòô˜7
séVþäß¿TáQÅ–Îå0Õl±â/Ýš+`ÍæëT»¨3Ù?59:=%ŽÞÈ•sº(+VbwÐ¢æ9ÜM_ù ¶ÜÕ¢`i··[Iû¬á ·åð[fK?èf¶¼ÍnØ™-¿¾d¶¼3¹³ß3f_e¹]©š5Üh^›ª_ic=ï«MîB’½qð*«Ñ‹-{=ûêúÛ]o³Ê·r³7ÛëÍùÁ‚È‰>Ù|	™ª¢è¼\¸ÝõÆwr~cÔËÀ´¦Äad$· 4¦Z L*ÊƒÜƒÒH”±**i•q–†(ôam9Ðif §àùÛ]Ï+®RºUÓ—ô">1•E6±‚K¼.~ÿf†€¯¯‹_4ƒÿî^÷]S)”ŸÌ]·wš|ƒåòÂô’òH…F±ˆRnMF·b^˜Æ¾˜f5‚-‹»ƒ˜Ü‹Â›é+{<eK9ï4šYÄ£Äp!´å–!Ÿ
:«¨ñG¢K$a‰Œ3ˆX¡¬e’ÕP¶fòé€ªÖlÊU´²t9±ÂXÓ…êóLEkqÛ]„ß¾„Ÿ5s-ªY‹i/JÖÍ8“šÏ®¥ub>¸.-_\œß)—åEk‰’ßÍãˆHI(Š4PÊ#ùóN"m8àvAÐhŽ8%ÈcÞN5{m‚2ëNçWÑ=> =Íy¢PÄs¡öRnP& Ï\rP…¶æxZ½ï.H´7$R5Ó=/"ÑÒsÚm–úsPôt1­cÑÓÈuÁhi}~h¤:/–­%8ø®9¥úFcÅ¹3‚GÏ‘TwŽ¢À± †*2DC[ÉS>]„r6š ×e\…D•uæp ”¦;wü‘”-«B„5oÂ„’‚¥­vŸ}¬kZŸçG´Ül?™\HºŽÖ!'Zmž¤µõ˜<ì>î4ô©bXúh»‡õ†UXéd=w	dqúÕÞÖ4ºj´Ÿ£dê?~"%•Q:@’*G8æX#å)b4<gSA+N…WƒFÁ‘J¾Z"jàgu¨q@ ­æ;w¥T¡ÅS¦QŠ¯~PŽÐÖŒŽ/÷Ú@÷¦½Ñšn{‹ :÷Œö‚ £÷êt%Õ…´¡Õ¨u1tnM¾/¤ÛŠ4“åÚjú¡c¡lÑÊÝ¡k"î-MåC%ØyÎ\¤"r+Ë”Ðˆ)íÒ™~@!FåšaÏ4’Zç©¶Ö€Ú°.™‘3ý~*mç\(SÚÇ8z0ÃÁg~œtøÛà¡ø³)‹WüÛŸ˜8ˆûÝ´&áÕ¤õ“§øu‘*Ñ]¥Æó¹Êo<»•¿úñÃ»ž£…fŽç ãýÕôŠGƒÂô‹¡)Giž»ôg³ÞBÛt7Å+Øs#üì›×W·0Rç6ôž?*ÒƒÊ u{½ÂÁƒ†a_.,tàò¬­|ÛaÇ]ÿ°w×ôjÛMqq}:<ì”ó>q}õ‘Pˆ¬„D…]²j[‰ÍÛ5	WŒ£í¸8÷bt&;¼ó¼·kDžOCÒÚ¯Ž:ª¾ú0¶Ð¡øyP¥wIŸ¼ûÏ_ªŸïç8Ÿ´$ÛÖoW4•H5>•›»²-@ºA®­Á„¹±÷8t^àûÆ)vOØœ²²ÃÈ®9#aÿ0ÜoÅí†0QU:ÍŒPþí>ÜT¼¹áçsÞ¿ûé??üù—Ï"7$ù0aÚý›­°¨ÂÌs/e¾Ç‡¿ý‚ÅçÌ¸ô´ëDÜK[	€Üóì@íE“®¬…÷bÕ<Áoú¶ò*òOSþòç—Sj±}€ÎØ‡¯ÍGYµþbo­ešSnæ»Ãÿ˜ÎêûQäÏ_¾1ÖŒý%
º²áM4qàÆeN[àM!§Ýp\n»Ïá¾7.™çtøÚM7£¥½Íh,k°ª (ç«¶Ÿý0»éý}VÓ¡O|1§i
[ª×”ÔhK3ÚzG0ÊkÇ2Ûñœf¡×Ã¡þç~å´ï-ëh›ß¸ªÃ–÷Îßålüpÿ[wTæl§p_fmÑª]Îs¬úœ·=Žs/ò&ô“ÿfNËûÛÁhs7#¡¾}Ëhx›óþÜÞSr¶Úí=#™9ËlXþÆsÖæ¶$9·’xÊöV_Þ|Émgºƒœ¦_ËdfÎhÙ9ãõÂ7Pôs.òÎ`ŽtVÃ›®ô9ÒÂr\ÞvGËg+wÝp0
Y;mš³ÉïÆeæ UÃ<¬˜¶f—Ñ¸ŸÔyòô>goÜws´Ê»þû.l¢œv½Ü¥ž¶Ì[ëÿv/<2V5Â®Ì!$ÃQ©”Æ-K¨Èi?|N»dðæ<šòÖs–¦¼£*ÝË¾¹Ï$,å=æ9ûµåÉærôU¨œ†#¢
”™œ¦Árž`j—##R»Ò5
eÎK:Æ9“ŽïLö¦f˜,bœÚæ½T_Ù^¶Ðê[¾}¾‹kGœåÔª4Ñ”5´3µ¸nj-*Sî†6ÓiÍ²ßñ&¬Ó;˜ßk#M5HuU÷É0°ô,nŒJK/‰¥¸*epôš£(µ“,*¢Ü?`G•‡ev—õN+ù5-8Í±=h’ª{ZpŸŒ W¯Ò±õh03ÒOÌòÆR]v+S2èñÝT´Ê|5Ýž±@ö«±B‘ŒÍ½"ÙLOËÂ.P®…]e;çÍ×Uág„î½Ü›ûÉÙØ©¦¨¦¿ñª'»G;øt†ïÆÞÀº:µÖIà¹Ðåý»Ÿ>þ×ÇOþõçÏé½™g÷¹	öhù½5~ðÐº½2ã?™‚³[îÉž;aåŒšø‰DÊU¹Ì#ºB‰°¥µ
AH+©6ÎƒqD˜¹”˜#%5XÇ‹c'4O¢‚KÍ_Ç"Òy½Ÿäà¼ƒGPåoÿÒ­í‰ö\å(ÁÈD¶ÎåHŽ’ÀK'ƒ«y'ƒIÂèýg‡«EÃM	ÂêTððÝR"xŠ^¬3,éö ×{n¾¥m÷»`³Îí™€ê]Ó!^æ¦‡ðÙ„ í•½2Ž4A…6”—pl 3=¼3Yñ¼Cöéòm=+Ïi÷Dd67ucÌn\Úo[Û=m°S %~XyŠu¦¾V-ì™ì)§VˆƒÌùÄ¾Úx6Ï®æ<ß=šƒFHäœ1¬‰±œ*Ri1FSåC%|‰AšF, M–,œUÈ®u²¿Pš­”F‘\›Ka/(\¤4Žö9”æbò86©¡uÝ
¿/Rsl+Ê¹šLSËï‹Ý´oÙÎnö<gK¶¥£±›Á9þw5×p$ˆ !…fVcî÷ˆÁq<‹’¹€Z«¢Úq¤…ˆB˜à°Í5³,àÇ‰áT˜[—Þ,t®ÍÂà'FXøÂ¢W×Y%š¥|}aZBŸù:+D+%è¶j|/vÓ
Ì­]uå,9Ë®•ZöË[X}cÌ‹G»ÜOòÐ(ó2¶Ã"³¬ýx©,ÖÒ<ÙâmÌ½0ÏÎ{VdiO4sâa[…)"ÞBUT^SÁuÔq¦"A.pŽŒ¤É"á”
DLØr^?½Ûbz³•äõÝ›.H«âéÆë‰òå!SèÜD]¸ÝÂ;~s[‰ú“ð*×Ê‹L—ŽáaáçösÆëÃ/î¼‹½ýÄD<U¸nö¯ø¼LŸÍ5ËTƒsêžŽS7ëaÓ–ŸïÃQ¥ç‘ºíÓú/þú÷O'Ÿùg”xÖ(@-'Øì<ò[7Z¿<OgÎÑ÷ã³/Kn8QÔ ÁE&Pì5E,
O-Æ:bE)’ÌVŸ;Œc²A§i.¹ç]€¼	§êy¶e®äÒq9GÍ×Qã˜n­™^È/VæcC9ÙÑ±î¸P~,#ñ”çVü~‰Ñ;.û9G£Ÿ0ø·nÓ]áLÇ¶;ÓµEföê#)ó„JÆDVï@‹ :"PA‹G6HøÄ[eƒ3ØB…¥DPÍ¼¾Àd`gØaÀóí¶…ü/rÞœ0ôg{Ê¡)Ód©°¯TÕm¾ „ÄJ×õ˜[ÚyeþÄ Fœ¶£ÍÏñ™¹íD|/	ó-*ó´Ñ“Äß¦Š/·Ç[Ú/$¦9e-ÿeÚ™mK±Ô|ÛJÜƒ8†í^Åä·Ì¾š•ê\ÓS'ºu1Óy}êÃ3›¥çôéÝ_þò™m½ù48›[~e=¼­Ù	³·˜nˆ:"m;˜ñ†»TÊ
‹žEk	p+¸’Z	m¤#É0bg(³{…âÄ*¬	)Öõº·Ä l›<'‚å2q#ÐEŠâF	¸uâv1Þ›º1Iv;k?6u;¢ýfÆ²ò¬Ëœ,;_Þ%kàÔ ËnÎ³®lgÉ	«ªÛ~ž…í%'á<+»×ÚˆTÝ•¥¥û9’AKŠÑ8Rb’ÒÊ`°’b€±qŒ˜ã¨)µJ¦€N¹r;*dØhP{Š¸¨]!ÕŸ^ašÒ"Ñ®~>øÂ>Îç¥.«üW¦ŠY¢l§åüHðŠ«ÍjŽ+$Ø¢ï#’”m¯m·¼Ý.V´£bT«ÇÄ2_>ü3PÏß¦¶?G=Xëö`x;EKZ¦IìHæ­š¶¡§"ìHï^M5ê¼cygë1óûàa³i¤',¢à•TE¸2¸— Ê@¥‹F‹Bt<½üT¦ªÃNQ‡™†Õ…‰ÕgbÙq³cÊ›°fB-œnjÎ•jƒ‰]ÌbGçbz.–£T‰”}ÿÖ²C:UÄ2÷}Z×êÚÇNÆÈÕ8—Yk\íü"“[äjqÔ$ìXà³é¥RT¯Ž¨ÉÓLJmÖD¯%6,†c"PŒ´UR·œ±s%ÊRàkJÒ5í—¡¹VezÅìöuJ¼+¯•ÀK\oœJ¯%Â–žœñ±õo°sfEÛN†}MÊƒ½XTa*ÐJö%…Z.°hÍ
ls…q–oùÓêL¶Bg²	š‘®÷[	Ø9™·Ö-ÍÎÇŒ’ÕÍD²x=ÛdÏÊ:cÜ\Ù¶füø}©‹hÎt‡ƒ:,*ÕÛœ¤a¨“è#CU†¸‡ò_:ß0îzwÝ>ßw¿Ùq¬Ý³;¨Ýþ«Ýg`“0«ÝmÔh9jq½{xÛu·PÕ©ÚGzÆ©Û¯–Z´Ëð‚/V%°¨Ü¾>èŽ9Lz_:05¥,ôZ=•Ûe·¢ù”Å;…%L:EÓ#"Œ¢2F¦©ªh,tÐÎY'è3’3é#F;³.]ý_HŠê®f	æN2Êã2eRKw>p_6Q˜PÌ-ÏjëÓš9®¯~„vƒ{`ÅUÚ¶ÛêzÆý~úc.í=<ßÂÎFI–ªªåÕ|ËÉ€¯‹rPôð™); OÆ’Qe0y®`{5)Ž<»·”ÿKyŸêåîZ•À­îÍÍx®»ƒ7Ó‰×^X*¢Å|z•ÉG­fVë¥FN¸^ÈÏ²böf±SmÖÎt›Ö%Uó<jŽ^íÎ¡>V9ª‹?÷¿‚äë§<9o~2eØ«‰*=§¥åØ™HQÖÀÓ~öl6±œµ2fÛ 9jÃà;Q¨é"×á6~’,¾]4š^H»œ¶\q{ƒ®ÀLÙ0û3¤­Îåf»&mŸàÈÐc*Q •ë:(³Za¡A½çH¡ˆ.@¥%D Ÿ’ÉDA”…>Ê§Ã× çE*•êœÃtß˜Ü¹Iõv¶fj<Å·IŸ²èg×ç…Ã˜$¬AF•3L^˜ö¤@K«\Ð]Ÿ/ÆÐT}13»R$Ã-f…¾`V»˜ìSÕÃ¬ç¤ézšBËåôÑ@°RQ¬Ùœl´Å¢.ÏÒ½Ú€Æçyî4.¯gõI’î ²?5lûñÝß?£kÜ´ãMruGÛûÒÍ'‹~zÿ¿Þý¼òð ¿ëð>‘³Ý<§×ô¦y½§'x™÷9k]û0Ïñ¸ÞfynÿÏÂóÆ¹îà{e¸íÒYµxøù5¿ÐPgÜïŽj”0š¶ß/NE{‡#3šÖðÕ%j¼ªLöÊ†ßÎ~n,ñøXN óMzøÛ'®¶ÈªÊÜÜ}õ¥=5Yœª	­/ËnùÂ(–›ÒÁN³Çz§xÑqž,^:â@£tAHj­´Ö§Ìãè%õÞªà0'ÑlÄBˆ§B±u…
~½^ñq|ŸÜ~¬îhýMá@Qîõ¼~[ÏŠÖ¿ïöÇßö~‚—ŠÂÃV»{úqù&•¢|ºÅ¶ÄäúfOmµ[!R)½Ý7}$˜\Íä‰&‹É}¡ý|à¡Ðl»GUuEjCtª­P#ï99 ¿¼ÏÝãÿ(«mOª.c¬y5wæ¹-qØt¼Õ½¿ënBŽÁ&¼h³4Þ¿»÷uŽ+&‹]Þî&yGÃfñFèšÌž,©é:a‘¦y¢bÔ1cœ1\ÎlPX	ê™„I‹C:P¢Ä† "pÂÝº ðOƒA¯2Í; £ ø ÿx7—¯‹;B¤:ííÂfï=&7Ûz’ Ûàû1-PªŸk¦~¯“ò¹ÓÃÐbüÂ”>]TÕì§ã__ý:÷W:Õ¨$û Â‹8»Ñ8Yb¼™¢wGUm]Ô¦Mïñßðe:{(â¸×{¼2ãÑ 2|xW¹å¼†+ª¢ÏG·á±ðƒ¢?ý.Â»p³ÓC;Æ®«ŽeºýÉN[¼‚™b÷[uþ1îƒˆè=&óÐt…®‹OÕÉËäÂ“«/¬N÷&•NÓ¤[ŸŽnúW÷ƒŒÞþX” C»#Ý“ƒ–¡×½ëöÓ:¥¹’Ëp…fÃðµànáLc{×-Ó†»¾z7qeñ“õOÅ~žºâó«<Yþ0L·V” #P‡»îjz44µÁÜwûµvÝtG·c[A§½âÍô%ÛàÿÂÈ¢ÿFL¬ƒII—pä6_È­H¡s†Á.ª“^âNõúÖŒù:÷à¥»Ü&‰¨ë¿RéˆpÛbtªF›Át•Ä]?VNhÅº1wÀçJ%èùiM—˜^ìã¼¥ÑCF¾i£W~ÿ—~z÷þc2‘mytVu¢[£ÅVuR:±&—Ç·Íz1c¹f­žÇÆ[ã²Võ¡úð}Ä6sÏ}å`³éš´šX·´+GÞýñss_½ý×¿~üé]Æšü{ÛóÙÁUfKTÙ2ç¬€¬eº™{z×œpZ¥©ÅŽ|°Ôs ™Z;Ke ·BÆ(Îj…¨7–@sbeÎxG‘½ÎáüÎ']&œ”¬®º„±Äh‰p¢8Y8aåHl/Ë±DÅêzYŸq¦uÊ©HMËÌåÌ‹AÛ÷ÜrzžÜ37jí¡Î	Ï6Ú¸/Í<!ZÃM÷e;\3Ïœ÷‰îÕl¾À\wÍ<|\Ícw™‡˜SV›{æùDos¸çèkýs„7«ï¿O×W|g"l_°ÌÍò4«×¦ëq`.M Þ„$ /,b!˜(I„JŽG£à$*ç"v–`ºŽÛâ§DƒÞ|pzjÛ O£ÛâGòó‡ÿŸ½wkrãFößù)±qäÈÆoüdYöhF²uÜò93O
€ê.‹·a‘jµ7ö»oUdÙdŠ—VkÜ3–ÔM‰K¡2™ÈKÚýáUÿÙ&ï*ð;½  ™Ü—|qÛ×K›{è·$ÀªÿÒ~Ö¿¿ôz?Êçé2 ÷ói¸ó|æçð]mN c'VÏa¦ËM`]~1šNÜ°ÿfÑ[z?:ÖÈ˜x˜˜Â—€í¡½¶z&œ›> ¢äÑ£«éÀØØOfŸzôé¿ð‘`½ŽÁsïý«wý/5 Ø?"#‚ß?[ƒñßÆ†x]|«^›ØÎ„@$æ¬^°HÆÛƒñR_€“TwCäiýì n¬öx?ðu°ctX²Á£ÏªÕ3xM#ì=[ÍÛ2ðl5o4nAÛæÀ¼\q¡¸Œ3;	>Fdz„ìk*v_æ¥˜oCx4p“–Þpb¹í} äLÍ j†Zp§p¢3&R“)DµRœ(®uŠR¡“”)	ßø£H¸Ì:÷ý$9ÿ2’SlKN‚w'"XP6$§L’lŽ	JÚ*²äwõ¯&;»Ï;µììšòº.·"5 m!zH¯Hÿå{"5ÂòsjÉÚCÿ×¬(•CÀÚÃ,@Y>[ÙMÄ*g@ËäD-ÖJƒôÔ©T`c9µÕR“dX%HHŠR"D§‰âû"“/ËØ¦Aª½ˆ²N/®÷ÔÞþ´wÅ}:ýl91¾Ÿ}0óþ«Ñ²X¸ùH§ž÷Û}¾—‚ƒ¿Yw>bXíIª"ÙV¹NL$¨'U!êNÜ/ì œ‚üJþR?†è¸âœ2isÕÇ§HIº¦ÿ]EI¥¶…÷î|C÷°s{BRq’aÉÇá+ú-„!™<w26‹ÌXÏ|Ö¹ý«_ûõò_¿¼úøêÝË÷ñ°ÆÌÇ¦daaž*v\è²-„­ØÙv»°9$%ÌÌ}œ/G®ãD'kqá¥_,Ë^±¦÷§]&öPFŸ§x§óe§{‡í^ëÃô?¿~xýß¿ÿúÛïïâ§ðe<"ÑÏ9>Èé„ŽÝù<k‰¸ØÏä2 …n x²(u¶ýöÃ=Ë†dÍciÏö‰LÆúˆ©„¤;HúWf•‹o.gkî;Ã”Šiˆ>J‹,JGùx`Æ³<€·Cï\Äz…˜u0Ò‰–[ª…´	acJT¢S¬µd,%KN­ ÔjAKM¢MŠ<ZÈÚ}Èö‡·oÞõ_½{ÿ¦ïÁ½ÁÆÇ¦"ge—g—•§mKÔ3ñ~A/•ÀÎ»É¼ùtš{„û]/öìU™ôfã;?ºO*8ön<o&ÀÜ38=ßmÍ¬çi–ølð›¢W~FÉ7wBýwSëFßõÍH…;£uÇ£ë¡ÁØWn8q‹‹*g¡G³pvö$*ðÕê odN¤Pþ¯=n4Œ‹­D’RNën4	E²ý®dãDÂá”Ç2úêäõû·>w×7saÒ°äcÑ6‘k×¥6 ?™_/ýÿèÿúa
oÔê¤«oCQëÎ¯.ìþ¾tþ›Îê¾ÆT-µ6ûÌ–ðŠ—oò!£þºšôAWi¾Ž“Ä¥gyÅÂç\ýQ/ô))´Â£žèoe2³°Å;ÿ>É¿t}4vœ{“SÛÚz…›ÕÀÝÒ6†nÜÕÞ>úCÏŒ6OXyáæ°¨æG”OìÇk7š•:W‡,ñ-ÏXª%±‡£ ‹­Ukî„Ëe?9øŒ·«?±N©M$ãK1u’YÄqjˆÐ&SBËÌ¦<U,ÑÄfˆHFMš¹„8+D¢÷Å·?ÁÏÇ?ù=ø¹¯h	RJlyq• zzG*m¯ëÛ„Åâí½O ô€
u€{w ¶çµ ÑCèì0Ð¹Ã¦uÞR»“Ú…V ²¶Mk?~=éãš±Úv§²ãÆ”k`7*ªâQoëåÊ_õ’íìì	ÒÛÆ8ºŠqïÍìÐ”"´ŽƒB<‰fTSiiŠYbç¥DR«1ÁºQ’§'Î•iA­ ),qš8guCˆç§| i@ w+íÏÚAïn—Ý·î³ù(ÁuŒ§ÀoÇ°Óå¢sí&ý›yî™q‰}×ÃùI »ê9›ŽF«üèW¹¿ZóaŽ•wB™ÖÇCö w¿èçYVc®=ñy÷„}zôP¹ÄÓü¬GKWøÀQø­WkÀ±Ÿ¬bá‹>Ó£bÚ¯r«‡´ë«E~÷´‚0Bë…g¤ðqÁ|7‚¦Hmža Üd?³$A­Y7v¿.ƒpò;&âøjú@/‰ö•Ÿ"'zw¾xûÈ>6Üã¸“¥u!—ÆcÏ0G%UtÆ ¦Œ¢ï"6iŸá`y©¥FÎ2ç”ršP+YbSËK}Ž²ÓºŒñŒ«L¤˜¤T0ƒv9‡@p>ÉË¿¤¼ÜHTUÊK¶§œB['&‰Ruy©pr
yùŸmu:¿Äì˜‘ý0Ýê+ŠÎÖ,ç=Óö™£§“EfJ#à¡^;híê„iÇk“$s’[“fDS‘¦IÆPJ²LfiŠ)1–&i£Ab"gg>ãÔr‹O²}Ø««†MaS^Œ\ŽKöšN³y>Y„«‰æÓO òB|—¿n)+j½-åØ0RŠ®Î/È®ª`U]„®§Ò«Ê¤nqã@”6ÌçÙúñ¤ßõvµ«&úÌO|ÝÖœQª,ÔÊ°-/§êa[RP²[¨žðM%rÆÙÆ%
qBm}¼Ë
›ƒòŒvÑþ¾)9¶g¹G0Ì	áÊÌï‹|¡ØÔ[>»üé•OÈ
½»[£r³µO­…Hwð¶ºq>ûè?Æ8­¨¼LÜ+Ü:¯>P¼Yœ1€ó™"™å:KXšH­4¢.aÜ%„ŸL”åŠa¦–V¦)’Ò°ŒJ“ˆ}	˜ŸÄÛãoø¾xÛ\˜”AcNXmˆ·Eºìá÷”µ'œ8NÀÅÆ)ï“tÇôŽ	xzH¹Sàû”{ GÖ‚0=&âX­—è&}¬”ñ')1Â)JIŠÆð;ÆR
—(I¬1)ÖÓ”"i”ÓXàT%RµÏ3n¯`ipkF^•y=üÇåÍ·7úÝe‹§ÁÒè¿üµ–vÔ·úÛ‡ï½€\LÍt4ì½Yx:óiº,/J‹åhzãë!®’Ä.Ç³2È6 ;¯R¤–<Ôø4«=Ÿ0¶J¤êÆ©³>]ªo¾Ag1×¹OÙêîq‹aÏ/¦_)î´Án» ©¬¯¼½w¬¡»<ýz;=ýúÏ¼QöÌò×ŸÕáMþ)n‹âFÙË·ri%˜J¾Sör¦8b›AØŠÆê9A°¯9*ZËà¬_¬—¬å»ñ-J¸Z¼¿ÞcE/<ÖÑ8ZóNi296ù·¬B¹× ´-fzÜËØó±)ñë%~¨+FøÁg8~¹„Wt²¨Œ­‡PxÿòÝqD|Ü©cÇWþúÅó²…;j¯òñ?Ç£w©kOTs>;¸ïÏÓûÓý2ëÚÄÎtü6ïÇý^œ¯ô¬”¹;tó~Öü¼@E¾˜‚†Ù­óß@¼ô9¨:ûfbA:ÿóÝÛ¿˜Ð†œèÑ‹Ý§³ãz_–v _S¯ª¾ÏF—7zö†’Åô=%‰TÉœÂ/õÈ¡îK¸ãÃ'cÃw$c³bì&ý•
ö­  ŽÚ|;Vu‹ÄÕ%mEÇÌÝUëîWpºG]7‡q@ÆëÚßÒÝâ7f‹ð½G³NéÝŠ0>¤Ã¯ï_ÿry	sƒÿG®->'¶×žýìÓÙâûïßN'W­ßþïûï¿ÿàëKŸK¢µùï¿½imãsJšSú@ß™‰Z>\qà{/PKq`ÿÎÛ‹Òæ±»~/|þšìª)Õ4± ­·4ñÚ$OwU®7‹j1kÌ¢iiâ§-m@»r-msPü[Ú,'1”|æ›†&7©ƒ~ÐÐâËx´pÅ¾ÅúaŸÆÄ_3æáy}rXöÛŒ Á°°Œm¬°©ÓLÂR_²Ó-Š5—™Ô˜:Ë"”¹2C®ØAºÿb¥ºêf/ÛìÛÿm9	Ö˜òwPÎ ¶4µ%ˆåò^‚Ø=)ù0ærËÕ€Å7|•ˆDƒÌ œ‚ŽIÖ¿E—¹{‹=úF‰CB4×¶Ðýb’lÜkÿNö«Woß¼þå|ávàI˜@"r¼ZãÚ`1#g¹ßça{ù¦ÁV˜¬Õ?üîQ6iG{[Åˆ½”éMÐZ':ÖQb‡ÔZár«}þGWpÌÝoÀ~§”ô±—bGÈzÁ8Omš¥˜¥	EFºŒ*-™É,'œBŠdÂ•vÈÉ—$Škª…òÁî­ó×”õÉ=YÏ÷ÔtFI²UÓ™`•z‰=Bdlr†{âï¸÷ydÒ^t÷‰ß!½cs¶FˆýhJu~X¯-`'âé³:˜eÏ…Z¬²ß,:xdÓÇn˜¡çPaL£ü˜ôP«’
˜wøˆÄK3_q!1óuna‘¥Z;B5è¢Ü€¼GŠ¤Œ[IA»‚4¦‡úß^¿n¡ÌH>qw.ûå}C§Òæ®ÐÌ‹àñéÛ|»Ð³bdýàëÒ2¨¬|ç´JôöK›_á+ÃÓñŒý….>ÁEˆø«•¶É'½r~2T—ÇÑ½¸¼dO&(.ÝdLnD²KD#½LªÃR"ÑAyþþÃÇÎ%:íZÆmc6m¹_vqˆvª±™evS?\zqµóç×÷Æ”CcžTâ]ó±è‚_j~ÜBc±Ò¸”,±àêî¾Ñg»{«î½ƒÔýç?aO#ëìé<ÄL½ÞŸÄÞ8îëäø1{÷Ðµo=kÐyË•‰Î'm—*m$$jn1nmð¥¥…mº°
Ú&ÑX±©lÐ¶®uŒÖÝ¼j›Å•i»åºj›ÅUÓýŸo0n£0ooÐ¶ÐbvÔ=šÑ#½´'SÿOŒa£¡¸Ë¡6žÚåÈ}ôÒÑó„<OœæÎÁ7Æâ&±L$ÜZ”í2ÀÖ(¡	g†—›ÚT–êŒg"AZs%…ÁV+œÌöy¡¿ì_ß¦óÜÖªT]LƒÖ`:÷`íÈÒo”ÅÞãúïÿó®Áçw®DàWnâæzÔŸ-ç³iB°ÖNÙk¢Ð7¿òà‹iß}]¶(ª ­^½ýL/¼w[á«>ú®‰É önä®ôdñ¢ôC‡Ý:sý} }1öÅ(G·½V´®ègN/–ó2õÆöR=•»XO²¨ô„¾ÏÄÑË–^QÈK‡7X`:r¥“üßõg}ö“ádüÌ|û½NåŒJqìÌ‘Wv‚}hÌØvÞ*"@ËÃ¼^ÝË¤0m­=&Y¾ƒÆ7`X¾T1*À—?–1€¯Pø÷ý¨éÿ8-…È*³™läUâ7çè”±TvuLž<ƒ…ÔÎÙ÷å¾R,œ®y‹¹+°¾ýØ¢•ü÷³éøû3QE|ž—ú9 oÙÈy7©sR?ãfg"{‚)O‹«¼FÞ‘ò§áiÎý^ò'9“T…hHr”}ºÝÍ÷.Ã-nÊèI‘7~ÿY<;‰n·Ãô€×æÙxií	Uò·x¹]Zc{,¦ÓQã<½­³É4âDm.+]öJ¼Üü}+Ûì^õ£Qý@Ïò0Ðã÷I*²”fˆ¤ üÔ&†id¥3
±g–GS*°T§•O«gXê8¢*¡Œº}Umœš­R	½— }?¨¯i
ð¯^ô#OlÑkÁÛ5ZU.¾íì=QnîëØ…¾/ß¿éÛŽ«|\Å"tø’3ºY
@»¤\Êâ”c®ƒèå»ð„Ô¿:R§á®ÎõGxná(³-nàÝ{L¼–pŽ5Fp¦R­lÂB*±Œ%š+05Ä¤Òjm™³©b8£Îi­3b¶ûRÚ|ðÕ¿oŸ©¥•	5Á÷r¢ÎùM‡²•ÕÔGö—r>˜\V¹Dû?ÿþ€‘Ó`­³Ù¨
v—©ö?„T¨Ð¤X3d[æ$½›l~œLËÈ|`óW¹çë«Ç›Í§ãþrV,æNû©3z	¤B÷U“ª»Ý0þiåÇ< úFy·÷éÚÙ—),j|ÛûÉ³Ö„pwïÔÏþê<+¢:Ö_ß«{‡gz&½>Ð>Š\£öXtM¯«„Åj}Ý”µó¡Î¦ðé§dôlP8³œç‹ÛÁÕç¡²ñ£xæ´ƒ˜OH¦EÍUJÖI—ÌWÂ`P­œv©¥%N1mdrßXÌqªå>‡¥jm}¿6½RC|m¯nayùêåû~¹q>ííÝêW¾<õtuå^Ò—|Ë2wÏ*uxyKÙê¥nDnùéù¤ãÕŒgSï>çî¦æëEøää+öÜƒ5jÕñÀïöôr¹˜VuïÞW¹‚úÏüj¿«–ö"$õÉË(kºbL¦W~ØÙ\›P|ª­çÖùM}m?ƒLyáý²>•xäÊ'$
i€V0%¤êÝøC+`° \Àj·ü¼™aÞWz¶ÎÞW)« Œ­Oçž›Û^j˜ð*gQ?ÏÊåÃ¶‡§ZŽõÐø,òµ¿ø™ÍóÂõÊš„IµÙ°@^¹Oi´ðKOú%¼$äuÿÕÛ7}o¶)Ÿ€®Iy %L³W½X/úw˜n6¸™Î?¥ ï^{€Vë½õåú¥œú·'Ïn{AídÊÉU™ 
ßdÞÖkÂò@±ö_î8•Ï’ïzc=Yz}¥ÞgË¹ÏûÔÏïÊ!ž×ëí
pà2õæØ_µm”û“û²ð‰U.LyD÷à58¼äDÒ;¼æ?B	#j'^“RrrÏÑTm¼©kûÏ$W$¶moé äoƒgë†ÔŽÇc/kÿ¢,âËË½±Gçaâ¯»Öoau„šeîö
šÓÅï`Ç žm¶ÑdâÅÞß¹aE_Æ£Ù’ßiöMÓb:r‹.;¹šØÛ;öFñÖflŒpè18ÂÌ{$ü@‰pÆ!—øhh¬0v&¡-CÓ©L¤r&¡ˆg"µÊ
eR§4KA˜íƒûðîm%l½ù´¨£¥¸þË^FüóÕ«ê½?uG#~ï[!¶&±²¿«¾°Êˆ_aŒ¢4_ëÏ¦´–Í{'Ûó® ”ö‡û@©œÖc—9<Væ/_ÈfR]€ª(I õÌ~ŒaÄY{îøÝókËRÔ ˆZ§{¼ø!”¼þÖe…º«_öîGô„ÊéEÛ	ôÈ5º=<à…¬¶tŒw¡FsÊ8vHb©™æ©AÀÔÓTX"³Œ SZ¤Å¢Ncq†ÁoXâ}ê£—ÙÀ_ôQŽ¦óð£³¡UPF>ƒ²bË÷¹Äú>1ºW(+n³Ÿ…o) Ñ­†Àx×
eQÍ¡vñæEÈj¤^5R©ô„þ@+5ØaV¿‚”­Ó¯Ÿ×"ëa…Ç:³`·ÞÛÇc§‘V’È$5#­ÿH µ›ãDI7@¿¢m†×*šÐ;mm‚ƒp]C^~~ÿö3}þÕXîiV÷¯þh“kÂ»š\k—Ïš¼Þëí6W0òŸÓYSï±óÐ'›6±n´E†ö•ä†€ÇcY7z5‡Úìä|TãyöP?o¢ÁÓ³ï½%õÿ¸IKüÂ/ø*å+Œ‡Ùèòß‹‘‘©÷ºqdº;èùó2ï8ÅuN3üÅ-üî8Öÿz£Ú¢8¦W§Yþs<z_¹ywó^Ïøqg8×J™áÒ±ñõbÀOÖÄQ­ËE>ÚéXg”¸É½1*®ºø4ÓP«–eÜrSËY(¬zŠ8°]ZÁþÖ~7#o?hÙ6 <Æ%pT>Ç®J^_´¡!Y©Bkëri7™#*cZù,xY‚ˆ&ŠI†( !É·VX‹'˜6”HPþ×’`E²=Z†ÏiÒ_P¯G!-ôàkvƒGÎ>=â·ådpô2P¹ÝOãÁL/ðŒ<ö¯=ª€p¢ðF¡öD
%©Xî6?ƒö›N‚JU·ïAd»]5«A8	ÜµÖ¬‡ùä0Ã¢ï3˜Ÿàï\óÑÑ*„v÷«"«	íÄ­m¯êæ7Úbð'£Ø„±Û)?L6ï‡ûÒ¥ÀŒm3¿‡<ÇO"!	|”O£;<TL³Ï¸ëwî£wL¹pÛiý»¿';ï¬ÌB_¶ä“|14Åu|ãm+9bóùÿUe Þ;:|ãÍÓ»Rõ®¾öÆŸðÃÎiíªzÜÁ÷%®ÃeþeGëºßµ„Ú·ÝÄßö7…$ûV%³9	Ö÷5Ð •†œ Ò3.„Å€Hlf¨0@©ÁD¦D‰„áˆÑ’s­Yš¤j_ÝßÞ¿+b¬Í|z(x]ø«˜\úñÔ'<`8ÁÅÖuŒbÉÆõ?Z×D€aÔ'p4H@¢kß­gpz^Òý¶Åz^Lf
C7I[g¯õb 6sÉæÎg¾<¸Àò»}eÝø.`XâR,•[%‘â:uŒ;–	’pŒB9ŠQšiê°¦4‘s–:M´Ý}•ŸúaQiH`Púæ7ÅXAÓPáÎwé¼×¼¹Þ)ÌzŠÖy—¹àÆ5ÖŸ\oîó>óþ®]ßÛ‘ûc_‹ÏæY–›åh1ìûì!UÁ¢tQœN\é=8w®7öýû>þ®ô+3¡…Aûf:‡Ç9›NlU@PÃÆƒÔa.Þm0,ÐÙž¿½òXÃ¼#H˜ ¤óé­³ÿO¿O¾ëkxBWË‘ž—ôkýýíWo:ÝÞ­¢òC-CÝé¬¼®òÙE8“«F€<œñÅšzá¼~·56lÝ5º™ûxûÂgž€`>Eì¨··ržƒ¦>ëÃ?Ö¤6ç°›ä¼ýK9¼šN¯ !zq7»ð{æ°7Õç’Aê©Þ(áì®$ï–&Ìï‰:š¨d£  C<"¦&5ïâ |¿‚ˆ;æºëÀˆƒ{«>úš‹RÙQ³hößÍ"÷S‹Ëoºêá­sZÑ+3¿…¬´$6;èF—Ÿ_ýö¯÷>‹­ˆì<»¸ù|Ú©ºØ·“Âô0‹lÞG(`¾vë´³öÎÔŽéúR’ÔÃàãçœóçšs“(Ú¸$µI¦¬–*õY•¸×½°ÊŒMM–èDbj2e0ËœÊ%>;&Î´1Œ[‘¤ûÌ³¿†²®O_dnû?¼±éÞ œ.Û{ÿõþ4ŠZÿæ:7×ÙJuðÏ¤N§·£)µèhÕµŠ8‰Tç¶¤ëkûz4¯²­¥«¹öÜûá‘y´3X²ð‡›Ó9snTï2²ZTð©vkŸ—c‚'×½ôãˆÒÝN"…J½õœ¨”úîw)Qj÷Í+Ïú <´ƒÆãÚA‚¾#'V_1²*Î¨)vÙŽãó§JŠ;ŠÖr~Í.ÝØOÓ8q.]Ç;Â9°z<Àæb>_i¸“(©w{q¨gù9$U¢5¥ÕÇ­ í¨RV¦LXbJR¥yÆKåÒ0!yª¤ÅŠJ`t8AŒïOÏ]®6Øø¾øòaO"éÁD‰I˜¨•TÏ¢(Ù.‡d»övw¶ãXq¼ëø“dŠ’L&™ÎÅ+L âô5<{À±ž‚j¶žu×b„`9NR‰¬ Ô‰õ5q&3É´U,3“e*³Ú¢Þfa˜$*…÷A÷—ýŸùõÝëz‚ŒÀCq Ï‚Ü$è•þóOî¶!âæ²Úœ*©Ò\Ï®§Zó°MºÞüµ,vŒ0ìwôiIûµ§!eÆD{Ûô²xÑ¿òæÄ4„lÎFžG†î¨õJ¡³Jƒa˜áÔ«êó33ÊüS>¼šLÇ.°IxÙ‹‹Ëõ!ÚWA)Aß« ÄéîLKŒ·";90GÁëÆ.|ÈV¿S”µs¥ÒàžËÛS¿ºV78”+îXøÑìž£ìAsow5û3xu¯(ÇúsWí›X÷>&ØH0FƒØOø(Ã^|òu::Õ•Òù|:¸*sÃu1û…ŽÝì„~r¦veæú'½“‡ð|°Ì;ö±ŸÊÑS³Ÿ>Îò/é2÷«]zæÓÎ]àOç>%ÌèÜ­ÊØµ[i*íÞ­ã¶Ï0|Ê;ÕM›Ã›v})B§òÍèÚóAíÌÞ—Ú™¹[tx±fù$üê]ŠÏcÂ–QlÿQ{\û=.½#žqc=ÕµÄéÖÚ)UH=†âl´„X4Ñ$C…×¹€Ðp‹ÑoíÀ¶]¿Ž2í×Œ:ÉnÂ„:E†gYb9ÂÂf„¦Ls¢˜óÿ2ë˜qÎáDXf,¢B+¡hšr‘froÓõ‚£L'ÿóóË=Ö“õ7–“oÚ\ÁÈ¶`ßkiU¸D­ŽU‡êÉ`ñU
«Î‹3ÛwwàÖv_Í©9e‰0«{nÔÀAa;ÖùèP;I2Äwwð´£Ó©Ãx`Š3`nÊQ¥E*¶” ˜@™À
	JDf±Í¸RLfVªD:Ã%–é>ËñËþÏ,u[ÚußÁêúà³é|Ñy{ßöîÃËïšS’\V;³rž*m°èÛHòÃüís M¼¿j¾Ê¼5qÞ{õÚƒNMÁ,2¼®JBª«*‘«B4/*“õítYföšö=lò¿Ïû¾”Õh“†î¥± ?(àEöŽ]ÕJJJÚ,–ÁŸi<ý_Þêû4h½I¶Y¬2‚…
—ð¡¹Lˆæ§r£}–”E™=mØë½ÉÂÇ€4æý‰+ÓªÍÝ*wÜÝ®¾({ç£Qi@Zµõ)Z‚Ôê`L¶Î³æÛÃ~5Nè¶™„{:émâüUÏþåZ‚™óçv­mÊì<§(BÛžS˜íöœ’
s¾™”›0ÿÙFÑŽŽhÕž”ïó€võ¾\ó‘c¥Öªµƒ;§äÚ¹üce”D‚±n2
XFð^EUÓm´±ìåÌ{dcIòôcìA])Ï¡×³b¼h´Ÿùïm89'rs>uÑ2¬vCÔw	…´kÑÅác:ºéåâº)Â*8~7–ùhÊë~åÖº»¶ÍªøÊ±.º¾»ïìxøÀ>¿¾ýËååÛþoÓzËOä€£˜².æÆ‘Õ³®}&E'ÏÇuó·o~øÅï@l6xÓ¦£Ï]†ª÷èn#‚“L|_›™ \Xü‰¨uèz€™ÀxO`‹*Üb9k~áÜá•&ÑDéZÛéÍ öí,=Õm‡–]j$é,YeyWÞz—õ™^³íFƒ;§-’pg«»¯.ÞéO!(±©6Æ{£¯<&ù¿î5Ú4¾Ç(×…+€© ï*ºnjCBý…jŒ&_ë³kVµ–×n4kÛ@G?ÆÀ?î]ñ™ë¶þ/7ï6ÛZŸ–Ùú –¦ï×ˆÝìeÝl6ÞU>ê®Ù2û8ÜfZe£fJ‹ù^!; %pÞ¸}€Ÿ¾Q·Üèygzìã‡oí2^7î}ùªØ]Ï«/.×{¿+ø~Àïx¾7¾N‰š/F^!2¿&x‰m‹^G¡¹7Ðß7-ù®á'P½ïoßžq'î¦zëhÞ5Š™Ál9E°ÃÚç-Ã÷ûGÞA8ÿþ‡´£}€©Þ½d×ÎÝoÒ¶Åê‰ù]heØµ»Ýý&Q˜Í÷=Ù}ˆ¡ºæRQ7_§ÃŠÏî»p9Ê®h”ÃÖ1ë8I%ÅˆÃm©ã4#$ãN¦¾Ìµ\¦©ä&EHÂ0eBÀÏIC™¥2Ò›öÛ¶"++å3ZÚªpÀfu…r”µË×ª„ÅeÕ…;ÑTF
ZŸø?O—>¡qð¿ªÛ¹Ö6®þ¿V&7Ou¿•­Å„ç}†æ.TzÁh¸=ÇdLÃ›Æ4†!wGÜ#BÙfF%Âª‡ˆ0FíIyîötËžôÌiZ_c<œÛ%y$Ö4%’»û–ÈŸõ£8ÐütÎJ´ãæ[û£r§‰7¸3”>N²LÛTqŽ1&’aâ2å,’œY­‘ÔØ-¤äZˆ,M-U‡”E‰¥ðªF•&Õét¹¨ŠÎTsçNkýþ²ykÂoJæR|ô×•ßkÿçXþÙûúîEoá¾,*!p—×~KFlÜz¼èÏFK?5YŽSàÛÓ,¤R^É„r’eÉ™Å8¸øk¤ -Öpû1nË¸¹OŒ"670ÎjŒ[	±®–ÖÎ·}¦ú¯Ï¸7Né·Æ«¹ <u ¯nÉBfý˜¸í8÷¦úm†›ïÈsVv+¤sN%)O3)±M•ÐLSžŸŠHk…Ã‰c(• ”µÒÊL•²ÄØ}9 >Ô±h¹¸U÷–¢ üø§²§¯ºüì]øy•h#¿š”(^ÿé/é9·ƒÉÛÕå9p¾`V+—øiÀ/þ¥÷Y4€Cß«ð•Aª\)¾)PôÉJæ6¦êeåèÞÝzP«:µª:’Ö÷zûñ}µnØv_ûô¡ò×Çó[|ïÖ™àÝ©©Näæ¥3F+±“)gÑWÎåÖl1 Ü¿:P~Sî¾½›gN×EZbù¯ÏžDy“Ñtq·õèNg\WÇ”zu|vv‘­MEÜ³nvˆvx>À5âOrÂ>SŽ’4\äœ\p>ˆ'›´ˆã3Ÿ”‹dZ"Sê+xc¦ü¢¬1	çÎS¬$Ktš±Œ2¢tÉš,NO¢ó±‹Në°•P™°-ÑIÞLÊhMe§è|$N[ß²ð¤IGåe[xÆø<¨=Üë¢:£UŒ÷Â!B/ØqvlX÷oï$êPbSM3Z"Â*ÅH€ª€¹	¨µ”F‘Ê2†P–a-ëR©2,}ÅÚ=¢î}¨BAn‹¼¨™©._‡RÇQ,¯?„ÆÁAÛL³šUê»Øö@ïEßWÁãkE¸Õg>ûãûÛÅ5t)=ý7Ec¦/Fà/_ª©Tåœ×“}°lÃÕøïËÊÓÕ!±ëû
‘q*d‚y½™ÿˆ	¶SDaJ·Œi‰WFÑ¦4lpP¦áo&ýþJO½HP×üÂå4š˜ûž—½‰\ŒÌØKö3\¹§¾ŽûtÔ›~À¢Vdå{ëN½i!¤ôð;0@tóñïbCÔ¢Í—³oÝ t¢è£Ýæ+ˆ5¦Q"‰ ¢R'ÂOÓÂ$Ú×S	‡y†‰t#â¬3)ÉŒÊ´Íà‹H±v_þ<œŒ­yWñÖ¤eS¯9V×Sþ!–#~ßƒ€&¸ÐýêïÝÜ~éOØ_øëµ¼RË§>]¼Š˜yeô®K]k_­{<vÁK¢/¡!çq]7”RÔ3þãD²Xñ»ýB=ÉãÃä1Kº_c=Œ¬Ù¦ÿ•$öÊqÏ}qæb6Ò–³€¦Û27”õÚÝÕU„¯z9T‹MàVMM1ùˆ=ßkª³frÇyÙ­QÇW—™@JQŠ4IYê0vŽa3“)Îá­NmI†-i5·Æ+ˆJá?„ö.Ø–—[ÂíI!<\Ú¨DÓ¬J¬’­üüƒz/ë¢‰s@NífËõ}’G‡Y&‘DÊ£Cu“f’ß–Ô)<ÓiÞ’LœVÜü{Á¿¾PÒÀ£Ž7ð–¤À¯§ÓÅáy5é¬rán"G;’
£99
’%UÆdðŸEÔˆÔ%	ÕVò%Ë8ÃJe©âR$IF]–º="çon4]¦¶¸;¶>ŸÂgã†Tš›»Òÿù÷7Ã~-ïJ¿ÌìU¤ÒŸÄÇçÜÝô7ûÊæÞênmØ{_½•Øó™`š}›ë«É´p÷f8ìÿ¯¯óò^­/èzþbnå7îkÜÀ<Ü|±Jz|÷M˜cð¿òEÔjÚVïÎ9²(ÜÚ…©€g>…Z8!8s’õ_ú!ŠÕk§qÛƒø°"	¹¹›7ì‡›J8FÕ"«Nó¥OâÐw_òbáõÊÑôªô…<¯Ti?Ña>½Ø>é»å¨J\/sã?â‰À{«R¡ÍË?Bh¢ênŠ„(_§UŠÖONùBðW*xóP¢tï’©	<…ŽÕnKüY_BLúÏu®‡zÇ¹µ›·î$ß5»èÆô£sŒÖ{lê›dãòî#ÿàÄ¦Ë˜ˆêÐ¬áëòü<7ŠŽÒÞÑiã«Å'Úþ?]äÙm[Ü¾÷  ±f=ŸWQéMyïV˜é¡°^•4¢åì¶åÉíü'{5¾Ø«Í'Û)í/ôX±ç‹>­]ž†VªÑŠáœ[œT®òIlâ·
ÓÃÀ%E•FãÌ 'Ž(K’[g`aŽ²X¥YfÊ0µ&s’BëÔ	‘í³g¼\2ª¥m^l#¨Ð’³êkßß5tÓ ½-ÞÝ­ÍuÕ²­«ðCÔóÅm™’¨ýy1SöBMDýªš„áwh[Í¥„vÙ<‘:ºí—/i0šÀBÊëé‡€!Ã<0ªE:´›äzôpV“Ì”ÑƒÊ‹÷$¢BŠ¼'ÀºÝnÒT(µu“N’œÔïÓ}™_ÖñUyPžö
ÅG¨œ¥šoéÿÕ¥sì4(pç6‹…LhÇ4ð»§ÕÆÑw±©cÐH³XÙ!sƒX¡ûÅÄÑ¼¼œÂ×°ØÙ,Yj’”ŠD:bJ´eÌJ&4Íp™d(18ÕÎˆŒø+ÑRè„îK¬[q¬…µÊ}œûIÿ&ôøM{x“Ïbh»^-¥JnŠS‰XD/Ì“Bì-¦wÔèwêÚÕ9Ê]éCáÓ5tQìñ0âþó´DÏ«¦ì¤þÕùöŒ§ÎþØÝlp—%¼ÚÆ$[»ëäYv\½´ù¢8´uøËý½EQÎ' “Ê¸õf“€†íð…o:U}™&W]zøÉ–U&b“Ö{¼}óÃ?ü~ù¤±e-‚j²ÞÅFã	ò7‰;ª]òc~HŒµ%Ü¯“tV=ZLÐíSÞnV9‘§åÀm{Á3ŽñHi5­¯þFù¬mzð{Äƒè’+²ImÙ£1àFGÒ2·cÔ¡E"îÈnSt©îí[!]T‹ó)èÜ*äîÔre¯òÕ½(×½ ÕK›Á¬t´^nìÞOùŸÛïtßÏóÏÐùÊÙSRÝCì~:½-Ü¼;¯ÞF£­_÷Íºf:ôúEsÆ²Õ“jnµ±À£L‘WÕ€Çëa@ýD^yùYRmWŽœ?OF…Ó+o›}V¥J˜Ä°”%"!†Ñ$ÍM-É”IÍ%6\hø“X¦iªdÂMSŠ.¨¸Ù¾¼—nžëÑÊ#ª(ëÒNËêŽóiC¢›Ë»’1u·¨4$è‡Çâ?½!±$©«Ê2+Âu»a¨4àí˜a*!ÛŽWRý£éÛ ¤æ“Ùr”©÷ºòîËÿh}å‚kh *X?…¦¾^MO[=óÁ¢¾c( ™NõÜ¾(·6ø‡ž«	À±ùTÚKA=Õ.«±AÕ5×tc W5ÐžrÍLgåPýªz%t®Ì£¾|ÍÃ™3ÿíÆË‹õñÝY(Çû!kIuüG,AdU.~;šDrÓxÉ	Ù¬+ “ÖRóUµ•wcÐøVtÐx_^¾í“!úëä°-'ÐŠéÚ	)Ò°yµ·òü‘L¯i¸&-ðèa°¯6:ÑÌŽ4À^çì¤XæxJ-tJMF„ÄZÉ,Q	ÏtBy¢²TØD	Áy‚Ò^Ö,ˆ0ÔÚTdjo¹³èZgORëÛ”Z	Š•Z˜J²)µÚHLÄ˜j5ÊÖêºuaÐñpOr«“ÜBü0¹ufV}dyú|°ôö­C=ÐP¬>õéà`=§˜<7„9JTþŒS–7Î0AŠjä€)§ifNRªSxñPj|8OU»LS# ‡Ö	ÚÈþ\–Ó%ëWyB¦Yÿw¿üþ³¿_þÖ§‚6Ôb{¹Jùâ{]¾éÿ{©'‹’£†Âô_}VU#ö`<,<Ãi6vºXÎCÌ‹»'»óº)Q!ØºÚuS’$¾ê×îðJS›,M
Rwe*"×Z5©A87ƒÆÓ“ýpùã·ráÔeŽ/&/8íÆ³ÆŸ'ÏŠ|¸œÂ€¹OÀ_~?ƒßÍž%hpßÜ Z½8·g yê©–ÏêýY'ç¡zü„§ÅU^Ñžjs·hžjV¤ÚiD”cT)¿ …F®ØipÆëÊ¦;DO¦b“Epi-QlËið½¾+†ý½ß–žå>ÐÐkáL8DðgP¸Ó&ò©?ç#mŸ$©±„#”"¥DºXiSL13Ô¹¾‘i˜ÁJ®L†”@8IZBS‚å¾¤v/´¯6EŠ÷®‰·7«‚fUL7áHoG ~ý¢$mðD(º6$âá£5Ü„HÜé¹u¨#îè”_ûA¡ˆIGmiëQ="!ÑÀÝOÃyGÞE>-zã8XÃCŸ¸©ºÑ¤=Ï™V$ñÙe´R‰M5i/nêtbTF˜HXâ˜TL%‰©4È›ÅüÇ¹ÜËf/ß¼í¿\/¯_-o¯ul³uˆœžh¦¶Ü¼L`+zœnë%	®F·³ëbÅ]{¯×ùt–›ªà@Hãú[Ÿzâ¡t¶ïu3Ïƒ	j¬'å §{RŒÂUçà}Þ{­çNëSõ3/–³ÒãÜ×x^W³„U¯çÞØ·ZW¯ÌcãG÷£®VË†¸ï¾,€¯x»Ê°9ïÐóµºoÝ¢çË¥UöÄl9*àáhÂ™.Ó¡®ÈÃ2^Tõ³'ÎgK…§¸Pùz•ZÇö&ÓÉ`Õ¥¶Ÿ8æêï‡}úß×	ÒV¸õ§¾2\ÿÙûß_~W·V[Tš7·ï;xN[
(ÕþÁQ¿ÛOØÝ¼º.ôn£¥a²ðþŸ¹÷`‚%=¿\-Gz¾>:/Êx‡	ìÏtd}Iñ$Y½Oðºç£°‡ðÝ¶{âìYs¼V®E€³Ë¯w ëß#NA	BIÝW”Ë#IÔNq*Qt+W:–XŠÜ	X2ÖžWo³®3(ùMñùëOo¿µ½mÕGëê‚ÊŽÿ+gÑskq¸Ü-#vâÉ=ûÞ³ÿ£u“zRo8Žm8‰mxÙ0mT¡êç±oc'i®cN#ÚØ·.²¡‹]Œ+b6zîÕ.#f±Ï0Ë£~ë-ÿˆmûh²Øó“-£[Æò+ÛÐýÛ2v'¯>G6¼ŽÝÉëØ”Ç¾yìþä±¯M»˜<öµivx­5ü#vÃ?ÅžñO7±üy”Æ6Œ}eÇW±c7r;Ç‰&;ÉIì[3‰e»“Øƒ6‰å*“"–äÔÄ6Œ=?3=DËøÐø&¶qìë3ë<vžóØ9±ûYÄž·"š³ãXfYŒcùF»CÑ'®øwlÃØW·ˆ=E,)bùo{.ùÀÅ¾½¾mì’yì9ZÄò­Eì#_Ä> e,"ù{ˆ>Oc7è&ö¸Ñ±ô%óßêÆ$;µ–ÆÎòÏö#|§ÍX¹cž•s¸ú¼5ÏMõ0Eõp{®´“=·_6S¾ðŠ÷Ð^1ØÚˆÍhƒÃ,Á“å´Xgö‘X«46˜u3'™XgÄ0Ž)K	ÕTYì(‘4ˆ9Ëyª…ÔB3A©ðI–R•&«Ñ¦Ú‹¿ø•«ÞO°ºæºQ›mK30lòÕèÎ>ê·h}V,ôÄê¹Íÿt¶ÿ¯¼²ðö‚y7¸7Žô6Ý-®¡w?˜ˆ¼³˜.×7®ðwqýW×ùD{¿OùÈW *VFÁU‚qïFÁüdýäþ•?¨m†üWþñz:vÍ†A¶mätw!(‚¨D›Ù¾9aŠ×í‚œÊ[½7Oî ÁAyø±EpDjÜ»èãY×*ã5ƒ`mZ¶À}¬¢MöDT¢Í ñÚ}´Ò«”Fk÷gP±ãõÜh¥4[F«qgPN¯Jœ^CˆÆó'Ç¾Ñ¨ò”X1°Œ“ÃÄ@µB¬±®Ã8×c‡åòOgÚêå§A:~:Ò!Bæ¦Kf¸¶6Ð@ ¨%<ÃÈP§4¶‘Rd"Í¨IÒTgÔRÐQÃwûrÓÝa¹–ó±+Âít ]ïnõÚTx®!½QØþ°;+ï OsØëõª¯„œéI¢tCØˆ¿©î¥ÃÍýæ¨åto}õ>ì¿Yô½)ïù+o.ÝîéSé´åÓt=É½~¹ÉØéðÍÏá2{áªËîòØ9¦˜f‹=wktYž°}5F+h)îAËuÚ¸­£˜±í;g‘§œÚ³HE1wÎ÷Žÿ œãÎYç¾ÂÄ‡"Ìjå÷}|QÊG˜÷HKbŒL§Ml}0ó[@ãØ»Å'˜ù3Ï
3K¾áÙÆifu‚›÷øØAll'æÜù`{Â'ˆ_fš$YjQjl’	mƒ…MRÃÎ'\ûÄ!D‘ÌI¬©KRVfÎH'YJù¾°½`Ã'øµ Ø®4ãmTòÌ‡µÆ#À'ðw"ðGºÖ–¿þžpßî{Â}O¸/÷ó÷NŒôÜºX‡'A ¯k7×‚Ô8úöy}kÏ»aHLˆ@)ãˆa`ƒñÂ1Ê\jÃšøBŒuX8åÁq©’Ì$§Bî­}Ñ9×é]àÏ²v…ÜŠTÛ’áÚ*i{ðÍÔ—ê¬°Ÿé¢€Â@€1É¯®E€ôÍ‹Þhæ“p•=Î}XJ±¸-£uÖQ,¾ h«âce|°PÑ7Lý§ý_tñéúE/„ÙµZ^P/T®0hµà¹›¹ùb
'êaƒXÂè?•Ç¨	L&Û`R Ý)uÃ>ÛÎ˜dJbY	…O”h/c±ó¸Â¹ðG)g3#ØÈ)[–~4°äR¬“³v–÷'×v}½‹×´‰«øH–è •XTÉ¢ÿäÑ1*'zyŠeinË»ê§ —–†ñA/O¡,'Q[¿‰P–Ø9~ZòXgsß6öøvˆ¥Ñ±,õ)ê¦¥áSÔMsÃE,w™éÁ¬Q%ßh{¶Xžb ³ø¶ñ3þŠŠŽü‰&z
jiøC„¾b€Nìù‰†xßDÈÏ#ä©ëÅ§µ¡Ö)w²¤ÞWÕÒÔ“=uc/Ž·ªÎ-:É†XÁëWÝ"x,Wˆr¬%‰’Êép#ï„¶
™,¡ÆIŽ¥YÆS_“’	'±J¶Yâä>#êå›÷ýAÿ}(©sñêùóþùÄç,*ú?—…§Õ'}çpýî3†ËüªZ¤Oz”®ùÏ=å`KõæÏiYJrqín«bŽ=m|®"o‰]%2¯æ´ê5ìûÁúX%sò)õàtA—ÌgP¿üß7?÷ÓåâE/uFû,Ey1ªŒp&¤8_lW³ò·ôåP/ÂZª<K«²—½…·øºùz9åDò°Œ*dhs8Ý/|ö0a¯ç[ûð¢é<¿Ê'›s¨³ZîÆ®ýãÇ×eUä©¯¤Üs_|BneåÒ°“r°cÅhºè¹Ö“¼÷WQR¾Å/.<±°™½2aî7õoÓgóEXTUX3ôk›š°}½@q•Ôð¬Æè›››á<‡É¦zòÉLÇ³¥?f!sáÊãá^Î‹xÉt_5NBÕ«qú0Ûíë€U™á}#?rB©'HNjÖíýÆéÙ zýäÒ›>o•ÿ†ñ,üø¼Ìzå¾6¼øî›É»´½ÇçDV¤£yº,#F@BÌš$Ü^¦Ý@”ž–è©‰ÅTÂìLt0Öf¾»œKÍs–×æteÌÇ¢K]ÂqY.²šâÂšçÏ£{D×Ð»_ŸÇ¨óMÓb:r‹Ž/ÀÛgxŽ&ºãxu£YîÒÖ–l«Í¼©´\Û·ƒÙí¿¼¥ÍÍ—ã h±<<3²]9V}9
.’çÈšYÑ!³$RdN ‡•54E’q¦¹Ï(JÌ”Å‰Èd†2“¦î!C–Q†	r{ék3Êg€ª¬›ù[ñ‰¹1üGUe&›Ãê½Ûå~pêó@·t.åg
[èÁnÀªÙÈ}Y–Þ©Ó“^y¥¿‹ÜYA+7!Ü¾—}g%ä+Z¯dƒ“ðÿÝUÆ9¥œm–²áŠVwáäJ$¬×ËA8SƒÆÓÔáêýõû·<Daë¿Jˆ¯à#7âh¤#‘ÄÝNº¡ž•…go\:ÐE£mÔç¤÷Õ>W§Ï/îûí†åÐR:Às›ÓSSá£•oþƒtºeÓ‰ö\º.Èrç'\RÛ Ç/ÇÓlï-ÁŽÁ–JI4ˆ>¦”„ófó¼pß›Ç“ðOÉûŠ]ëe±>cáŸAPÖAðšoïÚ¨€î=@‡žL¦e‚ûcè…*Þ€ö0€TËÃ+ÒáÊQTÔOò¹èÕs¡U* ÈÄÃ$J³œ8šR…çFè„¥R›)ž‚+)¶4åqÇDª¥v$I°Ètæöæa‡µöWkíVÂ¢Öõ€€œJ¹aœ˜&*a»³ÜP&„Ø,'A%#ù¨ä8i÷¼ãbá¹šžø_Ê´ìÃñ.…
ÉnHæ¤À¤©ÎýéIÓhµØ\R°Oz Á×TêL‚ï›GØih°ØiI¨o4YÝj5Ø”L¥Ü{<’ÉÑ”?Í‰ÑdRNAi’eSŽG½nŸåKý8n9SIf.—¥NìSàƒxy_­õ ÉTv}D’‰ÅJ&_ˆ­úæˆÂöÕœ#*"$×ÇåI2=¤dJºV3?©ny¼dê¢ŒÅŒv´nyŠAN$hKbO‚ö[×žD%ýôÉæW_¥¤1Za6ü€1B£ð0Ó1J°VÂ:ç™Uc)¨N(ÊDb¨ÈÓN0¦F9D-È(‚”Äè=RþÇ<XÁƒ?A°œ_þãýg—ùžYÿz¢ð×¹—í«ÅÁ‹r5×ã†¢Ì¨ *ZUGOÝÖ†|Ñß,³U&„]·¸íA‡Áßß\þë×áÛ ífË¾}^krV„1¹ÉH§Ã¹÷U¸šÿ˜]ÀQ`Í9Ô½„¯’ï£“Ræ›l"Žáñ:æ€S­åÃY¬Ý vÜ:@Œà¶ðüxdQÕô~=ùœÏ§“P–òíÊåŒ.
{p¼	_ÒŽE¡Êé4zâµ°ˆ]Rê6zÚÕîN®â!%kÁz•/°ÄÜ(tßŒ«žãT[M\‡‹H¢¨ÀÞ„•‰À\ä–F&ÌJà|Ò‘DÁ[’º,µ„f†»kB¹T6
¢ß[bÞCÛEÿÇ©ùäæý|
õy^2‡õùbx,wî®òbQÌ}¬íÕ>‡¾#eìZ¾¸õÞVy5Ê>òdYŒný8åLzwÃ…‹Ìé2øÔõ'®ôßšùÀaø`üPd+õžýÅêœì¿­’lßVrµ»ÎgTHºiéÃ
ƒú)6rÎÀGŠ¶«S”gq{
;øk½¼|Û'Cô­øb¶G—’E<Q]y Ÿi3n?˜¿4ŒØä.u’‘WîÞ8µÇÓÉCîÎ(OAIXê‰÷QB‘¾RÖ}ëÙÌÍƒ7Ö‘ƒûý whßß}Äù¨d…«|:€WºËB¯àOç>å}çn³«›Ï§óŽÆ.lH¬O\½ÇÏï~÷ú#ìåá]q\Wà[sç¸‹÷ÞfŸ·o~øõòÃo¯_Œ$†ô4’8³Èm»<–.+·?2äGô¦CéÇè ”,¿Dïôù·<ç*Pq„çÜÑð•á5ÀÞâš€8ŸÓ”e‚kYyæ¦Œ	-3ƒI•°ÐÈB( ÄuB¥€í5A)÷š9ËˆƒÏ\ªl†Z0ëZ@<ÁÖãak"ž ¤[°íRa&7a+acÉëÉ²ýGL¶_Üá4†§ï[Àª‡Ùÿ;ìÁÑ UrÔ ®üì®¦>þïYíˆý°œO—Ëâ:¿XLÇ£ïmcí5°Óýã¤n:ŸÈ€:ŸŠæA˜A.§Jkå„5™Í¨C Þ036ÁY¢,ÏÔAÓX¿Q6üB¸Eó|l’¥ðv©¦åž&&IS­“„!B„E6s©¤wž‡Í§¸|êlû_g%À Ï9”ÕŸ¹º¾¸šàÍ»9ß8i_ØÀ²Ó¥gMg+üÓr^´R©4M1Übm¸H’”›[’ÁA²'”v^6æ10sg¡_®Gƒk7‚w«åÕ²"É”vFSšñÌÒ%ÎiÇ²ÀúÍ˜ó®^GMž:œµIéÞ2™º”ª´€×KÂfQâaGŠÉtF$Ì‘Ë´Éƒ1f>cÄ´Ì…*åtb$U <2‚b¤p‰Õð›NH–ÐDêôÈ¹,'ù¢e&‰†}Ñ&Ë4…s¤•6B€ÎË‘Hq’eÖbŒL¦ä13Ü»˜/‹ÅÙ^˜«ë©-Š‹[Ý&S$µŒq­¨HP¦±–‰v„jžP‹fIFIª±s‡Í£¡%mžÈçÃŽýÕôjzx1M—Yó™±†ƒÃÊ‡BS¬9K|ŠpBË5Où¦x£¦yøO.®FÓ«ùÊ0ãb©HLF±Ê0›˜‚Ð=0í2g™EÜ~$VŒÈ`®õo˜ÍxÎÑ’(@ë¦kó¦™ÌóÑHÁç¾´tÌ2ÎQÆ±>j¬ñòKó8Ž1
’IÛÝ|lõ<Ÿ^ŒÝüjÚ<’”
.8Uª¬²2ÁD¦Ò2i!)·ÀX­9hŸæð„Ý¢9}öp:BûS;‚>è n"`«#ûqud?†\§E»ð2ôàÄ8xsC ""L…Ö$ŒYø	ŽèË‡Í@MžÝÂ³ögÖ2BŒJ)1	s)² »2PÐi*œB™Qu^¢6•hhæ"ÊÎ&.üet¢Â¢mºåùäÓÖ€|{¸jÚ…"œ`‚-bDq–	‰´Æ.dF)†Žáí:±ìœ“O`Ñòø…Us&3_b>Ji–2éaÀçÀq˜Æ´5©ùrÒ²E§{(0–7sD<–ÏØ;@bÌÊÒx¾%ã­uŸ«ŸmŒ\Ã+MŒH=kI@yH©ËÉdÂ»fæ©Ë,‡-~–zóËäb¹Ìmû6Ä§«‹pÐrˆØÓÙØý©ç¶äYØö|Cý{éæ}‘emê¦eÊÔ ‚Á”k]òåÌÄ… Ô™d@ßaÄ¨5×nY\˜Q}>–mZd4-2AH§Dº œå8aÒ:› €L4Ý­u™Òxj]üW
¸VÆR—€¬dæ”
L­f»%ŒrVgæ@)ZŸQ¸„lÁ£J f±’(¥$x5aKìç–0g²i.Ã£µ¹À¦M¤›`ºDRh#¹¤ÀÂµ´D*xã5áðüŒ£s Ž,òùrV¸É( ž·z·0×Ë8Ó:nô‘mèvb^¿6z¦Ópp6 Ò3ÏkfÚ›rÝ²*IvXŽòOÞ^ðçÅ—?[‘0o]mdžéÏÎ¿±íOGx>§ ·‹‹…žƒ,‡‡ÓëÑ4Ò—Ï–ËÏðx<žMs«s¶£°9Ú´æ9€‰ó¡äÍñ|ò¸qËéë<Ø”ù+Sõÿ„P–/f~;[´`ž£˜¸SkuêÅí©qLz»ÎÛ< °a>ñ°«+­5`¾ágÜ‚9-ƒ³ŒÒšs”¦œ)œ dpi
ºÊ2,E"Ó.
ÅjÞ 8üLÚ“ŒJ­GyB‘Ìd™á)Ïˆ 8L­	?þ§¤‚2]â’VÌÝºÉq_]nä†‰õòê6Üºv½!.;ò]£çZµîìŽóí˜õ-97ýÕ<•0ìê*-¯ºÇ”znö7«ìPŽJ)²<AÂ_Ç+l8h°‰vZcQ†|¬
CŠÓLH­¸þ¦µKR-¥ÎöåŸ}rTÚã¨ôÿ¿ IÑÿ·Ç	S%)Ûp¡‡„â\îbK\÷E(AŒÖ+mùh üpÂ)4ž¯oÁé·ù˜-8ÚÉß/ÚU¾#‡88uípÓ)vá	6=Á¦'Ø´›È=ù„Me†—Çäæ˜I’”	Í•âÆfØáF#”9aÂ5„»$£>†ÍZDD*EÆ{±e{ÐÓ¿Îu½Úº½Õ[-{½Ý™WÊÄýÅ=ÂÑGûbÃŠMôhÉw¿KãŽeÒší´vºž<±ÌsÑ1KýA=ý¨ì±Y‘[|Ò”ýj²œ]5|ÿÇ¿¾œM-¨[lÄ;MBŽã%ÅÔl,¨‘L%šÛ4eŽds*Pªœ´‰ÓŒÑDp‡´Eš*b\fÆ…“‰ÑÐ“ÿHA¥'±º0…-U›5=du5˜‘DEÆã”²àI~M¤8=$8>/P+>…ðpÍ–žr_QZ¸iG
½5 Ú¶eE.‘À©–Q’v,ü…(Ë¤#T
äD–øìÀJh¤Rï â2I$¶ Yˆ$U"(Õ”QÍ´K9çJ¦ûò6ùÅLg>ŸNà¤ÅºšÔåà-¬¶¿öÐíûÅ/akºfq,ÉÞ\çæº;]þ×hTÚNóÌÿÚ¿Ñ0ôbÚ³åLVãÂ)õuÀf¾ÖU™1lØ÷Ù¥ŸjÉŠK’c}Û÷9½@lž/Ü~¡0×¨˜®’IÙa¯÷¦ e­»|—wjcšýÕ4ëd{åH0¥Æ;_†©¢*Œõ‡³¾V™È24e–
5ûj™¥à@aÎv
KBÉÉ†´T^—ŠŸ|ªE^Þíð ¼ƒðýûóé¤F=
‹­/óx%sÒMôñÅó«ga:Í¾í?5ðå»§×Næ›k#„%%3ÜAú¡¸.ýóéjPnU³+L95ÛÖu‚MbÅ–«<Bfi°1Fdšfø¶„x§W£´µ–+’q†¥åÐL	~$˜†Ÿa	Oöe~’Ye™…ïË¬Ý
ž—Y[ÉƒÌâ[2«½ºÑ™Õ±vãWZ‡irçZ$ù–Z-e—ÔŠ¹oº_Ç-íhñ5Ë“¼³iî./C¾Ï¨È1~žhŽH¶ªe›³£Tùl„œ!P»Hæ,Q)±V•zq'}éåÄIŠ°V ªš)êT¦SGí©öË›Ëþ¥›Ã´ƒWÊep8î¿šŽgÀ”J7ûþl´¼
â	äÝÁSe
O¬ì)âVg­¿¸™nÐû¤Áßô"NuþÐ› ]¿6Í²7§Ñô¦LËk×}Š²	m¾œ³=Ë{~¼Ò=´xÑ··ðl«ºÌµÂÑ~Ë™-ñ}ÇzdŒ™ÎË4¿Óž¯ü\ýå¼äÜ¾“ŸHDê¾>´ÿýÇ7^”5”a«$Áp,—#h”ªÉô—ÅêK?bS5Ó‘ŸîM÷oÜÜ~˜ìumQÕþ4<·¶ªÐïéÑÂ‡>.øœ»¿
ÿrz$ŸPÄ‘	<Ñùbc}Óð¸Ã>¾‚…¼èÙùt6ó?ùÂÁsç7Úoí¢LâÔõhé³'û­©uŸû$.lTÙ"<±u·ªÒöv/÷ùWsËK0áCíÎšMy¦á;ïc¼f{@ƒ@(¤DÞ(‰ˆW	â;A%|Ó,,È¦{‘ÐPÎlPò û·cuîÓKœ%ŸòÚžYtÙ“caØÑõÆp5Ãæ¬ðÝ„JóH1B¶ûˆ‡àý[¼z°«Á:8†æ±V#;á½ƒrñ>C»ú­=VÎá¢4Já‘a‡)B«g;÷š&¶n«ÿåòm¼gè	s?±èq
Ú©µ÷¨íÐc¦Ç<VÍaÙï_¾‹_öld:¬zâ§Kó‡vÙ*Æ É:ìrQty&EQ|„'ù1· ¬º,jGÇËËË¿ÀŸ7?¾{ùþ#¢X7¸Z,öá/òù,¸ŸÑÈ…Ô:|xóÛûW}¹˜Á2Ž ð:ˆ‰&J$	šgVå 7ÊØ‡–!ÁC9$;¥ÑÁµÇ”Í¸£”eÜdÆ	M†¥U\c#´–ÌG¡9‚)%	I
òÎ0aR µ¿*IUäíôêÊcÙŸ´À´_¼Ic ßØ×ãég—obÿÎè|èëÄ–áIõ‚ÊS”4²»¾Ÿ}N¡eÑUd_¾S”zA©Ó ¤K Ó[”*Ú
XÃó þ=Õ;›"(mÖÍFÓÛ`õðwØSvÃ^¥uß¿šk»Ô£þ8¿ªT&PS®ûúFßPßû»þ8*(0®×ÿìï¯Þ~:ÎÛ»‰oÍt1ÐŒ\3íîz:-\ˆ¸X5òKè•ó
‘Â°+µ€‹}7¼öyûëÏÐÀ	ýp [õ_V
 phšŸßõÙ´(@»þ³Ç¡ÃÈN·ßù+»j¹ ­À¥ø
Mz÷QM†e”c¿,»ú)ýýÇ`¶ñéð¬zŽ7†75G«Òñd«*àÉîªt2¼¸¡à$4aõT´Þƒru¸_½iJN0hâJÅ¼{ó!(¢_ÃñEûI
v°b»GQXvŒY×Uó“ü¾œj¨£Ù”z©dñû%Û¢íµÙ¢<™ÎÎBôLÓ-Ùþ¹èž`ÒÓâ*Vr–£OBÖÑ©Fë{(EPˆE2Ç¨ÕSDþ4F÷³`Co©`œ=Òct‡‚NÈÄ©c ûRî$Âšré„KNKR”2¤	·”YeÖB;…¼þ}QOàð	þ§ƒCÚ‘"XÔÀ!|„=ÂÛ%?#8Üfß:<Æä½ÇCC‚Ÿ á4|‚†ç…†»Ì6ŒÃ†ÉÚWä^¹¹ä92„fVtÀ†©$Rhë3l*m3/œ|ñ’4u”g2cÉ$Ò^è9!ŒqÈç·Ì°Ô	òi÷¹Å?aÃ'løŽËú«	“[õW)W»ƒ§¥BtJß½†E{ÝÕ;@”™À7‚g3#ØÈÛ¶ãx|¼òða“ïäqø°+å(àq Ñ3M7ÛF÷“îŠ#iý˜À‡Í¾1ø°˜ùáÃÁöfÉ‚˜1…3cY–&Â%3J8•X:l#R”e‰U‚F)¶–±¡”q—‘)_;~J!÷þùÄ»\î‡†;uPÙ‡‹µùmÛÄ s¦êå×‰ŒÄ á”<Y‰ÚJÒÂÃ;½#=­ã3­Íí¯e28‹Éð4r&ŸÏØÄ-&G„†¬’Íð¡uŸ‡WùÂ0‡SÃïsõ§ 	×Aæh­¤tªÎ,Í„„¦¾€ ƒÔJ”ñ¦5Ã[«àC'9±\dtÌ	+Ú(¬þf:ÿžK1ó:ñ~áó{,ÁWYõòš¸'²œÌæùgxðWÎî xÞð¿ZÆ¯ùtºðGyPOýUÈûUX‘$[*,ãdwH ˆ6µY‰Y&ÅF@ Šˆ\ÏË§¾t9?ïèÿ@ìˆ-9Z¤!D»æƒ¹›o³ßýá<¢mÜ8¿ÿcÆ?\ºãàz/‰hLÆÇú›~ŒWë	¤«…3Â~œYgÜ=i.Õs¡ÑnU.J&pÁ2
Ÿ¦„äÔgøB.Ih\p§¤ô)]4—e%Zd	¡ÔIeBS¯ëT×f:»õÂ"]f™·ƒj3ŸeÛ·"&¸J&”oÜ‚'
©D¢bB!Â¶´I©ÜPs@Ë‰¸¯sEâ©ãŽÔ_BLtÚã…<ð3	‰CYÆiDÄá£. |òcø3 ûàx˜	¡qØÆ,:æê¯+ø|=¸•9Ÿ&‰%ÃÒ8"M
R-ÁY›¨ÌâRÌ0É¤"ë~Nì”ÁD¹L%†ë”R­Ÿ¤ÝAJQ™S‰íD˜Œ©ÝJat3& j—ui‡0OÚ­zwÌ=œ¦Aã9úˆ¸˜]8Z®Ñ9fœ\ëÈN!Ì:ù$Ávuñ›Þ)¢ó®ÃåÛ7¿½ÿs¹£gLäç·*fÇf 'èQ>ÙQ>Ë0æ{"7ö¦K¬µ{Œ:&µ6Åˆ° ø§ H‚¨E‰Õ8åœi–%"Å™yË˜ Îhe5E‰q)wÀË÷HÖ_gnÒÿ £öòë
Òòé[ø3î—¯Ù÷éeØþ¯#û¶gG^µ5Ý2	J1êýiÖ[ÌµÍËü#µ!/ñ3
\·…þ¬'}=œL'W“e¸-†ò‡3icÓœ,ÙÈF–`$8Þ)e1ÆÈ[ë‰E$'Õ‹HÁÛ3hî>„8Mƒòu¸.ûõ§·_'ÌN$[aé÷{´ ëj±t•™l÷“h”p»ßù£xbÏ¾÷y¸þOöG“¬5¼žF6ÌulCÛ0vèO±‹ùt3Žl9Å6,"ú”sqç‘§±‹™ObÞD6,b)±Ï°ˆÝÇ¢ÔÆ.f;ôòÏÈ†_®#þûÒü¹lm¸Á8šZÙôYT£{<i¸újø¥ù-ÙÃÍaf‡£ò;¿¿j[Üè;ñ [˜‹@ÞWÊ†öBÈÁýóßíírqýÕð¡qÊ¬µD4Ñ‰³å
S$}NBK±>@’X"ÀF"d™QÞìb0rûªtÛ`à_ ªxpH8Þ‡„IŒ6Šr²„’Ö‡­£w*ôöú<Åúî‹qag‹' Èºæ^¯ÅúSyBˆOñ	!>!Äæ†%Ç8-4,ivÂ„uÆõ— ƒÕÖgÿð(s—’4EÊXg|€¤DY‚mæÂØ©T£T)alêHM5Ë¨Ê2„ÎŒ2íAe€_­òÂz¥û±_™ùÝ«
8ý¼_÷ÄÝÜƒ€b eHR\¯L*“Â¤TÄ€¿ú‰;%ø›_–1húÊÿXþ¼úôa«<FØÈþÎ%/
6væëúiXê!Ý|î $Xà'=ºÕ“¯¦|‹Df”­ÇÒ²Ô
ÇBÌ‘5V7¦^;ÏáÂ¥¥™uH‰»Ì*š
±Ïñûxåûå¾tÕ¾w±ÜG¬uÇó\‰$b›Ž£„mD3Šbnd6ÎÜ“Ö}Jö©êÆ>kZ÷Æc9ƒÚ¡VVS8-Ž¯ˆvâû{ñ—@ò«]:”;7×_K¤XÙÀ;Ç	F˜8­Ë)w\%8sÀ¶®¹ÎˆIÒ,•	órG«±sx_üêñ"åß•¿ˆ9ãh0Ï…Úª–I™¯ŽY“,”1Ñ^Ddóà.Wî£ö¿¼\kÆäJí¡<sŸŒ¹OÆÜ'cnsÃÀ0N‹ÉN°ÆµþÃñ ÁÝÿÍµ¹Ö“¯† 3¬RL4!*A80A€B—:ž	kœÅ–¦6ÃB™r*¦¤L°	s&µû
d +÷å	Þ3è2Ž71 £LJ¹iÓ¥xU¥¡	n¾cPàê“]±5Ô·ñžpßî{Â}O¸¯¹aÅ2N‹ü*¢°ßïú‹ ¿Õ>ÿ]]/Ç+¤òµ` p§• )J³Ô Á°!Æ*¦•„ØŒ«”§+_C+.”Ä2cŽhnEBŒ8ôwûw=²Ž·üßÚ‰Emƒ@•à|yJ±¨Ÿ]çï$ø—‚\aþÛõ0¾ÎíÒæLN-fê´;J›ûô.tä`ÇžBòË9PüZGÉ„ c1M$Ê\†åVjŸ?‡æ2“1dA_*¡R¤˜T2qƒmFÉù—a[þ*v‡h‰ƒ1NÔf(MX’ÔãLi"±;ÔÞNOwO÷ïž·BÔÊ“âÉñd„x2B47,9ÆiÁaI³(¬3®¿¬öèhè%ôáy½äiµ$Òü¥6Éá4É8£Ô0&„"ME¢TŠ¥IS–è,IEíŒ&	J4U‚IËöå«ü!/‹÷”0Ìê…ö³€–ºÅ`¸¸™–{ûÍÄŠþ³ÿšÀ.ëÅóçÿõ]CŽ}¿S¾ÀÏŠ G€éýÑ NŠÌÍ7Ì'ÖÍ|1& ”¾Uo5ø°ÿZ›k@Lnkfã0oÑ?àýY>ƒ¿­ûè¦ÿ¬póå×ƒùû¡–Ò¬pK;í/Ü|œÃœ¾{á+>MÍ'·è?ûý—7ÿ|Ñóžù¿DÐŸë›ýß|ÿ¢ÿáÕ{ßtÒ»¼|[µ‡ñæÓ/·ýW¿þòËëW< ž”K}QÍ¨¿Ú_wªXØNLydüó/¿÷üäúP±oá3ùÂœ€öÕ\_”³†W'Í'%Vô{[¶Ú’³2 ê‹Ár³Øé‘sx'öU5Hàôñ×y™ÿöÞm»m#[}×W`¬ý°œ“®P ´Æ>cÈ’“xµœhYNÚk¿hª
[$Á@]òpÆù‡ó‡çKÎ¬H‚	 J¦ÓêNb“œ5ë>o5/ ñ×Et«ÌLQH	Ú(kÀâV…fŒ}ý¬Ú$5ëïå¥˜ëöò‰ÎNf3h^ÔÖz÷Q—Ì‚Ëc•òw’‘·Ì¹¯ˆZ¿ÊSi%"›a4¥¡ßJ
w£³KZ¶m¯ôd"}„[«³_á!¶ÌäµÞæ·‹¿­¸ÂðË„^‹û¯Qø–¦¹é°%tûLhÙ¸ÝbTtX‰y>·™×
¾ÝÌúäB{‚ß"|âÓ•8òäw8­¢ GúÈ3q~“MºJ4dÈ†hWá%7 ?†
#ÊyÔFÎq}Â´s@QÆP$ˆ‹9ö™K£($^À#ßõ‚P„ADó(Ì¾ë»ØÃÊS»êÁDïyªœÅL€_rçâo§—ÿcçžJóë¥ót”?:ŸÌ\v‹7ÚhvçøÃ©)bhÈŠÎVª¥‡²§
¦Ãk51DÄ8úìf$"Š1Í¬µ,°XÈz¿\~.þýéb’×Ó¢dåD)SžÑ)œî9Ó½®†ú˜pn*<ê¢’ŽI½
£Pºæâ‘é=)
?®&'çpEJð9]…¨ñtœÏ.z$Z&œf™µ…”B„ÃÁzŠq8@l{Šq×¤½]9<Ï'þZÚUÚü:T\§¹OkVoDQäýåÙž‘Kì÷Œ™W[¬Coñ³¶%'¼b”µEK
·“ÿ]`6<¬î•ÝØHV­»ë.oœí¦fÜ Múj¶‘Ã^HvÛÀ&'+ ã6ifÐ­¹k!®²6¢U¥ÁÏ§§WÔ6;í¤—žCŠÍþ9åŠ¶Ê²›Kñãm†TmqúõëÉûWxHû´†í[›ýýú–ÝíÕx‹¸Ú®=±MJ¼«½å5ØÕÞfí@PäI2Îj`´DºÉ@wµ­tÛJ±DC|[Ò¿º’3Œ·£|JHÇ2¹he&³$u:É“CÒ`8]r©u3éµ£€Èùdf²Ø ßªGÀ{gZT6·Âª—gÐ dp5> =ˆE”Ç: SQìRéEXÅ,ÀžòƒÈ¡ôB ^ÄIÄñ}ìÆR¸qˆw=öŸéi&3SË}±, Ï—« r½6ÚNÅxLÛHù…ôU¤˜©÷0+øôý_#YI@ä„‡£0ßVa 8Dë5‰3¾eKmùºÄ‘®`–í5†ÊQywL™§#•ý5tì†Áªp¥I³²]/$˜˜x¾`™ÅB|{ÆHë£ÙKöšD¿PÂõy’v/ t{í£ˆ#.ƒ òxìy(öº¡`\êúØB ó*ÁP¬BâáÐCLx.ø&Œ¹Ø•¸æ”Ïòy
7"ÉRjª³ÒdâLæã|4+gšhºŸô|ª’y6~¬)äS]£â­O³cm?«Z¦„U¯GÀy’©P&[U‰U3Í2 	‡QM¯¸$²Cçca†*†¬n3¸æÚ±Œ;Àb²\¥æI®HŽ¦^‘ræY9$cÐƒºIîšåàôãÚÆpóIçSÓª›+7´Í»s¸ý‘-@!ó×²í~àWÛ^{5 xÃšÐ ÎÐZŠÛ†Í,¬2¶.°C¾èŒ‡©œ“Öüiûd{ó"-Çµ´_ÇFTÿ¶…ølWZó›dJ‡LŽ²üÍÚDžÛ,°îçž“ïa•ÒšÈ±êA‰w³1Ïõ™sl\„7<ª/ËMkKƒ—+9˜©8æuÊå2=Ô¯b²Ü·VaÔ_% ÐUÞîžÙ²OdY3‘¬÷ºÑÅp.öQ çS9ÐŒFâT)8·y2ëÊòÑòà…-	¹”ˆ($A"4…„!Bˆƒ|¥ý·‘ qÀC/"Œ€^„ØyÄc†ZG;X~eJšÒ9fº†¯Ö¼nê\ÌA;5œ6 ¹×ï^šE~=ûÙ|ŸJz\ð¡ã¼)µ24KÌ{ÑPªw³yDÿ]ut³áM>ÿðìIózw?º½»¬;{2´ZÇpú4ÛÛáä"n Â¯ 
\Ôìâ²õìàÂn¹‰´ôu^ùûééàýÿ.OVöÀ®3•:Ï†ïÎŠQ7ê–K÷q¯›~Ù´VûÈ×Ò—|Ç ê«Ìn!0ûxoi616¿Ìˆ$U¶Ëì^Õ6XÐ<™kR½NÀG,`6–<´TI[êlŒ¨8’RE….}E"Ž\®|!/b¾aN…çKæÅ*Š¤+1ö¢ 4¸+äáüd.G‰s‘&BeZÒÆ´~0•ÚõñZùEMfÉ[çb”‹sU/Æü1‚…r>ó¼Îrw©ì‹^°BÓwP^néheP\‡›Ì¶äh9Íc\!²,OŸÀé‘QÓ†Ž	'ZiÑ-›ƒž/Í¬ùê-»°:Â0Óìè>åz‡ªÔ¼¶Íòt9¹â»™¡6U¦Éø(žOK×TÐ`§å?@„1=ê˜%ãÞ‘ÜÆW¢ÐõGÇ:thxt´cøå
ÞŽ*ÆUPHÕ×>"¥ùÈ´¼„5Ñ£º¿éÕÓ6«NfxÏïÊå+ó~k]š•jëÀø¾œOF6OGS>œªüÝêîí²´–ŒòIæ– ±íŠ*‚´°!<\uÌƒ€6+ª‹‘™"£¨TÝ4I°açûÊØRø]8¦w£4™¾œeuëìû³»eÆ[v÷au;Ì“u­–²v½q+ÁnÀhlª”4ØTw`îÁj3ÍAÇ²0?ÙpÜõ–Oó­ŸðmÞî­Þ÷OM(+ïºÞÝ;=¸ãnÍ‚®ÏûÝÞõ;?Èw~‰X·'¬¹™YÁùz+ó[Å?û§ÜÎ d>_0„˜Ïi„%W1Š¢˜
Â1¨Ë@cÅÞchö8ù¡DãL†| _ÀðI½¿#È÷=o£".Y+Æ‡\w í_ÔGìôL" ÛÖâñT´sˆ}fY°ñ}ý{•É¯sCH´7:wÍ‹kBä÷ê*ú"®ž}"¯Úx9>ƒ¼	4sp3º¾Ã¿OBÃíŒŽp¸–F]ÌZ¦¡ã
Å>¡1öiâg„¹GgÏbŸ¢0äqŸUˆŠ3Lâr_²0d‡Ðya‚~´”âÈDÌ¿ z²ÇiÎœåŒA"©{G*‚£ŠÐåkà×S!e„¡2H»¾££jGCç¤qš$.7è‡ O*Aœ:>ú/~Çß:ú¿Å`Þ:§ïNüñ­£ÇÉ5ü©Ò1ü÷fFá¿æÑô­óÓX=  dÕ¹ú<ßÏÕ)Ÿ üå¤(}¿:<[LDç~˜k1ã­ùñ—/ŸÎß:_õæóÉ¯—µCÈ¸°4|ŒŽ¦ššIƒè;Ïgs#dÂÉ{vim‘îh¥öD€òøæªAjóžHm^¸]jpwÝnG=§S5ÜQÏ÷psê£60wePÜk^QÏi¿.‘_´Nñ¬[ÍÄû
nÌó;Øî6Ç¤	±[/c­Á×{@l§VˆmÌy»;8Œ§3kñNä0Åšßu‹°ZF%p8¯Ru­ŠH&ÆVž!hƒü&FÅ—5óá66Ì€Ÿƒ2,ÖÆö€AÒEsög5a(b6#Ú]¥ä „4Á<#­A .³›6-2•ki*«kc¤ãY=VY¦3é¬u²IÙÖ>ÛGV‘<OÄò|áy.º(sc¢D³0&Dz2à<æ~„cáË0\Ÿ¹(ô=ïÊ¡ô*+¿ÊÊ›²2{òÄMw¤¥ö}Œ7’„z˜!æ¯ÉÊ,ôÂ~²r»ÔGßNZîúÄý¼Òr¸'iÙÒØù‚bsƒåóUlÞ‹ØÜÞ{@vÛƒ°¿~Ópùžáêÿ
áö/mÂ}•Ð÷-¡Ãêžo<JŸÈç¶ñd,ðyÕ˜N<D?Œ~äT2l/¶ë´^¡d“RÊWrQÌ¨–È`
? ÚòHc¸!Šü(ÆŠ!êºíò«xÿù‹3Ï¯£©yãOo¦Yñ¸¶F:%è¢Í¦20E¿Ök~¡÷A/+åÙÈ³… .èÑÑCy¹ØÂÅÊ”÷«/vˆ´¾Î†å±ª×¦ïÆtÀÂ6‘–0¤‹ó­åÓBt-º‘æàÂµ¥˜s5¨=QwX/ÐNòmûÅèW‹¸aØNè]äÕZlÃ»z+j±]ª]ën¯½½„ˆk]ÿó@ŒG5 Ë ¿ç^ˆ‰cL¶R®*ß4Ï†ru}w%“1	g³âÌ¼:úf	OùL·/xÐnö·Á¬öÁöŠþpOzq?²-£AwîGUHyLˆ‡—n¥ºÄUŠG2¶(t’L…½0JE€0VÒ§”¹«ÎXIgÿ2Í¨&|:šÍÇ-6V¥ËÅÊ8ÅÊ8zeŠè¸:‡Â­ºÊSâÊF:	LÕánûPŽš‡â¼Ùr˜2ãg5’?:[¥OØê2ìo£œœÝÎóÙš•¨S­ìa'dP{^š·Îf‚¹cÕÕvÔyMz»Ï!Ïóz²ØÊ˜9mÊÔÀi+½îµÓîw¯öFª/¦Ø”A®ÚÔ¶ùÌ’eÖ°¾5>´Æv›è,ÒÝ9[$¾ÛGó¤ô±Å~Œ*[È˜ëÁ8ð6RL™Ç|!ÝØhäyR ÷…Àí\ŸaŸy»R<Ïg&ËbM´"¶\G¯AáÍË©qˆo…çàÕ6wƒ¿ÀwÛÕ6ìb¼‘ÖL“§JV³Ð·ç/zeƒÚcsÐŒ¥ÇƒDû…èÍMð2ß@gn¢ÛÈFZƒ6¢»Ûko=¶ˆ×¾5˜á¶ÑÃö>¿mv×…ªæáÏZ®¤¿ÒGnU¾{…tG·# »úä5h	·¨òd~7Jó9¨ò²>ê!Ú1Ó%êÊ¤y>š¨ôZR¹7j¢¯û°\¯<îžXn °$+D\„aHÂ0æÀS¥ä"±ïI‚˜6³šs^*Ì`ò&êJ‡^žž\t7£š…*Ï¶â:/B­´÷ Œ¦ou·"Û\4VGyb²´-G’ißµÒág%_xî\‚Â8ÖVsÀj<ûöž¨‡.ÙÎ¾ù¯²oß]«šä~£Áú¾¶åjÏàAóïžG;¬F•Ð¥}­®f´\¼…iàâ¦¿½v×«XÓC6®cO&©ÞNM)¦*mÅÐŸkª]ÔÄ‚Åìƒ[¥j’äªÈ4Þ‡i¹û}÷T+3Ç…‹|DõRÜ”'”ò"hÊ=Ÿ„ô¥Ê*v%ÔùÝÛŽt~ëd©É-Šï<åÀ<Vœ¤`N±`ãÇán·Ç^œDúúéüóÅéÁó+fmÎ½À%ëM»ÔGa5•¶‡™,|·fC²ÝïøÕ°GüH÷éÿrH<¿mzí­Ãm¢´-N/Ý°OîO:¸žÕù¥UˆÐE›ÆÕ˜”ƒr^i­ÏÈÊ~›* =ƒ²rê~¸È<=ôáx¿Üƒ)Aˆò¤«84æ4¢n† P{$âÒ5'ý@ÅA¤¤ô	ð‡1QÐ&bÊvY7©´IW]<JMù4q`ivs‡óJ
EÖ
‘HUæ¨˜O3wºp¶vˆéƒ:å6(¿ëáíšJˆÃõrkkµ]IcÒËµg(þŽI|Ï¬–í£/yQÐÒÌ¸¤ÎHÌ`›ˆ{zÐÐëÞ{ëûLUU)žipr67lÔ–üÍd¸á¾ÖI'v2áYÆuª›î!BîòÕ±Z8Þ*œ>FÀM±OCéGG81¡ 8~PP?
lGÐB"„Bª@È¥^ìFª†kL4½Ìu) ùjÂGã2ÃOYš`4½Knu~#SAÿ,ÕH"l,Ö4¯KáØOÊEs§ÒyLæ}ãž?j5$U:|ÈÅÎ41ufz§@Á€Žtùó\áJ€ð™LK§Éd¢R¡«¦0zsyqòé‡b„€=Õ¹Œî¹˜ÏÐq>šò¢G•éD0|çÓÙ‰“é|H:Ž•Á¦³*Y‹G&ÕR¹ÂðÓÇ‘){.ð"4i«wÏSYFD™Bîº×yfÂ¢t}Õ|$|| [½™©»d|ANMn¨"ÿŽVÊtyùQüèL¬p–r?ÆIr«ü&“GSyuz'"+!uÎ„UœÌ||\¿ØãbÞLÛ*ÿ=3ûy¤:é©Šx"¹	úÒòSSµ8™®_Ò£0®Ta¶+™êƒpTž#Ãé±B1¢ƒH¦Ú³&ål+ð %×rG%±ŠNT• 5×T§zåÞêÃ¡Ž®§‘‚F=º+r`4?aM2]Ù¶UÊ#c—5	§`YÌ‘ø¿ß›–Šã£¿žžÿ~öáóéÿ6æýõ»j‡keÎña*Ì Ë“™Ë£Ó~ÇfAuð˜”Å„ô«žÞ˜å1¸pÜ•^ ¸:Ï˜V\KQÕÉ9€Ý¨ÚÂSñÝ Uó†›¯°lW™‰çBƒõ`± dn¸–X!tÚœ:¼ºî†b
ZÙ"PìäòÜ!C´çâ´&18\ãg}œÝ1÷Þ²Á$èj¾]Ž©Áƒe;wÛ.n¨tüæÜˆãã*“hè !¡ºÔ¬;ÐŸ|<Õ‡¾.ücwÛâ Ô¦2S%¤Žìq*Î“dÖ­õ<Oþ~¼o¹†÷üQeÝ[ÏM½Û®£8½íË¯¶¤ç¬.a7{ÌÈ4‡¿Ÿ½ïãìý§Þ8>=^þ÷yo,×ûÀòYìP{™Ñ…}{¹ÜÇ²uî©1­tk
”µsÃããó³“‹Í/x
¢JW,ÑÒÈ‰ZŸ½Ï3%O¤LÏ»RÁ³iÇ¾§Ùg•iy½Ûºé4žkÑ¶#‰ƒ¶·Ç[4=>þ	„´Û^~ŸŽ~ýéò’ÇÝíÏßGSF©†ëëÎË ›Â2€XÜÁe²Y¿1\>fãäº
ýèoÍ§B£ìÓVÿ%ç’ç|?X4‡Ñ: ’ýðýšÈnóúUå—ªÛr^¨ôSv}®8èÝÎDá2çù¼i¸Ðö©,Ø^äôÂø=õh
’íå¯ýÚÿ½a]¶Zï(Á-‘LóÑ£´ëf,°d·g¿^öCz‚9X_@©În’q·ë±@×]¼^bHäã‡;>îäó|¬4ÿÿðk…ŽZØã©6…öÂpvzÚ¯ýß>v]—~½ì½°?¥Jéß{"I&¿èå,IºIµLZJê=§_¾|¹¸ü4Ê&<7ý0ñìæ}?ê¢Qø·cÙé½0'Àñ>Nã¤–O?}è=¤˜U/4¿MÕùhªäáËã¬/_à»8û©÷ú\ÜŒ²›/¼› ¶†$¶~HÿìI%?sÀÐMè^¢PcÞŸ|V³1
–µ7ú¬æY¿#¢Ïùz©\/<—?õk“¤¹¥b^Ÿû¦|{ÚÑ*¹ÀñEõ’5‚‡ü”÷Äñ §¤†ß?¦Ú“âk$ £ôä©€¥÷¥ùã}2ŸŠ~Çýïçïûsdc¸Ö:Æå<Òn;=ýb2Ót£jŸÕµ~Î|ÔË"MU“ŽhtfÇ1\þ÷y#–þ$JÒÛKÁÇ]¹ì….Üôž‹ÛÓÂ×®š/£‰JæÝæ¡‘;7XÍÔTª©xìÌ´D:µ)(=P\Šd¦¤^Œnç¢Àòe¤@¤¹Ìµ;À/]¥Æªéciƒ¯õCZ¾ìíía¯ŠÔ.ã.äÏ2i‘ÀqŸÉ ž®zßjàä(ŽmË_Oç³ëºÇPÏ.}œåI‘íÑ6s£[W?Ò™ù²q;ô•¿]|øõòòü
Ãÿ-	þiƒÒÜãO¿ý~þáêô·O'_®¼!aõùÔ‹V|ø|ùñ·_W÷çO®7¬O:ßS°GLuGÆ`:™>ž½ÿteeÔ.Ÿ¾ ðfÊ¶\3L<$´	Ù)O›Å¹Sã¢Ðvßl;{o·"gÆú|6ŸÌ,hýÙèdcPxÏj³Ü¯Á^þrÒûaª}²5Ìmªi:mæ,%›ŸÄ4oæÜz5µ	1SúKKpPEš«ô‚çÍ² ½œ)Q{ Ñ°ÑWåg•'³\¿ÇXH\Ú’µzh­é¸_ãMÐ-Øjž7/âÇß,«4`!L[^Œ,L+ðR?×5ÈèññÇ_?|a­Z Ëhÿû¯¿Z5ø?À`ª++cÿvëwØøíÛØ¯VleáŸ>ÿ÷<É•¼ !ÑVìnckîd—hlò«Þ›Ç ÔºœŠ‹Úp‡5²Ì‹ß.-6þ"‘z¿l8-O÷åc·+Ér+Âg -_wµ†¨GŸ-”×Ö84Â‚¬Ü<PQºo4š[Ô cáw¥}-˜ÛPÙf Â!¿	ø~ž{žNuþã¦š
Ð‡þ—nÃ5 ÖÙ­ÿr9€?ï,´‹ø|:Êm´‘uøz¥¤G’m“Ôôõ$~¨cÍù`>“ð÷'Ñ…e,…¥ÿö-]¼í Ö|;4yW†/åŽô¢5-ÖýŸ“8é8‡º\¥O‘`†°cÖŒýP<íÁb®ËÜªÇmAž­Üë»µ¿Qc¸uÛs™[4×D›Îï(F­–HÛhÛnë¸mƒºI¯2Hì¾ÄO ë.f%ž˜ø}mÖ|^dñ¹Ò·ÝÒ
àX;TÔƒì}%ÀÙjÜú 6ü.ûE+%nr˜rX´[]XÐ—–µWZ–º’,òQÄu•ôB¦DÄ>“º8!1‰=?ŠBÉ‰|ì{!
üÃ9’q¨£ ý]Yƒ¿$‹ø2‡›ºV°mwJ‡ªÝtdÙT–æâÜóÇ2Ø­XS¤êFe£š@¶ÿ01gÉtU¾^‡öhkJ5Î/_.5½MUvôŽÑ¬ŠÈé©˜§bÙ‰£ùhú™óÿý?ÿïêÃ„?êH*=s+p“&ÓdžË¸; £™Š2±™	 Mÿ¬bTtã©|S+%©ª²˜a˜—ó¨(b•ëH­Ñ2¹Ù[U–Œ‹°¯$v–éÍ4rèb–Žt›N!¿.CíS9Ò‹Ëô ha”B¿d›¹fšgëüX@*LÎeN§c¹3îÔ€z›*Q†œ-wM‡w™ÞeƒLVä9‹õH¦ª:O=Í_V§¡‡_nbf°ÍÓ9]Ô83“Y–;Zn½)Í¼¨ôu³Øb=1>—#8p°ttªžáª„í²8fgËKç¤<¿)ã¦&œnu|tÛTèâhY¾<Qà»SŽŽ…Ôák|Æ£2£Ë³“z‡qªT¤ã‹dff²¶â˜»V7Àˆ„þö(2?pýê¼QB×‚ÈòG›ó…mÐ¹!YƒöÕyÉ&ÉÁžÂï/‹ ÏÓ»ÜoS€¬È¸0RÏY²·v5ú†–Q¬«Ê½«4°-ÛWCÄÈV¦³KË(Ï¦yË¨}¯ÚÃ¾†ð±M-àFM3XVž4W^½ïä7÷
ë” ;ÜPµ¦ÝZ|sr~yr…KÝnk2D©h*v+“\ŸTÝ°©¼0ü; CdZdJ°…Îott¶%ô8/ïêì–5‹gEÇV!—J}ÓvomÔT˜wk#:¬uQÓÍæãLLp¸²™Ï&ø›‹ßÏ/?\5NI·³Åßq6•š¥ZT¯®B¾Ùø\¿%öf¤'¼DÁWüv0­Ë%UZ‡ìíH­,H$h6=±dlQ…šŒOš”ywY=vÂ¿S.²íF‹^
bßk	ÿN€ä’&µuov¶•ùí@'±HG¢àtY?@¸ò|Çª5¶½K¦¼[ÓñxÄ¯f7É´ßèg#‘ôÃ ÚTœwC±†v4ZÙvÞ‰g°5Ø¦Íéam1rÝ é\Òžð¹â ¢®ï{!F(ŠIä)éî*OQÂ¸âÐåŒ#‡T½Z^­¯Ö†ïÉÚà?µ6l¯*âûAè‘õj¡ÉZ}s¡ë6§¬©Ó¯ÛÕ7µ7XØ¼·7XSYÃCƒîwcx°ô2Ýj°kY1´o±´HtnY&ì<u+ö	Û²ìUC…m›‹…m³Ó…e³¥Ã¾UÁø5B‡&KshY8}§ÉÂ®õSD×vKƒ}óÖýuèhÍ^Ñ¡ÉSÇËÁ¢¥3k_™WƒÇ«ÁãÕàñM+‚ñLQè{Ê•HÀ æ
E„â1ÆÒõâP`û*hÄ8‹=&C¾DXpø‘P~´³˜åõr9I§Ø·Ýv“Tv±‚ËºËZ%]á(Í•Q˜ŸôxŠ§‡lOÌÖõNL\]s¥vbêâöoÜËU|Õ?ŸQÿÄ4\EôÓ?W;¶7M´Njyþ.¾‘ªÙMZŽºüÙIzÕ„újBß—¦ÐëX)v>óú+›â
Ûïs]y…êè½õ1lth'+/¯âºÀÖM{RíÇÎ«ÃaF‹PôvÂ–+b¢E’DT2¨€Äq€£˜3ŠƒX—¢ñeì_ü˜à"!qUˆ½]^­'Î]¢”tŠ}¢@ºXçŽ ?ÔÕ^€…(˜rêo …šm¨ ÕèZ?(SFçÒ×?Û5ÔU Mùˆ2Å;Êrd“ùtñÎãè¼÷É½Ø'rŽ´|G®çÜF³Ì1\uè\$0ä¿úL´¨1àüap›êr/ŽÞü‘|¼øá­³È¿^¾€d9Ðý|ò¶ü"J’[Ä—B’*ó8Òy#7jx=,Ç®=ÖŸ9ïþýýýÐœÈºlû¥ ¹örá#×ßþrA]ºñpA˜–IªÅŠ‚6—¦ƒÌ©àVŽ‘ï/Ï@6ì˜bsÒ½åAÏs[ÊƒåsÁC“Kªc";HÖnd6Nˆ;‘öÐlœÎ&ëLn?KÛ˜çn®¹'Žc«à÷à9¾‘…DzBÊsº÷#L9ƒ¿SGDÜg‚x!‹)VD¸‹(Ž‰T¼òœWžnð²í¥ñ|êr0UžC	Ö4pÅs¨‹]ÔšçØ›'ƒët¶Hìë}¸Žíõ3°ŸÅè9ÙO;MºŽÛƒ!Ù„@wdL2›uÖ†ÊM@CL‡© íØ'XyÈe*ð]¡|O f2$”{¾CŸ±Øóö&XÈ0ÒäKoWÁº:ötvyñÊœz3§£#c§–yXÓxëdJ•åßôR.Îžž¼þÖHðmš?«…¾cø‰Nµ¨:³Áß\æûÁzì™GMb+¿)bËhµ.&öƒêÍùÎ”«îlnëä{³;´­_¶`w0+=àØÒNzX‹ÔRåªAÞÃ+Ó¯œcY<@Ø¸b­7èFÔF£{
^ôL
`‰`é†l)oMs·ÜT‚aS7*á®u±?öÞBõìÅà}Š™Ï±ËÇ%"
}ªéûâ.WŒÂ(âÒ%¡±‡c)$h¤1e.§ž|eð¯¾7ƒ§O<ÛÅà™‡‚ï!RÕ`=âƒÜ™Áošlwûé¡²xk¥öYy}³~û½òúïX}þŽØ:Ð„Aá79¸Mš™¯³øi¢ÿhfñÁ–C%íx{ÌÐ ]£Xqsi{sÀ'†#‡!fœ#‰Ÿx£ˆ
ùÒ—€Îc†ƒqQŸ.?.©qZÄFý}”î>+!2vUsÖZžßãsó/½‹€¨‚²î¨³‹¥uÊjmÊÂÛ_þ<ø®»á=æy‰K«ŒLXx==j83sZ†Å)³wëÏÒþ¥ù|øîŸÂ85gkâg\¼n<mcVkÐ¿î¶GÚñ´m›RÇN¶Þñm|d¤H_˜I¸ nàz iÄñ|†‰@TH¹Â4Œ@
Œý˜{Òõ&Á`É™ŠãX<F»Bx[JöMŠ–‡yž5)Â¹Þ†‚*!4Y#EZKÄ¬Ùlöô¨½’¢ƒ#Eû¦¤H;_vÍXHîj-Í.y¹’¸®ÂØÇ2À1‹IyÒ–Ä#Š0qÄbŠp HR %èN3ÇÏ¿™rHeˆùÒ¨ ¼Ž.w
r’©TÏh7ÕYÛ£…sja¹¼øxúaAÆF54fçgÐÉ³ªð4à®Õ;3£ÁÏùí.ä†”Q·j³7_¡…Z¸©Òcßs7¥Dý5O(PØ‘³|ú¤ÚYìÏ÷EtÎtðA2{9s½™u~[t_2CV^ ­Ôø-ÇXkyQ×»Ú½1Çÿç/»ªµ"¯v¾ÞYwùh@h—ðm;â^oÝ\Œ-’E- Þœœž_5'h\ðÔ&ØZÍ¡ å€\êG‰mµ©ÙC‘m¡áìÏ´ÌX›líÁuN~{hm†Ki¯•í`þ1S&D‚5dæ[Áé°ûÿºøðókLÎöLÇê=²ÌøO×âl?ÃÓT2›g6ÙÝF>…ÉX€&ãÛP­òÔY5ùYùìÒëé,;ã$™™½´Î²÷´Õ7O¶Ç³1Ñêê2Œ«eÌláZÑ·yf{! 2Ur”j.oq3à3S›Â¢ÁŸM0}·xÏO»”ûxÛ®j‚ç¹1eŠáPp*™ˆicó0ŠµÍTì2?ö•Ç#?  , Âï“ÀóÃW5¡šà=Uð"OÓºš@CmÜRŒƒ5»>jö^Ý¦&Ø¿û€¢ÐñÑïYíSQ°´ÒlÞŸWqh|FÅÁ6ñÑ¦aÕª¢HXöÓ¥Šija´[Ñ0ž36xCç°m¶®|´hµ¦…Ø·[SGì›mè%ö×Ëv¤uƒªÊb×ö‰æb×]ª0ÏÖÝéé½ªÝØÆ‚WÕÛ6ÛôƒWß¥Ÿôl~ ‰¸–ZÏa–}®ªC–>Ñ‹Z¶«(H–-íkS`¨ÈR°5	p^ú‘%BžˆŠ©G1%qŒc1ÁbÌCº2æDÆ 5ÅRQ‚æÇf	âÚSEL6êC¦ó(Q×ùæJÖ}1>UY	`ÉÏ¡P-%ö·ÿOø›ÊÅPO»«ê¬hf4…/fuD%B#î¤bæû¶ï7˜¸ˆ¸Š™GC¼UÈ<Æš3ð®Ÿß×WœÞIvÝ¶E}à>/óm¹ÍÚŒjTlïÞ5®í·y°Y&£ƒ4úbêÑ’r:ê¹5í–{hóFðQZ_W~	ZjSµxIý!XG6ŸŽíJ‹'‡°Wÿ+­¡[÷ñá~MtØ¦qÜ€ÃÚjä+ôU=¬¡À9®-«½e©†îíBOÝ7â…"»o¼K…uOˆW9Ãösh×ÔU»[³4Ö4ŒÀ«}XÃ§nëÎAQ¶†Ý¢pY·5Ú5t©‹4l³öoq©ª4•(·_êuE„oO¸“ˆFÙ¸qìº¶<4‘¹!¶#t«D>ì×VHÛd€©ç‰Hê'XA9«{!_¡ý³ápîÓ…äyõÂçW¾Š<Ì<L<‹€†s? P"I Á?1B+ß“^Ä]â3î"üÈÛå~÷ª¾¼fx¶OvZ3ÜÖ3š!A›š¡ß®·[3|}¸ëªâMÝðÅßä^\7´±^¾*‰¯Jâ«’øª$¾*‰¯Jâ«’x Jb/Ñd/J¢–þ_Z;Tn$0•>ò¨ÌseŒ˜ò%’„¹qà‡2ÄÜU*ôcÐC)=ŸK,Q@ý@×<Ùíuùåo?‚¢%¯UáyYÕÜjÜ,O«ªÝ¨¬øY´°Û<™-\5Ô¯ÒEÄVIs)~’1Ñõ„iÌ"!èå(fß*›Ês8V"ß]]p+ýl9ŽýjOùí·Q›ž‹6–]Ù”TXìëì1¿I¦õ¥(Yïrz<È“dœ½<UŽõÃÇ±+‚0"“0ô¨1&V®Î@íKÂv«ÉØãåŠÆq)»¢6{ˆž—SÎkg$¾)|¸´×4Øaæ¢â7oˆò‚é5{,Œt¥y.O–»uÒ] ?äæ&É‹vzPÆLÇgù<…‹i~h SºzÛ2 ‡¶À#d³€2&>ˆ7ÕBV.µ¾]œ×oÌN*†ßw‹lß nÐ•›°o>P`ýfŽíïÌÝÑO–´íÁ„k<Ae–Î`ò:¥Ú¾ÕHZ”•Ú‡Sw+éž?uWµËÌ¶Y”ØkmÑÎuöÛšójÉÚ}iÇXßS^¬@…enà…¾ )ÊgQJIE>rQ…1‹iäÓ@ù*CŒ8!¾¤d—c¬Qpi÷éu¤Í›°n*í¸è©´³Ã[5Àl#ÛEyUi‡"‚}»¤kú,½:©ös°ÇºÔÀØAÆ÷@ý­ˆîóPño‘hä+Æ‰Ì †kÈ#~x´I_!RO#ÜÕlôÍcÛŒ‘Tä9Sy¬Æz¸gÈŸaŸºâ›å‚&÷üqÌ§²Äb1ØEƒÒ6ÐÐ «ì×ñr[ŠhÏòðDTz~»“¶òGDJ,dÚÞ„yÄR>÷™«ë¡…ˆË%R8Æñ€	‰hìóWa©^XÂ®­iÈ÷)[ a‘èv),‘0ðm½·6„¥W¿­Žâú&\øfZós‹OßÂ*µŸlS,å(ÛçKÊÖž$[Ú“¶ˆX¶-ÿ¢¹Ž™^Â’wH¶¸-r–å ¶\{¹~6«ÛSÉëYc¹5Ïü&±ÜQ&y
ìå’!D"‰£˜E1<–2
)âë¿„q$A£˜¹Ü” <öµx¶Óa¿`9¶RZí,(úRT»©{•V…@ÝkW—}ØœCw×wi`k#¡ËÖ½õi@XUØsAìna{áÞÏ+`Ø¶Dì.?ýâVìÁM¹»{—â¾£îÕ"t“œ¿…o¾‘%_Ýø_Ýø_ÝøßˆÅë{6:$vžÈ¯A;Û¾¼XˆOKŽdßtïñëwáò-÷`‰užfIºo¬…Ž¿/¬¸öõ§KèE¡³Ù2¹·ðÿ²«6ÞËë¢ú‹:/ï°^<ÿ+ÅÀ‹‰‹bé)&rcìJÊ"`æáAb"?ˆ‚Ò®}/&!å1çAðj¿8û…û4ÝŽ×*º®»i¿ðÑºýÂ>’e‹ýâõÅª«ƒµ|±úkX0=Ñ@_Æ7M3ðjÊx5e¼š2^M¯¦ŒWSÆ«)£ß«)ã_Í”qh‘Fß¿)ãŽù7ÈˆgŒªP*8ò…ä„"é{TF¾ˆI %½XÆAÈØcØ•$ô¸øˆá–Œ?`2è
r4½.¢«×,ÆþPº´î¶Zœ8“DÎÇÊ;¹×aÙóLé0é§¸6‹4™8ÅB¤½Á³œ&Œú¡Db¬I´…o¬^•WsÃg¸m&66aÿ6õ›&ÑØ”èþ-ûp˜[H)›dzšè?lÈ4v‡¤#nG¨9Ç@>|IÝÈ#¡BÒU$!}aÓ˜ù®OÂTD]L#×0V‘
b¥Ýùv'ÌpsŠÓ_Ÿwæ_*PNñC¤Éó’./\c¾ášƒ"™æs>v®S>»‰ÌÑ:“óß_ÏŸ/š!‚}?Ü$Ú»È4!.ª’iøÊT‚ÜF¦)õð:™]ÌªŸ°?®]i’ÅšŠc20dXœ-:ýþòÌÑËýméõl&˜;V½œÜ¶¯D_Ò]Ö6çQ³š²•™[ÞDÜ¸,P=!ÏdÆÝ¥üçÃxp/åd ÙZê\ÎheèRE*V‹ ¢8ò\¥bÆÂ8‘$‹BÂ‚"#¥?ÜÈ1Cˆîzž;Ñ¤Ê‘£l6æƒd:~td
—<5îßAÚMî3#gAç&ˆÀTéDn»H©Æh¢½4,Û…‘‹n=è‹m€r- ïu°ûÚ¶:<úr(›²|Öë>Øç“·â9ðÈ“Ts@ž·Rbà‚!	×køì‡È¯Rcý‡ì²UÏð@ÆÖùäòÜ1yàûRâ?Ã÷Ý'>…qjºÜD9¿Áx˜Ê9éDˆw-A_RÒ¶ÙÁŸŽ§žnn#Û¨fWWØjºÆM U§Ýôu¤uóØõ=%¼dAPJ|O"?Ä„‡!Yˆ8òqÅ¾ïÓˆ>xÄP´‹´}ÔÙÐôÊ
!ÎÌÎÉ`•úö’ä”ð.‚öEÃÉÕ.R¥¦8§RÍ`óµoÃi2™ÍMžµJ.ÅÌ)"„~ zxÄaq&I®–d0+r/êC[¸&,È–ªb¸©ò¦0dGÉ\û'h¯²mÙç¿—ÙÕþ½ÚÖ™&@Y5•„ýÒó-ÉáÑýJ•32	ÜÒùt
ÞÂ0J[Ÿ> e«E20C¯m›PGwZxÊõj–˜¢”Ÿ³­Sq`Ì9Rf°B¿C×“†BçU— å9ô–Ý¨ìH;Ž¨¥gGu0R6h0(ÔÖŒm×_±…qw3¨åß¨õ7ô×j= zÛ‘öb=
ñ’~«ø‘ÞéD{HØk3ï4›ÙŽœ/þW!zuo*ÛÀjquùáó>_Á„Pc~	MÙlpÔ¾‘Yâ {ÀQû*h…ïa.xã {ÙÃš’½ÌÅÛÖÝÃY§{Øw/8zï-ëO>Xÿú"ØÇ(zoIP¿#Õö-²r#R;¿è]È{åljœ#[déã,OÊ¢ç-@7ê£×·<Œ”U¥3•ðÂ“é²a-•, µ×Ž‰ßoHc¶‚{sþñý]|øùŠ5^¹ñŸ®…œôi¹´ç‰Åä“T€\éZ@.ÜOl@­S‚mMBÛ&ãØ*çB§FMÛ·µU3ÿLs‹M/V¹w›¨·väÒMh\6¶"N+¸V”éÏ¦©Ygäxš8ƒÏ1c»ÕÇÞK£»Ý4à@*E(çQL]I0ãJE’<ŠüÐçŠ"ìsÂ#åQŽBù*F,výÈ^í>¯vŸ±ûøî»ZÎlØ}p€µ!·j÷!>fÄ«Ú}ˆOIhç	³Íîó/VHfÏ–—îÁòÓ*·T“	ho¨Z¥Œo2íÝª'©¥úX‰ö†jo£"ûÙß²oÉwßÇ´7Tl_¨èþ.ÝßºûDµ¯ÃÀöF®ØÞ=ØÛ˜‚=Ži_›XíÝË§ÝŸÝ8e›TtÍôÔ¥ÍºRø×HþY5hÙ·Z³ln¦Ñu£—e³ŠU«uƒªÌªíÂfÙÕ¤MÝû˜5Ÿ]Ê,û©ZÌlsºVMg/\Ñ	[nM¿rP;ídV­–°vÐíkV-h¶ºËÊBÖºAêù§õ*ô0±aÿùrÓ$o4½ œösëjr[pPÒ2Ã&)¢8òƒ@y‘OuáBêú:ÍR~ÄHº¡Ë\  ¹n€£0ˆ<Ï£ÚUše“sÊÉíŒ€šo&(moâÎõ\eð]¦L|•ch|‰4[Øí¾.MhºJåQiV+«	¼I´™¯0»=¿u(Uò†çC‘LvØ…¹°‚U_Ï€…ð?oµò6<=¢¤EôîØ¥“Ý8j:Zh@Zš†öæé¹VZ²°=·Eh÷ü{{Üu
–ÚRCÔÏÓnÚ2°h[=\ðMÝ¹ 8©>ÿ5c^@Ö@hwþÌ€©‰ñ¶Aû´Q-áoY…àk<zPYöøŽLÛ.ã.Ð­½L'mú¹â*k#Tü|zzEmµïW]ç[*­´‰—/¨šKñãm†XmqúõëÉûWØÚÊUik†úõ+c[#çöÆClk:ÚÕ>ì×žØÁvµï9~bkðÚÑÞfú}×-$gQhUåâÝƒ¼~Çç šhaSî–³EZ·(}ËµÞÉžÚÑÙ[:Å¨E¾b±Ç<$‰pÝHL™ðuÑ{øè û_qqFpú$æ®Ä"–
Gî®5=Ÿ¢ ™	Ä5ªBM(oÅ—­ÎGÓùCÙ
T‰X¥‹ÀÞ8Ydaˆ7o×ÇGG?-ÿúÎi¡[L¥a’Hå¼™&ÎT)©Uë”GåoÑc©‡¼u  ø„¯`l¹~‡n@ Á^ƒê¾%õeª?Å€N¡h¥îÌóÿ„^w«áÇ€çnÄùh:›çCÇ¼¯ßÆãâÿ>IoQ¡$q‘ƒ¶à|d*3¼zìÉqÖN‰v‚ çdIñä>‚®aîÉxn”Á§úí]ª\¥pH•Â¢œÀ¡‡ƒ9—ÿ˜g¹ñ9X¨hËn+XÊ™”ŠÚêÀu9ŸÍ’" P$³Gãk0ã "8orõPøŒ&Z³ù’ß+5Ý:K˜Ø",»èæY5À‘×®çÒÈkûÛ}BdÂ´«: 
ˆ®(W	ö#Ûé€åŠ]F¹Ù«Ú1€îÁ1 «ö×#dëÌ{+~!n[uwm4M±}Ûˆn3V;]oöÃP÷^Dâ•ò	o£Ç´Wà8œ«©ìÚâäüòä
YÉ9Z‹‹æYa3·]ƒjzÎÞÿ~y…¯,Eâ¶JãA?uÍÄˆÍ÷¾Å“ƒ½Îcˆe»ZwÕ&Ðßåÿ\~ùðéìŠ ½JÏe7·ÙÊoQ®Q/é£µ¾›·ÂeO åÞ$õ ƒ-›¯Kì-2ð¬È»×²h¥.Á4R	¥ŠAVbä
!‰ô]©uuæ´ Ó0Æ>‹’A©F1sãÚ<…„ùéòãR¢I³µL¥H›íèÝ¶“èÛà;ˆ¤õ˜ë­%}€¯<l¯*GCì¡õ´ì 0úa5åƒ‹dYDxãŠÓ2ðZ¦}Ø—›h¬0R=~¯¿\¨×bmúÊ†×¶ÂðÖÍipÙzË·	q{!H:ëÃË$…ë1Ý!$.Ñ„I`.u©‰8 XFá.¹>ó±ïRßd¥`%\¼ó²¡d¿i‰ï€’kM|¤+`®åm}Š«	¾ð,ýÕ7Ù+A:X‚°oJÒ»Až$ã¬«%“ P{½¥Ú«?¢ Ñáõ(	÷1kIš(RnÈ©Ð9·Á˜{Xy>QÀ°OA*ŠIòT@áŒ(\Â#Š¤ËYˆ¥Ú•­ðäâ£1]‰>OeA@J³œ¶Ù]^|ü<ø£L[cõür³¼³ËŠ6€ØáY¦&¦·:y-´\d -rƒ¿=’£¬£‡r÷Aò<)òj>¯OlÊÍ<Òþïþv“&Ó$ûYß¼wºó?_Šs°œùÂ>TÉ|ÓöÄ+¡._´NÍ‡<Z¥f(tm-'tPµÁÎCö-¼.~ŸêÒ£x¤ä³z[Ø/Boœç‡¤5U[Œ¯Ž–µ!MýØXäÚõ·‡¼ˆMö·Ê5ŒGÓ[PÈ--Õ–É,ïÖ0Ur2K—¶öZû1´zoç¤Ùï9ûpž¤{öß÷Iy¿F­
-Ó}îÿ"ïßúU±aÁØyVoæ_7Â€@Ð¢üewö¦J#ÐŽF˜‚L4‚øÒÓ8·vEþä ‡ù± Ìc!4¢QPª 7 -X©˜‡~ÄbŸqFe„â(TÂ÷æÚ!Qºeæk-ð­ÉÞ»ÄÍq}³Cb+*b—‚^¼î•Ëƒµü«¹d™@ßJ\Ô§êUf|™‘m5áïZ å€æÏ)Jmžä—¬Û2åoÉé{…3>¯ Ú5ì%Ü>þš«¶]|Kÿ2¢5î7ù!¾ooÓgö}®8±ñè¡³¼9DC\(4¤¶ S"’ÝMÛIš,TŠFXbJÆ¼0”X„…p©‹¹¤Å˜qé3â3/ð= ‡Âu±ÔßU
|•«ÿ¿/ÎÎA`;'Î,é<C:cŸdsí¤8•N¦ ’¯*M–052Æ!², ›g<¯LÛí©î@8Z¤VšOAp ‰¡tÔC:zóßó‘¸u.ô­Ð;ç ^ÌáË _–8·Óä^[V3…åÈ/Ê~–ÐGãòoCçcî¡–-çV¶z[NRãL­F›.õqpd¢²é¿çN¶p•KÝïüÃ
ôykƒÁ(†…ì{“™ª|—Ë##À	ªZc=?À£íÅfXèoØ8}T]ñƒæØã¢Âð¶þ–ŽäåeéŽþŽÓî-?û·´¹Î`°ÅY,îã›¬8èÿ)Æ³Åè*S:)ÔÖÜ8&ãfõhìîa ¬7Ø§î“ x ^xý·‘xÄÛŽû^H2ñ0puuBò 	÷În84¾¢û½š“–û±ÙÜíÕœvê]hŠ•*=ÿÐfÉªÕ´¬ä˜Ý¸­´9Ë>ºëqb>Ë$Êdr¥ÒVþÅ&M5L¢U oÂ-3@4Ëøltu›F^›ñý#]Eë!Þz«l?¶þÕ‹qÙÂvÄe¿œ%¡ÿwPa+­û…[RN‹¥º*4~R¯IWõKúëÝ’úÃÂåJK«@	~d„þH¢(ðÂ -JÚ(­¾ï‹0B/ô@=Q‡1#2d‘¸°tCóâJ!0Ðû»2$¾ˆæÑ.÷“XOUûä<<:Âd¼½vi“wzš6¦ÞÍèúf0S©YáiQIô	¦ÂoPEeøZöö¨Ô÷4ÈO_.Þ:×Éìfá¡óË—/Žä9wŠ ˆlèü>na«R.Gz||´ì!‰ó{žª·åLŠHÄÌèÆú'Å‘ÎÂ¢=ŽÆêíÑ4™"ÐµnMŠàï~¶?]8&KL·JÍ2g¢` f4zlÊè=€ûñèF'".h¦«¤îæóÉ§·ÅÇÌ9ûõÒ'É-ð·7sªÝ­ñ€ËÏSuÍM àbªIìÄ|¤Ã,cÉ4! 0Ó	‡‘”K“ºNùÄ1GúpÎóó¯p¶"dí¨Áôœfem{Ý`ñµÞÄTå Ý•ûfÖåèMœÏ®UþC1,™è¤ÌOÃÂý«Ž4Féç/W¨':0[°ÛQ”@„,¨”´*¾9i‡£(vÃ¹±‡<ÄÖ’{Äe~£•#ŠA‰h«ÚÿhÖûÍyåÃ§_ÌŸ‹r³óš”Çà‡ïÅ`½`}@9)ÛY5gõ ·ŠæYÃv=@÷ò"Ô);ë–ñúì:ÍùwöËÇ”æUé¸Îz±ˆ?Ø¦±5=|ÖJÓy	íkÕàëéçÿ¹øbªwØ7}éü¤2xp,­ßŽÛå+RåÙªGêaÆ[-÷¡ë¡OšU¾¸"WÀ„G7]Á›ÑQûÑ#à¤È j»2cÉg­ÛäÅñóé‘|Æ'­4ô8ôsqò	ÔNËøYLÊ»6»[mñÌ®
Ù„©aƒyqŽïÊþóê=òýz@ó‡IA l©Ú
úúúéœ\i¦G-'»­µ]¹-{¿9{ÿ±†çüøøl>OÍÀ#ÐÓóããOgµÅ_×`/9i„ý0½²›F¸ŸFcu|üžgJiþ‹±|5‚þ¬òd£=O¦×ÖÀ—¹l„ýxqz|üÛLMk«ÙÐ_à¼øí¢¶ä¨¼Häññï™v8iýýóG ý|Þ˜åéH4Ÿ©;žf@÷<ÕÙÇjí£4n¸Lîó|¤Cº¬ó<O¦’Ö9aSõ“ieœ¾Óé¬y.nT:”ï”6õ'ñº©6ßÉwÚŒ°p¨?ì€'×i’ó\-€wÀi	tDil—£ôß
à:Dæ·wÆ¤8¹Në†¶r(UÌçãm « ­'éL¿MŠl[€ÊH+Ü“ÑD5y	e…³q6Áš°>f…mç>,M-óôº6LF·_¤É«Éw³ÞM‡'¢L\w÷f¤ËÕØmé¿K%CJeÀ|ês‚…'¤ïÓ0T,P4ÄOÉ1£ÐóB¢|„‡¿ºÈÛõT–‚)Ü*ÍG±Nk§œk¥S‹åIÍcÐ‰£éÕ(/×Ì+ˆIU:•±}ëRŠIª‹UŠ9üño™Çƒlt=UòßŽ*e:õ£ªvŸHy%G™yBpxºXñèÂîuéÉD{-Â ŠFwNOÖ&c’@–Y3«ñ£~nIÒ‹I»_¾T,J?êäŽé<Ë—Å6ufŒ*ÊûQ~“Ìs“5Ó$ÞL ,?šÏ ÷x>;û¸V¾R[àÔÃ,Éé:+]r'e·°nG1gÐ1¬U‘¶³(U¹c0/Äž]óñ˜_eWÜ‚EBT‹øL?TnOÅ¡ãÔÉúû
BÐ¦úº¢?/Þgv¾­Àæ†Š»ÕâåýåÙ÷ò òd–½½!iQï‰´ÎíDfçÞ´i¿:[ßÂ(ÒÍ•÷Úu6[]œ|ùåê÷/Ï/¯ô˜¥z8+B¸ìmlKxmÐûíâ‹µ©æe-Cšz$¢æZmñåäüü7S‰ÜÊþ×Ãs¥S(´!·=„}ëç³Á4)™ÐÏM!fÄtv,‹<Xdq	[Æúú.£®XÒ€E®¢8ôÒ)°”hü˜q—¢0R„Ä¾Ïx„$a"`&‹“ôwI0ËXß$ÕŽ"Æ¿b­ìr9ù†8‹'…%åé²•~TÂ9kp‹RÜCç÷’Ùë^%·¹S&q<ªJ	ZH1s0¼~ÌçSèJ»vL×fdJäîH'ÚŽt‹l®Kkkßœhž=: se‰ö¬™$Ú…ð¥Ë„àÏî‹§0ªb~&—ôÂYçÝ¶­»Ý'ax{d³ë‡9uÔZ—#X³±eˆ:‘~¨/Š}êï¶
uÓ2ô–;\]3¼•Ü±ãJ–UöêdŒ-­ò€m£rÖ¸<CISÝÐí}ôð”0*îX*µ«ÃzƒZ6öãÁƒˆ‡n„4,¯Áò+"cñ²@hÑm/†¼WRVk_·¢3³%:Ÿ†ÉhÆ“8¢”zœ‘(",&R(E=Ê¹k7Rz.‰‡‘2ôå¯Ìö_’ÙzÖÌ–¹ázŒcÈ(ª2[8K¤1Â±‰ÉØ«ð¯Ü¶‰ÛÒ–1õÜÖ*«Æ·`»Íåº¿[¶k[ã¡]á‰5Flßæ%¢<ž'ÈcÛ¡–êN_\%f!’žOhˆKXÀEŒb ¿ŒF˜KÁ¹B2©çE!öÏ¥ëù*Bx—>Ó“If†Ë™p‹dj"¶Ë&»8õ/†¢”É°Œ‹n
$äÐH;¨ÄwÅõ˜-×#„ºë*¦çúk\ÏÖ‰ë™øMõÌÊ©ùk°<jƒv,îféÓ¿›ù¡föÒŽk[ÿœ|±èá[)¥ËÜÛë-Ç+–¤ÁÍ©‹%`¹Ã/!¶¼,·z­RøˆaÊçÒW*òÃØ!&CDC,.eÒ‘Ïq$âPEe$¯üêÅùAOøy~õòºÚ_c¡–&Ñ¿>ÇúúÜËs,=ê{d]õ$÷›mÉ<ô‡þ® C×sd¾Bp·ÿ¢’‘€D1ó#ÅÔW3„c%DÈgÀÐ«àw$€Ñ	…~Ì¤Tž~—D|g%žüä«£k^¨‡ˆ™f_MÐ4ÑäŽ,(˜6$Æê¾ÒÞø3%»§ó_—ŸØ§Î²§ÂÙêhUìX	ý‡óajÒÄ•0
Ò¯ãóS¥ñ¾)ªYéÅw‰ÊyÓ_µ–š@üÿ:ùúÞ°VøËàï—?@w'úŠ©Â9©ÌæVDŒsãe<—tì»)}ûõÓ9ô'™ÊßB3êO<Ë?_7pê³cªÿ,°?¯»Syf‡°1Ãð;®óÂí¬9Ä(äáZÍ!Í¡éG'œzØG~…Äk!/80·ãiTtõ^´¨<tzvv(±;÷ò¹â–e‡hG¶l½"½94†-oÇ¡'wÓ70“á?îà(õ`ÕÃq9æZÎVÐ¿Ý´¾ññ,™÷Âžd×£'è‡ûw‰£…5éïÃìõ%è]×Ùÿ·kãå˜ê45šò¦g£‚˜w„†íÓ­†“1,,ÌI±}|6Ú³Ásô0ˆ“iþ$í¿=+Æ«bË¤åKdHp¤ü ¤RÈˆ{‘‹C|Abî"7`Òv=ÅiK² Â÷<—ï²q^
í±«…œ"AËôz4U*5,§˜ê.|¤½'£¢¢{Yâ}Û%n¦ >Í•ôjkØâÆÐ…7—_>~ýÁôs´tw^°tí­¬ËV¥
XðÒšnžªÍßï´¯©o†Z8(›Ì+G†îžš.¨5Ÿj§ëÒÛzQëÞ°YàÚóbž«aå7@v¯o€kMa:3“ÄüòÖ‰’üFãQc7ðù²?“€Õ)¦­3Í¬½Ø.«pEÄ‰ß¡M"U9ò5WsÄÚ¹?ÎnÊ:
:%-Oå‘BÊ¡Ï³9Œ("??Ž_à¥T_3Ôº÷¥ŽíoèØ(ô·³uLýÀ0ˆª3œvŠªå·àÓÆj‚Ë›:0WnP\¶Œü·ŸÎ_”uÏf‚¹cÕÕ›yÇ|ûgxenKÓï"—ËrD<n;AÜŠZ£{s¬Ó&ÿoÎë4¼*`l8µ¼³|´Œjcóª€µ‡UÀ‘-`m$g°6B¯(lwFØÎZÔF{V[ÀÔ¥õ´³ÈÒöXHÛ•”¶+©Æ¶€¶—AÙ.¹²]HUk»©Î-cÛË œËò¶€¶ëÛ^Äxni{Ð®kc“«€¶ësmK#oø½-¤íJÞØ®Ïõ•½±=“7¶grd{·G¶{3²%£[[@ÛÙÞíz»lð¶ççÖönßÚÞØ[Û3~;ä¶Gív>±…¼·…Û¡±í1«?m!m‘±íþŒmÆØöhLlÇ8±&¶ç|b;™©íNm÷p*mYŸ½¢
h{#¦¶RÃÔ–²Lm/Ø4³FiËah{cÛ­™ñÙÀZ1À¶\tf»—3Û#üO[–÷Ï¹-uIm4µ]£Ôv©íBf¶§#³åË™µtžÙÞÜìÆöÄe¶BAf=HÛMÌ&¶D0›Ø2ñlb{22k@[“ýÓÐ–¸eÖ»h{i3ÛûÙrÛÌöâä¶'-·=i¹íæ¶[h-×å¶;“Ûr¹íòÌ§rðç$·•]¬‰ïí"Ý%¶§íÞö‚ß[ÛîmGù`»@|f	ù§ítþl¾eÚLZ¤³çëwþ7V@ÛpñI?‡ÕµZYh»h»?êNkÞø¶Æñë¯’(KÆ*¯K¨±²ƒËD,çuþeÇ¼ÖzÜ@_É®d0.Òk1<0ë¼ž¼©ãk"´¸ùvOŠHŠ@H"æûÜ#<’"“Øe	å)7b”FÂC„cŸHyXú4R+¡ŽOŠo‹ßOÊW­×çÅç}^L¦0ÐÇI”ŒÍ$J_¨|‘5É¼Æ\¾,Gª«­îÑ£)R	k56°ðFñ™^}æÙbs÷U<J³Ü¹\Gp<Ïž1ÅR‡—ÉÀöe@Ù†û¯ëë'÷Ê»¤ë‡®…ÏÑÚ•}›L{9ùzm«OVß&WÛðú@Ùøú@Yøú@Ù øú@Yøú@Ù øú@Ùùú@Yøú@Ùûú@Ù øú@Yøú@Yøú@iüú@Yøú@Ù øú@Ùøú@Yøú@Yøú@iùz Ô¦Ò:Àö”ÆúÚî¥re¯}éçÊý<”vÏMsuòq¶1ˆ¦WÍ]øfs¾'Lú™d_£ºãéˆëG‚vèº<Ý§¯ÿû­~6Ìb<êúvKtŽþòÌ°–Ñ œQæQ,©«  V‚â@PâÅž/ý@ú±‹(AóK—©PxˆÄ’Â£|×Óíiá¥TÌ«¡N~«”ój¨‹¯o±ÅüÉÕ¤.P¹N‹Ü¯YñÆºêÅ ×OÎ›Óóú¹6=²èð­S"–ÃÅß–Í²¢ÑÀ¹qçlð~þŒ‘‘›%^ÊÃ‘åI
°ïÖËö,Ì(I5|EB¶=%‘Ï<²žBÈÅaåM’„†)Zï~“\Žl`Îã€µ|Ž<¹<wÈ}›L^·'Éísîû$I\´Í;ô˜ß$S:dr”in»XC\›Å»ÄºWœ<ÍhžÐ´>Øä2E¿•x7ó\ÅA1ÇšßªÇ²àîÊñxèÕ-£u_ÀÕ¯1­Í}PîÚ@ò\é‘Û€Fs³#ðÛàZMë¦Š†®-Ââƒ5Þº$¼ÿ˜gyôº¶ã,³\L›ÉGâªä¿Í§[Ö¬î‡M­™ãDÙ½N^E&méÆ¢È£žT^ <%#"‚(övâbŽBŸÔCÔ#‚dÄ/B"0f’…!Ý•¡ÐðîÂ“jb
]fN¬éVgp×¢eý¹•g`—XG„ßZ»¤ ââÒµ\H°à.ƒ¯¶IØu)	Öå  ÆŒV“Â7Ô£ÍÞIÅÐKDÜ2á'îè…Å€>9·L¶·KlEKþÿ„îì`©[®q->»Jp;ðö`Õ†òÝØän/!wC˜êp™Êç³z¢Lk•KÃÐtÒÀ:C*@-œÍ`wgš˜• Öœ˜×´fþ0(Û¾fÚ¶v‹\í´Eí<³:&¼m­¶'ÍN?ÿÏÅ—Ë_~¿ÐEÛì˜55	©e·Õ0Ï³÷¿_^á+Ë©Êq›jtèeæ¡e½úk!®ZÕ¬4øùôôŠÚ.ß“v–ë°ÑÎZoØ¤MƒY~£“¶ªmXmÒzá·¶¦Võw·¶\Ó4o³ãsÎ°<Œë÷³\áÀf`öÏ‹ÂäMî!Î€š_×<-ƒg©1–r× ØÒÁh:ÊG|<0„iÀ¥ì^ë	‰?Ä¬£Ô‹=Œ]ù’IŸ3„)ô"Z€âÊ’Çy>ažò0òãJéI,cí’z×¦çÀôGE>¯-«Ñ¶æ“¶µëáÙÝðŸÊ±š¦e´E7>C….©¦ÿ4_Ñ á­"/ñý \/tìz¾.'±JÆ-òZžÃAy ZËÃÏWGé=ÏÔ3JÆÛf}zÛÉ˜Î~ßRP¶Ü¯ú7š´¡W6¢vMÏÝ…íõ±\ÏGõ¶:‡Úd\¡ŽûÜd“Áu~ÛkBÝÞ»¶-¹	#Š’$oxòVe­k^‡öÄ±&£ë´WMÂ^|ŠùÈ£J`$C&b$ˆˆDSÏQ Šå!¸n*sÎ¸z<U´ƒO}ZLÊ)&\p	œL.–8pÍËtèÊä­”kÜ¥1W÷&ãZtbŒ7|$uÜXMgGˆ5}­gºýáµ»ˆøi.kOæ+çzÎEÃÀÝçZîÒ3ó«e?ßŒKu|½ÙË‹Jz3…ž[®ÙKíÈšu©áAÁ:„Ù”­Õ@Œy–Ä Oš]÷zehew4ôð:W¶ËusP¯$61†xDBJ¥(Š…jè>Sð°@,½€Æ(ÆT!É]õ%>ÿò«sZ,œæ0Ÿ¹üä,'êµbaK_†
“*™eN’p
åÜÄ|méúYµ°TIàªú	bÇKCø[yi0_yÔÛÊ³¼€ùlý¡3ìºnµðöç…=Ù–Þ‡Aqr€j·¨½pº‡Ç‡ŽLkéàîqíZþ„´MêlCÈjž’m,¥í*IOw9£á¢v»Y#(Î'1Ã‘ßÂŒâvmD ÿ¡8 .Ú*ÏS±ÏA0žÄ@ÉBN‚@?PŠÂ÷4„^€ºí2#8ŸØÙ©sšLÅ<Ma‡œ?ÊYÁWyšŒâüî&c—ËÓ0´+ÖÕâ{Q¢*ÉWQéF™j8&ŸÄ‘Ñ	RxZvÆc%š1i¾,ÆcˆàTšŒ‹|öüèf¤R½'&¯Æ²Æœ¶'òÄ”—ƒÇÊ¹Uª@á å…_L <GEvlè8•É$Óñ££ÁÊìrÇ
¦¥_€#•ß+5]L0{{¤‰ÜÆ
¨Ë´y\Ç¬küLs¸: îÀ\#“Ðàj<ÖÃ+sb˜Ú>šœþqùÌ•u–CêJ7ªN3Á4ôDW
Ý™¯°‡ý­TƒRPº^êŽRÆØZ±;êa8¹Íd¾è ¸dƒÚëÕBAÙ›ÇYµðÝ—$?gÑ»–«Ñ—ÌS†ˆ×ŽÊ/Òc,GÚ”£áÜÅX¾9/×•*´.ïö<­Ãx˜•ŠÏÒ÷ŠÚi«]#óXÝæ½­ÝK±z˜ñVèÇºmÀ'üz$Ú4xñ—×ŒgcÒæ8~Ün³ŽG¹¢­šÜM¯JßÃv]A;©Æ ,·oâBûVqÖ¥M×fíïOÙð¡}«´Ã¦üJ‹Æ-;¬²á]›ÚŸ‹v@‰;l°–dO·ºíÚÌó8ÐùâÚ²?­ÉŒ½kÁJ`Ñy9¦Y¸4Xpªd§·Ù§¡4¼•ú(&ÿV„UuÍ…µÍ©ÆÁx
êl»É¸pé|·MåW.'£9ŸÌàË\ûÔÁÅYœÕCŒ“ä¶"ÕÕƒXL9{œŠzˆ'KÜÇ(Ð¯Àûs˜Ñ5Üc 8Šˆ¢‚úŒÒ Ðþ¥!?v¹G‘Ëb¡ßó<7rc/ð#Ä"ºDØT~/—Fk£&nj¥ËŽWÅ½wÛ9u…Øõ|šVRã]Õƒ×
|ùS¡Òé¾K3€¶lçZõ²L2yhŠsèÚ*ÎÚÞ[×›A•öpÀÖŠ×¡ÐÅæÑµÕÕž¿öì¶Óžá:è€É7‹÷.æ¾+ >Ïo®®§ÉD]ÝªG &QŸi7²¥`ÜÁBBîÜ¾•»67Âo÷Æ½Û—Rt=š§}V¾"`÷@QJÚ}0‘»3‚RöîÚ¾Â»67ÒxÇÆºÌðMóò¿/Mi;	@«æÅ•oÕÄ\òv-àZ·j×¦ÙÞ¡…¾¬mÛÔæÓÒ m·J‹+Ø¶‘¾t­ÛÜÕ&yÚD_¬V-ôUjÕà¾6©Ô¦àò‚&Ý¢ÃçÑQ{º¾h½rP¬dÍl´Mu}õ°†“Ù6x5«½šÕþ…Íj+Jf^.ìA‹ÓaO$•HUnÛ ´ÛÑÔç$n½CzdØ9‡doQÈGX.’ï"ä˜D¡ëÓ  ¡Rð=ö¤-ýØ¨¯$÷}¿.…ÿì°·üüëoŸ>8+„9'›ÏfIZ¼ÿ_V¬„–6³hK—2[Ã¨½t/+ÌG3že÷I*—¥6ÖÆshf¶fâ¡Ð_·¢¢›¯l(¹-<ÌÚ¾ZP^Þ‚BßÖÿ Î\bKè7·þ%ePÓá¡É ÿ²õ×£Ä8M¶˜Â5üÛºMéð¶ÍÐ•`!»¼Àë~{‰ïàE_ì=´Óf/!®0sõ(H·ÿW3LBÔÆ‰K—I#$=Q$7ÌaždB,™Pˆ….U‘r=óñx‡÷_¿~t@=—ÀbŒk—×²mE×4[Ü'¬áMgQƒ·×Es&Þº´æºÄ£¨šzÈ%BöòÚÒÄj!¢|ƒ…Uí|u<ê…6Îo0¦rN\fÃ!ZÊlO¶îPäž"dj,K³›…ßãzpÐª¸fµ‡¤‰‡AÀ€&SPè|?ŠÜ h´G¤"¾Pue„}‚º*$Âs	B’B®ô©ïj_ÞÂíûIdDÖ±¡”ëåÛNÙU–Áqq@yÃS%W´üh®c¢£ÇMb¿Y¡_—ðl%à±€²p#‡‡¼ š…Ãõ¡Íùg×—üUUÿÎÀàq;²ÿúœðúœð/üœ°áÐÁ8¥1¼¤mêù\xQDû×5z½TÃ¶ö«6	_ãf:ZÖr)~ü±ÍJW[œ~ýzòþã¶ÍœXmkðëW8>OlS­1îÙÞvw´'=ûÁš¹þ?04ØQ»<¡ÖFÐ§IlV¡¿Ò´äð|7[ Bü„SmÍøUŸø·¼u­Q#_f/=|¦ÒƒŠ@€ˆ ÆBª­©D2ê*¬L>&xà‘cW¹!Ÿ3SW óáÈ¥+ù=ü¦ùlÆTkä§TëXz;¥:C„¼õÈ{LÃl-³%t®KkZŸ¾ïB§¶¶¦~Gz5f¨Ûxv?º¾*·ÎÚÅ	Àß\þñëññÉ<¿9>¾¼<·×ùmì O›‘7`aæ²ÃI·l–¤–g.Îë ÇÇä(Oê^+MfõEïV ÒÔëOõþ¹¸ããžßœšT'vm>yv€¿&ÒåE’Ô{:/!?[îÄgØ†S n*ËµÐM>+í¥,Wùs£#ôô2- ¶ì
öK:‚;ž[®Ý—‡ôïµ~ÕU8½}ù(~„[.r“¢£m»Kû9èf—Àæ4‰lÑ:˜7¯ÿÕì
$½«œ±«fšÐKß ‘*y•tÆžN-³qi¸¼ÒéÛ®f÷ûÀÒ…‰™M¯òtžuÂ¡s0éß[¶­tmF¯ËpÚ£XÌ;™LF=ÛæjBÛ7ÎZ·Ñ¶ã«lÁŒZ7Î=Ãý7#nÑºÓó–=¼Î5mqz”fXöàqvÅ…PYÖªIÛAA“2ÏW«63®o‚a“­Ú¥IÒnp­`¦öðíÎ†.mÕúº\iVŠtoÚ®¥ùÍ¾I2Ë¯Ru7Ò²ùUÚn3×ÚvkuÇÇó=š‡¬]™4ìáóóFãlßæå¤S»m÷K·xÈ5ç‚Øâ\AÓÌ]Ú´jbû£›½äSŒæëSÌ_ý)æ°^HàÌixoH¶œÏd|×fO^s‹m>´ÿÅÙ»¼“hÊÑá©ÄÖÂvüé·³ßÏ?\þöéâäË•¾PÃÚ>Óê”§³F ³Ç)?O´I±ô§ÑXQ“f¬;>þÅ³hVáóôøø÷¦°{ü8‰,ÌC	ð²1Lª$¤‘h^ÿ{žêLÂµö…ïËßæñ¬×T^¸«Î”
×µncLâˆ0ýø¢˜ÊÇ±¢8¢a$)Ã!¥!vYL"!‹Þé
z9ŸÍÆ&3|*œ,[„dn{{Êv`œgªÈcµB}p/OnhtIBáµ—'ß§„TëÑøljª­¹ïâáé¯æÌéúm6·í%•!ÓáÁiC¯)w58À¸Å¿¤+×_YMyu®ÞÚòÕ¹º—Þ÷Wöµô­[O¤«3þŠW]Ö¾&å®ÔÖÕ†Áƒ‰J¯•~¬Lµ|6²!íð`–Ìæc]­lšH5HÒÑ5ˆ˜ƒÑTª‡†ÜÇóüæOÁŒCBõ°‘šêÈå:…¿_=ÔDk³ sÑá8å£Lå©ROûì¢ækÉf<Íž¤Ý±€5ëwîÐ.ëÙµ,C*h¬"ŠœïÇ’yô¤p#ú,ˆ©ÄAˆCÁ¥«J}¡äÌ§"ò<¹³Î‘.(¤Œƒ.ÑSLÏuIG6Ž„•EYT9ªâ¯…êZ>óÜè3:Î]26H‹æG¦Saªé Á­Þ‰1`Oîu£%æcÒÉ§3gó|díaôÿ³÷®MnãHÚèwý
Æ~yí˜’L€7pú“ÛÝ=ë{ÚÛvÏôžØˆ> V±K5$årõgûÉHÝJRRªÊ=5»3VIÄƒ$"ŸL$2'X)i’Oó	Œ¯Ò×0œ¢Z ÐòÛO?<h9Óå¤Ó”!Â@d3 Þ±oeâ¼Ht-_Â›-Ãt«j˜|S­:ÊñæÇwp`(ç“iW€-«bôûÏß½ÿq¬yÈonŠ±®nïLš"R¿›qÂ6íkÏÀ½‚wpcb5Ï[ýò°Y‹„û^XêÏMÍ¨/Mó+Lrm2a˜	øG“Ä	 ÿöîç´é~YúÊ™•9)ŒïíôÌË¦³SÁ¨ŒÛÛz÷Ý»‡SË±!1æÇÍqøø_~zØ ëÜ²ç+ûGVbqÞñ•æåí°3YŽ—oƒó_?ôkþ³ÖŸ3ÑõM¡àÒŸßÿðáõ›¿u¹o_[;ÌM„™-ðï¼)Ñhòòã¨ÈñØ¼z2¹}rÕ@~ú6/6¥Ã|uWæM}/“5ë'Ð@¸`~½ú¶Ðxvé¥,Ê7ƒ|?J+=ªåd>ÒjþJÉÏ9ºNKÖè¦žŒwTm¹+\­T‚HD°¦Æ[];pq¼QµÑwãñjJ-ßõïTk!áÐ(¡U#Ô3]¼7/Þ™ÂÂ‚wÚùöãw/ÍËÒ~‡ŸíG’Žý¢‹ÙqŽžãsªGÇç¬oÉaô6LŒEÌ÷sÍ¤Îm>ÀH»¥°œw¼ÖkàÇÆì>pegÈ/ÍÛsóv<ïpÓãÆ“r`Ó2É‹—U³•].[Î!»ðaÿ€­4Éðu7»»{m™ô>#f<„i$ï5zaÏ³S„}¢‘ËÓ–]¯[œÊìÕÀ¹›Ø€ƒNA	­)Úri¹t½ÕcYuxaWNÛu¾põ<ã1Fñfu’z£O9Qí7÷ñ«"©
,Zº{2?x‰Þ}¿¥8/Û;›õeD Óm£¬ïšlg5k»n\žbØr7õ}Ÿk»Q¤üÔÇ5:’<ã¡öãLé8	½ŒsÍã,Â,”›y ä	-³]ùÆžÛgÃöÙ°}6lŸÛ]†mðÀ°¼­†-sCÆÐ^±lÁÔeq°jÙzqÌYp8la‡åÖ=2áë±mb ³m}¶`P½mÛŽ;C­‘ÛuË½'üªÙÛµÉŠýÛµIÿNV-âŽmZÓ¸k4@¿hƒ…±Üuë°µš»^¿Õ|îºç¸bGwKæDoPØq|6¨/–ïh«MØ¿nöˆbY˜ÒO>YÐšÝ©ukjŸus«ÍÝ5‹ÍÚôF‹KgwxSq»ˆ¸›qAüIA*b¯‡Aî±0Hcîz‚ù±’™†©b¾§t–I®]	&{Zk'Úë=H5æÜãœï0È1öÓ#À¤ë¦”‹¹{4ÝÆ`ƒ¦ûÌñíÅÆ¯[0Ã¥v€YsÌYÂðçÓûÁò7ç:9Ú¼`¿«çrFpÙ©®^^9ó
¾ ëIÃJÉ\÷oßÿ 3¾rînòôÆ¹Öµ“Íñ*CŒ1Omö(FZÞèaf¾Y3S×zäÀ¨KzêÜsgª¡	ÚâEQCSWAó	]Œ3Ø3]€‘7*µº‘õlÐWÿ[þ#?·Ã¸+ÞÙõý0ÁjÞrø*`îŽM±ˆ‡<^Ï´Ã¹pæ­˜ð‹ÃÃ›bV´¡õÃýó½‡Aq.{áçi5ÓižåZQš½FáäÒ2Âc=óÕ¶î#?½®½=uáoGôxb1BC­&·šgÕž{Hgy±çg5Íöÿ:œç&Ô+-J½çRnåºZO‡ú—‡jŽü}Žö,Ÿ*ŒÝwSÆ†š`òƒ>&E?§½º7Ó_j‹>]]„VÂWØRtµïfkàuj°XOãq°<ì£P1<Î§ó/Ãé[bƒrqDÜå’<Ò×¬¦¦¶ç“¢a\E‹ý(‹¢0`LeÜMCí»¡ï¥A¢C¦™›Híf1S§µLd^ âP{‚{;hØÊqœ•CVË±Ü½²:R&½¾„eÇQ{ñFƒÁÛÚùm^ÕËË«ä¼.àqå©óÓ‡÷€4C§ø4½f5ÕÖ[;ÈÊb²•Ü=e~²®üˆ‡"Z§GXÂe¥ïÕõÉ<³£K²£ÅG²£Ãe›ÏË‘ºWm¾,SÂ•<‘{€ÁßCóØ;Ü&Éz:¸ºÉU-èÆ‘×ÊÜogLüˆqV&#!X˜FAyn$\ÍXj–ºÌ]ø—±X¾%Bz!÷£hçÎ:ŒFz‹ÎÅÏ¹¾ÓfÛØù»Dõ??”r6Çƒ¾0W`ïƒ¹Z)µ
 ·u1˜»‰œâŠM{ø.¿ÍG¦Ä¤9ûû	V\ý¡Èvª_ý e=‡Ùð
|°ÒçÓë½›m\¬n¶	P,ÚQï…¹n°±×æNˆV·Ú‚ ŒÂƒj†yhçÏ°ï[³›fÎ]ë/©6£\]^	úàÎO?éúýãB­ ÌT«ì¶Í×ï[Áv­»Ñº,ø»Q‰õ~ÿ—w}ö~a¬!öÆVU^ë^(9÷§W°({	–å_t¯„_ò^ø0‹U/Ë[Ö·Í4í~XZæe1l*²öÚ*Å†½Œçu­ËÞ6Í®«Ö‚ãš1,Åõx8ƒUÄÞbÏfõMïV½¨rÒëÄúgU¤s4í¼>»»ú3ªD¯ÏÏ@Á"‘é3Í¯­«¥ón¤ºö:~å_’yÖ»NñåssH“fß·s®óýVõêj|DåeË•/T°^Y0	tßwšÍLJªêˆ–˜2²ÿ"ky}D+T¨Eïv6Ì®÷pÖ}g~}k9¾ÇíâÙu6ÞÈ2Kæ¿ÿÞ§C¬îeÉ<z±Q^¿é´«;ô·
‹ÂãÌî9¦“y•§	†’þôJžk|ßÎL#«9û¶<¢Æ80k˜*½rˆÜÉû1‡¡Í‡Ñ§·EËyYå1-õu¯\rm3›Z»W‡:¹Ík¾2Í¼¨cÓ/·¸±1)¦û;!F¢{¡ŸÃ!ÖY÷9m©ÎãŽ‚½![œðÆ¹q‚þ.¿>Þ9âŽX›‚Å:ÑŸ<åB÷ñ»£O„Ò¹ÿºÊ„ÎB&¦µ[>öYr¡¥ˆSRe©»¡È•fLì<hÿ¦˜NAVÎ›Woþô§W?ÅÖ¼ówÿ«b¢›üúf86îuÜ©+ådbÎ`t>šô{‚#0hÛXÕÎ?K9›éÒÂ¾‹Ídª¿X‡zQ:/>þóí_^Ú(ŠªÈê;YêÁ¦¿9Ó`$FÞ\9 ´Á\¼‘²²~9øŒ¡±õ=†0º—‘ã  (Ç2TKú!ºr>Ü×7ðÔ±ÛOéøÕ§¿]9 ß¼vn$È?®
'Ñzº§Ç‘ü+¨’«Á÷y–A×&xss´èÍ&Ôh:Ã&euð9Û¬ÔÌ±*¼^WWMc¯õuÙ„Ýc‡(Úàa€
V0›'RQn_à;5²D cvªë=A³zcÃÂ÷ÂÖÁ´áŸ‚ŸÝH¬9¨B—	¶æ¡
™Ï<v0äÚ—x¸ÿõíéºòì\ýöãw_Ë¾E÷‘8¹ð¼øÁÒÃÓmÓâ£I÷yz.Ä;{éæ¯êÝÛñŽ¬Þq	“í•0ƒe®P_K}KúBŠ|ÇÐ•ÓèÎPé&å™øÏ#QYy¡öT¸Aè(pS/Rú°Ø3)ÏõTÆUè‹0TìÇžV‹C.Eœì
5hœGËcWMŽXPÅ³Ã.ÃÖ±³ÊƒbÍæc O®=1ÅÊ7#üx‘ýc]±úqèyŠ•±Èg‘­0ÆÝààîO3Ï:*;ýº¨×³èÔÞ9a%ŠúC7xâÚ•Ç~pŒvÅgE®óŽ\®®Uò¤,´8ñ¢ ö“ ‰¥%ÊeÜ¡/5¬LÌXªcîûQÌS‘…—ÁÚ+û^Ê]æ%þNþ*»FiYåÀ×•†õáé;Ø4Ç¬[fÏÚ˜4ix°=nÒà¦#±¨«uÀÃÈs×—0“Ai¹|EîÁ8ïfÎÝ2x6¶†0¹¼ç©Ðö]Æ"ÀžžœU`¢sÆÁ‹RYC\:Êâ”2ÖÍý¢…¼Ð×–®¯Á¼B €x ËU,ÃPeYæGR…°ºf"“HÂŒEqÄé?	õ®c?ß¿W:iá¥3þ¼Êž»ÿ,ó±Lòqn}Fj.ÇÃ¿|øy÷{m Ð5¬ìóÄDˆÞÀkV™ÕëÁ“Ü„«åê)|Æ¼EÀçúÒê¹®—¬Cµn@ ü¸ƒËeC<L•?Žˆò¾–p }·|²7…¹^Ø{ùÜç@¦ã‡ïsGÜŽ™”·áŸùÓáðq—¡cöÒÙà>b§º{nkã*V†¤½òüÛDÖ¡ëô•JæÕ½²]Ô+ #»x>.¦Ð;ƒFx0|GŠåªñ‡<XîNðŽÜWYevðUxÌ×m&4÷ûi@×S\g Í˜ÎÜÔãn*eÀ¥qPˆh9:HÜ0Ð™RšyÀt]OD’Å®
2žírƒ`…§¼n3Eµ; Hú]`î¹›YñàÓ¼œ6#¨¿æýÄ­]£Ö›ïêk°ì‹Ö¸Ø°+@B|¯ªWö\Êå®R:­Bô×b b°?v8LbwÓÖðáËUkÃ‹XxðüÄbÒÍìÚyÓ7Zöëª”³ãžOV‡nOu¸eŸšÚõ^€ì¢wCŸ´k`ßµ¤Rè–IaÝ}­ë_­´/>hˆâäëmÌ°Q´ˆLîiÏ¤‚Å>O4f¯r¥
\•fÚóeªe¦Àx‘¡¥n"½ á‰`–`ÚÈ4MB±ëôÃ›µ,€3“ýk‚'ÒœI1Åð=\Ø—GÜÞá²·ou×N3F}GhÖT²¼‚ÿQÙ•3™áeWN^Øk9ÓæÓ`–+ûPéÊþl<ã•Ü”d4ødA[wT›Õ°20±„Ï–8˜·à3ÚSXŠ<ÖD3+_´Z9É½…–S'Á^>Ãw6zÁÌ'˜W0ÛÚÈ•Íñ4.ã3;®#“$o"¯ê<­©Vðîr:xûêG§†•¨Êté”²ÖÕ¢q§µ’c"¼ÂTæ€)d²34¿€Š¼²ýå|†Ûù ¬îŠòv¥åDO
xíÌ@ÞÉæœƒ§l4l›eïÍ‡Ÿk_Ü‚\w°èÄ/|úï•û¹rä³û˜;®9ßÂ‡ÁÏÌ•ßXd¡0i+l~‰&	 VíóSÙâNä½ƒÃÝÆ3¨¼šá;%kùðÙäS¥QÌ«&U]å¼xóñWÎ/ïß]9@G/›'l§QÛK;3àŽW‡À†™ÀsXy\øPAˆÛÊµÓôÔFs]tbo¥¶oÒTeß€@×ã"‘6ØÞÇaóÄñê¢Û¾yOIbÞnÁyÑ éª—•WlfË8¼yûÃG;û›pZò¥	}ëéèºP²T£“ªFe²r«—3o¸z9s9ÛN¿¼À÷7¶«üÈÂÕÌÌ"f7«ì
8´ËýQÎˆsœP}‡‹­„Õ+›ü”=¼ç“)	/ìyLÉfþzÑˆ³ßU°Cïâ`xn¼N.¸OÃ«Ñ1ƒF¹(«Î'/Åñåwº˜tVÀ³Â?Fê¨2;Fiµ­ÆÔž;¯‡ì+ðjÁU»]7Ê‹=ÎœKU±ç¢ƒX¥·ç‚F«í#òÀöþ¼¯ÎV«¿O4`í ‚‚6ÄË$¢96†a rë¹d^?Ó I2A±LÊ88W®'RžÈØq„šKŒ…Ëiq)EœºJ¦™t•í
ñ]$‡µœñøòke³7wíH…Ù©1{u“†-¬}ö8·@†ä•K€3zt]ÊÙ(-K¦xbñÍL"+)²AmPVs c¯Ûù]7S9~µuìuùbsw„ûîV6"Dà‰uo„!VsY)¾ˆ08:³s²í¬ÚùÖ#hærh,"f¼#ÙÉ–1X¿ý“}En÷Ý;Y²•èÀ^ÇŽEck_3}îB0fêé|VÝè1’é}¸‡1Ïˆ¸{(Ž	Ê3ßF©˜\45äøÆí ìiÖnÎä¸ÁÐº	ö]_ßî«rbû{!“ü@@Á¾
(Í“âSÜŸM-…¦Ä·e:\ÖŒE‡+g÷),­.Ä*¾ÚKÉð«ÇŒÏÆ-§Ž0=í2tÃ]—cóü‘Ymæ××(ñÁ[«&Iº·ÞÔp†)¨¼üËõVÞÌlpå
`œ:Ó%èzUæÈVF_&ãÍ6·Þ@;¶I¦þ®ï>Øáú{QÃ
ouÓ®ý·`ÒwV ·N,÷íæ™w7™i8l",ÎOùæJ>>²åÊ§"É¦\é8V”™KW„)óƒÀ"îæÊP«TË˜GIÄ´b*`1÷R<
¶ƒòý4oƒšñÎ6’š­S®"s~þømK÷îøi‹Vpäuvª-Ï[­õcN3µ}¡óº´Ý|$/~Ã¶ïøcpÃu—“±p­¾¢ðÇÀìœšçé'I;. æäNÄ¡ßs#p/·Ã§sFnw#ÇFsn<º£pÄû0”÷|âîî£[ˆÙ;ŽÊ¡KÆ½×ª#ÂyphúwZ^ÿîí·?÷ý?~e¢ãÙ¥yÕ/ç@O7Ý™ý9=tÝèàŽ×lëÁóÕ×ì<ÉõÍøÕrv|U»Ö‰Ü7˜E £,^šºA'’y~d±Š2¡tûË"p•†aÂÂ@òTC+)UÈ]¡´š³È2Yì'ï0üõa¹r<ªjö.v7¿’3s|º£½MäÚœr.çÓ)r‹f¹	Uq3»½¶,ÖÓ¡	Tjö!í¦d15)l¾ F+[}¶H&€qðÁæø«v>6Î­É¬˜â¹l“Oßî¢úGjÔn7D
W«y½
Üy (<ioÒ	.:ß	Ga‰p%É¾ù*|G.`¬ë¡Áë)d;D@Y†0å‡GE?}5	b·ÜêÉŽ¬˜…ýƒž¬û+mYöÃu«d´öiì-ŸMAsæñ9œuwïèœxÈcãÞ.®—<˜Ç©.×<JêÈãÌ—©
\Hð$ñ—a ´HEæLË$“ Öi”¤;ÂöÔKÎÐiï¿×YºÅ’ïì\ò›¥~ð`y·™9°ñ÷Ü€óÊ
Y5álÌØ0Æ“bUY4¹†Ú…¶‰ù©±”èÇ5Ø…˜ p)®ö çÞÖË°VP§²‡˜QÜÁÚ™ç&·ÜÃì¾U˜€†q¿¶`¬­ôi|Qzšê'¨Ð"¿«Bó„ï?îeÚh-º„¾ï·§Ô›wÏZî¨ØLÒ3¸„z5·¨§ô$.ï¸!b6ñõ^W=¦Å;2r]êÙ~SO~–7ùJn·®Ù9›v‹Äg]Ûõ,èr×Çbo¯þþÝ?zûîã¯xú“ŸÐ6<¡íƒìîm½ŽÙ^¶¶}P6¥{[ÿ„±ò;ºF¶¶=EæŽ5·µNxFÁ	2‡ì„¶eÖã^Ew—/úb]smkÚq2lkÚ±4ÒÓL©tl¡'  ¥ß1#¼¹¼òú_ý÷á¶YÇûÞhÕãVVÛu\QÖuIòô ÑQâu\à×u|×Å=†µzç;§=æÎø}ŸËû'™]kÒ¿æ4çS“™¬k
Ö’²Nz×'`¹ôx"Ëë{Mèê_ã¼Ö½Ò2WUŸ™Ò^½x§;Îÿõv'ò“¨pÜµ~óöÖuüiÕ•Ot·»ñˆu¤;Û1pkí;.’;Û1ô«íyG-·³ý‰ã×ÕìØÕ¾ËÜ™·¨)ö\QÌ4¨“›Æ¼Ûg(vßÔ{Knmz´ÎcÝÏ§¿çûìØý¿>ÜÐ|hœíÜÐÄ­Öqžî‰+ÛåHÞ²£yŒ?cs ÏkÝ–G Ú‘Ú–Í 1³Ãº;¦˜•úà5öÝé!g‹‡³é^ÏC:×u¬”ö„‰ˆ"å²Ô•˜9<H„Ò®Ë¢8ÐÂyyž–¥”"‘\D.ÚÍÎæ\_Mæm}zXMÍæè—¼n§Ÿ½u¤Ë¥[{Ð8°m½Nã^4'L1	EÑì»š{x1º-^šŸ*ëÇ¬‰,\½+u*°‡$ðj7œ<¥[5÷üBŽ‹6;ØôÚƒ›¯W{£Xç½(mwpcr©Õ õ×[W¿í¡Â_nQ¯l4P/×½ùƒu?=‡Çó˜›{”oåj¿c“¥>A~ì=páûÛÓUñ€ÅO_¬¸ðcîGn°z"#ö]?öºì-^ì§6¾ÓOÙ{B|Þ™÷¨…e{yïa:þ§	<ýøÝ§_sXµ@±’n²5®~®þë4ÝÏ[xç{:å;ùâ;9!ò¼år?Ê×~”“ý(ïúQnõ£üéG9Òò å:?Êg~”³ü(/y7Ïó1^ñcÜáÇøÁ»ú³{û½»7hì¥CM¬Û»—küdëïäcíéÿîíøîçñîçêîçãîçÜîçÕîëÎîìÇîä¾îæµîîy>ÂG}hflmthyZógwscwõ^wtB÷õUwwRwò÷vI÷óEwö¯å{>Òé|¤·ùH7óqþå£ËG{”v%íC>Úy|´×øhwñ±~â}by«ÏáóÝâ@]íY<§¡`ÿV®S;|h´U¾{°^Ø<rCSÂZ¾Nž9«ßî{†Ëæk<Æu9¾V¿.yØtæñØI,S¦,ò|?‹­ƒÄKãPy©„®x<ngIÂY	æ‡*TqÊ½øÙ³ûìÙ}úžÝ kp6÷„ÏÜuÏ®±³5Ï®ë‹¨ãQìmžÝçÈì¾Ý˜±ž5\Ö|»r¢Â®aBóò~Ýý½¼Ï1ØÏ1ØÏ1Ø]üÉÏ1Ø{œÎÏ1ØÏ1ØÏ1Ø£çìçìçìçì#|äÏ1ØÏ1Øûc°é\ì41ÊÏžögOû‘žvýÅœ)/îlg~æ‹Ø³Ôç‘RB%Y <‘˜²M"¡ë¦A’èˆ«Dù®ð³4â‘Ÿa>“4»rg}\ÜÙ¬,&º¾ÑóÊÖÇ[¦¡šèôFNójOæ¬5oú"w‡ñéÚ¤œY-‹ÔÞHt„OÑÝ¹š—DW8lmÙ¥±¼¯œÉàßÒÔAŸ»q47×ê¢Í(Ò¤íÅ\ ¼ÒX‹æé9–cWtv,G³ ¯æüp}/ZKe÷p)·søÙ«|TapæŸî£ús»‡[ÜGÍsµÇ?|\RÌsœ¤ÚYGåAvëj}}ß^ídõšWßÿòúý‡wß÷¹vøí‡ú\ÿëßüþ§Ÿ~ü©SL}l&ìPŽ«âW˜Á£ªÞ¦6Õe9-:_E_Læì²(«ä~–«¾M±èÜ4½ïÛì¸Îªò®sœfÅ¼î~}1ƒ^ö]¾,s`‚-‹o¿ðÞ’OóÚê¿Ë‡	ø‰HS®‚Xz:MµŽ…™¯T’Faâ3–Â,ð”Çbí¥¡ˆt¦}áº±<Ä\œ·‹{ëºß¿`(Ò˜àà´‰Æ0A¦œOÓÜ·÷6wü¡YÝ˜×m>»rVöå¥£J™ÎÞ˜J¢† iYŽïIQÔC»!_	&Dj¼,bøôH
{x®iWj² Ž×smzžùfAR¼õHI¶œ°Ï4å8šõM¾¹–h|ýC(ö*ô%4ò“ß.?_bÐNçÑiÙÓ2«ô†bÛ}é+œq#µ[q®\–_÷¶`+ôRË®¹XÎRÖc…ª^\Í†Qâ†±Î”2°ÿUâ+¡Ü8Õ™ŒdœÁW)ÏÂDÇ‰çkOxAù,ÌD’ðŒqµ«x[ÿh¼Å N³Ý†Ž¿kTäƒÕÖ“p'A+qÏæ¾ÕS6O6jx°žØt[ÒÆ[µ’Åô)ªä¸«J8‹Ãd¡¾xîz%Z»]*Ñ®Oïg¥|T®P¬ìr¬ïà¬ÙDÀ~õ²ÇyôºªmÒåc„Å(;ï`ök®î½­¬î§ø>¾þðÖHèöŒy”@š§ó[UL‡f·¨Sà‹ÅÏ¤ó²ÒUŸ®¾‚›ç@?X ŽœêqŸ9úÇŠì©ôØTké±L]*ð¦_ÍSlù7MyéÔühfÒŸïÔù4+:Oîî¹ûn¤*îÚÂ[yçÖcŸ_OL
I6>ò´yÃ‰.¯uß°Ž­W%³½…]á
 ä® éÀÕÍY}GÃßägyqR*ßež†‰Ÿ&,†¿|¦u”F^FA‹4HùBÄœ3ÎÝLj/áJû™ïìà>Í_á®œŸ—ÏG»ëÑwÃ¦Ù,iBK–þ!¬3ó ºÍÀ¸†p«EÛÎácª+ è‹ºm…)Oãü8ÓÓ¿~÷·Ö!U5åj¾½¯1|ä	zxç"hg¡¿±1ãÆ«…Ð<¯èë Â9úì:rkFôôáXâês#ò!ì'¿ë²ûŠÄ¾îË²õ5ß›ð%Ùçõ¾`XóÖX­|2Cã|Hz:?=‡ÞkÊÓ_¾0©—Å^0ßs5yÌ#¨ËòX	Oiø‹…:XªX¢4ç‰EA€Ž¢ä°êû`nÌñMýÍZ*ð	*5¯»Rc!_ßÙð\_°U¥Ï³{HäÆ|ÖkGé5îz=Û7ã=
U^Õ/nŒŠ«Ôþp0!÷.ÂæwÎ*=ÚÀ?Š*=Ò#×>Èfã¥S;Ûè…Lò½·èíÍ[öU*Ëçp¥ð]sƒm~Ÿ«zøB ÏyY_cÄýåÕv(#!¹Ç•Œ¥rã,P<NuÊýPxc5S^+××™çiŸÉlÖ”G~œ).’ƒjûMYTÕðï·ÁC§¹ãŽêÛ¨©ª9±`‚MP{£"Æì7&ã\Ž‰6µQƒr°}¸qY_\¸ŒŽøÊwÇ~çj§œyþºå
W¯zp»Ç>˜­Ï:þ(ï†á©Ëg@¥?|õQË§‡ÑºCÍò©êŠw p*ÍéŒsi$|+.®D	áqá§¡ s1QIÂ=Åü–zÎcP¦Òç‰T1×nDA¿e±X%‡CÝ÷(${ÃýÌÉp»æ9ì±(a-ÆØ?‰‰Ûp”‡öŸrT1‘ùty.Ïh(Œ†/æõ¢¤øT×˜ËnSP~O4¾Îï_çÁÅbM?ù>‹VÏåù{„ÚNßguœ†ŠÄÑçó6¥‚BüÇ²ð°ÿ¥›óû}‚w¨&Bô±—×ƒ™ô·?}úÕ…N:lkÜ9žm{ãŽ»çÛwŒ4ÙÞ¸ãÆù¶Æãã¶5öOiuGÚÞø„çŸ"v<b'u}ÂMÇÇß´yýº5þ2xQñŠ>¡­ËëAœ_Þ¿ãèÒuÊxBªnQ·ÞqðÎ³ù^©úQ
ä¥ÂU,V!óEæëÔ“Yäû^¤ðìc’¹®ô£Xi-ü„	™j¤L³È:	Ã$ØE‘¦û¿Ý7è“y%"ù‚¡zƒ4ºAÚÕ$Z6ä	P@tX˜4Åé`ólÈú‰¸º¬ s
—Ølc“8×Us˜rÐ&9v
#;ª.¡fûœp’óúí˜fS øæ“=ÓT³]b:G`£@\Ó²Žá¦Îè¦Mýùhð0ñŽÒrÂüã1k[ý,öÂ ûaÅ+qti9ód?ÌøÖùÎØÿÆÅæ€šÆá±Ôtñ,ÎÍIÀSDî¸ÔíFÝì~&K4/{¨»Š+úp-7ôÜ8ÚMf t #&³,–,	c•z<P‘‚¥ª„'1Ð‡G+²4Úéü~Vµuuc?Ü8¹O¡6úz0ž‚âxJ>à©+Ž‹{Ù¿rÅa‚¨/®5/ñÃ$òÁ¨à\aÌ|7Ó8e‘+£Ä“0ðÃˆ	–†Lx„K£,á	hêc‡ÖØtG[µó±¹É½Š#·ª¢=muÛ¥¿9Yn,ÕXdd1£Á[,z2-æSÜTÍk,£‚ëùTË2¹wl\}ÕdfÁbÎ‹<ÃO ŸŒõË+\iª©ú¼Ëf/tŠä7ÖU4œ—O7¹\Ø9o‹Ï9îè­-ÿ<d@ò×vZÁ$í£ Ì{ö_wFwz­õ·Øñ?{Ò–ƒgE}òaÃçÝÍÝë{ÚµPžfÅƒ¯àõóè'{ úu¾ùIV¾hÊÿµFÑ1'…ŸT÷m|úêsõ?öê.ckÓž_‹ðÝê<Gƒúsî‘FîœÎ„ùô÷|_ŒÙþ_¿ò‚$‡³¯B°ït6f×`B}¯GÊÀn]Óòí¹xãL÷æUý=,µ¼†iqÜ.ƒ%lÄš±ý+^k¤¡qíªTxAÌc©P¥®Ÿð(ñ’0e!ƒŸâ(Íæ2ße2•iìe*ðv8V^ÏU^8ïu-‡ßÉZ:ïlÁÔ=.y× SE.ª«f&ÙT&
oª­ò?£Ûe‚Ð
¡Ñ«3²”ãÁ¬˜ÍÇ²t¤éÝ>‚jä¼™—%Ìºñ½ƒùríÞ@å$E}ã¼ýÎûÌ8~â¦Ë÷¼q¡_9?^_;ÿ(ÊÄ²%êª½Ø'fÿØ¼ Ÿ:?¼{ýæ
€Þ\>Î´þråüS~F‡Ã•ó©œk;:M²rîôxŒÿ¾þð½Aë—·3mt×7ód”»<2˜óÍõÙjØ{	saWX¡ÜzþºG†¹Þ!ŒqhçõPôÚ¿}g<1ŽyŽï>Cû¯Ä'³ížO?±ÍÃž1…˜ÁD^«w¿ƒ«~5Zlß	4{Sûtî®µk\—ýÞÝ°'Å.]½]]|ü
-g8¹B÷Ž2ŽäñÇø#™wp<å>–+ïo÷û¡ÉqB¨™¿‡ž‹ptÝÈ9…røJr{Lî{,•Î|7IÓ‚æi˜EnâÅ27:Ò‘Çu \Dðø™rüÁ)G°I9ü]'ü÷÷×)Gú›@±ñ1”£ûîÏ3éX%^ßMÿÒÑ5ËÚ‚}ti@GCìüÓ§´•qlòÙ'á¾|Tä‰ÅBOu v¼÷ß;Ï¸H#IÙƒŠVÏM¶3-ðŸ.l‡/Þbôu°p©,J’4Ó‰ïf™®æ˜µ'ò%|“ªDg*IµˆE"Àºn)/öBÆb¹ëlåkçãë_Lhà8—ÓÚùÏOïß9¤Kç®ÌëZO‘üÕdäÛÃ€>Â°X
´Ž·Ê-¸2ú” ð AdøÄ‹V¨?Ëq®œ_Þ¿»²H•Pb¤v—ó)ÆGbu*êÏ0#ªú~€ì&)çu^Ý\9xóúÆ'_kèÉ€k™ÓšÕPª‘³rpgùõ´	Íœéb6Öƒ»›Â¹‘Ÿõj¤dÑ;U=Ï²æ„gUL0¿Á$ËiŠÁhØ’8ÒFÄr†íaä|‹a˜¸rÛó¡0r¶öd&S}…wd¤¸ÃNàvdiÂ£¢‰Ð¦Bè;
EYÙçHÊÅnàfGišM\Îÿ¦Åœ¾ù^5ïÈn¶žˆû>·r3ÆÝh#×ð8_¬Õ„Öma}Ìåš—ph_¿‘}s»P³×ß9`,Úü¢‰Ñ„ùñú‡w//JÒf³4ôÇúÈ°þ­ƒp*Sc^Ø÷Èéäóôˆl'™;£F´?7ÿàC|¯u|þÏ³bòç“úh€C<\ïO¡m&ƒ>°Àöí¥áuÍKTÍšq^E8½>Öæšé© 3•Å1¬*‘‰ÇtE—
!\†E~=–?Kt ÷à2Ì?áFY§1ã,AÁ¶*À¿ÛCùÎËö·ùÔ¬ÇßI=)¦û”Ö¯CWM`ar”¹Þ(¤0F>FÏß`Ð~ƒoÔèXÎA¥Õ÷t«tËtc+ƒB~5–uzSéú•}x[Wg¸(ðãUg=9¬ÎQ°=|2ŠøzŽ!|ÁWÖæØ¦©A†Ñ08"VÒ{„XÉ#WÞ•{<yÅå¢o
UìßZµå­Ü‰ÓÅdÝŠ÷Ç
U< æ·¢Òû’Èªv1ãüA;¯kr \d~µ¿OåorZU6D³kõË>dËëÁüë¿ïXþ§{|‰Þ,r\ôÉ9âTÎs´Ü¬V`Ýoõ}uZ@By­ëtœk4sÌ7ÑFl°žò²Xú:‘"^‚%ÿ˜æRp/ãI(²P	©B–ˆXºZi_i–$®ðcÍU$Lïâ¯§ŽT“|šWuÙœÑ¸A?¸=ËW”f,Ì}ï95¸ÄF´ÏKS"÷ã›o¯œÞß›³Nt¢à·m'WŠ<ãÓ›÷¯Þ½ý±=³a¯pªyÒÔ3@s˜f0LÇUaRé"Si¹é®q²´Ðv_Œ¦`Ø0¯Ò*µ˜;Ã,ÙuÞ#ðüØ[¯Ó‹_±„E0±‘Tû\ÀÅKÆÂÐ?”~)šŸCvœ=y:{iÎ}?ýœ—Å÷q^½kÏ„R“[ÇàŽÞ³tïzÝÕi³—£4KËîÅt5—îùPHP,{'‘¨SÎž˜§¶=xh—6³Ôu¸Z%ó}¬½ìÚMAÜ—}¾½¼¬+ÜÇ9|a•9ø‡0â°æëƒÚõA` m8€Ð^ì7½w¨/Ü\>Ûm¸¢•_£NÒÿÉ‘ÑˆÜebÄ› î§÷£À]–ø*UÀB7Š„Š²PJ.•TŠk$IÂ“Œ±(dº¾ÿcJs?;ôþ'Ô¯7í¾¾Qwæ(‰Ûj±÷/ÔèxPrüilŠêÖ‹VJ×2ßŸM`W/>}ûíKërxó§?-ª·ý¢O}°ìÉÀVòï"ãÀd9LæãÏP• 3uiö4Õ#Çy‹yµ€‡…€ÚÁEDÛX‚´0ðU}?ÖtHs`7ð3\§òb^­ÈCC½<.‹˜Ñ` ·×æ`¬œLßéîm
Ÿ‹Ñó“þÂ¡ëõ÷8¯0á¢œ6¬hÙÅ kq|h+Î÷Ê¹/æf?¾Æ»,ÊÚwÆÌU5h—Elú1G‡ÈfŒqð‘/åSèÍfT©4'i¯œiaÄàiýZOÍ&@¾’VRV U©eÞçÊItŠ;‹3¹´1í%ÍìJÌä2^ü½.{¾Ná|{"ûl#œBø[‹¦ÀŒŸáA—}’í20Œ{ož\}‡/O13¬ê“ÍBæ Ú¼ÙÓë°#(òr2î¶™$Æä?xúF‹´Ïµ¿‚˜_îµ€Ë÷Ò§ÚcV—`ÐÝ˜'P²
UíXYZÔÅuµÞ`ï6[;]Ô9tózÖÙ½tæX×ÕS‚Ý¯ì|Ÿ[ºÙíŽkÆ;%y(âÖ&[<ð0š‹:Ëò(AÂìÐ°îhwdwâkeæ{ÇäéD?´
ºnžbˆ,ÔYâE’eI˜Š82Í"è„e™–Ò(–a–d~aXã*r¹òµŠw…?ÛÏvÁ¿¯]>°D»á»a„^,ÖCyüÈ…ÿ_Myž8è|Ý¤ÊÝ÷ŒÙ28.ºúì–ËEOëªeÐ5¶º1º_¾b+ôm´b4tŠä&°lˆ­ÖCÏ$:½Ã¶/¶Ï}ñD$-‰îwõ×÷~Lò‹5Jþï™3¤SÎ§
é„Tñ§0ø@±@ê U±J}åeZi&RŸ§nÊÒ@zKyÆv#º2‹3‘aÈ\%âÌ÷cðHj›T·†Ò‚`ÈÛÔ’,Óðî&ðÿ¹Lý»c÷®œê~¬ö¶2´»Þ*Ï`ð£T‹n¿n¸Ãgìy,7Â¼#xnÞZœw$Âðð¼vv>!ßqçù'ä?öü(êé?†7µIÆÒtaC{¶`W¡,Ç;; %§Á.fÛ9ùd÷„ô$¬²Ý†!vaŠ_ÑžÁ9Æ”Hy^Â–¹"‰²0Juø÷•² 8hI—3?`™Ÿ,ñdÌÂ$Ë2û¡`‰D\óØuŸÕçEÕgÔÕµbÔ§ÿP}úñ†úŒ'ÍÙ®>ÙÅÒO>7(Ð¾ç¢žèÙèc¸eŽV ×Ú9ÆýJ¶He‰Ë,p£@$©›¨4“~páW/
]/Õ*ŠS¬<À™yq&Y˜Æ	L©HéãT,Üë²üÀnúá»Ö/]hKÇý”íšÓvcç`©8	Ï®¤6Egµ‡xjUmz¡<×[Q›ðÔã]b•`h_i®Ï„¯FYŠ8v{îI$ó©‚göâ·Íuy`MÂ‡s^S¤çÖ/G¬siOkŸÂ‘h¤â=]pa&‚DÁ½”q•(bªOø+K¤ÄÂÌ
¨“X¦®ù<®«<îqzgpmQŒ7ÅKŠ8ï`–Ìá¦¯pSÔ7QN§·c½o‡Ö®tËÔ6¨—N;ÔŽtfÅ.³ùØi·uq!¤°à˜4]¸O{ÝœÊYÛ#Æ½t·œ¯5î,;*ÇnR14—©ë"-Æð˜¼Î•=»“•ð¬p[»9ÿ¼ÑSXŠÌp[´kðéÖ$x¸Íë+s/+2g²ªuUœ…üwò·¿äz`¶ª‡‹{úËÏo×ÄÇ]oÀLåÔîV'+5È¤óùu}? -p§“aSÌ©euk.s2©¢…i3Îãfœ¶6´Z"Eæ„Ët{­GS]ï×[ÓAì²™HÌØhã´ø!ÄZ‘sá±ÃVU:šwnÈ{y#?½ywfCª}L„ºaã^OU¡ÇûÚQÈ_Ó1
QûÖñt«Õq`‘Üuð„ŒØ‡{¼SG
5„ÿª<Ý[ÊÝB~»ÑËJ^õ«‰b=*Õ;Øì`¦ÓeÆ°ÿ@Åœ*‡nzóú½2œ°»ÊÅžmÕ¡Hªb¬ë}™¶¼¤ï¶¤xø’n`ožßJÇÕÍ¾ó]ø; žtºdOÊ±œ=8ÞÝÕÔvá¶Ú\¼gX×Waê4à*‹"îE‰Ï¼Ì÷-² ÉÜHÉ(•YÌtÇ˜6
¡Üø¨i¨v1QàHm
ä<ß–ã×Þv¬ÿº luÃF"‘ò!xu}?þu€­%dÌuCÎ¶É!º1×ŽLÇ¾¿šãÅsƒÃöñb¦Í#òã’£~-µñìs£°½Ó“£öBßýhÐrÐ÷©ÿ]¯àÈ.ÖïnèãiÆ9zß¾¼[d£Á:ÇR-hæ×™Ð2©ùäABËC‹7Vshj©Ä£#ssðŒ¾à±«É£€‡2J‚ÀgÚO£,‹Bå1LÍdB‡ž¤*TY¬¹”™òÙÎ„–Ó&£W]Ê,ËSgRLóº0¹4Ð´Þ³ŽÛÁ°‘ôY;ÄHsÓÎ,à+XÝŒms4¯S9«ç¥6f³Ê+°Èïm0xº^ì†¢{ÁdËSÌþ=h1Y 1Å ^4/¿³fü²¯/*²ÁÃn®å·yUÛ²àSÝø1&˜l¥{0îsè#—£Áàm“¤nÇ$3ññ&Oˆl+£ç¡‘ÃA©ãîîîF`v9Þž„#ãµBàøÑV=†}ènì¡²8Œ[ÝCeq¼(†±GÙá†æõhÒbtWtß~ü®©×«à%«sÌírºÖ{½â‘yõ'Ó“Ð9ÁÉª®Ïx_hÄØjPXÄöáíÓ>‡qOLƒÖ)Åjò~VÆê¼³¸ÞæÇßÿýãÇw¿2ø¿®QÖ°ô?ÁsÏ„ZÇ©Ï5©²&R£·Qí%¾–§YQh¨g?…#îŽ\·f=}ù¡f’e:sS!ó…N£Ø“\f^¢´‹Ì&ß÷‚,KüPÆRË€{œÇB^¬Å®ÍÊ× æôF¯}+7Ö²É˜µóÆæºÚ§Š«£‡W€’¹­‹ŽïøÞ|„Õhíébä Ô`U¥/<ÕV¥Âdª1CõMÊõië7U6¤‘Á\(ÓT€3.®óéÀæêB4iR€š?—ÅÛM?‹ó\V@IÇsëË_ˆìb€ÅAŠòªÕªsì”©joîíÊ›e<Fâ‘e©Sû¥tÀö„Æ÷ÎD§0Ny5¹üV$˜A¬.‹FBŒÅ=ó[XZï§µür]ÝìÛ®5©E…¬ge¡lÞ¦¡yÈ¸»^§#XtØ_Ý›wghßš~ú+1C·Ýçé%Úyß­Z£·ÒÃÙ;ëý×à¯{ì½v-Ü§¾»!<\MwÂu1D÷Á^‚ôÉwzÍä=íÎ@ú6­4øåÍOÿýá“qqw3ÄóiVt>u¦DŸ[}ÂýÓm¦µ«?A/@Cçõ‘guFÁb·©§ïg,Ê|îJ7å‰Ç÷¥Ÿ²4²(…ïgŠg2b‰Ïdà&nÄ™—1i¥|ìàoŠi+ëâd=(¹‰œÍ¬vœÌ`¤Ê=Üâû7·¶z„\=owÝªŸ*›sÁî›cäcÚÄ™Í¡xX ›óîéBÌÊy¡G×£+ z:È'x²¯ëk™ÞÛ$áÐkâü<Íñ¤¸Éc§V·î_Žð¼ú`VæxKæ&ÁŽŸÖ‹-{Oí,Èû¹Ä-q½R•Ìdh$­V%üÆ³°ÍœÿhÐô˜ŽþÓuóÇ &B®ã¢psJÞ”“N£ÐRtz7`¦:/ÐubÖ`=úŸA{ºýå7Væ…ûÅ<F;Ê6¼¡rª9@4šêÀæ@¤†¸ódhS+ÕÊw^€`&³€Së/µa/I¹Å­FUS£}÷¸ãýÍ“RðÃv7…¸n¼Q¬,æœ±Õ¦ðM(Ÿ£7rÍ;Þ˜èýÊ£šo>œ;Dá±ÞïüäœìQà÷?To_µ»¿öÂ_ß4ïÅÁŠ©æ÷'Ýº²ïAëtvfê+Ð_Àˆì•ªëug¬Øú8Ù•þÀY’zeŽúê¶>àŒU†ê}©4¯ô¯žÝwá—zê\´s0þñ4àB$±âË£E˜õU<Ít*y¨°Ð	—R²(ôY(¡²DI»™d2Œí*šöLAŸ)è‚nž6ÜIA}—‰?˜‚ÕÓ†<âžíòLBWHhäõÜ!['¡ý4ÛØh§ÃaT´ôÐ)Œ¯––öOŠô„Jù>ÔDÿ¦¹…ŽIÉô5—ó}êxlâ-zZ-"ÙXÈy¸~ýÊZ3£S lâ2§¾Žbæ3_¹aø’¥Œ)7p37ð…N²0J¬9×ÂIó˜‰LË$r÷ÕCHŒaß&"h‘}ÁÜ.H<)êfÏtq(j/¶­r{Dkf‚’ÚV€®›ZEn!ül¸š´Á-–5>Ì]ß}m%µ÷Aº#ª“QÃŽ%ƒ¿_q×…áe1c,ò³iz“V£Y~–¥i5õ¿@ Æc÷ÎÓ9ÜZõª«!Jû¦žŒwn¯
—…©»²½*°Çí§a#/×Ã"ŒÖ6W˜A÷VÍˆqÎ—³õÒÛ«ÇÇ;—~iûMŸLèâ(îòd$Ùw„hÏj²qoÌSäã¹(„i:Çúß}¸D¿Ah€ Ñf2;v)É×(SUÐ°ÒågtN<Š&òµÒ™ež›òÌ÷dLø`¶¸:ežŒ£ÔO¥ºqÆÊƒ—!ÉTû"L÷åï³÷õh¢•8 ¦h°ñ0Tóúeªu‰FâÊöƒ÷ƒ+3Á|×Smq,]ŸWè‚0î"g9×£Ás¸þÖãž¨—-à*Œ=ÂÛ0•£¾ d­Fj1×þpÊ0º*CÄØ¨aãúbÕÁ’vpo¬¼r­·T
´E®)³Ò¨EîŠ°ïY˜ÕGq~íØ ?¢’<g8P_e¸v}¿ÆÝ#qÖ¾¥­£ËÂcBˆóéÈNÓªèé/Ã¬˜ÖÕðF'¥¾;¶˜.L½cÏZ*	3éóŒ©@W%!ƒ1b­â7ÓIú,€ÿ$œG±ç')Z“q¢Å.òÍ|<™WÎš»rÌ-¶ŠÐ¨Ùwò“þe·šþØ\º¬»4¾Á!õ¸§¦ãQ•ŒêÜíh8ßt´{Áö£—ó6«Õr?ÙZµZoa!ìQCëÓ×ãöXb÷’µùðîOf£ëÝ‡sxÛ{Ä¿J1ô‡nxœÚ}÷§Êä}“änŠ³ÿã¶÷õ©h‰ÛäKw7øÃF}.ÂËyT/¦a·7²Û m6épé|¦&rÖ÷&VZí	á5ÐP_.¦ù0Oì4;Ü+ÕàŽqÕ§‘’0÷z5(ç×óq>íÓÆyÈeŸ&¼ª·Ãr®oÆ}šÝH%«|Ò§É$/syL ÜEŸfS°öÆ¹÷z¨v¿¹W‹ZN`ß‚¡ø{ßvX›¥ì5îõÍ\u{´ð‚AÛªïÜ^v;“õM¥åÞÝ\í(†ø}]'ÑJ*8×Çãv²gbI [‹¹ÐB1Åd¤ý,NÒ4–¡¯R¡Ÿ†À´¤'‘’ Ãüí™ œP1f»\'ú—&HÂ8,3>dš¼Ã³PU‘ÕwX-+¤—Æ0Ç°2“êyqZË4°À6×Ø É5†±#?Oó/WÎ{™¢‡Ooý3ºpgSŽ™˜g¥öÖÛz€ñ-“™¬°êXãì±YŸ_Æ•ÃJ×öXe?çúïÍÊ‚~04tbµÑ †%NäôîåÇMEJ³«æÕKbÃm3°Z‰)Ö$I[MgÕËn6†gáþÑ_j O8Ž×zªK9ÞÈÍ)“b^#þÕ@VÎ9pfÃc¶çðl€Õò±4“™8Ûüº	11oÇ®Ã^q!¢ÕÜœðUðÜ¾ø÷u×Nyv½ØÅ }ë†¬wNN<{]ç)&æ4ÏÖ„›,?5dxõ3cóáýÛOæßóÐœï
¬ýf¾ùùÍwößº˜åòÌÛ¦»êfq^œ&jeû¸žÌ¤·o¹âF”mºÃš»rŸ§ôñÍƒVítXÃÚú¥ƒ>\.XCÌéø¥ÄÂ‚cØ¡ujcbtožîõ|àWÈµa>ÖÚP}ÎgÕþÌ©n´Þß¸î_kc–¼û´ûQ™MÎ„´šö4$-«zGNÏÿN²sbqØ,žoýyVÌó=om†Ÿ‘æAuYÊZ@žý±7°O¿>÷$haÏ?,0é”h3`£‡(€¿èsŸÎó½ïzKÉ£íá¡T˜]
¨dßm‰3YÆ®ëf~Ì¢0Aƒ7“iÀ#–ú±ä`.‡¬bÆDè…BñØ—©rñtSž§UÈtî°Œ·Õ%»­â-—>ƒK°Mƒgûfƒð£‹K°(«™<©¨ÃnÃú´x`+tßs8ÏVÃ‘FÒbÛÁ{R†fAém(½€§‘Êq:ªêí{N°˜^,ž4	zZõ9R:£ Ÿ©>‘¡_gTÐfÕ§/óI:ÎgÏs¹.ï*öq¢W€LòåòéOr<¼X®ûçGãQX¼ñû¯¾.åì&O;]›g…R3Ð#].Æw«ÃeŸey—«ú¦Ëµ_nõýg9îpiG/Íƒ‹SR…ï*§}vB.Ä÷ðÀn¤XÀ<¥x–øKh‰T„™
Xœx<vã0ñ
W†™ŒãÀËâHx^¦2)“|ïyYÏå¸	A¯ú'fOÓjå¼yÿ“µv“À×N¥ÍqØÏk@6³œžÌÇæ )`ZDûë"re š~ªd‰]ÙßÖ£Fq¤¯œ×ßÛß®l”L¥ÕøÞ¶´ÿÇëñD¿Ÿ—ÅLƒQhAŒûy^éö°nz'«.5OµƒõÁlM+ÖkU$ÚùÂam–½ªÅxó~Ð†×T5Pü>Ék<þ
w÷ý›ö&þŽ¡±&ÂUå˜¸nPÍ“ªÎëy­—Õ:6tpcZÜ-ç^ÁÀÊíz·¯Ë+çV£qÞÃ€–Ö¿þÂœ†TXŠõkîäýKlðî/oŒ¼øžÐ†ˆðºòsÆà—u~îGa¼“êÇ‚ÎN»xŸ‰ù9‰¹ï}óâò¬i8¹N˜;ª³	òçó³N þB'óB¡9ÐœJè€Læ€JäLäJäˆLäˆJdA&² 9&9¦¹.uœHð:'Ü€“n‚‘ˆ4mZ¥dcb±I†$¯k2±-6‰Ø%™Ð%ÈT¡¤"%£R]ˆL#2¥)‰MIEhJ">S’Í	ª)AEfJ".SRQ™’ˆÉò:ÈT²&šj2#2‘ÈTÓ‘‰D&dE8àØ¡Ðd/bEö"VdÜÈ@	M¶zTT«GE¶zTT«GEèÂlÀ‰Wt6lN$8?Âb“‰M·òåtK_N¸öåt‹_N·úådË_N·þåD`Mé«	a„nM:§fM·ˆÔdkHS­ ˆL$2ÕòQS­5ÙâQ“­t†ÙÈd¯`Mö
Ödó¹¦šÏ5Ù|®Iæó˜Îæ“]9!”:¡›hÓq¼bàå(SÈrÍ(‘«Šº®‰ Ç„b©ä&{ŒtO‘î!>CºG8”çN}€!¡TG'(Ò4œ*ïi‡%0šXO»œ—xÌ£½œ÷ŒÀøº(óúfR=ÒY”‰4‰têE’%Ê‹X’¤,ÉâÀÍ"Í“4ö¸Ž’„eþ‰RÆJq<ö’pW…{§šçµ§/ŠqÈ¾Ì;ä,oÍ*=WÅÿwŸxSL«¼ªm€ý]áèe¢ÞêÏK@›‹¨ý+Om]®åÏícQ:Ë§&Ët6.äºP«Ø!¿žÚ"bwEyëÜÁ%&*¥fùXœÂŸ&•Í`õÇ8èo:Ÿ$ºÄÛh*-<žA›S{$…û¯ËyÚÄþ/âþŸP°~Ø5Xßã>s×‹)x]o%Xß‹ÌÛŽÁú‹ùtJÐ¾ÍUô·¿‘yèˆdÒ`8¶O„&¨på'9„¹˜OtÈd\‚JöÍ7í¹.ÙÝÎKÂB=íråWq°qûØ_œµLªtüXŒÅUÒCÚ…ù2v]á†ZKóˆLæEë%<Ìâ0æž†eL	žF!¢L¹ï:ÝøúýÇEÞ@'Ûü‰RlÂ²œÉ|ªÆ˜ùpZËÜ-µv²Aºr`Ì`am
m–&ã ¾ÈÓñÊ1?hñÒ\šÅ­½?U/-©™Tð¾¤æû~ÒÚ¤¥…&uq­M.HÃMªTs“&y<d]æ0¹jÿÂŠXù—Ló'ÎPÊæ#ˆ34·?XÍÐø„øÆƒl‰;rº|³zçn¸–5š{ÁáúM«oÁóÁ³r‘åð…}¹Fð8ÎO4ìËH‰-iÒ¤Rõ*¹Ç°VRaOrE“)¥Y@©ä¦âºó,@4,×,a4¨dì–BæÕýñX-`“t «øžÈn9;pjêNÙEð¥îp¨ä'Î“>ÉGàÈM>ŒGaÉ!ã@]É˜
ÓŒ¹AxžøÜ—<L7YÊ”ŸpOø\Åž/eD\³0‰ÒØÛå×³ÙÐMþ,înHâØd*§Î{xÚÆ
þ;‹3˜ïÉ2µ	¾MBn›d™XSq˜|ã-"h›¾˜ÍŸÐ°”+¿BÕ=°˜qõ“Œáá$&
/”Ë 9°ŠÎt™Â<ÓñýËoàäm=/Û+¾q0ñ†‘ÏAòhüŒ;rr yŠ<|`¾ü0üÛ½mm6ôF0¸ ½~=ÀÇf­cN‘úG*3m+“¿£)ÞÖ&î€7}<vR9«LŠŽoœô¾ÌÇ(Ž²‹‡ñó47óÉæŽÿ§4T°.¦p»ßÏÇº¬Z“äõx¼’S¤Y¼«	N&óI“êZè/©†ÛÅ^ôˆ÷º–øËÀ²Á¦$ßjÂw9®ŠeÖwÄƒÙTL„M×Ÿ7s«lP&'ùø~1‡FÎ‡1ftÁÙŠÌØ0mz;¿ÚzH…~:æMÌ»š7~Å`
¯™7‘/ü ˆVÌ›(týÈw»›7¶ÏñÎ?|üáÝ¹kÕ~í&ãÂ=*Aá98?{……Š$W^‰ ’I'£‰œÀbr˜Y–P W÷”Ø%4Ed’é¤¦9l #:©i‚‹´ “š&vÍ@ÇtRÓ„dôºS*QA“-!_È^ó/d¯â²×åÙ”¶™s¨ÀÍAp{2†›êQhš5 ©¦‰¦‘ZÍ§7dRÓ-«šlÑD9Ô™jZk¢$jˆL5©5Q5D®KIdmdÙ”ÎèVë,O¨¦^>Mo¨ Í)*ì	Ý`Or2Æ7É©ß$§b|“œj¥žäT“z’S­z“œÎ_ØtÓ#¡ò) tDärlºiPù+ šî•I¨ØÍ„NÇh2©	_u*†S’­!%™îÂ4ŒDÈT«^Iµx”dCAõ
–To	¡Ä¤Æ£‚¦hL4G…LÈ§MÊ62h²ÇX‘-Jx`ž
™l†T„Žð&)8=gÓ[ÑaÓÍ@2ûÈäs¢‚þÔÿ¢º­bºbºÝ\ºWº]QºËšr·¤&ô²×t.ëšÎ³L¸íUÓ©‚šÌOV“­z5™ ¤ª&Í4ÙH×T#='èÏtñ¾”iJ^×†“ì©ùdrOâÒóTÒ”›Ñs2Ó@ÓŒÕ±E¦’™fý°ÈT2Ó¬L™FæŒj¦¦’šÆ°ÈT2Óì’ 2Õûí‘ 2Õ[˜í5 ò„î]™Ð½+²weBö®LÈÞ•	Ù»2!{W&dïÊ„ì])å-	ë’„’êyI§K:eX’)Ã’L–dÊ°$S†%™2,É”aI¦K:eXÒ)Ã’L–dÊ°$S†%™2,É”aI¦K2eXÑé•ŠN¯Tdz¥"Ó+™^©ÈôJE¦W¨òÉ#2Ù»bÎÇQÇŠNiUtJ«"SZ™ÒªÈ”VE¦´*2¥U‘)­ŠHi%Ù>>BÓLhD¦ÙÇGdši‡È4®nD¦qH#2¥Ëúf£ 1ñÇi^¦cÍh$·àwDàdqtš(b}L|5Î§šjôö¤’T,¤¦ÐM³h[d*™iÔE¦’™FÑXd*™i^q‹L%3r´È42't+GB·r$d+GB¶r$d+GB¶r$d+GB¶r$d+GB¶r$d+GB´r4©"I8õÃS(êwpF„KR~pIê˜ÍA£á&¸wÓ”Ì:l±)^ƒM£O4Í²o iVgM³ˆhšµ¡©ÂÞ[l2¹é¦_N7ýˆªŠhºéGT¥¡©¥·ØdrÓM¿’nú•tÓ¯¤›~%Ýô#;bµ '“œêìôœNrº©‚Çœ	°y¸©p	ëtPÈ½ž›üÑjuoîg7zjW8³¾e¼[9Œa­á;]Ó©Ûå5]ÖÕH1Lòi¯k7ðÏSíãálx„zX[á‘Ê}~§šEI&A"r9ã™ŽEªR®„—jå+p’EA*†©ï&‚»I ÷Å[¯!Ó|œ×y×Úx‹my[àaVæÓ4Ÿ`ó³©¼§äœó¶v¤’³õú M]‡¢j+Öm”·Ð²ž—FÔùTaD‡&ß8yÕïnòë›ñý ÔX‡WOUe*VÈ)tõÛ|šÖXñ·Òe^Ì«õaX-ÕÛÊ1rþ	‚ÓÌ„Riuµ¼§åÝbå¯ê~ÐTø+§ñýØêÅlj‹ÿ3]Ê>à¤ZV„9WÛ¶øÉÑ“úÁzë5S^Ú:ÁX^ÃŠ2r^/¤¬ú³Ò5/¡Z+ÏñsSÜi˜£W0ð°Ì¡ù.]Þ‘‚›¨s,%2/M)B¼kkÌfZŽ¿qô9™u5@¡ôVÏ]9w7yz³œŽº)ô7§à¹”Meæ©˜§ÿmK.KÃà°Láï¢Ô“+Ó´šé4Ïî›*øýà^Uå“|,Ë—¶úsnúzB?¼®?¸Ç¬”·ZðƒG~ìl¥à¼ì¾àí2Ò¡àŽêsAÃÕ›?¹ aÌÄ’q<$;¥]¨J}¤Š
ùº­µ{~èeµ³ócÃ‚K]k²Z†¸øSa›”ÄD%ñIÁ3R¯-»Zvp9•ÎaÃ•ô{0LçøÓ{ch€*~$žŸf\ºï)à¶q’¸!‹9ÏÒT'Bh^*IO¹a”‰@„q*ÜÈ×:É|¶ƒçÔctîÏD3Õè»¿RÜYvÄ:°m¨/>çÒÑ£ëÑàÚ±ü¿£Ñèÿ3ÿó?¶	þ Lè&}[¯¾‘µá´Ó¢ -¨-åÅ>G™2d
,…¬©µ×ÜEex­Æ‹¯¢{4u ³ž•a‹†Zak
¿ÀõNÓÂ|ã¬<{ÛëÊ;XzQHï?›‹dZÏaPî—Ýœ–~Zž+ÇX©D\–ànK¿yßTµ»Z|õý›AûUQšoun˜vÚ–Ã›ØrxzšX)ñ›ÆØ[eZÚ':i|^5ÆXcÓÝ?!ìwæÁÌÄFYïØ‡I¿ZÕ;ë\Ô{ù˜Ÿ‰ðY‰p1~^>:²Ä'„&£%dÒ?xžôq`nÒ“sðŽcðÜãyGâ§©ïù®dÈx*|ÇÒÏ|!¹›„"NDÂ8üè±$‰3‘„‘ânêgÊ“*J|w—2³ñ’E‡[íÌgŒõ|Ä¯ayßÇB@¶ ð1…åæ:²Ú±õ=ý8…µô³¶å^Ñ[ˆ÷Ÿå¢õ¢Žîm1‘Ã¦ o2Ÿª±6:ºÖÅDÃ<iõéR›AWµº¸¯jÍ€1l¾Pš#Þ]gž¨/rKï`Ôóé³âÜPœž{ŒÉ>*¥I¤0‰•%¡¢|\%ù˜†ù–{¿¸rœÍà]É¿<’veÆ?Î2)XßQ”Ä1(ËÐ(Y¨Ó8Ñ\…q¨$àJ&œ{*f^”1/qwYåß›2÷f·¥ãVMs›©Þ«u{Ý—‡›oŸ¥ÝÍº“÷•-—Ž^7û$ƒ:¯Ç¶ý²+¬_Î‹jž¼\~kÓç¼,¦¨¢B,Š¾+=•S'ÑèPÖ€m¶ì34Zoätò«JSx°Ú#ÞÄ]Q*çÿ}ÝÜÊÿAõÛìÞ´à`ØâØeæøò¾§óI¢­‰ËižÃHÇ²ª¬b¥AÛô¼­©lÖµalt|*ˆ3H4ôb] +£ƒÃº¶ÜLÓÑ`££fSÑlA:ÿƒÛsÃq~«Ôø€^ÌàQ¾lƒ¤P÷ðh¦Îög‚DhñDì.ÛÊ# æØvÿï#‡;¡rªž©	»’&"oƒÕ°Øó¢`Íà‡qg^ÓÊ³#à¼|&tÝ#øLó0hMN…KFihä^Ÿýÿ–¤fÛÍ_œÕ”2ù‚qSDk„2C?C>õRîú*pC+pâ>Â”	å3¤i˜Hîfašq¦27ÖžŠÔ.£ê¼†;û¤±ú-MZf2µ¾ï_ôMlû‹6Ñ4-«1$	ÖÎß6îC×:¬Äî8cX£æ&|e^5È´[´1þAÛ6]9wy}3ÈÆúKŽ$@¦ r+$Æõßœ·ÓÙÜ4l$ÁÝ
«g@_0£ÅK­•g™.QðÏ ŽÆùïöRôäWÈFàÂÌâé ¸à´ç5F™¨ï`v§µóó§†.3V6Ü§šÏfEÙ²õ©š(;R¥¹{Pþ­ˆ¶9ÜËÏÓ<…®ISí$÷ƒ‰†ŽñâOß¿¹ÍÑ!3›As¸Ó4ÓŽÜåÃhú6cmÇòÊy/¯oÊ<Éö‹P"çÅÓ—WÎÏ¥š_9ó©ºÉ¯“ÕÍ$/ó+çÇºÆ»w>ÍË[ÐzWÎßæ¥2þ*ï á½Ë{õs~}3/Gä[-Ï³ƒùž€s£Ž%øb¾„OøÎÀÏò´j6Œªµ¹sá?‹ñ½ó_sù«Õ˜/'É•|³…ãÀL1aa­lD‘ó§Š£ô«ML—	?³ë 
ÿß2ñEð°²aÑùÝ˜U-ö}Ög$b™_VçÃôzðc‰ÓÄYLê'DâDWx¾'Ü5Ç®z«$Îu…ÏÝ®,®]EŸiÜ9iœÏŽÛÏ1sYå×yMsÐ;À‡á
34/É¦m_*ã°tgM§Ù|<þ|Ù.§Å…;¼\w—ÌÛFï<R¯|Š‹>/×£UÜ—élÒŽË>ÈE¯|‹>/Ø#P®K,vyÑQÅ/ÖÝïl/~]\öñ5}^þ./Ö_e—ËŽjÓçGµéñbýA}{Ù15=^pDMëmn-äËôýeŸéñ‚ÏÎôw±Þ.ÑÄ—·bÖ:½Ìã[ëò’^vH/nÍlö{Ñ§yQ‹¦íóB6MÓÝÅ­šÍ~/ú@/jÙ,ú¼¤m³Öé…ÇöRöMÓáEïîÂ6Îz¯q§ìñÂ–Îz¯ÛZ;MµwVû¼è¸^Ìæiú»ÕÓövI»gµÏ‹>Ã‹Ù>MÔ]5ëèe¶‹š…å2Ù^Ôäú½Pß‹™uô]™Ýb’ƒõÆâ$ÜüÌò/c9Á7†Ì«²(gxx•¹UOLˆG$ùFÃ£æX&àØ?K08¦Ëu&Èe¦Ó'žw`ëà_>pv“§(½”{Zx™ŸEiÂ}®ƒ@êP‡BÉØçW¾Lb¦µ§#²Œ{aÅÚT¦Ìç»â Í=9/ÞÜäS]é—6Ž®M(µ÷„C¥M„½i`ç-£¥8§·¡T6þ®(o&4Ë\ø×¿µ½Ú«1€®=·oRÀx·¹Å0xs˜óMH}©emŽ<´1[&Ë”‰¥»ÑDÓ¥#¿|x7˜€D?”ê—O(6+î|Ø^¸ç-:Ëãžç	ÁWâ³<˜"ð»háÐŸõC©µÉ³°È[fNiàƒ.àI`.‡27ÁzÏ1\ë¡øžõrÁêÄ•ÜÊ|2siò´.À?gTØŒRpF(8§œ
îQ
î
îS
î
N“$|N'8M
ò8à4	Îàt‚ÓäÄ^€Ó	N“œ}N&8Q†ó8à”š“jNF©9¡æd”š“jNF©9¡æd”š“jNF©9¡æd”š“jNF©9¡æd”š“jNN©99¡æä”š“jNN©99¡æä”š“jNN©€8¡â”
ˆ* N©€8¡â”
ˆ* N©€8¡ò(G¨€<Jä* Ry„
È£T@¡ò(M7Ðtó(5§G¨9=JÍéjNRsz„šÓ£Ôœ¡æô(5§G¨9}JÍéjNŸRsú„šÓ§Ôœ>¡æô)5§O¨9}JÍéjNŸRsú„šÓ§Ôœ>¡æô)5§O¨9}JÍéjNŸRsú„š3 Ôœ¡æ(5g@¨9JÍjÎ€Rs„š3 Ôœ¡æ(5g@¨9?Êý™Jì9É¹ƒìÒÔ´o±©{îrB¹éÖÁ¹ëÊM·Î9á<!ÜÞœsF(7¢ŸsÂùM¸¹9ç¡ÜtJgÎCB¹é¬µ¹Gø^îúÌ=Â÷’pÓgî¾—„{>sPïnùÌ}M'7`ÓÉÊÑÉ®'„ý< \Oúy@¸žÚóó€p=!4çç`ÓÉMgÍÏB^EhÌÏB^òª "”›Î	>¡Üt>ðyÊMçŸ’PnI(wB(wB(wJ(wJ(·"”[ÊMÈ¿Bþòï€‡„ü;$äß!!ÿ	ùwHÈ¿CBþòï‡„ü;$äß!!ÿ	ùwHÈ¿CBþòï‡„ü;$äß!!ÿ	ùwHÈ¿CBþòï‡„ü;$äß!!ÿ	ùwHÈ¿CBþòïG„ü;"äß!ÿŽùwDÈ¿#BþòïˆG„ü;"äß!ÿŽùwDÈ¿#BþòïˆG„ü;"äß!ÿŽùwDÈ¿#BþòïˆG„ü;"äß!ÿŽùwDÈ¿#BþòïˆBþ-ù· äß‚Bþ-ù· äß‚Bþ-ù· äß‚Bþ-ù· äß‚Bþ-ù· äß‚Bþ-ù· äß‚Bþ-ù· äß‚Bþ-ù· äß‚Ç„ü;&äß1!ÿŽ	ùwLÈ¿cBþòï˜Ç„ü;&äß1!ÿŽ	ùwLÈ¿cBþòï˜Ç„ü;&äß1!ÿŽ	ùwLÈ¿cBþòï˜Ç„ü;&äß1!ÿŽ	ùwLÈ¿cBþòï˜kÂñÖ„ãêùŒPÏg„z>#Ôó¡žÏõ|F¨/3B}™¾—å{I¸f„ëàg:±‰R@U“|LV²§H0e±‰|-8àDNŽœNp"/GN'8‘›£§œÈÏÑ‚Ó	ND€Zp:Á‰PN'8jÁé'òu´àd‚SU‡lÁé§ÔœDÕ!-6¥æ$ªi±)5'QuH‹M©9‰ªCZlJÍITÒbSjN¢ê›RsU‡´Ø”š“¨:¤Å¦ÔœŒPsR¥OmÁé§ÔœDÕ!-6¥æ$ªi±)5'QuH‹M©€ˆªCZlJDTÒbS* ¢ê›RU‡´Ø”
ˆ¨:¤Á¦ÊÜ‚Ó	N©€ˆªCZlJDTÒbS* ¢ê›Òt#ªi±)5'QuH‹M©9‰ªCZlJÍITÒbSjN¢ê›RsU‡4ØTÕ![p:Á)5'QuH‹M©9‰ªCZlJÍITÒbSjN¢ê›RsU‡´Ø”š“¨:¤Å¦ÔœDÕ!-6¥æ$ªi±)5'QuHƒMUK¢§œRsU‡´Ø”š“¨:¤Å¦ÔœDÕ!-6¥æ$ªi±)5'QuHƒMHS ‰ªC"2UuÈ›j°ÉªC6Øtrªl°Éä¦ªÙ`ÓÉMtj¸Á¦“›p~nn’U‡l°éä&:ÝÒ`“ÉMU²Á¦“›ð½$Üô!«Ù`ÓÉM¨w·|ÈªC6ØtrÊi°Éä¦ªÙ`ÓÉM¸žôdÕ!l:¹	×Bsž¬:dƒM'7!¯"4æÉªC6Øtrn°éä&:5Ü`ÓÉM”¤Á¦“›è´sƒM'7Qv›Nn¢ì 6ÜDÙAl:¹	ù7UuHƒMÈ¿©ªC"6UuÈ›NnBþMUÒ`òoªê›SU‡4Ø„ü›ª:¤Á&äßTÕ!6!ÿ¦ªi°	ù7UuHƒMÈ¿©ªClBþMUÒ`òoªê›SU‡4Ø„ü›ª:¤Á&äßTÕ!6!ÿ¦ªi°	ù7UuHÄ¦ªÙ`ÓÉMÈ¿©ªClBþMUÒ`òoªê›SU‡4Ø„ü›ª:¤Á&äßTÕ!6!ÿ¦ªi°	ù7UuHƒMÈ¿©ªClBþMUÒ`òoªê›SU‡4Ø„ü›ª:¤Á&äßTÕ!6!ÿ¦ª‰ØTÕ!l:¹	ù7UuHƒMÈ¿©ªClBþMUÒ`òoªê›SU‡4Ø„ü›ª:¤Á&äßTÕ!6!ÿ¦ªi°	ù7UuHƒMÈ¿©ªClBþMUÒ`òoªê›SU‡4Ø„ü›ª:¤Á&äßTÕ!›ª:dƒM'7!ÿ¦ªi°	ù7UuHƒMÈ¿©ªClBþMUÒ`òoªê›SU‡4Ø„ü›ª:¤Á&äßTÕ!6!ÿ¦ªi°	ù7UuHƒMÈ¿©ªClBþMUÒ`òoªê›SU‡4Ø„ü›ª:$bSU‡l°Éä¦ªÙ`ÓÉM¨ç©ªClB=OUÒ`êKªê›ð½¤ªi°	×AªêˆMTÒBSH}TS²êp‚S6cN'8“cN'8—cN'8›cN'8X€Ó	NC$àt‚Ó0‰8à4.ƒ8™àDEàt‚S* š"‹6¥¢)²Ø`S* š"‹6¥¢)²Ø`Ó8Úàt‚SjNš"‹6¥æ¤)²Ø`SjNš"‹6¥æd„š“(éœNpJÍISd±Á¦Ôœ4ElJÍISd±Á¦ÔœœPs¥~]€Ó	N©9iªC6Ø”š“¦:dƒM©9iªC6Ø”š“¦:¤Å&Ê¼ §œRsÒT‡l°)5'MuHÄ¦©c`‰ê´ØT£=wiâ[l:¹iâ[l:¹iâ[l:¹iâ[l2¹‰êF´Øtr¾—„UÝˆ›NnÂ÷’Ð\›sÂ÷’ÐZ£ªÓÑbÓÉMgÔb“ÉMT§£Å¦“›p$¤ßTu:Zl2¹‰ê]´ØtrÓÄµØdrÕ»h±éä&|/‰ê]XlÂ÷’¨Þ…Å&ä'Dõ.,6!?!ªwa±	ù	Q½‹MÈOˆê]Xlš8è›Nnš8è›NnšóN-6Ü4ñÛ-6Ü4çZl:¹iÎ;µØtrÓœwj±éä&äßDõ.,6!ÿ&ªwa°‰ê]´Øtròo¢z›Õ»°Ø„ü›¨Þ…Å&äßDõ.,6!ÿ&ªwa±	ù7Q½‹MÈ¿‰ê]XlBþMTïÂbòo¢z›Õ»°Ø„ü›¨Þ…Å&äßDõ.,6!ÿ&ªwa±	ù7Q½‹MÈ¿‰ê]l¢z-6Ü„ü›¨Þ…Å&äßDõ.,6!ÿ&ªwa±	ù7Q½‹MÈ¿‰ê]XlBþMTïÂbòo¢z›Õ»°Ø„ü›¨Þ…Å&äßDõ.,6!ÿ&ªwa±	ù7Q½‹MÈ¿‰ê]XlBþMTïÂbòo¢z›¨ÞE‹M'7!ÿ&ªwa±	ù7Q½‹MÈ¿‰ê]XlBþMTïÂbòo¢z›Õ»°Ø„ü›¨Þ…Å&äßDõ.,6!ÿ&ªwa±	ù7Q½‹MÈ¿‰ê]XlBþMTïÂbòo¢z›Õ»°Ø„ü›¨Þ…Á&ªwÑbÓÉMÈ¿‰ê]XlBþMTïÂbòo¢z›Õ»°Ø„ü›¨Þ…Å&äßDõ.,6!ÿ&ªwa±	ù7Q½‹MÈ¿‰ê]XlBþMTïÂbòo¢z›Õ»°Ø„<–¨n„Å&ä±Du#6Q~ú›NnÂñ&ÊO}+ó	Y¦÷œ"Å&b÷-8àDô¾§œˆß·àt‚üœNp"¦Ü‚Ó	ND•[p:Á‰¸rN'8YnÁÉ§ÊôÞ‚ÿÿì½i“Ü¸•5ü=C,)¦î‹[­µzµ%[a©g<O8bÁLv‘D6 ÖÒO<ÿý½ É\J*)%Õ©Ò–-¥2Éƒ÷ ¸8—q¤)½ØHRz±‘¤ô>b#Hé}Äm1Íà¸Œ#-'Hé}ÄFZNÒûˆ´œ ¥÷i9 åDéÎà¸Œ#-'Hé}ÄFZNÒûˆ´œ ¥÷i9AJï#6Òr‚”ÞGl¤å)½ØHË	Rz±‘–¤ô>b#-'HéÝa£”&gp\Æ‘–¤ô>b#-'Hé°AJï¥ô>a£j¦ô>aãòòØ™°qùyìLØ¸|ƒ<v&lX¾QJï6.ßÀq	\°Á”Þ'l\¾ã¸\ƒ)½OØ¸|ƒ<é&l\¾Ažt6,ß(¥÷	—oà<¤ß0¥÷	–o”Òû„Ë7ÈcgÂ†å¥ô>aãò—(¥w‡—(¥w‡ä'(¥w‡ä'(¥w‡ä'(¥w‡ä'(¥w‡òôŸ°qùyúOØ¸|ƒ<ý'l\¾Ažþ6.ß Oÿ	—o§ÿ„Ë7è¦í„Ë7£”Þ6£”Þ-6Jé}ÂÆåÈ¿QJïÈ¿QJïÈ¿QJïÈ¿QJïÈ¿QJïÈ¿QJïÈ¿QJïÈ¿QJïÈ¿QJïÈ¿QJïÈ¿QJïÈ¿QJïÈ¿QJïÈ¿QJïÈ¿QJï¥ô>aãòäß(¥w‡äß(¥w‡äß(¥w‡äß(¥w‡äß(¥w‡äß(¥w‡äß(¥w‡äß(¥w‡äß(¥w‡äß(¥w‡äß(¥w‡äß(¥w‡äß(¥w‡äß(¥w‡äß(¥w‹RzŸ°qùòo”Ò»Ãòo”Ò»Ãòo”Ò»Ãòo”Ò»Ãòo”Ò»Ãòo”Ò»Ãòo”Ò»Ãòo”Ò»Ãòo”Ò»Ãòo”Ò»Ãòo”Ò»Ãòo”Ò»Ãòo”Ò»Ãòo”Ò»Ãòo”Ò»ÅF)½OØ¸|ù7JéÝaù7JéÝaù7JéÝaù7JéÝaù7JéÝaù7JéÝaù7JéÝaù7JéÝaù7JéÝaù7JéÝaù7JéÝaù7JéÝay,JéÝay,JéÝb£”Þ'l\¾õQz?fj½j8õ¸’·Ü6ç“çäÏÊ÷“S¾Vò¼©„ž¾³_)ñûÐ¨ù«*îlÍÌJöú5‚þ< <%Óâ€ÇÜqÙôû…ØÏ±{[–Z¶ôô{KqSU¾xssUî%¼—Ê“ÓZªŽ™§‹'§kÆÏØRÐÇé“g®Ö”(½ôÀ=kóðt“c_ÕM+žœºìLñÕÓ^Ú¿žœºØo)3º‘ýG´ô¾üLÝ”½ba’>ðÖgË¦úöÁÿüðúÁÓ´æiˆ$`"ŒªÚ
‘ä<*jž³€•y’¼e)Ï+Æ³ª®#?ãP°,©‚'§s".Eú»cêêé3W.©²1Š¾ðlµg¤Ç¼WßÿèQµÉ“Óùû6õF®šµ¡b>}m˜2M¿ô.³rï'‘÷èY%Ká=ãJ–Ìxñ‰ÿøÈý8âsÖ/¸ìkz÷7Ö¯MI{ÇÇoçgE ŒjŽUB¹·Å%ýÎÍ‘÷Û ×6gû¶ ÔÇkZ¯ZSŸxoVb±mIonøRQþm"öê¡ç¶\¬mÌ•…YWõöFü“ðªÅ<=-;J°ªšñY¯ÌÔ¿½^RFÏ)UVR
T¼©
Žz°m“¡7ËfÆ´Ø)î˜—•ð¨«ºgmVÕ–­˜¦çíPÙê¦ÜÚL»’ÿküZ,³#Ey†•CËÔ‘Ë5õø• ?è—ïµ0Æ½IµèQuT¥ž ¶£Š]¶”Õ¶½ò(iJyk¡ŽÛzõhhãÙ¶;vF¥nŒ'˜våŸžÚÍ¦Î©d×ü!liå±õZ0ÅzîªÇ–PPî¥¶…š»ÛØTsûèa½–ÊŒU÷œ:Õ‘÷RVMÝØO”Š÷Ú&p&®ôºø¡+EU‰êGÊÈCí½¢$;íUÍØºêêäÉén7¶ÝzJO=}NYøûkï»¡i+MjÍ7å°ÔÿÉé©O¤Zþii¾ÙL"Ê½>¨öéÊ˜õŸOOÍ°´NÓÇé“Sû£}È4ÝØ¤4$Ešäyáû¼Ò&5}•%I˜M3ƒ¶ÅšRùöA”¥±O3HÓkCí$*ûU’`§JÉ=SDáôz+9³ÅóVJÔß>x5éÓ·§µãy~:g¦“q^;±Óáˆ5O›©ºm¨:´xúâÕ«vÐîüíö¹sÑWr®Ôñ¡é«í3K%‡õÓgë5½îr¬O_eÛhÛËÇwÆG¶¯¸*[Imž2›Ó4>ö£“®”—'ÛVßÜ>¹}[ËAqAŸ6Süõ
ÐŠÛÒÛÇ·+7SW¶}ÔNƒß>HR?'ËÔSË„IoÑÛ–ü†¶m’m®nŸ¤màqÈ0²†Êûõ±po¤íg-Ûýý<žËVªC\£P4øy¶©ÉØò Í³ç¬=àÉIè[ó6Hã»›óÎ‰ã9ëÍ’©{¢¢Šjžøç1ó}^FQ
ž°*õK^&	—YDd²Êè¿‚~H’š˜dø(n ¿þã¿½ßQƒyQBUKLÎ)ÇY…¹™/>ó´0ž¬Ý[Ú½á(öTJ®iå@E]·Œ‹‘ÊÙ'›|¨–ppD©[«Æ²†?{Çž5.õ×|%e[Jyæ=ÒC©McÇN	e1¡xïxáñ7„ó==KlM¿çíÿÃÖõæ9÷Òßš®4’^z/Þõf9¾ùœŒH#Ôî;ÿÑ°¿ÉâÝ/NI¾!Ò°—ÔkÖëw½±©¨ŸE{.ˆð1÷qô¾bŠXÒÈöý¯ŽÏ¸÷l3GUCyœÿù|e™›eªÞKQ5Ôù~!*ÒðÅ€c…Íïmp’Ä`9ÁØÞóö3;€¼Ÿ(÷‚ÞµTo|ÿ V5Tãïy™"6ÑËÇ_Ûf{~‘áÛ,©Šº„y‘„ù¡|oš>ƒíýôêÅ|ez{L/‰ïã™^®¶<©«[ßä“]CÖ(d€×l‰ñKqÀ Ep‹›X–	”ißÒÊ´Âe×ˆ9¬qmkB-7\8°p\‘°LKX–Dâ:ˆN¨7£Jà”*cFÂÆÌ*Ïg¨ãÌl¼œá†Ël´œáËn¬œá†
®aMäg8þqäg8þqãg(þqäg8þqäg8þqäg@þqâ°£QÈpKÐPœ íg‘Aq‚Fe34®1ƒÐ"£hÂŒÊ6°²A4ÁB7ÀÚnpµÝ ‡zƒëp°7ÀØà: ŠôÍØ¨l; ˆôÐ¸ˆ"}36¦JPgHìÉ"ƒtÜñÔ ;žpÇSîxj€OÀ³žwÖ3 ÏzÜYÏ <8p'8‹ í#êPf ÊÀC™w(3àÎ8Ø‡EÆõlÔñÉ ;>pÇ'îød€ŸÀ³ˆw1 Ï"ÜYÄ ÜØpû8‹ í#êÐ` ÀCƒwh@Ð
×·¬k+\ïS°Î§p}OáºžÂõ< S8#¦€FLáŒ˜î”+ÜN¹î”+ÜN¹î”+àN¹Âí”+ ‹R8¥€LGá˜Ž2d:
Ãt6W¢nwïºÕ'cß…Ì—o?ãúë…°R¥¼¼/Ý”Â/YÂªÐOëÂgqp{ç®ÊjÆR?£ï«‚'eÉDÂÒ*LŠZ>«2QR†ü†°Š]x¬êdï@¼²•ôŒ•ž¸’ƒÚÈXè#¯iÛAe%+F…”eožµâYUýž«²ÓcßÉK«±¡=Ö¶+å`¼Š2`/;¾¦äÐWj cå8šÞ6ô`­PÆ%Tôcáˆ·¶*.Üj†ŒÚz-xS7ÜcMgoë:q”¹Å=+—¼Uúa!ìÅ`«Õ±)¼ÍŸôË˜Q›ÌäÜÝ»ˆö¶ç?Å¨‰boÌ}þ‚.sF‡^æÌý,Ì÷îr¦Ig;79Ó4§Î;¾ûÁ{œ›aõ79ÿûÍ¯^|½ÊyM´#‹?á*ç¶=0¢xˆ•ú|ôÏ½hêv 	Rw~)PØ“ÊürGãã¶¡[cå³ }ÕÊ:L=êyGÉJÑÞåˆ¢ºÌãºò<sÿUiY¥Y$Jâ~]IP%aX'uP1/x)’(üÒ¯«*Ëý(ÇË¡5MK3ëÀÚYË‰¼j­ŒÚl#ß¯¾A¦}cr;Ö[£â‘Õ7ƒ²º_ÇÕ5=‘*ŸœôÄ(½GVÉKZ‘°ÇžZ¡GÕ­ÕÕz%úÑTÙ¤—ûQ°ƒÙ©Èª»iVÖ‹–Ù|Sj'Þ³=¢\yZ´‚[q7+åÑ
o~Ò2Œ’xÈXP+óE°ÍÞ;ZPs±öÈò®ÊçÊã3ó˜“X¸Ç‰xYI2%‰ÊôûI°Þ•ÊB0ïœ©F˜+KU.Ø•>YüM1ŠÏ™Š[1ª4êæª)gö\‘§ÜlÐõÂ½¨Dg›Ç•ÆÊ·IEå±tðÄûá’uk'“¦ÄŸ½gŠ•ÿÆ{É–WL-ý<ô´thXÿøïµP%}ò.TC•ÜÛÜò+EôÊ¾ðzÍz²¹£8Æô£ÅàÕ^ŠËÆ
½QvÉ|»Ìžœx¿jK©”ÿNÙNY-»óFÛfw¼n±–íÕ²•Z7ŒÑÕ•¦÷¾³ãêâ_É¡ü«‚ ô÷XdiîŠi„Q˜&Å¡âinŽùLÝ´¯ôk~QäçùÇó¯_ÿ*hò ’CÌå¯¯‘è¬VÍc40!èmIë1àPvzÁ€Û¥#*çnìžTâö·ØFdLžÉð@HÛÝ°õïDÌðQÙ®-÷9¡Ï·„VÂHP¿&‚€š¨h­3:™0Ö¢°•$‰ÿCpL…WŽÊa Ê4ÒT
½&ŠMD„N£ÕKê¦‡5fmÕ”Yƒ!K«î‡ªâÿ´
-1ØJˆ3òJÐ~vê^/o#Œš_«†c¶ÙzZü»|…=Õ¯õo§>‰AÖÒm	`À†#ÈÛß€ä»‡®zälÕ7íI[Ý~m÷RiÌ,8òcDYKƒ°{‰ƒÝ†D€++æ‹ê}j°›q ÞGk?Ð<¥¹4°‰¸9P·òœaFŽ…=fI¬×¸Eƒ¾ÛîÑC¦3¨3T¶‡3E³ ÀŒÊiã/Dª“K#ãž;´‘ãã‡/=¾"´ÃÛ%¿ë¨c¦­Ž{:fŽ+äEZUQRú/*‘5",“EEVúA)èÛ0ãTT~•IÆ²(‰+¿ðƒè†cfwÂ·w¾üÃ\ÌC•7²ìéæ •¦‚frSsQ£Üyé˜ÄBÖs
öXsœ:¼çöLÒº™±3áO§#ßisqãÁówãH{&úÌ9¡ÙEžgÝâŽöKÊZã=z8Ÿb<|¼õœõ¬²/ÙÇ}ýÌ½ü}æ‡ž}ÒÏIïH2?Û‹#Yp¨ûÙ^÷ÿ9êÖÐR³:ï¼–‘û-‡ÚaP	Þ1(îÍ.L°Îë&üÖló»já^ltÙ”÷dž„™(£¼Ì"^V<åE\5¯²\„dˆ«˜þÇhÊ.ã*)XeÌEÕaAšâF¥k›ÉKK¼Ç‘|ÏÓšÌf9Åø\Ò*Ôú"yÝÍ¨d5\J{ðâL‚sbŸ¬ô›iÃ9*É(¯ÎÉ[[Ÿ!Âÿ³÷}¹à_³~X¥Øu`š=¯f’à¼,k¸XQó/vrq5Çª´µm£G9g­¹à4AdyåÞ´P'‹_úMtÎ£=ß­M,I.©®úÊÕ_¹™Ø†Ü¸½]Më×ªã²ÿÙÁö?Ìó·œŸâ<É£x×ù).’¢ø(
@UóÕÿé6-úYúñ–nˆCïŽÂ…üÛÏ÷~ï¿¿H‘;~Fï¯ç{^§_¯¥»§ú¾bv×‰Ÿç"b‚Ó¯²$ªÓ8y”D’:ça¬Žë0÷ë Ž?¨sŸÓã"ôS^Ý@¬Ëî*ÚcùJÑy0¬b†¹Åê4Ÿj¦ÂõZT.&²½f+ñ=4a~ïû_,µ€dÛ\Tä½%pL-»W°è«l{è ¨?'nò3emî…'¾k¶Ÿ^½8·ŸþÃ}|±ûÙ®—í‡—¿¼q;{Ç½ï¥ó1wûÏ¿ÿ6rÝ°¯æuß¼¦É'„dÞNw?ÓŸ–MJëÕ›çîù	o­l~Ï“\*1Í×ïâÝþÜ8§UzðôT>÷xš…é×<­Î›µþÈÇO¹ìëfyø[ô÷G=|êÖ;ÿ¤—>:wÂ]žÿ&ìå}í25‹ã(­‹,IÃœ‘HEZû™_E*ê°ª*&DTQF<KÃ ‹‚:,cÁü˜ß´Œ}6^TòxËô¸ÛJ££¸»ŠL‘úí8ç¸ÉL·vÜ¼z¬¥=ØiÕ8Ø{-ûIŒ€'Þ/F/ê¡ç…µ¹²{Îºéš–)»0|¥¤u9$+c¼J’A¤5«×ÂcýÕ‚,¢Pôž¦õa7fÖ¦J½ApÓ^MI
Z®î–Ês—sëŠæ{7ÑûnÌü`mîzY¹­êÓµ]~WbM³—½/5ÝÇÒ'‹)¹iÅÍ•p·ËÇ?ÿªí/ÿ÷äääÿW´˜ç¾+ÃÎº·Ø_SÏk¹4/Wî
–½d9fÓmÓ»‹àW6¿Ô{i$Pyí÷‚–÷#‚ÛpKr—Ò¦4óR{±¿‚>²[Â:¢ÙÝ›ECóµnÆËIÞë•=w˜:³½¤´0i½5úÉ^©ïÇ`¿c™X«ÝÕªéÂºmzk=¶èbÍl–(ÛîâÙ¿œÏÊXCÿÏÞ¦—Ú6MÃÍ (	W®ñRÖ‘½ÈNc·ÝnIÌÅ{=Ÿ4ËA—ÔÝR!sÞ(Ù7ÿ®T”¾èù•'êš:„-»÷/÷C5Lû)Ó>„m¬¦s_-æ­	ûôš¹N±½©_WòÙ¨Ø—ˆè7eãº±Û¥÷W¦)F«;sç3¶G»Kþ›M‘^^,v®¦‡7ûãbÚ±s˜½f‹@}WªÅ„q4ÝÀ£ñ³o|ÐFv.F÷ÞÌó»éû[@{5øåðÌ 8˜g&a\;j‰ƒ$Št‡fÆAåÙÁ×Ì\kØ|›D02ÿNXÆ¦8á­¾ýËÚ‰p´ Ë2.Ëcï(•Ì#M¥vB'UZp¸Ûø»iìÌáà´*J­B÷q)o4:«9€NÂÙþ;HÃöÙ;x©YóNÇÚ·V58’NŒØæ~ÃN²‚O6=;o–ÎÖ¢’øÙy$ãðT£eèYSqt9æíp2dlî {Ý UDw‰H%:x2v¹‹NC¢gÉí
Ð…¤E¢ð	æÜþE«C`2Žcº¾le-Õ‘…Ú¦Fÿ&¬;JJ`»÷6)N]ðnRš|Iï&-Ù®W Ë:o§u~7X·HÃ½M§mî(¡NöLqXÇµ´¤ÝWªî$)š‘î¦ChÁ–CÒQy;-»±|Gk*Q2eæÊÐ[É­iÝuG%»ƒ%Þ6µ‹»#3r![Âj ¦d:t8®eÓjŒæÌ^:ó) >%»$§©ðR¢oÖòZ¨±ypÝÀîcÝ¡Ø$E]¡Z»ƒûå”–¹M}'	Í“R)[¤‰|;A'+Áï¾ ºcmËÙZ£“¶rßóInÈÙTJ)ÏIô½˜V¢Ò GÀ6-üß¦ÕôSKè¢a›˜õ|`VÊõnêÑÉÝäØ–ƒ¹³6Û¦e…û[bÈZÜ¦FFºî$9½b•Ä((½•ÔH¸ï&­NJ³¢Ôî¨]rF	$5ÝInÝ6wÓ÷ÁEšÙ/.…™õâRØ°]`¶)žõý3UBwq§tLSBg—ÌwB-ÒÎ©œ‰V ·šætZ¨US‘¬jÚ¹™åÒyÎºR5ÕRüúž”\‹~Åî +|ÏT§«ç˜Qÿ
_ž˜6/¬»f¿D'õ£býY=(xÕý$…1T |íýÌú^bZ\:¿´èÙ€Næ/ë_ýª¾¹¤^¢£Çµ“ÌKV)è^ú”JÛI$Ã™RQå àÃô¥ìÍZ´mƒïÖ¯X+Ÿµ ùßÝtc´­;ö6¥H{sÞà«î5Íol-¡»ócBˆ%t9îRùoZc1är<¬Æ®äÆ4À¾«ãÆ–½RþÝMæŽüWïh3f:2îñÝyÔR'ßt¹£ý–;ÙŒÀîC¸+XÔ…Ì¢j¯¯ºR‚Î¬¶.^ÇóžãŽ­×di0g˜`Ÿ²Ëní*£¢áz¦ Èóî¦ûSÏ`î˜Y Ÿaµ£èÀGÍª;äÉ.ã|‚ú'9ü~šËëG{—~ªçûßýÐ9ÙªC^
âX]òìêj-”õ!Ï6õº:ìÁ~=ÑT#gâêœ"êòh½<(qzŒo8ÿûøA•¿•ôOüè5ÇTš<1&yÈtËJ7oÏgw®sCCâž4xÌã,,&¢Ü¯²8MŠÌF¼.Š*,«(ó2KbÄiÎ
ú¶X^WAåiß¤DK%òœKÊaÒ³6$'Ñèñö²{ùeÙFŒù6üÍz¾‰»˜Þ°÷“–ÎÕ|¼éL/÷¨Ç ã#¤ÂîY:{1}Es–{Ð«YG‹¡ÿ<>õÚú^xèÉ–•ÇÎÃû‡ðøhz€˜Ì‚~ÿQ¦Y
åÙB‰¾b½y<æÔ=öRöÒ{ÔÑŸšJ)ªSÛVCO¨Ç'‹×;"½ã}êIþÀ…Šß^¯ÆÛÞc}ÚŒ:™¶Pb¬:*ÿÑÄ•˜@Žæ+ßß5Ff÷_[€/èröÁ!Ø£<Êóxïnv†Eîï\ÍÎã0§zÀÍlÅ>ã^ö¶bÏÝØÝýmûô¿éí8´Ç§;/xC[±Z„ V…˜xÙØp¸F…uà0'³ú\”9;Y×%
ÚÔš#¡Ïo?@†CV¸L$4¨>$°%®%°%°!%¬%nQ¸IDáºŸ‚õ>…ë|
×÷®ë'…›DpQÀIDÁ&‘ÇD:épL¤ƒ1‘ÇD:é`L„–dÀ¾'7ùu8ÕTdPŽAu8ÕáT‡cPŒAu8ÕáTcPN~
8ù™_‡c~ùu@æ×á˜ŸÆ1?c~Çü4ŒùióÓ8æ§aÌO™Ÿ2?d~Çü4ùi óÓ8æ§qÌOã˜ŸÆ1?c~Çü4ŽùióÓ@æ§ÌO™ŸÆ1?d~Èü4Šù™ >'uîPÀ¬au¡a•¡Aµá|>˜8Þ[ÏïÖ÷å£ßí96|`šýí;`ÒÆ^w¹E÷F#èÏô]|Ïcî¸lú[õs¼ÖêwïåhdOnŽE%Š²N³(ª£ qñ(æ"*£LTA²ª(ê8É²¬H˜`A™VY]3fuZÕñMnŽ¿já=—=WT;twœà²ÑÑ/5Æ`Ã¥Œ~{Ö_oË:6Ë^T^yµøžêä¯ý@ZC§¥é=ØJ,y6¯¾döþ3×¾ W¿øPW¿<M‚kÑþü"ÙõøùáÑnm·ûêö6üÂÄÏ?)‹Á¨–mÅÙöÛÏñNw¿7ë~Ÿ!kß*ù[¸¦46®á¾‰»ÌÓÿµŽò`—¥IZEa¤¼æE^†qÈË@p×>MÀa™%‹«:‹ª(Êƒ8«*·QîëÅixSÄÚWJr¡õõÈòÖåÜÙ±#O~³Õû®)­Wû¯mònõµ‘J8¶	4ï‚à’U›Â6.l;¸àd­~ÖôVècó´CÉoŒ¨s;E9[lÊ•WôÌ”	šyÆàpû1ç¦g Ec´hkï‘ì…'kñÞFÔ³áÞdàØáy› jzàdœõ¢g†*Ë†²»mûødN~Âµîû½÷ìõó_~9–ýgÐF üÆæB‰E£¼•¼°šõ6ˆÜÜYÌŠKâ#]È©·Ñ+¦76bŸ0údñóüâ˜æCj(Æí•nÛfÔvME	ª¡÷ä`\°=*c'Ïm0¿vµ¨•ìæH‚.‡Þ£½¸zSU3ÕÈAÓøƒÌyZ*Û65´Sß˜o•jzÙ†OœøJÕÔ5’škMFÅ†ô~yý÷ã<O
ïøxaÁÐTÓ„÷À³.ÊBSþHí/u+.§KêGÛîÔèÅ –”µ-§®A—š‚*RSÐgWe¶Û˜ö)3±1j”ÕÅz0'Þ/½ËUÃ‡–QRõZv%´±/°sÙT›¦ì©^ÏÉpÚ«$3,½Q{ÔHÔ×½µÔš¾_Ë¯°0	ÞIÀ‚Œ~¼p9Šƒ(w9X‡E’LÂÜÌø§ÆCX˜£¾÷FÃ(ŸÇ~ø%Q°(ÏâO¸cÁÖÌ†’„xýÏØæö¯OýƒêÖÙ&†Èóò#Û+Óø¶ëzw¼BkæžHjÛ”3G=Ñò$}ôøQ“-}ßN½Óü°2mõè§¿ýú¿??{ýóö—>fSè fMùäc>zñËwÏÿ7<	‚ë9¾¦ývï8€j\‡ø4îî½ŸžZ¹èê3%¿…PÞ„$×6ù½ì`ñ<eAX–E•dyÉ«(YÈ‚2ÊèK?*x,*‘û"±–º¬rQU™(‚šÕ"Ž²,ºÞÿÒóv¨ˆÎ¥¯ñü=Ž}Ø]ÞwpýfJÅEb"¾¸ŸÈ‚[]=KÖ¶ôð¡«kýÐ#â·û4÷6‘¬i=@´l±Y <'Ë“#GiwÞ¸šÂ‡76ß^k¯ß23Ç~¦g.P¶ ÖXí?ðx?Îò<ÕÌAŸí…ãÅ\.Ñ¸XÈ–ùÿ±%à–[6Í¼»°ýÏæè7=ºØyŠèû@/^Ùu1XÊ!6á"yO_Q\Y®9—ôdñf®ÛÓ3çu"òî‚³œmÄ6ÝMÌïÅ~MŽuüðhŒNT|}a#g—®ÄÜ÷ÅI™¤õÔÈ‰.×6[ÞëA^±óë½g^‡qû»mK¯mBÛ.EË&!v#L»•æÐ;^®ìúfMB_}9L:<øÖr˜d±ïïé°Š8ØáÑae¹ÿ4Ú¶Ù×ˆÒ·º™úóBæ£¶3§ÆÀìhNà(\Ø¾&&ßû½ÿþÎ.›š¦ªC„xîsô]Õt÷[¡UsOL)áyMªƒZÐsžñ¦(ôßî{dUœ?õ9ýžfÄX˜L„"-ª¬òo`J»Š¶tje""2í%¹ÝI²ÕNÐs»žD1ÜžáÍÄé™µÝ4É6ã&ÙºšñÑbïÂ^KP\Nú&‹w$¶Ï[&ŠB<£"S:íœN‚!·-FlæÊ“ŽÀXnc9Ê±;_œ-òdz“CMoìEæ{¶7	¢¨°[ã›iÅk†P#|æA¢œD_­ïžõMBŸÚäãw²:MHÇ—“§DÕœTâö}É({¼~ÉXI»;HÆNw‘Ìªƒ§¢»Â'âþî"™3Ñw”NxGéDøt®*½j{t:næoe¿4¬D…®´y‡öäpØô,×\V¸º®MiPºP„oe>UÏÏOx«!	¬¥ Å3·à´ø ïÅ€•ÀH”¼±CjCœÍÆ„À%±"æ-ƒM¥n%ifÏI8¯Ö‚cÏ©í¶¢R±ž ½4à²˜Æ ­Â˜„E Înmp*p4Ý¦!4œ?—Jü§4œ¹Õü%o~'|'‰˜²Å§Ó•M_up%×ð4#ª;Hä¢Áwåó1è‹e¦Ló]`*ÀÈ/UÙÖÖ0¢+­R¬6öÈ¶c
>A‹n½¿ÃS¹4w´/@)Ý…]£dZa¨î !êRÛõjáÎÙ5,%a÷ëÑEªYÏ¯V¼êêæ2$ûO¦½îá3wÈ…‹OgêÎÇíÀî&!tl,q¸Í®M¯šå
Þæ "ðtF§šKt:«ó;=óòŽn$>‘»0n6u´½m´=Öðtlìè~)•=½¦2íªÃ‹žž;ÑÉÞÉº¦oŒäðd¬;èÐ—Ž
…Nh¼”Oe
ºuì¦Ï;KœÎºª×ÖžÎnnÖoú5ƒ7sË3Â1tQ4Y5~oýßi¬»/:Å–KQ…p{C|Ð®?ágúS:ðV"ƒ´¢Æ§r‹vÍS†ÃÍ¥sû7”Œ#ŸwµÏ4OS	ŽŸ	4ñN{ÕžÎPÖÍrPð)Çòhø<=U|AíUµ€S]—ÎPjJ‚hÓÃwV(¡VÖðAJÉ8t:dàhø “¹¼“D4|kì;¸‰»”rëùÝ:„ßc ìáreÝ›‰×Ü”î«Ãž}¯CÐ'yÞ|¼#ÍNIWÖ›Ü®J{º_üì¡1’…u_³nô‡ÈN‡D·õzÞt>(B¶\3Z`Ý~0múóÀ»:õˆ&1ÞUéCvLK}uPÜöyOëgÇí¢Cž”kc/ÇgÝ>i·oz¶e\4‡ÉdÎkÚCžµBA6 ñAÏZ!¢Ëõaªš_;øÙCÍê ä?"¸ùá=ñ{ÂJ}àäq¯—þ®™¢»¿ð·´”÷¥ï³:ð£,ôý0÷ë"ÌÃ¨b>‘ˆxî> ÈYž”IY$uTçiI’V7‰Ÿý8¹Ž7æ¸jha­'È\Ù»Wê!4»¤?™yye/Žµ‘ë‡Õýàîœ¹˜:€½?&8Ÿøêï{o¾¦ºû³wì½œÅælínèÚÓÍÝt²N3l
noùÙÇ¿¡÷·Åâ¬÷J§@>ilì_ÎÂè#'Ã œrØ(»àYq­V,6ÏxŒÓr[É†ÛÔ®œÈšh·°”§MfgU/ÊÉâ½·¦Ž@gOƒGšrÆ×YA!ï_ÔCÊc÷qGüa±©1èºÿƒš’t·­ª„g‡®W*ÁÎôc¯—Þ…Tg'‹¿ÙŒ¸ú+ç7I{5WÖÔ™ç&|¨w®f6za©ÍØv*y[ÁV™b%‡¶²ògôöXÃ”­QcÍ½´EŸÕF{wsÎB9ôU+\LøÅFƒÂé%åÊfË®‡ºn.¿Ä›é¡6³,‰Ó}­„<ÍÓ4Ýðž¾¸V‚«ÀÏ“J8¿Š%\KH>M,ÁµÄ—q	ìqd$\•€`qkiD®÷Fìý­¨Åk™y®?ˆÇïöÎ/—>¾]õwÎ ¥<£Š½'æiPU˜We¥EQ2&ŠˆÕ1çAPVYð´ä~Áê°fiTGE‘ùUàÇ¡Ÿ$AÞ¤ÿÿö|GåEÉ'ëîLÞV?÷}ÒV ”˜Å(?i6XÕÖ•õÜ·êkJ¸eâ–2>«dIŒbAý£áàÈŠ:¬UcùšåŽÖ^Ôþ¯‰©ÙýyæÙ
MK²ÁIMÊbBñþ&.Þñ‚enÞ÷ôlÉ(Õ›ßþ?l]ožs/ý­éJâ¨/e/½ïz³ß|Nv©j÷HêÞßdñî§$ßÙKê5#"øŽ76õ³hÏ…%sî­×†Y°Ê{}E6·}ÿ«ã3î=ÛÌßýwþçóëÉ¶^ÄKZ0Pçû…ˆMÃ7Ž6¿·ÁýI«ÖõÂ%ðž·Ÿ[%®Ÿ(÷‚Þµ´p|ÿÑ)V5Tãïy™²’»òñÄ³C¹c”„qïÇ oŠ4Û@Ã"ecc~ÚºMî˜dEñ	Ü1WCy†5$»†¬QÈ& !¯Ë³
ëË}YÜžl‚efn‚FedÎAãbÎ"ãÚÖ„8Z8n¸p`ÿà¸ÒÀ2ÝÀ²ì ®ƒ4À	µÁÍ¨pJm€c¦Á	Ë´„e8f$nÌ bÝÎØ°lãÆ*ÖíŒ©’•ç•aÜ€iaã¥Å—6ZZÜ`iqc¥Å\ÂšÈÙ[goœ½ÅqöÆÙ[goœ½ÅqöÈÙ[goœ½röÇÙ[goQœ½röÇÙ[ goqœ½röÈÙ[g‡màB¶°[#pKÐPœ íg‘Aq‚Fe34®1ƒÐ"£¨õŒÊ6°²AÔÚB£xêŒÊ6p¨ƒxêì(ž:cƒªEúflT¶DúFh\D‘¾S%(_…æ«`‘sv²®K4¬cƒÜ œÄ€sƒ`nÐ§`Àù@Ÿ‚çS0 èÜ½ƒÎ"@‚†:ü€‡ÿððÀþÀ“ôw’> OÒÜIú <I€'éî$}ÀL°ƒi‹Œ›ZQgÞìÌ{Ày¸3ïvæ= Üò <@pÈð4vÀÆ:hà,$h¨“ÞxÒ; OzÜIï <6pÇ¦ðØtÀ›ÀcÓxl:àŽM	ZáúŸ‚u?…ë}
Öù®ï)\×S¸ždQ
Ç¢E)‹R@¥p,J™ŽÂ1d:
ÈtŽé( ÓQ8¦£€LGá˜Ž2d:
Ãtfí[†Ý•5ødèÏ’×¹=}›Ï™1¬Ô÷¤2SúU%~XÅœ‡µÈó*Š­ a™–¼äY$ƒ”…~FYž†q%}-üÀS?¿AeÆ	CL‚¿¬µRv.¨’®ûÎÌ®V¡èúÈ¨07#YQ¼}°£IÌ°é—ÓÑŠÌP¿ª´•§¹mkÿ.ÅÊÊÔ±æ¢§÷%¥Ø5z”¹[ü4P'jûSÂ[Rûôö=#½«Çe?Š•Ø¼¥”Õ˜+þ7ŠÊžÚÕœx?ZM½¹Å‚“48%ò¦RÊ‰Þ&ÔÔÂJâP&ÊÆ–ïR<ÉV<	Ã4Î÷O"?L­dÊFð$ò£"šä6Ò;±ãâ«àÉná?[,/	ó­XÖÛSç¶enŒìÜŽÂ…	Ïaò½ßûïMzî>µßÞUø;³
­45Þ“]NÊ4NÓ *2N˜¥~šù¬
Ë8a~ÁâR‰#æ×IYð¤Ìü$Ã˜’ŒDYß`—_Øp®hÎný‹
8êØ’Õ;sæt–Z'‹GÆÏÚ%²IýÒ;o˜W7k}ºÖáºªßg¾ÉÎU¼QˆÝXd¯øÊs‰Îi=Ô.'N„vaëÄJ‚Ó¿þã…7X8úl¿¾P›éÞµt'ÞÏòBPuyÓÉ]¸z•¢T^c-¾}{Ð¢°TÍ²éY;¦WI¡û‡Æ#ƒ%/ÖðOÂ¼¶"œoSY­ÛI„—ÓoVØÖÕŸÝ7ö“-—ÐzCÒûÌÈ®áÞº\XÝÜªp©X=dWüÝ´kn0ãI’¹Å¡$€˜d…û²gQç»$À>s¸dî4?ƒ¼xõêÅWpÄQø	$`j	˜ÀQ¸0€É÷~ï¿?ýÙ¦¦©þ gâêœá>‰Å»*ôˆÅï÷¥)[±<L«4J³Èçµ]â×%-öE$I–•,,“8Kƒ(ª¯X(8Ñ‰ QX„µ’›VûÏ²z49ò»fí.ÙÍªÑë–]‘U£†c¤`Cæ€nÎ¼~èJ²ímù„ìUS×wa{Ý¶$Á&þŽ”éR÷ûªY®Ž›-…Á¬»p—Ê—¬[·‚H…±‚¹ýƒã³^^Ø`´Æ'#Ñˆž‹…SÍ'êÁúM"Do´±¡J%ÏÄ “Ê‰ûÁVÒÑâa+jsrrâ‚Î?÷l\#¡—ÆÓkzÞíFLü¶ãÌõ³èØÙ¸+Ò¹ v›Âb_8ÿ1^¥pô€²±, ý,\‰ú…`ËA5±m´1¡1’eš
ÂºÒ†–´·”D›F&´˜2qä­6üË5\èOíuˆþ°xG«œx¯gJ´yrªªÆÊ•ª1+j¡…S‹e½±ÆˆKÚz²uŽ­ì†ÌÄÜ.Ø••“í†–	»™cCp¡‰~3r9Y‰MS]Ø8D”%NÖCÛ^ygB¬ñ¤–½j×µÔº±¤yI†Ÿ[eÁmÿ°¦7«êV\6úª³ŽZ‹¦<œnáˆZ§¡bÛ¦Rš•G}½YöŽ 2½©I«%ìþËáƒQp0‚¸H®Â°È’0Üc„¾úñá”ð÷ÏQÁµ|ÐN¢¯œpŸfþ'rÂß{Hœƒyø@À7ÃÅe¿íÃ’©ßãXì­çxg´Þå¬=(¦—)òàÁ4÷-þúžÇ®3âÛ¡º×*þ®y.gks,ë{bº¾ÏÉX%‰Ý.ËÊ$ó¤dEZ‰Ò/ë¸Œ£<Ë€Y•¥3b~˜ÆLdeUAUÞÀtŸ³õÊ©ß!uu+™y¯ý^Ôã¡Òfì_|rÁ”GÔÓŒÛ\Ó÷ŽLÙ°‹Ö¢8šùP;ÇÆÄN¼ýxQóksÃMm·í¶ØIjN}¤­Ú‘›KCÐ¾ê¨5µÊ+¯ÆC­	ó" ñ¡¤È³ Ýá”Ân'Â;ôHjêÑ_7£nw3Šð>žxLm±ß6eÃ1¹Þëø÷fÇïÙ˜¾«ü÷aNiÀß“9­Ë Š‚"ªB?c¼&óYTAW	¯¢4NÁÊ0Ê‚*‹ƒB”±ÝHŠŠŠ%E™±Ç7™SZ€ËÎ…šM˜ÛÃq6Î~)úóFÉÞ…zÿ¾Ñu¸Ù?²¡±ìv€Û àS‚Âmc|0Éñ˜ªn–ƒã:oÞqÁ¥\»í¶'Æt¤ÛoÙ„=ô~dÜºtŒ[SÎ$/”4cBsêGžMír¸ýÊn%4ýà6%¦L>²{“ß‹Åér¥G£mÏ ÆP™ç6B¶”iôãï™g£ûÚ—=o
Si¹Ç~–ÝNÎ†Œ›)‹wDƒÜjiéí…|0·„Œ-ØÂÕ,›±*®Žæ-MÙíÓ¸èÆî¹m3âª~1<¯’ûÉº ¢ZTbSgáÄOÂƒ7H²8ÌÓx¡„~ìg™¿ÃQè›øãX
ýüu‹äö·HŠ4ÿ„-’fjÈNÆ`‡HðÞd½ôâb\„aâ{–À¼Ï³Émo?×{Óå}îQíŽ„[Ú~ºÇSÖwÕèÝ³eE¶¦÷D—c¿‚q‹ºŽ“°ˆó*Ê"ž"Ìë8¬³:YU†œYUÆy–Tq‘§A'4ü‹èò÷Œ:˜÷|*ÛCíéŽHÃ†2ÝL_:nZ{o¸=¬ÝSµý²ßTžt¾I±Ä‹ÞÅ\gÚqËÙ%Ê9_±¶‘)µ0öl­qŸóY˜?êUÒwÕÞÃßÚÓ;Å¸±^Ðc`yË¶¬dÿÐ,\Øu{ºéÂÃ7—D¯Õè—sÙ]?ÙÚßŸyv§LVî´ŒˆnÙ¸sÍicŒ•3§Lo\®g:?´L]:{Dèú›Ë‘ãÅMÙ3ª1"ÄcyÇ^©Ç¤kêš8¬\Ø#;eËç¢ çÔã3ýî¢Â¡‹ÿª¥Zòu1û²o‚¯_K€ºb'ÏíÑåÐgÌ}_Ìß=¤‡lVËú§×7ÃÅhÎZ1×¶\0U6FQñ,/½žÞèïæ=Ô-Ó+Q=·*WWºá~1†ô|oñ~~óò…÷vÉ¾ ²~p@ø$÷¯e¦>Ø¢žFArh<Ïy†úº›x«=Í?% ç43ý"£—nÆÁ„š·Ó™f7—`X®‡ê>ÎW þ<[.ŽACò½?•Ý#‡–­T‡èý?äá™|é|ûÕç„Ûyc•LÝ×}‰¼öy.Š ð}§¥³:åEUäIe·«³"YÂªŒ‰2®“ ¥ÿ32~Ä˜ŸñàÆýÓä”ïmÊ§ßÁfn&Þ¿Tô{CtŠ—rÔÞ´äªŽÒ§t»Ç;øîßvÛõ_¼tÎOŒK²p›k£›{¾cWÍAÑ´g7Jg={õ÷x!‚Ø!%Lƒ‹ÍÛ#;gMëXñôä‚³~ô+t¹©Î#ÛÞŽÆk}4^oUˆÎV‡Í%ýmì®ôâûÿúeÆrÛåÞÍ¼úþGúøÀ¸ãûÉþqr–†yTìPÀ,Mƒè`87úWxË$0û¸iq˜ÑaÀ0ê Êùµ!ðïxÓñÝ¥¿Ûmw-îÉxçKDWiRÔUÊY”$i¥<«€†²àU,²D¤9O*_d"ã*â¼®Â²ôý›œµ^2µ$cÍªßmÜÞ„µ?U7“Ç“¬ªSaoù¯ß¿öÎ›	‰»WâêpºäOZv%3 nï²kÍ¢Ý•‘%å¯½ò\!ÜþÉtÒË~A¹´{oÛŒžx¿L·ÜÉ°}…½ó%ŸÂ,W˜œõ­¹Û?=Ý¸~Ù-¸©&œC¼ÛQrE'µà´’ržêR;*awvŒPµeñ¨-•ËŒó&³?õöÔØØ}À	¹hÚÖåÞd7¯¨“lI_õKWc›;£_<½^5TÆ¦ÌL’v$þÉü8÷{£4ÈìhØj$¤Q˜z=r;p¿žöÞ¾_Zš~Š_Ú¦I0§¦ÓhRCÆ’@Þ¯´_šòVñï§(²>÷DRx•F9¢8ayž’	ô3–ÒŒÎR^Ð”Ï|?óY^VQÅË´Êú;ÉË<Mxòºöor5žÉÜL@ž9¶!·‡tnÁ¾`ËÜ1GÜµ6{'ÒIÙkuÛ;d–8:n]X°Yó[ï7%D_[[?Ÿî­µý÷dfV!ƒ„,íž™¥Vó]3‡©_|Ä2Ý6ÑgØØçr}åîy›k¯¾ZÚ=KQÓ|Š__¡BuNÐ qA‹R6wÐµÅ	U­Eë©O‹ŒRö±QÙV6HÙ×B£”}glT¶³J5xÆ†U	n"A©ÏØ *A©ÏØ¨l; H5x„Æu@”jðŒ©T|„	”iÜÔŠ
½0A£êÖ­Q¡&hP} 	*ô‚ƒV6Ž ÁB/ÌØ¨lg AC…u¡q	 ¡Â:Xh AC…upÐÀˆ#h°°#6°%1a¦}M,ð¤ë½ÞÓ3ž·Ê~÷<ý’SÞîé„'âqà³Â÷+?­‚Äçq‘X¡$Lr!ò¬aœ–)c¾ày¥‚³¤Ì*?(ó4ååM>¤Ï·®!jëÕQoîñ|X7hãhò¯é{’ÓôÞ£ÑUÂ©ek'/ä~ýKãU §ãÍúñš¿sÓàJXQ=ž<K· ÖgeD]½ÃurÕÌVèxÜ°jÖ¿œS¡ø`-Â0õƒë7íã,Nvµ©Ã8ÏòC…çÎúÕwóKšä1‚£pq–’ïýÞÿïi+ßQø;7–¹/Í:/C^ÔA± ©’°Êý€³¼ÈK^§•ÓÔÌ?OÃÜÏ½žWA]W¡/J‘°(â7Ê_:Û¬äMc¦©—ì“‹>ñqA£&ñ\g8Ý•\þAÓ7.¸‚6î"F?tBÑ¼Ù.æä¦›
NÒ¦ô×è1qÎ”@^=7“È³»ínÞ6ZãÕb%lZb’É9Ú¹;fce…öÎíµž2éüQe½p’ÇÞZ6öVìu/ÍY´§œ7œPð&B‡U!*éaúüÖ›È|j­œ¶R{õxïÖ¶í:‹I¸xúŠdüÕC½©ûcgñ©Â6bF_ŽÑ?X_'LÓ<Û¿³yQìÊG¡¿Ñuù°Ñ§šûê‚º¶áÊÝ]Z¸¬‰½–M‰ñ¸¤‡ Wª60pšF
Ü&ŒÝ~~·“Á¿%ÿ¹^ð;ç>¿Ý×U•(
Á‹"gY]µáaXD‹ƒŒ¸Žq±õåQ Ò4J‹:ÏX)ˆñ\ÜH}žÿå¯^Kóâ°C_næ:öi˜¢c\ÉÙ·N ×£aZ]½¡5¬Da;Q6´æ™nXïàîr«2=—ö}b³øµoì5‘ÇVÓåùÊnMï‘ã$F±ÊÆ‰°¡µ,7rj~MÝˆêñ‘w¼ø[3û4}öþ*‰ñŒê˜Xk¬J¡^çÙÊªê˜Ú¬Ì^#ÝUáîœéÈÊTní	J‘Êñˆ:Ã1e—ÚññtwÄî¤Âî”üÈL_ylaçjpEˆÑ+ö.Û!™*bá.eš“e%M«®ìdÄ[2¼¶8?)!Îì‡VÕÑ´j1Ø¯ÿ1hWÁcyÿ«Æö[ý]`±WR”+LÃ ½v6Ìó´ðw	UX$V±ðPFE­÷é„êkˆÏ·hTVÐºëãiÔwËä„FÑ­3š«`¸æD¸5Í7einu¡PØšF*†OøÐ
L0‹mê…Mïbdf~øõùñ_^A:÷]õkú›ÿ†@ÿŒìùå5ª2þúûóðË__ü`Ù¢G¿¦z†dú5°}ócæ¾_ž=­+´îÐ
„Í{B®QÀ¸6$dT=kÙ/1Ð:ÁA0è ÕóYêêÕ®ë¸®àúGˆ«W!:ÄAG8è›÷¢Á cÜ‰qý:—Ò¬@ÐS
ºÁ™7ÎcÜ8q– Áuë×AXIý
CS	Æp=6 à¹û…,[ò3 SUj¨A I€êÊl°AÀI $ª2pT#Ê\Ìj„Øj`G¨áý†CFõåè·þ…¬Q=V¨©ˆ€
³$`Ô„¡Q96€€Ï+ðh¾ˆQf$F™‘eFb”‰Q“}3#1ÌŒÄ03ÃÌH«”‰af$F™‘eFb”‰Qf$F™‘eF”IPf$A™‘eFÔdŸÀÌH3#	ÌŒ$03’À*eF˜IPf$A™‘eF”IPf$™‘ç™–á<Ó2œCL†sˆ!hÔ±pæÃNýtê—¡NJ2Üñj„Æ9$>ï0Ö"kû²Ð3ë¾u|®Äí‹ƒô’¡ªºWž$.ÇxKççuÓ_ÑÒV·_Ù4$r÷¼l–˜
éžëŽµ-\¯(ŠóP^a‚,ÖWLazŸY±†ÿv†è~öÂ! vwýÖs»¹uy?7×O­NË¦?]Õ~ ìÝ:{ÿ£6ÎæZÌû]*¶^5ü¨Îšz]Õ=Ø¯‡C3p`™Ž™²ùüPßëõž Ë6Tì˜,Ñ<LPà¸—Šéæ ¼aõ¡Ì_°Šµ¬< ÃÞ¶‚Áµþç6°¢}ðždŠªHY\$U„E™a†~Rge•™_„eT‡QR¤1OÃ¬Žƒ$Éó°â…`yÁxÈn1øçË^Ç´ÊJlô<W\¡Ý%øYOè#ƒmº€•4g4N8©é½Á*y6ÅGN= ¶ZNíÕâ{É¿“òÌKÛ{û6Æ¶ÓF¤”;Öô†mÂw¿+S'‹¾~ñÆ=ž­X	«€¸œc€[€“Ê\º7Nš^{›•¶…ì­z½°™äV7©¼rA8mÔÌ/I;)98ZežÇi¾w×?ò Ý½êŸ†Aœ|Óîó_ƒU^¯€[ˆx|ŠtÒÜ"™ #] œ_÷&ô–E}Ïc×IÁmßwÖÀ›àîžloZ”i`cCV¾ˆ² J­ÝM‚¢æœ‰$D]VÏrž,‚:ª+ÆXÊŠ<Oã0(n’’¥ Ê{)iªè?Pò¯ý`V5™«ÙÓkâ¦PÐ«FSÉŽìÎZ	³ùyü$(cÇÎDŽa(]Üè—²—¶Ô£aÍº¦½šE7ê‡GY×#=pÂAšõ£&+Cd1gF¯#D§iQ¹dŽF.…SéqjˆÔì+A4\¥%“.µ°©RÖ—ŠíŽ^lŸ¦òÖŒ7mcšQ¹ÑEÄ4ôæ¤£h‡Æ„È”Ø‹CÍ´÷’jÄ•zœ¨Èž«Ÿ(m8mzäÍþ¯]={o¨:7õ#=èÞÄÝ|${1ÿ6E
÷ž½|=¦¼Øå;Â”ö¡ïØ_åK¶Ç>9Ÿ;Áb·x+vn£|ê5ÙjÔw²ÚŽjl¤ÆV85åéÊÕÔƒ’k«Ñt½K¹€å”Š“:Úô³	ãâ8Ùá¹‹<Ú×3
ü$Ê“|‡ä~E‡+DvŸAoÜ üÊmö¸M’~RxPÞ•‰È@È\s¸¾Âa_"¡CtCNaÈ9‡!0dÝ{ži`àÈ‘^ý
.pC½®qÐ¸–¬›5pšžÌ;ÚXt¸Ê&h”5è”5è”5è”5èT§î”5è5S@dTVªw(ÔPQ¨‘¢`U'
5L€”‰ QY·¨ŠÖ-®¦VVk$4¬5lRÒÖC4¬‡hàÒYë
·ÈÐÇò,6®6ÀcMëƒ¿ãrý;®FpÛYú
ÅoôŠàè+X¯¾Â5!ªOäþŠîÐŸ¨Ú¦?aÕ-.Íq©Õt¶']„¯“Ž­iáìŽÁ™[©Øk`&H‹	Ö†VÓUÓ¬¢ÏQxÌ»ÛG„¹ôÜv^çÃÞû‹ÿµºZ¯Äqè·Vö¤úv| ?zæ d?ÆÛèðÂ¸Ç].ŽË¦ÿ¨g¯áß†GSwÏ®LÇí’ß“;OÒ,XÅ|–>«“"
Ó:åaž‘rˆ˜×qY•±(E‘±Hd¼H£ ã›¢¦[×/ðž¿CjMž,£K±iú£1ð–sI™Ãq½ß£xãÏãqÙSÁ­7Ïè·´ïÏ£ç¨ïò¥Ùñ˜ý-£²n?'Þë1¨¡nc§Qj^¼	¼G.Ï¼7á3ïÑœ_ú÷‹Ÿþá=r%c±¿yì…r]8ŸŸ1ål
Àæ7ÊÖiS)6¬™suú{'–Ìa,ÆB	c°zi\÷uK™u.Ôö-ë	4•vŒ~v­Ì;u?F™dß—¬[·âÈ£~§‡µõ#š›ÅÅ¤Ý†G£¯y¹tezäQÍqá5.c[w(F9\¸pµÂsn:6Fê7ö1ç2¦]|ûŽ*f,”|8úf·RÑ«“ï™«ëî¥E{.ÆVw­B…1Ò³7çTÏÚÅ|‰iò8Û¯VûÒ47WûuüFüóËñvJüC½’ ‹Òâš»S‘ÅQ¦»þNEžI~°[·›|¾Æp»MŸ§ ÌŠOqzÊÕq'1WòXoxG	²ëúh!ŠÊtÍ»2eÖ>AŸßþå[‡|u²®K4¬>þÀåúX®³3$4¨ƒd—iƒÊtÎ`ý#Çòœ#¡QU­p™Æu½Öõ8Ðpœà@CÀ–€MÚ4g8Ðpœ=à@ƒÀgWœ^9p~å×”„«`¶¹^; a£:Éz‰«mÂFU	°¶q•Ý Oƒc<ñ4@ÆÓ Od<ñ48ÆÓ Oƒc<ñ4@ÆÓ ÁnÜ ‰Z$jŽ¨5@ÆÓ )O4ÂÐ
ÿ†´g¿!ÎoÈ¹ê7ädõrØÿ†@¿rÆFÕ¸Y‰#²H6%J !”8B(„Pâ¡+‰#V8ÃJ ±’8b%‘»‚È¬$YI³’@“´”À\@C9àå 4”ÐP@C9àå 4”ÎP@C9àå 4
ÐP8C9 mÙ ´eÎ–Èë€39
gqÌà(ÜŽŒÂ™2…ÛêQ8#©p6RÁL¤ÂYH3
·[§p{u
gÕÌ¨+Üd­p&]Á,º:×)œs:×) s:×) s:×)œs:×)œs:×) sn£) sÂ9×) s:×)d¶¹Æ­!Î¹NëÐ¹NkWÙ@ç:…s®S@ç:t®S@ç:t®S@ç:…s®S@ç:…s®S@ç:t®S@ç:…s®S@ç:t®S8ç:t®S@ç:t®S8ç:…t®SHç:…t®SHç:…t®SHç:…t®S@ç:t®S@ç:…s®S@ç:t®S@ç:…s®S@ç:…s®S@ç:…s®S@ç:t®S8ç:…t®S@ç:t®S8ç:t®S@K	Ì5Ð¹NáœëÐ¹NëÐ¹NáœëÐ¹NáœëÐ¹NáœëÐ¹NëÎ¹NëÐ¹NáœëÒ¹Náœë4N¹NÃ”ë4N¹Nã”ë4N¹Nã”ë4N¹NÃ”ë4N¹NÃ”ë4N¹Nã”ë4N¹NÃ”ë4N¹Nã”ë4L¹NãŠ4N¡Hã$s4L2GokÜMcín£ºn£U»[Ì¸|ãÌ.nWãnHkài»!MÐ@Û+Æ·ù¬q7»5ðf·ÞìÖ¸›ÝÚ]¾†õ@ Æí=kÜÅní.vÃª¸\f—kÜ>»Á§q7ø4îŸÆÝàÓ¸|wƒOÃnðiÜ>»Á§q7ø4îŸÆÝàÓ°|wƒOãnðiØ>»©¡q754îê€†]Ð@+ó¸Ò
¸É ôæÒ
¸É ôÓ@O1óÓ@O1ó#h ín2 =Ü4ÎÃM=Ü4ÐÃMã<Ü´n2 Ü4ÐÁMãÜ´n2 ç4ÎyNãœçn“ÁÀ6n“Áà6n“Áà6n“ÁÀ6n“ÁÀ6n“Áà6n“ÁÀ6n“Áà6l“Á e‚N&È e‚P&È e‚P&È e‚N&È e‚N&È e‚P&È e‚P&Èàd‚P&È e‚nóÙà6ŸP&Èàd‚P&È e‚n¯ßÀöúP&Èàd‚P&È e‚P&È e‚P&Èàd‚P&Èàd‚P&È e‚P&Èàd‚P&È e‚N&È e‚P&È e‚N&È e‚R&È e‚R&È e‚R&È e‚P&È e‚ÐiÅàœVÐ±Ä ?ÐùÃàœ?ÐùÃàœ?Ð‰Âàœ(Ð‰Â (Î‰Â e‚Ð‹Â ½(Î‹Â =ÎÓÁ =p2A'd€2A(d€2A'd€2A'd€2A'd€2A(dp2A(d€2A'd2A&Ô.UÍ»“ºÂ k²A K€jÃ!CjÃ!ƒj#„ÕF«T°®ë°ŽaB†ª‹Œ©‹Œ©ëÖ54ªo°q2ÀÊ€)Ç¼;n—ƒz\ÉÛFn›sÉóògåûÉ©_+yÞTBOßÙ¯”ø}hÔüÕw¶ff¥û@ýAPž’iqÀcî¸lúýBìçØ½-K-[zúý¥¸Ö@/Þ è}è{ÅÙËû“ÓZªŽ™§‹'§kÆÏØRÐÇé“g®Ö”(½ôÀ=kóðt'zXõäÔ}mgŠ¯žöÒþõäÔýÃ~KYÑì?¢èOøJð3=tSôŠ…IúÀ[Ÿ-›êÛÿóÃëOã0©’‚×qUÄaÈ„¨Ò¤H.˜`©_EÉJ!âZ¤UÄuÈâ$,“$¦‡ƒØ¯Ù“Ó9—"ýÝ1uõôùËã×¶T^Íº¦½òdíÕ²7úÉéü„}šz4WÍÚP±n|ÃcJxÏ*Y
ï•Â¦¯ÍŠ*òºe\,ÌŠ~Nß¼ŽEÏe%*ï¹ìÖƒ!¼—ôOÕ{~x~úæùã£kÏ-žËž+jÆë?xÏ_z¥j–+ã±¾ò^ü<¥ûÈ¬½ &[Keš~é±¶õ~”\Ö{-ë—5¹öÄ%kãý¤„8;rôàâù•jÚ¶án(UÛÇP‚ýÒ‚v¬¿ò¨?´TÌÖöš~a›Qã’ý}`mc®N¼7Tö1kârÕ”ñlmhzÙë„=Þ¦*´Õ%/…a?Ò“›"J*_Ó³VŸ<9ÝmÛ6SßUOŸÓÀùûkï»¡i+}¥½?µæ›rXêÿäôƒÔ'R-ÿ´4ßlú½r¯ª}º2fýçÓS3,íC§S?}rj´™†2Y7-õÍ )Ò$Ï‹$zà•6©é«,IÂlêÎºùCxS*ß>H“$‰ü<@5£U® wÒ<ÈÓÂxvÜPjö«(N’ œ@ZÉ]…z+%êo¼áôéõñx<¬ãqHŒòÄŽâiñ›†ÚUôZ<ýéÕ‹ÿçˆù›í3ç¢¯ä\©ãCÓWÛg–Jë§ÏÖkz}lüÓWCÙ6zE?¾3>²}ÅUÙJjó”Ù\¦ñ±t¥¼<Ù¶ÒøæöÉíÛZŠú´™•®^+nK>BlßB¬£av¬¨CSç3L™o$©O­C¥³mGþv}Û¦ÝÀT6­a‚êµ·Î„vñ;¶â‡\ J \‚]‚]Ž.—@£‡ƒË[ ÂGä¿Ñu[æó5Ýà %úw´1l]—åeà£°?ñà)<C‚çHðøPð"Á‡ÈœÇ1<a£¿	ý,ÆÇ90çEžÂÀ£$Pà-rVl‘³b‹œ[ä¬Ø"gÅ9+¶ÈY±EÎŠ-rVl‘³b‹œ[ä¬Ø"gÅ9+vÈY±CN\rnésK‡œ[:äÜÒ!ç–9·tÈ¹¥CÎ-rné s‹Ä­q	;ÃaãS0h¬m¬m…«m«mìÛØ·5®ok\ßÖÀ¾­}[ãú¶ÆõmÓâjÛ ÇÍ%’Ë^"Wø—H¢|‰\á_"Yø%’…_"Yø%’…_"Yø%’…_"Yø%’…_"Yø%…sœ	7+8nV$pÜ¬Hà¸Y‘sà¬hÁa³"ãfEÇÍŠŽ›9ÎŠŽ›	7+rŽœ‘gäyFÎ‘gäyFÎ‘gäyFÎ‘gäyFÎ‘gäyFÎ‘gäyFÎ‘gäyF^­€³"ãfEÇÍŠŽ›	7+V+à¬hÁa³"ãfEÇÍŠŽ›«pV$pÜ¬Hà¸Y±ZgÅºÎŠŽ›	7+8nV$pÜ¬X—ÀYÑ‚ÃfEÇÍŠŽ›	7+Ö%pV¬kdW¬‘]±FvÅÙkdW¬f®F.rkä"·F.rkä"·F.rkä"·F.rkä-É[4’·h$oÑÈá¯‘Ã_#‡¿Fþ9ü5pø7ØÏ	×ÏìçÖÏ	×Ï	×Ï	×Ïíç@:‡ºn‹»m‹»l‹»k½j+‘é !‘é !‘é !‘é !‘é !‘é !‘é !­§
[uHlØèT¬)U‡ò1'hXïVÊÇ\jœ9aÃºˆna]D·°.¢[XÑ-¬‹˜ÖE~‡‘o…<,TÈÃB…<,TÈÃB…<,TÈÃB…<,TÈÃB…<,TÈÃB…<,$pÛ$pÛT%m*¤Ì gE¤†gE¤@‚B
$(¤@‚B
$(¤@‚B
$(¤@‚B
$(¤@‚B
$häÎ¤FîLjäÎ¤FîLjäÎ¤FîLjäÎ¤FîLjäÎ¤FîLjäÎ¤FîLjäÎ¤FîLjäÕ,¼š¥‘W³4òj–Fz­i¤×šFz­i¤×šFz­i¤×šFz­iäÕ,¼š¥‘W³4R¾T#åK5R¾T#åK5R¾T#åK5R¾T#åK5R¾T#åK5R¾T#åK5R¾T#åKµDÎŠ9+Jä¬(‘³¢DÎŠ9+Jä¬(‘³¢DÎŠ9+Jä¬(‘³¢DÎŠ9+ÂÜ45òJ‰F^)ÑÈ+%y¥D#¯”hä•¼R¢‘WJ4òJ‰F^)ÑÈ+%œo5r¾ÕÈùVW8gJ¼Æ£‘×x4òF^ãÑÈk<œ[×x4òF^ã!pàÜbsRÔX#E5RÔX#E5RÔX#E5RÔX#E5RÔX#E5RÔX#E5RÔX#EÒEÄ ]DÒEÄ ]DÒEÄ ]DÒEÄ ]DÒEÄ ]DÒEÄ ]DÒEÄ ]DÒEÄ ]DÒEÄ ]DÒEÄ ]DÒEÄ ]DÒEÄ ]DÒEÄ wŠr§È wŠr§È wŠr§È wŠr§È wŠr§È wŠ$)¤h@’¢IŠ$)¤h@’¢IŠ$)¤h@’¢IŠ$)¤è9üÏ‘Ãÿ9üÏ‘Ãÿ9üÏ‘Ãÿ9üÏ‘Ãÿ9üÏ‘Ãÿ:ü‘k¢säšè¹&:G®‰Î‘k¢säšè¹&:G®‰Î‘k¢säšè¹&ºDÞ°¾DÞ°¾DÞ°¾DŸ]"Ï.‘Çg—Èã³KäñÙ%òøìy|v‰<>»DŸ]"Ï.qÇgæj-ÁO´¹ºmìcÞëa-
÷¸’ü–±Ûæ\ ò½‡ýYyrjá×Jž7•ÐÓwö+%~5uS“¼S'uõøÕ¼ºZ¯D\2-xkEßxãlÍÌJöÇŒ ?zæ d]½º\øØá¨.ÇeÓÔ³×ðÇÖÚo‡"K-[zë½Íus¯yñææ^³—ô^:ON­’'3OON×ŒŸ±¥ Ó'ÏNß> —¸gm.žn3ÁÖONÝWö7¦øêi/í_ONÝ?ì·”ÝÈþ#ºó¾üLÝ”¸^±0I©Ï–Mõíƒÿùáõƒ§EQ%2–ùE”'<EQæAD‹Â2$lVK²"q!+ÒTˆH”¹ðEöätNÄ¥HwL]=µ%ò¦¢?9¿µOÐ°âªY*Êµ§v±ON?¨§Ï©áþþÚûnhÚJ_iïO­ù¦–ú?9ý õ‰TË?-Í7›ZWîõAµOWÆ¬ÿ|zj†¥}ètªïÓ'§öGûi:áÕMk{UR¤Iž1Õli“š¾Ê’$Ì¦
ÕÍbÎð·¢(öý^ÓkÃÚVÐQØ
¶mFéÐ¿ã ŸºÌ“VrfËæ­”¨¿}ðjDÑ§»àxnÍã±OÆ^pb»Íˆ2w±M§nª-ž¾xõêÅØ)ço¶Ïœ‹¾’s=ŽM_mŸY*9¬Ÿ>[¯éu—O}új(ÛF¯š~9¾3>²}ÅÕÒJjó”Ù\¦ñ±t¥¼<Ù6ÌøæöÉíÛZŠú´×¯·%!¶o!V‚U4tëi€Q#(óíƒ$õs½=µF˜úñvf{b¿a·²ÚlÀÄYë[Ïï¶§ß›•>Ð–¾eûnÅØ\+øÝqi»'[ŠœYÙÞ¬fuHSg%’ â%M±´b+Ã¢&ô,)"QøQ˜U<*“<ˆDè—AG¼¼ÑÖ¸Bbn®=ø¥XœüP‹“D1Ù“]‹D‰Ÿä;&Ç.PCÿ`›ãjä«Ù¹M³ùYŠÙ)/yø'¦în}1jÁ­<asÍˆ=½nJƒ°ëµ„Ã.@ÐV{…Ìµ./%¬›hÝ‡}nœ¼? |6†øyÐ_Aü¢Öë{#i"1ªšç¹`,OÊºÊˆ¦Ä¹(3Q©¨Y^V±ý²ªDæA×y˜¥UPVÉM$­×´Ý‡¾r–$oYž¦ûï§y»ÍÂ ŒÞèõWzv›ô,‹‚$üzæ;å¡ 3Oà ²0‚GHð	ž ÁA\gqâD[GpMsà(–6‚#G(ŠÎàÈ Gh€¡r„È Gh€¡!r„†È"Ghˆ¡!r„†È"Ghˆ¡!r„†ÈŠÚ0Á‘#4BŽÐ9B#ä#4BŽÐ9B#ä#4FŽÐ9Bcä‘#4FŽÐ9Bcä‘#4FŽÐ9BäM#4AŽÐ9BäM@#4@nýÈ­¿ ¹õ ·þäÖ_€Üú[rë/@nýÈ­¿ ¹õ ·þäÖ_€Üú[rë/@nýÈ­¿ ¹õ ·þäÖ_€Üú[rë/@nýÈ­¿ ¹õ ·þäÖ_€Üú[rë/@nýÈ­¿¹²‘+‹¹²‘+‹¹²‘+‹¹²‘+‹¹²‘+‹¹²‘+‹¹²‘+‹¹²‘+‹¹²‘+‹¹²‘+‹¹²‘+‹¹²‘+‹¹²‘+‹¹²‘+‹¹²‘+‹Ér#$Ë,7B²ÜÉr#$Ë,7B²ÜÉr#$Ë,7B²ÜÉr#$Ë,7B²ÜÉr#$Ë,7B²ÜÉr#$Ë,7B²ÜÉrc$)Š‘¤(F’¢IŠb$)Š‘¤(F’¢IŠb$)Š‘¤(F’¢IŠb$)Š‘¤(F’¢IŠb$)Š‘¤(F’¢IŠb$)Š‘¤(F’¢IŠb8)BmýÅÈ­¿¹õ#·þ$MD4AÑID$MD4AÑID$MD4AÑID$MD4AÑID$MD4AÑID$MD4AÑID$MD4AÑID8EA'HïÖéÝš ½[¤wkŠ\Y¤È•EŠ\Y¤È•EŠ\Y¤È•EŠ\Y¤È•EŠ\Y¤È•EŠ\Y¤È•EŠ\Y¤È•EŠ\Y¤È•EŠ\Y¤È•EŠ\Y¤È•EŠ\Y¤È•EŠ\Y¤È•EŠ\YdHR”!IQ†$E’eHR”!IQ†$E’eHR”!IQ†$E’eHR”!IQ†$E’eHR”!IQ†$E’eHR”!IQ†$E’epR„Ùnµ
ú HXÐµ[Ïí&ŒÀ¿eÈµkå~_Äµ›Ë}[á×dÛ
nJyyOÁ=x˜DX&JûuÀ+?+?LX]rúœÈC!¢ªŽ²$(è÷š3?Îã¬Šb?
oŒÀ¶)×1>Þñì—ê#;4ÔGXPµ¥{‘>ÂÜml¶Mœ0Âl
4ñá(›Zùìc·ðŸ4Î£t3–ßžÂn²G›æÀÝÀãaö	•÷ëãàßÒZ½»ø_‚Ñ¢éÀ–¶á÷dº‚²ª’:ŽyÔEU„±Fe—EÖ	-æ³ JAZ‡,/ª2 ;VI’T7˜®´¦†hXëQoY*Öiõ•3úf#öf%ôh=èq%¨DK¦*QyL{®’<ªmºòÞˆzd¹ŒèŽ<.©"h*]¬[Öôî§Žq%õ‘÷\vëÁå½”4õôzoèk›.ûºYj´„»à²ëèc¥[Õßx½ô^0B;ùr,éÁMÃ8Í÷Cfù»±²ÂƒÃd]ë¥ŸaFŸ)Óhóÿ±÷îÍqI¾èÿý)úãH:ÓMáý°g+Ë¶ÆgdîJÞñÙ«…B¡&^FšìÙØï~3«€~P"¤˜jN˜ž±Iv²
õÈüå£2aÝ3[¯Àë·oÖîî·?é_ßìÿ‚WÿòÓïõO-6¹õ]SáBã'¿¼úÎüTM[°G)}EJw¨˜zßJ(ü{ß’þ“[óR-[m–W—GÐp?ÍxŽ4K‹§ÿ©Ž4˜8¦±Ù"ù„¦ÇÆ.j~|ìbZ“È§#Í–å¦]ÁÙTÇÚÉÃù‘V+ ¶èU~b;Q€“kZyÙ³ão[ä—æä¼îÕjQé´vÀÑËc-'!±¼Ã‚•j±0‰Ç¦zÒWì\uv¼PÌ±fyÙ,›£. Kigáøè5¾8ÒFMXÐI-E],4:ÞÖ`™ãí¾‰0Gái@Ë)k66Ç§È4¬är¡@vÉÒÈÛ‰$6±õYQçÝ±}Þ×|¸È˜:Ú´Í*ÖÂ>n4¼®yKEçÍÊ–{Ýk!ÜðÔ¢©¸- 5ˆìDŠH²Œ‡¾Ÿó(÷½„¥^ÊG8v–Úa`Çq8Y”g ÛXyÚNâ9¶ë§Yy×("ÿ±{1ƒþ¯×>>j:üÌË> h©•@DX^`½ ÷N?6´›½\JÆ\k ¯70ŠÆ{Gÿh€B¸vÒ“}Û6ÒŠÇ-»µš^•E-ðûê) É-?¾_äêF}ÔEþµtïÖå‘‘äL«?\ÝYÝÁÏ*ÿÌ·ù<û[³Z-YwLišóŠâ|+,ŽÑâÕÝ„f¦.ý1#lßGi‰c°FôÝ1ÈˆMäæ˜¦•·ÇpöJ”klæt>ÖSYâP«£àºÎkµ˜‚›Y·žð‚ØgËþy`#
ŸÒoÍá™ÓÇZ†ˆ°>Öo{9E«îd~¬	ÌDÚ[K­NnŽ*c³)†ö(Ž-ÚcçBMš‡^K¥#.˜ÜLhâ.Ž°ÙñöOÖæÀIŽ1l†¨éóõµÆ£ûp6|,®nò0ÜMdL Hå¦X©ª¼¬Êé^ì%Â÷]±ÔÍÝ„Û,ObÎ½(ðyÄ³”	eq’f,ÏóÄMÓ<ÍÂ„åQâf¹wý/ïzóâÝkøÏ¯?½Qùõ:ÂˆO-Õ ^L'~ ^ =ƒûñU¤PúSìàá øÐžŒâ½$rïÅ»è¼ÿ+w/nïî¿fåO„~yÉ¤Ä}DÖü31ÁÄàõ&YòüÕ1\³rœ’i4ÅÔw‚ðŽŠÓ­ž.÷-ÆDÖ-ÝÇ‰D–í†nœò0ÉÏK<7Ãu?Œ3G¤Üsœ<ÈãÄ÷ÜÈ‹ìTˆ8g¹Ãbá8ŒG×ˆ¬oµ'ÜHa6ŽúÔÇvÚ­ŠBÓ’YéFÛµxRL°jn¡“]Y¥`RÍ`"6Àº¦^–ko­<s¦[¥¼ûv‹ëö(Íþ•¤™ïÞÁ-þÌ,4²Ujw¶á‹'2SpY%yyLûƒFôß”¥â˜Ú­Û,0ØrSÚ¦Gý¤œu@¬<ö¢°  
¤Ç˜­¹^Vüè9«ùf•3`åÅ¥Ëš#–¢©|t¬YÇÚUÁ­×ØlÁócnÄˆ»®;ú²åoðp¢ŽúTM»)FÝr’7´T—U!Yæª¼Îå±N«¸lvlBj¦ŽoÍ&]Vˆ£2í­ž°åZ9eZ9á-[Ù\õÇ`Ms”=€,?…)çþ åéÝ¥n,ÍEˆW	ÆDj§™›ç¶ˆx†1óNœæ<ÊœÈ·ý0Yž%!óò ó€3q¶4(pïõ& Ì—Önz¬&?xšeÙ>ÝÂOŒß4}\ ¿YÍVl-¬TmRÛê¥x@¸ÒŽ+c÷ž½W÷Ù#Äü—‚˜‘skoç 1¿º$vvžÁÖ<œÇ°"(ºG}‰è
U,=¸	ã:ê/eškU¨£°ôxìïš£MàµŽ"`!›E{Ô{)zQoSwÜ^*\·c“­Q4^“™Ðì8LÕÍÖÝ1\–—;fÄÓø´=ê~Î-Í”X»ßÎkÖ„=ÒìØõ/w{âp=ÈÀZ-½sÑÕGU·ÒÅþ±†E-Žz{1ÚäÁQ0jçZe“š‰ª)Ží\ŒVˆZÀÁDDw¬Ý±AÕj©­ÙGmÔ</Žm7Ð%Ú	kÔ6 š4ÇöQ+óŽÓ½º£ú(ÌF #$Y=ÅÎ ä;Úª*ê£Ñ1R´uÌ­-…BWÃ±…–}:)lWñãçjÕWéq-·úaŽ)hÀƒ:‰vácN	m%9Öè\lÖÇ¸ÊU¾‡ïÐ!þ'Òƒ<
ü(ä^$R7BÏ]$ÏóÔqX˜GYœåÂO"—Ù,ts–‹ÜND¨4ùuNó_Å4ßÃÛ}µO?4×‡_LÀõ‹¿µ¢~ƒ_ˆáH¦#gÓÍìÿ45œjV[sëŠê¦çó)‰Þ-œ^x¿J¢ž‹GÍð_J3t]ûöš¡^hjÍÐ\F:‘ÖÖ±tÊe(vZI%&( Å%p÷uq4¸%*zš]tGu¯vU”Í9+†Úµ(ØÁ ÁÊi×]zŒÇÕ ð(’ëëBöÇÃ€/ÿíØœ@›)â_€&v´ÍµçRH§úh³ãûÈpÎBß?šÔ´•ª+@Nj¬Št‚c;O·ä­Ð-qu~DÍ8yä~ìâ!G9u¾íÎ;Ë¸°íÙ6À1/Lm7Œ‚<Í¸og‘ç„Ì‰0®ÑƒÜ27¶#–8vÈc;	OÝä$ö2ÃL%È!@b8KÝ2‚€Hs!­ÿc²"”}UëðÆT”EfÈçÓ|ÏJ‹‹²”ˆùSX»‰í ± ŽgŽÅ(¶§#2½·“Ý+T
üÛ_ÒI†ôbP¥2ADt	ÓQŒûp÷Ÿ,µÐ3ÖulcüÆñšÍ1¡ái“}<_>ì¿F|z"aåÌ#;‚XîàEß<y’åÂå™Àw¾ˆE’ñÕ© äa„Ž“sÏO½À¹FX¢à{ÕÔ #•Ét<­ÞK+ïËÒÊSF¶ ¨T/ëê<Aõ!¡¹qkë‡6³á6HÖlÍj.28ð$Äµ,oævyf½BÛEÆÁé¬GõL';².@	P+t¬w†â²Â øœ›(\×üCìx‰‡qr`ñ’ÄÕŸ.†õ¦ý)üúí›?aôë£4þHhòã;„MÆfgkï=¿-–‹¦;—gE]Ü;q&dÓ.2qF`yy–ÀàY%	‰·Œvð@?ïhéŠ”>%qÂ•­ûŠtæ>q)©¦=+†‹¼DSßm$È[
ÒÀ‰ñj¾A3v^õ™¨9aEF˜ŠrW–œˆ0ÕTx	v£Åj¶>c¹íÚ¸b¤Ýæ)mŠ|ÿë.
•±uAÃœ2vqŠ mQ5‹ŠHkâ”"Gw€În2â—UIC¼é—%£™IhmŸ„#m2eh7rÑjwù¢¬hú¸DÁB\²ª-iÀÿJ×%	íóSjÁh°­!.hØ£Î½IB¹DÇ(Í Ë¦4Pß$5NE.0ô Ã¿(;(Y½ìÑÊDÙ	Æ0’ÒoË"¥ì@gF%í m×p!eÓÑáÕOtFÙ¼(–°0äï3ôCÙÙ+T¾B;3oK›lÜÀ·ÉÆM$4íšÄyº¥M4îA³Å+XªŽ‘YÏÕñ1¾"â%Û4=ñšu]s¡ÈÈ‹º‰Á»Ò‚¤ÊÑŽ8ÍÈaŸ*ÇfMáÿ4ÄÙraÃ?DÄ•è
"Q!#[ÏóbM§Òjêí%mED´†eS‰nC3éêrë‹ÆÈ”zI´qöúáM•õé§"rƒvÓÒ¯M‘	"Õ~/ÃÅEò~*ÖgÍýÚ€zÄ_Ñï5)0:™¾›ß‰ é^ª¨¾Ä ²çÖ-Ëþô'’H‹¦+–EÍÊËšTèìÛ$l×O%é„âA/¼êè;Ñ·ëi»¡Ÿ­íiÔÚ¾²¾ª6´]ˆªUÄ]èûäÀŒ¥\ÄÓ6ø.¸$Þl´>’«Ý´å—yuMÜÏºYŠò‹œLîNÛÃ¦éëe·é©´‹;"R5~_Ä‰«ò÷^¬EÖP…ý~IÇó6¹'´§ñ©ÈK»…íPw)‰{”Ä}"â<#œóœý¾ 2ÄIGNµ[4qªÝ¢ÍuTÓ¨ˆnA5qÒ‘S-¨&Nµ š8Õñ×ÄJâ!%ñˆ’xLI<!$îPžP‡ò„:”'Ô¡<¡å	u(O¨CyBÊCäP"—r+º”[Ñ¥\P—’å”Œ+¤d\!ån	)wKHÉ¸BÊ­RnÅ’q%”šÍ¹úŸÓÅUÒ4Æ‰y…·vL´^½„P}»ø&jR*¦zPÏ‹5ý¾mÑ-C¼%šv$Þf9	qÐY6¹%P‰<_¨®¨áXbáßšÕ² œ¦±‡/0Y—úFýBŸdo¯ZõŒ&HA•Å’fV0S4Ídô¹¢á	˜]e‘ö›³Œ)â¹Ìéˆ/Wÿ¤#®*š‘_°.#YÌQÈŠèÔ\.²‚Ì¶Ž•›)`†ˆ¬.JEDš,ÃÅ„äÕ¹ÿI9 šôa/à­^ÜXZîE/;Ýª7Ö­Ú¶ÃëoÊ†‰Õ{U”ò‰š¼Ëm±Óg¯t’Ð›r–éf?¥øê«o†à‡G›¿ªiÕW_½iêã´ßŸOhòÕWßÝûNïÛÔQ<ÒH§\UÇrºµR-Ú²QSò¿Y\'´Õ{“UrBÝ¹Ûä\½Eb¹òH¡Ñâx	Ó²?^N7I“×Jß­œÒZ(Ö6rRÓËdL&<¥®žniêáMh(fyë¦T	PÇ“ëvÉ†ï%ýßÇÌöÓÙÿ";Ø¥¿%@ñùáCLúöÍ–ÓmÓêohñ[qS#Ü™±ohR©Ë®¯6¸¹	üïZ|N‚Ä¾+Dw²‰±/`µRÛŽr7
wb7ˆE”99‰Ÿ¥vž¤ã¸¶›º™3ÇÎl/õý,ÉX_“ ñ—ÿø»õÅ‡å°U`étÖ¾]Õ¾›%‚ÆˆI
5»ÔOô@‡IëIÖ5íws'Ú’q¡“ê/1Þ÷©œé{âH`nñ¦j»Bõò+kaa’½6ô;¾‚ýYÚ­gx…HªÇ z¤2¨X?‹‹O<ðük ó´MôzýÓÿHuÛN?ôsQ¥½´~jêÆzó©'Sóä+³öŸùx¨õs“|úÁ¡Ë÷E%ºzJþ§žØNÔ_D¹ªàL?õNa!ï.³Þ™$$7>jÚèçp™¿…©1Ž¾Za‚J˜¸7ÖO"+`óý¨XYðÙµÍ„Ïmé¾nÔ
«“ënxú%f¼²^c¢KxÓK›çß²²dY3~ÃÃÐË5ÏNúËÈžœ}ÚœØ?H~™¸¾—D{™/?LàÌ›Ç§½Ôûï3Ó^>¦»<Hwé£,ÜŠÂ•‹kðeÜõ¼;Ë³{W¤9ïR’œQšð:'¡+²!i¢Adc.È†L8ÑÙLwTcî¨L7ÍÝ,“íçŽj?w„û¹£ÚÏ]êØ=Í¨»Ô­©(‡¿QQŽÈ(Çdóœí»® ÛÙæ(È6GA¶9
²ÍQmŽßè6Çod›ã7²ÍñÙæølsüF¶9:ºÍÑ‘mŽŽlstd›£#ÛÑæhª’HÛl*IEY9D”[*¹%Ò‘nD³3ÒDƒŽIflMš“Í¦šM¶¥³ ´d¤L·†dKÈ	"§;‰œppºRr†lBªéh7_C·ùÊU$$hEACxÖ²³NxÔÉ¦šÄ~ŒtéÎyGvÌ;Â¤;äÙïèŽ8•¡%ó/ eº5$[BB´×Ñ¡½Žíuth¯#Cd"ëYG‡È:BDÖ"²Ž‘u„ˆ¬#Dd"#³¾)IEÉR\êêéÌo=™ù­§3¿õtæ·žÌüÖÓ™ßz:ó[Of~ë	mY=-«'´eõt¶¬žÐxÓÓozBãMOh¼ééŒ7=¡ñ¦'4ÞôtÆ›žÎ`Ñ“,z:ƒEOg°èÉ=Á¢§3Xôd‹žPûïé´ÿžPûïé´ÿžP•îéTéžP•î	UéžN•î	UéžP•îÉTéñÚÍ=“Ý¿ÑsgÒw¿/v‹Êûwž?¾ûú·+»¦=ÑÕÊ$t³ÄIÝ(Ï‹ßOÂ€Û‰ë$Y˜Æ¶ˆì„Û®ð\7âN¦!g,sY»i
‡]sµò]ßbif}ß«õÈ›®SŽÓdVoÀñ¦«Egé'˜ŸŽY¬,–5^ªÄÛ–¢,gÌ|¯º¢Â²3@«…¥’r®/Û±,+°#VÂ—ÐËP@?šá”®ñ. ù&·†5ÍÎ¬Ÿ©` ðÒb°“E¹j¬U,-aQ›t%áNä¢5òÌzY[~5«Ã;‰LÒTùU/73Ld…-pÐËŽµ«‚KßD\ª¹u® û•
¼]š÷¥¦ÐvEwg¿õ0<Þ”p|ö¯-6~XÂ~ÚÃOœµð~ð¼84[	ÖZÞø<h
ãßÍ“Uµ°ðb3+j©)à…À™žW«»¶°xó¥îH¿6ƒFÊ<Ô´xa~!mìƒë<}gîûa­­í£{3†o2Ã·gÖßôäšuO…Â×ƒw.YÚÄ.
µ²²uÑÂ0÷åqX³µþ¥ÛÐ•Jgê•J×=?>¸Ré†v’ø{W*ÝÐuãárûñ+•xeyd$·¿OùæíÛ7÷)îSŸõÂ­¨øX<]<Û´U4õ
SÐ$KïsÿãÝíôÓdÞÑë|¹›’¸edçÚÞ€¼EòŽ«³ùé<f6º=èã3€“ü½o€Ê‰ÀSÎœH$i.|D!óyœ)³=Ÿ9Ž@‰9™œ3—E^$âÌp$näg^rxze’ˆ T¨ePÁÂ·4<g¼(áCqšz¿Bz ¨ ˜lÉ²=Z|µð(³B¶%àmw€d~T(  ®A 3®àÍûP¤3y.gø§Î\Ð5•–Ù¢'Y`žW‹í1w@Ã÷Ð	0Jq9ËÊ~iRj`m¯ƒA¼‡æ{Ã.j^ö™ƒœÏD½.ºFÃÂò`ê™È‹Z#µ§¦JYf»<5Øj–m`ÛÀ°Jê4œ2c+:kÈärfý?Û¹7ÐÃL¼€¥lÓ«q¤¡àq7j3jÀZØÌ@¯`ØðÊÌt_SÁû®CD[ÂöÅÏS–Šr»”…œ±5+J|!='Ðv²‡n÷&i»dÐoZ1Óh;ñ²¼ÈníÍ<ã Ô`B¬‹®@„9·„n†/7+jýðª‡æ¦‡PÊ›X’#ú-Íò¡dÜ”ØRÎ©#bÇ4†Gßnoa&,ï ã2_u¶›qBçOôâ½øÕ,ùÈËt°2«¦{*gBéÔ(—ã4> ÄçME|^'ž{€øä[öâìÐ	ã©ˆo`œ¨ï^Q_ˆ¿ßõÉß±Ð0ˆñ3`X÷#kXë3ž/éˆ“ŽœÄ©è’Acšq²…ÓAä‘]OAÉçb³fåÇÈŸšÒ/Ž“µ¹êD(ÙöÓÀ¶(só4eŒ;^ Œ2tƒÄfÌg,KEêq7Ž³(ó8ˆs×³3ß‹Ü(i ®AÉßcö‹¹ØP  D‚¯z:~;â=jv…ÊÜ*E®hŒëŠåJ-´ÕQd3c÷C´ñ¬êKU x]<×P¤{Ù0„ŸhåM£jÍ¼¬Ajƒà „5ø·UçÚTg¬^ú!Äù²7ã è †Í¾Öh&/:©fðÑ:K6Ñ ÎÂC¨[KQ´…ÕËÙšuÅ€Iâ€Y3½pMž‹‘;³@ÞhCry¯à•f€€Q	Aþp`“?6Ežg;álŠã(òœ=Ø'>æ'››ôò?‚¦{MIÜÅT¦—‚hÒ4TÉPÅ˜÷÷ü	ÓUƒD>’ð÷ë:¶™0G&¼ÐÃÚtkÝm0K§íõrJ[h_²nÝË	0ôñ^:ÒÎÁSe³õl;vr'rBßqóœÇnäŠˆ'g	w=Ðô½Äc?¶3Wˆ Ž\îÛg±ˆÂØö®³2Å›Lüƒ|Vÿ0~Ø[Û
­J¨Uc…6¢i,SbÙthû™/+HXëM)sµÁP6tË­7/Ýhôó¼pì¶3ƒ	˜€·ÉMÆ]WXÏX)kkèB›Q©L2oÜÜÆZ²¢ž¡‰O>M”£ÛvìÅ<‚xû~ÏÖÎ™ÃÂÂÏgÆ¿
D 
î6¢ÁaÀ0)|2èæEŠ–5Ý…PNáÌñ¦æ¢USÁ‘EÉ/¢¸‰í#'ðÝé‰Yw“øˆî×™èßÉ¬´[B˜¤é’¦L£ÿè0œÌ˜ò9…îMÚ<_\ä÷]‡\òDòžeQäpÇOcÐ<™p¼$®œ{®‹Üw=Ï…:¶¬Ú±íHÄqàr'ëÆif_#ï;†æÿzâµ2«ˆÒ´¨Û^éïntŠeÿï´jJ†µ#¿4õ,ƒ]Á€¹¥E,¶˜[[sÁÜÊû²ÜKÿ…c{®SÂëqYX™¥µ–üÖ3dlýatð™±|mÊÈiÒZŒ—‹Ñç£MÐöÝvªà¤ç@h†áOÍè%‚ïÐ´7‡9Æéx¥ÎÀ¥ÓñPÆ‚3/ÓÏ}…aTU_ª¹q°™)<Ý*73Qµe³ÇWš&ix¿™¤¦ÁÎMFd©m6Á²ÈÂt¿Æ+šúÆ$‡ˆ³Š!z!Ô|¦š%à9 ½õ>1oþÄzf^f\êçz$Ã·ò	¢±rvØdëÀí`¼ãhVÁ1CvF·Áy¸§~(~þëÂHádŒ”$qth@râÐóƒ}ŒG Õ§b¤}&@²œ3ï$]I‰s‡öÛa©DþD”¶ÐÀ°8]2 F3îÃcv:?ÖVMñc­Yÿ¡‡{}jVos×Ïê=!»T|dð§ŠÿÊ"?O#?É˜Ûà¹4ä‰Ï™Íc7<ˆyêy1Zmò0tmø#‰âÔ…¢È÷®ÿZig&ìÕd€%´ðÞz­tHü7dæà¨ÇAM/­¬Èu¨ºúÛ8kwÆ˜©-ªš*3Š! m4íGž4m.2AdˆôÓ{C´žaôX½±–°xµþèùÑã.VÀòç–ëë_Æ ø™ß®°XºN÷«Ã£ îá6^en­Øû.”œ5µUi“‚Ó¸×L[¬vÓ0Æ]ÉCsP”WŠ7ýP#êaÅESñŒ…IpG;°ã}‡˜g;ÎT›Ïx ñÌ}ã/ˆïbô„ÇdjñË_E½Ä‰%	øÁÞw€·ˆ`—Ôdô{,ºIG?e+&uù{/È¨wB5t3ƒQ«t'íË%£\Y`]¬$$ß5À	éÿSp²ÉÏXM¸´Y¯è†Ž1ÔÀåUC×*Â…Í‹šròs¼4IF}‰u	'À[EH½âœŠøJ ?¾ ¢@˜YVp²:ÂMY`=PºuÕ=ÉˆË¦K	_±å†uTÔkj UÓÙºé$Ù‘mJhŒ¡"ý’(˜èwX'˜pe»^JBò’Ut‡VòFQ¢W)Hy‚,›5#ÛöH]Ôdj‰lIÑ¥¼!yÕwç„äûóŽµHÉèK«QÒLÎÖøEE—ÊóB4îCƒà	=/ƒ¡vŠç¥ÈÕJÔSÜ.#Õ‰ÍÖî„žŸO®ê—ãÁl.Y^]^uö\Æá?BŸÜÙG9ËS/ñì47I‹ÃÈw'q° Ï öÒØñRÛŽ\Ÿ¥YÙÜõ9óYœ]ãìyY›¨'Ž¾
ó²×;u¾fÃz†ó)ºr3>³à¿?Ç(feb-Ê¦ÕÙ’vDg£ƒG5c€°¥/3-Ò_±ŽqŒD½¼Á°sO¨dÝRÌvßJ18Ž¾ÇH•—ˆ¼ö)ã çx™ý	×î†'»Kè:ÚfÐÜjÐD¢ôÕ~ö“ásë òöÉ¬j21·$FŸ0ÔÉ1þ$m€î°‹¤Ux»¦†99¢…ßð&“à½¹3b½„±ó¦ÎÐ/d®É[Ë†•8g{SÂ0Ž¦ÞXOÞ~÷Ã“YSÖwú.»•5ð¨ãÍ=üT Ó©nà;®/p·	4Æ¹‰Unë¯9^Ë¯1hÈ\É:xn·XÖ³áòü?ÄTiæ€áKæØü‡`Yõ€<RÉGQÈnà|Ò#åÙQ]	Cöb×£´ç“‚O’éÈ#£øÈ'c8Å§Ôë·oþt2‡sa»ÊåºÞ-ƒk†E¸O8®ë½‡çÙâ’$é>?§¡;ÎÅ•þÑ4ïŽeZÔ$Ð“fÜ´ŸáÙýûžóC¶E<?§¼Êwì"ßm"Ö—å¦]K=ÉMÛ!Ÿf:M0ü'Ww„¾í‚Þ•£,	þÍ‹^vz¡¶øS|C‹Ë£MÔ-DšÞôí¥B¬¹ßæóÔ”½'Q–F¹›d©c‹$JbnÃF™dvJ‚gÇiž9ièG.Ë;q3;ý”$¹îÎßK+GìýÝþˆpòíÏ¯_¼þñ„•0f€èÇ®ýuœ‹
Pî9àYxaþ ôHd›PTçóÂLì7 Ñ&ÅT þŽ_aì¾NF 0¢kô þLE-òBmv}e-fïZ©UT&ï€´tîUýjA: ]ìPnZ( ¦ïùlL‰Šã-@ëÂ\sD-d—ðÀh*«P×BQ!@œ5õPó"/7A£–`¢ñÛN¬qn
ËßÅ·oº¿šì7/¿†‘Ã5ð¯e®.hPŒUdz	ŒÉdø2
cèDŽÙ¶`’fx‹R®†³Nm±È›²l.,“RÌh6æÍ†µ.Pej“³hò…¾ª`24t:¤¿éUÛ«¹Õ×0EzZ £Ìèoÿöî½N[&º™¦\ CN+ZøµÐÙô¯0ÝðŽÖ˜þb›•Kè¸¹Ùœ:Ž_QOÀð…UìžÂŒ+@¶ËLèŽs“'¶,·Qê¥QÄÌÍMÁ€0‘²09uQEŠáƒ»{,[ºúâ¥î2gˆ,¬ýlÃoÿ:·þó‡ùì-,Ì;½ß­÷p,·ø¾ëþiaY9åYÎLê¸Ùî*LÎŽÎÈÜú?o¿m‡Äì«¤w%“õ./q\û@íòÛ=ÐºüÀõ&§Æ0{ã3T®7 s­ÝG­kïJCtë+f(;U2#7Å˜÷(Sk03„zÀgÎûçk(rêÃ=®/¼Ødà`¼ž8lY¤˜c¡Ú™lÎÂgÏŸ…> Œ›ìÿðÌ2ÃÖÞÄÖ£þp›ª;4~ýæÇo_ýÃ=sÏ‚iÏÁÂ;!>ëLíéŸºõ”Æ*³g¯þåyùî/D·X>=F~8Žu´Ÿ¡¿]á#Ÿ¯±]9Ø÷BF\ùå¥êýhf¥pþBŠY"ü$ðOxêÅ®¿<^’óT¸žû™ëièáU“4ä\Ø^æ1E¡ãÛqà\«˜:Ù†f¼ìQl˜¯ê>B˜BYÇ.j£m½zÿògeÓ¾ÎJ­¾˜ë¸˜½YuEÚkàótK	Ý4æZËxÇ@9:ôEåYŠ˜¸¯·—“÷©m[žE)p¥¥¾X=–t g‹9(˜8±NMÃÄŽGax%%
^×‚ƒ¿Ž8‘?µ¸‚ž¸GWÄ}âÈöÃøv Ø$“~v° ÷ŒÛF<{ßYYŸ…g¢æ÷î@ˆ	Ù˜ÑíHÈ²Œ†l-‹ZÐ¬@¡K2Â-	å´ŽgƒäFÚ–8üqÿÞ;V7µ q²™Ü‚T³²%N2+4’q’Ýráü7¡h†œ³ËU±\Ñ'RUš‰^ëšiS!h¶†heSÓøR±é¼¯Ï7$”‹´Z/Ét”¿fÑ‘nè6ôï.}]œx]Rÿ’xWW.#¥ž’R§Ü1* $..kDÅ”]H‡ŽzES;åw¡3LÓ$€HSÀJLÊWIMø×B*Ò–	£¢÷PÉˆËMEEÏ;Ñb6rU¤$H…Ä„3 ïß™7&ôŸ’ÔÒ„©½§ó½GœhÎñLæŸ9óÿÚ®Ù‡é8½gósr.ßÐTG¦-tÔÒé|¡×Ÿ°Ï÷bÞº@Ö-ÏÑgºE…â[w“&üÂx†gèÀ¼ÖUÊòÊUGƒiå=ùRåzYÈ›ê$nâ'yä‡<…“‘;>a.2îxÂ÷#—çYì„~œúLØ.ciÀâ$°mÛõÝëR]¿2­{Q¨ª±Þqf
Dü§NDm½Þ¬š¼‰ÏÞýçëç7ÞŸÃ‰2Q˜cŠC]	·W¦Ðƒ˜bi¥sÝö?2 ÿúÓ}Ö³ëG£‡ayT³mÖDOôöÆÙ.ÏòºèTÏÊ1LQ·ªX+M8¥ìSÃ
€`nÕ‚)¦âVÖQüzùI(†mŸÊÙKkFÑÏÛt˜zÞ…•l#‡ÄVÙH©cIåðR3óˆñ"‹*ÆÍÂ‹™ñé€Ð±0Y©s^w¢-F÷õlK¬ùÝößaQ`ü$kê§»é€f¦Œº¯¾7g…õ
ìHwx‡°ÜœYß
9$2¯73¾k—÷v3¤XIÚÍáÕt-YÕ|n½ýî‡L—=ÅIßóäá¢gÖ/úZßE¹ÎñÎ!³.šîW#~ùgÜÃ»ÅÅq¬ÌOyfý »FWæÍ`Å SŒCÝ&\Ÿ[RpÜ5¿ÁêêŒàÇÉîÜÎÉžæÔöc/pœ};|zî-\ì¸¨Nöû‹<uoëdÖ€@Ç! »¿kIk9zÏŽžsw]á®Q”œÿCN(<|àõ«WÿðÎì;>÷¾æ9ýPò/æÙàÅ)½4öÄ®¤ÊøŸþt›Áí?ñê×__~ûã?œ3ïsžúz×<ßþi=³¿þ:}ƒ\óð™ã|æóŸÛÿ¦îàùÏ›¼3wâÁ¼öùÏœ¿ä¾£™wÿºýåNâ='4ÐBˆËÏVù?_÷¹lTàÏ×¦?QeLø‰Ÿ1'‰xäy¡ò0ÇOž¸i”:mßâÈNRPžçišgy˜ÄiÄ‚ké
ô8ŠÀ¿zPß@|ï˜ëqïœ]Ò—›ëF}ÿÊÚéfß÷¨}¸íà'ÓÁF­mM h…ë7T~z¿ëÔ›DEÊdEq’Ä¶Þÿòõp«Ÿ‹V¦Âï_¦õâÇNgÕª©{CÂ‚:©è‹éXÓ¤Ÿ©Ç†rHÛ¢Ë%*½Ê+£ãm‹‚£®c®ñÖ+ZÞc‘|SVãÊ¿Û r7ªúÜ2yn,
¤Q:± ·N#cÊ@í²ëìß?UHq¨AŽ³4×WÅ%ÃyšÁûJµ)1&{Yè[‹:›o,©»–ûEœtnqjøåg†‹3´|nêS¢\Ê
oW,k¼Ùnt•ó9½Òe·ºs}´Û5èCæoÐsè¹ÌLÚVH(àÞÑ/inËžYÿ!P‘Ë{Êýúž£v¯ö6‘™ëñ¯]å¨AãeQ5fëOÛ@8á|·OhÏh°+#
³üLƒ¢ì¹õ2k`Kè{ Î¶nÛ´Ï"¯zCœ½¡±&\Ùä³8ï…ÞÅ0ãeXÌ9¼6,èÐrŽÖ&¼> ×¦f™Bjû™šfÃ•\˜M'×”ª.c_êTIu_¥ºfØlWæìß»“Kmnè]‰½wÃÈ=wÏ,àÆ‰|u¢Y@ðÏ(K¬ÿDö€‡YÂµc?Þ	âIF½—v`ÛgÀY	BxHI<¢$SO‰;6)ñ$ #îRŽÜ÷	‰GnLFÜµ#ŸŽ¸Ž<‰C2â^{TÄKJ®XRrÅ’’+–”\±¤äŠ%%W,)¹bIÉKJ®XRrÅ’’+–”\±¤äŠ%%W¼¤äŠ—”\ñ’’+^RrÅKJ®xIÉ/)¹â%%W¼¤äŠ—”\ñ’’+^RrÅKJ®xIÈ9'äŠ@œŽ+q:®Äé¸"§ãŠœrE$NÆ8Wât\ˆÓqEÎ	¹"§ãŠ@œŽ+rNÉ)íŠœÒ®È)íŠœÒ®È)íŠœÒ®È)íŠœÒ®È)íŠœÒ®È)íŠœÒ®È)íŠœÒ®˜­¹"§ãŠ@œŽ+q:®Äé¸b¶"äŠHœŒ+q:®Äé¸"§ãŠÙŠ+q:®Äé¸b¶"äŠ…"<þ@œîøŠðø#q²ãÄéŽ?§;þ@œîøŠðøqºãÄéŽ¡™RÍIYQnÈ(ÿNFY)*Ò¥´¡´6”6Ð†ÒÚPÚ@JhCim(m ¥´¡´6”6Ð†ÒÚPÚ@Jh—rE NÇ8Wât\ˆÓqÅ.%äŠHœŒ+q:®Äé¸"§ãŠ]JÈ8Wât\±K)¹bEÉ+J®XQrÅŠ’+V”\±¢äŠ%W¬(¹bEÉ+J®XQrÅŠ’+V”\±"äŠ’Rƒ–”´¤Ô %¥-)5hI©AKJZRjÐ’Rƒ–”´¤Ô %¥-)5hI©AKÊ("IE$)£ˆ$e‘¤Œ"’”QD’2ŠHRFIÊ("IE$)£ˆ$e‘¤Œ"’”QD’òv¢¤¼()o'JÊÛ‰’òv¢¤¼()o'JÊÛ‰’òv¢¤¼()o'JÊÛ‰’òv¢¤¼(J®ØPrÅ†’+6”\±¡äŠ%Wl(¹bCÉJ®ØPrÅ†’+6”\±¡äŠ%W””\QRrEIÉ%%W””\QRrEIÉ%%W””\QRrEIÉ%%W””\QRrEÊˆsIq.)#Î%eÄ¹¤Œ8â„ÇŸ2â\RFœKÊˆsIq.)#Î%e"I™ÈFR&²‘”‰l$e"I™ÈFR&²‘”‰l$e"I™ÈFR&²‘”‰l$e"I™ÈFQÆZ(ÊXEk¡(c-e¬…¢ŒµP”±Š2ÖBQÆZ(ÊXEk¡(c-e¬…¢ŒµP”±Š2ÖBQÆZ(ÊXEk¡(c-e¬…¢ŒµP”±Š2ÖBQÆZ(JK‘¢´)JK‘¢´)JK‘¢´)JK‘¢´)JK‘¢´)JKQO	ŠzJPÔS‚¢žõ” ¨§E=%(ê)AQO	ŠzJPÔS‚¢žõ” ¨§EkÊã¿¦<þkÊã¿¦<þkÊã¿¦<þkÊã¿¦<þkÊã¿¦<þkÒãO©­)u¢5¥N´¦Ô‰Ö”:ÑšR'ZSêDkJhM©­)u¢5¥NtIyUù’òªò%åUåKJ÷Ù%¥ûì’Ò}vIé>»¤tŸ]RºÏ.)Ýg—”î³KJ÷Ù%¥ûì’Î}VÐ¥±,èòXt‰,ºL–a*KEYWQÄU”qeA\EYWQÄU”qeA\EYWQÄU”qeA\EYWQÄU”qeA\EYWQÄU”qeA\EYWQÄU”qeA\EYWQÄU”qeA\EYWQÄU”qeA\EYWQÄU”qeA\EYWQÄU”qeA\EYWQÄU”¥eéGEYúQQ–~T”¥eéGEYúQQ–~T”¥eéGEYúQQ–~T”¥eéGEYäLQ9S”EÎe‘3EYäLQ9S”EÎe‘3EYäLQ9S”EÎe-EYFQÖ‚Q”µ`e-EYFQÖ‚Q”µ`e-EYFQÖ‚Q”µ`e-EYFQÖ‚Q”µ`e-EYFQÖ‚Q”µ`e-EYFQÖ‚Q”µ`e-EYFQÖ‚Q”µ`eÕEYõ@QV=P”UeÕEYõ@QV=P”UeÕEYõ@QV=P”UeÕEYõ@QV=P”UeÕEYõ@QV=P”UeÕEYõ@QV=P”UeÕEYõ@QV=P”UeÕEYõ@QV=P”UeÕEYõ@QV=P”UeÕEYõ@QV=P”UeÕEYõ@QV=P”UeÕEYõ@QV=P”UeÕEYõ@QV=P”UeÕEYõ@QV=P”UeÕEYõ@QV=P”UeÕEYõ@QV=P”UeÕEYõ@QV=P”UeÕEYõ@QV=P”UeÕEYõ@QV=P”UeÕEYõ@QV=P”UeÕE™ö\Q¦=W”iÏeÚsE™ö\Q¦=W”iÏeÚsE™ö\Q¦=W”iÏeÚsE™ö\Q¦=W”iÏeÚsE™ö\Q¦=W”iÏeÚsE™ö\Q¦=W”iÏeÚsE™ö\Q¦=W”iÏeÚsE™ö\Q¦=W”iÏeÚsE™ö\Q¦=W”iÏeÚsE™ö\Q¦=W”iÏeÚsE™ö\Q¦=W”iÏeÚsE™ö\Q¦=W”iÏeÚsE™ö\Q¦=W”iÏeÚsE™ö\Q¦=W”iÏeÚsE™ö\Q¦=W”iÏeÚsE˜ö|!øýS\dÍ}S-‹µ¸ÿ±T?k¼~„Û®Y™ÃgøQ'~ï‹nüèšÉ:o™ZIÁ&Œ3eRvzØƒ~°IeS
us¯Ÿzí7ï¯íƒNzøó‹¼é*¦¾™ýùEËø9[
øuøÍR›:„‡žè¶Øÿ7ÛîE[ð?¿ÐŸá—¬ã«oêüù…þ?…qÈ¢©o± æ+ÁÏe_½Ësƒð‰Õž/‹ìßžüßïß=ùF8QÀó4w3!Xè2¤Â$N…—F<Ê<7.OYxÓÜsí$‰òÈK™oó€»~1v¢{„Ÿë6ß|©DÃ•–j,|?‹Õ™¥VÂzÃÞ‹_­¬cE½„o›RþùÅøÒ€­Ã»¢Uðôq:ð‰ê;±¥'êuÑ5uË<Ÿ5/ûLèæcƒ&·Ê¢Òb
Hm,Y6­˜_i2ãEÇKhTÔºQÇ²¢˜o»Þ£•5J‰L“1¹ÙÌP¯z¾²r&•è¬‹B­Ì@RZ8ìJTM·1Íyz3)`IYiÕâÂâÌHIvÕîíÊ²h¥ð`Çá¿²Õ½i:³¼(KÊ8t$=¶?³ÞÃ°Ç½ØÃ'–Â¹ü [ÁVÎÆÞÎþübúq9†§ºo^Áœþíõm_”™ÜHë•êë´_ÊçðE#Ïšnù¿–êëíîïôã}W~³RªýêÅÕ/±Ñ‹aß¿øóü©¢Œ6©$a'¶<Å®†¢ €Ì¾–Å?·o_{AdÃþ/j©N
7ÁŽ‡zÂÂ0NïŸË†3|=kÕ‰üßž¼5„ä‹ƒó¸ÖÂ©3s Ïð2ãqß²–²€™â›·}
¿Zß5+jÃ)Æ¯v×¢ÎšqRM£á£]›e×ôí7/[Xe3bùBÓ–+ØæÓd÷ˆž²U#Õ7‡úÛ;«Òæòl·JæÉ]ËÝÓ²é;.à·-oº:²ã8†Ä®ùŽÄJ°Lt‹ŽÕ°Ó`A:õoO‚ÐŽ¥Ö¸2‘çîäÅÇââ¹¯—äLªÍ½#
MYT=q¢Q›-JB”°Œxï´þ!aËGoþÅ‘KÍá×AyhHžËR×ñ<'²Ã<Ï"ßá‘‡y‡^‰Ø‹|ÛœöÃO;H\?äÙ5Ðå¥Ðb ð)(àg²dJC‚¶W|Q(i]°| Ðž¹ÅÔiÒzÆêD÷Ü‚yÛu2·.º€D¨_!ÿ\ Hœ•€
Ê3ëGe[àáÇ8.Û!q`3èX?’±¹ ¤€pB\²ª-õŒÃS@­êKU¤% ‰üÞÃâ"´\˜´z•/b`â¼A¬ò¯<Çwâø (QÅÉPâÈ†6(èíÿHáõÛ7z ÁóBÏ½=@pÜÀ^p™ŸÁ÷.Æ5ñ¢téˆ#k¹¤#¯Úqà’Í9Ò¦šr¤M7ãHhÂa²+Æ»†„8p³EOE™nØ°I¸ÉÉˆÃz’Ñ¦:=HûœUd´‰ö7™lJ6CAÚt©MxU\ž’„xÝ´€›jEB¼-YQ/±OØƒ‘q„6@Ø9T„€f§é¡)7RÐlRåÐÉ½aÖi˜¥&NÄs6“Œ8pbº‘qFF´Äñ&§Û+» £Ý×ç5ñÖ‘l4TÉl´cÞ·”ü!­´¿ú—7ÓöU¡Du*sâD~ìa”ç±ï¤w8c<w„ˆ|†NÀrÏ4vc™ãùsž'q%y’^c¨}ÕÀl7¥U²Mƒ†ÏÜÂw,þ)æ¾°è Ï­=+åõÚ÷«BnÝ£[+k/Egñ¡—fB[VwÝá_jÕ	1ƒ-Sp«,¤Úw@Ë¯ö2Î¸Šw}£qv&ûf^`§i£V»Çtë*»Ð¤Ÿm=ÅÖ…(ËÅLª®×îïº[mãee‰,:+ïkìˆ•…Ú<7.ç¢ž±,+´msûºÐŽ«ÑÕÎ›ªí•¸òÆ%KE)ç3ío¬§¼ljñT7’
>d]v0sMªø&µ¸˜ígÜâ¼ÑÁ»ó	Ãm.êd\N&—cÏ¾â…öÝ(´Ý=ã²ï&v2Ý¸líg˜—ß¼}ûæÑ¼|è†ßwLvºÿyXgî@œŠ.\ ÷áîÿcB†O¼ü—šWŸ3¸~ê°€3áçiGyèg‚	yèpîº^Ç¶™pÃ ‰gÇN(æÄ‰†×:w1¶ª@‘“ƒ¸4ÞÐ}¡TÔ&°ì&¬ >†
(?ðø>Wÿž6ÙfŒß²ž1EVITîžƒì”Zz£K•Y@€.­q
?¼(|Œ«v ©CåV 44¬–Æ¬Þ»Žñ’b8Æ:ê¥%u&ò¢3¦_Ÿõj¤w³0
iììÏÈ™õCÓÍñWÖ‡ŸÅÅ÷æëÿ†-¦þÇºèXk& šÃ–ßÚÒã´!ïq8i'dÍðJVW,Wèô6.l«XÖM‡¿—ÀÈñ'†¶©Ž%þ!aæÅŠRóìÉQj±ç¸ö>p@,ÅûøÀ	]'q'ã=Íðà~áÜÁû<¬:Ð´‰ÈÒaŠQlü“!ƒgª+ªé¿y¦ïˆ#nhv•â½@Ž'õ&Äqý¤Þühe~"ìaÌs"žæ‰17g‘ÃRægv¥YÈž1gÿc;Ð6ñ'™Çyî<Ê¯Ãï
¡–öýû·ï,£.X'„2qY€o-AÜ®
.wîSyoôêl]´òë™T@ØäåÆ€tc½EŸŠŽrC‡´žÁ_-pÂ‚÷%ëžk‰oPÐL70Ññã¢Òª›–1®™h;¼_ IÁÊÙ8îh©šNÌdƒ…A˜6[‰Ýß¾JÚ×Ì<8tcº€oV3¬”ÅÖ€ XZj°råæ–(0¨ÎZLGåm¿Ÿdó‡¦š¦_®Œµ¢oÛ¦C•‹ÎÌŠ@+ðBÎdËƒíGîaX›ï  Ž÷-NäÙ“ãßáè=†¿Óà‹Ø¶ïþ+B Nã@Ô{ˆ‚&^¹ÿñîÎÒiÊ‹´¨_È:¹Èquj¾¸…£•ªi³SÁŒ<ÌìÐ³#»<7tsB„y&"7aº"r\7Ëm/Ê³8Âï1å<õXpÌxÕÔ0:¥ÁÚèEÍAAï1<){j½ýîš¨J¿FægDÝ‘ëÃ¡ÔgÖ[Ñ•–ùÒ„ÅsÓ^6Óý¡ÃNY=ûD¿úÛgÌÂîK`K#ô¬
 ‘ü^Í´†UA3‰ÚÇ?ÐÍSô’ dÀ·€æÏÍí6Ø†¾^/gš¦ì¥ñB®M#VBøóÝ˜uQÁ(ób3|ÓŒµÊNº¾6.xöï¨s³þü¥..¬,ÎáÑT¢’g³@eçÆ‡„¸fo²õ€ð•W=¼™CÜ¡Íw?˜p}	KÏï?8nÃð,pÐàÔvÆ¡ó,ÝÌ2‘3˜çÜÀlà-?DC¬W ŠƒY]£¶±þ­†Y ›ªI5Zh\ÒOY+˜õ65 Š³²ÀX±~½ñíÐ25¦—Ì-à { ÅYÔ¢±ÑðFOÌm…Y^nž Êì¥µ,Ö£ežìwW0`fÌp8­6WÁv˜8Rï¥‡dr§"8ßµýC×‘»‰¿‡ß¼$r&;Ž†Iþ÷í»ïÛ!p]çö†¡íZ@!³Æ ã‰`Å¸÷'ñØO»zÙièÕ‚´¼a¸øõ³€c|õÕ· ¬ðÃ›,I{Íß‹ª=Úôµ€IP_}õ¦©—G,T§6=}j?LÀ‚·Ýwƒ—È&aÖ¿Ù.ë5êÏ?Õ¤û¸Íg Ôß[Ö#<UðÏ½$·EìÎR?ñ9ì(OYì‡Â‹‚0‰™“Þ¯dÜf™›ä—r´„…‰°¯C©&(ö+Eò>³Ì‹ŠòAì£ÙTÅ.`aÀˆ*Ìanl^4ˆ‘Ð
e¥ 2Ï1Ädf\gœ÷íÆÚAÌ
ƒPÈì ñ4·)[›™&Á˜ÄÆ¥ÙÚÆŒ›¡ò^
‡ùìÃØpŠšÆó[/•¥ñã‡ñkq‰ÀÆ¼ÂJÌtš†|£Ýa–ž­9MŸºGÅ–gÖK [cgÂ„Øì 4´X,:±d]¦Q aƒÿ ÅF»óºpjztß-3ß¤ê„‚aÃç…¹ Š&EŒvg@ÍÄã80 j&sËto‘äãÕÖBVôJ°d­YWµÁuX½4Ä¶ïÚÆ¤¼ý2äš›^ãšDƒèlhã;0dõŸ@»éÑbÙkøl-ôûoW_¦-ÏÏô§I×wÑu
ÃlÏÛO…á…žOÅ’Ãô|¦—ÑrÎ¼G@y5)¹‹§qXWã@œŠ.™ñŽfÜ‡'àtîFÖul3ÁÓxè†~ÐïS“úÅÍ²Yœ.ñ–0sTD‘f®í^àå€§È»ð ¨üK“ ÷¸ŸEa	H?×&Þz™eÛœXÛH g ^S˜ä‘ð÷s•à%6ØÜ`ý33¤-.õ^Jœúq`¿gÖ/Úš8þýTÎ>|¿¿[-F È¦ÛbŒÁËˆÎ†0k3V´i"\$˜	K~@9˜,a!ðP G®Ûû9òcÛž*Í,~¾<våñßÅ3gÖƒÄ9'WÍEÞÁŸ4ÂÞŒœˆ,™¨'õÁÑ:¡ W©X"S ëyS6Ý”†çb³få”–—SižÒiø‰EúâÀA,çUÀƒÐóÈf^Ä¼„GIÄY’d‘íÅYl»aˆÐŽp];qcŠP~EA‡Áu¨aî ön½L äAÏ­¼k*­hÿüþ*Ç¿	~ƒÃðzJCH‚	ÎZíšƒ/º¾®µYô÷|V(ëÚÈSWM†Æìù™õý?ZA«Tˆzk÷ØL´’¬†¢^µØ:Û2L¢Õ´Ú¤ ÝêöóÁÞ1+*í{TÐ¼Gäôµ	Î6Åù˜i´k–ÀŒ«Ñ†QS Òg¼ï:¤ª³šRuEÚk‘ø|pâYB~¼^¥ïa= ,OÆ2®ù‡Ì&ñ¾Ÿ*ðìÐŸŒeÔg%ÏúkÝ«Õ#Š¹š^3º‹›Šâª2åEeªkÊØKÊ'¿¢Œ Iw"¹êclMì9~Eiš‚¾mÇ‰ŸFq–FI–¤ËRÇmàžo³ }á¦Ìv\Ä1».¶æüc°é0·¼ZÄÐüÎð’ÌíFÏ\Ü©0?õƒ±Ë–½ØŠƒøÚ:òÅëÈÖ _å¨pÏ:±,tÆjL9ðî!¸X÷tñ±“óãc3Í•L0ÀÄÞÚ®Ži¨Ñí‚‰¾wñ½ÃëmÉ¯˜šé´Ià0lxèS¿ÇSiÁ› C‹ë1ýž°c‡‡ÁºN8zÛ›nŽÍã- {•¢~2FÛÜÊ ÿ¡QÕ‡U¦¢K)¦	Æ}¸óÿ°âúêËy‘mXü‰Dv–Ï…sJIÂü Ìîy^àäv$»©“‚ gŒA›Ôv¼4‚ÿ;Ìu='Œ˜{]øì{x©
®|¼s ù™ØY-Šn–ã[¸wo†Yã‡€9PEz;‘6[
†r»í
 ]” Þ6(ô!mñ”JS6b knóJGdLcPÝk”ÑZ|c¸Ä(º1:{(Œ#|tyÏF´`í]RÖÏ-E-º‚›rC`”(ª¼\•€:ØW{4P„AÀëÈ•F4:2Wa—oåÌú¹QÂDVè¨ÏFÅÊÑz ¯¶7èK0è‚t:Æw¡%LFë“Pj/Ã	ö&…€ÖÌ4VÌ¦Ö¡˜=[÷«Ðf ïãD˜‰=‡–bW5ãk˜PŒƒ^	Œ«8¼.¥(pš4ÚÚèr"ˆÃt4ÊêàÃÁ3þä{Ín;W<j7Ø^õõL‡4æŒ<†ÜÈAr'Ç° g™ÈïÿÒHœ7âTtépÉ¸×éÜ;œü`½Ÿš¤/Ž¯°Ã‰Àg~f,Nc[ÄÂ@Å‚+j0‡{±ï¥³S@Tqž$Ì‰}ÎƒÜ·3–yv$,¾\ýR˜n°U­¶¥$LÔda3¢®_Åèê‡î÷ºVÙ°ÌXA†»#õLSÇàƒ7=ÓÅ1>Ðå¢Ùö!¿²ëû_œù¾*–õ±¸½l­IŽ±(Ôuç­à¦Ô´Ë´¶( cYèJ80BãBxïºèTjúô8Ü±«ƒô3:Äs$ÇÎôÇwýy¸)½>5Nš"gÂ 9í²1Ž‘e¹iW;|ˆóÈô+|=e`4g¦¢Øng¢¿ßÐ`*Æ…xvå&ù€„4À›í{Ož®ËPÉMš³[ssçÇÌð¸Ud³~‚þ»Úú[+ê÷°ÕÍä? 5ùŠ·q|%yLä9Þ¾ëÅ‰ÂØ²·<"¬ûw¿Äwp¿<½ËAƒ¯z§¬²ÕYžÑîÈ(KIHúw2ÚJ‘‘^SÑvévŸK·û\²ÝçÒí>—p÷¹t»Ï¥Ú}F‘%ÓÎF¼'”ÿöìÞüË+[¥èNÔ•qŽq]nÌÝ$²ÓÀI“Ä¾`q,"4^çA"ºžêW"r?r\ÐÐ¼8á~t]!Ã_ ¿üéõ=¾Ú x R€y(¯×®Þîù…êÛAïäïdš§¼oIÏ´Ð¹v™4·7±ä™õ1½¶Ø–ú2[»*Ê½úÒ×±6*òFÓ².˜IGÍZe®ö	Ü!cž©½þ0¯&ú´u6IP8Æ‚ŠZeÙµ+Xm´¼iHºV³(VØ«>±þ_ÞÔ¼ƒµ ,ÿÿ_¶ÐžÖ’jËsSÏtÒS¹ŸG˜6Í¹õôÕ@Èúi7Ê§F­Aøl·"øÌ¶µ~mëCØÀ.È-
óufó‡£ÆLÎsà†Aà]‰†;Ù/Àè†¡7=G6®Ì£ïûž3`Þ6CUôÕ•A…°j4_¤LB…Ó¿M’á÷?‚½­þÇWßüËƒƒ®9U’(æ8QÄ„Ÿ² N=Û‰ˆ|Û¼Ôñ¸c»^’æ^ì³ Ï"+j8¡m®ÏOí4¼Rdm×XkVöƒÁ°f&DÙ2QÍ|3\Ž¿áJþ«m¨.-TÇôú]CeHèž™ÄÒ	
eœ8€;@¤6µPHl|T‡[c¦"m¬DxÐ‰lvÁ6gÖßAzã=ó³åÙÜúðòý»ÿv¢³ð8,…2‰t~i}Ùþ©ÍCÛjÞÍž9s7Ö#yþt—&	$Ð|µMËduºîó(¨ÿô[ü/²é¾…¯ÓUvÀa7Z$ªEQŸY?ô6º:æÞ;Öß É.˜,°·}[çÖ˜š·ÛÏ0…w£³9Á2<$¦7=z<ŽÝÃ$G®Ÿ¸Ž³/ûLo6YöÃü?Šþ{ýÁ’_ÃBIó®¡ Ig¸÷ñîvúéÜµy»Ðõ¦\!ƒ¶²fí÷î^ÏSà	¹9U9®œû<#G„>c)OC?‹=OÄ©XdGaà†óD¥I„ŸÇI&œ<Kâ f¶Ë®+ÇõˆkíšÕ%«ö’\£ G]þæx9IÃ¦­ ù¸Å0KiSne¯¦µÊÒY§gc¿ó=pÑä9ªúåŽâ«¦ª
©g31f¢äM!«]U-‰Q\˜ûgÅZÌA]ãú–sK–{›ƒn^Â›^•E-ž›tÛ8<L³õS²1vpÓÛ1?úVõÍ¡w±Àb[ Výä•ñh0t˜ÃæáýÉùh|?ñ®D»^ £ËvWÆ|/ˆ'§¦6'ç3äþ÷ãÙ{ý{¢ß%ã.ïf2Ï*Ö8mŠ›õ¹Ø¤¥cŸµyJFÎ2	í†pÜá¸;Âqwtã®÷IE¸O*Â}Rî“ŠpŸTTûdIÈO–„g~Ix.—„ggI¸¿—t{p„/Dd)õÚûõž;]{µiW¢6*&‚q ~/ŠëBéKêSÚLêö6Û¦¿Œn>a¤{í®Ð½'}üê&øâ*ù¥BÕEžH'O‚0b×~ÂC/Š½,°³$³³Ùv˜ÅÜNš'N8 ½G~sž‡"çQ*8´¿îþ¹¾¢}XŸYß ò©¥UµFk“7˜÷·ñ Ãsxí[_#/Mqjø³è§Æäµ
VB×$€_Ñ=Ç+éÏ<^+ËæBkóÛ  ãgÚ§n¢{1ß--^Ì\»UHï'»=ßóó°zð¿ÍÛÍxzª”a{>¼ï9[Ê]îy£§'êŒÆ4e™¶gìŒ—’‚<žN*Ú†	PQGvBEÛp2*êúÓd
ÊŽãnhHGd¤]›ŒtLF9¡ ¼åñTtÉÔšqÊ½ÞV¼”œ•â»´>5O_Cç¬æ›Ó%„H8C—,HS;È£Œ§¹È‚<Îs’ÔõXð,vàû"di’cÈmâÅ®ók04V`T±\@>¦4jtDÇ’UC•ëHáŠ-Œ^_%÷•õÞ&k.tˆY J˜ß›5Ã[¨óÙ‡¿¿™¾V¢ló¾²1ìtqpƒçÇ˜—â² bX5ÈV_žYÿ·éMŠ~`:‡G†wŸŽŸåe/W¥È‡èý§.Ø>· ù·u-±„Ó£éÉ˜œàjå­ tÝý¢ì^ÛÑÔ¢ìãxÌÏ|ÿÁ)á]’ŒB 2§¢K%±‰Æ}xþˆ¡ªŸ|ù“ˆáUvªÛ,Œç13/ÈS‚êà‡NÈY‡"<ÆN”r?Ï˜ÂÚ‰5Û¹Çüœ9¾ø‘ïÜdÊ’˜œ‡70óM9±´ãD^Ó(ü}¼|âÞ6Û¢Øv³»J?7@ñ‚ô-U×sèb²éÆQ–CHJa.ã?Ã¯†ŠEÐVY¦€ÕÅJŒ·e.š¾ÌƒQ-,™´:]ö©CUÔ¦Ôõš€êªZîOÎƒè{®ÞñÃ0rö¯´ûaLŽ·ý£‰ì~Ån”Ü%0äRuNÝ9½c\kBâæœ‘»U©è’â†û÷áñýÃâ†«/Ü ¼õD¸!uyÛvæF¾HbÀ<ó\?Ž"7a"aQ(27Žüš%6wynsÛqœÌ8gÜŽ®+mp%°~SUa¹€kª9ôQíýš'Ç»šóíÕPâ9ôùTZcÛý¢LrøTã…?ÀoÏMRÂNðfY˜¸Gç(lL‚œ&Åºúò©À·³3ë]3·pö]²T”CaÅR˜´>\¤˜»¹…L®Æt›wÎì)4þ
àÌÓ¯óêG·£Óßé¦OuŸ‡A‚éYu<ÏŽ!ˆÄígÕ	m'œ:ž Ï€ ¯ß¾ùÓ#¹ªù{w¸–2.âTtI%øýûp÷ŸÎVÆÕf»æÕXÿÉ‰:‰´_wé©ÊJû¶à.Ë<ßÏEê¸ükó,Ïü(÷sxÂ’Ì‡‡žð¢$ð#—;yêºn|]Î‹w…¶voxéjý0ØÉ-Ì¡v‡Ï÷:à«¯v_lK‚ŽêÝÀ¢|}PÇx×x(Í¹ò‚… !`}7´Àƒ)Ú6ú®§¾'bŠH÷R5È­ÝëÌö‰}mI¶6¡8˜À«']éì?0Ãdã,RèÁKìÜM&¾6BÔz2 Š'½Zº8ñ9¨ÕP)I“Ü1œþÙ&‚Éy* ub	†ƒk+	H¡ýœÆA{ÞÔ<ãa{´MÜ+0Ã»\ZƒÆx€«LSâÙ*e4„÷
ÿQ ˜*º¤@éþÇ}ÈN”&WÜí¹›ÛM¯2Ùê,³£aðAc´«kôÅ1È/®K8¨S&ûAœs‘%n”¤~&ÌKÄdNj‡"½4a<N²ˆGNî¦,u=‡…>óS,sÄoöæ`ŒýW4¾“½þ÷p¹À®¬5ü¡‹P²™1¤0‰Cj	;´G¨Ãd&'™4c]¯‹H€À\®ÌógÖ_š¼?¬Í/˜Ó•]4V‰e6ŒÄì,R`)mgÁôË9¦0†® b0àR©]M{—‚±ñƒ7šºÜ ñ¦—ú"ôPcC°j(­É¶AÖ:¿Èì`nÆí×‰ªY›ÉÐùÞXç†qbß›¦Ÿ]7$=¢½†ÚÉµßÑ‹Ã Ì{³ó€PáäËÌnèbÂAÐI<÷ ƒ	À“Éæ¢½©yD†÷Éä.ÈpoAhÐÐ^”´ÉPÝø?>HGÐup
è±jšóÁÇ÷½8ý4OCÆ¹—DIžIS;gq.ü«Y^ÇcçøÐ*|ÇBØüº%72“EÝöÊÈ°[FˆŒIB4PXi‚Ï^ªoÅ²¨çÖKõ}Í­³³³ç3íiÒBR›YÒõA÷:ÇŸ:Mˆqþüˆþ˜ÿ M¿Gá*Ïf¯5ø(òÚ‰S––ìùj øséGZOÑë$°èti	<Éæ4V0‰Þ*1š~©Œ%¾FÌ23Oì¾MÁ‚÷É0tuèv¤±X`÷³T@;a€
¦Fc9–Õ¾¥1Ô^
Öµ*i0ýZW'î¡]>òíý˜7±Ãév¡á”=Vb¸ÛÛwC zA`»žÓˆÆJƒ£‰dÆ^*À÷QœÌØœâÿ í…„x»Ì”l‰SÑ¥zã>dz'4õ]·Û±G,[ëáŽô$ãÖ2?›‡nÛúÔÜ0¯_€{C›:¬Vª”l¡Ë'Ž½<‹cîgqÂ³,w³4Cá;Aîîû>÷ã$a¹ÍbÎ9c^EiÂÒën½Ì~ë%&£_±u1d¬ ”4yó§áÍt¬\6˜¡·£õáß5¤Òó†qAÚÄÏÌGj·}jß N­S/:eÊÌ%ø„­›"›U…\HX¼ÁZõ¥*ÚRìF}fýRÃ‚«¾fJ”&Eý08mŸÒeÁðfÉês3æ]ÛÒ:H€»«bcjJ]‡eŠÀvMZŠê¡ÇÉ—\ÛÃ+paÛFûÉð\'‰üéö#sjÑ#ý(¹KÈÑ° DPÂ§¢K%HÆ}xN%n“–çªÄ¿Qþ‰	øò¶¢K—7å©®ý:±ç‹À³YâòÀ	Ü8Œ#ù¹ËXºD$Â}Ï³Ee)Ða¹æÜ³Aò_#¼(.-X$†Õ¢éMIPxÍ¾ªu€Œ•†5inÞšëÎwE²1Q¾ò¢“JBM±sQcµöj0•Àw³¡«"7O®˜)Ö©ïV <Iòµu.D»7¾™¹ÆkÒÝçÅFù¿ÑC$a«é d€„W†K1Þ{dfy@26ž,c}Ûqï¸®`æžŒ…‚ÉzÍÞ~tÏÜ¯xu;‰W½DÒUÓ&"K'[)F}°ñÿ˜^˜ßýBµdj]°úTUéBøŸ°AÝ]8‰ã,¶];([…“y90Z–<q
b6fœÛ~

2óß¡w\ý±Âý +4ãËY ]—=NÆp…åÔ¯Bë¼Ó3Mžë¿†.†;Œzöu]`ÀnÛ”›eÙHY°9vÙê|[}Éº1”‚u‚”Æäy³!	Þ“/Ü:¾çØñ•Ò‰kï‡/8±cO¿í²Ý¡
èýKÈø.¥XvKB%$òt”	E%ÍØ¯ž…Zµ™fGSìÔSmÓ¢ÜÜ¶ÐF½I-ë>ÒêË$c¹0žà)MwìzJs¹®8‹SÚ^b<j½|è&ûOî¯/JPI<qÈöœˆ»Ïs……nèò †‹é»2 4´9èöN.œ4ó4Ý<‰³,°oÆ#™1°çŒW„ñMµé[_¼½AÉÈ¡8Ü>}GÇJ^¡fB9˜4mF©0UžY?bâ¬çIL,–
:´Ôêúrü`6„ZmÉ ë¦5ï|‰6Úûp±ÕòÑD? ¦¡²ìESšp’ÃÊtXâfgÇv1Ñ Rä…è†|Â[2Ã¶³0æs¼½%^jÖ†}´kŒÎ6ÃEh§˜}Ð]ÀrîþÛÌÙÿü÷_þçáÀ°pú¥cßŽ¢C…ãlÞ¯ƒçø¡3&»:Ãpví÷‹¾¼0¾úÒgx!e¢dp‹`Ä{Ûýi•øèÍ¿¸ø¯”®uz"§v˜‡ÂeiÆXÌ£<åahç"c^d~Ä²ÐÎ„pc–G™8)÷b?‚9Ël€× €ï
	ÂÅø¯u)\ã›6nwý¾B.öš)¼mìè6ù‡6ég7t<;Ò±õ¬é2ôÿÏµ'öx/°`ÝlüÅj¸Â)´„ý$~(Ñã	VÈi?z)z,gL%_c3-p‡,&Ù¨Î<ö}½D.o=Ã+À³o»Bá_ˆH^V¢+PÀ÷:y>·~ÀT%Ðr{ÚúV”K´Í ywQÈ]bThþZÀ;ÖsëG|¿¼Å0ƒeWTþ»–ÕÐ×lWD`?Tß°ØÝp¹ dÑtÅ'«ÜìZ}¡Ñg„* >VM÷TZSBKø Ìž	°¨›\2Ðà‘Í¤ÀÛÛúð€pÈô;Î€9¼Ãä'±ã»É~,kì$áôÛ,sx4Ý;IÛ¿á‹_þ*Ì!=D}ÿ¡™ÐÁ;âØÀJ¨è§†mQ‘'ž¶g…¤£|›–zJE~©¥-u²ÁFôQ‘¯i'§&žVãA¶ï¥Däë¾ä QX>oA@4)(F!O£åÄ©è’éº4ã>DU§s+°J.Åý{r@Ý“¨NN-qJÝüSËôÅÕóšoøŠµ'ÄŽ#|‘ŽÚ·ÍÝœæÍÜÈMìÈŽr'Šàw!RøŽ¥^ÈüØ<Œ\/‰¼Ä¿.¥— Œ‰Œ-;ÃlØ-jÆ©°oÐÄ¿g zš|Ùºæ…­ÕÙP6ƒYReç0ÓÕVK?›ýMSÐz#ÞfÄÇõ³›mºLfR€F¡tewÐ‹A1Ç;ÍŒwH°,+™«C—ŸPUáEÑ/ËÍì¼F“=|ö&#yež}@ºæäÌ	˜ÇõJ9<Ç‰Ü :È´éDa˜LŽËöú£¶yïÚfäß)8oXd0§¢K†hÆ}x~©S
æOÍÒÌM­Ø…@+ëÉLç"½Ðö}žù^ }ÝÄ<—EðOÀƒœyg±ã	'‰sÛ±+b/¾%üÚ y¬×Šù*˜ñs_ˆtãÓÉ7~c]ÙOX¡çBJsÕKX%ëà+Ð•R¡ÝÒ{´gšöÎ”›nçû˜’ rí¥92{h?-÷\·Ã,	sŒ²ïúÚÄÅÿ*ÐðßtÖ›^'vz87˜*pßsÜÃ«f‘xÁ¾q7ràäD»ü(qïß¾ëûw°ïâá{9¬ÉþR=Syuïºÿuý)Ø3_¸Ç‹†º¿³FÝ¿égŸ~›§÷oÙMÑYÅZRú$Ö¥ÃM,jNÙ…Ü (åBgú+ø|ý%ºk³¾ùR½]Š²g_ ?ÃˆWÏ=Eý•—g¤]˜¹¢îæêþ»ØçÂ„¤Éô1²Ñ„’N£•í@£Û£VØ=L²Ø^ŠiM?çRôMvŸºá5Ëu
õ0=]®½ÈÏí„…Âæ‘—{ç!K"?å©›2?u›9‘ïäAægÂƒ¶.vè/‚¯½(w¯Ñ_	t™Ö³,ó†·
—bV%˜I›Ûêhc­}Š¤žš`¨ZÍ¤®O -S[©´^0Çp§³T œœgÎqc;¼R€À	Ï‰¢„ÇÇ$g“4¸ô1ÕM²÷.ÑÂÃ‚ÐLâTt)4Á¸OÀé¦·qŽÆ©{ÏQvÙ×o²)÷®Ni¸ýÔjB2Ë…*/–§ÊLæxažE!Yž;6¦Åµý<ðsá†è-Kó(	lÁÜÏRî²4â±çGil{1ñëÊ$½_±ÂX?u@¯	uÖùGÞ¿ùûëë¥ôKÌRÅQþ‚"cíˆÍuØpYèèZ­?4hÄ5LUþÿì½iwäÆ•6ø¿GÞbu“,ì‹tÞžS–,©Ú%Yã*»Ý35£ ™‘@
Ùþïso€ÌäV`1ŸJöˆî–ÄÌ<¸±Ü%îr¬Â•”U÷H
ŠN{í4“k#MGbwÔÛ}/§¢§ÃÓg‡_»g$½VTÈó}š¾íªB¾Ef‡þLËó¹âà>9zh9Ñ'rt=ëØB4}& †ÃaS Ï÷oMÕÈ?'@Š8Ž&¤J%Æþ¾AÇJ(Y T9+ªJ4„(#6‚&#6Ž$ ƒeƒ$æh™À¡Ë…á¡¤Á.Ìù²¥òŒù»l°«ºh°k»d +¦g­àø]&pY&p U@œiIoÚ cN™m|,u 'Í¦˜8ÚÔ+ŒV­€!ô``%P‡‹†FQt¨(dw±qÁpf†RH=ºå`áøóø¨çbÐ'iÏçºªÑ¢È²î›¢E¼¢Í0`¯ÌÏ'9Ææ‹*Ô¸	»h;z¿Z÷í~!@þ|•L;™B\y««·%‚=Ðö0@ØƒFÉT8Ž&¹jÄF.”¢¶A#`mÐ‘„ˆY8tÁ@×r¹@Wt±@ÖÊ ½!h2@#(2@ÃèâA8Ž&4bc6ÏIàö*8,ª4@™êlÒ`}6¨ëCƒô!h°wñøB»_
7Ø›Õ{?Ù@¯ùðeYƒ¾ojÀW6ìò£^%4H«|4p7@ëHµ34Xu½Á*½Twl :XÔf¨^Ð`Åë*¥6Ó Eú>˜<(òëK4Šð8’*H’óÝIv¥ŠôÃÅEøJ˜ŸK,:vð t}Ÿ‰ƒF­˜IÉ'‘ asƒÊ8Àæ¶%Ê éZŽ[ðPÚ`µh1oI0uÀÄÁÐ¦Xˆó‡r=‚ +‘1‘8e@#¦oT2`ä ‡#6Ž$˜½Õ»&pUDAÒFVDQ$A)¹#6Ž$À§œoÐ‘„Áí  ]aH,i°”f0· ¨´äÐ0z€¨ýiR³}°†³:Ž0%’.‹ß¤
t¹€L•ta t’Bm¾EgÖÈ(b€øÒ˜=bãH‚Ù5Pü£
’(Hš H²•^‡ŒL$ûõÄ‹ ñ?jäJR;3çën6ö{Þdfxw’ÕîK<:‡ì-Ó4#‹ìÜ™9HBÚµL”Ž6ÈÃØNò<
Û
bËò-+Ëì(Ëb+ˆDîD±ä¶ãùYâ8©gy¦YäÛ¹eYArG:Ú×Ù¹¨Ò¡p—ÙÊ1ÃlQ™—:U,gŽ}Ûõáîü´ßä1N?”SÜÞ†sj¾é¶’ÍW†è»š¦¥HU³¾ÒEB‹ª“M.RÉ•Ér)º¾‘'M‘.Í×¯ßsKãÏkY½'¢)u»eS÷‹¥Ê]ûã·ïÞñ{èÞ›¾RuÒêjª2fè*c¦¬\@ôî²eféžÉ¦’¥Ü¥ª m$}•qî{•»—é~\3“ç²¬×+ZÁf'Åê	¥Ìæ¦Ì]ß½žßq\?ô¶³à;¡»m^Æ\Z ÏYð¯àÑYð?ø„"fÓ„l×!Ù³ˆ4õAŒÎŸÛÉV‘P§i¾À£Ê08
*EîÜ»GÑË\®KwV-‚â²ì.9%ÔB’Õ¬²´çë./k‘Íª[ XÞÞ+ˆ¶kúõ¼V€u6WÜ.Wm€Ú€Ê7þ!iV¯Ò—QðsàÁi;ô‚,°eæe~ž»i"\×ÂŽœÄq½\ŒíÚ¶Û¾´é‘ Ú"miû‘—ÝYw|«Q†º[R¾Ùò‰ˆ‡á"·Žoß*ÚVÄå¶ÅCÇ	w»ž‚ãÄAø"·L“²‘^s…Ãƒ	†4ÌËyRBa8QÿBá4qAM0›@,0îì#žåÀÛ·ˆ¶»CŸOIÊ"™ái[ŸG//)ºûX8=³šÝ¸éÊìè»ÿúó÷¯ß}ÿykÒ8S=ÎïÞ¾ùÃ×?;§Þõï‰µÞ˜ÀOc­|ÊÑÁü¯ú¶yEp¯ÖeGÂq\þö¶]ÞÕëòžçÔà|}_ƒ55Øêâ‘ì½ëÙÉ,'rey¶ïe–È(÷]O$’xYšØže§^˜ÿJì,ÊC'ÍRgVæ¾ôÜØ÷î`ï(ªl´1Õ&ËPE^¤æ íš	1¸³v^Å£‹%[°š¾jéy:ÃGÙK“–@k^Õ½™lwgÜÑÝ±2¯m,gÊ„×‰ÅBÙ¹rcÕ—]QÒ‡^”&MO·káê[Ùš?É¦4Îa®é/jô’;L‰û‘ÐvfÁ#	Šz2rJäÍ®üdÅ>½¶ä7Œ,ËÙ’SÜ0Ž‚è!r
-îç¢O{•UüÐŠ,«“³›08
i7Œ{wõÌnràªˆ7^þóëÎu·*ÚC]By‰æY–$Â"v*Ý<	7•I&m/‘Æ±…¡Lc™‰%EâxYFBfÂöìô®K(SŸª¬pÝUuGëªšó"^ˆ+Å›Ó¥ÂRÕéEZÙušNØí©qkÍã©â±‚à‡ÔÝ †Üñ×ôÉ˜0øÓª•å9—?.ª´ì3~bìŽåË§kÑˆ-›eûÂ<91:Õq#†÷{yl
9¼êW		›ˆ#S[–¸gú¤>LÒ#+q&·ÈŠV¬×R4æÅRV¦ ÿo=_D«Z´U¼|ÄP×Y“ITqH%2¬K¾þÊe#«T*dÓÅtÛÕÒú3×%ßÍMO¸;r†!Ê¶6—‚¯§iîdº¬Š_{©«`–$ •,©l½Çh¯ˆM•-=H}6\Ž²èÔžšïê•æÅÌûJ­„vœ¨qvÙÐBïÞ”b­_q»µ(‹îŠŸ¨üðÌ´>¦iR—šüÃZÉÌäJ­DuÅCV”LŠÿ=vMòY·n#ëV$¡Ž¤ºéèéNŠ~«ß£oêêEg&D_™õ©î(¯x(Ç4©SpÉmžS1ŽŒ¾¡aÉÌµ¦#Ž/Ç’/õtì¬Ÿéêœ'šûÑ³LmôËh¬ð«š¿PeÅË“uß¬y$âÓ‘gWùvI*t®É…¾ìÔu}7~€\¨ÏåçËÍýË†±ûp;ÖÑ8! ÙPƒ£pq²!dÜ»;à÷)ÞòòŸ]6<”É%óBR³<IœDZ‰“ËXéxŽ°ã4(Orédin¥yBøIä$v’;qlYn~‡TømqI|i]ÄÊDC¬{%»"½G ¤÷ºìèÔ$b\“7û#¦%–<rîÄÐ4,Ò?µ,ˆw3M&Ú²Ìvãñ]Ûvv½xØ‡'ÚvâqcË›íÃóÃÇA/hž(smï™Ìé¨ëdSaœ]Ö'"Ëˆ¾(t:}gfpù+Œ*ò\”0ìKˆ‹¡×6“´°³z…Bo+Œq±»¦XÔ(ð~Zƒ(X¶üï¶Ä—¸Ðþa"7Æ{@ìÎúÞ‡D ?°™–/c&`9±p,‘{ÂRËÂ$•ž+2Ï!¹/Ol;vmß÷dY¡pÝÀ·}éX^¥"ñÝøYüÝ×Ê(ôçöÛáV’eç¿þå¿ÌŸH®YQ›oï¿üüö§·¦
Mh¦`[)‹Ùï¾~u®¡¯KÙz–Ö+ZQ[0•)VÇš„|e	•t §íÆÄG Ô´ª]x6_¾ÎêDžš?²™¹[
¾ädsXUwæêÊÅŠå¥H»òÊh$˜Mq
µî»’cF³cM\¤¨HmP˜ºmýÔ3¸ë¢Rm7$¸ô2D¡bQ‘†3yQ^­—Ã‰Æ†¦hµôÈ&R¥¬œTc¶l;’§‹SóEýâ¥ùÆ\Ô25'²e½¦íËŽ-zm*”•Uøê2“¡¡”tBY¾xi\wÚ¦Íª”ÒÅšm+ÛÉ¢’lÌ… ‹„FKToó+~N÷Kôx]–ÔžH|AïA‚%ß=æõ¼‘šn†ÌŠŽÂ$¢-¤¦#^pÛLtb d;F{ÐzLÒÆ‰’Çñ.]®Š¬{±1ŠNa\"§C FÏ¶ÔÖ[Ä·ºÝr-~«GŠ­®¼ühðk¢ÿøæë¶ÊÛÖÈŠ–0“¾{RúalÍÕ=Ë
â`GAéHáCeRC'Ž,k¶‚X>_ïUCŒÜÀúóçºLŠ_"L)&b7)E^ù HœXºïÑNÛÿwiÿ½öÞŸ]ÞlèSv ‘ÓbßÉ"™ÊXx±°d(sÛó²$±³ÀƒÜdl;‘í¸ažf2ÊÜ8Šã<c!“Ì¹Ëü«ÞÉd)g)øÊµ‘%|(‘-•™4Rœ™"mê¶Uå3ðRzNßà³ì!«ó¢©+¾Qm¿4OLMË‘ï¯ûNÅ§ÖMFrM¼ú™„§KâuÏ÷ç|Kª†vLOë±ŽO«O­±Ý„E¯³”y—ˆfê…ïÑù‚œ…K“^O9P£¥ ¡íqšÄ¬ëj?@=P4šhwŠ~_×DêQK9­~õÑ(nvEWŽ"pk~!ºNÐTd_ð•·ÛåË¯t_­ÄÕÍ±ƒ
ÒÕÂ 1·VN~ŠŠ¯†©[)k¥zFNWÏ‚85¼?ˆ39L8õ­Ü®Ï¬/ªaBNHß,w©ð„$.{®Äå„–ë]‹œ¼ Ø6És<§ëÌ•¸4u>]èúº^_‘³$Ù¶*¯žÅ¯k·ÏNô)ž‰jR0Æ/A…Iˆ1o¯þß¥ÌqóÕ?·Ø¡ëž¤±u ÑÃÏc;vrOz2“a¦2÷’L’k‡n–Äad‹(^˜H‘Ø¹çÒg!<ßBÇò.D6´ýšÍæ‘2Ç|ýŸz©lSÊN£^[Ù î86´yrq~ñlÿy'Ší]ó€í;Ìì6×Ç¡eÍ½=Þäùy¿LÊ>…I-²$ú’‹¡k6ºAoÖ>"MÿÖÖBpÙ= ?ŽËn¥ÛKDÿçO õ&+k¶\_ˆÅ&žå¤©[~'®p¬Dd^êfY'q’ÜÂ³<vÌ³Ü$HË÷­Ð–ngñ]Jß–òR]ä°úÇ÷:,Žìæ{"ÉFù®›±°ª½?àV‡~AÄí•ê#;ì[Ùìtd¤}ÛÕ+Íø£ÃÿñÆÑZÝ˜ô]}ÂÇ½lÆõ•‘ˆRT)·’7P´«Ö$åViÕ,-p­¹äV°øÍì¡ÆZrIÃëÌ­÷˜dŒ­‘èûy)x<4¬\E^ˆª38Qvô’é’tìfAª¸“®ÔÇ,h¾a¶Du‘A#âG+ÉZ{küBïm~ ñ„û¿5Äÿ&ˆãªæ‡ÿŸŒ«ï_»>ýgU}AôM¸¡nwcª2ÑdÔˆ#X’hoBõnð]cèAñoÍ _¤½`/¼[s>]¹(TÑÈc=pŽLœºä­aµ=_Ò¸¼c¥¤¹:6e—ž¾<5_W<Ÿ$Ð1Ù†Lblˆè6/õ‚_¨PFR¯Vn):¹Õ=¿”QðýÓ½_sËá^pM¤8ºXJå/Ï•ßüíùA…nŠ²e;}idt pX%/$¡ýÕýßOß|{ôV¼ä(Ð'dÖ¸‘âNAÑ	¼h×¡Þ!ÜÚNæø®Ì½H×Ý³¤¸ßLa®õ	·Iãd@#8
eÔ {wõÎËGt‰\ÐRŸ“ô©È×Y>¯áy7fhûXË­dn÷7=“W“_æSõGºuB?»¹†Eèüê$J:nù6É¹GÂ¢e!ýÏÊ<ßÊ}+ÉI\L;Â
ìTD±Ê„„É$É9ã©“Ý%JN¯õñÔK·4}*¬6œíÓoEî®OìxñväZìºÎl>;Rä™Ñî•ÑzžópF»™Sy4ø1•?âä@ì"mt Fa’¥®Æ¶ûIDrÑNl7Ë£Ø%Û²3WØ‘ÒÈË“<Í|!­Ø³é¸ã»¥ÞZvlÛ¼äeY¹ä®ˆ¤Íˆ”5Ÿ:c½‡5;V×´[¦
rgª¤‘l,ê:é|äm¥‹êŠÔÓ¦,¶Â«Ò³ÍƒÎ©ïf¦Åªôd¾%&M°í8Œ}Ç@°‰ºWŽ„E9Dük…“ï©UzRîkîÎÐ7ÊJS;f¿^_W¿X7
ÖÌš‚çý…yÄš)«§é¯l¸:&µÒx16Üï¿ñ>½Ûv1¨«NÐMjâ9ÇLÃ£Ô/ç|-óm½žD(•ˆÇ=ù’ªÌêyC³Q^]#Ò½=õ2e00ˆîÅºWŽ‹¹Ú½©§Êf;_/ c2¼ì°©‡s6~ž¤/GãÍNFƒÕ[v¯X·¥J/¼3økî”ã‡¤Ú[N—ì,:z›N!}Ó›èôb8²ÆàR<Ô?þn[³}2Ë‹=7¸æ"`…AàîøØž?;½âHßçðô}3z—$7çá5­åºÄòdç+c™Ü†né#œv;
ü¢¨ ÐrÅ‡yÝæÅ²HÆó 	ŽIÄ¾­ìï;\xÚZB ×)ýÛu ËDa/×8ìu‹ÃFíJ-«T˜ÝÓ¥(qsT*fÌM/AÕ$] p©ßÇ‚Â…Y1´Þ•AcÑ|ûpó‡8L”Nóx4ÜšäxéÛæúqÕ¹nLï~àk2ßš¨C9`8n˜†–“8BÆÒËd âÐòcÇs£Hx*Žgça
XYù2ÜÀ±eŠÄw”VÏ†
2{Gé¬ÚØ£5k¥¦(}ŽQ‰Ôu­¿–Ž7PzoD}¡ûR¦ÒÚbL‚£T¿Ð–’/Æ“GÄÍ±låÍ{Óm™\ÏM~p@mD•¼0‡¢_C<eh0Ø&²L[À&xíšR*Ó—zœf’ÓüŸX6O¥¤½®¬Æ.¤²Z”Ê¼”iZêŸ‡å1øZ§QxlrncL¿°EJ™‘”-h¤Á%’€ä2gÌx"ïZ¦=o§N„ÎÎ²·½aÊP6‡Ôü¦^Ñzy¶g\÷%?Ùž(Žµ}fÀ$WÅ‡Øhi0þ›î„d…•®á`ÂqµCÝ`	/q</äb	Y&a’Û2H3ß•¡o§Òò­0JS¸Nê‹,Léz‰ŸÂÎcÏÊîF¾¦ã£¿ÆÜæ§Ä„™RG«C
“‚ï²¶s3ŒWHC"hekdUøØ N;¨ÅÇæPQý})§?µEu5|â¤ôM{¾PvÐáÒhg´“È²{§ÕòÄ$¸pTö²^³ìÁ²Pr5¼Â ³pT§:Æ9IÝrŠŒ‚][;“ùvKŒ{QtË>9¥§^©›÷ÕöBáä&EY‰dgX¾‡SÞ: µ“f¿æ»¾§tUâ> ¯ãíÈ‰ÁÛ×$AìG³ÃS¶¨öì±_·CëjQmo<Ì}
y<öo£žŽ¨ýÛc§“pïÐ—0Óã¸DxÏ°yÐÛGÍ¾±õ<"Õ4€Õ™œÉ4›7˜³úD¼·,ßº2g[¼m1<ñ–ùùìêAËUàÎTV5ƒ ´\;s¤H¢HúNâ§¾Ì£,Î,Rò0rœ8
r×ñ³Ø±ü$qs?rÜÔ³%Éxwj®3¿X°Ô¢åSý³”˜?ýéc
Â7£oål_Sá6—´”º¡Ä œ®ïtðOª»lÓï=½²ioj¿Q—IÑ­ÄÚÔ¥døvY÷eÆ)ÇL1EyÅe<V’¤,U}!2qÅ!QE•¥@tyµf!;ClI|Ê	ŒÐR±Ö[rU¤…u5þíAAEOG‚çœãó
Éz¡míZ=ÖÑ¶y0pfgŸvÀ#ŠÈ4Ý,"ØŸY>ÎÃÞ¥¦azA%d1£Þ†FÝq>oýØ‡”„ýTñcÆtßÝòfáXQ9ö¶™ÛSáØI$x|Y×%—:Sõ7bxL/Ab'nûžgå`‘»Ìk¬Àr½DÂs3ú¿ÈÏ…HüHÆiùŽ•ø‰ãwˆœjø‹?Ð‚1]ÿ]@•‰±¹½¯þÜàl¼I\Ìâ…hù
³^ŸðljGx©s¶q%R¼hUŽUð{Sp>\Î>ÇÜ¥§%ò.]Öu™Ôõ‡5'mWt}§¤5Æ€bþ(/nyàåW„óµMD×Þóôÿ%ÖùÔN=ôc±JúÖü¡®8çð-O&úÉ¯‰“²Ù~æ/õJTæu|ûƒC—ïIVØéêû«ßòÄD¨ï‡e'ÔSS¤Ã»¡.Ü}ê6ê9žæ?ihŒãÇ¯—‚¤0"Ü[ó™´øÞR¤Æ€š`ãsîw$ÇÑ\¾UÜóôësA«ë;½¤guÀk™®ï~xLbüt‚ÃißÍ5ÓžÅ×ÊÐD¾ìÖ¡‰étˆæÞ§Ñs²á}Š{¡åùŸpù5ýòü4Ïön7Mb[=$A;
9ü…Á¨w ä7…l
Ø°),`Søn
Má/°)ü6…¿À¦°ÁMa›Â6…l
Ð®–ç	ø|ÿ—~ŒáhAÐ A°1°!	]À(Ý ÆÜ Œ#sƒ£2l=7¨õÜ ×sZÏõªiAõªE!w6yâVk·bÜ³èhØ 1Ò×ˆv”ÂFMÐ°AãhÍØ¨ac­†R·1,@##	["¸ÝÛŒ)ð¸NqçuŠ<°Sà‰÷cŠÛ)rG¦À-YÃF]Ã†Ü’5nKÖÈ-Y·d”¢jœU#å¨(HÕ@IªFŠR5ðì®qgw<»käÙ6lÐÀõ× Û"ãâXdãA68þØàØcãŽ968ÞØàXcäŒ(‹þfÑ×ÈH‚À–n7Â6#ÐÈÐàŒÒÈÐ ÐÈÐàŒÒÈÐ ÌÈÐ ŒÐÈÐàŒÒÈÐ ÐÈÐàŒÒÈÐ ÐÈÐ ÐÈÐàŒÒÈÐ ÎÈÐÀŒpýaŒ0‰®E!3, È,ã¢|$z˜Dô‘±AÃŽÄé:O@Ð)#/ô0×ŽèÚ1b£†‘z kGsíèa®=ÐµcÄeÂ±qÃÆ‘eÂè~#6nØ@z×w\ßn}@6Yàødä8(¯ïD”AjÄÆ·áQ)…”‹k¤`Œ²¤Ø0zec”%­ºëôHwè®3bÃè<Qp"Ê'£‡ùdô@ŸŒ4ìHœØ–:coh€¬å©ÒÃ<Uz §Êˆ6Œ+À<Uzœ§JóTéž*#6hØ@›	Êí£Gº}Là¨7Îf‚sû˜ÀAÚLœÍ„¡qô.€ëhìipÆ†ÒÈâV*ÆF¸1qa<àA´Ý¡œÉz¤3ÙŽ8XýÚ¤mæe7bÃæÈ!€¶A˜—]ô²ë^v#6ŒÞÈÃ!¦,³{ÆÝÉ`ûÉØO¤œË#2ŠÓoMs¸R†A–®ç‘ã¤™ðdn…®g‰Ü©t­ÜÏ£8c?²3ÏN#+	D…YfÙ±{GFñ?^v²jéývê«w¥ï¸”ðG‹¿_Js¤Í˜D™‹ª*"]m.…ªv˜6uÛžPÙÈ*-ª…‘ÖXeíÔ·¦’õ©ÜAYTgíXÒ8«ÓžÓ“ŸÜíØÛ¸ªÌ„¾9–4üÐ®eZˆR%?Ïd^¥UŒïŸûüæooøùT¶mÝ´_©'å*‘ª¼2òÍ™9•ZsÎëäÊ|M/–ˆÎü†ë5–¥lL]«M¥Ìþïÿ%Vë¯þûE«·ÔçÒfŒ.Š*«uÏ?}ó­ªÝÔ¥ªœB¯=W«¿Ðˆ4}é-;š›ý}AxÔ@}õýûÞNôPuŸ·&Ç˜ªMÒKª
-L,nÍ“ÈóßšÐöX—ž6WâLœ8¾ÎÕ3¹H¹×x¤oÆu°Û_&×jRj5‡†è»eÝÐPÏÎ‡¢ÙÇfÙ]¦«¬åžéñ´î‡ÌöªêäÓÉ!þ€R¡ã¹»IÄ}Ûñ-'ØJ"îÛ®Zs>ŽÄ}.ö¸ýòM"î:±·aR7yÔ||Ø+§mwµwa9ìsHqÃ%®’är8ä`à|PbÀÕ$—ô/:¨!ÕÆGlÔ¸»¾‘ðs¹yÙ6ƒ¯š38¬îèÑÄ—!ÇÕ ªAF¾*ª¢«SÍü Ãz€`R»†ÎjE¢ZÝÈòëÌ&U U˜wv›ÑÉØx/Qzòy…Â¾lpKp’©Q¸'¤°BÌ1˜qïêû£Ì=G¢Kä‚”
=ç÷¯Ñ_.ëúlNÓ¤èZÙÍi™ÖeÝÌiÈ,›5×9m²ëŠ®”¬zW‹9O,ë¤í““ÝƒþcÜxöØ‹œŽÉy•¸6«¥bæ4­ò:ëšyC­ºT”éœ¦gòê\”³Zžk‹=1kþ&{Å¼Æ´Ôæ"—²+»Ë•H›zVónöš[ÉÕ2/.gQŽVƒlS±–3?`é¯Ë†ŒûÛÆŸ9˜´vúŠ4Ê°9ç	½ñ˜QÍhÜ7sÑßzNî*Þ4ˆåIßåÑ¡Ìâž'ìÈóƒTÆž”¡ëDAåN*üˆPÝÔ÷B×åRßV”'¡ˆâÔr¬Lú¾Å±Üaÿž^KVÚGÜÉ¦jMy¹¦¹b³vQ™}ÿíIt·Uü‡:£gL†8—º±)«6­Ùr‘mÑš—£a÷m¯ìß•”™±¼­ë±Ã¡ˆ7[cI± Œº¤~Ìöªíäª5†õdÞ…ÁÛè„Ø %­36avÜºêjÁ¦Ý#5À±…®îÍç…~un¯ö-o¥k”<ý­YgÒüó{ûØ|ï¼¦½£¿þüÃÛcóíÓ_²K_¶a¢¤Üy:Ïi}˜‚:*iG«‘ÓÐtqóV§ò’­ì4êé¥ºZÆØP¦«‰Ïu´]{¨ŽÎØ;Õ5t-Ô¢2vÈxj¾S%Ïo¥"£ü©ê»e!ª:Ji(JèG­êª¼¢Õ,2SðJ¡®6Š•<6©Ë¢5—õš¯F–ô+ÛÃõÄŽOöø¢Ù=]–ªú*ïZê€ïkJA³ÆÓ¡Ç?b<!‹y0ÛbîX¡gíÌÝØöÝxË^îÆAà<À\®O¦GØË¿®×WM±XvjNŸ-ç»–óÐ‰¬‡[ÎyMëy‘é)}±w…qÓAQ:ð\pex‰îa…ž‡_Ñ¯Ð9ÔÃºãs®(‘Ÿ‚¶ÁÃnqØÉâ5§>»Âa§º\R Éi/Á[,]€K=½Âý
‡aWc\™$1È²±ãúÀvø— >¤ËÏ2c7°>dy²ª«º«€úX×å¶êd‘@á{à*ëS”X>âã°±|L"ÉÞa‡Þ±{ìÐ{v^@‡Nð8ì;ôˆÝƒÇÞ¿ÀJm Ô¶(±C/ØràÀf	<–Øm´î¢e›`ÇÞ%°%–á-‘Ë¨ÏÀ£«È€ØX©± JP¬;[aÆÇõ»+”ÀmTv§¨‘‡}û9{VÕIzÕ”'—ê*
uuKWèn°wS'°€ÇÛª/I¥GÊ–V>«€âY…Us*àš©*ìÐ\±ÚõjàVZÏ˜uy
º¼áqØ+ ØºÆ;×@)ä×¾î$Ô1@÷€´¿= ­dº¤z¢{€.SÝE³B÷ÐŸ¡{øÕŠ®:YÕUdHZ55ôÐh€ü«é±²l´µÀq·ËÏ èO ;àÍ]c¸Î°ãq-VÞo‘K§A¯Ís,m€6“x&tˆÝIp'uX‹o8Y†Br¤ŒvM:CNÁgeIØRÖ"C:foð1ZÅ„r Þàc¦vÂy:oðAÞÎ›ÀòžðAÎ½| óín' çØíNž«S?`ïÕí~¬›~`^¬Û]€<Y7]`´ú>züÚc9˜ðA|ŒH¹ÁI§@þ~|Œr¹Á9æm: ¯PÐ%ê¼€Pžn›Ð •@ni|ŒkÚÌb@—4>ÊÏkÓX9dmðÁ rlšðAÎM|¸×Ñõ®À€÷Ô9hêäÁ³ÁÏÈfÂù¬Lø ¿•>˜þ¨›ûMàct×½Á«® Kã	tq¼ÁÇXä7øà€¼ûÛîvo¼é,`€n7ø˜ÛÀ>x¥‚îÕ&|ÐÝ×„¿”Ú¤3ƒsCF~-ËÛÁ²6è-oˆ ²Rïv , 'ÃÄIžG©2°’8ÉãÐ“yŽ/3ÏÏeîå™mÅ~ø"ÌCË·üHd‰/RyGÐ­ÞñóÖÆO%£?7£†þnÙ¢ÀÝí¢EA=(ã@“çªEÛ/ÿØÜ‹Ž=´jQZWy±8ºejöÎ³~uÅøHïtºe¥‰ìioœf¢‚ê/Là=¦jÔo²©Q‹e{•£¤ÇÂ?ÙƒyÆ¼’]:1úï«…¬dS¤¯ôùñj{!“ÈÀìAx`¬ƒH~è¹^"C'rãÈé–cÇ^[Nž&‘•{VfÛ¹ïº®”"rI}EvÆ”Òî¾)Z‘”ò½ýGÕEÔ‰¤ï«£Y´SÉÄTTf¦1LâÃ;©¨¹@å;~kÔ¹YÕÕ‰(×K‘p¥Ö–²CGK ªêeÕ]+É½ˆ²­›xcõÉu“µ/t¶j®L)èËÝŽŒt)‘ªÛGòtqz¬[UZö™4ûŠ8Y›Ö´Ð^«tç;o“—ùä)â"¿5è/]uÝËážŽPåÍªì0
yámIUväÐC[b•¹^<H®Ý#…*Ó>uŸ«k‚•ëx¬6B‰èPEŠ8
©øÆ½»~¯jÿ—ÿÜZ‘s¥ŸC)ü®•zÒIàA ƒ(”Nä9n`e‡nœÄV@¼œôÿ8%VZBÚBº)±ñ8µ;ØöOc!éúíÌ–Ø ¿Î}Å¯oT¡æ‚úÁ	GO.ªŒJjr±T5*yÂÅ!ˆñ‹sQ”Š	×®êî&£N¤ÉöFbŠ¢Õå7Œñç^£þÐ·røæºÛ1—.™ksOCË¢Z÷¡šohv
U2#eãEÑ™"©›®5[âwUW^™….2¾*Tdð¨K.sq5VÖÞô"„lUÁ‹ámÍ\ðdXüøX[páuS¬
®–òw§*e«^Ç·-ÍÑNÑÌÈ¥àê¤ºâÆD½'$Ä³¥?tÂkÒëq´-¸žeE3¥=KÏ²ÁþeÏw.ÛQAs€FhÎƒŠ8 cÞÞR¿Gaã–Wÿü¢FÙ‹Ã	yÛ±#“ÐIe@'yFL8H³,÷DžæQ¸YægRð¯±ˆR×‰\Ø±ÆIêgÞÇ„µêw|ÈQÖõ™.I5TkäB4Y)[U.« ¾ªI'¥Û¸C<Ñ½~Å—T}BSå§~š$†º1”°±+(SEÓÕÃêD6Y!ÏˆãUÙSâÂ®5›{qdíÖŸ²=æÃÛ\ØsÂpaMÚg>ÐÑ½O(<5NDGÁQ¸8–	÷îø}²Í[^þó3ÎížÅ¡js&1íZ'ö¥[Q.Ç	'Í|‹ôõ,Í¢(yæN‡iK¶Å»iè™Ùnb[wðÍ7ùIÇ·.²l¹.%}YeŠÒ"I‰ó©úuG“RÐA~eÊÕº»¢C|AÚcÕµwsÖZOîöÞµg3±˜~»¦J†ŽïšCžÙLL‘äùò~¿üËòƒOá_j.@ìKaƒ`qÌ1ê…ÿûd]7ßýós®:ËÖê>ïÊr;´mé‹Ü•Òµ³Äµó<·“$2ÏÉþIÚ‘ZÈžH¢,M}aË4MÝ,Ìïà]Ók}ÜŸì–¦O…¹³ùQ`ÙžwÍ´^»øt#R³fó£(Ïi¯É‹ìO²l³âI:Ç—0#¿¶~Ÿ¼é¶·ÿüÜépÖH‡QÆÂw¥ï§A–x©p™–ï[®%‚ÜèÛ,®+=aÛIèÐ^è'–ã¹ÉœéõÊ|c6}U±ú¤\vÌu–¿—?6ÿ.µ!p02þ³l“ÇÃ§6*&u·T:ÚÆ°8jmÊºxlè»ÀÉúÓ7ßª¾éOÕ½v¢Oƒ¡3­«¬à>E© ß5òÐu¯²Z›)©^¨•º·ÁÍˆ›îX4öƒÚ½Âýð½P§¡Ÿ7ã1Æ¯¦A)e´Ñ-›ú‚Ú™²iø"6ß¥¨±1ÛÑvXË”o?Ë«—<ìªîÔ Æ©øž]u¶ï)õ×.7Ý ²Ã-À\ËšÍÿŸ-ªÔÿ¯'5 Þ±¥B©0+êï×„zxûéåœb/Ç—V&d$<ÛÍIyJü\ðå£-;M£Hº™›;±Ié8VœùÌî;|w>§Wüè¾þÚl‹ÕºÜÜÿi7±KâqZmsæc³­å\k÷"¾‹T®ÍÔ²Y1cÓžÂÊKè–!Û—ŽãbÒŒQyNÉËŽNp>ƒÍ®Vßó·“+‘A¬þ	1Í`¾×VAWÛzsºîŽKPÁÜ@¬aržµæýrMÇú¤{ÈK”CÐ8Ï XïDŒzgáÿ>ùçÍwÿìtµ®›C÷d‡ùFIâÚ¾çÆ1©ÍŽˆ„EIè1WbœN–yžŒ,A{=Œ?qó4pã(Ìã;èé(P'—©ühyl‚¹³ af4_iW7W÷«É“®øA“èy_–?óZù×?˜müK+˜mŸ¿óO?OünlÄ!3ýz+œýbÉGU•‰&Óž;æJ¦KQíª5´ë/ëÕCtŽV«õ‡E#ÖÄØÛ—ô&;+Öî¼ ÖÏÕNH§žÞViÓìŠËÿpLÑš7õŠúãÙþ‚ûý7ó\4…¨ºvt$©ò„˜öl?^'tØ½Í´À
‚m¦ív<;Êg ò§ólÅ`Só›z%Šê™y_w"²?åVÍ	†w+h*Œs#Æ¼½øÆ·o0ä{š]gñûàÝ7_ÿ³³nÒÃær+×“N{IúaßwKätøÊ0	…“å¾/bRŒ­@D‰%)}‹˜y’†wqnfŸB£Þmc~bUYû\õeW°ª«šÈ{Ü…TÀ.ÁÐ+*í˜Ý‹Æ Vû¢Õ0
˜ƒfXM=qÍDv¤›m¿æ¹V£[Ÿšßr˜ï¥`ÜcV‡V­q}€l&{=Ñw´^”—“b¯õÜ\Õ4š:éÛŽ¹}¦ôtÅjOÍ7¼,¨e»ä‘,ùéªÖ/£ý‹‰9»šGÿï?88ø_/Ugbäæ#tkãH$I#Ïé{"ûÏãJí'5Y?ó}þz0Õë×ÊHBhY–”6R(ë¾¨†©Ó{F‘ì	iøÞ<µ|ËÙu7vâ0òÝmÃ¸e[ó-ãL–gý~¯"BøI~Z¢§¥šAâ}’‚öRŽ	%âõƒ‘k
“j #ÞÚ¤¿K[Ä7ÿÜâÌ/"; -Ÿ…˜,µÒ ö‚ÄNœØñm×e$SaQ8™ùI ³8~˜EI’…ô’Ðs#'¾ËŸì-TÂsÈÿ¤×4¿y÷îÝ[³î;Òõï`ÔÃ“u^¹«×“è¢tý!'‡ºþW`£žÎ½º—]Ñç	ñbg./ŽÜØÚuRs­ vwî¨mÛ÷çêíÃJ{3þáÍûg^¼Ë‹£ÈŠÆ‹‡iØ{r³¶mKH&¬žC:Ã!¾ïìzU.ÒÓ<Û;‹ÇzÚH 6õÎþ0’Ä+z«Wí’\Ãçí=ã[ÞÝ‚ÓB‘¼\¶3ÐøK¬v›µh[¢ÒŒ†YþñFmñKÑ=M»íx„v}•Ï»¸°÷ƒøxÙÐSØõm£VÞ$òiên´ p£Ñ#DÌ³J¬Ëî`Iq¬Ü²Ã$H|/84!·bKD“àÄnq\].¬È¹%}ÇK]éÙ‰%/³¤wÅ©ÿP´©,KQÉºŸ2Ôµfreþg-›…ù'zéµ¼'³Ý.À`Sož>Þ˜à¾4Oèýé4hi¹iÝW*µ\Q™‹FÊ³¯èçÄ%›†^´*¤úNßPeÅyÁ¤¥V_ZUö/gÇ¦úËùåLYªÔ—¿Ö^,|cE2mÑè[4Y¥ÚU9±7`Ê^EÂa}Á3•Âj¸s£a±@¼qà4Þ¼û3‰ÐÔ‡òwiy¼IITKhdfR—C.>•êŽnÑ·’SáýåÝ·ïnùU^v þ‹E¥b•áëÃZ4$ éÚ±6þR¯8£½ã;¡ìvÔ”¤‡«¶,ˆŒtzš­dç˜Ô39rƒÎ%š|åE³gÒ<z+^²ØÏ[¡/…4å*‘Y¦2ÑÈÞ}÷ÃÛaØ†¥ùÅª¨úöEÎçÇ9}ÖÄ]Öl”jˆÚ…è¿iB&ß JÑ_>!}a¶K««K½m}ýu¶Ôï¹üÆCãêÂw?½ý÷g}áš¾à}ŠG«:aÒ®HàËºìÖô|<ì@9€õù‰wAà|8%tæBhÎàM›cô5}ºcòFµÄ0Àr¥˜|±*ÓÕ³Z]ºUÁîRQÖ˜ì G½ZûWêú¶cq}Å2 ä²aä¦(\˜-3î]	ã`GƒgÙpš}d·øÈûeFÛ^hÜJÔÏ}§q&Ú®é×‡ŠDôb‹4ÊLÄi.ÓL"ËW:Yè{i–ÆNGYØ¾Ÿû±Ÿåašˆ<IHÛ$}ô}sx©GÈßhøT4‰ÙÕVìÀw®©¶ï†ÖNÒ1ßógçkHòì°ßèøÀyàÝƒ¾¬¯– äœÃ4ƒ`Q<3êuÿ{¼Z¿íÝ?;#’ÍYÑˆ¹YœÒ)G•Xëº‰®“Ð§$õ“,HƒÜã ¼8ô]™ûYâH;óÃÈÊ<yWœÜŸÔ;™Gß±M@WŸ0s±*Ê{<ûÙîvÒÊ¦ÈMõØ`ËSVµN…„Kó¯ù/óu}Æ¶:¾]?šÌFVÐTIÏ¾r*§ÃKª>H„\ŠÖlkb?Ãõ¿ÁVAÖI%ý‹€Ðï£À[”Wëek®
%=ñÕxEÛãÒÃ>‡«?²¡4ëõÁ®|(•Wà4fzèà‘Àm‡­”ñë³}“Ñ&ÛæŸßÛÇæ{Û8ª«òÊüñ»W4žÝái¿Â·ßý…Ná´fËp{¼ýJEel½ìW&ipôC*Ö­z°.³’ KiVý*Ù¼ü °I®,‹²nëõòJ'ðhij‹E5&–;¼Œ­‰P D‚´o[MAì}-UÞõ÷ý.©Eg:î‘ûÊ{yl:–å<!‹çüxÄ0
lûZl‰.¡¿í$áø¡Í¶{ê#ãYRÙ§¤Ä~ô	VO½žOþ@[æt'{W÷·ðßÐò)Rt/ïø(øšNdG_SÅ Ø"ûÁ“ì\L¶ÏØ´Ï0û@h%C€i4õŸqÕÓçéåsÌ;w—g‘8íòø|ÿ7+„Û€œÀH‘ h‘àˆQà¨QÀÈQàèQãèQÃèQãèÑ¦8‚(lEHà"Ñà(¢ J<IzÜQÒãÎ’T”0’hlIEÜ­ÜúÀ"°#w~´8±¬…Ée-N0k’Y‹ÍZ lÖ…³'µ@ñ¬E²ÝÈw[$ãÊ¬8‘(±"V ¼ŠWÛG‘<êÐZç@þKØ8Š$@’ ÏV¥ÀQI$M€$A2ÇEC¨Lpb	L(Yœ…j0fu(` ‘g	Œ	Œ	ŒŽŽŒ5Ž5Ž5Œ0Þ²Àà@üi€_ ð¤~Á–lÜÎéGI;KRQÂHÂØ(’hlI´{‰¬Rv
Ç-nÜÒ†-lÄ±H‡lqòd‹([˜DÙEÊ(S¶8¡²J•-P¬lqre‹”Z¤ÀÐ%†6ÅÑ$ÅQ$ÅÑ¸qRàÆIq'ÇQ$Ç$ÇÑÈs Îq8G²àÉƒs Î‘DAÒH$ÃÉ‘,'Ç1 `K`BÉ©´¯‘Z;*è s€
9€E `ñ¸pX´.Ø k 5ÀE ï9p×À[ä%ðŽyÅ1ÀE €ñ¸ð`tPL Wb‚FäîƒŠv
[bÁQc‡#¨Cv„pŠ2dU32jlÄ*hÔ4ÊKÐ,¶W+2L¸AI60±ù|ÂÅ=ÃžpQOÀ '`Ì.ä	ñ„xÆ;!ÃpÑN°`'\¬0Ô	étÂÅ9áÂœ`QNÀ '`Œ.Ä	á„pÆ7Ã›€ÑM¸à&dl2´	ÙtÖµW]Œ"µ†QÅ»p’LÎƒIyå¢9Ë+DµB^‰3r›#°ëU	u½jQÈšCBÆ6‡°AãÆ<äÆ Â2ã#Æ¼eùp•_ºK•&{Å\v£Þóê3K²vS=Ó÷ýÔ”ü×çòqÅQo™¾ÏžÚ¿ê»åIY$ÊîZ®/'”žpÓÈŠ³È•yn§^
é¹V”N§©/D’‚šäVè;©¤‰•ZÉÙý_ùâéÅúÌ©ÝøV%×W™·Û»Óü¿6Óº,¹Þ'½.=¹Ú©pzg«´©Ê¿’\œ³«Í…¬tENN5_Ö‹Z§öWµF‹–SægªÐç„'ªÌà?Õm÷„ÒÈGsÓÈVàx»Õn,ÛŽâíj7Vzãêøh
ùqi>"‹üŸã9ünÁ›Ø±é0¹yúß%MÒ¶-ŒpMÐ9†!'9 m	_‰*¯0j?A¯DŠ(Št´Ê;tÕ—%¸íêæ
‚L|¿cv¿	ˆÔ›3"?üQÂðCÄÒëÂðM©ôÑ"q×ò@B‰ Ïe–Ùy¥VœÛÒµ½ÜËéXY*œ<B7‰dÙ¡Gr\&“$N,éIÇ’à®’Müb/ZS½Éš@4üù¢œ¼\Ë¦à*ë„@ó¼hÄJÊä¹,ëµ.ÀÎ³˜uul’€ÆÕ*K©ž¡yìêc%ÑQÏ®´Ô5‚¦2IFFs˜ÒÖ/dû„ä¸x®ç»–ë\“ãÂ0ð·å8Û-ëarOÚ³$·gIÎú”‚@Y½*ª" ÐH	ÝVšá /åºÍ‘üŽ×>ã=
þÿ<¯^‰}ÎˆçÅŽ/¤“û2¥f2wl7¶âŒþ±‰éåIê%N–¹i	¥a{2ó3ÇJdä$þÝ†Œ¤¯²R2óâÓÉEÒR´­ÔŒk Ï=öU]ðÏ?¼>y§¾Ç)7³¦^Ÿ#käº©Ô,MlÏ 3§HKùŠ~¬›îUR×gS÷ªˆ¡\­—¢%H$%òÔªfÖ•²fŒ.º+U…¯‘lùàò|¦0K©¨Â:&JC#¹#—-$Æcè¢†ÛÍˆŸšo:PsûÖ”§‹SU”O¯µA›!íKUÄ§‹Kªz‚Šm_ˆ+³ñûú¢2“+õå4lÙÿ)*ó}›rÑÆºÌŽw±MB*Ê+3]Ò‰Ì-9äEÅêÜXuP_•²½þè‚^„[UugªªˆÜsÚ7ê¥3®Aâƒ~7þ…1Oz&-ï ž7˜áŸš¯Ë’Ÿm'fÞ’˜re&R[›¦žuñÉÍŠ0Æ	F ZÃ©2Ñdâ¿+ªTš$)Ñæ‡C“o´`˜žãÖÒ5µ 4ÔgLHºº0Õ2Þ}lLd£µÊëØ¤?h¡5ú‹–^Zª¿Ê®k]·‘f”'T­§VM®¡Å1šà5=Ñe‡Uþt0ßž+€…¾ãFÞ®)-×
ì-,Ý(vfa›ò¹(ã>e0—æ!x¸&²&­«sÚ’¢Ãê†7žt¢U]XHp
Ž:vìÝ…¢{Pt‰%;”êP¢Ci ÁC$x„!àÊ:ÖÁ˜Æ¢'¶x"«3|`Ä¨I~©p=@ú\g½2UB:øE¬EU¦5œåK’!ØeQ‰²-}M3i½˜ Rb²¬ÄaŽØ¨q³òuš–-œ-F(¢(lQXI…Ñ„°µ‘e0¹œèã³êoëÕ7P³ÍØÊø{¢&\^v¤A¢3 ƒÈ¢¼þŠß$&qu ù,ˆòK‘ž¡®°ATÿ¥ojÜgÈ3™¸j6K¶³ÁF®ÀAó©Ìšèc^u£½œé¨yel¢Š²£æ“ÏtÛZ3~Ã·Áø_ˆQS«Ðš¼@ž’°S²«SbLE
ù¹ºÄŒ|¸ƒ2é®ù·‹ÍmÄíbð‹»y'·øãGî‚8¢nÌuÓD$²LŠdV[ÒW¢9›Û¶Éœ@¡#ÙÕuÉ|3Ú²"«tNÓ…¬W’¾šÕ–ŠtÖ–´‰)çsÚÕºŸ;Þ3yu.Ê9-Ë¢eg€YÄ-ëjAQÎZ8+q&‹lh!,ŠJ]gÎi½[JØGÚöeW¤õ,JìðÐyP_vìÙ9«íúˆ/µnöwÃÃj¯nSÃ®ûL]FÁÏ÷™Šb™‰Pøqàå~f±Hü$‰2ÛúË’Qy¹çnbÛIâ&žç&‘¦~ EäøwøLý$ØyE*O‰j1Å€±ßÌ{ù÷ªrb™å¯©?´Q.Kû ôÚ¥iã?|ÁÞB£?•ÉÏ›îs‘róB¶ãTÏŠ,íµè1u™ŸÚ™ƒŸ•¢ëi³­ÆVõ9oàÑ;DûQ›¥¸’Ü¤®Œ®^³ŒbÐÊæJ²ãRÑ®”½{M®Ë2£QÓÆ$â”WÇÊˆþf,jID“ì­ÀÎ6ýÃ[åuÃN<<~~;^YcÝr¿	¯»ß8¾}«ûmûãD»Ð´D­ÀÝvŽÃÀf»ß‹é†û‰Þi³|o¾ûéí¹óïs¿¡‘žXÎÓr½ñÃ²¥u•‹£ëÓ²Wt:×÷,1ç«ŽOžÓ´ÚâŒÕý‚Lÿ¬rò	ˆÎ›½ÊQãí3îì#Þ­·ošïže`ú(­Á+z­WíòžŽ-ˆã3#˜Ñòž-78Í	Ç4Í€MëFòQÐÞÓfÑÈõ=?“<3Òù´­Oƒ£—G—Ý}BkÓ•ÙÑw?þõçï_¿ûþ¾†žjÔïÞ¾ùÃ×?;§áuøG¤a¸±™„á¶å¼'ÈÇgv`‰€ä˜ÿx%»tt.dâ¤¯¶øi ÜèþöÓ?«õtnßÒºoµ²ÏÖô’)‰yíG5ÄÈÙ‹ã#Íhti¢Dí{Ú¬Îêt}ÿïùêÞßéÅ‰²kR¶ÍÇš¬î#j±¾ ªEwï`©ÁR´[äøtM°t·C#7êæ¡•ŠØs\7
âD’î—¹n’çQ*=;·=OäÒ“€´ÄØJã0”^è&A 2×vÜ;ôÁ?n}¾¤£¸&	‚©\w‰šÙ¥Ê&ªBN&î	-5Š)dT‰ÙJoíšZOñ	Ã@ÎdSÉòØÌ¤(YåãÈcY,Hï:)9&Õ$FZVÛ“GÿåG¿‘m± ÍÎ|Su²QÞKæ»ZÇ‹Ðï+ã¢nÎ¸±Šà0EYW›ãAQU±(òÂÌûJ½ƒ`öXÅí¤¢š‚F8ªG«“jÀŽÔ±!U­ƒ`¤ÊuÂƒ’—Úeè7RÌÊZ¢Â¨>Ú®l¿4OÌË+WÔ¥VŸiFº¦.[ƒÉ
g*‹s¥Ó6ÐáH¬1ëÀ—Sz¾t³îË~Dž5{²Ü.0•‘«ýJµÓ]o«0‡AP;£t¹—·6£_úR4<ÉôFjé:5Ókœ2ë5g|á	×ý¶ôø­pü“ª%þ'i!Ò¤tõ™¬L6åµCÐñJœ¨4')q|m#¨yVšƒ×R‘4AlÄMÑÒhíÒz(ÄÐ{×ÜÖ¹Áê>A­DU¬{m>Ðtå‰Rän²ŸÁÒj4AŒOý,hñ\µE{÷ƒêÅŒ±ÝWÊŠ@+ ­ó¼`ã…^4õ…^â´o ^yjE}«"®ˆðYÍß¿ ˜•ò…¹®Ûb0ƒp×zëM6µ6MrÎAf4Uëº¨º)bJÛ‚v#‡ô&/ÛÚç¢(“‹jð®OÆðèÝß~|É‘s<‚º¹ÚÝÝÆOMýmú§caÆ¼($;ˆ:ÌwÌ ŽåØµß˜AËµlÇ›iÙ=OˆdÚ§îs0Ò®E„æ÷SRûÐI
¹ä+]ÆAë“®XÁI×0oö Âfþ‚‚îšŽ\“ÐôÆÇu B&:ò8\êhÀüŽÛ¯×ø
•%ú·qßÃe¥a”î¬Ûê›;ê#‹ŒDávÎýïþn_gÛ­fLÃçÎþYºZ`?¾Ÿe¡ŸÇ"~;"wr7rs×Ë\Ç·,i‹,KÓ<ˆ½(ÒË7öœ8Ž#+r‚$³ð}Ð¬‡ëÙ•Ê“À«RBÞÇ4þA…¹ž$ƒTâ]¥þš¤?öF„zA"ó —³Î*‹Òc&ûJÚô•IÈÆP¦#µÎ<=¼é\©(55z®…‰tìØ”b¥gä½º:NëL«2Ì6H-ÔÅ/½ÍëŸÞ(u»Þü ·o[:xôýÚT‰)D·ýÒ[d5·ÊD0êÌãÛM “ÚeÜ§v™U»Œ»Ô.óé©]þìì[qè{Žµ£v…vè¨Í3©]¡ÙÑxù9CíÒ«ãYáÚ»Âåú£ÀC®-¸w	Qy*¡ÄÏ¤®;ŸÅ†R‰èxÊ
ŽC‘&e
(—3úä±¶wlTüœBfKærìfçÅ:ËW—§™Ü¿S„†oAØtºˆ
eÏAE4êPaK/ùL^¡6eÙ‹fZµ(£ÿ"	ïG’fA»fÝ hB"jiÿÚOøû7“É_QÈgŠ ]‰æk,ö%’ÙLÒ?
gƒŒ{W#:œL”ë%ÿ³çÑ4bVŒËCBræÆ4è†]2+X#míëI¿¿-‹‘sB‡ª~Utr5/ÌHÎ1UzuÞÌ
‰Ê‹Ë²»tf <$tI‡#Í¢Ô²æâ3—f’µÈétšg¯·uS{€zõ }æ¢ò|Éw¾T8_2x £ŸÍ·?Òe©fÞËoÉ¢÷·¤uBÿIWÙ,¬•Ò{ßÑZ›KÛû*ãkËÎ´sZ?HDWÌ9[z¹pcûü×
›¤Ô‡¹XH¬P¦2Œ?õ3ÇÍ…:ôÑóDÛq&¶ŸRä¾©ÆVh§a’9~"džyw\,|_,–ƒSÞƒÜË6'”nÙÖÞÕ*1õu'Á:Ÿð´Ãàp1î~[×
]½kl×x[ˆúÑñV Ý¹á [<|×_ëÔMÇÆ ÕdÚö¾	 cóü—Êï‹O9GŽ®[*Új›þ&Þm0ÊÐyÓ—rxrËºÏ¯J/b&WÆ«v1»ÌiCïÙJyYðãíšzÓ³bpËÉÿNßÞxP˜ËÍ4nîZø*$“i)”síž^yŸ)?¼*Û¸¬‘t±æøÁ›¸Cé7ÎÙ=fWñwE:ùXrÙ7íÄF489eOã¿¢ùº<5æ¸¢Ý¸1f»¢=Á;‘ywº¢E\d·&‰cûAìo%qìÀ‚ù®hã{¾Ù÷­ˆ9Ÿ’{<S0î'|6`·|ö=ž6 ¯™q`Tl(ºI©¾¯ZJgišsÝ]vâ "ætrTÈmÇP$b&$UzÒ£ÿ…NêØ"'y2Ï8LE¦i`¥Âœ4Š\×vRþÁrË‰S×ËB/p’èó/“‡:¿Ÿ¹~üÄü¨êØêª&y]“èrà¹AÚªÂ¡œPØ¯ƒÄ‡+:ØçŒIÜé–ÄjKË¿X§àp‘’3ÄŒ!ÚåcòªÏÌ²8“Æî‚¾üÇ[zø¿T=\N ¶\ð‡¸‘Í{rÆ8”1EÁZ%'eG’òŠÅÄ¼/G8Lå™b´âªýr›TOHØ™]F—òwe? …m‰:~hÍ¯¿6n”GÈ9N=ðD¥?üßq:0w	¸cÅ‘aÀGáÂî0ãÞÝ_F)ÜöòŸ_ ¿U÷ÍsBWØ¡ëäy…‰ïÆQ$R;KÒ ‰R:éç±—ù®ë$nÆBYš<?Iò0Íï¬ûÆ|y%Ò¦ž*m)ïKe[ ®÷ÝÜ_óu•ºè‚VTyu¢lE»€C>¢íˆÐ•¨®åB¶
†:«ÊV[CL]š “«¡S“ªÚèæ©9¸Ø®­ªIe[l—X±ÑéÇ;‹¢šŒVÎ©«@T¶KÑ¤Iîˆ~]Òyl³&µˆ…€ÿì+iÚqì)§ÕqØ[¥X¹{b7¢¬=al§7"Rªe£6ÄW†PYŒtí9ú¡YÈÑiWÅ¥êüH[n±\ŠlY4Ù	?w5I-šÉ’#Õ¹Þ]­E•s¿Ô%ÑvªÅn‡Ä
6ø`EÝN)Ÿ6q»ZèÒ4ÒõZƒ-C_°nW2‘jS´´$èœ»(Ê’…³1—BS;¯é+6Pi‚¶-a®ŠªX©|QêÕwß*“(8FÙ‹õ¥l‡c’ñK½ ÙyažOEÝ†#8ˆ™V‡¯NëèØä Îz5ÄQó@†@àc]vn»Æ¡qÑ¼‡Çh 5/Z‚Ñy}úfð^kc›ÊUEMòAæ0ÆQšßrœp}Q•µPë^¿ÇJ-0sºŽ®WÁ§5ERŸ?¡²r¡5ÛŠæVà[×[‘úîvH'}åEî|çbµ‹žmh{–.×lCÓ¢ý{ßr%­–ãD'ª–øÙÄ©K¨Pp‘bÀ‡¢ïÖBð6-
Eù[!1ŽÄÉ™mArz°v0À¨4
1yéÚv|²ä´ƒƒAÐžD¹È¦ë6‹l#?B!>9“©ÊyŒ¯1—`ÐhyÙ¦Äóâò$]¡ ·¼÷^ªð lùka^3f\²ŽWM ¶òíMó\ÝR"ÀÕmå
ÈiçGI‘“rY»Éý÷nØOÊS–U)Œ|a ‰«apXaPÓ@T§·WöÀ©×*Eu‚Æk
#­)híá 1¢ ‚mLbÄ5„ÇkdÈŽ‘‹<xbõz]bŽ¿®’-†Ý¥º–ûÞ]â*‡®8×1d3îÚÙ7¶¾ÓP„Ö_¹	áØ;8	®jWyÛªQ#w]f8’Ô«2]­NóƒÜ€Y(FL$AãèÑÂèAÈíGê¶Äû2]ÉKt	Ã^Ëj*•·oìÎNWÙ2l†ÎiÜ0lÌ¶ahrÛÂ »}Ã†#]©]âÈí¡H²¦¦µÈ 6ºu´0âäãø5P}ë1êVp,§ªÍò$&YT»$ŠLÉö~Òjt¡rL™oU£qhKöÂÔ…×Ðõ§¡!+„”Þµ#•?
üªêêªÄd¶ÇÉ•@±'UÂ„JœL‰)%N ÔÈ˜­“T‚j'‡ð"ÄÑ¤nÃZˆ¤ÚídxÙ78»ä £\×Â‘wŠ´¸c¤ž#-î éqÈ%Šç2få0há)ä_QÐ eGÈ ÝƒÎŽurô¨s£/Æ¾Ü—0ä.N˜ãB¸-£C$F2í¿àôUÍAŽ­¸+ä¨ádAE{w\|÷‘”|ñ}”ßTúþ8ïìåÕZ6œ•¬S9™§õ¬\­}3§Ù ó{š= d]¯eÛZÇƒÎi­òÍh¨3[ÎZ|[íöa}Ÿ?®8ùí[{˜LðÀ¼…hÝx_ýô±fvv^Ðœî¬¬ýÑß?AæZ“G&8Ð;à@iÂHX¾#ÝÀŽ³,³b'NKZ–XiâH'ËóÈ¦íÈö„ä"Šsaûy(üÜ²qgšƒÝ"ÚêuZË¢“mEËß›h³huºÛ Ç$“*Y¦*‹-šLg 0v¢úUÐù˜¼`Í7_ÕyÑrºÉÞÑ hLÙ7µ)[?ÿò˜ãÇ¥,šTe¹Ü~lLß¸.RU¥K~S«‚Ç/ÕS/ÔÐÌöj•ÔåÐ©ŽZÏIœÊ]«´LºéÔ­ÂŸÍ–Ë]¯Ø%½1P©~uÔü¹h
AhFºJÚ«£à$¦Ñ¦«´M¢cý7ø!}­‡¿ZÉ‘ÏÇPC¬ô•ÔÎÔo²TV2•mK“¤‹‰é¶ôëV%eÑš?ÈNèðeM×V²ã„™G]¾z9¤Âœê09IOé}ÚnLo9¡ß’!óuV'Ò|Ïù²lCo¾ã)#Ám/ñ„âú½Ù	£7ÞÍe[±çm§Æ´Ëqæç‹š›G†õ?‡ô_+æ}JÂ¨BmNÛ:å=±÷ Þí8ìU¡ Û+t× Ù‚f{;A‚ƒ–	Ó´¸Ú‡!0ä†Œ›Â†œ V‡–ú°è0xØQ‚<I 	Ió(jsúöŽåKÚˆý9÷÷™ºñö÷?HöFg%ª™6„mçAâ[‘ïÅyÌõÈýÀ·8k³c;nêJÇÉ+ˆ²LžÌì,M2;Jb!ò<JÂôÓÆ{RZ~7mÆP³Ç	«^”Sæ®6ÿZ—üõfñnÇkU·C¥Mž ÿúã›¿ïbrŠ¼NVÚÐ1¦àã¼€5;óISGºöxK˜*‹#«ÄãPŽì—cŠ>®KÑÉ¦"ì\–Wæ÷ïxkª´‘—oª¼ÖåÅ‡<Ðk•.šõó?÷Ýºït2È¦›ªY°á_qã¶çÌ„L]ƒOë*+ø]ém¸­‘KÁæ‘'¤•Ûsµr7 õ´›kÏ·ÃˆZo¥qv¸ŠÅCÔrÞ&ÏJù>•r'
]çáJù4g¨:&‰ó€†ÝÔ*p¤¸ ËµÝ‹¼P}4yžÆ­ç«–›'çIA|fìtñ"›òžvüóÑ—ûã_Þ½ùó›½õÝo\/ù§Ö©gYÃúNvõºûòËw]6«–ä2›UœP·•*=íœjz¹|Ý—4ycïáZñÆšþ4ùôö+>-vîé‚N_:HŠ•¾“ú®ûY¥±'–…aÆ2mâÚ¶ãË€Ð3ßO};Î,iE–´'p=‘Ú‘îb·^l”mî–PomüT$7g¶äfùŽwí>Åóíë?š]glC“gÁm¯‚›ùŸ ¸éâ°¡M®I™Zgù	ÊE~*Œ Ÿ<‡ òìà.Aúg—.OtAHLn™±'N{ß°zÚB;*ªBïnh/ªRö/uÂ¿à¼6¯)”túHø'bg{„ »®)ªCU,sí ³Â<È)cÏdl'q”å$0ä^‡^nûRºi–z¤yà„"°r‘N{Nr—‹:äzYS¯×ªbÂº Æù‘’¸#-¦Z$ƒGK«üSê¾½G,àª”í±AoHL¬,ÙfU·ÒÔÐÉX«VšßriŠ%S¢ŽL“s[³OOelê‰›Eg.EknU¬e÷]Z¬êYe‡zÑÒxóÎÙB•-Ëë²¬/tI’¾Sž>\(d¨ªÓ²C¹³÷eÐ„¬¥yÔö40êò‹×_(w—/þöÅË'dÝ
fûœXí
I~ì[Ö¶Ó‰Gž5[LÖÃ³Œ´W)ˆýO)Ä:LFÁ!¦­…³=aÆ½»µW,õL^‹9ä‡¼»LŸý.¬H®KExÙ öýÔµ¢,s,óÛ­ØÉ3;È'´œ8„K¿‰ÄJíÀÏ-!m7LiIÿ.÷ÞwKÑ¨ª I#š‘¿òeRpA-åáy¤ ÿn¶k™r'³½ö„øæâž®ÝÊ7Ë‹®ñM"¢ëzÞ¶yÁ#k~yÏ"¹Á7xÍÌa™¯IjIâ’kJQ…>7ý»úóíöß\­‰ÿøáÍ{õ_Å"Só›z%
]¿ë¯_£ÿKÚp!Æ‘/£àÄ²Ÿ7v-÷¡eÑ“¾Êh•°x+¯Ü˜ªÓû,ª´HÆ“õ´­Oƒû›®‰*«B}zŸÅZ¶WUJg´d¢öÂw¸©?«©;»é/EÇmLc¤o³ÝÆ?â%è:·N\°éç¾ÉØÚäÑàþA‚%ê=+?6q›FGß½}ó‡¯¦£ê>!â–ööGÚ/ÒôçvÆÞ´;úîë¯v?:¸y`5csê6³‰q­ùÇhñÛÇèÐtevôÝýùû×ï¾ÿXz­ïMç{×6Q>';u*µ\8	p|ÌTv^¬³|µ_´Ý²½ îˆ¬{AÌ%±bqÍùîqÐ·½» \-÷4¶Õr³B`û›ÌÅªh÷6@‚Ú'ñnäc8 »%‡™uÛñ©ûÁÛ#)7˜û£ç@ÔKUÀ4“ù¾ñöHÔæþˆºÁüT¢¢$$þxp3DàÉÐ‹“Ì	ü$—2tË—Žã9NÉ\Ø–¦¶egnœ§2ñ|)ÒÌö½Ü¶¢$ú}›!¢¥ ß¾Ý|ï»Nx-fÔ	£ v¼"×ñÆÙû3„^5Ï†ˆàÄrž˜!Â~"†ˆ£—G—ÝG4‰m‹ÄÌG¶M3Ù±Q<ì÷áÏŒV‹9Ì|xÿÌwm¾Èh Uy¢‡0{.o}nÔ‘Ýy+h4q<¬õØ‰sêÏ{pË€ñàFÉ§=7“«‡"×L!³©ðÛl
<Æ8â]Ç¶‘<ÛHžm$Ï6’gÉ³äÙFòäl$•\Ô¢</§mG‘#óÐ÷“4ÊÃÜÏÛ¬0–ib{^¤à'Òõd(,‘ú¡/BÛŠÃØ±OxwÅ,¿6¿È
’¾Ð>Œìú¦juz3¢ŠTnf­Ý,KåÊz¯“ç@¤ÉÉs³Ma®DÚÔæ‡©IWsT°ÊüÆ¡ËÆ‡Vv¥¬ÝòKsó7PTj35L¶l.
NŒ&;sldLTÐ4hY7Åo´n¨µÆ#“ÉVÒ™Ç/õÔ˜rÊ¥ËBžïÄ*  ç4­-½V±*8@šŸÖ‰"nÙÔýBç†û­¡u;µÖÄ85ÿx©ª}i¾ã7bGÓ/‰\Õ?:‘°Ûèå¿¦×ûÇ?ËþýŸÿ2?,µ¿)ýó¿èqzµ"ãê¦‘ÃWF^÷}74ý@:ÿP“‰Æ¡­uX¶ÎÈ–s¦8NïVTôÛ‚=degr«iÎšl›<lŠbOÆÏ÷±ƒ@Ù½¶maqàÚÛÚvîì@íaÆéÊjÚ§î³;ëµŸÀù„jã„`<Np.Ìã3îÝp8S©L²Ý>™ç¶ÿŒ{Û|~_ÖJVõ¤ sI
"é'™o©‹Ü‰3G¸±å;ŽeE~(Ã<²¥ÚY’'2NDÑ÷Žë¸™w‡€ô–jÕ¯4ËASœÈ=·G¯³¬Õé`ÇIi%fH¢Ø è”-´¾$Ç¯HƒV¤J9knK:£Ëj¥óNèÂH˜jÛ­‡W2]ŠªhW§æÖ˜Yxò¯o§3• âYê®ª;ÍÃÛcc#åä•žÅIhy:ÞËàC/Œùjl›ÁÛ¶Dî6‡·mZ³£UQžcUö«bB<¯Ì*"ñÒ‚”v’™x!ØãÖ‚€¡Ï×åÄ2OUcP‘rÔÞÇ¼}ÈN†ÊùÄlúnŽ\TÖ¤NoöÊGSËuG'åÿAêÚ|~1ªí8Ì©4‰s§AèÇÂ‰Óf"ôH„²bú–ŠÔ
0t\a‰ mÏ‚0±’Dø’Ãˆ>5¬…N#7¾é`eQ¢Î=¦V7ÉO«Ö<þZñÃøRITc‹^÷g¨þ
˜Dff´<Ò®¼â4xªáŸäÕEÝdí±Ê‚'U~y¶8M<ÏÒÝuÃ ôh³"W²W7Ä)›G™ÌE_vÜMR—;g2‡
©òDÚé„d-åj$J¤z~ÉÌCI‚!^ZL¹Ì÷5›ÐŽÍ¶X­Ë+ã}ÖØ?Fêþ‹úÎ¨»"×IÿJâÇ=/Bmv+ÛŽ^êã·ÿû§«nYWôµ¥µE°µ~n°TQûù_Æéé©¶6m}¹]ÚÀÔÑÕª“¢Z÷c£°hÇ«ût}õ¯)ó ùŽ‹S›GE¥¶áËi}7“ý³ édcêø©Ò˜þÉýþÓäÑýÓ8Òv.šœ¢¥Ü’|6æLTïFÏÿ Î¤ÁdÃzBáÚñì¶:þu‡¯ Bg'î,´,7˜w¦gãY
Þ«FŸ"“‰ØÁ!’jÛwEAó1f#Á$¸‹ç_¯—

'ÅCÆ½{PN’å¢nˆ¹­ŠtŽ|®sdÍÍQxÞ$sÚ>¤4Ýì|Gü×LÐn§ÂôýmçÕ»;d¶‚ÛÕgWMV‡ªF&";±Žˆ,+Œ’$°³È‰3+uR?w}‡””<"Ä™›D‘û^’’ã¹v(œ»¬»$DTæjS,‹StO)~4•>’×HCŒõ¶Äª µb*B–’„Bó¦òa‡ŽN‡=”¯ª2Ã±L¶dIúW‘¶ú}ýÊ„Ê>\ØÞV×«5ˆ’RèÊi]m®µ;|¦ÝáI³yýÃ;“vöúª)K«Ó—¦Ç!ÿ’oºIXé
a¬Ô¤|KNÒ"—«Õ¯È¦ÜÜéR4"¥Ðøž4‘²ü¤†(éÛ¤ïH“éLyIêJ«R‡+ý«QZ_^s'#aŽ·
ƒ%5Éà×JwËþít'º.5ùóZVÜÀØü\wùË±#Ör¾”§®ÉÙrþ-¿àºÈ˜Šú8&ÁžŽ¥vÍ¹ÇY¨¿$ú6g$Ž‘’ÈßÑš³“S¾2ÿÏ¿oýòëå‰1þ@è/ª¯|÷ÆgÂ|ûßöVCšêJÐäO0ï}ãèo…ìxû´¤Ûl5õ§Füžïy‘ð„‹Š÷«{üÚVõóþmrYôá¡'¤„³µ/ŠœÐÛM‹á¹±í¨¬“~ây¶Yóë˜­¡š|÷í»gÕäšjbûÖCÃF”4ÑÒT 
íhðŠŽª6¢;HtLªS¦j ÇTªÀ1e‚pL½ª¼À®FèVÂÕ1á¡ÃÏúj	Æ‡Ž¿Á‚Ï±ÆžðŒl€Gdƒ¤	ð€l€çc=	¹Èä„‚*ãàÈ)Åž‰5tJkèÁU#ç´ÎiÛ"ç”ÐsJèÀ9EUÞÀ¡sŠÕÃª‰µm•N	L8<tWAJ‚‡î+ìaù+tì¿&XÚü
U·	9ü¬³>tÛvgXtìàK,:vfK¬5¢+±ðÈLºy"tÀ³¾ë 
l×A×L?Çeçà³ì{˜ƒƒsìypŽ[™2Þ?ipìÐQZÏˆŽ9ˆtŒmu ÇWpŒ62€cøÓ ŽáO8Š?ðÐ­„“åGxèð÷O#>tü¨û§xŽ¡îŸ48ðŒÝ?il$M€$èþIcCGØýÓ€ŽœPÐýÓ ŽœRì™ˆ²ªŽèÈ9ÞpàœÂîŸFtàœÂîŸtàœþì½isÜH’6ø¿V^IÛ$…ûPõ´½’êèÚQUkGÕ3ýŽ•Yo h"$õë×="€DR$•”ø$9[²¶.%3#ž¸Ý=Ü=ÜQö'Ž½‡íOfšðÁó‡‡ž*(©„ÙŸ&tèÁÙŸ&t”ýiÆG^·qö'´?MøÐcSÚtlçQ*[ƒŽ]YœýÉàcáQúæ	ÈLPö'¤õ8û“‡î”ýIãìO<tnpö§	Ü}(= ÚŸªÚ«WÅÉQY` ;rß¡Ï`ØÃ ƒ>Ç`×ñ%ÐFiÐQûÛÀ£îÆ3<†_Oðü„ŽÑÂOè˜{ë„Že&tŒ,3¡£„™	{¦pW¿;  Árn ;”ÉrBG5”ÑÒ #)&ÈliÀ¡Ó‚$— Ë¥ÇK˜ír‚‡®*Èz9¡C×L!Qjùº° Ýí„Ž\X˜s†G.,ÌŒ9Á#eÈœÐÁ—5 )sj fËœ@O{¼°„fÐœá±'dÒœáQ6ÍMÐ‹9Îª©ñfÍ¹ì†Y&xp÷QÖ€	¼¼8ãæÔ eÎ˜á‘ÜeàœÐ‘´gâœð±;eäÔè8+çŒœsÆG K€¦Nj eêTÐS§BÆ˜:4ÄÔ©°aæHœ©su˜÷G²ÉAÈ+±Æ ÷9®×4Õ l	ë5!ƒæš¶ªÓê5ÇîFbKØ¤0zÛŒÞ_¡ÐÏ`³rÛ)g—8Zrv‰£%\æ«ªã£ûž –SP¡öŽn¢[a‡€ÛŸŸþ«fÝº­Å ìtqsà°{ªº¼¡€Â“Æ‡¯0PDcüu]aÂG÷=AØ-º®±[t]£·(µ ]!\÷Ð=zÞ@§·}V¸>7%g!4×ƒÉÐëù„êïÂºNÐ˜^ƒ`Ù‘žE[tÆ†h|;ÄuädÊÐ1®× ÇýÈÔk~`‚†mË†Û—	9…!WÀ‡£©ÚÉ†ë¸y8Çõ\âH”„ù,®V¸ý½‚y04Šf¯`ÞúbŒŒê3ŠÑ02ªÏ(¶B½µ ds\¡^p2Ší®PïBwGÒØ°~ãˆG†£î(f°³Ø²˜pX¢®r•YÖF'ÇZtÈF¼=4’ì¡tmäbÝÓª´Y]ß~Dõ@Ídm]ì£ü¼©¦öÔÌ>'o›bO#2MáGµîÚõ^ÆdÚÏˆöq¶ÚÙÏüíé@ÍMá«¯Eƒo©-d×õÃ »ƒI¨ìÚÌ!@È(¹·CÝl;ØT îˆê"×áÔKNÔÁìšßÁ.ãNgªB(À a‹ØÂ±Å-âJ4X	fÙôî<5´—F°b„nÅÃ/‹·ÙB«t+ñ>Z	áKîc|Ñ>†Ã‡ïá|ìeã&ð©Jö0Uh…¢j$…OUº‡©BëEU#{QŒ.[ÚÃ˜
Éê}ŒÉ´´1)÷‰½ŒI·´‡1M
ôaÝâhÑÔ^Ä%ÝÔ^Xjj/”[µ´Â7R[ð=ÑÓˆ°|Ñ–6˜†öÒÈÅÛÇHÐt@5ïc$h2Ã${šˆqéÆ&‘Ü7{1c^k?²³± ×©íFð³§ÛÚW;àêaZiÿÒJsÜW2J+mâ½ÂÀq.Ù&Î+9-XlÜÑÁYtTLW4îôœáz­â¸âÀaotüV6î¡"ð"î™"î•b…rÎ`dTŸaä	ö®²¿ÂÔ³ƒþ
FP¯PÏäƒ<ñ~
„v»B—²¾­Ôñ[AØ%Sr4g2ŠHé(Î(lÜaÈç@uŽ$Rç@*uŽ<íçÀã~Ü„W.,J3Cc¢432(J³†ÆDiflP$e†EinWu½ZÁ!;¤]õHäþ
}É Ðì˜+hÌT°cn !Ç\aƒŽâ <æC€Û"l‹¸- ·H€Û"l‹œ!3“ŸA“ŸAó’Oè˜0)gÈ¬ägÈ¤ägÈœägÈ”ägÈŒägØ„ägØ|ägØtä<´ûÀdä>´ÿ¨TägÈLägÈDägÀ<ägÀ4ägÀ,ägÀ$ägÀägÐä:r“ƒ‚b!óŸ!ÓŸA³OèÈ%E¥Ð=C¦?Cf?ƒ&ŸÐk
K;~†Ì:~†L:~Î9>áCobÀŒã>x~àðÐS%•°dã:ô`ROè¨Lã3>òºË3~N3>áC-,ï6Çø4Åø6Ãøž,<*‡ð„d&¨äâgÈÜâgØÔâgØÌâgÈÄâgØ¼â<tnpYÅ'xp÷¡ô ˜Rü–Qü•Pü–Oü—Nü–Mü—L¼[“µ¯5:êJ<¡c¸´AÇ(Þ8FónÀ1WUŽ^8Fx1à(áÅÀCî¢7ÁC»4NNøÐþ£Œ“HÇPÆI¤‘ ã¤ÆFÎ	@‚Œ“JaÆIƒŽ\PqÒ€#—KQ*÷	¹¦ ­¬®)Ì89¡×fœ4èÀ5E'8ö4N|˜qrÂÏzª ¤fœœÐ¡dœœÐQÆÉyÝÆ'<Ð89áC-L£oÐ±Géó:veqÆIƒ…G#&t 3A'8ÖãŒ“ºgPÆIŽ3NNðÐ¹Á''xp÷¡ô hœÄ½°…=°Å½¯>¯Å½®>®B qRƒÃöuˆ4NNè.mÐ1ŠwŽÑ¼pÌUÕ€c„Ž^8Jx1ðÐ£„»èMðÐî“>´ÿ(ã¤Ò1”qRƒi$È8©±‘s$ ã¤Æ†’G˜qÒ #dœ4àÈ%ÅÒD”Ê}BG®)H+kÀk
3NNèÀ5…':pMQÆIŽ½‡“fœœðÁó‡‡ž*(©„''tèÁ''t”qrÆG^·qÆI4NNøÐcÓètlçQú|ƒŽ]YœqÒàcáQÆˆ	ÈLPÆI¤õ8ã¤‡î”qRãŒ“<tnpÆÉ	Ü}(=@'C˜q2D'C˜q2Ä'C˜q2Ä'åe#š¾Bš(MÀöø¢Ø%y«÷^¶RË/› iç—M€.µË&@ÂÎ²	È³l&ø,ÙÃ^·ÙÃPÏ­Vö0˜ñsÙœ*Â¡‹&àte]´€Ÿ%8ÑE™I-ìäâL¦Ë6ðË2Ÿ.›À/ø>è,ÌL°Õ~ÅQZåeðÇZ·Ú€¯8Îèºl¾â0ì²‰}Ü2‘ÆØe+8“ìV+{™±=5²‡³¸ò‹3Ønµ±‡ãˆ2Þnµ3án·‚W5 Í¹›FFÝ­VöpäqV‘eûÌ>²lcë4ü.[ÙG#0£ÏVp–3/›€ó qxÙÈöÌP¼ih.Þjd³4o5²—¡ì¢ É½‹4jtpça·	DÎ<H=mÐAªiƒº6t3è öfÐaœÍàcÏð>1ác€´ôM`G ³ït$QƒYõ4:’b¢ly:-Hr‰2Þip,±Ä™ì<tUQ†:ƒ]W0…„é†'xèÂ¢Ô‚¹°8+Ü\XœíÍÀ#fq3èàËÒÎfÀ™Ø¦ÐS„ÇÇ/,áÄYÒ&xì	CÙÏ&x˜éln z1Ì>ÒV65€=À8E°w¦ü5ðàåZÃL`|˜Æz‚Gr˜åË #i?ÐÞeð±;fåRè@×„ YkÂG K°v,Ø«È³µÇmíQ[{\ØÖ·•ößÃ#mþÀ¨uu.¾¯õ‹úûç—¼îÚóª½ùŽ¿êäÙXuÓW·LÖÉÕúD6‡™èå7öº£oÝOLïéZ'½Ÿ(6HúïNevjVÍ”êåŽÅvGÝ¡§‹r×põìoOµBh³¾­©ÆÓÓú¿ûõöõßjt«…?¿,Ûn%†¿X~¹ù©8–ôÑ|²‡«55H•¾Qe¹ý¿,š§z'~©¾åŸE—Ÿü¥iùŸ?¿Tð·Ô“¾j›{ìÍ?ç'2?íÇ•i¿?^ÑžWÅ¿}ó¾ÿðÍ_¢¢Ls·ŒSéÈ¼ÌŠ¢Lâ<é¸QJ/‰Ü4Ë!â4u:Qåy˜‘Œ\/ÿürjDµHÿ®Dwõ—¿­eó+5jóÐz»l›ÿÛÙïÄP5öÏm!»æÏ/§â\•OÞUëÆø—e)ûg‚°«Þ,oWkÑðT0àp"·@­R¬ªúÊnKÝêM?ÍÝÑ‹tdÿ@5Ç^Úa¿Å;ñ«ü‡ÝvÖ?¤úx`÷ãzÝvƒjø\TµÈjªÞµ+ÕâØT95§VÎ6«|ôç—Ë1ð˜Ì/Ý_ÞÒÆûÛûÍXÕEÕÛÿ«¾ÍÆãþçôCÛµÝñÿ:¾÷N§ª]ý—“aX¿zùr¹ÐK³k^þù%ÿÈ…†jE«j>a…Iê¦é7vÆM™¯â0ôb³'úêw9õøß¾	'ôiKTM?ˆº–T#	’0v¾±yãQKôEèycª×m.xxöI'Ëûæ½ê_^ÛÍ‡Ó¶<ÔòHoç#>h:.óÑ¬+š‹^þåÝû÷ïô›¾Ù”9—MÑN³©™¯6eŽ»v\ÿåõzMÕUWû—ïÇ¬®ú“ª9Öut‘M5W'm?üEp/£àÐñVY{y´Y]sSrS»oÇ.—ôi>Ò×ßw9\ClŠo N¤ ½{Ø‰†ˆ­D7ÐÒDNB”¨¡%ñbÏÛð›ÙÍ-bCÍÇb¥N…Z”£v(òƒÂÁâ$	D¯·NÀãÉ»Iqô‡a¥}ïütÙzÈ‹¡†2ð½Àõé—æA™»¾Ì=ÇqBáçNéÄ‰ŸÆI˜Ë Œ“8Š"Ï~Pˆ2Ž‚<¹…¡¾‰È_*–W·ÍñÀüèvúšH<Ía¹ÌÛ˜ÛØCÛÖýKŸh‹¦˜þçÈþõDê:–`Ò)¹°=MQpäºÌQç–Ÿ¯£yÝ•×yô«ëmñ:ßqÝ$Zð:ß!‰'Ø•×™ö•Ù=(³ƒès˜YŒ£~¸zx&gÀQ¸06‡é÷öî4F÷|CŽÔ¢?Øö:}ÎxÓlíŸ5^®ª>$Î˜¡[~žÊ2MÊ²LC"Þ"ÊÒ¬è
êIê$~º2÷³"â«¨dT:Iã4Ò[8ãÏ4"Y×¢‘íØfg&ƒ.rÈoç’f>¦âO‡§¹»ò´Às#g‹¥¡ŽFÒEíÌÐÔ||?SÌ'·¿kW¢j¾2¶mÆatÆ&²~ÈÚöô(¯û×,g’ÈÊ ;x•©‹`ÉÏó¶É;"‰pBëOrÑy©Ä1­|Á®‰\õIYUÃšØ|8!Š²^ÓA©.1´ë\¬öy—ÉËª‰žŠ&c$¸/ƒþ2áMt¸ÚAp#5´Í.sQç»”“cMo‡‚ÇXŸTùå.eWâTVÅnE«¦ÚºÚˆ¨è.%×«»w(ùpê¡/DGq(êáð˜–v=<’<šË"I&âBä¥,s/‘$žúyIÅ¾ã9Qø©ïÈ‚„Ô8ëæ¢(=·ðÒÐ½E}O¤¨¤-6²IcÇãJ²„=Ö¾W¶èm=ÿä›Ìrê(þIÓ¥ËjSÈÏ?ýzh$«Â^µÅXK­ìÅú°ÖÝ iÉº¹'UóQgÞ|øîå¿ü}Ù©çþ«›\‰`vÑ²¢ˆ:`ZäO$ó,-$¬Ÿ…­;o]tIJ—t"Î¥M\»¯ú:Àfœ+¡ˆc±@ÛqWméú»Bú%oWYÜwb–¼²¸¸ÉRw#/öv•Å·ŽÈˆä´S¾
â×q×¿¿ ~mEœÏo¯7J!„ÃMûöq”C/Ç¾{™UÍËµìê}±Ãûë„nŸª½k†FQžGtE(Ó0KóÔ÷’ÂweE’„edôMêg©/ü0N£2¡zEY¸‰Lü “a*ü,·ðãªK©}xl’þSåý!õÆ[llÿUß²¿kûˆžIe'‘Ì†Ky11²ž$Úð<iŸÊ®‘5Z,þZ¬zå-À<?(ãË¬©b™Iâ«ÔCÅì”ýTmê'÷R6ÇÄìŸ”Ð6õ•½’¢!R\Žõ$ èÑvÒœÞ"¦;ˆŠ-¦@¨â«‘nºªOEK½hÚÁ–—'UVô%mXy1³QWÃ•6•jNEÇîîD{N“y£{„5ï¿–~«æ!ÛÄðsÉÅ¯7]ÐYÊoZž¡µþ®±–«§6Q/ŽŸ¤îl‰rýðšÚÎs/q²	Ž¿³âny|¿Ðe»GþWášI*u>Ç$µ\Œr`Ù(ÀFpÃÑx<[•dzÏ[zÅåºöw)Èè„uÃ;”¥‰ X„Ù«’às¤¢[ì1„¢*ëË‘$éBéçQ,¤–a•¥›ÇnèE±çÅÄBDéfYgYGa”äaç‘Ì„/ÊÜo‡^E¥¹9‹
öæno„V"ïZÖ wbµ¢ÑÝá©©çH+%ò–˜™‚cYˆáµž g_ËI@9–ìDmMðÌÃ•P‘M¡u
¼£
’n”&a‚ þ±^Ó×J$zÛ6ÔÑAK.JÙVC(å#iÌR»{ZUSHÖ1³þzhPží,B8Aän;n)q¬¥ãfèøñä7¸“AùÂÃïß{ú*:l‹iŸ¥kàÕ@°t^d 3ø^omÏGcàí?rÃø¶CY·¢x$–dEÇ!]•â¢‹2—eðk…T¸aèï#š(ý¼(£ˆc^I‘Çyyž9Að©Ç
Ïxl²{¦øÅûšîÌ6³Cæ1êN½›v@íÚhúíFÉÈ/ç&~ »¸­›±ùZk™íX0ËÚæj…`ºˆÓÅ™ß*P­>YªOJpÑv§ÄdFÝ¼fhê«'ÄÚ’]Y[âºÞµ7	¡ç‡1_ð6/’dgOÍyç~åoËßü4MœÏºO’Õ´Z4ÃQÞ<øó„EC¨¸Ç!fUb©˜¾_?rðþ?¶•{4~âª|¿û÷—H»›v—èT¹i_ì ËÜ+|ž€Ä<€X×_æå] ³‡(þùKE)úx]ŒºL¢F\ŒÊ'(]Y
OÆ…GÓ8õK'	7¢€)·Œ¼Â-ó,$ëú~è‹Ü-CÏ¢Û~½n¦¸Sk m.$ÇØòrà+y1¿6¡›ùº(¹À¨œX‘ ¸¨%W™,¸¨¢kbL#¿¾´íÓiþ—Ì‡gìžP5V›ñ_4ïÜâ 4|Ø¹ñ–3%nåmSVÇc§Ôç¢«„ÖœuqBn‹aã0¡œ¶,eÇ}(Ú‹æBtÅl¹©´©D÷Æ"á­·'3ÆsÉßýá0yÁcªHÂ+h%Æz yg=4uTŒ@µXõ–êõc>ûù$N¾0/kŸ³ÀšµÃ‰M»jPÂáÂ\òBÉˆýI;Ö™šV™VNh@›…è‡ª®µiò\Öíš­Gßª.ök™WåäCrBÏ$Í[!óZt¼Êÿ€¼úKgi”° '‚áJ™wHv]w‚V"—ÜÑÓþÅÓ‘QÝ,8^èÞ(£F‘ã:þöc"Ïõœ4Ùrø ¯ÜØî!¦2ë¿.£i²ð?@D¥Ž:Þ“Oç3ÅS^ˆÉŒ©}¤û#ú! ì<Zi„hÃì+*Pº{ø>/Ÿóf‚‡žëå9†ÎÌcÉ¼,õ';„÷˜JÞ^"o;9Ûéw@#)´¨úöÈ{þâydÕp—½(ýã»ŸÞ¼ý§wä…»U<Îóö\×Ý±¥E…ß¾ý§ä|V½àÈÙ¹æj­ê9;öpº!p¥hÇ:«Ï(|ï¹^­ËŽ«;¶³nŽÝH}×ž-k¼ÿåG7úçŽs¼n‰JÕ»8Ù±±~(ò?ýé>·¬ñöÿxýæ§ºGþýëª™ÿÇ?hó_TùÈÛqzô•7ô!Üq°¦Žÿ:ÿª†ûœýßïs|ÿ½Z:ª†¿K•n¨‹ç?þò÷þõõ‡¿îft?"ÿ/üùj‡B;UZÆŸÚAÕÐŒÃÉ!MÚÃª%Ö¬ÖÞ¡Üî‘¢.I¢:dé¾ß¡ü$çb¸«»4îü¡K®o˜‡Ñ\—¾X;r]`x ÍHq^MšŒI'r“ö„Žï'ËìR ôï(¢)Å'ì€‘²h—2ùÃ©Š’ð‘lnEâqáyàx‚î²"Î³Lä±ë¦A”å²ÌòH$’þˆÂ-b7ô¯È\ßËâÒ‹²[”EFÁ#êJôré|²£®]mÉ¬Ã¶ÖhÝU«ŠÕ=K\ëÜ9JÂ?=!eÃÎ¾nÇ×bn%¬~Ø<-‰~	~=C~\ò°^¢®ë}®®!	Qö)ŽÂz’ ú½½ûÿÀ¾$OÀ#8“sØ#1¶Øsó(ð
Aœ+“"WfqZº²HÝ¨…ãPTNœSI7aBr<•‹8b˜›u‰¾Ê©Gš€Ø+ÑÐL°&}é`ÉÒæÝŒÎ8.Î|.S°¥ÈY£^ÉÝ5­…»æÁô,cî±‰'cQäJ6¹œžgôGöûÉEtò•½Y C1Ý+›ÿ[e¬Ùß }k-Šåù½²éeèP&eÑ%¢6”¼²¶&ö‰¬×Ôý­’ÚWæÕÂ›T¹Ï—Øj›bUÒVAmŸø¸õUžQÓÔ5dN{m€êU!õ uS°“Ç„¸˜¼¶´è;~ÁÚõ:„­U]ò“šZã[{ ¾~>6‚˜^#‹Ìù9¢glUXdí¹rñi$}Û_´íú	‰+ñîqÖüôZœ5/¦“¶õº%N½ð¯[¦ù™_Ôuîï¤úü…€„Ö¸F^àm(z„nEÓ4t+DåàMª‹n‡é0¸ ø­ã¡£±"8 ï×iúc¾É’;½ÇªJ£Ç½×3«­cþ„_[Ý´û¾pôœ|U<Ö[« L“@$a&“0÷#'/Ò Eì{yZ8¥Èò¨ôd&ó2
×Ï‡Ãæ‡…ÈŠ¤ˆ¥s‡GT#/ìßÔðL¼“é_Q_’Úžwò]+8è‰zA¥~¼§LÜØÂ}qRå*t>K¨ÖoÜug*&/sÉád†;»¢üª:i±¯VÝ·º%ÙœW]Û¨kCýfº²üž¶‚µøû	…tñv×¼‘ÔÊRÒRóæÇ·ÔÅOâÃãOûü«æía5os‚‚ûÈ¯Ób@XÿŽÂE±}P¿·wÿ16þƒ>Ë`Ëõ8ˆ“ C?~îf~î±ç»E’û2N"éåÈýÀc™‡®H<§ŒJÇñ‰‡IáGù'b®©¡Ùí8°'­vô-Æ\ÎñB”JênåÛëé²½»uÛKû¤¢?™ÚsÌÝ‚.2´Ý·Š}æÌH9‹´8ÌÇpÑÎ¼Ê m?oËA6Sg
;»"ö:°£®^ÆAvv?§½¥ÓÐØC×–å‹»o;ó”Œ·T%M¬¥Ü§Íh¹)K3üœ¾Íä^˜˜-êÏ9Jî ƒi K÷•ßRo_ý&M½½ª5ý–»nÜ•{(k?^Â†?ªŠKUá@‡¸S“¥®ß¬=QÀÿ(ºÛm¿A˜8ŽsíUš—†ÁÖ£´$wð6Å/ð÷ý™0~ÒÇù‘‚'èòë¸Ÿ!l–Á°õ:ƒüAQ=ßGúËîoŠÙköa½4ïã‰ö¹‚ÏÍ]½æ¼ nÞ_æuó6x _¨…hu«gÐêôZ‰/‘äš²ùýÏ#)MdšD^T&až9N™%y”„ÂËRß¡ÿÇ…Ÿ
ß—E™—ãiœ‰2-<’ý¼¢ˆ“,óo‘åÛ$f¸MZ»±ðS‘-v~ñºŽ·­e¼ØY†r	gç,‹9ùªfx`ŸÏIÃ§×ãh%Ö’_C¯Ë ¿˜w†#9ü£ùàÜQtËEù!C¦ù;®~ºùXñÈ‚ÌwÊ<M
7â2CµÌÃRD¹ëe"öÊ, #úyÑE>õ¥O,"	#Ç·‘û_hDs0r=È[9±/XïÌúfþn-:»U}g„ÖEpÑY7Î°“Æû·Í$êç¯ü0•®¬c/‹©/¾/Ú¬goî­öº¹ü¨k]¹ù«Á¢ñ¹çgÆütœÑ–m;pÛô‘®ø4ä²£…ì-»Le¢åÎª/‹'—TÖówN*ëû¾›ló3ŸöŒ³•hÏsÒ`×Ød›eûÊÐXož|C›–¤9ŸàqÈ8í9¨ï×ÏÁSƒ~ãð÷¯CïÎÛþjõXiôJ™Æž¹nì'ždP„a–I™eQ,Ã²ðˆG'Qà¸te(}/£‹—[1]Ï’R·ñáŸ‰8KúÏöXÖÏzûÃÑ©º·ŸO£Õ¡&nç¾7ÖWu–&¹fËß]kåc×É&¿²{]C¨€U£ÕÅS±µbãUß+KÁÉI,Å4{ÓUöˆí‡nÌ‡‘Õ÷:‰
Ðñíµ2RÖVÞµ}Øëp¥ý·ÔîÐµM»¢ŽTÇÔÁçýØ°-7¶æì‚Cÿâ[Õ×³t£Iÿ½-*‘S9uŽñu[ßÚo¿WXZÉN%»^iâgÐy2tä‚j»Š:MŸÇé	4Ž¦ÑòŠã¬«_\õÛ=ÐŒ3¸– ¦´õZ›ÏÃå·/Ï•ÚýÅÓ&‚³öRé(Þ~ü%^ê.½I£„ŽÂî&x½¿@”øÛ~x÷ÝWab[˜HÂÏ3Âëå Ý8à†¼‡$Û›À‡ááƒâ«óþ¨,0¸C¹Bˆ„j6P¸@qÑïm:öx¢àòñø§Cxì.<îòÐÛ”Ù©ÙûèzvÌ=Ÿ¤ßÐÛ‡‘‰?Þû—ˆ‡“µø½}$‰Ø#äŸÄ¥Cr@ún)c§^ËØMGdNá”y&ŽS&™[:WøÒqó"·=QþA…Vã¬5Ú{d;MËæ'ö{ÎVP5íÝ.›ïivìŸ9ýØÆnÂ.Åªª¯XŽ|OÜúƒªa
ôc¥¼U,áén¶:Q)™8#‰Q	<³
iê“µiÀ¸›°¦}­CºÌ”Êo\sñ’–ÕÒ=Y(~]´™ÜˆŸ¼[ìçÅHöôéÐú‰dµ*_|ó¦­‹kNe8ZÝôÃ›Ñ¶)¸ÄÕ×~–”Y£F·-}­5÷À>®‰$™ßxŽÇ~$¡ñJEŸÛÊ0UQ­ók×™·íj=²?ÎÏ:Ò^Ý¶§$è«ü¦Ùž’LS/MãU“×c!u"¤õZv9‘ûÇNÊSº¶¬OD&9ž5®IÚ?ÑÒ}O7ö¡í½ÖêÐN5+ éWºNP“’K÷êm™U··áncÝeÍP=+5éº±•Êãùšot¢.ª²¤’¼¹ÕÛ6K;ÑÍ#oçrµ®h‹ò
•œÞôjvTâëˆÊ7ñ‚}û°Ôinœ/}&-Õ@7™þ_/¾dÊ¦Ôf9LH7u§Ti´XoË§º“œä˜˜9$§”oÆU&;‹FGýz{`ÿt`ÿr`ÿ?öhàÿæ®ÙÙ¼sUÛú”1Õ`¯iËì	ö«æïè„=£›ª|f÷+ÚŸ‡¹X÷úth/ëéø+/jŽü¨Îö¼iŸÓ†å‡‚„ÃásºKóøn‘¾ÃÜ­ç:ˆæDÇ'Z­¤V>õËó½î›²§Q
Û0¥Ââ]Àíp60“X¬êõCPZÕ§t¥ôw½R±$Û™:CŸÒKW.6¸î·qšÓ/.þ5´ø5G.ï³¼ºËu½Ê >¸ßhd`§½®p½®`½î`îp}ÆÍt‡™éßyãûüáµ#z v{Àuû
Øí+T·;à&ép›¤n’·IºøØís\·q{»ƒìíY.DáâÔ–~oËÊLöƒm?ñy$mŸ»^œÇ2J¢Â/Ê0ý"p£,±Húošy‘prº	Ä…eaé¸®qEnRÜ¦­û -q*é¬:úÆ(Ò®%þæ[î?ä'ãNstÃ[ë† Ù•ì¶QZµ¡/ËêÞ¾éÓFgr[¨ÏÔÅ	.lŽG$Í›ë¹éjÊìµHË 	ê‡eV©·WJ5¢aUÍµ$â:¦)«žeñSenãã*RtuEíN-luËš»ÈÕRôÃœ¿Ã9JÓ4d¥šé'¤"vO¯‡Ñ¶›Ðÿ’e£ÀOïñð[o¨¯lëÀ{Ÿ¸hZûšGá"™> ßÛ»ÿñb½üÜh—¤]b¸ˆUÏ„z§TÝ÷Hë=ÑúÝBÎ\îæòT^‹]öÈ’ÏG;à1$^¯Ç
3ã{Iâ§¾E,K×s¼(ˆ"'p2Y8…YPÆÂ‰â(”>‡—‘çfAœÆŽ'¥L½ôV×½…õFoÊ¥¥UÏ¿ËuÏLË2¢L/ù¹¹Šªlx™±¼i3‰lND“+#—%ÖkÔŸTœxT_&«‹9Â®[eFXˆIÚŽÃñ)¹'cƒG™ÑÝå·ï„ÎðÇFÙ(+ÑmD™Iü`Gym `s›–¹HäŠÊÖ5(™± –•±ÍCR>ý:9ù‘}Ã<¬Øìa’—ëŸØ ³e.[gUž­eþr3%­•Õ¥$Ë•ØÇ1ç œf’—%‰Ï5’æ¯S–Øþ•ý½VÉBšq4<˜‚ØYÇò£2"u]{ÑX'¢[·Äél9äGßÚÿišŸü!§š¿å-ÛÎÎìç¯þíÅ·ö÷¢¿²òNÎ¡µ9ŒÑ Ž•Ñ·ÿÖþpÒ^ðºÒ"è"ÚHÖ«¤³jŽH’ìØI1¢z‹Þ›.ÚS•%ö¤mOõÔ±ûn“nö·œ¦ŠþÓU—ö2Æ²äêðWÜ=ýø£WG?ntF³Ÿ9@ƒX¸LF¢ÛiÿÊZõP³q÷ÀfaÈA“¶ÐÔ,óâs¿–?}kñæé·úª"%k8°«k±¦:úÇ,ÄÛN¬8›=ÄRz}”£G-7ã,h¯ˆtãŠ	|”/íÖ@JŽë±{àV$%'ISg+ˆ¹“º÷©Õ}¡Lm»GþW¹z[®ŽâÏyé(Wëyò‡4‹A7'uP=‡#oˆž_;½w'0œd!›8ýNrûq'Ö'U¾“à¾³Ü~}÷?˜³# ¸üÍëºwI¿¸xLA?H³²,ó8sDá&Eâ&yD¡—Dœ-%uãØÏÂÀ‹Ê\D©t½ŒÃ]…Iœ¸©“x±¸MÐ¯ú\Öü…e8-dW$*t§öµ*mì'žÇ’0Të'/JšR“oÒ+ûpó|„å¨þdÞÎö–â,0)üPiåh¤.½hª¡êµÓÛß~uç4¶Fh³òÕ`ŸßREa?+Z[”ƒìžM-ð÷ÕŠ2‰EÓSYËtè[Õ5çªo“=Ku¬sUwL.ÉÙäIômŠZ=þ¡ªÅ…µ“Ÿ(
’|[gVUC`ù	³A5%q[3ûA]tÕ .6ê·g=¶ŸÝÌHBWÛ’ }ÈZÕŒ$•½é¦é½¢Ñ¥]T‚Cõ?¡˜ÁÎÑÝÝ(Šâkr<7SK7ê&nàì,É™ÓúÕêaä¤égä£…?g .ZEG ØÂ¿þª&ð‡ ‰ ë´ƒ AœèfFŠ&Ý(ì¬÷ðØÄ Ð=ó²âE˜+¡ç(\Ø…Óïm÷‡ô{¸ið{¿ÈU[ut#p"ÏK#?N$|'q]Yp ñ,”.]²(NÊHú"‰ŠÔOEáH/‘'Ó")©g¼9Â¼yšTV¹N<Ô´Í¡ùC«—ªêŒ_³|ÂñAM’×‚Ãéj÷‰åó£u+iy¶´æ¿>jò¢íN9µ”ìÔÓ}VüNûï²gê™‘ÍBfokQ¦ìÚ•²89ëÁ W¦S@%Žå¡QœªV/8gÝH.§~çÇ:'bM‚Á¡)DpùIËöÆgKÕ=z8i`£=¾"™Ën/»ôqÐí˜çGGÏ–ž&õbc+àP96¹~ôÂi­¨»ªcÃIÕé?ùF¤Â¯ÛµºKL	~ÝÃêyºÕ¦ótiÐ˜MLËãÐš™®¯¦ŒR´ð}ßæ•
¹»VÔXØç¥U}kÊcóƒ‰‚´.T5ýêŽÀî-ôïý:\HÉ¯wØÓCÎªx³M†^Öå‘ýü×m\I¯ø©[;r¶¹-õˆJ©ÏÕë¬¦åÜ[BÅî£Z4¶öß{6#\œ´tÏìO&COØ	mÃŽ.ÓdèðÄóüðEã,ÏÏà–{ùÀ¢ëìXz±$—8)«Ë›Ïó5‰í8*	Û‹#‹ƒTØ'í¿—:ÐÏËtàŠaKå?wQäÃ8¯‰™oÝÂö’Uj9¨ò@×r¬¾àééÆ†g–öþÑ£yBWÆÃúnúñvF° q|7ö—!'u½¯Œj6¾zÓ<pääð3.Œ´®s”×íÃËÕ„ìÂ=r CŽQÈl½…ìÃúìG(ä A!G°ÙHQÀŠ÷bnäšYæu€VÒ
ææ¬úA…Ýš}^2ùÿ		â©äªr]”ë,ø˜:€sÿ€AÜ0}OÉo’Ìõáú‚ïý^æÌì»¥ø¢Œ½Ð"Ç÷³"ÌÒ/¢ ò}*Wx©Wøpãì¶ŒÓ¯'‡·k×WemûD&93ÚÄ©qú[U‡¢>né*u²ªò)Ìœý˜ƒ–pÔ9k;UÃJ¬M¸¿åµÇ¡d§rUóefÔOX&]¶hTs¡$™ô˜~+ä9	å/´>A‡L r¿­˜"ŽrŽSÉ²uë&Ž¹Îª×Ý Ð-R˜x%VA;8TÄaAeãÑÚÇ×ë´³ÜÁpË%ãÛú>×ñU¦¶Wå…ß"*‚º
WöMä	8ç½O=ßPþ“ÆGÓôQn‚~¤Oìf¢¶¼P
‡e+³áVU7‰¾iÿ½‡“g½ý³ÙíJíÃ—þªŸJU½¹…«€¢PBí÷K±Z×
…oÓ¼‹Ø¡òðÐªÛ\ MœãµN¹db¡P_çvõÛk£ò¡éx2wÖð£ ·¥ûñ¢$¸ve£˜ï§›k»þÎI¬'ÚóÙ~ÔÍô³1p¦qô¯?òÕª<ªšêá%Cì
`Çkéë
‰}y…Bç¿PØ=x]‹ª ÷Þª$Q€=Ó,.,Ý¦ß[ØÐ|X1?_ž­êÓQ?×*o;©RÄï€VWÙOo¿ß9ýÿðó}JÿÃuïU\=Û½ü½ówQ$Ù×>r›Ü<žk‰ÁDb°›Çåð"ö½*ïÊßu÷‡¿Šyì^4Èº=~¬ˆšašºy Y
'+Dš9!ÝMÝ²È8ckáÇ]e]?NEènäy®ç:ÒOJW„nPÞöPM½þáPs|©àáÒsºÈKÎÇJ—úB‡´›¯KŸÐ	¼·Ø~©R§lñcÃÝªx5yªªbª2G9”Êž§¯[Ök¢TW`e¬ãrÓ»~Æ{Bþ›áÎÉY\'BïÚCœÀ»ö'Lâó˜š­úÕ÷°/ÛCçžÁïâW×:ñIE¶^8"[ƒ£pYøo;ŠR€~lïüÇSPßçIù}ž¦üÑ(ß0ÿ¡S&¶ôX:å°òBÊ$Ë“¸“<%N]d¡›ä…Eq%ž(ã´(„/s·ðÏ)rŽ8AéßæWöz+ØL[n”‰ÌõÃ`âÀfKÝÁÀ¹·f†ÉŠâšèÝÈs:¿‘V>/Ë6yÛ-º2äŠWËü¤Ñù×ëzì‡NSy~ÝOSÖnR	4{N›ºûá?<°;õl—[kêÖ…–TJ>!ž}ôºöVeeøÑµp5¡'~âme'÷‚{ä\3ûúô•ï~|ÿîÜ{¼gOOcùáç¼«-;)åØµG[t_—ŽˆÜG+_–G²É*W­¯ƒ¨siÉÛòˆ> {øZÉ1d!ºÅaŸ¡aÝÎNa³MÐ»BÃºw¶Iò®BÃº}r›mÝÀ°‘SÒ;Û&
×mà|w¸ùnrØþ&hlrØ6!hX·×5l¶	ØmØl4¬ÛýUwŒ¹ˆhH¯‡l4l²‡l4¬Û¿ç+öÐiû"[èÀ÷ÉÃq]8®òïëß‹î°ãçi½, ÇóZ4ŸFç„Âø›l°ï$îq:fr¶°ÑN- EØÆÏÿÃ,ôç›}ØËBT]ËžÞŽn&Ç«5w'áÊ²)<ù‰xGáŽõÖeÇUƒÛYW—+Ñ*¿Ÿ]¿nŽÝHM×®£YÖxÿËnôOg·Š¿«Jÿ¿uÿqQþ?Ñ‘¬~÷%y#µx w¥â¼ÚÕúNŸ$¥È¾«„6^>€ËRùˆK¾ô¼ÐMã$)ó8(J·(88´§.C)D˜‹XúyRJá¦‘/
¯Œc×KRWä·˜AM<éEP<6rb`í¾ô‰'6ºúüòŸƒ@sUõ¦RÆ7'_§äü˜B&•—%KO¨É¢a3¦ó?™zÂ¯;žé§›l$[ÝT	ILîÎ)8÷Ó1sÆîÎI9¢Øs·]—¼(HÓe*îw®üê¸ôàŽK‘ç}FÖN½·À£B~ø(kfû`PaR,¢ÏËÃô‡oõñÐ÷î†¤»pÓëÖ=±à(,‹<Ì‚RÆ¢ŒˆÍEäÈ(ðÝÔqÊ0sË8pË<Ã(sœÂ÷\é%^ì{ôY–²¼-æíäŸ33Ã;Ÿ´öæ½¤}ÁÏµOâ™›×WšÅ(~ÎþÅíEc­™ìæ“[ÑëAÇ‡%òÆq†”«°Iþì½f¶Ï><SmX¢(8g€ÊV¡£÷Ø³Ó“ês¾‰;”)'æN½›Ôqœm»ê¸jtX ¾©ÛÏÛ’kw½|Á4ç!h²¬â8]©·¥v_qöLÊF:Á‰¸Ÿ4`4¯‹–zÀ1Ãl×Ò;M½£ykÿµ•§œPì	IÞÎ½#ú}K0ðSë­fà'»§óÞœ¥/÷µæÇÿŒC¼®IÌÐ	9…!g%pB
 v_CÁqkÙ×˜Õ4’/À*°$d@h¬¨ŠèýGTþÑ„Ö}¨êNÀýh®ö/å6eÿXIÜRf¥…“ù¥„nè“dfa”úI%É¸ŽëEqTIVdnžiš¥¼EÀÄ…úÆnë‚„§•Ð1\×‚%aÛI—ó‰Gs:vå”ƒÐ/Ú9Ê(gz0MØbVP­5u@ÅÐ¤"¶éÆ¬„Ò	àHhü?¢i¨™¿rA"ÆHbó¡eººjo¡¾ßÍÒú…ÄWa¿©êZ\è‘Ía7µT½TÁ±„½Rõ–¯Å¹¨Ô û¼&J‹*wÈ©r/§.=!	×ß=!­£Ä¨­¬nÄ‰I‚Ù½|!—ÒWÝ×Ãê¾âû>Úc	ÀEˆò«\:"É C÷=ÙœZŒ6ðªìÄ)¢×ãÕq;œ`Ù^€Aî/D†QŽ2}Á â$N@Ÿ—Ôö©ýhèû9DÛ#½ÐŒ‹<ÉJ/!i1Ž\‡Í’…ô¥"p½ `Ãeén'Ìb/Èc/Nó Šº‡§þ-bã-©,§SbÚMÎßIUx»øúZ.0
Pã˜ànS
UóÂrñHó	‰Pñ®¯$]ZF/Ø¡¼(
–o$=ßsï¡'ämõ5 Û ÷œû?4ëðð¬F­.Ê[Ñç2Ô“ïËgæ‹ÜßžN ¥Ïe«»Mî}\­ žV¯ó9.—C[œWw¸%q‰õéÝˆåÞéú4ÜñëúthïŠæD¶ð¿@ú¨ò®Õ`ãå+‹,ŒÝ2wDâ¹lŠõ’²Èó´Hý(OË ôãÂuÓØID8QâqøN”É­1š,©[ÛWù‘0B›¦è¹?­	A%Ö²+µ¬ñ‰€Äf>çl:Â8.UÍ@"×ú$NÝÂ³z¸hÅ’:·<§bQ:#eT¥z:–„RZ­‹’ÁX©¶0›²îÈâpÅâXY‹©…È©Ü»‘Ûe¯ØžK…hÄ4Îúê€óu"§nqÝ¡û)ç’²ÑÊKºÅö*)R9v{B%üQ	ì‹ý`"kXjdmWÌq­TÐã¢¨t!ûTvœFÅè5‹8Î‰lÄ ”]Æ4mj?gãï)}z¡ÂxV[N½T©dDCk•Ž|,8cRg÷’Å@w]ÑøÇÎ¤bKºÔ›Ê–`ACOPN# ¹Ð@½Tg¥3A›	[/‘µX#êúšÚšÃ=kõ].°¹¬Ž©=e«‡ù¨ŽO†C:x¼§ôÜÖòRe‘ºWGö•j;þ—µ8&ó³y©IœWÍ^¬ÚD&Í9°ôªØ*â—Š3ýÃÖ¢ê¼VZÖ6›ŠŠêZ:5Ô´“/*š‰Œ3ü”b¬	¢QSvmËl€«R›õyRzQÊZ³==óÜò‘ýšz^ïyÕ¬k£Øôè€ßÖ7l>{Þ|ÖróÑfÓÙmCøh°Gö»­=Ç
ØY÷zó¤¨@Ý¢¦J´m‰,Ndý¿›í+ŸL)zY»l–½Xm5”e¢-ŽÞÍ)ŠÕ.Ø>Ü}ZÅU¥³—-ÕÈ´C­VÅ„ÙŽ§s­I‚ºÅn”^w‹t"ßñƒåÅ†húœöÓ7›‰e}Õ?ìý&úœŒ¼‹‚I–2¯¶ÉMÉ;7B¤ßˆ_mã(/è•ßÿ«ú?½Ãt8|Ç¡Á~né4ÿÑ]Fµó^ÔÜRûŽþ[Žá0#r‡‚®QÐùªCAË±ÄA{ÝµÕãà{ôª8è}›µ(`Ð+½"A=¬PÐã1ú÷µØé3@‚z~M¨¼xµ§òê\ÔO<¬ìó´w›eÓ_ÑÕ¥~$¥a™‡Q(‹"p×)eèÄaéû^âae^a‘Å¥LBºñ$®ðéEi¹i,/rn{Í±Ì®hÏaeõó„Ÿ«††ó¾kï*Û|ÐUUNð-±ªøÆ?»•êÑÅØ+¥’•·Í¿Ljn­WX6iS›öóÉslîÆtÓ~qd½®•PéÍJ£˜d}ÉëŸ?lg=×]Ò‰Ï&%Ô·VG¿WJ«’s>pÞ<€Yq¢ooµ­Å=µnì“Öªh-·µÁª;k!˜UW*aÛòý‡I‡6©ëX‰²îä	+BX1j%“’¦êÊ´ÿš•I‹×+Ë/+ãëGn‹:¬ßÐè2S"1UŠõ™ÚÙP©b:Ùˆªï«eÛÎÊD×žÔ]}ûW4¨Bò[O©KV+¨4ŒZ ­Tê>•f\V:öoËIÅÎ;®ÿNªF?šŸM—
nü×j%ûo¹1ýiÃ‰àiluÛžÚÇm«óžÙDÆùÞæõÍ¼6ÖrFfÝ&'Kß˜éEs¥—¸Ý'Ö‹¬'-ûù¢/tfxVœ7ÒD%lQ²J“7áZüÞZÛÓSÐ¸y2¸4´†OGÏíüÆ'qS?Ù¶ßG^ê¤ž»ÐsE>Ñ<ç¤lfú¾@Í¥tR¹ý]»Rïì¿ê»–áŽã Žî¯ïšÈûá›¶æ§(íððZœëm ^vl·áía~!~!~~~1~1~	~˜Wa[M¤øQ`ÞŸMM@âÒÍàmöf`î f`ž€eXN€eXú%ýXª%øXZ%óX
ÿzvY¯5âí¡‘pmD{h#ÞCÉÚH±m@2½Ìèèc>àÃ >à# ÞýØÿfdûÍ>Èö›=í7{ Ûoö@¶ßìl¿ÙÙ~%ÛoÐÇ}"À‡|ÀG ¼û±ÿí>ÈöÛ}í·{ Ûo÷@¶ßîl¿ÝÙ~»²ýJ¶ß¢úD€ø€ x÷c7þwû Ûßíƒl·²ýÝÈöw{ Ûßíl·²ý”l‡>è>às >àÝÝøßïƒl¿²ýýÈö÷{ Ûßïl¿²ýýÈö÷P²ý=úX Oø0€Ïø€w?vãÿ°²ýÃ>Èö{ Û?ìlÿ°²ýÃÈö{ Û?@Éöèc>àÃ >à# ÞýØÿadûÃ>Èö‡=í{ Ûö@¶?ìlØÙþ %ÛÐÇ}"À‡|ÀG ¼û!~æ„Â…=‡Æô{ûé×ã=†«žìíðú¹UÔòJÒÿ~Ëùpo¬?™øw¸_„K·pùo¶oZÍ½?Ù^‹î„Ê=Ò“í"Ž“"NÂ¼â$£ÜÃ¬òÐËeâû™—Ä"ðsÇ“Q™ºQâ©ˆ‚2a,3?·<Ù~­^×Š®UhÃnÉ˜ÇüÌ˜
WýŽD¸?ñãUR\‡ã‡Á@õhw©ÞùZœ‹ßŽöüJY…£¶M¦½‹®åW°ªüzÔïú¨5‰¨øÖ“Ö4ˆýeBÛ4r‚óÙšøÏY|ÿîO__±ngõÝÏIZ7-âéÓ¼Ò(\GÇô{{÷ÿ!³,Ü4øý3À¡]å#ñ?Gæ¹ëø2ýØsS'Ëdä–¢p¤ŸeXH/ý¥Eš–~ê×sƒR†yá{ÞÂÿVk)1´öûï~8°MðÒ9Ã«	lËi¹òZÅs½;À±™"[k-15"9M!ê¶Q1p§ÉQÑ@¦Æ-Õø8gdàø‡ÿ—
ÝAìl Ìú#›#Q\éð©ÄPÚÓaëŽo²Ã«à'‹ðŒŒo½múm˜ M°^Q¥k¢‘’"O1}i«¸Æ¦Þ}%uÀ¹È81mO,°ÓhùCkëð®ö;žÝi­Çºf¸•âö*æsE3%©š6Ñu'"“äx"SX–¤‡“–ƒ_4í0±ØeíåÐª)±U*Ñ„æåí¯¯ÑNÞµýK=1/§	|BâF²«¸Åœ l)n¸a„áBÞpÃ(vvÎ€¡wó×(±*oÄ~ðYÄÌZÑg€¸¡°A°°^om|lÏI’Qùúâ®„;ú;•¼£ÄœOAvõåò¶“ãPÕý­2Ôó·*¢Ò]Uì¢”¯^½!a‹¿üdñ%MüðêÕ;ºV~²p?tU~g.‘{jF3Ãëzññž{øÒ‡Ìræ$çx¬l²ä…#¢ØÏò(N˜ú¾§y^xQVfE…9~g™gž—•q˜Ž§©¼Ûìý§I‚ º)á+' øYp¶0ûC~Òqpæ»2ƒ™Ü±sŒ»;`¾UÕ&•˜¥âÈU½N2›“(5¸C{@2Ô©Ušˆê’d@V¿Óô~kZ’fõª—õ§“ØÄô'ÑO^Ê|$¡O•°• ¤3¿rÞ){AèÄùo‡¸8!A‘J©ü´:®•_¯©?$g2Æj¬‡jhóƒ9k-P'Ú ¾s>]©ÓðZªèZ%Ù­ÇUÃ£`âUW+Oòˆ»Óc­¦Oô–þ½jhâ¿Uâû¡Ý‰ãcYp•©´þÆfUî”L£½˜s~Ð,?!Ù3Ý9ƒ­ëR…h;OA˜D¾·TwÑ7i2%û´üù5íC‹žégl›Ž9$ÊÏD€à'&Ú¾!%ð‰Ð@À'’„Ñ]>|VX\FXL6ØGÌû¼lÛaUõù.ÆÄª$æ×ìRRíõ¼Ý%´ósb\ÌIžxèGNYËóY´ý¹ˆe’„y.œÒIÂÂ
?õ“¨2Ý²(SÇIDežd¾#S7)#ßMb'eä•·šë¶]s4_‹Œµw?’@F×(ï™Žå²ßÌ<MÂÞ”?êBôvÛUÇœž®¾Ú„âÝJ’«þóþÃ¯ÔüidÿÀbéáº­ÖWÒoltÌYÆTÊN•íRç•RÍ«ápÞ1IêlµýrXt—ªÓ6ä^ØB‹
&<ó¬ˆ	Â®+’“§>±ž´XHU]Uiï8‰VémIò›êÅRG¦ÎÎ©«üÈ÷·ÍŸn§¼m7úÈ Mw7€êÝðU(|Xûg$÷
ÍZà$+Â†è:56&¨@z½u¨þfÕÆþ(¢@×^<’,%Òsœ ÷¼,qâØ‘qˆÈ—qé
×/%çƒp!BGäiœø¡H"ŠÄ”d‡[d·dCÞ ²±Ëºî9j£$Ìª÷~EK¹àD°sQÝ*ËžNª¤Œmé,trK»U5Y°8iU^™ôòîýMÃ95Eý'àì¥
ÜÏìßÚ°w»¨XœœBuæÓYu\ðMéoè*2ÎéúK‹)KcêÐÚ¢8Í ³†ÎoÓÊëÙyBÞÝÙàèG‰ãlÇìwÓ€J/Bö{®“î±ßLÉWÿ°,>
‚û³øi“Cxüthpm#Œ‚Ã€£p¡2ÄÃ÷{ûÜþa¥ˆëƒß·A-«²G"dâ9…~R’tà‹Øuœ(vEìn&3/OÓ°tB?Èe)|?%ÉAúYš¥ÒK£(Hå-BÄS6pY]é,ãWSò¢ÛÅ†÷›ìòtþ§”ÕbNÚîðJ’8Â\»W™äläÄ‰èß&—œ,©·Lv’QˆƒrÄUÎìeviÐg«[Äå¬¹i3Ïs*tíÖö›*cÓ˜ê˜Éd/:©ìjÄmæÛz9ÙâÄ©±é¯{lúnPŸD–qšm-ªlÏ†¥3TŒ9u;»2©ÜM,9±šeºÖ&“ÖÍÝxB¢‰·s>¡(¾nŽŠÜ$ŠümÑ$twMš­§â«`ò ‚I~NÆlZõDv0[!9hh*Jj€ôyy þˆÃCß»¼çCÛÖåã{‰ï„L…ç	…®L’Àuã¤ÇR_dQ\d¥W¤[ˆ°E
¯Ìˆˆ¸Üj‚Øøª0ë=fóƒ¨7..Ì¼•×ËÝZ‡_Þ¾U³3ùÊ°_ña’
8§ßÚÔñ‹
Kƒÿ­.ªÒ6²»¶R;&d]@'wÔø–Öa°@ Z%\ö¯Ñn-:£¤qvÑ‰ ÅÒþÀÉµƒÌ… Ù1EùªïîGµkÍÜžW´ÞU>ûæXù	QgÝˆ® %#þÆd1ÔÒŽùù{óT+>tæÍ—rßV’Å4‡DÝÏI"nøwîÊÂ·…}ÇYÊP^ØmW¨¾6òÂ®å¹¬•ÀÄ6LjTªŸzª<$1 ¦Ytd©Úç›uÛªá=ë¿±ßÔ4#ö›VÉXmÍŽóübP5‰<ÜËHcÆÍ‡Û6±C.Äv#5Í,ü2¯VœéS{¤·š
Ê­¦")ð¢±ó®]Ûóœ³#újúæ£™*E“_Ùš/ª*%­ß`£%·oìUÕTúKZ›žóYê?”÷’h´­‰á•½k1QòràôžzŠÍãS½ˆµ*§)FIŠvZ­ÕÔ¨µ’u»–f-c¹ºœö+DÂŽý´fÝÝXK3½¼$ú!Â ó“¦:Íá y¬y'Q¸×G“$í\¬Í'ÚüÐbJYiHs¨ªÞøIöC'‡œ%ÍÏÓ!§ÍÃ‚lÛÉÕ¡2°-v_m”·—r¼ê¤àõaAˆojåjqÕŽ\G»nÑäŒÍá|QÚõ¡Ú¤Ó0ž\ìïì§å~oÆ¾ã'N˜.$cß	’ØÛÕOkâ%_…ã‡Ž}v½¿p¬8Ä”@! †`Àé<ÑªaÔ‚tî™aTŽÄí™cÀiW2Ä\xò<Ë ÍL®ø5œØ8S <³q¾4N
Ì1e|%•ÀÐé(ÁÀ7a9›Ãlƒ¯0þ¦­ä98KL0l-¢à‡ŒŒÅP–B1à-1 &M‚ð$#àçk,F	g„U.L‡é÷¶ ÿ¨Ñ’ŽwóE¾G\¥é*»KÙ5KÍÇOÜmùÆ…Ú¿êzÖg)“^8Q™ë$qìä~(=‘$y,’¸ˆr¯Ì<7
#QfEœˆ´ˆ½Àq$•ôÂTø·¨ÿþÿeÃ/Im?üF¿?ãÉØEcøZ=HSŠ+ÖòL^È¢·¿)HÊ;äG—\×"7z .ñºh3ù¬·h‡T9ØæqÝXYûÇ÷Ý‘vÀ‡ü„–<kÛSûy?fýPZ)ÈNNÅþE^ÜPuuöwT6#QíŽÚÿ-Öå\NUú¥ZecoÿÜ6­ýî¦š™®ù–îµ•V
Nuþ£¥»ýK›Þ\Ñ4ù+|ZVû šþ¦óDýUÖçì²-T­“AU‡Ö»»ª.£êñ2¿¡©¡>N¾=!Q™ß¾³–EE›ï§AÔUnÝ
¨'lª7ãþØDm†¸£ökö³¤ÞË“®‰ë¿u-ŠŠfüŽÊTHÐ—í‹'¤}
wÕ>ùa$ÎµˆXnè†[!±’hg—ð‰}‰õª§ eá½UOI76ùQY<¸DØ®jrB\òºÉ3HœR|þðùÏ7`]&hP§“Öi‚FuºÃu·ˆ	lqk[ÂxZrÜqÉû#Çm
Öé
Öeà©p¤Ô
GQ+ I­€g¦Â™ÖéÖeà™iqg¦ž™wfZà™ig¦…Ø|t¨ãL;/î¸t°ÓÒáK‡;+î¨àÖ¶„@™½ÃÉìPfïp2{“Ù;”ÌÞeö'³w@™½ÃÉìPfï€2{‡“Ù;˜ÌÞ¡dö(³w8™½ÊìNfï€2{”Ù;ÌSà=
™aWbÀEiðG˜Ÿ‘q´.34æŒ0ãÀˆ3Œ8ãÀ3Œ@MûˆÓ´@MûˆÓ´@µõˆS[+h A‰×#N%>Uâ#P%>âTâ#P¿<âôË#P¿<âôË#P¿<õË#N¿<âÔµ#L]ËÈ8ÒŠÒ0MðˆÓ8MðÓ@µêˆS«Ž@µêˆS«Ž@åˆÓQ*h 
h(ýçÔŽ@ýçˆÓŽ@eâˆS&Ž@eâˆS&Ž@eâT&Ž0eâì¨þÀ¸[NðŸýDâ(}Á“$)(æ‘Þ$¥®ãÉ0-'”aèæ’ãÚça’8‘¤O‰(Ý8Ž¢¸,¼À/ pÃÌó’(v|á¹®{Ë›¤Ÿš^v:½TÖIqjW¥Êv*›v<>±Íˆ?q™*«¨z•¢`ÆœâüT-ìcšÌÆ¢áw6µnàÈþIÅMéT8äëÍÛ™.¤T	,ÓéÂÑÚahWSÜnò€á`?k¹®9ê z€ ‹'ô %Ú9ÇA¸áv47rÜÐYæ8ˆÜ Þ5ò¼“¿SYþËC {Î†Ü}Línaój`ž"Oè0`ØcdPÏ¯G{Žü%i=â™ï3°÷w¾m'úê0OGâªü¸7(‹ÔÊ,/|f¤A’å®tK'ŽE^dŽãåT¤L³PJÎQTHÓ0‹$·pU×ó}®ò°¿ý¿ÿýÅœl\Ûd d¾&ªZÐœÜÎh751†§ÃÉâŸfüêr+}cË‡™^Â¬nG66OÉW>ö°|ŒßÏÞ›•C“%¿CîL]á°Ðz³÷¾‹£a¾_Žþe·ICáp¨/Ž?1»];·Si9·Wp*6â;çµè+(o‘¥Òu"b³¡ë„…“'Â§›¬’˜n³T¾ÌÊ¾ô’Ps±p¼ÌÍdA,ZÊ$¿…ß~óýØµk)ÕË9,þ_YÞ‘è?o¦¯óWsÊêœ®´|ëì¤bëòÀêäEWßO[ú±äØÀtUyö¦n™˜øž—á¿‡ü„3Z§ëwoÿÈ<Âþå×ŸÐ5Ùù‚ê„aâ%Û7ÔÐó]ÎÌ·¹¢†^’¸;3w³M¿²öeí›¸k$ªSY»GyÝ£À=$¸ÏZy
u¹«d	A&:à:„ÜB]²Aî„ºRbNŒ‡ì™ž£paZ(L¿·yÜ2?ÅMƒß·ú©ÍdWTò±ÂÌ9^ìæ'³ ð¼<Océº‘tŠÒóýÂóÅ™g‰›çNâfT<q’¢ð#×O\·LoÍPaRJ¨pü&D?f+–RU†ˆ¿Êê´µÿ6þ®<sz
8Ž3?M$îš}Ç±äDž³Æë[kÙYô·ì{“Bs+³Õûï~P²æ”8Aôy3¼²Ÿ©Ö”5â™þu}Âÿ5ç8T_e*±¶*Ê)ž‹£££ß„úç÷ú¯}xh“DmòF”c]ëä&!Ëôs²	‹ÚéOM~ŒW¶	£×Û¿™¯Ú¦¾âY:av'rÎCÀñ÷:K}QRqÕÛ!“Ç$¾Râ?	bU+ê5Çä›“	˜	´$í¡+*®«’€VœSÕ9;ùo¯‡ï›â»ój2®q.1"?áÙó¨õ‡žKêöÄO¨¯ì“¶=UÙÎÙìvÅ¢ ž:zã”?CŒ—\ìIU~JÿËrÊeªÓwµ¥ÊåuD%U+\+ãéC.êüÍïšïLlù[$?§ëIÎ`©´TcJ;nr“q
Sy™KÚš´,Ïz“Ä®+Ú°*ÁEFÿJÚ!…,«†“®Ñ æiÕiÜ1uÒ¨A‡:tFó¡í8#G¦‘ìlµæ»Ë+ûXüåJ¬mu™Ñ;"*£Z%†Óù88Œ_GÓ²È@aOßÚÏÛq¨©K/lìESý.æÔ°sRYêSGw•$Bzí^M9dúe®^¯
°¸?ëqàìí¶2›®DÞµ
Dò–kÚwÙIÛU¿sâ˜º¾:4y&¬ßØ€ªs“¨
'’:Û½š²wðñwU?ôÏhÐB§²¡"í…šnE—9B>Ÿ…¼¥KpÕh
«Êe4èyëèkðsÙ¿PégTõ¶n•±¾§Ý<çO±9¢ªd6û½Ôp›*mÿuOµi¡ùÏ]qx÷Ñ†$šÎi·JÚ!…žIõÑÒg€fŠÏÀÔ9³¤9¦!L›g:õ‡DÌ4íØlP“ÓŽ­Õß7Ç|Ñ£e-ªFè/²­;‘Íkg‰îX7c«¦•!®æxñ¾PÕÖýÐ®‹’ë5á£`M¿Øm£©T}¥*wÊWMž(8u‹º~É\ª2ÙÀû•ò÷¼­
Æ.éž:˜ä1ò’–O¥Aæmc’À‹}eÑÑt¾bÖŠH¡’ð¨ßxöøð”•¬}ÈtUy’x°Ô¯|‚[& &‡>±:m
Á´C§bŒr¢ÄD}ô—S¦£	U•×[ß„|> 9È\WÒ®}eéa(îA“2õ¿“´>:ñ–U™tHÞ^Ÿ¤9gM¯vóqS™4I\e.ºHDCmª¥k
E	/¼?OkŽµÕfQ_sI•ˆ¨%VûÊRüEª¨~Éu¹z¸¤ªÎe·!Æj/Z›u£ríqûj&:‡²a[Øüµ)±fÂB¤[”²¾²HŽ¯çR¶úÍ4yÅGŠ(Á5â©¾5y­-Mùe®ú9§ÔÌô'z¦ÓR›>ñé¥²-à¦§jG™%]f˜2éšrAÂ‚hþ5ªJ/'j¦¦iJÜc
3¤sBÔˆ{¸RÁkçn]¡D'Æ*:"ÍœˆáÄV}ždUáp“ˆsZA¥ß³fu•]îªuÜ­TÜvšZ 9×—"ôtÎO÷U„¨Å†sN*dõ•=ÇZ•ËLU[¹¦ª²èDÉeé3[Ÿ×ÄV?è2µ ceÍBÂ‚éjYp¶1æ#Íh®0êáXT}d;ã+Ú<­)ûnTÎNÓø©ãý”ªœ%µÊSc:•§îÜo”î•¢os§¸œúÎ”ÖMŸ«†·
ý¦¿ÝcNs!:Éìj.)T6/÷§ Èr°`MD©.o5M½…ÖgECR;WÆ¥ªòžÚ*‘7LìV6ÔCÙ¨ »…EÿœLMÿL?åmaDÍrÏkaÝ( éLÂcœžk®t*¯ú‰CYôÇá¹¨Gió×Ó>í™ Ññi87[Ï?Q¡7	p~¸ikš/¹:•µ5 ž*[W£¹Ôí’ DýÍ,âýf~Zž6M?Ñ+5ñ¯ìw´ÄöMÊ³MüêÙª5êÇ¡L^ÙÏ×¬2c)å…CŠ~&Ù\jî6£¿ÿúÃa²5ÕÔ°fˆ4Ã´xt™ii2HRã«ÅÌØÊ>Ÿht×ÈzbT&Éš¦ãÚ©L9‘Õ}k-wäj‘zWOßœh¿Ó”«írh¶m~MK­-³ÇøÆ\0s×GŒ%[u¤bƒÙ¨SªYÓT£áë»®©Ý«¦‰É‰ÃØ±—eTVûjÙÙ2‡w‚Nàv\åÄYd­I¢S2‚º‹éŸ³&–EœÂ>©hw²Šž…2Åäú«~+D“Øf#Ó/þLóh6„¥¿žÒÑwUÁç âIÚñŽ¿›önF‹Ëªr}…áŸ{IRý‡M%êïí‰^…q 3§Ú(JšZÎ×òÊù×4ÿYoX—¹ÒVº:]ïÕ‚\l‰?+ZÏIáY_`-ª¯Hø'¡’w÷Û¿½ãõýYtÿÎ÷ËRÏ‰þq[ZÕ½ÔLð9õÇbw•M¯›Ê»Gsä¨Ž°ï‡Žo®›ä½Jrõœä>Ù[šV™hËJéw×E·*ÓÇ„]ª›Â@wÅœvš&ê«E'‘¿$jbÊÈž4±Dú¨·µþb³Qõèy4ãr:2T¼65kT½øZn7…:Þöt°¦”z,ÑëïÔœ¶Å¼¸³ löÿ´N´I'q€¶|5Ëkú¬¨ª$(SG‰â2C×|Ä|· `k6Üç½ØºÅÐwÌŽ/”@s"X ‰9Ó‘ö3Ë å|Ý˜Œ–¨æ2¶8ædŸƒ¥˜Fo&—Äu?ye¦Pù
Ñ‰èèØ*
®ÎÉFˆaÕ1Ë±a‘CñÿWö¬wÒäGý<É|}/‰ÐˆîÊšÅZ2ºóõŒØ®‡ÖÜÒHŠÔ¿Ù-‰VôWMW’¨én7ËW4 ¢eÉÓIœŽ‰&‘LEù7}ÉËYäÑ³ÄÊ%ZËK¾[N÷ùE2Eûç½äÏ³ýLu@bO)ß95Áÿ÷¿ýüúðƒRX±¸ºITJÄEñì™Ìðd›‹³\Û¯é
S^)š"*-~êR›Åå3jétœÇ5D3ÝÈ@TJv'´+Ô¡±ã¼ÛÔ÷Öæ~®6®©3´ªü±9d\ƒgYC¶c­x¦5ñÉiøÍµøZ¨XàRšQlSÍ0S Ž©ÇâêcÌÚ¿M?.Y;}·ZOê/KO—fÏúVÍè“.ŒçŒöíš¥úùþF³ÁiˆžëìúÚG³¾Tn}P_~o–â­¾hZÜÔâÒ)LÝÙ¼ &•X;-¢ÚTƒÈFÚ›'´Úæ£¶hÑŽO³ÊÆŒË]2¥NÏ_±tdiéhÖåiZQ–$9#±²V|Î°;ëGN#Ôð×r}Ò6râ®ªì‰$"¥¿xÅj.ºåómYó#Nâa´z²ë¯{yÁÞð
¥#ú@² 4«²6loS(¿Ò#×äQ\´êö4»èëô²­¥eDêÑ¬ÉPYjUrU£'Y,ÙØLJ]bÒÔrß;¦y¬ªh×-“æ§322Å‘ý=«+õV´æeÅó5Vlé›ùE«gƒ•xGÅpi?Ÿ$Ëµ ôB…yæ¾U{ñˆ(ë»d‘‡èœšfã™ ©QÕë+wnš#9+#Tk
@ÍÒ{–ù,N¥ütü2Òý2Â0üÐÛö¸tý4]wété†ŽËvsÍ˜Œ&_]3Ò5Ãõ\'úŒçÆìrÈ*Ó¢\O}xw‡E=´MµM`<YŒ®m`ðÙð…71¸¶™ÀËj:T 9µ :R<OK$hŒýƒ®ÍìQÏÖPôé
ÊH&|ÌŽŸÑI‡5 <QOÿ*
¬sXïµi]ù	a6§i ºA·ÛÀÎð$˜º˜Ñ¨0ëlÌ‡ðÙƒ>ùf`Ðµ#{òùÀ o\B øti?ÔòÞ8¦@ÀgWºò~A+…[ûÚ`°ÛŽSM-`ÀÕ^VY3brÑ+4ò¶Ï¦	å‡„‚†þ“6ëÇìðX6lBB61ùã Û A³
Z9xÀ•_[»‰°µ—
<ßÆÚ)Æ…®=Ü èÆ#„ÍŽq(håÔG	Ú=yõÐµë§É«èÖÂ–ˆ€ÀÙã…Í °ûšnÐ ì1‡ /=9!{evó<Ä1þ¹ºq+… /üS1øVLîZ7y«¢Àù)©r½B¶ ž¼eAà“-¾–%]yO0ð“g/¼—šöƒB³“1~…Q}oûc›0NÅ°FØ!®½™Qè5]ûI£Ð‘šGãÁž<¹1è¿oH“W8|é>jbã_Ži`öA‡ÀO.ëpy(ú¼ªôƒdÈÝdj®ÞøÆYë}¾v½Ð¢»PtŠãÐž ×4ANz†Hð!{E(ðBæ‡«£)#øªo“$Lat`ÓlÓošØÃ(||¾	ØaØ4;s0B7·€_lüZã—¿Ò0f<· c=s)ª…Ó¶J;úJä*À’»ÚÆUWÕu…±R˜6ºv%T¼úA®Qøë¢dS9}J7ª1–-ï{Ú{}ÐµA7ìÍ#mTêE7Ü¼Ç€›×à(ðùY9¨ó®‚>¿)G¢ŸžcÐÍ+uøâY;¦Í‹w¾zÞz;iá¨Ëc'zÑñ# :Pw‰Tã]"µxs=¹Dj/
ÂK ~ð¨¼j/ÊÁK nð¨¼„j/ÑŠÁK¸^ð®³»„«ì.á»K¸Âî­¯»D«ë.ÑÚºK´²î­çºD«¹.‘Z®K¼’ë¯ãº«¸.±®ËCªš‰¡Â<p¿T~ @bŽv(²žü°´G$…{ªÐ‘÷CÕ@Ñ%0\²Á(.8ô-¡j¡ý€Ý *ô+žIv ŒÎ‘Š±-Ôâª©}u²ÃNS7‚¼\z/Î%”Î±.:?êa6ô,­:	ÀIâD?8ôK6xÿˆÂEerõ{;$æãdr{9öÝË¬j^¹«ïè.ÿüü»ŠËðêÕÏß…/>UöG©o¼z×6ÇŸ,üþo~úÇ'K±Ñ&î*Æ»W¬zõxQmàOí:qµKÁÍ3ÎO”Û¼”º»àübûîb°c×r÷úO”=×©Ãv)«²]¯åN}-×,úV»–í›é¹ýÝE§49»•Ý„Ú¸»äòÑü'K.$Ê»Ë.Xªàå®K»pÿTAõ”y§Am½L¾»¨Î²SÉí' wžÞDîTvñîåî’üjnµ¹ŸÞ]xû9Ó'Ën½Kº»t'W“z§ÈFú]Ê'ã*Ûq{Õéï»”›*oy¸+½¼áôÂúÝ¼üñÒŠÞÈ‰÷žV”šXWù#e-“"ŽE,Dì•2",’ ô³,È#7r¢¸Ì×Mb×/ËB$¡ÌD¹Yéæ™ë‡‘ŸÜ’Uôm»Ê8£…N¯3“ç±ÚÆË£˜ó¡ÝRÔÌÏVÞ‡Š3Çpê~ö¿Iæ3%çXVÐ95äœ™`NÅ6%ÜØd‚»<²©Y‹ö'åTo«'¢ß$ZÒ‰ATæýµ5Q®û	÷èúdp*ËLÚ*haÒúY¦0'ÓÔ1
›ît•¦²ök)G%¼é*9¥	­zKœ‹ªælRO&ö¼ï8»Æž÷ã u£­Èó~è¦¾·ˆ;ï‡~à9¦ú'£Îë=ó5èürð_tÞC7šIàÇ×[8‚YÌõRcƒ`a—KH¯·6þ£%	.×»]fjû´%„æsßÂZp*’¦}¬¼ãÉ¹ A!AQúi^$®,œ,Èd˜äy&S§,bá~ì…œ<sÒÄOK/(™Š[$„¿ÿÇÙß¼¡Õ²ý¦–®ŠlÒÞ.¼ž2;ªËªªÁ™qˆ÷~Stíú°jx¨Š¯êT{\âuAÒÞ³ÞR7VóÙd)W©gm&ç#m€ùIÛÖWØ~>'âTyoÛÎ2(ö/òâ†
*ÑwT6ãT€·×þo±.çrªÒ/Õ*{ûç¶iíw7ÕÌtÍ·D¶+“þÍÔù6^Ú¿´éÍM“¿rÞ¥eµ‚Ä•jÌõWYŸsNJ¡j}˜rž~Ð)˜ï¬ªË¨z¼ÌoTŒæfúó­Ê˜I÷ÎþYm¾ŸˆëW¹u+ ž°©ÞŒûc;°¨ôN5pGí×çœ®òGê½¤º,íéúï9ÉOQÑŒßQù½9}/ž`åî*XNì2ÿ^V®ë9iä.$+×<Ê&óIÑj¢F_ [ýøþÝŸ¾ÊV[²Uä{“p{Ù*éÆu}Tnc—µ®s4”+ö
…Ý®jÐŒ´«…<¸ d:!dšðùÃ;œ0n<ÀºLÐ N'9¬Óêt‡ë4nØ"¦¸ELa‹˜¸N°NK\§%¬Ó-®Ó-¬Ó¸ƒ˜Â"îÂŽad[9Žoå@Bã(uëtë2pƒT¸R%›
'ÚT@Ù¦ž™
xf€âM…“o* €Sá$œ
(âT8§
9NÊ©€bN…“sªÉ·I`[¤òßÇ[ ÿmqü·En> ÿmqüw„uz„u·Š@`Ìdt8úÑÁÈG‡£ŒxtÀ]—t·A`T©Ã]
:Ø Ã]	:Ø Ã]:Ø} Ã]:Øm Ã]:Ø] ÃCØ1ê<;œÎ³Ëü¨OípúÔ.RÔGRs MÍqD5RÕGVs ]Íq„f+èP¶‚h+èp¶‚h+èp¶‚h+è€¶‚ÿ½wÿÜHòÄç_Á3phi·$óý˜h·Ýßµ=}îöŽwa`ÌLªh±ÈZ>$•ßÿý‘™d±¤–šRWTi`í¬íRU2"_ÌøDd<º»‚†ð® ¡»+hï
º»‚†ð® ¡»+hï
º»‚†ð® ¡»+h(ï
º…$[FB{~CgÏoíù=¿!´ç7„öü†Îžß4ICwlÓ’¦š:Û*&ê4ÙµLCu-ÓP]Ëù¡w-e$»bk
ºTŽè=™#:RNØù:ÏhHÓH®žÌÇ½§óqïé|Ü{2÷žÐOu MÕmÂÉ&²«ö„NŸmªnž"TF¢6Ù”Ð$TF¢6Ñ”Pi`=GUOèQÕÓyTõ„U=¡GUOçQÕÓyäôd9H™îh¥röéÉœ}z:gŸžÎ!§'sÈé	/ÕÚTÝ&œl:€FvÓ6Ð¦ê6á)BÐ¨nñzÂ[¼žðo M4%„ ÊDÞšÈÚdÝ¦Û€„ ÊDþÇz]Ê,^‘ô{$N×qš	‰Óu|CÙñYÇÊ­Òn*5d$N×ñ+ÊŽ_vœp7${|L›µgº;)¹žLû‹2>î/;ã—¤Hlæ?RŠDÏu"Æ£Äó‚Ð™Ž‡‘ÌÝ8¹ï¸QŒ{>´‘QÂ³³0p)óÄs<'¿'EâwU¿’ë¤ÊYWtr…ÉÝ®‹nYT6YåÐ| }ò{³¢¶ü$¥IBcL[Ìº!%qßJaÝácwµ­H¥>F*@ZÉs/6}Uaò<X“Î®¾j%>ÝÉ)$k3{ÝH.¶×µ¡á	»UiÏí×e[[ÃnTYï¤°Íâµ˜úñ“#zF)ú¼¹)ú<?Nƒ`'EŸç'IN2ôyì¡a?~>AŸ~^’OÿåÉ½Ø®»Çå}×õf1H²Ä©èRå?&ê÷îî?Zä#f+þäàŸ®XÙ8’,ŽE¸~;yä»÷¢ •^"\
/Js/üNi'OCÏw¥º‘›‹ âÒOø=²ø#0Ä¬ÃÃè”˜›#zÙö‘iëeÁA–e}‚õº¶×ußðÍÆEžË›).(x3=éØÊø€©N²@R¥´W¬¨:øNX6Á…b£JL[C³ÒÒÕtù¬Ö±@ù[WVÎ¸*y j¤ÁÃXh¡Qg¢ê5^%Þ]8¡®ÊÐYY¦ƒ*…nµ¥>ü 
á/–ìJÚW¬ì¥zH‹÷FõºÚ¨®ª1?#QîÏån¹þn7òPnL’íF>ŠûGˆrØ9/¢|¿¢<òŸ*ÊÇâA"ˆSÑ%åûï÷îîÿÓŠòÛƒ?‚(o/‹õ‘$¹eê'2È×‹¤»Ÿ
G¸Lú©Ÿz<DÊƒ8÷Ã8I9¨ÓwH˜q‡e»O’¿S…©´ú‡ljû7%¬ÂÂ®êêlüRý>	ÿ¡X­Aüñ%3(ñ†'”Bº¥i—$â ]K+ÚEkõ íÅæ¯ð7HÓa5NºeÝ_,QXÂ·Umyé¥ÊJÏP/ÆÒˆ›3èHy½¼dm{j/e¹nQÈ«õbEW1)*Ù¶ÏGž†³UcÇ»­»qêÅSÕvXäÌ-dVèEœîY3ö’'‰S\*iŠ´‰ÈÊR‚^ïlü?©$½3öÃÒ¶…ÿÂŸG’¥,w˜à‰ãeA,ÏÍ¥ºNžçÜw}™²(ˆ|éd¡±Xø~êú™tdî„IøÒsî‘¥úõºnºQ|¡ˆúõÇw_øþÇwöD|@O6g´­7
R €:3ÖåYØ¿||{–LþÔõ+-T•»B‚j‰ÒVë¢Æ8­ÔÏ:û]rSBOÏS}ûN2X„g¤\Fs…a&XoZ"Ïq|8y'%ò@^†ÞlY8lÉ/‡?þðñEîJÃ(JŸ \
x=6²¤©KŸ×ÝPPxÏ”W%~¦éu'‹›‰¶mH·%.	ƒ´‚/­"úú$OÃÁ@ƒD¾˜ú—Õ'|L±øU‹W’{­+Ÿ­öZU+àÍ¬ þˆ‚‹,Þ-e5«ªw]]tªFí¬ÂÞÍUÓ?«-Vê…9›Ó?ÍÙºÀéUþ»ÆJ¼ÕÅ¬RÝò¦C£÷¼²Þãéú¹†k6«]]Íšý¾”³f~ç úLÓfÎú<o‘«#auÄßaE~z,K1‘ù‘“ó<Oý\Æi,]/ŽSÀ‹©Hx©p>sácÌïÃê?èšÔöûoßÚ õÚí£¨>WmóãÔ>Õ¢Ñ«Èyk¤©¦ ]2n@ÞU¬´Õë¨ŠÀ[Ÿf¶ýêÜ~¯Ð¿¹–Ê)ËÝÊR¢Ç‡…àX%kðlÝVýÚØÆÖ58KÔ÷}ÏÀÜó²¾ 0YZjmxk[2¾´Û¥ÔEC×Î¶sûmß çÊªn$Úæjõ›:÷ðµrÉ°èwk—Å¥Ôß—EuÙ*}@_Á‘5`k&ðŠLýE
]=|œ/­ AwEŽ?ÿ–8œ*BÿßÛÿ@S$~ÔC³`$ÕÎø°ºéŽ™¾E ºj¿€ûA­•Ò,Ú…“Ì„PJ¶ÃP¿<#¥'ž]<ŒR,#>Ñzß÷œ©0ð£ ˜íc^íà^•žØOžP½rXˆ¼^‹«8¬Î…¤HÃÔ["ÚU_–D¤aFP¤!~EGúFÑ*ºdæbš~ï“Ç«#2|–ZÃë¾êÜ®žÓV¶õÙþËÓÏ×€ÎLæµ"Ø8Ç4ÃjKÜ¯N¿Û¸þ&‰þä¸ÞÂ˜9ž/7C'Œò8ãëùyîÇ2ü<s ÎGÜ\pîÀø\º,ô“HÆÉ=¸þµÈÁw¥:vnËÄ;›<í:x?Æ]M@c¤¨=ÔŒG8¯«¼¸ @,SjòåÆº•vÂ¾óÛRúö?~@‡îÒæ}£<Úâ#}Km×Y¯ ÐJ«ÊþÌqµöŒãˆ”,þÈZ‰±8ý¾d€wá£ÆÓðµV0NÔNÏí7u:ûšµöpcn1ÀWÐa5*†Ö­«÷k{UÀ) ½ÙêkÖˆÖz×k²ÏJ»wüÌAü´sZDI|ë!v¼h§¼»IÍ¾OW¯Ó8©ß§g_	ºyæxÏ	GŽÿ'suypÖÂRK’dhSúQçSúq]åf½ìêÁV…Ú÷ÞªÈµÍ–ˆ8¾f qP7o1Õ³¬¨ˆ(ÓÁjª«Eù(Ø÷*NÏãýÏù”úqT‚¯aP_·Ë¯0p¨>ÐÝ¡å-ú¶Q­Ð¨÷@;^7àIÙÎàZÙçÿlÏÛúÜ=9=‰‚¬èRvøþÍ›úçÎ¼çF3y­žÐøûw?|óæŸÞ¹wÎ{n]]¸‘Ð\NÓ'Þÿô½ýsæ¬k¬‹ÆÉLfm'ø¿ÿûc&búÄ›_}ýÍÿtÏýÇ?«fò×_a‰ƒyÿ1{á>tŠíC›®'ßÿôË?ÿöúÃß>§¨õ´5™¦)þSTÅ™22?R¯| _Íh¤î‘?ßlþhTó%ÀYÍíèeÕwË3X³9mç«ßkÔlf´ë>3Ð1¾û:»wöà~ÔûÛ¢g†rÿ8ió4kê°5ÿ×xêk7<õÝ§~ÆŸoñp¼%»Õælù‘."}é$<uâÌKD,²8Š$ÏežçI$÷½TF2†¯B)=r?Î£ÐóR7÷2é'"¼Ç`ñ­rzs…ª;Z†÷ÔÖ:ý^ƒß¿E%Ù+Æ›zÇýPÛ<@gˆÛ?èÃ’u¸gêVQ¯Æúè¯¥vÔÇ¯¯ëæãí.¤
kWAxÑ¹‚ÎZ°ªuÓ1hŠö‚˜Â“¶h
œþÅÄ‚¡_Ô×Ð‹×+9†¿÷-¨yS ¼ïÜT»Á àÉ•rn,.ÿŸk¡-Þ¤ÂvnB»¦àæ:REòA¿k„½.8^\NƒÏ-œ/=4Å_-ê.òì†²0•ÍD{T³É¹õK¥.@~‹!Œ0œè¹âÿ'‹	k kiÕ}·î»gd)Ig‡ñ¹N”Ä·'…gœÐ/HÂùÁ|ùÞ:Ú€=^nw,&n$iô„«Ç‹üœçûWÕ/ršÛL KbZ¸ÈYÓÔ×Dw°@½ïjØÑŒŠ>‚´b/=¢ùGêä'[ƒ	Â1À*7›ñ.Â1 <G&Ò•yPŽ£¬IRŽìÐ'ì? Ñ5•_ÈÊ1Tì’xšÑ ‡J„”çtFó	¢iéSõ¿^­ÏŒöuæœE!Ù@¦ŒÜ37¡cÔHÚ%G”'ì·ÁJÔÓ3xÒ’3tärrfEQs1@‡š0¤çƒCšZ×ô¼;7ÐŸ¸l1Üò ì”uãœ4è"gTÕ¶Å÷¿$çÒòA9›%èøä\TF*m_AÓÇaø­Y#+¾!e6Jbúh:rÝ-©ÁâNT^“áÌœÊõã"_J¶&S#.å†öMP(;OØï¼(açKA:Ae‘5¬Ù Yîr"Z“	±ÙÏ°Àâªh{V¨cý<C35kˆEð½ìµ|iÏó¾âôbæÞn¬ë’XqXKuF æuÝ­røó)ÎkÏÊƒó]±æÝ.ÍqóªnÖKj~o€¹¥JzhæÆjw`®ð­êexæLj7åÅJWaÀº•ì
~¾ëþl`\²iåáŽàR%û[)ÛÃ¦ÅÌø‡àz­vàUÖÝ’U¢¤¶®|Š-Š@Vx”l\šñ š ‚P?ÔÉeDÀáðò s0Wwls81g8]°þ-åùß½9ÛC³TI"Ž2XÍù—Gb|@®²TÑ”çªhÊóœ¬AÙ< OZ¡10Q…xs é;ìÃq"žÀ«¥!b@]qù:¡^¨hVê‘!·®‘t3¸bUO|åiX`Ìås^ìº2‹c1Ãluˆ7õ6)mÂ~«\Ô““—5£•4ŠËh¸D£Ã²#Æ
»üÉIU¸iëê€LÉ¡Ð.»4õzuH†(óÈìE]Ò"_ÌwM..º%·Ò2©E_Ê»÷à9±ßÒs3žÉôŒêú L±û4#t#¦gs sŠaD¯ÌFuÓQ_¿T5Uvl N˜÷ˆ¼óÈ|LN»ÂHŸ°ëT½Æ Êæ ÞošÑèÌEÊK;¦-F»iÏtá
Œu>»*˜ÊðB’>ñ6·Cp©ÛN~€š]¹¯i¢ÒDÙ9·<ˆ2¢j”¹K5ø,I7,|Ty¥)yÐ¥aÕôÉr±´g:?bKçŽ¤×MÝÕXä€xvÚ:ïÈMØ¨yšÃ›˜E…oÕfU<T>wR*_	œk¢Px ÝÉ¶#¥M±u:ÌÔ@G9+V„ÄKFH|EI|M¿`ˆn•¬¥¹[0ÄiÎGEœÅŒhâDŠ8U¸…"~)7tÄWŒp+®jAGœÊx ˆSA§îï­iH#a2Œ¤¨“Ô¾£œ1ªçƒvÉHs—q|ðÃ†Ú¡qÊjÎ9³©‡Ê!øÑÞÅï2"Î1e¶à@X4¼/(­¸ŸbFí{zÏƒòÓ.˜o¾ýÛ1Ø|vé=]ïçz–woµ$)Žôø ÿãp=`¬åƒý ¶|7&¸,‹ŠòÖyÚCxUÜÃïá¥÷±&/½‡1}€é=Œaú ó„˜ÞÃÚ[ä¶ié„)¥gÏ”y«	3òÈÙ)¯â0ëtØÝ)ãº‡zñHã'|T¢3r'ã»Áê@ÁÎŽ‡Œvž°¥ö²œ²‚®Øú ¼è£¸§ÌÐù0œ0~‹!q÷”[ÝªÛ‡:)©s±MY‘‡sßbv(ÃçbÇïr¤ÿÏÃ±:XPõÃ¬dk:\€ó]¦´a=ŸàGâ|—)yøñ”%±Ëþ”Õš0ä”yò„hêX5÷0¼jU>ë0¼T¨óA8õMWÞDÜÜèÊ¤W²xsO@’¬´çÞ{;ö9NQL\ÞÇª¿”›«árþ³ž‡÷¤¶ŸñÜßý3ûr²-ÞóªæÝèáÍX±}—¶¿µ^Õ~Y”õ%+v¤Bq2AêG™+ý<p¸'“@¸>w³€…yÈœX0îD	‹’ŒK…¹+¹p…Ÿ†‰È€ß[Ù>¯«Ë!ëVvªÒÙûq´ö7u}ÙÞ_%î#´ÞÎÍX%nÉZ;“²ëÁ#	[B‘7Eáá£µåtö³¼è±ôÚß×²úÑ=SÅÔ~•ªnÚ¹ìÔ×ªL–™Ç
uð^c¦xä!ŠPÿÐ|pH9ãŠ¡¸5Æ	g;Ã1>Ÿ2jž3»ŒZyX§kRDÍóÂÄu'%Ô</öCSñüóÔ¶Ë1ì×Ç×QûûÛw/%ÔvJ¨ÁÛü”
jw_ŽóºÛ¿ƒºìÝuyyž‹ý;× F#y:Êd@‰ªï·ßããÁ&<¨Ûµäs
ˆhÐó«y¨¦ìnº†ÍjÚW…Bý{ƒ@$àæÓ«upŒS‚¬Qr$„Ÿ92‰\×¤˜›DI.ÝÈ‰dì³HHGHWf®ëñ~}/anœŽ—ÄžŒ‚ûJáÂ.lêÒV¹}l5F,Øz?¤ùVæèì¸â··øÌ7¬i
,[CûJ, Ølj¬c*ÁR“míƒE­;kÍÚö¯ˆ7ò¾\¨b¹ò†­Ö¥\(TµX7Dõð¶`¶¹Y²Øz-e¾Ö¦’7ý›ù}èÂ3‚*î\¨â%~
2pªDûS¨4ãh.T1»õ€Š‚Üþ¶^±¢z,· ‹ï?¥è«YyoˆSÑ%“õ4ýÞ}Ž&ç)8?5ø#ˆM<=Ž"3y˜ó NÝ,sý8ÂñS$¹¤qè1×gn–fy–<‰ešÆÌç‘ï„’'2æÜ•÷ÈL]¼Üþ~I‰¢}æ•PhG-[XÚŽ è`%w=¹ôuM!å~ÃVð;jà‹[5á¯XSÔ}k·ýz­sñ>'m½’+[T÷[Þ·È×ÐBB§ÏH>z³Uy/So·z¦>~·-‡Äî¨IÎ‘Eõ…õÐ_¤âŽTôý±ýc¤"jBÊ{œäöáâr½bœ„4ªe’&öÍt”d”{SMô*ïÈH¯ÉHël1+v‘SÕ/8YßUÂ
ÊmW7DáÍ²íð,!!~-3ª¹¾¦z%µŒ#ÂÕ_@ø™ ê/ µu¹¹(ë¶=Ú…—ÝXDY:Qxž—É1¬ï§Ú‚¸ðŠÇ±ž:aÆ]'q>²Ü÷@Ûkï•­œnJÀ!=+‡k!1§÷M]{íxÙ5,³ÍÐ@³F•Âþ†e²´u„…²7)K ä¦µëÜ2þjÎN×ÀFÓúÂ¦×;wlÖY¥dð.©›0Þ7’
ên­Îs¤o 3^±E‰]2$¦‚|>¨ØŸ‹ŠÃ4u’Ý®$qBg
ŠSÇçcâí¾þBdl»çþ:ÞAÇ¼}O@Ç¬aYÁÕÍ-†c­÷.~4ƒª_eT…®2|ÝÏ–2kä5+×K’DRŠIKD[V¬,³òL%Ã¦è¾W¬b¬¡Á&;)gpÚs¢ôŠ8á©“õŒ•«
V—bÿ+mX¬@›.8%uf2 X@<Km×7´,2¶d-+È9¬H9´ÿÝKJúp¥äÐ°?àh¥d »št#õ%ž¬¤›p+i9ÔëŽôÔàM`‘vH@Átô‡–”`Û%åÛ&úŽt†à¸(i§H‚Š	(¾«IyÀ‰A»Už¡¤_TÄ{sí“î¥¼)zÚ3E§]ç	Š8)ƒFÊKBúZ3¤dPT‚òM(¸„]$He›
²×69J.í]tèÈG¹Y/YU1A9G%£% ÊùúW´+PÝ²§ÖqË¶n2Z+v±a)ƒ’màJõmªzGŠ÷ªºi)¥Cµ¡æPsçåVZ×Ä¯4z¼Æ cÑÔ+ê—Z± §¦ÇËÊ1´lEz~·0C—MÑQ²àu×Ñî×VRŸÞmY_1ÊSPÛ(Û5µ9 ½–‚˜Ã¦)%2îà£´îu²ì/zJKRq×7—´KŒV’òEè/V¿l}#(W¹§G¬W…ìð»–Ò^­®Y)èk; ÕõÞ²ø½!»;œxNÐ”€#‚ðjòF™xÎ0ã#Ia¸©g	!i²²Þßq»9^@jlNÔ¨ªo0£ìêºD÷›m{ë”øœSò¥ä+ÑÎ
‡ä˜A=÷ì•‡âzîß+û
ò©¯e#êîXÎ^äxAŽLý@FÌ˜#¤Ã"×Ë7Ir7ö=îøaè%^Äü t¼±˜K‘…ì>gÈ×öV	AûÌñ’µäúxoæÀ.tÒÛO*Gå×hÃaÞa˜k}­¿Å„°%ø¥Í*‰@6¶W²¬×Ê7²ÎÑ‰2—-N+wh·çöÅkùÚ9èo^«ÙÈjÉ*.wR|@ (ÎæÙœÛßéh\øãpu‘–‚Û ç4%Û´{ë§úPÕTd,fcŽÍºïì†’Ûk`Èõ­9XØßþÇûýÆûþÛ·6<°î¡ç¬²3‚äÜ†	ÇIÌûÒî$t„uÒÖé]Õ¤^±¢dY)M¶”¢ÜXfšì
Âk]G*ï6¿ÚÐ_ìºVâÃæP|NÁÁÁìà'ÇIÒ[‰LÜ #»w£Ÿ‚ØœÙžžz·¾¸yî=Êu}ïñnžã‚°‹‹‚¨ä÷À"Ëø’–/ðì¢å@•õ%1Yª4aD5{.ùfE£8Œ–:Ñ?1“¾½ÜÐ²(.¥ žªße~IÌâ¤ñ¸fEÕ©,ÊÄlþ(.iY´ øiòGNxˆ|hyt€bþ;ñÖí×²"åpÎË–À ¡‰SÑ¥3=ô{ÏèÀV-&[Þ«Ý¡êWèsÚšÚ›Ym‘çt	ºjÈ{NÛ"¿|Ùu¡â[ç´læ•ýœì¦ª-ÆßÏm!æ¶mËõ¬¬eÐ¶x–•©ya\>k#À>Ï Íj;;oì¿ŠEé§ÀÁÓÄ4R•V;’)Îcá{Ìã>c¹Ç½”ó4‚ÿxìs™°LfIÅÌaR8Ìõ]Ïsàÿ]?r™—gì^RÖcýeÂ1*øhŠ°¿b­]´_=œ>ÖÀÐÙ¦heûû-3Ë¬¼\˜$kpÔÀ‡¦¤ºC»Œ¶„XØªn¾fy^”…6Õºï†d0¿éÛÌmgv† \ec³ÌgÕ[ÂoÝu{¿_aö
>’œ­[•À­ÅvðEßH¾TúüÂ–?7ùÝ„{¬GÅP=Ú—åZñªg;Ø—XCÑ¶`B.
c©Âß˜­ÊQ©õ ê·3»í³cÿÌtXÃtðºWu‰TÒ‰ÍtŒã³2Es@Q”DÞ®(NaÇOM@q
sØõŸµ ™7î%Î>­?˜¤Ïy¼õÇ¼ÑDÑ·êE¦	™Ôo?ms<šL|æÕ¢¢K¦kÐô{÷¸ùSfâûÔà±Ú¼aGX©pž<ŒyûAaÆ’Pp72öR‘‹Hø~ž§"bŽï¾F±ÌEÈcqv_úÚŸu
µ‡ê¢Eh#+<‘z¼<ö{8ÿ?(AopÉx¯õ…œ¾¢ã Œº¦×%íX|fàÌºà¦©•ÕUÑÔ‚™va!È95HV›T+7˜kD6Åj]c>¼E³¿ûtï,Ó»…Ý·˜ge’Ç®¯+;gWuÚ¬-v¿àÕòáÄë1VÙß½ÿ`W€ÈT­µµAËî0Eî«vÜ+ÀG;Î 3Ns¯­e:Ž_T‰ï?àvÙÞèØÀc+x÷°K‰å
€¬•7õJ'gÙvb,ž‹?¬4A¦¼ØxÍ_ä_Í´5é‚c˜2àÄJUaa·Àÿd¿´ÚÔÎÝ3‚pñ\—¦ðÓî-žÅA:½Äóàí˜­E½Ð_€ß†áÁí 87Iàô\ÒÀ	Eš†*” èót×½ÞÑÔ1!ÇÝi:<à@1ws$ÄáùžÌb/ŽCæ¹i˜çç¥ž'ƒ 3ÚNDÏd&<á…®ã0‡G,JEèH—g÷!Ž_@ìMQ:®Ù:ì¨»èà…Ý®0µý8sèƒîiä0P¸¿‚c©¬¯¬Û¼ÐßZT!i%“™½’H1S4ÈVæQ%…Ñ»çdXÌS`Ö-×Ýjk‰%÷º­òS£Ò8·ÿ³îíUßvÖ’]É­¸²‡N™þÃÃ·;Š˜¢W%¶Éàtb6Ì'oW ‡J;ƒ˜¡0ÞJšžÚ6Ö8Q&€CÈS¯Ö £ö¯)ûªh1E(0· ?‰…•ºk)+~-êLn×¡b’¿Éò
‹™3ü2uþ§¶$½$"€>´xe½ÁeNŠsèõðà°Ø˜ÖæýNÂÿ©Ç4t°&˜+ßÔsÒWÅÍ©Ý.%6@$]Öà•è«Á§¦À2~a·&{°›µ#Æ¬a°í€Öê¾³*)…Fˆ6|è$+¡û?¡QPÍïÏ¬¬ìk˜>xFòeUüw¯ûxg¾ôDu=[ÛL‘.2UÂêÛœá‚Ÿt
f¢Y¦äÂ>“R›ïÎ®“2¸rYU}½À®)“$<q­þµ”Õ°ìk[¡ÁÓsû5rƒCÞ”…5´)ÐùM âF4	ŸÄÛfã?#¨˜Ì…Š¾çß†ŠIà8ÓjNœ³¢š¦Kß~qbê='ò¦‰»ê¼ËWû¿@7´¯öš¤“¦"	>hSMIB8Ý	Ñtë7–HP´i°ù—‘~&ö½/¼(WåŸs™¤‚¹©äN"&q¥ÏbF<i˜pd,Êƒ(ŒÒÜ	<×	=Ááÿ\'Î=ˆ÷­ª(i²æææÂ:ðÝ}…£
%¦T¡Šà@ÞÔ©ªª•º˜¹v‰GÈPnÎ¬­Ó·Ærªô¥;@ámÁKÙiÑßvíP<óÕ;Xäæh=kl?|¥ ‚»(*œ_i&[4ò
 ‹Â0–\eR]8c2NeÄ…µ;Õ@ˆ©*²Û ËZÕæ@’–êÝí‚X–ÃfBÆmÊ®—
•ã~[cšcí„?Ž·''È_±<{µ°VˆÂÖZ°âÍ§ÙÔ†ÞtP#žnM‡ý¯»´@¡ÿmoà!e•D4ªòÏ­·˜u ‚W¾Ü,ì-ìSxÏìña9¥rüòó?¬“‘aøµš;ïS½¾ø•Z:¤ƒÆL­]p4§ÂX „¿ÿðÓÛó_ì×W¬ê¾Ü,ª8+Ìêb@ª‹	µ~’×6B–Î†|©B•°ÊÊ{¦°Ôûƒ*¿°?*}êgLM Vý¿Ø:·¾Ü’1¥ŽUãª.&ý¦èZÊ+û–¶€]€ÏªMlýÒÕë‚©©† ¹n‡gæX™­ÈúÎgÅ‚1ª"—¥+ráÈáËB¿²á(ByS‡úLÞ¹ÆÜr«ïCkô> šeÍ„6«—ÈäàÆ*4ŠÁ8Ûj!¬‘ÌRÍ¢}¢½Œ¾²Õ©´‚‚´¦ÂRøVÛrÕu?ú]!ø³WXÌ­’L}×hÿmŠAÅÃk|Ý#‹ÙXÕž}M‘UyáŒ†¨:ÕÆoå 5tm$êZIx^{”Xõ<Ø|åf½4û²U+®áTÍV§<OM—ÑpÍÊá¥ÒÚ˜ÞÜ°æDú‘¡ÁíåÐåÉúêÅTð›mþrÝÓÑŽªrÛ*Õhµ%¥»§¨gpx©C8Ovæ°]µ¿V šìhÎ=îAß]Ÿ^øæ°?jÕe8ÕQç¢ËwX<µ¥×¥¶^œáí…zº.Å™rÃ.VÌ´Yz@J³Þ%ÜQê5Æ&‹-Y5Ø…íqn¥T^/k½ÃtÂv|HëÃ¯Ì*ˆWæl·ç3R÷ÒÙ‰Ü7mnªïEŽçFSçŽÈóý`¾Æ‡8äEáÛ§Â„‘÷„üíI“Á””Nš5» "œ‘<Â¼!"¼¼""\q"Âë’ˆp·""ÜwD„ÿ ™c†XÆ¥J#KÚ\Åë64QT\cQš†6I¿5‚§ñ3[—4I54N&éó€œèˆSCLI›ÄlvRÉkNÑZ¯J" ”‰PR¦	H™' e €”iR¦
H™+hÊœŒ6AÊ4H(ÿ±.©¦ãuXÑ¦[Æ–ìÈkÉŽ¼–ìÈkÉŽ¼–ìÈkÉŽ¼–ìÈkÉŽ¼–ìXjÉŽ%¤Lö~Óy-á‘×y7ëvCF›nºo§û†nº;—JÂt.•„ÊD(I L$a€2‘„ÊDFQþŽôi"¹¨(“½áT2(ÉÜÎ%;¨‘4ÕA´©–qm®	i’Ê •ŒÄkm’‹cïÞ_x{GÒk2™H&É$"™@$“‡dâLÒ	C:YH&
É¤™°šdÚÙ7å–ì jÉN¢–ì(jÉÎ¢–ì0jÉN£–ì8jéÎ£–î@jÉN¤–ìHj©Î¤>'‚ÏŠp–‘^·ººÊA•€Ò4›i¨ÒÅIôyêx¼8éù¹ï†ˆê™ÍÖâl¹Y/e¥ãB0<ö™'æE›œu˜ÛqV›YlïD¯|®Ù|ªªgYQ=ªí-ú{‰\¿³q¹n²¼+¡ç%‘g1w3™DN,’0}–e±Ÿx‰ã$a(|/Šr	7N‚ÐsîÆ!“,ò“{"y¦‘,&‹‰ëy(l}š*f¬añªIè0ž…Ñ~ßÛ¼6¿^ó&Æ¹½.mWõµ]²æbÌ—ÓJ¡æ-dà=£ð]ß™¬/Mo¹sÇN”LÃwcï1ÎÜfª_ü¹÷À‹	 ïÏ=®†1ÔÉÓ!šžßzþ”éã>9úÃÅîÌG’ˆ~ÃãaÂã\äËÇ¹ã°ÐÉDÈ/yÃÿáçqÈ¢(tü$Oð‡0KÝûK<½ÿðQ%žE’J-R”X9Áƒ,íu+{QŸùßÚ:OõÃI{õT$‡§“¶q¯*ÃÆ’‰ú…§æhé4 ?)°€Š©ø„é§å›†PH `@1+­:û]òîÅ?ùîì
G¾ãbv‹i¾‹8NÒhš-Mf‹L\€y¹Wy¹É“ä%.Ñ=™"	ä0’¦¡J'	ú<}ŽgKxDy€£Êé;Ót!­²¨IN;‘›±Œƒ^g"—“ê‡œqáø^ \Ïq¼Ð‡_|!“$aY3O$"”Àõ¾ƒ©†¦Eç ¸’ÄÛÌcö#ŠËR…óZÈIò³AJ›=vÆ„0QÌ˜{
¦™|Í}a—Å%¨½=HlÌ°jú¤¯íºzFØŸ-€ÃÔõv5V/t‚4œfœ‚‡‡Êv³°š˜¼_uLûX¬VƒLkê’xw7Gü<Æèz[úì7».ês¬üB"J|é3_p7"±˜+ƒ p²Œ‘ë{ð“DàXwÓTæIâG,âïÅ÷Y%?¥}…ãl$ £"=Px×ÌŠ)¼kˆàû¹Mib2ZkF*…æ˜Ähcº&/œ[±6™Q@T¸\¥éˆ÷7	8¬‘âó9òƒùUecïÖ‘ï:‘&SËI<ovIY³/'þ~OüÔy¢Öµ­ÿEpà+âTš§¢K©}ô{÷ÕzÑÀž0QÇÐÁx]”GÓ9KRá9±ˆBÈ2I™Ä2÷Y–'‘ï»ê¡ë:iæž'"Ç‰®›»Iîå3•â@u‘¯‡%4¶Óz$ƒk/îSšÔÅÅ°xªÂüðËäÉB¥H«¤.ÑñŒ$ðì’^^â·®	A~Ã	ìû1¬×#$0NÔ‹Þ¯ÝÓsžPÒkX2	¬ˆSI`$NE—Rô{÷Õz‘ÀO˜¨cH`¹>VÞ$y8‹³4òBî‡\È,ÏÓD² Ì³Ôg\†p°'‘›%’G¾ð¸x”;a”{Ñ=ø®øôÝû:®¶`ŽÒô³õ­ÞëIÙÂgw…°¼A Ô‡FV±R‰?_Õ:Sk^n^é‚žŸ.µu}<µÕC–ÉõkÒ\ê<ÿ&…Ñ`&Z4«ŽÙh‡T°½ªêpÍ6ÿŠb•æàÖe¦9‘;U¬ý$xD'µp/R}Ï·™©÷4©.‰
^´©d:Ð&"K)Ñ÷ßë—êEž?~žŽ!Îá4>–BÍRÏõ"’ûQ˜E"‰³Óëó0 ]Ûç 7i”rßzâxiÎ“4” `çÎ}•¤ÞÂˆlíl¤Ò¦³v×Lý°$Çùø¬(ÇFƒ°QFŠjÔKÖ0ŽyãŸ‘] ÇuC?ˆ£[Õƒ¾Þ)§Diú˜;Kœ±A»_v?ñÊƒLÒ*âT¢‰SÑ¥¶ýÞ}µ^Äí&êòö¢aÇòõMrÎÃLfQè¤1ËÉ0	¹3„¾Ÿ»<‚3%Ž¤?GA”^”ƒò£XdÙò…¡²¼.±˜	Ž²ªŠ.¼üþÃçü{ß›Éù¬1;¿ËÏùÛtä<¤ëDàïí  ÿüý7ûÍÿùPRÿíÃ7Öª²„§þ®¼‘oõÞ^IÌ]´+]4FWàPµ@€àXH—µ-×Ï)¢fv…äÎ-[¹—D‘7-žì%Iúˆšxz_„ý¾}„“§	{\2a¯ˆS	{$NE—RØô{÷ÕzöO˜¨c{Lœ~$aÈ<J$–®ËO„qx‰ð™ç¥nšø±ŸG±d^'‘È=á9^,9‹œœÅÌuƒÜ½GØW©2
Ê¨\çSã4ŽÕ®×²a]Ý¨‚P£ƒØ°kþ[:%C±•oÚ³¥ÛöXècm&ÆëvaAø—¬>ÿ†—úWüþŽé/åÍÚ>Q½Ò%ÐNÏ­×e[Û'µX|˜›Êyð.‘Õ\˜ÁXÝM^4R\xo×C´4ÖÛöž`¶>ÙuâaOœÃcjj¬ë†­16wû¼YºäÖðl¨[ÕÐ o|a]°¾|uÁ`JK]B-ÃÒÅ¥Â*Åj]ªeÂ"huUnT±§Bèƒ-­Jw•ËŸž¼{5m¤U™'`5¯ëær\Î3kë“õº{ÈðjAÀ»^²NÂ§ýÁO†võA;¿©Ññ|5\bª&YÞ—
åal4¢¼’e ÐNwJ¥ÁdÃŠm§ÞiÞ•´?üðãûÿI¨`ÙÀ…Uüà8P¨E—„üJö$)YcÃi£×øž‘é&˜í¦iÝ‚rŸz;ÕÀõq<Ä]ñåöåâè‰nÃù@å†³†Ê!q*º”PŽ ß»¯ÖŸ3ìúƒ?<Cg·#Á³,Œ¸ë¹yîç® ??þWÈÐe¡E,p³ÌuEÈ—yYšÅ	|ít|÷>_†ov=uß3Ö—Ï°iòYaÌÖx€œéoh‚pÑ®pˆºþ¨-•ÆÄj]…Ä±}YÕ×ÈûQ¸BÔxªH2Þ¡ÂºnuÉ^Ë ,Pð‹a'Å5×ª®Ž0ÓCC` ’ÛjU)ì‹Z§?*7r
%VìPÝÜuˆâ“J ÐQ0h±RahÕE_´ð5Àªc7“ß¶ÑhÖtÊ°¨¬KÌ®yUÔ}ÀIíXm–é8
UrSá¯aYtÏ±iñœbÝ‚ÙÁæ ‹t÷æ(	u™4â$ˆë†¯èþØ+þˆÝø‰¸døC'À#ñ4&Ê,£ÉSÑ¥„7ýÞ}s_,UO˜¨c@!Tç…¼H‚N”'Ié€‚*âŒG,äIx©ã²HÆ™Ë…pó@
ßÏ‘¸Òuü\ä<ÌîD…`o >×.ï¦–Á‰QxPŠ¢v#AÀ€vtÅªÞMÅJí‘yº¸ÅîÜÆŽ´öjcpö'¦¼$¤uÅšBvd‚ÅåWòyùÞl#„y—ÜŽxÇªÛ;!ï®E	¿ÀexÁ{ÅIøT;.PÄ©ìHœŠ.¥ &è÷î«u<A­ò}ˆz†œVÛãæRnf¶ý‘ÿwæÿòýŽuSÅ½4¢(òe„€/sB¹1gK8÷X˜ùQž†QäæiÄ¼ÌÏ÷³ Iòà^ùÿ¡^/•¯¢(nû¥|&»Íà®2Qðqð“L7;ä¬!y+#Åo–£ð«Ç”ž?ÞƒLþSmZa‡
©ËRÛP`¸P.dûûÌ.:k-›UÑíšhT.Ÿ/@ÐfE×0Üný*Ó7Æfa±²¼g”¢.ÐpÁ:sßm&Þ.d0½â¯š/à˜hžÉîZÊ
jTÇÿöá?à;†BmAÆÉV?´M	O£ìƒÑ«gpòX¹]“[Í™ä¶Öoëö=õÐÍ ÝÀ¢B'z qïe:¿ßÙ$¿Ÿ…wk §€ë_Ç3G{x£Óhï¦'„ïÎU˜(~·–ðZƒžg_yqèÝbi¹Þ‡¥iœ<æ:‰¶ßë ÿ©Q°ÊçŒ
†)âT0‰SÑ¥„aýÞ}µ^ì%O˜¨cà%ø|,{	ÌËÃ(™ç'1— K‡)F¹F‘H…ô¹/\_&B¤<ñsî:YìJ‡óLä"=y^úˆ‰oQHŽ,6ÈÞba¨8ˆ¢šAƒSóY'ÞÑ¬¢ZkHÂ å¹lÐ·w˜êÍ¶Ðb[ƒ¹¦ŠŠ—½AKw!JóºÓ<„gHà	óù‰|?uoEå`.æ©o‡¥Kä‹Sÿ"Ì÷+Ì_=-¥îL²”Hœên·YÏq*‚Ä©èRÂ‚~ï
/0ä	uR×å±Òq¸Œ%±ˆbžKßg	yËržG<v}æÁaèù1‹xêd‰Ÿ¡cKì¤yžH,poÚJcz1%tÆÄ½¹YJ ŠÍöq…;tÕ1Ç„Ø<üŒ®\ÂG\¹¸ñml€Á[ÓtWnJw¥6Ö8Ø/8pü'‚µt2VQ'²HLZ}ñg/ªh6Pœ–ÛwNdt“;V²E7f<“iìE9Hæ¹"ÒDÈÓ,AíM½Äe9Hù ÉŽH‘D\²8
îóü¨ÿf{E“`R ··.”9ZÈ¼¨”µZyÚ¿a3)M¦ûZü¾ìU­!ù—P?ý½.*ìú´6WY¨Œ[€5ø… Ö]7Bø:w*×Åg$¦æ§ÂO"ßsnÙ£ °cŽÝG”oÓ‹ó"¥öœ9x¢=ƒNH!q2Ä©è’*‚ûï÷î«õ¢>a¢Ž 9vQ{NÅI"Dî8Iê‰Çƒ òÂÌ)<ùK½”c‘.x’æ†¡ñ0Êœð>Q½Z:vû(} ¦j¥¯o[˜¼ï.åPQ`JÂÜ+'½mAU%ËU"?è+åüŒd×ëðAÛ’•Mº|ëÂ~ýã‡3õ×ø‡ú8•­Zg¥ØöÆÒ×ò‹¡ÞP_Rº‘SSw&ÖBÉ}]8­de·°üÎŠU{¨ä“ŒÀ|•Ó^j'C{âd8p³N†j³. íéXvÖ\ªç¥¼)pF0Š²É1Ò;¡‚W„QÔUF#oÐø(J]—OYý—Òâ²,uÉ=n²[Àv=)¤¢+`žñÂÿâ,/nd«êù±šÏˆÎNØ
o´¦ß¡$ÆðÑñ.= ¬ÉæºSIwˆGÅqTu7O×Î}ÿíÛ“wìT-©ò)‹U¡×­|<q}€–„æhÊÂôE*`·¹m¼àã.¦\ Ð<ð
åÛ·z!ñÅµ”Ãéä^ÅÄ¥<8ˆF‡yp0öÜ áL]ÇóvR×UùIf#B½i¾Úî¹ÿ‚
wP¡»á’¡‡SkÛœóübï°P\ë–Žr]Iâ¬Å~
Òxº0ÂÜn€rÎyÙÒä[“ÝP.£D´‰ú­ÀqËTs2ÁíTÄ‰&EOcòx_„ÀŒäÅ¿¢:Qnð(ùŠ„ú(°©èêÞýÞ1ÇÓ½ÙªÝ¦šxx@Óv³Êæ4Í0@|VC ¿³ÚÕõ%èsL'Y#Ù% ×9m9+ù¼v
oÏjº¬.8|7§­lë3ÐÊæ4ÍYÅ7WÍ¬éG >„©Ïj¯ÚÎëF]w«¢ÕÖhž7sÚ.7kÙ ÔŸÓ¶Èá˜š×ÏÊËXÎi¹b—²³ˆ>"Ú?Í<Æ‚~ÑÍ¢ê†Ïð+í|¾í˜¿Ø3¾í6áçÛn#ÔgšÍl»õqši©&ŠfBsÈœö»¸Â›Õ–7kP£½Yme×‚
?îR‚ê7ïTh—õµ¼YÏÚmŸåÅÅœ– ú’5³^L\a^¯ÖsÚ¢!­žùjÞ ýkÖ¹o"Ræ5½º*äõ¬¦s×‹àŽZ©£ª¼ðcnó÷j¿¥ŽeÇW÷XãnÀâþÇ’ Ì]'	œÔqbž{y‡‘`~„‡s¹”2æa‰ÜXÆ2Ï¢ü>ýë[6vàZcU&ÂþBjg–”£	aúŸ©Œ¥ò†aCS@xÉ®¤aÀÙºnMÕxcNÕ–ÐSel”‚‹-mÆGûø`,ž˜È­!æKç˜h-ìA:ŒyQ¬Lê±Ï¬a€´VÉk»^oMÑ:·Ï`Y—ÕUÑÔæb„Æ–.ke¼™-¦ºUuñkÌmol)±Ù‘ÆnLŸ×*£À‰<¿8_Øe}ÇQ·\©ßOñ‰u§žn¥þ4¾öV‡Ö½ªS©“”å÷Í•TU+F/9| Ó#å-ÖMQ©‡Gß|´•ùU\`Vßl™Á;Òãß:èn]HKßhìù7)ƒü­T¢&c;øò	+Ûlóa>cw<×ØºÎc·ëz¡ºÓìHøUê=Æ‡<Y^œ öê‘zþÓjkÜBiD&*Å€Èbd@I›Ú0CÐÿ»¯Ü¿LÎ„ùêÞ\³¡®õ¯áõñé]pplÙ/‘sz"’ApŸGyžÆ¹ÌCéxNèôø©mé».fnJOf©“FÂKØ}	Æ_Û¯Êb½ÒÐûÎªGºþk
geq)'¹FlfˆZ%ÿ=<¨Q‰–CäàPe¤3ÑŒ“ç`"n}…ß|X2œüåWö‰ë8*wÓfRç ç§Ï¯„ÁüR›!¦‰Þ)Hý(™‚•ÐIÂÙ©»/5´Ýsï§ÜrÖD—ÚÇã”Ž(dO¯3	Q2Ä@ÐãÉ–ÿSæw¾3ò‡äâý#ß—¼Á«ŒcyG2yYî‹<Mâ$Žbá?ÜÈu}?Ç"~*ƒ,A)*}Ç²HOÓ4Ê˜wŸw$S!ñµ‘qµ)P1ÄÌ)Ç!¹ñCñúznÔs%ŠÈ«¢QÙ™•ØkêH;ÝB{²½urÐ0·N@ þòó?àï’‰¢~wª.-z¿­jQäš-&®z†²…w†u9–åúûGwaã?Øöã+`×hiiÿªÆ‰—ÖK–É®µLzEÓ…¯ÞCCÝ[ýÒ(†ÉØd8É¦ßÔ«u9~ÛTƒ·¦~|ÇwÒ<ÿ}#å¥ÅÙº ‰hÃ¶Ä,:ä›þëíQN;,•Å¸îÊ*eúb`‡TømÏcÁŽlƒ#¬jÏZÙ¹jƒ9£qQLuJØ®“å•Ä4W_ÿT¬²¾ýÀªwSçbUWµ²ÿ"
ïƒÐV6*¼6*eiüU‘ÅVçök3bÝyUK¤²>Â·]ãkŸ¼~û£bñþí7ö÷R±„ÖSIôžµVárkŸüÇ[½Àð°~Èdx}EÇŠ1Úiöù §Ùni`F¥]ä8ŽïDcÆ^èÌöjÔïè §ïß¿û÷ä´ƒœÂÀ‰‚Ç#§zU®oVÅy.önÛQ¤Ê-%åvCCúf}#oHHw.Õ| å¶%#Ýu¤×îMvÞå+ÂW9	Ý‚¬ÇU—[NÖg MÕé’®Ó%Q§ÉöÕÖh¨:Üu˜n+“ídºL´9Õ©Ì‰NeNv*sªS™Ópœì€ãT':à8ÕÇ‰8NvZpªÓ‚ê° :+n2Àöë<#¢L4ò†ÑušQõšè´ :“o²YWt]véúì’ušl;#i¢ù ÂždZÆ ƒ@xCµ5€2ÕdlÈö3’&ëuF×k2TÐn8]¯©Þp2ÌA9èàP×ç+¶&£Mâ[I¥U)U7d(‰
$Ña$2ˆD‡è RCôêéðD*üMãRÍƒGEØ'"L†˜© 3^¦‚Ëdh™,Óae:¨L‡”é€2N¦‚Éº  èsCv§Ñè+²NÓ@­†ðþ¡QÖ|ª	¡›†¬Ï4ø¥¡»,hÖdï!ÙkH÷Ò½„Ê,LÕi"-­ÑæJª^!Æ†ÎÚ¬ÉŽ;²Óî†nßÑm»õº$;<6iÇkBâTòEÑ¦œ•†lV¨„9™,¿¡;SéŽT¢•ÌK–ÎI–ÎG¶kÉf£¥›Ž–l>z}@Cm£4”IV°§Z¿^S¨(gd”9e’½<Ø‘%\%éõNÄÑñ‚W—›õRV:0Õ^7ð­û™ÙžîzÖIø÷¬6³Ø>&ÚüÁ¨æ3z:iw‹î>¢x?±	ßâ¿[ q¬nÎîyA(òT2WÄÒËá//H¸L#/ã~ÈB?w…Ÿ¹—Yú‘pX
ÏsØ}YÓ¾é+Qê"Ø}Ut6ŽPçLƒÜa,*L×‘u÷'½(Ú!)Å#ñ8Q²vL_¡gÎÎ4³“ë¦ Ú•ª8òmÍ?`fSÛÄðÉæÔ>ysj{Ž-ðß±ýû¢Òm¾_eÓqªš”5Öâè¶‰7Zû¦òRýÖi;†!cÂÄnVÇš‰‰ËLi]æ¢,þŒë°Óf…£f3º©ù±.åæºn„þÆœ¾ÒÕ\×²Á§‘ïvj+ËúÚTÁSUL­é+èBÕ¯2øØ•5fÌ4«!«V—,QuJêªŽ²âÊ[öX^Ž6à§òŠ¨ªé(ÜÂíà+¡ž·ääýO­Ç¬9ö75ÌÀ8{8y“Ê5&!ZQYÀ¾hÆô&ð&ö l*Âlcœ‹²ìÛ®Qõã†¼yº Æã²¾«U8ôpƒo†Ë†9€Ù¼Äôsòf-9<|n¿Á«Fýów¯¿ýñ;«æVHXöò9Už‹çÆäz!ììÛ•ç<7Nv*Ïn<7›‰Þs/)×¦ƒÿòê¨^ü„”kã¹Câ¤š$SŠ&MC•
r’ôyúF/£ÐÏàMZ=ïÄcŸ˜¦CC²†+“Jä„Ax>’(ŽŸŠÈ“<I\™9‰ÏEž§‘Ei;<s"×É’0ñ„Ë=?Œü{KÂþÒöç7ì“F^ªÛqš¤ù¦{ujw0ÑˆNTRŠQ
¦9ÌÓ(¸ Ê‘3Õ¼PÆ#c“{EØ‚u¥þ->XçíUk÷ëkÖ•'6*Vd	þo ÏþMñRéb[ûë²ª¯4VœÃ ÷1öÂÞÔ=€XÖ€ÎlÆ¨´Ï`g$¬ÒÆÂ.@(yƒõÝ†ž`&×¾SƒP3	¿¬RV+àfuEWJÌ$nÚ„Ôä1«`æYû?MOp©1/É8ñ€Á`´?Õ>0¼‘öÙìVšé‡}ØýÀP%¥°®X^\ô*Ý§øªLo¬;·–¹|#ø[±
3Ü(˜Z7ÒÒÈFâxõK5ÆN²²­GúRQ™,­ef«óÖc>]tNqÀÔÃ·š‚q’c…¸Ö2HxÒ/„µºÖ¦‘ÙÝ›ì¯…÷eiíÀÁ÷CÕ¶˜ŽLõêõ/oÎ¬±J¡Æ¥pR='t—ÌÎU91&¦›¢;/JÒ`Šî¼Ôææ[å}Éµ²_h<¥x¬	òº$©0×þ{;nò?cnºÛã>8|I¦ØcÁ(éDy³„ùiùŽEnÊˆ9~†™çøYâ
7]?Ë<8tÅqà$žë§ ¤%÷åmÕhâïkY©\amŸéq*£ÿ¾(7ëåƒè	¤d»B{Ê0£\—*Wþo(þ§Ä¸ùÒð³†:®˜~·
 /ã×Ê0‚6–±¯*÷ÙX d¹FlFž¦@£{m9V híæ²Gœ`­Q…n*¨˜MÈœõe§ OUwrèâìA‡C­äµug\(¥Ç§vòÅmçD¿–2Óò@“V¥êìVCÅÙ_¥M@ì]ÏL%â	kY#<“ÿë¹¹Æ*¾uÅU‚8¿¡ÅMÙÝt+ÕZºL.ÂÍ²f@f²·qîÍàŸ¦Hgc
ßÜÛéú}7
w’õ˜½&¦ØNÍKqÚ½ã‹0Œ’'à‹íšÐàŒ-}BÒd¸ƒ¬÷w^ˆãY}†£óy[}î›«£fÕmÚüX&õsdœ0ÏI;nG9‹¤çä¡+eæŠœû±›Æ<OƒÈË8>¸ËüÄ]1Î=ægÌ1kXèÑýç¥´?â¸ê¶÷LóÎJ»_ƒ(G•Ú~¥&¸|eÁ>fŽ5éNY;M†Ûòv@‘Ü¤Frø¢UA›K°}R3k;Ë7Œ’_Úí¶Ï˜ÙKÙoQ²à[¯ðB¨0õ_Ù·Rò"lÐIlõŠÜ©FŠ²…wKCäð£ìØ[•EVá&!,‚ vVçÖ‰d-½íÎQÇ¤Œ]˜Y17oí$±ñ$›ñÂ.€ù+Jeî¹*€•ñâs¼TƒÑáçÿx>Xï£æa‘$Jñ˜B¶r:…"NÏ¾¼Âyø¢ßûü1ÅIâzOÀ¸!)>‘°ëÐø±jÒ$Ž¬@:$ëtHÖç˜¬Ï1IŸáøCu¤|öš‚&ÈÝ·gì‹÷ÜŸØ{îÎ8´¡« ì9ÖemžÄÒÉ\Wænž;®ôâ4I…—±(u ®x¡ŒC™' Îx,Mœp<÷…ëÆ"•÷`ô"U×‰8À¸|tž’¹*)ÉTµNœ{9R*&õÛ08g+¶ª²Å5~¡Ênü¸XèI~.°Òíå:Þ-—ç8a85qyŽçs¯Í†	ûlù^»2~[¯XQ½€ÌÛ¥žœ',V…ÄÂ5§¢K%ö‰ú½ûüo×>9øÃK¾^6¿«*¢ˆdA.ý<wEè9L
?‹\Ë<t8ó²ÎT_æY²X¸¡tÒ0	‘¹ÌÍØ½UÛHko"åwœmìÿ]W0ß¬²?à¨…£ç‰ògÆ{¿€ÄÃ¢ëÊî2óŠâw%ëdc5ò¬oÑ ³m<5F¡Ùå«•ìØÙÄÏä+UÈ%µ*[´ó0Ú½´«íš^³4U€tÁn,oº.¥¥‹j³RU*°dHhØÊ…Ç´Åî÷«j¬i¤¸¶;lá}Âk=äv)7gÊñÉÖ=èiüÊ°&5‰¦#Æ‰ï%Œµ:ªH")hôŒlLÞìúÔ‰‹þ1»F¦Ð±dõÄÊa:×Ì¤ßÂéý:Ò¤ÁÊ=š›ÄC_{|ëIˆÃë¯^|¢„°ÆêÌ "¯O›Ë+ê°eé™‡ÚáëKC•Öôyz˜ï¢äˆ«ç}Mù‰I:8ôð´R+ø±.'×O’$ã<NDÀ²Pf!OÒ8Hƒ@:‘p7ñ¹'#?fÌñrßõ7÷ÂTò˜ß Õl=>ûd]²B×¬D€vs:/RPÓÀû¶wf¦‰ýÅ.TýIf\®t©I]ŸÑjû</Ô•¤ò ÖHÈÖÜ¿¢]guô_rÑÜ›bïoß.¶wzw
oê„¾¶ò¶ÌøxÝÀ&\×Ê[«i]é•ÕñvÛ/Õ<#ØåÏ¶ÁŽ³ë¹ìLñ–7Ûô2Ùö_€¸^7 `˜_ïÜQsüýûwWÞöÓ¿«ï¦ŸÑ!	?üøÃG]tjÁQßüòæ[ýß®^ìÐí:?IsxgÍ ”à•¨ˆ¶û·ôß~Ý÷ˆ:î—j_ [4ƒc•‘ö’<p˜%ÍSÆà IxÄ~Ê(ä^$ÜÉÉ™ïænd™'Sß‰ã\
0÷>{:iÞàÙl†·u“žæ™×Ç¸”$°#ºn3‰h6ç:œå*ÔY…Ý xP¹p(á„"nAøá6Ø/ãÀÚw 5žÑÌ=ãÄñ®ÿF !Š&'}àxQ2û°7ýE³Þ«uè=Áº®×‚FÓ´‰È’é`$½ÞÙøJÃú'Æ~på
ú ýX†õ<Ì&b™IKq™pÝ$B»e;yä…&hayîy1ç®Aúœ9œÅ‰¼{à›!ÖWO0+m}R<ŸòZË$o+ü@®-e¹¶ùR/(ÎtÜ%È2 Å8PP­êÜCî°Ü.UÀn)vV×—|²‘èiñ’µ¡ig|è@b¡Ù1!Š!´éñW–Õ xáùL–õµÅF¯ÂtŸ‘$ækK±sûÆ:Ro'ÐÎôÙžfC¿HÒýJÒq+Ia-È$)Ð%"K)I÷ßëÿg•¤·Ç~xIº**ÖI’fn»iÀ2!¼PH– ±8ãI&dÌsæ' LcÎ˜à~"AxD<ñ<W!üy¯khv s< ì¶ÄmñUM{WÁ.=†wÞzÜ>éà˜i×¬‘/$æüÂûaT7vÎ¸¹×A	šÞ°7l €M6&6ÀÊYÅ7pT2åÜþ WB@1ÑÃ`&Ujh­b(à]XC$ô¶]ËF%Ø€Nt»ÝR©ê#"™`ì¿¬+ŒŽ°.êZÊ*-êÈí˜¼áìL¥€hu¾.qU´rŒUÊ2PR1¬º/cPÇº¾–¨;-ça35º%ö^GgA«ë+MÎsÛî	õðZìt@gQ¹7¤^œ¯a\¢À›¦L'2ƒ=‡¾:é‡}ƒöìÚjø^³ÖCH‡Øí€ ]ìÕ$ÙKuÞJ¼äë0šN³öœÐÉì$c^ï^¡Ç1‚Ó	:‰ãÄ÷’ÙèDMþ—‡‹z/e¡ø Pž.Z­[¼« ¹Í…µ>ciLÊCEœ×eÝP­ŠæúÜ¼\çÙ…GG»¿ £ÍË–Œ6Ñ|—l#éˆóUKãÆÄ›šè­W gˆ>Þ»v¢V“ˆ,ÒCÑëyz¥çë¬¨¾ü·üœ×"- ×ÏÜÕãsyx%j]õ«£%Ñ‰Ó0ÒqBz	ã¹ˆÃÔIŒ¥~À¢ Ë]ÁY³Ø‰C‘,ðÃ0Y’¾ß§C½o
€ÒÚÇÔ„¹|•7À–j¦î×©Þ›}¹cAÐ¿V4GÏUå`{²œ_uf¶D‘ç4¬ît€â50WÉ µ7Rþ¿(ºÑD©“Âè3V‹ÑîÞÉŒ?_×ÈñDµUáaYæƒ’eM³õ™ˆråo‹0³Þ®¡÷ênGJUÞ°€æÖI_•êšpò=éuÑj‚ F*Ý4¦GmœÆ…VrVlz“‹¿^ÊJG	áµão@U^÷˜‚U
ãüŒ”“Ù9òüÄuÓÝKH?Ò)nFåÄ­ÿÊ	Îä‹åtÏ>O»ƒÄ¥ ÂHš†*‚ èótÏÿ9¦w†~xqßµÐNËh¤®—³0`Ž2ßËWQàåÂO¼,eRyäfÜ“€ò”¥™+‡³Ïî}É‡?ÈÎVÃ1Ô]K‰åª‡ì¦£Œ7)S”5qˆƒÔðó=%Æ„±ç¶9Ïm_³½JD/M®šÄÂ»de>ü­d±¨á˜šœÛ¯K•©¶ƒ%Â4¸ÛX˜<7“æNT%‚1[Ph‚m»Åð·Oqüm‡åè tnÿ]ÙgQÒYæÇAäÉaž‘¬ž{Î÷=o×Žèù©³S« Há-¤_›/Õoêõ¦).–`®ró"´o;=),×,‘ØÖÄ©èÒ‰n’~ï¾Nñý‰Á\€/ëkÐëÊ#	ð€¹O=
øoŽQ¸ŽÒY:Iä¹”"Kdœ;)sB:N‹(2à Ëe”Ü›ööã$:Ôä2S‡ˆªóó™°ŒaÖÖ[½ýšm¦‘w(ªàT•ƒ^–ªÜl	L0kTófvŒÅx>Â/žì,òÏÝUTAOM‚i\DäF±ãÌ•f×½¨ªû•zQôUÕ,Ô3Ä©è’I=š~ïîþãE.²®c|‰çÁ“ö	gåœd¬'&kåÍœ¶EGc5§%& @-bNÛ+Ö\bH¬òlõŸÚ —üu,©åÜõý„ƒ gÂ÷|žð,q¸t3æ¹I²(N²<ˆ".â4pR'âI¤"N<´¬ì©ÿ7•`m[OÅ$u´Ö¾‚Ã³T†d­Â¢Ï~iÈ*Ã÷ ïÖ}gŸì08Ýå`á•Ñ¥iº°eÇÏ§—ˆ –“þ²ò¢n@_!ÐÈƒ't5CÓ°Ý­x7Ñý²X+‰*~Ñ®´IÝ¨ý½ñ`ã‚@O_RÞØk/[m·0©–Â;D—#Ì:ÒnJ×5ÛŒŸMå, ûYWŠ¼®­¡ÔánÿÌeƒ¨¥öÆ%¿||{–À£Xš¨¨¬ºx…µ±OÞûöT­¿ªô^¦áð˜rÃû=òæã–î»<y>kvâ/îVC„÷ËMÜi@’óÝ¨a.^àÕ~áUà%O€W°4Ð
SÐ$ƒTûïïv§ÿ)·~pÑ¡älÄ±ŒiÂ£0å2Íò”YzÇBƒÒË3ßÜËáDnê¤</ÍY¹™ð£,ð¸ŸÞgýïìQý\£Ë³É¿nÒ³bÐißù0Aå†ç†„éº‚KS\€ˆÃûôÑ÷“™Ú[eØ]Xè–;MÒ>$È4nÉ(÷Ñkwk]‡Þãµ½•VÑnóÁi¾P±xägR™)¬¯°_™ëûd¤’™+ËBæ£ÅäTp–ÊU¦³T>NàY¥X˜	¬ùõËòU¯:U'P‘‚¯J=KÏÈ<2?aDœºÁnÆˆÀK]z;øI0?i§y¯^ä÷^=Œ=ßBÁ»_`5šÍy.öïi¨–™('üHœ$[¹"N“~ M×ïˆ°ßa¿irÚ´éúö;!ìwJØï”°ß )`1'Qfq*ºdJM¿waÀKÍ‚c×,8ËŠêQm÷_»à“»áà_ŸåÅÅÑ’øùQÂ¢œÅ Ä	ßÉÒ0f¡\ÀuÌ‹ÑÇ[
ÇAžä‰ðçžï%ŽŒRžŠ{ô½·ª†xkgM})U•oTž2]Zü3õäï\OÀ:åB]ë¾4FÞ
¯†•[7—V›ä~Ðô0|e–ºü7êrí˜®Ù8™&ðˆ¥íÑ²º*šºÒd?(‹×Àù!=àXÐtè*zT[ª‚üvJ•„ÆÙè¶~cœ©¢ö6öZ`ökÛÜø¨‰á®ûè´gu~f&õÜ~­*;ü6ò
ÁbOÌò1ÆÂÄ§NÍÔ M¡;3C¶&#U³+<0’F•=&¦Î‹¦í`PêÊ+“)’Lg\4ãËÑO©ì¸ èÒ¯ ä¶Ê?6œ˜°Ú¢,Uá·¢êÇyÔ'4x«ªA½ÊÃ°á)Œ—=¾K*èvpÊË$gzÙžÖhF×Ös´>àÛ‹”Á/×¬ê;Øf¸)FO¾ºp§ßBwf{›¬‘×MÑÉíž‘ªî0Y“¬*&0múØ?Ó¢b~ÇHjqÅ`”r(ƒ‡›`2ˆ!˜YXã>MŽþ–ðÓ¥Ü\×øZ%·V©ÓoŽdmuÿ€YßèŽª€tj%oê•“¾3jL©©·«Æ0ñú1ÐýíýÌ9Ï/N‡:º’5ú°ÂwX¶ö'÷Á32ZÌÎ€¤^ì^8Ä¡¥þ42:ôÃùé.Õ¬¼˜,özåûñL¬ìÚ\íâ½ë ú!Ñ iªdèŸ¢ÏÓ·éx"æTŸç¢šúsÚþK¤Ì¾;÷ÇÁÙ}s¬À
éÄqg¡Ïc7M}Î¤—åYâå~"Ý$âÈMb7ÌY–;Â„-d ¸pÒÐÍyÞWÌ÷[	jGÉ¿Øì…¾U˜»?lñ0Ö¶'XÛz<ÖÖ¬§am±¶õd¬­sÅ<k1–ÄÚö-¬m=
kÛ¬mÍÆÚ
Ù^ÛúýiQüþÅÂÑè<í²îK¡&XP¸„ç3‚^ál_8r¢[÷E~yÞÎ}QìF³ã>‡9}A_û-ìÆO¨ ¼Ýát©Ó0 NF˜Ší¿ç·^°?¥ŸÉ'GpHtUáÜ	¹q¸—¡—º	ÜŒ92epB°L"NŠÝ$	D¡È3øÉqS'È3Äi˜Ä÷9›ôÙÐß+Ö¬Ràìßs~~nŠ°ÍÌø>ˆùÖ¾‡´Îƒ‹‰¡3ßUÞF¦ï‡¬qã7oT?÷9|õó>\«¤HRP”)KÅ£bæ8éò¦kGe—™téaK1m	`þå×ðäB™ÐYºàE@	“ÓUÛtîxF8`~êÜØIý[ùœÈßIë;q0˜Wäì9˜ôIa5f1hä´!NE—LJÓô{w÷ÿ)eô§p­œ%$ …ãD.¼ÈŽ”Y;"YÌ7Î£Dfa”zdvœ8™—q/C×…÷:d¹çF>þß=ú—Ÿÿaõ^4øáWÊEQàJ¡ýL%–×cÙ.åþ98_‚ûJ4õú¯‰¹.75Z°…rõ|ÕZ¦´˜ìêf§)Ð(ñûÌÆã3Å~àËº.1!½º·h»¢ëUÀ+*ì†ŠýhÐw8ý+ÐùÚf¸Þÿô±u>¶SýT¬²¾µ¬«Ú~÷©'3ýä8fÙLŸù¹^±Êþ©N?ý aùê«XPþOŒõ7Y^)§\õÔƒlìÆq÷¡Guõ.ó705ÐÇáÏ7KVqL·õÎþQŠ6ß ¦nÝKPOØðÜH÷ûº[ÂZ¾Sxú5Þ™ÙßCï%<‹0J?ÿÀÌøC#·U}úŒÐì4½Q€xwâ‹ãÐ›Æ¾Äî˜†éó0H-ë€ ïß¿û÷të&jÌnò´j7‰§ÛšŠpßnH¼çzì0…?aO68ûw{6¯'	ü2ÊÏû=uÞ‘°Wî…2LYÄ3Æ¹+ó\zAâ¥Y’øè
Ïõó `^î‰,
Ó8ö9w‚<ä¾ŸºB†÷G¶<:tö£Ç¯…:G²‡@C×~šÇÍ RÓÛ—H}¥*ñ´kËîÍ¦)J,É—LÙ1šm>ÄbúÖ©[ªÙ!×þ§ž7‘Âö«mé„®Ü¼Bb¸Ø}É¤&gñ¢“K˜cêþO;©ÑiF`ø]¨êêŒµ¼(N­ÝŽ1-)/å¦E82½2©AÃoŠc¬û[`!	dy3 œÌ ôw…†%Kacóø3!³Óq¦Ir+ÅWàG‘OoeÂ8ñæÂÎ{±Ãì‚.`§8Ã¬=ã+~í]Hjê×ßN’Lç|Ó¨î“ô<‡×+F“Î\’iY-W=§ ÞyìlU÷ÄqŠ8ÝŒˆ.'¡{C2½ -öO‘ÊŠ»÷¾òòˆU ÚåŒ˜¡ågdÂªEMdŽ;œ¬ú•Dº?¸9¡5	—¹ÿ²kõ­¥>´ºcY$M)Ìwœ ræ$€Gã<ÁÈp)#Äf.–Ž9ÒKH„±'Eäy‘Ì§9‹ïÓ”Þ–òF¹þë]`É*—úÉàŒØz~-™±tÆ8¨:á qXmmê‡iFXV€u*»Ï6®¿¶[@Ÿ­.—ÑÑëBÕŠC´]F*2)VcÔ½òXPnàg)½ÖH/€yøv,ÌÉ´hæ!`¨Y*k©²Óª å²»QTÎOwò•ëP7cMÃ6[ÅLA€¡¶¶<S³^ÛM_Ù' «q¬ñµÆðSÖ)]Â£`÷¢V·SÇz¢–PSW”,ýÄá;Çð!ÓƒYlýàm;âòÎèŠªKÕm3S¾‘ö4“ƒ9Ã\•Êerãem]éTW›T»ÓsëNž©qRnT)¥+â§ó1éB·è¢¨¼*Dµë²r·)—einÿÇ-0YD+ï•Lz²¬›,x&Mz‰Oåš²Æ\SØFWüUÞíØrLë¡¼5µÃ¦›sZF¥®k&[1|ø7Tÿq3G»À;Ÿkì¤7Ò”KQYj[Ü×Ry—bÕEìy;0¸yÕÚ¿žÁäõ«
^-ÉaÿkÝæ¸,ëk\vf«üw·~‡e+.4£“raC§¹Ú_¿ŸªNšxj¡YÁ<eŸ¬öJµËNÏíß2yQTÿ;óÿáVGµ]€¾]©*†Ÿ2³€æv!;Ý“,|úl/,Èîó²*ñ)==“‰1U±®Må+Mñ™fgÇd©‰“Üª’œ¸Aï”INQì'óËËú/F†[>Ÿ^ðg\G$LA“L5Ø·»ýˆùRaþ9@/d9»-¸¨gEÃ<&±écÀým•bØþöJÝÃ"lŽ„ð¹“2"	e9"ôcø<È†,Œcp'ÊœØÉ‚8õâZ‡àþL:2”âÞ”æi«Ø^åÏ©#}QØkùø•iÅ<Ø¯ªj­ÌYY\Ê»* NæÍ¥¯ºd˜fýjøqâè>Y;8Ä`½)îé±pò´ö»…ýfaÿ¬pÃÿVw)÷Œöä·†]\H¡ª`¼ZØ¿¡‘.Y¢*eÞœŽ›	“®ýÞ·RNU©hŒÚnX«Âw¶8Ëúuà²ÐùÉc }*Æt·À#o¼…A‹¡PÉ]k+n0ËöICF+„½C¦õ|0M2;)¼&ôv!MìøÞ4)¼»Ñsk Á­örk²ç¬¥ÑnM†Å 5HœŠ.%¸!è÷îîþ ç Œ;3upVÑ#!…'Â<ÏÜ,ãi.dš±Äu²Tð(Í™:Òç>¨’^ž'Iª§ „',Ž¹ïËƒ£åŽò@¡ÐNs•bnNê8Nå|0	E•zÁªŸíkf
 ‚ò¿4Gn¾”ÁJÛ´Ð*‘³UQn€SÚâ¢2ÙKUÊh‹”ŠÒX7Œ-B¾^­úFÉyÏq¢ zù®Å¬#¬ªêá’¢YÅ—Vµe²´dÒV£©ª`ÜIöNS±Ö9 $è¹ý!ù
[¯%k˜	?ÆQáÎÁžÄ˜8S¡þRè…v6KÕ”1ÎÓ$±3 ˜øÅâtý<ÃJ«&*6“–I,¯¦š+KœÕG6‘fçöß·Z¿ja¬dû•µµ(ª€e3ÊßfèõÄ‹f'qŠ¥­™%ŽF¥zaÝ@¿†®©©8Æ,‰æ­¦'“ é‹†­ôÆ,sÏÍÎá¸nôÿ³÷öMnYžîÿüßˆiy§ªD¼rãÚrû%Zv+ZêÙžŽè$À",’‡R–'æ»ßL d±JªYõTi£;Û*“à/‰Ì<'O&Î“]<Abÿ;ËßëMçóèÖYÇ­—;Ç:´ªýãM0þùÙEz71l–~¨‹4ŽGÔï4ÏóEYÚe#²=¯ób¡˜=}>Ó<Lñ2©ì ªñÔ·?XÄ!#ÙO#æEEábŽˆ—IU©JqkÓm£;Mä´PY•‡¤òU^y3gnª7Í¶Z¬Ã9’îÔ;H{‘ÚQLot;eÖ ÕHÍ×öZÛ'iÿÚ{ÛÛW¶ÞVV–Èf±Kñ
ˆŽYXu:PãË¹c)ñ‡=^uÍ±*ÝµÃUÛº]]sûúÑÓ·Õuñ‰á—›àÉ÷Ö¦ûð–—;¢ò-/ý¾ÙÜ¶/¶µú€K­öîE„õCÝË¶òä™]²Þxñs©ž<ù[ç87]:<€ Ð­³(ÿž4›E{§£wFØ-¢F4¨~_Ê-áløúqÝ«ýšôm]êñùÔûÇÇÃ5‡—ïF]kªõõß×êúïÝ1&·otå5ÖW…¹þŠöZ‰ÅÚ½¶ººù
¹ÅUîÌÎ5—½Úºw|úå—ô"×UÉ]2$9¹á³µ‹ëk®±u\3WM±’ëçù¥×·ÃÐS6¯®»dì>7^pCAÓEÛûcB§ïNM–ü3‰x`”Ÿ†q—U]dIÇYRGy.ìÂi^V‹°òƒÅ"ZTYXFa^ge´ÈçéÂq¦òÌÏ‚+§ßxl—ŽR:¤6Üq¢‡W´ëÍi³¹ŽUÿÝm$~4FÇ`Z³QÒn¥²cªž™5Ãªî:i]Î¿õ2íÇƒµ³^—uë¢tƒØ¸<$OîvEZ U¿UŽ7á-åí°½9a°Ý·{ªõ°±{pípNpØÜ^[×Î¦t³Óz3wŽ:à•ûvˆ¬ÚÿžŽèuî¼c±òd8û·YºÜÛc—WÁEFÇ‹wä¬!—äÅC¦³N7ã©AF"µƒ³è¼²®7ã.ñ.‡·;±ç¹cP²ØÌl›l›]®h+p±’»æÑßÀ¢ÑÏ¿û~,oy)æ½ÏF=â´†GhàÏÝ/].„úï3—®á«ñëtÁ=»sHºƒtGcJ$oân:¬·UBÊÇÇ.ïõ)v§!Ë!˜ëºKÙôK‡2ÝYÙ9\õ3ë¬›ÎÀO(ûN^¥ ößÚ.·£öR^¥d>OòÃ¼J‰G·Ã¾…§¬ÛDa‡¶}°«­çñ<ø”Â­A’ýŽ÷øŽ‘…"¸à‚‰æ‘{¢It×Kñ}Gÿ˜ù4ÞÁ±¢vbwµUSîV''œ$¾|”DesíêÇþf}ë‹Û~U=úá—¿ýóÇo^üx‡k*µ¾ÅE‡øž[,ÓÜDulïîwìë_sévUÜžs}³«±ÙxöÓ·OÿœD—ÛÿN‰¼D¼nI·ó¡‡U_·|ºðíG9×Ç§g–7<góÅ<È²"ªÕ¼T•õ¦U’-æó¸H²¢²v{¡”%I&YX%Q¤Ö×^ÄRuqUÞpçÈ|?8{¯dð¯m]_xÆ¥J<Â2CÔ?þá¿þú§]~ëóY?oÌÙ5fôW‡³Ö}~28‰?Ø}S½qæ³^´)œó$ã¾)žÆCçI¿&BLÓÍ.läÿôòéaº§é÷g¬;ücÝ–Þ3]v•7¼DóÒþðiÑnlá_žì+æ}+Ö£o­¦„VÞ³é,…÷h(|÷ñ_¬Gø¢?[ÕËýfe]Iˆ=_ÖÖìëö°¸§Kiuw¡¼÷fËšÙ²¦2Ý_ÈŽõÎ½ÚmÆKìíúyš……ê¶»Ôô®ÐKéÈvßÍ¦ôc—Ê“óÃ‰÷g»ÎZÜÏÏãxL±ñÓ·?%Î†mäÝ»¼””l¸µ}²#÷š—Ëí1®n
ãýÜÔ®¯ºšçvÿTiW…e±nw¬@zXîs;ÂW«â’Ï“€MÅŽ	¿ÜË?×4äÐü<šw‡Ðe‚Š˜½ÓeÞ“]nß©w´£¢»PäÏÒ¶¶¶ßë•kÓoÝ Ùì_¬úfm»½K5ïàÅ³ïe _¨ÌK[ãº{oÿ½œ9nöÞñåŽžìÌ	äŽ†óF•œ¹¼p«z¨lÓ¹"ä´–nÃs±ß¶Ãy—oµ{	i\õýg£ìpŸ=sÔoŽE¹\÷Ã;„»{·K*{gÊÉÍ%.;Û°ÞÜe¢s`£nxxºeñ¦žÞ©]Ä¹Ä¶ãÌæ’þ¯d¨ÈæsïteÍy7Ê<rë¶Óån4ÊÚÁ˜~°Sâ«Ùþ¼’[ÛÚ1€ŽU±ív…»[q_[ëª™f="òù|6aïæOuu«àý,këtFí´þ²­§<š­n\MG¹vgšíò-~˜Œg¶KéÓ}éÐªOì¨{gÆº1©ðû²ñ8¦ö¬¨¦—tÍÍñv’YŽ±XÕ¯¼ïídnkñÆÁ\h¤·3ñêì“YÛFó[c›ü ÓwV·ÁÜ®…ýÃsFaàgy¶K_«®s>æ°Ñ÷/>,º¸ÒõÓ|üŽ¬yª;~]œ–ÇB»Mò¤v×½Å[¶îL²¾In÷–k÷òÚß­<©¶»ÓÅÑþnåIm¸ÝÁþ®Z´¿[yRmw§Š£ý]µ\·Úp»“ý½cû{ö÷îïÙß;¶¿w`ïàþÞý}ùíïVžÔFÛÝéƒâ
nxE¶¼¢›^±mN6N§Ûoà¦'[žnx°Ý·+tº±ò¤6ÚîNGû»•'µávû{¿Fû»•'µÑvwú 8Úß­<©·;ØßSkF¼Vh’'µ±‡ºÓÅ±Á4É“Úp»CƒÉ‰ƒAþIžÔFÛòâh§‚ü“6Üî`ƒü“<©¶;äÅÑþNù'm¸ÝÉþÎù'yR›mw*È?Š³ý
òOÚp»ƒýòOò¤6ÚîXç‚ü;}Tnz*È?©£“äß‰ÓmÎ7pÓ“-O7<Øî`’'µÑvÇ‚ü£8Úß© ÿ¤·;ØßÁ ÿ$Oj£íŽùGq´¿SAþInw°¿cAþf¼.NŠú \¾¢”­F)w”òò§¬(éíŠRî×”òoHk¬RƒnˆíôQql
Ü@ªcÆg§ŠÓmÙŸAÜÛé£âlÛc{c“:Ûï©Ý±8Ýöd¿7Èvú¨8ÛöØÙ¤Îö{j—l'N·=Úï¹²>*·=µW6©ÃýÚ-Û‰ÓmOö{pÃl§Š³mí™MêÜ¦Ù¾ Vn~jßl'ÏN<ØÎÙ^ovî¡›m}¼ñÉ¶7Ðvú¨8ÛöØÚ¤Îö{jm'N·=ÙïÁ´>*Î¶=¶—6©³ýžÚMÛ‰ÓmOö{lCÍªCjN™ÙPsÊÌ†Ú Œl¨9efCmT¦¶ 5§Ìl¨9ehCíÌ§†ŠU††ŠU††ŠSf†ŠU††Ê Œuh¨Xeh¨Xef¨HO§Ì§Ì•A*N™*£2Ö9˜¡â”™¡â”©¡aC%Â†J„•*6T"n¨DØP‰°¡ACåõ±êÜŽ€É:mLxMÖz)ÿFUºV\ƒÔ”°[‡cµ¶âœ2ö_ƒ-òšj×ŽVSÆc6HKµG»FkÍU{Œ}Ì5HSÂµÙ›®«>• ËsµóåâÔù<àÞI[;LI;cIi¿æ¤íTHIÛá‰Iï†V€íß6¥[žl%"ÜPÊ-&U¹|…ÍNVšš¬46;Ymjv²ÒÔìd¥©ÙÉI£³“+€šÊW”.4;/@ÊÐì4¼kÁ(ÈÇ“®?»{q5Ò!ñ›W­45¯Zil^µÚÔ¼j¥©yÕJSóª“FçUW 5¯ª–Ò…æÕá¥$HšW‡wyåŽ›:nvêÀÙ©ãf§Ž›:nvêèÙ©g'¬sS³S‡ÍN5;uÔì´|ƒÍNVšš¬46;Ymjv²ÒÔìd¥©ÙÉI£³“+€š–o(]hv^ðƒ”VgVšSÇWÉ i¬ÎT•·Åªèhõ¿]aFÆJSFÆJcFÆjSFÆJSFÆJSFÆI£FÆ@™íŠÒ…&ìámBHšú†—ðåîmÓuÌÄ×7ëš’^csª•¦æT+Í©V›šS­45§ZijNuÒèœê
 æÔkohNÞT…”¡9uxÁQfó4¾Ó4¾†³4îôAqìæ×`ŠÆ×p†Æ>&æg|¦g|ggÜéƒâh§R3¾†33îô1q0/ãk0-ãk8+ãNGû;•’ñ5œ‘q§Ï‰sù_ƒé_ÃÙwú 8Ûß¡TŒ¯áLŒ;}LÌÃøLÃøÎÂ¸ÓÅ¹Œ;}Tnz*ãk8ÿâN§Ûoà¦'[žnx°ÝÁ¼‹¯Á´‹¯á¬‹;}PíïTÊÅ×pÆÅ>&æ[|¦[|g[Üéƒâh§R-¾†3-îô1q,Ïâk*Íâk*Ëâk*Éâk*Çâk*Åâk,Ãâk*Áâk*¿âk*½âëßŠíB-æÀo
;`¥© V;`µ© Vš:`¥© N=à
 N ü†õÀ5³ëÝ®Ñ]ïIžÔÆ¼œ>(Žy—“<©·;ä]:qp×{’'µÑvÇv½Gq´¿S»Þ“6Üî`w½'yRmwl×{Gû;µë=iÃíNöwn×{’'µÙv§v½Gq¶¿C»Þ“6Üî`w½'yRmwl×{çv½wú¨8ÜôÔ®÷¤ŽN6Ø®÷Nœn{t¾›žlyºáÁvw½'yRmwl×{Gû;µë=iÃíöwp×{’'µÑvÇv½Gq´¿S»Þ“6Üî`Çv½1FÂ P
C@q( …ñŸ0üS£Û`“<©M{;}P37“<©·;dnœ8¸6É“Úh»cÛ`£8Úß©m°Inw°¿ƒÛ`“<©¶;¶6Š£ýÚ›´áv'û;·6É“Úl»SÛ`£8Ûß¡m°Inw°¿ƒÛ`“<©¶;¶6ŠsÛ`;}TnzjlRG'll'N·=:ßÀMO¶<Ýð`»ƒÛ`“<©¶;¶6Š£ýÚ›´ávû;¸6É“Úh»cÛ`£8Úß©m°Inw°¿sÛ`1µSÛ`1µSÛ`1µcÛ`1µSÛ`1µV›Ó³¶.ª7öiKYU'Ò/î¥ ¦/Vº—âî±¨¶>Õ«¢%Ë*e£×ø³:/…o½±¬û*ç‘ZJ«»ãu]5zÍß—ÒmwÃ÷ ˜{»§{+èzÅ²n¥ÃŸÒy)|ÛeÝW9÷õˆÔæ~ÒTÎ=5Ÿ-íþJº‡Gµ-NëÕªÀÕa9|îJ»¿’îáQuÖÞÃ“:(†o¾©°{+èS_·ëš7PÅð­7voÁiÈ“Âž]<,„/‹[](/‚‹Â—p/ÏƒŠ&î‹ Ï:Â—pÏƒ;ýxPÄ=Œì$äa	÷ò<ðñAž<,„/ážwZò ˆ{ØÉÉÃîåyðã<KyX_Â}<ìtåA÷1>¨“–‡%ÜËóÀÇyöò°¾„{xÜiÌƒ"À3™J¹‡"îå‘`§4Ë¸‡I‹;±y¡ˆûy&÷0oÝË#áŸÈý<üyg;áK¸‡çÁö<(âÆvòó°„{yøø Ï‚Â—pÏƒ;zPÄ=Œì¤èa	÷ò<ðñÁ=ÝèBÀýép	ÒOQâÃqH|8> iOûÝú¸K‰{‹Œxçƒ;}“84FGuh²œÄÁªcûG“8Zu°Õ¹ý§ŽíJLâhÕÁVç¢êƒ:ëžÄÑª“­ŽÅj:AÄÑªS±Æ:[y°Ï€²Q­;Yu,Ò3‰£U[‹T8u,~0‰£U[[ÿ:unéÛaéC;,h‡%í°¢–B´ãrˆvXÑË"ÚAiD¸ðØý¥t+Qw¬½jÞÔT½/hTÝÿøØÉo[yÓTu7}æ>jë×ºiw]ñÀ_½‘mßÈfŠ˜|H¸ìC¢_Ìºþq/Ï¶Ëzs\}"ÛÖ~êßð‹WÛ¢_vuqc?²ÿ{«knUìð|‡ZÞò²Û«Þ¢¦×]Ò{ËÅ®1(HÙÉÊþâÚîru¯}öòê^{¡èåüññBÚuÑ=ûããm¡^§µýsúËëÏ¶¶Xû£/†k]-¾~§ö×Ë?>¾s­Z~½÷Ïÿá>µõél'ÿ€qõGµ¬Õ«N¯§ZtË"ˆÛš¯N›ê?¾ø¯?½øâë´ÌÕ<+U¦TªÔ<‰‚`^-¢…Š¿ÈæU–Uš×þBUU’ga—eZÌÓÒ¯« 
‹?>Þ2”hÿ]íÙ×?»þê-dÓw^/ž½Aµôv÷ëþèÇ/ÿøx÷÷k;öíRgË_¿¬ÿ~üƒk'å5ƒLY{…§dµª•»Æ“…S~OAËzv^†»Ì~âíN¼—ËÃÿöÞ6«•-f¶.*[Ö›¢Yåªöš÷—m½yi›ÑŸö‘'›ÕÙWS	ÃÏ”lÜw¶3W\U¿©W²m6§^×›ªh+WÑö\é î'ûÚÏÜ?£×Þ£ýM½´­7\0}õ¥gE½Ít<{9DŽß÷«ñ›/§
¶¦é¶:ùããÃ†wbê½í×OíàùËï[Ý¬ªî¬óþmÕUêÓîÿUn³¤;‘öôßNû¯ö=¿~®ÛÕ×Ë¾ß>yü¸×§î¢ÇSŸüÇÇîKwQß¬mc6+7²ã<‰³<šÇ_x¥+jú(ã úr×üf«<–b¿ÎÒ<Íl§o6¶qíã³?	Ã$M‚ðÏ[–û$›§a0)¬DÃC^¶õâ?¾x>juß;wãêxQ'ãx<q#y”Ûúý<³jl£tõ×Ïž?6Î»OÎ¯ySo*Ù5ëxÑôÑù5§­èí×ßl·öçC…»ÇÏu¹jº¥íKãoÆKÎ24ÚRºþëÂÕ2‰ŽçáÉºsrþœÆ_ž_yþëNt«jû×~fº|ó]«Üç—ŸK,k;`Úã¶ØØ9Ï>‘¶ÿ/âdžÙ	uãMÏÏçÐwmýÕ‡o.ºçr¯tQÅ\ì`¨8íHwðž1ø`.å-®w¤»ôLÞi‡pOšMsìæèîÜ•Íó<Œƒ@ùE,¬³’‡Q.ª¨‹E…JÅsë’„iQ–‹Ø÷e.â2*ê<ZdåUî‰TõÊÙÎÉš{ª­GÛ0Ýì•^ÉÒz"¥ÞT«½ýìÞõIõÛv£œ+d6–`óR»ÁýèêéªbpMÖkçXxº«+çI4¶‹H¥•ý¯ªéú¶)µ+æ¸ª­QÙä½)Úf4ÎM9T>›9ÉbÕÉNÎþÇJÞzµ±R®.ÓÝ3úTÑÏr?˜½m¬ëµ©ßÖ­ÆO›MÝLmŠõÖ¶€¬Šm?¸WÛUaËwŽÆß'Á™t½•ö•7ˆý½v_;Çå™.ìŸŸï‘ÞÖ÷ç~š\ð<ìåñÛá¾Ÿ|€Ó±dát‚ò¾“µ}
Ÿ½ÞGÉüÃ½•.ì?Î«oNOì_wîvl«ZÀÅÎ…Š“uïæp|H¨å²orGNÇû[áœŽhÙ_ö6L–ü3‰po#L‚ØWIà¹ÅjQÕ™_EiEá¼ˆ‹:ÍêpÅÜâ*ôó\ÕA”‡‹ªZ¨0Ïó+¼§²±µë½GÏŠ/ù³ñÇ—??{ü÷ŸŸ]íi|ãâ	îgÖø.ZY{{ÃYL/~øùÙÐgªÕ÷:m—üE7{ô÷/]	Gž‹
¸]Ìá;QzmŸþÑ cÿë[‘WG“ã¼b6ÎEº‚Su§"
Ý/¥¢g]_¯G`i›²u‘–“ÙËáÁy•Xb#½5—m·×Øy¬+Ò/­ÇÑô^ñFšªb5U³X4J¯úÆþ¸Þ(Ñ{Û¶ÐòÌ[›3OìUíyƒX7Ä:=ÝàÁØ¦Â-M;¥âhú3ç„íK>Ûô…ùòÄûÉÚkk'Ž¼©¦ÖÃ±5]Õô]½²?œ”Âö+Ó·…-[µ²3ü_º6ßŽÎ˜uù6Ö	›í;Þwÿù“7z;ÓÝ)+b«µq¿Pu78d.ˆU«å¦y­ëÙà‰uî©ºÊ8Ojk/-Æè•×J©»Þ:\§–E[({×ÎgSöÖfv”[GÐ~Tw7=’ýóŸËÊ™¯áY»åóZŸx¿H_Ï†>}ùÍ/ö¼•X“iŸ£¬ÆGáUõÂN½ŠÓ3Û…ÏfS3<ñºº.ýÃ_ms®ë?7þÉ8raî_väì ~)µ—‡]9?Jƒ$Š³Cw.¶KŒ$ÉnïÑÙ'úŽ3NaŸ|üÈVóx|JÞ[œ§Y˜|¨û6y(öIÜµ×¶žt—p’Nþ2­±ëíe³¼³»¯óò#×Ý“è®Ûúp@[æÖÇö¦wËkªùXwíp•³C×\·jÊ;{ÒÉIòèËGIT6ýu[¨NòÑh¯»¬íWÕ£~ùÛ?üæÅ7lÉ~Œûýþ»Rãíüðì§oŸþ38ñ£Ë7öQ^û{Æó-õë¬w"øñK	g)­}ÿzß£Üê`øäý_Z'Ñ9¤×^3xF×^±¾áû›~o¿o®½ÀÔ7WÂÔ×_±~]Ûý_OK­+/0ËëêhPm½wÉì¿ëÅ±QNºEœüZ´ç"µ6(Œ±*ÒyZ•iûAæÜÂÔ.ó4(òBÕIP¥_$µ].ò*È²t‘-ìß‹y™TIvÅòp[;ÏôêEáù¥ÓòA6C€u·n«wß… {ŒV6›a=Stg3÷Ý°†Ú4.plWV›º=²þý¢v…uíÛfôø«¦XÉ©gÝÀ!$<,±ìŠ©wÌ+;g©^ì¨·òo—Í¸¹?U­qomË²¸àólke»œÛôVó<´mÝv{M§KkNÛbÝ}BKˆäÖ±à<¿´€ˆ?8ÛçÛðóîóÆí0~Çî³Z¬OÛ“u±%|ññAcÂ ß‰ÔüRÿÿ˜Ú“~í'ª}OÝ‘ou`aïÄ\ÿŽ{šÎ| »=*Eù|—YÕUže–ZÁ4YµµÌqFI‘ÄeZçY¨°Ný0Pq’ûu/®°Û»xê´q,­wñŽ¯6ã7ÿòÓ0„‘›Boy +Ž²ùüb(-öçáÅ@Z˜FÑímá¥ÞóFñ›¶£§ÁÉ|p‘~xþìMpþ×¿‘õÃ¿­þøù§—Ã¿6X‡Oþöô»ñß^¶MñÙæ^Þs>üÄ×{ž:dgîª”wÍÇO˜¶>Ö5v¯™.A´ˆU¢ü0‰â8.²:(Êy¸H“2MýÀ3?	T¡Ê¸ˆƒ²ôƒ*¶‹Ü«W-sd{¼rgb‡eÉ3·Ã`oôÄ®µWG^Ý«ëÝ\<$ÓÖ§µ]¹Øµiå6;6u]ÕÕÑ´iÜò¥¯7G^'Þ[w’÷Õ°]±–7ÛÂýl7mxÞ‹i3£_ëme¿;.´]›Œ…Ï†©yYï7q>‰9¿íÄäq&æ`%Qz¸HqŸäÁ‡NÍ»~úyµr§3gç¾Zyç¡ +‹‹ž›¡ûxþ>÷quC<ÀÑáßzó@†/²6-Ií" ««*(â¨HíÄX&Q²H»NðË4Jü:ô“*®­Õ³„$˜»wcrßÿ
Ã·7wëb£‹•÷èO›S7C}ymœojŠó˜à'byüù­—vNò‹¦'ŠçA’ø¦'Šý úã’SÃ|6:wú‚†;÷ðûN}×±¦Ãš;¯ûåŽú°{´7¿“y‹ÝÜÎ]2ããf³»´n—žÁCÙµuwzÜÛØ­ÆIã¬\XçU2÷çó8­â0-“:¬Ë<
"kûüºÊÃÔ´ë:Õ?ŒÊº®Ã°r¯~úQ©«–wwvðÆåhùv Ý½³8~üs±qöè†×-vmìvv«4®×¦âìpmWfÎH\.uv}©vñ÷½]Þ5›ñ¹ïnl¼ýkÒÎ†¡ûûðÞŽÜù·Ù–s· ývcÅ.+«å§³rôÃéÎ@†ôü(ˆ³Cóm?IæÑüÍ÷å¡ðÙ˜ßmì-K?øÀœ¹òáæñÎÊú„Vao)Æ‰â¡Ä¢ŽýX•QgQ¬æU=_T‹|nAöÿùI”EœÅó"a©J%ÊŸ§*òý Hƒ¢¾idgÜ¶èúV«^¯¡ÛÿW[Ÿ6j¥Ý‹vç³ê‘Øm¥íÝIõ#¯Õ›Ónˆ"ž|5œ>c‚Ã‹wýj}Úºóö";óõvÀ¸·õí°ê¬	øÅ^ÜŒú•;ÌÐ¯l±½
VŸÐ”ÝvÊŽB;ö/.¸¢,M—[IðÁ‹­©;~ž¤ïöPB”Ä$==rn¾¿"j»ÿ`Û{¥oJ®3,¼«L=CœsáG¿dþÑg¬ÇÙ›¢(‹Ú÷“*+ŠÌ“<ð³E©"²kraç;¿ˆT”/TTvñ2÷óÈ?ìd—ÅW-Hl“5Ê»Âêüž%Ç¸5YkONëþâz£YuÞ#k¬U:óÃó¥3;;K=ñÜ¹e÷n¸^¹÷¨Íožíz…;owämWº›=êd]»é¿ûÒ³ÓÅ°hyk±VêpÌÎžÞ¶jYO©eV²Ù/wv•ïÆ÷¼¦ëÎíš}H[éwzï2qï¼´så~V–„þÅ b>çéüÀÈå¾Ÿ'¸›5Ï6în£ŠáïIû²X÷ÚúhÇËª=Q›»O÷b×õëb;Ê/N‰Ã}s;)òÃîà=cî>îâÿú7e†·^ž¾­n|3æ»ÆÎný“'?ßxíŸŒ[CÕí~ogë'OžÊöÚä†—¾ØÖê–—¾¬×Û[]úcáò®Üxéu/[Û ÏdszãÅÏ¥zòäo.~xã¥/­÷g¯ÝØ> ¤ºùú¿ÿüìÉ“çî5è›Ûw¸öïÏ­ïø—Ú~~vË¬'ã\…»x±j¸ì-|©êî¢ÿï™c>úÍ¦+¦•»:„ëüÆ;:€Û+Ûþä×çAgaT¦ÖI_ä…ÊæiIº(*µðëhžÖÉËª4ò8öíÿ%‹0›—A9·ßæáUÙìM© †J7§›1/K˜U»H¾ên>Pæígïë¯ÁtC&;ÏtÞ?~.^ÕnÌÿmk{üp©ý|¶ÿø™¼Ý}ÜZç§Y7«bˆ3»åm5ªì†Wp†ö¿>bRö7g^%CìJ-wÊÉò²°ŸÍº1ÁT·Ëz¹¿ÕéŒZÑž‡Š‡þ¡šÞJÿcU”õj¬·õ~ÏoÎå9˜V»ßxßxÝN™†ëfÿøE\s?k´ËíàÒ1’¦·ÛvÈQ0<“ñªIºé»ÙNz8‹çÞø—BïÛÓÝ™7Ý×…ÞCÚÌêÍ›¦•Íøc÷’Óº9]Ú‹³'³wÌŸœœ\¨êÿ£¬O›Í/Dþçfï~k½Óñ;ûÕÿ|:‹ HFÁ¥ÓÖig‡‘>?öÞ÷mAÃhø¼þ¹Û_ü{Oí•`§tÁãD½/öþÑ„“ïÞüœ‘è·òP;^uá‡~e*®bwö!)¢2
k÷™ŸÕe`=’¹Ê3…¹ÊUà«8^¨È« ´Ÿfó+<•ç«Âš»ñÚ¢·3sÙô­ýÂâo£-mð˜Ói{í»¿ßì=gIÕ¬š~8ËîJq†Ò™ÓóÂÜsÑ}=»¦¬á]Þvò_jÛCp°èÜÅo—göê¦›†wÌ¹Ð+Tôšõ°õæŠ´¦¹¬‡3â-ëÕvt[vÙ4e1³NÑi}¼K³)›áM`Û,¶^.“Ó'‚¼ýK¿ad­o‡¾!õtœ&²ÑæzÿGßž?û÷ÏÆ÷¢ñM“ð÷¼õ;>ÌöZmH–´¼w_ëÿáØ!nÚ;³½ü6ÜŽ‡µÑ—ÛéÞM´¼ÜûSýpæâ¡òAÖ$ç©µº~Xd™*ýy¤Ê¬,B_Eªó(+EZG*QQ„±J’…5äuFu|U†Æ—î–ÆU±]ËŽ0™a÷Ì®v=]­ÆU½½e{QåhW™éççY¡;[Öºßïrï-‹7.à~/r,e·¾·vár>ŽËÿíŽRÑt;¹ó´Óî5ÔÎ%gžòsÈªrßÚ’ÖÎØê~Jò,ýxnÅ?VäøxÌ­øÊ^0;¿Àö=ÛG]ŽŽÍ¦vo¼Ù;ÓŽU/¼‹½À³‚Y¶SJ1x c&Å¯†øÀ™è!âà¢¸¬ˆîÍÙ±
.jQÌ†?ÿ—waµß,¼ó²?ïàöé¡ýù<¸x'œ§Azóì¼ƒMþNÂËK#ø³»p1IHð;ö*Ã}{2¸îŒqJ.Áªc.
yï„ÿ’‚«›àþ}½.·Õâ¡v6b•ÕY•…A4¯Ë°VaæGqQÏç…Êëº.ë0+çõ<®
U:b…ŸgQ5¯ÊáŠ8ºÊqwµ)šÕÈ‰²÷·Ëù\½i¶Ýãm÷|u„à¹;b4~0ì½³àBõvÍ>:#çåXƒ<3»\Ì˜èkÒr¹’½S7'ïÄÝñ§ñü‘¶u.9¾†ïGµµÛ°]i<Z['¥Z;ÀAºänæ>uÉð²ý®LÙÍzC‚dÝË°ç1d›í^*}r•Šv˜æ‡¨ˆƒOL®])öFNÅÔ²³gŸ…Â¿uÂ•8Š/õÍ³$Ž7 æó$¾½“16öç€»}#
²ßƒ8èù€K1‰÷qb§t±³BL½/-¸îuÄé–˜ÌÇÇœ†dw{Ðçæs-np4‹‘úr‹pÐCoy_¯úÈ“-ïëHwu¨eï±ÝÁ¹wFú¡x©q^”é¼Z„¥Ÿ»ý¡°(Ü–<òB‘uòìÚ>«w˜¥ÊU‘¤e°XTáÂmUWåˆøÛ_ÿ·÷Å·îLD10:K?¸kƒ‹r××ÕCäe${º_hw(¥ó¾¨ZÙ»îa=±Ý.ÑxÅ7•”õºÙxHÞ
¹3ÛªñÄ;öœ¥Ö¶‡¼PK‘U)òÊ{Ôé²ëw6wD‡Í&ï—úí{~ðåWVç;{méÐ$WÿúÿÛÅþºáG¿4ëRwÞÏ²ïÙû~YŽ¿|j-rS·‡¿ù«u7Þ/’¿ÿ‡S‘/‡Sö?{Qlº÷ýbßP?Ö«7µó=‡_½Øïyqf½Õõ?¯~ç³£®Ø:îþÓI±^Å™•ø¹®Ûù~²]£fW
Ž¶ûÝ^÷w0GYWÀ5¿þæÛ¸ûÁÖ¾¶¿unÿøûçÖ,ªÆ¶ø5?¶¹W¢åËOÇen$LæiréÔÌ|†ÉxÛÜ.×nŸ
Ëu¤ÏûvwÊûˆýß³o—µº_Ÿ,ª;÷—U¿.OúÅš~s÷¯78Ý¬Çªl¥¡J7X¬Ê`C7XK·T[ªÂ\3·\+cý¹¥úsöçêÏ²^A3¿¬;J¹÷!åmwÖ
ò·”ÜBvÐé¦Lwž¤¡Jg
«´•¦*Í•-çÌl1gÆ)sÏ{„
-Š.
ìŠë Œw°¥¼ÝAì ×ApBm¸µ§TÊÏÛrë'Íy6‚U3ÂÇŒpcFÀ1#à˜lÌ`í¬õ.7`Zl¼´Üpi±ÑÒrƒÅJo8m®ƒpÃëX÷ ×-·hÁõ@Ë­ há–ŠÂ`áÖ-¸h¹õ@®°¸ï–‹û:il=ÐRë\´Üz ×-·hÁõ@®Zp=`]³«7+MµçªZi ÒØîQß–þ\#­a¥¦­rò+¥œbÊÖÎ93/õmÃuŽëÖ9¬s4Xçh°Îñ+×9~Å:Ç¯Xçøë¿bãW¬s´\çh±ÎÑb£Å:G‹uŽ–êåÍ8Ùu±%t©ƒ%;Xâ”³âd»(ify¨±3+š;³¢¹3+;³¢Á š; ¢Á š; ¢ÁÓš;M1Hƒ³™ÕÜIžÔÐàIÍÔÐà±Í{Ðà±Í{Ðà±{ÐÜ±Í"ÐØ)§ÌM­ÔPÐÜÍ"ÐØ!îÈï´©jƒÍ9hØööN›ª68‹€µu®Á­snï´¡&4jZƒûÐšÛ‡Öà>´÷¡5·ýÛ¶;SëöRï½8Rñ~­Öéªø$ÎUœé){q®âTW™Ä¹ŠŸ‘?ã*ÎÌW;m®ÚäÐl¡¡ù›²ÚTG™Äï¾âcò“;=Ïªò»…?‘üª“ßjûP,f•/ª ©²2Sù<*£`Dé\%Aæ×Ë¬>O²ù"ÍƒÐ%6M’p1WYó8™—Õü*Ê÷Cj*—kh]¨VÆT?=ÿÆÛ.eãÒ*uŽÖÊ!A®å¶9ò(Ö¸Î>c—BÝ%ýƒ^ÙžãR’ŽyÑÿà²†ÚRfî~»zÈ†>¦5­7JÔ˜,Ü/­hv\6ý$½,:¯¬ëÍ¬­OG)±úö£œ²'»í5^†#iyÈ?¤âšUUo*ÛÒÝ”ªè®žxRP¯šWõÆìJÞK[KÏŸMv¼Ã©WCƒéKât¸/ÐŠµþ„2ù·ÎaÎ³üRÓ$MÓ 9L–ždŽó=q´n‘‘iû™â|áæ?6!S’ÎOB¦ÚÊÝ ’Ä´6}[Ø'ÍdH‹B¯´Â]G)÷=£l'®“ªN±†Ûå¦Ê[èx¬ëqÄ‰’ëÊVØŸ#áÀI9ä¤®ÖWë”«uŠÕ:Ã*auÎ±:çXKp(–àX,;²âYsCÖÜ°5çfÀAœ«97Ÿ8m®ÞÜœâ´©zoÛ5ãŸYíŽœ²:rÎê²æYóYó[snÎÄ¹šss–ÓæêÍÍYN«7éQt¤GaÅÁ>Þ‘}¼W'ƒ8WsptvàèìÀÑÙq£³'GgOŽÎ¾'kÞ³5çæ•Aœ«97:6Wont:m¨Þ†
‚Kep¡.“ÁE²áL±á1·°ç–õÜ¢ž[ÒpÕmÀE·!…†2PhÈ@¡!…†0PhÀ@¡…2˜gÈ`ž!ƒy†æ2˜gÈ`ž!ƒy†æ0˜gÀ`žƒyæ2˜gÈ`ž!ƒy†æ2˜gÈ`žƒyæ0˜gÀ`ž!ƒy†æ2˜gÈ`ž!ƒy†æ0˜gÀ`žƒyæÉ¦f‚yv‚µãŽ°vÜÖŽ;ÄÚa§X;ê«¢È”0Ó;ô8iC5‡Ášã¼­WÈÜa¸Ã†;1lÀÓ•;m¬Þ”ƒ¶§jN<3äÉ³½8Õ*X°j/ŽÕœ
VíÅ±š“cAnÓÕp›®Ü Úicõû	·AeÈàý^«98rÁ{Cï÷âXÍÉ~NÍ‡Ã»»„æq%êŽu÷ïSºUçJðÈ½OîÖËÃòâ¶ç‘®
Ë³í²ÞŒ¼mk?õoøÅíò0÷µýß[]s«bßÉëpÓe·W½EM®»¤ûnz‰IAÊNVö×>Ñ÷wªg/¯îTŠ½PÆÇ¤µèWuW«Jmá'~že©Z”‹ª(T”¥qVúq²X$‹x^«²£8(â2Ò°XØ’ÂÈÏU–æ*‰ÑU©-^Ô«Zõ^±êëvSôöF={C†‚ñ†¯NgñÍ.Â”æÁ%‡(6^cG_»(TíÒWLZî+%VfSÉ3fÝP¬+eÑÊÚ{S´èn,Ò³Ò|âýéäôäÈ³eŸ6›b5ÕÇ¥Ž˜YeµÞ÷wI$Ü€w©0ŠÕÊsÉ li÷¶é—^áuö?Võ®ð#{M'³óúvÍzk¿–M}ÜõõÖÞÑéyùßØkíí¨•®\¹»Û½TúÁO¼·v–p¶õþb±’¢ï¬ÄðãÓúÄû/Ñ³uqæY§¼9Ýxcê‚ÎöIq©C\‹5›ª±•Óö†ÇŸÙOåJÜ6=F˜§Q˜\ÈŽ‡óá£}rŒ8ŒÂtÊÎp‹Üãüœãðæ?6?FÆÑ¹å}×ð^i:íÃØvÐiÞñAsâ½@âýêU}Ö1±ú~µE”÷‹ÒåX¤Þ'›sdï.—×ïp¶Þsóáp³êƒø[qQ.ÒzdY”çEç±_ÔA±ˆ’4ŸGAÎý(¶Ÿ¨z¾PEfÍXQÎë(Í‚(H¬“v…¿õÔú*­¬<±uÜ‡ƒä^S:/ïëâU=ºB“ßrmN1oj¨Kî˜uGÔõ…ÍÞ_Øœë½õp^u{¯íhJöÊÊÚŸÍþ1üäÈûG¡û¥´ão*—¼¬ÙŒÜ=’mmÿÚØ¶².Ï›¢Yåª>™ýì29¿kçÒ9iµ’·u5:K“×f{Ÿ^Û_Ÿx¿Ôow·9³®£ûÐÖÍz›¥ýeå2Œlº¥ñgi‡<h²™YWlyÖYó½}²OÇ³ŠnëYóÐOæ<«ÀŸ'Q~àY¾Ÿ'·Ï:64ígÇêN«xïÚ~¨cå2ýîÉî9C²¤™¿ûZ_èøcä•´µî›Uw§A%Ê!¸ÜN÷îˆZÉ¢  Ë2U¦jáûUV*(’¤ÎÓÔŸÛ©{‘…~•uXûQš'U©<Ãºž—aÖU–áþ@ï,£s Ô½tËþEsªíó:òê^]í <¿ÎØËi[Xk·s,^î
yº+dö¬é†ØÉ÷caƒÝ}6\Þg-ÊfÕôg.J¡ÚÚÚúÙÆšåÿowùÉÉÉÆü¤/å©÷mÑv¯šíÞ“ê2·ñ­ó|ièQ„‡Y>ã(Š£[›Û±'¤¹õü“ð³É½drƒà÷Ä2ÆçÁ˜ÜQ’ÅL.Rëÿ_r]ýž{¿3*«îŒh¡âyaÿ§¬‚(Ž“:¨³¼òkUujîUœQF~'ù"MæyÌ³Ø­·ëü
#êlÎ¥ôÖÃ]Úù}S­êë¶0”¬v;Ö„=š6"Vg_î¶F¡}"ëÂþmgÝêy,uê»R+kÛ¦ÔNõÈ­ ·mãV´O¼ba—¡nÕy4+Ú¶8;òÊµ½¢X©#¯²UÑkûƒª^M_Ö»üm­¡=lWÝ¶G³![¶­™ý¨ß´Íé²?ò–KëœÙ‹šMe{Ý¢i;ûáª8íþ•Íéà]ÍÖnÝm‹9òÚâí täuKyëB–ö/Y×U½pE©mÌ‘3ûÖG]Íú¶P¶„¡}¬Q;rÝ¡´VÃVß´£‹`:Ûý>¥õtrûDÞa6‘ÃDÞYœ…az!‘wêù­7+\Wø¼ ¾Këng?ùpë~bÿçÎƒñû‘Œl#ãQ.×ˆ¬›ÂáiVd´§‰–IñŽt»½E@ê¼³-¬8Ñ.;[ˆÔ|‰Ty4ÚH…ü Dt-é·‚¨ï Dü5ÒMZFuòÿ†è*wËÚzfcfv^0#>9ÖÌ‰ƒÉWgÄ—%¤¿X*ªÂÃ:ÒÆt©ÆØ2ºn‰(ï–­Œø´ÆÄûÚÚqbJ5ŒjË¼Ù9†˜­¬îš8 °øìÝ×ø lñp‡÷­s&ímŽä?d÷rÝ{·mÖÃhx¨8nVøqš§å"Yøi©µHUœTó Ê‹4Ïj‘¤E¹ðË2Ó8¨T0OçQPî´Tªê«â¸ö¾¼ñÆ¼¢=œE²§€<i‡SÝÃ	¡Äx]`×Þæ™n¶ýþ\T¿,úñœQçÙŒÛÇ¬ÍÖŒËÕ™mˆµ¼©g—Š·½ª7ÞÊíq>Úa¿À6´2[ÖöÁÖGû;q¡¢#o" ~ù•ûkÿ¯ÓíP”;Ù4ýàâMzÖul6ÍL:|RúÇ.Ö¼ÝÖÕldS~Bñ×ô¶ñW?²øâIq?MbøÛG_ý4Ívç”o¾îÈçìï¯æ¿#{þ8ó½—ç”1CNÕýò8ø—Ün}ÿíß»¹6C¬ålu–¾%yšûY^G~ùAT-’p®”uój^¤u•åó2P‹d&Uâþ	â(/¯²Õ{ ð„¶«ÓÛ­›£ÖtÙ%³;¬®"3ünÕXË÷¦i{÷æ“m¹ÞkÅÛI\»ýÓhØ•ì=’vö·¿þoï—f]êî¯²þEòg_Ž¯}¹€‹·–ªY4»“ÁU5XÐI{¶7ÃëZÞ_^úGžûÿîÚ—/ü=í¸ûj¸kÄWÛeQÖ}7«2Tâñyv×Õ=x!nµÉÊc³é$ÖSYoµu¼ŸÅÎ·›¡Üo~~áM›²ãKg‡¿ÿ¡­ëW3Ulk!=Û)‡÷Å†—çžþü×¯.ßäael‘Ó¶öLÜ»i»ºŒgµò¹ÎyoÇsÕ¶ÅÊ3w»ØtÇ]Ý6‹zx*SÝHuÇ©½ëÕ‡À.ñ¢Ø<;šNc¯e#Ãøs
'³o¦{9'`Ûæ±ÑÞ8¶¼Gß|ÿóðãçß;¸Ý—“XkÝ«±{tûîëÚŽpeûÂ~?>9ûãñG—aÝº«gC×6ì?!)¿µQ^<…D©Ÿ^8†æt4¿õ9´qü}„ôÃógÿþÙGºà#¥I>>ÜGZù½A’ÞÊL¯AšIk&ëUoÖ&4µ¬;R¹;c¤Moj$…œôT§”™N=H3ºí•)‘Ä&£2‘ePn¸J7\­»¨ÝqMbµÁz&Îõ®“´X[¬Î`¿»5Ø«»kl¾Æ¦kn¶æ&kS®¹J¯¹Zw
«µ•ÆjÍlþ ­¢“&dG>JpæÃF$6¹I„›C¶Ë7˜%pÚ”»çÄ)gÐæ*Þ¯¹·Ú\W±âd«pÓj“­Âõjy€­gÉ83ÆÙ0ÎáÜÒ!ÌÁ¢ˆ\‘‹!ö>´r„ß yë|jÝ8*CU†ÆÉ$MUš€ƒ4Uif&¤±J“¤»7KOâPÅítŠ ÒFiªEú2æ{q°æXGÁìew}f*Ìuljâº6)q¦³\¤áíi¶@«Å-Îf‘&‹´XœÁ¢ÎVÂDÇÃÎUŒÊP•ÁÇpî°Æ$Ušlkj:UÜ"@q‹ EºÒÔÑ˜A˜y†+­ W;n3*CUÆ&%lN"§$pFâ&$n>â¦£‹Ôw\¨¾ãbõ&kOê„!‡òGMYfœÊPSÔ¦à*]Pµ†ÊïÇÎçÊT•}®Î>Vi¬;;i¨=¨x¶Ç­c±e,·ŠÅ±ä¸G.½Á•·•>£æ«L5Ç6á9i¬ÖÌ+“4Vk(f<JCµ¦Vo\4‰ÜQ&7”É ˜ÁØÚ‚[Zp+‹1cìºØbÚHVI*B
H©Wa¨ÂÔb[qK!n%ÔBCŠÇCáxÓúT;”p	c¶šZü` µìÁ–ÅÔª\skbpIÌ­ˆ±1¶æ–ÃÜj˜[skan)Ì­„±…0¶—Áà*˜[ŸQ[‚gÐžà¶UuFíUqÛgØ~Ä·!q†íHœq[gØžÄ¹)qîJœ‘Ûgà¾Äh¥±JƒÝdç*Îu“Aœ©8fi(CEeÎ °ÌŒ8£¢gX8âŒŠGœa‰3*"q†$Î¸˜Ä”8ã¢gØzkP¦ªÌuÐ’¦²„zÜŽºêqëƒQFŽkê@±b”r‰)+H9\½Ë^ÉbÀ¤ÖÒù?êey¶]Ö›ãâm[û©CkßsÜ×öouÍ­Š}6sÓe·W½EM®»¤{Ì›÷t‚{ÞØï|µ~ àÍ"K”*J?«Ô¼ˆò É2•„e•§‘JTYæe’¤qœ¹Aš•¥ý»
Ò$[¨:Éâ+€7ß´eÓ·ö/o s¸VöºzU«°ÑlF´ÈÕ°›áë#‡.©êE¡Wý‘½=oS}7"b¬lç½÷vÙ¨å@¨SÅÆ¡K¼¦ïfÓ¯RË€ŽYè˜	ÈÒ‹Wx‹ÆÔÕ„kñªÆnæ(<{T/®²oêÕÙ‘ã»Ø«ºm­FHŽ­ÖŸ7º_~9Ra¦'¸ÃÌFX«gÓí«mïê«ñûÛ¢íåPÄ«3Wç…^Ù©7/§SÅÊa½½é™Xw×¶‘óèÛâ•¬‹‘q·¬gûÈÍ·/þúø¿þ­Xo¿ú¯áŠ—­®GvÌÅëþÜlÔòÈ{þÔ5ö¬îÕ‰½£Ÿl+Ê6¸­ŠªwgÛÇÞF©ìˆ÷¶Y­¼B÷2@‹ŠÕêlvZoê¶°XlÎ<ûð×Åv|ìîÑ¬nÞÛÔuu´o­eát¬ø¬8'š8ìàÆûUw½ýKìÃ<oú}-2By¿H?!]3½çB•½¼µaÓým±T¶«õÑÔ‹¶uëFñØÃú¢{5”2Ö×ö[ßÚÝwçUâ„C?´ƒÖûUÊœóÒ?ÞA‘Ž(’í+µÙ§ƒÑ	ç·Åè„q0O/RtÂ(˜çáD'ŒÂ8ÛM872tÆ¶üÌ<¼ùçþ.†Îô,Èà¨ÉbÞ&Rëÿ_,øž{'kÙ¯WäeÍÃÂápáQ9¯ã:M3ßë,Šã:_„qûu˜a=¯çÖ£|Q”E°ˆ«8U¹
®Â
ÚgòãËŸŸYs×ZÅúƒi¿Á¿zj­¬µ´•µ¨Åjmg¬g­“
FŠÜðñäx8Dž.NônÇå«Úb1~BÖ-¸5$.³!»ÈˆóçQ"â|?nMˆ›:Ùgóv·æÍŽšßgÞÜÃÀì›§tIÔûbï0÷¨6ÃBa|äwJ¡Ìá;íô~{˜Îã 1‡Z-íX_]W?i7ŒT8/5€yæE’UU­Ò´ÎÁ›‡óª£yRØoÓ(²ÓpYQœùQ¦a„W˜Äo›Þ®äö”Ý¿×n)X(%í€ˆµ+ÿ·n™Ø8ò¼ûÀö5UÛv¨®!ï.÷VÃ®
_Ù•½r<Vk»¡4'3èÖðÃ‚·›ªaMñL6µ÷·Mã–ƒ^imÈ«!ü°ñ²S·w´X+XØ¥¥ÒÎÈºÐBÓÍÞgGûèÆÛ¶qìý5#Àw#^mÜ„ßô—-G3»ú¢­[ýV¯ê}4Áõï‹¡ÎVÌ^cïc¬àÉÉÉÑ¬;oJWcZ±Ÿñ	™úðÖ¦>£ä¢©÷ó(ÍâSïçIÜv!{8€>ÂÜ¶YyßÉºh6Ÿíþ%»gó·û‡O±ý‡Ú” ÖÿÝ¡ñp¾@³0nÓàÓö®l«ëÖÇW·Õyåd‰ï¬}8•Fa/üpÚ5Y]—U¸ÈÂ ü¤²(­‚¼È»PN*{©õTX×W82½RêÊûÛËï3k¶Ö,î¨õÞDJ"¸7,›'PêaÙ¼ë—ƒ%µ-¶36ãÚY÷‹ÌœTõÂí5œÖÎÔHõÂ[­mÿ^—Öü;bW¼c±
û_»Ýf3pêgîûž}4üÃ}ØÛð”¸Çaµ‡xº7Î¨Vzò:f®—ªw×ñõJl½]!C“ònÐ|¨Ìl×cö7¼(T³²uªGZ|½XX×Ãy#®b¶ÔÆ:BãMvußÍÎëá×ãÄûau¶]:ÑJ›BëâÌºdC¾g£½òlö¦hÑÖcÚ¿;Ô¯]1S‰ÙóâéO?”0î§LØ…/êi¯bp{ôª¨/ïìlýÆ•¹:›-‹Ê>M¯X5Eç}¡Ç»øâ«ñ'ã§nÃí-”µõ¢ÜS©Úâífè3ë˜íoð¸ìÜ¨®¯mèOiS ºµ/&A0.8SQ6Ã<?ð¦¢,ý<¸µ;õ1^”šxþIøÙºà@¥áÜO>ÜrÛz‹É. æs;]¹Içî¥}N:¥L:ñ1i+¬Ö›û÷Ýkoý 4«ÊY“bEœÛ²Ú*˜Ïç6õ$­³ÈU»îÁjŸ.~«×Pµµþ<’átõj…5É+ûÿ¤Ò}Á›¾àú__`ÝŸ‚Õ>åª½Rkät°Uæ*ý¶ê6u?«ýZ×˜v×l m¬¹µâF»VÜ°ÑŠj’õ«–”þ­EN¿[i»|-3ûV[Öõ)Uï¶°«.$ÃxPA U¦úˆõ¢Nßíw/§Ø®¼‘¥žÕµÕí±ÚË³mÝR×}³‚ZeÓÏ™6±Ê>§<k='ë€Ú!¨Ú1¨€Ú)¨Ú9§íƒãÒÇ¥ŽK—>8.}p\úà¸ôÁqéƒãÒÇ%Ø½pÈàÈ6‡| ù ò8äpÈàÀ!‚ã2ÇeŽË—!8.Cp\†à¸Áq‚ã2Ç%ØM"pÈGàÀ!C>"Ÿ%8ä#pÈGàÀ!C>ÇeŽË—18.cp\Æà¸ŒÁqƒã2ÇeŽËl“;)8vRpì¤àØIÁ±“’ý;)8vÀjg ¹Ì@s™C>‡|ùò8ä3pÈgäØ‡<)ùò98äspÈçàÏÁ!ŸƒC>‡|ùœ—\ïÀx‚# Opà	Ž <Á€'8ðG žàÀx‚# Opà	Ž ÜâÀ¸€'8À]è ó`˜7 Ã¼æÀpi †KÁÍsn¼ƒ»òà¦<¸'nÉƒ;òà†|ƒñp³Üë·úÁ~î)‚ûüàV<¸[nhG	7Ô£„ëØQöln¨G)Ø·SÎB‚>+è²F`Ì+c^Ü}xÐ…O®ÚiBÖ›37àÆ*¸¯
î}‚[ŸàÎ'¸ñ	úÙà¶'¸ë	nz‚{žà–'¨Ìsp¿Üîw;ÁÍNp¯Üê½>Ðé÷9OWR+JÞýGwRýÝ‹ïsÞ¹²é Ì¦ƒS¸¤€$—öÊvüPIŽë®}\6›ÇÛº]]SS÷õ£§E»½.òpÑwE_<yò^Ûÿºñâê^¶ý“'ÏdszãÅ?ýåÉ“ï›U}«¸47^:bõn¼ìMÑv7$€~äRÜ»Qrs®èG§m±]6ê6y¥IJÚzq›k_ÕgoŠÕ§ž­úaI™z©(/µŠüT¥™JŠ,TøYÏ£¸T•ÊJ•©¸ZIèÇae„y=O²|,ây˜ÎuE^êïhÄbd8z–¶.6ÞªØœjÛWg¡~q°zúÑŽÑŒÛ™]Vçé»®·ªh+ïÏ/žº„ÈSÞæ!ßsPB)ˆ“Û¦ ŽäR
â4µ.÷í>qúAÜÞd;×gnÓáÍlúá8ÎÒäÜÎ½kæ®ò±Ö¿ž¬‹íÝûnë_çó“í¢„”	¸½Sö±:ûX¬ÎVç«sˆÕ9ÂêauŽ±:ÇT}lÞð±yÃÇæ›7|lÞð±yÃÇæ›7|lÞð±yÃÇæŸ›7¬Î	Vç«sJÕ9Àæç ›Ÿl~°ù9Àæç ›Ÿl~°ù9Àæç ›Ÿl~°ù9Àæç ›Ÿl~¸ù9ÃêœauÎ±:çTCÌ†˜1;bv0Äì`ˆÙÁ³ƒ!fCÌ†˜1;bv0Äì`ˆÙÁ³ƒ!fCÌ†˜T\h[qhÅŠÏU\ØUqÑQÅ1kT\HPq‘;ÅØS\¸JqQ%Å£Q\(EqÅ&?PÜ2_q«qÅ-š·¶UÜTq+EÅ-è·îRÜòHq«Å-6·&P ë. ï. ó. ÷. û. ÿ. / / / / / / / / #/ '/ +/ // 3/ 7/ ;/ ?/ C/ G/ K/ O/ S/ W/ [/ _/ c/ g/ k/œoºö g:ö _ºõ W:õ Oºô G:ô ?ºó 7:ó /ºò ':ò ºñ :ñ ºð :ð ÿºï ÷:ï ïºîšsÝ5çºkÎu×œë®9×]s®»æ\wÍ¹îšsÝ5çºkÎu×œë®9×]s®»æ\wÍ¹îšsÝ5çºkÎu×œë®9×]s®»æ\wÍ¹îšsÝ5çºkÎu×œë®9×]s®»æ\wÍ¹îtÝÁ°»ãî¼k0ò®ÁÐ»cï¾k0ú®Áð»ãïÀk0¯Á¼cðÂk0
¯Á0¼ãðÄk0¯ÁP¼cñÆk0¯Áp¼ãñÈk0"¯Á¼còÊk0*¯Á°¼á\{Ãyö†sìç×Î­7œWo8§Þp>½á\zÃyô†sèçÏÎ7œ7o8gÞp¾¼á\yÃyò†säçÇÎ7œo8'Þp>¼á\xÃyð†sàç¿Î}7œ÷n8çÝp¾»]w0,oÀ°¼ÃòË0,oÀ°¼ÃòË0,oÀ°¼ÃòË0,oÀ°¼ÃòË0,oÀ°¼ÃòË0,oÀ°¼ÃòË0,oÀ°¼ÃòË0,oÀ°¼ÃòË,,ÿ–C+Òo é[Ž­4JS•†û(MUšEFiªÒÐô4JC•¦|ËQšª47l RÞð(MUšˆ6)ÿ}”¦*9 £4UiÈ³¥¡JSnû(MUš›òBlÊ££4UinÊ±)/ª±J[iªÒ®ÒªÒ17{ÄØìs³GŒÍ17{ÄØìs³GŒÍ1ç0Å˜ÃsSŒ9L1ç0Å˜ÃC1¦Qšª4¼²ÒT¥¡hõ(MUºà*]`•.¹J—X¥Wi…Uºâ*]a•æüéó§cÎŸŽ1:áüéó§ÎŸN0:áüéó§ÎŸN0:áüéó§ÎŸN0:áüéó§ÎŸN0:áüéó§ÎŸN0:áüéó§ÎŸN0:áüéó§ÎŸN0:áüéó§ÎŸN0:åüéó§SÎŸN1:åüéó§SÎŸN1:åüéó§SÎŸN1:åüéó§SÎŸN1:åüéó§SÎŸN1:åüéó§SÎŸN1:åüéó§SÎŸN1:åüéó§SÎŸN1:ãüéó§3ÎŸÎ0:ãüéó§3ÎŸÎ0:ãüéó§3ÎŸÎ0:ãüéó§3ÎŸÎ0:ãüéó§3ÎŸÎ0:ãüéó§3ÎŸÎ0:ãüéó§3ÎŸÎ0:ãüéó§3ÎŸÎ0:çüéó§sÎŸÎ1:çüéó§sÎŸÎ1:çüéó§sÎŸÎ1:çüéó§sÎŸÎ1:çüéó§sÎŸÎ1:çüéó§sÎŸÎ1:çüéó§sÎŸÎ1:çüéó§sÎŸÎ1ºàútõé‚ëÓÖ§®OXŸ.¸>]`}ºäÖˆ%¶F,¹5b‰­KnXbkÄ’[#–Ø±äÖˆ%¶F,¹5b‰­KnXbkÄ’[#–Ø±äÖˆ%¶F,¹5b‰­KnXbkÄ’[#–Ø±äüéó§KÎŸ.1ºäüéó§KÎŸ.1Zqþ´ÂüiæU\’Pf	U\šPæ	U\¢Pf
U\ªPæ
U\²Pvm®gƒ›ë×`^VÅ%fU`fVÅ¥fU`nVÅ%gU`vVÅ¥gU`~VÅ%hU`†VÅ¥hU`ŽVÅ%iU`×æz6˜ZVq¹e˜\VqÙe˜^Vqùe˜`Vqf8iss6˜Wq‰q˜Wq©qh 9û&ôU\F_¦ôU\N_&õU\V_¦õU\^_&öU\f_¦öU\n_&÷U\v_¦÷U\~_&øU\†_¦øU\Ž_&ùU\–_¦ùU\ž_&úU\¦_¦úU\®_&ûU\¶_¦ûU\¾_IÎF‚YŠ—¦XyŠ—¨X™Š—ªX¹Š—¬XÙŠ—®XùŠ—°X‹—²X9‹—´XY‹—¶Xy‹—¸X™‹—ºX¹‹—¼XÙ‹—¾Xù‹—ÀXŒ—ÂX9Œ—ÄXÖ†36`êeÅå^V`òeÅe_V`úeÅå_V`fÅe`V`
fÅå`V`fÅeaV`fÅåaV`"fÅebV`*fÅåbV`2fÅecV`:fÅåcV`BfÅedV`JfÅådV`RfÅeeV`ZfÅåeV`bfÅefVà´ÍÍÚ`>iÅ%”V`FiÅ¥”V`NiÅ%•V`ViÅ¥•V`^iÅ%–V`fiÅ¥–V`niÅ%—V`viÅ¥—V`~iÅ%˜V`†iÅ¥˜V`ŽiÅ%™V`–iÅ¥™V`žiÅ%šV`¦iÅ¥šV`®iÅ%›V`¶iÅ¥›VàüÇM`’lÅeÉV`šlÅåÉV`¢lÅeÊV`ªlÅåÊV`²lÅeËV`ºlÅåËV`ÂlÅeÌV`ÊlÅåÌV`ÒlÅeÍV`ÚlÅåÍV`âlÅeÎV`êlÅåÎV`òlÅeÏV`úlÅåÏV`mÅeÐV`
mÅåÐVàDÂÍ#`æoÅ¥þV`îoÅ%ÿV`öoÅ¥ÿV`þoÅ% W ‰ä,$˜¶\qyË˜¸\q™Ë˜º\q¹Ë˜¼\qÙË˜¾\qùË˜À\qÌ˜Â\q9Ì˜Ä\qYÌ˜Æ\qyÌ˜È\q™Ì˜Ê\q¹Ì˜Ì\qÙÌ˜Î\qùÌ˜Ð\qÍ˜Ò\q9Í˜Ô\YÍÁ®Íõl2;˜ŒLýæ~&“?ƒÙŸÉì§`úS2G$˜$’Ì[&.$3©€©TÈw;Á—;ÉÓæàqsòüx †ŒÈƒ!y2n	.QO
t¥ÀE‚â	
\$(n‘ ÀE‚â	`áºH.*n‘P‹„Š[$Tà"¡â	¸H¨¸EB.*n‘P‹„Š[$Tà"¡â	¸H¨¸EhÙ9ÃÚuÎ¬/ÀuÍ‚[×,ÀuÍ‚[×,È>Âu!’2$…„H
H‘#) GRH¤€$I!Q’²$…D
È8r( åPHÌ¡€œC!A‡’…D
È:v( íPHÜ¡€¼C!ÙÂ…¤
ˆ’( @PH‚ €A!q|òø„ò	Hä’n' ÞNH¾€€;!	w"î„dÜ	¹’r' æNHÎ€ ;!Iw¢î„dÝ	»’v' îNHÞ€À;!‰w"ï„dÞ	½’z' öNHî€à;!Éw¢ï„dß	¿$' INH”œ€,9!arÒä„ÄÉ	È“(' QNH¤œ€L9!¡rRå„ÄÊ	È•,' YNH´œ€l9!árÒå„ÄË	È—0' aNHÄœ€Œ9!!sRæ„ÄÌ	È™’Ù& ´MHj›€Ø6!¹m‚Û„$·	ˆn’Ý& ¼MHz›€ø6!ùmÜ„$¸	ˆp’á& ÄMHŠ›€7!9n‚Ü„$¹	ˆr’å& ÌMHš›€87!ynÝ„$º	ˆt& MH@š€„4!i2Ò„„¤	HI“& 'MHPš€¤4!Qi²Ò„„¥	HK—& /MH`š€Ä4!‘i2Ó„„¦	HM›& 7MHpš€ä4!Ñi²Ó„„§	HO’D& ŠLH™€02!idâÈ„ä‘	$’H& ’LH&™€P2!©dbÉ„ä’	&’L& šLH6™€p2!édâÉ„ä“	(’P& ¢LHF™€2!)ebÊ„ä”	*ú% õKHì—€Ü/!Á_’¿„D	Èþ’£% HKH’–€(-!YZÂ´„¤i	ˆÓ’§% PKH¢–€H-!™ZBµ„¤j	ˆÕ’«% XKH²–€h-!ÙZÂµ„¤k	ˆ×’¯% `KHÂ–€ˆ-![B¶„¤l	ˆÙY% ³JHh•€Ô*!±Ur«„W	H®]% »JHx•€ô*!ñUò«„X	H°a% ÃJHˆ•€+!1Vr¬„Y	H²e% ËJHP‘€¨"!¡b/„_ˆ¾’% JH>”€€(!	Q"¢„dD	‰’% &JHN”€ (!IQ¢¢„dE	‹’a$ ÄHHŠ‘€#!9FÂŒ@ƒÏ™{ÐØs¦4ôœ™<gâAÏ™wÐ¸s¦4ìœY:gÒAƒÎ™sÐ˜s¦4äœ'q„ „‚,BE’I!È!$1„ …„‚BAI !È$ñƒ }„‚ìA=’Ið È$±ƒ u„‚ÌA9Ià È$qƒ m„‚¬A5’IÐ È$1ƒ e„‚ŒA1IÀ È$ñ‚ ]„‚lA-’I° È$±‚ U„
‚LA)I  È$q‚ M„	‚,A%’I È$1‚ E„‚A!I€ È$ñ =„‚ì@’Ip È$± 5„‚Ì@I` È$q -„‚¬@’IP È	$1 %„‚Œ@I@ È$ñ€ „‚l@’I0 È$±€ „‚L@	I  È$q€ „‚,@’ I È$1€ „ ‚@ I  Èÿ#ñ ý„ÿì?ý’ÿHðÈý#± õ„þÌ?ùÿHàÈû#q í„ý¬?õ’þHÐÈù#1 å„üŒ?ñþHÀÈ÷#ñ~ Ý„ûl?í’ýH°Èõ#±~ Õ„úL?éýH Èó#q~ Í„ù,?å’üHÈñ#1~ Å„ø?áüH€Èï#ñ} ½„÷ì>Ý’ûHpÈí#±} µ„öÌ>ÙûH`Èë#q} ­„õ¬>Õ’úHPÈé#1} ¥„ôŒ>ÑúH@Èç#ñ| „ól>Í’ùH0Èå#±| •„òL>ÉùH Èã#q| „ñ,>Å’øHÈá#1| …„ð>ÁøH Èß#ñ{ }„ïì=½’÷HðÈÝ#±{ u„îÌ=¹÷HàÈÛ#q{ mOƒ˜Íaz4ˆéÑ¦Gƒ˜Íaz4ˆéÑ¦Gƒ˜Íaz4ˆéÑ¦Gƒ˜Íaz4ˆéÑ¦Gƒ˜Íaz4ˆéÑ¦Gƒ˜Íaz4ˆéÑ¦Gƒ˜Íaz4ˆéÑ¦Gƒ˜Íaz4ˆéÑ¦Gƒ˜Íaz4ˆéÑ¦Gƒ˜Íaz4ˆéÑ¦Gƒ˜Íaz4ˆéÑ¦Gƒ˜Íaz4ˆéÑ¦Gƒ˜Íaz4ˆéÑ¦Gƒ˜Íaz4ˆéÑ¦Gƒ˜Íaz4ˆéÑ¦Gƒ˜Íaz4ˆéÑ¦Gƒ˜Íaz4ˆéÑ¦Gƒ˜Íaz4ˆéÑ¦Gƒ˜Íaz4ˆéÑ¦Gƒ˜Íaz4ˆéÑ¦Gƒ˜Íaz4ˆéÑ¦Gƒ˜Íaz4ˆéÑ¦Gƒ˜Íaz4ˆéÑ¦Gƒ˜Íaz4ˆéÑ¦Gƒ˜Íaz4ˆéÑ¦Gƒ˜Íaz4ˆéÑ¦Gƒ˜Íaz4ˆéÑ¦Gƒ˜Íaz4ˆéÑ¦Gƒ˜Íaz4ˆéÑ¦Gƒ˜Íaz4ˆéÑ¦Gƒ˜Íaz4ˆéÑ¦Gƒ˜Íaz4ˆéÑ¦Gƒ˜Íaz4ˆéÑ¦Gƒ˜Íaz4ˆéÑ¦Gƒ˜Íaz4ˆéÑ¦Gƒ˜Íaz4ˆéÑ¦Gƒ˜Íaz4ˆéÑ¦Gƒ˜Íaz4ˆéÑ¦Gƒ˜Íaz4ˆéÑ¦Gƒ˜Íaz4ˆéÑ¦Gƒ˜Íaz4ˆéÑ¦Gƒ˜Íaz4ˆéÑ¦Gƒ˜Íaz4ˆéÑ¦Gƒ˜Íaz4ˆéÑ¦Gƒ˜Íaz4ˆéÑ¦Gƒ˜Íaz4ˆéÑ¦Gƒ˜Íaz4ˆéÑ¦Gƒ˜Íaz4ˆéÑ¦Gƒ˜Íaz4ˆéÑ¦Gƒ˜Íaz4ˆéÑ¦Gƒ˜Íaz4ˆéÑ¦Gƒ˜Íaz4ˆéÑ¦Gƒ˜Íaz4ˆéÑ¦Gƒ˜Íaz4ˆéÑ¦Gƒ˜Íaz4ˆéÑ¦Gƒ˜Íaz4ˆéÑ¦Gƒ˜Íaz4ˆéÑ¦Gƒ˜Íaz4ˆéÑ¦Gƒ˜Íaz4ˆéÑ¦Gƒ˜Íaz4ˆéÑ¦Gƒ˜Íaz4ˆéÑ¦Gƒ˜Íaz4ˆéÑ¦Gƒ˜Íaz4ˆéÑ¦Gƒ˜Íaz4ˆéÑ¦Gƒ˜Íaz4ˆéÑ¦Gƒ˜Íaz4ˆéÑ¦Gƒ˜Íaz4ˆéÑ¦Gƒ˜Íaz4ˆéÑ¦Gƒ˜Íaz4ˆéÑ¦Gƒ˜Íaz4ˆéÑ¦Gƒ˜Íaz4ˆéÑ¦Gƒ˜Íaz4ˆéÑ¦Gƒ˜bz„äôê’Ô# ªGHV€°!i=âz„äõì’Ø# ²GHf€Ð!©=b{„äöî’Ü# ºGHv€ð!é=â{„ä÷ð’à# ÂGH†€!)>b|„äøò’ä# ÊGH–€0!i>â|„äùô’è# ÒGH¦€P!©>b}„äúö’ì# ÚGH¶€p!é>â}„äûø’ð# âGHÆ€!)?b~„äüú’ô# êGHÖ€°!i?â~„äýü’ø# òGHæ€Ð!©?b„äþþ’ü# úGHö€ð!é?â„äÿ ’ $ HH€ !)@b€„ä 	’$ 
HH€0 !i@â€„ä	’$ HH&€P !©@b„ä	’$ HH6€p !é@â„ä	’$ "HHF€ !)Ab‚„ä	
’$ *HHV€° !iAâ‚„ä	’$ 2HHf€Ð !©Abƒ„ä	’$ :HHv€ð !éAâƒ„ä	’ $ BHH†€!!)Bb„„ä	’$$ JHH–€0!!iBâ„„ä		’($ RHH¦€P!!©Bb…„ä
	’,$ ZHH¶€p!!éBâ…„ä	’0$ bHHÆ€!!)Cb†„ä	’4$ jHHÖ€°!!iCâ†„ä	’8$ rHHæ€Ð!!©Cb‡„ä	’<$ zHHö€ð!!éCâ‡„ä	 ’@$ ‚HH‘€"!)Dbˆ„ä	"’D$ ŠHH‘€0"!iDâˆ„ä	$’H$ ’HH&‘€P"!©Db‰„ä	&’L$ šHH6‘€p"!éDâ‰„ä	(’P$ ¢HHF‘€"!)EbŠ„ä	*’T$ ªHHV‘€°"!iEâŠ„ä	,’X$ ²HHf‘€Ð"!©Eb‹„ä	.’\$ ºHHv‘€ð"!éEâ‹„ä	0’`$ ÂHH†‘€#!)FbŒ„ä	22 ÇÈp#RŒ12 ÃÈp#Œ02 ¿Èpø"Ò‹/2 »Èpè"’‹.2 ·ÈpØ"R‹-2 ³ÈpÈ"‹,2 ¯Èp¸"ÒŠ+2 «Èp¨"’Š*2 §Èp˜"RŠ)2 £Èpˆ"Š(2 ŸÈpx"Ò‰'2 ›Èph"’‰&2 —ÈpX"R‰%2 “ÈpH"‰$2 Èp8"Òˆ#2 ‹Èp("’ˆ"2 ‡Èp"Rˆ!2 ƒÈp"ˆ 2 Èpø!Ò‡2 {Èpè!’‡2 wÈpØ!R‡2 sÈpÈ!‡2 oÈp¸!Ò†2 kÈp¨!’†2 gÈp˜!R†2 cÈpˆ!†2 _Èpx!Ò…2 [Èph!’…2 WÈpX!R…2 SÈpH!…2 OÈp8!Ò„2 KÈp(!’„2 GÈp!R„2 CÈp!„2 ?Èpø Òƒ2 ;Èpè ’ƒ2 7ÈpØ Rƒ2 3ÈpÈ ƒ2 /Èp¸ Ò‚2 +Èp¨ ’‚
2 'Èp˜ R‚	2 #Èpˆ ‚2 Èpx Ò2 Èph ’2 ÈpX R2 ÈpH 2 Èp8 Ò€2 Èp( ’€2 Èp R€2 Èp € 2 ÿÇpøÒÿ1 ûÇpè’þ1 ÷ÇpØRý1 óÇpÈü1 ïÇp¸Ò~û1 ëÇp¨’~ú1 çÇp˜R~ù1 ãÇpˆ~ø1 ßÇpxÒ}÷1 ÛÇph’}ö1 ×ÇpXR}õ1 ÓÇpH}ô1 ÏÇp8Ò|ó1 ËÇp(’|ò1 ÇÇpR|ñ1 ÃÇp|ð1 ¿ÇpøÒ{ï1 »Çpè’{î1 ·ÇpØR{í1 ³ÇpÈ{ì1 ¯Çp¸Òzë1 «Çp¨’zê1 §Ç€˜!9=‚z„$õˆê’Õ# ¬GHZ€¸!y={„$öˆì’Ù# ´GHj€Ø!¹=‚{„$÷ˆî’Ý# ¼GHz€ø!ù=|„$øˆð’á# ÄGHŠ€!9>‚|„$ùˆò’å# ÌGHš€8!y>}„$úˆô’é# ÔGHª€X!¹>‚}„$ûˆö’í# ÜGHº€x!ù>~„$üˆø’ñ# äGHÊ€˜!9?‚~„$ýˆú’õ# ìGHÚ€¸!y?„$þˆü’ù# ôGHê€Ø!¹?‚„$ÿˆþ’ý# üGHú€ø!ù?€„$ 	ˆ ’$ HH
€ !9@‚€„$	ˆ’$ HH€8 !y@„$	ˆ’	$ HH*€X !¹@‚„$	ˆ’$ HH:€x !ù@‚„$	ˆ’$ $HHJ€˜ !9A‚‚„$	ˆ
’$ ,HHZ€¸ !yAƒ„$	ˆ’$ 4HHj€Ø !¹A‚ƒ„$	ˆ’$ <HHz€ø !ùA„„$	ˆ’!$ DHHŠ€!!9B‚„„$		ˆ’%$ LHHš€8!!yB…„$
	ˆ’)$ THHª€X!!¹B‚…„$	ˆ’-$ \HHº€x!!ùB†„$	ˆ’1$ dHHÊ€˜!!9C‚†„$	ˆ’5$ lHHÚ€¸!!yC‡„$	ˆ’9$ tHHê€Ø!!¹C‚‡„$	ˆ’=$ |HHú€ø!!ùCˆ„$	ˆ ’A$ „HH
‘€"!9D‚ˆ„$	ˆ"’E$ ŒHH‘€8"!yD‰„$	ˆ$’I$ ”HH*‘€X"!¹D‚‰„$	ˆ&’M$ œHH:‘€x"!ùDŠ„$	ˆ(’Q$ ¤HHJ‘€˜"!9E‚Š„$	ˆ*’U$ ¬èÿgï]›ãÆ±´Áïù+8þ0%¿£ï—*·ãu».íW·£íš®ÙèˆZ•,d6HJ©ÚØˆýû÷ö—ìHæE–dJÖ£”«r&ºœÊAçÁ¹<¨‘§ÕÀãŠjäyE5ðÀ¢ybQ<²¨FžYT-ª‘§ÕÀc‹jä¹E5ðà¢yrQ<º¨Fž]T/ª‘§ÕÀã‹jäùE5ð £y‚Q<Â¨FžaT1ª‘§ÕÀcŒjä9F5æ #1÷F0HaÌâÝK©ŒY¶{É •1v/¤2f©î%cTÆ@V#¤0l¹pPë…ƒdØ(cv½dÊ˜½@/¤2Ì8(CâÀ‰ƒ2$Ì8(CâÀ‰3$ï{/¤2fƒÒKÆ¨[–Q«2èÄ^2He˜¹Æ~¨ãælbÀÌ5æÀC-f®1GjÁ0s9äP†™kÌñ†Z0Ì\»(síÂÌµ‹2×.Ì\»(s[ãPKl…C-p°õµ¼ÁV7Ôâ[ÛPKleC-l°uµ¬2f{É(•aK‡yí9ÎmÏa~{ŽsÜs˜çžã\÷æ»å÷’Q*ã–˜ÿžãøæÁç8>‡ùð9Î‰Ïa^|Žsãs˜ŸãùæÉç8W>‡ùò9Î™ÏaÞ|Žsçs˜?ŸãúæÑÕBõ’Q*ãŒ8Ì«Ïqn}óësœcŸÃ<ûçÚç0ß>Ç9÷9Ì»Ïqî}óïsœƒŸÃ<üçâç0?Ç9ù9ÌËÏqn~óóƒê‚{É •qël¹Ã­v°Å·ÖÁ–:ÜJ[èpël™Ã­r°E®ÆÁþûk ã¿Æyþk ë¿Æùþk ó¿Æyÿk û¿ÆùÿkÜ–¶†mik` ÆÅ j` ÆEj` ÆÅj`  ÆEj`( ÆÅj`0 ÆEj`8 ÆÅj`@ ÆEj`H ÆÅj`P ÆEjà²[µ¨¡¨Á¨á¨‚!¨!‚#¨A‚%¨a‚'¨‚)¨¡‚+¨ënù®~¸Å¸öá–>àÊ‡[ø€ënÙ®z¸E¸æ¡–<\à 7 †pQ`Ð 3 †p`À /À…`Ñ`° + †
p‘`  ' †	pQ` # †p`€  †pÑ`p  †p‘\`  †pQ`P  †p`@  †pÑ `0  †p‘ `   †pQ ` À… ` \  æÿÇ¹ÿaÞœóæûÇ¹þažœãæ÷Ç¹ýa^ÿ†ú;èïp^ÿæõïp^ÿæõïp^ÿæõïp^ÿæõï`ûØµíp^ÿæõïp^ÿæõïp^ÿæõïp^ÿæõïp^ÿæõïp^ÿæõïp^ÿæõïp^ÿæõïp^ÿæõïp^ÿæõïpË4l•Æyý;˜×¿Ãyý;˜×¿Ãyý;˜×¿Ãyý;˜×¿Ãyý;˜×¿Ãyý;˜×¿Ãyý;˜×¿Ãyý;˜×¿Ãyý;˜×¿Ãyý;˜×¿Ã­x°·ÞÁ–;Üj[ìpkl©Ã­t°…·ÎÁ–9Ü*[äpÉþ,Û¿¦ûw¸|ÿ˜ðßá2þ;`Ê‡Ëùï€Iÿ.ë¿Ã¥ýw°¼ÿ˜øßá2ÿ;`ê‡Ëýï€Éÿ.û¿¦ÿw¸üÿX Ðá* :`	@‡«è€E ®
 –t¸:€XÐá*:`)@‡«èpÅ ¬ –t¸z€XÐá*:`I@‡«	è€E®* –t¸º€XÐá*:`i@‡«è€Å®: –t¸ú€X Ðá*:\‰@«èpE¬J Ã•	t°:W(ÐÁ*:\©@«èpÅ¬Z Ã•t°z%l[°Dm
–¸°Á5Xâ‚KXÌ`‰,aƒ%.`°„Å–°mîµÉ]â‚KX¬`‰,a‘‚%.P°„Å	–¸0Á%Xâ‚KXŒ`‰,a‚%.@°„Å–¸ðÀXâ‚KXl`‰,a‘%n™†­Ò¸°ÀXâ‚KXL`‰	,a%. °„Å–¸pÀXâ‚KX,`‰,a‘€%.°„Å–¸0ÀXâ‚ KX`‰[ñ`n½ƒ-w¸Õ¶ØáÖ:ØR‡[é`nƒ-s¸U¶Èáê–°z%°^`‰«Xë–¸z%°^`‰«Xë–¸z%®^`	«Xë–¸z%°^`‰«Xë–¸z%°^`‰«Xë–¸z%°^`‰«Xë–¸z%°^`‰«Xë–¸z%°^`‰«Xâê–°z%°^`‰«Xë–¸z%°^`‰«Xë–¸z%°^`‰«Xë–¸z%°^`‰«Xë–¸z%°^`‰«Xë–¸z%®^`	«Xâê–°z%®^`	«Xâê–°z%®^`	«Xâê–°z%®^`	©8êæ ò(«ZlYœ€¶£ØÏÒøÅ‰–¼Põy‘‰føN¥Ä¿ºB_Ý0^gÖÎÁ>1¬­ ÿN¸™”5bB3#î(-ªí›ØÖØ\]§M]Rë[ïâÚq|ûáæqÜêu«‹'y­$k_Î^œ,?c§‚>Ÿ¬örA=ÒEÏL[­ÀËUÿ¥/NÌWú7¦øüeUë^œ˜?ô·¤FSÔÕð>ü¬éäÐy3gn>³g§Eö§gÿóÝûg/™›Š\ˆœÛ¾³ 	² ÈÒ<¢/\7åNdÓæù6ólÏMYLD‘—^ìynä¼8;1=Ò¿’©Ë—ï†»¦±º*ª,ª¢:}q26ÐiÎqU,Zº«—æÂ‡jœ«¬v¥u0JÏ-^ÓõUf]Ì>·.Š²œ¥J°3«¦Ñ°tKTYóÕÎ‹ÆjŸWÅ¿:aIvi¥Âê‘YmMcµ(Ö?…œ¤u;·ŠŠ.a­ÖXZºF—ÏM‹Å|ìöù¡ÕÔæ—š$ž‰YÝµ‹®µÊº>Ó_¹U´º1)Ÿ«š™¡¿PE+Ô±µy“¬lêYçôT­¬îÒR˜^/Øùåæˆšo›Vgô—EýYú.gí\ÕÝ)A­²æ¹iÅUÝ4«V'''ý ô-¶zŸÑwgÝ¸¹ûw%£ø ~6‚Þ2útüâdóé6\­^¾¦·èoï­?wE™5—õïeûMÚ6ÿ›Óus\«Ó?m¿Y½Ê\Þ©òå¼m_Ÿœ´Ý©nt2¼'/NôºQ[Hš6EIóÕ	’0ˆß£¹žê®†¯¢ p£aŠ7Åo«»¢Ÿ=×õh†UÓ²²ú
ßKç™¥ß#êIÐL./kÎôíYs%ò?=¦ms²ùf¯ØQÿr÷¯æ±~—{)ã{¿ZdÊ‚¢/_×‹KUœÎ[«®ÊË~Í[·>§[ƒÚ7¾Z·9¥§½xùj± ËÆÍÉ;š4E37¯ÕºÉú3dóºi_2­oèÙÞ±Lëåñú)õW®[®¯nêNqAŸV«ÔÕah×cÐ‹X7_‹˜FóøH±Šæ;=ÕþéYÚñ3ýŠÒÊxŽ»ZO?¶D7`
ýHŽ›öòá!	FÈ„Š‡×w=çŸ:¬ø2<¸zãŽôºßðZ‰¡žp×¶#ò4Nm;§©0›'™ï¥<KKì,ñÒÈá±9A3îÑkgsDrx]Óh×¥±§©˜³ó‚V«Î­g¿<3†W,Û›¡Á?´•j×ÆëÐúç/ãU–¬3aÇâ˜¾Öß¬Çðùl¡Šª50bý­6àÆÐÏ/sQõ«?©b¬¤%¨/2™M\2ÎÚ˜Š¨êÖbd©y+²oÈ¤²6ú‘¹7wGæt.ÌÕ¬š1Þv¬ÜêcQ“2[,#“ÏrBæ®ÖªZµšIAOî’zéa¹êcä@æÌ,«¹—C‡@ÕLÁ¡õÕ/_‘î(ó~¼5–j®ŽuðÑóøeFã*õû×ì•›B ž
	Ü(°ƒmH ¿
“HàF!	™
	VøÀàí»wo÷pà
}ÿp`õ80 `%'Pº_}þ`áúÛ|ÈPpZ©2Ö²Û¶™í°0a‘›çnÇ"öÜ8gÂ}‘ŠÜÒÔñr/ôCg™ï;‰¹ã2?Èxß ~êïÌÒwfv¥e­×Æøhz›/ìVJ¨Üð%œŠJ¨‚[ŒsÑ˜üØ¡“¦VmA7©ûšòµ¯àØzÓûN»c2¡V#Zm&òÐ©ågVz©­ùì¡½«‚‘ÁåR4—´y/ËÞA0¶ícûpv1b±äb1b“i’¿.YÓ·Ôq/o0Ík‘ZP5fÑW¯´˜3EP„Æ·tgú8¶^q^Ë«.µ§€7éÕzÖ4é9Ž•…~Ô‡»%µë‹þ:êß´§ü*3‚Z	­±¾RuUs¨šþ²à]É”þËX-£Ÿò½äãÙëÕh%ŒíE½Õÿ×´î}JFCX|¼Á™~4ÝÂL”±QQmÁÈ(êÞ~Z§U{‹ëñìqÑœ5³TBr„ª
z–ÚB÷E÷'ôsß1z]éJzbÙ#²«ã–ÚQ“v•ôÒT#PÉ*.¬ÕsÌ=Ù¿bA#B-gýÌ¹f:ö™éùw1¯KƒÊx}4#ÙE¥%s¯wÛxÖ;UÿJp­¿b(ZæŒ²ãÛ3£'F·òt ]2Ð%IäÆÛ€ÎÃ 7&nO†tëEô3A™€Ã£Ü¼m€Ùá= ž^ ¶ž~ÿ<RµÕ‹Þ¾·¥‰h »Û=¤l…éÿñû¿30{—(ØUÜû €ö†AØ¤ÕoáŽ mä%™gNæe,÷¼ Ï#–ÄÂu}—ó Óx6Šü4õu¨ÌÉlÁîûž+DyÂÏ?iõ	úOÁ«é2÷Æ.÷ÅD`:ö	ˆ»B“úÍL5,ÛcBEÍVwˆÌ†&ªƒWº¿Î`¤¿-Dõ®\@9ßæØ:ø` I.‹¶-ÅÌàÇ¶Húû²‡6u©AZÙÐsü|¸¡ñIÂ…(ËÍB-‡¤­‰`õ÷ºjUjxÞÔÛ>/Îªñ~f½®ï?¼ù¹×ðÐ€ŸŸß|xoeâ\”õBêa1ÃQ7b£ÑìUÃ*v¤áôæ¥oéf*ëGU¬ÝÝôOZ±.éîõ×3}•3I7NJj„¥ohê ¡Pœ §õšÉTÌZwu<[cUo=uÚL(ÂåbÎRý¸L$r¿Z¨âœ`žFle²¯¶‡†?iC —>iCo¯DÓ€0Z7Á×ÄáæJïŒîX”ýîÊŸÛ€8Ÿ8ôÉàÐNüÈ¾‚ƒØóýxqèG“c€›¨à3Ñ¡sìíQáTxá}Ü~¥ì˜Þ“üÛýÐº@¸Õ„ð»¹K× e£‘&@ÿ×’!ÍZ<ø\¯±ý$¸}Òˆå¢ô¦4Ôçu}6­-myä¤–ƒùšÒV[´ËÆt[´hhÿËrãeøäu›ë­ÛÄÖôq¹Mh½\05©åÑ8Ÿh¶KÇøS|ûˆ¦;ejWnñ,bŽ¤<öÒÄÉ½œEžcG^n'‰—ç,Iœ$r\Û‹Ý,ñÃ'uçú¹g‡q²ößŠ\'¹5—UË8AzËÜ£’#b|ûé½Ã:–\Ö=zÕAãõ:˜>›D¸²`ÚSJ]Ì4ô.×ØtåNmzÈlBÓ+—û&Èm:>Ÿ’áþýÃÛ#íF¿Šeû‰§CötGtÁ™¾WÚ/È™‰ÚwúúŸ¶ö/ÚÓjé û¹°.Øå×«‘X2¹0nk%fW÷VOÝºSÑ­þ×gà¹4]6°m ±®?Úšé³‡µkC/ŒïkÍA3#%Êzo¿»cE¾øŸ°Uÿxœn³è7ÓC™÷E&Ù‚`ÆbGÞÉ"
®ãìœy®ÛqÂ’(ÏÈ®<ŽB7¤ÅÙÏâˆs?¤ïì4QGIê²Ü¾ÁÀ¯LtWÍÍ|Õä	1orŽ¶û®ío'i‡a˜èôŸ4í0Œ\j8Õ’­fÃgØ2ct¸õm-YQíÚUƒfß#z§•m‹ÊŽéÑ<¸?#«/*½!‰?cÕ¯Å"z‘åzÍÇ‰þ%+)¿ÂuÐ¸‹3äÞ”ýVõ_Z!~cý„ ¬Ï—þ„B«ŸƒYþÕÕí®²ûí(q£ˆ'yÆ‰-RÛÏ}×KÂ0HÓ8Km7£¯Ý€y<JÂ„;Ô"óœ3;O;Ïn ,ïçõ…õL	iÕ„Í=š]>i’ý“·8#VåqG„Ë!Zg²©RÑô¾zè§ŠIËÈ¯N›CBíìu-i÷/Ô¸[K²†¼ÿÿÓl÷¿Òá¹ÔDB—Ôéog¼¬Mqphô*[3	üClP_-ÉÎŽ
Hj;+É>vzöÝè^L¢•bçÂdVíÐo·0µ_ßÐÇ¢éSäL±][Uú8\miUúJ?ºÅm·HsQ´4ôÍLûiÖ…FO-á–¡ ‡ð·ÎLT¼ÎVå„’>ç…h>.ÈØáêÓÿ:œýSî¯4ÿ—î³¿ù!VùlêvùÌ$MfµQ·h” ]Cf‚º$¿^¯¥CŸƒZf²Ð ™òÊ²ÖÏ¨¿ÙqtðY'f…›².„ÛŽZâëŸm;Tˆè¢åO;“±sœDWŠœÈwâ-à~29¶Ù/HŸïÿq÷pùj5C|Ÿj†þy`Ü?½lX˜ó¢õÖäßëG/G:›f‚ïg×Ùa×ŒÕ£tT¹#ä”Øv–ûih»væ‹ H¼,™ÏÜŒs_Ø^†^èúvê†®“r/ó’XD„™„ïxyæÞ€œþ{°±}ÕO{ÔÐêY˜H†¡205€·8‚>YGÆ4Óðh;Éz
ƒc¾jb"(}Èg¦å÷â-ú’V7]ã°ÐÑæ™®K‹¾|ÑXïpÏL#Y^%x]åÅi§L»&èt­®é¨«5ëBfLv&?‹0«z>è×§š™ÉD¾Òz|¹fªN»¦¿ïK­F¨s	¢>uhèb.ª~(4 ¨¾juaç™®Œ$•Æ¾Ÿ[›#WhøÑÒ²MZš„,ÉŠÒbYF/É<œÍib(SôA£vFÈ/£÷ˆ·µ"ubÞµQµ•žàúÞuéåL§{ÑôÖˆ‘ÐMz©#l¬+[kàœÒE:ffZêû)Úf5XÇÖ_êAÏóðãòÓgC¯¿òÙáª>D'Œå]in‰ð¦~>ðš`š(]Ûw§á63ãQWcÇLƒ³
<%7c8½L r¢+uŸ1§­ºOÚï8“¡’*÷Ÿ‘"ß¾DR%© ‹\ÛÕ$ÿCVs^¹ïë¡Md.Ù´õ¢ØUý¦g§^"…‚6-Âfyäeqº^‹0Í=–Ñ®3ËYBH†6«Yìfží>s²ÜÓÀÍ«¬&Óÿ“¹³~—~;ŽéÛ¿oÉ"3•Yß®Ssy0¸R¸(h=×y/s¶ÐÆYŠLWYê_ÒºÌ¬¡[6Ï­±r­AŸ»}9šHÓã,«û"º¶îóÈ·
ð~d\­²µçÉ:7¾OI‘:™n««¡mU¯Ô‡ZßÓ:YŽˆÌ88t‚8™ÿ-EW9ôOÇòN&arÛ»by	1‡I´™¥9®7™qÁÌgßŸ†×ko~7Ì¯¸÷á[Xtmµ¶ÈA4€âRKŽÙñ"O1¢9l<H4j<NiÜüˆaóƒg5ÇMklŽí8Ún´à*R —‘·ŽÀ…¤ Nî7¹kàä®q“»NÀ7kà¬°†M@…›
6ýniU¸‰­`óZá¦µÂÍj…›Ô@€¦p MšÂ4h
Ð ) @S8€¦€ MšÂ4h
Ð )@S@€¦€ Ma ÚàÎÄH……›:o:wÿA§oý±SjÎ™º(²ñ,ù,÷™p".Rî‰8´}žñH¤±—Š(ÉÓ$ÉœLx)w]?vÄv&		òó˜šÞz²è¾
MÖqdîÎ’EU,h,n@ƒa‰ê¼PueÒT
SÇ,T^hbŸòÒj
Yh*K}È öp–v}:‡®Ì×©µ™ÕK¢«Õ9+Ì’lYHŒsVvÂ::êsoë¥>™dv*ZSÃ¬T}!”õ¬bm§Xù¬—ò„‚@“i·?ñÜ­†ž½òcÇŸZÝ5>™}ÆÃ&`x÷!d$cŽ’‹2 ½·gÿÑH^{óm&/XÆJ–îªÐØœ4ô<ž²ÈK#ßÏ¼8Mƒ8äYN»AB†4â<‰h¶™m{B°<	â<¼éTŽô7eü'[°J4âùvîÁ­Æ²ç¢ë/øâL¢¡¶j£<kìa¨ÑÐIæä©5òëÿü¯±¿cëUY’­MûÖU}aÒ'­Óòr1ïóó`Y°>{´]%ü`š¼-šöPË¥³F>Ô+>åÙB'TÎÞ}û½E“È$T6ÖWÂä}0‚a†±ÏV½´²ób‘årùÜ¤ŽRŸJ'{–—½‚[w¬•èÁ-‚æÌ¡ßÙx'OÇzöô:ß‚«Çf¸Ž»ÉV¥ëEgO5ãÃkôVüã‹¸7ä›†Ü‹V•òw±äÙé¯˜²ìÓ_O•gOÜJ8bÛOÂç…Â¸GÙ(½/`Z_ t>ƒôlœÏ49Lë§w
Ó:…éÌa:c<©ZrÓ9ƒé,`:œÎE#*œÞF:J÷¦wÓù¦ó)Lç9Lç9Lç¦sÓùW˜Î¿Ât†ÁÓ36=+a:—0%Lg	ÓgWp6¥†é\Ãt^Àt^ÀtþLçÁtV01¡}-¹éÜÀtna:cÒ´ä¦sÓù¦ó9Lg˜æçŸYÂt^Ât¾„é|	Óù7˜Î¿¡tVµ„ùÁŒl”Þ]ÓðFñ íØìn@³[‚bcÈƒÆ$0Æ a1	‹1HXŒAÂbcÀƒ„Å$,Æ a1	‹1HXŒAÂbc°ƒ„Æ$4Æ a1	‹1HXŒAÂbc°ƒ„Å$,Æ a1	‹1HXŒAÂbc°ƒ„Å$,Æ a1	‹1HXŒAÂbc°ƒ„Å$,Æ a1	‹1HXŒAÂbc°ƒ„Å$,Æ a1	‹1HXŒAÂbc°ƒ„Å$,Æ a1	‹1H`ŒAccØƒ„Å$*Æ ¹‹	2hÁ ÿñ 5 Oì ¦5Æ;ˆ†iñÆ¢aZcü±ƒh˜Ö¯æ ¦5Æ¯9ˆ†iñl¢aZc|›ƒh˜Öïæ ¦5Æ¿9ˆ†iñp¢aZc|œƒh˜Ö<ˆ†iñs¢aZc<ƒh˜Ö_ç ¦5ÆÛ9ˆ†iñw¢aZc<žƒh˜ÖŸç ¦5Æë9ˆ†iñ{¢1Z£<À´È•pÐˆÀÒ"GÙ(½QÓ•I’an-œW—9ÊFérÆá|q8WÎ‡sÄáüp87Î‡L‹\KGéŽr âü‡8÷!Î{ˆsâ|‡8×!Îsˆsâü†8·!Îkˆsâ|†8—!Îcˆsâü…8w!Î[ˆsâ|…8W!ÎSˆsâü„87!ÎKˆsâ|„8!ÎCˆsâüƒ8÷ Ð;J‹ì%£tÆ$Žõ’Q:cÒ"{É ai‘£l”ÞÀ´Èñ íAi‘½dˆÎ
•©pi‘
—©pi‘
—©pi‘
—©pi‘
—©pi‘
—©pi‘
—©pi‘
—©pi‘
—©pi‘
—©pi‘
—©pi‘
—©pi‘
—©pi‘
—©pi‘
—©pi‘
—©pi‘
—©pi‘
—©pi‘
—©pi‘
—©pi‘
—©pi‘
—©pi‘
—©pi‘
—©PdZ¤B¦E*`Z¤¦E*XZ¤‚¥E*œ[çÕ¦E*`Z¤Â9ãp¾8œ+ç‰Ã9âp~8œç…ƒ¦E*hZ¤Â9qþCœûç=Ä9q¾Cœëç9Ä9q~CœÛç5Ä9q>CœËç1Ä9qþBœ»ç-Ä9q¾Bœ«ç)Ä9
q~Bœ›ç%Ä9	q>Bœ‹ç!Ä9qþAœ{èD¥E*XZ¤‚¥E*XZ¤‚¥E*XZ¤¦E*`Z¤Â¦E*lZ¤‚¥E*TZd—þjÛHÑç9F²‡SÚƒ)íã”öQJ»¸éáÂ¦‡ëà”v`J»8¥]˜Ò¸Ñ…½ˆn€S:€)â”QJ{¸ÕÃƒ­>&,2ˆF)‰-¢AJ¸éÀ¦G€3.Ì¸8ãÀŒK€3.Ì¸8”ÀP^€³ˆÌ"8‹À,bá”Ž`JÇ8¥c˜Ò	Né¦4Æµ2ˆF)É1D£”Æ$¢QJc²ŒÑ(¥qx:€áé ‡§žqx:„áé‡§Cžqx:„áé‡§Cžqx:„áé‡§Cžqx:„áé‡§Cžqx:„áé‡§Cžqx:„áé‡§Cžqx:„áé‡§Cžqx:„áé‡§CžŽpx:‚áé‡§#žŽpx:‚áé‡§#žŽpx:‚áé‡§#žŽpx:‚áé‡§#žŽpx:‚áé‡§#žŽpx:‚áé‡§#žŽpx:‚áé‡§#žŽpx:‚áé‡§#žŽqx:†áé‡§cžŽqx:†áé‡§cžŽqx:†áé‡§cžŽqx:†áé‡§cžŽqx:†áé‡§cžŽqx:†áé‡§cžŽqx:†áé‡§cžŽqx:†áé‡§cžNpx:áé‡§žNpx:áé‡§žNpx:áé‡§žNpx:áé‡§žNpx:áé‡§žNpx:áé‡§žNpx:áé‡§žNpx:áé‡§žÎqJç ¥%ŽÀAÂ$ŽÀAÂ$ŽÀAÂ$ŽÀAÂ$ŽÀAÂ$ŽÀAÂ$ŽÀAÂ$ŽÀAÂ$ŽÀAÂ$ŽÀAÂ$ŽÀAÂ$ŽÀAÂ$ŽÀAÂ$ŽÀAÂ$ŽÀAÂ$ŽÀAÂ$ŽÀAÂ$ŽÀAÂ$ŽÀAÂ$ŽÀAÂ$ŽÀAÂ$ŽÀAÂ$ŽÀAÂ$ŽÀAÂ$ŽÀAÂH2ÊiD£”ÆáiƒÄ8HƒÄ8HƒÄ8HƒÄ8HƒÄ8HƒÄ8HƒÄ8HƒÄ8HƒÄ8HƒÄ8HƒÄ8HƒÄ8HƒÄ8HƒÄ8HƒÄ8HƒÄ8HƒÄ8HƒÄ8HƒÄ8HƒÄ8HƒÄ8HƒÄ8HƒÄ8HƒÄ8HƒÄ8HƒÄ8HƒÄ8HƒÄ8HƒÄ8HƒÄ8HƒÄ8HƒÄ8HƒÄ8HƒÄ8HƒÄ8HƒÄ8HƒÄ8HƒÄ8HƒÄ8HƒÄ8HƒÄ8HƒÄ8HƒÄ8HƒÄ8HƒÄ8HƒÄ8HƒÄ8HƒÄ8HƒÄ8HƒÄ8HƒÄ8HƒÄ8HƒÄ8HƒÄ8HƒÄ8HƒÄ8HƒÄ8HƒÄ8HƒÄ8HƒÄ8HƒÄ8HƒÄ8HƒÄ8HƒÄ8HƒÄ8HƒÄ8Hƒä0‡^4Ji4íE£”AÓ^4HiC/¥4hØ‹F)Ú#ö¢QJã^Dƒ–Únõ¢QJƒ¶[½hÒ(‡^4HiC/¥4{ô¢AJ£zÑ(¥qÆDà %ãŒˆÀAKÆƒ–ŒCy -gAZ2Î"‚´d²Rä€ìE£”9 {Ñ(¥AÈ^4Ji²Rä€ìE£”9 {Ñ(¥qxDà %ãð4ˆÀ$£zÑ(¥qxDà %ãð4ˆÀAKÆáiƒ–ŒÃÓ -‡§AZ2Oƒ´dž8hÉ8<"pÐ’qxDà %ãð4ˆÀAKÆáiƒ–ŒÃÓ -‡§AZ2Oƒ´dž8dC/¥4Oƒ´dž8hÉ8<"pÐ’qxDà %ãð4ˆÀAKÆáiƒ–ŒÃÓ -‡§AZ2Oƒ´dž8hÉ8<"pÐ’qxDà %ãð4ˆÀAKÆáiƒ–ŒÃÓ ’Œ"pèE£”Æáiƒ–ŒÃÓ -‡§AZ2Oƒ´dž8hÉ8<"pÐ’qxDà %ãð4ˆÀAKÆáiƒ–ŒÃÓ -‡§AZ2Oƒ´dž8hÉ8<"pÐ’qxDà@’Q½h”Ò8<"pÐ’qxDà %ãð4ˆÀAKÆáiƒ–ŒÃÓ -‡§AZ2Oƒ´dž8hÉ8<"pÐ’qxDà %ãð4ˆÀAKÆáiƒ–ŒÃÓ -‡§AZ2OƒH2ŠÀ¡QZáŒÀAáŒÀAáŒÀAáŒÀAáŒÀAáŒÀAáŒÀAáŒÀAáŒÀAáŒÀAáŒÀAáŒÀAáŒÀAáŒÀAáŒÀAáŒÀAáŒÀAáŒÀAáŒÀAáŒÀAáŒÀAáŒÀAáŒÀAáŒÀAáŒÀAáŒÀAáŒÀAáŒÀAáŒÀAáŒÀAáŒÀAáŒÀAáŒÀAáŒÀAáŒÀAáŒÀAáŒÀAáŒÀAáŒÀAáŒÀAáŒÀAáŒÀAáŒÀAáŒÀAáŒÀAáŒÀAáŒÀAáŒÀAáŒÀAáŒÀAáŒÀAáŒÀAáŒÀAáŒÀAáŒÀAáŒÀAáŒÀAáŒÀAáŒÀAáŒÀAáŒÀAáŒÀAáŒÀAáŒÀAáŒÀAáŒÀAáŒÀAáŒÀAáŒÀAáŒÀAáŒÀAáŒÀAáŒÀAáŒÀAáŒÀAáŒÀAáŒÀAáŒÀAáŒÀAáŒÀAáŒÀAáŒÀAáŒÀAáŒÀAáŒÀAáŒÀAáŒÀAáŒÀAáŒÀAáŒÀAáŒÀAáŒÀAá†Àáè‚e¬d)HìQVó]ç¤õ¦èÏÒüÅ‰–¾Põy‘‰føN¥Ä¿ºB_Ý0vgÖÎÁ>1Ä­ ÿN¸¡”5bB3#î(-ªí›ØÖØ\]§M]Rë[ïâÆ±|ûáæ±Üêy«›'y­$k_Î^œ,?c§‚>Ÿ¬örA½ÒEÏL[­ÄËµÍ‹óþ‰)>YÕúŸ'æý-iÑuu‡gü‚Ï?k:9ôÝÌ™„Ï¬ÅÙi‘ýéÙÿ|÷þÙKßyzOl'ò‚œû©ºa˜äI`ÇÂóœLÄn.âÌKü$`y–2á
[„Y¸B¼8;1=Ò¿’©Ë—¯,^—¥à­Ö¸Î­F²²´†¡h¬ôÒú+[¡¬÷|.‹¬}q2^©¥Ð|äªXè‹IRÚUY)´”ÕõíœµSE#¬¢¢¿„Åºv^«¯úV0j;+*/šökëˆt‘‹²`7R¤ž¹fHÑ¶Euj]íÜzóþoVÓ²*c*k¾™YÍ¥Lërèì¢Vgº¯´¦¦½jjÑl-Y“ÂßôýHÖX4f¦]&xA7n5bÁkke®1Wc>YÝB§óÖúA	qfÑT"­R¾ouüâds,ôØc ^¾¦Éü·÷ÖŸ»¢ÌšËÆú÷²ý&íN›ÿÍé‡º9®Õé¿Ÿ¶ß¬¦¢2—wª|9oÛÅ×''mwª“ðäÅ‰þQ7j)¬¼(iÎ8Aqâî3zÔÕðUn4L³¦øMŒÏæOÏBÇöj]T4š4èŠÈ÷ƒÈyfé¹L=é/Â8r‡ËËš33OæJäzönxÈ'/ÇÑ8Ëúù}Ü¿Çúmê…ŒoÞêU/‡F¼|ûîÝÛþ]¿Y·9UV#Ù7¾Z·9Uu·xùjA¨W³9y×¥eÑÌiæô×ôMÖ—˜qš×Mû’i-CÿÈöŽi.-×¦¿rÝr}uSwŠú´Z®Þ|£¸¾ó^ÄºùZÄ\°L¨#Å*Zwè)¨öOÏ‚ÐŽiQ«èq¸¡ã®×±­Àö=/–zR7íåƒc‡Sz2ôºAdæµ„ˆî§ú½EÈÖÓ vZÛÕ»ÿÔAÎG æA@I³k@r¹#Dâ¥i’1îeqà¤Qf^e¹ŸsÙ^ÎRÇu’ ¶]?¹›gÏ¢(ò<²Hiœ{™{"ù@ AßYçªm¬ÂY1Øøþ»ç7ƒº˜ Aƒ5Œ˜-Ï{	‡déyMvn\Ð„8¶>Ì‹f6 ˜M¡ûÖ2z-ÈÎÿ(Z¦ÿ°úGuHV¶Õ-.Mw¬lê;g!ÔÒ€WY
ëŸå×[ï»Å¢V­E¦zË>ˆŸ-êx˜÷™Æ[£â¤ðh«Ÿºð¦¢'I’8ÞB„Qil Ï£àèâò3à…ÁÜú¶–¬¨ö8cgÄî}p†~"&ä§EcbZ2&Ð %c¢Z2Æe¯%cüêZr
œz)>¦?pî!èZßõz»3HwgÓUô÷0°îrç¸Î=ZìÊÛ”¸K]ÛÏEšÄn&üÄwDè»‚dFç"&¼ç»AØ^ ÂÜqýäEÂÎv¶ëÑÐ s£<æF{”u3¬{]WtMK é`V=·ê®-‹JIM-µßèù
BrŸ|ò§Â'×§Ÿ¶á“%‘oÀ'7l×¾|Òj¡@*¼/„:–l1‘d}y
Âf(É!Lr“Ã$'0É)fv¬Ö”\$Œè½½öîÎCfPâƒ…÷îàoÛ
,>2ûh,wÎšK¹«P í~ä¤™à‘íy‰ñ,0t	qÏ‰ìˆE¶ÈòÜçiÊƒÐñápŸÙAÂÓ,ºœõÞ¨fðPiàbµµÕ5½/í¯ÞÿÏ'qÚ‡UÃÁëö~Ãë¦[¯KNëç²%Yu9;-/óÆ*‹3A_Pçºa.ÌÇ1Â§¿bM«êª–Êñ‡Ãk¬Q–ô«ÑÖé9[åèI´Ñšëkú]Yu–õâÈz7Ç³;Ý¬B‹ÆÈèjAÃx˜eÎ¸0ÄÖøMžÖ&»êœ$¹‚5'
’M¬ImüàLÂš4û`àƒ"Ì #±wA˜˜yöð!5-øœ)„ìa¡ÂuZ6H,ž<¼Ö[oë4|÷Ñ½?:˜Pl‘§;nbç¡íp7K\xn&žˆlÛñ}ÇAÎÜÜDœÆYî?HCÁã8ˆDÈr;Ïbÿ0ñNÕYÇÉ¶Óuôt¬‹yÁç}'sš—õY—º«²[RŠJjµQ+«ÕÑµFÛá9;½8=~‘Ò´ù—ÇÖ·µhfU½Î"DUo¶Lƒ–VÖó‚Ð„±ò}DO+—
mæ3ÝÃÈL*2ºsYTÅ‚žæ¡:Ÿé¢æuÙÉêj|Ï€Ý#kŸ`/œ
¼0N¢p;†Eá–Ê‹gºªŸê{`ð°ÀÀKî†g±±½lX˜…h½5ñÿ6öš{l»¤uºV;2±Yî¦Y»´-'kz,Ã„^Ú(<?L˜—ÙŽGaès:.³ßIcÜw‚ôû­¢;SGE•‰-4ô–¹K‹Œ"­Œ&ÀBã5d™h“µÈróÇÍ÷Ý¸%7ÛÝìã'£np#è7Ú‚ŸÑÏ:þ2ë;o‹>¿fNkýÛÖ•þÇ¤ÓË>PCµhußëÛ[oÚëm=Ó–WõòuZ2}Aó¦Óúè‚4# NÅx§:¡·ÔÂgužÓ³[ïûÛZûôís;25í…ôxM&¯13"H…WYVè! =.µùV´Ï×ú˜¤DíŠÐYÁ:ZƒˆêÔRõEËµ(»†¦ÆB0¢ªêêˆ•Åi%L
±PÒñkÌkUüVWdLg&lõÜ ƒiŽ­×½°€èÑÊŒ7döOÓÍÿ¥Döožýo:‘±ú7ßþ·´ìÄÿý„`E<VDNÚö¬HœØ7Sƒ×Ñ@e¬èßî=ªxPT9ö=ZÍù)ýqœ‰‡¯ˆZ:L´™@(Ô‹ÆHE!ˆÎ›oêÎ`Ðé¿MËþYß>+È\Rsy6¡íáÕ5Cúèè*;/®b«eþúpl¥Q’o‡y(²$í4‰ÈBa»NŽ¶JAì$,ò"ê%ËS¦<‹>á­,o,‹úö¿ßèDàóB\ÑÆ_Ç~¶þAp§¾°Þ_6­·GBÈ’×•	SlÒ!ˆŸªb¹‘ø™ðÝÌôÉ¬ÆôÐèÔdaeEÓª"íz+ÈB„ctâTÐa\º Š¥ŸÇ™uPÕVYÓê®Æº&Q^Z«åçÒê¾fªhéú²œKÓ‹º©Ë­gu×jÄ¦oLÓ3BjÝã-™ÉC}A¤®é4hš­t$uÎf} ×BO§QÂj£ÜÀ¹ÞóÙA¼QâÀÙ†(qàyÑdˆBä#Ý¿#S Êo>ìŸ–G¶û´°‰{PˆynˆõsÕu®cùðú®äè§úwÖsýÇä¡ÇÂ,‘;À '4.'ÍüÍÊ"}óú»ã¦>ž„>í•oÔüýwiý³ãÜ©9»ÐÍ£©ÍÅ²½“øâN­ew§æ©›ûS›ßIóœöá—Üåš%ÞåyÆ?¼}óç×¿¸Çîq0á:Õ–ÙÁýé—¿¼zÿ—O ÝÎ"•ù¶ÊŽUã‡ÀÈWW¤û!dm¡	P¼<ée^äøšïnúùhÉ.ÖM>cþëÙ®˜!s…ç&,Ò8¶yêç.c¹Oø'Dâza”d‚ßµ=—'qœð4p2;q³ÌóÄM	Gc1œÆÄ¯ÿó¿VŽ>Sn÷³ø„«òÕàØÏ@ô®€$öYá—ÆÁØÌLü0\çŒë`ŸÕÖ‡c+}é¶3ð{ìcœ„›ñN)íG\ÃnÂë‹’`¶u aý\<&!ihÞëìÍ2q.Êz¡•ÛB>!¬<Ùçq…Û`ÙµƒÈwÃÍdu;t#;ž
—õlß;ô8Cý>ùCKAoÃ‘–Ó7â|ÓÅ1ÏOA’a:ç´ÿÎ1â»ªàu&ŽX–ÕÆ1©_1ˆP˜[ ñÆj³;§äöTº}fPÛª	8no:Ø•IM—‹Ò›ÒÐ$ /ŸÒ¶0!Ã¼PM;¥yé‰ËÆ“Ún­GŸHT,…œÒn¹`ª™ÔûÊÐOj<¼ÊOÜ‹üÑ+ðèNd±Ë½í…NžÄ™ãæç‘#¢Ôg<H“0I»,‚ bn.ì<ãNœÑ7BdœÛ~’Dq>âö!ë)ÐV“QôÁçÆ$¡¯ðgŸD—‰ÜÔ<²T»gß¶²B‡¿é¹šˆt§´SVcàŸõóUcõßZ¹`m§L;¶¼’ð–M"Þ‡ÂM‚]c<Âº+V]ê¤ýT¿PO¨&“k*£äJØ9òcÓ£zSÙ(†Ùú™ÕrŽ½=L½’Ífß¦C¸ÃØ .Dë­É¿;Ät'’ÓŸ¼õÝ}WðËYßÜqâ8.‹½(Ì3æúÌ÷œŒùi*žGgGQÆm‡	Ão)|;´ý8ó£4îMt?#øúR¥.\/iÉé-¥1Â·šà¿ˆraòÐÆ4²î&Y&\:˜t“Š–²T”OÇ>Föäto/	µ=ÜJ÷vm7ÙN÷¶'S6™)µ÷â<¨yL¢û${›'òT©NTóËÅBÇc4‡Þ×xãuÚÑ•EÃy­Ô¤]oÙ.[Å~WäË]híPYîÈD;vž§yœçQd‚‹Œ‰D$Yš%Ž°½$‡gzåñ$ÉòXÐÿÑ—ô[Ð/ÁM‰V][ÓhE57gŠJ¨Þ¨h«;a«¼ÞÓŽ¹Oªµy/ôˆô©ç:»I3O÷]él¥¾»ÙE­2SX¶˜+ºÔ ¶Ú¡¯âGÇÖ?LCÍô˜	^Ò¿º lÆLYß‡N‡¿´jÞGz¸©š¯,®tR¸© ïo°Ÿ[d8mÖ«Ö¤í÷[ð¼ÓŠiX[ä…&ƒ4bNÂŸš˜L/í>»B/­ù‹6cBIÆÓ#Bfüöhâa7Û~x$ïáY€6ÛF6H,Îæ#´Þšø;´ûìLÙ”-4ÍŒÆ,»OÝ–<¤oÍÚN³jGö\–ù±Ï‚Ü·£@óúy‚å^F^&lÛ÷}ž¤¡ç‰+¸çe©ºn’±Ÿ{Qnß”Óñ®¿©uáÙá¦+zšoÆ"êQØFZÇ(NçT?Ï~$ð¨ª‘Ù9½ÔrÖ•O(™"šN›l;¶{¥æZ—â{:yÍÆB%L¦oÃ‡©¶÷V?´õm×¿‡eåi­Šv.×ÏR×´ê§àèždCcƒï$­ë3t/Šö¥x„^ÎDé<N7îãtã»Iii£5ÝK‘õÉ7øn¤1]üüºj»œ@-MUÝÂo­è·TwŸnøÅFw!ôÂ™\®À}ô,EÈ¢P¦¿9*Û%¶ìP	¹˜‹¡;©:©]ièw}“B	ö`¶:ßÏ²}@=Â#´>¯ëV/ûCÐ#¡zîG“ˆåŠ¡Qô8zGÚŒ¢û¢ÛÙcô4§MµÂƒ©B6´%Bo?Îm"3îeÌ:EwS³Œº©•Þy>ÂLm6¸)d](x'M£X ¢™ [ø¤ÖñÖ£Gz8kÓ"w2ûX7¥ºéõ9-ÚrÈ‚&ž$+‡ÞÃÝ w;dÈjÃ;y\ÐpEŽ—ønÀQ/4hð1kÏ~;*‹ê¬Òg$£ûªyYçè;Z»½%;e¿•8æeí¦7ýr³JMÅuÖ•m±(Ÿ×àÎ†iÑÆvŠ(Òa‚qQeŒæW¢B»‹,kp;%¬LoRªwÆZ¡ÃoÓJÞ®Ù÷Ñ'¶hô"\êÔ”r9ÝvžMJ™»KN»NÒTÔSÚžŠZ
újJ[Æ)NÌ«§¶ÓZ.Å´üƒ’5íÔ3K ¯'q¹™¶Y=‰ö­0gKNh©Øé©È¦U,6‚.ã“Ú¶,íJ¦&ý¯]Ô“
!émN½O=9ãºuéñÓ3úD–egä™ç8Žë¹~Äy–²Ø‰‚<ôó‚Äyä'y˜s–EÌKC9aê3?Jò,dáMgk¿²4E[ujå…9€ºO±œœ˜‘ªß^DcˆãÓcKo²ÚÆ»x5™òùÌÐþ²ªXt¥É‚ÔÜüÖmg4]uI¿qU?×t»ýØ©Jë&ŸY³•(ÍtWk.þºi
}¾öà¨×ÌÁ:íóBmkñ¬EÉÆêÓ}3¯»2ë{0g˜zÝy?5¬ƒžÅŽ€ïE¥y‡Wfkâä×uEÛç}å¤>þÐbë4†; ¬ŸGÑÌ~ot†‘Î]ç y­ý‘bÉt•gŸ^zJ³¯Ò$~Cé§9©¶ÌãÔ¹¡ei²`xÝUm?â}úé¼8—š×xÖ\V-[jâ2Ë§ŠI©GuU°ò„²bü©Y1aFWN(ŠíØKœÍâM;ÑåSSbú×{ŸNú°é¤Ñ}ÒIÛÕã@T\ÉI|ð=@/%·µ€è½ýrýO;¸öæ½´Š<#o”Úqyqû©Ç1gn"Â(žçi¶FQ*|æp†Qè°ÔñC×örú9¼é´ƒŸú"!cëþ¶•>úˆ¶*„2KÛiQ•¸ÈH`Xªõ		ÚJê¯{Ü‘N·±zÚ„M:1Î,-Ê¢-D33â€õ'Mši$NZÐgÝžVÇ*c*³†tVý¥¤yd#Û]fÿßÿóÿ6³^Çæ¹¹·ƒô¹%×	­$•Ï«º¬O©_ëàƒê„9ûzsúu÷³’]j¢†F¨óBŸ¾tðêÕ‡ÃUC«ÿùÐzÿæ­õƒb‹yÑÒÕÃK–éÔY­™¶³zaêpô"âþìÅ‘<Ø*‹T1E:Ïfÿè+`žÑ×³ìœ¶½šRír¡uÃGî‰f«·•bfï;Ð±ÍÖ½ôg.”æÚ¶Ckã Çf‹\C£¥¥9|AÜª¬aTgýƒgeS[¢,¤>Jlž¹´ZÖœéÇB—±S}ËÌôhÆ€ÆB²hZÔ'C­žæêq›²¡M¶fúâ-½“}aËAƒ0ucƒG¨3œùò|B í#^¸›8”mq´]ä9!IÙäÜðœ„ZM¦QÖÛžGùðZ`ßëÐò-Æ’MDTM?a½˜!„÷"ÆÐx-Ê–‡FÇš°u‘åòÚñ¶‡Z@RoÑòÓÒ+Z2âå-íx­Y©²™Ð+Yüß½>+I²=‘8+ukw*¥2\^WæTºúØ1ŸrþKs—N6.øáõë_¼c{âuÊrõµÞÄÎæLåi÷ÛoGïî2Úãuw¹†ºÈXÛ3RßášÂ‰«»^Óñ;]ñ4É²éº£×ê.“gQ:¡¹`ªj›W¼ûëNøËÄù¶¨	œôÚEñÔÎZB[,»Ë¬ÙºäÎØ´ÿÿ¸Ë£Ú¼âõÏ?¿úó›_œcïî×Uþ™ÞßhÆïtñ±3ñV›<OôR}ðõ÷÷÷oþö×µ=þá»PpÛŸ’ômA¸¹ýúë¿>ÙëwK½ê“ß‹2[kLùÉ¦ÚëM[¶O¶£õ^ï>=4zKÅ?Ýì‚™(Bó@„÷œÞ'ý‹:¶ùéÀñSçM[ƒ§´[ö¶u*¸údëÇ"ïÿFNp§Ý	9ÞOÞÇ`qCÎÀâ§0½ÜvÎ€ÐáµÛ[lýþ™žÅ#}|gÕìê4‚À	C%‰ÇÒˆg©HíÌs1OÄnÆ¾ëÛvæ&\>sŸÅ<‰Â0ž$®}ƒƒñ¹'«¨]kÑÖ³YÕµÉð6-P:âÿ›åô¾Â¬®Ä¬¯kïGöØú~Hé%èÀàÊo¦Å}+Îµ¯Š©bvðž.8SôÎšŸÆ?u0ô¿XU±ŒYãù¥ãßEÛÐJþtœJq4ùìP/´·)êÛ·ÝÍÉ;±§º1Ÿ÷åñŒíûS5?:cÄ»4<êì*¾`Ä5ÊNÃ*|­(¡=€qËd½Ðøl-yHÙ¸Ð5LÿMÂ3„}Ã ì$Œ}´0;¿³]ÁM‡A
—#5gR˜sûQ,Â(‘y~ù<Nó8qbÏI˜o;~j{žMðTðàæß»Êd»½{ßßÕ™Œ¼;dã­@fÏ-8²ö[õ'Å:·O§™,²¹˜ci­¶úÜ«ßêu#ñ"a³õá°}*Ýú$-Ã¥¨K­c.X‰ñ°ÞŠ…®z;&ù×ôqlý£?µ¶h¶=Ô‘ØËÙ»÷zeW±ã³
t×Ã¾Ç¤š´?3aÖº>!€;ù4-—Úogº9aàlLï-ŸÂgÀ[ƒC¹õm­S÷÷JÒ[àÚwÆ¸WžÆ¯ž<ÔƒîáºüÇµÆ×Ánìq[¤¢Ýo¡ŒçNæØv$b/yÌÈKûø˜“IÎ#Ï=FËnjÓõišæôcÎR×Ü¿Á‰=ÛÎŸ1³ëÃxÇw3ËZÐ¶óç?ëŠ¦±ÿ_5VO=œi»©Á–9;rèLÓ±ÿƒ~í±¿·í#ûûï¿þ„ÛäÓw</ð¶“œÄ	ÜÍ#"ÇN¼1÷YÜkÐîuP$=1zñÅeY@r¶§T8Öcîàš7ík¯à~«´«àK–òÄÂ(NY¹Œ%	O<ž×’Ôs=ßYÈ|BÅ‘ð…ˆÓ4p³$žãú‰#n0¿¯?Ú6SŠÓÆSRihÛ>;XW|i}VZ\Õ³»5åQÛ‘ù‚$÷™¼OÇŽFÓO±ó£àJR­lXÑènÛÃ~6í-èƒZPß³ã»[ÐqÂ>¸ý¼òš€ÎéY§ ¬ÐgŠ"öç3—$YTy½#û	úÛv]Ï,È½ÄñbA«’Í£Äq¹ë	ßË7Éi:qœè*»‘'²›Ü¡b(å¨Úµ»ïÓÇ´½¢u±Pºcí ¤“çBŸ^:W$%#¦údÖt)5û:¶~¢ÝÚªÂH´~_Œ5¿TóÚ°¼zõa»}1”³üÈ¸E&äg«®ÊË§´i§™&Ûdôaná;w82ucö~†Áyõþ­åÛ{›se×æÝ§–ƒ±v5}ÜîÔô¾´›oÆêŒs
*ºÝÁ5¯Ývÿví<úþ­çÌÙ‘éNyÂ}ž&‚{Âõ˜C6›,v»^žÆaN9ßu´£Îõxêä1s„ð’<sò<Œo0ÝßébZ˜Fð,+†ƒÃG&íOr>š)ÈÍúªÌ~ŒV?¥—–aÂÐÆ]L+q1¥k[Zß*ÙocîÕ´džNÐÀàŸ½<Q6âkj?£‡ØZsA_*}ÂzOˆBºœ×E¦C‰UÝ’ôÛÐþ±?sÝP’è©xÎJ-^“’Ps’Ô3ƒŒ:÷Å¦¦8¹1Þß:ŸÅ¦b¹ ‰¬o£‹Xš°uÖñuùí(D“^R§FÕ¾æØ”×š2äKz´VÃ X›ƒ¢+W®æž›mÇ7ÊG¦Öu$Àz2 %™|nmàØö•skÛŽ‚Í¤À€Ðª?™¤Ÿ2ûMñ»•ã»ÇI–›4cmà{Ù ±0Ä ÑzkâïŽp*ÓßT>¹"—4O”Ïn—Pæšôè æL\’ýÛˆ±]Ÿ Š›¥IÈ“Øf<s¹ÙÂc/s7µƒ0“Ø<tœ<eaâÄy×u¢ô¦øïw›Œ ÚÊö79™‰0æv‘e·Aç4<3–­“áè½Þ#ç]×˜Öý™³†™B;¸ûŸgô]Óó­‚k£Rs‹”õE¬F>0s°ý¬?höRÓª‘,–cú–~¬£æƒRE;  ^?­×¡aW£Kú¬\§ÃjŽº’~ ‰Ñç-ª1šXsQ.4"š^ÛÈ)#€C6C¡»§té«µç¢Òw®;˜ižRq¦"ßsâð
R‰ãÈÛ<Û/H¼À™ìÂï§Ö©<lÕ‚wŸ xÿ( Ž”…>!ŠäCØ—WÂšCñåÙyÙ. ½ÏÛ¥&)~^ˆ^î$†—!Zo-¿»ÃËe]¶ÚÏðÄqë5õè¸•^èV±áV/	RæD±HýØáYždye~à¹,Œœ HEàÛô¿œ`kž:¶—ºi’²È	9AÆnÀ­Ï¾Ó÷¤soÇ—{¢4ÃîPK óù›Á¦ÇÉÝ ýUµ4¿é³Mn³>6nÅÖ-{—ÒfKIg«§Ôû÷Zº£¾ÓYÔœ+aÀ0MŸžˆ|ôi=×xu¨a°x§”v¾MæL1Þ¦=¸˜|N˜õR	dEnêZ£×Ì¤]êË‡Ã¡­¾u1PÁ­¤°Ö|ñêýë7o†>fMYëòZ}·ë‘R‚•ÉœÆÁæ~ú»¡i›NÓX›ŸGw¥u°=–„“U%Ê¾o}aÚ_6Þül}ÙÕ‡ó|êÓ½hõV®ÄÙH)?¶XWu¢˜‘«º¥=DVÐ°¥¹Jp}Š’ºÔ‰©c¥‡Xj„W´ååU?búûÁ•‚pm}Z¯µ¡FÞ QÔB>ºé±Z_ò” ýôãºCÛ»ZìÓÔß:¬Û¹Á]¿HíýóÇ÷ÈÇžJõ²AbaP
¢õÖÄß”ºËùE^vl²ròéãò9éð‰µùyâØïš'ûèØO–íÇŒÈ•2‡A–° |åQÊœ;ÜŽB7tâŒÇiÄÜu…çÂwò,ÌxÎíÌ²,Òü&—åûú[sÒ™×Ÿ|»v«MtZnÕ‘Ž‘ÖÞHÕ:
ªe÷gElTJvVýGM~a÷&>ÿ•FÙv2û»fô¥+26x&ßTÖèóìAS¯÷*v¹Ét¢ák[ƒ«LëŽÐWu¦àµ—ç„`êNë¦ÎºÅL˜;ÑCf Û¥®	š»ªÙ±õÞ»°‘m¼Ù›i &LùÃwo­éýùñí¡RT¼ì2-ã»~¸úT°¶Ç»b¦§Ù6Wñ_j¶½CR5 ÕQ¬~kfÆYÛ·þ¬;ëIa~úðýQ¬½ÌjºÂl÷¬ø(-ÖtÓ_$vr|c¢7°“$¶m`']Z==ÁÌ¼ä{èôÐÉs¢Ñ}'èd$™yÉ&3¢1Ra<¸7_'¨Þ;‚{Éµûàê–f£D3üŸnnx&´[dù´†w`œü°·	Y~<C?“ðãIy?¤j]%à£1èÍ$}W|.ÜÝi¡XÈrÏ÷<'LC'O"‘Û©p„>å#÷}7‹ÒPx¡EiåvÀ‡±<M¼Àõý à~tèÝ¼³Oç¯oýTÒäã¯\?º”<w3dœ„“Ë¦7d”¸æË½»i{e„™Ù]N}ííƒOõ™¾;ÿðÜÍYìG	cnF<`´÷Ï¸pôjçeŽú¹ÍCZ0™p=ÍÅ7u3º©lê}Ÿ½¼:cq<ðà-{~¶ÒU
ÒZ¢9Ë¨?ññèÈÒ™Ä:÷hLœþÊP7µÂÔC™#uy	mžû«ûÏEÛ.…Ùú7³mî»7YÌLuìªéhÇÏÆ“&­RT§íüp¶¨›bqhµMs½AW¢
q“thöÉCÛ‘§þ šO´Ž^ê]ö;Ã5Æ#úhÄA;¯»ÓùÆ*ô®ü‚‘9æa6D]Æ{hk4¡»ÐQ‘™­½<;Ë…&Ã¢ûóaxŸÐV=˜œaí:n²]tù¡³e„"?v¦Û¡~ðö&èAMPhß'oix˜T—A6d·ÞË‰……P Zo½TÈ¯kîýÑƒ-Kw/œÜ‰ü(©/œ,a¡+/Ë]'å±kN8nàó(ôÃ€ÛiæòÄe9a8HÝ Jn€V‚Ym_Çd¬—ÐB~Ë1‹Ôz3Zg#˜¤åZŠ“y õì¢oÇ‘0ˆ`!Ôpêù7:Û`I†¾MÎBj´ÙTã	ÙÒÉ%Õ^â:W	<âÀM’MŽÇ˜„N®V¢1ÚÒ‡Í°Ã»ïåôƒÀ$`„L˜{x}×3ýiÝ®Þø£›¶BfGæ-Ii=MBz"à®ã‡y*‡LWœ$‘RG^1AÎÉã8‚ë!ÛöxÌì›*—•>äv}„ï:Û'32®$²U§ååb~k@}½8Fš>Ï6È¦àÇÔ/:Y?'ëÑér[«)dA6oÖ^Ü|õÜªÄpÄÇÇ:ê+¯±hOª÷žÚ¨ÎF¦Ú[Y=„³ûñÁ˜]¨O–}ÞS“|­7¨ô`ÚY‡Gæþ¬†æèHä¬û©NËkÆÆÈ®»–îåxöQÕ3¯õ¬çâÊ‹>#qU×s0lðgm±`Ï‡DÌ¡ØGšˆø˜`ª¡z=tnä ö	™ýÉ¼Îg_±ú®:Þ&—ŠKÛ·xòz$uÚZòðL*þ=˜TÆ‚A ƒp”\Àè½ýì.ep8Ü|Rn_ëÑÒ:á˜¸]ÂŒëFô±¡Æol‘“­ÙIJæØmŽýŒ…¹ÓN Ö¡I8¾ðÝÈwr/ui÷ì$žãØnâD® Ý4‹ü ÷„97@ŸþþëÙŸéqY^ð¬'%Óƒ±.Û¸ãlHCëYÅFBiÖXÏ2U/Žtô[‰EÉ¸èsóYV§â«fF3¤àZÀ¡!Q…¶¦_[G–^Õ;šïù¼®Ë´®Ï´YõUO’9H±þ*.®¹àù7$ç[j›²¶¹åêÿƒžèª¹è¯…L»Æú±®jëíuW¦ý•¯iõ.„Ú¼æï5!ë¯urý…C—ÈTou¥OE»îŠÕ@ýE”ç¢%#f®z?aa½¿$ËTÞ~ißÆ\§óŸihHÇñÏ×4—É]’ˆEVÐä{C à³ö6^·’ûAHz–oM·\ýêœÑìú´t­Fýõïw°¬ ¿åbj¤c>õb«K&S£:Ž‡WÏH"{d9Q%S«1Æµè3@ÖïÞþÇ`]É)t½{Ä)bÕýÆóìáiêd	“Ü $·Hòâ7.‹ã6— Éç9FpÔâ”&Ù(µcŽS›dÃÔV@µO2†<IØËØ6(ÉZ,â¬†ø.v¸wÑˆŽÙñ"OA²1ïy‡{Ï;à{Þßóöž¯ð ÂñÙ²ŸHpãóvþÙSô2O„¶ã±4÷Üœ	?Ë²ØO¼(ÍEf,óÜ„§ÌõYy‘evè$œ;q‡6Ko:èq¿óßïü÷;ÿûìü{2±ZäûÎvt%Œ£­àJä:öÔŒŠq!Úoû4®ù÷ÉªXü–0H÷[†AÖYÓ@`ð)f„Wï
.}–ì/.åíâ*DZÆá/¡3D²‡	ŽÝa0\ÿnè(
#æ‰ÄŽS?u3–z®ãæA¤Ë¶B?È£,tYæp!¢P¤)¼D¤ÜÉ2?ÌÒÈÎnBG:€—….¡7øôçUœëó»¾'[@ùÎ…²Þ©º­y]Z¾ÿðîùí©“Dè,ÅJ½.0GJëcZ˜ ŒcìcV4g¥hš¾n ILú¿~—PèÐ\³¢j…Ê	™™ûÒŽŒS!kOÓ5ý©õë‰§|6äŸÌ”ukxXiá¦kMÝÐ¹š†ZôØ¿~È—VY´m©éT9a¨ö²gjÝ`{JÅÀMŸY]enOŸäÝŒÌô4:	EdP pqqqÜó_<°èÒ“¦ÎÛ¦ÄI%Z=à'zˆoB¡kÇv¤þ
!QìÐÁµÁ÷ìÐÞf^uÃh‹"ÞwlÿS4:¢—è¨}Žû÷n
 øóûo¼Ñ3Œ†êSh€t<²{!+wû¹ÀIVDX“ ©pÝû‚v£¨=¡­¥û”ÈûŒ²Ð©ËY©ßà¦>Žž„~Z´·eÐ5æ¼}A8åÕ–ÙÁýé—¿¼zÿ—OHæ½ÔÞ¾ùóë_Üc'¸*ÿÚd‚íjåÞ}F­²ž\´Ò˜?¾5cnÚyà„œV‘$É¼ˆ{)mè]ÛçÌcÐ7N`giÈ=æ¹¡<QDž^p‹5ëoéK´fÃÓ¸Ö¨Í6nëÁŒÙ¦éj®·]ÖG¶k6Ívõ·ezT§Vª«t"¢aÕ™‘Ùj…Ô•	üL´–.\<gkZK}èKÑô]¥—#mä—`½©61p\ïÊénIl"DNìN²‰ýïÐ4¾7OÓú®:/T]iwØÉ·Œæ[Õ|9öÑµ“;ð­ÿÍä q7Öò!ÉY&Åa18êª¢m&·û´ŠSå>€QnôhÕ±~€ÙgYæ9+ŽÎJ½øßó‘ÎÈ®ïœ“7Nû8<Æ]øÝ,u8™`Z‡²8°í Ï‚œ© žûAè„YåQ¤Qz±ÏÓ,±™ÃÂÈ&“ž{7‘ç½6÷3X)sØÅG÷|³QîyuÚòâtƒ=Ï"c\
>çåJÐ;>H$cÄŠÞ<›mÑïqZ¢ŠÆœk1¨c¬7™œ¾dàÍV™ôPkDpµ[ëîÉøœÐþJwGë=}ÓÀ¨Õíæh“æ$ˆ7ô½Ò·’Ä½’½ùÁf¹Ó#þ”9ºqö™ixäÜÝ•{îþ‡Á¦—¸%(/­ÿšIüsÖOšXñÍè)8ùhª®•Íáøì­ÚwMš¿ñAÝfonXJ>Çàè®Ç7êÈ¼‚fÑ~PŸÝÖ½ž2Õel\e}IÍ˜`^ÀÎ£Pø˜&NìÛ¶HôóLí<OÇ'$ÂXÎ‚ÐOÂ$¦W™…´=â¡ë¸7n~h‰ûÁÜšõ˜è–ïmì_ŸFdŽHÜ¸î÷µXF‘.SÙ*#öƒØu6ËˆýhEJ4q½ÜœšOp½¬Ve_ðRê]×–Êž¿éàæGu+D¿qÉ¼a-<øº$ÕÿÄØm€y³a5µá­E2ÓbjC5±!ŸOmXOl˜MžLLl(¦Ž£h¦6ì&6¤UhjË_§6œ:ùÔg˜w“[Nh§ÙÔ†SÇçô|bÃùÔñ™ßêöÝhXL‘ÅÔ».¦NÝbêÍS§îíÎî†¿Nð³©3÷ìBNlY¦SN]ÐäéÔ†S²šªc•M9UÉjê[SM]úª©­šºVTÍT‘5ŸÚpêüY°ÅÑdëi_Lm<õõQSuUSõTSul¦Žg3u¾5rêØÈ©«A3õ¾'Ï£æ_SN}!›©O»™
š©«j3õi·SX;uÑh§>™vê8v¿Mlx>õY_LË©Ãs©SË&µümjß¿}zVô›Ûšé³ktÀú`R£ë¶2Çã¯ÇKyë¸yôÈž#ˆëZ¿hù‰‘¢÷‚ÇÙIbm÷Þ\Ví\ç1£©>\à¬¨ô	q;sZùqÈYÂcîÙ‘àNùc{ny©¸¡¦žg3Û	’Èca"²Ð#–'AÚ	KóÛœVÿÕßÛî¼V+¾T·U0ÕmåÙŽ\‰9ÛšºpÃmÚ^|òÐ—›gçÞo…ñ[ENh?€ßjëYíWŸh¸w\íW{ÇÕÞqµw\íW{ÇÕÞqµw\íW{ÇÕtÇÕ°Û@y®ñ÷t]mm…ö¾«‚¯ÆóaW%;k˜dÕÎ¼W®‰8K?ÂÀM…ÃW¤›{’4¶½ØËydÌÏC7Krßæ>Ës×ãÔ"¹)‹Õx‰Þ7·;÷ÕZƒß½ÿÊIâ8Úfð£À³ýÍC‹£pBÕÄ-tïÀ%^Ew-?¼Öµý°þ°¬bjß“}]éT¸óðN1®¦Šü"ÜgSaõül{‡Üc;ä¦N€çnêð|.¾©›ð/Â8õ=œî4ìŽÚ©ûwæ`œ:'÷žÈ½'òã‰œ:ßö.ËO5ücº,§.;ômž×SŸáïÅ:nYQnÐQþ=ý Û;ê½#´àë}`Oh-wWxjGQ œŒ¹Y…aòØÜö¹ßÎm[0'KÐçYÑÅ‰cG×ù‡wsÎn-<}K7¶C¨éý÷ïýŒç
cŒ:a¼I£æ…nÜ-{o=)÷žOŒç“ë«ó¿4oäƒçÓ}~¾/"Mî‹p¶í³ßžªÇkŸý¶÷9í=I_ 'iï ú#9ˆö©jŸí¤©oc>ËAC²ïëœYíÎ~oŽ™Ïu¦TµbÍîJ"c;uD`3?ŠÃÜO|×±c?å±¹)x(B;Èß.wè''	l/f‚‡vês;	os§üÕÜÚî*cÿ_ªK%œ\é%WIx#Ûuâ­³kî^¹95÷NP:Yèßñ<›?¼Se_¤øèÞ—ßWNÔÞM³wÓìÝ4_Ž›fŸ´wèì:_¤Cg_¤øhžŸ~·†òýôÒïéýÙÜHîý?Û*-:U4»K§	œ8¶ã(wm}èO–j‘E¡ï%YšßwX†Üw3—…™§=‘º©°E„,¸µ¨ð¹µÝùÆþÿ þŸ0¾Âã¶º›„Xãûw+(Üœš{ÿÈÿCOzïÿÁø¾Œz¼©w³/ÜÛ;©öNª/ÉIµã¢¸©[ò½çkïùÚ{¾öž¯½çkBÃ}­ÛÃ8Ó.¦öýÄ½nýåuë¥ßÓë¶¹}ß{Ý®ÔÈ±ÖdBìÌïæq7NcÇMãÄc;ç‘¦Ârj™Æ\¤©­Ï•÷ƒ\ŸçÛúôZ?"ò$±Cû6¿Ûûáævçy[kð¥úÞ¢éål¾l“yyq%›¾7/±ã‘5j¢ïm{‚î½o ’¶xï}Cyß¾ˆì«½«lï*Û»Êvï*Ûçsí½Z{¯ÖÞ«µ÷jMhø%xµ~WÎª'îƒ÷Š(/Ô(ÿž~¨í­ìÞµ­’ö¾6õ=Qaä‡"ÎR?]_g€q?‰’8ˆ#—9aâEnâúÂI_¤©p]Ç·c–Ú^b;tímž¨ts?ÒÍíÎµÖà÷ï‰Š½@³(mz¢’0‰Â-OTlðMôDmOÐ½'
ä‰
Ý}àÝ<Q_„ƒé‹(ïÛ{yö^ž½—gïåyP/ÏÞw³÷Ýì}7OÈw³/±û\GË¸B9ZFù÷t´lïÔöŽ–GG·ºPEK;±]¹[˜o{~Åq‡>K#‘Ú,£m:Ï<WˆÔ	x^ÄC'“ L½ÄaNB“4uy*>ånù°ºÅÝ:]6õøR]/Ét×K†Ûx¾ûþfïÐã¼[ÞuSvï€A9`’;žë·wÀì0{ÌÞ³wÀì0{ÌÞ³wÀì0{Ü³Þ!Ý0ë^>Ãsuï¶wÉ\;FEÓîÌe™evàGv"ÂØãyî§<Ï¼{Ì£4çLŸnåzn˜ÛÌN’ÜÉc'‰|ÛvÝ$àŽ¡ÛÛ¹+ÆèðpÃq|Õã¿å†ñÃànµXW§éÞƒrÁì¹°÷.˜½fï‚Ù»`ö.˜O6Ü»`&5Þ»`ö.˜½fï‚yXLqûúl÷‹îàó</«íÚÞëríøì®âÈNÃÌÎüÌ„ÇB!7Ij^š:NžûQè¦Qä©o;a–ò<ˆ\8œ®cQÌùŸËŽ+Žzþ þ–Ðsí+þ–0°í-K´:7ünþ–}ÅÑ¾âhïmÙ{[öÞ–½·eïmÙ{[>ÙpïmÙ{[öÞ–½·å÷çmViùŸçjÙW]ëhéä¢kæ»;Ú=v'HYÛv¢}',wDæšL‘úÑÎ|;u"æE>cÌOæ;Yûžàvv+±ËOæÖvçdûÿB],Úi2ÍÅâú¶n»XßqâMKà{¶s·”–Í©¹w°€ŽöJÆr¯©^Wyqzpó£z~¯•mïÊÙ»rö®œ½+gïÊÙ»rö®œ½+gïÊÙ»rö®œÇvåô8åÈé¥ßÓ³¹Åø½9qô–öÞ/ODËOŒü½Í:ÎNûè
QñeÕÎE[ðq4uÃ'æòp]0µÃ§2Ç±yúagAçÜµƒÌöm&²Ìóâ8C&³ÝÈM27ùÿÙ{Óæ¶r$mô»~cnÜ˜êhSÂ¾Üˆ{#jëššpUyÚ®™šûÅUb›[s±åþõoæ9¤DR\ êÈK·z©²%$¶d>™H< N&a²‡ÿ9Jc¢Ç¢Aÿƒ#û|Á Uóÿô± jÄn,ˆ[Æ…Ý"øå‚Õün¬ËçPÐåÚXùL.S ù'{åýùEªãŸ_¤z7}Qá¦ÏüxûshêKM=¿^õÄzb}•A¬ç7Ù¿æ Zã§>Uü¬©üÌðÙ†ýÏ=;'æ•&3×_L&Ãa.ðÐß*q8ÌEW¤—ðßUY-¡q*í£TZSc¨%Î±¤ÀWÒ$Bc„Gª£Ð£^Ò	­‰g"¼€v Îõ=Ì*Æ7†ƒ1Œ×ƒ™é½iFÛÃ79û‚b½Í‰¹‹cød°âæ½ù`4âß÷6³œ§‹ƒÅÍª’ž_GYž6ÂõáÃ‡Ë¶Å6’r,ŠE7£XZ[K­ÜÅ’V›í e¶yBý.ˆE9åëËIG‚X÷óÙoVL¿]+—í2+	\}÷ú‡¯$D5øÕ€·†úèÈ”V–ÕE¦6ç}Ÿ–9µ‰OVúÎ’{sNW~¾2…)~ýÃK˜_v9Ÿ\’oþôþ¸
"#,¬
O®¯kêžŽ¯©BZÚÀ¦Ä«_¢ê-)\Àör±ªw›"?½üù»ïß2˜;Y&Ý~ñÇ}ëc5Çšy(ÌŽÐæOÞÒËÂIlEÒøŒ–ï„6RÞòûÉÌæ5_¯•X5Ë
…þQ<°Ùb¿ùé×ßßþÇ·¯ÿãD­¡ÝBë%D¬ #§zËùìÊÆW°ðY;o÷v
µÞÆåhú¶1Ù§ËÂMb:]n:tÓìq‡…	†±4‘»mbï·IfÊÌx$šã@!ÕNPE¥7ŒF–´uTKÓ)úd|Ì‚•÷Ä(Nž6#êýâÆ0è|õ^t	Àéa ´ž„”,&³ys¨„(iÖÀ¦¡[à¼öi4M3·XÎRs4Ø64˜Ï—x¨8K=€S“ÙÂA“‹Iï*6‡†., a?âOg).ü4ÍšO5é¤ Äe¯w×@^í!cºÌƒñuï%ûõÞ¥Ù8A‹ã<s Å–»ÒvÖ/<”ws<ŽLã¬9>N›P»l¸ô—€¯ãE^­úÿv=ßû›"B0 Å×ýÛI¢ö"7Æ­Ù¹î¯„¤jº)a9}þØÎn¿Y³}V‰ÚÚãÆOÜØyg‹{ÆúøE)+aÛ]nyÛ£™äTÉ!äÖTØu}ÇÁÉzÏN÷n~s¤‹M(
÷QAÉÃ%¢_ÞÞÃÅ®ÑLÞ¹ö'Û…ÒX1¬9°¬¼Ð¸oJ€)þá»ß_¿¥oy…0ö²­¡P\‡ðv^ƒ–6~úþû·¼ ]&°÷HBjFS+3šÄå0U‹M<æŽÔŠUùŸáÏ1üùÏ5]Ü”øþ?¾ýîg@À…p¿ì¥­—núÇ°¶Ä£„/)}œ<+\ÛåÙ~áÜÝŽ†¬fÏß—‡¶þøå%ƒE%.yá`÷I«"-Pì’ DŽ“ýåb€Ž“Ê ÀÑXQ²ÊRÅÞÐ
áÇÁìßÚtÇ{—âû²ùëõúaºì‡˜Þ÷'3@?îø´Àfž}z>Pv¾YøqÒrÝòƒÙÙ>’6—”\’ÍØ÷[^î'™¬yÆìH-5œˆH|LŽ$æ²#Q–¸ÉËd¡`àšzª•	<0"¸cü¤_&ÿ‡®÷æ~€½‘¯ÆéÃ¼Á¤½0À29ì7í«b€é•€ÇÑ'ãÔTÙx(»Õ>yyÔöo¦IÞuõê€ƒB­äDëIø‘€ÿÛý
F–ñ¾ì–‹ÂÀ1ZK¹á¥ÀÏ4U¢à9¾»>öWk§¿Z5þÊ/à¯ÐKÚ›Ìz«LIøÓË®¼˜o§Soº?¿ú¼?pLOéÏž’Çº5ZpVyeÖÝþè±ßf¹!\BÝï“£Ç™ “‡ÑMB³B7Œƒ\Uþz:DC\.[êzñ®ªüö>~ï*™¿‹ÄÏ•ÙýAqÜÇ!t·¼Ýé¬öÝ.‡Õ…á_ÚHŒ@‹µA§Ù7£4Ÿƒ2¹šå`+•ºíÏÁVŒRõƒ+ÔÞ‹£ÉËú˜Ó|Äžª¶Ä'?Zý§ñË?çÈ§¹Ðo'¥ï“[£½BgçJû·Á×8Î RãŠý&£édû¶ª‘°œÍ'³*‘èF°=ªDÒí¢j,yp›æ5¡?UõÏîª!TÀ-Þ­
7˜Mú«¸BwÖÖ|¦8<§tuÌÏ$ bl§âI€už¯rˆŽ–Ï¹jmbmè·fyâ5,tƒjZút¡¼]¹Â•ó@®0¼³#'`#–ö4¾ëóª8 ÜRZ>ŒïÞN·~™«%?QXô¼øæu¬«öÅYÓ^~m‡uŠ5Ê®œ.Ï§3QŽoÇóyÈ_—þõõkØF´p7ìJ]²³ä
ƒš»Rg¶v¦T©Nz W¨“È®¦r…1Þ¹óFÇÏüçM]ž·RÔ™½<k&Ïjª4®¿#uV[g}éÒXþ¶ÔYK_œÕAq^[g-DQ¬±7¥ÎjêÁQA‰ÐYÝ+	‚<:k‡Øóöˆ­X¹xÐSgýî$ ±ßßüü²ÎRì•>§¿[òå+fŸ|aëS7¾žÔú¢Pëž#™¬Zn0M³Ô'—U@p: i:ŒóšâÀ—®´ÇÞï•.6X¤WÙlQãG®K×'(`Àµbãß—¯ƒAä
õô®\áÜïŠ•f1ìŠ•â§]ÁÒÑÍk”îºôp­l¥ò‹íHOý¶\éÌoK•®Þ©âï¼%wÖÀŠK¶¥Îkë¬OVê&ïHÂšm)NÀ85#ü¬±‘•T/ÑQúÕ©b_LúUñö=$ÿ¸Á_ÒÒÕø…¦ï÷G¦ŸßŸßŒj`UåÑYù­—ûÂÿ?ä-^%+ü»bÅ«W°dÖVù8}Ì³isÒŽÆHâÝïO?>8ð…-ŠÏIƒŠ ãuD~JiÿÝ`Ñ_Ì–óÅ‘r³oÜ¢?Çt{³=ÿnÒC±74ñóÉ0-ŽÞ¤¼O¥®oãÁøz»ÞJ¤àmdÄ="±nàÓÂû#nãÔ_Ž£)¤—–Üåå“JžBm¹4>%/=ÞRÿŠSžM„iÃ2§I
tôÂ1Ê¢ŒQˆÌ¬ˆòàã í{¿´cìý>n)Û[Üí/_ô~øÇd|ýîÆ5ir/]tïnGnuï©“îÆ½7³ezCìý6McüÃü%Þ$k…™InžbÏì½ù^^¬²â.ñBy[d¾œâ¦ùñÎõã^ôË~€FÛŽµ÷Äór8\WÑ¯0½vãù»Ù`·Ìaù´)cð[XDXO¸™Ì{ów.öxÀþôËa{5)Í­ß«ÿëÃàÝàÿ½r!¤ùü
ÿr…éWL9.¨P}ÎêÀ«'4õ3U!iKŒSîjµ„ÿoFV‹þËø5ÁÑ{ë‚oÝ[7”Js€}‘Àâ£lûµS)@Bo>w*…eäd^á¡×o¶N¿Ý4•ŒüÏ½æÛ§Ûš6ÿ¤W¤öU‰s)ËfäÑ§`%Uf>-c1Ïp6–RÍ“;úR:œÏÉŠ;9/eBëžX2–ò=3Pž(øÌ@y´`9eé¨oŠ·M1©åMéJ{f¿<Zð]éFü§£É–Îå°t.Ë‰7KS1Cç¨t0ãÒíðÌùy¢à?'çgéÌÿ‹’ƒÞÓi¾+-X:ãÏÄ¤§
~FbÒÒ¯ý5“.J1êWÁ`ú¡ØúÂ¹NWáU4d9>Šs*yOFZÊyOEiN°´ì÷q]Eææ{Ž1:!2\§Ùûq8Ÿ‹’;v[{Õ\’gT›dufD1^H Â8—¼³Ìq£b0šÁ2uÙ…À§6åCWÍ¿í½Áaý÷¯ßC¿F“EêÅÁ¹Ëzívÿ÷`¶Xºaï×´ø0™½ë}?M—!Ö7PÛŸÚÛæ{ëì}¸„›7N>Ì{'K$ßz?Hš×Öµüûê&î¿÷Òøý`67|aãÉ¢7ã³>ca_¬T™äkÍÎ–c<8yÑóËE/Ï&£žl´R½õ­hŒœ_´%z`ÉõÞ»Ù -šGƒÖ57‘ÜEjø¼æ—½ÞÖ³Cwt­î¢½:ßŽ*{Í ×ãƒ’c¨ÿ8AòƒÞjxwÝ….À¼]Ìa¥ÙÓÛW‹)Â±Y+Œf“Ìj­•Z/Û60«‰1[áp£¬2j#n´¤§_#Zõ­ßî˜¾­¾`ÿu‚îcCÛÜ
EêBÛç\ž‡žãÞ…5[pu~=Öãæáž<Ze?ØáªÏ·=a2K¥Ü0÷e—2Nf}ø×¸¿ÀKßÇ¤þþÇš¬ž×¿TÝe­¼&üôWqsÕõÕ?@‡ÏÜÈÕ¤lœq7ò…KZ<”x;À«ÎóJÁ³np~ºÛ˜ãåbØ~Ñâëv›"?ýúû›—¯ßò·…ù.›¦f"TéŠØxùówÿùêÇŸÞ_ñ©#XsUIHŸœíqÝ_D:áq_
\áGz†å;Àæ˜!º+¸ÂPÇ{Úkó˜x\úÒæøÎÏYz”»&™7œqÊ•qRÒ¤³0>î#ÒF*•'ŽXC£
Ä©„vŠ€ç¹Êp×~m†ÎìÞm[Ï×á§&öù+ƒÃ}!Ž‡Ò»Ž‡¦v¯ã!·Û_œN7Aòôó[«fŒ×¾}úy2møåpB*Skv4SgHþ:dõ	?.:o£VGi¤*GÉq‰Ûä„Ákeb²6ˆ(y
\fƒcIzP8‡‚>/Û15O#¯wÿ|9X¤Z-2¼¯Ã*»•}!šd‹/ð¨&áÆ§höò—hÓ¬T“¬¦çY—<^—P#Ì™ºd^¾m2OÕ×çÑ&4+aý:cKÙÀœGX–vE&*%–BÐÆŠ}r„Ü=")î¸þÐ«¯l_@h™®·0E¡>Ùz¼}]ÝtîãºÖÅÂŸTX×}1[‚Ñiš?öšÄwLµÞŒ7é¯ë
ÓE{Â‡ªõ-F8 'wô’ä’òMÅ$¹¾cA=©™VëðY3=^3	nÎE9«¯ðé#–Ÿ˜¼àÕz+“¶›¿&°ºn¡•<~ÃˆŠK¾šR)šóÇú»<.ì·':ŸéÔP0|Á‡H”^(æuÊÒj›³>D§Dà‰gkHôÒ8›m²ÊÍ“çT>5\îØK‡M¹öèoûÐ¯½ÛÑ¨ý9ÌÎúL¬·q$w±q$·~íçÁ1Ü`†K4 ó´À‚¸h‹Aš_´Çq#÷.õ–Èººy›¾ƒ‰™áoáOšÇáÇËÞÏèê|rquo	|Ë• l¹ë™[câû>½tÛ\¬ajžºøªŸãý‚Ž,>ËÓŒóí«-J‰OÝ¿ì#¹¡ÅX¸ºç#½Çm´ª36ëg~¶¿ÃÙ§dÇÍVýt5¾¾OýÐý+v€mŸÿ6$óªžO½¾øS¯uqèÕ«o)áòù¸¬Zöù¸lÓÅ ÕÚÇÇg °áŸ]œ¬uùòOW^âi»ÚÆƒ‘vØÂ- ¥†A÷Ö-Ç,Ý}AèÃ1:‡G0âóF¨jâ"=ôÒê×Wwp¿ßB¨~LÙ-‡H‚P)ˆ¸»Ådö±Xò½‘}mœ“®¯ƒe6<–c/15…G¥“3×í%õy¼Þls
™± §ÄÅ ˜¶Ì¤ègLemiP*¯Á/²ÉíÙ;Î„ÌÎôzW£Z»E­ÇóÐ£üäÞðþÓ™}½½xØÛm70µÉLïôeÝ*ú·ë”Û/Ç­5¢Ô­¥T©·ýZfe|“²~Â¹(ÎRÝ^ñÏîã<\%uåC¶OoÍ´ð3NoÞµ¶¥$ãô®ìá2Í`…ÛßŸ^ÖxR_”cê–UÅã(LŸÖñ]õFæ'z®äÙ_þäþò¹ï@ŒÓb1¬zeSâ×ß¼yùãÛBÒÔOæÓn,·ù|ê´Ù¯Eù9ˆðI‚·ó›QNãPõYyäa”æ®gü?ú?æôžNÕ½}—>ú‰›ÅþI\pï¿óýS×Vö#> Ý-Hþc¿o¾áù¶Ý>^fêæó$AÜ}M"Êgrhµä˜ég9åRZM˜ò˜ÒJ½N)§Ì>Iåw&úd)¥Ñšä„ÐŠÙÃˆ+Gð>Éæÿ×fztÓæ“Íz9—GËÞç\Úò3S˜i&¶ÏLµÒ|ëÌÅO“î[yÏŽå#³‘­ªÌÓÙtºú]ž Þm ë±¿;Oéí6|>g÷Ù-y>Æ{FàÿZü)o½ ä5ì]i@EÇŠ¯Š9?øÆçƒÐ':J^XjÊIœ½ï3q´¾a»Ç›ýAéÎÈ%ÚÃËxEIe°ðƒØã!ú]L=PFFÔäR›MSSŽ¦•ã‰YÃ½KDÀutÌG‰T€Ï¤Î‰GÎ|ˆš$'ITð#¥¢%„8¡X:€¦o’?6lÜ0A3øY“?rãÁt‰Ç/ ‚ñ^ÓÂ½èÎ»yšFÛ«éi™Tæ#À”/zÙÍÖø óÙW¹Žm³ó¥H¶@Ú’\PxMë­ ‹û{Ò’¯ÿ
j¶lXO°‹å8ÅNÓƒU%—û]‚u×·:wãfénjžá‡Él:X\Î–W£¿-®V:Íÿ­Äþo¹ïs¥Ø6Ý‰4”±M´OHA‚dÓ±>.çì^âú/Áõ¯–þØûa2‚9<¼ÝžIþxâêeó­iþ”xÿÁøÍéÍHm–$ªÉØ¾rÔ„4}=÷k¥cµ5Àš³£ÀúP­ÈhlÎþ‡±øiG ƒüÐ4‰š8Qc8:·=¥ñœó­3Ê&Ð4Nx‘•·"v(3M&ÂpIM.®‹<ÓhƒsIfa3þÙúüS[ýÐúÐýÖG*±}%LJÁ7¯ªJÍ.½?Ð¾åq¥gûsÐþÈÊ†ûSz*Ct"Âó/bˆ¾ôö)ÒƒkÁÇ!ºú&æòþ:ãuÆˆxg©gT0m×Nk¦’°"sIŒsÌ&eá¹\
Fˆ«”%Ùçp˜Uru+Ý.@`§?âuZ¬(GÞ{CéöEK&ð®¥iÌ.¤^úcUÏ‹ÖM'à7ËáÝ…/¼½5X¿@ÉÉ¾12¸^ÏÐž87çº½†¢Í±Ã›0¼‚ÑP¼ú¸¸™Œ/6(îÀ4ý>G£}ë-&0äolîƒLCõx6nøöÿC‘šjHnÖüëÍËqÀÚ\c’Öo4ó¤6	V×e«Êà\§ËqZ\µDú%çxÿ¹žil;B”E­Ø¼žL4çætNÝm¿YÎýv!»Bo¾ùxôCzŸ†“iky@·/±OOiyvûX»sNëýž7ÍÊ8jöæžŸR?‡ê:æïœ®ó†cYÃ&îÛ²ÊmL‡Fi#w­“ f‹â<Ò£g=aøÃ¢ŽØ|s´«‹wêÀ™Nàî·l4Ç€ƒ²x|Lò>åvaˆcŽ’¦ÈBÈÄXGæ'kj¸â*g~"7†iÂDtD	ãII85XðÙÿÓbóÀóý.!S³Û6Ä’
Ê¶±±ô4QÈŽm*÷
?³)>ó±ÁÎM11•ÜËw¦¸ÌìÞ&pýþ¥lr·'ŽÿŒÆ¹îìð^é‘G[éwçúÊêrÀ uÚ*¢5Â1—¨Ì©@©Œ‘ eì¶ã‘ÚIU‚âQiëxÙŠtˆÑƒž×37½ã3ìáË·ï÷/ô‚9\=ã‹fo¸Ò„‡öÿÜ¤1„†:»x¸’h3ï˜·Ü}lwmÒ/>¸ÍËhRÁ\Ï&óy}é¬÷Óï?÷¶Ló“Í0Ü5šGm¦ypˆÞç^›I5ebç_n§b3m[%íiÞ¿wýf}õé?¿ïº=ÔÇšK¥¯˜.ÞaNø®ÇSãÈ¥¹de
t¯IÜ«MÔTæø¨ññ\_ð’|f¿xxOÿ¼ÔêÔñB;Dú'
ÏRBãPÐÅQq™;»Jê.	ÑŠ·ã%A³žÜDwùX]ƒ¢ƒ ’èãX„”ëâð&lvëå>Î8¶ÝÊN•M…?ŸÓâèUÕu´§™-uÔ6´SéÎ™Ã‡ÁüæÈEü5Ìh·H«<r6Ö4éd¸ >E.´•†… WN(§©4„yeƒD$/]HR§Ÿee$gñk}B¬%`­»ðÂÖR
9Á·±–1†˜m¬Å	Þ£¨ÂZ_MxâË@[’×Ÿ¬ÑVYxâƒ]'cÏ°ëiž_ª»·~ÞÓF[Ð¬îÖõÓ^Ñ>ãnÃëüÖéçCh…ÙÏHí±H­Ñ.}òÈ3Ü63Ì³LE ’s•	É^f<Ó
2vÓJã…“Nä<'‰{Ã“÷ôÝ@¦‡`-Þ[Þ‡I`üŒøÓž¼ÄæÂëÎ švF»
 ¢E£ï¾,„§J£i’X»C¯d™bró Êj%O?ºZËÏµó ^©®ƒx°£×^ß:r8j Öß®;×Ö÷¹âgw\¼ï®O3&´€j5§€ÔÉbß$Þ;q†¥ß¤sPÞ	—þÓö	BYÑ”uÒRZnµq9$žç‰î¤œxÌŸ4Þ› ­ÌQÙ¦0IÁ…4ò õÂ³qûBŒÛƒ<ÇCá0nZªãfðvØ¦q3†ŸL®ØgÜž#uæ­6Ãþë0oŸ!NñlÞ>¿yN®Ï»½î«LûÒ¥´t>$+¬Î1Ï1YÁ+/™‰<:!‰PÆêB‚Êö.™lB>dÔÒl4ƒAûùê·Œéú(.hs›b³&³æŠØú••ù`4ºZ¨kÅÿí¨ìæFÐÆ`ªBó°‹kÒÿ}Þ›ß$¼®Ö(¬
mÓ}Åh“Òm
ËßAë­ìE#ÛszõÁÍâê^Z+íañÅ—`ß<w†Åà7HlÔŒkm¯ñ_Æ½ÿ|ýÛ¯½vE<á›ƒå»°ôHhtõÚðiöñª]Y{ÍŸeLbØ†ùƒ)Aøþ7È(3f‡ÞˆYÑ<Óz»'„ž¾ñ}ê›>«òé¾.£Í>ÖÖ1®Ye*áZ©B7Ž›º‡Úã:ÇºN'c™.šÃzJnEï­ïËˆØcvÎØ1¶$ô™OÆýPPðkÊ*ØË±sª7³EAÆêÝ„‚>l–DV¢×ÿûúÍ¿üð–{¢#xm¸ +wÅÊFXþˆD*z@"K–ÝÃÅhNçl®CÌþmõ2Ac>ö?Z ¿jU9˜ß;	J‚í¯E+8Tp[ïºpªÔUP¤ßÅ[{à\)¯À™€.ho£àÙR%‚'Äš\$ÜEž¹:ÂŸµ•ð‡àsôVb…·þÄ Ú"xt_ S;€Ž[Ë :nÍ 3D¾ý“U€îË§¥<ï†HÇ®6|ñ”®(££klw‚hà+Áv¥¬÷ ï+ÏOx÷â
â•2'n"¸3Dv@_Q÷ ®¶|Ýd|f4HË™¹ŸAa7 {”®Ý|9¯Å†l¥1“æŽ^W¨ÊÆ 	³uŠ
ÅS–TÛ$‚MÊSo©4™zÐP
c]2ŽfN”Œ¢a JBSs !þ6MãWí°zÿóÝ¿ô^NcÞžõ¼Ä‡ë#Æa0˜È35ÇC$˜Úædi>.›£¨öNqLÃAÍð !$žIÍ&ÃæÞsûÀß`Žˆ¯5Õ  ›ÆÚûËëc®–œª-UÅ}‹ØÚ¿¼ùÚðqT¸n1ÆÍY`³|¨Á¸]øÑFèV‡—ŸGËñêÜÑïb W+×d<XLfkðºêðÿ~×ÍöÝ¯Ø<.Ö}jâª	Œ{µN[l´kJ.¦ql`Mø‘4VîÅšŒ++ìvfeVIÕæåd+Nè“h÷{©ßnŠ~»*Ðç/?¿yÊª\‚û”GiÿèKËRYRjŒJÞ}>bœÖÈö~X{áI%¸nÞ×ú$•ƒ²•E/RŸ—‚C 5®ö¸ä¥2×‡» O¶}:ñÔÈ÷?ÿò_Kðˆ¿ß`‘xÕNä¬À}ßâYâÍ|¼N=œSÁí«¢kÑ_3WUCCÎ1™žÓø¯ð‡9(é³†¾–ùkºÌ³FSŸS¨Ù|õîiØìã´Ê¨KEÿdOÔ±òƒÚYb¤j±æ*©è!‡á ~X/Ô¼ýS+Ö`£z¡)`Œª•ÐˆÕ^@¡¿W¹z ‘n§“Ù¢~­‚èu§™«mð:-&“ºeR7€)ëçp%5o1x¥0 æu‚ØYòÓRÇV÷y::³¹Ù¨Z¢^³mˆêõ:Hÿ-ÜYû¨‘„å:[yÖuÒ3€0stP>V
žµ5Îû„óá´RâCògõïCµžø0ÑÒ§ŽÆ}o™|Ö×HèãäKú>N‹þ|<šâ›Ç -úÝóù±l¹ò\bÓjgžÏ£˜r_­Ãa{~«ß^µÅíø­ª¼Fgy»Ò+@•í|–³‚žók˜Ýxœbuð=ûÁ]†z©µJÜ'Ú–Æ—âÕŸF‡ê¾Ÿèé»ÁÁÉÞÓ‘âWØýÙâ©ùlX-u7á‹Ùr^ßh‹m§‡gä„ä‘.ïË«P?F,rNïñÕy“³2G-ƒ7Þ´tÕF’®Ü8ÜLfó+Ê±ìZÇì­tƒ{0‚ù=^`49Ío<œê­k u¼Ô|é Ì3Î“c·4a»a¢Á"óU+è¢(rôÓùÆ˜ÜõÃo½]
ÀÚ*€z¢`»NÚ¿º6Ê@sËéõÌÅæuÒØ¨ºôçNNDf9ká­õYÐ£63cIDJ'ˆ6D0ª…ÈšX†o°ædYtBÑÌÝ!ÊUL.Ù<ØØxÃàð³ªÛ"ÃµÈíÇ‡L·¢ýŠ°/#BäÑh‰¡æû»2Š!N¾P±³PvbÞ¥ùÃOî¯{¡â¼Ô“'øSj»Füc‚E†jò›¦×ýA<þ`‘Þ0OœáBi‘rbžZf£T
•=¬[íè¬m‘&%¢ô:&¦µIØÈI'e­Pže˜Öúïem‹ŒxB|¦š;Ž§§FiœÒ‰Æ”bÎØHÍ±Ðwu‹4H–ˆAË r†½$°ï@C(\ˆcÅÕ-ê`8Ê°ˆl–Äî˜ÏÂ$’B°4&c>–Ÿ\Û"”ëÌ\ô0¿9(á,Œ,ÖZ0‚ÏŽ«Üa‹ZG’=Ó2ç-¨Œ/^Ød©D[n”3’²N[QBá[FtÊÚÊÿû"£‚_Dk3¬ª[tv sÒÃæ÷–RøjŒÊÌdÐÿdQ¸.×ªËÒñd<Sû¬4¬MedB[jˆ7”gË„ö¶è™Ô”ÙìÁT›H4……¯§¬Ö
Ö«öÜpXÊ¶¼SÆÉDe‚AÑ@8‰Îr*ð%«"î«lw-RØ Ü%•°÷|šE¢¢‘ˆ–”Ëñ˜3_Û¢´´@R°Í0$ƒÙÃ9$mƒ€ñÃ7d‘ËCªmQvñDI2åŒRŸ‚µ)[@fÔ+Ø-‰Y;´T'Mr’Ö:íp•Z¼hÊ…š:?w2pK:\«4Ù¨Š*[{?hna¹hmœ¶™£8uJÑÇÈx„½—r€ÃŠ±I{&¾¡ó&‚V×œ£çªmQH‰/ÚÁ™ç9{˜AP>YågDr(0hÑá~d’G0!±€* ´W 7„âö~Ó")ýÐe‹Úƒ’ã¶?Y/ÀþÊ¨‡É´´8ð‹.¿£RY%°ûœP3p¸1F¡y*D :lÑÆˆ€v(á”â¡ÜßT¤TåäØ—[ôZ
6ˆ%¥PÎ™MCñO$Õ!–ƒc¥$™’uÂ
–l•7ÆÃ¸¹„}iU—+¶¹$I¸T‘Xvš n6`T|DÜÚa‹œJÇ¸×AYB…äB*e&6¨¤‡=â7¤Ã•Ã6'#"s*Á•œk‘rp§)h#”âU®9ÍÒêhY  s² ·ÿG /ƒïfSehºËUL>š9Ø+—`åÄ©&)â°s—c„	•¦)%cI”ŠqøššV4Œ¬:DÜ™dªñe0`2˜—>ÍSÈ`7àU¯²ì°ÅÈ|gv„uJøD¡1®«c¨‰Bò]Ž1ƒ”Ê&§ `ƒtã‰&$Rð%6zÝáÑ™ñÁÀÜ1i’€T†O©™M’¢ÅØUÇî;V·^€‰I¯"õ_9^¹Ø H'`µN}—cŠéÀ¹‚•IÑ@ y†u”‡þ˜NwìoÅ´ ,1Ž£L$D‘ÁJËU‚}æ8é¶ˆ®W ÞÓ°VA	ÐA¶&®a‰Ï6Öé¬‚ Ç:(fß-dF†/èÌqŽ ûR‡š\XŠö
Üá5ï.ƒÝêÁ€pð¬`étØ¢SðaH
ÖOÈÖpGÀï	YèL-aºô…×ž8o>IØŠv§dÌ£k…ÁË¸@JvÙ"zà`©¦‚XX
 µ £ðrd%‚Wî	 ŽÆ,qàäe¹5ÉÁÌRÐð!#	6Ý¡ ÁCe†Q:.ª‹Ap€9ÝðŠ"€ÍÒáZ•Z:•ÅÈ´C80Óà  ¬ìÚ¥§#M\ J¦2ƒ£@’ž›a'”ƒ…ƒ'
âUé¨¨fppª(|Nn|Ô  ’hˆu.Èm‡ô<y5…=ˆËðÝtjæ2vŒˆ’Iv%S	\'|Áèd¦QrI]6 +Ø¯„ëÙá»kQ3¡¹`”§V\Šä›#¡”|Gø†œ@‡@÷tÙ¢dc (jfUÄ@,bb ”;¢“W©CÛ¡9>à›|äÌ.G˜P“Bˆ4(Å0Îl‡:GX”`ö“—]€Ž€ÁÛ6ƒ—>3ø{¦Ëˆ®Í½xöÂ0Wk¨Ž<sPK8Ð ƒ:l1òeBF\áAÇ H, ém¤ªC†žø»7Ý»i1‚‘ˆ”ó`U’qXÎ‘@A% ¾É€%½pâðT0BêžM %¹e,z‚®g‚h®$×]Îj¶°>ÐC†µšhÆDfD*cÁû ÏÕ€o©;œU«÷IX•’+eqÐ¥šb|%:P lU‡ñ«‚£°sÖ	UÄ%CmLN¦‘IÀ%é²Emiäl2Í^Ð¬Ñ`Ú`%	x5s˜ä(;ô­¬€èªqëÀÜ“LÁ
ƒâå H°Z+kÓLƒWJ l Ä'£II“†“kX?jr0÷<dpÊ%É6pIVJ%ÁÀµ
`&¡2ˆQ U"(ñR€k£…`°0k¼	®²eß¡^Er8ð¦`hÂ—¬U°1¬Øæ”Àï5XìîZt„q@’á€±ô€V°~„–x4ÈÁm& ›;üŽNŒø“¤ñ}€ÊàÇàÀzávË,ÁQO]ÚGð¬ŒT°ç °Gg`érÐá1 à<j¸,Z‡8¢ÀCñ€¾ŽÉ4Å$t’‰L„I5®U¯”ŽhwØ
 F°v
WÖ Š„Òe‹Z¦ìc‚‰ÌGJ­ÊPF¼PDÞ^‡-:’¨1N@ÿŠa  tPÀê†AhÖ¡^õNb
‚ ÉÂŒúÛØax†
•Ç ™±Cûè½â?¦'€iœñt*Í‰@F–ÄQÓå= Rð¬B GÙÇ 5:Øû¨k¢U Ç•‡)ïðÄÓGŒDÈ ˆÑ;öšzø¤ú¡%ž÷€Ï%:ôXAu;$…ŽƒRÜ)¸ O’Ýe:<añÑ¬R>)*áCrL¹à€!Á%ð\äzVwšeÀPY@Ýð°€6Àx!È@æ"ãX,Á.-r QË$£€Oˆ¸ì1Ç3l‡Tù˜\";Ä«àJÌ3‚	5BX¨;gA#øu`Q@ïG¤õ*,PÎXw`1KÄAÁA'$1ÐæÎw9F0"#˜t*àmR0G*v	€-ÍÈ]†`-FØI9°\BÁ™Ë R-¿ÚIÏ.[Œ)clþ`sªB´ZRØ'°U½_lW‡-rŸ¤LÁœÁt,Ì/'ð=³Æ­Jv¨s¢pQ`Æ&¨p	>qÖðÿfP<ãf‰eÚá~Œ§Dç˜K`Êií“3.)Ç¢´°;CÈ¡Ë1‚UŸÚQV	ìÂÈ9ËD+)ÝåwtÇaÔ[“›ø&lŸAÀ²kÉ¸Ì\»í# ©`™ÉÎƒ²S†‚uã×Ì3f`÷GLÄêpV"r®¬D
%`f¥y¤@ ŠF|æ‡ÚQGU BÊ`"€Ø*È×¯M²T¡J1‚?@ºÌB	¦ÅE@R)€Eó•‰rºÁËÀW]æv&pa?™ì@´[˜á	(6	É”v&xïr—Ñ•L¨2|Õ\ÂÞp4SXº >fIŸ0­„‘‘,L|u[ÂG«„Tª9ß =Äd‚Õ«(Ó¼ËYÍCaŽ*›À}s
ñ«
¼¹ÌpÔ`‡èÐZepÄ•³	À˜e<xZ y(Àsk=øÊ°;¢wØ"8:€Á¯œÂúd)IDTàw Ñ7h?K,Ö[Ä'½¸±˜¤£MÔ*iªè»(U$Á	q2tùMÙ‚¡m@Ãá5 ;"‚aF€¦#`P’ïYå Ú32J´htœ+ÄÚjXÆ˜[*CŠlÄ'éJNŠßŽ†?ß]ûþ'$yõó>r‘RXQNHMFS¼ÄßÞ“¨<Ä¢r\îyÊqÁ¿†éå z9N³Òš½gÓ8.¹må¸Ä¯nÉÊq™ß^W†¢xE¶Nâ8uËqñ×/_U”Þåw9Qz4|?þ<š–ppïçC9)³AƒRRöžýäté{²†’²÷\'¥_ªß`69Y°%4©™Ž('%rig6)R

ß3£œ,|S¬.÷ó œ”ÙOrRl¸RAe¥·8R
JWueÍˆRP°xçà?9)´K{R&°ÃvrRh‡äädùš5_5õk&“’‚oköê6áÉéâ¥u›Þäxqä¾¨Æ-OÇ`±[ó±wFžžÀï³‘óÝÝæn.¬ºXÂ1|/„Äúe2[<m¥å¾ùãû¿þï«7O†42“F¨¨úuÑo~{õã¯¯_¿|Ká¿§YñÆ*~ìd·ü©·WîÙåJËÝ±Ð•T=s¼Ì8-pçcI~,i	Š<ç².…¬Þ¯¾ýå-=ÙÍ'~®f¯PÍ:÷„Mçñ“befe>íŸûrU›gƒ:©¸à&µÔ9B'¿Â1s.ƒU¹Ø&uÕYRÈYužàÑnsK=d€:õ°þÓp‡Íá¶çG¶kÜïžkä“ð¯Kš#7Ú¹¬Ä
ï¸
BÇäƒwÉjI¤N:SLýr”ÌúÆÅ²Ñä_ŽmD°bnq#Œ´;óJ¥Ôµ8&ôQròÝùãl#ŸŸ^¼Žoä#§ÔjSI0^Íþ!fRM"Õ&Zn,>y`¢Çý•^þa±K¶Ås–Ô‹ˆÌ˜û¯%^MÜçˆwÈ¥Tx/ Ã¡bšˆÔàÖÐ
¨ŠéªÁI¢Sžmºä©ˆ$im%…ÿXê³L9çM°õ¤
Úk"i§wÿ‰‡0h˜@»Úr"2žDG±%£¢”‰óá)£DD­4™©4zPC†*¼ÑÿT$²+«S¶Î#§QåœL
‘Køt$
ê?XkY‚¾pÒá™5$PP§‰©#ÂðD8¬'fvCÃdã­±îZd,qªd–ÁP‰qeD2¡áïon¿ž¼3î¸‡Mn’4šç`9ìA§mM†×*&–r‡gRÐ¢‹o„%¡,¦úÑŒÇŒ.2
)™[ßa‹3Š!{"B Þ`ÇD¥‰ xYÝKhè”ßÀq¼ &iC…%)%í¬ÇË$Qø»ôÞûc°ñdZ‡,d&œj™"&Ãî·°q¤WJtzG•yÜâH&ŽxFáãikc4Þ2<ÞÄ<|»ä7Àu×Íå;ƒ‰éð?LjŽš¤"Â«Õ]æ‰±@¡çÁ¦`ÍHÐ0:šÏìÚåîÈ™‚8d¥2˜ûKÁBi#ã6xJ/t™'Æ©uï¦x¦Ó%X¯Ôy…Ù4ŒºÃìtÎuŽÇÀJQ”Ü± ²ÒS§`ÇHBAuÉáÐ¤žà•ûd v#xb¢É™iL4]ÞÄW\“A»dTpÑÀºq©¹Jn@Éyøy§GÈl`SHoÆ°¬3*eu‘ˆ
su—l<\Û_¨­*²7ÉtBk¬ðq;Ì àžZÐâ€ãKf1& 9j„¦–ÃÄ›.×jôT‰”l&
š¢Aø(%eÖk@¹Ë›M<Ì!æÆKX¢H7  cxdW±‘ JáÍ¿[$#AÇ	ä„=’…•Èúc¤@Án%åMìò^<µJÆ6ùvŸ”°#x;@³@ó˜§Âwh;ð†j”HSƒ·§eëŒÀL5ð8tfU¹.‘ºÙŒ0à‹«DÓAkiEbSã«Ôån O`ˆE’4'—°ï3Þ…ÏFp	ŽÓ€;ºä9^1jãx'†Ãgc P9æ4æ1ÃÉÅH¬í0ûN¼Ó*/oj$ta õ„"›Q‰À\‡˜\ ¢A¢[ƒ÷ß¨ˆxï&:KµW^7LÙrÛå­XØÁqpŒ'Ybâ#¼7ÂñÂˆËIÐy]Þú‘\
*ðº”’L–„ˆD’¡soŽ1øY—-zn °Â"E7*¥¨-8$DÖðý<¦k×åM|¡BFÎ’±TÁP½#f5P-š+9©.ù”K g$4ÀZ-76	¥ Ñó¬;DRÚ‡í›@	N”¢”çàûrË‰4èdÙ¡í@» ¿Á.´>H  6 Ù8™dûˆ‰ë‚uÚb6€œŠRFë‚Àét€§à+j!DB‚\ë»Üð±8èñl,ªi4À0›`%ƒMQdB»£Ï)rª ~„-	Þ%É@°Ù(–e··Ôe §†Ù^Gä>$^F2!"`*¤3>ø÷£¢°R˜%1ŠE;oM];C9Ê!uÉÇ…—E5 ¼—A«Ä!É8çp%1«8O<ã#ïÝµ.†E3DªÑ'™üTüHJ¤âè’ýC©œl&Ì†A2g@SüØŒÌ$ÀV0¡Kö¼ÔaSó™# ; ¤á“B¥ à< Ér—+ÇXÔ×Ú02¸å™K‘I:{XÅM„03Ö¥}Õ¦èSN¢aôM€v ›ƒm¤.¡.÷£rD’“jNYÂW¯ÕK$à—üF.Ybð±»lÑYËc,Ár	H¥‹ÕPyÔ,…#‘ç.ã9
©i2èÇm  GÃ«©,€—Ç9Æ<©Î²KV¥†pKÀÿ’°ŒÙ›(lÍŒÜÊ<è #tÙbÐÄ±dÁ)Î„8Ãužy?’‹GŒêw¸øYy ·ì…Í™‘ç —'Ð{¶È´Vã#ÁÇ¨ Iá5gÁåæÆC¢©ÃÝ¡ŽÎ'¼C‘ß>(OŽd‹ ZÆ×¹;lQ!Ó'Ì'Þ™Hàà-*úÎkÐ7¹¸ðÑ‹±œvH‰ñx
“#ŽÚ‰†q0PX·1 ÿ‡Q]¶èäøkÔ²Ä‰w©!©Õ-Éð=3lWÑ¡ÐxF¤ÀêPá _­ˆ€s	øÎHbÁwŠ‰™š">iNxë<õÈ¹ÓìÌ¬C ³©)‡¡D@œrx
ZˆÎðiðíÀ ]®U¼«DAm;[=à½bPp|pÈ1ZÆ.NÀéPð#xqàîpðV¥;œŒò1F ã)ís‡šÜÊ¨Àv=—”b¬A#‘ØDdÞ%«R€/#lìc Â3j4ë èØ!+xÎžtygÜôg2(¶@”É`Gƒ‰¿ö(†‰d¸®«7Hùˆ#D©ƒN‰P0'Y&HC|ìò„ÅæÀ b 	¸Çš"_®Å©%Ð”Às	a»dæ·xãÞéD4†’9€Æ`µ²è ^Öå}jm€A ©©€
.*~CXŸž!kà#ˆ.Y²² ‡ñÁâÀü&–½FJw	ŠœGø¨Þ°)]ŽÑâ1Sþ)$‚gRÄŒ‡ æààÖuycÔ9c(²§F‚÷ýa°æ1+ N£²±ìò>µs›¤àòk€< 
 -‡{BGKu™À}—¼1„Ú@‘/&ÃHyý#J^Ï™£0Ï	”  ¢GOÐ‘‰0”…Fˆ¦IñL`é*! fÕ¡}DJ€7h"	UàžzK‘ãÌ%¼L­8!Á‡Ô¡Wî•Gàím‚Ï)Á…˜ì„®?( |È-ÅºŒvzm‘í3ÀV@žjš2± xX–Å€,ÝíÐ"C‹1:N¬˜¶ùqu¤6ìK´cÌÈ¤»m³ÀÞ&ö†8
%%a–^†]Ùe‹ÎXÆÁSV€uI8ð}ªèÝ¶ë2?Ç;Ë1¥C|°qxÀžÀ09³¨Þ÷¼K60ï	Ôhi¨7£eDlXLHÆÁa–&±u×b Ú{b‰¤àö.#üæ#”[)²†Í¯ˆvžx@‘‚!tVeŸjq¯P†‰IÆÞO§Gx`Ë{XŸÆ
g¤Fæq¥£Ì%z—wËÆŸÉ°x`¤„xˆ+…Ë˜.pRRé\‡ß12P Œ­UbàðÁg 	ˆ‚ÅjyÙ¡íˆ` `•€¢ÃÓ#å~†ÖQáK=ð“€]‡-â“,>R›f§=à9í•*a°*S°C’mì:ÁbI„mRJO”ö.Šä@©SC8Øª®ÃaÉP×áa\º€;Iy|tIËã¤Kß*9e8Áq•âp®,K&{@Ì&Ïiî“'ç=#Ê1|£‹Ã¿¸“œÕÀE.%Øè:Œ<€m`¯ÐÚÃì2’} 4|à"xxàoåÐ¡Î¤ˆôÆà6&|ì€z@ã)ñx†5›½“Šï:\«Yàâ$&
Ú0®b
3ÀöÃ0u2IÆºäÏå|T“*9£™‚#iÀ‹µ˜]eCTZÍúí°’øÜ‚ãL…ƒÆ˜\à’ƒ#‹'=äh–E	ßÈ7o×Ÿ )­â I©ø*’RñÃœ$Å5"')¬àKIaÇèJ
«ØÇ[R(ú«ÛG`R(¼ÃdR(µÒ¤\ô8·Ia=»$'…b»l'¥b;´'…bûùOÊ…7Øª„îQ*Äî	ª„î9RjÄîÈR*„þ^;÷èSjEëÊ¡J¹Ä&³JÔ=ÅJ¹ÔM½…ØOºR.¼Ÿ}¥\~‹†¥\l‹¥Fì¼^®Zj$êõ×Î–ré]ò–JÉ—ré:—rÁ³öàyŸp}%¿JâíYúe›û¥B®Z¹l³ÁÊ¦…)©àóÃ(ñÌó	øaJ¡Ò^¢˜rÑ;˜sd¶¹/Š*XS½Ô•¾£W¸”e‚D.Õkª˜"¹–þ¥°‘-˜R²¦z©,¾ÁS&¸É«r†Hõ':HäR¦2ëŒÇaKµÀ«|“v¤^bƒñå²—ôQÒæQÒ¶^z“æ1ÂH
ó(ù’¾?‚"†>Ø_,SÌ»“àÀ†¥Å.KÌ@u˜#æî†=Ì¦0+,@IG‘LP¡˜J™G”#9‹,a.:?ÏÌPÏà‡6å3ÒIKÆM°”D'ÃŽ˜o{£	Àùqo –F¤å>™äžëýðÝ/G¨bp>zß·ÒÌ¡|Ëó…Ñû_Ì{0Í½ÆYŒ¯¡HtçÝ<]ö~n„7éb¾Ð‚ ø_Ðèeo»òÙr<Ç)üØËn¾¸ìýŠ¦[‡=~5ôŽ˜ÕŠ‰‹IoX?õho4q8³&³8Çé¥ìÍá¯ãØvÎõnÜüæ®c=€›=ÐÛë2m™ïþÜ[ÌRÚèÿ/ÐÂ:ÕöàN¼áŸ¬º;¹á°©1¸qÏ§ÞrŠ½3?~ƒXÎ@p6‚jÚ*æÁÛxl3ƒæ¼·xRž½u~~	ÚÕær¿:ÀÆ£bÄ¾ÁÆ#µ¡Œ­ÏwØx$²“-2àVl’ñ@µ°›Ö;ã0Ï}÷úíÆê·[ê7c	ÏËŸ^½|Ïþüx*žÒû4œLÏàà¡çqðúcIx˜!¤’ƒöüf‡P¹;òÜ,{”ä®<Yë1ÖÎ‚Úá•U{RÛG­¦ÿ+ ì+a_mÛß¦ÄY	Ñè?N•yB2<Ôªÿ_ã(ã²X7ºžLÁŸ*°X¤ùâx™“%ü©f|A3þd‰|ª™\ÐL>YâæT37ÍÜœ,±8ÕÌ¢ ™Ó%–ÀY8^¤ ¡åv‰n±ï)†ÄNÐ¯çd–ð’¨÷&	£©ç"'¦52*(|H…ë¹£$X™bJ™&|kQ¢F¿Ïè÷‰Ð¯ÜE¿|}cý
«­1ÛèWH­©ÙD¿B½~Àéô[NCùàß39(ŸÿšÇãß²cŠO„O|ý@¸0XÞÆçÅn?E°xVu(òâÂC·%q¼gûr¿X;‚•ô·ùðñÿuáêK	>òJ—^²\Ó[4Kü’üìúŸƒÓJ©õ#í%¸×¥ÑVa.½Î)Jæ¼æR	EÆò …eNI€Â^G”Ã‹aš‰,5µpï¾~Ýû~2§ H±ÁßÂÌ 
{ÓÌÁaØ{BðÅ=¸é½¸®§u„^\4pù?Ý{×{Â êëIx0ïÇÛ€œÙo ¡ÿÔkçða;P±[\,ç€°ï«AäøºM½˜7üéÅº™&8f°7½_ÓâÃdöîNèâ^èWº¼¸øõ·7?þ?½’¡ÿû]÷ÿ}ÝÿÞÝABïÃ`qÓrU¬¹—ïÓ]Ñ•úìô¶7XôšN^Žˆ?¢_ ­"ÞnG€É°7sˆŽq˜ãÆIXÕƒÔì¯_¿Ü)ý¢7Ÿ`)h F¶n{Ž¨ëÉúÛO·ƒùÓ¢gäp“ë…»ž¾`ñ«ƒwƒ«ö{ÁÇ8Dèn,cB›MBwËÖü~-Ó[ÚP­ô‚Æûü§£Ç«Úoölÿèn½l÷ÿ'…Ô¿çÓyâ) í°sJô	?L×ÌÄ£IÞ‰à´_ßuð(³Bæ}¸uê·IlóþFz'ý´Ï±_¯Öu¿É™½áO?îê0ÆõÝGÝœ©=õ¨çX6o3¶†à[¥ñ5øûj£ëÛå—äòØÕ¸ù0‹¿up®‹½ÂøÂ]_^¾ÙÃ
©.åvc>òaK‹H3;W¥ý³²‰¹ÄT9° ¼1„!!ŒfÊû¬©°\3†lF6d»$Ûƒ^"«ºD¶içù xÝ4ŽC·‡pÙïAC_ƒ‡9\8X³ÖÚM'qäÆ‡ÂjÎÚXš¯j›½ªMàFÅØnZ\|œ,{~†q0îÁ_ `¸÷°s©×Ü“i‚hŠ#(€=á³$s°i×0à¥oBã]h8V+â1Ã·«É–1³Ä©÷3ø5†6B†Z»²tÍuÄ˜5}ê7ËmŸ¿_h¦ì[€ì’|RSö˜˜Pù<ÖˆÙKd¥6¬éÝÑW4êtÅ£Â3è/6=–ÚîòO~½1ã=ZÛšÃ3(ÿ$	HôT®mC´Ñâ­L$¦ƒ5¯‹Xn³¡Q&ª(MŠi+]ÔžS¦”ä,ÉSä–&ÐÒÏÚö‰µ-‘\Ðm+Aßî×¶Š
¾£m•ÞÖ¶JÖh[³OÓÜ/´¯AÛž™R>Ö¶\Ê'Ñ¶ºâŸSÛÎþ¾L{ß¼+Ëf—ì’®.&ëÎs‘ã“iÐ•Î$Â$‡¹&xT«¹—:+-á†ed	6µ4ëT¤”,âP\ë¯Ëq¿Ñ8¬&lŸìzæFóÞ‡›hÚÐ‰i#S8ësÛ#g½¿ýõ¿~ÿ±÷Í›4s}<§lßÈë·«¹÷×´úžtBA¨ru;êO­^ž­
\¬~Ük×êWÔÊ³É°‡G©=ïÐÅ¿Mü¼©*âÕ_.³ÐÜTî'Ð±Ë‹U vôŠb¾Nójßw¯{ë¯…Éã”5Æ O§“†É7ÏY_\4wa†0²qH/šâ9¹åÒ]4nŠÙÕú=ÿ±÷ûëï_ô~ýþõ·/z¿Á/pB¿|}Ùû!õ™äÞ`k®?¾è½†:îEïÕ¯¿¾|ÑûõÝ¾ìpò¢‡3úÓlÛ†az>^LšÀ×”ÎOŠ°|ÿãÕ÷`ˆ®Ýxðö"ßåÅÅ››Á]@8\ÂÄ´É7n]¼{¹°7Nx¾Ž'ó¸ fËñkn§ðb½>ž<6æ¢›bl°ý’ÐƒÆÐAóq	þéÕä~A]µëòÀ±³"B0ÊqC­Í^ó#¢9àd ›ý–ÝãœÒ­9g„ž>t¾Óývó÷Ûm_œq¹^£ø±ÛùO/éWcôšáoüÑÎøNÆÎØ•£Ï8RÎÇ«<õ˜õÆè®õJKr7T~¾•Þ½ËUt«ô
UõU«ãÃŒ–?ñtvQ.è–eÁX¾š$ÐÓ/_¥®Ï×KsK‹Êþd/^o^:ïÞ«x¾»ü1i»YÁš;™ŠÛ,ÞÏ“ª‹?˜¸iQ¥©÷„­ÌØÚaÛnµÐ)Â/ÍÙ|Æ× ½“DXo‚H.€{M•Êž!¼	šs—«•w!ÅÈ²±ÆË¨(ÓÔ¤gŒÿŒñÿµ1¾~€ñåþÔRÌ#ÝÅøx¸ 61>U†žŽnÂøåy¥_
Ê?ó áIP¾”÷û/å—å¨~¸"Cõ“ÀýJþ…/ŒtáÎ!x’œØ;áœÌÖ/Ÿ9¡.•öcPÚÉzÆ…ÏÆ™Ðó ;ƒ¢–y`ÓŸè<ú	=Œ
Úƒ¯ÀÑX¤Q­‹±N!‚ªÀ\ŸÅTyÉ'ã¨ŠF™ˆFÊù`-q4{Ÿ=èp$’S&HU,dž­3<|_ø`6Ì/`P \ÝÇÔæ¸þôëo¿üxì.Œú¼¹FÖíÊ#dmêèØ»ÅdÚÜÿZapp.V‚(‚|s˜·š—Ã!8"³”ÆM–ç‹Þ<¥w¨z?.GiíWÌ¡4¸>	¯ZÍ/Þ¶X,>6Þ~ÓÞ»ôÑOÜ,ÂZy?¸n‰ [¯û¼ò üý% T×7Ðøtˆ¬´½yÃ‹ú´§¾˜%zy=žŒR“4úít:¿úo°ç“ùÑkW|3ÉFQaˆr/6fÜš]ÖC¨æb|ÇÇœÎ…ùè·K¶O+qq›Úžë§Ûšéœ5¸øÁÈ*¨°÷š¨»ét¸â…ûæ˜ÂÝ,#\-°fÑ_®öà	}5¤þbæaQY¡uqKpµ'.öçK¿,†©B¼ÙyšMúq0ýöÒfC|WŠg“Ñ`Q^~”ÀiÛê©· &*zÚ¨¸>|®)20×Œ”ÖdZ^f!+Æ4›,Ö\·¥°É½O}T."ZFÁŠ¯³º™TŒfþnÐ:)…åÛ]:õa·-–_¥¬ìïÝlàÀhô1âTÞÎ{Ðä¥ã%LXÊ“£ý®Ðî.‡ý‹·’/•‡­øe¿ÙPW£Û|ŽØäúú±™#6GµØA±Ñà¬9A¹?Ÿ9ŸïÇñ²Q©—£iºÃ~n%£yßÍÏú6+éÓ³ÛžA+»a£7»¨£ÿÞÏÎ©ç¶·íÄY]ÙªbzôŒèpàl„³%ç7}´õ“ó* ˆ5›Ìß9vdž¼™|èøõ8µnûgîõÛ>xxábÚ~»
†ƒñ»GÖÔñó*™˜ÁR8SøL]r;Ÿæ*]²ŒƒÉ¿ž–k¼;‰£§·E¾ýå¯Õýÿù®NÆUìœV =þ}(àÝ|PÙF|_W>UwªJc45ú­ÄA¥Äôh®Á>Ê%5šVÎSJ^	¤rmt'Qc‡WB•­Ô(ÉV`ºœ×ILÑ=Ã‡sj„æa:¬lgÃz7?¨“þà*7×‡äËAa#qÛ¯Ö* 2Èåhj-3Mµ"õÿ¶=¯ž€Å‰jý‚"¾Z¤®¬å&•ëDjµŠTê3©Ôh(R«¢Z™j%…bõ-Õù›R·gH}pgIêWÐrž0Z+‡zøÏÕÚû¶?Ÿ¥RPly†Ð™Úx[¶ßÆ»Ï¨¢Z«·Rƒqœ|€¥ªö¹Ö€Ïž©9¯îåÜW+û3r½ë²›¦T½ýæ‹êiX,ª·ëûÉÌªç¡•:g»ž±€Aä…r[<}ƒ‘»N›pk:(þZ­,ì²A(†£Á<\-‡‹™{?)nh‘nW×“Éõ0µqŒþtÒÐÌTU  çU4BèâVœ!QZ‘8x_<—+‰â•Ø–ÏÃb?o-PÙà¢âE´–(öÛîÞ÷Sñ†_•#©{‰~{œ[)8¯
ÒµBz¨¸‹cÕ‰½¼¯ì*•ú•ÙDŽëè½àJ‡1(]?Ä¿±• ‡n<¨—y_¹ýÐ	,†÷"g´R÷º—©TèÖ‹Tzwr«ÞðuîÖ¦L¥ž¯õœ¶¥*‘÷–på&^9Pg	Õi”:«ƒµº	¥ÎÐ-·ýñ¼zT“ëQÆ\‹-nÒdV½è[©³ÚkNÁçP»ÅŸû¶éTðÛ«‰Å÷Å—]Ñùûp¶l•è<Ü¤Qê¯~p5#[¼îFÅøeŸìÍÙÂãTÏÈNÇkcGv¶è=Â‘Ÿ/¼<áÝ4Ûf_*þ©TÍÃµKð?¿ÖþßàÏã8é¸ÖÑÇÅÍâ}Ç•N—~8À§:;­\Õð.Í:®u9O;®òãd¹Xú½—XN×ú%2_ÏÃu¼ðþþÊ‘òó´À›`óþ*í°Ý•®L¶1aiF«
¯{×0&>Ø{¹%ÕÑkÝ{ª¾žLâyZ^?öó,¥ñÅ;^2 ~Ií¥8VÑû<ïçå¼¤ÑÁ|ÒGFêù‘2ÃÿƒÒšËnñ®O/IMŠ]pƒÙfÚÿ-…EÍ‡F°J`¸\,Ò¬ºƒ+1øÊ}~¦èÓ2¹n¯a•
\ÇwÐ½Š@àítpë—¹Ïêúv=˜Ô‹Ü?N¾žŠâcðÿêö0GòN5óBu©l»«›lt&¹¬û³át8¯–š/ÚÊErSßðž!Ùª¸3îú©ÖS¨•[Tn‚Oóp†_W¥j•c­drÕß·‘9CM5rx VÆådÌŒÏç¸?¹ªÃ©›Í›„öKjªòÍwD¡ý7¿½ùñ—·¯^¾}õí__ÿø×·¿üüëÏåoop‡à³4<Ôm­¥Q{ð¾<tú_^²·xKŽösŸ´*ä~áÂëšû…¿÷~á’®WëxIŽ”|ú‡dðG§oFî÷7nGÞ{!äÊ	9í*NþÑâÙUòKKê+í¿O×nÞiÕÛ®ížÙ¥¥—åîºµžÑ]öÑn9³®m×Ý[!c—t·Æ=lïœX|C ÖåáÕ»×§‹{½§õÙ®ómhsQ÷ð#:ÍX[|±¸YŽü¸¹ýö8šQ¬rì[-«yˆº¸$ìeäÌ­T‘z¥Q,Åd³QHMRð"Za#Òt„À|Ìœ(*‰Í†Dwà’psGµ¹Žû-ÎÞ«»»p½…óÍµß_ïF}ðæð&ÃÍ:ÐÑsw’ü<Ÿ3^Zhpî¯Þõ&ù¢Á¼íÝà¦[ø½æÈë¼S4Üprýe^èå¥z%œmsÝh¡Ù&Õa…Wy×óùNo7wz¹eö¦›Æ¦Ü­ÓþÔ]—^*ÜþŽ‡/×Õ>.Žý(žš³|ü3ýôÏà×º¥wöN3ÖLj}«bû4§ÁñF–‡Øø\=ö[7î<:ðf`køÃêL´Ëì”ôÑËEàJ:I½çšJIŒÒù¬³Y33ZIË©ƒŠ‚!92Ñ-ÇÅ«©FïU3ºÓT€ßÞ½ä¼ÀÇÔf«W‘ñº÷CGKº±D^>°²£å|Zz»ê'~.á\;+¶ß+6”ß±Âígø jËÐ*¡Œ&–V)Å)2µwë«µ8´Ïª¸£?ÇÓj5­†üh#k4;‡4z3VÓÆƒ6`SâÙ;ç©uh:íÁ®¿Í1ò¹CJ­¤Þ.ëÃõ‰gŸxŒÕnüæð¦½aØkOjÊK~óÓ÷ýßWoàªŠ³–Šc’:äT'Ž—üûòý O.-þÿR€@aˆîÌðåÓDæŽ‘"wŽ:J)Šƒ;¢L*ÍwàóÉ£IsNHÔ‘Ó,D²Æ™¬häNy¬ñ*0å•`H1?ãŽ}¸C>ÀDìÅÔšÆßÄ\i²éá+0‡ã1Âå>þ3òØDº’±ë(„8ç”©‚|…g_Ÿ™œ Ýýº‘I1áîð8Cd«<YzÈ§ÿœqðü Ö|yç´Â;OliºÎ²°Kz÷
t%Öá‘jÂy4 gl‚1I4!>dGœ1‰;C²d“"LÆU–‚åõ*rëü°J$§%ŒlØC>6ä]ëá?0±Å0	GÖ<"yä0¤™ö=…éäCšååpÍ˜z×@Ì S…¡›Ï{í:¿kêÅÅÂ]_ìÁåÅÅÏdO# Â·
ðuL|Î{·ÂöÐ0žºÀZ´Ç;“Þb27¾pÃØa@*l>Ý°yTyÌ~q?'ßø	ž@™S¼ºq³÷iŽO?¸ùÅŠÀ±Ý"½ÞŸ^´UyƒáNhö®sÐÊ»ôñÃdê€Çq^ —TÓÅö…u§Û1ßŸ0Å8À9Çù\³Ðâ‰B¶õsÍTÌWï.¬ß±H·‹¦	ü;N+<-zKf[ƒkëX%-^\ü²û`Ó-¬jÀpië‘‰æ•ŽöÓ£iÇ"«ýóIqì«Ù¤ðÕ›õÝÿè¨d–²-0‹?"€g÷ƒY¢ebÍ
A9#›a4?bêdm5K¨Ÿ}.{ÞSk{úxèJj_ZkaÇ7«Þ…KóAì¸`«v
â÷cä|.ŒO¬¥"ÌòâÍ.¬lbÐòïEý:rwáœÙ\UWm;Xí#_wÅ<˜ÓXvUò3Ä´Ú÷mŸ$6ËõâR§‹¨]†’‚›OÆýf*hQw‹ÞÄÛ§bÙ;ÅO½Z7tsUè›æoé[ò¶æ½ã%AuNû¬ë'_«ûû@/¨t¹Ä‚
ïŠ}óûï?ÿPpPð„qÐaÁsÅ¾CË¬ÔÀºdÝ¡o™"ÝbgG¨9öV¹¤úî”úèƒ ‡ÓöîoY{üQÑ•	dŸòä¶8³ò¾JJ/yy÷V‰Þí+ŒûøU¨u…wi§;[;—àé¤8<ú”G3¥%Ý„å˜Ó,CÚ›NZ]ßâf	0~æ³Xö™Ø]Né±'Gî¬íÉŒÈmGáÎè—$A¦E¸º×WHÐßÀÃ;<=_Lfiý,À±ôÈµgðˆtÈýÞéaÇ#üÿÈ#ì<µVf+¨±‚EeMÖÒ*—¢Ò4j"…#FyJ¨cBZÍÀªØ²yöÿŸýÿgÿåÿkµëÿk}àõuÂ´Û§Y‚qIôæûë‚)ÎO?Î¸Ç-®MUýZN±ž$pwâøEF JÏ„*Åïb•rÛÁJá(AQ~ïÓ…N}]á‚§<OÚ	 <í1ÔVH¡\æ>¶P.³2J<Œ6|IwiÇUï÷ì1<Õ)áVÈ¡Tf#öP(r]¨-øÒ/‡5¯U~!Ñ
Z£þµxŽZükG-J¯n~IQ‹UÿŸºPyƒSðÄ¥ÓVÅDˆ ’&ï³!Æš C²Žeî³—&QRÖ”F„IÌÂçþPšæ*Þ°r:›4Êµ·
~.üføØåÍO¯Øº'ŠÀß;ÙÃ7ø&Ëù‰´/Ð¶}ý=ê6=TñôP+©ÞëQkK%Ù>Pçø#¶uÔJ.Ù:¿ô”CÝNàÊÙ¤gœ«7sÿÙòDuÆ¾gìu´%¤£½êT±wVpnµúÎ8™}¿.ëGÓâ²”ÄÇòÒïÅeÓté‹ã3;Å…¯¹¼ìú†g±ÄÍb4,.<M¤°ð|R\™“‹æ“œaãöo+º¾*˜¸ù`^\zË?Òú–@¹À¸|r¦å}ž¹òM†!åòÂƒ\>í£ÅÅo+vûmÁd¬uÙJ¦àýÃ\^R}Àð÷“MÜœìü¶fíJ±8Ž;§ö/&¨ö——ß~ë„A©¸	wÏÇxju¥Ñ´¹Úp¢ÂtÛhîKz¢Âk(ø¾$¢µ—úŸ,;ézžûK'¥ÇØA‡{©N
ì0œ,¿Éöw¢p«_N}µÏœ|ND(Ì,\YáKubD÷å0VöŸ¯~üé­º<ú Á‘Ô5™ãä…w§0ô·×?ÿú—ßÞøQeS;ÒGßä;!Í)mOŽÇ×T5›ñÄ·Ú(øÍ«_¢êtöÛ_ŸõWFó”ê.O–ÛK¬xª7ó0lY°A#dÍA©·¡$·G—²°XsYíç¿üå­øÂ/ì<}<ëÐñÄ¡@È¹[I'q11’QPø_1™ñPvöoD†'>ÎîI=}Ä€…á ,NgËÚ¶v*.<Ï8³±Ý¸ó©ØðÚç8>,Ûn17r¾xÞ#ÜuÜùœ¤¹ÊÈ3ÉI2J¦)¸Dtö&d!c¤Ž9wÎ)|Î*®,åPÂj_kþyþ
"Ï»ÄVÈåÒJîp#¹Qj‹{Ð2EJ¯rí‰¾V“~ÖØó£²»ž$ö¬x%á'Ž=fl¡+…ÖÑèZ±&,])´ŠOWJ­Õ•Rmœ¢Vh#t])ºŠaWJ­‚ÙµRMT»Rhå0WJíÄ¹Ï”®—\G¾+ÅÚx­Ð},¼Vr|Æ”NÏW&¯ZÅËk¥Z§¯Rê.‚^)w{ŽÎºý?ì½Û’Û¸–(ø®¯`ôKÛS)w>3á²«k{·½Ë§\®®ž‰	€™Ü–Dµ(9ûaâüÆDÌüÜù’@J¢”	ê’™®Íî®¶M-,Ü×kuYÂ}ÆõÀ¦{¬ì[†OðÁìî‚YŸ¸Ý=´¢Ò	_:WFª™äƒ[¬ló¡a²#}pÉ ÒZÁ¢Dã§%\7í?áôÆÇÕøY™ÿ¿ûˆé-Ah”õÆÐ¹AÝiðt"³wíæÇµÚõœI`µ™6¯ÁˆÀàóšk {‹•3!¬á®OárY´N+ßTw7„JO•ß!¼r@„6X»ºÂ×]ßa¿ƒžŠË¿“Úã»l¶ãÄxz)ÜÆOþÄ¡Weçrs„>¨è½ß³·c1ù’êì„LÈ`$*’ŽŽ (Â'Æ4óXâ8%2Æ‚hbˆ€á„(AC©A”§PÓŽŽOVÚÎ>¡±²,na¢4Ÿ.¬p«äØTUŠJ'ÁÒ¸Á•?v|¬–¨ô|,+ì>rSÙtð›íá·U‘Eaœ‹"+«$åsmæ>ëòÜÌÜûôÅ™øYÔƒêºoX•$¼ˆ3£ÑK!à¶—"@÷gœc#¾å¤€cHj>
Ha­’ªµö¥}Å°<QßCÚäãÂá÷ÎöToä k¾äÕ@š“óî¿éÃ²þB|R#W°Î]ï.ÊÖµRŸ‹.Rj­ÁÏ¯_Æ¡['°XhõÃÇ¶xýÇ¯~t²d Î´¿mP©ÎÃ­U­zk/‰üñ‡]Ó{o;;5Þ#Êtk÷ôPûÀ¹_@ÚÜ#Ö…½“ÝyÌ·–N3–S£]Iã]Acš»?‚*Èú…$vTÂ..6˜èÔP,%À)8c©Jˆ«Odâh‘	LU¬4œ§
!y"•>Uñóoÿýüém)P¸9–#V >¿’Ó¨J¦Q¶óõu®œ"›ÌÆ>eÏlc´+Õ~¹pÍp{;*7iV2ø †ýâBNAíùœýÇñ¡çsÐ˜íˆÈ²©-ñÀŠ‚¬M<X¢ay†ëƒ0*ÏÑÍI3›)FÆæX1ÁÏúÞŒOOMƒï&'X•Å®˜ßšgM„§WíÙ2[©+ž«Õ·¸•’‚S„OðJÿ‹z1Ë…;BUõ†1Ïòñ—¬©.µ·Ø‰7øNžÉ$k•šÂ˜w*e]tUÛZŸºÎ‡¯¢°ÞûÓY‡÷¡<óHU*&’"®'1ãÆ ÔRZî@X,©!)Ó4Å
#¨R0¤D*ç[E´• Ô,­vXºw·n¸a-7f<‹îò¥Ó/Ólj|>W›6–-¸ŸæQib*éäÔ/¿HÅu.XÒç8~ãq„ñBc²óZÙöõˆ9LI«2º9x=¿9¿!HtÕK7;ð]1„VzYÚëHïj¨’JÏB‡%ÉXÈÙãQbLƒXK7Œ™P†MRÆ:!	W{áZYy>L%çš€CE³â‹'„S³pGw‘‹LE“|êo—xr=ó¨¤ˆ©taìÈñ}DŽFûtŸ‘6Ô’«%ÇK—×tÓ}žz{`Ùx½µ”ÍÞ¶Õg»^VÜGoyQe.Ó¨¥{jQ\áª‰_YÿÍý¥Ì é†â¶ÛÙÄ,n™F.w¨§ƒ~D‰e‰U=ùÀ^›é"Kï¢šXWñšÄø¬¤þ°Yrk\Œ^f¡£gv
wQa;×²Í¸SãÚŒåÜŽ#Ÿšâù“c7"”ÝPÀéN¶MŽH=5ua7ëCÒ3ž30ÊyÇÔ {÷âÑXdshˆv;ŽUmæö¨z‚¶äW›¯ŽðH*åÁ,q€*T>qBôaˆ¯rnQsy"_œ'¹‹:.7Ñub6ºyÎ‚‰I$€ÂÊ@–¤1Æ©=ç©ÕLbM•°œÐ$ AJ±¤Œ)—¾ÊrIE	!‡ž¹¹X¦öº¡¿9®³Z€ûÌÎ1¥6;…¹Õ+*¤¥ó%y°[ymFv_ÌV¯rª˜­¡ô¯WL©]GXÏ³cD Z½ÞÍ³Ì ÜÑ3ve–êEC1B¸Ý®U­äÐŸŠay‚óA½ýëÏßÉ#œ­]ØžìÉn/ÖÙœå‚_V+ò¶wöÙoŸ~ýñùð”øpÓ¶Ç÷MÛ’44%ÍV¸ª]Õ?D¿š1†¤k9Œùx>zŠÏ¤éÅïÙFhÈÅ)Œ;>¡@JFUJSÅ$Óð+%”"3–Ž¨T’Åµ‚HhÁf¬gMŒƒßc@ìg üüTÄ<ÞRy»Î°—q„Lô¬Ã³Üõýæ}êlÙÄCNÅèènä(§bqÖ_š¿´œ<5þà“?‚ÍÜæcûçÐ&§ €vYÆªuêš>7Žc¢–{@©‡ R¬%cÆ(dÿ„„#SŠ°’€kj¸3ßi# UnàAå6÷êýO>ÏY¬,¶„UGï·xµÔY½“wf!{³UîKÈTÜcUbfê²8$<êŒ½\no2uã"þì!:œ%ˆ¥I_³ñ=Û{ûñ—È*Â,;ÔÆ~Í&î(š‰3¨y#áu>Ï7“ÂÕì™Y*¶²ÿùÑV+zæl]År,Uî\“~~(§‚·)>“õV¸ò`6ØßÊèCáÂ¶£ÙÏNØ­v	ÂŽ¼×Â¬èÓÊMkwfXÿ!ì–š÷;Ë‰PMx{®'³Sû?=Ž§Tç¢E«ïQ‘?H½Z±†¨(ØO
Z|ä´r'p±û©å/Å½Bõ¤“ø—pá`XQƒ	Õ€!f ÐÀêMˆÉ”Ð»2e1ê˜ÅÜ‡©“#m´<˜„§ç_ÿ<ü‹ïò/¸rCìú8â`›ap]´iM-˜}!ôOŠƒ®£”¦áaXY‹6tYVvÉWÎ'q«K¨\ÿpÏÎ‡—_åÑá Ay\Ú8Éb©Ó„ðD1¬,Oâ’Ã)M @8S"Ü‹Û/Œ[•ÅÒH"$OS,ÅAË¶äÓ²¨sþ«Ÿ_·à‡Å
‹{íVÕÍ½zëäêq:œÑ|9upŒ;+*žÉ©ôÜõ7t+„@«ªÖÒµÙOLp´ŽÛ±ì	Ù6-Ç1æ¬þŠ`ÊÛC7‡ièOE•«,Üýÿa™Ø¿Foò‰Ý‚ÓÉùÇ2Zð§é×lžOOñ£.ø:ª\úäO¦ë ! ºöÚF4:Á÷ßÜ}D´;eYªb8É
•fßŒVï£0`cúŠ;˜8"Bh¢œ+3ÄÅÜŠÈFÂÔ`jŒ•‰	Å@2.5±°í4¡‡‚`?¨d\H/Zª<‘³¶G™Î°,Ô°¶"kª³~EQGå¨Í`uÙŠ¨XZ™ÖJ¡3ŸdS9¾|°«”œŒ¤-¿¼ø¿'×_}áöµ|9ê’¾5J“p'c$„bM¹üÊÛ$(¶»@Iý¹ElÐê—Þsîœ¤5,ÎãÑ¢O®^õÛ©Ý¼T*óâ6"$Ý8|!jY…“‰&¨£ãºÊ¹g`m¢Þž»¿·‡=¨Á¼W‚Ü¼o÷x_¸ÙŒôÆ†[½ŽÜ÷St–êÛñ>V¾Žhê(‡!‚ˆ…B4Õ\H€q*cJVÈ$”XÌn·¥”1 ´ýI3n 4Ìðø™üôúòº«Ø·œVa˜kµÝ¿sLÙéò7ÙõÍpf/‡[°©2‘ª
ym:LP~{6§º|ÿiê·èõVoŒ"·)é^·.ll0ö‡ê½ïÜDdQ¸Ñ={ÿáíó«èÃÏ¯>¾øef¦ÿòþ§÷ÕD2S&öýõÃëžíº›:ÏÔ zZÂ¿zø‡…÷³µª¦ñÑ»·ùüKqµ¦ï¿¾yÿ*zöÖ^—iö£Å|ýš¿þéj`OŸÃë¹¼‹~6.F6²#}åú¿òƒÎqNsm¶ç5ŠÞ¦Ñ4/ñWÝÙ}Xé »€Ù«è·×ÜNùU¼k9âb9›åsËŠ6a²KŠÔ.”e|UÅúÉ7.O³¥”vã&¹ÝÝg¿¾zÿÜðçŸÖß7–Þ]ßD¯?½yU.Ú/¯'›u|>¼FRëÌûj{ã6#°Ë=½rbùØÇ,»ƒã,-ƒ4waÊ>º´¹TC™u#§Y1)^F³¼È¾]¹@å¯W‘šÈ«èËÔL®ü ¿ÍlƒÑ¶)çÖn’#¿‹(ç“è_ÿ5²ãŸª›+?ÉŒ­ˆ¡åÅùsn¢¥%SØËˆ¹p¤N”_3bÿ	
ºŸÇŒì„‡AÓ˜íwV$m³ìØ=Mêœ¯ùÇo."û¿[³ËÙvv'}º›?îšÁ%8Rj\/Õ¬xÑ<<í¨]¾f/ø^wU˜cý ÊâŸ}ÀîX—OHÚÏí«©Ç]’I­ ;'KÛmˆCS1œžŽ‡Æ„\WÙÜ‚{ZÃÿüËûáÑ+;í‚S®mÚuêîAR-N—Ùeí6ðÕ?ÂCwö5ŒÙyðóE—EYAÝM·ÛõÐ94,ýìlŸ5³ˆÚ¦8ô¾aævåsõL÷$I[iïxK’]‹UÉòQ™ˆ÷³ãÓx~ ±ø	ƒ¤A+#CÈ»‹©Ö”%)Ñ*‰ÕIbÕ¤XHí^`!&8ET¦© ¹\d¤a„bu@wzå‹x¹þÚLýc4+Ã~üé]6]~‹
£–s—Òk–P\*@•éÚ4–D	ÂZ½¦ÞÁºv´º7q3£¼Ôgµ€5Dô×¿üÍËž—µ‡_[uc™Xe{òb3ºÕÉØ+çF °.ÛO@p¶?9Ám1°í÷qbÀZ…`7¦¡?vÃÆ×ñþ^œáp²¨loÚæW¨\eŸ1ðÌµÅ…K‡UøÎ„ÍchGLÍN’i|V~Æ!íÞlÆŽ–…—I$º0Å’È<"ÿ"kmegÇ™?hµP¤K’)â˜pX,tª1GQ@"Á)T–g‰”&!˜‚L§J@#--Lhœšž=ÿb‹Sê>],˜ 1Þžcoó/Ëÿ¶Ãs à­á¥òM†îÏÏ¿Úàô˜˜áËó¯ :z&lAü«5ëù×á_Å—_dRl¿»ïàÌ§VâV	ÀLj¬5$\¤h-,#"Žq§‡qAÇ–—ÅÔ)\’b–MyTÞûuœ7;ï?ù©¯ƒ>7.¥HK3qþÇóJoÐÆ7ä¢H•2…ÿîÒ¤d³åØå_öØ®,%È}bm¾ZbX¶^u3ÍÇùuvéÐ¢+ª²N7ò¢ÜêCµÄ¸®QÙOžnE‹m?¢ 1Xwñ#ê¿Z]üåú³T&Ýè\ò»u0ì™ûÉÉF0bCGWg¥9ÇÆÞ«~ˆW¸i]XÁ¯hŸFÁ/,7Q{Ê$Ài|{¢ó"-<Yj 2(-ìD¯aIhøýÚ-y“QR=g–{îÅØ×nm8,¦Æ]ìºkðW¯ß…ÛíåB–u,švŒVé˜Ú°¸„ìJôgŸö§‹g(±ÄÕå¯i.ÁH–¡šßÍù™¥'¾¢qžÏÎ„j¢ç2ÓgB6k9&P·òLSìTYï¡’ÎŸàüSVó[º=ïX m’/§M”{Òe?kÞÿòéo¿9S`Òø=MCÓÕïk˜i_SZáÌ%KZqgº(k);#Ë–«ÍîÖöÁë£•Õ›ºt¸ÕÄö÷ñ??þöÓû7Ÿ<çÓ1w
TYfºËØÀúôöM  ð(e·–mŒ4
ÓV¶¶Y%¾µKG»¥Ý§öŠ]_Ì|jÆM5´Ðˆv!ÇìZ«?[¸öÕãªì®PM?¼¶Ÿì­žUýúÂ“«Ïù¬õÑÆæ›t³-Wç~;yŸÈ‚©Å¸)çà²$š÷F|´Ñh˜ªÈÁtÄ#©á‚aCUBSƒc@ À$Öilb$Ä@’Thhµb€JáLGï=ï/ƒo?¾þø¶ë³ÉNû¨Œ [–©gŸ´áÇ%3ü8/ùv-j¾žØœâHßœ #-?g{&üç1ý@IÇ‡æúÙoÆ(¬ÀûúùFg6ô\é#ÙÊsžM³E&íÊU	åŸ„Æó€ªËê€=I‰;X”»œ”Ûý‰xg§ºZ‡ã¥q1yY@‘„¤	†š[ÞŸ¤L$!£W„Æ±’Äc¬@
Æ a k'1¨³CÎk²À»ïOlëïHØzZÒ, Ý‚Z!¼%ØÕr€=;½p>)€‘;d%Ø­è*Ø&çfÖ—AùHÜß‘vO}¡öÏÇÿØ€VÏÉõ¤Å^Z<	Ìï[\p÷ðh«È‹’VÝj$©¿¨Ó£“ßa¯HÀ×Éc„º`-	E‰!
¢$@˜'¥†JÍ€ 2N¥•V¬Pb!4§ I¦¸Ä q™ °W¼ûý=:EH±Í¿#)%ŽƒÃT¨;e?¦l«ì'°{j¯p¨TÎh® Ý³^¯	ƒÝ‹Î’Šmsv¹âB8OXÙxÜ¿NNóF÷BÌczÝÁì%˜Ú*œÇÞ1MòåTŸØ%Þ¤ª!Ý	 …If
Á	U<ÑVxÀILc,@¬ŒqÙ÷RŽAlå	•òœ`Š4ä‡Œ¿Ëq¦ýã‹+;.µ´ãþjÊ„JZ69½ŽÞüíã³?½~n·‹÷µ)¶öS¹>e®˜¯G ¹\«&z½I)#Wo;j¸íÕ5ã|VÕ-w¹JüËí²†üíÝÔ,ïdRŒ¢·‹MÆX‹Ä’CYFåÖ’Á.ä3-ÓÈÈåYsÑÀ‹ÜmÄ`ÓEü»™gEv=Æ÷Uô·|b»\\EÿnÏgæ±š™+Þa§°5T×ÆÔ-I•eÌ‹_Ò=h™Ìò©¤ÎË¢†r\ä».vY¢gþŒqËô|½œv"®³b±L†«e+\BÛXçÑ4_¸\†ƒª¿¹ýõÊJL±E4Î¦_|bÊ<­—T|î·ëã²êÎò¢È’K¿qyOªå‹ž’ûâÅ .÷ÙOˆ ýÈñN2Š¡ Dl¨%¢5<¹ÝÐßÛayc:ûI×·1Ge;Ü;ÑSE<Bð±©ÅÊá´¤ûØOK÷³±á¹ñ…¥%9„÷ô°äöpäs.;fíƒB½$8¨f»Í/~²4íÝghÿ70Fì0‚ÀÀAK½§N0„]òp<x´Öúé×¤œj°‰«wÛZƒ#vcE©CcK'<ª¢c¡é§;]úûB+Š;$ãpö.;ƒ’Ä½XK’;v±ûö´ðE³mèE`äŒ,ûÃ‡öòÅÜ­½”@[½ØOá8v;ní¥‚zá5Òaë”¶¯NkÓì¯;ü—½í>;KÙ<7Í+¤ùÌLŽi^ŠmÇv^µÞ×w=$ìÀ¼2ôŠCCÚ6p9õ C+/g!Ü¤CàŠ…¥Ç“…šd8®y%àØ*»Çë{$V"HUFH¡IR 	dP€“Ä 8–Œñ˜YH”ˆcCSª0H%CðàÉR¥ñU1Ö³wªC6Uã¥{éªZTsJ	Ï‹â-éý*í/‘±B¶ÊêŸEÞ˜U+ìOEÓàüž¦AöWàe °íx8Â¸ u5ƒ‰vûrýœmKà¡uŸEÑ8Î”|EÇqG[²½i•®±m$…vÉÃïâ¹õŒkXõÚh«Pc»hÃÌ†uQ±Òå<µ2iµd‡áÖ{ól­84Éœ[à^M†¶#ƒ­äúFëê®¸zâîžVA¤‘á=„‰“§’`BÉ	I¤!à!pê"·˜‰YBiÐ	L@Êâ	`s!“ô,ïH–'P¨qÍnÄNèab;œ	ŒŽgy½u-œéÑŽù„¿[¦÷&¶S˜^ˆ}¤ç~ç3Öœ“û.Y|
ëƒÉØ@ž$\A¸BÔ êh)±ªÂ–Fc“”¤‚3$d‚¥²*!ÇÈ$FéÖ·)$w[Ü©4”¹±ÏÇ_/tp˜ù½^±ºñIèŸ÷c¡
%‚îh|bS\*¢8æ¬5[í¸õJß1©nìNu,¦µí]òKVëp ÞSïÿìLó\ªÄcgËÙõÿïk:ÞÉÔÅ»Ôûm&ËøâpOÒ>§¶ÉîmÔ6ÏýÞ­®N­P×Ô‘.¬³8¢n¤Îo«÷yáÞ¨sø­ö¸–x»Oéƒ¥Å7b9ðtj‰•›N‚:ô<Ï{={ìî®tN>?‡Ñ}Ÿö&ˆÆ)…2–\* ¤Q*fÀN8€1çŠ&)#Œ%BªEJ0e*dâ”H{9ìh9Ì—³BPÜ‰í¶ê° b«huìËX+‡õ–ˆpIw4¿?¤$T­èAD²GŒêã€ºÆmD¶>pèøÀ¡ïTø
ëùSÊ`™Êµ.Õ½@÷ÐêÐ=¬8²„iš`÷JŽBN	†kˆ•âœAÄµ Z#“*ÉA¬R@1B(MS„5×J§Ü*aZÎ*z}#çR-¬@ôF.dâ‹ˆ7¦Š>Ø.zöéõ›çÎñSdÅ¢pÝ2š.'I­¢fY¼`lÏ¦×ƒ.µÆeiúÌÌ«Ê£v½¤«FíÚúðu¾ñSmP*w“/ŽiŠEõSY$a]yu‘[áÏÑ»xú|¾Vø[bñê–Õ‰òEïí©:$–µ¦	Ù©5 ß_îž ÆvC½1±€¸„a?	@,rëc?,Ïoç¢÷ïßþö ‚àº²4;N<0á“ßö	Á;~×ÆÒ(" +ûD¤£ßb(g÷ÒšS½õÐh½0D?(DF‚„“BÇŠ¥V­!0e0„´‘&	±ÔÏÄR,¥ô:)A@K.‘=ü2‰{@|(ì¯0ÃÑÐÑ‚’p½7²XÎýƒ›èÕ‡Æôgž$.v­<ÝµTúåc—Á_Ý›š±=*K·î.µà\N&Žpe«êey—KÇŽL.ý¨=ü¯¥¥X™#£è7ï?_·¨:Šî;3ÜÞdêÆö9³¤ÕRÄ•ªëNÕUTþx›/ÇîíÑxì
Ûy^•Vƒ¯¯ •}\½MªngEDÖnÿ·›¡ùFI±p4~ Æ²(ìÇ[Kj£‰±"[UäzéWqfÊG×ÅËÁà±LÆn—[»ºþw÷BÈþždãlqg~úfž¢¨žDÉÕÝÙ•‰¾Êy–/ß°°°¯<u7‹LÕºqï <À%i¾ï O'›ó1ªž}gù!âÏ€ˆúónÎ9Œß_×Í
	d»®¡”×é>aq€ú_^y÷tØxk;°‡¶¬Ù >’„.ÁÉŒ wc“¯ÓgîUÞ·Quš^®ÆÛ¢K7Yœ#}9Ë'/OÀœ×Ù6êQèxñ®´,˜ýœbTpóº­¶‚èÞïpcÑh˜“CS]çbè¥Z¯ª×©_m×—ÎÕ“áìÚˆ ¥%¦–ÅÇœa‰RÊ°åòó4V2I¤ä1EÁ4æ‚'ÄÇž$š'‡8{9Í5)¥™n¹Aþ¾ÇE5„£¹Ý²7r‹˜&v’XåbëM(´Ú‡U1C9FµN=çxÎb·]UŠ­z2¤óò4ïÛ/o~|}\“+ag¸:¦©äHš`‰mwDê„+eÒH$ŒIˆ21 ÁÀ
g\Å©ÂJ Båáú“NvI"7­HÏ3çÎ*ë¥ÍËF.¥ùa:÷¶¼õÑje¢,îòetëÌ!›¢^º²ë8ßÞ˜ëßßhðŸ4³í½1fjLËk»Êìü\pàÔ(—Ù5×‰ZÓÓ½}dôþîãÙA¿wíßü¸îÖgFxapÈgöÎ]Û#ð_ãm¬n¶Êß,š‡0Üøó–›f«ØµÚàCVÇdÛh™à8ÞÊÌÛãZSHVÃúS[Y/Bã§ÊœL^Y{:ù™ŽôêíY†S).…vŒ/^{õÊá´d‹ÙKgèM‘çÉÇ¶È*WÄÍyàt äî^ ˜šêùW•^Ã1nÀQ(¸»U “lš…¢Ü…BN§¡3KÝBaßA ³±ƒËPÐBÎtÐá[è"ÌL\áRÓ(X^¤sÝ£¾øÀƒxOðE{?ÕXWáì.éík:^hï¤l)Êvá ;×bœMMÛH‚Ý¢÷}“ñ9*¬dîèoãÙ-Ÿ²ñBz"hiÅ'åšêìY½£Ðcç§j È,9húyÙü»Æçò¤´@¹Á6€c3õ‚è‰>Ô½BxxÆÑ£ÅpŒIâ(­­P¥¤  r¡£ØA
I˜„B*¡Ž5Ð‚bÈ‘`Ò ƒ‰Âz1ü{Ã)ÜÃ	Þo!L@¾+†cF·óAÆ0oÏä¾OþìZÆ÷‰	âG>t¸ˆ Nð“ÄCn$òÀ•h½–Ñ;ÀWÂz‡[R{çv¨s»µß¡ÍF ïÒè®s“•ˆß¡ÉFÖïÐh-ô‡¶©Kÿ¡mêj@h<ÜFl±VBáëBX ëU…ÖÄ¯ß©ªðT;·´ˆ³æZ»¯Nœµpc¯V<ZqJRªTdhã8¥
8•0¬—qªS«epÈÊ0±$¦‘¢„Ú1)Lå)8dá¯'è(&|]E
«à'ú/S=m©Tˆ*r§9^i½öuÊi”˜ò±L›â1(—Mx[•¨’oÆésŠ”Êá
×ÀáºòJÕ%_IÞbã†}ÒªÄ!‹>£Øe©kBXÅA ¯µëe^§bÔ¯ÏïÖšbÒµ.Ô&—ƒ£nÀa¶³JÍÏˆÌº“ÐmºsËOá™».!EuÍaòˆ^–'â>éâ	÷t|'Þ‹Žn‰3œêóD:œ–±ìyˆQe0H‰UJSÌç1 Z&0…4†ŠQ‚ÃÚ@5Œ©Á*’b¬’zªÒËCORB¡¦U»é;IÒœ<„à¶<d=(=®uõx‰èé˜UQ¼~ÔKD#=‚]é‰è	™»Ÿ¾ùú(Sôvå?‘‰øX“ï®Ò‰bX>q9Nˆ­Ájlì<Ñõ±äÊpc¤ãëXpË‘L)&P„7„ ba0²A8A	G¡AStýÞÇo›ô.Ïª·uÏ›jdíys·Á0ŒÌ·…åPî˜OÙ’¯¢¹/ú+Ñy?6ÿÅz»›óÑv`>bX¿-+!€Øö3.W²}ËtDi}»[ŽÉ×óƒÃÆSô„£ñO:Ìÿ¸ì&8¹÷V£Fv˜#;Ì—«áÚ6É§­£šRÐ6£zÎuþÓû—b5Ì£3.J…ªEª{ŠÐõ0ÏÅìÝ¡·ƒççgxcvn>¨RLr‘!Ú²E®c˜0aY^Štj0‰SÌ1‘È$LÆ‰–Æò˜u¨øtý•Ù¢z~˜£u}f1/7…›úìá»Ož3²PÎˆEtç³Tâ­Î¶}«aûxö<ò!x¤@ˆvã‘;Ûô„h÷¥ß«Ù‰ÏäÜöz
å\%NÃgÊ¼Y‚¤F"Í•D!¨V’ÊgSa ’Jn”j™P†©A@1s(÷^Jùaž»rÒÑ¿Ñ‡_Þ&™ï-‰Œfk@OÍt/â÷ÒÞ7guè/˜å'Œ2®ö¸‰8ò÷¼Bx/q„ÃxÛÄÊ)Ù
]1QÊayª€‡§ç	SE)o ÍõA;¬À©tQ¸W~Çª/7ƒ=]üÞàjÇLYÎ'%-Ÿ‹"»´hÇScr^jkIb Ò”ò2ž$Æ^¤8$*Ñq3$	ÆÄP¨å.­‚VP§)ƒ)áÑÇ…œj9×r·ö¸£±Þôóñ§ˆWÉ}ò¯iãVù•Þnã¹ÎûðŒƒ¿¾ùwŸ?èz^«vn5•WÞF/Ö6Ÿ(òóÎèd6)"¹ìÁ|åXC~ësÄÝx÷žÃ<5·QjäÂÒf—™î‹‰ÞÉI¢e1Xä×ÆÎË\E‡rC=6q'³‡À]Óôé‰³&b¥6—¢f|B,²>ÆPò³“rÉ…/ÁÉ<$æ3AìòÂ´²fªÐ…±£&œ%žvÀŠ6M¿‹lŽ°.ž3žÃÒsfÉ-WD1FÔ2Fb©š`\§öÒ$–Â”@C’$õ¯»b«ÐHšb9NT”†:Yzö°Ì÷Ùfzç4þÜïvp¨Û§Î£h0B`×
„y,%õ§1Ñž¸hëìöÜêa¸¡1ÆÝ-A›zB<á!Ôõ^éPÊ
j^î³ÐU“JKTil„f"aR™ºj¤(eRpG©B@ò„ ã˜rˆ¨ P2*îb*ß¬ïC^µFåÔË°Á'â1^olYÜµ[ýî€ùx'û§e{ ÕEwH8AD±ÚøØ²ïœm_…“ãÂŽ$Ñ‰xÕ ½Ø½l)âyRÉåoÐèZAß.ã×G¨Aë8ì«üÀD}©¡/­$x±Ý ¿Øð«Œæ›Aÿ©“ðÁµ^FÇ\°öÄ¸ûz=¡Çaï´Íx74²mƒ%2%½ÈÊœÕ6=´…+VÛØÅ6s~ý¿:Z'Î.ªŠÄ`E¬MJ8æ© iLLb4V†Z‘•P¨Q’ò4N“T3WZÃ‚£DÄ‡ŒäAÁWÒÝÅB=î	Çß…@ËÃZ
ÀN¤ó~¾eŒF¶×1¹F{ÑöD[!8"îcg»ž¹´Â?ËoÍü¸,`$Äz)p·g{RAŽ]VbÌµ‰í’Ç¤pJ°R3B´à*V«ç1‘4ÖJÓ8ÅIloð¡"ŸÜl¢÷>!ZIÍü«½#j|Ùä™[83ßEoŒkðï–ú¥y^/§¢¥±¢Ø•sÁ­Ã'öÏË-ò|\êû>!›sùyîU^æk’,ÒŽÚ?´sD¶ÜÍËæu÷#¥scl'_ù,à‘]|/éÀêBíRLNñNþ2(¡õŒîÎ[é¥æ°<PC|Dº'®ì¸L{f~ò³:g‡éFWÙÊÊ#ßLüö_ú½h]Ðr‚×.¼ºÈ›ãA<èÙ:/Ñ…¼>ŒöxÚ}'.äk˜Ùo¹c´îÜ7/Õu–-	HŒêV3´G ôÒ+o”o‡Í&yb	GIÝ
°Ï\	¾¶3àNL‘„Œ 8á’›Rs;ù˜È%'K6r RùcõÇÈÝµ€ÚN~_TŒÁ¥À¼Þ¢ÝÍV+W<ý„G{¥‚Ð×ü§È±´ 3ÊˆÔ`šhN3)D$@`E«7Af¬Z~Å˜Óª ,µŒÝË—“ø®\€âýÉˆ`L1Ý~}OcÂâzl(å Bv„\ÐõÙ}/lIüÉJAn/&"´¼Þ}‚"Bà£æ-Y!´ÍŽÐÚlKzlt_ŒMð¸–'Ô‹³¦t<BÂ8º¶õŸLÐ˜¿fæöI£º’€„®³à1‹e7ÉÃ2¤Äh,ˆqµ„H°E™”&”Ò”âX’$Â †H°rÑ°Ca¿¾s¯É]Ò|þb,—.åü°ÜQ­H”ùò­ÊîÉ4Êç®Žªª¼>^˜¨:qÂöQ”UTöë ÌWää³±¼óïØ#Ë¸–%T™½Èåý™È»¨“¨¤+†üäºÎj”]T Ù±öÙõ,›™ëÃÑ ”°{=P¬”N¶eÌ«‹$’Ö—|å˜[:s ¢¼šYjXŽ¸xáËàNÍâ‚²IÈ*œ£€é˜h%¬”ÃkcèA¤c?Á/;¸4þ@Á$°ŸRö8bŸÈâ¦™ÉMÕr^˜â¶·ô+Íƒ<•$Ë“åbóféÝoëM¡k/¹Hªr_¶;<œ¹ÚõV®;öuº-ƒ.nšKúy
¾ºüs˜“<ÿbÙÃ0Í§‹£ƒí-Ù^½œ… c]ƒœ} ¥B¦‰I4†@) B§1áÈ`ÀYKÜ;z˜ARÁ¡Ôª«òé×ÿˆ~,§¹éE©œdVåÿ?g–&9/è;—/+BÑë|n¢Ë½ý`ñuuµèæªª›î›4ô7”ÅÏ÷þXÊ®ÊG?Šé'¦‘ÛIßs™pPÏ9èßÉé]‡;7£èí4ú7c™Ž¼rÖ‰597+ˆŽœì8¾$wÑ3;Ëç?üPVMŸÞ]•O¡æ®HL6µkº\dcË—udaekÙQ81ågÇsÊ…¼¬¼áÎog³‘6/Ì´ÙôÁð®”WÅ;Rc$vÄ½º‰¡EÝ*jì¿{ÃÕ%–×§ƒßø•“7ðã¸Ž4Ök°îç°ˆt2Ü@ž½[„ÿ›”ML¨˜†NC¿†6FøÔ “ÐÉ$&ð:°1n©8,B—¡ÓVÁ€¡ë£nBóPÀy0ÊÐRE
zÒtèJêÐ•4ãPÀÐûeB—Ü„.¤imë€Ë@À4ôÚXn
ù÷PÀÐõIC¯lº†=h×:0t}®CÉîMèúÜ„Îú&ø"Þ„ž´›Ð“–…ÞØ,tÅ³Ð«}	]ñ,ôÆ6+£5À¿‡žŠ/ÁÃ—Ð»ý%ôÆ~	]È/¡—áËr¸=½_–“PÈÛ`ÈP:0]õqè›„B†
AãÐ‡Ëqè±œ„Žq*^LBÛd:œ„òäIèŸ„ÞðIèRNCOÐ4ôMuè §¡»3½¸ÓÐŸ†®ø4”L‹`”¡·;W¡€¡„%Ýš™œƒU6|
º—³Ð#<ý<tBóÐ­œ‡ÊóÐå)B÷¼•3Š`¢½E(µ,B©e<ÆI(Á*&¡DL¨‹`ÀÐTüW(`(!*BïxzÁŠÐS^„òå"ô:,Bä"ô¤-BOÚ"t¯ƒEÅEèÎ,BwfqºâËÐõY†Ê_Cø×<t:·¡wû6ØÜq:Êo¡4íNÎ!ÿ:´_°åü¶2–7NŒóÈ¤ù³  m*OÁ§_ÿ£òßŒV?Ž¾M/Ê!#~c¥ˆÃN²èT/n£wPë·—›epéàpÐRú%¬F½’{ºø–Ï¯‡ß ô«ªý¾VÐ…™ÛAvïe«ÝÖ©8Ê—í–uûHÖÚx]¼d•ã¦–S¹Åí‘¾p¿ô‡~ÿªë³íâ>É/­ ê”Ô½ƒ’D'8…4!2å8UH0Ž0I±ÄX –… PÒ4’j‰QÆÊûõÚÎë’Þè]ü½úOä†€ˆî%çÁdÛÍ;¸¡7W­÷AŸÕðúíÔÿzŸ½7E½º°÷A7ö>èÀÞÝØû [ {t`ïƒnì}ÐÍ€½: ²÷A7ö>èVÈÞÝØû ƒ {t`ïƒnƒì}Ð€½º°÷A· ö>èÀöæÌäM@GzŸÃæ¿óÆjß; ­£_ÂÞéÜâtnöÿº³xNç¯Øÿ?ª˜qÌD’&±J L!eR¥”PˆtÌµæÂÄ€ &BC• .8R„	Œ¹ÒôPæ7åÜÞ]Ò	¼¯ÞüôÁ$ø=2;YO8£q½F™èàÞ¾q½øŒ~`HˆØ$‹¸Ïq›“p?p°{7Øk{v×i°Wòn¼`ï\°Ó-Ü—v~Ù?©C+TyL§R°¯èü. `M°$ÜkJ,ÂÁFìÞ.þÀFìÚ¦Ñä|~q°5÷&ÕG4”þ©ìŸÁÖÊÐYŸß¾lµ{â&¶•r3ÛJ%>ÆÔ¶­õæ¶ÞÜö¸æ¶Õy<§Éí1-m0a˜ëÄØqÄ9B%¸+¡nC£¹R +œJ“¡)Ò+(¤<diÛ¶\UÆ1gýÁ´²$¹Lº‹y–,2¯,N>—ne_:lxûç²‘9“ –£ÃÕºÍÆã•*rÿ¹"ni7«è¾ìž±ïÒÞŽ·ß]P×]ØÖ ÜÚÖÙÎndw4²ÿZÔ]wwÛíe÷ #Tœ&KÀ}iû‹¿cä’ƒÏ`»z0ÃUÜ¨uq/n2ÕePÓlâõÛ!åÃYqDKK[»-uÕ®ÓNÝÍ E]àí½œj9×ÃâÎ‰qÑqvÿ  oÃ| ›'E>6‹–³¹}:=€ÝêàtÉª:‚$`IAŒŽQª€‰bœ‡0”R™
 bžhCQÒòA
…Ò©R1•“øPYÆ×~NQY˜ÀÊ5ŽÝ¯„Ž½¢Q/Nm‰S÷ü¶n§F™¢°kUœ½Zß²†oV”>ÝÂ<)Çå½Ú’‡)+G±íÒ’˜#×$),p@¹†½·«—¨Î)QY5¬ãóÕsóÝã“ rënŒêð¶*æ©=Ó‰Å8tÿïÖ2Ââœ*z]Ðx¬¤+XS*ÔH0©1a
YÆ’&Jºô)Õ:N1Š¹À‚3!‘²Œà!Ð©ÿg?»K'ê¿ßKóôãbî•(<Ä^b§D¡fl+4Æ~q5äÃyLýâõ<æ¼iúéÆcŽ
éS$4ö)šû	Í€}Š„À>EB3`Ÿ"¡°O‘ÐØ§H€íS$´ ö)Ú`û	Í€ßA(hŸ"!¸O‘ÐØ§HhìS$´þ©B„û	€}Š„6È?IŠ„åü¶´•7AwU:oŽ	¶ÚŠÑéã·÷­¤_Â>~ûûËÑ_^sú£÷…±=V®’„H‚5$QÀ­]&®40N@ªSc€‹-WBÄ:f’ÓØ~)‹)×üÒó3ŒÞÛF>^Ò7}¸§Þ?ýôýÓ"8o»‰ °’ˆºDPÿô¾‹Øû©Ïê§¦´Oå_zl{?u#dï§nƒìýÔ€½Ÿº°÷S7ö~êfÀÞOÝØû©Û{?u3`ï§nìýÔÍ€½Ÿ:¸÷S7ö~êÀÞOÝØû©{?u3`ï§n|?ui0wöòYã):ÒU]:sœ/çÃÇc¼Õ{óCô^ëýÀA+ê—°÷Z^ëí«pïu-•Ê#ù®5Ñˆ"X’"-#ó”Ã%
 %8&1BŠ§JóÔ¤Ž9@	à©$Á´Ùwý«›ßx®ïõÓû­ÿL~kN) ;…ç‘`1Ý*<ÆŠÜ¿‚½×ú¼^kÔ¿®.ý·½×º²÷Z·Aö^ëFÀÞkÝØ{­›{¯u3`ïµnì½Öí€½×º°÷Z·ö^ëfÀÞkÜ{­› {¯u`ïµnì½Ö€½×º°÷Z7>¦×Ú[Ë›`OrZ{7Î	>ëze‚Þc½8h=ýöëïÖcí/ÂüÕ›ä®æŒ¢1©LÊe	E©Æ(!†	dQD:ç´Ò
)ƒÒ±¤¤Úp¨XWåFþh§÷ ÞêÝnzgõŸÈY1u[ÞjD˜À[u&‰±Xfïà­Þ\ÀÞY}Ng5wã_ÔôÎêVÀÞYÝØ;«›{gu3`ï¬nìÕÍ½³º°wV7öÎêvÀÞYÝØ;«Û {gudï¬ìÕ€½³º²wV7öÎêFÀÞYÝØ;«Û Ïï¬vÆò S9ŸçWí$ç¶óúœàÛÞXþÏé=ÐO¹‡Ý–ºÛ˜Ð{'zïDÂNt÷-OŠ|laÅÏ9vºóë»þÏéÖŸŠ7uº†1NÇ‰ÁhNqj„Ä21(‘)Wö›ØPE1%(!D@žp‰MÊÓ4!ê€?ÿƒ×%ù»ø{þ“÷àÇ Øƒ å»ïÍmÃú{sJE;xð7w­wÝŸõ9ê³£WNìÞußÙ»îÛ {×}#`ïºoì]÷Í€½ë¾°wÝ7ö®ûvÀÞußØ»îÛ {×}3`ïºî]÷M€½ë¾°wÝ·ö®ûFÀÞußØ»î›ÇuïÌäM@GúàÇæïûÆjß¿(? ´Ž~	{gx‹3¼Ù	ìÎâ9½¿ÅBNµœëaq7IòqñØu´SSÌ´Ä±‰µ!Üˆ‘XsF¡Dˆ¥’	ÉíŸD+Íµ€¥0áÐ¤cÔ¡ÇÝ«iFËi^¸˜vKw½«øOä*&¶å(&ºÛk71a¨‹“øà•ì}ÆgôCÄù†=ßçÎ‡d“ÕîT›s‘ò-+òQQãj¸<F½Ó1Êˆ¾fÉiÏ}8§ õ ðãVqQ†‘+ÅQ’%$Tr+#Qn4²&‰0\’$aVXÒ2%!6i+):TÅåÿ°óº¤¨´‹¿—ž¾lCe#Ä ;Â À2Þšt ÂÄ£ÍEëå¡sÊCŒá>†®Œ&ëcè!ûº6È>†®°¡kìcèšûºfÀ>†®°¡kìcèšûº6À>†®°¡îcèš ûºÀ>†®°¡kìcèšûºfÀÇ‰¡sfò& #]ÓÎ]sŒ7zcµïÝÏ€ƒÖÑ/aï~>)†ÎÅÓ]¿Er½”s½ëíÍgí¾^0ŠG¼Ú›¸›ŸƒX%0”R“RªB’ªD2ÃÅ(–$#„1a…ÒŠ¥4‰Ñø€Ÿ÷U´Èóqd—!Ê&³±™Øp.ÈOŒ´ùš)çu‹1ËÇ™ºkró×èg·8Q‘§‹[çïLçv•nóù—èÆŒg…íÌ¹KF-¢»|9÷ÒåÂÌ#yíÜÂ‹hž_/=¢AÙ{á\¤[#³7"SÑíM¶0ã¬pŸ^$c»cÕ?"%g2ÉÆÙ"s¥sëæÓAm>r±˜g‰íµ¸¬suuTF×Ùâf™Œ²üUÄ(†ŒÕý«öÆÕÙö¯RÎc¶“¥„Çõ:#SaåÛ;ìa­9ôGsèåÈæwªó¦¢Nw§~¼+fý4ýšÍó©Ûèo¤±¤®hó®~ãìXÏê¾‰Ÿœ‘pÖ$ê>ßÚCåJ.ðl5œçMÔý ùØ‹wløê ù4ñ™
î\]¯ð=s»ƒÑqS:íŸƒ©¿(ÈX3öû£‡ãlºüæ6…Â=ûùÝÛ_F£FÏn½\êláš4ÕÂéqkÿYr­Ôç" ÙîÙÏ¯_Æ#Ð2ÊzƒjbíMæw3?3Ôt¤w íx~ýÏ¿}†#Ö†v=4óy>o»4vâ`XLðôsÌ“eê…¶À.,-—­·{2|(ûÁ–Fÿ•§XhõÃ‹W|öú?^ýøÖî`ÛÑßßhÛ†~ Ý‘ÝÑãšñÍüžüñ‡½gä¸VÝÖd«áÑ=vY—­†G®ÌŠ#¢¶r°á±«Š_¿54lœâ|1ÖÏ~þÛ§Ïyõñ/M€…—Ât D;lÇe§£¶icíl.ž§[Y«!ºx%ØÆ3Î]œÛ¼ÎX©]:›ÿK©>n´¼•¦Øùâí‡×¯”ÕWŠ×VõœçãÑýÆ;-æË±ÙEní¦lÔŠ{½ÚËÑû{ùß-ØÜË@ç[‚u˜
å%”h+/~fä¢j4 ÈhF˜J™22¥À ž&Â0‘rÊ ‰¦R’"œsul(Q\hƒ9E½ýäÕh¶«Fcö«ÑØ§ñÜR£c£u5:&€Õ	ë¤F—Çù;R¤ÑR¤íÎ=MEúÙógŒ$Í¡QÕ¨é5ê½UiÊÃr‘J…9`³ö¶Û(ÚêúvPkÅ;º¦(wn°RÅÛÕ”æ#šÔôì°Æ[êv`•NÝ	xµŸÈjfAí¶5ñÀÎ¶tæ#šte¥oöU×º·¨ià'´uJç)ÍOë<pYjç[×•ôSµl;*ûiíXºþ´öâ´ö(6hõ§µG§µ™þ÷¤êïÌ¦×øÿ)4þ¡¶Âô#¨ý”1£¥*MYŒ$äˆI1@+ª5Ti’"j iJ9cœ@))…©d½çkMýÍðÇe}4s§7k÷[Kqÿa´œF¹–c¯ÖçS{ÔýKåÕCãb «þ²©ÕùSi•ñEîž%o,åŽm<-=&¡*:Fñí‡ÄAý1Yh×ÎÝ’?²ŠþªöÜûE©¯gº9´ÖÑÉ½µçVŠ=Ò?fì×¦YitÇ:VŠÿùÔÌ,¢è¢î\Ûÿ:·É“¿µèÜìâzìCé£ß‹Fùd«@½¤³q–¿d‹sHûç¶Fî‘çïíAC|æùÒ…g.§ùÂ%å˜?‚„É‘Ñ.©¡F$‚ *™J*Ê@D¢Ô$”B¥ABÇ25PZõH¨Æ²Ý±¤sø8ßÌj¾•7Ég—©¼2–fjÿ¢nû.eÑÕÂ­åÑ²³â^W“\¯êXaµˆnÍxlÿè¿[VÌÆòÎ%Ü1×h–Ï†ËYTöZ!{R"jh¨ˆJb,¶H0ZOÈÁ"êj'z1õd1•ðMáÍnbêjÎ.ª®ÿ	ÄUÇd6Ï»˜"qTù<Ë¾Y¬³¨øO.Èú+pçZïZô_¯íêv8Ï½°|²ýRÂö-çOPÚÞ¶72òîÊâ~lîËSÞCQÁP',I8VÊþ5†ÄÂ‘*
™ÁXH™Æi˜rœh3‘j—7<Ö°Í¢»žYü\Aß7ç®(Åg'Ç×µƒÊZÿ¤d_µ#ûB²WöE1ãÛæYˆb‚êáS•ÜÜ*ûV‹µ%†'w|DÑwä‘<ñ—aÚ1‚êžíq„Óv¡ôLâëê¸…>H-ï°ÊçæÈÃÙÝâ&Ÿw¸`‰f½?ÿto;°e
#\í…-,e¯cÜyûàOâƒ÷Ú	LÊYPÃé§&†
#* H,”Ša©El¬â”`Å TÆàTª„AÄK™P‰”XR.‘Lt‹ú­œWƒòkpŸ=­]åïé<Ÿló§û!ÈOŒWGû"ÄvrÃ¾ê+Â]‰~Áz#Í©\Šo¤ñ;pvÇúHæ™?—…¤w‰}¯Zþw¯¥?uÜÅtgr^œ¬†O–ßŽ~FGpV™bp7ÙF`eÅŒ!ÒÄò”«T"ƒ4ç Z'öŸ<C™@’h¦„0MT•¯U¼šì¢ö–SÏÞ¦×eeÇïÌ¿QfeŒê]Óañ§Zœ²&Då‹<´!ÿ;Ñj©n®ìß­¸n®Ù©½'ËE¿ý¾ê~½]DVœÈo‹h²/2÷sQ†Yéjê…©Ê5¶È£Ä¤´Ã(2×@NM¾,Æw—“ªª2ög“<±g­ŽkÕ\ï³ÝzxNd[´b»ÊWuÑŠ@N¶²‘,BnË†þ`Ë#ÙQ¬Â?Dv{Ï%`u¨óp’`uÖ§«ÿ1ìX×¡GÍ<D1šð…ÈR‡ñ>_×öåé"¥¸•]b¶ü‰Ý({øÂÝDáÆò©óÛpsÇecÎQ)YìI\zntv/(%4eß\Ž&rA¨H¤¥»©«­	p*Scu^`9Hâ$:6A&…€Iqb4”\7‡íÑÔ,üsd?1•bîÅq•#ç“ó, øÄ7ßÀ—œ´öhº(™fÉ·msËÅÆqâ–ÊÍæ‹¥|µ¤(·ËýöúÃ(Šö4w¸w¯¡¯Ukz9¬P
b/¯*Ð»•}Äµv¼Xï×_ÍxƒÊ¥ŽhëÉueX‰eÿÚ¸ŠTrƒÎö:-×r4x5—AßrZ¯eE•âÆãÊ7¸-Ž5Ú©1Ú¯š¶ ÅËÁÿ}('lÊ«¾Gnì*ŽÍzRå×üí<+—:r¤%Rvo{Ê‹u©ÜêGË‚ŠY^ÖìZÏEË…´ÈÞçÓl‘—K·þÍá¬ÆâP¿({2–/Êx!×—ëÂÂ–£œ—Š™ù°°?—RÑÌ½øT$¿–·¶IDâ÷D$¼ßSB‰«vµ%"Ž9¬‹H 8ÀþäqèéÂvÊ×öî‚ïÌßm.}€ tlÊ¶ûs?YPÂt´@•gw}ß½ù¡•ÃÖ(M[ƒt³öº—-4âËÇv ïIV­º„qÁâ>w'\ý|,;Üip<Ó¦	 0 1#SJ´ˆ)Å$`ax"PšXF¹d4‰e	æ)²¿ëCq¤=Óî™vÏ´=Ó÷j|ãU‰Ù]¦	Ú	o .ÍjiÆWŒnL;Ü®Ñ³í½l›t|„¶mê×{øw`˜Ë1òV÷Ô¥ùYMÇéëÇsö¡v„\%—JàÔ*		×1  'ÔPÂD"	ãT&\Z*’R” %cÎíÈ4MÒX‰ø ÙÜM&Ÿy¾âˆ]±E»Ã8z¹"÷CjœØRùòZn:è²kÇÞ¶*{>hE€5þ‹Z¸Oà÷ªRá\ Ç¶
' uf 0B™ÂjËý¸j\íØ|ÇŒ v-`l/d•,l‡%Ô†X¯}XK†a'LOÂ½}hÎÍNJ¬¤®£vý†í9¾.¬zïn¢cv4Û6ýA´òK²Ä‡Pyc¬5"d)C!Jf8• 1¬b$xby£„$UJ+%&LcÉ1$¼gŠggŠ8TE²ßã]¦ÜfŠ$Àñ{ˆ)>‚šô'a‹]+Qôlñ [|x]ët¶xYÕö±åi;q*£4óI®Íðzñå„˜+ˆc“4a€PERÀ.¸H S,Eq§ÄhœX	)ilLµ¡€%) ‡ÂÉžËÙåPëpeæŽÏ9V5¤RùÒòÐ‰œÚ•ñìt!‹/­†âÍbí{eWÃvy½§s×²x9p¸jsW*7ÇlÝ¿f²(nõ(Š>U@«,ßÖYRËôƒÒ™ZFl'â ÝŽ;[mÙ´Ä:6‹UKÿÁö8­þb;”<‡ŒÊÀƒ¢j^ã@ß¥-tàaò¹.FƒÁÛ’KVöè=ë“¥.Ÿwt›/ÇÎÚúÅT™¾½m·ÄïbÕû–mµg‡¶ë²qûV¶XÎ×_M¬)¸ÌJÛFX*j¾Ïm	ÃJ…VÜ1ås ×dÄ!íš÷fÅ‡þv1¾ÓÀýjÞõ9Ÿ*_
yGù¢&	7VŸ¬ÃYÂoEæáŠŒ,þ/‹¼±°ææþBŸÐ¾"9êç¬%èm+hÅP·÷IÖß·¯êùöñ}héoe§dÉøK¦»;µ?¾û÷·o>ÃÐS]l*|v`:7ÆI ]îZñe2»fzø³f°Xµ3Kèò®Ð7òGã¨–éun÷ÐÁ¡žô/gÃz®¦2á¹Ÿl”î\ó¾C	ÅG<Ù°W¸ÈÇÆ•]±ÜÐþsêÎädh÷ÕŒ‡™ª§Ë½èæZÊ-@Žçµ€x¾ÖSò®“bX)·LC«ö ‘Ý»Õâ‘ÝçåØ|vrb€H$JLVõNÔ!+‚„I…’„Ç„…¬¹41$æH§i@Ñ9+a¢!‘LaŒ’ÐÄéuè]âDj7cS¾Ïoÿ6äVôQöˆêèÓ4s±r‘Ý¢ë¦G(Õº•¯PÆGà>æNz6raì2f2u»8Îþá/å•o1óFÇ<´Iår¼ˆ²k%“±Xµd.ÕÂnÐU¤dá£m´7Qúôq‹*"È¶õê…U"5^®¬Pb™öf°ÑàUäßD¸ôÄ+„V×(ûu³ü*³±ëïÊR7Nç³G`Q*)æ›t0N/Û4/¢ÿù?þß¿ÜÙ.§ÿóüÑ³O? «<¿rŸßgÓe±úŠ zîG»†úßöG Ð›«èÕÇ×oßFþãs§—¹Éejäò—‰û%*ì¢\9Õj"¿x=m2°4@ŽWOƒfvª…KI78UV-çsKZÆwQ±œ¹ ™Ú.­Î»¹°”ø&Ùæ¥u>ßmÔ^7×«cpQÛïß—c»E–ÉxËïêÐÉt.gÊk:™ûÄåû­¾ŒW­¸¦’ah¿‰šJ†!Ç¤50¦×ÐÓ‡a#eè ¦­6Ç•÷o{3Ç)n]Vçdƒ1"\t¨©†,¯4±ïÆ,û	Q–:÷w‚Y÷bÕNŠ½D Í2»÷05,¼ŽØUÛAPGiÌf©¤,‘ `iR˜ ÁEŒ%Lt’Ä’ÚF!& gÀ d’Ô'“PœŠžfn°–ÖÝ9Êÿ_K½Õ.@ÔçL­èùa)à—?DnAJ1àíÇ_†¯_B!ÄV”¨=O–ñN&ž‘®3û?{õáíó°Ì-*fùÔ3m÷‚µŒÉœš:øëwoŸ¯£=¯ÍÔÌ=öeëo^ÿÙ“~åðâíO¯#iÌÝ@˜'•¿þÛëˆ@„<´ìcºˆjÜŸø³OŸÞ¾yîßÀVœ±Xu}µÄÑc° …*ªÝÀè™ç=®Ç©£Ò¾¸ åö«ã€£gîØ”ß¯¢÷ohíG2xf)˜Î'Ñt9Iœhâ[{l+ºàã_^¡å+­³2ÛÉÀ®idï•[Èí ãõÊ9Ö¹t<ªÜ­~pËÄ}7Ì|ü’~Y¥Nq¶·.‹—™¯šxgE¬Xlo=·:Î·Æ3x#òåK·H‘Ô´Õ3à¼(f¥3øËõ{p_¸cÙlª¥h×Ì`¼_,`b'B
¢˜c°•pÚÄ;¦¡'Ã’ ‡F}ÏÜþÞ¤Ofé\ñ´Å¡Œ·[5Uèv@Íêú~B~YH(Ìa¤2®Œx³Â}ÊgœX4=êv§jv]ü×Æ=þî·ÆEEd»Û>vÍžÍŸ`XØ#&„ûR6©Ši‰‚ÐÇ`B)¦JÄFRc$ÃØ0Åƒ–1«àhçªÒÈÂõ‚B/(ô‚ÂŽ @vºR)w"v_Ã"Ë¬Ø–  o»Ç3Ã½¨°%*ð¸cõ}Q!Hÿ¿ˆÌÐêý'‘s\ü9D‡¯r|=·´¹›•n’š²u¨XGáAsE(`TLv™­b€cCd
P!#&Ž’1Å1±t
jÁ ¢D¨Ä< <ü¶ªô’–'š˜In·£ÉãÈ¸%›+ Áóð{µ:^’˜zR;_:%!]§óôzrãzÔwv-3e[Èñ]‘_4rs-ósp·Œ<òÍÊ½w].r[¥¼ìSºÜÈï÷gá˜Zé”t}º9ùH+7+eug	ØzŠvè‹NfãQôŸù²ìl\ä>Žº6šrÑÔÜF›A¯:sî‘dég¿±ègS5^Úu‹Šì›ëR/½dèÜŽ9{T/­,VÎbà3VÓ³yf?û½¼ªÞã–N×ÊÊ"‹Û¼šgäÛVíŠèÙ©Fî½/s'×H;7uS
<–‡LÕÍpæ"×/µÝâÌÏ<”o\5‡Þe³ãœØwÕ`…*zæÚ®1¹Á¸XöY´˜È¢ÈÒç7V—¹)-™ .¸‘Ô#Çì'"h¼_Ê€€º›v†yŒê6	û)¶ÛâÇVC–¤cØÍ2q‰àô7Æ®óµh jœ¾Ò§ŠÂÒÍŽÑc«ìãóm4½a“Ñ¡ñ9"¼­xßÌå«¤°A@kY 1{¼+­ÞY³N
·N2Û±]ïA-G„¿´ho£Æ1]ÐÒ³‘²"ÙŸåtš[vn¢?6Àª,RÝ{„ñú³ÎÒ¦ÒÒbbæ×MH&Åç™USÜÊFºkêlèrnÖ“©véø›l‚½ÖÉ%$Ó6ÃÖ9dS’"“
ÊÁ@@©PÈTR)eŒ´–Œ#¢LNˆÌ4£J
¡¸`{Ù´—M{ÙôHÙ”ã{²éÊ9" #;²©Kû¶eS+*­…¥Ž²éÃ?l8^:=Êv)é3þ”¤Óæ­§%v,Ù9yŸ¼úÔŠ$ìcŸ`T÷åŒ½ÄúJ¬Ç¤E:‡ÔŠ„a8ÐhnÙ(Æ2‘†˜N•HYŒ¡´í4V˜Q!9çÇÂØŸ©–‡Þ¶îO±šl$o+—^‹¼ú—z~‡*^•þ¡,Ì½éÅù/÷£:b
$$Ô„&,'[2
²z…?
j-o½}¾zÚÉ2Šýk×ØžÍüÕfÕunQg_8IòiÏJô0òOHþ…ÓÄ¿s„Û6ð‡0<P))”*1:Ñ •)Õ*Ž•ÒžàhI°r–ƒ‘¥Ü	rïq('\cF±:äëIø^Nï“ðš¦%á„Ü#áñ	Ç í­F	ïÍãˆ8]Íï—ˆ?ªû½ñù4+nŽ‡´#±õØvÞ±`!~€¾ÞG¢;D:¨˜RŒe°Nã„JˆãØ'ˆèBI±ößVÄPœH)4SÁCa’É®o†³êìT™è/¿ýöÁe.1cg#Ì³³e…³ÿ^®UôÚÙ©ñ¦çh0Øjd/dî^TÞš$šù¾lº2k¹ÿ\êhE¤óéÿüÿÏ"º‘_]J–²ª÷Â¿Œ
@¸BQæ3wì¥üËµÌ¦£h§W‡³”=N–ê&J¥d¹¸qÖãéÝV¬g9‚ÿ]g_WÙÈmg…Ïò=pïý£lËµŠ™1:ZÎì,ßäªfM¿Í¾d¥ýtÖXÏ„É$_.vÆ˜ƒõ;Î(Ÿ¾ŒVi^J&åA‡ÞŠ[qªf–9Ôå~æH0Œ	Þ2ÃÚOt“£{§(,G–÷ÁßX „·*Ãbÿ·5q5L‡W°Ëüñã›‹*–µö.Ê4Ã—ãdVŠì®uc¥k>êGÙÈF;RÖCÆ´ª+9Ëº˜#w[½{ûãï¯~ýÛÛyõá­÷e·£©p\zŽU7!1™gìN?“Iö<è¥§PrD°NLŠµ{hâZ	{½1ä\A­¸izXºîóë|ÔgÜ.ñÕÎüY2Î“ \gY4×cY $ŸÛ­½“ßî¸ËåüÚ<l—ÅB?l‡Ëiöía{üºP—éðiÔ{ÜŠQ¾6Ó ¤×J=	7™±B^§tIOß;Ö©(ød'¶*tÝ¦j9/LqÛ©´§Õº,Ý¹Ü|=Dæ§½­ñ(°ïy§,´ŸÝ/xés+®:¯_LµŸn÷š¼¤eî?û¹ÝtpáŠ¨Cûç×à–,º /á;…,Þ;C'<4Yé	.ÛXÈ³P/Æþ\ºéµÞUéTîë_©o¶:9›V÷ +sˆ«ÛS6:¸õë‹*¾jôU5¹¬WÂ¼ž´ÝdE³¿ÙCÙ)µMU!Û¡¬ZÐ¡ÝŽ¨|v ¨¨Ar–×a¬ðË_
•çã¤—°®AA(…4+¦(ÖØ(¥&"±
˜*H•ÀI’pÉ%€ŠËDbl¤Ñ]½ÞÕ)>dYkl6Ø5…XÜžœ](µALì¾l™…ìÂêI‡	£<ÀkR;zOÑ0t|±ƒ'o"Lz¼{eeu	PpZÍí
Îh	/\pÎN÷¾À4Êûã¡þôÍ¨³±\¸k7œÝ-nòéÙ­z—0ÇI «¶ð°vûÍUñ„¸/AÇB(©S¨Ò† †uÊcÁµJkk(©:A1¶ ÀÕå¥ZšCÜwËûÒ…ÿ¶5|ZÌt;ˆ¬‰™2Âv},r x½vF ´=Žls”ž$7­ïáŸƒ‹RãŽ\´¾KÆól_d‘<ž–ÝMÁÒuôÁ½L•ÇQA‘"#ãI¢æÒHN8N	4ÔˆÂ¤ý3‘J¦#
jT¢µæHÊ¤LPÁW‘ÊíU_§®f=óöãâ_žGæÛÂ”OÉVªÅï¯ßµûýåqˆ}5òAêå&îw¯¯8Ži5ÚeÊ¤ÂÒ­ÜR æJ­Ô¼æ%gÒçìqy#? ÚX¶’ün
™ûQEÏfsó5Ë—ÅønðÅÌ‘{EgÔÒ½H{þÒ6Î¿dæ*úZ,næùbáÒ'—÷ò**,Ö…Knÿš§ïÐ¸,ÔìÊ±†«èÛswQæpm×a™ŒT>Y;îèÃŒó]­+^»jw'Tl+].´ õJ/öŸ(TéªF7,ïÍýºÿ¬ùNërrj!Á ìÆ?œPm‡ô9Éõ3'Îoê-wËëÔ±Q9ŽÖ—³c;{};¶°›×µÅš˜tlè(J`“#Õ\›­÷
é/¬&Ü9úµÍ†›óø0ý•Çøaú*OÿÃôµ¾4Ó½kÓ‘=œÔÑúf?LŽ œ·§“êP=^U°£oeá9·SíÝÃX1)[Üí*ÓÜý’e5^§wÛÝYBÉ,ÖJ)IÂUN™\2Á©+Ti%<ûÇÅ„ñ˜Al”ÑLÆ#.RÎcNÈ‘,…qrÈíñWùU}*ÏÈJVÎ„g¬rMMC&ŠjqJÍâ0Ÿºtfæ“lážÜåS_šÑ¥y°âþ È\U“èÎX üÖÌÓåxƒa•!Ô5°rª™ç+)‹[.-ƒÅ¯]&	×}ä
WŒÿqc¦Q}pN}ñÖ j\{­rý‡ÿàB]¤²Ë@áSgX|39wbô¸Td<öUêØªRe…¨ŒuÎîiŒRùÜ+OeÝ”Á{;žñð÷ÌÜ_—r}î…÷¿¿~ît/3¾Š&FNËàd¹Ø„BoÉj^Ê^Éípî"§-¹j_|Æw\¶[~WD×y®×97Ö£Ý‡ävž-Ê¡úúT¾ØŒ]½ÍÂÆ­›×zmé<Ÿ¬â¨Ë¸ï+W¦]]Žh’ÏíÿsœÊþWB5UÎ×|z=˜/§«AZVNåkæåxaæS;?-^öýÑrG|Ø÷³¿~üP<òùàÃ_>Œ«ñþ«›æFÇ´§EÚ9Ýšñ8JŒ=sÚ÷n¿Ž'Nõ]ïÚóEÇ«Ú:WQVf=©n˜èãWæ‘µzÁGôý?ÿxÿ.zV½šÚéKºÜ¤õèpûna¥ûbýÕ½\Åêˆþz¸>S*ÚÆž8 ïn•U	¦ZŽÝ•qqn_\Wµ| ¥V­k¶ÌO|5ÈKSŸ·øÚM¦Lžkq•µrßÍº*ëzã}–w¬¯¢‹¦·:Û&ÙîoËyâò"»¥¬‡Ý¯SÐl6ç‡ì
­Ú.âê
dvÃ|QX‡w°]>wkTÝ;;›­ûfÎ—&²w«¼Z}o¶â#{âÚ¾”!…ØzrÆ %ÕûõxBb@âmï© TÔßœ7öâƒŠ|5Æ¡eBÃfö3*ùYˆþþêã»È²ûÓuøOS_
+ÍŒ¾ ÒÞaN×Õìhë|>³3Y¢Õh_®þÒ’˜·)ÔºõËY>yy"þs÷ìƒÌ‹ëlß*œ€r…¢C¸ÔwŠ<ÿw't¹s9vzõáQ;¸ŠÂCïóT¿e?\ö{Kw‡CmñrÏ·&Q¾ŽÆÉr/ëÿ8¯¨îˆÀä„z«*V¤ÛÓmaˆJ°D„&H#ÂW2Xk$Œ!ÚÄ#˜šÔJè iÎUš¦Ä€á”Æòß³ùb¹®O¹ÉYYq1Ï”{½­ó°`^-EÙþËª­[ÿåtÅª]µõ©:HÌâÖX±Y–=¹ÒíNZwÿ°Œök9+ÑY4uBŸ\™èÇ™ë½nÅ[GÑW¾×t`w³O–…Û7/ø8:›ÞÃyÙëu3|¹:/Öf/Ûæ±@‚ºùÝ±lŠÖÙ¶Ù69ÚNö!Ç´n~‡bÖú®•«_0$ô>¼+k>.µÇ½‰žž‡Ÿ‰ŽyøWñJåXÚª‚ß'ûYD‰í¬Èë–ïCú4^…t}Šðàµš=êÒÛÞÙÂÞþúÛgWÁ40­Ú¾Æ0ôIÇÞÆ ô)É·ÉuyL³·½Yu¹¢‡#Ü¹·Mk:âÇ7fç55VQüáñþŒ’0¼jöýÀù{Ú8¿ÍÄšÂöwAõ¢9p|·ß#D±l2üÂ®¢ªè·÷Æl]¬œvÈx’rÊ¥ˆ-%S,%#¡¨LhŠ€bˆR,ˆËÒ4¶Ò[¬”A M˜Äœ¢CRŸtöíûuý#+â8#È×,r¯Æ\rßÊ,òGô™e«·Qå¥F?ÿžMÌ¨é³ßßNªPeï¹v—Ê$¿Ë™öægßÉ&åo;¬2Š¢ß³èVVÁÙÜÊsÎìÙ.­ˆWÙhkƒþô··”6Ã¬g€±¸ï¢Y>[Ž¥Çg‡Xõ[8«–í+¹óÑVt‰yW¶_&Ëñ"söÜ[¿Î>è¾ÇÎj-í·«(±ÂÏ?¶ÿ-ª2Úg?¹¾Üá)Ê;‹íÆQ¼¬í­EÎ˜X	•n!vÖßÿmê2¯d3´©1}åqÖ7‡Åá/mfÔ-OU0K”.mëŸ?½­Us«6É)»ªÍåfU5ìÚ^„Ñ`ðvÝ¯;.þj¬K\g~hÿêR*}ñöNGN\N‰­¹Í~>°“â7ÝnÇÕ¸DÊÿêhEn7ÆøüÉ›y»Sâ^d9l5„Ëçe²‹ÐdCD0ÎyÝ>f?Ql	ÀÞ×4†V0ßŽˆÄB0T—µ1ˆµÛånWgXÒš"·½Ùç«”ý0&1;çÝùžž@B Ž¹˜Öæî’„¼&öIF]þíàÚ}ÖÄõëpþ’Ú‘~Yä³¦6~œÒw×Ú‹oâRŸOÓ¼q k ?J;lËäÈÊEìõ²z½›ù³ÚL_|7f<.ïz(‚…ù¶xa¦×cŸæ£C›ÙØŽ¼S‹oCÕþ‡º·¸ÑóîìéÚèˆ~º÷â{›Läãˆo×fy×±Íd¡dðI­-Tçæ[c0AIã÷]Ý ³	e“N„útÍ¼\-¾à†Ÿ­‘óùÐþ1ZÁ`ÒôšÛ*6o_ÿÔE{ÿø¾´]ËNà‹.ÐR»º¬Á_½~÷†*Õr±ØD/ýüÓýÜ9#ÒŒ@Élž“ãâÂ1®õ—!î”Cù<Ë¾%ËtˆìÙïÒ2Ë;7±ÿunStn6›tYp{ýº­Ûƒäé˜Yù-Ân3÷üùìÜò¡mx…gÓå·Ë%Ïpž½|ÿË›Oï~úüú—÷^ýö™Žk.ÿø¶ÖÎÎÉ®öÍ
Í@Q¸ì°Å¢!¤p)·’OœmÕ\«í•‡€Úº÷ïP›*ÀUaˆšØjÑ†h¾LîZ~Þ“Ðc{+v2G˜¯YSVŒkó­é×¯™¹mþ½¹ý¹¥J„Y,}ZƒÃÉ/‚@¾j™,/Ø#'…‚*Q˜j–@ KH(CÓôÿgïM›ÜÆÑtÑïúŒ¹g\ÑV;À>qâ^—ír{Ú®ò”]Už9qÂ‚`&+%Q-J¹Ô‡óÛ/ j¡’ )åbg/éL	ûö>ïÎmDa|€ DbÌX˜$
‹Ä:¡ˆP‰+3Œ]è`)Ö)|_­ìGÇNJ7¹­£=I%›¤’A!•´9ÇÏ6ŽkÅ²RIíj‡gÎ¬YÜBLéÄqédÍl0ukÏº˜Xé`!œ´¡Ò—-çùfºÒ“$¬sÁr8qå–€o°-àª€_c„"±u	ÌaHË6pH0J`³Üz=ž¤|=¥|(dìë]èÎ-ß^Ú´ú 9üV¨ÒËæk(â3¿œUö#»Õæ^Ô@Å±œ§…	Ú†[~ÿù€GL¸¶ ƒuŒó¦Át^ß ^{ØÀZ+ÄuƒÓQ}ƒVÛP˜ø5¬ü8¤cYÛš;B‰•õÆöRï¬kY³›Žgª-ÝÜôVã®hÐ}Á%ÎãD±Dp*ª Ò¡L$6¬~Dl(‰J DEˆÃˆCŠ°N”0ªÊ‹ò²Q±¸N:Óöá–ë`½Fêr³>¦ƒ idö`Ó–šÓŽÍé9õÍ|&Ÿ/×~t;pÆ…ñÂ¶°^¡0ýèø­ÂAÃp‚…bv:Óæg~@óº7Ž=õ«U©îªM§cäÐîDé”¸&å­-vG½<@Öšréî´£ÊPå>X¤gœyªr	bì¨rcá­,®Œs <pÞj{Ÿ^ßàoaˆ[½VzÚ2?_S¬W[{løxLnyœÇÆ£«v4"½+mË]é>Ú‰üïF‚ÿÍ‰ÔïY8îú“ðüûž[&Ê<…öÓÚ Uªz»ÜÁb+ª6«—7~Û Kß—“wãí62¶áŽÄÝEa¨" L"€Á$&Z>Ï°nIÄÌ:RÙüiHi"F5ÇD!‰¬r2p}37ƒ©ÄŸ7G[­ÕÚe*Ï°]ezI×¢]+¦]^t']w>Ôƒ•k]áÂlxÎ‹1<¦g–*%Ëoós³”gE^M»Hw"Ó¿ó=I-¡«MÝqUMùmOe°ãÙK:»Ùª=ëï–|_¸]Ú22ôÁ`wŠuÒJ?ì¾# <´ìò.MäùLwõâÄgmRLâvÏ<I¯*c@ ¥Œ(Íù·™wã!Vq¢$N0p¬µâ@Îy2HEåsôó«@R+E²€·?ÿòáM©X€Âü}§ªåú]õ`i¯z6üaå%«J+[v—j1·j(óÜ.j²ôÔ²©žyjå8r¢]HÅçA”e—f,—S}¶NÛh3*^æËH&ÁOòÊ<ƒ6ÈÒÎýy‘Ò}9•y~Íb—Ò
LŠA^êÛY:9/äQÑ,».¾=wQVLÓ6h‰›šé²g3©—Ssªƒu°û¥9VóLe£çÁòˆ¬’Ÿ¦éÒÿ××OëFjóAžOmpïèËé4ñûêÈV„ †”n…  èpøH!ö2—e"!!ÞzZ­¿iÓëêF6,nÅ°¸÷àOú²ÄãÅ§%â8<äÐ¤û¾ª‘¶¯jcôÕà¤Ùl”~ ®Oµv¶ç«†{›ŸÏô8›ëáæAêÖÌÕÄÛùf˜+kÜ:\~ð¢¡îrªõY¡+HL]ƒ>î»5wÚÄÑ¢Ž—ZžwÞV‰•ª­Xár|ui¬U&j°†¥g>ú³ö¶Ár~ÙÖJQ^É‹tXY[·«ç$íëÙEj%)+jÆ«í§·0uç—­,R“ÏR¾‚°Ö¶ÌÉLëY<må–ü&Oó‘Kò‡OmË\HÛWk»ä¦‚yp[÷cë´¼ÄíbÜ±´šidø¼‡m9m9Â6=æw/ÎaùÄ‹þ|úøîÕ›·ŸÿùÕ3&ÂvSî º–h§¡”ë·‰¥¢möMùö!+˜Bga«M»ÿð~Lå¿¼—±M
É™Ž‡"-¶­C)pQê,†}ðKï¸+Ó]2‘}Dº“ì(rÚÉM‹8Ð@ bI"!T‰
5"B"	-I(¡¡RJJÉ%Š0ÀáJ#‚_X	;–‘*=…(ÙF‚RÈ6õ\ÀMÀ*_u±È‹ ®ƒ%oR”œ-&.6k!ÎÈuî–n‘»ô?¿ºSQÃÇYæbÞZqCV!k`AÙþ‚rgô°ü–C¶c~ ¡„Ð²-dâÆÜBfT+–»8? nUWùÂîL{‹lE£¿S
²aq|„¶¸7¿Z~3*[kÍo·ú0Y5pÔÍW6–ckÖ|Ñ7­l¿$éÎÛpÀ_æy;Þo•©¿;»ÉÌ¹šÝN‹y3må*o_ýú_?…gì‰™÷gæËU˜ýüþÓWüuÏþþ¸’€éùPÏfÙì¤r€I6O›çŒ<LÝ†)]µ¹!]øåSð3§_wšœél>ŒÓ¨-¯7|8[É¡Ñ^ÂJéß$¥J„¸cSi`Nb„5…Ö„!GŠE±H4Š9–qˆŠ¨ŽcÁ‰„	©t4ø$“B3iÎËbfJòËÔä¡™†+™ééH&ãuüL±dO“ï4º“1ÁjL™êÉ§¹Ù„Á~Ëèd6.Ú<piøÆSS9r†þó‹`l÷îWÓ£Â®ý¤F*öu±	“¼ÆN…B…¤2Ì}„¨X±)Û|'Ì%Ò+«TäˆlåPµ1ù=ÌÌ‹§pXþ¾Uh³MžëÐ;´/hm:èkÔRìÔ!f£óSRÛS{Ó£ÇîlyêÌ?/­•ÅÍ1qcwSk¥¾æms©ÂÛW¯¾b_™â^=ìuwyàO´Éµ}>¼82ü´Ù­;Wg´’rÿKÃt\—àÞÌœ|W\¼ÂP}äÅ¦%IìšßÌnÉ*èxKk;š )c		¡{1‘P!ÄQ‚`!ÈHÈ ÆƒP2Ä ù@ê8€D«
ÄõÛ|• ÊÊ{·"*lç¨F[WÎ+/¿%]×u”®Ó1¥ÖÂ·(¸êdµ¦ƒgŽˆÞ˜K¿=ë`ùû‡ü÷¡+¬\n§gÅ?Ò,ðMšÏKã,ÇûÃi¥Ín,fröË:aað1¥[&Â‚!hEúz @Û±BAhÙ–€Y³¡ðfa‡îÔqKá{@Xkë`ÜMÒ¼Ù“­9÷×
!DÐ”;¤M@h¹I¾ÅjDÁKu›æÕ?ž¬¸FFl_aóë­l˜Ó¹=rÃÂ{¥Aa[¬¢J6ÍeµïÕOËäKGÜ¶Öú›”	E}1³½iÒrê÷@“W2qò(ÄXÖ>”È¼wŠÅ
£ˆ°X$Äp“*”Cà‚ÅbF”TÐ¤×K¦õŠ-2Ú"J6	b°<(õâ [ëCQËüë¬œïg)ÜZw*cŠ"ŸëÙòRËþþáyðEO
“í÷_^ŸìëáŒ½§ÏgK6sJÓ+½|¬]^ÀçÛÊÓÍ2gTž¦è6åó¥ôÂºÒlå2GlnÉŸÊv8kZhH¦U`‰Ãh5 ›er•:(ø-wÜºËp	‘9gÚ†•w«ceÁËï'ÅœŽ¶5µ˜ãnijq(èêa¯§¤‡¨Ê%mOI9aKJÚMs[:V'°ï.µîiä]®Óƒ8=(Ûx5ß/Íë–¢.›¯‹Cfã-Ö\a«zª·ÈgaM;+—Ú¥z¨N?ààÆ,dr¨é¹F!¬….îŽ6yT—œˆ—Ò“í6wü€‹nìTÌ}®nõÙjCŠÔ{ÃË«±¥C;ŸZAB“É^©xÞb¸t‡Úúö˜a­5N:ÞªŒy°k
b c)µHB11ð‹é„ƒ0ÖG˜$ÎF©(’ NL#Øü b
UÀ®Wå€˜.xtëõ¯¶™ÄçA’Z'x©x4_^ÞR›Ï-Dq™©e>(£k»z.:”m'ÎˆØª@_¨BˆÁ6ÇO(%¦BÙrBh³QÙÞé|B,=cL´LÕr\~´É?×†qÉœ>²þyÍò&«^`G<H¦œ[ÍèHÏëúÜ!°."›Gñ%%ð+i…Ù%í*ZÊvt]ý]¹¤!{yýÆ¦¯m6·Äð>œšŸ”£DPmXnjqd“£GK,¤0_¾†0ÁIbÊKR0ùU61C³i¶¦·¹cS—Üä22¯å7;Ü “7Kc™ZÛT<»ZåìÕù{íÚ–<Ü:íHÛN2ß,&VÝnú>¶bS¬ƒæY"ã(Ä*Ì³²Ý ¹n5ª(ËæÁ«×¥~ûô£õÅ^Å®ËÝw6¬ð¤ðÞ>° SC©ÌQqÎÜÅüì¾AéJÉÅ\oW¦·õcïâf\_òè‘õ÷¶&ÕÅ-r•3³ËV‹·¿
ÎùÛE×.Ìá˜]™`f(§•¬º½S*€ƒ²{·ûˆÀÃ!ï±zmFžak¸PâãÇ×å›9,®Ø°m¸»Geu°žòÖdû›Ð¶Âðha‰ãgç“…9%lòz—tÆßHf=UÒÍ÷dÄÁ«cÅM‘Â­¸†)–×—u_ÿ•N½´äC÷$UMá›¿Ì,²ÊyÍ´K=ÚÉ—ï[ZBE¥¿›ÀbíPéö8v:=Äì­v{h-³š¤ðëÂ—©!}öÈ÷fçÙ´«s‘5Æ\Å6Æ¨ù×VL¸Ž9ÄQ,Å‘y¡±LÑ±„abù$ÂÖ*O¦…\PªPUL–BK|»
û:}pp³¸Ó‘¼-	ÈÓ¿Šç×Š¦k˜ÁÕzÿ^4ùïC×þbÙ™í ¿È®më®¹"µç
3Äƒ8[únÈì›µÁÐì"Óç–Þ9›¡\ä2øJnöÄò“¦u›Z H8`ðï6 îÜr¦Ñ¸!ÜiaôgÓ†Ž´Áö¤še¹‹Ë+g©6£Î’Á6C[^gTzZ“À©ÎÌõ:›éøBÎÏÌR¼ø¿³?³ÉŠš‰VÑæÂ
•9W* ÀP ƒ´™îÄ³B"$ nç Fš#¯Cs†ÈbXœúG@—agº¼7ÙÞÙ(Á]”Ôf uÜiÕcTÛ ãRuÃ=(lgMóÙíÝ‰µÙD-fæ»nÓW»¤Ëç±}Ú¦¼™Îïï~ýüÕÊâqŸÊ¾^ß*{‡Î=\ÙÓòpeO•Ã•{Í9ì^õY0ÔgÁPŸCâmçz¸2êS¹Ç°IŸ#}†Mû,˜w¤‚C•EŸÊa¿Ê°WížíY³úV†æføTö6Å=’©­¡ÛJç¹Ê¯Î¦·MŒ—ã’zrZWèêA¹Fa¤æ!â Í„Ô2Œ¡Žâ$f)IÅB„TS(R$XšÄID)i”ÀîÈþZ	`¯ÊØÃBÄI6š†ÊbÄÁ²‹-QëF¹'º-ÄŽEÒ²äåNo´ñ‰¢Ð×'
bB  áNôËlc¸þA<ù›ñäu·~Q–eíÀ$™º#¿(ÓÓƒó‹*¿ÙµÒË*_¢av5®5ê+Ý|òÀz XkÙò]öym^æ"ÆqB›Ÿ5DÐìàDö§œäy Ã×cÿAúÝ;S|y/•ôv/f/ôeöK»I_¦u†E¥Po8-ÎÓ:ÙÞ²øU_6ö:ÈË«q}@<z¶ŠüZ	g]\<o6m1i$Gó˜t¬U=g1¬Ê¦·æÅ:ƒþü\ª¯ÛÛÎ¬=\kmIËÔ™6¨Ž•Nb!PLqÌ# ‘Æ0s­Ä94ßê„£0â1‚\0fSk&$º*›ÁŽÅäïËÙùúªå»ª,ÝCÊ)V±Â'ç–gÛeð\$?§àr©>ÿshãý™j.hçÐ|\§ñ¹ž»<Ë>…¦Sôž(+í˜íÐf$°Ú°ÅÔ†ø{áZEŒ­ÅüC±ËC*ljrbò£Ãv™ÞnÛòr„(Á€Üó³Ë,ŽõÐœÏ!ù>ò
štïÐ€’;È+°Œ¼_ÿø$ÛÍ÷ÎPZjßöý;†~µÿ6å=[XLÒ›Fû b¦uºÅƒD ©A¥eEÃ=YëÜRÓ"Ññ°œ(÷‰¿X[¿ºÞ¡D¨T‹C:Ä!¼»ß`½‚ƒn]­c(¼lÅx¯x©ÆÛ_Ú*+jûÊBÕö—¤ªíÍô}ïé:K/î8íÀ]Ý1ta>g¼M2M‡–o!ÕyÊ;P%M)&Óòœ¨¸’ÇØ#àD`ü‘ÈÛ«èg×ÑKZ÷H$úÙ8À^F=RÂöwéNÍ+‘hÕ&³Ì­¾{=kSFw·Ù³nó5n±ÃÇR¥Œ×{É?|=·ì×‚]ØÒ>_!l£«
&IÂ¢Pb%cÂŒx"dL1ÆZ`K 9”œÅ'8Bk„“*ûü—ç+àL[X9VŽÓgï^;™^¾ˆÖ’¸C|•0²hÖ%iVÙhdóiV€a×Û.ŒŒ²Å|»£Ü²‘¹­Vä6]e!1lþ ›ýt¼
¼[O°’âT^xžÎ/‘3ŒWNö0],w$Ë™•Ú½ÜÈå¡À‡E¥m'
€R–D‡s¼Âçšq‹37„÷äÇ]ƒ73 lbc½øQæúÔÙžM¾·C7¬¥CwxâÙj<µ¢ªÇá`ÃKWä3§ù¼EûîÍGlqÕJ·i?Œ,$=
’YgÓ²ÓÖ0×óÅÔY?4îÑ3¥¹]êÒ†®üØ]"‰Ìi…n=Šû»ÒOooå¸vîžô5Eó´.€òºÔ*5œ]ä%uëçêVD½,_Ä^CmÌ Ð9›@&ÒsõÂ”.žœ]ÚE¶àêë3[|¯Ì†ÄéìßvŠÇMíÅ/ÌpíÑÖ‡›ÞÁd‡G¸[d¸Ê{Þ¼¥™µõé
ß egH7%qLÇšÄ‰TR«˜°X¢P@HQ(æQ¬"®´ùÁ’„&˜JÆ!ÌQ	ß¬Ò÷Ý/?Ìä°äàÄ³Ôå–·ÀîÔPæëüÙ¯?Ô+µ³©»Õ$FCƒÔJ×ióë T°@s'µÔ½¾¾.û)VYêBÀ´l©k?Âa…¥nˆ	äp'üŸÍU¹>·`æ3
Y(|¼‹37,ÏR™éÃ~5›ðƒ¢?Î²©uµ>§vÙ>»Åîtªé.Œ‡V¤·##kuº/:ÛŒ¥ÞÝðð­?P:¼JYzy™V]-Wˆ•‰uã*Ã€SŒ””€(¢„€,Â	$!0¼¥J	¬Í¤xH°–EŒéÁ„F4®x–>[Æ±œ’,£·¹yV?@‡ã¯µò©‹àey»¿/n§zbHÌó Û`^e·íÁ¦Û¹.‚š®»?>_è|Òe,o‹+‘KK™,FKÇqÓÛ Ùi_±å ¦‹t¼ÉâÕøWc¾•n’‡!(l70˜ •1",déhÝ[2R÷lòYßÌOçc½>,[Sîý<ºÓ6XiùëÞ§ŠÛßØ¦ÕBeÛÝy³»´€o—«üÎ3Ïcõ·¿µb¹Æ«/_^þøî+ôUâ®ë+©®¨íé\®í–éË³‰žîÌ•Ï ¯â°¢>êYß×'Ú]¹^—­®aïkÔC2»ˆæ‹á«:ön›š7–t8 ˜cýõRßv…ZÎôv°‡†¢Š#)Ÿ!0Š4Ž¡,ÆÔ0}P‰#"c,#†5":FÆQbäs  ­’àO¶âÞ ”Nœ˜‘f²™]=q²;¡u¬ËSO/f2¯½ºËJ¦ÄKÄ5n¤›hûû}‹>84[Äurý\[îs®G·…7iQ/w±ùlútœg6*}RÈÿ³d~mCó¤N=á²ŒÛ(÷Ë&¥²¾Äî›Éjú:\ÈÙ’9Ò¢ÃUÙ™»Ääv…³ýb½>gÅ;‹8°Qï­ñ²2x F2“Îž:°6šLæ¦Ø¸q[¨¹œÃ ‘éháÂ9…Él¶˜.GQàŠÕ¤×Y®ÎsÛŠãr¶.ˆàxjc•;5+0žŽ²[­ƒ‘–Wv#ÛÅèö´“©<7³:K³››WeemCßbÂËVÖÜZHCz8¾./aÙÈ…Œoå»Áˆ5ç»YlX\în¡ýÜy~öÁüjq»+Å§æ—÷î·›vÅ²ôö£å·eÓ×C©×#~™šô!ÌÕM÷‚ÁÑè2ÛÀ`w÷šÀÕ:QFê.ö£Óóqá.è;•I>YS4ïâ9n_úçOŸ¾z‡b1•,mÑÍt¤ZLajÑ6ÅÛs#¹5“o1þMùb¡|ñxÞf‘67íøHµôFÙqõ»Ê^H¸Þ€Îc@×a¬¯ô^Á”	vZø
•Š…9‰ ˆ4Å1Ä*œQ"Ž4&ØFÇÀâ*B5ÑaÂB+ó*øjÅs3‹Àî
½nÊçlÀ„}‚°ÞVà=»Ê°«oæ?Û–ˆpÁRÂšÅ´Û/Ã6^³ïÂC±¯í³©3zïî]joð©¤¹'ƒ±„ÒÆût0[4ìè F÷iw¨}KÚÝsÌ=04Ø»i’(‘
¡BæIÆ8„*A8Z@
m½‰™ÄJ)Á„ÆÚ0UéJÏ'ûDb¿)K|¥D†Äî$8>‰}x’¢îDöaÉŠãeEwAdïGnÔ¥>*§|djkt÷Ül"¸ýTX`iXYAbÃµB¢%
#%cÌc®	¥HÂÄð¸1Ð!Á‰\pþÄÍ>‘ÚïƒÔRon–±cudó&c°e7Éh¡‘±oÃÃægø·<b¶¡°­™R®ïÔùXÜd¯p§çÓó†X‘åo¹g?¾ÿç»×_­ït;5QK¥Ò«_ÿëãçOo>ÿöñ+jìk©[j¡RòÖ$ù«œÞ~|ûáÇÂª=U^§vj©6¥±¿öÊKiå§«òWQu°“kÚ­µzª«i]—ê«ÓXJ‘ÅÐÑAò]H¤¨*2N¸40‘8Ž5	
…Ž¢4'0rz!¡“@€!R%0OˆÙL~‚Éß)L®’HQ„8Ûñ0æêlÁdÎBÔ&?<™To ü DS›}ì”;HnNŠ˜ïAœÕ	1{šž„Î§4´j‚ÒÖZë0Øî\ÕÓðþAÚˆmaòïÄ°¬§›KO³4Ï½ia–vbWˆ.@¥y7'ÐRRŒuˆY$Z:§Ae@q…!L â1æ 8–T#	ÍgHKÀ ŒbƒˆƒDî€bUåjßïnjÁ[=Ñ3‚_.â4^¬gËMãUk,§^…é9?_µäÒþ°jà¶±ñÜešn¼£Ÿ¨57›8t˜f–ÝÊÑüv˜Ì´~>8/F1œ.fÓ,·~¦Å8.•n`ÅÆ9\|`Û/òTöãôÆ@qç‡j`‹ËêkN‚ÅþËXYP‘.£inEN&z´äŠMÞ÷q-p¾Y…™eKÌb¬~µaÓX·‹SÄO—&[ìè85ÃÉìoÒéE]lôÂ3•‚-ÏT‘ùÿAô‹)	wmž8@ÈjtK±Ñ#Ùˆ7—fèNÿ°8÷mÁï‘-ó?,Fv‰âTžRþ[5÷ÞÀ–ƒÖnôn0	{¾M5ÍUû½önÔ3­QEã½T·?½ùªMüTéüû|3­JZõòb–7à5—»MO ‡UŸ@Ã°]RæÖ(;?Ðñ…ÖöGbS­oÚŽâr¶
gëj²Ù†W**YÊeká€—e‘MÆ2÷bßný`íô±ã£`$D¸Æ×0È¤¾€ÙŽú6 d“¯ZÌk}€í,ñO/WŠ<™Oã®Òt6z®®œ}Þg¡A†£„H®`Ì8
ÍGƒ™ ÀHGLAÎ@H¥„1WhÎPR•àõwmÊ'­¬$ö§ù4x-õ8›T£éb
$½U÷óÇ vu]ºŸk™×³tnÐ´CÊöø,…Ü6<Šœ«‹ÓŠas;¬t~kóœäÓ¬ˆõTþìb>U`R!@È1D%L*xH1 U6‚‚mLŠ)¤[†˜™½i4tCsÅñ°8­±×éü"Ð7J»ÍO"w-ÎÇ)Í,Dÿü= l)q]Eßt£iˆ—xøR~Œ]{GnÎG [ÝlÏP™‘¬yÄpš–PÊi²]D©tx¢§ìºÎ/ßüüéÓû¯Ðü÷$RØ©·g«â*||ùÁ_˜šç£vëPªÐz2ó2Ìå\ŸµJ-h#L®Çs¿XQðƒ¡(íêVÙlY×TñåóÃjYóúR¶È×QšÂ0¥bKúUs¯àW[ðë8=·b¦³ü¢ ¹DN»sé æÚÊÒlÝ­(:[…Ëk‹W "† ƒv8JaCI8ÐB„QÂ£$ An¬RKb@ÁÇGUrÈÅŒ‚¨8éÞïŸßs=§9
´¿6/âÔY›€:Û”Öè€0/X~u—»³:ðr—ƒÝ.O.È;Ÿdc]›å!Á©•Ím"•›Â‡%y°²í@ålÅÈD˜6ª°7K9,ÎÍ°jÂ%k½™/
áöT{;I`Ò•–½^ß{ø&7µé§K®j»ÊØ‡Ðìð¼v^ø\R`³u„-¼ÝáNëez²ºÐö¸n½ÀÞWs ºz;ôxXC!Á ‡æE5lÇ
'$ÔÁ0Š Í	i¢F È˜‡P™×Õ<Á,®Tð´Aí+èÏ•ýUjKË–8ë§r‘WÖ=£o?ÿóogö!¤¹³¬9û§ØfŒpÜpUý¹yÅæ»&N±ÕÎèq¤EÊÄJD^¬;´m˜mÉŸ/u+æ—w¯ßØ?çê¡<Ï[Lmñ<£ÃÏ3âæùÝ±Æ'Œ£²ž…3Ì¡Ç½÷fùá¿?VüÏ¶¯s7®õ¯3F¼‹ÐÜæba“im1âc¾á¦9?ãùÖÏ·z¤œö³‰‡ÜÍöéQÞÇT}­oð×KxÚ3oÒ†6–ÛÍÚP¡”$ôx†ø“Å|äfˆ[”´Ìàç÷Ÿ¾â¯¤i5vr‡6”žû­]¡i¥´iÚ¶]ÕP#o_N=éQv;ãdC5Óh(<J–‚–zÜìê_­Ñµ¾Ö_7«(óì¿mBDxÖ°?þ¡¢J·¥˜¢Q}ÓL·±IDÅg¬!*Úîz«ŸcaÏ»`ëC€b*(Ò[Ì ä2"@"™Á¢QÄ™51q’(BˆÍ/œ(ú„>úDÀW8€`[:À! 6`ç}"NH£‘ÏLæ/¸7üù`¤¶4çÙÅŸ^Vê'¢Ç—#´¢/ÿ|kã›o/a}sv¨R‚©~•;fºo›ˆý›ÌŽ^­ò<øüµ¹Šûèö˜ñP»‚Ü½ƒóè±îbt)'Ã‚8î™Ôûç{³f\bmWÕ2·R¹!¾Z$R„ &Z+@,ÖÀÀ`¤	7ðW
,äÆ*	qCŽ$EReíãæü£p°´›]8¥¾üøÎó<ÍçµØ«öÝdÑýçÅ,›dù[‹¥^þcµe‡q(‡œRË8Ô~„Dx‡2ŠØN:7Á !-çB20–ÃUJ¸J$ºu¤†ë³Ñ:³îËOïsñ(­Ÿvín+ÝQ}æ¶Êû{v~fF™J7­NÏ7	#¨!ÑVÐK8ŠDÊÜ J#¢@˜€89ø’(èXD„ÆTV)v–¯Ä»W¯³8—ól¬&Yïv?Ë,NÚ¸Ý[Å÷òšY’¤*5¼î~ëƒ¢õrºÊçÁût²¸)ü^>HõË§;Ëî}è]z¿œ~å³Ä	£;ÏG¢Ââ1A·Ÿ%@Ë¯™@ìqù î]N_5Í½½HÝÔ4µsîý Av`˜Ý˜£¹R_¬Ê}46ÝZ:€à,HOÐx±…'k¸÷²ô!¸ÌH‹›FS¹ÜÆÓâA—VŒ¾zŽÝòMŠŽ¨ZNPh¬s9\e&ãõù8‰#äGqüØ~2pQÇ»Øm¯v,Ù·²tzXcºr/ôõ§Lç_GòVÏ$¯ª˜ª¸MéqU7G†‚¾J–ž`PÂ©XqÆ¨¦
$	±Á‡4Ð/
CEHpBqi#›Ã—‹PÄP˜€'0xD0îAƒƒA@(Ûƒ€Ú4%0ˆ˜ïýµ&’A=ä¤ež‡m8è¥=9%.lP |¯¸°Ï²ôÇ…ÃbþZŸCõ6pñ.-»pÐ[»p7*Œ;õˆ®ÂŽ¬ÖÞ¥v<¢ïð„|„²O–·¾2EjÑ(”'Â@Æ Æ\ÐD*RFÂŠÁ˜jL“ˆciÂlVšÆ0²””b©w° o7×:Þì¯Ï¾ÎhSÐAÅ‹²šÃt7ˆ‹A8kŸRÐ–"€å"ßéä¡ƒL|%Ža¸cŽƒ,áK&ÚË"Ê“¼±?ÀiÛt¸æª®›ÝÈ|pLócÞ˜-¥#‘ðÎHÖÒløåæïQž¸‚a6Xì~= h#^«ÒîV®ÚÌìl÷PÇI¨õ‰}¥
0@0#E	Sq¬#N1F4æ	$2N$	’‡*Fã8áˆÅD@¢ð‰^ß½f¾B¡PìÄˆFoÑëvšÁÃôúI$Ôbñ}PìÓˆŽîšbß¤§Åö—v"ÝýäÛ ÝÂíÇÖ4–€QÅ†8b@aŽ€CcpA eÄpÚI(ÇTÇ‘  b±v=U™^—Ê”†hºÛ¥îb~.PE0%œlL°`	&Â îÄ£°J/B¶r}EsTŠÒñøÞhæáI÷×¢„­üb=Î¼’t¤•QfÑî}*Òè„mDñ_ôÍ¼Mù;R'ÜY¤Ù;Ñ[Ìæm¦r,7ˆ;p‚¨¨|=£õVÖßÖ®>ò¬VU¿çø=PZ‚?SãZÞŽÇ<T£Ô|ÓFv£"ïŽ–« 'P6•‚Ì^ªE¤ë¢ÐºÓi]7Øí`·Aê•¥±ƒ)C§bº/ÀšÊ©VP`iHpˆ"…âH"&@&Q"«b„6ø5Ä‰%C CÖàÌ²™e°šex=Pãþ€ìïëÁ¼_Ž¥ÓšU|[i#ˆø°÷
Â´“-…Ö`¨,²Ü¶â@}o·yzÃ]d¶¨µÑÐï—îð|½,Ø×Í8ýsç¬Ú°	‡rÏjUËrT¼×Çý"äOßýú{Á…³éÜ™Ký+Ý_ÎOw'øþ0mÉ-¸ÃX"îÛ¿ÉˆÜöæÓtvµšŒÊéß¾Ù{Ç€á:T…yÔÌŸ‚°¨f§H?v-¯ì×ÝŒ¨Í2³šUËìÂ*$‘–ê$&qÄEBDÊT4$q,5a‰ 4AR`%9f¦´–EÅ­Ì.\JW`“„É¼lb-U,ÿW+ñ6°Îf—a™*¬ =V?9Êò|d¾|>¸HÏ/†ÿZb7¿uß.³w‹Iú¯….n£Yo576ƒ;^ŽæÙâüÂeÄku1ÉFÙù­Ó(Ër;œHÚPB¦†©z•f‹<XnŒµ©–“xîlí'úz°Ú5²ð…ÌƒH›)™¹§çÓ–K]fË[Ðe†¹˜ÚHEY’è™°Mnl §Ÿƒ©ž¹F&J»ù$‹‰²Kç&zò EËSê@xUæ†á;ÊZVa3”Q^!4”ám=«MÃËèÚ vÖˆ­—cºË0,®·9ÔŸ^?Âd§Ü9óµT®:YHq2¬]–Åê°fÕcV×ž9Lu»½ ì=‡;ìþ¿Á;n[¢²&P•2—ë«s™î[—Ìåyí÷ö©+÷q4:ê+¡éCIcó—
ªxÌã˜+›”<fˆSC5ª8—°0ÑIó(	H”Æ±'JúDI÷)©3íPRÊ;±…mI¡!€[””!°%õ—HÝ;-í$™:-í …*ÓRý”DµA0tR¢zJ1H?ºéŸ6çÑ‘ÏB¥ÕËóò®Ž˜êDk’D†MS*¢ˆ…!TŠk-DÄ‘H*Æ°ŽÉÄÜÐ[­%Öÿ…F6{b3Úå\ëh·äø¦³ËæOKn–}ØüÛK÷îº8³‚N©Øaà`éaRÈwR÷Ñ#¾e+`ˆš¸ÒR‹cÔÒ«åÃ»ÏD²šìÖ4{'Ž&ëpE­ÈMYíczø‚7¶¿˜å™—Ñi·öõùètçzvåg1Û¢}çÔzÒTöàç@Ò¢§õöyòé¡U«î»U³.õM
tZ69ŒÌÛfnf}FÉV­æJN&úèó/Žw¿V·Þï£«­VûÚ;´$×7S9÷È´°}WŽ~))µy®O:$×C‹!™+uÊñ˜æ[lYqeN9ž¢õ¹G8²u1›ôôË‡÷È03ä7‰#U£g¢C-V/ú¬&!'áãH=ÿf?j¶ŠkÂOä <}†C ©o£ÁL§F›Ì¡f·ˆ©Iàõ;‡ëoÈ×Ç(–0Ö!Ž„#™ ¡$2‰ †±Œ"óÁ2(qˆ¸b	:Ž™d‰°)\ª®O<n{Wìó¸ñÁ(€;ÁbiH ÚŠß =x\ë—Û!<ì—û½r¹¶O\î—ûà¸ÜÎ§ö^¸ÜN3G¿½|rð½§Û†ïm9¶|¢­à–£*qÂ'X‰öõ°Z³ŸmËïðÆk[¹seæeh~Çó¾Ùóãüý1Î†²Ì3e­­²Ðþ‰ è¨$Hs¡,µ"aBaÃ¢1¤Í”„G`  ƒ@Cƒj! eL‹ªØˆóÖó+8XÇù¶mP0ÉÌÇW2Éh¤mÖPkn¤²™^×­æ·÷VqÃg·À`o «ê[9>-ÔE©Iš²3×è d6Ñ×Û}<²Y oæ×AÃ·G%Až†:³­VÍ¯Z7#*Æµµ)¾)7Ø[ÓÆê$'ÑŽœ€srXN ÐnÊU‚ çåœ2Š›Â_TÜ5ËG‹ÖÉ®îZ\ íÀÖGd°™ziÒýí±¨hiµOc×#k‚:>€g‡[¼+ÀŸ]¦st>¿ÄÝL‰lîï’»N»Ì8¥¡!AŒÄÄ’q'@µima„OXˆ¡4”!!0áŠD`Q¬ ŠuUtŸ·Ÿÿü¡#÷j[Q«žœ§ÝœõÚÔùg:·µÓâ=f³¹}FW¿»§Ü¬˜™ìÄa+N]¶]TµV¬ÖŽÖ61É¹ÝŒ³Á Èò°+²-ª ¥yí¦ïe
í ŸÞ¾Õí½ÙúÚ”ÖóÂî¤i”V¥iàŒ…hç…¥‚ !¶¼±ÍG„„°ñ•ÝœÏaqÔZš¹­IÝÊÙöÏoEK«£h1‰Íæ=3-Žt²*xŸÍÉibH×S¬{G«^•æV‡¤H»‹yÝË¾Yç£¢Ô¦Â¹kÛÃéhažK””Îó¡ù¹Ó$9A“Çywj-"ó†_Ïä´fÈç:S£…öNHæ[Î;qÙ›·ï=Œ¼
­¢[5”²lF–§síÓd,Çæmö)YÐIŸ’sQ–³Í7Eö’Ì{”÷OçUÈÛ•LOÔ…œØ¤éÍm'= ÐcQ-eÁ—ÇÒnb!ø–[ÇZhY¡6È~ûš·ìƒ·¬â¹Mçjv;-SÃé+—4#úõ¿>~þ
ÏXSûñå{œmSîë4½‰‰91>—á<Í|Kšÿûgñb¤}K7Ñ·´Á/Ó©çU·…­«œq¸ýK'ÉÜ¿ðùÈ¿ì4rÑgü+Ì´ùcæ_~.Ïý[Jê½†s¿“z!gI´øë¯aª-Šû½^è‰GAÓs,çÒ½€ÍES(&žEÊ§àŸòJœ•±•Ði­ÜÁVœj÷Â³z°)gÿññÍÛ¯ì¬6Uçý»Cpãå'Ù<Mnm%R_ÐºÎþ9u”´ÿ›’SÃ×øxW¶Àž&ç¹}nXæRÁg~Ù×ûLþZU©i;çë–h¬	¬†{›ùXz¯ÂŽúN!×j¦-yhÞÃ³O‡V]Ù<Šü_#Ä}ØRìï‚åØP]*ÑnÕÂŽA¤:Õ²Ñ£:VìÜc“±uM §Ž»Î±i+æ2Ÿøp›r–ø|~ùégø|m:Vº˜þû4¯£©½°Åb=ö`ùMÙ,IP¬D°Ã×æ¿£ùC7Ó….µšx˜›|äóÎ®‹­·«ÔxgWCM¯tEµ¦‹~¨l¼;yL¿(óì¿M»_mÔÆÚ½ð¶)ËÿÌÕÑeû¶&hóäõ42Ù—	°¬°æ:µVžBÒƒM÷’¯ÉãÜÇô¤Ð:™Ÿ¯]ºÖ^¦'ÕŠD_>ªD Â„Ê'j®r¥.ãˆIhJ+.%Ð1cÎq%J	S¢%BÁ¡ÐOªÄ»R%î&÷œÂŠ¨Ìæ6d[•È(²‰UËªDF	¤)ÕW¥rÍß«ã¾”‰Ý;N¦LÄ¥Ä[®Â·¯LôŠñsZÅãÝ'­â· U¼´÷+£§-v»Òmsìl«#}k•ô’¾UJ
Jß*­²ÿ”U–žUöu—m*¶©pG©‰¶õ›ž½í(:}k•5žwoÞ3ÒøAÍf—š¼MÍ’*²C•’öÒ¯òZ‰éÛÛ¾6Ó·fI­é[¥¬ßô­³£èô­¶£ñô­¶­úlQkKê_oKê_­¬õ¯URúWÚÕ“ú×ÜQ˜úW,kNýkm«P}ëÍ[^˜=¥jËz­êlÔ¬ž5¶ô­þu6ŠWÿ:+¬gU¬o]kë
eåìÃI2²¯†õªVÒÆz°¬–õ¬²­ŸmSi[Që[³¤ˆm_c¥ºõ«XÖ`v¨²ÖÊz¥
E«ç©Ô·ž ‘ãžþÕ;MYë›/§¬‘õ­SRÍ>øä”ýùl©n¿ã4@=ÓøÀ~‹wïi€çEï™Ø³¤Jn]aK÷|â¤ GñÂoÕáJ;Ý¢üFMí[iW_ýhøý|ðkôÙ~•×ªà¶åwôÛ=jû^ÄJmwçÚÐ÷ÿÕfö•àGH~LÉù¾.üèqžTâß’J¼O°þ^jñ‚†q¬Ã(&HBÌÿhÂ¡Ív#"Ì5‹!#˜	L¨A¬#Åu!R	'Q»@†e€Ú`†»SÐðy¡,¬Xáy)ºá`ÓostÃMHN¡ðuªEœŠp;¶!¦QJJjpL) x¥J÷Ñ‚žÜj;kÂ	%mÃ–bl©™}ˆSõky°UóëÐ…±¯Jÿ>öNÎIÑÞ1Ä»R“C¿Ã°mO. úÔ¶jT_í©—´Ê³•¦³…‚ÓWiè¯ïóUîµÖéù«òZhðÚ)îÚéëZ©éZjçÚ)åZéâÚ¨àZkÞÚ*ÜZéÙZª×|µj-•i-thÞª³³Š2oýXgµ˜¯rËGÇä¯j£j­òÖèøëD:hO~‹[™¯£Ðtùi-fô˜œ„ü<pÝT6ÅŠäÖÚRéùåß†a!6¥¾>~UK‡ÿØ"Ã“†ï9…kÎNû'â¡ö…žGÉÎRÉšõí@`wž,‚Æ\àˆ‡$‘‚Ê$‚BL’JJÊ	—‚) ¸&± FLFaT‘˜hNÉ“Èî„";„|WG]‘Æá®ÈNðž"»'÷•–B;À <	íŽ+´;¾Ê#Ú=ùPx‰ú¾?ŠoÏ¢½{Á“‡Àa‰ã“‡À“‡@½,óÉCà[óheåÿMÑÉþû´om5û¸_;9á¾5›Ù–¶§þF˜ß½ˆ÷T±NaqZ-â=­]ë1ÍZ¨¤×,çÝfr…©”¨X@ÊXQ@dÄc¡¢$"Š"-š3¦q1	cˆ¸ˆa%RÞÿ0·í“»m«pBÉ,ûŠyÅjnñ!Ég1ñ5©Ä8Dt'M	Ä #´[È~D hÌ½s=Ÿl*»çÂŒ´Ïv¶cØÙ¶G¦ðs/içaw—‹ž6ùÅIr,<Ìü¾ƒ?‰y\+ƒ·{¶RºÿˆåOa·;…Ý¾—ÕO¡¦»FŒn4ê“™˜™‡(S¾ÇAÜ…¥WRB$,e$	‡Q&…3 € š…8”"æ@ª¿A!ä00NhÄ)O<ÄaÂ;@)Ì¦5Üâ!À®s‰‡°!ÓvâÉÈ£-!`KÏ¬þ*€»d'NdhqìÄ}D½¼£ˆwcðŽTÞÝt×W÷w'á¶¾§ÀO"ìÑw¸¨CÌ§øèŽùëËúñ>'Q£<(è¾b\Ä‰Œ„’é˜Ð— ŽˆULP¤O¤‚*TLÑ(‘!Ñ¡ŠB-$ŠdT¥J9l0ß9Ú¶£_¯Ù‰méûEüSÍc ˜ØÎÚ
ŠA„´-çõ£/÷E(\Kðý¸¯F‹cYÁ¯7ø‘¹_m?ûÄ"ÞK™ã­œùîõ ½µ;(PîY#rwšƒVÂüÓ9ÎnÎá±î(Ü±½A÷_¹
qïÄ+TŠ0‰˜àH„šE0*‘<+CC"$§1KBL	$)ª!ˆ…T$Ê`^örÈ¥Ð;	bn‡~£€C$Ê ¶üVrŸ”ma.k›í›„¹§ÓE<.˜{27»'©þ=yô<*½€¿Ì½	ç»HÈïÀ£á°÷#
?ýð0øl®†…ÿê2´ÁÝÍà/¶àJB%„SJa©°bXP©ŒAŒp‚Dk‚C	â„rªu˜ ¤dÂ1¨J0ü¾È$ì0®VY äDéÑÈA¸j”]±&6Û°\e'l^á+@øm–\vá_?¿
L{â|¬Häþ ‚d1Qö9Jç·g3ïY5o~]Ø|ÃÑrô7r<éÁÇÅ(×/íÀlãeÛûMŸ[xÓÃå<›:<žgÉüZÎô‹© [¹ËX‰ÝœÁ­0æ#ÉùvÇ1ëËØŠ9(awnY:÷‚CãšÓ<[É§üôÚ1XÞ}~<è½aîým…8o)­.¼Í¸¾ºq}ÝŒ«I>T1:ÚpðÍjÓ¸ð§¢“ :·z/ñ³y	ìªüN…ãˆŒ{ÚóI:ý«´2>o…&lÏ¾Ÿúí^¥½Ç³o¶I¯¨Ö$2žùÄU¼{÷ŽæàwnïN»šr´Ð´³w¯ÎZu2;j|~2dì+ŸîŒcQ¢9'I‚ò(R:D’ÄŠ@	 I¢c 4·šÄ˜£˜EDá'lü­`cÄö°1¨ÀÆ€`¶í~kª‚ÊØ˜a/³ù|è/Ö~BÇ-éQK!w:ö4¥¿˜Ü §y¬0¹«Ýy·õ-rÛ?äDÇw.˜ígs]	l½j·KÕû ì»û™(ß³}wOûìûNëcÞ}b‹é€ù\Ï»¢cxÃ3º’rƒvrB(¤ :áXqF „3!9Šóá¢0a„ P™1£qAÇ€«PT ä—|hà§C™3=Ÿ¥úÊbÝÂpbápïüBÿøüùc`Šüdþ1Tjž©l”WCh³gÁf­
Ìl[5.Gë.¯/Ruaq«³¿Ð©égVîl°ÕÙYÑ`¢å|aöÏà>5Zðk+È¨hÑ`âëlvi¾³"³“3@fú2c¸Íê`”Ÿp-æÏÍ¸ÔÂì×Uy„Y2ˆÍ!Qó¬°.q°»\,¥ä,Ì±1 srngóÇÑ4žrS×ž"‹m$]9KólòÜM5K‚_M1ÓØüÂ­hÝ,w…u0Ê~5pë°úÎÌm9@½ÜÌ|ä£ìÚnÌÂÂàhä¬c&ÚñùóA¾˜N³ÙÜíîÇYvs»jîùr`,fËõ;9Ûp>Yl³ö>U1ÂœxŽ1(1‚‡ÔE@?Äp›Ðp[XŽDH	)KËQ0m˜~îBüÙû:,njÀZ¶à¿õ‡ÿ/KfJ/ÞMæz6±ÏÉý9÷Eþ˜bÖ2Od.«Ùºgæ¤˜7½îÉ_E>7Ã®Ü•Ïn²/bÖ•1]±GÓšãPÓjæÁ²ù…×°,ÙÄW,oß0$™73²U©žO˜,æ#Ç(`o«”rC˜>¿ÿôõõ‡=X™ù&Š?Ÿž‹`èÞT©ÆÛo?¼±é·»Wõii<A­LvÖåß½þ}-Ø5mv:\º%õìÍ¼{óQ«@äå?¿ùüùý›¯ž©Ú§¹3Å¢ž-iÜ†íÙ”ÿí·w¯ý÷ö!yù®õ\9:9S›×Án2ì/÷È€}‘¥yWÀMÏè\>˜¨Ü–ê0$ê$Q!àš $9u(4P„	DE*Ìß1Ž•@ˆ”–ˆSB+àö»±}¤òüã¿¼û”¦EÒvŠKf“+#‹neðëO¯Bälžmˆõ³ÁÀIW‹a@¦…Æåž’<_è<wßÏÒó‹ùÚod~i»ØïÖâÇeÏgÁ»$˜¬j[ài„O-˜VàÓ44p[wf.¢Eäy6Z8 sf°°›ÎÏï^ÒûÜÂ×¢´É[Å•x÷ñŠd›ƒ—ë/[s8?9Z-bÏ¥óÿwo kZe‘Ñ2Ze0‚òÃh5tÛ*$ÐVØBl”^Û…º£>D*:R½AõÞD{¦ykxºv,µh­âí9Œ mkGmÌOV6ú@Ð¤%!.¦æ‰ÓC9²¹W:÷é¡¶þC CþÖ îäOFG;#(ÿž0±‰ò»÷Ú^‡=ê¿$«çö&ÿ[	
¤¼*¸Çqo¸`Wj2L2ûÏI!Cˆ*c†“ªÄ€¨’‰&@Æâ(& â4!©3H)bHq™DIU0µ·Éê›¹¡¶†NdçË¬{vž†ÈÖÊàJ…C.sK.“|dîClH!÷qš$zf±ÁÄÊÕä(™×raË>DúÊÅ}»=aƒÚ¶é+ñ²×´©ó-'WGj‹ôçéÒXiÇÆÈÐBgF¤í÷äUR0û^™M˜7t\g«N­:mÕév‡[­wx¼ìC{!g—mù¸6£gë¡Á–¯W‚ I¿cFxa¬i’†!K „†å‘@…1…@AB	2Rk…¨¬Šòó°›g'IRe@¼Ýþ¥gÕ¯Ö«UÌµÍ®s'³7•µ€±N™+}€ã{+ewOÙJ$nø¤Ür#i>Prj5K»º±ã4Ì/#Ë¿<û#ý)µŸü8ZhóLÎ/~X1ùóà·O?ZŸQscóçË{Œåä6ÈœŽ¢¸ùY¼3¬S!bÏƒ8ûËÜnËw­Ç¸B¡(ÎCî[ØŒwæ¦Lbó6›)X[!ËÕÍ/²EnlÔƒéäÂÌÊ`š]ëY²íêAœ_«aæÔ…yÒóéHÞÚNâY¿ç®ßeÉLKÃ[­Ú`¼ÍÓé¨´Àö¬ê¹íÀ,Rì¸ÃçŽ5\#=®R}mzµêëž|~õ1(rb=ryUèf¬·®¹ana–ª Bñs-ó#G† ¹½±èJÏôêÝOŸžÛ_ÜT¬"Ç2À¿š/ÑÅ²›Ó{ä®NcGnAšÛ"MÒ„‡I“€À	-'Á(F¸¬©0Ÿp(HyZpènÿvàïìmæð\{§s5ËÜÒ>©äAþ¬¹—ËmŽÒÒp®®¢•’ZaxmëëB›¦M‡Î•òf<ª­iŽo!|™=+ñE:MÒ›.¯&ñÙ\MãÅxz65¯^—6n†Ô>(ÝªÚ¿ô°x²œvwÖ­s"¤ÒCóÆv¬o	ÄTëËnÕÍC63ýw¬|“ÊáÕuÇ™V´¹[õqªf™¹8y>4Ô ;ïÖŠ¡¿öQÌ¢B Ù¹‘y§ã3´gwÒqì3JØ­n>É„Êªs}9Ÿe“Ô ©5¯nâ*Ír´Â>µ¢ˆÕKs—7áÐúëdVÍ-wZ,’²ÙÐü3šÛ;Öõ’“ÿœÓW±µQmUùÏùWOË­½jÞ[MÍ·‹´å×5ZðƒÅc§²ew»[õúq–NæŸ
äÝ²ßýª­zþ#Ï*nÙéV-ÿþîÎü¶K´‡ni‹ïÆ^WÞn1Ž£5ñ¨ÈŒ‹€ïèË5ÜŸ¾– ¦â¹îÔßvµ¶>×zÝ©×ª[KEŸlTÞ õ6&!¶Ö¼XQß°#×¹Êb­ò6Qe®sk˜ik„GOê¯ëXóxj”dÜÄçC—âûJû‘GLŒõÄÎç—^ð¯ùv·;}ìªO6ÒÃú“òê·‹q!$–$4ÀæžÑ…qÂYL† h¥¥R2®fXk.©V@DZ &Ry4!äá,4Ým.â‘•CFÌÎ:x:Zœ›ï“Ú8Soéâ—Ík‰æƒ’V…{Ò*xØPRÆ1Þ	“Ì1ÂT*ûÚaÄCÒ‰¢|Ä¶9¾!(îGdÕÍhá4"+BÊ:øÔm“ªÓ‚ØxÓ˜;'[­ÖE´8%·ÙÂD¢…›Þo5,¾’fdåÎÕìv:/ŸIÃpüú_?,ÅÚ0íxcÝ.f½M.©›oæêµ(úlõ—éãÃ»ÏM½Ì"êÓÃªØ3û›WË jÈŠ/óØÍ×Óž'kÇUuäÁ<¹ †bœzÜÉ<¿°¥ê‚w–J=3ÛñéÓ?¾’¯ôkÓ6¤Þ ýÿ6ÍšûmùðÚ«âöÍsg×KhÞü$`4×ãx¸ˆõ•GñƒˆÞÃ¾i©ÍþYõJÑ’Uð8[SÂªDL©š:Nçõ%Æzv®ŠŒãÈÌ#]ÕÆà‰xz9¯-q½ÃEìÑN\?×H\SÀ5¡†•™Ÿ–¡¹»Š8a"á!fŠbJ™äT&*’êXbm°µŒ1‹ŽB
x4 
•ÈXÂ(âO,7K"_<äÂÝ Ø!†Öà—Xš#F=L°«Yš'=|+¦F´UÄc2µ»b|îAÍvZÆÇs;6·>¥Äàt¨Râ‰šæ®=)·9¢.uv¸(¿Ö\RÛò%®êêµÚìô·®åj­nZr\¾ÅWLUËâ[<Ø‘õ)<Ù1÷Àšù{ <qhß‡–Åé¸GH+Ç.
nt2–æ3Gq081	Ta Š —Z(U¬QjÅ4‰C™h(NV|¹bªÇT½zýâõï¯m”³'ÖJÛ€§ó™×XÀÛqs&åTEÎñGÍ´ùÃÚz;+hÇY;øW¯m|[qàl¸ŠÐ2Îb|ãáÍœ½y–˜âË¹H0Éb4º]Û±œ%ø0·!íl‚¤¥5zÄòbaÚÚ a.ÖŒžÍÌ VÎE'eU<»Lçu\ CÀðj¨/†rÁAˆÇ‹Á„’]CNÊJ­Ð-Æ®û°8‹CÜ6dä‘!mE‹yéÆï"¹žJ³UìÇÎ¬û²€ÈlH[Ü¸8É‡ø™pÍÏ ¸fgj¨R|UÓØ&€#t~G5ü–=¡\?[ÕÍyFˆ©jö¡ùôvvæõôâµéz|¡Ë¦ì1YÍ;ý8Ë
ÖÌ··E.kóbµ;¤Ë½Ð#J	Ú³Ôêa–³÷|”\þú?ïß~>š{*œ¨WÃ­ƒ³úÊ"Z_·ìõ kñ¤áÆu¾Ûˆ;ø½»¶=ÏUžösîÎ’uKÚÏÀZ EÚ¡D*""†8F‘&šEQDC­•ÆD‘„B€"Ž&ŒèÈ’A"˜â‰@œW^üCGÁ/S=	~Ê2ûÉ-E`Ú* x<<TóÙ¿üôÓ®8A¬ŸõÁÓ7iî`£-˜Õ(â¦«p4ÖƒoV ¾"!¦mÄ@}U„ ßÄüq–ÍGi GçÙÌ41¶aË­Ï`jÇ:˜.fÓ¬pèbÏ˜ÞÐÒï1p¾è¶ê
‹Æ ÎÕf'™u´A¡Lo¦Œ™á`¥sÈm÷c-ÇÊWŸ>ÿŸ->L¤ÒÁl1:%êÌì<7“\D6jÍ‹säýÅòÖAP¸A!ááôŒRF¶ÔFaXvR·Ž^€vLCwÊ‡¤•-Õ#
T¾7Ç#(Úú¥[‘¾‡eñ2—}°xZê• ¶F¬U›âzâUÜ•­§â_¾êÆ|RýT6ÚfšyGîiY­SýeW‹Ô$?Qªsšï ŸK}v•@Ô ¼#ÁASg 1¡Ø`.9Á2Ñ‘à"H¡L‚€„R
¤9W˜B	„ÂZ)e(Pê	@| í~Ø8›A±å†!Â- A¦h üXß5„€ ´XU@_ƒ‚],Ñ¦^Tx™#œ]4Š±N.<Wmfœ,;wG§ÍVç‘²ù2Vô	ë‘¹îø×máB§CG©º§3×â,/†ùEz.Û‰8@šÉ(NBIC‰–*a	 Öè‡11Å!¢P«PVH	O°U€‘W6Áš¯.Ò‰ÎWy+EÚëYfÅ?U äe0Ñ×Á'K¦?™j†RÿÇ?]3‡­ý{ü›k¯¨ð“!}6BÐ¿ŠœEº‹Z&s³oÁÛÿXÓ­`š¥v\Ï1
þaPÎùèvz‘ÿpZ3F=ù—Ó[éI:‰µ!ZçéÿûÁžˆèô™žüP‹0ÝÃWX52ÆÂí°BBEY£e>a0lÄ{‡vèNßpëÜµƒ÷òÓ{.³Yàò#
J}£´[òü1Èó[›þQóHØ2©ð*:íÞ 2’Õ>+{²­>û»-ö¿¤¬{eËkÓ9”ÖÆÞ)œø¼ò-xëY0òuTÌ§\°6ìL¹`ê]Ðw}¢ÚH;å‚µÑaÊ¾¤¼ú®¤ºð.X®§\2ó-8óîÜw)Uî{qÔÂ· ï}P¾÷!öÝÅØwum§rAßS®}7Qûn®…¢å‚¾;“ø^nƒ|Kþé[Ðw}ßç"Yx—ô=hç±oAßõ9÷=?ç¾·æÂw!/|—çÂû¸ð=’¾G2õ½Ú©ïÖ¤¾o@êKÓÚx{å‚¾[“ú¾õìh©àŸ¾ëø§ï9»ôÆ^—¾ÏÊ¥ïcqé»â—¾÷ðÒwk.Ã¹ïÅ¹\ø’øKïU¿önÒ÷QùîãÈ÷é¿|KúÞ±‘ïùÞˆ‘ï’}Ç8öE_cßã;žÇ¾bìûfŒ}Whâ{0&¾cû²>f¹ ïŸø.äÄ÷)˜ø¾“Ü»IßK›)ß‚¾ïEæ»5S9z3¿®pmXÝraß½œúá™ïìg¾šù"—™ï¬séûnä¾›žûbœÜ›ÑÉ}/dî=ßW0÷ãØ÷ÅÊÇ¾P#÷~€sï‚¾¯Aþ/ß‚¾/Qî{Ésß–ûÞ‡Ü—Þæ¾gî{$ç¾'­>rs¹ ï^{cÅ¹ïÎÌ}wfîKKæ·¾[³ð]È…/ ¼ò½W™ï¼¯}koáÍµï(o|¿Ûú0õ¥’ùNç¯‹¡ò)ëý ›²sß+ùWók`5R9¹MWZ‚ö5Æ™FûÿÏ£‚ÿOûï«W¡ý7|I´ÿÒŸ^¾±ÿòW»Ïß¼†ÿ³OƒüGâþ¦?¾yuäøO'ip3â_wê`_ÏÓKÍÓÝ¼Âö½TCæC—ˆÇyo7\™JÎü…Õ]Å/–§µ“a®›ö}1I£tÞO÷n½aV«‡@;¥{!™(ÊqI‚¡’q4UšGQ‚CFu¢…,9Ž‘¢„
mJ±„&a¥àä?Íü¯4øÍM0ø1åÔ™õÕÅÒ©ØªÁ¦njÕõyz>Ñ±Í $ƒx!GÃë4ž_Ï »ì¹ù)~DE'v1­©Ýò¸8uû8Ëç›d@édé©•Mä(ÈoÇQ68å¼Ù«ç.ã¬sd-TõÅ‰±ê ±©À]ÊÛ‹5Ls÷ëÀ¦ArM¬Ò °spúý²’??~øxf“'¥¹Ì$.¬óÅÔì±^:[Ìc—ïíÏ¿Ù†\—ƒu—6KQáu[2ZGï•)£M£gf¼´”ÌÛÄ`ÙDð¿ß~|ÿ‚g¦Ê¯ÙØ,õ«¿n£l6“ÎŸöµ¼²Æs9›˜Ièy GgÏm›ƒuŸ#¹nÚå·B ž›M_îö§ÌŒÆu6 gâº.ÿ3•“™ÿ?I»Ä¦ÇM=ûi–F‹y6Ë°ß~Jot<´Ûüïé"¥*ˆÍ˜ÓÉÿ	J»_ ¬Ç\ñ™]©µ…5Ù°Ó·	ƒßÅÚº9O/R•Ï~#o þþô’º.ËE[EßÜ˜rðå³ß0±µÈëM­h”)ë×löÞÜÂéH*·!ƒ‹ôübhh“KiU˜sµ¶(2øyu ?Ùd[rföùG›ÔŒÍ‚ÒÁ³­ùþpü¬å¬œ‡+³	'C;^u!gRÍ­q‰ÅÚøÕŒâðòW©mJ§3óñh$Ípž‹ÅÉ²QìQºÖQžš$ÍùÞµÙŒ,Ïø×Wfó¯o~¾k‹•z#¶g¤²Ê¬»›ö3F·mTÌ&sÁYÉFÅ|Úèv½ó´;_d0,^ç¶O`b^¸à}­©ñ‹/MF)Ó©bd¤»š¶Ö.FÿLÉ´ŒÌUB¤÷i!âË-I_)•¿Í‰/Û)½ýã›±È¿†Ò—O4eSo;‘ã›Ç˜ãûÕß–Æ—YŒ¼uº§0Ïñ=œþv<³Ú4oå’Ç·ø‰n}'þ8lƒ¼µøOVDoEg¾×Q?&ÕL|·&‘¾}'¾TüÉ(ª¡à¹ïæø[OyÛÜ§•ï´/¼õŸ¾¯À…ï™¼˜x7ùM™]øÞß“ödˆV_ÐwSß-<…ÅšwAÿ’¾güÛ2‚Ë¼û^S_-¶-ëoZwÏfxÞïÑ^ÏÛ°äqXöù’ð‘ï1>­ ôÍ	¬
½»>‰ù¡ï¢}¯í7fÐèKí¿WËGß+öL$³¹ïI›ÊáÔ÷:>ÃË|è-þ6eý§æ{…ÿåÿåm‚tQßC
cRï‚ÞvšÞ2ûToadîËM=“×oûKo6òf´ÞïÕÞÖ <YæÖ<ºen~ëmöêmÃë{ÇæéP{÷nÊz›Óz‹aîÓÜØ÷ ß§]²·}÷	˜}÷ÐßÒÙw!ýM¢})Ù•/Ãw¯FÖÒ÷?sì[ßE¿õä·fà]XÕÛµjŠÈö5¸K“á¦¿M:¤ý¥,x«i‹v¿šÅ¡f'éŠ™ÄPJE<A4œ&8!œ³DT`ÂˆHH¨•Ž¨²øý4ü 'f¾6°åðU9ÍÌÚÐ¬Úòw«|º*ïÒÊŒm«éä|PìB¾Œ×i#…~²vºJçÁ¦gkô;ÏT6:yöÏlª'n›ó¾àp'ïáá˜™ØÖØ²@äŒÁrÈL.oŒµ<].&Š–A3üôú±dû<4ÑÞ…˜–…«qÔ½TW¶¶=Ÿ”•ív •9Ë5£s¹CíÁoGÒUøªlÀÊy›ŒuËzf@ËÊ_çfßr›Ê»ûõM­)Ó+tûäp×¹6÷f>>ŸÕe®°cîã`rƒÃ»’|ÆÎ%]åiGgT’&Š+¬#.Â8FŒGDp†0–&ÐÐŸ˜qfFÉ#¬‰¡PQm~«’S¼ûñC`*ˆæGB1N­	½/FrnÈ…%ÖâKðGj¦ëà“#õN'n¡VÙÏ{^¬›ÉuÑ@:9Ô`p}‘ª‹e¿:Ø"RÍf,£,»´Æùríó °;²Á§u\Ä«¶Fþ‰é^—«ågÁrpr”gæÇ(»ÎƒÛlá‚_ëÑD;O—¢§}'ƒùzRÅ$ÎƒwMÙ|eÆ:Luš¸V'ºðC‘ÊÕÜß6º"ºË~j×éˆqRúëÆV¼ífÃÏõ™YˆzLÈ¦! ø0T€ÀÕC@	(‘aóI‘h Äëu7iïƒo¥_s`Ì¬Öéˆr1é­	÷Î½&kI’K—èYÝ{^.W+Óêå<«eøÖûZG˜«Ïú}H~uËw’Km5ôÒrJq:ëV©–ÆÚ¤E<è/òÚç¾ÅÇ‹V­ÏÛ”Þ¤…†Þðh»Î/ßüüéÓû¯Ðü×3ÞvžÚõXªÐ¡»UæxßÞ6åÛåŽó†eîþxÜ™6À®UÚ_ë-lí‹Bx0¿8‹‹×¿ßí|ßßÉ‘œÿÜËâë8ŒÎøÙ:‹ž8+rµµ6>#”üñX)%‰?ì‹4BDCCrEŒ¨õ…WD † “$J©à+1•Q¨CÅX”ºöý‡¼’Á—Oï?[”f±I6«†t_ìº,s…l×)à¡å ìZ[HóåÃû`“#5„.øÇçïŸlŠáç6&tfÓl«œ›¾fÖ×zu]Rü*øU[tgèVAq¶K3ŠàóªÛâóà™Zárêð¥éà£98Á{CvËŸ}±ÿàúQr2ˆt×¯œÌ÷¹Å©Ë¬¼fÖSÔú1›?Ü,œãt±ÃS²˜Ôñž«ÙÍ8“æë]'*	P‘!ó˜f>‚¡X;[î„Ænã4í Çeœ)‡¬)GÙê"ÝÖß…‘Å—3~u?Äq'×jEúçÖÅŒ·ÃwÊ›é×õMþjïaÍã>¾2èÎNéïæN¤rdNÒ¬AªÂksrjðïÓlü÷#µê~³­þƒËòóô™9>«»Üˆ{-ŽH8Îþ¬ÎosþäïnàõŸ†Òí}ŠÕP®FKQu"Æ£¡œ¦ùßW¿Ô
Îv÷G›‹][£(a×ýˆÊ’-€ì–_œ‘µ|¶ŒŽ£Æ*äI3(°$Q$âˆiLt­ˆ:„JÄ K( Œ¡–’(N$ÄU`æU61ï»ÍÝ£—)ÑRy:w1lš²ljHæ;3÷ÑÕrq–´}ôÄRûÉb"_4´ì¤Z™®6ÝŠnž/!ÅÌŠºVZ”UÆ¶çŽ„åÙxþL¯‚aÖ»ti¹ýjj.±ErTêzŽE•fŸ,&ª@I¶ýµâg5Î±¼,"¡ÌäuyTc;ÊE.£‘>>mFµK!/[wéDÇÃ<]b)š7q’Í=š¥ªÈÙ6›Û)Ä}ëÞ÷²¬p!¯´…6:†ÜaêDZOVý¸(,_ÌN¨Tt–Ì´^Ê)
Š^#ù¢`7 ‚‡%_íflCœoiŸÌ}B¯å‰º›7,îÜÝ&}]ŠhßL®ÒY6±'ñÅûÕÉ8]
·Ãï¯ŽÂ¬}&ØÕXšr‹®ÊÕGç:ü‚Ö6è“«µºá^éÔìi˜vu¨‘¶ùjhúP7›g‹sóŽøÍ9£˜iòÐ\y†¨¡wšF\&	åš".èX‘…"z¢nOÔíþ©Û^BsHÂ
êfõú[ÔM@°%,©h|äï8#ioúÖM±s*úFY?úæ#„>-¡kPØœ˜ÐùÌ¿Å;AêÉõaJÇ¦HÖ.l÷`ˆ â‰dHb(Àˆj	q”Ä jÍNŒ#¤TÌc!XÄÒ¸‚ö}ÌÜëžÉÏƒ/ïìäuùòéb\üµ¦
-há—W?›ÕÚ£†öIO2k`Iì’ªý}`Z®ÆßƒV#{X/<Þã_DÿùŽõBŒ•3L"ð}áÝÊ-»ð21ýùýÙ÷OHMÚjñ—/½‹}”€Çƒ\”ö}ŽCÏg¾hµ-WI9Ÿ[ñá(.’hú¨Û·+Ô¾öv†ùÅ¸iy[0•'çÁÈ’¢.œXKb¤’0–PIÁ8¡’+–0¨ubÞB¥ 1X•#…±ŽÌ‰  Š# “*“ì'btb´—òXAŒ¦Ø±"(Ü"F”x³ûÏñcã9úÉÔNAŽ(=ÉQÎãät©òØè’§™Qk®ðî˜(èa&Þƒt]êÛüv¼—B =ÅÛ‘.Àd$	UšÊ$L„JbÃT©„$SÜÐ*šÄ†Ù
Ãˆ%2<Á€8”a•qýK`ff…jæþZ#K#Ì'VÌ•²¶bF¨×rÉZÑ¯e¿µ,kž½pæ:«1?,bÆ÷8+~˜˜AÆw4C…!/3ƒP`“_Òîi]>çü»ã­Í¿79!ï&G[ŽÆWU´*ïKk¸/%[¶Û–Çâƒ–=>v¨‚¦taˆZRŽ@XrëŒª±"$NX‚!*‚& D %BL$€ÁDÑHK¥¸	uˆ’'ªrŸTEì±H Šª¸oÃ²St‹ªÐFo×ÚWõûb’NDWP7ûƒ2]iÅ(ÝiÁ,=&sb.æ€×ÆQIÎÌfÂšõ1öÃgaGsˆDÅ‰ŠC1VŠŒ¥Í‘œJ%DEã$8µ9UŒtbŸ,E¹ô0‡ØHÛVnª¿º	oì<(ÌfZ™Mµ¿íÆô ¨Û³fÃ ¦.¡ b×= Üqâ$ÞÚ ÍúÝ)ûÛªÖ ¿(u¤1ÅˆÖB/ýÐfõàðSâÛ¶SÕÇÃ%3Ë)ú©‹ÓSMüùžî4ˆD˜s¡ À!¢à!Œ"ŽÍ )¦1fÔ<}XS¢…šHL!NâDEì‰Ý	Bûr3ZAƒ0 ;	 nÓ NÕûû}q9Ÿ
µâvî52=›=,Ïi>×ãîºž•ÓDí¨&:A€(C¢"¸¤*†‘bjE%Ilµ¤	ÖfA@@h„	¤€êª>¯œý²“qÑj†.æ›yþ/ôhjþY‘.â¸ë±2×’DéëñÅßƒ³ùÅÒ®ºz\µzóÇ‡œ¹ª©RjÜªî»W¯^}xX¤ì’6Rá)·…w!´lß`ø/Ø”(·tžÔ
‹Cù]±U»sïMÈ»©‚ìé·¯j~wÝiw¡Ü|Ñõ¸IÚvèQjjÓWUt¸í‡KÔÛ´OŽÚ¨‰º$
“8<1(Ä,	#Á€ã–8e”˜‹k€ŒÍS&€N8Š†<LÔAzøißàãÃ		´-ï3ô‡—½WÂØ›×Ú}”ÕÏBáø$©+oµ&I-lÀ6´©'vB"å¡nz”DêqZÍÅçÃåû3´‘degY,ßÅvÛ¾bê%)B$5„&ZIž„DáDš¥Šcb‚¤Š²šò„CÙ$‹e¢ã˜±:³o9²Q¢&smýZ‹(Ù6¬§9€ó©¼¬&Sû+\g³ËÜº~ê›iVDµMZ/TC÷^\äe×ÖËIv=	d>(ªçÁÂ	òdp­G£añ­]ëÀ)S‚¢ÂÙëeøEGª²èO­æP-xöÂF*ÕxQÔx±
Øè<tƒå°KCJ'j´ˆuðòã;Gå–Â,Cœ>wÑ^í¬~ûõùk:3‹P§q$ë„Æ¹¡‡çéüb©lüb¹;/ö7¡"faHE%i>âœS|X%F hG		 î„Ìb¨Ñ0}oCw†ËkÐ‚^¾ûñýúÛÝÇïÆµ5M¼w0,NÛroûcªÏ™Pñhy¶íCÐjú¸“¥Ë’5%VQ“…yÍÆÙb2¯)G‹ºXLç:3OŒÞD›zûæ@´)ÚÄVÛØ‘ñmcÀn_DKdÚÄ(µ“nª6åúíÓ›CÂMÏz>A?Õcëíù.{Öýê+õÕßÀi»ÂÛW¯Ìkápu¯>ƒž5‹³9DmDäçif*€VUÌÿ[×)è{ÛjæÙdèúƒí*NÓ©¾6OŒÓµ©77ÔOÆ«´z»¥Ó[÷¤ØYÔéàW3äÚZ?ÜGÀêE´¹Øã-^•legæs`M5–áVkúÀªn)¡ÙŸ¥ôÞŽÕxËƒ;§2<Ÿ_ƒ[i™ÍA&L`
"KÎ‘	 <ÖáÿÏÞ›u¹q#ë¢ïüy÷KÛ§E
óà³î]Km©½Õ-Ûº.w·ú¾h!d-N›IJUýp~û “¬ä”‡ª’]¶lU‘@`HdÄ0’"Ë°³*8l§Ì*FRi8Öˆd8¤Ýž1bõ]å/°ö £¬ÓèX3˜¢ö¨"E‚~ýûŸk0¯’´ÍÅY„T9÷´#ôÿlæÃé´˜¡·…¦óÃO?ÿø&‰5òÅ|iË¹‘äK{rë^Ph®'Ó±\Ý€²3¸² ™'ùÍ4¤ãíU¾½fôciÛV¡ž€¾Q²iz‰à\Ê4½„KÍ÷[åBÖ-•C#Œ7/ŠPºñ¦hï,KìÝµ®ÂW¯rl/ýdûœÐRaaïJZ•\ØÛ³­
ÒX~a/õ®ŠÎÃ—bhTsš—ÀV+¯ÓAD›xä:á-k†ói¿Dy]ôØ±“‚ò`ªÓ× ùÝ§~'|>Î†·é2ëŒàHQ¨žÓbm¸m±#•ŒÀa»)	ÀZ§5’Ð©xMºö|PäQô‚³Ö^›²Ò<ØíB°)õÝp~Bð$–Ç!uæ) 1ê3!AèsáU¨æI4ã:ÍE˜d^R…2e½æÜâT8IB1¦ü Rÿo@Å#p2@Öˆy <Ã
áÍšw’‡k{ø—llL9sfáü]üŒó#®¢C)‹8RÞ»5Ì`ûP cZTds>3ËÑ"Flã<STÆJln<œ§‡šd½ÏÞºË~ùeøiøòjš-¾˜¹¹ujî¹åNÔ$;€¨…ÛQ“’+Z5áã ˜5Þto<Žpà:ÃèEG…é,—Þ†¦÷®ûô*¤k~qr¿Ù˜RÃEñ>¾p{®‰^‚f»‹íý´OGÇ5¨8Ôb‚™¾4K8á1=ÞåtR­µ1§Í÷o¥í)µêyß6œšVW²®Ue-›­x÷I¥«6è`Ó‚¶V¿hG›–Äš‚Ì‰PÖ	ÌJVž¤ŠŽ¹ò!ÃcF¸Ë,%2Eþz¨ºÃ«F{Îõ¼`¼ÓìH‰™ï¡´±s±th”x!÷ÊSô¢¼ó&-/Þh—‡!I§ÓO0ì§"«€ó˜P¨¯äÄÈ'ö&°·Ë¦8—ÐTh·°öþ@Éø–
k-1Û¸÷¦5†ƒnŸÛ @P¿8zÝ$ç9¬OŒ­Ë«¿,]'.éV»ü“¨P¬£“Ø>æÕ$”öñŒf‰×dr:‰pKqº€“òH?iËÎïÐ˜ñ;4H´/Ô¹J»y®Ÿ‚¶¶ÁKÕîÜ÷„Gp&ì³ŽvŒmëvK)Ù ï˜ji 1©w¦™ÈÅÌ(ÊmšNµ¦^JŒ´w–+m	uÊ¢’idÒôPf¥¿˜|h“r;7Ë:´·¡ÐÇjOî+’çÑÑ0æ‰Íã]^RtÉ›ÁªúE†îÕïþÌä.ù+àŽäõ
#­îîÞ'ËÛA¦qh  \WB_²žJ@Q à‚ôŠ©šòÐæ:öfRÌì»ÞÿJølîbÉ;@q°¾Ÿýhí­™„çwWÚ2òÊ„c'<•…?†óÕT—jµÃè0Øë{ºq†ÅVø{×ñb¼Xo$_ÎK£K$Ûhæ\5¡á,ØÜ¼‹#[J,ã`¤ ¹®A²ÌÓqRØ¼œ8,+,i¸ ¸Û\‰sX=Ì0àºÂHœìfÀza«À!Èú‚Y¬JÙ‡Oòð”
kPl¶Õ	µÜì´ÚžøÍpáÇyÙÅÍp”Tÿ¹
×ÈñÓâv8˜ÁŸB¹Ÿùy°8ù~la§ãÙ¾+‰…©õ+E´3édõÍjìqÀ¶ÿü¿K¼p8YŒML:]." Žïwr,r¥«j/9ðÏð~Õ«÷­x&þË=­Õ4‚/ìfÿŸÃ'¦h	½þñË»`œÛ»•{¾’\^\€8%¹ ÙÌ§£H òíª½5‚òûá€—®¼ŠOÖß®ëßî9é—ÔZÂë0‚ÍÞŽ_9TÑv¿Žê¨½:Š¡8AUG¡Xk®è(”`ÔNG	œ¤E?ŠˆUkÚ”·®T+ŽVIvV{²*‚5>Â	7N¤þºx¯è¾¬A,”½*fVsQ\2ÌpxûMc½¨0¬Š¢ªl¼pU™wCÓÈ´Úlðâ†¶74	L²¡I…µ5µ,™ÚixrÖ_L§»x²½_º>ê†'SžD¼"1Ô2C”jÁ;bd%0+G3®+,G,ÓHpÊÉAÆRe:”°æ+ÔmTþÖDôS–+/ÈŸÂúõáõûÃØ²3¡‡q½
&ÔÀ—•Ç·ßã*€o±‘÷,|À}¿!ˆ²-9‚qQa»rC„)Â¼ÙçªœZÔñq÷C_ÍµÐ¾µžìWÅaã»Ê‘r"õrdï+[O°?ÓÂ'
(PÓêD¨ûé,ëb¨X7÷ö/yÿ×(Lüø®äø®-c!öumÖ°¯kËÈ†™5³NåÜì\ç® Öqð¢9¬¸ñÇ0Zo©S2šî<‚<“¢;"¥ÅAù¾n5šþÐÐÊ-Ç³“Àªìú±%2Àø>^‹Š¤ôgÆÙŸ…tÖZÃ:`çUf±QÚjI™KS—9•*¬™Ê8Ëõ.Õ6ÅÚ‡«8é0ãÆIï´r„r üÍ|6É‡ßëJ¶öìÿ—ÙpV²epÙþ¿’q³H00…'þv‘\û‰¿¿b»^ß$3?abý‹^¶ÕPƒŽ?šÉ¢2|¾Ò‡_Á
•U#õ$3ãáè.D¤†2¬ k¯SŠg½²É0¨ÂniËå§?Á,>ûûKä›?½ýöèàqt¿€… tñ!,7³F©Ì Å|
CÄÄW²†GßS¨þ+wwXôÜƒ*>j3Voò»ÒêðÑ °Ùl¬Œ¬Æ)·/ªÿ1‰ß–¿}(ïôÓÛX^6ÆÑövæ÷bkrEÞÕ¶ëR
Èl>\,ü¤b)æÑÛÞ¨Aò×éü~“à ¯'‘âÖÄÜÔ.ÇÅøqò°à¢&.ÌöG3Yš¬»rHL²zúÑ¦ÿìÉØ„­
qÄÓy1~¬Ý[±Ú¼è­Æ(æ^éjÝT­è›WŸöî¶B¯ËE$?Ç»„äÇ©ó£Þ»`Lhò}˜EXú;à>/¯B]ßÑï“_VÑ(åaˆÛ½;doÿaîoÃµraáûæÃÛ"®úÛ=´ÉÛE\RoM¿´'FÈýó««·W‘à÷0êô:O>ÍxsßÓQ|wã¸jëa,èµñäW6¨ô6§òÎºõ³Eyô@É•‘ïü½Û4r@ÌOÂØ½Ixˆ£áŠ]ˆ¼(šÛòÒš–úPÔ9É}´2'ÀCi±W0ù°Úõnôâ¾)½èb|>‹áé{×ñ4(¿‡%míî‹^‘ÆeÌŽóàP Ç3Ää‡Ù®÷¡²eÃòÐüüc2*HK/ƒ†Ú‹añ…Ý;èB—ÍþïÀDŽmgÅ'¤ÿÛ!+šæ‚h‚ÔFÀ‰ÀJÒýyÉ0ÌÒ¾l”‚#QÕ¨T-Š=¯äj¿ýzÑØÁÆöêê_Ax}TGšÍ¬`#¬@Ç=9ÙG tÓ ~3·³…ùxY= ­Ë_6þ<ù¦8¬ß­×]«>•@ªÅïfÓñw§“-è•dÏLîS|æ$Ï<Õñè}<IM^†ê&<Í¯‡1¡JÉYÏqÖÇ³•öŠCýPýòVðÌC>X¬ß@qén ÎºÚ•â,öø"R¢mÂvÔpÇ£¾™ãAŒ?Ô)Íñp…!nÐ¼±eõŽGƒ`xÁƒëÚogj{Þš‘™TÏèÞÌ²¾°ìA€W€jã^Ô™°jKlµô†ÀóZÃCøhš æ56Ãõž ¿Í…¼ûõâ/î8jN9â6«hRlîóÖ¦nßÍ¬‡Yáª»ÉY·.Õü“Œ9Ã‰_¸®w9d½d:À¼\2ac‡¬°Ô;i}&,á©ÈTFR-a”G'ð"E<5bœP¢E†4¦)u‡<¿
:Rð;™ûÙtš¨¸=°\éÁ¤™ñû•'Ða
/¢v-ðë*áYÞsÆƒöUÒ¹Wucê¯ ÐGg„•³ÍªßF”QÏ87­K-x$A+ð8€÷—Ð74´()GÃKôŽmk²è9?^ÖŸfýUƒÅN@¾;µ²à(ì _ƒRøtÆ ®öFÃ1(¯eèÓd9Ný<ºFÁ¤C~µùõÊ¨‡ƒ'wÓe§Ó­•ÑÞz…Á©ü0yû>)×ècpè6/Ö7fó$oà‡ÕöôÂ|†@>dr[Ù°äî"a[‹åýïÂþ$YP4£§ù¢PžÃ…·^l9pkù»ËƒPÝÚhy"÷j¢’sP:Y5C¶¤„Ë «ìÕDC%ÜÍŒ¤T)"½î:4!´ñ®˜`ñj÷‹—ºÃ-ÜjQ§ª˜{R’¾ŽoØ%Î÷-ýd•’
t¤ŸyœÎ^\ÝÈ€÷ÒôêÄ]Ñàlãôê.[Ð}pº‚ŒkÁjŒ
žßÍ]®©Æ]òä~ýK;Ð_ç³xME»wøõí/ï¿ÿS5¬Û/–³æ`î>üý¹}ìw9×±ýeƒô
ATcWŠ* ; vý¤ïÂeIÛÆùbî›[;sdO;Ò«Æ-Iskæ®%é²q;ÒÞÞLÛÑ-Û]ØÙxyÛ/€NcãÖ›V¿c÷·³¥ð<Ïòwé4lb!DŽ¿£`â¨ä]Äx“¦T¢¸FB© ˆ¥RKÓ,K)gŠVñXkLæmˆ?Ï¸õÂ!ÀúÉßË•%oVuº¶€ 3Sçø?¼÷÷·« Ç]
áZbÚ¿wÔo>üý/ß¾èE¿Ä€å§_‚¿ð¨¼™˜¼zÉÈ ¾·H7ëKE“Ày™A×jÚà‹^ƒ|ùòeÇ‰x3òÃj‘ß—gf/"U‚Ž¨® RøLå~c„4'ˆ”ƒ2§%©@R µZ4×ÅÜ:Õýp<K§©¯ÀÕ˜FkÖ|*&uÅ¤ÛÓ©7šîcû Üé®ã\žÍ9–*Ã³Ø[x·¶R§T8nf,ó)eyË$f.é]ò
Ê¨Q˜Ê§^F×&‡¨ÃÆT‚;\ý—k×ÿ+â7Œ´å7˜)±å‰ºá…ÊXãìÞ³õÌlNôJ•pº1xÑV:ðÖÄn™H­:º÷ñž‡‘µÖIWV\XâŠ“žñz:¬êøõœ˜‰jëbãøxÓxéQšøy¼¥’–
ª±°Àƒ™´†zŒ¼÷šg6Cccv)…à{Ïg˜KÇ4OCyÜC¶æ²ÈCpvy‘\½úPDÿöêCM”ÀöF“sá@VDÂ+k&³R7Áªh]rº "ƒ+^€§«hµ`ÈO€ëÝÁ™Î†Ð*d´Z›"I|W8
öÊJùÊ[gk—uÍª~9åvÔzå`%w¼rÈ4°TÇUU[(…#@«¶P†á¹6	„­GÕ/g¿þXï™ÿ~¿LáëäõtÊ×ÏpÜF,ZR²›h©øE¸é˜öïï¤kýv`êM®;û¨6{[´#½{ƒ^ËåQmñ‡½ûÀC.0Ñ@öR›ÐÆ•¥~'¶¦X7ÃµWÁjpùçz°\Pk=bî_©—²nâ²i°ÍËü1¸ÐÇ —úx¨v&šsc«•ŸÇñøjLÄyÀ•¥ÓÔi„`Œb-|°êPÊR›ZÆ|*Dš™“T[ÁLæ’Zg‚XÌˆ:Tó—r¡I¾LËðÅ˜’ì~/c¬æ¾íy|?òËû „—«‡Y|6ÊRFä#”Þ¯c…5ßT‚	U¨Š|0„©Èg5É~ˆx¯?4Ý¡ÏWpºìÇé!r•d®Âé®¦ù]õ—‘Ô6ì¥ÛFÆ7JâƒÎ|õdÛŠÑ]¹ÓlÏO2´ˆT}/Î6)*O¾ÎSšÝF×ø¦F!SøI×^ãQî-Þ–‰¡®{+‰8 +çƒŽNl)è¥Y
,–3ë	KH9£3î©F tFsX+î³T0L¼#‚zàß,#NñC†…weÍçâ\ÅF•ˆ¦ÿŠ‘]Ãë‰	A†ÿµÆøÙ›It/€5þ×}Î¨—·@&¸ºwÉjÈè ÷ýºêôÚ=¾‡ö$‰£…L=WWïb«uÓ/&/€zWä80Éõ4T½™®g?6¿6ˆÂÅÆí­çY,áõðzJå4,ïâl3òŸrWølÅÓU›y‡»™y‡¯¯µ¶d´ÒLmzj	J¸ª©”iÑh®.}¿8¿ýÂ])ù§hŸ>Iôî.ód¹*5éh”!ãÅT¢{M½Ì	ÍšÄÖ>žSG/:RÑú ÃtOJÚ9Z¸QXµ¬™åÚW©!ì~<ŠÕÊS®›Åð|`<!)ã€¢¦ þ=ÝÄà¸^˜Õ­±W>Z4 j³5ñ˜·¥¾ÑÔNê„Œ²m&ƒRÔRúì‚¾}ò¡ãE½t©ÇYÊ”3Ž‰ÌK`'!7G4ã‚IïÌhg‰U*•Š“:ESæA©RøYÔÿ^D=Ûõô€:®9A›wÒc¡ªå3fè8QßÞ)û.ìÂä$aßÆ5ö’R¿1Òe¥þ%\•ï…g×ö[€àèÞ¢mq´ƒðà„Þm;¯Åy×ö[¨á„Þ¤Í\ª´Éù±D’ï8+\Þp •Š!î2Í}Ê±ËÒŒðŒZ¢!V§Îqä¼Ž™á3l$ÍŒq(£Š¤ÐÄOWWI”œÓd6Z^'«Kÿé+ïcÈBã8”Ã®âBßàZPló
:<5aŽ[ëíR*½éÎJˆŒ1W÷U=ˆâ¸…SÁêØ=«îGUå]³ÞKó°ë-Õ÷ÐôÜÂ<Ð|D5¾çš÷u}8csíšZå´m£o€ß|¤!ÒºIÍÞìÐ­5íÔº¶ÆýNkÑ©µìÔZ7·Ù–›w{6²ÍÏmlºE«JÐ†àµ¹ynëf-ívû¦Ç•ç-6è‰Z±ÚX'[š ÚY9‡u²Pd5 ñ¬ðï!ÌINQ™ŒJÎ-ÃŠ{–ZÏmf4µ™ †:.²Ô¦3†.IÉRcÓÌbÜ¡8©g Ø ¶¶æ(,¥Ø€
´ 59 >tVý! ”GtÖ°ƒQç¢XðqŒ;%liW¸¨)h[7/0O·ÖàxD¿£:Ñc:µLð½*è$é¤[wZ!Í¶µà
ÈÙºu=/W¿þ6vmßéÄì¢ÓvÝò.{ûuÙZ;YÝ»ÚH‚µGsè³Ù?‡·¡‚œ–‡·pfÁdiNeF¦Î!Ç9¡ŒHíR®¤0I£|&ŒIw¥˜l\ª¬‡. nyy2È]ÑitWº€Ý'ww‰E[s§Fl«ˆ1QðÙFc0o‹vËsølò<
ïÒ1^¿‚wËokö,›Ÿî–tÑüY¼³qZ¥iZ5ýæç÷o@:¿ûˆáß&+ÌÍ§«‡ÖhÎy6Fý^ŒQ¤õC¤´wÔ8Í”AÎ8*ó†$)Aœ:&±pIÎ‚¯“2’eÌI•rJ*9ÑîPÏ³¼>I^«¶Ö)Í5ÞºžÔT£MyÍiÌµS'¯Ÿ-T­%6eç‘Ø]¬T!ºÇZµ)Ûé…u2üñ^÷ÂýY‰Vâk`AÌ˜.³ì”˜_>`åÒÔy‚~áFh#<ËR¡±æ3Ï<vÈ0A°Ëa"CÞJša­mf‘Q„h¥1¨÷ÚJóDz\1ÚbÉ‡ Á«¤Øš¤Ø›2swü¨_Èü¹ŸÁÎûJi)3	 ¡jf…j¸!)t¨ð6XY**Ur²|·B½Ï¡PºÏ²¡ÝÍáÆ~<…o7G¹¼«cæÿ;z9§~í@]VÆ
¹ºá·2Màä.Î¬ ÝÛòêýÛAïûé$Ô—Z†\/ëåVv Ž‡¡ÀZYÝis.½˜Ú°L„]–€s«Šê¡^Óf-®…kwhlçK;4£žf«
l±ÂÕöÖå®òE¨
v3ôóˆ>,ô­–—?è2{–Ÿ³Ë®´	Yjüzz½ÝéÁâŠ‚vå¾/óðÅT‹£ý4ÂÃuYª^x¤1Ñeâ&Å.ÓpÊ|ë«ÖÉÄ{—§þþÑzßüÒ±Ç•ic÷b,èË²ùÛY™[šOz“é¤¿¹Õðü|G¹€Ê9ˆ{‘…ä’½y…:xóPé9LçÛÞÖ©›»0~|Ê&$†¯œT3Š)‚b;XWœï<Êïzÿ&œÃyé×/I²~IâºbnùâØ]ÃgëYüï21=Y„]ºÈ;Ã j
y6ÃÆ/ò}´ML³Y¤ëÅ[_îüzö£»dãÍ‹y˜Â™ê…Fa)W‹W.
æCüì`â/Ëôp®ðêú~¾UbŒ`€öûo¡ñVD?æ„úÊ·Âõ•éõ£Lè×JƒÑüß¿~ý.Ô2{1¼£¨†7\gmèdxâX… ëN¬/„:rÝô…oC¢™å¤¨aç<(&ý]u¸‡7V%k7L› õcÅ, œmM[O¸™TkètŠš³ì¿'Í<^Ï©ÎpØ=@xÄ!÷ÂoŸ¡Á.›[û]ø«ïoÏgÓcm[±pö*}¡ìfÛÂ$¥{¤…1ij³`¹\™,µT¤L†0ÆRâòQ!;œw,“^sžr¶z•„Ì	Ñe§˜åbU°µÈ½
bl•¢¯Øªš½˜Ÿ:bØÕv [
ÅWïzùâÚÜx@š—-j23×Ë¹§/ãc­·c‘7{¶ºÑØ’wÀ‘Ú’wJi´‘Á†)ÙXÇ$Lª_š¾ìh½Š"ìÏ§Ë¬W³Ù¨¬Ëš¿,Jš\°|ÉîŠO/^Bºæn³¨ã¨‡ÞãÃÔÚ¨ï‡©^6C@ót:ýÔwW— eÕì6Õ´ÊFþ¶ÙLrÃHpÎéÇZ!¬{üSÚÅj÷Õ·¨|ÄÂ	‘\ð†ôóëñ¨û“Ùo)Á«ür¢›ˆ!À”<wÆ0C4Š§)¶ž£{š!cçgN	d¶ S„Ô)ãH2íH¦•3û0øy~\ýPÑevW©"_®¸Uåøq¥ot:wEÁð’œ/lqÐo™Í§ã^ÁF.~Sr[°½:™ÂwîFô~_2ÓmÈM„®FniŽp£DÙ9eýp\úâ‰§?A¢Ô®øtGw­BPI¾3µ¦l›µ¾;Ô‰í0‰“$ÍùÓ‚¯óžÀ‡}º… Ût%RÂñ™DÁ«K¸•K%e
ai-—<ã*3R œ7Ökd¡™Õ$Òs`¾!ÒÛ¬–Éîð»Ã,õý|º˜Z€þÁb5–	<ÔÛ›I,ë²Å3Ë‹æû1>$ÿÂ;ý%) aoÓ¬ùkµÆWQÂö_:SØe¾5¼áªzíŸ {mÌ8Y=ZýxFJût9ëÚÎÄŽæ®{W|úísxÝ`{u2õÌoïÛ»ûÂ_æÃÀ=ŽµÈ\eq$9Œ–4#D ¦…@š[£­U–°Ìbòü)N2K0R[Ã9^„™w.MQJñ!/˜
‡‰+[½1Å«PnI„ƒ—n9ŸMs_ÜUl":Ào%__ÙðÇ&3„g±–‡ï•CÃ–ç/BŸX»*6¦²1¡¼,ÕZ•_DÊåcéÅßÃ%ŠõÅ-Ñt¹µ
‚"\=ÍanIQ «2‹²w4ú—÷R½ðìBÁ×È-€‡†<@ƒ$ùËÝjÜH²²ÞÉ0¦F
7?÷‹íí³j¿ºÆY³¨Ë0ØZ†JÉ6R•«ìsÛƒ Ân&Ú2|´æ¢Å^C‘ýâxpçÂÛUõ‰—’ÿ6sÕU‘"êÂ¸õÀ.œ!#ïñ¼µ˜N{ÝÏ¹Z‘mc&9DþxèZ™Åç>œÉvþÜwÀêîÚ6öŸÿÜ¶q–vhÊ£Ô™d6†€ÑgË:ÌFûñ6Ó/‚ù¶m—ÉtùÙ›eÛæÿsÛzòŸYû¦>7­ÛŽÃ;Ý¶õJÉe4’âøí9«c=†£jÁi–	Î9ET"“*D½Aa1åRc!ÉˆG B:„¿L¤J‰•úCµà>LKÈ ËJÂ{9-E[Mš¿5ÌØîó¨j…Ò|£”[ü°×`…¶Å g’êjÞ<@^ ©´‡ñtô‹Ç\V6û*âq>®µûpºHìœ‘gGjÔi^ÍV„[¹þàx±^ÞzÓº›7ÔgØÕrR¤>ÎáM']\.¯‡Õ¶ÍgvX8öt‰¢]‚(î2È}ûwoÿò×oþù«6aÔí=B‹ÒÎ}“¿1“|hûèÛºÇPëFP¡ym8s„ÕÒkŠ;Úò*Ý‰Ñ>»ÌŒ8ìø;yº”…Qw¸1ÞÐÌ9øB*$œr‚)™	a²,3•YA·8+%HR®N­Ò„á,ãî 1o%6ãÊ:ÎÝ^OÀ"Gå¶	òt¯è$1µ¤„WsËªi««ŽÒº´üã?ªèÜ·gP(iÇd&{©Ú«ñ/iKÚí®ßŽq1úÕðü†¼g;…—fùQ›>–åƒPBƒ.éh\]ˆª,³F ‡gÊšgFzi$CÄÛŒÄ@7âÞcžYjÕ–iÿxÐ«´hâøqaITÑ;püÝ^OãëmŽ/ÙËñ¹¢[u¯¥"¸ª*IÍ›Kî~ñ¤û`ãáÞ8Ù§Šë®¡{laµU/÷¿¡-I·a÷‡‡¸¤Æ§×%®Ò˜ë›F}¢e,ßâhÍå²šNœØY¤â¡Âáû´–µt-t¸œ½¼ù¼šUÅª¤3MóéÈ/Ú¾ž«]]OõÝ¯{¶S­íu®Ü[Æäeîë©ê5Õ­÷qcç@}øÏ™TèJ"—L*ÅA[¤ž1-½M½±T[{NJ,}Ð=MiF(aY*áÉüÁëÙÃ"‰+ÎbüU¹Iƒã`Å©èÊý€C»@CìDò-£¬¤²êD§ëp?¹q’6Eìƒ¦z}ÿP^I$†>ÿŠáëìû±åU'ÕFüwAÅc¾ l)h“øåàåD¾Ë¨xû™ôC(zÙ Ã	™®-WÜs—	‘/¦ˆX­óÄ
‰0Gp`I9ðj%1<•îEïwÏ¦q[}H&T›nïŒWÇ¦X'üý1jÖ1¶æ÷Æ¨AË|jŒ::«ýÂ×ˆ¿#‡N³,>¥â‘å1Ê“”¸Œyl:M	µ>ÅYá½ÁÜ§Þ¥6CpŸ&×Õùòe·×S`½;â%Þï½Gà‹M„L‘Ò´Â{)VíâL6ÎG?>è¯ÙwúÕËîFœ!«¦>åâ¥ð3«½Ùûz¶¤ÜîÚåÀÏ—.OíÒ%:k0Ñz ñê~êAÁÞÑx‚Q(5)“ÎiÇ•‰m…Êd¸„×[™9LœáØSÂA
h%A Hf´OÕœ[óüÀ%Fyþn¯GöU£x´ÜðU£T®/iwËÂq¾•x‘ÊÝ¸s'‚vCÝñ¼ôW¾¿õÐ8sò¹iØ“Ó£Ý%BÝp’x~?|þñûÆË»~Çµà·ù¥o9L;£H›á.y»¼ kÓƒ¡e‹ìÉmIá;×"wrð°‹{Ù‚b›ÔÎãMñÓ”MyÓ÷®¡íðvl&}Ü¦iëÚl4ZÏz_§¦ö{;5ÕxÛÛ©¹4Üúî˜«ºú>p’C\i±·¡iÈÇÐ&Wvóû1›Ž>Ï’#â±\·=¢»µ·£ž½QfÁ‚¦ ªsÃ%LA´á&ÍxÊ‘sD‹2G¹Î´°œ3N2,„È¤ÅÔüÐ›d;è(êK(Þ
`&˜qØæ*zÃLÊn4Hå«Ôá¿ü&Ø©ø­UºíGrFÓ§äZ:Ã¬]Ûæ]žVãµo^{—Hþ½ÿÈ€_0c^®`Ú~àÖze‡Ü“r¾Úvm“›W^û>­›ÿQ1ß„Ç¬B~¿¢!úØ¸RÄœ°„pë-RÄeN)Iõ©ÓÒ!«±’žx”æÓ.•T‡
jVz$|†‰ÐMˆoµ¶–Ó¯Š$aC»y[¾/ÁMñäËÒ+1ßw1Ò‹^^ Ž˜ã<$”ð±Ë£bF%`¯úAÁG ÑþŒÌ³-?(®f¼È©ó1ï;eýâ¸<R|êƒT[i^öÉ÷:uõ€ZMä#ÌªeYÍý‰jïjös‚öÔÛÝ;J~71ðú5eÿ¹§NLnnë¾{žÁM–H$JÓ¶»Ú„ÍÛŸÞÿã×h€IÛ(‡°S	è	„Ý: ´t ?Ôû´î-ñàÞ-!ÞÞ-KóèÝ_^8>@àÙó¿#mpÒßb çtÒ/ÓÈtE­÷æÓlCêØ­3/„0Ž,¥±\xÁ¤õÄQlxj33\{,™`ŽÊRIå2jQFäÁT¸+ÜZ.nÃêaèOÿ|ûú-ÀÔ¹™ÝÀsH ŽÍBÉ6†Ì}DŸ€óßIœ®è¤)HÐ-ï#ÒØWˆFhs¥=©_œˆ²:Þ6þûÀnœŒX™—{“FínÍotkòuð³Í0L…–ÓBm¯„;˜Ë-êÒí95Ê÷ØúŸÛ£ïüàˆVoîhõ±©´Øi›
©-ÅŠCµÑFòe©wYÒ¡ „lÊ¤dX±,\J*SÌœæMÒ–Õù–o»ÏãÚk¤àD«jöwøˆ¥÷')Æˆ‘$Åac7r3†;ÝðÁ–ôãcîã¯8›Øéwz;ûp²0Ô¼k±û”ˆµ’ý¯f+Âí,0‡¸¤ |–&'I“•oÝH”ÉN'ôØ8Œ=—QžjÇµÆ„:'RMTæ‘¤¡¡WTHª©u’;N”ô™öÎB2×0«ê,M¶û<5k'ÝŠâl	·F¸¦eÖ…âD	ìGÌ)õUGxœ.I¶·áôÄZ
u°ÛI˜Ûòê¨è Û6¥ÖslÇWÂÛ}nŽ÷d÷ÁŽA|B )1·”+ahšZøx7³Yj¼ÁÈq`÷R„ïD*43TÉÔ¥ÖeÒ	Õè–Õ»owºlÂvü]ìf¹ûã9(Öd+†i^-·›-»ñwØ‘~|Ì}ú‡fðÛûp2‡¿e?ŽÃ‡<çµ¾t{_Ív„Û9ëà	ðøÕzJþüenf3?–
¤BLtFz: ëJ;ªc¢Eb&8cõÌ1ï¥æ©÷A<Ã„qž¦†ê#îI‘M9B8¡H±fÔWÖ]4ìv{Ø_ìTgQtmZMøÖÖ4&ç­’ˆè”©Ø”~ñ¸ûêë§_¯ìÛŠÓ½ØIQÞe}‹:Ÿ˜/j[Ú­RÔãÂ·*]n4nM,üT)¨¾‡K«pC´º jI¯õ$ž5˜ceU,Ìr‚}JëäJ„p©w&cÄ¦>\xX©¤²6sÜwDg"EÊK)‘D",Æ(c–ØF&.¬sNàÝ^ÑÁà_ñã…IG-¯ÞÚiUâ-§UI9Þ¯Ö€˜“[— HuUá²_t¨Ô¸:7ýâ tv[=W™õ§"¿ölÆÉ1MBtUqbYï¢ÐR½yiï;Û,µ.Mº¥qìÀŽlê¦äoÚ»µ»Ç¦Sœ3×^œ>1ÄÝWÞû¡õË ‚ß‰ƒbiŸ´õPÜÃÞís¢VÁC¦Æ1°q=ÿÏ:ìÂ¢ñ‹3A­Gúˆ$%i–bÍ3…%‘ñŒÈÌ1ËSê@w&©—$%ar™AÎ9,®FÊÌ$)Ï™$#Šð E]S_ _B8¨;ñ£F˜Ò•RˆÀ‰È¥÷öêõgê‚Ï@²ˆIŠÝ^#šämVÐôîE¤¹ñýŸò2^'™Lï}ŽF¡²ªùl†£Ð 19|'`TfÕÍ%a´Ús%1¤¶j)0ÌT"± I»¤ÍSýŒ—.‡—8§˜„÷Ê•Ëa­‘útôOÎÛä(ÿÀ™6Ì°Çò‘DÉncoÎ"â²éd£€;W5_9×Êµ_CEæžg>CØ+’	¢½Èà52Ècƒá…²#MRÚ6R28P›¥LØTƒÀ3¬±ªyX\7\Ä¤¼-R}nôXÕ/wQ¬ÅïªÉ_$v:)wåE¶CQãwOÀ‚,w¼G4Ù»ˆçzSý¢*b¨ÆÂGïUÎG¿8O=tô´»ÄýK>ý2‘‘ŽNø©ËÓ™Íê#&ëÐÿz)õ$h;"{C7ë¹ÇA‚ð`²I­è¾þ¼†ÊøS ã†ó&"²‘HnÍ¨Þ?À÷êË2÷™³¹°Wõæö†_Úœ˜ImÕ½&{Nó™žÞÊmB7pB®í Só›š©vËÆB>,ÉOlì‘Í½’ñCÆe“¹ü§õ*N€A-	›8hÅ×îqÏN“{QÓhÍÛÄ¼¦UùÂÕ´Ø8õy9sfáû0v~6ô–÷A•t³ó“iø«Ù(qÿ†aÝñ>Ÿ‚¢FA95þPä¦I¤y¼ÑHI¬£ŽZ*<c™#™v.5LIª²Cõ4^~¿H¦YR¬æ–OGË7âzïs{$ÿ‚àÿ’\Ýå?®ËrO1	$:Ë$½+i})hå‘Ö€ob»º.C|(	%ÛrÃR‹j½EÊ8Åªµ@õhE@SœŽAq¬Zb¸ Š“wK;t&þø~™Â·ÉëéØ'
ðf3+ØÈŸäåÕí8ß1Ú¹ÞÆÞGT'ô÷¿áç¡ÉlîëÉÍÒ¶È©Ý·m~a_‚JeÂÌ,nnÿáþn9‰|ÞÁNÿoŠÎÈ˜%¾œqÇ9CÆ€ºœ™¿2§{Î2ËŒRŒc`ËhÔ)¦Ø¶D	Í¥PJÒ«×\4.ëœlYò¯‡+«¶\™(¥5ÙâÊ!~#)EZ£îÆ•ãxfÊeÊÇûUžÐ3OîÎ“ãÆm²drN–üöêg¥¸îãGCÍ’ Cf„Y`É®„£eÄ
‡°!Hr¯39£>åiH¥¬µT8¦mJSÔ5ÃBûÅJ+ìùÃafü=4‚÷?OÌ¡ûÞ÷$Ÿ #–Û±1ÆHkI¶¼Œ 2“*#†V„¡Žðxû4=óäËñä VžÄ“·Ö3{~‚ùþ!=xÖ!’€¿1F +&$å€³òD¥V9ã´Œ£”êŒJàÞÚK“µÏ§sç‚ÎSeÎÛÁ™³æŒ‘ÍÂ š L«™î5Çœ¶ŽmÛ{Žžóå3ÈRq&Æü›Ÿ:lf†›µF	!ÓÌbg‘…#èI)ËSØŽFl#Ö[sõšIŠ7øãØãŒygeO=('ÑrqOÞ;uÁîËÍÐÞ$å!MþåGùÍ*óôSàÙÛµœj$x¨·	¨	ålÓmŸo?P³gD}yÆMÎDqài=³î§©Ùcaê`vîÑÌj©UjˆbRÐL§ð‘ ~ãÞ:.SéÀ6ç"Í$D {Èä±½°îœ»
¢ÿ Œ[‰ñ¦!DÁ?XnT	@ý¼vOØ3Ó¾ Ó†7ã\Lûn?u¸Ín«VXSg•"À–­³©dÆ{L2Á•BÎS`Ï©uˆ¥H[Ê9÷"U$•p79»³²3Ãm~ˆk¿YÎ§O‰i·¶`ŒÕhÇ|-(Ù2_sv,ßæÏhû!ÐöiwŠ;Oë™s?e´ÍmS¢h†”Q©“ÊèÁÁ£FH¯S•1Im&2Â=·,Ë‚Ù¥Î:‰#T§Œ“fÎ}´ýûãÛšG×®Ë6VÀ§«`›éu ýLûl_šg³£“>ïXÏ,ûé‚mòxŽÔN`¥4¦N
“¹4Ë°æHe
ØµÊ¸&Ð¶Õá¼Ÿá¹ÐZzJÊÚº„„—vnF‘¥Î¼™$#8÷Ë°Kçò98Âã¦¥)Y÷vÑš7ÛÕaIÐFR5Äº»îm¶gî}Aî»†Î5<¬gîý„7y,¼Í¬ñ$à8\9£Z–)`ãJI2*S¯	æLb¡	S\«¹Æ)bNúà”ÝÎcäìÌ{ÛäwÂ»5!ˆ±-7ßôõÓÀÊñÑŒûu_˜o¿ª3ñígÐýÄA·~4Ðí”%%õüá„¦T{G
5 ©V*ç­@8cÂ3/BŠŸÂÄu“[ŸÇ¾½
ªùu9ÿ4ÌoÖLù)ðdÖÁÔ•í<°dOkÉÛç°ßŽžùòñ49žÖÏxúéãiýXx:EXpìRO©²Ôh%æÊ eRb…fÖ~¶Šr-"Üpž¢”ù,¤¾³®‘1ŸÁ|ý”Ù²ho¡Æl«ªˆÆB¨¨Ì:ž'?Cå‹Cev.–ü•Ÿ(TþšàGˆSÔˆfF—aÐ±@Ò '‘E^,6†f‹c	ËpÒ¼Â*e¨¦ô Ž«)¹hyf*áÞ­#Çí–ÌXs•hq}ÒFÎàu	ßÒv:ß¡ßsÃ|1¦Ë§’°­uÆNÙ¶¶RTëªGˆR‚ªŽw‹qŸùõÅø5–³¹í{B_/—‹(3j5“«4¾ßßÓf±€VíÈ­›žCŠ”\þlRÃÞÍ‡#xÝÁ°ÂQ,cã´B˜hË´×B.·ÒâÌ¦œyB,2Œ
‹RÏ97™U\x@p|_.èX{÷fÿ§Àî[G°3$ØV‰'ª¸bõÿ´f¢#»_‘gŽ1ŽOø©F“ÕCúz™þãAó{&x6¾ê7Ãéì1øj†) pÎlð!3î¨Ü­‘M-ÃÆ¥(cÔ¤ÌÃÿA)Ñ6c˜p«9bÄˆCiÞ”j2ˆl¶ë ³“§³ÛgáLl§3¢•®HE¢«Èê=óÝË!m.N´Œ¬Ò×ËwŸ>ØÞÈ£Ü’bÑúéøŸýëžD°-€µßÉâi<ÌA4Y.‰cÔ[êÓÔ{I±§”ÈT¤že(uÀ"FS£3†”ÈðŒ	O	eÂ„e‚‹IÒáblfÇæüõf˜¯zH×_(UÂßß'>÷/’¿™™)~ú;H13y‘¼¸¡™ý“Ws“mï~ËÜ'_†‹›í©<×ú@Àt+¶Hb©8¯z©KB„ #ùÃ?Ë·‹É7Aè‰ycS“×&¯?$Ûš)‡Gÿ,5/©ÿ„š«¬Õ=ð=åÖêËþºkÍâ-†ÍË|žË8'‹ißùÏ~t¬À#ˆÜ—ý¥o©O5V^)Ì½FðfAå’˜+é$Æ:$×õ4Ü Æ¨2-Íe\§JÑCéhîKÑ¼ë³ÓQRp‚Våkvû\Hå-„è˜VÕ¶âGï/sFB²ž­¬2RsF«YÌ±"ZèÖÒ•CÒ/žvŸvG_[)šƒ«>=1nçì÷5NÒá5°±<N®¡Î	yO2ÔœæÃ…o&Š¬%QgÆpˆÚL“ÔÖR©Pß6“#¥Y*äfãV»Ør¹ó!i3»: °AžonÙðÖ·X*ÔU.ß¬²Ó‚i]¶çzÔf­l€ëŠ	Ý“‹ÅÝÚ”vû÷)m3¿úZG÷Ô ¼äðÍùo¬ûÛ†œhù€çÞNç®‡iËæÀø|‹I“­/ªU%Y°Þv,¦ÝÊAÊOró¹ÍLÑvÇ;pöi»óØŽà­p°ÝÛ=ž[Ûâ@J˜a»}¼Í” AñìO ë®M+ÞÓž  »VÌ¬=ÉvtÛ4á§®Åio/oË*ãçÒ-D´VIëÎå>V»â
ÈIºp§êeµoÒž¢áa´¾ßÒ]õô•®,aþðÒ±%¶áy#€*ÅŽŠA¬Dû‘vp^@L£TÆ%Wœ¬$èu)#8eO¤&Ss™ñàÚ@LJ½cJí q¸u; Ö½^]y—ü¸-†h'’«¸âhãjS§6&F¿¹Û;è]ìW²¸1‹•/]žŒù~¤_¦ÍˆöÊøñläÃmÜldîò^QE&´˜Â‡YæAÔ-’1|¢É7~
÷zÅM;_N&!A‡	û7…~=…o½ÝøIò¡|/CëXÇ¥°Â´‹ÂÝ;“EÀ×®†îÅ[ÅlÓ}—¡<´‰0	h¾œD}*ýñ~2H’WðÍ82³(kQ3ìE?‘°o_¦Ë‘•ÁÞ*¹Èž½Zæ±rùØŸZLgëi½èmîÈMu2å‚V¥È«{;\Ä¹]eäo{•É%{'Öu”Yp‹dÉõ|èbXQè6)¸‚Å#ªŽ5øØVÄáà¸ÍóoA¡†oÌz¿8¨à·i±"ô˜&k´fŠóJ­ZøHÂ?b•ÌjËiËàÖXµ‚¨ÖU‹5!1ÙúV¶Âwúé¯YÇƒ­Ýª‚ÞÊ\pZÑórù;+?Ù÷%dïìf- |­<±éP´ MùóúŽæ£aúôŠu??˜e·æ_BsÙ¶¹ÛY'ú€*:µ*èA[÷ ¬NBÒ¶Ç°ÓŒÆÝ6t¼\v)ûa+µ²¶Í}´Ó€Yºá¢y;¿›-¦±Ç‘}~~ÿæ§««w1ü‹Úp£.|Õºs1\xû»lÅƒèoÇfÒLµk¶ ÑgÜÑ]Öu{É	[¯0÷£ádÙiç‹ú€¸Ñ¦xõï«_ßüøú#AºÛüfœù‰õç¯˜¼-† Ì§“:½¬³¤Û-ÊLäE™]í`ýcøÖ8íš­
_ßl8É¦õ-‚	0è³M­ªlh3n1ïù¸Í´ÓÆmú2œ4,î³5Ñ¹…¯·—}ÜÏnîæ¥‘c¤ˆFF¥œ2ÍRŸr§˜B‚ežkO„`
ê‚tNwk‡üJ2*àOy0½¨tA½,Y£tÇÕÖLîuî{0…§ŸD½s\è«&¶œÎáØ½Þ‡ª:
šàÛEP¤cL³*oúÛ2_$£á'PÞ@Õ°ÚÏt¹ 5r{ÃpÊ,*fs7]& ù’N>Í_@›ŽÃöB÷ðLî‚.-G 0NGQ†ªé šÂ¬ò›¨vÃÝ{8¯j­yÔê§ËÅÚ  MÆA“MáAW,0ò?&ae½a¿_$åv0&£Ä%Ã[27qÚ‹›°
ªiI6qV^mîX¡™Ï‚³q©·çÑF0ñ_âîè,Î5ŽýK-öü~ueø´Þj‰ïz­ÔYº«M˜ÐHTK®„OtûJY¯÷³â{>ÅkÞ5è£x]4Ó¢ÃE•ß8Ä#«¿?¼ë¤ëÀìomÚ±Ë%õëÎ
sguö+ÑØÒe^(-mû‡Òñæã.ãÀÉ¿½ë¢g<+…$¥p	PªËïÛÃhÿxýæŸ±¢-õO›ö¯G·]–º­µLN±S€g]Gúäïò»qÞe;B·èÒu¬OöÃ%Úq]»öUeÖyGò›q×.«uÙÁÒ9 ëP·Ÿ:	ÎØåsÇA:ðl`™¼\)ßgTçƒ"öXÚ|&3Vë”iÇÃ]»3(5Y†Hæ¨&„ îQÆ$¢Ö[B¤d˜¦™O½¤&M±>Y›íž•ù#•ùÇW™«±Mõ*³$ŠðÍbwXÐ !WÝÉEðhnÚT}ƒžæ3*ÌjíÓßZaÏ ‹2Û_T]#|mÚò“R};ßÿNUå‡Q|ŸÓ?’bú¦˜. ï±t” ¥½Í2Œ;.ÆˆDÒ8JSŽüÁ:Õ2µž¥ÈPÂ”K©v^dŒc0$}¨jPXÒñÕNË ÃÈàœ$…è¿Ðf• qOÌ~c×n«¡Ejò¡MFÐd0l’-'1Å£w%.¨_ œ»ö®w=7³›è‰½C‡+0”'ßüð·ù·I¾’yòÃO?ÿø&Þÿüýõ›˜µÆ^O€Ærö¸YiJ`«hë» Î)ÞIòÐÐj>0ÅéŽlÃïÏÀölÀŠê¦ÁYqê‡bq5-V {Ã	@ö€ýüÖ #o)õ²´K[P|o¾´ïp=2ãéÜ_ºt¹mß¸Fí›‹æØµ}—úœú¯M—Íl?‘õ)sóÏý”ûÅb89ï™_R<äËê}ç~a÷pº^Ùb / NgþÌ»UÒ6éð3ùÞGµ‹`-i­]<ú¸ž`]€^•`vg’4ìrKz·Ñ{¬5µÓ“ŸÔ¾Ÿo~xWß £åàùü¡nÁ+=@õyý—\Áp-¯'Wè×…ùái¹aÛ¡± iäÌÏÖ§ayÈkúË^Šm é½XÎÂm{:5s×zE¼Ü¶q„³ ÎÚ¶ÿìsó•ZŒÂGrkB±ï~=#>‹[
[´¬fðÚ3 ¢¨ H€Ç'}87Xi¸
™ÌîÓ„…qAÛ¸¹2gfrˆ­¬O=Ý?Ô}µÿƒ_ÛÏu>ý×‹ì¬Â|6´þX!‚ý^'eÃÝ”¬Œ£ˆZ'˜È˜õØ«â1¨ôÌH©­b&£Ø;j¹7Ä2+¨6Ö«ôyð*,hûö:† ‡ëêÔ'…X,ªº˜¤hnGC85ÖÄ5Õtº¸)HkÝªÿãß?s%'ZWskÂG„(}¨è¡"[éÌÓLU“öŽ)ïì¯T?ž~q*ÛB—ü7žà›\îøä,ðÄÿ¹mîÃÉ!ËHw½ˆ>d<‹O©)eÐÞ·»•È,è_˜|«ÃáaNÌa…DÂÈ,ÂqîÏî7€j,Ásf½ò\ð»=‚ŽowÉðºÀè~Wïß~ÿæãÕ›_þùæ—ð˜Ð€‹ ‚ó‘:Û¬NØãmRôlƒ–¶FJj€ÏF©ÍêŽ¾ nxkM‚{°[“à^ÞzuÁ]µïÏiâã é4X#Þ:¼ZbÄ3¢ÎÏYúX×ÒDÑ{Ë˜Ô,C.Í¼D™Ä4Ó8õ©Ê¤RHøÌ,³7^¦–M”õŒ/ìAÏÕýq¾ª+òy8_,Í(Éæ°Ðt2µ¹¸†½I¾ùü³ìý×Ðpcèþí^\>KG17OôÆœôÖI’b~£Étþçf…ƒx…Ïg7wy¼ŸŽÚs™(ôâ$òáx	²ÍON·§)ò­–8ö ¦Ý’$vtSŸ÷&ÓEqén&«´Cù‹$8—¦þÆ€^¸~æ¾ôbý°NøSÐ	>¤“pÒF£»"]SL¯ïó È–;ð¨…²Ê«qÛ^+ÅÛŠ’DJjÊ« )uD”$lØ‰7ãñPüðþÝgò|G¾áü©ë†¹ÃÃè"Bó‹ÞÐÁ éùÙê
èù†çÙyóÙyó«¼®øº7×CÜšå¢IÅË3¢ßÃIR‚$ wVÀýÅÜ@¼?èæ–ðE¥Ô¦R’:A lARÎJÀ<†h—‡åð¯g6µ’iEŠëþW±ªu¢ÒT]nÀ6€ˆrYô¡4çÉ2¦ã(©?„Ù>ý¤fmYu©¤uÞ#LøDv÷½,·ðÙÿòœØ2”·ê„-=–ËÈrGjôzÓD>CÎßäüCzù<#à§€W²±@’|ÕØù\xOÏ‡y‹Õ>âŒÌ1dSí”žzL¹æØ@sF8à¯â<óBsb¸J±Thm	µ™¬~*±k±Àk’ò_i•ÀLç!k |r >\á§`Ge¤-ÊedäbŠÈFQPL1¡]3¬;úpÏp%F§\ëð¶â1Ám!ÈkoÕVó¹ý”†¢
µ-JÌ­º+—(’òåÇ2_9åÙÍ«Œjd2‹¥ÁÔX­ãÚz!¥Íˆ€/´–žs–É”
Ê?Ë”YaæÎ*›ÙCÙXïKX®--ê¡„¢Àžì*ÊtÝ¥¸Í
IO¾xó)Þ»üÏ2äJ	Q¦óå$2Çâ-ç« Õ^¤ú\ÍŠ2Î¡ÊÅfçà<¶]D˜Ø¼öâˆHZå×²
ElÍ¯ã!ëÃiéçäÁõƒ–Í<´è“ÊBƒ@aÏ¢­´¡n_G×üºáÎDM÷ÜçùÜ7¶áz†ymà½=e·á¡R¼°Âj*.X[ÒëÓpT[Ã+L×OÝØÌšHèâ4žÐúBeûø{{Úm$u—1bJ¿ú¨¯áy;w§¹¾ÊÝ-ð9½/TíaÌ}S¡Aƒ«Òb69
š¦Ñc¸˜O§S©/Áy›/œmq(ÏcU|ûý›NfºŽY‰ìržO»UDéšh¨[Á˜²Z§]¸ÈÌ:§fë9—®3óaUn²Ó±žä3Ží¬N)hmMÚcêG˜zJèPsZŠöº7Ó/€ê.Q£l¯kDwÝ÷MÅ5¢à­û¾«u-â©¯màj×X
º&ÀŒ¾.Y~C«ÀÑk›û,ö»UÇ•³?QÝTÇT{•)GM†lêñZpd¸ $•gByÁ˜G2ók‰ò”§©Äœš™ 4ªŽ…uøÕq»g™m¨iZ©“÷Jdõ‚»÷ÙÌ‡ÓeÈZ<“áãf*ôG†Ä¶þÈñÊ`·ªD£CäFB!Fxx€÷ù„˜¢le-lÔW:ï§ä©+Ž§÷vV{†|˜]¯­½º¾óvê|ðs³»pJë_}yù[ÿù”ÚÝ·£Ü,¦ãZý¥¿ŽòÒ•¤‰J- åáF¸FƒR°qêõ¥}Œ³ÑvÊX{âp”€}}øÛÏÍ'×S(‹]µ~x§Ð¼tM».*ôuk!£&äÝ–Ý)QCÔÜu·e?*ò«I[Êàü—é'F^­rEÖÊ+ä`]ÿ¹îÛRŠÕ7)…T}£(ƒêš†]ëÏÚ´’Ú‚'(·…rÙMyÀ†Î2V˜tS”d>¥˜Qã,b&Ë°PuˆÃC•1…‰±Œ
£,Ñ™Òaî¨E–y…[¨aiÓyÈ5ÚBƒˆ±.tÊœ¼E¼jZƒ=¡$ùŸ.W„^ì6œ„k¨IÐCBêýiÕwör*DÞ^‡ÐÛ:eûuªÕV¶Á¯æÚ‡ßdë¨«¸»ýx^úÅIù8	ìYôÉšÃr_[ú4xéo¹óïÁpM¯{²u ·™üS.¸Þõu1õ>´°½Ý´4ž"V`ä±™í˜¥&ÓðWw²pTžÚQ²h*pªB<kí$ì„N)JQ–eÖiÄ(ö[©=QZ0;4Í2Ø™T5J–J½•d½ÎÃ‰µk»=ºUi["PE÷{%0ŠØ–™¢\U–bÍ”jmTZ‘~|Øýâ1ŠòdÅÂlfù“EÃÞµŸì™€uWï1xqVoÊ)5øs5\Ìn/°™ØîK~
Ã_ó2XØ–ÛVÝê/âÚu8ý„Ê\tÀV›ÓÑ4œM#ÓÔÉ…´KES‰d)éRàoå=sH¦Ú3b¥÷;Í¤÷¢¶ÞÈýŸÄ•r9K
ŽÖŠ'¶"ôŒï˜n³IÙ^6	¨x+™?&@WÙ$a¢›[ÒÇ¡ÿ Ö÷=ë=5óÎiû·Ó€ÅY5°Æý/ì~>È5SkÃhÛQj;¯²í<|‘?1ÿAjj3 4çH°Ó¹/Ìøg3·%‰žn­•®NÈ~'kT‹FÞ®¯[@×øfíÚ®öçþ,„ÛAzñû—™ÌÓ\÷9˜T´Ò4ø>§“Æ†ñÿsÛ¶Ý:¦ý¬Ëž-&½nù2ðþQ(u3¨õJˆí¶Þùbxž:Hó]ïêÃC¦UÊ1wÌgF0AKÊŒ‡ú^d:•
t9§I7žgÞYã˜	OA—×¥ol&$y‘×2Æ³ÿŸ—ƒÛrÅÑÞ¿ßÛƒ£QH]5ò×ÆÞÕ‘(#‰ÓµãA6ŸŽWFÅ^9¡'qx[Œƒ)Â›þDTó 
Õ:X~ãÀ=£œ“P´«mpïc¸šX‘TTqÎ«ê}JÏÂÓ‘cj,Ï$7ˆX#@§Sw‚#I—yÐ=2…2Æ%')rVhã±bXƒH)õY³²kks²Ù!€¯û^{÷¡9ÂBÉjüMøˆ!÷³7,ÄV©áà=ÅèFªg‰Û'["åÀßö­ødG¥è¨Çå~Siô§õV­2T°–«wqÚÙ˜–ÁíyìŠpÇh3q×î7-0áð†>ÙÛõÑ©õjŽ'ãDì=æÓãÁ6[Ø²ŽÁŸ†PâSÎ`c=QÂg ¬²Úf(³™I‰eÒ9®´PÎ¥Â8\m!‡bîß^ýÜ×B ˆ„™ÚOÉ/CwÊˆ†- À;œ…<©a-¡È}D)v&æ JàL^ÏÍxåÈ;¯Þ¨“MÓß¼@;àê÷?_½ýBýg£¡™,z}GÛbðç^™ŸÜ˜‰D¾žqµu¬WQ~oOcòÕL³¢&i¥ã y[ÔNM+ŽP<µWñýüí°ÈÌ
£{SŒ9\$_æÃEYCu¥UÀ!]ŽyV0…Ý±1‰¬š$¤xVÆ_mÇ ùg¨´NIn+;™Ž| ;x·¹Óå"Ìkßfz½¿Þ°±ÖÌLºò²Î—ó™ÉÃÌ§°S@lü	†Í`2å³9j}”C1Km¾.b.Þ ‡¥ð’,g!é­·fYôÂ¼n†×aƒec§Y|¦‰Y,æÃt¹ð°5 6\ØÉbûÂƒ¶ó¢`í(YÎœY¬÷fòs±}½R„Ç7ò»äû×ý_^ÄÿÿëEòúŸñ·øWñëŸ)ÿJ^¿+ú×‹^lðêÇÉ_àï8ðÃ›‹ªs¹uÅ^

›wí¿xY>ç~r=¸YŒGµúÙÒ÷ rº¥°ÚÊ’&5×µ/¸ 
óëG¦ÕgaPÌµûçÓ‘Ð«û‹Øüå«¸ 8=—‹HÕ–òiºœO6~ºU[uõ*/_Çz8žPÔÙ#qêÈµSù=]ãááë+=6[“_æ1«xú…»s3ÙÝN5¨ˆÌháç8 Ÿ}Þf”ýÛXÆ›‰‡´ivÔÅÑ5ôÐžµ-¬[¼'‘ZÊ]&¿ÑÐ#HÃ¿üã—ŸZVj(„]|Dr±Ð~4œDÜ,[öùÏC€lº[ùã Ê.Qéu¼&¹‡Ó%ªÜÓ|8ŸOkáÀr""hh1wS‹ê\Ž€ö°èEpö=Ú£µ	Œt,Æ43™Šy’qxÝjM#†gÖyäR¨>uiªCRYå™2DlÖ‡lBÉ/å%Qòãt2\Lk2È¾*­?wžŽ‹Ö.PË<l`¼Éúê)8ÐáxE‚ÚQõ*¸ãÐÂ:	Vüáx82 ÿ	öùOƒ$ùõfT>‡Ø>€‘Ùr´šJ/D˜ÃhÑM¿L6ft?‘rr#o>]Þ2ŸÍ½‡>Á
B‡—WÓlŠN¼\Ÿ’Âle•¡ü ˆ“Tl`8†$­B8Fh3‚+æÔ‡³Ù']‹•À½öŸýh:ÿå¯ BæÌ&³»ÞÓíôšw,JVÎ¢¾n×>fQG­]5°ýTÔ#˜Î%±&!ã„ï$¶Êßk`W¦åÅ»b'®ÜLN¨r©õÊ›¢n‚‹Ë4óš„<5ØIB%Yæ˜CÜhxo0B”¤Nqàv\ãpÌ4J•Àvž\›nfÙ|:Yôám,Jä€Ä¹zõÓ›$·…\®üAë*\Â­³£§¦ˆþ(»mRýæª$û*VÒL~‚y¼1ùÝ·½€æ€ø‹Ò¨µzÊ’›A¬•3Ê_$nx=öÏdnò(‹’@=kf‹åÜ¯Ë%ëÉCÒÂ‡@•ä‡_ÿþçØg=Š…=˜OG1ä}‡3£V‚Õ)Ø¯BcøeR±÷”_—ºÂluù«ëp£h¬…U=™¤ì@>LÂMÂ¦=k.qÕKDµhtÓsëÇ#ß/{gy7úÝ¹dãÃäXÛ]õ©R‘2B:ú.W°Û7ulµÚ®8K%ÜªMã&pùZÊëFYÈ™…ÜŽGµÎa¡q½ÔÝÏASk'ËQ=^šßšŽ¦ó>ü5é|^—­ ˜Ÿb@T}×šá|Ú%ˆ9`î›]PC@áA.u×îS¼z#ÝVÝ>Î†·é2ëÜs8íÜþëÜ§¸èÜmqÔvü6óñI‰¶¸Ò`ÒßÞ¿ùá£h[ßsdÇy§š“—˜â´ë‹;Å·ã¨žÙ‚tî7¹Æ"¾T­í[•ïú‹¶E"?íðú.†YÚóÎíáYýúö¯ýÈÚv½€1­§eææË‡ùèþDõàÄ„ñ'i	&“R:Í„´,#X²#‹"VyN¥©TLˆLc–jnÍ<'cyæÔ¡š¤©ß„ë\ÁÆ×§htZmX€Õ 
ò|óÉ$Øx\’Þ˜}‹ô“Ð¼-„Æ„Ê714E
)²‘e
#¡YcšâÊqz†Ò§CiÎeW(½Á€ÎŠL;$‹ïPeZ×Ãñ	öøãYUÈ§Ž[¤±ÑTgR)fžrÍ´:nÅ]†©æT‹©Îœ`Y?¼ýñ}2-¯û âû³RÒ»Z46˜ØÚH3¬ûëe0³f…h;9d:é­*jg–éüSK'ÕÙ’O—Éx™/’PÞ8~×[3“`û. ‹Ê¤ž“”m™$ÑëM)5’ŒUX¤™„Ýå×g÷™?ž!LZ°®	ÜïÀ™¹c ùXÊ{{÷ˆ…WŠmrvAÕ	!ÅÅü³	à¢& `Gô	&êcúö£:†ý?¦'p°›£úMÝrtÔ"—Ãcz}	^¤‹üÙˆólÄy6â<q.jÄ9Fß™ŽM¿„V¡wz@Æ ×ëüódP0ØƒÑú3ãìÏB:k­YØšÉ%RgÒ¤È{—eÊsÁ¹!H`C†‹LÊKƒÙ$EDKã@mâˆºâýñ]rßŒMòsd|ÉSçGÉ7®~þñÛš‹ÜÚ~…+ÑßÌg“”—µ ’˜EPõ
×µ=oòáè€9è.Ênj—Á[¥ôð¸yQMX:>cðÀ0ïùÛÐ¢ÐƒŠ¸áàÆ”mºPåÅ\‚i)Ç2Ÿ6*×¤óòGÇ(¿^B\T¾˜›áõÍ¢T¿˜y¸Ì¢×|pÊú¯¼ SáN|L«lòžóÙpR$:Œ~Z÷£…%……/£ýâ3ý²¢Wª	vûp3ý¿é2*Ç-šâEµ¼ðN~ƒ§¼åF
¢±$Ñ‚‚`EäÅBÔ¼MÇª@¡jc q4GÂäú¨ßþë+ëû×¯ß…\S!\$ªÉ—áâ&ñ·ÖÇ}ÎT<1‰Vç}:Ùc¹VÚ)ŒãÏ“oàÝäËÉ Lø»ð¿Zoµ˜ºëæ}D¿›Á§R„jÕÏ#Â)êixOûáÉŒ|žïÓ>ïGÖ¥tdVvöþ}LSÃ6ÃjÍíäúµY˜ Ê¾Ûúý¼’záç;¢º­Q’Òu
µ²)i/‹‰òÂ¦"s„3ï9HfoX*„\R#2N˜DÅõŠ-R‹­ ùM1?$‹õÁ•ÈŒ?nCÓùÚV¸åˆUgôIÜ—uà_Z‹¶”ƒ í­­˜¯ß|ŸüóWŒH”¿¿úO‹ùt2¼MÂ,Š8`È!mE>/œ¢Š‘K1kÍäO‹Ò(é}ÆÁÊˆ8ß.Fw—sN>ó0Ïþ0ÕŸ‹¯âðì­Œ©W¥Npøˆj‚÷Š2Îp|Õäeœð­JÁœ"ŠïtÂ´úp8ûëcùUdü=ÎF¹g±'ûC!ÍÂ*LýþP‘l[¨Ð¸Núäq‡Éµ±©Ö=[–‘ý
à…Kè™/]‚ƒ>d‹N5":Ö¶›»ƒu«:÷pvÞnß£™<ž-ŠZ­L3íí‘ÛÀÞ}¾·fYbÇîµ×·¤ø(˜=€oµH5ë#ôC}Žm²›4¶œV>M‡j^
»ƒQ[Ë¦[ß‰ÕÊÍÈ¦EXs&Rå ­¥ÔÒÌÒŠË ™ãÌ¤˜Q›	*…Ã˜Zm¹3†(ÿç Û•_€Üù<\M Ñù{¶r¿¾ßÑ#Ý.çóÐ`€â>BqïçÃhôHò?ESÞ—4‹ª
³Pc>úÕI„Bl!=@´­ÀxAhðk5‹ˆ_¦Y’Å4…C}lYŽ	ðq¾¼`· š–mÕt«0xÍßÈK¤[¤–­œágˆvÂ=2×]Ó]†wW©>ðyÈ°¨£ÜWLûxæg~m3ý!(ËÍ,ŸÄÚêåžwtÒÎ§H[L=ãÜ+êhš¹ñ„’”ëŒˆTjë`*"ó R"¼ ö©Óþ Çÿ7püW“ÂñoW?ÿ”¼+­ÃßüûÕßÞÕXÌu$¡ci\J<¼ö‹¾›gšô¾¹zõ¡Ÿ/îFþÛ¢[´’Ï«1J¯~ºz›|_„6•4zŸÍhèŠÐ£ØëÚ‡Bh ù_ÔP<MïÜàz¸¸Y¦!/Ã£¯wâÛ)ÂçûÓg2¢Ø&WëªS’jUæå 3êÇsÕ/NÔ Å6¬ûíÕ÷çÁ-@Ìx)þ½»ÚÓ“Éá®^@ÀˆÂ<¢¶TÃ¯B›Z{ìfpXäé”Ôy=‰¥—á—áâ¬÷þ-ŸN>Î}q¨k~l;2ÌîÎÍêÛâûS˜½‘R‡ÚÈ	C9ÆÂ[J8å„:«±Ã)R.c,5N2FÒçÉ4!pv('Û3³?3³g;Ì^îÏÅ°ÚªÅ¬$¡Ì^kÒÙwÙ_{¤þÈìþ¨;¾‹°û®öÔ*»oh/Ã÷°üEùþS„ñ-ü¨sÀÀÊ-ô*µ®pÔµŠ™£T°Ì§:å$,)©H3Pöïc+(ƒ?”0F5Ön¥À+¬=J¥=$þ–“¤óé—ÜßßýðÓÏ?¾IÊK€:Y }‡ELÀM#Ò•%ü:¼žx’NÆ^wÓeÙ3¸ÑÄŽ+ÿ˜ÒAdÚÌW—kÃIo:ñI` s3Š9C_„£eë07nú…”˜fœæ‹è\Sü\äÚ¡"†^Oí_¦ÓOÎP=ü4\O¦ã"¼àÕl–¿üw<X52Fˆm#Ô~³Bp¶ò3Í0«g#TFµ
˜U¿8·}ÚQÐ¼«¼ºz—A‘ö"yWÈ“@;qª*¨}¿Ñ?ÿ…^¤Úò>ogùüÈÏ¿¹íGG2ß/?xyxÀÑ½Oêrtg`-µ²&¶OL7‰‚ƒÄêd3Ñ“dÿéH—¸Âá¹ôPïrùØ9Äµ‡oÐÚßæ£E'oy;¿›+èúå9]Dz=»îûù|ÚþŠ´Oè´{Áý«ë!ëièÎŠibÕ’Âè?cÓÅ+½S°ÁCtÏ7
’.±.ïwþ?£áÂwzN_|úi¸ •DÛ:0€8ê²zÉÛ®&Ê¾³_ãG€öê4Nˆ2,²£1®»*mÿ&ÙƒzØÝÆ×Ç)`qŸºÝ¼œCKuð­Tê0Ürl½Ó\z™ªÔhngL3’Ú”3Ï°€ï½ÄN#DÖQ]ÛO¢âTìO·Ô£5…XQ,¹Q#¥Åì)*5jÇp¦öûÕcPaÛL0!Úð«§BÊÆ”¥ë´	çÛÞ–\Z«yè‹”³ë51Ü1Ÿi•©6ó^þÔõðzC—6<õ¼¼tÍ¥ÜÁ\¯Àu[ìÚ¶0c7¨ØìµDhmÜ‡ÿï# X©DjŒº¢–8¨-\ÑÿáÇw$HÿmÚŽ}ÝDã&îïEè%›{­p][ø·"@4Æ­QãF·Ö“Úì¦ŽêFÈÝpÃh'ðåYã`"½‡°·KK”L…6$E8Kµ—Ä¥„gÔqÁN©GÆ˜Œl<6q„HEÆ}H4&Ô3ÖÛÁzr'7ý!6ÆEVœ*Öc”lb= Ú¤)QÎ¬÷tlØ}z´×¹ÊlWz?ìku{aü÷8öØŽÆÕîFÌÎÉ§mWìj"ìjàÛÁ‘Ï¦·Ö¦·CØóèÞ¢íþB¢Gw–­;w´7¨§ôî<×-¸zBoÒ2­ÏAðúèN(GbÙEQ›fÌ¶ÍÁ…	:Ìf:S©J1¥”ko¹–HyÆ¸ƒ?†(¬	ÅŠí2ªáÜ;i<À+ÅRK11‡ä[øeQÓÂuo¶LGÃüfË…#€Ý×‚Ýû*œípŸ]UíŠt)áÜ×OV~$¶˜M¯ýlV%-àxƒäG M«Ø! =Ÿïz£a}ƒ×Jp9IïÖz†*Pw°¬¯*†ù’ÜþÛ2_ô¾ÌÍ,øÉÄ ©å¬(Zå
èØ*Ð7q£»ä‹¹pÈø!Ü¾*›Ô	½3rÀÅé­ê °ûFi)L¹à­|Oâ‘( +*!kû4'ñ4y_œ©%BOËkrhù§×	¥´£}ö~*µaD8Ô)p·E!ÎÕÅRùþµi
â{4œ,ê|?àäš¹ëÏ'×nÖZÜ‘Å.ñÁ7Ü‘õ#Ëmj4ñ_N¾LƒœE(‘Ž·i©f:uœ	™IIYš2¡¢<ÓgLfÆç4¡R«)¶Z!­!†è¡Ä_ ¥GOóüÆûE¾vFÜ±t5¼l.ÍýcÚaBÍÂPW¼ÂÓËÒ‰/ïmSÇ;L]î7ÉÌ	ÛæêXr)7Ø: …vF˜ÙŠ­‘Ž\½j“ùz}	w6àäðS¦pGKÌšµåê¤ž«Á€ â¶±5l@´¼Úÿ '¹eŒ"Í©–ØHG LœO5%$S§V×!Šj£©R#Ø`’¦FJÁþÓÛ«ä› 0ß›Ø »Å*eQmÅŸüä!ã]ò¶’0”=…S|TËäƒ¥ôf‰¸Þ¤ì\Í!øÍhzH3llþÞä<‡&~¼^Qæ(š{ã‹$žòJßoªÞØ%xÃ' {§¹–ƒ’$,6Ô†ó“—ß;ðÒy„ôÅÜCãÉÝªsø5Ð*{¿)GS è&¯ŽÑ»)´7AúŸL¿‚þaÀ?åëÝ	É‹rÁ÷Y™ø½K‚»kÈœ\Nü‹‰òeìç Þ?MbÙ<¹ZNz ªGÓ/Éû¨+|gaÐëUÅ
¬s,–Yó²t üü×¹÷¹zÿý>)3˜^Ì©gFÉl:_DÑi6!ƒÛØ&þR¾*yÂðzàÿ¿½+ëm[ÇÂïú~›­‰‹D½Ðåâ¢˜ÞAqÛÒ¾ZÈÄˆ7X2Zç×Ï9¤dKŽv9m2“>¤¶ER$Eñ|ßáYÌ… c˜|¸VþB®Wœ²Ú¿bÆ ÒGx0!Ûc~i™R°töëÝ?à1çQ'ƒjµö&ˆ?<Wl1ÑÉ{SŸÙó[‡Eð¶T'Éôéðö¼vüoYÊ.f¼1Ö\iŸÝ£ª%€Ó–/G+w.8®HÌCðc‹d}×¼tGÀ_ñä8–ÔÙ…óeš´f6Ý+MÐëd.Ë÷,NÁD»EÈšãÑ3# xÞýœ®æºø%ü™?„K˜ùsv›.›‡xÀ&=»Ú;Ú'äÄì‡0 žÅd„:ie“9™Ò"c:(Wñxœ‘%ýãÕäò¼ñˆ5ª†=>Ò…=]öd0ol¯‹O\m»Ãy©Þv[ôŠ¹)xg+øc…«÷ûüõštUf¯’^ví‡âŸ>¾û÷—O¨•\±köt¾ÝhU+íbëPáëÇ¿?¿¿¶1¨èYMnõ>^J”¼)ù®Ï®D~Hè7Q£#\¿U«–ÉmcØÜ¢æé4ÑØ³¦DbŠ\Ç»åæ§WëÉšŠnÖ‹Es‰DÖMKV •I:J¢B_r\$|˜Äv•”6>£Ê	åÔö"ÅbÅ	õ”"çÔsDÀBár‰¶'œÈ8öTDy=ñ×ÈÅÄ„s†)à “"Ñ ;ƒñzÌWçd'Z7rVr2€[äÔBg×@?±³˜¥ k¡ÁÔbR V-µhd“"³°*˜EÐgPÕ,…™Žú^úé¸.¬ºu1›|35tr®Pq|a75ÀÞSÈ~ K5ágëÂxú¹Aþ¿š5 lüÝjÀõ%ŒQ\%žð; 6NÚt™vÅØ`oå»•Û³ÝÓ›r»Hí|D[”ß¬‹°!f:­§€¯?è…þ˜FU§£ë×qüžš<õôÂt¥7J«.ðèm5õ–6G!ÁÎÚxˆÔ9õY§x¾Ï Ž0?*UéŸ©ª6íÚ]ƒ+úYK«Àý¾|ûòõ¿>\ÛjŒe•$×°Å7qšM¤_Æ3°žl^:¬õ¼d;¯âPEöMŸEÉ4ºŒo£þÑ˜a£ØœU",¼ßÌp×lf†Œa)†Ÿnä/.æÙðlJ›yÊCžÛl8ðKèúŽt€oÐÐ‘‰Ü€;ò±i@¹´•S/vñ|J=Âí€ÙÌÆ¡Âº 29Ù¸h ¯2øõÂ0þF]ª©•ç9¾.ñ«¬j/²Ñ ù:­ª†717(°ˆªÏë¾q¯(Ýõúý­jèŸ±œÚ2=Iòyì®•¯‡ßBp„9€÷€x5Ü=ÎÝ²¢qB„(å­¢ÜoW´cÑtxZ·k=;^0Ìµ¶ÃDŒ¥
L¥£
Ø»½y7ñS°ýGn¾›ö¿ëmžÇ8(cƒwÅt it:½in×=~ê0 —Óÿ/>ƒu×w{°F¥~Š~—{.ƒ;Ùp–Áæ©‘ âPûñ›nUŽ”úbvïÃ9MÕA!7¸=¶|¾MMü©¶¥ ©]íÔá0ùÐpFu/Wót?8×JÑ%¯§Á˜$!cŸú„ûÊ'ÔµU(bÉæønäRjÛ,d*rcN¥ "¦±Ã¸˜¤Š†µ÷?Ì“Í"Ø#	8 Î@ï`ÌZb²¤d¾õäé»ž‘ÉRÇYƒ¦w¯+Z-fAY ã0l ÐÍ­Uºe²3™/ç‹@›ÿÜ˜öÞ ¨Ô—æ«pÈ³cÊã­®w öp¸a 4–˜hFÞÊUþû™/¿Ôâóv>…Éå÷lY5Ù¬<ò¹ÚÂñ©  \Ó.·‰ç:4íºn[¨g³Þs§Ý¾f+ŸÎe Û#ëpÄ\5ÖÑîžkÛ=#=›~´ZÅVì#ÍuÊÄRÛì(áž	ã|üu_â%õk^­Ó¹Úc®Ù÷ž~4Âg£2Uô·îÉqËä“ÜNÂg˜³ŸñÃÞ¢y/–™æ˜+„/¨M9ñyäyàž ¾+ÅNÂ0r@s#ÌuB×ó™ð™QäE®_—ø{r›@$»`šSå$èÞ¤3¾?TÎœF³än˜B=üì4,GÐ¬Ì… JAþóðè¤ÇÄtæ&‡æ`×d’¬Ñ€»X.M:èÃ]’Ã¦üú¯õvešy•¡$c°àøö “nƒU¤m¾“¬¹d·Af“X%T&1ŠùJ#­ù"Â¬€ F·µè×vk|cßäºá¥¶žÏÀÆ uÓ5µ[é
ÉäBgzvé‡ 9èf0¹'éz»·–2‚þÍ“¥dËõVžjQ8Zìås{TÍ(<ö™p³©óêÕ@7Á<N	+ä<ÆŸæÙ«„nPØ>QƒRÊ(,ébìê9ÌnEnÙû:Õ/ÞôðÊõpu:OV½îÐ-ÀŽ¹l !øt¬£œÄïk‘Ï{ÐjØ«°ÖÍ:ímP˜wÎ™±ƒÝiOŽ
Ü“17}	)Ÿ(Ï÷•¹xa \e£‘¡kû°?Iˆ#pgÇè œ…µ›tjvØútMª})…¸ùä~*ð6”`?ê­ZI
[p’À6š”š7ë-ìQË7¬†©]ðAÈ/¦úÅ.M`}ÛùL'÷½èT_*³Åwóq9e!Uæ­×ë»Kóü+·$Ÿ0›3ZÌ‡?1¿.?Gç4;eÜvËiØ…c·¹^b¯¦zyõf’ï¾|8z\þz>9pC:îh2ÉxÿÝ(­´¡jyÙkÛêB#kÛ|ä<æ7QtôQò*üùþýugír¿˜êÏÌÔ)£×¯û°XãýÕÕÛwAšuðS¬«»zuáÁéU¹sl¢Úúcïï¬ßñD¥®>é¸Œkëœ¿N–ÆÄHrà‰õÉÚW-:\nv Á7[Ù‹ "i)²ånr?ßÀ¤KŒ±»f6]ïî¢<d‘/b4ó
jÃ(O*`®òˆ'à›GÏWŽ
cnÇŠ¹'^Äl×‹ásmTÓ›Ûô‡Ä¿92Ä$¨ï—?SäÜÚþÈAÀø5jñˆÏæéÐd~Þ`²{AË‹ã}Vbô&¥ÝÇ1‡|ˆñ¡°Vm7tr›¨L	 Í…<ôp6)F†°ÐØ+Üa ¬2ôg]®•5gT
ê°?Kã{Qö÷¶
þÞÐÁÌ@ìBm%šÌíÂDê€TE4«É;–B´{„Ê–±¼Bd¥;=7Å¨$Ð/|½ wÚÈéq¹¹yhù¹Ý¥Ew`áÇ·I;0·yÇ¼…„À¿öcÓÍiö:MÅ $ @lþ‚OÎÌ9s’·z0bL Ç•30!ÎûÇƒÅ¾LMÚ,‰°¤J¤¼[w/;Ìf#ãî0^[‡ÒÙ6!ñÚÝº©Á.ùòõý"6F],•Êš'¶-û“	<^#Ÿ»ªoFIè8Š0Ìðìzj×Cª*¥/l›‡DÒÐŽÜ@ª(BºÄ·mÆ½8t„T6¾	ý"¡EB“	-|×¯–ÐDp÷DBû
%4¤Í™°Z>õÝþ"£+dt_£áÝQ1ñPX÷¨x"µ{Ô,Šï.ÕUŽ·¨êž«©Àö)rn”xwxÈ•/ øvdaúBŸÎD~è9’%l2×¡,T’q¥¨ð„pÅlÊ)«ïÿ9DCÎÃ]žHæ1þ[Äxùè<9žç~G…0ÖèÐ†V“…[—ËÓŒvLðÓ#,«¼t‚Å|Þ™¶ë7øœøžß38té‘œ]†šf›$í%ïžHê,•ÏƒbÎ&î«`²—©·éP
µ˜†óº(U…B]n5]Î6Ü·QÜÇómãõŸëm[Xd½Ù·•)Ý©L].e ÿçCÄÎèí’õ  07070100000111000081B40000000000000000000000016290A0C1000721E1000000000000000000000000000000000000009100000000spacewalk-backend/satellite_tools/test/unit/repodata/751019aa91884285a99d1a62a8c653a3ce41fb4e235f11077c3de52925e16ef7-comps-AppStream.x86_64.xml  <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE comps
  PUBLIC '-//Red Hat, Inc.//DTD Comps info//EN'
  'comps.dtd'>
<comps>
  <group>
    <id>additional-devel</id>
    <name>Additional Development</name>
    <name xml:lang="as">à¦…à¦¤à¦¿à§°à¦¿à¦•à§à¦¤ à¦‰à¦¨à§à¦¨à§Ÿà¦¨</name>
    <name xml:lang="bn">à¦…à¦¤à¦¿à¦°à¦¿à¦•à§à¦¤ à¦¡à¦¿à¦­à§‡à¦²à¦ªà¦®à§‡à¦¨à§à¦Ÿ</name>
    <name xml:lang="cs">DoplÅˆky pro vÃ½voj</name>
    <name xml:lang="de">ZusÃ¤tzliche Entwicklung</name>
    <name xml:lang="de_CH">ZusÃ¤tzliche Entwicklung</name>
    <name xml:lang="es">Desarrollo adicional</name>
    <name xml:lang="fr">DÃ©veloppement supplÃ©mentaire</name>
    <name xml:lang="gu">àªµàª§àª¾àª°àª¾àª¨àª¾àª‚ àªµàª¿àª•àª¾àª¸</name>
    <name xml:lang="hi">à¤…à¤¤à¤¿à¤°à¤¿à¤•à¥à¤¤ à¤µà¤¿à¤•à¤¾à¤¸</name>
    <name xml:lang="ia">Disveloppamento additional</name>
    <name xml:lang="it">Sviluppo aggiuntivo</name>
    <name xml:lang="ja">ãã®ä»–ã®é–‹ç™º</name>
    <name xml:lang="kn">à²¹à³†à²šà³à²šà³à²µà²°à²¿ à²µà²¿à²•à²¸à²¨à³†</name>
    <name xml:lang="ko">ì¶”ê°€ ê°œë°œ</name>
    <name xml:lang="ml">à´…à´§à´¿à´•à´®à´¾à´¯ à´¡à´µà´²à´ªàµà´ªàµà´®àµ†à´¨àµà´±àµ</name>
    <name xml:lang="mr">à¤…à¤—à¤¾à¤Š à¤¡à¥‡à¤µà¥à¤¹à¤²à¤ªà¤®à¥‡à¤‚à¤Ÿ</name>
    <name xml:lang="or">à¬…à¬¤à¬¿à¬°à¬¿à¬•à­à¬¤ à¬¸à¬°à­à¬­à¬° à¬¬à¬¿à¬•à¬¾à¬¶</name>
    <name xml:lang="pa">à¨µà¨§à©€à¨• à¨µà¨¿à¨•à¨¾à¨¸</name>
    <name xml:lang="pl">Dodatkowe programowanie</name>
    <name xml:lang="pt">Desenvolvimento adicional</name>
    <name xml:lang="pt_BR">Desenvolvimento adicional</name>
    <name xml:lang="ru">Ð”Ð¾Ð¿Ð¾Ð»Ð½Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ñ‹Ðµ ÑÑ€ÐµÐ´ÑÑ‚Ð²Ð° Ñ€Ð°Ð·Ñ€Ð°Ð±Ð¾Ñ‚ÐºÐ¸</name>
    <name xml:lang="sv">Ytterligare utveckling</name>
    <name xml:lang="ta">à®•à¯‚à®Ÿà¯à®¤à®²à¯ à®‰à®°à¯à®µà®¾à®•à¯à®•à®®à¯</name>
    <name xml:lang="te">à°…à°¦à°¨à°ªà± à°…à°­à°¿à°µà±ƒà°¦à±à°¦à°¿</name>
    <name xml:lang="uk">Ð”Ð¾Ð´Ð°Ñ‚ÐºÐ¾Ð²Ñ– Ñ–Ð½ÑÑ‚Ñ€ÑƒÐ¼ÐµÐ½Ñ‚Ð¸ Ñ€Ð¾Ð·Ñ€Ð¾Ð±ÐºÐ¸</name>
    <name xml:lang="zh">é¡å¤–é–‹ç™¼</name>
    <name xml:lang="zh_CN">é™„åŠ å¼€å‘</name>
    <name xml:lang="zh_TW">é¡å¤–é–‹ç™¼</name>
    <description>Additional development headers and libraries for building open-source applications.</description>
    <description xml:lang="cs">DoplÅˆkovÃ© knihovny a hlaviÄkovÃ© soubory pro sestavovÃ¡nÃ­ aplikacÃ­.</description>
    <description xml:lang="de">ZusÃ¤tzliche Entwicklungs-Header und -Bibliotheken zur Entwicklung von Open-Source-Applikationen.</description>
    <description xml:lang="de_CH">ZusÃ¤tzliche Entwicklungs-Header und -Bibliotheken zur Entwicklung von Open-Source-Applikationen.</description>
    <description xml:lang="es">Encabezados adicionales y bibliotecas para compilar aplicaciones de cÃ³digo abierto.</description>
    <description xml:lang="fr">En-tÃªtes et bibliothÃ¨ques de dÃ©veloppement supplÃ©mentaires pour crÃ©er des applications open source.</description>
    <description xml:lang="gu">àª“àªªàª¨-àª¸à«‹àª°à«àª¸ àª•àª¾àª°à«àª¯àª•à«àª°àª®à«‹ àª¬àª¾àª‚àª§àªµàª¾ àª®àª¾àªŸà«‡àª¨à«€ àªµàª§àª¾àª°àª¾àª¨à«€ àªµàª¿àª•àª¾àª¸ àª¹à«‡àª¡àª°à«‹ àª…àª¨à«‡ àª²àª¾àª‡àª¬à«àª°à«‡àª°à«€àª“.</description>
    <description xml:lang="hi">à¤®à¥à¤•à¥à¤¤ à¤¸à¥à¤°à¥‹à¤¤ à¤…à¤¨à¥à¤ªà¥à¤°à¤¯à¥‹à¤—à¥‹à¤‚ à¤•à¥‡ à¤µà¤¿à¤•à¤¾à¤¸ à¤•à¥‡ à¤²à¤¿à¤ à¤…à¤¤à¤¿à¤°à¤¿à¤•à¥à¤¤ à¤µà¤¿à¤•à¤¾à¤¸ à¤¶à¥€à¤°à¥à¤·à¤¿à¤•à¤¾ à¤”à¤° à¤²à¤¾à¤‡à¤¬à¥à¤°à¥‡à¤°à¥€.</description>
    <description xml:lang="it">Librerie e intestazioni per uno sviluppo aggiuntivo per la compilazione di applicazioni open-source.</description>
    <description xml:lang="ja">ã‚ªãƒ¼ãƒ—ãƒ³ã‚½ãƒ¼ã‚¹ã‚¢ãƒ—ãƒªã‚±ãƒ¼ã‚·ãƒ§ãƒ³æ§‹ç¯‰ç”¨ã®ãã®ä»–é–‹ç™ºãƒ˜ãƒƒãƒ€ãƒ¼ã¨ãƒ©ã‚¤ãƒ–ãƒ©ãƒªãƒ¼ã§ã™ã€‚</description>
    <description xml:lang="kn">à²®à³à²•à³à²¤-à²¤à²‚à²¤à³à²°à²¾à²‚à²¶ à²…à²¨à³à²µà²¯à²—à²³à²¨à³à²¨à³ à²¨à²¿à²°à³à²®à²¿à²¸à²²à³ à²¹à³†à²šà³à²šà³à²µà²°à²¿ à²µà²¿à²•à²¸à²¨à²¾ à²¹à³†à²¡à²°à³à²—à²³à³ à²¹à²¾à²—à³ à²²à³ˆà²¬à³à²°à²°à²¿à²—à²³à³.</description>
    <description xml:lang="ko">ì˜¤í”ˆ ì†ŒìŠ¤ ì• í”Œë¦¬ì¼€ì´ì…˜ êµ¬ì¶•ì„ ìœ„í•œ ê¸°íƒ€ ê°œë°œ í—¤ë” ë° ë¼ì´ë¸ŒëŸ¬ë¦¬ìž…ë‹ˆë‹¤.</description>
    <description xml:lang="ml">à´“à´ªàµà´ªà´£àµâ€-à´¸àµ‹à´´àµà´¸àµ à´ªàµà´°à´¯àµ‹à´—à´™àµà´™à´³àµâ€ à´¤à´¯àµà´¯à´¾à´±à´¾à´•àµà´•àµà´¨àµà´¨à´¤à´¿à´¨àµà´³àµà´³ à´…à´§à´¿à´•à´®à´¾à´¯ à´µà´¿à´•à´¸à´¨ à´¹àµ†à´¡à´±àµà´•à´³àµà´‚ à´²àµˆà´¬àµà´°à´±à´¿à´•à´³àµà´‚.</description>
    <description xml:lang="mr">à¤“à¤ªà¤¨-à¤¸à¥‹à¤…à¤°à¥à¤¸ à¥²à¤ªà¥à¤²à¤¿à¤•à¥‡à¤¶à¤¨à¥à¤¸à¤šà¥à¤¯à¤¾ à¤¬à¤¾à¤‚à¤§à¤£à¥€à¤•à¤°à¤¿à¤¤à¤¾ à¤…à¤—à¤¾à¤Š à¤¡à¥‡à¤µà¥à¤¹à¤²à¤ªà¤®à¥‡à¤‚à¤Ÿ à¤¹à¥‡à¤¡à¤°à¥à¤¸.</description>
    <description xml:lang="or">à¬…à¬¤à¬¿à¬°à¬¿à¬•à­à¬¤ à¬¬à¬¿à¬•à¬¾à¬¶ à¬¶à­€à¬°à­à¬·à¬• à¬à¬¬à¬‚ à¬®à­à¬•à­à¬¤ à¬‰à¬¤à­à¬¸ à¬ªà­à¬°à­Ÿà­‹à¬—à¬—à­à¬¡à¬¼à¬¿à¬•à¬° à¬¨à¬¿à¬°à­à¬®à¬¾à¬£ à¬ªà¬¾à¬‡à¬ à¬—à­à¬°à¬¨à­à¬¥à¬¾à¬³à­Ÿà¥¤</description>
    <description xml:lang="pa">à¨“à¨ªà¨¨-à¨¸à¨°à©‹à¨¤ à¨à¨ªà¨²à©€à¨•à©‡à¨¶à¨¨à¨¾à¨‚ à¨¦à©€ à¨‰à¨¸à¨¾à¨°à©€ à¨²à¨ˆ à¨µà¨§à©€à¨• à¨µà¨¿à¨•à¨¾à¨¸ à¨¹à©ˆà¨¡à¨° à¨…à¨¤à©‡ à¨²à¨¾à¨‡à¨¬à¨°à©‡à¨°à©€à¨†à¨‚à¥¤</description>
    <description xml:lang="pl">Dodatkowe nagÅ‚Ã³wki i biblioteki do rozwijania aplikacji open source.</description>
    <description xml:lang="pt">CabeÃ§alhos de desenvolvimento adiiconal e bibliotecas para construir aplicativos de fonte aberta.</description>
    <description xml:lang="pt_BR">CabeÃ§alhos de desenvolvimento adiiconal e bibliotecas para construir aplicativos de fonte aberta.</description>
    <description xml:lang="ru">Ð”Ð¾Ð¿Ð¾Ð»Ð½Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ñ‹Ðµ Ð±Ð¸Ð±Ð»Ð¸Ð¾Ñ‚ÐµÐºÐ¸ Ð¸ Ñ„Ð°Ð¹Ð»Ñ‹ Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²ÐºÐ¾Ð² Ð´Ð»Ñ Ñ€Ð°Ð·Ñ€Ð°Ð±Ð¾Ñ‚ÐºÐ¸ Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ð¹ Ñ Ð¾Ñ‚ÐºÑ€Ñ‹Ñ‚Ñ‹Ð¼ ÐºÐ¾Ð´Ð¾Ð¼.</description>
    <description xml:lang="ta">à®¤à®¿à®± à®®à¯‚à®² à®ªà®¯à®©à¯à®ªà®¾à®Ÿà¯à®•à®³à¯ˆ à®‰à®°à¯à®µà®¾à®•à¯à®•à¯à®µà®¤à®±à¯à®•à®¾à®• à®•à¯‚à®Ÿà¯à®¤à®²à¯ à®‰à®°à¯à®µà®¾à®•à¯à®• à®¤à®²à¯ˆà®ªà¯à®ªà¯à®•à®³à¯ à®®à®±à¯à®±à¯à®®à¯ à®¤à®°à®µà®•à®™à¯à®•à®³à¯.</description>
    <description xml:lang="te">à°“à°ªà±†à°¨à±-à°¸à±‹à°°à±à°¸à± à°…à°¨à±à°µà°°à±à°¤à°¨à°¾à°²à°¨à± à°¨à°¿à°°à±à°®à°¿à°‚à°šà±à°Ÿà°•à± à°…à°¦à°¨à°ªà± à°…à°­à°¿à°µà±ƒà°¦à±à°¦à°¿ à°ªà±€à° à°¿à°•à°²à± à°®à°°à°¿à°¯à± à°²à±ˆà°¬à±à°°à°°à±€à°²à±.</description>
    <description xml:lang="uk">Ð”Ð¾Ð´Ð°Ñ‚ÐºÐ¾Ð²Ñ– Ð¿Ð°ÐºÑƒÐ½ÐºÐ¸ Ð· Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²ÐºÐ°Ð¼Ð¸ Ñ‚Ð° Ð±Ñ–Ð±Ð»Ñ–Ð¾Ñ‚ÐµÐºÐ°Ð¼Ð¸ Ð´Ð»Ñ Ñ€Ð¾Ð·Ñ€Ð¾Ð±ÐºÐ¸ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð½Ð¾Ð³Ð¾ Ð·Ð°Ð±ÐµÐ·Ð¿ÐµÑ‡ÐµÐ½Ð½Ñ Ð· Ð²Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ð¸Ð¼ ÐºÐ¾Ð´Ð¾Ð¼.</description>
    <description xml:lang="zh">ç”¨ä¾†å»ºç½®é–‹æ”¾å¼åŽŸå§‹ç¢¼æ‡‰ç”¨ç¨‹å¼çš„æ‡‰ç”¨ç¨‹å¼é–‹ç™¼è¡¨é ­èˆ‡å‡½å¼åº«ã€‚</description>
    <description xml:lang="zh_CN">ç”¨äºŽæž„å»ºå¼€æºåº”ç”¨ç¨‹åºçš„é™„åŠ å¼€å‘æ ‡å¤´åŠç¨‹åºå¯ã€‚</description>
    <description xml:lang="zh_TW">ç”¨ä¾†å»ºç½®é–‹æ”¾å¼åŽŸå§‹ç¢¼æ‡‰ç”¨ç¨‹å¼çš„æ‡‰ç”¨ç¨‹å¼é–‹ç™¼è¡¨é ­èˆ‡å‡½å¼åº«ã€‚</description>
    <default>true</default>
    <uservisible>false</uservisible>
    <packagelist>
      <packagereq type="mandatory">SDL-devel</packagereq>
      <packagereq type="mandatory">alsa-lib-devel</packagereq>
      <packagereq type="mandatory">binutils-devel</packagereq>
      <packagereq type="mandatory">boost-devel</packagereq>
      <packagereq type="mandatory">compat-libgfortran-48</packagereq>
      <packagereq type="mandatory">cups-devel</packagereq>
      <packagereq type="mandatory">dbus-glib-devel</packagereq>
      <packagereq type="mandatory">evolution-data-server-devel</packagereq>
      <packagereq type="mandatory">gd-devel</packagereq>
      <packagereq type="mandatory">gnome-desktop3-devel</packagereq>
      <packagereq type="mandatory">gnutls-devel</packagereq>
      <packagereq type="mandatory">gpm-devel</packagereq>
      <packagereq type="mandatory">gstreamer1-devel</packagereq>
      <packagereq type="mandatory">gstreamer1-plugins-base-devel</packagereq>
      <packagereq type="mandatory">gvfs-devel</packagereq>
      <packagereq type="mandatory">hunspell-devel</packagereq>
      <packagereq type="mandatory">java-1.8.0-openjdk-devel</packagereq>
      <packagereq type="mandatory">libXau-devel</packagereq>
      <packagereq type="mandatory">libXaw-devel</packagereq>
      <packagereq type="mandatory">libXinerama-devel</packagereq>
      <packagereq type="mandatory">libXmu-devel</packagereq>
      <packagereq type="mandatory">libXpm-devel</packagereq>
      <packagereq type="mandatory">libXrandr-devel</packagereq>
      <packagereq type="mandatory">libcanberra-devel</packagereq>
      <packagereq type="mandatory">libdrm-devel</packagereq>
      <packagereq type="mandatory">libnotify-devel</packagereq>
      <packagereq type="mandatory">libpfm-devel</packagereq>
      <packagereq type="mandatory">libpmem-devel</packagereq>
      <packagereq type="mandatory">libpmemblk-devel</packagereq>
      <packagereq type="mandatory">libpmemlog-devel</packagereq>
      <packagereq type="mandatory">libpmemobj++-devel</packagereq>
      <packagereq type="mandatory">libpmemobj++-doc</packagereq>
      <packagereq type="mandatory">libpmemobj-devel</packagereq>
      <packagereq type="mandatory">libpmempool-devel</packagereq>
      <packagereq type="mandatory">libpq-devel</packagereq>
      <packagereq type="mandatory">librpmem-devel</packagereq>
      <packagereq type="mandatory">librsvg2-devel</packagereq>
      <packagereq type="mandatory">librsvg2-tools</packagereq>
      <packagereq type="mandatory">libsoup-devel</packagereq>
      <packagereq type="mandatory">libssh-devel</packagereq>
      <packagereq type="mandatory">libtiff-devel</packagereq>
      <packagereq type="mandatory">libva-devel</packagereq>
      <packagereq type="mandatory">libvmem-devel</packagereq>
      <packagereq type="mandatory">libvmmalloc-devel</packagereq>
      <packagereq type="mandatory">libxslt-devel</packagereq>
      <packagereq type="mandatory">mariadb-devel</packagereq>
      <packagereq type="mandatory">motif-devel</packagereq>
      <packagereq type="mandatory">mpfr-devel</packagereq>
      <packagereq type="mandatory">net-snmp-devel</packagereq>
      <packagereq type="mandatory">newt-devel</packagereq>
      <packagereq type="mandatory">openscap-devel</packagereq>
      <packagereq type="mandatory">papi-devel</packagereq>
      <packagereq type="mandatory">protobuf-c</packagereq>
      <packagereq type="mandatory">pulseaudio-libs-devel</packagereq>
      <packagereq type="mandatory">sane-backends-devel</packagereq>
      <packagereq type="mandatory">scl-utils</packagereq>
      <packagereq type="mandatory">scl-utils-build</packagereq>
      <packagereq type="mandatory">slang-devel</packagereq>
      <packagereq type="mandatory">startup-notification-devel</packagereq>
      <packagereq type="mandatory">tbb-devel</packagereq>
      <packagereq type="mandatory">tk-devel</packagereq>
      <packagereq type="mandatory">unixODBC-devel</packagereq>
      <packagereq type="mandatory">xorg-x11-proto-devel</packagereq>
      <packagereq type="optional">flatpak</packagereq>
      <packagereq type="optional">flatpak-builder</packagereq>
      <packagereq type="optional">flatpak-selinux</packagereq>
      <packagereq type="optional">flatpak-session-helper</packagereq>
    </packagelist>
  </group>
  <group>
    <id>anaconda-tools</id>
    <name>Anaconda tools</name>
    <name xml:lang="de">Anaconda-Werkzeuge</name>
    <name xml:lang="es">Herramientas de anaconda</name>
    <name xml:lang="fr">Outils anaconda</name>
    <name xml:lang="it">Strumenti Anaconda</name>
    <name xml:lang="ja">Anaconda ãƒ„ãƒ¼ãƒ«</name>
    <name xml:lang="ko">Anaconda íˆ´ </name>
    <name xml:lang="pt_BR">Ferramentas Anaconda</name>
    <name xml:lang="ru">Ð˜Ð½ÑÑ‚Ñ€ÑƒÐ¼ÐµÐ½Ñ‚Ñ‹ Anaconda</name>
    <name xml:lang="zh_CN">Anaconda å·¥å…·</name>
    <name xml:lang="zh_TW">èŸ’è›‡å·¥å…·</name>
    <description/>
    <default>false</default>
    <uservisible>false</uservisible>
    <packagelist>
      <packagereq type="mandatory">authselect-compat</packagereq>
      <packagereq type="mandatory">kdump-anaconda-addon</packagereq>
    </packagelist>
  </group>
  <group>
    <id>backup-client</id>
    <name>Backup Client</name>
    <name xml:lang="as">à¦¬à§‡à¦•-à¦†à¦ª à¦•à§à¦²à¦¾à¦à¦¨à§à¦Ÿ</name>
    <name xml:lang="bn">à¦¬à§à¦¯à¦¾à¦•-à¦†à¦ª à¦•à§à¦²à¦¾à§Ÿà§‡à¦¨à§à¦Ÿ</name>
    <name xml:lang="cs">ZÃ¡lohovacÃ­ klient</name>
    <name xml:lang="de">Backup-Client</name>
    <name xml:lang="de_CH">Backup-Client</name>
    <name xml:lang="es">Cliente de respaldo</name>
    <name xml:lang="eu">Babeskopia-bezeroa</name>
    <name xml:lang="fr">Client de sauvegarde</name>
    <name xml:lang="gu">àª¬à«‡àª•àª…àªª àª•à«àª²àª¾àª¯àª¨à«àªŸ</name>
    <name xml:lang="hi">à¤¬à¥ˆà¤•à¤…à¤ª à¤•à¥à¤²à¤¾à¤‡à¤‚à¤Ÿ</name>
    <name xml:lang="ia">Cliente de retrocopiage</name>
    <name xml:lang="it">Client di backup</name>
    <name xml:lang="ja">ãƒãƒƒã‚¯ã‚¢ãƒƒãƒ—ã‚¯ãƒ©ã‚¤ã‚¢ãƒ³ãƒˆ</name>
    <name xml:lang="kn">à²¬à³à²¯à²¾à²•à³à²…à²ªà³ à²•à³à²²à³ˆà²‚à²Ÿà³</name>
    <name xml:lang="ko">ë°±ì—… í´ë¼ì´ì–¸íŠ¸</name>
    <name xml:lang="ml">à´¬à´¾à´•àµà´•à´ªàµà´ªàµ à´•àµà´²à´¯à´¨àµà´±àµ</name>
    <name xml:lang="mr">à¤¬à¥…à¤•à¤…à¤ª à¤•à¥à¤²à¤¾à¤à¤‚à¤Ÿ</name>
    <name xml:lang="or">à¬¨à¬•à¬² à¬¸à¬‚à¬°à¬•à­à¬·à¬£ à¬•à­à¬²à¬¾à¬à¬£à­à¬Ÿ</name>
    <name xml:lang="pa">à¨¬à©ˆà¨•à¨…à©±à¨ª à¨•à¨²à¨¾à¨‚à¨ˆà¨Ÿ</name>
    <name xml:lang="pl">Klient kopii zapasowych</name>
    <name xml:lang="pt">Cliente Backup</name>
    <name xml:lang="pt_BR">Cliente Backup</name>
    <name xml:lang="ru">Ð ÐµÐ·ÐµÑ€Ð²Ð½Ñ‹Ð¹ ÐºÐ»Ð¸ÐµÐ½Ñ‚</name>
    <name xml:lang="sv">SÃ¤kerhetskopieringsklient</name>
    <name xml:lang="ta">à®ªà®¿à®©à¯à®šà¯‡à®®à®¿à®ªà¯à®ªà¯ à®µà®¾à®Ÿà®¿à®•à¯à®•à¯ˆà®¯à®¾à®³à®°à¯</name>
    <name xml:lang="te">à°¬à±à°¯à°¾à°•à°ªà± à°•à±à°²à±ˆà°‚à°Ÿà±</name>
    <name xml:lang="uk">ÐšÐ»Ñ–Ñ”Ð½Ñ‚ Ñ€ÐµÐ·ÐµÑ€Ð²Ð½Ð¾Ð³Ð¾ ÐºÐ¾Ð¿Ñ–ÑŽÐ²Ð°Ð½Ð½Ñ</name>
    <name xml:lang="zh">å‚™ä»½å®¢æˆ¶ç«¯</name>
    <name xml:lang="zh_CN">å¤‡ä»½å®¢æˆ·ç«¯</name>
    <name xml:lang="zh_TW">å‚™ä»½å®¢æˆ¶ç«¯</name>
    <description>Client tools for connecting to a backup server and doing backups.</description>
    <description xml:lang="as">à¦¬à§‡à¦•-à¦†à¦ª à¦šà¦¾à§°à§à¦­à¦¾à§°à§° à¦¸à§ˆà¦¤à§‡ à¦¸à¦‚à¦¯à§‹à¦— à¦¸à§à¦¥à¦¾à¦ªà¦¨ à¦•à§°à¦¿ à¦¬à§‡à¦•-à¦†à¦ª à¦•à§°à¦¾à§° à¦¬à¦¾à¦¬à§‡ à¦•à§à¦²à¦¾à¦à¦¨à§à¦Ÿ à¦¸à¦à¦œà§à¦²à¦¿à¦¸à¦®à§‚à¦¹à¥¤</description>
    <description xml:lang="bn">à¦¬à§à¦¯à¦¾à¦•-à¦†à¦ª à¦¸à¦¾à¦°à§à¦­à¦¾à¦°à§‡à¦° à¦¸à¦¾à¦¥à§‡ à¦¸à¦‚à¦¯à§‹à¦— à¦¸à§à¦¥à¦¾à¦ªà¦¨ à¦•à¦°à§‡ à¦¬à§à¦¯à¦¾à¦•-à¦†à¦ª à¦•à¦°à¦¾à¦° à¦œà¦¨à§à¦¯ à¦¬à§à¦¯à¦¬à¦¹à¦¾à¦°à¦¯à§‹à¦—à§à¦¯ à¦•à§à¦²à¦¾à§Ÿà§‡à¦¨à§à¦Ÿ à¦ªà§à¦°à¦¾à¦¨à§à¦¤à§‡à¦° à¦¸à¦°à¦žà§à¦œà¦¾à¦®à¥¤</description>
    <description xml:lang="cs">KlientskÃ© nÃ¡stroje pro pÅ™Ã­stup na zÃ¡lohovacÃ­ servery a provÃ¡dÄ›nÃ­ zÃ¡loh.</description>
    <description xml:lang="de">Client-Tools zur Verbindung mit einem Backup-Server und zur DurchfÃ¼hrung von Backups.</description>
    <description xml:lang="de_CH">Client-Tools zur Verbindung mit einem Backup-Server und zur DurchfÃ¼hrung von Backups.</description>
    <description xml:lang="es">Herramientas de cliente para conectarse a un servidor de respaldo y hacer copias de seguridad.</description>
    <description xml:lang="fr">Outils client pour connecter Ã  un serveur de sauvegarde et faire des copies de sauvegarde.</description>
    <description xml:lang="gu">àª¬à«‡àª•àª…àªª àª¸àª°à«àªµàª° àª¸àª¾àª¥à«‡ àªœà«‹àª¡àª¾àªµàªµàª¾ àª®àª¾àªŸà«‡ àª•à«àª²àª¾àª¯àª¨à«àªŸ àª¸àª¾àª§àª¨ àª…àª¨à«‡ àª¬à«‡àª•àª…àªª àª²àª‡ àª°àª¹à«àª¯àª¾ àª›à«‡.</description>
    <description xml:lang="hi">à¤•à¤¿à¤¸à¥€ à¤¬à¥ˆà¤•à¤…à¤ª à¤¸à¤°à¥à¤µà¤° à¤¸à¥‡ à¤•à¤¨à¥‡à¤•à¥à¤Ÿ à¤•à¤°à¤¨à¥‡ à¤”à¤° à¤¬à¥ˆà¤•à¤…à¤ª à¤²à¥‡à¤¨à¥‡ à¤•à¥‡ à¤²à¤¿à¤ à¤•à¥à¤²à¤¾à¤‡à¤‚à¤Ÿ.</description>
    <description xml:lang="ia">Utensiles pro connecter al servitor de retrocopias e exequer salvamento de datos.</description>
    <description xml:lang="it">Tool del client per il collegamento ad un server di backup ed esecuzione di backup.</description>
    <description xml:lang="ja">ãƒãƒƒã‚¯ã‚¢ãƒƒãƒ—ã‚µãƒ¼ãƒãƒ¼ã«æŽ¥ç¶šã—ãƒãƒƒã‚¯ã‚¢ãƒƒãƒ—ã‚’å®Ÿè¡Œã™ã‚‹ãŸã‚ã®ã‚¯ãƒ©ã‚¤ã‚¢ãƒ³ãƒˆãƒ„ãƒ¼ãƒ«ã§ã™ã€‚</description>
    <description xml:lang="kn">à²¬à³à²¯à²¾à²•à³à²…à²ªà³ à²ªà³‚à²°à³ˆà²•à³†à²—à²£à²•à²¦à³Šà²‚à²¦à²¿à²—à³† à²¸à²‚à²ªà²°à³à²•à²¸à²¾à²§à²¿à²¸à²²à³ à²¹à²¾à²—à³ à²¬à³à²¯à²¾à²•à³à²…à²ªà³ à²…à²¨à³à²¨à³ à²¨à²¿à²°à³à²µà²¹à²¿à²¸à²²à³ à²¬à²³à²¸à²²à²¾à²—à³à²µ à²¬à³à²¯à²¾à²•à³à²…à²ªà³ à²‰à²ªà²•à²°à²£à²—à²³à³.</description>
    <description xml:lang="ko">ë°±ì—… ì„œë²„ì— ì ‘ì†í•˜ê³  ë°±ì—…ì„ ìˆ˜í–‰í•˜ê¸° ìœ„í•œ í´ë¼ì´ì–¸íŠ¸ ë„êµ¬</description>
    <description xml:lang="ml">à´¬à´¾à´•àµà´•à´ªàµà´ªàµ à´¸à´°àµâ€à´µà´±à´¿à´²àµ‡à´•àµà´•àµ à´•à´£à´•àµà´Ÿàµ à´šàµ†à´¯àµà´¤àµàµ à´¬à´¾à´•àµà´•à´ªàµà´ªàµà´•à´³àµâ€ à´Žà´Ÿàµà´•àµà´•àµà´¨àµà´¨à´¤à´¿à´¨àµà´³àµà´³ à´•àµà´²à´¯à´¨àµà´±àµ à´‰à´ªà´•à´°à´£à´™àµà´™à´³àµâ€.</description>
    <description xml:lang="mr">à¤¬à¥…à¤•à¤…à¤ª à¤¸à¤°à¥à¤µà¥à¤¹à¤°à¤¶à¥€ à¤œà¥‹à¤¡à¤£à¥€ à¤•à¤°à¤£à¥à¤¯à¤¾à¤¸à¤¾à¤ à¥€ à¤µ à¤¬à¥…à¤•à¤…à¤ªà¥à¤¸à¥ à¤•à¤°à¥€à¤¤à¤¾ à¤•à¥à¤²à¤¾à¤à¤‚à¤Ÿ à¤¸à¤¾à¤§à¤¨à¥‡.</description>
    <description xml:lang="or">à¬¨à¬•à¬² à¬¸à¬‚à¬°à¬•à­à¬·à¬£ à¬¸à¬°à­à¬­à¬° à¬¸à¬¹à¬¿à¬¤ à¬¸à¬‚à¬¯à­‹à¬— à¬•à¬°à¬¿ à¬¨à¬•à¬² à¬¸à¬‚à¬°à¬•à­à¬·à¬£ à¬•à¬°à¬¿à¬¬à¬¾ à¬ªà¬¾à¬‡à¬ à¬•à­à¬²à¬¾à¬à¬£à­à¬Ÿ à¬¸à¬¾à¬§à¬¨à¬—à­à¬¡à¬¼à¬¿à¬•à¥¤ </description>
    <description xml:lang="pa">à¨¬à©ˆà¨•à¨…à©±à¨ª à¨¸à¨°à¨µà¨° à¨¨à¨¾à¨² à¨œà©à©œà¨¨ à¨…à¨¤à©‡ à¨¬à©ˆà¨•à¨…à©±à¨ª à¨²à©ˆà¨£ à¨²à¨ˆ à¨•à¨²à¨¾à¨‚à¨ˆà¨Ÿ à¨Ÿà©‚à¨²à¥¤</description>
    <description xml:lang="pl">NarzÄ™dzia klienckie do Å‚Ä…czenia siÄ™ z serwerem kopii zapasowych i wykonywanie kopii zapasowych.</description>
    <description xml:lang="pt">Ferramentas de cliente para conectar ao servidor de backup e para fazer backups.</description>
    <description xml:lang="pt_BR">Ferramentas de cliente para conectar ao servidor de backup e para fazer backups.</description>
    <description xml:lang="ru">Ð˜Ð½ÑÑ‚Ñ€ÑƒÐ¼ÐµÐ½Ñ‚Ñ‹ ÐºÐ»Ð¸ÐµÐ½Ñ‚Ð° Ð´Ð»Ñ Ð¿Ð¾Ð´ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ Ðº Ñ€ÐµÐ·ÐµÑ€Ð²Ð½Ð¾Ð¼Ñƒ ÑÐµÑ€Ð²ÐµÑ€Ñƒ Ð¸ ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ñ€ÐµÐ·ÐµÑ€Ð²Ð½Ñ‹Ñ… ÐºÐ¾Ð¿Ð¸Ð¹.</description>
    <description xml:lang="sv">Klientverktyg fÃ¶r att ansluta till en sÃ¤kerhetskopieringsserver och gÃ¶ra sÃ¤kerhetskopior.</description>
    <description xml:lang="ta">à®’à®°à¯ à®ªà®¿à®©à¯à®šà¯‡à®®à®¿à®ªà¯à®ªà¯ à®šà¯‡à®µà¯ˆà®¯à®•à®®à¯ à®®à®±à¯à®±à¯à®®à¯ à®ªà®¿à®©à¯à®šà¯‡à®®à®¿à®ªà¯à®ªà¯à®•à®³à¯ˆ à®šà¯†à®¯à¯à®¤à®²à¯ˆ à®‡à®£à¯ˆà®ªà¯à®ªà®±à¯à®•à®¾à®© à®µà®¾à®Ÿà®¿à®•à¯à®•à¯ˆà®¯à®¾à®³à®°à¯ à®•à®°à¯à®µà®¿à®•à®³à¯.</description>
    <description xml:lang="te">à°¬à±à°¯à°¾à°•à°ªà± à°¸à°°à±à°µà°°à±â€Œà°•à± à°…à°¨à±à°¸à°‚à°§à°¾à°¨à°®à°—à±à°Ÿà°•à± à°®à°°à°¿à°¯à± à°¬à±à°¯à°¾à°•à°ªà±à°¸à± à°¤à±€à°¯à±à°Ÿà°•à± à°•à±à°²à±ˆà°‚à°Ÿà± à°¸à°¾à°§à°¨à°®à±à°²à±.</description>
    <description xml:lang="uk">ÐšÐ»Ñ–Ñ”Ð½Ñ‚ÑÑŒÐºÑ– Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¸ Ð´Ð»Ñ Ð²ÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ð·â€™Ñ”Ð´Ð½Ð°Ð½Ð½Ñ Ð· ÑÐµÑ€Ð²ÐµÑ€Ð¾Ð¼ Ñ€ÐµÐ·ÐµÑ€Ð²Ð½Ð¾Ð³Ð¾ ÐºÐ¾Ð¿Ñ–ÑŽÐ²Ð°Ð½Ð½Ñ Ñ‚Ð° ÑÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ñ€ÐµÐ·ÐµÑ€Ð²Ð½Ð¸Ñ… ÐºÐ¾Ð¿Ñ–Ð¹.</description>
    <description xml:lang="zh">ç”¨ä¾†é€£è‡³å‚™ä»½ä¼ºæœå™¨ä¸¦é€²è¡Œå‚™ä»½çš„å®¢æˆ¶ç«¯å·¥å…·ã€‚</description>
    <description xml:lang="zh_CN">ç”¨æ¥è¿žæŽ¥åˆ°å¤‡ä»½æœåŠ¡å™¨å¹¶è¿›è¡Œå¤‡ä»½çš„å®¢æˆ·ç«¯å·¥å…·ã€‚</description>
    <description xml:lang="zh_TW">ç”¨ä¾†é€£è‡³å‚™ä»½ä¼ºæœå™¨ä¸¦é€²è¡Œå‚™ä»½çš„å®¢æˆ¶ç«¯å·¥å…·ã€‚</description>
    <default>true</default>
    <uservisible>false</uservisible>
    <packagelist>
      <packagereq type="mandatory">amanda-client</packagereq>
      <packagereq type="optional">bacula-client</packagereq>
      <packagereq type="optional">rear</packagereq>
    </packagelist>
  </group>
  <group>
    <id>base</id>
    <name>Base</name>
    <name xml:lang="af">Basis</name>
    <name xml:lang="am">áˆ˜áˆ áˆ¨á‰µ</name>
    <name xml:lang="ar">Ø£Ø³Ø§Ø³ÙŠÙ‘Ø©</name>
    <name xml:lang="as">à¦­à¦¿à¦¤à§à¦¤à¦¿</name>
    <name xml:lang="bal">Ø§Ø³Ø§Ø³</name>
    <name xml:lang="be">ÐŸÐ°Ð´Ð¼ÑƒÑ€Ð°Ðº</name>
    <name xml:lang="bg">ÐžÑÐ½Ð¾Ð²Ð°</name>
    <name xml:lang="bn">à¦­à¦¿à¦¤à§à¦¤à¦¿ (Base)</name>
    <name xml:lang="bs">Osnova</name>
    <name xml:lang="ca">BÃ sic</name>
    <name xml:lang="cs">ZÃ¡klad</name>
    <name xml:lang="cy">Sail</name>
    <name xml:lang="da">Base</name>
    <name xml:lang="de">Basis</name>
    <name xml:lang="de_CH">Basis</name>
    <name xml:lang="el">Î’Î¬ÏƒÎ·</name>
    <name xml:lang="en_GB">Base</name>
    <name xml:lang="es">Base</name>
    <name xml:lang="et">Baas</name>
    <name xml:lang="fa">Ù¾Ø§ÛŒÙ‡</name>
    <name xml:lang="fa_IR">Ù¾Ø§ÛŒÙ‡</name>
    <name xml:lang="fi">Peruspaketit</name>
    <name xml:lang="fr">Base</name>
    <name xml:lang="gu">àª†àª§àª¾àª°</name>
    <name xml:lang="he">×‘×¡×™×¡</name>
    <name xml:lang="hi">à¤†à¤§à¤¾à¤°</name>
    <name xml:lang="hr">Osnova</name>
    <name xml:lang="hu">Alap</name>
    <name xml:lang="hy">Õ¢Õ¡Õ¦Õ¡</name>
    <name xml:lang="ia">Base</name>
    <name xml:lang="id">Dasar</name>
    <name xml:lang="is">Grunnur</name>
    <name xml:lang="it">Base</name>
    <name xml:lang="ja">ãƒ™ãƒ¼ã‚¹</name>
    <name xml:lang="ka">áƒ«áƒ˜áƒ áƒ˜áƒ—áƒáƒ“áƒ˜</name>
    <name xml:lang="kn">à²®à³‚à²²</name>
    <name xml:lang="ko">ê¸°ë³¸</name>
    <name xml:lang="lv">PamatsistÄ“ma</name>
    <name xml:lang="mai">à¤†à¤§à¤¾à¤°</name>
    <name xml:lang="mk">ÐžÑÐ½Ð¾Ð²Ð½Ð¸</name>
    <name xml:lang="ml">à´¬àµ†à´¯àµà´¸àµ</name>
    <name xml:lang="mr">à¤†à¤§à¤¾à¤°</name>
    <name xml:lang="ms">Asas</name>
    <name xml:lang="nb">Grunnpakker</name>
    <name xml:lang="ne">à¤†à¤§à¤¾à¤°</name>
    <name xml:lang="nl">Basis</name>
    <name xml:lang="no">Grunnpakker</name>
    <name xml:lang="nso">Motheo</name>
    <name xml:lang="or">à¬†à¬§à¬¾à¬°</name>
    <name xml:lang="pa">à¨®à©‚à¨²</name>
    <name xml:lang="pl">CzÄ™Å›Ä‡ podstawowa</name>
    <name xml:lang="pt">Base</name>
    <name xml:lang="pt_BR">Base</name>
    <name xml:lang="ro">BazÄƒ</name>
    <name xml:lang="ru">ÐžÑÐ½Ð¾Ð²Ð½Ñ‹Ðµ</name>
    <name xml:lang="si">à¶´à·à¶¯à¶¸</name>
    <name xml:lang="sk">ZÃ¡klad</name>
    <name xml:lang="sl">Osnovno</name>
    <name xml:lang="sq">BazÃ«</name>
    <name xml:lang="sr">ÐžÑÐ½Ð¾Ð²Ð°</name>
    <name xml:lang="sr@Latn">Osnova</name>
    <name xml:lang="sr@latin">Osnova</name>
    <name xml:lang="sv">Bas</name>
    <name xml:lang="ta">à®…à®Ÿà®¿à®ªà¯à®ªà®Ÿà¯ˆ</name>
    <name xml:lang="te">à°†à°§à°¾à°°à°‚</name>
    <name xml:lang="tg">ÐÑÐ¾ÑÒ³Ð¾</name>
    <name xml:lang="th">à¸žà¸·à¹‰à¸™à¸à¸²à¸™</name>
    <name xml:lang="tr">Temel</name>
    <name xml:lang="uk">ÐžÑÐ½Ð¾Ð²Ð°</name>
    <name xml:lang="ur">Ù…Ø±Ú©Ø²</name>
    <name xml:lang="vi">Cá»Ÿ sá»Ÿ</name>
    <name xml:lang="zh">åŸºç¤Ž</name>
    <name xml:lang="zh_CN">åŸºæœ¬</name>
    <name xml:lang="zh_TW">åŸºç¤Ž</name>
    <name xml:lang="zu">Isiqu</name>
    <description>The standard installation of CentOS Linux.</description>
    <default>true</default>
    <uservisible>false</uservisible>
    <packagelist>
      <packagereq type="mandatory">rsyslog-gnutls</packagereq>
      <packagereq type="mandatory">rsyslog-gssapi</packagereq>
      <packagereq type="mandatory">rsyslog-relp</packagereq>
      <packagereq type="default">fprintd-pam</packagereq>
      <packagereq type="default">insights-client</packagereq>
      <packagereq type="default">nmap-ncat</packagereq>
      <packagereq type="default">pinfo</packagereq>
      <packagereq type="default">plymouth</packagereq>
      <packagereq type="default">tcpdump</packagereq>
      <packagereq type="default">vim-enhanced</packagereq>
      <packagereq type="default">wget</packagereq>
    </packagelist>
  </group>
  <group>
    <id>base-x</id>
    <name>base-x</name>
    <name xml:lang="de">base-x</name>
    <name xml:lang="es">base-x</name>
    <name xml:lang="fr">base-x</name>
    <name xml:lang="it">base-x</name>
    <name xml:lang="ja">base-x</name>
    <name xml:lang="ko">base-x</name>
    <name xml:lang="pt">base-x</name>
    <name xml:lang="pt_BR">base-x</name>
    <name xml:lang="ru">Ð±Ð°Ð·Ð¾Ð²Ñ‹Ð¹</name>
    <name xml:lang="zh_CN">base-x</name>
    <name xml:lang="zh_TW">base-x</name>
    <description>Local X.org display server</description>
    <description xml:lang="de">Lokaler X.org-Anzeigeserver</description>
    <description xml:lang="es">Servidor de pantalla X.org local</description>
    <description xml:lang="fr">Serveur d'affichage d' X.org locale</description>
    <description xml:lang="it">Server di visualizzazione X.org locale</description>
    <description xml:lang="ja">ãƒ­ãƒ¼ã‚«ãƒ« X.org ãƒ‡ã‚£ã‚¹ãƒ—ãƒ¬ã‚¤ã‚µãƒ¼ãƒãƒ¼</description>
    <description xml:lang="ko">ë¡œì»¬ X.org ë””ìŠ¤í”Œë ˆì´ ì„œë²„ </description>
    <description xml:lang="pt">Servidor de exibiÃ§Ã£o X.org local</description>
    <description xml:lang="pt_BR">Servidor de exibiÃ§Ã£o X.org local</description>
    <description xml:lang="ru">Ð›Ð¾ÐºÐ°Ð»ÑŒÐ½Ñ‹Ð¹ ÑÐµÑ€Ð²ÐµÑ€ Ð¾Ñ‚Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ X.org</description>
    <description xml:lang="zh_CN">Local X.org æ˜¾ç¤ºæœåŠ¡å™¨</description>
    <description xml:lang="zh_TW">æœ¬åœ°X.orgé¡¯ç¤ºæœå‹™å™¨</description>
    <default>true</default>
    <uservisible>false</uservisible>
    <packagelist>
      <packagereq type="mandatory">glx-utils</packagereq>
      <packagereq type="mandatory">mesa-dri-drivers</packagereq>
      <packagereq type="mandatory">plymouth-system-theme</packagereq>
      <packagereq type="mandatory">xorg-x11-drv-ati</packagereq>
      <packagereq type="mandatory">xorg-x11-drv-evdev</packagereq>
      <packagereq type="mandatory">xorg-x11-drv-fbdev</packagereq>
      <packagereq type="mandatory">xorg-x11-drv-intel</packagereq>
      <packagereq type="mandatory">xorg-x11-drv-libinput</packagereq>
      <packagereq type="mandatory">xorg-x11-drv-nouveau</packagereq>
      <packagereq type="mandatory">xorg-x11-drv-qxl</packagereq>
      <packagereq type="mandatory">xorg-x11-drv-vesa</packagereq>
      <packagereq type="mandatory">xorg-x11-drv-vmware</packagereq>
      <packagereq type="mandatory">xorg-x11-drv-wacom</packagereq>
      <packagereq type="mandatory">xorg-x11-server-Xorg</packagereq>
      <packagereq type="mandatory">xorg-x11-utils</packagereq>
      <packagereq type="mandatory">xorg-x11-xauth</packagereq>
      <packagereq type="mandatory">xorg-x11-xinit</packagereq>
      <packagereq type="mandatory">xorg-x11-xinit-session</packagereq>
    </packagelist>
  </group>
  <group>
    <id>conflicts-appstream</id>
    <name>Conflicts AppStream</name>
    <name xml:lang="de">Konflikte AppStream</name>
    <name xml:lang="es">Conflictos AppStream</name>
    <name xml:lang="fr">Conflits AppStream</name>
    <name xml:lang="it">Conflitti AppStream</name>
    <name xml:lang="ja">AppStream ã¨ç«¶åˆ</name>
    <name xml:lang="ko">AppStreamê³¼ ì¶©ëŒ </name>
    <name xml:lang="pt_BR">AppStream de Conflitos</name>
    <name xml:lang="ru">ÐšÐ¾Ð½Ñ„Ð»Ð¸ÐºÑ‚Ñ‹ AppStream AppStream</name>
    <name xml:lang="zh_CN">ä¸Ž AppStream å†²çª</name>
    <name xml:lang="zh_TW">è¡çªAppStream</name>
    <description>This group includes packages conflicting with an everything installation from the AppStream repo</description>
    <description xml:lang="de">Diese Gruppe umfasst Pakete, die mit einer Komplettinstallation aus dem AppStream-Repository in Konflikt stehen</description>
    <description xml:lang="es">Este grupo incluye paquetes que entran en conflicto con una instalaciÃ³n de todo desde el repositorio de AppStream</description>
    <description xml:lang="fr">Ce groupe inclut des packages en conflit avec une installation de tous les packages Ã  partir du dÃ©pÃ´t AppStream</description>
    <description xml:lang="it">Questo gruppo include pacchetti in conflitto con un'installazione completa dal repository AppStream</description>
    <description xml:lang="ja">ã“ã®ã‚°ãƒ«ãƒ¼ãƒ—ã«ã¯ã€AppStream ãƒªãƒã‚¸ãƒˆãƒªãƒ¼ã‹ã‚‰ã® everything ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã¨ç«¶åˆã™ã‚‹ãƒ‘ãƒƒã‚±ãƒ¼ã‚¸ãŒå«ã¾ã‚Œã¦ã„ã¾ã™ã€‚</description>
    <description xml:lang="ko">ì´ ê·¸ë£¹ì—ëŠ” AppStream ë¦¬í¬ì§€í„°ë¦¬ë¥¼ í†µí•´ ì„¤ì¹˜ëœ ì†Œí”„íŠ¸ì›¨ì–´ì™€ ì¶©ëŒí•˜ëŠ” íŒ¨í‚¤ì§€ê°€ í¬í•¨ë˜ì–´ ìžˆìŠµë‹ˆë‹¤. </description>
    <description xml:lang="pt_BR">Este grupo inclui pacotes em conflito com uma instalaÃ§Ã£o de tudo do AppStream repo</description>
    <description xml:lang="ru">Ð­Ñ‚Ð° Ð³Ñ€ÑƒÐ¿Ð¿Ð° Ð²ÐºÐ»ÑŽÑ‡Ð°ÐµÑ‚ Ð² ÑÐµÐ±Ñ Ð¿Ð°ÐºÐµÑ‚Ñ‹, Ð¿Ñ€Ð¾Ñ‚Ð¸Ð²Ð¾Ñ€ÐµÑ‡Ð°Ñ‰Ð¸Ðµ ÑƒÑÑ‚Ð°Ð½Ð¾Ð²ÐºÐµ Ð¸Ð· AppStream repo</description>
    <description xml:lang="zh_CN">è¿™ä¸ªç»„åŒ…æ‹¬äº†ä¸Žé€šè¿‡ AppStream repo å®‰è£…çš„è½¯ä»¶å†²çªçš„è½¯ä»¶åŒ…</description>
    <description xml:lang="zh_TW">è©²çµ„åŒ…æ‹¬èˆ‡AppStreamå€‰åº«ä¸­çš„æ‰€æœ‰å®‰è£è¡çªçš„åŒ…</description>
    <default>false</default>
    <uservisible>false</uservisible>
    <packagelist/>
  </group>
  <group>
    <id>container-management</id>
    <name>Container Management</name>
    <name xml:lang="de">Containerverwaltung</name>
    <name xml:lang="es">GestiÃ³n de Contenedores</name>
    <name xml:lang="fr">Gestion des conteneurs</name>
    <name xml:lang="it">Gestione dei contenitori</name>
    <name xml:lang="ja">ã‚³ãƒ³ãƒ†ãƒŠãƒ¼ç®¡ç†</name>
    <name xml:lang="ko">ì»¨í…Œì´ë„ˆ ê´€ë¦¬ </name>
    <name xml:lang="pt_BR">GestÃ£o de Contentores</name>
    <name xml:lang="ru">Ð£Ð¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð¸Ðµ ÐºÐ¾Ð½Ñ‚ÐµÐ¹Ð½ÐµÑ€Ð°Ð¼Ð¸</name>
    <name xml:lang="zh_CN">å®¹å™¨ç®¡ç†</name>
    <name xml:lang="zh_TW">é›†è£ç®±ç®¡ç†</name>
    <description>Tools for managing Linux containers</description>
    <description xml:lang="de">Tools zur Verwaltung von Linux-Containern</description>
    <description xml:lang="es">Herramientas para la gestiÃ³n de contenedores Linux</description>
    <description xml:lang="fr">Outils de gestion des conteneurs Linux</description>
    <description xml:lang="it">Strumenti per la gestione dei contenitori Linux</description>
    <description xml:lang="ja">Linux ã‚³ãƒ³ãƒ†ãƒŠãƒ¼ç®¡ç†ç”¨ã®ãƒ„ãƒ¼ãƒ«</description>
    <description xml:lang="ko">Linux ì»¨í…Œì´ë„ˆ ê´€ë¦¬ë¥¼ ìœ„í•œ íˆ´ </description>
    <description xml:lang="pt">Ferramentas para gerenciamento de containers Linux</description>
    <description xml:lang="pt_BR">Ferramentas para gerenciamento de containers Linux</description>
    <description xml:lang="ru">Ð˜Ð½ÑÑ‚Ñ€ÑƒÐ¼ÐµÐ½Ñ‚Ñ‹ Ð´Ð»Ñ ÑƒÐ¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð¸Ñ ÐºÐ¾Ð½Ñ‚ÐµÐ¹Ð½ÐµÑ€Ð°Ð¼Ð¸ Linux</description>
    <description xml:lang="zh_CN">ç”¨äºŽç®¡ç† Linux å®¹å™¨çš„å·¥å…·</description>
    <description xml:lang="zh_TW">ç”¨æ–¼ç®¡ç†Linuxå®¹å™¨çš„å·¥å…·</description>
    <default>true</default>
    <uservisible>true</uservisible>
    <packagelist>
      <packagereq type="mandatory">buildah</packagereq>
      <packagereq type="mandatory">containernetworking-plugins</packagereq>
      <packagereq type="mandatory">podman</packagereq>
      <packagereq type="optional">python3-psutil</packagereq>
    </packagelist>
  </group>
  <group>
    <id>core</id>
    <name>Core</name>
    <name xml:lang="af">Kern</name>
    <name xml:lang="am">áˆ›á‹•áŠ¨áˆ‹á‹Š á‰¦á‰³</name>
    <name xml:lang="ar">Ø§Ù„Ù„Ø¨Ù‘</name>
    <name xml:lang="as">à¦­à¦¿à¦¤à§à¦¤à¦¿</name>
    <name xml:lang="bal">Ù‡Ø³ØªÚ¯</name>
    <name xml:lang="be">ÐŸÐ°Ð´Ð¼ÑƒÑ€Ð°Ðº</name>
    <name xml:lang="bg">ÐžÑÐ½Ð¾Ð²Ð°</name>
    <name xml:lang="bn">à¦•à§‹à¦°</name>
    <name xml:lang="bs">Jezgra</name>
    <name xml:lang="ca">Nucli</name>
    <name xml:lang="cs">ÃšplnÃ½ zÃ¡klad</name>
    <name xml:lang="cy">Craidd</name>
    <name xml:lang="da">GrundlÃ¦ggende</name>
    <name xml:lang="de">Kern</name>
    <name xml:lang="de_CH">Kern</name>
    <name xml:lang="el">Î Ï…ÏÎ®Î½Î±Ï‚</name>
    <name xml:lang="en_GB">Core</name>
    <name xml:lang="es">NÃºcleo</name>
    <name xml:lang="et">Tuum</name>
    <name xml:lang="fa">Ø§ØµÙ„</name>
    <name xml:lang="fa_IR">Ø§ØµÙ„</name>
    <name xml:lang="fi">Keskeiset</name>
    <name xml:lang="fr">Core</name>
    <name xml:lang="gl">NÃºcleo</name>
    <name xml:lang="gu">àª®à«‚àª³</name>
    <name xml:lang="he">×œ×™×‘×”</name>
    <name xml:lang="hi">à¤•à¥‹à¤°</name>
    <name xml:lang="hr">Jezgra</name>
    <name xml:lang="hu">Mag</name>
    <name xml:lang="hy">Õ€Õ«Õ´Ö„</name>
    <name xml:lang="ia">Nucleo</name>
    <name xml:lang="id">Inti</name>
    <name xml:lang="ilo">Bugas</name>
    <name xml:lang="is">LÃ¡gmarkskerfi</name>
    <name xml:lang="it">Principale</name>
    <name xml:lang="ja">ã‚³ã‚¢</name>
    <name xml:lang="ka">áƒ‘áƒ˜áƒ áƒ—áƒ•áƒ˜</name>
    <name xml:lang="kn">à²…à²‚à²¤à²¸à³à²¸à²¾à²°</name>
    <name xml:lang="ko">í•µì‹¬</name>
    <name xml:lang="lv">PamatsistÄ“ma</name>
    <name xml:lang="mai">à¤•à¥‹à¤°</name>
    <name xml:lang="mk">ÐžÑÐ½Ð¾Ð²Ð½Ð¸</name>
    <name xml:lang="ml">à´•àµ‹à´±àµâ€</name>
    <name xml:lang="mr">à¤•à¥‹à¤°</name>
    <name xml:lang="ms">Teras</name>
    <name xml:lang="nb">Kjerne</name>
    <name xml:lang="ne">à¤•à¥‹à¤°</name>
    <name xml:lang="nl">Kern</name>
    <name xml:lang="no">Kjerne</name>
    <name xml:lang="nso">Bogare</name>
    <name xml:lang="or">à¬ªà­à¬°à¬®à­‚à¬–</name>
    <name xml:lang="pa">à¨®à©‚à¨²</name>
    <name xml:lang="pl">RdzeÅ„</name>
    <name xml:lang="pt">NÃºcleo</name>
    <name xml:lang="pt_BR">NÃºcleo</name>
    <name xml:lang="ro">Nucleu</name>
    <name xml:lang="ru">ÐžÑÐ½Ð¾Ð²Ð°</name>
    <name xml:lang="si">à¶±à·Šâ€à¶ºà·‚à·Šà¶¨à·’à¶º</name>
    <name xml:lang="sk">Jadro</name>
    <name xml:lang="sl">Jedro</name>
    <name xml:lang="sq">BÃ«rthama</name>
    <name xml:lang="sr">Ð¡Ñ€Ð¶</name>
    <name xml:lang="sr@Latn">SrÅ¾</name>
    <name xml:lang="sr@latin">SrÅ¾</name>
    <name xml:lang="sv">Grund</name>
    <name xml:lang="ta">à®•à¯‹à®°à¯</name>
    <name xml:lang="te">à°…à°‚à°¤à°°à±à°­à°¾à°—à°‚</name>
    <name xml:lang="tg">Ð¡Ð¸ÑÑ‚ÐµÐ¼Ð°</name>
    <name xml:lang="th">à¹à¸à¸™à¸«à¸¥à¸±à¸</name>
    <name xml:lang="tr">Ã‡ekirdek</name>
    <name xml:lang="uk">ÐžÑÐ½Ð¾Ð²Ð°</name>
    <name xml:lang="ur">Ù…Ø±Ú©Ø²</name>
    <name xml:lang="vi">LÃµi</name>
    <name xml:lang="zh">æ ¸å¿ƒ</name>
    <name xml:lang="zh_CN">æ ¸å¿ƒ</name>
    <name xml:lang="zh_TW">æ ¸å¿ƒ</name>
    <name xml:lang="zu">Okuyikhona</name>
    <description>Smallest possible installation</description>
    <description xml:lang="af">Kleinste moontlike installasie</description>
    <description xml:lang="am">á‰µáŠ•áˆ¹ á‹¨áˆšá‰»áˆˆá‹ á‹¨áˆ›áˆµáŒˆá‰£á‰µ áˆ¥áˆ«</description>
    <description xml:lang="ar">Ø£ØµØºØ± ØªØ«Ø¨ÙŠØª Ù…ØªØ§Ø­</description>
    <description xml:lang="as">à¦•à§à¦·à§à¦¦à§à§°à¦¤à¦® à¦¸à¦®à§à¦­à§± à¦‡à¦¨à¦¸à§à¦Ÿà¦²</description>
    <description xml:lang="bal">Ù‡ÙˆØ±Ø¯ØªØ±ÛŒÙ† Ù†ØµØ¨ Ù…Ù…Ú©Ù†</description>
    <description xml:lang="be">ÐÐ°Ð¹Ð¼ÐµÐ½ÑˆÐ°Ñ Ð· Ð¼Ð°Ð³Ñ‡Ñ‹Ð¼Ñ‹Ñ… ÑƒÑÑ‚Ð°Ð»Ñ‘ÑžÐºÐ°</description>
    <description xml:lang="bg">ÐÐ°Ð¹-Ð¼Ð°Ð»ÐºÐ°Ñ‚Ð° Ð²ÑŠÐ·Ð¼Ð¾Ð¶Ð½Ð° Ð¸Ð½ÑÑ‚Ð°Ð»Ð°Ñ†Ð¸Ñ</description>
    <description xml:lang="bn">à¦¨à§à¦¯à§‚à¦¨à¦¤à¦® à¦‡à¦¨à¦¸à§à¦Ÿà¦²à§‡à¦¶à¦¨</description>
    <description xml:lang="bs">Najmanja moguÄ‡a instalacija</description>
    <description xml:lang="ca">La instalÂ·laciÃ³ mÃ©s petita possible</description>
    <description xml:lang="cs">NejmenÅ¡Ã­ moÅ¾nÃ¡ instalace</description>
    <description xml:lang="cy">Arsefydliad lleiaf posib</description>
    <description xml:lang="da">Mindst mulige installation</description>
    <description xml:lang="de">KleinstmÃ¶gliche Installation</description>
    <description xml:lang="de_CH">KleinstmÃ¶gliche Installation</description>
    <description xml:lang="el">ÎœÎ¹ÎºÏÏŒÏ„ÎµÏÎ· Î´Ï…Î½Î±Ï„Î® ÎµÎ³ÎºÎ±Ï„Î¬ÏƒÏ„Î±ÏƒÎ·</description>
    <description xml:lang="en_GB">Smallest possible installation</description>
    <description xml:lang="es">InstalaciÃ³n lo mÃ¡s pequeÃ±a posible</description>
    <description xml:lang="et">VÃ¤ikseim vÃµimalik installatsioon</description>
    <description xml:lang="fa">Ú©ÙˆÚ†Ú©ØªØ±ÛŒÙ† Ù†ØµØ¨ Ù…Ù…Ú©Ù†</description>
    <description xml:lang="fa_IR">Ú©ÙˆÚ†Ú©ØªØ±ÛŒÙ† Ù†ØµØ¨ Ù…Ù…Ú©Ù†</description>
    <description xml:lang="fi">Pienin mahdollinen asennus</description>
    <description xml:lang="fr">Installation minimale</description>
    <description xml:lang="gu">àª¨àª¾àª¨àª¾àª®àª¾àª‚ àª¨àª¾àª¨àª¾ àª¶àª•à«àª¯ àª¸à«àª¥àª¾àªªàª¨à«‹</description>
    <description xml:lang="he">×”×ª×§× ×” ×ž×–×¢×¨×™×ª</description>
    <description xml:lang="hi">à¤¸à¤¬à¤¸à¥‡ à¤›à¥‹à¤Ÿà¤¾ à¤¸à¤‚à¤­à¤¾à¤µà¤¿à¤¤ à¤…à¤§à¤¿à¤·à¥à¤ à¤¾à¤ªà¤¨</description>
    <description xml:lang="hr">Najmanja moguÄ‡a instalacija</description>
    <description xml:lang="hu">MinimÃ¡lis telepÃ­tÃ©s</description>
    <description xml:lang="hy">Õ“Õ¸Ö„Ö€Õ¡Õ£Õ¸Ö‚ÕµÕ¶ Õ°Õ¶Õ¡Ö€Õ¡Õ¾Õ¸Ö€ Õ¿Õ¥Õ²Õ¡Õ¤Ö€Õ¸Ö‚Õ´</description>
    <description xml:lang="ia">Le plus parve installation possibile</description>
    <description xml:lang="id">Instalasi sekecil mungkin</description>
    <description xml:lang="is">LÃ¡gmarks uppsetning</description>
    <description xml:lang="it">Installazione minima</description>
    <description xml:lang="ja">æœ€å°é™ã®ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«</description>
    <description xml:lang="ka">áƒ£áƒ›áƒªáƒ˜áƒ áƒ”áƒ¡áƒ˜ áƒ¨áƒ”áƒ¡áƒáƒ«áƒšáƒ áƒ©áƒáƒ“áƒ’áƒ›áƒ</description>
    <description xml:lang="kn">à²•à²¨à²¿à²·à³à²Ÿ à²¸à²¾à²§à³à²¯à²µà²¿à²°à³à²µ à²…à²¨à³à²¸à³à²¥à²¾à²ªà²¨à³†</description>
    <description xml:lang="ko">ê°€ëŠ¥í•œ ìµœì†Œ ì„¤ì¹˜</description>
    <description xml:lang="lv">VismazÄkÄ iespÄ“jamÄ instalÄcija</description>
    <description xml:lang="mai">à¤¸à¤¬à¤¸à¤ à¤›à¥‹à¤Ÿ à¤¸à¤‚à¤­à¤¾à¤µà¤¿à¤¤ à¤¸à¤‚à¤¸à¥à¤¥à¤¾à¤ªà¤¨</description>
    <description xml:lang="mk">ÐÐ°Ñ˜Ð¼Ð°Ð»Ð°Ñ‚Ð° Ð¼Ð¾Ð¶Ð½Ð° Ð¸Ð½ÑÑ‚Ð°Ð»Ð°Ñ†Ð¸Ñ˜Ð°</description>
    <description xml:lang="ml">à´¸à´¾à´§àµà´¯à´®à´¾à´¯ à´à´±àµà´±à´µàµà´‚ à´šàµ†à´±à´¿à´¯ à´‡à´¨àµâ€à´¸àµà´±àµà´±à´²àµ‡à´·à´¨àµâ€</description>
    <description xml:lang="mr">à¤¸à¤°à¥à¤µà¤¾à¤¤ à¤²à¤¹à¤¾à¤¨ à¤¶à¤•à¥à¤¯ à¤ªà¥à¤°à¤¤à¤¿à¤·à¥à¤ à¤¾à¤ªà¤¨</description>
    <description xml:lang="ms">Pemasangan sekecil mungkin</description>
    <description xml:lang="nb">Minste mulige installering</description>
    <description xml:lang="ne">à¤¸à¤®à¥à¤­à¤¾à¤µà¤¿à¤¤ à¤¸à¤¬à¥ˆà¤­à¤¨à¥à¤¦à¤¾ à¤¸à¤¾à¤¨à¥‹ à¤¸à¥à¤¥à¤¾à¤ªà¤¨à¤¾</description>
    <description xml:lang="nl">Kleinst mogelijke installatie</description>
    <description xml:lang="no">Minste mulige installering</description>
    <description xml:lang="nso">Go tsenya mo go kgonegago go gonyenyane kudu</description>
    <description xml:lang="or">à¬•à­à¬·à­à¬¦à­à¬°à¬¤à¬® à¬¸à¬®à­à¬­à¬¾à¬¬à­à¬¯ à¬¸à­à¬¥à¬¾à¬ªà¬¨</description>
    <description xml:lang="pa">à¨˜à©±à¨Ÿà©‹-à¨˜à©±à¨Ÿ à¨¸à©°à¨­à¨µ à¨‡à©°à¨¸à¨Ÿà¨¾à¨²à©‡à¨¶à¨¨</description>
    <description xml:lang="pl">Najmniejsza moÅ¼liwa instalacja</description>
    <description xml:lang="pt">A mais pequena instalaÃ§Ã£o possÃ­vel</description>
    <description xml:lang="pt_BR">A mais pequena instalaÃ§Ã£o possÃ­vel</description>
    <description xml:lang="ro">Cea mai micÄƒ instalare posibilÄƒ</description>
    <description xml:lang="ru">ÐœÐ¸Ð½Ð¸Ð¼Ð°Ð»ÑŒÐ½Ð°Ñ ÑƒÑÑ‚Ð°Ð½Ð¾Ð²ÐºÐ°</description>
    <description xml:lang="si">à·ƒà·’à¶¯à·”à¶šà¶½ à·„à·à¶šà·’ à¶‰à¶­à·à¶¸ à¶šà·”à¶©à· à·ƒà·Šà¶®à·à¶´à¶±à¶º</description>
    <description xml:lang="sk">NajmenÅ¡ia moÅ¾nÃ¡ inÅ¡talÃ¡cia</description>
    <description xml:lang="sl">NajmanjÅ¡a moÅ¾na namestitev</description>
    <description xml:lang="sq">Instalimi mÃ« i vogÃ«l i mundshÃ«m</description>
    <description xml:lang="sr">ÐÐ°Ñ˜Ð¼Ð°ÑšÐ° Ð¼Ð¾Ð³ÑƒÑ›Ð° Ð¸Ð½ÑÑ‚Ð°Ð»Ð°Ñ†Ð¸Ñ˜Ð°</description>
    <description xml:lang="sr@Latn">Najmanja moguÄ‡a instalacija</description>
    <description xml:lang="sr@latin">Najmanja moguÄ‡a instalacija</description>
    <description xml:lang="sv">Minsta mÃ¶jliga installation</description>
    <description xml:lang="ta">à®®à®¿à®• à®šà®¿à®±à®¿à®¯ à®¨à®¿à®±à¯à®µà®²à¯</description>
    <description xml:lang="te">à°¸à°¾à°§à±à°¯à°®à°—à± à°šà°¿à°¨à±à°¨ à°¸à°‚à°¸à±à°¥à°¾à°ªà°¨</description>
    <description xml:lang="tg">Ð¡Ð°Ð±Ñ‚ÐºÑƒÐ½Ð¸Ð¸ Ð¾Ð´Ð´Ó£</description>
    <description xml:lang="th">à¸•à¸´à¸”à¸•à¸±à¹‰à¸‡à¹ƒà¸«à¹‰à¸¡à¸µà¸‚à¸™à¸²à¸”à¹€à¸¥à¹‡à¸à¸—à¸µà¹ˆà¸ªà¸¸à¸”à¸—à¸µà¹ˆà¹€à¸›à¹‡à¸™à¹„à¸›à¹„à¸”à¹‰</description>
    <description xml:lang="tr">OlasÄ± en kÃ¼Ã§Ã¼k kurulum</description>
    <description xml:lang="uk">ÐœÑ–Ð½Ñ–Ð¼Ð°Ð»ÑŒÐ½Ð¾ Ð¼Ð¾Ð¶Ð»Ð¸Ð²Ðµ Ð²ÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ</description>
    <description xml:lang="ur">Ú†Ú¾Ùˆ Ù¹ÛŒ Ù…Ù…Ú©Ù† Ø§Ù†Ø³Ù¹Ù„Ù„Ø´Ù† </description>
    <description xml:lang="vi">CÃ i Ä‘áº·t nhá» tá»‘i thiá»ƒu</description>
    <description xml:lang="zh">æœ€å°å®‰è£</description>
    <description xml:lang="zh_CN">æœ€å°å®‰è£…</description>
    <description xml:lang="zh_TW">æœ€å°å®‰è£</description>
    <description xml:lang="zu">Ukufakwa okuncane</description>
    <default>true</default>
    <uservisible>false</uservisible>
    <packagelist>
      <packagereq type="mandatory">plymouth</packagereq>
      <packagereq type="mandatory">rsyslog</packagereq>
      <packagereq type="optional">initial-setup</packagereq>
    </packagelist>
  </group>
  <group>
    <id>debugging</id>
    <name>Debugging Tools</name>
    <name xml:lang="as">à¦¡à¦¿à¦¬à¦¾à¦— à¦•à§°à¦¾ à¦¸à¦à¦œà§à¦²à¦¿à¦¸à¦®à§‚à¦¹</name>
    <name xml:lang="bn">à¦¡à¦¿à¦¬à¦¾à¦— à¦•à¦°à¦¤à§‡ à¦¬à§à¦¯à¦¬à¦¹à§ƒà¦¤ à¦¸à¦°à¦žà§à¦œà¦¾à¦®</name>
    <name xml:lang="cs">NÃ¡stroje pro ladÄ›nÃ­</name>
    <name xml:lang="de">Debugging-Tools</name>
    <name xml:lang="de_CH">Debugging-Tools</name>
    <name xml:lang="es">Herramientas de depuraciÃ³n</name>
    <name xml:lang="fr">Outils de dÃ©bogage</name>
    <name xml:lang="gu">àª¡àª¿àª¬àª—à«€àª‚àª— àª¸àª¾àª§àª¨à«‹</name>
    <name xml:lang="hi">à¤¡à¤¿à¤¬à¤—à¤¿à¤‚à¤— à¤”à¤œà¤¼à¤¾à¤°</name>
    <name xml:lang="ia">Instrumentos de depuration</name>
    <name xml:lang="it">Tool per il debug</name>
    <name xml:lang="ja">ãƒ‡ãƒãƒƒã‚°ãƒ„ãƒ¼ãƒ«</name>
    <name xml:lang="kn">à²¦à³‹à²·à²¨à²¿à²µà²¾à²°à²£à²¾ à²‰à²ªà²•à²°à²£à²—à²³à³</name>
    <name xml:lang="ko">ë””ë²„ê¹… íˆ´ </name>
    <name xml:lang="ml">à´¡àµ€à´¬à´—àµà´—à´¿à´™àµ à´‰à´ªà´•à´°à´£à´™àµà´™à´³àµâ€</name>
    <name xml:lang="mr">à¤¡à¤¿à¤¬à¤—à¥€à¤‚à¤— à¤¸à¤¾à¤§à¤¨à¥‡</name>
    <name xml:lang="or">à¬¤à­à¬°à­à¬Ÿà¬¿ à¬¨à¬¿à¬¬à¬¾à¬°à¬£ à¬¸à¬¾à¬§à¬¨à¬—à­à¬¡à¬¼à¬¿à¬•</name>
    <name xml:lang="pa">à¨¡à©€à¨¬à©±à¨—à¨¿à©°à¨— à¨¸à©°à¨¦</name>
    <name xml:lang="pl">NarzÄ™dzia debugowania</name>
    <name xml:lang="pt">Ferramentas de depuraÃ§Ã£o</name>
    <name xml:lang="pt_BR">Ferramentas de depuraÃ§Ã£o</name>
    <name xml:lang="ru">Ð¡Ñ€ÐµÐ´ÑÑ‚Ð²Ð° Ð¾Ñ‚Ð»Ð°Ð´ÐºÐ¸</name>
    <name xml:lang="sv">FelsÃ¶kningsverktyg</name>
    <name xml:lang="ta">à®ªà®¿à®´à¯ˆà®¤à®¿à®°à¯à®¤à¯à®¤ à®•à®°à¯à®µà®¿à®•à®³à¯</name>
    <name xml:lang="te">à°¡à±€à°¬à°—à±à°—à°¿à°‚à°—à± à°¸à°¾à°§à°¨à°®à±à°²à±</name>
    <name xml:lang="uk">Ð†Ð½ÑÑ‚Ñ€ÑƒÐ¼ÐµÐ½Ñ‚Ð¸ Ð´Ð»Ñ Ð·Ð½ÐµÐ²Ð°Ð´Ð¶ÑƒÐ²Ð°Ð½Ð½Ñ</name>
    <name xml:lang="zh">é™¤éŒ¯å·¥å…·</name>
    <name xml:lang="zh_CN">è°ƒè¯•å·¥å…·</name>
    <name xml:lang="zh_TW">é™¤éŒ¯å·¥å…·</name>
    <description>Tools for debugging misbehaving applications and diagnosing performance problems.</description>
    <description xml:lang="as">à¦¬à¦¿à¦¶à§ƒà¦™à§à¦–à¦² à¦à¦ªà§à¦²à¦¿à¦•à§‡à¦šà¦¨ à¦¡à¦¿à¦¬à¦¾à¦— à¦•à§°à¦¾à§° à¦¬à¦¾à¦¬à§‡ à¦†à§°à§ à¦•à¦¾à§°à§à¦¯à§à¦¯à¦•à§à¦·à¦®à¦¤à¦¾à§° à¦¸à¦®à¦¸à§à¦¯à¦¾à§° à¦•à¦¾à§°à¦£ à¦¨à¦¿à§°à§à¦£à§Ÿ à¦•à§°à¦¾à§° à¦¬à¦¾à¦¬à§‡ à¦¬à¦¿à¦­à¦¿à¦¨à§à¦¨ à¦¸à¦à¦œà§à¦²à¦¿à¦¸à¦®à§‚à¦¹à¥¤</description>
    <description xml:lang="bn">à¦¬à¦¿à¦¶à§ƒà¦™à§à¦–à¦² à¦…à§à¦¯à¦¾à¦ªà§à¦²à¦¿à¦•à§‡à¦¶à¦¨ à¦¡à¦¿à¦¬à¦¾à¦— à¦•à¦°à¦¾à¦° à¦œà¦¨à§à¦¯ à¦“ à¦•à¦°à§à¦®à¦•à§à¦·à¦®à¦¤à¦¾à¦° à¦¸à¦®à¦¸à§à¦¯à¦¾à¦° à¦•à¦¾à¦°à¦£à¦¨à¦¿à¦°à§à¦£à§Ÿ à¦•à¦°à¦¾à¦° à¦œà¦¨à§à¦¯ à¦¬à¦¿à¦­à¦¿à¦¨à§à¦¨ à¦¸à¦°à¦žà§à¦œà¦¾à¦®à¥¤</description>
    <description xml:lang="cs">NÃ¡stroje pro ladÄ›nÃ­ nesprÃ¡vnÄ› bÄ›Å¾Ã­cÃ­ch aplikacÃ­ a diagnostiku potÃ­Å¾Ã­ s vÃ½konem.</description>
    <description xml:lang="de">Tools fÃ¼r das Debuggen von fehlerhaften Anwendungen und zur Diagnose von Performanzproblemen.</description>
    <description xml:lang="de_CH">Tools fÃ¼r das Debuggen von fehlerhaften Anwendungen und zur Diagnose von Performanzproblemen.</description>
    <description xml:lang="es">Herramientas para depuraciÃ³n de aplicaciones que se comportan mal y diagnosis de problemas de rendimiento.</description>
    <description xml:lang="fr">Outils pour dÃ©boguer les applications ayant un mauvais comportement et diagnostiquer les problÃ¨mes de performance.</description>
    <description xml:lang="gu">àª–àª°àª¾àª¬ àªµàª°à«àª£àª¤à«‚àª•àªµàª¾àª³àª¾ àª•àª¾àª°à«àª¯àª•à«àª°àª®à«‹àª¨à«àª‚ àª¡àª¿àª¬àª—à«€àª‚àª— àª…àª¨à«‡ àªªà«àª°àª­àª¾àªµàª¨à«€ àª¸àª®àª¸à«àª¯àª¾àª“àª¨à«àª‚ àª¨àª¿àª¦àª¾àª¨ àª•àª°àªµàª¾ àª®àª¾àªŸà«‡àª¨àª¾àª‚ àª¸àª¾àª§àª¨à«‹.</description>
    <description xml:lang="hi">à¤¬à¥à¤°à¥‡ à¤…à¤¨à¥à¤ªà¥à¤°à¤¯à¥‹à¤—à¥‹à¤‚ à¤”à¤° à¤ªà¥à¤°à¤¦à¤°à¥à¤¶à¤¨ à¤¸à¤®à¤¸à¥à¤¯à¤¾ à¤•à¥‡ à¤¨à¤¿à¤¦à¤¾à¤¨ à¤•à¥‡ à¤²à¤¿à¤ à¤”à¤œà¤¾à¤°.</description>
    <description xml:lang="ia">Utensiles pro depurar applicationes que non es functionante correctemente, e pro diagnosticar problemas in le rendimento.</description>
    <description xml:lang="it">Tool per il debug di applicazioni errate e per la diagnosi dei problemi sulle prestazioni.</description>
    <description xml:lang="ja">æ­£ã—ãå‹•ä½œã—ãªã„ã‚¢ãƒ—ãƒªã‚±ãƒ¼ã‚·ãƒ§ãƒ³ã‚’ãƒ‡ãƒãƒƒã‚°ã—ã€ãƒ‘ãƒ•ã‚©ãƒ¼ãƒžãƒ³ã‚¹ã®å•é¡Œã‚’åˆ†æžã™ã‚‹ãƒ„ãƒ¼ãƒ«ã§ã™ã€‚</description>
    <description xml:lang="kn">à²¤à²ªà³à²ªà²¾à²—à²¿ à²µà²°à³à²¤à²¿à²¸à³à²µ à²…à²¨à³à²µà²¯à²—à²³ à²¦à³‹à²·à²¨à²¿à²µà²¾à²°à²£à³† à²¹à²¾à²—à³ à²•à²¾à²°à³à²¯à²¨à²¿à²°à³à²µà²¹à²£à³†à²¯à²²à³à²²à²¿à²¨ à²¤à³Šà²‚à²¦à²°à³†à²—à²³à²¨à³à²¨à³ à²¨à²¿à²µà²¾à²°à²¿à²¸à³à²µ à²‰à²ªà²•à²°à²£à²—à²³à³.</description>
    <description xml:lang="ko">ì œëŒ€ë¡œ ìž‘ë™í•˜ì§€ ì•ŠëŠ” ì• í”Œë¦¬ì¼€ì´ì…˜ì˜ ë””ë²„ê¹…ê³¼ ì„±ëŠ¥ ë¬¸ì œ ì§„ë‹¨ì„ ìœ„í•œ íˆ´ìž…ë‹ˆë‹¤. </description>
    <description xml:lang="ml">à´¤à´•à´°à´¾à´±àµà´³àµà´³ à´ªàµà´°à´¯àµ‹à´—à´™àµà´™à´³àµà´‚ à´ªàµà´°à´µà´°àµâ€à´¤àµà´¤à´¨ à´ªà´¿à´¶à´•àµà´•à´³àµà´‚ à´¡àµ€à´¬à´—àµà´—àµ à´šàµ†à´¯àµà´¯àµà´¨àµà´¨à´¤à´¿à´¨àµà´³àµà´³ à´ªàµà´°à´¯àµ‹à´—à´™àµà´™à´³àµâ€.</description>
    <description xml:lang="mr">à¤…à¤¯à¥‹à¤—à¥à¤¯ à¤à¤ªà¥à¤²à¤¿à¤•à¥‡à¤¶à¤¨à¥à¤¸à¤šà¥à¤¯à¤¾ à¤¡à¤¿à¤¬à¤—à¥€à¤‚à¤— à¤µ à¤•à¥à¤·à¤®à¤¤à¤¾ à¤µà¤¿à¤¶à¥à¤²à¥‡à¤·à¤£ à¤¸à¤‚à¤¬à¤‚à¤§à¥€à¤¤ à¤…à¤¡à¤šà¤£à¥€à¤‚à¤•à¤°à¥€à¤¤à¤¾ à¤¸à¤¾à¤§à¤¨à¥‡.</description>
    <description xml:lang="or">à¬–à¬°à¬¾à¬ª à¬†à¬šà¬°à¬£ à¬•à¬°à­à¬¥à¬¿à¬¬à¬¾ à¬ªà­à¬°à­Ÿà­‹à¬—à¬° à¬¤à­à¬°à­à¬Ÿà¬¿ à¬¨à¬¿à¬¬à¬¾à¬°à¬£ à¬à¬¬à¬‚ à¬•à¬¾à¬°à­à¬¯à­à­Ÿà¬•à­à¬·à¬®à¬¤à¬¾ à¬¸à¬®à¬¸à­à­Ÿà¬¾à¬° à¬¬à¬¿à¬¶à­à¬³à­‡à¬·à¬£ à¬•à¬°à¬¿à¬¬à¬¾ à¬ªà¬¾à¬‡à¬ à¬¸à¬¾à¬§à¬¨à¬—à­à¬¡à¬¼à¬¿à¬•à¥¤</description>
    <description xml:lang="pa">à¨—à¨²à¨¤ à¨µà¨°à¨¤à¨¾à¨“ à¨µà¨¾à¨²à©€à¨†à¨‚ à¨à¨ªà¨²à©€à¨•à©‡à¨¶à¨¨à¨¾à¨‚ à¨¦à©€ à¨¡à©€à¨¬à©±à¨—à¨¿à©°à¨— à¨…à¨¤à©‡ à¨•à¨¾à¨°à¨œà¨•à©à¨¶à¨²à¨¤à¨¾ à¨¸à¨®à©±à¨¸à¨¿à¨†à¨µà¨¾à¨‚ à¨¦à©€ à¨ªà©œà¨¤à¨¾à¨² à¨²à¨ˆ à¨Ÿà©‚à¨²à¥¤</description>
    <description xml:lang="pl">NarzÄ™dzia do debugowania bÅ‚Ä™dnie zachowujÄ…cych siÄ™ aplikacji i diagnozowania problemÃ³w z wydajnoÅ›ciÄ….</description>
    <description xml:lang="pt">Ferramentas para depurar aplicativos mal comportados e diagnosticar problemas de desempenho.</description>
    <description xml:lang="pt_BR">Ferramentas para depurar aplicativos mal comportados e diagnosticar problemas de desempenho.</description>
    <description xml:lang="ru">Ð¡Ñ€ÐµÐ´ÑÑ‚Ð²Ð° Ð¾Ñ‚Ð»Ð°Ð´ÐºÐ¸ Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ð¹ Ð¸ Ð¿Ñ€Ð¾Ð±Ð»ÐµÐ¼ Ð¿Ñ€Ð¾Ð¸Ð·Ð²Ð¾Ð´Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð¾ÑÑ‚Ð¸.</description>
    <description xml:lang="sv">Verktyg fÃ¶r felsÃ¶kning av program som beter sig felaktigt, och diagnostik av prestandaproblem.</description>
    <description xml:lang="ta">à®®à¯‹à®šà®®à®¾à®© à®ªà®¯à®©à¯à®ªà®¾à®Ÿà¯à®•à®³à®¿à®©à¯ à®ªà®¿à®´à¯ˆà®¤à®¿à®°à¯à®¤à¯à®¤ à®®à®±à¯à®±à¯à®®à¯ à®šà¯†à®¯à®±à¯à®ªà®Ÿà¯à®¤à¯à®¤à®²à¯ à®šà®¿à®•à¯à®•à®²à¯à®•à®³à¯à®•à¯à®•à®¾à®© à®•à®°à¯à®µà®¿à®•à®³à¯.</description>
    <description xml:lang="te">à°¸à°°à°¿à°—à°¾à°ªà±à°°à°µà°°à±à°¤à°¿à°‚à°šà°¨à°¿ à°…à°¨à±à°µà°°à±à°¤à°¨à°®à±à°² à°®à°°à°¿à°¯à± à°ªà°¨à°¿à°¤à°¨à°ªà± à°¸à°®à°¸à±à°¯à°² à°µà°¿à°¶à±à°²à±‡à°·à°£à°¾ à°¡à±€à°¬à°—à±à°—à°¿à°‚à°—à± à°•à±Šà°°à°•à± à°¸à°¾à°§à°¨à°®à±à°²à±.</description>
    <description xml:lang="uk">ÐŸÑ€Ð¾Ð³Ñ€Ð°Ð¼Ð¸ Ð´Ð»Ñ Ð´Ñ–Ð°Ð³Ð½Ð¾ÑÑ‚Ð¸ÐºÐ¸ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¾Ð²Ð¾Ñ— Ð¿Ð¾Ð²ÐµÐ´Ñ–Ð½ÐºÐ¸ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¸ Ñ‚Ð° Ð¿Ñ€Ð¾Ð±Ð»ÐµÐ¼ Ð· ÑˆÐ²Ð¸Ð´ÐºÐ¾Ð´Ñ–Ñ”ÑŽ.</description>
    <description xml:lang="zh">ç”¨ä¾†ç‚ºåŸ·è¡Œä¸æ­£å¸¸çš„æ‡‰ç”¨ç¨‹å¼é™¤éŒ¯ä¸¦ç‚ºæ•ˆèƒ½å•é¡Œé€²è¡Œè¨ºæ–·çš„å·¥å…·ã€‚</description>
    <description xml:lang="zh_CN">è°ƒè¯•è¡Œä¸ºå¼‚å¸¸ç¨‹åºä»¥åŠè¯Šæ–­æ€§èƒ½é—®é¢˜çš„å·¥å…·ã€‚</description>
    <description xml:lang="zh_TW">ç”¨ä¾†ç‚ºåŸ·è¡Œä¸æ­£å¸¸çš„æ‡‰ç”¨ç¨‹å¼é™¤éŒ¯ä¸¦ç‚ºæ•ˆèƒ½å•é¡Œé€²è¡Œè¨ºæ–·çš„å·¥å…·ã€‚</description>
    <default>true</default>
    <uservisible>false</uservisible>
    <packagelist>
      <packagereq type="mandatory">gdb</packagereq>
      <packagereq type="mandatory">libreport-cli</packagereq>
      <packagereq type="mandatory">systemtap-runtime</packagereq>
      <packagereq type="default">abrt-addon-ccpp</packagereq>
      <packagereq type="default">abrt-cli</packagereq>
      <packagereq type="default">crash</packagereq>
      <packagereq type="default">crash-gcore-command</packagereq>
      <packagereq type="default">crash-ptdump-command</packagereq>
      <packagereq type="default">crash-trace-command</packagereq>
      <packagereq type="default">python3-abrt-addon</packagereq>
      <packagereq type="default">valgrind</packagereq>
      <packagereq type="default">valgrind-devel</packagereq>
      <packagereq type="optional">bpftrace</packagereq>
      <packagereq type="optional">gdb-gdbserver</packagereq>
      <packagereq type="optional">glibc-utils</packagereq>
      <packagereq type="optional">systemtap-client</packagereq>
      <packagereq type="optional">systemtap-initscript</packagereq>
      <packagereq type="optional">xdp-tools</packagereq>
    </packagelist>
  </group>
  <group>
    <id>desktop-debugging</id>
    <name>Desktop Debugging and Performance Tools</name>
    <name xml:lang="as">à¦¡à§‡à¦¸à§à¦•à¦Ÿà¦ª à¦¡à¦¿à¦¬à¦¾à¦— à¦†à§°à§ à¦•à¦¾à§°à§à¦¯à§à¦¯à¦•à§à¦·à¦®à¦¤à¦¾à§° à¦¸à¦®à§à¦¬à¦¨à§à¦§à§€à§Ÿ à¦¸à¦à¦œà§à¦²à¦¿à¦¸à¦®à§‚à¦¹</name>
    <name xml:lang="bn">à¦¡à§‡à¦¸à§à¦•à¦Ÿà¦ª à¦¡à¦¿à¦¬à¦¾à¦— à¦“ à¦•à¦°à§à¦®à¦•à§à¦·à¦®à¦¤à¦¾à¦° à¦¸à¦®à§à¦¬à¦¨à§à¦§à§€à§Ÿ à¦¸à¦¾à¦®à¦—à§à¦°à§€</name>
    <name xml:lang="cs">NÃ¡stroje pro ladÄ›nÃ­ pracovnÃ­ho prostÅ™edÃ­ a sledovÃ¡nÃ­ vÃ½konu</name>
    <name xml:lang="de">Debugging- und Performance-Tools fÃ¼r den Desktop</name>
    <name xml:lang="de_CH">Debugging- und Performance-Tools fÃ¼r den Desktop</name>
    <name xml:lang="es">DepuraciÃ³n de escritorio y herramientas de rendimiento</name>
    <name xml:lang="fr">Outils de dÃ©bogage et performance du bureau</name>
    <name xml:lang="gu">àª¡à«‡àª¸à«àª•àªŸà«‹àªª àª¡àª¿àª¬àª—à«€àª‚àª— àª…àª¨à«‡ àªªà«àª°àª­àª¾àªµ àª¸àª¾àª§àª¨à«‹</name>
    <name xml:lang="hi">à¤¡à¥‡à¤¸à¥à¤•à¤Ÿà¥‰à¤ª à¤¡à¤¿à¤¬à¤—à¤¿à¤‚à¤— à¤”à¤° à¤ªà¥à¤°à¤¦à¤°à¥à¤¶à¤¨ à¤”à¤œà¤¼à¤¾à¤°</name>
    <name xml:lang="ia">Instrumentos de scriptorio pro depuration e rendimento</name>
    <name xml:lang="it">Tool per le prestazioni e di debug del desktop</name>
    <name xml:lang="ja">ãƒ‡ã‚¹ã‚¯ãƒˆãƒƒãƒ—ã®ãƒ‡ãƒãƒƒã‚°ã¨ãƒ‘ãƒ•ã‚©ãƒ¼ãƒžãƒ³ã‚¹ãƒ„ãƒ¼ãƒ«</name>
    <name xml:lang="kn">à²—à²£à²•à²¤à³†à²°à³† à²¦à³‹à²·à²¨à²¿à²µà²¾à²°à²£à³† à²¹à²¾à²—à³ à²•à²¾à²°à³à²¯à²¨à²¿à²°à³à²µà²¹à²£à²¾ à²‰à²ªà²•à²°à²£à²—à²³à³</name>
    <name xml:lang="ko">ë°ìŠ¤í¬íƒ‘ ë””ë²„ê¹…ê³¼ ì„±ëŠ¥ íˆ´ </name>
    <name xml:lang="ml">à´¡à´¸àµà´•àµà´Ÿàµ‹à´ªàµà´ªàµ à´¡àµ€à´¬à´—àµà´—à´¿à´™àµà´‚ à´ªàµà´°à´µà´°àµâ€à´¤àµà´¤à´¨à´¤àµà´¤à´¿à´¨àµà´®àµà´³àµà´³ à´‰à´ªà´•à´°à´£à´™àµà´™à´³àµâ€</name>
    <name xml:lang="mr">à¤¡à¥‡à¤¸à¥à¤•à¤Ÿà¥‰à¤ª à¤¡à¤¿à¤¬à¤—à¥€à¤‚à¤— à¤µ à¤•à¥à¤·à¤®à¤¤à¤¾ à¤¸à¤¾à¤§à¤¨à¥‡</name>
    <name xml:lang="or">à¬¡à­‡à¬¸à­à¬•à¬Ÿà¬ª à¬¤à­à¬°à­à¬Ÿà¬¿à¬¨à¬¿à¬¬à¬¾à¬°à¬£ à¬à¬¬à¬‚ à¬•à¬¾à¬°à­à¬¯à­à­Ÿà¬•à­à¬·à¬®à¬¤à¬¾ à¬¸à¬¾à¬§à¬¨à¬—à­à¬¡à¬¼à¬¿à¬•</name>
    <name xml:lang="pa">à¨¡à©ˆà¨¸à¨•à¨Ÿà¨¾à¨ª à¨¡à©€à¨¬à©±à¨—à¨¿à©°à¨— à¨…à¨¤à©‡ à¨•à¨¾à¨°à¨œà¨•à©à¨¶à¨²à¨¤à¨¾ à¨¸à©°à¨¦</name>
    <name xml:lang="pl">NarzÄ™dzia debugowania i obliczania wydajnoÅ›ci Å›rodowisk graficznych</name>
    <name xml:lang="pt">DepuraÃ§Ã£o de Desktop e Ferramentas de Desempenho</name>
    <name xml:lang="pt_BR">DepuraÃ§Ã£o de Desktop e Ferramentas de Desempenho</name>
    <name xml:lang="ru">Ð¡Ñ€ÐµÐ´ÑÑ‚Ð²Ð° Ð¾Ñ‚Ð»Ð°Ð´ÐºÐ¸ Ð¸ Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶ÐºÐ¸ Ð¿Ñ€Ð¾Ð¸Ð·Ð²Ð¾Ð´Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð¾ÑÑ‚Ð¸ Ñ€Ð°Ð±Ð¾Ñ‡ÐµÐ³Ð¾ ÑÑ‚Ð¾Ð»Ð°.</name>
    <name xml:lang="sv">SkrivbordsfelsÃ¶knings- och prestandaverktyg</name>
    <name xml:lang="ta">à®ªà®£à®¿à®®à¯‡à®Ÿà¯ˆ à®ªà®¿à®´à¯ˆà®¤à®¿à®°à¯à®¤à¯à®¤à®¿ à®®à®±à¯à®±à¯à®®à¯ à®šà¯†à®¯à®±à¯à®ªà®Ÿà¯à®¤à¯à®¤à®²à¯ à®•à®°à¯à®µà®¿à®•à®³à¯</name>
    <name xml:lang="te">à°¡à±†à°¸à±à°•à±à°Ÿà°¾à°ªà± à°¡à±€à°¬à°—à±à°—à°¿à°‚à°—à± à°®à°°à°¿à°¯à± à°ªà°¨à°¿à°¤à°¨à°‚ à°¸à°¾à°§à°¨à°®à±à°²à±</name>
    <name xml:lang="uk">ÐŸÑ€Ð¾Ð³Ñ€Ð°Ð¼Ð¸ Ð´Ð»Ñ Ð´Ñ–Ð°Ð³Ð½Ð¾ÑÑ‚Ð¸ÐºÐ¸ Ñ‚Ð° Ð¿ÐµÑ€ÐµÐ²Ñ–Ñ€ÐºÐ¸ ÑˆÐ²Ð¸Ð´ÐºÐ¾Ð´Ñ–Ñ— Ñ€Ð¾Ð±Ð¾Ñ‡Ð¾Ñ— ÑÑ‚Ð°Ð½Ñ†Ñ–Ñ—</name>
    <name xml:lang="zh">æ¡Œé¢ç’°å¢ƒé™¤éŒ¯èˆ‡æ•ˆèƒ½å·¥å…·</name>
    <name xml:lang="zh_CN">æ¡Œé¢è°ƒè¯•å’Œè¿è¡Œå·¥å…·</name>
    <name xml:lang="zh_TW">æ¡Œé¢ç’°å¢ƒé™¤éŒ¯èˆ‡æ•ˆèƒ½å·¥å…·</name>
    <description>GUI tools for debugging applications and performance.</description>
    <description xml:lang="as">à¦à¦ªà§à¦²à¦¿à¦•à§‡à¦šà¦¨ à¦¡à¦¿à¦¬à¦¾à¦— à¦•à§°à¦¿à¦¬à¦²à§ˆ à¦†à§°à§ à¦•à¦¾à§°à§à¦¯à§à¦¯à¦•à§à¦·à¦®à¦¤à¦¾ à¦¸à¦®à§à¦¬à¦¨à§à¦§à§€à§Ÿ GUI à¦¸à¦à¦œà§à¦²à¦¿à¦¸à¦®à§‚à¦¹à¥¤</description>
    <description xml:lang="bn">à¦…à§à¦¯à¦¾à¦ªà§à¦²à¦¿à¦•à§‡à¦¶à¦¨ à¦¡à¦¿à¦¬à¦¾à¦— à¦•à¦°à¦¤à§‡ à¦“ à¦•à¦°à§à¦®à¦•à§à¦·à¦®à¦¤à¦¾ à¦¸à¦®à§à¦¬à¦¨à§à¦§à§€à§Ÿ GUI à¦¸à¦°à¦žà§à¦œà¦¾à¦®à¥¤</description>
    <description xml:lang="cs">GrafickÃ© nÃ¡stroje pro ladÄ›nÃ­ aplikacÃ­ a vÃ½konu.</description>
    <description xml:lang="de">GUI-Tools fÃ¼r das Debuggen von Applikationen und deren Performanz.</description>
    <description xml:lang="de_CH">GUI-Tools fÃ¼r das Debuggen von Applikationen und deren Performanz.</description>
    <description xml:lang="es">Herramientas GUI para aplicaciones de depuraciÃ³n y rendimiento.</description>
    <description xml:lang="fr">Outils de GUI pour le dÃ©bogage et la performance d'applications.</description>
    <description xml:lang="gu">àª¡àª¿àª¬àª—à«€àª‚àª— àª•àª¾àª°à«àª¯àª•à«àª°àª®à«‹ àª…àª¨à«‡ àªªà«àª°àª­àª¾àªµ àª®àª¾àªŸà«‡ GUI àª¸àª¾àª§àª¨à«‹.</description>
    <description xml:lang="hi">à¤…à¤¨à¥à¤ªà¥à¤°à¤¯à¥‹à¤— à¤¡à¤¬à¤—à¤¿à¤‚à¤— à¤”à¤° à¤ªà¥à¤°à¤¦à¤°à¥à¤¶à¤¨ à¤•à¥‡ à¤²à¤¿à¤ GUI à¤”à¤œà¤¾à¤°.</description>
    <description xml:lang="ia">Utensiles graphic pro depuration e rendimento de applicationes.</description>
    <description xml:lang="it">Tool della GUI per prestazioni ed il debug delle applicazioni.</description>
    <description xml:lang="ja">ã‚¢ãƒ—ãƒªã‚±ãƒ¼ã‚·ãƒ§ãƒ³ã‚„ãƒ‘ãƒ•ã‚©ãƒ¼ãƒžãƒ³ã‚¹ã®ãƒ‡ãƒãƒƒã‚°ã‚’è¡Œã†ãŸã‚ã® GUI ãƒ„ãƒ¼ãƒ«</description>
    <description xml:lang="kn">à²¦à³‹à²·à²¨à²¿à²µà²¾à²°à²£à³† à²¹à²¾à²—à³ à²•à²¾à²°à³à²¯à²¨à²¿à²°à³à²µà²¹à²£à³†à²—à²¾à²—à²¿à²¨ GUI à²‰à²ªà²•à²°à²£à²—à²³à³.</description>
    <description xml:lang="ko">í”„ë¡œê·¸ëž¨ ë””ë²„ê¹…ê³¼ ì„±ëŠ¥ í–¥ìƒì„ ìœ„í•œ GUI íˆ´ </description>
    <description xml:lang="ml">à´ªàµà´°à´¯àµ‹à´—à´™àµà´™à´³àµà´‚ à´ªàµà´°à´µà´°àµâ€à´¤àµà´¤à´¨à´µàµà´‚ à´¡àµ€à´¬à´—àµà´—àµ à´šàµ†à´¯àµà´¯àµà´¨àµà´¨à´¤à´¿à´¨àµà´³àµà´³ GUI à´ªàµà´°à´¯àµ‹à´—à´™àµà´™à´³àµâ€.</description>
    <description xml:lang="mr">à¤à¤ªà¥à¤²à¤¿à¤•à¥‡à¤¶à¤¨à¥à¤¸à¥ à¤µ à¤•à¥à¤·à¤®à¤¤à¤¾ à¤¡à¤¿à¤¬à¤— à¤•à¤°à¤£à¥à¤¯à¤¾à¤¸à¤¾à¤ à¥€ GUI à¤¸à¤¾à¤§à¤¨à¥‡.</description>
    <description xml:lang="or">à¬ªà­à¬°à­Ÿà­‹à¬—à¬—à­à¬¡à¬¼à¬¿à¬•à¬° à¬¤à­à¬°à­à¬Ÿà¬¿ à¬¨à¬¿à¬¬à¬¾à¬°à¬£ à¬à¬¬à¬‚ à¬•à¬¾à¬°à­à¬¯à­à­Ÿà¬•à­à¬·à¬®à¬¤à¬¾ à¬ªà¬¾à¬‡à¬ GUI à¬¸à¬¾à¬§à¬¨à¬—à­à¬¡à¬¼à¬¿à¬•à¥¤</description>
    <description xml:lang="pa">à¨à¨ªà¨²à©€à¨•à©‡à¨¶à¨¨ à¨…à¨¤à©‡ à¨•à¨¾à¨°à¨œà¨•à©à¨¶à¨²à¨¤à¨¾ à¨¡à©€à¨¬à©±à¨—à¨¿à©°à¨— à¨²à¨ˆ GUI à¨¸à©°à¨¦à¥¤</description>
    <description xml:lang="pl">NarzÄ™dzia graficzne do debugowania aplikacji i mierzenia wydajnoÅ›ci.</description>
    <description xml:lang="pt">Ferramentas GUI para depurar aplicativos e desempenho.</description>
    <description xml:lang="pt_BR">Ferramentas GUI para depurar aplicativos e desempenho.</description>
    <description xml:lang="ru">Ð“Ñ€Ð°Ñ„Ð¸Ñ‡ÐµÑÐºÐ¸Ðµ Ð¸Ð½ÑÑ‚Ñ€ÑƒÐ¼ÐµÐ½Ñ‚Ñ‹ Ð¾Ñ‚Ð»Ð°Ð´ÐºÐ¸ Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ð¹ Ð¸ ÐºÐ¾Ð½Ñ‚Ñ€Ð¾Ð»Ñ Ð¿Ñ€Ð¾Ð¸Ð·Ð²Ð¾Ð´Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð¾ÑÑ‚Ð¸.</description>
    <description xml:lang="sv">Grafiska verktyg fÃ¶r felsÃ¶kning av program och prestanda.</description>
    <description xml:lang="ta">à®ªà®¿à®´à¯ˆà®¤à®¿à®°à¯à®¤à¯à®¤ à®ªà®¯à®©à¯à®ªà®¾à®Ÿà¯à®•à®³à¯ à®®à®±à¯à®±à¯à®®à¯ à®šà¯†à®¯à®±à¯à®ªà®Ÿà¯à®¤à®²à¯à®•à¯à®•à®¾à®© GUI à®•à®°à¯à®µà®¿à®•à®³à¯.</description>
    <description xml:lang="te">à°…à°¨à±à°µà°°à±à°¤à°¨à°®à±à°² à°®à°°à°¿à°¯à± à°ªà°¨à°¿à°¤à°¨à°‚ à°¡à±€à°¬à°—à±à°—à°¿à°‚à°—à±â€Œà°•à± GUI à°¸à°¾à°§à°¨à°®à±à°²à±.</description>
    <description xml:lang="uk">Ð“Ñ€Ð°Ñ„Ñ–Ñ‡Ð½Ñ– Ñ–Ð½ÑÑ‚Ñ€ÑƒÐ¼ÐµÐ½Ñ‚ Ð´Ð»Ñ Ð´Ñ–Ð°Ð³Ð½Ð¾ÑÑ‚Ð¸ÐºÐ¸ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼ Ñ‚Ð° Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð´Ð¶ÐµÑ€ÐµÐ» Ð¿Ñ€Ð¾Ð±Ð»ÐµÐ¼ Ð·Ñ– ÑˆÐ²Ð¸Ð´ÐºÐ¾Ð´Ñ–Ñ”ÑŽ.</description>
    <description xml:lang="zh">ç”¨ä¾†ç‚ºæ‡‰ç”¨ç¨‹å¼å’Œæ•ˆèƒ½é€²è¡Œé™¤éŒ¯çš„ GUI å·¥å…·ã€‚</description>
    <description xml:lang="zh_CN">è°ƒè¯•åº”ç”¨ç¨‹åºå’Œæ€§èƒ½çš„ GUI å·¥å…·ã€‚</description>
    <description xml:lang="zh_TW">ç”¨ä¾†ç‚ºæ‡‰ç”¨ç¨‹å¼å’Œæ•ˆèƒ½é€²è¡Œé™¤éŒ¯çš„ GUI å·¥å…·ã€‚</description>
    <default>true</default>
    <uservisible>false</uservisible>
    <packagelist>
      <packagereq type="default">abrt-desktop</packagereq>
      <packagereq type="default">crash</packagereq>
      <packagereq type="default">crash-gcore-command</packagereq>
      <packagereq type="default">crash-ptdump-command</packagereq>
      <packagereq type="default">crash-trace-command</packagereq>
      <packagereq type="optional">abrt-gui</packagereq>
      <packagereq type="optional">pcp-gui</packagereq>
      <packagereq type="optional">xrestop</packagereq>
    </packagelist>
  </group>
  <group>
    <id>development</id>
    <name>Development Tools</name>
    <name xml:lang="af">Ontwikkelingsnutsgoed</name>
    <name xml:lang="am">áˆ›áˆ³á‹°áŒŠá‹« áˆ˜áˆ£áˆªá‹«á‹Žá‰½</name>
    <name xml:lang="ar">Ø£Ø¯ÙˆØ§Øª Ø§Ù„ØªØ·ÙˆÙŠØ±</name>
    <name xml:lang="as">à¦‰à¦¨à§à¦¨à§Ÿà¦¨ à¦¸à¦à¦œà§à¦²à¦¿à¦¸à¦®à§‚à¦¹</name>
    <name xml:lang="bal">ÙˆØ³Ø§ÛŒÙ„ Ù¾ÛŒØ´Ø±ÙˆÚ¯</name>
    <name xml:lang="be">Ð¡Ñ€Ð¾Ð´ÐºÑ– Ñ€Ð°ÑÐ¿Ñ€Ð°Ñ†Ð¾ÑžÐºÑ– Ð¿Ñ€Ð°Ð³Ñ€Ð°Ð¼</name>
    <name xml:lang="bg">Ð˜Ð½ÑÑ‚Ñ€ÑƒÐ¼ÐµÐ½Ñ‚Ð¸ Ð·Ð° Ñ€Ð°Ð·Ñ€Ð°Ð±Ð¾Ñ‚ÐºÐ°</name>
    <name xml:lang="bn">à¦¸à¦«à§à¦Ÿà¦“à§Ÿà§à¦¯à¦¾à¦° à¦¨à¦¿à¦°à§à¦®à¦¾à¦£à§‡à¦° à¦œà¦¨à§à¦¯ à¦ªà§à¦°à§Ÿà§‹à¦œà¦¨à§€à§Ÿ à¦Ÿà§à¦²</name>
    <name xml:lang="bs">Razvojni alati</name>
    <name xml:lang="ca">Eines de desenvolupament</name>
    <name xml:lang="cs">VÃ½vojÃ¡Å™skÃ© nÃ¡stroje</name>
    <name xml:lang="cy">Arfau Datblygu</name>
    <name xml:lang="da">UdviklingsvÃ¦rktÃ¸jer</name>
    <name xml:lang="de">Entwicklungswerkzeuge</name>
    <name xml:lang="de_CH">Entwicklungswekzeuge</name>
    <name xml:lang="el">Î•ÏÎ³Î±Î»ÎµÎ¯Î± Î±Î½Î¬Ï€Ï„Ï…Î¾Î·Ï‚ Î»Î¿Î³Î¹ÏƒÎ¼Î¹ÎºÎ¿Ï</name>
    <name xml:lang="en_GB">Development Tools</name>
    <name xml:lang="es">Herramientas de desarrollo</name>
    <name xml:lang="et">Arendusvahendid</name>
    <name xml:lang="fa">Ø§Ø¨Ø²Ø§Ø±Ù‡Ø§ÛŒ Ø¨Ø±Ù†Ø§Ù…Ù‡â€ŒØ³Ø§Ø²ÛŒ</name>
    <name xml:lang="fa_IR">Ø§Ø¨Ø²Ø§Ø±Ù‡Ø§ÛŒ Ø¨Ø±Ù†Ø§Ù…Ù‡â€ŒØ³Ø§Ø²ÛŒ</name>
    <name xml:lang="fi">OhjelmistokehitystyÃ¶kalut</name>
    <name xml:lang="fr">Outils de dÃ©veloppement</name>
    <name xml:lang="gl">Ferramentas de desenvolvemento</name>
    <name xml:lang="gu">àªµàª¿àª•àª¾àª¸àª¨àª¾ àª¸àª¾àª§àª¨à«‹</name>
    <name xml:lang="he">×›×œ×™ ×¤×™×ª×•×—</name>
    <name xml:lang="hi">à¤µà¤¿à¤•à¤¾à¤¸à¤¾à¤¤à¥à¤®à¤• à¤‰à¤ªà¤•à¤°à¤£</name>
    <name xml:lang="hr">Razvojni alati</name>
    <name xml:lang="hu">FejlesztÅ‘eszkÃ¶zÃ¶k</name>
    <name xml:lang="hy">Ô¾Ö€Õ¡Õ£Ö€Õ¡Õ¾Õ¸Ö€Õ´Õ¡Õ¶ Õ£Õ¸Ö€Õ®Õ«Ö„Õ¶Õ¥Ö€</name>
    <name xml:lang="ia">Instrumentos de disveloppamento</name>
    <name xml:lang="id">Peralatan Pengembangan</name>
    <name xml:lang="ilo">Ramramit a Pambukel</name>
    <name xml:lang="is">ÃžrÃ³unartÃ³l</name>
    <name xml:lang="it">Strumenti di sviluppo</name>
    <name xml:lang="ja">é–‹ç™ºãƒ„ãƒ¼ãƒ«</name>
    <name xml:lang="ka">áƒžáƒ áƒáƒ’áƒ áƒáƒ›áƒ˜áƒ áƒ”áƒ‘áƒ˜áƒ¡ áƒ˜áƒœáƒ¡áƒ¢áƒ áƒ£áƒ›áƒ”áƒœáƒ¢áƒ”áƒ‘áƒ˜</name>
    <name xml:lang="kn">à²µà²¿à²•à²¸à²¨ à²‰à²ªà²•à²°à²£à²—à²³à³</name>
    <name xml:lang="ko">ê°œë°œìš© íˆ´ </name>
    <name xml:lang="lv">ProgrammÄ“Å¡anas rÄ«ki</name>
    <name xml:lang="mai">à¤µà¤¿à¤•à¤¾à¤¸à¤¾à¤¤à¥à¤®à¤• à¤…à¤“à¤œà¤¾à¤°</name>
    <name xml:lang="mk">ÐÐ»Ð°Ñ‚ÐºÐ¸ Ð·Ð° Ñ€Ð°Ð·Ð²Ð¾Ñ˜</name>
    <name xml:lang="ml">à´¡àµ†à´µà´²à´ªàµà´ªàµà´®àµ†à´¨àµâ€à´±àµ à´‰à´ªà´•à´°à´£à´™àµà´™à´³àµâ€</name>
    <name xml:lang="mr">à¤µà¤¿à¤•à¤¾à¤¸ à¤‰à¤ªà¤•à¤°à¤£à¥‡</name>
    <name xml:lang="ms">Alatan Pembangunan</name>
    <name xml:lang="nb">UtviklingsverktÃ¸y</name>
    <name xml:lang="ne">à¤µà¤¿à¤•à¤¾à¤¸ à¤‰à¤ªà¤•à¤°à¤£</name>
    <name xml:lang="nl">Ontwikkelingshulpmiddelen</name>
    <name xml:lang="no">UtviklingsverktÃ¸y</name>
    <name xml:lang="nso">DidiriÅ¡wa tÅ¡a TÅ¡wetÅ¡opele</name>
    <name xml:lang="or">à¬¬à¬¿à¬•à¬¾à¬¶ à¬‰à¬ªà¬•à¬°à¬£</name>
    <name xml:lang="pa">à¨µà¨¿à¨•à¨¾à¨¸ à¨¸à©°à¨¦</name>
    <name xml:lang="pl">NarzÄ™dzia programistyczne</name>
    <name xml:lang="pt">Ferramentas de Desenvolvimento</name>
    <name xml:lang="pt_BR">Ferramentas de Desenvolvimento</name>
    <name xml:lang="ro">Unelte pentru dezvoltare</name>
    <name xml:lang="ru">Ð¡Ñ€ÐµÐ´ÑÑ‚Ð²Ð° Ñ€Ð°Ð·Ñ€Ð°Ð±Ð¾Ñ‚ÐºÐ¸</name>
    <name xml:lang="si">à¶´à·Šâ€à¶»à·€à¶»à·Šà¶°à¶± à¶¸à·™à·€à¶½à¶¸à·Š</name>
    <name xml:lang="sk">VÃ½vojÃ¡rske nÃ¡stroje</name>
    <name xml:lang="sl">Razvojna orodja</name>
    <name xml:lang="sq">Mjete Zhvillimi</name>
    <name xml:lang="sr">Ð Ð°Ð·Ð²Ð¾Ñ˜Ð½Ðµ Ð°Ð»Ð°Ñ‚ÐºÐµ</name>
    <name xml:lang="sr@Latn">Razvojne alatke</name>
    <name xml:lang="sr@latin">Razvojne alatke</name>
    <name xml:lang="sv">Utvecklingsverktyg</name>
    <name xml:lang="ta">à®‰à®°à¯à®µà®¾à®•à¯à®•à®®à¯ à®•à®°à¯à®µà®¿à®•à®³à¯</name>
    <name xml:lang="te">à°…à°¬à°¿à°µà±ƒà°¦à±à°§à°¿à°šà±‡à°¯à± à°¸à°¾à°§à°¨à°®à±à°²à±</name>
    <name xml:lang="tg">ÐÑÐ±Ð¾Ð±Ò³Ð¾Ð¸ Ð±Ð°Ñ€Ð½Ð¾Ð¼Ð°Ð½Ð°Ð²Ð¸ÑÓ£</name>
    <name xml:lang="th">à¹€à¸„à¸£à¸·à¹ˆà¸­à¸‡à¸¡à¸·à¸­à¸ªà¸³à¸«à¸£à¸±à¸šà¸à¸²à¸£à¸žà¸±à¸’à¸™à¸²à¸‹à¸­à¸Ÿà¸•à¹Œà¹à¸§à¸£à¹Œ</name>
    <name xml:lang="tr">GeliÅŸtirme AraÃ§larÄ±</name>
    <name xml:lang="uk">Ð—Ð°ÑÐ¾Ð±Ð¸ Ñ€Ð¾Ð·Ñ€Ð¾Ð±ÐºÐ¸</name>
    <name xml:lang="ur">ØªØ¹Ù…ÛŒØ± Ú©Û’ Ø§Ù„Ø§Øª</name>
    <name xml:lang="vi">CÃ´ng cá»¥ phÃ¡t triá»ƒn</name>
    <name xml:lang="zh">é–‹ç™¼å·¥å…·</name>
    <name xml:lang="zh_CN">å¼€å‘å·¥å…·</name>
    <name xml:lang="zh_TW">é–‹ç™¼å·¥å…·</name>
    <name xml:lang="zu">Amathuluzi Okuthuthukisa</name>
    <description>A basic development environment.</description>
    <description xml:lang="as">à¦‰à¦¨à§à¦¨à§Ÿà¦¨à§° à¦¬à¦¾à¦¬à§‡ à¦®à§Œà¦²à¦¿à¦• à¦ªà§°à¦¿à§±à§‡à¦¶à¥¤</description>
    <description xml:lang="bn">à¦¡à¦¿à¦­à§‡à¦²à¦®à§‡à¦¨à§à¦Ÿà§‡à¦° à¦œà¦¨à§à¦¯ à¦®à§Œà¦²à¦¿à¦• à¦ªà¦°à¦¿à¦¬à§‡à¦¶à¥¤</description>
    <description xml:lang="cs">ZÃ¡kladnÃ­ vÃ½vojovÃ© prostÅ™edÃ­.</description>
    <description xml:lang="de">Eine grundlegende Entwicklungsumgebung.</description>
    <description xml:lang="de_CH">Eine grundlegende Entwicklungsumgebung.</description>
    <description xml:lang="es">Un entorno de desarrollo bÃ¡sico.</description>
    <description xml:lang="eu">Oinarrizko garapen ingurune bat</description>
    <description xml:lang="fr">Un environnement de dÃ©veloppement de base.</description>
    <description xml:lang="gu">àª†àª§àª¾àª° àªµàª¿àª•àª¾àª¸ àªªàª°à«àª¯àª¾àªµàª°àª£.</description>
    <description xml:lang="hi">à¤®à¥Œà¤²à¤¿à¤• à¤µà¤¿à¤•à¤¾à¤¸ à¤µà¤¾à¤¤à¤¾à¤µà¤°à¤£.</description>
    <description xml:lang="ia">Un ambiente de disveloppamento basic.</description>
    <description xml:lang="it">Un ambiente di sviluppo di base.</description>
    <description xml:lang="ja">åŸºæœ¬çš„ãªé–‹ç™ºç’°å¢ƒ</description>
    <description xml:lang="kn">à²’à²‚à²¦à³ à²®à³‚à²²à²­à³‚à²¤ à²µà²¿à²•à²¸à²¨à²¾ à²ªà²°à²¿à²¸à²°.</description>
    <description xml:lang="ko">ê¸°ë³¸ ê°œë°œ í™˜ê²½.</description>
    <description xml:lang="ml">à´’à´°àµ à´…à´Ÿà´¿à´¸àµà´¥à´¾à´¨ à´¡àµ†à´µà´²à´ªàµà´ªàµà´®àµ†à´¨àµà´±àµ à´Žà´¨àµâ€à´µà´¯àµ‹à´£àµà´®àµ†à´¨àµà´±àµ.</description>
    <description xml:lang="mr">à¤®à¥à¤³ à¤¡à¥‡à¤µà¥à¤¹à¤²à¤ªà¤®à¥‡à¤‚à¤Ÿ à¤à¤¨à¥à¤µà¤¾à¤°à¥à¤¯à¤¨à¤®à¥‡à¤‚à¤Ÿ.</description>
    <description xml:lang="or">à¬—à­‹à¬Ÿà¬¿à¬ à¬®à­Œà¬³à¬¿à¬• à¬¬à¬¿à¬•à¬¾à¬¶ à¬ªà¬°à¬¿à¬¬à­‡à¬¶à¥¤</description>
    <description xml:lang="pa">à¨‡à©±à¨• à¨®à©à¨¢à¨²à¨¾ à¨µà¨¿à¨•à¨¾à¨¸ à¨µà¨¾à¨¤à¨¾à¨µà¨°à¨£à¥¤</description>
    <description xml:lang="pl">Podstawowe Å›rodowisko programistyczne.</description>
    <description xml:lang="pt">O ambiente bÃ¡sico de desenvolvimento</description>
    <description xml:lang="pt_BR">O ambiente bÃ¡sico de desenvolvimento</description>
    <description xml:lang="ru">Ð¡Ñ‚Ð°Ð½Ð´Ð°Ñ€Ñ‚Ð½Ð°Ñ ÑÑ€ÐµÐ´Ð° Ñ€Ð°Ð·Ñ€Ð°Ð±Ð¾Ñ‚ÐºÐ¸.</description>
    <description xml:lang="sv">En grundlÃ¤ggande utvecklingsmiljÃ¶.</description>
    <description xml:lang="ta">à®’à®°à¯ à®…à®Ÿà®¿à®ªà¯à®ªà®Ÿà¯ˆ à®µà®³à®°à¯à®šà¯à®šà®¿ à®šà¯‚à®´à®²à¯.</description>
    <description xml:lang="te">à°’à°• à°ªà±à°°à°¾à°§à°®à°¿à°• à°…à°­à°¿à°µà±ƒà°¦à±à°¦à°¿ à°µà°¾à°¤à°¾à°µà°°à°£à°‚.</description>
    <description xml:lang="uk">Ð‘Ð°Ð·Ð¾Ð²Ðµ ÑÐµÑ€ÐµÐ´Ð¾Ð²Ð¸Ñ‰Ðµ Ñ€Ð¾Ð·Ñ€Ð¾Ð±ÐºÐ¸.</description>
    <description xml:lang="zh">åŸºæœ¬é–‹ç™¼ç’°å¢ƒã€‚</description>
    <description xml:lang="zh_CN">åŸºæœ¬å¼€å‘çŽ¯å¢ƒã€‚</description>
    <description xml:lang="zh_TW">åŸºæœ¬é–‹ç™¼ç’°å¢ƒã€‚</description>
    <default>true</default>
    <uservisible>true</uservisible>
    <packagelist>
      <packagereq type="mandatory">autoconf</packagereq>
      <packagereq type="mandatory">automake</packagereq>
      <packagereq type="mandatory">bison</packagereq>
      <packagereq type="mandatory">flex</packagereq>
      <packagereq type="mandatory">gcc</packagereq>
      <packagereq type="mandatory">gcc-c++</packagereq>
      <packagereq type="mandatory">gdb</packagereq>
      <packagereq type="mandatory">libtool</packagereq>
      <packagereq type="mandatory">redhat-rpm-config</packagereq>
      <packagereq type="mandatory">rpm-build</packagereq>
      <packagereq type="default">asciidoc</packagereq>
      <packagereq type="default">byacc</packagereq>
      <packagereq type="default">ctags</packagereq>
      <packagereq type="default">diffstat</packagereq>
      <packagereq type="default">git</packagereq>
      <packagereq type="default">intltool</packagereq>
      <packagereq type="default">jna</packagereq>
      <packagereq type="default">ltrace</packagereq>
      <packagereq type="default">patchutils</packagereq>
      <packagereq type="default">perl-Fedora-VSP</packagereq>
      <packagereq type="default">perl-Sys-Syslog</packagereq>
      <packagereq type="default">perl-generators</packagereq>
      <packagereq type="default">pesign</packagereq>
      <packagereq type="default">source-highlight</packagereq>
      <packagereq type="default">systemtap</packagereq>
      <packagereq type="default">valgrind</packagereq>
      <packagereq type="default">valgrind-devel</packagereq>
      <packagereq type="optional">cmake</packagereq>
      <packagereq type="optional">rpmdevtools</packagereq>
      <packagereq type="optional">rpmlint</packagereq>
    </packagelist>
  </group>
  <group>
    <id>dotnet-core</id>
    <name>.NET Core Development</name>
    <name xml:lang="de">.NET Core Entwicklung</name>
    <name xml:lang="es">Desarrollo del nÃºcleo de.NET</name>
    <name xml:lang="fr">.NET Core Development</name>
    <name xml:lang="it">Sviluppo del nucleo NET</name>
    <name xml:lang="ja">.NET Core é–‹ç™º</name>
    <name xml:lang="ko">.NET ì½”ì–´ ê°œë°œ </name>
    <name xml:lang="pt_BR">Desenvolvimento do nÃºcleo .net</name>
    <name xml:lang="ru">.NET Ð Ð°Ð·Ñ€Ð°Ð±Ð¾Ñ‚ÐºÐ° ÑÐ´Ñ€Ð° .NET</name>
    <name xml:lang="zh_CN">.NET æ ¸å¿ƒå¼€å‘</name>
    <name xml:lang="zh_TW">.NETæ ¸å¿ƒé–‹ç™¼</name>
    <description>Tools to develop .NET and .NET Core applications</description>
    <default>true</default>
    <uservisible>true</uservisible>
    <packagelist>
      <packagereq type="optional">dotnet-sdk-2.1</packagereq>
      <packagereq type="optional">dotnet-sdk-3.0</packagereq>
      <packagereq type="optional">dotnet-sdk-3.1</packagereq>
      <packagereq type="optional">dotnet-sdk-5.0</packagereq>
    </packagelist>
  </group>
  <group>
    <id>file-server</id>
    <name>File and Storage Server</name>
    <name xml:lang="as">à¦«à¦¾à¦‡à¦² à¦†à§°à§ à¦¸à¦‚à§°à¦•à§à¦·à¦£ à¦šà¦¾à§°à§à¦­à¦¾à§°</name>
    <name xml:lang="cs">ÃšloÅ¾nÃ½ a souborovÃ½ server</name>
    <name xml:lang="de">Datei- und Storage-Server</name>
    <name xml:lang="de_CH">Datei- und Storage-Server</name>
    <name xml:lang="es">Servidor y archivo de almacenamiento</name>
    <name xml:lang="fr">Serveur de fichiers et de stockage</name>
    <name xml:lang="gu">àª«àª¾àª‡àª² àª…àª¨à«‡ àª¸à«àªŸà«‹àª°à«‡àªœ àª¸àª°à«àªµàª°</name>
    <name xml:lang="hi">à¤«à¤¼à¤¾à¤‡à¤² à¤”à¤° à¤­à¤‚à¤¡à¤¾à¤° à¤¸à¤°à¥à¤µà¤°</name>
    <name xml:lang="it">Server di storage e file</name>
    <name xml:lang="ja">ãƒ•ã‚¡ã‚¤ãƒ«ã¨ã‚¹ãƒˆãƒ¬ãƒ¼ã‚¸ã‚µãƒ¼ãƒãƒ¼</name>
    <name xml:lang="kn">à²•à²¡à²¤ à²®à²¤à³à²¤à³ à²¶à³‡à²–à²°à²£à²¾ à²ªà³‚à²°à³ˆà²•à³†à²—à²£à²•à²—à²³à³</name>
    <name xml:lang="ko">íŒŒì¼ ë° ìŠ¤í† ë¦¬ì§€ ì„œë²„</name>
    <name xml:lang="ml">à´«à´¯à´²àµâ€, à´¸à´‚à´­à´°à´£ à´¸à´°àµâ€à´µà´°àµâ€</name>
    <name xml:lang="mr">à¤«à¤¾à¤‡à¤² à¤†à¤£à¤¿ à¤¸à¥à¤Ÿà¥‹à¤°à¥‡à¤œ à¤¸à¤°à¥à¤µà¥à¤¹à¤°</name>
    <name xml:lang="or">à¬«à¬¾à¬‡à¬² à¬à¬¬à¬‚ à¬¸à¬‚à¬°à¬•à­à¬·à¬£ à¬¸à¬°à­à¬­à¬°</name>
    <name xml:lang="pa">à¨«à¨¾à¨ˆà¨² à¨…à¨¤à©‡ à¨­à©°à¨¡à¨¾à¨°à¨£ à¨¸à¨°à¨µà¨°</name>
    <name xml:lang="pl">Serwer plikÃ³w i przechowywania danych</name>
    <name xml:lang="pt">Arquivo e Servidor de Armazenamento</name>
    <name xml:lang="pt_BR">Arquivo e Servidor de Armazenamento</name>
    <name xml:lang="ru">Ð¡ÐµÑ€Ð²ÐµÑ€ Ñ„Ð°Ð¹Ð»Ð¾Ð² Ð¸ Ð¿ÐµÑ‡Ð°Ñ‚Ð¸</name>
    <name xml:lang="ta">à®•à¯‹à®ªà¯à®ªà¯ à®®à®±à¯à®±à¯à®®à¯ à®šà¯‡à®®à®¿à®ªà¯à®ªà®• à®šà¯‡à®µà¯ˆà®¯à®•à®®à¯</name>
    <name xml:lang="te">à°«à±ˆà°²à± à°®à°°à°¿à°¯à± à°¨à°¿à°²à±à°µ à°¸à±‡à°µà°¿à°•</name>
    <name xml:lang="uk">Ð¡ÐµÑ€Ð²ÐµÑ€ Ð´Ð»Ñ Ð·Ð±ÐµÑ€Ñ–Ð³Ð°Ð½Ð½Ñ Ñ„Ð°Ð¹Ð»Ñ–Ð² Ñ– Ð´Ð°Ð½Ð¸Ñ…</name>
    <name xml:lang="zh">æª”æ¡ˆèˆ‡å„²å­˜ä¼ºæœå™¨</name>
    <name xml:lang="zh_CN">æ–‡ä»¶åŠå­˜å‚¨æœåŠ¡å™¨</name>
    <name xml:lang="zh_TW">æª”æ¡ˆèˆ‡å„²å­˜ä¼ºæœå™¨</name>
    <description>CIFS, SMB, NFS, iSCSI, iSER, and iSNS network storage server.</description>
    <description xml:lang="as">CIFS, SMB, NFS, iSCSI, iSER, à¦†à§°à§ iSNS à¦¨à§‡à¦Ÿà§±à¦¾à§°à§à¦• à¦¸à¦‚à§°à¦•à§à¦·à¦£ à¦šà¦¾à§°à§à¦­à¦¾à§°à¥¤</description>
    <description xml:lang="cs">Server pro sÃ­Å¥ovÃ¡ ÃºloÅ¾iÅ¡tÄ› CIFS, SMB, NFS, iSCSI, iSER a iSNS.</description>
    <description xml:lang="de">CIFS, SMB, NFS, iSCSI, iSER und iSNS Netzwerk-Storage-Server.</description>
    <description xml:lang="de_CH">CIFS, SMB, NFS, iSCSI, iSER und iSNS Netzwerk-Storage-Server.</description>
    <description xml:lang="es">CIFS, SMB, NFS, iSCSI, iSER, y servidor de almacenamiento de red iSNS.</description>
    <description xml:lang="fr">Serveur de stockage rÃ©seau CIFS, SMB, NFS, iSCSI, iSER et iSNS.</description>
    <description xml:lang="gu">CIFS, SMB, NFS, iSCSI, iSER, àª…àª¨à«‡ iSNS àª¨à«‡àªŸàªµàª°à«àª• àª¸à«àªŸà«‹àª°à«‡àªœ àª¸àª°à«àªµàª°.</description>
    <description xml:lang="hi">CIFS, SMB, NFS, iSCSI, iSER, à¤”à¤° iSNS à¤¸à¤‚à¤œà¤¾à¤² à¤­à¤‚à¤¡à¤¾à¤°à¤£ à¤¸à¤°à¥à¤µà¤°.</description>
    <description xml:lang="it">Server per lo storage di rete CIFS, SMB, NFS, iSCSI, iSER e iSNS.</description>
    <description xml:lang="ja">CIFSã€SMBã€NFSã€iSCSIã€iSERã€iSNS ã®ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ã‚¹ãƒˆãƒ¬ãƒ¼ã‚¸ã‚µãƒ¼ãƒãƒ¼ã§ã™ã€‚</description>
    <description xml:lang="kn">CIFS, SMB, NFS, iSCSI, iSER, à²¹à²¾à²—à³ iSNS à²œà²¾à²²à²¬à²‚à²§ à²¶à³‡à²–à²°à²£à²¾ à²ªà³‚à²°à³ˆà²•à³†à²—à²£à²•.</description>
    <description xml:lang="ko">CIFS, SMB, NFS, iSCSI, iSER, iSNS ë„¤íŠ¸ì›Œí¬ ìŠ¤í† ë¦¬ì§€ ì„œë²„.</description>
    <description xml:lang="ml">à´¸à´¿à´à´Žà´«àµà´Žà´¸àµ, à´Žà´¸àµà´Žà´‚à´¬à´¿, à´Žà´¨àµâ€à´Žà´«àµà´Žà´¸àµ, iSCSI, iSER, iSNS à´¨àµ†à´±àµà´±àµâ€Œà´µà´°àµâ€à´•àµà´•àµ à´¸à´‚à´­à´°à´£ à´¸à´°àµâ€à´µà´°àµâ€.</description>
    <description xml:lang="mr">CIFS, SMB, NFS, iSCSI, iSER, à¤†à¤£à¤¿ iSNS à¤¨à¥‡à¤Ÿà¤µà¤°à¥à¤• à¤¸à¥à¤Ÿà¥‹à¤°à¥‡à¤œ à¤¸à¤°à¥à¤µà¥à¤¹à¤°.</description>
    <description xml:lang="or">CIFS, SMB, NFS, iSCSI, iSER, à¬à¬¬à¬‚ iSNS à¬¨à­‡à¬Ÿà­±à¬°à­à¬• à¬¸à¬‚à¬°à¬•à­à¬·à¬£ à¬¸à¬°à­à¬­à¬°à¥¤</description>
    <description xml:lang="pa">CIFS, SMB, NFS, iSCSI, iSER, à¨…à¨¤à©‡ iSNS à¨¨à©ˆà©±à¨Ÿà¨µà¨°à¨• à¨­à©°à¨¡à¨¾à¨°à¨£ à¨¸à¨°à¨µà¨°à¥¤</description>
    <description xml:lang="pl">Serwer sieciowego przechowywania danych w CIFS, SMB, NFS, iSCSI, iSER i iSNS.</description>
    <description xml:lang="pt">CIFS, SMB, NFS, iSCSI, iSER, e servidor de armazenamento de rede iSNS</description>
    <description xml:lang="pt_BR">CIFS, SMB, NFS, iSCSI, iSER, e servidor de armazenamento de rede iSNS</description>
    <description xml:lang="ru">Ð¡ÐµÑ‚ÐµÐ²Ð¾Ð¹ ÑÐµÑ€Ð²ÐµÑ€ CIFS, SMB, NFS, iSCSI, iSER, iSNS.</description>
    <description xml:lang="ta">CIFS, SMB, NFS, iSCSI, iSER à®®à®±à¯à®±à¯à®®à¯ iSNS à®ªà®¿à®£à¯ˆà®¯à®¿à®… à®šà¯‡à®®à®¿à®ªà¯à®ªà®• à®šà¯‡à®µà¯ˆà®¯à®•à®®à¯.</description>
    <description xml:lang="te">CIFS, SMB, NFS, iSCSI, iSER, à°®à°°à°¿à°¯à± iSNS à°¨à±†à°Ÿà±à°µà°°à±à°•à± à°¨à°¿à°²à±à°µ à°¸à±‡à°µà°¿à°•.</description>
    <description xml:lang="uk">Ð¡ÐµÑ€Ð²ÐµÑ€ Ð·Ð±ÐµÑ€Ñ–Ð³Ð°Ð½Ð½Ñ Ð´Ð°Ð½Ð¸Ñ… CIFS, SMB, NFS, iSCSI, iSER Ñ‚Ð° iSNS.</description>
    <description xml:lang="zh">CIFSã€SMBã€NFSã€iSCSIã€iSER å’Œ iSNS ç¶²è·¯å„²å­˜ä¼ºæœå™¨ã€‚</description>
    <description xml:lang="zh_CN">CIFS, SMB, NFS, iSCSI, iSER åŠ iSNS ç½‘ç»œå­˜å‚¨æœåŠ¡å™¨ã€‚</description>
    <description xml:lang="zh_TW">CIFSã€SMBã€NFSã€iSCSIã€iSER å’Œ iSNS ç¶²è·¯å„²å­˜ä¼ºæœå™¨ã€‚</description>
    <default>true</default>
    <uservisible>false</uservisible>
    <packagelist>
      <packagereq type="mandatory">targetcli</packagereq>
    </packagelist>
  </group>
  <group>
    <id>fonts</id>
    <name>Fonts</name>
    <name xml:lang="ar">Ø®Ø·ÙˆØ·</name>
    <name xml:lang="as">à¦«à¦¨à§à¦Ÿà¦¸à¦®à§‚à¦¹</name>
    <name xml:lang="bal">ÙÙˆÙ†Øª Ø¢Ù†</name>
    <name xml:lang="bg">Ð¨Ñ€Ð¸Ñ„Ñ‚Ð¾Ð²Ðµ</name>
    <name xml:lang="bn">à¦«à¦¨à§à¦Ÿ</name>
    <name xml:lang="ca">Tipus de lletra</name>
    <name xml:lang="cs">Sada fontÅ¯</name>
    <name xml:lang="da">Skrifttyper</name>
    <name xml:lang="de">Schriftarten</name>
    <name xml:lang="de_CH">Schriftarten</name>
    <name xml:lang="el">Î“ÏÎ±Î¼Î¼Î±Ï„Î¿ÏƒÎµÎ¹ÏÎ­Ï‚</name>
    <name xml:lang="es">Fuentes</name>
    <name xml:lang="et">KirjatÃ¼Ã¼bid (fondid)</name>
    <name xml:lang="eu">Letra-tipoak</name>
    <name xml:lang="fi">Kirjasimet</name>
    <name xml:lang="fr">Polices</name>
    <name xml:lang="gu">àª«à«‹àª¨à«àªŸ</name>
    <name xml:lang="he">×’×•×¤× ×™×</name>
    <name xml:lang="hi">à¤«à¤¼à¥‰à¤¨à¥à¤Ÿ</name>
    <name xml:lang="hu">BetÅ±kÃ©szletek</name>
    <name xml:lang="ia">Characteres</name>
    <name xml:lang="id">Huruf</name>
    <name xml:lang="is">Letur</name>
    <name xml:lang="it">Caratteri</name>
    <name xml:lang="ja">ãƒ•ã‚©ãƒ³ãƒˆ</name>
    <name xml:lang="kn">à²…à²•à³à²·à²°à²¶à³ˆà²²à²¿à²—à²³à³</name>
    <name xml:lang="ko">ê¸€ê¼´</name>
    <name xml:lang="lv">Fonti</name>
    <name xml:lang="mai">à¤«à¤¾à¤¨à¥à¤Ÿà¥à¤¸</name>
    <name xml:lang="ml">à´²à´¿à´ªà´¿à´•à´³àµâ€</name>
    <name xml:lang="mr">à¤«à¥‰à¤¨à¥à¤Ÿ</name>
    <name xml:lang="ms">Font</name>
    <name xml:lang="nb">Skrifter</name>
    <name xml:lang="ne">à¤«à¤¨à¥à¤Ÿ</name>
    <name xml:lang="nl">Lettertypes</name>
    <name xml:lang="or">à¬…à¬•à­à¬·à¬°à¬°à­‚à¬ªà¬—à­à¬¡à¬¼à¬¿à¬•</name>
    <name xml:lang="pa">à¨«à©Œà¨‚à¨Ÿ</name>
    <name xml:lang="pl">Czcionki</name>
    <name xml:lang="pt">Tipos de Letra</name>
    <name xml:lang="pt_BR">Tipos de Letra</name>
    <name xml:lang="ru">Ð¨Ñ€Ð¸Ñ„Ñ‚Ñ‹</name>
    <name xml:lang="sk">PÃ­sma</name>
    <name xml:lang="sr">Ð¤Ð¾Ð½Ñ‚Ð¾Ð²Ð¸</name>
    <name xml:lang="sr@Latn">Fontovi</name>
    <name xml:lang="sr@latin">Fontovi</name>
    <name xml:lang="sv">Typsnitt</name>
    <name xml:lang="ta">à®Žà®´à¯à®¤à¯à®¤à¯à®°à¯à®•à¯à®•à®³à¯</name>
    <name xml:lang="te">à°«à°¾à°‚à°Ÿà±à°²à±</name>
    <name xml:lang="tg">Ò²Ð°Ñ€Ñ„Ò³Ð¾</name>
    <name xml:lang="th">à¹à¸šà¸šà¸­à¸±à¸à¸©à¸£</name>
    <name xml:lang="uk">Ð¨Ñ€Ð¸Ñ„Ñ‚Ð¸</name>
    <name xml:lang="zh">å­—åž‹</name>
    <name xml:lang="zh_CN">å­—ä½“</name>
    <name xml:lang="zh_TW">å­—åž‹</name>
    <description>Fonts packages for rendering text on the desktop.</description>
    <description xml:lang="de">Schriftet Pakete fÃ¼r das Rendern von Text auf dem Desktop.</description>
    <description xml:lang="es">Paquetes de fuentes para renderizar texto en el escritorio.</description>
    <description xml:lang="fr">Packages de police pour le rendu du texte sur le bureau</description>
    <description xml:lang="it">Font per il rendering del testo sul desktop.</description>
    <description xml:lang="ja">ãƒ‡ã‚¹ã‚¯ãƒˆãƒƒãƒ—ã§ãƒ†ã‚­ã‚¹ãƒˆã‚’ãƒ¬ãƒ³ãƒ€ãƒªãƒ³ã‚°ã™ã‚‹ãƒ•ã‚©ãƒ³ãƒˆãƒ‘ãƒƒã‚±ãƒ¼ã‚¸ã§ã™ã€‚</description>
    <description xml:lang="ko">ë°”íƒ• í™”ë©´ì—ì„œ í…ìŠ¤íŠ¸ë¥¼ í‘œì‹œí•˜ê¸° ìœ„í•œ ê¸€ê¼´ íŒ¨í‚¤ì§€ìž…ë‹ˆë‹¤. </description>
    <description xml:lang="pt_BR">Pacotes de fontes para renderizar texto no desktop.</description>
    <description xml:lang="ru">ÐŸÐ°ÐºÐµÑ‚Ñ‹ ÑˆÑ€Ð¸Ñ„Ñ‚Ð¾Ð² Ð´Ð»Ñ Ð²Ð¸Ð·ÑƒÐ°Ð»Ð¸Ð·Ð°Ñ†Ð¸Ð¸ Ñ‚ÐµÐºÑÑ‚Ð° Ð½Ð° Ñ€Ð°Ð±Ð¾Ñ‡ÐµÐ¼ ÑÑ‚Ð¾Ð»Ðµ.</description>
    <description xml:lang="zh_CN">ç”¨äºŽåœ¨æ¡Œé¢æ˜¾ç¤ºæ–‡å­—çš„å­—ä½“è½¯ä»¶åŒ…ã€‚</description>
    <description xml:lang="zh_TW">ç”¨æ–¼åœ¨æ¡Œé¢ä¸Šå‘ˆç¾æ–‡æœ¬çš„å­—é«”åŒ…ã€‚</description>
    <default>true</default>
    <uservisible>false</uservisible>
    <packagelist>
      <packagereq type="default">abattis-cantarell-fonts</packagereq>
      <packagereq type="default">gnu-free-mono-fonts</packagereq>
      <packagereq type="default">gnu-free-sans-fonts</packagereq>
      <packagereq type="default">gnu-free-serif-fonts</packagereq>
      <packagereq type="default">google-noto-sans-cjk-ttc-fonts</packagereq>
      <packagereq type="default">google-noto-sans-lisu-fonts</packagereq>
      <packagereq type="default">google-noto-sans-mandaic-fonts</packagereq>
      <packagereq type="default">google-noto-sans-meetei-mayek-fonts</packagereq>
      <packagereq type="default">google-noto-sans-sinhala-fonts</packagereq>
      <packagereq type="default">google-noto-sans-tagalog-fonts</packagereq>
      <packagereq type="default">google-noto-sans-tai-tham-fonts</packagereq>
      <packagereq type="default">google-noto-sans-tai-viet-fonts</packagereq>
      <packagereq type="default">google-noto-serif-cjk-ttc-fonts</packagereq>
      <packagereq type="default">jomolhari-fonts</packagereq>
      <packagereq type="default">julietaula-montserrat-fonts</packagereq>
      <packagereq type="default">khmeros-base-fonts</packagereq>
      <packagereq type="default">lohit-assamese-fonts</packagereq>
      <packagereq type="default">lohit-bengali-fonts</packagereq>
      <packagereq type="default">lohit-devanagari-fonts</packagereq>
      <packagereq type="default">lohit-gujarati-fonts</packagereq>
      <packagereq type="default">lohit-gurmukhi-fonts</packagereq>
      <packagereq type="default">lohit-kannada-fonts</packagereq>
      <packagereq type="default">lohit-odia-fonts</packagereq>
      <packagereq type="default">lohit-tamil-fonts</packagereq>
      <packagereq type="default">lohit-telugu-fonts</packagereq>
      <packagereq type="default">paktype-naskh-basic-fonts</packagereq>
      <packagereq type="default">paratype-pt-sans-fonts</packagereq>
      <packagereq type="default">sil-abyssinica-fonts</packagereq>
      <packagereq type="default">sil-nuosu-fonts</packagereq>
      <packagereq type="default">sil-padauk-fonts</packagereq>
      <packagereq type="default">smc-meera-fonts</packagereq>
      <packagereq type="default">stix-fonts</packagereq>
      <packagereq type="default">thai-scalable-waree-fonts</packagereq>
      <packagereq type="optional">bpg-algeti-fonts</packagereq>
      <packagereq type="optional">bpg-chveulebrivi-fonts</packagereq>
      <packagereq type="optional">bpg-courier-fonts</packagereq>
      <packagereq type="optional">bpg-courier-s-fonts</packagereq>
      <packagereq type="optional">bpg-elite-fonts</packagereq>
      <packagereq type="optional">bpg-excelsior-fonts</packagereq>
      <packagereq type="optional">bpg-glaho-fonts</packagereq>
      <packagereq type="optional">bpg-ingiri-fonts</packagereq>
      <packagereq type="optional">bpg-nino-medium-cond-fonts</packagereq>
      <packagereq type="optional">bpg-nino-medium-fonts</packagereq>
      <packagereq type="optional">bpg-sans-fonts</packagereq>
      <packagereq type="optional">bpg-sans-medium-fonts</packagereq>
      <packagereq type="optional">bpg-sans-modern-fonts</packagereq>
      <packagereq type="optional">bpg-sans-regular-fonts</packagereq>
      <packagereq type="optional">bpg-serif-fonts</packagereq>
      <packagereq type="optional">bpg-serif-modern-fonts</packagereq>
      <packagereq type="optional">fontawesome-fonts</packagereq>
      <packagereq type="optional">google-droid-kufi-fonts</packagereq>
      <packagereq type="optional">google-droid-sans-fonts</packagereq>
      <packagereq type="optional">google-droid-sans-mono-fonts</packagereq>
      <packagereq type="optional">google-droid-serif-fonts</packagereq>
      <packagereq type="optional">google-noto-sans-armenian-fonts</packagereq>
      <packagereq type="optional">google-noto-sans-avestan-fonts</packagereq>
      <packagereq type="optional">google-noto-sans-bengali-fonts</packagereq>
      <packagereq type="optional">google-noto-sans-bengali-ui-fonts</packagereq>
      <packagereq type="optional">google-noto-sans-brahmi-fonts</packagereq>
      <packagereq type="optional">google-noto-sans-carian-fonts</packagereq>
      <packagereq type="optional">google-noto-sans-cherokee-fonts</packagereq>
      <packagereq type="optional">google-noto-sans-coptic-fonts</packagereq>
      <packagereq type="optional">google-noto-sans-deseret-fonts</packagereq>
      <packagereq type="optional">google-noto-sans-devanagari-fonts</packagereq>
      <packagereq type="optional">google-noto-sans-devanagari-ui-fonts</packagereq>
      <packagereq type="optional">google-noto-sans-egyptian-hieroglyphs-fonts</packagereq>
      <packagereq type="optional">google-noto-sans-ethiopic-fonts</packagereq>
      <packagereq type="optional">google-noto-sans-fonts</packagereq>
      <packagereq type="optional">google-noto-sans-georgian-fonts</packagereq>
      <packagereq type="optional">google-noto-sans-glagolitic-fonts</packagereq>
      <packagereq type="optional">google-noto-sans-gujarati-fonts</packagereq>
      <packagereq type="optional">google-noto-sans-gujarati-ui-fonts</packagereq>
      <packagereq type="optional">google-noto-sans-hebrew-fonts</packagereq>
      <packagereq type="optional">google-noto-sans-imperial-aramaic-fonts</packagereq>
      <packagereq type="optional">google-noto-sans-kaithi-fonts</packagereq>
      <packagereq type="optional">google-noto-sans-kannada-fonts</packagereq>
      <packagereq type="optional">google-noto-sans-kannada-ui-fonts</packagereq>
      <packagereq type="optional">google-noto-sans-kayah-li-fonts</packagereq>
      <packagereq type="optional">google-noto-sans-kharoshthi-fonts</packagereq>
      <packagereq type="optional">google-noto-sans-khmer-fonts</packagereq>
      <packagereq type="optional">google-noto-sans-khmer-ui-fonts</packagereq>
      <packagereq type="optional">google-noto-sans-lao-fonts</packagereq>
      <packagereq type="optional">google-noto-sans-lao-ui-fonts</packagereq>
      <packagereq type="optional">google-noto-sans-lycian-fonts</packagereq>
      <packagereq type="optional">google-noto-sans-lydian-fonts</packagereq>
      <packagereq type="optional">google-noto-sans-malayalam-fonts</packagereq>
      <packagereq type="optional">google-noto-sans-malayalam-ui-fonts</packagereq>
      <packagereq type="optional">google-noto-sans-nko-fonts</packagereq>
      <packagereq type="optional">google-noto-sans-old-south-arabian-fonts</packagereq>
      <packagereq type="optional">google-noto-sans-old-turkic-fonts</packagereq>
      <packagereq type="optional">google-noto-sans-osmanya-fonts</packagereq>
      <packagereq type="optional">google-noto-sans-phoenician-fonts</packagereq>
      <packagereq type="optional">google-noto-sans-shavian-fonts</packagereq>
      <packagereq type="optional">google-noto-sans-symbols-fonts</packagereq>
      <packagereq type="optional">google-noto-sans-tamil-fonts</packagereq>
      <packagereq type="optional">google-noto-sans-tamil-ui-fonts</packagereq>
      <packagereq type="optional">google-noto-sans-telugu-fonts</packagereq>
      <packagereq type="optional">google-noto-sans-telugu-ui-fonts</packagereq>
      <packagereq type="optional">google-noto-sans-thaana-fonts</packagereq>
      <packagereq type="optional">google-noto-sans-thai-fonts</packagereq>
      <packagereq type="optional">google-noto-sans-thai-ui-fonts</packagereq>
      <packagereq type="optional">google-noto-sans-ugaritic-fonts</packagereq>
      <packagereq type="optional">google-noto-sans-ui-fonts</packagereq>
      <packagereq type="optional">google-noto-sans-vai-fonts</packagereq>
      <packagereq type="optional">google-noto-serif-armenian-fonts</packagereq>
      <packagereq type="optional">google-noto-serif-fonts</packagereq>
      <packagereq type="optional">google-noto-serif-georgian-fonts</packagereq>
      <packagereq type="optional">google-noto-serif-khmer-fonts</packagereq>
      <packagereq type="optional">google-noto-serif-lao-fonts</packagereq>
      <packagereq type="optional">google-noto-serif-thai-fonts</packagereq>
      <packagereq type="optional">gubbi-fonts</packagereq>
      <packagereq type="optional">kacst-art-fonts</packagereq>
      <packagereq type="optional">kacst-book-fonts</packagereq>
      <packagereq type="optional">kacst-decorative-fonts</packagereq>
      <packagereq type="optional">kacst-digital-fonts</packagereq>
      <packagereq type="optional">kacst-farsi-fonts</packagereq>
      <packagereq type="optional">kacst-letter-fonts</packagereq>
      <packagereq type="optional">kacst-naskh-fonts</packagereq>
      <packagereq type="optional">kacst-office-fonts</packagereq>
      <packagereq type="optional">kacst-one-fonts</packagereq>
      <packagereq type="optional">kacst-pen-fonts</packagereq>
      <packagereq type="optional">kacst-poster-fonts</packagereq>
      <packagereq type="optional">kacst-qurn-fonts</packagereq>
      <packagereq type="optional">kacst-screen-fonts</packagereq>
      <packagereq type="optional">kacst-title-fonts</packagereq>
      <packagereq type="optional">kacst-titlel-fonts</packagereq>
      <packagereq type="optional">khmeros-battambang-fonts</packagereq>
      <packagereq type="optional">khmeros-bokor-fonts</packagereq>
      <packagereq type="optional">khmeros-handwritten-fonts</packagereq>
      <packagereq type="optional">khmeros-metal-chrieng-fonts</packagereq>
      <packagereq type="optional">khmeros-muol-fonts</packagereq>
      <packagereq type="optional">khmeros-siemreap-fonts</packagereq>
      <packagereq type="optional">kurdit-unikurd-web-fonts</packagereq>
      <packagereq type="optional">lato-fonts</packagereq>
      <packagereq type="optional">lohit-malayalam-fonts</packagereq>
      <packagereq type="optional">lohit-marathi-fonts</packagereq>
      <packagereq type="optional">lohit-nepali-fonts</packagereq>
      <packagereq type="optional">madan-fonts</packagereq>
      <packagereq type="optional">nafees-web-naskh-fonts</packagereq>
      <packagereq type="optional">navilu-fonts</packagereq>
      <packagereq type="optional">open-sans-fonts</packagereq>
      <packagereq type="optional">overpass-fonts</packagereq>
      <packagereq type="optional">paktype-naqsh-fonts</packagereq>
      <packagereq type="optional">paktype-tehreer-fonts</packagereq>
      <packagereq type="optional">paratype-pt-sans-caption-fonts</packagereq>
      <packagereq type="optional">saab-fonts</packagereq>
      <packagereq type="optional">samyak-devanagari-fonts</packagereq>
      <packagereq type="optional">samyak-gujarati-fonts</packagereq>
      <packagereq type="optional">samyak-malayalam-fonts</packagereq>
      <packagereq type="optional">samyak-odia-fonts</packagereq>
      <packagereq type="optional">samyak-tamil-fonts</packagereq>
      <packagereq type="optional">sil-scheherazade-fonts</packagereq>
      <packagereq type="optional">smc-anjalioldlipi-fonts</packagereq>
      <packagereq type="optional">smc-dyuthi-fonts</packagereq>
      <packagereq type="optional">smc-kalyani-fonts</packagereq>
      <packagereq type="optional">smc-rachana-fonts</packagereq>
      <packagereq type="optional">smc-raghumalayalam-fonts</packagereq>
      <packagereq type="optional">smc-suruma-fonts</packagereq>
      <packagereq type="optional">stix-math-fonts</packagereq>
      <packagereq type="optional">thai-scalable-garuda-fonts</packagereq>
      <packagereq type="optional">thai-scalable-kinnari-fonts</packagereq>
      <packagereq type="optional">thai-scalable-loma-fonts</packagereq>
      <packagereq type="optional">thai-scalable-norasi-fonts</packagereq>
      <packagereq type="optional">thai-scalable-purisa-fonts</packagereq>
      <packagereq type="optional">thai-scalable-sawasdee-fonts</packagereq>
      <packagereq type="optional">thai-scalable-tlwgmono-fonts</packagereq>
      <packagereq type="optional">thai-scalable-tlwgtypewriter-fonts</packagereq>
      <packagereq type="optional">thai-scalable-tlwgtypist-fonts</packagereq>
      <packagereq type="optional">thai-scalable-tlwgtypo-fonts</packagereq>
      <packagereq type="optional">thai-scalable-umpush-fonts</packagereq>
      <packagereq type="optional">tibetan-machine-uni-fonts</packagereq>
      <packagereq type="optional">wqy-microhei-fonts</packagereq>
      <packagereq type="optional">xorg-x11-fonts-100dpi</packagereq>
      <packagereq type="optional">xorg-x11-fonts-75dpi</packagereq>
      <packagereq type="optional">xorg-x11-fonts-ISO8859-1-100dpi</packagereq>
      <packagereq type="optional">xorg-x11-fonts-ISO8859-1-75dpi</packagereq>
      <packagereq type="optional">xorg-x11-fonts-ISO8859-14-100dpi</packagereq>
      <packagereq type="optional">xorg-x11-fonts-ISO8859-14-75dpi</packagereq>
      <packagereq type="optional">xorg-x11-fonts-ISO8859-15-100dpi</packagereq>
      <packagereq type="optional">xorg-x11-fonts-ISO8859-15-75dpi</packagereq>
      <packagereq type="optional">xorg-x11-fonts-ISO8859-2-100dpi</packagereq>
      <packagereq type="optional">xorg-x11-fonts-ISO8859-2-75dpi</packagereq>
      <packagereq type="optional">xorg-x11-fonts-ISO8859-9-100dpi</packagereq>
      <packagereq type="optional">xorg-x11-fonts-ISO8859-9-75dpi</packagereq>
      <packagereq type="optional">xorg-x11-fonts-Type1</packagereq>
      <packagereq type="optional">xorg-x11-fonts-cyrillic</packagereq>
      <packagereq type="optional">xorg-x11-fonts-ethiopic</packagereq>
      <packagereq type="optional">xorg-x11-fonts-misc</packagereq>
    </packagelist>
  </group>
  <group>
    <id>ftp-server</id>
    <name>FTP Server</name>
    <name xml:lang="af">FTP-bediener</name>
    <name xml:lang="am">FTP áˆ°áˆ­á‰¨áˆ­</name>
    <name xml:lang="ar">Ø®Ø§Ø¯Ù… FTP</name>
    <name xml:lang="as">FTP à¦šà¦¾à§°à§à¦­à¦¾à§°</name>
    <name xml:lang="bal">Ø³Ø±ÙˆØ± FTP </name>
    <name xml:lang="be">ÐŸÐ°ÑÐ»ÑƒÐ¶Ð½Ñ–Ðº FTP</name>
    <name xml:lang="bg">FTP ÑÑŠÑ€Ð²ÑŠÑ€</name>
    <name xml:lang="bn">FTP à¦¸à¦¾à¦°à§à¦­à¦¾à¦°</name>
    <name xml:lang="bs">FTP posluÅ¾itelj</name>
    <name xml:lang="ca">Servidor FTP</name>
    <name xml:lang="cs">FTP server</name>
    <name xml:lang="cy">Gweinydd FTP</name>
    <name xml:lang="da">FTP-server</name>
    <name xml:lang="de">FTP-Server</name>
    <name xml:lang="de_CH">FTP-Server</name>
    <name xml:lang="el">Î•Î¾Ï…Ï€Î·ÏÎµÏ„Î·Ï„Î®Ï‚ FTP</name>
    <name xml:lang="en_GB">FTP Server</name>
    <name xml:lang="es">Servidor FTP</name>
    <name xml:lang="et">FTP server</name>
    <name xml:lang="eu">FTP zerbitzaria</name>
    <name xml:lang="fa">Ú©Ø§Ø±Ú¯Ø²Ø§Ø± FTP</name>
    <name xml:lang="fa_IR">Ú©Ø§Ø±Ú¯Ø²Ø§Ø± FTP</name>
    <name xml:lang="fi">FTP-palvelin</name>
    <name xml:lang="fr">Serveur FTP</name>
    <name xml:lang="gl">Servidor FTP</name>
    <name xml:lang="gu">FTP àª¸àª°à«àªµàª°</name>
    <name xml:lang="he">×©×¨×ª FTP</name>
    <name xml:lang="hi">FTP à¤¸à¤°à¥à¤µà¤°</name>
    <name xml:lang="hr">FTP posluÅ¾itelj</name>
    <name xml:lang="hu">FTP-kiszolgÃ¡lÃ³</name>
    <name xml:lang="hy">FTP Õ½Õ¥Ö€Õ¾Õ¥Ö€</name>
    <name xml:lang="ia">Servitor FTP</name>
    <name xml:lang="id">Server FTP</name>
    <name xml:lang="ilo">Serbidor a FTP</name>
    <name xml:lang="is">FTP Ã¾jÃ³nn</name>
    <name xml:lang="it">Server FTP</name>
    <name xml:lang="ja">FTP ã‚µãƒ¼ãƒãƒ¼</name>
    <name xml:lang="ka">FTP áƒ¡áƒ”áƒ áƒ•áƒ”áƒ áƒ˜</name>
    <name xml:lang="kn">FTP à²ªà³‚à²°à³ˆà²•à³†à²—à²£à²•</name>
    <name xml:lang="ko">FTP ì„œë²„</name>
    <name xml:lang="lv">FTP serveris</name>
    <name xml:lang="mai">FTP à¤¸à¤°à¥à¤µà¤°</name>
    <name xml:lang="mk">FTP ÑÐµÑ€Ð²ÐµÑ€</name>
    <name xml:lang="ml">FTP à´¸à´°àµâ€à´µà´°àµâ€</name>
    <name xml:lang="mr">FTP à¤¸à¤°à¥à¤µà¥à¤¹à¤°</name>
    <name xml:lang="ms">Pelayan FTP</name>
    <name xml:lang="nb">FTP-tjener</name>
    <name xml:lang="ne">FTP à¤¸à¤°à¥à¤­à¤°</name>
    <name xml:lang="nl">FTP-server</name>
    <name xml:lang="no">FTP-tjener</name>
    <name xml:lang="nso">Seabi sa FTP</name>
    <name xml:lang="or">à¬à¬«.à¬Ÿà¬¿.à¬ªà¬¿. à¬¸à­‡à¬¬à¬•</name>
    <name xml:lang="pa">FTP à¨¸à¨°à¨µà¨°</name>
    <name xml:lang="pl">Serwer FTP</name>
    <name xml:lang="pt">Servidor de FTP</name>
    <name xml:lang="pt_BR">Servidor de FTP</name>
    <name xml:lang="ro">Server FTP</name>
    <name xml:lang="ru">Ð¡ÐµÑ€Ð²ÐµÑ€ FTP</name>
    <name xml:lang="si">FTP à·ƒà·šà·€à· à¶¯à·à¶ºà¶šà¶º</name>
    <name xml:lang="sk">FTP server</name>
    <name xml:lang="sl">StreÅ¾nik FTP</name>
    <name xml:lang="sq">ShÃ«rbyes FTP</name>
    <name xml:lang="sr">FTP ÑÐµÑ€Ð²ÐµÑ€</name>
    <name xml:lang="sr@Latn">FTP server</name>
    <name xml:lang="sr@latin">FTP server</name>
    <name xml:lang="sv">FTP-server</name>
    <name xml:lang="ta">FTP à®šà¯‡à®µà¯ˆà®¯à®•à®®à¯</name>
    <name xml:lang="te">FTP à°¸à°°à±à°µà°°à±</name>
    <name xml:lang="tg">Ò²Ð¸Ð´Ð¼Ð°Ñ‚Ð³Ð¾Ò³Ð¸ FTP</name>
    <name xml:lang="th">à¸•à¸±à¸§à¹ƒà¸«à¹‰à¸šà¸£à¸´à¸à¸²à¸£ FTP</name>
    <name xml:lang="tr">FTP Sunucusu</name>
    <name xml:lang="uk">Ð¡ÐµÑ€Ð²ÐµÑ€ FTP</name>
    <name xml:lang="ur">Ø³Ø±ÙˆØ± FTP</name>
    <name xml:lang="vi">Server FTP</name>
    <name xml:lang="zh">FTP ä¼ºæœå™¨</name>
    <name xml:lang="zh_CN">FTP æœåŠ¡å™¨</name>
    <name xml:lang="zh_TW">FTP ä¼ºæœå™¨</name>
    <name xml:lang="zu">Umlekeleli we-FTP</name>
    <description>These tools allow you to run an FTP server on the system.</description>
    <description xml:lang="af">Hierdie nutsgoed stel jou in staat om 'n FTP-bediener op die rekenaar te laat loop.</description>
    <description xml:lang="am">áŠ¥áŠá‹šáˆ… áˆ˜áˆ£áˆªá‹«á‹Žá‰½ á‹¨FTPáŠ• áˆ°áˆ­á‰¨áˆ­ á‰ áˆ²áˆµá‰°áˆ™ áˆ‹á‹­ áˆˆáˆ›áˆµáŠ¬á‹µ á‹«áˆµá‰½áˆ‹áˆ‰á¢</description>
    <description xml:lang="ar">Ù‡Ø°Ù‡ Ø§Ù„Ø£Ø¯ÙˆØ§Øª ØªØªÙŠØ­ Ù„Ùƒ ØªØ´ØºÙŠÙ„ Ø®Ø§Ø¯Ù… FTP Ø¹Ù„Ù‰ Ø§Ù„Ù†Ø¸Ø§Ù….</description>
    <description xml:lang="as">à¦à¦‡ à¦¸à¦à¦œà§à¦²à¦¿ à¦¸à¦®à§‚à¦¹à§‡ à¦†à¦ªà§‹à¦¨à¦¾à¦• à¦šà¦¿à¦¸à§à¦Ÿà§‡à¦®à¦¤ FTP à¦šà¦¾à§°à§à¦­à¦¾à§° à¦šà¦²à¦¾à¦¬'à¦²à§ˆ à¦¸à¦®à§à¦­à§± à¦•à§°à§‡à¥¤</description>
    <description xml:lang="bal">Ø§ÛŒ Ø§Ø¨Ø²Ø§Ø±Ø§Ù† Ø´Ù…Ø§ Ø±Ø§ Ø§Ø¬Ø§Ø²Øª Ø¯ÛŒÙ† Ú©Ù‡ ÛŒÚ© Ø³Ø±ÙˆØ± FTP ØªÙ‡ Ø³ÛŒØ³ØªÙ… Ø§Ø¬Ø±Ø§ÛŒ Ú©Ù†ÛŒØª.</description>
    <description xml:lang="be">Ð“ÑÑ‚Ñ‹Ñ ÑÑ€Ð¾Ð´ÐºÑ– Ð´Ð°Ð·Ð²Ð¾Ð»ÑÑŽÑ†ÑŒ Ð²Ñ‹ÐºÐ¾Ð½Ð²Ð°Ñ†ÑŒ FTP Ð¿Ð°ÑÐ»ÑƒÐ¶Ð½Ñ–Ðº Ñƒ ÑÑ‹ÑÑ‚ÑÐ¼Ðµ.</description>
    <description xml:lang="bg">Ð¢ÐµÐ·Ð¸ Ð¸Ð½ÑÑ‚Ñ€ÑƒÐ¼ÐµÐ½Ñ‚Ð¸Ñ‚Ðµ Ð¿Ð¾Ð·Ð²Ð¾Ð»ÑÐ²Ð°Ñ‚ Ð¿Ð¾Ð»Ð·Ð²Ð°Ð½ÐµÑ‚Ð¾ Ð½Ð° FTP ÑÑŠÑ€Ð²ÑŠÑ€ Ð² ÑÐ¸ÑÑ‚ÐµÐ¼Ð°Ñ‚Ð°.</description>
    <description xml:lang="bn">à¦à¦‡ à¦¸à¦°à¦žà§à¦œà¦¾à¦®à¦—à§à¦²à¦¿à¦° à¦¸à¦¾à¦¹à¦¾à¦¯à§à¦¯à§‡ à¦†à¦ªà¦¨à¦¿ à¦¸à¦¿à¦¸à§à¦Ÿà§‡à¦®à§‡à¦° à¦®à¦§à§à¦¯à§‡ FTP à¦¸à¦¾à¦°à§à¦­à¦¾à¦° à¦šà¦¾à¦²à¦¾à¦¤à§‡ à¦ªà¦¾à¦°à¦¬à§‡à¦¨à¥¤</description>
    <description xml:lang="bs">Ovi vam alati omoguÄ‡uju pokretanje FTP posluÅ¾itelja.</description>
    <description xml:lang="ca">Aquestes eines us permeten executar un servidor FTP en el sistema.</description>
    <description xml:lang="cs">NÃ¡stroje pro provoz serveru FTP.</description>
    <description xml:lang="cy">Mae'r erfynnau yma'n caniatÃ¡u i chi redeg gweinydd FTP ar y system.</description>
    <description xml:lang="da">Disse vÃ¦rktÃ¸jer lader dig kÃ¸re en FTP-server pÃ¥ systemet.</description>
    <description xml:lang="de">Mit diesen Programmen kÃ¶nnen Sie einen FTP-Server auf dem System betreiben.</description>
    <description xml:lang="de_CH">Mit diesen Programmen kÃ¶nnen Sie einen FTP-Server auf dem System betreiben.</description>
    <description xml:lang="el">Î‘Ï…Ï„Î¬ Ï„Î± ÎµÏÎ³Î±Î»ÎµÎ¯Î± ÏƒÎ±Ï‚ ÎµÏ€Î¹Ï„ÏÎ­Ï€Î¿Ï…Î½ Î½Î± ÏƒÏ„Î®ÏƒÎµÏ„Îµ Î­Î½Î± ÎµÎ¾Ï…Ï€Î·ÏÎµÏ„Î·Ï„Î® FTP.</description>
    <description xml:lang="en_GB">These tools allow you to run an FTP server on the system.</description>
    <description xml:lang="es">Estas herramientas le permiten ejecutar un servidor FTP en el sistema.</description>
    <description xml:lang="et">Need vahendid vÃµimaldavad sul FTP serverit jooksutada.</description>
    <description xml:lang="fa">Ø§ÛŒÙ† Ø§Ø¨Ø²Ø§Ø±Ù‡Ø§ Ø¨Ù‡ Ø´Ù…Ø§ Ø§Ù…Ú©Ø§Ù† Ù…ÛŒâ€ŒØ¯Ù‡Ù†Ø¯ Ú©Ù‡ ÛŒÚ© Ú©Ø§Ø±Ú¯Ø²Ø§Ø± FTP Ø±ÙˆÛŒ Ø³ÛŒØ³ØªÙ… Ø§Ø¬Ø±Ø§ Ú©Ù†ÛŒØ¯.</description>
    <description xml:lang="fa_IR">Ø§ÛŒÙ† Ø§Ø¨Ø²Ø§Ø±Ù‡Ø§ Ø¨Ù‡ Ø´Ù…Ø§ Ø§Ù…Ú©Ø§Ù† Ù…ÛŒâ€ŒØ¯Ù‡Ù†Ø¯ Ú©Ù‡ ÛŒÚ© Ú©Ø§Ø±Ú¯Ø²Ø§Ø± FTP Ø±ÙˆÛŒ Ø³ÛŒØ³ØªÙ… Ø§Ø¬Ø±Ø§ Ú©Ù†ÛŒØ¯.</description>
    <description xml:lang="fi">NÃ¤illÃ¤ tyÃ¶kaluilla jÃ¤rjestelmÃ¤ssÃ¤ voidaan ajaa FTP-palvelinta.</description>
    <description xml:lang="fr">Ces outils vous permettent d'exÃ©cuter un serveur FTP sur le systÃ¨me.</description>
    <description xml:lang="gu">àª† àª¸àª¾àª§àª¨à«‹ àª¤àª®àª¨à«‡ àª¸àª¿àª¸à«àªŸàª® àªªàª° FTP àª¸àª°à«àªµàª° àªšàª²àª¾àªµàªµàª¾àª¨à«€ àªªàª°àªµàª¾àª¨àª—à«€ àª†àªªà«‡ àª›à«‡.</description>
    <description xml:lang="he">×›×œ×™× ×”×ž××¤×©×¨×™× ×œ×”×¨×™×¥ ×¢×œ ×”×ž×¢×¨×›×ª ××ª ×©×™×¨×•×ª×™ ×”×¨×©×ª FTP.</description>
    <description xml:lang="hi">à¤‡à¤¨ à¤‰à¤ªà¤•à¤°à¤£à¥‹à¤‚ à¤¸à¥‡ à¤¸à¤¿à¤¸à¥à¤Ÿà¤® à¤ªà¤° à¤†à¤ª FTP à¤¸à¤°à¥à¤µà¤° à¤šà¤²à¤¾ à¤¸à¤•à¤¤à¥‡ à¤¹à¥ˆà¤‚.</description>
    <description xml:lang="hr">Ovi vam alati omoguÄ‡uju pokretanje FTP posluÅ¾itelja.</description>
    <description xml:lang="hu">Ezek az eszkÃ¶zÃ¶k FTP-kiszolgÃ¡lÃ³ lÃ©trehozÃ¡sÃ¡hoz nyÃºjtanak segÃ­tsÃ©get.</description>
    <description xml:lang="ia">Iste utensiles te permitte exequer un servitor FTP sur le systema.</description>
    <description xml:lang="id">Alat bantu ini membolehkan anda untuk menjalankan server FTP dalam sistem.</description>
    <description xml:lang="is">Ãžessi tÃ³l gera Ã¾Ã©r kleyft aÃ° keyra FTP Ã¾jÃ³n Ã¡ vÃ©linni.</description>
    <description xml:lang="it">Questi strumenti consentono di eseguire un server FTP sul sistema.</description>
    <description xml:lang="ja">ã“ã‚Œã‚‰ã®ãƒ„ãƒ¼ãƒ«ã‚’ä½¿ç”¨ã™ã‚‹ã¨ã€ã‚·ã‚¹ãƒ†ãƒ ã§ FTP ã‚µãƒ¼ãƒãƒ¼ã‚’ç¨¼å‹•ã§ãã¾ã™ã€‚</description>
    <description xml:lang="kn">à²ˆ à²‰à²ªà²•à²°à²£à²—à²³à³ à²¨à²¿à²®à³à²® à²—à²£à²•à²¦à²²à³à²²à²¿ FTP à²ªà³‚à²°à³ˆà²•à³†à²—à²£à²•à²µà³Šà²‚à²¦à²¨à³à²¨à³ à²šà²²à²¾à²¯à²¿à²¸à²²à³ à²…à²¨à³à²µà³ à²®à²¾à²¡à²¿à²•à³Šà²¡à³à²¤à³à²¤à²µà³†.</description>
    <description xml:lang="ko">ì´ íˆ´ì„ ì‚¬ìš©í•˜ì—¬ ì‹œìŠ¤í…œ ìƒì—ì„œ FTP ì„œë²„ë¥¼ ìš´ì˜í•  ìˆ˜ ìžˆìŠµë‹ˆë‹¤.</description>
    <description xml:lang="lv">Å ie rÄ«ki Ä¼auj datoru izmantot kÄ FTP serveri.</description>
    <description xml:lang="mai">à¤ˆ à¤…à¤“à¤œà¤¾à¤°à¤¸à¤­ à¤¸à¤ à¤¸à¤¿à¤¸à¥à¤Ÿà¤® à¤ªà¤° à¤…à¤¹à¤¾à¤ FTP à¤¸à¤°à¥à¤µà¤° à¤šà¤²à¤¾à¤ à¤¸à¤•à¥ˆà¤¤ à¤›à¥€.</description>
    <description xml:lang="mk">ÐžÐ²Ð¸Ðµ Ð°Ð»Ð°Ñ‚ÐºÐ¸ Ð’Ð¸ Ð¾Ð²Ð¾Ð·Ð¼Ð¾Ð¶ÑƒÐ²Ð°Ð°Ñ‚ Ð´Ð° ÐºÐ¾Ñ€Ð¸ÑÐ¸Ñ‚Ðµ FTP ÑÐµÑ€Ð²ÐµÑ€ Ð½Ð° Ð’Ð°ÑˆÐ¸Ð¾Ñ‚ ÑÐ¸ÑÑ‚ÐµÐ¼.</description>
    <description xml:lang="ml">à´•à´‚à´ªàµà´¯àµ‚à´Ÿàµà´Ÿà´±à´¿à´²àµâ€ FTP à´¸à´°àµâ€à´µà´°àµâ€ à´ªàµà´°à´µà´°àµâ€à´¤àµà´¤à´¿à´ªàµà´ªà´¿à´¯àµà´•àµà´•àµà´¨àµà´¨à´¤à´¿à´¨à´¾à´¯à´¿ à´¨à´¿à´™àµà´™à´³àµ† à´ˆ à´‰à´ªà´•à´°à´£à´™àµà´™à´³àµâ€ à´¸à´¹à´¾à´¯à´¿à´•àµà´•àµà´¨àµà´¨àµ.</description>
    <description xml:lang="mr">à¤¹à¥€ à¤‰à¤ªà¤•à¤°à¤£à¥‡ à¤¤à¥à¤®à¥à¤¹à¤¾à¤¸ à¤ªà¥à¤°à¤£à¤¾à¤²à¥€à¤µà¤° FTP à¤¸à¤°à¥à¤µà¥à¤¹à¤° à¤šà¤¾à¤²à¤µà¥‚ à¤¦à¥‡à¤¤à¤¾à¤¤.</description>
    <description xml:lang="ms">Alatan ini membolehkan anda melaksanakan pelayan FTP pada sistem.</description>
    <description xml:lang="nb">Disse verktÃ¸yene lar deg kjÃ¸re en ftp-tjener pÃ¥ systemet.</description>
    <description xml:lang="ne">à¤¯à¥€ à¤‰à¤ªà¤•à¤°à¤£à¤²à¥‡ à¤¤à¤ªà¤¾à¤ˆà¤à¤²à¤¾à¤ˆ à¤ªà¥à¤°à¤£à¤¾à¤²à¥€à¤®à¤¾ FTP à¤¸à¤°à¥à¤­à¤° à¤šà¤²à¤¾à¤‰à¤¨ à¤…à¤¨à¥à¤®à¤¤à¤¿ à¤¦à¤¿à¤¨à¥à¤›à¤¨à¥ à¥¤</description>
    <description xml:lang="nl">Met deze hulpmiddelen kunt u een FTP-server op het systeem draaien.</description>
    <description xml:lang="no">Disse verktÃ¸yene lar deg kjÃ¸re en ftp-tjener pÃ¥ systemet.</description>
    <description xml:lang="nso">DidiriÅ¡wa tÅ¡e di go dumelela go diriÅ¡a seabi sa FTP tshepediÅ¡ong.</description>
    <description xml:lang="or">à¬à¬¹à¬¿ à¬‰à¬ªà¬•à¬°à¬£ à¬—à­à¬¡à¬¿à¬• à¬†à¬ªà¬£à¬™à­à¬• à¬¤à¬¨à­à¬¤à­à¬° à¬°à­‡ à¬—à­‹à¬Ÿà¬¿à¬ à¬à¬«.à¬Ÿà¬¿.à¬ªà¬¿. à¬¸à­‡à¬¬à¬• à¬šà¬³à¬¾à¬‡à¬¬à¬¾ à¬ªà¬¾à¬‡à¬ à¬…à¬¨à­à¬®à¬¤à¬¿ à¬ªà­à¬°à¬¦à¬¾à¬¨ à¬•à¬° à¬¥à¬¾à¬†à¬¨à­à¬¤à¬¿</description>
    <description xml:lang="pa">à¨‡à¨¹ à¨¸à©°à¨¦ à¨¤à©à¨¹à¨¾à¨¨à©‚à©° à¨¸à¨¿à¨¸à¨Ÿà¨® à¨¤à©‡ FTP à¨¸à¨°à¨µà¨° à¨šà¨²à¨¾à¨‰à¨£ à¨¦à©€ à¨ªà¨°à¨µà¨¾à¨¨à¨—à©€ à¨¦à¨¿à©°à¨¦à©‡ à¨¹à¨¨à¥¤</description>
    <description xml:lang="pl">Te narzÄ™dzia umoÅ¼liwiajÄ… uruchomienie serwera FTP.</description>
    <description xml:lang="pt">Estas ferramentas permitem-lhe correr um servidor FTP no seu computador.</description>
    <description xml:lang="pt_BR">Estas ferramentas permitem-lhe correr um servidor FTP no seu computador.</description>
    <description xml:lang="ro">Aceste unelte vÄƒ permit sÄƒ rulaÅ£i un server FTP pe sistem.</description>
    <description xml:lang="ru">Ð­Ñ‚Ð¸ ÑÑ€ÐµÐ´ÑÑ‚Ð²Ð° Ð¿Ð¾Ð·Ð²Ð¾Ð»ÑÑŽÑ‚ Ð¸ÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÑŒ ÑÐ¸ÑÑ‚ÐµÐ¼Ñƒ ÐºÐ°Ðº ÑÐµÑ€Ð²ÐµÑ€ FTP.</description>
    <description xml:lang="si">à¶´à¶¯à·Šà¶°à¶­à·’à¶º à¶­à·”à¶½ FTP à·ƒà·šà·€à· à¶¯à·à¶ºà¶šà¶º à¶šà·Šâ€à¶»à·’à¶ºà·à¶­à·Šà¶¸à¶š à¶šà·’à¶»à·“à¶¸ à·ƒà¶³à·„à· à¶¸à·™à¶¸ à¶¸à·™à·€à¶½à¶¸à·Š à¶‹à¶´à¶šà·à¶»à·“ à·€à·š.</description>
    <description xml:lang="sk">Tieto nÃ¡stroje vÃ¡m umoÅ¾nia spustiÅ¥ na poÄÃ­taÄÃ­ FTP server.</description>
    <description xml:lang="sl">Ta orodja vam omogoÄajo, da v sistemu poganjate streÅ¾nik za FTP.</description>
    <description xml:lang="sq">KÃ«to mjete ju lejojnÃ« tÃ« xhironi nÃ« sistem njÃ« shÃ«rbyes FTP.</description>
    <description xml:lang="sr">ÐžÐ²Ðµ Ð°Ð»Ð°Ñ‚ÐºÐµ Ð¾Ð¼Ð¾Ð³ÑƒÑ›Ð°Ð²Ð°Ñ˜Ñƒ Ð¿Ð¾ÑÑ‚Ð°Ð²Ñ™Ð°ÑšÐµ FTP ÑÐµÑ€Ð²ÐµÑ€Ð° Ð½Ð° ÑÐ¸ÑÑ‚ÐµÐ¼Ñƒ.</description>
    <description xml:lang="sr@Latn">Ove alatke omoguÄ‡avaju postavljanje FTP servera na sistemu.</description>
    <description xml:lang="sr@latin">Ove alatke omoguÄ‡avaju postavljanje FTP servera na sistemu.</description>
    <description xml:lang="sv">Dessa verktyg lÃ¥ter dig kÃ¶ra en FTP-server pÃ¥ systemet.</description>
    <description xml:lang="ta">à®‡à®¨à¯à®¤ à®•à®°à¯à®µà®¿à®•à®³à¯ à®¨à¯€à®™à¯à®•à®³à¯ à®•à®£à®¿à®©à®¿à®¯à®¿à®²à¯ FTP à®šà¯‡à®µà¯ˆà®¯à®•à®¤à¯à®¤à¯ˆ à®‡à®¯à®•à¯à®• à®‰à®¤à®µà¯à®®à¯.</description>
    <description xml:lang="te">à°ˆ à°¸à°¾à°§à°¨à°®à±à°²à± à°•à°‚à°ªà±à°¯à±‚à°Ÿà°°à±à°²à±‹ FTP à°¸à°°à±à°µà°°à±à°¨à± à°µà°¾à°¡à°Ÿà°¾à°¨à°¿à°•à°¿ à°®à°¿à°®à±à°®à°²à±à°¨à°¿ à°…à°¨à±à°®à°¤à°¿à°¸à±à°¤à°¾à°¯à°¿.</description>
    <description xml:lang="tg">Ð˜Ð½ Ð°ÑÐ±Ð¾Ð±Ò³Ð¾ Ð¸Ò·Ð¾Ð·Ð°Ñ‚ Ð¼ÐµÐ´Ð¸Ò³Ð°Ð½Ð´, Ñ…Ð¸Ð´Ð¼Ð°Ñ‚Ð³Ð¾Ò³Ð¸ FTP -Ñ€Ð¾ Ð´Ð°Ñ€ ÑÐ¸ÑÑ‚ÐµÐ¼Ð° Ð¸Ð´Ð¾Ñ€Ð° ÐºÑƒÐ½ÐµÐ´.</description>
    <description xml:lang="th">à¹€à¸„à¸£à¸·à¹ˆà¸­à¸‡à¸¡à¸·à¸­à¹€à¸«à¸¥à¹ˆà¸²à¸™à¸µà¹‰à¸—à¸³à¹ƒà¸«à¹‰à¸„à¸¸à¸“à¸£à¸±à¸™à¸•à¸±à¸§à¹ƒà¸«à¹‰à¸šà¸£à¸´à¸à¸²à¸£ FTP à¸šà¸™à¸£à¸°à¸šà¸šà¸™à¸µà¹‰à¹„à¸”à¹‰</description>
    <description xml:lang="tr">Bu araÃ§lar sisteminizde bir FTP sunucusu Ã§alÄ±ÅŸtÄ±rmanÄ±zÄ± mÃ¼mkÃ¼n kÄ±lar</description>
    <description xml:lang="uk">Ð¦Ñ– Ð·Ð°ÑÐ¾Ð±Ð¸ Ð´Ð¾Ð·Ð²Ð¾Ð»ÑÑŽÑ‚ÑŒ Ð²Ð¸ÐºÐ¾Ñ€Ð¸ÑÑ‚Ð¾Ð²ÑƒÐ²Ð°Ñ‚Ð¸ ÑÐ¸ÑÑ‚ÐµÐ¼Ñƒ ÑÐº ÑÐµÑ€Ð²ÐµÑ€ FTP.</description>
    <description xml:lang="ur">ÛŒÛ Ø§Ù„Ø§Øª  Ø§Ù¾ Ú©Ùˆ Ø§Ø¬Ø§Ø²Øª Ø¯ Û’  Ú¯Ø§ FTP Ø³Ø±ÙˆØ± Ú©Ùˆ Ù†Ø¸Ø§Ù… Ù¾Ø± Ú†Ù„Ù†Û’ Ú©Û’ Ù„Û’</description>
    <description xml:lang="vi">Nhá»¯ng cÃ´ng cá»¥ nÃ y cho phÃ©p báº¡n cháº¡y server FTP trÃªn há»‡ thá»‘ng.</description>
    <description xml:lang="zh">é€™äº›å·¥å…·è®“æ‚¨å¯ä»¥åœ¨ç³»çµ±ä¸ŠåŸ·è¡Œ FTP ä¼ºæœå™¨ã€‚</description>
    <description xml:lang="zh_CN">è¿™äº›å·¥å…·å…è®¸æ‚¨åœ¨ç³»ç»Ÿä¸Šè¿è¡Œ FTP æœåŠ¡å™¨ã€‚</description>
    <description xml:lang="zh_TW">é€™äº›å·¥å…·è®“æ‚¨å¯ä»¥åœ¨ç³»çµ±ä¸ŠåŸ·è¡Œ FTP ä¼ºæœå™¨ã€‚</description>
    <description xml:lang="zu">Lama thuluzi akuvumela ukusebenzisa umlekeleli we-FTP kwisistimu yakho.</description>
    <default>true</default>
    <uservisible>false</uservisible>
    <packagelist>
      <packagereq type="mandatory">vsftpd</packagereq>
    </packagelist>
  </group>
  <group>
    <id>gnome-apps</id>
    <name>GNOME Applications</name>
    <name xml:lang="as">GNOME à¦à¦ªà§à¦²à¦¿à¦•à§‡à¦šà¦¨à¦¸à¦®à§‚à¦¹</name>
    <name xml:lang="cs">Aplikace pro GNOME</name>
    <name xml:lang="de">GNOME-Anwendungen</name>
    <name xml:lang="de_CH">GNOME-Anwendungen</name>
    <name xml:lang="es">Aplicaciones de Gnome</name>
    <name xml:lang="fr">Applications GNOME</name>
    <name xml:lang="gu">GNOME àª•àª¾àª°à«àª¯àª•à«àª°àª®à«‹</name>
    <name xml:lang="hi">à¤—à¤¨à¥‹à¤® à¤…à¤¨à¥à¤ªà¥à¤°à¤¯à¥‹à¤—</name>
    <name xml:lang="it">Applicazioni di GNOME</name>
    <name xml:lang="ja">GNOME ã‚¢ãƒ—ãƒªã‚±ãƒ¼ã‚·ãƒ§ãƒ³</name>
    <name xml:lang="kn">GNOME à²…à²¨à³à²µà²¯à²—à²³à³</name>
    <name xml:lang="ko">GNOME ì‘ìš© í”„ë¡œê·¸ëž¨</name>
    <name xml:lang="ml">à´—àµà´¨àµ‹à´‚ à´ªàµà´°à´¯àµ‹à´—à´™àµà´™à´³àµâ€</name>
    <name xml:lang="mr">GNOME à¥²à¤ªà¥à¤²à¤¿à¤•à¥‡à¤¶à¤¨à¥à¤¸</name>
    <name xml:lang="or">GNOME à¬ªà­à¬°à­Ÿà­‹à¬—à¬—à­à¬¡à¬¼à¬¿à¬•</name>
    <name xml:lang="pa">GNOME à¨à¨ªà¨²à©€à¨•à©‡à¨¶à¨¨à¨¾à¨‚</name>
    <name xml:lang="pl">Aplikacje GNOME</name>
    <name xml:lang="pt">Aplicativos do GNOME</name>
    <name xml:lang="pt_BR">Aplicativos do GNOME</name>
    <name xml:lang="ru">ÐŸÑ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ GNOME</name>
    <name xml:lang="ta">GNOME à®ªà®¯à®©à¯à®ªà®¾à®Ÿà¯à®•à®³à¯</name>
    <name xml:lang="te">à°—à±à°¨à±‹à°®à± à°…à°¨à±à°µà°°à±à°¤à°¨à°¾à°²à±</name>
    <name xml:lang="uk">ÐŸÑ€Ð¾Ð³Ñ€Ð°Ð¼Ð¸ GNOME</name>
    <name xml:lang="zh">GNOME æ‡‰ç”¨ç¨‹å¼</name>
    <name xml:lang="zh_CN">GNOME åº”ç”¨ç¨‹åº</name>
    <name xml:lang="zh_TW">GNOME æ‡‰ç”¨ç¨‹å¼</name>
    <description>A set of commonly used GNOME Applications.</description>
    <description xml:lang="cs">Sada bÄ›Å¾nÄ› pouÅ¾Ã­vanÃ½ch aplikacÃ­ v prostÅ™edÃ­ GNOME.</description>
    <description xml:lang="de">Eine Reihe hÃ¤ufig verwendeter GNOME-Anwendungen.</description>
    <description xml:lang="de_CH">Eine Reihe hÃ¤ufig verwendeter GNOME-Anwendungen.</description>
    <description xml:lang="es">Un set de las aplicaciones GNOME mÃ¡s utilizadas.</description>
    <description xml:lang="fr">Ensemble d'applications GNOME couramment utilisÃ©es.</description>
    <description xml:lang="gu">àª¸àª¾àª®àª¾àª¨à«àª¯ àª°à«€àª¤à«‡ àªµàªªàª°àª¾àª¤àª¾ GNOME àª•àª¾àª°à«àª¯àª•à«àª°àª®à«‹àª¨à«‹ àª¸àª®à«‚àª¹.</description>
    <description xml:lang="hi">à¤¬à¤¾à¤°à¤‚à¤¬à¤¾à¤° à¤ªà¥à¤°à¤¯à¥à¤•à¥à¤¤ à¤—à¤¨à¥‹à¤® à¤…à¤¨à¥à¤ªà¥à¤°à¤¯à¥‹à¤—.</description>
    <description xml:lang="it">Un set di applicazioni GNOME usate frequentemente.</description>
    <description xml:lang="ja">ã‚ˆãä½¿ç”¨ã™ã‚‹ GNOME ã‚¢ãƒ—ãƒªã‚±ãƒ¼ã‚·ãƒ§ãƒ³ã‚»ãƒƒãƒˆã§ã™ã€‚</description>
    <description xml:lang="kn">à²¸à²¾à²®à²¾à²¨à³à²¯à²µà²¾à²—à²¿ à²¬à²³à²¸à²²à²¾à²—à³à²µ GNOME à²…à²¨à³à²µà²¯à²—à²³ à²’à²‚à²¦à³ à²¸à²‚à²—à³à²°à²¹.</description>
    <description xml:lang="ko">ìžì£¼ ì‚¬ìš©í•˜ëŠ” GNOME ì• í”Œë¦¬ì¼€ì´ì…˜ ëª¨ìŒìž…ë‹ˆë‹¤.</description>
    <description xml:lang="ml">à´¸à´¾à´§à´¾à´°à´£à´®à´¾à´¯à´¿ à´Žà´ªàµà´ªàµ‹à´´àµà´‚ à´‰à´ªà´¯àµ‹à´—à´¿à´¯àµà´•àµà´•àµà´¨àµà´¨ à´—àµà´¨àµ‹à´‚ à´ªàµà´°à´¯àµ‹à´—à´™àµà´™à´³àµâ€.</description>
    <description xml:lang="mr">à¤µà¤¾à¤°à¤‚à¤µà¤¾à¤° à¤µà¤¾à¤ªà¤°à¤²à¥‡ à¤œà¤¾à¤£à¤¾à¤±à¥à¤¯à¤¾ GNOME à¥²à¤ªà¥à¤²à¤¿à¤•à¥‡à¤¶à¤¨à¥à¤¸à¥à¤šà¤¾ à¤¸à¤‚à¤š.</description>
    <description xml:lang="or">à¬¸à¬¾à¬§à¬¾à¬°à¬£ à¬­à¬¾à¬¬à¬°à­‡ à¬¬à­à­Ÿà¬¬à¬¹à­ƒà¬¤ GNOME à¬ªà­à¬°à­Ÿà­‹à¬—à¬—à­à¬¡à¬¼à¬¿à¬•à¬° à¬à¬• à¬¸à­‡à¬Ÿà¥¤</description>
    <description xml:lang="pa">à¨…à¨¾à¨® à¨¤à©Œà¨° à¨¤à©‡ à¨µà¨°à¨¤à©€à¨†à¨‚ à¨œà¨¾à¨‚à¨¦à©€à¨†à¨‚ GNOME à¨à¨ªà¨²à©€à¨•à©‡à¨¶à¨¨à¨¾à¨‚ à¨¦à¨¾ à¨‡à©±à¨• à¨¸à¨®à©‚à¨¹à¥¤</description>
    <description xml:lang="pl">Zestaw czÄ™sto uÅ¼ywanych aplikacji Å›rodowiska GNOME.</description>
    <description xml:lang="pt">Um conjunto de aplicativos de GNOME mais usados.</description>
    <description xml:lang="pt_BR">Um conjunto de aplicativos de GNOME mais usados.</description>
    <description xml:lang="ru">ÐÐ°Ð±Ð¾Ñ€ Ð¿Ð¾Ð¿ÑƒÐ»ÑÑ€Ð½Ñ‹Ñ… Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ð¹ GNOME.</description>
    <description xml:lang="ta">à®ªà¯Šà®¤à¯à®µà®¾à®•à®ªà¯ à®ªà®¯à®©à¯à®ªà®Ÿà¯à®¤à¯à®¤à®ªà¯à®ªà®Ÿà¯à®®à¯ GNOME à®ªà®¯à®©à¯à®ªà®¾à®Ÿà¯à®•à®³à®¿à®©à¯ à®¤à¯Šà®•à¯à®ªà¯à®ªà¯.</description>
    <description xml:lang="te">à°‰à°®à±à°®à°¡à°¿à°—à°¾ à°‰à°ªà°¯à±‹à°—à°¿à°‚à°šà±‡ à°—à±à°¨à±‹à°®à± à°…à°¨à±à°µà°°à±à°¤à°¨à°¾à°² à°¸à°®à°¿à°¤à°¿</description>
    <description xml:lang="uk">ÐÐ°Ð±Ñ–Ñ€ Ñ‚Ð¸Ð¿Ð¾Ð²Ð¸Ñ… Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼ GNOME.</description>
    <description xml:lang="zh">ä¸€çµ„å¸¸ç”¨çš„ GNOME æ‡‰ç”¨ç¨‹å¼ã€‚</description>
    <description xml:lang="zh_CN">ä¸€ç»„ç»å¸¸ä½¿ç”¨çš„ GNOME åº”ç”¨ç¨‹åºã€‚</description>
    <description xml:lang="zh_TW">ä¸€çµ„å¸¸ç”¨çš„ GNOME æ‡‰ç”¨ç¨‹å¼ã€‚</description>
    <default>true</default>
    <uservisible>false</uservisible>
    <packagelist>
      <packagereq type="mandatory">brasero</packagereq>
      <packagereq type="mandatory">brasero-nautilus</packagereq>
      <packagereq type="mandatory">rhythmbox</packagereq>
    </packagelist>
  </group>
  <group>
    <id>gnome-desktop</id>
    <name>GNOME</name>
    <name xml:lang="af">GNOME</name>
    <name xml:lang="am">áŠ–áˆ</name>
    <name xml:lang="ar">Ø¬ÙŠÙ†ÙˆÙ…</name>
    <name xml:lang="as">GNOME</name>
    <name xml:lang="be">GNOME</name>
    <name xml:lang="bn">GNOME</name>
    <name xml:lang="bs">GNOME</name>
    <name xml:lang="ca">GNOME</name>
    <name xml:lang="cs">GNOME</name>
    <name xml:lang="cy">GNOME</name>
    <name xml:lang="de">GNOME</name>
    <name xml:lang="de_CH">GNOME</name>
    <name xml:lang="en_GB">GNOME</name>
    <name xml:lang="es">GNOME</name>
    <name xml:lang="eu">GNOME</name>
    <name xml:lang="fa">Ú¯Ù†ÙˆÙ…</name>
    <name xml:lang="fa_IR">Ú¯Ù†ÙˆÙ…</name>
    <name xml:lang="fi">Gnome</name>
    <name xml:lang="fr">GNOME</name>
    <name xml:lang="gl">GNOME</name>
    <name xml:lang="gu">GNOME</name>
    <name xml:lang="hi">GNOME</name>
    <name xml:lang="hr">GNOME</name>
    <name xml:lang="hu">GNOME</name>
    <name xml:lang="hy">GNOME</name>
    <name xml:lang="id">GNOME</name>
    <name xml:lang="ilo">GNOME</name>
    <name xml:lang="it">GNOME</name>
    <name xml:lang="ja">GNOME</name>
    <name xml:lang="ka">GNOME</name>
    <name xml:lang="kn">GNOME</name>
    <name xml:lang="ko">GNOME</name>
    <name xml:lang="lv">GNOME</name>
    <name xml:lang="mk">Ð“Ð½Ð¾Ð¼</name>
    <name xml:lang="ml">à´—àµà´¨àµ‹à´‚</name>
    <name xml:lang="mr">GNOME</name>
    <name xml:lang="no">GNOME</name>
    <name xml:lang="nso">GNOME</name>
    <name xml:lang="or">GNOME</name>
    <name xml:lang="pa">à¨—à¨¨à©‹à¨®</name>
    <name xml:lang="pl">GNOME</name>
    <name xml:lang="pt">GNOME</name>
    <name xml:lang="pt_BR">GNOME</name>
    <name xml:lang="ru">GNOME</name>
    <name xml:lang="si">GNOME</name>
    <name xml:lang="sl">GNOME</name>
    <name xml:lang="sq">GNOME</name>
    <name xml:lang="ta">GNOME</name>
    <name xml:lang="te">GNOME</name>
    <name xml:lang="th">GNOME</name>
    <name xml:lang="tr">GNOME</name>
    <name xml:lang="uk">GNOME</name>
    <name xml:lang="ur">Ø¬ÙŠÙ†ÙˆÙ…</name>
    <name xml:lang="vi">GNOME</name>
    <name xml:lang="zh">GNOME</name>
    <name xml:lang="zh_CN">GNOME</name>
    <name xml:lang="zh_TW">GNOME</name>
    <name xml:lang="zu">I-GNOME</name>
    <description>GNOME is a highly intuitive and user-friendly desktop environment.</description>
    <description xml:lang="de">GNOME ist eine sehr intuitive und benutzerfreundliche Desktop-Umgebung.</description>
    <description xml:lang="es">GNOME es un entorno de escritorio muy intuitivo y fÃ¡cil de usar.</description>
    <description xml:lang="fr">GNOME est un environnement de bureau convivial et hautement intuitif.</description>
    <description xml:lang="it">GNOME Ã¨ un ambiente desktop molto intuitivo e facile da usare.</description>
    <description xml:lang="ja">GNOME ã¯éžå¸¸ã«ç›´è¦³çš„ã§ãƒ¦ãƒ¼ã‚¶ãƒ¼ãƒ•ãƒ¬ãƒ³ãƒ‰ãƒªãƒ¼ãªãƒ‡ã‚¹ã‚¯ãƒˆãƒƒãƒ—ç’°å¢ƒã§ã™ã€‚</description>
    <description xml:lang="ko">GNOMEì€ ì‚¬ìš©í•˜ê¸° ì‰½ê³  ì‚¬ìš©ìž ì¹œí™”ì ì¸ ë°ìŠ¤í¬íƒ‘ í™˜ê²½ìž…ë‹ˆë‹¤.</description>
    <description xml:lang="pt_BR">O GNOME Ã© um ambiente de trabalho altamente intuitivo e fÃ¡cil de usar.</description>
    <description xml:lang="ru">GNOME - ÑÑ‚Ð¾ Ð¸Ð½Ñ‚ÑƒÐ¸Ñ‚Ð¸Ð²Ð½Ð¾ Ð¿Ð¾Ð½ÑÑ‚Ð½Ð¾Ðµ Ð¸ ÑƒÐ´Ð¾Ð±Ð½Ð¾Ðµ Ð¾ÐºÑ€ÑƒÐ¶ÐµÐ½Ð¸Ðµ Ñ€Ð°Ð±Ð¾Ñ‡ÐµÐ³Ð¾ ÑÑ‚Ð¾Ð»Ð°.</description>
    <description xml:lang="zh_CN">GNOME æ˜¯ä¸€ä¸ªéžå¸¸ç›´è§‚ä¸”ç”¨æˆ·å‹å¥½çš„æ¡Œé¢çŽ¯å¢ƒã€‚</description>
    <description xml:lang="zh_TW">GNOMEæ˜¯ä¸€å€‹é«˜åº¦ç›´è§€ä¸”ç”¨æˆ¶å‹å¥½çš„æ¡Œé¢ç’°å¢ƒã€‚</description>
    <default>true</default>
    <uservisible>false</uservisible>
    <packagelist>
      <packagereq type="mandatory">PackageKit-command-not-found</packagereq>
      <packagereq type="mandatory">PackageKit-gtk3-module</packagereq>
      <packagereq type="mandatory">at-spi2-atk</packagereq>
      <packagereq type="mandatory">at-spi2-core</packagereq>
      <packagereq type="mandatory">baobab</packagereq>
      <packagereq type="mandatory">cheese</packagereq>
      <packagereq type="mandatory">chrome-gnome-shell</packagereq>
      <packagereq type="mandatory">dconf</packagereq>
      <packagereq type="mandatory">eog</packagereq>
      <packagereq type="mandatory">evince</packagereq>
      <packagereq type="mandatory">evince-nautilus</packagereq>
      <packagereq type="mandatory">file-roller</packagereq>
      <packagereq type="mandatory">fprintd-pam</packagereq>
      <packagereq type="mandatory">gdm</packagereq>
      <packagereq type="mandatory">gedit</packagereq>
      <packagereq type="mandatory">gnome-bluetooth</packagereq>
      <packagereq type="mandatory">gnome-boxes</packagereq>
      <packagereq type="mandatory">gnome-calculator</packagereq>
      <packagereq type="mandatory">gnome-characters</packagereq>
      <packagereq type="mandatory">gnome-classic-session</packagereq>
      <packagereq type="mandatory">gnome-color-manager</packagereq>
      <packagereq type="mandatory">gnome-control-center</packagereq>
      <packagereq type="mandatory">gnome-disk-utility</packagereq>
      <packagereq type="mandatory">gnome-font-viewer</packagereq>
      <packagereq type="mandatory">gnome-getting-started-docs</packagereq>
      <packagereq type="mandatory">gnome-initial-setup</packagereq>
      <packagereq type="mandatory">gnome-logs</packagereq>
      <packagereq type="mandatory">gnome-remote-desktop</packagereq>
      <packagereq type="mandatory">gnome-screenshot</packagereq>
      <packagereq type="mandatory">gnome-session-wayland-session</packagereq>
      <packagereq type="mandatory">gnome-session-xsession</packagereq>
      <packagereq type="mandatory">gnome-settings-daemon</packagereq>
      <packagereq type="mandatory">gnome-shell</packagereq>
      <packagereq type="mandatory">gnome-software</packagereq>
      <packagereq type="mandatory">gnome-system-monitor</packagereq>
      <packagereq type="mandatory">gnome-terminal</packagereq>
      <packagereq type="mandatory">gnome-terminal-nautilus</packagereq>
      <packagereq type="mandatory">gnome-themes-standard</packagereq>
      <packagereq type="mandatory">gnome-user-docs</packagereq>
      <packagereq type="mandatory">gvfs-afc</packagereq>
      <packagereq type="mandatory">gvfs-afp</packagereq>
      <packagereq type="mandatory">gvfs-archive</packagereq>
      <packagereq type="mandatory">gvfs-fuse</packagereq>
      <packagereq type="mandatory">gvfs-goa</packagereq>
      <packagereq type="mandatory">gvfs-gphoto2</packagereq>
      <packagereq type="mandatory">gvfs-mtp</packagereq>
      <packagereq type="mandatory">gvfs-smb</packagereq>
      <packagereq type="mandatory">initial-setup-gui</packagereq>
      <packagereq type="mandatory">libcanberra-gtk3</packagereq>
      <packagereq type="mandatory">librsvg2</packagereq>
      <packagereq type="mandatory">libsane-hpaio</packagereq>
      <packagereq type="mandatory">mesa-dri-drivers</packagereq>
      <packagereq type="mandatory">mousetweaks</packagereq>
      <packagereq type="mandatory">nautilus</packagereq>
      <packagereq type="mandatory">nautilus-sendto</packagereq>
      <packagereq type="mandatory">orca</packagereq>
      <packagereq type="mandatory">sane-backends-drivers-scanners</packagereq>
      <packagereq type="mandatory">sushi</packagereq>
      <packagereq type="mandatory">totem</packagereq>
      <packagereq type="mandatory">totem-nautilus</packagereq>
      <packagereq type="mandatory">tracker</packagereq>
      <packagereq type="mandatory">tracker-miners</packagereq>
      <packagereq type="mandatory">vino</packagereq>
      <packagereq type="mandatory">xdg-desktop-portal</packagereq>
      <packagereq type="mandatory">xdg-desktop-portal-gtk</packagereq>
      <packagereq type="mandatory">xdg-user-dirs-gtk</packagereq>
      <packagereq type="mandatory">yelp</packagereq>
      <packagereq type="mandatory">yelp-tools</packagereq>
      <packagereq type="optional">gedit-plugins</packagereq>
      <packagereq type="optional">gnome-backgrounds</packagereq>
      <packagereq type="optional">gnome-shell-extension-disable-screenshield</packagereq>
      <packagereq type="optional">gnome-shell-extension-horizontal-workspaces</packagereq>
      <packagereq type="optional">gnome-shell-extension-window-grouper</packagereq>
    </packagelist>
  </group>
  <group>
    <id>graphical-admin-tools</id>
    <name>Graphical Administration Tools</name>
    <name xml:lang="as">à¦—à§à§°à¦¾à¦«à¦¿à¦•à§‡à¦² à¦ªà¦¦à§à¦§à¦¤à¦¿à¦¤ à¦¬à§à¦¯à§±à¦¹à¦¾à§°à¦¯à§‹à¦—à§à¦¯ à¦ªà§à§°à¦¶à¦¾à¦¸à¦¨à¦¿à¦• à¦¸à¦à¦œà§à¦²à¦¿à¦¸à¦®à§‚à¦¹</name>
    <name xml:lang="bn">à¦—à§à¦°à¦¾à¦«à¦¿à¦•à§à¦¯à¦¾à¦² à¦ªà¦¦à§à¦§à¦¤à¦¿à¦¤à§‡ à¦¬à§à¦¯à¦¬à¦¹à¦¾à¦°à¦¯à§‹à¦—à§à¦¯ à¦ªà§à¦°à¦¶à¦¾à¦¸à¦¨à¦¿à¦• à¦¸à¦°à¦žà§à¦œà¦¾à¦®</name>
    <name xml:lang="cs">GrafickÃ© nÃ¡stroje pro sprÃ¡vu</name>
    <name xml:lang="de">Grafische Administrations-Tools</name>
    <name xml:lang="de_CH">Grafische Administrations-Tools</name>
    <name xml:lang="es">Herramientas grÃ¡ficas de AdministraciÃ³n</name>
    <name xml:lang="fr">Outils d'administration graphique</name>
    <name xml:lang="gu">àª—à«àª°àª¾àª«àª¿àª•àª² àª¸àª‚àªšàª¾àª²àª¨ àª¸àª¾àª§àª¨à«‹</name>
    <name xml:lang="hi">à¤†à¤²à¥‡à¤–à¥€ à¤ªà¥à¤°à¤¶à¤¾à¤¸à¤¨ à¤”à¤œà¤¼à¤¾à¤°</name>
    <name xml:lang="ia">Instrumentos de administration graphic</name>
    <name xml:lang="it">Tool di amministrazione grafica</name>
    <name xml:lang="ja">ã‚°ãƒ©ãƒ•ã‚£ã‚«ãƒ«ç®¡ç†ãƒ„ãƒ¼ãƒ«</name>
    <name xml:lang="kn">à²šà²¿à²¤à³à²°à²¾à²¤à³à²®à²• à²¨à²¿à²°à³à²µà²¹à²£à²¾ à²‰à²ªà²•à²°à²£à²—à²³à³</name>
    <name xml:lang="ko">ê·¸ëž˜í”½ê¸°ë°˜ ê´€ë¦¬ íˆ´ </name>
    <name xml:lang="ml">à´—àµà´°à´¾à´«à´¿à´•àµà´¸àµ à´…à´¡àµà´®à´¿à´¨à´¿à´¸àµà´Ÿàµà´°àµ‡à´·à´¨àµâ€ à´‰à´ªà´•à´°à´£à´™àµà´™à´³àµâ€</name>
    <name xml:lang="mr">à¤—à¥à¤°à¤¾à¤«à¤¿à¤•à¤² à¤ªà¥à¤°à¤¶à¤¾à¤¸à¤•à¥€à¤¯ à¤¸à¤¾à¤§à¤¨à¥‡</name>
    <name xml:lang="or">à¬†à¬²à­‡à¬–à­€à¬• à¬ªà­à¬°à¬¶à¬¾à¬¸à¬¨à­€à­Ÿ à¬‰à¬ªà¬•à¬°à¬£à¬®à¬¾à¬¨</name>
    <name xml:lang="pa">à¨—à¨°à¨¾à¨«à©€à¨•à¨² à¨ªà¨°à¨¬à©°à¨§à¨¨ à¨Ÿà©‚à¨²</name>
    <name xml:lang="pl">Graficzne narzÄ™dzia administracyjne</name>
    <name xml:lang="pt">Ferramentas Administrativas grÃ¡ficas</name>
    <name xml:lang="pt_BR">Ferramentas Administrativas grÃ¡ficas</name>
    <name xml:lang="ru">Ð“Ñ€Ð°Ñ„Ð¸Ñ‡ÐµÑÐºÐ¸Ðµ ÑÑ€ÐµÐ´ÑÑ‚Ð²Ð° Ð°Ð´Ð¼Ð¸Ð½Ð¸ÑÑ‚Ñ€Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ</name>
    <name xml:lang="sv">Grafiska administrationsverktyg</name>
    <name xml:lang="ta">à®µà®°à¯ˆà®•à®²à¯ˆ à®¨à®¿à®°à¯à®µà®¾à®• à®•à®°à¯à®µà®¿à®•à®³à¯</name>
    <name xml:lang="te">à°—à±à°°à°¾à°«à°¿à°•à°²à± à°¨à°¿à°°à±à°µà°¹à°£à°¾ à°¸à°¾à°§à°¨à°®à±à°²à±</name>
    <name xml:lang="uk">Ð“Ñ€Ð°Ñ„Ñ–Ñ‡Ð½Ñ– Ð·Ð°ÑÐ¾Ð±Ð¸ Ð°Ð´Ð¼Ñ–Ð½Ñ–ÑÑ‚Ñ€ÑƒÐ²Ð°Ð½Ð½Ñ</name>
    <name xml:lang="zh">åœ–å½¢åŒ–ç®¡ç†å·¥å…·</name>
    <name xml:lang="zh_CN">å›¾å½¢ç®¡ç†å·¥å…·</name>
    <name xml:lang="zh_TW">åœ–å½¢åŒ–ç®¡ç†å·¥å…·</name>
    <description>Graphical system administration tools for managing many aspects of a system.</description>
    <description xml:lang="as">à¦à¦Ÿà¦¾ à¦šà¦¿à¦¸à§à¦Ÿà§‡à¦®à§° à¦¬à¦¹à§ à¦¬à¦¸à§à¦¤à§à¦• à¦šà¦®à§à¦­à¦¾à¦²à§€à¦¬à¦²à§‡ à¦—à§à§°à¦¾à¦«à§€à§Ÿ à¦šà¦¿à¦¸à§à¦Ÿà§‡à¦® à¦¬à§à¦¯à§±à¦¸à§à¦¥à¦¾à¦ªà¦¨à¦¾ à¦¸à¦à¦œà§à¦²à¦¿à¦¸à¦®à§‚à¦¹à¥¤</description>
    <description xml:lang="bn">à¦¸à¦¿à¦¸à§à¦Ÿà§‡à¦®à§‡à¦° à¦¬à¦¿à¦­à¦¿à¦¨à§à¦¨ à¦…à¦‚à¦¶ à¦ªà¦°à¦¿à¦šà¦¾à¦²à¦¨à¦¾à¦° à¦œà¦¨à§à¦¯ à¦¸à¦¿à¦¸à§à¦Ÿà§‡à¦® à¦…à§à¦¯à¦¾à¦¡à¦®à¦¿à¦¨à¦¿à¦¸à§à¦Ÿà§à¦°à§‡à¦¶à¦¨à§‡à¦° à¦—à§à¦°à¦¾à¦«à¦¿à¦•à§à¦¯à¦¾à¦² à¦¸à¦°à¦žà§à¦œà¦¾à¦®</description>
    <description xml:lang="cs">GrafickÃ© nÃ¡stroje pro sprÃ¡vu mnoha aspektÅ¯ systÃ©mu.</description>
    <description xml:lang="de">Grafische Systemadministrations-Tools zur Verwaltung vieler Aspekte eines Systems.</description>
    <description xml:lang="de_CH">Grafische Systemadministrations-Tools zur Verwaltung vieler Aspekte eines Systems.</description>
    <description xml:lang="es">Herramientas de administraciÃ³n de sistemas grÃ¡ficos para administrar varios aspectos de un sistema.</description>
    <description xml:lang="fr">Outils d'administration du systÃ¨me graphique pour la gestion de nombreux aspects d'un systÃ¨me.</description>
    <description xml:lang="gu">àª¸àª¿àª¸à«àªŸàª®àª¨à«€ àª˜àª£à«€ àª¸à«àª¥àª¿àª¤àª¿àª¨à«‡ àª¸àª‚àªšàª¾àª²àª¿àª¤ àª•àª°àªµàª¾ àª®àª¾àªŸà«‡ àª—à«àª°àª¾àª«àª¿àª•àª² àª¸àª¿àª¸à«àªŸàª® àª¸àª‚àªšàª¾àª²àª¨ àª¸àª¾àª§àª¨à«‹.</description>
    <description xml:lang="hi">à¤¤à¤‚à¤¤à¥à¤° à¤•à¥‡ à¤•à¤ˆ à¤ªà¤¹à¤²à¥‚ à¤•à¥‡ à¤²à¤¿à¤ à¤†à¤²à¥‡à¤–à¥€ à¤ªà¥à¤°à¤¶à¤¾à¤¸à¤¨ à¤”à¤œà¤¼à¤¾à¤°.</description>
    <description xml:lang="ia">Utensiles graphic pro administrar numerose aspectos de un systema.</description>
    <description xml:lang="it">Strumenti di gestione del sistema grafici per la gestione di numerosi aspetti di un sistema</description>
    <description xml:lang="ja">ã‚·ã‚¹ãƒ†ãƒ ã®å¤šãã®å´é¢ã‚’ç®¡ç†ã™ã‚‹ãŸã‚ã®ã‚°ãƒ©ãƒ•ã‚£ã‚«ãƒ«ãªã‚·ã‚¹ãƒ†ãƒ ç®¡ç†ãƒ„ãƒ¼ãƒ«ã§ã™ã€‚</description>
    <description xml:lang="kn">à²’à²‚à²¦à³ à²µà³à²¯à²µà²¸à³à²¥à³†à²¯ à²¹à²²à²µà³ à²…à²‚à²¶à²—à²³à²¨à³à²¨à³ à²¨à²¿à²°à³à²µà²¹à²¿à²¸à³à²µ à²šà²¿à²¤à³à²°à²¾à²¤à³à²®à²• à²¨à²¿à²°à³à²µà²¹à²£à²¾ à²‰à²ªà²•à²°à²£à²—à²³à³</description>
    <description xml:lang="ko">ì‹œìŠ¤í…œì˜ ì—¬ëŸ¬ ì¸¡ë©´ì„ ê´€ë¦¬í•˜ê¸° ìœ„í•œ ê·¸ëž˜í”½ ì‹œìŠ¤í…œ ê´€ë¦¬ íˆ´ </description>
    <description xml:lang="ml">à´’à´°àµ à´¸à´¿à´¸àµà´±àµà´±à´¤àµà´¤à´¿à´¨àµà´±àµ† à´ªà´² à´¤à´°à´¤àµà´¤à´¿à´²àµà´³àµà´³ à´•à´¾à´°àµà´¯à´™àµà´™à´³àµâ€ à´•àµˆà´•à´¾à´°àµà´¯à´‚ à´šàµ†à´¯àµà´¯àµà´¨àµà´¨à´¤à´¿à´¨àµà´³àµà´³ à´—àµà´°à´¾à´«à´¿à´•àµà´•à´²àµâ€ à´¸à´¿à´¸àµà´±àµà´±à´‚ à´…à´¡àµà´®à´¿à´¨à´¿à´¸àµà´Ÿàµà´°àµ‡à´·à´¨àµâ€ à´ªàµà´°à´¯àµ‹à´—à´™àµà´™à´³àµâ€.</description>
    <description xml:lang="mr">à¤ªà¥à¤°à¤£à¤¾à¤²à¥€à¤šà¥‡ à¤…à¤¨à¥‡à¤• à¤ªà¥ˆà¤²à¥‚ à¤µà¥à¤¯à¤µà¤¸à¥à¤¥à¤¾à¤ªà¥€à¤¤ à¤•à¤°à¤£à¥à¤¯à¤¾à¤¸à¤¾à¤ à¥€ à¤—à¥à¤°à¤¾à¤«à¤¿à¤•à¤² à¤¸à¤¿à¤¸à¥à¤Ÿà¤®à¥ à¤ªà¥à¤°à¤¶à¤¾à¤¸à¤¨ à¤¸à¤¾à¤§à¤¨à¥‡.</description>
    <description xml:lang="or">à¬¤à¬¨à­à¬¤à­à¬°à¬° à¬…à¬¨à­‡à¬• à¬¦à­ƒà¬·à­à¬Ÿà¬¿à¬•à­‹à¬£à¬•à­ à¬ªà¬°à¬¿à¬šà¬¾à¬³à¬¨à¬¾ à¬•à¬°à¬¿à¬¬à¬¾ à¬ªà¬¾à¬‡à¬ à¬†à¬²à­‡à¬–à¬¿à¬• à¬¤à¬¨à­à¬¤à­à¬° à¬ªà­à¬°à¬¶à¬¾à¬¸à¬¨à­€à­Ÿ à¬‰à¬ªà¬•à¬°à¬£à¬—à­à¬¡à¬¼à¬¿à¬•à¥¤</description>
    <description xml:lang="pa">à¨‡à©±à¨• à¨¸à¨¿à¨¸à¨Ÿà¨® à¨¦à©‡ à¨¬à¨¹à©à¨¤ à¨¸à¨¾à¨°à©‡ à¨•à©°à¨Ÿà¨°à©‹à¨²à¨¾à¨‚ à¨²à¨ˆ à¨—à¨°à¨¾à¨«à©€à¨•à¨² à¨¸à¨¿à¨¸à¨Ÿà¨® à¨ªà¨°à¨¬à©°à¨§à¨¨ à¨Ÿà©‚à¨²à¥¤</description>
    <description xml:lang="pl">Graficzne narzÄ™dzia administracji systemem do zarzÄ…dzania wieloma aspektami systemu.</description>
    <description xml:lang="pt">Ferramentas de administraÃ§Ã£o de sistemas para gerenciar muitos aspectos de um sistema.</description>
    <description xml:lang="pt_BR">Ferramentas de administraÃ§Ã£o de sistemas para gerenciar muitos aspectos de um sistema.</description>
    <description xml:lang="ru">Ð“Ñ€Ð°Ñ„Ð¸Ñ‡ÐµÑÐºÐ¸Ðµ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¼Ñ‹ ÑƒÐ¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð¸Ñ ÑÐ¸ÑÑ‚ÐµÐ¼Ð½Ñ‹Ð¼Ð¸ ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÐµÐ½Ñ‚Ð°Ð¼Ð¸.</description>
    <description xml:lang="ta">à®’à®°à¯ à®šà®¿à®¸à¯à®Ÿà®¤à¯à®¤à®¿à®©à¯ à®ªà®² à®µà®•à¯ˆà®•à®³à¯ˆ à®¨à®¿à®°à¯à®µà®•à®¿à®•à¯à®• à®µà®°à¯ˆà®•à®²à¯ˆ à®šà®¿à®¸à¯à®Ÿà®®à¯ à®¨à®¿à®°à¯à®µà®¾à®• à®•à®°à¯à®µà®¿à®•à®³à¯.</description>
    <description xml:lang="te">à°¸à°¿à°¸à±à°Ÿà°®à± à°¯à±Šà°•à±à°• à°ªà±†à°•à±à°•à± à°¦à±ƒà°•à±à°•à±à°²à±(à°¯à°¾à°¸à±à°ªà±†à°•à±à°Ÿà±à°¸à±) à°¨à°¿à°°à±à°µà°¹à°¿à°‚à°šà±à°Ÿà°•à± à°—à±à°°à°¾à°«à°¿à°•à°²à± à°¸à°¿à°¸à±à°Ÿà°®à± à°¨à°¿à°°à±à°µà°¹à°£à°¾ à°¸à°¾à°§à°¨à°®à±à°²à±.</description>
    <description xml:lang="uk">Ð“Ñ€Ð°Ñ„Ñ–Ñ‡Ð½Ñ– Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¸ Ð´Ð»Ñ Ð°Ð´Ð¼Ñ–Ð½Ñ–ÑÑ‚Ñ€Ð°Ñ‚Ð¸Ð²Ð½Ð¾Ð³Ð¾ ÐºÐµÑ€ÑƒÐ²Ð°Ð½Ð½Ñ Ñ€Ñ–Ð·Ð½Ð¸Ð¼Ð¸ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð°Ð¼Ð¸ ÑÐ¸ÑÑ‚ÐµÐ¼Ð¸.</description>
    <description xml:lang="zh">ç®¡ç†ç³»çµ±å¤šæ–¹é¢çš„åœ–åƒåŒ–ç³»çµ±ç®¡ç†å·¥å…·ã€‚</description>
    <description xml:lang="zh_CN">ç”¨äºŽç®¡ç†ç³»ç»Ÿå„ä¸ªæ–¹é¢çš„å›¾å½¢ç³»ç»Ÿç®¡ç†å·¥å…·ã€‚</description>
    <description xml:lang="zh_TW">ç®¡ç†ç³»çµ±å¤šæ–¹é¢çš„åœ–åƒåŒ–ç³»çµ±ç®¡ç†å·¥å…·ã€‚</description>
    <default>true</default>
    <uservisible>true</uservisible>
    <packagelist>
      <packagereq type="optional">gnome-disk-utility</packagereq>
      <packagereq type="optional">policycoreutils-gui</packagereq>
      <packagereq type="optional">setroubleshoot</packagereq>
      <packagereq type="optional">wireshark</packagereq>
    </packagelist>
  </group>
  <group>
    <id>graphics</id>
    <name>Graphics Creation Tools</name>
    <name xml:lang="as">à¦—à§à§°à¦¾à¦«à¦¿à¦•à§à¦¸ à¦¨à¦¿à§°à§à¦®à¦¾à¦£à§° à¦¬à¦¾à¦¬à§‡ à¦¬à§à¦¯à§±à¦¹à¦¾à§°à¦¯à§‹à¦—à§à¦¯ à¦¸à¦à¦œà§à¦²à¦¿à¦¸à¦®à§‚à¦¹</name>
    <name xml:lang="bn">à¦—à§à¦°à¦¾à¦«à¦¿à¦•à§à¦¸ à¦¨à¦¿à¦°à§à¦®à¦¾à¦£à§‡à¦° à¦œà¦¨à§à¦¯ à¦¬à§à¦¯à¦¬à¦¹à¦¾à¦°à¦¯à§‹à¦—à§à¦¯ à¦¸à¦°à¦žà§à¦œà¦¾à¦®</name>
    <name xml:lang="cs">GrafickÃ© tvÅ¯rÄÃ­ nÃ¡stroje</name>
    <name xml:lang="de">Tools zur Erstellung von Grafiken</name>
    <name xml:lang="de_CH">Tools zur Erstellung von Grafiken</name>
    <name xml:lang="es">Herramientas de creaciÃ³n de grÃ¡ficas</name>
    <name xml:lang="fr">Outils de crÃ©ation graphique</name>
    <name xml:lang="gu">àª—à«àª°àª¾àª«àª¿àª•à«àª¸ àª¬àª¨àª¾àªµàªµàª¾àª¨àª¾àª‚ àª¸àª¾àª§àª¨à«‹</name>
    <name xml:lang="hi">à¤†à¤²à¥‡à¤–à¥€ à¤¨à¤¿à¤°à¥à¤®à¤¾à¤£ à¤”à¤œà¤¼à¤¾à¤°</name>
    <name xml:lang="ia">Instrumentos pro crear graphicas</name>
    <name xml:lang="it">Tool di creazione grafici</name>
    <name xml:lang="ja">ã‚°ãƒ©ãƒ•ã‚£ãƒƒã‚¯ã‚¹ãƒ„ãƒ¼ãƒ«</name>
    <name xml:lang="kn">à²—à³à²°à²¾à²«à²¿à²•à³à²¸à³ à²°à²šà²¨à²¾ à²‰à²ªà²•à²°à²£à²—à²³à³</name>
    <name xml:lang="ko">ê·¸ëž˜í”½ ìƒì„± íˆ´ </name>
    <name xml:lang="ml">à´—àµà´°à´¾à´«à´¿à´•àµà´¸àµ à´¸à´œàµà´œà´®à´¾à´•àµà´•àµà´¨àµà´¨à´¤à´¿à´¨àµà´³àµà´³ à´‰à´ªà´•à´°à´£à´™àµà´™à´³àµâ€</name>
    <name xml:lang="mr">à¤—à¥à¤°à¤¾à¤«à¤¿à¤•à¥à¤¸à¥ à¤¨à¤¿à¤°à¥à¤®à¤¾à¤£ à¤¸à¤¾à¤§à¤¨à¥‡</name>
    <name xml:lang="or">à¬†à¬²à­‡à¬–à­€à¬• à¬¨à¬¿à¬°à­à¬®à¬¾à¬£ à¬‰à¬ªà¬•à¬°à¬£</name>
    <name xml:lang="pa">à¨—à¨°à¨¾à¨«à©€à¨•à¨² à¨¬à¨£à¨¾à¨µà¨Ÿà©€ à¨¸à©°à¨¦</name>
    <name xml:lang="pl">NarzÄ™dzia tworzenia grafiki</name>
    <name xml:lang="pt">Ferramentas de criaÃ§ao grÃ¡ficas</name>
    <name xml:lang="pt_BR">Ferramentas de criaÃ§ao grÃ¡ficas</name>
    <name xml:lang="ru">Ð¡Ñ€ÐµÐ´ÑÑ‚Ð²Ð° ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ð³Ñ€Ð°Ñ„Ð¸ÐºÐ¸</name>
    <name xml:lang="sv">Grafiska verktyg fÃ¶r att skapa</name>
    <name xml:lang="ta">à®µà®°à¯ˆà®•à®²à¯ˆà®•à®³à¯ à®‰à®°à¯à®µà®¾à®•à¯à®• à®•à®°à¯à®µà®¿à®•à®³à¯</name>
    <name xml:lang="te">à°—à±à°°à°¾à°«à°¿à°•à±à°¸à± à°¸à±ƒà°·à±à°Ÿà±€à°•à°°à°£ à°¸à°¾à°§à°¨à°®à±à°²à±</name>
    <name xml:lang="uk">Ð†Ð½ÑÑ‚Ñ€ÑƒÐ¼ÐµÐ½Ñ‚Ð¸ Ð´Ð»Ñ ÑÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ð³Ñ€Ð°Ñ„Ñ–ÐºÐ¸</name>
    <name xml:lang="zh">åœ–å½¢è¨­è¨ˆå·¥å…·</name>
    <name xml:lang="zh_CN">å›¾å½¢ç”Ÿæˆå·¥å…·</name>
    <name xml:lang="zh_TW">åœ–å½¢è¨­è¨ˆå·¥å…·</name>
    <description>Software for creation and manipulation of still images.</description>
    <description xml:lang="as">à¦›à¦¬à¦¿ à¦¨à¦¿à§°à§à¦®à¦¾à¦£ à¦†à§°à§ à¦ªà§°à¦¿à¦¬à§°à§à¦¤à¦¨à§° à¦¬à¦¾à¦¬à§‡ à¦¬à§à¦¯à§±à¦¹à¦¾à§°à¦¯à§‹à¦—à§à¦¯ à¦šà¦«à§à¦Ÿà§±à§‡à§°à¥¤</description>
    <description xml:lang="bn">à¦›à¦¬à¦¿ à¦¨à¦¿à¦°à§à¦®à¦¾à¦£ à¦“ à¦ªà¦°à¦¿à¦¬à¦°à§à¦¤à¦¨à§‡à¦° à¦œà¦¨à§à¦¯ à¦¬à§à¦¯à¦¬à¦¹à¦¾à¦°à¦¯à§‹à¦—à§à¦¯ à¦¸à¦«à§à¦Ÿà¦“à§Ÿà§à¦¯à¦¾à¦°à¥¤</description>
    <description xml:lang="cs">Software pro tvorbu a Ãºpravu statickÃ½ch obrÃ¡zkÅ¯.</description>
    <description xml:lang="de">Software zur Erstellung und Manipulation von Stillbildern.</description>
    <description xml:lang="de_CH">Software zur Erstellung und Manipulation von Stillbildern.</description>
    <description xml:lang="es">Software para creaciÃ³n y manipulaciÃ³n de imÃ¡genes fijas.</description>
    <description xml:lang="fr">Logiciel pour la crÃ©ation et la manipulation d'images fixes.</description>
    <description xml:lang="gu">àª¹àªœà« àª‡àª®à«‡àªœà«‹àª¨à«‡ àªµàª¾àªªàª°àªµàª¾ àª…àª¨à«‡ àª¬àª¨àª¾àªµàªµàª¾ àª®àª¾àªŸà«‡ àª¸à«‹àª«à«àªŸàªµà«‡àª°.</description>
    <description xml:lang="hi">à¤¨à¤¿à¤°à¥à¤œà¥€à¤µ à¤›à¤µà¤¿à¤¯à¥‹à¤‚ à¤•à¥‡ à¤¨à¤¿à¤°à¥à¤®à¤¾à¤£ à¤”à¤° à¤ªà¤°à¤¿à¤µà¤°à¥à¤¤à¤¨ à¤•à¥‡ à¤²à¤¿à¤ à¤¸à¥‰à¤«à¥à¤Ÿà¤µà¥‡à¤¯à¤°.</description>
    <description xml:lang="ia">Software pro crear e manipular imagines immobile.</description>
    <description xml:lang="it">Software per la creazione e manipolazione di immagini ferme.</description>
    <description xml:lang="ja">é™æ­¢ç”»åƒã®ä½œæˆã‚„ä¿®æ­£ã‚’è¡Œã†ãŸã‚ã®ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã§ã™ã€‚</description>
    <description xml:lang="kn">à²¸à³à²¥à²¿à²° à²šà²¿à²¤à³à²°à²—à²³à²¨à³à²¨à³ à²°à²šà²¿à²¸à³à²µ à²¹à²¾à²—à³ à²¸à²‚à²¸à³à²•à²°à²¿à²¸à²²à³ à²¨à³†à²°à²µà²¾à²—à³à²µ à²¤à²‚à²¤à³à²°à²¾à²‚à²¶.</description>
    <description xml:lang="ko">ì •ì§€ í™”ìƒì„ ë§Œë“¤ê³  ë‹¤ë£¨ê¸° ìœ„í•œ ì†Œí”„íŠ¸ì›¨ì–´.</description>
    <description xml:lang="ml">à´¨à´¿à´¶àµà´šà´² à´šà´¿à´¤àµà´°à´™àµà´™à´³àµâ€ à´¤à´¯àµà´¯à´¾à´±à´¾à´•àµà´•àµà´¨àµà´¨à´¤à´¿à´¨àµà´‚ à´•àµˆà´•à´¾à´°àµà´¯à´‚ à´šàµ†à´¯àµà´¯àµà´¨àµà´¨à´¤à´¿à´¨àµà´®àµà´³àµà´³ à´¸àµ‹à´«àµà´±àµà´±àµâ€Œà´µàµ†à´¯à´°àµâ€.</description>
    <description xml:lang="mr">à¤¸à¥à¤Ÿà¥€à¤² à¤ªà¥à¤°à¤¤à¤¿à¤®à¤¾à¤‚à¤šà¥à¤¯à¤¾ à¤¨à¤¿à¤°à¥à¤®à¤¾à¤£ à¤µ à¤¬à¤¦à¤²à¤•à¤°à¥€à¤¤à¤¾ à¤¸à¥‰à¤«à¥à¤Ÿà¤µà¥‡à¤…à¤°.</description>
    <description xml:lang="or">à¬¸à­à¬¥à¬¿à¬° à¬ªà­à¬°à¬¤à¬¿à¬›à¬¬à¬¿à¬—à­à¬¡à¬¼à¬¿à¬•à¬° à¬¨à¬¿à¬°à­à¬®à¬¾à¬£ à¬à¬¬à¬‚ à¬¸à¬™à­à¬•à¬³à¬¨ à¬ªà¬¾à¬‡à¬ à¬¸à¬«à­à¬Ÿà­±à­‡à¬°à¥¤</description>
    <description xml:lang="pa">à¨¸à¨Ÿà¨¿à©±à¨² à¨ˆà¨®à©‡à©› à¨¬à¨£à¨¾à¨‰à¨£ à¨…à¨¤à©‡ à¨¸à©‹à¨§à¨£ à¨²à¨ˆ à¨¸à¨¾à¨«à¨Ÿà¨µà©‡à¨…à¨°à¥¤</description>
    <description xml:lang="pl">Oprogramowanie do tworzenia i modyfikowania obrazÃ³w.</description>
    <description xml:lang="pt">Software para criaÃ§Ã£o e manipulaÃ§Ã£o de imagens paradas.</description>
    <description xml:lang="pt_BR">Software para criaÃ§Ã£o e manipulaÃ§Ã£o de imagens paradas.</description>
    <description xml:lang="ru">ÐŸÑ€Ð¾Ð³Ñ€Ð°Ð¼Ð¼Ñ‹ Ð´Ð»Ñ ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ð¸ Ð¾Ð±Ñ€Ð°Ð±Ð¾Ñ‚ÐºÐ¸ Ð¸Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ð¹.</description>
    <description xml:lang="sv">Program fÃ¶r att skapa och fÃ¶rÃ¤ndra stillbilder.</description>
    <description xml:lang="ta">à®‡à®©à¯à®©à¯à®®à¯ à®ªà®Ÿà®™à¯à®•à®³à¯ˆ à®‰à®°à¯à®µà®¾à®•à¯à®• à®®à®±à¯à®±à¯à®®à¯ à®¤à®¿à®±à®®à¯ˆà®¯à®¾à®• à®•à¯ˆà®¯à®¾à®³à¯à®µà®¤à®±à¯à®•à®¾à®© à®®à¯†à®©à¯à®ªà¯Šà®°à¯à®³à¯.</description>
    <description xml:lang="te">à°¸à±à°Ÿà°¿à°²à± à°‡à°®à±‡à°œà±†à°¸à±â€Œà°¨à± à°¸à±ƒà°·à±à°Ÿà°¿à°‚à°šà±à°Ÿà°•à± à°®à°°à°¿à°¯à± à°¤à±€à°°à±à°šà°¿à°¦à°¿à°¦à±à°¦à±à°Ÿà°•à± à°¸à°¾à°«à±à°Ÿà±à°µà±‡à°°à±.</description>
    <description xml:lang="uk">ÐŸÑ€Ð¾Ð³Ñ€Ð°Ð¼Ð¸ Ð´Ð»Ñ ÑÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ñ– Ð¾Ð±Ñ€Ð¾Ð±ÐºÐ¸ ÑÑ‚Ð°Ñ‚Ð¸Ñ‡Ð½Ð¸Ñ… Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½ÑŒ.</description>
    <description xml:lang="zh">ç”¨ä¾†å»ºç«‹å’Œæ“ä½œéœæ…‹å½±åƒçš„è»Ÿé«”ã€‚</description>
    <description xml:lang="zh_CN">ç”Ÿæˆå’Œæ“ä½œé™æ­¢å›¾åƒçš„è½¯ä»¶ã€‚</description>
    <description xml:lang="zh_TW">ç”¨ä¾†å»ºç«‹å’Œæ“ä½œéœæ…‹å½±åƒçš„è»Ÿé«”ã€‚</description>
    <default>true</default>
    <uservisible>false</uservisible>
    <packagelist>
      <packagereq type="default">gutenprint-plugin</packagereq>
      <packagereq type="default">libsane-hpaio</packagereq>
      <packagereq type="default">sane-backends-drivers-scanners</packagereq>
      <packagereq type="default">sane-frontends</packagereq>
      <packagereq type="default">xsane-gimp</packagereq>
      <packagereq type="optional">dcraw</packagereq>
      <packagereq type="optional">netpbm-progs</packagereq>
    </packagelist>
  </group>
  <group>
    <id>guest-agents</id>
    <name>Guest Agents</name>
    <name xml:lang="as">à¦…à¦¤à¦¿à¦¥à¦¿ à¦¸à¦¹à¦¾à§Ÿà¦•</name>
    <name xml:lang="cs">Agenti pro virtualizovanÃ© hosty</name>
    <name xml:lang="de">Gast-Agenten</name>
    <name xml:lang="de_CH">Gast-Agenten</name>
    <name xml:lang="es">Agentes de huÃ©sped</name>
    <name xml:lang="fr">Agents invitÃ©s</name>
    <name xml:lang="gu">àª®àª¹à«‡àª®àª¾àª¨ àªàªœàª¨à«àªŸà«‹</name>
    <name xml:lang="hi">à¤…à¤¤à¤¿à¤¥à¤¿ à¤ªà¥à¤°à¤¤à¤¿à¤¨à¤¿à¤§à¤¿</name>
    <name xml:lang="it">Agente guest</name>
    <name xml:lang="ja">ã‚²ã‚¹ãƒˆã‚¨ãƒ¼ã‚¸ã‚§ãƒ³ãƒˆ</name>
    <name xml:lang="kn">à²…à²¤à²¿à²¥à²¿ à²®à²§à³à²¯à²µà²°à³à²¤à²¿à²—à²³à³</name>
    <name xml:lang="ko">ê²ŒìŠ¤íŠ¸ ì—ì´ì „íŠ¸</name>
    <name xml:lang="ml">à´—à´¸àµà´±àµà´±àµ à´à´œà´¨àµà´±àµà´•à´³àµâ€</name>
    <name xml:lang="mr">à¤…à¤¤à¤¿à¤¥à¥€ à¤…à¤œà¥‡à¤‚à¤Ÿà¥à¤¸</name>
    <name xml:lang="or">à¬…à¬¤à¬¿à¬¥à¬¿ à¬¸à¬¦à¬¸à­à­Ÿà¬®à¬¾à¬¨à­‡</name>
    <name xml:lang="pa">à¨ªà©à¨°à¨¾à¨¹à©à¨£à©‡ à¨à¨œà©°à¨Ÿ</name>
    <name xml:lang="pl">Agenty goÅ›cia</name>
    <name xml:lang="pt">Agentes de Convidados</name>
    <name xml:lang="pt_BR">Agentes de Convidados</name>
    <name xml:lang="ru">Ð“Ð¾ÑÑ‚ÐµÐ²Ñ‹Ðµ Ð°Ð³ÐµÐ½Ñ‚Ñ‹</name>
    <name xml:lang="ta">à®µà®¿à®°à¯à®¨à¯à®¤à®¿à®©à®°à¯ à®®à¯à®•à®µà®°à¯à®•à®³à¯</name>
    <name xml:lang="te">à°…à°¤à°¿à°¥à°¿ à°à°œà±†à°‚à°Ÿà±à°²à±</name>
    <name xml:lang="uk">ÐÐ³ÐµÐ½Ñ‚Ð¸ Ð³Ð¾ÑÑ‚ÑŒÐ¾Ð²Ð¸Ñ… ÑÐ¸ÑÑ‚ÐµÐ¼</name>
    <name xml:lang="zh">å®¢åº§ä»£ç†ç¨‹å¼</name>
    <name xml:lang="zh_CN">è™šæ‹Ÿæœºä»£ç†</name>
    <name xml:lang="zh_TW">å®¢åº§ä»£ç†ç¨‹å¼</name>
    <description>Agents used when running under a hypervisor.</description>
    <description xml:lang="as">à¦à¦Ÿà¦¾ à¦¹à¦¾à¦‡à¦ªà¦¾à§°à¦­à¦¾à¦‡à¦›à§°à§° à¦…à¦¨à§à¦¤à§°à§à¦—à¦¤ à¦šà¦²à§‹à¦¤à§‡ à¦¬à§à¦¯à§±à¦¹à§ƒà¦¤ à¦¸à¦¹à¦¾à§Ÿà¦•à¦¸à¦®à§‚à¦¹à¥¤</description>
    <description xml:lang="cs">NÃ¡stroje pouÅ¾Ã­vanÃ© pÅ™i virtualizaci s hypervizorem.</description>
    <description xml:lang="de">Verwendete Agenten bei AusfÃ¼hrung unter einem Hypervisor.</description>
    <description xml:lang="de_CH">Verwendete Agenten bei AusfÃ¼hrung unter einem Hypervisor.</description>
    <description xml:lang="es">Agentes utilizados al ejecutarse en un hipervisor.</description>
    <description xml:lang="fr">Agents utilisÃ©s lors d'une exÃ©cution sous un hyperviseur.</description>
    <description xml:lang="gu">àª¹àª¾àª¯àªªàª°àªµàª¾àª‡àªàª° àª¹à«‡àª àª³ àªšàª²àª¾àªµà«€ àª°àª¹à«àª¯àª¾ àª¹à«‹àª¯ àª¤à«àª¯àª¾àª°à«‡ àªµàªªàª°àª¾àª¤àª¾ àªàªœàª¨à«àªŸà«‹.</description>
    <description xml:lang="hi">à¤¹à¤¾à¤‡à¤ªà¤°à¤µà¤¿à¤œà¤¼à¤° à¤•à¥‡ à¤…à¤‚à¤¤à¤°à¥à¤—à¤¤ à¤ªà¥à¤°à¤¯à¥à¤•à¥à¤¤ à¤¹à¥‹à¤¨à¥‡ à¤µà¤¾à¤²à¥‡ à¤ªà¥à¤°à¤¤à¤¿à¤¨à¤¿à¤§à¤¿.</description>
    <description xml:lang="it">Agenti usati durante l'esecuzione con un hypervisor.</description>
    <description xml:lang="ja">ãƒã‚¤ãƒ‘ãƒ¼ãƒã‚¤ã‚¶ãƒ¼é…ä¸‹ã§ç¨¼åƒã™ã‚‹å ´åˆã«ä½¿ç”¨ã™ã‚‹ã‚¨ãƒ¼ã‚¸ã‚§ãƒ³ãƒˆã§ã™ã€‚</description>
    <description xml:lang="kn">à²’à²‚à²¦à³ à²¹à³ˆà²ªà²°à³à²µà³ˆà²¸à²°à²¿à²¨ à²…à²¡à²¿à²¯à²²à³à²²à²¿ à²šà²²à²¾à²¯à²¿à²¤à²—à³Šà²³à³à²³à³à²µà²¾à²— à²¬à²³à²¸à²²à²¾à²—à³à²µ à²®à²§à³à²¯à²µà²°à³à²¤à²¿à²—à²³à³.</description>
    <description xml:lang="ko">í•˜ì´í¼ë°”ì´ì €ì—ì„œ ì‹¤í–‰ ì‹œ ì‚¬ìš©ë˜ëŠ” ì—ì´ì „íŠ¸</description>
    <description xml:lang="ml">à´’à´°àµ à´¹àµˆà´ªàµà´ªà´°àµâ€à´µàµˆà´¸à´±à´¿à´²àµâ€ à´ªàµà´°à´µà´°àµâ€à´¤àµà´¤à´¿à´¯àµà´•àµà´•àµà´®àµà´ªàµ‹à´³àµâ€ à´‰à´ªà´¯àµ‹à´—à´¿à´¯àµà´•àµà´•àµà´¨àµà´¨ à´à´œà´¨àµà´±àµà´•à´³àµâ€.</description>
    <description xml:lang="mr">à¤¹à¤¾à¤‡à¤ªà¤°à¤µà¤¾à¤œà¤° à¤…à¤‚à¤¤à¤°à¥à¤—à¤¤ à¤šà¤¾à¤²à¤µà¤¤à¥‡à¤µà¥‡à¤³à¥€ à¤µà¤¾à¤ªà¤°à¤£à¥à¤¯à¤¾à¤œà¥‹à¤—à¥€ à¤à¤œà¤‚à¤Ÿà¥à¤¸.</description>
    <description xml:lang="or">à¬à¬• à¬¹à¬¾à¬‡à¬ªà¬°à¬­à¬¾à¬‡à¬œà¬° à¬…à¬¨à­à¬¤à¬°à­à¬—à¬¤à¬°à­‡ à¬šà¬²à¬¾à¬‰à¬¥à¬¿à¬¬à¬¾ à¬¸à¬®à­Ÿà¬°à­‡ à¬¬à­à­Ÿà¬¬à¬¹à­ƒà¬¤ à¬¸à¬¦à¬¸à­à­Ÿà¬®à¬¾à¬¨à­‡à¥¤</description>
    <description xml:lang="pa">à¨œà¨¦à©‹à¨‚ à¨¹à¨¾à¨ˆà¨ªà¨°à¨µà¨¾à¨ˆà¨œà¨¼à¨° à¨¹à©‡à¨ à¨¾à¨‚ à¨šà¨²à¨¾à¨ à¨œà¨¾à¨£ à¨¤à¨¾à¨‚ à¨µà¨°à¨¤à©‡ à¨œà¨¾à¨‚à¨¦à©‡ à¨à¨œà©°à¨Ÿà¥¤</description>
    <description xml:lang="pl">Agenty uÅ¼ywane podczas dziaÅ‚ania pod nadzorcÄ….</description>
    <description xml:lang="pt">Agentes utilizados ao serem executados sob um hypervisor</description>
    <description xml:lang="pt_BR">Agentes utilizados ao serem executados sob um hypervisor</description>
    <description xml:lang="ru">ÐÐ³ÐµÐ½Ñ‚Ñ‹, Ñ€Ð°Ð±Ð¾Ñ‚Ð°ÑŽÑ‰Ð¸Ðµ Ð¿Ð¾Ð´ ÑƒÐ¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð¸ÐµÐ¼ Ð³Ð¸Ð¿ÐµÑ€Ð²Ð¸Ð·Ð¾Ñ€Ð°.</description>
    <description xml:lang="ta">à®’à®°à¯ à®¹à¯ˆà®ªà¯à®ªà®°à¯à®µà¯ˆà®šà®°à®¿à®©à¯ à®•à¯€à®´à¯ à®‡à®¯à®•à¯à®•à®ªà¯à®ªà®Ÿà¯à®®à¯ à®ªà¯‹à®¤à¯ à®ªà®¯à®©à¯à®ªà®Ÿà¯à®¤à¯à®¤à®ªà¯à®ªà®Ÿà¯à®®à¯ à®®à¯à®•à®µà®°à¯à®•à®³à¯.</description>
    <description xml:lang="te">à°¹à±ˆà°ªà°°à±à°µà°¿à°œà°°à± à°•à°¿à°‚à°¦à°¨ à°¨à°¡à±à°¸à±à°¤à±à°¨à±à°¨à°ªà±à°ªà±à°¡à± à°…à°¤à°¿à°¥à±à°²à± à°‰à°ªà°¯à±‹à°—à°¿à°‚à°šà°¬à°¡à±à°¨à±.</description>
    <description xml:lang="uk">ÐÐ³ÐµÐ½Ñ‚Ð¸, Ñ‰Ð¾ Ð²Ð¸ÐºÐ¾Ñ€Ð¸ÑÑ‚Ð¾Ð²ÑƒÑŽÑ‚ÑŒÑÑ Ð¿Ñ–Ð´ Ñ‡Ð°Ñ Ñ€Ð¾Ð±Ð¾Ñ‚Ð¸ Ð¿Ñ–Ð´ ÐºÐµÑ€ÑƒÐ²Ð°Ð½Ð½Ñ Ð³Ñ–Ð¿ÐµÑ€Ð²Ñ–Ð·Ð¾Ñ€Ð°.</description>
    <description xml:lang="zh">åœ¨ hypervisor ä¸‹åŸ·è¡Œæ™‚æ‰€ä½¿ç”¨çš„ä»£ç†ç¨‹å¼ã€‚</description>
    <description xml:lang="zh_CN">åœ¨ hypervisor ä¸­è¿è¡Œæ—¶ä½¿ç”¨çš„ä»£ç†ã€‚</description>
    <description xml:lang="zh_TW">åœ¨ hypervisor ä¸‹åŸ·è¡Œæ™‚æ‰€ä½¿ç”¨çš„ä»£ç†ç¨‹å¼ã€‚</description>
    <default>true</default>
    <uservisible>false</uservisible>
    <packagelist>
      <packagereq type="mandatory">hyperv-daemons</packagereq>
      <packagereq type="mandatory">open-vm-tools</packagereq>
      <packagereq type="mandatory">qemu-guest-agent</packagereq>
    </packagelist>
  </group>
  <group>
    <id>guest-desktop-agents</id>
    <name>Guest Desktop Agents</name>
    <name xml:lang="as">à¦…à¦¤à¦¿à¦¥à¦¿ à¦¡à§‡à¦¸à§à¦•à¦Ÿà¦ª à¦¸à¦¹à¦¾à§Ÿà¦•à¦¸à¦®à§‚à¦¹</name>
    <name xml:lang="cs">Agenti pro pracovnÃ­ prostÅ™edÃ­ hostÅ¯</name>
    <name xml:lang="de">Gast-Desktop-Agenten</name>
    <name xml:lang="de_CH">Gast-Desktop-Agenten</name>
    <name xml:lang="es">Agentes de escritorio de huÃ©sped</name>
    <name xml:lang="fr">Agents de bureau invitÃ©s</name>
    <name xml:lang="gu">àª®àª¹à«‡àª®àª¾àª¨ àª¡à«…àª¸à«àª•àªŸà«‹àªª àªàªœàª¨à«àªŸà«‹</name>
    <name xml:lang="hi">à¤…à¤¤à¤¿à¤¥à¤¿ à¤¡à¥‡à¤¸à¥à¤•à¤Ÿà¥‰à¤ª à¤ªà¥à¤°à¤¤à¤¿à¤¨à¤¿à¤§à¤¿</name>
    <name xml:lang="it">Agenti desktop del guest</name>
    <name xml:lang="ja">ã‚²ã‚¹ãƒˆãƒ‡ã‚¹ã‚¯ãƒˆãƒƒãƒ—ã‚¨ãƒ¼ã‚¸ã‚§ãƒ³ãƒˆ</name>
    <name xml:lang="kn">à²…à²¤à²¿à²¥à²¿ à²—à²£à²•à²¤à³†à²°à³† à²®à²§à³à²¯à²µà²°à³à²¤à²¿à²—à²³à³</name>
    <name xml:lang="ko">ê²ŒìŠ¤íŠ¸ ë°ìŠ¤í¬íƒ‘ ì—ì´ì „íŠ¸</name>
    <name xml:lang="ml">à´—à´¸àµà´±àµà´±àµ à´ªà´£à´¿à´¯à´¿à´Ÿà´¤àµà´¤à´¿à´¨àµà´³àµà´³ à´à´œà´¨àµà´±àµà´•à´³àµâ€</name>
    <name xml:lang="mr">à¤…à¤¤à¤¿à¤¥à¥€ à¤¡à¥‡à¤¸à¥à¤•à¤Ÿà¥‰à¤ª à¤à¤œà¤‚à¤Ÿà¥à¤¸</name>
    <name xml:lang="or">à¬…à¬¤à¬¿à¬¥à¬¿ à¬¡à­‡à¬¸à­à¬•à¬Ÿà¬ª à¬¸à¬¦à¬¸à­à­Ÿà¬®à¬¾à¬¨à­‡</name>
    <name xml:lang="pa">à¨ªà©à¨°à¨¾à¨¹à©à¨£à©‡ à¨¡à©ˆà¨¸à¨•à¨Ÿà¨¾à¨ª à¨à¨œà©°à¨Ÿ</name>
    <name xml:lang="pl">Agenty pulpitu goÅ›cia</name>
    <name xml:lang="pt">Agentes de Desktop de Convidado</name>
    <name xml:lang="pt_BR">Agentes de Desktop de Convidado</name>
    <name xml:lang="ru">ÐÐ³ÐµÐ½Ñ‚Ñ‹ Ð³Ð¾ÑÑ‚ÐµÐ²Ð¾Ð³Ð¾ Ñ€Ð°Ð±Ð¾Ñ‡ÐµÐ³Ð¾ ÑÑ‚Ð¾Ð»Ð°</name>
    <name xml:lang="ta">à®µà®¿à®°à¯à®¨à¯à®¤à®¿à®©à®°à¯ à®ªà®£à®¿à®®à¯‡à®Ÿà¯ˆ à®®à¯à®•à®µà®°à¯à®•à®³à¯</name>
    <name xml:lang="te">à°…à°¤à°¿à°¥à°¿ à°¡à±†à°¸à±à°•à±à°Ÿà°¾à°ªà± à°à°œà±†à°‚à°Ÿà±à°²à±</name>
    <name xml:lang="uk">Ð¡Ñ‚Ñ–Ð»ÑŒÐ½Ð¸Ñ‡Ð½Ñ– Ð°Ð³ÐµÐ½Ñ‚Ð¸ Ð³Ð¾ÑÑ‚ÑŒÐ¾Ð²Ð¸Ñ… ÑÐ¸ÑÑ‚ÐµÐ¼</name>
    <name xml:lang="zh">å®¢åº§æ¡Œé¢ç’°å¢ƒä»£ç†ç¨‹å¼</name>
    <name xml:lang="zh_CN">è™šæ‹Ÿæœºæ¡Œé¢ä»£ç†</name>
    <name xml:lang="zh_TW">å®¢åº§æ¡Œé¢ç’°å¢ƒä»£ç†ç¨‹å¼</name>
    <description>Agents used when running as a virtualized desktop.</description>
    <description xml:lang="as">à¦à¦Ÿà¦¾ à¦­à¦¾à§°à¦›à§à§±à§‡à¦²à¦¾à¦‡à¦œà§à¦¡ à¦¡à§‡à¦¸à§à¦•à¦Ÿà¦ª à§°à§‚à¦ªà§‡ à¦šà¦²à§‹à¦¤à§‡ à¦¬à§à¦¯à§±à¦¹à§ƒà¦¤ à¦¸à¦¹à¦¾à§Ÿà¦•à¦¸à¦®à§‚à¦¹à¥¤</description>
    <description xml:lang="cs">NÃ¡stroje pouÅ¾Ã­vanÃ© s virtualizovanÃ½m pracovnÃ­m prostÅ™edÃ­m.</description>
    <description xml:lang="de">Verwendete Agenten bei AusfÃ¼hrung als virtualisierter Desktop.</description>
    <description xml:lang="de_CH">Verwendete Agenten bei AusfÃ¼hrung als virtualisierter Desktop.</description>
    <description xml:lang="es">Agentes utilizados cuando se ejecutan como un escritorio virtualizado.</description>
    <description xml:lang="fr">Agents utilisÃ©s lors d'une exÃ©cution en tant que bureau virtualisÃ©.</description>
    <description xml:lang="gu">àªµàª°à«àªšà«àª¯à«àª…àª²àª¾àª‡àªà«àª¡ àª¡à«‡àª¸à«àª•àªŸà«‹àªª àª¤àª°à«€àª•à«‡ àªšàª²àª¾àªµàª¤à«€ àªµàª–àª¤à«‡ àªµàªªàª°àª¾àª¤àª¾ àªàªœàª¨à«àªŸà«‹.</description>
    <description xml:lang="hi">à¤ªà¥à¤°à¤¤à¤¿à¤¨à¤¿à¤§à¤¿ à¤ªà¥à¤°à¤¯à¥à¤•à¥à¤¤ à¤œà¤¬ à¤¬à¤¤à¥Œà¤° à¤µà¤°à¥à¤šà¥à¤…à¤²à¤¾à¤‡à¤œà¥à¤¡ à¤¡à¥‡à¤¸à¥à¤•à¤Ÿà¥‰à¤ª à¤šà¤²à¥‡.</description>
    <description xml:lang="it">Agenti usati durante l'esecuzione come desktop virtualizzato.</description>
    <description xml:lang="ja">ä»®æƒ³åŒ–ã—ãŸãƒ‡ã‚¹ã‚¯ãƒˆãƒƒãƒ—ã¨ã—ã¦ç¨¼åƒã™ã‚‹å ´åˆã«ä½¿ç”¨ã™ã‚‹ã‚¨ãƒ¼ã‚¸ã‚§ãƒ³ãƒˆã§ã™ã€‚</description>
    <description xml:lang="kn">à²µà²°à³à²šà³à²µà²²à³ à²†à²¦ à²—à²£à²•à²¤à³†à²°à³†à²¯à²¾à²—à²¿ à²šà²²à²¾à²¯à²¿à²¤à²—à³Šà²³à³à²³à³à²µà²¾à²— à²¬à²³à²¸à²²à²¾à²—à³à²µ à²®à²§à³à²¯à²µà²°à³à²¤à²¿à²—à²³à³.</description>
    <description xml:lang="ko">ê°€ìƒí™” ë°ìŠ¤í¬íƒ‘ìœ¼ë¡œ ì‹¤í–‰í•  ë•Œ ì‚¬ìš©ë˜ëŠ” ì—ì´ì „íŠ¸</description>
    <description xml:lang="ml">à´’à´°àµ à´µà´¿à´°àµâ€à´šàµà´šàµà´µà´²àµˆà´¸àµà´¡àµ à´ªà´£à´¿à´¯à´¿à´Ÿà´®à´¾à´¯à´¿ à´ªàµà´°à´µà´°àµâ€à´¤àµà´¤à´¿à´¯àµà´•àµà´•àµà´®àµà´ªàµ‹à´³àµâ€ à´‰à´ªà´¯àµ‹à´—à´¿à´¯àµà´•àµà´•àµà´¨àµà´¨ à´à´œà´¨àµà´±àµà´•à´³àµâ€</description>
    <description xml:lang="mr">à¤µà¤°à¥à¤šà¥à¤¯à¥à¤…à¤²à¤¾à¤‡à¤œà¥à¤¡ à¤¡à¥‡à¤¸à¥à¤•à¤Ÿà¥‰à¤ª à¤…à¤‚à¤¤à¤°à¥à¤—à¤¤ à¤šà¤¾à¤²à¤µà¤¤à¥‡à¤µà¥‡à¤³à¥€ à¤µà¤¾à¤ªà¤°à¤£à¥à¤¯à¤¾à¤œà¥‹à¤—à¥€ à¤à¤œà¤‚à¤Ÿà¥à¤¸.</description>
    <description xml:lang="or">à¬†à¬­à¬¾à¬¸à­€ à¬¡à­‡à¬¸à­à¬•à¬Ÿà¬ª à¬­à¬¾à¬¬à¬°à­‡ à¬šà¬²à¬¾à¬‰à¬¥à¬¿à¬¬à¬¾ à¬¸à¬®à­Ÿà¬°à­‡ à¬¬à­à­Ÿà¬¬à¬¹à­ƒà¬¤ à¬¸à¬¦à¬¸à­à­Ÿà¥¤</description>
    <description xml:lang="pa">à¨œà¨¦à©‹à¨‚ à¨†à¨­à¨¾à¨¸à©€à¨•à©à¨°à¨¿à¨¤ à¨¡à©ˆà¨¸à¨•à¨Ÿà¨¾à¨ª à¨µà¨œà©‹à¨‚ à¨šà¨²à¨¾à¨ à¨œà¨¾à¨£ à¨¤à¨¾à¨‚ à¨µà¨°à¨¤à©‡ à¨œà¨¾à¨‚à¨¦à©‡ à¨à¨œà©°à¨Ÿà¥¤</description>
    <description xml:lang="pl">Agenty uÅ¼ywane podczas dziaÅ‚ania jako wirtualizowane Å›rodowisko graficzne.</description>
    <description xml:lang="pt">Agentes usados ao serem executados como desktop virtualizados.</description>
    <description xml:lang="pt_BR">Agentes usados ao serem executados como desktop virtualizados.</description>
    <description xml:lang="ru">ÐÐ³ÐµÐ½Ñ‚Ñ‹ Ð²Ð¸Ñ€Ñ‚ÑƒÐ°Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ñ€Ð°Ð±Ð¾Ñ‡ÐµÐ³Ð¾ ÑÑ‚Ð¾Ð»Ð°.</description>
    <description xml:lang="ta">à®’à®°à¯ à®®à¯†à®¯à¯à®¨à®¿à®•à®°à®¾à®•à¯à®•à®ªà¯à®ªà®Ÿà¯à®Ÿ à®ªà®£à®¿à®®à¯‡à®Ÿà¯ˆà®¯à®¾à®• à®‡à®¯à®•à¯à®•à®ªà¯à®ªà®Ÿà¯à®®à¯ à®ªà¯‹à®¤à¯ à®ªà®¯à®©à¯à®ªà®Ÿà¯à®¤à¯à®¤à®ªà¯à®ªà®Ÿà¯à®®à¯ à®®à¯à®•à®µà®°à¯à®•à®³à¯.</description>
    <description xml:lang="te">à°µà°°à±à°šà±à°¯à±à°²à±ˆà°œà±à°¡à± à°¡à±†à°¸à±à°•à±à°Ÿà°¾à°ªà± à°µà°²à±† à°¨à°¡à±à°šà±à°šà±à°¨à±à°¨à°ªà±à°ªà±à°¡à± à°à°œà±†à°‚à°Ÿà±à°²à± à°‰à°ªà°¯à±‹à°—à°¿à°‚à°šà°¬à°¡à±†à°¨à±.</description>
    <description xml:lang="uk">ÐÐ³ÐµÐ½Ñ‚Ð¸, Ñ‰Ð¾ Ð²Ð¸ÐºÐ¾Ñ€Ð¸ÑÑ‚Ð¾Ð²ÑƒÑŽÑ‚ÑŒÑÑ Ð¿Ñ–Ð´ Ñ‡Ð°Ñ Ñ€Ð¾Ð±Ð¾Ñ‚Ð¸ Ñƒ Ñ€ÐµÐ¶Ð¸Ð¼Ñ– Ð²Ñ–Ñ€Ñ‚ÑƒÐ°Ð»Ñ–Ð·Ð¾Ð²Ð°Ð½Ð¾Ñ— ÑÑ‚Ñ–Ð»ÑŒÐ½Ð¸Ñ†Ñ–.</description>
    <description xml:lang="zh">ä»¥è™›æ“¬åŒ–æ¡Œé¢ç’°å¢ƒåŸ·è¡Œæ™‚æ‰€ä½¿ç”¨çš„ä»£ç†ç¨‹å¼ã€‚</description>
    <description xml:lang="zh_CN">ä½œä¸ºè™šæ‹Ÿæ¡Œé¢è¿è¡Œæ—¶ä½¿ç”¨çš„ä»£ç†ã€‚</description>
    <description xml:lang="zh_TW">ä»¥è™›æ“¬åŒ–æ¡Œé¢ç’°å¢ƒåŸ·è¡Œæ™‚æ‰€ä½¿ç”¨çš„ä»£ç†ç¨‹å¼ã€‚</description>
    <default>true</default>
    <uservisible>false</uservisible>
    <packagelist>
      <packagereq type="mandatory">hyperv-daemons</packagereq>
      <packagereq type="mandatory">open-vm-tools-desktop</packagereq>
      <packagereq type="mandatory">qemu-guest-agent</packagereq>
      <packagereq type="mandatory">spice-vdagent</packagereq>
      <packagereq type="optional">spice-streaming-agent</packagereq>
    </packagelist>
  </group>
  <group>
    <id>headless-management</id>
    <name>Headless Management</name>
    <name xml:lang="de">Kopfloses Management</name>
    <name xml:lang="es">GestiÃ³n sin Cabeza</name>
    <name xml:lang="fr">Gestion Ã  distance sans pÃ©riphÃ©rique de contrÃ´le</name>
    <name xml:lang="it">Gestione Headless</name>
    <name xml:lang="ja">ãƒ˜ãƒƒãƒ‰ãƒ¬ã‚¹ç®¡ç†</name>
    <name xml:lang="ko">í—¤ë“œë¦¬ìŠ¤ ê´€ë¦¬ </name>
    <name xml:lang="pt_BR">GestÃ£o sem CabeÃ§a</name>
    <name xml:lang="ru">Ð‘ÐµÐ·Ð³Ð¾Ð»Ð¾Ð²Ð¾Ðµ ÑƒÐ¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð¸Ðµ</name>
    <name xml:lang="zh_CN">æ— å¤´ç³»ç»Ÿç®¡ç†</name>
    <name xml:lang="zh_TW">ç„¡é ­ç®¡ç†</name>
    <description>Tools for managing the system without an attached graphical console.</description>
    <description xml:lang="de">Tools zur Verwaltung des Systems ohne angeschlossene Grafikkonsole.</description>
    <description xml:lang="es">Herramientas para gestionar el sistema sin una consola grÃ¡fica adjunta.</description>
    <description xml:lang="fr">Outils pour gÃ©rer le systÃ¨me sans console graphique associÃ©e</description>
    <description xml:lang="it">Strumenti per la gestione del sistema senza una console grafica collegata.</description>
    <description xml:lang="ja">ã‚°ãƒ©ãƒ•ã‚£ã‚«ãƒ«ã‚³ãƒ³ã‚½ãƒ¼ãƒ«ãŒãªã„ã‚·ã‚¹ãƒ†ãƒ ã‚’ç®¡ç†ã™ã‚‹ãŸã‚ã®ãƒ„ãƒ¼ãƒ«</description>
    <description xml:lang="ko">ê·¸ëž˜í”½ ì½˜ì†”ì´ ì—†ëŠ” ì‹œìŠ¤í…œì„ ê´€ë¦¬í•˜ê¸° ìœ„í•œ íˆ´ìž…ë‹ˆë‹¤. </description>
    <description xml:lang="pt">Ferramentas para gerenciar o sistema sem um console grÃ¡fico anexado.</description>
    <description xml:lang="pt_BR">Ferramentas para gerenciar o sistema sem um console grÃ¡fico anexado.</description>
    <description xml:lang="ru">Ð˜Ð½ÑÑ‚Ñ€ÑƒÐ¼ÐµÐ½Ñ‚Ñ‹ Ð´Ð»Ñ ÑƒÐ¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð¸Ñ ÑÐ¸ÑÑ‚ÐµÐ¼Ð¾Ð¹ Ð±ÐµÐ· Ð¿Ð¾Ð´ÐºÐ»ÑŽÑ‡ÐµÐ½Ð½Ð¾Ð¹ Ð³Ñ€Ð°Ñ„Ð¸Ñ‡ÐµÑÐºÐ¾Ð¹ ÐºÐ¾Ð½ÑÐ¾Ð»Ð¸.</description>
    <description xml:lang="zh_CN">ç®¡ç†æ²¡æœ‰é™„åŠ å›¾å½¢æ˜¾ç¤ºç»ˆç«¯çš„ç³»ç»Ÿ</description>
    <description xml:lang="zh_TW">ç„¡éœ€é™„åŠ åœ–å½¢æŽ§åˆ¶å°å³å¯ç®¡ç†ç³»çµ±çš„å·¥å…·ã€‚</description>
    <default>true</default>
    <uservisible>true</uservisible>
    <packagelist>
      <packagereq type="mandatory">PackageKit</packagereq>
      <packagereq type="mandatory">cockpit-packagekit</packagereq>
      <packagereq type="mandatory">cockpit-podman</packagereq>
      <packagereq type="mandatory">cockpit-storaged</packagereq>
      <packagereq type="default">sscg</packagereq>
    </packagelist>
  </group>
  <group>
    <id>infiniband</id>
    <name>Infiniband Support</name>
    <name xml:lang="as">Infiniband à¦¸à¦®à§°à§à¦¥à¦¨</name>
    <name xml:lang="bn">Infiniband à¦¸à¦®à¦°à§à¦¥à¦¨ à¦¬à§à¦¯à¦¬à¦¸à§à¦¥à¦¾</name>
    <name xml:lang="cs">Podpora pro Infiniband</name>
    <name xml:lang="de">UnterstÃ¼tzung fÃ¼r Infiniband</name>
    <name xml:lang="de_CH">UnterstÃ¼tzung fÃ¼r Infiniband</name>
    <name xml:lang="es">Soporte para Infiniband</name>
    <name xml:lang="fr">Prise en charge de l'Infiniband</name>
    <name xml:lang="gu">Infiniband àª†àª§àª¾àª°</name>
    <name xml:lang="hi">Infiniband à¤¸à¤®à¤°à¥à¤¥à¤¨</name>
    <name xml:lang="ia">Supporto de Infiniband</name>
    <name xml:lang="it">Supporto Infiniband</name>
    <name xml:lang="ja">Infiniband ã®ã‚µãƒãƒ¼ãƒˆ</name>
    <name xml:lang="kn">à²‡à²¨à³â€Œà²«à²¿à²¨à²¿à²¬à³à²¯à²¾à²‚à²¡à³ à²¬à³†à²‚à²¬à²²</name>
    <name xml:lang="ko">Infiniband ì§€ì›</name>
    <name xml:lang="ml">à´‡à´¨àµâ€à´«à´¿à´¨à´¿à´¬à´¾à´¨àµâ€à´¡àµ à´ªà´¿à´¨àµà´¤àµà´£</name>
    <name xml:lang="mr">à¤‡à¤‚à¤«à¤¿à¤¨à¤¿à¤¬à¤à¤¡ à¤¸à¤®à¤°à¥à¤¥à¤¨</name>
    <name xml:lang="or">à¬‡à¬¨à¬«à¬¿à¬¨à¬¿à¬¬à­à­Ÿà¬¾à¬£à­à¬¡ à¬¸à¬¹à¬¾à­Ÿà¬¤à¬¾</name>
    <name xml:lang="pa">à¨‡à¨¨à¨«à¨¿à¨¨à©€à¨¬à©ˆà¨‚à¨¡ à¨¸à¨®à¨°à¨¥à¨¨</name>
    <name xml:lang="pl">ObsÅ‚uga InfiniBand</name>
    <name xml:lang="pt">Suporte para Infiniband</name>
    <name xml:lang="pt_BR">Suporte para Infiniband</name>
    <name xml:lang="ru">ÐŸÐ¾Ð´Ð´ÐµÑ€Ð¶ÐºÐ° InfiniBand</name>
    <name xml:lang="sv">StÃ¶d fÃ¶r infiniband</name>
    <name xml:lang="ta">à®‡à®©à¯à®ƒà®ªà®¿à®©à®¿à®ªà¯‡à®£à¯à®Ÿà¯ à®†à®¤à®°à®µà¯</name>
    <name xml:lang="te">à°‡à°¨à±à°«à°¿à°¬à°¾à°‚à°¡à± à°®à°¦à±à°¦à°¤à±</name>
    <name xml:lang="uk">ÐŸÑ–Ð´Ñ‚Ñ€Ð¸Ð¼ÐºÐ° Infiniband</name>
    <name xml:lang="zh">Infiniband æ”¯æ´</name>
    <name xml:lang="zh_CN">Infiniband æ”¯æŒ</name>
    <name xml:lang="zh_TW">Infiniband æ”¯æ´</name>
    <description>Software designed for supporting clustering, grid connectivity, and low-latency, high bandwidth storage using RDMA-based InfiniBand, iWARP, RoCE, and OPA fabrics.</description>
    <description xml:lang="de">Software zur UnterstÃ¼tzung von Clustering, Grid-KonnektivitÃ¤t und Low-Latency-Speicher mit hoher Bandbreite unter Verwendung von RDMA-basierten InfiniBand-, iWARP-, RoCE- und OPA-Stoffen.</description>
    <description xml:lang="es">Software diseÃ±ado para soportar clustering, conectividad grid y almacenamiento de baja latencia y alto ancho de banda utilizando tejidos InfiniBand, iWARP, RoCE y OPA basados en RDMA.</description>
    <description xml:lang="fr">Logiciel conÃ§u pour prendre en charge le clustering, la connectivitÃ© de grilles Ã  l'aide, une latence faible, un stockage bandwidth avec InfiniBand basÃ© RDMA, et de fabriques iWARP, RoCe et OPA.</description>
    <description xml:lang="it">Software progettato per supportare il clustering, la connettivitÃ  di rete e lo storage a bassa latenza e ad alta larghezza di banda utilizzando tessuti InfiniBand, iWARP, RoCE e OPA basati su RDMA.</description>
    <description xml:lang="ja">RDMA ãƒ™ãƒ¼ã‚¹ã® InfiniBand ã‚„ iWARPã€RoCEã€ãŠã‚ˆã³ OPA ãƒ•ã‚¡ãƒ–ãƒªãƒƒã‚¯ã‚’ä½¿ç”¨ã—ã¦ã‚¯ãƒ©ã‚¹ã‚¿ãƒªãƒ³ã‚°ã‚„ã‚°ãƒªãƒƒãƒ‰ã®æŽ¥ç¶šæ€§ã€ä½Žãƒ¬ã‚¤ãƒ†ãƒ³ã‚·ãƒ¼ã€é«˜å¸¯åŸŸå¹…ã‚¹ãƒˆãƒ¬ãƒ¼ã‚¸ã‚’ã‚µãƒãƒ¼ãƒˆã™ã‚‹ã‚ˆã†è¨­è¨ˆã•ã‚Œã¦ã„ã‚‹ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã§ã™ã€‚</description>
    <description xml:lang="ko">RDMA ê¸°ë°˜ InfiniBand, iWARP, RoCE, OPA íŒ¨ë¸Œë¦­ì„ ì‚¬ìš©í•˜ì—¬ í´ëŸ¬ìŠ¤í„°ë§, ê·¸ë¦¬ë“œ ì—°ê²°, ë‚®ì€ ì§€ì—° ì‹œê°„, ë†’ì€ ëŒ€ì—­í­ ìŠ¤í† ë¦¬ì§€ë¥¼ ì§€ì›í•˜ë„ë¡ ì„¤ê³„ëœ ì†Œí”„íŠ¸ì›¨ì–´ìž…ë‹ˆë‹¤. </description>
    <description xml:lang="pt_BR">Software projetado para suportar clustering, conectividade de grade e armazenamento de baixa latÃªncia e alta largura de banda usando InfiniBand, iWARP, RoCE e tecidos OPA baseados em RDMA.</description>
    <description xml:lang="ru">ÐŸÑ€Ð¾Ð³Ñ€Ð°Ð¼Ð¼Ð½Ð¾Ðµ Ð¾Ð±ÐµÑÐ¿ÐµÑ‡ÐµÐ½Ð¸Ðµ, Ð¿Ñ€ÐµÐ´Ð½Ð°Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ð¾Ðµ Ð´Ð»Ñ Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶ÐºÐ¸ ÐºÐ»Ð°ÑÑ‚ÐµÑ€Ð¸Ð·Ð°Ñ†Ð¸Ð¸, Ð¿Ð¾Ð´ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ Ðº ÑÐµÑ‚ÑÐ¼ Ð¸ Ñ…Ñ€Ð°Ð½ÐµÐ½Ð¸Ñ Ð´Ð°Ð½Ð½Ñ‹Ñ… Ñ Ð½Ð¸Ð·ÐºÐ¾Ð¹ Ð·Ð°Ð´ÐµÑ€Ð¶ÐºÐ¾Ð¹ Ð¸ Ð²Ñ‹ÑÐ¾ÐºÐ¾Ð¹ Ð¿Ñ€Ð¾Ð¿ÑƒÑÐºÐ½Ð¾Ð¹ ÑÐ¿Ð¾ÑÐ¾Ð±Ð½Ð¾ÑÑ‚ÑŒÑŽ Ñ Ð¸ÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð¸ÐµÐ¼ RDMA-Ñ‚ÐµÑ…Ð½Ð¾Ð»Ð¾Ð³Ð¸Ð¹ InfiniBand, iWARP, RoCE Ð¸ OPA.</description>
    <description xml:lang="zh_CN">ç”¨æ¥æ”¯æŒä½¿ç”¨åŸºäºŽ RDMA çš„ InfiniBandã€iWARPã€RoCE å’Œ OPA fabrics å®žçŽ°é›†ç¾¤ã€ç½‘æ ¼è¿žæŽ¥ä»¥åŠä½Žå»¶è¿Ÿé«˜å¸¦å®½å­˜å‚¨çš„è½¯ä»¶ã€‚ </description>
    <description xml:lang="zh_TW">è»Ÿä»¶æ—¨åœ¨ä½¿ç”¨åŸºæ–¼RDMAçš„InfiniBandï¼ŒiWARPï¼ŒRoCEå’ŒOPAçµæ§‹æ”¯æŒç¾¤é›†ï¼Œç¶²æ ¼é€£æŽ¥å’Œä½Žå»¶é²ï¼Œé«˜å¸¶å¯¬å­˜å„²ã€‚</description>
    <default>true</default>
    <uservisible>false</uservisible>
    <packagelist>
      <packagereq type="default">mstflint</packagereq>
      <packagereq type="default">qperf</packagereq>
      <packagereq type="optional">libvma</packagereq>
    </packagelist>
  </group>
  <group>
    <id>input-methods</id>
    <name>Input Methods</name>
    <name xml:lang="ar">Ø·Ø±Ù‚ Ø§Ù„Ø¥Ø¯Ø®Ø§Ù„</name>
    <name xml:lang="as">à¦‡à¦¨à¦ªà§à¦Ÿ à¦ªà¦¦à§à¦§à¦¤à¦¿à¦¸à¦®à§‚à¦¹</name>
    <name xml:lang="bn">à¦‡à¦¨à¦ªà§à¦Ÿ à¦ªà¦¦à§à¦§à¦¤à¦¿</name>
    <name xml:lang="ca">MÃ¨todes d'entrada</name>
    <name xml:lang="cs">VstupnÃ­ metody</name>
    <name xml:lang="da">Inddatametoder</name>
    <name xml:lang="de">Eingabemethoden</name>
    <name xml:lang="de_CH">Eingabemethoden</name>
    <name xml:lang="el">ÎœÎ­Î¸Î¿Î´Î¿Î¹ ÎµÎ¹ÏƒÎ±Î³Ï‰Î³Î®Ï‚</name>
    <name xml:lang="es">MÃ©todos de Entrada</name>
    <name xml:lang="et">Sisendmeetodid</name>
    <name xml:lang="fi">SyÃ¶ttÃ¶menetelmÃ¤t</name>
    <name xml:lang="fr">MÃ©thodes de saisie</name>
    <name xml:lang="gu">àª‡àª¨àªªà«àªŸ àªªàª¦à«àª¦àª¤àª¿àª“</name>
    <name xml:lang="he">×©×™×˜×•×ª ×§×œ×˜</name>
    <name xml:lang="hi">à¤‡à¤¨à¤ªà¥à¤Ÿ à¤µà¤¿à¤§à¤¿</name>
    <name xml:lang="hu">Bevitel eljÃ¡rÃ¡sok</name>
    <name xml:lang="ia">Methodos de entrata</name>
    <name xml:lang="id">Metoda Input</name>
    <name xml:lang="is">InnsetningaraÃ°ferÃ°ir</name>
    <name xml:lang="it">Metodi di input</name>
    <name xml:lang="ja">å…¥åŠ›ãƒ¡ã‚½ãƒƒãƒ‰</name>
    <name xml:lang="kn">à²‡à²¨à³â€Œà²ªà³à²Ÿà³ à²µà²¿à²§à²¾à²¨à²—à²³à³</name>
    <name xml:lang="ko">ìž…ë ¥ ë°©ì‹</name>
    <name xml:lang="lv">Ievades metodes</name>
    <name xml:lang="mai">à¤‡à¤¨à¤ªà¥à¤Ÿ à¤ªà¤¦à¥à¤§à¤¤à¤¿</name>
    <name xml:lang="ml">à´‡à´¨àµâ€à´ªàµà´Ÿàµà´Ÿàµ à´°àµ€à´¤à´¿à´•à´³àµâ€</name>
    <name xml:lang="mr">à¤‡à¤‚à¤ªà¥à¤Ÿ à¤ªà¤§à¥à¤¦à¤¤à¥€</name>
    <name xml:lang="nb">Inndatametoder</name>
    <name xml:lang="nl">Invoermethoden</name>
    <name xml:lang="or">à¬¨à¬¿à¬¬à­‡à¬¶ à¬ªà¬¦à­à¬§à¬¤à¬¿</name>
    <name xml:lang="pa">à¨‡à©°à¨ªà©à©°à¨Ÿ à¨¢à©°à¨—</name>
    <name xml:lang="pl">Metody wprowadzania</name>
    <name xml:lang="pt">MÃ©todos de IntroduÃ§Ã£o de Dados</name>
    <name xml:lang="pt_BR">MÃ©todos de IntroduÃ§Ã£o de Dados</name>
    <name xml:lang="ru">ÐœÐµÑ‚Ð¾Ð´Ñ‹ Ð²Ð²Ð¾Ð´Ð°</name>
    <name xml:lang="sk">MetÃ³dy vstupu</name>
    <name xml:lang="sr">ÐœÐµÑ‚Ð¾Ð´Ðµ ÑƒÐ½Ð¾ÑÐ°</name>
    <name xml:lang="sr@Latn">Metode unosa</name>
    <name xml:lang="sr@latin">Metode unosa</name>
    <name xml:lang="sv">Inmatningsmetoder</name>
    <name xml:lang="ta">à®‰à®³à¯à®³à¯€à®Ÿà¯ à®®à¯à®±à¯ˆà®•à®³à¯</name>
    <name xml:lang="te">à°Žà°—à±à°¬à°¡à°¿ à°ªà°¦à±à°¦à°¤à±à°²à±</name>
    <name xml:lang="tg">Ð£ÑÐ»ÑƒÐ±Ò³Ð¾Ð¸ Ð²Ð¾Ñ€Ð¸Ð´Ð¾Ñ‚Ó£</name>
    <name xml:lang="th">à¸§à¸´à¸˜à¸µà¸›à¹‰à¸­à¸™à¸‚à¹‰à¸­à¸„à¸§à¸²à¸¡</name>
    <name xml:lang="uk">ÐœÐµÑ‚Ð¾Ð´Ð¸ Ð²Ð²Ð¾Ð´Ñƒ</name>
    <name xml:lang="zh">è¼¸å…¥æ³•</name>
    <name xml:lang="zh_CN">è¾“å…¥æ³•</name>
    <name xml:lang="zh_TW">è¼¸å…¥æ³•</name>
    <description>Input method packages for the input of international text.</description>
    <description xml:lang="de">Eingabemethodenpakete fÃ¼r die Eingabe von internationalem Text.</description>
    <description xml:lang="es">Paquetes de mÃ©todos de entrada para la entrada de texto internacional.</description>
    <description xml:lang="fr">Packages de MÃ©thode d'entrÃ©e pour la saisie de texte international.</description>
    <description xml:lang="it">Pacchetti di metodi di input per l'inserimento di testi internazionali.</description>
    <description xml:lang="ja">å›½éš›çš„ãªãƒ†ã‚­ã‚¹ãƒˆã‚’å…¥åŠ›ã™ã‚‹ãŸã‚ã®å…¥åŠ›ãƒ¡ã‚½ãƒƒãƒ‰ãƒ‘ãƒƒã‚±ãƒ¼ã‚¸ã§ã™ã€‚</description>
    <description xml:lang="ko">ë‹¤êµ­ì–´ í…ìŠ¤íŠ¸ ìž…ë ¥ì„ ìœ„í•œ í…ìŠ¤íŠ¸ ìž…ë ¥ ë°©ì‹ íŒ¨í‚¤ì§€ </description>
    <description xml:lang="pt_BR">Pacotes de mÃ©todos de entrada para a entrada de texto internacional.</description>
    <description xml:lang="ru">ÐŸÐ°ÐºÐµÑ‚Ñ‹ Ð¼ÐµÑ‚Ð¾Ð´Ð¾Ð² Ð²Ð²Ð¾Ð´Ð° Ð´Ð»Ñ Ð²Ð²Ð¾Ð´Ð° Ð¼ÐµÐ¶Ð´ÑƒÐ½Ð°Ñ€Ð¾Ð´Ð½Ð¾Ð³Ð¾ Ñ‚ÐµÐºÑÑ‚Ð°.</description>
    <description xml:lang="zh_CN">è¾“å…¥éžè‹±æ–‡æ–‡æœ¬çš„è¾“å…¥æ³•è½¯ä»¶åŒ…</description>
    <description xml:lang="zh_TW">ç”¨æ–¼è¼¸å…¥åœ‹éš›æ–‡æœ¬çš„è¼¸å…¥æ³•åŒ…ã€‚</description>
    <default>true</default>
    <uservisible>false</uservisible>
    <packagelist>
      <packagereq type="default">ibus-hangul</packagereq>
      <packagereq type="default">ibus-kkc</packagereq>
      <packagereq type="default">ibus-libpinyin</packagereq>
      <packagereq type="default">ibus-libzhuyin</packagereq>
      <packagereq type="default">ibus-m17n</packagereq>
      <packagereq type="default">ibus-typing-booster</packagereq>
      <packagereq type="optional">ibus-sayura</packagereq>
      <packagereq type="optional">ibus-table</packagereq>
      <packagereq type="optional">ibus-table-array30</packagereq>
      <packagereq requires="gtk2" type="conditional">gtk2-immodule-xim</packagereq>
      <packagereq requires="gtk3" type="conditional">gtk3-immodule-xim</packagereq>
      <packagereq requires="gtk2" type="conditional">ibus-gtk2</packagereq>
      <packagereq requires="gtk3" type="conditional">ibus-gtk3</packagereq>
    </packagelist>
  </group>
  <group>
    <id>internet-applications</id>
    <name>Internet Applications</name>
    <name xml:lang="as">à¦‡à¦¨à§à¦Ÿà¦¾à§°à¦¨à§‡à¦Ÿ à¦à¦ªà§à¦²à¦¿à¦•à§‡à¦šà¦¨à¦¸à¦®à§‚à¦¹</name>
    <name xml:lang="bn">à¦‡à¦¨à§à¦Ÿà¦¾à¦°à¦¨à§‡à¦Ÿ à¦…à§à¦¯à¦¾à¦ªà§à¦²à¦¿à¦•à§‡à¦¶à¦¨</name>
    <name xml:lang="cs">InternetovÃ© aplikace</name>
    <name xml:lang="de">Internet-Anwendungen</name>
    <name xml:lang="de_CH">Internet-Anwendungen</name>
    <name xml:lang="es">Aplicaciones de Internet</name>
    <name xml:lang="fr">Applications internet</name>
    <name xml:lang="gu">àª‡àª¨à«àªŸàª°àª¨à«‡àªŸ àª•àª¾àª°à«àª¯àª•à«àª°àª®à«‹</name>
    <name xml:lang="hi">à¤‡à¤‚à¤Ÿà¤°à¤¨à¥‡à¤Ÿ à¤…à¤¨à¥à¤ªà¥à¤°à¤¯à¥‹à¤—</name>
    <name xml:lang="ia">Applicationes de Rete</name>
    <name xml:lang="it">Applicazioni internet</name>
    <name xml:lang="ja">ã‚¤ãƒ³ã‚¿ãƒ¼ãƒãƒƒãƒˆã‚¢ãƒ—ãƒªã‚±ãƒ¼ã‚·ãƒ§ãƒ³</name>
    <name xml:lang="kn">à²…à²‚à²¤à²°à²œà²¾à²² à²…à²¨à³à²µà²¯à²—à²³à³</name>
    <name xml:lang="ko">ì¸í„°ë„· í”„ë¡œê·¸ëž¨</name>
    <name xml:lang="ml">à´‡à´¨àµà´±à´°àµâ€à´¨àµ†à´±àµà´±àµ à´ªàµà´°à´¯àµ‹à´—à´™àµà´™à´³àµâ€</name>
    <name xml:lang="mr">à¤à¤ªà¥à¤²à¤¿à¤•à¥‡à¤¶à¤¨à¥à¤¸à¥</name>
    <name xml:lang="or">à¬‡à¬£à­à¬Ÿà¬°à¬¨à­‡à¬Ÿ à¬ªà­à¬°à­Ÿà­‹à¬—à¬—à­à¬¡à¬¼à¬¿à¬•</name>
    <name xml:lang="pa">à¨‡à©°à¨Ÿà¨°à¨¨à©ˆà©±à¨Ÿ à¨à¨ªà¨²à©€à¨•à©‡à¨¸à¨¼à¨¨à¨¾à¨‚</name>
    <name xml:lang="pl">Aplikacje internetowe</name>
    <name xml:lang="pt">AplicaÃ§Ãµes de Internet</name>
    <name xml:lang="pt_BR">AplicaÃ§Ãµes de Internet</name>
    <name xml:lang="ru">ÐŸÑ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð˜Ð½Ñ‚ÐµÑ€Ð½ÐµÑ‚Ð°</name>
    <name xml:lang="sv">Internetprogram</name>
    <name xml:lang="ta">à®‡à®£à¯ˆà®¯à®¤à¯à®¤à®³ à®ªà®¯à®©à¯à®ªà®¾à®Ÿà¯à®•à®³à¯</name>
    <name xml:lang="te">à°‡à°‚à°Ÿà°°à±à°¨à±†à°Ÿà± à°…à°¨à±à°µà°°à±à°¤à°¨à°®à±à°²à±</name>
    <name xml:lang="uk">Ð†Ð½Ñ‚ÐµÑ€Ð½ÐµÑ‚-Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¸</name>
    <name xml:lang="zh">ç¶²éš›ç¶²è·¯æ‡‰ç”¨ç¨‹å¼</name>
    <name xml:lang="zh_CN">äº’è”ç½‘åº”ç”¨ç¨‹åº</name>
    <name xml:lang="zh_TW">ç¶²éš›ç¶²è·¯æ‡‰ç”¨ç¨‹å¼</name>
    <description>Email, chat, and video conferencing software.</description>
    <description xml:lang="as">à¦‡-à¦®à§‡à¦‡à¦², à¦šà§‡à¦Ÿ à¦†à§°à§ à¦­à¦¿à¦¡à¦¿à¦…' à¦¸à¦¨à§à¦®à¦¿à¦²à¦¨à§€ à¦šà¦«à§à¦Ÿà§±à§‡à§°à¥¤</description>
    <description xml:lang="bn">à¦‡-à¦®à§‡à¦‡à¦², à¦†à¦²à¦¾à¦ªà¦¨ à¦“ à¦­à¦¿à¦¡à¦¿à¦“ à¦•à¦¨à¦«à¦¾à¦°à§‡à¦¨à§à¦¸ à¦¸à¦®à§à¦¬à¦¨à§à¦§à§€à§Ÿ à¦¸à¦«à§à¦Ÿà¦“à§Ÿà§à¦¯à¦¾à¦°à¥¤</description>
    <description xml:lang="cs">Aplikace pro provoz e-mailu, chatu a videokonferencÃ­.</description>
    <description xml:lang="de">E-Mail, Chat und Videokonferenz-Software.</description>
    <description xml:lang="de_CH">E-Mail, Chat und Videokonferenz-Software.</description>
    <description xml:lang="es">Software de correo-e, chat, y vÃ­deo conferencias.</description>
    <description xml:lang="fr">Messagerie Ã©lectronique, messagerie instantanÃ©e, et logiciel de vidÃ©oconfÃ©rence.</description>
    <description xml:lang="gu">àª‡àª®à«‡àª², àªšà«‡àªŸ, àª…àª¨à«‡ àªµàª¿àª¡àª¿àª¯à«‹ àª•à«‰àª¨à«àª«àª°àª¨à«àª¸à«€àª‚àª— àª¸à«‹àª«à«àªŸàªµà«‡àª°.</description>
    <description xml:lang="hi">à¤ˆà¤®à¥‡à¤², à¤šà¥ˆà¤Ÿ, à¤”à¤° à¤µà¥€à¤¡à¤¿à¤¯à¥‹ à¤¸à¤®à¥à¤®à¥‡à¤²à¤¨ à¤¸à¥‰à¤«à¥à¤Ÿà¤µà¥‡à¤¯à¤°.</description>
    <description xml:lang="ia">Software de e-posta, chat e video-conferentia.</description>
    <description xml:lang="it">Software per conferenza video, email e chat.</description>
    <description xml:lang="ja">é›»å­ãƒ¡ãƒ¼ãƒ«ã€ãƒãƒ£ãƒƒãƒˆã€ãƒ“ãƒ‡ã‚ªä¼šè­°ã®ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã§ã™ã€‚</description>
    <description xml:lang="kn">à²‡à²®à³ˆà²²à³, à²®à²¾à²¤à³à²•à²¤à³†, à²¹à²¾à²—à³ à²µà³€à²¡à²¿à²¯à³Š à²¸à²®à³à²®à³‡à²³à²¨à²•à³à²•à³† à²¨à³†à²°à²µà²¾à²—à³à²µ à²¤à²‚à²¤à³à²°à²¾à²‚à²¶.</description>
    <description xml:lang="ko">ì´ë©”ì¼, ì±„íŒ…, í™”ìƒíšŒì˜ ì†Œí”„íŠ¸ì›¨ì–´.</description>
    <description xml:lang="ml">à´ˆà´®àµ†à´¯à´¿à´²àµâ€, à´šà´¾à´±àµà´±àµ, à´µàµ€à´¡à´¿à´¯àµ‹ à´•àµ‹à´£àµâ€à´«à´±à´¨àµâ€à´¸à´¿à´™àµ à´Žà´¨àµà´¨à´¿à´µà´¯àµà´•àµà´•àµà´³àµà´³ à´¸àµ‹à´«àµà´±àµà´±àµâ€Œà´µàµ†à´¯à´°àµâ€.</description>
    <description xml:lang="mr">à¤ˆà¤®à¥‡à¤², à¤šà¥…à¤Ÿ, à¤µ à¤µà¥à¤¹à¤¿à¤¡à¥€à¤“ à¤•à¥‰à¤¨à¥à¤«à¤°à¥‡à¤‚à¤¸à¤¿à¤‚à¤— à¤¸à¥‰à¤«à¥à¤Ÿà¤µà¥‡à¤…à¤°.</description>
    <description xml:lang="or">à¬‡à¬®à­‡à¬², à¬šà¬¾à¬°à­à¬Ÿ, à¬à¬¬à¬‚ à¬­à¬¿à¬¡à¬¿à¬“ à¬¸à¬®à­à¬®à­‡à¬³à¬¨ à¬¸à¬«à­à¬Ÿà­±à­‡à¬°à¥¤</description>
    <description xml:lang="pa">à¨ˆà¨®à©‡à¨², à¨šà©ˆà¨Ÿ, à¨…à¨¤à©‡ à¨µà©€à¨¡à©€à¨“ à¨•à¨¾à¨¨à¨«à¨°à©°à¨¸ à¨¸à¨¾à¨«à¨Ÿà¨µà©‡à¨…à¨°à¥¤</description>
    <description xml:lang="pl">Oprogramowanie do obsÅ‚ugi poczty, komunikatorÃ³w i wideokonferencji.</description>
    <description xml:lang="pt">Software email, babe-papo e vÃ­deo-conferÃªncia.</description>
    <description xml:lang="pt_BR">Software email, babe-papo e vÃ­deo-conferÃªncia.</description>
    <description xml:lang="ru">ÐŸÑ€Ð¾Ð³Ñ€Ð°Ð¼Ð¼Ñ‹ ÑÐ»ÐµÐºÑ‚Ñ€Ð¾Ð½Ð½Ð¾Ð¹ Ð¿Ð¾Ñ‡Ñ‚Ñ‹, Ð¾Ð±Ð¼ÐµÐ½Ð° ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸ÑÐ¼Ð¸ Ð¸ Ð²Ð¸Ð´ÐµÐ¾ÐºÐ¾Ð½Ñ„ÐµÑ€ÐµÐ½Ñ†Ð¸Ð¹.</description>
    <description xml:lang="sv">Epost-, chatt- och videokonferensprogram.</description>
    <description xml:lang="ta">à®®à®¿à®©à¯à®©à®žà¯à®šà®²à¯, à®…à®°à®Ÿà¯à®Ÿà¯ˆ, à®®à®±à¯à®±à¯à®®à¯ à®µà¯€à®Ÿà®¿à®¯à¯‹ à®•à®²à®¨à¯à®¤à¯à®°à¯ˆà®¯à®¾à®Ÿà®²à¯ à®®à¯†à®©à¯à®ªà¯Šà®°à¯à®³à¯.</description>
    <description xml:lang="te">à°ˆà°®à±†à°¯à°¿à°²à±, à°šà°¾à°Ÿà±, à°®à°°à°¿à°¯à± à°µà±€à°¡à°¿à°¯à±‹ à°•à°¾à°¨à±à°«à°°à±†à°¨à±à°¸à°¿à°‚à°—à± à°¸à°¾à°«à±à°Ÿà±à°µà±‡à°°à±.</description>
    <description xml:lang="uk">ÐŸÑ€Ð¾Ð³Ñ€Ð°Ð¼Ð¸ Ð´Ð»Ñ Ð¾Ð±Ð¼Ñ–Ð½Ñƒ ÐµÐ»ÐµÐºÑ‚Ñ€Ð¾Ð½Ð½Ð¾ÑŽ Ð¿Ð¾ÑˆÑ‚Ð¾ÑŽ, ÑÐ¿Ñ–Ð»ÐºÑƒÐ²Ð°Ð½Ð½Ñ Ñ‚Ð° Ð¿Ñ€Ð¾Ð²ÐµÐ´ÐµÐ½Ð½Ñ Ð²Ñ–Ð´ÐµÐ¾ÐºÐ¾Ð½Ñ„ÐµÑ€ÐµÐ½Ñ†Ñ–Ð¹.</description>
    <description xml:lang="zh">éƒµä»¶ã€èŠå¤©ï¼Œä»¥åŠè¦–è¨Šé€šè©±çš„è»Ÿé«”ã€‚</description>
    <description xml:lang="zh_CN">ç”µå­é‚®ä»¶ã€èŠå¤©å’Œè§†é¢‘ä¼šè®®è½¯ä»¶ã€‚</description>
    <description xml:lang="zh_TW">éƒµä»¶ã€èŠå¤©ï¼Œä»¥åŠè¦–è¨Šé€šè©±çš„è»Ÿé«”ã€‚</description>
    <default>true</default>
    <uservisible>false</uservisible>
    <packagelist>
      <packagereq type="default">evolution</packagereq>
      <packagereq type="default">evolution-ews</packagereq>
      <packagereq type="default">evolution-help</packagereq>
      <packagereq type="default">evolution-mapi</packagereq>
      <packagereq type="default">hexchat</packagereq>
      <packagereq type="optional">pidgin</packagereq>
      <packagereq type="optional">thunderbird</packagereq>
    </packagelist>
  </group>
  <group>
    <id>internet-browser</id>
    <name>Internet Browser</name>
    <name xml:lang="as">à¦‡à¦¨à§à¦Ÿà¦¾à§°à¦¨à§‡à¦Ÿ à¦¬à§à§°à¦¾à¦‰à¦›à¦¾à§°</name>
    <name xml:lang="bn">à¦‡à¦¨à§à¦Ÿà¦¾à¦°à¦¨à§‡à¦Ÿ à¦¬à§à¦°à¦¾à¦‰à¦œà¦¾à¦°</name>
    <name xml:lang="cs">ProhlÃ­Å¾eÄ internetu</name>
    <name xml:lang="de">Internet-Browser</name>
    <name xml:lang="de_CH">Internet-Browser</name>
    <name xml:lang="es">Navegador de Internet</name>
    <name xml:lang="fr">Navigateur Internet</name>
    <name xml:lang="gu">àª‡àª¨à«àªŸàª°àª¨à«‡àªŸ àª¬à«àª°àª¾àª‰àªàª°</name>
    <name xml:lang="hi">à¤‡à¤‚à¤Ÿà¤°à¤¨à¥‡à¤Ÿ à¤¬à¥à¤°à¤¾à¤‰à¤œà¤¼à¤°</name>
    <name xml:lang="ia">Navigator de Rete</name>
    <name xml:lang="it">Internet Browser</name>
    <name xml:lang="ja">ã‚¤ãƒ³ã‚¿ãƒ¼ãƒãƒƒãƒˆãƒ–ãƒ©ã‚¦ã‚¶ãƒ¼</name>
    <name xml:lang="kn">à²…à²‚à²¤à²°à²œà²¾à²² à²µà³€à²•à³à²·à²•</name>
    <name xml:lang="ko">ì¸í„°ë„· ë¸Œë¼ìš°ì €</name>
    <name xml:lang="ml">à´‡à´¨àµà´±à´°àµâ€à´¨àµ†à´±àµà´±àµ à´¬àµà´°àµŒà´¸à´°àµâ€</name>
    <name xml:lang="mr">à¤‡à¤‚à¤Ÿà¤°à¤¨à¥‡à¤Ÿ à¤¬à¥à¤°à¤¾à¤Šà¤œà¤°</name>
    <name xml:lang="or">à¬‡à¬£à­à¬Ÿà¬°à¬¨à­‡à¬Ÿ à¬¬à­à¬°à¬¾à¬‰à¬œà¬°</name>
    <name xml:lang="pa">à¨‡à©°à¨Ÿà¨°à¨¨à©ˆà©±à¨Ÿ à¨¬à¨°à¨¾à¨Šà©›à¨¿à©°à¨—</name>
    <name xml:lang="pl">PrzeglÄ…darka internetowa</name>
    <name xml:lang="pt">Navegador de Internet</name>
    <name xml:lang="pt_BR">Navegador de Internet</name>
    <name xml:lang="ru">Ð˜Ð½Ñ‚ÐµÑ€Ð½ÐµÑ‚-Ð±Ñ€Ð°ÑƒÐ·ÐµÑ€</name>
    <name xml:lang="sv">InternetblÃ¤ddrare</name>
    <name xml:lang="ta">à®‡à®£à¯ˆà®¯ à®‰à®²à®¾à®µà®¿</name>
    <name xml:lang="te">à°‡à°‚à°Ÿà°°à±à°¨à±†à°Ÿà± à°¬à±à°°à±Œà°œà°°à±</name>
    <name xml:lang="uk">ÐŸÑ€Ð¾Ð³Ñ€Ð°Ð¼Ð° Ð´Ð»Ñ Ð¿ÐµÑ€ÐµÐ³Ð»ÑÐ´Ñƒ Ñ–Ð½Ñ‚ÐµÑ€Ð½ÐµÑ‚Ñƒ</name>
    <name xml:lang="zh">ç¶²è·¯ç€è¦½å™¨</name>
    <name xml:lang="zh_CN">äº’è”ç½‘æµè§ˆå™¨</name>
    <name xml:lang="zh_TW">ç¶²è·¯ç€è¦½å™¨</name>
    <description>The Firefox web browser</description>
    <description xml:lang="de">Der Firefox-Webbrowser</description>
    <description xml:lang="es">El navegador web Firefox</description>
    <description xml:lang="fr">Navigateur web Firefox</description>
    <description xml:lang="it">Il browser web Firefox</description>
    <description xml:lang="ja">Firefox Web ãƒ–ãƒ©ã‚¦ã‚¶ãƒ¼</description>
    <description xml:lang="ko">Firefox ì›¹ë¸Œë¼ìš°ì € </description>
    <description xml:lang="pt_BR">O navegador web Firefox</description>
    <description xml:lang="ru">Ð’ÐµÐ±-Ð±Ñ€Ð°ÑƒÐ·ÐµÑ€ Firefox</description>
    <description xml:lang="zh_CN">Firefox web æµè§ˆå™¨</description>
    <description xml:lang="zh_TW">Firefox Webç€è¦½å™¨</description>
    <default>true</default>
    <uservisible>false</uservisible>
    <packagelist>
      <packagereq type="mandatory">firefox</packagereq>
      <packagereq type="optional">libappindicator-gtk3</packagereq>
      <packagereq type="optional">redhat-lsb-core</packagereq>
    </packagelist>
  </group>
  <group>
    <id>java-platform</id>
    <name>Java Platform</name>
    <name xml:lang="as">Java à¦ªà§à¦²à§‡à¦Ÿà¦«à§°à§à¦®</name>
    <name xml:lang="bn">Java à¦ªà§à¦²à§à¦¯à¦¾à¦Ÿà¦«à¦°à§à¦®</name>
    <name xml:lang="cs">ProstÅ™edÃ­ pro Javu</name>
    <name xml:lang="de">Java-Plattform</name>
    <name xml:lang="de_CH">Java-Plattform</name>
    <name xml:lang="es">Plataforma de Java</name>
    <name xml:lang="fr">Plateforme Java</name>
    <name xml:lang="gu">Java àªªà«àª²à«‡àªŸàª«à«‹àª°à«àª®</name>
    <name xml:lang="hi">à¤œà¤¾à¤µà¤¾ à¤ªà¥à¤²à¥ˆà¤Ÿà¤«à¥‰à¤°à¥à¤®</name>
    <name xml:lang="ia">Platteforma Java</name>
    <name xml:lang="it">Piattaforma Java</name>
    <name xml:lang="ja">Java ãƒ—ãƒ©ãƒƒãƒˆãƒ•ã‚©ãƒ¼ãƒ </name>
    <name xml:lang="kn">à²œà²¾à²µà²¾ à²ªà³à²²à²¾à²Ÿà³â€Œà²«à²¾à²°à³à²®à³</name>
    <name xml:lang="ko">ìžë°” í”Œëž«í¼</name>
    <name xml:lang="ml">à´œà´¾à´µà´¾ à´ªàµà´²à´¾à´±àµà´±àµà´«àµ‹à´‚</name>
    <name xml:lang="mr">Java à¤ªà¥à¤²à¥…à¤Ÿà¤«à¥‰à¤°à¥à¤®</name>
    <name xml:lang="or">Java à¬ªà­à¬²à¬¾à¬Ÿà¬«à¬°à­à¬®</name>
    <name xml:lang="pa">à¨œà¨¾à¨µà¨¾ à¨ªà¨²à©‡à¨Ÿà¨«à¨¾à¨°à¨®</name>
    <name xml:lang="pl">Platforma Java</name>
    <name xml:lang="pt">Plataforma Java</name>
    <name xml:lang="pt_BR">Plataforma Java</name>
    <name xml:lang="ru">Java</name>
    <name xml:lang="sv">Javaplattform</name>
    <name xml:lang="ta">à®œà®¾à®µà®¾ à®ƒà®ªà¯à®³à®¾à®Ÿà¯à®ªà®¾à®°à¯à®®à¯</name>
    <name xml:lang="te">à°œà°¾à°µà°¾ à°ªà±à°²à°¾à°Ÿà±â€Œà°«à°¾à°‚</name>
    <name xml:lang="uk">ÐŸÐ»Ð°Ñ‚Ñ„Ð¾Ñ€Ð¼Ð° Java</name>
    <name xml:lang="zh">Java å¹³å°</name>
    <name xml:lang="zh_CN">Java å¹³å°</name>
    <name xml:lang="zh_TW">Java å¹³å°</name>
    <description>Java support for the CentOS Linux Server and Desktop Platforms.</description>
    <default>true</default>
    <uservisible>false</uservisible>
    <packagelist>
      <packagereq type="mandatory">java-1.8.0-openjdk</packagereq>
      <packagereq type="default">icedtea-web</packagereq>
    </packagelist>
  </group>
  <group>
    <id>legacy-x</id>
    <name>Legacy X Window System Compatibility</name>
    <name xml:lang="as">à¦•à¦¿à¦®à§à¦¬à¦¦à¦¨à§à¦¤à¦¿ X à¦‰à¦‡à¦¨à§à¦¡à§‹ à¦šà¦¿à¦¸à§à¦Ÿà§‡à¦® à¦¸à¦‚à¦—à¦¤à¦¿</name>
    <name xml:lang="cs">Kompatibilita pro zastaralÃ½ X Window System</name>
    <name xml:lang="de">KompatibilitÃ¤t mit Ã¤lteren X-Window-Systemen</name>
    <name xml:lang="de_CH">KompatibilitÃ¤t mit Ã¤lteren X-Window-Systemen</name>
    <name xml:lang="es">Compatibilidad de sistema de ventanas con legado de X</name>
    <name xml:lang="fr">CompatibilitÃ© hÃ©ritÃ©e du systÃ¨me X Window</name>
    <name xml:lang="gu">àª²à«…àª—àª¸à«€ X àªµàª¿àª¨à«àª¡à«‹ àª¸àª¿àª¸à«àªŸàª® àª¸à«àª¸àª‚àª—àª¤àª¤àª¾</name>
    <name xml:lang="hi">à¤ªà¥à¤°à¤¾à¤¤à¤¨ X à¤µà¤¿à¤‚à¤¡à¥‹à¤œ à¤¤à¤‚à¤¤à¥à¤° à¤¸à¥à¤¸à¤‚à¤—à¤¤à¤¾</name>
    <name xml:lang="it">CompatibilitÃ  sistema X Window con versioni precedenti</name>
    <name xml:lang="ja">ãƒ¬ã‚¬ã‚·ãƒ¼ãª X ã‚¦ã‚£ãƒ³ãƒ‰ã‚¦ã‚·ã‚¹ãƒ†ãƒ äº’æ›æ€§</name>
    <name xml:lang="kn">à²ªà²¾à²°à²‚à²ªà²°à²¿à²• X Windows à²µà³à²¯à²µà²¸à³à²¥à³†à²¯ à²¹à³Šà²‚à²¦à²¾à²£à²¿à²•à³†</name>
    <name xml:lang="ko">ë ˆê±°ì‹œ X Window ì‹œìŠ¤í…œ í˜¸í™˜ì„±</name>
    <name xml:lang="ml">à´²àµ†à´—à´¸à´¿ à´Žà´•àµà´¸àµ à´µà´¿à´¨àµâ€à´¡àµ‹ à´¸à´¿à´¸àµà´±àµà´±à´‚ à´ªàµŠà´°àµà´¤àµà´¤à´‚</name>
    <name xml:lang="mr">à¤²à¥‡à¤—à¤¸à¤¿ X Window à¤¸à¤¿à¤¸à¥à¤Ÿà¤® à¤¸à¤¹à¤¤à¥à¤µà¤¤à¤¾</name>
    <name xml:lang="or">à¬ªà­à¬°à­à¬£à¬¾ X à­±à¬¿à¬£à­à¬¡à­‹ à¬¤à¬¨à­à¬¤à­à¬° à¬¸à­à¬¸à¬™à­à¬—à¬¤à¬¤à¬¾</name>
    <name xml:lang="pa">à¨µà¨¿à¨°à¨¾à¨¸à¨¤à©€ X à¨µà¨¿à©°à¨¡à©‹ à¨¸à¨¿à¨¸à¨Ÿà¨® à¨…à¨¨à©à¨•à©‚à¨²à¨¤à¨¾</name>
    <name xml:lang="pl">ZgodnoÅ›Ä‡ z przestarzaÅ‚ym systemem X Window</name>
    <name xml:lang="pt">Compatibilidade de Legacia do Sistema X Windows</name>
    <name xml:lang="pt_BR">Compatibilidade de Legacia do Sistema X Windows</name>
    <name xml:lang="ru">Ð¡Ð¾Ð²Ð¼ÐµÑÑ‚Ð¸Ð¼Ð¾ÑÑ‚ÑŒ Ñ ÑƒÑÑ‚Ð°Ñ€ÐµÐ²ÑˆÐµÐ¹ ÑÐ¸ÑÑ‚ÐµÐ¼Ð¾Ð¹ X Window</name>
    <name xml:lang="ta">à®ªà®´à®®à¯ˆà®¯à®¾à®© X Window System à®‡à®£à®•à¯à®•à®¤à¯à®¤à®©à¯à®®à¯ˆ</name>
    <name xml:lang="te">à°ªà°¾à°¤ X à°µà°¿à°‚à°¡à±‹ à°µà±à°¯à°µà°¸à±à°¥ à°¸à°¾à°°à±‚à°ªà±à°¯à°¤</name>
    <name xml:lang="uk">Ð¡ÑƒÐ¼Ñ–ÑÐ½Ñ–ÑÑ‚ÑŒ Ð· Ð·Ð°ÑÑ‚Ð°Ñ€Ñ–Ð»Ð¸Ð¼Ð¸ Ð²ÐµÑ€ÑÑ–ÑÐ¼Ð¸ ÑÐ¸ÑÑ‚ÐµÐ¼ X Window</name>
    <name xml:lang="zh">Legacy X Window ç³»çµ±ç›¸å®¹æ€§</name>
    <name xml:lang="zh_CN">ä¼ ç»Ÿ X Windows ç³»ç»Ÿçš„å…¼å®¹æ€§</name>
    <name xml:lang="zh_TW">Legacy X Window ç³»çµ±ç›¸å®¹æ€§</name>
    <description>Compatibility programs for migration from or working with legacy X Window System environments.</description>
    <description xml:lang="as">à¦•à¦¿à¦®à§à¦¬à¦¦à¦¨à§à¦¤à¦¿ X à¦‰à¦‡à¦¨à§à¦¡à§‹ à¦šà¦¿à¦¸à§à¦Ÿà§‡à¦® à¦ªà§°à¦¿à§±à§‡à¦¶à¦¸à¦®à§‚à¦¹à§° à¦ªà§°à¦¾ à¦ªà§à§°à¦¬à§à§°à¦œà¦¨ à¦•à§°à¦¿à¦¬à¦²à§‡ à¦¬à¦¾ à¦²à¦—à¦¤ à¦•à¦¾à¦® à¦•à§°à¦¿à¦¬à¦²à§‡ à¦¸à¦‚à¦—à¦¤ à¦ªà§à§°à¦—à§à§°à¦¾à¦®à¦¸à¦®à§‚à¦¹à¥¤</description>
    <description xml:lang="bn">à¦²à¦¿à¦—à§à¦¯à¦¾à¦¸à¦¿ X Windows à¦ªà¦°à¦¿à¦¬à§‡à¦¶ à¦¥à§‡à¦•à§‡ à¦®à¦¾à¦‡à¦—à§à¦°à§‡à¦¶à¦¨ à¦…à¦¥à¦¬à¦¾ à¦à¦‡ à¦ªà¦°à¦¿à¦¬à§‡à¦¶à§‡ à¦•à¦°à§à¦® à¦¸à¦žà§à¦šà¦¾à¦²à¦¨à¦¾à¦° à¦¸à¦®à§Ÿ à¦¸à§à¦¸à¦‚à¦—à¦¤à¦¿ à¦‰à¦ªà¦²à¦¬à§à¦§à¦•à¦¾à¦°à§€ à¦ªà§à¦°à§‹à¦—à§à¦°à¦¾à¦®à¥¤</description>
    <description xml:lang="cs">Programy pro migraci a prÃ¡ci se zastaralÃ½m prostÅ™edÃ­m X Window System.</description>
    <description xml:lang="de">KompatibilitÃ¤tsprogramme fÃ¼r die Migration von oder die Arbeit mit Ã¤lteren X-Windows-System-Umgebungen.</description>
    <description xml:lang="de_CH">KompatibilitÃ¤tsprogramme fÃ¼r die Migration von oder die Arbeit mit Ã¤lteren X-Windows-System-Umgebungen.</description>
    <description xml:lang="es">Programas de compatibilidad para migrar desde o funcionar con sistema de entornos X.</description>
    <description xml:lang="fr">Programmes de compatibilitÃ© pour des migrations en provenance de, ou pour travailler, avec des environnements hÃ©ritÃ©s des environnements X Windows.</description>
    <description xml:lang="gu">àª¤à«‡àª®àª¾àª‚àª¥à«€ àª¸à«àª¥àª³àª¾àª‚àª¤àª° àª®àª¾àªŸà«‡ àª¸à«àª¸àª‚àª—àª¤ àªªà«àª°àª•à«àª°àª¿àª¯àª¾àª“ àª…àª¥àªµàª¾ àª²à«‡àª—àª¸àª¿ X àªµàª¿àª¨à«àª¡à«‹ àªªàª°à«àª¯àª¾àªµàª°àª£à«‹ àª¸àª¾àª¥à«‡ àª•àª¾àª® àª•àª°à«€ àª°àª¹à«àª¯àª¾ àª›à«‡.</description>
    <description xml:lang="hi">à¤ªà¥à¤°à¤¾à¤¤à¤¨ X Windows à¤µà¤¾à¤¤à¤¾à¤µà¤°à¤£ à¤¸à¥‡ à¤•à¤¾à¤°à¥à¤¯ à¤•à¥‡ à¤¸à¤¾à¤¥ à¤¯à¤¾ à¤‰à¤¤à¥à¤ªà¥à¤°à¤µà¤¾à¤¸à¤¨ à¤•à¥‡ à¤²à¤¿à¤ à¤¸à¥à¤¸à¤‚à¤—à¤¤à¤¤à¤¾ à¤ªà¥à¤°à¥‹à¤—à¥à¤°à¤¾à¤®.</description>
    <description xml:lang="ia">Programmas de compatibilitate pro migrar del ambientes hereditari del systema X Window o pro cooperar con illos.</description>
    <description xml:lang="it">Programmi di compatibilitÃ  per la migrazione da o per operare con  ambienti del sistema X Window di verisioni precedenti.</description>
    <description xml:lang="ja">ãƒ¬ã‚¬ã‚·ãƒ¼ X Windows ã‚·ã‚¹ãƒ†ãƒ ç’°å¢ƒã®ä½¿ç”¨ã‚„ã€ã“ã®ç’°å¢ƒã‹ã‚‰ç§»è¡Œã™ã‚‹ãŸã‚ã®äº’æ›æ€§ãƒ—ãƒ­ã‚°ãƒ©ãƒ </description>
    <description xml:lang="kn">à²ªà²¾à²°à²‚à²ªà²°à²¿à²• X Windows à²ªà²°à²¿à²¸à²°à²—à²³à²¿à²‚à²¦ à²µà²°à³à²—à²¾à²¯à²¿à²¸à²²à³ à²…à²¥à²µ à²…à²¦à²°à³Šà²‚à²¦à²¿à²—à³† à²•à³†à²²à²¸ à²®à²¾à²¡à²²à³ à²¹à³Šà²‚à²¦à²¿à²•à³Šà²³à³à²³à³à²µ à²ªà³à²°à³Šà²—à³à²°à²¾à²®à³â€Œà²—à²³à³.</description>
    <description xml:lang="ko">ë ˆê±°ì‹œ X Windows í™˜ê²½ì˜ ë§ˆì´ê·¸ë ˆì´ì…˜ì´ë‚˜ ìƒí˜¸ ë™ìž‘ì„ ìœ„í•œ í˜¸í™˜ í”„ë¡œê·¸ëž¨</description>
    <description xml:lang="ml">à´²àµ†à´—à´¸à´¿ X à´µà´¿à´¨àµâ€à´¡àµ‹à´¸àµ à´¸à´¿à´¸àµà´±àµà´±à´‚ à´Žà´¨àµâ€à´µà´¯àµ‹à´£àµà´®àµ†à´¨àµà´±à´¿à´²àµâ€ à´ªàµà´°à´µà´°àµâ€à´¤àµà´¤à´¿à´•àµà´•àµà´¨àµà´¨à´¤à´¿à´¨àµàµ à´…à´²àµà´²àµ†à´™àµà´•à´¿à´²àµâ€ à´¨àµ€à´™àµà´™àµà´¨àµà´¨à´¤à´¿à´¨àµà´³àµà´³ à´•àµ‹à´¬à´¾à´±àµà´±à´¿à´¬à´¿à´³à´¿à´±àµà´±à´¿ à´ªàµà´°àµ‹à´—àµà´°à´¾à´®àµà´•à´³àµâ€.</description>
    <description xml:lang="mr">à¤²à¥‡à¤—à¤¸à¥€ X Window System à¤à¤¨à¥à¤µà¤¾à¤°à¥à¤¯à¤¨à¤®à¥‡à¤‚à¤Ÿà¥à¤¸à¥ à¤ªà¤¾à¤¸à¥‚à¤¨ à¤¸à¥à¤¥à¤¾à¤¨à¤¾à¤‚à¤¤à¤°à¤¨ à¤•à¤¿à¤‚à¤µà¤¾ à¤¤à¥à¤¯à¤¾à¤¸à¤¹ à¤•à¤¾à¤°à¥à¤¯ à¤•à¤°à¤£à¤¾à¤¸à¤¾à¤ à¥€ à¤¸à¤¹à¤¤à¥à¤µà¤¤à¤¾ à¤•à¤¾à¤°à¥à¤¯à¤•à¥à¤°à¤®.</description>
    <description xml:lang="or">à¬¸à­à¬¥à¬¾à¬¨à¬¾à¬¨à­à¬¤à¬°à¬£ à¬ªà¬¾à¬‡à¬ à¬•à¬¿à¬®à­à¬¬à¬¾ à¬ªà­à¬°à­à¬£à¬¾ X à­±à¬¿à¬£à­à¬¡à­‹ à¬ªà¬°à¬¿à¬¬à­‡à¬¶ à¬¸à¬¹à¬¿à¬¤ à¬•à¬¾à¬°à­à¬¯à­à­Ÿà¬•à¬°à¬¿à¬¬à¬¾ à¬ªà¬¾à¬‡à¬ à¬¸à­à¬¸à¬™à­à¬—à¬¤à¬¤à¬¾ à¬ªà­à¬°à¬—à­à¬°à¬¾à¬®à¬—à­à¬¡à¬¼à¬¿à¬•à¥¤</description>
    <description xml:lang="pa">à¨ªà©à¨°à¨¾à¨£à©‡ X Windows à¨‡à¨¨à¨µà¨¾à¨‡à¨°à¨®à©ˆà¨‚à¨Ÿ à¨¤à©‹à¨‚ à¨®à¨¾à¨ˆà¨—à¨°à©‡à¨Ÿ à¨œà¨¾à¨‚ à¨•à©°à¨® à¨•à¨°à¨¨ à¨²à¨ˆ à¨…à¨¨à©à¨•à©‚à¨²à¨¤à¨¾ à¨ªà¨°à©‹à¨—à¨°à¨¾à¨®à¥¤</description>
    <description xml:lang="pl">Programy zgodnoÅ›ci do migrowania z lub pracy z przestarzaÅ‚ymi Å›rodowiskami systemu X Window.</description>
    <description xml:lang="pt">Programas de compatibilidade para migraÃ§Ã£o ou trabalhando com legacia de ambientes do Sistema X Windows.</description>
    <description xml:lang="pt_BR">Programas de compatibilidade para migraÃ§Ã£o ou trabalhando com legacia de ambientes do Sistema X Windows.</description>
    <description xml:lang="ru">ÐŸÑ€Ð¾Ð³Ñ€Ð°Ð¼Ð¼Ñ‹ ÑÐ¾Ð²Ð¼ÐµÑÑ‚Ð¸Ð¼Ð¾ÑÑ‚Ð¸ Ð´Ð»Ñ Ð¼Ð¸Ð³Ñ€Ð°Ñ†Ð¸Ð¸ Ð¸Ð»Ð¸ Ñ€Ð°Ð±Ð¾Ñ‚Ñ‹ Ñ ÑƒÑÑ‚Ð°Ñ€ÐµÐ²ÑˆÐ¸Ð¼Ð¸ Ð¾ÐºÑ€ÑƒÐ¶ÐµÐ½Ð¸ÑÐ¼Ð¸ X Window.</description>
    <description xml:lang="sv">Kompatibilitetsprogram fÃ¶r migrering frÃ¥n eller arbete med Ã¤ldre miljÃ¶er av fÃ¶nstersystemet X.</description>
    <description xml:lang="ta">à®†à®µà®£ X à®µà®¿à®£à¯à®Ÿà¯‹à®•à¯à®•à®³à®¿à®©à¯ à®šà¯‚à®´à®²à¯à®Ÿà®©à¯ à®ªà®£à®¿à®ªà¯à®°à®¿à®¯ à®…à®²à¯à®²à®¤à¯ à®¨à®•à®°à¯à®µà®¤à®±à¯à®•à®¾à®© à®’à®¤à¯à®¤à®¿à®¯à®²à¯à®ªà¯ à®¨à®¿à®°à®²à¯à®•à®³à¯.</description>
    <description xml:lang="te">à°ªà°¾à°¤ X à°µà°¿à°‚à°¡à±‹à°¸à± à°µà°¾à°¤à°¾à°µà°°à°£à°®à±à°² à°¨à±à°‚à°¡à°¿ à°®à±ˆà°—à±à°°à±‡à°·à°¨à± à°•à±Šà°°à°•à± à°²à±‡à°¦à°¾ à°µà°¾à°Ÿà°¿à°¤à±‹ à°ªà°¨à°¿à°šà±‡à°¯à±à°Ÿà°•à± à°•à°‚à°ªà°¾à°Ÿà°¿à°¬à°¿à°²à°¿à°Ÿà°¿ à°ªà±à°°à±‹à°—à±à°°à°¾à°®à±à°¸à±.</description>
    <description xml:lang="uk">ÐŸÑ€Ð¾Ð³Ñ€Ð°Ð¼Ð¸ Ð·Ð°Ð±ÐµÐ·Ð¿ÐµÑ‡ÐµÐ½Ð½Ñ ÑÑƒÐ¼Ñ–ÑÐ½Ð¾ÑÑ‚Ñ– Ð´Ð»Ñ Ð¼Ñ–Ð³Ñ€Ð°Ñ†Ñ–Ñ— Ð· Ð·Ð°ÑÑ‚Ð°Ñ€Ñ–Ð»Ð¸Ñ… ÑÐµÑ€ÐµÐ´Ð¾Ð²Ð¸Ñ‰ ÑÐ¸ÑÑ‚ÐµÐ¼ X Window Ð°Ð±Ð¾ Ñ€Ð¾Ð±Ð¾Ñ‚Ð¸ Ð· Ñ‚Ð°ÐºÐ¸Ð¼Ð¸ ÑÐµÑ€ÐµÐ´Ð¾Ð²Ð¸Ñ‰Ð°Ð¼Ð¸.</description>
    <description xml:lang="zh">ç”± legacy X Window ç³»çµ±ç’°å¢ƒé·ç§»ï¼Œæˆ–èˆ‡å…¶æ­é…é‹ä½œçš„ç›¸å®¹ç¨‹å¼ã€‚</description>
    <description xml:lang="zh_CN">ç”¨äºŽä»Žç»§æ‰¿ X Windows çŽ¯å¢ƒä¸­è¿ç§»æˆ–è€…å¯ç”¨äºŽè¯¥çŽ¯å¢ƒçš„å…¼å®¹ç¨‹åºã€‚</description>
    <description xml:lang="zh_TW">ç”± legacy X Window ç³»çµ±ç’°å¢ƒé·ç§»ï¼Œæˆ–èˆ‡å…¶æ­é…é‹ä½œçš„ç›¸å®¹ç¨‹å¼ã€‚</description>
    <default>true</default>
    <uservisible>false</uservisible>
    <packagelist>
      <packagereq type="default">libXmu</packagereq>
      <packagereq type="default">libXp</packagereq>
      <packagereq type="default">motif</packagereq>
      <packagereq type="default">xorg-x11-fonts-ISO8859-1-100dpi</packagereq>
      <packagereq type="default">xorg-x11-fonts-Type1</packagereq>
      <packagereq type="default">xorg-x11-fonts-misc</packagereq>
      <packagereq type="optional">xterm</packagereq>
    </packagelist>
  </group>
  <group>
    <id>mail-server</id>
    <name>Mail Server</name>
    <name xml:lang="af">Posbediener</name>
    <name xml:lang="am">á‹¨á‹°á‰¥á‹³á‰¤á‹Žá‰½ áˆ°áˆ­á‰¨áˆ­</name>
    <name xml:lang="ar">Ø®Ø§Ø¯Ù… Ø§Ù„Ø¨Ø±ÙŠØ¯</name>
    <name xml:lang="as">à¦®à§‡à¦‡à¦² à¦šà¦¾à§°à§à¦­à¦¾à§°</name>
    <name xml:lang="bal">Ø³Ø±ÙˆØ± Ù…ÛŒÙ„</name>
    <name xml:lang="be">ÐŸÐ°ÑˆÑ‚Ð¾Ð²Ñ‹ Ð¿Ð°ÑÐ»ÑƒÐ¶Ð½Ñ–Ðº</name>
    <name xml:lang="bg">ÐŸÐ¾Ñ‰ÐµÐ½ÑÐºÐ¸ ÑÑŠÑ€Ð²ÑŠÑ€</name>
    <name xml:lang="bn">à¦®à§‡à¦‡à¦² à¦¸à¦¾à¦°à§à¦­à¦¾à¦°</name>
    <name xml:lang="bs">PosluÅ¾itelj e-poÅ¡te</name>
    <name xml:lang="ca">Servidor de correu</name>
    <name xml:lang="cs">PoÅ¡tovnÃ­ server</name>
    <name xml:lang="cy">Gweinydd Post</name>
    <name xml:lang="da">Postserver</name>
    <name xml:lang="de">Mail-Server</name>
    <name xml:lang="de_CH">Mail-Server</name>
    <name xml:lang="el">Î•Î¾Ï…Ï€Î·ÏÎµÏ„Î·Ï„Î®Ï‚ Î·Î». Î±Î»Î»Î·Î»Î¿Î³ÏÎ±Ï†Î¯Î±Ï‚</name>
    <name xml:lang="en_GB">Mail Server</name>
    <name xml:lang="es">Servidor de correo</name>
    <name xml:lang="et">Postiserver</name>
    <name xml:lang="eu">Posta-zerbitzaria</name>
    <name xml:lang="fa">Ú©Ø§Ø±Ú¯Ø²Ø§Ø± Ù†Ø§Ù…Ù‡</name>
    <name xml:lang="fa_IR">Ú©Ø§Ø±Ú¯Ø²Ø§Ø± Ù†Ø§Ù…Ù‡</name>
    <name xml:lang="fi">Postipalvelin</name>
    <name xml:lang="fr">Serveur de messagerie</name>
    <name xml:lang="gl">Servidor de correo</name>
    <name xml:lang="gu">àª®à«‡àªˆàª² àª¸àª°à«àªµàª°</name>
    <name xml:lang="he">×©×¨×ª ×“×•××¨</name>
    <name xml:lang="hi">à¤¡à¤¾à¤• à¤¸à¤°à¥à¤µà¤°</name>
    <name xml:lang="hr">PosluÅ¾itelj e-poÅ¡te</name>
    <name xml:lang="hu">E-mail-kiszolgÃ¡lÃ³</name>
    <name xml:lang="hy">Õ“Õ¸Õ½Õ¿Õ¡ÕµÕ«Õ¶ Õ½Õ¥Ö€Õ¾Õ¥Ö€</name>
    <name xml:lang="ia">Servitor de currero</name>
    <name xml:lang="id">Server Mail</name>
    <name xml:lang="is">PÃ³stÃ¾jÃ³nn</name>
    <name xml:lang="it">Server Mail</name>
    <name xml:lang="ja">ãƒ¡ãƒ¼ãƒ«ã‚µãƒ¼ãƒãƒ¼</name>
    <name xml:lang="ka">áƒ¡áƒáƒ¤áƒáƒ¡áƒ¢áƒ áƒ¡áƒ”áƒ áƒ•áƒ”áƒ áƒ˜</name>
    <name xml:lang="kn">à²®à³ˆà²²à³ à²ªà³‚à²°à³ˆà²•à³†à²—à²£à²•</name>
    <name xml:lang="ko">ë©”ì¼ ì„œë²„</name>
    <name xml:lang="lv">Pasta serveris</name>
    <name xml:lang="mai">à¤¡à¤¾à¤• à¤¸à¤°à¥à¤µà¤°</name>
    <name xml:lang="mk">Ð¡ÐµÑ€Ð²ÐµÑ€ Ð·Ð° Ð¿Ð¾ÑˆÑ‚Ð°</name>
    <name xml:lang="ml">à´®àµ†à´¯à´¿à´²àµâ€ à´¸à´°àµâ€à´µà´°àµâ€</name>
    <name xml:lang="mr">à¤Ÿà¤ªà¤¾à¤² à¤¸à¤°à¥à¤µà¥à¤¹à¤°</name>
    <name xml:lang="ms">Pelayan Mel</name>
    <name xml:lang="nb">Eposttjener</name>
    <name xml:lang="ne">à¤ªà¤¤à¥à¤° à¤¸à¤°à¥à¤­à¤°</name>
    <name xml:lang="nl">E-mailserver</name>
    <name xml:lang="no">Eposttjener</name>
    <name xml:lang="nso">Seabi sa Poso</name>
    <name xml:lang="or">à¬¡à¬¾à¬• à¬¸à­‡à¬¬à¬•</name>
    <name xml:lang="pa">à¨®à©‡à¨² à¨¸à¨°à¨µà¨°</name>
    <name xml:lang="pl">Serwer pocztowy</name>
    <name xml:lang="pt">Servidor de Mail</name>
    <name xml:lang="pt_BR">Servidor de Mail</name>
    <name xml:lang="ro">Server de mail</name>
    <name xml:lang="ru">Ð¡ÐµÑ€Ð²ÐµÑ€ ÑÐ»ÐµÐºÑ‚Ñ€Ð¾Ð½Ð½Ð¾Ð¹ Ð¿Ð¾Ñ‡Ñ‚Ñ‹</name>
    <name xml:lang="si">à·€à·’à¶¯à·Šâ€à¶ºà·”à¶­à·Š à¶­à·à¶´à·à¶½à·Š à·ƒà·šà·€à· à¶¯à·à¶ºà¶šà¶º</name>
    <name xml:lang="sk">PoÅ¡tovÃ½ server</name>
    <name xml:lang="sl">PoÅ¡tni streÅ¾nik</name>
    <name xml:lang="sq">ShÃ«rbyes Poste</name>
    <name xml:lang="sr">Ð¡ÐµÑ€Ð²ÐµÑ€ Ð¿Ð¾ÑˆÑ‚Ðµ</name>
    <name xml:lang="sr@Latn">Server poÅ¡te</name>
    <name xml:lang="sr@latin">Server poÅ¡te</name>
    <name xml:lang="sv">E-postserver</name>
    <name xml:lang="ta">à®…à®žà¯à®šà®²à¯ à®šà¯‡à®µà¯ˆà®¯à®•à®®à¯</name>
    <name xml:lang="te">à°®à±†à°¯à°¿à°²à± à°¸à±‡à°µà°¿à°•</name>
    <name xml:lang="tg">Ð¥Ð¸Ð´Ð¼Ð°Ñ‚Ð³Ð¾Ò³Ð¸ Ð¿Ð¾Ñ‡Ñ‚Ð°</name>
    <name xml:lang="th">à¸•à¸±à¸§à¹ƒà¸«à¹‰à¸šà¸£à¸´à¸à¸²à¸£à¹€à¸¡à¸¥</name>
    <name xml:lang="tr">Posta Sunucusu</name>
    <name xml:lang="uk">Ð¡ÐµÑ€Ð²ÐµÑ€ ÐµÐ»ÐµÐºÑ‚Ñ€Ð¾Ð½Ð½Ð¾Ñ— Ð¿Ð¾ÑˆÑ‚Ð¸</name>
    <name xml:lang="ur">ÚˆØ§Ú© Ø³Ø±ÙˆØ±</name>
    <name xml:lang="vi">Server thÆ° tÃ­n</name>
    <name xml:lang="zh">éƒµä»¶ä¼ºæœå™¨</name>
    <name xml:lang="zh_CN">é‚®ä»¶æœåŠ¡å™¨</name>
    <name xml:lang="zh_TW">éƒµä»¶ä¼ºæœå™¨</name>
    <name xml:lang="zu">Umlekeleli Weposi</name>
    <description>These packages allow you to configure an IMAP or SMTP mail server.</description>
    <description xml:lang="am">á‹¨IMPAáŠ• áŠ¥áŠ“ á‹¨SMTP á‹¨áˆ†áŠ á‹¨á‹°á‰¥á‹³á‰¤ áˆ°áˆ­á‰¨áˆ­áŠ• áˆˆáˆ›áˆµá‰°áŠ«áŠ¨áˆ áŠ¥áŠá‹šáˆ… áŒ¥á‰…áˆŽá‰½ á‹«áˆµá‰½áˆ‹áˆ‰á¢</description>
    <description xml:lang="ar">Ù‡Ø°Ù‡ Ø§Ù„Ø­Ø²Ù… ØªØªÙŠØ­ Ù„Ùƒ ØªÙ‡ÙŠØ¦Ø© Ø®Ø§Ø¯Ù… Ø¨Ø±ÙŠØ¯ IMAP Ø£Ùˆ SMTP.</description>
    <description xml:lang="as">à¦à¦‡ à¦ªà§‡à¦•à§‡à¦‡à¦œà¦¸à¦®à§‚à¦¹à§° à¦¦à§à¦¬à¦¾à§°à¦¾ à¦†à¦ªà§à¦¨à¦¿ à¦à¦Ÿà¦¾ IMAP à¦¬à¦¾ SMTP à¦¡à¦¾à¦• à¦šà¦¾à§°à§à¦­à¦¾à§°à§° à¦¸à¦‚à§°à§‚à¦ªà¦£ à¦•à§°à¦¿à¦¬ à¦ªà¦¾à§°à§‡à¥¤</description>
    <description xml:lang="bal">Ø§ÛŒ Ø¨Ø³ØªÚ¯Ø§Ù† Ø´Ù…Ø§ Ø±Ø§ Ø§Ø¬Ø§Ø²Øª Ø¯Ù† Ú©Ù‡ ÛŒÚ© Ù…ÛŒÙ„ Ø³Ø±ÙˆØ± IMAP ÛŒØ§ SMTP ØªÙ†Ø¸ÛŒÙ… Ú©Ù†ÛŒØª</description>
    <description xml:lang="bg">Ð¢ÐµÐ·Ð¸ Ð¿Ð°ÐºÐµÑ‚Ð¸ Ð¿Ð¾Ð·Ð²Ð¾Ð»ÑÐ²Ð°Ñ‚ Ð½Ð°ÑÑ‚Ñ€Ð¾Ð¹ÐºÐ°Ñ‚Ð° IMAP Ð¸Ð»Ð¸ SMTP Ð¿Ð¾Ñ‰ÐµÐ½ÑÐºÐ¸ ÑÑŠÑ€Ð²ÑŠÑ€Ð¸.</description>
    <description xml:lang="bn">à¦à¦‡ à¦ªà§à¦¯à¦¾à¦•à§‡à¦œà¦—à§à¦²à¦¿à¦° à¦¸à¦¾à¦¹à¦¾à¦¯à§à¦¯à§‡ à¦†à¦ªà¦¨à¦¿ IMAP à¦à¦¬à¦‚ SMTP à¦®à§‡à¦‡à¦² à¦¸à¦¾à¦°à§à¦­à¦¾à¦° à¦•à¦¨à¦«à¦¿à¦—à¦¾à¦° à¦•à¦°à¦¤à§‡ à¦ªà¦¾à¦°à¦¬à§‡à¦¨à¥¤</description>
    <description xml:lang="bs">Ovi vam paketi omoguÄ‡uju konfiguriranje IMAP ili SMTP posluÅ¾itelja e-poÅ¡te</description>
    <description xml:lang="ca">Aquests paquets us permeten configurar un servidor de correu IMAP o SMTP.</description>
    <description xml:lang="cs">BalÃ­Äky pro konfiguraci a provoz poÅ¡tovnÃ­ho serveru SMTP nebo IMAP.</description>
    <description xml:lang="cy">Galluoga'r pecynnau yma i chi gyflunio gweinydd post IMAP neu SMTP.</description>
    <description xml:lang="da">Disse pakker lader dig konfigurere en IMAP- eller SMTP-postserver.</description>
    <description xml:lang="de">Mit diesen Paketen kÃ¶nnen Sie einen IMAP oder SMTP Mail-Server konfigurieren.</description>
    <description xml:lang="de_CH">Mit diesen Paketen kÃ¶nnen Sie einen IMAP oder SMTP Mail-Server konfigurieren.</description>
    <description xml:lang="el">Î¤Î± Ï€Î±ÎºÎ­Ï„Î± Î±Ï…Ï„Î¬ ÏƒÎ±Ï‚ ÎµÏ€Î¹Ï„ÏÎ­Ï€Î¿Ï…Î½ Î½Î± ÏƒÏ…Î½Ï„Î¿Î½Î¯ÏƒÎµÏ„Îµ Î­Î½Î±Î½ IMAP Î® SMTP Î´Î¹Î±ÎºÎ¿Î¼Î¹ÏƒÏ„Î® Î¼Î·Î½Ï…Î¼Î¬Ï„Ï‰Î½.</description>
    <description xml:lang="en_GB">These packages allow you to configure an IMAP or SMTP mail server.</description>
    <description xml:lang="es">Estos paquetes le permiten configurar un servidor de correo IMAP o SMTP.</description>
    <description xml:lang="et">Need paketid aitavad sul seadistada IMAP vÃµi SMTP postiserverit.</description>
    <description xml:lang="fi">NÃ¤mÃ¤ paketit mahdollistavat IMAP- tai SMTP-postipalvelimen perustamisen.</description>
    <description xml:lang="fr">Ces packages vous permettent de configurer un serveur de messagerie IMAP ou SMTP.</description>
    <description xml:lang="gu">àª† àªªà«‡àª•à«‡àªœà«‹ àª¤àª®àª¨à«‡ IMAP àª…àª¥àªµàª¾ SMTP àª®à«‡àªˆàª² àª¸àª°à«àªµàª° àª°à«‚àªªàª°à«‡àª–àª¾àª‚àª•àª¿àª¤ àª•àª°àªµàª¾ àª®àª¾àªŸà«‡ àªªàª°àªµàª¾àª¨àª—à«€ àª†àªªàª¶à«‡.</description>
    <description xml:lang="he">×—×‘×™×œ×•×ª ×”×ž××¤×©×¨×•×ª ×œ×”×§×™× ×©×¨×ª ×“×•××¨ SMTP ×•Ö¾IMAP.</description>
    <description xml:lang="hi">à¤¯à¥‡ à¤¸à¤‚à¤•à¥à¤² à¤†à¤ªà¤•à¥‹ IMAP à¤¯à¤¾ SMTP à¤¡à¤¾à¤• à¤¸à¤°à¥à¤µà¤° à¤•à¤¾ à¤µà¤¿à¤¨à¥à¤¯à¤¾à¤¸ à¤•à¤°à¤¨à¥‡ à¤•à¤¾ à¤…à¤¨à¥à¤®à¤¤à¤¿ à¤¦à¥‡à¤¤à¤¾ à¤¹à¥ˆ.</description>
    <description xml:lang="hr">Ovi vam paketi omoguÄ‡uju konfiguriranje IMAP ili SMTP posluÅ¾itelja e-poÅ¡te</description>
    <description xml:lang="hu">Ezek a csomagok IMAP- Ã©s SMTP-alapÃº levelezÃ©si kiszolgÃ¡lÃ³k beÃ¡llÃ­tÃ¡sÃ¡hoz szÃ¼ksÃ©gesek.</description>
    <description xml:lang="ia">Iste pacchettos permitte de configurar un servitor de currero IMAP o SMTP.</description>
    <description xml:lang="id">Paket-paket ini membolehkan anda untuk mengkonfigurasi server mail IMAP atau SMTP.</description>
    <description xml:lang="is">Ãžessir pakkar gera Ã¾Ã©r kleyft aÃ° setja upp IMAP eÃ°a SMTP pÃ³sthÃºs.</description>
    <description xml:lang="it">Questi pacchetti consentono di configurare un server di posta IMAP o SMTP.</description>
    <description xml:lang="ja">ã“ã‚Œã‚‰ã®ãƒ‘ãƒƒã‚±ãƒ¼ã‚¸ã§ã€IMAP ã‹ SMTP ãƒ¡ãƒ¼ãƒ«ã‚µãƒ¼ãƒãƒ¼ã‚’è¨­å®šã§ãã¾ã™ã€‚</description>
    <description xml:lang="kn">à²ˆ à²ªà³à²¯à²¾à²•à³‡à²œà³â€à²—à²³à³ IMAP à²…à²¥à²µà²¾ SMTP à²®à³ˆà²²à³ à²ªà³‚à²°à³ˆà²•à³†à²—à²£à²•à²µà²¨à³à²¨à³ à²¸à²‚à²°à²šà²¿à²¸à²²à³ à²…à²¨à³à²µà³à²®à²¾à²¡à²¿à²•à³Šà²¡à³à²¤à³à²¤à²µà³†.</description>
    <description xml:lang="ko">ì´ íŒ¨í‚¤ì§€ëŠ” IMAPê³¼ SMTP ë©”ì¼ ì„œë²„ ì„¤ì •ì„ ë„ì™€ì¤ë‹ˆë‹¤.</description>
    <description xml:lang="lv">Å Ä«s pakotnes dod iespÄ“ju iestatÄ«t IMAP vai SMTP pasta serveri.</description>
    <description xml:lang="mai">à¤ˆ à¤¸à¤‚à¤•à¥à¤² à¤…à¤¹à¤¾à¤à¤•à¥‡à¤ IMAP à¤…à¤¥à¤µà¤¾ SMTP à¤¡à¤¾à¤• à¤¸à¤°à¥à¤µà¤° à¤• à¤µà¤¿à¤¨à¥à¤¯à¤¾à¤¸ à¤•à¤°à¤¬à¤¾ à¤• à¤…à¤¨à¥à¤®à¤¤à¤¿ à¤¦à¥‡à¤¤ à¤…à¤›à¤¿.</description>
    <description xml:lang="mk">ÐžÐ²Ð¸Ðµ Ð¿Ð°ÐºÐµÑ‚Ð¸ Ð²Ð¸ Ð¾Ð²Ð¾Ð·Ð¼Ð¾Ð¶ÑƒÐ²Ð°Ð°Ñ‚ ÐºÐ¾Ð½Ñ„Ð¸Ð³ÑƒÑ€Ð°Ñ†Ð¸Ñ˜Ð° Ð½Ð° ÑÐµÑ€Ð²ÐµÑ€Ð¸Ñ‚Ðµ Ð·Ð° Ðµ-Ð¿Ð¾ÑˆÑ‚Ð° IMAP Ð¸Ð»Ð¸ SMTP.</description>
    <description xml:lang="ml">IMAP ,SMTP à´®àµ†à´¯à´¿à´²àµâ€ à´¸à´°àµâ€à´µà´°àµâ€ à´•àµà´°à´®àµ€à´•à´°à´¿à´¯àµà´•àµà´•àµà´¨àµà´¨à´¤à´¿à´¨à´¾à´¯à´¿ à´ˆ à´ªà´¾à´•àµà´•àµ‡à´œàµà´•à´³àµâ€ à´¨à´¿à´™àµà´™à´³àµ† à´…à´¨àµà´µà´¦à´¿à´•àµà´•àµà´¨àµà´¨àµ.</description>
    <description xml:lang="mr">à¤¯à¤¾ à¤¸à¤‚à¤•à¥à¤²à¤¾à¤‚à¤¦à¥à¤µà¤°à¥‡ à¤¤à¥à¤®à¥à¤¹à¥€ IMAP à¤•à¤¿à¤‚à¤µà¤¾ SMTP à¤Ÿà¤ªà¤¾à¤² à¤¸à¥‡à¤µà¤• à¤µà¥à¤¯à¥‚à¤¹à¤°à¤šà¤¿à¤¤ à¤•à¤°à¥‚ à¤¶à¤•à¤¤à¤¾.</description>
    <description xml:lang="ms">Pakej ini membenarkan anda untuk menentutetap pelayan mel IMAP atau SMTP.</description>
    <description xml:lang="nb">Disse pakkene lar deg konfigurere en IMAP eller SMTP e-posttjener.</description>
    <description xml:lang="ne">à¤¯à¥€ à¤ªà¥à¤¯à¤¾à¤•à¥‡à¤œà¤²à¥‡ à¤¤à¤ªà¤¾à¤ˆà¤à¤²à¤¾à¤ˆ IMAP à¤µà¤¾ SMTP à¤®à¥‡à¤² à¤¸à¤°à¥à¤­à¤° à¤•à¤¨à¥à¤«à¤¿à¤—à¤° à¤—à¤°à¥à¤¨ à¤…à¤¨à¥à¤®à¤¤à¤¿ à¤¦à¤¿à¤¨à¥à¤›à¤¨à¥ à¥¤</description>
    <description xml:lang="nl">Met deze pakketten kunt u een IMAP of SMTP e-mailserver configureren.</description>
    <description xml:lang="no">Disse pakkene lar deg konfigurere en IMAP eller Postfix eposttjener.</description>
    <description xml:lang="or">à¬à¬¹à¬¿ à¬ªà­à¬¯à¬¾à¬•à­‡à¬œ à¬—à­à¬¡à¬¿à¬• à¬†à¬ªà¬£à¬™à­à¬•à­ à¬—à­‹à¬Ÿà¬¿à¬ IMAP à¬•à¬¿à¬®à­à¬¬à¬¾ SMTP à¬¡à¬¾à¬• à¬¸à­‡à¬¬à¬• à¬° à¬¬à¬¿à¬¨à­à¬¯à¬¾à¬¸ à¬•à¬°à¬¿à¬¬à¬¾ à¬ªà¬¾à¬‡à¬ à¬…à¬¨à­à¬®à¬¤à¬¿ à¬ªà­à¬°à¬¦à¬¾à¬¨ à¬•à¬°à¬¿ à¬¥à¬¾à¬†à¬¨à­à¬¤à¬¿</description>
    <description xml:lang="pa">à¨‡à¨¸ à¨ªà©ˆà¨•à©‡à¨œ à¨¤à©à¨¹à¨¾à¨¨à©‚à©° à¨‡à©±à¨• IMAP à¨œà¨¾à¨‚ SMTP à¨®à©‡à¨² à¨¸à¨°à¨µà¨° à¨¦à©€ à¨¸à©°à¨°à¨šà¨¨à¨¾ à¨•à¨°à¨¨ à¨µà¨¿à©±à¨š à¨¸à¨¹à¨¾à¨‡à¨• à¨¶à¨¾à¨®à¨¿à¨² à¨¹à¨¨à¥¤</description>
    <description xml:lang="pl">Te pakiety umoÅ¼liwiajÄ… skonfigurowanie serwera pocztowego IMAP lub SMTP.</description>
    <description xml:lang="pt">Este pacotes permitem-lhe configurar um servidores de mail IMAP ou SMTP.</description>
    <description xml:lang="pt_BR">Este pacotes permitem-lhe configurar um servidores de mail IMAP ou SMTP.</description>
    <description xml:lang="ro">Aceste pachete vÄƒ permit sÄƒ configuraÅ£i un server de mail IMAP sau SMTP.</description>
    <description xml:lang="ru">Ð­Ñ‚Ð¸ Ð¿Ð°ÐºÐµÑ‚Ñ‹ Ð¿Ð¾Ð·Ð²Ð¾Ð»ÑÑŽÑ‚ Ð½Ð°ÑÑ‚Ñ€Ð¾Ð¸Ñ‚ÑŒ Ð¿Ð¾Ñ‡Ñ‚Ð¾Ð²Ñ‹Ð¹ ÑÐµÑ€Ð²ÐµÑ€ IMAP Ð¸Ð»Ð¸ SMTP.</description>
    <description xml:lang="si">IMAP à·„à· SMTP à·€à·’à¶¯à·Šâ€à¶ºà·”à¶­à·Š à¶­à·à¶´à·à¶½à·Š à·ƒà·šà·€à· à¶¯à·à¶ºà¶šà¶ºà¶±à·Š à¶¸à·à¶± à¶šà·’à¶»à·“à¶¸ à·ƒà¶³à·„à· à¶¸à·™à¶¸ à¶‡à·ƒà·”à¶»à·”à¶¸à·Š à¶‹à¶´à¶šà·à¶»à·“ à·€à·š.</description>
    <description xml:lang="sk">Tieto balÃ­Äky vÃ¡m umoÅ¾nia nakonfigurovaÅ¥ poÅ¡tovÃ½ server IMAP alebo SMTP.</description>
    <description xml:lang="sl">Ti paketi omogoÄajo nastavitev poÅ¡tnih streÅ¾nikov IMAP in SMTP.</description>
    <description xml:lang="sq">KÃ«to paketa ju lejojnÃ« tÃ« formÃ«soni njÃ« shÃ«rbyes poste IMAP ose SMTP.</description>
    <description xml:lang="sr">ÐžÐ²Ð¸ Ð¿Ð°ÐºÐµÑ‚Ð¸ Ð¾Ð¼Ð¾Ð³ÑƒÑ›Ð°Ð²Ð°Ñ˜Ñƒ Ð¿Ð¾Ð´ÐµÑˆÐ°Ð²Ð°ÑšÐµ IMAP Ð¸Ð»Ð¸ SMTP ÑÐµÑ€Ð²ÐµÑ€Ð° Ð·Ð° Ð¿Ð¾ÑˆÑ‚Ñƒ.</description>
    <description xml:lang="sr@Latn">Ovi paketi omoguÄ‡avaju podeÅ¡avanje IMAP ili SMTP servera za poÅ¡tu.</description>
    <description xml:lang="sr@latin">Ovi paketi omoguÄ‡avaju podeÅ¡avanje IMAP ili SMTP servera za poÅ¡tu.</description>
    <description xml:lang="sv">Dessa paket lÃ¥ter dig konfigurera en IMAP- eller SMTP-epostserver.</description>
    <description xml:lang="ta">à®‡à®¨à¯à®¤ à®¤à¯Šà®•à¯à®ªà¯à®ªà¯à®•à®³à¯ IMAP à®…à®²à¯à®²à®¤à¯ SMTP à®…à®žà¯à®šà®²à¯ à®šà¯‡à®µà¯ˆà®¯à®•à®¤à¯à®¤à¯ˆ à®•à®Ÿà¯à®Ÿà®®à¯ˆà®•à¯à®• à®…à®©à¯à®®à®¤à®¿à®•à¯à®•à®¿à®±à®¤à¯.</description>
    <description xml:lang="te">IMAP à°²à±‡à°• SMTP mail à°¸à°°à±à°µà°°à± à°†à°•à±ƒà°¤à±€à°•à°°à°£à°²à±‹ à°ˆ à°…à°¨à±à°µà°°à±à°¤à°¨à°¾à°²à± à°®à°¦à±à°¦à°¤à°¿à°¸à±à°¤à°¾à°¯à°¿.</description>
    <description xml:lang="tg">Ð˜Ð½ Ð±Ð°Ñ€Ð½Ð¾Ð¼Ð°Ò³Ð¾ Ð¸Ð¼ÐºÐ¾Ð½ Ð¼ÐµÐ´Ð¸Ò³Ð°Ð½Ð´, Ñ…Ð¸Ð´Ð¼Ð°Ñ‚Ð³Ð¾Ò³Ð¸ Ð¿Ð¾Ñ‡Ñ‚Ð°Ð¸ IMAP Ñ‘ SMTP -Ñ€Ð¾ Ñ‚Ð°Ð½Ð·Ð¸Ð¼ ÐºÑƒÐ½ÐµÐ´.</description>
    <description xml:lang="th">à¹à¸žà¹‡à¸à¹€à¸à¸ˆà¹€à¸«à¸¥à¹ˆà¸²à¸™à¸µà¹‰ à¸—à¸³à¹ƒà¸«à¹‰à¸„à¸¸à¸“à¸•à¸±à¹‰à¸‡à¸„à¹ˆà¸² IMAP à¸«à¸£à¸·à¸­à¸•à¸±à¸§à¹ƒà¸«à¹‰à¸šà¸£à¸´à¸à¸²à¸£à¹€à¸¡à¸¥ SMTP</description>
    <description xml:lang="tr">Bu paketler, bir IMAP ya da SMTP sunucusu yapÄ±landÄ±rmanÄ±nÄ±zÄ± mÃ¼mkÃ¼n kÄ±lar.</description>
    <description xml:lang="uk">Ð¦Ñ– Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¸ Ð´Ð¾Ð·Ð²Ð¾Ð»ÑÑŽÑ‚ÑŒ Ð½Ð°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ñ‚Ð¸ Ð¿Ð¾ÑˆÑ‚Ð¾Ð²Ð¸Ð¹ ÑÐµÑ€Ð²ÐµÑ€ IMAP Ñ‡Ð¸ SMTP.</description>
    <description xml:lang="ur"> Ø³Ø±ÙˆØ± Ø¨Ù†Ø§ Ø³Ú©ØªÛ’ ÛÛŒÚº IMAP Ø§ÙˆØ± SMTP Ø§Ù† Ù…Ø¬Ù…ÙˆØ¹Ø§Øª Ú©Û’ Ø²Ø±ÛŒØ¹Û’ Ø³Û’ Ø¢Ù¾</description>
    <description xml:lang="zh">é€™äº›å¥—ä»¶è®“æ‚¨å¯ä»¥è¨­å®š IMAP æˆ– SMTP éƒµä»¶ä¼ºæœå™¨ã€‚</description>
    <description xml:lang="zh_CN">è¿™äº›è½¯ä»¶åŒ…å…è®¸æ‚¨é…ç½® IMAP æˆ– Postfix é‚®ä»¶æœåŠ¡å™¨ã€‚</description>
    <description xml:lang="zh_TW">é€™äº›å¥—ä»¶è®“æ‚¨å¯ä»¥è¨­å®š IMAP æˆ– SMTP éƒµä»¶ä¼ºæœå™¨ã€‚</description>
    <default>true</default>
    <uservisible>false</uservisible>
    <packagelist>
      <packagereq type="default">dovecot</packagereq>
      <packagereq type="default">spamassassin</packagereq>
      <packagereq type="optional">cyrus-imapd</packagereq>
      <packagereq type="optional">dovecot-pigeonhole</packagereq>
      <packagereq type="optional">postfix-cdb</packagereq>
      <packagereq type="optional">postfix-ldap</packagereq>
      <packagereq type="optional">postfix-pcre</packagereq>
      <packagereq type="optional">postfix-sqlite</packagereq>
      <packagereq type="optional">sendmail</packagereq>
      <packagereq type="optional">sendmail-cf</packagereq>
      <packagereq type="optional">sendmail-doc</packagereq>
    </packagelist>
  </group>
  <group>
    <id>mainframe-access</id>
    <name>Mainframe Access</name>
    <name xml:lang="as">à¦®à§‡à¦‡à¦¨-à¦«à§à§°à§‡à¦® à¦¬à§à¦¯à§±à¦¹à¦¾à§°à§° à¦¸à§à¦¬à¦¿à¦§à¦¾</name>
    <name xml:lang="bn">à¦®à§‡à¦‡à¦¨-à¦«à§à¦°à§‡à¦® à¦¬à§à¦¯à¦¬à¦¹à¦¾à¦°à§‡à¦° à¦¸à§à¦¬à¦¿à¦§à¦¾</name>
    <name xml:lang="cs">PÅ™Ã­stup ke stÅ™ediskovÃ½m poÄÃ­taÄÅ¯m</name>
    <name xml:lang="de">Mainframe-Zugang</name>
    <name xml:lang="de_CH">Mainframe-Zugang</name>
    <name xml:lang="es">Acceso a marcos</name>
    <name xml:lang="fr">AccÃ¨s Ã  l'ordinateur central</name>
    <name xml:lang="gu">àª®à«‡àª‡àª¨àª«à«àª°à«‡àª® àªªà«àª°àªµà«‡àª¶</name>
    <name xml:lang="hi">à¤®à¥ˆà¤¨à¤«à¥à¤°à¥‡à¤® à¤ªà¤¹à¥à¤à¤š</name>
    <name xml:lang="ia">Accesso a computator central</name>
    <name xml:lang="it">Accesso mainframe</name>
    <name xml:lang="ja">ãƒ¡ã‚¤ãƒ³ãƒ•ãƒ¬ãƒ¼ãƒ ã‚¢ã‚¯ã‚»ã‚¹</name>
    <name xml:lang="kn">à²®à³ˆà²¨à³â€Œà²«à³à²°à³‡à²®à³ à²¨à²¿à²²à³à²•à²£à³†</name>
    <name xml:lang="ko">ë©”ì¸í”„ë ˆìž„ ì–µì„¸ìŠ¤</name>
    <name xml:lang="ml">à´®àµ†à´¯à´¿à´¨àµâ€à´«àµà´°àµ†à´¯à´¿à´‚ à´†à´•àµà´¸àµ†à´¸àµà´¸àµ</name>
    <name xml:lang="mr">Mainframe à¤ªà¥à¤°à¤µà¥‡à¤¶</name>
    <name xml:lang="or">Mainframe à¬…à¬­à¬¿à¬—à¬®à­à­Ÿà¬¤à¬¾</name>
    <name xml:lang="pa">à¨®à©‡à¨¨à¨«à¨°à©‡à¨® à¨ªà¨¹à©à©°à¨š</name>
    <name xml:lang="pl">DostÄ™p do systemÃ³w typu mainframe</name>
    <name xml:lang="pt">Acesso Ã  Mainframe</name>
    <name xml:lang="pt_BR">Acesso Ã  Mainframe</name>
    <name xml:lang="ru">Ð”Ð¾ÑÑ‚ÑƒÐ¿ Ðº Ð¼ÑÐ¹Ð½Ñ„Ñ€ÐµÐ¹Ð¼Ñƒ</name>
    <name xml:lang="sv">Ã…tkomst av stordatorer</name>
    <name xml:lang="ta">à®®à¯à®•à¯à®•à®¿à®¯à®ªà¯à®°à¯‡à®®à¯ à®…à®£à¯à®•à®²à¯</name>
    <name xml:lang="te">Mainframe à°¯à°¾à°•à±à°¸à±†à°¸à±</name>
    <name xml:lang="uk">Ð”Ð¾ÑÑ‚ÑƒÐ¿ Ð´Ð¾ Ð¼ÐµÐ¹Ð½Ñ„Ñ€ÐµÐ¹Ð¼Ñ–Ð²</name>
    <name xml:lang="zh">Mainframe å­˜å–</name>
    <name xml:lang="zh_CN">ä¸»æ¡†æž¶è®¿é—®</name>
    <name xml:lang="zh_TW">Mainframe å­˜å–</name>
    <description>Tools for accessing mainframe computing resources.</description>
    <description xml:lang="as">à¦®à§‡à¦‡à¦¨-à¦«à§à§°à§‡à¦® à¦•à¦®à¦ªà¦¿à¦‰à¦Ÿà¦¾à§°à§° à¦¬à¦¿à¦­à¦¿à¦¨à§à¦¨ à¦¸à¦¾à¦®à¦—à§à§°à§€ à¦¬à§à¦¯à§±à¦¹à¦¾à§°à§° à¦¸à¦à¦œà§à¦²à¦¿à¦¸à¦®à§‚à¦¹à¥¤</description>
    <description xml:lang="bn">à¦®à§‡à¦‡à¦¨-à¦«à§à¦°à§‡à¦® à¦•à¦®à§à¦ªà¦¿à¦‰à¦Ÿà¦¾à¦°à§‡à¦° à¦¬à¦¿à¦­à¦¿à¦¨à§à¦¨ à¦¸à¦¾à¦®à¦—à§à¦°à§€ à¦¬à§à¦¯à¦¬à¦¹à¦¾à¦°à§‡à¦° à¦¸à¦°à¦žà§à¦œà¦¾à¦®à¥¤</description>
    <description xml:lang="cs">NÃ¡stroje pro pÅ™Ã­stup k vÃ½poÄetnÃ­m zdrojÅ¯m stÅ™ediskovÃ½ch poÄÃ­taÄÅ¯.</description>
    <description xml:lang="de">Tools fÃ¼r den Zugriff auf Mainframe-Rechner-Ressourcen.</description>
    <description xml:lang="de_CH">Tools fÃ¼r den Zugriff auf Mainframe-Rechner-Ressourcen.</description>
    <description xml:lang="es">Herramientas para acceder a recursos de computaciÃ³n de marcho principal.</description>
    <description xml:lang="fr">Outils pour accÃ©der aux ressources informatiques de l'ordinateur central.</description>
    <description xml:lang="gu">àª®à«‡àª‡àª¨àª«à«àª°à«‡àª® àª•àª®à«àªªà«àª¯à«àªŸà«€àª‚àª— àª¸à«àª¤à«àª°à«‹àª¤à«‹àª¨àª¾àª‚ àªªà«àª°àªµà«‡àª¶ àª®àª¾àªŸà«‡àª¨àª¾àª‚ àª¸àª¾àª§àª¨à«‹.</description>
    <description xml:lang="hi">à¤®à¥‡à¤¨à¤«à¥à¤°à¥‡à¤® à¤•à¤‚à¤ªà¥à¤¯à¥‚à¤Ÿà¤¿à¤‚à¤— à¤¸à¤‚à¤¸à¤¾à¤§à¤¨ à¤•à¥‡ à¤²à¤¿à¤ à¤”à¤œà¤¾à¤°.</description>
    <description xml:lang="ia">Utensiles pro acceder ressources del computator central.</description>
    <description xml:lang="it">Tool per l'accesso alle risorse di programmazione del mainframe.</description>
    <description xml:lang="ja">ãƒ¡ã‚¤ãƒ³ãƒ•ãƒ¬ãƒ¼ãƒ ã‚³ãƒ³ãƒ”ãƒ¥ãƒ¼ãƒ†ã‚£ãƒ³ã‚°ãƒªã‚½ãƒ¼ã‚¹ã«ã‚¢ã‚¯ã‚»ã‚¹ã™ã‚‹ãŸã‚ã®ãƒ„ãƒ¼ãƒ«</description>
    <description xml:lang="kn">à²®à³ˆà²¨à³â€Œà²«à³à²°à³‡à²®à³ à²—à²£à²•à³€à²¯ à²¸à²‚à²ªà²¨à³à²®à³‚à²²à²—à²³à²¨à³à²¨à³ à²¨à²¿à²²à³à²•à²¿à²¸à²¿à²•à³Šà²³à³à²³à²²à³ à²¬à²³à²¸à²²à²¾à²—à³à²µ à²‰à²ªà²•à²°à²£à²—à²³à³.</description>
    <description xml:lang="ko">ë©”ì¸í”„ë ˆìž„ ì»´í“¨íŒ… ìžì›ì„ ì•¡ì„¸ìŠ¤í•˜ê¸° ìœ„í•œ íˆ´ </description>
    <description xml:lang="ml">à´®àµ†à´¯à´¿à´¨àµâ€à´«àµà´°àµ†à´¯à´¿à´‚ à´•à´®àµà´ªàµà´¯àµ‚à´Ÿàµà´Ÿà´¿à´™àµ à´±à´¿à´¸àµ‹à´´àµà´¸àµà´•à´³àµâ€ à´²à´­àµà´¯à´®à´¾à´•àµà´•àµà´¨àµà´¨à´¤à´¿à´¨àµà´³àµà´³ à´‰à´ªà´•à´°à´£à´™àµà´™à´³àµâ€.</description>
    <description xml:lang="mr">à¤®à¥ˆà¤¨à¤«à¥à¤°à¥‡à¤®à¥à¤¸à¥ à¤•à¤®à¥à¤ªà¥à¤¯à¥à¤Ÿà¤¿à¤‚à¤— à¤¸à¥à¤°à¥‹à¤¤à¤šà¥à¤¯à¤¾ à¤ªà¥à¤°à¤µà¥‡à¤¶à¤•à¤°à¥€à¤¤à¤¾ à¤¸à¤¾à¤§à¤¨à¥‡.</description>
    <description xml:lang="or">mainframe à¬—à¬£à¬¨à¬¾ à¬‰à¬¤à­à¬¸à¬—à­à¬¡à¬¼à¬¿à¬•à­ à¬…à¬­à¬¿à¬—à¬®à­à­Ÿ à¬•à¬°à¬¿à¬¬à¬¾ à¬ªà¬¾à¬‡à¬ à¬¸à¬¾à¬§à¬¨à¬—à­à¬¡à¬¼à¬¿à¬•à¥¤</description>
    <description xml:lang="pa">à¨®à©‡à¨¨à¨«à¨°à©‡à¨® à¨•à©°à¨ªà¨¿à¨Šà¨Ÿà¨¿à©°à¨— à¨¸à¨°à©‹à¨¤ à¨µà¨°à¨¤à¨£ à¨²à¨ˆ à¨Ÿà©‚à¨²à¥¤</description>
    <description xml:lang="pl">NarzÄ™dzia do uzyskiwania dostÄ™pu do zasobÃ³w obliczeniowych typu mainframe.</description>
    <description xml:lang="pt">Ferramentas para acessar os recursos de computaÃ§Ã£o de mainframe.</description>
    <description xml:lang="pt_BR">Ferramentas para acessar os recursos de computaÃ§Ã£o de mainframe.</description>
    <description xml:lang="ru">Ð¡Ñ€ÐµÐ´ÑÑ‚Ð²Ð° Ð´Ð¾ÑÑ‚ÑƒÐ¿Ð° Ðº Ð²Ñ‹Ñ‡Ð¸ÑÐ»Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ñ‹Ð¼ Ñ€ÐµÑÑƒÑ€ÑÐ°Ð¼ Ð¼ÑÐ¹Ð½Ñ„Ñ€ÐµÐ¹Ð¼Ð°.</description>
    <description xml:lang="sv">Verktyg fÃ¶r att komma Ã¥t resurser i stordatorer.</description>
    <description xml:lang="ta">à®•à®£à®¿à®©à®¿ à®®à®±à¯à®®à¯‚à®²à®™à¯à®•à®³à®¿à®©à¯ à®®à¯à®•à¯à®•à®¿à®¯ à®¤à®¿à®Ÿà¯à®Ÿà®¤à¯à®¤à¯ˆ à®…à®£à¯à®•à¯à®µà®¤à®±à¯à®•à®¾à®© à®•à®°à¯à®µà®¿à®•à®³à¯.</description>
    <description xml:lang="te">mainframe à°•à°‚à°ªà±à°¯à±‚à°Ÿà°¿à°‚à°—à± à°µà°¨à°°à±à°²à°¨à± à°¯à°¾à°•à±à°¸à±†à°¸à± à°šà±‡à°¯à±à°Ÿà°•à± à°¸à°¾à°§à°¨à°®à±à°²à±.</description>
    <description xml:lang="uk">ÐŸÑ€Ð¾Ð³Ñ€Ð°Ð¼Ð¸ Ð´Ð»Ñ Ð´Ð¾ÑÑ‚ÑƒÐ¿Ñƒ Ð´Ð¾ Ð¾Ð±Ñ‡Ð¸ÑÐ»ÑŽÐ²Ð°Ð»ÑŒÐ½Ð¸Ñ… Ð¿Ð¾Ñ‚ÑƒÐ¶Ð½Ð¾ÑÑ‚ÐµÐ¹ Ð²ÐµÐ»Ð¸ÐºÐ¸Ñ… Ð¾Ð±Ñ‡Ð¸ÑÐ»ÑŽÐ²Ð°Ð»ÑŒÐ½Ð¸Ñ… Ð¼Ð°ÑˆÐ¸Ð½ (Ð¼ÐµÐ¹Ð½Ñ„Ñ€ÐµÐ¹Ð¼Ñ–Ð²).</description>
    <description xml:lang="zh">å­˜å– mainframe é‹ç®—è³‡æºçš„å·¥å…·ã€‚</description>
    <description xml:lang="zh_CN">è®¿é—®ä¸»æ¡†æž¶è®¡ç®—æºçš„å·¥å…·ã€‚</description>
    <description xml:lang="zh_TW">å­˜å– mainframe é‹ç®—è³‡æºçš„å·¥å…·ã€‚</description>
    <default>true</default>
    <uservisible>false</uservisible>
    <packagelist>
      <packagereq type="default">x3270-x11</packagereq>
    </packagelist>
  </group>
  <group>
    <id>multimedia</id>
    <name>Multimedia</name>
    <name xml:lang="ar">ÙˆØ³Ø§Ø¦Ø· Ù…ØªØ¹Ø¯Ø¯Ø©</name>
    <name xml:lang="as">à¦®à¦¾à¦²à§à¦Ÿà¦¿à¦®à¦¿à¦¡à¦¿à§Ÿà¦¾</name>
    <name xml:lang="bn">à¦®à¦¾à¦²à§à¦Ÿà¦¿-à¦®à¦¿à¦¡à¦¿à§Ÿà¦¾</name>
    <name xml:lang="bs">Multimedija</name>
    <name xml:lang="ca">MultimÃ¨dia</name>
    <name xml:lang="cs">MultimÃ©dia</name>
    <name xml:lang="cy">Amlgyfryngau</name>
    <name xml:lang="da">Multimedie</name>
    <name xml:lang="de">Multimedia</name>
    <name xml:lang="de_CH">Multimedia</name>
    <name xml:lang="en_GB">Multimedia</name>
    <name xml:lang="es">Multimedia</name>
    <name xml:lang="eu">Multimedia</name>
    <name xml:lang="fi">Multimedia</name>
    <name xml:lang="fr">MultimÃ©dia</name>
    <name xml:lang="gu">àª®àª²à«àªŸà«€àª®à«€àª¡àª¿àª¯àª¾</name>
    <name xml:lang="hi">à¤®à¤²à¥à¤Ÿà¥€à¤®à¥€à¤¡à¤¿à¤¯à¤¾</name>
    <name xml:lang="hr">Multimedija</name>
    <name xml:lang="hu">MultimÃ©dia</name>
    <name xml:lang="hy">Õ„Õ¸Ö‚Õ¬Õ¿Õ«Õ´Õ¥Õ¤Õ«Õ¡</name>
    <name xml:lang="id">Multimedia</name>
    <name xml:lang="it">Multimedia</name>
    <name xml:lang="ja">ãƒžãƒ«ãƒãƒ¡ãƒ‡ã‚£ã‚¢</name>
    <name xml:lang="ka">áƒ›áƒ£áƒšáƒ¢áƒ˜áƒ›áƒ”áƒ“áƒ˜áƒ</name>
    <name xml:lang="kn">à²®à²²à³à²Ÿà²¿à²®à³€à²¡à²¿à²¯à²¾</name>
    <name xml:lang="ko">ë©€í‹°ë¯¸ë””ì–´</name>
    <name xml:lang="lv">Multimedija</name>
    <name xml:lang="ml">à´®à´³àµâ€à´Ÿàµà´Ÿà´¿à´®àµ€à´¡à´¿à´¯à´¾</name>
    <name xml:lang="mr">à¤®à¤²à¥à¤Ÿà¤¿à¤®à¤¿à¤¡à¥€à¤¯à¤¾</name>
    <name xml:lang="or">à¬à¬•à¬¾à¬§à¬¿à¬• à¬ªà­à¬°à¬¸à¬¾à¬° à¬®à¬¾à¬§à­à¬¯à¬®</name>
    <name xml:lang="pa">à¨®à¨²à¨Ÿà©€à¨®à©€à¨¡à©€à¨†</name>
    <name xml:lang="pl">Multimedia</name>
    <name xml:lang="pt">MultimÃ­dia</name>
    <name xml:lang="pt_BR">MultimÃ­dia</name>
    <name xml:lang="ru">ÐœÑƒÐ»ÑŒÑ‚Ð¸Ð¼ÐµÐ´Ð¸Ð°</name>
    <name xml:lang="si">à¶¶à·„à·” à¶¸à·à¶°à·Šâ€à¶º</name>
    <name xml:lang="sl">VeÄpredstavnost</name>
    <name xml:lang="sq">Multimedia</name>
    <name xml:lang="sv">Multimedia</name>
    <name xml:lang="ta">à®ªà®²à¯à®²à¯‚à®Ÿà®•à®®à¯</name>
    <name xml:lang="te">à°¬à°¹à±à°³à°®à°¾à°¦à±à°¯à°®à°‚</name>
    <name xml:lang="th">à¸¡à¸±à¸¥à¸•à¸´à¸¡à¸µà¹€à¸”à¸µà¸¢</name>
    <name xml:lang="tr">Ã‡oklu Ortam</name>
    <name xml:lang="uk">ÐœÑƒÐ»ÑŒÑ‚Ð¸Ð¼ÐµÐ´Ñ–Ð°</name>
    <name xml:lang="zh">å¤šåª’é«”</name>
    <name xml:lang="zh_CN">å¤šåª’ä½“</name>
    <name xml:lang="zh_TW">å¤šåª’é«”</name>
    <description>Audio/video framework common to desktops</description>
    <description xml:lang="de">Audio/Video-Framework, das auf Desktops Ã¼blich ist</description>
    <description xml:lang="es">Marco de trabajo de audio/vÃ­deo comÃºn a los ordenadores de sobremesa</description>
    <description xml:lang="fr">Environnement audio/vidÃ©o commun aux bureaux.</description>
    <description xml:lang="it">Struttura audio/video comune ai desktop</description>
    <description xml:lang="ja">ãƒ‡ã‚¹ã‚¯ãƒˆãƒƒãƒ—ã«å…±é€šã®ã‚ªãƒ¼ãƒ‡ã‚£ã‚ªï¼ãƒ“ãƒ‡ã‚ªãƒ•ãƒ¬ãƒ¼ãƒ ãƒ¯ãƒ¼ã‚¯</description>
    <description xml:lang="ko">ë°ìŠ¤í¬íƒ‘ ìš© ë²”ìš© ì˜¤ë””ì–´/ë¹„ë””ì˜¤ í”„ë ˆìž„ì›ŒíŠ¸ </description>
    <description xml:lang="pt_BR">Estrutura de Ã¡udio/vÃ­deo comum a desktops</description>
    <description xml:lang="ru">ÐÑƒÐ´Ð¸Ð¾/Ð²Ð¸Ð´ÐµÐ¾ Ñ€Ð°Ð¼ÐºÐ¸, Ð¾Ð±Ñ‰Ð¸Ðµ Ð´Ð»Ñ Ð½Ð°ÑÑ‚Ð¾Ð»ÑŒÐ½Ñ‹Ñ… ÐºÐ¾Ð¼Ð¿ÑŒÑŽÑ‚ÐµÑ€Ð¾Ð²</description>
    <description xml:lang="zh_CN">æ¡Œé¢é€šç”¨çš„éŸ³é¢‘/è§†é¢‘æ¡†æž¶ã€‚</description>
    <description xml:lang="zh_TW">æ¡Œé¢å¸¸è¦‹çš„éŸ³é »/è¦–é »æ¡†æž¶</description>
    <default>true</default>
    <uservisible>false</uservisible>
    <packagelist>
      <packagereq type="mandatory">PackageKit-gstreamer-plugin</packagereq>
      <packagereq type="mandatory">alsa-plugins-pulseaudio</packagereq>
      <packagereq type="mandatory">alsa-ucm</packagereq>
      <packagereq type="mandatory">alsa-utils</packagereq>
      <packagereq type="mandatory">gstreamer1-plugins-bad-free</packagereq>
      <packagereq type="mandatory">gstreamer1-plugins-good</packagereq>
      <packagereq type="mandatory">gstreamer1-plugins-ugly-free</packagereq>
      <packagereq type="mandatory">pulseaudio</packagereq>
      <packagereq type="mandatory">pulseaudio-module-x11</packagereq>
      <packagereq type="mandatory">pulseaudio-utils</packagereq>
      <packagereq type="optional">pavucontrol</packagereq>
    </packagelist>
  </group>
  <group>
    <id>network-file-system-client</id>
    <name>Network File System Client</name>
    <name xml:lang="as">à¦¨à§‡à¦Ÿà§±à¦¾à§°à§à¦• à¦«à¦¾à¦‡à¦² à¦šà¦¿à¦¸à§à¦Ÿà§‡à¦® à¦•à§à¦²à¦¾à¦à¦¨à§à¦Ÿ</name>
    <name xml:lang="cs">Klient pro sÃ­Å¥ovÃ½ souborovÃ½ systÃ©m</name>
    <name xml:lang="de">Network File System Client</name>
    <name xml:lang="de_CH">Network File System Client</name>
    <name xml:lang="es">Cliente de sistema de archivos de red</name>
    <name xml:lang="fr">Client NFS</name>
    <name xml:lang="gu">àª¨à«‡àªŸàªµàª°à«àª• àª«àª¾àª‡àª² àª¸àª¿àª¸à«àªŸàª® àª•à«àª²àª¾àª¯àª¨à«àªŸ</name>
    <name xml:lang="hi">à¤¸à¤‚à¤œà¤¾à¤² à¤«à¤¾à¤‡à¤² à¤¤à¤‚à¤¤à¥à¤° à¤•à¥à¤²à¤¾à¤‡à¤‚à¤Ÿ</name>
    <name xml:lang="it">Client del file system di rete</name>
    <name xml:lang="ja">ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ãƒ•ã‚¡ã‚¤ãƒ«ã‚·ã‚¹ãƒ†ãƒ ã‚¯ãƒ©ã‚¤ã‚¢ãƒ³ãƒˆ</name>
    <name xml:lang="kn">à²œà²¾à²² à²•à²¡à²¤ à²µà³à²¯à²µà²¸à³à²¥à³† à²•à³à²²à³ˆà²‚à²Ÿà³</name>
    <name xml:lang="ko">ë„¤íŠ¸ì›Œí¬ íŒŒì¼ ì‹œìŠ¤í…œ í´ë¼ì´ì–¸íŠ¸</name>
    <name xml:lang="ml">à´¨àµ†à´±àµà´±àµâ€Œà´µà´°àµâ€à´•àµà´•àµ à´«à´¯à´²àµâ€ à´¸à´¿à´¸àµà´±àµà´±à´‚ à´•àµà´²à´¯à´¨àµà´±àµ</name>
    <name xml:lang="mr">à¤¨à¥‡à¤Ÿà¤µà¤°à¥à¤• à¤«à¤¾à¤‡à¤² à¤¸à¤¿à¤¸à¥à¤Ÿà¤® à¤•à¥à¤²à¤¾à¤à¤‚à¤Ÿ</name>
    <name xml:lang="or">à¬¨à­‡à¬Ÿà­±à¬°à­à¬• à¬«à¬¾à¬‡à¬²à¬¤à¬¨à­à¬¤à­à¬° à¬•à­à¬²à¬¾à¬à¬£à­à¬Ÿ</name>
    <name xml:lang="pa">à¨¨à©ˆà©±à¨Ÿà¨µà¨°à¨• à¨«à¨¾à¨ˆà¨² à¨¸à¨¿à¨¸à¨Ÿà¨® à¨•à¨²à¨¾à¨ˆà¨‚à¨Ÿ</name>
    <name xml:lang="pl">Klient sieciowego systemu plikÃ³w</name>
    <name xml:lang="pt">Cliente de Sistema de Arquivo de Rede</name>
    <name xml:lang="pt_BR">Cliente de Sistema de Arquivo de Rede</name>
    <name xml:lang="ru">ÐšÐ»Ð¸ÐµÐ½Ñ‚ NFS</name>
    <name xml:lang="ta">à®ªà®¿à®£à¯ˆà®¯ à®•à¯‹à®ªà¯à®ªà¯ à®®à¯à®±à¯ˆà®®à¯ˆ à®•à®¿à®³à¯ˆà®¯à®©à¯</name>
    <name xml:lang="te">à°¨à±†à°Ÿà±à°µà°°à±à°•à± à°«à±ˆà°²à± à°¸à°¿à°¸à±à°Ÿà°®à± à°•à±à°²à±ˆà°‚à°Ÿà±</name>
    <name xml:lang="uk">ÐšÐ»Ñ–Ñ”Ð½Ñ‚ Ð¼ÐµÑ€ÐµÐ¶ÐµÐ²Ð¸Ñ… Ñ„Ð°Ð¹Ð»Ð¾Ð²Ð¸Ñ… ÑÐ¸ÑÑ‚ÐµÐ¼</name>
    <name xml:lang="zh">ç¶²è·¯æª”æ¡ˆç³»çµ±å®¢æˆ¶ç«¯</name>
    <name xml:lang="zh_CN">ç½‘ç»œæ–‡ä»¶ç³»ç»Ÿå®¢æˆ·ç«¯</name>
    <name xml:lang="zh_TW">ç¶²è·¯æª”æ¡ˆç³»çµ±å®¢æˆ¶ç«¯</name>
    <description>Enables the system to attach to network storage.</description>
    <description xml:lang="as">à¦¨à§‡à¦Ÿà§±à¦¾à§°à§à¦• à¦¸à¦‚à§°à¦•à§à¦·à¦£à§° à¦¸à§ˆà¦¤à§‡ à¦•à¦®à¦ªà¦¿à¦‰à¦Ÿà¦¾à§°à¦• à¦¸à¦‚à¦¯à§à¦•à§à¦¤ à¦•à§°à¦¾à§° à¦¸à§à¦¬à¦¿à¦§à¦¾ à¦‰à¦ªà¦²à¦¬à§à¦§ à¦•à§°à¦¾ à¦¹à§Ÿà¥¤</description>
    <description xml:lang="bn">à¦¨à§‡à¦Ÿà¦“à§Ÿà¦¾à¦°à§à¦• à¦¸à¦‚à¦—à§à¦°à¦¹à¦¸à§à¦¥à¦²à§‡à¦° à¦¸à¦¾à¦¥à§‡ à¦•à¦®à§à¦ªà¦¿à¦‰à¦Ÿà¦¾à¦° à¦¸à¦‚à¦¯à§à¦•à§à¦¤ à¦•à¦°à¦¾à¦° à¦¸à§à¦¬à¦¿à¦§à¦¾ à¦‰à¦ªà¦²à¦¬à§à¦§ à¦•à¦°à¦¾ à¦¹à§Ÿà¥¤</description>
    <description xml:lang="cs">UmoÅ¾Åˆuje pÅ™ipojit poÄÃ­taÄ k sÃ­Å¥ovÃ©mu ÃºloÅ¾iÅ¡ti.</description>
    <description xml:lang="de">ErmÃ¶glicht dem System die Anbindung an Netzwerk-Storage.</description>
    <description xml:lang="de_CH">ErmÃ¶glicht dem System die Anbindung an Netzwerk-Storage.</description>
    <description xml:lang="es">Permite al sistema conectarse a un almacenamiento de red.</description>
    <description xml:lang="fr">Permet au systÃ¨me de s'attacher au stockage rÃ©seau.</description>
    <description xml:lang="gu">àª¨à«‡àªŸàªµàª°à«àª• àª¸àª‚àª—à«àª°àª¹ àª¸àª¾àª¥à«‡ àªœà«‹àª¡àª¾àªµàª¾ àª¸àª¿àª¸à«àªŸàª®àª¨à«‡ àª¸àª•à«àª°àª¿àª¯ àª•àª°à«‡ àª›à«‡.</description>
    <description xml:lang="hi">à¤¸à¤‚à¤œà¤¾à¤² à¤­à¤‚à¤œà¤¾à¤° à¤®à¥‡à¤‚ à¤œà¥à¤¡à¤¼à¤¨à¥‡ à¤•à¥‡ à¤²à¤¿à¤ à¤¤à¤‚à¤¤à¥à¤° à¤•à¥‹ à¤¸à¤•à¥à¤°à¤¿à¤¯ à¤•à¤°à¤¤à¤¾ à¤¹à¥ˆ.</description>
    <description xml:lang="ia">Illo permitte al systema de attaccar se al immagazinage de rete.</description>
    <description xml:lang="it">Permette al sistema di collegarsi allo storage della rete.</description>
    <description xml:lang="ja">ã‚·ã‚¹ãƒ†ãƒ ãŒãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ã‚¹ãƒˆãƒ¬ãƒ¼ã‚¸ã«æŽ¥ç¶šã§ãã‚‹ã‚ˆã†ã«ã—ã¾ã™ã€‚</description>
    <description xml:lang="kn">à²œà²¾à²²à²¬à²‚à²§ à²¶à³‡à²–à²°à²£à³†à²¯à³Šà²‚à²¦à²¿à²—à³† à²µà³à²¯à²µà²¸à³à²¥à³†à²¯à³Šà²‚à²¦à²¿à²—à³† à²²à²—à²¤à³à²¤à²¿à²¸à³à²µà³à²¦à²¨à³à²¨à³ à²¶à²•à³à²¤à²—à³Šà²³à²¿à²¸à³à²¤à³à²¤à²¦à³†.</description>
    <description xml:lang="ko">ë„¤íŠ¸ì›Œí¬ ì €ìž¥ì†Œì— ì‹œìŠ¤í…œì„ ë¶™ì´ë„ë¡ í•¨</description>
    <description xml:lang="ml">à´¨àµ†à´±àµà´±àµâ€Œà´µà´°àµâ€à´•àµà´•àµ à´¸àµà´±àµà´±àµ‹à´±àµ‡à´œà´¿à´²àµ‡à´•àµà´•àµ à´šàµ‡à´°àµà´µà´¾à´¨àµâ€ à´¸à´¿à´¸àµà´±àµà´±à´¤àµà´¤à´¿à´¨àµ† à´¸à´œàµà´œà´®à´¾à´•àµà´•àµà´¨àµà´¨àµ.</description>
    <description xml:lang="mr">à¤¨à¥‡à¤Ÿà¤µà¤°à¥à¤• à¤¸à¥à¤Ÿà¥‹à¤°à¥‡à¤œà¤¸à¤¹ à¤œà¥‹à¤¡à¤£à¥€à¤•à¤°à¥€à¤¤à¤¾ à¤ªà¥à¤°à¤£à¤¾à¤²à¥€à¤²à¤¾ à¤¸à¤®à¤°à¥à¤¥à¥€à¤¤ à¤•à¤°à¤¤à¥‹.</description>
    <description xml:lang="or">à¬¨à­‡à¬Ÿà­±à¬°à­à¬• à¬¸à¬‚à¬°à¬•à­à¬·à¬£ à¬¸à¬¹à¬¿à¬¤ à¬¸à¬‚à¬²à¬—à­à¬¨ à¬¹à­‡à¬¬à¬¾ à¬ªà¬¾à¬‡à¬ à¬¤à¬¨à­à¬¤à­à¬°à¬•à­ à¬¸à¬•à­à¬°à¬¿à­Ÿ à¬•à¬°à¬¨à­à¬¤à­à¥¤</description>
    <description xml:lang="pa">à¨¸à¨¿à¨¸à¨Ÿà¨® à¨¨à©‚à©° à¨¨à©ˆà©±à¨Ÿà¨µà¨°à¨• à¨¸à¨Ÿà©‹à¨°à©‡à¨® à¨¨à¨¾à¨² à¨œà©à©œà¨¨ à¨²à¨ˆ à¨¯à©‹à¨— à¨•à¨°à¨¦à¨¾ à¨¹à©ˆà¥¤</description>
    <description xml:lang="pl">UmoÅ¼liwia systemowi podÅ‚Ä…czanie sieciowych pamiÄ™ci masowych.</description>
    <description xml:lang="pt">Permite que o sistema anexe ao armazenamento de rede.</description>
    <description xml:lang="pt_BR">Permite que o sistema anexe ao armazenamento de rede.</description>
    <description xml:lang="ru">ÐžÐ±ÐµÑÐ¿ÐµÑ‡Ð¸Ð²Ð°ÐµÑ‚ Ð¿Ð¾Ð´ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ðµ ÑÐ¸ÑÑ‚ÐµÐ¼Ñ‹ Ðº ÑÐµÑ‚ÐµÐ²Ð¾Ð¼Ñƒ Ñ…Ñ€Ð°Ð½Ð¸Ð»Ð¸Ñ‰Ñƒ.</description>
    <description xml:lang="sv">GÃ¶r att systemet kan ansluta till nÃ¤tverkslagring.</description>
    <description xml:lang="ta">à®ªà®¿à®£à¯ˆà®¯ à®šà¯‡à®®à®¿à®ªà®•à¯à®•à®¤à¯à®¤à¯à®Ÿà®©à¯ à®•à®£à®¿à®©à®¿à®¯à¯ˆ à®‡à®£à¯ˆà®•à¯à®• à®šà¯†à®¯à®²à¯à®ªà®Ÿà¯à®•à®¿à®±à®¤à¯.</description>
    <description xml:lang="te">à°¸à°¿à°¸à±à°Ÿà°®à± à°¨à±†à°Ÿà±à°µà°°à±à°•à± à°¨à°¿à°²à±à°µà°¨à°•à± à°…à°¨à±à°­à°‚à°¦à°¿à°‚à°ªà°¬à°¡à±à°¨à°Ÿà±à°²à± à°šà±‡à°¤à°¨à°®à±à°šà±‡à°¯à±à°¨à±.</description>
    <description xml:lang="uk">ÐÐ°Ð´Ð°Ñ” Ð·Ð¼Ð¾Ð³Ñƒ Ð´Ð¾Ð»ÑƒÑ‡Ð°Ñ‚Ð¸ ÑÐ¸ÑÑ‚ÐµÐ¼Ñƒ Ð´Ð¾ Ð¼ÐµÑ€ÐµÐ¶ÐµÐ²Ð¾Ð³Ð¾ ÑÑ…Ð¾Ð²Ð¸Ñ‰Ð° Ð´Ð°Ð½Ð¸Ñ….</description>
    <description xml:lang="zh">è®“ç³»çµ±å¯é€£è‡³ç¶²è·¯å„²å­˜è£ç½®ã€‚</description>
    <description xml:lang="zh_CN">å¯ç”¨è¯¥ç³»ç»Ÿé™„åŠ åˆ°ç½‘ç»œå­˜å‚¨ã€‚</description>
    <description xml:lang="zh_TW">è®“ç³»çµ±å¯é€£è‡³ç¶²è·¯å„²å­˜è£ç½®ã€‚</description>
    <default>true</default>
    <uservisible>false</uservisible>
    <packagelist>
      <packagereq type="mandatory">cgdcbxd</packagereq>
      <packagereq type="mandatory">targetcli</packagereq>
    </packagelist>
  </group>
  <group>
    <id>network-server</id>
    <name>Network Servers</name>
    <name xml:lang="af">Netwerkbedieners</name>
    <name xml:lang="am">á‹¨áˆ˜áˆ¨á‰¥ áˆ°áˆ­á‰¨áˆ­</name>
    <name xml:lang="ar">Ø®ÙˆØ§Ø¯Ù… Ø§Ù„Ø´Ø¨ÙƒØ©</name>
    <name xml:lang="as">à¦¨à§‡à¦Ÿà§±à¦¾à§°à§à¦• à¦šà¦¾à§°à§à¦­à¦¾à§°à¦¸à¦®à§‚à¦¹</name>
    <name xml:lang="bal">Ø³Ø±ÙˆØ±Ø§Ù† Ø´Ø¨Ú©Ù‡ </name>
    <name xml:lang="be">Ð¡ÐµÑ‚ÐºÐ°Ð²Ñ‹Ñ Ð¿Ð°ÑÐ»ÑƒÐ³Ñ–</name>
    <name xml:lang="bg">ÐœÑ€ÐµÐ¶Ð¾Ð²Ð¸ ÑÑŠÑ€Ð²ÑŠÑ€Ð¸</name>
    <name xml:lang="bn">à¦¨à§‡à¦Ÿà¦“à§Ÿà¦¾à¦°à§à¦• à¦¸à¦¾à¦°à§à¦­à¦¾à¦°</name>
    <name xml:lang="bs">MreÅ¾ni posluÅ¾itelji</name>
    <name xml:lang="ca">Servidors de xarxa</name>
    <name xml:lang="cs">SÃ­Å¥ovÃ© servery</name>
    <name xml:lang="cy">Gweinyddion Rhwydwaith</name>
    <name xml:lang="da">NetvÃ¦rksservere</name>
    <name xml:lang="de">Netzwerk-Server</name>
    <name xml:lang="de_CH">Netzwerk-Server</name>
    <name xml:lang="el">Î•Î¾Ï…Ï€Î·ÏÎµÏ„Î·Ï„Î­Ï‚ Î´Î¹ÎºÏ„ÏÎ¿Ï…</name>
    <name xml:lang="en_GB">Network Servers</name>
    <name xml:lang="es">Servidores de red</name>
    <name xml:lang="et">VÃµrguserverid</name>
    <name xml:lang="fa">Ú©Ø§Ø±Ú¯Ø²Ø§Ø±Ù‡Ø§ÛŒ Ø´Ø¨Ú©Ù‡</name>
    <name xml:lang="fa_IR">Ú©Ø§Ø±Ú¯Ø²Ø§Ø±Ù‡Ø§ÛŒ Ø´Ø¨Ú©Ù‡</name>
    <name xml:lang="fi">Verkkopalvelimet</name>
    <name xml:lang="fr">Serveurs de rÃ©seau</name>
    <name xml:lang="gl">Servidores de rede</name>
    <name xml:lang="gu">àª¨à«‡àªŸàªµàª°à«àª• àª¸àª°à«àªµàª°à«‹</name>
    <name xml:lang="he">×©×¨×ª×™ ×¨×©×ª</name>
    <name xml:lang="hi">à¤¸à¤‚à¤œà¤¾à¤² à¤¸à¤°à¥à¤µà¤°</name>
    <name xml:lang="hr">MreÅ¾ni posluÅ¾itelji</name>
    <name xml:lang="hu">HÃ¡lÃ³zati kiszolgÃ¡lÃ³k</name>
    <name xml:lang="hy">Õ‘Õ¡Õ¶ÖÕ¡ÕµÕ«Õ¶ Õ½Õ¥Ö€Õ¾Õ¥Ö€Õ¶Õ¥Ö€</name>
    <name xml:lang="ia">Servitores de rete</name>
    <name xml:lang="id">Server Jaringan</name>
    <name xml:lang="ilo">Serbidor ti Iket</name>
    <name xml:lang="is">NetÃ¾jÃ³nustur</name>
    <name xml:lang="it">Server di rete</name>
    <name xml:lang="ja">ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ã‚µãƒ¼ãƒãƒ¼</name>
    <name xml:lang="ka">áƒ¥áƒ¡áƒ”áƒšáƒ£áƒ áƒ˜ áƒ¡áƒ”áƒ áƒ•áƒ”áƒ áƒ”áƒ‘áƒ˜</name>
    <name xml:lang="kn">à²œà²¾à²² à²ªà³‚à²°à³ˆà²•à³†à²—à²£à²•à²—à²³à³</name>
    <name xml:lang="ko">ë„¤íŠ¸ì›Œí¬ ì„œë²„</name>
    <name xml:lang="lv">TÄ«kla serveri</name>
    <name xml:lang="mai">à¤¸à¤‚à¤œà¤¾à¤² à¤¸à¤°à¥à¤µà¤°</name>
    <name xml:lang="mk">ÐœÑ€ÐµÐ¶Ð½Ð¸ ÑÐµÑ€Ð²ÐµÑ€Ð¸</name>
    <name xml:lang="ml">à´¨àµ†à´±àµà´±àµâ€Œà´µà´°àµâ€à´•àµà´•àµ à´¸à´°àµâ€à´µà´±àµà´•à´³àµâ€</name>
    <name xml:lang="mr">à¤¸à¤‚à¤œà¤¾à¤³ à¤¸à¥‡à¤µà¤¾</name>
    <name xml:lang="ms">Pelayan Rangkaian</name>
    <name xml:lang="nb">Nettverkstjener</name>
    <name xml:lang="ne">à¤¸à¤žà¥à¤œà¤¾à¤² à¤¸à¤°à¥à¤­à¤°</name>
    <name xml:lang="nl">Netwerkservers</name>
    <name xml:lang="no">Nettverkstjener</name>
    <name xml:lang="nso">Diabi tÅ¡a Neteweke</name>
    <name xml:lang="or">à¬¨à­‡à¬Ÿà­±à¬¾à¬°à­à¬• à¬¸à­‡à¬¬à¬•</name>
    <name xml:lang="pa">à¨¨à©ˆà©±à¨Ÿà¨µà¨°à¨• à¨¸à¨°à¨µà¨°</name>
    <name xml:lang="pl">Serwery sieciowe</name>
    <name xml:lang="pt">Servidores de Rede</name>
    <name xml:lang="pt_BR">Servidores de Rede</name>
    <name xml:lang="ro">Servere de reÅ£ea</name>
    <name xml:lang="ru">Ð¡ÐµÑ‚ÐµÐ²Ñ‹Ðµ ÑÐµÑ€Ð²ÐµÑ€Ñ‹</name>
    <name xml:lang="si">à¶¢à·à¶½ à·ƒà·šà·€à·à·€à¶±à·Š</name>
    <name xml:lang="sk">SieÅ¥ovÃ© servery</name>
    <name xml:lang="sl">OmreÅ¾ni streÅ¾niki</name>
    <name xml:lang="sq">ShÃ«rbyesa Rrjeti</name>
    <name xml:lang="sr">ÐœÑ€ÐµÐ¶Ð½Ð¸ ÑÐµÑ€Ð²ÐµÑ€Ð¸</name>
    <name xml:lang="sr@Latn">MreÅ¾ni serveri</name>
    <name xml:lang="sr@latin">MreÅ¾ni serveri</name>
    <name xml:lang="sv">NÃ¤tverksservrar</name>
    <name xml:lang="ta">à®ªà®¿à®£à¯ˆà®¯ à®šà¯‡à®µà¯ˆà®¯à®•à®™à¯à®•à®³à¯</name>
    <name xml:lang="te">à°¨à±†à°Ÿà±à°µà°°à±à°•à±â€ à°¸à°°à±à°µà°°à±</name>
    <name xml:lang="tg">Ð¥Ð¸Ð´Ð¼Ð°Ñ‚Ð³Ð¾Ò³Ò³Ð¾Ð¸ Ð˜Ð½Ñ‚ÐµÑ€Ð½ÐµÑ‚</name>
    <name xml:lang="th">à¸•à¸±à¸§à¹ƒà¸«à¹‰à¸šà¸£à¸´à¸à¸²à¸£à¹€à¸™à¹‡à¸•à¹€à¸§à¸´à¸£à¹Œà¸„</name>
    <name xml:lang="tr">AÄŸ SunucularÄ±</name>
    <name xml:lang="uk">ÐœÐµÑ€ÐµÐ¶Ð½Ñ– ÑÐ»ÑƒÐ¶Ð±Ð¸</name>
    <name xml:lang="ur">Ù†ÛŒÙ¹ÙˆØ±Ú© Ø³Ø±ÙˆØ³</name>
    <name xml:lang="vi">Server máº¡ng</name>
    <name xml:lang="zh">ç¶²è·¯ä¼ºæœå™¨</name>
    <name xml:lang="zh_CN">ç½‘ç»œæœåŠ¡å™¨</name>
    <name xml:lang="zh_TW">ç¶²è·¯ä¼ºæœå™¨</name>
    <name xml:lang="zu">Abalekeleli Boxhumano</name>
    <description>These packages include network-based servers such as DHCP, Kerberos and NIS.</description>
    <description xml:lang="af">Hierdie pakkette sluit netwerkgebaseerde bedieners soos DHCP, Kerberos en NIS in.</description>
    <description xml:lang="am">áŠ¥áŠá‹šáˆ… áŒ¥á‰…áˆŽá‰½ á‰ áˆ˜áˆ¨á‰¥ áˆ‹á‹­ á‹¨á‰°áˆ˜áˆ áˆ¨á‰± áŠ¥áŠ•á‹° DHCP, Kerberos áŠ¥áŠ“ NIS á‹«áˆ‰á‰µáŠ• áˆ°áˆ¨á‰¨áˆ®á‰½ á‹«áŒ á‰ƒáˆáˆ‹áˆ‰á¢</description>
    <description xml:lang="ar">Ù‡Ø°Ù‡ Ø§Ù„Ø­Ø²Ù… ØªØ­ØªÙˆÙŠ Ø¹Ù„Ù‰ Ø®ÙˆØ§Ø¯Ù… Ù„Ù„Ø´Ø¨ÙƒØ§Øª Ù…Ø«Ù„ DHCPØŒ ÙƒÙØ±Ù’Ø¨ÙŠØ±ÙˆØ³ØŒ Ùˆ NIS.</description>
    <description xml:lang="as">à¦à¦‡ à¦ªà§‡à¦•à§‡à¦‡à¦œà¦¸à¦®à§‚à¦¹ à¦¸à¦®à§‚à¦¹à¦¤ à¦…à¦¨à§à¦¤à§°à§à¦­à§à¦•à§à¦¤ à¦†à¦›à§‡ à¦¨à§‡à¦Ÿà§±à¦¾à§°à§à¦• à¦†à¦§à¦¾à§°à¦¿à¦¤ à¦šà¦¾à§°à§à¦­à¦¾à§° à¦¯à§‡à¦¨à§‡ DHCP, Kerberos à¦†à§°à§ NISà¥¤</description>
    <description xml:lang="bal"> Ø´ÛŒ Ø¨Ø±Ø³ØªÚ¯Ø§Ù†ÛŒ Ø´Ø§Ù…Ù„ Ø³Ø±ÙˆØ±Ø§Ù† Ù…Ø¨ØªÙ†ÛŒ Ù¾Ù‡ Ø´Ø¨Ú©Ù‡ Ù¾Ù‡ Ø¯Ø§Ø¨KerberosÙˆ NISÙˆ DHCP.</description>
    <description xml:lang="be">Ð“ÑÑ‚Ñ‹Ñ Ð¿Ð°ÐºÐµÑ‚Ñ‹ ÑžÑ‚Ñ€Ñ‹Ð¼Ð»Ñ–Ð²Ð°ÑŽÑ†ÑŒ ÑÐµÑ‚ÐºÐ°Ð²Ñ‹Ñ Ð¿Ð°ÑÐ»ÑƒÐ¶Ð½Ñ–ÐºÑ–. ÐÐ°Ð¿Ñ€Ñ‹ÐºÐ»Ð°Ð´ DHCP, Kerberos Ñ– NIS.</description>
    <description xml:lang="bg">Ð¢ÐµÐ·Ð¸ Ð¿Ð°ÐºÐµÑ‚Ð¸ Ð²ÐºÐ»ÑŽÑ‡Ð²Ð°Ñ‚ Ð¼Ñ€ÐµÐ¶Ð¾Ð²Ð¸ ÑÑŠÑ€Ð²ÑŠÑ€Ð¸ ÐºÐ°Ñ‚Ð¾ DHCP, Kerberos Ð¸ NIS.</description>
    <description xml:lang="bn">à¦à¦‡ à¦ªà§à¦¯à¦¾à¦•à§‡à¦œà¦—à§à¦²à¦¿à¦° à¦®à¦§à§à¦¯à§‡ DHCP, Kerberos à¦à¦¬à¦‚ NIS à¦ªà§à¦°à¦­à§ƒà¦¤à¦¿ à¦¨à§‡à¦Ÿà¦“à§Ÿà¦¾à¦°à§à¦• à¦­à¦¿à¦¤à§à¦¤à¦¿à¦• à¦¸à¦¾à¦°à§à¦­à¦¾à¦° à¦‰à¦ªà¦¸à§à¦¥à¦¿à¦¤ à¦°à§Ÿà§‡à¦›à§‡à¥¤</description>
    <description xml:lang="bs">Ovi paketi obuhvaÄ‡aju mreÅ¾ne posluÅ¾itelje poput DHCP, Kerberos i NIS.</description>
    <description xml:lang="ca">S'inclouen servidors de xarxa com ara el DHCP, Kerberos i NIS.</description>
    <description xml:lang="cs">Tyto balÃ­Äky obsahujÃ­ rÅ¯znÃ© servery vyuÅ¾Ã­vajÃ­cÃ­ sÃ­Å¥, napÅ™Ã­klad DHCP, Kerberos a NIS.</description>
    <description xml:lang="cy">Mae'r pecynnau yma'n cynnwys gweinyddion sail rhwydwaith megis DHCP, Kerberos ac NIS.</description>
    <description xml:lang="da">Disse pakker inkluderer netvÃ¦rksbaserede servere som fx DHCP, Kerberos og NIS.</description>
    <description xml:lang="de">Diese Pakete enthalten netzwerkbasierte Server wie DHCP, Kerberos und NIS.</description>
    <description xml:lang="de_CH">Diese Pakete enthalten netzwerkbasierte Server wie DHCP, Kerberos und NIS.</description>
    <description xml:lang="el">Î¤Î± Ï€Î±ÎºÎ­Ï„Î± Î±Ï…Ï„Î¬ Ï€ÎµÏÎ¹Î»Î±Î¼Î²Î¬Î½Î¿Ï…Î½ Î´Î¹ÎºÏ„Ï…Î±ÎºÎ¿ÏÏ‚ Î´Î¹Î±ÎºÎ¿Î¼Î¹ÏƒÏ„Î­Ï‚ ÏŒÏ€Ï‰Ï‚ DHCP, Kerberos ÎºÎ±Î¹ NIS.</description>
    <description xml:lang="en_GB">These packages include network-based servers such as DHCP, Kerberos and NIS.</description>
    <description xml:lang="es">Estos paquetes incluyen servidores basados en la red tales como DHCP, Kerberos y NIS.</description>
    <description xml:lang="et">Need paketid hÃµlmavad vÃµrgupÃµhiseid servereid nagu DHCP, Kerberos ja NIS.</description>
    <description xml:lang="fa">Ø§ÛŒÙ† Ø¨Ø³ØªÙ‡â€ŒÙ‡Ø§ Ø´Ø§Ù…Ù„ Ú©Ø§Ø±Ú¯Ø²Ø§Ø±Ù‡Ø§ÛŒ Ø´Ø¨Ú©Ù‡â€ŒØ§ÛŒ Ù…Ø«Ù„ DHCPØŒâ€ KerberosØŒ Ùˆ NIS Ù‡Ø³ØªÙ†Ø¯.</description>
    <description xml:lang="fa_IR">Ø§ÛŒÙ† Ø¨Ø³ØªÙ‡â€ŒÙ‡Ø§ Ø´Ø§Ù…Ù„ Ú©Ø§Ø±Ú¯Ø²Ø§Ø±Ù‡Ø§ÛŒ Ø´Ø¨Ú©Ù‡â€ŒØ§ÛŒ Ù…Ø«Ù„ DHCPØŒâ€ KerberosØŒ Ùˆ NIS Ù‡Ø³ØªÙ†Ø¯.</description>
    <description xml:lang="fi">NÃ¤mÃ¤ paketit sisÃ¤ltÃ¤vÃ¤t verkkopohjaiset palvelimet, kuten DHCP:n, Kerberosin ja NIS:n.</description>
    <description xml:lang="fr">Ces packages comprennent des serveurs basÃ©s sur le rÃ©seau comme DHCP, Kerberos et NIS.</description>
    <description xml:lang="gu">àª† àªªà«‡àª•à«‡àªœà«‹ àª¨à«‡àªŸàªµàª°à«àª• àª†àª§àª¾àª°àª¿àª¤ àª¸àª°à«àªµàª°à«‹ àªœà«‡àª® àª•à«‡ DHCP, àª•àª°à«àª¬àª°à«‹àª¸ àª…àª¨à«‡ NIS àª¸àª®àª¾àªµà«‡ àª›à«‡.</description>
    <description xml:lang="he">×—×‘×™×œ×•×ª ××œ×• ×ž×›×™×œ×•×ª ×©×¨×ª×™ ×¨×©×ª ×›×’×•×Ÿ DHCP, Kerberos, NIS.</description>
    <description xml:lang="hi">à¤‡à¤¨ à¤ªà¥ˆà¤•à¥‡à¤œ à¤®à¥‡à¤‚ DHCP, à¤•à¤°à¤¬à¤°à¥‹à¤¸ à¤”à¤° NIS à¤œà¥ˆà¤¸à¥‡ à¤¸à¤‚à¤œà¤¾à¤²-à¤†à¤§à¤¾à¤°à¤¿à¤¤ à¤¸à¤°à¥à¤µà¤° à¤¹à¥ˆà¤‚.</description>
    <description xml:lang="hr">Ovi paketi obuhvaÄ‡aju mreÅ¾ne posluÅ¾itelje poput DHCP, Kerberos i NIS.</description>
    <description xml:lang="hu">Ezekben a csomagokban hÃ¡lÃ³zati kiszolgÃ¡lÃ³k talÃ¡lhatÃ³k (pÃ©ldÃ¡ul DHCP, Kerberos Ã©s NIS).</description>
    <description xml:lang="ia">Iste pacchettos include servitores de rete tal como DHCP, Kerberos e NIS.</description>
    <description xml:lang="id">Di dalam paket-paket ini termasuk server berbasis jaringan seperti DHCP, karberos dan NIS.</description>
    <description xml:lang="is">Ãžessir pakkar innihalda netÃ¾jÃ³nustur eins og DHCP, Kerberos og NIS.</description>
    <description xml:lang="it">Questi pacchetti includono server basati sulla rete come ad esempio DHCP, Kerberos e NIS.</description>
    <description xml:lang="ja">ã“ã‚Œã‚‰ã®ãƒ‘ãƒƒã‚±ãƒ¼ã‚¸ã«ã¯ã€DHCPã€Kerberosã€NIS ãªã©ã® ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ãƒ™ãƒ¼ã‚¹ã®ã‚µãƒ¼ãƒãƒ¼ãŒå«ã¾ã‚Œã¦ã„ã¾ã™ã€‚</description>
    <description xml:lang="kn">à²ˆ à²ªà³à²¯à²¾à²•à³‡à²œà³â€à²—à²³à³ DHCP, Kerberos, NIS.à²®à³à²‚à²¤à²¾à²¦ à²œà²¾à²²à²ªà³‚à²°à³ˆà²•à³†à²—à²£à²• à²…à²¨à³à²µà²¯à²—à²³à²¨à³à²¨à³Šà²³à²—à³Šà²‚à²¡à²¿à²µà³†.</description>
    <description xml:lang="ko">ì´ íŒ¨í‚¤ì§€ì—ëŠ” DHCP, Kerberos, NISì™€ ê°™ì€ ë„¤íŠ¸ì›Œí¬-ê¸°ë°˜ ì„œë²„ê°€ í¬í•¨ë˜ì–´ ìžˆìŠµë‹ˆë‹¤.</description>
    <description xml:lang="lv">Å Ä«s pakotnes ietver tÄdus tÄ«kla servisus kÄ DHCP, Kerberos un NIS.</description>
    <description xml:lang="mai">à¤ˆ à¤ªà¥ˆà¤•à¥‡à¤œà¤®à¥‡ DHCP, à¤•à¤°à¤¬à¤°à¥‹à¤¸ à¤†à¤“à¤° NIS à¤œà¤¹à¤¿à¤¨à¤¾ à¤¸à¤‚à¤œà¤¾à¤²-à¤†à¤§à¤¾à¤°à¤¿à¤¤ à¤¸à¤°à¥à¤µà¤° à¤…à¤›à¤¿.</description>
    <description xml:lang="mk">ÐžÐ²</description>
    <description xml:lang="ml">DHCP, Kerberos, NIS à´Žà´¨àµà´¨àµ€ à´¨àµ†à´±àµà´±à´µà´°àµâ€à´•àµà´•àµ-à´¬àµ†à´¯àµà´¸àµà´Ÿàµ à´¸à´°àµâ€à´µà´±àµà´•à´³àµâ€ à´ˆ à´ªà´¾à´•àµà´•àµ‡à´œàµà´•à´³à´¿à´²àµâ€ à´‰à´²àµâ€à´ªàµà´ªàµ†à´Ÿàµà´¨àµà´¨àµ. </description>
    <description xml:lang="mr">à¤¯à¤¾ à¤¸à¤‚à¤•à¥à¤²à¤¾à¤‚à¤®à¤§à¥à¤¯à¥‡ à¤¸à¤‚à¤œà¤¾à¤³-à¤†à¤§à¤¾à¤°à¤¿à¤¤ à¤¸à¤°à¥à¤µà¥à¤¹à¤° à¤œà¤¸à¥‡ DHCP, à¤•à¥‡à¤°à¤¬à¥‡à¤°à¥‰à¤¸ à¤†à¤£à¤¿ NIS à¤¯à¤¾à¤‚à¤šà¤¾ à¤¸à¤®à¤¾à¤µà¥‡à¤¶ à¤¹à¥‹à¤¤à¥‹.</description>
    <description xml:lang="ms">Pakej ini termasuk pelayan berasaskan-rangkaian seperti  DHCP, Kerberos dan NIS.</description>
    <description xml:lang="nb">Disse pakkene inkluderer nettverks-baserte tjenere som DHCP, Kerberos og NIS.</description>
    <description xml:lang="ne">à¤¯à¥€ à¤ªà¥à¤¯à¤¾à¤•à¥‡à¤œà¤¹à¤°à¥‚à¤²à¥‡ à¤¸à¤žà¥à¤œà¤¾à¤² à¤†à¤§à¤¾à¤°à¤¿à¤¤ DHCP, à¤•à¥‡à¤°à¥à¤¬à¥‡à¤°à¥‹à¤¸ à¤° NIS à¤œà¤¸à¥à¤¤à¤¾ à¤¸à¤°à¥à¤­à¤° à¤¸à¤®à¤¾à¤µà¤¿à¤·à¥à¤Ÿ à¤—à¤°à¥à¤¦à¤›à¤¨à¥ à¥¤</description>
    <description xml:lang="nl">Deze pakketten bevatten netwerkgebaseerde servers als DHCP, Kerberos en NIS.</description>
    <description xml:lang="no">Disse pakkene inkluderer nettverks-baserte tjenere som DHCP, Kerberos og NIS.</description>
    <description xml:lang="nso">Diphuthelwana tÅ¡e di akaretÅ¡a diabi tÅ¡e theilwego go neteweke tÅ¡e bjalo ka DHCP, Kerberos le NIS.</description>
    <description xml:lang="or">à¬à¬¹à¬¿ à¬ªà­à¬¯à¬¾à¬•à­‡à¬œ à¬—à­à¬¡à¬¿à¬• à¬¡à¬¿.à¬à¬šà­.à¬¸à¬¿.à¬ªà¬¿., à¬•à­‡à¬°à­à¬¬à­‡à¬°à­‹à¬¶ à¬à¬¬à¬‚ à¬à¬¨à­.à¬†à¬‡.à¬à¬¸à­. à¬­à¬²à¬¿ à¬¨à­‡à¬Ÿà­±à¬¾à¬°à­à¬• à¬¸à­‡à¬¬à¬• à¬®à¬¾à¬¨à¬™à­à¬•à­ à¬¸à¬‚à¬²à¬—à­à¬¨à¬¿à¬¤ à¬•à¬°à¬¿ à¬…à¬›à¬¿</description>
    <description xml:lang="pa">à¨‡à¨¸ à¨ªà©ˆà¨•à©‡à¨œ à¨µà¨¿à©±à¨š à¨¨à©ˆà©±à¨Ÿà¨µà¨°à¨• à¨…à¨§à¨¾à¨°à¨¿à¨¤ à¨¸à¨°à¨µà¨°, à¨œà¨¿à¨µà©‡ à¨•à¨¿ DHCP, à¨•à©€à¨°à¨¬à©€à¨°à©‹à¨¸ à¨…à¨¤à©‡ NIS à¨†à¨¦à¨¿, à¨¶à¨¾à¨®à¨¿à¨² à¨¹à¨¨à¥¤</description>
    <description xml:lang="pl">Te pakiety zawierajÄ… serwery sieciowe, takie jak DHCP, Kerberos i NIS.</description>
    <description xml:lang="pt">Estes pacotes incluem servidores de rede como o DHCP, Kerberos e NIS.</description>
    <description xml:lang="pt_BR">Estes pacotes incluem servidores de rede como o DHCP, Kerberos e NIS.</description>
    <description xml:lang="ro">Aceste pachete includ servere bazate pe reÅ£ea cum ar fi DHCP, Kerberos ÅŸi NIS.</description>
    <description xml:lang="ru">Ð­Ñ‚Ð¸ Ð¿Ð°ÐºÐµÑ‚Ñ‹ Ð²ÐºÐ»ÑŽÑ‡Ð°ÑŽÑ‚ Ð² ÑÐµÐ±Ñ Ñ‚Ð°ÐºÐ¸Ðµ ÑÐµÑ‚ÐµÐ²Ñ‹Ðµ ÑÐµÑ€Ð²Ð¸ÑÑ‹, ÐºÐ°Ðº DHCP, Kerberos Ð¸ NIS.</description>
    <description xml:lang="si">à¶¸à·™à¶¸ à¶‡à·ƒà·”à¶»à·”à¶¸à·Š à¶­à·”à¶½ à¶¢à·à¶½ à¶¸à¶­ à¶´à¶¯à¶±à¶¸à·Š à·€à·– DHCP, Kerberos à·ƒà·„ NIS à·€à·à¶±à·’ à·ƒà·šà·€à· à¶¯à·à¶ºà¶šà¶ºà¶±à·Š à¶‡à¶­à·”à¶½à¶­à·Š à·€à·š.</description>
    <description xml:lang="sk">Tieto balÃ­Äky obsahujÃº sieÅ¥ovÃ© servery, ako sÃº DHCP, Kerberos a NIS.</description>
    <description xml:lang="sl">Ti paketi vkljuÄujejo mreÅ¾ne streÅ¾nike, kot so DHCP, Kerberos in NIS.</description>
    <description xml:lang="sq">KÃ«to paketa pÃ«rfshijnÃ« shÃ«rbyesa me bazÃ« rrjeti, tÃ« tillÃ« si DHCP, Kerberos dhe NIS.</description>
    <description xml:lang="sr">ÐžÐ²Ð¸ Ð¿Ð°ÐºÐµÑ‚Ð¸ ÑÐ°Ð´Ñ€Ð¶Ðµ Ð¼Ñ€ÐµÐ¶Ð½Ðµ ÑÐµÑ€Ð²ÐµÑ€Ðµ ÐºÐ°Ð¾ ÑˆÑ‚Ð¾ ÑÑƒ DHCP, Kerberos Ð¸ NIS.</description>
    <description xml:lang="sr@Latn">Ovi paketi sadrÅ¾e mreÅ¾ne servere kao Å¡to su DHCP, Kerberos i NIS.</description>
    <description xml:lang="sr@latin">Ovi paketi sadrÅ¾e mreÅ¾ne servere kao Å¡to su DHCP, Kerberos i NIS.</description>
    <description xml:lang="sv">Dessa paket inkluderar nÃ¤tverksbaserade servrar som exempelvis DHCP, Kerberos och NIS.</description>
    <description xml:lang="ta">à®‡à®¨à¯à®¤ à®¤à¯Šà®•à¯à®ªà¯à®ªà¯à®•à®³à¯ à®ªà®¿à®£à¯ˆà®¯ à®…à®Ÿà®¿à®ªà¯à®ªà®Ÿà¯ˆà®¯à®¾à®© à®šà¯‡à®µà¯ˆà®¯à®•à®™à¯à®•à®³à®¾à®© DHCP, Kerberos à®®à®±à¯à®±à¯à®®à¯ NISà®ªà¯‹à®©à¯à®±à®µà®±à¯à®±à¯ˆ à®•à¯Šà®£à¯à®Ÿà¯à®³à¯à®³à®©.</description>
    <description xml:lang="te">à°ˆ packageà°²à± network à°†à°§à°¾à°°à°¿à°¤ à°¸à°°à±à°µà°°à±à°²à± - DHCP, Kerberos à°®à°°à°¿à°¯à±‚ NISà°®à±Š. à°•à°²à°¿à°—à°¿ à°‰à°‚à°¦à°¿.</description>
    <description xml:lang="tg">Ð˜Ð½ Ð±Ð°Ñ€Ð½Ð¾Ð¼Ð°Ò³Ð¾ Ñ…Ð¸Ð´Ð¼Ð°Ñ‚Ð³Ð¾Ò³Ò³Ð¾Ð¸ Ð˜Ð½Ñ‚ÐµÑ€Ð½ÐµÑ‚Ð¸Ð¸ Ð¼Ð¾Ð½Ð°Ð½Ð´Ð¸ DHCP, Kerberos Ð²Ð° NIS Ð´Ð°Ñ€ Ð±Ð°Ñ€ Ð¼ÐµÐ³Ð¸Ñ€Ð°Ð½Ð´.</description>
    <description xml:lang="th">à¹à¸žà¸à¹€à¸à¸ˆà¹€à¸«à¸¥à¹ˆà¸²à¸™à¸µà¹‰à¸›à¸£à¸°à¸à¸­à¸šà¸”à¹‰à¸§à¸¢à¸•à¸±à¸§à¹ƒà¸«à¹‰à¸šà¸£à¸´à¸à¸²à¸£à¹€à¸™à¹‡à¸•à¹€à¸§à¸´à¸£à¹Œà¸„à¸žà¸·à¹‰à¸™à¸à¸²à¸™à¹€à¸Šà¹ˆà¸™ DHCP, Kerberos à¹à¸¥à¸° NIS</description>
    <description xml:lang="tr">Bu paketler DHCP,Kerberos ve NIS gibi aÄŸ temelli sunucularÄ± iÃ§erir.</description>
    <description xml:lang="uk">Ð¦Ñ– Ð¿Ð°ÐºÑƒÐ½ÐºÐ¸ Ð¼Ñ–ÑÑ‚ÑÑ‚ÑŒ Ñ‚Ð°ÐºÑ– ÑÐ»ÑƒÐ¶Ð±Ð¸, ÑÐº DHCP, Kerberos Ñ‚Ð° NIS.</description>
    <description xml:lang="ur"> ÙˆØºÙØ±Û ÙˆØºÛŒØ±Û Ø´Ø§Ù…Ù„ ÛÛŒÚº NIS Ø§ÙˆØ± KerberosØŒ DHCP Ø§Ù† Ù…Ø¬ÙˆØ¹Ø§Øª Ù…ÛŒÚº Ù†ÛŒÙ¹ÙˆØ±Ú© Ø³Ø±ÙˆØ±Ø²    </description>
    <description xml:lang="vi">Nhá»¯ng gÃ³i nÃ y bao gá»“m cÃ¡c server máº¡ng nhÆ° DHCP, vÃ  Kerberos vÃ  NIS.</description>
    <description xml:lang="zh">é€™äº›å¥—ä»¶åŒ…æ‹¬ç¶²è·¯ç‚ºä¸»çš„ä¼ºæœå™¨ï¼Œä¾‹å¦‚ DHCP, Kerberos èˆ‡ NISã€‚</description>
    <description xml:lang="zh_CN">è¿™äº›è½¯ä»¶åŒ…åŒ…æ‹¬åŸºäºŽç½‘ç»œçš„æœåŠ¡å™¨ï¼Œä¾‹å¦‚ DHCPã€Kerberos å’Œ NISã€‚</description>
    <description xml:lang="zh_TW">é€™äº›å¥—ä»¶åŒ…æ‹¬ç¶²è·¯ç‚ºä¸»çš„ä¼ºæœå™¨ï¼Œä¾‹å¦‚ DHCP, Kerberos èˆ‡ NISã€‚</description>
    <description xml:lang="zu">Lama phakethe abala abalekeleli boxhumano njenge-DHCP, Kerberos kanye ne-NIS.</description>
    <default>true</default>
    <uservisible>true</uservisible>
    <packagelist>
      <packagereq type="optional">dnsmasq</packagereq>
      <packagereq type="optional">freeradius</packagereq>
      <packagereq type="optional">frr</packagereq>
      <packagereq type="optional">frr-contrib</packagereq>
      <packagereq type="optional">idn2</packagereq>
      <packagereq type="optional">libreswan</packagereq>
      <packagereq type="optional">radvd</packagereq>
      <packagereq type="optional">rsyslog-gnutls</packagereq>
      <packagereq type="optional">rsyslog-gssapi</packagereq>
      <packagereq type="optional">rsyslog-mysql</packagereq>
      <packagereq type="optional">rsyslog-omamqp1</packagereq>
      <packagereq type="optional">rsyslog-pgsql</packagereq>
      <packagereq type="optional">rsyslog-relp</packagereq>
      <packagereq type="optional">tang</packagereq>
      <packagereq type="optional">tftp-server</packagereq>
    </packagelist>
  </group>
  <group>
    <id>network-tools</id>
    <name>Networking Tools</name>
    <name xml:lang="as">à¦¨à§‡à¦Ÿà§±à¦¾à§°à§à¦• à¦¬à§à¦¯à§±à¦¸à§à¦¥à¦¾à§° à¦¬à¦¿à¦­à¦¿à¦¨à§à¦¨ à¦¸à¦à¦œà§à¦²à¦¿à¦¸à¦®à§‚à¦¹</name>
    <name xml:lang="bn">à¦¨à§‡à¦Ÿà¦“à§Ÿà¦¾à¦°à§à¦• à¦¬à§à¦¯à¦¬à¦¸à§à¦¥à¦¾à¦° à¦¬à¦¿à¦­à¦¿à¦¨à§à¦¨ à¦¸à¦°à¦žà§à¦œà¦¾à¦®</name>
    <name xml:lang="cs">NÃ¡stroje pro prÃ¡ci v sÃ­ti</name>
    <name xml:lang="de">Netzwerk-Tools</name>
    <name xml:lang="de_CH">Netzwerk-Tools</name>
    <name xml:lang="es">Herramientas de red</name>
    <name xml:lang="fr">Outils rÃ©seau</name>
    <name xml:lang="gu">àª¨à«‡àªŸàªµàª°à«àª•àª¿àª‚àª— àª¸àª¾àª§àª¨à«‹</name>
    <name xml:lang="hi">à¤¸à¤‚à¤œà¤¾à¤²à¤¨ à¤”à¤œà¤¾à¤°</name>
    <name xml:lang="ia">Instrumentos de rete</name>
    <name xml:lang="it">Tool per il networking</name>
    <name xml:lang="ja">ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚­ãƒ³ã‚°ãƒ„ãƒ¼ãƒ«</name>
    <name xml:lang="kn">à²œà²¾à²²à²¬à²‚à²§ à²‰à²ªà²•à²°à²£à²—à²³à³</name>
    <name xml:lang="ko">ë„¤íŠ¸ì›Œí‚¹ íˆ´ </name>
    <name xml:lang="ml">à´¨àµ†à´±àµà´±àµâ€Œà´µà´°àµâ€à´•àµà´•à´¿à´™àµ à´‰à´ªà´•à´°à´£à´™àµà´™à´³àµâ€</name>
    <name xml:lang="mr">à¤¨à¥‡à¤Ÿà¤µà¤°à¥à¤•à¤¿à¤‚à¤— à¤¸à¤¾à¤§à¤¨à¥‡</name>
    <name xml:lang="or">à¬¨à­‡à¬Ÿà­±à¬°à­à¬•à¬¿à¬™à­à¬— à¬¸à¬¾à¬§à¬¨à¬—à­à¬¡à¬¼à¬¿à¬•</name>
    <name xml:lang="pa">à¨¨à©ˆà©±à¨Ÿà¨µà¨°à¨•à¨¿à©°à¨— à¨Ÿà©‚à¨²</name>
    <name xml:lang="pl">NarzÄ™dzia sieciowe</name>
    <name xml:lang="pt">Ferramentas de rede</name>
    <name xml:lang="pt_BR">Ferramentas de rede</name>
    <name xml:lang="ru">Ð¡ÐµÑ‚ÐµÐ²Ñ‹Ðµ Ð¸Ð½ÑÑ‚Ñ€ÑƒÐ¼ÐµÐ½Ñ‚Ñ‹</name>
    <name xml:lang="sv">NÃ¤tverksverktyg</name>
    <name xml:lang="ta">à®ªà®¿à®£à¯ˆà®¯à®¤à¯à®¤à®¿à®©à¯ à®•à®°à¯à®µà®¿à®•à®³à¯</name>
    <name xml:lang="te">à°¨à±†à°Ÿà±à°µà°°à±à°•à°¿à°‚à°—à± à°¸à°¾à°§à°¨à°®à±à°²à±</name>
    <name xml:lang="uk">ÐŸÑ€Ð¾Ð³Ñ€Ð°Ð¼Ð¸ Ð´Ð»Ñ Ñ€Ð¾Ð±Ð¾Ñ‚Ð¸ Ñƒ Ð¼ÐµÑ€ÐµÐ¶Ñ–</name>
    <name xml:lang="zh">ç¶²è·¯ä½œæ¥­å·¥å…·</name>
    <name xml:lang="zh_CN">è”ç½‘å·¥å…·</name>
    <name xml:lang="zh_TW">ç¶²è·¯ä½œæ¥­å·¥å…·</name>
    <description>Tools for configuring and analyzing computer networks.</description>
    <description xml:lang="as">à¦•à¦®à¦ªà¦¿à¦‰à¦Ÿà¦¾à§° à¦¨à§‡à¦Ÿà§±à¦¾à§°à§à¦• à¦¸à¦‚à§°à§‚à¦ªà¦£ à¦†à§°à§ à¦¬à¦¿à¦¶à§à¦²à§‡à¦·à¦£à§° à¦¬à¦¾à¦¬à§‡ à¦¬à¦¿à¦­à¦¿à¦¨à§à¦¨ à¦¸à¦à¦œà§à¦²à¦¿à¦¸à¦®à§‚à¦¹à¥¤</description>
    <description xml:lang="bn">à¦•à¦®à§à¦ªà¦¿à¦‰à¦Ÿà¦¾à¦° à¦¨à§‡à¦Ÿà¦“à§Ÿà¦¾à¦°à§à¦• à¦•à¦¨à¦«à¦¿à¦—à¦¾à¦° à¦“ à¦¬à¦¿à¦¶à§à¦²à§‡à¦·à¦£à§‡à¦° à¦œà¦¨à§à¦¯ à¦¬à¦¿à¦­à¦¿à¦¨à§à¦¨ à¦¸à¦°à¦žà§à¦œà¦¾à¦®à¥¤</description>
    <description xml:lang="cs">NÃ¡stroje pro konfiguraci a analÃ½zu poÄÃ­taÄovÃ½ch sÃ­tÃ­.</description>
    <description xml:lang="de">Tools zur Konfiguration und Analyse von Computer-Netzwerken.</description>
    <description xml:lang="de_CH">Tools zur Konfiguration und Analyse von Computer-Netzwerken.</description>
    <description xml:lang="es">Herramientas para configurar y analizar redes informÃ¡ticas.</description>
    <description xml:lang="fr">Outils pour configurer et analyser des rÃ©seaux informatiques.</description>
    <description xml:lang="gu">àª•àª®à«àªªà«àª¯à«‚àªŸàª° àª¨à«‡àªŸàªµàª°à«àª•à«‹àª¨à«àª‚ àªªà«ƒàª¥à«àª¥àª•àª°àª£ àª…àª¨à«‡ àª°à«‚àªªàª°à«‡àª–àª¾àª‚àª•àª¿àª¤ àª•àª°àªµàª¾ àª®àª¾àªŸà«‡àª¨àª¾àª‚ àª¸àª¾àª§àª¨à«‹.</description>
    <description xml:lang="hi">à¤•à¤‚à¤ªà¥à¤¯à¥‚à¤Ÿà¤° à¤¸à¤‚à¤œà¤¾à¤² à¤•à¥‡ à¤µà¤¿à¤¨à¥à¤¯à¤¾à¤¸ à¤”à¤° à¤µà¤¿à¤¶à¥à¤²à¥‡à¤·à¤£ à¤•à¥‡ à¤²à¤¿à¤ à¤”à¤œà¤¼à¤¾à¤°.</description>
    <description xml:lang="ia">Utensiles pro configurar e analysar retes de computatores.</description>
    <description xml:lang="it">Tool per la configurazione e l'analisi delle reti del computer.</description>
    <description xml:lang="ja">ã‚³ãƒ³ãƒ”ãƒ¥ãƒ¼ã‚¿ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ã‚’è¨­å®šã—åˆ†æžã™ã‚‹ãŸã‚ã®ãƒ„ãƒ¼ãƒ«ã§ã™ã€‚</description>
    <description xml:lang="kn">à²—à²£à²•à²¦ à²œà²¾à²²à²¬à²‚à²§à²—à²³à²¨à³à²¨à³ à²¸à²‚à²°à²šà²¿à²¸à²²à³ à²¹à²¾à²—à³ à²µà²¿à²¶à³à²²à³‡à²·à²¿à²¸à²²à³ à²¸à²²à³à²µà²¾à²—à²¿à²¨ à²‰à²ªà²•à²°à²£à²—à²³à³.</description>
    <description xml:lang="ko">ì»´í“¨í„° ë„¤íŠ¸ì›Œí¬ë¥¼ ì„¤ì •í•˜ê³  ë¶„ì„í•˜ê¸° ìœ„í•œ íˆ´ </description>
    <description xml:lang="ml">à´•à´®àµà´ªàµà´¯àµ‚à´Ÿàµà´Ÿà´°àµâ€ à´¨àµ†à´±àµà´±àµâ€Œà´µà´°àµâ€à´•àµà´•àµà´•à´³àµâ€ à´•àµà´°à´®àµ€à´•à´°à´¿à´•àµà´•àµà´¨àµà´¨à´¤à´¿à´¨àµà´‚ à´¨à´¿à´°àµ€à´•àµà´·à´¿à´•àµà´•àµà´¨àµà´¨à´¤à´¿à´¨àµà´®àµà´³àµà´³ à´‰à´ªà´•à´°à´£à´™àµà´™à´³àµâ€.</description>
    <description xml:lang="mr">à¤•à¤®à¥à¤ªà¥à¤Ÿà¤° à¤¨à¥‡à¤Ÿà¤µà¤°à¥à¤•à¤¸à¥ à¤¸à¤‚à¤°à¤šà¥€à¤¤ à¤µ à¤µà¤¿à¤¶à¥à¤²à¥‡à¤·à¥€à¤¤ à¤•à¤°à¤£à¥à¤¯à¤¾à¤¸à¤¾à¤ à¥€ à¤¸à¤¾à¤§à¤¨à¥‡.</description>
    <description xml:lang="or">à¬•à¬®à­à¬ªà­à¬Ÿà¬° à¬¨à­‡à¬Ÿà­±à¬°à­à¬•à¬•à­ à¬¬à¬¿à¬¨à­à­Ÿà¬¾à¬¸ à¬à¬¬à¬‚ à¬¬à¬¿à¬¶à­à¬³à­‡à¬·à¬£ à¬•à¬°à¬¿à¬¬à¬¾ à¬ªà¬¾à¬‡à¬ à¬¸à¬¾à¬§à¬¨à¬—à­à¬¡à¬¼à¬¿à¬•à¥¤</description>
    <description xml:lang="pa">à¨•à©°à¨ªà¨¿à¨Šà¨Ÿà¨° à¨¨à©ˆà©±à¨Ÿà¨µà¨°à¨• à¨¸à©°à¨°à¨šà¨¿à¨¤ à¨…à¨¤à©‡ à¨ªà©œà¨¤à¨¾à¨² à¨•à¨°à¨¨ à¨²à¨ˆ à¨Ÿà©‚à¨²à¥¤</description>
    <description xml:lang="pl">NarzÄ™dzia do konfigurowania i analizowania sieci komputerowych.</description>
    <description xml:lang="pt">Ferramentas para configurar e analizar rede de computador.</description>
    <description xml:lang="pt_BR">Ferramentas para configurar e analizar rede de computador.</description>
    <description xml:lang="ru">Ð¡Ñ€ÐµÐ´ÑÑ‚Ð²Ð° ÐºÐ¾Ð½Ñ„Ð¸Ð³ÑƒÑ€Ð°Ñ†Ð¸Ð¸ Ð¸ Ð°Ð½Ð°Ð»Ð¸Ð·Ð° ÐºÐ¾Ð¼Ð¿ÑŒÑŽÑ‚ÐµÑ€Ð½Ñ‹Ñ… ÑÐµÑ‚ÐµÐ¹.</description>
    <description xml:lang="sv">Verktyg fÃ¶r att konfigurera och analysera datornÃ¤tverk.</description>
    <description xml:lang="ta">à®•à®£à®¿à®©à®¿ à®ªà®¿à®£à¯ˆà®¯à®™à¯à®•à®³à¯ˆ à®•à®Ÿà¯à®Ÿà®®à¯ˆà®•à¯à®• à®®à®±à¯à®±à¯à®®à¯ à®†à®¯à¯à®µà¯à®šà¯†à®¯à¯à®¯à®µà®¤à®±à¯à®•à®¾à®© à®•à®°à¯à®µà®¿à®•à®³à¯.</description>
    <description xml:lang="te">à°•à°‚à°ªà±à°¯à±‚à°Ÿà°°à± à°¨à±†à°Ÿà±à°µà°°à±à°•à±à°²à°¨à± à°†à°•à±ƒà°¤à±€à°•à°°à°¿à°‚à°šà±à°Ÿà°•à± à°®à°°à°¿à°¯à± à°µà°¿à°¶à±à°²à±‡à°·à°¿à°‚à°šà±à°Ÿà°•à± à°¸à°¾à°§à°¨à°®à±à°²à±.</description>
    <description xml:lang="uk">ÐŸÑ€Ð¾Ð³Ñ€Ð°Ð¼Ð¸ Ð´Ð»Ñ Ð½Ð°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ñ‚Ð° Ð°Ð½Ð°Ð»Ñ–Ð·Ñƒ ÐºÐ¾Ð¼Ð¿â€™ÑŽÑ‚ÐµÑ€Ð½Ð¸Ñ… Ð¼ÐµÑ€ÐµÐ¶.</description>
    <description xml:lang="zh">é…ç½®å’Œåˆ†æžé›»è…¦ç¶²è·¯çš„å·¥å…·ã€‚</description>
    <description xml:lang="zh_CN">é…ç½®å’Œåˆ†æžè®¡ç®—æœºç½‘ç»œçš„å·¥å…·ã€‚</description>
    <description xml:lang="zh_TW">é…ç½®å’Œåˆ†æžé›»è…¦ç¶²è·¯çš„å·¥å…·ã€‚</description>
    <default>true</default>
    <uservisible>false</uservisible>
    <packagelist>
      <packagereq type="mandatory">tcpdump</packagereq>
      <packagereq type="default">libreswan</packagereq>
      <packagereq type="default">nmap-ncat</packagereq>
      <packagereq type="default">socat</packagereq>
      <packagereq type="optional">dnssec-trigger</packagereq>
      <packagereq type="optional">dropwatch</packagereq>
      <packagereq type="optional">mrtg</packagereq>
      <packagereq type="optional">nmap</packagereq>
      <packagereq type="optional">nmstate</packagereq>
      <packagereq type="optional">wireshark</packagereq>
    </packagelist>
  </group>
  <group>
    <id>networkmanager-submodules</id>
    <name>Common NetworkManager submodules</name>
    <name xml:lang="fr">Sous-modules de NetworkManager communÃ©ment utilisÃ©s</name>
    <name xml:lang="ja">ä¸€èˆ¬çš„ãª NetworkManager ã‚µãƒ–ãƒ¢ã‚¸ãƒ¥ãƒ¼ãƒ«</name>
    <name xml:lang="ko">ì¼ë°˜ì ì¸ NetworkManager ì„œë¸Œ ëª¨ë“ˆ </name>
    <name xml:lang="zh_CN">å¸¸ç”¨ NetworkManager å­æ¨¡å—</name>
    <description>This group contains NetworkManager submodules that are commonly used, but may not be wanted in some streamlined configurations.</description>
    <description xml:lang="fr">Ce groupe contient des sous-modules de NetworkManager communÃ©ment utilisÃ©s, mais qui risquent de ne pas Ãªtre dÃ©sirables pour certaines configurations simplifiÃ©es. </description>
    <description xml:lang="ja">ã“ã®ã‚°ãƒ«ãƒ¼ãƒ—ã«ã¯ã€ä¸€èˆ¬çš„ã«ä½¿ç”¨ã•ã‚Œã¦ãŠã‚Šè¤‡é›‘ãªè¨­å®šãŒå¯èƒ½ãª NetworkManager ã‚µãƒ–ãƒ¢ã‚¸ãƒ¥ãƒ¼ãƒ«ãŒå«ã¾ã‚Œã¾ã™ã€‚</description>
    <description xml:lang="ko">ì´ ê·¸ë£¹ì—ëŠ” ì¼ë¶€ ë‹¨ìˆœí™”ëœ êµ¬ì„±ì—ì„œëŠ” í•„ìš”í•˜ì§€ ì•Šì„ ìˆ˜ ìžˆëŠ” ì¼ë°˜ì ìœ¼ë¡œ ì‚¬ìš©ë˜ëŠ” NetworkManager ì„œë¸Œ ëª¨ë“ˆì´ í¬í•¨ë˜ì–´ ìžˆìŠµë‹ˆë‹¤. </description>
    <description xml:lang="zh_CN">å¸¸ç”¨çš„ã€ä½†å¯èƒ½åœ¨ä¸€äº›ç®€åŒ–é…ç½®ä¸­ä¸éœ€è¦çš„ NetworkManager å­æ¨¡å—ã€‚</description>
    <default>true</default>
    <uservisible>false</uservisible>
    <packagelist>
      <packagereq type="default">dnsmasq</packagereq>
    </packagelist>
  </group>
  <group>
    <id>office-suite</id>
    <name>Office Suite and Productivity</name>
    <name xml:lang="as">à¦•à¦¾à§°à§à¦¯à¦¾à¦²à§Ÿ à¦—à§‹à¦Ÿ à¦†à§°à§ à¦•à¦¾à§°à§à¦¯à§à¦¯à¦•à§à¦·à¦®à¦¤à¦¾</name>
    <name xml:lang="bn">à¦…à¦«à¦¿à¦¸ à¦¸à§à¦¯à§à¦Ÿ à¦“ à¦•à¦°à§à¦®à¦•à§à¦·à¦®à¦¤à¦¾</name>
    <name xml:lang="cs">KancelÃ¡Å™skÃ© aplikace</name>
    <name xml:lang="de">BÃ¼ro-Suite und ProduktivitÃ¤t</name>
    <name xml:lang="de_CH">BÃ¼ro-Suite und ProduktivitÃ¤t</name>
    <name xml:lang="es">Office Suite y Productividad</name>
    <name xml:lang="fr">Suite de bureautique et productivitÃ©</name>
    <name xml:lang="gu">àª“àª«àª¿àª¸ àª¸à«àªŸ àª…àª¨à«‡ àª‰àª¤à«àªªàª¾àª¦àª•àª¤àª¾</name>
    <name xml:lang="hi">à¤‘à¤«à¤¿à¤¸ à¤¸à¥‚à¤‡à¤Ÿ à¤”à¤° à¤‰à¤¤à¥à¤ªà¤¾à¤¦à¤•à¤¤à¤¾</name>
    <name xml:lang="ia">Applicationes de officio e productivitate</name>
    <name xml:lang="it">Suite d'ufficio e ProduttivitÃ </name>
    <name xml:lang="ja">ã‚ªãƒ•ã‚£ã‚¹ã‚¹ã‚¤ãƒ¼ãƒˆã¨ç”Ÿç”£æ€§</name>
    <name xml:lang="kn">à²†à²«à³€à²¸à³ à²¸à³‚à²Ÿà³ à²¹à²¾à²—à³ à²‰à²¤à³à²ªà²¾à²¦à²•à²¤à³†</name>
    <name xml:lang="ko">ì˜¤í”¼ìŠ¤ ìŠ¤ìœ„íŠ¸/ìƒì‚°ì„±</name>
    <name xml:lang="ml">à´“à´«àµ€à´¸àµ à´¸àµà´¯àµ‚à´Ÿàµà´Ÿàµà´‚ à´ªàµà´°àµŠà´¡à´•àµà´Ÿà´¿à´µà´¿à´±àµà´±à´¿à´¯àµà´‚</name>
    <name xml:lang="mr">à¤‘à¤«à¤¿à¤¸ à¤¸à¥à¤¯à¥à¤Ÿ à¤µ à¤ªà¥à¤°à¥‹à¤¡à¤•à¥à¤Ÿà¤¿à¤µà¥€à¤Ÿà¥€</name>
    <name xml:lang="or">à¬…à¬«à¬¿à¬¸ à¬…à¬¨à­à¬—à¬¾à¬®à­€ à¬à¬¬à¬‚ à¬‰à¬¤à­à¬ªà¬¾à¬¦à¬¨</name>
    <name xml:lang="pa">à¨¦à¨«à¨¤à¨°à©€ à¨¸à©‚à¨Ÿ à¨…à¨¤à©‡ à¨‰à¨¤à¨ªà¨¾à¨¦à¨¨</name>
    <name xml:lang="pl">Biuro i praca biurowa</name>
    <name xml:lang="pt">Conjunto Office e Produtividade</name>
    <name xml:lang="pt_BR">Conjunto Office e Produtividade</name>
    <name xml:lang="ru">ÐžÑ„Ð¸ÑÐ½Ñ‹Ð¹ ÐºÐ¾Ð¼Ð¿Ð»ÐµÐºÑ‚</name>
    <name xml:lang="sv">Kontorssvit och produktivitet</name>
    <name xml:lang="ta">à®…à®²à¯à®µà®²à®•à®®à¯ à®ªà®°à®¿à®µà®¾à®°à®®à¯ à®®à®±à¯à®±à¯à®®à¯ à®‰à®±à¯à®ªà®¤à¯à®¤à®¿ à®¤à®¿à®±à®©à¯</name>
    <name xml:lang="te">à°†à°«à±€à°¸à± à°¸à±à°¯à±‚à°Ÿà± à°®à°°à°¿à°¯à± à°‰à°¤à±à°ªà°¾à°¦à°•à°¤</name>
    <name xml:lang="uk">ÐžÑ„Ñ–ÑÐ½Ñ– ÐºÐ¾Ð¼Ð¿Ð»ÐµÐºÑÐ¸ Ñ– Ð¾ÐºÑ€ÐµÐ¼Ñ– Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¸</name>
    <name xml:lang="zh">è¾¦å…¬è»Ÿé«”å’Œç”Ÿç”¢è»Ÿé«”</name>
    <name xml:lang="zh_CN">åŠžå…¬å¥—ä»¶å’Œç”Ÿäº§çŽ‡</name>
    <name xml:lang="zh_TW">è¾¦å…¬è»Ÿé«”å’Œç”Ÿç”¢è»Ÿé«”</name>
    <description>A full-purpose office suite, and other productivity tools.</description>
    <description xml:lang="as">à¦¸à¦®à§à¦ªà§‚à§°à§à¦£ à¦•à¦¾à§°à§à¦¯à§à¦¯à¦•à§à¦·à¦®à¦¤à¦¾ à¦¬à¦¿à¦¶à¦¿à¦·à§à¦Ÿ à¦•à¦¾à§°à§à¦¯à¦¾à¦²à§Ÿ à¦—à§‹à¦Ÿ à¦†à§°à§ à¦…à¦¨à§à¦¯à¦¾à¦¨à§à¦¯ à¦¨à¦¿à§°à§à¦®à¦¾à¦£à¦•à¦¾à§°à§à¦¯à§à¦¯à§° à¦¸à¦¾à¦®à¦—à§à§°à§€à¥¤</description>
    <description xml:lang="bn">à¦¸à¦®à§à¦ªà§‚à¦°à§à¦£ à¦•à¦°à§à¦®à¦•à§à¦·à¦®à¦¤à¦¾ à¦¬à¦¿à¦¶à¦¿à¦·à§à¦Ÿ à¦…à¦«à¦¿à¦¸ à¦¸à§à¦¯à§à¦Ÿ à¦“ à¦…à¦¨à§à¦¯à¦¾à¦¨à§à¦¯ à¦¨à¦¿à¦°à§à¦®à¦¾à¦£à¦•à¦¾à¦œà§‡à¦° à¦¸à¦¾à¦®à¦—à§à¦°à§€à¥¤</description>
    <description xml:lang="cs">UniverzÃ¡lnÃ­ kancelÃ¡Å™skÃ½ balÃ­k a dalÅ¡Ã­ uÅ¾iteÄnÃ© nÃ¡stroje.</description>
    <description xml:lang="de">Eine Vollzweck-Office-Suite und sonstige ProduktivitÃ¤ts-Tools.</description>
    <description xml:lang="de_CH">Eine Vollzweck-Office-Suite und sonstige ProduktivitÃ¤ts-Tools.</description>
    <description xml:lang="es">Un propÃ³sito total de office suite y otras herramientas de productividad.</description>
    <description xml:lang="fr">Suite bureautique complÃ¨te et autres outils de productivitÃ©.</description>
    <description xml:lang="gu">àª¸àª‚àªªà«‚àª°à«àª£-àª¹à«‡àª¤à« àª®àª¾àªŸà«‡ àª“àª«àª¿àª¸ àª¸à«àªŸ, àª…àª¨à«‡ àª¬à«€àªœàª¾ àª‰àª¤à«àªªàª¾àª¦àª•àª¤àª¾ àª¸àª¾àª§àª¨à«‹.</description>
    <description xml:lang="hi">à¤à¤• à¤ªà¥‚à¤°à¥à¤£ à¤‰à¤¦à¥à¤¦à¥‡à¤¶à¥à¤¯à¥€à¤¯ à¤‘à¤«à¤¿à¤¸ à¤¸à¥‚à¤‡à¤Ÿ, à¤”à¤° à¤…à¤¨à¥à¤¯ à¤‰à¤¤à¥à¤ªà¤¾à¤¦à¤•à¤¤à¤¾ à¤”à¤œà¤¼à¤¾à¤°.</description>
    <description xml:lang="ia">Un insimul complete del applicationes de officio e altere utensiles pro le productivitate.</description>
    <description xml:lang="it">Una suite d'ufficio per tutti gli scopi ed altri tool di produttivitÃ .</description>
    <description xml:lang="ja">å…¨ç›®çš„å¯¾å¿œã®ã‚ªãƒ•ã‚£ã‚¹ã‚¹ã‚¤ãƒ¼ãƒˆãŠã‚ˆã³ãã®ä»–ç”Ÿç”£æ€§ãƒ„ãƒ¼ãƒ«ã§ã™ã€‚</description>
    <description xml:lang="kn">à²¸à²‚à²ªà³‚à²°à³à²£ à²¸à²œà³à²œà²¿à²¤à²µà²¾à²¦ à²†à²«à³€à²¸à³ à²¸à³‚à²Ÿà³, à²¹à²¾à²—à³ à²‡à²¤à²°à³† à²‰à²¤à³à²ªà²¾à²¦à²¨à²¾ à²‰à²ªà²•à²°à²£à²—à²³à³.</description>
    <description xml:lang="ko">ì™„ì „í•œ ì˜¤í”¼ìŠ¤ ìŠ¤ìœ„íŠ¸ì™€ ë‹¤ë¥¸ ìƒì‚°ì„± íˆ´ </description>
    <description xml:lang="ml">à´ªàµ‚à´°àµâ€à´£àµà´£ à´†à´µà´¶àµà´¯à´™àµà´™à´³àµâ€à´•àµà´•àµà´³àµà´³ à´“à´«àµ€à´¸àµ à´¸àµà´¯àµ‚à´Ÿàµà´Ÿàµà´‚ à´®à´±àµà´±àµ à´ªàµà´°àµŠà´¡à´•àµà´Ÿà´¿à´µà´¿à´±àµà´±à´¿ à´‰à´ªà´•à´°à´£à´™àµà´™à´³àµà´‚.</description>
    <description xml:lang="mr">à¤¸à¤‚à¤ªà¥‚à¤°à¥à¤£à¤¤à¤¯à¤¾-à¤‰à¤ªà¤¯à¥‹à¤—à¥€ à¤‘à¤«à¤¿à¤¸ à¤¸à¤‚à¤š, à¤µ à¤‡à¤¤à¤° à¤‰à¤ªà¤¯à¥‹à¤—à¥€ à¤¸à¤¾à¤§à¤¨à¥‡.</description>
    <description xml:lang="or">à¬—à­‹à¬Ÿà¬¿à¬ à¬¸à¬®à­à¬ªà­‚à¬°à­à¬£à­à¬£-à¬‰à¬ªà¬¯à­‹à¬—à­€ à¬…à¬«à¬¿à¬¸ à¬…à¬¨à­à¬—à¬¾à¬®à­€, à¬à¬¬à¬‚ à¬…à¬¨à­à­Ÿà¬¾à¬¨à­à­Ÿ à¬‰à¬¤à­à¬ªà¬¾à¬¦à¬¨ à¬®à­‚à¬³à¬• à¬¸à¬¾à¬§à¬¨à¬—à­à¬¡à¬¼à¬¿à¬•à¥¤</description>
    <description xml:lang="pa">à¨‡à©±à¨• à¨¸à©°à¨ªà©‚à¨°à¨¨ à¨¦à¨«à¨¤à¨° à¨¸à©ˆà©±à¨Ÿ, à¨…à¨¤à©‡ à¨¹à©‹à¨° à¨‰à¨¤à¨ªà¨¾à¨¦à¨•à©€ à¨œà©°à¨¤à¨°à¥¤</description>
    <description xml:lang="pl">Pakiet biurowy i inne narzÄ™dzia produkcyjne.</description>
    <description xml:lang="pt">Um conjunto de office totalmente designado e outras ferramentas de produtividade.</description>
    <description xml:lang="pt_BR">Um conjunto de office totalmente designado e outras ferramentas de produtividade.</description>
    <description xml:lang="ru">ÐœÐ½Ð¾Ð³Ð¾Ñ„ÑƒÐ½ÐºÑ†Ð¸Ð¾Ð½Ð°Ð»ÑŒÐ½Ñ‹Ð¹ ÐºÐ¾Ð¼Ð¿Ð»ÐµÐºÑ‚ Ð¾Ñ„Ð¸ÑÐ½Ñ‹Ñ… Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ð¹.</description>
    <description xml:lang="sv">En kontorssvit fÃ¶r alla Ã¤ndamÃ¥l, och andra produktivitetsverktyg.</description>
    <description xml:lang="ta">à®’à®°à¯ à®®à¯à®´à¯-à®šà¯†à®¯à®²à¯à®®à¯à®±à¯ˆ à®…à®²à¯à®µà®• à®šà¯‚à®´à®²à¯, à®®à®±à¯à®±à¯à®®à¯ à®®à®±à¯à®± à®¤à®¯à®¾à®°à®¿à®ªà¯à®ªà¯ à®•à®°à¯à®µà®¿à®•à®³à¯.</description>
    <description xml:lang="te">à°’à°• à°ªà±‚à°°à±à°¤à°¿-à°ªà±à°°à°¯à±‹à°œà°¨à°¾à°¤à±à°®à°• à°†à°«à±€à°¸à± à°¸à±‚à°Ÿà±, à°®à°°à°¿à°¯à± à°¯à°¿à°¤à°° à°µà±à°¤à±à°ªà°¾à°¦à°• à°¸à°¾à°§à°¨à°®à±à°²à±.</description>
    <description xml:lang="uk">ÐšÐ¾Ð¼Ð¿Ð»ÐµÐºÑ Ð¾Ñ„Ñ–ÑÐ½Ð¸Ñ… Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼ ÑˆÐ¸Ñ€Ð¾ÐºÐ¾Ð³Ð¾ Ð¿Ñ€Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ.</description>
    <description xml:lang="zh">å®Œæ•´ç”¨é€”çš„è¾¦å…¬è»Ÿé«”å¥—ä»¶ï¼Œä»¥åŠå…¶å®ƒç”Ÿç”¢ç”¨é€”çš„å·¥å…·ã€‚</description>
    <description xml:lang="zh_CN">å…¨å¥—åŠžå…¬å¥—ä»¶ä»¥åŠå…¶å®ƒäº§å“å·¥å…·ã€‚</description>
    <description xml:lang="zh_TW">å®Œæ•´ç”¨é€”çš„è¾¦å…¬è»Ÿé«”å¥—ä»¶ï¼Œä»¥åŠå…¶å®ƒç”Ÿç”¢ç”¨é€”çš„å·¥å…·ã€‚</description>
    <default>true</default>
    <uservisible>false</uservisible>
    <packagelist>
      <packagereq type="default">libreoffice-calc</packagereq>
      <packagereq type="default">libreoffice-draw</packagereq>
      <packagereq type="default">libreoffice-emailmerge</packagereq>
      <packagereq type="default">libreoffice-graphicfilter</packagereq>
      <packagereq type="default">libreoffice-impress</packagereq>
      <packagereq type="default">libreoffice-math</packagereq>
      <packagereq type="default">libreoffice-writer</packagereq>
      <packagereq type="optional">libreoffice-base</packagereq>
      <packagereq type="optional">libreoffice-ogltrans</packagereq>
      <packagereq type="optional">libreoffice-pyuno</packagereq>
      <packagereq type="optional">libreoffice-wiki-publisher</packagereq>
    </packagelist>
  </group>
  <group>
    <id>ostree-support</id>
    <name>Atomic Host ostree support</name>
    <name xml:lang="de">Atomic Host Ostree UnterstÃ¼tzung</name>
    <name xml:lang="es">Compatibilidad con Hostsree de Atomic Host</name>
    <name xml:lang="fr">Support ostree Atomic Host</name>
    <name xml:lang="it">Supporto ostree Host Atomic Host</name>
    <name xml:lang="ja">Atomic Host ostree ã‚µãƒãƒ¼ãƒˆ</name>
    <name xml:lang="ko">Atomic Host ostree ì§€ì› </name>
    <name xml:lang="pt">Suporte Atomic Host ostree</name>
    <name xml:lang="pt_BR">Suporte Atomic Host ostree</name>
    <name xml:lang="ru">ÐŸÐ¾Ð´Ð´ÐµÑ€Ð¶ÐºÐ° ÐžÑÑ‚Ñ€Ð¸Ñ ÐÑ‚Ð¾Ð¼Ð½Ð¾Ð³Ð¾ Ð¥Ð¾Ð·ÑÐ¸Ð½Ð°</name>
    <name xml:lang="zh_CN">Atomic Host ostree æ”¯æŒ</name>
    <name xml:lang="zh_TW">Atomic Host ostreeæ”¯æŒ</name>
    <description>Packages mandatory for ostree support.</description>
    <description xml:lang="de">Pakete sind fÃ¼r die UnterstÃ¼tzung von Ostree obligatorisch.</description>
    <description xml:lang="es">Los paquetes son obligatorios para el soporte de ostÃƒculos.</description>
    <description xml:lang="fr">Packages obligatoires pour le support ostree.</description>
    <description xml:lang="it">Pacchetti obbligatori per il supporto ostree.</description>
    <description xml:lang="ja">ostree ã‚µãƒãƒ¼ãƒˆã«å¿…é ˆã®ãƒ‘ãƒƒã‚±ãƒ¼ã‚¸ã§ã™ã€‚</description>
    <description xml:lang="ko">ostree ì§€ì›ì— ëŒ€í•œ í•„ìˆ˜ íŒ¨í‚¤ì§€ìž…ë‹ˆë‹¤. </description>
    <description xml:lang="pt">Pacotes obrigatÃ³rios para suporte ostree.</description>
    <description xml:lang="pt_BR">Pacotes obrigatÃ³rios para suporte ostree.</description>
    <description xml:lang="ru">ÐŸÐ°ÐºÐµÑ‚Ñ‹, Ð¾Ð±ÑÐ·Ð°Ñ‚ÐµÐ»ÑŒÐ½Ñ‹Ðµ Ð´Ð»Ñ Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶ÐºÐ¸ Ð¾ÑÑ‚Ñ€Ð¸Ñ.</description>
    <description xml:lang="zh_CN">ostree æ”¯æŒå¿…éœ€çš„è½¯ä»¶åŒ…ã€‚</description>
    <description xml:lang="zh_TW">ostreeæ”¯æŒå¿…éœ€çš„åŒ…ã€‚</description>
    <default>true</default>
    <uservisible>false</uservisible>
    <packagelist>
      <packagereq type="mandatory">nss-altfiles</packagereq>
      <packagereq type="mandatory">ostree-grub2</packagereq>
      <packagereq type="mandatory">rpm-ostree</packagereq>
    </packagelist>
  </group>
  <group>
    <id>performance</id>
    <name>Performance Tools</name>
    <name xml:lang="as">à¦•à¦¾à§°à§à¦¯à§à¦¯à¦•à§à¦·à¦®à¦¤à¦¾ à¦¸à¦®à§à¦¬à¦¨à§à¦§à§€à§Ÿ à¦¸à¦à¦œà§à¦²à¦¿à¦¸à¦®à§‚à¦¹</name>
    <name xml:lang="bn">à¦•à¦°à§à¦®à¦•à§à¦·à¦®à¦¤à¦¾ à¦¸à¦®à§à¦¬à¦¨à§à¦§à§€à§Ÿ à¦¸à¦°à¦žà§à¦œà¦¾à¦®</name>
    <name xml:lang="cs">NÃ¡stroje pro sprÃ¡vu vÃ½konu</name>
    <name xml:lang="de">Performanz-Tools</name>
    <name xml:lang="de_CH">Performanz-Tools</name>
    <name xml:lang="es">Herramientas de rendimiento</name>
    <name xml:lang="fr">Outils de performance</name>
    <name xml:lang="gu">àªªà«àª°àª­àª¾àªµ àª¸àª¾àª§àª¨à«‹</name>
    <name xml:lang="hi">à¤ªà¥à¤°à¤¦à¤°à¥à¤¶à¤¨ à¤”à¤œà¤¾à¤°</name>
    <name xml:lang="ia">Instrumentos de rendimento</name>
    <name xml:lang="it">Tool di prestazione</name>
    <name xml:lang="ja">ãƒ‘ãƒ•ã‚©ãƒ¼ãƒžãƒ³ã‚¹ãƒ„ãƒ¼ãƒ«</name>
    <name xml:lang="kn">à²•à²¾à²°à³à²¯à²¨à²¿à²°à³à²µà²¾à²¹à²£à²¾ à²‰à²ªà²•à²°à²£à²—à²³à³</name>
    <name xml:lang="ko">ì„±ëŠ¥ íˆ´ </name>
    <name xml:lang="ml">à´ªàµà´°à´µà´°àµâ€à´¤àµà´¤à´¨ à´‰à´ªà´•à´°à´£à´™àµà´™à´³àµâ€</name>
    <name xml:lang="mr">à¤•à¥à¤·à¤®à¤¤à¤¾ à¤¸à¤¾à¤§à¤¨à¥‡</name>
    <name xml:lang="or">à¬•à¬¾à¬°à­à¬¯à­à­Ÿà¬•à­à¬·à¬®à¬¤à¬¾ à¬¸à¬¾à¬§à¬¨à¬®à¬¾à¬¨</name>
    <name xml:lang="pa">à¨•à¨¾à¨°à¨œà¨•à©à¨¶à¨²à¨¤à¨¾ à¨¸à©°à¨¦</name>
    <name xml:lang="pl">NarzÄ™dzia wydajnoÅ›ci</name>
    <name xml:lang="pt">Ferramentas de desempenho</name>
    <name xml:lang="pt_BR">Ferramentas de desempenho</name>
    <name xml:lang="ru">Ð¡Ñ€ÐµÐ´ÑÑ‚Ð²Ð° ÐºÐ¾Ð½Ñ‚Ñ€Ð¾Ð»Ñ Ð¿Ñ€Ð¾Ð¸Ð·Ð²Ð¾Ð´Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð¾ÑÑ‚Ð¸</name>
    <name xml:lang="sv">Prestandaverktyg</name>
    <name xml:lang="ta">à®šà¯†à®¯à®±à¯à®ªà®Ÿà¯à®¤à¯à®¤à®•à¯à®•à¯‚à®Ÿà®¿à®¯ à®•à®°à¯à®µà®¿à®•à®³à¯.</name>
    <name xml:lang="te">à°ªà°¨à°¿à°¤à°¨à°ªà± à°¸à°¾à°§à°¨à°®à±à°²à±</name>
    <name xml:lang="uk">ÐŸÑ–Ð´Ñ‚Ñ€Ð¸Ð¼Ð°Ð½Ð½Ñ ÑˆÐ²Ð¸Ð´ÐºÐ¾Ð´Ñ–Ñ—</name>
    <name xml:lang="zh">æ•ˆèƒ½å·¥å…·</name>
    <name xml:lang="zh_CN">æ€§èƒ½å·¥å…·</name>
    <name xml:lang="zh_TW">æ•ˆèƒ½å·¥å…·</name>
    <description>Tools for diagnosing system and application-level performance problems.</description>
    <description xml:lang="as">à¦šà¦¿à¦¸à§à¦Ÿà§‡à¦® à¦†à§°à§ à¦à¦ªà§à¦²à¦¿à¦•à§‡à¦šà¦¨ à¦¸à§à¦¤à§°à¦¤ à¦•à¦¾à§°à§à¦¯à§à¦¯à¦•à§à¦·à¦®à¦¤à¦¾ à¦¸à¦‚à¦•à§à§°à¦¾à¦¨à§à¦¤ à¦¸à¦®à¦¸à§à¦¯à¦¾à§° à¦•à¦¾à§°à¦£ à¦¨à¦¿à§°à§à¦£à§Ÿ à¦•à§°à¦¾à§° à¦¬à¦¿à¦­à¦¿à¦¨à§à¦¨ à¦¸à¦à¦œà§à¦²à¦¿à¦¸à¦®à§‚à¦¹à¥¤</description>
    <description xml:lang="bn">à¦¸à¦¿à¦¸à§à¦Ÿà§‡à¦® à¦“ à¦…à§à¦¯à¦¾à¦ªà§à¦²à¦¿à¦•à§‡à¦¶à¦¨ à¦¸à§à¦¤à¦°à§‡ à¦•à¦°à§à¦®à¦•à§à¦·à¦®à¦¤à¦¾ à¦¸à¦‚à¦•à§à¦°à¦¾à¦¨à§à¦¤ à¦¸à¦®à¦¸à§à¦¯à¦¾à¦° à¦•à¦¾à¦°à¦£à¦¨à¦¿à¦°à§à¦£à§Ÿ à¦•à¦°à¦¾à¦° à¦¬à¦¿à¦­à¦¿à¦¨à§à¦¨ à¦¸à¦°à¦žà§à¦œà¦¾à¦®à¥¤</description>
    <description xml:lang="cs">NÃ¡stroje pro diagnostiku potÃ­Å¾Ã­ s vÃ½konem na Ãºrovni aplikacÃ­ a systÃ©mu.</description>
    <description xml:lang="de">Tools fÃ¼r die Diagnose von Performanzproblemen auf System- und Applikationslevel.</description>
    <description xml:lang="de_CH">Tools fÃ¼r die Diagnose von Performanzproblemen auf System- und Applikationslevel.</description>
    <description xml:lang="es">Herramientas para sistemas de diagnÃ³stico y problemas de rendimiento a nivel de aplicaciÃ³n.</description>
    <description xml:lang="fr">Outils pour diagnostiquer le systÃ¨me et les problÃ¨mes de performance au niveau des applications.</description>
    <description xml:lang="gu">àª¸àª¿àª¸à«àªŸàª® àª…àª¨à«‡ àª•àª¾àª°à«àª¯àª•à«àª°àª®-àª¸à«àª¤àª° àªªà«àª°àª­àª¾àªµ àª¸àª®àª¸à«àª¯àª¾àª“àª¨à«àª‚ àª¨àª¿àª¦àª¾àª°àª¨ àª•àª°àªµàª¾ àª®àª¾àªŸà«‡ àª¸àª¾àª§àª¨à«‹.</description>
    <description xml:lang="hi">à¤¤à¤‚à¤¤à¥à¤° à¤”à¤° à¤…à¤¨à¥à¤ªà¥à¤°à¤¯à¥‹à¤— à¤¸à¥à¤¤à¤° à¤•à¥‡ à¤ªà¥à¤°à¤¦à¤°à¥à¤¶à¤¨ à¤•à¥€ à¤¸à¤®à¤¸à¥à¤¯à¤¾ à¤•à¥‡ à¤¨à¤¿à¤¦à¤¾à¤¨ à¤•à¥‡ à¤²à¤¿à¤ à¤”à¤œà¤¼à¤¾à¤°.</description>
    <description xml:lang="ia">Instrumentos pro diagnosticar problemas in le rendimento del systema o de applicationes.</description>
    <description xml:lang="it">Tool per la diagnosi dei problemi di prestazione del sistema e livello-applicazione.</description>
    <description xml:lang="ja">ã‚·ã‚¹ãƒ†ãƒ ãŠã‚ˆã³ã‚¢ãƒ—ãƒªã‚±ãƒ¼ã‚·ãƒ§ãƒ³ãƒ¬ãƒ™ãƒ«ã®ãƒ‘ãƒ•ã‚©ãƒ¼ãƒžãƒ³ã‚¹å•é¡Œã‚’åˆ†æžã™ã‚‹ãƒ„ãƒ¼ãƒ«ã§ã™ã€‚</description>
    <description xml:lang="kn">à²µà³à²¯à²µà²¸à³à²¥à³†à²¯ à²¹à²¾à²—à³ à²…à²¨à³à²µà²¯ à²®à²Ÿà³à²Ÿà²¦ à²•à²¾à²°à³à²¯à²¨à²¿à²°à³à²µà²¹à²£à³†à²¯à²²à³à²²à²¿ à²‰à²‚à²Ÿà²¾à²—à³à²µ à²¤à³Šà²‚à²¦à²°à³†à²—à²³à²¨à³à²¨à³ à²ªà²¤à³à²¤à³† à²®à²¾à²¡à³à²µ à²‰à²ªà²•à²°à²£à²—à²³à³.</description>
    <description xml:lang="ko">ì‹œìŠ¤í…œê³¼ ì–´í”Œë¦¬ì¼€ì´ì…˜ ìˆ˜ì¤€ì˜ ì„±ëŠ¥ ë¬¸ì œë¥¼ ì§„ë‹¨í•˜ê¸° ìœ„í•œ íˆ´ </description>
    <description xml:lang="ml">à´¸à´¿à´¸àµà´±àµà´±à´¤àµà´¤à´¿à´¨àµà´‚ à´ªàµà´°à´¯àµ‹à´—à´¤àµà´¤à´¿à´¨àµà´®àµà´³àµà´³ à´ªàµà´°à´µà´°àµâ€à´¤àµà´¤à´¨ à´¤à´•à´°à´¾à´±àµà´•à´³àµâ€ à´•à´£àµà´Ÿàµà´ªà´¿à´Ÿà´¿à´•àµà´•àµà´¨àµà´¨à´¤à´¿à´¨àµà´³àµà´³ à´ªàµà´°à´¯àµ‹à´—à´™àµà´™à´³àµâ€.</description>
    <description xml:lang="mr">à¤ªà¥à¤°à¤£à¤¾à¤²à¥€ à¤µ à¤à¤ªà¥à¤²à¤¿à¤•à¥‡à¤¶à¤¨-à¤¸à¥à¤¤à¤°à¥€à¤¯ à¤•à¥à¤·à¤®à¤¤à¤¾ à¤…à¤¡à¤šà¤£à¥€à¤‚à¤šà¥à¤¯à¤¾ à¤µà¤¿à¤¶à¥à¤²à¥‡à¤·à¤£à¤•à¤°à¥€à¤¤à¤¾ à¤¸à¤¾à¤§à¤¨à¥‡.</description>
    <description xml:lang="or">à¬¤à¬¨à­à¬¤à­à¬° à¬à¬¬à¬‚ à¬ªà­à¬°à­Ÿà­‹à¬—-à¬¸à­à¬¤à¬°à­€à­Ÿ à¬•à¬¾à¬°à­à¬¯à­à­Ÿà¬•à­à¬·à¬®à¬¤à¬¾ à¬¸à¬®à¬¸à­à­Ÿà¬¾à¬—à­à¬¡à¬¼à¬¿à¬•à­ à¬¬à¬¿à¬¶à­à¬³à­‡à¬·à¬£ à¬•à¬°à¬¿à¬¬à¬¾ à¬ªà¬¾à¬‡à¬ à¬¸à¬¾à¬§à¬¨à¬—à­à¬¡à¬¼à¬¿à¬•à¥¤</description>
    <description xml:lang="pa">à¨¸à¨¿à¨¸à¨Ÿà¨® à¨…à¨¤à©‡ à¨à¨ªà¨²à©€à¨•à©‡à¨¶à¨¨-à¨ªà©±à¨§à¨° à¨¦à©€à¨†à¨‚ à¨•à¨¾à¨°à¨œà¨•à©à¨¶à¨²à¨¤à¨¾ à¨¸à¨®à©±à¨¸à¨¿à¨†à¨µà¨¾à¨‚ à¨²à¨ˆ à¨Ÿà©‚à¨²à¥¤</description>
    <description xml:lang="pl">NarzÄ™dzia do diagnozowania problemÃ³w z wydajnoÅ›ciÄ… na poziomie systemu i aplikacji.</description>
    <description xml:lang="pt">Ferramentas para diagnosticar problemas de desempenho de sistema e nÃ­vel de aplicativo.</description>
    <description xml:lang="pt_BR">Ferramentas para diagnosticar problemas de desempenho de sistema e nÃ­vel de aplicativo.</description>
    <description xml:lang="ru">Ð¡Ñ€ÐµÐ´ÑÑ‚Ð²Ð° Ð´Ð¸Ð°Ð³Ð½Ð¾ÑÑ‚Ð¸ÐºÐ¸ ÑÐ¸ÑÑ‚ÐµÐ¼Ñ‹ Ð¸ Ð¿Ñ€Ð¾Ð¸Ð·Ð²Ð¾Ð´Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð¾ÑÑ‚Ð¸ Ð½Ð° ÑƒÑ€Ð¾Ð²Ð½Ðµ Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ð¹.</description>
    <description xml:lang="sv">Verktyg fÃ¶r diagnostik av prestandaproblem pÃ¥ system- och programnivÃ¥.</description>
    <description xml:lang="ta">à®•à®£à®¿à®©à®¿à®¯à¯ˆ à®ªà®°à®¿à®šà¯‹à®¤à®¿à®•à¯à®• à®®à®±à¯à®±à¯à®®à¯ à®ªà®¯à®©à¯à®ªà®¾à®Ÿà¯-à®®à®Ÿà¯à®Ÿ à®šà¯†à®¯à®±à¯à®ªà®Ÿà¯à®¤à¯à®¤à®²à¯ à®šà®¿à®•à¯à®•à®²à¯à®•à®³à¯à®•à¯à®•à®¾à®© à®•à®°à¯à®µà®¿à®•à®³à¯.</description>
    <description xml:lang="te">à°¸à°¿à°¸à±à°Ÿà°®à± à°®à°°à°¿à°¯à± à°…à°¨à±à°µà°°à±à°¤à°¨-à°¸à±à°¥à°¾à°¯à°¿ à°ªà°¨à°¿à°¤à°¨à°ªà± à°¸à°®à°¸à±à°¯à°²à°¨à± à°µà°¿à°¶à±à°²à±‡à°·à°¿à°‚à°šà±à°Ÿà°•à± à°¸à°¾à°§à°¨à°®à±à°²à±.</description>
    <description xml:lang="uk">ÐŸÑ€Ð¾Ð³Ñ€Ð°Ð¼Ð¸ Ð´Ð»Ñ Ð´Ñ–Ð°Ð³Ð½Ð¾ÑÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð¿Ñ€Ð¾Ð±Ð»ÐµÐ¼ ÑˆÐ²Ð¸Ð´ÐºÐ¾Ð´Ñ–Ñ— ÑÐ¸ÑÑ‚ÐµÐ¼Ð¸ Ñ‚Ð° Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð½Ð¾Ð³Ð¾ Ñ€Ñ–Ð²Ð½Ñ.</description>
    <description xml:lang="zh">ç”¨ä¾†ç‚ºç³»çµ±å’Œæ‡‰ç”¨ç¨‹å¼å±¤ç´šæ•ˆèƒ½å•é¡Œé€²è¡Œè¨ºæ–·çš„å·¥å…·ã€‚</description>
    <description xml:lang="zh_CN">è¯Šæ–­ç³»ç»Ÿå’Œç¨‹åºçº§åˆ«æ€§èƒ½é—®é¢˜çš„å·¥å…·ã€‚</description>
    <description xml:lang="zh_TW">ç”¨ä¾†ç‚ºç³»çµ±å’Œæ‡‰ç”¨ç¨‹å¼å±¤ç´šæ•ˆèƒ½å•é¡Œé€²è¡Œè¨ºæ–·çš„å·¥å…·ã€‚</description>
    <default>true</default>
    <uservisible>false</uservisible>
    <packagelist>
      <packagereq type="mandatory">sysstat</packagereq>
      <packagereq type="default">grafana</packagereq>
      <packagereq type="default">grafana-pcp</packagereq>
      <packagereq type="default">iowatcher</packagereq>
      <packagereq type="default">pcp</packagereq>
      <packagereq type="default">pcp-conf</packagereq>
      <packagereq type="default">pcp-devel</packagereq>
      <packagereq type="default">pcp-doc</packagereq>
      <packagereq type="default">pcp-export-pcp2elasticsearch</packagereq>
      <packagereq type="default">pcp-export-pcp2graphite</packagereq>
      <packagereq type="default">pcp-export-pcp2influxdb</packagereq>
      <packagereq type="default">pcp-export-pcp2json</packagereq>
      <packagereq type="default">pcp-export-pcp2spark</packagereq>
      <packagereq type="default">pcp-export-pcp2xml</packagereq>
      <packagereq type="default">pcp-export-pcp2zabbix</packagereq>
      <packagereq type="default">pcp-export-zabbix-agent</packagereq>
      <packagereq type="default">pcp-gui</packagereq>
      <packagereq type="default">pcp-import-collectl2pcp</packagereq>
      <packagereq type="default">pcp-import-ganglia2pcp</packagereq>
      <packagereq type="default">pcp-import-iostat2pcp</packagereq>
      <packagereq type="default">pcp-import-mrtg2pcp</packagereq>
      <packagereq type="default">pcp-import-sar2pcp</packagereq>
      <packagereq type="default">pcp-libs</packagereq>
      <packagereq type="default">pcp-libs-devel</packagereq>
      <packagereq type="default">pcp-pmda-activemq</packagereq>
      <packagereq type="default">pcp-pmda-apache</packagereq>
      <packagereq type="default">pcp-pmda-bash</packagereq>
      <packagereq type="default">pcp-pmda-bcc</packagereq>
      <packagereq type="default">pcp-pmda-bind2</packagereq>
      <packagereq type="default">pcp-pmda-bonding</packagereq>
      <packagereq type="default">pcp-pmda-bpftrace</packagereq>
      <packagereq type="default">pcp-pmda-cifs</packagereq>
      <packagereq type="default">pcp-pmda-cisco</packagereq>
      <packagereq type="default">pcp-pmda-dbping</packagereq>
      <packagereq type="default">pcp-pmda-dm</packagereq>
      <packagereq type="default">pcp-pmda-ds389</packagereq>
      <packagereq type="default">pcp-pmda-ds389log</packagereq>
      <packagereq type="default">pcp-pmda-elasticsearch</packagereq>
      <packagereq type="default">pcp-pmda-gfs2</packagereq>
      <packagereq type="default">pcp-pmda-gluster</packagereq>
      <packagereq type="default">pcp-pmda-gpfs</packagereq>
      <packagereq type="default">pcp-pmda-gpsd</packagereq>
      <packagereq type="default">pcp-pmda-haproxy</packagereq>
      <packagereq type="default">pcp-pmda-infiniband</packagereq>
      <packagereq type="default">pcp-pmda-json</packagereq>
      <packagereq type="default">pcp-pmda-kvm</packagereq>
      <packagereq type="default">pcp-pmda-libvirt</packagereq>
      <packagereq type="default">pcp-pmda-lio</packagereq>
      <packagereq type="default">pcp-pmda-lmsensors</packagereq>
      <packagereq type="default">pcp-pmda-logger</packagereq>
      <packagereq type="default">pcp-pmda-lustre</packagereq>
      <packagereq type="default">pcp-pmda-lustrecomm</packagereq>
      <packagereq type="default">pcp-pmda-mailq</packagereq>
      <packagereq type="default">pcp-pmda-memcache</packagereq>
      <packagereq type="default">pcp-pmda-mic</packagereq>
      <packagereq type="default">pcp-pmda-mounts</packagereq>
      <packagereq type="default">pcp-pmda-mssql</packagereq>
      <packagereq type="default">pcp-pmda-mysql</packagereq>
      <packagereq type="default">pcp-pmda-named</packagereq>
      <packagereq type="default">pcp-pmda-netcheck</packagereq>
      <packagereq type="default">pcp-pmda-netfilter</packagereq>
      <packagereq type="default">pcp-pmda-news</packagereq>
      <packagereq type="default">pcp-pmda-nfsclient</packagereq>
      <packagereq type="default">pcp-pmda-nginx</packagereq>
      <packagereq type="default">pcp-pmda-nvidia-gpu</packagereq>
      <packagereq type="default">pcp-pmda-openmetrics</packagereq>
      <packagereq type="default">pcp-pmda-openvswitch</packagereq>
      <packagereq type="default">pcp-pmda-oracle</packagereq>
      <packagereq type="default">pcp-pmda-pdns</packagereq>
      <packagereq type="default">pcp-pmda-perfevent</packagereq>
      <packagereq type="default">pcp-pmda-podman</packagereq>
      <packagereq type="default">pcp-pmda-postfix</packagereq>
      <packagereq type="default">pcp-pmda-postgresql</packagereq>
      <packagereq type="default">pcp-pmda-rabbitmq</packagereq>
      <packagereq type="default">pcp-pmda-redis</packagereq>
      <packagereq type="default">pcp-pmda-roomtemp</packagereq>
      <packagereq type="default">pcp-pmda-rpm</packagereq>
      <packagereq type="default">pcp-pmda-rsyslog</packagereq>
      <packagereq type="default">pcp-pmda-samba</packagereq>
      <packagereq type="default">pcp-pmda-sendmail</packagereq>
      <packagereq type="default">pcp-pmda-shping</packagereq>
      <packagereq type="default">pcp-pmda-slurm</packagereq>
      <packagereq type="default">pcp-pmda-smart</packagereq>
      <packagereq type="default">pcp-pmda-snmp</packagereq>
      <packagereq type="default">pcp-pmda-statsd</packagereq>
      <packagereq type="default">pcp-pmda-summary</packagereq>
      <packagereq type="default">pcp-pmda-systemd</packagereq>
      <packagereq type="default">pcp-pmda-trace</packagereq>
      <packagereq type="default">pcp-pmda-unbound</packagereq>
      <packagereq type="default">pcp-pmda-vmware</packagereq>
      <packagereq type="default">pcp-pmda-weblog</packagereq>
      <packagereq type="default">pcp-pmda-zimbra</packagereq>
      <packagereq type="default">pcp-pmda-zswap</packagereq>
      <packagereq type="default">pcp-selinux</packagereq>
      <packagereq type="default">pcp-system-tools</packagereq>
      <packagereq type="default">pcp-zeroconf</packagereq>
      <packagereq type="default">perl-PCP-LogImport</packagereq>
      <packagereq type="default">perl-PCP-LogSummary</packagereq>
      <packagereq type="default">perl-PCP-MMV</packagereq>
      <packagereq type="default">perl-PCP-PMDA</packagereq>
      <packagereq type="default">powertop</packagereq>
      <packagereq type="default">python3-pcp</packagereq>
      <packagereq type="optional">fio</packagereq>
      <packagereq type="optional">iperf3</packagereq>
      <packagereq type="optional">libpfm</packagereq>
      <packagereq type="optional">papi</packagereq>
      <packagereq type="optional">papi-devel</packagereq>
      <packagereq type="optional">pcp-manager</packagereq>
      <packagereq type="optional">pcp-pmda-docker</packagereq>
      <packagereq type="optional">pcp-testsuite</packagereq>
      <packagereq type="optional">systemtap</packagereq>
      <packagereq type="optional">tuned-utils</packagereq>
      <packagereq type="optional">valgrind</packagereq>
    </packagelist>
  </group>
  <group>
    <id>platform-devel</id>
    <name>Platform Development</name>
    <name xml:lang="as">à¦ªà§à¦²à§‡à¦Ÿà¦«à§°à§à¦® à¦‰à¦¨à§à¦¨à§Ÿà¦¨</name>
    <name xml:lang="cs">VÃ½voj platformy</name>
    <name xml:lang="de">Plattformentwicklung</name>
    <name xml:lang="de_CH">Plattformentwicklung</name>
    <name xml:lang="es">Desarrollo de plataforma</name>
    <name xml:lang="fr">DÃ©veloppement plateforme</name>
    <name xml:lang="gu">àªªà«àª²à«‡àªŸàª«à«‹àª°à«àª® àªµàª¿àª•àª¾àª¸</name>
    <name xml:lang="hi">à¤ªà¥à¤²à¥ˆà¤Ÿà¤«à¥‰à¤°à¥à¤® à¤µà¤¿à¤•à¤¾à¤¸</name>
    <name xml:lang="it">Sviluppo piattaforma</name>
    <name xml:lang="ja">ãƒ—ãƒ©ãƒƒãƒˆãƒ•ã‚©ãƒ¼ãƒ é–‹ç™º</name>
    <name xml:lang="kn">à²ªà³à²²à²¾à²Ÿà³â€Œà²«à²¾à²°à³à²®à³ à²µà²¿à²•à²¸à²¨</name>
    <name xml:lang="ko">í”Œëž«í¼ ê°œë°œ</name>
    <name xml:lang="ml">à´ªàµà´²à´¾à´±àµà´±àµà´«àµ‹à´‚ à´µà´¿à´•à´¸à´¨à´‚</name>
    <name xml:lang="mr">à¤ªà¥à¤²à¥…à¤Ÿà¤«à¥‰à¤°à¥à¤® à¤¡à¥‡à¤µà¥à¤¹à¤²à¤ªà¤®à¥‡à¤‚à¤Ÿ</name>
    <name xml:lang="or">à¬ªà­à¬²à¬¾à¬Ÿà¬«à¬°à­à¬® à¬¬à¬¿à¬•à¬¾à¬¶</name>
    <name xml:lang="pa">à¨®à©°à¨š à¨µà¨¿à¨•à¨¾à¨¸</name>
    <name xml:lang="pl">Rozwijanie platformy</name>
    <name xml:lang="pt">Desenvolvimento de Plataforma</name>
    <name xml:lang="pt_BR">Desenvolvimento de Plataforma</name>
    <name xml:lang="ru">Ð¡Ñ€ÐµÐ´ÑÑ‚Ð²Ð° Ñ€Ð°Ð·Ñ€Ð°Ð±Ð¾Ñ‚ÐºÐ¸ Ð¿Ð»Ð°Ñ‚Ñ„Ð¾Ñ€Ð¼Ñ‹</name>
    <name xml:lang="ta">à®‡à®¯à®™à¯à®•à¯ à®¤à®³ à®‰à®°à¯à®µà®¾à®•à¯à®•à®®à¯</name>
    <name xml:lang="te">à°ªà±à°²à°¾à°Ÿà±â€Œà°«à°¾à°‚ à°…à°­à°¿à°µà±ƒà°¦à±à°¦à°¿</name>
    <name xml:lang="uk">Ð Ð¾Ð·Ñ€Ð¾Ð±ÐºÐ° Ð´Ð»Ñ Ð¿Ð»Ð°Ñ‚Ñ„Ð¾Ñ€Ð¼Ð¸</name>
    <name xml:lang="zh">å¹³å°é–‹ç™¼</name>
    <name xml:lang="zh_CN">å¹³å°å¼€å‘</name>
    <name xml:lang="zh_TW">å¹³å°é–‹ç™¼</name>
    <description>Recommended development headers and libraries for developing applications to run on CentOS Linux.</description>
    <default>true</default>
    <uservisible>false</uservisible>
    <packagelist>
      <packagereq type="mandatory">atk-devel</packagereq>
      <packagereq type="mandatory">cairo-devel</packagereq>
      <packagereq type="mandatory">compat-libtiff3</packagereq>
      <packagereq type="mandatory">dbus-devel</packagereq>
      <packagereq type="mandatory">desktop-file-utils</packagereq>
      <packagereq type="mandatory">gtk2-devel</packagereq>
      <packagereq type="mandatory">gtk2-devel-docs</packagereq>
      <packagereq type="mandatory">gtk3-devel</packagereq>
      <packagereq type="mandatory">libICE-devel</packagereq>
      <packagereq type="mandatory">libSM-devel</packagereq>
      <packagereq type="mandatory">libX11-devel</packagereq>
      <packagereq type="mandatory">libXScrnSaver-devel</packagereq>
      <packagereq type="mandatory">libXext-devel</packagereq>
      <packagereq type="mandatory">libXft-devel</packagereq>
      <packagereq type="mandatory">libXi-devel</packagereq>
      <packagereq type="mandatory">libXrender-devel</packagereq>
      <packagereq type="mandatory">libXt-devel</packagereq>
      <packagereq type="mandatory">libXtst-devel</packagereq>
      <packagereq type="mandatory">libXv-devel</packagereq>
      <packagereq type="mandatory">libXxf86dga-devel</packagereq>
      <packagereq type="mandatory">libXxf86misc-devel</packagereq>
      <packagereq type="mandatory">libdb-devel</packagereq>
      <packagereq type="mandatory">libjpeg-turbo-devel</packagereq>
      <packagereq type="mandatory">libpng15</packagereq>
      <packagereq type="mandatory">libstdc++-devel</packagereq>
      <packagereq type="mandatory">libvirt-devel</packagereq>
      <packagereq type="mandatory">libxml2-devel</packagereq>
      <packagereq type="mandatory">libxshmfence-devel</packagereq>
      <packagereq type="mandatory">mesa-libGL-devel</packagereq>
      <packagereq type="mandatory">mesa-libGLU-devel</packagereq>
      <packagereq type="mandatory">mesa-libGLw-devel</packagereq>
      <packagereq type="mandatory">nss-devel</packagereq>
      <packagereq type="mandatory">pango-devel</packagereq>
      <packagereq type="mandatory">qt5-qt3d-devel</packagereq>
      <packagereq type="mandatory">qt5-qtbase-mysql</packagereq>
      <packagereq type="mandatory">qt5-qtbase-odbc</packagereq>
      <packagereq type="mandatory">qt5-qtbase-postgresql</packagereq>
      <packagereq type="mandatory">qt5-qtcanvas3d</packagereq>
      <packagereq type="mandatory">qt5-qtconnectivity-devel</packagereq>
      <packagereq type="mandatory">qt5-qtdoc</packagereq>
      <packagereq type="mandatory">qt5-qtgraphicaleffects</packagereq>
      <packagereq type="mandatory">qt5-qtimageformats</packagereq>
      <packagereq type="mandatory">qt5-qtlocation-devel</packagereq>
      <packagereq type="mandatory">qt5-qtmultimedia-devel</packagereq>
      <packagereq type="mandatory">qt5-qtquickcontrols</packagereq>
      <packagereq type="mandatory">qt5-qtquickcontrols2</packagereq>
      <packagereq type="mandatory">qt5-qtscript-devel</packagereq>
      <packagereq type="mandatory">qt5-qtsensors-devel</packagereq>
      <packagereq type="mandatory">qt5-qtserialbus</packagereq>
      <packagereq type="mandatory">qt5-qtserialport-devel</packagereq>
      <packagereq type="mandatory">qt5-qtsvg-devel</packagereq>
      <packagereq type="mandatory">qt5-qttools-devel</packagereq>
      <packagereq type="mandatory">qt5-qttranslations</packagereq>
      <packagereq type="mandatory">qt5-qtwayland</packagereq>
      <packagereq type="mandatory">qt5-qtwebchannel-devel</packagereq>
      <packagereq type="mandatory">qt5-qtwebsockets-devel</packagereq>
      <packagereq type="mandatory">qt5-qtx11extras-devel</packagereq>
      <packagereq type="mandatory">qt5-qtxmlpatterns-devel</packagereq>
      <packagereq type="mandatory">xorg-x11-docs</packagereq>
      <packagereq type="optional">spirv-tools</packagereq>
      <packagereq type="optional">spirv-tools-libs</packagereq>
      <packagereq type="optional">vulkan-tools</packagereq>
      <packagereq type="optional">vulkan-validation-layers</packagereq>
    </packagelist>
  </group>
  <group>
    <id>platform-kvm</id>
    <name>KVM platform specific packages</name>
    <name xml:lang="de">KVM plattformspezifische Pakete</name>
    <name xml:lang="es">Paquetes especÃ­ficos para la plataforma KVM</name>
    <name xml:lang="fr">Packages spÃ©cifiques Ã  la plateforme KVM</name>
    <name xml:lang="it">Pacchetti specifici della piattaforma KVM</name>
    <name xml:lang="ja">KVM ãƒ—ãƒ©ãƒƒãƒˆãƒ•ã‚©ãƒ¼ãƒ å›ºæœ‰ã®ãƒ‘ãƒƒã‚±ãƒ¼ã‚¸</name>
    <name xml:lang="ko">KVM í”Œëž«í¼ íŠ¹ì • íŒ¨í‚¤ì§€ </name>
    <name xml:lang="pt">Pacotes especÃ­ficos da plataforma KVM</name>
    <name xml:lang="pt_BR">Pacotes especÃ­ficos da plataforma KVM</name>
    <name xml:lang="ru">Ð¡Ð¿ÐµÑ†Ð¸Ð°Ð»ÑŒÐ½Ñ‹Ðµ Ð¿Ð°ÐºÐµÑ‚Ñ‹ KVM-Ð¿Ð»Ð°Ñ‚Ñ„Ð¾Ñ€Ð¼ÐµÐ½Ð½Ñ‹Ñ… Ñ€ÐµÑˆÐµÐ½Ð¸Ð¹</name>
    <name xml:lang="zh_CN">KVM å¹³å°ç‰¹å®šè½¯ä»¶åŒ…</name>
    <name xml:lang="zh_TW">KVMå¹³å°ç‰¹å®šåŒ…</name>
    <description>Virtualization utilities and drivers for KVM</description>
    <description xml:lang="de">Virtualisierungswerkzeuge und -treiber fÃ¼r KVM</description>
    <description xml:lang="es">Utilidades y controladores de virtualizaciÃ³n para KVM</description>
    <description xml:lang="fr">Utilitaire de virtualisation et pilotes KVM</description>
    <description xml:lang="it">UtilitÃ  di virtualizzazione e driver per KVM</description>
    <description xml:lang="ja">KVM ç”¨ã®ä»®æƒ³åŒ–ãƒ¦ãƒ¼ãƒ†ã‚£ãƒªãƒ†ã‚£ãƒ¼ãŠã‚ˆã³ãƒ‰ãƒ©ã‚¤ãƒãƒ¼</description>
    <description xml:lang="ko">KVMì˜ ê°€ìƒí™” ìœ í‹¸ë¦¬í‹° ë° ë“œë¼ì´ë²„ </description>
    <description xml:lang="pt">UtilitÃ¡rios e drivers de virtualizaÃ§Ã£o para KVM</description>
    <description xml:lang="pt_BR">UtilitÃ¡rios e drivers de virtualizaÃ§Ã£o para KVM</description>
    <description xml:lang="ru">Ð£Ñ‚Ð¸Ð»Ð¸Ñ‚Ñ‹ Ð²Ð¸Ñ€Ñ‚ÑƒÐ°Ð»Ð¸Ð·Ð°Ñ†Ð¸Ð¸ Ð¸ Ð´Ñ€Ð°Ð¹Ð²ÐµÑ€Ñ‹ Ð´Ð»Ñ KVM</description>
    <description xml:lang="zh_CN">KVM è™šæ‹ŸåŒ–å·¥å…·å’Œé©±åŠ¨</description>
    <description xml:lang="zh_TW">KVMçš„è™›æ“¬åŒ–å¯¦ç”¨ç¨‹åºå’Œé©…å‹•ç¨‹åº</description>
    <default>true</default>
    <uservisible>false</uservisible>
    <packagelist>
      <packagereq type="mandatory">qemu-guest-agent</packagereq>
    </packagelist>
  </group>
  <group>
    <id>platform-microsoft</id>
    <name>Hyper-v platform specific packages</name>
    <name xml:lang="de">Hyper-V plattformspezifische Pakete</name>
    <name xml:lang="es">Paquetes especÃ­ficos de la plataforma Hyper-v</name>
    <name xml:lang="fr">Packages spÃ©cifiques Ã  la plateforme Hyper-v</name>
    <name xml:lang="it">Pacchetti specifici per la piattaforma Hyper-v</name>
    <name xml:lang="ja">Hyper-v ãƒ—ãƒ©ãƒƒãƒˆãƒ•ã‚©ãƒ¼ãƒ å›ºæœ‰ã®ãƒ‘ãƒƒã‚±ãƒ¼ã‚¸</name>
    <name xml:lang="ko">Hyper-v í”Œëž«í¼ íŠ¹ì • íŒ¨í‚¤ì§€ </name>
    <name xml:lang="pt">Pacotes especÃ­ficos da plataforma Hyper-v</name>
    <name xml:lang="pt_BR">Pacotes especÃ­ficos da plataforma Hyper-v</name>
    <name xml:lang="ru">Ð¡Ð¿ÐµÑ†Ð¸Ð°Ð»ÑŒÐ½Ñ‹Ðµ Ð¿Ð°ÐºÐµÑ‚Ñ‹ Ð´Ð»Ñ Ð¿Ð»Ð°Ñ‚Ñ„Ð¾Ñ€Ð¼ Hyper-v</name>
    <name xml:lang="zh_CN">Hyper-v å¹³å°ç‰¹å®šè½¯ä»¶åŒ…</name>
    <name xml:lang="zh_TW">Hyper-vå¹³å°ç‰¹å®šåŒ…</name>
    <description>Virtualization utilities and drivers for Hyper-v</description>
    <description xml:lang="de">Virtualisierungswerkzeuge und -treiber fÃ¼r Hyper-v</description>
    <description xml:lang="es">Utilidades y controladores de virtualizaciÃ³n para Hyper-v</description>
    <description xml:lang="fr">Utilitaires de virtualisation et pilotes Hyper-v</description>
    <description xml:lang="it">UtilitÃ  di virtualizzazione e driver per Hyper-v</description>
    <description xml:lang="ja">Hyper-v ç”¨ã®ä»®æƒ³åŒ–ãƒ¦ãƒ¼ãƒ†ã‚£ãƒªãƒ†ã‚£ãƒ¼ãŠã‚ˆã³ãƒ‰ãƒ©ã‚¤ãƒãƒ¼</description>
    <description xml:lang="ko">Hyper-v ìš© ê°€ìƒí™” ìœ í‹¸ë¦¬í‹° ë° ë“œë¼ì´ë²„ </description>
    <description xml:lang="pt">UtilitÃ¡rios e drivers de virtualizaÃ§Ã£o para Hyper-v</description>
    <description xml:lang="pt_BR">UtilitÃ¡rios e drivers de virtualizaÃ§Ã£o para Hyper-v</description>
    <description xml:lang="ru">Ð£Ñ‚Ð¸Ð»Ð¸Ñ‚Ñ‹ Ð²Ð¸Ñ€Ñ‚ÑƒÐ°Ð»Ð¸Ð·Ð°Ñ†Ð¸Ð¸ Ð¸ Ð´Ñ€Ð°Ð¹Ð²ÐµÑ€Ñ‹ Ð´Ð»Ñ Hyper-v</description>
    <description xml:lang="zh_CN">Hyper-v è™šæ‹ŸåŒ–å·¥å…·å’Œé©±åŠ¨</description>
    <description xml:lang="zh_TW">Hyper-vçš„è™›æ“¬åŒ–å¯¦ç”¨ç¨‹åºå’Œé©…å‹•ç¨‹åº</description>
    <default>true</default>
    <uservisible>false</uservisible>
    <packagelist>
      <packagereq type="default">hyperv-daemons</packagereq>
    </packagelist>
  </group>
  <group>
    <id>platform-vmware</id>
    <name>VMware platform specific packages</name>
    <name xml:lang="de">VMware plattformspezifische Pakete</name>
    <name xml:lang="es">Paquetes especÃ­ficos de la plataforma VMware</name>
    <name xml:lang="fr">Packages spÃ©cifiques Ã  la plateforme VMware</name>
    <name xml:lang="it">Pacchetti specifici della piattaforma VMware</name>
    <name xml:lang="ja">VMware ãƒ—ãƒ©ãƒƒãƒˆãƒ•ã‚©ãƒ¼ãƒ å›ºæœ‰ã®ãƒ‘ãƒƒã‚±ãƒ¼ã‚¸</name>
    <name xml:lang="ko">VMware í”Œëž«í¼ íŠ¹ì • íŒ¨í‚¤ì§€ </name>
    <name xml:lang="pt">Pacotes especÃ­ficos da plataforma VMware</name>
    <name xml:lang="pt_BR">Pacotes especÃ­ficos da plataforma VMware</name>
    <name xml:lang="ru">ÐŸÐ»Ð°Ñ‚Ñ„Ð¾Ñ€Ð¼ÐµÐ½Ð½Ñ‹Ðµ ÑÐ¿ÐµÑ†Ð¸Ñ„Ð¸Ñ‡ÐµÑÐºÐ¸Ðµ Ð¿Ð°ÐºÐµÑ‚Ñ‹ VMware</name>
    <name xml:lang="zh_CN">VMware å¹³å°ç‰¹å®šè½¯ä»¶åŒ…</name>
    <name xml:lang="zh_TW">VMwareå¹³å°ç‰¹å®šåŒ…</name>
    <description>Virtualization utilities and drivers for VMware</description>
    <description xml:lang="de">Virtualisierungs-Dienstprogramme und -Treiber fÃ¼r VMware</description>
    <description xml:lang="es">Utilidades y controladores de virtualizaciÃ³n para VMware</description>
    <description xml:lang="fr">Utilitaires de virtualisation et pilotes VMware</description>
    <description xml:lang="it">UtilitÃ  di virtualizzazione e driver per VMware</description>
    <description xml:lang="ja">VMware ç”¨ã®ä»®æƒ³åŒ–ãƒ¦ãƒ¼ãƒ†ã‚£ãƒªãƒ†ã‚£ãƒ¼ãŠã‚ˆã³ãƒ‰ãƒ©ã‚¤ãƒãƒ¼</description>
    <description xml:lang="ko">VMwareì˜ ê°€ìƒí™” ìœ í‹¸ë¦¬í‹° ë° ë“œë¼ì´ë²„ </description>
    <description xml:lang="pt">UtilitÃ¡rios e drivers de virtualizaÃ§Ã£o para VMware</description>
    <description xml:lang="pt_BR">UtilitÃ¡rios e drivers de virtualizaÃ§Ã£o para VMware</description>
    <description xml:lang="ru">Ð£Ñ‚Ð¸Ð»Ð¸Ñ‚Ñ‹ Ð²Ð¸Ñ€Ñ‚ÑƒÐ°Ð»Ð¸Ð·Ð°Ñ†Ð¸Ð¸ Ð¸ Ð´Ñ€Ð°Ð¹Ð²ÐµÑ€Ñ‹ Ð´Ð»Ñ VMware</description>
    <description xml:lang="zh_CN">VMware è™šæ‹ŸåŒ–å·¥å…·å’Œé©±åŠ¨</description>
    <description xml:lang="zh_TW">VMwareçš„è™›æ“¬åŒ–å¯¦ç”¨ç¨‹åºå’Œé©…å‹•ç¨‹åº</description>
    <default>true</default>
    <uservisible>false</uservisible>
    <packagelist>
      <packagereq type="default">open-vm-tools</packagereq>
      <packagereq type="optional">open-vm-tools-desktop</packagereq>
      <packagereq type="optional">open-vm-tools-sdmp</packagereq>
    </packagelist>
  </group>
  <group>
    <id>print-client</id>
    <name>Printing Client</name>
    <name xml:lang="as">à¦ªà§à§°à¦¿à¦¨à§à¦Ÿà¦¿à¦‚ à¦•à§à¦²à¦¾à¦à¦¨à§à¦Ÿ</name>
    <name xml:lang="cs">TiskovÃ½ klient</name>
    <name xml:lang="de">Druck-Client</name>
    <name xml:lang="de_CH">Druck-Client</name>
    <name xml:lang="es">Cliente de impresiÃ³n</name>
    <name xml:lang="fr">Client d'impression</name>
    <name xml:lang="gu">àª›àª¾àªªàª¨ àª•à«àª²àª¾àª¯àª¨à«àªŸ</name>
    <name xml:lang="hi">à¤•à¥à¤²à¤¾à¤‡à¤‚à¤Ÿ à¤•à¥€ à¤›à¤ªà¤¾à¤ˆ</name>
    <name xml:lang="it">Client di stampa</name>
    <name xml:lang="ja">å°åˆ·ã‚¯ãƒ©ã‚¤ã‚¢ãƒ³ãƒˆ</name>
    <name xml:lang="kn">à²®à³à²¦à³à²°à²£ à²•à³à²²à³ˆà²‚à²Ÿà³</name>
    <name xml:lang="ko">ì¸ì‡„ í´ë¼ì´ì–¸íŠ¸</name>
    <name xml:lang="ml">à´ªàµà´°à´¿à´¨àµà´±àµ à´šàµ†à´¯àµà´¯àµà´¨àµà´¨à´¤à´¿à´¨àµà´³àµà´³ à´•àµà´²à´¯à´¨àµà´±àµ</name>
    <name xml:lang="mr">à¤›à¤ªà¤¾à¤ˆ à¤•à¥à¤²à¤¾à¤à¤‚à¤Ÿ</name>
    <name xml:lang="or">à¬®à­‚à¬¦à­à¬°à¬£ à¬•à­à¬²à¬¾à¬à¬£à­à¬Ÿ</name>
    <name xml:lang="pa">à¨›à¨ªà¨¾à¨ˆ à¨•à¨²à¨¾à¨ˆà¨‚à¨Ÿ</name>
    <name xml:lang="pl">Klient drukowania</name>
    <name xml:lang="pt">Cliente de ImpressÃ£o</name>
    <name xml:lang="pt_BR">Cliente de ImpressÃ£o</name>
    <name xml:lang="ru">ÐšÐ»Ð¸ÐµÐ½Ñ‚ Ð¿ÐµÑ‡Ð°Ñ‚Ð¸</name>
    <name xml:lang="ta">à®…à®šà¯à®šà®¿à®Ÿà®²à¯  à®•à®¿à®³à¯ˆà®¯à®©à¯</name>
    <name xml:lang="te">à°®à±à°¦à±à°°à°¿à°‚à°šà± à°•à±à°²à±ˆà°‚à°Ÿà±</name>
    <name xml:lang="uk">ÐšÐ»Ñ–Ñ”Ð½Ñ‚ Ð´Ñ€ÑƒÐºÑƒ</name>
    <name xml:lang="zh">åˆ—å°å®¢æˆ¶ç«¯</name>
    <name xml:lang="zh_CN">æ‰“å°å®¢æˆ·ç«¯</name>
    <name xml:lang="zh_TW">åˆ—å°å®¢æˆ¶ç«¯</name>
    <description>Tools for printing to a local printer or a remote print server.</description>
    <description xml:lang="as">à¦¸à§à¦¥à¦¾à¦¨à§€à§Ÿ à¦ªà§à§°à¦¿à¦¨à§à¦Ÿà¦¾à§°à§° à¦¬à¦¾ à¦¦à§‚à§°à¦¬à§°à§à¦¤à§€ à¦ªà§à§°à¦¿à¦¨à§à¦Ÿ à¦šà¦¾à§°à§à¦­à¦¾à§°à¦¤ à¦ªà§à§°à¦¿à¦¨à§à¦Ÿ à¦•à§°à¦¾à§° à¦¬à¦¾à¦¬à§‡ à¦¬à§à¦¯à§±à¦¹à§ƒà¦¤ à¦¸à¦à¦œà§à¦²à¦¿à¦¸à¦®à§‚à¦¹à¥¤</description>
    <description xml:lang="bn">à¦¸à§à¦¥à¦¾à¦¨à§€à§Ÿ à¦ªà§à¦°à¦¿à¦¨à§à¦Ÿà¦¾à¦° à¦…à¦¥à¦¬à¦¾ à¦¦à§‚à¦°à¦¬à¦°à§à¦¤à§€ à¦ªà§à¦°à¦¿à¦¨à§à¦Ÿ à¦¸à¦¾à¦°à§à¦­à¦¾à¦°à§‡à¦° à¦®à¦§à§à¦¯à§‡ à¦ªà§à¦°à¦¿à¦¨à§à¦Ÿ à¦•à¦°à¦¾à¦° à¦œà¦¨à§à¦¯ à¦¬à§à¦¯à¦¬à¦¹à§ƒà¦¤ à¦¸à¦°à¦žà§à¦œà¦¾à¦®à¥¤</description>
    <description xml:lang="cs">NÃ¡stroje pro tisk na lokÃ¡lnÃ­ch tiskÃ¡rnÃ¡ch nebo vzdÃ¡lenÃ½ch tiskovÃ½ch serverech.</description>
    <description xml:lang="de">Tools fÃ¼r das Drucken auf einem lokalen oder einem entfernten Drucker-Server.</description>
    <description xml:lang="de_CH">Tools fÃ¼r das Drucken auf einem lokalen oder einem entfernten Drucker-Server.</description>
    <description xml:lang="es">Herramientas para imprimir en una impresora local o un servidor de impresiÃ³n remoto.</description>
    <description xml:lang="fr">Outils pour l'impression sur une imprimante locale ou sur un serveur d'impression Ã  distance.</description>
    <description xml:lang="gu">àª¸à«àª¥àª¾àª¨àª¿àª¯ àªªà«àª°àª¿àª¨à«àªŸàª° àª…àª¥àªµàª¾ àª¦à«‚àª°àª¸à«àª¥ àª›àª¾àªªàª¨ àª¸àª°à«àªµàª° àª®àª¾àª‚ àª›àª¾àªªàªµàª¾ àª®àª¾àªŸà«‡ àª¸àª¾àª§àª¨à«‹.</description>
    <description xml:lang="hi">à¤•à¤¿à¤¸à¥€ à¤¸à¥à¤¥à¤¾à¤¨à¥€à¤¯ à¤®à¥à¤¦à¥à¤°à¤• à¤¯à¤¾ à¤¦à¥‚à¤°à¤¸à¥à¤¥ à¤®à¥à¤¦à¥à¤°à¤£ à¤¸à¤°à¥à¤µà¤° à¤®à¥‡à¤‚ à¤›à¤ªà¤¾à¤ˆ à¤•à¥‡ à¤²à¤¿à¤ à¤”à¤œà¤¾à¤°.</description>
    <description xml:lang="ia">Utensiles pro imprimer sur un imprimitor local o per un servitor de impression remote.</description>
    <description xml:lang="it">Tool per la stampa su di una stampante locale o un server di stampa locale.</description>
    <description xml:lang="ja">ãƒ­ãƒ¼ã‚«ãƒ«ã®ãƒ—ãƒªãƒ³ã‚¿ãƒ¼ã‚„ãƒªãƒ¢ãƒ¼ãƒˆãƒ—ãƒªãƒ³ãƒˆã‚µãƒ¼ãƒãƒ¼ã¸å°åˆ·ã™ã‚‹ãŸã‚ã®ãƒ„ãƒ¼ãƒ«ã§ã™ã€‚</description>
    <description xml:lang="kn">à²’à²‚à²¦à³ à²¸à³à²¥à²³à³€à²¯ à²®à³à²¦à³à²°à²•à²•à³à²•à³† à²…à²¥à²µ à²¦à³‚à²°à²¸à³à²¥ à²®à³à²¦à³à²°à²£ à²ªà³‚à²°à³ˆà²•à³†à²—à²£à²•à²•à³à²•à³† à²®à³à²¦à³à²°à²¿à²¸à²²à³ à²‰à²ªà²•à²°à²£à²—à²³à³.</description>
    <description xml:lang="ko">ë¡œì»¬ í”„ë¦°í„°ì™€ ì›ê²© í”„ë¦°íŠ¸ ì„œë²„ì— ì¸ì‡„ë¥¼ ì§€ì›í•˜ëŠ” íˆ´ </description>
    <description xml:lang="ml">à´’à´°àµ à´²àµ‹à´•àµà´•à´²àµâ€ à´ªàµà´°à´¿à´¨àµà´±à´°àµâ€ à´…à´²àµà´²àµ†à´™àµà´•à´¿à´²àµâ€ à´±à´¿à´®àµ‹à´Ÿàµà´Ÿàµ à´ªàµà´°à´¿à´¨àµà´±àµ à´¸à´°àµâ€à´µà´±à´¿à´²àµ‡à´•àµà´•àµ à´ªàµà´°à´¿à´¨àµà´±àµ à´šàµ†à´¯àµà´¯àµà´¨àµà´¨à´¤à´¿à´¨àµà´³àµà´³ à´‰à´ªà´•à´°à´£à´™àµà´™à´³àµâ€.</description>
    <description xml:lang="mr">à¤¸à¥à¤¥à¤¾à¤¨à¥€à¤¯ à¤›à¤ªà¤¾à¤ˆà¤¯à¤‚à¤¤à¥à¤° à¤•à¤¿à¤‚à¤µà¤¾ à¤°à¤¿à¤®à¥‹à¤Ÿ à¤›à¤ªà¤¾à¤ˆ à¤¸à¤°à¥à¤µà¥à¤¹à¤°à¤•à¤°à¥€à¤¤à¤¾ à¤›à¤ªà¤¾à¤ˆà¤•à¤°à¥€à¤¤à¤¾ à¤¸à¤¾à¤§à¤¨à¥‡.</description>
    <description xml:lang="or">à¬—à­‹à¬Ÿà¬¿à¬ à¬¸à­à¬¥à¬¾à¬¨à­€à­Ÿ à¬®à­à¬¦à­à¬°à¬£à­€ à¬•à¬¿à¬®à­à¬¬à¬¾ à¬¸à­à¬¦à­‚à¬° à¬®à­à¬¦à­à¬°à¬£à­€ à¬¸à¬°à­à¬­à¬°à¬°à­‡ à¬®à­à¬¦à­à¬°à¬£ à¬ªà¬¾à¬‡à¬ à¬¸à¬¾à¬§à¬¨à¬—à­à¬¡à¬¼à¬¿à¬•à¥¤</description>
    <description xml:lang="pa">à¨‡à©±à¨• à¨²à©‹à¨•à¨² à¨ªà¨°à¨¿à©°à¨Ÿà¨° à¨œà¨¾à¨‚ à¨‡à©±à¨• à¨°à¨¿à¨®à©‹à¨Ÿ à¨ªà¨°à¨¿à©°à¨Ÿà¨° à¨¤à©‡ à¨ªà¨°à¨¿à©°à¨Ÿà¨¿à©°à¨— à¨²à¨ˆ à¨Ÿà©‚à¨²à¥¤</description>
    <description xml:lang="pl">NarzÄ™dzia do drukowania za pomocÄ… lokalnej drukarki lub zdalnego serwera druku.</description>
    <description xml:lang="pt">Ferramentas para impressÃ£o em uma impressora local ou servidor de impressÃ£o remota.</description>
    <description xml:lang="pt_BR">Ferramentas para impressÃ£o em uma impressora local ou servidor de impressÃ£o remota.</description>
    <description xml:lang="ru">Ð¡Ñ€ÐµÐ´ÑÑ‚Ð²Ð° Ð´Ð»Ñ Ð¿ÐµÑ‡Ð°Ñ‚Ð¸ Ð½Ð° Ð»Ð¾ÐºÐ°Ð»ÑŒÐ½Ð¾Ð¼ Ð¿Ñ€Ð¸Ð½Ñ‚ÐµÑ€Ðµ Ð¸Ð»Ð¸ ÑƒÐ´Ð°Ð»ÐµÐ½Ð½Ð¾Ð¼ ÑÐµÑ€Ð²ÐµÑ€Ðµ Ð¿ÐµÑ‡Ð°Ñ‚Ð¸.</description>
    <description xml:lang="sv">Verktyg fÃ¶r utskrift till en lokal skrivare eller fjÃ¤rrskrivarserver.</description>
    <description xml:lang="ta">à®’à®°à¯ à®‰à®³à¯à®³à®®à¯ˆ à®…à®šà¯à®šà®Ÿà®¿à®ªà¯à®ªà®¾à®©à¯ à®…à®²à¯à®²à®¤à¯ à®’à®°à¯ à®¤à¯Šà®²à¯ˆ à®…à®šà¯à®šà¯ à®šà¯‡à®µà¯ˆà®¯à®•à®¤à¯à®¤à¯ˆ à®…à®šà¯à®šà®Ÿà®¿à®ªà¯à®ªà®¤à®±à¯à®•à®¾à®© à®•à®°à¯à®µà®¿à®•à®³à¯.</description>
    <description xml:lang="te">à°¸à±à°¥à°¾à°¨à°¿à°• à°®à±à°¦à±à°°à°£à°¾à°¯à°‚à°¤à±à°°à°®à±à°•à± à°²à±‡à°¦à°¾ à°°à°¿à°®à±‹à°Ÿà± à°®à±à°¦à±à°°à°£à°¾ à°¸à±‡à°µà°¿à°•à°•à± à°®à±à°¦à±à°°à°¿à°‚à°šà±à°Ÿà°•à± à°¸à°¾à°§à°¨à°®à±à°²à±.</description>
    <description xml:lang="uk">ÐŸÑ€Ð¾Ð³Ñ€Ð°Ð¼Ð¸ Ð´Ð»Ñ Ð´Ñ€ÑƒÐºÑƒ Ð½Ð° Ð»Ð¾ÐºÐ°Ð»ÑŒÐ½Ð¾Ð¼Ñƒ Ð¿Ñ€Ð¸Ð½Ñ‚ÐµÑ€Ñ– Ð°Ð±Ð¾ Ð½Ð° Ð²Ñ–Ð´Ð´Ð°Ð»ÐµÐ½Ð¾Ð¼Ñƒ ÑÐµÑ€Ð²ÐµÑ€Ñ– Ð´Ñ€ÑƒÐºÑƒ.</description>
    <description xml:lang="zh">ç”¨ä¾†åˆ—å°è‡³æœ¬æ©Ÿåˆ—å°æ©Ÿæˆ–æ˜¯é ç«¯åˆ—å°ä¼ºæœå™¨çš„å·¥å…·ã€‚</description>
    <description xml:lang="zh_CN">åœ¨æœ¬åœ°æ‰“å°æœºå’Œè¿œç¨‹æ‰“å°æœåŠ¡å™¨ä¸­æ‰“å°çš„å·¥å…·ã€‚</description>
    <description xml:lang="zh_TW">ç”¨ä¾†åˆ—å°è‡³æœ¬æ©Ÿåˆ—å°æ©Ÿæˆ–æ˜¯é ç«¯åˆ—å°ä¼ºæœå™¨çš„å·¥å…·ã€‚</description>
    <default>true</default>
    <uservisible>false</uservisible>
    <packagelist>
      <packagereq type="mandatory">cups</packagereq>
      <packagereq type="mandatory">cups-pk-helper</packagereq>
      <packagereq type="mandatory">enscript</packagereq>
      <packagereq type="default">colord</packagereq>
      <packagereq type="default">gutenprint</packagereq>
      <packagereq type="default">gutenprint-cups</packagereq>
      <packagereq type="default">gutenprint-doc</packagereq>
      <packagereq type="default">hpijs</packagereq>
      <packagereq type="default">paps</packagereq>
      <packagereq type="default">pnm2ppa</packagereq>
      <packagereq type="default">system-config-printer-udev</packagereq>
      <packagereq type="optional">hplip</packagereq>
      <packagereq type="optional">hplip-gui</packagereq>
    </packagelist>
  </group>
  <group>
    <id>remote-desktop-clients</id>
    <name>Remote Desktop Clients</name>
    <name xml:lang="as">à¦¦à§‚à§°à§° à¦¡à§‡à¦¸à§à¦•à¦Ÿà¦ª à¦•à§à¦²à¦¾à¦à¦¨à§à¦Ÿ</name>
    <name xml:lang="bn">à¦¦à§‚à¦°à¦¬à¦°à§à¦¤à§€ à¦¡à§‡à¦¸à§à¦•à¦Ÿà¦ª à¦•à§à¦²à¦¾à§Ÿà§‡à¦¨à§à¦Ÿ</name>
    <name xml:lang="cs">Klienti pro vzdÃ¡lenÃ© plochy</name>
    <name xml:lang="de">Remote-Desktop-Clients</name>
    <name xml:lang="de_CH">Remote-Desktop-Clients</name>
    <name xml:lang="es">Cliente de escritorio remoto</name>
    <name xml:lang="fr">Clients de bureau Ã  distance</name>
    <name xml:lang="gu">àª¦à«‚àª°àª¸à«àª¥ àª¡à«‡àª¸à«àª•àªŸà«‹àªª àª•à«àª²àª¾àª¯àª¨à«àªŸà«‹</name>
    <name xml:lang="hi">à¤¦à¥‚à¤°à¤¸à¥à¤¥ à¤¡à¥‡à¤¸à¥à¤•à¤Ÿà¥‰à¤ª à¤•à¥à¤²à¤¾à¤‡à¤‚à¤Ÿ</name>
    <name xml:lang="ia">Cliente de scriptorio remote</name>
    <name xml:lang="it">Client desktop remoto</name>
    <name xml:lang="ja">ãƒªãƒ¢ãƒ¼ãƒˆãƒ‡ã‚¹ã‚¯ãƒˆãƒƒãƒ—æŽ¥ç¶šã‚¯ãƒ©ã‚¤ã‚¢ãƒ³ãƒˆ</name>
    <name xml:lang="kn">à²¦à³‚à²°à²¸à³à²¥(à²°à²¿à²®à³‹à²Ÿà³) à²—à²£à²• à²ªà²°à²¿à²¸à²° à²•à³à²²à³ˆà²‚à²Ÿà³â€Œà²—à²³à³</name>
    <name xml:lang="ko">ì›ê²© ë°ìŠ¤í¬íƒ‘ í´ë¼ì´ì–¸íŠ¸</name>
    <name xml:lang="ml">à´±à´¿à´®àµ‹à´Ÿàµà´Ÿàµ à´¡à´¸àµà´•àµà´Ÿàµ‹à´ªàµà´ªàµ à´•àµà´²à´¯à´¨àµà´±àµà´•à´³àµâ€</name>
    <name xml:lang="mr">à¤°à¤¿à¤®à¥‹à¤Ÿ à¤¡à¥‡à¤¸à¥à¤•à¤Ÿà¥‰à¤ª à¤•à¥à¤²à¤¾à¤à¤‚à¤Ÿà¥à¤¸à¥</name>
    <name xml:lang="or">à¬¸à­à¬¦à­‚à¬° à¬¡à­‡à¬¸à­à¬•à¬Ÿà¬ª à¬•à­à¬²à¬¾à¬à¬£à­à¬Ÿà¬®à¬¾à¬¨</name>
    <name xml:lang="pa">à¨°à¨¿à¨®à©‹à¨Ÿ à¨¡à©ˆà¨¸à¨•à¨Ÿà¨¾à¨ª à¨•à¨²à¨¾à¨ˆà¨‚à¨Ÿ</name>
    <name xml:lang="pl">Zdalni klienci Å›rodowisk graficznych</name>
    <name xml:lang="pt">Clientes de Ambientes de Trabalho Remotos</name>
    <name xml:lang="pt_BR">Clientes de Ambientes de Trabalho Remotos</name>
    <name xml:lang="ru">ÐšÐ»Ð¸ÐµÐ½Ñ‚Ñ‹ ÑƒÐ´Ð°Ð»Ñ‘Ð½Ð½Ð¾Ð³Ð¾ Ñ€Ð°Ð±Ð¾Ñ‡ÐµÐ³Ð¾ ÑÑ‚Ð¾Ð»Ð°</name>
    <name xml:lang="sv">FjÃ¤rrskrivbordsklienter</name>
    <name xml:lang="ta">à®¤à¯Šà®²à¯ˆ à®ªà®£à®¿à®®à¯‡à®Ÿà¯ˆ à®µà®¾à®Ÿà®¿à®•à¯à®•à¯ˆà®¯à®¾à®³à®°à¯à®•à®³à¯</name>
    <name xml:lang="te">à°°à°¿à°®à±‹à°Ÿà± à°¡à±†à°¸à±à°•à±à°Ÿà°¾à°ªà± à°•à±à°²à±ˆà°‚à°Ÿà±à°¸à±</name>
    <name xml:lang="uk">ÐšÐ»Ñ–Ñ”Ð½Ñ‚Ð¸ Ð²Ñ–Ð´Ð´Ð°Ð»ÐµÐ½Ð¸Ñ… Ñ€Ð¾Ð±Ð¾Ñ‡Ð¸Ñ… ÑÑ‚Ð¾Ð»Ñ–Ð²</name>
    <name xml:lang="zh">é ç«¯æ¡Œé¢ç’°å¢ƒå®¢æˆ¶ç«¯</name>
    <name xml:lang="zh_CN">è¿œç¨‹æ¡Œé¢å®¢æˆ·ç«¯</name>
    <name xml:lang="zh_TW">é ç«¯æ¡Œé¢ç’°å¢ƒå®¢æˆ¶ç«¯</name>
    <description/>
    <default>true</default>
    <uservisible>false</uservisible>
    <packagelist>
      <packagereq type="optional">freerdp</packagereq>
      <packagereq type="optional">tigervnc</packagereq>
      <packagereq type="optional">vinagre</packagereq>
    </packagelist>
  </group>
  <group>
    <id>remote-system-management</id>
    <name>Remote Management for Linux</name>
    <name xml:lang="as">Linux à§° à¦¬à¦¾à¦¬à§‡ à¦¦à§‚à§°à§±à§°à§à¦¤à§€ à¦¬à§à¦¯à§±à¦¸à§à¦¥à¦¾à¦ªà¦¨à¦¾</name>
    <name xml:lang="cs">VzdÃ¡lenÃ¡ sprÃ¡va pro Linux</name>
    <name xml:lang="de">Remote-Verwaltung fÃ¼r Linux</name>
    <name xml:lang="de_CH">Remote-Verwaltung fÃ¼r Linux</name>
    <name xml:lang="es">AdministraciÃ³n remota para Linux</name>
    <name xml:lang="fr">Gestion distante Linux</name>
    <name xml:lang="gu">Linux àª®àª¾àªŸà«‡ àª¦à«‚àª°àª¸à«àª¥ àªµà«àª¯àªµàª¸à«àª¥àª¾àªªàª¨</name>
    <name xml:lang="hi">à¤²à¤¿à¤¨à¤•à¥à¤¸ à¤•à¥‡ à¤²à¤¿à¤ à¤¦à¥‚à¤°à¤¸à¥à¤¥ à¤ªà¥à¤°à¤¬à¤‚à¤§à¤¨</name>
    <name xml:lang="it">Gestione remota per Linux</name>
    <name xml:lang="ja">Linux å‘ã‘ãƒªãƒ¢ãƒ¼ãƒˆç®¡ç†</name>
    <name xml:lang="kn">Linux à²—à²¾à²—à²¿à²¨ à²¦à³‚à²°à²¸à³à²¥ à²¨à²¿à²°à³à²µà²¹à²£à³†</name>
    <name xml:lang="ko">Linux ìš© ì›ê²© ê´€ë¦¬</name>
    <name xml:lang="ml">à´²à´¿à´¨à´•àµà´¸à´¿à´¨àµà´³àµà´³ à´±à´¿à´®àµ‹à´Ÿàµà´Ÿàµ à´®à´¾à´¨àµ‡à´œàµà´®àµ†à´¨àµà´±àµ</name>
    <name xml:lang="mr">Linux à¤•à¤°à¤¿à¤¤à¤¾ à¤¦à¥‚à¤°à¤¸à¥à¤¤ à¤µà¥à¤¯à¤µà¤¸à¥à¤¥à¤¾à¤ªà¤¨</name>
    <name xml:lang="or">Linux à¬ªà¬¾à¬‡à¬ à¬¸à­à¬¦à­‚à¬° à¬ªà¬°à¬¿à¬šà¬¾à¬³à¬¨à¬¾</name>
    <name xml:lang="pa">à¨²à©€à¨¨à¨¿à¨•à¨¸ à¨²à¨ˆ à¨¦à©à¨°à©‡à¨¡à¨¾ à¨ªà©à¨°à¨¬à©°à¨§à¨¨</name>
    <name xml:lang="pl">Zdalne zarzÄ…dzanie dla systemu Linux</name>
    <name xml:lang="pt">Gerenciamento Remoto para Linux</name>
    <name xml:lang="pt_BR">Gerenciamento Remoto para Linux</name>
    <name xml:lang="ru">Ð£Ð´Ð°Ð»ÐµÐ½Ð½Ð¾Ðµ ÑƒÐ¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð¸Ðµ Linux</name>
    <name xml:lang="ta">Linux à®•à¯à®•à®¾à®© à®¤à¯Šà®²à¯ˆà®¨à®¿à®²à¯ˆ à®¨à®¿à®°à¯à®µà®¾à®•à®®à¯</name>
    <name xml:lang="te">à°²à±ˆà°¨à°•à±à°¸à± à°•à±Šà°°à°•à± à°¦à±‚à°°à°¸à±à°¥ à°¨à°¿à°°à±à°µà°¹à°£</name>
    <name xml:lang="uk">Ð’Ñ–Ð´Ð´Ð°Ð»ÐµÐ½Ðµ ÐºÐµÑ€ÑƒÐ²Ð°Ð½Ð½Ñ Ð´Ð»Ñ Linux</name>
    <name xml:lang="zh">Linux çš„é ç«¯ç®¡ç†</name>
    <name xml:lang="zh_CN">Linux çš„è¿œç¨‹ç®¡ç†</name>
    <name xml:lang="zh_TW">Linux çš„é ç«¯ç®¡ç†</name>
    <description>Remote management interface for CentOS Linux.</description>
    <default>true</default>
    <uservisible>false</uservisible>
    <packagelist>
      <packagereq type="default">net-snmp</packagereq>
      <packagereq type="default">net-snmp-utils</packagereq>
      <packagereq type="default">openwsman-client</packagereq>
      <packagereq type="default">sblim-cmpi-base</packagereq>
      <packagereq type="default">tog-pegasus</packagereq>
      <packagereq type="default">wsmancli</packagereq>
      <packagereq type="optional">openwsman-server</packagereq>
      <packagereq type="optional">sblim-indication_helper</packagereq>
      <packagereq type="optional">sblim-sfcb</packagereq>
      <packagereq type="optional">sblim-wbemcli</packagereq>
    </packagelist>
  </group>
  <group>
    <id>rpm-development-tools</id>
    <name>RPM Development Tools</name>
    <name xml:lang="de">RPM Entwicklungswerkzeuge</name>
    <name xml:lang="es">Herramientas de desarrollo de RPM</name>
    <name xml:lang="fr">Outils de dÃ©veloppement RPM</name>
    <name xml:lang="it">Strumenti di sviluppo RPM</name>
    <name xml:lang="ja">RPM é–‹ç™ºãƒ„ãƒ¼ãƒ«</name>
    <name xml:lang="ko">RPM ê°œë°œ íˆ´ </name>
    <name xml:lang="pt">Ferramentas de Desenvolvimento RPM</name>
    <name xml:lang="pt_BR">Ferramentas de Desenvolvimento RPM</name>
    <name xml:lang="ru">Ð˜Ð½ÑÑ‚Ñ€ÑƒÐ¼ÐµÐ½Ñ‚Ñ‹ Ñ€Ð°Ð·Ñ€Ð°Ð±Ð¾Ñ‚ÐºÐ¸ Ð¾Ð±Ð¾Ñ€Ð¾Ñ‚Ð¾Ð² Ð¾Ð±Ð¾Ñ€Ð¾Ñ‚Ð¾Ð²</name>
    <name xml:lang="zh_CN">RPM å¼€å‘å·¥å…·</name>
    <name xml:lang="zh_TW">RPMé–‹ç™¼å·¥å…·</name>
    <description>Tools used for building RPMs, such as rpmbuild.</description>
    <description xml:lang="fr">Outils utilisÃ©s pour la crÃ©ation d' RPM(s) tels que rpmbuild.</description>
    <description xml:lang="ja">rpmbuild ãªã©ã® RPM ã®æ§‹ç¯‰ã«ä½¿ç”¨ã™ã‚‹ãƒ„ãƒ¼ãƒ«ã§ã™ã€‚</description>
    <description xml:lang="ko">RPMì„ ë¹Œë“œí•˜ê¸° ìœ„í•œ íˆ´ (ì˜ˆ: rpmbuild)</description>
    <description xml:lang="zh_CN">ç”¨äºŽæž„å»º RPM çš„å·¥å…·ï¼Œå¦‚ rpmbuild.</description>
    <default>true</default>
    <uservisible>true</uservisible>
    <packagelist>
      <packagereq type="mandatory">redhat-rpm-config</packagereq>
      <packagereq type="mandatory">rpm-build</packagereq>
      <packagereq type="default">rpmdevtools</packagereq>
      <packagereq type="optional">rpmlint</packagereq>
    </packagelist>
  </group>
  <group>
    <id>scientific</id>
    <name>Scientific Support</name>
    <name xml:lang="as">à¦¬à§ˆà¦œà§à¦žà¦¾à¦¨à¦¿à¦• à¦¸à¦®à§°à§à¦¥à¦¨</name>
    <name xml:lang="cs">VÄ›deckÃ© aplikace</name>
    <name xml:lang="de">UnterstÃ¼tzung fÃ¼r Wissenschaft</name>
    <name xml:lang="de_CH">UnterstÃ¼tzung fÃ¼r Wissenschaft</name>
    <name xml:lang="es">Soporte cientÃ­fico</name>
    <name xml:lang="fr">Prise en charge Scientific</name>
    <name xml:lang="gu">àªµà«ˆàªœà«àªžàª¾àª¨àª¿àª• àª†àª§àª¾àª°</name>
    <name xml:lang="hi">à¤µà¥ˆà¤œà¥à¤žà¤¾à¤¨à¤¿à¤• à¤¸à¤®à¤°à¥à¤¥à¤¨</name>
    <name xml:lang="it">Supporto scientifico</name>
    <name xml:lang="ja">ç§‘å­¦çš„ã‚µãƒãƒ¼ãƒˆ</name>
    <name xml:lang="kn">à²µà³ˆà²œà³à²žà²¾à²¨à²¿à²• à²¬à³†à²‚à²¬à²²</name>
    <name xml:lang="ko">ê³¼í•™ê¸°ìˆ  ì§€ì›</name>
    <name xml:lang="ml">à´¶à´¾à´¸àµà´¤àµà´°àµ€à´¯à´®à´¾à´¯ à´ªà´¿à´¨àµà´¤àµà´£</name>
    <name xml:lang="mr">à¤µà¥ˆà¤œà¥à¤žà¤¾à¤¨à¤¿à¤• à¤¸à¤®à¤°à¥à¤¥à¤¨</name>
    <name xml:lang="or">à¬¬à­ˆà¬œà­à¬žà¬¾à¬¨à¬¿à¬• à¬¸à¬¹à¬¾à­Ÿà¬¤à¬¾</name>
    <name xml:lang="pa">à¨µà¨¿à¨—à¨¿à¨†à¨¨à¨• à¨¸à¨®à¨°à¨¥à¨¨</name>
    <name xml:lang="pl">ObsÅ‚uga aplikacji naukowych</name>
    <name xml:lang="pt">Suporte CientÃ­fico</name>
    <name xml:lang="pt_BR">Suporte CientÃ­fico</name>
    <name xml:lang="ru">Ð˜Ð½Ð¶ÐµÐ½ÐµÑ€Ð½Ñ‹Ðµ Ð¸Ð½ÑÑ‚Ñ€ÑƒÐ¼ÐµÐ½Ñ‚Ñ‹</name>
    <name xml:lang="ta">à®…à®±à®¿à®µà®¿à®¯à®²à¯à®šà®¾à®°à¯à®¨à¯à®¤ à®†à®¤à®°à®µà¯</name>
    <name xml:lang="te">à°¸à±ˆà°‚à°Ÿà°¿à°«à°¿à°•à± à°¤à±‹à°¡à±à°ªà°¾à°Ÿà±</name>
    <name xml:lang="uk">ÐŸÑ–Ð´Ñ‚Ñ€Ð¸Ð¼ÐºÐ° Ð½Ð°ÑƒÐºÐ¾Ð²Ð¸Ñ… Ñ€Ð¾Ð·Ñ€Ð¾Ð±Ð¾Ðº</name>
    <name xml:lang="zh">ç§‘å­¸æ”¯æ´</name>
    <name xml:lang="zh_CN">ç§‘å­¦è®°æ•°æ³•æ”¯æŒ</name>
    <name xml:lang="zh_TW">ç§‘å­¸æ”¯æ´</name>
    <description>Tools for mathematical and scientific computations, and parallel computing.</description>
    <description xml:lang="as">à¦—à¦¾à¦£à¦¿à¦¤à¦¿à¦• à¦†à§°à§ à¦¬à§ˆà¦œà§à¦žà¦¾à¦¨à¦¿à¦• à¦—à¦£à¦¨à¦¾ à¦†à§°à§ à¦ªà§‡à§°à¦¾à¦²à§‡à¦² à¦•à¦®à§à¦ªà¦¿à¦‰à¦Ÿà¦¿à¦‚à§° à¦¬à¦¿à¦­à¦¿à¦¨à§à¦¨ à¦¸à¦à¦œà§à¦²à¦¿à¦¸à¦®à§‚à¦¹à¥¤</description>
    <description xml:lang="bn">à¦—à¦¾à¦£à¦¿à¦¤à¦¿à¦• à¦“ à¦¬à§ˆà¦œà§à¦žà¦¾à¦¨à¦¿à¦• à¦—à¦£à¦¨à¦¾ à¦à¦¬à¦‚ à¦ªà§à¦¯à¦¾à¦°à¦¾à¦²à§‡à¦² à¦•à¦®à§à¦ªà¦¿à¦‰à¦Ÿà¦¿à¦‚à§Ÿà§‡à¦° à¦¬à¦¿à¦­à¦¿à¦¨à§à¦¨ à¦¸à¦°à¦žà§à¦œà¦¾à¦®à¥¤</description>
    <description xml:lang="cs">NÃ¡stroje pro matematickÃ© a vÄ›deckÃ© vÃ½poÄty a pro paralelnÃ­ vÃ½poÄty.</description>
    <description xml:lang="de">Tools fÃ¼r mathematische und wissenschaftliche Berechnungen, sowie paralleles Rechnen.</description>
    <description xml:lang="de_CH">Tools fÃ¼r mathematische und wissenschaftliche Berechnungen, sowie paralleles Rechnen.</description>
    <description xml:lang="es">Herramientas para ejecutar cÃ¡lculos matemÃ¡ticos y cientÃ­ficos, asÃ­ computaciÃ³n paralela.</description>
    <description xml:lang="fr">Outils pour effectuer des calculs mathÃ©matiques et scientifiques, et des traitements parallÃ¨les.</description>
    <description xml:lang="gu">àª—àª¾àª£àª¿àª¤à«€àª• àª…àª¨à«‡ àªµà«ˆàªœà«àªžàª¾àª¨àª¿àª• àª—àª£àª¤àª°à«€àª“ àª®àª¾àªŸà«‡ àª¸àª¾àª§àª¨à«‹, àª…àª¨à«‡ àª¸àª®àª¾àª‚àª¤àª° àª—àª£àª¤àª°à«€.</description>
    <description xml:lang="hi">à¤‡à¤¸ à¤¸à¤®à¥‚à¤¹ à¤®à¥‡à¤‚ à¤—à¤£à¤¿à¤¤ à¤”à¤° à¤µà¥ˆà¤œà¥à¤žà¤¾à¤¨à¤¿à¤• à¤…à¤­à¤¿à¤•à¤²à¤¨ à¤”à¤° à¤¸à¤®à¤¾à¤‚à¤¤à¤° à¤•à¤‚à¤ªà¥à¤¯à¥‚à¤Ÿà¤¿à¤‚à¤— à¤•à¥‡ à¤²à¤¿à¤ à¤”à¤œà¤¼à¤¾à¤°.</description>
    <description xml:lang="ia">Instrumentos pro le computationes mathematic e scientific, e pro exequer computationes parallel.</description>
    <description xml:lang="it">Tool per elaborazioni matematiche e scientifiche, ed informatica parallela.</description>
    <description xml:lang="ja">æ•°å­¦çš„è¨ˆç®—ã‚„ç§‘å­¦çš„è¨ˆç®—ã€ä¸¦åˆ—è¨ˆç®—ã®ãƒ„ãƒ¼ãƒ«ã§ã™ã€‚</description>
    <description xml:lang="kn">à²—à²£à²¿à²¤à³€à²¯ à²¹à²¾à²—à³‚ à²µà³ˆà²œà³à²žà²¾à²¨à²¿à²• à²²à³†à²•à³à²•à²—à²³à³ à²¹à²¾à²—à³ à²¸à²®à²¾à²¨à²¾à²‚à²¤à²° à²•à²‚à²ªà³à²¯à³‚à²Ÿà²¿à²‚à²—à³â€Œà²—à²¾à²—à²¿à²¨ à²‰à²ªà²•à²°à²£à²—à²³à³.</description>
    <description xml:lang="ko">ìˆ˜í•™/ê³¼í•™ ê³„ì‚°ê³¼ ë³‘ë ¬ ê³„ì‚°ì„ ìœ„í•œ íˆ´ </description>
    <description xml:lang="ml">à´¶à´¾à´¸àµà´¤àµà´° à´—à´£à´¿à´¤ à´•à´£à´•àµà´•àµà´•à´³àµâ€à´•àµà´•àµà´‚ à´ªà´¾à´°à´²à´²àµâ€ à´•à´®àµà´ªàµà´¯àµ‚à´Ÿàµà´Ÿà´¿à´™à´¿à´¨àµà´®àµà´³àµà´³ à´‰à´ªà´•à´°à´£à´™àµà´™à´³àµâ€.</description>
    <description xml:lang="mr">à¤¯à¤¾ à¤¸à¤‚à¤šà¤¾à¤¤ à¤—à¤£à¤¿à¤¤à¥€à¤¯ à¤†à¤£à¤¿ à¤µà¥ˆà¤œà¥à¤žà¤¾à¤¨à¤¿à¤• à¤—à¤£à¤¨à¤¾ à¤†à¤£à¤¿ à¤†à¤²à¥‡à¤–à¤¨, à¤¤à¤¸à¥‡à¤š à¤à¤•à¤• à¤°à¥‚à¤ªà¤¾à¤‚à¤¤à¤° à¤•à¤°à¤£à¥à¤¯à¤¾à¤¸à¤¾à¤ à¥€ à¤‰à¤ªà¤¯à¥à¤•à¥à¤¤ à¤¸à¤‚à¤•à¥à¤²à¤¾à¤‚à¤šà¤¾ à¤¸à¤®à¤¾à¤µà¥‡à¤¶ à¤¹à¥‹à¤¤à¥‹.</description>
    <description xml:lang="or">à¬—à¬¾à¬£à¬¿à¬¤à¬¿à¬• à¬à¬¬à¬‚ à¬¬à­ˆà¬œà­à¬žà¬¾à¬¨à¬¿à¬• à¬—à¬£à¬¨à¬¾ à¬ªà¬¾à¬‡à¬ à¬¸à¬¾à¬§à¬¨, à¬à¬¬à¬‚ à¬¸à¬®à¬¾à¬¨à­à¬¤à¬°à¬¾à¬³ à¬®à¬¾à¬¨à¬¾à¬™à­à¬•à¬¨à¥¤</description>
    <description xml:lang="pa">à¨—à¨£à¨¿à¨¤ à¨…à¨¤à©‡ à¨µà¨¿à¨—à¨¿à¨†à¨¨à¨¿à¨• à¨•à©°à¨ªà¨¿à¨Šà¨Ÿà©‡à¨¶à¨¨à¨¾à¨‚, à¨…à¨¤à©‡ à¨ªà©ˆà¨°à¨²à¨² à¨•à©°à¨ªà¨¿à¨Šà¨Ÿà¨¿à©°à¨— à¨²à¨ˆ à¨Ÿà©‚à¨²à¥¤</description>
    <description xml:lang="pl">NarzÄ™dzia do wykonywania obliczeÅ„ matematycznych i naukowych oraz obliczeÅ„ rÃ³wnolegÅ‚ych.</description>
    <description xml:lang="pt">Ferramentas para computaÃ§Ãµes cientÃ­ficas e matemÃ¡tica, e computaÃ§Ã£o paralela.</description>
    <description xml:lang="pt_BR">Ferramentas para computaÃ§Ãµes cientÃ­ficas e matemÃ¡tica, e computaÃ§Ã£o paralela.</description>
    <description xml:lang="ru">Ð¡Ñ€ÐµÐ´ÑÑ‚Ð²Ð° Ð´Ð»Ñ Ð¼Ð°Ñ‚ÐµÐ¼Ð°Ñ‚Ð¸Ñ‡ÐµÑÐºÐ¸Ñ… Ð¸ Ð½Ð°ÑƒÑ‡Ð½Ñ‹Ñ… Ð²Ñ‹Ñ‡Ð¸ÑÐ»ÐµÐ½Ð¸Ð¹ Ð¸ Ð¿Ñ€ÐµÐ¾Ð±Ñ€Ð°Ð·Ð¾Ð²Ð°Ð½Ð¸Ð¹, Ð° Ñ‚Ð°ÐºÐ¶Ðµ Ð¿Ð°Ñ€Ð°Ð»Ð»ÐµÐ»ÑŒÐ½Ñ‹Ñ… Ð²Ñ‹Ñ‡Ð¸ÑÐ»ÐµÐ½Ð¸Ð¹.</description>
    <description xml:lang="sv">Verktyg fÃ¶r matematiska och vetenskapliga berÃ¤kningar, och parallellberÃ¤kningar.</description>
    <description xml:lang="ta">à®•à®£à®¿à®¤à®¤à¯à®¤à®¿à®±à¯à®•à®¾à®© à®•à®°à¯à®µà®¿à®•à®³à¯ à®®à®±à¯à®±à¯à®®à¯ à®…à®±à®¿à®µà®¿à®¯à®²à¯ à®•à®£à®•à¯à®•à¯€à®Ÿà¯à®•à®³à¯, à®®à®±à¯à®±à¯à®®à¯ à®‡à®£à¯ˆà®¯à®¾à®© à®®à®¤à®¿à®ªà¯à®ªà®¿à®Ÿà¯à®¤à®²à¯.</description>
    <description xml:lang="te">à°—à°£à°¿à°¤ à°®à°°à°¿à°¯à± à°¶à°¾à°¸à±à°¤à±à°°à±€à°¯ à°²à±†à°•à±à°•à°¿à°‚à°ªà±à°² à°•à±Šà°°à°•à±, à°®à°°à°¿à°¯à± à°¸à°®à°¾à°‚à°¤à°° à°•à°‚à°ªà±à°¯à±‚à°Ÿà°¿à°‚à°—à± à°•à±Šà°°à°•à± à°¸à°¾à°§à°¨à°®à±à°²à±.</description>
    <description xml:lang="uk">ÐŸÑ€Ð¾Ð³Ñ€Ð°Ð¼Ð¸ Ð´Ð»Ñ Ð¼Ð°Ñ‚ÐµÐ¼Ð°Ñ‚Ð¸Ñ‡Ð½Ð¸Ñ… Ñ‚Ð° Ñ–Ð½ÑˆÐ¸Ñ… Ð½Ð°ÑƒÐºÐ¾Ð²Ð¸Ñ… Ð¾Ð±Ñ‡Ð¸ÑÐ»ÐµÐ½ÑŒ, Ð° Ñ‚Ð°ÐºÐ¾Ð¶ Ñ€Ð¾Ð·Ð¿Ð¾Ð´Ñ–Ð»ÐµÐ½Ð¸Ñ… Ð¾Ð±Ñ‡Ð¸ÑÐ»ÐµÐ½ÑŒ.</description>
    <description xml:lang="zh">ç”¨ä¾†åŸ·è¡Œæ•¸å­¸èˆ‡ç§‘å­¸çš„é‹ç®—ï¼Œä»¥åŠå¹³è¡Œé‹ç®—çš„å·¥å…·ã€‚</description>
    <description xml:lang="zh_CN">ç”¨äºŽæ•°å­¦å’Œç§‘å­¦è®¡ç®—ä»¥åŠå¹³è¡Œè®¡ç®—çš„å·¥å…·ã€‚</description>
    <description xml:lang="zh_TW">ç”¨ä¾†åŸ·è¡Œæ•¸å­¸èˆ‡ç§‘å­¸çš„é‹ç®—ï¼Œä»¥åŠå¹³è¡Œé‹ç®—çš„å·¥å…·ã€‚</description>
    <default>true</default>
    <uservisible>true</uservisible>
    <packagelist>
      <packagereq type="optional">fftw</packagereq>
      <packagereq type="optional">fftw-devel</packagereq>
      <packagereq type="optional">fftw-static</packagereq>
      <packagereq type="optional">gnuplot</packagereq>
      <packagereq type="optional">gsl-devel</packagereq>
      <packagereq type="optional">lapack</packagereq>
      <packagereq type="optional">mpich-devel</packagereq>
      <packagereq type="optional">openmpi</packagereq>
      <packagereq type="optional">openmpi-devel</packagereq>
      <packagereq type="optional">python3-numpy</packagereq>
      <packagereq type="optional">python3-scipy</packagereq>
    </packagelist>
  </group>
  <group>
    <id>security-tools</id>
    <name>Security Tools</name>
    <name xml:lang="as">à¦¨à¦¿à§°à¦¾à¦ªà¦¤à§à¦¤à¦¾ à¦¬à¦¿à¦·à§Ÿà¦• à¦¸à¦¾à¦®à¦—à§à§°à§€à§° à¦¸à¦à¦œà§à¦²à¦¿</name>
    <name xml:lang="bn">à¦¨à¦¿à¦°à¦¾à¦ªà¦¤à§à¦¤à¦¾ à¦¬à¦¿à¦·à§Ÿà¦• à¦¸à¦¾à¦®à¦—à§à¦°à§€</name>
    <name xml:lang="cs">BezpeÄnostnÃ­ nÃ¡stroje</name>
    <name xml:lang="de">Sicherheits-Tools</name>
    <name xml:lang="de_CH">Sicherheits-Tools</name>
    <name xml:lang="es">Herramientas de seguridad</name>
    <name xml:lang="eu">Segurtasun tresnak</name>
    <name xml:lang="fr">Outils de sÃ©curitÃ©</name>
    <name xml:lang="gu">àª¸à«àª°àª•à«àª·àª¾ àª¸àª¾àª§àª¨à«‹</name>
    <name xml:lang="hi">à¤¸à¥à¤°à¤•à¥à¤·à¤¾ à¤”à¤œà¤¼à¤¾à¤°</name>
    <name xml:lang="ia">Instrumentos de securitate</name>
    <name xml:lang="it">Tool per la sicurezza</name>
    <name xml:lang="ja">ã‚»ã‚­ãƒ¥ãƒªãƒ†ã‚£ãƒ¼ãƒ„ãƒ¼ãƒ«</name>
    <name xml:lang="kn">à²¸à³à²°à²•à³à²·à²¤à²¾ à²‰à²ªà²•à²°à²£à²—à²³à³</name>
    <name xml:lang="ko">ë³´ì•ˆ íˆ´ </name>
    <name xml:lang="ml">à´¸àµà´°à´•àµà´·à´¾ à´‰à´ªà´•à´°à´£à´™àµà´™à´³àµâ€</name>
    <name xml:lang="mr">à¤¸à¥à¤°à¤•à¥à¤·à¤¾ à¤¸à¤¾à¤§à¤¨à¥‡</name>
    <name xml:lang="or">à¬¸à­à¬°à¬•à­à¬·à¬¾ à¬‰à¬ªà¬•à¬°à¬£</name>
    <name xml:lang="pa">à¨¸à©à¨°à©±à¨–à¨¿à¨† à¨¸à©°à¨¦</name>
    <name xml:lang="pl">NarzÄ™dzia bezpieczeÅ„stwa</name>
    <name xml:lang="pt">Ferramentas de SeguranÃ§a</name>
    <name xml:lang="pt_BR">Ferramentas de SeguranÃ§a</name>
    <name xml:lang="ru">Ð¡Ñ€ÐµÐ´ÑÑ‚Ð²Ð° Ð±ÐµÐ·Ð¾Ð¿Ð°ÑÐ½Ð¾ÑÑ‚Ð¸</name>
    <name xml:lang="sv">SÃ¤kerhetsverktyg</name>
    <name xml:lang="ta">à®ªà®¾à®¤à¯à®•à®¾à®ªà¯à®ªà¯ à®•à®°à¯à®µà®¿à®•à®³à¯</name>
    <name xml:lang="te">à°°à°•à±à°·à°£ à°¸à°¾à°§à°¨à°®à±à°²à±</name>
    <name xml:lang="uk">Ð—Ð°ÑÐ¾Ð±Ð¸ Ð·Ð°Ñ…Ð¸ÑÑ‚Ñƒ</name>
    <name xml:lang="zh">å®‰å…¨æ€§å·¥å…·</name>
    <name xml:lang="zh_CN">å®‰å…¨æ€§å·¥å…·</name>
    <name xml:lang="zh_TW">å®‰å…¨æ€§å·¥å…·</name>
    <description>Security tools for integrity and trust verification.</description>
    <description xml:lang="as">à¦¯à¦¥à¦¾à§°à§à¦¥à¦¤à¦¾ à¦†à§°à§ à¦¬à¦¿à¦¶à§à¦¬à¦¸à§à¦¤à¦¤à¦¾ à¦ªà§°à§€à¦•à§à¦·à¦¾à§° à¦¬à¦¾à¦¬à§‡ à¦¬à§à¦¯à§±à¦¹à¦¾à§°à¦¯à§‹à¦—à§à¦¯ à¦¨à¦¿à§°à¦¾à¦ªà¦¤à§à¦¤à¦¾ à¦¬à¦¿à¦·à§Ÿà¦• à¦¸à¦¾à¦®à¦—à§à§°à§€à¥¤</description>
    <description xml:lang="bn">à¦¯à¦¥à¦¾à¦°à§à¦¥à¦¤à¦¾ à¦“ à¦¬à¦¿à¦¶à§à¦¬à¦¸à§à¦¤à¦¤à¦¾ à¦¯à¦¾à¦šà¦¾à¦‡à§Ÿà§‡à¦° à¦œà¦¨à§à¦¯ à¦¬à§à¦¯à¦¬à¦¹à¦¾à¦°à¦¯à§‹à¦—à§à¦¯ à¦¨à¦¿à¦°à¦¾à¦ªà¦¤à§à¦¤à¦¾ à¦¬à¦¿à¦·à§Ÿà¦• à¦¸à¦¾à¦®à¦—à§à¦°à§€à¥¤</description>
    <description xml:lang="cs">BezpeÄnostnÃ­ nÃ¡stroje pro kontrolu integrity a dÅ¯vÄ›ryhodnosti.</description>
    <description xml:lang="de">Sicherheits-Tools zur ÃœberprÃ¼fung der IntegritÃ¤t und VertrauenswÃ¼rdigkeit.</description>
    <description xml:lang="de_CH">Sicherheits-Tools zur ÃœberprÃ¼fung der IntegritÃ¤t und VertrauenswÃ¼rdigkeit.</description>
    <description xml:lang="es">Herramientas de seguridad para integridad y verificaciÃ³n de fiabilidad.</description>
    <description xml:lang="fr">Outils de sÃ©curitÃ© pour vÃ©rification de confiance et intÃ©gritÃ©.</description>
    <description xml:lang="gu">àªµàª¿àª¶à«àª°à«àªµàª¾àª¸ àªšàª•àª¾àª¸àª£à«€ àª…àª¨à«‡ àªàª•àª¤à«àª°àª¿àª¤àª¾ àª®àª¾àªŸà«‡ àª¸à«àª°àª•à«àª·àª¾ àª¸àª¾àª§àª¨à«‹.</description>
    <description xml:lang="hi">à¤…à¤–à¤‚à¤¡à¤¤à¤¾ à¤”à¤° à¤­à¤°à¥‹à¤¸à¤¾ à¤œà¤¾à¤à¤š à¤•à¥‡ à¤²à¤¿à¤ à¤¸à¥à¤°à¤•à¥à¤·à¤¾ à¤”à¤œà¤¼à¤¾à¤°.</description>
    <description xml:lang="ia">Instrumentos de securitate pro verificar integritate e fiducia.</description>
    <description xml:lang="it">Tool di sicurezza per la verifica dei fidati ed integritÃ .</description>
    <description xml:lang="ja">æ•´åˆæ€§ã‚„ä¿¡ç”¨ã‚’æ¤œè¨¼ã™ã‚‹ã‚»ã‚­ãƒ¥ãƒªãƒ†ã‚£ãƒ„ãƒ¼ãƒ«</description>
    <description xml:lang="kn">à²¸à²®à²—à³à²°à²¤à³† à²¹à²¾à²—à³ à²¨à²‚à²¬à²¿à²•à³†à²¯ à²ªà²°à²¿à²¶à³€à²²à²¨à³†à²¯à²¨à³à²¨à³ à²¨à²¡à³†à²¸à³à²µ à²¸à³à²°à²•à³à²·à²¤à²¾ à²‰à²ªà²•à²°à²£.</description>
    <description xml:lang="ko">í†µí•©ê³¼ ì‹ ë¢° ê²€ì¦ì„ ìœ„í•œ ë³´ì•ˆ íˆ´ </description>
    <description xml:lang="ml">à´ªà´°à´¿à´¶àµ‹à´§à´¨à´¯àµà´•àµà´•àµà´³àµà´³ à´¸àµà´°à´•àµà´·à´¾ à´ªàµà´°à´¯àµ‹à´—à´™àµà´™à´³àµâ€.</description>
    <description xml:lang="mr">à¤à¤•à¤¾à¤—à¥à¤°à¤¤à¤¾ à¤µ à¤µà¤¿à¤¶à¥à¤µà¤¾à¤¸à¤°à¥à¤¹ à¤¤à¤¾à¤ªà¤¸à¤£à¥€ à¤•à¤°à¥€à¤¤à¤¾ à¤¸à¥à¤°à¤•à¥à¤·à¤¾ à¤¸à¤¾à¤§à¤¨à¥‡.</description>
    <description xml:lang="or">à¬…à¬–à¬£à­à¬¡à¬¤à¬¾ à¬à¬¬à¬‚ à¬¬à¬¿à¬¶à­à­±à¬¾à¬¸ à¬¯à¬¾à¬žà­à¬š à¬ªà¬¾à¬‡à¬ à¬¸à­à¬°à¬•à­à¬·à¬¾ à¬‰à¬ªà¬•à¬°à¬£à¥¤</description>
    <description xml:lang="pa">à¨‡à¨•à¨¸à¨¾à¨°à¨¤à¨¾ à¨…à¨¤à©‡ à¨­à¨°à©‹à¨¸à¨¾ à¨œà¨¾à¨‚à¨š à¨²à¨ˆ à¨¸à©à¨°à©±à¨–à¨¿à¨† à¨¸à©°à¨¦à¥¤</description>
    <description xml:lang="pl">NarzÄ™dzia bezpieczeÅ„stwa do sprawdzania integralnoÅ›ci i zaufania.</description>
    <description xml:lang="pt">Ferramentas de seguranÃ§a para integridade e verificaÃ§Ã£o de confiabilidade</description>
    <description xml:lang="pt_BR">Ferramentas de seguranÃ§a para integridade e verificaÃ§Ã£o de confiabilidade</description>
    <description xml:lang="ru">Ð¡Ñ€ÐµÐ´ÑÑ‚Ð²Ð° Ð·Ð°Ñ‰Ð¸Ñ‚Ñ‹ Ð´Ð»Ñ Ð¾Ð±ÐµÑÐ¿ÐµÑ‡ÐµÐ½Ð¸Ñ Ñ†ÐµÐ»Ð¾ÑÑ‚Ð½Ð¾ÑÑ‚Ð¸ Ð¸ Ð¿Ñ€Ð¾Ð²ÐµÑ€ÐºÐ¸ Ð¿Ð¾Ð´Ð»Ð¸Ð½Ð½Ð¾ÑÑ‚Ð¸.</description>
    <description xml:lang="sv">SÃ¤kerhetsverktyg fÃ¶r integritets- och fÃ¶rtroendeverifiering.</description>
    <description xml:lang="ta">à®¨à¯‡à®°à¯à®®à¯ˆà®¯à®¾à®© à®®à®±à¯à®±à¯à®®à¯ à®¨à®®à¯à®ªà®•à¯à®•à¯‚à®Ÿà®¿à®¯ à®‰à®±à¯à®¤à®¿à®ªà®Ÿà¯à®¤à¯à®¤à®²à¯à®•à¯à®•à®¾à®© à®ªà®¾à®¤à¯à®•à®¾à®ªà¯à®ªà¯ à®•à®°à¯à®µà®¿à®•à®³à¯.</description>
    <description xml:lang="te">à°‡à°‚à°Ÿà°¿à°—à±à°°à°¿à°Ÿà°¿ à°®à°°à°¿à°¯à± à°Ÿà±à°°à°¸à±à°Ÿà± à°¨à°¿à°°à±à°§à°¾à°°à°£ à°•à±Šà°°à°•à± à°°à°•à±à°·à°£ à°¸à°¾à°§à°¨à°®à±à°²à±</description>
    <description xml:lang="uk">ÐŸÑ€Ð¾Ð³Ñ€Ð°Ð¼Ð¸ Ð´Ð»Ñ Ð·Ð°Ñ…Ð¸ÑÑ‚Ñƒ Ð´Ð°Ð½Ð¸Ñ… ÑˆÐ»ÑÑ…Ð¾Ð¼ Ð¿ÐµÑ€ÐµÐ²Ñ–Ñ€ÐºÐ¸ Ñ†Ñ–Ð»Ñ–ÑÐ½Ð¾ÑÑ‚Ñ– Ñ‚Ð° Ð½Ð°Ð´Ñ–Ð¹Ð½Ð¾ÑÑ‚Ñ– Ð·Ð±ÐµÑ€Ñ–Ð³Ð°Ð½Ð½Ñ.</description>
    <description xml:lang="zh">æ•´åˆæ€§å’Œä¿¡ä»»é©—è­‰çš„å®‰å…¨æ€§å·¥å…·ã€‚</description>
    <description xml:lang="zh_CN">ç”¨äºŽå®Œæ•´æ€§å’Œå¯ä¿¡éªŒè¯çš„å®‰å…¨æ€§å·¥å…·ã€‚</description>
    <description xml:lang="zh_TW">æ•´åˆæ€§å’Œä¿¡ä»»é©—è­‰çš„å®‰å…¨æ€§å·¥å…·ã€‚</description>
    <default>true</default>
    <uservisible>true</uservisible>
    <packagelist>
      <packagereq type="default">scap-security-guide</packagereq>
      <packagereq type="optional">aide</packagereq>
      <packagereq type="optional">openscap</packagereq>
      <packagereq type="optional">openscap-engine-sce</packagereq>
      <packagereq type="optional">openscap-utils</packagereq>
      <packagereq type="optional">scap-security-guide-doc</packagereq>
      <packagereq type="optional">scap-workbench</packagereq>
      <packagereq type="optional">udica</packagereq>
    </packagelist>
  </group>
  <group>
    <id>smart-card</id>
    <name>Smart Card Support</name>
    <name xml:lang="as">à¦¸à§à¦®à¦¾à§°à§à¦Ÿ à¦•à¦¾à§°à§à¦¡ à¦¸à¦®à§°à§à¦¥à¦¨</name>
    <name xml:lang="cs">Podpora Smart card</name>
    <name xml:lang="de">Smart-Card-UnterstÃ¼tzung</name>
    <name xml:lang="de_CH">Smart-Card-UnterstÃ¼tzung</name>
    <name xml:lang="es">Soporte para tarjeta inteligente</name>
    <name xml:lang="fr">Prise en charge Smart Card</name>
    <name xml:lang="gu">àª¸à«àª®àª¾àª°à«àªŸ àª•àª¾àª°à«àª¡ àª†àª§àª¾àª°</name>
    <name xml:lang="hi">à¤¸à¥à¤®à¤¾à¤°à¥à¤Ÿ à¤•à¤¾à¤°à¥à¤¡ à¤¸à¤®à¤°à¥à¤¥à¤¨</name>
    <name xml:lang="it">Supporto smart card</name>
    <name xml:lang="ja">ã‚¹ãƒžãƒ¼ãƒˆã‚«ãƒ¼ãƒ‰ã‚µãƒãƒ¼ãƒˆ</name>
    <name xml:lang="kn">à²¸à³à²®à²¾à²°à³à²Ÿà³ à²•à²¾à²°à³à²¡à³ à²¬à³†à²‚à²¬à²²</name>
    <name xml:lang="ko">ìŠ¤ë§ˆíŠ¸ì¹´ë“œ ì§€ì›</name>
    <name xml:lang="ml">à´¸àµà´®à´¾à´°àµâ€à´Ÿàµà´Ÿàµ à´•à´¾à´°àµâ€à´¡à´¿à´¨àµà´³àµà´³ à´ªà´¿à´¨àµà´¤àµà´£</name>
    <name xml:lang="mr">à¤¸à¥à¤®à¤¾à¤°à¥à¤Ÿ à¤•à¤¾à¤°à¥à¤¡ à¤¸à¤®à¤°à¥à¤¥à¤¨</name>
    <name xml:lang="or">à¬¸à­à¬®à¬¾à¬°à­à¬Ÿ-à¬•à¬¾à¬°à­à¬¡ à¬¸à¬¹à¬¾à­Ÿà¬¤à¬¾</name>
    <name xml:lang="pa">à¨¸à¨®à¨¾à¨°à¨Ÿ à¨•à¨¾à¨°à¨¡ à¨¸à¨®à¨°à¨¥à¨¨</name>
    <name xml:lang="pl">ObsÅ‚uga smart card</name>
    <name xml:lang="pt">Suporte a Smart Card</name>
    <name xml:lang="pt_BR">Suporte a Smart Card</name>
    <name xml:lang="ru">ÐŸÐ¾Ð´Ð´ÐµÑ€Ð¶ÐºÐ° ÑÐ¼Ð°Ñ€Ñ‚-ÐºÐ°Ñ€Ñ‚</name>
    <name xml:lang="ta">à®¸à¯à®®à®¾à®°à¯à®Ÿà¯ à®•à®¾à®°à¯à®Ÿà¯ à®†à®¤à®°à®µà¯</name>
    <name xml:lang="te">à°¸à±à°®à°¾à°°à±à°Ÿà± à°•à°¾à°°à±à°¡à± à°¤à±‹à°¡à±à°ªà°¾à°Ÿà±</name>
    <name xml:lang="uk">ÐŸÑ–Ð´Ñ‚Ñ€Ð¸Ð¼ÐºÐ° ÑÐ¼Ð°Ñ€Ñ‚-ÐºÐ°Ñ€Ñ‚Ð¾Ðº</name>
    <name xml:lang="zh">æ™ºæ…§å¡æ”¯æ´</name>
    <name xml:lang="zh_CN">æ™ºèƒ½å¡æ”¯æŒ</name>
    <name xml:lang="zh_TW">æ™ºæ…§å¡æ”¯æ´</name>
    <description>Support for using smart card authentication.</description>
    <description xml:lang="as">à¦¸à§à¦®à¦¾à§°à§à¦Ÿ-à¦•à¦¾à§°à§à¦¡ à¦…à¦¨à§à¦®à§‹à¦¦à¦¨ à¦¬à§à¦¯à§±à¦¸à§à¦¥à¦¾ à¦¬à§à¦¯à§±à¦¹à¦¾à§°à§° à¦¬à¦¾à¦¬à§‡ à¦¸à¦®à§°à§à¦¥à¦¨à¥¤</description>
    <description xml:lang="bn">à¦¸à§à¦®à¦¾à¦°à§à¦Ÿ-à¦•à¦¾à¦°à§à¦¡ à¦…à¦¨à§à¦®à§‹à¦¦à¦¨ à¦¬à§à¦¯à¦¬à¦¸à§à¦¥à¦¾ à¦¬à§à¦¯à¦¬à¦¹à¦¾à¦°à§‡à¦° à¦œà¦¨à§à¦¯ à¦¸à¦®à¦°à§à¦¥à¦¨à¥¤</description>
    <description xml:lang="cs">Podpora pro pouÅ¾Ã­vÃ¡nÃ­ autentizace ÄipovÃ½mi kartami.</description>
    <description xml:lang="de">UnterstÃ¼tzung fÃ¼r die Verwendung von Smart Card Authentifikation.</description>
    <description xml:lang="de_CH">UnterstÃ¼tzung fÃ¼r die Verwendung von Smart Card Authentifikation.</description>
    <description xml:lang="es">Soporte para uso de autenticaciÃ³n de tarjeta inteligente.</description>
    <description xml:lang="fr">Prise en charge de l'authentification avec carte Ã  puce.</description>
    <description xml:lang="gu">àª¸à«àª®àª¾àª°à«àªŸ àª•àª¾àª°à«àª¡ àª¸àª¤à«àª¤àª¾àª§àª¿àª•àª°àª£àª¨à«‡ àªµàª¾àªªàª°àªµàª¾ àª®àª¾àªŸà«‡ àª†àª§àª¾àª°.</description>
    <description xml:lang="hi">à¤¸à¥à¤®à¤¾à¤°à¥à¤Ÿ à¤•à¤¾à¤°à¥à¤¡ à¤¸à¤¤à¥à¤¯à¤¾à¤ªà¤¨ à¤•à¥‡ à¤‰à¤ªà¤¯à¥‹à¤— à¤•à¥‡ à¤²à¤¿à¤ à¤¸à¤®à¤°à¥à¤¥à¤¨.</description>
    <description xml:lang="ia">Supporto pro le authentication per chip-carta.</description>
    <description xml:lang="it">Supporto per l'utilizzo dell'autenticazione delle smart card.</description>
    <description xml:lang="ja">ã‚¹ãƒžãƒ¼ãƒˆã‚«ãƒ¼ãƒ‰èªè¨¼ã®ä½¿ç”¨ã«å¯¾ã™ã‚‹ã‚µãƒãƒ¼ãƒˆã§ã™ã€‚</description>
    <description xml:lang="kn">à²¸à³à²®à²¾à²°à³à²Ÿà³ à²•à²¾à²°à³à²¡à³ à²¦à³ƒà²¢à³€à²•à²°à²£à²•à³à²•à³† à²¯à²¾à²µà³à²¦à³† à²¬à³†à²‚à²¬à²².</description>
    <description xml:lang="ko">ìŠ¤ë§ˆíŠ¸ ì¹´ë“œ ì¸ì¦ ì‚¬ìš© ì§€ì›</description>
    <description xml:lang="ml">à´¸àµà´®à´¾à´°àµâ€à´Ÿàµà´Ÿàµ à´•à´¾à´°àµâ€à´¡àµ à´‰à´ªà´¯àµ‹à´—à´¿à´šàµà´šàµàµ à´†à´§à´¿à´•à´¾à´°à´¿à´•à´¤ à´‰à´±à´ªàµà´ªà´¾à´•àµà´•àµà´¨àµà´¨à´¤à´¿à´¨àµà´³àµà´³ à´ªà´¿à´¨àµà´¤àµà´£.</description>
    <description xml:lang="mr">à¤¸à¥à¤®à¤¾à¤°à¥à¤Ÿ à¤•à¤¾à¤°à¥à¤¡à¤šà¤¾ à¤“à¤³à¤– à¤ªà¤Ÿà¤µà¤£à¥à¤¯à¤¾à¤•à¤°à¥€à¤¤à¤¾à¤šà¥‡ à¤¸à¤®à¤°à¥à¤¥à¤¨.</description>
    <description xml:lang="or">à¬¸à­à¬®à¬—à¬°à­à¬Ÿ à¬•à¬¾à¬°à­à¬¡à¬¼ à¬¬à­ˆà¬§à¬¿à¬•à¬°à¬£ à¬¬à­à­Ÿà¬¬à¬¹à¬¾à¬° à¬•à¬°à¬¿à¬¬à¬¾ à¬ªà¬¾à¬‡à¬ à¬¸à¬®à¬°à­à¬¥à¬¨à¥¤</description>
    <description xml:lang="pa">à¨¸à¨®à¨¾à¨°à¨Ÿ à¨•à¨¾à¨°à¨¡ à¨ªà©à¨°à¨®à¨¾à¨£à¨¿à¨•à¨¤à¨¾ à¨²à¨ˆ à¨¸à¨®à¨°à¨¥à¨¨à¥¤</description>
    <description xml:lang="pl">ObsÅ‚uga uwierzytelniania za pomocÄ… kart smart card.</description>
    <description xml:lang="pt">Suporte para uso de autenticaÃ§Ã£o do Smart card.</description>
    <description xml:lang="pt_BR">Suporte para uso de autenticaÃ§Ã£o do Smart card.</description>
    <description xml:lang="ru">ÐŸÐ¾Ð´Ð´ÐµÑ€Ð¶ÐºÐ° Ð°ÑƒÑ‚ÐµÐ½Ñ‚Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸Ð¸ Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ ÑÐ¼Ð°Ñ€Ñ‚-ÐºÐ°Ñ€Ñ‚.</description>
    <description xml:lang="sv">StÃ¶d fÃ¶r anvÃ¤ndning av smarta kort fÃ¶r autenticering.</description>
    <description xml:lang="ta">à®¸à¯à®®à®¾à®°à¯à®Ÿà¯ à®•à®¾à®°à¯à®Ÿà¯ à®…à®™à¯à®•à¯€à®•à®¾à®°à®¤à¯à®¤à¯ˆ à®ªà®¯à®©à¯à®ªà®Ÿà¯à®¤à¯à®¤à¯à®µà®¤à®±à¯à®•à®¾à®© à®†à®¤à®°à®µà¯.</description>
    <description xml:lang="te">à°¸à±à°®à°¾à°°à±à°Ÿà± à°•à°¾à°°à±à°¡à± à°§à±ƒà°µà±€à°•à°°à°£à°¨à± à°µà±à°ªà°¯à±‹à°—à°¿à°‚à°šà±à°Ÿ à°•à±Šà°°à°•à± à°®à°¦à±à°¦à°¤à±.</description>
    <description xml:lang="uk">ÐŸÑ–Ð´Ñ‚Ñ€Ð¸Ð¼ÐºÐ° Ð²Ð¸ÐºÐ¾Ñ€Ð¸ÑÑ‚Ð°Ð½Ð½Ñ ÑÐ¼Ð°Ñ€Ñ‚-ÐºÐ°Ñ€Ñ‚Ð¾Ðº Ð´Ð»Ñ Ñ€Ð¾Ð·Ð¿Ñ–Ð·Ð½Ð°Ð²Ð°Ð½Ð½Ñ.</description>
    <description xml:lang="zh">æ”¯æ´ä½¿ç”¨æ™ºæ…§å¡èªè­‰ã€‚</description>
    <description xml:lang="zh_CN">æ”¯æŒä½¿ç”¨æ™ºèƒ½å¡éªŒè¯ã€‚</description>
    <description xml:lang="zh_TW">æ”¯æ´ä½¿ç”¨æ™ºæ…§å¡èªè­‰ã€‚</description>
    <default>true</default>
    <uservisible>true</uservisible>
    <packagelist>
      <packagereq type="default">esc</packagereq>
    </packagelist>
  </group>
  <group>
    <id>standard</id>
    <name>Standard</name>
    <name xml:lang="de">Standard</name>
    <name xml:lang="es">EstÃ¡ndar</name>
    <name xml:lang="fr">Standard</name>
    <name xml:lang="it">Standard</name>
    <name xml:lang="ja">æ¨™æº–</name>
    <name xml:lang="ko">í‘œì¤€ </name>
    <name xml:lang="pt">PadrÃ£o</name>
    <name xml:lang="pt_BR">PadrÃ£o</name>
    <name xml:lang="ru">Ð¡Ñ‚Ð°Ð½Ð´Ð°Ñ€Ñ‚</name>
    <name xml:lang="zh_CN">æ ‡å‡†å®‰è£…</name>
    <name xml:lang="zh_TW">æ¨™æº–</name>
    <description>The standard installation of CentOS Linux.</description>
    <default>true</default>
    <uservisible>false</uservisible>
    <packagelist>
      <packagereq type="mandatory">rsyslog-gnutls</packagereq>
      <packagereq type="mandatory">rsyslog-gssapi</packagereq>
      <packagereq type="mandatory">rsyslog-relp</packagereq>
      <packagereq type="default">fprintd-pam</packagereq>
      <packagereq type="default">insights-client</packagereq>
      <packagereq type="default">nmap-ncat</packagereq>
      <packagereq type="default">pinfo</packagereq>
      <packagereq type="default">plymouth</packagereq>
      <packagereq type="default">tcpdump</packagereq>
      <packagereq type="default">vim-enhanced</packagereq>
      <packagereq type="default">wget</packagereq>
    </packagelist>
  </group>
  <group>
    <id>system-tools</id>
    <name>System Tools</name>
    <name xml:lang="af">Rekenaarnutsgoed</name>
    <name xml:lang="am">á‹¨áˆ²áˆµá‰°áˆ á‰±áˆáˆµ</name>
    <name xml:lang="ar">Ø£Ø¯ÙˆØ§Øª Ø§Ù„Ù†Ø¸Ø§Ù…</name>
    <name xml:lang="as">à¦šà¦¿à¦¸à§à¦Ÿà§‡à¦®à§° à¦¸à¦à¦œà§à¦²à¦¿à¦¸à¦®à§‚à¦¹</name>
    <name xml:lang="bal">ÙˆØ³Ø§ÛŒÙ„ Ø³ÛŒØ³ØªÙ…</name>
    <name xml:lang="be">Ð¡Ñ‹ÑÑ‚ÑÐ¼Ð½Ñ‹Ñ ÑÑ€Ð¾Ð´ÐºÑ–</name>
    <name xml:lang="bg">Ð¡Ð¸ÑÑ‚ÐµÐ¼Ð½Ð¸ Ð¸Ð½ÑÑ‚Ñ€ÑƒÐ¼ÐµÐ½Ñ‚Ð¸</name>
    <name xml:lang="bn">à¦¸à¦¿à¦¸à§à¦Ÿà§‡à¦®à§‡à¦° à¦¸à¦°à¦žà§à¦œà¦¾à¦®</name>
    <name xml:lang="bs">Alati sustava</name>
    <name xml:lang="ca">Eines del sistema</name>
    <name xml:lang="cs">SystÃ©movÃ© nÃ¡stroje</name>
    <name xml:lang="cy">Arfau System</name>
    <name xml:lang="da">SystemvÃ¦rktÃ¸jer</name>
    <name xml:lang="de">Systemwerkzeuge</name>
    <name xml:lang="de_CH">Systemwerkzeuge</name>
    <name xml:lang="el">Î•ÏÎ³Î±Î»ÎµÎ¯Î± ÏƒÏ…ÏƒÏ„Î®Î¼Î±Ï„Î¿Ï‚</name>
    <name xml:lang="en_GB">System Tools</name>
    <name xml:lang="es">Herramientas del sistema</name>
    <name xml:lang="et">SÃ¼steemi vahendid</name>
    <name xml:lang="eu">Sistemaren tresnak</name>
    <name xml:lang="fa">Ø§Ø¨Ø²Ø§Ø±Ù‡Ø§ÛŒ Ø³ÛŒØ³ØªÙ…ÛŒ</name>
    <name xml:lang="fa_IR">Ø§Ø¨Ø²Ø§Ø±Ù‡Ø§ÛŒ Ø³ÛŒØ³ØªÙ…ÛŒ</name>
    <name xml:lang="fi">JÃ¤rjestelmÃ¤tyÃ¶kalut</name>
    <name xml:lang="fr">Outils systÃ¨me</name>
    <name xml:lang="gl">Ferramentas do sistema</name>
    <name xml:lang="gu">àª¸àª¿àª¸à«àªŸàª® àª¸àª¾àª§àª¨à«‹</name>
    <name xml:lang="he">×›×œ×™ ×ž×¢×¨×›×ª</name>
    <name xml:lang="hi">à¤¸à¤¿à¤¸à¥à¤Ÿà¤® à¤‰à¤ªà¤•à¤°à¤£</name>
    <name xml:lang="hr">Alati sustava</name>
    <name xml:lang="hu">RendszereszkÃ¶zÃ¶k</name>
    <name xml:lang="hy">Õ€Õ¡Õ´Õ¡Õ¯Õ¡Ö€Õ£Õ¡ÕµÕ«Õ¶ Õ£Õ¸Ö€Õ®Õ«Ö„Õ¶Õ¥Ö€</name>
    <name xml:lang="ia">Instrumentos de systema</name>
    <name xml:lang="id">Peralatan Sistem</name>
    <name xml:lang="ilo">Ramramit ti Sistema</name>
    <name xml:lang="is">KerfistÃ³l</name>
    <name xml:lang="it">Strumenti di sistema</name>
    <name xml:lang="ja">ã‚·ã‚¹ãƒ†ãƒ ãƒ„ãƒ¼ãƒ«</name>
    <name xml:lang="ka">áƒ¡áƒ˜áƒ¡áƒ¢áƒ”áƒ›áƒ£áƒ áƒ˜ áƒ˜áƒœáƒ¡áƒ¢áƒ áƒ£áƒ›áƒ”áƒœáƒ¢áƒ”áƒ‘áƒ˜</name>
    <name xml:lang="kn">à²—à²£à²•à²µà³à²¯à²µà²¸à³à²¥à³†à²¯ à²‰à²ªà²•à²°à²£à²—à²³à³</name>
    <name xml:lang="ko">ì‹œìŠ¤í…œ íˆ´ </name>
    <name xml:lang="lv">SistÄ“mas rÄ«ki</name>
    <name xml:lang="mai">à¤¸à¤¿à¤¸à¥à¤Ÿà¤® à¤…à¤“à¤œà¤¾à¤°</name>
    <name xml:lang="mk">Ð¡Ð¸ÑÑ‚ÐµÐ¼ÑÐºÐ¸ Ð°Ð»Ð°Ñ‚ÐºÐ¸</name>
    <name xml:lang="ml">à´¸à´¿à´¸àµà´±àµà´±à´‚ à´Ÿàµ‚à´³àµà´•à´³àµâ€</name>
    <name xml:lang="mr">à¤ªà¥à¤°à¤£à¤¾à¤²à¥€ à¤‰à¤ªà¤•à¤°à¤£à¥‡</name>
    <name xml:lang="ms">Alatan Sistem</name>
    <name xml:lang="nb">SystemverktÃ¸y</name>
    <name xml:lang="ne">à¤ªà¥à¤°à¤£à¤¾à¤²à¥€ à¤‰à¤ªà¤•à¤°à¤£</name>
    <name xml:lang="nl">Systeemgereedschappen</name>
    <name xml:lang="no">SystemverktÃ¸y</name>
    <name xml:lang="nso">DidiriÅ¡wa tÅ¡a TshepediÅ¡o</name>
    <name xml:lang="or">à¬¤à¬¨à­à¬¤à­à¬° à¬œà¬¨à¬¿à¬¤ à¬‰à¬ªà¬•à¬°à¬£</name>
    <name xml:lang="pa">à¨¸à¨¿à¨¸à¨Ÿà¨® à¨¸à©°à¨¦</name>
    <name xml:lang="pl">NarzÄ™dzia systemowe</name>
    <name xml:lang="pt">Ferramentas do Sistema</name>
    <name xml:lang="pt_BR">Ferramentas do Sistema</name>
    <name xml:lang="ro">Unelte sistem</name>
    <name xml:lang="ru">Ð¡Ð¸ÑÑ‚ÐµÐ¼Ð½Ñ‹Ðµ ÑÑ€ÐµÐ´ÑÑ‚Ð²Ð°</name>
    <name xml:lang="si">à¶´à¶¯à·Šà¶°à¶­à·’ à¶¸à·™à·€à¶½à¶¸à·Š</name>
    <name xml:lang="sk">SystÃ©movÃ© nÃ¡stroje</name>
    <name xml:lang="sl">Sistemska orodja</name>
    <name xml:lang="sq">Mjete Sistemi</name>
    <name xml:lang="sr">Ð¡Ð¸ÑÑ‚ÐµÐ¼ÑÐºÐµ Ð°Ð»Ð°Ñ‚ÐºÐµ</name>
    <name xml:lang="sr@Latn">Sistemske alatke</name>
    <name xml:lang="sr@latin">Sistemske alatke</name>
    <name xml:lang="sv">Systemverktyg</name>
    <name xml:lang="ta">à®•à®£à®¿à®©à®¿ à®•à®°à¯à®µà®¿à®•à®³à¯</name>
    <name xml:lang="te">à°¸à°¿à°¸à±à°Ÿà°®à± à°¸à°¾à°§à°¨à°®à±à°²à±</name>
    <name xml:lang="tg">ÐÑÐ±Ð¾Ð±Ò³Ð¾Ð¸ ÑÐ¸ÑÑ‚ÐµÐ¼Ð°Ð²Ó£</name>
    <name xml:lang="th">à¹€à¸„à¸£à¸·à¹ˆà¸­à¸‡à¸¡à¸·à¸­à¸£à¸°à¸šà¸š</name>
    <name xml:lang="tr">Sistem AraÃ§larÄ±</name>
    <name xml:lang="uk">Ð¡Ð¸ÑÑ‚ÐµÐ¼Ð½Ñ– Ð·Ð°ÑÐ¾Ð±Ð¸</name>
    <name xml:lang="ur">Ù†Ø¸Ø§Ù… Ø§Ù„Ø§Øª</name>
    <name xml:lang="vi">CÃ´ng cá»¥ há»‡ thá»‘ng</name>
    <name xml:lang="zh">ç³»çµ±å·¥å…·</name>
    <name xml:lang="zh_CN">ç³»ç»Ÿå·¥å…·</name>
    <name xml:lang="zh_TW">ç³»çµ±å·¥å…·</name>
    <name xml:lang="zu">Amathuluzi Esistimu</name>
    <description>This group is a collection of various tools for the system, such as the client for connecting to SMB shares and tools to monitor network traffic.</description>
    <description xml:lang="af">Hierdie groep is 'n versameling diverse nutsgoed vir die rekenaar, soos die kliÃ«nt om aan gedeelte SMB-hulpbronne te koppel en nutsgoed om netwerkverkeer te monitor.</description>
    <description xml:lang="am">á‹­áˆ… á‰¡á‹µáŠ• áˆˆáˆ²áˆµá‰°áˆ™ á‹°áŠ•á‰ áŠžá‰½áŠ•  á‹¨áˆ˜áˆ¨á‰¡áŠ• á‹á‹á‹áˆ­ á‹¨áˆšá‰†áŒ£áŒ áˆ© áˆ˜áˆ£áˆªá‹«á‹Žá‰½ áŠ¥áŠ“ áŠ¨SMB áŒ‹áˆ­ á‹¨áˆšá‹«áŒˆáŠ“áŠ™ á‹¨á‰°áˆˆá‹«á‹© áˆ˜áˆ£áˆªá‹«á‹Žá‰½ áˆµá‰¥áˆµá‰¥ áŠá‹á¢</description>
    <description xml:lang="ar">ØªØ­ØªÙˆÙŠ Ù‡Ø°Ù‡ Ø§Ù„Ù…Ø¬Ù…ÙˆØ¹Ø© Ø¹Ù„Ù‰ Ø£Ø¯ÙˆØ§Øª Ù…Ø®ØªÙ„ÙÙ‡ Ù„Ù„Ù†Ø¸Ø§Ù…ØŒ Ù…Ø«Ù„ Ø¨Ø±Ù†Ø§Ù…Ø¬ Ù„Ù„Ø¥ØªØµØ§Ù„ Ø¨Ù…ÙØ´Ø§Ø±ÙƒØ§Øª ÙƒØªÙ„Ø© Ø±Ø³Ø§Ø¦Ù„ Ø§Ù„Ù†Ù‘Ø¸Ø§Ù… (SMB) Ùˆ Ø£Ø¯ÙˆØ§Øª Ù„Ù…Ø±Ø§Ù‚Ø¨Ø© Ù†Ù‚Ù„ Ø§Ù„Ø¨ÙŠØ§Ù†Ø§Øª Ø¹Ù„Ù‰ Ø§Ù„Ø´Ø¨ÙƒØ©.</description>
    <description xml:lang="as">à¦à¦‡ à¦¦à¦² à¦šà¦¿à¦¸à§à¦Ÿà§‡à¦®à§° à¦¬à¦¿à¦­à¦¿à¦¨à§à¦¨ à¦¸à¦à¦œà§à¦²à¦¿à§° à¦¸à¦®à¦·à§à¦Ÿà¦¿, à¦¯à§‡à¦¨à§‡ SMB à¦…à¦‚à¦¶à¦²à§ˆ à¦¸à¦‚à¦¯à§‹à¦— à¦•à§°à¦¾à§° à¦•à§à¦²à¦¾à¦à¦¨à§à¦Ÿ à¦†à§°à§ à¦¨à§‡à¦Ÿà§±à¦¾à§°à§à¦• à¦¬à¦¾à¦Ÿà§° à¦­à§€à§° à¦¨à§€à§°à¦¿à¦•à§à¦·à¦£ à¦•à§°à¦¾ à¦¸à¦à¦œà§à¦²à¦¿à¥¤</description>
    <description xml:lang="bal">Ø§ÛŒ Ú¯Ø±ÙˆÙ‡ ÛŒÚ© Ø¬Ù…Ø¹ÛŒÙ†Øª Ú†Ù‡ Ø§Ø¨Ø²Ø§Ø±Ø§ØªÛŒ Ù¾Ù‡ Ø³ÛŒØ³ØªÙ… Ù¾Ù‡ Ø¯Ø§Ø¨ Ú©Ù„Ø§ÛŒÙ†Øª Ù¾Ù‡ ÙˆØµÙ„ Ø¨ÛŒÚ¯ Ù¾Ù‡ SMB Ø§Ø´ØªØ±Ø§Ú©ÛŒ Ùˆ Ø§Ø¨Ø²Ø§Ø±Ø§ØªÛŒ Ù¾Ù‡ Ù¾ÛŒØ´ Ø¯Ø§Ø±Ú¯ ØªØ±Ø§ÙÛŒÚ© Ø´Ø¨Ú©Ù‡</description>
    <description xml:lang="bg">Ð¢Ð°Ð·Ð¸ Ð³Ñ€ÑƒÐ¿Ð° Ðµ ÐºÐ¾Ð»ÐµÐºÑ†Ð¸Ñ Ð¾Ñ‚ Ñ€Ð°Ð·Ð»Ð¸Ñ‡Ð½Ð¸ Ð¸Ð½ÑÑ‚Ñ€ÑƒÐ¼ÐµÐ½Ñ‚Ð¸ Ð·Ð° ÑÐ¸ÑÑ‚ÐµÐ¼Ð°Ñ‚Ð°, ÐºÐ°Ñ‚Ð¾ ÐºÐ»Ð¸ÐµÐ½Ñ‚ Ð·Ð° ÑÐ²Ñ€ÑŠÐ·ÐºÐ° ÑÑŠÑ SMB ÑÐ¿Ð¾Ð´ÐµÐ»ÐµÐ½Ð¸ Ñ€ÐµÑÑƒÑ€ÑÐ¸ Ð¸ Ð¸Ð½ÑÑ‚Ñ€ÑƒÐ¼ÐµÐ½Ñ‚Ð¸ Ð·Ð° Ð½Ð°Ð±Ð»ÑŽÐ´ÐµÐ½Ð¸Ðµ Ð½Ð° Ð¼Ñ€ÐµÐ¶Ð¾Ð²Ð¸Ñ Ñ‚Ñ€Ð°Ñ„Ð¸Ðº.</description>
    <description xml:lang="bn">à¦à¦‡ à¦¸à¦‚à¦•à¦²à¦¨à§‡à¦° à¦®à¦§à§à¦¯à§‡ à¦¸à¦¿à¦¸à§à¦Ÿà§‡à¦®à§‡à¦° à¦œà¦¨à§à¦¯ à¦¬à¦¿à¦­à¦¿à¦¨à§à¦¨ à¦¸à¦°à¦žà§à¦œà¦¾à¦® à¦¯à§‡à¦®à¦¨ SMB à¦¶à§‡à§Ÿà¦¾à¦°à§‡à¦° à¦¸à¦¾à¦¥à§‡ à¦¸à¦‚à¦¯à§‹à¦— à¦•à¦°à¦¾à¦° à¦‰à¦¦à§à¦¦à§‡à¦¶à§à¦¯à§‡ à¦•à§à¦²à¦¾à§Ÿà§‡à¦¨à§à¦Ÿ à¦“ à¦¨à§‡à¦Ÿà¦“à§Ÿà¦¾à¦°à§à¦• à¦Ÿà§à¦°à¦¾à¦«à¦¿à¦• à¦¨à¦¿à¦°à§€à¦•à§à¦·à¦£ à¦¬à§à¦¯à¦¬à¦¸à§à¦¥à¦¾ à¦‰à¦ªà¦¸à§à¦¥à¦¿à¦¤ à¦°à§Ÿà§‡à¦›à§‡à¥¤</description>
    <description xml:lang="bs">Ova je grupa kolekcija razliÄitih alata za sistem, poput klijenata za povezivanje s SMB dijeljenjima i alati za nadzor mreÅ¾nog prometa.</description>
    <description xml:lang="ca">Aquest grup Ã©s una colÂ·lecciÃ³ de diferents eines per al sistema, per exemple connectar-vos a recursos SMB i eines per monitoritzar trÃ fic de xarxa.</description>
    <description xml:lang="cs">Kolekce rÅ¯znÃ½ch nÃ¡strojÅ¯ obsahujÃ­cÃ­ napÅ™Ã­klad klient pro pÅ™ipojovÃ¡nÃ­ sdÃ­lenÃ½ch sloÅ¾ek protokolem SMB nebo nÃ¡stroje pro monitorovÃ¡nÃ­ sÃ­Å¥ovÃ©ho provozu.</description>
    <description xml:lang="cy">Mae'r grÅµp yma'n gasgliad o erfynnau amrywiol ar gyfer y system, megis y dibynnydd ar gyfer cysylltu Ã¢ rhaniadau SMB ac arfau ar gyfer arsylwi trafnidiaeth rhwydwaith.</description>
    <description xml:lang="da">Denne gruppe er en samling med diverse vÃ¦rktÃ¸jer til systemet, som fx klienten for tilslutning til SMB-delinger og vÃ¦rktÃ¸jer for overvÃ¥gning af netvÃ¦rkstrafik.</description>
    <description xml:lang="de">Diese Gruppe enthÃ¤lt eine Reihe von Systemwerkzeuge wie beispielsweise den Client fÃ¼r die Verbindung zu SMB-Freigaben sowie Programme fÃ¼r die Ãœberwachung des Netzwerkverkehrs.</description>
    <description xml:lang="de_CH">Diese Gruppe enthÃ¤lt eine Reihe von Systemwerkzeuge wie beispielsweise den Client fÃ¼r die Verbindung zu SMB-Freigaben sowie Programme fÃ¼r die Ãœberwachung des Netzwerkverkehrs.</description>
    <description xml:lang="el">Î‘Ï…Ï„Î® Î· Î¿Î¼Î¬Î´Î± ÎµÎ¯Î½Î±Î¹ Î¼Î¹Î± ÏƒÏ…Î»Î»Î¿Î³Î® Î±Ï€ÏŒ Î´Î¹Î¬Ï†Î¿ÏÎ± ÎµÏÎ³Î±Î»ÎµÎ¯Î± Î³Î¹Î± Ï„Î¿ ÏƒÏÏƒÏ„Î·Î¼Î±, ÏŒÏ€Ï‰Ï‚ ÎµÎ¯Î½Î±Î¹ Î¿ Ï€ÎµÎ»Î¬Ï„Î·Ï‚ ÏƒÏÎ½Î´ÎµÏƒÎ·Ï‚ ÏƒÎµ ÎºÎ¿Î¹Î½Î¿ÏÏ‚ Ï€ÏŒÏÎ¿Ï…Ï‚ SMB ÎºÎ±Î¹ ÎµÏÎ³Î±Î»ÎµÎ¯Î± Ï€Î±ÏÎ±ÎºÎ¿Î»Î¿ÏÎ¸Î·ÏƒÎ·Ï‚ Ï„Î·Ï‚ Î´Î¹ÎºÏ„Ï…Î±ÎºÎ®Ï‚ ÎºÏ…ÎºÎ»Î¿Ï†Î¿ÏÎ¯Î±Ï‚.</description>
    <description xml:lang="en_GB">This group is a collection of various tools for the system, such as the client for connecting to SMB shares and tools to monitor network traffic.</description>
    <description xml:lang="es">Este grupo es una colecciÃ³n de herramientas varias para el sistema, entre ellas se encuentra un cliente para conectarse a particiones SMB, herramientas para monitorizar el trÃ¡fico de redes, entre otras.</description>
    <description xml:lang="et">See rÃ¼hm on erinevate sÃ¼steemi vahendite kollektsioon, sealh. SMB jagamiste Ã¼hendamiste klient ja vahend vÃµrguliikluse jÃ¤lgimiseks.</description>
    <description xml:lang="fa">Ø§ÛŒÙ† Ú¯Ø±ÙˆÙ‡ Ù…Ø¬Ù…ÙˆØ¹Ù‡â€ŒØ§ÛŒ Ø§Ø² Ø§Ø¨Ø²Ø§Ø±Ù‡Ø§ÛŒ Ú¯ÙˆÙ†Ø§Ú¯ÙˆÙ† Ø¨Ø±Ø§ÛŒ Ø³ÛŒØ³ØªÙ… Ø§Ø³ØªØŒ Ù…Ø«Ù„ Ú©Ø§Ø±Ú¯ÛŒØ± ÙˆØµÙ„ Ø´Ø¯Ù† Ø¨Ù‡ Ø§Ø´ØªØ±Ø§Ú©â€ŒÙ‡Ø§ÛŒ SMB Ùˆ Ø§Ø¨Ø²Ø§Ø±Ù‡Ø§ÛŒ Ù†Ø¸Ø§Ø±Øª Ø¨Ø± ØªØ±Ø§ÙÛŒÚ© Ø´Ø¨Ú©Ù‡.</description>
    <description xml:lang="fa_IR">Ø§ÛŒÙ† Ú¯Ø±ÙˆÙ‡ Ù…Ø¬Ù…ÙˆØ¹Ù‡â€ŒØ§ÛŒ Ø§Ø² Ø§Ø¨Ø²Ø§Ø±Ù‡Ø§ÛŒ Ú¯ÙˆÙ†Ø§Ú¯ÙˆÙ† Ø¨Ø±Ø§ÛŒ Ø³ÛŒØ³ØªÙ… Ø§Ø³ØªØŒ Ù…Ø«Ù„ Ú©Ø§Ø±Ú¯ÛŒØ± ÙˆØµÙ„ Ø´Ø¯Ù† Ø¨Ù‡ Ø§Ø´ØªØ±Ø§Ú©â€ŒÙ‡Ø§ÛŒ SMB Ùˆ Ø§Ø¨Ø²Ø§Ø±Ù‡Ø§ÛŒ Ù†Ø¸Ø§Ø±Øª Ø¨Ø± ØªØ±Ø§ÙÛŒÚ© Ø´Ø¨Ú©Ù‡.</description>
    <description xml:lang="fi">TÃ¤mÃ¤ ryhmÃ¤ sisÃ¤ltÃ¤Ã¤ kokoelman erilaisia jÃ¤rjestelmÃ¤tyÃ¶kaluja, kuten asiakasohjelmiston SMB-jakoihin yhdistÃ¤miseen ja tyÃ¶kalun verkkoliikenteen tarkkailuun.</description>
    <description xml:lang="fr">Ce groupe est un ensemble d'outils systÃ¨me, ainsi qu'un client pour la connexion aux parts SMB et d'outils permettant de gÃ©rer le trafic dans le rÃ©seau.</description>
    <description xml:lang="gu">àª† àªœà«‚àª¥ àª àª¸àª¿àª¸à«àªŸàª® àª®àª¾àªŸà«‡ àªµàª¿àªµàª¿àª§ àª¸àª¾àª§àª¨à«‹àª¨à«‹ àª¸àª‚àª—à«àª°àª¹ àª›à«‡, àªœà«‡àª® àª•à«‡ SMB àª¸àª¾àª¥à«‡ àª¸àª‚àªªàª°à«àª• àª•àª°àªµàª¾ àª®àª¾àªŸà«‡ àª•à«àª²àª¾àªˆàª¨à«àªŸ àª…àª¨à«‡ àª¨à«‡àªŸàªµàª°à«àª• àªŸà«àª°àª¾àª«àª¿àª• àªœà«‹àªµàª¾ àª®àª¾àªŸà«‡àª¨àª¾ àª¸àª¾àª§àª¨à«‹.</description>
    <description xml:lang="he">×–×”×• ××•×¡×£ ×›×œ×™ ×ž×¢×¨×›×ª ×©×•× ×™× ×›×’×•×Ÿ ×œ×§×•×— ×”×ž××¤×©×¨ ×”×ª×—×‘×¨×•×ª ×œ×ª×™×§×™×•×ª ×¨×©×ª ×ž×©×•×ª×¤×•×ª ×‘×¢×–×¨×ª ×¤×¨×•×˜×•×§×•×œ SMB ×•×›×œ×™× ×œ× ×™×˜×•×¨ ×ª×¢×‘×•×¨×ª ×”×¨×©×ª.</description>
    <description xml:lang="hi">à¤¯à¤¹ à¤¸à¤®à¥‚à¤¹ à¤¸à¤¿à¤¸à¥à¤Ÿà¤® à¤•à¥‡ à¤²à¤¿à¤ à¤µà¤¿à¤µà¤¿à¤§ à¤‰à¤ªà¤•à¤°à¤£à¥‹à¤‚ à¤•à¤¾ à¤¸à¤‚à¤šà¤¯ à¤¹à¥ˆ, à¤œà¥ˆà¤¸à¥‡ SMB à¤¸à¤¾à¤à¤¾ à¤¸à¥‡ à¤•à¥à¤²à¤¾à¤‡à¤‚à¤Ÿ à¤•à¥‡ à¤¸à¤‚à¤¬à¤‚à¤§à¤¨ à¤•à¥‡ à¤²à¤¿à¤ à¤”à¤° à¤¸à¤‚à¤œà¤¾à¤² à¤¯à¤¾à¤¤à¤¾à¤¯à¤¾à¤¤ à¤®à¥‰à¤¨à¥€à¤Ÿà¤° à¤•à¤°à¤¨à¥‡ à¤•à¥‡ à¤²à¤¿à¤ à¤‰à¤ªà¤•à¤°à¤£.</description>
    <description xml:lang="hr">Ova je grupa kolekcija razliÄitih alata za sustav, poput klijenata za povezivanje s SMB dijeljenjima i alati za nadzor mreÅ¾nog prometa.</description>
    <description xml:lang="hu">Ebben a csoportban kÃ¼lÃ¶nfÃ©le rendszereszkÃ¶zÃ¶k talÃ¡lhatÃ³k, pÃ©ldÃ¡ul SMB-megosztÃ¡sok elÃ©rÃ©sÃ©hez Ã©s a hÃ¡lÃ³zati forgalom figyelÃ©sÃ©hez.</description>
    <description xml:lang="ia">Iste gruppo es un collection de varie instrumentos pro le systema, tal como le clientes pro connecter al partitiones SMB e le utensiles pro surveliar le traffico de rete.</description>
    <description xml:lang="id">Grup ini berisikan koleksi berbagai alat bantu untuk sistem, seperti klien untuk melakukan koneksi ke sharing SMB dan alat bantu untuk monitor trafik jaringan.</description>
    <description xml:lang="is">Ãžessi hÃ³pur inniheldur safn kerfistÃ³la eins og til dÃ¦mis tÃ³l til aÃ° tengjast SMB netdrifum og tÃ³l til aÃ° fylgjast meÃ° umferÃ° Ã¡ neti.</description>
    <description xml:lang="it">Questo gruppo Ã¨ una raccolta di vari strumenti per il sistema, che comprende il client per la connessione alle condivisioni SMB e gli strumenti per monitorare il traffico di rete.</description>
    <description xml:lang="ja">ã“ã®ã‚°ãƒ«ãƒ¼ãƒ—ã«ã¯ã€ã‚·ã‚¹ãƒ†ãƒ ç”¨ã®å„ç¨®ãƒ„ãƒ¼ãƒ« (SMB å…±æœ‰ã¸ã®æŽ¥ç¶šã‚¯ãƒ©ã‚¤ã‚¢ãƒ³ãƒˆã‚„ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯é€šä¿¡é‡ã‚’ãƒ¢ãƒ‹ã‚¿ãƒ¼ã™ã‚‹ãƒ„ãƒ¼ãƒ«) ã®ã‚³ãƒ¬ã‚¯ã‚·ãƒ§ãƒ³ãŒå«ã¾ã‚Œã¾ã™ã€‚</description>
    <description xml:lang="kn">à²ˆ à²¸à²®à³‚à²¹ SMB à²¹à²‚à²šà²¿à²•à³†à²—à²³à²¨à³à²¨à³ à²¸à²‚à²ªà²°à³à²•à²¿à²¸à²²à³ à²¬à³‡à²•à²¾à²¦ à²•à³à²²à³ˆà²‚à²Ÿà³â€Œ à²…à²¨à³à²µà²¯ à²¹à²¾à²—à³‚ à²œà²¾à²² à²¦à²Ÿà³à²Ÿà²£à³†à²¯à²¨à³à²¨à³ à²®à³‡à²²à³à²µà²¿à²šà²¾à²°à²¿à²¸à²¿à²•à³Šà²³à³à²³à²²à³ à²…à²—à²¤à³à²¯à²µà²¾à²¦ à²‰à²ªà²•à²°à²£à²—à²³à²¨à³à²¨à³Šà²³à²—à³Šà²‚à²¡à²¿à²¦à³†.</description>
    <description xml:lang="ko">ì´ ê·¸ë£¹ì€ SMB ê³µìœ ì— ì ‘ì†í•˜ëŠ”ë° ì‚¬ìš©í•˜ëŠ” í´ë¼ì´ì–¸íŠ¸ì™€ ë„¤íŠ¸ì›Œí¬ ì†Œí†µëŸ‰ëª¨ë‹ˆí„° íˆ´ê³¼ ê°™ì€ ë‹¤ì–‘í•œ ì‹œìŠ¤í…œ íˆ´ ëª¨ìŒìž…ë‹ˆë‹¤.</description>
    <description xml:lang="lv">Å Ä« grupa ietver daÅ¾Ädas sistÄ“mas palÄ«gprogrammas: piemÄ“ram, klientprogrammas piekÄ¼uvei SMB serveriem un tÄ«kla trafika novÄ“roÅ¡anai.</description>
    <description xml:lang="mai">à¤ˆ à¤¸à¤®à¥‚à¤¹ à¤¸à¤¿à¤¸à¥à¤Ÿà¤® à¤•' à¤²à¥‡à¤² à¤µà¤¿à¤µà¤¿à¤§ à¤…à¤“à¤œà¤¾à¤°à¤¸à¤­à¤• à¤¸à¤‚à¤šà¤¯ à¤…à¤›à¤¿, à¤œà¤¹à¤¿à¤¨à¤¾ SMB à¤¸à¤¾à¤à¤¾ à¤¸à¤ à¤•à¥à¤²à¤¾à¤‡à¤‚à¤Ÿà¤• à¤¸à¤‚à¤¬à¤‚à¤§à¤¨ à¤•' à¤²à¥‡à¤² à¤†à¤“à¤° à¤¸à¤‚à¤œà¤¾à¤² à¤¯à¤¾à¤¤à¤¾à¤¯à¤¾à¤¤ à¤®à¥‰à¤¨à¥€à¤Ÿà¤° à¤•à¤°à¤¬à¤¾ à¤•' à¤²à¥‡à¤² à¤…à¤“à¤œà¤¾à¤°.</description>
    <description xml:lang="mk">ÐžÐ²Ð°Ð° Ð³Ñ€ÑƒÐ¿Ð° Ðµ Ð·Ð±Ð¾Ñ€ÐºÐ° Ð½Ð° Ñ€Ð°Ð·Ð½Ð¸ Ð°Ð»Ð°Ñ‚ÐºÐ¸ Ð·Ð° ÑÐ¸ÑÑ‚ÐµÐ¼Ð¾Ñ‚, ÐºÐ°ÐºÐ¾ Ð½Ð° Ð¿Ñ€Ð¸Ð¼ÐµÑ€: ÐºÐ»Ð¸ÐµÐ½Ñ‚Ð¸ Ð·Ð° Ð¿Ð¾Ð²Ñ€Ð·ÑƒÐ²Ð°ÑšÐµ ÑÐ¾ SMB Ð´ÐµÐ»ÐµÑšÐ° Ð¸ Ð°Ð»Ð°Ñ‚ÐºÐ¸ Ð·Ð° Ð½Ð°Ð´Ð³Ð»ÐµÐ´ÑƒÐ²Ð°ÑšÐµ Ð½Ð° Ð¼Ñ€ÐµÐ¶Ð½Ð¸Ð¾Ñ‚ ÑÐ¾Ð¾Ð±Ñ€Ð°ÑœÐ°Ñ˜.</description>
    <description xml:lang="ml">à´¨àµ†à´±àµà´±àµâ€Œà´µà´°àµâ€à´•àµà´•àµ à´Ÿàµà´°à´¾à´«à´¿à´•àµà´•àµ à´¨à´¿à´°àµ€à´•àµà´·à´¿à´•àµà´•àµà´¨àµà´¨à´¤à´¿à´¨àµà´‚ à´•àµà´²à´¯à´¨àµà´±à´¿à´¨àµàµ SMB à´·àµ†à´¯à´±àµà´•à´³àµâ€ à´•à´£à´•àµà´±àµà´±àµ à´šàµ†à´¯àµà´¯àµà´¨àµà´¨à´¤à´¿à´¨àµà´‚ à´®à´±àµà´±àµà´‚ à´†à´µà´¶àµà´¯à´®à´¾à´¯ à´µà´¿à´µà´¿à´§ à´¤à´°à´¤àµà´¤à´¿à´²àµà´³à´³ à´‰à´ªà´•à´°à´£à´™àµà´™à´³àµà´Ÿàµ† à´’à´°àµ à´¶àµ‡à´–à´°à´®à´¾à´£àµ à´ˆ à´µà´¿à´­à´¾à´—à´‚ </description>
    <description xml:lang="mr">à¤¹à¤¾ à¤¸à¤®à¥à¤¹ à¤ªà¥à¤°à¤£à¤¾à¤²à¥€à¤šà¥à¤¯à¤¾ à¤µà¤¿à¤µà¤¿à¤§ à¤‰à¤ªà¤•à¤°à¤£à¤¾à¤‚à¤šà¤¾ à¤¸à¤‚à¤šà¤¯ à¤†à¤¹à¥‡, à¤œà¤¸à¥‡ SMB à¤¸à¤¾à¤®à¤¾à¤‡à¤•à¤¾à¤‚à¤¸ à¤œà¥‹à¤¡à¤£à¥à¤¯à¤¾à¤¸à¤¾à¤ à¥€ à¤•à¥à¤²à¤¾à¤à¤‚à¤Ÿ à¤†à¤£à¤¿ à¤¸à¤‚à¤œà¤¾à¤³ à¤°à¤¹à¤¦à¤¾à¤°à¥€à¤šà¥‡ à¤¨à¤¿à¤°à¤¿à¤•à¥à¤·à¤£ à¤•à¤°à¤£à¤¾à¤°à¥€ à¤‰à¤ªà¤•à¤°à¤£à¥‡.</description>
    <description xml:lang="ms">Kumpulan ini adalah kumpulan pelbagai alatan untuk sistem, seperti klien untuk menyambung kepada kongsian SMP dan alatan untuk mengawasi trafik rangkaian.</description>
    <description xml:lang="nb">Denne gruppen er en samling av ulike systemverktÃ¸y, som oppkobling mot SMB-ressurser og nettverksovervÃ¥kning.</description>
    <description xml:lang="ne">à¤¯à¥‹ à¤¸à¤®à¥‚à¤¹, à¤•à¥à¤²à¤¾à¤‡à¤¨à¥à¤Ÿà¤²à¤¾à¤ˆ SMB à¤¬à¤¾à¤à¤Ÿà¤«à¤¾à¤à¤Ÿà¤®à¤¾ à¤œà¤¡à¤¾à¤¨ à¤—à¤°à¥à¤¨à¥‡ à¤° à¤¸à¤žà¥à¤œà¤¾à¤² à¤Ÿà¥à¤°à¤¾à¤«à¤¿à¤• à¤…à¤¨à¥à¤—à¤®à¤¨ à¤—à¤°à¥à¤¨à¥‡ à¤‰à¤ªà¤•à¤°à¤£ à¤œà¤¸à¥à¤¤à¤¾ à¤ªà¥à¤°à¤£à¤¾à¤²à¥€à¤•à¤¾ à¤²à¤¾à¤—à¤¿ à¤µà¤¿à¤­à¤¿à¤¨à¥à¤¨ à¤‰à¤ªà¤•à¤°à¤£à¤•à¥‹ à¤¸à¤™à¥à¤•à¤²à¤¨ à¤¹à¥‹ à¥¤</description>
    <description xml:lang="nl">Deze groep is een collectie van diverse hulpmiddelen voor het systeem, bijvoorbeeld een programma om verbindingen te maken met SMB-bronnen en hulpmiddelen voor het bekijken van netwerkverkeer.</description>
    <description xml:lang="no">Denne gruppen er en samling av ulike systemverktÃ¸y, som oppkobling mot SMB-ressurser og nettverksovervÃ¥kning.</description>
    <description xml:lang="nso">Sehlopha se ke kgoboketÅ¡o ya didiriÅ¡wa tÅ¡e fapa-fapanego bakeng sa tshepediÅ¡o, bjalo ka modirelwa bakeng sa go kopanya diÅ¡ere tÅ¡a SMB le didiriÅ¡wa tÅ¡a go lebediÅ¡iÅ¡a leema-ema la neteweke.</description>
    <description xml:lang="or">à¬à¬¹à¬¿ à¬¸à¬®à­‚à¬¹à¬Ÿà¬¿ à¬¤à¬¨à­à¬¤à­à¬° à¬ªà¬¾à¬‡à¬ à¬†à¬¬à¬¶à­à¬¯à¬•à­€à­Ÿ à¬¬à¬¿à¬­à¬¿à¬¨à­à¬¨ à¬‰à¬ªà¬•à¬°à¬£ à¬®à¬¾à¬¨à¬™à­à¬• à¬° à¬¸à¬‚à¬—à­à¬°à¬¹à¬¾à¬³à­Ÿ, à¬‰à¬¦à¬¾à¬¹à¬°à¬£ à¬¸à­à¬¬à¬°à­‚à¬ª à¬à¬¸à­.à¬à¬®à­.à¬¬à¬¿. à¬¸à¬¹à¬­à¬¾à¬— à¬®à¬¾à¬¨à¬™à­à¬• à¬¸à¬¹à¬¿à¬¤ à¬¸à¬‚à¬¯à­‹à¬œà¬¿à¬¤ à¬—à­à¬°à¬¾à¬¹à¬• à¬à¬¬à¬‚ à¬¨à­‡à¬Ÿà­±à¬¾à¬°à­à¬• à¬Ÿà­à¬°à¬¾à¬«à¬¿à¬• à¬‰à¬ªà¬°à­‡ à¬¦à­à¬°à­à¬·à­à¬Ÿà¬¿ à¬°à¬–à¬¿à¬¬à¬¾ à¬ªà¬¾à¬‡à¬ à¬‰à¬ªà¬•à¬°à¬£ à¬®à¬¾à¬¨</description>
    <description xml:lang="pa">à¨‡à¨¹ à¨—à¨°à©à©±à¨ª à¨¸à¨¿à¨¸à¨Ÿà¨® à¨²à¨ˆ à¨•à¨ˆ à¨Ÿà©‚à¨²à¨¾à¨‚ à¨¦à¨¾ à¨—à¨°à©à©±à¨ª à¨¹à©ˆ, à¨œà¨¿à¨µà©‡à¨‚ à¨•à¨¿ SMB à¨¸à¨¾à¨‚à¨ à¨¨à¨¾à¨² à¨œà©à©œà¨¨ à¨²à¨ˆ à¨•à¨²à¨¾à¨‚à¨ˆà¨Ÿ à¨…à¨¤à©‡ à¨¨à©ˆà©±à¨Ÿà¨µà¨°à¨• à¨Ÿà¨°à©ˆà¨«à¨¿à¨• à¨¨à©‚à©° à¨œà¨¾à¨‚à¨šà¨£ à¨²à¨ˆ à¨Ÿà©‚à¨² à¨†à¨¦à¨¿à¥¤</description>
    <description xml:lang="pl">Ta grupa jest zbiorem rÃ³Å¼nych narzÄ™dzi systemowych, takich jak klient do Å‚Ä…czenia siÄ™ z udziaÅ‚ami SMB i narzÄ™dzia do monitorowania ruchu sieciowego.</description>
    <description xml:lang="pt">Este grupo Ã© uma colecÃ§Ã£o de ferramentas para o sistema, tal como o cliente para se ligar a partilhas de SMB e as ferramentas para monitorizar o trÃ¡fego de rede.</description>
    <description xml:lang="pt_BR">Este grupo Ã© uma colecÃ§Ã£o de ferramentas para o sistema, tal como o cliente para se ligar a partilhas de SMB e as ferramentas para monitorizar o trÃ¡fego de rede.</description>
    <description xml:lang="ro">Acest grup este o colecÅ£ie de unelte diverse pentru sistem, cum ar fi un client pentru conectare la partajÄƒri SMB ÅŸi unelte pentru a monitoriza traficul din reÅ£ea.</description>
    <description xml:lang="ru">Ð­Ñ‚Ð° Ð³Ñ€ÑƒÐ¿Ð¿Ð° ÑÐ¾Ð´ÐµÑ€Ð¶Ð¸Ñ‚ Ñ€Ð°Ð·Ð»Ð¸Ñ‡Ð½Ñ‹Ðµ ÑÐ¸ÑÑ‚ÐµÐ¼Ð½Ñ‹Ðµ ÑƒÑ‚Ð¸Ð»Ð¸Ñ‚Ñ‹: Ð½Ð°Ð¿Ñ€Ð¸Ð¼ÐµÑ€, Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð´Ð»Ñ Ð´Ð¾ÑÑ‚ÑƒÐ¿Ð° Ðº SMB ÑÐµÑ€Ð²ÐµÑ€Ð°Ð¼, Ð¸ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¼Ñ‹ Ð´Ð»Ñ Ð¼Ð¾Ð½Ð¸Ñ‚Ð¾Ñ€Ð¸Ð½Ð³Ð° ÑÐµÑ‚ÐµÐ²Ð¾Ð³Ð¾ Ñ‚Ñ€Ð°Ñ„Ð¸ÐºÐ°.</description>
    <description xml:lang="si">à¶¸à·™à¶¸ à¶šà¶«à·Šà¶¯à·à¶ºà¶¸ à¶­à·”à¶½ à¶‡à¶­à·”à¶½à¶­à·Š à·€à¶±à·Šà¶±à·š à¶´à¶¯à·Šà¶°à¶­à·’à¶º à·ƒà¶³à·„à· à¶…à·€à·à·Šâ€à¶º à·€à¶± à¶¸à·™à·€à¶½à¶¸à·Š à·ƒà¶¸à·–à·„à¶ºà¶š à¶‘à¶šà¶­à·”à·€à¶šà·’. SMB à¶šà·œà¶§à·ƒà·Š à·ƒà¶¸à¶Ÿ à·ƒà¶¸à·Šà¶¶à¶±à·Šà¶° à·€à·“à¶¸à¶§ à·ƒà·„ à¶¢à·à¶½ à·ƒà¶±à·Šà¶±à·’à·€à·šà¶¯à¶±à¶ºà¶±à·Š à¶±à·’à¶»à·“à¶šà·Šâ€à·‚à¶«à¶º à¶šà·’à¶»à·“à¶¸à·š à¶¸à·™à·€à¶½à¶¸à·Šà¶¯ à¶¸à·“à¶§ à¶‡à¶­à·”à¶½à¶­à·Š à·€à·š.</description>
    <description xml:lang="sk">TÃ¡to skupina je kolekciou rÃ´znych nÃ¡strojov pre poÄÃ­taÄ, ako je napr. klient pre pripojenie k zdieÄ¾anÃ½m poloÅ¾kÃ¡m SMB a nÃ¡stroje na monitorovanie sieÅ¥ovej prevÃ¡dzky.</description>
    <description xml:lang="sl">Ta skupina je zbirka raznih orodij za sistem, kot so odjemnik za prikljuÄitev deljenih diskov SMB in orodja za opazovanje mreÅ¾nega prometa.</description>
    <description xml:lang="sq">Ky grup Ã«shtÃ« njÃ« koleksion mjetesh tÃ« ndryshme pÃ«r sistemin, si klienti pÃ«r t'u lidhur me ndarje SMB dhe mjete pÃ«r mbikqyrje trafiku rrjetesh.</description>
    <description xml:lang="sr">ÐžÐ²Ð° Ð³Ñ€ÑƒÐ¿Ð° Ñ˜Ðµ ÑÐºÑƒÐ¿ Ñ€Ð°Ð·Ð½Ð¸Ñ… ÑÐ¸ÑÑ‚ÐµÐ¼ÑÐºÐ¸Ñ… Ð°Ð»Ð°Ñ‚ÐºÐ¸, ÐºÐ°Ð¾ ÑˆÑ‚Ð¾ ÑÑƒ ÐºÐ»Ð¸Ñ˜ÐµÐ½Ñ‚ Ð·Ð° Ð¿Ñ€Ð¸ÑÑ‚ÑƒÐ¿ SMB Ð´ÐµÑ™ÐµÐ½Ð¸Ð¼ Ð¾Ð±Ñ˜ÐµÐºÑ‚Ð¸Ð¼Ð° Ð¸ Ð°Ð»Ð°Ñ‚ÐºÐµ Ð·Ð° Ð½Ð°Ð´Ð³Ð»ÐµÐ´Ð°ÑšÐµ Ð¼Ñ€ÐµÐ¶Ð½Ð¾Ð³ ÑÐ°Ð¾Ð±Ñ€Ð°Ñ›Ð°Ñ˜Ð°.</description>
    <description xml:lang="sr@Latn">Ova grupa je skup raznih sistemskih alatki, kao Å¡to su klijent za pristup SMB deljenim objektima i alatke za nadgledanje mreÅ¾nog saobraÄ‡aja.</description>
    <description xml:lang="sr@latin">Ova grupa je skup raznih sistemskih alatki, kao Å¡to su klijent za pristup SMB deljenim objektima i alatke za nadgledanje mreÅ¾nog saobraÄ‡aja.</description>
    <description xml:lang="sv">Denna grupp Ã¤r en samling med diverse verktyg fÃ¶r systemet, som exempelvis klienten fÃ¶r anslutning till SMB-utdelningar och verktyg fÃ¶r Ã¶vervakning av nÃ¤tverkstrafik.</description>
    <description xml:lang="ta">à®‡à®¨à¯à®¤ à®•à¯à®´à¯ à®•à®£à®¿à®©à®¿à®•à¯à®•à®¾à®© à®ªà®²à¯à®µà¯‡à®±à¯ à®•à®°à¯à®µà®¿à®•à®³à¯ à®…à®Ÿà®™à¯à®•à®¿à®¯ à®¤à¯Šà®•à¯à®ªà¯à®ªà®¾à®•à¯à®®à¯, à®…à®¤à®¾à®µà®¤à¯ SMB à®ªà®™à¯à®•à¯à®•à®³à¯à®•à¯à®•à¯ à®¤à¯Šà®Ÿà®°à¯à®ªà¯ à®•à¯Šà®³à¯à®³à¯à®®à¯ à®®à®±à¯à®±à¯à®®à¯ à®ªà®¿à®£à¯ˆà®¯ à®ªà¯‹à®•à¯à®•à¯à®µà®°à®¤à¯à®¤à¯ˆ à®•à®£à¯à®•à®¾à®£à®¿à®•à¯à®•à¯à®®à¯ à®•à®°à¯à®µà®¿à®•à®³à¯ à®†à®•à¯à®®à¯.</description>
    <description xml:lang="te">à°ˆ à°¸à°®à±‚à°¹à°‚ SMB à°­à°¾à°—à°¸à±à°µà°¾à°®à±à°¯ à°•à°•à±à°·à±à°¯à°¦à°¾à°°à±à°¨à°¿à°•à±‹à°¸à°‚ à°…à°¨à±à°¸à°‚à°§à°¾à°¨à°‚ à°®à°°à°¿à°¯à±‚ monitor network traffic à°•à±Šà°°à°•à± à°¸à°¾à°§à°¨à°®à±à°²à± à°®à±Šà°¦à°²à±ˆà°¨ à°•à°‚à°ªà±à°¯à±‚à°Ÿà°°à± à°‰à°ªà°•à°°à°£à°¾à°²à°¨à± à°•à°²à°¿à°—à°¿ à°‰à°‚à°¦à°¿.</description>
    <description xml:lang="tg">Ð˜Ð½ Ð³ÑƒÑ€ÑƒÒ³ Ð´Ð¾Ñ€Ð¾Ð¸ Ð¼Ð°Ò·Ð¼Ó¯ÑŠÐ¸ Ð°ÑÐ±Ð¾Ð±Ò³Ð¾ Ð¼Ð¾Ð½Ð°Ð½Ð´Ð¸ Ð¼Ð¸Ð·Ð±Ð¾Ð½Ð¸ SMB Ð²Ð° Ð°ÑÐ±Ð¾Ð±Ò³Ð¾Ð¸ Ð½Ð°Ð·Ð¾Ñ€Ð°Ñ‚Ð¸ Ñ‚Ñ€Ð°Ñ„Ð¸ÐºÐ¸ Ð˜Ð½Ñ‚ÐµÑ€Ð½ÐµÑ‚ Ð±Ð°Ñ€Ð¾Ð¸ ÑÐ¸ÑÑ‚ÐµÐ¼Ð° Ð¼ÐµÐ±Ð¾ÑˆÐ°Ð´.</description>
    <description xml:lang="th">à¸à¸¥à¸¸à¹ˆà¸¡à¸™à¸µà¹‰à¸›à¸£à¸°à¸à¸­à¸šà¸”à¹‰à¸§à¸¢à¹€à¸„à¸£à¸·à¹ˆà¸­à¸‡à¸¡à¸·à¸­à¹€à¸à¸µà¹ˆà¸¢à¸§à¸à¸±à¸šà¸£à¸°à¸šà¸šà¸¡à¸²à¸à¸¡à¸²à¸¢ à¹€à¸Šà¹ˆà¸™ à¹‚à¸›à¸£à¹à¸à¸£à¸¡à¸¥à¸¹à¸à¸‚à¹ˆà¸²à¸¢à¸ªà¸³à¸«à¸£à¸±à¸šà¸•à¸´à¸”à¸•à¹ˆà¸­à¸à¸±à¸š SMB share à¹à¸¥à¸°à¹€à¸„à¸£à¸·à¹ˆà¸­à¸‡à¸¡à¸·à¸­à¹€à¸à¹‰à¸²à¸•à¸´à¸”à¸•à¸²à¸¡à¸à¸²à¸£à¸ˆà¸£à¸²à¸ˆà¸£à¹ƒà¸™à¹€à¸„à¸£à¸·à¸­à¸‚à¹ˆà¸²à¸¢</description>
    <description xml:lang="tr">Bu grup, aÄŸ trafiÄŸini izlemek ve SMB paylaÅŸÄ±mlarÄ±na baÄŸlanmak gibi iÅŸlemler iÃ§in gereken Ã§eÅŸitli sistem araÃ§larÄ±nÄ± iÃ§erir.</description>
    <description xml:lang="uk">Ð¦Ñ Ð³Ñ€ÑƒÐ¿Ð° Ð¼Ñ–ÑÑ‚Ð¸Ñ‚ÑŒ Ñ€Ñ–Ð·Ð½Ñ– ÑÐ¸ÑÑ‚ÐµÐ¼Ð½Ñ– ÑƒÑ‚Ð¸Ð»Ñ–Ñ‚Ð¸, Ñ‚Ð°ÐºÑ– ÑÐº Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¸ Ð´Ð»Ñ Ð´Ð¾ÑÑ‚ÑƒÐ¿Ñƒ Ð´Ð¾ Ñ€ÐµÑÑƒÑ€ÑÑ–Ð² SMB Ñ‚Ð° Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¸ ÐºÐ¾Ð½Ñ‚Ñ€Ð¾Ð»ÑŽ Ð¼ÐµÑ€ÐµÐ¶Ð½Ð¾Ð³Ð¾ Ñ‚Ñ€Ð°Ñ„Ñ–ÐºÑƒ.</description>
    <description xml:lang="ur">Ø³ Ù…Ø¬Ù…ÙˆØ¹Û Ù…ÛŒÚº Ø¨ÛØª Ø³Ø§Ø±Û’  Ù†Ø¸Ø§Ù…ÛŒ Ø§Ù„Ø§Øª ÛŒÚº Ø¬Ø³ÛŒÛ’ Ú©Ù„ÙŠÙ†Ù¹ Ú©Ùˆ SMB Ú©Û’ Ø³Ø§ØªÚ¾ Ù„Ú¯Ø§Ù†Ø§ Ø§ÙˆØ± Ù†ÛŒÙ¹ ÙˆØ±Ú© Ú©ÛŒ Ù¹Ø±Ø§ÙÙÚ©  Ú©Ùˆ Ø¯ÛŒÚ©Ú¾Ù†Û’ Ú©Û’ Ù„Û’Ø§Ù„Ø§Øª ÛÚº</description>
    <description xml:lang="vi">NhÃ³m nÃ y lÃ  táº­p há»£p cÃ¡c cÃ´ng cá»¥ há»‡ thá»‘ng, nhÆ° client Ä‘á»ƒ káº¿t ná»‘i chia sáº½ SMB vÃ  cÃ¡c cÃ´ng cá»¥ theo dÃµi máº¡ng.</description>
    <description xml:lang="zh">é€™å€‹ç¾¤çµ„æ˜¯ç³»çµ±ä¸Šè¨±å¤šç¨®å·¥å…·çš„æ”¶é›†ï¼Œä¾‹å¦‚ç”¨ä¾†é€£ç·šåˆ°ç¶²è·¯èŠ³é„°(SAMBA)å…±äº«çš„ç”¨æˆ¶ç«¯ï¼Œä»¥åŠç”¨ä¾†ç›£è¦–ç¶²è·¯æµé‡çš„å·¥å…·ç­‰ç­‰ã€‚</description>
    <description xml:lang="zh_CN">è¿™ç»„è½¯ä»¶åŒ…æ˜¯å„ç±»ç³»ç»Ÿå·¥å…·çš„é›†åˆï¼Œå¦‚ï¼šè¿žæŽ¥ SMB å…±äº«çš„å®¢æˆ·ï¼›ç›‘æŽ§ç½‘ç»œäº¤é€šçš„å·¥å…·ã€‚</description>
    <description xml:lang="zh_TW">é€™å€‹ç¾¤çµ„æ˜¯ç³»çµ±ä¸Šè¨±å¤šç¨®å·¥å…·çš„æ”¶é›†ï¼Œä¾‹å¦‚ç”¨ä¾†é€£ç·šåˆ°ç¶²è·¯èŠ³é„°(SAMBA)å…±äº«çš„ç”¨æˆ¶ç«¯ï¼Œä»¥åŠç”¨ä¾†ç›£è¦–ç¶²è·¯æµé‡çš„å·¥å…·ç­‰ç­‰ã€‚</description>
    <description xml:lang="zu">Leli qembu liyiqoqo lamathuluzi esistimu ambalwa, njengomthengi wokuxhuma ngokuhlanganyela kwi-SMB kanye namathuluzi okulindwe kuxhumano lomlekeleli.</description>
    <default>true</default>
    <uservisible>true</uservisible>
    <packagelist>
      <packagereq type="default">NetworkManager-libreswan</packagereq>
      <packagereq type="default">libreswan</packagereq>
      <packagereq type="default">nmap</packagereq>
      <packagereq type="default">tigervnc</packagereq>
      <packagereq type="optional">PackageKit-command-not-found</packagereq>
      <packagereq type="optional">aide</packagereq>
      <packagereq type="optional">amanda-client</packagereq>
      <packagereq type="optional">convmv</packagereq>
      <packagereq type="optional">createrepo_c</packagereq>
      <packagereq type="optional">freerdp</packagereq>
      <packagereq type="optional">gpm</packagereq>
      <packagereq type="optional">gssdp</packagereq>
      <packagereq type="optional">gupnp</packagereq>
      <packagereq type="optional">mc</packagereq>
      <packagereq type="optional">mrtg</packagereq>
      <packagereq type="optional">mtx</packagereq>
      <packagereq type="optional">net-snmp-utils</packagereq>
      <packagereq type="optional">oddjob</packagereq>
      <packagereq type="optional">oddjob-mkhomedir</packagereq>
      <packagereq type="optional">pmdk-convert</packagereq>
      <packagereq type="optional">rear</packagereq>
      <packagereq type="optional">speech-dispatcher</packagereq>
      <packagereq type="optional">speech-dispatcher-espeak-ng</packagereq>
      <packagereq type="optional">sysstat</packagereq>
      <packagereq type="optional">wireshark</packagereq>
      <packagereq type="optional">x3270-x11</packagereq>
    </packagelist>
  </group>
  <group>
    <id>texlive</id>
    <name>TeX formatting system</name>
    <name xml:lang="de">TeX-Formatierungssystem</name>
    <name xml:lang="es">Sistema de formateo TeX</name>
    <name xml:lang="fr">SystÃ¨me de formatage TeX</name>
    <name xml:lang="it">Sistema di formattazione TeX</name>
    <name xml:lang="ja">TeX ãƒ•ã‚©ãƒ¼ãƒžãƒƒãƒˆã‚·ã‚¹ãƒ†ãƒ </name>
    <name xml:lang="ko">TeX í˜•ì‹ ì‹œìŠ¤í…œ </name>
    <name xml:lang="pt_BR">Sistema de formataÃ§Ã£o TeX</name>
    <name xml:lang="ru">Ð¡Ð¸ÑÑ‚ÐµÐ¼Ð° Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ TeX</name>
    <name xml:lang="zh_CN">TeX æ ¼å¼ç³»ç»Ÿ</name>
    <name xml:lang="zh_TW">TeXæ ¼å¼åŒ–ç³»çµ±</name>
    <description>The TeX system for editing, typesetting, previewing, and printing TeX documents.</description>
    <description xml:lang="de">Das TeX-System zum Bearbeiten, Setzen, Vorschauen und Drucken von TeX-Dokumenten.</description>
    <description xml:lang="es">El sistema TeX para editar, maquetar, previsualizar e imprimir documentos TeX.</description>
    <description xml:lang="fr">SystÃ¨me TeX pour l'Ã©dition, la composition, la prÃ©visualisation et l'impression de documents TeX.</description>
    <description xml:lang="it">Il sistema TeX per l'editing, la composizione, l'anteprima e la stampa di documenti TeX.</description>
    <description xml:lang="ja">TeX æ–‡æ›¸ã®ç·¨é›†ã€æ¤å­—ã€ãƒ—ãƒ¬ãƒ“ãƒ¥ãƒ¼ã€å°åˆ·ã®ãŸã‚ã® TeXã‚·ã‚¹ãƒ†ãƒ ã§ã™ã€‚</description>
    <description xml:lang="ko">TeX ë¬¸ì„œ íŽ¸ì§‘, ì¡°íŒ, ë¯¸ë¦¬ë³´ê¸°, ì¸ì‡„ë¥¼ ìœ„í•œ TeX ì‹œìŠ¤í…œìž…ë‹ˆë‹¤. </description>
    <description xml:lang="pt">O sistema TeX para ediÃ§Ã£o, composiÃ§Ã£o, prÃ©-visualizaÃ§Ã£o e impressÃ£o de documentos TeX.</description>
    <description xml:lang="pt_BR">O sistema TeX para ediÃ§Ã£o, composiÃ§Ã£o, prÃ©-visualizaÃ§Ã£o e impressÃ£o de documentos TeX.</description>
    <description xml:lang="ru">Ð¡Ð¸ÑÑ‚ÐµÐ¼Ð° TeX Ð´Ð»Ñ Ñ€ÐµÐ´Ð°ÐºÑ‚Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ, Ð½Ð°Ð±Ð¾Ñ€Ð° Ñ‚ÐµÐºÑÑ‚Ð°, Ð¿Ñ€ÐµÐ´Ð²Ð°Ñ€Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð¾Ð³Ð¾ Ð¿Ñ€Ð¾ÑÐ¼Ð¾Ñ‚Ñ€Ð° Ð¸ Ð¿ÐµÑ‡Ð°Ñ‚Ð¸ Ñ‚ÐµÐºÑÑ‚Ð¾Ð²Ñ‹Ñ… Ð´Ð¾ÐºÑƒÐ¼ÐµÐ½Ñ‚Ð¾Ð² TeX.</description>
    <description xml:lang="zh_CN">ç”¨æ¥å¯¹ TeX æ–‡æ¡£è¿›è¡Œç¼–è¾‘ã€æŽ’ç‰ˆã€é¢„è§ˆåŠæ‰“å°çš„ TeX ç³»ç»Ÿã€‚</description>
    <description xml:lang="zh_TW">ç”¨æ–¼ç·¨è¼¯ï¼ŒæŽ’ç‰ˆï¼Œé è¦½å’Œæ‰“å°TeXæ–‡æª”çš„TeXç³»çµ±ã€‚</description>
    <default>true</default>
    <uservisible>false</uservisible>
    <packagelist>
      <packagereq type="mandatory">texlive</packagereq>
      <packagereq type="mandatory">texlive-adjustbox</packagereq>
      <packagereq type="mandatory">texlive-ae</packagereq>
      <packagereq type="mandatory">texlive-algorithms</packagereq>
      <packagereq type="mandatory">texlive-amscls</packagereq>
      <packagereq type="mandatory">texlive-amsfonts</packagereq>
      <packagereq type="mandatory">texlive-amsmath</packagereq>
      <packagereq type="mandatory">texlive-anyfontsize</packagereq>
      <packagereq type="mandatory">texlive-anysize</packagereq>
      <packagereq type="mandatory">texlive-appendix</packagereq>
      <packagereq type="mandatory">texlive-arabxetex</packagereq>
      <packagereq type="mandatory">texlive-arphic</packagereq>
      <packagereq type="mandatory">texlive-attachfile</packagereq>
      <packagereq type="mandatory">texlive-avantgar</packagereq>
      <packagereq type="mandatory">texlive-awesomebox</packagereq>
      <packagereq type="mandatory">texlive-babel</packagereq>
      <packagereq type="mandatory">texlive-babel-english</packagereq>
      <packagereq type="mandatory">texlive-babelbib</packagereq>
      <packagereq type="mandatory">texlive-base</packagereq>
      <packagereq type="mandatory">texlive-beamer</packagereq>
      <packagereq type="mandatory">texlive-bera</packagereq>
      <packagereq type="mandatory">texlive-beton</packagereq>
      <packagereq type="mandatory">texlive-bibtex</packagereq>
      <packagereq type="mandatory">texlive-bibtopic</packagereq>
      <packagereq type="mandatory">texlive-bidi</packagereq>
      <packagereq type="mandatory">texlive-bigfoot</packagereq>
      <packagereq type="mandatory">texlive-bookman</packagereq>
      <packagereq type="mandatory">texlive-booktabs</packagereq>
      <packagereq type="mandatory">texlive-breakurl</packagereq>
      <packagereq type="mandatory">texlive-breqn</packagereq>
      <packagereq type="mandatory">texlive-capt-of</packagereq>
      <packagereq type="mandatory">texlive-caption</packagereq>
      <packagereq type="mandatory">texlive-carlisle</packagereq>
      <packagereq type="mandatory">texlive-changebar</packagereq>
      <packagereq type="mandatory">texlive-changepage</packagereq>
      <packagereq type="mandatory">texlive-charter</packagereq>
      <packagereq type="mandatory">texlive-chngcntr</packagereq>
      <packagereq type="mandatory">texlive-cite</packagereq>
      <packagereq type="mandatory">texlive-cjk</packagereq>
      <packagereq type="mandatory">texlive-classpack</packagereq>
      <packagereq type="mandatory">texlive-cm</packagereq>
      <packagereq type="mandatory">texlive-cm-lgc</packagereq>
      <packagereq type="mandatory">texlive-cm-super</packagereq>
      <packagereq type="mandatory">texlive-cmap</packagereq>
      <packagereq type="mandatory">texlive-cmextra</packagereq>
      <packagereq type="mandatory">texlive-cns</packagereq>
      <packagereq type="mandatory">texlive-collectbox</packagereq>
      <packagereq type="mandatory">texlive-collection-basic</packagereq>
      <packagereq type="mandatory">texlive-collection-fontsrecommended</packagereq>
      <packagereq type="mandatory">texlive-collection-htmlxml</packagereq>
      <packagereq type="mandatory">texlive-collection-latex</packagereq>
      <packagereq type="mandatory">texlive-collection-latexrecommended</packagereq>
      <packagereq type="mandatory">texlive-collection-xetex</packagereq>
      <packagereq type="mandatory">texlive-colortbl</packagereq>
      <packagereq type="mandatory">texlive-courier</packagereq>
      <packagereq type="mandatory">texlive-crop</packagereq>
      <packagereq type="mandatory">texlive-csquotes</packagereq>
      <packagereq type="mandatory">texlive-ctable</packagereq>
      <packagereq type="mandatory">texlive-ctablestack</packagereq>
      <packagereq type="mandatory">texlive-currfile</packagereq>
      <packagereq type="mandatory">texlive-datetime</packagereq>
      <packagereq type="mandatory">texlive-dvipdfmx</packagereq>
      <packagereq type="mandatory">texlive-dvipng</packagereq>
      <packagereq type="mandatory">texlive-dvips</packagereq>
      <packagereq type="mandatory">texlive-dvisvgm</packagereq>
      <packagereq type="mandatory">texlive-ec</packagereq>
      <packagereq type="mandatory">texlive-eepic</packagereq>
      <packagereq type="mandatory">texlive-enctex</packagereq>
      <packagereq type="mandatory">texlive-enumitem</packagereq>
      <packagereq type="mandatory">texlive-environ</packagereq>
      <packagereq type="mandatory">texlive-epsf</packagereq>
      <packagereq type="mandatory">texlive-epstopdf</packagereq>
      <packagereq type="mandatory">texlive-eqparbox</packagereq>
      <packagereq type="mandatory">texlive-eso-pic</packagereq>
      <packagereq type="mandatory">texlive-etex</packagereq>
      <packagereq type="mandatory">texlive-etex-pkg</packagereq>
      <packagereq type="mandatory">texlive-etoolbox</packagereq>
      <packagereq type="mandatory">texlive-euenc</packagereq>
      <packagereq type="mandatory">texlive-euler</packagereq>
      <packagereq type="mandatory">texlive-euro</packagereq>
      <packagereq type="mandatory">texlive-eurosym</packagereq>
      <packagereq type="mandatory">texlive-extsizes</packagereq>
      <packagereq type="mandatory">texlive-fancybox</packagereq>
      <packagereq type="mandatory">texlive-fancyhdr</packagereq>
      <packagereq type="mandatory">texlive-fancyref</packagereq>
      <packagereq type="mandatory">texlive-fancyvrb</packagereq>
      <packagereq type="mandatory">texlive-filecontents</packagereq>
      <packagereq type="mandatory">texlive-filehook</packagereq>
      <packagereq type="mandatory">texlive-finstrut</packagereq>
      <packagereq type="mandatory">texlive-fix2col</packagereq>
      <packagereq type="mandatory">texlive-fixlatvian</packagereq>
      <packagereq type="mandatory">texlive-float</packagereq>
      <packagereq type="mandatory">texlive-fmtcount</packagereq>
      <packagereq type="mandatory">texlive-fncychap</packagereq>
      <packagereq type="mandatory">texlive-fontawesome</packagereq>
      <packagereq type="mandatory">texlive-fontbook</packagereq>
      <packagereq type="mandatory">texlive-fonts-tlwg</packagereq>
      <packagereq type="mandatory">texlive-fontspec</packagereq>
      <packagereq type="mandatory">texlive-fontware</packagereq>
      <packagereq type="mandatory">texlive-fontwrap</packagereq>
      <packagereq type="mandatory">texlive-footmisc</packagereq>
      <packagereq type="mandatory">texlive-fp</packagereq>
      <packagereq type="mandatory">texlive-fpl</packagereq>
      <packagereq type="mandatory">texlive-framed</packagereq>
      <packagereq type="mandatory">texlive-garuda-c90</packagereq>
      <packagereq type="mandatory">texlive-geometry</packagereq>
      <packagereq type="mandatory">texlive-glyphlist</packagereq>
      <packagereq type="mandatory">texlive-graphics</packagereq>
      <packagereq type="mandatory">texlive-graphics-cfg</packagereq>
      <packagereq type="mandatory">texlive-graphics-def</packagereq>
      <packagereq type="mandatory">texlive-gsftopk</packagereq>
      <packagereq type="mandatory">texlive-helvetic</packagereq>
      <packagereq type="mandatory">texlive-hyperref</packagereq>
      <packagereq type="mandatory">texlive-hyph-utf8</packagereq>
      <packagereq type="mandatory">texlive-hyphen-base</packagereq>
      <packagereq type="mandatory">texlive-hyphenat</packagereq>
      <packagereq type="mandatory">texlive-ifetex</packagereq>
      <packagereq type="mandatory">texlive-ifluatex</packagereq>
      <packagereq type="mandatory">texlive-ifmtarg</packagereq>
      <packagereq type="mandatory">texlive-ifoddpage</packagereq>
      <packagereq type="mandatory">texlive-iftex</packagereq>
      <packagereq type="mandatory">texlive-ifxetex</packagereq>
      <packagereq type="mandatory">texlive-import</packagereq>
      <packagereq type="mandatory">texlive-index</packagereq>
      <packagereq type="mandatory">texlive-jadetex</packagereq>
      <packagereq type="mandatory">texlive-jknapltx</packagereq>
      <packagereq type="mandatory">texlive-kastrup</packagereq>
      <packagereq type="mandatory">texlive-kerkis</packagereq>
      <packagereq type="mandatory">texlive-knuth-lib</packagereq>
      <packagereq type="mandatory">texlive-knuth-local</packagereq>
      <packagereq type="mandatory">texlive-koma-script</packagereq>
      <packagereq type="mandatory">texlive-kpathsea</packagereq>
      <packagereq type="mandatory">texlive-l3experimental</packagereq>
      <packagereq type="mandatory">texlive-l3kernel</packagereq>
      <packagereq type="mandatory">texlive-l3packages</packagereq>
      <packagereq type="mandatory">texlive-lastpage</packagereq>
      <packagereq type="mandatory">texlive-latex</packagereq>
      <packagereq type="mandatory">texlive-latex-fonts</packagereq>
      <packagereq type="mandatory">texlive-latex2man</packagereq>
      <packagereq type="mandatory">texlive-latexconfig</packagereq>
      <packagereq type="mandatory">texlive-lettrine</packagereq>
      <packagereq type="mandatory">texlive-lib</packagereq>
      <packagereq type="mandatory">texlive-linegoal</packagereq>
      <packagereq type="mandatory">texlive-lineno</packagereq>
      <packagereq type="mandatory">texlive-listings</packagereq>
      <packagereq type="mandatory">texlive-lm</packagereq>
      <packagereq type="mandatory">texlive-lm-math</packagereq>
      <packagereq type="mandatory">texlive-ltabptch</packagereq>
      <packagereq type="mandatory">texlive-ltxmisc</packagereq>
      <packagereq type="mandatory">texlive-lua-alt-getopt</packagereq>
      <packagereq type="mandatory">texlive-lualatex-math</packagereq>
      <packagereq type="mandatory">texlive-lualibs</packagereq>
      <packagereq type="mandatory">texlive-luaotfload</packagereq>
      <packagereq type="mandatory">texlive-luatex</packagereq>
      <packagereq type="mandatory">texlive-luatex85</packagereq>
      <packagereq type="mandatory">texlive-luatexbase</packagereq>
      <packagereq type="mandatory">texlive-makecmds</packagereq>
      <packagereq type="mandatory">texlive-makeindex</packagereq>
      <packagereq type="mandatory">texlive-manfnt-font</packagereq>
      <packagereq type="mandatory">texlive-marginnote</packagereq>
      <packagereq type="mandatory">texlive-marvosym</packagereq>
      <packagereq type="mandatory">texlive-mathpazo</packagereq>
      <packagereq type="mandatory">texlive-mathspec</packagereq>
      <packagereq type="mandatory">texlive-mathtools</packagereq>
      <packagereq type="mandatory">texlive-mdwtools</packagereq>
      <packagereq type="mandatory">texlive-memoir</packagereq>
      <packagereq type="mandatory">texlive-metafont</packagereq>
      <packagereq type="mandatory">texlive-metalogo</packagereq>
      <packagereq type="mandatory">texlive-metapost</packagereq>
      <packagereq type="mandatory">texlive-mflogo</packagereq>
      <packagereq type="mandatory">texlive-mflogo-font</packagereq>
      <packagereq type="mandatory">texlive-mfnfss</packagereq>
      <packagereq type="mandatory">texlive-mfware</packagereq>
      <packagereq type="mandatory">texlive-microtype</packagereq>
      <packagereq type="mandatory">texlive-mnsymbol</packagereq>
      <packagereq type="mandatory">texlive-mparhack</packagereq>
      <packagereq type="mandatory">texlive-mptopdf</packagereq>
      <packagereq type="mandatory">texlive-ms</packagereq>
      <packagereq type="mandatory">texlive-multido</packagereq>
      <packagereq type="mandatory">texlive-multirow</packagereq>
      <packagereq type="mandatory">texlive-natbib</packagereq>
      <packagereq type="mandatory">texlive-ncctools</packagereq>
      <packagereq type="mandatory">texlive-ncntrsbk</packagereq>
      <packagereq type="mandatory">texlive-needspace</packagereq>
      <packagereq type="mandatory">texlive-norasi-c90</packagereq>
      <packagereq type="mandatory">texlive-ntgclass</packagereq>
      <packagereq type="mandatory">texlive-oberdiek</packagereq>
      <packagereq type="mandatory">texlive-overpic</packagereq>
      <packagereq type="mandatory">texlive-palatino</packagereq>
      <packagereq type="mandatory">texlive-paralist</packagereq>
      <packagereq type="mandatory">texlive-parallel</packagereq>
      <packagereq type="mandatory">texlive-parskip</packagereq>
      <packagereq type="mandatory">texlive-passivetex</packagereq>
      <packagereq type="mandatory">texlive-pdfpages</packagereq>
      <packagereq type="mandatory">texlive-pdftex</packagereq>
      <packagereq type="mandatory">texlive-pgf</packagereq>
      <packagereq type="mandatory">texlive-philokalia</packagereq>
      <packagereq type="mandatory">texlive-placeins</packagereq>
      <packagereq type="mandatory">texlive-polyglossia</packagereq>
      <packagereq type="mandatory">texlive-powerdot</packagereq>
      <packagereq type="mandatory">texlive-preprint</packagereq>
      <packagereq type="mandatory">texlive-psfrag</packagereq>
      <packagereq type="mandatory">texlive-pslatex</packagereq>
      <packagereq type="mandatory">texlive-psnfss</packagereq>
      <packagereq type="mandatory">texlive-pspicture</packagereq>
      <packagereq type="mandatory">texlive-pst-3d</packagereq>
      <packagereq type="mandatory">texlive-pst-blur</packagereq>
      <packagereq type="mandatory">texlive-pst-coil</packagereq>
      <packagereq type="mandatory">texlive-pst-eps</packagereq>
      <packagereq type="mandatory">texlive-pst-fill</packagereq>
      <packagereq type="mandatory">texlive-pst-grad</packagereq>
      <packagereq type="mandatory">texlive-pst-math</packagereq>
      <packagereq type="mandatory">texlive-pst-node</packagereq>
      <packagereq type="mandatory">texlive-pst-plot</packagereq>
      <packagereq type="mandatory">texlive-pst-slpe</packagereq>
      <packagereq type="mandatory">texlive-pst-text</packagereq>
      <packagereq type="mandatory">texlive-pst-tree</packagereq>
      <packagereq type="mandatory">texlive-pstricks</packagereq>
      <packagereq type="mandatory">texlive-pstricks-add</packagereq>
      <packagereq type="mandatory">texlive-ptext</packagereq>
      <packagereq type="mandatory">texlive-pxfonts</packagereq>
      <packagereq type="mandatory">texlive-qstest</packagereq>
      <packagereq type="mandatory">texlive-rcs</packagereq>
      <packagereq type="mandatory">texlive-realscripts</packagereq>
      <packagereq type="mandatory">texlive-rsfs</packagereq>
      <packagereq type="mandatory">texlive-sansmath</packagereq>
      <packagereq type="mandatory">texlive-sauerj</packagereq>
      <packagereq type="mandatory">texlive-scheme-basic</packagereq>
      <packagereq type="mandatory">texlive-section</packagereq>
      <packagereq type="mandatory">texlive-sectsty</packagereq>
      <packagereq type="mandatory">texlive-seminar</packagereq>
      <packagereq type="mandatory">texlive-sepnum</packagereq>
      <packagereq type="mandatory">texlive-setspace</packagereq>
      <packagereq type="mandatory">texlive-showexpl</packagereq>
      <packagereq type="mandatory">texlive-soul</packagereq>
      <packagereq type="mandatory">texlive-stmaryrd</packagereq>
      <packagereq type="mandatory">texlive-subfig</packagereq>
      <packagereq type="mandatory">texlive-subfigure</packagereq>
      <packagereq type="mandatory">texlive-svn-prov</packagereq>
      <packagereq type="mandatory">texlive-symbol</packagereq>
      <packagereq type="mandatory">texlive-t2</packagereq>
      <packagereq type="mandatory">texlive-tabu</packagereq>
      <packagereq type="mandatory">texlive-tabulary</packagereq>
      <packagereq type="mandatory">texlive-tetex</packagereq>
      <packagereq type="mandatory">texlive-tex</packagereq>
      <packagereq type="mandatory">texlive-tex-gyre</packagereq>
      <packagereq type="mandatory">texlive-tex-gyre-math</packagereq>
      <packagereq type="mandatory">texlive-tex-ini-files</packagereq>
      <packagereq type="mandatory">texlive-tex4ht</packagereq>
      <packagereq type="mandatory">texlive-texconfig</packagereq>
      <packagereq type="mandatory">texlive-texlive-common-doc</packagereq>
      <packagereq type="mandatory">texlive-texlive-docindex</packagereq>
      <packagereq type="mandatory">texlive-texlive-en</packagereq>
      <packagereq type="mandatory">texlive-texlive-msg-translations</packagereq>
      <packagereq type="mandatory">texlive-texlive-scripts</packagereq>
      <packagereq type="mandatory">texlive-texlive.infra</packagereq>
      <packagereq type="mandatory">texlive-textcase</packagereq>
      <packagereq type="mandatory">texlive-textpos</packagereq>
      <packagereq type="mandatory">texlive-threeparttable</packagereq>
      <packagereq type="mandatory">texlive-thumbpdf</packagereq>
      <packagereq type="mandatory">texlive-times</packagereq>
      <packagereq type="mandatory">texlive-tipa</packagereq>
      <packagereq type="mandatory">texlive-titlesec</packagereq>
      <packagereq type="mandatory">texlive-titling</packagereq>
      <packagereq type="mandatory">texlive-tocloft</packagereq>
      <packagereq type="mandatory">texlive-tools</packagereq>
      <packagereq type="mandatory">texlive-trimspaces</packagereq>
      <packagereq type="mandatory">texlive-txfonts</packagereq>
      <packagereq type="mandatory">texlive-type1cm</packagereq>
      <packagereq type="mandatory">texlive-typehtml</packagereq>
      <packagereq type="mandatory">texlive-ucharclasses</packagereq>
      <packagereq type="mandatory">texlive-ucs</packagereq>
      <packagereq type="mandatory">texlive-uhc</packagereq>
      <packagereq type="mandatory">texlive-ulem</packagereq>
      <packagereq type="mandatory">texlive-underscore</packagereq>
      <packagereq type="mandatory">texlive-unicode-data</packagereq>
      <packagereq type="mandatory">texlive-unicode-math</packagereq>
      <packagereq type="mandatory">texlive-unisugar</packagereq>
      <packagereq type="mandatory">texlive-updmap-map</packagereq>
      <packagereq type="mandatory">texlive-upquote</packagereq>
      <packagereq type="mandatory">texlive-url</packagereq>
      <packagereq type="mandatory">texlive-utopia</packagereq>
      <packagereq type="mandatory">texlive-varwidth</packagereq>
      <packagereq type="mandatory">texlive-wadalab</packagereq>
      <packagereq type="mandatory">texlive-was</packagereq>
      <packagereq type="mandatory">texlive-wasy</packagereq>
      <packagereq type="mandatory">texlive-wasy2-ps</packagereq>
      <packagereq type="mandatory">texlive-wasysym</packagereq>
      <packagereq type="mandatory">texlive-wrapfig</packagereq>
      <packagereq type="mandatory">texlive-xcolor</packagereq>
      <packagereq type="mandatory">texlive-xdvi</packagereq>
      <packagereq type="mandatory">texlive-xecjk</packagereq>
      <packagereq type="mandatory">texlive-xecolor</packagereq>
      <packagereq type="mandatory">texlive-xecyr</packagereq>
      <packagereq type="mandatory">texlive-xeindex</packagereq>
      <packagereq type="mandatory">texlive-xepersian</packagereq>
      <packagereq type="mandatory">texlive-xesearch</packagereq>
      <packagereq type="mandatory">texlive-xetex</packagereq>
      <packagereq type="mandatory">texlive-xetex-itrans</packagereq>
      <packagereq type="mandatory">texlive-xetex-pstricks</packagereq>
      <packagereq type="mandatory">texlive-xetex-tibetan</packagereq>
      <packagereq type="mandatory">texlive-xetexconfig</packagereq>
      <packagereq type="mandatory">texlive-xetexfontinfo</packagereq>
      <packagereq type="mandatory">texlive-xifthen</packagereq>
      <packagereq type="mandatory">texlive-xkeyval</packagereq>
      <packagereq type="mandatory">texlive-xltxtra</packagereq>
      <packagereq type="mandatory">texlive-xmltex</packagereq>
      <packagereq type="mandatory">texlive-xmltexconfig</packagereq>
      <packagereq type="mandatory">texlive-xstring</packagereq>
      <packagereq type="mandatory">texlive-xtab</packagereq>
      <packagereq type="mandatory">texlive-xunicode</packagereq>
      <packagereq type="mandatory">texlive-zapfchan</packagereq>
      <packagereq type="mandatory">texlive-zapfding</packagereq>
    </packagelist>
  </group>
  <group>
    <id>virtualization-client</id>
    <name>Virtualization Client</name>
    <name xml:lang="as">à¦­à¦¾à§°à¦›à§à§±à§‡à¦²à¦¾à¦‡à¦œà§‡à¦·à¦£ à¦•à§à¦²à¦¾à¦à¦¨à§à¦Ÿ</name>
    <name xml:lang="bn">à¦­à¦¾à¦°à§à¦šà§à§Ÿà¦¾à¦²à¦¾à¦‡à¦œà§‡à¦¶à¦¨ à¦•à§à¦²à¦¾à§Ÿà§‡à¦¨à§à¦Ÿ</name>
    <name xml:lang="cs">VirtualizaÄnÃ­ klient</name>
    <name xml:lang="de">Virtualisierungs-Client</name>
    <name xml:lang="de_CH">Virtualisierungs-Client</name>
    <name xml:lang="es">Cliente de virtualizaciÃ³n</name>
    <name xml:lang="fr">Client de virtualisation</name>
    <name xml:lang="gu">àªµàª°à«àªšà«àª¯à«àª…àª²àª¾àªˆàªà«‡àª¶àª¨ àª•à«àª²àª¾àª¯àª¨à«àªŸ</name>
    <name xml:lang="hi">à¤µà¤°à¥à¤šà¥à¤…à¤²à¤¾à¤‡à¤œà¥‡à¤¶à¤¨ à¤•à¥à¤²à¤¾à¤‡à¤‚à¤Ÿ</name>
    <name xml:lang="ia">Cliente de virtualisation</name>
    <name xml:lang="it">Client di virtualizzazione</name>
    <name xml:lang="ja">ä»®æƒ³åŒ–ã‚¯ãƒ©ã‚¤ã‚¢ãƒ³ãƒˆ</name>
    <name xml:lang="kn">à²µà²°à³à²šà³à²µà²²à³ˆà²¸à³‡à²¶à²¨à³ à²•à³à²²à³ˆà²‚à²Ÿà³</name>
    <name xml:lang="ko">ê°€ìƒí™” í´ë¼ì´ì–¸íŠ¸</name>
    <name xml:lang="ml">à´µà´¿à´°àµâ€à´šàµà´šàµà´µà´²àµˆà´¸àµ‡à´·à´¨àµâ€ à´•àµà´²à´¯à´¨àµà´±àµ</name>
    <name xml:lang="mr">à¤µà¤°à¥à¤šà¥à¤¯à¥à¤…à¤²à¤¾à¤‡à¤œà¥‡à¤¶à¤¨ à¤•à¥à¤²à¤¾à¤à¤‚à¤Ÿ</name>
    <name xml:lang="or">à¬†à¬­à¬¾à¬¸à­€à¬•à¬°à¬£ à¬•à­à¬²à¬¾à¬à¬£à­à¬Ÿ</name>
    <name xml:lang="pa">à¨µà¨°à¨šà©à¨²à¨¾à¨ˆà¨œà¨¼à©‡à¨¸à¨¼à¨¨ à¨•à¨²à¨¾à¨ˆà¨‚à¨Ÿ</name>
    <name xml:lang="pl">Klient wirtualizacji</name>
    <name xml:lang="pt">Cliente de VirtualizaÃ§Ã£o</name>
    <name xml:lang="pt_BR">Cliente de VirtualizaÃ§Ã£o</name>
    <name xml:lang="ru">ÐšÐ»Ð¸ÐµÐ½Ñ‚ Ð²Ð¸Ñ€Ñ‚ÑƒÐ°Ð»Ð¸Ð·Ð°Ñ†Ð¸Ð¸</name>
    <name xml:lang="sv">Virtualiseringsklient</name>
    <name xml:lang="ta">à®®à¯†à®¯à¯à®¨à®¿à®•à®°à®¾à®•à¯à®• à®µà®¾à®Ÿà®¿à®•à¯à®•à¯ˆà®¯à®¾à®³à®°à¯</name>
    <name xml:lang="te">à°µà°°à±à°šà±à°¯à±à°²à±ˆà°œà±‡à°·à°¨à± à°•à±à°²à±ˆà°‚à°Ÿà±</name>
    <name xml:lang="uk">ÐšÐ»Ñ–Ñ”Ð½Ñ‚ Ð²Ñ–Ñ€Ñ‚ÑƒÐ°Ð»Ñ–Ð·Ð°Ñ†Ñ–Ñ—</name>
    <name xml:lang="zh">è™›æ“¬åŒ–å®¢æˆ¶ç«¯</name>
    <name xml:lang="zh_CN">è™šæ‹ŸåŒ–å®¢æˆ·ç«¯</name>
    <name xml:lang="zh_TW">è™›æ“¬åŒ–å®¢æˆ¶ç«¯</name>
    <description>Clients for installing and managing virtualization instances.</description>
    <description xml:lang="as">à¦­à¦¾à§°à¦›à§à§±à§‡à¦²à¦¾à¦‡à¦œà§‡à¦·à¦£ à¦•à§à¦·à¦£ à¦‡à¦¨à¦¸à§à¦Ÿà¦² à¦†à§°à§ à¦¬à§à¦¯à§±à¦¸à§à¦¥à¦¾à¦ªà¦¨à¦¾à§° à¦¬à¦¾à¦¬à§‡ à¦¬à§à¦¯à§±à¦¹à§ƒà¦¤ à¦•à§à¦²à¦¾à¦à¦¨à§à¦Ÿà¥¤</description>
    <description xml:lang="bn">à¦­à¦¾à¦°à§à¦šà§à§Ÿà¦¾à¦²à¦¾à¦‡à¦œà§‡à¦¶à¦¨ à¦‡à¦¨à¦¸à§à¦Ÿà§à¦¯à¦¾à¦¨à§à¦¸ à¦‡à¦¨à¦¸à§à¦Ÿà¦² à¦“ à¦ªà¦°à¦¿à¦šà¦¾à¦²à¦¨à¦¾à¦° à¦œà¦¨à§à¦¯ à¦¬à§à¦¯à¦¬à¦¹à§ƒà¦¤ à¦•à§à¦²à¦¾à§Ÿà§‡à¦¨à§à¦Ÿà¥¤</description>
    <description xml:lang="cs">Klienti pro instalaci a sprÃ¡vu virtualizaÄnÃ­ch instancÃ­.</description>
    <description xml:lang="de">Clients zur Installation und Verwaltung von Virtualisierungs-Instanzen.</description>
    <description xml:lang="de_CH">Clients zur Installation und Verwaltung von Virtualisierungs-Instanzen.</description>
    <description xml:lang="es">Clientes para instalar y administrar instancias de virtualizaciÃ³n.</description>
    <description xml:lang="fr">Clients pour installer et gÃ©rer des instances de virtualisation.</description>
    <description xml:lang="gu">àªµàª°à«àªšà«àª¯à«àª…àª²àª¾àª‡àªà«‡àª¶àª¨ àª¨àª®à«‚àª¨àª¾àª“àª¨à«‡ àª¸àª‚àªšàª¾àª²àª¿àª¤ àª•àª°àªµàª¾ àª…àª¨à«‡ àª¸à«àª¥àª¾àªªàª¿àª¤ àª•àª°àªµàª¾ àª®àª¾àªŸà«‡ àª•à«àª²àª¾àª¯àª¨à«àªŸà«‹.</description>
    <description xml:lang="hi">à¤µà¤°à¥à¤šà¥à¤…à¤²à¤¾à¤‡à¤œà¥‡à¤¶à¤¨ à¤‰à¤¦à¤¾à¤¹à¤°à¤£à¥‹à¤‚ à¤•à¥‡ à¤¸à¤‚à¤¸à¥à¤¥à¤¾à¤ªà¤¨ à¤”à¤° à¤ªà¥à¤°à¤¬à¤‚à¤§à¤¨ à¤•à¥‡ à¤²à¤¿à¤ à¤•à¥à¤²à¤¾à¤‡à¤‚à¤Ÿ.</description>
    <description xml:lang="ia">Clientes pro installar e administrar exemplares de virtualisation.</description>
    <description xml:lang="it">Client per l'installazione e gestione delle istanze di virtualizzazione.</description>
    <description xml:lang="ja">ä»®æƒ³åŒ–ãƒžã‚·ãƒ³ã¸ OS ã‚’ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã—ãŸã‚Šç®¡ç†ã™ã‚‹ãŸã‚ã®æŽ¥ç¶šã‚¯ãƒ©ã‚¤ã‚¢ãƒ³ãƒˆ</description>
    <description xml:lang="kn">à²µà²°à³à²šà³à²µà²²à³ˆà²¸à³‡à²¨à³ à²¸à²¨à³à²¨à²¿à²µà³‡à²¶à²—à²³à²¨à³à²¨à³(à²‡à²¨à³â€Œà²¸à³à²Ÿà²¨à³à²¸à³) à²…à²¨à³à²¸à³à²¥à²¾à²ªà²¿à²¸à³à²µ à²¹à²¾à²—à³ à²¨à²¿à²°à³à²µà²¹à²¿à²¸à³à²µ à²•à³à²²à³ˆà²‚à²Ÿà³â€Œà²—à²³à³.</description>
    <description xml:lang="ko">ê°€ìƒí™” ì¸ìŠ¤í„´ìŠ¤ë¥¼ ê´€ë¦¬í•˜ê³  ì„¤ì¹˜í•˜ê¸° ìœ„í•œ í´ë¼ì´ì–¸íŠ¸</description>
    <description xml:lang="ml">à´µà´¿à´°àµâ€à´šàµà´šàµà´µà´²àµˆà´¸àµ‡à´·à´¨àµâ€ à´‡à´¨àµâ€à´¸àµà´±àµà´±à´¨àµâ€à´¸àµà´•à´³àµâ€ à´‡à´¨àµâ€à´¸àµà´±àµà´±àµ‹à´³àµâ€ à´šàµ†à´¯àµà´¤àµàµ à´•àµˆà´•à´¾à´°àµà´¯à´‚ à´šàµ†à´¯àµà´¯àµà´¨àµà´¨à´¤à´¿à´¨àµà´³àµà´³ à´•àµà´²à´¯à´¨àµà´±àµà´•à´³àµâ€.</description>
    <description xml:lang="mr">à¤µà¤°à¥à¤šà¥à¤¯à¥à¤…à¤²à¤¾à¤‡à¤œà¥‡à¤¶à¤¨ à¤˜à¤Ÿà¤¨à¤¾ à¤ªà¥à¤°à¤¤à¤¿à¤·à¥à¤ à¤¾à¤ªà¥€à¤¤ à¤µ à¤µà¥à¤¯à¤µà¤¸à¥à¤¥à¤¾à¤ªà¥€à¤¤ à¤•à¤°à¤£à¥à¤¯à¤¾à¤¸à¤¾à¤ à¥€ à¤•à¥à¤²à¤¾à¤à¤‚à¤Ÿà¥à¤¸à¥.</description>
    <description xml:lang="or">à¬†à¬­à¬¾à¬¸à­€ à¬ªà¬°à¬¿à¬¸à­à¬¥à¬¿à¬¤à¬¿à¬—à­à¬¡à¬¼à¬¿à¬•à­ à¬¸à­à¬¥à¬¾à¬ªà¬¨ à¬à¬¬à¬‚ à¬ªà¬°à¬¿à¬šà¬¾à¬³à¬¨à¬¾ à¬•à¬°à¬¿à¬¬à¬¾ à¬ªà¬¾à¬‡à¬ à¬•à­à¬²à¬¾à¬à¬£à­à¬Ÿà¬®à¬¾à¬¨à¥¤</description>
    <description xml:lang="pa">à¨µà¨°à¨šà©à¨…à¨²à¨¾à¨ˆà¨œà©‡à¨¶à¨¨ à¨¸à©°à¨¬à©°à¨§à©€ à¨‡à©°à¨¸à¨¾à¨Ÿà¨²à©‡à¨¶à¨¨ à¨…à¨¤à©‡ à¨ªà¨°à¨¬à©°à¨§à¨¨ à¨•à¨°à¨¨ à¨²à¨ˆ à¨•à¨²à¨¾à¨‚à¨ˆà¨Ÿà¥¤</description>
    <description xml:lang="pl">Klienci instalowania i zarzÄ…dzania instalacjami wirtualizacji.</description>
    <description xml:lang="pt">Clientes para instalar e gerenciar instÃ¢ncias de virtualizaÃ§Ã£o.</description>
    <description xml:lang="pt_BR">Clientes para instalar e gerenciar instÃ¢ncias de virtualizaÃ§Ã£o.</description>
    <description xml:lang="ru">ÐšÐ»Ð¸ÐµÐ½Ñ‚Ñ‹ Ð´Ð»Ñ ÑƒÑÑ‚Ð°Ð½Ð¾Ð²ÐºÐ¸ Ð¸ ÑƒÐ¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð¸Ñ ÑÐºÐ·ÐµÐ¼Ð¿Ð»ÑÑ€Ð°Ð¼Ð¸ Ð²Ð¸Ñ€Ñ‚ÑƒÐ°Ð»Ð¸Ð·Ð°Ñ†Ð¸Ð¸.</description>
    <description xml:lang="sv">Klienter fÃ¶r installation och hantering av virtualiseringsinstanser.</description>
    <description xml:lang="ta">à®¨à®¿à®±à¯à®µà®²à¯ à®®à®±à¯à®±à¯à®®à¯ à®®à¯†à®¯à¯à®¨à®¿à®•à®°à®¾à®•à¯à®• à®‰à®¤à®¾à®°à®£à®™à¯à®•à®³à¯ˆ à®ªà®°à®¾à®®à®°à®¿à®ªà¯à®ªà®¤à®±à¯à®•à®¾à®© à®µà®¾à®Ÿà®¿à®•à¯à®•à¯ˆà®¯à®¾à®³à®°à¯à®•à®³à¯.</description>
    <description xml:lang="te">à°µà°°à±à°šà±à°¯à±à°²à±ˆà°œà±‡à°·à°¨à± à°¯à°¿à°¨à±â€Œà°¸à±à°Ÿà°¾à°¨à±à°¸à±à°²à°¨à± à°¸à°‚à°¸à±à°¥à°¾à°ªà°¿à°‚à°šà±à°Ÿà°•à± à°®à°°à°¿à°¯à± à°¨à°¿à°°à±à°µà°¹à°¿à°‚à°šà±à°Ÿà°•à± à°•à±à°²à±ˆà°‚à°Ÿà±à°¸à±.</description>
    <description xml:lang="uk">ÐšÐ»Ñ–Ñ”Ð½Ñ‚ÑÑŒÐºÑ– Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¸ Ð´Ð»Ñ Ð²ÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ñ‚Ð° ÐºÐµÑ€ÑƒÐ²Ð°Ð½Ð½Ñ Ð²Ñ–Ñ€Ñ‚ÑƒÐ°Ð»Ñ–Ð·Ð¾Ð²Ð°Ð½Ð¸Ð¼Ð¸ ÑÐ¸ÑÑ‚ÐµÐ¼Ð°Ð¼Ð¸.</description>
    <description xml:lang="zh">ç”¨ä¾†å®‰è£å’Œç®¡ç†è™›æ“¬åŒ–äº‹ä¾‹çš„å®¢æˆ¶ç«¯ã€‚</description>
    <description xml:lang="zh_CN">ç”¨äºŽå®‰è£…å’Œç®¡ç†è™šæ‹ŸåŒ–äº‹ä»¶çš„å®¢æˆ·ç«¯ã€‚</description>
    <description xml:lang="zh_TW">ç”¨ä¾†å®‰è£å’Œç®¡ç†è™›æ“¬åŒ–äº‹ä¾‹çš„å®¢æˆ¶ç«¯ã€‚</description>
    <default>true</default>
    <uservisible>false</uservisible>
    <packagelist>
      <packagereq type="mandatory">gnome-boxes</packagereq>
      <packagereq type="mandatory">virt-install</packagereq>
      <packagereq type="mandatory">virt-manager</packagereq>
      <packagereq type="mandatory">virt-viewer</packagereq>
      <packagereq type="default">virt-top</packagereq>
      <packagereq type="optional">libguestfs-inspect-icons</packagereq>
      <packagereq type="optional">libguestfs-tools</packagereq>
      <packagereq type="optional">libguestfs-tools-c</packagereq>
    </packagelist>
  </group>
  <group>
    <id>virtualization-hypervisor</id>
    <name>Virtualization Hypervisor</name>
    <name xml:lang="as">à¦­à¦¾à§°à¦›à§à§±à§‡à¦²à¦¾à¦‡à¦œà§‡à¦·à¦£ à¦¹à¦¾à¦‡à¦ªà¦¾à§°à¦­à¦¾à¦‡à¦›à§°</name>
    <name xml:lang="cs">VirtualizaÄnÃ­ hypervizor</name>
    <name xml:lang="de">Virtualisierungs-Hypervisor</name>
    <name xml:lang="de_CH">Virtualisierungs-Hypervisor</name>
    <name xml:lang="es">Hipervisor de virtualizaciÃ³n</name>
    <name xml:lang="fr">Hyperviseur de virtualisation</name>
    <name xml:lang="gu">àªµàª°à«àªšà«àª¯à«àª…àª²àª¾àª‡àªà«‡àª¶àª¨ àª¹àª¾àª¯àªªàª°àªµàª¾àª‡àªàª°</name>
    <name xml:lang="hi">à¤µà¤°à¥à¤šà¥à¤…à¤²à¤¾à¤‡à¤œà¥‡à¤¶à¤¨ à¤¹à¤¾à¤‡à¤ªà¤°à¤µà¤¿à¤œà¤¨</name>
    <name xml:lang="it">Hypervisor di virtualizzazione</name>
    <name xml:lang="ja">ä»®æƒ³åŒ–ãƒã‚¤ãƒ‘ãƒ¼ãƒã‚¤ã‚¶ãƒ¼</name>
    <name xml:lang="kn">à²µà²°à³à²šà³à²µà²²à³ˆà²¸à³‡à²¶à²¨à³ à²¹à³ˆà²ªà²°à³à²µà³ˆà²¸à²°à³</name>
    <name xml:lang="ko">ê°€ìƒí™” í•˜ì´í¼ë°”ì´ì €</name>
    <name xml:lang="ml">à´µà´¿à´°àµâ€à´šàµà´šàµà´µà´²àµˆà´¸àµ‡à´·à´¨àµâ€ à´¹àµˆà´ªàµà´ªà´°àµâ€à´µàµˆà´¸à´°àµâ€</name>
    <name xml:lang="mr">à¤µà¤°à¥à¤šà¥à¤¯à¥à¤…à¤²à¤¾à¤‡à¤œà¥‡à¤¶à¤¨ à¤¹à¤¾à¤‡à¤ªà¤°à¤µà¤¾à¤‡à¤œà¤°</name>
    <name xml:lang="or">à¬†à¬­à¬¾à¬¸à­€à¬•à¬°à¬£ à¬¹à¬¾à¬‡à¬ªà¬°à¬­à¬¾à¬‡à¬œà¬°</name>
    <name xml:lang="pa">à¨†à¨­à¨¾à¨¸à©€à¨•à¨°à¨£ à¨¹à¨¾à¨ˆà¨ªà¨°à¨µà¨¾à¨ˆà¨œà¨¼à¨°</name>
    <name xml:lang="pl">Nadzorca wirtualizacji</name>
    <name xml:lang="pt">Hypervisor de VirtualizaÃ§Ã£o</name>
    <name xml:lang="pt_BR">Hypervisor de VirtualizaÃ§Ã£o</name>
    <name xml:lang="ru">Ð“Ð¸Ð¿ÐµÑ€Ð²Ð¸Ð·Ð¾Ñ€ Ð²Ð¸Ñ€Ñ‚ÑƒÐ°Ð»Ð¸Ð·Ð°Ñ†Ð¸Ð¸</name>
    <name xml:lang="ta">à®®à¯†à®¯à¯à®¨à®¿à®•à®°à®¾à®•à¯à®• à®¹à¯ˆà®ªà¯à®ªà®°à¯à®µà¯ˆà®šà®°à¯</name>
    <name xml:lang="te">à°µà°°à±à°šà±à°¯à±à°²à±ˆà°œà±‡à°·à°¨à± à°¹à±ˆà°ªà°°à±à°µà°¿à°œà°°à±</name>
    <name xml:lang="uk">Ð“Ñ–Ð¿ÐµÑ€Ð²Ñ–Ð·Ð¾Ñ€ Ð²Ñ–Ñ€Ñ‚ÑƒÐ°Ð»Ñ–Ð·Ð°Ñ†Ñ–Ñ—</name>
    <name xml:lang="zh">è™›æ“¬åŒ– Hypervisor</name>
    <name xml:lang="zh_CN">è™šæ‹ŸåŒ– Hypervisor</name>
    <name xml:lang="zh_TW">è™›æ“¬åŒ– Hypervisor</name>
    <description>Smallest possible virtualization host installation.</description>
    <description xml:lang="as">à¦¨à§‚à¦¨à§à¦¯à¦¤à¦® à¦¸à¦®à§à¦­à¦¾à¦¬à§à¦¯ à¦­à¦¾à§°à¦›à§à§±à§‡à¦²à¦¾à¦‡à¦œà§‡à¦·à¦£ à¦¹à¦¸à§à¦Ÿ à¦‡à¦¨à¦¸à§à¦Ÿà¦²à§‡à¦·à¦£à¥¤</description>
    <description xml:lang="cs">NejmenÅ¡Ã­ moÅ¾nÃ¡ instalace virtualizaÄnÃ­ho hostitele.</description>
    <description xml:lang="de">KleinstmÃ¶gliche Installation eines Virtualisierungshosts.</description>
    <description xml:lang="de_CH">KleinstmÃ¶gliche Installation eines Virtualisierungshosts.</description>
    <description xml:lang="es">La instalaciÃ³n de host de virtualizaciÃ³n mÃ¡s pequeÃ±a posible.</description>
    <description xml:lang="fr">Installation minimale d'hÃ´te de virtualisation.</description>
    <description xml:lang="gu">àª¨àª¾àª¨àª¾àª®àª¾àª‚ àª¨àª¾àª¨à«àª‚ àª¶àª•à«àª¯ àªµàª°à«àªšà«àª¯à«àª…àª²àª¾àª‡àªà«‡àª¶àª¨ àª¯àªœàª®àª¾àª¨ àª¸à«àª¥àª¾àªªàª¨.</description>
    <description xml:lang="hi">à¤¸à¤¬à¤¸à¥‡ à¤›à¥‹à¤Ÿà¤¾ à¤µà¤°à¥à¤šà¥à¤…à¤²à¤¾à¤‡à¤œà¥‡à¤¶à¤¨ à¤®à¥‡à¤œà¤¬à¤¾à¤¨ à¤¸à¤‚à¤¸à¥à¤¥à¤¾à¤ªà¤¨.</description>
    <description xml:lang="it">Installazione minima host di virtualizzazione possibile</description>
    <description xml:lang="ja">æœ€å°é™ã®ä»®æƒ³åŒ–ãƒ›ã‚¹ãƒˆã®ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã§ã™ã€‚</description>
    <description xml:lang="kn">à²•à²¨à²¿à²·à³à²Ÿ à²¸à²¾à²§à³à²¯à²µà²¿à²°à³à²µ à²µà²°à³à²šà³à²µà²²à³ˆà²¸à³‡à²¶à²¨à³ à²†à²¤à²¿à²¥à³‡à²¯ à²…à²¨à³à²¸à³à²¥à²¾à²ªà²¨à³†.</description>
    <description xml:lang="ko">ê°€ëŠ¥í•œ ìµœì†Œí•œì˜ ê°€ìƒí™” í˜¸ìŠ¤íŠ¸ë¥¼ ì„¤ì¹˜í•©ë‹ˆë‹¤.</description>
    <description xml:lang="ml">à´à´±àµà´±à´µàµà´‚ à´Žà´³àµà´ªàµà´ªà´¤àµà´¤à´¿à´²àµà´³àµà´³ à´¸à´¾à´§àµà´¯à´®à´¾à´¯ à´µà´¿à´°àµâ€à´šàµà´šàµà´µà´²àµˆà´¸àµ‡à´·à´¨àµâ€ à´¹àµ‹à´¸àµà´±àµà´±àµ à´‡à´¨àµâ€à´¸àµà´±àµà´±à´²àµ‡à´·à´¨àµâ€.</description>
    <description xml:lang="mr">à¤¸à¤°à¥à¤µà¤¾à¤¤ à¤›à¥‹à¤Ÿà¥‡ à¤¸à¤‚à¤­à¤¾à¤µà¥à¤¯ à¤µà¤°à¥à¤šà¥à¤¯à¥à¤…à¤²à¤¾à¤‡à¤œà¥‡à¤¶à¤¨ à¤¯à¤œà¤®à¤¾à¤¨ à¤‡à¤‚à¤¸à¥à¤Ÿà¥‰à¤²à¥‡à¤¶à¤¨.</description>
    <description xml:lang="or">à¬•à­à¬·à­à¬¦à­à¬°à¬¤à¬® à¬¸à¬®à­à¬­à¬¾à¬¬à­à¬¯ à¬†à¬­à¬¾à¬¸à­€ à¬¹à­‹à¬·à­à¬Ÿ à¬¸à­à¬¥à¬¾à¬ªà¬¨à¥¤</description>
    <description xml:lang="pa">à¨µà©±à¨§ à¨¤à©‹à¨‚ à¨µà©±à¨§ à¨¸à©°à¨­à¨µ à¨†à¨­à¨¾à¨¸à©€à¨•à¨°à¨£ à¨®à©‡à¨œà¨¬à¨¾à¨¨ à¨‡à©°à¨¸à¨Ÿà¨¾à¨²à©‡à¨¶à¨¨à¥¤</description>
    <description xml:lang="pl">Najmniejsza moÅ¼liwa instalacja gospodarza wirtualizacji.</description>
    <description xml:lang="pt">InstalaÃ§Ã£o de host de virtualizaÃ§Ã£o menor possÃ­vel</description>
    <description xml:lang="pt_BR">InstalaÃ§Ã£o de host de virtualizaÃ§Ã£o menor possÃ­vel</description>
    <description xml:lang="ru">ÐœÐ¸Ð½Ð¸Ð¼Ð°Ð»ÑŒÐ½Ð°Ñ ÑƒÑÑ‚Ð°Ð½Ð¾Ð²ÐºÐ° Ñ…Ð¾ÑÑ‚Ð° Ð²Ð¸Ñ€Ñ‚ÑƒÐ°Ð»Ð¸Ð·Ð°Ñ†Ð¸Ð¸.</description>
    <description xml:lang="ta">à®šà®¾à®¤à¯à®¤à®¿à®¯à®®à®¾à®© à®®à®¿à®•à®šà¯ à®šà®¿à®±à®¿à®¯ à®®à¯†à®¯à¯à®¨à®¿à®•à®°à®¾à®•à¯à®• à®µà®´à®™à¯à®•à®¿ à®¨à®¿à®±à¯à®µà®²à¯.</description>
    <description xml:lang="te">à°¸à°¾à°§à±à°¯à°®à°—à± à°šà°¿à°¨à±à°¨ à°µà°°à±à°šà±à°¯à°²à±ˆà°œà±‡à°·à°¨à± à°…à°¤à°¿à°§à±‡à°¯à°¿ à°¸à°‚à°¸à±à°¥à°¾à°ªà°¨.</description>
    <description xml:lang="uk">ÐÐ°Ð¹Ð¼ÐµÐ½ÑˆÐ° Ð· Ð¼Ð¾Ð¶Ð»Ð¸Ð²Ð¸Ñ… Ð¾ÑÐ½Ð¾Ð²Ð½Ð° ÑÐ¸ÑÑ‚ÐµÐ¼Ð° Ð´Ð»Ñ Ð²Ñ–Ñ€Ñ‚ÑƒÐ°Ð»Ñ–Ð·Ð°Ñ†Ñ–Ñ—.</description>
    <description xml:lang="zh">æœ€å°åž‹çš„è™›æ“¬åŒ–ä¸»æ©Ÿå®‰è£ç¨‹åºã€‚</description>
    <description xml:lang="zh_CN">æœ€å°çš„è™šæ‹ŸåŒ–ä¸»æœºå®‰è£…ã€‚</description>
    <description xml:lang="zh_TW">æœ€å°åž‹çš„è™›æ“¬åŒ–ä¸»æ©Ÿå®‰è£ç¨‹åºã€‚</description>
    <default>true</default>
    <uservisible>false</uservisible>
    <packagelist>
      <packagereq type="mandatory">libvirt</packagereq>
      <packagereq type="mandatory">qemu-kvm</packagereq>
    </packagelist>
  </group>
  <group>
    <id>virtualization-platform</id>
    <name>Virtualization Platform</name>
    <name xml:lang="as">à¦­à¦¾à§°à¦›à§à§±à§‡à¦²à¦¾à¦‡à¦œà§‡à¦·à¦£ à¦ªà§à¦²à§‡à¦Ÿà¦«à§°à§à¦®</name>
    <name xml:lang="bn">à¦­à¦¾à¦°à§à¦šà§à§Ÿà¦¾à¦²à¦¾à¦‡à¦œà§‡à¦¶à¦¨ à¦ªà§à¦²à§à¦¯à¦¾à¦Ÿà¦«à¦°à§à¦®</name>
    <name xml:lang="cs">VirtualizaÄnÃ­ platforma</name>
    <name xml:lang="de">Virtualisierungs-Plattform</name>
    <name xml:lang="de_CH">Virtualisierungs-Plattform</name>
    <name xml:lang="es">Plataforma de virtualizaciÃ³n</name>
    <name xml:lang="fr">Plateforme de virtualisation</name>
    <name xml:lang="gu">àªµàª°à«àªšà«àª¯à«àª…àª²àª¾àªˆàªà«‡àª¶àª¨ àªªà«àª²à«‡àªŸàª«à«‹àª°à«àª®</name>
    <name xml:lang="hi">à¤µà¤°à¥à¤šà¥à¤…à¤²à¤¾à¤‡à¤œà¥‡à¤¶à¤¨ à¤ªà¥à¤²à¥‡à¤Ÿà¤«à¥‰à¤°à¥à¤®</name>
    <name xml:lang="ia">Platteforma de virtualisation</name>
    <name xml:lang="it">Piattaforma di virtualizzazione</name>
    <name xml:lang="ja">ä»®æƒ³åŒ–ãƒ—ãƒ©ãƒƒãƒˆãƒ•ã‚©ãƒ¼ãƒ </name>
    <name xml:lang="kn">à²µà²°à³à²šà³à²µà²²à³ˆà²¸à³‡à²¶à²¨à³ à²ªà³à²²à²¾à²Ÿà³â€Œà²«à²¾à²°à³à²®à³</name>
    <name xml:lang="ko">ê°€ìƒí™” í”Œëž«í¼</name>
    <name xml:lang="ml">à´µà´¿à´°àµâ€à´šàµà´šàµà´µà´²àµˆà´¸àµ‡à´·à´¨àµâ€ à´ªàµà´²à´¾à´±àµà´±àµà´«àµ‹à´‚</name>
    <name xml:lang="mr">à¤µà¤°à¥à¤šà¥à¤¯à¥à¤…à¤²à¤¾à¤‡à¤œà¥‡à¤¶à¤¨ à¤ªà¥à¤²à¥…à¤Ÿà¤«à¤¾à¤°à¥à¤®</name>
    <name xml:lang="or">à¬†à¬­à¬¾à¬¸à­€à¬•à¬°à¬£ à¬ªà­à¬²à¬¾à¬Ÿà¬«à¬°à­à¬®</name>
    <name xml:lang="pa">à¨†à¨­à¨¾à¨¸à©€à¨•à¨°à¨£ à¨®à©°à¨š</name>
    <name xml:lang="pl">Platforma wirtualizacji</name>
    <name xml:lang="pt">Plataforma de VirtualizaÃ§Ã£o</name>
    <name xml:lang="pt_BR">Plataforma de VirtualizaÃ§Ã£o</name>
    <name xml:lang="ru">ÐŸÐ»Ð°Ñ‚Ñ„Ð¾Ñ€Ð¼Ð° Ð²Ð¸Ñ€Ñ‚ÑƒÐ°Ð»Ð¸Ð·Ð°Ñ†Ð¸Ð¸</name>
    <name xml:lang="sv">Virtualiseringsplattform</name>
    <name xml:lang="ta">à®®à¯†à®¯à¯à®¨à®¿à®•à®°à®¾à®•à¯à®• à®ƒà®ªà¯à®³à®¾à®Ÿà¯à®ªà®¾à®°à¯à®®à¯</name>
    <name xml:lang="te">à°µà°°à±à°šà±à°¯à±à°²à±ˆà°œà±‡à°·à°¨à± à°ªà±à°²à°¾à°Ÿà±â€Œà°«à°¾à°‚</name>
    <name xml:lang="uk">ÐŸÐ»Ð°Ñ‚Ñ„Ð¾Ñ€Ð¼Ð° Ð²Ñ–Ñ€Ñ‚ÑƒÐ°Ð»Ñ–Ð·Ð°Ñ†Ñ–Ñ—</name>
    <name xml:lang="zh">è™›æ“¬åŒ–å¹³å°</name>
    <name xml:lang="zh_CN">è™šæ‹ŸåŒ–å¹³å°</name>
    <name xml:lang="zh_TW">è™›æ“¬åŒ–å¹³å°</name>
    <description>Provides an interface for accessing and controlling virtualized guests and containers.</description>
    <description xml:lang="as">à¦­à¦¾à§°à¦›à§à§±à§‡à¦² à¦…à¦¤à¦¿à¦¥à¦¿ à¦†à§°à§ à¦§à¦¾à§°à¦•à¦¸à¦®à§‚à¦¹à¦¤ à¦ªà§à§°à¦¬à§‡à¦¶à¦¾à¦§à¦¿à¦•à¦¾à§° à¦²à¦¬à¦²à§‡ à¦à¦Ÿà¦¾ à¦†à¦¨à§à¦¤à¦ƒà¦ªà§ƒà¦·à§à¦  à¦ªà§à§°à¦¦à¦¾à¦¨ à¦•à§°à§‡à¥¤</description>
    <description xml:lang="bn">à¦­à¦¾à¦°à§à¦šà§à§Ÿà¦¾à¦²à¦¾à¦‡à¦œ à¦•à¦°à¦¾ à¦—à§‡à¦¸à§à¦Ÿ à¦¸à¦¿à¦¸à§à¦Ÿà§‡à¦® à¦“ à¦¸à§‡à¦—à§à¦²à¦¿ à¦§à¦¾à¦°à¦£à¦•à¦¾à¦°à§€ à¦¬à§à¦¯à¦¬à¦¹à¦¾à¦° à¦“ à¦¨à¦¿à§Ÿà¦¨à§à¦¤à§à¦°à¦£ à¦•à¦°à¦¾à¦° à¦œà¦¨à§à¦¯ à¦à¦•à¦Ÿà¦¿ à¦‡à¦¨à§à¦Ÿà¦¾à¦°à¦«à§‡à¦¸ à¦‰à¦ªà¦²à¦¬à§à¦§ à¦•à¦°à¦¾ à¦¹à§Ÿà¥¤</description>
    <description xml:lang="cs">Poskytuje rozhranÃ­ pro pÅ™Ã­stup a ovlÃ¡dÃ¡nÃ­ virtuÃ¡lnÃ­ch hostÅ¯ a kontejnerÅ¯.</description>
    <description xml:lang="de">Liefert eine Schnittstelle fÃ¼r den Zugriff und die Kontrolle virtueller GÃ¤ste und Container.</description>
    <description xml:lang="de_CH">Liefert eine Schnittstelle fÃ¼r den Zugriff und die Kontrolle virtueller GÃ¤ste und Container.</description>
    <description xml:lang="es">Proporciona una interfaz para acceder y controlar huÃ©spedes y contenedores virtualizados.</description>
    <description xml:lang="fr">Offre une interface pour l'accÃ¨s et le contrÃ´le des invitÃ©s virtualisÃ©s et des conteneurs.</description>
    <description xml:lang="gu">àªµàª°à«àªšà«àª¯à«àª…àª² àª¥àª¯à«‡àª² àª®àª¹à«‡àª®àª¾àª¨à«‹àª¨à«‡ àª…àª¨à«‡ àª•àª¨à«àªŸà«‡àª¨àª°à«‹àª¨à«‡ àª¨àª¿àª¯àª‚àª¤à«àª°àª¿àª¤ àª•àª°àªµàª¾ àª…àª¨à«‡ àªµàª¾àªªàª°àªµàª¾ àª®àª¾àªŸà«‡ àª‡àª¨à«àªŸàª°àª«à«‡àª¸àª¨à«‡ àªªà«‚àª°à« àªªàª¾àª¡à«‡ àª›à«‡.</description>
    <description xml:lang="hi">à¤µà¤°à¥à¤šà¥à¤…à¤²à¤¾à¤‡à¤œà¥à¤¡ à¤—à¥‡à¤¸à¥à¤Ÿ à¤”à¤° à¤•à¤‚à¤Ÿà¥‡à¤¨à¤° à¤•à¥€ à¤ªà¤¹à¥à¤à¤š à¤”à¤° à¤¨à¤¿à¤¯à¤‚à¤¤à¥à¤°à¤£ à¤•à¥‡ à¤²à¤¿à¤ à¤…à¤‚à¤¤à¤°à¤«à¤²à¤• à¤¦à¥‡à¤¤à¤¾ à¤¹à¥ˆ</description>
    <description xml:lang="ia">Illo provide un interfacie pro acceder e gerer hospites virtualisate e containers.</description>
    <description xml:lang="it">Fornisce una interfaccia per l'accesso ed il controllo dei container e dei guest virtualizzati.</description>
    <description xml:lang="ja">ä»®æƒ³åŒ–ã‚²ã‚¹ãƒˆã‚„ã‚³ãƒ³ãƒ†ãƒŠã¸ã‚¢ã‚¯ã‚»ã‚¹ã—ãŸã‚Šåˆ¶å¾¡ã™ã‚‹ãŸã‚ã®ã‚¤ãƒ³ã‚¿ãƒ¼ãƒ•ã‚§ãƒ¼ã‚¹ã‚’æä¾›ã—ã¾ã™ã€‚</description>
    <description xml:lang="kn">à²µà²°à³à²šà³à²µà²²à³ˆà²¸à³‡à²¨à³ à²…à²¤à²¿à²¥à²¿à²—à²³à²¨à³à²¨à³ à²¹à²¾à²—à³ à²•à²‚à²Ÿà³ˆà²¨à²°à³à²—à²³à²¨à³à²¨à³ à²¨à²¿à²²à³à²•à²¿à²¸à²¿à²•à³Šà²³à³à²³à²²à³ à²®à²¤à³à²¤à³ à²¨à²¿à²¯à²‚à²¤à³à²°à²¿à²¸à²²à³ à²’à²‚à²¦à³ à²¸à²‚à²ªà²°à³à²•à²¸à²¾à²§à²¨à²µà²¨à³à²¨à³ à²’à²¦à²—à²¿à²¸à³à²¤à³à²¤à²¦à³†.</description>
    <description xml:lang="ko">ê°€ìƒí™”ëœ ê²ŒìŠ¤íŠ¸ì™€ ì»¨í…Œì´ë„ˆë¥¼ ì–µì„¸ìŠ¤í•˜ê³  ì»¨íŠ¸ë¡¤í•˜ê¸° ìœ„í•œ ì¸í„°íŽ˜ì´ìŠ¤ ì œê³µ.</description>
    <description xml:lang="ml">à´µà´¿à´°àµâ€à´šàµà´šàµà´µà´²àµˆà´¸àµà´¡àµ à´—à´¸àµà´±àµà´±àµà´•à´³àµâ€à´•àµà´•àµà´‚ à´¸à´‚à´­à´°à´£à´™àµà´™à´³àµâ€à´•àµà´•àµà´‚, à´²à´­àµà´¯à´®à´¾à´•àµà´•àµà´¨àµà´¨à´¤à´¿à´¨àµà´‚ à´¨à´¿à´¯à´¨àµà´¤àµà´°à´¿à´•àµà´•àµà´¨àµà´¨à´¤à´¿à´¨àµà´®àµà´³àµà´³ à´‡à´¨àµà´±à´°àµâ€à´«àµ†à´¯à´¿à´¸àµ à´¨à´²àµâ€à´•àµà´¨àµà´¨àµ.</description>
    <description xml:lang="mr">à¤µà¤°à¥à¤šà¥à¤¯à¥à¤…à¤²à¤¾à¤‡à¤œà¥à¤¡à¥ à¤…à¤¤à¤¿à¤¥à¥€à¤µ à¤•à¤‚à¤Ÿà¥‡à¤¨à¤°à¥à¤¸à¤šà¥à¤¯à¤¾ à¤ªà¥à¤°à¤µà¥‡à¤¶ à¤µ à¤¨à¤¿à¤¯à¤‚à¤¤à¥à¤°à¤£à¤•à¤°à¥€à¤¤à¤¾ à¤¸à¤‚à¤µà¤¾à¤¦ à¤ªà¥à¤°à¤µà¤¤à¥‹.</description>
    <description xml:lang="or">à¬†à¬­à¬¾à¬¸à­€ à¬…à¬¤à¬¿à¬¥à¬¿ à¬à¬¬à¬‚ à¬§à¬¾à¬°à¬£à¬•à¬¾à¬°à­€à¬®à¬¾à¬¨à¬™à­à¬•à­ à¬…à¬­à¬¿à¬—à¬®à­à­Ÿ à¬à¬¬à¬‚ à¬¨à¬¿à­Ÿà¬¨à­à¬¤à­à¬°à¬£ à¬•à¬°à¬¿à¬¬à¬¾ à¬ªà¬¾à¬‡à¬ à¬—à­‹à¬Ÿà¬¿à¬ à¬…à¬¨à­à¬¤à¬°à¬¾à¬ªà­ƒà¬·à­à¬  à¬ªà­à¬°à¬¦à¬¾à¬¨ à¬•à¬°à¬¿à¬¥à¬¾à¬à¥¤</description>
    <description xml:lang="pa">à¨µà¨°à¨šà©à¨…à¨²à¨¾à¨ˆà©›à¨¡ à¨—à¨¿à¨¸à¨Ÿ à¨…à¨¤à©‡ à¨•à©°à¨Ÿà©‡à¨¨à¨° à¨µà¨°à¨¤à¨£ à¨…à¨¤à©‡ à¨•à©°à¨Ÿà¨°à©‹à¨² à¨²à¨ˆ à¨‡à©°à¨Ÿà¨°à¨«à©‡à¨¸ à¨¦à¨¿à©°à¨¦à¨¾ à¨¹à©ˆà¥¤</description>
    <description xml:lang="pl">Dostarcza interfejs do uzyskiwania dostÄ™pu i kontrolowania wirtualizowanych goÅ›ci i kontenerÃ³w.</description>
    <description xml:lang="pt">Fornece uma interface para acessar e controlar convidados virtualizados e containers.</description>
    <description xml:lang="pt_BR">Fornece uma interface para acessar e controlar convidados virtualizados e containers.</description>
    <description xml:lang="ru">Ð˜Ð½Ñ‚ÐµÑ€Ñ„ÐµÐ¹Ñ Ð´Ð»Ñ Ð´Ð¾ÑÑ‚ÑƒÐ¿Ð° Ð¸ ÑƒÐ¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð²Ð¸Ñ€Ñ‚ÑƒÐ°Ð»ÑŒÐ½Ñ‹Ð¼Ð¸ Ð¼Ð°ÑˆÐ¸Ð½Ð°Ð¼Ð¸ Ð¸ ÐºÐ¾Ð½Ñ‚ÐµÐ¹Ð½ÐµÑ€Ð°Ð¼Ð¸.</description>
    <description xml:lang="sv">Ger ett grÃ¤nssnitt fÃ¶r att komma Ã¥t och styra virtualiserade gÃ¤ster och behÃ¥llare.</description>
    <description xml:lang="ta">à®®à¯†à®¯à¯à®¨à®¿à®•à®°à®¾à®•à¯à®•à®ªà¯à®ªà®Ÿà¯à®Ÿ à®µà®¿à®°à¯à®¨à¯à®¤à®¿à®©à®°à¯à®•à®³à¯ à®®à®±à¯à®±à¯à®®à¯ à®•à¯Šà®³à¯à®•à®²à®©à¯à®•à®³à¯à®•à¯à®•à®¾à®© à®…à®£à¯à®•à®²à¯ à®®à®±à¯à®±à¯à®®à¯ à®•à®Ÿà¯à®Ÿà¯à®ªà®Ÿà¯à®¤à¯à®¤à®²à¯à®•à¯à®•à®¾à®© à®’à®°à¯ à®‡à®Ÿà¯ˆà®®à¯à®•à®¤à¯à®¤à¯ˆ à®µà®´à®™à¯à®•à¯à®•à®¿à®±à®¤à¯.</description>
    <description xml:lang="te">à°µà°°à±à°šà±à°¯à±à°²à±ˆà°œà±à°¡à± à°—à±†à°¸à±à°Ÿà±à°²à°¨à± à°®à°°à°¿à°¯à± à°•à°‚à°Ÿà±ˆà°¨à°°à±à°²à°¨à± à°¯à°¾à°•à±à°¸à±†à°¸à± à°šà±‡à°¯à±à°Ÿà°•à± à°®à°°à°¿à°¯à± à°¨à°¿à°¯à°‚à°¤à±à°°à°¿à°‚à°šà±à°Ÿà°•à± à°¯à°¿à°‚à°Ÿà°°à±à°«à±‡à°¸à±â€Œà°¨à± à°…à°‚à°¦à°¿à°‚à°šà±à°¨à±.</description>
    <description xml:lang="uk">ÐÐ°Ð´Ð°Ñ” Ñ–Ð½Ñ‚ÐµÑ€Ñ„ÐµÐ¹Ñ Ð´Ð»Ñ Ð´Ð¾ÑÑ‚ÑƒÐ¿Ñƒ Ñ‚Ð° ÐºÐµÑ€ÑƒÐ²Ð°Ð½Ð½Ñ Ð²Ñ–Ñ€Ñ‚ÑƒÐ°Ð»Ñ–Ð·Ð¾Ð²Ð°Ð½Ð¸Ð¼Ð¸ Ð³Ð¾ÑÑ‚ÑŒÐ¾Ð²Ð¸Ð¼Ð¸ ÑÐ¸ÑÑ‚ÐµÐ¼Ð°Ð¼Ð¸ Ñ‚Ð° ÐºÐ¾Ð½Ñ‚ÐµÐ¹Ð½ÐµÑ€Ð°Ð¼Ð¸.</description>
    <description xml:lang="zh">æä¾›äº†ä¸€å€‹ä»‹é¢ä»¥å­˜å–å’ŒæŽ§åˆ¶è™›æ“¬åŒ–å®¢åº§ç«¯ä»¥åŠ containerã€‚</description>
    <description xml:lang="zh_CN">æä¾›ç”¨æ¥è®¿é—®å’ŒæŽ§åˆ¶è™šæ‹Ÿè®¿å®¢å’Œå®¹å™¨çš„æŽ¥å£ã€‚</description>
    <description xml:lang="zh_TW">æä¾›äº†ä¸€å€‹ä»‹é¢ä»¥å­˜å–å’ŒæŽ§åˆ¶è™›æ“¬åŒ–å®¢åº§ç«¯ä»¥åŠ containerã€‚</description>
    <default>true</default>
    <uservisible>false</uservisible>
    <packagelist>
      <packagereq type="mandatory">libvirt</packagereq>
      <packagereq type="mandatory">libvirt-client</packagereq>
      <packagereq type="mandatory">virt-who</packagereq>
      <packagereq type="optional">fence-virtd-libvirt</packagereq>
      <packagereq type="optional">fence-virtd-multicast</packagereq>
      <packagereq type="optional">fence-virtd-serial</packagereq>
      <packagereq type="optional">perl-Sys-Virt</packagereq>
    </packagelist>
  </group>
  <group>
    <id>virtualization-tools</id>
    <name>Virtualization Tools</name>
    <name xml:lang="as">à¦­à¦¾à§°à¦›à§à§±à§‡à¦²à¦¾à¦‡à¦œà§‡à¦·à¦£à§° à¦¸à¦à¦œà§à¦²à¦¿à¦¸à¦®à§‚à¦¹</name>
    <name xml:lang="bn">à¦­à¦¾à¦°à§à¦šà§à§Ÿà¦¾à¦²à¦¾à¦‡à¦œà§‡à¦¶à¦¨à§‡à¦° à¦¸à¦°à¦žà§à¦œà¦¾à¦®</name>
    <name xml:lang="cs">VirtualizaÄnÃ­ nÃ¡stroje</name>
    <name xml:lang="de">Virtualisierungs-Tools</name>
    <name xml:lang="de_CH">Virtualisierungs-Tools</name>
    <name xml:lang="es">Herramientas de virtualizaciÃ³n</name>
    <name xml:lang="fr">Outils de virtualisation</name>
    <name xml:lang="gu">àªµàª°à«àªšà«àª¯à«àª…àª²àª¾àªˆàªà«‡àª¶àª¨ àª¸àª¾àª§àª¨à«‹</name>
    <name xml:lang="hi">à¤µà¤°à¥à¤šà¥à¤…à¤²à¤¾à¤‡à¤œà¥‡à¤¶à¤¨ à¤”à¤œà¤¾à¤°</name>
    <name xml:lang="ia">Instrumentos de virtualisation</name>
    <name xml:lang="it">Tool di virtualizzazione</name>
    <name xml:lang="ja">ä»®æƒ³åŒ–ãƒ„ãƒ¼ãƒ«</name>
    <name xml:lang="kn">à²µà²°à³à²šà³à²µà²²à³ˆà²¸à³‡à²¶à²¨à³ à²‰à²ªà²•à²°à²£à²—à²³à³</name>
    <name xml:lang="ko">ê°€ìƒí™” íˆ´ </name>
    <name xml:lang="ml">à´µà´¿à´°àµâ€à´šàµà´šàµà´µà´²àµˆà´¸àµ‡à´·à´¨àµâ€ à´‰à´ªà´•à´°à´£à´™àµà´™à´³àµâ€</name>
    <name xml:lang="mr">à¤µà¤°à¥à¤šà¥à¤¯à¥à¤…à¤²à¤¾à¤‡à¤œà¥‡à¤¶à¤¨ à¤¸à¤¾à¤§à¤¨à¥‡</name>
    <name xml:lang="or">à¬†à¬­à¬¾à¬¸à­€à¬•à¬°à¬£ à¬¸à¬¾à¬§à¬¨à¬—à­à¬¡à¬¼à¬¿à¬•</name>
    <name xml:lang="pa">à¨†à¨­à¨¾à¨¸à©€à¨•à¨°à¨£ à¨¸à©°à¨¦</name>
    <name xml:lang="pl">NarzÄ™dzia wirtualizacji</name>
    <name xml:lang="pt">Ferramentas de VirtualizaÃ§Ã£o</name>
    <name xml:lang="pt_BR">Ferramentas de VirtualizaÃ§Ã£o</name>
    <name xml:lang="ru">Ð¡Ñ€ÐµÐ´ÑÑ‚Ð²Ð° Ð²Ð¸Ñ€Ñ‚ÑƒÐ°Ð»Ð¸Ð·Ð°Ñ†Ð¸Ð¸</name>
    <name xml:lang="sv">Virtualiseringsverktyg</name>
    <name xml:lang="ta">à®®à¯†à®¯à¯à®¨à®¿à®•à®°à®¾à®•à¯à®• à®•à®°à¯à®µà®¿à®•à®³à¯</name>
    <name xml:lang="te">à°µà°°à±à°šà±à°¯à±à°²à±ˆà°œà±‡à°·à°¨à± à°¸à°¾à°§à°¨à°®à±à°²à±</name>
    <name xml:lang="uk">Ð†Ð½ÑÑ‚Ñ€ÑƒÐ¼ÐµÐ½Ñ‚Ð¸ Ð²Ñ–Ñ€Ñ‚ÑƒÐ°Ð»Ñ–Ð·Ð°Ñ†Ñ–Ñ—</name>
    <name xml:lang="zh">è™›æ“¬åŒ–å·¥å…·</name>
    <name xml:lang="zh_CN">è™šæ‹ŸåŒ–å·¥å…·</name>
    <name xml:lang="zh_TW">è™›æ“¬åŒ–å·¥å…·</name>
    <description>Tools for offline virtual image management.</description>
    <description xml:lang="as">à¦…à¦«-à¦²à¦¾à¦‡à¦¨ à¦­à¦¾à§°à§à¦šà§à§±à§‡à¦² à¦‡à¦®à§‡à¦œ à¦¬à§à¦¯à§±à¦¸à§à¦¥à¦¾à¦ªà¦¨à¦¾à§° à¦¬à¦¿à¦­à¦¿à¦¨à§à¦¨ à¦¸à¦à¦œà§à¦²à¦¿à¦¸à¦®à§‚à¦¹à¥¤</description>
    <description xml:lang="bn">à¦…à¦«-à¦²à¦¾à¦‡à¦¨ à¦­à¦¾à¦°à§à¦šà§à§Ÿà¦¾à¦² à¦‡à¦®à§‡à¦œ à¦ªà¦°à¦¿à¦šà¦¾à¦²à¦¨à¦¾à¦° à¦¬à¦¿à¦­à¦¿à¦¨à§à¦¨ à¦¸à¦°à¦žà§à¦œà¦¾à¦®à¥¤</description>
    <description xml:lang="cs">NÃ¡stroje pro sprÃ¡vu obrazÅ¯ virtuÃ¡lnÃ­ch diskÅ¯ v reÅ¾imu offline.</description>
    <description xml:lang="de">Tools zur Offline-Verwaltung von virtuellen Images.</description>
    <description xml:lang="de_CH">Tools zur Offline-Verwaltung von virtuellen Images.</description>
    <description xml:lang="es">Herramientas para gestiÃ³n de imagen virtual desconectada.</description>
    <description xml:lang="fr">Outils pour la gestion d'images virtuelles hors-ligne.</description>
    <description xml:lang="gu">àª“àª«àª²àª¾àª‡àª¨ àªµàª°à«àªšà«àª¯à«àª…àª² àª‡àª®à«‡àªœ àª¸àª‚àªšàª¾àª²àª¨ àª®àª¾àªŸà«‡ àª¸àª¾àª§àª¨à«‹.</description>
    <description xml:lang="hi">à¤‘à¤«à¤²à¤¾à¤‡à¤¨ à¤µà¤°à¥à¤šà¥à¤…à¤² à¤›à¤µà¤¿ à¤ªà¥à¤°à¤¬à¤‚à¤§à¤¨ à¤•à¥‡ à¤²à¤¿à¤ à¤”à¤œà¤¼à¤¾à¤°.</description>
    <description xml:lang="ia">Instrumentos pro le gestion de imagines virtual in modo autonome.</description>
    <description xml:lang="it">Tool per la gestione dell'immagine virtuale offline.</description>
    <description xml:lang="ja">åœæ­¢ä¸­ã®ä»®æƒ³ãƒžã‚·ãƒ³ã®ãƒ‡ã‚£ã‚¹ã‚¯ã‚¤ãƒ¡ãƒ¼ã‚¸ã‚’æ“ä½œã™ã‚‹ãŸã‚ã®ãƒ„ãƒ¼ãƒ«ã§ã™ã€‚</description>
    <description xml:lang="kn">à²†à²«à³â€Œà²²à³ˆà²¨à²¿à²¨à²²à³à²²à²¿ à²šà²¿à²¤à³à²°à²¿à²•à³†à²—à²³à²¨à³à²¨à³ à²¨à²¿à²°à³à²µà²¹à²¿à²¸à²²à³ à²¬à²³à²¸à²¬à²¹à³à²¦à²¾à²¦ à²‰à²ªà²•à²°à²£à²—à²³à³.</description>
    <description xml:lang="ko">ì˜¤í”„ë¼ì¸ ê°€ìƒ ì´ë¯¸ì§€ ê´€ë¦¬ë¥¼ ìœ„í•œ íˆ´ </description>
    <description xml:lang="ml">à´“à´«àµâ€Œà´²àµˆà´¨àµâ€ à´µà´¿à´°àµâ€à´šàµà´šàµà´µà´²àµâ€ à´‡à´®àµ‡à´œàµ à´®à´¾à´¨àµ‡à´œàµà´®àµ†à´¨àµà´±à´¿à´¨àµà´³àµà´³ à´‰à´ªà´•à´°à´£à´™àµà´™à´³àµâ€.</description>
    <description xml:lang="mr">à¤‘à¤«à¤²à¤¾à¤‡à¤¨ à¤ªà¥à¤°à¤¤à¤¿à¤®à¤¾ à¤µà¥à¤¯à¤µà¤¸à¥à¤¥à¤¾à¤ªà¤¨ à¤•à¤°à¥€à¤¤à¤¾ à¤¸à¤¾à¤§à¤¨à¥‡.</description>
    <description xml:lang="or">à¬…à¬«à¬²à¬¾à¬‡à¬¨ à¬†à¬­à¬¾à¬¸à­€ à¬ªà¬°à¬¿à¬šà¬¾à¬³à¬¨à¬¾ à¬ªà¬¾à¬‡à¬ à¬¸à¬¾à¬§à¬¨à¬—à­à¬¡à¬¼à¬¿à¬•à¥¤</description>
    <description xml:lang="pa">à¨†à¨«à¨²à¨¾à¨ˆà¨¨ à¨µà¨°à¨šà©à¨…à¨² à¨ˆà¨®à©‡à©› à¨ªà¨°à¨¬à©°à¨§à¨¨ à¨²à¨ˆ à¨Ÿà©‚à¨²à¥¤</description>
    <description xml:lang="pl">NarzÄ™dzia do zarzÄ…dzania obrazami wirtualnymi w trybie offline.</description>
    <description xml:lang="pt">Ferramentas para gerenciamento de imagem virtual offline.</description>
    <description xml:lang="pt_BR">Ferramentas para gerenciamento de imagem virtual offline.</description>
    <description xml:lang="ru">Ð¡Ñ€ÐµÐ´ÑÑ‚Ð²Ð° Ð´Ð»Ñ Ð°Ð²Ñ‚Ð¾Ð½Ð¾Ð¼Ð½Ð¾Ð³Ð¾ ÑƒÐ¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð²Ð¸Ñ€Ñ‚ÑƒÐ°Ð»ÑŒÐ½Ñ‹Ð¼Ð¸ Ð¾Ð±Ñ€Ð°Ð·Ð°Ð¼Ð¸.</description>
    <description xml:lang="sv">Verktyg fÃ¶r hantering av virtuella avbilder i frÃ¥nkopplat lÃ¤ge.</description>
    <description xml:lang="ta">à®†à®ƒà®ªà¯à®²à¯ˆà®©à¯ à®®à¯†à®¯à¯à®¨à®¿à®•à®°à¯ à®ªà®Ÿ à®®à¯‡à®²à®¾à®£à¯à®®à¯ˆà®•à¯à®•à®¾à®© à®•à®°à¯à®µà®¿à®•à®³à¯.</description>
    <description xml:lang="te">à°†à°«à±â€Œà°²à±ˆà°¨à± à°µà°°à±à°šà±à°¯à±à°µà°²à± à°šà°¿à°¤à±à°° à°¨à°¿à°°à±à°µà°¹à°£ à°•à±Šà°°à°•à± à°¸à°¾à°§à°¨à°®à±à°²à±.</description>
    <description xml:lang="uk">ÐŸÑ€Ð¾Ð³Ñ€Ð°Ð¼Ð¸ Ð´Ð»Ñ ÐºÐµÑ€ÑƒÐ²Ð°Ð½Ð½Ñ Ð¾Ð±Ñ€Ð°Ð·Ð°Ð¼Ð¸ Ð²Ñ–Ñ€Ñ‚ÑƒÐ°Ð»ÑŒÐ½Ð¸Ñ… ÑÐ¸ÑÑ‚ÐµÐ¼.</description>
    <description xml:lang="zh">ç”¨ä¾†é€²è¡Œé›¢ç·šè™›æ“¬æ˜ åƒæª”ç®¡ç†çš„å·¥å…·ã€‚</description>
    <description xml:lang="zh_CN">ç”¨äºŽç¦»çº¿è™šæ‹Ÿæ˜ åƒç®¡ç†çš„å·¥å…·ã€‚</description>
    <description xml:lang="zh_TW">ç”¨ä¾†é€²è¡Œé›¢ç·šè™›æ“¬æ˜ åƒæª”ç®¡ç†çš„å·¥å…·ã€‚</description>
    <default>true</default>
    <uservisible>false</uservisible>
    <packagelist>
      <packagereq type="default">libguestfs</packagereq>
      <packagereq type="default">virtio-win</packagereq>
      <packagereq type="optional">libguestfs-inspect-icons</packagereq>
      <packagereq type="optional">libguestfs-java</packagereq>
      <packagereq type="optional">libguestfs-tools</packagereq>
      <packagereq type="optional">libguestfs-tools-c</packagereq>
      <packagereq type="optional">spice-qxl-wddm-dod</packagereq>
    </packagelist>
  </group>
  <group>
    <id>web-server</id>
    <name>Basic Web Server</name>
    <name xml:lang="as">à¦®à§Œà¦²à¦¿à¦• à§±à§‡à¦¬ à¦šà¦¾à§°à§à¦­à¦¾à§°</name>
    <name xml:lang="cs">ZÃ¡kladnÃ­ webovÃ½ server</name>
    <name xml:lang="de">Einfacher Webserver</name>
    <name xml:lang="de_CH">Einfacher Webserver</name>
    <name xml:lang="es">Servidor web bÃ¡sico</name>
    <name xml:lang="fr">Serveur web de base</name>
    <name xml:lang="gu">àª®à«‚àª³àª­à«‚àª¤ àªµà«‡àª¬ àª¸àª°à«àªµàª°</name>
    <name xml:lang="hi">à¤®à¥Œà¤²à¤¿à¤• à¤µà¥‡à¤¬ à¤¸à¤°à¥à¤µà¤°.</name>
    <name xml:lang="it">Server web di base</name>
    <name xml:lang="ja">ãƒ™ãƒ¼ã‚·ãƒƒã‚¯ Web ã‚µãƒ¼ãƒãƒ¼</name>
    <name xml:lang="kn">à²®à³‚à²²à²­à³‚à²¤ à²œà²¾à²² à²ªà³‚à²°à³ˆà²•à³†à²—à²£à²•</name>
    <name xml:lang="ko">ê¸°ë³¸ ì›¹ ì„œë²„</name>
    <name xml:lang="ml">à´…à´Ÿà´¿à´¸àµà´¥à´¾à´¨ à´µàµ†à´¬àµ à´¸à´°àµâ€à´µà´°àµâ€</name>
    <name xml:lang="mr">à¤®à¥‚à¤³ à¤µà¥‡à¤¬ à¤¸à¤°à¥à¤µà¥à¤¹à¤°</name>
    <name xml:lang="or">à¬®à­Œà¬³à¬¿à¬• à­±à­‡à¬¬ à¬¸à¬°à­à¬­à¬°</name>
    <name xml:lang="pa">à¨®à©à©±à¨¢à¨²à¨¾ à¨µà©ˆà©±à¨¬ à¨¸à¨°à¨µà¨°</name>
    <name xml:lang="pl">Podstawowy serwer WWW</name>
    <name xml:lang="pt">Servidor de Web BÃ¡sico</name>
    <name xml:lang="pt_BR">Servidor de Web BÃ¡sico</name>
    <name xml:lang="ru">Ð¡Ñ‚Ð°Ð½Ð´Ð°Ñ€Ñ‚Ð½Ñ‹Ð¹ Ð²ÐµÐ±-ÑÐµÑ€Ð²ÐµÑ€</name>
    <name xml:lang="ta">à®…à®Ÿà®¿à®ªà¯à®ªà®Ÿà¯ˆ à®µà®²à¯ˆ à®šà¯‡à®µà¯ˆà®¯à®•à®®à¯</name>
    <name xml:lang="te">à°ªà±à°°à°¾à°¥à°®à°¿à°• à°µà±†à°¬à± à°¸à±‡à°µà°¿à°•</name>
    <name xml:lang="uk">Ð‘Ð°Ð·Ð¾Ð²Ð¸Ð¹ Ð²ÐµÐ±ÑÐµÑ€Ð²ÐµÑ€</name>
    <name xml:lang="zh">åŸºæœ¬ç¶²ç«™ä¼ºæœå™¨</name>
    <name xml:lang="zh_CN">åŸºæœ¬ç½‘é¡µæœåŠ¡å™¨</name>
    <name xml:lang="zh_TW">åŸºæœ¬ç¶²ç«™ä¼ºæœå™¨</name>
    <description>These tools allow you to run a Web server on the system.</description>
    <description xml:lang="af">Hierdie nutsgoed stel jou in staat om 'n webbediener op die rekenaar te laat loop.</description>
    <description xml:lang="am">áŠ¥áŠá‹šáˆ… áˆ˜áˆ£áˆªá‹«á‹Žá‰½ á‹¨áˆ˜áˆ¨á‰¥ áˆ°áˆ­á‰ áˆ©áŠ• á‰ áˆ²áˆµá‰°áˆ™ áˆ‹á‹­ áˆˆáˆ›áˆµáŠ¬á‹µ á‹«áˆµá‰½áˆ‹áˆ‰á¢</description>
    <description xml:lang="ar">Ù‡Ø°Ù‡ Ø§Ù„Ø£Ø¯ÙˆØ§Øª ØªØªÙŠØ­ Ù„Ùƒ ØªØ´ØºÙŠÙ„ Ø®Ø§Ø¯Ù… ÙˆÙŠØ¨ Ø¹Ù„Ù‰ Ø§Ù„Ù†Ø¸Ø§Ù….</description>
    <description xml:lang="as">à¦à¦‡ à¦¸à¦à¦œà§à¦²à¦¿ à¦¸à¦®à§‚à¦¹à§‡ à¦†à¦ªà§‹à¦¨à¦¾à¦• à¦šà¦¿à¦¸à§à¦Ÿà§‡à¦®à¦¤ à§±à§‡à¦¬ à¦šà¦¾à§°à§à¦­à¦¾à§° à¦šà¦²à¦¾à¦¬'à¦²à§ˆ à¦¸à¦®à§à¦­à§± à¦•à§°à§‡à¥¤</description>
    <description xml:lang="bal">Ø§ÛŒ Ø§Ø¨Ø²Ø§Ø±Ø§Ù† Ø´Ù…Ø§ Ø±Ø§ Ø§Ø¬Ø§Ø²Øª Ø¯ÛŒÙ† Ú©Ù‡ ÛŒÚ© Ø³Ø±ÙˆØ± ÙˆØ¨ÛŒ ØªÙ‡ Ø³ÛŒØ³ØªÙ… Ø§Ø¬Ø±Ø§ÛŒ Ú©Ù†ÛŒØª.</description>
    <description xml:lang="be">Ð“ÑÑ‚Ñ‹Ñ ÑÑ€Ð¾Ð´ÐºÑ– Ð´Ð°Ð·Ð²Ð¾Ð»ÑÑŽÑ†ÑŒ Ð²Ñ‹ÐºÐ¾Ð½Ð²Ð°Ñ†ÑŒ Ð¿Ð°ÑÐ»ÑƒÐ¶Ð½Ñ–Ðº Ð¿Ð°Ð²ÑƒÑ†Ñ–Ð½ÑŒÐ½Ñ Ñž ÑÑ‹ÑÑ‚ÑÐ¼Ðµ.</description>
    <description xml:lang="bg">Ð¢ÐµÐ·Ð¸ Ð¸Ð½ÑÑ‚Ñ€ÑƒÐ¼ÐµÐ½Ñ‚Ð¸ Ð¿Ð¾Ð·Ð²Ð¾Ð»ÑÐ²Ð°Ñ‚ Ð¿Ð¾Ð»Ð·Ð²Ð°Ð½ÐµÑ‚Ð¾ Ð½Ð° ÑƒÐµÐ± ÑÑŠÑ€Ð²ÑŠÑ€ Ð² ÑÐ¸ÑÑ‚ÐµÐ¼Ð°Ñ‚Ð°.</description>
    <description xml:lang="bn">à¦à¦‡ à¦¸à¦°à¦žà§à¦œà¦¾à¦®à¦—à§à¦²à¦¿à¦° à¦¸à¦¾à¦¹à¦¾à¦¯à§à¦¯à§‡ à¦†à¦ªà¦¨à¦¿ à¦¸à¦¿à¦¸à§à¦Ÿà§‡à¦®à§‡à¦° à¦®à¦§à§à¦¯à§‡ à¦“à§Ÿà§‡à¦¬-à¦¸à¦¾à¦°à§à¦­à¦¾à¦° à¦šà¦¾à¦²à¦¾à¦¤à§‡ à¦ªà¦¾à¦°à¦¬à§‡à¦¨à¥¤</description>
    <description xml:lang="bs">Ovi vam alati omoguÄ‡uju pokretanje internetskog posluÅ¾itelja.</description>
    <description xml:lang="ca">Aquestes eines us permeten executar un servidor Web en el sistema.</description>
    <description xml:lang="cs">NÃ¡stroje pro provoz webovÃ©ho serveru.</description>
    <description xml:lang="cy">Mae'r erfynnau yma'n caniatÃ¡u i chi redeg gweinydd Gwe ar y system.</description>
    <description xml:lang="da">Disse vÃ¦rktÃ¸jer lader dig kÃ¸re en webserver pÃ¥ systemet.</description>
    <description xml:lang="de">Mit diesen Programmen kÃ¶nnen Sie einen Web-Server auf dem System betreiben.</description>
    <description xml:lang="de_CH">Mit diesen Programmen kÃ¶nnen Sie einen Web-Server auf dem System betreiben.</description>
    <description xml:lang="el">Î‘Ï…Ï„Î¬ Ï„Î± ÎµÏÎ³Î±Î»ÎµÎ¯Î± ÎµÏ€Î¹Ï„ÏÎ­Ï€Î¿Ï…Î½ Ï„Î· Î»ÎµÎ¹Ï„Î¿Ï…ÏÎ³Î¯Î± Î´Î¹Î±ÎºÎ¿Î¼Î¹ÏƒÏ„Î® Î™ÏƒÏ„Î¿Ï (Web) ÏƒÏ„Î¿ ÏƒÏÏƒÏ„Î·Î¼Î±.</description>
    <description xml:lang="en_GB">These tools allow you to run a web server on the system.</description>
    <description xml:lang="es">Estas herramientas le permiten ejecutar un servidor Web en el sistema.</description>
    <description xml:lang="et">Need vahendid vÃµimaldavad sul veebiserverit jooksutada.</description>
    <description xml:lang="fa">Ø§ÛŒÙ† Ø§Ø¨Ø²Ø§Ø±Ù‡Ø§ Ø¨Ù‡ Ø´Ù…Ø§ Ø§Ù…Ú©Ø§Ù† Ù…ÛŒâ€ŒØ¯Ù‡Ù†Ø¯ Ú©Ù‡ ÛŒÚ© Ú©Ø§Ø±Ú¯Ø²Ø§Ø± ÙˆØ¨ Ø±ÙˆÛŒ Ø³ÛŒØ³ØªÙ… Ø§Ø¬Ø±Ø§ Ú©Ù†ÛŒØ¯.</description>
    <description xml:lang="fa_IR">Ø§ÛŒÙ† Ø§Ø¨Ø²Ø§Ø±Ù‡Ø§ Ø¨Ù‡ Ø´Ù…Ø§ Ø§Ù…Ú©Ø§Ù† Ù…ÛŒâ€ŒØ¯Ù‡Ù†Ø¯ Ú©Ù‡ ÛŒÚ© Ú©Ø§Ø±Ú¯Ø²Ø§Ø± ÙˆØ¨ Ø±ÙˆÛŒ Ø³ÛŒØ³ØªÙ… Ø§Ø¬Ø±Ø§ Ú©Ù†ÛŒØ¯.</description>
    <description xml:lang="fi">NÃ¤illÃ¤ tyÃ¶kaluilla jÃ¤rjestelmÃ¤ssÃ¤ voidaan ajaa WWW-palvelinta.</description>
    <description xml:lang="fr">Ces outils vous permettent d'exÃ©cuter un serveur Web sur le systÃ¨me.</description>
    <description xml:lang="gu">àª† àª¸àª¾àª§àª¨à«‹ àª¤àª®àª¨à«‡ àª¸àª¿àª¸à«àªŸàª® àªªàª° àªµà«‡àª¬ àª¸àª°à«àªµàª°à«‹ àªšàª²àª¾àªµàªµàª¾àª¨à«€ àªªàª°àªµàª¾àª¨àª—à«€ àª†àªªà«‡ àª›à«‡.</description>
    <description xml:lang="he">×›×œ×™× ××œ×• ×ž××¤×©×¨×™× ×”×¨×¦×ª ×©×¨×ª Web ×¢×œ ×’×‘×™ ×”×ž×¢×¨×›×ª.</description>
    <description xml:lang="hi">à¤‡à¤¨ à¤‰à¤ªà¤•à¤°à¤£à¥‹à¤‚ à¤¸à¥‡ à¤¸à¤¿à¤¸à¥à¤Ÿà¤® à¤ªà¤° à¤†à¤ª à¤µà¥‡à¤¬ à¤¸à¤°à¥à¤µà¤° à¤šà¤²à¤¾ à¤¸à¤•à¤¤à¥‡ à¤¹à¥ˆà¤‚.</description>
    <description xml:lang="hr">Ovi vam alati omoguÄ‡uju pokretanje internetskog posluÅ¾itelja.</description>
    <description xml:lang="hu">Ezek az eszkÃ¶zÃ¶k webkiszolgÃ¡lÃ³ lÃ©trehozÃ¡sÃ¡t teszik lehetÅ‘vÃ©.</description>
    <description xml:lang="ia">Iste utensiles permitte de exequer un servitor web sur le systema.</description>
    <description xml:lang="id">Alat bantu ini membolehkan anda untuk menjalankan WebServer dalam sistem.</description>
    <description xml:lang="is">Ãžessi tÃ³l gera Ã¾Ã©r kleyft aÃ° keyra vefÃ¾jÃ³n Ã¡ vÃ©linni.</description>
    <description xml:lang="it">Questi tool consentono di eseguire un Web server sul sistema.</description>
    <description xml:lang="ja">ã“ã‚Œã‚‰ã®ãƒ„ãƒ¼ãƒ«ã‚’ä½¿ç”¨ã™ã‚‹ã¨ã€ã‚·ã‚¹ãƒ†ãƒ ã§ Web ã‚µãƒ¼ãƒãƒ¼ã‚’ç¨¼å‹•ã§ãã¾ã™ã€‚</description>
    <description xml:lang="kn">à²ˆ à²‰à²ªà²•à²°à²£à²—à²³à³ à²¨à²¿à²®à³à²® à²—à²£à²•à²¦à²²à³à²²à²¿ à²œà²¾à²² à²ªà³‚à²°à³ˆà²•à³†à²—à²£à²•à²µà³Šà²‚à²¦à²¨à³à²¨à³ à²šà²²à²¾à²¯à²¿à²¸à²²à³ à²…à²¨à³à²µà³ à²®à²¾à²¡à²¿à²•à³Šà²¡à³à²¤à³à²¤à²µà³†.</description>
    <description xml:lang="ko">ì´ íˆ´ì„ ì‚¬ìš©í•˜ì—¬ ì‹œìŠ¤í…œ ìƒì—ì„œ ì›¹ì„œë²„ë¥¼ ìš´ì˜í•  ìˆ˜ ìžˆìŠµë‹ˆë‹¤.</description>
    <description xml:lang="lv">Å ie rÄ«ki Ä¼auj datoru izmantot kÄ interneta serveri.</description>
    <description xml:lang="mai">à¤ˆ à¤…à¤“à¤œà¤¾à¤°à¤¸à¤­à¤¸à¤ à¤¸à¤¿à¤¸à¥à¤Ÿà¤® à¤ªà¤° à¤…à¤¹à¤¾à¤ à¤µà¥‡à¤¬ à¤¸à¤°à¥à¤µà¤° à¤šà¤²à¤¾à¤ à¤¸à¤•à¥ˆà¤¤ à¤›à¥€.</description>
    <description xml:lang="mk">ÐžÐ²Ð¸Ðµ Ð°Ð»Ð°Ñ‚ÐºÐ¸ Ð’Ð¸ Ð¾Ð²Ð¾Ð·Ð¼Ð¾Ð¶ÑƒÐ²Ð°Ð°Ñ‚ Ð´Ð° ÐºÐ¾Ñ€Ð¸ÑÑ‚Ð¸Ñ‚Ðµ Ð²ÐµÐ± ÑÐµÑ€Ð²ÐµÑ€ Ð½Ð° Ð’Ð°ÑˆÐ¸Ð¾Ñ‚ ÑÐ¸ÑÑ‚ÐµÐ¼.</description>
    <description xml:lang="ml">à´•à´‚à´ªàµà´¯àµ‚à´Ÿàµà´Ÿà´±à´¿à´²àµâ€ à´µàµ†à´¬àµ à´¸à´°àµâ€à´µà´°àµâ€ à´ªàµà´°à´µà´°àµâ€à´¤àµà´¤à´¿à´ªàµà´ªà´¿à´¯àµà´•àµà´•àµà´¨àµà´¨à´¤à´¿à´¨à´¾à´¯à´¿ à´¨à´¿à´™àµà´™à´³àµ† à´ˆ à´‰à´ªà´•à´°à´£à´™àµà´™à´³àµâ€ à´¸à´¹à´¾à´¯à´¿à´•àµà´•àµà´¨àµà´¨àµ.</description>
    <description xml:lang="mr">à¤¹à¥€ à¤‰à¤ªà¤•à¤°à¤£à¥‡ à¤¤à¥à¤®à¥à¤¹à¤¾à¤¸ à¤ªà¥à¤°à¤£à¤¾à¤²à¥€à¤µà¤° à¤µà¥‡à¤¬(à¤œà¤¾à¤²) à¤¸à¤°à¥à¤µà¥à¤¹à¤° à¤šà¤¾à¤²à¤µà¥‚ à¤¦à¥‡à¤¤à¤¾à¤¤.</description>
    <description xml:lang="ms">Alatan ini membolehkan anda melaksanakan pelayan Web pada sistem.</description>
    <description xml:lang="nb">Disse verktÃ¸yene lar deg kjÃ¸re en web-tjener pÃ¥ systemet.</description>
    <description xml:lang="ne">à¤¯à¥€ à¤‰à¤ªà¤•à¤°à¤£à¤²à¥‡ à¤¤à¤ªà¤¾à¤ˆà¤à¤²à¤¾à¤ˆ à¤ªà¥à¤°à¤£à¤¾à¤²à¥€à¤®à¤¾ à¤µà¥‡à¤¬ à¤¸à¤°à¥à¤­à¤° à¤šà¤²à¤¾à¤‰à¤¨ à¤…à¤¨à¥à¤®à¤¤à¤¿ à¤¦à¤¿à¤¨à¥à¤›à¤¨à¥ à¥¤</description>
    <description xml:lang="nl">Met deze hulpmiddelen kunt u een webserver op het systeem draaien.</description>
    <description xml:lang="no">Disse verktÃ¸yene lar deg kjÃ¸re en web-tjener pÃ¥ systemet.</description>
    <description xml:lang="nso">DidiriÅ¡wa tÅ¡e di go dumelela go diriÅ¡a seabi sa Wepe tshepediÅ¡ong.</description>
    <description xml:lang="or">à¬à¬¹à¬¿ à¬‰à¬ªà¬•à¬°à¬£ à¬—à­à¬¡à¬¿à¬• à¬†à¬ªà¬£à¬™à­à¬• à¬¤à¬¨à­à¬¤à­à¬° à¬°à­‡ à¬—à­‹à¬Ÿà¬¿à¬ à­±à­‡à¬¬ à¬¸à­‡à¬¬à¬• à¬šà¬³à¬¾à¬‡à¬¬à¬¾ à¬ªà¬¾à¬‡à¬ à¬…à¬¨à­à¬®à¬¤à¬¿ à¬ªà­à¬°à¬¦à¬¾à¬¨ à¬•à¬°à¬¿à¬¥à¬¾à¬†à¬¨à­à¬¤à¬¿à¥¤</description>
    <description xml:lang="pa">à¨‡à¨¹ à¨¸à©°à¨¦ à¨¤à©à¨¹à¨¾à¨¨à©‚à©° à¨¸à¨¿à¨¸à¨Ÿà¨® à¨¤à©‡ à¨µà©ˆà©±à¨¬ à¨¸à¨°à¨µà¨° à¨šà¨²à¨¾à¨‰à¨£ à¨¦à©€ à¨ªà¨°à¨µà¨¾à¨¨à¨—à©€ à¨¦à¨¿à©°à¨¦à©‡ à¨¹à¨¨à¥¤</description>
    <description xml:lang="pl">Te narzÄ™dzia umoÅ¼liwiajÄ… uruchomienie serwera WWW.</description>
    <description xml:lang="pt">Estas ferramentas permitem-lhe correr um servidor Web no seu computador.</description>
    <description xml:lang="pt_BR">Estas ferramentas permitem-lhe correr um servidor Web no seu computador.</description>
    <description xml:lang="ro">Aceste unelte vÄƒ permit sÄƒ rulaÅ£i un server web pe sistem.</description>
    <description xml:lang="ru">Ð­Ñ‚Ð¸ ÑÑ€ÐµÐ´ÑÑ‚Ð²Ð° Ð¿Ð¾Ð·Ð²Ð¾Ð»ÑÑŽÑ‚ Ð¸ÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÑŒ ÑÐ¸ÑÑ‚ÐµÐ¼Ñƒ ÐºÐ°Ðº Ð²ÐµÐ±-ÑÐµÑ€Ð²ÐµÑ€</description>
    <description xml:lang="si">à·€à·’à¶ºà·”à¶«à·” à·ƒà·šà·€à· à¶¯à·à¶ºà¶šà¶ºà¶šà·Š à¶´à¶¯à·Šà¶°à¶­à·’à¶º à¶­à·”à¶½ à¶šà·Šâ€à¶»à·’à¶ºà·à¶­à·Šà¶¸à¶š à¶šà·’à¶»à·“à¶¸ à·ƒà¶³à·„à· à¶¸à·™à¶¸ à¶¸à·™à·€à¶½à¶¸à·Š à¶¸à¶Ÿà·’à¶±à·Š à¶‰à¶© à¶½à·à¶¶à·š.</description>
    <description xml:lang="sk">Tieto nÃ¡stroje vÃ¡m umoÅ¾nia spustiÅ¥ na poÄÃ­taÄÃ­ WWW server</description>
    <description xml:lang="sl">Ta orodja vam omogoÄajo, da v sistemu poganjate spletni streÅ¾nik.</description>
    <description xml:lang="sq">KÃ«to mjete ju lejojnÃ« tÃ« xhironi nÃ« sistem njÃ« shÃ«rbyes Web.</description>
    <description xml:lang="sr">ÐžÐ²Ðµ Ð°Ð»Ð°Ñ‚ÐºÐµ Ð¾Ð¼Ð¾Ð³ÑƒÑ›Ð°Ð²Ð°Ñ˜Ñƒ Ð¿Ð¾ÑÑ‚Ð°Ð²Ñ™Ð°ÑšÐµ Ð’ÐµÐ± ÑÐµÑ€Ð²ÐµÑ€Ð° Ð½Ð° ÑÐ¸ÑÑ‚ÐµÐ¼Ñƒ.</description>
    <description xml:lang="sr@Latn">Ove alatke omoguÄ‡avaju postavljanje Veb servera na sistemu.</description>
    <description xml:lang="sr@latin">Ove alatke omoguÄ‡avaju postavljanje Veb servera na sistemu.</description>
    <description xml:lang="sv">Dessa verktyg lÃ¥ter dig kÃ¶ra en webbserver pÃ¥ systemet.</description>
    <description xml:lang="ta">à®‡à®¨à¯à®¤ à®•à®°à¯à®µà®¿à®•à®³à¯ à®¨à¯€à®™à¯à®•à®³à¯ à®•à®£à®¿à®©à®¿à®¯à®¿à®²à¯ à®‡à®£à¯ˆà®¯ à®šà¯‡à®µà¯ˆà®¯à®•à®¤à¯à®¤à¯ˆ à®‡à®¯à®•à¯à®• à®‰à®¤à®µà¯à®•à®¿à®±à®¤à¯.</description>
    <description xml:lang="te">à°ˆ à°¸à°¾à°§à°¨à°®à±à°²à± à°•à°‚à°ªà±à°¯à±‚à°Ÿà°°à±à°²à±‹ Web à°¸à°°à±à°µà°°à±à°¨à± à°µà°¾à°¡à°Ÿà°¾à°¨à°¿à°•à°¿ à°®à°¿à°®à±à°®à°²à±à°¨à°¿ à°…à°¨à±à°®à°¤à°¿à°¸à±à°¤à°¾à°¯à°¿.</description>
    <description xml:lang="tg">Ð˜Ð½ Ð°ÑÐ±Ð¾Ð±Ò³Ð¾ Ð¸Ò·Ð¾Ð·Ð°Ñ‚ Ð¼ÐµÐ´Ð¸Ò³Ð°Ð½Ð´, Ñ…Ð¸Ð´Ð¼Ð°Ñ‚Ð³Ð¾Ò³Ð¸ ÑÐ°Ò³Ð¸Ñ„Ð°Ò³Ð¾Ð¸ Ð˜Ð½Ñ‚ÐµÑ€Ð½ÐµÑ‚ Ð´Ð°Ñ€ ÑÐ¸ÑÑ‚ÐµÐ¼Ð° Ð¸Ò·Ñ€Ð¾ ÐºÑƒÐ½ÐµÐ´.</description>
    <description xml:lang="th">à¹€à¸„à¸£à¸·à¹ˆà¸­à¸‡à¸¡à¸·à¸­à¹€à¸«à¸¥à¹ˆà¸²à¸™à¸µà¹‰à¸—à¸³à¹ƒà¸«à¹‰à¸„à¸¸à¸“à¸£à¸±à¸™à¸•à¸±à¸§à¹ƒà¸«à¹‰à¸šà¸£à¸´à¸à¸²à¸£à¹€à¸§à¹‡à¸šà¸šà¸™à¸£à¸°à¸šà¸šà¸™à¸µà¹‰à¹„à¸”à¹‰</description>
    <description xml:lang="tr">Bu araÃ§lar sisteminizde bir AÄŸ sunucusu Ã§alÄ±ÅŸtÄ±rmanÄ±zÄ± mÃ¼mkÃ¼n kÄ±lar.</description>
    <description xml:lang="uk">Ð¦Ñ– Ð·Ð°ÑÐ¾Ð±Ð¸ Ð´Ð¾Ð·Ð²Ð¾Ð»ÑÑŽÑ‚ÑŒ Ð²Ð¸ÐºÐ¾Ñ€Ð¸ÑÑ‚Ð¾Ð²ÑƒÐ²Ð°Ñ‚Ð¸ ÑÐ¸ÑÑ‚ÐµÐ¼Ñƒ ÑÐº Ð²ÐµÐ±-ÑÐµÑ€Ð²ÐµÑ€.</description>
    <description xml:lang="ur">ÛŒÛ Ø§Ù„Ø§Øª  Ø§Ù¾ Ú©Ùˆ Ø§Ø¬Ø§Ø²Øª Ø¯ Û’  Ú¯Ø§ ÙˆÛŒØ¨ Ø³Ø±ÙˆØ± Ú©Ùˆ Ù†Ø¸Ø§Ù… Ù¾Ø± Ú†Ù„Ù†Û’ Ú©Û’ Ù„Û’</description>
    <description xml:lang="vi">Nhá»¯ng cÃ´ng cá»¥ nÃ y cho phÃ©p báº¡n cháº¡y Server Web trÃªn há»‡ thá»‘ng.</description>
    <description xml:lang="zh">é€™äº›å·¥å…·è®“æ‚¨å¯ä»¥åœ¨ç³»çµ±ä¸ŠåŸ·è¡Œç¶²é ä¼ºæœå™¨ã€‚</description>
    <description xml:lang="zh_CN">è¿™äº›å·¥å…·å…è®¸æ‚¨åœ¨ç³»ç»Ÿä¸Šè¿è¡Œä¸‡ç»´ç½‘æœåŠ¡å™¨ã€‚</description>
    <description xml:lang="zh_TW">é€™äº›å·¥å…·è®“æ‚¨å¯ä»¥åœ¨ç³»çµ±ä¸ŠåŸ·è¡Œç¶²é ä¼ºæœå™¨ã€‚</description>
    <description xml:lang="zu">Lama thuluzi akuvumela ukusebenzisa umlekeleli we-web kwisistimu.</description>
    <default>true</default>
    <uservisible>false</uservisible>
    <packagelist>
      <packagereq type="mandatory">httpd</packagereq>
      <packagereq type="default">httpd-manual</packagereq>
      <packagereq type="default">mod_fcgid</packagereq>
      <packagereq type="default">mod_ssl</packagereq>
      <packagereq type="optional">libmemcached</packagereq>
      <packagereq type="optional">memcached</packagereq>
      <packagereq type="optional">mod_auth_gssapi</packagereq>
      <packagereq type="optional">mod_security</packagereq>
      <packagereq type="optional">mod_security-mlogc</packagereq>
      <packagereq type="optional">mod_security_crs</packagereq>
    </packagelist>
  </group>
  <group>
    <id>workstation-product</id>
    <name>Workstation product core</name>
    <name xml:lang="de">Workstation-Produktkern</name>
    <name xml:lang="es">NÃºcleo de producto de la estaciÃ³n de trabajo</name>
    <name xml:lang="fr">Composants de base Station de travail</name>
    <name xml:lang="it">Nucleo di prodotto della stazione di lavoro</name>
    <name xml:lang="ja">ãƒ¯ãƒ¼ã‚¯ã‚¹ãƒ†ãƒ¼ã‚·ãƒ§ãƒ³è£½å“ã‚³ã‚¢</name>
    <name xml:lang="ko">ì›Œí¬ìŠ¤í…Œì´ì…˜ ì œí’ˆ ì½”ì–´ </name>
    <name xml:lang="pt">NÃºcleo do produto da estaÃ§Ã£o de trabalho</name>
    <name xml:lang="pt_BR">NÃºcleo do produto da estaÃ§Ã£o de trabalho</name>
    <name xml:lang="ru">Ð¯Ð´Ñ€Ð¾ Ð¿Ñ€Ð¾Ð´ÑƒÐºÑ‚Ð° Ñ€Ð°Ð±Ð¾Ñ‡ÐµÐ¹ ÑÑ‚Ð°Ð½Ñ†Ð¸Ð¸</name>
    <name xml:lang="zh_CN">å·¥ä½œç«™äº§å“æ ¸å¿ƒ</name>
    <name xml:lang="zh_TW">å·¥ä½œç«™ç”¢å“æ ¸å¿ƒ</name>
    <description>Packages mandatory for the workstation product.</description>
    <description xml:lang="de">FÃ¼r das Workstation-Produkt sind Pakete obligatorisch.</description>
    <description xml:lang="es">Los paquetes son obligatorios para el producto de la estaciÃ³n de trabajo.</description>
    <description xml:lang="fr">Les packages obligatoires pour le produit Station de travail.</description>
    <description xml:lang="it">Pacchetti obbligatori per il prodotto per la postazione di lavoro.</description>
    <description xml:lang="ja">ãƒ¯ãƒ¼ã‚¯ã‚¹ãƒ†ãƒ¼ã‚·ãƒ§ãƒ³è£½å“ã«å¿…é ˆã®ãƒ‘ãƒƒã‚±ãƒ¼ã‚¸ã§ã™ã€‚</description>
    <description xml:lang="ko">ì›Œí¬ìŠ¤í…Œì´ì…˜ ì œí’ˆì— ëŒ€í•œ í•„ìˆ˜ íŒ¨í‚¤ì§€ìž…ë‹ˆë‹¤. </description>
    <description xml:lang="pt_BR">Pacotes obrigatÃ³rios para o produto estaÃ§Ã£o de trabalho.</description>
    <description xml:lang="ru">Ð£Ð¿Ð°ÐºÐ¾Ð²ÐºÐ¸, Ð¾Ð±ÑÐ·Ð°Ñ‚ÐµÐ»ÑŒÐ½Ñ‹Ðµ Ð´Ð»Ñ Ð¸ÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ Ð½Ð° Ñ€Ð°Ð±Ð¾Ñ‡ÐµÐ¹ ÑÑ‚Ð°Ð½Ñ†Ð¸Ð¸.</description>
    <description xml:lang="zh_CN">å·¥ä½œç«™äº§å“å¿…éœ€çš„è½¯ä»¶åŒ…</description>
    <description xml:lang="zh_TW">å·¥ä½œç«™ç”¢å“å¿…éœ€çš„åŒ…ã€‚</description>
    <default>true</default>
    <uservisible>false</uservisible>
    <packagelist>
      <packagereq type="mandatory">adwaita-qt</packagereq>
      <packagereq type="mandatory">bind-utils</packagereq>
      <packagereq type="mandatory">evolution</packagereq>
      <packagereq type="mandatory">evolution-ews</packagereq>
      <packagereq type="mandatory">evolution-help</packagereq>
      <packagereq type="mandatory">git</packagereq>
      <packagereq type="mandatory">google-noto-emoji-fonts</packagereq>
      <packagereq type="mandatory">hunspell</packagereq>
      <packagereq type="mandatory">ibus-gtk2</packagereq>
      <packagereq type="mandatory">ibus-gtk3</packagereq>
      <packagereq type="mandatory">ibus-hangul</packagereq>
      <packagereq type="mandatory">ibus-kkc</packagereq>
      <packagereq type="mandatory">ibus-libpinyin</packagereq>
      <packagereq type="mandatory">ibus-libzhuyin</packagereq>
      <packagereq type="mandatory">ibus-m17n</packagereq>
      <packagereq type="mandatory">ibus-typing-booster</packagereq>
      <packagereq type="mandatory">nmap-ncat</packagereq>
      <packagereq type="mandatory">pinentry-gnome3</packagereq>
      <packagereq type="mandatory">pinfo</packagereq>
      <packagereq type="mandatory">plymouth</packagereq>
      <packagereq type="mandatory">qgnomeplatform</packagereq>
      <packagereq type="mandatory">qt5-qtbase</packagereq>
      <packagereq type="mandatory">qt5-qtbase-gui</packagereq>
      <packagereq type="mandatory">qt5-qtdeclarative</packagereq>
      <packagereq type="mandatory">qt5-qtxmlpatterns</packagereq>
      <packagereq type="mandatory">rhythmbox</packagereq>
      <packagereq type="mandatory">setroubleshoot</packagereq>
      <packagereq type="mandatory">telnet</packagereq>
      <packagereq type="mandatory">xorg-x11-drv-libinput</packagereq>
    </packagelist>
  </group>
  <category>
    <id>development</id>
    <name>Development</name>
    <name xml:lang="af">Ontwikkeling</name>
    <name xml:lang="am">áŠ¥á‹µáŒˆá‰µ</name>
    <name xml:lang="ar">ØªØ·ÙˆÙŠØ±</name>
    <name xml:lang="as">à¦‰à¦¨à§à¦¨à§Ÿà¦¨</name>
    <name xml:lang="bal">Ù¾ÛŒØ´ Ø±ÙˆÚ¯</name>
    <name xml:lang="be">Ð Ð°ÑÐ¿Ñ€Ð°Ñ†Ð¾ÑžÐºÐ°</name>
    <name xml:lang="bg">Ð Ð°Ð·Ñ€Ð°Ð±Ð¾Ñ‚ÐºÐ°</name>
    <name xml:lang="bn">à¦¸à¦«à§à¦Ÿà¦“à§Ÿà§à¦¯à¦¾à¦° à¦¨à¦¿à¦°à§à¦®à¦¾à¦£</name>
    <name xml:lang="bs">Razvoj</name>
    <name xml:lang="ca">Desenvolupament</name>
    <name xml:lang="cs">VÃ½voj</name>
    <name xml:lang="cy">Datblygiad</name>
    <name xml:lang="da">Udvikling</name>
    <name xml:lang="de">Softwareentwicklung</name>
    <name xml:lang="de_CH">Softwareentwicklung</name>
    <name xml:lang="el">Î‘Î½Î¬Ï€Ï„Ï…Î¾Î· Î»Î¿Î³Î¹ÏƒÎ¼Î¹ÎºÎ¿Ï</name>
    <name xml:lang="en_GB">Development</name>
    <name xml:lang="es">Desarrollo</name>
    <name xml:lang="et">Arendus</name>
    <name xml:lang="eu">Garapena</name>
    <name xml:lang="fa">Ø¨Ø±Ù†Ø§Ù…Ù‡â€ŒØ³Ø§Ø²ÛŒ</name>
    <name xml:lang="fa_IR">Ø¨Ø±Ù†Ø§Ù…Ù‡â€ŒØ³Ø§Ø²ÛŒ</name>
    <name xml:lang="fi">Ohjelmistokehitys</name>
    <name xml:lang="fr">DÃ©veloppement</name>
    <name xml:lang="gl">Desenvolvemento</name>
    <name xml:lang="gu">àªµàª¿àª•àª¾àª¸</name>
    <name xml:lang="he">×¤×™×ª×•×—</name>
    <name xml:lang="hi">à¤µà¤¿à¤•à¤¾à¤¸</name>
    <name xml:lang="hr">Razvoj</name>
    <name xml:lang="hu">FejlesztÅ‘eszkÃ¶zÃ¶k</name>
    <name xml:lang="hy">Ô¾Ö€Õ¡Õ£Ö€Õ¡Õ¾Õ¸Ö€Õ¸Ö‚Õ´</name>
    <name xml:lang="ia">Disveloppamento</name>
    <name xml:lang="id">Pengembangan</name>
    <name xml:lang="ilo">Panagbukel</name>
    <name xml:lang="is">ÃžrÃ³un</name>
    <name xml:lang="it">Sviluppo</name>
    <name xml:lang="ja">é–‹ç™º</name>
    <name xml:lang="ka">áƒžáƒ áƒ˜áƒáƒ’áƒ áƒáƒ›áƒ˜áƒ áƒ”áƒ‘áƒ</name>
    <name xml:lang="kn">à²µà²¿à²•à²¾à²¸à²¨</name>
    <name xml:lang="ko">ê°œë°œ</name>
    <name xml:lang="lv">ProgrammÄ“Å¡ana</name>
    <name xml:lang="mai">à¤µà¤¿à¤•à¤¾à¤¸</name>
    <name xml:lang="mk">Ð Ð°Ð·Ð²Ð¾Ñ˜</name>
    <name xml:lang="ml">à´¡àµ†à´µà´²à´ªàµà´ªàµà´®àµ†à´¨àµâ€à´±àµ</name>
    <name xml:lang="mr">à¤µà¤¿à¤•à¤¾à¤¸</name>
    <name xml:lang="ms">Pembangunan</name>
    <name xml:lang="nb">UtviklingsverktÃ¸y</name>
    <name xml:lang="ne">à¤µà¤¿à¤•à¤¾à¤¸</name>
    <name xml:lang="nl">Ontwikkeling</name>
    <name xml:lang="no">UtviklingsverktÃ¸y</name>
    <name xml:lang="nso">TÅ¡wetÅ¡opele</name>
    <name xml:lang="or">à¬¬à¬¿à¬•à¬¾à¬¶</name>
    <name xml:lang="pa">à¨µà¨¿à¨•à¨¾à¨¸</name>
    <name xml:lang="pl">Programowanie</name>
    <name xml:lang="pt">Desenvolvimento</name>
    <name xml:lang="pt_BR">Desenvolvimento</name>
    <name xml:lang="ro">Dezvoltare</name>
    <name xml:lang="ru">ÐŸÑ€Ð¾Ð³Ñ€Ð°Ð¼Ð¼Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ðµ</name>
    <name xml:lang="si">à¶´à·Šâ€à¶»à·€à¶»à·Šà¶°à¶±à¶º</name>
    <name xml:lang="sk">VÃ½voj</name>
    <name xml:lang="sl">Razvoj</name>
    <name xml:lang="sq">Zhvillim</name>
    <name xml:lang="sr">Ð Ð°Ð·Ð²Ð¾Ñ˜</name>
    <name xml:lang="sr@Latn">Razvoj</name>
    <name xml:lang="sr@latin">Razvoj</name>
    <name xml:lang="sv">Utveckling</name>
    <name xml:lang="ta">à®‰à®°à¯à®µà®¾à®•à¯à®•à®®à¯</name>
    <name xml:lang="te">à°…à°­à°¿à°µà±ƒà°¦à±à°§à°¿</name>
    <name xml:lang="tg">Ð‘Ð°Ñ€Ð½Ð¾Ð¼Ð°Ð½Ð°Ð²Ð¸ÑÓ£</name>
    <name xml:lang="th">à¸à¸²à¸£à¸žà¸±à¸’à¸™à¸²à¸‹à¸­à¸Ÿà¸•à¹Œà¹à¸§à¸£à¹Œ</name>
    <name xml:lang="tr">GeliÅŸtirme</name>
    <name xml:lang="uk">ÐŸÑ€Ð¾Ð³Ñ€Ð°Ð¼ÑƒÐ²Ð°Ð½Ð½Ñ</name>
    <name xml:lang="ur">ØªÙ…ÛŒØ±Ø§Øª</name>
    <name xml:lang="vi">PhÃ¡t triá»ƒn</name>
    <name xml:lang="zh">ç¨‹å¼é–‹ç™¼</name>
    <name xml:lang="zh_CN">å¼€å‘</name>
    <name xml:lang="zh_TW">ç¨‹å¼é–‹ç™¼</name>
    <name xml:lang="zu">Intuthuko</name>
    <description>Packages which provide functionality for developing and building applications.</description>
    <description xml:lang="ar">ØªÙ‚Ø¯Ù… Ø§Ù„Ø­Ø²Ù… Ø§Ù…ÙƒØ§Ù†ÙŠØ§Øª ØªØ·ÙˆÙŠØ± Ùˆ Ø¨Ù†Ø§Ø¡ ØªØ·Ø¨ÙŠÙ‚Ø§Øª.</description>
    <description xml:lang="as">à¦à¦ªà§à¦²à¦¿à¦•à§‡à¦šà¦¨à¦¸à¦®à§‚à¦¹ à¦¬à¦¿à¦•à¦¾à¦¶à¦¿à¦¤ à¦†à§°à§ à¦¨à¦¿à§°à§à¦®à¦¾à¦£ à¦•à§°à¦¿à¦¬'à¦²à§ˆ à¦¯à¦¿ à¦ªà§‡à¦•à§‡à¦‡à¦œà§‡ à¦•à¦¾à§°à§à¦¯à§à¦¯à¦•à§°à§€à¦¤à¦¾ à¦ªà§à§°à¦¦à¦¾à¦¨ à¦•à§°à§‡à¥¤</description>
    <description xml:lang="bal">Ø¨Ø³ØªÚ¯Ø§Ù†ÛŒ Ú©Ù‡ Ù¾Ù‡ Ù¾ÛŒØ´Ø±ÙˆÚ¯ Ùˆ Ø´Ø±Ú©Ù†Ú¯ Ú©Ø§Ø±Ù…Ø±Ø²ÛŒ Ø¹Ù…Ù„ Ø¢Ø±Ù†Øª.</description>
    <description xml:lang="bg">ÐŸÐ°ÐºÐµÑ‚Ð¸ Ð¿Ñ€ÐµÐ´Ð¾ÑÑ‚Ð°Ð²ÑÑ‰Ð¸ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ð¾Ð½Ð°Ð»Ð½Ð¾ÑÑ‚ Ð½ÐµÐ¾Ð±Ñ…Ð¾Ð´Ð¸Ð¼Ð° Ð·Ð° Ñ€Ð°Ð·Ñ€Ð°Ð±Ð¾Ñ‚ÐºÐ°Ñ‚Ð° Ð¸ ÑÑŠÐ·Ð´Ð°Ð²Ð°Ð½ÐµÑ‚Ð¾ Ð½Ð° Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ.</description>
    <description xml:lang="bn">à¦…à§à¦¯à¦¾à¦ªà§à¦²à¦¿à¦•à§‡à¦¶à¦¨ à¦¡à¦¿à¦­à§‡à¦²à¦ªà¦®à§‡à¦¨à§à¦Ÿ à¦“ à¦¬à¦¿à¦²à§à¦¡ à¦•à¦°à¦¤à§‡ à¦¸à¦¹à¦¾à§Ÿà¦• à¦ªà§à¦¯à¦¾à¦•à§‡à¦œà¥¤</description>
    <description xml:lang="bs">Paketi koji pruÅ¾aju funkcionalnosti za razvoj i izgradnju aplikacija</description>
    <description xml:lang="ca">Paquets que proporcionen funcionalitats per a desenvolupar i muntar aplicacions.</description>
    <description xml:lang="cs">BalÃ­Äky poskytujÃ­cÃ­ podporu pro vÃ½voj a kompilaci aplikacÃ­.</description>
    <description xml:lang="da">Pakker som giver funktionalitet for udvikling og bygning af programmer.</description>
    <description xml:lang="de">Pakete, die FunktionalitÃ¤t fÃ¼r die Entwicklung und die Erstellung von Anwendungen bieten.</description>
    <description xml:lang="de_CH">Pakete, die FunktionalitÃ¤t fÃ¼r die Entwicklung und die Erstellung von Anwendungen bieten.</description>
    <description xml:lang="el">Î Î±ÎºÎ­Ï„Î± Ï„Î± Î¿Ï€Î¿Î¯Î± Ï€ÏÎ¿ÏƒÏ†Î­ÏÎ¿Ï…Î½ Î»ÎµÎ¹Ï„Î¿Ï…ÏÎ³Î¹ÎºÏŒÏ„Î·Ï„Î± Î³Î¹Î± Î±Î½Î¬Ï€Ï„Ï…Î¾Î· ÎºÎ±Î¹ Ï‡Ï„Î¯ÏƒÎ¹Î¼Î¿ ÎµÏ†Î±ÏÎ¼Î¿Î³ÏŽÎ½.</description>
    <description xml:lang="en_GB">Packages which provide functionality for developing and building applications.</description>
    <description xml:lang="es">Paquetes que proveen la funcionalidad para desarrollar y construir aplicaciones.</description>
    <description xml:lang="et">Rakenduste arendamiseks ja kompileerimiseks vajalik funktsionaalsus.</description>
    <description xml:lang="fi">Paketit, jotka tarjoavat tuen sovellusten kehittÃ¤miselle ja kÃ¤Ã¤ntÃ¤miselle.</description>
    <description xml:lang="fr">Packages qui offrent des fonctions de dÃ©veloppement et de crÃ©ation d'applications.</description>
    <description xml:lang="gu">àªªà«‡àª•à«‡àªœà«‹ àª•à«‡ àªœà«‡ àª•àª¾àª°à«àª¯àª•à«àª°àª®à«‹àª¨àª¾ àªµàª¿àª•àª¾àª¸ àª…àª¨à«‡ àª¬à«€àª²à«àª¡à«€àª‚àª— àª®àª¾àªŸà«‡àª¨àª¾ àªµàª¿àª§à«‡àª¯ àªªà«‚àª°àª¾ àªªàª¾àª¡à«‡ àª›à«‡.</description>
    <description xml:lang="he">×—×‘×™×œ×•×ª ×”×ž××¤×©×¨×•×ª ×¤×™×ª×•×— ×•×‘× ×™×™×ª ×ª×•×›× ×”.</description>
    <description xml:lang="hi">à¤¸à¤‚à¤•à¥à¤² à¤œà¥‹ à¤…à¤¨à¥à¤ªà¥à¤°à¤¯à¥‹à¤— à¤•à¥‡ à¤µà¤¿à¤•à¤¾à¤¸ à¤”à¤° à¤¨à¤¿à¤°à¥à¤®à¤¾à¤£ à¤•à¥‡ à¤²à¤¿à¤¯à¥‡ à¤ªà¥à¤°à¤•à¤¾à¤°à¥à¤¯à¤¾à¤¤à¥à¤®à¤•à¤¤à¤¾ à¤¦à¥‡à¤¤à¥‡ à¤¹à¥ˆà¤‚.</description>
    <description xml:lang="hr">Paketi koji pruÅ¾aju funkcionalnosti za razvoj i izgradnju aplikacija</description>
    <description xml:lang="hu">AlkalmazÃ¡sok fejlesztÃ©sÃ©re szolgÃ¡lÃ³ csomagok</description>
    <description xml:lang="ia">Pacchettos que provide functionalitate pro disveloppar e construer applicationes.</description>
    <description xml:lang="id">Paket yang menyediakan fungsionalitas untuk mengembangkan dan membangun aplikasi.</description>
    <description xml:lang="is">Pakkar sem innihalda virkni til aÃ° Ã¾rÃ³a og smÃ­Ã°a hugbÃºnaÃ°.</description>
    <description xml:lang="it">Pacchetti che forniscono funzionalitÃ  per sviluppare e compilare applicazioni.</description>
    <description xml:lang="ja">ã‚¢ãƒ—ãƒªã‚±ãƒ¼ã‚·ãƒ§ãƒ³ã®é–‹ç™ºãŠã‚ˆã³æ§‹ç¯‰æ©Ÿèƒ½ã‚’æä¾›ã™ã‚‹ãƒ‘ãƒƒã‚±ãƒ¼ã‚¸ã§ã™ã€‚</description>
    <description xml:lang="kn">à²…à²¨à³à²µà²¯à²—à²³à²¨à³à²¨à³ à²µà²¿à²•à²¾à²¸à²¿à²¸à²²à³ à²¹à²¾à²—à³‚ à²¨à²¿à²°à³à²®à²¿à²¸à²²à³ à²…à²¨à³à²µà³ à²®à²¾à²¡à²¿à²•à³Šà²¡à³à²µ à²•à²¾à²°à³à²¯à²¾à²¤à³à²®à²• à²ªà³à²¯à²¾à²•à³‡à²œà³â€à²—à²³à³.</description>
    <description xml:lang="ko">ì´ íŒ¨í‚¤ì§€ëŠ” ì‘ìš© í”„ë¡œê·¸ëž¨ì„ ê°œë°œí•˜ê¸° ìœ„í•œ ê¸°ëŠ¥ì„ ì œê³µí•©ë‹ˆë‹¤.</description>
    <description xml:lang="lv">Pakotnes, kas nodroÅ¡ina programmu izstrÄdes procesu.</description>
    <description xml:lang="mai">à¤¸à¤‚à¤•à¥à¤² à¤œà¥‡ à¤…à¤¨à¥à¤ªà¥à¤°à¤¯à¥‹à¤—à¤• à¤µà¤¿à¤•à¤¾à¤¸ à¤†à¤“à¤° à¤¨à¤¿à¤°à¥à¤®à¤¾à¤£ à¤•' à¤²à¥‡à¤² à¤ªà¥à¤°à¤•à¤¾à¤°à¥à¤¯à¤¾à¤¤à¥à¤®à¤•à¤¤à¤¾ à¤¦à¥‡à¤¤ à¤…à¤›à¤¿.</description>
    <description xml:lang="ml">à´ªàµà´°à´¯àµ‹à´—à´™àµà´™à´³àµà´Ÿàµ† à´ªàµà´°àµ‹à´—à´¤à´¿à´¯àµà´•àµà´•àµà´‚ à´¨à´¿à´°àµâ€à´®àµà´®à´¾à´£à´¤àµà´¤à´¿à´¨àµà´‚ à´†à´µà´¶àµà´¯à´®à´¾à´¯ à´ªàµà´°à´µà´°àµâ€à´¤àµà´¤à´¨à´™àµà´™à´³àµâ€à´•àµà´•àµà´³à´³ à´ªà´¾à´•àµà´•àµ‡à´œàµà´•à´³àµâ€.</description>
    <description xml:lang="mr">à¤¸à¤‚à¤•à¥à¤²à¥‡ à¤œà¥€ à¤…à¤¨à¥à¤ªà¥à¤°à¤¯à¥‹à¤— à¤µà¤¿à¤•à¤¸à¤¨ à¤†à¤£à¤¿ à¤¬à¤¾à¤‚à¤§à¤£à¥€à¤¸à¤¾à¤ à¥€ à¤•à¤¾à¤°à¥à¤¯à¤•à¥à¤·à¤®à¤¤à¤¾ à¤ªà¥à¤°à¤µà¤¤à¤¾à¤¤.</description>
    <description xml:lang="ms">Pakej yang menyediakan fungsi untuk membangun dan membina aplikasi.</description>
    <description xml:lang="nb">Pakker som gir funksjonalitet for utvikling og bygging av programmer.</description>
    <description xml:lang="ne">à¤…à¤¨à¥à¤ªà¥à¤°à¤¯à¥‹à¤— à¤µà¤¿à¤•à¤¾à¤¸ à¤—à¤°à¥à¤¨ à¤° à¤¨à¤¿à¤°à¥à¤®à¤¾à¤£ à¤—à¤°à¥à¤¨ à¤•à¤¾à¤°à¥à¤¯à¤¾à¤¤à¥à¤®à¤•à¤¤à¤¾ à¤‰à¤ªà¤²à¤¬à¥à¤§ à¤—à¤°à¥à¤¨à¥‡ à¤ªà¥à¤¯à¤¾à¤•à¥‡à¤œ à¥¤</description>
    <description xml:lang="nl">Pakketten die functionaliteit bieden voor het ontwikkelen en bouwen van toepassingen.</description>
    <description xml:lang="or">à¬ªà­à¬°à­Ÿà­‹à¬— à¬®à¬¾à¬¨à¬™à­à¬•à­ à¬¬à¬¿à¬•à¬¾à¬¶ à¬à¬¬à¬‚ à¬¨à¬¿à¬°à­à¬®à¬¾à¬£ à¬•à¬°à¬¿à¬¬à¬¾ à¬ªà¬¾à¬‡à¬ à¬à¬¹à¬¿ à¬ªà­à¬¯à¬¾à¬•à­‡à¬œ à¬—à­à¬¡à¬¿à¬• à¬•à¬¾à¬°à­à¬¯à­à¬¯ à¬ªà­à¬°à¬¦à¬¾à¬¨ à¬•à¬°à¬¿à¬¥à¬¾à¬à¥¤</description>
    <description xml:lang="pa">à¨ªà©ˆà¨•à©‡à¨œ, à¨œà©‹ à¨•à¨¿ à¨à¨ªà¨²à©€à¨•à©‡à¨¸à¨¼à¨¨ à¨¡à¨¿à¨µà©ˆà¨²à¨ª à¨…à¨¤à©‡ à¨¬à¨¿à¨²à¨¡ à¨•à¨°à¨¨ à¨²à¨ˆ à¨¸à¨¹à©‚à¨²à¨¤à¨¾à¨‚ à¨‰à¨ªà¨²à©±à¨¬à¨§ à¨•à¨°à¨µà¨¾à¨‰à¨¦à©‡ à¨¹à¨¨à¥¤</description>
    <description xml:lang="pl">Pakiety dostarczajÄ…ce funkcjonalnoÅ›Ä‡ tworzenia i budowania aplikacji.</description>
    <description xml:lang="pt">Pacotes que oferecem funcionalidades para desenvolver e criar aplicaÃ§Ãµes.</description>
    <description xml:lang="pt_BR">Pacotes que oferecem funcionalidades para desenvolver e criar aplicaÃ§Ãµes.</description>
    <description xml:lang="ro">Pachete care oferÄƒ funcÅ£ionalitÄƒÅ£i pentru dezvoltarea ÅŸi construirea de aplicaÅ£ii.</description>
    <description xml:lang="ru">ÐŸÐ°ÐºÐµÑ‚Ñ‹, Ð¿Ñ€ÐµÐ´Ð¾ÑÑ‚Ð°Ð²Ð»ÑÑŽÑ‰Ð¸Ðµ Ð²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ÑÑ‚ÑŒ Ñ€Ð°Ð·Ñ€Ð°Ð±Ð¾Ñ‚ÐºÐ¸ Ð¸ ÑÐ±Ð¾Ñ€ÐºÐ¸ Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ð¹.</description>
    <description xml:lang="si">à·€à·à¶©à·ƒà¶§à·„à¶±à·Š à¶±à·’à¶»à·Šà¶¸à·à¶«à¶º à·„à· à¶´à·Šâ€à¶»à·€à¶»à·Šà¶°à¶±à¶º à·ƒà¶³à·„à· à¶…à·€à·à·Šâ€à¶º à¶šà·Šâ€à¶»à·’à¶ºà·à¶šà·à¶»à¶šà¶¸à·Š à¶¸à·™à¶¸ à¶‡à·ƒà·”à¶»à·”à¶¸à·Š à¶­à·”à¶½ à¶‡à¶­à·”à¶½à¶­à·Š à·€à·š</description>
    <description xml:lang="sk">BalÃ­Äky poskytujÃºce funkcionalitu pre vÃ½voj a zostavovanie aplikÃ¡ciÃ­.</description>
    <description xml:lang="sl">Paketi za razvoj programja.</description>
    <description xml:lang="sq">Paketa qÃ« ofrojnÃ« funksione pÃ«r zhvillim dhe ndÃ«rtim zbatimesh.</description>
    <description xml:lang="sr">ÐŸÐ°ÐºÐµÑ‚Ð¸ ÐºÐ¾Ñ˜Ð¸ Ð¿Ñ€ÑƒÐ¶Ð°Ñ˜Ñƒ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ð¾Ð½Ð°Ð»Ð½Ð¾ÑÑ‚ Ð·Ð° Ñ€Ð°Ð·Ð²Ð¾Ñ˜ Ð¸ Ð¸Ð·Ð³Ñ€Ð°Ð´ÑšÑƒ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð°.</description>
    <description xml:lang="sr@Latn">Paketi koji pruÅ¾aju funkcionalnost za razvoj i izgradnju programa.</description>
    <description xml:lang="sr@latin">Paketi koji pruÅ¾aju funkcionalnost za razvoj i izgradnju programa.</description>
    <description xml:lang="sv">Paket som tillhandahÃ¥ller funktionalitet fÃ¶r utveckling och skapande av applikationer.</description>
    <description xml:lang="ta">à®ªà®¯à®©à¯à®ªà®¾à®Ÿà¯à®•à®³à¯ˆ à®®à¯‡à®®à¯à®ªà®Ÿà¯à®¤à¯à®¤à®µà¯à®®à¯, à®‰à®°à¯à®µà®¾à®•à¯à®•à®µà¯à®®à¯ à®šà¯†à®¯à®²à¯à®ªà®¾à®Ÿà¯à®•à®³à¯ˆ à®•à¯Šà®Ÿà¯à®•à¯à®•à¯à®®à¯ à®¤à¯Šà®•à¯à®ªà¯à®ªà¯à®•à®³à¯.</description>
    <description xml:lang="te">à°…à°¨à±à°µà°°à±à°¤à°¨à°¾à°² à°…à°­à°¿à°µà±ƒà°¦à±à°¦à°¿à°•à°¿ à°®à°°à°¿à°¯à± à°¨à°¿à°°à±à°®à°¾à°£à°‚à°•à± à°•à°¾à°°à±à°¯à°§à°•à±à°·à°¤à°¨à± à°…à°‚à°¦à°¿à°šà±‡ à°¸à°‚à°•à°²à°¨à°¾à°²à±.</description>
    <description xml:lang="tg">Ð‘Ð°Ñ€Ð½Ð¾Ð¼Ð°Ò³Ð¾Ð¸ Ð±Ð°Ñ€Ð½Ð¾Ð¼Ð°Ð½Ð°Ð²Ð¸ÑÓ£ Ð²Ð° ÑÒ·Ð¾Ð´ÐºÑƒÐ½Ð¸Ð¸ Ñ…ÑƒÐ´Ð¸ Ð±Ð°Ñ€Ð½Ð¾Ð¼Ð°Ò³Ð¾</description>
    <description xml:lang="th">à¸Šà¸¸à¸”à¹à¸žà¸à¹€à¸à¸ˆà¸—à¸µà¹ˆà¹ƒà¸Šà¹‰à¸ªà¸³à¸«à¸£à¸±à¸šà¸à¸²à¸£à¸žà¸±à¸’à¸™à¸²à¹à¸¥à¸°à¸ªà¸£à¹‰à¸²à¸‡à¹‚à¸›à¸£à¹à¸à¸£à¸¡à¸›à¸£à¸°à¸¢à¸¸à¸à¸•à¹Œ</description>
    <description xml:lang="tr">Uygulama geliÅŸtirmek ve oluÅŸturmak iÃ§in gerekli iÅŸlevleri saÄŸlayan paketler.</description>
    <description xml:lang="uk">ÐŸÐ°ÐºÑƒÐ½ÐºÐ¸, Ñ‰Ð¾ Ð½Ð°Ð´Ð°ÑŽÑ‚ÑŒ Ð¼Ð¾Ð¶Ð»Ð¸Ð²Ñ–ÑÑ‚ÑŒ Ñ€Ð¾Ð·Ñ€Ð¾Ð±Ð»ÑÑ‚Ð¸ Ñ‚Ð° Ð·Ð±Ð¸Ñ€Ð°Ñ‚Ð¸ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¸.</description>
    <description xml:lang="zh">æä¾›é–‹ç™¼åŠå»ºç«‹æ‡‰ç”¨ç¨‹å¼åŠŸèƒ½çš„å¥—ä»¶</description>
    <description xml:lang="zh_CN">ç”¨äºŽå¼€å‘å’Œæž„å»ºåº”ç”¨ç¨‹åºçš„è½¯ä»¶åŒ…ã€‚</description>
    <description xml:lang="zh_TW">æä¾›é–‹ç™¼åŠå»ºç«‹æ‡‰ç”¨ç¨‹å¼åŠŸèƒ½çš„å¥—ä»¶</description>
    <display_order>90</display_order>
    <grouplist>
      <groupid>additional-devel</groupid>
      <groupid>development</groupid>
      <groupid>platform-devel</groupid>
    </grouplist>
  </category>
  <category>
    <id>servers</id>
    <name>Servers</name>
    <name xml:lang="af">Bedieners</name>
    <name xml:lang="am">áˆ°áˆ­á‰¨áˆ®á‰½</name>
    <name xml:lang="ar">Ø®ÙˆØ§Ø¯Ù…</name>
    <name xml:lang="as">à¦šà¦¾à§°à§à¦­à¦¾à§°à¦¸à¦®à§‚à¦¹</name>
    <name xml:lang="bal">Ø³Ø±ÙˆØ±Ø§Ù†</name>
    <name xml:lang="be">ÐŸÐ°ÑÐ»ÑƒÐ¶Ð½Ñ–ÐºÑ–</name>
    <name xml:lang="bg">Ð¡ÑŠÑ€Ð²ÑŠÑ€Ð¸</name>
    <name xml:lang="bn">à¦¸à¦¾à¦°à§à¦­à¦¾à¦°</name>
    <name xml:lang="bs">PosluÅ¾itelji</name>
    <name xml:lang="ca">Servidors</name>
    <name xml:lang="cs">Servery</name>
    <name xml:lang="cy">Gweinyddion</name>
    <name xml:lang="da">Servere</name>
    <name xml:lang="de">Server</name>
    <name xml:lang="de_CH">Server</name>
    <name xml:lang="el">Î•Î¾Ï…Ï€Î·ÏÎµÏ„Î·Ï„Î­Ï‚</name>
    <name xml:lang="en_GB">Servers</name>
    <name xml:lang="es">Servidores</name>
    <name xml:lang="et">Serverid</name>
    <name xml:lang="eu">Zerbitzariak</name>
    <name xml:lang="fa">Ú©Ø§Ø±Ú¯Ø²Ø§Ø±Ù‡Ø§</name>
    <name xml:lang="fa_IR">Ú©Ø§Ø±Ú¯Ø²Ø§Ø±Ù‡Ø§</name>
    <name xml:lang="fi">Palvelimet</name>
    <name xml:lang="fr">Serveurs</name>
    <name xml:lang="gl">Servidores</name>
    <name xml:lang="gu">àª¸àª°à«àªµàª°à«‹</name>
    <name xml:lang="he">×©×¨×ª×™×</name>
    <name xml:lang="hi">à¤¸à¤°à¥à¤µà¤°</name>
    <name xml:lang="hr">PosluÅ¾itelji</name>
    <name xml:lang="hu">KiszolgÃ¡lÃ³k</name>
    <name xml:lang="hy">ÕÕ¥Ö€Õ¾Õ¥Ö€Õ¶Õ¥Ö€</name>
    <name xml:lang="ia">Servitores</name>
    <name xml:lang="id">Server</name>
    <name xml:lang="ilo">Serbidor</name>
    <name xml:lang="is">ÃžjÃ³nar</name>
    <name xml:lang="it">Servers</name>
    <name xml:lang="ja">ã‚µãƒ¼ãƒãƒ¼</name>
    <name xml:lang="ka">áƒ¡áƒ”áƒ áƒ•áƒ”áƒ áƒ”áƒ‘áƒ˜</name>
    <name xml:lang="kn">à²ªà³‚à²°à³ˆà²•à³†à²—à²£à²•à²—à²³à³</name>
    <name xml:lang="ko">ì„œë²„</name>
    <name xml:lang="lv">Serveri</name>
    <name xml:lang="mai">à¤¸à¤°à¥à¤µà¤°</name>
    <name xml:lang="mk">Ð¡ÐµÑ€Ð²ÐµÑ€Ð¸</name>
    <name xml:lang="ml">à´¸à´°àµâ€à´µà´±àµà´•à´³àµâ€</name>
    <name xml:lang="mr">à¤¸à¥‡à¤µà¤•</name>
    <name xml:lang="ms">Pelayan-Pelayan</name>
    <name xml:lang="nb">Tjenere</name>
    <name xml:lang="ne">à¤¸à¤°à¥à¤­à¤°</name>
    <name xml:lang="nl">Servers</name>
    <name xml:lang="no">Tjenere</name>
    <name xml:lang="nso">Baabi</name>
    <name xml:lang="or">à¬¸à­‡à¬¬à¬• à¬®à¬¾à¬¨à­‡</name>
    <name xml:lang="pa">à¨¸à¨°à¨µà¨°</name>
    <name xml:lang="pl">Serwery</name>
    <name xml:lang="pt">Servidores</name>
    <name xml:lang="pt_BR">Servidores</name>
    <name xml:lang="ro">Servere</name>
    <name xml:lang="ru">Ð¡ÐµÑ€Ð²ÐµÑ€Ñ‹</name>
    <name xml:lang="si">à·ƒà·šà·€à· à¶¯à·à¶ºà¶šà¶ºà¶±à·Š</name>
    <name xml:lang="sk">Servery</name>
    <name xml:lang="sl">StreÅ¾niki</name>
    <name xml:lang="sq">ShÃ«rbyesa</name>
    <name xml:lang="sr">Ð¡ÐµÑ€Ð²ÐµÑ€Ð¸</name>
    <name xml:lang="sr@Latn">Serveri</name>
    <name xml:lang="sr@latin">Serveri</name>
    <name xml:lang="sv">Servrar</name>
    <name xml:lang="ta">à®šà¯‡à®µà¯ˆà®¯à®•à®™à¯à®•à®³à¯</name>
    <name xml:lang="te">à°¸à±‡à°µà°¿à°•à°²à±</name>
    <name xml:lang="tg">Ð¥Ð¸Ð´Ð¼Ð°Ñ‚Ð³Ð¾Ò³Ò³Ð¾</name>
    <name xml:lang="th">à¸•à¸±à¸§à¹ƒà¸«à¹‰à¸šà¸£à¸´à¸à¸²à¸£</name>
    <name xml:lang="tr">Sunucular</name>
    <name xml:lang="uk">Ð¡ÐµÑ€Ð²ÐµÑ€Ð¸</name>
    <name xml:lang="ur">Ø³Ø±ÙˆØ±Ø²</name>
    <name xml:lang="vi">Server</name>
    <name xml:lang="zh">ä¼ºæœå™¨</name>
    <name xml:lang="zh_CN">æœåŠ¡å™¨</name>
    <name xml:lang="zh_TW">ä¼ºæœå™¨</name>
    <name xml:lang="zu">Abalekeleli</name>
    <description>Software used for running network servers</description>
    <description xml:lang="ar">ÙŠØ³ØªØ®Ø¯Ù… Ø§Ù„Ø¨Ø±Ù†Ø§Ù…Ø¬ Ù„Ø§Ø¯Ø§Ø±Ø© Ø®Ø§Ø¯Ù…Ø§Øª Ø§Ù„Ø´Ø¨ÙƒØ©</description>
    <description xml:lang="as">à¦¨à§‡à¦Ÿà§±à¦¾à§°à§à¦• à¦šà¦¾à§°à§à¦­à¦¾à§° à¦šà¦²à¦¾à¦¬'à¦²à§ˆ à¦šà¦«à§à¦Ÿà§±à§‡à§°</description>
    <description xml:lang="bal">Ø¨Ø±Ù†Ø§Ù…Ù‡ Ø§ÛŒ Ú©Ù‡ Ù¾Ù‡ Ø§Ø¬Ø±Ø§ÛŒ Ø³Ø±ÙˆØ±Ø§Ù† Ø´Ø¨Ú©Ù‡ Ø§ÛŒ Ø§Ø³ØªÙØ§Ø¯Ù‡ Ø¨ÛŒØª.</description>
    <description xml:lang="bg">Ð¡Ð¾Ñ„Ñ‚ÑƒÐµÑ€ Ð·Ð° Ð¿ÑƒÑÐºÐ°Ð½Ðµ Ð½Ð° Ð¼Ñ€ÐµÐ¶Ð¾Ð²Ð¸ ÑƒÑÐ»ÑƒÐ³Ð¸</description>
    <description xml:lang="bn">à¦¨à§‡à¦Ÿà¦“à§Ÿà¦¾à¦°à§à¦• à¦¸à¦¾à¦°à§à¦­à¦¾à¦° à¦¸à¦žà§à¦šà¦¾à¦²à¦¨à§‡à¦° à¦‰à¦¦à§à¦¦à§‡à¦¶à§à¦¯à§‡ à¦¸à¦«à§à¦Ÿà¦“à§Ÿà§à¦¯à¦¾à¦°</description>
    <description xml:lang="bs">Softver koji se upotrebljava za pokretanje mreÅ¾nih posluÅ¾itelja</description>
    <description xml:lang="ca">Programari emprat per executar servidors de xarxa</description>
    <description xml:lang="cs">Software pouÅ¾Ã­vanÃ½ pro bÄ›h sÃ­Å¥ovÃ½ch serverÅ¯</description>
    <description xml:lang="da">Programmel til brug for at kÃ¸re netvÃ¦rksservere</description>
    <description xml:lang="de">Software, die fÃ¼r den Betrieb von Netzwerkservern verwendet wird</description>
    <description xml:lang="de_CH">Software, die fÃ¼r den Betrieb von Netzwerkservern verwendet wird</description>
    <description xml:lang="el">Î›Î¿Î³Î¹ÏƒÎ¼Î¹ÎºÏŒ Ï€Î¿Ï… Ï‡ÏÎ·ÏƒÎ¹Î¼Î¿Ï€Î¿Î¹ÎµÎ¯Ï„Î±Î¹ Î³Î¹Î± ÎµÎºÏ„Î­Î»ÎµÏƒÎ· Î´Î¹ÎºÏ„Ï…Î±ÎºÏŽÎ½ ÎµÎ¾Ï…Ï€Î·ÏÎµÏ„Î·Ï„ÏŽÎ½</description>
    <description xml:lang="en_GB">Software used for running network servers</description>
    <description xml:lang="es">Programas usados para correr servidores de red</description>
    <description xml:lang="et">VÃµrguserverite tÃ¶Ã¶lepanemiseks vajalik tarkvara</description>
    <description xml:lang="fi">Verkkopalvelimina kÃ¤ytettÃ¤viÃ¤ ohjelmistoja</description>
    <description xml:lang="fr">Logiciels utilisÃ©s pour serveurs de rÃ©seau actifs</description>
    <description xml:lang="gu">àª¨à«‡àªŸàªµàª°à«àª• àª¸àª°à«àªµàª°à«‹ àªšàª²àª¾àªµàªµàª¾ àª®àª¾àªŸà«‡ àªµàªªàª°àª¾àª¤à«àª‚ àª¸à«‹àª«à«àªŸàªµà«‡àª°</description>
    <description xml:lang="he">×ª×•×›× ×” ×”×ž×©×ž×©×ª ×œ×”×¨×¦×ª ×©×¨×ª×™ ×¨×©×ª</description>
    <description xml:lang="hi">à¤¸à¤‚à¤œà¤¾à¤² à¤¸à¤°à¥à¤µà¤° à¤•à¥‡ à¤²à¤¿à¤¯à¥‡ à¤ªà¥à¤°à¤¯à¥‹à¤— à¤•à¥‡ à¤²à¤¿à¤¯à¥‡ à¤¸à¥‰à¤«à¥à¤Ÿà¤µà¥‡à¤¯à¤°</description>
    <description xml:lang="hr">Softver koji se upotrebljava za pokretanje mreÅ¾nih posluÅ¾itelja</description>
    <description xml:lang="hu">HÃ¡lÃ³zati kiszolgÃ¡lÃ³k futtatÃ¡sÃ¡hoz szÃ¼ksÃ©ges szoftverek</description>
    <description xml:lang="hy">Ô¾Ö€Õ¡Õ£Ö€Õ¥Ö€Õ ÖÕ¡Õ¶ÖÕ¡ÕµÕ«Õ¶ Õ½Õ¥Ö€Õ¾Õ¥Ö€Õ¶Õ¥Ö€ Õ¡Õ·Õ­Õ¡Õ¿Õ¥ÖÕ¶Õ¥Õ¬Õ¸Ö‚ Õ°Õ¡Õ´Õ¡Ö€</description>
    <description xml:lang="ia">Software usate pro exequer servitores de rete</description>
    <description xml:lang="id">Perangkat lunak yang dipergunakan untuk menjalankan server jaringan</description>
    <description xml:lang="is">HugbÃºnaÃ°ur til aÃ° keyra netÃ¾jÃ³na</description>
    <description xml:lang="it">Software usato per eseguire server di rete</description>
    <description xml:lang="ja">ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ã‚µãƒ¼ãƒãƒ¼ã®ç¨¼å‹•ã«ä½¿ç”¨ã™ã‚‹ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢</description>
    <description xml:lang="kn">à²œà²¾à²² à²ªà³‚à²°à³ˆà²•à³†à²—à²£à²•à²—à²³à²¨à³à²¨à³ à²•à²¾à²°à³à²¯à²—à²¤à²—à³Šà²³à²¿à²¸à²²à³ à²¬à²³à²¸à³à²µ à²¤à²‚à²¤à³à²°à²¾à²‚à²¶</description>
    <description xml:lang="ko">ë„¤íŠ¸ì›Œí¬ ì„œë²„ë¥¼ ì‹¤í–‰í•˜ê¸° ìœ„í•´ ì‚¬ìš©ë˜ëŠ” ì†Œí”„íŠ¸ì›¨ì–´</description>
    <description xml:lang="lv">Programmas, kas tiek izmantotas tÄ«kla serveriem</description>
    <description xml:lang="mai">à¤¸à¤‚à¤œà¤¾à¤² à¤¸à¤°à¥à¤µà¤° à¤•' à¤²à¥‡à¤² à¤ªà¥à¤°à¤¯à¥‹à¤— à¤•' à¤²à¥‡à¤² à¤¸à¤¾à¤«à¥à¤Ÿà¤µà¥‡à¤¯à¤°</description>
    <description xml:lang="ml">à´¨àµ†à´±àµà´±àµâ€à´µà´°àµâ€à´•àµà´•àµ à´¸à´°àµâ€à´µà´±àµà´•à´³àµâ€ à´ªàµà´°à´µà´°àµâ€à´¤àµà´¤à´¿à´ªàµà´ªà´¿à´•àµà´•àµà´¨àµà´¨à´¤à´¿à´¨àµà´³à´³ à´¸àµ‹à´«àµà´±àµà´±àµâ€à´µà´¯à´°àµâ€</description>
    <description xml:lang="mr">à¤¸à¤‚à¤œà¤¾à¤³ à¤¸à¤°à¥à¤µà¥à¤¹à¤° à¤šà¤¾à¤²à¤µà¤£à¥à¤¯à¤¾à¤¸à¤¾à¤ à¥€ à¤µà¤¾à¤ªà¤°à¤²à¥‡ à¤œà¤¾à¤£à¤¾à¤°à¥‡ à¤¸à¥‰à¤«à¥à¤Ÿà¤µà¥‡à¤…à¤°</description>
    <description xml:lang="ms">Perisian digunakan untuk melaksanakan pelayan rangkaian</description>
    <description xml:lang="nb">Programvare som brukes for Ã¥ kjÃ¸re nettverkstjenere</description>
    <description xml:lang="ne">à¤¸à¤žà¥à¤œà¤¾à¤² à¤¸à¤°à¥à¤­à¤° à¤šà¤²à¤¾à¤‰à¤¨à¤•à¤¾ à¤²à¤¾à¤—à¤¿ à¤ªà¥à¤°à¤¯à¥‹à¤— à¤—à¤°à¤¿à¤¨à¥‡ à¤¸à¤«à¥à¤Ÿà¤µà¥‡à¤¯à¤°</description>
    <description xml:lang="nl">Software gebruikt voor het uitvoeren van netwerk-servers</description>
    <description xml:lang="or">à¬¨à­‡à¬Ÿà­±à¬¾à¬°à­à¬• à¬¸à­‡à¬¬à¬•à¬•à­ à¬šà¬³à¬¾à¬‡à¬¬à¬¾ à¬ªà¬¾à¬‡à¬ à¬¬à­à¬¯à¬¬à¬¹à­ƒà¬¤ à¬¸à¬«à¬Ÿà­±à­‡à¬°</description>
    <description xml:lang="pa">à¨¨à©ˆà©±à¨Ÿà¨µà¨°à¨• à¨¸à¨°à¨µà¨° à¨šà¨²à¨¾à¨‰à¨£ à¨²à¨ˆ à¨²à©‹à©œà©€à¨¦à©‡ à¨¸à¨¾à¨«à¨Ÿà¨µà©‡à¨…à¨°</description>
    <description xml:lang="pl">Oprogramowanie uÅ¼ywane do uruchamiania serwerÃ³w sieciowych</description>
    <description xml:lang="pt">AplicaÃ§Ãµes usadas para executar servidores de rede</description>
    <description xml:lang="pt_BR">AplicaÃ§Ãµes usadas para executar servidores de rede</description>
    <description xml:lang="ro">Programe folosite pentru a rula servere de reÅ£ea</description>
    <description xml:lang="ru">ÐŸÑ€Ð¾Ð³Ñ€Ð°Ð¼Ð¼Ñ‹, Ð¸ÑÐ¿Ð¾Ð»ÑŒÐ·ÑƒÐµÐ¼Ñ‹Ðµ Ð´Ð»Ñ Ð·Ð°Ð¿ÑƒÑÐºÐ° ÑÐµÑ‚ÐµÐ²Ñ‹Ñ… ÑÐµÑ€Ð²ÐµÑ€Ð¾Ð²</description>
    <description xml:lang="si">à¶¢à·à¶½ à·ƒà¶¸à·Šà¶¶à¶±à·Šà¶°à¶š à·ƒà·šà·€à· à¶¯à·à¶ºà¶šà¶ºà¶±à·Š à¶šà·Šâ€à¶»à·’à¶ºà·à¶­à·Šà¶¸à¶š à¶šà·’à¶»à·“à¶¸ à·ƒà¶³à·„à· à¶¸à·™à¶¸ à¶¸à·˜à¶¯à·”à¶šà·à¶‚à¶œà¶º à¶·à·à·€à·’à¶­ à¶šà¶»à¶±à·” à¶½à·à¶¶à·š.</description>
    <description xml:lang="sk">SoftvÃ©r pouÅ¾Ã­vanÃ½ na beh sieÅ¥ovÃ½ch serverov</description>
    <description xml:lang="sl">Programje za delo z omreÅ¾nimi streÅ¾niki</description>
    <description xml:lang="sq">Programe tÃ« pÃ«rdorur pÃ«r xhirim shÃ«rbyesash rrjeti</description>
    <description xml:lang="sr">Ð¡Ð¾Ñ„Ñ‚Ð²ÐµÑ€ ÐºÐ¾Ñ˜Ð¸ ÑÐµ ÐºÐ¾Ñ€Ð¸ÑÑ‚Ð¸ Ð·Ð° Ð¸Ð·Ð²Ñ€ÑˆÐ°Ð²Ð°ÑšÐµ Ð¼Ñ€ÐµÐ¶Ð½Ð¸Ñ… ÑÐµÑ€Ð²ÐµÑ€Ð°</description>
    <description xml:lang="sr@Latn">Softver koji se koristi za izvrÅ¡avanje mreÅ¾nih servera</description>
    <description xml:lang="sr@latin">Softver koji se koristi za izvrÅ¡avanje mreÅ¾nih servera</description>
    <description xml:lang="sv">Mjukvara som anvÃ¤nds fÃ¶r kÃ¶rande nÃ¤tverksservrar</description>
    <description xml:lang="ta">à®ªà®¿à®£à¯ˆà®¯ à®šà¯‡à®µà¯ˆà®¯à®•à®™à¯à®•à®³à¯ˆ à®‡à®¯à®•à¯à®• à®ªà®¯à®©à¯à®ªà®Ÿà¯à®¤à¯à®¤à®ªà¯à®ªà®Ÿà¯à®Ÿ à®®à¯†à®©à¯à®ªà¯Šà®°à¯à®³à¯</description>
    <description xml:lang="te">à°¨à±†à°Ÿà±à°µà°°à±à°•à±â€ à°¸à±‡à°µà°¿à°•à°²à°¨à± à°¨à°¡à±à°ªà±à°Ÿà°•à± à°‰à°ªà°¯à±‹à°—à°ªà°¡à±‡ à°¸à°¾à°«à±à°Ÿà±â€â€Œà°µà±‡à°°à±</description>
    <description xml:lang="tg">ÐÐ°Ñ€Ð¼Ð°Ñ„Ð·Ð¾Ñ€Ð¸ Ð¸ÑÑ‚Ð¸Ñ„Ð¾Ð´Ð°ÑˆÑƒÐ´Ð°Ð¸ Ð±Ð¾ Ñ…Ð¸Ð´Ð¼Ð°Ñ‚Ð³Ð¾Ò³Ò³Ð¾Ð¸ Ð˜Ð½Ñ‚ÐµÑ€Ð½ÐµÑ‚</description>
    <description xml:lang="th">à¹‚à¸›à¸£à¹à¸à¸£à¸¡à¸ªà¸³à¸«à¸£à¸±à¸šà¹ƒà¸«à¹‰à¸šà¸£à¸´à¸à¸²à¸£à¹ƒà¸™à¹€à¸„à¸£à¸·à¸­à¸‚à¹ˆà¸²à¸¢</description>
    <description xml:lang="tr">AÄŸ servislerini Ã§alÄ±ÅŸtÄ±rmak iÃ§in kullanÄ±lan yazÄ±lÄ±mlar</description>
    <description xml:lang="uk">ÐŸÑ€Ð¾Ð³Ñ€Ð°Ð¼Ð¸, Ñ‰Ð¾ Ð²Ð¸ÐºÐ¾Ñ€Ð¸ÑÑ‚Ð¾Ð²ÑƒÑŽÑ‚ÑŒÑÑ Ð´Ð»Ñ Ð·Ð°Ð¿ÑƒÑÐºÑƒ Ð¼ÐµÑ€ÐµÐ¶Ð½Ð¸Ñ… ÑÐµÑ€Ð²ÐµÑ€Ñ–Ð²</description>
    <description xml:lang="zh">ç”¨æ–¼é‹è¡Œç¶²è·¯ä¼ºæœå™¨çš„è»Ÿé«”</description>
    <description xml:lang="zh_CN">ç”¨äºŽè¿è¡Œç½‘ç»œæœåŠ¡å™¨çš„è½¯ä»¶</description>
    <description xml:lang="zh_TW">ç”¨æ–¼é‹è¡Œç¶²è·¯ä¼ºæœå™¨çš„è»Ÿé«”</description>
    <display_order>20</display_order>
    <grouplist>
      <groupid>file-server</groupid>
      <groupid>ftp-server</groupid>
      <groupid>mail-server</groupid>
      <groupid>network-server</groupid>
      <groupid>web-server</groupid>
    </grouplist>
  </category>
  <category>
    <id>base-system</id>
    <name>System</name>
    <name xml:lang="af">Rekenaar</name>
    <name xml:lang="am">áˆ²áˆµá‰°áˆ</name>
    <name xml:lang="ar">Ù†Ø¸Ø§Ù…</name>
    <name xml:lang="as">à¦šà¦¿à¦¸à§à¦Ÿà§‡à¦®</name>
    <name xml:lang="be">Ð¡Ñ‹Ñ‚ÑÐ¼Ð°</name>
    <name xml:lang="bn">à¦¸à¦¿à¦¸à§à¦Ÿà§‡à¦®</name>
    <name xml:lang="bs">Sustav</name>
    <name xml:lang="ca">Sistema</name>
    <name xml:lang="cs">SystÃ©m</name>
    <name xml:lang="cy">System</name>
    <name xml:lang="de">System</name>
    <name xml:lang="de_CH">System</name>
    <name xml:lang="en_GB">System</name>
    <name xml:lang="es">Sistema</name>
    <name xml:lang="eu">Sistema</name>
    <name xml:lang="fa">Ø³ÛŒØ³ØªÙ…</name>
    <name xml:lang="fa_IR">Ø³ÛŒØ³ØªÙ…</name>
    <name xml:lang="fi">JÃ¤rjestelmÃ¤</name>
    <name xml:lang="fr">SystÃ¨me</name>
    <name xml:lang="gl">Sistema</name>
    <name xml:lang="gu">àª¸àª¿àª¸à«àªŸàª®</name>
    <name xml:lang="hi">à¤¤à¤‚à¤¤à¥à¤°</name>
    <name xml:lang="hr">Sustav</name>
    <name xml:lang="hu">Rendszer</name>
    <name xml:lang="hy">Õ€Õ¡Õ´Õ¡Õ¯Õ¡Ö€Õ£</name>
    <name xml:lang="id">Sistem</name>
    <name xml:lang="ilo">Sistema</name>
    <name xml:lang="it">Sistema</name>
    <name xml:lang="ja">ã‚·ã‚¹ãƒ†ãƒ </name>
    <name xml:lang="ka">áƒ¡áƒ˜áƒ¡áƒ¢áƒ”áƒ›áƒ</name>
    <name xml:lang="kn">à²µà³à²¯à²µà²¸à³à²¥à³†</name>
    <name xml:lang="ko">ì‹œìŠ¤í…œ</name>
    <name xml:lang="lv">SistÄ“ma</name>
    <name xml:lang="mk">Ð¡Ð¸ÑÑ‚ÐµÐ¼</name>
    <name xml:lang="ml">à´¸à´¿à´¸àµà´±àµà´±à´‚</name>
    <name xml:lang="mr">à¤ªà¥à¤°à¤£à¤¾à¤²à¥€</name>
    <name xml:lang="no">System</name>
    <name xml:lang="nso">TshepediÅ¡o</name>
    <name xml:lang="or">à¬¤à¬¨à­à¬¤à­à¬°</name>
    <name xml:lang="pa">à¨¸à¨¿à¨¸à¨Ÿà¨®</name>
    <name xml:lang="pl">System</name>
    <name xml:lang="pt">Sistema </name>
    <name xml:lang="pt_BR">Sistema </name>
    <name xml:lang="ru">Ð¡Ð¸ÑÑ‚ÐµÐ¼Ð°</name>
    <name xml:lang="si">à¶´à¶¯à·Šà¶°à¶­à·’à¶º</name>
    <name xml:lang="sl">Sistem</name>
    <name xml:lang="sq">Sistem</name>
    <name xml:lang="ta">à®•à®£à®¿à®©à®¿</name>
    <name xml:lang="te">à°µà±à°¯à°µà°¸à±à°¥</name>
    <name xml:lang="th">à¸£à¸°à¸šà¸š</name>
    <name xml:lang="tr">Sistem</name>
    <name xml:lang="uk">Ð¡Ð¸ÑÑ‚ÐµÐ¼Ð°</name>
    <name xml:lang="ur">Ù†Ø¸Ø§Ù…</name>
    <name xml:lang="vi">Há»‡ thá»‘ng</name>
    <name xml:lang="zh">ç³»çµ±</name>
    <name xml:lang="zh_CN">ç³»ç»Ÿ</name>
    <name xml:lang="zh_TW">ç³»çµ±</name>
    <name xml:lang="zu">Isistimu</name>
    <description>Core system components.</description>
    <description xml:lang="as">à¦šà¦¿à¦¸à§à¦Ÿà§‡à¦®à§° à¦®à§‚à¦–à§à¦¯ à¦‰à¦ªà¦¾à¦¦à¦¾à¦¨à¦¸à¦®à§‚à¦¹à¥¤</description>
    <description xml:lang="bn">à¦¸à¦¿à¦¸à§à¦Ÿà§‡à¦®à§‡à¦° à¦•à§‹à¦° à¦¸à¦¾à¦®à¦—à§à¦°à§€à¥¤</description>
    <description xml:lang="cs">ZÃ¡kladnÃ­ komponenty systÃ©mu.</description>
    <description xml:lang="de">Zentrale Systemkomponenten.</description>
    <description xml:lang="de_CH">Zentrale Systemkomponenten.</description>
    <description xml:lang="es">Componentes de sistema Core</description>
    <description xml:lang="fr">Composants du systÃ¨me de base.</description>
    <description xml:lang="gu">àª•à«‹àª° àª¸àª¿àª¸à«àªŸàª® àª¸àª¾àª§àª¨à«‹.</description>
    <description xml:lang="hi">à¤ªà¥à¤°à¤§à¤¾à¤¨ à¤¸à¤¿à¤¸à¥à¤Ÿà¤® à¤˜à¤Ÿà¤•</description>
    <description xml:lang="it">Componenti di base del sistema.</description>
    <description xml:lang="ja">ã‚³ã‚¢ã‚·ã‚¹ãƒ†ãƒ ã‚³ãƒ³ãƒãƒ¼ãƒãƒ³ãƒˆ</description>
    <description xml:lang="kn">à²ªà³à²°à²®à³à²– à²µà³à²¯à²µà²¸à³à²¥à³†à²¯ à²˜à²Ÿà²•à²—à²³à³.</description>
    <description xml:lang="ko">í•µì‹¬ ì‹œìŠ¤í…œ ì½¤í¬ë„ŒíŠ¸.</description>
    <description xml:lang="ml">à´•àµ‹à´°àµâ€ à´¸à´¿à´¸àµà´±àµà´±à´‚ à´˜à´Ÿà´•à´™àµà´™à´³àµâ€.</description>
    <description xml:lang="mr">à¤•à¥‹à¤° à¤ªà¥à¤°à¤£à¤¾à¤²à¥€ à¤˜à¤Ÿà¤•à¥‡.</description>
    <description xml:lang="or">à¬®à­‚à¬–à­à­Ÿ à¬¤à¬¨à­à¬¤à­à¬° à¬‰à¬ªà¬¾à¬¦à¬¾à¬¨à¬—à­à¬¡à¬¼à¬¿à¬•à¥¤</description>
    <description xml:lang="pa">à¨®à©à©±à¨– à¨¸à¨¿à¨¸à¨Ÿà¨® à¨¹à¨¿à©±à¨¸à©‡à¥¤</description>
    <description xml:lang="pl">GÅ‚Ã³wne skÅ‚adniki systemu.</description>
    <description xml:lang="pt">Componentes de sistema central</description>
    <description xml:lang="pt_BR">Componentes de sistema central</description>
    <description xml:lang="ru">ÐžÑÐ½Ð¾Ð²Ð½Ñ‹Ðµ ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÐµÐ½Ñ‚Ñ‹ ÑÐ¸ÑÑ‚ÐµÐ¼Ñ‹.</description>
    <description xml:lang="sv">GrundlÃ¤ggande systemkomponenter.</description>
    <description xml:lang="ta">à®‰à®³à¯à®³à¯€à®Ÿà¯ à®•à®£à®¿à®©à®¿ à®†à®•à¯à®•à®•à¯à®•à¯‚à®±à¯à®•à®³à¯.</description>
    <description xml:lang="te">à°•à±‹à°°à± à°¸à°¿à°¸à±à°Ÿà°®à± à°®à±‚à°²à°•à°®à±à°²à±.</description>
    <description xml:lang="uk">ÐžÑÐ½Ð¾Ð²Ð½Ñ– ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÐµÐ½Ñ‚ ÑÐ¸ÑÑ‚ÐµÐ¼.</description>
    <description xml:lang="zh">æ ¸å¿ƒç³»çµ±å…ƒä»¶ã€‚</description>
    <description xml:lang="zh_CN">æ ¸æ–°ç³»ç»Ÿç»„ä»¶ã€‚</description>
    <description xml:lang="zh_TW">æ ¸å¿ƒç³»çµ±å…ƒä»¶ã€‚</description>
    <display_order>10</display_order>
    <grouplist>
      <groupid>backup-client</groupid>
      <groupid>debugging</groupid>
      <groupid>infiniband</groupid>
      <groupid>java-platform</groupid>
      <groupid>mainframe-access</groupid>
      <groupid>network-tools</groupid>
      <groupid>performance</groupid>
      <groupid>print-client</groupid>
      <groupid>scientific</groupid>
      <groupid>security-tools</groupid>
      <groupid>smart-card</groupid>
      <groupid>standard</groupid>
    </grouplist>
  </category>
  <category>
    <id>desktops</id>
    <name>Desktops</name>
    <name xml:lang="af">Werkskerms</name>
    <name xml:lang="am">á‹´áˆµáŠ­á‰¶á–á‰½</name>
    <name xml:lang="ar">Ø£Ø³Ø·Ø­ Ø§Ù„Ù…ÙƒØªØ¨</name>
    <name xml:lang="as">à¦¡à§‡à¦¸à§à¦•à¦Ÿà¦ª</name>
    <name xml:lang="be">Ð¡Ñ‚Ð°Ð»ÑŒÑ†Ñ‹</name>
    <name xml:lang="bn">à¦¡à§‡à¦¸à§à¦•à¦Ÿà¦ª</name>
    <name xml:lang="bs">Radne povrÅ¡ine</name>
    <name xml:lang="ca">Escriptoris</name>
    <name xml:lang="cs">PracovnÃ­ prostÅ™edÃ­</name>
    <name xml:lang="cy">Penbyrddau</name>
    <name xml:lang="de">Desktops</name>
    <name xml:lang="de_CH">Desktops</name>
    <name xml:lang="en_GB">Desktops</name>
    <name xml:lang="es">Escritorios</name>
    <name xml:lang="eu">Mahaigainak</name>
    <name xml:lang="fa">Ù…Ø­ÛŒØ·â€ŒÙ‡Ø§ÛŒ Ø±ÙˆÙ…ÛŒØ²ÛŒ</name>
    <name xml:lang="fa_IR">Ù…Ø­ÛŒØ·â€ŒÙ‡Ø§ÛŒ Ø±ÙˆÙ…ÛŒØ²ÛŒ</name>
    <name xml:lang="fi">TyÃ¶pÃ¶ydÃ¤t</name>
    <name xml:lang="fr">Bureaux</name>
    <name xml:lang="gl">Escritorios</name>
    <name xml:lang="gu">àª¡à«‡àª¸à«àª•àªŸà«‹àªªà«‹</name>
    <name xml:lang="hi">à¤¡à¥‡à¤¸à¥à¤•à¤Ÿà¥‰à¤ª</name>
    <name xml:lang="hr">Radne povrÅ¡ine</name>
    <name xml:lang="hu">Munkaasztalok</name>
    <name xml:lang="hy">Ô´Õ¥Õ½Ö„Õ©Õ¸ÖƒÕ¶Õ¥Ö€</name>
    <name xml:lang="ia">Scriptorios</name>
    <name xml:lang="id">Desktop</name>
    <name xml:lang="ilo">Eskritorio</name>
    <name xml:lang="it">Desktop</name>
    <name xml:lang="ja">ãƒ‡ã‚¹ã‚¯ãƒˆãƒƒãƒ—</name>
    <name xml:lang="ka">áƒ¡áƒáƒ›áƒ£áƒ¨áƒáƒ áƒ’áƒáƒ áƒ”áƒ›áƒáƒ”áƒ‘áƒ˜</name>
    <name xml:lang="kn">à²—à²£à²•à²¤à³†à²°à³†à²—à²³à³</name>
    <name xml:lang="ko">ë°ìŠ¤í¬íƒ‘</name>
    <name xml:lang="lv">Darbvirsmas</name>
    <name xml:lang="mk">Ð“Ñ€Ð°Ñ„Ð¸Ñ‡ÐºÐ¸ Ñ€Ð°Ð±Ð¾Ñ‚Ð½Ð¸ Ð¾ÐºÐ¾Ð»Ð¸Ð½Ð¸</name>
    <name xml:lang="ml">à´ªà´£à´¿à´¯à´¿à´Ÿà´™àµà´™à´³àµâ€</name>
    <name xml:lang="mr">à¤¡à¥‡à¤¸à¥à¤•à¤Ÿà¥‰à¤ªà¥à¤¸à¥</name>
    <name xml:lang="no">Skrivebord</name>
    <name xml:lang="nso">Diteseke</name>
    <name xml:lang="or">à¬¡à­‡à¬¸à­à¬•à¬Ÿà¬ªà­ à¬®à¬¾à¬¨</name>
    <name xml:lang="pa">à¨¡à©ˆà¨¸à¨•à¨Ÿà¨¾à¨ª</name>
    <name xml:lang="pl">Åšrodowiska graficzne</name>
    <name xml:lang="pt">Desktops</name>
    <name xml:lang="pt_BR">Desktops</name>
    <name xml:lang="ru">Ð Ð°Ð±Ð¾Ñ‡Ð¸Ðµ ÑÑ‚Ð¾Ð»Ñ‹</name>
    <name xml:lang="si">Desktops</name>
    <name xml:lang="sl">Namizja</name>
    <name xml:lang="sq">DesktopÃ«</name>
    <name xml:lang="sv">Skrivbord</name>
    <name xml:lang="ta">à®ªà®£à®¿à®®à¯‡à®Ÿà¯ˆà®•à®³à¯</name>
    <name xml:lang="te">à°¡à±†à°¸à±à°•à±à°Ÿà°¾à°ªà±à°¸à±</name>
    <name xml:lang="th">à¹€à¸”à¸ªà¸à¹Œà¸—à¹‡à¸­à¸›</name>
    <name xml:lang="tr">MasaÃ¼stleri</name>
    <name xml:lang="uk">Ð Ð¾Ð±Ð¾Ñ‡Ñ– ÑÐµÑ€ÐµÐ´Ð¾Ð²Ð¸Ñ‰Ð°</name>
    <name xml:lang="ur">ÚˆÙŠØ³Ú© Ù¹Ø§Ù¾Ø³</name>
    <name xml:lang="vi">Desktop</name>
    <name xml:lang="zh">æ¡Œé¢ç’°å¢ƒ</name>
    <name xml:lang="zh_CN">æ¡Œé¢</name>
    <name xml:lang="zh_TW">æ¡Œé¢ç’°å¢ƒ</name>
    <name xml:lang="zu">Amadesktop</name>
    <description>Desktops and thin clients.</description>
    <description xml:lang="as">à¦¡à§‡à¦¸à§à¦•à¦Ÿà¦ª à¦†à§°à§ à¦•à§à¦·à§€à¦£ à¦•à§à¦²à¦¾à¦à¦¨à§à¦Ÿà¥¤</description>
    <description xml:lang="bn">à¦¡à§‡à¦¸à§à¦•à¦Ÿà¦ª à¦“ à¦¥à¦¿à¦¨ à¦•à§à¦²à¦¾à§Ÿà§‡à¦¨à§à¦Ÿà¥¤</description>
    <description xml:lang="cs">PracovnÃ­ prostÅ™edÃ­ a tencÃ­ klienti.</description>
    <description xml:lang="de">Desktops und Thin-Clients.</description>
    <description xml:lang="de_CH">Desktops und Thin-Clients.</description>
    <description xml:lang="es">Escritorios y clientes livianos.</description>
    <description xml:lang="fr">Bureaux et clients lÃ©gers.</description>
    <description xml:lang="gu">àª¡à«‡àª¸à«àª•àªŸà«‹àªª àª…àª¨à«‡ àªªàª¾àª¤àª³àª¾ àª•à«àª²àª¾àª¯àª¨à«àªŸà«‹.</description>
    <description xml:lang="hi">à¤¡à¥‡à¤¸à¥à¤•à¤Ÿà¥‰à¤ª à¤”à¤° à¤¥à¤¿à¤¨ à¤•à¥à¤²à¤¾à¤‡à¤‚à¤Ÿ</description>
    <description xml:lang="ia">Scriptorios e clientes legier.</description>
    <description xml:lang="it">Desktop e thin client.</description>
    <description xml:lang="ja">ãƒ‡ã‚¹ã‚¯ãƒˆãƒƒãƒ—ã¨ã‚·ãƒ³ã‚¯ãƒ©ã‚¤ã‚¢ãƒ³ãƒˆ</description>
    <description xml:lang="kn">à²—à²£à²•à²¤à³†à²°à³†à²—à²³à³ à²¹à²¾à²—à³ à²¥à²¿à²¨à³â€Œ à²•à³à²²à³ˆà²‚à²Ÿà³â€Œà²—à²³à³.</description>
    <description xml:lang="ko">ë°ìŠ¤í¬íƒ‘ê³¼ ì”¬ í´ë¼ì´ì–¸íŠ¸</description>
    <description xml:lang="ml">à´¡à´¸àµà´•àµà´Ÿàµ‹à´ªàµà´ªàµà´•à´³àµà´‚ à´¥à´¿à´¨àµâ€ à´•àµà´²à´¯à´¨àµà´±àµà´•à´³àµà´‚àµà´±àµà´•à´³àµâ€</description>
    <description xml:lang="mr">à¤¡à¥‡à¤¸à¥à¤•à¤Ÿà¥‰à¤ªà¥à¤¸à¥ à¤µ à¤¥à¥€à¤¨ à¤•à¥à¤²à¤¾à¤à¤‚à¤Ÿà¥à¤¸à¥.</description>
    <description xml:lang="or">à¬¡à­‡à¬¸à­à¬•à¬Ÿà¬ª à¬à¬¬à¬‚ à¬¥à¬¿à¬¨ à¬•à­à¬²à¬¾à¬à¬£à­à¬Ÿà¬®à¬¾à¬¨à¥¤</description>
    <description xml:lang="pa">à¨¡à©ˆà¨¸à¨•à¨Ÿà¨¾à¨ª à¨…à¨¤à©‡ à¨¥à¨¿à©°à¨¨ à¨•à¨²à¨¾à¨ˆà¨‚à¨Ÿ</description>
    <description xml:lang="pl">Åšrodowiska graficzne i ciency klienci.</description>
    <description xml:lang="pt">Ambientes de Trabalho e clientes finos</description>
    <description xml:lang="pt_BR">Ambientes de Trabalho e clientes finos</description>
    <description xml:lang="ru">Ð Ð°Ð±Ð¾Ñ‡Ð¸Ðµ ÑÑ‚Ð¾Ð»Ñ‹ Ð¸ ?Ñ‚Ð¾Ð½ÐºÐ¸Ðµ? ÐºÐ»Ð¸ÐµÐ½Ñ‚Ñ‹.</description>
    <description xml:lang="sv">Skrivbord och tunna klienter.</description>
    <description xml:lang="ta">à®ªà®£à®¿à®®à¯‡à®Ÿà¯ˆ à®®à®±à¯à®±à¯à®®à¯ à®’à®²à¯à®²à®¿à®¯à®¾à®© à®µà®¾à®Ÿà®¿à®•à¯à®•à¯ˆà®¯à®¾à®³à®°à¯à®•à®³à¯.</description>
    <description xml:lang="te">à°¡à±†à°¸à±à°•à±à°Ÿà°¾à°ªà±à°¸à± à°®à°°à°¿à°¯à± à°¤à°¿à°¨à± à°•à±à°²à±ˆà°‚à°Ÿà±à°²à±.</description>
    <description xml:lang="uk">Ð Ð¾Ð±Ð¾Ñ‡Ñ– ÑÑ‚Ð°Ð½Ñ†Ñ–Ñ— Ñ‚Ð° Â«Ñ‚Ð¾Ð½ÐºÑ–Â» ÐºÐ»Ñ–Ñ”Ð½Ñ‚Ð¸.</description>
    <description xml:lang="zh">æ¡Œé¢ç’°å¢ƒèˆ‡ thin clinetã€‚</description>
    <description xml:lang="zh_CN">æ¡Œé¢å’Œç˜¦å®¢æˆ·ç«¯ã€‚</description>
    <description xml:lang="zh_TW">æ¡Œé¢ç’°å¢ƒèˆ‡ thin clinetã€‚</description>
    <display_order>70</display_order>
    <grouplist>
      <groupid>base-x</groupid>
      <groupid>desktop-debugging</groupid>
      <groupid>fonts</groupid>
      <groupid>gnome-desktop</groupid>
      <groupid>input-methods</groupid>
      <groupid>legacy-x</groupid>
      <groupid>remote-desktop-clients</groupid>
    </grouplist>
  </category>
  <category>
    <id>apps</id>
    <name>Applications</name>
    <name xml:lang="af">Toepassings</name>
    <name xml:lang="am">áˆ˜áŒ á‰€áˆšá‹« á•áˆ®áŒáˆ«áˆžá‰½</name>
    <name xml:lang="ar">ØªØ·Ø¨ÙŠÙ‚Ø§Øª</name>
    <name xml:lang="as">à¦à¦ªà§à¦²à¦¿à¦•à§‡à¦šà¦¨</name>
    <name xml:lang="bal">Ú©Ø§Ø±Ù…Ø±Ø²ÛŒØ§Ù†</name>
    <name xml:lang="be">Ð”Ð°ÑÑ‚Ð°ÑÐ°Ð²Ð°Ð½ÑŒÐ½Ñ–</name>
    <name xml:lang="bg">ÐŸÑ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ</name>
    <name xml:lang="bn">à¦…à§à¦¯à¦¾à¦ªà§à¦²à¦¿à¦•à§‡à¦¶à¦¨</name>
    <name xml:lang="bs">Aplikacije</name>
    <name xml:lang="ca">Aplicacions</name>
    <name xml:lang="cs">Aplikace</name>
    <name xml:lang="cy">Cymwysiadau</name>
    <name xml:lang="da">Programmer</name>
    <name xml:lang="de">Anwendungen</name>
    <name xml:lang="de_CH">Anwendungen</name>
    <name xml:lang="el">Î•Ï†Î±ÏÎ¼Î¿Î³Î­Ï‚</name>
    <name xml:lang="en_GB">Applications</name>
    <name xml:lang="es">Aplicaciones</name>
    <name xml:lang="et">Rakendused</name>
    <name xml:lang="eu">Aplikazioak</name>
    <name xml:lang="fa">Ø¨Ø±Ù†Ø§Ù…Ù‡â€ŒÙ‡Ø§</name>
    <name xml:lang="fa_IR">Ø¨Ø±Ù†Ø§Ù…Ù‡â€ŒÙ‡Ø§</name>
    <name xml:lang="fi">Apuohjelmat</name>
    <name xml:lang="fr">Applications</name>
    <name xml:lang="gl">AplicaciÃ³ns</name>
    <name xml:lang="gu">àª•àª¾àª°à«àª¯àª•à«àª°àª®à«‹</name>
    <name xml:lang="he">×™×©×•×ž×™×</name>
    <name xml:lang="hi">à¤…à¤¨à¥à¤ªà¥à¤°à¤¯à¥‹à¤—</name>
    <name xml:lang="hr">Aplikacije</name>
    <name xml:lang="hu">AlkalmazÃ¡sok</name>
    <name xml:lang="hy">Õ®Ö€Õ¡Õ£Ö€Õ¥Ö€</name>
    <name xml:lang="ia">Applicationes</name>
    <name xml:lang="id">Aplikasi</name>
    <name xml:lang="ilo">Dagiti Aplikasion</name>
    <name xml:lang="is">Forrit</name>
    <name xml:lang="it">Applicazioni</name>
    <name xml:lang="ja">ã‚¢ãƒ—ãƒªã‚±ãƒ¼ã‚·ãƒ§ãƒ³</name>
    <name xml:lang="ka">áƒžáƒ áƒáƒ’áƒ áƒáƒ›áƒ”áƒ‘áƒ˜</name>
    <name xml:lang="kn">à²…à²¨à³à²µà²¯à²—à²³à³</name>
    <name xml:lang="ko">ì‘ìš© í”„ë¡œê·¸ëž¨</name>
    <name xml:lang="lv">Lietojumprogrammas</name>
    <name xml:lang="mai">à¤…à¤¨à¥à¤ªà¥à¤°à¤¯à¥‹à¤—</name>
    <name xml:lang="mk">ÐÐ¿Ð»Ð¸ÐºÐ°Ñ†Ð¸Ð¸</name>
    <name xml:lang="ml">à´ªàµà´°à´¯àµ‹à´—à´™àµà´™à´³àµâ€</name>
    <name xml:lang="mr">à¤…à¤¨à¥à¤ªà¥à¤°à¤¯à¥‹à¤—</name>
    <name xml:lang="ms">Aplikasi</name>
    <name xml:lang="nb">Programmer</name>
    <name xml:lang="ne">à¤…à¤¨à¥à¤ªà¥à¤°à¤¯à¥‹à¤—</name>
    <name xml:lang="nl">Toepassingen</name>
    <name xml:lang="no">Programmer</name>
    <name xml:lang="nso">DitiriÅ¡o</name>
    <name xml:lang="or">à¬ªà­à¬°à­Ÿà­‹à¬—</name>
    <name xml:lang="pa">à¨à¨ªà¨²à©€à¨•à©‡à¨¶à¨¨</name>
    <name xml:lang="pl">Aplikacje</name>
    <name xml:lang="pt">AplicaÃ§Ãµes</name>
    <name xml:lang="pt_BR">AplicaÃ§Ãµes</name>
    <name xml:lang="ro">AplicaÅ£ii</name>
    <name xml:lang="ru">ÐŸÑ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ</name>
    <name xml:lang="si">à·€à·à¶©à·ƒà¶§à·„à¶±à·Š</name>
    <name xml:lang="sk">AplikÃ¡cie</name>
    <name xml:lang="sl">Aplikacije</name>
    <name xml:lang="sq">Zbatime</name>
    <name xml:lang="sr">ÐŸÑ€Ð¾Ð³Ñ€Ð°Ð¼Ð¸</name>
    <name xml:lang="sr@Latn">Programi</name>
    <name xml:lang="sr@latin">Programi</name>
    <name xml:lang="sv">Program</name>
    <name xml:lang="ta">à®ªà®¯à®©à¯à®ªà®¾à®Ÿà¯à®•à®³à¯</name>
    <name xml:lang="te">à°…à°¨à±à°µà°°à±à°¤à°¨à°¾à°²à±</name>
    <name xml:lang="tg">Ð‘Ð°Ñ€Ð½Ð¾Ð¼Ð°Ò³Ð¾</name>
    <name xml:lang="th">à¹à¸­à¸žà¸¥à¸´à¹€à¸„à¸Šà¸±à¸™</name>
    <name xml:lang="tr">Uygulamalar</name>
    <name xml:lang="uk">ÐŸÑ€Ð¾Ð³Ñ€Ð°Ð¼Ð¸</name>
    <name xml:lang="ur">Ø§Ù¾Ù„Ú©ÛŒØ´Ù†</name>
    <name xml:lang="vi">á»¨ng dá»¥ng</name>
    <name xml:lang="zh">æ‡‰ç”¨ç¨‹å¼</name>
    <name xml:lang="zh_CN">åº”ç”¨ç¨‹åº</name>
    <name xml:lang="zh_TW">æ‡‰ç”¨ç¨‹å¼</name>
    <name xml:lang="zu">Abayaleli</name>
    <description>Applications to perform a variety of tasks</description>
    <description xml:lang="de">Anwendungen zur AusfÃ¼hrung einer Vielzahl von Aufgaben</description>
    <description xml:lang="es">Aplicaciones para realizar una variedad de tareas</description>
    <description xml:lang="fr">Applications pour effectuer diffÃ©rentes tÃ¢ches</description>
    <description xml:lang="it">Applicazioni per eseguire una varietÃ  di compiti</description>
    <description xml:lang="ja">å„ç¨®ã‚¿ã‚¹ã‚¯ã‚’å®Ÿè¡Œã™ã‚‹ã‚¢ãƒ—ãƒªã‚±ãƒ¼ã‚·ãƒ§ãƒ³</description>
    <description xml:lang="ko">ë‹¤ì–‘í•œ ìž‘ì—…ì„ ì‹¤í–‰í•˜ê¸° ìœ„í•œ ì‘ìš© í”„ë¡œê·¸ëž¨</description>
    <description xml:lang="pt_BR">AplicaÃ§Ãµes para executar uma variedade de tarefas</description>
    <description xml:lang="ru">ÐŸÑ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð´Ð»Ñ Ð²Ñ‹Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ Ñ€Ð°Ð·Ð»Ð¸Ñ‡Ð½Ñ‹Ñ… Ð·Ð°Ð´Ð°Ñ‡</description>
    <description xml:lang="zh_CN">æ‰§è¡Œä¸åŒä»»åŠ¡çš„åº”ç”¨ç¨‹åº</description>
    <description xml:lang="zh_TW">æ‡‰ç”¨ç¨‹åºåŸ·è¡Œå„ç¨®ä»»å‹™</description>
    <display_order>80</display_order>
    <grouplist>
      <groupid>gnome-apps</groupid>
      <groupid>graphics</groupid>
      <groupid>internet-applications</groupid>
      <groupid>office-suite</groupid>
    </grouplist>
  </category>
  <environment>
    <id>graphical-server-environment</id>
    <name>Server with GUI</name>
    <name xml:lang="as">GUI à§° à¦¸à§ˆà¦¤à§‡ à¦šà¦¾à§°à§à¦­à¦¾à§°</name>
    <name xml:lang="cs">Server s grafickÃ½m uÅ¾ivatelskÃ½m rozhranÃ­m</name>
    <name xml:lang="de">Server mit GUI</name>
    <name xml:lang="de_CH">Server mit GUI</name>
    <name xml:lang="es">Servidor con GUI</name>
    <name xml:lang="fr">Serveur avec GUI</name>
    <name xml:lang="gu">GUI àªµàª¾àª³à«àª‚ àª¸àª°à«àªµàª°</name>
    <name xml:lang="hi">GUI à¤¸à¤¹à¤¿à¤¤ à¤¸à¤°à¥à¤µà¤°</name>
    <name xml:lang="it">Server con GUI</name>
    <name xml:lang="ja">ã‚µãƒ¼ãƒãƒ¼ (GUI ä½¿ç”¨)</name>
    <name xml:lang="kn">GUI à²…à²¨à³à²¨à³ à²¹à³Šà²‚à²¦à²¿à²°à³à²µ à²ªà³‚à²°à³ˆà²•à³†à²—à²£à²•</name>
    <name xml:lang="ko">ì„œë²„ - GUI ì‚¬ìš©</name>
    <name xml:lang="ml">à´œà´¿à´¯àµà´à´¯àµà´³àµà´³ à´¸à´°àµâ€à´µà´°àµâ€</name>
    <name xml:lang="mr">GUI à¤¸à¤¹ à¤¸à¤°à¥à¤µà¥à¤¹à¤°</name>
    <name xml:lang="or">GUI à¬¸à¬¹à¬¿à¬¤ à¬¸à¬°à­à¬­à¬°</name>
    <name xml:lang="pa">GUI à¨¨à¨¾à¨² à¨¸à¨°à¨µà¨°</name>
    <name xml:lang="pl">Serwer z graficznym interfejsem uÅ¼ytkownika</name>
    <name xml:lang="pt">Servidor com GUI</name>
    <name xml:lang="pt_BR">Servidor com GUI</name>
    <name xml:lang="ru">Ð¡ÐµÑ€Ð²ÐµÑ€ Ñ GUI</name>
    <name xml:lang="ta">GUI à®•à¯Šà®£à¯à®Ÿà¯à®³à¯à®³ à®šà¯‡à®µà¯ˆà®¯à®•à®®à¯</name>
    <name xml:lang="te">GUI à°¤à±‹ à°¸à±‡à°µà°¿à°•</name>
    <name xml:lang="uk">Ð¡ÐµÑ€Ð²ÐµÑ€ Ð· Ð³Ñ€Ð°Ñ„Ñ–Ñ‡Ð½Ð¸Ð¼ Ñ–Ð½Ñ‚ÐµÑ€Ñ„ÐµÐ¹ÑÐ¾Ð¼</name>
    <name xml:lang="zh">å«æœ‰ GUI çš„ä¼ºæœå™¨</name>
    <name xml:lang="zh_CN">å¸¦ GUI çš„æœåŠ¡å™¨</name>
    <name xml:lang="zh_TW">å«æœ‰ GUI çš„ä¼ºæœå™¨</name>
    <description>An integrated, easy-to-manage server with a graphical interface.</description>
    <description xml:lang="de">Ein integrierter, einfach zu verwaltender Server mit grafischer BenutzeroberflÃ¤che.</description>
    <description xml:lang="es">Un servidor integrado y fÃ¡cil de administrar con una interfaz grÃ¡fica.</description>
    <description xml:lang="fr">Un serveur intÃ©grÃ©, facile Ã  gÃ©rer, avec une interface graphique.</description>
    <description xml:lang="it">Un server integrato e facile da gestire con un'interfaccia grafica.</description>
    <description xml:lang="ja">çµ±åˆã•ã‚ŒãŸã€ç®¡ç†ãŒå®¹æ˜“ãªã‚µãƒ¼ãƒãƒ¼ (ã‚°ãƒ©ãƒ•ã‚£ã‚«ãƒ«ã‚¤ãƒ³ã‚¿ãƒ¼ãƒ•ã‚§ã‚¤ã‚¹ã‚ã‚Š) ã§ã™ã€‚</description>
    <description xml:lang="ko">ê·¸ëž˜í”½ ì¸í„°íŽ˜ì´ìŠ¤ë¡œ í†µí•©ë˜ê³  ê´€ë¦¬ê°€ ì‰¬ìš´ ì„œë²„ </description>
    <description xml:lang="pt">Um servidor integrado e fÃ¡cil de gerenciar com uma interface grÃ¡fica.</description>
    <description xml:lang="pt_BR">Um servidor integrado e fÃ¡cil de gerenciar com uma interface grÃ¡fica.</description>
    <description xml:lang="ru">Ð˜Ð½Ñ‚ÐµÐ³Ñ€Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð½Ñ‹Ð¹, Ð¿Ñ€Ð¾ÑÑ‚Ð¾Ð¹ Ð² ÑƒÐ¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð¸Ð¸ ÑÐµÑ€Ð²ÐµÑ€ Ñ Ð³Ñ€Ð°Ñ„Ð¸Ñ‡ÐµÑÐºÐ¸Ð¼ Ð¸Ð½Ñ‚ÐµÑ€Ñ„ÐµÐ¹ÑÐ¾Ð¼.</description>
    <description xml:lang="zh_CN">é›†æˆçš„æ˜“äºŽç®¡ç†çš„å¸¦æœ‰å›¾å½¢ç•Œé¢çš„æœåŠ¡å™¨</description>
    <description xml:lang="zh_TW">é›†æˆï¼Œæ˜“æ–¼ç®¡ç†çš„æœå‹™å™¨ï¼Œå¸¶æœ‰åœ–å½¢ç•Œé¢ã€‚</description>
    <display_order>1</display_order>
    <grouplist>
      <groupid>base-x</groupid>
      <groupid>container-management</groupid>
      <groupid>core</groupid>
      <groupid>fonts</groupid>
      <groupid>gnome-desktop</groupid>
      <groupid>guest-desktop-agents</groupid>
      <groupid>hardware-monitoring</groupid>
      <groupid>hardware-support</groupid>
      <groupid>headless-management</groupid>
      <groupid>input-methods</groupid>
      <groupid>internet-browser</groupid>
      <groupid>multimedia</groupid>
      <groupid>networkmanager-submodules</groupid>
      <groupid>print-client</groupid>
      <groupid>server-product</groupid>
      <groupid>standard</groupid>
    </grouplist>
    <optionlist>
      <groupid>debugging</groupid>
      <groupid>dns-server</groupid>
      <groupid>file-server</groupid>
      <groupid>ftp-server</groupid>
      <groupid>guest-agents</groupid>
      <groupid>infiniband</groupid>
      <groupid>mail-server</groupid>
      <groupid>network-file-system-client</groupid>
      <groupid>network-server</groupid>
      <groupid>performance</groupid>
      <groupid>remote-desktop-clients</groupid>
      <groupid>remote-system-management</groupid>
      <groupid>smb-server</groupid>
      <groupid>virtualization-client</groupid>
      <groupid>virtualization-hypervisor</groupid>
      <groupid>virtualization-tools</groupid>
      <groupid>web-server</groupid>
    </optionlist>
  </environment>
  <environment>
    <id>server-product-environment</id>
    <name>Server</name>
    <name xml:lang="fr">Serveurs</name>
    <name xml:lang="ja">ã‚µãƒ¼ãƒãƒ¼</name>
    <name xml:lang="ko">ì„œë²„</name>
    <name xml:lang="zh_CN">æœåŠ¡å™¨</name>
    <description>An integrated, easy-to-manage server.</description>
    <description xml:lang="de">Ein integrierter, einfach zu verwaltender Server.</description>
    <description xml:lang="es">Un servidor integrado y fÃ¡cil de administrar.</description>
    <description xml:lang="fr">Un serveur intÃ©grÃ©, facile Ã  gÃ©rer.</description>
    <description xml:lang="it">Un server integrato e facile da gestire.</description>
    <description xml:lang="ja">çµ±åˆã•ã‚ŒãŸã€ç®¡ç†ãŒå®¹æ˜“ãªã‚µãƒ¼ãƒãƒ¼ã§ã™ã€‚</description>
    <description xml:lang="ko">í†µí•©ë˜ê³  ê´€ë¦¬ê°€ ì‰¬ìš´ ì„œë²„ </description>
    <description xml:lang="pt">Um servidor integrado e fÃ¡cil de gerir.</description>
    <description xml:lang="pt_BR">Um servidor integrado e fÃ¡cil de gerir.</description>
    <description xml:lang="ru">Ð˜Ð½Ñ‚ÐµÐ³Ñ€Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð½Ñ‹Ð¹, Ð¿Ñ€Ð¾ÑÑ‚Ð¾Ð¹ Ð² ÑƒÐ¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð¸Ð¸ ÑÐµÑ€Ð²ÐµÑ€.</description>
    <description xml:lang="zh_CN">é›†æˆçš„æ˜“äºŽç®¡ç†çš„æœåŠ¡å™¨</description>
    <description xml:lang="zh_TW">ä¸€å€‹é›†æˆï¼Œæ˜“æ–¼ç®¡ç†çš„æœå‹™å™¨ã€‚</description>
    <display_order>2</display_order>
    <grouplist>
      <groupid>container-management</groupid>
      <groupid>core</groupid>
      <groupid>hardware-support</groupid>
      <groupid>headless-management</groupid>
      <groupid>server-product</groupid>
      <groupid>standard</groupid>
    </grouplist>
    <optionlist>
      <groupid>debugging</groupid>
      <groupid>dns-server</groupid>
      <groupid>file-server</groupid>
      <groupid>ftp-server</groupid>
      <groupid>gnome-desktop</groupid>
      <groupid>guest-agents</groupid>
      <groupid>hardware-monitoring</groupid>
      <groupid>infiniband</groupid>
      <groupid>mail-server</groupid>
      <groupid>network-file-system-client</groupid>
      <groupid>network-server</groupid>
      <groupid>performance</groupid>
      <groupid>remote-system-management</groupid>
      <groupid>smb-server</groupid>
      <groupid>virtualization-hypervisor</groupid>
      <groupid>web-server</groupid>
    </optionlist>
  </environment>
  <environment>
    <id>virtualization-host-environment</id>
    <name>Virtualization Host</name>
    <name xml:lang="as">à¦­à¦¾à§°à¦›à§à§±à§‡à¦²à¦¾à¦‡à¦œà§‡à¦·à¦£ à¦¹à¦¸à§à¦Ÿ</name>
    <name xml:lang="cs">VirtualizaÄnÃ­ hostitel</name>
    <name xml:lang="de">Virtualisierungs-Host</name>
    <name xml:lang="de_CH">Virtualisierungs-Host</name>
    <name xml:lang="es">Host de virtualizaciÃ³n</name>
    <name xml:lang="fr">HÃ´te de virtualisation</name>
    <name xml:lang="gu">àªµàª°à«àªšà«àª¯à«àª…àª²àª¾àª‡àªà«‡àª¶àª¨ àª¯àªœàª®àª¾àª¨</name>
    <name xml:lang="hi">à¤µà¤°à¥à¤šà¥à¤…à¤²à¤¾à¤‡à¤œà¥‡à¤¶à¤¨ à¤®à¥‡à¤œà¤¬à¤¾à¤¨</name>
    <name xml:lang="it">Host di virtualizzazione</name>
    <name xml:lang="ja">ä»®æƒ³åŒ–ãƒ›ã‚¹ãƒˆ</name>
    <name xml:lang="kn">à²µà²°à³à²šà³à²²à³ˆà²¸à³‡à²¶à²¨à³ à²†à²¤à²¿à²¥à³‡à²¯à²—à²£à²•</name>
    <name xml:lang="ko">ê°€ìƒí™” í˜¸ìŠ¤íŠ¸</name>
    <name xml:lang="ml">à´µà´¿à´°àµâ€à´šàµà´šàµà´µà´²àµˆà´¸àµ‡à´·à´¨àµâ€ à´¹àµ‹à´¸àµà´±àµà´±àµ</name>
    <name xml:lang="mr">à¤µà¤°à¥à¤šà¥à¤¯à¥à¤…à¤²à¤¾à¤‡à¤œà¥‡à¤¶à¤¨ à¤¯à¤œà¤®à¤¾à¤¨</name>
    <name xml:lang="or">à¬†à¬­à¬¾à¬¸à­€à¬•à¬°à¬£ à¬¹à­‹à¬·à­à¬Ÿ</name>
    <name xml:lang="pa">à¨†à¨­à¨¾à¨¸à©€à¨•à¨°à¨£ à¨®à©‡à¨œà¨¬à¨¾à¨¨</name>
    <name xml:lang="pl">Gospodarz wirtualizacji</name>
    <name xml:lang="pt">MÃ¡quina de VirtualizaÃ§Ã£o</name>
    <name xml:lang="pt_BR">MÃ¡quina de VirtualizaÃ§Ã£o</name>
    <name xml:lang="ru">Ð¥Ð¾ÑÑ‚ Ð²Ð¸Ñ€Ñ‚ÑƒÐ°Ð»Ð¸Ð·Ð°Ñ†Ð¸Ð¸</name>
    <name xml:lang="ta">à®®à¯†à®¯à¯à®¨à®¿à®•à®°à®¾à®•à¯à®• à®µà®´à®™à¯à®•à®¿</name>
    <name xml:lang="te">à°µà°°à±à°šà±à°¯à±à°²à±ˆà°œà±‡à°·à°¨à± à°…à°¤à°¿à°§à±‡à°¯à°¿</name>
    <name xml:lang="uk">ÐžÑÐ½Ð¾Ð²Ð½Ð° ÑÐ¸ÑÑ‚ÐµÐ¼Ð° Ð²Ñ–Ñ€Ñ‚ÑƒÐ°Ð»Ñ–Ð·Ð°Ñ†Ñ–Ñ—</name>
    <name xml:lang="zh">è™›æ“¬ä¸»æ©Ÿ</name>
    <name xml:lang="zh_CN">è™šæ‹ŸåŒ–ä¸»æœº</name>
    <name xml:lang="zh_TW">è™›æ“¬ä¸»æ©Ÿ</name>
    <description>Minimal virtualization host.</description>
    <description xml:lang="as">à¦¨à§‚à¦¨à§à¦¯à¦¤à¦® à¦­à¦¾à§°à¦›à§à§±à§‡à¦²à¦¾à¦‡à¦œà§‡à¦·à¦£ à¦¹à¦¸à§à¦Ÿà¥¤</description>
    <description xml:lang="cs">MinimÃ¡lnÃ­ virtualizaÄnÃ­ hostitel</description>
    <description xml:lang="de">Minimaler Virtualisierungs-Host.</description>
    <description xml:lang="de_CH">Minimaler Virtualisierungs-Host.</description>
    <description xml:lang="es">Host de virtualizaciÃ³n mÃ­nima.</description>
    <description xml:lang="fr">HÃ´te de virtualisation minimal.</description>
    <description xml:lang="gu">àª¨à«àª¯à«‚àª¨àª¤àª® àªµàª°à«àªšà«àª¯à«àª…àª²àª¾àª‡àªà«‡àª¶àª¨ àª¯àªœàª®àª¾àª¨.</description>
    <description xml:lang="hi">à¤¨à¥à¤¯à¥‚à¤¨à¤¤à¤® à¤†à¤­à¤¾à¤¸à¥€à¤•à¤°à¤£ à¤®à¥‡à¤œà¤¬à¤¾à¤¨.</description>
    <description xml:lang="it">Host di virtualizzazione minima.</description>
    <description xml:lang="ja">æœ€å°ã®ä»®æƒ³åŒ–ãƒ›ã‚¹ãƒˆã§ã™ã€‚</description>
    <description xml:lang="kn">à²•à²¨à²¿à²·à³à²Ÿ à²µà²°à³à²šà³à²²à³ˆà²¸à³‡à²¶à²¨à³ à²†à²¤à²¿à²¥à³‡à²¯à²—à²£à²•.</description>
    <description xml:lang="ko">ìµœì†Œ ê°€ìƒí™” í˜¸ìŠ¤íŠ¸ìž…ë‹ˆë‹¤.</description>
    <description xml:lang="ml">à´à´±àµà´±à´µàµà´‚ à´•àµà´±à´žàµà´ž à´µà´¿à´°àµâ€à´šàµà´šàµà´µà´²àµˆà´¸àµ‡à´·à´¨àµâ€ à´¹àµ‹à´¸àµà´±àµà´±àµ.</description>
    <description xml:lang="mr">à¤•à¤¿à¤®à¤¾à¤¨ à¤µà¤°à¥à¤šà¥à¤¯à¥à¤…à¤²à¤¾à¤‡à¤œà¥‡à¤¶à¤¨ à¤¯à¤œà¤®à¤¾à¤¨.</description>
    <description xml:lang="or">à¬¸à¬°à­à¬¬à¬¨à¬¿à¬®à­à¬¨ à¬†à¬­à¬¾à¬¸à­€à¬•à¬°à¬£ à¬¹à­‹à¬·à­à¬Ÿà¥¤</description>
    <description xml:lang="pa">à¨˜à©±à¨Ÿà©‹-à¨˜à©±à¨Ÿ à¨†à¨­à¨¾à¨¸à©€à¨•à¨°à¨£ à¨®à©‡à¨œà¨¬à¨¾à¨¨à¥¤</description>
    <description xml:lang="pl">Minimalny gospodarz wirtualizacji.</description>
    <description xml:lang="pt">Host de virtualizaÃ§Ã£o mÃ­nimo.</description>
    <description xml:lang="pt_BR">Host de virtualizaÃ§Ã£o mÃ­nimo.</description>
    <description xml:lang="ru">ÐœÐ¸Ð½Ð¸Ð¼Ð°Ð»ÑŒÐ½Ñ‹Ð¹ ÐºÐ¾Ð¼Ð¿Ð»ÐµÐºÑ‚ Ñ…Ð¾ÑÑ‚Ð° Ð²Ð¸Ñ€Ñ‚ÑƒÐ°Ð»Ð¸Ð·Ð°Ñ†Ð¸Ð¸.</description>
    <description xml:lang="ta">à®•à¯à®±à¯ˆà®¨à¯à®¤à®ªà®Ÿà¯à®š à®®à¯†à®¯à¯à®¨à®¿à®•à®°à®¾à®•à¯à®• à®µà®´à®™à¯à®•à®¿.</description>
    <description xml:lang="te">à°•à°¨à±€à°¸à°ªà± à°µà°°à±à°šà±à°¯à±à°µà°²à± à°…à°¤à°¿à°§à±‡à°¯à°¿.</description>
    <description xml:lang="uk">ÐœÑ–Ð½Ñ–Ð¼Ð°Ð»ÑŒÐ½Ð° Ð¾ÑÐ½Ð¾Ð²Ð½Ð° ÑÐ¸ÑÑ‚ÐµÐ¼Ð° Ð´Ð»Ñ Ð²Ñ–Ñ€Ñ‚ÑƒÐ°Ð»Ñ–Ð·Ð°Ñ†Ñ–Ñ—.</description>
    <description xml:lang="zh">æœ€å°åž‹çš„è™›æ“¬åŒ–ä¸»æ©Ÿã€‚</description>
    <description xml:lang="zh_CN">æœ€å°è™šæ‹ŸåŒ–ä¸»æœºã€‚</description>
    <description xml:lang="zh_TW">æœ€å°åž‹çš„è™›æ“¬åŒ–ä¸»æ©Ÿã€‚</description>
    <display_order>99</display_order>
    <grouplist>
      <groupid>base</groupid>
      <groupid>core</groupid>
      <groupid>standard</groupid>
      <groupid>virtualization-hypervisor</groupid>
      <groupid>virtualization-tools</groupid>
    </grouplist>
    <optionlist>
      <groupid>debugging</groupid>
      <groupid>network-file-system-client</groupid>
      <groupid>remote-system-management</groupid>
      <groupid>virtualization-platform</groupid>
    </optionlist>
  </environment>
  <environment>
    <id>workstation-product-environment</id>
    <name>Workstation</name>
    <name xml:lang="de">Arbeitsplatz</name>
    <name xml:lang="es">EstaciÃ³n de trabajo</name>
    <name xml:lang="fr">Station de travail</name>
    <name xml:lang="it">Postazione di lavoro</name>
    <name xml:lang="ja">ãƒ¯ãƒ¼ã‚¯ã‚¹ãƒ†ãƒ¼ã‚·ãƒ§ãƒ³</name>
    <name xml:lang="ko">ì›Œí¬ìŠ¤í…Œì´ì…˜</name>
    <name xml:lang="pt_BR">Workstation</name>
    <name xml:lang="ru">Ð Ð°Ð±Ð¾Ñ‡Ð°Ñ ÑÑ‚Ð°Ð½Ñ†Ð¸Ñ</name>
    <name xml:lang="zh_CN">å·¥ä½œç«™</name>
    <name xml:lang="zh_TW">å·¥ä½œç«™</name>
    <description>Workstation is a user-friendly desktop system for laptops and PCs.</description>
    <description xml:lang="de">Workstation ist ein benutzerfreundliches Desktop-System fÃ¼r Laptops und PCs.</description>
    <description xml:lang="es">Workstation es un sistema de escritorio fÃ¡cil de usar para ordenadores portÃ¡tiles y PC.</description>
    <description xml:lang="fr">Une station de travail est un systÃ¨me de bureau convivial pour les ordinateurs portables et les PC.</description>
    <description xml:lang="it">Workstation Ã¨ un sistema desktop di facile utilizzo per computer portatili e PC.</description>
    <description xml:lang="ja">ãƒŽãƒ¼ãƒˆãƒ‘ã‚½ã‚³ãƒ³ãŠã‚ˆã³ PC å‘ã‘ã®ãƒ¦ãƒ¼ã‚¶ãƒ¼ãƒ•ãƒ¬ãƒ³ãƒ‰ãƒªãƒ¼ãªãƒ‡ã‚¹ã‚¯ãƒˆãƒƒãƒ—ã‚·ã‚¹ãƒ†ãƒ ã§ã™ã€‚</description>
    <description xml:lang="ko">ì›Œí¬ìŠ¤í…Œì´ì…˜ì€ ì‚¬ìš©ìž ì¹œí™”ì ì¸ ëž©íƒ‘ ë° PC ìš© ë°ìŠ¤í¬íƒ‘ ì‹œìŠ¤í…œìž…ë‹ˆë‹¤. </description>
    <description xml:lang="pt">Workstation Ã© um sistema de desktop amigÃ¡vel para laptops e PCs.</description>
    <description xml:lang="pt_BR">Workstation Ã© um sistema de desktop amigÃ¡vel para laptops e PCs.</description>
    <description xml:lang="ru">Ð Ð°Ð±Ð¾Ñ‡Ð°Ñ ÑÑ‚Ð°Ð½Ñ†Ð¸Ñ - ÑÑ‚Ð¾ ÑƒÐ´Ð¾Ð±Ð½Ð°Ñ Ð´Ð»Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð½Ð°ÑÑ‚Ð¾Ð»ÑŒÐ½Ð°Ñ ÑÐ¸ÑÑ‚ÐµÐ¼Ð° Ð´Ð»Ñ Ð½Ð¾ÑƒÑ‚Ð±ÑƒÐºÐ¾Ð² Ð¸ ÐŸÐš.</description>
    <description xml:lang="zh_CN">å·¥ä½œç«™æ˜¯ç”¨æˆ·å‹å¥½çš„ç¬”è®°æœ¬ç”µè„‘å’Œ PC çš„æ¡Œé¢ç³»ç»Ÿ</description>
    <description xml:lang="zh_TW">Workstationæ˜¯ä¸€æ¬¾é¢å‘ç­†è¨˜æœ¬é›»è…¦å’ŒPCçš„ç”¨æˆ¶å‹å¥½åž‹æ¡Œé¢ç³»çµ±ã€‚</description>
    <display_order>4</display_order>
    <grouplist>
      <groupid>base-x</groupid>
      <groupid>core</groupid>
      <groupid>fonts</groupid>
      <groupid>gnome-desktop</groupid>
      <groupid>guest-desktop-agents</groupid>
      <groupid>hardware-support</groupid>
      <groupid>internet-browser</groupid>
      <groupid>multimedia</groupid>
      <groupid>networkmanager-submodules</groupid>
      <groupid>print-client</groupid>
      <groupid>standard</groupid>
      <groupid>workstation-product</groupid>
    </grouplist>
    <optionlist>
      <groupid>backup-client</groupid>
      <groupid>gnome-apps</groupid>
      <groupid>headless-management</groupid>
      <groupid>internet-applications</groupid>
      <groupid>office-suite</groupid>
      <groupid>remote-desktop-clients</groupid>
      <groupid>smart-card</groupid>
    </optionlist>
  </environment>
</comps>
   07070100000112000081B40000000000000000000000016290A0C1000134B8000000000000000000000000000000000000009400000000spacewalk-backend/satellite_tools/test/unit/repodata/7b3e68b8ce7cbaf431e311014e097b99390465ce660eebdf3bd469524aea8059-comps-AppStream.x86_64.xml.xz   ý7zXZ  i"Þ6 !   t/å£å$·ð ] Ë‡ØÎf‘ƒÊý{3Ôé·Ú(1v%f M*	mj÷)p80çÌVÒ×’'<Wvñ6¿Â)ÍHË;&ÁvÅãª
C m§û?Ê²ÅÆ-ñ]@=
d†„"Ù3N=½sc´ð0Ýl·Ìù	J®Ø‚õ²ÍößÃOwã¬@ó~¦ÉTõÈ+ßRVþ	”è¡:æq.¬{Û,°ºä7$hÖö=ó’Á£wkêº÷TÍãþ÷ÆîË,™(×·U…0B¸ÓŽj˜bOÚ¾Ý¾<£ïo+ùüGiŠeÐ¬W-Ã ªú|7&Töh§vÝÀ7u&ªÃ”ì‡¸éo@!/$ç¨u×ï¼­2µb
™›$5S¥p`¶¯ÈÊî6t~eŠ	Ï/Ð2–„,D.dÁ‰v›9;*¦š;_ð‰Ê)Òøt5F¤ý½é{…2îFZ¤NË.É2ª…4ð¡˜QõëÏ¶Uô?>ÍŠöÑô+45¼ä Ð£ƒFF
$¦†\LòÌ5»Â|.R†§ü'Á«ô£QÆlQZy^J©LYNßûiþùÁT3ÝJA~wom ø´,¬^£c %û~q°QÁâmñbwµ%òàŸfXÔ;O¨Å}¸ TLøY•þŒŠÒ	Ðwj¤%­ $@ß àÄEs… þŽÔÖ— €rÃÒLY÷š@“¨ÏÎ6¿´FM«†%(bê¼¤a¥á´÷ÓÜFƒ¹„†µÁx#9]ŠNãúIµµçÃZZEIkbõ@”aq³~`pŸcvW)Î¤~Dˆd9+"w¬§|ª~æ²,ÒdwÞBLÿsX²Ï¸7 soÅÈŒ]ç;«wAjoY¢®2¦# Ô³:m¿B‚¨¿\ØÍQÂ‹."rÄZ:ˆ$‰ÍKŠL6Û3Kód*)çNêc±…6ÿ™€1kðK¦q f^ŸMÑ[Íj|ÕƒýH¶B²šó-~FoÆ‘Xk!„z!cÂ–ïäæÖ“;Òáÿ<yåBÆõÑ¶áKÉ½6PˆÕõÅØ©ÈŽ#"×þ“Á:“äÔåÍòRµF.Ý1Ó@”ãÌ¿¾JÉcÑÙµ¦4Ò>áð*¡(j÷Äx¡ò¹ôIG$Š©d,ÂªäœL?1I%c§#Bq¥ hÖ°£(ËæR	ÖÊ	ÍVI_šZÎ·×ð"H…—ÙÄmäŸA|Ýà‹ ÊÓÿUåhëK±g!p&…í½_Ó‘=Ñ¸†ÓsB‹µ·	TýEs~ ÀÄ@Ùìñ(Z ±ñîŠú{¦Y_XŽøÖ ñïÌ¼# ã`”¦2‘cââw>¶ÄaØ5.6µùÚÊ‰óŠ'¸èøò×ã„Ì>†Í”ÑÞ:èúA[ÂàÏvn]Ê$žsï›¬q£Ö­>¯ê·9:bjìàäË…ø…4÷Ûp‚v&5ß<4Jf¯dŠ¬²&­QË+xæ}úÐ`êa6$¨ûqŒR–Ü,*dø’`ùÛ„jLÞ2è¾{üç.Ñ¦êÅ5´­áQÎðÎ±Â½p”i&&àÂaH¨&[ž|Á€îD-t0ô*–ßè¥ÇH0µ™b’ð(`ôa¿±D–X Sx£”‚»ô]ÎÓ‰mÃR£;ùÂ.›u¥Ò©8étÊ¶K¤Øÿ¼šÿ?M¶ºûÃ°qC®«ù¸„¥2dþfÇtá<ëÝzá:7¯ÎÈEõYîÎBõFÓô¾çXmaéHÌš4¡ñ¯uƒŸóJ‡dµÂï¿6 eºíÖäR¿H´¨z¹DAÑŠå	)jz7dôÔ®€t)ø¥;•<'@ ñŠ2¼óq
VÔI’œìmå¯¢B?•ÍÈMä×—>÷6z ‚2ŸkS°Nü· uRËì"÷j¦ƒ‡`ÙlF‹aø÷ìABQÙ—[ÓMÊ·zâ/xœEN	J™ä#iå÷ì‚`×PâîÝ7hµ…•‹ _€ F{—O0ë ®roòP¯Èô^„Ïuah”ÚÙÎ}sã)ÔÒVH’ÐŽÍá¨_<kÿK“t¦C›ü¬±ùœ˜áºf`áïýÅ”^ýs¦Jÿ™ÛFy{œàV»4pb2îá wµCúÞ\Ú(=¡3ê}£Šº³¥V¾230vw³+dLÚ©F±ãŒ¼®gãqö'òœD±èMÁnHk¬M…«Äâ]¬ü/Üy›¼lw8Ëˆx¿7ŽÛ,ÔYMÆ0o,«†Ör0öEÁÈD¾àP{Ãõo\5×ÀÓÖœ¾£¤XW ãÔ€Ï‰[ž&ÅH*ø§â×G»·¡Ê@ïÅ6˜¤`C8chO,“ˆ¡lÆªlM`5«¶n5p˜9v›i:¨Å{ï‚Òuž\U'Y™®‚öhá18@ºÙô¸!bŸÅê”±OèZpÖ8&%ûÕMRdxy|éY¤L\b?.7µ2w:CÇ¶ÈXÿðÃ°)/Nkó.C€4œ+­^„Ô0›óÉ¢è‰òÍŸ;2/õY=†¸»¾ÍZ‹K[gf4È"tQÁþsÂÎ\iG¤y„ÅŽú{`4”wÅ¿j!ÏÓGgêìPW¯oMÀ¢˜Q#t‹!n½à%Æ†„Øôñ-ü!Ñ,o·!ö)Ý„¹6½Ÿ;ËÕ*bá:¹õaŒÞçþîÆBôN­—‡¼ŒO Ó$¹”×ê¼•X²4‰P‹4c»G=†ß0Å¹ÙáûÂ
¨ÍžŠ¿Ûô÷ÞÕç II¦ôºWŒÒš«9Pü\`šàzß¶+Œs`iòe$òëu  ôÓÁlðÊá[Ó#¿¡¶øRßÆ­0°8®ýM`ó·VJºßçñ^ |ÍCq¥o^"Ý˜®æÔ“Ë²âÇ:Mk+ Ñž…Ç÷lyÂt‰Ö­á¢PAÀPŸ(:j ?‘´¤ˆÞ`8Êç"è—ã%0œ5¯Â0~¼D$]s~
Ï¹4µá¤æZ…CUõƒ>W­àYš'Ç²ªJ1®åÉ.×¾d7€ú:Ý‡ò}FYµÕùÕ	Óõ¯¹‚þ*­åÒaŠf	%ãÊ„ŠF¬|Ó˜ÙƒßÜÊnŒç:ƒY\{×N;âDÏ÷ Rþ¡^î{+Éöý6É^¬?Á¡Pk \bùùH¾ì]Ã\eVÅf­ïÎI|<v!ÉjèCÿ?’¨ÕP×ÆÝfš›
g7ñýöÀ4 Û—99Ú¨ìIàÔi‘ûVæ°î’rí¾eŠ¦Õ`}Ã[fkIéò.ÇëEÅ‚²-é¿nÔï 	<K>Þ/ì¦ˆy£}Íý!ky±éáš[ÑØ³ˆ@÷Å;õjÔÎåÉ˜oe®Ð™5O³ ,ªUù7lKWƒTåq×0Ÿ–Qü®á!½!»RÇ•ËÓ•c
…î­ã,,®—NÈ2ž¥Ì<©Ýæi…ïã½A-Ôáu©ƒëÌ¸Sœ~Ñ-	N›ðÞé:I¡m¿˜’–À³ÅÂ8æo.LËÜšõ|˜ÝÜ¤>Ð±,jRC‡‚ƒªB€ï		}ÀóÐ>ÝµÛÙ—“¢e}¾µáMÔè~î~g·¡ŸHg˜MsÍåBÒpë³\f»sÛd»ßÁŒ4ó¢_¿ƒo73a{˜•c‚øÕ–&hS´"”§
Ç‡€=ï¨õ”K«3¿´Ÿ$aö¡’ãvHÉ¥*Ð‘$ì'{.À]a7B·IøjSzEØæäÜ!Ð‘05“%‹g;p9;“ÿPQô§ÿ1bØÁdÀj·CÛÜ	œÆ¬®
oû]”ºt%”k¬¤p ó•îV¢:¢5pþÂ©A›ú¸}‡(3¯†§!º <UnƒRóÊ¹¢?È5.Ü‹†4p™îGH#jÍ|u,‡4bJ&{*1@ÒŠ"$6ûüA—9å”«œŽb&L,$ªä!Aô6Œ•¼N~_Ý@šÃ.'˜g4ži¿VìU$›¤…£§¿õåj}4€·:°Êt*Ì·8ÕƒFW˜ÓAÎÐJ`W¿ßw>¯ Þx>“ÎGdl8^Êí, øyÁ•c*w·ÆGehuö©}GnºüB,”p‘ÞŽOK@GçÍ-üNã~Áƒ­¨kÐî)U8ËÇ˜½ÖCÚÑÒûß2U¡väÉðænåGq‰=[$ÉæT®]@DÐÆåG÷+)ú­> wàG»¼œîˆWV¿îÁ³ú3ýË6…ùVqVâa'yƒU6õ¯þ.TiŒ8]¯eáx0œ™.±	ÓLÅÞv°&
U{m¿*h‘{A]äÓ00
iëVUog‡Æò¼Ç’²«ReŠS~‘~'óx°á¡ÛÝ¨ÔgRœÒô¾ÍéŽ ©h2Äz‘fâÃÅya÷^áWên½º¬9ŽÈ»rzrâäš¶".èeKŠxýDƒ¾Ž%)‹(9ÆÑ:†]›]ÅÁÔŒ<Tl±rãwºçQygÆ–×	„j«ÙZ7¾(´ûpúÝÔ¶F‘pŽ.¬ßØ¤??ÿ8’}[ÑØ…2œÃb¡,{öa p˜6§ú$½T‰:-Ù‘NþœŒš$ÄâÓš3)›Ÿ×Êòlýí]Ž_,PÓr©1÷ý	ß‰ŒOPú#ÔäÖ#û™¹/zE¶ƒd 66Ð­
ç(ÒX‘ú@%ØBL]7Ý˜fÚ7)pô{kÄ3zeãB¹“ÈÃÌÙ5#-pÀ)ltWõBOÄ ·•‚&pB1êœ|…X@Ø±z>
U!Dp‰ÏÊW•»ªfJÐ€ÌmÆ:¬üRÿÌ
Kô0Ý[SÏ÷€	Å#z¡imFy7[÷ÎãÝÔÁÌäP]}í°ÇÈ·$	P44Y3™Î#Ã\§åPª†³j§[ª´X³!Ú²ªeGç ¢‡ ÷T«IªB;j€dVÞ„ ÒÒ`Õq³ìöÎí¼ÅÈ{E™T×J9$õÅlÒø®&pAø[,Ÿ™ãÝ;×ßWÅ8Î(îÉÿjÚœGtkeON˜º—Ì£‰ø^ppµ¸¬T‚á©§;ŸkŽüÓa&–ÓÌmƒ‹f~^=+(!‡=;‰þ32%¤3ã]š@í?+OÁ¹L°w¼gÐ]˜+ ðÄÎ³òÌj¼dÞZ©êdb—Äa0äÍ!$BrÕ([~#eìlLûVÝé+æBµhK—T»~E-z`šÏÆ®Ó›W ]`9NÈÞžEèQˆ‡-ºž9oüq/1ÛÄ²Ï]bÂ-Ö¦¿îÜ'QôÜ}2Inhyg•ÛiªÉ…[ðI$¨6ÜQì)s•Í3fyþÍeæ¤4cÍ¼p·sOs:¾u¥jÄÀ®øÍ®èXPº’¡2|P%ÐÁ]ç_sÁ;0õ C;§7›m[ø*z®Sƒòµþ‡N5€MBã_¦I_æuÆ®VŽöíÏºc×;þ/×V×·ÄÖƒÜ<»+À”»d5FYV-^ûC‹˜;:.ê•«jq=¡Øá­3ØÚ&8Óþ-?[ˆ¢ÏÜÕÒfSxËQÅûäWêâC€v?¨A}ª
M…¯¬5R3xÉµ™f¡qð­ÏÇØ#d ´ ñd[»…ÊÛ-†ÏdƒÄ{´ÔwÜÅ¦ï…€HmÁ¡HnìÍí3ÂïWêýé fÅœ’SîÅ¿8Æ°x_NÇ¼ŸÉƒN€ëÒ$ðcWáy1ƒ_z!%ô?^œ°ìõ–È£ÔŽ*)´øá`X"É°Ö-4¹7,Ä*N¯¿[}|—&…l¶¾>,Ýþ%enÖÁ|¾ýð"F6õÉ5x§"ËôËyn#VØY~±É‡¸;™~óêü†€ý¿k¡P‡<Pß0xí‰9oÊ3æ`Ž8ðÄA“;²M.]¥æ]ÃËˆÑ›Ç-{ƒ­ªV~†&Jv–ÞgK5;êX¸ž	‹›3øqÀ–•ÜDÏZãý+©‹OM´&iáŸU4ãõ¹
G»MSàŽ9sÜ$Mò­àÜ/¤ÝÏF­³«\¼DÈ¸ÂöqI+ ô”ÎxÖžòñA¢š§Ò0Ê7ã„xF%N´‚N% Î}XM³î”ä%µ_²ÅY¡sÓ„ë˜'•e¡ärûµÆŽ%Õ,VS*Šâ'ù\9{0/èÄ°yUqØahéBŸ¡Æ›R®þ~ÎÆéÀûÆ±obÞ×xIz–[#áafü{ÁaÌÑF>†¾*Y;÷ÛÁ¼ÅM[ð¾¼ãL¦}£sì‚w“Âž¯è*kò¹6ð"±“I+¦¨È\…Ó–ê\NÒR˜î´¦Z‘˜Õß·Íñh@É”	¦|´#1SZ|X»±Å®bó%­=Šu>ãšÃnœí¥Åd)(Z™‚
íI-n›±Š·©—¤¶	ñÝFZÐz47+Ä)†
üÆýí¹ÉÃ»ˆšæ\Ï;]Í[pÂ¾m%ô×`à™ïœÕ_A‡Àžævôþî¨P2IèCgõ ²™)@õÀ&6©½ ¼}îìÿSï\¡+”7€³êGï­å²3Ù…”ÞÏ~¨*ÎoŠWZÔÜPf·ÞW»’™#ûÕ‰)<ÿè¶…œ¯±½ï€mØbTóõºÎ³$ þ‘¢AI¾Žì™É³qAL7d=ˆ·:{ð#íâ¤)Âla ùˆ¶‰~3ñüÕ)`z;™@A…$þ-1‡dGŒÚù–VÉ Èo%DºB:Ôdaæ£û=vS(â*r|
ñ—Ùa‚J'`—õõy%š´îÏŠ2Ì˜dNé~Ft¾=z,ƒÕP˜³Õ.a»iÎ˜qˆGŽÌ2:!ó±`8• ¾à|\Åë4UŽ³üìS¡leDî|PŠRÚ¼qØ[ˆé €ÚþŠ¸äKM¨Ì^,ß 7™€\ã¹Kòi	v©‡wóºË®¤ßp
k,«„Vö"Y†?€Jèkm(ÇøØkåâÖgTéºÂ¡¸“8³O`QHþŠéÔ	T´{’:wˆdä8ÇVÂ 	60‡ÎÐ¬yrúuO‰“NSqFŒ¾¥(89íÑÐ+#it¿¹'ž€´2Ðk–}v%Gæ ¶Ldâ¢„PP2ß'§Š¤¸µ¶9”‚Êáb¿L‘…iVHrº]ËÃ	®Yæ¹¾ªiQ?ÌÙ¬ì‘ãÈtl3D;Êjß]¥9$GFPž…ÔàO½õ1&¿ÜÒŸ7B2fhZ-ò,¦ñ1VÙÈMÇX¢1mè)äó‹b±Q‘ÒG:ehó µÖ¬1ç¥ƒ”µpþ±|QD¨0³<ºá¸ûâíðC¬"•6È$®bGT·e!n¸TJÊî2ùê·³ö8y@	´×¤ËU°®Fv§jŽô9‹ßOÍ èå&fvF.§ükÖà#ŸK?t3	ŠB™‚P†,g
‘µDäéqGÚf9#²Ë€Q¨¿^þöèî!j	¢×¾ÿ¡”Î+‹)†ðˆ D¨Þ´TG@m·’Î>T³ HÃ"ë.ÐOùOfÿGÆ ®R²Àìc„ztyÁ1‘š¦33aNo­–ÔcW'2­–€=ž	t:ÕÍKâÙjìM–¢¥hÈhÅGŽ$’éqoÊM>ú¬ï¤¾þNÑÿ8qS…$Íç&bZÚfYSÛÅY)ªÚ=øXÐ£|Sô!{Š<ëjg]©¹"2úaâ ®£™þ’É¾Ž‡†žy¸]ý:¨ÃH%,ŸÚ©S+3€Š’åußJÉL0L[ÎÉq,™Øù§p¨ÉÂ"U UŠ	‰²É“A	”521]¶®„=Ú4W¾¯T ñ…9 ïÎ:ÉmëP»ë6BÎ3ø2ˆGç	øØØŽäh
yž™ªò«`h ß‚þ ´ 1-	ûµGY?nCG‡mî\¾8àç¼üÈjS»ÝæJ‡×ª
CÇ­ÓÓ§Ø4°µÇn€3©È˜ªCøTÖOÔ•q£F‘#-Žã¹ÿGãXuYÉZIò}¿Ò¸é8Ê~ÄõXà­¿ÏÖ6Þ·yš4uÒJeo\Ô’$CÜg„Öë@!ÞÊÃï{7Å
!Q(ýLf8õ·Pë]v‘°P?
i°/“wc£øRòtûä4éÁ,âÆü_‚YhÑ×!ºa:0á}¿É˜ÉË7o£„×ßù¸óT:!EQµV1Qm^‰XëyÅ^	È¸AÚÃÊX}PPŒñfƒ½n£åÙ´ähL$óÚñ¤ÐËf…¸ø©XPÊz¦µKQÒ£gxR]3³Y”òóKþ½´V=L´„Á]€ ¸fHxì0Y6G¨Di}À/Ë.x(wUw7Š¦ø¡RmUg';1žæù!â!w=kü	Ïæ_\*"ViÍ¹ä×-«ŸÅ®×7]Ój~ÚzR§(ýH
È"<@©ÅW´žå%¬p'?š<?ó¥Ç£œ»‰9×@hûDÚE)7Õkðòð^Ü€;ÉJéc6½×Òªu CåáæÈdM[À¯J>)~%V#·y­àn«ÚrS­Yi¼¨æ°„Á®Æâ³Ì‚óõ˜¬ò¯Ezó•¤uûWR»À/QI9yT)Õ~9µ?¥MEù‰\J~Ê8¹{ç'³Vs/tGÂë
ZðD¹úT(V®HŸ•>º‰¬@jg@]<r†å ÂtÑŸ…Ò©ÜÈgf) –ÿ«uã‹(@f•š1<‘~ç¾™–›dÜ¶n „Çj 
c3ƒUZ{FáÉ0ÿãû%ÈùS|°BXØnvøË7ï±ÕY;çÃâ`×@#QuÏ˜äkAÜ]³(¸ñª©I»)¾}¨~~
/fšª%e~•{sS¢®WLÛÒèn(¤Y.Ç¥ Ì+‚šîpYtÿ>QZ%,¡ÑòðŽs
ŸÖö-r­y0e>jŸœÌ›‹¦ûït0}Rá~èüújÚn•a7ƒ
²¥.ò©Ü%½QÞA‘Ô¯e0a·ä•‰ï:ÁþlúÊ•5>WjsàeÝ¶.Ü ¹Kâöhq¬©6¤K”üy"Ì´ü¬Â¶ØËøæéóh>*3˜Ó£=œ€­’öž{£waXÆ³"¯ÿxfgxk¯†ù‚¶˜†ü˜F¿{^ZzŒ²hµÊ¸Åû…ÿ0_ó¯´ü q…¿ •¦AaLÂ–R+jq8­»ìtÒeúUwš› ý»Ù–‰Ã»vzjõ ìŒôÑwÄhåjPíu.SÅ_*|µ³ªÆÚ\f˜[×°HEË/XÚ5ç‹V$b.žjmƒàîº2—l<Ûðbq¶ÂÓ]•=÷'&ñäu›æ&+ÿ²HÈÇaÔ‚MN-Ëô$-Ëxü«ýÚDnÎ°Ÿ) f!n]DdìÈÃË´äm–õSA*Ù¯8t ·Å£€$-érš¡'"¥oÅ/÷\xÎ*S©'.¯fÂ!êüƒ²	š¦ºgÿüg„õ”C²Ä
}r4§^Å«wúÔMý®ªPS  ™_ç:|<1lG?¶f|ÕÜq²LÜ<í$Wÿ¼PËÄ7ïš'àsK2NÛŽÉjÆà†´_¶î$‘çùM¿Ã¤‰	H‹ïN°¢Í¶ÞH]™˜{§½‚Ïí`µ
¯€ÆÎD9Á]]½W9	g½s¤rÞ ‰úpsØ°õrÁ E!ÖG`F	[==EcïF– ¹c„Pç´]Qd`ì›EÿE.ø5³èÌ©‘b‹º’µ#}…pž°¡ím/KŸÌí»:Ø>_·~40„;Ô;?nï+£iK/l •Œ^Ü„kÅÈnÏ;çGÀI³äì†‹6Éþ+2Öšï70 
)V47¹²ual^£¶¤”µÀl1Ñw‡ì£EzmJ‡&wèét“zø¸-¦Ð­ú!*Ïni,Ú·`åîaÿ9_M‚œá£h·!Ž¦]òe–¬WX'J`˜‡
«þ›h®,5º€õ³'ª;È»Î%$mÿz;þ"oŒ°yc8Ò9ÐfÔ^„_5E§ùOCuÙ Cl¬ñÒófi“¼,¾£>««ïû„ï?Pß\ÀŸÂª ’Þí‡s¿««Y²œóé&• <.&F’^äªµ0KuX~¡¬Ëd{k1Ä¯$lÉ@Ö# ž#Û¤²®EæwA¶16Óö1cïÃS”i/G*Ì'²ªîœ»®ÞFgW[‚´2ÿ—t·?VÊRÒ°~“Ì>üiL–œæ†¯v»¯Â¨ƒ™Ç\×rdXÝºPìö5M¿‰\7«7bïbËhÇãædÎûäPw#IÎWgÿLˆ^çrÑr=Ì<„á¤É¼sî~7“çO|£c…€Á¾‚=Á¼þsÞ–ÜPlŠ=êðJKŒKEU:øÜÃô§ÓfÜƒ'Ø2ÂæÀ”œˆ
Í<ÑE.pP,,ã/â°}Ó’jèÓÉ¨R8¨uHô$x9~÷‡HhÔY­Ïc†¨hKtÜX-i@XµhCt„‰zœQ_?³*Ë3„Å™ªbM„Y$½PŸì÷Õfj¥ãÆï-CËÈÅ'F<W!»ÇBJXòp3‘¢Ò¬0	¬uJrw·èÖg„‡»ß‰Þú u?ªþ„‹¤½\ÀŒ+Ê
Ó€éŠ¤žÆŠ³m¸¸÷f4¸À¬iÔ3ð#ˆ;ÙQ{ûcžç?:ÞÛã«Ø#Ú°ÊââÑv£±S‰å2¥7àrÛ9´ºŠ'óU´LÂ‰p»¨•ß+iGwËr¸m‹,—&ÍéHŸ2U[˜Â(ž:üUÓéaÀ5ûÅÀ‹F@\ðšèPm$ÒÖ°¨C·á%hŒ!Ò|Æ/ÄÎ1×ü3±Éç^Y4|†y >ý±fî» çéŠw#Bè_KaÚÅoÜh¬Ta™ÈÉ—£=x½¨c4Æ¡Ôo@?»áîÎ”yU\8Ü'¿ÁÎt›cÔú=ÊÎãX»²dÓ2IÁ5.í6cz]®{Ù¹iWdA9§ž¥®ÔËFÚßl÷y ‡2Ð¸&SÎ$]ñ0¿CZ~ÄÙ»}©àt‹XÙÒu±kþœ…ôe§`Ž£•œ Dö¯ˆ•ÞKKAÄa0§y’B7ý·œ~ûpg×¦(õ–ETÀbYRw3Þƒ2
ZiÍOûù9_s“[4}²”Gu¦˜Wždy³ÇF%]QA§æ1{™äáñ›@»ºÔ¬€î•oH2¨³µ„gTF¹ÄQJ²‚€\Åw¶Ýg7]ß¤á.D|Jìˆr jn¹ÅoÙe5Â?ÒÑ‹t„È±*³gâ!+èfó†ÞNšœùãc¡\bÇš‹®f—mß1Ù¹	¹Û<ÕÁ)–`¬(Õ5(\”P°ƒkó@ù¤5¾ùcW¤=>Üž¿î@Ä7jìãØ{ÏÜŸD"Üµl¤ç	ó²§­Ÿtcü
1â]¡;jÊ”F‹
Œ*ˆ1”‘±1ÌÑn^x¨=¢LF°Rê!:DmJPÜ	µ)A«,Üÿö­ú^½½Ô¬Ë5KlHyç(!_«­3©“`ë¶õƒÀN	n¨±a\Ìè_g<÷T.¸Gï,îþ3þþK°\l›ªyÓ“Ý¦tbŒ¿j¤\3_¿j`è!ë]cÇ]­Ô}—[r3 ¾ò C¯‡Ñ¿ä‘¦M1ø’]Q1°eÎ„ëBáÿïÆ/Ç«€^V=€ÀðÌ¹è¡êÅ°âY:o™®çs]–éúËX§Y'Sˆ¯k‰¦D“Q’g0/9FA.Ã'·”×ùáU	Ò€L©Ë "D¤d/ãMóÛî¾¬=Þ­ï_¬lÙÆrCðëÙùÐÒ—ÆPh–¼ò†ÒŽ¤wZiñ
vß7-Õk è¥õš¦‹˜¶<YÙð¶\Þ»<5õ£ ðÅyÓ¼­XëGç¢ÕÇ cvâVe?Ù~T_ÐÆÓ‘|TËS-Å‰Q÷?Y"¹œ‹×t¸`tj¹Hxóp~‡InYxùÐ:Rº ØI4å|ûãTmlF&*&bÒ6ùÄ^ÚJIÕ¢ßØ½›¼í²^Ù2— »-k44_ÝÕø-ÖŽ	‹a·hšÿ½mv„‘pMÒe0ÇÆÒø_€Nm»0„£Z9ä4$ñÇ*ïº~:(ƒ#F²ÃÃLWa#Êð«Ï”Ä!ä´jL…¨Äx$†0Ó¤ô]SÃ¢ª´PŠ°á¥¥+P™Íß<Nn˜}{FŸãKm¨ý¾X2ígvt8¹D„’f‰âŒNþTÍÐA&;WÀRÚÖ=és›i,&>KA|ä®>_K7_gn„¯ú¥tû½0oCË(†Lë2Þ*¸©œfÕ˜_Îâúo&´ëñTCn‚ÕÉðÀº?I@J&R¢e¥ÂýîÎðgÇâëNÈ ÍÖ”ÃEÃìÕNm}æÉÞ[«/?›þIAÅ˜M*~9Î%TÝÕSÚÿÞçcÍC|îïLNµÄåœ¥³Oqàò˜Ø{îYWÀ>4ïµãÜ²avÁæþ©ÒUßŠ“«ùÈïÔ×¹ÍÛ°œ`9)z«ú*Z@?rOñPŸ7g#Ì5B:iÎ°íØR”ûç¨23N×áØbÑ+"ø‹;TúcjÈ;Gäå´Þy£¹j$ É)âóWÎ©.'Óä¢–O—hŽ™’ï½ÆÊA[ò•úÇþÓc6!‰.•Œ&­èE (&–º‹ÞÈv2ª…2vÿw¼~Î½sÖÅ‰Òk“g’LÂ  †C|È{f/ò±LŠÒœXÛ¯#M¶Y)ABSˆ÷pœõJåñýJ’¤ Y8oÐ/çˆ‚úa~Cùtê¹(;p9%d?è° 79\©ÿ‡Ù<6ý®(4Ü3ògIœ.ºs0¢)™jIªXo[\ñ¦Îyý^Q}»˜Ù­šbU,Jµ’˜ú“æÞyIÊ§˜Ùd™ŒáR©þ!bÖX>è4•ÜM=¢ësÎ‰‰±EÿXYK+rl½³‰\
;~-1ë+õ0)Ü’ÈÅK¤”¸’îdN1º	!Úõ¶ýS¨—7X÷ïµd$3áb¯z}é‘ïOÐqÌ
ØÆêjXÿÎ–m
Qu2MMæ9@
¸Û#þs“G®€+xDÚÍ1@\Å0zS==y/	»NnøË>nÁ’ûó±ò]ã¯š=p†ÀQûm~‘œT¦;¢9Þxö„ê]:@fi6ªyKŠÉßäU|Oú0_Ù‰•ì3tâ'™
xÝA8=Iö·àÛÙðïTÁjHÍû‚•%
„£C.9C$œ/™X†ä}<âî~±&MeTäÿ9áäßÊµTW jœe‰Ü5òÊ J!2v?/Ýò[HV‡;˜„OŸLS+£3BñÝòïG½ÈœA`µ±s~ƒvŒñWmêŸ(W Ú{6pé*WõÿìïÀ‘³øLüñ¸"ƒ#©%›Ñéó®þMT?D®6K#%kIíJ ÅM>Ñ‡25Þms*€
Îí¶RG/‰ú
pABó·åÔa¿e£ŽÌ>¤©ô%[O4×ßô%Ž™ø¡‡”vÀ• SÕ9ç¢Cý¦‰ò¸ª¬ïþ_VÇˆ13I–áYJ …ûXÆDã‘›ô›N&TÛÈÝ—âÞUyÙX˜÷‡ÅºdfôH÷y²Ú&6Å%¼n¤<R!?FA÷•JÂ	ÕB‰z ðÉ¥ð[hÒ¯Y¬ö¸LHðÒJÛZ¸•QŠW0²‡€v^¥úgÀA@òð—”¶”~ßÛ¿pNncˆw~µ:yè’á¬Ä¹»®iÿ`Ý£QÿJo‰fŸ»ÜJëØ™ÝiÍ¢CcaÁE(2l
«óa¿Ëû¢¾^G­œzòhÀu©¯=îZ:ºÏð.“žæ¢CHÊÝ¦E?=Êì‘O«w«æ·óšNËö«Ó\SxV®åá÷”,ÓEbVRõÞP_ìÌªÿ§ÅÂw¼J—»–»þ“«‚º2a	t%"¸§beöÞ§&2´ö†úwŽê¥+X>ÕœdŒ$¢Miñ,6ñ¥p8¬~©ãzAkW»e8•	/•#œGÁ”ô‚ç¶Nzµ¿hÂylÛ“Í˜å‚)w·aþ7Ö×îvhô•LŽM<qmg˜=gÖÙgˆ†ã%a‰¿~äD—Â8¦ë}˜Tp$¥–\}á¥lø();
ÉXˆÕ×\‰12Mª3.Ö¬˜&ç/\E0Yƒ6¬æÁc¾û¯ù}[ª@(9òWxÐ‡ÝHà2+Uoqž6³º7ó1R8/'xÜÀÒØMK™ço¬ëélÿV$Ø µVHQÞº³‹9oP+­Ï¤È/ŒŸËˆêA§ì;5'!¹žTŒæüyd™7*•Ö1s‡t7ø¼·\§Ñ¹yÕò{í.QšL¼åÖí-e _jÇp+ç]\Äeÿë¿±=Ó“‘O§OgoÞ–o¸Lv1á,åcîÄñðx¡Ë“Ÿþ>fÒ‘ñÛ•ø/§}e¥\xÊÀ!“§:”øÃö—+f¶zôÐ=H6“:^P2ŒžîÊ÷â ®˜8Y¿ûsÞ-Vï¶Ë÷™@hnMž³L…B¤!}Œþ÷³P`\I*+áÃ´‡+BîÖ¢aÔ eÍø›\pbâèDM—×©ÖA›»
=0M¡XhÏ
þ<ƒ7µ	cƒºªUTEÓóo2ª‡0º`¥Eª=>ÔæÇk€©×Hü"Pƒ\öq§IjZòÓiÈd !Ïæ{ÞãˆHÔÄ</‹µU¸©Øµ/w½h}£cy»R&ÇÈDÚ¥NFÆ¯ NóÓ²ìŽPË p]L¥‰‹±ßpþGÚy/„«V`¾“HãLRIŽòRI]áÀýÞQMM¥îŸQ‰õl¼&MšàªÃ¿P)Ì¬"úw·_>}Û_°Ðî EÊ{?5‡éêI#N1#Õ9 í5ËÜç ø?ê)küÂ	×–×Ž“E‚DZpøg ÂúœÝ…¼Î„HöšuÑ
·]=¡bìÍšž;z4›°¤Ó‚W¼Q{Èá%:zk9˜.MCÍÕ?¡±=/ÂkÍQ«§Í¾õ™—+GoÛªÌ¯¸ò{«‘µ(»ðâZŠŠ:I`
óƒ}‚üÊ)¿üFË»ÏÆ—U¯	Kúè/ííMWTÙô|Þ!{1–åíÛÎ@ÛR¼T9ÕÞÅ»^ÑÂÃ¥€yÝÞ¢.“SdÖ¦äqª¬ÁQ?wVÖ”?[šåFJQÚý˜¼iíÙÛŽ§¯Ê©l´uú9dß6.Ç9A­­[]8ïó¨òNø qz\{;K¶ÔÄ1 å<¼Ž!7–6ƒÑa\Ê¢¥»Ÿs}ËêRãö¼K›²ãŽÚˆbÔ±(ÿ—8Umft”U˜U(@1í† É÷Úzä-)ÎCËZBóúÇDÄ@,,…	ie|ü¥¹bMç`0ºëÛÞA	º}3FƒX©Í§BÁäÜ§'>V.Ì¨D:ý8rWÆåšU}ÀS ^Œ}½8ñë)öŠþŸÔú«¦Íà±§ÍþœÅP‰‹{ÏÇvõ<‘Ñ1¢»š @Z¿°²¤–°rY™\õZY«ou-Í¥	VÒ«nŒ,‚Äˆb¸ {©¤M„«âûpÈb¨e"‚%`óúëíØ”'ºj;/ãžU•gUx†²oNîŽà]¥î©Î±“›Lü.”EŽ¬PqDÆªÉÿ}ì…ÍCyË]sê›½9.»ˆžlÐ­¤	ùnÿØÍ™ýºXj*éw/g
@žH‡ÝL”+ò§¬™­†žgzëD?n—e°ž¡¬*Uà|—SG[°ª´ð‹´5é”9Ý»êŠ2öiFˆ2YÓ>VÎ*9P™	±?.«ró‚tÎ¿¾:fâZ2xlgÅ*óQâ^ô' ^¢g]?ßÜ5&È5ô–.Ò¯÷7“Û›wo‰ž­¾äši€áöú?ùEª9Ä”É`g{µðfs)zÏ)èNØèØ>1ß0(n§P/y9æÝÄ£/ß!\A¥RT\	Û½ˆŽ(nž„˜Å?j9Œ&í->Ã*Xûd Ôíz.zàu¯;’ç^ø^íaKÃà)pnsŠ®*½4%³XkJJ×º¿:»ñÆÕúñq`5\—rxMXc$*£\AE…­ ¼~$pnßÉ¤:'Vâ žã}ª·¢½¿vøìæQn)´ °áˆÄ¦X¹Þùš@»îáY~gÃ(zˆÕ¡9Y´g¨´kSÕPÝ¦j[Ì
^DÇúœNmPS†Aô7)Y[6¸È\¿…l€ebóyÚÔ–{]òWÚ 8vË©ó8HœªùâÓ…Fàcñþ°ÊJ!­ùõ¾œ
ž<@Ç˜Î%gª4°ï­¸Dây;ZAtZú´p_âÿ¢Fk¹Ï}“½:Ë5t’˜Ô
`öÄç*ÿ÷ªØÂá$å®Á²×Ç´!ÿþ˜:Xãàž¾çízS‚›)¾æŽñ1Ø=#·ŸŠA|o†ÙøªOÅlUçkºyœiÿ<âC¬ñ·_<wÙXqk	{£$+âÓ‰¾=òùñ>Ìõ	´lÁem	•jõ{BÀEì•wü%Eàê)Õ4›vïÛé†`ûv	Ñ¼Ýi´fN¡@¾–îQ ¬ÇËº‚Ë—ClÅÔ"|ñtS±}liï¤«_ž?¥~ÒöPÖQâSIsW]ƒµ€ØÚ¯'±¬k©œúe­Ïrg¦t7¨¤ž	¸­ž5±!JÍI“a‰ö p‚¦üÝ9“˜ë(óû,öÇ$Þ¼8Tò48×Ûï¾Zxù}S•Ì®¤MÞÕ#×¹ø&Øw4îâZü·-X•G}c7ºMU{¿¤>‰lpàa”ƒ‚GÑ–Ûtþ”s L!Í[È5Šª‚i¬íáþÆ­l9äé»B]™—u"Ù_~ªÂ®ž ´#QÖÛØË12~Ó˜xÿ”‹õ{¬¸GîžF#2Í${/¡òšZ”c?ÿ³'&:"¼­=å¿öÏW¯’hÑ˜_r9ÖåÛqJ;äÈzÞŸd¨´š¼6ô+°ñ›È‘º@‹ò)ù«píðøo´4-Rnˆ4-E"C¯_Vý7/9aqIZ“K×?2_Ê\x7ÈsÉirg5t¾‡ßÄž›+Z¯¬O“Gsbv^jídZîú
¿ŒCFº“ZS„oÀÑ,;®‚G•êïŠjq¾T]“¾S¡Pš?8³§JÍ&(Ç-+e¾hµES¥=oT¡©Ë¾FÜÚ«†ä¹wÀ‹ý# íq¤,°)M²…)†N²è™b”@f>ä¬©Òø"$8,Úÿ¢8bp#£;þ ŒÝ4+I>æ0†›¡¸º?•â»¦[NÂ=ƒu½ÓJéU6í\©G»å÷[Á˜ê»LV4š3BŠÝô2]Ë^oç°Ê¥¤¦Â(YËkÕÜkWTºË'w¢ÇÖ©Eúã]7ÂNæ¬ý=BäKùâÕÉÁýÖcÔFÇÔ8¤q4c&@ØqŸµg„Õ=ØK¡íÄ?Ð§ý vØ// Š+RØßT+áZû†yq$
³„¡¾ö—¸øëïž®¿-¤xèR-U½Ã¦:6G¦¢w£xô›ò{½IŽiHÃÖ¾["=ØIŠW)ÖøU¿Hð±Ià”µ-o^÷ô\m24€mÑßN‡,Á‰ýúGÿÑ æ8½é~ñ¥Ä:S×Ny¤‡sèÃ²yÐ
uþÒŸß<Ê”kö{ö=®Ð©ÏØ·ŠÌÃçqEÛ˜s.À…¯m'GvGP­ ½ˆ#î¾5Ýf8íÚK)JJíCf9py´ÏÈ`õ{>gŠté{W÷’æ1`¥PG(bB1 >‚Ù§ªK_c·d×c³9êŸ˜^öN¤Ž6v±¯Æ3÷ÛTS€&Ó6åÄ7ÆY2FÛ~‡‹.Gœ.Añi~\í?ÍúÚ¤VÆè£Û®€àF]²1shèeAß~}±îáˆh§—Dvöäaš*’¯3ÿ@4Ò„B}ü5ùr3[Qk-œc{¼2žê m cƒU¾3ôKHmk¨%ëÊÙ<Yšôd}t¤‡…Í†FÎæ¯IÄÕqý¡šÊk„‡ïf:Œ\Q5±EÇCY¾ÉA=`n]HKSˆÎcå °ÜÍ@™»¢Ê1!xÓjÍÏ8Ÿ|àÃøÞ“EOúü4?¾Ñ;3]ÈÛj§¼¤qn¡µš.I×wr£Ž_Ëi6t¶	ÈÁF5`JMý-QNÐ…ÅûV.ƒ+ú~™:]c”ØŸ™¦ì€=†œXZ%¬ú<žÔÈíN¡²ö³£[T=0ûîÆ˜%¬}Ó·$è
ç,‘çôzÜÌ.­„ÃPíØEòÚ»~Z¦¹“¤*çä¶G•(äÆŠ±Ažz	æKŒÒÕ	Z…jzÖ/˜Ú¬5…ð@wÅD@Nó=+e¤©õ³rìýg.éÐu8~tü/#d•—-*Œˆ¯­A°vk
ŒÕÄhˆñöìç šƒ¤B²>@éxOoËÂ§ÓíºBþÔâ¾´Zc1Œ=ª÷€ \ëõÕ¶^Šd°ö`5Þíár•!1nS€Ä¸{~ØÅ¦™I®»ŒBSÙ7c½ðˆÍ¥M]b‚p‡»)›ZU——»eöÍ´O¡[{ÄyfxþŒý2†zó ´»ôâ¸ÈEÜ`ÍÄq»uš½Z?Âä¤î¿€TøÀØ™ÞÅüGÒ¶„">„ø%åB˜dÚ~§ï‹ä.¡¾zh¡'?œŽhÎWß .)ƒÀ.uCòAxÞ:„ˆöp¯ù{2¨3ˆó¶…ë±â¯1/âeº>p,¬»±Š–[˜¿@¢Š¾Á]ß›Üï‘Q”ã¼þÂVèŒAj§±¢ÿ—¯¶Ÿ÷±6^×ª‘®{¹Šø»K„L.à©àVàÔRVÃðI1Zì÷É ‚Ÿ(¿(ÆœEä|û¾ÇÚ¾å\T’LMB‚,ƒ ª$£¡wŽ¥3Ö'¯Hð“eô¢¸â^šÐÓj“x¶'¹Q2ê—«„¦Ì¨^Íì%*Iü¢\D`aœûŸÂŒ½ AC?€Möê­Â¢ãcvc×Á¶åõXy7wíŸæÎ‘[@:Ò	Ó\7k"Ñ!Ÿø’çmÁºÚ½Üqx­” „ýX°Žj7RgÚ<§§î[!OŸ	Á€xt'GDÚöi¨‚ëè¿2+	,.0Û—X³ê_êÀ‘%b|÷zºÝîí)8,éãüK¾'PY`êM­â'¯ÿ‚!è;ê(=&gÖV Ø—åÅ™%æ<ÃqÈïYWš¬P=}nÔd  \hÍÌù‡°ŒÚ’K©ÕÈBd½9øÏ°Kü®s—sß.È£cÃR/MMî¢yÒ5}æRÄß˜GªB^¸zÿ¯?eQºõ Tì{€‚xîâi»ä6¦IY/bBHÃEÄ&Ð¦»zò0†Ëf2ñhäÕ{Y~·ý@>Ék‡tªNRë÷œˆ®ÂJòŽéô`n°9½±{ü‚~h5ÕAP§Õå×d×¸Øf¢;”º<³.óF¢ÍuÈÜ|ÎfR©…ñ}îŒ)™«5$¾´yŽÁBË„ÞgŽ’lÈw„r‰tø×%ÃvïPM9ýYxm¦¥þ\1GCn1¼?±ªÃÙÙ7Ê†ÊfîÌ¥Ñ0>PK¦7 RÁxf@K’a§Ð)ªHéBðýb>½¦3¾Àt"ëo˜YfµÕY9ZXRñåºì¡iY5$øw`KÒ´§Ëg[öÕsU¢wÇéÆ	æözí)ÃX@á’;/ÎðlzÃÎMN˜…ni²‹Ôx[}º0­ÿ½_¶zNcúš­Kâ†V	Äª!.Ç,d‡H7äâ-l?$‘‰;ÖU¦É®I.hüÑZK’²¾þX_×	ñì#ÁÞ(Ù@ÁBÅáÁ¡´I£óY Jwî®ŒìÆL«?Ù3ì5ÀŒgClˆ¬bu*‡ ¯#3ŒÆïOòÙCPöd×º¨]&1à¼
9ºÂÖ"‡Š½ÇNÐ¼Û%w…oÚmAžÁzAk'…T¥œL¦”ü0$L{UÈöåKƒ‘ÖÌa-bGÙ žØý§'@¡V½ˆ’ÐF -˜ÎÎ„r´×€W.T!lõª¶™3irOÁbkìÃõƒ‡ÁÅvÜ9ªÀÁˆë-ªÆcA`ØA¼k¬¡ù°îT¥è¡Ò¼âi¸ë©ñ2Ñ°H$c‚ßC
0ö(#Y÷KâöŸ	ü¯£dçÅî7wñ8ÓÝº ¸Nãy`bŠ²¢†9Í'æãgÍ”¯ÖÚyëýv¥?+Ì8³påìò{,ØtÒæ×Æ´šs—\à†C¡ëÎVYS8r°ûvƒ¶²®ƒH={Ç–p|’	`®¹®»“ÈúwdÔäÂØÁÏ8ò;g÷94 ~èlšwôªW¦çƒ¾ÏÊ¦‘F?–Ý­„Ž©6J¬b]‚ª‹àóš]•¢¡ŸAæÝÿg„ÜÕ’9÷QÁû>ÝB²çKHîYR³ý-Im‹ô¿ãj*äìê¬)‡/ozÀÉº0<ŠôáŽ/ ý'!;ŠÄ›Fzº&|<TŒM‡*šÉ¯¶¬§™cû9ž,ÙKŸä“w”µ…®ež¶¼¾½Û!šú€Nz»ëûMñ_>X'fà¥/Bÿ™U*=ßÅI4õUgÃ6Çï–ojŽ¡|üÙ¶ñä¼ñ•·ˆÎÄ·Ž }/ˆm§å1)-òÈû107V“†ÕžcD×7öH|ÃEÑbYôÕÚ˜Ò‰(5“w¢ñ'ù¦³S
$«ÂG|µê}N‘/YÅ(@gÛ2¤q|Òû2ƒ3Æä"&dŒù¶f×å3e$Sw§mcJ ŠÅkº;Ó5.Ë Bcq/9ùðB4	ïg,óX6~ŸH?ï,b…­I#-ŠÜ£Ó?ÁT¼‘çûN†ôÜ¸ 7mýñém7wˆE.—Žïþï”[W¤ä‡Ä.öÃyc¢àJÐªÂqDþUíLWò} QuC‘L#÷´òý ì°ÉÌD/À14†Ù&Wp%øóûì‚:5ä!,L“ºjÊ,vxÝÄEâ§ún¤’0µÔNNd)Ö²×m‡äŽyMùùï„×,sŸêù2Tx¦¥·+IôS'µPúºìk¹•õÀë,ÖPÄ•|>Á øƒáƒvbåo¹SñÚ_«fz€aœª[A¹†| mt7Ý¸ þþ´ö¹s/nÎùp"óiõ/æ·Xµà4ªî)?©R?4¾™ÉØ<ah³ŽŒ§eb¿\À…¾fl;¬Y9žt‰h[ _V:½ò£ÙuùW.úþý¿/žhÛÒq€D Sá¥Ñ¢eŒ-<%…ÆL® ½ç6¬^`yŠ—6h´D?n÷®Qõ›“—ù' á@ïÍ¼‚ˆRë}ý@ä~h’zy>®¹g¨2}±£²n@©XÍ™—¦ÅêhWZOpC¹†GD¦¥éŒNk‰sl­˜ÁÕOHq¡-âÖV<¤åÄ™tôÐ ±fÙe){¾%Hè”Yå¡èÀ:‚¢ÿe–vÔÊä74ô²ÔIµÞ‰þÊ‘ g·­P§ð´º3ÀpI²æç„ÂÁN	^ë
{JÑÎ¥wðUô…¼gh—†ó PŽ&Þx{úJ.DW¶ûÅC´MQ_o‰ F}B(÷SXß´†!Õ£á©5yÄ¿ÝRŠ¨‘TN0èˆ¢Ø @€ù¸ü³v€ýò©vû²å#£´]Ûº #‡éÀé”} ³ƒ×3¤Ð‚‚ó3íò"›©	}Ñ´óÏ©_Ú"ìw•ý_`K`½írvY‡ûD'<ÏÒ…:Ü³¨#ïd±BYÞ/”7ì©èzÓŸ´d"‰Ã/]m6å¼Õ÷T¾´Û|øð·ÑŠÕëöåÏßµBºõúÜmC„“p–4¶>B|ðU‹ÙaŠKTé%CÎˆ2g¾ÐË¤Ê¸&ŒõüdÜ,Ž ƒô4=¦"N%À°ªd‹R‰¢ê¦wõ§D½>,eUýùçFËLùÎB?ÂìC12©îCÅ†í‹ÒÏôrVþ=èrÑŽö1çÚ‹z'‘\/ï¨uê¡)	©i^¹"<_‡Ùa
¹%å˜¦´$QhÈº,óÕÉšéi’dÊF12¢E«]-P«ÅôoBìÅ+^Åœ±.5X´a6¨©Q‹"ê$îÉ
ž·)yb¢ÙgÎîÍ;æˆq"‘‡£[±ÄÙáAáåfÙ;ÁÁSªùûîJ€rÛi÷|"ÄcVzÆÁµp%Î@VÖñg(lÄ¼,[EäE›Yãîö&Ë‘ÿËy¨¼÷ú&>»öûw<š–Ëø^æ]J“M¹Ô5åšVì$;>ÙÅ.ƒ^ï›á„H‰VP$¬ƒNÚÍ¯U»Ÿ1“:'3t9ë-s
è,ejÄo×*¹º!pØP¶²ì'TôDjåj…Sû–PÆrð)ÅcÖb@†¥µ©—‚h'¤ÉW*ƒþ—Oo«®ÕWH_>õ}£e@ØùßÜÑ~ØÓ³ß?&NùVPíóÈÙ÷ËÃ•_L*éZé…ê6xÆrA9%è¾n2ðthmDì@tùãÔ#è3ŠšÞÃû0VÓ=K9ùí†ncu½qÚÐ)„/§¤Ûo9¢¥Ž³}¶œãCW<Î¦¸Šð¡ÄâT3¥£×[R`›ƒ·PHý¶É@	uD¸()Ý$‹ºÙº\• ×Ý¸ˆõ[…ö^_T¬Æ‘Ç—B.ÞÓC–üEŸµMWÍ,èÒKâgÃXÚ*oR_%PfašGØ‚G!hª!´¹ÛSJc‡í¢?ñ;öôµ’ÄzB³tÂ‘ëQý¯´àGÐSÐOôÁ‘¦¥ŽŸwWâçF¢øÃ@Ÿ+ÍÜ¦Ÿ¿ÜÎ@q–‡É!”³ù­tŒW3— ¡ö<Sš:÷¾Mšø¶ÿÈ(D†V£ån³°Èš{)¿kQ‹V{DOË—"'7™lô»Ï²ºŸWŒÁïÍAk´ô5OÊZ>fÒrs®Es“Ó ñš¹<ØCøá*3Ñ`%Z»1lè4‹'Ù y·Aý°)öK“z¼»¶ôïºSWÂ™U+:ÂA˜$WwV>À¤Z« ùD™„‡	=N–ã«20ïÆ€ùå»
^K±YÒe³ã%s['-g’&°»¼±F+‡ Äw©l9)á·óS0Ì‰ ïéœcËŸýÜ$¦a¥Ý (41Éd¥ðò|4‚×S‘ä€Ýç-f“H€®óÔW¼ù>»ÿ	Ç^ºñÿáw­Ëfaæ_ÄXU)•¾ìÿ—ñee|)ûnu
Ãßy :·ÌØ€6­*ýº/¿º…¨q]n¬
‰|Šþod´ÂMë‘ß·Å;ú[x´bß½zÄ$¹ÉÛc^â70ì<´ÝøÌøú"½êez¤—ä°)©’YLì+þ®!))¤F<×î
,ÍÆõŒ••¶A§MZ{âË˜ íý\Òm„p¿+ì¾‘ ÃÂw$ó€îxö·Ï·çŠOóAãÏÌÖª;Á±ë…Óó,#†¢î>”)–	:Gn¤£ ^ýZ+sOùÏk‰ö¡dCÒ£	£H±R·®% ÿ¬ÌEÙ~0ËÛZþ{6þØ­]PiêV‡—ŽàT#ô>o¡­]Èjjt¶ý²@Áõ;Úzu¾zÝ
í ¥¸]–[´€{>¤[n¯âÂPƒ.,åCÆÝ›è—ÇŸêLxLDÛftç8K×—Îb•LŽ'íønWLýÃ|I\Û@¡Ø–)÷ ½<Ž¤U€eÞåîSY?Ln­.Jð¬-ì¸¬Ùtîx2ó—%¿Ó¦ŸÂÔ×_Î¢ñOþ~ÁçÁ¬h5î}óçJé|4SË¯¹l, ö%-T˜p—ËMÒ 4ñbD­ïœ?£µü•.“óq#ðo“#Ö¬þûP•Ãr¿üùñ¤—pB%: ÄHsbã¤÷.	 ÓÜÖLdm«Î¿FÜl*Ü7XëšS@Ð¤ÆœÒ~GL¥S_”ÇyQÛ¿"æ­Õ<¹n5™{žrÉ5…TïK-ÐsÜ6½Ý´0#zmø=4UªâÙ>¼ü• )/×±#Ì´,WKêŠø™B\»Á´’IS3ýI ¨gà»?Ü®õÕ0x‚ì;¦Xé+KÔ<ïbÁµ¥{óÓÇ¸W*¼`Ë´¾ÍßÀÌq“ˆèFD™\4°uÕÕ4c,sŸ§–ÚÜŽoSöøä·>‹?qx]P¦„`_Înóä¼Ö=«ü:µ3¾IM\h¨„ÛL‰–¦á0?¯ Ž<_xŽú7o¦Az!Àþ–‘@ý5I¼>CÎæ_äj¬9’(ÌÓ¿ORL¢Vo8­W$ó|>ñÖ+þ–°0ou-ç:9²s’™î²Wßs¥Êz69þ²ö$lƒ$*æšG=KâHÓJ>þHY’Ë©_GOÂõ©a¿XnÖÀpû=Šy«Vc5ÑÄ¥~¡únG¬nÒ´`;auZÿHœJ£€Œ;žFíÄ·‹Ÿ?ìýT¯Ú¯Ú)Šc‚Ñîôn:es¢&–åÅ ‹èDY»îÓ¶ªÜœ¦–¿àÙÊAPDFhw“%ÑRñXÉD»ÿÔEAùÎ¡8,cì*,ßë‘OJr=iF8ã}YŸ!ˆ!ôî'}£[@Ô´QøcØ;°G"0ú	ý2>Úþ9VxUwfP.gpä—Gç`h)Y!,Ðï’°¤Û*]µt¢KO‡K‘Q.F€-œ +*™Ýl^ß+‡k¤N-’C!¥ýe<ÖÇŸ?9F†qf·Z˜Ù±ÌKµ‘#Uç­óW§æY'=2†+`ÎîÁo`™¨âÃù(LT¢Ùs—jC5èN®…äïú+wx•¿Æ®ï—ú*eäCàh‡e€Ì&éÞ‡:6Ö‘‡gÄè¼£¸ SåPj`+šÓuìe‰i…Ägº€¬Wd–ç0š|ƒˆÐ‚-C°ž1Q½³™ti çå±ˆÄ»7>ÚËS"]:"žï»è}EG]v©#ÙkþèxÝ,t¥Þ8÷ÜÎJÃ¡árÇÐ'Nåüd•¡±à6Hm1[T~=†+¿¾É’îÔµáq(MºtÔ¡„q¡±¬”~"iºGë	š©¼FÖ	hÙè"s´¡öì6ÒJâ€:¨ÍfcâRç4ÝØÈ=4Óì«ý†ö!~e³iH+à0ˆb‡ÁGmb¾sùu§s.`Ž¾Ýêâ”ôq¿²Æ¨ù¤aMÎDú6-éÔìÆ+è’ÿeNa¦ç6‡Ç“bY#™EKé0òXŠvÜÕÐJ ¶Þ.§|!ÿ•÷œÉÑ÷
¸ðJ­Úº
t›ÊŽJËM:F‡Q¢'Q2Ö$@ƒŠ7·à’¯¨µ°"'Õ†×¿‡CUjö4B”¦Ci õ +V)	¥Œë‡ƒM’oðÝžôhòW¢oLð,LY(xwèäÑ¯Çêpª9 •™4n›yõÆMÊ¥Öß>ÚMçAXE¤·‚ëëä+i£"¤XdËº?&÷;w!0L)X(£šl¸{„H]Š™äÈígœðG@~F­ÙŠ“eX¥ˆ æ©¶ñC³AF»k¶âÀm#d¤’wý¸Š¿émd–š…‡{Y›ùÎ>5Æ†Xã)ËRTé }LÒLER«sJhÀ†ª6Ö<z.8ÀF­àÃöÖÑ@N™|'ÓÇa­*I»æÂÉÂ¶[¨HHHÁ~nÐDêë!™—gp*…²‰Û˜óª&Ó)#g®þ”mq_âÆòÓ¬™½©féæÉ	¢ó†\‹XE¹ÉèYÞ×$Åœ0[GŸ½ ÀÚ-&h3À$G\èÛ>£Ê¿H¥"ô
¥ %D” ð×Ï ðduÀ >.L0’F|Jî£’i¸@mF}“¯>Ÿ‰ÊÄÀh	Â¦ãù]üIÛI_K•ÂvCÆŸ
¼ ñœ×1íÖƒ»zZ¡šèM±î¤?H…cT<,Ëì_w$!>dÍ¤òøÐX_Žv‹Òlué0ç7ªO‹;"}¸ôÍTßâäm¹"~\ãã7tÏŸþý¶•Ä÷½“±_Ó²^u¹½†¥ÿs
Dd›ƒÙ£ïr=Jè|å‚·õ÷'MžÊùý©ì÷ïö64{"Ò"æ0Z/ePÒ¹ ö¦/¥¶ºJÜ@ÂáH÷ëâÀÝ·-¤q—Å”éÓ³Ì©5{‰6oe»ÉPü³Û=Ç(°Ç¡dÊ£0û§Ä´JZ+»ïåXoÀUQ§B=£CN{î«à‚"ˆRköÏ6R‰ÁŒÇc¯”ö>ëiÝ.R¢\¥Ï=™ŸëÕ·¶Â?.>J°"0Aé´+Áf´JÇBìƒ'‚K<ƒŽSÆKQ$‚“³`ÞãÎ0]yÄ§Š-´†(õ]l§ió$fšž¶ŠÎgÔeÚÐUaÇfÕ”®ÿBÛïûq‚#k¥dT#JmUã†Ã6[ÅJÚN'ìîÈeM%ø<f‘õÄ2¢É›lØŒbJ°›ž:f’T>Q©Ù·|NçfoüÅ‹ÂmJT	ZVQ¥vž€âsØ3ñ#ãO¬-Ê­"òËß}¾ÆÚ›BBqÑ“ñ`‹ ªeãïÄïÂ£¾<°ôiBSú©s&$b€ßÞÌ÷È	)öç]j²¶ÊÑÞz>ö7¼Hä bH¹ì+ò?îäf³wj	Ï½GíÜ$ÙÿÜÑó;àp.E¥ï(iÀÕ‹ë+ HÛ†NƒjV¹%e)c2¦»©m	Ú2ƒ~yÆ:6ìT	ÄMÛ3SZtk`Õä™
wÆ&îøó´ª“µ…D\ü„^Íò/ÿo@kº\Ð”Ârþ’ú.AUiÍÇi³~Ö\Jªrá7ž®VÖô0$5™º(¬t®’Ée–DŽºÖçÎG¢Az¿Ã¨ý_˜ßÑWiO(ÐLB<ŸšÊm0µ‡ø‚FšŽ'ái·ŒCÕÄ?´P`Gs€;ÒézÿtÂpxïG<}Ö^cLÕ¬¨4y	šlÇjö¢…º"h?à?UNƒaÝ²²?²OVFPiöÛ„‡PìÛÃŸñå¢{œËNjŠŠâsÚ%¨íÅ¨ˆMGtŽ®ðoïÞ†åÚG¥PƒCWóCdÈçn”ÑÉcéU\qòc0W¿it§Õ6O›žGöF	þw* T´–‘Méû-3¿Ö9¢S‡ô1 H’yhõ72©«Ãoµ'ïøîÌÎófÉRŽoFüðß{Æ~ÖOãS@A.ÎË<ˆ\ ;§ÓNÖØgÅM÷¸I`wxa½Geñ®Ñô°Áfç$ê¤SHe÷g|ñŸpúÓ½¾à@Wþ*ÀË PÇÈÀ»ïÕç°ùI "™ÍrxÝíÔV)`h<õåÇ%1‡‡—Ú&Êñ_×)æŒNQèVïÖ†”ŒÎ×±¬‰éÙ‡Pê¹Ô}Nƒ™¾=P‚ŠbåáÊ&E7@9šwªüäâ‘ÀX¬¸ÿø}uÄSQÖk—>>Ñ’“Äq¬¾¤ŸGŸ y	( ’žÎÅF”8‡Š ·ËI—oÿ¾(¶1ck€Ú‡þsy=I&#¦Ù|ÆáFpW/nÖ{ðEø4QJ#T›4‡ 
ÀòÛR'0|€ˆ"ƒw”k‡nŠª•0]MG—æxiÓœ:ñÉÝW+[ä¼šÚ9£T¬~G¦îï*øß-†‡L‹û1·÷†3Î
­b™-*luÔ8©Àòg.ÝÜ"<\‘TÐUtË=mÛvBÊ©½Ÿ—ûŽpm©}9ãÅ"ýÔÑÿ,‰¢ðz[Æl?üÆ_o÷ê(¦‡KÈÜo( €JLŸž>£^TÒÐ²ç[öm±áa/ùÜ~`7¬¬2ÐÐ÷èÓ ×­zh‹@CÐz†mÒòŽLO}B2§P³ýå­è«GG«ŽÑ—€Ï•Ó‡‘’ñRNô{DÔkïÀ²!¾ØÃžô`ÈiôH¶‚CãRóiÍÌåÇ— Óž–²GÏrË-É:†HkýÇ·€up4É"øÛ®`êRÓðN"¥Tq„AœJºÓ¥ë¢üb>ohÕi.ä)ËÜ•%Ÿ%Šžióƒ¹þ®“´(]‹»¸N'Y·B¶øóÌœJPš hÉ
7³žÛƒ™>¬kh—šû!ÝúÛ­
É®­a…édñƒÓ²ŽO8² ü”J`…rÐÄ‡¢\é#(‡Uë™rh´(ïæB#ªÚ£¯PÏ	;%c÷'žÁöa7ÚÈ¬pn‰V½34–PÛÃã„*â“stáØRO»Óxý‡*"‘Ó6˜Á¼úi˜Rcµ%„Q-ÓæF1B¬'wÿa\²€Ð—'Å1µ@s&Æ/½Åù’¢úÒŠgkê­Öïª£÷¨j	"[#ÀKÌ¹qwÆêÎ¾n‰fp³0/£ú‹mµv{)±ih•„0[`Xbö–ÝEËºáØåŒE|Y(Ìµ°UÚ=Òv–5Æ;LbxUA„DŽ$ýi ªÍ#+%¤L¸	¼÷®Å¿yµ–C;âçdb²\o„¨OÉTZ²2ZˆoŽ¡×íßÒ-hÖ6„%ý×ð¸q+äíõ's4ƒ½dÓïŽªÀ.w¼‹m<ÀUmu3ŠH­imÂE= öÎ3SÍÙ7ÃLô½¾”'¿¬©,Œ¾ð¢M¦-Bž(ÚÂ¢ÏŸ”£cfø³AøSg‹Uk²{òØ"…ˆúÁ§rP
¯é¸Öÿ¬ˆR¾mz$cËîhËŽuØë}œtE»Ó”àK>Ê;!"fúdoÛpêí:gB	¹¯SX¨:%‹‰Ùœ‰Î ¶	Ï™
-ÖS]¯·àæ¬gnñf	V»ëtû*L“—8=pò9ñØŒ t©ŠFÛ}±×i6]	EnÓHª'arÖj‹Î¥^fBkî+†™Ö(3[¨$1
 pª¡˜š4pM›v3Ñ3¢ŠyßØ{¼Rj*À/kw¬>€|ä0€OÅí­Änª‹O¼¨£x´D-L„*ø¿át{roíÑJÛAâÛêú¥ÿëŠ‰­ËmWÂkÑ¯òz^Ô§q>à“×PØ¶5A•—¡€ä’×œ¼WŽhd‰	¢¾dÉ&Š§Ô\ìvuYm¨Ö¿†:®á™Æðj·iÏ;Þ Ð}ÚÝ&Rçÿüó:d•¿£9s¬?ê2‡—¯…Älë@„ÈµZ¼•èK®°ÐŽ¤ö‘SÆŠt>â†ã»Ú ¶ÎXE]»BRõ¹ó/òªOQà >­Ö„. 8ÞÒ%j±sÞ~ôÎ,·–VØ-	~Üšö¤¹ÐŒÈ}_ðBéÿÆ¨Ï71ÎÝÎ®ÛÓ3?è•gó-¹)Èƒ|6B–If7F j­²QbE ¤¶¢Ü¥@šüçŒã«‘ëžls	xV¸E95Õ´¢65:·ûÌ§B²×AX¤ÕO˜¶Q§â0È1J›GúªûA6}[[}Ê5åŠgù.‹@Ï}Ñ]ñ»<¨sç¹aT<U™?ðÕqcsôhWæaqÚc¦X—œ%"
Œ5­Ø;¸N¶¹çèp(C^Y´¯DcŸ=óx“!-<4	ÿÈnèÒŽx®†}=½µER’‹W8ýóx“ˆg´<3Ðs‚<	\étòl÷Bh ¹u÷/B>l—äþ–gôòˆ†AINÞé¬?ñih©!¹ÖøÎÉ8R(b!+3°îå¢À£>T©PÂ(?3qz%ðj\©ÛI%¡KÐ€;†°¡~ÕÖB¸&¡ÑbqP,­Ý&ø+D‚.ß½>°ß›fgÛ@q)îE¬h}¯ú.}…Zi3Íµ=T‰2»·á‡®±òÛûàáH¡ƒéÇúL1wRÔÄíA‰A; ƒç|Ý‰t±kù-3U‚Ú´tÙŸuÔ3®‰£½åÙ<²Úî¾ÔÑÀGîÀÂßŸµÜIå›AnµW…þVÑª8ÀáŒES9Õù”Œöéúx¶qh1.ÃÈsßåÜ6]xÌ?éD“ë¾•¨Œdˆp0<t´ýéçÀÌÝ9°9ØŽJ# u=??E\],‘$…÷­Q°øú"”q„j­œr×¹Ì;—£4hQš±+j¸oXfYæY3Î9cnyz(ðZBÌŒýÊ“Ž-Ð– rÓ\†¬eV§|o×]øÞ»!•Z.nþ|#SWžÅ‹ñpN šyøe%	Qïb	Ì¶œº¹óö£i€oIÉ#âX{,éAåó“áÁQ‚hB„\ž«—2óó9Øã‘qµ¨'Ö	ìUê›S2QÚhl™]ÅÒÈ9ÙD4(Ÿ&Z&æs³Åå§ôPÙƒUZ•½®³@dTŠ“½[â €.kbz-ÌpûKäÁ¿ W ^2U7,€4Å@‘‹6ÄÆ»ú¿ñ4Ò‹ëb Ç¦€Ä½à¤epõ™˜S+´°‰ Â_`´§L¨bz2ÞXcÒ\ÅT.*Í©.U>a.çJƒEOnŒØ@?|H®Ö…@¶íZû,‰"ÅzSÀK>{ñ‡¯éÉA"Â`(oBß¶üŸÒ½˜#ª¥ý5•¬E%hßù«Y;¾Euæ‰#¼3M¸[Ãu<1u(\|EŠç™¥ŸC
Óà—Š. växÜ‡õ­Êp¬šËz–kì¬ÂÒ‰UÅ^ÇÞ2¤¼khúqÆžGÇtšíWpójàþ»¢µªœ yvQ÷sŒë×{:f 'Z@âÑa³:Äük“³ÚØ?¿°XŠ•ÖÓ9÷Án~5›·b^3ç¡ušÝ¬^†Ü›¹Wø"yz<nQb`ZŸ¯	W¼‚ ‡g)ÑÐ+ÑôV³FwÆZÝÀ=zð7Eyþ&‘?Éë>T*)Š€+\õbÂ7Ñªò8áæ$Þ)·À'€Ÿsœ|ËÞ)ÞG'püASÕ:ñ´HÁpõ% &^xtÏC+Tb=ì*(L±yÇÐ¾Ê¹‚àK		?:œT.»Æ[Óían?KzÌ¨9Ú¿ðš›©Ó½fL0„)¾üù¹ÜuäÛÓ,EÝÄÃÇæ1èóÉ˜óËÌ!ð6¡Çž ’»‡†ä3)Æ§=š3mVœÏìµ¡#wPöVún˜ooˆÙÌó'‹]‚ÛMcÞ5@¼eÕ2µ±#ˆû˜JfMrW=ºjÆH†v©¦õÓ@mÙÄÁùæ¯sª–_²Å*6³’6ÌãÙÜNâC%r{'PÒõ2D}gèøcb+zzÍù‰Ï¶QkÆøè£ÚÇÃ4RÝœ'ÓÝsçJhù!@E«wE#„šô?g-fz ÙW2ÿOzcXU™â@Ã%qÝ…åjÿaìžúœûFž%Š­[¾àV1Û%Kf˜ySsPâîqÒ?0U{RþÀÄòÛAFâAU$’û¯Ï…WóàgŒbZfbÞÊø‚0‹e=ÂëÇç!ývy€\¢ ¦Ú%öæ¿“§oc%…G¼»æV¦°¢ƒ/woânWÞ–!¹¤4Ã
hrañã4šÅzçkCkì_ÍO%U–:ßë™uÈ«‚ÛXF÷~|£ç‘÷Öñk¾à±Ý#HDp5ö-ÅjÜåûÖxwÊY`\Ý<vã1l‰m2‰K„Ý¯=E†wmUŽ‰1ç2±ÇÀ•ÛÙ‡3ùdÇCèÑíB:ä–¢ž/ß~Îl+ZƒöÏjˆñ]¤ç$~#ã¹ÖO Ë–%–­˜¿É†tKS}£XBåI£L$
AŒŠÍD€¶Æwg3öŸç'jŽûWJ1ém¹{LÃŸÏ)µ–¹¸]ºµÉîèwV»¿Ó¢~>ˆ£¤ƒ½ËˆLTO?åV¡3Åiª€ÄË^×ŒìCý´§Îþ#jžnéÔÙa+rù³˜¯Â±IaÇúj©šW~E¨üY€çÖ ­ê¢eÖcÌæˆÒ¥PRk=Ì±%XÿR¬Xˆñ®ÏjMÿêjd14‡ÁáÎA‚¶'T£L0ˆXEZg%…?J–Þ¤uuë—ÍÂ÷1}4wŒ/n9—*DŸÌèI ÿÎøþ8JZšãf=: ô~ê–´o'|ÑÃM’÷!|gÜ%‡x»×=M·ËjÍ!ÑÚŒ3<^ƒ3¢>7AÄ5áëº Xô#ê:PäLrDÜÑ¯_o£wð"#ÂÌ—ÁîžÔÏö²MQn£ÔÄõ§_GdìI|·lš€ÛB“Ø{;8~£’Y»º>"\ZðÄÛ†®¼Sý/±	ÞKUrà±‘a4„TÛ¦||Ü!áEAU¨
¡{ý›Ë“ôRÿ-7öˆ˜êôIÍOL>h
ƒGñZï#&X}'1úÚ?ºa2Žî1bÉwŽ-æœ­Õ, %ciïspæ!¨Ðo£yÌEŠ¬GÁÝ½õS3s#TØ"`¦V§R4ø<i5Ê%Ž÷BÉa0+™ë7ÙÏ˜ @¦¼áÅÔ+¼Áìµ£`°Úûl×®BžŒÂÔÅiRµM¶ÌµÂQÃêc+]-%>0½Ô×|ÍÌÍ‰Q«gùC!GC¯˜Œ°Ùðï!ÙŒ±ì*ê¯ycžR–Éë¥UKQÙ5Ny	º¶G	`Jþ‹_;Ûô7Û0M›Îú÷=›˜€ø×µ/(›¦Íê†à{2<lèú[ÐwSÚ­Ôâ2‚Z"[Iƒ\ªZkùe†Ö½Nk†ô¬ŸøÿÎ©s¶L·»€û-=Î—ª•ÍSÃ¹²$mêx=ƒóþ€XÑ®µyÉ·hPÝ
õ¦k¾ï«SSÁ
Y™%ûëbüe“ß	ÊCCN·^eþ+Ë·ž½2´ÕdF`16|Á,žLwÕS,AÂP«à¢-|i{,O¿°*ÉLã_}$ûJ®¶SñèƒÚò?ó%–±Ë?WAHÁYWi_êa-1vôÈ»‹R#‚ÙŽ÷â¬-4)‹½ãAŠ¤@è­Ñkg¿ð¦¢<€B3øNqYÍMº=:Ñr¯®.VŸÛ0S?‹fgûË½éä_­¨;¹×äÃ,:+¯oë‰yÛ…CÐ-¨Œ¡²ºn€ì†ßó2Äòµ[Ù@“Ã^$ÆÿÜ÷³ÌšÖ\‚¢¹¯<O=lÑ¯`IrÆjœôÉëÜ\òÒNw“o"¡L„/€sÙ¦ùr¦Uç·‘6ÏzöS©(LCÿ*ö‚qÖa.+Ÿ-ÍúB;»ŒÜ|fžCÜœàé‡´@z¥§¯F­b‡Ò3¸>@Ë6qY5¦0(jŽGÌ} ,¹þ§è@{8J”]„1Ík!ªùÚ®¶Âë”A•æ)æn@EœBk¸¦É™ðBÕ2Á0ñŸ%¢ÿqŒ>íšú· Èc}æH8þKý4ÈYa£Œc7åO,ú "%c‚¶Ó„|p(ö8ÚnÇ{¦ !dQcÝG½O^Ýçûh?Åqó4é|aÎ	¢IOb²âÌ«HçÙ¶x[DxõIX›6ÿ !ÇR–xSÀñ,ò^Ë%n¶ûUS`Šsq|œk«€ñŒûyóÎNË˜Õ!RË…Ž:èËN*N,, ‰g˜Ç²Ã'‘ÀøãZìp ïçÖÉ,c™ù ˆà²•-ý!3¡j°¥“À2Bõv]RF­J”Â&ã¼£%0wvþÏ£ûFÆK2Ð]ó(·:çÁî¦U\yÄ*ÝI2Æ…U~Vë·,¬Q–ÆuWNÃå[ -ÍÅŸ—?ÒÖ“<äÿ{Äïa‡K²M,n4ß˜Ï	ßû¸š8¸õó³¾N A
lE’¤¦ÊGð Ea[JÍ´€¹@ÌrÓÿ˜;üD>š¥—ÝTgó#%¤ê+YuÀo	’:FÓ01¯ÖýD‘ª5ŠXÍ"Ëî.'5õ»Ín+@ÁË>¡—éT3Y‡ž{Ï¹T‡äŸÜÃ’I&ïDB]¯HÃo)}Ïo~O†ÉpByù¼qBqºA§µÞ6]Ò}LÉêá^Ã;“]BïHÅˆySiˆ©Ï{|ËI‘E|ts„‡rgLœ/¸UŽ ôôÅJˆl †ÉlŽP
WùYø‡ ÊgW{[æŒ]9xe,¨USþ2µº¸³ïüÏo§²´•]S¼ØSŠØ0|?ï…˜‡–8£ß8i^±sjØ1¶šNšMþÅÅ¼mOÞÄú2Z£•Ë&ŸÎÑ]Ü˜u_$ÚÞuýó‚äfíj§ï«5T!aNbøô—ÊËyË¡W‰b XÓÞ¢uû"„)“÷Nó0ú»Öis¨²ˆ¬S{dÁîã—ÚÖ¶3òŠ žîãêø(9Ò<¦½*wâjÉsÚ—[t“»¡ìc”.øùR~é"}ª#îÙå­äBÁPTæ÷qf7ro=]E-ÝGgsŠ-Î|}sºù|«G"D¡°I?el0).¯5B8hS7”(#—-7ÙèB£EÞ úcÆëHy™àÑÊkuV„§Áó¿©î]Oû˜w Ç×ü§¢ß
aô&|§‚‚UXÌiÒ’å‡;Ã(»2³L¨ün3ujD_†&S..Î¨¿—W“ÞÊyY­·dCqvM¾’%ª‡"ã/!Ø-óØIì©Tk«¥µyJN6ß6>¨ŸÞ„§MŠ ŽËHžg5ûãiª½˜û Ku›•ìš9Õç¹ûŠAâÝá[¡¶sN£éM¸9ƒÚ“tH
Xóu†Úßÿ”]¯ ðå)öäÈ7“p¥¨‡+
ôîÜÕÞŸË
òÛ/i0›Åv‰Há$ArŽ4 
*Ë›±Ž¿Œ«u*×“(¼Ëû¤Rü±~ÕÖùí±W‹VC2&$Ž¢j~[½n1¢&vþ¥Ï¢àÌ4äÛZ³sbX,3F…ÀÉž%WæqŠ½Šb¿(¬Y ;“©&ÒçožâÀWÑ³ õ+	áóžel§Ë$t•_«‹Jz9Õ™oy·ýÐ<
®
5z!vmÊ|²’É±µ}™TöäÕ|Ñ ¹Î±¾zFd”?àÄ’Ä³°«Ó\÷4ß³+%^½{Ùg.òNa p@c­³lÒoOƒÆ.ÂJˆb3iÐ¦–Î[Òü´Ô¾ÏƒÖ
˜AŒ&Þ Zc  4´nº<Ê&eVü˜²&Ûíš!á¬}ÝyÐÊ+Ü|u`M1Rhõý.½f¤_6ù«ìo×¾<óáØYW"Á°h¸ü-=ÕÖj,-þD½ÏE)é	‚ëö†é`‚ñêJt+*Æám<†¬o5°4Œ>ùÌq3îJ§‹
·ƒØÿJó™¸Z™\û™±-ÈÏ¿+—íüƒVsKwMjÍ¯2(kxùì¥R¦(Ww£ÇÑÃòt!NGPE7ºT7½ûqY`ùtL“jS’äáË¡_¬?“ÚåïRAj·qñ]¡\i Øè®¯v_£7·lÐßÜ+aˆÿ[`ûk”G	‹Ÿf³ç«§ðPpÇDè“†k§>Ë£çÊoÂ„Ûb?¯Ï€27•xP»¼;u\ŒÆÈyK#©[¥^»bÀ,¡·Î?øÇøšxšÙ8§EtÌ¶7ócÏç²‚æl9&mC!A[%n“dù±ÔßJ¼*Q¾ð)0ËòHA3CBWÉ×´Nkò±´v ^÷M•“{ üÏ ¸ö«›B¯þ0âXËÍ–èƒØA/¿…¥1aõ§ÆI bB·þ…ý,ˆˆƒ%T)Èb"&MÆ0~pLhÃÊ:H$ýP*4F-yÓ…\…'éhòÑ"üÑÍž¢ÐDÉG„ï”#6	žmS&¬ó6þzÑHÎxÔë™WW«AhÆ”&½ýÊÄØr<<	…=kèìô·¦Q*ºãVõ.z|-‡P¿&?›uî#àÑq8mú1(côŒV²Z	þB"ïa©B7¿õ°K].S.Ã /:g+1ã½6ä€çpŽôüg/¢„r ¥)“ÁjVBšlñ’y‰ê$ãˆxI:d¸ôr†€LtÎŽÊœÎRÇ:i|×ð1¤á÷†<êPu$«Rÿ€›¦(X˜?*5‹E"vÍØ¬¬‚`·Ÿáþe ì;GÚ°?¿1²”‘ÅaRÅ9V‰s”ÒŠ5”iEŒ^¨±0;¤¦Gm[[Ml)´¤UÇTàü$:-	°Mm_Ç!avƒ6†>ú—@æºÕ +w§|\™ËŽ¦åÍ$>¨ÙÎŸ|w#í8=Ý5a…ÃÒà`$°;Ânezƒ>È½mšlÂ¹7=•ó­½	Zh"{ãeÞ¿¥±d¢u\+*Ü/ñÃ“ÓAø5 %‘‰ïP^â5¿„ˆ‰|>:þöBoVâ‰®ÙX•´ã1ow…á•fà4’çÑéÛ]9ä¨ÃÙÀ3’®DO¹ÝÑ9m’rÀ':¾E®‰.©He9±C.šÞ×<¨ÍÂ
œ¾¶!³V{j´?<øN`¼I\óßak·ÿÎFÂµ¾î¡)yøM•ÓKkX÷l¥!fq!#ÀH­ Rõu÷`ÒÝ'„|N!\i†u[›ï¥lHÌ5i[¬ŽÐÄæb g üÙ.ÿe¬­WÒk¸ïÀ“¯`ÔîŠgd¤Lé»I¥²÷hk ã2c—þ¿ögËF!n™Nä¨{Ñ~–öÛø^ÏüðÝW0ÖBÐsÅˆßÐØ #9z·.fßæäÜup!þqvõù’ƒÚæóÐ	ýœdFÀ•BÖ¡b^õ¨ï¦\5cÂè^±Â”;Us6a_(ªŒª±²!R^®A:·¾ù|æÀÞõÇÂe‡cëÑý¹ñ_»KWÑ_"LoöÛ¢“(‡ü§_¥Å„
Ûük÷¡÷›NpÔ×'aÞoáÏ¤ ßÛÐŽAŸÔÿNÔä1,ds¬¿óþš±÷ª1X6•’¸D“ìÙn0çóÙoE TØH¾g 4L¤»Ý¼ß<,{8 þŸ'Öô†ë|¤éÉÒÀu('2«©ôVêÊõ ÒBýf“A¤±HöŠ¦ÛZ¸WaŽÉÔök9:dCbòúµH•Õr”,œõÖgÙÛŸUpŽ9	µ€LÝê3uâO¹sÈÙúlebm#6}oÿ>½ Î
fnæÞ·Æ<g¡šó½ÏZøaº]#žNñòS,`Ñáþðóáb‚Áy°¬µÜÄç9&o$­¯sò™€9ºa˜	:³‘«‹”òi}AJ<æ£C‘Ó©(¼Pô<*ÀgýþœI€úL¹a7€Iq‰ØHÛ8ÎYHýIZ
Ûä«ót÷,èiÄ~“œ)Ðñ’M,´ûºú… ¼o”£éÏSùcæÜäëir]J±ÎýÌ­¡S9¬J_j¡˜r7JþmQðÍ¤­DôtjŸf-ot×b—"R:=á”Uå£ÝËé7à€œù|c6¬©ƒ½ FÆ$bøsße½ü»ØEâ¾žÙäJ-“²æ|`ñÑ²Žºx3t$Pk&ñõ×d¾Ý0Ï¦ãÇ#¨´Àèœ@ŠPÄº<æ³É¦9!¢ÚûŽbõÐP¾¾ËÓÅÐVô÷ËÒ_ $:WÊv™!êŠ½BœZ®©nÑ¶`«EìK’H¼¾M:ÏžÉ)>n[\y^BÑI;Ã2ªí$µ1Åô,	gW!@e·S›Nød–èÎ/éòoÏ¦•î0¹‡N]†À˜¼%Zçÿ¸Z>U8/z«ý4^dâr>×1jçærØöžâH ¬‰eö¦ƒ¢ß˜¨wigFUSifZÙ0‚ê¡X(Ê¸rëˆ§9Á>†ÝG¹r¬r¹KA ‡ÄÏgóL´5ERÁ8²~ø·½Å×SÅ0šã\ôCaòŸùU†Q·ÍFði!›=OŽ§·oµEæmR²ê»««8cÉý#ö
šÿw»k´Æ­w£F'œû&‹¤v½Ñ©ÿ`(IvRŒ…ÏD1mã9åHŸæ[YAÞJßæ%°} ]JU¥z:‹_N¢öëjQF™xo‹ìâ8˜—€äÕkðµYd0¦
ÃÇç¶%ò/Ã¤ƒ„¡[éÒ2.cñ`•RÌÀ˜ÆxÂìó¼Ës
²Ê³éÈ¯ÜS¢G¯šú¯D`Ò“Q‡Ôê±ÿ¡ÖcÕù8ºèÙa£æß>”	º§Ýï¥—éñ¾Ô”al²¯©XO'/—1SÊRÕEÛá#O-’wI³C¼ÓÎ]úo“4f$	íWfÇòæq…SìÖ~ˆ,9l…
æ‘ÞÊUµúO¦	_È²ŠÉèØ»³‚ÞgU ðl<3ü€)8ÅÍ3m¯þ’TïØ€ ìó°Çº½ÒxP‚"ø³v€J¤YZ¯ (SZ¨Ñ—ÆO›æ9×óÛgÓ>âòeçwf¥ÌCÝŽï©
‹A3ŒSH'Yí+³9!‡~ ùc/_9ú×ˆBØL)¢ì÷¬'°ÄQŽœ •&…Fuâ©Í1?XxŠµ»¢²Ì_‚ràùâ=§ÌBN5b‰hõHÂ›*ÛÖû@[Q$|t.Im×nÏ8šû¿$sòëvJ)—0n24¼Q?y‚:I)(;lÚƒöw2×ñÜÖ*Tm">æÛèýÐºìvQ)}!+¢CY\‡A"uKÂ¨]ï­Ú|uŽú–
¾}®½«šMÞ­bX¸’JvÉåöï"Hx–z›ê	²Oi½:„¢s ‡¤ÞÊ•[Ô‡^J«Ëõx@ã+_]‘ª·þ…$~ª¹C j¹Ô„?ï)EâÍ½õ65(«žVXSk0dw%9ú—ÃMž`Z¯ÍÃ7/¶Ñ-¯PÍknrñ¤ÂÖKP¦æØ#]Ô|UGgÝî?ó€Óö˜îš€[ä˜™Öö™ÿæ|Ï&¯mV˜B@¿+$g{§Ö÷Ç>ïâ ÷¨T›ÌUdé9M°àcCbê¡¿,ŒÐc]Ÿ	Ü³o«çi]ù9‚éénüñëÂÂ˜$Ö4¾™œIlqvá…œ•*oYÑºoŸRKØÏŠÐºø.Ü‰/Q„¯Ç	'\ÉzÌµaÅ!!Ú¢[òñ•NP­ž`ò–ÖÔwGc>úO°ÞmŒ¬8IœŸˆjÞ‚½ [¾Ô!.-PøÌ¨óÕ0ÛÕ€ùSÃî@p¼QÓNˆz‘É8A§§]JboôÐï28ðÞ2³´•€·Ú#´ÎÎÓ‘ÇXg—Ÿ¯ºº›Ï	Hp¡`j¨éf7b&t´(Å+êãÝc<‹‚f·H£z–Ü#>q8Éîi\ôñ•øöŸ N(¶³˜>Ä%ŠQ£åO‚Á¿cméšŒmÕ<€ËEö§>CgÁ1­îBÍÄK¤ØOFn†·€ýafñ…«BÝá(v’ÔIrœyQÚ‘²1ÌsÇ 7¸·°êhE¾u©tè_/1C3¶vlõÎ# Ç{šÎ§èía9×˜²W¬À×Lµ¹ËŒsüõ;•uÅjŽ¸·,3§D­
EÞ²CÝíŒ'ÎrR ¦%C^‹ÂÀ´"ÜOÓ„‚˜ž(‰ÔQH§Ã„³Ç×fÂ6eù'
‹xCªÑž7L í2¼¹´gjP0=ƒ¦hÚ2'­©CòÝè¹¿O*×O`L=ôÅ"’zå<‘Ò0¤kº(Î‡Pï³_o´Íîh8”b–LJ¤µÔôyñV#Ì+ÒêVo$sŸ¬ÿÕÐQRÏ¡{ï³™UÄ„4FoÐe%š—Ó¯ìGÍ¢•\/Fr\SOTô†Î{PRî"ÀˆŠ¤Î)Cš˜{`ÑÏ™¶=ZøÂü}ÔPO‰{!´6P×ÔÛbÃ 
€Ø0fpï[,kK}á¯òN[o4Ñ,{E¹ß}@KÁŸ·wO´•ö`ôwÃÌ^e°_jyÓTÉÿÅ<¢1¥ƒ·dƒÜ}žÂø3¤#®Y^ëcaßáê¼n@[š²SË;¾.ÒzŸzzÂöbk¥84"‰»6: ãÂÝÎõÛ»{ÉRV¬êªÚÏ„EéV)Q[®ý’<®¥‚-‰RbhË#'8Ksð}vþ“LSj8(pÅßå®ª‘ CpLnæ]oPgˆÚ9‰ìd×Ð­XÁE|më"áU>•;Y}Œ›ŸW’E²›û‡Žqa}Ur
Õ'C3cK´n#æŸì]ÌYÜ¸ Ø(Ü4T¥ùÁ®ÂÐbú@Õ'ßüË'‘I6px9Rö¾¥)!¾™GvQ|å0RY«Ê.OØÜ=<ûq½,ì§»¢û»ð§‘2M€ˆ;ç(ªdMLN™3Øà*t¿;7ÖÈìÅTá„®´y4§6·gLyp†KRÛÓ±@³”Á·6
íýØ’þ\…"°%kƒ\Y››úI÷f¿æn3W±H!ä5‚Ü
š†¶—Èú¡7Ë–¹‹³–É_Gû‰×ïð‰/ÀŸ¸x7lUnö…äi§’F<åPg²lmÒ­àjþ8kK½`CÊZ–êG¬¦k^Gîí¬õ‚'|/§kÜÉC	p‰Ûƒ…¹²£Nÿ 5ÅÞö]òT4B¾le'.W gqÔ¸p{.ÖÞœ¼^«=í¼a…øSÌ=¸ˆ½1W³¿ðü´8r¤M‚ÿ_‰=Þ.Ûs¦ð¹[»EÈèh€Ç­^´Ð‡|ó$[Ê@@07É>IÊ¯f/÷¯Ô×¯}˜p^Î³ ØöøŸ‰XÈ6Áí&Ôµ€‰ŠðoDUÈo²xºŸ¬Íëøu	bûýqÁ«†Íeƒšl+Aæ&”àoósÇVG·J÷É_uÒ'ó"í]ZU¿w±“çNQ¶Xû:Wâ³½ƒ®,IvZ0Í–’å:É-[O«¡Ùg¤ÿ’àAñm#º%£¥Í% Ý8­Ö‰ZÌÅ©Æˆd,¥VuþdO”ÌD}½(T7.¤!äP€(oN˜v”©d!‘Œ‘y¡£;½XÞ…‚)§ân]£æO¤aÅ/¢ÐÐ;fÝuÜ°’•;;%Õ ‘ùdøøîÈ&we#)~Íó’aýpJÿzÏS^2R‹Ý¹aÃ1‹<y\Y„.¼p¡ãK×MËP×èå‘¨-íœÑ†'Q\›·½öæu‹Ã°dçj40!ÈíÁ8ûD8¾¢Ó‘»ÀSæt>ILgtg,N;dóíZÛZasnÅ¦‹9Bnuð¢¹oš…ÆvàÚEEïw+bKwñ™$m»V[‹‚$JP©Ñû-ßp‚¹¹…T¥»ÂÝ¨ClgNù¼¶Òj'ÚŠ¼ŠÈd¸©þ¾l—@|¸¡:u­ý‘œyì.]¼õü;ž¿M¼Æ;%#©\î'WE÷ÁŒ£ûóEhG§'»C%•:gç&ÚŒ> ¦}¨}ç ùTŒúéRÛNqý¤Ëƒ¾yñ˜æp}ÉŒ†.ù»·±R2 xùÕNÝE¨jÒŸsŸôÌ×„ñõ–R°š_b2 Všß)Ú.|¯E	_ò¾~D¥~÷a(þÉÃYFæÊi·À,ÿQT¢/Ç¿âTçœý·P¦<kºø“Úp]‚-­‹hÆð‹ö ÈH¾=¡3F[dóPP+e-zØ`¿ˆðæƒm•d¥¤XD­ &Gú¹¹â|ý=‘ÌPˆûÂ„ÆFr[òåˆ² 5Âê	E¯ß£¶xÌ0# ÂqI°úÀß;{4‚ÐËÍ{(¢BäfßëSÆÐg…òÑ¶ ¢°—#1ÔEjK™£ õêi…{·µ±¾,ÕáÀcW"76f)~+ÏGhL¡#´yxž¬D/&ˆ)àWî™”LÑøØ”µˆÐl‹t¿7†Zoâ‰¬Sÿ¦ÝqN+—a¦*Ù‘fí®›^zØ÷ë§;aÆã6šÔ'ùg`g ¡LÕ±‰»[ÈIÓƒ·ê‘[)´2d1Œà7­‘ ±‡#Å¾¯_œÙh—Uù#¿Ê)a
å´âJç#×OŠO¸³LüŒÐ aÙBofwÛ|¬ŽèóVjg{Ó€îbÅ) ·C³ R¬Î’ô	r{œ,v¡ÄI_qÂ¬\ÑÍÓGM'n†Éæ²Ã…Á†KPÊZ¸„[&ýíB9c‚Ç %¨Y'·êÆ±¾µ‘Ï×À°gtÄÔË’ÖîÈ"KÐð×~‹Æ]ûï­[5>B;=Øh6Ñ› M3î<CYì²†¹Y@š8üY?¶?n‹ç¢Q—&xRiö[¦ñ­4Nˆ«>ª2§ôzK@Û1Û8Tñ—õ~¾A%vH<XnhžP_¤
ï~{ó	¬ö:)Z/÷6Ë³@“¥½ŒCT§–17íâÎ•p
¾v](^¡€³K#é­Ûk	’r‡Qòƒ´X×÷Õ!¸2&fQíÚ´9!(í×ã8ÈgW8>I4dà'OË–ýU¾f‚k=Pç¾çÅ—âÝs7BŸjçgå‡nÐÞi¼ð]Y‘<L"ŒqþøP¦NÝ÷@ùhx‹—n%·ËËÈü;¦éç|BIZµ*æ&‹ñë¥1(({Š	…ùèÓd÷¼K´1›ãÿJ€7–D¹ÆÆo'\žêÛ•¡•_ ŒþÇ½tP ÌK=–‚JŸµWµ­«v_—î|Sê7ÖµÐÕC¶ZÊ¸Âí>ÞRŸ›å¸êúœîÆ ØÉ­dØ lä|U%ÀªB‡aQöëIU¯Z9ùà?ßQÞòºéüA¤Ñ3d8…Æå1^þ09ÿNb#êØ¡†SãØC·lÆùÏYÐÔÊÇßvìNJl£ú6Ÿ7©v*úšªˆ!¹ÿ9®fxhí
©3ávzÎ´j|§ÃÐgåjª¡šÏOŒ—»éÑt¼4WÌ[Î:‹À©â,¸ÃÏ•`Ê{¼9æZ”eIá¡ý„®ÿ4YºÆ‹d“·ûš*ÑVy	\/—_Í-+‡¸¼äc…ipBÃi·ƒ‡þÂ_ür^Ý7$ž¢3çY•Zá
Õ«­‚FØ¥i¢ŠËEÑOï+@þFÜR‹ºUˆz¾dŒfP9†¬rÞuKÉìpd¾s(lÍ5ÔZÅº£A#ùàáš¯Å}’Ñ&\§L@:¹„—ÿw¡ªnš‰Úþ8wQ–|=vJ Éw@IëôÖœ¿Û;­´û÷ä¥°ýz¯\oéO1cîF€~ƒ+o‰Òkà4—lÈtG7)õˆ#’ÛÙDZöyP95V;|!6°sòƒÍ.êózDlÊÚæ¡ŽRž	þIË®|BíQ’´.¤-,1Mnù£bx	ÍƒÜx[Ežâ¥é×žÎÙ,¬ÞSÃC³,+5¢Ã*Â@øé¶dðéÚ¡ gëVŠ'JºÉñ.ïC¤R-¥WÅå;z@|€0°­ ÑU?.])‘bœâsáTŸÏ§[ëÃ6“¬ ZÕŠíç(nhC;]Wæö1ZÉBöbÑó[(ÉÆ©VŠ¢b®¾.#h£”Ç!&Çšpú£‘ºâŸ¹Ráwm¤*ï¡¾G‘cÿ——
½NÆ*ð7Hs;B_¡iŠ”cÃÝƒ$Þ|Ø±†r9,};‘´­òò)“¯RU;Îwu8…e¿ÈÊ#´ÜZFZÞoþCþE@_ræfñæ^¬šÕæI!žaíü°6Â’¡)›BôŠað¦ †O¬*UãÞ7õ¸K¨õün!Ì™Ðèé¯Sk¦¸ÑŒ³H–ãfõ\°¶f]e;Ïî«È:  –¶9°òA4=ÖQ)»X}	.2ôFõ' ¡}vÙºCoTñw6T>Ý1ÕÖLŠêŽ¦}!©Ê8gós´r<|ƒÓó| :ÜÕ>åyö¿íU÷ÞSz:¡6-Ò ¯Âke2ÁpžY)˜wžûÏDm•‡ÿ:>A‡·ÒžVÀ9+£‚s‹ë»¤ÏMë±qÚWâÛm+Q;ÀJWªÂ‘1V&öƒÞÙ˜HÉ-Ãd¸­n,ÅÇÐµ\Ñ}ðl¹…UåvFd©Ó%yŸjOT@d@á:úœ%[F€Ì^#F ²{6–o}RÉºÆ±TDiW6@j@.0-Ðéh‰õýàüKŸTäà5]—8,¿Tº†’¢´}a8âÃÔ÷Z€SÔ®Cå\úäæM€ÃFpýð`¬éÌ¥:¼ ‘dõ}vð¤[¤@ûnÀ(dÜKä½'.=„îÚÞòú•5Íçñ›ßÿ°›K™Î§Ýïš¬ÁâãÛVQÑ,O³_U™jˆ„n³Wþ••ÆñNZHír³ƒÏz"j¡»ýÉÅÁôÅ	<-¥lbËœ¬Ou!Zè–
23nMSºªð3ÒUˆÔ¶ÆT­ß>„Ri>œ@`•îÃá[²¢^„ýé
@AäP§÷eÇ£bxÍ é_Ø0E1ˆ\HaxÓÌÒvñ2wz¹"°®Á˜VŸd˜ÉRÄÅl=…ÉÄ}êî5žhíŽ<G$Gg`BçÈ¯ 8vÕ‚ÊÓÆ' ä6³×èØˆÝŸÃÌe[öbÚù<æ0¬5{Ãh•HUÂ™ÓàÞ@Z“³¦‡?yŠï	Ì±´wœÇ|ÀÍ·E±.ÞR-æk k)e¬¥$:,’‰	@U2ßYü/GÞI•Ò1Kð0”188®u~`­6ànÞuÐWÇ >˜R@ä
«hV=àR'jõM¥'éñü°:LW¸.V<Ü˜@IŒ,»z°1¶Y£g ŽÃubëJH‘öpuêåàr?Â‰Z‘«RÏ¶˜ŸîÏõÚÞÉ×©žÍ}°7oo\âÑìæIþ0:è—Î¤«G–ÁŸYÚ[:::|Ÿ=ÄYxd“g)±×ªÀèx,¡2Ó°]«e¥^øiÜŽÝ Ýz5Ý×¸«À?UI˜â4ø"ÒåÖ¥ð¤ôœa9’æîjH‚˜Ãµ¥…((ykr…Â—±ªÎ€Ù¿±´éÍŽô*Ÿ©ž<É_ºwðWûê¼X‚TÂ QeV/àI‘Gœ8á@-è{×³ûx˜Ë9§ðf øãZ›VhPf,	z¬Á.³EøÖ®Î¼{yÉ‚}Rù4x­üTVñSõ¿†/wŠùÕä’{âDZí÷ùˆ÷ö¯œO™!$l3ZOÅŸ£ÍŽIrA±ð`„A	ÐøUà¹YWéè£]<ß¼æ½NO¸ä’ëðU}BêŽ@íô{åóº3¥àXF´af`áš“5ÞG
n”ŽRi,¯¯	@ÂWœ!OÙP©ct@kÙ%ÙÆ2»­¨ØiiVäZ2a>äå+WjÏD	6dèÙÚHvL«úÙê{	ÂI g‘;”|)ƒ&ƒávš'Q©ÏÔô‰Ò-ú¼> ðq0]÷ G5+ÕF¨‰Ã!ÑøÓõªè4“¾ÇÄ·ð˜F šé¢‘PM œ¾Æg 5™;€èo)6¤¤Y^ª}y’’ ÙáW-³"b¹ç(ŽÀü‡ü¯ovHSÏ¼9’Ú‰=Ãíì¬æÇÎw¢¥ò&‰§	mp{•£W¡åhþBàíèpäŠ”jæ~øÉ»/$Nu¬íKàúBíÜ¯Ú¡Ø$½‹ÂNºÄ¥Gãž×TJpµ¡°r9ˆ£ß3AŽ¾±™ý^	®A¹²0,òÄ{à¡vµü.j ¥ÀèŸÏÑ—^ç¹?Çñ¹µÚ*É%ÕÄq	³Ì@Å‚õG_GŽ7õÄ{ŒJÔ9”c$$ñEé±¼å~Žˆ$/NX)lì+½µOŸ…¹…ÕK—FÊ7V[´œ?…XOb Ö–ªkÞŒ‹•„Hš¸d	ëñw?h<LžØ?è·¥Ém®0í±vbüË«KŠ{Óù±Þ2O£È´ˆÖƒ¬B,®õ$°âtB&ÿM3QGv­°£‡›ùÅ  ))Å÷ågîmäwÓ;Òr?n¹O¤ý1“Ã‹Þ†õM±ö‡(N³`)ÇæTPRÂ
O*kêÔ*Ë`KË}}Švj'!¹÷*>&ˆ¼Qb¿Wh «ë€PIß-¤ø@l[ìõñ&73ÈÖÐZç9ú Íñv™HÐX]Yppõ£­ï†|ƒo‘–h µáÒwåµÔp¶¸¿JÎÊ$Á¼Š“6Äºc¤ž×DV{!Ï±0OtòC)m}Ða`˜¹¦ßÁ>l52”p.§Û²8†§Ùí§w…Áü\8â×²xj¬Ü©ê82 ÚðPÂF1Æn†<W­¤5Üyd^BX^²<3MSû¦œF…VSâëi\PAßAxOk^{ë“~"7B4oµg×R½nÑ©Õ+Ä äìý?)söhu¿¼\o¯¥JŠ"øçÂù>8«¦“’þƒŸ—-ÝÞ1Ó!º¨êM¸QW÷‚/„]!˜%£Ýz>ÝT¬äå}á%¾R"µÕâ+p‘ÙyZµHÂ£@Õ¡G}Ü?ç11ÌLU|Ð×DË¤S‰ &\­8ÿ³7)
ï3 ¥†-Õë‹žýÜWz	¼Ôh¾Ž§‹&<os¢hÏ˜cï@E”7‚b,û”£Ÿ8¡yÝSy¶NFà¾Nbå”7ÀÔ|—àˆ[Ykl¢:e9Š"Ád«ÍÆZªž½˜’HBZÔqƒs’æ¡|…MWáæ¾ìMÉ¦DúX‚·µû%èÆQû"´˜BûXðD@T€½ªF/MD"HËèä÷ûó5fÃâÒžÙ×"êá£šÕ@g·äšq1Kšo3–H‡¹÷é´e´ñXì]—Â~šÎ†7ä»Ð¬\V{òXÂÑÍÀ£Øi¤1;#òÊo-{{ê©pð-¼€¡¼{{Gb~\í*6¼Fæÿ(Ê‰®hjáÅ¹ s¸-æ]
Lñ\1òýñr.Ìö“9È¥œ¶üÅRõQ5ƒë™N2zDÊy3Ü¿I<“„ß‡qG…G=²Èýþ»ŠØ–—D#x/bÿÙ»R”JÑ O,3²Á¨¡-.Ê˜e¤]1³ ½Ú·çÝ,Ÿî_Ô–Ú.8%Þâª>FÏá±’2áÚöš­Uþåþ g°é%üòÓ€!ÄÓ+žµÚ9åðTdtÒÆÖ¡Iƒ$ÁÍ”¾‰GÜ¼ƒ4–ëîNŒ)ÚÜ Ï…MâþäŸ‹õ’–÷ˆ"³Û:$¥Z[¤šaÐrÆÄá²P~‰‰•³ WT÷ÆdßrÊo8õÐZ—n2%iÐÉ}Ai`¢œ<ï!õT”4lä‹±¨DžÿKÁé€Æ¤ k’¾œ­J<D#PSŽ<.b‘Lš4Ð(N¸‹uÆB6ü¹Fk;¦î”¼nkÁPÐ8:õ&‰¬„,¾—¶j-zæ'°¸A]iÕ‹~Æe›"û-¨>ŒÓë`Ø‹¥L²K5e]EÓØõ–ˆ+¨óÑz¾;[k«˜C‹QX“›ÿY—Mx(_øaçó„íe5ÊA74=*Í'YPsÅà>	 1Ê¡YëÞp±Ÿ4’ÐNV¤/;)mÆrDŠ×OW¿äýZõFÕ·l„Ü×ã‰ß ¯9c5¨]ã1ˆä°TÒy"°«²ÜçÍâº(–ÁñÜìOV~,6¡ ñ^8åïÝçð†13ãv°ÅÈ_á²Ç¤’ñƒéàVùÎV2ÈàÁœ$ jÇç,à<à?dyQýÎd•±ä’ ×~"Ê|«ƒ‚ãtÂ:#ØŸcIhF*N6Ø¢n$Ñ—íÏÙ|q¥fwFð	˜˜ªdH 8ý¸¨ÅÃ+ÔÊG%¸ug9ýád,†\ÌVs>¯¬GLè¥¥¸ˆ·4kr»³èUÀß|$¿Áïõ#caˆÐ|sêÂí7tÂCkk.»›y†9°°üN‘­v¸›qƒ=¯Ç0v7™Ç+=-`SœEþi6¡È."ßEr~ÆÏLb:8(«¶=¦‡ÂÓ,°T&‡yhaÏê['g¡ûŠ5¦•º%±`qÃeŠ›ºI…K ¶¼I¢»™-ùVÑŒ¡Ná g@Ë¼£™ñ‡ÂÁ³+9Õºƒ]{?‚ßÏõ«f…¿ù·ªnèÀàÄ·…*¶¿#rye¾xxW§²2îjÌ‹ûûq$ÙÖ2¸PÝØz¸½õýRÙåg…Æ/öôŸA;d¶¿ŸÄ­")b& žQÀw?èÀÜlßÌÙÔ ¶HA~yYE˜Ä£Ž<4àìÂ1ŽøD©‘+Ø=ìùß¥DZáËLæHz±4kËÆ4äãG‡wõCr¸»úŠ965x”],Ð) .E’ ×ÖÅ¶Ú1¬$1q™3ÐÆùT=ß ¿„VCN}ÈÖs—º¡EÐzw<½Z“e@Å†xŸÈa¾§/®X6CŠ¼&tNòÉ™=	¡I×ÐÃ%“mš;Ný%”dQ 0yÉèUòÆ€›KÞË;¢5ÓÞhä4N)-ˆ€„)/s/ÄçÿÐR¾ÀŠrò©¥åúÅl‘+7ÅeeÝfÑ>x»^þ¥Æ˜Çå­½‰¦xm.\ŸŸq\$>Õšú?«yD¶N FêDz)ƒpù-ÿ+à´ˆµ h* Ìf;AAàÖ4üàm³¸Z)4sÞzv:XHFEËÜðŽ{ß–N‚ã6=¦3ïž ×Ë¶Ö9cpwÃD®4n‡Œ®¶Éš¶ÎâÉ›CXDAß6ÂU8õ¦
/W¥Èy¸R^º$Œ~šúÌ¼UšUÏ–ß«AòÓÕn‡Üïž›O'DóTÖL7d‹áRPà#€<\„»\_òŽ2:Tt>Ê4‹Ãèé½ý ­®apËÐ|Ç×ÎHˆB\rá°,¯ËSOoø(hnvÓ—ŸÚ<?Ÿ)Æ0Ìü4_Õ9¶ãfÒÐ]@òˆ>‡Ýt¤ÞÈ PÁÁxØ6>}Áú¹CB,µŽ+õzîÊÿìÖsm‘{Ã4{´-½Ä Â9Œë4—ûÆJá… ¬RXï9EÖ
§Ý‰"·	Àr”Ihì¯îMOfXnG¸8‚›–”mó$7/Ë1¼@‚®ÒyÔ:SÁ±Ž’xa…f‘²Qˆ\"}¸¼º%W4KØBŠåº‘ÂÕ>4»"MôíF‚ÕK5š—a8cnðéeÅu vãJûeÛoÌ3Â•jž±~WÚ«m‡µpWh@DOÛya€ .\ˆ;Òì‹ÞuÉÙøšSv§gE	Øì´6 %¤nè°N™½F–­×%4}¦ò«iHO^vøhvñµ'.àÃ­±•ûÌò~Ø)ãÃžâ@#Ët6Æ¸{(‹Ø"n¾Uf0§!iž÷»Zµ/`”^òKu×Ä¼Ûlã•Y«çƒ#+?3|ù:LHŸtÛ5çÝKŠ^è¨ ðjŒFº.ÎªKÄwxþª‹"Úç‘ñW—o¥c,-Iš^NÉ„÷;²sÉéÕøâ­´È€BÖ÷5IY”øJP÷Z…'qˆ¢ØßçnèA>Ž”t<Î¶³ØdËÆ¦Ë~§‘Q>øÙe4‡£•œXVë…MÎ"eØ:àfnÏ
Î‰h*;T‘Õqdþ½bYöomÁÈsº½<È–WÉ½htQ
·aÖ}	‰ß9íJ†F5zÿ¸µ¶	.Y‘ÓÎh‰˜/–“XŒå¬¶TþŸ0ÁpÈ¦ÍÁº¸²‚;Ù‡?Ö'RYé42Kï*MlJ‰ÿ¨w–¾¬ñêg(v¬Í¥'#28By×§aªG°Â¤h¬=ø‰G]Ý×¢íÃ=%k¶¨¨:z‹ºíbÜÜ¢Oš—Áª.\ÛætÖ8^Ù½ûþµhÜ÷‡ÿ®ÛnC†šûk˜¹ÚÀ®WIìXz ^	6ìõUÏï?
C3¿ë\’< .ûK]gµöh¤}ÕU?vôFNßQÝŽæ“,`nÌþËûÝ{ƒÞøÝ= 	H
ÖUg)“,¿ØîócáJÏªÑ—3Ú#d®°ÂžÅôÚ¸ÎMë0ïìEªæ#âh‚pßÐÁžÄH,G‘åÂHÐPœmßøõù ‹$šdê“Ó˜Âa¥-eôŸêKº,~×BØÿÚJÔ5øÎìÿúÁÃÇP«§;äŠÚ ,]õ‡ìƒ²ŒBŽúgmÝµå„<™ßº90§§ùÇ½ŸïÐ;ÿ>NæGL6ÕJµ¦j¸(¶º>¦°½¶râŽ€,G\S›™SšI–ãÙÖõ8ú•yÚ¦ÏìH¶bÈúFÀ€¼l	(­Â
µ²,üOË“ jgÿþZgÊáE3k
1^É Ç­¦¯Š·}ÙV-WòÌ•rð&å(NÝ­'ãKR‹÷Ó2gÒä_OÉÅõ¶7·ç'€ÍÖ)f¦H ¤"Âêâ#¨û·BÀ\kÔà%¬¾}‰Gùg™tE•×FÛh?[’mÅ‡pK€wf>øìòìÞÊQ .!ÈøD¦`"˜OjÐ\­ÔD†:×k•+·à¹3ZÙ“§gp…5¿©@®µ°ôüCpdb8bÜŽJ4ê1ÛÓ äˆf¿ô„F¹Ÿ†©Ý#—ePß9¬]Šl°¹kßl%Lxš½wá)Š†»d†‚%T¡Ü«vxE'¶˜ôWÉâÿ‚ÌO4
@cÚ¥j’9
èžv®€DÄQþ¦mˆûå1³ÖNc¦QX ÅwÆWFrò:ŸÂ2üè')Ñf#¯zFú äßˆ¸ÿ)u:eÞÐ9ImKâ/ýŸ(%>%nê¥Ë‘aÅ6mÂáÌ‹
¿ê:µ>Pý6þ¿”[ÙaÙ€5ª”ÒÝZÅ‹eê>CÉ€êœM*(¸«'PV	‡;hÐ‚àSARŸo¾¦g‚ JŽž²q¡Ñ•@ÙÚN6àá˜` Ò
íÇ>TúÏŽ"¸¢òBâ6Îxö;á7…ê^ºØÁyHÆf†s\ÿW°(?G3È¢žyçU·Ô˜céøÝŸ°‹©wPŽ…Xôu†'4	mã¶k›â˜ý5M Ô›S³xò‘“#NÈ)b`ñÚ6ŒÌáÐñîq<
méTXNL1=ŽCñ¶1ñ¨ÁX­]SØž.¬%‘ßÄr&¾Ñ­‚™è­¿5ÛdzÊ_8&s×>ìã“^@^çTÅˆP|Äøûä£É*Èø{KòO¶ÈK‚[6
HÛÞ7Î»U·?ü¯°rËA÷ÍCXu‘ùàpÏ(â™Cþ‚™˜ãyÈ›Iž†)þ‰‡‰£Æ±méÅ¾)~<‡ÕØlê*µH‰ŸsÄŽó§ÿÅŸí“ràXu<!­]=¾hmÉÖâ›™W˜¼AÆè˜z¬w1)Íî<mTBÀ†þ7
‡þÍìX„ä±aP)…"ùzö^Ã¿,rÿµ#Ø~‚Ù¥Ã5ßI3pÂZ
®,‹çvüz¾\Cø]ÐfÃ1|‚
<•¹N¿r¬¹Ó-–cZ¼HzG#?éF"ªÑÈ]²¿­Ë$Szú¾·oj	(‰‘Ïã²ãÜF2Ó{>[:Ôef
F&ÄÆ%ºY<ÂÝ˜ì]ô#¤Ð}Ã0tÏ‘Ç#VwØ™™^gðòÈoÚ'‡¤î„püÄ%a³Fˆ°–l!…w2f¸üÑ9ß
+&y3Î ã
ZéDþLÊÝö´§›æ†¢Ã\}|¿&pvƒÞ stdoßsXYX¯ò£ÄÉ¼üíÝÂ¾p÷J6—Ô;©…›R`Úe ?øœ£„åN½üK§Šþ¿µ8u@H²*W“U‰yÅæ•Ïíø³œW›ÆŠ)ëÕêÊœuÇÎŽ¯½åkÅÙ kàï	~=¼\ŒŸ*÷= µÉ¡¯ð½²Šbil]ôÁÇ¸¿€äóÔ•«”g6›R@¹sÄ4×_¶ÉGÔ"LëáLóð-"ªÇ¹¹½0mòãÀW»‘,þ*ÐRN€×(ªNˆj‹IL¹ˆ·ñþzÅÁ|)
tÆãÙë”ÐZÓ¥Fõ8=&6â¤<çÅšØièƒx¶Ðë¼GhÚS³ ’rÎÈ8Z½ò»³Cº×î† À¼íAïðìN?ŒøOB¸ËÈë©ì’¹bÍ1"XË“(#oIÒsãO"ÄÒ&[‰„×Ä¢5µ‡1P;W¸°ß‹ŸÊåìþ¢ZÔÌ…Fu‡(ùSò:çzŽZ&Kp+µ#b.3¬W	 ­êû‹ÖØ"°i „>eJRMïÎÈ‘W§Ž«µf{x1ã…¼“ý¯wÑ‡@ØÖ(?`Ñ^r÷Bh.ºIƒ¬6ÊzÌ«ÎÁž”õ³Á²4É GFc"	‚¢#™Á'ÌMÅ/%9ŸÌÐ"ÑÞûº¢ª `[I Ç¾q¿´‹Åj‚6Ø ›HÜ¥ªÞ²û½u+"Æi¿ïÿV¥‹î ÕeãS¯íA¨yˆj\GOê¹6¹ ¼ì# m/Ó*_TÊSƒ³cyŸŸdï‘…‰š\³ùò­ð›%Ä‡Ë1p,T	õ>BgÀˆÉ(hHgåRj&¼Ù¡úøJ«âw)é²É‰cêi.µ>?mK€Û‡¼¯y¦Œ@Ÿa•‹Tß×œ%Ž¸["©tgm‹Ôé¯Ô›§*Q5Hâ¢ú-ñ_¤‚èqî›U†"ÚõLv0p%F,{¦F"ˆÁÏî ®bëš˜3í9>oæ©F…zÂâÕòã‘Ü’šÉh9“H—Ü··Gòf]X±ÃØÍnuq=	ã‰¾F¸7-÷ý½°Ç¿­Ð‰ÒŒ.Í‚ Ja@n@x6¾°ÒºÀ]Jì ?gt¼Ž°bqB‹ø_$HÞLé¯ãª®!A©Â¹QwQ¸a˜¼{¿OÛ“Þ¹O¨Ï³åj,hJ²¡"|j{ºhYÜmÚzLé7¸ælÝÕÔÂì³dµÇ¦ ¦Kq*ñÓ¦–óŽ)ä'„U}&Jµ$-G-0x§ß ÐZç<5:0IEºžæü ê‚}ýZîÑ"6¨îåçq[×Ô5ðVÚÒü,Í	,Q™eAŠsÆãý0s|£¡Rþ>^U¢`¢Ý,b²d¿sÈ©k~º6ã4tígo’dW$Ýä[ªö·*¾`©á"ÈŒ
Ñ1Q`Þ„/ºCl_´ºs¯ÂËÚ€ŸféÔSÔ¼Á7În„Z¸µ=×Ø«ÓÍio~ëEãMBF¦ÿ…Ä‘]2nCéÙu¦âªÄ7ÜK8
³O.[^8¤¦®sD|ZíQ¤
\:öOÞCIøë.Ö;ã¶GJ	‚n
¡èöB­Ü#Ú­!Q‚ôÈÝF[CrJ»»o#Ú?6C‚Ìi›$¸7}çq–¸§N ^Ç‰…mØÀ«ü_¾jÌpážÑ‘øU•€O=ŸXISÛVþ‰µwlŒ¢³\•D}þÛ‘çFÀ«ôØ·¹nR¬"¶Õ·˜.ÈÛ)w-€Ì/ ÷d‘§}š@’*˜ðÓìN¡LìÞCÏkMW€ÿ…<è¾ùr*!âNÅËûÌFÜ†ñ$'ne™ÈwSø02nž½Ú’IÏÀáŒzô‚îpuÒö.ÿ¡*ÍÓù8±4dî@<1$,á‹kÒÚ<(á²<ú‰zvG÷Yì	Þ…ñhÒ·ÊìŽØ‰þÑsáj¡¶R‚ã©­¸²‰/&Èì¯v¤’ƒà4ØœöŽ„æì”½ø4>Á”ÝÀ~Çq¢@b®Àm2S“ap2_f[6ÚoÕa(èíÓŒHû‚Q”UÒKiû°Íä9_¢¦@  ®ä¨”›'™Ã5[Ö=:X °!Ø•Ïôº“=Çx‹Sp£«|9\)»\æ³Àj(•iV&@FÈæ·©Q¾¼í©¢}áâJ{ÉÙÝq …'ëý¾"MA¯jŠ}AN™÷Ã4öíqä·¯ü`Éa6«t%Â$[È‹NªrAo™œ ŽW°‹ì·,¸[jqÅjÄ°¾·N…¯š‰A`"jbÿie ‘Û¨ÝdëÐ˜a¤ÒnÂsb°ÿü xj.?«‘Eð¼åÑ7p1àÈPé…ŒúÒ¢¤l7ÇþHY#Z¹.3ÁÛþ½8x[c}k‘œß2[®£±€L1fÇ·ØÁ“6–i¡È€^œId‡Ö`h’á#Ù&¢_e@&Ø­øõ”L9 n¤S]ÔtÞzÐÅ<Ó`á;æíúÃÅÒ3À;20TááËî^-1¹§ìtíŒ¹rs­‰dP$aðÐ¼«Ú`ƒ§Þiâk­Lü¯¨Ö	X‡¬:	C€­˜t¼u”Ô|ý£!’‡â,(ôm6u³v	6`óZÒ‰,tíÓ&¯"šO…ª^x¨„ Ñ)]»?ë ´º’Å˜U¢9Ä=?bt íxW¾Çš¸ÀŠl’ß$<Œ'÷"zP¾ŠÊÙÜÈaøD‹½ç$c\
‹…dáÏœž˜SPH?ÙV±!òÇn{ê	:à:±½Ïð…Ž¾=¸ãqÌ–3%mñƒûyÜ9ˆîßÎF—ÑÍŒ”–²Òÿ®à0Œ8åÿôò1ƒ°D7ô-âaå>Úð#‚S4ôÜnífjÜVšÏ=”ãKôdñÄÂKãš¶â0ŒÒØÝ®]£³ÓÖ¤[ô5·¯Jv”£ãšæ…7V“àˆÿ„zõö–¯ÅÁ¦1Y_R Æ[ÝXD)Ñ°Q  ÐÛ.°ˆŽÃ½£M›HôªÊ|ÙüËX’­³kçKdN95-Àg]©J¢ÐS•—ü#Ÿ)LØÓgIÓÒa|hñtL[•$‡ž@Ã8Ž(@ï¥‰Üë*¿Ž	º6·0†¢¨ÔÅ›à¿²ë.hÂi%ü})Eï´[Óâ
ˆìDOÿÄFðñK­ˆŠu>FÃb«Qkœ™šp¹Klëah§:dy˜n+vÊ'±y|Á^œ{Ý‹‘frÂîÿnÙùø:Ón©þlU8ÿÞVOä“VHC‰+UQl°„UÎ$b…ç§ð²¢^ôœ·šoõqž?p°úZ!ã#Ë¤œ‘¯—,çÒ„…éL`’Ã!øeðÏä]Òò|¬‰’´?ú1/{º¹‡,41¢K‘«¬†ÂÍ˜ž—Æ|¤ÕÒ+æâÄLJ¨›æÇïgžé âtéÎÑE÷_7ˆKÿ6‘ÐA¡-ßè$.@ËxEÏs…jzC^
ŸUAø×,E
¬à=AÃ f¼°ª¹_â¬†0ãÐÜX®·ElÖŒ: «ø¬+¾Öü\tŽ‘3KŸJv&ÿ†…©d¸'d‚ôÃð*zéÒ­…«/QÕö$iÃŸÔW‡€hƒ‚¢~|(5”ÉèEy.zŸ§–ðyRu¢=P½íl©vëÛè|*œ–Tøñ»ž²×Í,êZ¶à9¢$ÜÉ?LÔªô~ 7•å¼aÏZ@%–æÝg–¯6úK¾Øâí)Žh~¦ÿ:üþõÌpã+¦±ékýöÂÈúÙ	óá‰·g­ŸBžGùÂ´Ù·‚ß@†Uÿžï`êÈBÙè_S}Y” ô‘z!:^ô½°¶øéWQ—ÛÖ¬{«åÀˆPÉÑ)ôòð?öVØÿ£Á´SåI”¸ÎrÇOÎØx¿øIä8«AõI$ûfoÖ|ã±?µþ‘ÖoÐôAPPïV˜ò2<pô
öÁ7í’&
ÎÅ®Õ5m®4B,ÐCÑ²'ûp|ë˜øaq­ˆ6{¶Puzü˜—S25ø˜¹ñ¸ì±Œ5Ëº·¶|£l”î"ì+£©ˆ3š{Ðäëßˆ¾èZ+ºÃw(Ó»O;Uþõ=«e&­’ª®—v9¬ü¦Ú–¤9Í²zQˆÇ|hwÝÔ\{«X>*HìÆŽ$òáDýw§N‹Ë~¦¤ÕÓéÇ“7œØˆMˆ^z(§3Bv]ÉVÇ¤ôH8ÌkH°VÜhÌ+°ÂlBërÛ ¥`‹AªƒÕ.½†”¹åe?q¿Z²ávæ	QàëíEtù@“m¸wRå§¿1ªqéÄã7°}¯hpK2®\ÔK~–¹@®¬Ø@õY[dfŽS²hÝ:] ¿I_X‡ŠÉ¸†¶ó«j)jRµD6¨ƒiÃ"^F%VFš›EO™¾ÿ‡ãÕ¤-ñú:‰jÃTè
ìÅC<îâš¢}ºêŸ)aÝíˆë>ÝŠ¨Kaä'¾Ï T¢¾ó.V(É¸1^•ºá+`‡ß-O5w‰›wfƒ€E2!ôÃ3/m`›täñÑöãƒ‚À?ôž-ì4q—ô¬’§Ÿƒ<ÅíhEå?r*Œç'žAU¸Œ™å¯Å	 Ë¸Dh{½àƒQM‰ûøŠ;×è3ÞE­|2I•/Ú6û[ùØ8þWE÷^6ç¥±š/’¦^$?É…ô˜4õ¸Î¼j'ûx=ñ‰@á@Úˆ¾±]v­qõ6 â=,UøXæ~ónÔÑbóÒ¾™öÛÉæ˜ˆWÐ’†8ìÃÍÙ‡ÓÊÿ~é’ýXÙ}-MhQÊ«„åõn’í4+)G‹s‚4¬Ó¼º4+:§«·¿ØÔ¡x÷RØá[ú½Rë#µRe/pË²§Qº2®§½µ±ê©n½½¹ÂÛ½'Ööp®òU"œšeº>×&ïú×íä“Fk¥*d:C‹xúRñÌ§[gÜ–Î¾~¾!:8kijãÇ-@#òsGÔ‹(XîÏ–±ÑÇ†é¦oÖ÷pàÂñ®šÁ,òßãŒ~EU)Û\†]‚'—Q(rd‹Ú_Wc)W‚S»6ù¿æ?®:
¯	©eÿfÁ2ƒj¡k¶Ž°+ù³£×ï¼üðSÕ±#b{‚Üð5<ûðñ:ör?§íKóñƒãê`)÷dž‹VìdßšÀ ‚Í„7ï%~l^Ô¥ÑÙíž;ÈN^÷ù»—Q 3eèdÀ½îviõÕ„ {£§“eê‡§áÎÇvœL¬pj„Ó)¯£fkžEà–„¸m>º×ª÷â­å…îpðyýmßýÐmˆ:QÜ! 51‡4‹ÃÏó€®ôãIhüêkð`9ÚÇÈ•qW(€W=Ü’/égñ5oÁ	H´-“Óf@ýÝÙ+)ËðS¿tíÉW¿svªÉÁUÛ|¿Uøª;m|=ô2ŠX*™…\õó¬!14˜–Š²)þÀfûùewÊþ‚|ÜDœ-i¯_Ó}ÿYÙW§e•ñ·¡ä$\Jd(ÃÜrür
Ú /ÉVf |)>ix—‡ß°üD’IQ
å7ÙXXkAvu˜Ì¾CÄ€Œ2dBôÝé^Õ.ýaû“U´g#bP°¼éwmÎ³Ù
m/÷
¸9Àiµ(¼Üë¢‰¯ Ñ•R¯ÂÖ+ö/L—& ™¥/>žQ&µCÐ›I»#tê##ø‘µ»½x zA`þ,¿@‰ƒÃôh¨•ËK2îþVD.ŠÅ‹í÷rYŠ6» xÒYMã˜¥wøö~^ñ."©ÁPU7i Šp«³Áu(<…PRŽqÊÍRÚ+€Õ›g·uùx9kV
Þèp}-h
æúr;\£ÿ }ùþ'ó–H—aVýßP›0sª©~wÓèU•1ª½&+HÎŽÂlEÙ×fíÿ\˜.ãü ïÓZ…
öDë\_ƒa)1ƒãŠrúI ¸…v~A®NÉÍEarùêðÜÖpIéêj`Þ’+÷U+œmÙzÀVÀöí¼èzô£¢Ô6 Þ‹yMÕ¸A«5Èêô/êÛ‹¾RË3(ìÍ—&¨¦ŸùE+ìaKYA¿ŠýŽÅIæ¯‰gbû­[Bb<_ÿµÙmŒe ‰îÁcóÁMÒàÆîê0í÷;»^^XO¸õ~R¡Z¸WóH,zé’({îÄå&Åg…ØM:B$‰Ã¹Ôð*CÒ:õb¾fG[ÐK‡ÅC3øb¸žrà±`¤¢=j<x»Ù)qÏƒ½^ôöaU±8uýxbj3P›iŽÁýýïœVãŽ™IY¶(Ç¬j#ã5À
B›B^Õ~ON÷/ÕvÆÔ"“´üLóèAEèòM?—{MÂ“¸Îß+¬VÆÖÛ*AïÃb1á…%¥¬Ù/:Hî§Wî™ôÈ­€^o p*Á‹¼*–séqçZáÊõdH?¡ÊMH¬†$‹Â'©e´à1×F:nö1|¼¤(RÍ)ÄÂdp<›‹@°³:o¶(´4'új™ß—åO]gw bˆÜšŽô|#_gû!ò™àF%;_9’œƒÍ‰=+êzºÞ÷= ö1e~ëÌ6TU^*‹emnÝ¶Öìâþ®LðhS/ì<jî=Û~óÔðƒgd@3÷¥i’+ÑÎQþ±.—Ó›˜2&€HtÞßýÚ?°ñÒ#Bý‚Ç©TYß«ï•¤àô«µŠ’QAN¥®h¤W_xÄïiÁÌ£¢šÁiÅ¾VO¢“‹ôÔÈÕøÛœŠ.×#ý`ZQÙ>k˜!‚J`LØ§œŽÃ@YYÖ}›€UÍŠ©OWd,Q›†’è6¾)¨Éçîè®6‚ÎÕÅqø;’wQœòÏÔsjÍÈN7F·ìÔÓ¨Ö­t°®eaoR©Ê|m3Ï³ä-éä~É'½ ôË­¬_ÉÇ¸J7:üµe%´­Ý/»uañ(LU {d,ÞŒ„rW};X~®Ó4lF‹XŽZ;Ñ˜Ê¶Uõñ³»–Ô>0ÄÂMƒ› b	Ÿ­[+8N4fJ“Üê€ª,Äcýp`ó…œ»ªüœRö* ßÀå¦£ÜÝ^`ô¤ê§ŠsíO ¾Ú)è4gn;>óì‰Œ*ýOæh,ÉdÀBWruô›@§uãlBbÝñå˜Ø'åŒWò“Íj…É%tm¶ü©L›w®7rQ1~øËÖQø#ë}ŒnÙrÝœ†éó5Øžò;Ä_Ýn.zFõ²ÂýÚÒßÜuÀPV[ó^1i½Ë|Å0‚î³cYC3¨)ÍÏ±˜#öaÕ‡Àübm–¸”ú«Áw¨2}+Ôkõ™–™õRíøží9oüÛF„¢âMùãýFgÂSôÅº9!J”xnqŒƒ…Mœe¬jÒ-ªM²Go<„×KFÐ&àµ	ží4ßðv…V/³oaÏSyßœ€Öm ØJ•y÷Ul°ì«eÒ•‘C™~WËe	,èÏÎP¾YFÂ¶¶œùà.ß£vÅšÒóãñ3ÀµÞ²È°ïS.“â´ãt?OåeÜÁ^ä¥cÃ¼L¿iß¯èçDrì5æfTåejüã’¥:¥±¨ûe´Õ›²äx6{ëÇŠÑB.¥î‡Êá'+Åß$ë3&=±Km	\yp"ë‚WL’²Â¡{£ýÅÇÔo	+ä­ëj¥p•îDuå'”'Z;*´Ô¨a2ú%Þ3ål@C/'¨½Ê	Å…3~±è;_ØÕî,Ž9H²ÇÞÚy~ú&c’¡X€åÆÔr~÷kižf¥û„ZÑ4G/Q,ýÁ€u|Á6	6)n:»40áëž"9}/Õüs;ˆ¦ëŸåçæÐÌx)š’H°]ß×tÙ	;T`eÌr¾„PwhuðÇj	,&Ô}SéÓéï>¾¶ŸÖoÅ¨s?6Ð©À¸d±÷M—ŽAä›Ù¾£’ûûç¾,7Ï†Sh—–çx—XåSœ)ñây‡{ÙL%‚×—îëôþjÖ‘	F×åPŒae³IÔ]•‹¿ô÷¿[g‹_îC0¤J¥X©²³ÊùÄÁ“ô[V×«v=ôÖŸ+û(?³ÆªEÔý»à¨º{ðeIü°bâHä>KeT@a„r}›´2ƒ–Æþ™ö¹UˆŠa:Pä1\—ª!æ†µ¯ã„-¸@ªŸëžl‘€™\Ò¢ûË('¶ž´–tTš%Ò{.î(£}ßâ1 NV:ûÖ£h—<ožÙy‰( Ðê7N/ß÷vÄµuƒêÒ_´öEõfÊ–’¾ÔŽD³ñþÏó²¿ç›ýÁDfYá5÷£€É¼j%ãàõƒ»^sRºôf¹D?ŸUK{øùë†%±1›þ~¡-}î`À)/1í4ñZG@â·Ce‘¿1Iâ0tq–Éò‹M‡ 	aµ}RûÊÒƒŸ¤”x˜²|j¬°È¸…¦¢ºFëÍ÷ŸD¯d$AËìÚ3ÒìôVHF²IlÆ³W ¨Õ2Pª)ÚØ',­1ˆh4Š‚ßã´ë˜À¢ãìãýçz94šS²|Ci2M 0¥íyOŸ¯Ø(Þ4>_ÿ.Ç-¤f*ãU
x?÷:®Í'[­+Uh*¤çáò!AgÎÎZ´w;Æ¹0—NŠoƒä>(ÙÐql2äL<îL…ø(NZfíU725u`!¦noBHó&PêÍŽò%06¾Íä/à${'«‹Ü’ú¬y¾ÖÅÚ‰X !ÒkRGP‡îûøÄºîNûq8Nl*IþîeÇôYua-¤Ìk&ô«€Á‡HîwUCp¹Ô²þw‹¨²`Œ¾ª[Y~Á´àäcmOwdëÂ-Š¥{çý0*æqÛ;ÍX5a‰ÙS‡ß“M†b“¥Ùê"RõòO-ûÈ4/­"ÐªqÆÊ¯0}Ÿº†Sl†Ø“³:Ûƒ¸6íä¤*ÿÑh‰®`áö©úFq‡ÈîTi9DižÅ8ÍføÇÓ@ —ÞfÖ8 »ÕÜ1¼£€Ò\ÅMùGÒ¹9|×9,Öeâ2äwý0«8J¸ìûùÈ!y£ôÒh±qvçáéžHÛÞužóÈê•Šç©Žz~®D‹®yk(Mðúîáv ¡|¿>Û€ç´ì+c‡{:—ÞŽ5ÍÕ_JÅ7*Gþ86êøZÒMžæ²Y‡v6•òg+„‹iWí±ÞéX“Ì’Gò›ñ¶|ÃÈ&
pI)(Üç¾!ÊúîÑ.Ž—U‰oQhì4 bßE… eD“Z‘ê»Âd¾ø>“¨JK²#J¢TS–ëÖXðæ˜Çm¤jREÂ³D^G0#$’[µF	êæöÛ½BÄÉNöš€ÞP„ó÷¨?-q_˜¯GŽBÀ2îW²÷ãgoÌvDw[îÆô%Y~«åB·Ý­6cè¹4¬sK²MÙÁgw¨Z($ßAù»»›Y/øa”þ°bð‘¨®V$ˆ÷…¼½„	P>Ÿ†â—Å"lú6xÆ]4aÂ{¯áQic…ÇÑ´yTÈ„C¼c5Þáx{CçËÀ_„øzëµÓ”p ?-Xîäó•0|ÃXìïÊaœ,‰ý€«
M_e1êtTç½U75¸¦(*Qšþ<U—,Ú†æôR˜†¡—èUŒpª	’¥M2à9œ¦LðC‰×f:^}Vð®É8z¼ë¹žâkLa1ÑÞ#^¥æ#qˆë#¶D“›ª1»ÜÂnÂsSÐiâýc,r«ƒ°'SÉ5æcŽwòX4M¡Ù“ç´ùsZ¥NƒùìÓ‚Î-kÏø‹e]¦?}7ùÀPÑþ.ÐÉ¾&$ßšP½1½GŽ=½VöM­6ˆÈ(åOÄ‚ƒîªMÕÍ¦š™k{l>´ÆçaäÊ$³Ý—ÿ üt{¨)¾~à.²ú(Ub˜ð¼ñÐ„›ø[ çI ©È·ÍÈ3 ëtì¥-Ó´.V{„ä„µùk„[€N$ïÀ¬Ûô•£ÏèÄÖ®JåË‡Yè¨EXµ^û*‰áAxŽåKhdp¬?­àrûÂ;éH~^m4ÔžØŒ@FvF–ðd\Ì{BÙêyÑšÐõ-Ñä‘7Ñxc³”:¶2í}sº	TiªkŸÉÊh
¾õ2
ôçç`[ÐÄ#!{:BíA-Æ%–…Èž÷E­ÅÇ8„…0iRÏ‘S²T‹^1ë@GpÞ‰3”\vj³ú‚‹ôµ êµ\Ÿ'Ér’¥×çÖáªkP&r9·Ýãv]jHn¨5JvRºUb¨³1wuŒ»Ô—Ý:o^ãS. ¹È=z§Ò£4_;Ç4â;©‘Ð¶>wÑr~ž¢Iêê#®üý†8µFÓ9b=¦å	Éè<ÑÞ¡ˆ©QyaOÃI÷/û¦¸_UÎþaþ »ùÐl<ß_À3ZMŠâ´¸†SÁÐ¨•^æaeî&rIaðwû–Îò¸låêOEÖjs>¨×Šà/›í©]VÏ0œè÷ µÜë£§Æ Œ{+#¬ýãkY3¯Plý}2¸©ý6"’Î>~IN77b™šâL•÷“ “Ïqd×¶Yë¯-Á<I/jô`Ü#J'ÆÎ0&¬—yëæÈ¦˜¥õÈÜÔv 2\ÍU%õÖ‡³¬&`RB´X“…™çKØ…mhµ	HC©·Ê¯2Ì|Þ-D+ÊNPÂ÷™ß`x,µÍ Ç)-²80bSE«8Aò>ØME…ÓÀÙ‡üÇá«·ÜRsÊO©^Á,ª9…b¨¨¢nLê½‡«kôÝ¼©ÒJé=˜éD•D¡ò¤Ãz–µ7v·Ì­/ùx¨=GÑ"2ˆ-+2‚Èh²•·Á NEÁ´B(äÎäáåO˜(žr´4%e‘¾©w+(%ÆQüCz¬®†zèâô49ÞEás2—HQ§/cê »ò¹— orÖÿ:2¾¹–½øÜ»AËU©g½ÚP3ë—ã-^¬Ó	çš®š"°cÎó_P–:Ò	N{·’>\²!ÈñáÕG<c†³Þ¥Ã(¶A8Þ{íæ¥î…;Çf;-bx6¢71B	Ë´—¯>íøí@åÑ4Ö°‚wQ¾£w-k‰™Ï!SÛ¼B¾þJÙ¾b(aÌÔÿöÎ#G:¯¸€å¢Ö³§ûÔÙ3!ÙÜúU=’®}BA¨AUÒØk%ë)“ÿ.0LavÊµ7L]X'Ñl6ª‰)tñ½ä†"”¢” ¹–ÎÜ£‚R»È]ï3FpB³Dýw.Ì®Ÿì{.vò;ûc¬'D\ädþq  ÿIèn1l¢$ ‘—¥œ…m¥:¦<rÝªoîÎìf4ˆgŸ–RK	póîn>®jÙ/žEd7qJë|}ŽŒó°ˆÒ>XmJÿ…©p±$â±{b&S MaRIÑ½h:.ÔÒpÂÇóËiÆ?‡4,áßSÈÜEÆÕ–ºÝ:Ð3ø½bë9„?›|ª¦Ž0p’ïqñéÐ(ïŠØt« º?’ª¬¾›R­ùÞ€{Í$A…×‚—9ƒÄØÝúFþÜT©RºÅgä‘}ºp¼íOì·,«ï±ÇžÊ¿¶A€9OÒbá>äH—œòÚî“Î|±„ÎÐ–b¨éÚR4ˆ1ùïóƒãÙ„¿D ‘Ì„}¨ítTn<+°	jêýÎG ]lÇœýóx#½>,xÃ—…“œ]-l<­)T¨©ƒøp^Réé¹FÎ33Ñ®vr÷6ïø)ëò‹âæ¹~æO'sarÍ?wbÄ˜´ç"pa“ò\g¡nÿA»–iü²¿ÆKžiÎë[úÙ¬BOrœoõÚ¸ºgZtÔl]V@ï½|Vã9ÎDá‚ÍÓ>¥@o'0
ìÝ®30êÓÕ£0ŽÐ­rÝÏ±“ÚÆ5¼gÇg58u¸µ•³;[Ú¥­ÌÉt.¶ýÍ¬û×Të˜'Íz\ÕKÅoÁ!:ðö¶PÍØ¤ÕK±F|sAçÃ–TÔ•6Gx¶&Æ[î1þKÑ “¤}’Šn£àqùe•Zï=sþ6õ¨H—”Eó‚.V³zva¯p„?V/.Ù..vÚÂ6¬§å	K÷2ý7»„´KïÖþ(?=|sr;°ŒMÒ'‰oŸÝoùæI'ÜctÐØôFÕCÛkÜ3õH4eÓU -zlJ¹ûP,}ôÞºGÎr4ll=^¢¢àë kXqJJù8øvékRÅËl×C›#­‹„§ $lùk§ÄÅ{ÍsíS»TeËÚ-zñýVqGüŒÅ!…Ä/Z`7Ý­÷?þ»Œ´J–¼ØÂŒ‡e–Oß¾çüFN8âÿ*e^ç<)¬ÑG7>Oí!Nmé;}ÍÂ×‡k3{$J×_¢ªEEš×DôÁ+Ÿü$MþÏÙ×døW.°œŽÊ 3ÅßÍ“eèy½Ê	KºŸõ¢'O¡ÑÒ:ëóÆ-þcàü¼[–£‚K.²KÉŽtXÝ+†»§±°ÖþC“#q×Ó	Ê‚â¾ cš
Š¨ÐÿxdãÁf5¥°’OŸ—Ï4{{×ƒŽ'U´ú÷!cxW…Ú¾ÇÝüö¥Ñ’Gå3Æ|Pâµ_&.—ê!Õn÷±°Þ Ãæ3Ãñ¶øfYa®Ä»IEù£)@#êŽd7)]æÏ{pæ–(ì¢íÖ?§–Záþ+ãXX=9ŸH;•ÉÒ•ì°‡ËÎJ’ªIÏê=`°(ß"è5‚u-VZÐc‰Ù”}ÞCH€´ÙTŠÊþ=/Ôp´ë"d­»ú®òÞ,&óûi§ßâØÙ½2Ã:7pT×8ƒ.Þ­pŒüÅ˜Ðú/Ík¯îÚïGì-˜Ù…(a÷k]j´CžÒóÿ¸Q›û’ÀTE1MÁÕ£ò¯þfæÞVAdŠXÝ“»‹T@y“›Lº¨ƒ
“¸:š=³¡O2¹D1£NG-‚ÁîÇ#Jð@™Ããä0ô¼L ]{÷¼ÊÿÞVÔì^Þþsû‰3,²nü.5÷·[YXëjªŒ7.‚zZ\Z,¡½¹]®èžù°Ÿ #Ñé"¸æ5H²a)…¢if@›mˆ³(ž\­g@Ì«÷%7Ñ`¼ªí&‡HµlKa+“©úf*	J±µ£X¤”@>‚¼¦ì¹¿7ØÑ‹æÂ˜9ø­Ny'óAÁâý¤‰Î³JP˜¡œx…ºoOõS'É²«ãö¤7}!ÈYæj®.Ì¡dpÝ,‚I¼…î¸ÅÝ`ñ¾ÁNã+pŽ¼¸í,+VÓÀÿü%nD ÈrÐÏý:8øjoAÇfí?ìiÁ¡³£^B„1^ìd»L_Ž0`MdÂE _¥i$óê¶<oË­Ê~güaÍ¥¦7©pGf×ók§U øŸÔN­}¬QÁ?—…Åy›ÚM¶,âõÙh™Za¯%šS*þÃe¨<eºgÈ¨þ˜ecýd3ò…XŸz_Ÿâ»<nVú¢˜ˆ|<½sÓ]+V‡ýÊ@áÚüß+§.ôqðÏu à2¬ä<Ý¶Ìr¼9nŒ¬SK3s¾¼ÑèÏœ ìGL+Áî¥«—uP6™[½çô÷e%²eãÂ ¹Õ^n	7§d#àîòq®÷ºax(|³½+GBPÚøDï=›”ÕÚýwÓ´’ƒÒø[’mÊ¬×}cQ¦b·>þsô"ÛuXäõjØEu#¿®@LùØþß?Ù:	ÙPx+½o{ðÚó4bÞQSdzwœ’±M’a§¥¢^„upªCÐ6;Á½÷%—µNMJ®CÎ~ðS­Ô¢¦Ñˆµm T3k-ñ¯@ÊÞ¥ˆŽ}qæ-}2Àþýz€vkOÑrÙêkòÝ]®}¯QŸ¦gŽUÂÃ‡•_ªWxÅýJÎÑ=ÓÖ(ŒÒ¾…±‰÷ào“1Ö/³tù°fù4ÖÀkÕê°.zCùUlÿkw—gæ{l'Å¾äRÌc“¤(„+^8tsä²?ç@¶IíŠŒ¾´Vï"'íKÙÎ‘úÂrø…WÚ©È“ç+†,$³¨"¥pí-~ð%6œé§'hÝ16©ã{j)¦­#Ø1µOºý;¯Ã’z§Ãâ!FWî¡Z©ºSà‘ó\ð§DêÒç¥¹–Ç1/ÍÞªÊ°@Ö³DÆD“ÅÀ ×Â{§Ä² H(6™aò5Fl¬ñ\4…ÞgÙJ€½/<[„ü`Ÿ’a6R¾ù®ŠGO‹"«è¸Ì*hö¥å¥G©ÒŒÒuï»ÜiµP«l6d#Ž9ƒ¡ndu6^1ÃêÞ™„Ž¯ÉÍÙgRm‘VÐœí†daõ	àhAÄp¡-ßx g´Ÿ3q€²îÈ}MöšçBÛÔøï	í"ýÈ¨h¿Q.hãØQ÷a»*¢…ôo1²äV×è„ˆ›7+ê›ÝÐCvûÒiwá+ÕÔ¡Á=²ëa	+[I]è¯¤Âo‚Æ.ž"«19,{ƒKzjËÛ^R¼aXCuË-.¼Ö@Ë±Ð}v5ÿI›ºhq,Áà¡ñO¼ä—Ã.º¹¹5Ë•˜ß‘	‰QÞ¼[…Ž}ÒC®TÓØ‡h¿ jìns×¹ˆ£wdxÄ/ëÆYóArzˆWÊïjÓ}üçÁ·U]¸tÙöB6½Ø¼l;ænå
ô™'_“gÿå†Ph§_è²b±4×ò…€x­1ŒÚÆå0WÍ1±œI)ˆ“pR)Hð°‰n‰ý¢×—% ×ø(ŽEŠÇJ‡Í^÷¥.J ÜèqðC›ê FR¹}Kê äŽTç´µµâ’€†	&DJa´Z¿K·˜$¼ÿð®–¯Ú-$î]îÑÓÖXãdÃç6d£0×YP sP}Þ55>DfîÞ—Û„dI"ºÂ’‰,»‚H>(2±€«2ˆ+ig`’1¡C ûR¹Æþ™ýÙO¦ÂcÆ;D\ÇG5C€"r—ÎŠ—¢G¬Í:ÛñŠ¡UBrrN:ƒ.ð5´ÌúOÜ\ÜƒUG¦û€BêÙÐ-WdÂ¦ê~ÚmÊ+Å§BLÅ‹bžÌÎ†¥Ô”),tiu5:<­¦×®÷ª^ælivp/Eø#Ö4aÐ»Ò½·òTüåº1nÁâØL*½VÎ¨iböREÿÓCd®U˜†³‰Ñ¼–¬’c[[{ò 0~!„)ÀáÉ,í‚Täp¼XIæýä»â…1ãø­?AÅÛ»½áÅbá@eíË®´Oé©äls\‰ï3 :bÆØrmiÿw†ô®±eó¡ÁjÖZò[:("–s­uìóŸê;;m)X/»ðwˆ	:+íßz$_%ƒ¶=O>ÜœÄpå Hª5ƒfâst]ß;©ÒìËQPÄS&®DAn]XÏ	òÛ6Þúà‹Ó‰ÂP&¥XûÕ«‰¸íèœ¬¶Í7‚¹2£šƒæ²YÎþe`~/‚ÓßÒþ"²xá%ã¯Ò÷›ög÷Ì¤–ä‘XÍí}§š÷W6æô‘ÚÌstý*Þ·Œî:{šÂ­ uXäõïˆ$òz™‘©T»ýs@Ö~¼_–e×›@Cõï«·ŠÃSƒˆbgÆ—ÿÙèîŽÍH7jÎMö?á*;C2·Òïí§ù®õu
VJ	¸çX‰…f&%6ŽêÇÂð©¨î°]˜L@}à…NÑ_U½V\,‘•WË54Z»%·™¸&	RnQÔA•Që%×_ZÏ¸Þ§¦uóp•»\â÷{‘£.Gkuf-5Ô}w4I‰•ÒKiLÔêI;Zß²¯·>²‘IreânNÉô¹@Oç«b~ÃpÔŽä¦<ì`Fô–MAôþÐÕx\wž9L!Ë,_£ïq˜Õ7¿È Õ iWëšH*GXÎòº_,£AÖ|š©2 „ŠD2mfdôD¼Gøýéé*Ïß¥ñÉhƒ«Kùz¦Î\&öy=¢\_Ìa²r(Ò‚­§h]¸[4Ñ:¤Š”Îqs
 è¾>NÐ	FµøòùÝØÈû:^žv«nOÊ±ŒH¬"ïê{3µÒiê
›C²nÆºÙs8å,]x’5‹ûØ¼\$Ä™[ ½åây’4y›8íöÀdß ›õ&EûÍ‰üoàe å{I9À’Ö˜÷ª‚b€ŽFu5°@3iåÖ€/íñ'scÇ³ÂÒâ­Ô®,Aw~û8ŸÖo×ž‰÷{úòYøîG¥6¢šò"çžÌ68Ê]”ˆ%’ÇK¯®™é/f%^öØT½¬©}~î¥Ä¹"f&w¶ úúQ)PÈïMT¿„f’ft@‰ÍNcÈŒ{ú˜g+æ€4ÕÞøn)Ù¹œkL¥-^’ñ	Ÿû9UF@ßË€µ•l¥í¢Æãô‚¡à¿™­dm˜gF€åäˆ·aëN	î³íšbF4äÊTØ£Ï7)&'ÒÒ›;>TÑï|ùhÝçD&È”tg‹äa`…ÍÎP•ÍNÃWC2ƒËdóC(õ°mÇàÖ†¢¼$¬w	él
—³Qƒ…ð­ns§ˆ<Qs½¤äfÒ/„ÎxíYí(Ñ~‘E-’ãôÛc4ñÏ5ñCMëÚ‡g¿¨³JÙ0»æy(v> '¦¬×B8ÆÆâ.ÒÕ8,ÆœÉ­NŸ¤5^ÓBÛ¤\ôKy:qº&ýešŒŽÿ<‘Uq¾¸r2í¾ÇÀ'+­‰]_þË¿±ßR>fâ¸¹®¢ûšÊ'1—#'‡2¹<c>†j`×<³dnŒ£¦˜¬2Þ<À;mäTtÑ9Ä9}7ö÷@W…3‘ýÂ¹Û3‹$6Ì749îêú£]g7ië.y¼ëgœÔ’˜ŠÌÏàª:_œ4	/©z‚¡^ÖðÜÚù¾3D3¿%ƒ÷À}zMw|©<éE.Ñó·IÞ\D¡1Ô„2]¹#—¤IGƒs¢çÞ«ä™TŸ†äA3~ØþÅ™?­‡€pß’)rî0Ð $Í—û«3dä)x|ÜÕƒ™ÇÄSZ>ÃrÈµ>-
5ª¥×«qìß&I\Ÿ˜L;áö è€µ+ªE[Hx´äü=b.…+*`g0†¹Øðè†ÆXåÜ#H«/s2ºcV®^mªÏ’¼á˜éBMyêYéNóÞƒkUHÍö8&å›S™2J.7Ä¾¡÷³‘`›Õmp³õ¯üH! »÷äe{É¼º-Bw$÷@@¿{€šíM‚·JL…”Ãº¤êJL¿bÊÛ¹Ô8B±Øó¡§S¢>8aûflK‹]Nüœ«|³yE§š  jçIX¬Ž?
]Ó}:‰«D®;/E`z&Q$s”ž5|‹IsJQSFMþm‹JÚ±9¦2Ø2*xÌˆŠJ 7&å'nG'ï…·íÚãy7‰;.PôÕ›ñÙ³C„¥Þ2£ûàÏL°âaž®RSC"ŠèÓ©ÿ¡?%ŽÄE9›.à!f+ å¸ÿQ'ë›€AC–ñÖJ\Cþí2&,¸ÉÝõŒË²½ ÿ03önÕõoŒ©pjì¹ö]žêOpöQ¨bKLá†¼NñòÉHuüOV
œµ8·²;W·®õQ 1×ªèpTDSb1ø•{[ÂÌâL |'péëì¬ªh2ÊG¨&t/·…ëŠ’Æ¡6­Ç¬çNf
á“<Ãêv%2ù[ÃÒ’¶"žŸ`’±`»ûœ&‰4Ä^4‰p
\8ØEaÞ…íÖ0ÝU“\Ö0î;Ÿ{†L>(½(Iö­åÏ}¿ÄÌ“;‰‘µg¿,Ë4æ| 6Ô·‚0#-z”Ô[ç3Ó"ÓÅ×Õ•B­uü=¹ì¹•¾çÕú5ñ"Ä‹p|HXûJ!ô¼å5!ˆÝlo©q™Á£‚þÖ;A¢ð\ã(±IÍÂ{hDfnD(…dQÎÛC#|HtXD¡÷É°ê5v­¯7‰?-«½÷—–`üv$¬Åz~ø)Ûä.FwmøØ~6ŽwK#ç#ÂÜ¿XS¨éã0éU‡éúÙÓÔv*ÝmJ™éÚJvä¹•èÒoÄ–2ãÊ‘ÒÅvÇØv”ŒÈÝnÚÛÃèÒ¦p`öTvâ»û;	uT†$ä„YÌ#Í¹7Þë`ih°ƒ¡?–ƒâ×â9J‘2“ô+Ûº–5òÂš8~éûÕ›é”2@'ÈZ¨aqEÍ&9­<ƒ$7–‹²ûîùÑróÝËëº\=!öþ&A#½_äzÁùãöp`õšØpÕXG5G4+Jú}á†Žò}pÇóå,»«,”Bßí¶é¬äêAÒ5&ºæöæ]°÷85˜·bvNˆ}þß§S(e’*¯}¤¶£à§ÀEŒAÁ…üä³ä{¯¸ç&ÜÞx¦b\YLkÉ¹P/O”Ú_‰êL«¿62ž¼×µ€UMuÅiË˜ŸNùî¬ŠñôÕí‘®ÀýCqæ_êï5†h4ªÞÙ£ÂðO§«1	n	©[’ŸI `-Çkºãƒ¶—Ìù"•ø_Q\¦‚®‘þ):ÂXb1Èÿ³¨jyŒ¹•Ì?h‘Ú¥Ö8zc’·¢È\”êœx!ßDz‘œaö}?±"L&´}êÉRrÂÐxÙ1šÃá¶ï'š’›ƒHãÎé§96^6O¨4#áë#ƒ-S|DTRDìŠ½p§˜Ú{ \÷)xºÍ»s”o9S¤
¥£.§Ü}Æ÷ü¶T6eåÑ“ª}X¶Øôð:YŠ&XÀ±qq5îö44ÃÈ„U;=©M5@8îª-lÛ=3Ì|¢»ñOõ.ùMêüonÝÒœ—	:£@Róªb%%É9N~Žeâòç¯§MÃ_T”&—”ôó“d¦È¼ûXÒ6{Ìe û7"_Â¶`(ì4R7Å¾Í’ÔÇxùÁ­˜i
0Ó¦²þ’ìpnB²#Aò·ÖË…Øñj	wmŸP¡û­qŠÉ©†„ÅÿµÏì¶ÐÅGÈRz77î…_îU%§ŒÁËÕvíNñ®½aðÁ—¤¯Î™bæM%iB×-HYþ¨‚×œÂ¦««C©æùgINñÚÙŽž¥¦’™-êy3úò¯}Ð®ýõÙôiò=MÊ¤*9–8Yž†7Lªvâ…>­c­yAÂjñs)kª>KÝvê„¹_Êm«òU±?n[”Ó™³§^â¯zîñ7øôXŒD¸ð%èÙ2²¯Š/[ 'Ÿ#éPö;/tü»ZôËÿùÀp0’DõyD¥OKƒcàƒzN–†a.™	_÷A¶?ã0#ÀßÔN×?¿A°Jäë/âX˜¥‘WlÍ³U
ö@úü­†.öLUYÂ–(]Çnô°¶XïE.8çn¤ØØEJÂlÌ K”¥€~MÍÑJ›6Mýæ]†Ž€YCR “åc·´3S{	vÍ[Ò•}rÒ¨c^¼ô‘R·uBuªKÏDôÉ’A7ýþ¥ºáC÷^•gì9‚´…F‡˜öOrzÀŠCåoc6^/wi Ë‹eÃ$ììÊ9b-³˜Y¿£#¿³™+:Ëq4¹é^€ÞŠ§”„" Ä(EƒÙÑ…¸8uLW»í˜áóã†3î³	c`YSZo ˜;r²î0Ny <Äñ JGàÀ¾¸a5ÆL'îCòWjÐ5µcúî{ w®{è‚2ÉV8âa½„èÞ*ÕJIîGü¶ËW¢ÓAVé¿_¡¶ÚXÉuæ|˜t¤¥}`G·êÙåÁígÖ†O i]ÓO)Ø§”{Ðs™·UM¤ÇÔÅŸsu¨>v.ù³npJÖ+¥)ºxïëyh›ÕŸ¤MÇÒïYÂXó;"Ü!ÐÌV´ã¨¼µÒl>n£ÞÄœ.[vxÃsˆÃÐÌ˜›,/åIi^ú‚°EY	…élïdsŽ¸üìèŒýÍ:ëv¬f2lÃØ!öˆÈ¦s’ÿ|tJÔBÈ¥‚ZàL=2Ç2P0»®ÝqÖ¹ÙyÂ9ž©;U,Ò³(ò¬ùR!Šª’	K*83v¶Ôy‰åÛñ-Xbó€'ä<ß•Ìªÿù¥­Òc<[ag` q|U._öâOõùÒ>™Þ\½·Q{ÛÐª¯FU¤èY0›½êx…êéÖZ‘Ú“Qf^Ä.¥Ûúu‰#€•í{1Y$[¨j@{¶D©(ÝkÙÒË9!j!wk³nœ,üîŒÜ?mÁ{û]²üýÖzj°†‘0Wÿ94àÉZÙÔ©îl¡YfVˆõsáGÑ×MUlÔem‡ÄÆ-Öä°Ó^Žl@ºü þw?(¬Cp¦º¤ÏI’…ÀÛC ýûxÆœÑïÒ‰æORÓ>i0ƒ}0KµØ¼ì©fŸõ<áYIo³±­ÚøT#†tÛ×;„ø9œkõŠµ(¸õ®QŸe„Èúº/ùîOH¾Ù'ž_ùX¶=õ/è£°­hªv7ë}­óz8FÎTìuw»[±=@·œ5´©ìå£ú[ÇÃ³ä±æf'ðŽ ½Kˆ1ç 8·óáÐ·õ6mU›9(Æã~æE®ÛB*;u2ÖÙqÖ‰
K±¨ë™œr" ~ž—L ÄÃ ¨u€ü§eùM1aBlkIVª,Ät³&5•c	S/IÚUÛŒÔð÷6"aïµReœcxbFðGÓÄTË—eL)fêÎ‹¸Õµˆê¿²ê[­0‰qNª´Ç‚Ù{’¥JqnT}n«8R°.†?Ä«¦¡7Rv›×«¶¢©Ê4B ™þ¬¸R“wå>çj»“8u‘¾V™šÒqMìÎ•0÷KJŒ‚w³åÍœhm„N è¥›úNî~(¥æ!iï‘ƒ©Pï÷Y81–oÈg•44Y4=®ŒÔvÄ6˜j¼ÄQÏËmž_·ÝéÐœ9#VÚöÓ]©bŠ€û³oµMQ[6.„?Ô½$Ó}Q:+_B¶]H¥§®·ÉdnPßÒ)-Ù–€¯8Ç¯Éõï{ù©@ûU(K^0X¸òa4®èG‰Dû²¨|\ùŽ)ò”’ÚœíèßÖ.Óü½”-ÁYg6uzÎ¬QÕÉQ­Ó	‚†8U5êÕ ƒº	Ñ8Û^q†€¿ótƒ‰p4k¾mw°¿0.5ÑÌÍ±I6ä´>Ç'	„äÌ•rgÃ#ñB§JèS¾9|Ã‹wì¿òÎJý,}? Q«ÛÑ8{•Y" G²…"¹ÙÅ9¾WHâí¦È/¤ÇgR$Ñ½£+ÄÖ•Œñ-”³9òüñ•êÞÎáˆU(¸ú>ê“2ô˜ž±Í{!n„{WÕÑæ–!ëÖÁA£ÇoOSÌöø'1ñ'à3äû%“"tb[-u<ÖÄžVƒžN·z…¸B°­çüÛB¦Yññ<µ[°î¥œÒ˜ŽãKÚÕ÷8¹¬fE2d6ÖØXb0Ï{6G+Íž$sQk}ûÏšC¬wÈ¥Ÿ¯´Y~Z58#,Ñì.t€£¡„Ý$uw>Kà9ä~Œ*£‘­üý	a%œ‹KæÞuÇ¢´ÏÔF[NZ–ñî÷AÑY£Z\.lh˜ÓvÌ[0hµþp[:¿õ"¾ø“Ñ`tÿª¶úb£Ò'ÛŽñajª…“gS~æ…äý¯.0’¾,‘7ë1ÏÊ €AÊ¦¢ü”†zx¤â>5Â¢ýäÛ}ÿÑëß±›´¢AbœT>”¶Ä‚FhØR‚Þ‹øÔ€ÃæZ1üŒz´­°æ9%èûÉ+3i$‹{[Jñq¾ÖD¶‹Cò?Ê²£Å­Ûûô"]ý©)}NøKN!ïP÷¨ìºÞDqÙÆ¶Gt}¾Óà¥Røö2£ƒ+@øÆÙ×)Ó¦Á|Žéåÿb+¿: ³0Ñ`)>â„®¬ûNÍ,ºaþ¥TÝoëÅs»‘ˆ×šXâ¯ÈMUÑ0…©ûrX¹rLJ‘¹½6ÖbÄÉ„óÓaíüø	èÍeªr‡Ÿ›@¿ÓÞˆlà¡Ë¤˜59˜8ò*dÑ¥Ã#?Ë½™MR¨Çl ¯“¹«W4[½¹ì^8eäÊ*#sñØÆý#Ÿ’=@ ‰Æãñœí_öãBÿûY??Ú uÀ} ½eñ»50¦¢‰5ÏÄ÷$K]#!Þ]²×¸ŽJ¹­|É›¼=N ×¤C å3ƒ±9ŒC’-a³ï“lM€g«u„¾ Å¯ˆ´¾‹,½ÿ­xžÑ™Å‹Ãß™{3¹‹îÅG§¼f	Þó?Î™)¸€qËÅmâ	ÑéáŒW†¢:Z§ë(eQ8÷4–øÜ0ô¶ÐµËÏ:‡MŠ-¨U	ûØB	†¼Ì{œÚª+ávIo±°!ê)I	„máp³ $§%mã2qFÕç^"±?dÜ×CŠ ŒY7øK„¤!ÊíïÓ>K˜üÿëž	ëi?3’è¥ž¾ŠŽoP—ýœÌÐBÝ@à_²óŸHuzÝÍÜøÊÕê T:ýÑAhöýØ3€cÞKVÝº3~%»;±wZs¬ÆAÄ¿,	¼¶G‚€Bs|]ŸÐµüš€4†I~uaÚç¼7f[¯mÉçõÿ­¿¡€©¢«Æ¤ÁÓ‘“òK),Á€OÝ£À²~ß¯Ëc¤=M²=$0È´40Ïºm&kG–gœ6¾Ýâ¾a˜”¹ìòÅðœÓïbH”Q"Ž¿”‚Å[µ4’âN“òNúÙ;©p2B³%ÊWÐp´<;þÉ+&>=ºèìmˆf8îcÓÚÞL¾[€ÊÂ’´Éè~°L°ˆÕnaHˆz½[¯`µ™ë˜LUö'ŽTMË·|Â{Oì¿i:]0pŽ+‰K¼"ü„Bƒ^ Ú?bQŸ<|Bl¿± ¬ mýÏN‹üZ%³&žEL	qÍCr5öPÙ+\ã>6<öÓª3)˜ù"ßltBM1:_²‹÷ìCKT>áŒqZ$|GÛQ²éÖV™=môšêC½A£îøð-Ñ7\Ùœá+PbÞýL`ã(¸ÓÐÉÅ¨™¯ó"ü«ìþpbú‰Ÿ²°ö‰—¦œ¥ÌUHãŸÔðÂE¶þwKìhì&5g´Žpnµ­ÖÐÅšjQ»ØL ³Ì‡X0J„yß×OùÒ°.S¯]„J
â¶H¹k-fòE&^šÛhßë©<ÖàäÌ_ùú¯žäŒa*$üenF‹†jãOÏ©æsÒ	MÁÎæ±_„u¤²]Ï5Ü]ì
Yo;sœ–Ž°«´™ž%mÛ.Hh3lÎæoqšIT z¸D«’QƒÒÓ…Ÿê-}Þ=î‹zÙTtydÝÈVÅz*ß¡r…KÉ$ýæ^¸a™&'4ÊyK×‘ú_—úÄì¡|iuÉ¢ r¥Vº1xªRµêd e&íúøªž§÷B|Ê*·êQ6ÂQ|ëPA~“­ˆ¸´ø&Úº|`#ÑYyg(vR36J[ FÕâe¾ÂôI1Ø„a¬=óbKÚü@vÕžØÊ‡Œ8Wò‹>¢=!²4äÔ¢ãƒÏ3.ðj¢›BNiÍ˜óä¡ˆgûÃÂþh/9qíK>¡•ÉÂv©ä°C§-»ï|éÕ{¥l\›Ä3¥åpÏqT­«½1¾$BH¸qÿØ£”Ìê0Ä´_}TÝ!´eQø¿¿¿å=Œ
ñ—qÂ®úß‹ùýör„,öÕ:±š¿MF>ç“à…?[˜‘üPŽÿOzÒ¯AÞ!e¬éÚ(PÒœáÒÖ)üÜšu—ÏÃ¬qËùP0ŸÍ´‘'·h) Ôø»!“ï¯`ôYsÞ]MQ‹‰ï“‚/Ì£U…067öÆG_äˆ{Ë†¾œ€oRé÷µýyuÜI±D=õ!+—Ý£\Øâéf5Q5m[ª-ôà"NWi»ud“×ÑB—y÷Wtöº(º,ItiOÂÏn’ðW’Š±›¶¨|10r"NQßÐù2‘þˆï*³)&Oƒm»L0Ÿ¼%8P´Žýq%CEºF“MÅ´l~Çn"Ý_¥ö—Ù\løXK\D©}S«—60rŽ”LÓ¥ÎFÝ[l~ï€Þ¿òb·™8c"²ûs&ãú ýþðéù¶Îû–ÞÃÕ€ÞX»FïUfcüxëŸº©Q}ï«t­G7Ñ˜œÝ‰‡vÐŠCš×??‹èMç1gØ“ñaòÛ– æ\ÊSˆjLK®ØY©Wã¼ŠÄüæÒq…Ê4­ÁHêÔo ^3h¼Â)
†u@Ûï_G­<½â¨º†ˆ›É7µð¬&k™çKþ‰ªY³iU¡®|;Ò…8¬?L+‹ÐœìÂ@ù?l½67'u*Úº|ì¥-(öuäÉ_ø ÄÜBÝ¹êKì	Ö4nÃÒLŽï€°¼Ò®47Ñü5IH€à£_¾ªr‘€æI‹Þo—e4¿ÍN>ŒY+Ÿ¡Ûé,7ç(ðóg’<§(~á",¾QïBÊ|çå…B°ÙâCŸ8ûUK–Š>'ƒú'SL‘zwƒ±44 ÃK’æ`snÓ!Yª¯¼*¦íÆ±•ï‚¹î}0ÎÆ?iXÔ¬A(«" °½‚oDš£¸Œðë_5Q‰?\$þäàâý>ÊàŒJ`jÏ´›³sV£»6#­Ä}ú’',éAU”Àò¿Ž/>ÖÈÁ¥7–s„sèT#î:ï-ä¿FÆè£u;ÙGü/àé:økçüB^\¬Ïtž·œ´½²ÏS˜ÀexrÕ]Vr'’Œ¶Ùk‹ÓQ-IÇ€Qç´ã_h@ÿA«ÿúNÔ3/f+ãä’{ò×}˜ùÛ¨öq (Ë=dBÂ|…X…Ù­
œ‡íË·75Á^ÏÈ1*U[õºq”,œŽu^\¤1‡šƒ)å›ðWØË©¡Z$ÔFN!ŒÌE€¤±“‰t÷.9}·6€G0ëîþGEÁ°( 'VÓÜ®¥³ë¹Uý¼·ähÒÔpú”^Ënò­˜…²m½Ð£Ÿ6¤zÜüVØÅ–Röå\ü¡„V÷[ˆ…€õï†9½¶ì¬AËõ°Ÿ4TÙéªƒ~<5«ôÓ
	âÕÐ2érª¢Œ4A?æðO?u†;@½ÔKa¶T¥(‡¯Ú\S†÷NÉäã¤É²KeBqÂ×# rÝÈœžù…Ù!¶æ§”qvêŽî²nÞ‘»,bPcTëWŒNN–?çŽóüíeFÛNöä·Ú‡Ú6¿CKbˆø\Õ˜F“Aû'ý$v­¥1ãpžb„–L¡ØÝV1“Œu õˆÕ¼áìA'4‰k”‡«Z¦ußý7ßJÀÕÅ‘-I_áeaïÌ¸ÂôÊšœêFäó±§oævþÅñ"‚mÀçc•Â Þ ^h¨«ýªEû½.l»0:a;Fà€£0”	'Œ	²a™ž`~Rbx2
r­VÞQ]·¦]ŸRórv¬Uv2¤úw²€-•¦¦{!ó «ÕšœÊNjƒíu]Ú| u	°ªs		|]v+“ü2—Z‚¶~PTVQ"NDC¸‡ìTM=qóø' ·´P"5¬´féŒsÝ´¸wŒÐ`8~ežâbùZÛ]+¸„"ÂÜI¿õìøÙ…b©T÷èövjgãöÌþúü$Xu™ú1[Féûež×ÝÌñæ”§QUÈè¶a¼ûÔnÄØ£mÂKðÓÕ0çÇ ªàÄ	áÃ$-qƒêÝ’ËöÊL®€Zûž~“Œù†¢·D=ÏpÇkxK!ùÈíDYúáu²ùx)	á’uÃJòZ–aÙÌ&~½ñ½¯ý52¹j˜äØj´Ö[¶yYu2F´Ÿ Éhh3ÕŸ¦©í!¡nMø©9j„l [‹ûam#÷/•¢C«}poM¢»ˆÇ¡<¤3ö<ä)×© ¶êËFV_ õÀÎu8ß7ðÄà¿†Šì”ºìÒ|>bþ6Ôúå<°Û’ˆ³ÒmLk‰L×l›)Zò ¸º .½;›ˆqúãÖRcÉ]BÑŠ]ÔÙ U“©ÇG¡ƒ+Ç8æ÷À¡÷]žî6 #µO3èä/Áï€0Š’¯KÙµdòÎSÞ„ç†7¢Ž7R™‰1(‹‰ß¸´Y»Í‘2¬³BP^¯¼€Z©‡-¼õÊÈ¯w'†<
<'ºù¦¦³ì³8®Ë’‡:Ä­È ‚t-*ß«¯tGÅ—•&‹O‹LÔZ.ó“mÂ Æe¬KäýqSW·øõž¸ÀbkT\Š—)rÔ\&8¾jödïü¾4,î„;dõ3O½(/"KÎì	<Bfbc#HzˆËiïÕI	¡ù\dB«µpHù¦ 1º¤Å .3[bÁÏ¤¿Ý‘Z£Ý×çprhçŸKö`=«­¬i£ˆ‰9¡Ôü½ \¨—åvš¦åyË|jBØ¹§î
•—
Ht"@ªÙE#“¼›nð¼UW¹“ôÉì=…˜ ŠNŸ`Ë¬è3Ëm µKG%\¥¬5ê¼èàè÷þ‹EgZKp’8]‡|uGÁXC×íÝÒn½Ä4œ/ÔîZ7 %ÍÉ°E
·uÙkVÊ–MÓ[$Eçj‚“³¨—#¹Û¬ç(åÄ®ƒñŠiKQÆ–ÌÙ¾`£so™‡7Ñ”NbZ° &Å;•É³­Íá•`N¥{’ò]‰=ÊÉQ†@«1Ô^§ÉE*Zû,â•‚°ë|Ÿoj.*'Û==Ç| Uó,<¦-Ê®ÂÁ4rýË€/¦"ä;3>6È3Qp#c¹t£‚i‚£ÍÜ"ÿóe×r;Ô®ƒp°É»—Ûeà@ZpÌõ™ÑÀX
¸ŒÁÏ$c ÕŒ	@öõÖO­3+áƒß}„`ršm5=ñ­ƒ•g=JagÜp&[¬èÐjøöÛ»ßª»£C‰‘G²Õ<ç?¡ß‹l×ßáÝ¼×‰¨öíkEó‡˜9¼}Wpªp+8×UŸÏJÐlñü~>(FùdÁÆ(ˆ¡Ð²¹‹ŠÚb3š‘få„Mßõ8‘>¼zv‚\^Í•©ÙGý-äNÆ¹„òôÊ¬­&ÜØp×ãK^Êª©>~lÅœ³5>þS¿Pþ4p*¶ÄlO)³ž]1qê"_A×’²9#hu¨íZ½É8%ÏõßcLð+©òÂ Ožÿm	=³†’Ú_Éú;DÙ03fh>”CäOS+0Ê©)¬_B¨ïŠÓT"ÝvXz¢üŒ,îxoËäÖÞï}×be‚~MïÄØÛ—R@é•öºÝªØLDêØ,ur>ˆc°•ü Dë	¤ÉÓîï:7•=>ºÊõµ/ýí’YëTÙIµz	GdŽÄ$‘žŸ•YÌ<g{²ñQ,×ä·-º‰ÜÖNG±‹\æ¶£>!™uxž:°Á 1éúµÔ0ùÞÑü^‘„÷ÌÔ­†¶8¦ñè"Ð	™Ä„ÃÃÊF­`û@ÅrÍ.ó{ïëá8²ð/¹‡uôiØiÁƒ»Å(^÷QÏ›žsa0›&%¨Âv>åä;upì_XwŸ½mï˜ÅBsGyÎ&gë÷Ìç¤ÔxîÏƒ8¤*9v=ÀÖ¹(1`Á6ÿÄ_lÏ²ÉÀØ+ã¡Í‰$IùôœéW–u¸¾@ø‡ht³È1¥Ý	ðñõ¶¸"IP•\î©¬iœmIÁ'z¼@|×·r
–Ô–d±éñÎK0Õ«d¾?Ïm (A,¢dzS¥œ"
m3A€F!;FÍn2g~I_B¿Œ±ypãH™_P®-©ÃÄHóFê`CS#½»Gô<´ª:}Ú¾ÉÙ¿~¥òþ˜áyX÷`7ö6³ð
Oç¢™é€ÃÚmÓpc÷æµefÇã€;ßûú~UüËé"óµÇo¢ê®q,·rJ<o9å„Fþº³` ¬”Åv³g·lŽ ¢m0œFž”m]û“q·¢E Kxñu€Yºÿ|	£Ö÷T#
mH £ø]jÚg‚Ã@1À+§¨Á-Íý|?€ðßDmU¶Ÿa$üÚÈÉ{‡M#¼ƒË3E ðÆÈH´Ü˜-«Qt]|Â=G<â¸PœFX¯v¨£Ýn‹%6[¦ÚÉá×{dyýœ)_"¨€àcžåyœ[Sý{}GNÀ˜ëô—vµ¯r¦²â¹È@DG	Ib=1# júI‹¡Ë³¤Ÿ”Á.ÜmŽ¿™m
#¼ê?s^Õ
OÑh8ªPß–¢¶x‚—âjÆû*Pv‹<	÷2ƒ¿1WÇ#XÉkJü(A>'Â¨D±oGºpÆ6vÿZhZ•÷Dì{ÿå#±ØâVñ1—çjwÅôÒ¥d9‘ÚÝgRÁ{ŸM ©—ºFÓª˜ŽÐe6™|Á9šø–(¾žø¬k¼è~”4Äj	,Öhsj£ê³ŒwTÄT:ÐÃdMCœ×Âä²ó9‚H¢£¤lé½F·Â­‰‰¯8™ »f£$0ƒ ·x%uÞ)ï†ç|ïb“‰ØÕöý¶ –o¸BUZNrOðäQ£uÝ›¹f®©ëª3v=3í~MÁÃ\+ö0Ü¼“¨ò£ÌmTªžùÅÿºŠ¥#ùÉNÆ3ë/ÊÔ`˜t×aMÔí’á«Ú¬y´T?Œ6pQð½§Î9øƒ#7_Œ«l€60B¡9½ç’×
JªÜD†¾‰o’&ÜÉóy§«©¯}šöå½4€‘'†PŒâó~ÿý(Ds WšÎ
«öÞ†ŠÝ)¾¬MQC¸\®C¯\ÖÏx0‡ÒJ¢7¾Ñ.1uhÔ–±Gr!·4±#Þ<s$@m&„×&˜¾äylh`78µ¯•IX"ÿ›™Ôdªë'ÖËJœ¤Ãž¤l‰«Ã…PÀÝuWÖÑ³Æ$³TÁNØBŽó  *ú‚0ÄÄgÿ\ÕQ)ÂãÜÓ¢?j) ŒÓQS+6$Î·q<tàLÅƒ6”lâ¿†T-³#Wƒ»Ž5_\(}Ñ—¼ÊN­‰›’â%g<ª°9w©¾«—ïZ Aÿ£«¯á`îÒšÜè·€ÃÃŒEG¶Â‚äËgÿfâ§…'¨ÐòÕSZ½ünZšœañûh¬|1~6œ°4vßPI·]¢:ûq¬Ø
—x_†ë‹+Ù„õ)þ½#Î	} ‚ZÔlF5•~{êbgOÍÖâ1ÇÛ…„-¯ž((´%· m‡&iÍ¶&ªù?¯¹ÿÌçŒhL/G\IZ.‡QS¼8oO¤{¬€W—4¸k†cVËØz-ú{ºçÄ‚“¿]	¨_430T¦f0íŠ^<a
z®ëS†pþùÝ¹üŠXñØX¬HÜ@ÃOà²gÍñZ<u>û?—æg$qÞ~»=PŸB™$ZƒT9à÷‡´œ@Z/­7>ÿÔ&Òœ[na ûTõ#Ôð0ûÝ¡žj¡~údâÑX	ædLõ;Fûä~gZ¥8‡å¢adTL^X—ñËéÇ•xga»`ý¸¬õ	ÜW›igüÜKËNÔ‡<ªŒÛ®yÍTRzÏ×Ý­ÆU‘©d¹Î=È¥®¥ºÐj>ÌF'?ÐZÈkˆx¢oÅxiÓXé4Ù'Ë +H!;{f’j¤Y,a!ú _»+çé¹­ŒNž…Õ\0^ÿò ÕòÇBëÃ†LçS™Xh´3¹©IJÅÁËáCö!·ý5Æ7<™¦ša‹0{?býÇnŠîö…>aØD–õëÕá´œ¤™üüx~h:a¦ÅR’å|2d—³t)ËÏ‰(¥– me¥ˆì+v@ZI4m½…×Ÿ¡€?	ÄJ¾Jlb¨…ƒõÐ²ý9jÝ´¶¿ãÂ°2«ºö”."ÞÝr¼^¼gˆ0¸àsÓ}ÞÎ  ¶Ò~f5ÄZ©6 ÖV>ô›ŽHÈUÉ‘¦Bp_Ô¿.¤`1cœ*‚ï°±ÜÑÎÃoªe¶;ÏÚÎó¸ÑG²h`øH¹›á¹o©$›ØG1¯hØ| 
¡x•už»Œ¥I°aÕŠªŒ9ã¯×n9ñÏJ?cF™òÅµžÞUÌà°?ïUr°#4gÃC¬Ô^Z|·?]"YÚþê„l^É’ý~ku¹ËÃ Aã[]	ùxêÈŒ+$Õ©Dzä¶¼ìGœÌØ_%(ù)wäë’9G=Î ¯K6}‡ˆ§náVgÅ$D,+*ô‰žZî}¨Y88`¾"å+ë§ÇÄP–÷y\a`+&¥ÕG^ÑÌ–¨K¶¬½ªâ˜±Ú\V•ò¥§Äˆðú6¿±ô`ãŠvÉG²¿=ÛÑ²Q"¨>´mË€»èü7#»´÷ƒí¼Ùš¦Ïé•3’UB9B%®2ŽÈ4å–%îDÏf¦‘ +Cæ7·ÏÌNw*oU–íXåò'âdAÆr×-Ô·3TÁ\ò
Ø=}©çô÷mŽë5ôšŽÁRo	"T>±'÷­‹lme[‘ñ÷LÙ©åVïåÌ,×ðáÉÎwQ¦boEKE®œ”ncz.RYóú¡2ž$’ÆJ‹üA‹OóyJK4!ÍùsSN¨.3œ—[ùÌ’”ã:šì°à„üñ¯QYm8#™Ôš^»k`v¤!°X{ŒWØ:‰Ò¨ÍxÀÔÖ7qL@ÿõLœsAb§(®w€ôx¨Òb¼9žÎ8üŒ2È7ÊDqá.ÔjÃàÖ±K™Ç?í”Ø)Ü«d,	×²²’58åµrqDàcó•ðrÍ‰ß€V‰gqòÒ-, B4]ÿ·#d„¶}->W©j÷%»ûÆJ Õ±è¯–¹µ”ˆâØ:ÿóA1'iò
9ÐÜOõ[Ø;	!ÊÄ¡ú\žÊ÷œ`ÐIs^»Î˜µ‡ ê"Ï?(Õ ˜ÈäE{1JK„!¿T·”ô­Év. ˜rüè3|¡#Ð6²ìÂeˆÀÅ\ŠEðnDÿ‚ßqý+v*Á0O£(¹º”[?„ö‡¸— µÄz¤‘Ü$t‘­µòAcáS+.ìŠéÒS°é£¼L=ûRëŒš¶.aÊ·9¤+^(Á@åûÂ¸Y8ÐYºt|$v<…¼¡`ü#m®S'þÉ0wñ£žÆ¢+òË#MÝfPz*4.Êà å ”WÓÏ™ˆâÜZÀ˜Äl'ÝJL’PŸ6µð®ÈQVéÚaªð<\ŽõÑ&ÌØ`€gê¥zmIó¸Ãmt!j
ÿ:øÌ»‚âÐ‡tµL6þ¥¯Õû4b˜tU³ÌÐ ×YiùœDÄ“–kZgu…V@Üw=K§' ûµóëóï¯êZ¥ÒŽ¼68ß%ERÅåNTÖû#°ùÛ<þ€‰ô·­>šß"eÖ³,z&žn‚$ÍR~ª‰±û
h<BÀ›x×ø3ÿ÷óNw´RhÙcžäLáÁeÖzÐ¢ù7!QHR	ñfíè£Ç	î>®›¯$Êßp(Ù‡oE˜cDö}§klÍðÂú9Š—¨­«g2ëüÎ.³õvN˜hþK—Ä‡
}Êi€ÂQ;|€·õÅj­”Å)?ôT†úh&®¤œ,?n¿WøœƒUÖ¡ïõ/Ç%U†ªúaWãÔÓÈ*DÕÑˆï£JÕ—"¼câ6ƒ#	Xq8àwëÍµF#¬àÅªtA`>5¨ÛÆ+ÝÁ sµEÀðiðöÐKgªãbòðµç¨Œ+Ï]+59ák§œœdIU JÒŽ ¬6ÀûJ5SàÛñw
ÎdÖl [ØvBSIÊy,ÕÀ)";·¥8k´µv'&÷NáÁx•¯Yj”|[6;8}s©xuój}D*²‘¹O÷s‘'ø.÷ì lo[YµLl4Üõ†LðS mhp>„Ü÷YwPb°ÍIG±ÍLƒ¾×™Ó—ªø'MDÞ¶.”Ô„òP¬¯U×¡_—»Â—L+T&<Y¢Ñ„Ãè`4¸µKb¢þ5Fcö×z¬J£Îå F–_	01k¹ábÏÜ ¤^l¢>wÕÄ 
Œ²÷H˜÷í7cq.M¨!Š,4TÿH›áüØ·fP;êú®o:Òôýzr„ãUl½	íjr¾ä­
lžðêv}ˆb³E€'ŽR7Cì×(–MÐ¬ü˜’äˆ(Z>––>#öœÉÈ&G0%HQÔ×ÂÆ¥Úì«¹¥a!ØFv Ù˜ŒU›õ´¢ºòÜN3HÕ9šk¯Ž ä—Ûâà:?™€	]VûÞ™pøöüß¿º2ÇuGZœÄÙ¤Ô*m;+ð÷kÅÀ7îÝ~ê†º£¹Hoº±elEÍ–ÊMúÃ. oð=Ã¬úF”
´<oA
4ù° ÕgÜKcÎA&žEí,çônÄ3roS¹Å¾ýt©+Z )à1ê©A…
,Âê26,jXáf½¹•àäÄÿ™‡àÔoÚ{h¿©šŒÀ3Ûà+«‰œí<Ãö>e==_˜aîüEuô‰ç(ð¯ŠÕG,‰wÏŒyìå³hëÒžËçºÙMÝ^t‚i4sž•ê`þi›).èe2NY?.–lx–i‰˜GíÅúš
™§Ó1eN„ó¹ÂPß‰S¨Ó÷änï»B"ýlŽÖeGb^¼%Ó-x;ÌÛÆg÷}8 ) ÄýPB æ½²rü+ŒøÆ®Ô˜ùx)ÇZÞ]Å‚ˆlÍåp¦ 1±;+¦hü¾jkøÃ¶G“¥ÜEûšDCíþ„›fÊÛSB6ºœèbg&AÕc‡]FòÁ"Fò;¼9Šå3Nn@øÆ*X:¨yÙ´4Ðó[Õ@¨OÓ 	N®urÐ}úãî†{tžlöÌ!šäÀjÂ¯ìyàT6¡1ÎIŒ‹¦¶Üz	&«Ý ®lTz¢ò†Lº%¢ÇW™% ¯8è®xWÞ’™ñ•[›îpÙ¿Räÿ[P(ðªuz(özšáÂ¤cµ5þêç$˜HAqþã«u¦kˆSíˆ`Âz¨ÕB[ê"0Ñ0†€û¯¬=ÙåvŒæ5TÏD¹šâ±Ïû)d FÆi÷¯Å.†Óø—rÜ•ËG!–-iFa–
I[ý±«2Â~Žƒ9±þ¤Q:ýN°›Mþ¹ISËÁ?!q¡©Z’:³’f€ÄúPi‹Ôð£vuVH#@È}å“Å|u“¶Šó
¶è³ì€õ®Ý$CCW æhþ/¦“lè‚á=®Ý\}Iõ›¹xÒáG½úÒÚÁ}¸›û.Ä´øÇ!{D„LK“sÖgVÌ\y.±@3¿¯!d>ŒèL³•F¹@¡·®üª÷/^‹Ê£ïúÀ«ß“Ã±“‘f›‚™À‚CçSígòviBàK@Òªjš•c*êYvæE&ÇÿñU4õËeÝoæ.¿¯ÒÎ<S­ËŸO«’P]N+Hs@íS×ÏŒÂc@ÓXy‚ÇRÈŸâƒÊuêgm{8(“23ü—ûåke«¦ì>oŽ ìµŽñ´ñyYËÁy%kÉ!h'	¢Mú£z^uÒ
ºRmÚIô„ÁbÛ±õûœ¯S¿”3¾wãI~›‘¿­ ò¼6ÛV@çÔð/ø!:¨²l¬¯¯ádEç©BèY¯ösÑ [˜Ñ6qBV;ðX3‹ØvfÉÊ¸7¬{pþÕ°¸×PeäBœ¿SrBFwGD¢UChI1ƒ	K„ý—ˆ='úê26îUŽIï;_r7'he·K!wã^ê‡>E®°w;*
«/’3}P9×+5,Aì/),fÝ!ËÕ=‡¤Ìkž°)HðHê›îî!èó¶·MÅ«™ÝÙmXéZM÷ƒq”..ŒwZ´ªâÈï†v)Z .% Ü¬Ú/ÎCŒ¿ƒî/
Œ‰€maßz%^Ø‡@µ…šµ‡)N®£ì‚žLˆ±Ð¼ÒäðÕÙ.¬…ÐÇÂÊùìÃöá¡í/ßî%‹Z6¢./C9wì"ÆvŒ`\ãúÇ5	vJ ¡0õ"CAí:ò©ýÓÅJ|¨¦mÃò¡‰f•$jãµ—Õç1ï ÕÊWýhÏ¼±5ïË
¸Ïw¹Sª!ýªÂ'Y_¤È|¼ìHAœÃB–³!G»B"0Ñ6SK²ÜRì «¡r æf(Ë(µË&Z}îš©_²þ‡úŽ3UûˆÇ°ÿµÃgåÓÞ5e5
–3œŸäfïqîþL™“qœpíöÒ‹}Eüž¼Wj×=VÐˆ,5~pÚ¹ÖYŽæsÜZ|‡§(él²tövÛÎA—…ÊPŸX|&Ë˜9HfÌ†Þ”_l<ûž›,Ã–_k¼7°Îà!Ðãè©i+Ðlx>ŸJæäb8å«"“™W¥Ê©æl8’VuŠØDz´i;»2ƒñ´ÒþÎÂzgËÈ·2¾Àðó¢uÓÕWI¯|ÐÈ|°é:î?ÔÚÎ¶­øNùfã€ŸVkßƒ”c¨ˆ+dét¡¹Sd K%ÜÉ®Zq)Þ"ÚÝ¶0d-Á~ü˜œ¡_\ªßå÷Ârd¸N5H»)A¹~Z•µ
AsÛõa<”ßå`+%vx"ë¥¢¼;í+à#¤³sì.ácq?!{h2Þ	7G,ã5Ç;H½¥`QÆõ"¥®=¦º{Úë¿˜W¸ÚƒnâHÊ2ùYƒFÔ¶™“LÀñ7ð`u™cÙ|VRƒ|–ÃyÎEég‡,½o¾Ålˆ	þá'^¥ŽðÃºåo\ ª¥S¡­‰»Ì0Ç‹ýAP«:ÌcU±dhoj&CV[ï3(K*MùúO0Î64‡†çƒkYÆ`~~_<¾²èD$ùð:•ªŒ1P´ß3]àJ¶TòÔÐÐö!¢ü{È64w&-V²?Ëê
…Þò¯i?šÂHÆ 1o!ÜZ DMŽwúéà”f™8æC¿iÃ™{Ø3O3‘áuždó°ÛÈ5äYÆÁ9Š
Ò”lÙÙÓ±#qÊÊu–sÈAŸf§JÝ`EÙ{—ÎÓhzdðúk`ûMß¸—ÉÈÈžW6-õ)¿a<„øÜ!—|À…-&Xà”?y¹:…R¡Ôœ&¿µÛ+QâÔ
ªÐ'3iWo”ÏDÞ¦ ™dÄ\o«Æƒ©>l5ËWÿÇ6uÇÏSö!Ö$þF4»†¨¹4Æªì:L°ýRÃ|„Ÿ´÷Ã•ºt»Nbÿ½ü¯´·Ð6&®¶\.Ww%ìÖòB)W›Û/ÖKÚÖvläò]1>r‹)QJ¡—@¨xPû½ßåIdû·‘Ó8¦®bÿî‰£²ÝU{»À‘~›DûR¼²}§<òšÂE32o|ÔçÐCã[4Óc£-»>Qž¬5‡f2„Å¢ÐÊþOÛšçá®/\VŸÎŠù€–¥ƒFOÊ„¼½9~(A±ÕôfÉï³µØb>âÙê '¸©ŠM§ÓÒt3907Ÿ°cû:Þ+ë‘¼~Ïi•È›Ê©¯	ÊËÂB×˜Ú½ÎÓªÛJ½¡õRi€ÝÍ°²œŒ¹ü•ÇXrúÒnšáñOýéÛ”IÊ9åhÂ	C!HR÷ÓªL­"¬î˜7GZ»Jo3ø>Ïü…ä+2Ö–3ÏòÀ´n4.Éûkn06kµü=€PnÁ@…»ø£AÛ?^¢“¨”°oÈé1à«”Ÿ„Àlµˆ~ºi;YŠ>JÁ¨,-1›‰œõÚ5Äöév°Ò)‰÷*’)À¿¹O<oÛ)¼Ö…¬?2ÕÊ¶©ŠE˜É—8Kƒ3<3J%t°SÚöü™.{†Ã’°šªTêíü&hïó ’\þ6HL˜jÇæq°œúg]ël'†nÅ’W|œfð™úB|U»è-†y”{h·V^Ñf‘â-I
ÈPžz(ú6cMž½Ú™„èâ1˜¼vOd :‘Ð8aŒvB™nÝ¿Ñ¬‡0Ãæ<c÷7]}§w‹¨°%Ô·~Óû`m+²á|/«Vø=ðuž
CÑ3ïoÏ0íî'ŽwÍ¨ö›]“»xeÓhSsI¤Ú’›Õušg'W¬¨¤èOmÂ	?èê–³æî’…ÈŸêÓ`àƒÿNYf„€^1Û¾›wèŒ´U«+6™”E§-+±Íœt˜»^•¤Ò2}ž7é½ßøXPxË«»ìN ™y4ä-Ð±U²<Ì¾ì"
­q•-ˆÎëÓr»°0ËæÇƒðWr|f´ˆWm6ˆ#ólÂ1—ãeûÖ„\p¥ñ1õÉ8Å+÷\Ï¡X˜72%õdá-œX’¼ìS¥Ìùá“›©}°ŸÁvA¯)è­}þr09øÁ r½0ÓÊn¥É% fM9QÇ¤”W#B¦œúp^$l;rÌíÆÞiŠ½)šóæP'—³€ÃíGãH¤€´–»6|-â·ØØ“¦v6z†¿¢ÁsXÖCÖ-qVôM@w§$ºû8´²‹S'9/7÷±kAëÔ$…:ÙšHVDpí¦òi_YnH3í3Þ!Ô½¨Û§WXZæð:øW8@*ýRÉ)³KEÊd´Ð›‘¹/4Ö‹1'%Ø+ù¹ññ€ÒÐåÛ’šØ™¥Çí }ÊÌÆ÷pa±‡:Õ,`¹C.©Ì±üsàÂeiÏ1éP¥}£@P~:AÂiÐ%ùÝÌÛ&3%8Æ¶BŽd»ëWWFÐ'œ‰U
¿¨ålqJ;° =È'~U9?w27\hñq\ŸŸ­öH¡ŽØ	êÎÈ"â›¯Z|Ngƒúí	‚x#zJ3ÇEóÝcç…Ñh{ÎR!ÞJCAÎ¿ænÝÅa˜lí)53û¾*úÆûAÖº€pÔZ©4ug6/=%¯ÞÄqÆw,ìúv?ÛùGß¸@ÜšQ–•†^ìKDí¾m¤ ¨Ïbl—áçrMóhÍ4LVä¨I¡5K\@é¦¾A¹(ÛÉÆîª¹Iñ¹HJ›)¡Ô¿íãìûãc$Žv¹æeËÆæL•½‡r6å}:ËGnsÔ8ŒwV™}–y.4È·éú|8¦ãÂÏ­ûÉØ ¹Ñ¯}›;¹6QÝS
‚îŠ<Kì{ ðq”aíô€Í§Þóç±&/´í&ƒÖÌ¹?í£Ë²“jgUlš“´Õ§DG”mø6B,]Zë¨Á3ÓèÈš¹x¾<î6"üœþ©vtªVlf¾—xYðñÐ˜éNL¥þ?¬Ø…¶Ñ·!ÃXÈ%b¸Ä›K²À÷ˆÓ‘\¡‚mù’ŽêÅƒò¯oõ°¦qðÃY\I§Û,n³ã/|Õ[¢0 êÑr1`ÈU~ï²)Í)bP¢þÌ¨kYÆ5DÔM)îE4†Yg®Z#Q*#W0GÙèö÷TE{Èw£ø7ýÂèmý®°o?—ïz:ª/}uœÄ€J¯¸ÿîu6oZ ?/V)Ò&	ƒ§˜Ñbæ­bˆ±®ÍºñêèÀŒM+—R£3ö³"Ø¶^kŽ*`<TIòºY‡­ŒzÖ²RÜŽè“¿p¶Áæ“…KÈ«Hxe=2ÄQô<q
§2/µ·†4—/AãK¬õƒ^:VÉÔ1Œ-ñ.Ë{F±ÍætÕí­Ž›A÷Ã³}@.P†ÍŠð©­DK9wSîªÛøûî‰G‡8Íz¡VO„~´¼3¾"w´.ßH¨t@êœˆÄöóˆµ¶•¯È	Â¹‘£Ÿºy÷ˆ7›»æ¯uRá˜ÛZ/;{ÌÞ¥Ìê4j¿Aõ
lY*>->Ë¤Âk,J·ÉZ)±WÌ£œ‡8au…iž¹zV)zŽ¡\s²ü£PÔÞÝŽG¢‡žqx¹¿D :a¹œK6GúµÇ)/îÏè{0Ú€¤ŒBaC$ß†YcAð¦•g|äsœtî„[Îd+UË£	¾ë/´úívbÍ8çJÁÒOŸÁû<Öjþþ]À0º5fœÀáWÐÊS%¨Ð¹G½æ*ÉŠTØÍ¡p_‹}3AeFJ.ìÏ¦Í	u¤Ú|4¼>hz`<¡K„d"WÀ¤øë~0fÔì»Š¾Ë-Íˆp¬-BuäY?«Ãã!;Ø¸‚.•ö«hñÍ|_6XL&eÉÆÐÚä„®_Çÿw¹Ö°Ü§@%Z›âÂ³<Qb…Ã1Ð‹¢¹W•jõˆïEå/¢±OJÖä¤ÛT;n 6e®SêÝÉV²õ©	@q£çäÒ¦”3¨vrbøƒZœ«ß¬8t\Ù¼×„wZzC¥$Ú‰Œˆ UÙ|XqU0 w t÷O|ð°3J²ß¸¸3™»Â6ãYe¦™åu?…Ì°¥a¸å¦¾tRÉ’D¹ö‚oxìÐ§€îÿ¬·Ð'não¨†¥¶¦ˆh–ÒÛpu‡¬h&	ôW­xQD3¾ß~v1AŽS¥²J±»/u‚XúÔÛFkÅpDØn~@ø(á›Ü(rüšÃ}…MÛWtYúÜÜOëÎ=/Ÿ=)6p¶- ÓÉîeéê¤J)ˆ@XÈ÷ôÚA·©`\¿kŽ†ðX]÷„°ïœ‘³²ø[kA@+tp•x[AsÀºÙ"h^ƒVæpÂ²ýˆÅÎ5Ù6åTããÓáù¨Bív|ì?ˆ.¿ÂVj/;òÿrLo¦TmYcŒ*¡Ÿ~`
fBóÑæq±S|	ˆÍÈ–÷Zæ Öo1Á€~_xÇþDÜÝ”÷È™ëû§4h5š;Å…î=n¨,(úQ5…|~
JÔìk¦^Æ¢ãŽîÃJ-|2¯¨ñâÞRˆ?dgbe6€ú':èÇ5=yÈàòÌÐmí>" ?ÊaÒ\jùÈ#œ@#ˆ“ÆµX¹YXdc_88)äÍÏÌnò¨[ÇK¾I‹†GœÈ£´oX!96dÝË™'òPð'{!ícnôùc”>v¡b¤þÈâò;–Ï[å ¨¾Í}ÿ…ñve¼QÝ €dUàÆˆÒ3RM^°%Àõ“p%$)‡”¡ÍÈƒ<ÜûÀ‰µÎ‹÷I¶:kf×[ íF­×\d
A¨_œ–ÞÀkÊúáñ’dsÃ(rjb¡R:§þ÷ÞÄÿF(úñH|žP${„|m¸2:´ÍÄUÙÙR­aòŒ™¡õBóõæÿmîN(1C9ËˆI¤×&íéj)ÄSNw€¼W‰©NMÑ@—Å]‰Åz¦É¦x›­ßþÒù|IêþñomGÁ¢šØÉI_p¯8Üº–EŸˆ»9'F/ºe.rÛãÉ¡ó¿]F½;„WÚ,m{ß7
„?GË(©çÆÏÖ'(”Œ#AÞ×jL®:TyÑüZ)ÊxRäiâ|Pq®)ÜÆ÷°ò})hýGæ¨wˆˆÓ}uŸãçÛ(]“ŒÀøÍaùì)Ô!yxêA×o!d[¹™,]3Û7v’þK› ªÞ±`"}(zpÝ¿S‘£OÇk.óŽ¶M’ÉCq&Ø`Š
lM´·áŸÈ$)=ÉÈ´½Z¢Æ¯Øå‘~6Caï×è~5ÓÄ=Ou¸T[HÑ=åS©ìÐï+œ“¿"_$O™É¬/*Ï%çÄ>›qß73ø¶xp]xÈÉMã—GþÃˆ¹¿	3;d@#V5±!c#™šœù·zÂ³ªwZm ü¡åEÄÜ—ÙAK~TÉBÜ¹è“ìËûÍ™u?©	PŸ™—*›WEs¢Mø8±aûxŽÏvC'Ìøu&ˆâ(ˆk±RÍBàèø»ÃF;åaÉˆøÕnì:Å)~o™ìY¡¦K•` Hrû¾$ÏÆÅÈ÷@ÈI­*‡_ˆðÉ´²ïªšGû—æ“2	·¢®+»ïàDiX?E±õÂ'Ïž¸å¬Òç´êzÈf·‡¡~qí›²îÕNq“Ž3€êÝžÏ\Ó4·±»YRÉ^Cû=Ãæ¡B4€U~"i©rŠ>’ž: Rµ\àuñÁâÒØL{¸Îç¡]ùK0&hØ4	Ýq[‡³ÃÉïd7Ìí.àG@Äë)ÇßÂÝ9¥ò(uo’àbR½*Ü³Àà>¬Dlkp³¨uÌodõ¿Äu¯\T…n>wcÿ©ÍnÈƒ)t7³Ø‹ÿ—£"–Œ  ÎÂòø#Öµ0ïØWg	Wç¯¡{DšVÙ–Á¨>GÌÔ!žuÃ6¥	Ãìg6²ÐœmŠMMÔ¤Ø[½®Á$áÏºuBõ^±@{èFÔ—	D‡5u'{›*ÔÉ1í‡WÏí½*Hx˜³K«ìÌjÎWv9„=N.'ÊaƒãÄ¶¦=Ì{hÀß’äŠ?ò=òTÇ˜ÛÖ¬~z¶_#Ì>ZI€(•Jš”_õîM©àc§.³rBIÐ;…ô©dlî‚7ï® ©ÛDÓ©¨Ùg§ÆƒÉ|„œÑ%š_ŸžÊ½òÇ¼c,~SÒÔ–hª<²æÄ'‹÷ÁE“áêË–Ú'Ç˜„¿0q#‡8Q„ƒCœ¿/‡G¿•Ÿ…êç¸¿ì0ÿ¾¦(h®¡Zxº’üQÌ×¬CL‘ _ï-ÂGhÎ¶.$Â'™ÿ%„;KÇÚÿ«gûºŸ‹·"å}°öø7wV‰Òçôè<‹{ü‘'Ú[Ùûr•¬ëÖ€ø‹,qP½¾K!ëÑç4<Ù›‡Ý€åX:+ícPW÷eõ¼9t"kü»ÇšÇHÁßSÇ¬a¤Ï	@§s–ê‡7»°¸R¾ŒäEFŽ4Ù]mÃs¦´´"½Ø‘C9ó„•‚x]Ðôïº·ŒQ³u'ýBÁ=U±¼Ñ{
¸‚J-2î+›rÏæL\W•H»Ùc›fhˆ¹³ØâŸüÀ`OÆX$‘ë°)`î¶cÕ)ØÐþV‡ZÏÝÝÈ,ÅkkÇùmI|;q¿,±@eæï¤„ìøz'>­¬¾Ãk–à€QÈ ÂP~—~8Hz}´­7`_µþ¥Ò®˜{SÀkf» ‰µuRÏÐš7à’< s™-ÏðiÝÊÏßŸÚ‡€Z^“œò©Ž˜Ú
hƒÐnYÖÐx§Ê à^Çò•Õx5"˜Ü,!CùZrÅ¢îe[ýORÙ¥»Fs0ï­i	SðV\(]Ã÷¯•÷5^#õJöªÁ×‡&l!9f2ígþ– %ÆU ‹UŸH\ÞÏ@7òkœ÷/0uf«ƒ'Núäµ‰¯€·Ï
æ Õ,°Ç±g¯v·ùœit¹\e{fù˜52n\þµÕkÑõ<S¼ÊWøÚEpw‡4R7;‡?åK;ü·û”NÏ`?0žŠ¨±o“ÀŽâ@hù|²*LGBûF”†"«
ß¾l²3*RðæfÛ:½ƒ²É>‰Y¦MqTýw¤k:GœL1ëÉ&ØH9×t^-åŸšê2eÎÓ0+•	“2üRÞ}ÊH`œŸŸ4ûòR¯<RDÙÊYÉnáùïžåå&~t¤cMù†ÅMá¢Àç3eŽ–=Å—
f>¼(zUp3¯)­ÿÔ¤‡5ÈBìå@Í}zìœ<Þüò{Ýý\‡N³cüØ|7Ôn{®ÂÆ|&¸5P­Mg—.èg§eæqôZLÛ=L	È™6¬´h®£ôDc@Æh.2Èc¾™x:·Ë¶mËßCD[,Zð\í]O|öŸ«Q×8¡k5ðe¬WòÃ­ÁK&Äü}ìÎLœ=ÁGÐ Õêàã(f}Égô6Õ õ=›|Ð=ûO¡sOÂ…³Z‘ê:§ÑXõ2º1v@¦­£'v²ó05¨#¡”døõçi5$€­Œ¡F·»Ôý;€÷áÃìAè¼7¸We„fù:ÐR¢ÍD––Ë6ØüÔ›8F ’(á	VÔÑzK²/€Åbäƒâ&ÁÓ—kÖÿNˆŠ¤K-7u¸F._ñššò=Œn:¼×%€Y×ÙZ±Í71¥«y²}X>­‚êã ¡$ëxŸÍèç6`Éž èd|”³]SÜÁŸ,|ðÎÊÆ5rªÍFl¸ÿ¾9«ÏØÖµrV'»‹É æô¡ •¢¢¸­Ã,›SJÐŒü!õ3mèC•ˆ½¸_Ðæùß©W‘óîíñ]ÞÛó®	v‡ÃyI„ñ^N ÝxóHüca¥žEb/þfÓ¯+d¢ÎZˆu$ÌÄ5Ú´Ùôº\™TrEO-yo£ÿç„Äå0æ| ×n¬³Õ¶
ò#NGA²·bRh²ß2TJàw0×iœÉ‘–æZ‘ê¯BÑéõR³|O—r1‚­EÄ‹/!&ukÙþ Sâ¿Èv~àæ€ñ3Ymþ™u]l{"/Gc™HßåPTn˜Éü½ø_¹Œÿš¨ô•”Î~½vcËõêå;±ž¿UèßÆžÄÑ¬NrÜ¹úˆª|½V±ÖûëÐKw„>¶\òº³r7Îý`ù¡Ý¨ž–Ò°æ‡TR3Y¹ôý]ÞU-Z}|¿ [äxÚóFCG¥ãÝ’`	QQÖÂÒØSN`îÂ:0V*©›M€sBW[Œó©nºâ(Ž™h%û²¢2ûß§YØÒú£»@èí:«ÍøI#Õ>N÷º#×ô@©xÏ.M}½‰ðéNÏÄ’Sgç¿²l–è—ÉÆz1Û‰Â(<ÊùlZ[s]>„0ž?e·"&ãŒªZÒ,÷©ÏæzàU†måi½ÊÉØ^@åz„ëÕâó(r%ë5{Ö¡—êÝÛ­¬Z¤ãFñ¦öGfà­ØéôF]ƒóÔÀ7\]È²?—ÌÌÂ¿fz8ŽÌ«è¼Ý–.èT§áÑ9ð›n¦ëjùÓWÃ;æ¥òˆK¸R·;wjæÞ‹"¸ƒ˜Ï“ËÚ‡ÎeÑ¦ž`±b-ü’m=ƒFdžI(wé³;°fuš ÄÄ˜~mµPÅÄ‚ò;_šÉ	5òq»¯“¶n”Jr=>vP`Áz†Ÿè 0ž e–zT	‡þjßôLÞ|7¤±×ÿaåø­aëÊjC:qÛ¯riv|éšþDW~µsšuEˆj«WË3Žað?¥ô¥íë…õm^¸dÜr|S¬8ü`_¯1´¤¨½¶5ƒ­Ø=ZÉ}"ûö gn–@~ð~øR70X~Í|¿¿QŸÑ¦ºðX\ðTÛª§œØ¾P†ôeAHSM©Ih„ÇV•pÍ|¬ÿœ[Ì=¸àVr0ª|Î¬ž’1û0¬ÑÁÆmt£†Îi[ÎÇ–4¬£*Å(´¬ò}R®Z¹‚çˆÑ6pòoÌ ìgàíº'ZÊçžèOã|‚O
N¨tHŽ¸Ó¿Ë‘b§¨³ožfÔùÚ9}
ó–³~¬'ì—·Hp ¾Êjƒž­ºÜû\=yMŒÒÈ¾’À1Âë“¥Ê¬Ÿ«?kvuóPî­U2È™	x~4«®›´\©ÒÓ®Uùédê÷¤Œ­0 ÙÇ³&K(M`—6#ÌBÌ&<ÿO³À‚3\\Ì¬*áÖœõ*B/óÑ½í{PáneµPñEÑn‘í?Ûøæ0v§†žœ€dTÎÓ­å ïñbj#ùâ”¼W²×³ÍSï….à÷K°ù†9ðŠˆÛtw(…^;¾×_öN÷ñ<HÞ%«ü1±¼Èox6¸ZŽäeøB] Í&16‡ŠJñ<ì³¤â†ÅOP²~æ_‡`ˆ=6îª ¾°=”%´x',|Uë>jŽ¦CF±ŽBË2¶µÓÝŠÒ^|Ë=ALëÿ}U¿£Ä¶7”OôŠ/w™gy‚ª5aúS8™Xeä0±¬ˆLÀ+S€0ÄÀùÑšÃ„ß¨ã@8§vSz ðó˜VßY6†þ>šö¤3ÙO}ËóÞï€lU ¶–~¦fÙuúÝØ¨ÀÝœ÷Be¦Òr^¢_gQÀØ·Ó¨õ¾Wó…NgII§[¯º	Îˆ#Å•joÜR‹¢|Þ¯Ü’ƒc`|@ø¸SDÇ§6ÃHfž¶¡œ^€Gì WN.˜u-ãŒ2øÆÄjÈqÉ”©©Z€oq¨'(Ê_b°Q„§MþÇbs‰/¼øà+•½ïÿí‡%Æš¸ã&@m»æxRS°Ûòì´u]Õˆ­³ºÅÏƒm ÓÇ6Rá¤îÆ¾¤Aaû¬æ·q}YÀa\gšæds&7-IÔG©±i@¦çnÕ>â?ä¸ïAÒ“3	ý¢ûÝ)NXŽ8c®ˆ¬ëO…$ÿœ¥-ñï–WÞéïS¹¬"‰ú¬‰©¤Ë›tÆm©{(Ÿ€9Üæœâ6•ÉïkÁ·JûÁ$+Óíâ4«â_˜‰–5l¯¼!|4#fêð@ì„Øã„†5GIÕŽ¼{2<ÉzBzˆ‰›}w°‡“– `ÄõïÄ†²&çVä€é5O*sÒe!s¹ºôüN£Ç§ñä–G¸Ž†‡£9B¤å{•÷e²•ŽèÔ¨2i½I©CåÇ”äù˜-=} ßWØé>ONmÎ®´,Ðl¬€æLqÊùƒwýÜÿÏ­ü|rÜ»j,…U>µœ
»ŠÔV.úõ´ª^šÆ0ôðÁV¡<Zˆ?{ÕîH[·|XóçÍð‹C]$8M'a
ê@ÒhÑW9ˆ$Än1„yjÇ’@m’ÕHøÆLOÆ¬8¸í%?óÈ‘·20XìW~xà6i‘‘˜[ `©˜%Æå¾‚KL
wr—Ó¦va,;ûñÃ”ÉÉ%š¼zº…©Žî$Ó¡uû:°Æ’:E{Ž™‰t`q6_Aíÿ™\öàh=°Ñcm¶oÂÂÿ7Š·ÉîÆCc{–5Âz4¼›'ÿ*|›3¾ÉX7=¨²¦„
·KÉZ 
›Ø,+ä·yE©ËDØ<Þ`è–ìç<WV8Ñ›KÌr¼¦IÿÇžÁºoaÜpå}Ê/Ìä„KiÂªœÚÈ<9Ùº¬ï<°XA‘?AÙåGŽ”Ë#p”Q™¦èúbÆà…5|ò4Æe Þ/³¦žl|=Ü@‡CT
Æ=vx|	z!<•1@9÷(Gh¼xûÀ;ûð'Wì#ø‚WÓ¬{¹ÄåA‡m·ÐhÝJú[ñ—Nã qFžÍkS¯´ÇhNð—	ÅÇ8¶†"ÑÉÅ4þ“1DVa×^”Î—“ZElÖ
qÜ›O±‰[¶ª±¿îkn™4²ì3±PœÁ+ÂycQH“çŠˆ+ánZÑÜ zOÏ¹2ëCùÎ‚°®]kè¤­‰ßdÚç²QßBi,ÀÝÓz£ö+½ÔB\™z‰?± ñ­z¢N$Í9Ê`1Ë£IqìdoÛ¾Ð%÷ªT4 >Ù,^&ìþßCiî^tƒú)P}r¨óoYô¶ÅkXÇJxXÁBã6&§UuÈÉŽa[Lã}1 /ÉÃi<ª˜‡M’·1l†…”Ø mGº…;Á§›ºãPÙóýS”¾âÚ”"Óágà{Sñ…Öè´ŽŒü¦¿°^!…tÚõ*ÛXœ\&Ý-B(ã_;ƒ”YIb«J0²aü$r±…d€xplÜû üÊÿÍNtUäi+d÷ŠÆÒfÐ…’L
ØdD:A‰ ÄC!šºœ·µ_l¦{28\£uþˆ b|c#O¸ú	ÀÎËX?ƒyOLw¾…ƒªZó¨ªÙ
SHŸªYµz×q_Îƒñó	µ)xaúñ—8ÉJœ¾	ðÿŒy¶.0Òî"¸ò¸' ×š˜\‚P^…N’9º3 oö²„RàFãÏ×-¦Ä‰›Âºs5ØŸ~{pÛÏðîL‰2yDÕ´K>zW¤•a3ðžJLë(“[ÌwG™![úÁÉêá24(ý&m—áÙwÛÀL^ZžïþF–º¯ÎÎºÃ
³ÛKjªk“ä&Îøaçi¥€S6 nz’µ¯(A¯/È@ÝM¯èÓýu…m×ˆ´ZsÓÄV\8Gr½ðƒbÀžb_8kC¥’cy­ébFÁªJûn«5—qÝ¡ãÇÕó®ötx€i(ÀÍÇØÂÇ·áG³À]êÑÉDÎ80gî5ÁˆMª¦$q’Ô =µ”ª[K„¾@þ¶‡ù;aßÖMïâß¿ ]	ÓšGaG"/)õl·	~ŒõÈL'G¨?^MˆÆ¤Õ·úc›áýWh[¶ƒÜÎ:Ý°šIï a¢G¬¢äùS5S³Òõ¼'j)h°ÈÖVh|kN¡¶Š„±’¶›el]Gšf¬hH.–4=˜žÙvÆªì	¥è—B Ïz`ˆ%'×ÛŠ-óãÃo+«˜WA—Ár%1dkÁöì›íïu£¥ÝZ¯4dÏ ‰}Ô2esËÇïŠ¢Ø‘¾×Ñ>ßÙ×óÁ…×èj¯›6à–ÅØÒ{ÖgIs¢Å«‚°"áV.‡ÂM<ÜÜ)a•¹W”V9ÞÑX'-È:›Ý§K¢ø|ÚÚõ¶ÇÛí–LÛè%7ß— tè]%j¯êõ¯nn˜0íd(oU{6¹(ˆCþP´ZÙ8ÁµŽáRlà aï~ë—»‚ˆùp´ÚŽ9íØø-&‰ŒKîv_–ƒ¦$ËAÇ?LHý={ö|ÞµÅ{<âŠeûûŽ)‹Òb5ÞmµÜ0U)óÊ$Ì“`YÜ
ÌÛ•"²¹>){}üJ^À:6)I5\¨jÔ÷ä[ÿ»x¶ðNÆr¥i@ýY<QÈ³¾h8Ï™(U*Q$eŠ6Ç6YD"Eû=¦žéøóY‘é¹9­Q‘ù9×<0,³wiÒ­•Ä¦jN üF§5dy«—ýŽW‹IÌÉ3QCó&Æä|ïƒ0dÏÝ›ßB„UZ¬ÙLºzŸÑNýâ0c”_ËPI'ÌðÁ•ï½x§…älJÒí<{þ\ô½¡GôŽ8ÁvúìžðäžQÛÑ~Êið
a‚CCH¤¥8­–èóÞáaláZ¿r„ö} )¯©èæ½÷Î¤î›ƒ)Ùr* ó(5öHº!±ˆ—¹WÍË,h8äþÖ˜Äêß$ûs>}NB)æ:YD]¼ŽÖÇSi¤–>ÖPõÐ­•Eà aª=‚õDLÚA"œ²KrW»MkìJË%±éÍ¥ënð›?ÁMÛ’Gõ<x¡)pm¥[²Ÿ¨TÐ%,f—‹×N³†¢³vêË%¨ù^Uz6Ûï+¹†AÌïv”ŠÙ¥Sl„Û&=^4ú¥.CW“jHÛÒU0Š†ÕÔ=êŽ¨"'ÏŽ–€É,{ÞBc]»WŠuIK^š¡ò®Î©0’òëý’9’êú¸g85ÔÂŒ²&¼ËYŒøg£}é3•ÄO¨ä~p-q£¬§ÆÖñãÖSP)i÷Ñú9Å"c'wÃÃ¾çÓAõ*ãC°Z4ú‹åt›¾Ë²>Ðœ/¶)\YÀTÞhøÏ@gF
Ó¨è¼0H,¡£*<êÃC6ÕR=û‘œ'ÂíLUqK9§7ÀæCcÙ\Á@l€Šú‡¬©`¬ndîƒ2ú,Üü*6ŠsÝfÔª@¬¸ ³‚_‘3û_qÍ#©¹êA4Â”c³Á |x[ßÆ‡Èåç[ŸÙjN†ÑfšO†èwÅ™Õ¹p»W‡¼ŽÍ^K±¡–wé•BÜÊ~éô‹Â“Ø&µ®[$,8–”õ”_xYJn­Ži¸nXm2‹—JŸ"„¹^šw×¾
ü§=Y6é¸¾ò[|’GTÔ”G<æÍ°}n¹½Uø$¿'\Ã£Úe×?f[¬_[NTi/xÁŽöºÈxÁ¡õî†°—Å{Ÿ­N@4\%aìÿëˆùa¹¡	•Ä]IëÇY¹DŸ}1+Ëyöê4¬¿z~éû_²Ö(iÀ—6ä…ÓoÜpÓú†O­Ë¼Î1÷ÇÄ¯~Ý£š<5½ÄöÔm¹˜­Ç;]·JjŒþ²iR~“„¬Ñàž<Äª•v0Vö)ÞBQÈ„Ìù+}e€lvF¨/Ãd·mœò-à¾^¬’qzæ˜ÉŸ:Ð7_ôÜ±„A—üüo‘e/;ékCY_=;¾ãU»ïÚIšÒhŒò>ÔÛV´ÔM°WHÈ$Þ—«´kY]þzWŠŸžêÉŒÞR[ÉÕy·ÔIúo;yG¡VWVÛGÂ·àRLtxZ~ºB	ÌU£TPþ€´ùaäàÜT7e×)Jf~=ñ,â{×BŸ—wQb+¿hÓ>Ù²#±ºÐ[Éçôr$Nyá9ñ}kµOÝ)Qà[gsT¿›q·@¹þÕ¬
ÌÉèÚJ#O¨þÎ²è5*bf)D\«PýüZn&lR´AqúŽÿ—)éEÝ˜05»¿ã†ÑüSf¾‚ødBdRÛÆ6[¶‘ÇÅßS·¹·BˆF2ÍákëåÙGØ7=†Ô1On(÷&½”k²¾‹^W²NB3;a8ñÂÂ`*·m^@Ï5ÔD›jL@ÐÝ”YäŒ¹2I’¶»O+–¥µ‹))©D•1üj½«l€ÐŸNâ‘>UêCÖ;ÂÞ#uÂy‚=Ò‚%u¯Ÿ„N¾ÊÇO?Cq1PŽµ¤ôpuæ¶§wÅk¾›úñ)'ŽUA­›ª¸=üÞG]‹OÝž»íÎ]O˜@º,v	Ö´pß(ƒ$ˆÓ}
ç®8iìær×²z	§óÇå:é,q:ßO…I¾W•…˜,Zà.±­H…a¿ºù@SËq)ØŽ˜­ù&Ö¸¦Sêl-Ð"@ÈÒIÉIGÁSì#yLü˜ÛSsµ±V‘á\ïTx¨“\ÑêYÁ^µJ¾ü·Ðö¾¾ó—´N0ÕþËx}’Ó_Ç_Êj~öôíêÚIEÑªsû8‚
˜ž«h®÷9±í‹Æ,¨®.€W®mùÊ'«3i¯RÿyO¢}+ £˜Œ[í]Î­)¥ÃK¡È¼Tš¡äÉÎê3¸ÊJPú×Äì$˜bÐ@ÊxBéy8R¹ŸœÊËØÒÝŠ¦­ª×8K@G“¦ÿ~9±æÚ@ÎßÚB½J0[£bcYŒŒ£µt.N[Ô
«=¦ž^ÔöÖ“pï¬¨ÁÓOß¦±Äi%¾‘¡‡¹Ýþ;xþÅ–^ærÆ]x`¨+
‘]«Va(&ùbD|í¢>çºI	UzEz™í1?)ú«—Gòm=˜Åiˆ$*Ôðo…$L‘sð{°~V‘‰A)Î6%ÍúB?õ†Ô¤v†È‰JøŸB­pb³\VùÞ.kTyUj³ñð?ÿ€‡ôx¿úªÓK|AŽ\ÇTZè#/N™Â¶@jŒV2”âÀ½+äQ	
T#€üíÆ”8À&A´?…þ1XµX-ÌGido•¾"âV7—­à†p`Ö8a­Öö£!Ûâ$ÝÉâ=aï¢œîìÝÜyVè5V—]<BøG5°&ÅIIÁgÖ^yÀ¤R[F%Z®bÜµó?ÒÃÛRì®†–Y§ŽÂÂ_‹ø·ZÆ]³’áÍæç¾³yk»~»êLbŸí`pÚHá¯gíáüýŽŸã5ÍÈV·3#àø$—×¨Ê¼€ßq ¹‡• s †vU!éÝZ eé‚ã/Ë”JoØk2ß½©ôA¬¬ÍTäMP/ž9ÄQƒ¶ÂùÍLVAQewôq	¹Äxô‚O¹«f=Üzî–œäU=¥×Jæ†-LËHîD’¾\á]ÙÑ7Kóq!GVÌTF(–>PXFmÄ'1Te{õ ƒ2ß=OiÒx·èPÉ–Çè˜˜jƒþ²FÑœàÏ»!U@ú…zö•íÏÇ]èæs/c¬K†ÆÿW,C(	¥FùrJ¾j°kª^Á:nªü§ì˜†zšÏtL+òû˜ºžyù!»e<^‚µçÑ™µWþ2Ç1)„‚ö¸nƒðœÓÝ¸(k]%•†0ÁùC;•å†Çë¤:èˆ~Îsh¤®»ÑÂ®Ý!Î!ÒÍµÒÍnåêãÇ"vfSŒQ@ñá¯íÇëhýì[P>ß7q²ÅÒæ¸8¶*Vóåu£UKF¦’QK1-ÎÈ9or÷—–/ÄlbúÐôc™±ìÌ²ê?i¶Ã_Ÿù)¡Š("YœôçõCÔ]û¯üº.žûŸºÒtéØ ôxW?¯¡[a»
¨w2bL`s'ñ*¼ÒåQîäóù¨¥m:{`!Ào»“¶Íä-2’ÿbüïpø±Å,÷÷å…Ðƒ^âÞMã~ÑbÈÂ=Ö_^À:Ãœ±Æ³<£A´€€hßÚ±x<éOÕˆž6À¯µ^4<ðŸ’VÒ€2Vm6ÒnäÌ±Í5÷SUª±GâšF´áXT‘Ò1qsOÚšŽœ~ëáæùgÄlKXI„¯¨ þN¼xFpîÔþlkMÓà†Ä˜F«ÁÞfh'5G¼èt]ÞX+ðèê.C›ž›°x%òÁDr{i2yîMYÿ÷c Ý`/ÒHVºÕñÕâË)V„íùME´ìðº„a|÷ñ8P äXt"ÌUã/Ã´?K¿È£ˆ+Y€ÍÌ‰è™=c¿rõè>¤ñþØzÂ.íßþ-v¿Ùñ9'ð‰"ÞëXÊ¶¿òv™Œou}šÛiXÿðæ$Êº¼¹¹›<êÔÆ91vqöÝ[M0Ên¸óÙý¾l¸v2?
h	¡F{‚Ð¦BÌM,ð‹å°ü9Y·¾Êlu£l'öwÁ8ðžn5Ï¿½ükY;™Yd:Ï­¤4‰;°(Qf‹k,ÂËrŽ'çÂîuÐCÔý€VøJ6©E¾Z¾Á,ìˆh
£ÈÉ<}•jðB´dlœ¶8œæ¡džÏ@'‹0œíþCÔM?ëÚ‘Æœq{bêõH¤0‰=]›E~U*|j±NžÁ‹¶Âh4**¸z}ª¼ÞóE‘7)ÙýpîºLôØaQæ+þœøù…:CQ_š`j ßqdX|,zS¹7¹éŽ·ÐFÒÆü(èk{’€æ¥D Y‹„«ˆVnÃêé§À8¹M”ÃKuâM}®`,„<5ÏÐ¨kI7GÆc–Ao˜¨ª£9¥X½æ~/Ÿƒ=öÆ_²ôÞRÏô…n1Í&e±Û”0‰ÕÆ§êÕþúÉë¥W,¨f`Xšt¢–ùÁÝ¦›³¶{ ÂágÅNúì&Ž[/ãÄ½’«ìï ¥…Z!xA×ÁŽ65' êÃÄŽDÉ“óòU”%Fû†üho•‚HwÏDçÓzY”Ö¡O¯·b”n)›ÏÐÎ¾ÇÓâ~„ÌS3¢-ï3Üžx‹J…WØ`c§åjæ‰³bÖÊçúˆ“âs^ –"i(X8ZR2åºà<íÿP³PZQâ´á'V|TyØûŸk·d°áustÜ¾ÂúK(ƒK=8Ú£ß®SË<qÍ»_Kú\=Åè×4f„5.õ
a>Š‘«Ü¨ÙƒFžò@ÅêÀØq²É ßIœüI²ü‚ÒTÉŽm4P€å³˜
Ï‹ZÁmQþéz$Hè£Ÿ@c/;2M"/6º r\	1¨>ÌáëiŽli&b{{…‰áfå¼>š<×çIl~wB<. `,a »E“jFkt %–|Áã`Þ·ªH×FoÀåˆeÉ½n¯É`t¢¶SJª“ÿ ŽÿþœhÍŸÞ+wÿ4“TÎ‡ª™o« ¾<ò¥lûæ•¥ÉY¼ã¾éDSÆN–(Úc?ãg5Úçç"ð—    ‘e¸ ‘éáÃ—A?ã>0‹    YZ07070100000113000081B40000000000000000000000016290A0C10000115E000000000000000000000000000000000000004000000000spacewalk-backend/satellite_tools/test/unit/repodata/repomd.xml   <?xml version="1.0" encoding="UTF-8"?>
<repomd xmlns="http://linux.duke.edu/metadata/repo" xmlns:rpm="http://linux.duke.edu/metadata/rpm">
  <revision>8.3.2011</revision>
  <tags>
    <distro cpeid="cpe:/o:centos:centos:8">CentOS 8</distro>
  </tags>
  <data type="primary">
    <checksum type="sha256">3481fff742ac3c5e1d42c46ba5e2190fa956c1a135809dffcd3b5b2fab1749fa</checksum>
    <open-checksum type="sha256">2c25589e1286325700d7c89a660eb340673f25f2f3246e3a8513848532204baa</open-checksum>
    <location href="repodata/3481fff742ac3c5e1d42c46ba5e2190fa956c1a135809dffcd3b5b2fab1749fa-primary.xml.gz"/>
    <timestamp>1619534996</timestamp>
    <size>1642063</size>
    <open-size>16093933</open-size>
  </data>
  <data type="filelists">
    <checksum type="sha256">c52d42f42950c234e7dad96a64fbab2cb4592c828b1dbc2dab120c0af7873f58</checksum>
    <open-checksum type="sha256">428808597100c7cdd389b13a711f267d17a511bb9741ef64ce5f7624a13e8313</open-checksum>
    <location href="repodata/c52d42f42950c234e7dad96a64fbab2cb4592c828b1dbc2dab120c0af7873f58-filelists.xml.gz"/>
    <timestamp>1619534997</timestamp>
    <size>4780143</size>
    <open-size>60105694</open-size>
  </data>
  <data type="other">
    <checksum type="sha256">1eebae42c713d3e61442d5a3611035cbd1a57cee0ae54a48e6ecdf293c4a71eb</checksum>
    <open-checksum type="sha256">7a95833d316d95862ce2fed196a427451e66bb98b5d0282399e9dba27548640e</open-checksum>
    <location href="repodata/1eebae42c713d3e61442d5a3611035cbd1a57cee0ae54a48e6ecdf293c4a71eb-other.xml.gz"/>
    <timestamp>1619534997</timestamp>
    <size>1013567</size>
    <open-size>12109827</open-size>
  </data>
  <data type="primary_db">
    <checksum type="sha256">074099918ed6274fa7094c64f21b9641375cc990e1c6f9114e5c13b51f54a77c</checksum>
    <open-checksum type="sha256">52990b3f0aa68fccad284b82ecf1e6cd6bf944092a1ed53a8e8676ff76df13c2</open-checksum>
    <location href="repodata/074099918ed6274fa7094c64f21b9641375cc990e1c6f9114e5c13b51f54a77c-primary.sqlite.xz"/>
    <timestamp>1619535006</timestamp>
    <size>2792136</size>
    <open-size>18202624</open-size>
    <database_version>10</database_version>
  </data>
  <data type="filelists_db">
    <checksum type="sha256">eec2c6aedf02a63f419492609d752cd972c39277088fd8ea59570dc3a5048a33</checksum>
    <open-checksum type="sha256">192e64d0cca134b8f72d36d2ad7140e67d520f89e7c71177982adead43504720</open-checksum>
    <location href="repodata/eec2c6aedf02a63f419492609d752cd972c39277088fd8ea59570dc3a5048a33-filelists.sqlite.xz"/>
    <timestamp>1619535008</timestamp>
    <size>4156080</size>
    <open-size>29370368</open-size>
    <database_version>10</database_version>
  </data>
  <data type="other_db">
    <checksum type="sha256">0e9833635c03f59c9cf5c012843500c185385db70a3b8f5ed042e66849303a62</checksum>
    <open-checksum type="sha256">8cb2555d51d34b3796bc1fa6c09bab4fdca4c0309e2c0c7ecfeb1c1e29ba8f38</open-checksum>
    <location href="repodata/0e9833635c03f59c9cf5c012843500c185385db70a3b8f5ed042e66849303a62-other.sqlite.xz"/>
    <timestamp>1619535002</timestamp>
    <size>1118508</size>
    <open-size>11268096</open-size>
    <database_version>10</database_version>
  </data>
  <data type="group">
    <checksum type="sha256">751019aa91884285a99d1a62a8c653a3ce41fb4e235f11077c3de52925e16ef7</checksum>
    <location href="repodata/751019aa91884285a99d1a62a8c653a3ce41fb4e235f11077c3de52925e16ef7-comps-AppStream.x86_64.xml"/>
    <timestamp>1619534785</timestamp>
    <size>467425</size>
  </data>
  <data type="group_gz">
    <checksum type="sha256">7b3e68b8ce7cbaf431e311014e097b99390465ce660eebdf3bd469524aea8059</checksum>
    <open-checksum type="sha256">751019aa91884285a99d1a62a8c653a3ce41fb4e235f11077c3de52925e16ef7</open-checksum>
    <location href="repodata/7b3e68b8ce7cbaf431e311014e097b99390465ce660eebdf3bd469524aea8059-comps-AppStream.x86_64.xml.xz"/>
    <timestamp>1619534997</timestamp>
    <size>79032</size>
    <open-size>467425</open-size>
  </data>
  <data type="modules">
    <checksum type="sha256">2c3714db39642790c8a1922c6cae04e7b95af59b234af60f15778d5550e3a546</checksum>
    <open-checksum type="sha256">0f5b4984a0bef9cd69a8461026e89022e35cef8853217a825fafbfd104593c72</open-checksum>
    <location href="repodata/2c3714db39642790c8a1922c6cae04e7b95af59b234af60f15778d5550e3a546-modules.yaml.gz"/>
    <timestamp>1619535014</timestamp>
    <size>68489</size>
    <open-size>463990</open-size>
  </data>
</repomd>
  07070100000114000081B40000000000000000000000016290A0C10000032B000000000000000000000000000000000000004400000000spacewalk-backend/satellite_tools/test/unit/repodata/repomd.xml.asc   -----BEGIN PGP SIGNATURE-----
Version: GnuPG v1

iQIVAwUAYIg1JQW1VbOEg8ZdAQhj4g//UlCzs4S7JLVv1UtLbnFLq671masVRcJY
FF5BwtC1Wj252Zdr++o6TLTEMHwV4MbJ9yixM4D8FTe4tq6+p5RTYpmLcpt6JL1J
6hsNcbzrxDJG7O/LQs8f1Dk/p0hbl/4IBHKoBz301CaraDTWqS+naUYVW+1knTEB
7F0DeliZRwnpn8F5vPAEZ2hlo+xHUzynEV6iUP0Bj/7Gort70xOGgx3HSG/IK9Lg
xSP5BlPBeTuWDxgtE6cVCbMcIPpWRnJiiohr0938KcTsfF4A8X3iQykN8qOTutHO
Q7I5gXFQjPZnsNh7dzKCi1B7WD/DcwkGixGqHaicpxEZdA9lI8HKvmkJ/udDjhT3
PsKMM54jf8ZELGzV8+OaVzINFsovr3/BHw/YRWRGJBDRbcLG4f/GIYuZ6EVtwMuG
zgWUTz9wYo8WntGl+b7yC5tU0EXbBl0ftMP3Wtv/JLx46oukCNlDsttKgbxjphCc
ojW87ME5ohzqShaIsvCWuTC2xEjkGiuKNPz6BfJhTgGLZddwpZbwC1MgRr5TBNNG
j4Hd1HGRBeSKA+4HIgrvskWaOEvkCPA8ulgXda08Ku/BregQ2N5eCGjjm7QKJ71E
qcDmojUaRdTIiN3LOZC3IMmFEYyDVceaCroZJAdi0NaRHwesG6xQOGvNsPu7Z7tg
9pBAyh1tTQw=
=TN5t
-----END PGP SIGNATURE-----
 07070100000115000081B40000000000000000000000016290A0C10000077B000000000000000000000000000000000000003D00000000spacewalk-backend/satellite_tools/test/unit/test_download.py  #!/usr/bin/python3
#
# Copyright (c) 2021 SUSE LLC
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.

from mock import Mock, patch

from spacewalk.satellite_tools.download import ThreadedDownloader, pycurl


class NoKeyErrorsDict(dict):
    """Like a dict that is only accessed by .get(key)"""

    def __getitem__(self, key):
        return super().get(key)


# this initCFG also operates on spacewalk.common.rhnConfig.CFG
@patch("spacewalk.satellite_tools.download.initCFG", Mock())
@patch("spacewalk.satellite_tools.download.log", Mock())  # no logging
@patch("urlgrabber.grabber.PyCurlFileObject._do_grab", Mock())  # no downloads
@patch("urlgrabber.grabber.PyCurlFileObject.close", Mock())  # no need to close files
@patch("spacewalk.satellite_tools.download.os.path.isfile", Mock(return_value=False))
def test_reposync_timeout_minrate_are_passed_to_curl():
    # only provide needed params with dummy data, the rest is "None"
    params = NoKeyErrorsDict({"http_headers": dict(), "urls": ["http://example.com"]})

    CFG = Mock()
    CFG.REPOSYNC_TIMEOUT = 42
    CFG.REPOSYNC_MINRATE = 42
    CFG.REPOSYNC_DOWNLOAD_THREADS = 42 # Throws ValueError if not defined

    curl_spy = Mock()

    with patch(
        "spacewalk.satellite_tools.download.pycurl.Curl", Mock(return_value=curl_spy)
    ), patch("spacewalk.satellite_tools.download.CFG", CFG):

        td = ThreadedDownloader(force=True)
        td.add(params)
        td.run()

        curl_spy.setopt.assert_any_call(pycurl.LOW_SPEED_LIMIT, 42)
        curl_spy.setopt.assert_any_call(pycurl.LOW_SPEED_TIME, 42)
 07070100000116000081B40000000000000000000000016290A0C100009F11000000000000000000000000000000000000003D00000000spacewalk-backend/satellite_tools/test/unit/test_reposync.py  #!/usr/bin/env python
# -*- coding: utf-8 -*-
#
# Copyright (c) 2011 SUSE LLC
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.

import imp
import sys
import unittest
import json
try:
    from io import StringIO
except ImportError:
    from StringIO import StringIO
from datetime import datetime, timedelta

from mock import Mock, patch, call

import spacewalk.satellite_tools.reposync
from spacewalk.satellite_tools.repo_plugins import ContentPackage
from spacewalk.satellite_tools.repo_plugins import yum_src
from spacewalk.server.importlib import importLib

from uyuni.common import rhn_rpm

RTYPE = 'yum' # a valid repotype

class RepoSyncTest(unittest.TestCase):

    def setUp(self):
        self.reposync = spacewalk.satellite_tools.reposync

        # kill logging
        self.reposync.rhnLog.initLOG = Mock()

        # catching stdout
        # this could be assertRaisesRegexp in python>=2.7. just sayin'
        self.saved_stdout = sys.stdout
        self.stdout = StringIO()
        sys.stdout = self.stdout

        # catching stderr
        self.saved_stderr = sys.stderr
        self.stderr = StringIO()
        sys.stderr = self.stderr

        self.reposync.os = Mock()
        self.reposync.rhnSQL.initDB = Mock()
        self.reposync.rhnSQL.commit = Mock()

        _mock_rhnsql(
            self.reposync,
            [
              [{'id': 'id1', 'repo_label': 'label1', 'source_url': 'http://url.one', 'metadata_signed': 'Y', 'repo_type': 'yum'}],
              [{'id': 'id2', 'repo_label': 'label2', 'source_url': 'http://url.two', 'metadata_signed': 'N', 'repo_type': 'yum'}],
            ]
        )

    def tearDown(self):
        self.stdout.close()
        sys.stdout = self.saved_stdout

        self.stderr.close()
        sys.stderr = self.saved_stderr

        imp.reload(spacewalk.satellite_tools.reposync)

    def test_init_succeeds_with_correct_attributes(self):
        rs = self._init_reposync('Label', RTYPE)

        self.assertEqual(rs.channel_label, 'Label')

        # these should have been set automatically
        self.assertEqual(rs.fail, False)
        self.assertEqual(rs.interactive, True)

    def test_init_with_custom_url(self):
        rs = self._init_reposync('Label', RTYPE, url='http://example.com')

        self.assertEqual(rs.urls, [{'source_url': 'http://example.com',
                                    'repo_label': None,
                                    'id': None,
                                    'metadata_signed': 'N',
                                    'repo_type': 'yum'
                                  }])

    def test_init_with_custom_flags(self):
        rs = self._init_reposync('Label', RTYPE, fail=True, noninteractive=True)

        self.assertEqual(rs.fail, True)
        self.assertEqual(rs.interactive, False)

    def test_init_wrong_url(self):
        """Test generates empty metadata via taskomatic and quits"""
        # the channel shouldn't be found in the database
        _mock_rhnsql(self.reposync, False)
        self.reposync.taskomatic.add_to_repodata_queue_for_channel_package_subscription = Mock()

        channel = {'org_id':1, 'id':1, 'arch': 'arch1'}
        self.reposync.RepoSync.load_channel = Mock(return_value=channel)

        self.assertRaises(SystemExit, self.reposync.RepoSync, 'WrongLabel', RTYPE)

        self.assertTrue(self.reposync.taskomatic.
                        add_to_repodata_queue_for_channel_package_subscription.
                        called)

    def test_init_rhnlog(self):
        """Init rhnLog successfully"""
        rs = self._init_reposync('Label', RTYPE)

        self.assertTrue(self.reposync.rhnLog.initLOG.called)

    def test_init_channel(self):
        self.reposync.rhnChannel.channel_info = Mock(return_value=
                                                {'name': 'mocked Channel',
                                                 'id': 1,
                                                 'org_id': 1})
        self.reposync.RepoSync.get_compatible_arches = Mock(return_value=['arch1', 'arch2'])

        rs = self.reposync.RepoSync('Label', RTYPE)

        self.assertEqual(rs.channel, {'name': 'mocked Channel', 'id': 1, 'org_id': 1})

    def test_init_bad_channel(self):
        self.reposync.rhnChannel.channel_info = Mock(return_value=None)

        self.assertRaises(SystemExit, self.reposync.RepoSync, 'Label', RTYPE)

    def test_bad_repo_type(self):
        rs = self._init_reposync('Label', RTYPE)
        self.assertRaises(SystemExit, rs.load_plugin, 'bad-repo-type')
        self.assertIn("Repository type bad-repo-type is not supported. "
                      "Could not import "
                      "spacewalk.satellite_tools."
                      "repo_plugins.bad-repo-type_src.\n",
                      self.stderr.getvalue())

    def test_sync_success_no_regen(self):
        rs = self._init_reposync()

        rs.urls = [
          {"source_url": ["http://none.host/bogus-url"], "id": 42, "metadata_signed": "N", "repo_label": None, 'repo_type': 'yum'}]

        _mock_rhnsql(self.reposync, None)
        rs = self._mock_sync(rs)
        rs.sync()

        self.assertEqual(rs.repo_plugin.call_args[0],
                (('http://none.host/bogus-url', 'bogus-url', True, True)))

        self.assertEqual(rs.import_packages.call_args,
                ((rs.mocked_plugin, 42, "http://none.host/bogus-url", 1), {}))
        self.assertEqual(rs.import_updates.call_args,
                ((rs.mocked_plugin,), {}))
        self.assertEqual(rs.import_products.call_args,
                ((rs.mocked_plugin,), {}))

        # for the rest just check if they were called or not
        self.assertTrue(rs.update_date.called)
        # these aren't supposed to be called unless self.regen is True
        self.assertFalse(self.reposync.taskomatic.add_to_repodata_queue_for_channel_package_subscription.called)
        self.assertFalse(self.reposync.taskomatic.add_to_erratacache_queue.called)

    def test_sync_success_regen(self):
        rs = self._init_reposync()

        rs.urls = [{"source_url": ["http://none.host/bogus-url"], "id": 42, "metadata_signed": "N", "repo_label": None, 'repo_type': 'yum'}]

        _mock_rhnsql(self.reposync, {})
        rs = self._mock_sync(rs)
        rs.regen = True
        rs.sync()

        self.assertEqual(self.reposync.taskomatic.add_to_repodata_queue_for_channel_package_subscription.call_args,
                         ((["Label"], [], "server.app.yumreposync"), {}))
        self.assertEqual(self.reposync.taskomatic.add_to_erratacache_queue.call_args,
                         (("Label", ), {}))

    def test_sync_raises_channel_timeout(self):
        rs = self._create_mocked_reposync()

        exception = self.reposync.ChannelTimeoutException("anony-error")
        rs.load_plugin = Mock(return_value=Mock(side_effect=exception))
        rs.sendErrorMail = Mock()

        etime, ret = rs.sync()
        self.assertEqual(-1, ret)
        self.assertEqual(rs.sendErrorMail.call_args,
                         (("anony-error", ), {}))
        self.assertEqual(self.reposync.log.call_args[0][1], exception)

    def test_sync_raises_unexpected_error(self):
        rs = self._create_mocked_reposync()

        rs.load_plugin = Mock(return_value=Mock(side_effect=TypeError))
        rs.sendErrorMail = Mock()
        etime, ret = rs.sync()
        self.assertEqual(-1, ret)

        error_string = self.reposync.log.call_args[0][1]
        assert (error_string.startswith('Traceback') and
                'TypeError' in error_string), (
            "The error string does not contain the keywords "
            "'Traceback' and 'TypeError':\n %s\n---end of assert" % error_string)

    def test_update_bugs(self):
        notice = {'references': [{'type': 'bugzilla',
                                  'id': '12345',
                                  'title': 'title1',
                                  'href': 'href1'},
                                 {'type': 'bugzilla',
                                  'id': 'string_id',
                                  'title': 'title2',
                                  'href': 'href2',
                                  'this': 'non-integer bz ids should be skipped'},
                                 {'type': 'bugzilla',
                                  'id': 'string_id',
                                  'title': 'title3',
                                  'href': 'http://dummyhost/show_bug.cgi?id=11111',
                                  'this': 'bz id parsed from href'},
                                 {'type': 'bugzilla',
                                  'id': '54321',
                                  'title': 'title2',
                                  'href': 'href2'},
                                 {'type': 'bugzilla',
                                  'id': '54321',
                                  'title': 'duplicate_id',
                                  'href': 'duplicate_id'},
                                 {'type': 'godzilla',
                                  'this': 'should be skipped'}]}
        bugs = self.reposync.RepoSync._update_bugs(notice)

        bug_values = [set(['12345', 'title1', 'href1']),
                      set(['54321', 'title2', 'href2']),
                      set(['11111', 'title3', 'http://dummyhost/show_bug.cgi?id=11111'])]

        self.assertEqual(len(bugs), 3)
        for bug in bugs:
            self.assertCountEqual(list(bug.keys()), ['bug_id', 'href', 'summary'])
            assert set(bug.values()) in bug_values, (
                "Bug set(%s) not in %s" % (list(bug.values()), bug_values))

    def test_update_cves(self):
        notice = {'references': [{'type': 'cve',
                                  'id': "CVE-1234-5678"},
                                 {'type': 'cve',
                                  'id': "CVE-1234-123456"},
                                 {'type': 'cve',
                                  'id': "CVE-1234-5678"},
                                 {'type': 'this should be skipped'}],
                  'description': None}
        cves = self.reposync.RepoSync._update_cve(notice)

        self.assertCountEqual(cves, ["CVE-1234-5678", "CVE-1234-123456"])

    def test_update_cves_with_description(self):
        notice = {'references': [{'type': 'cve',
                                  'id': "CVE-1234-5678"},
                                 {'type': 'cve',
                                  'id': "CVE-1234-1234"},
                                 {'type': 'cve',
                                  'id': "CVE-1234-5678"},
                                 {'type': 'this should be skipped'}],
                  'description': 'This is a text with two CVE numbers CVE-1234-5678, CVE-1234-567901'}
        cves = self.reposync.RepoSync._update_cve(notice)

        self.assertCountEqual(cves, ["CVE-1234-567901", "CVE-1234-5678", "CVE-1234-1234"])


    def test_update_keywords_reboot(self):
        notice = {'reboot_suggested': True,
                  'restart_suggested': False}

        keyword = self.reposync.importLib.Keyword()
        keyword.populate({'keyword': 'reboot_suggested'})
        self.assertEqual(self.reposync.RepoSync._update_keywords(notice),
                         [keyword])

    def test_update_keywords_restart(self):
        notice = {'reboot_suggested': False,
                  'restart_suggested': True}

        keyword = self.reposync.importLib.Keyword()
        keyword.populate({'keyword': 'restart_suggested'})
        self.assertEqual(self.reposync.RepoSync._update_keywords(notice),
                         [keyword])

    def test_update_keywords_restart_and_reboot(self):
        notice = {'reboot_suggested': True,
                  'restart_suggested': True}

        keyword_restart = self.reposync.importLib.Keyword()
        keyword_restart.populate({'keyword': 'restart_suggested'})
        keyword_reboot = self.reposync.importLib.Keyword()
        keyword_reboot.populate({'keyword': 'reboot_suggested'})
        self.assertEqual(self.reposync.RepoSync._update_keywords(notice),
                         [keyword_reboot, keyword_restart])

    def test_update_keywords_both_false(self):
        notice = {'reboot_suggested': False,
                  'restart_suggested': False}

        self.assertEqual(self.reposync.RepoSync._update_keywords(notice),
                         [])

    def test_send_error_mail(self):
        rs = self._create_mocked_reposync()
        self.reposync.rhnMail.send = Mock()
        self.reposync.CFG.TRACEBACK_MAIL = 'recipient'
        self.reposync.hostname = 'testhost'

        rs.sendErrorMail('email body')

        self.assertEqual(self.reposync.rhnMail.send.call_args, (
                ({'To': 'recipient',
                  'From': 'testhost <recipient>',
                  'Subject': "SUSE Manager repository sync failed (testhost)"},
                 "Syncing Channel 'Label' failed:\n\nemail body"), {}))

    def test_updates_process_packages_simple(self):
        rs = self._create_mocked_reposync()

        packages = [{'name': 'n1',
                     'version': 'v1',
                     'release': 'r1',
                     'arch': 'arch1',
                     'channel_label': 'l1',
                     'epoch': []},
                    {'name': 'n2',
                     'version': 'v2',
                     'release': 'r2',
                     'arch': 'arch2',
                     'channel_label': 'l2',
                     'epoch': 'e2'}]
        checksum = {'epoch': None,
                    'checksum_type': None,
                    'checksum': None,
                    'id': None}

        _mock_rhnsql(self.reposync, checksum)
        processed = rs._updates_process_packages(packages, 'a name', [])
        for p in processed:
            self.assertTrue(isinstance(p, self.reposync.importLib.IncompletePackage))

    def test_updates_process_packages_returns_the_right_values(self):
        rs = self._create_mocked_reposync()

        packages = [{'name': 'n1',
                     'version': 'v1',
                     'release': 'r1',
                     'arch': 'arch1',
                     'epoch': []},
                    {'name': 'n2',
                     'version': 'v2',
                     'release': 'r2',
                     'arch': 'arch2',
                     'epoch': 'e2'}]

        checksum = {'epoch': 'cs_epoch',
                    'checksum_type': 'md5',
                    'checksum': '12345',
                    'id': 'cs_package_id'}

        _mock_rhnsql(self.reposync, checksum)
        processed = rs._updates_process_packages(packages, 'patchy', [])

        p1 = self.reposync.importLib.IncompletePackage()
        p1.populate({'package_size': None,
                     'name': 'n1',
                     'checksum_list': None,
                     'md5sum': None,
                     'org_id': 1,
                     'epoch': 'cs_epoch',
                     'channels': None,
                     'package_id': 'cs_package_id',
                     'last_modified': None,
                     'version': 'v1',
                     'checksum_type': 'md5',
                     'release': 'r1',
                     'checksums': {'md5': '12345'},
                     'checksum': '12345',
                     'arch': 'arch1'})
        p2 = self.reposync.importLib.IncompletePackage()
        p2.populate({'package_size': None,
                     'name': 'n2',
                     'checksum_list': None,
                     'md5sum': None,
                     'org_id': 1,
                     'epoch': 'cs_epoch',
                     'channels': None,
                     'package_id': 'cs_package_id',
                     'last_modified': None,
                     'version': 'v2',
                     'checksum_type': 'md5',
                     'release': 'r2',
                     'checksums': {'md5': '12345'},
                     'checksum': '12345',
                     'arch': 'arch2'})
        fixtures = [p1, p2]
        for pkg, fix in zip(processed, fixtures):
            self.assertEqual(pkg, fix)

    def test_updates_process_packages_checksum_not_found(self):
        rs = self._create_mocked_reposync()

        packages = [{'name': 'n2',
                     'version': 'v2',
                     'release': 'r2',
                     'arch': 'arch2',
                     'channel_label': 'l2',
                     'epoch': 'e2'}]
        ident = "%(name)s-%(epoch)s:%(version)s-%(release)s.%(arch)s" % packages[0]
        rs.available_packages[ident] = 1

        _mock_rhnsql(self.reposync, [])
        self.assertEqual(rs._updates_process_packages(packages, 'patchy', []),
                         [])
        self.assertEqual(self.reposync.log.call_args[0][1],
                "The package n2-e2:v2-r2.arch2 "
                "which is referenced by patch patchy was not found "
                "in the database. This patch has been skipped.")

    def test_updates_process_packages_checksum_not_found_no_epoch(self):
        rs = self._create_mocked_reposync()

        packages = [{'name': 'n1',
                     'version': 'v1',
                     'release': 'r1',
                     'arch': 'arch1',
                     'channel_label': 'l1',
                     'epoch': '' }]
        ident = "%(name)s-%(epoch)s%(version)s-%(release)s.%(arch)s" % packages[0]
        rs.available_packages[ident] = 1

        _mock_rhnsql(self.reposync, [])
        self.assertEqual(rs._updates_process_packages(packages, 'patchy', []),
                         [])
        self.assertEqual(self.reposync.log.call_args[0][1],
                "The package n1-v1-r1.arch1 "
                "which is referenced by patch patchy was not found "
                "in the database. This patch has been skipped.")

    def test_updates_process_packages_checksum_not_found_but_not_available(self):
        rs = self._create_mocked_reposync()

        packages = [{'name': 'n1',
                     'version': 'v1',
                     'release': 'r1',
                     'arch': 'arch1',
                     'channel_label': 'l1',
                     'epoch': '' }]

        _mock_rhnsql(self.reposync, [])
        self.assertEqual(rs._updates_process_packages(packages, 'patchy', []),
                         [])
        self.assertEqual(self.reposync.log.call_args, None)

    # RedHat has errata with empty package list
    # they removed the check - therefor this is disabled too
    #def test_upload_updates_referenced_package_not_found(self):
    #    timestamp1 = datetime.now().isoformat(' ')
    #    notices = [{'from': 'from1',
    #                'update_id': 'update_id1',
    #                'version': 'version1',
    #                'type': 'security',
    #                'severity': 'Low',
    #                'release': 'release1',
    #                'description': 'description1',
    #                'title': 'title1',
    #                'issued': timestamp1, # we mock _to_db_date anyway
    #                'updated': timestamp1,
    #                'pkglist': [{'packages': []}],
    #                'reboot_suggested': False,
    #                'restart_suggested': False,
    #                'references': None,
    #                }]
    #    self.reposync._to_db_date = Mock(return_value=timestamp1)

    #    # no packages related to this errata makes the ErrataImport be called
    #    # with an empty list
    #    self.reposync.RepoSync._updates_process_packages = Mock(return_value=[])
    #    self.reposync.get_errata = Mock(return_value=None)

    #    mocked_backend = Mock()
    #    self.reposync.SQLBackend = Mock(return_value=mocked_backend)
    #    self.reposync.ErrataImport = Mock()

    #    rs = self._create_mocked_reposync()
    #    rs._patch_naming = Mock(return_value='package-name')

    #    rs.upload_updates(notices)

    #    self.assertEqual(self.reposync.ErrataImport.call_args, None)

    def test_associate_package(self):
        pack = ContentPackage()
        pack.setNVREA('name1', 'version1', 'release1', 'epoch1', 'arch1')
        pack.unique_id = 1
        pack.a_pkg = rhn_rpm.RPM_Package(None)
        pack.a_pkg.checksum = 'checksum1'
        pack.a_pkg.checksum_type = 'c_type1'
        pack.a_pkg.header = {'epoch': 'epoch1'}
        pack.checksums[1] = 'checksum1'

        mocked_backend = Mock()
        self.reposync.SQLBackend = Mock(return_value=mocked_backend)
        rs = self._create_mocked_reposync()
        rs._importer_run = Mock()
        rs.channel_label = 'Label1'
        rs.channel = {'id': 'channel1', 'org_id': 1}

        package = {'name': 'name1',
                   'version': 'version1',
                   'release': 'release1',
                   'epoch': 'epoch1',
                   'arch': 'arch1',
                   'checksum': 'checksum1',
                   'checksum_type': 'c_type1',
                   'org_id': 1,
                   'channels': [{'label': 'Label1', 'id': 'channel1'}]}
        refpack = importLib.IncompletePackage().populate(package)
        ipack = rs.associate_package(pack)
        self.assertEqual(ipack, refpack)

    def test_get_errata_no_advisories_found(self):
        rs = self._create_mocked_reposync()
        _mock_rhnsql(self.reposync, None)
        self.assertEqual(rs.get_errata('bogus'), None)

    def test_get_errata_advisories_but_no_channels(self):
        rs = self._create_mocked_reposync()
        _mock_rhnsql(self.reposync, [{'id': 42}, []])
        self.assertEqual(rs.get_errata('bogus'),
                         {'channels': [], 'id': 42, 'packages': []})

    def test_get_errata_success(self):
        rs = self._create_mocked_reposync()
        _mock_rhnsql(self.reposync, [{'id': 42}, ['channel1', 'channel2']])
        self.assertEqual(rs.get_errata('bogus'),
                         {'id': 42, 'channels': ['channel1', 'channel2'],
                          'packages': []})

    def test_get_compat_arches(self):
        _mock_rhnsql(self.reposync, ({'label': 'a1'}, {'label':'a2'}))
        self.assertEqual(self.reposync.RepoSync.get_compatible_arches(None),
                         ['a1', 'a2'])

    def test_set_repo_credentials_no_credentials(self):
        url = {'source_url': "http://example.com"}
        rs = self._create_mocked_reposync()

        rs.set_repo_credentials(url)
        self.assertEqual(url['source_url'], "http://example.com")

    def test_set_repo_credentials_old_default_credentials_bad(self):
        url = {
            "source_url": [
                "http://example.com/?credentials=testcreds"
            ]
        }
        rs = self._create_mocked_reposync()
        self.assertRaises(SystemExit, rs.set_repo_credentials, url)

    def test_set_repo_credentials_bad_credentials(self):
        rs = self._init_reposync()
        rs.error_msg = Mock()
        url = {
            "source_url": [
                "http://example.com/?credentials=bad_creds_with_underscore"
            ]
        }
        self.assertRaises(SystemExit, rs.set_repo_credentials, url)

    def test_set_repo_credentials_number_credentials(self):
        rs = self._create_mocked_reposync()
        url = {
            "source_url": [
                "http://example.com/?credentials=testcreds_42"
            ]
        }
        _mock_rhnsql(self.reposync, [{ 'username' : 'foo', 'password': 'c2VjcmV0' }])
        self.assertEqual(
            rs.set_repo_credentials(url), ["http://foo:secret@example.com/"])

    def test_is_old_style(self):
        """
        Test for _is_old_suse_style
        """
        notice = {'from': 'maint-coord@suse.de',
                  'version': '1111',
                  'update_id': 'sles-kernel-default'}
        self.assertTrue(self.reposync.RepoSync._is_old_suse_style(notice))

        notice = {'from': 'maint-coord@suse.de',
                  'version': '7',
                  'update_id': 'res5ct-kernel-default'}
        self.assertTrue(self.reposync.RepoSync._is_old_suse_style(notice))

        notice = {'from': 'maint-coord@suse.de',
                  'version': '1',
                  'update_id': 'sles-kernel-default'}
        self.assertFalse(self.reposync.RepoSync._is_old_suse_style(notice))

        notice = {'from': 'maint-coord@suse.de',
                  'version': '6',
                  'update_id': 'res5ct-kernel-default'}
        self.assertFalse(self.reposync.RepoSync._is_old_suse_style(notice))

    def test_to_db_date(self):
        """
        Test for _to_db_date
        """
        # Unsure datetime.fromtimestamp is always returning UTC times
        class DateTimeMock(datetime):
            @classmethod
            def fromtimestamp(cls, timestamp):
                return cls.utcfromtimestamp(timestamp)

        with patch("spacewalk.satellite_tools.reposync.datetime", DateTimeMock):
            self.assertEqual(self.reposync.RepoSync._to_db_date('2015-01-02 01:02:03'), '2015-01-02 01:02:03')
            self.assertEqual(self.reposync.RepoSync._to_db_date('1420160523'), '2015-01-02 01:02:03')
            self.assertEqual(self.reposync.RepoSync._to_db_date('2015-01-02'), '2015-01-02 00:00:00')
            self.assertEqual(self.reposync.RepoSync._to_db_date('2015-09-02 13:39:49 UTC'), '2015-09-02 13:39:49')
            self.assertEqual(self.reposync.RepoSync._to_db_date('2015-01-02T02:02:03+0100'), '2015-01-02 01:02:03')
            self.assertRaises(ValueError, self.reposync.RepoSync._to_db_date, '2015-01-02T01:02:03+nonsense')

    def _init_reposync(self, label="Label", repo_type=RTYPE, **kwargs):
        """Initialize the RepoSync object with some mocked attrs"""
        self.reposync.RepoSync.get_compatible_arches = Mock(
            return_value=['arch1', 'arch2'])
        channel = {'org_id':1, 'id':1, 'arch': 'arch1'}
        self.reposync.RepoSync.load_channel = Mock(return_value=channel)
        rs = self.reposync.RepoSync(label, repo_type, **kwargs)
        return rs

    def _create_mocked_reposync(self):
        """Create a fully mocked RepoSync"""
        rs = self._init_reposync()
        rs.urls = [{'id': None, "source_url": ["http://none.host/bogus-url"], "metadata_signed": "N", "repo_label": None, 'repo_type': 'yum'}]
        rs = self._mock_sync(rs)

        return rs

    def _mock_sync(self, rs):
        """Mock a lot of the methods that are called during sync()

        erratum = reposync.Erratum()
        erratum.populate({'advisory_name': 'update_id1-version1-arch',
                          'advisory': 'update_id1-version1-arch',
                          'product': 'release1',
                          'description': 'description1',
                          'errata_from': 'from1',
                          'locally_modified': None,
                          'refers_to': '',
                          'solution': ' ',
                          'topic': ' ',
                          'last_modified': None,
                          'keywords': [],
                          'packages': [True],
                          'files': [],
                          'advisory_type': 'Security Advisory',
                          'advisory_status': 'final',
                          'issue_date': timestamp1,
                          'notes': '',
                          'org_id': 1,
                          'bugs': [],
                          'advisory_rel': 'version1',
                          'synopsis': 'title1',
                          'cve': [],
                          'update_date': timestamp2,
                          'channels': [{'label': 'Label'}]})
        self.assertEqual(reposync.ErrataImport.call_args,
                         (([erratum], mocked_backend), {}))
        :rs: RepoSync object on which we're going to call sync() later

        """
        rs.import_packages = Mock(return_value=0)
        rs.import_updates = Mock()
        rs.import_products = Mock()
        rs.import_susedata = Mock()
        rs.import_groups = Mock()
        rs.import_mediaproducts = Mock()
        rs.import_modules = Mock()
        self.reposync.taskomatic.add_to_repodata_queue_for_channel_package_subscription = Mock()
        self.reposync.taskomatic.add_to_erratacache_queue = Mock()
        self.reposync.log = Mock()

        rs.mocked_plugin = Mock()
        rs.mocked_plugin.num_packages = 0
        rs.load_plugin = Mock(return_value=Mock(return_value=rs.mocked_plugin))

        rs.update_date = Mock()

        self.reposync.initCFG = Mock()
        self.reposync.CFG = Mock()
        self.reposync.CFG.MOUNT_POINT = '/tmp'
        self.reposync.CFG.PREPENDED_DIR = ''
        self.reposync.CFG.AUTO_GENERATE_BOOTSTRAP_REPO = 1
        self.reposync.fileutils.createPath = Mock()
        self.reposync.os.walk = Mock(return_value=[])
        self.reposync.subprocess.call = Mock()
        return rs


class SyncTest(unittest.TestCase):

    def setUp(self):
        module_patcher = patch.multiple(
            'spacewalk.satellite_tools.reposync',
            rhnSQL=Mock()
        )
        class_patcher = patch.multiple(
            'spacewalk.satellite_tools.reposync.RepoSync',
            load_channel=Mock(
                return_value=dict(id="1", org_id=1, label="label#1")
            ),
            get_compatible_arches=Mock(),
            load_plugin=Mock(),
            import_packages=Mock(return_value=0),
            import_groups=Mock(),
            import_mediaproducts=Mock(),
            import_modules=Mock(),
            import_updates=Mock(),
            import_products=Mock(),
            import_susedata=Mock()
        )
        module_patcher.start()
        class_patcher.start()
        self.addCleanup(module_patcher.stop)
        self.addCleanup(class_patcher.stop)

    def test_pass_multiple_urls_params(self):
        from spacewalk.satellite_tools.reposync import RepoSync
        urls = ['http://some.url', 'http://some-other.url']
        repo_sync = RepoSync(
            channel_label="channel-label",
            repo_type=RTYPE,
            url=urls
        )
        repo_sync.sync()

    @patch('spacewalk.satellite_tools.reposync.RepoSync._url_with_repo_credentials')
    def test_set_repo_credentials_with_multiple_urls(self, mocked_method):
        from spacewalk.satellite_tools.reposync import RepoSync
        urls = ['http://some.url', 'http://some-other.url']
        data = {
            'metadata_signed': 'N',
            'repo_label': None,
            'id': None,
            'source_url': urls,
            'repo_type': 'yum'
        }
        repo_sync = RepoSync(
            channel_label="channel-label",
            repo_type=RTYPE,
            url=urls
        )
        repo_sync.set_repo_credentials(data)
        self.assertEqual(
            repo_sync._url_with_repo_credentials.call_args_list,
            [call(urls[0]), call(urls[1])]
        )

    def test__url_with_repo_credentials(self):
        import base64
        from spacewalk.satellite_tools.reposync import RepoSync
        credentials_id = 777
        urls = [
            'http://some.url?credentials=abc_%s' % credentials_id,
            'http://some-other.url'
        ]
        repo_sync = RepoSync(
            channel_label="channel-label",
            repo_type=RTYPE,
            url=urls
        )
        username = "user#1"
        password = "pass#1"
        config = {
            'return_value.fetchone_dict.return_value': {
                "username": "user#1",
                "password": base64.encodestring(password.encode()).decode()
            }
        }
        patcher = patch(
            'spacewalk.satellite_tools.reposync.rhnSQL.prepare', **config
        )
        with patcher as mock_prepare:
            self.assertEqual(
                repo_sync._url_with_repo_credentials(urls[0]),
                'http://{0}:{1}@some.url'.format(username, password)
            )
            mock_prepare.assert_called_once_with(
                'SELECT username, password FROM suseCredentials WHERE id = :id'
            )
            mock_prepare().execute.assert_called_once_with(id=credentials_id)

    def test_rhnSQL_should_return_source_urls_as_list(self):
        from spacewalk.satellite_tools.reposync import RepoSync
        url1 = 'http://url.one'
        url2 = 'http://url.two'
        patcher = patch(
            'spacewalk.satellite_tools.reposync.rhnSQL.prepare',
            **{
                'return_value.fetchall_dict.return_value': [
                    {
                        'metadata_signed': 'N',
                        'repo_label': 'channel-label-1',
                        'id': 508,
                        'source_url': url1,
                        'repo_type': 'yum'
                    },
                    {
                        'metadata_signed': 'Y',
                        'repo_label': 'channel-label-2',
                        'id': 509,
                        'source_url': url2,
                        'repo_type': 'yum'
                    }
                ]
            }
        )
        with patcher as mock_prepare:
            repo_sync = RepoSync(
                channel_label="channel-label",
                repo_type=RTYPE
            )
            self.assertEqual(
                repo_sync.urls,
                [
                    {
                        'metadata_signed': 'N',
                        'repo_label': 'channel-label-1',
                        'id': 508,
                        'source_url': [url1],
                        'repo_type': 'yum'
                    },
                    {
                        'metadata_signed': 'Y',
                        'repo_label': 'channel-label-2',
                        'id': 509,
                        'source_url': [url2],
                        'repo_type': 'yum'
                    }
                ]
            )


class RunScriptTest(unittest.TestCase):

    @classmethod
    def setUpClass(cls):
        cls.repo_sync = imp.load_source(
            'repo_sync',
            '/manager/backend/satellite_tools/spacewalk-repo-sync')

    def setUp(self):
        config = dict(
            os=Mock(**{'getuid.return_value': 0}),
            open=Mock(
                return_value=StringIO(
					json.dumps(
						{
							"no_errata": False,
							"sync_kickstart": False,
							"fail": True,
							"channel": {
								"chann_1": [
									"http://example.com/repo1",
									"http://example.com/repo2"
								],
								"chann_2": []
							}
						}
					)
                )
            ),
            rhnLockfile=Mock(),
            releaseLOCK=Mock(),
            OptionParser=Mock(
                **{
                    'return_value.parse_args.return_value': [
                        Mock(
                            # options
                            list=None,
                            dry_run=False,
                            config="example.conf",
                            channel_label=[],
                            parent_label=None,
                            batch_size=None
                        ),
                        []
                    ]
                }
            ),
            reposync=Mock(
                **{
                    'getCustomChannels.return_value': ['chann_1', 'chann_2'],
                    'getChannelRepo.return_value': {
                        'chann_1': 'abc',
                        'chann_2': 'def'
                    },
                    'RepoSync.return_value.sync.return_value': (timedelta(), 0)
                }
            ),
            systemExit=Mock(side_effect=[SystemExit])
        )
        patcher = patch.multiple('repo_sync', **config)
        patcher.start()
        self.addCleanup(patcher.stop)

    def test_config_parameter_channel_not_list(self):
        self.repo_sync.open.return_value = StringIO(
            json.dumps(
                {
                    "no_errata": False,
                    "sync_kickstart": False,
                    "fail": True,
                    "channel": {"chann_1": "http://example.com/repo1"}
                }
            )
        )
        self.assertRaises(SystemExit, self.repo_sync.main)
        self.repo_sync.systemExit.assert_called_once_with(
            1,
            "Configuration file is invalid, chann_1's value needs to be a list."
        )

    def test_config_parameter_channel_as_list(self):
        self.repo_sync.CFG = Mock()
        self.repo_sync.CFG.DEBUG = 3
        self.repo_sync.CFG.AUTO_GENERATE_BOOTSTRAP_REPO = 1
        self.repo_sync.main()
        self.assertEqual(self.repo_sync.reposync.RepoSync.call_count, 2)


def test_channel_exceptions():
    """Test rasising all the different exceptions when syncing"""
    # the only way to write a test generator with nose is if we put it
    # outside the class, so we have to repeat all the Mocks
    repoSync = spacewalk.satellite_tools.reposync
    repoSync.rhnLog.initLOG = Mock()
    repoSync.CFG = repoSync.initCFG = Mock()
    repoSync.CFG.MOUNT_POINT = '/tmp'
    repoSync.CFG.PREPENDED_DIR = ''
    repoSync.CFG.AUTO_GENERATE_BOOTSTRAP_REPO = 1
    repoSync.fileutils.createPath = Mock()
    repoSync.os.walk = Mock(return_value=[])
    backup_os = repoSync.os
    repoSync.os = Mock()
    repoSync.RepoSync._format_sources = Mock()
    repoSync.RepoSync.get_compatible_arches = Mock(return_value=['arch1', 'arch2'])
    rs = repoSync.RepoSync("Label", RTYPE)
    rs.urls = [{'id': None, "source_url": ["http://none.host/bogus-url"], "metadata_signed": "N", "repo_label": None, 'repo_type': 'yum'}]
    rs.import_packages = Mock(return_value=0)
    rs.import_updates = Mock()
    rs.mocked_plugin = Mock()
    rs.log = Mock()
    rs.load_plugin = Mock(return_value=rs.mocked_plugin)
    rs.update_date = Mock()
    rs.sendErrorMail = Mock()
    repoSync.os = backup_os

    for exc_class, exc_name in [
        (repoSync.ChannelException, "ChannelException"),
        (yum_src.RepoMDError, "RepoMDError")]:
        yield check_channel_exceptions, rs, exc_class, exc_name

def check_channel_exceptions(rs, exc_class, exc_name):
    # since this isn't a subclass of unittest.TestCase we can't use
    # unittest's assertions
    from nose.tools import assert_raises, assert_equal
    rs.load_plugin = Mock(return_value=Mock(side_effect=exc_class("error msg")))

    etime, ret = rs.sync()
    assert_equal(-1, ret)
    assert_equal(rs.sendErrorMail.call_args,
                 (("%s: %s" % (exc_name, "error msg"), ), {}))


def _mock_rhnsql(module, return_values):
    """Method to mock the rhnSQL to return something for us

    :module: the module where rhnSQL is called from
    :return_values: a list of the consecutive values that rhnSQL
    fetchall_dict/fetchone_dict will return. If it is just one value,
    then that value will be returned for all calls to those two methods.
    :return_value2: the second rhnSQL fetch will return this value

    rhnSQL's calls are a often a bit more complex. It usually goes
    like this: first an sql statement is prepared, then it is
    executed and then the result is fetched. We need to mock all
    that.

    Here's an example usage:

    query = rhnSQL.prepare('some sql statement')
    query.execute()
    result = query.fetchall_dict()

    """
    def side_effect(*args):
        # Raises or returns each of the values in return_values until exhausted
        # if return_values is not a list, the same value is returned ad infinitum
        if isinstance(return_values, list) and return_values:
            result = return_values.pop(0)
        else:
            result = return_values

        if isinstance(result, Exception):
            raise result
        return result

    # we're making prepare() return an object with methods that
    # return our desired return value
    query = Mock()
    returned_obj = Mock(side_effect=side_effect)
    query.fetchall_dict = query.fetchone_dict = returned_obj
    module.rhnSQL.execute = Mock(return_value=query)
    module.rhnSQL.prepare = Mock(return_value=query)
   07070100000117000081B40000000000000000000000016290A0C100001A1F000000000000000000000000000000000000003800000000spacewalk-backend/satellite_tools/test/unit/test_uln.py   # coding: utf-8
"""
Unit tests for the ULN authentication library.
"""
import sys
import pytest
from unittest.mock import MagicMock, patch

try:
    sys.path.insert(0, __file__.split("/test/unit")[0])
    import ulnauth
except ImportError as ex:
    ulnauth = None


def uln_auth_instance():
    """
    Instantiate ULNAuth.
    """
    return ulnauth.ULNAuth()


def cfg_parser():
    """
    Get cfgparser dummy class
    """
    class CfgParser(dict):
        cfg = {}
        def read(self, path):
            self["main"] = self.cfg

    return CfgParser


@pytest.mark.skipif(ulnauth is None, reason="'ulnauth' failed to be imported")
class TestULNAuth:
    """
    Test ULN auth.
    """
    def setUp(self):
        self.uln_auth_instance = uln_auth_instance()
        self.cfg_parser = cfg_parser()

    def test_get_hostname_uln(self):
        """
        Test ULN uri raises an exception if protocol is not ULN.
        """
        with pytest.raises(ulnauth.RhnSyncException) as exc:
            self.uln_auth_instance.get_hostname("foo://something/else")
        assert "URL must start with 'uln://'" in str(exc)

    def test_get_hostname_default(self):
        """
        Test ULN uri inserts a default hostname, if not specified.
        """
        hostname, path  = self.uln_auth_instance.get_hostname("uln:///suse")
        assert hostname == "https://{}".format(ulnauth.ULNAuth.ULN_DEFAULT_HOST)
        assert path == "suse"

    def test_get_hostname_custom(self):
        """
        Test ULN uri inserts a custom hostname, if specified.
        """
        hostname, path  = self.uln_auth_instance.get_hostname("uln://scc.suse.de/suse")
        assert hostname == "https://scc.suse.de"
        assert path == "suse"

    @patch("os.path.exists", MagicMock(return_value=False))
    @patch("os.access", MagicMock(return_value=False))
    def test_get_credentials_not_found(self):
        """
        Test credentials ULN configuration exists.
        """
        with pytest.raises(ulnauth.RhnSyncException) as exc:
            self.uln_auth_instance.get_credentials()
        assert "'/etc/rhn/spacewalk-repo-sync/uln.conf' does not exists" in str(exc)

    @patch("os.path.exists", MagicMock(return_value=True))
    @patch("os.access", MagicMock(return_value=False))
    def test_get_credentials_access_denied(self):
        """
        Test credentials ULN configuration readable.
        """
        with pytest.raises(ulnauth.RhnSyncException) as exc:
            self.uln_auth_instance.get_credentials()
        assert "Permission denied to '/etc/rhn/spacewalk-repo-sync/uln.conf'" in str(exc)

    @patch("os.path.exists", MagicMock(return_value=True))
    @patch("os.access", MagicMock(return_value=False))
    def test_get_credentials_access_denied(self):
        """
        Test credentials ULN configuration readable.
        """
        with pytest.raises(ulnauth.RhnSyncException) as exc:
            self.uln_auth_instance.get_credentials()
        assert "Permission denied to '/etc/rhn/spacewalk-repo-sync/uln.conf'" in str(exc)

    @patch("os.path.exists", MagicMock(return_value=True))
    @patch("os.access", MagicMock(return_value=True))
    def test_get_credentials_credentials(self):
        """
        Test credentials ULN
        """
        self.cfg_parser.cfg = {"username": "Darth Vader", "password": "f1ndE4rth"}
        with patch("configparser.ConfigParser", self.cfg_parser):
            username, password = self.uln_auth_instance.get_credentials()
            assert username == "Darth Vader"
            assert password == "f1ndE4rth"

    @patch("os.path.exists", MagicMock(return_value=True))
    @patch("os.access", MagicMock(return_value=True))
    def test_get_credentials_credentials_not_found(self):
        """
        Test credentials ULN was not found
        """
        with patch("configparser.ConfigParser", self.cfg_parser):
            with pytest.raises(AssertionError) as exc:
                self.uln_auth_instance.get_credentials()
            assert "Credentials were not found in the configuration" in str(exc)

    @patch("os.path.exists", MagicMock(return_value=True))
    @patch("os.access", MagicMock(return_value=True))
    def test_get_credentials_not_all_credentials_found(self):
        """
        Test partial credentials ULN found
        """
        self.cfg_parser.cfg = {"username": "Darth Vader"}
        with patch("configparser.ConfigParser", self.cfg_parser):
            with pytest.raises(AssertionError) as exc:
                self.uln_auth_instance.get_credentials()
            assert "Credentials were not found in the configuration" in str(exc)

        self.cfg_parser.cfg["password"] = "something"
        del self.cfg_parser.cfg["username"]
        with patch("configparser.ConfigParser", self.cfg_parser):
            with pytest.raises(AssertionError) as exc:
                self.uln_auth_instance.get_credentials()
            assert "Credentials were not found in the configuration" in str(exc)

    @patch("ulnauth.get_proxy", MagicMock(return_value=("https://my_http_proxy", "user", "password")))
    def test_auth_uln(self):
        """
        Authenticate ULN, getting its token.
        """

        class ServerList:
            """
            Dummy server list mock.
            """
            def server(self): pass

        server_list_instance = ServerList()
        server_list = MagicMock(return_value=server_list_instance)
        retry_server_instance = MagicMock()
        retry_server_instance.auth = MagicMock()
        retry_server_instance.auth.login = MagicMock(return_value="12345")
        retry_server = MagicMock(return_value=retry_server_instance)
        uri = "uln:///suse"
        with patch("ulnauth.ServerList", server_list) as srv_lst, patch("ulnauth.RetryServer", retry_server) as rtr_srv:
            self.uln_auth_instance.get_credentials = MagicMock(return_value=("uln_user", "uln_password",))
            token = self.uln_auth_instance.authenticate(uri)
            assert server_list.call_args_list[0][0] == (['https://linux-update.oracle.com/rpc/api'],)
            rs_call = retry_server.call_args_list[0][1]
            for p_name, p_val in {'refreshCallback': None, 'username': 'user',
                          'proxy': 'https://my_http_proxy', 'password': 'password', 'timeout': 5}.items():
                assert p_name in rs_call
                assert rs_call[p_name] == p_val

            assert retry_server_instance.addServerList.call_args_list[0][0] == (server_list_instance,)
            assert token == "12345"
            assert retry_server_instance.auth.login.call_args_list[0][0] == ("uln_user", "uln_password")
 07070100000118000081B40000000000000000000000016290A0C100001CD8000000000000000000000000000000000000003C00000000spacewalk-backend/satellite_tools/test/unit/test_yum_src.py   #!/usr/bin/env python
# -*- coding: utf-8 -*-
#
# Copyright (c) 2011 SUSE LLC
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.

import os
import solv
import xml.etree.ElementTree as etree
import unittest
try:
    from io import StringIO
except ImportError:
    from StringIO import StringIO
from collections import namedtuple

from mock import Mock, MagicMock, patch

from spacewalk.satellite_tools.repo_plugins import yum_src, ContentPackage

class YumSrcTest(unittest.TestCase):

    def _make_dummy_cs(self):
        """Create a dummy ContentSource object that only talks to a mocked yum"""
        real_setup_repo = yum_src.ContentSource.setup_repo

        # don't read configs
        patch('spacewalk.common.suseLib.initCFG').start()
        patch('spacewalk.common.suseLib.CFG').start()
        yum_src.initCFG = Mock()
        yum_src.CFG = Mock()
        yum_src.CFG.MOUNT_POINT = ''
        yum_src.CFG.PREPENDED_DIR = ''
        yum_src.CFG.REPOSYNC_MINRATE = 1000
        yum_src.CFG.REPOSYNC_TIMEOUT = 300
        yum_src.fileutils.makedirs = Mock()
        yum_src.os.makedirs = Mock()
        yum_src.os.path.isdir = Mock()

        yum_src.get_proxy = Mock(return_value=(None, None, None))

        cs = yum_src.ContentSource("http://example.com", "test_repo", org='')
        mockReturnPackages = MagicMock()
        mockReturnPackages.returnPackages = MagicMock(name="returnPackages")
        mockReturnPackages.returnPackages.return_value = []
        cs.repo.is_configured = True
        cs.repo.includepkgs = []
        cs.repo.exclude = []
        cs.repo.root = os.path.dirname(__file__)
        cs.channel_label = "."

        yum_src.ContentSource.setup_repo = real_setup_repo

        return cs

    def test_content_source_init(self):
        cs = self._make_dummy_cs()

        self.assertFalse(cs.insecure)
        self.assertTrue(cs.interactive)
        assert isinstance(cs.repo, yum_src.ZypperRepo)

    @unittest.skip
    def test_list_packages_empty(self):
        cs = self._make_dummy_cs()

        os.path.isfile = Mock(return_value=True)
        solv.Pool = Mock()

        self.assertEqual(cs.list_packages(filters=None, latest=False), [])

    @unittest.skip
    def test_list_packages_with_pack(self):
        cs = self._make_dummy_cs()

        package_attrs = ['name', 'version', 'release',
                         'epoch', 'arch', 'checksums', 'repoid', 'pkgtup']
        Package = namedtuple('Package', package_attrs)
        mocked_packs = [Package('n1', 'v1', 'r1', 'e1', 'a1', [('c1', 'cs')], 'rid1', ('n1', 'a1', 'e1', 'v1', 'r1')),
                        Package('n2', 'v2', 'r2', 'e2', 'a2', [('c2', 'cs')], 'rid2', ('n2', 'a2', 'e2', 'v2', 'r2'))]

        os.path.isfile = Mock(return_value=True)
        solv.Pool = Mock()

        listed_packages = cs.list_packages(filters=None, latest=False)

        self.assertEqual(len(listed_packages), 2)
        for pack, mocked_pack in zip(listed_packages, mocked_packs):
            # listed_packages should return ContentPackages
            self.assertTrue(isinstance(pack, ContentPackage))

            # all the attributes should be rightly imported from yum's
            # returnPackages which we've mocked above
            for attr in package_attrs:
                if attr == 'checksums':
                    # checksums are transformed by list_packages from
                    # yum's list of tuples to ContentSource's dictionary
                    self.assertEqual(pack.checksums,
                                     {mocked_pack.checksums[0][0]:
                                          mocked_pack.checksums[0][1]})
                elif attr in ['repoid', 'pkgtup']:
                    continue
                else:
                    self.assertEqual(getattr(pack, attr),
                                     getattr(mocked_pack, attr))

    @unittest.skip
    def test_get_updates_suse_patches(self):
        cs = self._make_dummy_cs()

        patches_xml = StringIO(u"""<?xml version="1.0" encoding="UTF-8"?>
                <patches xmlns="http://novell.com/package/metadata/suse/patches">
                  <patch id="smcl3-cobbler-7778">
                    <checksum type="sha">ec34048ebda707a83190056d832d43c9fbb55ca6</checksum>
                    <location href="/patch-smcl3-cobbler-7778.xml"/>
                    <someother>weird element</someother>
                  </patch>
                  <patch id="smcl3-code11-update-stack-7779">
                    <checksum type="sha">51a736a468ebf53d7a4084cf0ca72a87427cdeba</checksum>
                    <location href="/patch-smcl3-code11-update-stack-7779.xml"/>
                  </patch>
                </patches>
                """)
        cs._md_exists = Mock(side_effect=[False, True, True])
        cs._retrieve_md_path = Mock(return_value="patches.xml")
        open = Mock(return_value=patches_xml)
        os.path.join = Mock(side_effect=lambda *args: StringIO(u"<xml></xml>"))

        patches = cs.get_updates()
        self.assertEqual(patches[0], 'patches')
        self.assertEqual(len(patches[1]), 2)


    @patch("spacewalk.satellite_tools.repo_plugins.yum_src.initCFG", Mock())
    @patch("spacewalk.satellite_tools.repo_plugins.yum_src.os.unlink", Mock())
    @patch("urlgrabber.grabber.PyCurlFileObject", Mock())
    @patch("spacewalk.common.rhnLog", Mock())
    @patch("spacewalk.satellite_tools.repo_plugins.yum_src.fileutils.makedirs", Mock())
    def test_minrate_timeout_config(self):
        CFG = Mock()
        CFG.REPOSYNC_TIMEOUT = 42
        CFG.REPOSYNC_MINRATE = 42
        CFG.REPOSYNC_DOWNLOAD_THREADS = 42  # Throws ValueError if not defined
        CFG.MOUNT_POINT = ""
        CFG.PREPENDED_DIR = ''
        CFG.http_proxy = False

        grabber_spy = Mock()

        with patch(
            "spacewalk.satellite_tools.repo_plugins.yum_src.urlgrabber.urlread", grabber_spy
        ), patch("spacewalk.satellite_tools.repo_plugins.yum_src.CFG", CFG), patch(
            "spacewalk.satellite_tools.repo_plugins.yum_src.os.path.isfile",
            Mock(return_value=False),
        ):
            cs = yum_src.ContentSource("http://example.com/foo/", "test_repo", org="")
            cs.get_file("bar")

            self.assertEqual(grabber_spy.call_args[1]["timeout"],  42)
            self.assertEqual(grabber_spy.call_args[1]["minrate"],  42)

    @patch("spacewalk.satellite_tools.repo_plugins.yum_src.ZYPP_RAW_CACHE_PATH", "./")
    def test_get_comps_and_modules(self):
        cs = self._make_dummy_cs()

        comps = cs.get_groups()
        self.assertTrue(comps.endswith('751019aa91884285a99d1a62a8c653a3ce41fb4e235f11077c3de52925e16ef7-comps-AppStream.x86_64.xml'))
        modules = cs.get_modules()
        self.assertTrue(modules.endswith('2c3714db39642790c8a1922c6cae04e7b95af59b234af60f15778d5550e3a546-modules.yaml.gz'))
07070100000119000081B40000000000000000000000016290A0C100000EE7000000000000000000000000000000000000002D00000000spacewalk-backend/satellite_tools/ulnauth.py  # coding: utf-8
"""
Oracle ULN (Unbreakable Linux Network) authentication library.
"""
import os
import configparser
import urllib.parse

from spacewalk.common.suseLib import get_proxy
from spacewalk.satellite_tools.syncLib import RhnSyncException
from up2date_client.rpcServer import RetryServer, ServerList

from spacewalk.common.rhnConfig import initCFG

import logging
log = logging.getLogger(__name__)


class ULNTokenException(Exception):
    """
    This class represent an exception getting the ULN token
    """
    pass


class ULNAuth:
    """
    ULN Authentication.
    """
    ULN_CONF_PATH = "/etc/rhn/spacewalk-repo-sync/uln.conf"
    ULN_DEFAULT_HOST = "linux-update.oracle.com"

    def __init__(self):
        initCFG("server.satellite")
        self._uln_token = None
        self._uln_url = None

    @property
    def token(self):
        """
        Return ULN token, if authorised.
        """
        return self._uln_token

    @property
    def url(self):
        """
        Return ULN URL for the access.
        """
        return self._uln_url

    def get_hostname(self, url: str) -> tuple:
        """
        Get label from the URL (a hostname).

        :raises RhnSyncException: if URL is wrongly formatted.
        :returns: tuple (hostname, label)
        """
        if url.startswith("uln:///"):
            return "https://" + self.ULN_DEFAULT_HOST, url[7:]
        elif url.startswith("uln://"):
            parts = url[6:].split("/")
            return "https://" + parts[0], "/".join(parts[1:])
        else:
            raise RhnSyncException("URL must start with 'uln://'.")


    def get_credentials(self) -> tuple:
        """
        Get credentials from the uln.conf

        :raises AssertionError: if configuration does not contain required sections.
        :returns: tuple of username and password
        """
        if not os.path.exists(self.ULN_CONF_PATH):
            raise RhnSyncException("'{}' does not exists".format(self.ULN_CONF_PATH))
        elif not os.access(self.ULN_CONF_PATH, os.R_OK):
            raise RhnSyncException("Permission denied to '{}'".format(self.ULN_CONF_PATH))

        config = configparser.ConfigParser()
        config.read(self.ULN_CONF_PATH)
        if "main" in config:
            sct = config["main"]
            username, password = sct.get("username"), sct.get("password")
        else:
            username = password = None
        assert username is not None and password is not None, "Credentials were not found in the configuration"

        return username, password

    def authenticate(self, url):
        """
        Get ULN token.

        :raises RhnSyncException: if configuration does not contain required sections.
        :returns: ULN token
        """
        err_msg = ''
        if self._uln_token is None:
            try:
                usr, pwd = self.get_credentials()
                self._uln_url, label = self.get_hostname(url)
                px_url, px_usr, px_pwd = get_proxy(self._uln_url)
                server_list = ServerList([self._uln_url + "/rpc/api"])
                retry_server = RetryServer(server_list.server(),
                                           refreshCallback=None,
                                           proxy=px_url,
                                           username=px_usr,
                                           password=px_pwd,
                                           timeout=5)
                retry_server.addServerList(server_list)
                self._uln_token = retry_server.auth.login(usr, pwd)
            except Exception as exc:
                err_msg = exc

        if not self.token or err_msg:
            raise ULNTokenException("Authentication failure: token was not obtained. {}".format(err_msg))

        return self.token
 0707010000011A000081FD0000000000000000000000016290A0C100000A02000000000000000000000000000000000000003200000000spacewalk-backend/satellite_tools/update-packages #!/usr/bin/python
#
# wrapper for Script to update pacakge paths and gpg key ids.
#
# Copyright (c) 2008--2015 Red Hat, Inc.
#
# Authors: Pradeep Kilambi
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#


if __name__ != '__main__':
    raise ImportError("module cannot be imported")

import sys


def systemExit(code, msgs=None):
    "Exit with a code and optional message(s). Saved a few lines of code."

    if msgs:
        if type(msgs) not in [type([]), type(())]:
            msgs = (msgs, )
        for msg in msgs:
            sys.stderr.write(str(msg) + '\n')
    sys.exit(code)


import os

# quick check to see if you are a super-user.
if os.getuid() != 0:
    sys.stderr.write('ERROR: must be root to execute\n')
    sys.exit(8)


try:
    from rhn import rhnLockfile
except KeyboardInterrupt:
    systemExit(0, "\nUser interrupted process.")
except ImportError:
    sys.stderr.write("Unable to find RHN code tree.\n"
                     "Path not correct? '%s'\n" % _LIBPATH)
    raise


# acquire lock/check for other instances of update packages
#   i.e., lock against multiple instances of updatePackages
LOCK = None
try:
    LOCK = rhnLockfile.Lockfile('/var/run/update-packages.pid')
except rhnLockfile.LockfileLockedException:
    systemExit(1, "ERROR: attempting to run more than one instance of update-packages. Exiting.")

try:
    # NOTE: importing
    from spacewalk.satellite_tools import updatePackages
except KeyboardInterrupt:
    systemExit(0, "\nUser interrupted process.")
except ImportError as e:
    systemExit(2, "Unable to find update package tool.\n"
                  "Error: %s" % e)


def releaseLOCK():
    global LOCK
    if LOCK:
        LOCK.release()


def main():
    # execute
    try:
        return updatePackages.main()
    except KeyboardInterrupt:
        systemExit(0, "\nUser interrupted process.")

    releaseLOCK()
    return 0


if __name__ == '__main__':
    try:
        sys.exit(abs(main() or 0))
    except KeyboardInterrupt:
        systemExit(0, "\nUser interrupted process.")
  0707010000011B000081B40000000000000000000000016290A0C1000009BE000000000000000000000000000000000000003700000000spacewalk-backend/satellite_tools/update-packages.sgml    <!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook V3.1//EN">
<refentry>

<RefMeta>
<RefEntryTitle>update-packages</RefEntryTitle><manvolnum>8</manvolnum>
</RefMeta>

<RefNameDiv>
<RefName><command>update-packages</command></RefName>
<RefPurpose>
Migration script for nvrea issue to migrate already existing paths and include the package gpg key id for different providers.
</RefPurpose>
</RefNameDiv>

<RefSynopsisDiv>
<Synopsis>
    <cmdsynopsis>
        <command>update-packages</command>
    </cmdsynopsis>
</Synopsis>
</RefSynopsisDiv>

<RefSect1><Title>Description</Title>

<para>
Running this script is necessary if you are upgrading from RHN Satellite 5.2.
If you're upgrading from RHN Satellite 5.3, this step can be safely skipped.
</para>
<para>
Run update-packages script as root:
<programlisting>
  /usr/bin/update-packages \
        --update-filer \
        --update-kstrees \
        --debug
</programlisting>
</para>
<para>
The --debug option will direct the script to log all actions into /var/log/rhn/update-packages.log
</para>
<para>
* Time estimate: the time required for whole conversion depends on the current
size of your filer and the speed of your hardware. Assume 60 - 120 GB / hour.
</para>
</RefSect1>

<RefSect1><Title>Options</Title>
<variablelist>
    <varlistentry>
        <term>--help</term>
        <listitem>
            <para>Display usage and exit.</para>
        </listitem>
    </varlistentry>
    <varlistentry>
        <term>-v, --verbose</term>
        <listitem>
            <para>Increase verbosity.</para>
        </listitem>
    </varlistentry>
    <varlistentry>
        <term>--debug</term>
        <listitem>
            <para>Logs the debug information to a log file /var/log/rhn/update-packages.log</para>
        </listitem>
    </varlistentry>
    <varlistentry>
        <term>--update-sha256</term>
        <listitem>
            <para>Update SHA-256 capable packages.</para>
        </listitem>
    </varlistentry>
    <varlistentry>
        <term>--update-filer</term>
        <listitem>
            <para>Convert filer structure.</para>
        </listitem>
    </varlistentry>
    <varlistentry>
        <term>--update-kstrees</term>
        <listitem>
            <para>Fix kickstart trees permissions.</para>
        </listitem>
    </varlistentry>

</variablelist>
</RefSect1>

<RefSect1><Title>Authors</Title>
<simplelist>
    <member>Pradeep Kilambi <email>pkilambi@redhat.com</email></member>
</simplelist>
</RefSect1>
</RefEntry>
  0707010000011C000081B40000000000000000000000016290A0C100005FE6000000000000000000000000000000000000003400000000spacewalk-backend/satellite_tools/updatePackages.py   #
# Copyright (c) 2008--2016 Red Hat, Inc.
#
# Authors: Pradeep Kilambi
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#
#

import sys
import os
import shutil

from optparse import Option, OptionParser
from spacewalk.common.rhnLog import initLOG, rhnLog
from spacewalk.common.rhnConfig import CFG, initCFG
from uyuni.common import rhn_rpm
from spacewalk.server.rhnLib import parseRPMFilename, get_package_path
from spacewalk.server import rhnSQL, rhnPackageUpload
from spacewalk.server.rhnServer import server_packages
from spacewalk.satellite_tools.progress_bar import ProgressBar
from uyuni.common.checksum import getFileChecksum
from spacewalk.server.importlib import mpmSource

initCFG('server.satellite')
initLOG(CFG.LOG_FILE, CFG.DEBUG)

OPTIONS = None
debug = 0
verbose = 0

options_table = [
    Option("--update-package-files", action="store_true",
           help="Update package files (bugs #659348, #652852)"),
    Option("--update-sha256", action="store_true",
           help="Update SHA-256 capable packages"),
    Option("--update-filer", action="store_true",
           help="Convert filer structure"),
    Option("--update-kstrees", action="store_true",
           help="Fix kickstart trees permissions"),
    Option("--update-changelog", action="store_true",
           help="Fix incorrectly encoded package changelog data"),
    Option("-v", "--verbose", action="count",
           help="Increase verbosity"),
    Option("--debug", action="store_true",
           help="Log the debug information to a log file"),
]


def main():
    global debug, verbose
    parser = OptionParser(option_list=options_table)

    (options, args) = parser.parse_args()

    if args:
        for arg in args:
            sys.stderr.write("Not a valid option ('%s'), try --help\n" % arg)
        sys.exit(-1)

    if options.verbose:
        initLOG("stdout", options.verbose or 0)
        verbose = 1

    if options.debug:
        initLOG(CFG.LOG_FILE, options.debug or 0)
        debug = 1

    rhnSQL.initDB()

    if options.update_filer:
        process_package_data()

    if options.update_sha256:
        process_sha256_packages()

    if options.update_kstrees:
        process_kickstart_trees()

    if options.update_package_files:
        process_package_files()

    if options.update_changelog:
        process_changelog()

_get_path_query = """
        select id, checksum_type, checksum, path, epoch, new_path
        from (
                select rhnPackage.id,
                       rhnChecksumView.checksum_type,
                       rhnChecksumView.checksum,
                       rhnPackage.path,
                       rhnPackageEvr.epoch,
                        case when rhnPackage.org_id is null then 'NULL'
                             else rhnPackage.org_id || '' end
                        || '/' || substr(rhnChecksumView.checksum, 1, 3)
                        || '/' || rhnPackageName.name
                        || '/' || case when rhnPackageEvr.epoch is null then ''
                                       else rhnPackageEvr.epoch || ':' end
                        || rhnPackageEvr.version || '-' || rhnPackageEvr.release
                        || '/' || rhnPackageArch.label
                        || '/' || rhnChecksumView.checksum
                        || substr(rhnPackage.path, instr(rhnPackage.path, '/', -1))
                        as new_path
                from rhnPackage, rhnPackagename, rhnPackageEvr, rhnPackageArch, rhnChecksumView
                where rhnPackage.name_id = rhnPackageName.id
                        and rhnPackage.evr_id = rhnPackageEvr.id
                        and rhnPackage.package_arch_id = rhnPackageArch.id
                        and rhnPackage.checksum_id = rhnChecksumView.id
                ) X
        where '/' || new_path <> nvl(substr(path, -length(new_path) - 1), 'x')
"""

_update_pkg_path_query = """
    update rhnPackage
       set path = :new_path
    where id = :the_id
"""


def process_package_data():
    if debug:
        log = rhnLog('/var/log/rhn/update-packages.log', 5)

    _get_path_sql = rhnSQL.prepare(_get_path_query)
    _update_package_path = rhnSQL.prepare(_update_pkg_path_query)

    _get_path_sql.execute()
    paths = _get_path_sql.fetchall_dict()

    if not paths:
        # Nothing to change
        return
    if verbose:
        print(("Processing %s packages" % len(paths)))
    pb = ProgressBar(prompt='standby: ', endTag=' - Complete!',
                     finalSize=len(paths), finalBarLength=40, stream=sys.stdout)
    pb.printAll(1)
    skip_list = []
    new_ok_list = []
    i = 0
    for path in paths:
        pb.addTo(1)
        pb.printIncrement()
        old_path_nvrea = path['path'].split('/')
        org_id = old_path_nvrea[1]
        # pylint: disable=W0703
        try:
            nevra = parseRPMFilename(old_path_nvrea[-1])
            if nevra[1] in [None, '']:
                nevra[1] = path['epoch']
        except Exception:
            # probably not an rpm skip
            if debug:
                log.writeMessage("Skipping: %s Not a valid rpm"
                                 % old_path_nvrea[-1])
            continue
        old_abs_path = os.path.join(CFG.MOUNT_POINT, path['path'])

        checksum_type = path['checksum_type']
        checksum = path['checksum']
        new_path = get_package_path(nevra, org_id, prepend=old_path_nvrea[0],
                                    checksum=checksum)
        new_abs_path = os.path.join(CFG.MOUNT_POINT, new_path)

        bad_abs_path = os.path.join(CFG.MOUNT_POINT,
                                    get_package_path(nevra, org_id, prepend=old_path_nvrea[0],
                                                     omit_epoch=True, checksum=checksum))

        if not os.path.exists(old_abs_path):
            if os.path.exists(new_abs_path):
                new_ok_list.append(new_abs_path)
                if debug:
                    log.writeMessage("File %s already on final path %s" % (path['path'], new_abs_path))
                old_abs_path = new_abs_path
            elif os.path.exists(bad_abs_path):
                log.writeMessage("File %s found on %s" % (path['path'], bad_abs_path))
                old_abs_path = bad_abs_path
            else:
                skip_list.append(old_abs_path)
                if debug:
                    log.writeMessage("Missing path %s for package %d" % (old_abs_path, path['id']))
                continue

        # pylint: disable=W0703
        try:
            hdr = rhn_rpm.get_package_header(filename=old_abs_path)
        except Exception:
            e = sys.exc_info()[1]
            msg = "Exception occurred when reading package header %s: %s" % \
                (old_abs_path, str(e))
            print(msg)
            if debug:
                log.writeMessage(msg)
            rhnSQL.commit()
            sys.exit(1)

        if old_abs_path != new_abs_path:
            new_abs_dir = os.path.dirname(new_abs_path)
            # relocate the package on the filer
            if debug:
                log.writeMessage("Relocating %s to %s on filer"
                                 % (old_abs_path, new_abs_path))
            if not os.path.isdir(new_abs_dir):
                os.makedirs(new_abs_dir)
            shutil.move(old_abs_path, new_abs_path)
            # Clean up left overs
            os.removedirs(os.path.dirname(old_abs_path))
            # make the path readable
            os.chmod(new_abs_path, int('0644', 8))

        # Update the db paths
        _update_package_path.execute(the_id=path['id'],
                                     new_path=new_path)
        if debug:
            log.writeMessage("query Executed: update rhnPackage %d to %s"
                             % (path['id'], new_path))
        # Process gpg key ids
        server_packages.processPackageKeyAssociations(hdr, checksum_type, checksum)
        if debug:
            log.writeMessage("gpg key info updated from %s" % new_abs_path)
        i = i + 1
        # we need to break the transaction to smaller pieces
        if i % 1000 == 0:
            rhnSQL.commit()
    pb.printComplete()
    # All done, final commit
    rhnSQL.commit()
    sys.stderr.write("Transaction Committed! \n")
    if verbose:
        print((" Skipping %s packages, paths not found" % len(skip_list)))
    if new_ok_list and verbose:
        print((" There were %s packages found in the correct location" % len(new_ok_list)))
    return


def process_kickstart_trees():
    for root, _dirs, files in os.walk(CFG.MOUNT_POINT + "/rhn/"):
        for name in files:
            os.chmod(root + '/' + name, int('0644', 8))

_get_sha256_packages_query = """
select p.id, p.path
from rhnPackage p,
     rhnPackageRequires pr,
     rhnPackageCapability pc,
     rhnChecksumView cv
where pr.package_id = p.id and
      pr.capability_id = pc.id and
      pc.name = 'rpmlib(FileDigests)' and
      pc.version = '4.6.0-1' and
      cv.id = p.checksum_id and
      cv.checksum_type = 'md5'
"""

_update_sha256_package = """
update rhnPackage
set checksum_id = lookup_checksum(:ctype, :csum),
    path = :path
where id = :id
"""

_select_checksum_type_id = """
select id from rhnChecksumType where label = :ctype
"""

_update_package_files = """
declare
    checksum_id number;
begin
    begin
        insert into rhnChecksum values (
            sequence_nextval('rhnChecksum_seq'),
            :ctype_id,
            :csum ) returning id into checksum_id;
    exception when dup_val_on_index then
        select c.id
        into checksum_id
        from rhnChecksum c
        where c.checksum = :csum and
              c.checksum_type_id = :ctype_id;
    end;

    update rhnPackageFile p
    set p.checksum_id = checksum_id
    where p.capability_id = (
        select c.id
        from rhnPackageCapability c
        where p.package_id = :pid and
              c.name = :filename
    ) and p.package_id = :pid;
end;
"""


def process_sha256_packages():
    if debug:
        log = rhnLog('/var/log/rhn/update-packages.log', 5)

    _get_sha256_packages_sql = rhnSQL.prepare(_get_sha256_packages_query)
    _get_sha256_packages_sql.execute()
    packages = _get_sha256_packages_sql.fetchall_dict()

    if not packages:
        print("No SHA256 capable packages to process.")
        if debug:
            log.writeMessage("No SHA256 capable packages to process.")

        return

    if verbose:
        print(("Processing %s SHA256 capable packages" % len(packages)))

    pb = ProgressBar(prompt='standby: ', endTag=' - Complete!',
                     finalSize=len(packages), finalBarLength=40, stream=sys.stdout)
    pb.printAll(1)

    _update_sha256_package_sql = rhnSQL.prepare(_update_sha256_package)
    _update_package_files_sql = rhnSQL.prepare(_update_package_files)

    for package in packages:
        pb.addTo(1)
        pb.printIncrement()

        old_abs_path = os.path.join(CFG.MOUNT_POINT, package['path'])
        if debug and verbose:
            log.writeMessage("Processing package: %s" % old_abs_path)
        temp_file = open(old_abs_path, 'rb')
        header, _payload_stream, _header_start, _header_end = \
            rhnPackageUpload.load_package(temp_file)
        checksum_type = header.checksum_type()
        checksum = getFileChecksum(checksum_type, file_obj=temp_file)

        old_path = package['path'].split('/')
        nevra = parseRPMFilename(old_path[-1])
        org_id = old_path[1]
        new_path = get_package_path(nevra, org_id, prepend=old_path[0], checksum=checksum)
        new_abs_path = os.path.join(CFG.MOUNT_POINT, new_path)

        # Filer content relocation
        try:
            if old_abs_path != new_abs_path:
                if debug:
                    log.writeMessage("Relocating %s to %s on filer" % (old_abs_path, new_abs_path))

                new_abs_dir = os.path.dirname(new_abs_path)
                if not os.path.isdir(new_abs_dir):
                    os.makedirs(new_abs_dir)

                # link() the old path to the new path
                if not os.path.exists(new_abs_path):
                    os.link(old_abs_path, new_abs_path)
                elif debug:
                    log.writeMessage("File %s already exists" % new_abs_path)

                # Make the new path readable
                os.chmod(new_abs_path, int('0644', 8))
        except OSError:
            e = sys.exc_info()[1]
            message = "Error when relocating %s to %s on filer: %s" % \
                      (old_abs_path, new_abs_path, str(e))
            print(message)
            if debug:
                log.writeMessage(message)
            sys.exit(1)

        # Update package checksum in the database
        _update_sha256_package_sql.execute(ctype=checksum_type, csum=checksum,
                                           path=new_path, id=package['id'])

        _select_checksum_type_id_sql = rhnSQL.prepare(_select_checksum_type_id)
        _select_checksum_type_id_sql.execute(ctype=checksum_type)
        checksum_type_id = _select_checksum_type_id_sql.fetchone()[0]

        # Update checksum of every single file in a package
        for i, f in enumerate(header['filenames']):
            csum = header['filemd5s'][i]

            # Do not update checksums for directories & links
            if not csum:
                continue

            _update_package_files_sql.execute(ctype_id=checksum_type_id, csum=csum,
                                              pid=package['id'], filename=f)

        rhnSQL.commit()

        try:
            if os.path.exists(old_abs_path):
                os.unlink(old_abs_path)
            if os.path.exists(os.path.dirname(old_abs_path)):
                os.removedirs(os.path.dirname(old_abs_path))
        except OSError:
            e = sys.exc_info()[1]
            message = "Error when removing %s: %s" % (old_abs_path, str(e))
            print(message)
            if debug:
                log.writeMessage(message)

            sys.exit(1)

    pb.printComplete()

package_query = """
    select p.id as id,
           p.path as path,
           count(pf.capability_id) as filecount,
           count(pf.checksum_id) as nonnullcsums
      from rhnPackage p left outer join rhnPackageFile pf
        on p.id = pf.package_id
     where path is not null
  group by id, path
"""

package_capabilities = """
    select PC.name,
           PF.package_id,
           PF.capability_id,
           C.checksum,
           C.checksum_type
      from rhnPackageFile PF left outer join rhnChecksumView C
        on PF.checksum_id = C.id,
           rhnPackageCapability PC
     where PC.id = PF.capability_id and
           PF.package_id = :pid
"""

update_packagefile_checksum = """
    update rhnPackageFile
       set checksum_id = lookup_checksum(:ctype, :csum)
     where package_id = :pid and
           capability_id = :cid
"""

insert_packagefile = """
    insert into rhnPackageFile (
            package_id, capability_id, device, inode, file_mode, username,
            groupname, rdev, file_size, mtime, linkto, flags, verifyflags,
            lang, checksum_id
           )
    values (
            :pid, lookup_package_capability(:name, null),
            :device, :inode, :file_mode, :username, :groupname,
            :rdev, :file_size, to_timestamp(:mtime, 'YYYY-MM-DD HH24:MI:SS'), :linkto,
            :flags, :verifyflags, :lang, lookup_checksum(:ctype, :csum)
           )
"""

package_name_query = """
    select pn.name as name,
           evr_t_as_vre_simple(pevr.evr) as vre,
           pa.label as arch
      from rhnPackage p,
           rhnPackageName pn,
           rhnPackageEVR pevr,
           rhnPackageArch pa
     where p.id = :pid and
           p.name_id = pn.id and
           p.evr_id = pevr.id and
           p.package_arch_id = pa.id
"""

package_repodata_delete = """
    delete
          from rhnPackageRepoData
         where package_id = :pid
"""


def process_package_files():
    def parse_header(header):
        checksum_type = rhn_rpm.RPM_Header(header).checksum_type()
        return mpmSource.create_package(header, size=0,
                                        checksum_type=checksum_type, checksum=None, relpath=None,
                                        org_id=None, header_start=None, header_end=None, channels=[])

    package_name_h = rhnSQL.prepare(package_name_query)

    def package_name(pid):
        package_name_h.execute(pid=pid)
        r = package_name_h.fetchall_dict()[0]
        return "%s-%s.%s" % (r['name'], r['vre'], r['arch'])

    package_repodata_h = rhnSQL.prepare(package_repodata_delete)

    def delete_package_repodata(pid):
        package_repodata_h.execute(pid=pid)

    log = rhnLog('/var/log/rhn/update-packages.log', 5)

    package_query_h = rhnSQL.prepare(package_query)
    package_query_h.execute()

    package_capabilities_h = rhnSQL.prepare(package_capabilities)
    update_packagefile_checksum_h = rhnSQL.prepare(update_packagefile_checksum)
    insert_packagefile_h = rhnSQL.prepare(insert_packagefile)

    while (True):
        row = package_query_h.fetchone_dict()
        if not row:  # No more packages in DB to process
            break

        package_path = os.path.join(CFG.MOUNT_POINT, row['path'])

        if not os.path.exists(package_path):
            if debug:
                log.writeMessage("Package path '%s' does not exist." % package_path)
            continue

        # pylint: disable=W0703
        try:
            hdr = rhn_rpm.get_package_header(filename=package_path)
        except Exception:
            e = sys.exc_info()[1]
            message = "Error when reading package %s header: %s" % (package_path, e)
            if debug:
                log.writeMessage(message)
            continue

        pkg_updates = 0
        if row['filecount'] != len(hdr['filenames']):
            # Number of package files on disk and in the DB do not match
            # (possibly a bug #652852). We have to correct them one by one.
            package_capabilities_h.execute(pid=row['id'])
            pkg_caps = {}  # file-name : capabilities dictionary
            for cap in package_capabilities_h.fetchall_dict() or []:
                pkg_caps[cap['name']] = cap

            for f in parse_header(hdr)['files']:
                if f['name'] in pkg_caps:
                    continue  # The package files exists in the DB

                # Insert the missing package file into DB
                insert_packagefile_h.execute(pid=row['id'], name=f['name'],
                                             ctype=f['checksum_type'], csum=f['checksum'], device=f['device'],
                                             inode=f['inode'], file_mode=f['file_mode'], username=f['username'],
                                             groupname=f['groupname'], rdev=f['rdev'], file_size=f['file_size'],
                                             mtime=f['mtime'], linkto=f['linkto'], flags=f['flags'],
                                             verifyflags=f['verifyflags'], lang=f['lang'])
                pkg_updates += 1

            if debug and pkg_updates:
                log.writeMessage("Package id: %s, name: %s, %s files inserted" %
                                 (row['id'], package_name(row['id']), pkg_updates))
        elif row['nonnullcsums'] == 0:
            # All package files in the DB have null checksum (possibly a bug #659348)
            package_capabilities_h.execute(pid=row['id'])
            pkg_caps = {}  # file-name : capabilities dictionary
            for cap in package_capabilities_h.fetchall_dict() or []:
                pkg_caps[cap['name']] = cap

            for f in parse_header(hdr)['files']:
                if f['checksum'] == '':  # Convert empty string (symlinks) to None to match w/ Oracle returns
                    f['checksum'] = None

                caps = pkg_caps[f['name']]

                if not caps['checksum'] == f['checksum']:
                    # Package file exists, but its checksum in the DB is incorrect
                    update_packagefile_checksum_h.execute(ctype=f['checksum_type'], csum=f['checksum'],
                                                          pid=caps['package_id'], cid=caps['capability_id'])
                    pkg_updates += 1

            if debug and pkg_updates:
                log.writeMessage("Package id: %s, name: %s, %s checksums updated" %
                                 (row['id'], package_name(row['id']), pkg_updates))

        if pkg_updates:
            log.writeMessage("Package id: %s, purging rhnPackageRepoData" % row['id'])
            delete_package_repodata(row['id'])

        rhnSQL.commit()  # End of a package


def process_changelog():
    def convert(u):
        last = ''
        while u != last:
            last = u
            try:
                u = last.encode('iso8859-1').decode('utf8')
            except (UnicodeDecodeError, UnicodeEncodeError):
                e = sys.exc_info()[1]
                if e.reason == 'unexpected end of data':
                    u = u[:-1]
                    continue
                else:
                    break
        return u

    if CFG.db_backend == 'postgresql':
        lengthb = "octet_length(%s)"
    else:
        lengthb = "lengthb(%s)"
    _non_ascii_changelog_data_count = """select count(*) as cnt from rhnpackagechangelogdata
                                          where length(name) <> %s
                                             or length(text) <> %s
        """ % (lengthb % 'name', lengthb % 'text')
    _non_ascii_changelog_data = """select * from rhnpackagechangelogdata
                                    where length(name) <> %s
                                       or length(text) <> %s
        """ % (lengthb % 'name', lengthb % 'text')
    _update_changelog_data_name = """update rhnpackagechangelogdata set name = :name
                                           where id = :id"""
    _update_changelog_data_text = """update rhnpackagechangelogdata set text = :text
                                           where id = :id"""
    if debug:
        log = rhnLog('/var/log/rhn/update-packages.log', 5)

    query_count = rhnSQL.prepare(_non_ascii_changelog_data_count)
    query_count.execute()
    nrows = query_count.fetchall_dict()[0]['cnt']

    query = rhnSQL.prepare(_non_ascii_changelog_data)
    query.execute()

    if nrows == 0:
        msg = "No non-ASCII changelog entries to process."
        print(msg)
        if debug:
            log.writeMessage(msg)
        return

    if verbose:
        print(("Processing %s non-ASCII changelog entries" % nrows))

    pb = ProgressBar(prompt='standby: ', endTag=' - Complete!',
                     finalSize=nrows, finalBarLength=40, stream=sys.stdout)
    pb.printAll(1)

    update_name = rhnSQL.prepare(_update_changelog_data_name)
    update_text = rhnSQL.prepare(_update_changelog_data_text)

    while (True):
        row = query.fetchone_dict()
        if not row:  # No more packages in DB to process
            break

        pb.addTo(1)
        pb.printIncrement()

        name_u = row['name'].decode('utf8', 'ignore')
        name_fixed = name_u
        if len(row['name']) != len(name_u):
            name_fixed = convert(name_u)
        if name_fixed != name_u:
            if debug and verbose:
                log.writeMessage("Fixing record %s: name: '%s'" % (row['id'], row['name']))
            update_name.execute(id=row['id'], name=name_fixed)

        text_u = row['text'].decode('utf8', 'ignore')
        text_fixed = text_u
        if len(row['text']) != len(text_u):
            text_fixed = convert(text_u)
        if text_fixed != text_u:
            if debug and verbose:
                log.writeMessage("Fixing record %s: text: '%s'" % (row['id'], row['text']))
            update_text.execute(id=row['id'], text=text_fixed)

        rhnSQL.commit()

    pb.printComplete()


if __name__ == '__main__':
    main()
  0707010000011D000081B40000000000000000000000016290A0C100003267000000000000000000000000000000000000003300000000spacewalk-backend/satellite_tools/xmlDiskSource.py    #
# Abstraction for an XML importer with a disk base
#
# Copyright (c) 2008--2018 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#

import os
import gzip
from uyuni.common.fileutils import createPath
from uyuni.common.rhnLib import hash_object_id


class MissingXmlDiskSourceFileError(Exception):
    pass


class MissingXmlDiskSourceDirError(Exception):
    pass


class DiskSource:
    subdir = None
    # Allow for compressed files by default
    allow_compressed_files = 1

    def __init__(self, mountPoint):
        self.mountPoint = mountPoint

    # Returns a data stream
    def load(self):
        # Returns a stream
        filename = self._getFile()
        return self._loadFile(filename)

    def _getFile(self, create=0):
        # Virtual
        # pylint: disable=W0613,R0201
        return None

    def _loadFile(self, filename):
        # Look for a gzip file first
        if self.allow_compressed_files:
            if filename[-3:] == '.gz' and os.path.exists(filename):
                return gzip.open(filename, "rb")

            if os.path.exists(filename + '.gz'):
                return gzip.open(filename + ".gz", "rb")

        if os.path.exists(filename):
            return open(filename, "r")

        raise MissingXmlDiskSourceFileError("unable to process file %s" % filename)

    def _getDir(self, create=0):
        dirname = "%s/%s" % (self.mountPoint, self.subdir)
        if not create:
            return dirname
        if not os.path.exists(dirname):
            createPath(dirname)
        if not os.path.isdir(dirname):
            raise MissingXmlDiskSourceDirError("%s is not a directory" % dirname)
        return dirname


class ArchesDiskSource(DiskSource):
    subdir = 'arches'
    filename = 'arches.xml'

    def _getFile(self, create=0):
        dirname = self._getDir(create)
        if create and not os.path.isdir(dirname):
            createPath(dirname)
        return os.path.join(dirname, self.filename)


class ArchesExtraDiskSource(ArchesDiskSource):
    filename = "arches-extra.xml"


class ProductnamesDiskSource(DiskSource):
    subdir = 'product_names'

    def _getFile(self, create=0):
        dirname = self._getDir(create)
        if create and not os.path.isdir(dirname):
            createPath(dirname)
        return "%s/product_names.xml" % dirname


class ChannelFamilyDiskSource(DiskSource):
    subdir = 'channel_families'

    def _getFile(self, create=0):
        dirname = self._getDir(create)
        if create and not os.path.isdir(dirname):
            createPath(dirname)
        return "%s/channel_families.xml" % dirname


class OrgsDiskSource(DiskSource):
    subdir = 'orgs'

    def _getFile(self, create=0):
        dirname = self._getDir(create)
        if create and not os.path.isdir(dirname):
            createPath(dirname)
        return "%s/orgs.xml" % dirname


class ChannelDiskSource(DiskSource):
    subdir = 'channels'

    def __init__(self, mountPoint):
        DiskSource.__init__(self, mountPoint)
        self.channel = None

    def setChannel(self, channel):
        self.channel = channel

    def list(self):
        # Lists the available channels
        dirname = self._getDir(create=0)
        if not os.path.isdir(dirname):
            # No channels available
            return []
        return os.listdir(dirname)

    def _getFile(self, create=0):
        dirname = "%s/%s" % (self._getDir(create), self.channel)
        if create and not os.path.isdir(dirname):
            createPath(dirname)
        return os.path.join(dirname, self._file_name())

    @staticmethod
    def _file_name():
        return "channel.xml"


class ChannelCompsDiskSource(ChannelDiskSource):

    @staticmethod
    def _file_name():
        return "comps.xml"


class ChannelModulesDiskSource(ChannelDiskSource):

    @staticmethod
    def _file_name():
        return "modules.yaml"


class ShortPackageDiskSource(DiskSource):
    subdir = "packages_short"

    def __init__(self, mountPoint):
        DiskSource.__init__(self, mountPoint)
        # Package ID
        self.id = None
        self._file_suffix = ".xml"

    def setID(self, pid):
        self.id = pid

    # limited dict behaviour
    def has_key(self, pid):
        # Save the old id
        old_id = self.id
        self.id = pid
        f = self._getFile()
        # Restore the old id
        self.id = old_id
        if os.path.exists(f + '.gz') or os.path.exists(f):
            return 1
        return 0

    def _getFile(self, create=0):
        dirname = "%s/%s" % (self._getDir(create), self._hashID())
        # Create the directoru if we have to
        if create and not os.path.exists(dirname):
            createPath(dirname)
        return "%s/%s%s" % (dirname, self.id, self._file_suffix)

    def _hashID(self):
        # Hashes the package name
        return hash_object_id(self.id, 2)


class PackageDiskSource(ShortPackageDiskSource):
    subdir = "packages"


class SourcePackageDiskSource(ShortPackageDiskSource):
    subdir = "source_packages"


class ErrataDiskSource(ShortPackageDiskSource):
    subdir = "errata"

    def _hashID(self):
        # Hashes the erratum name
        return hash_object_id(self.id, 1)


class BlacklistsDiskSource(DiskSource):
    subdir = "blacklists"

    def _getFile(self, create=0):
        dirname = self._getDir(create)
        if create and not os.path.isdir(dirname):
            createPath(dirname)
        return "%s/blacklists.xml" % dirname


class BinaryRPMDiskSource(ShortPackageDiskSource):
    subdir = "rpms"

    def __init__(self, mountPoint):
        ShortPackageDiskSource.__init__(self, mountPoint)
        self._file_suffix = '.rpm'


class SourceRPMDiskSource(BinaryRPMDiskSource):
    subdir = "srpms"


class KickstartDataDiskSource(DiskSource):
    subdir = "kickstart_trees"

    def __init__(self, mountPoint):
        DiskSource.__init__(self, mountPoint)
        self.id = None

    def setID(self, ks_label):
        self.id = ks_label

    def _getFile(self, create=0):
        dirname = self._getDir(create)
        if create and not os.path.isdir(dirname):
            createPath(dirname)
        return os.path.join(dirname, self.id) + '.xml'


class KickstartFileDiskSource(KickstartDataDiskSource):
    subdir = "kickstart_files"
    allow_compressed_files = 0

    def __init__(self, mountPoint):
        KickstartDataDiskSource.__init__(self, mountPoint)
        # the file's relative path
        self.relative_path = None

    def set_relative_path(self, relative_path):
        self.relative_path = relative_path

    def _getFile(self, create=0):
        path = os.path.join(self._getDir(create), self.id,
                            self.relative_path)
        dirname = os.path.dirname(path)
        if create and not os.path.isdir(dirname):
            createPath(dirname)
        return path


class MetadataDiskSource:

    def __init__(self, mountpoint):
        self.mountpoint = mountpoint

    @staticmethod
    def is_disk_loader():
        return True

    def getArchesXmlStream(self):
        return ArchesDiskSource(self.mountpoint).load()

    def getArchesExtraXmlStream(self):
        return ArchesExtraDiskSource(self.mountpoint).load()

    def getChannelFamilyXmlStream(self):
        return ChannelFamilyDiskSource(self.mountpoint).load()

    def getOrgsXmlStream(self):
        return OrgsDiskSource(self.mountpoint).load()

    def getProductNamesXmlStream(self):
        return ProductnamesDiskSource(self.mountpoint).load()

    def getComps(self, label):
        sourcer = ChannelCompsDiskSource(self.mountpoint)
        sourcer.setChannel(label)
        return sourcer.load()

    def getModules(self, label):
        sourcer = ChannelModulesDiskSource(self.mountpoint)
        sourcer.setChannel(label)
        return sourcer.load()

    def getChannelXmlStream(self):
        sourcer = ChannelDiskSource(self.mountpoint)
        channels = sourcer.list()
        stream_list = []
        for c in channels:
            sourcer.setChannel(c)
            stream_list.append(sourcer.load())
        return stream_list

    def getChannelShortPackagesXmlStream(self):
        return ShortPackageDiskSource(self.mountpoint)

    def getPackageXmlStream(self):
        return PackageDiskSource(self.mountpoint)

    def getSourcePackageXmlStream(self):
        return SourcePackageDiskSource(self.mountpoint)

    def getKickstartsXmlStream(self):
        return KickstartDataDiskSource(self.mountpoint)

    def getErrataXmlStream(self):
        return ErrataDiskSource(self.mountpoint)

    def getSupportInformationXmlStream(self):
        return SupportInformationDiskSource(self.mountpoint).load()

    def getSuseProductsXmlStream(self):
        return SuseProductsDiskSource(self.mountpoint).load()

    def getSuseProductChannelsXmlStream(self):
        return SuseProductChannelsDiskSource(self.mountpoint).load()

    def getSuseUpgradePathsXmlStream(self):
        return SuseUpgradePathsDiskSource(self.mountpoint).load()

    def getSuseProductExtensionsXmlStream(self):
        return SuseProductExtensionsDiskSource(self.mountpoint).load()

    def getSuseProductRepositoriesXmlStream(self):
        return SuseProductRepositoriesDiskSource(self.mountpoint).load()

    def getSCCRepositoriesXmlStream(self):
        return SCCRepositoriesDiskSource(self.mountpoint).load()

    def getSuseSubscriptionsXmlStream(self):
        return SuseSubscriptionsDiskSource(self.mountpoint).load()

    def getClonedChannelsXmlStream(self):
        return ClonedChannelsDiskSource(self.mountpoint).load()

class SupportInformationDiskSource(DiskSource):
    subdir = 'support_info'

    def _getFile(self, create=0):
        dirname = self._getDir(create)
        if create and not os.path.isdir(dirname):
            createPath(dirname)
        return "%s/support_info.xml" % dirname

class SuseProductsDiskSource(DiskSource):
    subdir = 'suse_products'

    def _getFile(self, create=0):
        dirname = self._getDir(create)
        if create and not os.path.isdir(dirname):
            createPath(dirname)
        return "%s/suse_products.xml" % dirname

class SuseProductChannelsDiskSource(DiskSource):
    subdir = 'suse_products'

    def _getFile(self, create=0):
        dirname = self._getDir(create)
        if create and not os.path.isdir(dirname):
            createPath(dirname)
        return "%s/suse_product_channels.xml" % dirname

class SuseUpgradePathsDiskSource(DiskSource):
    subdir = 'suse_products'

    def _getFile(self, create=0):
        dirname = self._getDir(create)
        if create and not os.path.isdir(dirname):
            createPath(dirname)
        return "%s/suse_upgrade_paths.xml" % dirname

class SuseProductExtensionsDiskSource(DiskSource):
    subdir = 'suse_product_extensions'

    def _getFile(self, create=0):
        dirname = self._getDir(create)
        if create and not os.path.isdir(dirname):
            createPath(dirname)
        return "%s/suse_product_extensions.xml" % dirname

class SuseProductRepositoriesDiskSource(DiskSource):
    subdir = 'suse_product_repositories'

    def _getFile(self, create=0):
        dirname = self._getDir(create)
        if create and not os.path.isdir(dirname):
            createPath(dirname)
        return "%s/suse_product_repositories.xml" % dirname

class SCCRepositoriesDiskSource(DiskSource):
    subdir = 'scc_repositories'

    def _getFile(self, create=0):
        dirname = self._getDir(create)
        if create and not os.path.isdir(dirname):
            createPath(dirname)
        return "%s/scc_repositories.xml" % dirname

class SuseSubscriptionsDiskSource(DiskSource):
    subdir = 'suse_products'

    def _getFile(self, create=0):
        dirname = self._getDir(create)
        if create and not os.path.isdir(dirname):
            createPath(dirname)
        return "%s/suse_subscriptions.xml" % dirname

class ClonedChannelsDiskSource(DiskSource):
    subdir = 'suse_products'

    def _getFile(self, create=0):
        dirname = self._getDir(create)
        if create and not os.path.isdir(dirname):
            createPath(dirname)
        return "%s/cloned_channels.xml" % dirname

if __name__ == '__main__':
    # TEST CODE
    s = ChannelDiskSource("/tmp")
    print((s.list()))
    s.setChannel("redhat-linux-i386-7.2")
    print((s.load()))
 0707010000011E000081B40000000000000000000000016290A0C10000A6F6000000000000000000000000000000000000002F00000000spacewalk-backend/satellite_tools/xmlSource.py    #
# Decoding data from XML streams
#
# Copyright (c) 2008--2018 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#

import sys
import re
from xml.sax import make_parser, SAXParseException, ContentHandler, \
    ErrorHandler

from uyuni.common import usix
from spacewalk.common import rhnFlags
from spacewalk.common.rhnLog import log_debug
from spacewalk.common.rhnConfig import CFG
from spacewalk.common.rhnTB import Traceback
from spacewalk.server.importlib import importLib, backendLib

RHEL234_REGEX = re.compile("rhel-[^-]*-[aew]s-(4|3|2.1)")

# Terminology used throughout this file:
# Item: an atomic entity from the database's perspective.
#   A channel, or a package, or an erratum is an item.
# Container: a list of items
#   We work under the assumption everything on the second level (i.e. a child
#   of the root element) is a container.

# The way the parser works: get a handler with getHandler() and call process()
# with an XML stream.

# Our parser exceptions


class ParseException(Exception):

    """general parser exception (generated at this level).
    """
    pass


class _EndContainerEvent(Exception):

    def __init__(self, container):
        Exception.__init__(self)
        self.container = container


class IncompatibleVersionError(ParseException):

    def __init__(self, stream_version, parser_version, *args):
        ParseException.__init__(self, *args)
        self.stream_version = stream_version
        self.parser_version = parser_version

# XML parser exception wrappers
# Exposed functionality for the next three include:
#    getColumnNumber(), getLineNumber(), and _msg (or just str(e))


class RecoverableParseException(SAXParseException, Exception):

    """exception wrapper for a critical, but possibly recoverable, XML parser
       error.
    """
    pass


class FatalParseException(SAXParseException, Exception):

    """exception wrapper for a critical XML parser error.
    """
    pass

# XML Node


class Node:

    def __init__(self, name, attributes=None, subelements=None):
        self.name = name
        if attributes is None:
            attributes = {}
        if subelements is None:
            subelements = []
        self.attributes = attributes
        self.subelements = subelements

    def addSubelement(self, e):
        self.subelements.append(e)

    def __repr__(self):
        return "[<Node element: name=%s>]" % self.name


# Base class we use as a SAX parsing handler
class BaseDispatchHandler(ContentHandler, ErrorHandler):

    """ Base class we use as a SAX parsing handler

        We expect the meaningful data to be on the third level.
        The root element defines what the export contains, while the collection
        element defines what this collection contains
    """
    rootElement = None  # non-static
    __stream = None
    container_dispatch = {}

    def __init__(self):
        super(ContentHandler, self).__init__()
        self.rootAttributes = None
        self.__parser = make_parser()
        # Init the parser's handlers
        self.restoreParser()
        # No container at this time
        self.__container = None
        # Reset all the containers, to make sure previous runs don't leave
        # garbage data
        for container in list(self.container_dispatch.values()):
            container.reset()

    def restoreParser(self):
        # Restore the parser's handlers to self
        self.__parser.setContentHandler(self)
        self.__parser.setErrorHandler(self)

    def setStream(self, stream):
        self.__stream = stream

    # Starts processing the data from the XML stream
    def process(self, stream=None):
        log_debug(6)
        if stream is not None:
            self.setStream(stream)
        try:
            self.__parser.parse(self.__stream)
        except (KeyboardInterrupt, SystemExit):
            raise
        except Exception:  # pylint: disable=E0012, W0703
            Traceback(ostream=sys.stderr, with_locals=1)
            if stream is not None:
                stream.close()
            sys.exit(1)

    def reset(self):
        self.close()
        # Re-init
        self.__init__()

    def close(self):
        # WARNING: better call this function when you're done, or you'll end
        # up with a circular reference
        self.__parser = None

    def clear(self):
        # clear out the current container's parse batch; start afresh
        if self.__container:
            try:
                self.__container.batch = []
            except (KeyboardInterrupt, SystemExit):
                raise
            except Exception:
                e = sys.exc_info()[1]
                log_debug(-1, 'ERROR (odd) upon container.batch=[] cleanup: %s' % e)
                raise

    # Interface with containers
    def set_container(self, obj):
        if not hasattr(obj, "container_name"):
            raise Exception("%s not a container type" % type(obj))

        # reset the container (to clean up garbage from previous parses)
        obj.reset()
        self.container_dispatch[obj.container_name] = obj

    def get_container(self, name):
        if name not in self.container_dispatch:
            # Return a dummy container
            c = ContainerHandler()
            c.container_name = name
            return c

        return self.container_dispatch[name]

    def has_container(self, name):
        return (name in self.container_dispatch)

    # Overwrite the functions required by SAX
    def setDocumentLocator(self, locator):
        ContentHandler.setDocumentLocator(self, locator)

    # def startDocument(self):

    # def endDocument(self):

    def startElement(self, name, attrs):
        log_debug(6, name)
        utf8_attrs = _dict_to_utf8(attrs)
        if self.rootAttributes is None:
            # First time around
            if self.rootElement != name:
                raise Exception("Mismatching elements; root='%s', "
                                "received='%s'" % (self.rootElement, name))
            self.rootAttributes = utf8_attrs
            self._check_version()
            return

        if self.__container is None:
            # This means it's parsing a container element
            self.__container = self.get_container(name)

        self.__container.startElement(name, utf8_attrs)

    def characters(self, content):
        if self.__container:
            self.__container.characters(_stringify(content))

    def endElement(self, name):
        log_debug(6, name)
        if self.__container is None:
            # End of the root attribute
            # We know now the tag stack is empty
            self.rootAttributes = None
            return

        try:
            self.__container.endElement(name)
        except _EndContainerEvent:
            self.__container = None

    #___Error handling methods___

    # pylint: disable=W0212,W0710
    def error(self, exception):
        """Handle a recoverable error.
        """
        log_debug(-1, "ERROR (RECOVERABLE): parse error encountered - line: %s, col: %s, msg: %s"
                  % (exception.getLineNumber(), exception.getColumnNumber(), exception._msg))
        raise RecoverableParseException(exception._msg, exception, exception._locator)

    def fatalError(self, exception):
        """Handle a non-recoverable error.
        """
        log_debug(-1, "ERROR (FATAL): parse error encountered - line: %s, col: %s, msg: %s"
                  % (exception.getLineNumber(), exception.getColumnNumber(), exception._msg))
        raise FatalParseException(exception._msg, exception, exception._locator)

    def warning(self, exception):
        """Handle a warning.
        """
        log_debug(-1, "ERROR (WARNING): parse error encountered - line: %s, col: %s, msg: %s"
                  % (exception.getLineNumber(), exception.getColumnNumber(), exception._msg))

    # To be overridden in subclasses
    def _check_version(self):
        pass

# Particular case: a satellite handler


class SatelliteDispatchHandler(BaseDispatchHandler):
    rootElement = 'rhn-satellite'
    # this is the oldest version of channel dump we support
    version = "3.0"

    # Historical log
    # * Version 2.2 2004-03-02
    #    arch types introduced in all the arch dumps
    # * Version 2.3 2004-09-13
    #    added short package dumps per channel
    # * Version 3.0 2005-01-13
    #    required major version change for channel family merging (#136525)

    def _check_version(self):
        # Check the version
        version = self.rootAttributes.get("version")
        # Entitlement/certificate generation
        generation = self.rootAttributes.get("generation")
        rhnFlags.set("stream-generation", generation)
        if not version:
            version = "0"
        stream_version = list(map(int, version.split('.')))
        allowed_version = list(map(int, self.version.split(".")))
        if (stream_version[0] != allowed_version[0] or
                stream_version[1] < allowed_version[1]):
            raise IncompatibleVersionError(version, self.version,
                                           "Incompatible stream version %s; code supports %s" % (
                                               version, self.version))

# Element handler


class BaseItem:
    item_name = None
    item_class = object
    tagMap = {}

    def __init__(self):
        pass

    def populate(self, attributes, elements):
        item = self.item_class()
        # Populate the item from the attribute data structure
        self.populateFromAttributes(item, attributes)
        # Populate the item from sub-elements
        self.populateFromElements(item, elements)
        return item

    def populateFromAttributes(self, obj, sourceDict):
        # Populates dict with items from sourceDict
        for key, value in list(sourceDict.items()):
            if key not in self.tagMap:
                if key not in obj:
                    # Unsupported key
                    continue
            else:
                # Have to map this key
                key = self.tagMap[key]

            # Finally, update the key
            obj[key] = _normalizeAttribute(obj.attributeTypes.get(key), value)

    def populateFromElements(self, obj, elements):
        # Populates obj with `elements' as subelements
        keys = list(obj.keys())
        keys_len = len(keys)
        for element in elements:
            if _is_string(element):
                if keys_len != 1:
                    if not element.strip():
                        # White space around an element - skip
                        continue
                    # Ambiguity: don't know which attribute to initialize
                    raise Exception("Ambiguity %s" % keys)
                # Init the only attribute we know of
                obj[keys[0]] = element
                continue
            name = element.name
            if name not in obj and name not in self.tagMap:
                # Unsupported key
                continue
            if name in self.tagMap:
                # Have to map this element
                name = self.tagMap[name]
            value = _normalizeSubelements(obj.attributeTypes.get(name),
                                          element.subelements)
            obj[name] = value


def _is_string(obj):
    if isinstance(obj, usix.StringType):
        return 1
    if isinstance(obj, usix.UnicodeType):
        return 1
    return 0


def _stringify(data):
    # Accelerate the most common cases
    if isinstance(data, usix.StringType):
        return data
    elif isinstance(data, usix.UnicodeType):
        return data.encode('UTF8')
    return str(data)


def _dict_to_utf8(d):
    # Convert the dictionary to have non-unocide key-value pairs
    ret = {}
    for k, v in list(d.items()):
        if isinstance(k, usix.UnicodeType):
            k = k.encode('UTF8')
        if isinstance(v, usix.UnicodeType):
            v = v.encode('UTF8')
        ret[k] = v
    return ret


__itemDispatcher = {}


def addItem(classobj):
    __itemDispatcher[classobj.item_name] = classobj


def _createItem(element):
    # Creates an Item object from the specified element
    if element.name not in __itemDispatcher:
        # No item processor
        return None
    item = __itemDispatcher[element.name]()
    return item.populate(element.attributes, element.subelements)

#
# ITEMS:
#


class BaseArchItem(BaseItem):
    pass


class ServerArchItem(BaseArchItem):
    item_name = 'rhn-server-arch'
    item_class = importLib.ServerArch
addItem(ServerArchItem)


class PackageArchItem(BaseArchItem):
    item_name = 'rhn-package-arch'
    item_class = importLib.PackageArch
addItem(PackageArchItem)


class ChannelArchItem(BaseArchItem):
    item_name = 'rhn-channel-arch'
    item_class = importLib.ChannelArch
addItem(ChannelArchItem)


class CPUArchItem(BaseItem):
    item_name = 'rhn-cpu-arch'
    item_class = importLib.CPUArch
addItem(CPUArchItem)


class ServerPackageArchCompatItem(BaseItem):
    item_name = 'rhn-server-package-arch-compat'
    item_class = importLib.ServerPackageArchCompat
addItem(ServerPackageArchCompatItem)


class ServerChannelArchCompatItem(BaseItem):
    item_name = 'rhn-server-channel-arch-compat'
    item_class = importLib.ServerChannelArchCompat
addItem(ServerChannelArchCompatItem)


class ChannelPackageArchCompatItem(BaseItem):
    item_name = 'rhn-channel-package-arch-compat'
    item_class = importLib.ChannelPackageArchCompat
addItem(ChannelPackageArchCompatItem)


class ServerGroupServerArchCompatItem(BaseItem):
    item_name = 'rhn-server-group-server-arch-compat'
    item_class = importLib.ServerGroupServerArchCompat
addItem(ServerGroupServerArchCompatItem)


class ChannelFamilyItem(BaseItem):
    item_name = 'rhn-channel-family'
    item_class = importLib.ChannelFamily
    tagMap = {
        'id': 'channel-family-id',
        # max_members is no longer populated from the xml dump, but from the
        # satellite cert
        'rhn-channel-family-name': 'name',
        'rhn-channel-family-product-url': 'product_url',
        'channel-labels': 'channels',
    }
addItem(ChannelFamilyItem)


class ChannelItem(BaseItem):
    item_name = 'rhn-channel'
    item_class = importLib.Channel
    tagMap = {
        'channel-id': 'string_channel_id',
        'org-id': 'org_id',
        'rhn-channel-parent-channel': 'parent_channel',
        'rhn-channel-families': 'families',
        'channel-arch': 'channel_arch',
        'rhn-channel-basedir': 'basedir',
        'rhn-channel-name': 'name',
        'rhn-channel-summary': 'summary',
        'rhn-channel-description': 'description',
        'rhn-channel-last-modified': 'last_modified',
        'rhn-dists': 'dists',
        'rhn-release': 'release',
        'channel-errata': 'errata',
        'kickstartable-trees': 'kickstartable_trees',
        'rhn-channel-errata': 'errata_timestamps',
        'source-packages': 'source_packages',
        'rhn-channel-gpg-key-url': 'gpg_key_url',
        'rhn-channel-product-name': 'product_name',
        'rhn-channel-product-version': 'product_version',
        'rhn-channel-product-beta': 'product_beta',
        'rhn-channel-receiving-updates': 'receiving_updates',
        'rhn-channel-checksum-type': 'checksum_type',
        'rhn-channel-comps-last-modified': 'comps_last_modified',
        'rhn-channel-modules-last-modified': 'modules_last_modified',
        'sharing': 'channel_access',
        'rhn-channel-trusted-orgs': 'trust_list',
        'rhn-channel-update-tag': 'update_tag',
        'rhn-channel-installer-updates': 'installer_updates',
        'suse-data': 'package_keywords',
    }

    def populateFromElements(self, obj, elements):
        # bz 808516, to retain compatibility with Satellite <= 5.3 we
        # need to assume sha1 checksum type unless we explicitly see
        # 'rhn-null' in the xml
        checksum_type_really_null = False
        for element in elements:
            if (not _is_string(element)
                    and element.name == 'rhn-channel-checksum-type'):
                for subelement in element.subelements:
                    if (not _is_string(subelement)
                            and subelement.name == 'rhn-null'):
                        checksum_type_really_null = True

        BaseItem.populateFromElements(self, obj, elements)

        if obj['checksum_type'] == 'sha':
            obj['checksum_type'] = 'sha1'
        if not obj['checksum_type'] and not checksum_type_really_null:
            obj['checksum_type'] = 'sha1'

        # if importing from an old export that does not know about
        # channel_access, use the default
        if not obj['channel_access']:
            obj['channel_access'] = 'private'

        # if using versions of rhel that doesn't use yum, set
        # checksum_type to None
        if (RHEL234_REGEX.match(obj['label'])
                or (obj['parent_channel']
                    and RHEL234_REGEX.match(obj['parent_channel']))):
            obj['checksum_type'] = None

addItem(ChannelItem)


class ChannelTrustItem(BaseItem):
    item_name = 'rhn-channel-trusted-org'
    item_class = importLib.ChannelTrust
    tagMap = {
        'org-id': 'org_trust_id',
    }
addItem(ChannelTrustItem)


class OrgTrustItem(BaseItem):
    item_name = 'rhn-org-trust'
    item_class = importLib.OrgTrust
    tagMap = {
        'org-id': 'org_id',
    }
addItem(OrgTrustItem)


class OrgItem(BaseItem):
    item_name = 'rhn-org'
    item_class = importLib.Org
    tagMap = {
        'id': 'id',
        'name': 'name',
        'rhn-org-trusts': 'org_trust_ids',
    }
addItem(OrgItem)


class BaseChecksummedItem(BaseItem):

    def populate(self, attributes, elements):
        item = BaseItem.populate(self, attributes, elements)
        item['checksums'] = {}
        if 'md5sum' in item:
            # xml dumps < 3.6 (aka pre-sha256)
            if item['md5sum']:
                item['checksums']['md5'] = item['md5sum']
            del(item['md5sum'])
        if 'checksum_list' in item and item['checksum_list']:
            for csum in item['checksum_list']:
                item['checksums'][csum['type']] = csum['value']
            del(item['checksum_list'])
        for ctype in CFG.CHECKSUM_PRIORITY_LIST:
            if ctype in item['checksums']:
                item['checksum_type'] = ctype
                item['checksum'] = item['checksums'][ctype]
                break
        return item
addItem(BaseChecksummedItem)


class IncompletePackageItem(BaseChecksummedItem):
    item_name = 'rhn-package-short'
    item_class = importLib.IncompletePackage
    tagMap = {
        'id': 'package_id',
        'package-size': 'package_size',
        'last-modified': 'last_modified',
        'package-arch': 'arch',
        'org-id': 'org_id',
        'checksums': 'checksum_list',
    }
addItem(IncompletePackageItem)


class ChecksumItem(BaseItem):
    item_name = 'checksum'
    item_class = importLib.Checksum
    tagMap = {
        'checksum-type': 'type',
        'checksum-value': 'value',
    }
addItem(ChecksumItem)


class PackageItem(IncompletePackageItem):
    item_name = 'rhn-package'
    item_class = importLib.Package
    tagMap = {
        # Stuff coming through as attributes
        'package-group': 'package_group',
        'rpm-version': 'rpm_version',
        'payload-size': 'payload_size',
        'build-host': 'build_host',
        'build-time': 'build_time',
        'source-rpm': 'source_rpm',
        'payload-format': 'payload_format',
        # Stuff coming through as subelements
        'rhn-package-summary': 'summary',
        'rhn-package-description': 'description',
        'rhn-package-vendor': 'vendor',
        'rhn-package-copyright': 'license',
        'rhn-package-header-sig': 'header_sig',
        # These are duplicated as attributes, should go away eventually
        'rhn-package-package-group': 'package_group',
        'rhn-package-rpm-version': 'rpm_version',
        'rhn-package-payload-size': 'payload_size',
        'rhn-package-header-start': 'header_start',
        'rhn-package-header-end': 'header_end',
        'rhn-package-build-host': 'build_host',
        'rhn-package-build-time': 'build_time',
        'rhn-package-source-rpm': 'source_rpm',
        'rhn-package-payload-format': 'payload_format',
        'rhn-package-cookie': 'cookie',
        #
        'rhn-package-files': 'files',
        'rhn-package-requires': 'requires',
        'rhn-package-provides': 'provides',
        'rhn-package-conflicts': 'conflicts',
        'rhn-package-obsoletes': 'obsoletes',
        'rhn-package-recommends': 'recommends',
        'rhn-package-suggests': 'suggests',
        'rhn-package-supplements': 'supplements',
        'rhn-package-enhances': 'enhances',
        'rhn-package-changelog': 'changelog',
        'suse-product-file': 'product_files',
        'suse-eula': 'eulas',
        'pkg-extratag': 'extra_tags',
    }
    tagMap.update(IncompletePackageItem.tagMap)

    def populate(self, attributes, elements):
        item = IncompletePackageItem.populate(self, attributes, elements)
        # find out "primary" checksum
        # let's use the best we have
        # pylint: disable=bad-option-value,unsubscriptable-object,unsupported-assignment-operation
        #have_filedigests = len([1 for i in item['requires'] if i['name'] == 'rpmlib(FileDigests)'])
        #if not have_filedigests:
        #    item['checksum_type'] = 'md5'
        #    item['checksum'] = item['checksums']['md5']
        return item
addItem(PackageItem)


class IncompleteSourcePackageItem(BaseItem):
    item_name = 'source-package'
    item_class = importLib.IncompleteSourcePackage
    tagMap = {
        'last-modified': 'last_modified',
        'source-rpm': 'source_rpm',
    }
addItem(IncompleteSourcePackageItem)


class SourcePackageItem(BaseItem):
    item_name = 'rhn-source-package'
    item_class = importLib.SourcePackage
    tagMap = {
        'id': 'package_id',
        'source-rpm': 'source_rpm',
        'package-group': 'package_group',
        'rpm-version': 'rpm_version',
        'payload-size': 'payload_size',
        'build-host': 'build_host',
        'build-time': 'build_time',
        'package-size': 'package_size',
        'last-modified': 'last_modified',
    }
addItem(SourcePackageItem)


class ChangelogItem(BaseItem):
    item_name = 'rhn-package-changelog-entry'
    item_class = importLib.ChangeLog
    tagMap = {
        'rhn-package-changelog-entry-name': 'name',
        'rhn-package-changelog-entry-text': 'text',
        'rhn-package-changelog-entry-time': 'time',
    }
addItem(ChangelogItem)

class ProductFileItem(BaseItem):
    item_name = 'suse-product-file-entry'
    item_class = importLib.ProductFile
    tagMap = {
        'suse-product-file-entry-name'        : 'name',
        'suse-product-file-entry-epoch'       : 'epoch',
        'suse-product-file-entry-version'     : 'version',
        'suse-product-file-entry-release'     : 'release',
        'suse-product-file-entry-arch'        : 'arch',
        'suse-product-file-entry-vendor'      : 'vendor',
        'suse-product-file-entry-summary'     : 'summary',
        'suse-product-file-entry-description' : 'description',
    }
addItem(ProductFileItem)

class EulaItem(BaseItem):
    item_name = 'suse-eula-entry'
    item_class = importLib.Eula
    tagMap = {
        'suse-eula-entry-text'     : 'text',
        'suse-eula-entry-checksum' : 'checksum',
    }
addItem(EulaItem)

class ExtraTagItem(BaseItem):
    item_name = 'pkg-extratag-entry'
    item_class = importLib.ExtraTag
    tagMap = {
        'pkg-extratag-entry-name'     : 'name',
        'pkg-extratag-entry-value'    : 'value',
    }
addItem(ExtraTagItem)

class DependencyItem(BaseItem):

    """virtual class - common settings for dependency items"""
    item_class = importLib.Dependency
    tagMap = {
        'sense': 'flags',
    }


class ProvidesItem(DependencyItem):
    item_name = 'rhn-package-provides-entry'
addItem(ProvidesItem)


class RequiresItem(DependencyItem):
    item_name = 'rhn-package-requires-entry'
addItem(RequiresItem)


class ConflictsItem(DependencyItem):
    item_name = 'rhn-package-conflicts-entry'
addItem(ConflictsItem)


class ObsoletesItem(DependencyItem):
    item_name = 'rhn-package-obsoletes-entry'
addItem(ObsoletesItem)


class RecommendsItem(DependencyItem):
    item_name = 'rhn-package-recommends-entry'
addItem(RecommendsItem)


class SuggestsItem(DependencyItem):
    item_name = 'rhn-package-suggests-entry'
addItem(SuggestsItem)


class SupplementsItem(DependencyItem):
    item_name = 'rhn-package-supplements-entry'
addItem(SupplementsItem)


class EnhancesItem(DependencyItem):
    item_name = 'rhn-package-enhances-entry'
addItem(EnhancesItem)


class FileItem(BaseChecksummedItem):
    item_name = 'rhn-package-file'
    item_class = importLib.File
    tagMap = {
        'checksum-type': 'checksum_type',
    }

    def populate(self, attributes, elements):
        if 'md5' in attributes and 'checksum-type' not in attributes:
            attributes['checksum-type'] = 'md5'
            attributes['checksum'] = attributes['md5']
        item = BaseChecksummedItem.populate(self, attributes, elements)
        return item
addItem(FileItem)


class DistItem(BaseItem):
    item_name = 'rhn-dist'
    item_class = importLib.DistChannelMap
    tagMap = {
        'channel-arch': 'channel_arch',
    }
addItem(DistItem)

class SupportInfoItem(BaseItem):
    item_name = 'suse-keyword'
    item_class = importLib.SupportInformation
addItem(SupportInfoItem)

class SuseProductItem(BaseItem):
    item_name = 'suse-product'
    item_class = importLib.SuseProduct
    tagMap = {
        'product-id'           : 'product_id',
        'friendly-name'        : 'friendly_name',
        'release-stage'        : 'release_stage',
        'channel-family-label' : 'channel_family_label'
    }
addItem(SuseProductItem)

class SuseProductChannelItem(BaseItem):
    item_name = 'suse-product-channel'
    item_class = importLib.SuseProductChannel
    tagMap = {
        'product-id'           : 'product_id',
        'channel-label'        : 'channel_label',
        'parent-channel-label' : 'parent_channel_label',
    }
addItem(SuseProductChannelItem)

class SuseUpgradePathItem(BaseItem):
    item_name = 'suse-upgrade-path'
    item_class = importLib.SuseUpgradePath
    tagMap = {
        'from-product-id' : 'from_product_id',
        'to-product-id'   : 'to_product_id',
    }
addItem(SuseUpgradePathItem)

class SuseProductExtensionItem(BaseItem):
    item_name = 'suse-product-extension'
    item_class = importLib.SuseProductExtension
    tagMap = {
        'product-id'    : 'product_id',
        'root-product-id' : 'root_id',
        'ext-product-id' : 'ext_id',
        'recommended': 'recommended'
    }
addItem(SuseProductExtensionItem)

class SuseProductRepositoryItem(BaseItem):
    item_name = 'suse-product-repository'
    item_class = importLib.SuseProductRepository
    tagMap = {
        'product-id'    : 'product_id',
        'root-product-id' : 'rootid',
        'repository-id' : 'repo_id',
        'channel-label': 'channel_label',
        'parent-channel-label': 'parent_channel_label',
        'channel-name': 'channel_name',
        'mandatory': 'mandatory',
        'update-tag': 'update_tag'
    }
addItem(SuseProductRepositoryItem)

class SCCRepositoryItem(BaseItem):
    item_name = 'scc-repository'
    item_class = importLib.SCCRepository
    tagMap = {
            'scc-id' : 'sccid',
            'autorefresh' : 'autorefresh',
            'name' : 'name',
            'distro-target': 'distro_target',
            'description': 'description',
            'url': 'url',
            'signed': 'signed',
            'installer_updates': 'installer_updates'
    }
addItem(SCCRepositoryItem)

class SuseSubscriptionItem(BaseItem):
    item_name = 'suse-subscription'
    item_class = importLib.SuseSubscription
    tagMap = {
        'sub-label'       : 'label',
        'sub-max-members' : 'max_members',
        'sub-system-ent'  : 'system_entitlement'
    }
addItem(SuseSubscriptionItem)

class ClonedChannelItem(BaseItem):
    item_name = 'cloned-channel'
    item_class = importLib.ClonedChannel
    tagMap = {
        'orig'  : 'orig',
        'clone' : 'clone'
    }
addItem(ClonedChannelItem)

class ChannelErratumItem(BaseItem):
    item_name = 'erratum'
    item_class = importLib.ChannelErratum
    tagMap = {
        'last-modified': 'last_modified',
        'advisory-name': 'advisory_name',
    }
addItem(ChannelErratumItem)


class ReleaseItem(BaseItem):
    item_name = 'rhn-release'
    item_class = importLib.ReleaseChannelMap
    tagMap = {
        'channel-arch': 'channel_arch'
    }
addItem(ReleaseItem)


class BugItem(BaseItem):
    item_name = 'rhn-erratum-bug'
    item_class = importLib.Bug
    tagMap = {
        'rhn-erratum-bug-id': 'bug_id',
        'rhn-erratum-bug-summary': 'summary',
        'rhn-erratum-bug-href': 'href',
    }
addItem(BugItem)


class KeywordItem(BaseItem):
    item_name = 'rhn-erratum-keyword'
    item_class = importLib.Keyword
    tagMap = {
    }
addItem(KeywordItem)


class ErratumItem(BaseItem):
    item_name = 'rhn-erratum'
    item_class = importLib.Erratum
    tagMap = {
        'id': 'erratum_id',
        'org-id': 'org_id',
        'rhn-erratum-advisory-name': 'advisory_name',
        'rhn-erratum-advisory-rel': 'advisory_rel',
        'rhn-erratum-advisory-type': 'advisory_type',
        'rhn-erratum-advisory-status': 'advisory_status',
        'rhn-erratum-product': 'product',
        'rhn-erratum-description': 'description',
        'rhn-erratum-synopsis': 'synopsis',
        'rhn-erratum-topic': 'topic',
        'rhn-erratum-solution': 'solution',
        'rhn-erratum-issue-date': 'issue_date',
        'rhn-erratum-update-date': 'update_date',
        'rhn-erratum-notes': 'notes',
        'rhn-erratum-org-id': 'org_id',
        'rhn-erratum-refers-to': 'refers_to',
        'rhn-erratum-channels': 'channels',
        'rhn-erratum-keywords': 'keywords',
        'rhn-erratum-checksums': 'checksums',
        'rhn-erratum-bugs': 'bugs',
        'rhn-erratum-cve': 'cve',
        'rhn-erratum-last-modified': 'last_modified',
        'rhn-erratum-files': 'files',
        'rhn-erratum-errata-from': 'errata_from',
        'rhn-erratum-severity': 'severity',
        'cve-names': 'cve',
    }
addItem(ErratumItem)


class ErrorItem(BaseItem):
    item_name = 'rhn-error'
    item_class = importLib.Error
addItem(ErrorItem)


class ErrataFileItem(BaseChecksummedItem):
    item_name = 'rhn-erratum-file'
    item_class = importLib.ErrataFile
    tagMap = {
        'type': 'file_type',
        'channels': 'channel_list',
        # Specific to XML
        'package': 'package',
        'source-package': 'source-package',
        'checksum-type': 'checksum_type',
    }
addItem(ErrataFileItem)


class ProductNamesItem(BaseItem):
    item_name = 'rhn-product-name'
    item_class = importLib.ProductName
addItem(ProductNamesItem)


class KickstartableTreeItem(BaseItem):
    item_name = 'rhn-kickstartable-tree'
    item_class = importLib.KickstartableTree
    tagMap = {
        'rhn-kickstart-files': 'files',
        'base-path': 'base_path',
        'boot-image': 'boot_image',
        'kstree-type-label': 'kstree_type_label',
        'install-type-label': 'install_type_label',
        'kstree-type-name': 'kstree_type_name',
        'install-type-name': 'install_type_name',
        'last-modified': 'last_modified',
    }
addItem(KickstartableTreeItem)


class KickstartFileItem(BaseChecksummedItem):
    item_name = 'rhn-kickstart-file'
    item_class = importLib.KickstartFile
    tagMap = {
        'relative-path': 'relative_path',
        'file-size': 'file_size',
        'last-modified': 'last_modified',
        'checksums': 'checksum_list',
    }
addItem(KickstartFileItem)

#
# Container handler and containers:
#


class ContainerHandler:
    container_name = None

    def __init__(self):
        # The tag stack; each item is an array [element, attributes]
        self.tagStack = []
        # The object stack; each item is an array
        # [element, attributes, content]
        self.objStack = []
        # Collects the elements in a batch
        self.batch = []

    def reset(self):
        # Make sure the batch is preserved
        batch = self.batch
        # Re-init the object: cleans up the stacks and such
        self.__init__()
        # And restore the batch
        self.batch = batch

    def startElement(self, element, attrs):
        # log_debug(6, element) --duplicate logging.
        if not self.tagStack and element != self.container_name:
            # Strange; this element is called to parse stuff when it's not
            # supposed to
            raise Exception('This object should not have been used')
        self.tagStack.append(Node(element, attrs))
        self.objStack.append([])

    def characters(self, data):
        log_debug(6, data)
        if data == '':
            # Nothing to do
            return
        # If the thing in front is a string, append to it
        lastObj = self.objStack[-1]
        if lastObj and _is_string(lastObj[-1]):
            lastObj[-1] = '%s%s' % (lastObj[-1], data)
        else:
            lastObj.append(data)

    def endElement(self, element):
        # log_debug(6, element) --duplicate logging.
        tagobj = self.tagStack[-1]
        # Remove the previous tag
        del self.tagStack[-1]
        # Decode the tag object
        name = tagobj.name
        if name != element:
            raise ParseException(
                "incorrect XML data: closing tag %s, opening tag %s" % (
                    element, name))
        # Append the content of the object to the tag object
        for obj in self.objStack[-1]:
            tagobj.addSubelement(obj)

        # Remove the subelements from the stack
        del self.objStack[-1]

        if not self.objStack:
            # End element for this container
            self.endContainerCallback()
            raise _EndContainerEvent(tagobj)

        # Regular element; append the current object as a subelement to the
        # previous object
        self.objStack[-1].append(tagobj)
        if len(self.tagStack) == 1:
            # Finished parsing an item; let the parent know
            self.endItemCallback()

    def getLastItem(self):
        return self.objStack[-1][-1]

    def clearLastItem(self):
        del self.objStack[-1][-1]

    def endItemCallback(self):
        # Grab the latest object we've parsed
        obj = self.getLastItem()
        # And remove it since we don't need it
        self.clearLastItem()
        # Instantiate the object
        item = _createItem(obj)

        if item is None:
            # Nothing to do with this object
            return

        if 'error' in item:
            # Special case errors
            log_debug(0, 'XML parser error: found "rhn-error" item: %s' %
                      item['error'])
            raise ParseException(item['error'])

        self.postprocessItem(item)
        # Add it to the items list
        self.batch.append(item)

    def endContainerCallback(self):
        pass

    def postprocessItem(self, item):
        # Do nothing
        pass


def _normalizeSubelements(objtype, subelements):
    # pylint: disable=R0911
    # Deal with simple cases first
    if objtype is None:
        # Don't know how to handle it
        return _stringify(subelements)

    if not subelements:
        # No subelements available
        if isinstance(objtype, usix.ListType):
            # Expect a list of things - return the empty list
            return []
        # Expected a scalar type
        return None

    # We do have subelements
    # Extract all the non-string subelements
    _s = []
    _strings_only = 1
    for subel in subelements:
        if _is_string(subel) and not subel.strip():
            # Ignore it for now
            continue
        _s.append(subel)
        if not _is_string(subel):
            _strings_only = 0

    if _strings_only:
        # Multiple strings - contactenate into one
        subelements = [''.join(subelements)]
    else:
        # Ignore whitespaces around elements
        subelements = _s

    if not isinstance(objtype, usix.ListType):
        if len(subelements) > 1:
            raise Exception("Expected a scalar, got back a list")
        subelement = subelements[0]
        # NULL?
        if isinstance(subelement, Node):
            if subelement.name == 'rhn-null':
                return None
            raise Exception("Expected a scalar, got back an element '%s'" % subelement.name)

        if objtype is usix.StringType:
            return _stringify(subelement)

        if objtype is usix.IntType:
            if subelement == '':
                # Treat it as NULL
                return None
            return int(subelement)

        if objtype is importLib.DateType:
            return _normalizeDateType(subelement)
        raise Exception("Unhandled type %s for subelement %s" % (objtype,
                                                                 subelement))

    # Expecting a list of things
    expectedType = objtype[0]
    if expectedType is usix.StringType:
        # List of strings
        return list(map(_stringify, subelements))

    if expectedType is usix.IntType:
        # list of ints
        return list(map(int, subelements))

    if expectedType is importLib.DateType:
        return list(map(_normalizeDateType, subelements))

    # A subelement
    result = []
    for subelement in subelements:
        item = _createItem(subelement)
        if item is None:
            # Item processor not found
            continue
        if not isinstance(item, expectedType):
            raise Exception("Expected type %s, got back %s %s" % (expectedType,
                                                                  type(item), item))
        result.append(item)

    return result


def _normalizeAttribute(objtype, attribute):
    # Deal with simple cases first
    if (objtype is None) or (objtype is usix.StringType):
        # (Don't know how to handle it) or (Expecting a scalar)
        return attribute
    elif objtype is usix.IntType:
        if attribute == '' or attribute == 'None':
            # Treat it as NULL
            return None
        else:
            return int(attribute)
    elif objtype is importLib.DateType:
        return _normalizeDateType(attribute)
    elif isinstance(objtype, usix.ListType):
        # List type - split stuff
        return attribute.split()
    else:
        raise Exception("Unhandled attribute data type %s" % objtype)


def _normalizeDateType(value):
    try:
        value = int(value)
    except ValueError:
        # string
        return value
    # Timestamp
    return backendLib.localtime(value)


#
# Containers:
#
# XXX: we'll need an ErrorContainer eventually
#      (we do not handle <rhn-error> properly if it is
#       a "root" element).
# class ErrorContainer(ContainerHandler):
#    container_name = 'rhn-error'
#    def endContainerCallback(self):
#        lastObj = self.getLastItem()
#        raise ParseException(lastObj)


class ChannelFamilyContainer(ContainerHandler):
    container_name = 'rhn-channel-families'


class ChannelContainer(ContainerHandler):
    container_name = 'rhn-channels'


class IncompletePackageContainer(ContainerHandler):
    container_name = 'rhn-packages-short'

    def postprocessItem(self, item):
        channels = []
        for channel in item['channels'] or []:
            c = importLib.Channel()
            c['label'] = channel
            channels.append(c)
        item['channels'] = channels


class PackageContainer(IncompletePackageContainer):

    """Inherits from IncompletePackageContainer, since we need to postprocess the
       channel information
    """
    container_name = 'rhn-packages'


class SourcePackageContainer(ContainerHandler):
    container_name = 'rhn-source-packages'


class ErrataContainer(IncompletePackageContainer):
    container_name = 'rhn-errata'


class ServerArchContainer(ContainerHandler):
    container_name = 'rhn-server-arches'


class PackageArchContainer(ContainerHandler):
    container_name = 'rhn-package-arches'


class ChannelArchContainer(ContainerHandler):
    container_name = 'rhn-channel-arches'


class CPUArchContainer(ContainerHandler):
    container_name = 'rhn-cpu-arches'


class ServerPackageArchCompatContainer(ContainerHandler):
    container_name = 'rhn-server-package-arch-compatibility-map'


class ServerChannelArchCompatContainer(ContainerHandler):
    container_name = 'rhn-server-channel-arch-compatibility-map'


class ChannelPackageArchCompatContainer(ContainerHandler):
    container_name = 'rhn-channel-package-arch-compatibility-map'


class ServerGroupServerArchCompatContainer(ContainerHandler):
    container_name = 'rhn-server-group-server-arch-compatibility-map'


class ProductNamesContainer(ContainerHandler):
    container_name = 'rhn-product-names'


class KickstartableTreesContainer(ContainerHandler):
    container_name = 'rhn-kickstartable-trees'


class OrgContainer(ContainerHandler):
    container_name = 'rhn-orgs'

class SupportInformationContainer(ContainerHandler):
    container_name = 'suse-data'

class SuseProductsContainer(ContainerHandler):
    container_name = 'suse-products'

class SuseProductChannelsContainer(ContainerHandler):
    container_name = 'suse-product-channels'

class SuseUpgradePathsContainer(ContainerHandler):
    container_name = 'suse-upgrade-paths'

class SuseProductExtensionsContainer(ContainerHandler):
    container_name = 'suse-product-extensions'

class SuseProductRepositoriesContainer(ContainerHandler):
    container_name = 'suse-product-repositories'

class SCCRepositoriesContainer(ContainerHandler):
    container_name = 'scc-repositories'

class SuseSubscriptionsContainer(ContainerHandler):
    container_name = 'suse-subscriptions'

class ClonedChannelsContainer(ContainerHandler):
    container_name = 'cloned-channels'
  0707010000011F000081B40000000000000000000000016290A0C100004A51000000000000000000000000000000000000003300000000spacewalk-backend/satellite_tools/xmlWireSource.py    #
# Copyright (c) 2008--2018 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#


# pylint: disable=E0012, C0413
# system imports
import os
import sys
import time

# rhn imports
from rhn import rpclib
sys.path.append("/usr/share/rhn")
from up2date_client import config

from uyuni.common.usix import raise_with_tb
from uyuni.common import rhnLib
from spacewalk.common.rhnConfig import CFG

# local imports
from spacewalk.satellite_tools.syncLib import log, log2, RhnSyncException

from rhn import rpclib

from spacewalk.common.suseLib import get_proxy
from spacewalk.satellite_tools import connection

class BaseWireSource:

    """ Base object for wire-commo to RHN for delivery of XML/RPMS. """

    serverObj = None
    handler = ''
    url = ''
    sslYN = 0
    systemid = None
    server_handler = None
    xml_dump_version = None

    def __init__(self, systemid, sslYN=0, xml_dump_version=None):
        if not BaseWireSource.systemid:
            BaseWireSource.systemid = systemid
        BaseWireSource.sslYN = sslYN
        BaseWireSource.xml_dump_version = xml_dump_version

    def getServer(self, forcedYN=0):
        if forcedYN:
            self.setServer(self.handler, self.url, forcedYN)
        return BaseWireSource.serverObj

    def schemeAndUrl(self, url):
        """ http[s]://BLAHBLAHBLAH/ACKACK --> http[s]://BLAHBLAHBLAH """

        if not url:
            url = CFG.RHN_PARENT  # the default
        # just make the url complete.
        hostname = rhnLib.parseUrl(url or '')[1]
        hostname = hostname.split(':')[0]  # just in case
        if self.sslYN:
            url = 'https://' + hostname
        else:
            url = 'http://' + hostname
        return url

    def setServer(self, handler, url=None, forcedYN=0):
        """ XMLRPC server object (ssl set in parameters).
            NOTE: url expected to be of the form: scheme://machine/HANDLER
        """

        url = self.schemeAndUrl(url)

        if self._cached_connection_params(handler, url, forcedYN=forcedYN):
            # Already cached
            return

        self._set_connection_params(handler, url)

        url = '%s%s' % (url, handler)  # url is properly set up now.

        serverObj = self._set_connection(url)
        self._set_ssl_trusted_certs(serverObj)
        return serverObj

    @staticmethod
    def _set_connection_params(handler, url):
        BaseWireSource.handler = handler
        BaseWireSource.url = url

    def _cached_connection_params(self, handler, url, forcedYN=0):
        """Helper function; returns 0 if we have to reset the connection
        params, 1 if the cached values are ok"""
        if forcedYN:
            return 0
        if handler != self.handler or url != self.url:
            return 0
        return 1

    def _set_connection(self, url):
        "Instantiates a connection object"

        proxy, puser, ppass = get_proxy(url)
        serverObj = connection.StreamConnection(url, proxy=proxy,
                                                username=puser, password=ppass,
                                                xml_dump_version=self.xml_dump_version, timeout=CFG.timeout)
        BaseWireSource.serverObj = serverObj
        return serverObj

    def _set_ssl_trusted_certs(self, serverObj):
        if not self.sslYN:
            return None

        # Check certificate
        if CFG.ISS_PARENT:
            caChain = CFG.ISS_CA_CHAIN
        else:
            caChain = CFG.CA_CHAIN
        if caChain:
            # require RHNS-CA-CERT file to be able to authenticate the SSL
            # connections.
            if not os.access(caChain, os.R_OK):
                message = "ERROR: can not find SUSE Manager CA file: %s" % caChain
                log(-1, message, stream=sys.stderr)
                raise Exception(message)
            # force the validation of the SSL cert
            serverObj.add_trusted_cert(caChain)
            return caChain

        message = '--- Warning: SSL connection made but no CA certificate used'
        log(1, message, stream=sys.stderr)
        return None

    def _openSocketStream(self, method, params):
        """Wraps the gzipstream.GzipStream instantiation in a test block so we
           can open normally if stream is not gzipped."""

        stream = None
        retryYN = 0
        wait = 0.33
        lastErrorMsg = ''
        cfg = config.initUp2dateConfig()
        for i in range(cfg['networkRetries']):
            server = self.getServer(retryYN)
            if server is None:
                log2(-1, 2, 'ERROR: server unable to initialize, attempt %s' % i, stream=sys.stderr)
                retryYN = 1
                time.sleep(wait)
                continue
            func = getattr(server, method)
            try:
                stream = func(*params)
                if CFG.SYNC_TO_TEMP:
                    import tempfile
                    cached = tempfile.NamedTemporaryFile()
                    stream.read_to_file(cached)
                    cached.seek(0)
                    return cached
                else:
                    return stream
            except rpclib.xmlrpclib.ProtocolError:
                e = sys.exc_info()[1]
                p = tuple(['<the systemid>'] + list(params[1:]))
                lastErrorMsg = 'ERROR: server.%s%s: %s' % (method, p, e)
                log2(-1, 2, lastErrorMsg, stream=sys.stderr)
                retryYN = 1
                time.sleep(wait)
                # do not reraise this exception!
            except (KeyboardInterrupt, SystemExit):
                raise
            except rpclib.xmlrpclib.Fault:
                e = sys.exc_info()[1]
                lastErrorMsg = e.faultString
                break
            except Exception:  # pylint: disable=E0012, W0703
                e = sys.exc_info()[1]
                p = tuple(['<the systemid>'] + list(params[1:]))
                lastErrorMsg = 'ERROR: server.%s%s: %s' % (method, p, e)
                log2(-1, 2, lastErrorMsg, stream=sys.stderr)
                break
                # do not reraise this exception!
        if lastErrorMsg:
            raise_with_tb(RhnSyncException(lastErrorMsg), sys.exc_info()[2])
        # Returns a stream
        # Should never be reached
        return stream

    def setServerHandler(self, isIss=0):
        if isIss:
            self.server_handler = CFG.RHN_ISS_METADATA_HANDLER
        else:
            self.server_handler = CFG.RHN_METADATA_HANDLER


class MetadataWireSource(BaseWireSource):

    """retrieve specific xml stream through xmlrpc interface."""

    @staticmethod
    def is_disk_loader():
        return False

    def _prepare(self):
        self.setServer(self.server_handler)

    def getArchesXmlStream(self):
        """retrieve xml stream for arch data."""
        self._prepare()
        return self._openSocketStream("dump.arches", (self.systemid,))

    def getArchesExtraXmlStream(self):
        "retrieve xml stream for the server group type arch compat"
        self._prepare()
        return self._openSocketStream("dump.arches_extra", (self.systemid,))

    def getProductNamesXmlStream(self):
        "retrieve xml stream for the product names data"
        self._prepare()
        return self._openSocketStream("dump.product_names", (self.systemid,))

    def getChannelFamilyXmlStream(self):
        """retrieve xml stream for channel family data."""
        self._prepare()
        return self._openSocketStream("dump.channel_families", (self.systemid,))

    def getOrgsXmlStream(self):
        """retrieve xml stream for org data."""
        self._prepare()
        return self._openSocketStream("dump.orgs", (self.systemid,))

    def getChannelXmlStream(self):
        """retrieve xml stream for channel data given a
        list of channel labels."""
        self._prepare()
        return self._openSocketStream("dump.channels", (self.systemid, []))

    def getShortPackageXmlStream(self, packageIds):
        """retrieve xml stream for short package data given
        a list of package ids."""
        self._prepare()
        return self._openSocketStream("dump.packages_short", (self.systemid, packageIds))

    def getChannelShortPackagesXmlStream(self, channel, last_modified):
        """retrieve xml stream for short package data given a channel
        label and the last modified timestamp of the channel"""
        self._prepare()
        return self._openSocketStream("dump.channel_packages_short",
                                      (self.systemid, channel, last_modified))

    def getPackageXmlStream(self, packageIds):
        """retrieve xml stream for package data given a
        list of package ids."""
        self._prepare()
        return self._openSocketStream("dump.packages", (self.systemid, packageIds))

    def getSourcePackageXmlStream(self, packageIds):
        """retrieve xml stream for package data given a
        list of package ids."""
        self._prepare()
        return self._openSocketStream("dump.source_packages", (self.systemid, packageIds))

    def getErrataXmlStream(self, erratumIds):
        """retrieve xml stream for erratum data given a list of erratum ids."""
        self._prepare()
        return self._openSocketStream("dump.errata", (self.systemid, erratumIds))

    def getKickstartsXmlStream(self, ksLabels):
        "retrieve xml stream for kickstart trees"
        self._prepare()
        return self._openSocketStream("dump.kickstartable_trees",
                                      (self.systemid, ksLabels))

    def getComps(self, channel):
        return self._openSocketStream("dump.get_comps",
                                      (self.systemid, channel))

    def getModules(self, channel):
        return self._openSocketStream("dump.get_modules",
                                      (self.systemid, channel))

    def getRpm(self, nvrea, channel, checksum):
        release = nvrea[2]
        epoch = nvrea[3]
        if epoch:
            release = "%s:%s" % (release, epoch)
        package_name = "%s-%s-%s.%s.rpm" % (nvrea[0], nvrea[1], release,
                                            nvrea[4])
        self._prepare()
        return self._openSocketStream("dump.get_rpm",
                                      (self.systemid, package_name, channel, checksum))

    def getKickstartFile(self, ks_label, relative_path):
        self._prepare()
        return self._openSocketStream("dump.get_ks_file",
                                      (self.systemid, ks_label, relative_path))


    def getSupportInformationXmlStream(self):
        """retrieve xml stream for channel family data."""
        self._prepare()
        return self._openSocketStream("dump.support_information", (self.systemid,))

    def getSuseProductsXmlStream(self):
        """retrieve xml stream for SUSE Products"""
        self._prepare()
        return self._openSocketStream("dump.suse_products", (self.systemid,))

    def getSuseProductChannelsXmlStream(self):
        """retrieve xml stream for SUSE Product Channels"""
        self._prepare()
        return self._openSocketStream("dump.suse_product_channels", (self.systemid,))

    def getSuseUpgradePathsXmlStream(self):
        """retrieve xml stream for Upgrade Paths"""
        self._prepare()
        return self._openSocketStream("dump.suse_upgrade_paths", (self.systemid,))

    def getSuseProductExtensionsXmlStream(self):
        """retrieve xml stream for SUSE Product Extensions"""
        self._prepare()
        return self._openSocketStream("dump.suse_product_extensions", (self.systemid,))

    def getSuseProductRepositoriesXmlStream(self):
        """retrieve xml stream for SUSE Product Repositories"""
        self._prepare()
        return self._openSocketStream("dump.suse_product_repositories", (self.systemid,))

    def getSCCRepositoriesXmlStream(self):
        """retrieve xml stream for SCC Repositories"""
        self._prepare()
        return self._openSocketStream("dump.scc_repositories", (self.systemid,))

    def getSuseSubscriptionsXmlStream(self):
        """retrieve xml stream for Subscriptions"""
        self._prepare()
        return self._openSocketStream("dump.suse_subscriptions", (self.systemid,))

    def getClonedChannelsXmlStream(self):
        """retrieve xml stream for Cloned Channels"""
        self._prepare()
        return self._openSocketStream("dump.cloned_channels", (self.systemid,))

class XMLRPCWireSource(BaseWireSource):

    "Base class for all the XMLRPC calls"

    @staticmethod
    def _xmlrpc(function, params):
        try:
            retval = getattr(BaseWireSource.serverObj, function)(*params)
        except TypeError:
            e = sys.exc_info()[1]
            log(-1, 'ERROR: during "getattr(BaseWireSource.serverObj, %s)(*(%s))"' % (function, params))
            raise
        except rpclib.xmlrpclib.ProtocolError:
            e = sys.exc_info()[1]
            log2(-1, 2, 'ERROR: ProtocolError: %s' % e, stream=sys.stderr)
            raise
        return retval


class AuthWireSource(XMLRPCWireSource):

    """Simply authenticate this systemid as a satellite."""

    def checkAuth(self):
        self.setServer(CFG.RHN_XMLRPC_HANDLER)
        authYN = None
        log(2, '   +++ SUSE Manager Server synchronization tool checking in.')
        try:
            authYN = self._xmlrpc('authentication.check', (self.systemid,))
        except (rpclib.xmlrpclib.ProtocolError, rpclib.xmlrpclib.Fault):
            raise
        if authYN:
            log(2, '   +++ Entitled SUSE Manager Server validated.', stream=sys.stderr)
        elif authYN is None:
            log(-1, '   --- An error occurred upon authentication of this SUSE Manager Server -- '
                    'review the pertinent log file (%s) and/or submit a service request.' % CFG.LOG_FILE,
                stream=sys.stderr)
            sys.exit(-1)
        elif authYN == 0:
            log(-1, '   --- This server is not entitled.', stream=sys.stderr)
            sys.exit(-1)
        return authYN

class RPCGetWireSource(BaseWireSource):

    "Class to retrieve various files via authenticated GET requests"
    get_server_obj = None
    login_token = None
    get_server_obj = None

    def __init__(self, systemid, sslYN, xml_dump_version):
        BaseWireSource.__init__(self, systemid, sslYN, xml_dump_version)
        self.extinctErrorYN = 0

    @staticmethod
    def _set_connection_params(handler, url):
        BaseWireSource._set_connection_params(handler, url)
        RPCGetWireSource.login_token = None

    def login(self, force=0):
        "Perform a login, return a GET Server instance"
        if force:
            # Invalidate it
            self._set_login_token(None)
        if self.login_token:
            # Return cached one
            return self.get_server_obj

        # Force a login otherwise
        self._set_login_token(self._login())
        url = self.url + self.handler
        proxy, puser, ppass = get_proxy(url)
        get_server_obj = connection.GETServer(url, proxy=proxy,
                                              username=puser, password=ppass,
                                              headers=self.login_token, timeout=CFG.timeout)
        # Add SSL trusted cert
        self._set_ssl_trusted_certs(get_server_obj)
        self._set_rpc_server(get_server_obj)
        return self.get_server_obj

    def _login(self):
        if not self.systemid:
            raise Exception("systemid not set!")

        # Set the URL to the one for regular XML-RPC calls
        self.setServer(CFG.RHN_XMLRPC_HANDLER)

        try:
            login_token = self.getServer().authentication.login(self.systemid)
        except rpclib.xmlrpclib.ProtocolError:
            e = sys.exc_info()[1]
            log2(-1, 2, 'ERROR: ProtocolError: %s' % e, stream=sys.stderr)
            raise
        return login_token

    @staticmethod
    def _set_login_token(token):
        RPCGetWireSource.login_token = token

    @staticmethod
    def _set_rpc_server(server):
        RPCGetWireSource.get_server_obj = server

    def _rpc_call(self, function_name, params):
        get_server_obj = self.login()
        # Try a couple of times
        fault_count = 0
        expired_token = 0
        cfg = config.initUp2dateConfig()
        while fault_count - expired_token < cfg['networkRetries']:
            try:
                ret = getattr(get_server_obj, function_name)(*params)
            except rpclib.xmlrpclib.ProtocolError:
                e = sys.exc_info()[1]
                # We have two codes to check: the HTTP error code, and the
                # combination (failtCode, faultString) encoded in the headers
                # of the request.
                http_error_code = e.errcode
                fault_code, fault_string = rpclib.reportError(e.headers)
                fault_count += 1
                if http_error_code == 401 and fault_code == -34:
                    # Login token expired
                    get_server_obj = self.login(force=1)
                    # allow exactly one respin for expired token
                    expired_token = 1
                    continue
                if http_error_code == 404 and fault_code == -17:
                    # File not found
                    self.extinctErrorYN = 1
                    return None
                log(-1, 'ERROR: http error code :%s; fault code: %s; %s' %
                    (http_error_code, fault_code, fault_string))
                # XXX
                raise
            else:
                return ret
        raise Exception("Failed after multiple attempts!")

    def getPackageStream(self, channel, nvrea, checksum):
        release = nvrea[2]
        epoch = nvrea[3]
        if epoch:
            release = "%s:%s" % (release, epoch)
        package_name = "%s-%s-%s.%s.rpm" % (nvrea[0], nvrea[1], release,
                                            nvrea[4])
        return self._rpc_call("getPackage", (channel, package_name, checksum))

    def getKickstartFileStream(self, channel, ks_tree_label, relative_path):
        return self._rpc_call("getKickstartFile", (channel, ks_tree_label,
                                                   relative_path))

    def getCompsFileStream(self, channel):
        return self._rpc_call("repodata", (channel, 'comps.xml'))

    def getModulesFilesStram(self, channel):
        return self._rpc_call("repodata", (channel, 'modules.yaml'))
   07070100000120000041FD0000000000000000000000016290A0C100000000000000000000000000000000000000000000001900000000spacewalk-backend/server  07070100000121000081B40000000000000000000000016290A0C1000002FA000000000000000000000000000000000000002200000000spacewalk-backend/server/Makefile # Makefile for spacewalk backend
#

# what is the backend top dir
TOP     = ..

# Specific stuff
SUBDIR		= server

FILES		= __init__
SPACEWALK_FILES		= __init__ \
		  apacheServer apacheHandler apacheAuth apacheRequest \
                  apacheUploadServer \
		  configFilesHandler \
		  rhnAuthPAM rhnCapability rhnChannel \
                  rhnDependency \
                  rhnAction \
                  rhnHandler rhnImport rhnMapping rhnLib rhnPackage \
                  rhnPackageUpload basePackageUpload rhnRepository \
                  rhnSession rhnUser rhnVirtualization taskomatic \
                  suseEula
SUBDIRS		= rhnSQL rhnServer action \
			  handlers importlib action_extra_data \
			  config_common repomd

include $(TOP)/Makefile.defs
  07070100000122000081B40000000000000000000000016290A0C1000002DD000000000000000000000000000000000000002500000000spacewalk-backend/server/__init__.py  #
# Copyright (c) 2008--2015 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#
# init module for the whole server object. We also provide a few
# exposed classes for making import statements nicer
#
   07070100000123000041FD0000000000000000000000016290A0C100000000000000000000000000000000000000000000002000000000spacewalk-backend/server/action   07070100000124000081B40000000000000000000000016290A0C10000015A000000000000000000000000000000000000002900000000spacewalk-backend/server/action/Makefile  # Makefile for the action handlers module
#

TOP	= ../..
SUBDIR	= server/action

SPACEWALK_FILES	= __init__ configfiles kickstart kickstart_guest packages errata hardware reboot \
          rollback activation script rhnsd rhn_applet virt kickstart_host \
          utils scap image distupgrade clientcert channels

include $(TOP)/Makefile.defs

  07070100000125000081B40000000000000000000000016290A0C100000265000000000000000000000000000000000000002C00000000spacewalk-backend/server/action/__init__.py   #
# Copyright (c) 2008--2015 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#
   07070100000126000081B40000000000000000000000016290A0C100000CFC000000000000000000000000000000000000002E00000000spacewalk-backend/server/action/activation.py #
# Copyright (c) 2008--2015 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#
# Activation key related queuing functions
#

from spacewalk.common.rhnLog import log_debug
from spacewalk.server import rhnSQL, rhnAction, rhnServer
from spacewalk.server.rhnLib import ShadowAction
from spacewalk.server.rhnServer import server_kickstart

# the "exposed" functions
__rhnexport__ = ['schedule_deploy', 'schedule_pkg_install', ]


# queries
_query_copy_pkgs_from_shadow_action = rhnSQL.Statement("""
    insert into rhnActionPackage (id, action_id, name_id, parameter)
    select sequence_nextval('rhn_act_p_id_seq'), :new_action_id, name_id, parameter
      from rhnActionPackage
     where action_id = :action_id
""")

_query_copy_revs_from_shadow_action = rhnSQL.Statement("""
    insert into rhnActionConfigRevision (id, action_id, server_id, config_revision_id)
    select sequence_nextval('rhn_actioncr_id_seq'), :new_action_id, server_id, config_revision_id
      from rhnActionConfigRevision
     where action_id = :action_id
       and server_id = :server_id
""")


def schedule_deploy(server_id, action_id, dry_run=0):
    log_debug(2, server_id, action_id)
    s = rhnServer.search(server_id)

    # Schedule an rhncfg install
    new_action_id = server_kickstart.schedule_rhncfg_install(server_id,
                                                             action_id, scheduler=None)

    new_action_id_2 = rhnAction.schedule_server_action(
        server_id,
        action_type='configfiles.deploy',
        action_name="Activation Key Config Auto-Deploy",
        delta_time=0, scheduler=None,
        org_id=s.server['org_id'],
        prerequisite=new_action_id,
    )

    if (not dry_run):
        h = rhnSQL.prepare(_query_copy_revs_from_shadow_action)
        h.execute(action_id=action_id, new_action_id=new_action_id_2,
                  server_id=server_id)
    else:
        log_debug(4, "dry run requested")

    log_debug(4, "scheduled config deploy for activation key")

    raise ShadowAction("Config deploy scheduled")


# XXX this duplicates rhnAction.schedule_server_packages_update. fix that.
def schedule_pkg_install(server_id, action_id, dry_run=0):
    s = rhnServer.search(server_id)

    new_action_id = rhnAction.schedule_server_action(
        server_id,
        action_type='packages.update',
        action_name="Activation Key Package Auto-Install",
        delta_time=0, scheduler=None,
        org_id=s.server['org_id'],
    )

    if (not dry_run):
        h = rhnSQL.prepare(_query_copy_pkgs_from_shadow_action)
        h.execute(action_id=action_id, new_action_id=new_action_id)
    else:
        log_debug(4, "dry run requested")

    log_debug(4, "scheduled pkg install for activation key")

    raise ShadowAction("Package install scheduled")
07070100000127000081B40000000000000000000000016290A0C100000327000000000000000000000000000000000000002C00000000spacewalk-backend/server/action/channels.py   # -*- coding: utf-8 -*-
#
# Copyright (c) 2018 SUSE LLC
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#

import sys
from spacewalk.common.rhnLog import log_debug
from spacewalk.common.rhnException import rhnFault
from spacewalk.server.rhnLib import ShadowAction

# the "exposed" functions
__rhnexport__ = ['subscribe']

def subscribe(serverId, actionId, dry_run=0):
    log_debug(3)

    raise ShadowAction("subscribe channel requested - internal DB operation only")
 07070100000128000081B40000000000000000000000016290A0C10000031C000000000000000000000000000000000000002E00000000spacewalk-backend/server/action/clientcert.py #
# Copyright (c) 2014--2015 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.

from spacewalk.common.rhnLog import log_debug

__rhnexport__ = ['update_client_cert']


def update_client_cert(server_id, action_id, dry_run=0):
    log_debug(3, action_id)
    return
07070100000129000081B40000000000000000000000016290A0C10000148D000000000000000000000000000000000000002F00000000spacewalk-backend/server/action/configfiles.py    #
# Copyright (c) 2008--2016 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#
# config file-related queuing functions
#

import time

from spacewalk.common.rhnLog import log_debug
from spacewalk.server import rhnSQL, rhnServer
from spacewalk.server.configFilesHandler import format_file_results
from spacewalk.server.config_common.templated_document import var_interp_prep

# the "exposed" functions
__rhnexport__ = ['upload', 'deploy', 'verify', 'diff', 'mtime_upload']

_query_upload_files = rhnSQL.Statement("""
    select cfn.path
      from rhnActionConfigFileName acfn, rhnConfigFileName cfn
     where acfn.server_id = :server_id
       and acfn.action_id = :action_id
       and acfn.config_file_name_id = cfn.id
""")

_query_mtime_upload_info = rhnSQL.Statement("""
    select TO_CHAR(start_date, 'YYYY-MM-DD HH24:MI:SS') as start_date,
           TO_CHAR(end_date, 'YYYY-MM-DD HH24:MI:SS') as end_date,
           TO_CHAR(current_timestamp, 'YYYY-MM-DD HH24:MI:SS') as now,
           import_contents
      from rhnActionConfigDate
     where action_id = :action_id
""")

_query_mtime_upload_paths = rhnSQL.Statement("""
    select file_name,
           file_type
      from rhnActionConfigDateFile
     where action_id = :action_id
""")


def mtime_upload(server_id, action_id, dry_run=0):
    log_debug(3)

    data = {}

    h = rhnSQL.prepare(_query_mtime_upload_info)
    h.execute(action_id=action_id)

    info = h.fetchone_dict()
    info['start_date'] = time.mktime(time.strptime(info['start_date'], '%Y-%m-%d %H:%M:%S'))
    info['now'] = time.mktime(time.strptime(info['now'], '%Y-%m-%d %H:%M:%S'))

    if info['end_date']:
        info['end_date'] = time.mktime(time.strptime(info['end_date'], '%Y-%m-%d %H:%M:%S'))
    else:
        info['end_date'] = ''

    data['info'] = info

    data['search'] = []
    data['ignore'] = []

    h = rhnSQL.prepare(_query_mtime_upload_paths)
    h.execute(action_id=action_id)

    while 1:
        row = h.fetchone_dict() or []

        if not row:
            break

        if row['file_type'] == 'W':
            data['search'].append(row['file_name'])
        elif row['file_type'] == 'B':
            data['ignore'].append(row['file_name'])

    log_debug(4, 'data', data)

    return action_id, data


def upload(server_id, action_id, dry_run=0):
    log_debug(3)
    h = rhnSQL.prepare(_query_upload_files)
    h.execute(action_id=action_id, server_id=server_id)
    files = [x['path'] for x in h.fetchall_dict() or []]

    return action_id, files


def deploy(server_id, action_id, dry_run=0):
    log_debug(3)
    return _get_files(server_id, action_id)


def verify(server_id, action_id, dry_run=0):
    log_debug(3)
    return _get_files(server_id, action_id)


def diff(server_id, action_id, dry_run=0):
    log_debug(3)
    return _get_files(server_id, action_id)

_query_get_files = rhnSQL.Statement("""
    select cfn.path,
           cc.label config_channel,
           ccont.contents file_contents,
           ccont.is_binary is_binary,
           c.checksum_type,
           c.checksum,
           ccont.delim_start,
           ccont.delim_end,
           cr.revision,
           ci.username,
           ci.groupname,
           ci.filemode,
               cft.label,
               ci.selinux_ctx,
           case
                when cft.label='symlink' then (select path from rhnConfigFileName where id = ci.SYMLINK_TARGET_FILENAME_ID)
                else ''
            end as symlink
      from
           rhnConfigFileState cfs,
           rhnConfigChannel cc,
           rhnConfigFileName cfn,
           rhnConfigInfo ci,
           rhnConfigFile cf,
           rhnConfigRevision cr
      left join rhnConfigContent ccont
        on cr.config_content_id = ccont.id
      left join rhnChecksumView c
        on ccont.checksum_id = c.id,
           rhnConfigFileType cft,
           rhnActionConfigRevision acr
     where acr.server_id = :server_id
       and acr.action_id = :action_id
       and acr.config_revision_id = cr.id
       and cr.config_file_id = cf.id
       and cr.config_info_id = ci.id
       and cf.config_file_name_id = cfn.id
       and cf.config_channel_id = cc.id
       and cf.state_id = cfs.id
       and cfs.label = 'alive'
       and cr.config_file_type_id = cft.id
""")


def _get_files(server_id, action_id):
    h = rhnSQL.prepare(_query_get_files)
    h.execute(action_id=action_id, server_id=server_id)
    server = rhnServer.search(server_id)
    server = var_interp_prep(server)

    files = []
    while 1:
        row = h.fetchone_dict()
        if not row:
            break
        files.append(format_file_results(row, server=server))

    result = {
        'files': files,
    }
    return result
   0707010000012A000081B40000000000000000000000016290A0C10000119C000000000000000000000000000000000000002F00000000spacewalk-backend/server/action/distupgrade.py    # -*- coding: utf-8 -*-
#
# Copyright (c) 2012 SUSE LLC
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#

import sys
from spacewalk.common.rhnLog import log_debug
from spacewalk.common.rhnException import rhnFault
from uyuni.common.usix import raise_with_tb
from spacewalk.server import rhnSQL
from spacewalk.server.rhnChannel import subscribe_channels, unsubscribe_channels
from spacewalk.server.rhnLib import InvalidAction, ShadowAction

# the "exposed" functions
__rhnexport__ = ['upgrade']

_query_dup_data = rhnSQL.Statement("""
    SELECT id, dry_run, allow_vendor_change, full_update
      FROM rhnActionDup
     WHERE action_id = :action_id
""")

_query_channel_changes = rhnSQL.Statement("""
    SELECT c.id, c.label, c.parent_channel, adc.task
      FROM rhnActionDupChannel adc
      JOIN rhnChannel c ON adc.channel_id = c.id
     WHERE adc.action_dup_id = :action_dup_id
""")

_query_products = rhnSQL.Statement("""
    SELECT p1.name,
           p1.version,
           p2.name new_name,
           p2.version new_version,
           COALESCE(p2.release, ' ') new_release,
           COALESCE(pa.label, ' ') new_arch
      FROM rhnActionDupProduct adp
      JOIN suseProducts p1 ON adp.from_pdid = p1.id
      JOIN suseProducts p2 ON adp.to_pdid = p2.id
 LEFT JOIN rhnPackageArch pa ON pa.id = p2.arch_type_id
     WHERE adp.action_dup_id = :action_dup_id
""")


# returns the values required to execute a dist upgrade
# change also the channel subscription
#
def upgrade(serverId, actionId, dry_run=0):
    log_debug(3)

    if dry_run:
        # can happen if future actions are requested
        raise ShadowAction("dry run requested - skipping")

    h = rhnSQL.prepare(_query_dup_data)
    h.execute(action_id=actionId)
    row = h.fetchone_dict()
    if not row:
        # No dup for this action
        raise InvalidAction("distupgrade.upgrade: No action found for action id "
            "%s and server %s" % (actionId, serverId))

    action_dup_id = row['id']

    # get product info

    h = rhnSQL.prepare(_query_products)
    h.execute(action_dup_id=action_dup_id)
    products = h.fetchall_dict() or []

    # only SLE10 products needs to be changed manually
    # remove all not SLE10 based products

    sle10_products = []
    do_change = False
    for product in products:
        if product['version'] == '10':
            do_change = True
            sle10_products.append(product)

    # switch the channels for this server

    h = rhnSQL.prepare(_query_channel_changes)
    h.execute(action_dup_id=action_dup_id)
    channel_changes = h.fetchall_dict() or None

    if not channel_changes:
        # this happens in case a distupgrade failed and the
        # another distupgrade is scheduled to fix the installation
        # we do not have the original channels anymore, so we need
        # to execute a full "dup" without channels
        params = {
            "full_update"         : (row['full_update'] == 'Y'),
            "change_product"      : do_change,
            "products"            : sle10_products,
            "allow_vendor_change" : (row['allow_vendor_change'] == 'Y'),
            "dry_run"             : (row['dry_run'] == 'Y') }
        return (params)

    to_subscribe = [x for x in channel_changes if x['task'] == 'S']
    to_unsubscribe = [x for x in channel_changes if x['task'] == 'U']

    try:
        unsubscribe_channels(serverId, to_unsubscribe)
        subscribe_channels(serverId, to_subscribe)
    except rhnFault as f:
        if f.code == 38:
            # channel is already subscribed, ignore it
            pass
        else:
            raise_with_tb(InvalidAction(str(f)), sys.exc_info()[2])
    except Exception as e:
        raise_with_tb(InvalidAction(str(e)), sys.exc_info()[2])

    rhnSQL.commit()

    params = {
        "dup_channel_names"   : [x['label'] for x in to_subscribe],
        "full_update"         : (row['full_update'] == 'Y'),
        "change_product"      : do_change,
        "products"            : sle10_products,
        "allow_vendor_change" : (row['allow_vendor_change'] == 'Y'),
        "dry_run"             : (row['dry_run'] == 'Y') }
    return (params)

0707010000012B000081B40000000000000000000000016290A0C100000694000000000000000000000000000000000000002A00000000spacewalk-backend/server/action/errata.py #
# Copyright (c) 2008--2016 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#
#

from spacewalk.common.rhnLog import log_debug
from spacewalk.server import rhnSQL
from spacewalk.server.rhnLib import InvalidAction

# the "exposed" functions
__rhnexport__ = ['update']

# returns a list of errata scheduled for this action


def update(serverId, actionId, dry_run=0):
    log_debug(3)
    statement = """
        select r1.errata_id, e.advisory_status
        from rhnactionerrataupdate r1
        join rhnErrata e on r1.errata_id = e.id
        where r1.action_id = :action_id
    """
    h = rhnSQL.prepare(statement)
    h.execute(action_id=actionId)
    ret = h.fetchall_dict()
    if not ret:
        # No errata for this action
        raise InvalidAction("errata.update: Unknown action id "
                            "%s for server %s" % (actionId, serverId))

    retracted = [x['errata_id'] for x in ret if x['advisory_status'] == 'retracted']
    if retracted:
        # Do not install retracted patches
        raise InvalidAction("errata.update: Action contains retracted errata %s" % retracted)
    return [x['errata_id'] for x in ret]
0707010000012C000081B40000000000000000000000016290A0C10000030C000000000000000000000000000000000000002C00000000spacewalk-backend/server/action/hardware.py   #
# Copyright (c) 2008--2015 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#
#

from spacewalk.common.rhnLog import log_debug

__rhnexport__ = ['refresh_list']


def refresh_list(serverId, actionId, dry_run=0):
    log_debug(3)
    return None
0707010000012D000081B40000000000000000000000016290A0C10000072D000000000000000000000000000000000000002900000000spacewalk-backend/server/action/image.py  # -*- coding: utf-8 -*-
#
# Copyright (c) 2011 SUSE LLC
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#

from spacewalk.common.rhnLog import log_debug
from spacewalk.server import rhnSQL
from spacewalk.server.rhnLib import InvalidAction

# the "exposed" functions
__rhnexport__ = ['deploy']

# returns the values for deploying a virtual machine with an image
#
# file_name, checksum, mem_kb, vcpus, imageType
#


def deploy(serverId, actionId, dry_run=0):
    log_debug(3)
    statement = """
        select aid.mem_kb, aid.vcpus, aid.bridge_device,aid.download_url,
               aid.proxy_server, aid.proxy_user, aid.proxy_pass
          from rhnActionImageDeploy aid
           where aid.action_id = :action_id"""
    h = rhnSQL.prepare(statement)
    h.execute(action_id=actionId)
    row = h.fetchone_dict()
    if not row:
        # No image for this action
        raise InvalidAction("image.deploy: No image found for action id "
                            "%s and server %s" % (actionId, serverId))

    for key in ['download_url', 'proxy_server', 'proxy_user', 'proxy_pass', 'bridge_device']:
        if row[key] is None:
            row[key] = ""

    params = {
        "downloadURL": row['download_url'],
        "proxySettings": {"proxyURL": row['proxy_server'], "proxyUser": row['proxy_user'], "proxyPass": row['proxy_pass']},
        "memKB": row['mem_kb'],
        "vCPUs": row['vcpus'],
        "domainName": "",
        "virtBridge": row['bridge_device']}
    return (params)
   0707010000012E000081B40000000000000000000000016290A0C10000134F000000000000000000000000000000000000002D00000000spacewalk-backend/server/action/kickstart.py  #
# Copyright (c) 2008--2016 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#
#

from spacewalk.common.rhnLog import log_debug
from spacewalk.server import rhnSQL
from spacewalk.server.rhnLib import InvalidAction, ShadowAction
from spacewalk.server.rhnServer import server_kickstart, server_packages

# the "exposed" functions
__rhnexport__ = ['initiate', 'schedule_sync']

_query_initiate = rhnSQL.Statement("""
    select ak.append_string, ak.static_device, ak.kickstart_host, ak.cobbler_system_name
      from rhnActionKickstart ak, rhnKickstartableTree kst
     where ak.action_id = :action_id
""")

_query_file_list_initiate = rhnSQL.Statement("""
    select distinct rcfn.path
      from rhnActionKickstartFileList akfl,
           rhnFileListMembers rflm,
           rhnConfigFileName rcfn,
           rhnActionKickstart ak
     where rcfn.id = rflm.config_file_name_id
       and akfl.file_list_id = rflm.file_list_id
       and akfl.action_ks_id = ak.id
       and ak.action_id = :action_id
""")


def initiate(server_id, action_id, dry_run=0):
    log_debug(3)
    h = rhnSQL.prepare(_query_initiate)
    h.execute(action_id=action_id)
    row = h.fetchone_dict()
    if not row:
        raise InvalidAction("Kickstart action without an associated kickstart")
    boot_image, append_string = ('spacewalk-koan', row['append_string'])
    static_device = row['static_device'] or ""
    kickstart_host = row['kickstart_host']
    system_record = row['cobbler_system_name']
    if system_record is None:
        system_record = ''
    if not boot_image:
        raise InvalidAction("Boot image missing")
    if not kickstart_host:
        raise InvalidAction("Kickstart_host missing")

    h = rhnSQL.prepare(_query_file_list_initiate)
    h.execute(action_id=action_id)
    files = [x['path'] for x in h.fetchall_dict() or []]

    return (kickstart_host, boot_image, append_string, static_device, system_record, files)


def schedule_sync(server_id, action_id, dry_run=0):
    log_debug(3, server_id, action_id)
    if dry_run:
        raise ShadowAction("dry run requested - skipping")

    kickstart_session_id = server_kickstart.get_kickstart_session_id(server_id,
                                                                     action_id)

    if kickstart_session_id is None:
        raise InvalidAction("Could not find kickstart session ID")

    row = server_kickstart.get_kickstart_session_info(kickstart_session_id, server_id)
    deploy_configs = (row['deploy_configs'] == 'Y')

    ks_package_profile = server_kickstart.get_kisckstart_session_package_profile(kickstart_session_id)
    # if the session doesn't have a pkg profile, try from the ks profile itself
    if not ks_package_profile:
        ks_package_profile = server_kickstart.get_kickstart_profile_package_profile(kickstart_session_id)

    if not ks_package_profile:
        log_debug(4, "No kickstart package profile")
        # No profile to bring this system to
        if deploy_configs:
            # We have to deploy configs, so pass in a server profile
            server_profile = server_kickstart.get_server_package_profile(server_id)
        else:
            # No configs to be deployed
            server_profile = None

        server_kickstart.schedule_config_deploy(server_id,
                                                action_id, kickstart_session_id, server_profile=server_profile)
        raise ShadowAction("Package sync not scheduled, missing kickstart "
                           "package profile; proceeding with configfiles.deploy")

    server_profile = server_kickstart.get_server_package_profile(server_id)

    installs, removes = server_packages.package_delta(server_profile,
                                                      ks_package_profile)

    if not (installs or removes):
        log_debug(4, "No packages to be installed/removed")
        if not deploy_configs:
            server_profile = None

        server_kickstart.schedule_config_deploy(server_id,
                                                action_id, kickstart_session_id, server_profile=None)
        raise ShadowAction("Package sync not scheduled, nothing to do")

    log_debug(4, "Scheduling kickstart delta")
    server_kickstart.schedule_kickstart_delta(server_id,
                                              kickstart_session_id, installs, removes)

    raise ShadowAction("Package sync scheduled")
 0707010000012F000081B40000000000000000000000016290A0C10000115F000000000000000000000000000000000000003300000000spacewalk-backend/server/action/kickstart_guest.py    #
# Copyright (c) 2008--2016 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#
import sys
from uyuni.common.usix import raise_with_tb
from spacewalk.common.rhnLog import log_debug
from spacewalk.server import rhnSQL
from spacewalk.server.rhnLib import InvalidAction, ShadowAction
from spacewalk.server.action.utils import SubscribedChannel, \
    ChannelPackage, \
    PackageInstallScheduler, \
    NoActionInfo, \
    PackageNotFound
from spacewalk.server.rhnChannel import subscribe_to_tools_channel


__rhnexport__ = ['initiate', 'schedule_virt_guest_pkg_install', 'add_tools_channel']

_query_initiate_guest = rhnSQL.Statement("""
 select  ksd.label as profile_name, akg.kickstart_host, kvt.label as virt_type,
       akg.mem_kb, akg.vcpus, akg.disk_path, akg.virt_bridge, akg.cobbler_system_name,
       akg.disk_gb, akg.append_string,
       akg.guest_name, akg.ks_session_id from rhnActionKickstartGuest akg,
        rhnKSData ksd, rhnKickstartSession ksess,
       rhnKickstartDefaults ksdef, rhnKickstartVirtualizationType kvt
     where akg.action_id = :action_id
       and ksess.kickstart_id = ksd.id
       and ksess.id = akg.ks_session_id
       and ksdef.kickstart_id = ksd.id
       and ksdef.virtualization_type = kvt.id
""")


def schedule_virt_guest_pkg_install(server_id, action_id, dry_run=0):
    """
        ShadowAction that schedules a package installation action for the
        rhn-virtualization-guest package.
    """
    log_debug(3)

    virt_host_package_name = "rhn-virtualization-guest"
    tools_channel = SubscribedChannel(server_id, "rhn-tools")
    found_tools_channel = tools_channel.is_subscribed_to_channel()

    if not found_tools_channel:
        raise InvalidAction("System not subscribed to the Tools channel.")

    rhn_v12n_package = ChannelPackage(server_id, virt_host_package_name)

    if not rhn_v12n_package.exists():
        raise InvalidAction("Could not find the rhn-virtualization-guest package.")

    try:
        install_scheduler = PackageInstallScheduler(server_id, action_id, rhn_v12n_package)
        if (not dry_run):
            install_scheduler.schedule_package_install()
        else:
            log_debug(4, "dry run requested")
    except NoActionInfo:
        nai = sys.exc_info()[1]
        raise_with_tb(InvalidAction(str(nai)), sys.exc_info()[2])
    except PackageNotFound:
        pnf = sys.exc_info()[1]
        raise_with_tb(InvalidAction(str(pnf)), sys.exc_info()[2])
    except Exception:
        e = sys.exc_info()[1]
        raise_with_tb(InvalidAction(str(e)), sys.exc_info()[2])

    log_debug(3, "Completed scheduling install of rhn-virtualization-guest!")
    raise ShadowAction("Scheduled installation of Virtualization Guest packages.")


def initiate(server_id, action_id, dry_run=0):
    log_debug(3)
    h = rhnSQL.prepare(_query_initiate_guest)
    h.execute(action_id=action_id)
    row = h.fetchone_dict()

    if not row:
        raise InvalidAction("Kickstart action without an associated kickstart")

    kickstart_host = row['kickstart_host']
    virt_type = row['virt_type']
    name = row['guest_name']
    boot_image = "spacewalk-koan"
    append_string = row['append_string']
    vcpus = row['vcpus']
    disk_gb = row['disk_gb']
    mem_kb = row['mem_kb']
    ks_session_id = row['ks_session_id']
    virt_bridge = row['virt_bridge']
    disk_path = row['disk_path']
    cobbler_system_name = row['cobbler_system_name']

    if not boot_image:
        raise InvalidAction("Boot image missing")

    return (kickstart_host, cobbler_system_name, virt_type, ks_session_id, name,
            mem_kb, vcpus, disk_gb, virt_bridge, disk_path, append_string)


def add_tools_channel(server_id, action_id, dry_run=0):
    log_debug(3)
    if (not dry_run):
        subscribe_to_tools_channel(server_id)
    else:
        log_debug(4, "dry run requested")
    raise ShadowAction("Subscribed guest to tools channel.")
 07070100000130000081B40000000000000000000000016290A0C100000C87000000000000000000000000000000000000003200000000spacewalk-backend/server/action/kickstart_host.py #
# Copyright (c) 2008--2016 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#

import sys
from spacewalk.common.rhnLog import log_debug
from uyuni.common.usix import raise_with_tb
from spacewalk.server.rhnLib import InvalidAction, ShadowAction
from spacewalk.server.action.utils import SubscribedChannel,\
    ChannelPackage, \
    PackageInstallScheduler, \
    NoActionInfo, \
    PackageNotFound
from spacewalk.server.rhnChannel import subscribe_to_tools_channel

__rhnexport__ = ['schedule_virt_host_pkg_install', 'add_tools_channel']


def add_tools_channel(server_id, action_id, dry_run=0):
    if (not dry_run):
        subscribe_to_tools_channel(server_id)
    else:
        log_debug(4, "dry run requested")
    raise ShadowAction("Subscribed server to tools channel.")


def schedule_virt_host_pkg_install(server_id, action_id, dry_run=0):
    """
        ShadowAction that schedules a package installation action for the
        rhn-virtualization-host and osad packages.
    """
    log_debug(3)

    virt_host_package_name = "mgr-virtualization-host"
    messaging_package_name = "mgr-osad"

    tools_channel = SubscribedChannel(server_id, "rhn-tools")
    found_tools_channel = tools_channel.is_subscribed_to_channel()

    if not found_tools_channel:
        raise InvalidAction("System not subscribed to the Tools channel.")

    rhn_v12n_package = ChannelPackage(server_id, virt_host_package_name)

    if not rhn_v12n_package.exists():
        raise InvalidAction("Could not find the mgr-virtualization-host package.")

    messaging_package = ChannelPackage(server_id, messaging_package_name)

    if not messaging_package.exists():
        raise InvalidAction("Could not find the mgr-osad package.")

    try:
        rhn_v12n_install_scheduler = PackageInstallScheduler(server_id, action_id, rhn_v12n_package)
        messaging_package = PackageInstallScheduler(server_id, action_id, messaging_package)
        if (not dry_run):
            rhn_v12n_install_scheduler.schedule_package_install()
            messaging_package.schedule_package_install()
        else:
            log_debug(4, "dry run requested")
    except NoActionInfo:
        nai = sys.exc_info()[1]
        raise_with_tb(InvalidAction(str(nai)), sys.exc_info()[2])
    except PackageNotFound:
        pnf = sys.exc_info()[1]
        raise_with_tb(InvalidAction(str(pnf)), sys.exc_info()[2])
    except Exception:
        e = sys.exc_info()[1]
        raise_with_tb(InvalidAction(str(e)), sys.exc_info()[2])

    log_debug(3, "Completed scheduling install of mgr-virtualization-host and mgr-osad!")
    raise ShadowAction("Scheduled installation of Virtualization Host packages.")
 07070100000131000081B40000000000000000000000016290A0C100002A0B000000000000000000000000000000000000002C00000000spacewalk-backend/server/action/packages.py   #
# Copyright (c) 2008--2016 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#
# package-related queuing functions
#
# As a response to a queue.get, retrieves/deletes a queued action from
# the DB.
#

from spacewalk.common.rhnLog import log_debug
from spacewalk.server import rhnSQL, rhnCapability
from spacewalk.server.rhnLib import InvalidAction

# the "exposed" functions
__rhnexport__ = ['update',
                 'remove',
                 'refresh_list',
                 'runTransaction',
                 'verify',
                 'setLocks']

_query_action_verify_packages = rhnSQL.Statement("""
  select distinct
           pn.name as name,
           pe.version as version,
           pe.release as release,
           pe.epoch as epoch,
           pa.label as arch
      from rhnActionPackage ap
 left join rhnPackageArch pa
        on ap.package_arch_id = pa.id,
           rhnPackageName pn,
           rhnPackageEVR pe
     where ap.action_id = :actionid
       and ap.evr_id = pe.id
       and ap.name_id = pn.id
""")


def verify(serverId, actionId, dry_run=0):
    log_debug(3, dry_run)
    h = rhnSQL.prepare(_query_action_verify_packages)
    h.execute(actionid=actionId)
    tmppackages = h.fetchall_dict()

    if not tmppackages:
        raise InvalidAction("invalid action %s for server %s" %
                            (actionId, serverId))

    packages = []

    for package in tmppackages:

        packages.append([package['name'],
                         package['version'],
                         package['release'],
                         package['epoch'] or '',
                         package['arch'] or ''])
    log_debug(4, packages)
    return packages


def handle_action(serverId, actionId, packagesIn, dry_run=0):
    log_debug(3, serverId, actionId, dry_run)

    client_caps = rhnCapability.get_client_capabilities()
    log_debug(3, "Client Capabilities", client_caps)
    multiarch = 0
    if client_caps and 'packages.update' in client_caps:
        cap_info = client_caps['packages.update']
        if int(cap_info['version']) > 1:
            multiarch = 1
    if not packagesIn:
        raise InvalidAction("Packages scheduled in action %s for server %s could not be found." %
                            (actionId, serverId))

    retracted = {p['name'] for p in packagesIn if 'retracted' in p and p['retracted']}
    if retracted:
        # Do not install retracted packages
        raise InvalidAction("packages.update: Action contains retracted packages %s" % retracted)

    packages = []
    for package in packagesIn:
        # Fix the epoch
        if package['epoch'] is None:
            package['epoch'] = ""
        pkg_arch = ''
        if multiarch:
            pkg_arch = package['arch'] or ''

        packages.append([package['name'],
                         package['version'] or '',
                         package['release'] or '',
                         package['epoch'],
                         pkg_arch])

    log_debug(4, packages)
    return packages


def remove(serverId, actionId, dry_run=0):
    h = rhnSQL.prepare(_packageStatement_remove)
    h.execute(serverid=serverId, actionid=actionId)
    tmppackages = h.fetchall_dict()
    return handle_action(serverId, actionId, tmppackages, dry_run)


def update(serverId, actionId, dry_run=0):
    h = rhnSQL.prepare(_packageStatement_update)
    h.execute(serverid=serverId, actionid=actionId)
    tmppackages = h.fetchall_dict()
    return handle_action(serverId, actionId, tmppackages, dry_run)

_query_action_setLocks = rhnSQL.Statement("""
  SELECT DISTINCT
    pn.name AS name,
    pe.version AS version,
    pe.releASe AS releASe,
    pe.epoch AS epoch,
    pa.label AS arch
  FROM rhnActionPackage ap
    JOIN rhnLockedPackages lp
      ON ap.name_id = lp.name_id AND
         ap.evr_id  = lp.evr_id AND
         ap.package_arch_id = lp.arch_id
    LEFT JOIN rhnPackageArch pa
      ON ap.package_arch_id = pa.id,
         rhnPackageName pn,
         rhnPackageEVR pe
    WHERE
      ap.action_id = :actionid AND
      ap.evr_id    = pe.id AND
      ap.name_id   = pn.id AND
      lp.server_id = :serverid AND
      (lp.pending IS NULL OR lp.pending = 'L')
""")
def setLocks(serverId, actionId, dry_run=0):
    log_debug(3, serverId, actionId, dry_run)

    client_caps = rhnCapability.get_client_capabilities()
    log_debug(3,"Client Capabilities", client_caps)
    multiarch = 0
    if not client_caps or 'packages.setLocks' not in client_caps:
        raise InvalidAction("Client is not capable of locking packages.")

    h = rhnSQL.prepare(_query_action_setLocks)
    h.execute(actionid=actionId,serverid=serverId)
    tmppackages = h.fetchall_dict() or {}

    packages = []

    for package in tmppackages:
        packages.append([package['name'],
                         package['version'],
                         package['release'],
                         package['epoch'] or '',
                         package['arch'] or ''])
    log_debug(4, packages)
    return packages

def refresh_list(serverId, actionId, dry_run=0):
    """ Call the equivalent of up2date -p.

        I.e. update the list of a client's installed packages known by
        Red Hat's DB.
    """
    log_debug(3)
    return None


def runTransaction(server_id, action_id, dry_run=0):
    log_debug(3, server_id, action_id, dry_run)

    # Fetch package_delta_id
    h = rhnSQL.prepare("""
        select package_delta_id
        from rhnActionPackageDelta
        where action_id = :action_id
    """)
    h.execute(action_id=action_id)
    row = h.fetchone_dict()
    if row is None:
        raise InvalidAction("invalid packages.runTransaction action %s for server %s" %
                            (action_id, server_id))

    package_delta_id = row['package_delta_id']

    # Fetch packages
    h = rhnSQL.prepare("""
        select tro.label as operation, pn.name, pe.version, pe.release, pe.epoch,
               pa.label as package_arch
          from rhnPackageDeltaElement pde,
               rhnTransactionPackage rp
     left join rhnPackageArch pa
            on rp.package_arch_id = pa.id,
               rhnTransactionOperation tro, rhnPackageName pn, rhnPackageEVR pe
         where pde.package_delta_id = :package_delta_id
           and pde.transaction_package_id = rp.id
           and rp.operation = tro.id
           and rp.name_id = pn.id
           and rp.evr_id = pe.id
        order by tro.label, pn.name
    """)
    h.execute(package_delta_id=package_delta_id)

    result = []
    while 1:
        row = h.fetchone_dict()
        if not row:
            break

        operation = row['operation']

        # Need to map the operations into codes the client/rpm understands
        if operation == 'insert':
            operation = 'i'
        elif operation == 'delete':
            operation = 'e'
        elif operation == 'upgrade':
            operation = 'u'
        else:
            # Unsupported
            continue

        # Fix null epochs
        epoch = row['epoch']
        if epoch is None:
            epoch = ''

        name, version, release = row['name'], row['version'], row['release']
        # The package arch can be null now because of the outer join
        package_arch = row['package_arch'] or ""

        result.append([
            [name, version, release, epoch, package_arch],
            operation
        ])
    return {'packages': result}

# SQL statements -- used by update()
_packageStatement_update = """
    select distinct
        pn.name as name,
        pe.epoch as epoch,
        pe.version as version,
        pe.release as release,
        pa.label as arch,
        cp.is_retracted as retracted
    from rhnActionPackage ap
left join rhnPackageArch pa
     on ap.package_arch_id = pa.id,
        rhnPackage p,
        rhnPackageName pn,
        rhnPackageEVR pe,
        rhnServerChannel sc,
        suseChannelPackageRetractedStatusView cp
    where ap.action_id = :actionid
        and ap.evr_id is not null
        and ap.evr_id = p.evr_id
        and ap.evr_id = pe.id
        and ap.name_id = p.name_id
        and (ap.package_arch_id = p.package_arch_id or ap.package_arch_id is null)
        and ap.name_id = pn.id
        and p.id = cp.package_id
        and cp.channel_id = sc.channel_id
        and sc.server_id = :serverid
    union
    select distinct
        pn.name as name,
        null as version,
        null as release,
        null as epoch,
        pa.label as arch,
        false as retracted
   from rhnActionPackage ap
left join rhnPackageArch pa
     on ap.package_arch_id = pa.id,
        rhnPackage p,
        rhnPackageName pn,
        rhnServerChannel sc,
        rhnChannelPackage cp
    where ap.action_id = :actionid
        and ap.evr_id is null
        and ap.name_id = p.name_id
        and p.name_id = pn.id
        and (ap.package_arch_id = p.package_arch_id or ap.package_arch_id is null)
        and p.id = cp.package_id
        and cp.channel_id = sc.channel_id
        and sc.server_id = :serverid"""

_packageStatement_remove = """
    select distinct
        pn.name as name,
        pe.epoch as epoch,
        pe.version as version,
        pe.release as release,
        pa.label as arch
    from rhnActionPackage ap
left join rhnPackageArch pa
     on ap.package_arch_id = pa.id,
        rhnPackageName pn,
        rhnPackageEVR pe,
        rhnServerPackage sp
    where ap.action_id = :actionid
        and ap.evr_id is not null
        and ap.evr_id = pe.id
        and ap.name_id = pn.id
        and sp.server_id = :serverid
        and sp.name_id = ap.name_id
        and sp.evr_id = ap.evr_id
        and (sp.package_arch_id = ap.package_arch_id or sp.package_arch_id is null)
    union
    select distinct
        pn.name as name,
        null as version,
        null as release,
        null as epoch,
        pa.label as arch
    from rhnActionPackage ap
left join rhnPackageArch pa
     on ap.package_arch_id = pa.id,
        rhnPackageName pn,
        rhnServerPackage sp
    where ap.action_id = :actionid
        and ap.evr_id is null
        and sp.server_id = :serverid
        and (sp.package_arch_id = ap.package_arch_id or sp.package_arch_id is null)"""
 07070100000132000081B40000000000000000000000016290A0C10000032F000000000000000000000000000000000000002A00000000spacewalk-backend/server/action/reboot.py #
# Copyright (c) 2008--2015 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#
# reboot functions
#
#

from spacewalk.common.rhnLog import log_debug

# the "exposed" functions
__rhnexport__ = ['reboot']


def reboot(serverId, actionId, dry_run=0):
    log_debug(3)
    return None
 07070100000133000081B40000000000000000000000016290A0C100000438000000000000000000000000000000000000002E00000000spacewalk-backend/server/action/rhn_applet.py #
# Copyright (c) 2008--2013 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#
# rhn_applet related scheduled actions
#
# As a response to a queue.get, retrieves/deletes a queued action from
# the DB.
#

from spacewalk.common.rhnLog import log_debug

# the "exposed" functions
__rhnexport__ = ['use_satellite']


# tell the applet to copy up2date's configs,
# and tie the uuid to rhnServer.id
#
# effectively, a noop serverside until the scheduled action
# runs.
def use_satellite(serverId, actionId, dry_run=0):
    log_debug(3)
    return None
07070100000134000081B40000000000000000000000016290A0C1000005A1000000000000000000000000000000000000002900000000spacewalk-backend/server/action/rhnsd.py  #
# Copyright (c) 2008--2015 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#
# reboot functions
#
#

from spacewalk.server import rhnSQL
from spacewalk.common.rhnLog import log_debug
from spacewalk.common.rhnException import rhnException

# the "exposed" functions
__rhnexport__ = ['configure']

_query_lookup_interval = rhnSQL.Statement("""
    select interval, case when restart = 'Y' then 1 else 0 end as restart
      from rhnActionDaemonConfig
     where action_id = :action_id
""")


def configure(serverId, actionId, dry_run=0):
    log_debug(3, dry_run)
    h = rhnSQL.prepare(_query_lookup_interval)
    h.execute(action_id=actionId)
    row = h.fetchone_dict()
    if not row:
        raise rhnException("rhnsd reconfig action scheduled, but no entries "
                           "in rhnActionDaemonConfig found")
    # Format: (interval, restart)
    return (row['interval'], row['restart'])
   07070100000135000081B40000000000000000000000016290A0C10000056D000000000000000000000000000000000000002C00000000spacewalk-backend/server/action/rollback.py   #
# Copyright (c) 2008--2015 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#
# rollback functions
#
#

from spacewalk.common.rhnLog import log_debug, log_error
from spacewalk.server.rhnLib import InvalidAction

# the "exposed" functions
__rhnexport__ = ['config', 'listTransactions', 'rollback']


def config(serverId, actionId, dry_run=0):
    log_debug(3)
    # XXX Not working
    return 1


def listTransactions(serverId, actionId, dry_run=0):
    log_debug(3)
    return None


def rollback(serverId, actionId, dry_run=0):
    log_debug(3, dry_run)
    # since rhnActionTransactions table is gone, this call have to fail
    log_error("Invalid rollback.rollback action %s for server id %s" %
              (actionId, serverId))
    raise InvalidAction(
        "Invalid rollback.rollback action %s for server id %s" %
        (actionId, serverId))
   07070100000136000081B40000000000000000000000016290A0C10000074B000000000000000000000000000000000000002800000000spacewalk-backend/server/action/scap.py   #
# Copyright (c) 2012--2015 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#

from spacewalk.common.rhnLog import log_debug
from spacewalk.server import rhnSQL
from spacewalk.server.rhnLib import InvalidAction

__rhnexport__ = ['xccdf_eval']


def xccdf_eval(server_id, action_id, dry_run=0):
    log_debug(3)
    statement = """
        select path, parameters
        from rhnActionScap
        where action_id = :action_id"""
    h = rhnSQL.prepare(statement)
    h.execute(action_id=action_id)
    d = h.fetchone_dict()
    if not d:
        raise InvalidAction("scap.xccdf_eval: Unknown action id "
                            "%s for server %s" % (action_id, server_id))
    return ({
        'path': d['path'],
        'id': action_id,
        'file_size': _scap_file_limit(server_id),
        'params': rhnSQL._fix_encoding(rhnSQL.read_lob(d['parameters']) or '')
    },)


def _scap_file_limit(server_id):
    statement = """
        select roc.scap_file_sizelimit as limit, roc.scapfile_upload_enabled as enabled
        from rhnOrgConfiguration roc,
             rhnServer rs
        where rs.id = :server_id
          and rs.org_id = roc.org_id"""
    h = rhnSQL.prepare(statement)
    h.execute(server_id=server_id)
    d = h.fetchone_dict()
    if not d or d['enabled'] != 'Y':
        return 0
    return d['limit']
 07070100000137000081B40000000000000000000000016290A0C100000627000000000000000000000000000000000000002A00000000spacewalk-backend/server/action/script.py #
# Copyright (c) 2008--2015 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#
# remote script functions
#

from spacewalk.common.rhnLog import log_debug
from spacewalk.server import rhnSQL

# the "exposed" functions
__rhnexport__ = ['run']

_query_action_script = rhnSQL.Statement("""
    select script, username, groupname, timeout,
           TO_CHAR(current_timestamp, 'YYYY-MM-DD HH24:MI:SS') as now
      from rhnActionScript
     where action_id = :action_id
""")


def run(server_id, action_id, dry_run=0):
    log_debug(3, dry_run)

    data = {}

    h = rhnSQL.prepare(_query_action_script)
    h.execute(action_id=action_id)

    info = h.fetchone_dict() or []

    if info:
        data['username'] = info['username']
        data['groupname'] = info['groupname']
        data['timeout'] = info['timeout'] or ''
        data['script'] = rhnSQL._fix_encoding(rhnSQL.read_lob(info['script']) or '')
        # used to make the resulting times make some sense in the db
        data['now'] = info['now']

    return action_id, data
 07070100000138000081B40000000000000000000000016290A0C100002D57000000000000000000000000000000000000002900000000spacewalk-backend/server/action/utils.py  #
# Copyright (c) 2008--2016 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#
from spacewalk.server import rhnSQL, rhnAction
from spacewalk.server.rhnDependency import find_package_with_arch
from spacewalk.server.rhnChannel import channels_for_server


class PackageNotFound(Exception):
    pass


class NoActionInfo(Exception):
    pass


class SubscribedChannel:

    """
        SubscribedChannel represents a channel to which the server is subscribed.
    """

    def __init__(self, server_id, channel_lookup_string):
        """
            Constructor.

            server_id is a string containing the unique number that the
            database has assigned to the server.

            channel_lookup_string is a string that the _get_channel_info function
            uses to look up the correct channel by channel label. It does NOT have
            to be the entire channel label, but it does have to occur at the beginning
            of the channel label. For instance "rhn-tools" would match any of the
            rhn-tools channels because they all begin with "rhn-tools". It can also be
            the entire channel label, of course.
        """
        self.server_id = server_id
        self.found_channel = None
        self.channel_id = None
        self.channel_lookup_string = channel_lookup_string
        self.channel_label = None

    def _get_channel_info(self):
        """
            Looks up the correct channel based on channel_lookup_string.
            Populates the id, label, and a boolean that tells whether the
            channel is found.
        """
        subscribed_channels = channels_for_server(self.server_id)

        # Our tools channels all start with "rhn-tools", which seems
        # to be the only way to reliably tell one channel from the other
        # automagically.
        self.found_tools_channel = False
        for channel_info in subscribed_channels:
            label_position = channel_info['label'].find(self.channel_lookup_string)
            if label_position > -1 and label_position == 0:
                self.found_channel = True
                self.channel_id = channel_info['id']
                self.channel_label = channel_info['label']

    def is_subscribed_to_channel(self):
        """
            Returns True if server_id is subscribed to the
            channel, False otherwise
        """
        if not self.found_channel:
            self._get_channel_info()
        return self.found_channel

    def get_channel_id(self):
        """
            Returns the channel's unique id.
        """
        if not self.channel_id:
            self._get_channel_info()
        return self.channel_id

    def get_channel_label(self):
        """
            Returns the channel's label.
        """
        if not self.channel_label:
            self._get_channel_info()
        return self.channel_label


class ChannelPackage:

    """
        Represents a package contained in a channel that the server is
        subscribed to.
    """

    def __init__(self, server_id, package_name):
        """
            Constructor.

            server_id is the unique value assigned to the server by the db.
            package_name is a string containing the name of the package
                to be looked up.
        """
        self.server_id = server_id
        self.package_name = package_name

        self.package_info = None
        self.id = None
        self.version = None
        self.release = None
        self.epoch = None
        self.arch = None

        self.name_id = None
        self.evr_id = None
        self.arch_id = None

        self.id_index = 0
        self.name_index = 1
        self.version_index = 2
        self.release_index = 3
        self.epoch_index = 4
        self.arch_index = 5

    def _get_package_info(self):
        """
            "Private" function that retrieves info about the package.
            Populates self.package_info, self.id, self.version, self.release, and self.epoch.
        """
        # Get info on the package we want to install.
        possible_packages = find_package_with_arch(self.server_id, [self.package_name])

        # There's a possibility, however slight, that more than one package
        # may be returned by find_by_packages. If that's the case, we only
        # want the info about package_name.
        package_info = None
        if self.package_name in possible_packages:
            for package in possible_packages[self.package_name]:
                if package[self.name_index] == self.package_name:
                    self.package_info = package
                    self.id = package[self.id_index]
                    self.version = package[self.version_index]
                    self.release = package[self.release_index]
                    self.epoch = package[self.epoch_index]
                    self.arch = package[self.arch_index]

    def _get_package_field_ids(self):
        """
            "Private" function that retrieves the database id's for the name, EVR, and
            package architecture and sets self.name_id, self.evr_id, and self.arch_id to
            their values.
        """
        package_id = self.get_id()

        if not package_id:
            raise PackageNotFound("ID for package %s was not found." % self.get_name())

        _package_info_query = rhnSQL.Statement("""
            select
                    p.name_id name_id,
                    p.evr_id evr_id,
                    p.package_arch_id arch_id
            from
                    rhnPackage p
            where
                    p.id = :package_id
        """)
        prepared_query = rhnSQL.prepare(_package_info_query)
        prepared_query.execute(package_id=package_id)
        package_info_results = prepared_query.fetchone_dict()

        if not package_info_results:
            raise PackageNotFound("Name, EVR, and Arch info not found for %s" % self.get_name())

        self.name_id = package_info_results['name_id']
        self.evr_id = package_info_results['evr_id']
        self.arch_id = package_info_results['arch_id']

    def exists(self):
        """
            Returns True if the package is available for the server according to the db,
            False otherwise.
        """
        if not self.package_info:
            self._get_package_info()

        if not self.package_info:
            return False
        else:
            return True

    def get_name_id(self):
        """
            Returns the name_id of the package.
        """
        if not self.name_id:
            self._get_package_field_ids()
        return self.name_id

    def get_evr_id(self):
        """
            Returns the evr_id of the package.
        """
        if not self.evr_id:
            self._get_package_field_ids()
        return self.evr_id

    def get_arch_id(self):
        """
            Returns the arch_id of the package.
        """
        if not self.arch_id:
            self._get_package_field_ids()
        return self.arch_id

    def get_id(self):
        """
            Returns the id of the package.
        """
        if not self.id:
            self._get_package_field_ids()
        return self.id

    def get_name(self):
        """
            Returns the name of the package.
        """
        return self.package_name

    def get_version(self):
        """
            Returns the version of the package.
        """
        if not self.version:
            self._get_package_info()
        return self.version

    def get_release(self):
        """
            Returns the release of the package.
        """
        if not self.release:
            self._get_package_info()
        return self.release

    def get_epoch(self):
        """
            Returns the epoch of the package.
        """
        if not self.epoch:
            self._get_package_info()
        return self.epoch

    def get_arch(self):
        """
            Returns the arch of the package.
        """
        if not self.arch:
            self._get_package_info()
        return self.arch


class PackageInstallScheduler:

    """
        Class responsible for scheduling package installs. Can
        only be used inside actions during a kickstart.
    """

    def __init__(self, server_id, this_action_id, package):
        """
            Constructor.

            server_id is the unique number assigned to the server by the database.
            this_action_id is the unique number assigned to the current action.
            package is an instance of ChannelPackage.
        """
        self.server_id = server_id
        self.package = package
        self.this_action_id = this_action_id
        self.new_action_id = None

    def _get_action_info(self, action_id):
        """
            Private function that returns the org_id and scheduler for action_id.
        """
        h = rhnSQL.prepare("""
            select  org_id, scheduler
            from    rhnAction
            where   id = :id
        """)
        h.execute(id=action_id)
        row = h.fetchone_dict()
        if not row:
            raise NoActionInfo("Couldn't find org_id or scheduler for action %s." % str(action_id))
        return (row['org_id'], row['scheduler'])

    def schedule_package_install(self):
        """
            Public function that schedules self.package for installation during the next rhn_check.
        """
        org_id, scheduler = self._get_action_info(self.this_action_id)

        self.new_action_id = rhnAction.schedule_server_action(
            self.server_id,
            action_type="packages.update",
            action_name="Scheduling install of virtualization host packages.",
            delta_time=0,
            scheduler=scheduler,
            org_id=org_id
        )

        self._add_package_to_install_action(self.new_action_id)

    def _add_package_to_install_action(self, action_id):
        """
            Private function that adds self.package to the rhnActionPackage table.
        """
        name_id = self.package.get_name_id()
        package_arch_id = self.package.get_arch_id()
        evr_id = self.package.get_evr_id()

        insert_package_query = rhnSQL.Statement("""
            insert into rhnActionPackage(id,
                                         action_id,
                                         parameter,
                                         name_id,
                                         evr_id,
                                         package_arch_id)
            values (sequence_nextval('rhn_act_p_id_seq'),
                    :action_id,
                    'install',
                    :name_id,
                    :evr_id,
                    :package_arch_id)
        """)
        prepared_query = rhnSQL.prepare(insert_package_query)
        prepared_query.execute(action_id=str(action_id),
                               name_id=str(name_id),
                               evr_id=str(evr_id),
                               package_arch_id=str(package_arch_id))
 07070100000139000081B40000000000000000000000016290A0C100001F16000000000000000000000000000000000000002800000000spacewalk-backend/server/action/virt.py   #
# Copyright (c) 2008--2016 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#

import sys
from spacewalk.common.rhnLog import log_debug
from spacewalk.server import rhnSQL
from spacewalk.server.rhnLib import InvalidAction
from uyuni.common.usix import raise_with_tb

__rhnexport__ = ['refresh',
                 'shutdown',
                 'reboot',
                 'resume',
                 'start',
                 'schedulePoller',
                 'suspend',
                 'destroy',
                 'setMemory',
                 'setVCPUs'
                 ]

###########################################################################
# SQL Queries for each virtualization action type.
###########################################################################
_query_refresh = rhnSQL.Statement("""
    select  avf.action_id,
    from    rhnActionVirtRefresh
    where   avf.action_id = :action_id
""")

_query_shutdown = rhnSQL.Statement("""
    select  avs.action_id,
            avs.uuid
    from    rhnActionVirtShutdown avs
    where   avs.action_id = :action_id
""")

_query_suspend = rhnSQL.Statement("""
    select  avs.action_id,
            avs.uuid
    from    rhnActionVirtSuspend avs
    where   avs.action_id = :action_id
""")

_query_resume = rhnSQL.Statement("""
    select  avr.action_id,
            avr.uuid
    from    rhnActionVirtResume avr
    where   avr.action_id = :action_id
""")

_query_reboot = rhnSQL.Statement("""
    select  avr.action_id,
            avr.uuid
    from    rhnActionVirtReboot avr
    where   avr.action_id = :action_id

""")

_query_destroy = rhnSQL.Statement("""
    select  avd.action_id,
            avd.uuid
    from    rhnActionVirtDestroy avd
    where   avd.action_id = :action_id
""")

_query_start = rhnSQL.Statement("""
    select  avs.action_id,
            avs.uuid
    from    rhnActionVirtStart avs
    where   avs.action_id = :action_id
""")

_query_setMemory = rhnSQL.Statement("""
    select  asm.action_id,
            asm.uuid,
            asm.memory
    from    rhnActionVirtSetMemory asm
    where   asm.action_id = :action_id
""")

_query_getVCPUs = rhnSQL.Statement("""
    select  av.action_id,
            av.uuid,
            av.vcpu
    from    rhnActionVirtVCPU av
    where   av.action_id = :action_id
""")

_query_schedulePoller = rhnSQL.Statement("""
    select  asp.action_id,
            asp.minute,
            asp.hour,
            asp.dom,
            asp.month,
            asp.dow
    from    rhnActionVirtSchedulePoller asp
    where   asp.action_id = :action_id
""")

##########################################################################
# Functions that return the correct parameters that the actions are
# called with. They all take in the server_id and action_id as params.
##########################################################################


class NoUUIDException(Exception):

    def __init__(self):
        Exception.__init__(self)


class NoRowFoundException(Exception):

    def __init__(self):
        Exception.__init__(self)


def _get_uuid(query_str, action_id):
    log_debug(3)

    prepared_query = rhnSQL.prepare(query_str)
    prepared_query.execute(action_id=action_id)
    row = prepared_query.fetchone_dict()

    if not row:
        raise NoRowFoundException()

    if 'uuid' not in row:
        raise NoUUIDException()

    uuid = row['uuid']
    return uuid

# Returns an empty tuple, since the virt.refresh action has no params.


def refresh(server_id, action_id, dry_run=0):
    log_debug(3, dry_run)

    prepared_query = rhnSQL.prepare(_query_refresh)
    prepared_query.execute(action_id=action_id)
    row = prepared_query.fetchone_dict()

    if not row:
        raise NoRowFoundException()

    # Sanity check. If this doesn't pass then something is definitely screwed up.
    if not row['action_id']:
        raise InvalidAction("Refresh action is missing an action_id.")

    return ()

# Returns a uuid


def action(action_name, query, server_id, action_id, dry_run=0):
    log_debug(3, action_name, dry_run)
    try:
        uuid = _get_uuid(query, action_id)
    except NoRowFoundException:
        raise_with_tb(InvalidAction("No %s actions found." % action_name.lower()), sys.exc_info()[2])
    except NoUUIDException:
        raise_with_tb(InvalidAction("%s action %s has no uuid associated with it." %
                            (action_name, str(action_id))), sys.exc_info()[2])
    return (uuid,)


def start(server_id, action_id, dry_run=0):
    return action("Start", _query_start, server_id, action_id, dry_run=0)


def shutdown(server_id, action_id, dry_run=0):
    return action("Shutdown", _query_shutdown, server_id, action_id, dry_run=0)


def suspend(server_id, action_id, dry_run=0):
    return action("Suspend", _query_suspend, server_id, action_id, dry_run=0)


def resume(server_id, action_id, dry_run=0):
    return action("Resume", _query_resume, server_id, action_id, dry_run=0)


def reboot(server_id, action_id, dry_run=0):
    return action("Reboot", _query_reboot, server_id, action_id, dry_run=0)


def destroy(server_id, action_id, dry_run=0):
    return action("Destroy", _query_destroy, server_id, action_id, dry_run=0)

# Returns a uuid and the amount of memory to allocate to the domain.


def setMemory(server_id, action_id, dry_run=0):
    log_debug(3, dry_run)

    prepared_query = rhnSQL.prepare(_query_setMemory)
    prepared_query.execute(action_id=action_id)
    row = prepared_query.fetchone_dict()

    if not row:
        raise InvalidAction("No setMemory actions found.")

    if 'uuid' not in row:
        raise InvalidAction("Set Memory action %s has no uuid." % str(action_id))

    if 'memory' not in row:
        raise InvalidAction("setMemory action %s has no memory set." % str(action_id))

    uuid = row['uuid']
    memory = row['memory']

    return (uuid, memory)

# Returns a uuid and the amount of VCPUs to allocate to the domain.


def setVCPUs(server_id, action_id, dry_run=0):
    log_debug(3, dry_run)

    prepared_query = rhnSQL.prepare(_query_getVCPUs)
    prepared_query.execute(action_id=action_id)
    row = prepared_query.fetchone_dict()

    if not row:
        raise InvalidAction("No VCPU actions found.")

    return row['uuid'], row['vcpu']


# Returns the minute, hour, dom, month, and dow to call schedulePoller with.
def schedulePoller(server_id, action_id, dry_run=0):
    log_debug(3, dry_run)

    prepared_query = rhnSQL.prepare(_query_schedulePoller)
    prepared_query.execute(action_id=action_id)
    row = prepared_query.fetchone_dict()

    if not row:
        raise InvalidAction("No schedulePoller actions found.")

    if 'minute' not in row:
        raise InvalidAction("schedulePoller action %s has no minute associated with it." % str(action_id))

    if 'hour' not in row:
        raise InvalidAction("schedulePoller action %s has no hour associated with it." % str(action_id))

    if 'dom' not in row:
        raise InvalidAction("schedulePoller action %s has no day of the month associated with it." % str(action_id))

    if 'month' not in row:
        raise InvalidAction("schedulePoller action %s has no month associated with it." % str(action_id))

    if 'dow' not in row:
        raise InvalidAction("schedulePoller action %s has no day of the week associated with it." % str(action_id))

    return (row['minute'], row['hour'], row['dom'], row['month'], row['dow'])
  0707010000013A000041FD0000000000000000000000016290A0C100000000000000000000000000000000000000000000002B00000000spacewalk-backend/server/action_extra_data    0707010000013B000081B40000000000000000000000016290A0C10000015A000000000000000000000000000000000000003400000000spacewalk-backend/server/action_extra_data/Makefile   # Makefile for the action handlers module
#

TOP	= ../..
SUBDIR	= server/action_extra_data

SPACEWALK_FILES	= __init__ configfiles kickstart kickstart_guest packages errata hardware reboot \
          rollback up2date_config script rhnsd rhn_applet virt kickstart_host scap image \
          distupgrade clientcert

include $(TOP)/Makefile.defs

  0707010000013C000081B40000000000000000000000016290A0C100000263000000000000000000000000000000000000003700000000spacewalk-backend/server/action_extra_data/__init__.py    #
# Copyright (c) 2008--2015 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
 0707010000013D000081B40000000000000000000000016290A0C10000031A000000000000000000000000000000000000003900000000spacewalk-backend/server/action_extra_data/clientcert.py  #
# Copyright (c) 2014--2015 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.

from spacewalk.common.rhnLog import log_debug

__rhnexport__ = ['update_client_cert']


def update_client_cert(server_id, action_id, data={}):
    log_debug(3, action_id)
    return
  0707010000013E000081B40000000000000000000000016290A0C1000028AC000000000000000000000000000000000000003A00000000spacewalk-backend/server/action_extra_data/configfiles.py #
# Copyright (c) 2008--2016 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#
# config file-related error handling functions
#

from spacewalk.common import rhnFlags
from spacewalk.common.rhnLog import log_debug, log_error
from uyuni.common.stringutils import to_string
from spacewalk.server import rhnSQL
from spacewalk.server.rhnServer import server_kickstart

# the "exposed" functions
__rhnexport__ = ['upload', 'deploy', 'verify', 'diff', 'mtime_upload']

_query_reset_upload_files = rhnSQL.Statement("""
    update rhnActionConfigFileName
       set failure_id = NULL
     where server_id = :server_id
       and action_id = :action_id
""")
_query_mark_upload_files = rhnSQL.Statement("""
    update rhnActionConfigFileName
       set failure_id = :failure_id
     where server_id = :server_id
       and action_id = :action_id
       and config_file_name_id = lookup_config_filename(:path)
""")


def upload(server_id, action_id, data={}):
    log_debug(3)

    # First, unmark any file as being failed
    h = rhnSQL.prepare(_query_reset_upload_files)
    h.execute(server_id=server_id, action_id=action_id)

    if not data:
        log_debug(4, "No data sent by client")
        return

    log_debug(6, 'data', data)

    failure_table = rhnSQL.Table('rhnConfigFileFailure', 'label')
    h = rhnSQL.prepare(_query_mark_upload_files)
    # We don't do executemany here, since we want to know if each update has
    # actually touched a row

    reason_map = {'missing_files': 'missing',
                  'files_too_large': 'too_big',
                  'quota_failed': 'insufficient_quota',
                  }

    for reason in list(reason_map.keys()):
        log_debug(6, 'reason', reason)
        failed_files = data.get(reason)
        log_debug(6, 'failed_files', failed_files)
        if not failed_files:
            continue

        failure_id = failure_table[reason_map[reason]]['id']
        log_debug(6, 'failure_id', failure_id)

        for path in failed_files:
            log_debug(6, 'path', path)
            ret = h.execute(server_id=server_id, action_id=action_id,
                            failure_id=failure_id, path=path)
            if not ret:
                log_error("Could not find file %s for server %s, action %s" %
                          (path, server_id, action_id))


_query_any_action_config_filenames = rhnSQL.Statement("""
    select config_file_name_id
      from rhnActionConfigFileName
     where server_id = :server_id
       and action_id = :action_id
""")
_query_clear_action_config_filenames = rhnSQL.Statement("""
    delete from rhnActionConfigFileName
     where server_id = :server_id
       and action_id = :action_id
""")
_query_create_action_config_filename = rhnSQL.Statement("""
    insert into rhnActionConfigFileName (action_id, config_file_name_id, server_id)
    values (:action_id, lookup_config_filename(:path), :server_id)
""")


def mtime_upload(server_id, action_id, data={}):
    # at this point in time, no rhnActionConfigFileName entries exist, because
    # we didn't know them at schedule time...  go ahead and create them now, and then
    # just use the main upload to handle the updating of the state...
    paths = data.get('attempted_paths') or []

    if not paths:
        log_debug(6, "no matched files")
        return

    log_debug(6, 'attempted paths', paths)

    # if there are already rhnActionConfigFileName entries for this sid+aid,
    # it's most likely a rescheduled action, and we'll need to blow away the old
    # entries (they might not be valid any longer)
    h = rhnSQL.prepare(_query_any_action_config_filenames)
    h.execute(server_id=server_id, action_id=action_id)
    already_filenames = h.fetchone_dict() or []

    if already_filenames:
        h = rhnSQL.prepare(_query_clear_action_config_filenames)
        h.execute(server_id=server_id, action_id=action_id)

    num_paths = len(paths)

    h = rhnSQL.prepare(_query_create_action_config_filename)
    h.executemany(**{
        'action_id': [action_id] * num_paths,
        'server_id': [server_id] * num_paths,
        'path': paths,
    })

    upload(server_id, action_id, data)


def deploy(server_id, action_id, data={}):
    log_debug(3)

    action_status = rhnFlags.get('action_status')
    server_kickstart.update_kickstart_session(server_id,
                                              action_id, action_status, kickstart_state='complete',
                                              next_action_type=None)
    return


def diff(server_id, action_id, data={}):
    log_debug(3)
    if not data:
        # Nothing to do here
        return
    status = rhnFlags.get('action_status')
    if status == 2:
        # Completed
        _reset_diff_errors(server_id, action_id)
        missing_files = data.get('missing_files') or []
        _mark_missing_diff_files(server_id, action_id, missing_files)
        diffs = data.get('diffs') or {}
        _process_diffs(server_id, action_id, diffs)

verify = diff

_query_reset_diff_errors = rhnSQL.Statement("""
    update rhnActionConfigRevision
       set failure_id = NULL
     where server_id = :server_id
       and action_id = :action_id
""")


def _reset_diff_errors(server_id, action_id):
    h = rhnSQL.prepare(_query_reset_diff_errors)
    h.execute(server_id=server_id, action_id=action_id)

_query_lookup_diff_files = rhnSQL.Statement("""
    select acr.id, cfn.path
      from rhnConfigFileName cfn,
           rhnConfigFile cf,
           rhnConfigRevision cr,
           rhnActionConfigRevision acr
     where acr.server_id = :server_id
       and acr.action_id = :action_id
       and acr.config_revision_id = cr.id
       and cr.config_file_id = cf.id
       and cf.config_file_name_id = cfn.id
""")
_query_mark_failed_diff_files = rhnSQL.Statement("""
    update rhnActionConfigRevision
       set failure_id = :failure_id
     where id = :action_config_revision_id
""")


def _mark_missing_diff_files(server_id, action_id, missing_files):
    if not missing_files:
        # Nothing to do
        log_debug(4, "No missing files reported by client")
        return
    # First, fetch all of the files scheduled
    h = rhnSQL.prepare(_query_lookup_diff_files)
    h.execute(server_id=server_id, action_id=action_id)
    hash = {}
    while 1:
        row = h.fetchone_dict()
        if not row:
            break
        action_config_revision_id, path = row['id'], row['path']
        if path in hash:
            # This shouldn't really happen
            log_error("Duplicate path for diff "
                      "(scheduler did not resolve config files? %s, %s" %
                      (hash[path], action_config_revision_id))
        else:
            hash[path] = action_config_revision_id

    ids = []
    for path in missing_files:
        if path not in hash:
            log_error("Client reports missing a file "
                      "that was not scheduled for diff? %s" % path)
            continue
        ids.append(hash[path])
    if not ids:
        log_debug(4, "No missing files found")
        return
    failure_table = rhnSQL.Table('rhnConfigFileFailure', 'label')
    failure_id = failure_table['missing']['id']
    failure_ids = [failure_id] * len(ids)

    h = rhnSQL.prepare(_query_mark_failed_diff_files)
    h.executemany(**{
        'action_config_revision_id': ids,
        'failure_id': failure_ids,
    })


def _process_diffs(server_id, action_id, diffs):
    _disable_old_diffs(server_id)
    for file_path, diff in list(diffs.items()):
        action_config_revision_id = _lookup_action_revision_id(server_id,
                                                               action_id, file_path)
        if action_config_revision_id is None:
            log_error(
                "Missing config file for action id %s, server id %s, path %s"
                % (server_id, action_id, file_path))
            continue
        _add_result(action_config_revision_id, diff)

_query_lookup_action_revision_id = rhnSQL.Statement("""
    select acr.id
      from rhnConfigRevision cr, rhnConfigFile cf, rhnActionConfigRevision acr
     where acr.action_id = :action_id
       and acr.server_id = :server_id
       and acr.config_revision_id = cr.id
       and cr.config_file_id = cf.id
       and cf.config_file_name_id = lookup_config_filename(:path)
""")


def _lookup_action_revision_id(server_id, action_id, path):
    h = rhnSQL.prepare(_query_lookup_action_revision_id)
    h.execute(server_id=server_id, action_id=action_id, path=path)
    row = h.fetchone_dict()
    if not row:
        return None
    return row['id']

_query_add_result_diff = rhnSQL.Statement("""
    insert into rhnActionConfigRevisionResult
           (action_config_revision_id, result)
    values (:action_config_revision_id, :result)
""")


def _add_result(action_config_revision_id, diff):

    log_debug(4, action_config_revision_id, diff)

    if diff:
        blob_map = {'result': 'result'}
        diff = to_string(diff)
    else:
        blob_map = None
        diff = None

    h = rhnSQL.prepare(_query_add_result_diff, blob_map=blob_map)
    h.execute(action_config_revision_id=action_config_revision_id,
              result=diff)

_query_lookup_old_diffs = rhnSQL.Statement("""
    select acr.id
      from rhnActionConfigRevision acr
     where acr.server_id = :server_id
""")

_query_delete_old_diffs = rhnSQL.Statement("""
    delete from rhnActionConfigRevisionResult
     where action_config_revision_id = :action_config_revision_id
""")


def _disable_old_diffs(server_id):
    h = rhnSQL.prepare(_query_lookup_old_diffs)
    h.execute(server_id=server_id)
    old_acr_ids = [x['id'] for x in h.fetchall_dict() or []]
    if not old_acr_ids:
        # Nothing to do here
        return

    h = rhnSQL.prepare(_query_delete_old_diffs)
    h.executemany(**{'action_config_revision_id': old_acr_ids})
0707010000013F000081B40000000000000000000000016290A0C100000869000000000000000000000000000000000000003A00000000spacewalk-backend/server/action_extra_data/distupgrade.py #
# Copyright (c) 2012 SUSE LLC
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
#

import sys
from spacewalk.common import rhnFlags
from spacewalk.common.rhnLog import log_debug, log_error
from spacewalk.server import rhnSQL
from spacewalk.server.rhnChannel import subscribe_channels, unsubscribe_channels

__rhnexport__ = ['upgrade']

_query_dup_data = rhnSQL.Statement("""
    SELECT id, dry_run
      FROM rhnActionDup
     WHERE action_id = :action_id
""")

_query_channel_changes = rhnSQL.Statement("""
    SELECT c.id, c.label, c.parent_channel, adc.task
      FROM rhnActionDupChannel adc
      JOIN rhnChannel c ON adc.channel_id = c.id
     WHERE adc.action_dup_id = :action_dup_id
""")

def upgrade(serverId, actionId, data={}):
    log_debug(3)

    h = rhnSQL.prepare(_query_dup_data)
    h.execute(action_id=actionId)
    row = h.fetchone_dict() or None
    if not row:
        log_error("Unable to find action data")
        return

    if row['dry_run'] == 'Y':
        _restore_channels(serverId, row['id'])


def _restore_channels(serverId, action_dup_id):
    log_debug(3)
    h = rhnSQL.prepare(_query_channel_changes)
    h.execute(action_dup_id=action_dup_id)
    channel_changes = h.fetchall_dict() or None

    if not channel_changes:
        # something goes wrong
        log_error("nothing to rollback for channels")
        return

    # we need to rollback the changes from action
    # therefore unsubscribe task 'S' and
    # subscribe task 'U'
    to_unsubscribe = [x for x in channel_changes if x['task'] == 'S']
    to_subscribe = [x for x in channel_changes if x['task'] == 'U']

    try:
        unsubscribe_channels(serverId, to_unsubscribe)
        subscribe_channels(serverId, to_subscribe)
    except Exception as e:
        log_error(str(e), sys.exc_info()[2])

    return
   07070100000140000081B40000000000000000000000016290A0C1000003CA000000000000000000000000000000000000003500000000spacewalk-backend/server/action_extra_data/errata.py  #
# Copyright (c) 2008--2015 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#
# errata-related error handling functions
#

from spacewalk.common.rhnLog import log_debug

# the "exposed" functions
__rhnexport__ = ['update']


def update(server_id, action_id, data={}):
    if not data:
        return
    log_debug(2, "action_error.errata.update: Should do something "
              "useful with this data", server_id, action_id, data)
  07070100000141000081B40000000000000000000000016290A0C1000003B2000000000000000000000000000000000000003700000000spacewalk-backend/server/action_extra_data/hardware.py    #
# Copyright (c) 2008--2015 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#

from spacewalk.common.rhnLog import log_debug

# the "exposed" functions
__rhnexport__ = ['refresh_list']


def refresh_list(server_id, action_id, data={}):
    if not data:
        return
    log_debug(2, "action_error.hardware.refresh_list: Should do something "
              "useful with this data", server_id, action_id, data)
  07070100000142000081B40000000000000000000000016290A0C1000003C6000000000000000000000000000000000000003400000000spacewalk-backend/server/action_extra_data/image.py   #
# Copyright (c) 2008--2015 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#
# errata-related error handling functions
#

from spacewalk.common.rhnLog import log_debug

# the "exposed" functions
__rhnexport__ = ['deploy']


def deploy(server_id, action_id, data={}):
    if not data:
        return
    log_debug("action_error.image.deploy: Should do something "
              "useful with this data", server_id, action_id, data)
  07070100000143000081B40000000000000000000000016290A0C100000546000000000000000000000000000000000000003800000000spacewalk-backend/server/action_extra_data/kickstart.py   #
# Copyright (c) 2008--2015 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#
# Kickstart-related error handling functions
#

from spacewalk.common import rhnFlags
from spacewalk.common.rhnLog import log_debug
from spacewalk.server.rhnServer import server_kickstart

# the "exposed" functions
__rhnexport__ = ['initiate', 'schedule_sync']


def initiate(server_id, action_id, data={}):
    log_debug(3, action_id)

    action_status = rhnFlags.get('action_status')
    server_kickstart.update_kickstart_session(server_id, action_id,
                                              action_status, kickstart_state='injected',
                                              next_action_type='reboot.reboot')

# This one will never be called


def schedule_sync(server_id, action_id, data={}):
    log_debug(3, action_id)
  07070100000144000081B40000000000000000000000016290A0C100000795000000000000000000000000000000000000003E00000000spacewalk-backend/server/action_extra_data/kickstart_guest.py #
# Copyright (c) 2008--2015 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#
from spacewalk.common import rhnFlags
from spacewalk.common.rhnLog import log_debug
from spacewalk.server.rhnServer import server_kickstart

__rhnexport__ = ['initiate', 'add_tools_channel', 'schedule_virt_guest_pkg_install']


def _action(action_name, server_id, action_id, success_state, success_type):
    log_debug(3, action_name, server_id, action_id)

    action_status = rhnFlags.get('action_status')

    if action_status == 3:
        ks_state = 'failed'
        next_action_type = None
    else:
        ks_state = success_state
        next_action_type = success_type

    server_kickstart.update_kickstart_session(server_id, action_id,
                                              action_status, kickstart_state=ks_state,
                                              next_action_type=next_action_type)


def schedule_virt_guest_pkg_install(server_id, action_id, data={}):
    _action('schedule_virt_guest_pkg_install', server_id, action_id,
            'complete', None)


def add_tools_channel(server_id, action_id, data={}):
    _action('add_tools_channel', server_id, action_id,
            'complete', 'kickstart_guest.schedule_virt_guest_pkg_install')


def initiate(server_id, action_id, data={}):
    _action('initiate', server_id, action_id,
            'in_progress', 'kickstart_guest.add_tools_channel')
   07070100000145000081B40000000000000000000000016290A0C100000391000000000000000000000000000000000000003D00000000spacewalk-backend/server/action_extra_data/kickstart_host.py  #
# Copyright (c) 2008--2015 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#
from spacewalk.common.rhnLog import log_debug

__rhnexport__ = ['schedule_virt_host_pkg_install', 'add_tools_channel']


def schedule_virt_host_pkg_install(server_id, action_id, data={}):
    log_debug(3, action_id)


def add_tools_channel(server_id, action_id, data={}):
    log_debug(3, action_id)
   07070100000146000081B40000000000000000000000016290A0C100004732000000000000000000000000000000000000003700000000spacewalk-backend/server/action_extra_data/packages.py    #
# Copyright (c) 2008--2016 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#
#

import sys
import re
import sys

from uyuni.common.usix import ListType, IntType

from spacewalk.common import rhnFlags
from spacewalk.common.rhnLog import log_debug, log_error
from spacewalk.common.rhnException import rhnException
from spacewalk.server import rhnSQL
from spacewalk.server.rhnServer import server_kickstart

# the "exposed" functions
__rhnexport__ = ['remove',
                 'update',
                 'refresh_list',
                 'delta',
                 'runTransaction',
                 'verify',
                 'setLocks']


class InvalidDep(Exception):
    pass

_query_insert_attribute_verify_results = rhnSQL.Statement("""
insert into rhnServerActionVerifyResult (
    server_id, action_id,
    package_name_id,
    package_evr_id,
    package_arch_id,
    package_capability_id,
    attribute, size_differs, mode_differs, checksum_differs,
    devnum_differs, readlink_differs, uid_differs,
    gid_differs, mtime_differs
)
values (
      :server_id, :action_id,
      lookup_package_name(:package_name),
      lookup_evr(:epoch || '', :version, :release, (select at.label from rhnArchType at join rhnPackageArch pa ON pa.arch_type_id = at.id where pa.id = lookup_package_arch(:arch))),
      lookup_package_arch(:arch),
      lookup_package_capability(:filename),
      :attrib, :test_S, :test_M, :test_5,
      :test_D, :test_L, :test_U,
      :test_G, :test_T
)
""")

_query_insert_missing_verify_results = rhnSQL.Statement("""
insert into rhnServerActionVerifyMissing (
    server_id,
    action_id,
    package_name_id,
    package_evr_id,
    package_arch_id,
    package_capability_id
)
values (
    :server_id,
    :action_id,
    lookup_package_name(:package_name),
    lookup_evr(:epoch || '', :version, :release, (select at.label from rhnArchType at join rhnPackageArch pa ON pa.arch_type_id = at.id where pa.id = lookup_package_arch(:arch))),
    lookup_package_arch(:arch),
    lookup_package_capability(:filename)
)
""")

_query_delete_verify_results = rhnSQL.Statement("""
    delete from rhnServerActionVerifyResult
     where server_id = :server_id
       and action_id = :action_id
""")

_query_delete_verify_missing = rhnSQL.Statement("""
    delete from rhnServerActionVerifyMissing
     where server_id = :server_id
       and action_id = :action_id
""")


def verify(server_id, action_id, data={}):
    log_debug(3, action_id)

    if (not data) or ('verify_info' not in data):
        # some data should have been passed back...
        log_error("Insufficient package verify information returned",
                  server_id, action_id, data)
        return

    log_debug(4, "pkg verify data", data)

    # Remove old results
    h = rhnSQL.prepare(_query_delete_verify_results)
    h.execute(server_id=server_id, action_id=action_id)

    h = rhnSQL.prepare(_query_delete_verify_missing)
    h.execute(server_id=server_id, action_id=action_id)

    attrib_tests = ['S', 'M', '5', 'D', 'L', 'U', 'G', 'T']

    # Store the values for executemany() for the attribute-failures
    verify_attribs = {'server_id': [], 'action_id': [], 'package_name': [],
                      'epoch': [], 'version': [], 'release': [], 'arch': [],
                      'filename': [], 'attrib': [], }
    for test in attrib_tests:
        verify_attribs["test_" + test] = []

    # Store the "missing xxxx" results for executemany()
    missing_files = {'server_id': [], 'action_id': [], 'package_name': [],
                     'epoch': [], 'version': [], 'release': [], 'arch': [],
                     'filename': []}

    # Uniquify the packages
    uq_packages = {}

    for package_spec, responses in data['verify_info']:
        package_spec = list(package_spec)
        # Fix the epoch
        if package_spec[3] == '':
            package_spec[3] = None
        package_spec = tuple(package_spec)
        if package_spec in uq_packages:
            # Been here already
            continue

        # We need to uniquify the file names within a package too
        hash = {}
        for response in responses:
            try:
                dict = _parse_response_line(response, attrib_tests)
            except InvalidResponseLine:
                log_error("packages.verify: (%s, %s): invalid line %s"
                          % (server_id, action_id, response))
                continue

            hash[dict['filename']] = dict

        # Add the rest of the variables to the dictionaries
        for filename, dict in list(hash.items()):
            dict['server_id'] = server_id
            dict['action_id'] = action_id

            dict['package_name'] = package_spec[0]
            dict['version'] = package_spec[1]
            dict['release'] = package_spec[2]
            dict['epoch'] = package_spec[3]
            dict['arch'] = package_spec[4]

            if 'missing' not in dict:
                _hash_append(verify_attribs, dict)
            else:
                _hash_append(missing_files, dict)

        # This package was visited, store it
        uq_packages[package_spec] = None

    if verify_attribs['action_id']:
        h = rhnSQL.prepare(_query_insert_attribute_verify_results)
        h.executemany(**verify_attribs)

    if missing_files['action_id']:
        h = rhnSQL.prepare(_query_insert_missing_verify_results)
        h.executemany(**missing_files)

    rhnSQL.commit()

_query_set_locks = rhnSQL.Statement("""
    UPDATE rhnLockedPackages
      SET pending = NULL
      WHERE rhnLockedPackages.server_id = :server_id AND
        rhnLockedPackages.pkg_id IN (
        SELECT pkg_id
          FROM rhnLockedPackages JOIN rhnActionPackage
            ON rhnLockedPackages.name_id = rhnActionPackage.name_id
            AND rhnLockedPackages.evr_id = rhnActionPackage.evr_id
            AND rhnLockedPackages.arch_id = rhnActionPackage.package_arch_id
          WHERE rhnActionPackage.action_id = :action_id
            AND rhnLockedPackages.server_id = :server_id
            AND rhnActionPackage.parameter = 'lock'
            AND rhnLockedPackages.pending = 'L'
      )
""")
_query_remove_locks = rhnSQL.Statement("""
    DELETE FROM rhnLockedPackages
      WHERE rhnLockedPackages.server_id = :server_id AND
        rhnLockedPackages.pkg_id IN (
        SELECT pkg_id
          FROM rhnLockedPackages JOIN rhnActionPackage
            ON rhnLockedPackages.name_id = rhnActionPackage.name_id
            AND rhnLockedPackages.evr_id = rhnActionPackage.evr_id
            AND rhnLockedPackages.arch_id = rhnActionPackage.package_arch_id
          WHERE rhnActionPackage.action_id = :action_id
            AND rhnLockedPackages.server_id = :server_id
            AND rhnActionPackage.parameter = 'lock'
            AND rhnLockedPackages.pending = 'U'
      )
""")
def setLocks(server_id, action_id, data={}):
    log_debug(3, action_id)

    h = rhnSQL.prepare(_query_set_locks)
    h.execute(server_id = server_id, action_id = action_id)

    h = rhnSQL.prepare(_query_remove_locks)
    h.execute(server_id = server_id, action_id = action_id)

# Exception raised when an invalid line is found


class InvalidResponseLine(Exception):
    pass


def _parse_response_line(response, tests):
    # Parses a single line of output from rpmverify
    # Returns a dictionary of values that can be plugged into the SQL query

    # response looks like:
    # 'S.5....T c /usr/share/rhn/up2date_client/iutil.pyc'
    # or
    # '....L...   /var/www/html'
    # or
    # 'missing    /usr/include/curl/types.h'
    # or
    # 'missing  c /var/www/html/index.html'
    #
    #
    #   or something like S.5....T.   /usr/lib/anaconda-runtime/boot/boot.msg
    # with the last line being a . or a C, depending on selinux context
    # see #155952
    #

    res_re = re.compile("^(?P<ts>[\S]+)\s+(?P<attr>[cdglr]?)\s* (?P<filename>[\S]+)$")

    m = res_re.match(response)

    if not m:
        raise InvalidResponseLine

    ts, attr, filename = m.groups()
    # clean up attr, as it can get slightly fudged in the

    if ts == 'missing':
        return {'filename': filename, 'missing': None}

    # bug 155952: SELinux will return an extra flag
    # FIXME: need to support the extra selinux context flag
    # I think this is just being paranoid, but to avoid changing schema for
    # bug 155952 we going to remove the 9th char if we get it
    # ahem, ignore the last flag if we 9 chars
    if len(ts) < len(tests):
        raise InvalidResponseLine

    if not filename:
        raise InvalidResponseLine

    dict = {
        'attrib': attr or None,  # convert empty attribute to None
        'filename': filename,
    }
    # Add the tests
    for i in range(len(tests)):
        val = ts[i]
        t_name = tests[i]
        if val == t_name:
            val = 'Y'
        elif val == '.':
            val = 'N'
        elif val != '?':
            raise InvalidResponseLine
        dict["test_" + t_name] = val

    return dict


def _hash_append(dst, src):
    # Append the values of src to dst
    for k, list in list(dst.items()):
        list.append(src[k])


def update(server_id, action_id, data={}):
    log_debug(3, server_id, action_id)

    action_status = rhnFlags.get('action_status')

    if action_status == 3:
        # Action failed
        kickstart_state = 'failed'
        next_action_type = None
    else:
        kickstart_state = 'deployed'

        # This is horrendous, but in order to fix it I would have to change almost all of the
        # actions code, which we don't have time to do for the 500 beta. --wregglej
        try:
            ks_session_type = server_kickstart.get_kickstart_session_type(server_id, action_id)
        except rhnException:
            re = sys.exc_info()[1]
            ks_session_type = None

        if ks_session_type is None:
            next_action_type = "None"
        elif ks_session_type == 'para_guest':
            next_action_type = 'kickstart_guest.initiate'
        else:
            next_action_type = 'kickstart.initiate'

    log_debug(4, "next_action_type: %s" % next_action_type)

    # More hideous hacked together code to get around our inflexible actions "framework".
    # If next_action_type is "None", we're assuming that we're *not* in a kickstart session
    # at this point, so we don't want to update a non-existant kickstart session.
    # I feel so dirty.  --wregglej
    if next_action_type != "None":
        server_kickstart.update_kickstart_session(server_id, action_id,
                                                  action_status, kickstart_state=kickstart_state,
                                                  next_action_type=next_action_type)

        _mark_dep_failures(server_id, action_id, data)


def remove(server_id, action_id, data={}):
    log_debug(3, action_id, data.get('name'))
    _mark_dep_failures(server_id, action_id, data)


_query_delete_dep_failures = rhnSQL.Statement("""
    delete from rhnActionPackageRemovalFailure
    where server_id = :server_id and action_id = :action_id
""")
_query_insert_dep_failures = rhnSQL.Statement("""
    insert into rhnActionPackageRemovalFailure (
        server_id, action_id, name_id, evr_id, capability_id,
        flags, suggested, sense)
    values (
        :server_id, :action_id, LOOKUP_PACKAGE_NAME(:name),
        LOOKUP_EVR(:epoch, :version, :release, (select at.label from rhnArchType at join rhnServerArch sa ON sa.arch_type_id = at.id join rhnServer s on s.server_arch_id = sa.id where s.id = :server_id)),
        LOOKUP_PACKAGE_CAPABILITY(:needs_name, :needs_version),
        :flags, LOOKUP_PACKAGE_NAME(:suggested, :ignore_null), :sense)
""")


def _mark_dep_failures(server_id, action_id, data):
    if not data:
        log_debug(4, "Nothing to do")
        return
    failed_deps = data.get('failed_deps')
    if not failed_deps:
        log_debug(4, "No failed deps")
        return

    if not isinstance(failed_deps, ListType):
        # Not the right format
        log_error("action_extra_data.packages.remove: server %s, action %s: "
                  "wrong type %s" % (server_id, action_id, type(failed_deps)))
        return

    inserts = {}
    for f in ('server_id', 'action_id',
              'name', 'version', 'release', 'epoch',
              'needs_name', 'needs_version', 'ignore_null',
              'flags', 'suggested', 'sense'):
        inserts[f] = []

    for failed_dep in failed_deps:
        try:
            pkg, needs_pkg, flags, suggested, sense = _check_dep(server_id,
                                                                 action_id, failed_dep)
        except InvalidDep:
            continue

        inserts['server_id'].append(server_id)
        inserts['action_id'].append(action_id)
        inserts['name'] .append(pkg[0])
        inserts['version'].append(pkg[1])
        inserts['release'].append(pkg[2])
        inserts['epoch'].append(None)

        inserts['needs_name'].append(needs_pkg[0])
        inserts['needs_version'].append(needs_pkg[1])

        inserts['flags'].append(flags)
        inserts['suggested'].append(suggested)
        inserts['ignore_null'].append(1)
        inserts['sense'].append(sense)

    h = rhnSQL.prepare(_query_delete_dep_failures)
    rowcount = h.execute(server_id=server_id, action_id=action_id)
    log_debug(5, "Removed old rows", rowcount)

    h = rhnSQL.prepare(_query_insert_dep_failures)

    h.executemany(**inserts)


def _check_dep(server_id, action_id, failed_dep):
    log_debug(5, failed_dep)
    if not failed_dep:
        return
    if not isinstance(failed_dep, ListType):
        # Not the right format
        log_error("action_extra_data.packages.remove: server %s, action %s: "
                  "failed dep type error: %s" % (
                      server_id, action_id, type(failed_dep)))
        raise InvalidDep

    # This is boring, but somebody's got to do it
    if len(failed_dep) < 5:
        log_error("action_extra_data.packages.remove: server %s, action %s: "
                  "failed dep: not enough entries: %s" % (
                      server_id, action_id, len(failed_dep)))
        raise InvalidDep

    pkg, needs_pkg, flags, suggested, sense = failed_dep[:5]

    if not isinstance(pkg, ListType) or len(pkg) < 3:
        log_error("action_extra_data.packages.remove: server %s, action %s: "
                  "failed dep: bad package spec %s (type %s, len %s)" % (
                      server_id, action_id, pkg, type(pkg), len(pkg)))
        raise InvalidDep
    pkg = list(map(str, pkg[:3]))

    if not isinstance(needs_pkg, ListType) or len(needs_pkg) < 2:
        log_error("action_extra_data.packages.remove: server %s, action %s: "
                  "failed dep: bad needs package spec %s (type %s, len %s)" % (
                      server_id, action_id, needs_pkg, type(needs_pkg),
                      len(needs_pkg)))
        raise InvalidDep
    needs_pkg = list(map(str, needs_pkg[:2]))

    if not isinstance(flags, IntType):
        log_error("action_extra_data.packages.remove: server %s, action %s: "
                  "failed dep: bad flags type %s" % (server_id, action_id, type(flags)))
        raise InvalidDep

    if not isinstance(sense, IntType):
        log_error("action_extra_data.packages.remove: server %s, action %s: "
                  "failed dep: bad sense type %s" % (server_id, action_id, type(sense)))
        raise InvalidDep

    return pkg, needs_pkg, flags, str(suggested), sense


def refresh_list(server_id, action_id, data={}):
    if not data:
        return
    log_debug(2, "action_extra_data.packages.refresh_list: Should do something "
              "useful with this data", server_id, action_id, data)


def delta(server_id, action_id, data={}):
    if not data:
        return
    log_debug(2, "action_extra_data.packages.delta: Should do something "
              "useful with this data", server_id, action_id, data)


def runTransaction(server_id, action_id, data={}):
    log_debug(3, action_id)

    # If it's a kickstart-related transaction, mark the kickstart session as
    # completed
    action_status = rhnFlags.get('action_status')
    ks_session_id = _next_kickstart_step(server_id, action_id, action_status)

    # Cleanup package profile
    server_kickstart.cleanup_profile(server_id, action_id, ks_session_id,
                                     action_status)

    _mark_dep_failures(server_id, action_id, data)

# Determine the next step to be executed in the kickstart code


def _next_kickstart_step(server_id, action_id, action_status):
    if action_status == 3:  # Failed
        # Nothing more to do here
        return server_kickstart.update_kickstart_session(server_id,
                                                         action_id, action_status, kickstart_state='complete',
                                                         next_action_type=None)

    # Fetch kickstart session id
    ks_session_id = server_kickstart.get_kickstart_session_id(server_id,
                                                              action_id)

    if ks_session_id is None:
        return server_kickstart.update_kickstart_session(server_id,
                                                         action_id, action_status, kickstart_state='complete',
                                                         next_action_type=None)

    # Get the current server profile
    server_profile = server_kickstart.get_server_package_profile(server_id)

    server_kickstart.schedule_config_deploy(server_id, action_id,
                                            ks_session_id, server_profile=server_profile)
    return ks_session_id
  07070100000147000081B40000000000000000000000016290A0C100000489000000000000000000000000000000000000003500000000spacewalk-backend/server/action_extra_data/reboot.py  #
# Copyright (c) 2008--2015 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#
#

from spacewalk.common import rhnFlags
from spacewalk.common.rhnLog import log_debug
from spacewalk.server.rhnServer import server_kickstart

# the "exposed" functions
__rhnexport__ = ['reboot']


def reboot(server_id, action_id, data={}):
    log_debug(3, action_id)

    action_status = rhnFlags.get('action_status')
    server_kickstart.update_kickstart_session(server_id, action_id,
                                              action_status, kickstart_state='restarted',
                                              next_action_type=None)
   07070100000148000081B40000000000000000000000016290A0C10000032B000000000000000000000000000000000000003900000000spacewalk-backend/server/action_extra_data/rhn_applet.py  #
# Copyright (c) 2008--2015 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#
#

from spacewalk.common.rhnLog import log_debug

# the "exposed" functions
__rhnexport__ = ['use_satellite']

# noop


def use_satellite(server_id, action_id, data={}):
    log_debug(3, action_id)
 07070100000149000081B40000000000000000000000016290A0C10000030F000000000000000000000000000000000000003400000000spacewalk-backend/server/action_extra_data/rhnsd.py   #
# Copyright (c) 2008--2015 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#
#

from spacewalk.common.rhnLog import log_debug

__rhnexport__ = ['configure']

# the "exposed" functions


def configure(serverId, actionId, data={}):
    log_debug(3)
 0707010000014A000081B40000000000000000000000016290A0C10000058E000000000000000000000000000000000000003700000000spacewalk-backend/server/action_extra_data/rollback.py    #
# Copyright (c) 2008--2015 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#
#

from spacewalk.common.rhnLog import log_debug

# the "exposed" functions
__rhnexport__ = ['config', 'listTransactions', 'rollback']


def config(server_id, action_id, data={}):
    if not data:
        return
    log_debug(2, "action_error.rollback.config: Should do something "
              "useful with this data", server_id, action_id, data)


def listTransactions(server_id, action_id, data={}):
    if not data:
        return
    log_debug(2, "action_error.rollback.listTransactions: Should do something "
              "useful with this data", server_id, action_id, data)


def rollback(server_id, action_id, data={}):
    if not data:
        return
    log_debug(2, "action_error.rollback.listTransactions: Should do something "
              "useful with this data", server_id, action_id, data)
  0707010000014B000081B40000000000000000000000016290A0C1000019A0000000000000000000000000000000000000003300000000spacewalk-backend/server/action_extra_data/scap.py    #
# Copyright (c) 2012--2015 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#
#

import xml.dom.minidom
from base64 import decodestring
from spacewalk.common.rhnLog import log_debug, log_error
from spacewalk.server import rhnSQL

__rhnexport__ = ['xccdf_eval']


def xccdf_eval(server_id, action_id, data={}):
    log_debug(3)
    h = rhnSQL.prepare(_query_clear_tresult)
    h.execute(server_id=server_id, action_id=action_id)
    if not data:
        log_debug(4, "No data sent by client")
        return

    for item in ('resume', 'errors'):
        data[item] = decodestring(data[item].encode()).decode()

    resume = xml.dom.minidom.parseString(data['resume'])
    benchmark = resume.getElementsByTagName('benchmark-resume')[0]
    profiles = benchmark.getElementsByTagName('profile') or [_dummyDefaultProfile()]
    testresults = benchmark.getElementsByTagName('TestResult')
    if len(profiles) < 1 or len(testresults) < 1:
        log_error('Scap report misses profile or testresult element')
        return
    if len(profiles) != 1 or len(testresults) != 1:
        log_error('Scap report containst multiple results',
                  len(profiles), len(testresults))
    _process_testresult(testresults[0], server_id, action_id, benchmark,
                        profiles[0], data['errors'])


def _process_testresult(tr, server_id, action_id, benchmark, profile, errors):
    start_time = None
    if tr.hasAttribute('start-time'):
        start_time = tr.getAttribute('start-time')

    h = rhnSQL.prepare(_query_insert_tresult, blob_map={'errors': 'errors'})
    h.execute(server_id=server_id,
              action_id=action_id,
              bench_id=_truncate(benchmark.getAttribute('id'), 120),
              bench_version=_truncate(benchmark.getAttribute('version'), 80),
              profile_id=profile.getAttribute('id'),
              profile_title=_truncate(profile.getAttribute('title'), 120),
              identifier=_truncate(tr.getAttribute('id'), 120),
              start_time=start_time.replace('T', ' '),
              end_time=tr.getAttribute('end-time').replace('T', ' '),
              errors=errors
              )
    h = rhnSQL.prepare(_query_get_tresult)
    h.execute(server_id=server_id, action_id=action_id)
    testresult_id = h.fetchone()[0]
    if not _process_ruleresults(testresult_id, tr):
        h = rhnSQL.prepare(_query_update_errors, blob_map={'errors': 'errors'})
        h.execute(testresult_id=testresult_id,
                  errors=errors +
                  '\nSome text strings were truncated when saving to the database.')

truncated = False


def _process_ruleresults(testresult_id, tr):
    global truncated
    truncated = False
    inserts = {'rr_id': [], 'system': [], 'ident': []}
    for result in tr.childNodes:
        for rr in result.childNodes:
            rr_id = _create_rresult(testresult_id, result.nodeName)

            inserts['rr_id'].append(rr_id)
            inserts['system'].append('#IDREF#')
            inserts['ident'].append(_truncate(rr.getAttribute('id'), 255))
            for ident in rr.childNodes:
                trunc_ident = _truncate(_get_text(ident), 255)
                if not trunc_ident:
                    continue
                inserts['rr_id'].append(rr_id)
                inserts['system'].append(_truncate(ident.getAttribute('system'), 80))
                inserts['ident'].append(trunc_ident)
    _store_idents(inserts)
    return not truncated


def _truncate(string, max_len):
    global truncated
    if len(string) > max_len:
        truncated = True
        return string[:max_len - 3] + "..."
    return string


def _create_rresult(testresult_id, result_label):
    rr_id = rhnSQL.Sequence("rhn_xccdf_rresult_id_seq")()
    h = rhnSQL.prepare(_query_insert_rresult)
    h.execute(rr_id=rr_id, testresult_id=testresult_id,
              result_label=result_label)
    return rr_id


def _store_idents(data):
    h = rhnSQL.prepare(_query_insert_identmap)
    h.executemany(**data)

def _get_text(node):
    rc = []
    for node in node.childNodes:
        if node.nodeType == node.TEXT_NODE:
            rc.append(node.data)
    return ''.join(rc)


class _dummyDefaultProfile:

    def getAttribute(self, name):
        if name == 'id':
            return 'None'
        elif name == 'title':
            return 'No profile selected. Using defaults.'
        return ''

_query_clear_tresult = rhnSQL.Statement("""
delete from rhnXccdfTestresult
 where server_id = :server_id
   and action_scap_id = (
    select id from rhnActionScap
     where action_id = :action_id)
""")

_query_insert_tresult = rhnSQL.Statement("""
insert into rhnXccdfTestresult(
    id,
    server_id,
    action_scap_id,
    benchmark_id,
    profile_id,
    identifier,
    start_time,
    end_time,
    errors)
values (
    sequence_nextval('rhn_xccdf_tresult_id_seq'),
    :server_id,
    (select ras.id
       from rhnActionScap ras
      where ras.action_id = :action_id),
    lookup_xccdf_benchmark(:bench_id, :bench_version),
    lookup_xccdf_profile(:profile_id, :profile_title),
    :identifier,
    TO_TIMESTAMP(:start_time, 'YYYY-MM-DD HH24:MI:SS'),
    TO_TIMESTAMP(:end_time, 'YYYY-MM-DD HH24:MI:SS'),
    :errors
    )
""")

_query_get_tresult = rhnSQL.Statement("""
select id from rhnXccdfTestresult
    where server_id = :server_id
    and action_scap_id = (
        select ras.id
            from rhnActionScap ras
             where ras.action_id = :action_id
    )
""")

_query_insert_rresult = """
insert into rhnXccdfRuleresult (id, testresult_id, result_id)
values (
    :rr_id,
    :testresult_id,
    (select rt.id
        from rhnXccdfRuleresultType rt
        where rt.label = :result_label)
    )
"""

_query_insert_identmap = rhnSQL.Statement("""
insert into rhnXccdfRuleIdentMap (rresult_id, ident_id)
values (
    :rr_id,
    lookup_xccdf_ident(:system, :ident)
    )
""")

_query_update_errors = rhnSQL.Statement("""
update rhnXccdfTestresult
set errors = :errors
where id = :testresult_id
""")
0707010000014C000081B40000000000000000000000016290A0C1000009D4000000000000000000000000000000000000003500000000spacewalk-backend/server/action_extra_data/script.py  #
# Copyright (c) 2008--2016 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#
#

import base64

from spacewalk.common.rhnLog import log_debug
from spacewalk.server import rhnSQL

# the "exposed" functions
__rhnexport__ = ['run']

_query_clear_output = rhnSQL.Statement("""
delete from rhnServerActionScriptResult
 where server_id = :server_id
   and action_script_id = (
     select id from rhnActionScript where action_id = :action_id
   )
""")

_query_initial_store = rhnSQL.Statement("""
insert into rhnServerActionScriptResult (
    server_id,
    action_script_id,
    output,
    start_date,
    stop_date,
    return_code
  )
values (
       :server_id,
       (select ascript.id
          from rhnActionScript ascript
         where ascript.action_id = :action_id),
       :output,
       TO_TIMESTAMP(:process_start, 'YYYY-MM-DD HH24:MI:SS'),
       TO_TIMESTAMP(:process_end, 'YYYY-MM-DD HH24:MI:SS'),
       :return_code)
""")


def run(server_id, action_id, data={}):
    log_debug(3)

    # clear any previously received output
    h = rhnSQL.prepare(_query_clear_output)
    h.execute(server_id=server_id, action_id=action_id)

    if not data:
        log_debug(4, "No data sent by client")
        return

    output = data.get('output')

    # newer clients should always be setting
    # this flag and encoding the results,
    # otherwise xmlrpc isn't very happy on certain characters
    if 'base64enc' in data:
        output = base64.decodestring(output.encode()).decode()

    return_code = data.get('return_code')
    process_end = data.get('process_end')
    process_start = data.get('process_start')

    log_debug(4, "script output", output)

    h = rhnSQL.prepare(_query_initial_store, blob_map={'output': 'output'})
    h.execute(server_id=server_id,
              action_id=action_id,
              process_start=process_start,
              process_end=process_end,
              return_code=return_code,
              output=output
              )
0707010000014D000081B40000000000000000000000016290A0C1000004B1000000000000000000000000000000000000003D00000000spacewalk-backend/server/action_extra_data/up2date_config.py  #
# Copyright (c) 2008--2015 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#
# errata-related error handling functions
#

from spacewalk.common.rhnLog import log_debug

# the "exposed" functions
__rhnexport__ = ['get', 'update', ]


def get(server_id, action_id, data={}):
    if not data:
        return
    log_debug(2, "action_error.up2date_config.get: Should do something "
              "useful with this data", server_id, action_id, data)


def update(server_id, action_id, data={}):
    if not data:
        return
    log_debug(2, "action_error.up2date_config.update: Should do something "
              "useful with this data", server_id, action_id, data)
   0707010000014E000081B40000000000000000000000016290A0C10000079F000000000000000000000000000000000000003300000000spacewalk-backend/server/action_extra_data/virt.py    #
# Copyright (c) 2008--2015 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#

from spacewalk.common import rhnFlags
from spacewalk.common.rhnLog import log_debug


__rhnexport__ = ['schedulePoller',
                 'reboot',
                 'resume',
                 'start',
                 'suspend',
                 'shutdown',
                 'destroy',
                 'setMemory',
                 'setVCPUs'
                 ]


def _do_nothing(server_id, action_id):
    log_debug(4, action_id)
    action_status = rhnFlags.get('action_status')
    log_debug(4, "Action ID: %s, Action Status: %s" % (str(action_id), str(action_status)))


def schedulePoller(server_id, action_id, data={}):
    _do_nothing(server_id, action_id)


def reboot(server_id, action_id, data={}):
    _do_nothing(server_id, action_id)


def resume(server_id, action_id, data={}):
    _do_nothing(server_id, action_id)


def start(server_id, action_id, data={}):
    _do_nothing(server_id, action_id)


def suspend(server_id, action_id, data={}):
    _do_nothing(server_id, action_id)


def shutdown(server_id, action_id, data={}):
    _do_nothing(server_id, action_id)


def destroy(server_id, action_id, data={}):
    _do_nothing(server_id, action_id)


def setMemory(server_id, action_id, data={}):
    _do_nothing(server_id, action_id)


def setVCPUs(server_id, action_id, data={}):
    _do_nothing(server_id, action_id)
 0707010000014F000081B40000000000000000000000016290A0C100002009000000000000000000000000000000000000002700000000spacewalk-backend/server/apacheAuth.py    #
# Copyright (c) 2008--2016 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#
#

import time
import re

from spacewalk.common import rhnFlags
from spacewalk.common.rhnLog import log_debug, log_error
from spacewalk.common.rhnConfig import CFG
from spacewalk.common.rhnException import rhnFault
from spacewalk.common.rhnTranslate import _

from .rhnLib import computeSignature


def splitProxyAuthToken(token):
    """ given a token:hostname, split it into a token-list, hostname """

    token = token.split(':')
    hostname = ''
    if len(token) > 5:
        hostname = token[-1]
        token = token[:-1]
    else:
        # Spacewalk Proxy v1.1 (route tracking unsupported)
        hostname = None
    return token, hostname


def _verifyProxyAuthToken(auth_token):
    """ verifies the validity of a proxy auth token

        NOTE: X-RHN-Proxy-Auth described in proxy/broker/rhnProxyAuth.py
    """

    log_debug(4, auth_token)
    token, hostname = splitProxyAuthToken(auth_token)
    hostname = hostname.strip()
    ipv4_regex = '^([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\.([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\.([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\.([01]?\\d\\d?|2[0-4]\\d|25[0-5])$'
    # This ipv6 regex was develeoped by Stephen Ryan at Dataware.
    # (http://forums.intermapper.com/viewtopic.php?t=452) It is licenced
    # under a Creative Commons Attribution-ShareAlike 3.0 Unported
    # License, so we are free to use it as long as we attribute it to him.
    ipv6_regex = '^((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))(%.+)?$'
    hostname_is_ip_address = re.match(ipv4_regex, hostname) or re.match(ipv6_regex, hostname)

    headers = rhnFlags.get('outputTransportOptions')
    if len(token) < 5:
        # Bad auth information; decline any action
        log_debug(4, "incomplete proxy authentication token: %s"
                  % auth_token)
        headers['X-RHN-Proxy-Auth-Error'] = '%s:%s' % (
            1003, _("incomplete proxy authentication token: %s") % auth_token)
        if not hostname_is_ip_address:
            headers['X-RHN-Proxy-Auth-Origin'] = hostname
        raise rhnFault(1003)  # Invalid session key

    log_debug(5, "proxy auth token: %s,  hostname: %s"
                 % (repr(token), hostname or 'n/a'))

    proxyId, proxyUser, rhnServerTime, expireOffset, signature = token[:5]
    computed = computeSignature(CFG.SECRET_KEY, proxyId, proxyUser,
                                rhnServerTime, expireOffset)

    if computed != signature:
        log_error("Proxy signature failed: proxy id='%s', proxy user='%s'" %
                  (proxyId, proxyUser))
        log_debug(4, "Sent proxy signature %s does not match ours %s." % (
            signature, computed))
        headers['X-RHN-Proxy-Auth-Error'] = '%s:%s' % (
            1003, _("Sent proxy signature %s does not match ours %s.") % (
                signature, computed))
        if not hostname_is_ip_address:
            headers['X-RHN-Proxy-Auth-Origin'] = hostname
        raise rhnFault(1003)  # Invalid session key

    # Convert the expiration/time to floats:
    rhnServerTime = float(rhnServerTime)
    expireOffset = float(expireOffset)

    if rhnServerTime + expireOffset < time.time():
        log_debug(4, "Expired proxy authentication token")
        headers['X-RHN-Proxy-Auth-Error'] = '%s:%s' % (1004, "Expired")
        if not hostname_is_ip_address:
            headers['X-RHN-Proxy-Auth-Origin'] = hostname
        raise rhnFault(1004)  # Expired client authentication token

    log_debug(4, "Proxy auth OK: sigs match; not an expired token")
    return 1


def auth_proxy():
    """ Authenticates a proxy carrying a clients request. For a valid or
        unsigned request, this function returns 1 (OK), otherwise it raises
        rhnFault

        NOTE: X-RHN-Proxy-Auth described in proxy/broker/rhnProxyAuth.py
    """

    log_debug(3)
    headers = rhnFlags.get('outputTransportOptions')
    if not rhnFlags.test('X-RHN-Proxy-Auth'):
        # No auth information; decline any action
        log_debug(4, "declined proxy authentication")
        headers['X-RHN-Proxy-Auth-Error'] = '%s:%s' % (
            1003, _("declined proxy authentication"))
        raise rhnFault(1003)  # Invalid session key

    # NOTE:
    #   - < v3.1 RHN proxies send only 1 token in this header
    #   - > v3.1: we send the route of the requests via multiple tokens
    #     "token1:hostname1,token2:hostname2" the first tuple is the first
    #     proxy hit.

    tokens = rhnFlags.get('X-RHN-Proxy-Auth').split(',')
    tokens = [token for token in tokens if token]

    for auth_token in tokens:
        _verifyProxyAuthToken(auth_token)

    # if no rhnFault was raised then the tokens all passed
    return 1


def auth_client():
    """ Authenticates a request from a client
        For an unsigned request, this function returns 0 (request should be
        coming from a client).
    """

    log_debug(3)
    if not rhnFlags.test("AUTH_SESSION_TOKEN"):
        # No auth information; decline any GET action (XMLRPC requests
        # ignore this error).
        log_debug(4, "declined client authentication for GET requests")
        return 0

    token = dict((k.lower(),v) for k,v in list(rhnFlags.get("AUTH_SESSION_TOKEN").items()))
    # Check to see if everything we need to compute the signature is there
    for k in ('x-rhn-server-id',
              'x-rhn-auth-user-id',
              'x-rhn-auth',
              'x-rhn-auth-server-time',
              'x-rhn-auth-expire-offset'):
        if k not in token:
            # No auth information; decline any action
            log_debug(4, "Declined auth of client for GET requests; "
                         "incomplete header info.")
            return 0

    clientId = token['x-rhn-server-id']
    username = token['x-rhn-auth-user-id']
    signature = token['x-rhn-auth']
    rhnServerTime = token['x-rhn-auth-server-time']
    expireOffset = token['x-rhn-auth-expire-offset']


    computed = computeSignature(CFG.SECRET_KEY, clientId, username,
                                rhnServerTime, expireOffset)
    if computed != signature:
        log_debug(4, "Sent client signature %s does not match ours %s." % (
            signature, computed))
        raise rhnFault(33, "Invalid client session key")

    # Convert the expiration/time to floats:
    rhnServerTime = float(rhnServerTime)
    expireOffset = float(expireOffset)

    if rhnServerTime + expireOffset < time.time():
        log_debug(4, "Expired client authentication token")
        raise rhnFault(34, "Expired client authentication token")

    log_debug(4, "Client auth OK")
    return 1
   07070100000150000081B40000000000000000000000016290A0C100001F87000000000000000000000000000000000000002A00000000spacewalk-backend/server/apacheHandler.py #
# Copyright (c) 2008--2016 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#

import sys
import os
import time

from spacewalk.common import apache, rhnApache, rhnTB, rhnFlags
from spacewalk.common.rhnException import rhnException, rhnFault
from spacewalk.common.rhnConfig import CFG, initCFG
from spacewalk.common.rhnLog import log_debug, log_error, initLOG, log_setreq

# local module imports
from . import rhnSQL

from .apacheRequest import apacheGET, apachePOST, HandlerNotFoundError
from . import rhnCapability

# a lame timer function for pretty logs


def timer(last):
    if not last:
        return 0
    log_debug(2, "%.2f sec" % (time.time() - last,))
    return 0


class apacheSession(rhnApache):

    """ a class that extends rhnApache with several support functions used
     by the main handler class. This class deals with the processing of
     the request and setup for the real action handled in the
     apacheHandler class below. """
    _lang_catalog = "server"


class apacheHandler(apacheSession):

    """ main Apache XMLRPC point of entry for the server """

    def __init__(self):
        # First call the inherited constructor:
        apacheSession.__init__(self)
        self._req_processor = None

    ###
    # HANDLERS, in the order which they are called:
    # headerParserHandler, handler, and cleanupHandler.
    ###

    def headerParserHandler(self, req):

        log_setreq(req)
        # We need to init CFG and Logging
        options = req.get_options()
        # if we are initializing out of a <Location> handler don't
        # freak out
        if "RHNComponentType" not in options:
            # clearly nothing to do
            return apache.OK
        initCFG(options["RHNComponentType"])
        initLOG(CFG.LOG_FILE, CFG.DEBUG)

        """ parse the request, init database and figure out what can we call """
        log_debug(2, req.the_request)
        # call method from inherited class
        ret = apacheSession.headerParserHandler(self, req)
        if ret != apache.OK:
            return ret
        # make sure we have DB connection
        if not CFG.SEND_MESSAGE_TO_ALL:
            try:
                rhnSQL.initDB()
            except rhnSQL.SQLConnectError:
                rhnTB.Traceback(mail=1, req=req, severity="schema")
                return apache.HTTP_INTERNAL_SERVER_ERROR
        else:
            # If in outage mode, close the DB connections
            rhnSQL.closeDB()

        # Store client capabilities
        client_cap_header = 'X-RHN-Client-Capability'
        if client_cap_header in req.headers_in:
            client_caps = req.headers_in[client_cap_header]
            client_caps = [_f.strip() for _f in client_caps.split(',') if _f.strip()]
            rhnCapability.set_client_capabilities(client_caps)

        # Enabling the input header flags associated with the redirects/newer clients
        redirect_support_flags = ['X-RHN-Redirect', 'X-RHN-Transport-Capability']
        for flag in redirect_support_flags:
            if flag in req.headers_in:
                rhnFlags.set(flag, str(req.headers_in[flag]))

        return apache.OK

    def _init_request_processor(self, req):
        log_debug(3)
        # Override the parent class's behaviour
        # figure out what kind of request handler we need to instantiate
        if req.method == "POST":
            self._req_processor = apachePOST(self.clientVersion, req)
            return apache.OK
        if req.method == "GET":
            try:
                self._req_processor = apacheGET(self.clientVersion, req)
            except HandlerNotFoundError:
                e = sys.exc_info()[1]
                log_error("Unable to handle GET request for server %s" %
                          (e.args[0], ))
                return apache.HTTP_METHOD_NOT_ALLOWED
            token = self._setSessionToken(req.headers_in)
            if token is None:
                return apache.HTTP_METHOD_NOT_ALLOWED
            return apache.OK

        log_error("Method not allowed", req.method)
        return apache.HTTP_METHOD_NOT_ALLOWED

    def _cleanup_request_processor(self):
        """ Clean up the request processor """
        self._req_processor = None
        return apache.OK

    def handler(self, req):
        """ main Apache handler """
        log_debug(2)
        ret = apacheSession.handler(self, req)
        if ret != apache.OK:
            return ret

        if not CFG.SEND_MESSAGE_TO_ALL:
            # Need to get any string template overrides here, before any app
            # code gets executed, as the rhnFault error messages use the
            # templates
            # If send_message_to_all, we don't have DB connectivity though
            h = rhnSQL.prepare("select label, value from rhnTemplateString")
            h.execute()

            templateStrings = {}
            while 1:
                row = h.fetchone_dict()
                if not row:
                    break

                templateStrings[row['label']] = row['value']

            if templateStrings:
                rhnFlags.set('templateOverrides', templateStrings)

            log_debug(4, "template strings:  %s" % templateStrings)

        if not CFG.SECRET_KEY:
            # Secret key not defined, complain loudly
            try:
                raise rhnException("Secret key not found!")
            except:
                rhnTB.Traceback(mail=1, req=req, severity="schema")
                req.status = 500
                req.send_http_header()
                return apache.OK

        # Try to authenticate the proxy if it this request passed
        # through a proxy.
        if self.proxyVersion:
            try:
                ret = self._req_processor.auth_proxy()
            except rhnFault:
                f = sys.exc_info()[1]
                return self._req_processor.response(f.getxml())

        # Decide what to do with the request: try to authenticate the client.
        # NOTE: only upon GET requests is there Signature information to
        #       authenticate. XMLRPC requests DO NOT use signature
        #       authentication.
        if req.method == "GET":
            try:
                ret = self._req_processor.auth_client()
            except rhnFault:
                f = sys.exc_info()[1]
                return self._req_processor.response(f.getxml())
            # be safe rather than sorry
            if not ret:
                log_error("Got a GET call, but auth_client declined",
                          req.path_info)
                return apache.HTTP_METHOD_NOT_ALLOWED

        # Avoid leaving Oracle deadlocks
        try:
            ret = self._req_processor.process()
            rhnSQL.rollback()
        except Exception as exc:
            if not CFG.SEND_MESSAGE_TO_ALL:
                rhnSQL.rollback()
            raise
        log_debug(4, "Leave with return value", ret)
        return ret

    def cleanupHandler(self, req):
        """ Clean up stuff before we close down the session when we are called
        from apacheServer.Cleanup() """
        log_debug(2)
        # kill all of our child processes (if any)
        while 1:
            pid = status = -1
            try:
                (pid, status) = os.waitpid(-1, 0)
            except OSError:
                break
            else:
                log_error("Reaped child process %d with status %d" % (
                          pid, status))
        ret = apacheSession.cleanupHandler(self, req)
        return ret
 07070100000151000081B40000000000000000000000016290A0C10000672F000000000000000000000000000000000000002A00000000spacewalk-backend/server/apacheRequest.py #
# Copyright (c) 2008--2016 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#
# This module implements requests handlers for GET and POST methods.
#

# system modules
import os
import sys
import base64
try:
    #  python 2
    import xmlrpclib
except ImportError:
    #  python3
    import xmlrpc.client as xmlrpclib
from rhn.rpclib import transports

# common modules
from uyuni.common.usix import raise_with_tb
from spacewalk.common import apache, rhnFlags
from spacewalk.common.rhnConfig import CFG
from spacewalk.common import byterange
from spacewalk.common.rhnLog import log_debug, log_error
from spacewalk.common.rhnException import rhnFault, rhnNotFound,\
    redirectException  # to catch redirect exception
from spacewalk.common.rhnTranslate import _
from uyuni.common.rhnLib import setHeaderValue
from spacewalk.common.rhnTB import Traceback

# local modules
from . import rhnRepository
from . import rhnImport
from . import rhnSQL
from . import rhnCapability
from . import apacheAuth

# Exceptions


class UnknownXML(Exception):

    def __init__(self, value):
        Exception.__init__(self)
        self.__value = value

    def __repr__(self):
        return _("Invalid request received (%s).") % self.__value
    __str__ = __repr__


class HandlerNotFoundError(Exception):
    pass

# base class for requests


class apacheRequest:

    def __init__(self, client_version, req):
        self.client = client_version
        self.req = req
        # grab an Input object
        self.input = transports.Input(req.headers_in)
        # make sure we have a parser and a decoder available
        self.parser, self.decoder = xmlrpclib.getparser()
        # Make sure the decoder doesn't assume UTF-8 data, that would break if
        # non-UTF-8 chars are sent (bug 139370)
        self.decoder._encoding = None

        # extract the server we're talking to and the root directory
        # from the request configuration options
        req_config = req.get_options()
        # XXX: attempt to catch these KeyErrors sometime when there is
        # time to play nicely
        self.server = req_config["SERVER"]
        # Load the server classes
        # XXX: some day we're going to trust the timestamp stuff...
        self.servers = None
        self._setup_servers()

    def _setup_servers(self):
        self.servers = rhnImport.load("server/handlers",
                                      interface_signature='rpcClasses')

    # return a reference to a method name. The method in the base
    def method_ref(self, method):
        raise UnknownXML("Could not find reference definition"
                         "for method '%s'" % method)

    # call a function with parameters
    def call_function(self, method, params):
        # short-circuit everything if sending a system-wide message.
        if CFG.SEND_MESSAGE_TO_ALL:
            # Make sure the applet doesn't see the message
            if method == 'applet.poll_status':
                return self.response({
                    'checkin_interval': 3600,
                    'server_status': 'normal'
                })
            if method == 'applet.poll_packages':
                return self.response({'use_cached_copy': 1})

            # Fetch global message being sent to clients if applicable.
            msg = open(CFG.MESSAGE_TO_ALL).read()
            log_debug(3, "Sending message to all clients: %s" % msg)
            # Send the message as a fault.
            response = xmlrpclib.Fault(
                -1, _("IMPORTANT MESSAGE FOLLOWS:\n%s") % msg)
            # and now send everything back
            ret = self.response(response)
            log_debug(4, "Leave with return value", ret)
            return ret

        # req: where the response is sent to
        log_debug(2, method)

        # Now we have the reference, call away
        force_rollback = 1
        func = None
        try:
            # now get the function reference and call it
            func = self.method_ref(method)
            response = func(*params)
        except (TypeError, ValueError, KeyError, IndexError, UnknownXML):
            # report exception back to server
            fault = 1

            if sys.version_info[0] == 3:
                exctype = sys.exc_info()[0]
            else:
                exctype = sys.exc_info()[0]

            if exctype == UnknownXML:
                fault = -1
            e_type, e_value = sys.exc_info()[:2]
            response = xmlrpclib.Fault(fault, _(
                "While running '%s': caught\n%s : %s\n") % (
                method, e_type, e_value))
            Traceback(method, self.req,
                      extra="Response sent back to the caller:\n%s\n" % (
                          response.faultString,),
                      severity="notification")
        except rhnNotFound:
            e = sys.exc_info()[1]
            return apache.HTTP_NOT_FOUND
        # pkilambi:catch exception if redirect
        except redirectException:
            re = sys.exc_info()[1]
            log_debug(3, "redirect exception caught", re.path)
            response = re.path

        except rhnFault:
            f = sys.exc_info()[1]
            response = f.getxml()
        except rhnSQL.SQLSchemaError:
            e = sys.exc_info()[1]
            f = None
            if e.errno == 20200:
                log_debug(2, "User Group Membership EXCEEDED")
                f = rhnFault(43, e.errmsg)
            if not f:
                log_error("rhnSQL.SQLSchemaError caught", e)
                rhnSQL.rollback()
                # generate the traceback report
                Traceback(method, self.req,
                          extra="SQL Error generated: %s" % e,
                          severity="schema")
                return apache.HTTP_INTERNAL_SERVER_ERROR
            response = f.getxml()
        except rhnSQL.SQLError:
            e = sys.exc_info()[1]
            log_error("rhnSQL.SQLError caught", e)
            rhnSQL.rollback()
            Traceback(method, self.req,
                      extra="SQL Error generated: %s" % e,
                      severity="schema")
            return apache.HTTP_INTERNAL_SERVER_ERROR
        except Exception:
            e = sys.exc_info()[1]
            log_error("Unhandled exception", e)
            rhnSQL.rollback()
            # otherwise we do a full stop
            Traceback(method, self.req, severity="unhandled")
            return apache.HTTP_INTERNAL_SERVER_ERROR
        else:
            # if no exception, we don't need to rollback
            force_rollback = 0
        if force_rollback:
            rhnSQL.rollback()

        # and now send everything back
        ret = self.response(response)

        log_debug(4, "Leave with return value", ret)
        return ret

    # process the request
    def process(self):
        # this is just a stub we'd better override
        return apache.HTTP_NOT_IMPLEMENTED

    # convert a response to the right type for passing back to
    # rpclib.xmlrpclib.dumps
    def normalize(self, response):
        if isinstance(response, xmlrpclib.Fault):
            return response
        return (response,)

    # send a file out
    def response_file(self, response):
        log_debug(3, response.name)
        # We may set the content type remotely
        if rhnFlags.test("Content-Type"):
            self.req.content_type = rhnFlags.get("Content-Type")
        else:
            # Safe default
            self.req.content_type = "application/octet-stream"

        # find out the size of the file
        if response.length == 0:
            response.file_obj.seek(0, 2)
            file_size = response.file_obj.tell()
            response.file_obj.seek(0, 0)
        else:
            file_size = response.length

        success_response = apache.OK
        response_size = file_size

        # Respond to if-modified-since requests
        if ("If-Modified-Since" in self.req.headers_in and
                "Last-Modified" in rhnFlags.get("outputTransportOptions") and
                rhnFlags.get("outputTransportOptions")['Last-Modified'] == self.req.headers_in['If-Modified-Since']):
            return apache.HTTP_NOT_MODIFIED

        # Serve up the requested byte range
        if "Range" in self.req.headers_in:
            try:
                range_start, range_end = \
                    byterange.parse_byteranges(self.req.headers_in["Range"],
                                               file_size)
                response_size = range_end - range_start
                self.req.headers_out["Content-Range"] = \
                    byterange.get_content_range(range_start, range_end, file_size)
                self.req.headers_out["Accept-Ranges"] = "bytes"

                response.file_obj.seek(range_start)

                # We'll want to send back a partial content rather than ok
                # if this works
                self.req.status = apache.HTTP_PARTIAL_CONTENT
                success_response = apache.HTTP_PARTIAL_CONTENT

            # For now we will just return the file file on the following exceptions
            except byterange.InvalidByteRangeException:
                pass
            except byterange.UnsatisfyableByteRangeException:
                pass

        self.req.headers_out["Content-Length"] = str(response_size)

        # if we loaded this from a real fd, set it as the X-Replace-Content
        # check for "name" since sometimes we get xmlrpclib.transports.File's that have
        # a stringIO as the file_obj, and they dont have a .name (ie,
        # fileLists...)
        if response.name:
            self.req.headers_out["X-Package-FileName"] = response.name

        xrepcon = "X-Replace-Content-Active" in self.req.headers_in \
            and rhnFlags.test("Download-Accelerator-Path")
        if xrepcon:
            fpath = rhnFlags.get("Download-Accelerator-Path")
            log_debug(1, "Serving file %s" % fpath)
            self.req.headers_out["X-Replace-Content"] = fpath
            # Only set a byte rate if xrepcon is active
            byte_rate = rhnFlags.get("QOS-Max-Bandwidth")
            if byte_rate:
                self.req.headers_out["X-Replace-Content-Throttle"] = str(byte_rate)

        # send the headers
        self.req.send_http_header()

        if "Range" in self.req.headers_in:
            # and the file
            read = 0
            while read < response_size:
                # We check the size here in case we're not asked for the entire file.
                if (read + CFG.BUFFER_SIZE > response_size):
                    to_read = read + CFG.BUFFER_SIZE - response_size
                else:
                    to_read = CFG.BUFFER_SIZE
                buf = response.read(CFG.BUFFER_SIZE)
                if not buf:
                    break
                try:
                    self.req.write(buf)
                    read = read + CFG.BUFFER_SIZE
                except IOError:
                    if xrepcon:
                        # We're talking to a proxy, so don't bother to report
                        # a SIGPIPE
                        break
                    return apache.HTTP_BAD_REQUEST
            response.close()
        else:
            if 'wsgi.file_wrapper' in self.req.headers_in:
                self.req.output = self.req.headers_in['wsgi.file_wrapper'](response, CFG.BUFFER_SIZE)
            else:
                self.req.output = iter(lambda: response.read(CFG.BUFFER_SIZE), '')

        return success_response

    # send the response (common code)
    def response(self, response):
        # Send the xml-rpc response back
        log_debug(3, type(response))
        needs_xmlrpc_encoding = not rhnFlags.test("XMLRPC-Encoded-Response")
        compress_response = rhnFlags.test("compress_response")
        # Init an output object; we'll use it for sending data in various
        # formats
        if isinstance(response, transports.File):
            if not hasattr(response.file_obj, 'fileno') and compress_response:
                # This is a StringIO that has to be compressed, so read it in
                # memory; mark that we don't have to do any xmlrpc encoding
                response = response.file_obj.read()
                needs_xmlrpc_encoding = 0
            else:
                # Just treat is as a file
                return self.response_file(response)

        output = transports.Output()

        # First, use the same encoding/transfer that the client used
        output.set_transport_flags(
            transfer=transports.lookupTransfer(self.input.transfer),
            encoding=transports.lookupEncoding(self.input.encoding))

        if isinstance(response, xmlrpclib.Fault):
            log_debug(4, "Return FAULT",
                      response.faultCode, response.faultString)
            # No compression for faults because we'd like them to pop
            # up in clear text on the other side just in case
            output.set_transport_flags(output.TRANSFER_NONE, output.ENCODE_NONE)
        elif compress_response:
            # check if we have to compress this result
            log_debug(4, "Compression on for client version", self.client)
            if self.client > 0:
                output.set_transport_flags(output.TRANSFER_BINARY,
                                           output.ENCODE_ZLIB)
            else:  # original clients had the binary transport support broken
                output.set_transport_flags(output.TRANSFER_BASE64,
                                           output.ENCODE_ZLIB)

        # We simply add the transport options to the output headers
        output.headers.update(rhnFlags.get('outputTransportOptions').dict())

        if needs_xmlrpc_encoding:
            # Normalize the response
            response = self.normalize(response)
            try:
                response = xmlrpclib.dumps(response, methodresponse=1)
            except TypeError:
                e = sys.exc_info()[1]
                log_debug(4, "Error \"%s\" encoding response = %s" % (e, response))
                Traceback("apacheHandler.response", self.req,
                          extra="Error \"%s\" encoding response = %s" % (e, response),
                          severity="notification")
                return apache.HTTP_INTERNAL_SERVER_ERROR
            except Exception as exc:
                # Uncaught exception; signal the error
                Traceback("apacheHandler.response", self.req,
                          severity="unhandled")
                return apache.HTTP_INTERNAL_SERVER_ERROR

        # we're about done here, patch up the headers
        output.process(response)
        # Copy the rest of the fields
        for k, v in list(output.headers.items()):
            if k.lower() == 'content-type':
                # Content-type
                self.req.content_type = v
            else:
                setHeaderValue(self.req.headers_out, k, v)

        if 5 <= CFG.DEBUG < 10:
            log_debug(5, "The response: %s[...SNIP (for sanity) SNIP...]%s" % (response[:100], response[-100:]))
        elif CFG.DEBUG >= 10:
            # if you absolutely must have that whole response in the log file
            log_debug(10, "The response: %s" % response)

        # send the headers
        self.req.send_http_header()
        try:
            # XXX: in case data is really large maybe we should split
            # it in smaller chunks instead of blasting everything at
            # once. Not yet a problem...
            self.req.write(output.data)
        except IOError:
            # send_http_header is already sent, so it doesn't make a lot of
            # sense to return a non-200 error; but there is no better solution
            return apache.HTTP_BAD_REQUEST
        del output
        return apache.OK

    def auth_client(self):
        return apacheAuth.auth_client()

    def auth_proxy(self):
        return apacheAuth.auth_proxy()

# handles the POST requests


class apachePOST(apacheRequest):
    # Decode the request. Returns a tuple of (params, methodName).

    def decode(self, data):
        try:
            self.parser.feed(data)
        except IndexError:
            # malformed XML data
            raise_with_tb(xmlrpclib.ResponseError, sys.exc_info()[2])

        self.parser.close()
        # extract the method and arguments; we pass the exceptions through
        params = self.decoder.close()
        method = self.decoder.getmethodname()
        return params, method

    # get the function reference for the POST request
    def method_ref(self, method):
        # Execute the right function (from xml-rpc request) in the right class.
        # NOTE: All functions should do their own logging
        log_debug(3, self.server, method)
        if method[-8:] == '.__str__':
            # Ignore these, they are just some code trying to stringify an
            # XML-RPC function
            log_error("Ignoring call for method", method)
            raise rhnFault(-1, "Ignoring call for a __str__ method", explain=0)
        if self.server is None:
            raise UnknownXML("Method `%s' is not bound to a server "
                             "(server = %s)" % (method, self.server))
        classes = self.servers[self.server]
        if classes is None:
            raise UnknownXML("Server %s is not a valid XML-RPC receiver" %
                             (self.server,))

        try:
            classname, funcname = method.split('.', 1)
        except:
            raise_with_tb(UnknownXML("method '%s' doesn't have a class and function" %
                             (method,)), sys.exc_info()[2])
        if not classname or not funcname:
            raise UnknownXML(method)

        log_debug(4, "Class name: %s; function name: %s" % (classname,
                                                            funcname))
        c = classes.get(classname)
        if c is None:
            raise UnknownXML("class %s.%s is not defined (function = %s)" % (
                self.server, classname, funcname))

        # Initialize the handlers object
        serverHandlers = c()
        # we need this for sat handler
        serverHandlers.remote_hostname = self.req.get_remote_host(apache.REMOTE_DOUBLE_REV)
        f = serverHandlers.get_function(funcname)
        if f is None:
            raise UnknownXML("function: %s invalid" % (method,))
        # Send the client this server's capabilities
        rhnCapability.set_server_capabilities()
        return f

    # handle the POST requests
    def process(self):
        log_debug(3)
        # nice thing that req has a read() method, so it makes it look just
        # like an fd
        try:
            fd = self.input.decode(self.req)
        except IOError:  # client timed out
            log_error("IOError: client timed out?")
            return apache.HTTP_BAD_REQUEST

        # Read the data from the request
        # pylint: disable=E1103
        _body = fd.read()
        fd.close()

        # In this case, we talk to a client (maybe through a proxy)
        # make sure we have something to decode
        if _body is None or len(_body) == 0:
            log_error("Empty body in post request")
            return apache.HTTP_BAD_REQUEST

        # Decode the request; avoid logging crappy responses
        try:
            params, method = self.decode(_body)
        except xmlrpclib.ResponseError:
            log_error("Got bad XML-RPC blob of len = %d" % len(_body))
            return apache.HTTP_BAD_REQUEST
        else:
            if params is None:
                params = ()
        # make the actual function call and return the result
        return self.call_function(method, params)


class apacheGET:

    def __init__(self, client_version, req):
        # extract the server we're talking to and the root directory
        # from the request configuration options
        req_config = req.get_options()
        self.server = req_config["SERVER"]
        # XXX: some day we're going to trust the timestamp stuff...
        self.handler_classes = rhnImport.load("server/handlers",
                                              interface_signature='getHandler')
        log_debug(3, "Handler classes", self.handler_classes)

        self.handler = None
        if self.server not in self.handler_classes:
            raise HandlerNotFoundError(self.server)

        handler_class = self.handler_classes[self.server]
        if handler_class is None:
            # Was set just so that we make the logs quiet
            raise HandlerNotFoundError(self.server)
        log_debug(3, "Handler class", handler_class, type(handler_class))
        self.handler = handler_class(client_version, req)

    def __getattr__(self, name):
        return getattr(self.handler, name)


class GetHandler(apacheRequest):
    # we require our own init since we depend on a channel

    def __init__(self, client_version, req):
        apacheRequest.__init__(self, client_version, req)
        self.channel = None

    def _setup_servers(self):
        # Nothing to do here
        pass

    # get a function reference for the GET request
    def method_ref(self, method):
        log_debug(3, self.server, method)

        # Init the repository
        server_id = rhnFlags.get("AUTH_SESSION_TOKEN")['X-RHN-Server-Id']
        username = rhnFlags.get("AUTH_SESSION_TOKEN")['X-RHN-Auth-User-Id']
        repository = rhnRepository.Repository(self.channel, server_id,
                                              username)
        repository.set_qos()
        meth = method.replace('.', '_')
        f = repository.get_function(meth)
        if f is None:
            raise UnknownXML("function '%s' invalid; path_info is %s" % (
                method, self.req.path_info))
        return f

    # handle the GET requests
    def process(self):
        log_debug(3)
        # Query repository; only after a clients signature has been
        # authenticated.

        try:
            method, params = self._get_method_params()
        except rhnFault:
            f = sys.exc_info()[1]
            log_debug(2, "Fault caught")
            response = f.getxml()
            self.response(response)
            return apache.HTTP_NOT_FOUND
        except Exception as exc:
            e = sys.exc_info()[1]
            rhnSQL.rollback()
            # otherwise we do a full stop
            Traceback(method, self.req, severity="unhandled")
            return apache.HTTP_INTERNAL_SERVER_ERROR
        # make the actual function call and return the result
        return self.call_function(method, params)

    def _get_method_params(self):
        # Returns the method name and params for this call

        # Split the request into parts
        array = self.req.path_info.split('/')
        if len(array) < 4:
            log_error("Invalid URI for GET request", self.req.path_info)
            raise rhnFault(21, _("Invalid URI %s" % self.req.path_info))

        self.channel, method = (array[2], array[3])
        if method == "getPackage":
            params = tuple([os.path.join(*array[4:])])
        else:
            params = tuple(array[4:])
        return method, params

    # send the response out for the GET requests
    def response(self, response):
        log_debug(3)
        # pkilambi:if redirectException caught returns path(<str>)
        if isinstance(response, str):
            method, params = self._get_method_params()
            if method == "getPackage":
                return self.redirect(self.req, response)

        # GET requests resulting in a Fault receive special treatment
        # since we have to stick the error message in the HTTP header,
        # and to return an Apache error code

        if isinstance(response, xmlrpclib.Fault):
            log_debug(4, "Return FAULT",
                      response.faultCode, response.faultString)
            retcode = apache.HTTP_NOT_FOUND
            if abs(response.faultCode) in (33, 34, 35, 37, 39, 41):
                retcode = apache.HTTP_UNAUTHORIZED

            self.req.headers_out["X-RHN-Fault-Code"] = \
                str(response.faultCode)
            faultString = base64.encodestring(response.faultString.encode()).decode().strip()
            # Split the faultString into multiple lines
            for line in faultString.split('\n'):
                self.req.headers_out.add("X-RHN-Fault-String",
                                             line.strip())
            # And then send all the other things
            for k, v in list(rhnFlags.get('outputTransportOptions').items()):
                setHeaderValue(self.req.headers_out, k, v)
            return retcode
        # Otherwise we're pretty much fine with the standard response
        # handler

        # Copy the fields from the transport options, if necessary
        for k, v in list(rhnFlags.get('outputTransportOptions').items()):
            setHeaderValue(self.req.headers_out, k, v)
        # and jump into the base handler
        return apacheRequest.response(self, response)

    # pkilambi: redirect request back to client with edge network url
    def redirect(self, req, url, temporary=1):
        log_debug(3, "url input to redirect is ", url)
        if req.sent_bodyct:
            raise IOError("Cannot redirect after headers have already been sent.")

        # akamize the url with the new tokengen before sending the redirect response
        import tokengen.Generator
        arl = tokengen.Generator.generate_auth_url(url)
        req.headers_out["Location"] = arl
        log_debug(3, "Akamized url to redirect is ", arl)
        if temporary:
            req.status = apache.HTTP_MOVED_TEMPORARILY
        else:
            req.status = apache.HTTP_MOVED_PERMANENTLY
        return req.status
 07070100000152000081B40000000000000000000000016290A0C100000547000000000000000000000000000000000000002900000000spacewalk-backend/server/apacheServer.py  #
# Copyright (c) 2008--2015 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#

# global module imports
from spacewalk.common import apache

# common module imports
from spacewalk.common.rhnConfig import CFG, initCFG
from spacewalk.common.rhnTB import Traceback
from spacewalk.common.rhnLog import initLOG, log_setreq

from .apacheHandler import apacheHandler
apache_server = apacheHandler()
HeaderParserHandler = apache_server.headerParserHandler
Handler = apache_server.handler
CleanupHandler = apache_server.cleanupHandler
LogHandler = apache_server.logHandler


# Instantiate external entry points:
#HeaderParserHandler = HandlerWrap("headerParserHandler", init=1)
#Handler             = HandlerWrap("handler")
#CleanupHandler      = HandlerWrap("cleanupHandler")
#LogHandler          = HandlerWrap("logHandler")
 07070100000153000081B40000000000000000000000016290A0C100001695000000000000000000000000000000000000002F00000000spacewalk-backend/server/apacheUploadServer.py    #
# Copyright (c) 2008--2016 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#
#

import sys
from spacewalk.common import apache

from . import rhnSession

from spacewalk.common import rhnFlags
from spacewalk.common.rhnLog import log_debug, log_error, log_setreq, initLOG
from spacewalk.common.rhnConfig import CFG, initCFG
from spacewalk.common.rhnException import rhnFault
from spacewalk.common.rhnTB import Traceback
from spacewalk.server import rhnImport


class UploadHandler:

    def __init__(self):
        self.servers = {}
        self.server = None

    def headerParserHandler(self, req):
        log_setreq(req)
        # init configuration options with proper component
        options = req.get_options()
        # if we are initializing out of a <Location> handler don't
        # freak out
        if "RHNComponentType" not in options:
            # clearly nothing to do
            return apache.OK
        initCFG(options["RHNComponentType"])
        initLOG(CFG.LOG_FILE, CFG.DEBUG)
        if req.method == 'GET':
            # This is the ping method
            return apache.OK
        self.servers = rhnImport.load("upload_server/handlers",
                                      interface_signature='upload_class')
        if 'SERVER' not in options:
            log_error("SERVER not set in the apache config files!")
            return apache.HTTP_INTERNAL_SERVER_ERROR
        server_name = options['SERVER']
        if server_name not in self.servers:
            log_error("Unable to load server %s from available servers %s" %
                      (server_name, self.servers))
            return apache.HTTP_INTERNAL_SERVER_ERROR
        server_class = self.servers[server_name]
        self.server = server_class(req)
        return self._wrapper(req, "headerParserHandler")

    def handler(self, req):
        if req.method == 'GET':
            # This is the ping method
            log_debug(1, "GET method received, returning")
            req.headers_out['Content-Length'] = '0'
            # pkilambi:check for new version of rhnpush to differentiate
            # new sats from old satellites.
            req.headers_out['X-RHN-Check-Package-Exists'] = '1'
            req.send_http_header()
            return apache.OK
        return self._wrapper(req, "handler")

    def cleanupHandler(self, req):
        if req.method == 'GET':
            # This is the ping method
            return apache.OK
        retval = self._wrapper(req, "cleanupHandler")
        # Reset the logger to stderr
        initLOG()
        self.server = None
        return retval

    def logHandler(self, req):
        if req.method == 'GET':
            # This is the ping method
            return apache.OK
        retval = self._wrapper(req, "logHandler")
        return retval

    def _wrapper(self, req, function_name):
        #log_debug(1, "_wrapper", req, function_name)
        if not hasattr(self.server, function_name):
            log_error("%s doesn't have a %s function" %
                      (self.server, function_name))
            return apache.HTTP_NOT_FOUND
        function = getattr(self.server, function_name)
        try:
            log_debug(5, "Calling", function)
            ret = function(req)
        except rhnFault:
            e = sys.exc_info()[1]
            log_debug(4, "rhnFault caught: %s" % (e, ))
            error_string = self._exception_to_text(e)
            error_code = e.code
            self._error_to_headers(req.err_headers_out, error_code, error_string)
            ret = rhnFlags.get("apache-return-code")
            if not ret:
                ret = apache.HTTP_INTERNAL_SERVER_ERROR
            req.status = ret
            log_debug(4, "_wrapper %s exited with apache code %s" %
                      (function_name, ret))
        except rhnSession.ExpiredSessionError:
            e = sys.exc_info()[1]
            # if session expires we catch here and return a forbidden
            # abd make it re-authenticate
            log_debug(4, "Expire Session Error Caught: %s" % (e, ))
            return 403
        except:
            Traceback("server.apacheUploadServer._wrapper", req=req)
            log_error("Unhandled exception")
            return apache.HTTP_INTERNAL_SERVER_ERROR
        return ret

    # Adds an error code and error string to the headers passed in
    def _error_to_headers(self, headers, error_code, error_string):
        error_string = error_string.strip()
        import base64
        error_string = base64.encodestring(error_string.encode()).decode().strip()
        for line in error_string.split('\n'):
            headers.add(self.server.error_header_prefix + '-String', line.strip())
        headers[self.server.error_header_prefix + '-Code'] = str(error_code)

    def _exception_to_text(self, exception):
        return """\
Error Message:
    %s
Error Class Code: %s
Error Class Info: %s
""" % (exception.text.strip(), exception.code,
            exception.arrayText.rstrip())

# Instantiate external entry points:
apache_server = UploadHandler()

HeaderParserHandler = apache_server.headerParserHandler
Handler = apache_server.handler
CleanupHandler = apache_server.cleanupHandler
LogHandler = apache_server.logHandler
   07070100000154000081B40000000000000000000000016290A0C1000010AF000000000000000000000000000000000000002E00000000spacewalk-backend/server/basePackageUpload.py #
# Copyright (c) 2008--2016 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#

from rhn.UserDictCase import UserDictCase

from spacewalk.common import apache
from spacewalk.common.rhnLog import log_debug
from spacewalk.common.rhnException import rhnFault


class BasePackageUpload:

    def __init__(self, req):
        self.header_prefix = "X-RHN-Upload"
        self.error_header_prefix = 'X-RHN-Upload-Error'
        self.prefix = 'rhn/repository'
        self.is_source = 0
        self.rel_package_path = None
        self.package_path = None
        self.required_fields = [
            "Package-Name",
            "Package-Version",
            "Package-Release",
            "Package-Arch",
            "File-Checksum",
            "File-Checksum-Type",
        ]
        self.field_data = UserDictCase()
        self.org_id = None

    def headerParserHandler(self, req):
        """ This whole function is ugly as hell. The Auth field in the header used to be required, but now
            it must have either the Auth field or the Auth-Session field.
        """
        # Initialize the logging
        log_debug(3, "Method", req.method)

        # Header string. This is what the Auth-Session field will look like in the header.
        session_header = "%s-%s" % (self.header_prefix, "Auth-Session")

        # legacy rhnpush sends File-MD5sum; translate it into File-Checksum
        md5sum_header = "%s-%s" % (self.header_prefix, "File-MD5sum")
        if md5sum_header in req.headers_in:
            req.headers_in["%s-%s" % (self.header_prefix, "File-Checksum-Type")] = 'md5'
            req.headers_in["%s-%s" % (self.header_prefix, "File-Checksum")] = \
                req.headers_in[md5sum_header]

        for f in self.required_fields:
            hf = "%s-%s" % (self.header_prefix, f)
            if hf not in req.headers_in:
                # If the current field is Auth and Auth-Session field isn't present, something is wrong.
                if f == "Auth" and (session_header not in req.headers_in):
                    log_debug(4, "Required field %s missing" % f)
                    raise rhnFault(500, f)

                # The current field is Auth and the Auth-Session field is present, so everything is good.
                elif f == "Auth" and (session_header in req.headers_in):
                    self.field_data["Auth-Session"] = req.headers_in[session_header]
                    continue

                # The current field being looked for isn't the Auth field and it's missing, so something is wrong.
                else:
                    log_debug(4, "Required field %s missing" % f)
                    raise rhnFault(500, f)

            if not (f == "Auth" and (hf not in req.headers_in)):
                self.field_data[f] = req.headers_in[hf]
            else:
                if session_header in req.headers_in:
                    self.field_data[f] = req.headers_in[hf]

        self.package_name = self.field_data["Package-Name"]
        self.package_version = self.field_data["Package-Version"]
        self.package_release = self.field_data["Package-Release"]
        self.package_arch = self.field_data["Package-Arch"]
        self.file_checksum_type = self.field_data["File-Checksum-Type"]
        self.file_checksum = self.field_data["File-Checksum"]
        # 4/18/05 wregglej. if 1051 is in the header's keys, then it's a nosrc package.
        self.is_source = (self.package_arch == 'src' or self.package_arch == 'nosrc')
        return apache.OK

    def handler(self, req):
        log_debug(3, "Method", req.method)
        return apache.OK

    def cleanupHandler(self, req):
        return apache.OK

    def logHandler(self, req):
        return apache.OK
 07070100000155000081B40000000000000000000000016290A0C100004EC2000000000000000000000000000000000000002F00000000spacewalk-backend/server/configFilesHandler.py    #
# Copyright (c) 2008--2016 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#
#
# Config file handler (base class)
#

import base64
import os
try:
    #  python 2
    import xmlrpclib
except ImportError:
    #  python3
    import xmlrpc.client as xmlrpclib
import sys
import hashlib

from uyuni.common.usix import raise_with_tb
from spacewalk.common import rhnFlags
from spacewalk.common.rhnLog import log_debug
from spacewalk.common.rhnConfig import CFG
from uyuni.common.checksum import getStringChecksum
from spacewalk.common.rhnException import rhnFault, rhnException

from spacewalk.server import rhnSQL, rhnUser, rhnCapability
from spacewalk.server.rhnHandler import rhnHandler

from spacewalk.server.config_common.templated_document import ServerTemplatedDocument, var_interp_prep


from . import rhnSession

# Exceptions


class BaseConfigFileError(Exception):

    def __init__(self, args):
        Exception.__init__(self, *args)


class ConfigFileError(BaseConfigFileError):

    def __init__(self, file, *args):
        BaseConfigFileError.__init__(self, args)
        self.file = file


class ConfigFileExistsError(ConfigFileError):
    pass


class ConfigFileVersionMismatchError(ConfigFileError):
    pass


class ConfigFileMissingDelimError(ConfigFileError):
    pass


class ConfigFileMissingInfoError(ConfigFileError):
    pass


class ConfigFileMissingContentError(ConfigFileError):
    pass


class ConfigFileTooLargeError(ConfigFileError):
    pass


class ConfigFileExceedsQuota(ConfigFileError):
    pass


class ConfigFilePathIncomplete(ConfigFileError):
    pass

# Base handler class


class ConfigFilesHandler(rhnHandler):

    def __init__(self):
        log_debug(3)
        rhnHandler.__init__(self)
        self.functions = {
            'rhn_login': 'login',
            'test_session': 'test_session',
            'max_upload_fsize': 'max_upload_file_size',
        }
        self.org_id = None

    # Returns a reference to a callable method
    def get_function(self, function):
        if function not in self.functions:
            return None

        # Turn compression on by default
        rhnFlags.set('compress_response', 1)
        return getattr(self, self.functions[function])

    # returns max filesize that will be uploaded
    def max_upload_file_size(self):
        return self._get_maximum_file_size()

    # Generic login function
    def login(self, dict):
        log_debug(1)
        username = dict.get('username')
        password = dict.get('password')
        self.user = rhnUser.search(username)
        if not self.user or not (self.user.check_password(password)):
            raise rhnFault(2)
        if rhnUser.is_user_disabled(username):
            msg = _("""
                   %s Account has been deactivated on this server.
                   Please contact your Org administrator for more help.""")
            raise rhnFault(1, msg % username, explain=0)

        # Good to go
        session = self.user.create_session()
        return session.get_session()

    def test_session(self, dict):
        log_debug(3)

        try:
            self._validate_session(dict.get('session'))
        except (rhnSession.InvalidSessionError, rhnSession.ExpiredSessionError):
            return 0

        return 1

    # Helper functions
    def _get_delimiters(self):
        return {
            'delim_start': CFG.config_delim_start,
            'delim_end': CFG.config_delim_end,
        }

    def _validate_session(self, session):
        # session_reload will toss an exception if the session
        # token is invalid... I guess we're letting it percolate
        # up...
        # --bretm
        self.user = rhnUser.session_reload(session)
        self.org_id = self.user.contact['org_id']
        self._check_user_role()

    def _check_user_role(self):
        pass

    def _is_file(self, file):
        return str(file['config_file_type_id']) == '1'

    def _is_link(self, file):
        return str(file['config_file_type_id']) == '3'

    _query_current_selinux_lookup = rhnSQL.Statement("""
       select ci.selinux_ctx from rhnConfigInfo ci, rhnConfigRevision cr, rhnConfigFile cf
       where ci.id = cr.config_info_id
         and cf.id = cr.config_file_id
         and cf.config_file_name_id = lookup_config_filename(:path)
         and cr.revision = (
           select max(mcr.revision) from rhnConfigRevision mcr, rhnConfigFile mcf
           where mcf.id = mcr.config_file_id
             and mcf.config_file_name_id = cf.config_file_name_id
      )
    """)

    def _push_file(self, config_channel_id, file):
        if not file:
            # Nothing to do
            return {}

        # Check for full path on the file
        path = file.get('path')
        if not (path[0] == os.sep):
            raise ConfigFilePathIncomplete(file)

        if 'config_file_type_id' not in file:
            log_debug(4, "Client does not support config directories, so set file_type_id to 1")
            file['config_file_type_id'] = '1'
        # Check if delimiters are present
        if self._is_file(file) and \
           not (file.get('delim_start') and file.get('delim_end')):
            # Need delimiters
            raise ConfigFileMissingDelimError(file)

        if not (file.get('user') and file.get('group') and
                file.get('mode') is not None) and not self._is_link(file):
            raise ConfigFileMissingInfoError(file)

        # Oracle doesn't like certain binding variables
        file['username'] = file.get('user', '')
        file['groupname'] = file.get('group', '')
        file['file_mode'] = str(file.get('mode', ''))
        # if the selinux flag is not sent by the client it is set to the last file
        # revision (or to None (i.e. NULL) in case of first revision) - see the bug
        # 644985 - SELinux context cleared from RHEL4 rhncfg-client
        file['selinux_ctx'] = file.get('selinux_ctx', None)
        if not file['selinux_ctx']:
            # RHEL4 or RHEL5+ with disabled selinux - set from the last revision
            h = rhnSQL.prepare(self._query_current_selinux_lookup)
            h.execute(**file)
            row = h.fetchone_dict()
            if row:
                file['selinux_ctx'] = row['selinux_ctx']
            else:
                file['selinux_ctx'] = None
        result = {}

        try:

            if self._is_file(file):
                self._push_contents(file)
            elif self._is_link(file):
                file['symlink'] = file.get('symlink') or ''
        except ConfigFileTooLargeError:
            result['file_too_large'] = 1

        t = rhnSQL.Table('rhnConfigFileState', 'label')
        state_id_alive = t['alive']['id']

        file['state_id'] = state_id_alive
        file['config_channel_id'] = config_channel_id

        try:
            self._push_config_file(file)
            self._push_revision(file)
        except rhnSQL.SQLSchemaError:
            e = sys.exc_info()[1]
            log_debug(4, "schema error", e)
            rhnSQL.rollback()  # blow away the contents that got inserted
            if e.errno == 20267:
                # ORA-20267: (not_enough_quota) - Insufficient available quota
                # for the specified action
                raise ConfigFileExceedsQuota(file)
            raise

        return {}

    # A wrapper around _push_file, that also catches exceptions
    def push_file(self, config_channel_id, file):
        try:
            result = self._push_file(config_channel_id, file)
        except ConfigFilePathIncomplete:
            e = sys.exc_info()[1]
            raise_with_tb(rhnFault(4015, "Full path of file '%s' must be specified" % e.file.get('path'),
                          explain=0), sys.exc_info()[2])

        except ConfigFileExistsError:
            e = sys.exc_info()[1]
            raise_with_tb(rhnFault(4013, "File %s already uploaded" % e.file.get('path'),
                          explain=0), sys.exc_info()[2])
        except ConfigFileVersionMismatchError:
            e = sys.exc_info()[1]
            raise_with_tb(rhnFault(4012, "File %s uploaded with a different "
                           "version" % e.file.get('path'), explain=0), sys.exc_info()[2])
        except ConfigFileMissingDelimError:
            e = sys.exc_info()[1]
            raise_with_tb(rhnFault(4008, "Delimiter not specified for file %s" %
                           e.file.get('path'), explain=0), sys.exc_info()[2])
        except ConfigFileMissingContentError:
            e = sys.exc_info()[1]
            raise_with_tb(rhnFault(4007, "No content sent for file %s" %
                           e.file.get('path'), explain=0), sys.exc_info()[2])
        except ConfigFileExceedsQuota:
            e = sys.exc_info()[1]
            raise_with_tb(rhnFault(4014, "File size of %s exceeds free quota space" %
                           e.file.get('path'), explain=0), sys.exc_info()[2])
        except ConfigFileTooLargeError:
            e = sys.exc_info()[1]
            raise_with_tb(rhnFault(4003, "File size of %s larger than %s bytes" %
                                         (e.file.get('path'), self._get_maximum_file_size()),
                                   explain=0), sys.exc_info()[2])

        rhnSQL.commit()
        return result

    _query_content_lookup = rhnSQL.Statement("""
        select cc.id, cv.checksum_type, cv.checksum, file_size, contents, is_binary, delim_start, delim_end
          from rhnConfigContent cc, rhnChecksumView cv
         where cv.checksum = :checksum
           and cv.checksum_type = :checksum_type
           and file_size = :file_size
           and checksum_id = cv.id
    """)

    _query_insert_content = rhnSQL.Statement("""
        insert into rhnConfigContent
               (id, checksum_id, file_size, contents, is_binary, delim_start, delim_end)
        values (:config_content_id, lookup_checksum(:checksum_type, :checksum),
                :file_size, :contents, :is_binary, :delim_start, :delim_end)
    """)

    def _push_contents(self, file):

        checksum_type = 'sha256'  # FIXME: this should be configuration option

        file['file_size'] = 0
        file['is_binary'] = 'N'

        file_path = file.get('path')
        file_contents = file.get('file_contents') or ''

        if 'enc64' in file and file_contents:
            file_contents = base64.decodestring(file_contents.encode())

        if 'config_file_type_id' not in file:
            log_debug(4, "Client does not support config directories, so set file_type_id to 1")
            file['config_file_type_id'] = '1'

        file['checksum_type'] = checksum_type
        file['checksum'] = getStringChecksum(checksum_type, file_contents or '')

        if file_contents:
            file['file_size'] = len(file_contents)

            if file['file_size'] > self._get_maximum_file_size():
                raise ConfigFileTooLargeError(file_path, file['file_size'])

            # Is the content binary data?
            # XXX We may need a heuristic; this is what the web site does, and we
            # have to be consistent
            # XXX Yes this is iterating over a string
            try:
                file_contents.decode('UTF-8')
            except Exception:
                file['is_binary'] = 'Y'

        h = rhnSQL.prepare(self._query_content_lookup)
        h.execute(**file)
        row = h.fetchone_dict()

        if row:
            db_contents = rhnSQL._fix_encoding(rhnSQL.read_lob(row['contents']) or '')
            if file_contents == db_contents:
                # Same content
                file['config_content_id'] = row['id']
                log_debug(5, "same content")
                return

        # We have to insert a new file now
        content_seq = rhnSQL.Sequence('rhn_confcontent_id_seq')
        config_content_id = content_seq.next()
        file['config_content_id'] = config_content_id
        file['contents'] = file_contents

        h = rhnSQL.prepare(self._query_insert_content,
                           blob_map={'contents': 'contents'})
        h.execute(**file)

    _query_lookup_symlink_config_info = rhnSQL.Statement("""
        select lookup_config_info(null, null, null, :selinux_ctx, lookup_config_filename(:symlink)) id
          from dual
    """)

    _query_lookup_non_symlink_config_info = rhnSQL.Statement("""
        select lookup_config_info(:username, :groupname, :file_mode, :selinux_ctx, null) id
          from dual
    """)

    _query_lookup_config_file = rhnSQL.Statement("""
        select id
          from rhnConfigFile
         where config_channel_id = :config_channel_id
           and config_file_name_id = lookup_config_filename(:path)
    """)

    def _push_config_file(self, file):
        config_info_query = self._query_lookup_non_symlink_config_info
        if self._is_link(file) and file.get("symlink"):
            config_info_query = self._query_lookup_symlink_config_info

        # Look up the config info first
        h = rhnSQL.prepare(config_info_query)
        h.execute(**file)
        row = h.fetchone_dict()
        if not row:
            # Hmm
            raise rhnException("This query should always return a row")
        config_info_id = row['id']
        file['config_info_id'] = config_info_id

        # Look up the config file itself
        h = rhnSQL.prepare(self._query_lookup_config_file)
        h.execute(**file)
        row = h.fetchone_dict()
        if row:
            # Yay we already have this file
            # Later down the road, we're going to update modified for this
            # table
            file['config_file_id'] = row['id']
            return

        # Have to insert this config file, gotta use the api to keep quotas up2date...
        insert_call = rhnSQL.Function("rhn_config.insert_file",
                                      rhnSQL.types.NUMBER())
        file['config_file_id'] = insert_call(file['config_channel_id'], file['path'])

    _query_lookup_revision = rhnSQL.Statement("""
        select id, revision, config_content_id, config_info_id,
               config_file_type_id
          from rhnConfigRevision
         where config_file_id = :config_file_id
         order by revision desc
    """)

    def _push_revision(self, file):
        # Assume we don't have any revision for now
        file['revision'] = 1
        h = rhnSQL.prepare(self._query_lookup_revision)
        h.execute(**file)
        row = h.fetchone_dict()
        if row:
            # Is it the same revision as this one?

            fields = ['config_content_id', 'config_info_id', 'config_file_type_id']

            if 'config_file_type_id' not in file:
                log_debug(4, "Client does not support config directories, so set file_type_id to 1")
                file['config_file_type_id'] = '1'

            for f in fields:
                if file.get(f) != row.get(f):
                    break
            else:  # for
                # All fields are equal
                file['config_revision_id'] = row['id']
                self._update_revision(file)
                self._update_config_file(file)
                return

            # A revision already exists, but it's different. Just update the
            # revision number

            revision = row['revision'] + 1
            file['revision'] = revision

        # If we got here, we need a new revision
        self._insert_revision(file)

        if self.user and hasattr(self.user, 'getid'):
            self._add_author(file, self.user)
        self._update_config_file(file)

    _query_update_revision = rhnSQL.Statement("""
        update rhnConfigRevision
           set modified = current_timestamp
         where id = :config_revision_id
    """)

    def _update_revision(self, file):
        h = rhnSQL.prepare(self._query_update_revision)
        h.execute(**file)

    def _insert_revision(self, file):
        insert_call = rhnSQL.Function("rhn_config.insert_revision",
                                      rhnSQL.types.NUMBER())
        file['config_revision_id'] = insert_call(file['revision'],
                                                 file['config_file_id'],
                                                 file.get('config_content_id', None),
                                                 file['config_info_id'],
                                                 file['config_file_type_id'])

    _query_update_revision_add_author = rhnSQL.Statement("""
        update rhnConfigRevision
            set changed_by_id = :user_id
        where id = :rev_id
    """)

    def _add_author(self, file, author):
        h = rhnSQL.prepare(self._query_update_revision_add_author)
        h.execute(user_id=author.getid(), rev_id=file['config_revision_id'])

    _query_update_config_file = rhnSQL.Statement("""
        update rhnConfigFile
           set latest_config_revision_id = :config_revision_id,
               state_id = :state_id
         where config_channel_id = :config_channel_id
           and config_file_name_id = lookup_config_filename(:path)
    """)

    def _update_config_file(self, file):
        h = rhnSQL.prepare(self._query_update_config_file)
        h.execute(**file)

    def _format_file_results(self, row):
        server = None
        if self.server:
            server = var_interp_prep(self.server)

        return format_file_results(row, server=server)

    def _get_maximum_file_size(self):
        return CFG.maximum_config_file_size

    def new_config_channel_id(self):
        return rhnSQL.Sequence('rhn_confchan_id_seq').next()


def format_file_results(row, server=None):
    encoding = ''
    checksum = row['checksum'] or ''
    is_binary = row['is_binary'] == 'Y'
    raw_contents = rhnSQL.read_lob(row['file_contents'])
    if is_binary:
        contents = raw_contents
    else:
        contents = rhnSQL._fix_encoding(raw_contents or '')

    if server and not is_binary and contents:
        interpolator = ServerTemplatedDocument(
            server,
            start_delim=row['delim_start'],
            end_delim=row['delim_end']
        )
        contents = interpolator.interpolate(contents)
        if row['checksum_type']:
            checksummer = hashlib.new(row['checksum_type'])
            checksummer.update(contents.encode())
            checksum = checksummer.hexdigest()

    if contents:
        client_caps = rhnCapability.get_client_capabilities()
        if client_caps and 'configfiles.base64_enc' in client_caps:
            encoding = 'base64'
            if is_binary:
                contents = contents
            else:
                contents = contents.encode()
            contents = base64.encodestring(contents).decode()
    if row.get('modified', False):
        m_date = xmlrpclib.DateTime(str(row['modified']))
    else:
        m_date = ''

    return {
        'path': row['path'],
        'config_channel': row['config_channel'],
        'file_contents': contents,
        'symlink': row['symlink'] or '',
        'checksum_type': row['checksum_type'] or '',
        'checksum': checksum,
        'verify_contents': True,
        'delim_start': row['delim_start'] or '',
        'delim_end': row['delim_end'] or '',
        'revision': row['revision'] or '',
        'username': row['username'] or '',
        'groupname': row['groupname'] or '',
        'filemode': row['filemode'] or '',
        'encoding': encoding or '',
        'filetype': row['label'],
        'selinux_ctx': row['selinux_ctx'] or '',
        'modified': m_date,
        'is_binary': row['is_binary'] or '',
    }
  07070100000156000041FD0000000000000000000000016290A0C100000000000000000000000000000000000000000000002700000000spacewalk-backend/server/config_common    07070100000157000081B40000000000000000000000016290A0C1000000BB000000000000000000000000000000000000003000000000spacewalk-backend/server/config_common/Makefile   # Makefile for the config-common module
#

TOP	= ../..
SUBDIR	= server/config_common

SPACEWALK_FILES	= __init__ base_templated_document templated_document

include $(TOP)/Makefile.defs

 07070100000158000081B40000000000000000000000016290A0C100000273000000000000000000000000000000000000003300000000spacewalk-backend/server/config_common/__init__.py    #
# Copyright (c) 2008--2013 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#

__all__ = []
 07070100000159000081B40000000000000000000000016290A0C100001735000000000000000000000000000000000000004200000000spacewalk-backend/server/config_common/base_templated_document.py #
# Copyright (c) 2008--2016 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#
#
# Templating code for the configuration management project
#

import re
import sys

from spacewalk.common.rhnLog import log_error


class BaseTemplatedDocument:
    compiled_regexes = {}

    def __init__(self, start_delim=None, end_delim=None):
        self.start_delim = None
        self.end_delim = None
        self.set_delims(start_delim, end_delim)
        self.functions = {}
        # To be overridden in a child class
        self.set_functions()

    def set_functions(self):
        pass

    def set_delims(self, start_delim=None, end_delim=None):
        if '%' in (start_delim, end_delim):
            raise ValueError("Cannot use `%' as a delimiter")
        if self.start_delim is None and start_delim is None:
            start_delim = '{{'
        if self.start_delim is None or start_delim is not None:
            self.start_delim = start_delim
        # if start_delim is None and self.start_denim is set, don't overwrite

        if self.end_delim is None and end_delim is None:
            end_delim = '{{'
        if self.end_delim is None or end_delim is not None:
            self.end_delim = end_delim

        # delims might have special characters that are regexp-relevant,
        # need to escape those
        escaped_start_delim = re.escape(self.start_delim)
        escaped_end_delim = re.escape(self.end_delim)

        regex_key = (self.start_delim, self.end_delim)

        # At this point, self.start_delim and self.end_delim are non-null
        if regex_key in self.compiled_regexes:
            # We already have the regex compiled
            self.regex = self.compiled_regexes[regex_key]
            return

        # We have to convince .* to match as few repetitions as possible,
        # otherwise it's possible to match end_delims too; using .*? then
        self.regex = re.compile(escaped_start_delim + r"(.*?)" + escaped_end_delim)
        self.compiled_regexes[regex_key] = self.regex

        self.compiled_regexes[self.start_delim] = re.compile("(%s)" % escaped_start_delim)
        self.compiled_regexes[self.end_delim] = re.compile("(%s)" % escaped_end_delim)

    def repl_func(self, match_object):
        try:
            return self._repl_func(match_object)
        except ValueError:
            e = sys.exc_info()[1]
            log_error("cfg variable interpolation error", e)
            return match_object.group()

    def _repl_func(self, match_object):
        return ""

    def interpolate(self, data):
        return self.regex.sub(self.repl_func, data)


class TemplatedDocument(BaseTemplatedDocument):
    func_regex = re.compile("^(?P<fname>[^=]+)(=(?P<defval>.*))?$")
    funcname_regex = re.compile("^[A-Za-z][\w._]*$")

    def _repl_func(self, match_object):
        funcname = match_object.groups()[0]
        funcname = funcname.strip()
        fname, params, defval = self.parse_func_name(funcname)
        return self.call(fname, params, defval)

    def parse_func_name(self, fstr):
        mo = self.func_regex.match(fstr)
        if not mo:
            # XXX raise exceptions
            return (None, None, None)
        dict = mo.groupdict()
        fname = dict.get('fname')
        defval = dict.get('defval')

        fname = self.strip(fname)
        defval = self.unquote(defval)
        params = None

        if fname[-1] == ')':
            # Params are present
            i = fname.rfind('(')
            if i < 0:
                raise ValueError("Missing (")

            params = fname[i + 1:-1]
            fname = fname[:i].strip()

            # Parse the params
            params = list(map(self.unquote, [_f for _f in params.split(',') if _f]))

        # Validate the function name
        if not self.funcname_regex.match(fname):
            raise ValueError("Invalid function name %s" % fname)

        return fname, params, defval

    def null_call(self, fname, params, defval):
        val = fname
        if params:
            val = "%s(%s)" % (val, ', '.join(params))
        if defval is not None:
            val = "%s = %s" % (val, defval)
        return "%s %s %s" % (self.start_delim, val, self.end_delim)

    def lookup_function(self, fname):
        return self.functions.get(fname)

    def call(self, fname, params, defval):
        f = self.lookup_function(fname)
        if f is None:
            return str(self.fallback_call(fname, params, defval))
        if params is None:
            params = ()

        result = f(*params)

        if result is None:
            if defval:
                return defval
            return ''

        return str(result)

    # What to do when the function was not found?
    # To be overridden in subclasses
    def fallback_call(self, fname, params, defval):
        raise InvalidFunctionError(fname)

    def test(self):
        escaped = self.regex.sub(self.repl_func, 'abc @@ aa @@ def')
        print(escaped)

    def strip(self, s):
        if s is None:
            return None
        return s.strip()

    def unquote(self, s):
        if s is None:
            return None
        s = s.strip()
        if len(s) <= 1:
            # Nothing to unquote
            return s

        if s[0] == s[-1] and s[0] in ['"', "'"]:
            # Strip quotes
            return s[1:-1]

        return s


class InvalidFunctionError(Exception):
    pass
   0707010000015A000081B40000000000000000000000016290A0C100001AD5000000000000000000000000000000000000003D00000000spacewalk-backend/server/config_common/templated_document.py  #
# Copyright (c) 2008--2016 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#
#
#

from .base_templated_document import TemplatedDocument

from spacewalk.common.rhnLog import log_debug

from spacewalk.server.rhnServer.server_hardware import NetIfaceInformation

RHN_PREFIX = 'rhn.system.'


def var_interp_prep(server):
    # make sure we have the necessary data in the server obj
    server.reload_hardware_byid(server.getid())
    server.load_custom_info()
    return server


class ServerTemplatedDocument(TemplatedDocument):

    def __init__(self, server, start_delim=None, end_delim=None):
        TemplatedDocument.__init__(self, start_delim=start_delim, end_delim=end_delim)

        self.server = server

    def fallback_call(self, fname, params, defval):
        # Re-compose the macro if we don't know the function
        return self.null_call(fname, params, defval)

    def set_functions(self):
        self.functions.clear()
        self.functions.update({
            RHN_PREFIX + 'sid': self.sid,
            RHN_PREFIX + 'profile_name': self.profile_name,
            RHN_PREFIX + 'description': self.description,
            RHN_PREFIX + 'hostname': self.hostname,
            RHN_PREFIX + 'ip_address': self.ipaddr,
            RHN_PREFIX + 'ip6_address': self.ip6addr,
            RHN_PREFIX + 'custom_info': self.custom_info,
            RHN_PREFIX + 'net_interface.ip_address': self.net_intf_ipaddr,
            RHN_PREFIX + 'net_interface.netmask': self.net_intf_netmask,
            RHN_PREFIX + 'net_interface.broadcast': self.net_intf_broadcast,
            RHN_PREFIX + 'net_interface.hardware_address': self.net_intf_hwaddr,
            RHN_PREFIX + 'net_interface.driver_module': self.net_intf_module,
            RHN_PREFIX + 'net_interface.ip6_address': self.net_intf_ip6addr,
            RHN_PREFIX + 'net_interface.ip6_netmask': self.net_intf_ip6netmask,
        })

    #######################
    # HANDLER FUNCTIONS
    #
    # If any of these can't come up w/ a good value, they should return None
    # If None is returned, the default value will be used if provided
    # Otherwise, the empty string '' will be substituted
    def sid(self):
        return self.server.server['id']

    def profile_name(self):
        return self.server.server['name']

    def description(self):
        return self.server.server['description']

    def hostname(self):
        return self.server.server['hostname']

    def ipaddr(self):
        return self.server.addr['ipaddr']

    def ip6addr(self):
        return self.server.addr['ip6addr']

    def custom_info(self, key):
        if self.server.custom_info is None:
            log_debug(4, "no custom info", self.server)
            raise "didn't load custom info"

        if key in self.server.custom_info:
            return self.server.custom_info[key]

        return None

    def _interface_info(self, interface_name):
        infos = self.server.hardware_by_class(NetIfaceInformation)
        if infos:
            network_interfaces = infos[0].db_ifaces
        else:
            return None

        for iface in network_interfaces:
            if iface['name'] == interface_name:
                return iface
        return None

    def net_intf_ipaddr(self, interface_name):
        ipv4 = self._get_interface_info_attr(interface_name, 'ipv4')
        return self._get_interface_address_attr(ipv4, 'address')

    def net_intf_netmask(self, interface_name):
        ipv4 = self._get_interface_info_attr(interface_name, 'ipv4')
        return self._get_interface_address_attr(ipv4, 'netmask')

    def net_intf_broadcast(self, interface_name):
        ipv4 = self._get_interface_info_attr(interface_name, 'ipv4')
        return self._get_interface_address_attr(ipv4, 'broadcast')

    def net_intf_ip6addr(self, interface_name, scope='universe', order=0):
        """ get IPv6 address

        interface_name is name of interface, e.g. 'eth0'
        scope is either 'link', 'universe' or 'host'
        order is zero based index as there can be more than one IP address
             for given scope and interface
        """
        ipv6 = self._get_interface_info_attr(interface_name, 'ipv6')
        return self._get_interface_address6_attr(ipv6, scope, order, 'address')

    def net_intf_ip6netmask(self, interface_name, scope='universe', order=0):
        """ get IPv6 netmask

        interface_name is name of interface, e.g. 'eth0'
        scope is either 'link', 'universe' or 'host'
        order is zero based index as there can be more than one IP address
             for given scope and interface
        """
        ipv6 = self._get_interface_info_attr(interface_name, 'ipv6')
        return self._get_interface_address6_attr(ipv6, scope, order, 'netmask')

    def net_intf_hwaddr(self, interface_name):
        return self._get_interface_info_attr(interface_name, 'hw_addr')

    def net_intf_module(self, interface_name):
        return self._get_interface_info_attr(interface_name, 'module')

    def _get_interface_info_attr(self, interface_name, attr):
        iface = self._interface_info(interface_name)

        if not iface:
            return None

        return iface[attr]

    def _get_interface_address_attr(self, address, attr):
        if (address is None) or (len(address.db_ifaces) == 0) or (attr not in address.db_ifaces[0]):
            return None
        else:
            return address.db_ifaces[0][attr]

    def _get_interface_address6_attr(self, address, scope, order, attr):
        """ return attribute of given address

        address is list of interfaces
        e.g.: [{'scope': 'universe', 'netmask': '64', 'address': '2620:52:0:2223:20c:29ff:fecb:d06e',
        'interface_id': 127}, {'scope': 'link', 'netmask': '64', 'address':
        'fe80::20c:29ff:fecb:d06e', 'interface_id': 127}]
        scope is either 'link', 'universe' or 'host'
        order is zero based index as there can be more than one IP address
             for given scope and interface
        attr is attribute, e.g "netmask"
        """
        if (address is None):
            return None
        ifaces = [i for i in address.db_ifaces if (i['scope'] == scope)]
        if (order >= len(ifaces)) or (attr not in ifaces[order]):
            return None
        else:
            return ifaces[order][attr]
   0707010000015B000041FD0000000000000000000000016290A0C100000000000000000000000000000000000000000000002200000000spacewalk-backend/server/handlers 0707010000015C000081B40000000000000000000000016290A0C1000000E2000000000000000000000000000000000000002B00000000spacewalk-backend/server/handlers/Makefile    # Makefile for the xmlrpc handlers
#

TOP	= ../..
SUBDIR	= server/handlers

FILES	= __init__

SUBDIRS = \
		  app \
		  applet \
		  config \
		  config_mgmt \
                  sat \
		  xmlrpc

include $(TOP)/Makefile.defs

  0707010000015D000081B40000000000000000000000016290A0C1000002C0000000000000000000000000000000000000002E00000000spacewalk-backend/server/handlers/__init__.py #
# Copyright (c) 2008--2015 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#
# init module for the XML-RPC handlers. Bare.
#

# we stat all dirs anyway...
__all__ = []
0707010000015E000041FD0000000000000000000000016290A0C100000000000000000000000000000000000000000000002600000000spacewalk-backend/server/handlers/app 0707010000015F000081B40000000000000000000000016290A0C100000087000000000000000000000000000000000000002F00000000spacewalk-backend/server/handlers/app/Makefile    # Makefile for the app module
#

TOP	= ../../..
SUBDIR	= server/handlers/app

FILES	= __init__ packages

include $(TOP)/Makefile.defs

 07070100000160000081B40000000000000000000000016290A0C100000317000000000000000000000000000000000000003200000000spacewalk-backend/server/handlers/app/__init__.py #
# Copyright (c) 2008--2015 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#
# This file defines the classes available for the XMLRPC receiver
#

__all__ = []

from . import packages

rpcClasses = {
    "packages": packages.Packages,
}

getHandler = None
 07070100000161000081B40000000000000000000000016290A0C100005D39000000000000000000000000000000000000003200000000spacewalk-backend/server/handlers/app/packages.py #
# Copyright (c) 2008--2016 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#
#
# Package uploading functions.
# Package info checking routines.
#

import os
import sys
from uyuni.common.usix import TupleType, raise_with_tb

from spacewalk.common.rhnLog import log_debug, log_error
from spacewalk.common.rhnConfig import CFG
from spacewalk.common.rhnException import rhnFault
from spacewalk.common.RPC_Base import RPC_Base

from spacewalk.server import rhnSQL, rhnPackageUpload, rhnUser, rhnSession

from spacewalk.server.importlib.backendOracle import SQLBackend
from spacewalk.server.importlib.importLib import Collection, IncompatibleArchError,\
    Channel, IncompletePackage, InvalidChannelError
from spacewalk.server.importlib.packageImport import ChannelPackageSubscription

from spacewalk.server.importlib.packageUpload import uploadPackages, listChannels, listChannelsSource, listChannelsChecksum
from spacewalk.server.importlib.userAuth import UserAuth
from spacewalk.server.importlib.errataCache import schedule_errata_cache_update

# 12/22/05 wregglej 173287
# I made a decent number of changes to this file to implement session authentication.
# One of the requirements for this was to maintain backwards compatibility, so older
# versions of rhnpush can still talk to a newer satellite. This meant that I had to
# add new versions of each XMLRPC call that did authentication by sessions rather than
# username/password. I noticed that the only real difference between the two was the
# authentication scheme that the functions used, so rather than copy-n-paste a bunch of code,
# I separated the functionality from the authentication and just pass a authentication object
# to the function that actually does stuff.


class Packages(RPC_Base):

    def __init__(self):
        log_debug(3)
        RPC_Base.__init__(self)
        self.functions.append('uploadPackageInfo')
        self.functions.append('uploadPackageInfoBySession')
        self.functions.append('uploadSourcePackageInfo')
        self.functions.append('uploadSourcePackageInfoBySession')
        self.functions.append('listChannel')
        self.functions.append('listChannelBySession')
        self.functions.append('listChannelChecksum')
        self.functions.append('listChannelChecksumBySession')
        self.functions.append('listChannelSource')
        self.functions.append('listChannelSourceBySession')
        self.functions.append('listMissingSourcePackages')
        self.functions.append('listMissingSourcePackagesBySession')
        self.functions.append('channelPackageSubscription')
        self.functions.append('channelPackageSubscriptionBySession')
        self.functions.append('no_op')
        self.functions.append('test_login')
        self.functions.append('test_new_login')
        self.functions.append('test_check_session')
        self.functions.append('login')
        self.functions.append('check_session')
        self.functions.append('getPackageChecksum')
        self.functions.append('getPackageChecksumBySession')
        self.functions.append('getSourcePackageChecksum')
        self.functions.append('getSourcePackageChecksumBySession')
        # old MD5 compatibility functions
        self.functions.append('getPackageMD5sum')
        self.functions.append('getPackageMD5sumBySession')
        self.functions.append('getSourcePackageMD5sum')
        self.functions.append('getSourcePackageMD5sumBySession')

    def no_op(self):
        """ This is so the client can tell if the satellite supports session tokens or not.

            This was used in rhnpush-5.5.26 and older. When there will be no such version of rhnpush in wild,
            then this function can be safely removed."""
        return 1

    def uploadPackageInfo(self, username, password, info):
        """ Upload a collection of binary packages. """
        log_debug(5, username, info)
        authobj = auth(username, password)
        return self._uploadPackageInfo(authobj, info)

    def uploadPackageInfoBySession(self, session_string, info):
        log_debug(5, session_string)
        authobj = auth_session(session_string)
        return self._uploadPackageInfo(authobj, info)

    def _uploadPackageInfo(self, authobj, info):
        # Authorize the org id passed
        authobj.authzOrg(info)
        # Get the channels
        channels = info.get('channels')
        if channels:
            authobj.authzChannels(channels)
        force = 0
        if 'force' in info:
            force = info['force']
        return uploadPackages(info, force=force,
                              caller="server.app.uploadPackageInfo")

    def uploadSourcePackageInfo(self, username, password, info):
        """ Upload a collection of source packages. """
        log_debug(5, username, info)
        authobj = auth(username, password)
        return self._uploadSourcePackageInfo(authobj, info)

    def uploadSourcePackageInfoBySession(self, session_string, info):
        log_debug(5, session_string)
        authobj = auth_session(session_string)
        return self._uploadSourcePackageInfo(authobj, info)

    def _uploadSourcePackageInfo(self, authobj, info):
        # Authorize the org id passed
        authobj.authzOrg(info)
        force = 0
        if 'force' in info:
            force = info['force']
        return uploadPackages(info, source=1, force=force,
                              caller="server.app.uploadSourcePackageInfo")

    def listChannelSource(self, channelList, username, password):
        log_debug(5, channelList, username)
        authobj = auth(username, password)
        return self._listChannelSource(authobj, channelList)

    def listChannelSourceBySession(self, channelList, session_string):
        log_debug(5, channelList, session_string)
        authobj = auth_session(session_string)
        return self._listChannelSource(authobj, channelList)

    def _listChannelSource(self, authobj, channelList):
        authobj.authzChannels(channelList)
        ret = listChannelsSource(channelList)
        return ret

    def listChannel(self, channelList, username, password):
        """ List packages of a specified channel. """
        log_debug(5, channelList, username)
        authobj = auth(username, password)
        return self._listChannel(authobj, channelList)

    def listChannelBySession(self, channelList, session_string):
        log_debug(5, channelList, session_string)
        authobj = auth_session(session_string)
        return self._listChannel(authobj, channelList)

    def _listChannel(self, authobj, channelList):
        authobj.authzChannels(channelList)
        return listChannels(channelList)

    def listChannelChecksum(self, channelList, username, password):
        """ List packages of a specified channel. """
        log_debug(5, channelList, username)
        authobj = auth(username, password)
        return self._listChannelChecksum(authobj, channelList)

    def listChannelChecksumBySession(self, channelList, session_string):
        log_debug(5, channelList, session_string)
        authobj = auth_session(session_string)
        return self._listChannelChecksum(authobj, channelList)

    def _listChannelChecksum(self, authobj, channelList):
        authobj.authzChannels(channelList)
        return listChannelsChecksum(channelList)

    def login(self, username, password):
        """ This function that takes in the username
            and password and returns a session string if they are correct. It raises a
            rhnFault if the user/pass combo is not acceptable.
        """
        log_debug(5, username)
        user = rhnUser.search(username)
        if not user or not user.check_password(password):
            raise rhnFault(2)
        if rhnUser.is_user_disabled(username):
            msg = _("""
                   %s Account has been deactivated on this server.
                   Please contact your Org administrator for more help.""")
            raise rhnFault(1, msg % username, explain=0)
        if rhnUser.is_user_read_only(user.username):
            raise rhnFault(702)
        session = user.create_session()
        return session.get_session()

    def check_session(self, session):
        """ Checks a session string to make sure it is authentic expired. """
        try:
            user = rhnUser.session_reload(session)
        except (rhnSession.InvalidSessionError, rhnSession.ExpiredSessionError):
            return 0
        return 1

    def test_login(self, username, password):
        log_debug(5, username)
        try:
            authobj = auth(username, password)
        except:
            return 0
        return 1

    def test_new_login(self, username, password, session=None):
        """ rhnpush's --extended-test will call this function. """
        log_debug(5, "testing new login")
        return self.login(username, password)

    def test_check_session(self, session):
        """ rhnpush's --extended-test will call this function. """
        log_debug(5, "testing check session")
        return self.check_session(session)

    ###listMissingSourcePackages###
    def listMissingSourcePackages(self, channelList, username, password):
        """ List source packages for a list of channels. """
        log_debug(5, channelList, username)
        authobj = auth(username, password)
        return self._listMissingSourcePackages(authobj, channelList)

    def listMissingSourcePackagesBySession(self, channelList, session_string):
        log_debug(5, channelList, session_string)
        authobj = auth_session(session_string)
        return self._listMissingSourcePackages(authobj, channelList)

    def _listMissingSourcePackages(self, authobj, channelList):
        authobj.authzChannels(channelList)

        h = rhnSQL.prepare("""
            select distinct sr.name source_rpm
              from rhnChannel c
              join rhnChannelNewestPackage cnp
                on cnp.channel_id = c.id
              join rhnPackage p
                on cnp.package_id = p.id
              join rhnSourceRPM sr
                on p.source_rpm_id = sr.id
              left join rhnPackageSource ps
                on p.source_rpm_id = ps.source_rpm_id
               and (p.org_id = ps.org_id or
                    (p.org_id is null and ps.org_id is null)
                   )
             where c.label = :channel_label
               and ps.source_rpm_id is null
        """)
        missing_packages = []
        for c in channelList:
            h.execute(channel_label=c)
            while 1:
                row = h.fetchone_dict()
                if not row:
                    break

                missing_packages.append([row['source_rpm'], c])

        return missing_packages

    def channelPackageSubscription(self, username, password, info):
        """ Uploads an RPM package. """
        log_debug(3)
        authobj = auth(username, password)
        return self._channelPackageSubscription(authobj, info)

    def channelPackageSubscriptionBySession(self, session_string, info):
        log_debug(3, info)
        authobj = auth_session(session_string)
        return self._channelPackageSubscription(authobj, info)

    def _channelPackageSubscription(self, authobj, info):
        # Authorize the org id passed
        authobj.authzOrg(info)

        packageList = info.get('packages') or []
        if not packageList:
            log_debug(1, "No packages found; done")
            return 0

        if 'channels' not in info or not info['channels']:
            log_debug(1, "No channels found; done")
            return 0

        channelList = info['channels']
        authobj.authzChannels(channelList)

        # Have to turn the channel list into a list of Channel objects
        channelList = [Channel().populate({'label': x}) for x in channelList]

        # Since we're dealing with superusers, we allow them to change the org
        # id
        # XXX check if we don't open ourselves too much (misa 20030422)
        org_id = info.get('orgId')
        if org_id == '':
            org_id = None

        batch = Collection()
        package_keys = ['name', 'version', 'release', 'epoch', 'arch']
        for package in packageList:
            for k in package_keys:
                if k not in package:
                    raise Exception("Missing key %s" % k)
                if k == 'epoch':
                    if package[k] is not None:
                        if package[k] == '':
                            package[k] = None
                        else:
                            package[k] = str(package[k])
                else:
                    package[k] = str(package[k])

            if package['arch'] == 'src' or package['arch'] == 'nosrc':
                # Source package - no reason to continue
                continue
            _checksum_sql_filter = ""
            if 'md5sum' in package:  # for old rhnpush compatibility
                package['checksum_type'] = 'md5'
                package['checksum'] = package['md5sum']

            exec_args = {
                'name':    package['name'],
                'pkg_epoch':   package['epoch'],
                'pkg_version': package['version'],
                'pkg_rel':     package['release'],
                'pkg_arch':    package['arch'],
                'orgid':       org_id
            }

            if 'checksum' in package and CFG.ENABLE_NVREA:
                _checksum_sql_filter = """and c.checksum = :checksum
                                          and c.checksum_type = :checksum_type"""
                exec_args.update({'checksum_type': package['checksum_type'],
                                  'checksum':      package['checksum']})

            h = rhnSQL.prepare(self._get_pkg_info_query %
                               _checksum_sql_filter)
            h.execute(**exec_args)
            row = h.fetchone_dict()

            package['checksum_type'] = row['checksum_type']
            package['checksum'] = row['checksum']
            package['org_id'] = org_id
            package['channels'] = channelList
            batch.append(IncompletePackage().populate(package))

        caller = "server.app.channelPackageSubscription"

        backend = SQLBackend()
        importer = ChannelPackageSubscription(batch, backend, caller=caller)
        try:
            importer.run()
        except IncompatibleArchError:
            e = sys.exc_info()[1]
            raise_with_tb(rhnFault(50, ' '.join(e.args), explain=0), sys.exc_info()[2])
        except InvalidChannelError:
            e = sys.exc_info()[1]
            raise_with_tb(rhnFault(50, str(e), explain=0), sys.exc_info()[2])

        affected_channels = importer.affected_channels

        log_debug(3, "Computing errata cache for systems affected by channels",
                  affected_channels)

        schedule_errata_cache_update(affected_channels)
        rhnSQL.commit()

        return 0

    def getAnyChecksum(self, info, username=None, password=None, session=None, is_source=0):
        """ returns checksum info of available packages
            also does an existance check on the filesystem.
        """
        log_debug(3)

        pkg_infos = info.get('packages')
        channels = info.get('channels', [])
        force = info.get('force', 0)
        orgid = info.get('org_id')

        if orgid == 'null':
            null_org = 1
        else:
            null_org = None

        if not session:
            org_id, force = rhnPackageUpload.authenticate(username, password,
                                                          channels=channels,
                                                          null_org=null_org,
                                                          force=force)
        else:
            try:
                org_id, force = rhnPackageUpload.authenticate_session(
                    session, channels=channels, null_org=null_org, force=force)
            except rhnSession.InvalidSessionError:
                raise_with_tb(rhnFault(33), sys.exc_info()[2])
            except rhnSession.ExpiredSessionError:
                raise_with_tb(rhnFault(34), sys.exc_info()[2])

        if is_source:
            ret = self._getSourcePackageChecksum(org_id, pkg_infos)
        else:
            ret = self._getPackageChecksum(org_id, pkg_infos)
        return ret

    def getPackageChecksum(self, username, password, info):
        return self.getAnyChecksum(info, username=username, password=password)

    def getPackageMD5sum(self, username, password, info):
        """ bug#177762 gives md5sum info of available packages.
            also does an existance check on the filesystem.
        """
        log_debug(3)
        self._MD5sum2Checksum_info(info)
        return self._Checksum2MD5sum_list(
            self.getPackageChecksum(username, password, info))

    def getPackageChecksumBySession(self, session_string, info):
        return self.getAnyChecksum(info, session=session_string)

    def getPackageMD5sumBySession(self, session_string, info):
        log_debug(3)
        self._MD5sum2Checksum_info(info)
        return self._Checksum2MD5sum_list(
            self.getPackageChecksumBySession(session_string, info))

    _get_pkg_info_query = """
        select
               c.checksum_type,
               c.checksum,
               p.path path
         from
               rhnPackageEVR pe,
               rhnPackageName pn,
               rhnPackage p,
               rhnPackageArch pa,
               rhnChecksumView c
         where
               pn.name     = :name
          and  ( pe.epoch  = :pkg_epoch or
                ( pe.epoch is null and :pkg_epoch is null )
               )
          and  pe.version  = :pkg_version
          and  pe.release  = :pkg_rel
          and  ( p.org_id  = :orgid or
                ( p.org_id is null and :orgid is null )
               )
          and  p.name_id   = pn.id
          and  p.evr_id    = pe.id
          and  p.package_arch_id = pa.id
          and  pa.label    = :pkg_arch
          and  p.checksum_id = c.id
          %s
    """

    def _getPackageChecksum(self, org_id, pkg_infos):
        log_debug(3)
        row_list = {}
        checksum_exists = 0
        for pkg in list(pkg_infos.keys()):

            pkg_info = pkg_infos[pkg]
            pkg_epoch = pkg_info['epoch']
            if pkg_epoch is not None:
                # Force empty strings to None (NULLs in database)
                if pkg_epoch == '':
                    pkg_epoch = None
                # and force numbers to strings
                else:
                    pkg_epoch = str(pkg_epoch)

            query_args = {
                'name':     pkg_info['name'],
                'pkg_epoch':    pkg_epoch,
                'pkg_version':  str(pkg_info['version']),
                'pkg_rel':      str(pkg_info['release']),
                'pkg_arch':     pkg_info['arch'],
                'orgid':       org_id,
            }

            _checksum_sql_filter = ""
            if 'checksum' in pkg_info and CFG.ENABLE_NVREA:
                _checksum_sql_filter = """and c.checksum = :checksum
                                          and c.checksum_type = :checksum_type"""
                query_args.update({
                    'checksum_type':    pkg_info['checksum_type'],
                    'checksum':         pkg_info['checksum'],
                })

            h = rhnSQL.prepare(self._get_pkg_info_query % _checksum_sql_filter)
            row_list[pkg] = self._get_package_checksum(h, query_args)

        return row_list

    def _get_package_checksum(self, h, query_args):
        h.execute(**query_args)
        row = h.fetchone_dict()
        if not row:
            ret = ''
        elif row.get('path'):
            filePath = os.path.join(CFG.MOUNT_POINT, row['path'])
            if os.access(filePath, os.R_OK):
                if 'checksum' in row:
                    ret = (row['checksum_type'], row['checksum'])
                else:
                    ret = 'on-disk'
            else:
                # Package not found on the filesystem
                log_error("Package not found", filePath)
                ret = ''
        else:
            log_error("Package path null for package", query_args['name'])
            ret = ''
        return ret

    def _MD5sum2Checksum_info(self, info):
        log_debug(5)
        pkg_infos = info.get('packages')
        for pkg in list(pkg_infos.keys()):
            if 'md5sum' in pkg_infos[pkg]:
                pkg_infos[pkg]['checksum_type'] = 'md5'
                pkg_infos[pkg]['checksum'] = pkg_infos[pkg]['md5sum']
                del(pkg_infos[pkg]['md5sum'])

    def _Checksum2MD5sum_list(self, checksum_list):
        log_debug(5)
        row_list = {}
        for k in list(checksum_list.keys()):
            if checksum_list[k] == '' or checksum_list[k] == 'on-disk':
                row_list[k] = checksum_list[k]
            elif type(checksum_list[k]) == TupleType and checksum_list[k][0] == 'md5':
                row_list[k] = checksum_list[k][1]
            else:
                row_list[k] = ''
        return row_list

    def getSourcePackageChecksum(self, username, password, info):
        return self.getAnyChecksum(info, username=username, password=password, is_source=1)

    def getSourcePackageMD5sum(self, username, password, info):
        log_debug(3)
        self._MD5sum2Checksum_info(info)
        return self._Checksum2MD5sum_list(
            self.getSourcePackageChecksum(username, password, info))

    def getSourcePackageChecksumBySession(self, session_string, info):
        return self.getAnyChecksum(info, session=session_string, is_source=1)

    def getSourcePackageMD5sumBySession(self, session_string, info):
        log_debug(3)
        self._MD5sum2Checksum_info(info)
        return self._Checksum2MD5sum_list(
            self.getSourcePackageChecksumBySession(session_string, info))

    def _getSourcePackageChecksum(self, org_id, pkg_infos):
        """ Gives checksum info of available source packages.
            Also does an existance check on the filesystem.
        """

        log_debug(3)

        statement = """
            select
                ps.path path,
                c.checksum,
                c.checksum_type
            from
                rhnSourceRpm sr,
                rhnPackageSource ps,
                rhnChecksumView c
            where
                 sr.name = :name
             and ps.source_rpm_id = sr.id
             and ( ps.org_id  = :orgid or
                   ( ps.org_id is null and :orgid is null )
                 )
             and ps.checksum_id = c.id
             """
        h = rhnSQL.prepare(statement)
        row_list = {}
        for pkg in list(pkg_infos.keys()):
            row_list[pkg] = self._get_package_checksum(h,
                                                       {'name': pkg, 'orgid': org_id})
        return row_list


def auth(login, password):
    """ Authorize this user. """
    authobj = UserAuth()
    authobj.auth(login, password)
    return authobj


def auth_session(session_string):
    """ Authenticate based on a session. """
    authobj = UserAuth()
    authobj.auth_session(session_string)
    return authobj
   07070100000162000041FD0000000000000000000000016290A0C100000000000000000000000000000000000000000000002900000000spacewalk-backend/server/handlers/applet  07070100000163000081B40000000000000000000000016290A0C10000008B000000000000000000000000000000000000003200000000spacewalk-backend/server/handlers/applet/Makefile # Makefile for the applet module
#

TOP	= ../../..
SUBDIR	= server/handlers/applet

FILES	= __init__ applet

include $(TOP)/Makefile.defs

 07070100000164000081B40000000000000000000000016290A0C100000311000000000000000000000000000000000000003500000000spacewalk-backend/server/handlers/applet/__init__.py  #
# Copyright (c) 2008--2015 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#
#
# This file defines the classes available for the APPLET receiver
#

__all__ = []

from . import applet

rpcClasses = {
    "applet": applet.Applet,
}

getHandler = None
   07070100000165000081B40000000000000000000000016290A0C100002834000000000000000000000000000000000000003300000000spacewalk-backend/server/handlers/applet/applet.py    #
# Copyright (c) 2008--2016 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#

# system module imports
try:
    #  python 2
    import xmlrpclib
except ImportError:
    #  python3
    import xmlrpc.client as xmlrpclib
import random

# common modules imports
from uyuni.common.usix import LongType
from uyuni.common import rhn_rpm
from spacewalk.common import rhnCache, rhnFlags
from spacewalk.common.rhnLog import log_debug
from spacewalk.common.rhnConfig import CFG, PRODUCT_NAME
from spacewalk.common.rhnException import rhnFault
from spacewalk.common.rhnTranslate import _

# server modules imports
from spacewalk.server.rhnHandler import rhnHandler
from spacewalk.server import rhnChannel, rhnSQL, rhnLib

# Applet class --- retrieve (via xmlrpc) date required for applet
# functionality


class Applet(rhnHandler):

    def __init__(self):
        rhnHandler.__init__(self)
        # Exposed Errata functions:
        self.functions = []
        self.functions.append("poll_status")
        self.functions.append("poll_packages")
        self.functions.append("tie_uuid")
        self.functions.append("has_base_channel")

    _query_lookup_server = rhnSQL.Statement("""
        select s.id
          from rhnServer s,
               rhnServerUuid su
         where su.uuid = :uuid
           and su.server_id = s.id
         order by modified desc
    """)
    _query_lookup_base_channel = rhnSQL.Statement("""
        select c.label
          from rhnChannel c,
               rhnServerChannel sc
         where sc.server_id = :server_id
           and sc.channel_id = c.id
           and c.parent_channel is null
    """)

    def has_base_channel(self, uuid):
        log_debug(1, uuid)
        # Verifies if a system has a base channel
        h = rhnSQL.prepare(self._query_lookup_server)
        h.execute(uuid=uuid)
        row = h.fetchone_dict()
        if not row:
            raise rhnFault(140,
                           _("Your system was not found in the {PRODUCT_NAME} database").format(PRODUCT_NAME=PRODUCT_NAME),
                           explain=0)
        server_id = row['id']

        h = rhnSQL.prepare(self._query_lookup_base_channel)
        h.execute(server_id=server_id)
        row = h.fetchone_dict()
        if row:
            return 1
        return 0

    # ties a uuid to an rhnServer.id
    def tie_uuid(self, systemid, uuid):
        log_debug(1, uuid)
        systemid = str(systemid)
        uuid = str(uuid)

        server = self.auth_system(systemid)
        if not uuid:
            # Nothing to do
            return

        server.update_uuid(uuid)
        return 1

    # return our sttaus - for now a dummy function
    def poll_status(self):
        checkin_interval = (CFG.CHECKIN_INTERVAL +
                            random.random() * CFG.CHECKIN_INTERVAL_MAX_OFFSET)
        return {
            'checkin_interval': int(checkin_interval),
            'server_status': 'normal'
        }

    # poll for latest packages for the RHN Applet
    def poll_packages(self, release, server_arch, timestamp=0, uuid=None):
        log_debug(1, release, server_arch, timestamp, uuid)

        # make sure we're dealing with strings here
        release = str(release)
        server_arch = rhnLib.normalize_server_arch(server_arch)
        timestamp = str(timestamp)
        uuid = str(uuid)

        # get a list of acceptable channels
        channel_list = []

        channel_list = rhnChannel.applet_channels_for_uuid(uuid)

        # it's possible the tie between uuid and rhnServer.id wasn't yet
        # made, default to normal behavior
        if not channel_list:
            channel_list = rhnChannel.get_channel_for_release_arch(release,
                                                                   server_arch)
            channel_list = [channel_list]
        # bork if no channels returned
        if not channel_list:
            log_debug(8, "No channels for release = '%s', arch = '%s', uuid = '%s'" % (
                release, server_arch, uuid))
            return {'last_modified': 0, 'contents': []}

        last_channel_changed_ts = max([a["last_modified"] for a in channel_list])

        # make satellite content override a cache caused by hosted
        last_channel_changed_ts = str(LongType(last_channel_changed_ts) + 1)

        # gotta be careful about channel unsubscriptions...
        client_cache_invalidated = None

        # we return rhnServer.channels_changed for each row
        # in the satellite case, pluck it off the first...
        if "server_channels_changed" in channel_list[0]:
            sc_ts = channel_list[0]["server_channels_changed"]

            if sc_ts and (sc_ts >= last_channel_changed_ts):
                client_cache_invalidated = 1

        if (last_channel_changed_ts <= timestamp) and (not client_cache_invalidated):
            # XXX: I hate these freaking return codes that return
            # different members in the dictinary depending on what
            # sort of data you get
            log_debug(3, "Client has current data")
            return {'use_cached_copy': 1}

        # we'll have to return something big - compress
        rhnFlags.set("compress_response", 1)

        # Mark the response as being already XMLRPC-encoded
        rhnFlags.set("XMLRPC-Encoded-Response", 1)

        # next, check the cache if we have something with this timestamp
        label_list = [str(a["id"]) for a in channel_list]
        label_list.sort()
        log_debug(4, "label_list", label_list)
        cache_key = "applet-poll-%s" % "-".join(label_list)

        ret = rhnCache.get(cache_key, last_channel_changed_ts)
        if ret:  # we have a good entry with matching timestamp
            log_debug(3, "Cache HIT for", cache_key)
            return ret

        # damn, need to do some real work from chip's requirements:
        # The package list should be an array of hashes with the keys
        # nvre, name, version, release, epoch, errata_advisory,
        # errata_id, with the errata fields being empty strings if the
        # package isn't from an errata.
        ret = {'last_modified': last_channel_changed_ts, 'contents': []}

        # we search for packages only in the allowed channels - build
        # the SQL helper string and dictionary to make the foo IN (
        # list ) constructs use bind variables
        qlist = []
        qdict = {}
        for c in channel_list:
            v = c["id"]
            k = "channel_%s" % v
            qlist.append(":%s" % k)
            qdict[k] = v
        qlist = ", ".join(qlist)

        # This query is kind of big. One of these days I'm gonna start
        # pulling them out and transforming them into views. We can
        # also simulate this using several functions exposed out of
        # rhnChannel, but there is no difference in speed because we
        # need to do more than one query; besides, we cache the hell
        # out of it
        h = rhnSQL.prepare("""
        select distinct
            pn.name,
            pe.version,
            pe.release,
            pe.epoch,
            e_sq.errata_advisory,
            e_sq.errata_synopsis,
            e_sq.errata_id
        from
            rhnPackageName pn,
            rhnPackageEVR pe,
            rhnChannelNewestPackage cnp
        left join
            (   select  sq_e.id as errata_id,
                        sq_e.synopsis as errata_synopsis,
                        sq_e.advisory as errata_advisory,
                        sq_ep.package_id
                from
                        rhnErrata sq_e,
                        rhnErrataPackage sq_ep,
                        rhnChannelErrata sq_ce
                where   sq_ce.errata_id = sq_ep.errata_id
                        and sq_ce.errata_id = sq_e.id
                        and sq_ce.channel_id in ( %s )
            ) e_sq
          on cnp.package_id = e_sq.package_id
        where
            cnp.channel_id in ( %s )
        and cnp.name_id = pn.id
        and cnp.evr_id = pe.id
        """ % (qlist, qlist))
        h.execute(**qdict)

        plist = h.fetchall_dict()

        if not plist:
            # We've set XMLRPC-Encoded-Response above
            ret = xmlrpclib.dumps((ret, ), methodresponse=1)
            return ret

        contents = {}

        for p in plist:
            for k in list(p.keys()):
                if p[k] is None:
                    p[k] = ""
            p["nevr"] = "%s-%s-%s:%s" % (
                p["name"], p["version"], p["release"], p["epoch"])
            p["nvr"] = "%s-%s-%s" % (p["name"], p["version"], p["release"])

            pkg_name = p["name"]

            if pkg_name in contents:
                stored_pkg = contents[pkg_name]

                s = [stored_pkg["name"],
                     stored_pkg["version"],
                     stored_pkg["release"],
                     stored_pkg["epoch"]]

                n = [p["name"],
                     p["version"],
                     p["release"],
                     p["epoch"]]

                log_debug(7, "comparing vres", s, n)
                if rhn_rpm.nvre_compare(s, n) < 0:
                    log_debug(7, "replacing %s with %s" % (pkg_name, p))
                    contents[pkg_name] = p
                else:
                    # already have a higher vre stored...
                    pass
            else:
                log_debug(7, "initial store for %s" % pkg_name)
                contents[pkg_name] = p

        ret["contents"] = list(contents.values())

        # save it in the cache
        # We've set XMLRPC-Encoded-Response above
        ret = xmlrpclib.dumps((ret, ), methodresponse=1)
        rhnCache.set(cache_key, ret, last_channel_changed_ts)

        return ret
07070100000166000041FD0000000000000000000000016290A0C100000000000000000000000000000000000000000000002900000000spacewalk-backend/server/handlers/config  07070100000167000081B40000000000000000000000016290A0C100000097000000000000000000000000000000000000003200000000spacewalk-backend/server/handlers/config/Makefile # Makefile for the app module
#

TOP	= ../../..
SUBDIR	= server/handlers/config

FILES	= __init__ rhn_config_management

include $(TOP)/Makefile.defs

 07070100000168000081B40000000000000000000000016290A0C100000337000000000000000000000000000000000000003500000000spacewalk-backend/server/handlers/config/__init__.py  #
# Copyright (c) 2008--2015 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#
# This file defines the classes available for the XMLRPC receiver
#

__all__ = []

from . import rhn_config_management

rpcClasses = {
    'config': rhn_config_management.ConfigManagement,
}

getHandler = None
 07070100000169000081B40000000000000000000000016290A0C1000030D3000000000000000000000000000000000000004200000000spacewalk-backend/server/handlers/config/rhn_config_management.py #
# Copyright (c) 2008--2016 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#
#
# Config file handler (client side)
#

from spacewalk.common.rhnLog import log_debug
from spacewalk.common.rhnException import rhnFault

from spacewalk.server import rhnSQL, configFilesHandler
from spacewalk.server.rhnHandler import rhnHandler


class ConfigManagement(configFilesHandler.ConfigFilesHandler):

    def __init__(self):
        log_debug(3)
        configFilesHandler.ConfigFilesHandler.__init__(self)
        self.functions.update({
            'client.list_config_channels': 'client_list_channels',
            # XXX1
            'client.set_namespaces': 'client_set_namespaces',
            'client.list_files': 'client_list_files',
            'client.get_file': 'client_get_file',
            'client.get_default_delimiters': 'client_get_delimiters',
            'client.upload_file': 'client_upload_file',
            'client.get_maximum_file_size': 'client_get_maximum_file_size',
            'client.upload': 'client_upload_to_server_import',
        })
        self.org_id = None

    # We need the org id too
    def auth_system(self, systemid):
        rhnHandler.auth_system(self, systemid)
        self.org_id = self.server.server['org_id']

    def client_get_maximum_file_size(self, systemid):
        log_debug(1)
        self.auth_system(systemid)

        return self._get_maximum_file_size()

    def client_get_delimiters(self, systemid):
        log_debug(1)
        self.auth_system(systemid)

        return self._get_delimiters()

    def client_list_channels(self, systemid):
        self.auth_system(systemid)
        return self._get_client_config_channels(self.server_id)

    # XXX1
    def client_set_namespaces(self, systemid, namespaces):
        self.auth_system(systemid)

        server_id = self.server.getid()
        org_id = self.server.server['org_id']

        h = rhnSQL.prepare("""
            delete from rhnServerConfigChannel where server_id = :server_id
        """)
        h.execute(server_id=server_id)

        h = rhnSQL.prepare("""
            insert into rhnServerConfigChannel (server_id, config_channel_id, position)
            select :server_id, id, :position
              from rhnConfigChannel
             where name = :config_channel
               and org_id = :org_id
        """)

        position = 0
        for config_channel in namespaces:
            rowcount = h.execute(server_id=server_id, position=position,
                                 config_channel=config_channel, org_id=org_id)
            if not rowcount:
                raise rhnFault(4009, "Unable to find config channel %s" %
                               config_channel, explain=0)
            position = position + 1

        rhnSQL.commit()
        return 0

    _query_client_list_files = rhnSQL.Statement("""
        select cfn.path, cr.config_file_type_id
          from rhnConfigChannelType cct,
               rhnConfigChannel cc,
               rhnConfigFileState cfs,
               rhnConfigFileName cfn,
               rhnConfigRevision cr,
               rhnConfigFile cf
         where cc.org_id = :org_id
           and cc.label = :config_channel
           and cc.confchan_type_id = cct.id
           and cct.label in ('normal', 'local_override')
           and cf.config_channel_id = cc.id
           and cf.latest_config_revision_id = cr.id
           and cr.config_file_id = cf.id
           and cf.state_id = cfs.id
           and cfs.label = 'alive'
           and cf.config_file_name_id = cfn.id
           order by cfn.path
    """)

    def client_list_files(self, systemid, config_channel=None):
        """ Return array of files (its path), which we manage on that system. """
        log_debug(1)
        self.auth_system(systemid)

        if config_channel:
            config_channels = [config_channel]
        else:
            config_channels = self._get_client_config_channels(self.server.getid())
            config_channels = [x['label'] for x in config_channels]

        if not config_channels:
            # No config channels
            return []

        h = rhnSQL.prepare(self._query_client_list_files)

        result_hash = {}
        # We're storing the config files in a dictionary, keyed by path; this
        # way, the most important channel (with the lowest preference) will
        # override the less important oness
        for config_channel in config_channels:
            log_debug(4, "Checking config channel", config_channel)

            h.execute(org_id=self.org_id, config_channel=config_channel)
            while 1:
                row = h.fetchone_dict()
                if not row:
                    break

                path = row['path']

                if not path in result_hash:
                    result_hash[path] = (config_channel, path, row['config_file_type_id'])

                if config_channel == str(self.server.getid()):
                    result_hash[path] = (config_channel, path, row['config_file_type_id'])

        result = list(result_hash.values())
        # Sort by path first since that's what the web site does
        result.sort(key=lambda x:x[1])
        return result

    def client_get_file(self, systemid, filename):
        """ Returns requested config file.
            If file do not exist or system is not subscribed to, then we return.
            {'missing' : 1}
            Otherwise dictionary is returned. It should contains keys:
            path, config_channel, file_contents, checksum_type, checksum, delim_start
            delim_end, revision, username, groupname, filemode, encoding, filetype and
            selinux_ctx.
            See server/configFilesHandler.py:format_file_results
        """
        self.auth_system(systemid)
        server_id = self.server.getid()

        return self._client_get_file(server_id, filename)

    _query_client_get_file = rhnSQL.Statement("""
        select :path path,
               cc.label config_channel,
               c.contents file_contents,
               c.is_binary is_binary,
               c.checksum_type,
               c.checksum,
               c.delim_start, c.delim_end,
               cr.revision,
               cf.modified,
               ci.username,
               ci.groupname,
               ci.filemode,
               cft.label,
               cct.priority,
               ci.selinux_ctx,
           case
                when cft.label='symlink' then (select path from rhnConfigFileName where id = ci.SYMLINK_TARGET_FILENAME_ID)
                else ''
            end as symlink
          from rhnConfigChannel cc,
               rhnConfigInfo ci,
               rhnConfigRevision cr
          left join
            (select ccont.id, cs.checksum_type, cs.checksum,
                    ccont.contents, ccont.is_binary,
                    ccont.delim_start, ccont.delim_end
               from rhnChecksumView cs
               inner join rhnConfigContent ccont
                 on ccont.checksum_id = cs.id) c
            on cr.config_content_id = c.id,
               rhnServerConfigChannel scc,
               rhnConfigFile cf,
               rhnConfigFileType cft,
               rhnConfigChannelType cct
         where scc.server_id = :server_id
           and scc.config_channel_id = cc.id
           and cf.config_channel_id = cc.id
           and cf.config_file_name_id = lookup_config_filename(:path)
           and cr.config_file_id = cf.id
           and cr.config_info_id = ci.id
           and cf.latest_config_revision_id = cr.id
           and cr.config_file_type_id = cft.id
           and cct.id = cc.confchan_type_id
         order by cct.priority, scc.position
    """)

    def _client_get_file(self, server_id, filename):
        h = rhnSQL.prepare(self._query_client_get_file)

        h.execute(server_id=server_id, path=filename)
        row = h.fetchone_dict()
        if not row:
            # XXX Return something other than a dict?
            return {'missing': 1}

        return self._format_file_results(row)

    _query_client_config_channels = rhnSQL.Statement("""
        select cc.label,
               cc.name
          from rhnConfigChannelType cct,
               rhnConfigChannel cc,
               rhnServerConfigChannel scc
         where scc.server_id = :server_id
           and scc.config_channel_id = cc.id
           and cc.confchan_type_id = cct.id
           and cct.label in ('normal', 'local_override')
         order by scc.position nulls last, cc.name desc
    """)

    def _get_client_config_channels(self, server_id):
        h = rhnSQL.prepare(self._query_client_config_channels)
        h.execute(server_id=server_id)
        return h.fetchall_dict() or []

    _query_client_upload_files = rhnSQL.Statement("""
        select acc.config_channel_id, ast.name action_status
          from rhnServerAction sa,
               rhnActionStatus ast,
               rhnActionConfigChannel acc
         where acc.server_id = :server_id
           and acc.action_id = :action_id
           and sa.server_id = :server_id
           and sa.action_id = :action_id
           and sa.status = ast.id
    """)

    def client_upload_file(self, systemid, action_id, file):
        self.auth_system(systemid)
        log_debug(1, self.server_id, action_id)

        # Validate that the action indeed applies
        h = rhnSQL.prepare(self._query_client_upload_files)
        h.execute(server_id=self.server_id, action_id=action_id)
        row = h.fetchone_dict()
        if not row:
            raise rhnFault(4002, "Action not available for this server")
        if row['action_status'] != 'Picked Up':
            raise rhnFault(4002, "Improper action for this server")

        config_channel_id = row['config_channel_id']

        return self.push_file(config_channel_id, file)

    _query_lookup_import_channel = rhnSQL.Statement("""
        select cc.id
          from rhnConfigChannelType cct,
               rhnConfigChannel cc,
               rhnServerConfigChannel scc
         where scc.server_id = :server_id
           and scc.config_channel_id = cc.id
           and cc.confchan_type_id = cct.id
           and cct.label = 'server_import'
    """)

    # Almost identical to client_upload_files
    def client_upload_to_server_import(self, systemid, file):
        self.auth_system(systemid)
        log_debug(1, self.server_id)

        h = rhnSQL.prepare(self._query_lookup_import_channel)
        h.execute(server_id=self.server_id)
        row = h.fetchone_dict()
        if not row:
            config_channel_id = self._create_server_import_channel(self.server_id)
        else:
            config_channel_id = row['id']

        return self.push_file(config_channel_id, file)

    _query_create_server_import_channel = rhnSQL.Statement("""
        insert into rhnServerConfigChannel
               (server_id, config_channel_id, position)
        values (:server_id, :config_channel_id, :position)
    """)

    def _create_server_import_channel(self, server_id):
        name = "server_import Config Channel for system %d" % server_id
        description = "XXX"

        # server_import and local_override channels that
        # get created need to conform to this label formula:
        # {rhnConfigChannelType.label}-{sid}
        label = "server_import-%d" % server_id

        insert_call = rhnSQL.Function('rhn_config.insert_channel',
                                      rhnSQL.types.NUMBER())
        config_channel_id = insert_call(self.org_id,
                                        'server_import',
                                        name,
                                        label,
                                        description)

        h = rhnSQL.prepare(self._query_create_server_import_channel)
        h.execute(server_id=server_id, config_channel_id=config_channel_id,
                  position=None)

        return config_channel_id
 0707010000016A000041FD0000000000000000000000016290A0C100000000000000000000000000000000000000000000002E00000000spacewalk-backend/server/handlers/config/test 0707010000016B000081B40000000000000000000000016290A0C10000034B000000000000000000000000000000000000003D00000000spacewalk-backend/server/handlers/config/test/template1.tmpl  <html>
<head><title>Running on @@hostname@@</title></head>
<body>

This script is run from @@hostname@@ and the value is @@foobar()=RRR@@ by default.
%25%25%25@@%40%40

hostname:
@@rhn.system.hostname()@@

ipaddr:
@@rhn.system.ip_address@@

description:
@@rhn.system.description@@

sid:
@@rhn.system.sid@@

network interface:
ipaddr eth0 -- @@rhn.system.net_interface.ip_address(eth0)@@
netmask eth0 -- @@rhn.system.net_interface.netmask(eth0)@@
broadcast eth0 -- @@rhn.system.net_interface.broadcast(eth0)@@
hwaddr eth0 -- @@rhn.system.net_interface.hardware_address(eth0)@@
module eth0 -- @@rhn.system.net_interface.driver_module(eth0)@@

ipaddr lo -- @@rhn.system.net_interface.ip_address(lo)@@


custom info:
foo -- @@rhn.system.custom_info(foo)@@
no_such_value -- @@rhn.system.custom_info(no_such_value)=No such value@@

</body>
</html>

 0707010000016C000081B40000000000000000000000016290A0C1000007FD000000000000000000000000000000000000004000000000spacewalk-backend/server/handlers/config/test/test_template1.py   #
# Copyright (c) 2008--2016 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#
import sys

from templated_document import ServerTemplatedDocument
from spacewalk.server import rhnServer, rhnSQL

rhnSQL.initDB()

server_id = 1003887108

server = rhnServer.search(server_id)
server.reload_hardware()
server.load_custom_info()

t = ServerTemplatedDocument(server, start_delim='@@', end_delim='@@')
#t = ServerTemplatedDocument(server, start_delim='{|', end_delim='|}')

data = open("test/template1.tmpl").read()

try:
    print(("interpolated:  ", t.interpolate(data)))
except Exception:
    e = sys.exc_info()[1]
    print(e)
    tb = sys.exc_info()[2]
    stack = []
    # walk the traceback to the end
    while 1:
        if not tb.tb_next:
            break
        tb = tb.tb_next
    # and now start extracting the stack frames
    f = tb.tb_frame
    while f:
        stack.append(f)
        f = f.f_back

    for frame in stack:
        print(("Frame %s in %s at line %s\n" % (frame.f_code.co_name,
                                               frame.f_code.co_filename,
                                               frame.f_lineno)))

        for key, value in list(frame.f_locals.items()):
            message = "\t%20s = " % key
            try:
                s = str(value)
            except:
                s = "<ERROR WHILE PRINTING VALUE>"
            if len(s) > 100 * 1024:
                s = "<ERROR WHILE PRINTING VALUE: string representation too large>"
            print((message + s))
   0707010000016D000041FD0000000000000000000000016290A0C100000000000000000000000000000000000000000000002E00000000spacewalk-backend/server/handlers/config_mgmt 0707010000016E000081B40000000000000000000000016290A0C10000009C000000000000000000000000000000000000003700000000spacewalk-backend/server/handlers/config_mgmt/Makefile    # Makefile for the app module
#

TOP	= ../../..
SUBDIR	= server/handlers/config_mgmt

FILES	= __init__ rhn_config_management

include $(TOP)/Makefile.defs

0707010000016F000081B40000000000000000000000016290A0C100000337000000000000000000000000000000000000003A00000000spacewalk-backend/server/handlers/config_mgmt/__init__.py #
# Copyright (c) 2008--2015 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#
# This file defines the classes available for the XMLRPC receiver
#

__all__ = []

from . import rhn_config_management

rpcClasses = {
    'config': rhn_config_management.ConfigManagement,
}

getHandler = None
 07070100000170000081B40000000000000000000000016290A0C100004DD7000000000000000000000000000000000000004700000000spacewalk-backend/server/handlers/config_mgmt/rhn_config_management.py    #
# Copyright (c) 2008--2016 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#
#
# Config file handler (management tool)
#

import sys
import difflib
from spacewalk.common.rhnLog import log_debug
from uyuni.common.usix import raise_with_tb, next
from spacewalk.common.rhnException import rhnFault
from spacewalk.server import rhnSQL, configFilesHandler
from uyuni.common.fileutils import f_date, ostr_to_sym


class ConfigManagement(configFilesHandler.ConfigFilesHandler):

    def __init__(self):
        log_debug(3)
        configFilesHandler.ConfigFilesHandler.__init__(self)
        self.functions.update({
            'management.get_file': 'management_get_file',
            'management.list_config_channels': 'management_list_channels',
            'management.create_config_channel': 'management_create_channel',
            'management.remove_config_channel': 'management_remove_channel',
            'management.list_file_revisions': 'management_list_file_revisions',
            'management.list_files': 'management_list_files',
            'management.has_file': 'management_has_file',
            'management.put_file': 'management_put_file',
            'management.remove_file': 'management_remove_file',
            'management.diff': 'management_diff',
            'management.get_default_delimiters': 'management_get_delimiters',
            'management.get_maximum_file_size': 'management_get_maximum_file_size',
        })
        self.user = None
        self.default_delimiter = '@'

    _query_list_config_channels = rhnSQL.Statement("""
        select cc.name,
               cc.label,
               cct.label channel_type
          from rhnConfigChannelType cct,
               rhnConfigChannel cc
         where cc.org_id = :org_id
           and cc.confchan_type_id = cct.id
           and cct.label = 'normal'
         order by cc.label, cc.name
    """)

    def _get_and_validate_session(self, dict):
        session = dict.get('session')
        self._validate_session(session)

    def management_list_channels(self, dict):
        log_debug(1)
        self._get_and_validate_session(dict)
        return [x['label'] for x in rhnSQL.fetchall_dict(self._query_list_config_channels,
                                        org_id=self.org_id) or []]

    _query_lookup_config_channel = rhnSQL.Statement("""
        select id
          from rhnConfigChannel
         where org_id = :org_id
           and label = :config_channel
    """)

    def management_create_channel(self, dict):
        log_debug(1)
        self._get_and_validate_session(dict)

        config_channel = dict.get('config_channel')
        # XXX Validate the namespace

        config_channel_name = dict.get('config_channel_name') or config_channel
        config_channel_description = dict.get('description') or config_channel

        row = rhnSQL.fetchone_dict(self._query_lookup_config_channel,
                                   org_id=self.org_id, config_channel=config_channel)
        if row:
            raise rhnFault(4010, "Configuration channel %s already exists" %
                           config_channel, explain=0)

        insert_call = rhnSQL.Function('rhn_config.insert_channel',
                                      rhnSQL.types.NUMBER())
        config_channel_id = insert_call(self.org_id,
                                        'normal',
                                        config_channel_name,
                                        config_channel,
                                        config_channel_description)

        rhnSQL.commit()
        return {}

    _query_config_channel_by_label = rhnSQL.Statement("""
    select id
      from rhnConfigChannel
     where org_id = :org_id
       and label = :label
    """)

    def management_remove_channel(self, dict):
        log_debug(1)
        self._get_and_validate_session(dict)

        config_channel = dict.get('config_channel')
        # XXX Validate the namespace

        row = rhnSQL.fetchone_dict(self._query_config_channel_by_label,
                                   org_id=self.org_id, label=config_channel)

        if not row:
            raise rhnFault(4009, "Channel not found")

        delete_call = rhnSQL.Procedure('rhn_config.delete_channel')

        try:
            delete_call(row['id'])
        except rhnSQL.SQLError:
            e = sys.exc_info()[1]
            errno = e.args[0]
            if errno == 2292:
                raise_with_tb(rhnFault(4005, "Cannot remove non-empty channel %s" %
                               config_channel, explain=0), sys.exc_info()[2])
            raise

        log_debug(5, "Removed:", config_channel)
        rhnSQL.commit()
        return ""

    _query_management_list_files = rhnSQL.Statement("""
        select cc.label config_channel,
               cfn.path
          from rhnConfigFileName cfn,
               rhnConfigFileState cfs,
               rhnConfigFile cf,
               rhnConfigChannel cc
         where cc.org_id = :org_id
           and cc.label = :config_channel
           and cc.id = cf.config_channel_id
           and cf.state_id = cfs.id
           and cfs.label = 'alive'
           and cf.config_file_name_id = cfn.id
    """)

    def management_list_files(self, dict):
        log_debug(1)
        self._get_and_validate_session(dict)

        config_channel = dict.get('config_channel')
        # XXX Validate the config channel

        log_debug(3, "Org id", self.org_id, "Config channel", config_channel)

        h = rhnSQL.prepare(self._query_management_list_files)
        h.execute(org_id=self.org_id, config_channel=config_channel)

        retval = []
        while 1:
            row = h.fetchone_dict()
            if not row:
                break
            val = {}
            # Only copy a subset of the keys
            for f in ['config_channel', 'path']:
                val[f] = row[f]

            retval.append(val)
        log_debug(4, "pre sort", retval)
        retval.sort(lambda x, y: cmp(x['path'], y['path']))
        log_debug(4, "Return value", retval)
        return retval

    def management_get_file(self, dict):
        log_debug(1)
        self._get_and_validate_session(dict)

        config_channel = dict.get('config_channel')
        # XXX Validate the namespace
        path = dict.get('path')
        revision = dict.get('revision')

        row = self._get_file(config_channel, path, revision=revision)
        if not row:
            raise rhnFault(4011, "File %s does not exist in channel %s" %
                           (path, config_channel), explain=0)

        return self._format_file_results(row)

    _query_list_file_revisions = rhnSQL.Statement("""
        select cr.revision
          from rhnConfigChannel cc,
               rhnConfigRevision cr,
               rhnConfigFile cf
         where cf.config_channel_id = cc.id
           and cc.label = :config_channel
           and cc.org_id = :org_id
           and cf.config_file_name_id = lookup_config_filename(:path)
           and cr.config_file_id = cf.id
         order by revision desc
    """)

    def management_list_file_revisions(self, dict):
        log_debug(1)
        self._get_and_validate_session(dict)

        config_channel = dict.get('config_channel')
        # XXX Validate the namespace
        path = dict.get('path')

        retval = [x['revision'] for x in rhnSQL.fetchall_dict(self._query_list_file_revisions,
                                          org_id=self.org_id, config_channel=config_channel, path=path) or []]
        if not retval:
            raise rhnFault(4011, "File %s does not exist in channel %s" %
                           (path, config_channel), explain=0)

        return retval

    def management_has_file(self, dict):
        log_debug(1)
        self._get_and_validate_session(dict)

        config_channel = dict.get('config_channel')
        # XXX Validate the namespace
        path = dict.get('path')
        row = self._get_file(config_channel, path)
        if not row:
            return {}
        return {
            'revision': row['revision'],
        }

    _query_get_file = """
        select :path path,
               cc.label config_channel,
               ccont.contents file_contents,
               ccont.is_binary,
               c.checksum_type,
               c.checksum,
               ccont.delim_start, ccont.delim_end,
               cr.revision,
               cf.modified,
               ci.username,
               ci.groupname,
               ci.filemode,
               cft.label,
               ci.selinux_ctx,
           case
                when cft.label='symlink' then (select path from rhnConfigFileName where id = ci.SYMLINK_TARGET_FILENAME_ID)
                else ''
            end as symlink
          from rhnConfigChannel cc,
               rhnConfigInfo ci,
               rhnConfigRevision cr
          left join rhnConfigContent ccont
            on cr.config_content_id = ccont.id
          left join rhnChecksumView c
            on ccont.checksum_id = c.id,
               rhnConfigFile cf,
               rhnConfigFileType cft
         where cf.config_channel_id = cc.id
           and cc.label = :config_channel
           and cc.org_id = :org_id
           and cf.config_file_name_id = lookup_config_filename(:path)
           and cr.config_file_id = cf.id
           and cr.config_info_id = ci.id
           and cr.config_file_type_id = cft.id
    """
    _query_get_file_latest = rhnSQL.Statement(_query_get_file + """
           and cf.latest_config_revision_id = cr.id
           """)
    _query_get_file_revision = rhnSQL.Statement(_query_get_file + """
           and cr.revision = :revision
           """)

    def _get_file(self, config_channel, path, revision=None):
        log_debug(2, config_channel, path)
        params = {
            'org_id': self.org_id,
            'config_channel': config_channel,
            'path': path,
        }
        if revision is None:
            # Fetch the latest
            q = self._query_get_file_latest
        else:
            params['revision'] = revision
            q = self._query_get_file_revision
        log_debug(4, params)
        return rhnSQL.fetchone_dict(q, **params)

    _query_lookup_config_file_by_channel = rhnSQL.Statement("""
        select cf.id,
               cf.state_id
          from rhnConfigFile cf,
               rhnConfigChannel cc
         where cc.org_id = :org_id
           and cf.config_channel_id = cc.id
           and cc.label = :config_channel
           and cf.config_file_name_id = lookup_config_filename(:path)
    """)

    def management_remove_file(self, dict):
        log_debug(1)
        self._get_and_validate_session(dict)

        config_channel = dict.get('config_channel')
        # XXX Validate the namespace
        path = dict.get('path')

        row = rhnSQL.fetchone_dict(self._query_lookup_config_file_by_channel,
                                   org_id=self.org_id, config_channel=config_channel, path=path)
        if not row:
            raise rhnFault(4011, "File %s does not exist in channel %s" %
                           (path, config_channel), explain=0)

        config_file_id = row['id']

        delete_call = rhnSQL.Procedure("rhn_config.delete_file")
        delete_call(config_file_id)

        rhnSQL.commit()

        return {}

    _query_update_file_state = rhnSQL.Statement("""
        update rhnConfigFile
           set state_id = :state_id
         where id = :config_file_id
    """)

    def management_disable_file(self, dict):
        log_debug(1)
        self._get_and_validate_session(dict)

        config_channel = dict.get('config_channel')
        # XXX Validate the namespace
        path = dict.get('path')

        t = rhnSQL.Table('rhnConfigFileState', 'label')
        state_id_dead = t['dead']['id']

        row = rhnSQL.fetchone_dict(self._query_lookup_config_file_by_channel,
                                   config_channel=config_channel, path=path)
        if not row or row['state_id'] == state_id_dead:
            raise rhnFault(4011, "File %s does not exist in channel %s" %
                           (path, config_channel), explain=0)

        rhnSQL.execute(self._query_update_file_state,
                       config_file_id=row['id'], state_id=state_id_dead)
        rhnSQL.commit()
        return {}

    def management_put_file(self, dict):
        log_debug(1)
        self._get_and_validate_session(dict)

        config_channel = dict.get('config_channel')
        row = self.lookup_org_config_channel_by_name(config_channel)
        conf_channel_id = row['id']

        file_path = dict.get('path')
        result = self.push_file(conf_channel_id, dict)

        file_too_large = result.get('file_too_large')
        if file_too_large:
            raise rhnFault(4003, "File %s is too large (%s bytes)" %
                           (dict['path'], dict['size']), explain=0)

        rhnSQL.commit()
        return {}

    def management_get_delimiters(self, dict):
        log_debug(1)
        self._get_and_validate_session(dict)

        return self._get_delimiters()

    def management_get_maximum_file_size(self, dict={}):
        log_debug(1)
        self._get_and_validate_session(dict)

        return self._get_maximum_file_size()

    def __attributes_differ(self, fsrc, fdst):
        """ Returns true if acl, ownership, type or selinux context differ. """
        return (fsrc['filemode'] != fdst['filemode']) or (fsrc['label'] != fdst['label']) or \
               (fsrc['username'] != fdst['username']) or (fsrc['groupname'] != fdst['groupname']) or \
               (fsrc['selinux_ctx'] != fdst['selinux_ctx'])

    def __header(self, path, fsrc, config_channel_src, fdst, config_channel_dst):
        """ Returns diff like header for this two files. """
        template = "--- %s\t%s\tattributes: %s %s %s %s\tconfig channel: %s\trevision: %s"
        first_row = template % (path, f_date(fsrc['modified']), ostr_to_sym(fsrc['filemode'], fsrc['label']),
                                fsrc['username'], fsrc['groupname'], fsrc['selinux_ctx'], config_channel_src,
                                fsrc['revision'],
                                )
        second_row = template % (path, f_date(fdst['modified']), ostr_to_sym(fdst['filemode'], fdst['label']),
                                 fdst['username'], fdst['groupname'], fdst['selinux_ctx'], config_channel_dst,
                                 fdst['revision'],
                                 )
        return (first_row, second_row)

    def management_diff(self, dict):
        log_debug(1)
        self._get_and_validate_session(dict)

        param_names = ['config_channel_src', 'revision_src', 'path', ]
        for p in param_names:
            val = dict.get(p)
            if val is None:
                raise rhnFault(4007, "No content sent for `%s'" % p)

        log_debug(4, "Params sent", dict)
        path = dict['path']

        config_channel_src = dict['config_channel_src']
        revision_src = dict.get('revision_src')
        fsrc = self._get_file_revision(config_channel_src, revision_src, path)

        config_channel_dst = dict.get('config_channel_dst')
        if config_channel_dst is None:
            config_channel_dst = config_channel_src
        revision_dst = dict.get('revision_dst')
        fdst = self._get_file_revision(config_channel_dst, revision_dst, path)

        if fsrc['label'] != fdst['label']:
            raise rhnFault(4017,
                           "Path %s  is a %s in channel %s while it is a %s in channel %s"
                           % (path, fsrc['label'],
                              config_channel_src, fdst['label'], config_channel_dst),
                           explain=0)

        if fsrc['label'] == 'symlink':
            if (fsrc["symlink"] != fdst['symlink']) or self.__attributes_differ(fsrc, fdst):
                (first_row, second_row) = self.__header(path, fsrc, config_channel_src, fdst, config_channel_dst)
                first_row += ' target: %s' % fsrc["symlink"]
                second_row += ' target: %s' % fdst["symlink"]
                return first_row + "\n" + second_row + "\n"
            return ""

        diff = difflib.unified_diff(
            fsrc['file_content'], fdst['file_content'], path, path, fsrc['modified'], fdst['modified'], lineterm='')
        try:
            first_row = next(diff)
        except StopIteration:
            return ""

        if not first_row.startswith('---'):
            # Hmm, weird
            return first_row + '\n'.join(list(diff))

        try:
            second_row = next(diff)
        except StopIteration:
            second_row = ''

        if not second_row.startswith('+++'):
            # Hmm, weird
            return second_row + '\n'.join(list(diff))

        (first_row, second_row) = self.__header(path, fsrc, config_channel_src, fdst, config_channel_dst)
        return first_row + "\n" + second_row + '\n' + '\n'.join(list(diff))

    def _get_file_revision(self, config_channel, revision, path):
        if revision and not revision.isdigit():
            raise rhnFault(4016, "Invalid revision number '%s' specified for path %s "
                           "in channel %s" % (revision, path, config_channel),
                           explain=0)

        f = self._get_file(config_channel, path, revision=revision)
        if not f:
            raise rhnFault(4011, "File %s (revision %s) does not exist "
                           "in channel %s" % (path, revision, config_channel),
                           explain=0)
        if f['label'] == 'file' and f['is_binary'] == 'Y':
            raise rhnFault(4004, "File %s (revision %s) seems to contain "
                           "binary data" % (path, revision),
                           explain=0)

        # We have to read the contents of the first file here, because the LOB
        # object is tied to a cursor; if we re-execute the cursor, the LOB
        # seems to be invalid (bug 151220)

        # Empty files or directories may have NULL instead of lobs
        fc_lob = f.get('file_contents')
        if fc_lob:
            f['file_content'] = rhnSQL._fix_encoding(rhnSQL.read_lob(fc_lob)).splitlines()
        else:
            f['file_content'] = ''
        return f

    # Helper functions
    _query_org_config_channels = rhnSQL.Statement("""
        select cc.id, cc.label, cc.name, cct.label channel_type
          from rhnConfigChannelType cct, rhnConfigChannel cc
         where cc.label = :config_channel
           and cc.org_id = :org_id
           and cc.confchan_type_id = cct.id
    """)

    def lookup_org_config_channel_by_name(self, config_channel):
        row = rhnSQL.fetchone_dict(self._query_org_config_channels,
                                   config_channel=config_channel, org_id=self.org_id)
        if not row:
            raise rhnFault(4009, "Configuration channel %s does not exist" %
                           config_channel, explain=0)
        return row

    def _check_user_role(self):
        user_roles = self.user.get_roles()
        if 'config_admin' in user_roles or 'org_admin' in user_roles:
            # All good
            return

        raise rhnFault(4006,
                       "User is not a allowed to manage config files")
 07070100000171000041FD0000000000000000000000016290A0C100000000000000000000000000000000000000000000002600000000spacewalk-backend/server/handlers/sat 07070100000172000081B40000000000000000000000016290A0C100000087000000000000000000000000000000000000002F00000000spacewalk-backend/server/handlers/sat/Makefile    # Makefile for the sat module
#

TOP	= ../../..
SUBDIR	= server/handlers/sat

FILES	= __init__ auth cert

include $(TOP)/Makefile.defs
 07070100000173000081B40000000000000000000000016290A0C10000034F000000000000000000000000000000000000003200000000spacewalk-backend/server/handlers/sat/__init__.py #
# Copyright (c) 2008--2015 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#
# This file defines the classes available for the satellite

__all__ = []

from . import auth
from . import cert

rpcClasses = {
    'authentication':   auth.Authentication,
    'certificate':   cert.Certificate,
}

getHandler = None
 07070100000174000081B40000000000000000000000016290A0C100000D7F000000000000000000000000000000000000002E00000000spacewalk-backend/server/handlers/sat/auth.py #
# Copyright (c) 2008--2016 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#
# Satellite specific authentication xmlrpc method.

import time
import sys
from rhn.connections import idn_puny_to_unicode

from spacewalk.common.rhnLog import log_debug
from spacewalk.common.rhnConfig import CFG
from spacewalk.common.rhnException import rhnFault
from spacewalk.common.rhnTranslate import _
from spacewalk.server.rhnHandler import rhnHandler
from spacewalk.server import rhnLib
from spacewalk.server import rhnSQL


class Authentication(rhnHandler):

    """ Simple authentication based on hostname and configured slaves """

    def __init__(self):
        log_debug(3)
        rhnHandler.__init__(self)
        self.functions.append('check')
        self.functions.append('login')

        # this is populated directly by server.apacheRequest.py
        self.remote_hostname = ''

    def auth_system(self):
        if CFG.DISABLE_ISS:
            raise rhnFault(2005, _('ISS is disabled on this server.'))

        if not rhnSQL.fetchone_dict("select 1 from rhnISSSlave where slave = :hostname and enabled = 'Y'",
                                    hostname=idn_puny_to_unicode(self.remote_hostname)):
            raise rhnFault(2004,
                           _('Server "%s" is not enabled for ISS.')
                           % self.remote_hostname)
        return self.remote_hostname

    def check(self, system_id_ignored):
        """xmlrpc authentication.
        """
        log_debug(3)

        # Authenticate server
        try:
            self.auth_system()
        except rhnFault:
            e = sys.exc_info()[1]
            if e.code == 2002:
                # Return an error code
                return 0
            # Pass the exception through
            raise
        # This is a satellite
        return 1

    # Log in routine.
    def login(self, system_id, extra_data={}):
        """Return a dictionary of session token/channel information.
           Also sets this information in the headers.
        """
        log_debug(5, self.remote_hostname)
        # Authenticate the system certificate.
        self.auth_system()

        # log the entry
        log_debug(1, self.remote_hostname)

        rhnServerTime = str(time.time())
        expireOffset = str(CFG.SATELLITE_AUTH_TIMEOUT)
        signature = rhnLib.computeSignature(CFG.SECRET_KEY,
                                            self.remote_hostname,
                                            rhnServerTime,
                                            expireOffset)

        loginDict = {
            'X-RHN-Server-Hostname': self.remote_hostname,
            'X-RHN-Auth': signature,
            'X-RHN-Auth-Server-Time': rhnServerTime,
            'X-RHN-Auth-Expire-Offset': expireOffset,
        }

        # XXX This request is not proxy-cacheable
        log_debug(5, "loginDict", loginDict)

        return loginDict
 07070100000175000081B40000000000000000000000016290A0C1000006E4000000000000000000000000000000000000002E00000000spacewalk-backend/server/handlers/sat/cert.py #
# Copyright (c) 2008--2016 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#
# Satellite only package downloading methods.

# common imports
from spacewalk.common.rhnLog import log_debug
from spacewalk.common.rhnException import rhnException

# server imports
from spacewalk.server import rhnSQL
from .auth import Authentication


class Certificate(Authentication):

    """ Downloads the satellite cert """

    def __init__(self):
        log_debug(3)
        Authentication.__init__(self)
        self.functions = [
            'download',
        ]

    def download(self, system_id):
        log_debug(3)
        self.auth_system(system_id)

        server_id = self.server.server['id']
        h = rhnSQL.prepare("""
            select cert
              from rhnSatelliteInfo si
             where si.server_id = :server_id""")
        h.execute(server_id=server_id)
        row = h.fetchone_dict()
        if not row:
            # This should not happen - we're already authenticated
            raise rhnException("SUSE Manager Server certificate is unavailable after authentication?")

        # Bugzilla #219625
        # cert is now a blob
        cert = row['cert']
        cert = cert.read()

        return cert
07070100000176000041FD0000000000000000000000016290A0C100000000000000000000000000000000000000000000002900000000spacewalk-backend/server/handlers/xmlrpc  07070100000177000081B40000000000000000000000016290A0C1000000E0000000000000000000000000000000000000003200000000spacewalk-backend/server/handlers/xmlrpc/Makefile # Makefile for the xmlrpc module
#

TOP	= ../../..
SUBDIR	= server/handlers/xmlrpc

FILES	= __init__ country queue registration states up2date errata \
	  getMethod proxy get_handler abrt scap

include $(TOP)/Makefile.defs

07070100000178000081B40000000000000000000000016290A0C10000048D000000000000000000000000000000000000003500000000spacewalk-backend/server/handlers/xmlrpc/__init__.py  #
# Copyright (c) 2008--2015 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#
#
# This file defines the classes available for the XMLRPC receiver
#

__all__ = []

from . import registration
from . import up2date
from . import queue
from . import errata
from . import proxy
from . import get_handler
from . import abrt
from . import scap

rpcClasses = {
    "registration": registration.Registration,
    "up2date": up2date.Up2date,
    "queue": queue.Queue,
    "errata": errata.Errata,
    "proxy": proxy.Proxy,
    "servers": up2date.Servers,
    "abrt": abrt.Abrt,
    "scap": scap.Scap,
}

getHandler = get_handler.GetHandler
   07070100000179000081B40000000000000000000000016290A0C1000036A2000000000000000000000000000000000000003100000000spacewalk-backend/server/handlers/xmlrpc/abrt.py  #
# Copyright (c) 2012--2016 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#

import base64
import os
import stat

from spacewalk.common.rhnException import rhnFault
from spacewalk.common.rhnConfig import CFG
from uyuni.common.rhnLib import parseRPMName
from spacewalk.common.rhnLog import log_debug
from spacewalk.server import rhnSQL
from spacewalk.server.rhnHandler import rhnHandler
from spacewalk.server.rhnLib import get_crash_path, get_crashfile_path

_query_get_crash = rhnSQL.Statement("""
select id
  from rhnServerCrash
 where server_id = :server_id and
       crash = :crash
""")

_query_create_crash = rhnSQL.Statement("""
insert into rhnServerCrash (
       id,
       server_id,
       crash,
       path,
       count,
       storage_path)
values (
       sequence_nextval('rhn_server_crash_id_seq'),
       :server_id,
       :crash,
       :path,
       :crash_count,
       :storage_path)
""")

_query_update_pkg_data1 = rhnSQL.Statement("""
update rhnServerCrash
   set package_name_id = lookup_package_name(:pkg_name),
       package_evr_id = lookup_evr(:pkg_epoch, :pkg_version, :pkg_release, 'rpm')
 where id = :crash_id
""")

_query_update_pkg_data2 = rhnSQL.Statement("""
update rhnServerCrash
   set package_name_id = lookup_package_name(:pkg_name),
       package_evr_id = lookup_evr(:pkg_epoch, :pkg_version, :pkg_release, 'rpm'),
       package_arch_id = lookup_package_arch(:pkg_arch)
 where id = :crash_id
""")

_query_update_watched_items = """
update rhnServerCrash
   set %s = :filecontent
 where id = :crash_id
"""

_query_update_crash_count = """
update rhnServerCrash
   set count = :crash_count
 where server_id = :server_id and
       crash = :crash
"""

_query_get_crashfile_sizelimit = """
select crash_file_sizelimit
  from rhnOrgConfiguration
 where org_id = :org_id
"""

_query_set_crashfile_upload_flag = """
update rhnServerCrashFile
   set is_uploaded = 'Y'
 where id = (
       select scf.id as id
         from rhnServerCrashFile scf,
              rhnServerCrash sc
        where scf.crash_id = sc.id and
              scf.crash_id = :crash_id and
              sc.server_id = :server_id and
              scf.filename = :filename and
              scf.path = :path and
              scf.filesize = :filesize
       )
"""

_query_get_crash_reporting_settings = """
select crash_reporting_enabled
  from rhnOrgConfiguration
 where org_id = :org_id
"""

_query_get_crashfile_upload_settings = """
select crashfile_upload_enabled
  from rhnOrgConfiguration
 where org_id = :org_id
"""


class Abrt(rhnHandler):

    def __init__(self):
        rhnHandler.__init__(self)
        self.functions.append('create_crash')
        self.functions.append('update_crash_count')
        self.functions.append('upload_crash_file')
        self.functions.append('is_crashfile_upload_enabled')
        self.functions.append('get_crashfile_uploadlimit')

        self.watched_items = ['analyzer',
                              'architecture',
                              'cmdline',
                              'component',
                              'count',
                              'executable',
                              'kernel',
                              'reason',
                              'username',
                              'uuid']

    def _get_crash_id(self, server_id, crash):
        h = rhnSQL.prepare(_query_get_crash)
        h.execute(server_id=self.server_id, crash=crash)
        r = h.fetchall_dict()

        if (r is None):
            return None
        else:
            return r[0]['id']

    def _create_or_update_crash_file(self, server_id, crash_id, filename, path, filesize):
        insert_call = rhnSQL.Function("insert_crash_file", rhnSQL.types.NUMBER())
        return insert_call(crash_id, filename, path, filesize)

    def _update_package_data(self, crash_id, pkg_data):
        log_debug(1, "_update_package_data: %s, %s" % (crash_id, pkg_data))
        # Older versions of abrt used to store the package info in a single 'package' file
        if pkg_data and 'package' in pkg_data:
            (n, e, v, r) = parseRPMName(pkg_data['package'])
            if not all((n, e, v, r)):
                return 0

            h = rhnSQL.prepare(_query_update_pkg_data1)
            r = h.execute(
                crash_id=crash_id,
                pkg_name=n,
                pkg_epoch=e,
                pkg_version=v,
                pkg_release=r)
            rhnSQL.commit()

            return r

        for item in ['pkg_name', 'pkg_epoch', 'pkg_version', 'pkg_release', 'pkg_arch']:
            if not (item in pkg_data and pkg_data[item]):
                return 0

        h = rhnSQL.prepare(_query_update_pkg_data2)
        r = h.execute(
            crash_id=crash_id,
            pkg_name=pkg_data['pkg_name'],
            pkg_epoch=pkg_data['pkg_epoch'],
            pkg_version=pkg_data['pkg_version'],
            pkg_release=pkg_data['pkg_release'],
            pkg_arch=pkg_data['pkg_arch'])
        rhnSQL.commit()

        return r

    def _get_crashfile_sizelimit(self):
        h = rhnSQL.prepare(_query_get_crashfile_sizelimit)
        h.execute(org_id=self.server.server['org_id'])
        return h.fetchall_dict()[0]['crash_file_sizelimit']

    def _set_crashfile_upload_flag(self, server_id, crash_id, filename, path, filesize):
        h = rhnSQL.prepare(_query_set_crashfile_upload_flag)
        r = h.execute(
            server_id=server_id,
            crash_id=crash_id,
            filename=filename,
            path=path,
            filesize=filesize)
        rhnSQL.commit()

        return r

    def _is_crash_reporting_enabled(self, org_id):
        h = rhnSQL.prepare(_query_get_crash_reporting_settings)
        h.execute(org_id=org_id)
        r = h.fetchall_dict()

        if (r[0]['crash_reporting_enabled'] == 'Y'):
            return True
        else:
            return False

    def _is_crashfile_uploading_enabled(self, org_id):
        h = rhnSQL.prepare(_query_get_crashfile_upload_settings)
        h.execute(org_id=org_id)
        r = h.fetchall_dict()

        if (r[0]['crashfile_upload_enabled'] == 'Y'):
            return True
        else:
            return False

    def _check_crash_reporting_setting(self):
        if not self._is_crash_reporting_enabled(self.server.server['org_id']):
            log_debug(1, "Crash reporting is disabled for this server's organization.")
            raise rhnFault(5006)

    def create_crash(self, system_id, crash_data, pkg_data):
        self.auth_system(system_id)
        log_debug(1, self.server_id, crash_data, pkg_data)

        self._check_crash_reporting_setting()

        if not ('crash' in crash_data and 'path' in crash_data) or \
           not (crash_data['crash'] and crash_data['path']):
            log_debug(1, self.server_id, "The crash information is invalid or incomplete: %s" % str(crash_data))
            raise rhnFault(5000)

        server_org_id = self.server.server['org_id']
        server_crash_dir = get_crash_path(str(server_org_id), str(self.server_id), crash_data['crash'])
        if not server_crash_dir:
            log_debug(1, self.server_id, "Error composing crash directory path")
            raise rhnFault(5002)

        crash_id = self._get_crash_id(self.server_id, crash_data['crash'])
        log_debug(1, "crash_id: %s" % crash_id)

        if (crash_id is None):
            if 'count' not in crash_data:
                crash_data['count'] = 1

            h = rhnSQL.prepare(_query_create_crash)
            h.execute(
                server_id=self.server_id,
                crash=crash_data['crash'],
                path=crash_data['path'],
                crash_count=crash_data['count'],
                storage_path=server_crash_dir)
            rhnSQL.commit()
            self._update_package_data(self._get_crash_id(self.server_id, crash_data['crash']), pkg_data)
            return 1
        else:
            return 0

    def upload_crash_file(self, system_id, crash, crash_file):
        self.auth_system(system_id)
        self._check_crash_reporting_setting()

        required_keys = ['filename', 'path', 'filesize', 'filecontent', 'content-encoding']
        for k in required_keys:
            if k not in crash_file:
                log_debug(1, self.server_id, "The crash file data is invalid or incomplete: %s" % crash_file)
                raise rhnFault(5001, "Missing or invalid key: %s" % k)

        log_debug(1, self.server_id, crash, crash_file['filename'])

        server_org_id = self.server.server['org_id']
        server_crash_dir = get_crash_path(str(server_org_id), str(self.server_id), crash)
        if not server_crash_dir:
            log_debug(1, self.server_id, "Error composing crash directory path")
            raise rhnFault(5002)

        server_filename = get_crashfile_path(str(server_org_id),
                                             str(self.server_id),
                                             crash,
                                             crash_file['filename'])
        if not server_filename:
            log_debug(1, self.server_id, "Error composing crash file path")
            raise rhnFault(5003)

        if not crash_file['content-encoding'] == 'base64':
            log_debug(1, self.server_id, "Invalid content encoding: %s" % crash_file['content-encoding'])
            raise rhnFault(5004, "Invalid content encodig: %s" % crash_file['content-encoding'])

        crash_id = self._get_crash_id(self.server_id, crash)
        if not crash_id:
            log_debug(1, self.server_id, "No record for crash: %s" % crash)
            raise rhnFault(5005, "Invalid crash name: %s" % crash)

        # Create or update the crash file record in DB
        self._create_or_update_crash_file(self.server_id, crash_id, crash_file['filename'],
                                          crash_file['path'], crash_file['filesize'])
        rhnSQL.commit()

        # Create the file on filer
        if not self._is_crashfile_uploading_enabled(server_org_id):
            return 1
        filecontent = base64.decodestring(crash_file['filecontent'])
        claimed_filesize = crash_file['filesize']
        filesize = len(filecontent)
        sizelimit = self._get_crashfile_sizelimit()
        if (claimed_filesize > sizelimit or filesize > sizelimit) and sizelimit != 0:
            if filesize == 0:
                filesize = claimed_filesize
            log_debug(1, "The file [%s] size (%s bytes) is more than allowed (%s bytes), skipping."
                      % (crash_file['path'], filesize, sizelimit))
            return 0
        absolute_dir = os.path.join(CFG.MOUNT_POINT, server_crash_dir)
        absolute_file = os.path.join(absolute_dir, crash_file['filename'])

        if not os.path.exists(absolute_dir):
            log_debug(1, self.server_id, "Creating crash directory: %s" % absolute_dir)
            os.makedirs(absolute_dir)
            mode = stat.S_IRWXU | stat.S_IRWXG | stat.S_IROTH | stat.S_IXOTH
            os.chmod(absolute_dir, mode)
            os.chmod(os.path.dirname(os.path.normpath(absolute_dir)), mode)

        log_debug(1, self.server_id, "Creating crash file: %s" % absolute_file)
        f = open(absolute_file, 'w+')
        f.write(filecontent)
        f.close()

        self._set_crashfile_upload_flag(self.server_id, crash_id, crash_file['filename'],
                                        crash_file['path'], crash_file['filesize'])

        if crash_file['filename'] in self.watched_items:
            # 'username' contains an extra '\n' at the end
            if crash_file['filename'] == 'username':
                filecontent = filecontent.strip()
            st = rhnSQL.Statement(_query_update_watched_items % crash_file['filename'])
            h = rhnSQL.prepare(st)
            h.execute(filecontent=filecontent, crash_id=crash_id)
            rhnSQL.commit()

        return 1

    def update_crash_count(self, system_id, crash, crash_count):
        self.auth_system(system_id)

        log_debug(1, self.server_id, "Updating crash count for %s to %s" % (crash, crash_count))

        server_org_id = self.server.server['org_id']
        server_crash_dir = get_crash_path(str(server_org_id), str(self.server_id), crash)
        if not server_crash_dir:
            log_debug(1, self.server_id, "Error composing crash directory path")
            raise rhnFault(5002)

        h = rhnSQL.prepare(_query_update_crash_count)
        r = h.execute(
            crash_count=crash_count,
            server_id=self.server_id,
            crash=crash)
        rhnSQL.commit()

        if r == 0:
            log_debug(1, self.server_id, "No record for crash: %s" % crash)
            raise rhnFault(5005, "Invalid crash name: %s" % crash)

        absolute_dir = os.path.join(CFG.MOUNT_POINT, server_crash_dir)
        absolute_file = os.path.join(absolute_dir, 'count')

        log_debug(1, self.server_id, "Updating crash count file: %s" % absolute_file)
        f = open(absolute_file, 'w+')
        f.write(crash_count)
        f.close()

        return 1

    def is_crashfile_upload_enabled(self, system_id):
        self.auth_system(system_id)
        return self._is_crashfile_uploading_enabled(self.server.server['org_id'])

    def get_crashfile_uploadlimit(self, system_id):
        self.auth_system(system_id)
        return self._get_crashfile_sizelimit()
  0707010000017A000081B40000000000000000000000016290A0C100001AB6000000000000000000000000000000000000003400000000spacewalk-backend/server/handlers/xmlrpc/country.py   #
# Copyright (c) 2008--2016 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#
# states.py                                     - Abbreviations for countries.
#-----------------------------------------------------------------------------


country_to_iso = {
    'Afghanistan': 'AF',
    'Albania': 'AL',
    'Algeria': 'DZ',
    'American Samoa': 'AS',
    'Andorra': 'AD',
    'Angola': 'AO',
    'Anguilla': 'AI',
    'Antarctica': 'AQ',
    'Antigua and Barbuda': 'AG',
    'Argentina': 'AR',
    'Armenia': 'AM',
    'Aruba': 'AW',
    'Australia': 'AU',
    'Austria': 'AT',
    'Azerbaijan': 'AZ',
    'Bahamas': 'BS',
    'Bahrain': 'BH',
    'Bangladesh': 'BD',
    'Barbados': 'BB',
    'Belarus': 'BY',
    'Belgium': 'BE',
    'Belize': 'BZ',
    'Benin': 'BJ',
    'Bermuda': 'BM',
    'Bhutan': 'BT',
    'Bolivia': 'BO',
    'Bosnia and Herzegovina': 'BA',
    'Botswana': 'BW',
    'Bouvet Island': 'BV',
    'Brazil': 'BR',
    'British Indian Ocean Territory': 'IO',
    'Brunei Darussalam': 'BN',
    'Bulgaria': 'BG',
    'Burkina Faso': 'BF',
    'Burundi': 'BI',
    'Cambodia': 'KH',
    'Cameroon': 'CM',
    'Canada': 'CA',
    'Cape Verde': 'CV',
    'Cayman Islands': 'KY',
    'Central African Republic': 'CF',
    'Chad': 'TD',
    'Chile': 'CL',
    'China': 'CN',
    'Christmas Island': 'CX',
    'Colombia': 'CO',
    'Comoros': 'KM',
    'Congo': 'CG',
    'Cook Islands': 'CK',
    'Costa Rica': 'CR',
    'Cote d\'Ivoire': 'CI',
    'Croatia': 'HR',
    'Cyprus': 'CY',
    'Czech Republic': 'CZ',
    'Denmark': 'DK',
    'Djibouti': 'DJ',
    'Dominica': 'DM',
    'Dominican Republic': 'DO',
    'East Timor': 'TP',
    'Ecuador': 'EC',
    'Egypt': 'EG',
    'El Salvador': 'SV',
    'Equatorial Guinea': 'GQ',
    'Eritrea': 'ER',
    'Estonia': 'EE',
    'Ethiopia': 'ET',
    'Falkland Islands (Malvinas)': 'FK',
    'Faroe Island': 'FO',
    'Fiji': 'FJ',
    'Finland': 'FI',
    'France (European Territory)': 'FX',
    'France': 'FR',
    'France, Metropolitan': 'FR',
    'French Guiana': 'GF',
    'French Polynesia': 'PF',
    'Gabon': 'GA',
    'Gambia': 'GM',
    'Georgia': 'GE',
    'Germany': 'DE',
    'Ghana': 'GH',
    'Gibraltar': 'GI',
    'Greece': 'GR',
    'Greenland': 'GL',
    'Grenada': 'GD',
    'Guadeloupe': 'GP',
    'Guam': 'GU',
    'Guatemala': 'GT',
    'Guinea-Bissau': 'GW',
    'Guinea': 'GN',
    'Guyana': 'GY',
    'Haiti': 'HT',
    'Heard and McDonald Island': 'HM',
    'Honduras': 'HN',
    'Hong Kong': 'HK',
    'Hungary': 'HU',
    'Iceland': 'IS',
    'India': 'IN',
    'Indian': 'IN',
    'Indonesia': 'ID',
    'Ireland': 'IE',
    'Israel': 'IL',
    'Italy': 'IT',
    'Jamaica': 'JM',
    'Japan': 'JP',
    'Jordan': 'JO',
    'Kazakhstan': 'KZ',
    'Kenya': 'KE',
    'Korea, Republic of': 'KR',
    'Kuwait': 'KW',
    'Kyrgyzstan': 'KG',
    'Laos': 'LA',
    'Latvia': 'LV',
    'Lebanon': 'LB',
    'Lesoth': 'LS',
    'Liberia': 'LR',
    'Libyan Arab Jamahiriya': 'LY',
    'Liechtenstein': 'LI',
    'Lithuania': 'LT',
    'Lithuania': 'LX',
    'Luxembourg': 'LU',
    'Macau': 'MO',
    'Macedonia': 'MK',
    'Madagascar': 'MG',
    'Malawi': 'MW',
    'Malaysia': 'MY',
    'Maldives': 'MV',
    'Mali': 'ML',
    'Malta': 'MT',
    'Marshall Islands': 'MH',
    'Martinique': 'MQ',
    'Mauritania': 'MR',
    'Mauritius': 'MU',
    'Mexico': 'MX',
    'Micronesia (Federated States of)': 'FM',
    'Moldova': 'MD',
    'Moldova, Republic of': 'MD',
    'Monaco': 'MC',
    'Mongolia': 'MN',
    'Montenegro': 'ME',
    'Montserrat': 'MS',
    'Morocco': 'MA',
    'Mozambique': 'MZ',
    'Namibia': 'NA',
    'Nederland': 'NL',
    'Nepal': 'NP',
    'Netherlands Antilles': 'AN',
    'Netherlands': 'NL',
    'New Caledonia': 'NC',
    'New Zealand': 'NZ',
    'Nicaragua': 'NI',
    'Nigeria': 'NG',
    'Niger': 'NE',
    'Norway': 'NO',
    'Oman': 'OM',
    'Pakistan': 'PK',
    'Palau': 'PW',
    'Panama': 'PA',
    'Papua New Guinea': 'PG',
    'Paraguay': 'PY',
    'Peru': 'PE',
    'Philippines': 'PH',
    'Pitcairn': 'PN',
    'Poland': 'PL',
    'Portugal': 'PT',
    'Puerto Rico': 'PR',
    'Qatar': 'QA',
    'Reunion Island': 'RE',
    'Romania': 'RO',
    'Russian Federation': 'RU',
    'Rwanda': 'RW',
    'Saint Kitts and Nevis': 'KN',
    'Saint Lucia': 'LC',
    'Saint Pierre and Miquelon': 'PM',
    'Saint Vincent and the Grenadines': 'VC',
    'Samoa': 'WS',
    'San Marino': 'SM',
    'Saudi Arabia': 'SA',
    'Serbia': 'RS',
    'Serbia and Montenegro': 'CS',
    'Senegal': 'SN',
    'Seychelles': 'SC',
    'Sierra Leone': 'SL',
    'Singapore': 'SG',
    'Slovakia': 'SK',
    'Slovenia': 'SI',
    'Solomon Islands': 'SB',
    'Somalia': 'SO',
    'South Africa': 'ZA',
    'Spain': 'ES',
    'Sri Lanka': 'LK',
    'Sudan': 'SD',
    'Suriname': 'SR',
    'Svalbard & Jan Mayen Island': 'SJ',
    'Swaziland': 'SZ',
    'Sweden': 'SE',
    'Switzerland': 'CH',
    'Syrian Arab Republic': 'SY',
    'Taiwan, Republic of': 'TW',
    'Tanzania, United Republic of': 'TZ',
    'Thailand': 'TH',
    'Togo': 'TG',
    'Tonga': 'TO',
    'Trinidad and Tobago': 'TT',
    'Tunisia': 'TN',
    'Turkey': 'TR',
    'Turkmenistan': 'TM',
    'Turks and Caicos Islands': 'TC',
    'Tuvalu': 'TV',
    'Uganda': 'UG',
    'Ukraine': 'UA',
    'United Arab Emirates': 'AE',
    'United Kingdom': 'GB',
    'United States': 'US',
    'Uruguay': 'UY',
    'US Minor Outlying Islands': 'UM',
    'Uzbekistan': 'UZ',
    'Vanuatu': 'VU',
    'Vatican City State (Holy See)': 'VA',
    'Venezuela': 'VE',
    'Vietnam': 'VN',
    'Virgin Islands (British)': 'VG',
    'Virgin Islands (U.S.)': 'VI',
    'Wallis and Futuna': 'WF',
    'Yemen': 'YE',
    'Yugoslavia': 'YU',
    'Zaire': 'ZR',
    'Zambia': 'ZM',
    'Zimbabwe': 'ZW',
}


t9_countries = {
    "Korea, Democratic People's Republic of": 'KP',
    'North Korea': 'KP',
    'Afghanistan': 'AF',
    'Cuba': 'CU',
    'Iran': 'IR',
    'Iraq': 'IQ',
    'Islamic Republic of Iran': 'IR',
    'Sudan': 'SD',
    'Syrian Arab Republic': 'AY'
}


#-----------------------------------------------------------------------------
if __name__ == "__main__":
    print("You can not run this module by itself")
    import sys
    sys.exit(-1)
#-----------------------------------------------------------------------------
  0707010000017B000081B40000000000000000000000016290A0C100002E53000000000000000000000000000000000000003300000000spacewalk-backend/server/handlers/xmlrpc/errata.py    #
# Copyright (c) 2008--2016 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#
# Implements the errata.* functions for XMLRPC
#

import re

# common modules imports
from spacewalk.common.rhnTranslate import _
from spacewalk.common import rhnFlags
from uyuni.common.rhnLib import parseRPMName
from spacewalk.common.rhnLog import log_debug, log_error
from spacewalk.common.rhnException import rhnFault

# server modules imports
from spacewalk.server.rhnHandler import rhnHandler
from spacewalk.server import rhnSQL, rhnCapability


class Errata(rhnHandler):

    """ Errata class --- retrieve (via xmlrpc) package errata. """

    def __init__(self):
        rhnHandler.__init__(self)
        # Exposed Errata functions:
        self.functions = []
        self.functions.append('GetByPackage')      # Clients v1-
        self.functions.append('getPackageErratum')  # Clients v2+
        self.functions.append('getErrataInfo')     # clients v2+
        self.functions.append('getErrataNamesById')

    def GetByPackage(self, pkg, osRel):
        """ Clients v1- Get errata for a package given "n-v-r" format
            IN:  pkg:   "n-v-r" (old client call)
                        or [n,v,r]
                 osRel: OS release
            RET: a hash by errata that applies to this package
                 (ie, newer packages are available). We also limit the scope
                 for a particular osRel.
        """
        if type(pkg) == type(''):  # Old client support.
            pkg = parseRPMName(pkg)
        log_debug(1, pkg, osRel)
        # Stuff the action in the headers:
        transport = rhnFlags.get('outputTransportOptions')
        transport['X-RHN-Action'] = 'GetByPackage'

        # now look up the errata
        if type(pkg[0]) != type(''):
            log_error("Invalid package name: %s %s" % (type(pkg[0]), pkg[0]))
            raise rhnFault(30, _("Expected a package name, not: %s") % pkg[0])
        # bug#186996:adding synopsis field to advisory info
        # client side changes are needed to access this data.
        h = rhnSQL.prepare("""
            select distinct
                    e.id            errata_id,
                    e.advisory_type errata_type,
                    e.advisory      advisory,
                    e.topic         topic,
                    e.description   description,
                    e.synopsis      synopsis
            from
                    rhnErrata e,
                    rhnPublicChannelFamily pcf,
                    rhnChannelFamilyMembers cfm,
                    rhnErrataPackage ep,
                    rhnChannelPackage cp,
                    rhnChannelErrata ce,
                    rhnDistChannelMap dcm,
                    rhnPackage p
            where    1=1
                and p.name_id = LOOKUP_PACKAGE_NAME(:name)
                -- map to a channel
                and p.id = cp.package_id
                and cp.channel_id = dcm.channel_id
                and dcm.release = :dist
                and dcm.org_id is null
                -- map to an errata as well
                and p.id = ep.package_id
                and ep.errata_id = e.id
                -- the errata and the channel have to be linked
                and ce.channel_id = cp.channel_id
                -- and the channel has to be public
                and cp.channel_id = cfm.channel_id
                and cfm.channel_family_id = pcf.channel_family_id
                -- and get the erratum
                and e.id = ce.errata_id
        """)
        h.execute(name=pkg[0], dist=str(osRel))
        return self._sanitize_result(h)

    def getPackageErratum(self, system_id, pkg):
        """ Clients v2+ - Get errata for a package given [n,v,r,e,a,...] format

            Sing-along: You say erratum(sing), I say errata(pl)! :)
            IN:  pkg:   [n,v,r,e,s,a,ch,...]
            RET: a hash by errata that applies to this package
        """
        log_debug(5, system_id, pkg)
        if type(pkg) != type([]) or len(pkg) < 7:
            log_error("Got invalid package specification: %s" % str(pkg))
            raise rhnFault(30, _("Expected a package, not: %s") % pkg)
        # Authenticate and decode server id.
        self.auth_system(system_id)
        # log the entry
        log_debug(1, self.server_id, pkg)
        # Stuff the action in the headers:
        transport = rhnFlags.get('outputTransportOptions')
        transport['X-RHN-Action'] = 'getPackageErratum'

        name, ver, rel, epoch, arch, size, channel = pkg[:7]
        if epoch in ['', 'none', 'None']:
            epoch = None

        # XXX: also, should arch/size/channel ever be used?
        # bug#186996:adding synopsis field to errata info
        # client side changes are needed to access this data.
        h = rhnSQL.prepare("""
        select distinct
            e.id            errata_id,
            e.advisory_type errata_type,
            e.advisory      advisory,
            e.topic         topic,
            e.description   description,
            e.synopsis      synopsis
        from
            rhnServerChannel sc,
            rhnChannelPackage cp,
            rhnChannelErrata ce,
            rhnErrata e,
            rhnErrataPackage ep,
            rhnPackage p
        where
            p.name_id = LOOKUP_PACKAGE_NAME(:name)
        and p.evr_id = LOOKUP_EVR(:epoch, :ver, :rel, (select at.label from rhnArchType at join rhnServerArch sa ON sa.arch_type_id = at.id join rhnServer s on s.server_arch_id = sa.id where s.id = :server_id))
        -- map to a channel
        and p.id = cp.package_id
        -- map to an errata as well
        and p.id = ep.package_id
        and ep.errata_id = e.id
        -- the errata and the channel have to be linked
        and e.id = ce.errata_id
        and ce.channel_id = cp.channel_id
        -- and the server has to be subscribed to the channel
        and cp.channel_id = sc.channel_id
        and sc.server_id = :server_id
        """)  # " emacs sucks
        h.execute(name=name, ver=ver, rel=rel, epoch=epoch,
                  server_id=str(self.server_id))
        return self._sanitize_result(h)

    def _sanitize_result(self, h):
        ret = []
        # sanitize the results for display in the clients
        while 1:
            row = h.fetchone_dict()
            if row is None:
                break
            for k in list(row.keys()):
                if row[k] is None:
                    row[k] = "N/A"
            ret.append(row)

        return ret

    # I don't trust this errata_id business, but chip says "trust me"
    def getErrataInfo(self, system_id, errata_id):
        log_debug(5, system_id, errata_id)
        # Authenticate the server certificate
        self.auth_system(system_id)
        # log this thing
        log_debug(1, self.server_id, errata_id)

        client_caps = rhnCapability.get_client_capabilities()
        log_debug(3, "Client Capabilities", client_caps)
        multiarch = 0
        cap_info = None
        if client_caps and 'packages.update' in client_caps:
            cap_info = client_caps['packages.update']
        if cap_info and int(cap_info['version']) > 1:
            multiarch = 1

        statement = """
        select distinct
               pn.name,
               pe.epoch,
               pe.version,
               pe.release,
               pa.label arch
        from
               rhnPackageName pn,
               rhnPackageEVR pe,
               rhnPackage p,
               rhnPackageArch pa,
               rhnChannelPackage cp,
               rhnServerChannel sc,
               rhnErrataPackage ep
        where
                   ep.errata_id = :errata_id
               and ep.package_id = p.id
               and p.name_id = pn.id
               and p.evr_id = pe.id
               and p.package_arch_id = pa.id
               and sc.server_id = :server_id
               and sc.channel_id = cp.channel_id
               and cp.package_id = p.id
        """

        h = rhnSQL.prepare(statement)
        h.execute(errata_id=errata_id, server_id=self.server_id)

        packages = h.fetchall_dict()
        ret = []
        if not packages:
            return []

        for package in packages:
            if package['name'] is not None:
                if package['epoch'] is None:
                    package['epoch'] = ""

                pkg_arch = ''
                if multiarch:
                    pkg_arch = package['arch'] or ''
                ret.append([package['name'],
                            package['version'],
                            package['release'],
                            package['epoch'],
                            pkg_arch])
        return ret

    def getErrataNamesById(self, system_id, errata_ids):
        """Return a list of RhnErrata tuples of (id, advisory_name)

        IN: system_id - id of the system requesting this info (must be
            subscribed to the channel that contains the erratas)
            errata_ids - a list of RhnErrata ids

        Only the erratas that belong to channels that the client system
        is subscribed to are returned. If no erratas match this
        criterion, then an empty list is returned.

        """
        log_debug(5, system_id, errata_ids)
        self.auth_system(system_id)

        log_debug(1, self.server_id, errata_ids)

        sql_list, bound_vars = _bind_list(errata_ids)
        bound_vars.update({'server_id': self.server_id})

        sql = """SELECT DISTINCT e.id, e.advisory_name, c.update_tag
                 FROM rhnErrata e,
                      rhnServerChannel sc,
                      rhnChannelErrata ce,
                      rhnChannel c
                 WHERE e.id in (%s) AND
                       sc.server_id = :server_id AND
                       e.id = ce.errata_id AND
                       sc.channel_id = c.id AND
                       ce.channel_id = c.id"""
        h = rhnSQL.prepare(sql % sql_list)
        h.execute(**bound_vars)
        errata_list = h.fetchall()
        result = []
        regexp = re.compile(r"^([C-Z][A-Z]-)*SUSE-(.*)$")
        for eid, name, update_tag in errata_list:
            if update_tag:
                if regexp.match(name):
                    name = name.replace("SUSE", "SUSE-%s" % update_tag, 1)
                else:
                    name = "%s-%s" % (update_tag, name)
            result.append((eid, name))
        log_debug(2, self.server_id, errata_ids, result)
        return result


def _bind_list(elems):
    """Transform a list into an sql list with bound parameters

    IN: elems - a list of elements

    Returns a tuple of:
     sql_list - a comma separated list of parameter numbers: 'p_0, p_1, p_2'
     bound_vars - a dict of parameter names and values {'p_0': 42, 'p_1': 34}

    """
    bound_names = []
    bound_vars = {}
    for i, elem in enumerate(elems):
        bound_vars['p_%s' % i] = elem
        bound_names.append(':p_%s' % i)
    sql_list = ', '.join(bound_names)
    return sql_list, bound_vars

#-----------------------------------------------------------------------------
if __name__ == "__main__":
    print("You can not run this module by itself")
    import sys
    sys.exit(-1)
#-----------------------------------------------------------------------------
 0707010000017C000081B40000000000000000000000016290A0C100001484000000000000000000000000000000000000003600000000spacewalk-backend/server/handlers/xmlrpc/getMethod.py # Retrieve action method name given queued action information.
#
# Client code for Update Agent
#
# Copyright (c) 2008--2016 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#
#
# An allowable xmlrpc method is retrieved given a base location, a
# hierarchical route to the class/module, and method name.
#

import string
import os
import sys
from uyuni.common.usix import ClassType, raise_with_tb
from distutils.sysconfig import get_python_lib

class GetMethodException(Exception):

    """Exception class"""
    pass


def sanity(methodNameComps):
    """ Verifies if all the components have proper names."""
    # Allowed characters in each string
    alpha = string.ascii_lowercase + string.ascii_uppercase
    allowedChars = alpha + string.digits + '_'
    for comp in methodNameComps:
        if not len(comp):
            raise GetMethodException("Empty method component")
        for c in comp:
            if c not in allowedChars:
                raise GetMethodException(
                    "Invalid character '%s' in the method name" % c)
        # Can only begin with a letter
        if comp[0] not in alpha:
            raise GetMethodException(
                "Method names should start with an alphabetic character")


def getMethod(methodName, baseClass):
    """ Retreive method given methodName, path to base of tree, and class/module
        route/label.
    """
    # First split the method name
    methodNameComps = ['spacewalk'] + baseClass.split('.') + methodName.split('.')
    # Sanity checks
    sanity(methodNameComps)
    # Build the path to the file
    path = get_python_lib()
    for index in range(len(methodNameComps)):
        comp = methodNameComps[index]
        path = "%s/%s" % (path, comp)
        # If this is a directory, fine...
        if os.path.isdir(path):
            # Okay, go on
            continue
        # Try to load this as a file
        for extension in ['py', 'pyc', 'pyo']:
            if os.path.isfile("%s.%s" % (path, extension)):
                # Yes, this is a file
                break
        else:
            # No dir and no file. Die
            raise GetMethodException("Action %s could not be found" % methodName)
        break
    else:
        # Only directories. This can't happen
        raise GetMethodException("Very wrong")

    # The position of the file
    fIndex = index + 1
    # Now build the module name
    modulename = '.'.join(methodNameComps[:fIndex])
    # And try to import it
    try:
        actions = __import__(modulename)
    except ImportError:
        raise_with_tb(GetMethodException("Could not import module %s" % modulename), sys.exc_info()[2])

    className = actions
    # Iterate through the list of components and try to load that specific
    # module/method
    for index in range(1, len(methodNameComps)):
        comp = methodNameComps[index]
        if index < fIndex:
            # This is a directory or a file we have to load
            if not hasattr(className, comp):
                # Hmmm... Not there
                raise GetMethodException("Class %s has no attribute %s" % (
                    '.'.join(methodNameComps[:index]), comp))
            className = getattr(className, comp)
            # print type(className)
            continue
        # A file or method
        # We look for the special __rhnexport__ array
        if not hasattr(className, '__rhnexport__'):
            raise GetMethodException("Class %s is not valid" % \
                                     '.'.join(methodNameComps[:index]))
        export = getattr(className, '__rhnexport__')
        if comp not in export:
            raise GetMethodException("Class %s does not export '%s'" % (
                '.'.join(methodNameComps[:index]), comp))
        className = getattr(className, comp)
        if type(className) is ClassType:
            # Try to instantiate it
            className = className()
        # print type(className)

    return className


#-----------------------------------------------------------------------------
if __name__ == '__main__':
    # Two valid ones and a bogus one
    methods = [
        'a.b.c.d.e.f',
        'a.b.c.d.e.foo.h',
        'a.b.c.d.e.g.h',
        'a.b.d.d.e.g.h',
        'a.b.d.d._e.g.h',
        'a.b.d.d.e_.g.h',
        'a.b.d.d.e-.g.h',
        'a.b.d.d..g.h',
    ]

    for m in methods:
        print(("----Running method %s: " % m))
        try:
            method = getMethod(m, 'Actions')
        except GetMethodException:
            e = sys.exc_info()[1]
            print(("Error getting the method %s: %s" % (m , e.args)))
        else:
            method()
#-----------------------------------------------------------------------------
0707010000017D000081B40000000000000000000000016290A0C100000350000000000000000000000000000000000000003800000000spacewalk-backend/server/handlers/xmlrpc/get_handler.py   #
# Copyright (c) 2008--2015 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#
#
# GET handler for /XMLRPC
#

from spacewalk.server import apacheRequest


class GetHandler(apacheRequest.GetHandler):

    """ handles the GET requests
                Inherit the behaviour from the parent class
        """
    pass
0707010000017E000081B40000000000000000000000016290A0C100002A9C000000000000000000000000000000000000003200000000spacewalk-backend/server/handlers/xmlrpc/proxy.py #
# Copyright (c) 2008--2015 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#

# system module import
import time

from rhn.UserDictCase import UserDictCase

# common module imports
from rhn.UserDictCase import UserDictCase
from spacewalk.common import rhnFlags
from spacewalk.common.rhnLog import log_debug, log_error
from spacewalk.common.rhnConfig import CFG
from spacewalk.common.rhnException import rhnFault
from spacewalk.common.rhnTranslate import _

# local module imports
from spacewalk.server.rhnLib import computeSignature
from spacewalk.server.rhnHandler import rhnHandler
from spacewalk.server import rhnServer, rhnSQL, apacheAuth, rhnPackage, rhnChannel

# a class that provides additional authentication support for the
# proxy functions


class rhnProxyHandler(rhnHandler):

    def __init__(self):
        rhnHandler.__init__(self)

    def auth_system(self, system_id):
        """ System authentication. We override the standard function because
            we need to check additionally if this system_id is entitled for
            proxy functionality.
        """
        log_debug(3)
        server = rhnHandler.auth_system(self, system_id)
        # if it did not blow up, we have a valid server. Check proxy
        # entitlement.
        # XXX: this needs to be moved out of the rhnServer module,
        # possibly in here
        h = rhnSQL.prepare("""
        select 1
        from rhnProxyInfo pi
        where pi.server_id = :server_id
        """)
        h.execute(server_id=self.server_id)
        row = h.fetchone_dict()
        if not row:
            # we require entitlement for this functionality
            log_error("Server not entitled for Proxy", self.server_id)
            raise rhnFault(1002, _(
                'SUSE Manager Proxy service not enabled for server profile: "%s"')
                % server.server["name"])
        # we're fine...
        return server

    def auth_client(self, token):
        """ Authenticate a system based on the same authentication tokens
            the client is sending for GET requests
        """
        log_debug(3)
        # Build a UserDictCase out of the token
        dict = UserDictCase(token)
        # Set rhnFlags so that we can piggyback on apacheAuth's auth_client
        rhnFlags.set('AUTH_SESSION_TOKEN', dict)

        # XXX To clean up apacheAuth.auth_client's logging, this is not about
        # GET requests
        result = apacheAuth.auth_client()

        if not result:
            raise rhnFault(33, _("Invalid session key"))

        log_debug(4, "Client auth OK")
        # We checked it already, so we're sure it's there
        client_id = dict['X-RHN-Server-Id']

        server = rhnServer.search(client_id)
        if not server:
            raise rhnFault(8, _("This server ID no longer exists"))
        # XXX: should we check if the username still has access to it?
        # probably not, because there is no known good way we can
        # update the server system_id on the client side when
        # permissions change... Damn it. --gafton
        self.server = server
        self.server_id = client_id
        self.user = dict['X-RHN-Auth-User-Id']
        return server


class Proxy(rhnProxyHandler):

    """ this is the XML-RPC receiver for proxy calls """

    def __init__(self):
        log_debug(3)
        rhnProxyHandler.__init__(self)
        self.functions.append('package_source_in_channel')
        self.functions.append('login')
        self.functions.append('listAllPackagesKickstart')
        self.functions.append('getKickstartChannel')
        self.functions.append('getKickstartOrgChannel')
        self.functions.append('getKickstartSessionChannel')
        self.functions.append('getKickstartChildChannel')
        self.functions.append('getTinyUrlChannel')
        self.functions.append('checkTokenValidity')

    # Method to force a check of the client's auth token.
    # Proxy may call this if it does not recognize the token, which may
    # happen if the proxy is load-balanced.
    def checkTokenValidity(self, token, systemid):
        log_debug(5, token, systemid)
        # authenticate that this request is initiated from a proxy
        try:
            self.auth_system(systemid)
            server = self.auth_client(token) # sets self.server_id
        except rhnFault:
            # A Fault means that something did not auth. Either the caller
            # is not a proxy or the token is not valid, return false.
            return False
        # Proxy has to calculate new proxy-clock-skew, and needs channel info
        ret = {}
        ret['X-RHN-Auth-Server-Time'] = str(time.time())
        channels = rhnChannel.getSubscribedChannels(self.server_id)
        ret['X-RHN-Auth-Channels'] = channels
        return ret

    def package_source_in_channel(self, package, channel, auth_token):
        """ Validates the client request for a source package download """
        log_debug(3, package, channel)
        server = self.auth_client(auth_token)
        return rhnPackage.package_source_in_channel(self.server_id,
                                                    package, channel)

    def login(self, system_id):
        """ Login routine for the proxy

            Return a formatted string of session token information as regards
            an Spacewalk Proxy.  Also sets this information in the headers.

            NOTE: design description for the auth token format and how it is
               is used is well documented in the proxy/broker/rhnProxyAuth.py
               code.
        """
        log_debug(5, system_id)
        # Authenticate. We need the user record to be able to generate
        # auth tokens
        self.load_user = 1
        self.auth_system(system_id)
        # log the entry
        log_debug(1, self.server_id)
        rhnServerTime = str(time.time())
        expireOffset = str(CFG.PROXY_AUTH_TIMEOUT)
        signature = computeSignature(CFG.SECRET_KEY, self.server_id, self.user,
                                     rhnServerTime, expireOffset)

        token = '%s:%s:%s:%s:%s' % (self.server_id, self.user, rhnServerTime,
                                    expireOffset, signature)

        # NOTE: for RHN Proxies of version 3.1+ tokens are passed up in a
        #       multi-valued header with HOSTNAME tagged onto the end of the
        #       token, so, it looks something like this:
        #           x-rhn-proxy-auth: 'TOKEN1:HOSTNAME1,TOKEN2:HOSTNAME2'
        #       This note is only that -- a "heads up" -- in case anyone gets
        #       confused.

        # Push this value into the headers so that the proxy can
        # intercept and cache it without parsing the xmlrpc.
        transport = rhnFlags.get('outputTransportOptions')
        transport['X-RHN-Action'] = 'login'
        transport['X-RHN-Proxy-Auth'] = token
        return token

    def listAllPackagesKickstart(self, channel, system_id):
        """ Creates and/or serves up a cached copy of all the packages for
        this channel, including checksum information.
        """
        log_debug(5, channel)
        # authenticate that this request is initiated from a proxy
        self.auth_system(system_id)

        packages = rhnChannel.list_all_packages_checksum(channel)

        # transport options...
        rhnFlags.set("compress_response", 1)
        return packages

    def getKickstartChannel(self, kickstart, system_id):
        """ Gets channel information for this kickstart tree"""
        log_debug(5, kickstart)
        # authenticate that this request is initiated from a proxy
        self.auth_system(system_id)
        return self.__getKickstartChannel(kickstart)

    def getKickstartOrgChannel(self, kickstart, org_id, system_id):
        """ Gets channel information for this kickstart tree"""
        log_debug(5, kickstart, org_id)
        # authenticate that this request is initiated from a proxy
        self.auth_system(system_id)
        ret = rhnChannel.getChannelInfoForKickstartOrg(kickstart, org_id)
        return self.__getKickstart(kickstart, ret)

    def getKickstartSessionChannel(self, kickstart, session, system_id):
        """ Gets channel information for this kickstart tree"""
        log_debug(5, kickstart, session)
        # authenticate that this request is initiated from a proxy
        self.auth_system(system_id)
        return self.__getKickstartSessionChannel(kickstart, session)

    def getKickstartChildChannel(self, kickstart, child, system_id):
        """ Gets channel information for this kickstart tree"""
        log_debug(5, kickstart, child)
        # authenticate that this request is initiated from a proxy
        self.auth_system(system_id)
        if (hasattr(CFG, 'KS_RESTRICT_CHILD_CHANNELS') and
                CFG.KS_RESTRICT_CHILD_CHANNELS):
            return getKickstartChannel(kickstart)

        ret = rhnChannel.getChildChannelInfoForKickstart(kickstart, child)
        return self.__getKickstart(kickstart, ret)

    def getTinyUrlChannel(self, tinyurl, system_id):
        """ Gets channel information for this tinyurl"""
        log_debug(5, tinyurl)
        # authenticate that this request is initiated from a proxy
        self.auth_system(system_id)
        ret = rhnChannel.getChannelInfoForTinyUrl(tinyurl)
        if not ret or not 'url' in ret or len(ret['url'].split('/')) != 6:
            raise rhnFault(40,
                           "could not find any data on tiny url '%s'" % tinyurl)

        # tiny urls are always for kickstart sessions
        args = ret['url'].split('/')
        return self.__getKickstartSessionChannel(args[-1], args[-2])


#-----------------------------------------------------------------------------

    def __getKickstartChannel(self, kickstart):
        ret = rhnChannel.getChannelInfoForKickstart(kickstart)
        return self.__getKickstart(kickstart, ret)

    def __getKickstartSessionChannel(self, kickstart, session):
        ret = rhnChannel.getChannelInfoForKickstartSession(session)

        if not ret:
            return self.__getKickstartChannel(kickstart)
        return self.__getKickstart(kickstart, ret)

    def __getKickstart(self, kickstart, ret):
        if not ret:
            raise rhnFault(40,
                           "could not find any data on kickstart '%s'" % kickstart)
        return ret
0707010000017F000081B40000000000000000000000016290A0C1000076F9000000000000000000000000000000000000003200000000spacewalk-backend/server/handlers/xmlrpc/queue.py # Queue functions on the server side.
#
# Copyright (c) 2008--2016 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#

import sys
import time
try:
    #  python 2
    import xmlrpclib
except ImportError:
    #  python3
    import xmlrpc.client as xmlrpclib

from uyuni.common.usix import IntType, TupleType, UnicodeType, raise_with_tb

# Global modules
from spacewalk.common import rhnFlags
from spacewalk.common.rhnLog import log_debug, log_error
from spacewalk.common.rhnConfig import CFG
from spacewalk.common.rhnException import rhnFault
from spacewalk.common.rhnTranslate import _
from spacewalk.common.rhnTB import Traceback
from spacewalk.server.rhnHandler import rhnHandler
from spacewalk.server import rhnSQL, rhnCapability, rhnAction
from spacewalk.server.rhnLib import InvalidAction, EmptyAction, ShadowAction
from spacewalk.server.rhnServer import server_kickstart

from . import getMethod


class Queue(rhnHandler):

    """ XMLRPC queue functions that we will provide for the outside world. """

    def __init__(self):
        """ Add a list of functions we are willing to server out. """
        rhnHandler.__init__(self)
        self.functions.append('get')
        self.functions.append('get_future_actions')
        self.functions.append('length')
        self.functions.append('submit')
        self.functions.append('update_status')

        # XXX I am not proud of this. There should be a generic way to map
        # the client's error codes into success status codes
        self.action_type_completed_codes = {
            'errata.update': {
                39: None,
            },
        }

    def __getV1(self, action):
        """ Fetches old queued actions for the client version 1. """
        log_debug(3, self.server_id)
        actionId = action['id']
        method = action["method"]
        if method == 'packages.update':
            xml = self.__packageUpdate(actionId)
        elif method == 'errata.update':
            xml = self.__errataUpdate(actionId)
        elif method == 'hardware.refresh_list':
            xml = xmlrpclib.dumps(("hardware",), methodname="client.refresh")
        elif method == 'packages.refresh_list':
            xml = xmlrpclib.dumps(("rpmlist",), methodname="client.refresh")
        else:  # Unrecognized, skip
            raise InvalidAction("Action method %s unsupported by "
                                "Update Agent Client" % method)
        # all good
        return {'id': actionId, 'version': 1, 'action': xml}

    def __getV2(self, action, dry_run=0):
        """ Fetches queued actions for the clients version 2+. """
        log_debug(3, self.server_id)
        # Get the root dir of this install
        try:
            method = getMethod.getMethod(action['method'],
                                         'server.action')
        except getMethod.GetMethodException:
            Traceback("queue.get V2")
            raise_with_tb(EmptyAction("Could not get a valid method for %s" % (
                action['method'],)), sys.exc_info()[2])
        # Call the method
        result = method(self.server_id, action['id'], dry_run)
        if result is None:
            # None are mapped to the empty list
            result = ()
        elif not isinstance(result, TupleType):
            # Everything other than a tuple is wrapped in a tuple
            result = (result, )

        xmlblob = xmlrpclib.dumps(result, methodname=action['method'])
        log_debug(5, "returning xmlblob for action", xmlblob)
        return {
            'id': action['id'],
            'action': xmlblob,
            'version': action['version'],
        }

    def __update_status(self, status):
        """ Update the runnng kernel and the last boot values for this
            server from the status dictionary passed on queue checkin.

            Record last running kernel and uptime.  Only update
            last_boot if it has changed by more than five seconds. We
            don't know the timezone the server is in. or even if its
            clock is right, but we do know it can properly track seconds
             since it rebooted, and use our own clocks to keep proper
            track of the actual time.
        """

        if 'uname' in status:
            kernelver = status['uname'][2]
            if kernelver != self.server.server["running_kernel"]:
                self.server.server["running_kernel"] = kernelver

        # XXX:We should be using Oracle's sysdate() for this management
        # In the case of multiple app servers in mutiple time zones all the
        # results are skewed.
        if 'uptime' in status:
            uptime = status['uptime']
            if isinstance(uptime, type([])) and len(uptime):
                # Toss the other values. For now
                uptime = uptime[0]
                try:
                    uptime = float(uptime)
                except ValueError:
                    # Wrong value passed by the client
                    pass
                else:
                    last_boot = time.time() - uptime
                    if abs(last_boot - self.server.server["last_boot"]) > 5:
                        self.server.server["last_boot"] = last_boot
                        self.__set_reboot_action_to_succcess()

        # this is smart enough to do a NOOP if nothing changed.
        self.server.server.save()

    def __set_reboot_action_to_succcess(self):
        h = rhnSQL.prepare("""
            update rhnServerAction
            set status = 2
            where server_id = :server_id
            and action_id in (
                    select sa.action_id
                    from rhnServerAction sa
                    join rhnAction a on sa.action_id = a.id
                    join rhnActionType at on a.action_type = at.id
                   where sa.server_id = :server_id
                     and sa.status = 1
                     and at.label = 'reboot.reboot'
            )
        """)
        h.execute(server_id=self.server_id)

    def __should_snapshot(self):
        log_debug(4, self.server_id, "determining whether to snapshot...")

        entitlements = self.server.check_entitlement()
        if "enterprise_entitled" not in entitlements:
            return 0

        # ok, take the snapshot before attempting this action
        return 1

    def _invalidate_child_actions(self, action_id):
        f_action_ids = rhnAction.invalidate_action(self.server_id, action_id)
        for f_action_id in f_action_ids:
            # Invalidate any kickstart session that depends on this action
            server_kickstart.update_kickstart_session(self.server_id,
                                                      f_action_id, action_status=3, kickstart_state='failed',
                                                      next_action_type=None)
        return f_action_ids

    def _invalidate_failed_prereq_actions(self):
        h = rhnSQL.prepare("""
            select sa.action_id, a.prerequisite
              from rhnServerAction sa, rhnAction a
             where sa.server_id = :server_id
               and sa.action_id = a.id
               and sa.status in (0, 1) -- Queued or picked up
               and a.prerequisite is not null
               and exists (
                   select 1
                     from rhnServerAction
                    where server_id = sa.server_id
                      and action_id = a.prerequisite
                      and status = 3 -- failed
               )
        """)

        h.execute(server_id=self.server_id)
        while 1:
            row = h.fetchone_dict()
            if not row:
                break

            action_id, prereq_action_id = row['action_id'], row['prerequisite']

            self._invalidate_child_actions(action_id)
    _query_future_enabled = rhnSQL.Statement("""
        select staging_content_enabled
          from rhnOrgConfiguration oc,
               rhnServer s
         where s.org_id = oc.org_id
           and s.id = :server_id
    """)

    def _future_actions_enabled(self):
        """ Returns true if staging content is enabled for this system """
        h = rhnSQL.prepare(self._query_future_enabled)
        h.execute(server_id=self.server_id)
        row = h.fetchone_dict()
        log_debug(4, row["staging_content_enabled"])
        return row["staging_content_enabled"] == "Y"

    _query_queue_future = rhnSQL.Statement("""
                    select sa.action_id id, a.version,
                           sa.remaining_tries, at.label as method,
                           at.unlocked_only,
                           a.prerequisite
                      from rhnServerAction sa,
                           rhnAction a,
                           rhnActionType at
                     where sa.server_id = :server_id
                       and sa.action_id = a.id
                       and a.action_type = at.id
                       and sa.status in (0, 1) -- Queued or picked up
                       and a.earliest_action <= current_timestamp + numtodsinterval(:time_window * 3600, 'second')  -- Check earliest_action
                       and at.label in ('packages.update', 'errata.update',
                            'packages.runTransaction', 'packages.fullUpdate')
                      order by a.earliest_action, a.prerequisite nulls first, a.id
    """)

    def get_future_actions(self, system_id, time_window):
        """ return actions which are scheduled within next /time_window/ hours """
        self.auth_system(system_id)
        log_debug(3, "Checking for future actions within %d hours" % time_window)
        result = []
        if self._future_actions_enabled() and not self.__reboot_in_progress():
            h = rhnSQL.prepare(self._query_queue_future)
            h.execute(server_id=self.server_id, time_window=time_window)
            action = h.fetchone_dict()
            while action:
                log_debug(5, action)
                result.append(self.__getV2(action, dry_run=1))
                action = h.fetchone_dict()
        return result

    _query_queue_get = rhnSQL.Statement("""
                    select sa.action_id id, a.version,
                           sa.remaining_tries, at.label as method,
                           at.unlocked_only,
                           a.prerequisite
                      from rhnServerAction sa,
                           rhnAction a,
                           rhnActionType at
                     where sa.server_id = :server_id
                       and sa.action_id = a.id
                       and a.action_type = at.id
                       and sa.status in (0, 1) -- Queued or picked up
                       and a.earliest_action <= current_timestamp -- Check earliest_action
                       and not exists (
                           select 1
                             from rhnServerAction sap
                            where sap.server_id = :server_id
                              and sap.action_id = a.prerequisite
                              and sap.status != 2 -- completed
                           )
                      order by a.earliest_action, a.prerequisite nulls first, a.id
    """)

    # Probably we need to figure out if we really need to split these two.
    def get(self, system_id, version=1, status={}):
        # Authenticate the system certificate
        if CFG.DISABLE_CHECKINS:
            self.update_checkin = 0
        else:
            self.update_checkin = 1
        self.auth_system(system_id)
        log_debug(1, self.server_id, version,
                  "checkins %s" % ["disabled", "enabled"][self.update_checkin])
        if status:
            self.__update_status(status)

        # Update the capabilities list
        rhnCapability.update_client_capabilities(self.server_id)

        # Invalidate failed actions
        self._invalidate_failed_prereq_actions()

        server_locked = self.server.server_locked()
        log_debug(3, "Server locked", server_locked)

        if self.__reboot_in_progress():
            log_debug(3, "Server reboot in progress", self.server_id)
            rhnSQL.commit()
            return ""

        ret = {}
        # get the action. Status codes are currently:
        # 0 Queued # 1 Picked Up # 2 Completed # 3 Failed
        # XXX: we should really be using labels from rhnActionType instead of
        #      hard coded type id numbers.
        # We fetch actions whose prerequisites have completed, and actions
        # that don't have prerequisites at all
        h = rhnSQL.prepare(self._query_queue_get)

        should_execute = 1

        # Loop to get a valid action
        # (only one valid action will be dealt with per execution of this function...)
        while 1:
            if should_execute:
                h.execute(server_id=self.server_id)
                should_execute = 0

            # Okay, got an action
            action = h.fetchone_dict()
            if not action:  # No actions available; bail out
                # Don't forget the commit at the end...
                ret = ""
                break
            action_id = action['id']
            log_debug(4, "Checking action %s" % action_id)
            # okay, now we have the action - process it.
            if action['remaining_tries'] < 1:
                log_debug(4, "Action %s picked up too many times" % action_id)
                # We've run out of pickup attempts for this action...
                self.__update_action(action_id, status=3,
                                     message="This action has been picked up multiple times "
                                     "without a successful transaction; "
                                     "this action is now failed for this system.")
                # Invalidate actions that depend on this one
                self._invalidate_child_actions(action_id)
                # keep looking for a good action to process...
                continue

            if server_locked and action['unlocked_only'] == 'Y':
                # This action is locked
                log_debug(4, "server id %s locked for action id %s" % (
                    self.server_id, action_id))
                continue

            try:
                if version == 1:
                    ret = self.__getV1(action)
                else:
                    ret = self.__getV2(action)
            except ShadowAction:  # Action the client should not see
                e = sys.exc_info()[1]
                # Make sure we re-execute the query, so we pick up whatever
                # extra actions were added
                should_execute = 1
                text = e.args[0]
                log_debug(4, "Shadow Action", text)
                self.__update_action(action['id'], 2, 0, text)
                continue
            except InvalidAction:  # This is an invalid action
                e = sys.exc_info()[1]
                # Update its status so it won't bother us again
                text = e.args[0]
                log_debug(4, "Invalid Action", text)
                self.__update_action(action['id'], 3, -99, text)
                continue
            except EmptyAction:
                e = sys.exc_info()[1]
                # this means that we have some sort of internal error
                # which gets reported in the logs. We don't touch the
                # action because this should get fixed on our side.
                log_error("Can not process action data", action, e.args)
                ret = ""
                break
            else:  # all fine
                # Update the status of the action
                h = rhnSQL.prepare("""
                update rhnServerAction
                    set status = 1,
                        pickup_time = current_timestamp,
                        remaining_tries = :tries - 1
                where action_id = :action_id
                  and server_id = :server_id
                """)
                h.execute(action_id=action["id"], server_id=self.server_id,
                          tries=action["remaining_tries"])
                break

        # commit all changes
        rhnSQL.commit()

        return ret

    def submit(self, system_id, action_id, result, message="", data={}):
        """ Submit the results of a queue run.
            Maps old and new rhn_check behavior to new database status codes

            The new API uses 4 slightly different status codes than the
            old client does.  This function will "hopefully" sensibly
            map them.  Old methodology:
               -rhn_check retrieves an action from the top of the action queue.
               -It attempts to execute the desired action and returns either
                   (a) 0   -- presumed successful.
                   (b) rhnFault object -- presumed failed
                   (c) some other non-fault object -- *assumed* successful.
               -Regardless of result code, action is marked as "executed"

            We try to make a smarter status selection (i.e. failed||completed).

            For reference:
            New DB status codes:      Old DB status codes:
                  0: Queued               0: queued
                  1: Picked Up            1: picked up
                  2: Completed            2: executed
                  3: Failed               3: completed
        """
        if type(action_id) is not IntType:
            # Convert it to int
            try:
                action_id = int(action_id)
            except ValueError:
                log_error("Invalid action_id", action_id)
                raise_with_tb(rhnFault(30, _("Invalid action value type %s (%s)") %
                               (action_id, type(action_id))), sys.exc_info()[2])
        # bring message into correct format
        try:
            message = message.encode('utf8')
        except UnicodeEncodeError:
            pass

        # Authenticate the system certificate
        self.auth_system(system_id)
        log_debug(1, self.server_id, action_id, result)
        # check that the action is valid
        # We have a uniqueness constraint on (action_id, server_id)
        h = rhnSQL.prepare("""
            select at.label action_type,
                   at.trigger_snapshot,
                   at.name
              from rhnServerAction sa,
                   rhnAction a,
                   rhnActionType at
             where sa.server_id = :server_id
               and sa.action_id = :action_id
               and sa.status = 1
               and a.id = :action_id
               and a.action_type = at.id
        """)
        h.execute(server_id=self.server_id, action_id=action_id)
        row = h.fetchone_dict()
        if not row:
            log_error("Server %s does not own action %s" % (
                self.server_id, action_id))
            raise rhnFault(22, _("Action %s does not belong to server %s") % (
                action_id, self.server_id))

        action_type = row['action_type']
        trigger_snapshot = (row['trigger_snapshot'] == 'Y')

        if 'missing_packages' in data:
            missing_packages = "Missing-Packages: %s" % str(
                data['missing_packages'])
            rmsg = "%s %s" % (message, missing_packages)
        elif 'koan' in data:
            rmsg = "%s: %s" % (message, data['koan'])
        else:
            rmsg = message

        rcode = result
        # Careful with this one, result can be a very complex thing
        # and this processing is required for compatibility with old
        # rhn_check clients
        if type(rcode) == type({}):
            if "faultCode" in result:
                rcode = result["faultCode"]
            if "faultString" in result:
                rmsg = result["faultString"] + str(data)
        if type(rcode) in [type({}), type(()), type([])] \
                or type(rcode) is not IntType:
            rmsg = "%s [%s]" % (UnicodeType(message), UnicodeType(rcode))
            rcode = -1
        # map to db codes.
        status = self.status_for_action_type_code(action_type, rcode)

        if status == 3:
            # Failed action - invalidate children
            self._invalidate_child_actions(action_id)
        elif action_type == 'reboot.reboot':
            # reboot action should stay as pickup
            rhnSQL.commit()
            return 0
        elif status == 2 and trigger_snapshot and self.__should_snapshot():
            # if action status is 'Completed', snapshot if allowed and if needed
            self.server.take_snapshot("Scheduled action completion:  %s" % row['name'])

        self.__update_action(action_id, status, rcode, rmsg)

        # Store the status in a flag - easier than to complicate the action
        # plugin API by adding a status
        rhnFlags.set('action_id', action_id)
        rhnFlags.set('action_status', status)

        self.process_extra_data(self.server_id, action_id, data=data,
                                action_type=action_type)

        # commit, because nobody else will
        rhnSQL.commit()
        return 0

    def update_status(self, system_id, status = {}):
        # Authenticate the system certificate
        self.auth_system(system_id)
        log_debug(1, self.server_id, status)
        if status:
            self.__update_status(status)
        # commit all changes
        rhnSQL.commit()

        return 0

    def status_for_action_type_code(self, action_type, rcode):
        """ Convert whatever the client sends as a result code into a status in the
            database format
            This is more complicated, since some of the client's result codes have
            to be marked as successes.
        """
        log_debug(4, action_type, rcode)
        if rcode == 0:
            # Completed
            return 2

        if action_type not in self.action_type_completed_codes:
            # Failed
            return 3

        hash = self.action_type_completed_codes[action_type]
        if rcode not in hash:
            # Failed
            return 3

        # Completed
        return 2

    def process_extra_data(self, server_id, action_id, data={},
                           action_type=None):
        log_debug(4, server_id, action_id, action_type)

        if not action_type:
            # Shouldn't happen
            return

        try:
            method = getMethod.getMethod(action_type,
                                         'server.action_extra_data')
        except getMethod.GetMethodException:
            Traceback("queue.get V2")
            raise_with_tb(EmptyAction("Could not get a valid method for %s" %
                              action_type), sys.exc_info()[2])
        # Call the method
        result = method(self.server_id, action_id, data=data)
        return result

    def length(self, system_id):
        """ Return the queue length for a certain server. """
        # Authenticate the system certificate
        self.auth_system(system_id)
        log_debug(1, self.server_id)
        h = rhnSQL.prepare("""
        select
            count(action_id) id
        from
            rhnServerAction r
        where
            r.server_id = :server_id
        and r.status in (0, 1)
        """)
        h.execute(server_id=self.server_id)
        data = h.fetchone_dict()
        if data is None:
            return 0
        return data["id"]

    # PRIVATE methods

    def __reboot_in_progress(self):
        """check for a reboot action for this server in status Picked Up"""
        log_debug(4, self.server_id)
        h = rhnSQL.prepare("""
            select 1
              from rhnServerAction sa
              join rhnAction a on sa.action_id = a.id
              join rhnActionType at on a.action_type = at.id
             where sa.server_id = :server_id
               and at.label = 'reboot.reboot'
               and sa.status = 1 -- Picked Up
        """)
        h.execute(server_id=self.server_id)
        ret = h.fetchone_dict() or None
        if ret:
            return True
        return False

    def __update_action(self, action_id, status,
                        resultCode=None, message=""):
        """ Update the status of an action. """
        log_debug(4, action_id, status, resultCode, message)
        rhnAction.update_server_action(server_id=self.server_id,
                                       action_id=action_id, status=status,
                                       result_code=resultCode, result_message=message)
        return 0

    def __errataUpdate(self, actionId):
        """ Old client errata retrieval. """
        log_debug(3, self.server_id, actionId)
        # get the names of the packages associated with each errata and
        # look them up in channels subscribed to by the server and select
        # the latest version
        sql = """
        select
            pn.name name,
            pl.evr.version version,
            pl.evr.release release
        from (
            select
                p.name_id,
                max(pe.evr) evr
            from
                rhnPackageEVR pe,
                rhnChannelPackage cp,
                rhnPackage p,
                rhnServerChannel sc,
                (
                    select
                        p_name.name_id id
                    from
                        rhnActionErrataUpdate aeu,
                        rhnErrataPackage ep,
                        rhnPackage p_name
                    where
                        aeu.action_id = :action_id
                    and aeu.errata_id = ep.errata_id
                    and ep.package_id = p_name.id
                ) nids
            where
                nids.id = p.name_id
            and p.evr_id = pe.id
            and p.id = cp.package_id
            and cp.channel_id = sc.channel_id
            and sc.server_id = :server_id
            group by p.name_id
            ) pl,
            rhnPackageName pn
        where
            pn.id = pl.name_id
        """
        h = rhnSQL.prepare(sql)
        h.execute(action_id=actionId, server_id=self.server_id)

        packages = []
        while 1:
            ret = h.fetchone_dict()
            if not ret:
                break
            # older clients have issues with real epochs, se they are
            # kind of irrelevant
            packages.append([ret["name"], ret["version"], ret["release"], ''])
        xml = xmlrpclib.dumps((packages,), methodname='client.update_packages')
        return xml

    def __packageUpdate(self, actionId):
        """ Old client package retrieval. """
        log_debug(3, self.server_id, actionId)
        # The SQL query is a union of:
        # - packages with a specific EVR
        # - the latest packages (no EVR specified)
        # XXX Should we want to schedule the install for a specific version,
        # we'll have to modify this
        statement = """
        select distinct
            pkglist.name name,
            -- decode the evr object selected earlier
            pkglist.evr.version version,
            pkglist.evr.release release
        from (
            -- get the max of the two possible cases
            select
                pl.name name,
                max(pl.evr) evr
            from (
                -- if the EVR is specifically requested...
                select
                    pn.name name,
                    pe.evr evr
                from
                    rhnActionPackage ap,
                    rhnPackage p,
                    rhnPackageName pn,
                    rhnPackageEVR pe,
                    rhnServerChannel sc,
                    rhnChannelPackage cp
                where
                    ap.action_id = :action_id
                and ap.evr_id is NOT NULL
                and ap.evr_id = p.evr_id
                and ap.evr_id = pe.id
                and ap.name_id = p.name_id
                and ap.name_id = pn.id
                and p.id = cp.package_id
                and cp.channel_id = sc.channel_id
                and sc.server_id = :server_id
                UNION
                -- when no EVR requested, we need to compute the max available
                -- from the channels the server is subscribed to
                select
                    pn.name name,
                    max(pevr.evr) evr
                from
                    rhnActionPackage ap,
                    rhnServerChannel sc,
                    rhnChannelPackage cp,
                    rhnPackage p,
                    rhnPackageEVR pevr,
                    rhnPackageName pn
                where
                    ap.action_id = :action_id
                and ap.evr_id is null
                and ap.name_id = pn.id
                and ap.name_id = p.name_id
                and p.evr_id = pevr.id
                and sc.server_id = :server_id
                and sc.channel_id = cp.channel_id
                and cp.package_id = p.id
                group by pn.name
            ) pl
            group by pl.name
        ) pkglist
        """
        h = rhnSQL.prepare(statement)
        h.execute(action_id=actionId, server_id=self.server_id)
        ret = h.fetchall_dict() or []
        packages = []
        for p in ret:
            # old clients have issues dealing with real epochs, so we
            # kind of fake it for now in here
            entry = [p['name'], p['version'], p['release'], '']
            packages.append(entry)
        xml = xmlrpclib.dumps((packages,), methodname='client.update_packages')
        return xml


#-----------------------------------------------------------------------------
if __name__ == "__main__":
    print("You can not run this module by itself")
    q = Queue()
    sys.exit(-1)
#-----------------------------------------------------------------------------
   07070100000180000081B40000000000000000000000016290A0C10000DD3B000000000000000000000000000000000000003900000000spacewalk-backend/server/handlers/xmlrpc/registration.py  #
# Copyright (c) 2008--2017 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#

# system modules
import os
import sys

from uyuni.common.usix import raise_with_tb
from spacewalk.common import rhnFlags, rhnMail
from spacewalk.common.rhnLog import log_debug, log_error
from spacewalk.common.rhnConfig import CFG, PRODUCT_NAME
from spacewalk.common.rhnException import rhnFault
from spacewalk.common.rhnTranslate import _, cat
from uyuni.common.rhnLib import checkValue
from spacewalk.server.rhnLib import normalize_server_arch
from spacewalk.server.rhnServer import server_route, server_lib
from spacewalk.server.rhnServer.server_certificate import Certificate
from spacewalk.server.rhnHandler import rhnHandler
from spacewalk.server import rhnUser, rhnServer, rhnSQL, rhnCapability, \
    rhnChannel, rhnVirtualization
from spacewalk.common.rhnTB import add_to_seclist


def hash_validate(data, *keylist):
    """ verify that a hash has all the keys and those have actual values """
    for k in keylist:
        if k not in data:
            return 0
        l = data[k]
        if l is None:
            return 0
        if type(l) == type("") and len(l) == 0:
            return 0
    return 1


def parse_smbios(smbios):
    vendor = smbios.get('smbios.bios.vendor')
    serial = smbios.get('smbios.system.serial', '')
    manufacturer = smbios.get('smbios.system.manufacturer')
    product = smbios.get('smbios.system.product')

    # XXX need to worry about uuid being none for other virt types and
    # available subs check
    uuid = None
    if 'smbios.system.uuid' in smbios:
        uuid = smbios['smbios.system.uuid']
        uuid = uuid.replace('-', '')

    virttype = None
    if uuid is not None and (
            vendor == "QEMU"
            or manufacturer == 'QEMU'
            or (manufacturer == 'Bochs' and product == 'Bochs') # Bochs is a virtual SUSE KVM machine
            or (manufacturer == 'RDO' and product == 'OpenStack Compute') # Openstack compute
            or (manufacturer == 'Google' and product == 'Google Compute Engine') # Google Compute Engine
            or (manufacturer == 'Red Hat' and product in ('KVM', 'RHEV Hypervisor', 'OpenStack Compute'))
            or (product == 'OpenStack Nova' and (manufacturer in ('Fedora Project', 'RDO Project') or
                manufacturer and manufacturer.startswith('Red Hat')))
            or (manufacturer == 'oVirt' and product in ('oVirt Node', 'RHEV Hypervisor'))
            or (manufacturer == 'Nutanix' and product == 'AHV')):
        virttype = rhnVirtualization.VirtualizationType.QEMU
    else:
        if manufacturer == 'Microsoft Corporation' and product == 'Virtual Machine':
            virttype = rhnVirtualization.VirtualizationType.HYPERV
        elif serial.startswith('VMware-'):
            virttype = rhnVirtualization.VirtualizationType.VMWARE
        elif manufacturer == 'HITACHI' and product.endswith(' HVM LPAR'):
            virttype = rhnVirtualization.VirtualizationType.VIRTAGE
        if uuid is None:
            uuid = "flex-guest"

    if virttype:
        return (virttype, uuid)
    elif product == "VirtualBox" and uuid is not None:
        return (rhnVirtualization.VirtualizationType.VBOX, uuid)
    elif product == "VirtualPC" and uuid is not None:
         return (rhnVirtualization.VirtualizationType.VPC, uuid)
    return (None, None)


class Registration(rhnHandler):

    """ encapsulate functions that we will provide for the outside world """

    def __init__(self):
        rhnHandler.__init__(self)
        self.functions.append("activate_registration_number")
        self.functions.append("activate_hardware_info")
        self.functions.append("available_eus_channels")
        self.functions.append("add_hw_profile")
        self.functions.append("add_packages")
        self.functions.append("anonymous")
        self.functions.append("delete_packages")
        self.functions.append("delta_packages")
        self.functions.append("finish_message")
        self.functions.append("get_possible_orgs")
        self.functions.append("new_system")
        self.functions.append("new_system_user_pass")
# self.functions.append("new_system_activation_key")
        self.functions.append("new_user")               # obsoleted
        self.functions.append("privacy_statement")
        self.functions.append("refresh_hw_profile")
        self.functions.append("register_osad")
        self.functions.append("register_osad_jid")
        self.functions.append("register_product")
        self.functions.append("remaining_subscriptions")  # obsoleted
        self.functions.append("reserve_user")           # obsoleted
        self.functions.append("send_serial")
        self.functions.append("upgrade_version")
        self.functions.append("update_contact_info")    # obsoleted
        self.functions.append("update_packages")
        self.functions.append("update_systemid")
        self.functions.append("update_transactions")
        self.functions.append("virt_notify")
        self.functions.append("welcome_message")
        self.functions.append("suse_update_products")

        # defaults for the authentication section
        self.load_user = 0
        self.check_entitlement = 0
        self.throttle = 0

        # a mapping between vendor and asset tags or serial numbers.
        # if we want to support other vendors for re
        self.vendor_tags = {'DELL': 'smbios.system.serial'}

    def reserve_user(self, username, password):
        """
        Get an username and a password and create a record for this user.
        Eventually mark it as such.
        Additionaly this method is used to verify login and password in early
        stage of rhn_register.

        Returns true value if user is reserved, otherwise fault is raised.
        """

        add_to_seclist(password)

        log_debug(1, username)
        # check user login/password and if not CFG.disallow_user_creation
        # then reserver the user
        ret = rhnUser.reserve_user(username, password)
        log_debug(3, "rhnUser.reserve_user returned: " + str(ret))
        if ret < 0:
            raise rhnFault(3)
        return ret

    def new_user(self, username, password, email=None,
                 org_id=None, org_password=None):
        """
        Finish off creating the user.

        The user has to exist (must be already reserved), the password must
        match and we set the e-mail address if one is given

        Return true if success
        """

        log_debug(1, username, email)
        # email has to be a string or nothing
        if not checkValue(email, None, "", type("")):
            raise rhnFault(30, _faultValueString(email, "email"))
        # be somewhat drastic about the org values
        if org_id and org_password:
            org_password = str(org_password)
            try:
                org_id = int(str(org_id))
            except ValueError:
                raise_with_tb(rhnFault(30, _faultValueString(org_id, "org_id")), sys.exc_info()[2])
        else:
            org_id = org_password = None
        username, password = rhnUser.check_user_password(username, password)
        email = rhnUser.check_email(email)
        # now create this user
        ret = rhnUser.new_user(username, password, email, org_id, org_password)
        # rhnUser.new_user will raise it's own faults.
        return ret

    def validate_system_input(self, data):
        """ check the input data """
        if not hash_validate(data, "os_release", "architecture", "profile_name"):
            log_error("Incomplete data hash")
            raise rhnFault(21, _("Required data missing"))
        # we require either a username and a password or a token
        if not hash_validate(data, "username", "password") and \
           not hash_validate(data, "token"):
            raise rhnFault(21, _("Required members missing"))

    def validate_system_user(self, username, password):
        username, password = rhnUser.check_user_password(username,
                                                         password)
        user = rhnUser.search(username)

        if user is None:
            log_error("Can't register server to non-existent user")
            raise rhnFault(2, _("Attempt to register a system to an invalid username"))

        # This check validates username and password
        if not user.check_password(password):
            log_error("User password check failed", username)
            raise rhnFault(2)

        if rhnUser.is_user_disabled(username):
            msg = _("""
                   %s Account has been deactivated on this server.
                   Please contact your Org administrator for more help.""")
            raise rhnFault(1, msg % username, explain=0)

        return user

    def create_system(self, user, profile_name, release_version,
                      architecture, data):
        """
        Create a system based on the input parameters.

        Return dict containing a server object for now.
        Called by new_system (< rhel5)
              and new_system_user_pass | new_system_activation_key (>= rhel5)
        """

        if "machine_id" in data:
            entitlements = server_lib.check_entitlement_by_machine_id(data["machine_id"])
            log_debug(4, "found entitlements for machine_id", data["machine_id"], entitlements)
            if entitlements and "salt_entitled" in entitlements:
                raise rhnFault(48, """
    This system is already registered as a Salt Minion. If you want to register it as a traditional client
    please delete it first via the web UI or API and then register it using the traditional tools.
                """)

        if profile_name is not None and not \
           rhnFlags.test("re_registration_token") and \
           len(profile_name) < 1:
            raise rhnFault(800)

        # log entry point
        if "token" in data:
            log_item = "token = '%s'" % data["token"]
        else:
            log_item = "username = '%s'" % user.username

        log_debug(1, log_item, release_version, architecture)

        # Fetch the applet's UUID
        if "uuid" in data:
            applet_uuid = data['uuid']
            log_debug(3, "applet uuid", applet_uuid)
        else:
            applet_uuid = None

        # Fetch the up2date UUID
        if "rhnuuid" in data:
            up2date_uuid = data['rhnuuid']
            log_debug(3, "up2date uuid", up2date_uuid)
            # XXX Should somehow check the uuid uniqueness
            #raise rhnFault(105, "A system cannot be registered multiple times")
        else:
            up2date_uuid = None

        release = str(release_version)

        if 'token' in data:
            token_string = data['token']
            # Look the token up; if the token does not exist or is invalid,
            # stop right here (search_token raises the appropriate rhnFault)
            tokens_obj = rhnServer.search_token(token_string)
            log_user_id = tokens_obj.get_user_id()
        else:
            # user should not be null here
            log_user_id = user.getid()
            tokens_obj = rhnServer.search_org_token(user.contact["org_id"])
            log_debug(3, "universal_registration_token set as %s" %
                      str(tokens_obj.get_tokens()))
            rhnFlags.set("universal_registration_token", tokens_obj)

        if 'channel' in data and len(data['channel']) > 0:
            channel = data['channel']
            log_debug(3, "requested EUS channel: %s" % str(channel))
        else:
            channel = None

        newserv = None
        if tokens_obj:
            # Only set registration_token if we have token(s) available.
            # server_token.ActivationTokens.__nonzero__ should do the right
            # thing of filtering the case of no tokens
            rhnFlags.set("registration_token", tokens_obj)
            # Is the token associated with a server?
            if tokens_obj.is_rereg_token:
                # Also flag it's a re-registration token
                rhnFlags.set("re_registration_token", tokens_obj)
                # Load the server object
                newserv = rhnServer.search(tokens_obj.get_server_id())
                newserv.disable_token()
                # The old hardware info no longer applies
                newserv.delete_hardware()
                # Update the arch - it may have changed; we know the field was
                # provided for us
                newserv.set_arch(architecture)
                # if no creator_id use the activation key owner, else keep
                if not newserv.server['creator_id']:
                    newserv.user = user
                else:
                    newserv.user = rhnUser.User("", "")
                    newserv.user.reload(newserv.server['creator_id'])
                # Generate a new secret for this server
                newserv.gen_secret()
                # Get rid of the old package profile - it's bogus in this case
                newserv.dispose_packages()
                # The new server may have a different base channel
                suse_products = None
                if 'suse_products' in data:
                    suse_products = data['suse_products']
                newserv.change_base_channel(release, suse_products=suse_products)

        if newserv is None:
            # Not a re-registration token, we need a fresh server object
            newserv = rhnServer.Server(user, architecture)

        # Proceed with using the rest of the data
        newserv.server["release"] = release
        if 'release_name' in data:
            newserv.server["os"] = data['release_name']

        ## add suse_products profile if available
        if 'suse_products' in data:
            newserv.add_suse_products( data["suse_products"] )
        ## add the package list
        if 'packages' in data:
            for package in data['packages']:
                newserv.add_package(package)
        # add the hardware profile
        if 'hardware_profile' in data:
            for hw in data['hardware_profile'][:]:
                if hw['class'] == 'NETINFO':
                    self.extract_and_save_netinfos(newserv, hw)
                    continue
                if hw['class'] == 'FQDN':
                    self.extract_and_save_fqdns(newserv, hw)
                    continue
                newserv.add_hardware(hw)
        # fill in the other details from the data dictionary
        if profile_name is not None and not \
           rhnFlags.test("re_registration_token"):
            newserv.server["name"] = profile_name[:128]
        if 'os' in data:
            newserv.server["os"] = data["os"][:64]
        if 'description' in data:
            newserv.server["description"] = data["description"][:256]
        else:
            newserv.default_description()

        # Check for virt params
        # Get the uuid, if there is one.
        if 'virt_uuid' in data:
            virt_uuid = data['virt_uuid']
            if virt_uuid is not None \
               and not rhnVirtualization.is_host_uuid(virt_uuid):
                # If we don't have a virt_type key, we'll assume PARA.
                virt_type = None
                if 'virt_type' in data:
                    virt_type = data['virt_type']
                    if virt_type == 'para':
                        virt_type = rhnVirtualization.VirtualizationType.PARA
                    elif virt_type == 'fully':
                        virt_type = rhnVirtualization.VirtualizationType.FULLY
                    else:
                        raise Exception(
                            "Unknown virtualization type: %s" % virt_type)
                else:
                    raise Exception("Virtualization type not provided")
                newserv.virt_uuid = virt_uuid
                newserv.virt_type = virt_type
            else:
                newserv.virt_uuid = None
                newserv.virt_type = None
        else:
            newserv.virt_uuid = None
            newserv.virt_type = None

        # If we didn't find virt info from xen, check smbios
        if 'smbios' in data and newserv.virt_uuid is None:
            (newserv.virt_type, newserv.virt_uuid) = \
                parse_smbios(data['smbios'])

        if tokens_obj.forget_rereg_token:
            # At this point we retained the server with re-activation
            # let the stacked activation keys do their magic
            tokens_obj.is_rereg_token = 0
            rhnFlags.set("re_registration_token", 0)

        # now if we have a token, load the extra registration
        # information from the token
        if rhnFlags.test("registration_token"):
            # Keep the original "info" field
            newserv.load_token()
            # we need to flush the registration information into the
            # database so we can proceed with processing the rest of
            # the token information (like subscribing the server to
            # groups, channels, etc)

            # bretm 02/19/2007 -- this shouldn't throw any of the following:
            #   BaseChannelDeniedError
            #   NoBaseChannelError
            # since we have the token object, and underneath the hood, we have none_ok=have_token

            # BUT - it does. So catch them and throw. this will make rhnreg_ks
            # die out, but oh well. at least they don't end up registered, and
            # without a base channel.
            try:
                # don't commit
                newserv.save(0, channel)
            except (rhnChannel.NoBaseChannelError) as channel_error:
                raise_with_tb(rhnFault(70), sys.exc_info()[2])
            except rhnChannel.BaseChannelDeniedError as channel_error:
                raise_with_tb(rhnFault(71), sys.exc_info()[2])
            except server_lib.rhnSystemEntitlementException:
                e = sys.exc_info()[1]
                raise_with_tb(rhnFault(90), sys.exc_info()[2])

            # Process any kickstart data associated with this server
            # Do this before using/processing the token, as the
            # potential pkg delta shadow action should happen first
            log_debug(3, "reg token process_kickstart_info")
            newserv.process_kickstart_info()

            # now do the rest of the processing for the token registration
            newserv.use_token()
        else:
            # Some information
            newserv.server["info"] = "rhn_register by %s" % log_item
            log_debug(3, "rhn_register process_kickstart_info")
            newserv.process_kickstart_info()

        # Update the uuid if necessary
        if up2date_uuid:
            newserv.uuid = up2date_uuid

        # save it
        # Commits to the db.
        #
        # bretm 02/19/2007 -- this *can* now throw any of the following:
        #   rhnChannel.BaseChannelDeniedError
        #   rhnChannel.NoBaseChannelError
        #   rhnSystemEntitlementException
        #   |
        #   +--rhnNoSystemEntitlementsException
        try:
            newserv.save(1, channel)
        except (rhnChannel.NoBaseChannelError) as channel_error:
            raise_with_tb(rhnFault(70), sys.exc_info()[2])
        except rhnChannel.BaseChannelDeniedError as channel_error:
            raise_with_tb(rhnFault(71), sys.exc_info()[2])
        except server_lib.rhnSystemEntitlementException:
            e = sys.exc_info()[1]
            # right now, don't differentiate between general ent issues & rhnNoSystemEntitlementsException
            raise_with_tb(rhnFault(90), sys.exc_info()[2])

        if CFG.SEND_EOL_MAIL and user and newserv.base_channel_is_eol():
            self.attempt_eol_mailing(user, newserv)

        # XXX: until this is complete, bug:
        #      http://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=112450
        # store route in DB (schema for RHN 3.1+ only!)
        server_route.store_client_route(newserv.getid())

        return {'server': newserv, }

    def new_system(self, data):
        """
        This function expects at the INPUT a dictionary that has at least
        the following members: username, password, os_release, email
        If the username does not exist, it is created. If the username
        exists, then password is checked for a match.
        If all is well, we send back a server certificate.
        --
        Hash
        --
        Struct

        Starting with RHEL 5, the client will use activate_registration_number,
        activate_hardware_info, new_system_user_pass, and/or
        new_system_activation_key instead of this.

        In hosted, RHEL 4 and earlier will also call
        activate_registration_number
        """

        if "password" in data:
            add_to_seclist(data["password"])

        # Validate we got the minimum necessary input.
        self.validate_system_input(data)

        # Authorize username and password, if used.
        # Store the user object in user.
        user = None
        if 'token' not in data:
            user = self.validate_system_user(data["username"],
                                             data["password"])

        release_version = data['os_release']
        profile_name = data['profile_name']
        architecture = data['architecture']

        # Create the system and get back the rhnServer object.
        #
        # bretm 02/19/2007 -- the following things get thrown underneath,
        # but we issue the faults in create_system for uniformity:
        #
        #   rhnChannel.BaseChannelDeniedError
        #   rhnChannel.NoBaseChannelError
        #   rhnSystemEntitlementException
        #   |
        #   +--rhnNoSystemEntitlementsException
        server_data = self.create_system(user, profile_name,
                                         release_version,
                                         architecture, data)
        newserv = server_data['server']

        system_certificate = newserv.system_id()

        # Return the server certificate file down to the client.
        return system_certificate

    def new_system_user_pass(self, profile_name, os_release_name,
                             version, arch, username,
                             password, other):
        """ Registers a new system to an org specified by a username, password, and
            optionally an org id.

            New for RHEL 5.

            All args are strings except other.
            other is a dict with:
            * org_id - optional. Must be a string that contains the number. If it's
            not given, the default org is used.

            If a profile is created it will return a dict with:
            * system_id - the same xml as was previously returned
            * channels - a list of the channels (as strings) the system was
              subscribed to
            * failed_channels - a list of channels (as strings) that
              the system should have been subscribed to but couldn't be because they
              don't have the necessary entitlements available. Can contain all the
              channels including the base channel.
            * system_slots - a list of the system slots used (as strings).
            * failed_system_slots - a list of system slots (as strings) that they
              should have used but couldn't because there weren't available
              entitlements
            * universal_activation_key - a list of universal default activation keys
              (as strings) that were used while registering.
            The call will try to use the highest system slot available. An entry will
            be added to failed_system_slots for each one that is tried and fails and
            system_slots will contain the one that succeeded if any.

            If an error occurs which prevents the creation of a profile, a fault will
            be raised:
            TODO
        """

        add_to_seclist(password)

        log_debug(4, 'in new_system_user_pass')

        # release_name wasn't required in the old call, so I'm just going to
        # add it to other
        other['release_name'] = os_release_name

        # Authorize the username and password. Save the returned user object.
        user = self.validate_system_user(username, password)

        # This creates the rhnServer record and commits it to the db.
        # It also assigns the system a base channel.
        server_data = self.create_system(user, profile_name,
                                         version,
                                         arch,
                                         other)
        # Save the returned Server object
        newserv = server_data['server']

        # Get the server db id.
        server_id = newserv.getid()

        # Get the server certificate file
        system_certificate = newserv.system_id()

        log_debug(4, 'Server id created as %s' % server_id)

        failures = []
        unknowns = []

        # Build our return values.
        attempted_channels = []
        successful_channels = []
        failed_channels = []

        actual_channels = rhnChannel.channels_for_server(server_id)
        for channel in actual_channels:
            successful_channels.append(channel['label'])

        # If we don't have any successful channels, we know the base channel
        # failed.
        if len(successful_channels) == 0:
            log_debug(4, 'System %s not subscribed to any channels' % server_id)

            # Look up the base channel, and store it as a failure.
            try:
                base = rhnChannel.get_channel_for_release_arch(
                    version,
                    arch, newserv['org_id'])
                failed_channels.append(base['label'])
            # We want to swallow exceptions here as we are just generating data
            # for the review screen in rhn_register.
            except:
                pass

        # Store any of our child channel failures
        failed_channels = failed_channels + failures

        attempted_system_slots = ['enterprise_entitled']
        successful_system_slots = server_lib.check_entitlement(server_id)
        successful_system_slots = list(successful_system_slots.keys())
        failed_system_slots = []

        # Check which entitlement level we got, starting with the highest.
        i = 0
        for slot in attempted_system_slots:
            if slot in successful_system_slots:
                break
            i = i + 1

        # Any entitlements we didn't have, we'll store as a failure.
        failed_system_slots = attempted_system_slots[0:i]

        universal_activation_key = []
        if rhnFlags.test("universal_registration_token"):
            token = rhnFlags.get("universal_registration_token")
            universal_activation_key = token.get_tokens()

        return {'system_id': system_certificate,
                'channels': successful_channels,
                'failed_channels': failed_channels,
                'failed_options': unknowns,
                'system_slots': successful_system_slots,
                'failed_system_slots': failed_system_slots,
                'universal_activation_key': universal_activation_key
                }

    # Registers a new system to an org specified by an activation key.
    #
    # New for RHEL 5.
    #
    # See documentation for new_system_user_pass. This behaves the same way
    # except it takes an activation key instead of username, password, and
    # maybe org id.
# def new_system_activation_key(self, profile_name, os_release_name,
# os_release_version, arch, activation_key, other):
# return { 'system_id' : self.new_system({'profile_name' : profile_name,
# 'os_release' : os_release_version,
# 'release_name' : os_release_name,
# 'architecture' : arch,
# 'token' : activation_key,
# }),
# 'channels' : ['UNDER CONSTRUCTION'],
# 'failed_channels' : ['UNDER CONSTRUCTION'],
# 'system_slots' : ['UNDER CONSTRUCTION'],
# 'failed_system_slots' : ['UNDER CONSTRUCTION'],
# }

    def get_possible_orgs(self, username, password):
        """ Gets all the orgs that a user belongs to.
            In the OCS-future, users may belong to more than one org.

            New for RHEL 5.

            Returns a dict like:
            {
                'orgs': {'19': 'Engineering', '4009': 'Finance'},
                'default_org': '19'
            }
            'orgs' must have at least one pair and 'default_org' must exist and point
            to something in 'orgs'.

            TODO Pick fault number for this and document it here
            Fault:
            * Bad credentials
        """
        user = rhnUser.auth_username_password(username, password)

        # buzilla #229362, jslagle
        # Clients currently are calling this method in hopes
        # to one day support multi-org satellite.
        # So, if we're running on a sat, return the default org
        # for now.
        org_id = user.contact["org_id"]
        org_name = user.customer["name"]
        orgs = {str(org_id): org_name}
        default_org = str(org_id)
        return {'orgs': orgs, 'default_org': default_org}

    def activate_registration_number(self, username, password, key, other):
        """ Entitle a particular org using an entitlement number.

            New for RHEL 5.

            username, password, and key are strings.
            other is a dict with:
            * org_id - optional. If it's not given, the user's default org is used.

            Returns a dict:
            {
                'status_code': <status code>,
                'registration_number': 'EN for this system'
                'channels' : channels,
                'system_slots' : system_slots
            }
            'status_code' must be 0 for "we just activated the key" or 1 for "this
            key was already activated."
            'registration_number' will be the EN corresponding to this activation. If
            we activated an EN we'll get the same thing back. If we activate an OEM
            number (eg asset tag) and maybe a pre-rhel 5 subscription number, we'll
            get back the EN that was generated from it.
            'channels' is a dict of the channel susbscriptions that the key activated
            the key/value pairs are label (string) / quantity (int)
            'system_slots' is a dict of the system slots that the key activated
            the key/value pairs are label (string) / quantity (int)

            TODO Assign fault values and document them here
            Faults:
            * Invalid key (600)
            * Bad credentials (?) - covers bad username and password, bad org id, and
            user not in specified org
        """
        # bugzilla# 236927, jslagle
        # Clients are currently broken in that they try to activate
        # installation numbers against a satellite.
        # We can work around this by just raising the 'number is not
        # entitling' fault.
        raise rhnFault(602)

    def __findAssetTag(self, vendor, hardware_info):
        """ Given some hardware information, we try to find the asset tag or
            serial number.

            See activate_hardware_info below for the structure of the
            hardware_info
        """

        if vendor in self.vendor_tags:
            asset_value = ""
            key = self.vendor_tags[vendor]
            log_debug(5, "key: " + str(key))
            if key in hardware_info:
                return hardware_info[key]

        # nothing found
        log_debug(5, "no tag found for vendor: " + str(vendor))
        return None

    def __transform_vendor_to_const(self, vendor):
        if vendor in [None, "", "Not Available", "None", "N/A"]:
            return None

        if vendor.lower().startswith("dell"):
            return "DELL"
        else:
            return None

    def activate_hardware_info(self, username, password, hardware_info, other):
        """
        Given some hardware-based criteria per-vendor, try giving entitlements.

        New for RHEL 5.

        Mostly the same stuff as activate_registration_number.
        hardware_info is a dict of stuff we get from hal from
        Computer -> system.* and smbios.*. For example:
        {
            'system.product': '2687D8U ThinkPad T43',
            'system.vendor': 'IBM',
            'smbios.chassis.type': 'Notebook',
            ...
        }
        """

        log_debug(5, username, hardware_info, other)

        # bugzilla #236927, jslagle
        # RHN clients are currently broken in that they always try to activate
        # hardware info regardless of if they're pointed at satellite or hosted.
        # To fix the satellite case, just raise the 'no entitlements tied to
        # this hardware' fault.
        raise rhnFault(601)

    def attempt_eol_mailing(self, user, server):

        if not user:
            raise Exception("user required to attempt eol mailing")

        if "email" in user.info:
            log_debug(4, "sending eol mail...")
            body = EOL_EMAIL % {'server': server.server['name']}
            headers = {}
            headers['From'] = "SUSE Manager Server <dev-null@%s>" % os.uname()[1]
            headers['To'] = user.info['email']
            headers['Subject'] = 'End of Life SUSE Manager Channel Subscription'
            rhnMail.send(headers, body)

    def send_serial(self, system_id, number, vendor=None):
        """
        Receive a vendor serial number from the client and tag it to the server.
        """
        log_debug(1, number, vendor)
        # well, we don't do that anymore
        return 0

    # XXX: update this function to deal with the channels and stuff
    # TODO: Is this useful? we think not. investigate and possibly replace
    # with a NOOP.
    def upgrade_version(self, system_id, newver, change_channel = True):
        """ Upgrade a certificate's version to a different release. """
        log_debug(5, system_id, newver, change_channel)
        # we need to load the user because we will generate a new certificate
        self.load_user = 1
        server = self.auth_system(system_id)
        newver = str(newver)
        if not newver:
            raise rhnFault(21, _("Invalid system release version requested"))
        #log the entry
        log_debug(1, server.getid(), newver, change_channel)
        if change_channel:
            ret = server.change_base_channel(newver)
            server.save()
        else:
            server.server["release"] = newver
            msg = """The SUSE Manager Update Agent has detected a
            change in the base version of the operating system running
            on your system"""
            server.add_history("Updated system release to %s" % (newver), msg)
            server.save_history_byid(server.server["id"])
            server.save()

        return server.system_id()

    def add_packages(self, system_id, packages):
        """ Add one or more package to the server profile. """
        log_debug(5, system_id, packages)
        if CFG.DISABLE_PACKAGES:
            return 0
        packages = self._normalize_packages(system_id, packages)
        server = self.auth_system(system_id)
        # log the entry
        log_debug(1, server.getid(), "packages: %d" % len(packages))
        check_products = False
        if len(server.get_packages()) == 0:
            check_products = True
        for package in packages:
            server.add_package(package)
        # XXX: check return code
        server.save_packages()
        if check_products:
            server.install_missing_product_packages()
        return 0

    def delete_packages(self, system_id, packages):
        """ Delete one or more packages from the server profile """
        log_debug(5, system_id, packages)
        if CFG.DISABLE_PACKAGES:
            return 0
        packages = self._normalize_packages(system_id, packages)
        server = self.auth_system(system_id)
        # log the entry
        log_debug(1, server.getid(), "packages: %d" % len(packages))
        for package in packages:
            server.delete_package(package)
        # XXX: check return code
        server.save_packages()
        return 0

    def delta_packages(self, system_id, packages):
        log_debug(5, system_id, packages)
        if CFG.DISABLE_PACKAGES:
            return 0
        if type(packages) != type({}):
            log_error("Invalid argument type", type(packages))
            raise rhnFault(21)
        added_packages = self._normalize_packages(system_id, packages.get('added'), allow_none=1)
        removed_packages = self._normalize_packages(system_id, packages.get('deleted'), allow_none=1)

        server = self.auth_system(system_id)
        # log the entry
        if added_packages is not None:
            log_debug(1, self.server_id, "added: %d" % len(added_packages))
        if removed_packages is not None:
            log_debug(1, self.server_id, "deleted: %d" % len(removed_packages))
        # Update the capabilities list
        rhnCapability.update_client_capabilities(self.server_id)
        for package in added_packages or []:
            server.add_package(package)
        for package in removed_packages or []:
            server.delete_package(package)
        server.save_packages()
        return 0

    def virt_notify(self, system_id, actions):
        """ This function fields virtualization-related notifications from the
            client and delegates them out to the appropriate downstream handlers.
            The 'actions' argument is formatted as follows:

            actions = [ ( timestamp, event, target, properties ), ... ]
        """
        log_debug(3, "Received virt notification:", system_id, actions)

        # Authorize the client.
        server = self.auth_system(system_id)
        server_id = server.getid()

        rhnVirtualization._virt_notify(server_id, actions)

        rhnSQL.commit()

        return 0

    def update_packages(self, system_id, packages):
        """ This function will update the package list associated with a server
            to be exactly the list of packages passed on the argument list
        """
        log_debug(5, system_id, packages)
        if CFG.DISABLE_PACKAGES:
            return 0
        packages = self._normalize_packages(system_id, packages)

        server = self.auth_system(system_id)
        # log the entry
        log_debug(1, server.getid(), "packages: %d" % len(packages))
        server.dispose_packages()
        for package in packages:
            server.add_package(package)
        server.save_packages()
        return 0

    def _normalize_packages(self, system_id, packages, allow_none=0):
        """ the function checks if list of packages is well formated
            and also converts packages from old list of lists
            (extended_profile >= 2) to new list of dicts (extended_profile = 2)
        """

        if allow_none and packages is None:
            return None
        # we need to be paranoid about the format of the argument because
        # if we accept wrong input then we might end up disposing in error
        # of all packages registered here
        if type(packages) != type([]):
            log_error("Invalid argument type", type(packages))
            raise rhnFault(21)

        # Update the capabilities list
        server = self.auth_system(system_id)
        rhnCapability.update_client_capabilities(self.server_id)

        # old clients send packages as a list of arrays
        # while new (capability packages.extended_profile >= {version: 2, value: 1})
        # use a list of dicts
        client_caps = rhnCapability.get_client_capabilities()
        package_is_dict = 0
        packagesV2 = []
        if client_caps and 'packages.extended_profile' in client_caps:
            cap_info = client_caps['packages.extended_profile']
            if cap_info and int(cap_info['version']) >= 2:
                package_is_dict = 1
                packagesV2 = packages

        for package in packages:
            if package_is_dict:
                # extended_profile >= 2
                if type(package) != type({}):
                    log_error("Invalid package spec for extended_profile >= 2",
                              type(package), "len = %d" % len(package))
                    raise rhnFault(21)
            else:
                # extended_profile < 2
                if (type(package) != type([]) or len(package) < 4):
                    log_error("Invalid package spec", type(package),
                              "len = %d" % len(package))
                    raise rhnFault(21)
                else:
                    p = {'name': package[0],
                         'version': package[1],
                         'release': package[2],
                         'epoch': package[3],
                         }
                    if len(package) > 4:
                        p['arch'] = package[4]
                    if len(package) > 5:
                        p['cookie'] = package[5]
                    packagesV2.append(p)
        return packagesV2

    def extract_and_save_netinfos(self, server, hardware):
        if 'hostname' in list(hardware.keys()):
            server.server["hostname"] = hardware["hostname"]
            del hardware["hostname"]
        if 'ipaddr' in list(hardware.keys()):
            server.addr["ipaddr"] = hardware["ipaddr"]
            del hardware["ipaddr"]
        if 'ip6addr' in list(hardware.keys()):
            server.addr["ip6addr"] = hardware["ip6addr"]
            del hardware["ip6addr"]

    def extract_and_save_fqdns(self, server, hardware):
        hardware_curr = hardware.copy()
        for fqdn in hardware['name']:
            hardware_curr['name'] = fqdn
            server.add_hardware(hardware_curr)

    def __add_hw_profile_no_auth(self, server, hwlist):
        """ Insert a new profile for the server, but do not authenticate """
        log_debug(1, server.getid(), "items: %d" % len(hwlist))
        for hardware in hwlist[:]:
            if hardware['class'] == 'NETINFO':
                self.extract_and_save_netinfos(server, hardware)
                continue
            if hardware['class'] == 'FQDN':
                self.extract_and_save_fqdns(server, hardware)
                continue
            server.add_hardware(hardware)
        # XXX: check return code
        server.save_hardware()
        server.save()

    def add_hw_profile(self, system_id, hwlist):
        """ Insert a new profile for the server """
        log_debug(5, system_id, hwlist)
        server = self.auth_system(system_id)
        self.__add_hw_profile_no_auth(server, hwlist)
        # set primary interface to the one that is used to reach the server
        sid = server.getid()

        ipaddr_suffix = 0
        ipaddr_value = None
        # use ipaddr by default, if it is null try to fallback
        # on ip6addr, if it is null as well --> fail
        if server.addr.get("ipaddr"):
            ipaddr_value = server.addr.get("ipaddr")
            ipaddr_suffix = 4
            log_debug(1, system_id, "Setting ipaddr as a primary interface")
        elif server.addr.get("ip6addr"):
            ipaddr_value = server.addr.get("ip6addr")
            ipaddr_suffix = 6
            log_debug(1, system_id, "Setting ip6addr as a primary interface")
        else:
            raise rhnFault(22, _("Unable to find a valid network interface, both ipaddr and ip6addr not found."))

        # read the interface from the right table in the database
        # according to the primary network interface found
        h = rhnSQL.prepare("""
            select interface_id
            from rhnServerNetAddress{0} rsna
                left join rhnServerNetInterface rsni
                    on rsna.interface_id = rsni.id
            where address = :address and server_id = :server_id
        """.format(ipaddr_suffix))
        h.execute(address=ipaddr_value, server_id=sid)
        row = h.fetchone_dict()
        if row:
            primif=row.get('interface_id')
            if primif:
                h = rhnSQL.prepare("""
                    update rhnservernetinterface set is_primary = 'Y' where id = :id
                """)
                h.execute(id=primif)
                rhnSQL.commit()

        return 0

    def refresh_hw_profile(self, system_id, hwlist):
        """ Recreate the server HW profile """
        log_debug(5, system_id, hwlist)
        server = self.auth_system(system_id)
        sid = server.getid()
        # clear out the existing list first
        # the only difference between add_hw_profile and refresh_hw_profile
        # make sure primary network interface does not get reset
        h = rhnSQL.prepare("""
            select name from rhnservernetinterface where server_id = :server_id AND is_primary ='Y'
        """)
        h.execute(server_id=sid)
        row = h.fetchone_dict()
        server.delete_hardware()
        self.__add_hw_profile_no_auth(server, hwlist)
        if row:
            h = rhnSQL.prepare("""
                update rhnservernetinterface set is_primary = 'Y' where server_id = :server_id AND name = :name
            """)
            h.execute(server_id=sid, name=row['name'])
            rhnSQL.commit()
        return 0

    def welcome_message(self, lang=None):
        """ returns string of welcome message """
        log_debug(1, "lang: %s" % lang)
        if lang:
            cat.setlangs(lang)
        msg = _("{PRODUCT_NAME} Welcome Message").format(PRODUCT_NAME=PRODUCT_NAME)
        # compress this one
        rhnFlags.set("compress_response", 1)
        return msg

    def privacy_statement(self, lang=None):
        """ returns string of privacy statement """
        log_debug(1, "lang: %s" % lang)
        if lang:
            cat.setlangs(lang)
        msg = _("Privacy Statement")
        # compress this one
        rhnFlags.set("compress_response", 1)
        return msg

    def register_product(self, system_id, product, oeminfo={}):
        """ register a product and record the data sent with the registration

            bretm:  hasn't registered a product or recorded anything since 2001, near
              as I can tell what it actually appears to be responsible for is
              protecting us against people registering systems from t7/t9
              countries

              actual use of registration numbers has been moved into the
              server_class.__save stuff
        """

        log_debug(5, system_id, product, oeminfo)
        if type(product) != type({}):
            log_error("Invalid argument type", type(product))
            raise rhnFault(21, _(
                "Expected a dictionary as a product argument"))
        log_debug(4, product)
        # As per bug 129996 using an activation key should not overwrite the
        # user's info. Also, the reg number stuff doesn't work anyway
        # Keep doing the authentication and then just bail out
        self.auth_system(system_id)
        return 0

    def update_contact_info(self, username, password, info={}):
        """ this API call is no longer used """
        log_debug(5, username, info)
        username, password = str(username), str(password)
        user = rhnUser.search(username)
        if user is None:
            log_error("invalid username", username)
            raise rhnFault(2)

        if not user.check_password(password):
            log_error("User password check failed", username)
            raise rhnFault(2)

        if rhnUser.is_user_disabled(username):
            msg = _("""
                   %s Account has been deactivated on this server.
                   Please contact your Org administrator for more help.""")
            raise rhnFault(1, msg % username, explain=0)

        return 0

    def update_transactions(self, system_id, timestamp, transactions_hash):
        """ Updates the RPM transactions """
        log_debug(1)
        # Authenticate
        server = self.auth_system(system_id)
        # No op as of 20030923
        return 0

    def anonymous(self, release=None, arch=None):
        """ To reduce the number of tracebacks """
        log_debug(1, "Disabled!", release, arch)
        raise rhnFault(28)

    def finish_message(self, system_id):
        """ Presents the client with a message to display
            Returns:
            (returnCode, titleText, messageText)
            titleText is the window's title, messageText is the message displayed in
            that window by the client

            if returnCode is 1, the client
              will show the message in a window with the
              title of titleText, and allow the user to
              continue.
            if returnCode is -1, the client
              will show the message in a window with the
              title of titleText, and not allow the user
              to continue
            if returnCode is 0, no message
              screen will be shown.
        """
        log_debug(1)
        # Authenticate
        self.auth_system(system_id)

        return_code, text_title, text_message = \
            self.server.fetch_registration_message()
        if return_code:
            return return_code, text_title, text_message

        # If return_code is 0, check to see if we don't have a system-wide
        # message that we want to push
        return_code = int(CFG.REG_FINISH_MESSAGE_RETURN_CODE)
        if return_code == 0:
            # Nothing to display
            return (0, "", "")

        # We need to send back something
        text_title = CFG.REG_FINISH_MESSAGE_TITLE or ""
        text_file = CFG.REG_FINISH_MESSAGE_TEXT_FILE
        try:
            text_message = open(text_file).read()
        except IOError:
            e = sys.exc_info()[1]
            log_error("reg_fishish_message_return_code is set, but file "
                      "%s invalid: %s" % (text_file, e))
            return (0, "", "")
        return (return_code, text_title, text_message)

    _query_get_dispatchers = rhnSQL.Statement("""
        select jabber_id from rhnPushDispatcher
    """)

    def _get_dispatchers(self):
        h = rhnSQL.prepare(self._query_get_dispatchers)
        h.execute()
        return [x['jabber_id'] for x in h.fetchall_dict() or []]

    def register_osad(self, system_id, args={}):
        log_debug(1)

        # Authenticate
        server = self.auth_system(system_id)

        jabber_server = CFG.JABBER_SERVER
        if not jabber_server:
            log_error("Jabber server not defined")
            return {}

        server_timestamp, client_name, shared_key = \
            server.register_push_client()

        ret = args.copy()
        dispatchers = self._get_dispatchers()
        ret.update({
            'client-name': client_name,
            'shared-key': shared_key,
            'server-timestamp': server_timestamp,
            'jabber-server': jabber_server,
            'dispatchers': dispatchers,
        })
        return ret

    def register_osad_jid(self, system_id, args={}):
        log_debug(1)

        # Authenticate
        server = self.auth_system(system_id)

        if 'jabber-id' not in args:
            raise rhnFault(160, "No jabber-id specified", explain=0)

        jid = args['jabber-id']
        server.register_push_client_jid(jid)
        return {}

    def available_eus_channels(self, username, password, arch,
                               version, release, other=None):
        '''
        Given a server arch, redhat-release version, and redhat-release release
        returns the eligible channels for that system based on the entitlements
        in the org specified by username/password

        Returns a dict of the available channels in the format:
        {'default_channel' : 'channel_label',
         'receiving_updates' : ['channel_label1', 'channel_label2'],
         'channels' : {'channel_label1' : 'channel_name1',
         'channel_lable2' : 'channel_name2'}
        }
        '''

        user = rhnUser.search(username)

        if user is None:
            log_error("invalid username", username)
            raise rhnFault(2)

        if not user.check_password(password):
            log_error("User password check failed", username)
            raise rhnFault(2)

        if rhnUser.is_user_disabled(username):
            msg = _("""
                   %s Account has been deactivated on this server.
                   Please contact your Org administrator for more help.""")
            raise rhnFault(1, msg % username, explain=0)

        server_arch = normalize_server_arch(arch)
        user_id = user.getid()
        org_id = user.contact['org_id']

        channels = rhnChannel.base_eus_channel_for_ver_rel_arch(
            version, release, server_arch,
            org_id, user_id)

        log_debug(4, "EUS Channels are: %s" % str(channels))

        default_channel = ''
        eus_channels = {}
        receiving_updates = []

        if channels is not None:
            eus_channels = {}
            for channel in channels:
                eus_channels[channel['label']] = channel['name']
                if channel['is_default'] == 'Y':
                    default_channel = channel['label']
                if channel['receiving_updates'] == 'Y':
                    receiving_updates.append(channel['label'])

        return {'default_channel': default_channel,
                'receiving_updates': receiving_updates,
                'channels': eus_channels}

    def remaining_subscriptions(self, username, password, arch, release):
        """ This is an obsoleted API call used in old RHEL5 clients to determine
            if they should show the "activate a subscription" page.
        """
        return 1

    def update_systemid(self, system_id):
        """ update_systemid: update client server and certificate
            In case the calling system is not using a certificate with a SHA-256
            checksum, update its secret and issue it a new client certificate.
        """
        server = self.auth_system(system_id)
        cert = Certificate()
        cert.reload(system_id)

        # System already uses certificate with a SHA-256 checksum,
        # we'll just return current systemid back
        if len(server.server['secret']) == 64:
            return cert.certificate()
        else:  # MD5 checksum
            server.set_arch(cert['architecture'])
            server.user = rhnUser.User("", "")
            server.user.reload(server.server['creator_id'])
            server.gen_secret()  # create new SHA-256 server secret
            server.save()
            return server.system_id()

    def suse_update_products(self, system_id, guid, secret, target, products):
        log_debug(5, system_id, guid, target, products)
        server = self.auth_system(system_id)
        log_debug(1, server.getid())
        server.update_suse_products(products)
        return 0

def _faultValueString(value, name):
    return _("Invalid value '%s' for %s (%s)") % (
        str(value), str(name), type(value))


EOL_EMAIL = """
Dear SUSE Manager User,

This email has been autogenerated to alert you that you recently
subscribed the following system to a SUSE Manager channel related
to an operating system that has reached End of Life:

%(server)s

Operating systems that have reached End of Life are no longer
receiving maintenance support (patches), which may make them
unsuitable to your needs.

For more information regarding SUSE support, please go to:

http://www.suse.com/support/

If you are interested in an operating system of SUSE with
a longer release lifecycle, 5+ year maintenance period, ISV
support, and enhanced functionality, check out SUSE
Linux Enterprise products at:

http://www.suse.com/products/

Thank you for using SUSE Manager.
"""


#-------------------------------------------------------------------------------
 07070100000181000081B40000000000000000000000016290A0C10000128A000000000000000000000000000000000000003100000000spacewalk-backend/server/handlers/xmlrpc/scap.py  #
# Copyright (c) 2013--2016 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#

import os
import stat
import grp
from base64 import decodestring

from spacewalk.common.rhnTranslate import _
from spacewalk.common.rhnException import rhnFault
from spacewalk.common.rhnConfig import CFG
from spacewalk.common.rhnLog import log_debug
from spacewalk.server import rhnSQL
from spacewalk.server.rhnHandler import rhnHandler
from spacewalk.server.rhnLib import get_action_path, get_actionfile_path


class Scap(rhnHandler):

    def __init__(self):
        rhnHandler.__init__(self)
        self.functions.append('upload_result')

    def upload_result(self, system_id, action_id, scap_file):
        self.auth_system(system_id)
        self._authorize_request(action_id)

        required_keys = ['filename', 'filecontent', 'content-encoding']
        for k in required_keys:
            if k not in scap_file:
                log_debug(1, self.server_id, "The scap file data is invalid or incomplete: %s" % scap_file)
                raise rhnFault(5101, "Missing or invalid key: %s" % k)

        return self._store_file(action_id, scap_file)

    def _store_file(self, action_id, scap_file):
        r_dir = get_action_path(self.server.server['org_id'], self.server_id, action_id)
        if not r_dir:
            log_debug(1, self.server_id, "Error composing SCAP action directory path")
            raise rhnFault(5102)
        r_file = get_actionfile_path(self.server.server['org_id'], self.server_id, action_id, scap_file['filename'])
        if not r_file:
            log_debug(1, self.server_id, "Error composing SCAP action file path")
            raise rhnFault(5103)

        if not scap_file['content-encoding'] == 'base64':
            log_debug(1, self.server_id, "Invalid content encoding: %s" % scap_file['content-encoding'])
            raise rhnFault(5104)

        # Create the file on filer
        filecontent = decodestring(scap_file['filecontent'])
        # TODO assert for the size of the file

        absolute_dir = os.path.join(CFG.MOUNT_POINT, r_dir)
        absolute_file = os.path.join(absolute_dir, scap_file['filename'])

        if not os.path.exists(absolute_dir):
            log_debug(1, self.server_id, "Creating action directory: %s" % absolute_dir)
            os.makedirs(absolute_dir)
            mode = stat.S_IRWXU | stat.S_IRWXG | stat.S_IROTH | stat.S_IXOTH
            subdirs = r_dir.split('/')
            www_gid = grp.getgrnam('www').gr_gid
            for idx in range(1, len(subdirs)):
                subdir = os.path.join(CFG.MOUNT_POINT, *subdirs[0: idx])
                if os.path.isdir(subdir):
                    try:
                        log_debug(1, "chmod 755", subdir)
                        os.chmod(subdir, mode)
                    except OSError:
                        pass
                    try:
                        log_debug(1, "chgrp www ", subdir)
                        os.chown(subdir, -1, www_gid)
                    except OSError:
                        pass
        log_debug(1, self.server_id, "Creating file: %s" % absolute_file)
        f = open(absolute_file, 'w+')
        f.write(filecontent)
        return {'result': True,
                }

    def _authorize_request(self, action_id):
        # Make sure that database contains records in
        #     rhnServerAction and rhnActionScap
        # and not contains records in
        #     rhnXccdfTestResult
        # for given (system_id, action_id) pair
        h = rhnSQL.prepare(_query_authorize_request)
        h.execute(server_id=self.server_id, action_id=action_id)
        exists = h.fetchone()
        if len(exists) != 1:
            raise rhnFault(50, _("Invalid system_id/action_id pair."))

_query_authorize_request = rhnSQL.Statement("""
select 1
    from rhnServerAction rsa,
         rhnActionScap ras
    where rsa.server_id = :server_id
      and rsa.action_id = :action_id
      and rsa.action_id = ras.action_id
      and rsa.status in (0, 1)
      and not exists
      (
          select rxt.id
            from rhnXccdfTestresult rxt
           where rxt.server_id = rsa.server_id
             and rxt.action_scap_id = ras.id
      )
""")
  07070100000182000081B40000000000000000000000016290A0C1000009FD000000000000000000000000000000000000003300000000spacewalk-backend/server/handlers/xmlrpc/states.py    #
# Copyright (c) 2008--2016 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#


states_to_abbr = {
    'Alabama': 'AL',
    'Alaska': 'AK',
    'Arizona': 'AZ',
    'Arkansas': 'AR',
    'California': 'CA',
    'Colorado': 'CO',
    'Connecticut': 'CT',
    'Delaware': 'DE',
    'District of Columbia': 'DC',
    'Florida': 'FL',
    'Georgia': 'GA',
    'Hawaii': 'HA',
    'Idaho': 'ID',
    'Illinois': 'IL',
    'Indiana': 'IN',
    'Iowa': 'IA',
    'Kansas': 'KS',
    'Kentucky': 'KY',
    'Louisiana': 'LA',
    'Maine': 'ME',
    'Maryland': 'MD',
    'Massachusetts': 'MA',
    'Michigan': 'MI',
    'Minnesota': 'MI',
    'Mississippi': 'MS',
    'Missouri': 'MO',
    'Montana': 'MT',
    'Nebraska': 'NE',
    'Nevada': 'NV',
    'New Hampshire': 'NH',
    'New Jersey': 'NJ',
    'New Mexico': 'NM',
    'New York': 'NY',
    'North Carolina': 'NC',
    'North Dakota': 'ND',
    'Ohio': 'OH',
    'Oklahoma': 'OK',
    'Oregon': 'OR',
    'Pennsylvania': 'PA',
    'Rhode Island': 'RI',
    'South Carolina': 'SC',
    'South Dakota': 'SD',
    'Tennessee': 'TN',
    'Texas': 'TX',
    'Utah': 'UT',
    'Vermont': 'VT',
    'Virginia': 'VA',
    'Washington': 'WA',
    'West Virginia': 'WV',
    'Wisconsin': 'WI',
    'Wyoming': 'WY',
    'American Samoa': 'AS',
    'Armed Forces(AA)': 'AA',
    'Armed Forces(AE)': 'AE',
    'Armed Forces(AP)': 'AP',
    'Guam': 'GU',
    'Marshall Islands': 'MH',
    'Micronesia': 'FM',
    'Northern Marianas': 'MP',
    'Palau': 'PW',
    'Puerto Rico': 'PR',
    'Trust Territories': 'TT',
    'Virgin Islands': 'VI'}

# British Columbia
# Manitoba
# New Brunswick
# Newfoundland
# Northwest Territory
# Nova Scotia
# Ontario
# Prince Edward Island
# Quebec
# Saskatchewan
# Yukon Territory


#-----------------------------------------------------------------------------
if __name__ == "__main__":
    print("You can not run this module by itself")
    import sys
    sys.exit(-1)
#-----------------------------------------------------------------------------
   07070100000183000081B40000000000000000000000016290A0C100003562000000000000000000000000000000000000003400000000spacewalk-backend/server/handlers/xmlrpc/up2date.py   #
# Copyright (c) 2008--2016 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#
# Implements the up2date.* fucntions for XMLRPC
#

# system module import
import time

from spacewalk.server.rhnServer import server_lib
from uyuni.common.usix import ListType, TupleType, StringType
from spacewalk.common import rhnFlags
from spacewalk.common.rhnLog import log_debug, log_error
from spacewalk.common.rhnConfig import CFG
from spacewalk.common.rhnException import rhnFault
from spacewalk.common.rhnTB import add_to_seclist
from spacewalk.common.rhnTranslate import _
from spacewalk.server.rhnLib import computeSignature
from spacewalk.server.rhnHandler import rhnHandler
from spacewalk.server import rhnChannel, rhnDependency, rhnCapability
from spacewalk.server.rhnServer import server_route

import re
NONSUBSCRIBABLE_CHANNELS = re.compile("(rhn-proxy|rhn-satellite)")


class Up2date(rhnHandler):

    """ xml-rpc Server Functions that we will provide for the outside world.
    """

    def __init__(self):
        """ Up2date Class Constructor

           o Initializes inherited class.
           o Appends the functions available to the outside world in the
             rhnHandler list.
        """
        rhnHandler.__init__(self)
        # Function list inherited from rhnHandler
        # This action garners control of what is available to the client.

        # --- Clients v2+ ---
        # (getting headers, source and packages done with GETs now).
        self.functions.append('login')
        self.functions.append('listChannels')
        self.functions.append('subscribeChannels')
        self.functions.append('unsubscribeChannels')
        self.functions.append('history')
        self.functions.append('solvedep')
        self.functions.append('solveDependencies')
        self.functions.append('solveDependencies_arch')
        self.functions.append('solveDependencies_with_limits')

    def auth_system(self, action, system_id):
        # Stuff the action in the headers:
        transport = rhnFlags.get('outputTransportOptions')
        transport['X-RHN-Action'] = action
        return rhnHandler.auth_system(self, system_id)

    def login(self, system_id, extra_data={}):
        """ Clients v2+
            Log in routine.
            Return a dictionary of session token/channel information.
            Also sets this information in the headers.
        """
        log_debug(5, system_id)
        # Authenticate the system certificate. We need the user record
        # to generate the tokens
        self.load_user = 1
        server = self.auth_system('login', system_id)
        # log the entry
        log_debug(1, self.server_id)
        # Update the capabilities list
        rhnCapability.update_client_capabilities(self.server_id)
        # Fetch the channels this client is subscribed to
        channels = rhnChannel.getSubscribedChannels(self.server_id)

        rhnServerTime = str(time.time())
        expireOffset = str(CFG.CLIENT_AUTH_TIMEOUT)
        signature = computeSignature(CFG.SECRET_KEY,
                                     self.server_id,
                                     self.user,
                                     rhnServerTime,
                                     expireOffset)

        loginDict = {
            'X-RHN-Server-Id': self.server_id,
            'X-RHN-Auth-User-Id': self.user,
            'X-RHN-Auth': signature,
            'X-RHN-Auth-Server-Time': rhnServerTime,
            'X-RHN-Auth-Expire-Offset': expireOffset,
            # List of lists [[label,last_mod],...]:
            'X-RHN-Auth-Channels': channels
        }

        # Duplicate these values in the headers so that the proxy can
        # intercept and cache them without parseing the xmlrpc.
        transport = rhnFlags.get('outputTransportOptions')
        for k, v in list(loginDict.items()):
            # Special case for channels
            if k.lower() == 'X-RHN-Auth-Channels'.lower():
                # Concatenate the channel information column-separated
                transport[k] = [':'.join(x) for x in v]
            else:
                transport[k] = v
        log_debug(5, "loginDict", loginDict, transport)

        # store route in DB (schema for RHN 3.1+ only!)
        server_route.store_client_route(self.server_id)

        return loginDict

    def listChannels(self, system_id):
        """ Clients v2+ """
        log_debug(5, system_id)
        # Authenticate the system certificate
        self.auth_system('listChannels', system_id)
        # log the entry
        log_debug(1, self.server_id)
        channelList = rhnChannel.channels_for_server(self.server_id)

        loginDict = {
            'X-RHN-Server-Id': self.server_id,
            'X-RHN-Auth-Channels': rhnChannel.getSubscribedChannels(self.server_id),
        }

        # Duplicate these values in the headers so that the proxy can
        # intercept and cache them without parseing the xmlrpc.
        transport = rhnFlags.get('outputTransportOptions')
        for k, v in list(loginDict.items()):
            # Special case for channels
            if k.lower() == 'x-rhn-auth-channels'.lower():
                # Concatenate the channel information column-separated
                transport[k] = [':'.join(x) for x in v]
            else:
                transport[k] = v
        return channelList

    def subscribeChannels(self, system_id, channelNames, username, passwd):
        """ Clients v2+ """
        add_to_seclist(passwd)
        log_debug(5, system_id, channelNames, username, passwd)
        # Authenticate the system certificate
        self.auth_system('subscribeChannel', system_id)
        # log the entry
        log_debug(1, self.server_id, channelNames)
        server_lib.snapshot_server(self.server_id, 'Base Channel Updated')
        for channelName in channelNames:
            if NONSUBSCRIBABLE_CHANNELS.search(channelName):
                raise rhnFault(73, explain=False)
            else:
                rhnChannel.subscribe_channel(self.server_id, channelName,
                                             username, passwd)
        return 0

    def unsubscribeChannels(self, system_id, channelNames, username, passwd):
        """ Clients v2+ """
        add_to_seclist(passwd)
        log_debug(3)
        # Authenticate the system certificate
        self.auth_system('unsubscribeChannel', system_id)
        # log the entry
        log_debug(1, self.server_id, channelNames)
        for channelName in channelNames:
            rhnChannel.unsubscribe_channel(self.server_id, channelName,
                                           username, passwd)
        return 0

    def solvedep(self, system_id, deps):
        """ Clients v1-
            Solve dependencies for a given dependency problem list.
            IN:  a dependency problem list: [name, name, name, ...]
            RET: a package list: [[n,v,r,e],[n,v,r,e],...] That solves the
                 dependencies.
        """
        log_debug(4, system_id)
        return self.__solveDep(system_id, deps, action="solvedep",
                               clientVersion=1)

    def solveDependencies(self, system_id, deps):
        """ Clients v2+
            Solve dependencies for a given dependency problem list (newer version)
            IN:  a dependency problem list: [name, name, name, ...]
            RET: a hash {name: [[n, v, r, e], [n, v, r, e], ...], ...}
        """
        log_debug(4, system_id)
        return self.__solveDep(system_id, deps, action="solvedep",
                               clientVersion=2)

    def solveDependencies_arch(self, system_id, deps):
        """ Does the same thing as solve_dependencies, but also returns the architecture label with the
            package info.
            IN:  a dependency problem list: [name, name, name, ...]
            RET: a hash {name: [[n, v, r, e, a], [n, v, r, e, a], ...], ...}
        """
        log_debug(4, system_id)
        return self.__solveDep_arch(system_id, deps, action="solvedep",
                                    clientVersion=2)

    def solveDependencies_with_limits(self, system_id, deps, all=0, limit_operator=None, limit=None):
        """ This version of solve_dependencies allows the caller to get all of the packages that solve a
            dependency and limit the packages that are returned to those that match the criteria defined
            by limit_operator and limit. This version of the function also returns the architecture label
            of the package[s] that get returned.

            limit_operator can be any of: '<', '<=', '==', '>=', or '>'.
            limit is a a string of the format [epoch:]name-version-release
            deps is a list of filenames that the packages that are returned must provide.
            version is the version of the client that is calling the function.
        """
        log_debug(4, system_id)
        return self.__solveDep_with_limits(system_id, deps, action="solvedep",
                                           clientVersion=2, all=all, limit_operator=limit_operator, limit=limit)

    def history(self, system_id, summary, body=""):
        """ Clients v2+
            Add a history log for a performed action
        """
        log_debug(5, system_id, summary, body)
        # Authenticate the system certificate
        server = self.auth_system('history', system_id)
        # log the entry
        log_debug(1, self.server_id)
        # XXX: Probably this should be a non fatal error...
        server.add_history(summary, body)
        server.save_history()
        return 0

    # --- PRIVATE METHODS ---

    def __solveDep_prepare(self, system_id, deps, action, clientVersion):
        """ Response for clients:
                version 1: list
                version 2: hash
        """
        log_debug(7, system_id, deps, action, clientVersion)
        faultString = _("Invalid value %s (%s)")
        if type(deps) not in (ListType, TupleType):
            log_error("Invalid argument type", type(deps))
            raise rhnFault(30, faultString % (deps, type(deps)))
        for dep in deps:
            if type(dep) is not StringType:
                log_error("Invalid dependency member", type(dep))
                raise rhnFault(30, faultString % (dep, type(dep)))
        # Ignore empty strings
        deps = list(filter(len, deps))
        # anything left to do?
        if not deps:
            return []
        # Authenticate the system certificate
        server = self.auth_system(action, system_id)
        log_debug(1, self.server_id, action, "items: %d" % len(deps))
        return deps

    def __solveDep(self, system_id, deps, action, clientVersion):
        """ Response for clients:
                version 1: list
                version 2: hash
        """
        log_debug(5, system_id, deps, action, clientVersion)
        result = self.__solveDep_prepare(system_id, deps, action, clientVersion)
        if result:
            # Solve dependencies
            result = rhnDependency.solve_dependencies(self.server_id,
                                                      result, clientVersion)
        return result

    def __solveDep_arch(self, system_id, deps, action, clientVersion):
        """ Response for clients:
                version 1: list
                version 2: hash
        """
        log_debug(5, system_id, deps, action, clientVersion)
        result = self.__solveDep_prepare(system_id, deps, action, clientVersion)
        if result:
            # Solve dependencies
            result = rhnDependency.solve_dependencies_arch(self.server_id,
                                                           result, clientVersion)
        return result

    def __solveDep_with_limits(self, system_id, deps, action, clientVersion, all=0, limit_operator=None, limit=None):
        """ Response for clients:
                version 1: list
                version 2: hash
        """
        log_debug(5, system_id, deps, action, clientVersion)
        result = self.__solveDep_prepare(system_id, deps, action, clientVersion)
        if result:
            # Solve dependencies
            result = rhnDependency.solve_dependencies_with_limits(self.server_id,
                                                                  deps, clientVersion, all, limit_operator, limit)
        return result


class Servers(rhnHandler):

    """ A class to handle the site selection... """

    def __init__(self):
        """Servers Class Constructor. """
        rhnHandler.__init__(self)
        self.functions.append('get')
        self.functions.append('list')

    def get(self, *junk):
        """ Older funtion that can be a noop. """
        return []

    def list(self, systemid=None):
        """ Returns a list of available servers the client can connect to. """
        servers_list = [
            {
                'server':   'xmlrpc.rhn.redhat.com',
                'handler':   '/XMLRPC',
                'description':   'XML-RPC Server',
                'location':   'United States',
            },
        ]
        return servers_list
  07070100000184000041FD0000000000000000000000016290A0C100000000000000000000000000000000000000000000002300000000spacewalk-backend/server/importlib    07070100000185000081B40000000000000000000000016290A0C1000001D6000000000000000000000000000000000000002C00000000spacewalk-backend/server/importlib/Makefile   # Makefile for the import code
#

TOP	= ../..

SUBDIR	= server/importlib

SPACEWALK_FILES	= __init__ archImport backendLib backendOracle backend backend_checker \
            channelImport debPackage errataCache errataImport headerSource importLib \
	    kickstartImport mpmSource orgImport contentSourcesImport \
            packageImport productNamesImport packageUpload userAuth supportInformationImport \
            suseProductsImport

include $(TOP)/Makefile.defs
  07070100000186000081B40000000000000000000000016290A0C100000272000000000000000000000000000000000000002F00000000spacewalk-backend/server/importlib/__init__.py    # Copyright (c) 2008--2013 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#


__all__ = []
  07070100000187000081B40000000000000000000000016290A0C10000149A000000000000000000000000000000000000003100000000spacewalk-backend/server/importlib/archImport.py  #
# Copyright (c) 2008--2015 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#
#
# Arch import process
#

from .importLib import Import


class ArchImport(Import):
    backend_method = ''

    def submit(self):
        meth = getattr(self.backend, self.backend_method)
        meth(self.batch)
        self.backend.commit()


class CPUArchImport(ArchImport):
    backend_method = 'processCPUArches'


class TypedArchImport(ArchImport):

    def preprocess(self):
        self.arch_types = {}
        for item in self.batch:
            arch_type_label = item['arch-type-label']
            arch_type_name = item['arch-type-name']
            self.arch_types[arch_type_label] = arch_type_name

    def fix(self):
        self.backend.lookupArchTypes(self.arch_types)
        for item in self.batch:
            item['arch_type_id'] = self.arch_types[item['arch-type-label']]


class ChannelArchImport(TypedArchImport):
    backend_method = 'processChannelArches'


class PackageArchImport(TypedArchImport):
    backend_method = 'processPackageArches'


class ServerArchImport(TypedArchImport):
    backend_method = 'processServerArches'


class BaseArchCompatImport(Import):
    # Things that have to be overridden in subclasses
    arches1_lookup_method_name = ''
    arches2_lookup_method_name = ''
    arches1_name = ''
    arches2_name = ''
    arches1_field_name = ''
    arches2_field_name = ''
    submit_method_name = ''

    def __init__(self, batch, backend):
        Import.__init__(self, batch, backend)
        self.arches1 = {}
        self.arches2 = {}

    def preprocess(self):
        # Build the hashes keyed on the label
        for entry in self.batch:
            self.arches1[entry[self.arches1_name]] = None
            self.arches2[entry[self.arches2_name]] = None

    def fix(self):
        # Look up the arches
        getattr(self.backend, self.arches1_lookup_method_name)(self.arches1)
        getattr(self.backend, self.arches2_lookup_method_name)(self.arches2)
        self._postprocess()

    def _postprocess(self):
        for entry in self.batch:
            arch1_name = entry[self.arches1_name]
            val = self.arches1.get(arch1_name)
            if not val:
                raise ValueError("Unsupported arch %s" % arch1_name)
            entry[self.arches1_field_name] = val

            arch2_name = entry[self.arches2_name]
            val = self.arches2.get(arch2_name)
            if not val:
                raise ValueError("Unsupported arch %s" % arch2_name)
            entry[self.arches2_field_name] = val

    def submit(self):
        getattr(self.backend, self.submit_method_name)(self.batch)
        self.backend.commit()


class ServerPackageArchCompatImport(BaseArchCompatImport):
    arches1_lookup_method_name = 'lookupServerArches'
    arches2_lookup_method_name = 'lookupPackageArches'
    arches1_name = 'server-arch'
    arches2_name = 'package-arch'
    arches1_field_name = 'server_arch_id'
    arches2_field_name = 'package_arch_id'
    submit_method_name = 'processServerPackageArchCompatMap'


class ServerChannelArchCompatImport(BaseArchCompatImport):
    arches1_lookup_method_name = 'lookupServerArches'
    arches2_lookup_method_name = 'lookupChannelArches'
    arches1_name = 'server-arch'
    arches2_name = 'channel-arch'
    arches1_field_name = 'server_arch_id'
    arches2_field_name = 'channel_arch_id'
    submit_method_name = 'processServerChannelArchCompatMap'


class ChannelPackageArchCompatImport(BaseArchCompatImport):
    arches1_lookup_method_name = 'lookupChannelArches'
    arches2_lookup_method_name = 'lookupPackageArches'
    arches1_name = 'channel-arch'
    arches2_name = 'package-arch'
    arches1_field_name = 'channel_arch_id'
    arches2_field_name = 'package_arch_id'
    submit_method_name = 'processChannelPackageArchCompatMap'


class ServerGroupServerArchCompatImport(BaseArchCompatImport):
    arches1_lookup_method_name = 'lookupServerArches'
    arches2_lookup_method_name = 'lookupServerGroupTypes'
    arches1_name = 'server-arch'
    arches2_name = 'server-group-type'
    arches1_field_name = 'server_arch_id'
    arches2_field_name = 'server_group_type'
    submit_method_name = 'processServerGroupServerArchCompatMap'

    # some entitlements are no longer supported, ignore any of them for
    # backwards compatibility
    def _postprocess(self):
        self.batch[:] = [entry for entry in self.batch if
                         entry[self.arches2_name] not in [
                             'monitoring_entitled', 'sw_mgr_entitled',
                             'provisioning_entitled', 'nonlinux_entitled',
                             'virtualization_host_platform']]
        BaseArchCompatImport._postprocess(self)
  07070100000188000081B40000000000000000000000016290A0C10001A88E000000000000000000000000000000000000002E00000000spacewalk-backend/server/importlib/backend.py #
# Copyright (c) 2008--2017 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#
#
# Generic DB backend
#

import copy
from datetime import datetime
import string
import sys

from uyuni.common.usix import raise_with_tb
from uyuni.common import rhn_rpm
from spacewalk.common.rhnConfig import CFG
from spacewalk.common.rhnException import rhnFault
from spacewalk.common.rhnLog import log_debug
from uyuni.common.stringutils import to_string
from spacewalk.server import rhnSQL, rhnChannel, taskomatic
from .importLib import Diff, Package, IncompletePackage, Erratum, \
    AlreadyUploadedError, InvalidPackageError, TransactionError, \
    SourcePackage
from .backendLib import TableCollection, sanitizeValue, TableDelete, \
    TableUpdate, TableLookup, addHash, TableInsert

sequences = {
    'rhnPackageCapability': 'rhn_pkg_capability_id_seq',
    'rhnPackage': 'rhn_package_id_seq',
    'rhnSourceRPM': 'rhn_sourcerpm_id_seq',
    'rhnPackageGroup': 'rhn_package_group_id_seq',
    'rhnErrata': 'rhn_errata_id_seq',
    'rhnChannel': 'rhn_channel_id_seq',
    'rhnChannelProduct': 'rhn_channelprod_id_seq',
    'rhnPackageSource': 'rhn_package_source_id_seq',
    'rhnChannelFamily': 'rhn_channel_family_id_seq',
    'rhnCVE': 'rhn_cve_id_seq',
    'rhnChannelArch': 'rhn_channel_arch_id_seq',
    'rhnPackageArch': 'rhn_package_arch_id_seq',
    'rhnServerArch': 'rhn_server_arch_id_seq',
    'rhnCPUArch': 'rhn_cpu_arch_id_seq',
    'rhnErrataFile': 'rhn_erratafile_id_seq',
    'rhnKickstartableTree': 'rhn_kstree_id_seq',
    'rhnArchType': 'rhn_archtype_id_seq',
    'rhnPackageChangeLogRec': 'rhn_pkg_cl_id_seq',
    'rhnPackageChangeLogData': 'rhn_pkg_cld_id_seq',
    'rhnContentSource': 'rhn_chan_content_src_id_seq',
    'suseProductFile': 'suse_prod_file_id_seq',
    'suseMdKeyword': 'suse_mdkeyword_id_seq',
    'suseEula': 'suse_eula_id_seq',
    'suseProducts': 'suse_products_id_seq',
    'suseSCCRepository': 'suse_sccrepository_id_seq',
    'suseProductSCCRepository': 'suse_prdrepo_id_seq'
}


class Backend:
    # This object is initialized by the specific subclasses (e.g.
    # OracleBackend)
    tables = TableCollection()
    # TODO: Some reason why we're passing a module in here? Seems to
    # always be rhnSQL anyhow...

    def __init__(self, dbmodule):
        self.dbmodule = dbmodule
        self.sequences = {}

    # TODO: Why is there a pseudo-constructor here instead of just using
    # __init__?
    def init(self):
        # Initializes the database connection objects
        # This function has to be called on a newly defined Backend object
        # Initialize sequences
        for k, v in list(sequences.items()):
            self.sequences[k] = self.dbmodule.Sequence(v)
        # TODO: Why do we return a reference to ourselves? If somebody called
        # this method they already have a reference...
        return self

    def setDateFormat(self, format):
        sth = self.dbmodule.prepare("alter session set nls_date_format ='%s'"
                                    % format)
        sth.execute()
        sth = self.dbmodule.prepare("alter session set nls_timestamp_format ='%s'"
                                    % format)
        sth.execute()

    def processCapabilities(self, capabilityHash):
        if not capabilityHash:
            return

        sql = """
            WITH
              wanted (ordering, name, version) AS (
                VALUES %s
              ),
              missing AS (
                SELECT nextval('rhn_pkg_capability_id_seq') AS id, wanted.*
                  FROM wanted
                  LEFT JOIN rhnPackageCapability
                    ON rhnPackageCapability.name = wanted.name
                      AND rhnPackageCapability.version IS NOT DISTINCT FROM wanted.version
                  WHERE rhnPackageCapability.id IS NULL
              )
              INSERT INTO rhnPackageCapability(id, name, version)
                SELECT id, name, version
                  FROM missing
                  ORDER BY ordering
                ON CONFLICT DO NOTHING
        """
        sorted_capabilities = sorted(capabilityHash.keys(), key=lambda k:(k[0], k[1] or ''))
        wanted = [(i, key[0], None if key[1] == '' else key[1]) for i, key in enumerate(sorted_capabilities)]
        h = self.dbmodule.prepare(sql)
        h.execute_values(sql, wanted, fetch=False)

        sql = """
            WITH
              wanted (ordering, name, version) AS (
                VALUES %s
              )
              SELECT wanted.name, wanted.version, rhnPackageCapability.id
                FROM wanted
                JOIN rhnPackageCapability
                  ON rhnPackageCapability.name = wanted.name
                    AND rhnPackageCapability.version IS NOT DISTINCT FROM wanted.version
        """
        h = self.dbmodule.prepare(sql)
        capabilities = h.execute_values(sql, wanted)

        for capability in capabilities:
            capabilityHash[(capability[0], capability[1] or '')] = capability[2]

    def processChangeLog(self, changelogHash):
        if CFG.has_key('package_import_skip_changelog') and CFG.package_import_skip_changelog:
            return

        if not changelogHash:
            return

        sql = """
            WITH wanted (ordering, name, time, text) AS (
              VALUES %s
            ),
            missing AS (
              SELECT nextval('rhn_pkg_cld_id_seq') AS id, wanted.*
                FROM wanted
                LEFT JOIN rhnPackageChangeLogData
                    ON rhnPackageChangeLogData.name = wanted.name
                      AND rhnPackageChangeLogData.time = wanted.time
                      AND rhnPackageChangeLogData.text = wanted.text
                WHERE rhnPackageChangeLogData.id IS NULL
            )
            INSERT INTO rhnPackageChangeLogData(id, name, time, text)
              SELECT id, name, time, text
                FROM missing
                ORDER BY ordering
              ON CONFLICT DO NOTHING
        """
        values = [(i, key[0], datetime.strptime(key[1], '%Y-%m-%d %H:%M:%S'), key[2]) for i, key in enumerate(sorted(changelogHash.keys()))]
        h = self.dbmodule.prepare(sql)
        h.execute_values(sql, values, fetch=False)

        sql = """
            WITH wanted (ordering, name, time, text) AS (
              VALUES %s
            )
            SELECT wanted.name, wanted.time, wanted.text, rhnPackageChangeLogData.id
              FROM wanted
              JOIN rhnPackageChangeLogData
                  ON rhnPackageChangeLogData.name = wanted.name
                    AND rhnPackageChangeLogData.time = wanted.time
                    AND rhnPackageChangeLogData.text = wanted.text
        """
        h = self.dbmodule.prepare(sql)
        changelogs = h.execute_values(sql, values)

        for changelog in changelogs:
            changelogHash[(changelog[0], changelog[1].strftime('%Y-%m-%d %H:%M:%S'), changelog[2])] = changelog[3]


    def processSuseProductFiles(self, prodfileHash):
        sql = """
            SELECT spf.id
              FROM suseProductFile spf
             WHERE spf.name = :name
               AND spf.evr_id = :evr_id
               AND spf.package_arch_id = :package_arch_id
               AND spf.vendor = :vendor
               AND spf.summary = :summary
               AND spf.description = :description
        """
        h = self.dbmodule.prepare(sql)
        toinsert = [[], [], [], [], [], [], []]
        for name, evr_id, package_arch_id, vendor, summary, description in list(prodfileHash.keys()):
            val = {}
            _buildExternalValue(val, { 'name'        : name,
                                       'evr_id'      : evr_id,
                                       'package_arch_id' : package_arch_id,
                                       'vendor'      : vendor,
                                       'summary'     : summary,
                                       'description' : description
                                      }, self.tables['suseProductFile'])
            h.execute(name=val['name'], evr_id=val['evr_id'], package_arch_id=val['package_arch_id'],
                      vendor=val['vendor'], summary=val['summary'], description=val['description'])
            row = h.fetchone_dict()
            if row:
                prodfileHash[(name, evr_id, package_arch_id, vendor, summary, description)] = row['id']
                continue

            id = self.sequences['suseProductFile'].next()
            prodfileHash[(name, evr_id, package_arch_id, vendor, summary, description)] = id

            toinsert[0].append(id)
            toinsert[1].append(val['name'])
            toinsert[2].append(val['evr_id'])
            toinsert[3].append(val['package_arch_id'])
            toinsert[4].append(val['vendor'])
            toinsert[5].append(val['summary'])
            toinsert[6].append(val['description'])

        if not toinsert[0]:
            # Nothing to do
            return

        sql = """
            INSERT INTO suseProductFile (id, name, evr_id, package_arch_id, vendor, summary, description)
            VALUES (:id, :name, :evr_id, :package_arch_id, :vendor, :summary, :description)"""
        h = self.dbmodule.prepare(sql)
        h.executemany(id=toinsert[0], name=toinsert[1], evr_id=toinsert[2], package_arch_id=toinsert[3],
                      vendor=toinsert[4], summary=toinsert[5], description=toinsert[6])

    def processSuseEulas(self, eulaHash):
        query_lookup = """
            SELECT id
              FROM suseEula
             WHERE checksum = :checksum
        """
        h_lookup = self.dbmodule.prepare(query_lookup)

        query_insert = """
            INSERT INTO suseEula (id, text, checksum)
            VALUES (:id, :text, :checksum)"""
        h_insert = self.dbmodule.prepare(query_insert, blob_map={ 'text' : 'text' })

        for text, checksum in list(eulaHash.keys()):
            val = {}
            _buildExternalValue(val, { 'text'     : text,
                                       'checksum' : checksum
                                     }, self.tables['suseEula'])
            h_lookup.execute(checksum=val['checksum'])
            row = h_lookup.fetchone_dict()
            if row:
                eulaHash[(text, checksum)] = row['id']
                continue

            id = self.sequences['suseEula'].next()
            eulaHash[(text, checksum)] = id
            h_insert.execute(id=id, text=to_string(val['text']), checksum=val['checksum'])

    def processCVEs(self, cveHash):
        # First figure out which CVE's are already inserted
        sql = "select id from rhnCVE where name = :name"
        h = self.dbmodule.prepare(sql)
        toinsert = [[], []]

        for cve_name in list(cveHash.keys()):
            h.execute(name=cve_name)
            row = h.fetchone_dict()

            if row:
                cveHash[cve_name] = row['id']
                continue

            # Generate an id
            id = self.sequences['rhnCVE'].next()

            cveHash[cve_name] = id

            toinsert[0].append(id)
            toinsert[1].append(cve_name)

        if not toinsert[0]:
            # Nothing to do
            return

        sql = "insert into rhnCVE (id, name) values (:id, :name)"
        h = self.dbmodule.prepare(sql)
        h.executemany(id=toinsert[0], name=toinsert[1])

    def processExtraTags(self, extraTags):
        if not extraTags:
            return
        sql = """
            WITH wanted (ordering, name) AS (
              VALUES %s
            ),
            missing AS (
              SELECT nextval('rhn_package_extra_tags_keys_id_seq') AS id, wanted.*
                FROM wanted
                    LEFT JOIN rhnPackageExtraTagKey ON rhnPackageExtraTagKey.name = wanted.name
               WHERE rhnPackageExtraTagKey.id IS NULL
            )
            INSERT INTO rhnPackageExtraTagKey (id, name)
                SELECT id, name from missing
                ORDER BY ordering
                ON CONFLICT DO NOTHING
        """
        values = [(i, key) for i, key in enumerate(sorted(extraTags.keys()))]
        if not values:
            return
        h = self.dbmodule.prepare(sql)
        r = h.execute_values(sql, values, fetch=False)

        sql = """
            WITH wanted (ordering, name) AS (
              VALUES %s
            )
            SELECT rhnPackageExtraTagKey.name, rhnPackageExtraTagKey.id
              FROM wanted
              JOIN rhnPackageExtraTagKey ON rhnPackageExtraTagKey.name = wanted.name
        """
        h = self.dbmodule.prepare(sql)
        tags = h.execute_values(sql, values)
        for tag in tags:
            extraTags[tag[0]] = tag[1]

    def lookupErrataFileTypes(self, hash):
        hash.clear()
        h = self.dbmodule.prepare("select id, label from rhnErrataFileType")
        h.execute()
        while 1:
            row = h.fetchone_dict()
            if not row:
                break
            hash[row['label']] = row['id']
        return hash

    def __lookupArches(self, archHash, table):
        if not archHash:
            return

        sql = "select id from %s where label = :name" % table
        h = self.dbmodule.prepare(sql)
        for k in list(archHash.keys()):
            h.execute(name=str(k))
            row = h.fetchone_dict()
            if row:
                archHash[k] = row['id']
            # Else, it's an unsupported architecture

    def lookupChannelArches(self, archHash):
        return self.__lookupArches(archHash, 'rhnChannelArch')

    def lookupPackageArches(self, archHash):
        return self.__lookupArches(archHash, 'rhnPackageArch')

    def lookupServerArches(self, archHash):
        return self.__lookupArches(archHash, 'rhnServerArch')

    def lookupArchTypes(self, arch_types_hash):
        h = self.dbmodule.prepare(
            "select id, name from rhnArchType where label = :label")
        seq = self.sequences['rhnArchType']
        updates = [[], []]
        inserts = [[], [], []]
        results = {}
        for label, name in list(arch_types_hash.items()):
            h.execute(label=label)
            row = h.fetchone_dict()
            if not row:
                next_id = seq.next()
                inserts[0].append(next_id)
                inserts[1].append(label)
                inserts[2].append(name)
                results[label] = next_id
                continue
            aid = row['id']
            results[label] = aid
            if name == row['name']:
                # Nothing to do
                continue
            updates[0].append(aid)
            updates[1].append(name)
        if inserts[0]:
            h = self.dbmodule.prepare("""
                    insert into rhnArchType (id, label, name)
                    values (:id, :label, :name)
            """)
            h.executemany(id=inserts[0], label=inserts[1], name=inserts[2])
        if updates[0]:
            h = self.dbmodule.prepare("""
                    update rhnArchType
                       set name = :name
                     where id = :id
            """)
            h.executemany(id=updates[0], name=updates[1])

        # Finally, update the hash
        arch_types_hash.update(results)

    def lookupPackageArchType(self, pkg_arch_id):
        h = self.dbmodule.prepare("""
                select at.label
                  from rhnPackageArch pa
                  join rhnArchType at on pa.arch_type_id = at.id
                 where pa.id = :pkg_arch_id""")
        h.execute(pkg_arch_id=pkg_arch_id)
        row = h.fetchone_dict()
        if row:
            return row['label']
        return None

    def _lookupOrg(self):
        # Returns the org id
        sql = "select min(id) as id from web_customer"
        h = self.dbmodule.prepare(sql)
        h.execute()
        rows = h.fetchall_dict()
        if not rows:
            raise ValueError("No user is created")
        return rows[0]['id']

    def lookupOrg(self, org_name=None):
        if not org_name:
            return self._lookupOrg()
        # Returns id of the org if found, None otherwise
        sql = "select id from web_customer where name = :name"
        h = self.dbmodule.prepare(sql)
        h.execute(name=org_name)
        row = h.fetchone_dict()
        if not row:
            return None
        return row['id']

    def lookupMaster(self, master_label):
        # Returns the master record (if it exists)
        sql = "select * from rhnISSMaster where label = :label"
        h = self.dbmodule.prepare(sql)
        h.execute(label=master_label)
        return h.fetchone_dict()

    def createMaster(self, master_label):
        # Creates a master record with label master_label
        sql = """
            insert into rhnISSMaster (id, label)
            values (sequence_nextval('rhn_issmaster_seq'), :label)
        """
        h = self.dbmodule.prepare(sql)
        h.execute(label=master_label)

    def createMasterOrgs(self, master, orgs):
        # Create master org records
        insert = [[], [], []]
        for org in orgs:
            insert[0].append(master)
            insert[1].append(org['id'])
            insert[2].append(org['name'])
        sql = """
            insert into rhnISSMasterOrgs
                   (id, master_id, master_org_id, master_org_name)
            values (sequence_nextval('rhn_issmasterorgs_seq'),
                   (select id from rhnISSMaster where label = :label),
                   :id, :name)
        """
        h = self.dbmodule.prepare(sql)
        h.executemany(label=insert[0], id=insert[1], name=insert[2])

    def createOrgs(self, orgs):
        # Create local org records
        sql = """
            insert into web_customer (id, name)
            values (sequence_nextval('web_customer_id_seq'), :name)
        """
        h = self.dbmodule.prepare(sql)
        h.executemany(name=orgs)
        sql = "select id, name from web_customer"
        h = self.dbmodule.prepare(sql)
        h.execute()
        rows = h.fetchall_dict()
        ret = {}
        for row in rows:
            ret[row['name']] = row['id']
        return ret

    def updateMasterOrgs(self, master_orgs):
        # Update the master org to local org mapping
        insert = [[], []]
        for org in master_orgs:
            insert[0].append(org['master_id'])
            insert[1].append(org['local_id'])
        sql = """
            update rhnISSMasterOrgs
               set local_org_id=:local
             where master_org_id=:master
        """
        h = self.dbmodule.prepare(sql)
        h.executemany(master=insert[0], local=insert[1])

    def lookupOrgTrusts(self):
        # Return a hash of org trusts
        sql = "select org_id, org_trust_id from rhnTrustedOrgs"
        h = self.dbmodule.prepare(sql)
        h.execute()
        rows = h.fetchall_dict()
        ret = {}
        if rows:
            for row in rows:
                if row['org_id'] not in list(ret.keys()):
                    ret[row['org_id']] = []
                ret[row['org_id']].append(row['org_trust_id'])
        return ret

    def clearOrgTrusts(self, org_id):
        # Delete all trusts involving this org; trusts are always
        # bi-directional
        sql = """
        delete from rhnTrustedOrgs
              where org_id = :org_id
                 or org_trust_id = :org_id
        """
        h = self.dbmodule.prepare(sql)
        h.execute(org_id=org_id)

    def createOrgTrusts(self, trusts):
        # Create org trusts
        insert = [[], []]
        for trust in trusts:
            insert[0].append(trust['org_id'])
            insert[1].append(trust['trust'])
        sql = """
            insert into rhnTrustedOrgs (org_id, org_trust_id)
            values (:id, :trust)
        """
        h = self.dbmodule.prepare(sql)
        h.executemany(id=insert[0], trust=insert[1])

    def lookupOrgMap(self, master_label):
        sql = """
            select imo.master_org_id, imo.master_org_name, imo.local_org_id
              from rhnISSMasterOrgs imo,
                   rhnISSMaster im
             where im.id = imo.master_id
               and im.label = :master_label
        """
        h = self.dbmodule.prepare(sql)
        h.execute(master_label=master_label)
        rows = h.fetchall_dict()
        maps = {'master-name-to-master-id': {},
                'master-id-to-local-id': {}}
        if not rows:
            return maps
        mn_to_mi = {}  # master org name to master org id map
        mi_to_li = {}  # master org id to local org id map
        for org in rows:
            if ('master_org_id' in list(org.keys())
                    and 'master_org_name' in list(org.keys())
                    and org['master_org_id']
                    and org['master_org_name']):
                mn_to_mi[org['master_org_name']] = org['master_org_id']
            if ('master_org_id' in list(org.keys())
                    and 'local_org_id' in list(org.keys())
                    and org['master_org_id']
                    and org['local_org_id']):
                mi_to_li[org['master_org_id']] = org['local_org_id']
        maps['master-name-to-master-id'] = mn_to_mi
        maps['master-id-to-local-id'] = mi_to_li
        return maps

    def lookupChannels(self, hash):
        if not hash:
            return
        sql = "select id, channel_arch_id from rhnChannel where label = :label"
        h = self.dbmodule.prepare(sql)
        for k in list(hash.keys()):
            h.execute(label=k)
            row = h.fetchone_dict()
            if row:
                hash[k] = row
            # Else, it's an unsupported channel

    def lookupChannelPackageArchCompat(self, channelArchHash):
        # Return all the arches compatible with each key of archHash
        sql = """
            select package_arch_id
            from rhnChannelPackageArchCompat
            where channel_arch_id = :channel_arch_id
        """
        h = self.dbmodule.prepare(sql)
        for channel_arch_id in list(channelArchHash.keys()):
            dict = {}
            h.execute(channel_arch_id=channel_arch_id)
            while 1:
                row = h.fetchone_dict()
                if not row:
                    break
                dict[row['package_arch_id']] = None
            channelArchHash[channel_arch_id] = dict

    def lookupServerGroupTypes(self, entries_hash):
        sql = """
            select id
              from rhnServerGroupType
             where label = :label
        """
        h = self.dbmodule.prepare(sql)
        for sgt in list(entries_hash.keys()):
            h.execute(label=sgt)
            row = h.fetchone_dict()
            if not row:
                # server group not found
                continue
            entries_hash[sgt] = row['id']

    def lookupPackageNames(self, nameHash):
        if not nameHash:
            return
        sql = "select LOOKUP_PACKAGE_NAME(:name) id from dual"
        h = self.dbmodule.prepare(sql)
        for k in sorted(nameHash.keys()):
            h.execute(name=k)
            nameHash[k] = h.fetchone_dict()['id']

    def lookupErratum(self, erratum):
        if not erratum:
            return None

        sql = """
            select advisory
              from rhnErrata
             where advisory_name = :advisory_name
        """
        h = self.dbmodule.prepare(sql)
        h.execute(advisory_name=erratum['advisory_name'])
        return h.fetchone_dict()

    def lookupErrataSeverityId(self, erratum):
        """
        for the given severity type retuns the id
        associated in the rhnErratSeverity table.
        """
        if not erratum:
            return None

        sql = """
            select id
              from rhnErrataSeverity
             where label = :severity
        """

        h = self.dbmodule.prepare(sql)

        if 'security_impact' in erratum and erratum['security_impact']:
            #concatenate the severity to reflect the db
            #bz-204374: rhnErrataSeverity tbl has lower case severity values,
            #so we convert severity in errata hash to lower case to lookup.
            severity_label = 'errata.sev.label.' + erratum['security_impact'].lower()
        elif 'severity' in erratum and erratum['severity']:
            severity_label = erratum['severity']
        else:
            return None

        h.execute(severity=severity_label)
        row = h.fetchone_dict()

        if not row:
            log_debug(2, "Invalid severity: %s. Returning None." % severity_label)
            return None

        return row['id']

    def lookupEVRs(self, evrHash, ptype):
        sql = "select LOOKUP_EVR(:epoch, :version, :release, :ptype) id from dual"
        h = self.dbmodule.prepare(sql)
        for evr in sorted(evrHash.keys(), key=lambda k: (str(k[0] or 0), k[1], k[2])):
            epoch, version, release = evr
            if epoch == '' or epoch is None:
                epoch = None
            else:
                epoch = str(epoch)
            h.execute(epoch=epoch, version=version, release=release, ptype=ptype)
            row = h.fetchone_dict()
            if row:
                evrHash[evr] = row['id']

    def lookupChecksums(self, checksumHash):
        if not checksumHash:
            return

        sql = """
            WITH wanted (ordering, checksum_type, checksum) AS (
              VALUES %s
            ),
            missing AS (
              SELECT nextval('rhnchecksum_seq') AS id, rhnChecksumType.id AS checksum_type_id, wanted.*
                FROM wanted
                  JOIN rhnChecksumType ON wanted.checksum_type = rhnChecksumType.label
                  LEFT JOIN rhnChecksum
                    ON rhnChecksum.checksum_type_id = rhnChecksumType.id
                      AND rhnChecksum.checksum = wanted.checksum
                WHERE rhnChecksum.id IS NULL
            )
            INSERT INTO rhnChecksum(id, checksum_type_id, checksum)
              SELECT id, checksum_type_id, checksum
                FROM missing
                ORDER BY ordering
              ON CONFLICT DO NOTHING
        """
        sorted_checksums = sorted(checksumHash.keys(), key=lambda k:(k[0], k[1] or ''))
        values = [(i, key[0], key[1]) for i, key in enumerate(sorted_checksums) if key[1] != '']

        if not values:
            return

        h = self.dbmodule.prepare(sql)
        r = h.execute_values(sql, values, fetch=False)


        sql = """
        WITH wanted (ordering, checksum_type, checksum) AS (
            VALUES %s
          )
          SELECT wanted.checksum_type, wanted.checksum, rhnChecksum.id
            FROM wanted
              JOIN rhnChecksumType ON wanted.checksum_type = rhnChecksumType.label
              JOIN rhnChecksum
                ON rhnChecksum.checksum_type_id = rhnChecksumType.id
                  AND rhnChecksum.checksum = wanted.checksum
        """
        h = self.dbmodule.prepare(sql)
        checksums = h.execute_values(sql, values)

        for checksum in checksums:
            checksumHash[(checksum[0], checksum[1])] = checksum[2]

    def lookupChecksumTypes(self, checksumTypeHash):
        if not checksumTypeHash:
            return
        sql = "select id from rhnChecksumType where label = :label"
        h = self.dbmodule.prepare(sql)
        for l in list(checksumTypeHash.keys()):
            h.execute(label=l)
            row = h.fetchone_dict()
            if row:
                checksumTypeHash[l] = row['id']

    def lookupPackageNEVRAs(self, nevraHash):
        sql = "select LOOKUP_PACKAGE_NEVRA(:name, :evr, :arch) id from dual"
        h = self.dbmodule.prepare(sql)
        for nevra in nevraHash:
            name, evr, arch = nevra
            if arch is None:
                arch = ''
            h.execute(name=name, evr=evr, arch=arch)
            row = h.fetchone_dict()
            if row:
                nevraHash[nevra] = row['id']

    def lookupPackagesByNEVRA(self, nevraHash):
        sql = """
              select id from rhnPackage
              where name_id = :name and
                    evr_id = :evr and
                    package_arch_id = :arch
              """
        h = self.dbmodule.prepare(sql)

        for nevra in nevraHash:
            name, evr, arch = nevra
            h.execute(name=name, evr=evr, arch=arch)
            row = h.fetchone_dict()
            if row:
                nevraHash[nevra] = row['id']

    def lookupPackageKeyId(self, header):
        lookup_keyid_sql = rhnSQL.prepare("""
           select pk.id
             from rhnPackagekey pk,
                  rhnPackageKeyType pkt,
                  rhnPackageProvider pp
            where pk.key_id = :key_id
              and pk.key_type_id = pkt.id
              and pk.provider_id = pp.id
        """)
        sigkeys = rhn_rpm.RPM_Header(header).signatures
        key_id = None  # _key_ids(sigkeys)[0]
        for sig in sigkeys:
            if sig['signature_type'] == 'gpg':
                key_id = sig['key_id']

        lookup_keyid_sql.execute(key_id=key_id)
        keyid = lookup_keyid_sql.fetchall_dict()

        return keyid[0]['id']

    def lookupSourceRPMs(self, hash):
        self.__processHash('lookup_source_name', hash)

    def lookupPackageGroups(self, hash):
        self.__processHash('lookup_package_group', hash)

    def lookupPackages(self, packages, checksums, ignore_missing=0):
        # If nevra is enabled use checksum as primary key
        self.validate_pks()
        for package in packages:
            if not isinstance(package, IncompletePackage):
                raise TypeError("Expected an IncompletePackage instance, found %s" %
                                str(type(package)))
        for package in packages:
            # here we need to figure out which checksum we have in the database
            not_found = None
            for type, chksum in list(package['checksums'].items()):
                package['checksum_type'] = type
                package['checksum'] = chksum
                package['checksum_id'] = checksums[(type, chksum)]
                try:
                    self.__lookupObjectCollection([package], 'rhnPackage')
                    not_found = None
                    break
                except InvalidPackageError:
                    e = sys.exc_info()[1]
                    not_found = (e, sys.exc_info()[2])
            if not_found and not ignore_missing:
                # package is not in database at all
                raise_with_tb(not_found[0], not_found[1])

    def lookupChannelFamilies(self, hash):
        if not hash:
            return
        sql = "select id from rhnChannelFamily where label = :label"
        h = self.dbmodule.prepare(sql)
        for k in list(hash.keys()):
            h.execute(label=k)
            row = h.fetchone_dict()
            if row:
                hash[k] = row['id']
            # Else, it's an unsupported channel

    def lookup_kstree_types(self, hash):
        return self._lookup_in_table('rhnKSTreeType', 'rhn_kstree_type_seq',
                                     hash)

    def lookup_ks_install_types(self, hash):
        return self._lookup_in_table('rhnKSInstallType',
                                     'rhn_ksinstalltype_id_seq', hash)

    def _lookup_in_table(self, table_name, sequence_name, hash):
        t = self.dbmodule.Table(table_name, 'label')
        seq = self.dbmodule.Sequence(sequence_name)
        to_insert = []
        to_update = []
        result = {}
        for label, name in list(hash.items()):
            row = t[label]
            if not row:
                row_id = seq.next()
                result[label] = row_id
                to_insert.append((label, name, row_id))
                continue
            row_id = row['id']
            result[label] = row_id
            if row['name'] != name:
                to_update.append((label, name))
                continue
            # Entry found in the table - nothing more to do

        if to_insert:
            # Have to insert rows
            row_ids = []
            labels = []
            names = []
            for label, name, row_id in to_insert:
                row_ids.append(row_id)
                labels.append(label)
                names.append(name)

            sql = """
                insert into %s (id, label, name) values (:id, :label, :name)
            """
            h = self.dbmodule.prepare(sql % table_name)
            h.executemany(id=row_ids, label=labels, name=names)

        if to_update:
            labels = []
            names = []
            for label, name in to_update:
                labels.append(label)
                names.append(name)

            sql = """
                update %s set name = :name where label = :label
            """
            h = self.dbmodule.prepare(sql % table_name)
            h.executemany(label=labels, name=names)

        # Update the returning value
        hash.clear()
        hash.update(result)
        return hash

    def processChannelArches(self, arches):
        self.__processObjectCollection(arches, 'rhnChannelArch',
                                       uploadForce=4, ignoreUploaded=1, severityLimit=4)

    def processPackageArches(self, arches):
        self.__processObjectCollection(arches, 'rhnPackageArch',
                                       uploadForce=4, ignoreUploaded=1, severityLimit=4)

    def processServerArches(self, arches):
        self.__processObjectCollection(arches, 'rhnServerArch',
                                       uploadForce=4, ignoreUploaded=1, severityLimit=4)

    def processCPUArches(self, arches):
        self.__processObjectCollection(arches, 'rhnCPUArch',
                                       uploadForce=4, ignoreUploaded=1, severityLimit=4)

    def processMasterOrgs(self, orgs):
        self.__processObjectCollection(orgs, 'rhnISSMasterOrgs',
                                       uploadForce=4, ignoreUploaded=1, severityLimit=4)

    def processOrgs(self, orgs):
        self.__processObjectCollection(orgs, 'web_customer',
                                       uploadForce=4, ignoreUploaded=1, severityLimit=4)

    def processServerPackageArchCompatMap(self, entries):
        self.__populateTable('rhnServerPackageArchCompat', entries,
                             delete_extra=1)

    def processServerChannelArchCompatMap(self, entries):
        self.__populateTable('rhnServerChannelArchCompat', entries,
                             delete_extra=1)

    def processChannelPackageArchCompatMap(self, entries):
        self.__populateTable('rhnChannelPackageArchCompat', entries,
                             delete_extra=1)

    def processServerGroupServerArchCompatMap(self, entries):
        self.__populateTable('rhnServerServerGroupArchCompat', entries,
                             delete_extra=1)

    def processPackages(self, packages, uploadForce=0, ignoreUploaded=0,
                        forceVerify=0, transactional=0):
        # Insert/update the packages
        self.validate_pks()

        childTables = {
            'rhnPackageProvides':   'package_id',
            'rhnPackageRequires':   'package_id',
            'rhnPackageConflicts':  'package_id',
            'rhnPackageObsoletes':  'package_id',
            'rhnPackageRecommends': 'package_id',
            'rhnPackageSuggests':   'package_id',
            'rhnPackageSupplements': 'package_id',
            'rhnPackageEnhances': 'package_id',
            'rhnPackageBreaks':     'package_id',
            'rhnPackagePredepends': 'package_id',
            'rhnPackageFile':       'package_id',
            'rhnPackageChangeLogRec':  'package_id',
            'susePackageProductFile':  'package_id',
            'susePackageEula':         'package_id',
            'rhnPackageExtraTag':     'package_id',
        }

        if CFG.has_key('package_import_skip_changelog') and CFG.package_import_skip_changelog:
            del childTables['rhnPackageChangeLogRec']

        for package in packages:
            if not isinstance(package, Package):
                raise TypeError("Expected a Package instance")

            tableList = copy.deepcopy(childTables)

            # older sat packages wont have these fields
            # avoid Null insertions
            if package['header_start'] is None:
                package['header_start'] = -1
                package['header_end'] = -1

            self.__processObjectCollection__([package, ], 'rhnPackage', tableList,
                                             uploadForce=uploadForce, forceVerify=forceVerify,
                                             ignoreUploaded=ignoreUploaded, severityLimit=1,
                                             transactional=transactional)

    def processErrata(self, errata):
        # Insert/update the packages

        childTables = [
            'rhnChannelErrata',
            'rhnErrataBugList',
            'rhnErrataFile',
            'rhnErrataKeyword',
            'rhnErrataPackage',
            'rhnErrataCVE',
        ]

        for erratum in errata:
            if not isinstance(erratum, Erratum):
                raise TypeError("Expected an Erratum instance")

        return self.__processObjectCollection(errata, 'rhnErrata', childTables,
                                              'errata_id', uploadForce=4, ignoreUploaded=1, forceVerify=1,
                                              transactional=1)

    def update_channels_affected_by_errata(self, dml):

        # identify errata that were affected
        affected_errata_ids = {}
        for op_type in ['insert', 'update', 'delete']:
            op_values = getattr(dml, op_type)
            for table_name, values_hash in list(op_values.items()):
                if table_name == 'rhnErrata':
                    field = 'id'
                elif 'errata_id' in values_hash:
                    field = 'errata_id'

                # Now we know in which field to look for changes
                for erratum_id in values_hash[field]:
                    affected_errata_ids[erratum_id] = None

        # Get affected channels
        affected_channel_ids = {}
        h = self.dbmodule.prepare("""
            select channel_id
              from rhnChannelErrata
             where errata_id = :errata_id
        """)
        for errata_id in list(affected_errata_ids.keys()):
            h.execute(errata_id=errata_id)

            channel_ids = h.fetchall_dict() or []
            channel_ids = [x['channel_id'] for x in channel_ids]
            for channel_id in channel_ids:
                affected_channel_ids[channel_id] = errata_id

        # Now update the channels
        update_channel = self.dbmodule.Procedure('rhn_channel.update_channel')
        invalidate_ss = 0

        for channel_id in list(affected_channel_ids.keys()):
            update_channel(channel_id, invalidate_ss)
            h = self.dbmodule.prepare("""
                select advisory from rhnErrata where id = :errata_id
            """)
            h.execute(errata_id=affected_channel_ids[channel_id])
            advisory = h.fetchone()[0]

            channel = rhnChannel.Channel()
            channel.load_by_id(channel_id)
            taskomatic.add_to_repodata_queue(channel.get_label(), "errata",
                                             advisory)

    def processKickstartTrees(self, ks_trees):
        childTables = [
            'rhnKSTreeFile',
            #'rhnKSTreeType',
            #'rhnKSInstallType',
        ]
        self.__processObjectCollection(ks_trees, 'rhnKickstartableTree',
                                       childTables, 'kstree_id', uploadForce=4, forceVerify=1,
                                       ignoreUploaded=1, severityLimit=1, transactional=1)

    def queue_errata(self, errata, timeout=0):
        # timeout is the numer of seconds we want the execution to be delayed
        if not errata:
            return
        # Figure out the errata ids
        errata_channel_ids = []
        for erratum in errata:
            if erratum.ignored:
                # Skip it
                continue
            if erratum.diff_result is not None:
                if erratum.diff_result.level != 0:
                    # New or modified in some way, queue it
                    # XXX we may not want to do this for trivial changes,
                    # but not sure what trivial is
                    for cid in erratum['channels']:
                        errata_channel_ids.append(
                            (erratum.id, cid['channel_id']))

        if not errata_channel_ids:
            # Nothing to do
            return

        hdel = self.dbmodule.prepare("""
            delete from rhnErrataQueue where errata_id = :errata_id
        """)

        h = self.dbmodule.prepare("""
            insert into rhnErrataQueue (errata_id, channel_id, next_action)
            values (:errata_id, :channel_id, current_timestamp + numtodsinterval(:timeout, 'second'))
        """)
        errata_ids = [x[0] for x in errata_channel_ids]
        channel_ids = [x[1] for x in errata_channel_ids]
        timeouts = [timeout] * len(errata_ids)
        hdel.executemany(errata_id=errata_ids)
        h.executemany(errata_id=errata_ids, channel_id=channel_ids, timeout=timeouts)

    def processChannels(self, channels, base_channels):
        childTables = [
            'rhnChannelFamilyMembers', 'rhnReleaseChannelMap',
        ]
        if base_channels:
            childTables.append('rhnDistChannelMap')
        self.__processObjectCollection(channels, 'rhnChannel', childTables,
                                       'channel_id', uploadForce=4, ignoreUploaded=1, forceVerify=1)

    def orgTrustExists(self, org_id, trust_id):
        sql = """
        select *
          from rhnTrustedOrgs
         where org_id = :org_id
           and org_trust_id = :trust_id
        """
        h = self.dbmodule.prepare(sql)
        h.execute(org_id=org_id, trust_id=trust_id)
        row = h.fetchone_dict()
        if row:
            return True
        return False

    def clearChannelTrusts(self, label):
        sql = """
        delete from rhnChannelTrust where channel_id =
        (select id from rhnChannel where label = :label)
        """
        h = self.dbmodule.prepare(sql)
        h.execute(label=label)

    def processChannelTrusts(self, channel_trusts):
        # Create channel trusts
        insert = [[], []]
        for trust in channel_trusts:
            insert[0].append(trust['channel-label'])
            insert[1].append(trust['org-id'])
        sql = """
            insert into rhnChannelTrust (channel_id, org_trust_id)
            values ((select id from rhnChannel where label = :label),
                    :org_id)
        """
        h = self.dbmodule.prepare(sql)
        h.executemany(label=insert[0], org_id=insert[1])

    def processChannelFamilies(self, channels):
        childTables = []
        self.__processObjectCollection(channels, 'rhnChannelFamily',
                                       childTables, 'channel_family_id', uploadForce=4, ignoreUploaded=1,
                                       forceVerify=1)

    def processChannelFamilyMembers(self, channel_families):
        # Channel families now contain channel memberships too
        h_lookup_cfid = self.dbmodule.prepare("""
            select channel_family_id
              from rhnChannelFamilyMembers
             where channel_id = :channel_id
        """)
        cf_ids = []
        c_ids = []
        for cf in channel_families:
            if 'private-channel-family' in cf['label']:
                # Its a private channel family and channel family members
                # will be different from server as this is most likely ISS
                # sync. Don't compare and delete custom channel families.
                continue
            for cid in cf['channel_ids']:
                # Look up channel families for this channel
                h_lookup_cfid.execute(channel_id=cid)
                row = h_lookup_cfid.fetchone_dict()
                if row and row['channel_family_id'] == cf.id:
                    # Nothing to do here, we already have this mapping
                    continue
                # need to delete this entry and add the one for the new
                # channel family
                cf_ids.append(cf.id)
                c_ids.append(cid)
        if not c_ids:
            # We're done
            return

        hdel = self.dbmodule.prepare("""
            delete from rhnChannelFamilyMembers
             where channel_id = :channel_id
        """)
        hins = self.dbmodule.prepare("""
            insert into rhnChannelFamilyMembers (channel_id, channel_family_id)
            values (:channel_id, :channel_family_id)
        """)
        hdel.executemany(channel_id=c_ids)
        hins.executemany(channel_family_id=cf_ids, channel_id=c_ids)

    def processChannelFamilyPermissions(self, channel_families):
        # Since this is not evaluated in rhn_entitlements anymore,
        # make channel families without org globally visible

        cf_ids = [cf.id for cf in channel_families if 'private-channel-family' not in cf['label']]

        h_public_sel = self.dbmodule.prepare("""
            select channel_family_id from rhnPublicChannelFamily
        """)
        h_public_sel.execute()
        
        public_cf_in_db = [x['channel_family_id'] for x in h_public_sel.fetchall_dict() or []]
        public_cf_to_insert = [x for x in cf_ids if x not in public_cf_in_db]

        h_public_ins = self.dbmodule.prepare("""
            insert into rhnPublicChannelFamily (channel_family_id)
            values (:channel_family_id)
        """)
        h_public_ins.executemany(channel_family_id=public_cf_to_insert)

    def processDistChannelMap(self, dcms):
        dcmTable = self.tables['rhnDistChannelMap']
        lookup = TableLookup(dcmTable, self.dbmodule)
        dmlobj = DML([dcmTable.name], self.tables)

        for dcm in dcms:
            if dcm.ignored:
                # Skip it
                continue
            h = lookup.query(dcm)
            row = h.fetchone_dict()
            if not row:
                extObject = {}
                _buildExternalValue(extObject, dcm, dcmTable)
                addHash(dmlobj.insert[dcmTable.name], extObject)
            # Since this table has all the columns in unique constraints, we
            # don't care much about updates

        self.__doDML(dmlobj)

    def processChannelProduct(self, channel):
        """ Associate product with channel """

        channel['channel_product'] = channel['product_name']
        channel['channel_product_version'] = channel['product_version']
        channel['channel_product_beta'] = channel['product_beta']
        channel['channel_product_id'] = self.lookupChannelProduct(channel)

        if not channel['channel_product_id']:
            # If no channel product dont update
            return
        statement = self.dbmodule.prepare("""
            UPDATE rhnChannel
               SET channel_product_id = :channel_product_id
             WHERE id = :id
               AND (channel_product_id is NULL
                OR channel_product_id <> :channel_product_id)
        """)

        statement.execute(id=channel.id,
                          channel_product_id=channel['channel_product_id'])

    def processChannelContentSources(self, channel):
        """ Associate content sources with channel """

        # Which content sources are assigned to this channel
        select_sql = self.dbmodule.prepare("""
            select source_id from rhnChannelContentSource
            where channel_id = :channel_id
        """)

        select_sql.execute(channel_id=channel.id)
        sources_in_db = [x['source_id'] for x in select_sql.fetchall_dict() or []]

        # Which content sources should be assigned to this channel
        sources_needed = []
        if 'content-sources' in channel and channel['content-sources']:
            for source in channel['content-sources']:
                sources_needed.append(self.lookupContentSource(source['label']))

        # What to delete and insert
        sources_to_delete = [x for x in sources_in_db if x not in sources_needed]
        sources_to_insert = [x for x in sources_needed if x not in sources_in_db]

        delete_sql = self.dbmodule.prepare("""
            delete from rhnChannelContentSource
            where source_id = :source_id
            and channel_id = :channel_id
        """)

        insert_sql = self.dbmodule.prepare("""
           insert into rhnChannelContentSource
           (source_id, channel_id)
           values (:source_id, :channel_id)
        """)

        for source_id in sources_to_delete:
            delete_sql.execute(source_id=source_id, channel_id=channel.id)

        for source_id in sources_to_insert:
            insert_sql.execute(source_id=source_id, channel_id=channel.id)

    def processProductNames(self, batch):
        """ Check if ProductName for channel in batch is already in DB.
            If not add it there.
        """
        statement = self.dbmodule.prepare("""
            insert into rhnProductName
                 (id, label, name)
              values (sequence_nextval('rhn_productname_id_seq'),
                      :product_label, :product_name)
        """)

        for channel in batch:
            if not self.lookupProductNames(channel['label']):
                statement.execute(product_label=channel['label'],
                                  product_name=channel['name'])

    def processContentSources(self, batch):
        """ Insert content source into DB """

        childTables = ['rhnContentSourceSsl']
        self.__processObjectCollection(batch, 'rhnContentSource',
                                       childTables, 'content_source_id', uploadForce=4, ignoreUploaded=1,
                                       forceVerify=1)

    def lookupContentSource(self, label):
        """ Get id for given content source """

        sql = self.dbmodule.prepare("""
            select id from rhnContentSource where label = :label and org_id is null
        """)

        sql.execute(label=label)

        content_source = sql.fetchone_dict()

        if content_source:
            return content_source['id']

        return

    def lookupContentSourceType(self, label):
        """ Get id for given content type label """

        sql = self.dbmodule.prepare("""
            select id from rhnContentSourceType where label = :label
        """)

        sql.execute(label=label)

        source_type = sql.fetchone_dict()

        if source_type:
            return source_type['id']

        return

    def lookupProductNames(self, label):
        """ For given label of product return its id.
                 If product do not exist return None
        """
        statement = self.dbmodule.prepare("""
            SELECT id
              FROM rhnProductName
             WHERE label = :label
        """)

        statement.execute(label=label)

        product = statement.fetchone_dict()

        if product:
            return product['id']

        return

    def processSupportInformation(self, batch):
        """Check if SupportInformation is already in DB.
           If not, add it
        """
        insert_support_info = self.dbmodule.prepare("""
            INSERT INTO suseMdData (channel_id, package_id, keyword_id)
            VALUES (:channel_id, :package_id, :keyword_id)
        """)
        delete_support_info = self.dbmodule.prepare("""
            DELETE FROM suseMdData
            WHERE channel_id = :channel_id
              AND package_id = :package_id
              AND keyword_id = :keyword_id
        """)
        _query_keywords = self.dbmodule.prepare("""
            SELECT channel_id, package_id, keyword_id
              FROM suseMdData
        """)
        _query_keywords.execute()
        existing_data = ["%s-%s-%s" % (x['channel_id'], x['package_id'], x['keyword_id']) for x in _query_keywords.fetchall_dict() or []]
        toinsert = [[], [], []]
        todelete = [[], [], []]
        for item in batch:
            ident = "%s-%s-%s" % (item['channel_id'], item['package_id'], item['keyword_id'])
            if ident in existing_data:
                existing_data.remove(ident)
                continue
            toinsert[0].append(int(item['channel_id']))
            toinsert[1].append(int(item['package_id']))
            toinsert[2].append(int(item['keyword_id']))
        for ident in existing_data:
            cid, pid, kid = ident.split('-')
            todelete[0].append(int(cid))
            todelete[1].append(int(pid))
            todelete[2].append(int(kid))
        if todelete[0]:
            delete_support_info.executemany(channel_id=todelete[0], package_id=todelete[1], keyword_id=todelete[2])
        if toinsert[0]:
            insert_support_info.executemany(channel_id=toinsert[0], package_id=toinsert[1], keyword_id=toinsert[2])

    def processSuseProducts(self, batch):
        """Check if SUSE Product is already in DB.
           If yes, update it, if not add it.
        """
        insert_product = self.dbmodule.prepare("""
            INSERT INTO suseProducts (id, name, version, friendly_name, arch_type_id, release, product_id, free, base, release_stage, channel_family_id)
            VALUES (:pid, :name, :version, :friendly_name, :arch_type_id, :release, :product_id, :free, :base, :release_stage, :channel_family_id)
            """)
        delete_product = self.dbmodule.prepare("""
            DELETE FROM suseProducts WHERE product_id = :product_id
            """)
        update_product = self.dbmodule.prepare("""
            UPDATE suseProducts
               SET name = :name,
                   version = :version,
                   friendly_name = :friendly_name,
                   arch_type_id = :arch_type_id,
                   release = :release,
                   free = :free,
                   base = :base,
                   release_stage = :release_stage,
                   channel_family_id = :channel_family_id
             WHERE product_id = :product_id
             """)
        _query_product = self.dbmodule.prepare("""
            SELECT product_id FROM suseProducts
            """)
        _query_product.execute()
        existing_data = ["%s" % (x['product_id']) for x in _query_product.fetchall_dict() or []]
        toinsert = [[], [], [], [], [], [], [], [], [], [], []]
        todelete = [[]]
        toupdate = [[], [], [], [], [], [], [], [], [], []]
        for item in batch:
            if not item['channel_family_id']:
                continue
            ident = "%s" % (item['product_id'])
            if ident in existing_data:
                existing_data.remove(ident)
                toupdate[0].append(item['name'])
                toupdate[1].append(item['version'])
                toupdate[2].append(item['friendly_name'])
                toupdate[3].append(item['arch_type_id'])
                toupdate[4].append(item['release'])
                toupdate[5].append(item['free'])
                toupdate[6].append(item['base'])
                toupdate[7].append(item['release_stage'])
                toupdate[8].append(int(item['channel_family_id']))
                toupdate[9].append(int(item['product_id']))
                continue
            toinsert[0].append(self.sequences['suseProducts'].next())
            toinsert[1].append(item['name'])
            toinsert[2].append(item['version'])
            toinsert[3].append(item['friendly_name'])
            toinsert[4].append(item['arch_type_id'])
            toinsert[5].append(item['release'])
            toinsert[6].append(item['free'])
            toinsert[7].append(item['base'])
            toinsert[8].append(item['release_stage'])
            toinsert[9].append(int(item['channel_family_id']))
            toinsert[10].append(int(item['product_id']))
        for ident in existing_data:
            todelete[0].append(int(ident))
        if todelete[0]:
            delete_product.executemany(product_id=todelete[0])
        if toinsert[0]:
            insert_product.executemany(pid=toinsert[0], name=toinsert[1], version=toinsert[2],
                                       friendly_name=toinsert[3], arch_type_id=toinsert[4],
                                       release=toinsert[5], free=toinsert[6], base=toinsert[7],
                                       release_stage=toinsert[8], channel_family_id=toinsert[9],
                                       product_id=toinsert[10])
        if toupdate[0]:
            update_product.executemany(name=toupdate[0], version=toupdate[1],
                                       friendly_name=toupdate[2], arch_type_id=toupdate[3],
                                       release=toupdate[4], free=toupdate[5], base=toupdate[6],
                                       release_stage=toupdate[7], channel_family_id=toupdate[8],
                                       product_id=toupdate[9])

    def processSuseProductChannels(self, batch):
        """Check if the SUSE ProductChannel is already in DB.
           If yes, update it, if not add it. We get only "mandatory" product channels
           This is jut to update this flag.
        """
        insert_pc = self.dbmodule.prepare("""
            INSERT INTO suseProductChannel
                   (id, product_id, channel_id, mandatory)
            VALUES (sequence_nextval('suse_product_channel_id_seq'), :pid, :cid, 'Y')
            """)
        update_pc = self.dbmodule.prepare("""
            UPDATE suseProductChannel
               SET mandatory = :mand
             WHERE product_id = :pid
               AND channel_id = :cid
             """)
        _query_pc = self.dbmodule.prepare("""
            SELECT product_id, channel_id FROM suseProductChannel
            """)
        _query_pc.execute()
        existing_data = ["%s-%s" % (x['product_id'], x['channel_id']) for x in _query_pc.fetchall_dict() or []]
        toinsert = [[], []]
        toupdate = [[], [], []]
        for item in batch:
            ident = "%s-%s" % (item['product_id'], item['channel_id'])
            if ident in existing_data:
                existing_data.remove(ident)
                toupdate[0].append('Y')
                toupdate[1].append(item['product_id'])
                toupdate[2].append(item['channel_id'])
                continue
            toinsert[0].append(item['product_id'])
            toinsert[1].append(item['channel_id'])
        for ident in existing_data:
            pid, cid = ident.split('-', 1)
            toupdate[0].append('N')
            toupdate[1].append(int(pid))
            toupdate[2].append(int(cid))
        if toinsert[0]:
            insert_pc.executemany(pid=toinsert[0], cid=toinsert[1])
        if toupdate[0]:
            update_pc.executemany(mand=toupdate[0], pid=toupdate[1], cid=toupdate[2])

    def processSuseUpgradePaths(self, batch):
        """Check if the SUSE Upgrade Paths are already in DB.
           If not add it.
        """
        insert_up = self.dbmodule.prepare("""
            INSERT INTO suseUpgradePath
                   (from_pdid, to_pdid)
            VALUES (:from_pdid, :to_pdid)
            """)
        delete_up = self.dbmodule.prepare("""
            DELETE FROM suseUpgradePath
             WHERE from_pdid = :from_pdid
               AND to_pdid = :to_pdid
            """)
        _query_up = self.dbmodule.prepare("""
            SELECT from_pdid, to_pdid FROM suseUpgradePath
            """)
        _query_up.execute()
        existing_data = ["%s-%s" % (x['from_pdid'], x['to_pdid']) for x in _query_up.fetchall_dict() or []]
        toinsert = [[], []]
        todelete = [[], []]
        for item in batch:
            ident = "%s-%s" % (item['from_pdid'], item['to_pdid'])
            if ident in existing_data:
                existing_data.remove(ident)
                continue
            toinsert[0].append(item['from_pdid'])
            toinsert[1].append(item['to_pdid'])
        for ident in existing_data:
            fpdid, tpdid = ident.split('-', 1)
            todelete[0].append(int(fpdid))
            todelete[1].append(int(tpdid))
        if todelete[0]:
            delete_up.executemany(from_pdid=todelete[0], to_pdid=todelete[1])
        if toinsert[0]:
            insert_up.executemany(from_pdid=toinsert[0], to_pdid=toinsert[1])

    def processSuseProductExtensions(self, batch):
        """Check if the SUSE Extensions are already in DB.
           If not add it.
        """
        insert_pe = self.dbmodule.prepare("""
            INSERT INTO suseProductExtension
                   (base_pdid, root_pdid, ext_pdid, recommended)
            VALUES (:product_id, :root_id, :ext_id, :recommended)
            """)
        delete_pe = self.dbmodule.prepare("""
            DELETE FROM suseProductExtension
             WHERE base_pdid = :product_id
               AND root_pdid = :root_id
               AND ext_pdid = :ext_id
            """)
        update_pe = self.dbmodule.prepare("""
            UPDATE suseProductExtension
               SET recommended = :recommended
             WHERE base_pdid = :product_id
               AND root_pdid = :root_id
               AND ext_pdid = :ext_id
        """)
        _query_pe = self.dbmodule.prepare("""
            SELECT base_pdid, root_pdid, ext_pdid FROM suseProductExtension
            """)
        _query_pe.execute()
        existing_data = ["%s-%s-%s" % (x['base_pdid'], x['root_pdid'], x['ext_pdid']) for x in _query_pe.fetchall_dict() or []]
        toinsert = [[], [], [], []]
        todelete = [[], [], []]
        toupdate = [[], [], [], []]
        for item in batch:
            ident = "%s-%s-%s" % (item['product_pdid'], item['root_pdid'], item['ext_pdid'])
            if ident in existing_data:
                existing_data.remove(ident)
                toupdate[0].append(item['recommended'])
                toupdate[1].append(item['product_pdid'])
                toupdate[2].append(item['root_pdid'])
                toupdate[3].append(item['ext_pdid'])
                continue
            toinsert[0].append(item['product_pdid'])
            toinsert[1].append(item['root_pdid'])
            toinsert[2].append(item['ext_pdid'])
            toinsert[3].append(item['recommended'])
        for ident in existing_data:
            product_id, root_id, ext_id = ident.split('-', 2)
            todelete[0].append(int(product_id))
            todelete[1].append(int(root_id))
            todelete[2].append(int(ext_id))
        if todelete[0]:
            delete_pe.executemany(product_id=todelete[0], root_id=todelete[1], ext_id=todelete[2])
        if toinsert[0]:
            insert_pe.executemany(product_id=toinsert[0], root_id=toinsert[1], ext_id=toinsert[2], recommended=toinsert[3])
        if toupdate[0]:
            update_pe.executemany(product_id=toupdate[1], root_id=toupdate[2], ext_id=toupdate[3], recommended=toupdate[0])

    def processSuseProductRepositories(self, batch):
        """Check if the SUSE Product Repositories are already in DB.
           If not add it.
        """
        insert_pr = self.dbmodule.prepare("""
            INSERT INTO suseProductSCCRepository
                   (id, product_id, root_product_id, repo_id, channel_label, parent_channel_label,
                    channel_name, mandatory, update_tag)
            VALUES (:id, :product_id, :root_id, :repo_id, :channel_label, :parent_channel_label,
                    :channel_name, :mandatory, :update_tag)
            """)
        delete_pr = self.dbmodule.prepare("""
            DELETE FROM suseProductSCCRepository
             WHERE product_id = :product_id
               AND root_product_id = :root_id
               AND repo_id = :repo_id
            """)
        update_pr = self.dbmodule.prepare("""
            UPDATE suseProductSCCRepository
               SET channel_label = :channel_label,
                   parent_channel_label = :parent_channel_label,
                   channel_name = :channel_name,
                   mandatory = :mandatory,
                   update_tag = :update_tag
             WHERE product_id = :product_id
               AND root_product_id = :root_id
               AND repo_id = :repo_id
        """)
        _query_pr = self.dbmodule.prepare("""
            SELECT product_id, root_product_id, repo_id FROM suseProductSCCRepository
            """)
        _query_pr.execute()
        existing_data = ["%s-%s-%s" % (x['product_id'], x['root_product_id'], x['repo_id']) for x in _query_pr.fetchall_dict() or []]
        toinsert = [[], [], [], [], [], [], [], [], []]
        todelete = [[], [], []]
        toupdate = [[], [], [], [], [], [], [], []]
        for item in batch:
            ident = "%s-%s-%s" % (item['product_pdid'], item['root_pdid'], item['repo_pdid'])
            if ident in existing_data:
                existing_data.remove(ident)
                toupdate[0].append(item['channel_label'])
                toupdate[1].append(item['parent_channel_label'])
                toupdate[2].append(item['channel_name'])
                toupdate[3].append(item['mandatory'])
                toupdate[4].append(item['update_tag'])
                toupdate[5].append(int(item['product_pdid']))
                toupdate[6].append(int(item['root_pdid']))
                toupdate[7].append(int(item['repo_pdid']))
                continue
            toinsert[0].append(self.sequences['suseProductSCCRepository'].next())
            toinsert[1].append(int(item['product_pdid']))
            toinsert[2].append(int(item['root_pdid']))
            toinsert[3].append(int(item['repo_pdid']))
            toinsert[4].append(item['channel_label'])
            toinsert[5].append(item['parent_channel_label'])
            toinsert[6].append(item['channel_name'])
            toinsert[7].append(item['mandatory'])
            toinsert[8].append(item['update_tag'])
        for ident in existing_data:
            product_id, rootid, repo_id = ident.split('-', 2)
            todelete[0].append(int(product_id))
            todelete[1].append(int(rootid))
            todelete[2].append(int(repo_id))
        if todelete[0]:
            delete_pr.executemany(product_id=todelete[0], root_id=todelete[1], repo_id=todelete[2])
        if toinsert[0]:
            insert_pr.executemany(id=toinsert[0], product_id=toinsert[1], root_id=toinsert[2], repo_id=toinsert[3],
                                  channel_label=toinsert[4], parent_channel_label=toinsert[5],
                                  channel_name=toinsert[6], mandatory=toinsert[7], update_tag=toinsert[8])
        if toupdate[0]:
            update_pr.executemany(product_id=toupdate[5], root_id=toupdate[6], repo_id=toupdate[7],
                                  channel_label=toupdate[0], parent_channel_label=toupdate[1],
                                  channel_name=toupdate[2], mandatory=toupdate[3], update_tag=toupdate[4])

    def processSCCRepositories(self, batch):
        """Check if SCC Repository is already in DB.
           If yes, update it, if not add it.
        """
        # suseSCCRepositoryAuth should be empty in ISS case
        self.dbmodule.prepare("""
            DELETE FROM suseSCCRepositoryAuth
        """).execute()
        insert_repo = self.dbmodule.prepare("""
            INSERT INTO suseSCCRepository (id, scc_id, autorefresh, name, distro_target, description, url, signed, installer_updates)
            VALUES (:rid, :sccid, :autorefresh, :name, :target, :description, :url, :signed, :installer_updates)
            """)
        delete_repo = self.dbmodule.prepare("""
            DELETE FROM suseSCCRepository WHERE scc_id = :sccid
            """)
        update_repo = self.dbmodule.prepare("""
            UPDATE suseSCCRepository
               SET name = :name,
                   autorefresh = :autorefresh,
                   distro_target = :target,
                   description = :description,
                   url = :url,
                   signed = :signed,
                   installer_updates = :installer_updates
             WHERE scc_id = :sccid
             """)
        _query_repo = self.dbmodule.prepare("""
            SELECT scc_id FROM suseSCCRepository
            """)
        _query_repo.execute()
        existing_data = ["%s" % (x['scc_id']) for x in _query_repo.fetchall_dict() or []]
        toinsert = [[], [], [], [], [], [], [], [], []]
        todelete = [[]]
        toupdate = [[], [], [], [], [], [], [], []]
        for item in batch:
            ident = "%s" % item['sccid']
            if ident in existing_data:
                existing_data.remove(ident)
                toupdate[0].append(item['name'])
                toupdate[1].append(item['autorefresh'])
                toupdate[2].append(item['distro_target'])
                toupdate[3].append(item['description'])
                toupdate[4].append(item['url'])
                toupdate[5].append(item['signed'])
                toupdate[6].append(item['installer_updates'])
                toupdate[7].append(item['sccid'])
                continue
            toinsert[0].append(self.sequences['suseSCCRepository'].next())
            toinsert[1].append(item['sccid'])
            toinsert[2].append(item['autorefresh'])
            toinsert[3].append(item['name'])
            toinsert[4].append(item['distro_target'])
            toinsert[5].append(item['description'])
            toinsert[6].append(item['url'])
            toinsert[7].append(item['signed'])
            toinsert[8].append(item['installer_updates'])
        for ident in existing_data:
            todelete[0].append(int(ident))
        if todelete[0]:
            delete_repo.executemany(sccid=todelete[0])
        if toinsert[0]:
            insert_repo.executemany(rid=toinsert[0], sccid=toinsert[1], autorefresh=toinsert[2],
                                    name=toinsert[3], target=toinsert[4], description=toinsert[5],
                                    url=toinsert[6], signed=toinsert[7], installer_updates=toinsert[8])
        if toupdate[0]:
            update_repo.executemany(name=toupdate[0], autorefresh=toupdate[1], target=toupdate[2],
                                    description=toupdate[3], url=toupdate[4], signed=toupdate[5],
                                    installer_updates=toupdate[6], sccid=toupdate[7])

    def processClonedChannels(self, batch):
        """Check if cloned channel info is already in DB.
           If not add it.
        """
        insert_cc = self.dbmodule.prepare("""
            INSERT INTO rhnChannelCloned
                   (original_id, id)
            VALUES (:orig_id, :id)
            """)
        delete_cc = self.dbmodule.prepare("""
            DELETE FROM rhnChannelCloned
             WHERE original_id = :orig_id
               AND id = :id
            """)
        _query_cc = self.dbmodule.prepare("""
            SELECT original_id orig_id, id FROM rhnChannelCloned
            """)
        _query_cc.execute()
        existing_data = ["%s-%s" % (x['orig_id'], x['id']) for x in _query_cc.fetchall_dict() or []]
        toinsert = [[], []]
        todelete = [[], []]
        for item in batch:
            ident = "%s-%s" % (item['orig_id'], item['id'])
            if ident in existing_data:
                existing_data.remove(ident)
                continue
            toinsert[0].append(item['orig_id'])
            toinsert[1].append(item['id'])
        for ident in existing_data:
            fpdid, tpdid = ident.split('-', 1)
            todelete[0].append(int(fpdid))
            todelete[1].append(int(tpdid))
        if todelete[0]:
            delete_cc.executemany(orig_id=todelete[0], id=todelete[1])
        if toinsert[0]:
            insert_cc.executemany(orig_id=toinsert[0], id=toinsert[1])

    def processSuseSubscriptions(self, batch):
        """Check if the Subscriptions are already in DB.
           If yes, update it, if not add it.
        """
        insert_pcf = self.dbmodule.prepare("""
            INSERT INTO rhnPrivateChannelFamily
                   (channel_family_id, org_id)
            VALUES (:cfid, :org_id)
            """)
        _query_pcf = self.dbmodule.prepare("""
            SELECT channel_family_id, org_id FROM rhnPrivateChannelFamily
            """)
        _query_pcf.execute()
        existing_data = ["%s-%s" % (x['channel_family_id'], x['org_id']) for x in _query_pcf.fetchall_dict() or []]
        toinsert = [[], []]
        for item in batch:
            ident = "%s-%s" % (item['channel_family_id'], item['org_id'])
            if ident in existing_data:
                existing_data.remove(ident)
                continue
            if item['channel_family_id']:
                toinsert[0].append(item['channel_family_id'])
                toinsert[1].append(item['org_id'])
        if toinsert[0]:
            insert_pcf.executemany(cfid=toinsert[0],
                                   org_id=toinsert[1])


    def lookupPackageIdFromPackage(self, package):
        if not isinstance(package, IncompletePackage):
            raise TypeError("Expected an IncompletePackage instance, found %s" % \
                            str(type(package)))
        statement = self.dbmodule.prepare("""
            SELECT p.id
              FROM rhnPackage p
              JOIN rhnPackageName pn ON p.name_id = pn.id
              JOIN rhnPackageEVR pe ON p.evr_id = pe.id
              JOIN rhnPackageArch pa ON p.package_arch_id = pa.id
              JOIN rhnChecksumView cv ON p.checksum_id = cv.id
             WHERE pn.name = :name
               AND ( pe.epoch  = :epoch or
                     ( pe.epoch is null and :epoch is null )
                   )
               AND pe.version = :version
               AND pe.release = :release
               AND pa.label = :arch
               AND cv.checksum = :checksum
               AND cv.checksum_type = :checksum_type
        """)

        for type, chksum  in list(package['checksums'].items()):
            if not package['epoch']:
                package['epoch'] = None
            statement.execute(name=package['name'],
                              epoch=package['epoch'],
                              version=package['version'],
                              release=package['release'],
                              arch=package['arch'],
                              checksum=chksum,
                              checksum_type=type)
            pkgid = statement.fetchone_dict() or None
            if pkgid:
                package.id = pkgid['id']
                return

    def lookupSuseProductIdByProductId(self, pid):
        _query = self.dbmodule.prepare("""
            SELECT id FROM suseProducts WHERE product_id = :pid
        """)
        _query.execute(pid=pid)
        res = _query.fetchone_dict()
        if res:
            return res['id']
        return None

    def lookupRepoIdBySCCRepoId(self, rid):
        _query = self.dbmodule.prepare("""
            SELECT id FROM suseSCCRepository WHERE scc_id = :rid
        """)
        _query.execute(rid=rid)
        res = _query.fetchone_dict()
        if res:
            return res['id']
        return None

    def lookupKeyword(self, keyword):
        statement = self.dbmodule.prepare("""
            SELECT id
              FROM suseMdKeyword
             WHERE label = :label
        """)
        statement.execute(label=keyword)
        kid = statement.fetchone_dict()

        if kid:
            return kid['id']
        kid = self.sequences['suseMdKeyword'].next()
        statement = self.dbmodule.prepare("""
            INSERT INTO suseMdKeyword (id, label)
            VALUES (:kid, :label)
        """)
        statement.execute(kid=kid,label=keyword)
        return kid


    # bug #528227
    def lookupChannelOrg(self, label):
        """For given label of channel return its org_id.
           If channel with given label does not exist or is NULL, return None.
        """
        statement = self.dbmodule.prepare("""
            SELECT org_id
              FROM rhnChannel
             WHERE label = :label
        """)

        statement.execute(label=label)
        org_id = statement.fetchone_dict()

        if org_id:
            return org_id

        return

    def lookupChannelProduct(self, channel):
        statement = self.dbmodule.prepare("""
            SELECT id
              FROM rhnChannelProduct
             WHERE product = :product
               AND version = :version
               AND beta = :beta
        """)

        statement.execute(product=channel['channel_product'],
                          version=channel['channel_product_version'],
                          beta=channel['channel_product_beta'])

        product = statement.fetchone_dict()

        if product:
            return product['id']

        return self.createChannelProduct(channel)

    def createChannelProduct(self, channel):
        id = self.sequences['rhnChannelProduct'].next()

        statement = self.dbmodule.prepare("""
            INSERT
              INTO rhnChannelProduct
                   (id, product, version, beta)
            VALUES (:id, :product, :version, :beta)
        """)

        statement.execute(id=id,
                          product=channel['channel_product'],
                          version=channel['channel_product_version'],
                          beta=channel['channel_product_beta'])

        return id

    def subscribeToChannels(self, packages, strict=0):
        hash = {
            'package_id': [],
            'channel_id': [],
        }
        # Keep a list of packages for a channel too, so we can easily compare
        # what's extra, if strict is 1
        channel_packages = {}
        sql = """
            select channel_id
            from rhnChannelPackage
            where package_id = :package_id"""
        affected_channels = {}
        statement = self.dbmodule.prepare(sql)
        for package in packages:
            if package.ignored:
                # Skip it
                continue
            if package.id is None:
                raise InvalidPackageError(package, "Invalid package")
            # Look it up first
            statement.execute(package_id=package.id)
            channels = {}
            while 1:
                row = statement.fetchone_dict()
                if not row:
                    break
                channels[row['channel_id']] = None

            for channelId in list(package['channels'].keys()):
                # Build the channel-package list
                if channelId in channel_packages:
                    cp = channel_packages[channelId]
                else:
                    channel_packages[channelId] = cp = {}
                cp[package.id] = None

                if channelId in channels:
                    # Already subscribed
                    continue
                dict = {
                    'package_id': package.id,
                    'channel_id': channelId,
                }
                if channelId not in affected_channels:
                    modified_packages = ([], [])
                    affected_channels[channelId] = modified_packages
                else:
                    modified_packages = affected_channels[channelId]
                # Package was added to this channel
                modified_packages[0].append(package.id)
                addHash(hash, dict)

        # Packages we'd have to delete
        extra_cp = {
            'package_id': [],
            'channel_id': [],
        }
        if strict:
            # if strict remove the extra packages from the DB
            sql = """
                select package_id
                  from rhnChannelPackage
                 where channel_id = :channel_id
            """
        else:
            # or at least we should delete packages from different org
            sql = """
                select package_id
                  from rhnChannelPackage cp
                  join rhnPackage p
                    on p.id = cp.package_id
                  join rhnChannel c
                    on c.id = cp.channel_id
                 where cp.channel_id = :channel_id
                   and c.org_id != p.org_id
            """

        statement = self.dbmodule.prepare(sql)
        for channel_id, pid_hash in list(channel_packages.items()):
            statement.execute(channel_id=channel_id)
            while 1:
                row = statement.fetchone_dict()
                if not row:
                    break
                package_id = row['package_id']
                if package_id not in pid_hash:
                    # Have to remove it
                    extra_cp['package_id'].append(package_id)
                    extra_cp['channel_id'].append(channel_id)
                    # And mark this channel as being affected
                    if channel_id not in affected_channels:
                        modified_packages = ([], [])
                        affected_channels[channel_id] = modified_packages
                    else:
                        modified_packages = affected_channels[channel_id]
                    # Package was deletef from this channel
                    modified_packages[1].append(package_id)

        self.__doDeleteTable('rhnChannelPackage', extra_cp)
        self.__doInsertTable('rhnChannelPackage', hash)
        # This function returns the channels that were affected
        return affected_channels

    def update_newest_package_cache(self, caller, affected_channels, name_ids=[]):
        # affected_channels is a hash keyed on the channel id, and with a
        # tuple (added_package_list, deleted_package_list) as values
        refresh_newest_package = self.dbmodule.Procedure('rhn_channel.refresh_newest_package')
        update_channel = self.dbmodule.Procedure('rhn_channel.update_channel')
        for channel_id, (added_packages_list, deleted_packages_list) in list(affected_channels.items()):
            try:
                if name_ids:
                    for id in name_ids:
                        refresh_newest_package(channel_id, caller, id)
                else:
                    refresh_newest_package(channel_id, caller, None)
            except rhnSQL.SQLError:
                e = sys.exc_info()[1]
                raise_with_tb(rhnFault(23, str(e[1]), explain=0), sys.exc_info()[2])
            if deleted_packages_list:
                invalidate_ss = 1
            else:
                invalidate_ss = 0
            update_channel(channel_id, invalidate_ss)

    def processSourcePackages(self, packages, uploadForce=0, ignoreUploaded=0,
                              forceVerify=0, transactional=0):
        # Insert/update the packages

        childTables = []

        for package in packages:
            if not isinstance(package, SourcePackage):
                raise TypeError("Expected a Package instance")

        # Process the packages

        self.__processObjectCollection(packages, 'rhnPackageSource', childTables,
                                       'package_id', uploadForce=uploadForce, forceVerify=forceVerify,
                                       ignoreUploaded=ignoreUploaded, severityLimit=1,
                                       transactional=transactional)

    def commit(self):
        self.dbmodule.commit()

    def rollback(self):
        self.dbmodule.rollback()

    def __processHash(self, lookup, hash):
        if not hash:
            # Nothing to do
            return

        h = rhnSQL.prepare("select " + lookup + "(:name) from dual")
        for k in list(hash.keys()):
            h.execute(name=k)
            # saving id
            hash[k] = h.fetchone_dict().popitem()[1]

    def __buildQueries(self, childTables):
        childTableLookups = {}
        queryTempl = "select * from %s where %s = :id"
        for childTableName in childTables:
            childTableLookups[childTableName] = self.dbmodule.prepare(
                queryTempl % (childTableName, childTables[childTableName]))
        return childTableLookups

    def __processObjectCollection(self, objColl, parentTable, childTables=[],
                                  colname=None, **kwargs):
        # Returns the DML object that was processed
        # This helps identify what the changes were

        # XXX this is a total hack keeping tranlating the old interface into the
        # new interface to keep me from having to change all the places in the
        # code that call this method, as there are 10 of them...

        childDict = {}

        for tbl in childTables:
            childDict[tbl] = colname

        return self.__processObjectCollection__(objColl, parentTable, childDict, **kwargs)

    def __processObjectCollection__(self, objColl, parentTable, childTables={},
                                    **kwargs):
        # Returns the DML object that was processed
        # This helps identify what the changes were

        # FIXME I need to break this method apart into smaller method calls that
        # will allow *different* colname fields for different childTables
        # NOTE objColl == packages
        # Process the object collection, starting with parentTable, having
        # colname as a link column between the parent and child tables
        #
        # We create a DML object for the operations we're supposed to perform
        # on the database
        kwparams = {
            # The 'upload force'
            'uploadForce': 0,
            # Raises exceptions when the object is already uploaded
            'ignoreUploaded': 0,
            # Forces a full object verification - including the child tables
            'forceVerify': 0,
            # When the severity is below this limit, the object is not
            # updated
            'severityLimit': 0,
            # All-or-nothing
            'transactional': 0,
        }

        for k, v in list(kwargs.items()):
            if k not in kwparams:
                raise TypeError("Unknown keyword parameter %s" % k)
            if v is not None:
                # Leave the default values in case of a None
                kwparams[k] = v

        uploadForce = kwparams['uploadForce']
        ignoreUploaded = kwparams['ignoreUploaded']
        severityLimit = kwparams['severityLimit']
        transactional = kwparams['transactional']
        forceVerify = kwparams['forceVerify']

        # All the tables affected
        tables = [parentTable] + list(childTables.keys())

        # Build the hash for the operations on the tables
        dml = DML(tables, self.tables)
        # Reverse hash: object id to object for already-uploaded objects
        uploadedObjects = {}
        # Information related to the parent table
        parentTableObj = self.tables[parentTable]
        ptFields = parentTableObj.getFields()
        severityHash = parentTableObj.getSeverityHash()

        # A flag that indicates if something has to be modified beyond the
        # current severity limit
        brokenTransaction = 0

        # Lookup object
        lookup = TableLookup(parentTableObj, self.dbmodule)
        # XXX
        childTableLookups = self.__buildQueries(childTables)
        # For each valid object in the collection, look it up
        #   if it doesn't exist, insert all the associated information
        #   if it already exists:
        #       save it in the uploadedObjects hash for later processing
        #       the object's diff member will contain data if that object
        #         failed to push; the content should be explicit enough about
        #         what failed
        #   The object's diff_result should reliably say if the object was
        #       different in any way, or if it was new. Each field that gets
        #       compared will present its won severity field (or the default
        #       one if not explicitly specified). The "global" severity is the
        #       max of all severities.
        #   New objects will have a diff level of -1
        for object in objColl:
            if object.ignored:
                # Skip it
                continue
            h = lookup.query(object)
            row = h.fetchone_dict()
            if not row:
                # Object does not exist
                id = self.sequences[parentTable].next()
                object.id = id
                extObject = {'id': id}
                _buildExternalValue(extObject, object, parentTableObj)
                addHash(dml.insert[parentTable], extObject)

                # Insert child table information
                for tname in childTables:
                    tbl = self.tables[tname]
                    # Get the list of objects for this package
                    entry_list = object[tbl.getAttribute()]
                    if entry_list is None:
                        continue
                    seq_col = tbl.sequenceColumn
                    new_ids = self.sequences[tbl.name].next_many(len(entry_list)) if seq_col else []
                    for i, entry in enumerate(entry_list):
                        extObject = {childTables[tname]: id}
                        if seq_col:
                            # This table has to insert values in a sequenced
                            # column; since it's a child table and the entry
                            # in the master table is not created yet, there
                            # shouldn't be a problem with uniqueness
                            # constraints
                            new_id = new_ids[i]
                            extObject[seq_col] = new_id
                            # Make sure we initialize the object's sequenced
                            # column as well
                            entry[seq_col] = new_id
                        _buildExternalValue(extObject, entry, tbl)
                        addHash(dml.insert[tname], extObject)
                object.diff_result = Diff()
                # New object
                object.diff_result.level = -1
                continue

            # Already uploaded
            if not ignoreUploaded:
                raise AlreadyUploadedError(object, "Already uploaded")

            # XXX package id set here!!!!!!!!!!
            object.id = row['id']
            # And save the object and the row for later processing
            uploadedObjects[row['id']] = [object, row]

        # Deal with already-uploaded objects
        for objid, (object, row) in list(uploadedObjects.items()):
            # Build the external value
            extObject = {'id': row['id']}
            _buildExternalValue(extObject, object, parentTableObj)
            # Build the DB value
            row = _buildDatabaseValue(row, ptFields)
            # compare them
            object.diff = object.diff_result = Diff()
            diffval = computeDiff(extObject, row, severityHash, object.diff)
            if not forceVerify:
                # If there is enough karma, force the full object check
                # maybe they want the object overwritten
                if uploadForce < object.diff.level and diffval <= severityLimit:
                    # Same object, or not different enough
                    # not enough karma either
                    continue

            localDML = self.__processUploaded(objid, object, childTables,
                                              childTableLookups)

            if uploadForce < object.diff.level:
                # Not enough karma
                if object.diff.level > severityLimit:
                    # Broken transaction - object is too different
                    brokenTransaction = 1
                continue

            # Clean up the object diff since we pushed the package
            object.diff = None

            if diffval:
                # Different parent object
                localDML['update'][parentTable] = [extObject]

            # And transfer the local DML to the global one
            for k, tablehash in list(localDML.items()):
                dmlhash = getattr(dml, k)
                for tname, vallist in list(tablehash.items()):
                    for val in vallist:
                        addHash(dmlhash[tname], val)

        if transactional and brokenTransaction:
            raise TransactionError("Error uploading package source batch")
        return self.__doDML(dml)

    def __processUploaded(self, objid, object, childTables, childTableLookups):
        # Store the DML operations locally
        localDML = {
            'insert': {},
            'update': {},
            'delete': {},
        }

        # Grab the rest of the information
        childTablesInfo = self.__getChildTablesInfo(objid, list(childTables.keys()),
                                                    childTableLookups)

        # Start computing deltas
        for childTableName in childTables:
            # Init the local hashes
            for k in ['insert', 'update', 'delete']:
                localDML[k][childTableName] = []

            dbside = childTablesInfo[childTableName]
            # The child table object
            childTableObj = self.tables[childTableName]
            # The name of the attribute in the parent object
            parentattr = childTableObj.getAttribute()
            # The list of entries associated with the attribute linked to
            # this table
            entrylist = object[parentattr]
            fields = childTableObj.getFields()
            pks = childTableObj.getPK()
            childSeverityHash = childTableObj.getSeverityHash()
            if entrylist is None:
                continue
            for ent in entrylist:
                # Build the primary key
                key = []
                for f in pks:
                    if f == childTables[childTableName]:
                        # Special-case it
                        key.append(objid)
                        continue
                    datatype = fields[f]
                    # Get the proper attribute name for this column
                    attr = childTableObj.getObjectAttribute(f)
                    key.append(sanitizeValue(ent[attr], datatype))
                key = tuple(key)
                # Build the value
                val = {childTables[childTableName]: objid}
                if childTableObj.sequenceColumn:
                    # Initialize the sequenced column with a dummy value
                    ent[childTableObj.sequenceColumn] = None
                _buildExternalValue(val, ent, childTableObj)

                # Look this value up
                if key not in dbside:
                    if childTableObj.sequenceColumn:
                        # Initialize the sequence column too
                        sc = childTableObj.sequenceColumn
                        nextid = self.sequences[childTableName].next()
                        val[sc] = ent[sc] = nextid
                    # This entry has to be inserted
                    object.diff.append((parentattr, val, None))
                    # XXX change to a default value
                    object.diff.setLevel(4)

                    localDML['insert'][childTableName].append(val)
                    continue

                # Already exists in the DB
                dbval = _buildDatabaseValue(dbside[key], fields)

                if childTableObj.sequenceColumn:
                    # Copy the sequenced value - we dpn't want it updated
                    sc = childTableObj.sequenceColumn
                    val[sc] = ent[sc] = dbval[sc]
                # check for updates
                diffval = computeDiff(val, dbval, childSeverityHash,
                                      object.diff, parentattr)
                if not diffval:
                    # Same value
                    del dbside[key]
                    continue

                # Different value; have to update the entry
                localDML['update'][childTableName].append(val)
                del dbside[key]

            # Anything else should be deleted
            for key, val in list(dbside.items()):
                # Send only the PKs
                hash = {}
                for k in pks:
                    hash[k] = val[k]

                # XXX change to a default value
                object.diff.setLevel(4)

                localDML['delete'][childTableName].append(hash)
                object.diff.append((parentattr, None, val))

        return localDML

    def __doDML(self, dml):
        self.__doDelete(dml.delete, dml.tables)
        self.__doUpdate(dml.update, dml.tables)
        self.__doInsert(dml.insert, dml.tables)
        return dml

    def __doInsert(self, hash, tables):
        for tname in tables:
            dict = hash[tname]
            try:
                self.__doInsertTable(tname, dict)
            except rhnSQL.SQLError:
                e = sys.exc_info()[1]
                raise_with_tb(rhnFault(54, str(e[1]), explain=0), sys.exc_info()[2])

    def __doInsertTable(self, table, hash):
        if not hash:
            return
        tab = self.tables[table]
        k = list(hash.keys())[0]
        if not hash[k]:
            # Nothing to do
            return

        insertObj = TableInsert(tab, self.dbmodule)
        insertObj.query(hash)
        return

    def __doDelete(self, hash, tables):
        for tname in tables:
            dict = hash[tname]
            self.__doDeleteTable(tname, dict)

    def __doDeleteTable(self, tname, hash):
        if not hash:
            return
        tab = self.tables[tname]
        # Need to extract the primary keys and look for items to delete only
        # in those columns, the other ones may not be populated
        # See bug 154216 for details (misa 2005-04-08)
        pks = tab.getPK()
        k = pks[0]
        if not hash[k]:
            # Nothing to do
            return
        deleteObj = TableDelete(tab, self.dbmodule)
        deleteObj.query(hash)

    def __doUpdate(self, hash, tables):
        for tname in tables:
            dict = hash[tname]
            self.__doUpdateTable(tname, dict)

    def __doUpdateTable(self, tname, hash):
        if not hash:
            return
        tab = self.tables[tname]
        # See bug 154216 for details (misa 2005-04-08)
        pks = tab.getPK()
        k = pks[0]
        if not hash[k]:
            # Nothing to do
            return
        updateObj = TableUpdate(tab, self.dbmodule)
        updateObj.query(hash)
        return

    def __lookupObjectCollection(self, objColl, tableName, ignore_missing=0):
        # Looks the object up in tableName, and fills in its id
        lookup = TableLookup(self.tables[tableName], self.dbmodule)
        for object in objColl:
            if object.ignored:
                # Skip it
                continue
            h = lookup.query(object)
            row = h.fetchone_dict()
            if not row:
                if ignore_missing:
                    # Ignore the missing objects
                    object.ignored = 1
                    continue
                # Invalid
                raise InvalidPackageError(object, "Could not find object %s in table %s" % (object, tableName))
            object.id = row['id']

    def __getChildTablesInfo(self, id, tables, queries):
        # Returns a hash with the information about package id from tables
        result = {}
        for tname in tables:
            tableobj = self.tables[tname]
            fields = tableobj.getFields()
            q = queries[tname]
            q.execute(id=id)
            hash = {}
            while 1:
                row = q.fetchone_dict()
                if not row:
                    break
                pks = tableobj.getPK()
                key = []
                for f in pks:
                    value = row[f]
                    datatype = fields[f]
                    value = sanitizeValue(value, datatype)
                    key.append(value)
                val = {}
                for f, datatype in list(fields.items()):
                    value = row[f]
                    value = sanitizeValue(value, datatype)
                    val[f] = value
                hash[tuple(key)] = val

            result[tname] = hash
        return result

    def __populateTable(self, table_name, data, delete_extra=1):
        table = self.tables[table_name]
        fields = table.getFields()
        # Build a hash with the incoming data
        incoming = {}
        for entry in data:
            t = hash2tuple(entry, fields)
            incoming[t] = entry

        # Build the query to dump the table's contents
        h = self.dbmodule.prepare("select * from %s" % table.name)
        h.execute()
        deletes = {}
        inserts = {}
        for f in list(fields.keys()):
            inserts[f] = []
            deletes[f] = []

        while 1:
            row = h.fetchone_dict()
            if not row:
                break

            t = hash2tuple(row, fields)
            if t in incoming:
                # we already have this value uploaded
                del incoming[t]
                continue
            addHash(deletes, row)

        for row in list(incoming.values()):
            addHash(inserts, row)

        if delete_extra:
            self.__doDeleteTable(table.name, deletes)
        self.__doInsertTable(table.name, inserts)

    # This function does a diff on the specified table name for the presented
    # data, using pk_fields as unique fields
    def _do_diff(self, data, table_name, uq_fields, fields):
        first_uq_col = uq_fields[0]
        uq_col_values = {}
        all_fields = uq_fields + fields
        for entry in data:
            for f in all_fields:
                if f not in entry:
                    raise Exception("Missing field %s" % f)
            val = entry[first_uq_col]
            if val not in uq_col_values:
                valhash = {}
                uq_col_values[val] = valhash
            else:
                valhash = uq_col_values[val]
            key = build_key(entry, uq_fields)
            valhash[key] = entry

        query = "select %s from %s where %s = :%s" % (
            ", ".join(all_fields),
            table_name,
            first_uq_col, first_uq_col,
        )
        h = self.dbmodule.prepare(query)
        updates = []
        deletes = []
        for val, valhash in list(uq_col_values.items()):
            params = {first_uq_col: val}
            h.execute(**params)
            while 1:
                row = h.fetchone_dict()
                if not row:
                    break
                key = build_key(row, uq_fields)
                if key not in valhash:
                    # Need to delete this one
                    deletes.append(row)
                    continue
                entry = valhash[key]
                for f in fields:
                    if entry[f] != row[f]:
                        # Different, we have to update
                        break
                else:
                    # Same value, remove it from valhash
                    del valhash[key]
                    continue
                # Need to update
                updates.append(entry)

        inserts = []
        list(map(inserts.extend, [list(x.values()) for x in list(uq_col_values.values())]))

        if deletes:
            params = transpose(deletes, uq_fields)
            query = "delete from %s where %s" % (
                table_name,
                ' and '.join(["%s = :%s" % (x, x) for x in uq_fields]),
            )
            h = self.dbmodule.prepare(query)
            h.executemany(**params)
        if inserts:
            params = transpose(inserts, all_fields)
            query = "insert into %s (%s) values (%s)" % (
                table_name,
                ', '.join(all_fields),
                ', '.join([":" + x for x in all_fields]),
            )
            h = self.dbmodule.prepare(query)
            h.executemany(**params)
        if updates:
            params = transpose(updates, all_fields)
            query = "update % set %s where %s" % (
                table_name,
                ', '.join(["%s = :s" + (x, x) for x in fields]),
                ' and '.join(["%s = :%s" % (x, x) for x in uq_fields]),
            )
            h = self.dbmodule.prepare(query)
            h.executemany(**params)

    def validate_pks(self):
        # If nevra is enabled use checksum as primary key
        tbs = self.tables['rhnPackage']
        if not CFG.ENABLE_NVREA:
            # remove checksum from a primary key if nevra is disabled.
            if 'checksum_id' in tbs.pk:
                tbs.pk.remove('checksum_id')

# Returns a tuple for the hash's values


def build_key(hash, fields):
    return tuple(map(lambda x, h=hash: h[x], fields))


def transpose(arrhash, fields):
    params = {}
    for f in fields:
        params[f] = []
    for h in arrhash:
        for f in fields:
            params[f].append(h[f])
    return params


def hash2tuple(hash, fields):
    # Converts the hash into a tuple, with the fields ordered as presented in
    # the fields list
    result = []
    for fname, ftype in list(fields.items()):
        result.append(sanitizeValue(hash[fname], ftype))
    return tuple(result)


class DML:

    def __init__(self, tables, tableHash):
        self.update = {}
        self.delete = {}
        self.insert = {}
        self.tables = tables
        for k in ('insert', 'update', 'delete'):
            dmlhash = {}
            setattr(self, k, dmlhash)
            for tname in tables:
                hash = {}
                for f in list(tableHash[tname].getFields().keys()):
                    hash[f] = []
                dmlhash[tname] = hash


def _buildDatabaseValue(row, fieldsHash):
    # Returns a dictionary containing the interesting values of the row,
    # sanitized
    dict = {}
    for f, datatype in list(fieldsHash.items()):
        dict[f] = sanitizeValue(row.get(f), datatype)
    return dict


def _buildExternalValue(dict, entry, tableObj):
    # updates dict with values from entry
    # entry is a hash-like object (non-db)
    for f, datatype in list(tableObj.getFields().items()):
        if f in dict:
            # initialized somewhere else
            continue
        # Get the attribute's name
        attr = tableObj.getObjectAttribute(f)
        # Sanitize the value according to its datatype
        if attr not in entry:
            entry[attr] = None
        dict[f] = sanitizeValue(entry[attr], datatype)


def computeDiff(hash1, hash2, diffHash, diffobj, prefix=None):
    # Compare if the key-values of hash1 are a subset of hash2's
    difference = 0
    ignore_keys = ['last_modified']

    for k, v in list(hash1.items()):
        if k in ignore_keys:
            # Dont decide the diff based on last_modified
            # as this obviously wont match due to our db
            # other triggers.
            continue
        if hash2[k] == v:
            # Same values
            continue
        if k == 'installed_size' and v is not None and hash2[k] is None:
            # Skip installed_size which might not have been populated
            continue
        if k in diffHash:
            diffval = diffHash[k]
            if diffval == 0:
                # Completely ignore this key
                continue
        else:
            diffval = diffobj.level + 1

        if prefix:
            diffkey = prefix + '::' + k
        else:
            diffkey = k

        diffobj.setLevel(diffval)
        diffobj.append((diffkey, v, hash2[k]))

        difference = diffobj.level

    return difference
  07070100000189000081B40000000000000000000000016290A0C100003D74000000000000000000000000000000000000003100000000spacewalk-backend/server/importlib/backendLib.py  #
# Copyright (c) 2008--2016 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#
#
# Generic DB backend data structures
#

import time
import string

try:
    #  python 2
    from UserDict import UserDict
except ImportError:
    #  python3
    from collections import UserDict
from uyuni.common.usix import ListType, StringType, DictType, IntType, UnicodeType

# A function that formats a UNIX timestamp to the session's format


def gmtime(timestamp):
    return _format_time(time.gmtime(float(timestamp)))


def localtime(timestamp):
    return _format_time(time.localtime(float(timestamp)))


def _format_time(time_tuple):
    return time.strftime("%Y-%m-%d %H:%M:%S", time_tuple)

# Database datatypes


class DBtype:
    pass


class DBint(DBtype):
    pass


class DBstring(DBtype):

    def __init__(self, limit):
        self.limit = limit


class DBblob(DBtype):
    pass


class DBdate(DBtype):
    pass


class DBdateTime(DBtype):
    pass

# Database objects


class Table:
    # A list of supported keywords
    keywords = {
        'fields': DictType,
        'pk': ListType,
        'attribute': str,
        'map': DictType,
        'nullable': ListType,  # Will become a hash eventually
        'severityHash': DictType,
        'defaultSeverity': IntType,
        'sequenceColumn': str,
    }

    def __init__(self, name, **kwargs):
        self.name = name
        for k in list(kwargs.keys()):
            if k not in self.keywords:
                raise TypeError("Unknown keyword attribute '%s'" % k)
        # Initialize stuff
        # Fields
        self.fields = {}
        # Primary keys
        self.pk = []
        # Mapping from database fields to generic attribute names
        self.map = {}
        # Name of the attribute this table links back to
        self.attribute = None
        # Nullable columns; will become a hash
        self.nullable = []
        # Compute the diff
        self.severityHash = {}
        self.defaultSeverity = 4
        # Sequence column - a column that is populated off a sequence
        self.sequenceColumn = None

        for k, v in list(kwargs.items()):
            datatype = self.keywords[k]
            if not isinstance(v, datatype):
                raise TypeError("%s expected to be %s; got %s" % (
                    k, datatype, type(v)))
            setattr(self, k, v)

        # Fix nullable
        nullable = self.nullable
        self.nullable = {}
        if nullable:
            for field in nullable:
                if field not in self.fields:
                    raise TypeError("Unknown nullable field %s in table %s" % (
                        field, name))
                self.nullable[field] = None

        # Now analyze pk
        for field in self.pk:
            if field not in self.fields:
                raise TypeError("Unknown primary key field %s" % field)

    def __str__(self):
        return "Instance of class %s.%s: PK: %s, Fields: %s" % (self.__class__.__module__,
                                                                self.__class__.__name__, self.pk, self.fields)
    __repr__ = __str__

    def isNullable(self, field):
        if field not in self.fields:
            raise TypeError("Unknown field %s" % field)
        return field in self.nullable

    def getPK(self):
        return self.pk

    def getFields(self):
        return self.fields

    def getAttribute(self):
        return self.attribute

    def getObjectAttribute(self, attribute):
        if attribute in self.map:
            return self.map[attribute]
        return attribute

    def getSeverityHash(self):
        for field in list(self.fields.keys()):
            if field not in self.severityHash:
                self.severityHash[field] = self.defaultSeverity
        return self.severityHash

# A collection of tables


class TableCollection(UserDict):

    def __init__(self, *list):
        UserDict.__init__(self)
        # Verify if the list's items are the right format
        for table in list:
            if not isinstance(table, Table):
                raise TypeError("Expected a Table instance; got %s" %
                                type(table))
        # Now initialize the collection
        for table in list:
            self.__setitem__(table.name, table)

# Lookup class
# The problem stems from the different way we're supposed to build a query if
# the value is nullable


class BaseTableLookup:

    def __init__(self, table, dbmodule):
        # Generates a bunch of queries that look up data based on the primary
        # keys of this table
        self.dbmodule = dbmodule
        self.table = table
        self.pks = self.table.getPK()
        self.whereclauses = {}
        self.queries = {}
        self._buildWhereClauses()

    def _buildWhereClauses(self):
        # Keys is a list of lists of 0/1, 0 if the column is not nullable
        keys = [[]]
        # The corresponding query arguments
        queries = [[]]
        for col in self.pks:
            k = []
            q = []
            for i in range(len(keys)):
                key = keys[i]
                query = queries[i]
                k.append(key + [0])
                q.append(query + ["%s = :%s" % (col, col)])
                if self.table.isNullable(col):
                    k.append(key + [1])
                    q.append(query + ["%s is null" % col])
            keys = k
            queries = q
        # Now put the queries in self.sqlqueries, keyed on the list of 0/1
        for i in range(len(keys)):
            key = tuple(keys[i])
            query = ' and '.join(queries[i])
            self.whereclauses[key] = query

    def _selectQueryKey(self, value):
        # Determine which query should we use
        # Build the key first
        hash = {}
        key = []
        for col in self.pks:
            if self.table.isNullable(col) and value[col] in [None, '']:
                key.append(1)
            else:
                key.append(0)
                hash[col] = value[col]
        key = tuple(key)
        return key, hash

    def _buildQuery(self, key):
        # Stub
        return None

    def _getCachedQuery(self, key, blob_map=None):
        if key in self.queries:
            # Serve it from the pool
            return self.queries[key]

        statement = self.dbmodule.prepare(self._buildQuery(key), blob_map=blob_map)
        # And save it to the cached queries pool
        self.queries[key] = statement
        return statement

    def query(self, values):
        key, values = self._selectQueryKey(values)
        statement = self._getCachedQuery(key)
        statement.execute(**values)
        return statement


class TableLookup(BaseTableLookup):

    def __init__(self, table, dbmodule):
        BaseTableLookup.__init__(self, table, dbmodule)
        self.queryTemplate = "select * from %s where %s"

    def _buildQuery(self, key):
        return self.queryTemplate % (self.table.name, self.whereclauses[key])


class TableUpdate(BaseTableLookup):

    def __init__(self, table, dbmodule):
        BaseTableLookup.__init__(self, table, dbmodule)
        self.queryTemplate = "update %s set %s where %s"
        self.fields = list(self.table.getFields().keys())
        # Fields minus pks
        self.otherfields = []
        # BLOBs cannot be PKs, and have to be updated differently
        self.blob_fields = []
        for field in self.fields:
            if field in self.pks:
                continue
            datatype = self.table.fields[field]
            if isinstance(datatype, DBblob):
                self.blob_fields.append(field)
            else:
                self.otherfields.append(field)
        self.updateclause = ', '.join(["%s = :%s" % (x, x) for x in self.otherfields])
        # key
        self.firstkey = None
        for pk in self.pks:
            if not self.table.isNullable(pk):
                # This is it
                self.firstkey = pk
                break

    def _buildQuery(self, key):
        return self.queryTemplate % (self.table.name, self.updateclause,
                                     self.whereclauses[key])

    def _split_blob_values(self, values, blob_only=0):
        # Splits values that have to be inserted
        # Blobs will be in a separate hash
        valuesHash = {}
        # blobValuesHash is a hash keyed on the primary key fields
        # should only have one element if the primary key has no nullable
        # fields
        blobValuesHash = {}
        for key in list(self.whereclauses.keys()):
            hash = {}
            for i in range(len(key)):
                pk = self.pks[i]
                # Only add the PK if it's non-null
                if not key[i]:
                    hash[pk] = []
            # And then add everything else
            for k in self.otherfields:
                hash[k] = []
            valuesHash[key] = hash
            blobValuesHash[key] = []

        # Split the query values on key components
        for i in range(len(values[self.firstkey])):
            # Build the value
            pk_val = {}
            val = {}
            for k in self.pks:
                pk_val[k] = val[k] = values[k][i]
            key, val = self._selectQueryKey(val)

            if not blob_only:
                # Add the rest of the values
                for k in self.otherfields:
                    val[k] = values[k][i]
                addHash(valuesHash[key], val)

            if not self.blob_fields:
                # Nothing else to do
                continue
            val = {}
            for k in self.blob_fields:
                val[k] = values[k][i]
            blobValuesHash[key].append((pk_val, val))

        return valuesHash, blobValuesHash

    def query(self, values):
        valuesHash, blobValuesHash = self._split_blob_values(values, blob_only=0)
        # And now do the actual update for non-blobs
        if self.otherfields:
            for key, val in list(valuesHash.items()):
                if not val[self.firstkey]:
                    # Nothing to do
                    continue
                statement = self._getCachedQuery(key)
                statement.executemany(**val)

        if not self.blob_fields:
            return

        self._update_blobs(blobValuesHash)

    def _update_blobs(self, blobValuesHash):
        # Now update BLOB fields
        template = "select %s from %s where %s for update"
        blob_fields_string = ", ".join(self.blob_fields)
        for key, val in list(blobValuesHash.items()):
            statement = template % (blob_fields_string, self.table.name,
                                    self.whereclauses[key])
            h = self.dbmodule.prepare(statement)
            for lookup_hash, blob_hash in val:
                h.execute(**lookup_hash)
                # Should have exactly one row here
                row = h.fetchone_dict()
                if not row:
                    # XXX This should normally not happen
                    raise ValueError("BLOB query did not retrieve a value")
                for k, v in list(blob_hash.items()):
                    blob = row[k]
                    len_v = len(v)
                    # If new value is shorter than old value, we have to trim
                    # the blob
                    if blob.size() > len_v:
                        blob.trim(len_v)
                    # blobs don't like to write the empty string
                    if len_v:
                        blob.write(v)
                # Is this the only row?
                row = h.fetchone_dict()
                if row is not None:
                    # XXX This should not happen, the primary key was not
                    # unique
                    raise ValueError("Primary key not unique",
                                     self.table.name, lookup_hash)


class TableDelete(TableLookup):

    def __init__(self, table, dbmodule):
        TableLookup.__init__(self, table, dbmodule)
        self.queryTemplate = "delete from %s where %s"

    def query(self, values):
        # Build the values hash
        valuesHash = {}
        for key in list(self.whereclauses.keys()):
            hash = {}
            for i in range(len(key)):
                pk = self.pks[i]
                # Only add the PK if it's non-null
                if not key[i]:
                    hash[pk] = []
            valuesHash[key] = hash

        # Split the query values on key components
        firstkey = self.pks[0]
        for i in range(len(values[firstkey])):
            # Build the value
            val = {}
            for k in self.pks:
                val[k] = values[k][i]
            key, val = self._selectQueryKey(val)
            addHash(valuesHash[key], val)

        # And now do the actual delete
        for key, val in list(valuesHash.items()):
            firstkey = list(val.keys())[0]
            if not val[firstkey]:
                # Nothing to do
                continue
            statement = self._getCachedQuery(key)
            statement.executemany(**val)


class TableInsert(TableUpdate):

    def __init__(self, table, dbmodule):
        TableUpdate.__init__(self, table, dbmodule)
        self.queryTemplate = "insert into %s (%s) values %%s"

        self.insert_fields = self.pks + self.otherfields + self.blob_fields

    def _buildQuery(self, key):
        q = self.queryTemplate % (self.table.name, ', '.join(self.insert_fields))
        return q

    def query(self, values):
        if self.blob_fields:
            blob_map = {}
            for f in self.blob_fields:
                blob_map[f] = f
        else:
            blob_map = None

        # Do the insert
        statement = self._getCachedQuery(None, blob_map=blob_map)
        l = len(values[self.insert_fields[0]])
        value_list = [[values[f][i] for f in self.insert_fields] for i in range(l)]
        statement.execute_values(self._buildQuery(None), value_list, fetch=False, page_size=10_000)

def sanitizeValue(value, datatype):
    if isinstance(datatype, DBstring):
        if value is None or value == '':
            return None         # we really want to preserve Nones
            # and not depend on Oracle converting
            # empty strings to NULLs -- PostgreSQL
            # does not do this
        if len(value) > datatype.limit:
            value = value[:datatype.limit]
            # ignore incomplete characters created after truncating
        return value
    if isinstance(datatype, DBblob):
        if value is None:
            value = ''
        return str(value)
    if value in [None, '']:
        return None
    if isinstance(datatype, DBdateTime):
        s = str(value)
        if len(s) == 10:
            # Pad it to be a real datetime
            s = s + " 00:00:00"
        return s
    if isinstance(datatype, DBdate):
        return str(value)[:10]
    if isinstance(datatype, DBint):
        return int(value)
    return value


def addHash(hasharray, hash):
    # hasharray is a hash of arrays
    # add hash's values to hasharray
    for k, v in list(hash.items()):
        if k in hasharray:
            hasharray[k].append(v)
0707010000018A000081B40000000000000000000000016290A0C100005DE9000000000000000000000000000000000000003400000000spacewalk-backend/server/importlib/backendOracle.py   #
# Copyright (c) 2008--2017 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#
#
# Oracle-specific stuff
#
# FIXME: need more documentation
#

import sys
from .backend import Backend
from .backendLib import DBint, DBstring, DBdateTime, Table, \
    TableCollection, DBblob
from spacewalk.server import rhnSQL
from spacewalk.server.rhnSQL.const import POSTGRESQL
from spacewalk.common.rhnConfig import CFG
from uyuni.common import timezone_utils


class OracleBackend(Backend):
    tables = TableCollection(
        # NOTE: pk = primary keys
        #       attribute = attribute this table links back to
        #       map = mapping from database fields to generic attribute names
        Table('rhnPackageProvides',
              fields={
                  'package_id': DBint(),
                  'capability_id': DBint(),
                  'sense': DBint(),
              },
              pk=['package_id', 'capability_id', 'sense'],
              attribute='provides',
              map={'sense': 'flags', },
              ),
        Table('rhnPackageRequires',
              fields={
                  'package_id': DBint(),
                  'capability_id': DBint(),
                  'sense': DBint(),
              },
              pk=['package_id', 'capability_id', 'sense'],
              attribute='requires',
              map={'sense': 'flags', },
              ),
        Table('rhnPackageConflicts',
              fields={
                  'package_id': DBint(),
                  'capability_id': DBint(),
                  'sense': DBint(),
              },
              pk=['package_id', 'capability_id', 'sense'],
              attribute='conflicts',
              map={'sense': 'flags', },
              ),
        Table('rhnPackageObsoletes',
              fields={
                  'package_id': DBint(),
                  'capability_id': DBint(),
                  'sense': DBint(),
              },
              pk=['package_id', 'capability_id', 'sense'],
              attribute='obsoletes',
              map={'sense': 'flags', },
              ),
        Table('rhnPackageRecommends',
              fields={
                  'package_id': DBint(),
                  'capability_id': DBint(),
                  'sense': DBint(),
              },
              pk=['package_id', 'capability_id', 'sense'],
              attribute='recommends',
              map={'sense': 'flags', },
              ),
        Table('rhnPackageSuggests',
              fields={
                  'package_id': DBint(),
                  'capability_id': DBint(),
                  'sense': DBint(),
              },
              pk=['package_id', 'capability_id', 'sense'],
              attribute='suggests',
              map={'sense': 'flags', },
              ),
        Table('rhnPackageSupplements',
              fields={
                  'package_id': DBint(),
                  'capability_id': DBint(),
                  'sense': DBint(),
              },
              pk=['package_id', 'capability_id', 'sense'],
              attribute='supplements',
              map={'sense': 'flags', },
              ),
        Table('rhnPackageEnhances',
              fields={
                  'package_id': DBint(),
                  'capability_id': DBint(),
                  'sense': DBint(),
              },
              pk=['package_id', 'capability_id', 'sense'],
              attribute='enhances',
              map={'sense': 'flags', },
              ),
        Table('rhnPackageBreaks',
              fields={
                  'package_id': DBint(),
                  'capability_id': DBint(),
                  'sense': DBint(),
              },
              pk=['package_id', 'capability_id', 'sense'],
              attribute='breaks',
              map={'sense': 'flags', },
              ),
        Table('rhnPackagePredepends',
              fields={
                  'package_id': DBint(),
                  'capability_id': DBint(),
                  'sense': DBint(),
              },
              pk=['package_id', 'capability_id', 'sense'],
              attribute='predepends',
              map={'sense': 'flags', },
              ),
        Table('rhnPackageChangeLogRec',
              fields={
                  'id': DBint(),
                  'package_id': DBint(),
                  'changelog_data_id': DBint(),
              },
              pk=['package_id', 'changelog_data_id'],
              attribute='changelog',
              sequenceColumn='id',
              ),
        Table('rhnPackageChangeLogData',
              fields={
                  'id': DBint(),
                  'name': DBstring(128),
                  'text': DBblob(),
                  'time': DBdateTime()
              },
              ),
        Table('rhnPackageFile',
              fields={
                  'package_id': DBint(),
                  'capability_id': DBint(),
                  'device': DBint(),
                  'inode': DBint(),
                  'file_mode': DBint(),
                  'username': DBstring(32),
                  'groupname': DBstring(32),
                  'rdev': DBint(),
                  'file_size': DBint(),
                  'mtime': DBdateTime(),
                  'checksum_id': DBint(),
                  'linkto': DBstring(256),
                  'flags': DBint(),
                  'verifyflags': DBint(),
                  'lang': DBstring(32),
              },
              pk=['package_id', 'capability_id'],
              attribute='files',
              severityHash={
                  'mtime': 0,
                  'file_size': 4,
              },
              ),
        Table('rhnPackage',
              fields={
                  'id': DBint(),
                  'org_id': DBint(),
                  'name_id': DBint(),
                  'evr_id': DBint(),
                  'package_arch_id': DBint(),
                  'package_group': DBint(),
                  'rpm_version': DBstring(16),
                  'description': DBstring(4000),
                  'summary': DBstring(4000),
                  'package_size': DBint(),
                  'payload_size': DBint(),
                  'installed_size': DBint(),
                  'build_host': DBstring(256),
                  'build_time': DBdateTime(),
                  'source_rpm_id': DBint(),
                  'checksum_id': DBint(),
                  'vendor': DBstring(64),
                  'payload_format': DBstring(32),
                  'path': DBstring(1000),
                  'copyright': DBstring(128),
                  'cookie': DBstring(128),
                  'header_start': DBint(),
                  'header_end': DBint(),
                  'last_modified': DBdateTime(),
              },
              pk=['org_id', 'name_id', 'evr_id', 'package_arch_id',
                  'checksum_id'],
              nullable=['org_id'],
              severityHash={
                  'path': 1,
                  'package_size': 2,
                  'build_time': 3,
                  'build_host': 3,
                  'last_modified': 0.5,
                  # rpm got it wrong so now we have to ignore it
                  'payload_size': 0,
              },
              ),
        Table('rhnChannelPackage',
              fields={
                  'package_id': DBint(),
                  'channel_id': DBint(),
              },
              pk=['channel_id', 'package_id'],
              ),
        Table('rhnErrata',
              fields={
                  'id': DBint(),
                  'advisory': DBstring(100),
                  'advisory_type': DBstring(32),
                  'advisory_status': DBstring(32),
                  'advisory_name': DBstring(100),
                  'advisory_rel': DBint(),
                  'product': DBstring(64),
                  'description': DBstring(4000),
                  'synopsis': DBstring(4000),
                  'topic': DBstring(4000),
                  'solution': DBstring(4000),
                  'notes': DBstring(4000),
                  'refers_to': DBstring(4000),
                  'org_id': DBint(),
                  'locally_modified': DBstring(1),
                  'severity_id': DBint(),
                  'errata_from': DBstring(127),
                  # We will treat issue_date and update_date as regular dates
                  # with times instead of DBdate types, otherwise we'd have
                  # issues with timezones
                  'issue_date': DBdateTime(),
                  'update_date': DBdateTime(),
                  'last_modified': DBdateTime(),
              },
              pk=['advisory_name', 'org_id'],
              nullable=['org_id'],
              defaultSeverity=4,
              ),
        Table('rhnErrataBugList',
              fields={
                  'errata_id': DBint(),
                  'bug_id': DBint(),
                  'summary': DBstring(4000),
                  'href': DBstring(255),
              },
              pk=['errata_id', 'bug_id'],
              attribute='bugs',
              defaultSeverity=4,
              ),
        Table('rhnCVE',
              fields={
                  'id': DBint(),
                  'name': DBstring(20),
              },
              pk=['name'],
              ),
        Table('rhnErrataCVE',
              fields={
                  'errata_id': DBint(),
                  'cve_id': DBint(),
              },
              pk=['errata_id', 'cve_id'],
              attribute='cve',
              defaultSeverity=4,
              ),
        Table('rhnErrataFile',
              fields={
                  'id': DBint(),
                  'errata_id': DBint(),
                  'type': DBint(),
                  'checksum_id': DBint(),
                  'filename': DBstring(4000),
              },
              pk=['errata_id', 'filename', 'checksum_id'],
              attribute='files',
              defaultSeverity=4,
              sequenceColumn='id',
              ),
        Table('rhnErrataFilePackage',
              fields={
                  'errata_file_id': DBint(),
                  'package_id': DBint(),
              },
              pk=['errata_file_id', 'package_id'],
              ),
        Table('rhnErrataFilePackageSource',
              fields={
                  'errata_file_id': DBint(),
                  'package_id': DBint(),
              },
              pk=['errata_file_id', 'package_id'],
              ),
        Table('rhnErrataFileChannel',
              fields={
                  'errata_file_id': DBint(),
                  'channel_id': DBint(),
              },
              pk=['errata_file_id', 'channel_id'],
              ),
        Table('rhnErrataKeyword',
              fields={
                  'errata_id': DBint(),
                  'keyword': DBstring(64),
              },
              pk=['errata_id', 'keyword'],
              attribute='keywords',
              defaultSeverity=4,
              ),
        Table('rhnErrataPackage',
              fields={
                  'errata_id': DBint(),
                  'package_id': DBint(),
              },
              pk=['errata_id', 'package_id'],
              attribute='packages',
              defaultSeverity=4,
              ),
        Table('rhnChannelErrata',
              fields={
                  'errata_id': DBint(),
                  'channel_id': DBint(),
              },
              pk=['errata_id', 'channel_id'],
              attribute='channels',
              defaultSeverity=4,
              ),
        Table('rhnChannel',
              fields={
                  'id': DBint(),
                  'parent_channel': DBint(),
                  'org_id': DBint(),
                  'channel_arch_id': DBint(),
                  'label': DBstring(128),
                  'basedir': DBstring(256),
                  'name': DBstring(256),
                  'summary': DBstring(500),
                  'description': DBstring(4000),
                  'product_name_id': DBint(),
                  'gpg_key_url': DBstring(256),
                  'gpg_key_id': DBstring(14),
                  'gpg_key_fp': DBstring(50),
                  'end_of_life': DBdateTime(),
                  'receiving_updates': DBstring(1),
                  'last_modified': DBdateTime(),
                  'channel_product_id': DBint(),
                  'checksum_type_id': DBint(),
                  'channel_access': DBstring(10),
                  'update_tag': DBstring(128),
                  'installer_updates': DBstring(1)
              },
              pk=['label'],
              severityHash={
                  'channel_product_id': 0,
              },
              ),
        Table('rhnChannelFamily',
              fields={
                  'id': DBint(),
                  'name': DBstring(128),
                  'label': DBstring(128),
              },
              pk=['label'],
              defaultSeverity=4,
              ),
        Table('rhnDistChannelMap',
              fields={
                  'os': DBstring(64),
                  'release': DBstring(64),
                  'channel_arch_id': DBint(),
                  'channel_id': DBint(),
                  'org_id': DBint(),
              },
              pk=['release', 'channel_arch_id', 'org_id'],
              attribute='dists',
              defaultSeverity=4,
              ),
        Table('rhnReleaseChannelMap',
              fields={
                  'product': DBstring(64),
                  'version': DBstring(64),
                  'release': DBstring(64),
                  'channel_arch_id': DBint(),
                  'channel_id': DBint()
              },
              pk=['product', 'version', 'release', 'channel_arch_id', 'channel_id'],
              attribute='release',
              defaultSeverity=4,
              ),
        Table('rhnChannelTrust',
              fields={
                  'channel_id': DBint(),
                  'org_trust_id': DBint(),
              },
              pk=['channel_id', 'org_trust_id'],
              attribute='trust_list',
              defaultSeverity=4,
              ),
        Table('rhnChannelFamilyMembers',
              fields={
                  'channel_id': DBint(),
                  'channel_family_id': DBint(),
              },
              pk=['channel_id', 'channel_family_id'],
              attribute='families',
              defaultSeverity=4,
              ),
        Table('rhnPackageSource',
              fields={
                  'id': DBint(),
                  'org_id': DBint(),
                  'source_rpm_id': DBint(),
                  'package_group': DBint(),
                  'rpm_version': DBstring(16),
                  'payload_size': DBint(),
                  'build_host': DBstring(256),
                  'build_time': DBdateTime(),
                  'path': DBstring(1000),
                  'package_size': DBint(),
                  'checksum_id': DBint(),
                  'sigchecksum_id': DBint(),
                  'vendor': DBstring(64),
                  'cookie': DBstring(128),
                  'last_modified': DBdateTime(),
              },
              pk=['source_rpm_id', 'org_id',
                  'sigchecksum_id', 'checksum_id'],
              nullable=['org_id'],
              severityHash={
                  'path': 1,
                  'file_size': 2,
                  'build_host': 3,
                  'build_time': 3,
                  # rpm got it wrong so now we have to ignore it
                  'payload_size': 0,
                  'last_modified': 0.5,
              },
              ),
        Table('rhnServerArch',
              fields={
                  'id': DBint(),
                  'label': DBstring(64),
                  'name': DBstring(64),
                  'arch_type_id': DBint(),
              },
              pk=['label'],
              ),
        Table('rhnPackageArch',
              fields={
                  'id': DBint(),
                  'label': DBstring(64),
                  'name': DBstring(64),
                  'arch_type_id': DBint(),
              },
              pk=['label'],
              ),
        Table('rhnChannelArch',
              fields={
                  'id': DBint(),
                  'label': DBstring(64),
                  'name': DBstring(64),
                  'arch_type_id': DBint(),
              },
              pk=['label'],
              ),
        Table('rhnCPUArch',
              fields={
                  'id': DBint(),
                  'label': DBstring(64),
                  'name': DBstring(64),
              },
              pk=['label'],
              ),
        Table('rhnServerPackageArchCompat',
              fields={
                  'server_arch_id': DBint(),
                  'package_arch_id': DBint(),
                  'preference': DBint(),
              },
              pk=['server_arch_id', 'package_arch_id', 'preference'],
              ),
        Table('rhnServerChannelArchCompat',
              fields={
                  'server_arch_id': DBint(),
                  'channel_arch_id': DBint(),
              },
              pk=['server_arch_id', 'channel_arch_id'],
              ),
        Table('rhnChannelPackageArchCompat',
              fields={
                  'channel_arch_id': DBint(),
                  'package_arch_id': DBint(),
              },
              pk=['channel_arch_id', 'package_arch_id'],
              ),
        Table('rhnServerServerGroupArchCompat',
              fields={
                  'server_arch_id': DBint(),
                  'server_group_type': DBint(),
              },
              pk=['server_arch_id', 'server_group_type'],
              ),
        Table('rhnKickstartableTree',
              fields={
                  'id': DBint(),
                  'org_id': DBint(),
                  'base_path': DBstring(256),
                  'channel_id': DBint(),
                  'label': DBstring(64),
                  'boot_image': DBstring(128),
                  'kstree_type': DBint(),
                  'install_type': DBint(),
                  'last_modified': DBdateTime()
              },
              pk=['label', 'org_id'],
              nullable=['org_id'],
              ),
        Table('rhnKSTreeType',
              # not used at the moment
              fields={
                  'id': DBint(),
                  'label': DBstring(32),
                  'name': DBstring(64),
              },
              pk=['label'],
              ),
        Table('rhnKSInstallType',
              # not used at the moment
              fields={
                  'id': DBint(),
                  'label': DBstring(32),
                  'name': DBstring(64),
              },
              pk=['label'],
              ),
        Table('rhnKSTreeFile',
              fields={
                  'kstree_id': DBint(),
                  'relative_filename': DBstring(256),
                  'checksum_id': DBint(),
                  'file_size': DBint(),
                  'last_modified': DBdateTime()
              },
              pk=['kstree_id', 'relative_filename', 'checksum_id'],
              attribute='files',
              map={
                  'relative_filename': 'relative_path',
              },
              ),

        Table('rhnProductName',
              fields={
                  'id': DBint(),
                  'label': DBstring(128),
                  'name': DBstring(128),
              },
              pk=['id', 'label', 'name'],
              ),
        Table('rhnContentSource',
              fields={
                  'id': DBint(),
                  'org_id': DBint(),
                  'label': DBstring(128),
                  'source_url': DBstring(2048),
                  'type_id': DBint(),
              },
              pk=['label', 'org_id', 'type_id'],
              nullable=['org_id'],
              ),
        Table('rhnContentSourceSsl',
              fields={
                  'content_source_id': DBint(),
                  'ssl_ca_cert_id': DBint(),
                  'ssl_client_cert_id': DBint(),
                  'ssl_client_key_id': DBint()
              },
              attribute='ssl-sets',
              pk=['content_source_id', 'ssl_ca_cert_id', 'ssl_client_cert_id', 'ssl_client_key_id'],
              nullable=['ssl_client_cert_id', 'ssl_client_key_id'],
              ),

        Table('suseProductFile',
            fields      = {
                'id'                : DBint(),
                'name'              : DBstring(256),
                'evr_id'            : DBint(),
                'package_arch_id'   : DBint(),
                'vendor'            : DBstring(256),
                'summary'           : DBstring(4000),
                'description'       : DBstring(4000),
            },
            pk          = ['id'],
            nullable    = ['vendor', 'summary', 'description'],
        ),
        Table('susePackageProductFile',
            fields      = {
                'package_id'       : DBint(),
                'prodfile_id'      : DBint(),
            },
            pk          = ['package_id', 'prodfile_id'],
            attribute   = 'product_files',
        ),
        Table('suseEula',
            fields      = {
                'id'       : DBint(),
                'text'     : DBblob(),
                'checksum' : DBstring(64),
            },
            pk          = ['id'],
            nullable    = [],
        ),
        Table('susePackageEula',
            fields      = {
                'package_id' : DBint(),
                'eula_id'    : DBint(),
            },
            pk          = ['package_id', 'eula_id'],
            attribute   = 'eulas',
        ),
        Table('rhnPackageExtraTag',
            fields={
              'package_id'  : DBint(),
              'key_id'      : DBint(),
              'value'       : DBstring(2048),
            },
            pk=['package_id', 'key_id'],
            attribute='extra_tags',
        ),
    )

    def __init__(self):
        Backend.__init__(self, rhnSQL)

    def setSessionTimeZoneToLocalTimeZone(self):
        sth = self.dbmodule.prepare("alter session set time_zone = '%s'"
                                    % timezone_utils.get_utc_offset())
        sth.execute()

    def init(self):
        """
        Override parent to do explicit setting of the date format. (Oracle
        specific)
        """
        # Set date format
        self.setSessionTimeZoneToLocalTimeZone()
        self.setDateFormat("YYYY-MM-DD HH24:MI:SS")
        return Backend.init(self)


class PostgresqlBackend(OracleBackend):

    """
    PostgresqlBackend specific implementation. The bulk of the OracleBackend
    is not actually Oracle specific, so we'll re-use as much as we can and just
    avoid the few bits that are.
    """

    def setSessionTimeZoneToLocalTimeZone(self):
        sth = self.dbmodule.prepare("set session time zone '%s'"
                                    % timezone_utils.get_utc_offset())
        sth.execute()

    def init(self):
        """
        Avoid the Oracle specific stuff here in parent method.
        """
        self.setSessionTimeZoneToLocalTimeZone()
        return Backend.init(self)

def SQLBackend():
    if CFG.DB_BACKEND == POSTGRESQL:
        backend = PostgresqlBackend()
    backend.init()
    return backend
   0707010000018B000081FD0000000000000000000000016290A0C100000438000000000000000000000000000000000000003600000000spacewalk-backend/server/importlib/backend_checker.py #!/usr/bin/python

import sys
from spacewalk.server import rhnSQL
from spacewalk.server.importlib import backendOracle
from spacewalk.server.importlib.backendLib import DBstring

exitval = 0

rhnSQL.initDB()
q = rhnSQL.prepare("""select data_length
                        from user_tab_columns
                       where upper(table_name) = upper(:tname)
                         and upper(column_name) = upper(:cname)""")

backend = backendOracle.PostgresqlBackend()

for tn, tc in list(backend.tables.items()):
    for cn, cv in list(tc.getFields().items()):
        if isinstance(cv, DBstring):
            q.execute(tname=tn, cname=cn)
            row = q.fetchone_dict()
            if not row or row['data_length'] != cv.limit:
                print((("ERROR: database column %s.%s is %s chars long "
                       + "but defined as %s chars in backendOracle.py") % (
                    tn, cn, row['data_length'], cv.limit)))
                exitval = 1
            else:
                print(("%s.%s = %d" % (tn, cn, row['data_length'])))

sys.exit(exitval)
0707010000018C000081B40000000000000000000000016290A0C1000033E9000000000000000000000000000000000000003400000000spacewalk-backend/server/importlib/channelImport.py   #
# Copyright (c) 2008--2017 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#
# Channel import process
#

from .importLib import Import, InvalidArchError, \
    InvalidChannelError, InvalidChannelFamilyError, MissingParentChannelError
from spacewalk.satellite_tools.syncLib import log


class ChannelImport(Import):

    def __init__(self, batch, backend):
        Import.__init__(self, batch, backend)
        self.arches = {}
        self.families = {}
        self.dists = {}
        self.will_commit = 1
        self.releases = {}
        self.channels = {}
        self.checksum_types = {}

    def preprocess(self):
        # Processes the batch to a form more suitable for database
        # operations
        for channel in self.batch:
            self.__processChannel(channel)

    def __processChannel(self, channel):
        # Processes a package
        arch = channel['channel_arch']
        if arch not in self.arches:
            self.arches[arch] = None
        for family in channel['families']:
            self.families[family['label']] = None
        # Dists
        if 'dists' in channel and channel['dists'] is not None:
            for dist in channel['dists']:
                self.arches[dist['channel_arch']] = None
        # Product Names
        if 'release' in channel and channel['release'] is not None:
            for release in channel['release']:
                self.arches[release['channel_arch']] = None
        if 'receiving_updates' not in channel or channel['receiving_updates'] is None:
            channel['receiving_updates'] = 'N'
        # Yum repo checksum type
        if (channel['checksum_type']
                and channel['checksum_type'] not in self.checksum_types):
            self.checksum_types[channel['checksum_type']] = None

        # bug #528227
        # Print a warning in case the sync would move the channel between orgs
        if 'org_id' in channel and channel['org_id']:
            org_id = self.backend.lookupChannelOrg(channel['label'])

            if org_id and int(channel['org_id']) != org_id['org_id']:
                log(1, "WARNING: Channel %s is already present in orgid %s." %
                    (channel['label'], org_id['org_id']))
                log(1, "         Running synchronization will move the channel to orgid %s." %
                    channel['org_id'])
                log(1, '')

    def fix(self):
        self.backend.lookupChannelArches(self.arches)
        self.backend.lookupChannelFamilies(self.families)
        self.backend.lookupChecksumTypes(self.checksum_types)
        # Fix
        for channel in self.batch:
            self.__postprocessChannel(channel)

    def __postprocessChannel(self, channel):
        if channel.ignored:
            return
        arch = channel['channel_arch']
        if self.arches[arch] is None:
            # Mark it as ignored
            channel.ignored = 1
            raise InvalidArchError(arch, "Unsupported channel arch %s" % arch)
        channel['channel_arch_id'] = self.arches[arch]
        if channel['checksum_type']:
            channel['checksum_type_id'] = self.checksum_types[channel['checksum_type']]
        else:
            channel['checksum_type_id'] = None

        if 'product_name' in channel:
            channel['product_name_id'] = self.backend.lookupProductNames(
                channel['product_name'])
        families = []
        for family in channel['families']:
            # Link back the channel to families
            channel_family_id = self.families[family['label']]

            if channel_family_id is None:
                # Still cant get the id, Unknown channel family
                raise InvalidChannelFamilyError(family['label'])

            families.append({
                'channel_family_id': self.families[family['label']]
            })
        channel['families'] = families
        # Dists
        self.__postprocessChannelMaps(channel, 'dists')
        # release
        self.__postprocessChannelMaps(channel, 'release')

    def __postprocessChannelMaps(self, channel, map):
        if map in channel and channel[map] is not None:
            for dict in channel[map]:
                arch = dict['channel_arch']
                if self.arches[arch] is None:
                    # Mark it as ignored
                    channel.ignored = 1
                    raise InvalidArchError(arch, "Unsupported channel arch %s" % arch)
                dict['channel_arch_id'] = self.arches[arch]

    def submit(self):
        parentChannels = {}
        # Split the batch into null and non-null parent channels
        nullParentBatch = []
        nonNullParentBatch = []
        channel_trusts = []
        for channel in self.batch:
            if channel.ignored:
                continue
            if 'trust_list' in channel and channel['trust_list']:
                self.backend.clearChannelTrusts(channel['label'])
                for trust in channel['trust_list']:
                    if ('org_id' in channel and channel['org_id']
                            and self.backend.orgTrustExists(
                            channel['org_id'], trust['org_trust_id'])):
                        channel_trusts.append(
                            {'channel-label': channel['label'],
                             'org-id': trust['org_trust_id']})
            parent = channel['parent_channel']
            if not parent:
                nullParentBatch.append(channel)
                continue
            nonNullParentBatch.append(channel)
            # And save the parent channel's label in a hash too
            parentChannels[parent] = None
        # Process the easy case of null parent channels
        try:
            self.backend.processChannels(nullParentBatch, True)
        except:
            self.backend.rollback()
            raise

        # Find the parent channels ids
        for channel in nullParentBatch:
            if channel.ignored:
                continue
            label = channel['label']
            if label not in parentChannels:
                # This channel is not a parent channel to anybody
                continue
            parentChannels[label] = channel.id

        # Build an extra hash for the channels with unknown ids
        unknownChannels = {}
        for k, v in list(parentChannels.items()):
            if v is None:
                unknownChannels[k] = None

        # And look them up
        self.backend.lookupChannels(unknownChannels)

        # Copy the ids back into parentChannels, to make life easier
        missingParents = []
        for k, v in list(unknownChannels.items()):
            if v is None:
                missingParents.append(k)
            else:
                parentChannels[k] = v['id']
        if missingParents:
            raise MissingParentChannelError(
                missingParents, "Invalid import, this parents need to be imported: %s" % str(", ".join(missingParents)))

        # Fix up the parent channels
        for channel in nonNullParentBatch:
            parent = channel['parent_channel']
            if parent not in parentChannels:
                # Unknown parent channel
                channel.ignored = 1
                continue
            # Replace the label with the id
            channel['parent_channel'] = parentChannels[parent]

        # And process these channels too
        try:
            self.backend.processChannels(nonNullParentBatch, False)
        except:
            self.backend.rollback()
            raise

        # Process the channel trusts
        if len(channel_trusts) > 0:
            self.backend.processChannelTrusts(channel_trusts)

        # Finally go back and add the products and content sources, if any
        for channel in self.batch:
            if channel.ignored:
                continue

            if ('channel_product' in channel and channel['channel_product']) \
                    or ('product_name' in channel and channel['product_name']):
                self.backend.processChannelProduct(channel)

            self.backend.processChannelContentSources(channel)

        # Sometimes we may want to turn commits off
        if self.will_commit:
            self.backend.commit()


class ChannelFamilyImport(Import):

    def preprocess(self):
        self.__filterCustomChannelFamilies()
        # We have to look up the channels for this channel family first
        self.channels = {}
        for cf in self.batch:
            for c in cf['channels']:
                self.channels[c] = None

    def fix(self):
        self.backend.lookupChannels(self.channels)
        for cf in self.batch:
            channel_ids = cf['channel_ids'] = []
            for c in cf['channels']:
                chash = self.channels[c]
                if chash is None:
                    # Skip
                    continue
                cid = chash['id']
                channel_ids.append(cid)

    def submit(self):
        try:
            self.backend.processChannelFamilies(self.batch)
            self.backend.processChannelFamilyMembers(self.batch)
            self.backend.processChannelFamilyPermissions(self.batch)
        except:
            self.backend.rollback()
            raise
        self.backend.commit()

    def __filterCustomChannelFamilies(self):
        """Filter out private channel families from ISS syncs. WebUI
           creates these for us at the org creation time.
        """
        new_batch = []
        for cf in self.batch:
            if not cf['label'].startswith("private-channel-family"):
                new_batch.append(cf)
        self.batch = new_batch


class DistChannelMapImport(Import):

    def __init__(self, batch, backend):
        Import.__init__(self, batch, backend)
        self.arches = {}
        self.channels = {}

    def preprocess(self):
        # Processes the batch to a form more suitable for database
        # operations
        for dcm in self.batch:
            self.arches[dcm['arch']] = None
            self.channels[dcm['channel']] = None

    def fix(self):
        # Look up arches and channels
        self.backend.lookupChannelArches(self.arches)
        self.backend.lookupChannels(self.channels)
        for dcm in self.batch:
            arch = self.arches[dcm['arch']]
            if arch is None:
                # Invalid arch
                dcm.ignored = 1
                raise InvalidArchError(dcm['arch'],
                                       "Invalid dist_channel_map arch %s" % dcm['arch'])
            channel = self.channels[dcm['channel']]
            if channel is None:
                dcm.ignored = 1
                raise InvalidChannelError(dcm['channel'],
                                          "Invalid dist_channel_map channel %s" % dcm['channel'])
            dcm['arch'] = arch
            dcm['channel_id'] = channel['id']
            dcm['org_id'] = None

    def submit(self):
        try:
            self.backend.processDistChannelMap(self.batch)
        except:
            self.backend.rollback()
            raise
        self.backend.commit()


# for testing only
if __name__ == '__main__':
    import sys
    from spacewalk.server import rhnSQL
    from backendOracle import OracleBackend
    from .importLib import Collection, ChannelFamily, DistChannelMap
    backend = OracleBackend()
    if 1:
        batch = Collection()
        dcms = [
            {
                'os': 'Red Hat Linux',
                'release': '7.2',
                'arch': 'i386',
                'channel': 'redhat-linux-i386-7.2',
            },
            {
                'os': 'Red Hat Linux',
                'release': '6.2',
                'arch': 'i386',
                'channel': 'redhat-linux-i386-6.2',
            },
        ]

        for dcm in dcms:
            x = DistChannelMap()
            x.populate(dcm)
            batch.append(x)
        rhnSQL.initDB()
        backend.init()
        dcmimp = DistChannelMapImport(batch, backend)
        dcmimp.run()
        sys.exit(0)
    if 0:
        batch = Collection()
        families = [
            {
                'name': 'Cisco Linux',
                'label': 'cisco',
                'product_url': 'http://www.redhat.com/products/ADSFASDFASDF',
            },
            {
                'name': 'Misa Linux',
                'label': 'misa',
                'product_url': 'http://people.redhat.com/misa/ASDFASDFASDF',
            },
        ]
        for fam in families:
            cf = ChannelFamily()
            cf.populate(fam)
            batch.append(cf)
        rhnSQL.initDB()
        backend.init()
        cfimp = ChannelFamilyImport(batch, backend)
        cfimp.run()
        sys.exit(0)
   0707010000018D000081B40000000000000000000000016290A0C1000007F7000000000000000000000000000000000000003B00000000spacewalk-backend/server/importlib/contentSourcesImport.py    #
# Copyright (c) 2016--2017 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#
#

from .importLib import Import, Channel
from spacewalk.server.rhnChannel import channel_info


class ContentSourcesImport(Import):

    def __init__(self, batch, backend):
        Import.__init__(self, batch, backend)
        self.channels_to_link = {}

    def preprocess(self):
        for content_source in self.batch:
            # Link back content sources to channel objects to subscribe them to existing channels right after import
            if 'channels' in content_source and content_source['channels'] is not None:
                for channel_label in content_source['channels']:
                    if channel_label not in self.channels_to_link:
                        db_channel = channel_info(channel_label)
                        channel_obj = Channel()
                        channel_obj.id = db_channel['id']
                        channel_obj['content-sources'] = []
                        self.channels_to_link[channel_label] = channel_obj
                    self.channels_to_link[channel_label]['content-sources'].append(content_source)

    def fix(self):
        pass

    def submit(self):
        try:
            self.backend.processContentSources(self.batch)
            for channel in list(self.channels_to_link.values()):
                self.backend.processChannelContentSources(channel)
        except:
            self.backend.rollback()
            raise
        self.backend.commit()
 0707010000018E000081B40000000000000000000000016290A0C100001E69000000000000000000000000000000000000003100000000spacewalk-backend/server/importlib/debPackage.py  #
# Copyright (c) 2010--2016 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#
#
# Converts headers to the intermediate format
#

from . import headerSource
import time
from .importLib import Channel
from .backendLib import gmtime, localtime
from uyuni.common.usix import IntType, UnicodeType
from uyuni.common.stringutils import to_string


class debBinaryPackage(headerSource.rpmBinaryPackage):

    def __init__(self, header, size, checksum_type, checksum, path=None, org_id=None,
                 channels=[]):

        headerSource.rpmBinaryPackage.__init__(self)

        self.tagMap = headerSource.rpmBinaryPackage.tagMap.copy()

        # Remove already-mapped tags
        self._already_mapped = [
            'rpm_version', 'payload_size', 'payload_format',
            'package_group', 'build_time', 'build_host'
        ]

        for t in self._already_mapped:
            if t in self.tagMap:
                del self.tagMap[t]

        # XXX is seems to me that this is the place that 'source_rpm' is getting
        # set
        for f in list(self.keys()):
            field = f
            if f in self.tagMap:
                field = self.tagMap[f]
                if not field:
                    # Unsupported
                    continue

            # get the db field value from the header
            val = header[field]
            if f == 'build_time':
                if val is not None and isinstance(val, IntType):
                    # A UNIX timestamp
                    val = gmtime(val)
            elif val:
                # Convert to strings
                if isinstance(val, UnicodeType):
                    val = to_string(val)
                else:
                    val = str(val)
            elif val == []:
                val = None
            self[f] = val

        self['package_size'] = size
        self['checksum_type'] = checksum_type
        self['checksum'] = checksum
        self['path'] = path
        self['org_id'] = org_id
        self['header_start'] = None
        self['header_end'] = None
        self['last_modified'] = localtime(time.time())
        if self['sigmd5']:
            self['sigchecksum_type'] = 'md5'
            self['sigchecksum'] = self['sigmd5']
        del(self['sigmd5'])

        # Fix some of the information up
        vendor = self['vendor']
        if vendor is None:
            self['vendor'] = 'Debian'
        payloadFormat = self['payload_format']
        if payloadFormat is None:
            self['payload_format'] = 'ar'
        if self['payload_size'] is None:
            self['payload_size'] = 0

        # Populate file information
        self._populateFiles(header)
        # Populate dependency information
        self._populateDependencyInformation(header)
        # Populate changelogs
        self._populateChangeLog(header)
        # Channels
        self._populateChannels(channels)
        # populate extraTags from headers not in already mapped fields
        self._populateExtraTags(header)

        self['source_rpm'] = None

        group = self.get('package_group', '')
        if group == '' or group is None:
            self['package_group'] = 'NoGroup'

    def _populateFiles(self, header):
        files = []
        # for f in header.get('files', []):
        #    fc = headerSource.rpmFile()
        #    fc.populate(f)
        #    files.append(fc)
        self['files'] = files

    def _populateDependencyInformation(self, header):
        mapping = {
            'provides': headerSource.rpmProvides,
            'requires': headerSource.rpmRequires,
            'conflicts': headerSource.rpmConflicts,
            'obsoletes': headerSource.rpmObsoletes,
            'suggests': headerSource.rpmSuggests,
            'recommends': headerSource.rpmRecommends,
            'breaks': headerSource.rpmBreaks,
            'predepends': headerSource.rpmPredepends,
        }
        for k, dclass in list(mapping.items()):
            l = []
            values = header[k]
            if values is not None:
                val = [ elem.strip() for elem in values.split(',') ]  # split packages
                i = 0
                for v in val:
                    relation = 0
                    version = ''
                    if '|' in v:
                        # TODO: store alternative-package-names semantically someday
                        name = v + '_' + str(i)
                    else:
                        nv = v.split('(')
                        name = nv[0] + '_' + str(i)
                        if (len(nv) > 1):
                            version = nv[1].rstrip(')')
                            if version:
                                while version.startswith(("<", ">", "=")):
                                    if version.startswith("<"):
                                        relation |= 2
                                    if version.startswith(">"):
                                        relation |= 4
                                    if version.startswith("="):
                                        relation |= 8
                                    version = version[1:]
                    hash = {'name': name, 'version': version, 'flags': relation}
                    finst = dclass()
                    finst.populate(hash)
                    l.append(finst)
                    i += 1
            self[k] = l

    def _populateChangeLog(self, header):
        l = []
        # for cinfo in header.get('changelog', []):
        #    cinst = headerSource.rpmChangeLog()
        #    cinst.populate(cinfo)
        #    l.append(cinst)
        self['changelog'] = l

    def _populateChannels(self, channels):
        l = []
        for channel in channels:
            dict = {'label': channel}
            obj = Channel()
            obj.populate(dict)
            l.append(obj)
        self['channels'] = l

    def _populateExtraTags(self, header):
        already_processed = ['arch',
                            'name',
                            'summary',
                            'epoch',
                            'version',
                            'release',
                            'payload_size',
                            'vendor',
                            'package_group',
                            'requires',
                            'obsoletes',
                            'predepends',
                            'package',
                            'architecture',
                            'description',
                            'maintainer',
                            'section',
                            'version',
                            'depends',
                            'provides',
                            'conflicts',
                            'replaces',
                            'recommends',
                            'suggests',
                            'breaks',
                            'pre-depends',
                            'installed-size',
                            ]
        l = []
        for k, v in header.items():
            if k.lower() not in already_processed and v:
                l.append({'name': k, 'value': v})

        self['extra_tags'] = l
   0707010000018F000081B40000000000000000000000016290A0C1000010C4000000000000000000000000000000000000002B00000000spacewalk-backend/server/importlib/doc.txt    There are 3 layers of data munging happening in the import code.

importLib.py has a representation of each high-level object (ChannelFamily,
Channel, Errata, Package etc). The representation defines the properties and
the types for each of those properties. This should be really _the_ data model
for us.

backendOracle.py has an Oracle representation of that data model, i.e. a
mapping to the table structures we chose to use. Some conversions may be
necessary to go from one to the other. It also defines the primary keys for
each of the tables, necessary to perform the lookups properly.

Also, each table has a severityHash dictionary, describing how "fatal" a
difference in one of those fields is. I will explain this later.

The third layer (but it is really the first if you think about how stuff gets
called) is:

<foo><object>Source.py

bugzillaErrataSource.py, headerSource.py etc.

This layer is responsible for reading the data from the source to the
importLib data object.

The business logic is supposed to happen in the *Import.py files, while all
the database access should be in backend.py (but I don't think it's very
consistent).


In general, a data object (like a Package) will span across multiple tables.
In the case of a package, it spans over rhnPackage,
rhnPackage{Provides,Requires,Conflicts,Obsoletes,Files}, rhnChannelPackage
(when channel subscription is requested) etc. Therefore, we needed a way to
generically persist an object in the database using the nested table
structures we have in the relational DB.

One problem showing up is, how do you reconcile differences?
For instance, most of our tables have a "created" and "modified" field (and
some of them have a "last_modified" field, to track the change of the object
itself, instead of the row in the table). While it is important to control the
data in the last_modified field, it doesn't necessarily participate in the
comparison between an incoming object and its current representation in the
database (if one exists).

So, in rough lines, the code will:
    - read the data from the data source and convert it into the proper object
    - using the object's primary key attributes, look it up in the database
    - if the object doesn't exist, it initializes all the IDs for the primary
      keys from sequences, and proceeds to insert it into the DB
    - if the object does exist, it will check to see how different it is from
      the incoming one.

Each "import" process has an uploadForce and an ignoreUploaded flag associated
with it. These are all documented in __processObjectCollection__ (and some of
the documentation exists there already).

The uploadForce is the amount of karma you have in order to go over
differences on fields with various severity levels. Looking at severityHash in
backendOracle.py, you'll notice several values for severities:
    0 means "if things are different in this field, just ignore them"
    1 means "almost the same, difference can be ignored" (only used for 
        packages and only for the path). Two packages that are identical
        except for the path are identical, but sometimes you may still want to
        fix the path.
    2 means "same object, different signature" (only for packages too). If
      build_time and build_host are the same (as well as everything else except
      for checksum and package_size), then the package was resigned.
    3 means "everything the same, except build_time and build_host". Probably
      package recompiled.
    4 (default) means something critical changed.

You'll notice that last_modified is 0.5, I think I needed it that way for a
reason I don't quite remember - probably in the satellite sync code.

As the comments in __processObjectCollection suggest, the diff object
generated as a result of a comparison will draw its severity as the max of the
severities in each field.

The upload force has to be greater than or equal to the severity diff.

One other thing that proved to be a major performance factor was multi-row
inserts. You will notice processObjectCollection returns a DML object, which
has the changes to perform on each table. The changes will be performed one
table at the time, using executemany (mapped into Oracle's OCI interface to
perform bulk inserts/deletes/updates).
07070100000190000081B40000000000000000000000016290A0C1000004B1000000000000000000000000000000000000003200000000spacewalk-backend/server/importlib/errataCache.py #
# Copyright (c) 2008--2015 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#
#
# Adds tasks to be executed by the errata cache daemon
#

from spacewalk.server import rhnSQL


def schedule_errata_cache_update(channels):
    # If no channels were supplied, exit here to shortcut parsing the query
    if not channels:
        return
    h = rhnSQL.prepare("""
        insert into rhnTaskQueue
       (org_id, task_name, task_data, priority, earliest)
       select coalesce(c.org_id, 1), 'update_errata_cache_by_channel', c.id, 0, current_timestamp
       from rhnChannel c
       where c.label = :label
    """)
    h.executemany(label=channels)
    rhnSQL.commit()
   07070100000191000081B40000000000000000000000016290A0C10000369E000000000000000000000000000000000000003300000000spacewalk-backend/server/importlib/errataImport.py    #
# Copyright (c) 2008--2016 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#
#
# Errata import process
#

from spacewalk.common.rhnException import rhnFault
from .importLib import GenericPackageImport
from spacewalk.satellite_tools.syncLib import log


class ErrataImport(GenericPackageImport):

    def __init__(self, batch, backend, queue_timeout=600):
        GenericPackageImport.__init__(self, batch, backend)
        # A composite key of the name, evr, arch plus org_id
        self.packages = {}
        self.ignoreMissing = 0
        self.cve = {}
        self.queue_timeout = queue_timeout
        self.file_types = {}
        self.package_type = None

    def preprocess(self):
        # Processes the package batch to a form more suitable for database
        # operations

        # We use this to avoid having the same erratum pushed multiple times
        advisories = {}
        errata_hash = {}

        for errata in self.batch:
            advisory = errata['advisory_name']
            release = errata['advisory_rel']
            errata_hash["%s%s" % (advisory, release)] = errata
            if advisory in advisories:
                if int(release) < int(advisories[advisory]):
                    # Seen a newer one already
                    errata.ignored = 1
                    continue
                else:
                    # if this release is higher
                    # we have to ignore the older one!
                    errata_hash["%s%s" % (advisory, advisories[advisory])].ignored = 1
            advisories[advisory] = release
            self._preprocessErratum(errata)
            self._preprocessErratumCVE(errata)
            self._preprocessErratumFiles(errata)
            self._preprocessErratumFileChannels(errata)

    def _preprocessErratum(self, errata):
        # Process packages
        for package in errata['packages']:
            self._processPackage(package)

        # Process channels
        channelHash = {}
        for channel in errata['channels']:
            channelName = channel['label']
            channelHash[channelName] = channel
            self.channels[channelName] = None
        # Replace the channel list with the unique one
        errata['channels'] = list(channelHash.values())

    def _preprocessErratumCVE(self, erratum):
        # Build the CVE dictionary
        # FIXME: this if decision is here to deal with missing cve data.
        #        fix later.
        if not erratum['cve']:
            erratum['cve'] = []
        for cve in erratum['cve']:
            self.cve[cve] = None

    def _preprocessErratumFiles(self, erratum):
        for f in (erratum['files'] or []):
            checksumTuple = (f['checksum_type'], f['checksum'])
            if checksumTuple not in self.checksums:
                self.checksums[checksumTuple] = None

            if f['file_type'] == 'RPM':
                package = f.get('pkgobj')
                if package:
                    self._processPackage(package)
                    nevrao = tuple(get_nevrao(package))
                    self.packages[nevrao] = package
            # Oval errata files need to be removed from the import for now.
            # This is to make sure non-oval capable satellites won't be importing
            # the oval data from an oval-enabled dump.
            elif f['file_type'] == 'OVAL':
                erratum['files'].remove(f)
            # elif f['file_type'] == 'SRPM':
            #    # XXX misa: do something here
            #    pass

    def _preprocessErratumFileChannels(self, erratum):
        for f in (erratum['files'] or []):
            for channel_name in (f.get('channel_list') or []):
                self.channels[channel_name] = None

    def fix(self):
        self.backend.lookupPackageArches(self.package_arches)
        self.backend.lookupChannels(self.channels)
        self.backend.lookupErrataFileTypes(self.file_types)
        for erratum in self.batch:
            for ef in erratum['files']:
                eft = ef['file_type']
                if eft not in self.file_types:
                    raise Exception("Unknown file type %s" % eft)
                ef['type'] = self.file_types[eft]
        for label, aid in self.package_arches.items():
            self.package_type = self.backend.lookupPackageArchType(aid)
            if self.package_type:
                break

        self._fixCVE()

        self.backend.lookupPackageNames(self.names)
        self.backend.lookupEVRs(self.evrs, self.package_type)
        self.backend.lookupChecksums(self.checksums)

        for erratum in self.batch:
            if erratum.ignored:
                # Skip it
                continue
            self._fix_erratum_channels(erratum)
            self._fix_erratum_packages_lookup(erratum)
            self._fix_erratum_file_packages(erratum)
            # fix severity stuff
            self._fix_erratum_severity(erratum)
            # fix oval info to populate the relevant dbtables
            self._fix_erratum_oval_info(erratum)

        self.backend.lookupPackages(list(self.packages.values()), self.checksums, self.ignoreMissing)
        for erratum in self.batch:
            if erratum.ignored:
                # Skip it
                continue
            self._fix_erratum_packages(erratum)
            self._fix_erratum_file_channels(erratum)

        # remove erratas that have been ignored
        ignored_erratas = list([x for x in self.batch if x.ignored])
        if len(ignored_erratas) > 0:
            log(0, "Ignoring %d old, superseded erratas" % len(ignored_erratas))
            self.batch = list([x for x in self.batch if not x.ignored])

    def _fixCVE(self):
        # Look up and insert the missing CVE's
        self.backend.processCVEs(self.cve)
        # Fix the CVE stuff
        for erratum in self.batch:
            if erratum.ignored:
                continue
            cves = []
            for cve in erratum['cve']:
                entry = {
                    'cve_id': self.cve[cve],
                }
                cves.append(entry)
            erratum['cve'] = cves

    def _fix_files(self):
        rpm_files = []
        srpm_files = []
        oval_files = []
        channel_files = []
        for erratum in self.batch:
            if erratum.ignored:
                continue
            for file in erratum['files']:
                file_type = file['file_type']
                file_id = file['id']
                package_id = file.get('package_id')
                if package_id is not None:
                    pkg = {
                        'errata_file_id': file_id,
                        'package_id': package_id,
                    }
                    if file_type == 'RPM':
                        rpm_files.append(pkg)
                    elif file_type == 'SRPM':
                        srpm_files.append(pkg)
                    elif file_type == 'OVAL':
                        pkg = {
                            'errata_id': file_id,
                            'filename': file['filename'],
                        }
                        oval_files.append(pkg)
                for channel_id in file['channels']:
                    channel_files.append({
                        'errata_file_id': file_id,
                        'channel_id': channel_id,
                    })
        self.backend._do_diff(rpm_files, 'rhnErrataFilePackage',
                              ['errata_file_id', 'package_id'], [])
        self.backend._do_diff(srpm_files, 'rhnErrataFilePackageSource',
                              ['errata_file_id', 'package_id'], [])
        self.backend._do_diff(channel_files, 'rhnErrataFileChannel',
                              ['errata_file_id', 'channel_id'], [])
        self.backend._do_diff(oval_files, 'rhnErrataFile',
                              ['errata_id', 'filename'], [])

    def submit(self):
        try:
            dml = self.backend.processErrata(self.batch)
            self.backend.update_channels_affected_by_errata(dml)
            self._fix_files()
            self.backend.queue_errata(self.batch, self.queue_timeout)
        except:
            self.backend.rollback()
            raise
        self.backend.commit()

    def _fix_erratum_channels(self, erratum):
        # Fix the erratum's channels
        channels = {}
        for ch in erratum['channels']:
            label = ch['label']
            channel = self.channels[label]
            if not channel:
                # Invalid channel
                if self.ignoreMissing:
                    # Ignore missing channel
                    continue
                # XXX Raising an exception here; it may be too harsh though
                erratum.ignored = 1
                raise Exception("XXX Invalid channel %s" % label)

            channels[channel['id']] = None

        erratum['channels'] = [{'channel_id': x} for x in list(channels.keys())]

    def _fix_erratum_packages_lookup(self, erratum):
        # To make the packages unique
        packageHash = {}
        for package in erratum['packages']:
            if package.ignored:
                # Skip it
                continue

            self._postprocessPackageNEVRA(package)

            # Check the uniqueness
            nevrao = tuple(get_nevrao(package))

            if nevrao in packageHash:
                # Been there already
                package.ignored = 1
                continue

            package['nevrao'] = nevrao

            # And put this package both in the local and in the global hash
            packageHash[nevrao] = package
            self.packages[nevrao] = package

        erratum['packages'] = packageHash

    def _fix_erratum_file_packages(self, erratum):
        for ef in erratum['files']:
            ef['checksum_id'] = self.checksums[(ef['checksum_type'], ef['checksum'])]
            if ef['file_type'] == 'RPM':
                package = ef.get('pkgobj')
                if not package:
                    continue
                self._postprocessPackageNEVRA(package)
            # XXX fix source rpms

    def _fix_erratum_packages(self, erratum):
        pkgs = []
        # This is a workaround; It would be much straightforward to use
        # 'package in erratum['packages'].values()' here. But for (to me) unknown
        # reason it sometimes has package.id == None which makes whole import fail.
        # And self.packages[nevrao].id contains always right value.
        for nevrao in list(erratum['packages'].keys()):
            package = self.packages[nevrao]
            if package.ignored:
                # Ignore this package
                continue
            pkgs.append({'package_id': package.id})

        erratum['packages'] = pkgs

        for ef in (erratum['files'] or []):
            if ef['file_type'] == 'RPM':
                package = ef.get('pkgobj')
                if package:
                    ef['package_id'] = package.id

    def _fix_erratum_file_channels(self, erratum):
        for f in (erratum['files'] or []):
            channels = []
            for c in (f.get('channel_list') or []):
                if not self.channels[c]:
                    # Unsupported channel
                    # XXX misa: should we gripe loudly?
                    continue
                channels.append(self.channels[c]['id'])
            f['channels'] = channels

    def _fix_erratum_severity(self, erratum):
        """sets the severity-id to insert into rhnErrata
        """
	# Re-check for severity, it could be a RHBA or RHEA
	# If RHBA/RHEA severity is irrelevant and posibly
	# not included or it could not be hosted
        severity = None

        if 'security_impact' in erratum:
            severity = erratum['security_impact']
        elif 'severity' in erratum:
            severity = erratum['severity']

        if severity:
            erratum['severity_id'] = self.backend.lookupErrataSeverityId(erratum)

    def _fix_erratum_oval_info(self, erratum):
        """
        manipulate oval package info to populate in the
        appropriate fields in the db tables.

        """
        import os

        if 'oval_info' not in erratum:
            return

        for oval_file in erratum['oval_info']:
            if has_suffix(oval_file['filename'], '.xml'):
                eft = oval_file['file_type'] = 'OVAL'
                if eft not in self.file_types:
                    raise Exception("Unknown file type %s" % eft)
                oval_file['type'] = self.file_types[eft]

            # XXX: stubs incase we need to associate them to channels/packages
            oval_file['channel_list'] = []
            oval_file['channels'] = []
            oval_file['package_id'] = None

            if not os.path.isfile(oval_file['filename']):
                # Don't bother to copy the package
                raise rhnFault(47,
                               "Oval file %s not found on the server. " % oval_file['filename'],
                               explain=0)

            # add the oval info into the files field to get
            # populated into db
            erratum['files'].append(oval_file)


def get_nevrao(package):
    return list(map(lambda x, d=package: d[x],
               ['name', 'epoch', 'version', 'release', 'arch', 'org_id', 'checksum_type', 'checksum']))


def has_suffix(s, suffix):
    return s[-len(suffix):] == suffix
  07070100000192000081B40000000000000000000000016290A0C10000442E000000000000000000000000000000000000003300000000spacewalk-backend/server/importlib/headerSource.py    #
# Copyright (c) 2008--2016 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#
#
# Converts headers to the intermediate format
#

import time
from .importLib import File, Dependency, ChangeLog, Channel, \
    IncompletePackage, Package, SourcePackage
from .backendLib import gmtime, localtime
from uyuni.common.usix import ListType, TupleType, IntType, LongType, StringType, UnicodeType
from uyuni.common.stringutils import to_string
from spacewalk.common.rhnLog import log_debug


class rpmPackage(IncompletePackage):
    # Various mappings
    tagMap = {
        # Ignoring these tags
        'last_modified': None,
        # We set them differently
        'checksum': None,
        'checksum_type': None,
        'checksum_list': None,
        'sigchecksum': None,
        'sigchecksum_type': None,
    }

    def populate(self, header, size, checksum_type, checksum, path=None, org_id=None,
                 header_start=None, header_end=None, channels=[]):

        # XXX is seems to me that this is the place that 'source_rpm' is getting
        # set
        for f in list(self.keys()):
            field = f
            if f in self.tagMap:
                field = self.tagMap[f]
                if not field:
                    # Unsupported
                    continue

            # get the db field value from the header
            val = header[field]
            if f == 'build_time':
                if type(val) in (IntType, LongType):
                    # A UNIX timestamp
                    val = gmtime(val)
            if f == 'payload_size':
                if val is None:
                    # use longarchivesize header field for rpms with archive > 4GB
                    if ('longarchivesize' in header) and (header['longarchivesize'] > 0):
                        val = header['longarchivesize']
                elif val < 0:
                    # workaround for older rpms where signed
                    # attributes go negative for size > 2G
                    val = LongType(val) + 2 ** 32
            elif val:
                # Convert to strings
                if isinstance(val, UnicodeType):
                    val = to_string(val)
                else:
                    val = str(val)
            elif val == []:
                val = None
            self[f] = val

        self['package_size'] = size
        self['checksum_type'] = checksum_type
        self['checksum'] = checksum
        self['checksums'] = {checksum_type: checksum}
        self['path'] = path
        self['org_id'] = org_id
        self['header_start'] = header_start
        self['header_end'] = header_end
        self['last_modified'] = localtime(time.time())
        if 'sigmd5' in self:
            if self['sigmd5']:
                self['sigchecksum_type'] = 'md5'
                self['sigchecksum'] = self['sigmd5']
            del(self['sigmd5'])

        # Fix some of the information up
        vendor = self['vendor'] or None
        payloadFormat = self['payload_format']
        if payloadFormat is None:
            self['payload_format'] = 'cpio'
        if self['payload_size'] is None:
            self['payload_size'] = 0
        # Extra tags
        self._populateExtraTags(header)

        return self

    def _populateExtraTags(self, header):
        """
        Populate extra tags. Currently only "modularitylabel".
        """
        mlabel = header.modularity_label()
        if mlabel is not None:
            self["extra_tags"] = [
                {"name": "modularitylabel", "value": mlabel}
            ]


class rpmBinaryPackage(Package, rpmPackage):
    # Various mappings
    tagMap = rpmPackage.tagMap.copy()
    tagMap.update({
        'package_group': 'group',
        'rpm_version': 'rpmversion',
        'payload_size': 'archivesize',
        'installed_size': 'size',
        'payload_format': 'payloadformat',
        'build_host': 'buildhost',
        'build_time': 'buildtime',
        'source_rpm': 'sourcerpm',
        # Arrays: require a different mapping
        'requires': None,
        'provides': None,
        'conflicts': None,
        'obsoletes': None,
        'suggests': None,
        'supplements': None,
        'enhances': None,
        'recommends': None,
        'breaks': None,
        'predepends': None,
        'files': None,
        'changelog': None,
        'channels': None,
        # We set them differently
        'package_size': None,
        'org_id': None,
        'md5sum': None,
        'path': None,
        'header_start': None,
        'header_end': None,
        # Unsupported
        'sigpgp': None,
        'siggpg': None,
        'package_id': None,
        'product_files': None,
        'eulas': None,
        'extra_tags': None,
    })

    def populate(self, header, size, checksum_type, checksum, path=None, org_id=None,
                 header_start=None, header_end=None, channels=[]):

        rpmPackage.populate(self, header, size, checksum_type, checksum, path, org_id,
                            header_start, header_end)

        # bz 1218762: if package group is None
        if not self['package_group']:
            self['package_group'] = "Unspecified"

        # workaround for bug in rpm-python <= 4.4.2.3-27.el5 (BZ# 783451)
        self['package_group'] = self['package_group'].rstrip()
        # Populate file information
        self._populateFiles(header)
        # Populate dependency information
        self._populateDependencyInformation(header)
        # Populate changelogs
        self._populateChangeLog(header)
        # Channels
        self._populateChannels(channels)

    def _populateFiles(self, header):
        self._populateTag(header, 'files', rpmFile)

    def _populateDependencyInformation(self, header):
        mapping = {
            'provides'  : rpmProvides,
            'requires'  : rpmRequires,
            'conflicts' : rpmConflicts,
            'obsoletes' : rpmObsoletes,
            'breaks'    : rpmBreaks,
            'predepends': rpmPredepends,
        }

        old_weak_deps_mapping = {
            'supplements' : rpmOldSupplements,
            'enhances'  : rpmOldEnhances,
            'suggests'  : rpmOldSuggests,
            'recommends'  : rpmOldRecommends,
        }

        new_weak_deps_mapping = {
            'supplements' : rpmSupplements,
            'enhances'  : rpmEnhances,
            'suggests'  : rpmSuggests,
            'recommends': rpmRecommends,
        }

        for k, v in list(mapping.items()):
            self._populateTag(header, k, v)
        for k, v in list(old_weak_deps_mapping.items()):
            self._populateTag(header, k, v)
        for k, v in list(new_weak_deps_mapping.items()):
            self._populateTag(header, k, v)

    def _populateChangeLog(self, header):
        self._populateTag(header, 'changelog', rpmChangeLog)

    def _populateChannels(self, channels):
        l = []
        for channel in channels:
            dict = {'label': channel}
            obj = Channel()
            obj.populate(dict)
            l.append(obj)
        self['channels'] = l

    def _populateTag(self, header, tag, Class):
        """
        Populates a tag with a list of Class instances, getting the
        information from a header
        """
        # First fix rpm's brokenness - sometimes singe-elements lists are
        # actually single elements
        fix = {}
        itemcount = 0

        for f, rf in list(Class.tagMap.items()):
            v = sanitizeList(header[rf])
            ic = len(v)
            if not itemcount or ic < itemcount:
                itemcount = ic
            fix[f] = v

        # Now create the array of objects
        if self[tag] is None:
            self[tag] = []

        unique_deps = []
        for i in range(itemcount):
            hash = {}
            for k, v in list(fix.items()):
                # bugzilla 426963: fix for rpm v3 obsoletes header with
                # empty version and flags values
                if not len(v) and k == 'version':
                    hash[k] = ''
                elif not len(v) and k in ('device', 'flags'):
                    hash[k] = 0
                else:
                    hash[k] = v[i]

            # for the old weak dependency tags
            # RPMSENSE_STRONG(1<<27) indicate recommends; if not set it is suggests only
            if Class in [rpmOldRecommends, rpmOldSupplements, rpmOldSuggests, rpmOldEnhances]:
                if tag in ['recommends', 'supplements'] and not(hash['flags'] & (1 << 27)):
                    continue
                if tag in ['suggests', 'enhances'] and (hash['flags'] & (1 << 27)):
                    continue
            # Create a file
            obj = Class()
            # Fedora 10+ rpms have duplicate provides deps,
            # Lets clean em up before db inserts.
            if tag in ['requires', 'provides', 'obsoletes', 'conflicts', 'recommends', 'suggests', 'supplements', 'enhances', 'breaks', 'predepends']:
                if not len(hash['name']):
                    continue
                dep_nv = (hash['name'], hash['version'], hash['flags'])

                if dep_nv not in unique_deps:
                    unique_deps.append(dep_nv)
                    obj.populate(hash)
                    self[tag].append(obj)
                else:
                    # duplicate dep, ignore
                    continue
            else:
                if tag == 'files':
                    hash['checksum_type'] = header.checksum_type()
                obj.populate(hash)
                self[tag].append(obj)


class rpmSourcePackage(SourcePackage, rpmPackage):
    tagMap = rpmPackage.tagMap.copy()
    tagMap.update({
        'package_group': 'group',
        'rpm_version': 'rpmversion',
        'payload_size': 'archivesize',
        'build_host': 'buildhost',
        'build_time': 'buildtime',
        'source_rpm': 'sourcerpm',
        # Arrays: require a different mapping
        # We set them differently
        'package_size': None,
        'org_id': None,
        'md5sum': None,
        'path': None,
        # Unsupported
        'payload_format': None,
        'channels': None,
        'package_id': None,
        'extra_tags': None,
    })

    def populate(self, header, size, checksum_type, checksum, path=None, org_id=None,
                 header_start=None, header_end=None, channels=[]):
        rpmPackage.populate(self, header, size, checksum_type, checksum, path, org_id,
                            header_start, header_end)
        # bz 1218762: if package group is None
        if not self['package_group']:
            self['package_group'] = "Unspecified"

        nvr = []
        # workaround for bug in rpm-python <= 4.4.2.3-27.el5 (BZ# 783451)
        self['package_group'] = self['package_group'].rstrip()
        # Fill in source_rpm
        for tag in ['name', 'version', 'release']:
            nvr.append(header[tag])

        # 5/13/05 wregglej - 154248 If 1051 is in the list of keys in the header,
        # the package is a nosrc package and needs to be saved as such.
        if 1051 in list(header.keys()):
            self['source_rpm'] = "%s-%s-%s.nosrc.rpm" % tuple(nvr)
        else:
            self['source_rpm'] = "%s-%s-%s.src.rpm" % tuple(nvr)

        # Convert sigchecksum to ASCII
        self['sigchecksum_type'] = 'md5'
        self['sigchecksum'] = ''.join(["%02x" % ord(x) for x in self['sigchecksum']])


class rpmFile(File, ChangeLog):
    # Mapping from the attribute's names to rpm tags
    tagMap = {
        'name': 'filenames',
        'device': 'filedevices',
        'inode': 'fileinodes',
        'file_mode': 'filemodes',
        'username': 'fileusername',
        'groupname': 'filegroupname',
        'rdev': 'filerdevs',
        'file_size': 'filesizes',
        'mtime': 'filemtimes',
        'filedigest': 'filemd5s',     # FILEMD5S is a pre-rpm4.6 name for FILEDIGESTS
        # we have to use it for compatibility reason
        'linkto': 'filelinktos',
        'flags': 'fileflags',
        'verifyflags': 'fileverifyflags',
        'lang': 'filelangs',
    }

    def populate(self, hash):
        ChangeLog.populate(self, hash)
        # Fix the time
        tm = self['mtime']
        if type(tm) in (IntType, LongType):
            # A UNIX timestamp
            self['mtime'] = localtime(tm)
        if type(self['filedigest']) == StringType:
            self['checksum'] = self['filedigest']
            del(self['filedigest'])


class rpmProvides(Dependency):
    # More mappings
    tagMap = {
        'name': 'provides',
        'version': 'provideversion',
        'flags': 'provideflags',
    }


class rpmRequires(Dependency):
    # More mappings
    tagMap = {
        'name': 'requirename',
        'version': 'requireversion',
        'flags': 'requireflags',
    }

class rpmOldSuggests(Dependency):
    # More mappings
    tagMap = {
        'name': 1156,  # 'suggestsname',
        'version': 1157,  # 'suggestsversion',
        'flags': 1158,  # 'suggestsflags',
    }

class rpmSuggests(Dependency):
    # More mappings
    tagMap = {
        'name'      : 5049, #'suggestsname',
        'version'   : 5050, #'suggestsversion',
        'flags'     : 5051, #'suggestsflags',
    }

class rpmOldRecommends(Dependency):
    # More mappings
    tagMap = {
        'name'      : 1156, #'recommendsname',
        'version'   : 1157, #'recommendsversion',
        'flags'     : 1158, #'recommendsflags',
    }

class rpmRecommends(Dependency):
    # More mappings
    tagMap = {
        'name'      : 5046, #'recommendsname',
        'version'   : 5047, #'recommendsversion',
        'flags'     : 5048, #'recommendsflags',
    }

class rpmOldSupplements(Dependency):
    # More mappings
    tagMap = {
        'name'      : 1159, #'supplementsname',
        'version'   : 1160, #'supplementsversion',
        'flags'     : 1161, #'supplementsflags',
    }

class rpmSupplements(Dependency):
    # More mappings
    tagMap = {
        'name'      : 5052, #'supplementsname',
        'version'   : 5053, #'supplementsversion',
        'flags'     : 5054, #'supplementsflags',
    }

class rpmOldEnhances(Dependency):
    # More mappings
    tagMap = {
        'name'      : 1159, #'enhancesname',
        'version'   : 1160, #'enhancesversion',
        'flags'     : 1161, #'enhancesflags',
    }

class rpmEnhances(Dependency):
    # More mappings
    tagMap = {
        'name'      : 5055, #'enhancesname',
        'version'   : 5056, #'enhancesversion',
        'flags'     : 5057, #'enhancesflags',
    }

class rpmConflicts(Dependency):
    # More mappings
    tagMap = {
        'name': 'conflictname',
        'version': 'conflictversion',
        'flags': 'conflictflags',
    }


class rpmObsoletes(Dependency):
    # More mappings
    tagMap = {
        'name': 'obsoletename',
        'version': 'obsoleteversion',
        'flags': 'obsoleteflags',
    }


class rpmBreaks(Dependency):
    # More mappings
    tagMap = {
        'name':  1159,  # 'enhancesname'
        'version':  1160,  # 'enhancesversion'
        'flags':  1161,  # 'enhancesflags'
    }


class rpmPredepends(Dependency):
    # More mappings
    tagMap = {
        'name':  1159,  # 'enhancesname'
        'version':  1160,  # 'enhancesversion'
        'flags':  1161,  # 'enhancesflags'
    }


class rpmChangeLog(ChangeLog):
    tagMap = {
        'name': 'changelogname',
        'text': 'changelogtext',
        'time': 'changelogtime',
    }

    def populate(self, hash):
        ChangeLog.populate(self, hash)
        # Fix the time
        tm = self['time']
        if type(tm) in (IntType, LongType):
            # A UNIX timestamp
            self['time'] = localtime(tm)
        # In changelog, data is either in UTF-8, or in any other
        # undetermined encoding. Assume ISO-Latin-1 if not UTF-8.
        for i in ('text', 'name'):
            if type(self[i]) == bytes:
                try:
                    self[i] = self[i].encode("utf-8")
                except:
                    self[i] = self[i].encode("iso-8859-1")


def sanitizeList(l):
    if l is None:
        return []
    if type(l) in (ListType, TupleType):
        return l
    return [l]


def createPackage(header, size, checksum_type, checksum, relpath, org_id, header_start,
                  header_end, channels):
    """
    Returns a populated instance of rpmBinaryPackage or rpmSourcePackage
    """
    if header.is_source:
        log_debug(4, "Creating source package")
        p = rpmSourcePackage()
    else:
        log_debug(4, "Creating package")
        p = rpmBinaryPackage()

    # bug #524231 - we need to call fullFilelist() for RPM v3 file list
    # to expand correctly
    header.hdr.fullFilelist()
    p.populate(header, size, checksum_type, checksum, relpath, org_id, header_start, header_end,
               channels)
    return p
  07070100000193000081B40000000000000000000000016290A0C100006C50000000000000000000000000000000000000003000000000spacewalk-backend/server/importlib/importLib.py   #
# Copyright (c) 2008--2018 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#
#
# Common data structures used throughout the import code
#

import os
import shutil
from uyuni.common.usix import IntType, StringType, InstanceType
try:
    #  python 2
    from UserDict import UserDict
    from UserList import UserList
except ImportError:
    #  python3
    from collections import UserList, UserDict

from uyuni.common.checksum import getFileChecksum
from uyuni.common.fileutils import createPath
from spacewalk.common.rhnConfig import CFG

# no-op class, used to define the type of an attribute


class DateType:
    pass


# An Item is just an extension for a dictionary
class Item(dict):

    """
    First level object, that stores information in a hash-like structure
    """

    def __init__(self, attributes=None):
        dict.__init__(self, attributes)

    def populate(self, hash):
        self.update(hash)
        return self

    def __repr__(self):
        return "[<%s instance; attributes=%s]" % (str(self.__class__),
                                                  dict.__repr__(self))

# BaseInformation is an Item with a couple of other features (an id, an ignored
# flag, diff information)


class BaseInformation(Item):

    """
    Second level object. It may contain composite items as attributes
    """

    def __init__(self, dict=None):
        Item.__init__(self, dict)
        # Initialize attributes
        for k in list(dict.keys()):
            self[k] = None
        # Each information object has an id (which is set by the database)
        self.id = None
        # If the information is ignored (non-critical)
        self.ignored = None
        # Diff with the object already installed
        self.diff = None
        # Same as above, except that it doesn't get cleared if the upload was
        # forced
        self.diff_result = None

    def toDict(self):
        dict = {
            'ignored': not not self.ignored,
            'diff': self.diff.toDict(),
        }
        return dict

# This class is handy for reducing code duplication


class Information(BaseInformation):
    attributeTypes = {}

    def __init__(self):
        BaseInformation.__init__(self, self.attributeTypes)

# Function that validates the insertion of items in a Collection


def validateInformation(obj):
    if not isinstance(obj, BaseInformation):
        if isinstance(obj, InstanceType):
            strtype = "instance of %s" % obj.__class__
        else:
            strtype = str(type(obj))
        raise TypeError("Expected an Information object; got %s" % strtype)


# A list with the needed functions to validate what gets put in it
class Collection(UserList):

    def __init__(self, list=None):
        if list:
            for obj in list:
                validateInformation(obj)
        UserList.__init__(self, list)

    def __setitem__(self, i, item):
        validateInformation(item)
        UserList.__setitem__(self, i, item)

    def append(self, item):
        validateInformation(item)
        UserList.append(self, item)

    add = append

    def insert(self, i, item):
        validateInformation(item)
        UserList.insert(self, i, item)

    def extend(self, other):
        for obj in other:
            validateInformation(obj)
        UserList.extend(self, other)

    def __setslice__(self, i, j, other):
        for obj in other:
            validateInformation(obj)
        UserList.__setslice__(self, i, j, other)

    def __add__(self, other):
        for obj in other:
            validateInformation(obj)
        UserList.__add__(self, other)

    def __radd__(self, other):
        for obj in other:
            validateInformation(obj)
        UserList.__radd__(self, other)

    def __repr__(self):
        return "[<%s instance; items=%s]" % (str(self.__class__),
                                             str(self.data))


# Import classes
# XXX makes sense to put this in a different file
class ChannelFamily(Information):
    attributeTypes = {
        'name': StringType,
        'label': StringType,
        'product_url': StringType,
        'channels': [StringType],
        'org_id': IntType,
    }

class DistChannelMap(Information):
    attributeTypes = {
        'os': StringType,
        'release': StringType,
        'channel_arch': StringType,
        'channel': StringType,
        'org_id': IntType,
    }

class SupportInformation(Information):
    attributeTypes = {
        'pkgid'             : StringType,
        'keyword'           : StringType,
        'channel'           : StringType,
    }

class SuseProduct(Information):
    attributeTypes = {
        'name'          : StringType,
        'version'       : StringType,
        'friendly_name' : StringType,
        'arch'          : StringType,
        'release'       : StringType,
        'product_id'    : IntType,
        'free'          : StringType,
        'base'          : StringType,
        'release_stage' : StringType,
        'channel_family_label' : StringType,
    }

class SuseProductChannel(Information):
    attributeTypes = {
        'product_id'           : IntType,
        'channel_id'           : IntType,
        'mandatory'            : StringType,
    }

class SuseUpgradePath(Information):
    attributeTypes = {
        'from_pdid' : IntType,
        'to_pdid'   : IntType,
    }

class SuseProductExtension(Information):
    attributeTypes = {
        'product_id'  : IntType,
        'root_id'     : IntType,
        'ext_id'      : IntType,
        'recommended' : StringType
    }

class SuseProductRepository(Information):
    attributeTypes = {
        'product_id'          : IntType,
        'rootid'              : IntType,
        'repo_id'             : IntType,
        'channel_label'       : StringType,
        'parent_channel_label': StringType,
        'channel_name'        : StringType,
        'mandatory'           : StringType,
        'update_tag'          : StringType
    }

class SCCRepository(Information):
    attributeTypes = {
        'sccid'        : IntType,
        'autorefresh'  : StringType,
        'name'         : StringType,
        'distro_target': StringType,
        'description'  : StringType,
        'url'          : StringType,
        'signed'       : StringType,
        'installer_updates' : StringType
    }

class SuseSubscription(Information):
    attributeTypes = {
        'max_members'       : IntType, # Deprecated
        'org_id'            : IntType,
        'channel_family_id' : IntType,
        'group_type'        : IntType
    }

class ClonedChannel(Information):
    attributeTypes = {
        'orig'    : StringType,
        'orig_id' : IntType,
        'clone'   : StringType,
        'id'      : IntType
    }

class ReleaseChannelMap(Information):
    attributeTypes = {
        'product': StringType,
        'version': StringType,
        'release': StringType,
        'channel_arch_id': IntType,
        'channel_id': IntType
    }

class ChannelErratum(Information):
    attributeTypes = {
        'id': StringType,
        'advisory_name': StringType,
        'last_modified': DateType,
    }


class IncompleteSourcePackage(Information):
    attributeTypes = {
        'id': StringType,
        'source_rpm': StringType,
        'last_modified': DateType,
    }


class ChannelTrust(Information):
    attributeTypes = {
        'org_trust_id': IntType,
    }


class ContentSourceSsl(Information):
    attributeTypes = {
        'ssl_ca_cert_id': IntType,
        'ssl_client_cert_id': IntType,
        'ssl_client_key_id': IntType,
    }


class ContentSource(Information):
    attributeTypes = {
        'label': StringType,
        'source_url': StringType,
        'type_id': IntType,
        'org_id': IntType,
        'ssl-sets': [ContentSourceSsl],
        'channels': [StringType],
    }


class Channel(Information):
    attributeTypes = {
        'label'             : StringType,
        'org_id'            : IntType,
        'channel_arch'      : StringType,
        'parent_channel'    : StringType,
        'name'              : StringType,
        'summary'           : StringType,
        'description'       : StringType,
        'last_modified'     : DateType,
        'comps_last_modified' : DateType,
        'modules_last_modified': DateType,
        'gpg_key_url'       : StringType,
        'update_tag'        : StringType,
        'installer_updates' : StringType,
        'product_name_id'   : IntType,
        'channel_product_id': IntType,
        'receiving_updates': StringType,
        'checksum_type': StringType,       # xml dumps >= 3.5
        'channel_access': StringType,
        # XXX Not really useful stuff
        'basedir': StringType,
        'product_name': StringType,
        'product_version': StringType,
        'product_beta': StringType,
        # Families this channel is subscribed to
        'families': [ChannelFamily],
        'packages': [StringType],
        'source_packages': [IncompleteSourcePackage],
        'all-packages': [StringType],
        'dists': [DistChannelMap],
        'release': [ReleaseChannelMap],
        'errata': [StringType],
        'errata_timestamps': [ChannelErratum],
        'kickstartable_trees': [StringType],
        'trust_list': [ChannelTrust],
        'export-type': StringType,
        'export-end-date': StringType,
        'export-start-date': StringType,
        'content-sources': [ContentSource],
    }


class OrgTrust(Information):
    attributeTypes = {
        'org_id': IntType,
    }


class Org(Information):
    attributeTypes = {
        'id': IntType,
        'name': StringType,
        'org_trust_ids': [OrgTrust],
    }


class File(Item):
    attributeTypes = {
        'name': StringType,
        'device': IntType,
        'inode': IntType,
        'file_mode': IntType,
        'username': StringType,
        'groupname': StringType,
        'rdev': IntType,
        'file_size': IntType,
        'mtime': DateType,
        'linkto': StringType,
        'flags': IntType,
        'verifyflags': IntType,
        'lang': StringType,
        'checksum': StringType,
        'checksum_type': StringType,
    }

    def __init__(self):
        Item.__init__(self, self.attributeTypes)


class Dependency(Item):
    attributeTypes = {
        'name': StringType,
        'version': StringType,
        'flags': IntType,
    }

    def __init__(self):
        Item.__init__(self, self.attributeTypes)


class ChangeLog(Item):
    attributeTypes = {
        'name': StringType,
        'text': StringType,
        'time': DateType,
    }

    def __init__(self):
        Item.__init__(self, self.attributeTypes)


class Checksum(Item):
    attributeTypes = {
        'type': StringType,
        'value': StringType,
    }

    def __init__(self):
        Item.__init__(self, self.attributeTypes)

class ProductFile(Information):
    attributeTypes = {
        'name'              : StringType,
        'epoch'             : StringType,
        'version'           : StringType,
        'release'           : StringType,
        'arch'              : StringType,
        'vendor'            : StringType,
        'summary'           : StringType,
        'description'       : StringType
    }

class Eula(Information):
    attributeTypes = {
        'text'              : StringType,
        'checksum'          : StringType,
    }

class ExtraTag(Information):
    attributeTypes = {
        'name'           : StringType,
        'value'          : StringType,
    }

class IncompletePackage(BaseInformation):
    attributeTypes = {
        'package_id': StringType,  # RH db id
        'name': StringType,
        'epoch': StringType,
        'version': StringType,
        'release': StringType,
        'arch': StringType,
        'org_id': IntType,
        'package_size': IntType,
        'last_modified': DateType,
        'md5sum': StringType,       # xml dumps < 3.5
        # These attributes are lists of objects
        'channels': [StringType],
        'checksum_list': [Checksum],
    }

    def __init__(self):
        BaseInformation.__init__(self, IncompletePackage.attributeTypes)
        self.name = None
        self.evr = None
        self.arch = None
        self.org_id = None

    def toDict(self):
        dict = BaseInformation.toDict(self)
        evr = list(self.evr)
        if evr[0] is None:
            evr[0] = ''

        dict['name'] = self.name
        dict['evr'] = evr
        dict['arch'] = self.arch

        org_id = self.org_id
        if org_id is None:
            org_id = ''
        dict['org_id'] = org_id
        return dict

    def short_str(self):
        return "%s-%s-%s.%s.rpm" % (self.name, self.evr[1], self.evr[2],
                                    self.arch)


class Package(IncompletePackage):

    """
    A package is a hash of attributes
    """
    attributeTypes = {
        'description': StringType,
        'summary': StringType,
        'license': StringType,
        'package_group': StringType,
        'rpm_version': StringType,
        'payload_size': IntType,
        'installed_size': IntType,
        'payload_format': StringType,
        'build_host': StringType,
        'build_time': DateType,
        'cookie': StringType,
        'vendor': StringType,
        'source_rpm': StringType,
        'package_size': IntType,
        'last_modified': DateType,
        'sigpgp': StringType,
        'siggpg': StringType,
        'sigsize': IntType,
        'header_start': IntType,
        'header_end': IntType,
        'path': StringType,
        'md5sum': StringType,       # xml dumps < 3.5
        'sigmd5': StringType,
        # These attributes are lists of objects
        'files'             : [File],
        'requires'          : [Dependency],
        'provides'          : [Dependency],
        'conflicts'         : [Dependency],
        'obsoletes'         : [Dependency],
        'recommends'        : [Dependency],
        'supplements'       : [Dependency],
        'enhances'          : [Dependency],
        'suggests'          : [Dependency],
        'breaks'            : [Dependency],
        'predepends'        : [Dependency],
        'changelog'         : [ChangeLog],
        'channels'          : [StringType],
        'checksum_list'     : [Checksum],
        'product_files'     : [ProductFile],
        'eulas'             : [Eula],
        'extra_tags'        : [ExtraTag],
    }

    def __init__(self):
        # Inherit from IncompletePackage
        IncompletePackage.__init__(self)
        # And initialize the specific ones
        for k in list(self.attributeTypes.keys()):
            self[k] = None


class SourcePackage(IncompletePackage):
    attributeTypes = {
        'package_group': StringType,
        'rpm_version': StringType,
        'source_rpm': StringType,
        'payload_size': IntType,
        'payload_format': StringType,
        'build_host': StringType,
        'build_time': DateType,
        'vendor': StringType,
        'cookie': StringType,
        'package_size': IntType,
        'path': StringType,
        'last_modified': DateType,
        # these attributes are mutualy exclusive
        'md5sum': StringType,       # xml dumps < 3.5
        'sigmd5': StringType,       # xml dumps < 3.5 and rpms
        'checksum_list': [Checksum],
    }

    def __init__(self):
        # Inherit from IncompletePackage
        IncompletePackage.__init__(self)
        # And initialize the specific ones
        self.source_rpm = None
        for k in list(self.attributeTypes.keys()):
            self[k] = None

    def short_str(self):
        return self.source_rpm


class Bug(Information):
    attributeTypes = {
        'bug_id': StringType,
        'summary': StringType,
        'href': StringType,
    }


class ErrataFile(Information):
    attributeTypes = {
        'filename': StringType,
        'file_type': StringType,
        'channel_list': [StringType],
        'package_id': IntType,
        # these attributes are mutualy exclusive
        'md5sum': StringType,       # xml dumps < 3.5
        'checksum_list': [Checksum],
    }


class Keyword(Information):
    attributeTypes = {
        'keyword': StringType,
    }


class Erratum(Information):
    attributeTypes = {
        'advisory'          : StringType,
        'advisory_name'     : StringType,
        'advisory_rel'      : IntType,
        'advisory_type'     : StringType,
        'advisory_status'   : StringType,
        'product'           : StringType,
        'description'       : StringType,
        'synopsis'          : StringType,
        'topic'             : StringType,
        'solution'          : StringType,
        'issue_date'        : DateType,
        'update_date'       : DateType,
        'last_modified'     : DateType,
        'notes'             : StringType,
        'org_id'            : IntType,
        'refers_to'         : StringType,
        'severity'          : StringType,
        'errata_from'       : StringType,
        # These attributes are lists of objects
        'channels'          : [Channel],
        'packages'          : [IncompletePackage],
        'files'             : [ErrataFile],
        'keywords'          : [Keyword],
        'bugs'              : [Bug],
        'cve'               : [StringType],
        'severity_id': IntType
    }


class BaseArch(Information):
    attributeTypes = {
        'label': StringType,
        'name': StringType,
    }


class CPUArch(BaseArch):
    pass


class BaseTypedArch(BaseArch):
    attributeTypes = BaseArch.attributeTypes.copy()
    attributeTypes.update({
        'arch-type-label': StringType,
        'arch-type-name': StringType,
    })


class ServerArch(BaseTypedArch):
    pass


class PackageArch(BaseTypedArch):
    pass


class ChannelArch(BaseTypedArch):
    pass


class ServerPackageArchCompat(Information):
    attributeTypes = {
        'server-arch': StringType,
        'package-arch': StringType,
        'preference': IntType,
    }


class ServerChannelArchCompat(Information):
    attributeTypes = {
        'server-arch': StringType,
        'channel-arch': StringType,
    }


class ChannelPackageArchCompat(Information):
    attributeTypes = {
        'channel-arch': StringType,
        'package-arch': StringType,
    }


class ServerGroupServerArchCompat(Information):
    attributeTypes = {
        'server-arch': StringType,
        'server-group-type': StringType,
    }


class KickstartFile(Information):
    attributeTypes = {
        'relative_path': StringType,
        'last_modified': DateType,
        'file_size': IntType,
        'md5sum': StringType,       # xml dumps < 3.5
        'checksum_list': [Checksum],
    }


class KickstartableTree(Information):
    attributeTypes = {
        'label': StringType,
        'base_path': StringType,
        'channel': StringType,
        'boot_image': StringType,
        'kstree_type_label': StringType,
        'install_type_name': StringType,
        'kstree_type_label': StringType,
        'install_type_name': StringType,
        'org_id': IntType,
        'last_modified': DateType,
        'files': [KickstartFile],
    }


class ProductName(Information):
    attributeTypes = {
        'label': StringType,
        'name': StringType,
    }


# Generic error object
class Error(Information):
    attributeTypes = {
        'error': StringType,
    }


# Base import class
class Import:

    def __init__(self, batch, backend):
        self.batch = batch
        self.backend = backend
        # Upload force
        self.uploadForce = 1
        # Force object verification
        self.forceVerify = 0
        # Ignore already-uploaded objects
        self.ignoreUploaded = 0
        # Transactional behaviour
        self.transactional = 0

    def setUploadForce(self, value):
        self.uploadForce = value

    def setForceVerify(self, value):
        self.forceVerify = value

    def setIgnoreUploaded(self, value):
        self.ignoreUploaded = value

    def setTransactional(self, value):
        self.transactional = value

    # This is the generic API exposed by an importer
    def preprocess(self):
        pass

    def fix(self):
        pass

    def submit(self):
        pass

    def run(self):
        self.preprocess()
        self.fix()
        self.submit()

    def cleanup(self):
        # Clean up the objects in the batch
        for object in self.batch:
            self._cleanup_object(object)

    def _cleanup_object(self, object):
        object.clear()

    def status(self):
        # Report the status back
        self.cleanup()
        return self.batch

    def _processPackage(self, package):
        # Build the helper data structures
        evr = []
        for f in ('epoch', 'version', 'release'):
            evr.append(package[f])
        package.evr = tuple(evr)
        package.name = package['name']
        package.arch = package['arch']
        package.org_id = package['org_id']

    def _fix_encoding(self, text):
        if text is None:
            return None
        elif isinstance(text, str):
            return text
        elif isinstance(text, bytes):
            try:
                return text.decode("utf8")
            except:
                return text.decode("iso8859-1")

# Any package processing import class
class GenericPackageImport(Import):

    def __init__(self, batch, backend):
        Import.__init__(self, batch, backend)
        # Packages have to be pre-processed
        self.names = {}
        self.evrs = {}
        self.checksums = {}
        self.package_arches = {}
        self.channels = {}
        self.channel_package_arch_compat = {}

    def _processPackage(self, package):
        Import._processPackage(self, package)

        # Save the fields in the local hashes
        if package.evr not in self.evrs:
            self.evrs[package.evr] = None

        if package.name not in self.names:
            self.names[package.name] = None

        if package.arch not in self.package_arches:
            self.package_arches[package.arch] = None

        for type, chksum in list(package['checksums'].items()):
            checksumTuple = (type, chksum)
            if not checksumTuple in self.checksums:
                self.checksums[checksumTuple] = None

    def _postprocessPackageNEVRA(self, package):
        arch = self.package_arches[package.arch]
        if not arch:
            # Unsupported arch
            package.ignored = 1
            raise InvalidArchError(package.arch,
                                   "Unknown arch %s" % package.arch)

#        package['package_arch_id'] = arch
#        package['name_id'] = self.names[package.name]
#        package['evr_id'] = self.evrs[package.evr]

        nevra = (self.names[package.name], self.evrs[package.evr], arch)
        nevra_dict = {nevra: None}

        self.backend.lookupPackageNEVRAs(nevra_dict)

        package['name_id'], package['evr_id'], package['package_arch_id'] = nevra
        package['nevra_id'] = nevra_dict[nevra]
        package['checksum_id'] = self.checksums[(package['checksum_type'], package['checksum'])]

# Exceptions


class ImportException(Exception):

    def __init__(self, arglist):
        Exception.__init__(self, *arglist)


class AlreadyUploadedError(ImportException):

    def __init__(self, object, *rest):
        ImportException.__init__(self, rest)
        self.object = object


class FileConflictError(AlreadyUploadedError):
    pass


class InvalidPackageError(ImportException):

    def __init__(self, package, *rest):
        ImportException.__init__(self, rest)
        self.package = package


class InvalidArchError(ImportException):

    def __init__(self, arch, *rest):
        ImportException.__init__(self, rest)
        self.arch = arch


class InvalidChannelError(ImportException):

    def __init__(self, channel, *rest):
        ImportException.__init__(self, rest)
        self.channel = channel


class MissingParentChannelError(ImportException):

    def __init__(self, channel, *rest):
        ImportException.__init__(self, rest)
        self.channel = channel


class InvalidChannelFamilyError(ImportException):

    def __init__(self, channel_family, *rest):
        ImportException.__init__(self, rest)
        self.channel_family = channel_family


class IncompatibleArchError(ImportException):

    def __init__(self, arch1, arch2, *rest):
        ImportException.__init__(self, rest)
        self.arch1 = arch1
        self.arch2 = arch2


class TransactionError(ImportException):

    def __init__(self, *rest):
        ImportException.__init__(self, rest)

# Class that stores diff information


class Diff(UserList):

    def __init__(self):
        UserList.__init__(self)
        self.level = 0

    def setLevel(self, level):
        if self.level < level:
            self.level = level

    def toDict(self):
        # Converts the object to a dictionary
        l = []
        for item in self:
            l.append(removeNone(item))
        return {
            'level': self.level,
            'diff': l,
        }


# Replaces all occurences of None with the empty string
def removeNone(list):
    return [(x is not None and x) or '' for x in list]


# Assorted functions for various things

def move_package(filename, basedir, relpath, checksum_type, checksum, force=None):
    """
    Copies the information from the file descriptor to a file
    Checks the file's checksum, raising FileConflictErrror if it's different
    The force flag prevents the exception from being raised, and copies the
    file even if the checksum has changed
    """
    packagePath = basedir + "/" + relpath
    # Is the file there already?
    if os.path.isfile(packagePath):
        if force:
            os.unlink(packagePath)
        else:
            # Get its checksum
            localsum = getFileChecksum(checksum_type, packagePath)
            if checksum == localsum:
                # Same file, so get outa here
                return
            raise FileConflictError(os.path.basename(packagePath))

    dir = os.path.dirname(packagePath)
    # Create the directory where the file will reside
    if not os.path.exists(dir):
        createPath(dir)

    # Check if the RPM has been downloaded from a remote repository
    # If so, it is stored in CFG.MOUNT_POINT and we have to move it
    # If not, the repository is local to the server, so the rpm should be copied
    if filename.startswith(CFG.MOUNT_POINT):
        shutil.move(filename, packagePath)
    else:
        shutil.copy(filename, packagePath)

    # set the path perms readable by all users
    os.chmod(packagePath, int('0644', 8))


# Returns a list of containing nevra for the given RPM header
NEVRA_TAGS = ['name', 'epoch', 'version', 'release', 'arch']


def get_nevra(header):
    # Get nevra
    nevra = []
    for tag in NEVRA_TAGS:
        nevra.append(header[tag])
    return nevra


def get_nevra_dict(header):
    # Get nevra
    nevra = {}
    for tag in NEVRA_TAGS:
        nevra[tag] = header[tag]
    if nevra['epoch'] == '':
        nevra['epoch'] = None
    return nevra
07070100000194000081B40000000000000000000000016290A0C100000BFE000000000000000000000000000000000000003600000000spacewalk-backend/server/importlib/kickstartImport.py #
# Copyright (c) 2008--2015 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#
#
# Package import process
#

from .importLib import KickstartableTree, Import


class KickstartableTreeImport(Import):

    def __init__(self, batch, backend):
        Import.__init__(self, batch, backend)

        self.channels = {}

        self.kstree_types = {}
        self.ks_install_types = {}
        self.checksums = {}

    def preprocess(self):
        # Processes the batch to a form more suitable for database
        # operations
        for ent in self.batch:
            if not isinstance(ent, KickstartableTree):
                raise TypeError("Expected a KickstartableTree instance")

            channel_label = ent['channel']
            self.channels[channel_label] = None

            # If the ks type and install type are missing, populate them
            kstree_type_label = ent['kstree_type_label']
            kstree_type_name = ent['kstree_type_name']
            self.kstree_types[kstree_type_label] = kstree_type_name

            ks_install_label = ent['install_type_label']
            ks_install_name = ent['install_type_name']
            self.ks_install_types[ks_install_label] = ks_install_name
            for f in ent['files']:
                checksumTuple = (f['checksum_type'], f['checksum'])
                if checksumTuple not in self.checksums:
                    self.checksums[checksumTuple] = None

    def fix(self):
        self.backend.lookup_kstree_types(self.kstree_types)
        self.backend.lookup_ks_install_types(self.ks_install_types)
        self.backend.lookupChannels(self.channels)
        self.backend.lookupChecksums(self.checksums)

        for ent in self.batch:
            if ent.ignored:
                continue
            channel_label = ent['channel']
            channel = self.channels[channel_label]
            if channel is None:
                raise Exception("Channel %s not imported" % channel_label)
            ent['channel_id'] = channel['id']
            # Now fix the other ids
            kstree_type_label = ent['kstree_type_label']
            ks_install_label = ent['install_type_label']
            ent['kstree_type'] = self.kstree_types[kstree_type_label]
            ent['install_type'] = self.ks_install_types[ks_install_label]
            for f in ent['files']:
                f['checksum_id'] = self.checksums[(f['checksum_type'], f['checksum'])]

    def submit(self):
        self.backend.processKickstartTrees(self.batch)
        self.backend.commit()
  07070100000195000081B40000000000000000000000016290A0C1000010BE000000000000000000000000000000000000003000000000spacewalk-backend/server/importlib/mpmSource.py   #
# Copyright (c) 2008--2016 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#
#
# Converts headers to the intermediate format
#

from . import headerSource
from . import debPackage


class mpmBinaryPackage(headerSource.rpmBinaryPackage):

    tagMap = headerSource.rpmBinaryPackage.tagMap.copy()

    # Remove already-mapped tags
    _already_mapped = [
        'rpm_version', 'payload_size', 'payload_format',
        'package_group', 'build_time', 'build_host'
    ]
    for t in _already_mapped:
        if t in tagMap:
            del tagMap[t]

    def populate(self, header, size, checksum_type, checksum, path=None, org_id=None,
                 channels=[]):

        # call to base class method
        headerSource.rpmBinaryPackage.populate(self, header, size, checksum_type, checksum, path,
                                               org_id, channels)

        srpm = self.get('source_rpm', '')
        if srpm == '':
            self['source_rpm'] = None

        group = self.get('package_group', '')
        if group == '':
            self['package_group'] = 'NoGroup'

        return self

    def _populateFiles(self, header):
        files = []
        for f in header.get('files', []):
            fc = headerSource.rpmFile()
            fc.populate(f)
            files.append(fc)
        self['files'] = files

    def _populateDependencyInformation(self, header):
        mapping = {
            'provides': headerSource.rpmProvides,
            'requires': headerSource.rpmRequires,
            'conflicts': headerSource.rpmConflicts,
            'obsoletes': headerSource.rpmObsoletes,
            'recommends': headerSource.rpmRecommends,
            'supplements': headerSource.rpmSupplements,
            'enhances': headerSource.rpmEnhances,
            'suggests': headerSource.rpmSuggests,
        }

        for k, dclass in list(mapping.items()):
            unique_deps = []
            l = []
            for dinfo in header.get(k, []):
                hash = dinfo
                if not len(hash['name']):
                    continue
                dep_nv = (hash['name'], hash['version'], hash['flags'])
                if dep_nv not in unique_deps:
                    unique_deps.append(dep_nv)
                    finst = dclass()
                    finst.populate(dinfo)
                    l.append(finst)
                else:
                    continue
            self[k] = l

    def _populateChangeLog(self, header):
        l = []
        for cinfo in header.get('changelog', []):
            cinst = headerSource.rpmChangeLog()
            cinst.populate(cinfo)
            l.append(cinst)
        self['changelog'] = l

# top-level package object creation --------------------------------------


def create_package(header, size, checksum_type, checksum, relpath, org_id, header_start=None,
                   header_end=None, channels=[]):
    if header.packaging == 'rpm':
        return headerSource.createPackage(header, size=size,
                                          checksum_type=checksum_type, checksum=checksum,
                                          relpath=relpath, org_id=org_id, header_start=header_start,
                                          header_end=header_end, channels=channels)
    if header.packaging == 'deb':
        return debPackage.debBinaryPackage(header, size=size, checksum_type=checksum_type, checksum=checksum, path=relpath,
                                           org_id=org_id, channels=channels)
    if header.is_source:
        raise NotImplementedError()
    p = mpmBinaryPackage()
    p.populate(header, size=size, checksum_type=checksum_type, checksum=checksum, path=relpath,
               org_id=org_id, channels=channels)
    return p
  07070100000196000081B40000000000000000000000016290A0C1000013C6000000000000000000000000000000000000003000000000spacewalk-backend/server/importlib/orgImport.py   #
# Copyright (c) 2013--2016 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#
#
# Org import process
#

from .importLib import Import

# Thanks for this class goes to Alex Martelli:
# http://stackoverflow.com/questions/1151658/python-hashable-dicts


class hashabledict(dict):

    def __key(self):
        return tuple((k, self[k]) for k in sorted(self))

    def __hash__(self):
        return hash(self.__key())

    def __eq__(self, other):
        return self.__key() == other.__key()


class OrgImport(Import):

    def __init__(self, batch, backend, master_label, create_orgs=False):
        Import.__init__(self, batch, backend)
        self.master_label = master_label
        self.create_orgs = create_orgs
        self._create_maps()

    def _create_maps(self):
        org_map = self.backend.lookupOrgMap(self.master_label)
        self.mn_to_mi = org_map['master-name-to-master-id']
        self.mi_to_li = org_map['master-id-to-local-id']

    def submit(self):
        try:
            # Always happens: if it does not exist, we create a master record
            if not self.backend.lookupMaster(self.master_label):
                self.backend.createMaster(self.master_label)

            # Always happens: if each org has not been synced before,
            # create master org record.
            missing_master_orgs = []
            for org in self.batch:
                if org['name'] not in list(self.mn_to_mi.keys()):
                    missing_master_orgs.append(org)
            if len(missing_master_orgs) > 0:
                self.backend.createMasterOrgs(self.master_label,
                                              missing_master_orgs)

            # Iff we are force-creating local orgs, create any orgs that are
            # not already mapped to local orgs. If a local org exists with
            # the same name as the master org, use that instead. Link local
            # orgs with master orgs.
            if self.create_orgs:
                orgs_to_create = []
                orgs_to_link = []
                update_master_orgs = []
                for org in self.batch:
                    if (org['id'] not in list(self.mi_to_li.keys())
                            or not self.mi_to_li[org['id']]):
                        local_id = self.backend.lookupOrg(org['name'])
                        if local_id:
                            orgs_to_link.append({
                                'master_id': org['id'],
                                'local_id': local_id})
                        else:
                            orgs_to_create.append(org['name'])
                if len(orgs_to_create) > 0:
                    new_org_map = self.backend.createOrgs(orgs_to_create)
                    for org in orgs_to_create:
                        update_master_orgs.append({
                            'master_id': self.mn_to_mi[org],
                            'local_id': new_org_map[org]})
                update_master_orgs += orgs_to_link
                if len(update_master_orgs) > 0:
                    self.backend.updateMasterOrgs(update_master_orgs)

            # refresh maps after we've just changed things
            self._create_maps()

            # Iff we have a master org mapped to local org, create org
            # trust records
            # we need to uniquify in case user has mapped multiple orgs
            # together
            trusts_to_create = set([])
            for org in self.batch:
                for trust in org['org_trust_ids']:
                    if (org['id'] in list(self.mi_to_li.keys())
                            and trust['org_id'] in list(self.mi_to_li.keys())):
                        my_org_id = self.mi_to_li[org['id']]
                        self.backend.clearOrgTrusts(my_org_id)
                        my_trust_id = self.mi_to_li[trust['org_id']]
                        trusts_to_create.add(hashabledict({
                            'org_id': my_org_id,
                            'trust': my_trust_id}))
                        # org trusts are always bi-directional
                        # (even if we are not syncing the other org)
                        trusts_to_create.add(hashabledict({
                            'org_id': my_trust_id,
                            'trust': my_org_id}))

            if len(trusts_to_create) > 0:
                self.backend.createOrgTrusts(trusts_to_create)
        except:
            self.backend.rollback()
            raise
        self.backend.commit()
  07070100000197000081B40000000000000000000000016290A0C100006002000000000000000000000000000000000000003400000000spacewalk-backend/server/importlib/packageImport.py   #
# Copyright (c) 2008--2018 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#
#
# Package import process
#

import rpm
import sys
import os.path
from .importLib import GenericPackageImport, IncompletePackage, \
    Import, InvalidArchError, InvalidChannelError, \
    IncompatibleArchError
from .mpmSource import mpmBinaryPackage
from uyuni.common import rhn_pkg
from spacewalk.common.rhnConfig import CFG
from spacewalk.server import taskomatic
from spacewalk.server.rhnServer import server_packages


class ChannelPackageSubscription(GenericPackageImport):

    def __init__(self, batch, backend, caller=None, strict=0, repogen=True):
        # If strict, the set of packages that was passed in will be the only
        # one in the channels - everything else will be unlinked
        GenericPackageImport.__init__(self, batch, backend)
        self.affected_channels = []
        # A hash keyed on the channel id, and with tuples
        # (added_packages, removed_packages) as values (packages are package
        # ids)
        self.affected_channel_packages = {}
        if not caller:
            self.caller = "backend.(unknown)"
        else:
            self.caller = caller
        self._strict_subscription = strict
        self.repogen = repogen
        self.package_type = None

    def preprocess(self):
        # Processes the package batch to a form more suitable for database
        # operations
        for package in self.batch:
            # if package object doesn't have multiple checksums (like satellite-sync objects)
            #   then let's fake it
            if 'checksums' not in package:
                package['checksums'] = {package['checksum_type']: package['checksum']}
            if not isinstance(package, IncompletePackage):
                raise TypeError("Expected an IncompletePackage instance, "
                                "got %s" % package.__class__.__name__)
            self._processPackage(package)

    def fix(self):
        # Look up arches and channels
        self.backend.lookupPackageArches(self.package_arches)
        self.backend.lookupChannels(self.channels)
        # Initialize self.channel_package_arch_compat
        self.channel_package_arch_compat = {}
        for channel, channel_row in list(self.channels.items()):
            if not channel_row:
                # Unsupported channel
                continue
            self.channel_package_arch_compat[channel_row['channel_arch_id']] = None
        for label, aid in self.package_arches.items():
            self.package_type = self.backend.lookupPackageArchType(aid)
            if self.package_type:
                break
        self.backend.lookupChannelPackageArchCompat(self.channel_package_arch_compat)
        self.backend.lookupPackageNames(self.names)
        self.backend.lookupEVRs(self.evrs, self.package_type)
        self.backend.lookupChecksums(self.checksums)

        # Fix the package information up, and uniquify the packages too
        uniqdict = {}
        for package in self.batch:
            if package.ignored:
                continue
            self._postprocessPackageNEVRA(package)
            if not CFG.ENABLE_NVREA:
                # nvrea disabled, skip checksum
                nevrao = (
                    package['name_id'],
                    package['evr_id'],
                    package['package_arch_id'],
                    package['org_id'])
            else:
                # As nvrea is enabled uniquify based on checksum
                nevrao = (
                    package['name_id'],
                    package['evr_id'],
                    package['package_arch_id'],
                    package['org_id'],
                    package['checksum_id'])

            if nevrao not in uniqdict:
                # Uniquify the channel names
                package['channels'] = {}
                # Initialize the channels
                # This is a handy way of checking arch compatibility for this
                # package with its channels
                self.__copyChannels(package, package)
                uniqdict[nevrao] = package
            else:
                # Package is found twice in the same batch
                # Are the packages the same?
                self._comparePackages(package, uniqdict[nevrao])
                # Invalidate it
                package.ignored = 1
                firstpackage = uniqdict[nevrao]
                # Copy any new channels
                self.__copyChannels(package, firstpackage)
                # Knowing the id of the referenced package
                package.first_package = firstpackage

    def _comparePackages(self, package1, package2):
        # XXX This should probably do a deep compare of the two packages
        pass

    def submit(self):
        self.backend.lookupPackages(self.batch, self.checksums)
        try:
            affected_channels = self.backend.subscribeToChannels(self.batch,
                                                                 strict=self._strict_subscription)
        except:
            self.backend.rollback()
            raise
        self.compute_affected_channels(affected_channels)

        if len(self.batch) < 10:
            # update small batch per package
            name_ids = [pkg['name_id'] for pkg in self.batch]
        else:
            # update bigger batch at once
            name_ids = []
        self.backend.update_newest_package_cache(caller=self.caller,
                                                 affected_channels=self.affected_channel_packages, name_ids=name_ids)
        # Now that channel is updated, schedule the repo generation
        if self.repogen:
            taskomatic.add_to_repodata_queue_for_channel_package_subscription(
                self.affected_channels, self.batch, self.caller)
        self.backend.commit()

    def compute_affected_channels(self, affected_channels):
        # Fill the list of affected channels
        self.affected_channel_packages.clear()
        self.affected_channel_packages.update(affected_channels)
        for channel_label, channel_row in list(self.channels.items()):
            channel_id = channel_row['id']
            if channel_id in affected_channels:
                affected_channels[channel_id] = channel_label
        self.affected_channels = list(affected_channels.values())

    def _processPackage(self, package):
        GenericPackageImport._processPackage(self, package)

        # Process channels
        channels = []
        channelHash = {}
        for channel in package['channels']:
            channelName = channel['label']
            if channelName not in channelHash:
                channels.append(channelName)
                channelHash[channelName] = None
            self.channels[channelName] = None
        # Replace the channel list with the uniquified list
        package.channels = channels

    # Copies the channels from one package to the other
    def __copyChannels(self, sourcePackage, destPackage):
        dpHash = destPackage['channels']
        for schannelName in sourcePackage.channels:
            # Check if the package is compatible with the channel
            channel = self.channels[schannelName]
            if not channel:
                # Unknown channel
                sourcePackage.ignored = 1
                raise InvalidChannelError(channel,
                                          "Unsupported channel %s" % schannelName)
            # Check channel-package compatibility
            charch = channel['channel_arch_id']
            archCompat = self.channel_package_arch_compat[charch]
            if not archCompat:
                # Invalid architecture
                sourcePackage.ignored = 1
                raise InvalidArchError(charch,
                                       "Invalid channel architecture %s" % charch)

            # Now check if the source package's arch is compatible with the
            # current channel
            if sourcePackage['package_arch_id'] not in archCompat:
                sourcePackage.ignored = 1
                raise IncompatibleArchError(sourcePackage.arch, charch,
                                            "Package arch %s incompatible with channel %s" %
                                            (sourcePackage.arch, schannelName))

            dpHash[channel['id']] = schannelName

        destPackage.channels = list(dpHash.values())


class PackageImport(ChannelPackageSubscription):

    def __init__(self, batch, backend, caller=None, update_last_modified=0):
        ChannelPackageSubscription.__init__(self, batch, backend,
                                            caller=caller)
        self.ignoreUploaded = 1
        self._update_last_modified = update_last_modified
        self.capabilities = {}
        self.groups = {}
        self.sourceRPMs = {}
        self.changelog_data = {}
        self.suseProdfile_data = {}
        self.suseEula_data = {}
        self.extraTags = {}

    def _skip_tag(self, package, tag):
        # Allow all tags in case of DEB packages
        if package['arch'] and package['arch'].endswith('deb'):
            return False
        # See if the installed version of RPM understands a given tag
        # Assumed attr-format in RPM is 'RPMTAG_<UPPERCASETAG>'
        return not hasattr(rpm, 'RPMTAG_'+tag.upper())

    def _processPackage(self, package):
        ChannelPackageSubscription._processPackage(self, package)

        # Process package groups
        group = self._fix_encoding(package['package_group']).strip()
        if group not in self.groups:
            self.groups[group] = None
        sourceRPM = package['source_rpm']
        if (sourceRPM is not None) and (sourceRPM not in self.sourceRPMs):
            self.sourceRPMs[sourceRPM] = None
        # Change copyright to license
        # XXX
        package['copyright'] = self._fix_encoding(package['license'])

        for tag in ('recommends', 'suggests', 'supplements', 'enhances', 'breaks', 'predepends'):
            if self._skip_tag(package, tag) or tag not in package or type(package[tag]) != type([]):
                # older spacewalk server do not export weak deps.
                # and older RPM doesn't know about them either
                # lets create an empty list
                package[tag] = []

        # Creates all the data structures needed to insert capabilities
        for tag in ('provides', 'requires', 'conflicts', 'obsoletes', 'recommends', 'suggests', 'supplements', 'enhances', 'breaks', 'predepends'):
            depList = package[tag]
            if type(depList) != type([]):
                sys.stderr.write("!!! packageImport.PackageImport._processPackage: "
                                 "erronous depList for '%s', converting to []\n" % tag)
                depList = []

            for dep in depList:
                nv = []
                for f in ('name', 'version'):
                    nv.append(self._fix_encoding(dep[f]))
                    del dep[f]
                nv = tuple(nv)
                dep['capability'] = nv
                if nv not in self.capabilities:
                    self.capabilities[nv] = None
        # Process files too
        fileList = package['files']
        for f in fileList:
            filename = self._fix_encoding(f['name'])
            nv = (filename, '')
            del f['name']
            f['capability'] = nv
            if nv not in self.capabilities:
                self.capabilities[nv] = None
            f['checksum'] = self._fix_encoding(f['checksum'])
            fchecksumTuple = (f['checksum_type'], f['checksum'])
            if fchecksumTuple not in self.checksums:
                self.checksums[fchecksumTuple] = None

        # Uniquify changelog entries
        unique_package_changelog_hash = {}
        unique_package_changelog = []
        for changelog in package['changelog']:
            key = (self._fix_encoding(changelog['name'][:128]), self._fix_encoding(changelog['time']), self._fix_encoding(changelog['text'])[:3000])
            if key not in unique_package_changelog_hash:
                self.changelog_data[key] = None
                changelog['name'] = changelog['name'][:128]
                changelog['text'] = changelog['text'][:3000]
                unique_package_changelog.append(changelog)
                unique_package_changelog_hash[key] = 1
        package['changelog'] = unique_package_changelog

        # fix encoding issues in package summary and description
        package['description'] = self._fix_encoding(package['description'])
        package['summary'] = self._fix_encoding(package['summary']).rstrip()

        if package['product_files'] is not None:
            for prodFile in package['product_files']:
                evrtuple = (prodFile['epoch'], prodFile['version'], prodFile['release'])
                evr = {evrtuple : None}
                archhash = {prodFile['arch'] : None}
                self.backend.lookupEVRs(evr, 'rpm')
                self.backend.lookupPackageArches(archhash)
                prodFile['evr'] = evr[evrtuple]
                prodFile['package_arch_id'] = archhash[prodFile['arch']]
                key = (prodFile['name'], prodFile['evr'], prodFile['package_arch_id'], prodFile['vendor'], prodFile['summary'], prodFile['description'])
                self.suseProdfile_data[key] = None

        if package['eulas'] is not None:
            for eula in package['eulas']:
                key = (eula['text'], eula['checksum'])
                self.suseEula_data[key] = None

        if 'extra_tags' in package and package['extra_tags'] is not None:
            for tag in package['extra_tags']:
                self.extraTags[tag['name']] = None

    def fix(self):
        # If capabilities are available, process them
        if self.capabilities:
            try:
                self.backend.processCapabilities(self.capabilities)
            except:
                # Oops
                self.backend.rollback()
                raise
            # Since this is the bulk of the work, commit
            self.backend.commit()

        self.backend.processChangeLog(self.changelog_data)
        self.backend.processSuseProductFiles(self.suseProdfile_data)
        self.backend.processSuseEulas(self.suseEula_data)

        ChannelPackageSubscription.fix(self)

        self.backend.lookupSourceRPMs(self.sourceRPMs)
        self.backend.lookupPackageGroups(self.groups)
        self.backend.processExtraTags(self.extraTags)
        # Postprocess the gathered information
        self.__postprocess()

    def submit(self):
        upload_force = self.uploadForce
        if not upload_force and self._update_last_modified:
            # # Force it just a little bit - kind of hacky
            upload_force = 0.5
        try:
            self.backend.processPackages(self.batch,
                                         uploadForce=upload_force,
                                         forceVerify=self.forceVerify,
                                         ignoreUploaded=self.ignoreUploaded,
                                         transactional=self.transactional)
            self._import_signatures()
        except:
            # Oops
            self.backend.rollback()
            raise
        self.backend.commit()
        if not self._update_last_modified:
            # Go though the list of objects and clear out the ones that have a
            # force of 0.5
            for p in self.batch:
                if p.diff and p.diff.level == 0.5:
                    # Ignore this difference completely
                    p.diff = None
                    # Leave p.diff_result in place

    def subscribeToChannels(self):
        affected_channels = self.backend.subscribeToChannels(self.batch)
        # Fill the list of affected channels
        self.compute_affected_channels(affected_channels)

        name_ids = [pkg['name_id'] for pkg in self.batch]
        self.backend.update_newest_package_cache(caller=self.caller,
                                                 affected_channels=self.affected_channel_packages, name_ids=name_ids)
        taskomatic.add_to_repodata_queue_for_channel_package_subscription(
            self.affected_channels, self.batch, self.caller)
        self.backend.commit()

    def __postprocess(self):
        # Gather the IDs we've found

        for package in self.batch:
            if package.ignored:
                # Skip it
                continue
            # Only deal with packages
            self.__postprocessPackage(package)

    def __postprocessPackage(self, package):
        """ populate the columns foo_id with id numbers from appropriate hashes """
        package['package_group'] = self.groups[self._fix_encoding(package['package_group']).strip()]
        source_rpm = package['source_rpm']
        if source_rpm is not None:
            source_rpm = self.sourceRPMs[source_rpm]
        else:
            source_rpm = ''
        package['source_rpm_id'] = source_rpm
        package['checksum_id'] = self.checksums[(package['checksum_type'], package['checksum'])]

        # Postprocess the dependency information
        for tag in ('provides', 'requires', 'conflicts', 'obsoletes', 'files', 'recommends', 'suggests', 'supplements', 'enhances', 'breaks', 'predepends'):
            for entry in package[tag]:
                nv = entry['capability']
                entry['capability_id'] = self.capabilities[nv]
        for c in package['changelog']:
            c['changelog_data_id'] = self.changelog_data[(c['name'], c['time'], c['text'])]
        if package['product_files'] is not None:
            for p in package['product_files']:
                p['prodfile_id'] = self.suseProdfile_data[(p['name'], p['evr'], p['package_arch_id'], p['vendor'], p['summary'], p['description'])]
        if package['eulas'] is not None:
            for e in package['eulas']:
                e['eula_id'] = self.suseEula_data[(e['text'], e['checksum'])]
        fileList = package['files']
        for f in fileList:
            f['checksum_id'] = self.checksums[(f['checksum_type'], f['checksum'])]
        if 'extra_tags' in package and package['extra_tags'] is not None:
            for t in package['extra_tags']:
                t['key_id'] = self.extraTags[t['name']]

    def _comparePackages(self, package1, package2):
        if (package1['checksum_type'] == package2['checksum_type']
                and package1['checksum'] == package2['checksum']):
            return
        # XXX Handle this better
        raise Exception("Different packages in the same batch")

    def _cleanup_object(self, object):
        ChannelPackageSubscription._cleanup_object(self, object)
        if object.ignored:
            object.id = object.first_package.id

    def _import_signatures(self):
        for package in self.batch:
            # skip missing files and mpm packages
            if package['path'] and not isinstance(package, mpmBinaryPackage):
                full_path = os.path.join(CFG.MOUNT_POINT, package['path'])
                if os.path.exists(full_path):
                    header = rhn_pkg.get_package_header(filename=full_path)
                    server_packages.processPackageKeyAssociations(header,
                                                                  package['checksum_type'], package['checksum'])


class SourcePackageImport(Import):

    def __init__(self, batch, backend, caller=None, update_last_modified=0):
        Import.__init__(self, batch, backend)
        self._update_last_modified = update_last_modified
        self.ignoreUploaded = 1
        self.sourceRPMs = {}
        self.groups = {}
        self.checksums = {}

    def preprocess(self):
        for package in self.batch:
            self._processPackage(package)

    def fix(self):
        self.backend.lookupSourceRPMs(self.sourceRPMs)
        self.backend.lookupPackageGroups(self.groups)
        self.backend.lookupChecksums(self.checksums)
        self.__postprocess()
        # Uniquify the packages
        uniqdict = {}
        for package in self.batch:
            # Unique key
            key = (package['org_id'], package['source_rpm_id'])
            if key not in uniqdict:
                uniqdict[key] = package
                continue
            else:
                self._comparePackages(package, uniqdict[key])
                # And invalidate it
                package.ignored = 1
                package.first_package = uniqdict[key]

    def submit(self):
        upload_force = self.uploadForce
        if not upload_force and self._update_last_modified:
            # # Force it just a little bit - kind of hacky
            upload_force = 0.5
        try:
            self.backend.processSourcePackages(self.batch,
                                               uploadForce=upload_force,
                                               forceVerify=self.forceVerify,
                                               ignoreUploaded=self.ignoreUploaded,
                                               transactional=self.transactional)
        except:
            # Oops
            self.backend.rollback()
            raise
        self.backend.commit()
        if not self._update_last_modified:
            # Go though the list of objects and clear out the ones that have a
            # force of 0.5
            for p in self.batch:
                if p.diff and p.diff.level == 0.5:
                    # Ignore this difference completely
                    p.diff = None
                    # Leave p.diff_result in place

    def _comparePackages(self, package1, package2):
        if (package1['checksum_type'] == package2['checksum_type']
                and package1['checksum'] == package2['checksum']):
            return
        # XXX Handle this better
        raise Exception("Different packages in the same batch")

    def _processPackage(self, package):
        Import._processPackage(self, package)
        # Fix the arch
        package.arch = 'src'
        package.source_rpm = package['source_rpm']
        group = self._fix_encoding(package['package_group']).strip()
        if group not in self.groups:
            self.groups[group] = None
        sourceRPM = package['source_rpm']
        if not sourceRPM:
            # Should not happen
            raise Exception("Source RPM %s does not exist")
        self.sourceRPMs[sourceRPM] = None

        checksumTuple = (package['checksum_type'], package['checksum'])
        if checksumTuple not in self.checksums:
            self.checksums[checksumTuple] = None

        sigchecksumTuple = (package['sigchecksum_type'], package['sigchecksum'])
        if sigchecksumTuple not in self.checksums:
            self.checksums[sigchecksumTuple] = None

    def __postprocess(self):
        # Gather the IDs we've found

        for package in self.batch:
            if package.ignored:
                # Skip it
                continue
            # Only deal with packages
            self.__postprocessPackage(package)

    def __postprocessPackage(self, package):
        # Set the ids
        package['package_group'] = self.groups[self._fix_encoding(package['package_group']).strip()]
        package['source_rpm_id'] = self.sourceRPMs[package['source_rpm']]
        package['checksum_id'] = self.checksums[(package['checksum_type'],
                                                 package['checksum'])]
        package['sigchecksum_id'] = self.checksums[(package['sigchecksum_type'],
                                                    package['sigchecksum'])]

    def _cleanup_object(self, object):
        Import._cleanup_object(self, object)
        if object.ignored:
            object.id = object.first_package.id


def packageImporter(batch, backend, source=0, caller=None):
    if source:
        return SourcePackageImport(batch, backend, caller=caller)
    return PackageImport(batch, backend, caller=caller)
  07070100000198000081B40000000000000000000000016290A0C10000197E000000000000000000000000000000000000003400000000spacewalk-backend/server/importlib/packageUpload.py   #
# Copyright (c) 2008--2016 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#
#
# Package import code on the app side
#

from uyuni.common import rhn_rpm
from spacewalk.common.rhnLog import log_debug
from spacewalk.common.rhnException import rhnFault

from spacewalk.server import rhnChannel, taskomatic, rhnSQL
from spacewalk.server.importlib.backendOracle import SQLBackend
from spacewalk.server.importlib.headerSource import createPackage
from spacewalk.server.importlib.importLib import Collection
from spacewalk.server.importlib.packageImport import packageImporter
from spacewalk.server.importlib.errataCache import schedule_errata_cache_update


def uploadPackages(info, source=0, force=0, caller=None):
    log_debug(4, source, force, caller)
    batch = Collection()
    packageList = info.get("packages") or []
    if not packageList:
        raise Exception("Nothing to do")

    org_id = info.get('orgId')
    if org_id == '':
        org_id = None

    if source:
        channelList = []
    else:
        channelList = info.get("channels") or []

    for package in packageList:
        p = __processPackage(package, org_id, channelList, source)
        batch.append(p)

    backend = SQLBackend()
    importer = packageImporter(batch, backend, source, caller=caller)

    importer.setUploadForce(force)

    importer.run()
    if not source:
        importer.subscribeToChannels()

    # Split the result in two lists - already uploaded and new packages
    newpkgs = []
    uploaded = []
    for pkg in importer.status():
        if pkg.ignored or pkg.diff:
            uploaded.append(pkg)
        else:
            newpkgs.append(pkg)

    # Schedule an errata cache update only if we touched the channels
    if not source:
        # makes sense only for binary packages
        schedule_errata_cache_update(importer.affected_channels)
        taskomatic.add_to_repodata_queue_for_channel_package_subscription(
            importer.affected_channels, batch, caller)
        rhnSQL.commit()

    return _formatStatus(uploaded), _formatStatus(newpkgs)


def __processPackage(package, org_id, channels, source):
    log_debug(4, org_id, channels, source)
    if 'md5sum' in package:  # for old rhnpush compatibility
        package['checksum_type'] = 'md5'
        package['checksum'] = package['md5sum']
        del(package['md5sum'])

    if 'checksum' not in package:
        raise rhnFault(50, "The package's checksum digest has not been specified")
    if 'packageSize' not in package:
        raise rhnFault(50, "The package size has not been specified")

    header = rhn_rpm.headerLoad(package['header'].data)
    if not header:
        raise rhnFault(50)
    packageSize = package['packageSize']
    relpath = package.get('relativePath')

    if 'header_start' in package:
        header_start = package['header_start']
    else:
        header_start = 0
    if 'header_end' in package:
        header_end = package['header_end']
    else:
        # Just say the whole package
        header_end = packageSize

    checksum_type = package['checksum_type']
    checksum = package['checksum']
    p = createPackage(header, packageSize, checksum_type, checksum, relpath, org_id,
                      header_start, header_end, channels)
    return p


def _formatStatus(status):
    objlist = []
    for pkg in status:
        name = pkg.name
        epoch = pkg.evr[0]
        if epoch is None:
            epoch = ""
        else:
            epoch = str(epoch)
        version = pkg.evr[1]
        release = pkg.evr[2]
        arch = pkg.arch
        hash = {}
        ignored = pkg.ignored
        if ignored is None:
            ignored = 0
        hash['ignored'] = ignored
        hash['diff'] = _dump(pkg.diff)
        objlist.append([name, version, release, epoch, arch, hash])
    return objlist


def _dump(object):
    if object is None:
        return ''
    from uyuni.common.usix import IntType, StringType, FloatType
    if type(object) in (IntType, StringType, FloatType):
        return object
    from uyuni.common.usix import ListType
    if isinstance(object, ListType):
        return list(map(_dump, object))
    from uyuni.common.usix import TupleType
    if isinstance(object, TupleType):
        return tuple(map(_dump, object))
    from uyuni.common.usix import DictType
    if isinstance(object, DictType):
        dict = {}
        for h, v in list(object.items()):
            dict[_dump(h)] = _dump(v)
        return dict
    return str(object)


def listChannelsSource(channelList):
    return _listChannels(channelList, True, False)


def listChannels(channelList):
    return _listChannels(channelList, False, False)


def listChannelsChecksum(channelList):
    return _listChannels(channelList, False, True)


def _listChannels(channelList, is_source, include_checksums):
    # Lists the packages from these channels
    # Uniquify the channels
    channels = set(channelList)
    rez = []
    for channel in channels:
        c_info = rhnChannel.channel_info(channel)
        if not c_info:
            # No packages in this channel
            continue

        if is_source:
            packageList = rhnChannel.list_packages_source(c_info['id'])
        else:
            if include_checksums:
                packageList = rhnChannel.list_packages_checksum_sql(
                    c_info['id'])
            else:
                packageList = rhnChannel.list_packages_sql(c_info['id'])
        for p in packageList:
            if is_source:
                for pkg in range(len(p)):
                    if p[pkg] is None:
                        p[pkg] = ""
                print(p)
                rez.append([p[0], p[1], p[2], p[3], channel])
            else:
                if include_checksums:
                    rez.append([p[0], p[1], p[2], p[3], p[4], p[6], p[7],
                                channel])
                else:
                    rez.append([p[0], p[1], p[2], p[3], p[4], channel])
    return rez
  07070100000199000081B40000000000000000000000016290A0C100000422000000000000000000000000000000000000003900000000spacewalk-backend/server/importlib/productNamesImport.py  #
# Copyright (c) 2008--2015 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#
#
# Product Names Import

from .importLib import Import


class ProductNamesImport(Import):

    def __init__(self, batch, backend):
        Import.__init__(self, batch, backend)

    def preprocess(self):
        pass

    def fix(self):
        pass

    def submit(self):
        try:
            self.backend.processProductNames(self.batch)
        except:
            self.backend.rollback()
            raise
        self.backend.commit()
  0707010000019A000081B40000000000000000000000016290A0C1000007A6000000000000000000000000000000000000003F00000000spacewalk-backend/server/importlib/supportInformationImport.py    #
# Copyright (c) 2012 SUSE LLC
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Support Information Import

from .importLib import GenericPackageImport
from spacewalk.satellite_tools import syncCache

class SupportInformationImport(GenericPackageImport):
    def __init__(self, batch, backend):
        GenericPackageImport.__init__(self, batch, backend)
        self._cache = syncCache.ShortPackageCache()
        self._data = []

    def preprocess(self):
        channelLabels = {}
        keywords = {}
        for item in self.batch:
            if item['channel'] not in channelLabels:
                channelLabels[item['channel']] = None
                self.backend.lookupChannels(channelLabels)
            if item['keyword'] not in keywords:
                keywords[item['keyword']] = self.backend.lookupKeyword(item['keyword'])
            pkg = self._cache.cache_get(item['pkgid'])
            if not pkg:
                continue
            if not (channelLabels[item['channel']] and channelLabels[item['channel']]['id']):
                continue
            self.backend.lookupPackageIdFromPackage(pkg)
            if pkg.id is None:
                continue

            item['package_id'] = pkg.id
            item['channel_id'] = channelLabels[item['channel']]['id']
            item['keyword_id'] = keywords[item['keyword']]
            self._data.append(item)

    def fix(self):
        pass

    def submit(self):
        try:
            self.backend.processSupportInformation(self._data)
        except:
            self.backend.rollback()
            raise
        self.backend.commit()

  0707010000019B000081B40000000000000000000000016290A0C1000023CB000000000000000000000000000000000000003900000000spacewalk-backend/server/importlib/suseProductsImport.py  #
# Copyright (c) 2014 SUSE LLC
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# SUSE Products Import

from .importLib import GenericPackageImport
from spacewalk.satellite_tools import syncCache

class SuseProductsImport(GenericPackageImport):
    def __init__(self, batch, backend):
        GenericPackageImport.__init__(self, batch, backend)
        self._cache = syncCache.ShortPackageCache()
        self._data = []

    def preprocess(self):
        archs = {}
        families = {}
        for item in self.batch:
            if item['arch'] not in archs:
                archs[item['arch']] = None
                self.backend.lookupPackageArches(archs)
            item['arch_type_id'] = archs[item['arch']]
            if item['release'] == 'None':
                item['release'] = None
            if item['version'] == 'None':
                item['version'] = None
            if item['channel_family_label'] not in families:
                fam = {}
                fam[item['channel_family_label']] = None
                self.backend.lookupChannelFamilies(fam)
                families[item['channel_family_label']] = fam[item['channel_family_label']]
            item['channel_family_id'] = families[item['channel_family_label']]
            self._data.append(item)

    def fix(self):
        pass

    def submit(self):
        try:
            self.backend.processSuseProducts(self._data)
        except:
            self.backend.rollback()
            raise
        self.backend.commit()

class SuseProductChannelsImport(GenericPackageImport):
    def __init__(self, batch, backend):
        GenericPackageImport.__init__(self, batch, backend)
        self._cache = syncCache.ShortPackageCache()
        self._data = []

    def preprocess(self):
        pid_trans = {}
        for item in self.batch:
            channel = {}
            intpid = item['product_id']
            if intpid not in pid_trans:
                pid_trans[intpid] = self.backend.lookupSuseProductIdByProductId(intpid)
            item['product_id'] = pid_trans[intpid]
            channel[item['channel_label']] = None
            self.backend.lookupChannels(channel)
            if channel[item['channel_label']]:
                item['channel_id'] = channel[item['channel_label']]['id']
            else:
                continue
            if item['parent_channel_label'] == 'None':
                item['parent_channel_label'] = None
            self._data.append(item)

    def fix(self):
        pass

    def submit(self):
        try:
            self.backend.processSuseProductChannels(self._data)
        except:
            self.backend.rollback()
            raise
        self.backend.commit()

class SuseUpgradePathsImport(GenericPackageImport):
    def __init__(self, batch, backend):
        GenericPackageImport.__init__(self, batch, backend)
        self._cache = syncCache.ShortPackageCache()
        self._data = []

    def preprocess(self):
        pid_trans = {}
        for item in self.batch:
            if item['from_product_id'] not in pid_trans:
                pid_trans[item['from_product_id']] = self.backend.lookupSuseProductIdByProductId(item['from_product_id'])
            item['from_pdid'] = pid_trans[item['from_product_id']]
            if item['to_product_id'] not in pid_trans:
                pid_trans[item['to_product_id']] = self.backend.lookupSuseProductIdByProductId(item['to_product_id'])
            item['to_pdid'] = pid_trans[item['to_product_id']]
            self._data.append(item)

    def fix(self):
        pass

    def submit(self):
        try:
            self.backend.processSuseUpgradePaths(self._data)
        except:
            self.backend.rollback()
            raise
        self.backend.commit()

class SuseProductExtensionsImport(GenericPackageImport):
    def __init__(self, batch, backend):
        GenericPackageImport.__init__(self, batch, backend)
        self._cache = syncCache.ShortPackageCache()
        self._data = []

    def preprocess(self):
        pid_trans = {}
        for item in self.batch:
            if item['product_id'] not in pid_trans:
                pid_trans[item['product_id']] = self.backend.lookupSuseProductIdByProductId(item['product_id'])
            item['product_pdid'] = pid_trans[item['product_id']]
            if item['root_id'] not in pid_trans:
                pid_trans[item['root_id']] = self.backend.lookupSuseProductIdByProductId(item['root_id'])
            item['root_pdid'] = pid_trans[item['root_id']]
            if item['ext_id'] not in pid_trans:
                pid_trans[item['ext_id']] = self.backend.lookupSuseProductIdByProductId(item['ext_id'])
            item['ext_pdid'] = pid_trans[item['ext_id']]
            self._data.append(item)

    def fix(self):
        pass

    def submit(self):
        try:
            self.backend.processSuseProductExtensions(self._data)
        except:
            self.backend.rollback()
            raise
        self.backend.commit()

class SuseProductRepositoriesImport(GenericPackageImport):
    def __init__(self, batch, backend):
        GenericPackageImport.__init__(self, batch, backend)
        self._cache = syncCache.ShortPackageCache()
        self._data = []

    def preprocess(self):
        pid_trans = {}
        rid_trans = {}
        for item in self.batch:
            if item['product_id'] not in pid_trans:
                pid_trans[item['product_id']] = self.backend.lookupSuseProductIdByProductId(item['product_id'])
            item['product_pdid'] = pid_trans[item['product_id']]
            if item['rootid'] not in pid_trans:
                pid_trans[item['rootid']] = self.backend.lookupSuseProductIdByProductId(item['rootid'])
            item['root_pdid'] = pid_trans[item['rootid']]
            if item['repo_id'] not in rid_trans:
                rid_trans[item['repo_id']] = self.backend.lookupRepoIdBySCCRepoId(item['repo_id'])
            item['repo_pdid'] = rid_trans[item['repo_id']]
            self._data.append(item)

    def fix(self):
        pass

    def submit(self):
        try:
            self.backend.processSuseProductRepositories(self._data)
        except:
            self.backend.rollback()
            raise
        self.backend.commit()

class SCCRepositoriesImport(GenericPackageImport):
    def __init__(self, batch, backend):
        GenericPackageImport.__init__(self, batch, backend)
        self._cache = syncCache.ShortPackageCache()
        self._data = []

    def preprocess(self):
        for item in self.batch:
            self._data.append(item)

    def fix(self):
        pass

    def submit(self):
        try:
            self.backend.processSCCRepositories(self._data)
        except:
            self.backend.rollback()
            raise
        self.backend.commit()

class SuseSubscriptionsImport(GenericPackageImport):
    def __init__(self, batch, backend):
        GenericPackageImport.__init__(self, batch, backend)
        self._cache = syncCache.ShortPackageCache()
        self._sub_data = []

    def preprocess(self):
        for item in self.batch:
            item['org_id'] = 1
            if item['system_entitlement'] == "0":
                families = {}
                families[item['label']] = None
                self.backend.lookupChannelFamilies(families)
                item['channel_family_id'] = families[item['label']]
                self._sub_data.append(item)

    def submit(self):
        try:
            self.backend.processSuseSubscriptions(self._sub_data)
        except:
            self.backend.rollback()
            raise
        self.backend.commit()

class ClonedChannelsImport(GenericPackageImport):
    def __init__(self, batch, backend):
        GenericPackageImport.__init__(self, batch, backend)
        self._cache = syncCache.ShortPackageCache()
        self._data = []

    def preprocess(self):
        pid_trans = {}
        for item in self.batch:
            channel = {}
            channel[item['orig']] = None
            self.backend.lookupChannels(channel)
            if channel[item['orig']]:
                item['orig_id'] = channel[item['orig']]['id']
            else:
                # orig channel not synced - skip
                continue
            channel = {}
            channel[item['clone']] = None
            self.backend.lookupChannels(channel)
            if channel[item['clone']]:
                item['id'] = channel[item['clone']]['id']
            else:
                # channel not synced - skip
                continue
            self._data.append(item)

    def fix(self):
        pass

    def submit(self):
        try:
            self.backend.processClonedChannels(self._data)
        except:
            self.backend.rollback()
            raise
        self.backend.commit()
 0707010000019C000041FD0000000000000000000000016290A0C100000000000000000000000000000000000000000000002800000000spacewalk-backend/server/importlib/test   0707010000019D000081B40000000000000000000000016290A0C100000657000000000000000000000000000000000000003E00000000spacewalk-backend/server/importlib/test/test_backendOracle.py #!/usr/bin/python

from spacewalk.server import rhnSQL


from spacewalk.server.importlib.backendOracle import OracleBackend
from spacewalk.server.importlib.backendLib import DBint, DBstring, DBdateTime, DBblob

tabs = OracleBackend.tables
utabs = {}

# convert table names to uppercase
for k, v in list(tabs.items()):
    utabs[k.upper()] = v


rhnSQL.initDB()
h = rhnSQL.prepare("""select table_name, column_name, data_type, data_length
        from user_tab_columns""")
h.execute()
rows = h.fetchall_dict()

# 'translate' oracle type to DBtypes
ora2py = {
    'NUMBER':       'DBint',
    'DATE':         'DBdateTime',
    'VARCHAR2':     'DBstring',
    'CHAR':         'DBstring',
    'BLOB':         'DBblob',
}

for i in rows:
    if i['table_name'] in utabs:
        # table exists in backendOracle
        cols = utabs[i['table_name']]
        if i['column_name'].lower() in cols.fields:
            # column defined in backendOracle
            t = cols.fields[i['column_name'].lower()]

            # check column type
            if not isinstance(t, eval(ora2py[i['data_type']])):
                print(("%s.%s:  %s vs. %s" % (i['table_name'],
                                             i['column_name'], i['data_type'], t.__class__)))
            elif isinstance(t, DBstring) and t.limit != i['data_length']:
                # for VARCHAR2/DBstring check also size
                print(("%s.%s: DBstring(%d) vs. VARCHAR2(%s)" % (
                    i['table_name'], i['column_name'], t.limit, i['data_length'])))
            else:
                print(("%s.%s: OK" % (i['table_name'], i['column_name'])))
 0707010000019E000081B40000000000000000000000016290A0C100001265000000000000000000000000000000000000003C00000000spacewalk-backend/server/importlib/test/test_blob_update.py   #!/usr/bin/python
#
# Copyright (c) 2008--2016 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#
#
# Test for blob updates
#

"""
Test module for blob updates.
To create the table for this test run:

drop table test_blob_update;

create table test_blob_update
    (id1 int not null, id2 int, val1 blob, val2 blob, nval int not null);
"""

import sys
from spacewalk.server import rhnSQL
from spacewalk.server.importlib.backendLib import Table, DBblob, DBint, TableUpdate, \
    TableInsert


def main():
    rhnSQL.initDB()

    blob_values1 = [
        # Regular update
        [1, 1,     'value 11', 'value 12', 1],
        [2, 1,     'value 21', 'value 22', 2],
        # Update with one of the primary keys being None
        [3, None,  'value 31', 'value 32', 3],
        [4, None,  'value 41', 'value 42', 4],
        # Test for writing an empty string into the blob
        [5, 5,     '',         'value 52', 5],
        # Test for writing a shorter string into the blob
        [6, 6,     'value 61', 'value 62', 6],
    ]
    newval1_1 = 'new value 11'
    newval1_2 = 'new value 12'
    newval3_1 = 'new value 31 ' * 1024
    newval3_2 = 'new value 32' * 2048
    newval5_1 = 'new value 51'
    newval5_2 = ''
    newval6_1 = 'v61'
    newval6_2 = 'v61'
    blob_values2 = blob_values1[:]
    for r in [0, 2, 4, 5]:
        # Copy the old values
        blob_values2[r] = blob_values1[r][:]
    blob_values2[0][2:5] = [newval1_1, newval1_2, 11]
    blob_values2[2][2:5] = [newval3_1, newval3_2, 2]
    blob_values2[4][2:5] = [newval5_1, newval5_2, 33]
    blob_values2[5][2:5] = [newval6_1, newval6_2, 4]

    test_blob_update = Table("test_blob_update",
                             fields={
                                 'id1': DBint(),
                                 'id2': DBint(),
                                 'val1': DBblob(),
                                 'val2': DBblob(),
                                 'nval': DBint(),
                             },
                             # Setting the nullable column to be the first one, to force a specific codepath
                             pk=['id2', 'id1'],
                             nullable=['id2'],
                             )

    fields = ['id1', 'id2', 'val1', 'val2', 'nval']
    setup(test_blob_update, blob_values1, fields)
    print("Insert test")
    verify(blob_values1)

    t = TableUpdate(test_blob_update, rhnSQL)

    rows = [0, 2, 4, 5]
    values = _build_update_hash(fields, blob_values2, rows)

    t.query(values)
    rhnSQL.commit()

    print("Updates test")
    verify(blob_values2)


def _build_update_hash(fields, blob_values, rows):
    values = {}
    for f in fields:
        values[f] = []
    for i in range(len(rows)):
        row = blob_values[rows[i]]
        for j in range(len(fields)):
            f = fields[j]
            values[f].append(row[j])

    return values


def setup(table, blob_values, fields):
    h = rhnSQL.prepare("delete from test_blob_update")
    h.execute()

    hash_values = {}
    for f in fields:
        hash_values[f] = []
    for i in range(len(blob_values)):
        for j in range(len(fields)):
            f = fields[j]
            h = hash_values[f]
            h.append(blob_values[i][j])
    t = TableInsert(table, rhnSQL)
    t.query(hash_values)
    rhnSQL.commit()


def verify(blob_values):
    q = """
        select val1, val2 from test_blob_update where id1 = :id1 and %s
    """
    for v in blob_values:
        i1 = v[0]
        i2 = v[1]
        v1 = v[2]
        v2 = v[3]
        hval = {'id1': i1}
        if i2 is None:
            s = "id2 is null"
        else:
            s = "id2 = :id2"
            hval['id2'] = i2
        h = rhnSQL.prepare(q % s)
        h.execute(**hval)
        row = h.fetchone_dict()
        val1 = row['val1']
        val2 = row['val2']

        val1_val = rhnSQL.read_lob(val1)
        val2_val = rhnSQL.read_lob(val2)
        assert v1 == val1_val, "Not equal: %s, %s" % (repr(v1), repr(val1_val))
        assert v2 == val2_val, "Not equal: %s, %s" % (repr(v2), repr(val2_val))
    print("Verification passes")

if __name__ == '__main__':
    sys.exit(main() or 0)
   0707010000019F000081B40000000000000000000000016290A0C100000802000000000000000000000000000000000000003800000000spacewalk-backend/server/importlib/test/test_ks_tree.py   #
# Copyright (c) 2008--2015 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#

from spacewalk.server import rhnSQL
from spacewalk.server.importlib.importLib import KickstartableTree, KickstartFile
from spacewalk.server.importlib.kickstartImport import KickstartableTreeImport
from spacewalk.server.importlib.backendOracle import OracleBackend

ks_trees = [
    KickstartableTree().populate({
        'channel': 'redhat-linux-i386-8.0',
        'base_path': 'foo/bar/baz',
        'label': 'redhat-linux-i386-8.0',
        'boot_image': 'ks-rh',
        'files': [
            KickstartFile().populate({
                'relative_path': 'foo/foo1',
                'checksum_type': 'md5',
                'checksum': 'axbycz',
                'last_modified': '2003-10-11 12:13:14',
                'file_size': 12345,
            }),
            KickstartFile().populate({
                'relative_path': 'foo/foo4',
                'checksum_type': 'md5',
                'checksum': 'axbycz',
                'last_modified': '2003-10-11 12:13:14',
                'file_size': 123456,
            }),
            KickstartFile().populate({
                'relative_path': 'foo/foo3',
                'checksum_type': 'md5',
                'checksum': 'axbycz',
                'last_modified': '2003-10-11 12:13:14',
                'file_size': 1234567,
            }),
        ],
    }),
]

rhnSQL.initDB()

backend = OracleBackend()
backend.init()

ki = KickstartableTreeImport(ks_trees, backend)
ki.run()
  070701000001A0000081B40000000000000000000000016290A0C1000008CA000000000000000000000000000000000000005400000000spacewalk-backend/server/importlib/test/test_strict_channel_package_subscription.py   #
# Copyright (c) 2008--2016 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#

# Script to test channel package snapshot invalidation
# Related to the testing of bug #162996

# To set things up:
# - create custom channel mibanescu-test2 (need to be logged in as mibanescu,
# otherwise change the org_id
# - subscribe a system to it
# - use rhnpush to upload a bunch of packages, including useless-1.0.0-2 and 3
# - snapshot the system
#     exec rhn_server.snapshot_server(1004505404, 'some_reason')
# - select snapshot_id from rhnSnapshotChannel where channel_id = XXX
# - select server_id, reason, invalid from rhnsnapshot where id = 236527
#   invalid should be null
# run this script
#   invalid should become non-null (2 in my tests)

import sys

from spacewalk.server import rhnSQL
from spacewalk.server.importlib import importLib, packageImport, backendOracle


def main():
    rhnSQL.initDB()

    channel = {'label': 'mibanescu-test2'}

    orgid = 1198839
    package_template = {
        'name': 'useless',
        'version': '1.0.0',
        'arch': 'noarch',
        'org_id': orgid,
    }

    batch = []
    p = importLib.IncompletePackage()
    p.populate(package_template)
    p['release'] = '2'
    p['channels'] = [channel]
    batch.append(p)

    p = importLib.IncompletePackage()
    p.populate(package_template)
    p['release'] = '3'
    p['channels'] = [channel]
    batch.append(p)

    backend = backendOracle.OracleBackend()
    cps = packageImport.ChannelPackageSubscription(batch, backend,
                                                   caller="misa.testing", strict=1)
    cps.run()
    print((cps.affected_channel_packages))

if __name__ == '__main__':
    sys.exit(main() or 0)
  070701000001A1000081B40000000000000000000000016290A0C100001CA0000000000000000000000000000000000000002F00000000spacewalk-backend/server/importlib/userAuth.py    #
# Copyright (c) 2008--2016 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#
#
# Authentication
#

import time
import sys
from spacewalk.common.rhnLog import log_debug
from spacewalk.common.rhnException import rhnFault
from spacewalk.common.rhnTranslate import _
from spacewalk.common.rhnTB import add_to_seclist

from spacewalk.server import rhnSQL, rhnUser


class UserAuth:

    def __init__(self):
        self.org_id = None
        self.user_id = None
        self.groups = []

    def auth(self, login, password):
        add_to_seclist(password)
        try:
            self.groups, self.org_id, self.user_id = getUserGroups(login, password)
        except rhnFault:
            e = sys.exc_info()[1]
            if e.code == 2:
                # invalid login/password; set timeout to baffle
                # brute force password guessing attacks (BZ 672163)
                time.sleep(2)
            raise

        log_debug(4, "Groups: %s; org_id: %s; user_id: %s" % (
            self.groups, self.org_id, self.user_id))

    def auth_session(self, session_string):
        user_instance = rhnUser.session_reload(session_string)
        try:
            self.groups, self.org_id, self.user_id = getUserGroupsFromUserInstance(user_instance)
        except rhnFault:
            e = sys.exc_info()[1]
            if e.code == 2:
                # invalid login/password; set timeout to baffle
                # brute force password guessing attacks (BZ 672163)
                time.sleep(2)
            raise

        log_debug(4, "Groups: %s; org_id: %s; user_id: %s" % (
            self.groups, self.org_id, self.user_id))

    def isOrgAdmin(self):
        if 'org_admin' in self.groups:
            log_debug(4, "Is org admin")
            return 1
        log_debug(4, "Is NOT org admin")
        return 0

    def isChannelAdmin(self):
        if 'org_admin' in self.groups:
            log_debug(4, "Is channel admin because isa org admin")
            return 1
        if 'channel_admin' in self.groups:
            log_debug(4, "Is channel admin")
            return 1
        log_debug(4, "Is NOT channel admin")
        return 0

    def authzOrg(self, info):
        # This function is a lot more complicated than it should be; the
        # corner case is pushes without a channel; we have to deny regular
        # users the ability to push to their org.

        # If the org id is not specified, default to the user's org id
        if 'orgId' not in info:
            info['orgId'] = self.org_id
        log_debug(4, "info[orgId]", info['orgId'], "org id", self.org_id)

        org_id = info['orgId']

        if org_id == '':
            # Satellites are not allowwd to push in the null org
            raise rhnFault(4,
                           _("You are not authorized to manage packages in the null org"))

        if org_id and self.org_id != org_id:
            # Not so fast...
            raise rhnFault(32,
                           _("You are not allowed to manage packages in the %s org") %
                           org_id)

        # Org admins and channel admins have full privileges; we could use
        # user_manages_channes, except for the case where there are no chanels

        if self.isOrgAdmin() or self.isChannelAdmin():
            log_debug(4, "Org authorized (org_admin or channel_admin)")
            return

        # regular user at this point... check if the user manages any channels
        if user_manages_channels(self.user_id):
            log_debug(4, "Org authorized (user manages a channel)")
            return

        # ok, you're a regular user who doesn't manage any channels.
        # take a hike.
        raise rhnFault(32,
                       _("You are not allowed to perform administrative tasks"))

    def authzChannels(self, channels):
        log_debug(4, channels)
        if not channels:
            return

        # rhn_channel.user_role_check checks for the ownership of the channel
        # by this user's org

        h = rhnSQL.prepare("""
            select rhn_channel.user_role_check(id, :user_id, 'manage') manage
              from rhnChannel
             where label = :channel
        """)

        for channel in channels:
            h.execute(channel=channel, user_id=self.user_id)

            row = h.fetchone_dict()
            # Either the channel doesn't exist, or not allowed to manage it
            if not row or not row['manage']:
                raise rhnFault(32,
                               _("You are not allowed to manage channel %s, or that "
                                 "channel does not exist") % channel)

            log_debug(4, "User %s allowed to manage channel %s" %
                      (self.user_id, channel))

        return None


# wregglej 12/21/05 This should only be used when the user instance has already been reloaded from
# a session.
def getUserGroupsFromUserInstance(user_instance):
    log_debug(4, user_instance.getid())
    user = user_instance

    if not user:
        log_debug("null user")
        raise rhnFault(2)

    # Don't need to check the password, the session should have already been checked.

    # Get the org id
    org_id = user.contact['org_id']
    user_id = user.getid()
    h = rhnSQL.prepare("""
        select ugt.label
          from rhnUserGroupType ugt,
               rhnUserGroup ug,
               rhnUserGroupMembers ugm
         where ugm.user_id = :user_id
               and ugm.user_group_id = ug.id
               and ug.group_type = ugt.id
    """)
    h.execute(user_id=user_id)
    groups = []
    while 1:
        row = h.fetchone_dict()
        if not row:
            break
        groups.append(row['label'])
    return groups, org_id, user_id


def getUserGroups(login, password):
    # Authenticates a user and returns the list of groups it belongs
    # to, and the org id
    add_to_seclist(password)
    log_debug(4, login)
    user = rhnUser.search(login)

    if not user:
        log_debug("rhnUser.search failed")
        raise rhnFault(2)

    # Check the user's password
    if not user.check_password(password):
        log_debug("user.check_password failed")
        raise rhnFault(2)

    if rhnUser.is_user_disabled(username):
        msg = _("""
               %s Account has been deactivated on this server.
               Please contact your Org administrator for more help.""")
        raise rhnFault(1, msg % username, explain=0)

    return getUserGroupsFromUserInstance(user)


def user_manages_channels(user_id):
    h = rhnSQL.prepare("""
        select distinct 1
          from rhnChannel
         where rhn_channel.user_role_check(id, :user_id, 'manage') = 1
    """)

    h.execute(user_id=user_id)
    row = h.fetchone_dict()

    return (row is not None)
070701000001A2000041FD0000000000000000000000016290A0C100000000000000000000000000000000000000000000002000000000spacewalk-backend/server/repomd   070701000001A3000081B40000000000000000000000016290A0C10000009E000000000000000000000000000000000000002900000000spacewalk-backend/server/repomd/Makefile  # Makefile for the import code
#

TOP	= ../..

SUBDIR	= server/repomd

SPACEWALK_FILES	= __init__ mapper domain repository view

include $(TOP)/Makefile.defs
  070701000001A4000081B40000000000000000000000016290A0C100000267000000000000000000000000000000000000002C00000000spacewalk-backend/server/repomd/__init__.py   #
# Copyright (c) 2008--2013 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#
#
 070701000001A5000081B40000000000000000000000016290A0C100000BE0000000000000000000000000000000000000002A00000000spacewalk-backend/server/repomd/domain.py #
# Copyright (c) 2008--2018 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#
#
#   Domain Classes for generating repository metadata from RHN info.
#


class Channel:

    """ A pure data object representing an RHN Channel. """

    def __init__(self, channel_id):
        self.id = channel_id

        self.label = None
        self.name = None
        self.checksum_type = None

        self.num_packages = 0
        self.packages = []
        self.errata = []
        self.updateinfo = None
        self.comps = None
        self.modules = None


class Package:

    """ A pure data object representing an RHN Package. """

    def __init__(self, package_id):
        self.id = package_id

        self.name = None
        self.version = None
        self.release = None
        self.epoch = 0
        self.arch = None

        self.checksum = None
        self.checksum_type = None
        self.summary = None
        self.description = None
        self.vendor = None
        self.build_time = None
        self.package_size = None
        self.payload_size = None
        self.installed_size = None
        self.header_start = None
        self.header_end = None
        self.package_group = None
        self.build_host = None
        self.copyright = None
        self.filename = None
        self.source_rpm = None

        self.files = []

        self.provides = []
        self.requires = []
        self.conflicts = []
        self.obsoletes = []
        self.supplements = []
        self.enhances = []
        self.suggests = []
        self.recommends = []

        self.changelog = []


class Erratum:

    """ An object representing a single update to a channel. """

    def __init__(self, erratum_id):
        self.id = erratum_id
        self.readable_id = None
        self.title = None
        self.advisory_type = None
        self.version = None

        self.issued = None
        self.updated = None

        self.synopsis = None
        self.description = None

        self.bz_references = []
        self.cve_references = []

        # We don't want to pickle a single package multiple times,
        # So here's a list to store the ids and we can swap out the
        # Actual objects when its time to pickle. This should be replaced
        # With something that keeps the concepts seperate.
        self.package_ids = []
        self.packages = []


class RepoMD:

    def __init__(self, repomd_id, filename):
        self.id = repomd_id
        self.filename = filename
070701000001A6000081B40000000000000000000000016290A0C100005C34000000000000000000000000000000000000002A00000000spacewalk-backend/server/repomd/mapper.py #
# Copyright (c) 2008--2018 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#
#
#   Classes for mapping domain objects to the rhn db.
#

import os.path
import re
import time

from spacewalk.common import rhnCache
from spacewalk.common.rhnConfig import CFG
from uyuni.common.usix import UnicodeType
from spacewalk.server import rhnSQL

from . import domain


CACHE_PREFIX = "/var/cache/rhn/"


class ChannelMapper:

    """ Data Mapper for Channels to the RHN db. """

    def __init__(self, pkg_mapper, erratum_mapper, repomd_mapper):
        self.pkg_mapper = pkg_mapper
        self.erratum_mapper = erratum_mapper
        self.repomd_mapper = repomd_mapper

        self.channel_details_sql = rhnSQL.prepare("""
        select
            c.label,
            c.name,
            ct.label checksum_type
        from
            rhnChannel c,
            rhnChecksumType ct
        where c.id = :channel_id
          and c.checksum_type_id = ct.id
        """)

        self.channel_sql = rhnSQL.prepare("""
        select
            package_id
        from
            rhnChannelPackage
        where
            channel_id = :channel_id
        """)

        self.last_modified_sql = rhnSQL.prepare("""
        select
            to_char(last_modified, 'YYYYMMDDHH24MISS') as last_modified
        from
            rhnChannel
        where id = :channel_id
        """)

        self.errata_id_sql = rhnSQL.prepare("""
        select
            e.id
        from
            rhnChannelErrata ce,
            rhnErrata e
        where
            ce.channel_id = :channel_id
        and e.id = ce.errata_id
        """)

        self.comps_id_sql = rhnSQL.prepare("""
        select
            id
        from
            rhnChannelComps
        where
            channel_id = :channel_id
            and comps_type_id = 1
        order by id desc
        """)

        self.modules_id_sql = rhnSQL.prepare("""
        select
            id
        from
            rhnChannelComps
        where
            channel_id = :channel_id
            and comps_type_id = 2
        order by id desc
        """)

        self.cloned_from_id_sql = rhnSQL.prepare("""
        select
            original_id id
        from
            rhnChannelCloned
        where
            id = :channel_id
        """)

    def last_modified(self, channel_id):
        """ Get the last_modified field for the provided channel_id. """
        self.last_modified_sql.execute(channel_id=channel_id)
        return self.last_modified_sql.fetchone()[0]

    def get_channel(self, channel_id):
        """ Load the channel with id channel_id and its packages. """

        self.channel_details_sql.execute(channel_id=channel_id)
        details = self.channel_details_sql.fetchone()

        channel = domain.Channel(channel_id)

        channel.label = details[0]
        channel.name = details[1]
        channel.checksum_type = details[2]

        self.channel_sql.execute(channel_id=channel_id)
        package_ids = self.channel_sql.fetchall()

        channel.num_packages = len(package_ids)
        channel.packages = self._package_generator(package_ids)

        channel.errata = self._erratum_generator(channel_id)

        self.comps_id_sql.execute(channel_id=channel_id)
        comps_id = self.comps_id_sql.fetchone()
        self.modules_id_sql.execute(channel_id=channel_id)
        modules_id = self.modules_id_sql.fetchone()

        if comps_id:
            channel.comps = self.repomd_mapper.get_repomd(comps_id[0])
        if modules_id:
            channel.modules = self.repomd_mapper.get_repomd(modules_id[0])

        self.cloned_from_id_sql.execute(channel_id=channel_id)
        cloned_row = self.cloned_from_id_sql.fetchone()
        if cloned_row is not None:
            channel.cloned_from_id = cloned_row[0]
        else:
            channel.cloned_from_id = None

        return channel

    def _package_generator(self, package_ids):
        for package_id in package_ids:
            pkg = self.pkg_mapper.get_package(package_id[0])
            yield pkg

    def _erratum_generator(self, channel_id):
        self.errata_id_sql.execute(channel_id=channel_id)
        erratum_ids = self.errata_id_sql.fetchall()

        for erratum_id in erratum_ids:
            erratum = self.erratum_mapper.get_erratum(erratum_id[0])
            yield erratum


class CachedPackageMapper:

    """ Data Mapper for Packages to an on-disc cache. """

    def __init__(self, mapper):
        cache = rhnCache.Cache()

        # For more speed, we won't compress.
        # cache = rhnCache.CompressedCache(cache)

        cache = rhnCache.ObjectCache(cache)
        self.cache = rhnCache.NullCache(cache)
        self.mapper = mapper

    def get_package(self, package_id):
        """
        Load the package with id package_id.

        Load from the cache, if it is new enough. If not, fall back to the
        provided mapper.
        """
        package_id = str(package_id)

        last_modified = str(self.mapper.last_modified(package_id))
        last_modified = last_modified.replace(" ", "")
        last_modified = last_modified.replace(":", "")
        last_modified = last_modified.replace("-", "")

        cache_key = "repomd-packages/" + package_id
        if self.cache.has_key(cache_key, last_modified):
            package = self.cache.get(cache_key)
        else:
            package = self.mapper.get_package(package_id)
            self.cache.set(cache_key, package, last_modified)

        return package


class SqlPackageMapper:

    """ Data Mapper for Packages to the RHN db. """

    def __init__(self):
        self.details_sql = rhnSQL.prepare("""
        select
            pn.name,
            pevr.version,
            pevr.release,
            pevr.epoch,
            pa.label arch,
            c.checksum checksum,
            p.summary,
            p.description,
            p.vendor,
            p.build_time,
            p.package_size,
            p.payload_size,
            p.installed_size,
            p.header_start,
            p.header_end,
            pg.name package_group,
            p.build_host,
            p.copyright,
            p.path,
            sr.name source_rpm,
            p.last_modified,
            c.checksum_type
        from
            rhnPackage p,
            rhnPackageName pn,
            rhnPackageEVR pevr,
            rhnPackageArch pa,
            rhnPackageGroup pg,
            rhnSourceRPM sr,
            rhnChecksumView c
        where
            p.id = :package_id
        and p.name_id = pn.id
        and p.evr_id = pevr.id
        and p.package_arch_id = pa.id
        and p.package_group = pg.id
        and p.source_rpm_id = sr.id
        and p.checksum_id = c.id
        """)

        self.filelist_sql = rhnSQL.prepare("""
        select
            pc.name
        from
            rhnPackageCapability pc,
            rhnPackageFile pf
        where
            pf.package_id = :package_id
        and pf.capability_id = pc.id
        """)

        self.prco_sql = rhnSQL.prepare("""
        select
           'provides',
           pp.sense,
           pc.name,
           pc.version
        from
           rhnPackageCapability pc,
           rhnPackageProvides pp
        where
           pp.package_id = :package_id
           and pp.capability_id = pc.id
        union all
        select
           'requires',
           pr.sense,
           pc.name,
           pc.version
        from
           rhnPackageCapability pc,
           rhnPackageRequires pr
        where
           pr.package_id = :package_id
           and pr.capability_id = pc.id
        union all
        select
           'recommends',
           prec.sense,
           pc.name,
           pc.version
        from
           rhnPackageCapability pc,
           rhnPackageRecommends prec
        where
           prec.package_id = :package_id
           and prec.capability_id = pc.id
        union all
        select
           'supplements',
           supp.sense,
           pc.name,
           pc.version
        from
           rhnPackageCapability pc,
           rhnPackageSupplements supp
        where
           supp.package_id = :package_id
           and supp.capability_id = pc.id
        union all
        select
           'enhances',
           enh.sense,
           pc.name,
           pc.version
        from
           rhnPackageCapability pc,
           rhnPackageEnhances enh
        where
           enh.package_id = :package_id
           and enh.capability_id = pc.id
        union all
        select
           'suggests',
           sugg.sense,
           pc.name,
           pc.version
        from
           rhnPackageCapability pc,
           rhnPackageSuggests sugg
        where
           sugg.package_id = :package_id
           and sugg.capability_id = pc.id
        union all
        select
           'conflicts',
           pcon.sense,
           pc.name,
           pc.version
        from
           rhnPackageCapability pc,
           rhnPackageConflicts pcon
        where
           pcon.package_id = :package_id
           and pcon.capability_id = pc.id
        union all
        select
           'obsoletes',
           po.sense,
           pc.name,
           pc.version
        from
           rhnPackageCapability pc,
           rhnPackageObsoletes po
        where
           po.package_id = :package_id
           and po.capability_id = pc.id
        union all
        select
           'breaks',
           brks.sense,
           pc.name,
           pc.version
        from
           rhnPackageCapability pc,
           rhnPackageBreaks brks
        where
           brks.package_id = :package_id
           and brks.capability_id = pc.id
        union all
        select
           'predepends',
           pdep.sense,
           pc.name,
           pc.version
        from
           rhnPackageCapability pc,
           rhnPackagePredepends pdep
        where
           pdep.package_id = :package_id
           and pdep.capability_id = pc.id
        """)

        self.last_modified_sql = rhnSQL.prepare("""
        select
            to_char(last_modified, 'YYYYMMDDHH24MISS') as last_modified
        from
            rhnPackage
        where id = :package_id
        """)

        self.other_sql = rhnSQL.prepare("""
        select
            name,
            text,
            time
        from
            rhnPackageChangelog
        where package_id = :package_id
        """)

    def last_modified(self, package_id):
        """ Get the last_modified date on the package with id package_id. """
        self.last_modified_sql.execute(package_id=package_id)
        return self.last_modified_sql.fetchone()[0]

    def get_package(self, package_id):
        """ Get the package with id package_id from the RHN db. """
        package = domain.Package(package_id)
        self._fill_package_details(package)
        self._fill_package_prco(package)
        self._fill_package_filelist(package)
        self._fill_package_other(package)
        return package

    def _get_package_filename(self, pkg):
        if pkg[18]:
            path = pkg[18]
            return os.path.basename(path)
        else:
            name = pkg[0]
            version = pkg[1]
            release = pkg[2]
            arch = pkg[4]

            return "%s-%s-%s.%s.rpm" % (name, version, release, arch)

    def _fill_package_details(self, package):
        """ Load the packages basic details (summary, description, etc). """
        self.details_sql.execute(package_id=package.id)
        pkg = self.details_sql.fetchone()

        package.name = pkg[0]
        package.version = pkg[1]
        package.release = pkg[2]
        if pkg[3] is not None:
            package.epoch = pkg[3]
        package.arch = pkg[4]

        package.checksum_type = pkg[21]
        package.checksum = pkg[5]
        package.summary = string_to_unicode(pkg[6])
        package.description = string_to_unicode(pkg[7])
        package.vendor = string_to_unicode(pkg[8])

        package.build_time = oratimestamp_to_sinceepoch(pkg[9])

        package.package_size = pkg[10]
        package.payload_size = pkg[11]
        package.installed_size = pkg[12]
        package.header_start = pkg[13]
        package.header_end = pkg[14]
        package.package_group = pkg[15]
        package.build_host = pkg[16]
        package.copyright = string_to_unicode(pkg[17])
        package.filename = self._get_package_filename(pkg)
        package.source_rpm = pkg[19]

    def _fill_package_prco(self, package):
        """ Load the package's provides, requires, conflicts, obsoletes. """
        self.prco_sql.execute(package_id=package.id)
        deps = self.prco_sql.fetchall() or []

        for item in deps:
            version = item[3] or ""
            relation = ""
            release = None
            epoch = 0
            if version:
                sense = item[1] or 0
                relation = SqlPackageMapper.__get_relation(sense)

                vertup = version.split('-')
                if len(vertup) > 1:
                    version = vertup[0]
                    release = vertup[1]

                vertup = version.split(':')
                if len(vertup) > 1:
                    epoch = vertup[0]
                    version = vertup[1]

            dep = {'name': string_to_unicode(item[2]), 'flag': relation,
                   'version': version, 'release': release, 'epoch': epoch}

            if item[0] == "provides":
                package.provides.append(dep)
            elif item[0] == "requires":
                package.requires.append(dep)
            elif item[0] == "conflicts":
                package.conflicts.append(dep)
            elif item[0] == "obsoletes":
                package.obsoletes.append(dep)
            elif item[0] == "recommends":
                package.recommends.append(dep)
            elif item[0] == "supplements":
                package.supplements.append(dep)
            elif item[0] == "enhances":
                package.enhances.append(dep)
            elif item[0] == "suggests":
                package.suggests.append(dep)
            elif item[0] == "breaks":
                package.breaks.append(dep)
            elif item[0] == "predepends":
                package.predepends.append(dep)
            else:
                assert False, "Unknown PRCO type: %s" % item[0]

#    @staticmethod
    def __get_relation(sense):
        """ Convert the binary sense into a string. """

        # Flip the bits for easy comparison
        sense = sense & 0xf

        if sense == 2:
            relation = "LT"
        elif sense == 4:
            relation = "GT"
        elif sense == 8:
            relation = "EQ"
        elif sense == 10:
            relation = "LE"
        elif sense == 12:
            relation = "GE"
        else:
            assert False, "Unknown relation sense: %s" % sense

        return relation

    __get_relation = staticmethod(__get_relation)

    def _fill_package_filelist(self, package):
        """ Load the package's list of files. """
        self.filelist_sql.execute(package_id=package.id)
        files = self.filelist_sql.fetchall() or []

        for file_dict in files:
            package.files.append(string_to_unicode(file_dict[0]))

    def _fill_package_other(self, package):
        """ Load the package's changelog info. """

        self.other_sql.execute(package_id=package.id)
        log_data = self.other_sql.fetchall() or []

        for data in log_data:

            date = oratimestamp_to_sinceepoch(data[2])

            chglog = {'author': string_to_unicode(data[0]), 'date': date,
                      'text': string_to_unicode(data[1])}
            package.changelog.append(chglog)


class CachedErratumMapper:

    """ Data Mapper for Errata to an on-disc cache. """

    def __init__(self, mapper, package_mapper):
        self.package_mapper = package_mapper

        cache = rhnCache.Cache()
        cache = rhnCache.ObjectCache(cache)
        self.cache = rhnCache.NullCache(cache)
        self.mapper = mapper

    def get_erratum(self, erratum_id):
        """
        Load the erratum with id erratum_id.

        Load from the cache, if it is new enough. If not, fall back to the
        provided mapper.
        """
        erratum_id = str(erratum_id)

        last_modified = str(self.mapper.last_modified(erratum_id))
        last_modified = re.sub(" ", "", last_modified)
        last_modified = re.sub(":", "", last_modified)
        last_modified = re.sub("-", "", last_modified)

        cache_key = "repomd-errata/" + erratum_id
        if self.cache.has_key(cache_key, last_modified):
            erratum = self.cache.get(cache_key)
            for package_id in erratum.package_ids:
                package = self.package_mapper.get_package(package_id)
                erratum.packages.append(package)
        else:
            erratum = self.mapper.get_erratum(erratum_id)

            tmp_packages = erratum.packages
            erratum.packages = []
            self.cache.set(cache_key, erratum, last_modified)
            erratum.packages = tmp_packages

        return erratum


class SqlErratumMapper:

    def __init__(self, package_mapper):
        self.package_mapper = package_mapper

        self.last_modified_sql = rhnSQL.prepare("""
        select
            to_char(last_modified, 'YYYYMMDDHH24MISS') as last_modified
        from
            rhnErrata
        where id = :erratum_id
        """)

        self.erratum_details_sql = rhnSQL.prepare("""
        select
            advisory,
            advisory_name,
            advisory_type,
            advisory_rel,
            description,
            synopsis,
            TO_CHAR(issue_date, 'YYYY-MM-DD HH24:MI:SS') AS issue_date,
            TO_CHAR(update_date, 'YYYY-MM-DD HH24:MI:SS') AS update_date
        from
            rhnErrata
        where
            id = :erratum_id
       """)

        self.erratum_cves_sql = rhnSQL.prepare("""
        select
            cve.name as cve_name
        from
            rhnCVE cve,
            rhnErrataCVE ec
        where
            ec.errata_id = :erratum_id
        and ec.cve_id = cve.id
        """)

        self.erratum_bzs_sql = rhnSQL.prepare("""
        select
            bug_id,
            summary,
            href
        from
            rhnErrataBuglist
        where
            errata_id = :erratum_id
        """)

        self.erratum_packages_sql = rhnSQL.prepare("""
        select
            package_id
        from
            rhnErrataPackage
        where
            errata_id = :erratum_id
        """)

    def last_modified(self, erratum_id):
        """ Get the last_modified field for the provided erratum_id. """
        self.last_modified_sql.execute(erratum_id=erratum_id)
        return self.last_modified_sql.fetchone()[0]

    def get_erratum(self, erratum_id):
        """ Get the package with id package_id from the RHN db. """
        erratum = domain.Erratum(erratum_id)
        self._fill_erratum_details(erratum)

        # TODO: These two don't work on satellites.
        # We must not install the tables there
        self._fill_erratum_bz_references(erratum)
        self._fill_erratum_cve_references(erratum)

        self._fill_erratum_packages(erratum)
        return erratum

    def _fill_erratum_details(self, erratum):
        self.erratum_details_sql.execute(erratum_id=erratum.id)
        ertm = self.erratum_details_sql.fetchone()

        erratum.readable_id = ertm[0]
        erratum.title = ertm[1]

        if ertm[2] == 'Security Advisory':
            erratum.advisory_type = 'security'
        elif ertm[2] == 'Bug Fix Advisory':
            erratum.advisory_type = 'bugfix'
        elif ertm[2] == 'Product Enhancement Advisory':
            erratum.advisory_type = 'enhancement'
        else:
            erratum.advisory_type = 'errata'

        erratum.version = ertm[3]
        erratum.description = ertm[4]
        erratum.synopsis = ertm[5]
        erratum.issued = ertm[6]
        erratum.updated = ertm[7]

    def _fill_erratum_bz_references(self, erratum):
        self.erratum_bzs_sql.execute(erratum_id=erratum.id)
        bz_refs = self.erratum_bzs_sql.fetchall_dict()

        if bz_refs:
            erratum.bz_references = bz_refs

    def _fill_erratum_cve_references(self, erratum):
        self.erratum_cves_sql.execute(erratum_id=erratum.id)
        cve_refs = self.erratum_cves_sql.fetchall()

        for cve_ref in cve_refs:
            erratum.cve_references.append(cve_ref[0])

    def _fill_erratum_packages(self, erratum):
        self.erratum_packages_sql.execute(erratum_id=erratum.id)
        pkgs = self.erratum_packages_sql.fetchall()

        for pkg in pkgs:
            package = self.package_mapper.get_package(pkg[0])
            erratum.packages.append(package)
            erratum.package_ids.append(pkg[0])


class SqlRepoMDMapper:

    def __init__(self):
        self.repomd_sql = rhnSQL.prepare("""
        select
            relative_filename
        from
            rhnChannelComps
        where
            id = :repomd_id
        """)

    def get_repomd(self, repomd_id):
        self.repomd_sql.execute(repomd_id=repomd_id)
        repomd_row = self.repomd_sql.fetchone()
        filename = os.path.join(CFG.mount_point, repomd_row[0])
        return domain.RepoMD(repomd_id, filename)


def get_channel_mapper():
    """ Factory Method-ish function to load a Channel Mapper. """
    package_mapper = get_package_mapper()
    erratum_mapper = get_erratum_mapper(package_mapper)
    repomd_mapper = SqlRepoMDMapper()
    channel_mapper = ChannelMapper(package_mapper, erratum_mapper, repomd_mapper)

    return channel_mapper


def get_package_mapper():
    """ Factory Method-ish function to load a Package Mapper. """
    package_mapper = SqlPackageMapper()
    package_mapper = CachedPackageMapper(package_mapper)

    return package_mapper


def get_erratum_mapper(package_mapper):
    """ Factory Method-ish function to load an Erratum Mapper. """
    erratum_mapper = SqlErratumMapper(package_mapper)
    erratum_mapper = CachedErratumMapper(erratum_mapper, package_mapper)

    return erratum_mapper


def oratimestamp_to_sinceepoch(ts):
    return time.mktime((ts.year, ts.month, ts.day, ts.hour, ts.minute,
                        ts.second, 0, 0, -1))


def string_to_unicode(text):
    if text is None:
        return ''
    if isinstance(text, UnicodeType):
        return text

    # First try a bunch of encodings in strict mode
    encodings = ['ascii', 'iso-8859-1', 'iso-8859-15', 'iso-8859-2']
    for encoding in encodings:
        try:
            dec = text.decode(encoding)
            enc = dec.encode('utf-8')
            return enc
        except UnicodeError:
            continue

    # None of those worked, just do ascii with replace
    dec = text.decode(encoding, 'replace')
    enc = dec.encode('utf-8', 'replace')
    return enc
070701000001A7000081B40000000000000000000000016290A0C100003EA6000000000000000000000000000000000000002E00000000spacewalk-backend/server/repomd/repository.py #
# Copyright (c) 2008--2018 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#
#
#   Classes for generating repository metadata from RHN info.
#

import time
try:
    #  python 2
    import StringIO
except ImportError:
    #  python3
    import io as StringIO
import shutil
import os.path

from gzip import GzipFile
from gzip import write32u

from uyuni.common.usix import LongType
from uyuni.common import checksum
from spacewalk.common import rhnCache
from spacewalk.common.rhnLog import log_debug
from spacewalk.common.rhnConfig import CFG

from . import mapper
from . import view
from .domain import RepoMD
from spacewalk.server import rhnChannel

# One meg
CHUNK_SIZE = 1048576

comps_mapping = {
    'rhel-x86_64-client-5': 'rhn/kickstart/ks-rhel-x86_64-client-5/Client/repodata/comps-rhel5-client-core.xml',
    'rhel-x86_64-client-vt-5': 'rhn/kickstart/ks-rhel-x86_64-client-5/VT/repodata/comps-rhel5-vt.xml',
    'rhel-x86_64-client-workstation-5': 'rhn/kickstart/ks-rhel-x86_64-client-5/Workstation/repodata/comps-rhel5-client-workstation.xml',
    'rhel-x86_64-server-5': 'rhn/kickstart/ks-rhel-x86_64-server-5/Server/repodata/comps-rhel5-server-core.xml',
    'rhel-x86_64-server-vt-5': 'rhn/kickstart/ks-rhel-x86_64-server-5/VT/repodata/comps-rhel5-vt.xml',
    'rhel-x86_64-server-cluster-5': 'rhn/kickstart/ks-rhel-x86_64-server-5/Cluster/repodata/comps-rhel5-cluster.xml',
    'rhel-x86_64-server-cluster-storage-5': 'rhn/kickstart/ks-rhel-x86_64-server-5/ClusterStorage/repodata/comps-rhel5-cluster-st.xml',
}
for k in list(comps_mapping.keys()):
    for arch in ('i386', 'ia64', 's390x', 'ppc'):
        comps_mapping[k.replace('x86_64', arch)] = comps_mapping[k].replace('x86_64', arch)


class Repository(object):

    """
    Representation of RHN channels as repository metadata.

    This class can generate primary.xml, filelists.xml, and other.xml
    """

    def __init__(self, channel):
        self.channel_id = channel['id']
        self.last_modified = channel['last_modified']

        self.primary_prefix = "repomd_primary.xml"
        self.other_prefix = "repomd_other.xml"
        self.filelists_prefix = "repomd_filelists.xml"
        self.updateinfo_prefix = "repomd_updateinfo.xml"

        self._channel = None

        cache = rhnCache.Cache()
        self.cache = rhnCache.NullCache(cache)

    def get_primary_xml_file(self):
        """ Return a file-like object of the primarl.xml for this channel. """
        ret = self.get_primary_cache()

        if not ret:
            viewobj = self.get_primary_view()

            self.generate_files([viewobj])
            ret = self.get_primary_cache()

        return ret

    def get_other_xml_file(self):
        """ Return a file-like object of the other.xml for this channel. """
        ret = self.get_other_cache()

        if not ret:
            viewobj = self.get_other_view()

            self.generate_files([viewobj])
            ret = self.get_other_cache()

        return ret

    def get_filelists_xml_file(self):
        """ Return a file-like object of the filelists.xml for this channel. """
        ret = self.get_filelists_cache()

        if not ret:
            viewobj = self.get_filelists_view()

            self.generate_files([viewobj])
            ret = self.get_filelists_cache()

        return ret

    def get_updateinfo_xml_file(self):
        """ Return a file-like object of the updateinfo.xml for the channel. """
        ret = self.get_cache_file(self.updateinfo_prefix)

        if not ret:
            viewobj = self.get_cache_view(self.updateinfo_prefix,
                                          view.UpdateinfoView)

            viewobj.write_updateinfo()
            viewobj.fileobj.close()
            ret = self.get_cache_file(self.updateinfo_prefix)

        return ret

    def get_cache_entry_name(self, cache_prefix):
        return "%s-%s" % (cache_prefix, self.channel_id)

    def get_cache_file(self, cache_prefix):
        cache_entry = self.get_cache_entry_name(cache_prefix)
        ret = self.cache.get_file(cache_entry, self.last_modified)
        return ret

    def get_cache_view(self, cache_prefix, view_class):
        cache_entry = self.get_cache_entry_name(cache_prefix)
        ret = self.cache.set_file(cache_entry, self.last_modified)
        viewobj = view_class(self.channel, ret)
        return viewobj

    def get_primary_cache(self):
        return self.get_cache_file(self.primary_prefix)

    def get_other_cache(self):
        return self.get_cache_file(self.other_prefix)

    def get_filelists_cache(self):
        return self.get_cache_file(self.filelists_prefix)

    def get_primary_view(self):
        return self.get_cache_view(self.primary_prefix, view.PrimaryView)

    def get_other_view(self):
        return self.get_cache_view(self.other_prefix, view.OtherView)

    def get_filelists_view(self):
        return self.get_cache_view(self.filelists_prefix, view.FilelistsView)

    def get_repomd_file(self, repomd_obj, func_name):
        """ Return a file-like object of the comps.xml/modules.yaml for the channel. """
        if repomd_obj:
            repomd_view = view.RepoMDView(repomd_obj)
            return repomd_view.get_file()
        elif func_name == 'get_comps_file' and self.channel.label in comps_mapping:
            comps_view = view.RepoMDView(RepoMD(None,
                                              os.path.join(CFG.mount_point, comps_mapping[self.channel.label])))
            return comps_view.get_file()
        else:
            if self.channel.cloned_from_id is not None:
                log_debug(1, "No comps/modules and no comps_mapping for [%s] cloned from [%s] trying to get comps from the original one."
                          % (self.channel.id, self.channel.cloned_from_id))
                cloned_from_channel = rhnChannel.Channel().load_by_id(self.channel.cloned_from_id)
                cloned_from_channel_label = cloned_from_channel._row['label']
                func = getattr(Repository(rhnChannel.channel_info(cloned_from_channel_label)), func_name)
                return func()
        return None

    def get_comps_file(self):
        return self.get_repomd_file(self.channel.comps, 'get_comps_file')

    def get_modules_file(self):
        return self.get_repomd_file(self.channel.modules, 'get_modules_file')

    def generate_files(self, views):
        for view in views:
            view.write_start()

        for package in self.channel.packages:
            for view in views:
                view.write_package(package)

        for view in views:
            view.write_end()
            view.fileobj.close()

    def __get_channel(self):
        """ Late binding for the channel. """
        if self._channel is None:
            channel_mapper = mapper.get_channel_mapper()
            self._channel = channel_mapper.get_channel(self.channel_id)
        return self._channel

    channel = property(__get_channel)


class CompressedRepository:

    """ Decorator for Repositories adding gzip compression of the output. """

    def __init__(self, repository):
        self.repository = repository

        self.primary_prefix = self.repository.primary_prefix + ".gz"
        self.other_prefix = self.repository.other_prefix + ".gz"
        self.filelists_prefix = self.repository.filelists_prefix + ".gz"
        self.updateinfo_prefix = self.repository.updateinfo_prefix + ".gz"

    def get_primary_xml_file(self):
        xml_file = self.repository.get_primary_xml_file()
        return self.__get_compressed_file(xml_file)

    def get_other_xml_file(self):
        """ Return gzipped other.xml file """
        xml_file = self.repository.get_other_xml_file()
        return self.__get_compressed_file(xml_file)

    def get_filelists_xml_file(self):
        """ Return gzipped filelists.xml file """
        xml_file = self.repository.get_filelists_xml_file()
        return self.__get_compressed_file(xml_file)

    def get_updateinfo_xml_file(self):
        """ Return gzipped updateinfo.xml file """
        xml_file = self.repository.get_updateinfo_xml_file()
        return self.__get_compressed_file(xml_file)

    def __getattr__(self, x):
        return getattr(self.repository, x)

    def __get_compressed_file(self, uncompressed_file):
        string_file = StringIO.StringIO()
        gzip_file = NoTimeStampGzipFile(mode="wb", fileobj=string_file)

        shutil.copyfileobj(uncompressed_file, gzip_file)

        gzip_file.close()

        string_file.seek(0, 0)

        return string_file


class CachedRepository:

    """ Decorator for Repositories adding caching. """

    def __init__(self, repository):
        self.repository = repository

        cache = rhnCache.Cache()
        self.cache = rhnCache.NullCache(cache)

    def get_primary_xml_file(self):
        """ Return the cached primary metadata file, if it exists. """
        return self._cached(self.primary_prefix,
                            self.repository.get_primary_xml_file)

    def get_other_xml_file(self):
        return self._cached(self.other_prefix,
                            self.repository.get_other_xml_file)

    def get_filelists_xml_file(self):
        return self._cached(self.filelists_prefix,
                            self.repository.get_filelists_xml_file)

    def get_updateinfo_xml_file(self):
        return self._cached(self.updateinfo_prefix,
                            self.repository.get_updateinfo_xml_file)

    def _cached(self, cache_prefix, fallback_method):
        """
        Return the cached results if they are new enough, else get new results.

        cache_prefix is a unique string that will identify the cached data.
        fallback_method is the method to call if the cached data doesn't exist
        or isn't new enough.
        """
        cache_entry = "%s-%s" % (cache_prefix, self.channel_id)
        ret = self.cache.get_file(cache_entry, self.last_modified)
        if ret:
            log_debug(4, "Scored cache hit", self.channel_id)
        else:
            ret = fallback_method()
            cache_file = self.cache.set_file(cache_entry, self.last_modified)

            shutil.copyfileobj(ret, cache_file)

            ret.close
            cache_file.close()
            ret = self.cache.get_file(cache_entry, self.last_modified)
        return ret

    def __getattr__(self, x):
        return getattr(self.repository, x)


class MetadataRepository:

    """
    A repository that can provide repomd data.

    A Metadata Repository is composed of a repository and a
    CompressedRepository, as both are required to generate the repomd file.
    """

    def __init__(self, repository, compressed_repository):
        self.repository = repository
        self.compressed_repository = compressed_repository

        self.repomd_prefix = "repomd.xml"

    def get_repomd_file(self):
        """ Return uncompressed repomd.xml file """

        cache_entry = "%s-%s" % (self.repomd_prefix, self.channel_id)
        ret = self.cache.get_file(cache_entry, self.last_modified)

        if not ret:
            # We need the time in seconds since the epoch for the xml file.
            timestamp = int(time.mktime(time.strptime(self.last_modified,
                                                      "%Y%m%d%H%M%S")))

            to_generate = []

            if not self.repository.get_primary_cache():
                to_generate.append(self.repository.get_primary_view())
            if not self.repository.get_other_cache():
                to_generate.append(self.repository.get_other_view())
            if not self.repository.get_filelists_cache():
                to_generate.append(self.repository.get_filelists_view())

            self.repository.generate_files(to_generate)

            primary = self.__compute_checksums(timestamp,
                                               self.repository.get_primary_xml_file(),
                                               self.compressed_repository.get_primary_xml_file())

            filelists = self.__compute_checksums(timestamp,
                                                 self.repository.get_filelists_xml_file(),
                                                 self.compressed_repository.get_filelists_xml_file())

            other = self.__compute_checksums(timestamp,
                                             self.repository.get_other_xml_file(),
                                             self.compressed_repository.get_other_xml_file())

            updateinfo = self.__compute_checksums(timestamp,
                                                  self.repository.get_updateinfo_xml_file(),
                                                  self.compressed_repository.get_updateinfo_xml_file())

            # Comps and modules might not exist on disc
            comps = None
            comps_file = None
            modules = None
            modules_file = None
            try:
                comps_file = self.repository.get_comps_file()
            except IOError:
                pass
            try:
                modules_file = self.repository.get_modules_file()
            except IOError:
                pass
            if comps_file:
                comps = self.__compute_open_checksum(timestamp, comps_file)
            if modules_file:
                modules = self.__compute_checksums(timestamp, modules_file)

            ret = self.cache.set_file(cache_entry, self.last_modified)
            repomd_view = view.RepoView(primary, filelists, other, updateinfo,
                                        comps, modules, ret, self.__get_checksumtype())

            repomd_view.write_repomd()
            ret.close()
            ret = self.cache.get_file(cache_entry, self.last_modified)

        return ret

    def __get_file_checksum(self, xml_file):
        hash_computer = checksum.getHashlibInstance(self.__get_checksumtype(), False)

        chunk = xml_file.read(CHUNK_SIZE)
        while chunk:
            hash_computer.update(chunk)
            chunk = xml_file.read(CHUNK_SIZE)

        return hash_computer.hexdigest()

    def __compute_open_checksum(self, timestamp, xml_file):
        template_hash = {}

        template_hash['open_checksum'] = self.__get_file_checksum(xml_file)
        template_hash['timestamp'] = timestamp

        return template_hash

    def __compute_checksums(self, timestamp, xml_file, xml_gz_file):
        template_hash = self.__compute_open_checksum(timestamp, xml_file)

        template_hash['gzip_checksum'] = self.__get_file_checksum(xml_gz_file)

        return template_hash

    def __get_checksumtype(self):
        return self.repository.channel.checksum_type

    def __getattr__(self, x):
        return getattr(self.compressed_repository, x)


def get_repository(channel):
    """ Factory Method-ish function to create a repository from a channel. """
    repository = Repository(channel)

    compressed_repository = CompressedRepository(repository)
    compressed_repository = CachedRepository(compressed_repository)

    meta_repository = MetadataRepository(repository, compressed_repository)

    return meta_repository


class NoTimeStampGzipFile(GzipFile):

    def _write_gzip_header(self):
        self.fileobj.write('\037\213')
        self.fileobj.write('\010')
        # no flags
        self.fileobj.write('\x00')
        write32u(self.fileobj, LongType(0))
        self.fileobj.write('\002')
        self.fileobj.write('\377')
  070701000001A8000081B40000000000000000000000016290A0C100003956000000000000000000000000000000000000002800000000spacewalk-backend/server/repomd/view.py   #
# Copyright (c) 2008--2018 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#
import re

XML_ENCODING = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"


class RepoView:

    def __init__(self, primary, filelists, other, updateinfo, groups, modules, fileobj,
                 checksum_type):
        self.primary = primary
        self.filelists = filelists
        self.other = other
        self.updateinfo = updateinfo
        self.groups = groups
        self.modules = modules

        self.fileobj = fileobj
        if checksum_type == 'sha1':
            self.checksum_type = 'sha'
        else:
            self.checksum_type = checksum_type

    def _get_data(self, data_type, data_obj):
        output = []
        output.append("  <data type=\"%s\">" % (data_type))
        output.append("    <location href=\"repodata/%s.xml.gz\"/>"
                      % (data_type))
        output.append("    <checksum type=\"%s\">%s</checksum>"
                      % (self.checksum_type, data_obj['gzip_checksum']))
        output.append("    <timestamp>%d</timestamp>" % (data_obj['timestamp']))
        output.append("    <open-checksum type=\"%s\">%s</open-checksum>"
                      % (self.checksum_type, data_obj['open_checksum']))
        output.append("  </data>")
        return output

    def _get_comps_data(self):
        output = []
        if self.groups:
            output.append("  <data type=\"group\">")
            output.append("    <location href=\"repodata/comps.xml\"/>")
            output.append("    <checksum type=\"%s\">%s</checksum>"
                          % (self.checksum_type, self.groups['open_checksum']))
            output.append("    <timestamp>%d</timestamp>"
                          % (self.groups['timestamp']))
            output.append("  </data>")

        return output

    def _get_modules_data(self):
        output = []
        if self.modules:
            output.append("  <data type=\"group\">")
            output.append("    <location href=\"repodata/modules.yaml\"/>")
            output.append("    <checksum type=\"%s\">%s</checksum>"
                          % (self.checksum_type, self.modules['open_checksum']))
            output.append("    <timestamp>%d</timestamp>"
                          % (self.groups['timestamp']))
            output.append("  </data>")

        return output

    def write_repomd(self):
        output = []
        output.append(XML_ENCODING)
        output.append("<repomd xmlns=\"http://linux.duke.edu/metadata/repo\">")
        output.extend(self._get_data('primary', self.primary))
        output.extend(self._get_data('filelists', self.filelists))
        output.extend(self._get_data('other', self.other))
        output.extend(self._get_data('updateinfo', self.updateinfo))
        output.extend(self._get_comps_data())
        output.extend(self._get_modules_data())
        output.append("</repomd>")
        self.fileobj.write('\n'.join(output))


class PrimaryView(object):

    def __init__(self, channel, fileobj):
        self.channel = channel
        self.fileobj = fileobj

    def _get_deps(self, deps):
        output = []
        for dep in deps:
            if dep['flag']:
                line = "        <rpm:entry name=\"%s\" flags=\"%s\" \
                        epoch=\"%s\" ver=\"%s\" " % (dep['name'], dep['flag'],
                                                     dep['epoch'], dep['version'])
                if dep['release']:
                    line += "rel=\"%s\" " % dep['release']
                line += "/>"
                output.append(line)
            else:
                output.append("         <rpm:entry name=\"%s\" />"
                              % (text_filter(dep['name'])))
        return output

    def _get_files(self, files):
        output = []
        filere = re.compile('.*bin\/.*|^\/etc\/.*|^\/usr\/lib\.sendmail$')
        for pkg_file in files:
            if filere.match(pkg_file):
                output.append("      <file>%s</file>"
                              % (text_filter(pkg_file)))
        return output

    def _get_package(self, package):
        output = []
        output.append("  <package type=\"rpm\">")
        output.append("    <name>%s</name>" % (package.name))
        output.append("    <arch>%s</arch>" % (package.arch))
        output.append("    <version epoch=\"%s\" ver=\"%s\" rel=\"%s\" />"
                      % (package.epoch, package.version, package.release))
        output.append("    <checksum type=\"%s\" pkgid=\"YES\">%s</checksum>"
                      % (package.checksum_type, package.checksum))
        output.append("    <summary>%s</summary>"
                      % (text_filter(package.summary)))
        output.append("    <description>%s</description>"
                      % (text_filter(package.description)))
        output.append("    <packager></packager>")
        output.append("    <url></url>")
        output.append("    <time file=\"%d\" build=\"%d\" />"
                      % (package.build_time, package.build_time))
        output.append("    <size package=\"%d\" installed=\"%d\" "
                      "archive=\"%d\" />"
                      % (package.package_size, package.installed_size,
                         package.payload_size))
        output.append("    <location href=\"getPackage/%s\" />"
                      % (package.filename))
        output.append("    <format>")
        output.append("      <rpm:license>%s</rpm:license>"
                      % (text_filter(package.copyright)))
        output.append("      <rpm:vendor>%s</rpm:vendor>"
                      % (text_filter(package.vendor)))
        output.append("      <rpm:group>%s</rpm:group>"
                      % (text_filter(package.package_group)))
        output.append("      <rpm:buildhost>%s</rpm:buildhost>"
                      % (text_filter(package.build_host)))
        output.append("      <rpm:sourcerpm>%s</rpm:sourcerpm>"
                      % (text_filter(package.source_rpm)))
        output.append("      <rpm:header-range start=\"%d\" end=\"%d\" />"
                      % (package.header_start, package.header_end))

        output.append("      <rpm:provides>")
        output.extend(self._get_deps(package.provides))
        output.append("      </rpm:provides>")

        output.append("      <rpm:requires>")
        output.extend(self._get_deps(package.requires))
        output.append("      </rpm:requires>")

        output.append("      <rpm:recommends>")
        output.extend(self._get_deps(package.recommends))
        output.append("      </rpm:recommends>")

        output.append("      <rpm:suggests>")
        output.extend(self._get_deps(package.suggests))
        output.append("      </rpm:suggests>")

        output.append("      <rpm:supplements>")
        output.extend(self._get_deps(package.supplements))
        output.append("      </rpm:supplements>")

        output.append("      <rpm:enhances>")
        output.extend(self._get_deps(package.enhances))
        output.append("      </rpm:enhances>")

        output.append("      <rpm:conflicts>")
        output.extend(self._get_deps(package.conflicts))
        output.append("      </rpm:conflicts>")

        output.append("      <rpm:obsoletes>")
        output.extend(self._get_deps(package.obsoletes))
        output.append("      </rpm:obsoletes>")

        output.extend(self._get_files(package.files))

        output.append("    </format>")
        output.append("  </package>")

        return output

    def write_start(self):
        output = XML_ENCODING + "\n" + \
            "<metadata xmlns=\"http://linux.duke.edu/metadata/common\" " + \
            "xmlns:rpm=\"http://linux.duke.edu/metadata/rpm\" " + \
            "packages=\"%d\">" % self.channel.num_packages

        self.fileobj.write(output)

    def write_package(self, package):
        self.fileobj.write('\n'.join(self._get_package(package)))

    def write_end(self):
        self.fileobj.write("</metadata>")


class FilelistsView(object):

    def __init__(self, channel, fileobj):
        self.channel = channel
        self.fileobj = fileobj

    def _get_package(self, package):
        output = []
        output.append("  <package pkgid=\"%s\" name=\"%s\" arch=\"%s\">"
                      % (package.checksum, package.name, package.arch))
        output.append("    <version epoch=\"%s\" ver=\"%s\" rel=\"%s\" />"
                      % (package.epoch, package.version, package.release))

        for file_name in package.files:
            output.append("    <file>%s</file>" % (text_filter(file_name)))
        output.append("  </package>")
        return output

    def write_start(self):
        output = XML_ENCODING + "\n" + \
            "<filelists xmlns=\"http://linux.duke.edu/metadata/filelists\" " + \
            "packages=\"%d\">" % self.channel.num_packages

        self.fileobj.write(output)

    def write_package(self, package):
        self.fileobj.write('\n'.join(self._get_package(package)))

    def write_end(self):
        self.fileobj.write("</filelists>")


class OtherView(object):

    def __init__(self, channel, fileobj):
        self.channel = channel
        self.fileobj = fileobj

    def _get_package(self, package):
        output = []
        output.append("  <package pkgid=\"%s\" name=\"%s\" arch=\"%s\">"
                      % (package.checksum, package.name, package.arch))
        output.append("    <version epoch=\"%s\" ver=\"%s\" rel=\"%s\" />"
                      % (package.epoch, package.version, package.release))

        for changelog in package.changelog:
            output.append("    <changelog author=\"%s\" date=\"%d\">"
                          % (text_filter_attribute(changelog['author']),
                             changelog['date']))
            output.append("      " + text_filter(changelog['text']))
            output.append("    </changelog>")
        output.append("  </package>")
        return output

    def write_start(self):
        output = XML_ENCODING + "\n" + \
            "<otherdata xmlns=\"http://linux.duke.edu/metadata/other\" " + \
            "packages=\"%d\">" % self.channel.num_packages

        self.fileobj.write(output)

    def write_package(self, package):
        self.fileobj.write('\n'.join(self._get_package(package)))

    def write_end(self):
        self.fileobj.write("</otherdata>")


class UpdateinfoView(object):

    def __init__(self, channel, fileobj):
        self.channel = channel
        self.fileobj = fileobj

    def _get_references(self, erratum):
        output = []
        output.append("    <references>")

        ref_string = "       <reference href=\"%s%s\" id=\"%s\" type=\"%s\">"
        for cve_ref in erratum.cve_references:
            output.append(ref_string
                          % ("http://cve.mitre.org/cgi-bin/cvename.cgi?name=",
                             cve_ref, cve_ref, "cve"))
            output.append("      </reference>")

        for bz_ref in erratum.bz_references:
            output.append(ref_string
                          % ("http://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=",
                             bz_ref['bug_id'], bz_ref['bug_id'], "bugzilla"))
            output.append("        " + text_filter(bz_ref['summary']))
            output.append("      </reference>")

        output.append("    </references>")
        return output

    def _get_packages(self, erratum):
        output = []

        output.append("    <pkglist>")
        output.append("      <collection short=\"%s\">"
                      % text_filter_attribute(self.channel.label))
        output.append("        <name>%s</name>"
                      % text_filter(self.channel.name))

        for package in erratum.packages:
            output.append("          <package name=\"%s\" version=\"%s\" "
                          "release=\"%s\" epoch=\"%s\" arch=\"%s\" src=\"%s\">"
                          % (package.name, package.version, package.release,
                             package.epoch, package.arch, text_filter(package.source_rpm)))
            output.append("            <filename>%s</filename>"
                          % text_filter(package.filename))
            output.append("            <sum type=\"%s\">%s</sum>"
                          % (package.checksum_type, package.checksum))
            output.append("          </package>")

        output.append("      </collection>")
        output.append("    </pkglist>")
        return output

    def _get_erratum(self, erratum):
        output = []

        output.append("  <update from=\"security@redhat.com\" " +
                      "status=\"final\" type=\"%s\" version=\"%s\">"
                      % (erratum.advisory_type, erratum.version))
        output.append("    <id>%s</id>" % erratum.readable_id)
        output.append("    <title>%s</title>" % text_filter(erratum.title))
        output.append("    <issued date=\"%s\"/>" % erratum.issued)
        output.append("    <updated date=\"%s\"/>" % erratum.updated)
        output.append("    <description>%s</description>"
                      % text_filter("%s\n\n\%s" % (erratum.synopsis,  erratum.description)))

        output.extend(self._get_references(erratum))
        output.extend(self._get_packages(erratum))

        output.append("  </update>")

        return output

    def write_updateinfo(self):
        output = XML_ENCODING + "\n" + "<updates>\n"

        self.fileobj.write(output)

        for erratum in self.channel.errata:
            self.fileobj.write('\n'.join(self._get_erratum(erratum)))

        self.fileobj.write("\n</updates>")


class RepoMDView(object):

    def __init__(self, repomd):
        self.repomd = repomd

    def get_file(self):
        repomd_file = open(self.repomd.filename, "rb")
        return repomd_file


def text_filter(text):
    # do & first
    s = text.replace('&', '&amp;')
    s = s.replace('<', '&lt;')
    s = s.replace('>', '&gt;')
    return s


def text_filter_attribute(text):
    s = text_filter(text)
    s = s.replace('"', '&quot;')
    return s
  070701000001A9000081B40000000000000000000000016290A0C100001A81000000000000000000000000000000000000002900000000spacewalk-backend/server/rhn.conf.sample  # rhn.conf.sample - THIS FILE IS USED FOR REFERENCE ONLY!
#
# The /etc/rhn/rhn.conf file should be created initially upon install.
#
# This file will attempt to better illustrate the possible settings for
# the file /etc/rhn/rhn.conf.
#

# How this configuration scheme works:
#
# Settings are structured hierarchically. All main components (RHN Server
# Server Satellite, and web) currently use this file. Settings are
# differentiated by a dot-delimited
# prefix. For example (ignore the initial comments; this is an illustration).
#
# debug = 3  # All debug levels for all components is 3
# traceback_mail = xxx@redhat.com # all tracebacks for all components go to
#                                 # xxx@redhat.com.
# proxy.traceback_mail = yyy@redhat.com # All proxy (broker & redirect) emails
#                                       # go to yyy@redhat.com now (overriding
#                                       # xxx@redhat.com).
# proxy.broker.debug = 4  # Spacewalk Proxy broker now runs at debug level 4, but
#                         # redirect and auth_cache still run at debug level 3


#### THE SETTINGS ####
# NOTE: All settings listed are the defaults unless overridden
#       Items left uncommented are the settings most likely needing to be
#       changed.
#
# Common (global to all components) settings
#
#debug = 5
traceback_mail = user0@example.com, user1@example.com
#quiet_mail = 15 # can set in other components... no need to change though.

#
# server
#
#server.mount_point = /pub
#server.disallow_user_creation = 0
#server.log_file = /var/log/rhn/rhn_server.log

#
# server.satellite
#
#server.satellite.log_file = /var/log/rhn/rhn_server_satellite.log
#server.satellite.encrypted_passwords = 0
#server.satellite.http_proxy =
#server.satellite.http_proxy_username =
#server.satellite.http_proxy_username =

#
# server.app
#
# -no settings at this level-

#
# server.app
#
#server.app.log_file = /var/log/rhn/rhn_server_app.log

#
# web
#
web.download_url = #FIXME
web.mail_server_errors = user0@redhat.com, user1@redhat.com

#web.session_swap_secret_1 = *installer generated*
#web.session_swap_secret_2 = *installer generated*
#web.session_swap_secret_3 = *installer generated*
#web.session_swap_secret_4 = *installer generated*

#web.session_secret_1 = *installer generated*
#web.session_secret_2 = *installer generated*
#web.session_secret_3 = *installer generated*
#web.session_secret_4 = *installer generated*

web.rhnproc_server = #FIXME
web.rhnproc_port =   #FIXME


### COMPONENT DEFINITIONS ###
#
# *global*          - if the option is defined without a component prepended,
#                     then that option is set globally unless overridden.
#                     E.g. traceback_mail = bob@company.com, mary@company.com
#
# server            - all components that are of base component type "server"
#                     will inherit these settings.
#
# server.satellite  - settings for the satellite component of the RHN Server.
#                     E.g. server.satellite.traceback_mail = jill@company.com
#                     (all error message for all server.satellite components
#                     now are sent to Jill, whereas non-server.satellite
#                     component error messages are still sent to Bob and Mary).
#
# server.app
#                   - settings for the app components of the RHN Server.
#
# web               - XXX: web stuff




### CONFIGURATION OPTION DEFINITIONS ###
#
#   NOTE: All components don't necessary understand all options listed below.
#         Use the sample settings above as a reference as to what can and cannot
#         be set. Comment (#) anything you wish to be unset/defaulted.
#
#   ** SERVER COMPONENT OPTIONS**
#
#   traceback_mail  - indicates where tracebacks (crash information) is mailed.
#                     traceback_mail = user0@company.com, user1@company.com
#                     NOTE: any options with a comma indicates a list of items.
#
#   quiet_mail      - The two main components of the Spacewalk Proxy Solution (broker
#                     and redirect) use Apache extensively. As Apache reuses
#                     processes, sometimes an error may occurs that generates
#                     multiple copies of the same "traceback". The quiet_mail
#                     setting limits the number of duplicate tracebacks sent
#                     from 1 error.
#
#   debug           - Debug level. To increase verbosity of logs to the log
#                     files, increase the value.
#                     Debug levels are arbitrary to a certain degree, but here
#                     is a rough summary of what each means:
#                     LEVEL   MEANING
#                     0       nearly nothing at all is logged
#                     1       minimal debug information logged
#                     2       some debug information logged
#                     3       somewhat verbose (most function calls and methods
#                             are logged)
#                     4       verbose
#                     5       very verbose (nearly everything)
#                     6       everything including some things only meaningful
#                             to developers
#
#   log_file        - each component can have it's own log file.
#
#   mount_point     - FIXME
#
#   encrypted_passwords
#                   - client passwords can be stored encrypted or plaintext
#                     in the database. Possible values are 0 and 1.
#
#   http_proxy      - this is only used for component server.satellite and is
#                     only important to the satellite-sync tool. If one must
#                     connect to Red Hat's servers via a corporate http_proxy
#                     it can be set here. To leave it unset, either comment
#                     that line or leave the value blank.
#                     e.g. somehttpproxy.example.com:8080
#                     ...or, to leave unset:
#                     e.g. proxy.broker.http_proxy =
#
#   http_proxy_username
#   http_proxy_password
#                   - username and password for that http_proxy if need be.
#
#
#   ** WEB COMPONENT OPTIONS**
#
#   download_url    - FIXME
#
#   mail_server_errors = user0@redhat.com, user1@redhat.com
#
#   session_swap_secret_1
#   session_swap_secret_2
#   session_swap_secret_3
#   session_swap_secret_4
#                   - these are produced by the initial installation. Do not
#                     even think of altering these.
#
#   session_secret_1
#   session_secret_2
#   session_secret_3
#   session_secret_4
#                   - these are produced by the initial installation. Do not
#                     even think of altering these.
#
#   rhnproc_server  - FIXME
#   rhnproc_port    - FIXME
#
   070701000001AA000081B40000000000000000000000016290A0C10000162F000000000000000000000000000000000000002600000000spacewalk-backend/server/rhnAction.py #
# Copyright (c) 2008--2015 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#
#

from spacewalk.common.rhnLog import log_debug
from spacewalk.server import rhnSQL


def schedule_action(action_type, action_name=None, delta_time=0,
                    scheduler=None, org_id=None, prerequisite=None):
    action_id = rhnSQL.Sequence('rhn_event_id_seq').next()

    at = rhnSQL.Table('rhnActionType', 'label')
    if not at.has_key(action_type):
        raise ValueError("Unknown action type %s" % action_type)

    params = {
        'action_id': action_id,
        'org_id': org_id,
        'action_type_id': at[action_type]['id'],
        'action_name': action_name,
        'delta': delta_time,
        'scheduler': scheduler,
        'prerequisite': prerequisite,
    }

    h = rhnSQL.prepare("""
        insert into rhnAction
               (id, org_id, action_type, name, scheduler, earliest_action, prerequisite)
        values (:action_id, :org_id, :action_type_id, :action_name, :scheduler,
                current_timestamp + numtodsinterval(:delta, 'second'), :prerequisite)
    """)
    h.execute(**params)

    return action_id


def schedule_server_action(server_id, action_type, action_name=None,
                           delta_time=0, scheduler=None, org_id=None, prerequisite=None):
    if not org_id:
        h = rhnSQL.prepare("select org_id from rhnServer where id = :id")
        h.execute(id=server_id)
        row = h.fetchone_dict()
        if not row:
            raise ValueError("Invalid server id %s" % server_id)
        org_id = row['org_id']

    action_id = schedule_action(action_type,
                                action_name,
                                delta_time=delta_time,
                                scheduler=scheduler,
                                org_id=org_id,
                                prerequisite=prerequisite,
                                )

    # Insert an action as Queued
    h = rhnSQL.prepare("""
        insert into rhnServerAction (server_id, action_id, status)
        values (:server_id, :action_id, 0)
    """)
    h.execute(server_id=server_id, action_id=action_id)

    return action_id


def update_server_action(server_id, action_id, status, result_code=None,
                         result_message=""):
    log_debug(4, server_id, action_id, status, result_code, result_message)
    h = rhnSQL.prepare("""
    update rhnServerAction
        set status = :status,
            result_code = :result_code,
            result_msg  = :result_message,
            completion_time = current_timestamp
    where action_id = :action_id
      and server_id = :server_id
    """)
    h.execute(action_id=action_id, server_id=server_id,
              status=status, result_code=result_code,
              result_message=result_message)


_query_lookup_action_childs = rhnSQL.Statement("""
    select a.id
      from rhnAction a
      join rhnServerAction sa
        on sa.action_id = a.id
     where prerequisite = :action_id
       and sa.server_id = :server_id
""")

_query_lookup_action = rhnSQL.Statement("""
    select sa.action_id, sa.status
      from rhnServerAction sa
     where sa.server_id = :server_id
       and sa.action_id = :action_id
""")


def invalidate_action(server_id, action_id):
    log_debug(4, server_id, action_id)
    h = rhnSQL.prepare(_query_lookup_action)
    h_child = rhnSQL.prepare(_query_lookup_action_childs)
    return _invalidate_action_recursive(server_id, action_id, h, h_child)


def _invalidate_action_recursive(server_id, action_id, h, h_child):
    h_child.execute(server_id=server_id, action_id=action_id)
    a_ids = []
    # invalidate childs first
    while 1:
        row = h_child.fetchone_dict()
        if not row:
            break
        child_ids = _invalidate_action_recursive(server_id, row['id'], h, h_child)
        a_ids += child_ids
    h.execute(server_id=server_id, action_id=action_id)
    s_row = h.fetchone_dict()
    if s_row and s_row['status'] != 3:
        # not already failed
        c_action_id = s_row['action_id']
        a_ids.append(c_action_id)
        update_server_action(server_id=server_id, action_id=c_action_id,
                             status=3, result_code=-100, result_message="Prerequisite failed")

    return a_ids

_query_schedule_server_packages_update_by_arch = rhnSQL.Statement("""
    insert into rhnActionPackage (id, action_id, name_id, package_arch_id, \
           parameter)
    values (sequence_nextval('rhn_act_p_id_seq'), :action_id, :name_id, :arch_id, \
           'upgrade')
""")


def schedule_server_packages_update_by_arch(server_id, package_arch_ids, org_id=None, prerequisite=None, action_name="Package update"):
    action_id = schedule_server_action(server_id,
                                       action_type='packages.update', action_name=action_name,
                                       org_id=org_id, prerequisite=prerequisite)
    h = rhnSQL.prepare(_query_schedule_server_packages_update_by_arch)

    for name_id, arch_id in package_arch_ids:
        h.execute(action_id=action_id, name_id=name_id, arch_id=arch_id)
    return action_id
 070701000001AB000081B40000000000000000000000016290A0C10000048E000000000000000000000000000000000000002700000000spacewalk-backend/server/rhnAuthPAM.py    #
# Copyright (c) 2008--2016 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#

import pam
import sys

from uyuni.common.usix import raise_with_tb
from spacewalk.common.rhnLog import log_error
from spacewalk.common.rhnException import rhnException


def check_password(username, password, service):
    try:
        auth = pam.pam()
        if not auth.authenticate(username, password, service=service):
            log_error("Password check failed (%s): %s" % (auth.code, auth.reason))
            return 0
        else:
            return 1
    except:
        raise_with_tb(rhnException('Internal PAM error'), sys.exc_info()[2])
  070701000001AC000081B40000000000000000000000016290A0C1000018F5000000000000000000000000000000000000002A00000000spacewalk-backend/server/rhnCapability.py #
# Copyright (c) 2008--2016 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#
#

import re
import sys

# common module
from spacewalk.common import rhnFlags
from spacewalk.common.rhnLog import log_debug

# local module
from . import rhnSQL

# Globally store the parsed capabilities in rhnFlags


def set_client_capabilities(capabilities):
    if not capabilities:
        # No capabilities presented; don't set the global flag
        return

    caps = {}
    regexp = re.compile(
        r"^(?P<name>[^(]*)\((?P<version>[^)]*)\)\s*=\s*(?P<value>.*)$")
    for cap in capabilities:
        mo = regexp.match(cap)
        if not mo:
            # XXX Just ignoring it, for now
            continue
        dict = mo.groupdict()
        name = dict['name'].strip()
        version = dict['version'].strip()
        value = dict['value'].strip()

        caps[name] = {
            'version': version,
            'value': value,
        }

    rhnFlags.set('client-capabilities', caps)
    log_debug(4, "Client capabilities", caps)


def get_client_capabilities():
    return rhnFlags.get('client-capabilities')


def update_client_capabilities(server_id):
    caps = get_client_capabilities()

    if caps is None:
        caps = {}

    caps = caps.copy()

    h = rhnSQL.prepare("""
        select cc.capability_name_id, ccn.name capability, cc.version
        from rhnClientCapability cc, rhnClientCapabilityName ccn
        where cc.server_id = :server_id
        and cc.capability_name_id = ccn.id
    """)

    updates = {'server_id': [], 'capability_name_id': [], 'version': []}
    deletes = {'server_id': [], 'capability_name_id': []}
    inserts = {'server_id': [], 'capability': [], 'version': []}

    h.execute(server_id=server_id)
    while 1:
        row = h.fetchone_dict()
        if not row:
            break

        name = row['capability']
        version = row['version']
        capability_name_id = row['capability_name_id']

        if name in caps:
            local_ver = caps[name]['version']
            del caps[name]
            if local_ver == version:
                # Nothing to do - same version
                continue

            updates['server_id'].append(server_id)
            updates['capability_name_id'].append(capability_name_id)
            updates['version'].append(local_ver)
            continue

        # Have to delete it
        deletes['server_id'].append(server_id)
        deletes['capability_name_id'].append(capability_name_id)

    # Everything else has to be inserted
    for name, hash in list(caps.items()):
        inserts['server_id'].append(server_id)
        inserts['capability'].append(name)
        inserts['version'].append(hash['version'])

    log_debug(5, "Deletes:", deletes)
    log_debug(5, "Updates:", updates)
    log_debug(5, "Inserts:", inserts)

    if deletes['server_id']:
        h = rhnSQL.prepare("""
            delete from rhnClientCapability
            where server_id = :server_id
            and capability_name_id = :capability_name_id
        """)
        h.executemany(**deletes)

    if updates['server_id']:
        h = rhnSQL.prepare("""
            update rhnClientCapability
            set version = :version
            where server_id = :server_id
            and capability_name_id = :capability_name_id
        """)
        h.executemany(**updates)

    if inserts['server_id']:
        h = rhnSQL.prepare("""
            insert into rhnClientCapability
            (server_id, capability_name_id, version)
            values (:server_id, LOOKUP_CLIENT_CAPABILITY(:capability), :version)
        """)
        h.executemany(**inserts)

    # Commit work. This can be dangerous if there is previously uncommited
    # work
    rhnSQL.commit()


def set_server_capabilities():
    try:
        _set_server_capabilities()
    except rhnSQL.SQLError:
        e = sys.exc_info()[1]
        if e.args[0] != 1:
            # Not a unique constraint violation
            raise
        # Try again
        _set_server_capabilities()


def _set_server_capabilities():
    # XXX Will have to figure out how to define this
    capabilities = {
        'registration.register_osad': {'version': 1, 'value': 1},
        'registration.finish_message': {'version': 1, 'value': 1},
        'registration.remaining_subscriptions': {'version': 1, 'value': 1},
        'registration.update_contact_info': {'version': 1, 'value': 1},
        'registration.delta_packages': {'version': 1, 'value': 1},
        'registration.extended_update_support': {'version': 1, 'value': 1},
        'registration.smbios': {'version': 1, 'value': 1},
        'registration.update_systemid': {'version': 1, 'value': 1},
        'applet.has_base_channel': {'version': 1, 'value': 1},
        'xmlrpc.login.extra_data': {'version': 1, 'value': 1},
        'rhncfg.content.base64_decode': {'version': 1, 'value': 1},
        'rhncfg.filetype.directory': {'version': 1, 'value': 1},
        'xmlrpc.packages.extended_profile': {'version': '1-2', 'value': 1},
        'xmlrpc.packages.suse_products': {'version': 1, 'value': 1},
        'xmlrpc.packages.checksums': {'version': 1, 'value': 1},
        'xmlrpc.errata.patch_names': {'version': 1, 'value': 1},
        'staging_content': {'version': 1, 'value': 1},
        'ipv6': {'version': 1, 'value': 1},
        'abrt': {'version': 1, 'value': 1},
        'cpu_sockets': {'version': 1, 'value': 1},
        'queue.update_status': {'version': 1, 'value': 1},
        'mainframe_sysinfo': {'version': 1, 'value': 1},
        'machine_info': {'version': 1, 'value': 1},
    }
    l = []
    for name, hashval in list(capabilities.items()):
        l.append("%s(%s)=%s" % (name, hashval['version'], hashval['value']))

    log_debug(4, "Setting capabilities", l)
    rhnFlags.get("outputTransportOptions")['X-RHN-Server-Capability'] = l
   070701000001AD000081B40000000000000000000000016290A0C100011B3B000000000000000000000000000000000000002700000000spacewalk-backend/server/rhnChannel.py    # -*- coding: utf-8 -*-
#
# Copyright (c) 2008--2017 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#
#

import time
import rpm
import sys
try:
    #  python 2
    import xmlrpclib
except ImportError:
    #  python3
    import xmlrpc.client as xmlrpclib

from uyuni.common.usix import IntType, raise_with_tb

# common module
from spacewalk.common import rhnCache, rhnFlags, suseLib
from spacewalk.common.rhnConfig import CFG
from spacewalk.common.rhnLog import log_debug, log_error
from spacewalk.common.rhnException import rhnFault, rhnException
from spacewalk.common.rhnTranslate import _

# local module
from . import rhnUser
from . import rhnSQL
from . import rhnLib


class NoBaseChannelError(Exception):
    pass


class InvalidServerArchError(Exception):
    pass


class BaseChannelDeniedError(Exception):
    pass


class ChannelException(Exception):

    def __init__(self, channel_id=None, *args, **kwargs):
        Exception.__init__(self, *args, **kwargs)
        self.channel_id = channel_id
        self.channel = None

class ModifiedError(ChannelException):
    pass


class IncompatibilityError(Exception):
    pass


class InvalidDataError(Exception):
    pass


class ChannelNotFoundError(Exception):
    pass


class NoToolsChannel(Exception):
    pass


class NoChildChannels(Exception):
    pass


class InvalidChannel(Exception):
    pass


class BaseDatabaseObject:

    def __init__(self):
        self._row = None

    def __getattr__(self, name):
        if name.startswith('get_'):
            return rhnLib.CallableObj(name[4:], self._get)
        if name.startswith('set_'):
            return rhnLib.CallableObj(name[4:], self._set)
        raise AttributeError(name)

    def _set(self, name, val):
        self._new_row()
        self._row[name] = val

    def _get(self, name):
        return self._row[name]

    def _new_row(self):
        raise NotImplementedError()

    def save(self, with_updates=1):
        try:
            return self._save(with_updates=with_updates)
        except:
            rhnSQL.rollback()
            raise

    def _save(self, with_updates=1):
        try:
            self._row.save(with_updates=with_updates)
        except rhnSQL.ModifiedRowError:
            raise_with_tb(ModifiedError(self._row['id']), sys.exc_info()[2])


class BaseChannelObject(BaseDatabaseObject):
    _table_name = None
    _sequence_name = None
    _generic_fields = []

    def load_by_label(self, label):
        self.__init__()
        self._row = rhnSQL.Row(self._table_name, 'label')
        self._row.load(label)
        return self

    def load_by_id(self, obj_id):
        self.__init__()
        self._row = rhnSQL.Row(self._table_name, 'id')
        self._row.load(obj_id)
        return self

    def load_from_dict(self, dict):
        # Re-init
        self.__init__()
        for f in self._generic_fields:
            method = getattr(self, 'set_' + f)
            method(dict.get(f))
        self._load_rest(dict)
        return self

    def _load_rest(self, dict):
        pass

    def exists(self):
        if not self._row:
            return 0
        return self._row.real

    def get_org_id(self):
        org_id = self._row['org_id']
        if org_id is None:
            return None
        row = self._lookup_org_id(org_id)
        if row.real:
            return row['login']
        return org_id

    def set_org_id(self, val):
        self._new_row()
        if val is None or isinstance(val, IntType):
            self._row['org_id'] = val
            return
        row = self._lookup_org_by_login(val)
        if not row.real:
            raise InvalidDataError("No such org", val)
        self._row['org_id'] = row['org_id']

    def _lookup_org_id(self, org_id):
        row = rhnSQL.Row('web_contact', 'org_id')
        row.load(org_id)
        return row

    def _lookup_org_by_login(self, login):
        row = rhnSQL.Row('web_contact', 'login')
        row.load(login)
        return row

    def _lookup_channel_family_by_id(self, channel_family_id):
        row = rhnSQL.Row('rhnChannelFamily', 'id')
        row.load(channel_family_id)
        return row

    def _lookup_channel_family_by_label(self, channel_family):
        row = rhnSQL.Row('rhnChannelFamily', 'label')
        row.load(channel_family)
        return row

    def _new_row(self):
        if self._row is None:
            self._row = rhnSQL.Row(self._table_name, 'id')
            channel_id = rhnSQL.Sequence(self._sequence_name).next()
            self._row.create(channel_id)

    def as_dict(self):
        ret = {}
        for f in self._generic_fields:
            method = getattr(self, 'get_' + f)
            val = method()
            ret[f] = val
        return ret

# Channel creation


class Channel(BaseChannelObject):
    _table_name = 'rhnChannel'
    _sequence_name = 'rhn_channel_id_seq'
    _generic_fields = ['label', 'name', 'summary', 'description', 'basedir',
                       'org_id', 'gpg_key_url', 'gpg_key_id', 'gpg_key_fp', 'end_of_life',
                       'channel_families', 'channel_arch', 'update_tag', ]

    def __init__(self):
        BaseChannelObject.__init__(self)
        self._channel_families = []
        self._dists = {}
        self._parent_channel_arch = None

    def load_by_label(self, label):
        BaseChannelObject.load_by_label(self, label)
        self._load_channel_families()
        self._load_dists()
        return self

    def load_by_id(self, label):
        BaseChannelObject.load_by_id(self, label)
        self._load_channel_families()
        self._load_dists()
        return self

    def _load_rest(self, dict):
        dists = dict.get('dists')
        if not dists:
            return
        for dist in dists:
            release = dist.get('release')
            os = dist.get('os')
            self._dists[release] = os

    _query_get_db_channel_families = rhnSQL.Statement("""
        select channel_family_id
          from rhnChannelFamilyMembers
         where channel_id = :channel_id
    """)

    def _get_db_channel_families(self, channel_id):
        if channel_id is None:
            return []
        h = rhnSQL.prepare(self._query_get_db_channel_families)
        h.execute(channel_id=channel_id)
        return [x['channel_family_id'] for x in h.fetchall_dict() or []]

    def _load_channel_families(self):
        channel_id = self._row.get('id')
        self._channel_families = self._get_db_channel_families(channel_id)
        return 1

    def _load_dists(self):
        channel_id = self._row.get('id')
        dists = self._get_db_dists(channel_id)
        self.set_dists(dists)

    _query_get_db_dists = rhnSQL.Statement("""
        select os, release
          from rhnDistChannelMap
         where channel_id = :channel_id
         and org_id is null
    """)

    def _get_db_dists(self, channel_id):
        if channel_id is None:
            return []
        h = rhnSQL.prepare(self._query_get_db_dists)
        h.execute(channel_id=channel_id)
        return h.fetchall_dict() or []

    # Setters

    def set_channel_arch(self, val):
        self._new_row()
        arch = self._sanitize_arch(val)
        row = self._lookup_channel_arch(arch)
        if not row.real:
            raise InvalidDataError("No such architecture", arch)
        self._row['channel_arch_id'] = row['id']

    def _sanitize_arch(self, arch):
        if arch == 'i386':
            return 'channel-ia32'
        p = 'channel-'
        if arch[:len(p)] != p:
            return p + arch
        return arch

    def set_parent_channel(self, val):
        self._new_row()
        if val is None:
            self._row['parent_channel'] = None
            return
        row = self._lookup_channel_by_label(val)
        if not row.real:
            raise InvalidDataError("Invalid parent channel", val)
        self._row['parent_channel'] = row['id']
        self._parent_channel_arch = row['channel_arch_id']

    def set_channel_families(self, val):
        self._new_row()
        self._channel_families = []
        for cf_label in val:
            self.add_channel_family(cf_label)

    def set_end_of_life(self, val):
        self._new_row()
        if val is None:
            self._row['end_of_life'] = None
            return
        t = time.strptime(val, "%Y-%m-%d")
        seconds = time.mktime(t)
        t = rhnSQL.TimestampFromTicks(seconds)
        self._row['end_of_life'] = t

    def add_channel_family(self, name):
        self._new_row()
        cf = self._lookup_channel_family_by_label(name)
        if not cf.real:
            raise InvalidDataError("Invalid channel family", name)
        self._channel_families.append(cf['id'])

    def add_dist(self, release, os=None):
        if os is None:
            os = 'SUSE Linux'
        self._dists[release] = os

    def set_dists(self, val):
        self._dists.clear()
        for h in val:
            release = h['release']
            os = h['os']
            self.add_dist(release, os)

    # Getters

    def get_parent_channel(self):
        pc_id = self._row['parent_channel']
        if pc_id is None:
            return None
        return self._lookup_channel_by_id(pc_id)['label']

    def get_channel_families(self):
        cf_labels = []
        for cf_id in self._channel_families:
            row = self._lookup_channel_family_by_id(cf_id)
            if row.real:
                cf_labels.append(row['label'])
        return cf_labels

    def get_channel_arch(self):
        channel_arch_id = self._row['channel_arch_id']
        row = self._lookup_channel_arch_by_id(channel_arch_id)
        assert row.real
        return row['label']

    def get_end_of_life(self):
        date_obj = self._row['end_of_life']
        if date_obj is None:
            return None
        return "%s-%02d-%02d %02d:%02d:%02d" % (
            date_obj.year, date_obj.month, date_obj.day,
            date_obj.hour, date_obj.minute, date_obj.second)

    def get_dists(self):
        ret = []
        for release, os in list(self._dists.items()):
            ret.append({'release': release, 'os': os})
        return ret

    def _lookup_channel_by_id(self, channel_id):
        row = rhnSQL.Row('rhnChannel', 'id')
        row.load(channel_id)
        return row

    def _lookup_channel_by_label(self, channel):
        row = rhnSQL.Row('rhnChannel', 'label')
        row.load(channel)
        return row

    def _lookup_channel_arch(self, channel_arch):
        row = rhnSQL.Row('rhnChannelArch', 'label')
        row.load(channel_arch)
        return row

    def _lookup_channel_arch_by_id(self, channel_arch_id):
        row = rhnSQL.Row('rhnChannelArch', 'id')
        row.load(channel_arch_id)
        return row

    def _save(self, with_updates=1):
        if self._parent_channel_arch:
            if not self._compatible_channel_arches(self._parent_channel_arch,
                                                   self._row['channel_arch_id']):
                raise IncompatibilityError("Incompatible channel arches")
        BaseChannelObject._save(self, with_updates=with_updates)
        # Save channel families now
        self._save_channel_families()
        self._save_dists()

    _query_remove_channel_families = rhnSQL.Statement("""
        delete from rhnChannelFamilyMembers
         where channel_id = :channel_id
           and channel_family_id = :channel_family_id
    """)
    _query_add_channel_families = rhnSQL.Statement("""
        insert into rhnChannelFamilyMembers (channel_id, channel_family_id)
        values (:channel_id, :channel_family_id)
    """)

    def _save_channel_families(self):
        channel_id = self._row['id']
        db_cfids = self._get_db_channel_families(channel_id)
        h = {}
        for db_cfid in db_cfids:
            h[db_cfid] = None
        to_add = []
        for cfid in self._channel_families:
            if cfid in h:
                del h[cfid]
                continue
            to_add.append(cfid)
        to_delete = list(h.keys())
        if to_delete:
            h = rhnSQL.prepare(self._query_remove_channel_families)
            cids = [channel_id] * len(to_delete)
            h.executemany(channel_id=cids, channel_family_id=to_delete)
        if to_add:
            h = rhnSQL.prepare(self._query_add_channel_families)
            cids = [channel_id] * len(to_add)
            h.executemany(channel_id=cids, channel_family_id=to_add)

    def _save_dists(self):
        channel_id = self._row['id']
        db_dists = self._get_db_dists(channel_id)
        d = self._dists.copy()
        to_add = [[], []]
        to_remove = []
        to_update = [[], []]
        for h in db_dists:
            release = h['release']
            os = h['os']
            if release not in d:
                to_remove.append(release)
                continue
            # Need to update?
            m_os = d[release]
            if m_os == os:
                # Nothing to do
                del d[release]
                continue
            to_update[0].append(release)
            to_update[1].append(os)
        # Everything else should be added
        for release, os in list(d.items()):
            to_add[0].append(release)
            to_add[1].append(os)
        self._remove_dists(to_remove)
        self._update_dists(to_update[0], to_update[1])
        self._add_dists(to_add[0], to_add[1])

    _query_add_dists = rhnSQL.Statement("""
        insert into rhnDistChannelMap
               (channel_id, channel_arch_id, release, os, org_id)
        values (:channel_id, :channel_arch_id, :release, :os, null)
        """)

    def _add_dists(self, releases, oses):
        self._modify_dists(self._query_add_dists, releases, oses)

    def _modify_dists(self, query, releases, oses):
        if not releases:
            return
        count = len(releases)
        channel_ids = [self._row['id']] * count
        query_args = {'channel_id': channel_ids, 'release': releases}
        if oses:
            channel_arch_ids = [self._row['channel_arch_id']] * count
            query_args.update({'channel_arch_id': channel_arch_ids,
                               'os': oses})
        h = rhnSQL.prepare(query)
        h.executemany(**query_args)

    _query_update_dists = rhnSQL.Statement("""
        update rhnDistChannelMap
           set channel_arch_id = :channel_arch_id,
               os = :os
         where channel_id = :channel_id
           and release = :release
           and org_id is null
    """)

    def _update_dists(self, releases, oses):
        self._modify_dists(self._query_update_dists, releases, oses)

    _query_remove_dists = rhnSQL.Statement("""
        delete from rhnDistChannelMap
         where channel_id = :channel_id
           and release = :release
           and org_id is null
    """)

    def _remove_dists(self, releases):
        self._modify_dists(self._query_remove_dists, releases, None)

    def _compatible_channel_arches(self, parent_channel_arch, channel_arch):
        # This could get more complicated later
        return (parent_channel_arch == channel_arch)

    def as_dict(self):
        ret = BaseChannelObject.as_dict(self)
        ret['dists'] = self.get_dists()
        return ret


class ChannelFamily(BaseChannelObject):
    _table_name = 'rhnChannelFamily'
    _sequence_name = 'rhn_channel_family_id_seq'
    _generic_fields = ['label', 'name', 'product_url']


def _load_by_id(query, item_object, pattern=None):
    qargs = {}
    if pattern:
        query += "and label like :pattern"
        qargs['pattern'] = pattern
    h = rhnSQL.prepare(query)
    h.execute(**qargs)
    ret = []
    while 1:
        row = h.fetchone_dict()
        if not row:
            break
        c = item_object.load_by_id(row['id'])
        ret.append(c.as_dict())
    return ret


def list_channel_families(pattern=None):
    query = """
            select id
              from rhnChannelFamily
             where org_id is null
        """
    return _load_by_id(query, ChannelFamily(), pattern)


def list_channels(pattern=None):
    query = """
            select id
              from rhnChannel
             where 1=1
        """
    return _load_by_id(query, Channel(), pattern)

# makes sure there are no None values in dictionaries, etc.


def __stringify(object):
    if object is None:
        return ''
    if type(object) == type([]):
        return list(map(__stringify, object))
    # We need to know __stringify converts immutable types into immutable
    # types
    if type(object) == type(()):
        return tuple(map(__stringify, object))
    if type(object) == type({}):
        ret = {}
        for k, v in list(object.items()):
            ret[__stringify(k)] = __stringify(v)
        return ret
    # by default, we just str() it
    return str(object)


# return the channel information
def channel_info(channel):
    log_debug(3, channel)

    # get the channel information
    h = rhnSQL.prepare("""
    select
        ca.label arch,
        c.id,
        c.parent_channel,
        c.org_id,
        c.label,
        c.name,
        c.summary,
        c.description,
        c.update_tag,
        to_char(c.last_modified, 'YYYYMMDDHH24MISS') last_modified
    from
        rhnChannel c,
        rhnChannelArch ca
    where
          c.channel_arch_id = ca.id
      and c.label = :channel
    """)
    h.execute(channel=str(channel))
    ret = h.fetchone_dict()
    return __stringify(ret)

# return information about a base channel for a server_id


def get_base_channel(server_id, none_ok=0):
    log_debug(3, server_id)
    h = rhnSQL.prepare("""
    select
        ca.label arch,
        c.id,
        c.parent_channel,
        c.org_id,
        c.label,
        c.name,
        c.summary,
        c.description,
        to_char(c.last_modified, 'YYYYMMDDHH24MISS') last_modified
    from rhnChannel c, rhnChannelArch ca, rhnServerChannel sc
    where sc.server_id = :server_id
      and sc.channel_id = c.id
      and c.channel_arch_id = ca.id
      and c.parent_channel is NULL
    """)
    h.execute(server_id=str(server_id))
    ret = h.fetchone_dict()
    if not ret:
        if not none_ok:
            log_error("Server not subscribed to a base channel!", server_id)
        return None
    return __stringify(ret)


def channels_for_server(server_id):
    """channel info list for all channels accessible by this server.

    list channels a server_id is subscribed to
    We DO NOT want to cache this one because we depend on getting
    accurate information and the caching would only introduce more
    overhead on an otherwise very fast query
    """
    log_debug(3, server_id)
    try:
        server_id = int(server_id)
    except:
        raise_with_tb(rhnFault(8, server_id), sys.exc_info()[2])  # Invalid rhnServer.id
    # XXX: need to return unsubsubcribed channels and a way to indicate
    #        they arent already subscribed

    # list all the channels this server is subscribed to. We also want
    # to know if any of those channels has local packages in it... A
    # local package has a org_id set.
    h = rhnSQL.prepare("""
    select
        ca.label arch,
        c.id,
        c.parent_channel,
        c.org_id,
        c.label,
        c.name,
        c.summary,
        c.description,
        c.gpg_key_url,
        case when c.gpg_check = 'Y' then 1 ELSE 0 end gpgcheck,
        :metadata_signed metadata_signed,
        case s.org_id when c.org_id then 1 else 0 end local_channel,
        TO_CHAR(c.last_modified, 'YYYYMMDDHH24MISS') last_modified
    from
        rhnChannelArch ca,
        rhnChannel c,
        rhnServerChannel sc,
        rhnServer s
    where
            c.id = sc.channel_id
        and sc.server_id = :server_id
        and s.id = :server_id
        and ca.id = c.channel_arch_id
    order by c.parent_channel nulls first
    """)
    h.execute(server_id=str(server_id), metadata_signed=(CFG.SIGN_METADATA == 1 and 1 or 0))
    channels = h.fetchall_dict()
    if not channels:
        log_error("Server not subscribed to any channels", server_id)
        channels = []
    return __stringify(channels)

def getSubscribedChannels(server_id):
    """
    Format the response from channels_for_server in the way that the
    handlers expect.
    """
    channelList = channels_for_server(server_id)
    channels = []
    for each in channelList:
        if 'last_modified' not in each:
            # No last_modified attribute
            # Probably an empty channel, so ignore
            continue
        channel = [each['label'], each['last_modified']]
        # isBaseChannel
        if each['parent_channel']:
            flag = "0"
        else:
            flag = "1"
        channel.append(flag)

        # isLocalChannel
        if each['local_channel']:
            flag = "1"
        else:
            flag = "0"
        channel.append(flag)

        channels.append(channel)
    return channels

def isCustomChannel(channel_id):
    """
    Input:      channel_id  (from DB Table rhnChannel.id)
    Returns:    True if this is a custom channel
            False if this is not a custom channel
    """
    log_debug(3, channel_id)
    h = rhnSQL.prepare("""
    select
        rcf.label
    from
        rhnChannelFamily rcf,
        rhnChannelFamilyMembers rcfm
    where
        rcfm.channel_id = :channel_id
        and rcfm.channel_family_id = rcf.id
        and rcf.org_id is not null
    """)
    h.execute(channel_id=str(channel_id))
    label = h.fetchone()
    if label:
        if label[0].startswith("private-channel-family"):
            log_debug(3, channel_id, "is a custom channel")
            return True
    return False


# Fetch base channel for a given release and arch
def base_channel_for_rel_arch(release, server_arch, org_id=-1,
                              user_id=None):
    log_debug(4, release, server_arch, org_id, user_id)

    query = """
        select ca.label arch,
               c.id,
               c.parent_channel,
               c.org_id,
               c.label,
               c.name,
               c.summary,
               c.description,
               to_char(c.last_modified, 'YYYYMMDDHH24MISS') last_modified
          from rhnChannel c,
               rhnChannelArch ca
        where c.channel_arch_id = ca.id
          and c.id = rhn_channel.base_channel_for_release_arch(
                :release, :server_arch, :org_id, :user_id)
    """
    rhnSQL.transaction("base_channel_for_rel_arch")
    h = rhnSQL.prepare(query)
    try:
        h.execute(release=str(release), server_arch=str(server_arch),
                  org_id=org_id, user_id=user_id)
    except rhnSQL.SQLSchemaError:
        e = sys.exc_info()[1]
        rhnSQL.rollback("base_channel_for_rel_arch")
        if e.errno == 20263:
            # Insufficient permissions for subscription
            log_debug(4, 'BaseChannelDeniedError')
            raise_with_tb(BaseChannelDeniedError(), sys.exc_info()[2])
        if e.errno == 20244:
            # Server architecture could not be found
            log_debug(4, 'InvalidServerArchError')
            raise_with_tb(InvalidServerArchError(str(server_arch)), sys.exc_info()[2])
        # Re-raise unknown eceptions
        log_debug(4, 'unkown exception')
        raise

    log_debug(4, 'got past exceptions')
    return h.fetchone_dict()


def base_eus_channel_for_ver_rel_arch(version, release, server_arch,
                                      org_id=-1, user_id=None):
    """
    given a redhat-release version, release, and server arch, return a list
    of dicts containing the details of the channel z streams either match the
    version/release pair, or are greater.
    """

    log_debug(4, version, release, server_arch, org_id, user_id)

    eus_channels_query = """
        select c.id,
               c.label,
               c.name,
               rcm.release,
               c.receiving_updates
        from
            rhnChannelPermissions cp,
            rhnChannel c,
            rhnServerArch sa,
            rhnServerChannelArchCompat scac,
            rhnReleaseChannelMap rcm
        where
                rcm.version = :version
            and scac.server_arch_id = sa.id
            and sa.label = :server_arch
            and scac.channel_arch_id = rcm.channel_arch_id
            and rcm.channel_id = c.id
            and cp.channel_id = c.id
            and cp.org_id = :org_id
            and rhn_channel.loose_user_role_check(c.id, :user_id,
                                                     'subscribe') = 1
    """

    eus_channels_prepared = rhnSQL.prepare(eus_channels_query)
    eus_channels_prepared.execute(version=version,
                                  server_arch=server_arch,
                                  user_id=user_id,
                                  org_id=org_id)

    channels = []
    while True:
        channel = eus_channels_prepared.fetchone_dict()
        if channel is None:
            break

        # the release part of redhat-release for rhel 4 is like
        # 6.1 or 7; we just look at the first digit.
        # for rhel 5 and up it's the full release number of rhel, followed by
        # the true release number of the rpm, like 5.0.0.9 (for the 9th
        # version of the redhat-release rpm, for RHEL GA)
        db_release = channel['release']
        if version in ['4AS', '4ES']:
            parts = 1
        else:
            parts = 2

        server_rel = '.'.join(release.split('-')[0].split('.')[:parts])
        channel_rel = '.'.join(db_release.split('-')[0].split('.')[:parts])

        # XXX we're no longer using the is_default column from the db
        if rpm.labelCompare(('0', server_rel, '0'),
                            ('0', channel_rel, '0')) == 0:
            channel['is_default'] = 'Y'
            channels.append(channel)
        if rpm.labelCompare(('0', server_rel, '0'),
                            ('0', channel_rel, '0')) < 0:
            channel['is_default'] = 'N'
            channels.append(channel)

    return channels


def get_channel_for_release_arch(release, server_arch, org_id=None):
    log_debug(3, release, server_arch)

    server_arch = rhnLib.normalize_server_arch(str(server_arch))
    log_debug(3, 'normalized arch as %s' % server_arch)

    if org_id is None:
        query = """
            select distinct
                   ca.label arch,
                   c.id,
                   c.parent_channel,
                   c.org_id,
                   c.label,
                   c.name,
                   c.summary,
                   c.description,
                   to_char(c.last_modified, 'YYYYMMDDHH24MISS') last_modified
              from rhnDistChannelMap dcm,
                   rhnChannel c,
                   rhnChannelArch ca,
                   rhnServerChannelArchCompat scac,
                   rhnServerArch sa
             where scac.server_arch_id = sa.id
               and sa.label = :server_arch
               and scac.channel_arch_id = dcm.channel_arch_id
               and dcm.release = :release
               and dcm.channel_id = c.id
               and dcm.channel_arch_id = c.channel_arch_id
               and dcm.org_id is null
               and c.parent_channel is null
               and c.org_id is null
               and c.channel_arch_id = ca.id
        """
    else:
        query = """
            select distinct
                   ca.label arch,
                   c.id,
                   c.parent_channel,
                   c.org_id,
                   c.label,
                   c.name,
                   c.summary,
                   c.description,
                   to_char(c.last_modified, 'YYYYMMDDHH24MISS') last_modified
              from rhnOrgDistChannelMap odcm,
                   rhnChannel c,
                   rhnChannelArch ca,
                   rhnServerChannelArchCompat scac,
                   rhnServerArch sa
             where scac.server_arch_id = sa.id
               and sa.label = :server_arch
               and scac.channel_arch_id = odcm.channel_arch_id
               and odcm.release = :release
               and odcm.channel_id = c.id
               and odcm.channel_arch_id = c.channel_arch_id
               and odcm.org_id = :org_id
               and c.parent_channel is null
               and c.org_id is null
               and c.channel_arch_id = ca.id
        """
    h = rhnSQL.prepare(query)
    h.execute(release=str(release), server_arch=server_arch, org_id=org_id)
    row = h.fetchone_dict()
    if not row:
        # No channles for this guy
        log_debug(3, 'No channles for this guy')
        return None
    log_debug(3, 'row is %s' % str(row))
    return row


def applet_channels_for_uuid(uuid):
    log_debug(3, uuid)

    query = """
        select distinct
               ca.label arch,
               c.id,
               c.parent_channel,
               c.org_id,
               c.label,
               c.name,
               c.summary,
               c.description,
               to_char(c.last_modified, 'YYYYMMDDHH24MISS') last_modified,
               to_char(s.channels_changed, 'YYYYMMDDHH24MISS') server_channels_changed
          from rhnChannelArch ca,
               rhnChannel c,
               rhnServerChannel sc,
               rhnServer s,
               rhnServerUuid su
         where su.uuid = :uuid
           and su.server_id = s.id
           and su.server_id = sc.server_id
           and sc.channel_id = c.id
           and c.channel_arch_id = ca.id
    """
    h = rhnSQL.prepare(query)
    h.execute(uuid=uuid)
    rows = h.fetchall_dict() or []
    return rows

# retrieve a list of public channels for a given release and architecture
# we cannot cache this if it involves an org_id
# If a user_id is passed to this function, and all the available base channels
# for this server_arch/release combination are denied by the org admin, this
# function raises BaseChannelDeniedError


def channels_for_release_arch(release, server_arch, org_id=-1, user_id=None):
    if not org_id:
        org_id = -1

    org_id = str(org_id).strip()
    log_debug(3, release, server_arch, org_id)

    # Can raise BaseChannelDeniedError or InvalidServerArchError
    base_channel = base_channel_for_rel_arch(release, server_arch,
                                             org_id=org_id, user_id=user_id)

    if not base_channel:
        raise NoBaseChannelError()

    # At this point, base_channel is not null

    # We assume here that subchannels are compatible with the base channels,
    # so there would be no need to check for arch compatibility from this
    # point
    h = rhnSQL.prepare("""
    select
        ca.label arch,
        c.id,
        c.parent_channel,
        c.org_id,
        c.label,
        c.name,
        c.summary,
        c.description,
        to_char(c.last_modified, 'YYYYMMDDHH24MISS') last_modified,
        -- If user_id is null, then the channel is subscribable
        rhn_channel.loose_user_role_check(c.id, :user_id, 'subscribe')
            subscribable
    from
        rhnChannelPermissions cp,
        rhnOrgDistChannelMap odcm,
        rhnChannel c,
        rhnChannelArch ca
    where
        c.id = odcm.channel_id
    and odcm.os in (
        'Powertools'
    )
    and odcm.for_org_id = :org_id
    and c.channel_arch_id = ca.id
    and cp.channel_id = c.id
    and cp.org_id = :org_id
    and c.parent_channel = :parent_channel
    """)
    h.execute(org_id=org_id,
              parent_channel=base_channel['id'], user_id=user_id)

    channels = [base_channel]
    while 1:
        row = h.fetchone_dict()
        if not row:
            break
        subscribable = row['subscribable']
        del row['subscribable']

        if not subscribable:
            # Not allowed to subscribe to this channel
            continue

        channels.append(row)

    return __stringify(channels)


_query_get_source_packages_from_ids = rhnSQL.Statement("""
    select srpm.name
      from rhnChannelPackage cp,
           rhnPackage p,
           rhnSourceRPM srpm
     where cp.channel_id = :channel_id
       and cp.package_id = p.id
       and p.source_rpm_id = srpm.id
""")


def list_packages_source(channel_id):
    ret = []
    h = rhnSQL.prepare(_query_get_source_packages_from_ids)
    h.execute(channel_id=channel_id)
    results = h.fetchall_dict()
    if results:
        for r in results:
            r = r['name']
            if r.find(".rpm") != -1:
                r = r.replace(".rpm", "")
                new_evr = rhnLib.make_evr(r, source=1)
                new_evr_list = [new_evr['name'], new_evr['version'], new_evr['release'], new_evr['epoch']]
            ret.append(new_evr_list)

    return ret

# the latest packages from the specified channel
_query_all_packages_from_channel_checksum = """
    select
        p.id,
        pn.name,
        pevr.version,
        pevr.release,
        pevr.epoch,
        pa.label arch,
        p.package_size,
        ct.label as checksum_type,
        c.checksum
    from
        rhnChannelPackage cp,
        rhnPackage p,
        rhnPackageName pn,
        rhnPackageEVR pevr,
        rhnPackageArch pa,
        rhnChecksumType ct,
        rhnChecksum c
    where
        cp.channel_id = :channel_id
    and cp.package_id = p.id
    and p.name_id = pn.id
    and p.evr_id = pevr.id
    and p.package_arch_id = pa.id
    and p.checksum_id = c.id
    and c.checksum_type_id = ct.id
    order by pn.name, pevr.evr desc, pa.label
    """

# This function executes the SQL call for listing packages with checksum info


def list_all_packages_checksum_sql(channel_id):
    log_debug(3, channel_id)
    h = rhnSQL.prepare(_query_all_packages_from_channel_checksum)
    h.execute(channel_id=str(channel_id))
    ret = h.fetchall_dict()
    if not ret:
        return []
    # process the results
    ret = [(a["name"], a["version"], a["release"], a["epoch"],
                         a["arch"], a["package_size"], a['checksum_type'],
                         a['checksum']) for a in __stringify(ret)]
    return ret

# This function executes the SQL call for listing latest packages with
# checksum info


def list_packages_checksum_sql(channel_id):
    log_debug(3, channel_id)
    # return the latest packages from the specified channel
    query = """
    select
        pn.name,
        pevr.version,
        pevr.release,
        pevr.epoch,
        pa.label arch,
        full_channel.package_size,
        full_channel.checksum_type,
        full_channel.checksum
    from
        rhnPackageArch pa,
        ( select
            p.name_id,
            max(pe.evr) evr
          from
            rhnChannelPackage cp,
            rhnPackage p,
            rhnPackageEVR pe
          where
              cp.channel_id = :channel_id
          and cp.package_id = p.id
          and p.evr_id = pe.id
          group by p.name_id
        ) listall,
        ( select distinct
            p.package_size,
            p.name_id,
            p.evr_id,
            p.package_arch_id,
            ct.label as checksum_type,
            c.checksum
          from
            rhnChannelPackage cp,
            rhnPackage p,
            rhnChecksumType ct,
            rhnChecksum c
          where
              cp.channel_id = :channel_id
          and cp.package_id = p.id
          and p.checksum_id = c.id
          and c.checksum_type_id = ct.id
        ) full_channel,
        -- Rank the package's arch
        ( select
            package_arch_id,
            count(*) rank
          from
            rhnServerPackageArchCompat
          group by package_arch_id
        ) arch_rank,
        rhnPackageName pn,
        rhnPackageEVR pevr
    where
        pn.id = listall.name_id
        -- link back to the specific package
    and full_channel.name_id = listall.name_id
    and full_channel.evr_id = pevr.id
    and pevr.evr = listall.evr
    and pa.id = full_channel.package_arch_id
    and pa.id = arch_rank.package_arch_id
    order by pn.name, arch_rank.rank desc
    """
    h = rhnSQL.prepare(query)
    h.execute(channel_id=str(channel_id))
    ret = h.fetchall_dict()
    if not ret:
        return []
    # process the results
    ret = [(a["name"], a["version"], a["release"], a["epoch"],
                         a["arch"], a["package_size"], a['checksum_type'],
                         a['checksum']) for a in __stringify(ret)]
    return ret

# This function executes the SQL call for listing packages


def _list_packages_sql(query, channel_id):
    h = rhnSQL.prepare(query)
    h.execute(channel_id=str(channel_id))
    ret = h.fetchall_dict()
    if not ret:
        return []
    # process the results
    ret = [(a["name"], a["version"], a["release"], a["epoch"],
                         a["arch"], a["package_size"]) for a in __stringify(ret)]
    return ret


def list_packages_sql(channel_id):
    log_debug(3, channel_id)
    # return the latest packages from the specified channel
    query = """
    select
        pn.name,
        pevr.version,
        pevr.release,
        pevr.epoch,
        pa.label arch,
        full_channel.package_size
    from
        rhnPackageArch pa,
        ( select
            p.name_id,
            max(pe.evr) evr
          from
            rhnChannelPackage cp,
            rhnPackage p,
            rhnPackageEVR pe
          where
              cp.channel_id = :channel_id
          and cp.package_id = p.id
          and p.evr_id = pe.id
          group by p.name_id
        ) listall,
        ( select distinct
            p.package_size,
            p.name_id,
            p.evr_id,
            p.package_arch_id
          from
            rhnChannelPackage cp,
            rhnPackage p
          where
              cp.channel_id = :channel_id
          and cp.package_id = p.id
        ) full_channel,
        -- Rank the package's arch
        ( select
            package_arch_id,
            count(*) rank
          from
            rhnServerPackageArchCompat
          group by package_arch_id
        ) arch_rank,
        rhnPackageName pn,
        rhnPackageEVR pevr
    where
        pn.id = listall.name_id
        -- link back to the specific package
    and full_channel.name_id = listall.name_id
    and full_channel.evr_id = pevr.id
    and pevr.evr = listall.evr
    and pa.id = full_channel.package_arch_id
    and pa.id = arch_rank.package_arch_id
    order by pn.name, arch_rank.rank desc
    """
    return _list_packages_sql(query, channel_id)

# the latest packages from the specified channel
_query_latest_packages_from_channel = """
    select
        p.id,
        pn.name,
        pevr.version,
        pevr.release,
        pevr.epoch,
        pa.label arch,
        p.package_size
    from
        rhnChannelPackage cp,
        rhnPackage p,
        rhnPackageName pn,
        rhnPackageEVR pevr,
        rhnPackageArch pa
    where
        cp.channel_id = :channel_id
    and cp.package_id = p.id
    and p.name_id = pn.id
    and p.evr_id = pevr.id
    and p.package_arch_id = pa.id
    order by pn.name, pevr.evr desc, pa.label
    """

# This function executes the SQL call for listing packages


def list_all_packages_sql(channel_id):
    log_debug(3, channel_id)
    return _list_packages_sql(_query_latest_packages_from_channel, channel_id)

# This function executes the SQL call for listing packages with all the
# dep information for each package also


def list_all_packages_complete_sql(channel_id):
    log_debug(3, channel_id)
    # return the latest packages from the specified channel
    h = rhnSQL.prepare(_query_latest_packages_from_channel)
    # This gathers the provides, requires, conflicts, obsoletes info
    g = rhnSQL.prepare("""
    select
       pp.package_id,
       'provides' as capability_type,
       pp.capability_id,
       pp.sense,
       pc.name,
       pc.version
    from
       rhnPackageProvides pp,
       rhnPackageCapability pc
    where
       pp.package_id = :package_id
       and pp.capability_id = pc.id
    union all
    select
       pr.package_id,
       'requires' as capability_type,
       pr.capability_id,
       pr.sense,
       pc.name,
       pc.version
    from
       rhnPackageRequires pr,
       rhnPackageCapability pc
    where
       pr.package_id = :package_id
       and pr.capability_id = pc.id
    union all
    select
       prec.package_id,
       'recommends' as capability_type,
       prec.capability_id,
       prec.sense,
       pc.name,
       pc.version
    from
       rhnPackageRecommends prec,
       rhnPackageCapability pc
    where
       prec.package_id = :package_id
       and prec.capability_id = pc.id
    union all
    select
       sugg.package_id,
       'suggests' as capability_type,
       sugg.capability_id,
       sugg.sense,
       pc.name,
       pc.version
    from
       rhnPackageSuggests sugg,
       rhnPackageCapability pc
    where
       sugg.package_id = :package_id
       and sugg.capability_id = pc.id
    union all
    select
       supp.package_id,
       'supplements' as capability_type,
       supp.capability_id,
       supp.sense,
       pc.name,
       pc.version
    from
       rhnPackageSupplements supp,
       rhnPackageCapability pc
    where
       supp.package_id = :package_id
       and supp.capability_id = pc.id
    union all
    select
       enh.package_id,
       'enhances' as capability_type,
       enh.capability_id,
       enh.sense,
       pc.name,
       pc.version
    from
       rhnPackageEnhances enh,
       rhnPackageCapability pc
    where
       enh.package_id = :package_id
       and enh.capability_id = pc.id
    union all
    select
       pcon.package_id,
       'conflicts' as capability_type,
       pcon.capability_id,
       pcon.sense,
       pc.name,
       pc.version
    from
       rhnPackageConflicts pcon,
       rhnPackageCapability pc
    where
       pcon.package_id = :package_id
       and pcon.capability_id = pc.id
    union all
    select
       po.package_id,
       'obsoletes' as capability_type,
       po.capability_id,
       po.sense,
       pc.name,
       pc.version
    from
       rhnPackageObsoletes po,
       rhnPackageCapability pc
    where
       po.package_id = :package_id
       and po.capability_id = pc.id
    union all
    select
       brks.package_id,
       'breaks' as capability_type,
       brks.capability_id,
       brks.sense,
       pc.name,
       pc.version
    from
       rhnPackageBreaks brks,
       rhnPackageCapability pc
    where
       brks.package_id = :package_id
       and brks.capability_id = pc.id
    union all
    select
       pdep.package_id,
       'predepends' as capability_type,
       pdep.capability_id,
       pdep.sense,
       pc.name,
       pc.version
    from
       rhnPackagePredepends pdep,
       rhnPackageCapability pc
    where
       pdep.package_id = :package_id
       and pdep.capability_id = pc.id
    """)

    h.execute(channel_id=str(channel_id))
    # XXX This query has to order the architectures somehow; the 7.2 up2date
    # client was broken and was selecting the wrong architecture if athlons
    # are passed first. The rank ordering here should make sure that i386
    # kernels appear before athlons.
    ret = h.fetchall_dict()
    if not ret:
        return []
    for pkgi in ret:
        pkgi['provides'] = []
        pkgi['requires'] = []
        pkgi['conflicts'] = []
        pkgi['obsoletes'] = []
        pkgi['recommends'] = []
        pkgi['suggests'] = []
        pkgi['supplements'] = []
        pkgi['enhances'] = []
        pkgi['breaks'] = []
        pkgi['predepends'] = []
        g.execute(package_id=pkgi["id"])
        deps = g.fetchall_dict() or []
        for item in deps:
            version = item['version'] or ""
            relation = ""
            if version:
                sense = item['sense'] or 0
                if sense & 2:
                    relation = relation + "<"
                if sense & 4:
                    relation = relation + ">"
                if sense & 8:
                    relation = relation + "="
                if relation:
                    relation = " " + relation
                if version:
                    version = " " + version
            dep = item['name'] + relation + version
            pkgi[item['capability_type']].append(dep)
    # process the results
    ret = [(a["name"], a["version"], a["release"], a["epoch"],
                         a["arch"], a["package_size"], a['provides'],
                         a['requires'], a['conflicts'], a['obsoletes'], a['recommends'], a['suggests'], a['supplements'], a['enhances'], a['breaks'], a['predepends']) for a in __stringify(ret)]
    return ret


def list_packages_path(channel_id):
    log_debug(3, channel_id)
    # return the latest packages from the specified channel
    h = rhnSQL.prepare("""
    select
        p.path
    from
        rhnPackage p,
        rhnChannelPackage cp
    where
        cp.channel_id = :channel_id
    and cp.package_id = p.id
    """)
    h.execute(channel_id=str(channel_id))
    ret = h.fetchall()
    if not ret:
        return []
    # process the results
    # ret = map(lambda a: (a["path"]),
        # __stringify(ret))
    return ret


# list the latest packages for a channel
def list_packages(channel):
    return _list_packages(channel, cache_prefix="list_packages",
                          function=list_packages_sql)

# list _all_ the packages for a channel


def list_all_packages(channel):
    return _list_packages(channel, cache_prefix="list_all_packages",
                          function=list_all_packages_sql)

# list _all_ the packages for a channel, including checksum info


def list_all_packages_checksum(channel):
    return _list_packages(channel, cache_prefix="list_all_packages_checksum",
                          function=list_all_packages_checksum_sql)

# list _all_ the packages for a channel


def list_all_packages_complete(channel):
    return _list_packages(channel, cache_prefix="list_all_packages_complete",
                          function=list_all_packages_complete_sql)

# Common part of list_packages and list_all_packages*
# cache_prefix is the prefix for the file name we're caching this request as
# function is the generator function


def _list_packages(channel, cache_prefix, function):
    log_debug(3, channel, cache_prefix)

    # try the caching thing first
    c_info = channel_info(channel)
    if not c_info:  # unknown channel
        raise rhnFault(40, "could not find any data on channel '%s'" % channel)
    cache_entry = "%s-%s" % (cache_prefix, channel)
    ret = rhnCache.get(cache_entry, c_info["last_modified"])
    if ret:  # we scored a cache hit
        log_debug(4, "Scored cache hit", channel)
        # Mark the response as being already XMLRPC-encoded
        rhnFlags.set("XMLRPC-Encoded-Response", 1)
        return ret

    ret = function(c_info["id"])
    if not ret:
        # we assume that channels with no packages are very fast to list,
        # so we don't bother caching...
        log_error("No packages found in channel",
                  c_info["id"], c_info["label"])
        return []
    # we need to append the channel label to the list
    ret = list(map(lambda a, c=channel: a + (c,), ret))
    ret = xmlrpclib.dumps((ret, ), methodresponse=1)
    # Mark the response as being already XMLRPC-encoded
    rhnFlags.set("XMLRPC-Encoded-Response", 1)
    # set the cache
    rhnCache.set(cache_entry, ret, c_info["last_modified"])
    return ret


def getChannelInfoForKickstart(kickstart):
    query = """
    select c.label,
           to_char(c.last_modified, 'YYYYMMDDHH24MISS') last_modified
      from rhnChannel c,
           rhnKickstartableTree kt
     where c.id = kt.channel_id
       and kt.label = :kickstart_label
    """
    h = rhnSQL.prepare(query)
    h.execute(kickstart_label=str(kickstart))
    return h.fetchone_dict()


def getChannelInfoForKickstartOrg(kickstart, org_id):
    query = """
    select c.label,
           to_char(c.last_modified, 'YYYYMMDDHH24MISS') last_modified
      from rhnChannel c,
           rhnKickstartableTree kt
     where c.id = kt.channel_id
       and kt.label = :kickstart_label
       and kt.org_id = :org_id
    """
    h = rhnSQL.prepare(query)
    h.execute(kickstart_label=str(kickstart), org_id=int(org_id))
    return h.fetchone_dict()


def getChannelInfoForKickstartSession(session):
    # decode the session string
    try:
        session_id = int(session.split('x')[0].split(':')[0])
    except Exception:
        return None, None

    query = """
    select c.label,
           to_char(c.last_modified, 'YYYYMMDDHH24MISS') last_modified
      from rhnChannel c,
           rhnKickstartableTree kt,
           rhnKickstartSession ks
     where c.id = kt.channel_id
       and kt.id = ks.kstree_id
       and ks.id = :session_id
    """
    h = rhnSQL.prepare(query)
    h.execute(session_id=session_id)
    return h.fetchone_dict()


def getChildChannelInfoForKickstart(kickstart, child):
    query = """
    select c.label,
           to_char(c.last_modified, 'YYYYMMDDHH24MISS') last_modified
      from rhnChannel c,
           rhnKickstartableTree kt,
           rhnKickstartSession ks,
           rhnChannel c2
     where c2.id = kt.channel_id
       and kt.label = :kickstart_label
       and c.label = :child_label
       and c.parent_channel = c2.id
    """
    h = rhnSQL.prepare(query)
    h.execute(kickstart_label=str(kickstart), child_label=str(child))
    return h.fetchone_dict()


def getChannelInfoForTinyUrl(tinyurl):
    query = """
    select tu.url
      from rhnTinyUrl tu
     where tu.enabled = 'Y'
       and tu.token = :tinyurl
    """
    h = rhnSQL.prepare(query)
    h.execute(tinyurl=str(tinyurl))
    return h.fetchone_dict()

# list the obsoletes for a channel


def list_obsoletes(channel):
    log_debug(3, channel)

    # try the caching thing first
    c_info = channel_info(channel)
    if not c_info:  # unknown channel
        raise rhnFault(40, "could not find any data on channel '%s'" % channel)
    cache_entry = "list_obsoletes-%s" % channel
    ret = rhnCache.get(cache_entry, c_info["last_modified"])
    if ret:  # we scored a cache hit
        log_debug(4, "Scored cache hit", channel)
        return ret

    # Get the obsoleted packages
    h = rhnSQL.prepare("""
        select  distinct
                pn.name,
                pe.version, pe.release, pe.epoch,
                pa.label arch,
                pc.name obsolete_name,
                pc.version obsolete_version,
                p_info.sense
        from    rhnPackageCapability pc,
                rhnPackageArch pa,
                rhnPackageEVR pe,
                rhnPackageName pn,
                rhnPackage p,
                (   select  cp.channel_id,
                            po.package_id, po.capability_id, po.sense
                    from    rhnPackageObsoletes po,
                            rhnChannelPackage cp,
                            rhnChannel c
                    where   1=1
                        and c.label = :channel
                        and c.id = cp.channel_id
                        and cp.package_id = po.package_id
                ) p_info
        where   1=1
            and p_info.package_id = p.id
            and p.name_id = pn.id
            and p.evr_id = pe.id
            and p.package_arch_id = pa.id
            and p_info.capability_id = pc.id
    """)
    h.execute(channel=str(channel))
    # Store stuff in a dictionary to makes things simpler
    hash = {}
    while 1:
        row = h.fetchone_dict()
        if not row:
            break
        row = __stringify(row)
        key = (row['name'], row['version'], row['release'],
               row["epoch"], row['arch'])
        value = key + (row['obsolete_name'], row['obsolete_version'],
                       row['sense'])
        if key not in hash:
            hash[key] = []
        hash[key].append(value)

    # Now grab a listall and match it against what we got
    pkglist = list_packages_sql(c_info["id"])
    result = []
    for pkg in pkglist:
        key = tuple(pkg[:5])
        if key in hash:
            for p in hash[key]:
                result.append(p)
    # we can cache this now
    rhnCache.set(cache_entry, result, c_info["last_modified"])
    return result


def __auth_user(server_id, username, password):
    """ Auth if user can add/remove channel from given server """
    log_debug(3, server_id, username)
    # check the username and password for compliance
    user = rhnUser.auth_username_password(username, password)
    # The user's password checks, verify that they have perms on that
    # server.
    h = rhnSQL.prepare("""
    select 1
    from rhnUserServerPerms usp
    where usp.user_id = :user_id
    and   usp.server_id = :server_id
    """)
    h.execute(user_id=str(user.getid()), server_id=str(server_id))
    res = h.fetchone_dict()
    if not res:
        # Not allowed to perform administrative tasks on this server
        raise rhnFault(37)
    return 1


# small wrapper around a PL/SQL function
def subscribe_sql(server_id, channel_id, commit=1):
    log_debug(3, server_id, channel_id, commit)
    subscribe_channel = rhnSQL.Procedure("rhn_channel.subscribe_server")
    try:
        # don't run the EC yet
        subscribe_channel(server_id, channel_id, 0)
    except rhnSQL.SQLSchemaError:
        e = sys.exc_info()[1]
        if e.errno == 20102:  # channel_server_one_base
            log_error("Channel subscribe failed, "
                      "%s already subscribed to %s (?)" % (server_id, channel_id))
            raise_with_tb(rhnFault(38, "Server already subscribed to %s" % channel_id), sys.exc_info()[2])
        # If we got here, it's an unknown error; ISE (for now)
        log_error("SQLSchemaError", e)
        raise_with_tb(rhnException(e), sys.exc_info()[2])
    except rhnSQL.SQLError:
        e = sys.exc_info()[1]
        # If we got here, it's an unknown error; ISE (for now)
        log_error("SQLError", e)
        raise_with_tb(rhnException(e), sys.exc_info()[2])
    if commit:
        rhnSQL.commit()
    return 1

_query_channel_details = rhnSQL.Statement("""
select c.id, c.label, c.parent_channel
  from rhnChannel c
 where c.label = :channel
""")

_query_server_parent_channel = rhnSQL.Statement("""
select pc.id, pc.label
  from rhnChannel c
  join rhnServerChannel sc on c.parent_channel = sc.channel_id
  join rhnChannel pc on c.parent_channel = pc.id
 where sc.server_id = :sid
 group by pc.id, pc.label
""")

_query_can_subscribe = rhnSQL.Statement("""
select rhn_channel.user_role_check(:cid, wc.id, 'subscribe') as can_subscribe
  from web_contact wc
 where wc.login_uc = upper(:username)
""")

# subscribe a server to a channel with authentication
def subscribe_channel(server_id, channel, username, password):
    log_debug(3, server_id, channel, username)
    # If auth doesn't blow up we're fine
    __auth_user(server_id, username, password)

    # get channel details
    h = rhnSQL.prepare(_query_channel_details)
    h.execute(channel=str(channel))
    channel_details = h.fetchone_dict()
    if not channel_details:
        log_error("Channel %s does not exist?" % channel)
        raise rhnFault(40, "Channel %s does not exist?" % channel)

    # get server's parent channel
    h = rhnSQL.prepare(_query_server_parent_channel)
    h.execute(sid=server_id)
    server_parent_channel = h.fetchone_dict()

    # Can't add more than one parent or child of parent channel to which server isn't subscibed
    if not channel_details['parent_channel'] and server_parent_channel:
            log_error("Cannot add parent channel %s. Server already subscribed to parent channel %s." %
                      (channel, server_parent_channel['label']))
            raise rhnFault(32, "Cannot add parent channel %s. Server already subscribed to parent channel %s." %
                      (channel, server_parent_channel['label']))
    else:
        if ( server_parent_channel and
             server_parent_channel['id'] != channel_details['parent_channel'] ):
            log_error("Server is not subscribed to parent of channel %s." % channel)
            raise rhnFault(32, "Server is not subscribed to parent of channel %s." % channel)

    # check specific channel subscription permissions
    h = rhnSQL.prepare(_query_can_subscribe)
    h.execute(cid=channel_details['id'], username=username)
    ret = h.fetchone_dict()

    if ret and ret['can_subscribe']:
        subscribe_sql(server_id, channel_details['id'])
        return 1

    raise rhnFault(71)


# This class is only a convenient encapsulation of a server's attributes:
# server_id, org_id, release, arch, user_id. Sometimes we only pass the
# server_id, and later down the road we have to message "no channel for
# release foo, arch bar", but we don't know the release and arch anymore
class LiteServer:
    _attributes = ['id', 'org_id', 'release', 'arch', 'suse_products']

    def __init__(self, **kwargs):
        # Initialize attributes from **kwargs (set to None if value is not
        # present)
        for attr in self._attributes:
            setattr(self, attr, kwargs.get(attr))

    def init_from_server(self, server):
        self.id = server.getid()
        self.org_id = server.server['org_id']
        self.release = server.server['release']
        self.suse_products = server.get_suse_products()
        self.arch = server.archname
        return self

    def get_suse_products(self):
        return self.suse_products

    def add_suse_products(self, suse_products):
        log_debug(1, suse_products)
        if isinstance(suse_products, dict):
            self.suse_products = suse_products['products']
        elif isinstance(suse_products, list):
            self.suse_products = suse_products

    def __repr__(self):
        dict = {}
        for attr in self._attributes:
            dict[attr] = getattr(self, attr)
        return "<%s instance at %s: attributes=%s>" % (
            self.__class__.__name__, id(self), dict)


def guess_suse_channels_for_server(server, org_id=None, user_id=None, raise_exceptions=0):
    log_debug(3, server)
    suse_products = server.get_suse_products()
    if len(suse_products) == 0:
        return None

    baseproduct = None
    for product in suse_products:
        if product['baseproduct'] == 'Y':
            baseproduct = product

    if not baseproduct:
        log_error("Missing baseproduct in ", server)
        return None

    all_products = []
    rootProductId = suseLib.findProduct(baseproduct)
    exts = suseLib.findAllExtensionProductsOf(rootProductId, rootProductId)
    while len(exts) > 0:
        all_products = all_products + exts
        exts_next = []
        for ext in exts:
            exts_next = exts_next + suseLib.findAllExtensionProductsOf(ext.pop("id", None), rootProductId)
        exts = exts_next

    basechannels = suseLib.channelForProduct(baseproduct, user_id=user_id, org_id=org_id)
    if not basechannels or basechannels == []:
        return None
    bc = basechannels[0]

    # search childchannels of the base product which should be added too
    childchannels = {}
    for product in suse_products + all_products:
        ccs = suseLib.channelForProduct(product, bc['id'], user_id=user_id, org_id=org_id)
        if ccs:
            for cc in ccs:
                childchannels[cc['id']] = cc

    channels = [bc]
    for chan in list(childchannels.values()):
        channels.append(chan)

    return __stringify(channels)

# If raise_exceptions is set, BaseChannelDeniedError, NoBaseChannelError are
# raised
def guess_channels_for_server(server, user_id=None, none_ok=0,
                              raise_exceptions=0):
    log_debug(3, server)
    if not isinstance(server, LiteServer):
        raise rhnException("Server object is not a LiteServer")
    if None in (server.org_id, server.release, server.arch):
        # need to obtain the release and/or arch and/or org_id
        h = rhnSQL.prepare("""
        select s.org_id, s.release, sa.label arch
        from rhnServer s, rhnServerArch sa
        where s.id = :server_id and s.server_arch_id = sa.id
        """)
        h.execute(server_id=server.id)
        ret = h.fetchone_dict()
        if not ret:
            log_error("Could not get the release/arch "
                      "for server %s" % server.id)
            raise rhnFault(8, "Could not find the release/arch "
                           "for server %s" % server.id)
        if server.org_id is None:
            server.org_id = ret["org_id"]
        if server.release is None:
            server.release = ret["release"]
        if server.arch is None:
            server.arch = ret["arch"]

    suse_channels = guess_suse_channels_for_server(server, server.org_id, user_id, raise_exceptions)
    if suse_channels:
        return suse_channels

    if raise_exceptions and not none_ok:
        # Let exceptions pass through
        return channels_for_release_arch(server.release, server.arch,
                                         server.org_id, user_id=user_id)

    try:
        return channels_for_release_arch(server.release, server.arch,
                                         server.org_id, user_id=user_id)
    except NoBaseChannelError:
        if none_ok:
            return []

        log_error("No available channels for (server, org)",
                  (server.id, server.org_id), server.release, server.arch)
        msg = _("Your account does not have access to any channels matching "
                "(release='%(release)s', arch='%(arch)s')%(www_activation)s")

        error_strings = {
            'release': server.release,
            'arch': server.arch,
            'www_activation': ''
        }

        raise_with_tb(rhnFault(19, msg % error_strings), sys.exc_info()[2])
    except BaseChannelDeniedError:
        if none_ok:
            return []

        raise raise_with_tb(rhnFault(71,
                                     _("Insufficient subscription permissions for release (%s, %s")
                                     % (server.release, server.arch)), sys.exc_info()[2])

# Subscribes the server to channels
# can raise BaseChannelDeniedError, NoBaseChannelError
# Only used for new server registrations


def subscribe_server_channels(server, user_id=None, none_ok=0):
    s = LiteServer().init_from_server(server)

    # bretm 02/19/2007 -- have to leave none_ok in here for now due to how
    # the code is setup for reg token crap; it'd be very nice to clean up that
    # path to eliminate any chance for a server to be registered and not have base
    # channels, excluding expiration of channel entitlements
    channels = guess_channels_for_server(s, user_id=user_id, none_ok=none_ok,
                                         raise_exceptions=1)
    rhnSQL.transaction('subscribe_server_channels')
    for c in channels:
        subscribe_sql(s.id, c["id"], 0)

    return channels

# small wrapper around a PL/SQL function


def unsubscribe_sql(server_id, channel_id, commit=1):
    log_debug(3, server_id, channel_id, commit)
    unsubscribe_channel = rhnSQL.Procedure("rhn_channel.unsubscribe_server")
    try:
        # don't run the EC yet
        unsubscribe_channel(server_id, channel_id, 0)
    except rhnSQL.SQLError:
        log_error("Channel unsubscribe from %s failed for %s" % (
            channel_id, server_id))
        return 0
    if commit:
        rhnSQL.commit()
    return 1

# unsubscribe a server from a channel


def unsubscribe_channel(server_id, channel, username, password):
    log_debug(3, server_id, channel, username)
    # If auth doesn't blow up we're fine
    __auth_user(server_id, username, password)

    # now get the id of the channel
    h = rhnSQL.prepare("""
    select id, parent_channel from rhnChannel where label = :channel
    """)
    h.execute(channel=channel)
    ret = h.fetchone_dict()
    if not ret:
        log_error("Asked to unsubscribe server %s from non-existent channel %s" % (
            server_id, channel))
        raise rhnFault(40, "The specified channel '%s' does not exist." % channel)
    if not ret["parent_channel"]:
        log_error("Cannot unsubscribe %s from base channel %s" % (
            server_id, channel))
        raise rhnFault(72, "You can not unsubscribe %s from base channel %s." % (
            server_id, channel))

    # check specific channel subscription permissions
    channel_id = ret['id']
    h = rhnSQL.prepare(_query_can_subscribe)
    h.execute(cid=channel_id, username=username)
    ret = h.fetchone_dict()

    if ret and ret['can_subscribe']:
        return unsubscribe_sql(server_id, channel_id)

    raise rhnFault(71)

# unsubscribe from all channels


def unsubscribe_all_channels(server_id):
    log_debug(3, server_id)
    # We need to unsubscribe the children channels before the base ones.
    rhnSQL.transaction("unsub_all_channels")
    h = rhnSQL.prepare("""
    select
        sc.channel_id id
    from
        rhnChannel c,
        rhnServerChannel sc
    where
        sc.server_id = :server_id
    and sc.channel_id = c.id
    order by c.parent_channel nulls last
    """)
    h.execute(server_id=str(server_id))
    while 1:
        c = h.fetchone_dict()
        if not c:
            break
        ret = unsubscribe_sql(server_id, c["id"], 0)
        if not ret:
            rhnSQL.rollback("unsub_all_channels")
            raise rhnFault(36, "Could not unsubscribe server %s "
                           "from existing channels" % (server_id,))
    # finished unsubscribing
    return 1

# Unsubscribe the server from the channels in the list
# A channel is a hash containing at least the keys:
# [id, label, parent_channel]


def unsubscribe_channels(server_id, channels):
    log_debug(4, server_id, channels)
    if not channels:
        # Nothing to do
        return 1

    # We need to unsubscribe the children channels before the base ones.
    rhnSQL.transaction("unsub_channels")

    base_channels = [x for x in channels if not x['parent_channel']]
    child_channels = [x for x in channels if x['parent_channel']]

    for channel in child_channels + base_channels:
        ret = unsubscribe_sql(server_id, channel["id"], 0)
        if not ret:
            rhnSQL.rollback("unsub_channels")
            raise rhnFault(36, "Could not unsubscribe server %s "
                           "from channel %s" % (server_id, channel["label"]))

    # finished unsubscribing
    return 1

# Subscribe the server to the channels in the list
# A channel is a hash containing at least the keys:
# [id, label, parent_channel]


def subscribe_channels(server_id, channels):
    log_debug(4, server_id, channels)
    if not channels:
        # Nothing to do
        return 1

    # We need to subscribe the base channel before the child ones.
    base_channels = [x for x in channels if not x['parent_channel']]
    child_channels = [x for x in channels if x['parent_channel']]

    for channel in base_channels + child_channels:
        subscribe_sql(server_id, channel["id"], 0)

    # finished subscribing
    return 1


# check if a server is subscribed to a channel
def is_subscribed(server_id, channel):
    log_debug(3, server_id, channel)
    h = rhnSQL.prepare("""
    select 1 subscribed
    from rhnServerChannel sc, rhnChannel c
    where
        sc.channel_id = c.id
    and c.label = :channel
    and sc.server_id = :server_id
    """)
    h.execute(server_id=str(server_id), channel=str(channel))
    ret = h.fetchone_dict()
    if not ret:
        # System not subscribed to channel
        return 0
    return 1

# Returns 0, "", "" if system does not need any message, or
# (error_code, message_title, message) otherwise


def system_reg_message(server):
    server_id = server.server['id']
    # Is this system subscribed to a channel?
    h = rhnSQL.prepare("""
        select sc.channel_id
          from rhnServerChannel sc
         where sc.server_id = :server_id
    """)
    h.execute(server_id=server_id)
    ret = h.fetchone_dict()
    if not ret:
        # System not subscribed to any channel
        #
        return (-1, s_invalid_channel_title,
                s_invalid_channel_message %
                (server.server["release"], server.archname))

    # System does have a base channel; check entitlements
    from rhnServer import server_lib  # having this on top, cause TB due circular imports
    entitlements = server_lib.check_entitlement(server_id)
    if not entitlements:
        # No entitlement
        # We don't have an autoentitle preference for now, so display just one
        # message
        templates = rhnFlags.get('templateOverrides')
        if templates and 'hostname' in templates:
            hostname = templates['hostname']
        else:
            # Default to www
            hostname = "rhn.redhat.com"
        params = {
            'entitlement_url': "https://%s"
            "/rhn/systems/details/Edit.do?sid=%s" %
            (hostname, server_id)
        }
        return -1, no_entitlement_title, no_entitlement_message % params
    return 0, "", ""


def subscribe_to_tools_channel(server_id):
    """
        Subscribes server_id to the RHN Tools channel associated with its base channel, if one exists.
    """
    base_channel_dict = get_base_channel(server_id, none_ok=1)

    if base_channel_dict is None:
        raise NoBaseChannelError("Server %s has no base channel." %
                                 str(server_id))

    lookup_child_channels = rhnSQL.Statement("""
        select  id, label, parent_channel
          from  rhnChannel
         where  parent_channel = :id
    """)

    child_channel_data = rhnSQL.prepare(lookup_child_channels)
    child_channel_data.execute(id=base_channel_dict['id'])
    child_channels = child_channel_data.fetchall_dict()

    if child_channels is None:
        raise NoChildChannels("Base channel id %s has no child channels associated with it." %
                              base_channel_dict['id'])

    tools_channel = None
    for channel in child_channels:
        if 'label' in channel:
            if 'rhn-tools' in channel['label'] or 'manager-tools' in channel['label']:
                tools_channel = channel

    if tools_channel is None:
        raise NoToolsChannel("Base channel id %s does not have a Tools channel as a child channel." % \
                             base_channel_dict['id'])
    else:
        if 'id' not in tools_channel:
            raise InvalidChannel("Tools channel has no id.")
        if 'label' not in tools_channel:
            raise InvalidChannel("Tools channel has no label.")
        if 'parent_channel' not in tools_channel:
            raise InvalidChannel("Tools channel has no parent_channel.")

        subscribe_channels(server_id, [tools_channel])

# Various messages that can be reused
#
# bretm 02/07/2007 -- when we have better old-client documentation, probably
# will be safe to get rid of all this crap

s_invalid_channel_title = _("System Registered but Inactive")
s_invalid_channel_message = _("""
Invalid Architecture and OS release combination (%s, %s).
Your system has been registered, but will not receive updates
because it could not be subscribed to a base channel.
Please contact your organization administrator for assistance.
""")

no_autoentitlement_message = _("""
  This system has been successfully registered, but is not yet entitled
  to service.  To entitle this system to service, login to the web site at:

  %(entitlement_url)s
""")

no_entitlement_title = _("System Registered but Inactive")
no_entitlement_message = _("""
  This system has been successfully registered, but no service entitlements
  were available.  To entitle this system to service, login to the web site at:

  %(entitlement_url)s
""")
 070701000001AE000081B40000000000000000000000016290A0C1000024EE000000000000000000000000000000000000002D00000000spacewalk-backend/server/rhnDatabaseCache.py  #
# Copyright (c) 2008--2010 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
# 
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation. 
#
#

import math
import gzip
import string
try:
    # python 3
    import pickle as cPickle
    import io as cStringIO
except ImportError:
    # python 2
    import cPickle
    import cStringIO

from spacewalk.common import rhnCache
from spacewalk.common.rhnLog import log_debug, log_error
from uyuni.common.rhnLib import timestamp

from spacewalk.server import rhnSQL

# XXX Although it would have been much easier to do it all in python, we want
# this code to commit as soon as possible. Also, we cannot just commit
# ourselves, there may be data outside of this module that wasn't committed
# yet, and that may have to be rolled back at a later point. The only solution
# is using stored procedures that are marked as doing autonomous transactions.
# Such procedures don't see the changes in the same transaction, and commiting
# doesn't commit the outer transaction.

### The following functions expose this module as a dictionary

def has_key(name, modified = None):
    # We have to rely on the same entity generating the time and comparing it;
    # we are generating UNIX timestamps on the app side, and we store them in
    # the database as DATE fields. The trick is to make both conversions in
    # the same way.
    # One second differences seem to be returned as zero, presumably because
    # 1 means one day for Oracle; 1/86400 is silently converted by DCOracle to
    # 0, which is bad; so scale the response to number_of_seconds instead of
    # days.

    # Even though we set now as time.time(), we don't actually use it; the
    # database will set its own time if modified is not specified; in this
    # case we only need a placeholder value so that the query can correctly
    # compute the time delta
    h = _fetch_cursor(key=name, modified=modified)

    row = h.fetchone_dict()
    if not row:
        # Key not found
        return 0
    
    # has_key behaves as stat(): the access time doesn't change just by
    # poking around to see if the key is there
    
    if modified and row['delta'] != 0:
        # Different version
        return 0
    # Same copy
    return 1
    
def get(name, modified = None, raw = None, compressed = None):
    # Check to see if the entry is in the database, with the right version
    h = _fetch_cursor(key=name, modified=modified)

    row = h.fetchone_dict()

    if not row:
        # Key not found
        return None

    if modified and row['delta'] != 0:
        # Different version
        log_debug(4, "database cache: different version")
        return None

    if modified is None:
        # The caller doesn't care about the modified time, but we do, since we
        # want to fetch the same version from the disk cache
        modified = row['modified']

    if rhnCache.has_key(name, modified):
        # We have the value
        log_debug(4, "Filesystem cache HIT")
        return rhnCache.get(name, modified=modified, raw=raw)

    log_debug(4, "Filesystem cache MISS")

    # The disk cache doesn't have this key at all, or it's a modified value
    # Fetch the value from the database

    v = row['value']
    # Update the accessed field
    rhnSQL.Procedure("rhn_cache_update_accessed")(name)

    if compressed:
        io = cStringIO.StringIO()

        io.write(rhnSQL.read_lob(v))
        io.seek(0, 0)

        # XXX For about 40M of compressed data sometimes we get:
        # zlib.error: Error -3 while decompressing: incomplete dynamic bit lengths tree
        v = gzip.GzipFile(None, "r", 0, io)

    try:
        data = v.read()
    except (ValueError, IOError, gzip.zlib.error) as e:
        # XXX poking at gzip.zlib may not be that well-advised
        log_error("rhnDatabaseCache: gzip error for key %s: %s" % (
            name, e))
        # Ignore this entry in the database cache, it has invalid data
        return None

    # We store the data in the database cache, in raw format
    rhnCache.set(name, data, modified=modified, raw=1)
    
    # Unpickle the data, unless raw access was requested
    if not raw:
        return cPickle.loads(data)

    return data


def delete(name):
    # Uses the stored procedure. Quite simple
    rhnSQL.Procedure("rhn_cache_delete")(name)
    # Delete it from the disk cache too, just in case
    rhnCache.delete(name)
    
# We only set the database cache value
# The local disk one will be cached when get() is called for the first time
def set(name, value, modified = None, raw = None, compressed = None):
    if modified is not None:
        modified = timestamp(modified)
    if raw:
        val = value
    else:
        val = cPickle.dumps(value, 1)

    if compressed:
        # Since most of the data is kept in memory anyway, don't bother to
        # write it to a temp file at this point - it's probably much smaller
        # anyway
        io = cStringIO.StringIO()

        f = gzip.GzipFile(None, "w", 5, io)
        f.write(val)
        f.close()

        val = io.getvalue()
        io.close()

    data_length = len(val)
    chunk_size = 32512
    chunks = int(math.ceil(float(data_length) / chunk_size))
    #if chunks > 256:
    #    raise Exception, "Data too big"

    plsql_template = r"""
DECLARE
    PRAGMA AUTONOMOUS_TRANSACTION;
    blob_val BLOB;
    modified_date DATE;
    now DATE := sysdate;
    our_key_id number;
%s
BEGIN
    our_key_id := lookup_cache_key(:key);
    BEGIN
        SELECT value INTO blob_val
          FROM rhnCache
         WHERE key_id = our_key_id
           FOR UPDATE OF value;
    EXCEPTION
        WHEN NO_DATA_FOUND THEN
            -- The entry is not here yet, let's create it
            INSERT INTO rhnCache (key_id, value, created, modified)
            VALUES (our_key_id, EMPTY_BLOB(), sysdate, sysdate)
            RETURNING value INTO blob_val;
    END;
    -- If we want to write less data than currently available, trim the blob
    IF :data_len < DBMS_LOB.getlength(blob_val) THEN
        DBMS_LOB.TRIM(blob_val, :data_len);
    END IF;
    
%s

    -- Now update last_modified and last_accessed
    if :modified IS NULL THEN
        modified_date := now;
    ELSE
        modified_date := TO_DATE('1970-01-01 00:00:00', 
            'YYYY-MM-DD HH24:MI:SS') + :modified / 86400;
    END IF;
    UPDATE rhnCache SET modified = modified_date WHERE key_id = our_key_id;
    -- Update accessed too
    UPDATE rhnCacheTimestamps
       SET accessed = now
     WHERE key_id = our_key_id;
    if SQL%%ROWCOUNT = 0 THEN
        -- No entry in rhnCacheTimestamps; insert it
        INSERT INTO rhnCacheTimestamps (key_id, accessed)
        VALUES (our_key_id, now);
    END IF;
    COMMIT;
END;
"""

    decl_template = "    arg_%s LONG RAW := :val_%s;"
    dbms_lob_template = "   DBMS_LOB.WRITE(blob_val, %s, %s, arg_%s);"

    indices = list(range(chunks))
    start_pos = list(map(lambda x, cs=chunk_size: x * cs + 1, indices))
    sizes = [ chunk_size ] * (chunks - 1) + \
        [ 'length(rawtohex(arg_%s)) / 2' % (chunks - 1) ]

    query = plsql_template % (
        string.join(
            list(map(lambda x, y, t=decl_template: t % (x, y),
                indices, indices)),
            "\n"
        ),
        string.join(
            list(map(lambda x, y, z, t=dbms_lob_template: t % (x, y, z),
                sizes, start_pos, indices)),
            "\n"
        ),
    )
    params = {
        'modified'  : modified,
        'data_len'  : data_length,
        'key'       : name,
    }
    for i in indices:
        start = i * chunk_size
        end = (i + 1) * chunk_size
        params['val_%s' % i] = rhnSQL.types.LONG_BINARY(val[start:end])

    h = rhnSQL.prepare(query)
    tries = 3
    while tries:
        tries = tries - 1
        try:
            h.execute(*(), **params)
        except rhnSQL.SQLSchemaError as e:
            if e.errno == 1:
                # Unique constraint violated - probably someone else was
                # doing the same thing at the same time
                # Try again
                continue
        # No errors - we're done
        # We're done
        break
    else:
        # Kept raising Unique constraint violated - something else may be
        # wrong; re-raise the last exception
        raise
    
def _fetch_cursor(key=None, modified=None):
    if modified is not None:
        modified = timestamp(modified)
           
    # Computing the number of seconds since Jan 1 1970
    
    h = rhnSQL.prepare("""
    select c.key_id, c.value, nvl(
             (c.modified - 
                TO_DATE('1970-01-01 00:00:00', 'YYYY-MM-DD HH24:MI:SS')) *
                86400 - :modified, 
             0) delta,
           (c.modified - TO_DATE('1970-01-01 00:00:00', 
             'YYYY-MM-DD HH24:MI:SS')) * 86400 modified
      from rhnCache c
     where c.key_id = LOOKUP_CACHE_KEY(:key)
    """)
    h.execute(key=key, modified=modified)
    return h

  070701000001AF000081B40000000000000000000000016290A0C100004D90000000000000000000000000000000000000002A00000000spacewalk-backend/server/rhnDependency.py #
# Copyright (c) 2008--2016 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#
#

from spacewalk.common.rhnLog import log_debug, log_error
from spacewalk.common.rhnException import rhnFault
from . import rhnSQL
from . import rhnLib
import rpm

# QUERY PACKAGES
# sql query for solving a dep as a package
__packages_with_arch_and_id_sql = """
select distinct
    p.id id,
    pn.name,
    (pe.evr).version as version,
    (pe.evr).release as release,
    (pe.evr).epoch as epoch,
    pa.label as arch,
    1 as preference
from
    rhnPackageEvr pe,
    rhnChannelPackage cp,
    rhnPackage p,
    rhnServerChannel sc,
    rhnPackageName pn,
    rhnPackageArch pa
where 1=1
and pn.name = :dep
and sc.server_id = :server_id
and p.name_id = pn.id
and cp.channel_id = sc.channel_id
and p.id = cp.package_id
and p.evr_id = pe.id
and p.package_arch_id = pa.id
and pe.evr = (
    select MAX(pe1.evr)
    from
        rhnPackageEVR pe1,
        rhnChannelPackage cp1,
        rhnPackage p1,
        rhnServerChannel sc1
    where
        sc1.server_id = :server_id
    and p1.name_id = pn.id
    and sc1.channel_id = cp1.channel_id
    and cp1.package_id = p1.id
    and p1.evr_id = pe1.id
    )
"""
__packages_sql = """
select distinct
    pn.name,
    (pe.evr).version as version,
    (pe.evr).release as release,
    (pe.evr).epoch as epoch,
    pa.label as arch,
    1 as preference
from
    rhnPackageEvr pe,
    rhnChannelPackage cp,
    rhnPackage p,
    rhnServerChannel sc,
    rhnPackageName pn,
    rhnPackageArch pa
where 1=1
and pn.name = :dep
and sc.server_id = :server_id
and p.name_id = pn.id
and cp.channel_id = sc.channel_id
and p.id = cp.package_id
and p.evr_id = pe.id
and p.package_arch_id = pa.id
and pe.evr = (
    select MAX(pe1.evr)
    from
        rhnPackageEVR pe1,
        rhnChannelPackage cp1,
        rhnPackage p1,
        rhnServerChannel sc1
    where
        sc1.server_id = :server_id
    and p1.name_id = pn.id
    and sc1.channel_id = cp1.channel_id
    and cp1.package_id = p1.id
    and p1.evr_id = pe1.id
    )
"""

__packages_all_sql = """
select distinct
    pn.name,
    (pe.evr).version as version,
    (pe.evr).release as release,
    (pe.evr).epoch as epoch,
    pa.label as arch,
    1 as preference
from
    rhnPackageEvr pe,
    rhnChannelPackage cp,
    rhnPackage p,
    rhnServerChannel sc,
    rhnPackageName pn,
    rhnPackageArch pa
where 1=1
and pn.name = :dep
and sc.server_id = :server_id
and p.name_id = pn.id
and cp.channel_id = sc.channel_id
and p.id = cp.package_id
and p.evr_id = pe.id
and p.package_arch_id = pa.id
"""
# QUERY PROVIDES
# sql query for solving a dep as a provide
__provides_sql = """
select  distinct
    pn.name,
    (pe.evr).version as version,
    (pe.evr).release as release,
    (pe.evr).epoch as epoch,
    pa.label as arch,
    2 as preference
from
    rhnServerChannel sc,
    rhnChannelPackage cp,
    rhnPackageProvides pr,
    rhnPackage p,
    rhnPackageCapability cap,
    rhnPackageName pn,
    rhnPackageEVR pe,
    rhnPackageArch pa
where
    sc.server_id = :server_id
and sc.channel_id = cp.channel_id
and cp.package_id = p.id
and cp.package_id = pr.package_id
and pr.package_id = p.id
and pr.capability_id = cap.id
and cap.name = :dep
and p.name_id = pn.id
and p.evr_id = pe.id
and p.package_arch_id = pa.id
-- and this package is the latest one from all the channels
-- this server is subscribed to.
and pe.evr = (
    select MAX(pe1.evr)
    from
        rhnPackage p1,
        rhnPackageEVR pe1,
        rhnServerChannel sc1,
        rhnChannelPackage cp1
    where
        sc1.server_id = :server_id
    and sc1.channel_id = cp1.channel_id
    and cp1.package_id = p1.id
    and p1.name_id = pn.id
    and p1.evr_id = pe1.id
    )
"""

__provides_all_sql = """
select  distinct
    pn.name,
    (pe.evr).version as version,
    (pe.evr).release as release,
    (pe.evr).epoch as epoch,
    pa.label as arch,
    2 as preference
from
    rhnServerChannel sc,
    rhnChannelPackage cp,
    rhnPackageProvides pr,
    rhnPackage p,
    rhnPackageCapability cap,
    rhnPackageName pn,
    rhnPackageEVR pe,
    rhnPackageArch pa
where
    sc.server_id = :server_id
and sc.channel_id = cp.channel_id
and cp.package_id = p.id
and cp.package_id = pr.package_id
and pr.package_id = p.id
and pr.capability_id = cap.id
and cap.name = :dep
and p.name_id = pn.id
and p.evr_id = pe.id
and p.package_arch_id = pa.id
"""
# QUERY FILES
# sql query for solving a dependency as a file provide
__files_sql = """
select distinct
    pn.name,
    (pe.evr).version as version,
    (pe.evr).release as release,
    (pe.evr).epoch as epoch,
    pa.label as arch,
    3 as preference
from
    rhnServerChannel sc,
    rhnChannelPackage cp,
    rhnPackageFile f,
    rhnPackage p,
    rhnPackageCapability cap,
    rhnPackageName pn,
    rhnPackageEVR pe,
    rhnPackageArch pa
where
    sc.server_id = :server_id
and sc.channel_id = cp.channel_id
and cp.package_id = p.id
and cp.package_id = f.package_id
and f.capability_id = cap.id
and cap.name = :dep
and p.name_id = pn.id
and p.evr_id = pe.id
and p.package_arch_id = pa.id
-- and this package is the latest one from all the channels
-- this server is subscribed to.
and pe.evr = (
    select MAX(pe1.evr)
    from
        rhnPackage p1,
        rhnPackageEVR pe1,
        rhnServerChannel sc1,
        rhnChannelPackage cp1
    where
        sc1.server_id = :server_id
    and sc1.channel_id = cp1.channel_id
    and cp1.package_id = p1.id
    and p1.name_id = pn.id
    and p1.evr_id = pe1.id
    )
"""


__files_all_sql = """
select distinct
    pn.name,
    (pe.evr).version as version,
    (pe.evr).release as release,
    (pe.evr).epoch as epoch,
    pa.label as arch,
    3 as preference
from
    rhnServerChannel sc,
    rhnChannelPackage cp,
    rhnPackageFile f,
    rhnPackage p,
    rhnPackageCapability cap,
    rhnPackageName pn,
    rhnPackageEVR pe,
    rhnPackageArch pa
where
    sc.server_id = :server_id
and sc.channel_id = cp.channel_id
and cp.package_id = p.id
and cp.package_id = f.package_id
and f.capability_id = cap.id
and cap.name = :dep
and p.name_id = pn.id
and p.evr_id = pe.id
and p.package_arch_id = pa.id
"""


class SolveDependenciesError(Exception):

    def __init__(self, deps=None, packages=None, *args, **kwargs):
        Exception.__init__(self, *args, **kwargs)
        self.deps = deps
        self.packages = packages


def __single_query_with_arch_and_id(server_id, deps, query):
    """ Run one of the queries and return the results along with the arch. """
    ret = {}
    h = rhnSQL.prepare(query)
    for dep in deps:
        h.execute(server_id=server_id, dep=dep)
        data = h.fetchall() or []
        ret[dep] = [a[:6] for a in data]
    return ret

#
# Interfaces
#

# simple one type queries


def find_package_with_arch(server_id, deps):
    log_debug(4, server_id, deps)
    return __single_query_with_arch_and_id(server_id, deps, __packages_with_arch_and_id_sql)


def solve_dependencies_with_limits(server_id, deps, version, all=0, limit_operator=None, limit=None):
    """ This version of solve_dependencies allows the caller to get all of the packages that solve a dependency and limit
        the packages that are returned to those that match the criteria defined by limit_operator and limit. This version
        of the function also returns the architecture label of the package[s] that get returned.

        limit_operator can be any of: '<', '<=', '==', '>=', or '>'.
        limit is a a string of the format [epoch:]name-version-release
        deps is a list of filenames that the packages that are returned must provide.
        version is the version of the client that is calling the function.

        Indexes for the tuple
        entry_index = 0
        preference_index = 1

        Indexes for the list of package fields.
        name_index = 0
        version_index = 1
        release_index = 2
        epoch_index = 3
    """
    # Containers used while the packages get categorized, sorted, and filtered.
    packages_all = {}
    package_list = []

    # List of fields in a package. Corresponds to the keys for the dictionary that holds the package information.
    nvre = ['name', 'version', 'release', 'epoch', 'arch']

    # Make sure there are no duplicate dependencies.
    deplist = set(deps)

    statement = "%s UNION ALL %s UNION ALL %s" % (__packages_all_sql, __provides_all_sql, __files_all_sql)
    h = rhnSQL.prepare(statement)

    # prepare return value
    packages = {}

    for dep in deplist:
        dict = {}

        # Retrieve the package information from the database.
        h.execute(server_id=server_id, dep=dep)

        # Get a list of dictionaries containing row data.
        rs = h.fetchall_dict() or []  # rs = [{},{},... ]

        # Each package gets a list that may contain multiple versions of a package
        for record in rs:
            if record['name'] in packages_all:
                packages_all[record['name']].append(record)
            else:
                packages_all[record['name']] = [record]

        # sort all the package lists so the most recent version is first
        for pl in list(packages_all.keys()):

            packages_all[pl].sort(cmp_evr)
            package_list = package_list + packages_all[pl]

        package_list.reverse()
        # Use the limit* parameters to filter out packages you don't want.
        if limit_operator is not None and limit is not None:
            keep_list = []

            try:
                limit = rhnLib.make_evr(limit)
            except:
                raise

            for package in package_list:
                try:
                    keep = test_evr(package, limit_operator,  limit)
                except:
                    raise

                if keep:
                    keep_list.append(package)

            package_list = keep_list

        list_of_tuples = []
        for p in package_list:
            if p['epoch'] is None:
                p['epoch'] = ""

            entry = []

            list(map(lambda f, e=entry, p=p: e.append(p[f]), nvre))

            # Added for readability
            name_key = entry[0]

            if all == 0:
                # NOTE: Remember that the values in dict are tuples that look like (entry, preference).
                # NOTE, Part Deux: the '<=' was a '<' originally. I changed it because if two packages
                # with the same preference but different versions came through, the second package was being used.
                # The changes I made above make it so that at this point the packages are sorted from highest nvre
                # to lowest nvre. Selecting the second package was causing the earlier package to be
                # returned, which is bad.
                if name_key in dict and dict[name_key][1] <= p['preference']:
                    # Already have it with a lower preference
                    continue
                # The first time we see this package.
                dict[name_key] = (entry, p['preference'])
            else:
                name_key = entry[0]
                newtuple = (entry, p['preference'])
                list_of_tuples.append(newtuple)

        if all == 0:
            packages[dep] = _avoid_compat_packages(dict)
        else:
            # filter out compats
            if len(list_of_tuples) > 1:
                filterstring = "compat-"
                len_filter = len(filterstring)
                tup_keep = []
                for tup in list_of_tuples:
                    if tup[0][0][:len_filter] != filterstring:
                        tup_keep.append(tup)
                list_of_tuples = tup_keep

            list_of_tuples.sort(lambda a, b: cmp(a[1], b[1]))
            packages[dep] = [x[0] for x in list_of_tuples]

    # v2 clients are done
    if version > 1:
        return packages
    else:
        return _v2packages_to_v1list(packages, deplist, all)


def _v2packages_to_v1list(packages, deplist, all=0):
    # v1 clients expect a list as a result
    result = []
    # Return the results in order (not that anyone would care)
    for dep in deplist:
        if not packages[dep]:
            # Unresolved dependency; skip it
            continue
        # consider only the first one for each dep
        r = packages[dep][0]
        # Avoid sending the same result back multiple times
        if all == 0:
            if r not in result:
                result.append(r)
        else:
            result.append(r)
    return result


def solve_dependencies_arch(server_id, deps, version):
    """ Does the same thing as solve_dependencies, but also returns the architecture label with the package info.
        E.g.
        OUT:
           Dictionary with key values being the filnames in deps and the values being a list of lists of package info.
           Example :=  {'filename1'    :   [['name', 'version', 'release', 'epoch', 'architecture'],
                                            ['name2', 'version2', 'release2', 'epoch2', 'architecture2']]}
    """
    # list of the keys to the values in each row of the recordset.
    nvre = ['name', 'version', 'release', 'epoch', 'arch']
    return solve_dependencies(server_id, deps, version, nvre)


def solve_dependencies(server_id, deps, version, nvre=None):
    """ The unchanged version of solve_dependencies.
        IN:
           server_id := id info of the server
           deps := list of filenames that are needed by the caller
           version := version of the client

        OUT:
           Dictionary with key values being the filnames in deps and the values being a list of lists of package info.
           Example :=  {'filename1'    :   [['name', 'version', 'release', 'epoch'],
                                            ['name2', 'version2', 'release2', 'epoch2']]}
    """
    if not nvre:
        # list of the keys to the values in each row of the recordset.
        nvre = ['name', 'version', 'release', 'epoch']

    # first, uniquify deps
    deplist = set(deps)

    # SQL statement.  It is a union of 3 statements:
    #  - Lookup by package name
    #  - Lookup by provides
    #  - Lookup by file name

    statement = "%s UNION ALL %s UNION ALL %s" % (
        __packages_sql, __provides_sql, __files_sql)
    h = rhnSQL.prepare(statement)

    # prepare return value
    packages = {}
    # Iterate through the dependency problems
    for dep in deplist:
        dict = {}
        h.execute(server_id=server_id, dep=dep)
        rs = h.fetchall_dict() or []
        if not rs:  # test shortcut
            log_error("Unable to solve dependency", server_id, dep)
            packages[dep] = []
            continue

        for p in rs:
            if p['epoch'] is None:
                p['epoch'] = ""
            entry = []
            list(map(lambda f, e=entry, p=p: e.append(p[f]), nvre))

            name_key = entry[0]
            if name_key in dict and dict[name_key][1] < p['preference']:
                # Already have it with a lower preference
                continue
            # The first time we see this package.
            dict[name_key] = (entry, p['preference'])

        packages[dep] = _avoid_compat_packages(dict)

    # v2 clients are done
    if version > 1:
        return packages
    else:
        return _v2packages_to_v1list(packages, deplist)


def _avoid_compat_packages(dict):
    """ attempt to avoid giving out the compat-* packages
        if there are other candidates
    """
    if len(dict) > 1:
        matches = list(dict.keys())
        # check we have at least one non- "compat-*" package name
        compats = [a for a in matches if a[:7] == "compat-"]
        if len(compats) > 0 and len(compats) < len(matches):  # compats and other things
            for p in compats:  # delete all references to a compat package for this dependency
                del dict[p]
        # otherwise there's nothing much we can do (no compats or only compats)
    # and now return these final results ordered by preferece
    l = list(dict.values())
    l.sort(lambda a, b: cmp(a[1], b[1]))
    return [x[0] for x in l]


def cmp_evr(pkg1, pkg2):
    """ Intended to be passed to a list object's sort().
        In: {'epoch': 'value', 'version':'value', 'release':'value'}
    """
    pkg1_epoch = pkg1['epoch']
    pkg1_version = pkg1['version']
    pkg1_release = pkg1['release']

    pkg2_epoch = pkg2['epoch']
    pkg2_version = pkg2['version']
    pkg2_release = pkg2['release']

    if pkg1_epoch is not None:
        pkg1_epoch = str(pkg1_epoch)
    elif pkg1_epoch == '':
        pkg1_epoch = None

    if pkg2_epoch is not None:
        pkg2_epoch = str(pkg2_epoch)
    elif pkg1_epoch == '':
        pkg1_epoch = None

    return rpm.labelCompare((pkg1_epoch, pkg1_version, pkg1_release),
                            (pkg2_epoch, pkg2_version, pkg2_release))


def test_evr(evr, operator, limit):
    """ Check to see if evr is within the limit.
        IN: evr = { 'epoch' : value, 'version':value, 'release':value }
            operator can be any of: '<', '<=', '==', '>=', '>'
            limit = { 'epoch' : value, 'version':value, 'release':value }
        OUT:
           1 or 0
    """
    good_operators = ['<', '<=', '==', '>=', '>']

    if not operator in good_operators:
        raise rhnFault(err_code=21,
                       err_text="Bad operator passed into test_evr.")

    evr_epoch = evr['epoch']
    evr_version = evr['version']
    evr_release = evr['release']

    limit_epoch = limit['epoch']
    limit_version = limit['version']
    limit_release = limit['release']

    if evr_epoch is not None:
        evr_epoch = str(evr_epoch)
    elif evr_epoch == '':
        evr_epoch = None

    if limit_epoch is not None:
        limit_epoch = str(limit_epoch)
    elif limit_epoch == '':
        limit_epoch = None

    ret = rpm.labelCompare((evr_epoch, evr_version, evr_release),
                           (limit_epoch, limit_version, limit_release))

    return check_against_operator(ret, operator)


def check_against_operator(ret, operator):
    if ret == -1:
        if operator in (">", ">=", "=="):
            return 0
        if operator in ("<", "<="):
            return 1
    if ret == 0:
        if operator in (">", "<"):
            return 0
        if operator in (">=", "<=", "=="):
            return 1
    if ret == 1:
        if operator in ("<", "<=", "=="):
            return 0
        if operator in (">", ">="):
            return 1
    return 0

# DEVEL NOTES
# This faster query for solvind dependencies that refer to package
# names causes Oracle 9i (all versions) to segfault badly. We
# therefore use a slower query that has the drawback of effectively
# double selecting the same data and then filtering it to obtain the
# correct response.
# __packages_sql = """
# select
# q.name,
# q.evr.version version,
# q.evr.release release,
# q.evr.epoch epoch,
# 1 preference
# from
# ( select
# pn.name name,
# max(pe.evr) evr
# from
# rhnServerChannel sc,
# rhnChannelPackage cp,
# rhnPackage p,
# rhnPackageName pn,
# rhnPackageEVR pe
# where
# sc.server_id = :server_id
# and sc.channel_id = cp.channel_id
# and cp.package_id = p.id
# and p.name_id = pn.id
# and pn.name = :dep
# and p.evr_id = pe.id
# group by pn.name
# ) q
# """
070701000001B0000081B40000000000000000000000016290A0C100000C91000000000000000000000000000000000000002700000000spacewalk-backend/server/rhnHandler.py    #
# Copyright (c) 2008--2015 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#
#

from spacewalk.common.rhnLog import log_debug, log_error
from spacewalk.common.rhnConfig import CFG
from spacewalk.common.rhnException import rhnFault
from spacewalk.common.rhnTranslate import _
from spacewalk.common.RPC_Base import RPC_Base

from spacewalk.server import rhnServer

# extend the RPC_Base base class


class rhnHandler(RPC_Base):

    def __init__(self):
        RPC_Base.__init__(self)
        # extra class members we handle
        self.server = None
        self.server_id = None

        # XXX Some subclasses set this as a string, others as an rhnUser
        self.user = None

        # defaults that can be easily overridden through assignement of self.*
        # do we load the user infomation (seldomly needed)
        self.load_user = 0
        # do we check for entitlement of the server
        self.check_entitlement = 1
        # do we attempt throttling
        self.throttle = CFG.THROTTLE
        # attempt quality of service checks
        self.set_qos = CFG.QOS
        # do we update the checking counters
        self.update_checkin = 1

    # Authenticate a system based on the certificate. There are a lot
    # of modifiers that can be set before this function is called (see
    # the __init__ function for this class).

    def auth_system(self, system_id):
        log_debug(3)

        server = rhnServer.get(system_id, load_user=self.load_user)
        if not server:
            # Invalid server certificate.
            raise rhnFault(9, _(
                "Please run rhn_register as root on this client"))
        self.server_id = server.getid()
        self.server = server
        # update the latest checkin time
        if self.update_checkin:
            server.checkin()

        # is the server entitled?
        if self.check_entitlement:
            entitlements = server.check_entitlement()
            if not entitlements:  # we require entitlement for this functionality
                log_error("Server Not Entitled", self.server_id)
                raise rhnFault(31, _(
                    'Service not enabled for system profile: "%s"')
                    % server.server["name"])

        # Kind of poking where we shouldn't, but what the hell
        if self.load_user and self.user is not None:
            self.user = server.user.username
        else:
            self.user = None

        if self.user is None:
            self.user = ""
        # Throttle users if necessary
        if self.throttle:
            server.throttle()
        # Set QOS
        if self.set_qos:
            server.set_qos()
        return server
   070701000001B1000081B40000000000000000000000016290A0C100000D2D000000000000000000000000000000000000002600000000spacewalk-backend/server/rhnImport.py #
# Copyright (c) 2008--2016 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#
#

import os
import sys

from spacewalk.common.rhnLog import log_debug, log_error


class Loader:
    # Class that saves the state of imported objects
    _imports = {}

    def load(self, dir, interface_signature='rpcClasses'):
        # The key we use for caching
        root_dir = "/usr/share/rhn"
        key = (dir, root_dir, interface_signature)

        if key in self._imports:
            return self._imports[key]

        dirname = "%s/%s" % (root_dir, dir)

        # We need to import things
        if root_dir is not None and root_dir not in sys.path:
            sys.path.append(root_dir)

        fromcomps = dir.split('/')
        _imports = {}

        # Keep track of the modules we've already tried to load, to avoid loading
        # them twice
        modules = []
        # Load each module (that is not internal - i.e. doesn't start with _)
        for module in os.listdir(dirname):
            log_debug(5, "Attempting to load module %s from %s %s" % (
                module, '.'.join(fromcomps), dirname))
            if module[0] in ('_', '.'):
                # We consider it 'internal' and we don't load it
                log_debug(6, "Ignoring module %s" % module)
                continue

            # Importing files or directories with . in them is broken, so keep
            # only the first part
            module = module.split('.', 1)[0]
            if module in modules:
                log_debug(6, "Already tried to load Module %s" % (module, ))
                continue

            # Add it to the list, so we don't load it again
            modules.append(module)

            # We use fromclause to build the full module path
            fromclause = '.'.join(fromcomps + [module])

            # Try to import the module
            try:
                m = __import__(fromclause, {}, {}, [module])
            except ImportError:
                e = sys.exc_info()[1]
                log_error("Error importing %s: %s" % (module, e))
                log_debug(6, "Details: sys.path: %s" % (sys.path, ))
                continue

            if not hasattr(m, interface_signature):
                # The module does not support our API
                log_error("Module %s doesn't support our API" % (module, ))
                continue
            log_debug(5, "Module %s loaded" % (module, ))

            _imports[module] = getattr(m, interface_signature)

        self._imports[key] = _imports
        return _imports


def load(dir, root_dir=None, interface_signature='rpcClasses'):
    """
    Load modules (handlers) beneath the handlers/ tree.

    root_dir: which directory to use as a top-level directory
    """

    l = Loader()
    return l.load(dir, interface_signature=interface_signature)
   070701000001B2000081B40000000000000000000000016290A0C100002140000000000000000000000000000000000000002300000000spacewalk-backend/server/rhnLib.py    #
# Copyright (c) 2008--2015 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#

import os
import hmac
import hashlib
import base64
import struct
import posixpath

from uyuni.common.rhnLib import parseRPMName, parseDEBName
from spacewalk.common.rhnLog import log_debug
from spacewalk.common.rhnException import rhnFault

# architecture work
from .rhnMapping import check_package_arch


def computeSignature(*fields):
    # Init the hash
    m = hmac.new(key=str(fields[0]).encode(), digestmod=hashlib.sha256)
    for i in fields[1:]:
        i = str(i).encode()
        m.update(struct.pack('<Q', len(i)) + i)
    # We are still expecting the signature to be a string, so we have to
    # decode the output of encodestring(). Otherwise bootstrapping just
    # stales.
    return base64.encodestring(m.digest()).rstrip().decode()


# 'n_n-n-v.v.v-r_r.r:e.ARCH.rpm' ---> [n,v,r,e,a]
def parseRPMFilename(pkgFilename):
    """
    IN: Package Name: xxx-yyy-ver.ver.ver-rel.rel_rel:e.ARCH.rpm (string)
    Understood rules:
       o Name can have nearly any char, but end in a - (well seperated by).
         Any character; may include - as well.
       o Version cannot have a -, but ends in one.
       o Release should be an actual number, and can't have any -'s.
       o Release can include the Epoch, e.g.: 2:4 (4 is the epoch)
       o Epoch: Can include anything except a - and the : seperator???
         XXX: Is epoch info above correct?
    OUT: [n,e,v,r, arch].
    """
    if type(pkgFilename) != type(''):
        raise rhnFault(21, str(pkgFilename))  # Invalid arg.

    pkgFilename = os.path.basename(pkgFilename)

    # Check that this is a package NAME (with arch.rpm) and strip
    # that crap off.
    pkg = pkgFilename.split('.')

    dist = pkg[-1].lower()

    # 'rpm' at end?
    if dist not in ['rpm', 'deb']:
        raise rhnFault(21, 'neither an rpm nor a deb package name: %s' % pkgFilename)

    # Valid architecture next?
    if check_package_arch(pkg[-2]) is None:
        raise rhnFault(21, 'Incompatible architecture found: %s' % pkg[-2])

    _arch = pkg[-2]

    # Nuke that arch.rpm.
    pkg = '.'.join(pkg[:-2])

    if dist == "deb":
        ret = list(parseDEBName(pkg))
    else:
        ret = list(parseRPMName(pkg))

    if ret:
        ret.append(_arch)
    return ret

# XXX TBD where to place this function - it has to be accessible from several
# places


def normalize_server_arch(arch):
    log_debug(4, 'server arch', arch)

    if arch is None:
        return ''
    arch = str(arch)
    if '-' in arch:
        # Already normalized
        return arch

    # Fix the arch if need be
    suffix = '-redhat-linux'
    arch = arch + suffix
    return arch


class InvalidAction(Exception):

    """ An error class to signal when we can not handle an action """
    pass


class EmptyAction(Exception):

    """ An error class that signals that we encountered an internal error
        trying to handle an action through no fault of the client
    """
    pass


class ShadowAction(Exception):

    """ An error class for actions that should not get to the client """
    pass


def transpose_to_hash(arr, column_names):
    """ Handy function to transpose an array from row-based to column-based,
        with named columns.
    """
    result = []
    for c in column_names:
        result.append([])

    colnum = len(column_names)
    for r in arr:
        if len(r) != colnum:
            raise Exception(
                "Mismatching number of columns: expected %s, got %s; %s" % (
                    colnum, len(r), r))
        for i in range(len(r)):
            result[i].append(r[i])

    # Now build the hash labeled with the column names
    rh = {}
    for i in range(len(column_names)):
        rh[column_names[i]] = result[i]

    return rh


def get_package_path(nevra, org_id, source=0, prepend="", omit_epoch=None,
                     package_type='rpm', checksum_type=None, checksum=None):
    """ Computes a package path, optionally prepending a prefix
        The path will look like
        <prefix>/<org_id>/checksum[:3]/n/e:v-r/a/checksum/n-v-r.a.rpm if not omit_epoch
        <prefix>/<org_id>/checksum[:3]/n/v-r/a/checksum/n-v-r.a.rpm if omit_epoch
    """
    name, epoch, version, release, pkgarch = nevra

    # dirarch and pkgarch are special-cased for source rpms
    if source:
        dirarch = 'SRPMS'
    else:
        dirarch = pkgarch

    if org_id in ['', None]:
        org = "NULL"
    else:
        org = org_id

    if not omit_epoch and epoch not in [None, '']:
        version = str(epoch) + ':' + version
    # normpath sanitizes the path (removing duplicated / and such)
    template = os.path.normpath(prepend +
                                "/%s/%s/%s/%s-%s/%s/%s/%s-%s-%s.%s.%s")
    return template % (org, checksum[:3], name, version, release, dirarch, checksum,
                       name, nevra[2], release, pkgarch, package_type)


# bug #161989
# It seems that our software was written specifically for rpms in far too many
# ways. Here's a little bit of a hack function that will return the package path
# (as in from get_package_path) but without the filename appended.
# This enables us to append an arbitrary file name that is not restricted to the
# form: name-version-release.arch.type
def get_package_path_without_package_name(nevra, org_id, prepend="",
                                          checksum_type=None, checksum=None):
    """return a package path without the package name appended"""
    return os.path.dirname(get_package_path(nevra, org_id, prepend=prepend,
                                            checksum_type=checksum_type, checksum=checksum))


class CallableObj:

    """ Generic callable object """

    def __init__(self, name, func):
        self.func = func
        self.name = name

    def __call__(self, *args, **kwargs):
        return self.func(self.name, *args, **kwargs)


def make_evr(nvre, source=False):
    """ IN: 'e:name-version-release' or 'name-version-release:e'
        OUT: {'name':name, 'version':version, 'release':release, 'epoch':epoch }
    """
    if ":" in nvre:
        nvr, epoch = nvre.rsplit(":", 1)
    if "-" in epoch:
        nvr, epoch = epoch, nvr
    else:
        nvr, epoch = nvre, ""

    nvr_parts = nvr.rsplit("-", 2)
    if len(nvr_parts) != 3:
        raise rhnFault(err_code=21, err_text="NVRE is missing name, version, or release.")

    result = dict(list(zip(["name", "version", "release"], nvr_parts)))
    result["epoch"] = epoch

    if source and result["release"].endswith(".src"):
        result["release"] = result["release"][:-4]

    return result


def _is_secure_path(path):
    path = posixpath.normpath(path)
    return not (path.startswith('/') or path.startswith('../'))


def get_crash_path(org_id, system_id, crash):
    """For a given org_id, system_id and crash, return relative path to a crash directory."""

    path = os.path.join('systems', org_id, system_id, 'crashes', crash)

    if _is_secure_path(path):
        return path
    else:
        return None


def get_crashfile_path(org_id, system_id, crash, filename):
    """For a given org_id, system_id, crash and filename, return relative path to a crash file."""
    path = os.path.join(get_crash_path(org_id, system_id, crash), filename)

    if _is_secure_path(path):
        return path
    else:
        return None


def get_action_path(org_id, system_id, action_id):
    """For a given org_id, system_id, and action_id, return relative path to a store directory."""
    path = os.path.join('systems', str(org_id), str(system_id), 'actions', str(action_id))
    if _is_secure_path(path):
        return path


def get_actionfile_path(org_id, system_id, action_id, filename):
    """For a given org_id, system_id, action_id, and file, return relative path to a file."""
    path = os.path.join(get_action_path(org_id, system_id, action_id), str(filename))

    if _is_secure_path(path):
        return path
070701000001B3000081B40000000000000000000000016290A0C100000444000000000000000000000000000000000000002700000000spacewalk-backend/server/rhnMapping.py    #
# Copyright (c) 2008--2016 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#

from spacewalk.server import rhnSQL

# checks if an arch is for real


def check_package_arch(name):
    name = str(name)
    if name is None or len(name) == 0:
        return None
    h = rhnSQL.prepare("select id from rhnPackageArch where label = :label")
    h.execute(label=name)
    ret = h.fetchone_dict()
    if not ret:
        return None
    return name

if __name__ == '__main__':
    """Test code.
    """
    rhnSQL.initDB()
    print((check_package_arch('i386')))
070701000001B4000081B40000000000000000000000016290A0C10000267B000000000000000000000000000000000000002700000000spacewalk-backend/server/rhnPackage.py    #
# Copyright (c) 2008--2016 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#

import os
import sys

from uyuni.common.usix import ListType

from spacewalk.common import rhnFlags
from spacewalk.common.rhnLog import log_debug, log_error
from spacewalk.common.rhnConfig import CFG
from spacewalk.common.rhnException import rhnFault
from spacewalk.common.rhnTranslate import _
from spacewalk.server import rhnSQL
from .rhnLib import parseRPMFilename


#
# Functions that deal with the database
#

# New client
# Returns a package path, given a server_id, package filename and channel label
def get_package_path(server_id, pkg_spec, channel):
    log_debug(3, server_id, pkg_spec, channel)
    checksum = None
    if isinstance(pkg_spec, ListType):
        pkg = pkg_spec[:4]
        # Insert EPOCH
        pkg.insert(1, None)
    else:
        if "/" in pkg_spec:
            org, checksum, pkg_spec = pkg_spec.split('/', 2)
        pkg = parseRPMFilename(pkg_spec)
        if pkg is None:
            log_debug(4, "Error", "Requested weird package", pkg_spec)
            raise rhnFault(17, _("Invalid RPM package %s requested") % pkg_spec)

    statement = """
        select  p.id, p.path path, pe.epoch epoch
        from
                rhnPackageArch pa,
                rhnChannelPackage cp,
                rhnPackage p,
                rhnChecksum cs,
                rhnPackageEVR pe,
                rhnServerChannel sc,
                rhnPackageName pn,
                rhnChannel c
        where 1=1
            and c.label = :channel
            and pn.name = :name
            and sc.server_id = :server_id
            and pe.version = :ver
            and pe.release = :rel
            and c.id = sc.channel_id
            and c.id = cp.channel_id
            and pa.label = :arch
            and pn.id = p.name_id
            and p.id = cp.package_id
            and p.evr_id = pe.id
            and sc.channel_id = cp.channel_id
            and p.package_arch_id = pa.id
            and p.checksum_id = cs.id
            and (:checksum IS NULL OR cs.checksum = :checksum)
    """
    pkg = list(map(str, pkg))
    h = rhnSQL.prepare(statement)
    h.execute(name=pkg[0], ver=pkg[2], rel=pkg[3], arch=pkg[4],
              channel=channel, server_id=server_id, checksum=checksum)
    rs = h.fetchall_dict()
    if not rs:
        log_debug(4, "Error", "Non-existant package requested", server_id,
                  pkg_spec, channel)
        raise rhnFault(17, _("Invalid RPM package %s requested") % pkg_spec)
    # It is unlikely for this query to return more than one row,
    # but it is possible
    # (having two packages with the same n, v, r, a and different epoch in
    # the same channel is prohibited by the RPM naming scheme; but extra
    # care won't hurt)
    max_row = rs[0]
    for each in rs[1:]:
        # Compare the epoch as string
        if _none2emptyString(each['epoch']) > _none2emptyString(max_row['epoch']):
            max_row = each

    # Set the flag for the proxy download accelerator
    rhnFlags.set("Download-Accelerator-Path", max_row['path'])
    return check_package_file(max_row['path'], max_row['id'], pkg_spec), max_row['id']


def check_package_file(rel_path, logpkg, raisepkg):
    if rel_path is None:
        log_error("Package path null for package id", logpkg)
        raise rhnFault(17, _("Invalid RPM package %s requested") % raisepkg)
    filePath = "%s/%s" % (CFG.MOUNT_POINT, rel_path)
    if not os.access(filePath, os.R_OK):
        # Package not found on the filesystem
        log_error("Package not found", filePath)
        raise rhnFault(17, _("Package not found"))

    return filePath


def unlink_package_file(path):
    try:
        os.unlink(path)
    except OSError:
        log_debug(1,  "Error unlinking %s;" % path)
    dirname = os.path.dirname(path)
    base_dirs = (CFG.MOUNT_POINT + '/' + CFG.PREPENDED_DIR, CFG.MOUNT_POINT)
    while dirname not in base_dirs:
        try:
            os.rmdir(dirname)
        except OSError:
            e = sys.exc_info()[1]
            if e.errno == 39:  # OSError: [Errno 39] Directory not empty
                break
            else:
                raise
        dirname = os.path.dirname(dirname)


def get_all_package_paths(server_id, pkg_spec, channel):
    """
    return the remote path if available and localpath
    for the requested package with respect to package id
    """
    log_debug(3, server_id, pkg_spec, channel)
    remotepath = None
    # get the path and package
    localpath, pkg_id = get_package_path(server_id, pkg_spec, channel)

    return remotepath, localpath

# New client
# Returns the path to a source rpm


def get_source_package_path(server_id, pkgFilename, channel):
    log_debug(3, server_id, pkgFilename, channel)
    rs = __query_source_package_path_by_name(server_id, pkgFilename, channel)
    if rs is None:
        log_debug(4, "Error", "Non-existant package requested", server_id,
                  pkgFilename, channel)
        raise rhnFault(17, _("Invalid RPM package %s requested") % pkgFilename)

    # Set the flag for the proxy download accelerator
    rhnFlags.set("Download-Accelerator-Path", rs['path'])
    return check_package_file(rs['path'], pkgFilename, pkgFilename)


# 0 or 1: is this source in this channel?
def package_source_in_channel(server_id, pkgFilename, channel):
    log_debug(3, server_id, pkgFilename, channel)
    rs = __query_source_package_path_by_name(server_id, pkgFilename, channel)
    if rs is None:
        return 0
    return 1


# The query used both in get_source_package_path and package_source_in_channel
def __query_source_package_path_by_name(server_id, pkgFilename, channel):
    statement = """
    select
            unique ps.path
    from
            rhnSourceRPM sr,
            rhnPackageSource ps,
            rhnPackage p,
            rhnChannelPackage cp,
            rhnChannel c,
            rhnServerChannel sc
    where
                sc.server_id = :server_id
            and sc.channel_id = cp.channel_id
            and cp.channel_id = c.id
            and c.label = :channel
            and cp.package_id = p.id
            and p.source_rpm_id = sr.id
            and sr.name = :name
            and p.source_rpm_id = ps.source_rpm_id
            and ((p.org_id is null and ps.org_id is null)
                or p.org_id = ps.org_id)
    """
    h = rhnSQL.prepare(statement)
    h.execute(name=pkgFilename, channel=channel, server_id=server_id)
    return h.fetchone_dict()


def get_info_for_package(pkg, channel_id, org_id):
    log_debug(3, pkg)
    pkg = list(map(str, pkg))
    params = {'name': pkg[0],
              'ver': pkg[1],
              'rel': pkg[2],
              'epoch': pkg[3],
              'arch': pkg[4],
              'channel_id': channel_id,
              'org_id': org_id}
    # yum repo has epoch="0" not only when epoch is "0" but also if it's NULL
    # in DB we cannot insert an empty string, so we check for NULL or '0'
    if pkg[3] == '0' or pkg[3] == '' or pkg[3] is None:
        epochStatement = "(epoch is null or epoch = '0')"
    else:
        epochStatement = "epoch = :epoch"
    if params['org_id']:
        orgStatement = "org_id = :org_id"
    else:
        orgStatement = "org_id is null"

    statement = """
    select p.path, cp.channel_id,
           cv.checksum_type, cv.checksum, p.org_id, pe.epoch
      from rhnPackage p
      join rhnPackageName pn
        on p.name_id = pn.id
      join rhnPackageEVR pe
        on p.evr_id = pe.id
      join rhnPackageArch pa
        on p.package_arch_id = pa.id
      left join rhnChannelPackage cp
        on p.id = cp.package_id
       and cp.channel_id = :channel_id
      join rhnChecksumView cv
        on p.checksum_id = cv.id
     where pn.name = :name
       and pe.version = :ver
       and pe.release = :rel
       and %s
       and pa.label = :arch
       and %s
     order by cp.channel_id nulls last,
              p.id desc
    """ % (epochStatement, orgStatement)

    h = rhnSQL.prepare(statement)
    h.execute(**params)

    ret = h.fetchall_dict() or []
    if not ret:
        return ret
    for i in ret:
        if i['org_id'] == None:
            i['org_id'] = ''
        else:
            i['org_id'] = str(i['org_id'])
    return ret


def _none2emptyString(foo):
    if foo is None:
        return ""
    return str(foo)

def add_eula_to_package(package_id, eula_id):
    """ Associates an EULA to a package """

    h = rhnSQL.prepare("""
        SELECT *
          FROM susePackageEula
         WHERE package_id = :package_id
           AND eula_id    = :eula_id
    """)
    h.execute(package_id=package_id, eula_id=eula_id)
    ret = h.fetchone_dict()

    if not ret:
        h = rhnSQL.prepare("""
            INSERT INTO susePackageEula (package_id, eula_id)
                 VALUES (:package_id, :eula_id)
        """)
        h.execute(package_id=package_id, eula_id=eula_id)

if __name__ == '__main__':
    """Test code.
    """
    from spacewalk.common.rhnLog import initLOG
    initLOG("stdout", 1)
    rhnSQL.initDB()
    print("")
    # new client
    print((get_package_path(1000463284, 'kernel-2.4.2-2.i686.rpm', 'redhat-linux-i386-7.1')))
    print((get_source_package_path(1000463284, 'kernel-2.4.2-2.i686.rpm', 'redhat-linux-i386-7.1')))
 070701000001B5000081B40000000000000000000000016290A0C100002F6D000000000000000000000000000000000000002D00000000spacewalk-backend/server/rhnPackageUpload.py  #
# Copyright (c) 2008--2016 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#

import os
import sys
import tempfile

from uyuni.common.usix import raise_with_tb
from uyuni.common import rhn_mpm, rhn_deb, rhn_pkg
from spacewalk.common.rhnLog import log_debug
from spacewalk.common.rhnConfig import CFG
from spacewalk.common.rhnException import rhnFault
from uyuni.common.rhn_rpm import get_header_byte_range

from spacewalk.server import rhnSQL
from spacewalk.server.importlib.backendOracle import SQLBackend
from spacewalk.server.importlib import importLib, userAuth, mpmSource, \
    packageImport, errataCache
from spacewalk.server.rhnLib import get_package_path, \
    get_package_path_without_package_name
from spacewalk.server.rhnServer import server_packages


def authenticate(username, password, channels=[], null_org=None, force=None):
    log_debug(4, username, force)
    authobj = userAuth.UserAuth()
    authobj.auth(username, password)
    return _authenticate(authobj, channels, null_org, force)


def authenticate_session(session_string, channels=[], null_org=None, force=None):
    log_debug(4, session_string, force)
    authobj = userAuth.UserAuth()
    authobj.auth_session(session_string)
    return _authenticate(authobj, channels, null_org, force)


def _authenticate(authobj, channels, null_org, force):
    params = {}
    if null_org:
        params['orgId'] = ''

        # XXX don't allow superusers to force stuff
        if force:
            raise rhnFault(4, "Cannot force push nullorg content", explain=0)

    if force and not CFG.FORCE_PACKAGE_UPLOAD:
        raise rhnFault(55, "Package Upload Failed", explain=0)

    authobj.authzOrg(params)
    if channels:
        authobj.authzChannels(channels)

    if null_org:
        org_id = None
    else:
        org_id = authobj.org_id

    return org_id, force


def relative_path_from_header(header, org_id, checksum_type=None, checksum=None):
    nevra = importLib.get_nevra(header)
    if header.is_source:
        # 4/18/05 wregglej. if 1051 is in the header's keys, then it's a nosrc package.
        if 1051 in list(header.keys()):
            nevra[4] = 'nosrc'
        else:
            nevra[4] = 'src'

    log_debug(4, "NEVRA", nevra)

    # if the package isn't an rpm and the package name is spelled out in the
    # header, use it
    if header.packaging == "mpm" and "package_name" in list(header.keys()) and \
       header["package_name"]:

        rel_path = relative_path_from_nevra_without_package_name(nevra, org_id,
                                                                 checksum_type, checksum)
        return os.path.join(rel_path, header["package_name"])

    return relative_path_from_nevra(nevra,
                                    org_id, header.packaging, checksum_type, checksum)


def relative_path_from_nevra(nevra, org_id, package_type=None, checksum_type=None, checksum=None):
    # 4/18/05 wregglej. if 1051 is in the header's keys, then it's a nosrc package.
    if nevra[4] == 'src' or nevra[4] == 'nosrc':
        is_source = 1
    else:
        is_source = 0
    log_debug(4, nevra, is_source)
    return get_package_path(nevra, org_id=org_id, source=is_source,
                            prepend=CFG.PREPENDED_DIR, omit_epoch=None, package_type=package_type,
                            checksum_type=checksum_type, checksum=checksum)

# bug #161989 - get the relative path from the nevra, but omit the package name


def relative_path_from_nevra_without_package_name(nevra, org_id, checksum_type, checksum):
    log_debug(4, nevra, "no package name")
    return get_package_path_without_package_name(nevra, org_id,
                                                 CFG.PREPENDED_DIR, checksum_type, checksum)


def push_package(a_pkg, org_id=None, force=None, channels=[], relative_path=None):
    """Uploads a package"""

    if relative_path:
        # First write the package to the filesystem to final location
        try:
            importLib.move_package(a_pkg.payload_stream.name, basedir=CFG.MOUNT_POINT,
                                   relpath=relative_path,
                                   checksum_type=a_pkg.checksum_type, checksum=a_pkg.checksum, force=1)
        except OSError:
            e = sys.exc_info()[1]
            raise_with_tb(rhnFault(50, "Package upload failed: %s" % e), sys.exc_info()[2])
        except importLib.FileConflictError:
            raise_with_tb(rhnFault(50, "File already exists"), sys.exc_info()[2])
        except:
            raise_with_tb(rhnFault(50, "File error"), sys.exc_info()[2])

        # Remove any pending scheduled file deletion for this package
        h = rhnSQL.prepare("""
            delete from rhnPackageFileDeleteQueue where path = :path
        """)
        h.execute(path=relative_path)

    pkg = mpmSource.create_package(a_pkg.header, size=a_pkg.payload_size,
                                   checksum_type=a_pkg.checksum_type, checksum=a_pkg.checksum,
                                   relpath=relative_path, org_id=org_id, header_start=a_pkg.header_start,
                                   header_end=a_pkg.header_end, channels=channels)

    batch = importLib.Collection()
    batch.append(pkg)

    backend = SQLBackend()

    if force:
        upload_force = 4
    else:
        upload_force = 0
    importer = packageImport.packageImporter(batch, backend,
                                             source=a_pkg.header.is_source, caller="server.app.uploadPackage")
    importer.setUploadForce(upload_force)
    importer.run()

    package = batch[0]
    log_debug(5, "Package diff", package.diff)

    if package.diff and not force and package.diff.level > 1:
        # Packages too different; bail out
        log_debug(1, "Packages too different", package.toDict(),
                  "Level:", package.diff.level)
        pdict = package.toDict()
        orig_path = package['path']
        orig_path = os.path.join(CFG.MOUNT_POINT, orig_path)
        log_debug(4, "Original package", orig_path)

        # MPMs do not store their headers on disk, so we must avoid performing
        # operations which rely on information only contained in the headers
        # (such as header signatures).
        if os.path.exists(orig_path) and a_pkg.header.packaging != 'mpm':
            oh = rhn_pkg.get_package_header(orig_path)
            _diff_header_sigs(a_pkg.header, oh, pdict['diff']['diff'])

        return pdict, package.diff.level

    if package.diff and not force and package.diff.level:
        # No need to copy it - just the path is modified
        # pkilambi bug#180347
        # case 1:check if the path exists in the db and also on the file system.
        # if it does then no need to copy
        # case2: file exists on file system but path not in db.then add the
        # realtive path in the db based on checksum of the pkg
        # case3: if no file on file system but path exists.then we write the
        # file to file system
        # case4:no file exists on FS and no path in db .then we write both.
        orig_path = package['path']
        orig_path = os.path.join(CFG.MOUNT_POINT, orig_path)
        log_debug(3, "Original package", orig_path)

        # check included to query for source and binary rpms
        h_path_sql = """
            select ps.path path
                from %s ps,
                     rhnChecksumView c
            where
                c.checksum = :csum
            and c.checksum_type = :ctype
            and ps.checksum_id = c.id
            and (ps.org_id = :org_id or
                 (ps.org_id is null and :org_id is null)
                )
            """
        if a_pkg.header.is_source:
            h_package_table = 'rhnPackageSource'
        else:
            h_package_table = 'rhnPackage'
        h_path = rhnSQL.prepare(h_path_sql % h_package_table)
        h_path.execute(ctype=a_pkg.checksum_type, csum=a_pkg.checksum, org_id=org_id)

        rs_path = h_path.fetchall_dict()
        path_dict = {}
        if rs_path:
            path_dict = rs_path[0]

        if os.path.exists(orig_path) and path_dict['path']:
            return {}, 0
        elif not path_dict['path']:
            h_upd = rhnSQL.prepare("""
            update rhnpackage
               set path = :path
            where checksum_id = (
                        select id from rhnChecksumView c
                                 where c.checksum = :csum
                                   and c.checksum_type = :ctype)
            """)
            h_upd.execute(path=relative_path, ctype=a_pkg.checksum_type,
                          csum=a_pkg.checksum)

    # commit the transactions
    rhnSQL.commit()
    if not a_pkg.header.is_source:
        # Process Package Key information
        server_packages.processPackageKeyAssociations(a_pkg.header,
                                                      a_pkg.checksum_type, a_pkg.checksum)

    if not a_pkg.header.is_source:
        errataCache.schedule_errata_cache_update(importer.affected_channels)

    log_debug(2, "Returning")
    return {}, 0


def _diff_header_sigs(h1, h2, diff_list):
    # XXX This can be far more complicated if we take into account that
    # signatures can be different
    h1sigs = h1.signatures
    h2sigs = h2.signatures
    if not h1sigs and not h2sigs:
        # No differences here
        return
    h1_key_ids = _key_ids(h1sigs)
    h2_key_ids = _key_ids(h2sigs)

    diff_list.append(['sig_key_id', h1_key_ids, h2_key_ids])


def _key_ids(sigs):
    h = {}
    for sig in sigs:
        h[sig['key_id']] = None

    l = list(h.keys())
    l.sort()
    return l


def save_uploaded_package(stream, nevra, org_id, packaging,
                          checksum_type=None, checksum=None):
    a_pkg = rhn_pkg.package_from_stream(stream, packaging=packaging)
    a_pkg.read_header()

    temp_dir = os.path.join(CFG.MOUNT_POINT, CFG.PREPENDED_DIR, org_id, 'stage')
    if not os.path.isdir(temp_dir):
        os.makedirs(temp_dir)
    temp_stream = tempfile.NamedTemporaryFile(dir=temp_dir,
                                              prefix='-'.join((nevra[0], nevra[2], nevra[3], nevra[4])))
    a_pkg.save_payload(temp_stream)

    if checksum_type and checksum:
        # verify checksum
        if not (checksum_type == a_pkg.checksum_type
                and checksum == a_pkg.checksum):
            log_debug(1, "Mismatching checksums: expected %s:%s got %s:%s" %
                      (checksum_type, checksum,
                       a_pkg.checksum_type, a_pkg.checksum))
            raise rhnFault(104, "Mismatching information")

    temp_stream.file.close()
    temp_stream.close_called = True
    return a_pkg


def load_package(package_stream):
    if package_stream.name.endswith('.deb'):
        try:
            header, payload_stream = rhn_deb.load(filename=package_stream.name)
        except:
            raise_with_tb(rhnFault(50, "Unable to load package", explain=0), sys.exc_info()[2])
    else:
        try:
            header, payload_stream = rhn_mpm.load(file_obj=package_stream)
        except:
            raise_with_tb(rhnFault(50, "Unable to load package", explain=0), sys.exc_info()[2])

    payload_stream.seek(0, 0)
    if header.packaging == "mpm" or header.packaging == "deb":
        header.header_start = header.header_end = 0
        (header_start, header_end) = (0, 0)
    else:
        (header_start, header_end) = get_header_byte_range(payload_stream)
        payload_stream.seek(0, 0)

    return header, payload_stream, header_start, header_end


class AlreadyUploadedError(Exception):
    pass
   070701000001B6000081B40000000000000000000000016290A0C100003E88000000000000000000000000000000000000002A00000000spacewalk-backend/server/rhnRepository.py #
# Copyright (c) 2008--2018 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#
#

# system module imports
import os
import stat
import sys

from rhn import rpclib

# common modules imports
from uyuni.common.usix import raise_with_tb
from spacewalk.common import rhnRepository, rhnFlags, rhnCache
from spacewalk.common.rhnLog import log_debug
from spacewalk.common.rhnConfig import CFG
from spacewalk.common.rhnException import rhnFault, redirectException
from uyuni.common.rhnLib import rfc822time, timestamp

# local modules imports
from spacewalk.server import rhnChannel, rhnPackage, taskomatic, rhnSQL
from .rhnServer import server_lib
from .repomd import repository


class Repository(rhnRepository.Repository):

    """ Cache class to perform RHN server file system and DB actions.

    This class gets all data from the file system and oracle.
    All the functions that are performed upon GET requests are here (and
    since proxies perform these functions as well, a good chunk of code is
    in common/rhnRepository.py)

    The listall code is here too, because it performs a lot of disk caching
    and here's the appropriate location for it

    The dependency solving code is not handled in this repository -
    all the code we need is already in xmlrpc/up2date
    """

    def __init__(self, channelName=None, server_id=None, username=None):
        """Initialize the class, setting channel name and server

        ID, that serial number (w/o ID-), if necessary.
        NOTE: server_id is a string.
        """
        log_debug(3, channelName, server_id)
        rhnRepository.Repository.__init__(self, channelName)
        self.server_id = server_id
        self.username = username
        self.functions.append('listPackages')
        self.functions.append('getObsoletes')
        self.functions.append('getObsoletesBlacklist')
        self.functions.append('listAllPackages')
        self.functions.append('listAllPackagesChecksum')
        self.functions.append('listAllPackagesComplete')
        self.functions.append('repodata')
        self.set_compress_headers(CFG.COMPRESS_HEADERS)
        self.redirect_location = None

    def getPackageHeader(self, pkgFilename):
        ret = rhnRepository.Repository.getPackageHeader(self, pkgFilename)
        # Clean up the download-accelerator flag
        rhnFlags.set("Download-Accelerator-Path", None)
        return ret

    def listChannels(self):
        """ Clients v2+
        returns a list of the channels the server is subscribed to, or
        could subscribe to.
        """
        return rhnChannel.channels_for_server(self.server_id)

    def listPackages(self, version):
        """ Clients v2+.
        Creates and/or serves up a cached copy of the package list for
        this channel.
        """
        log_debug(3, self.channelName, version)
        # Check to see if the version they are requesting is the latest

        # check the validity of what the client thinks about this channel
        # or blow up
        self.__check_channel(version)

        packages = rhnChannel.list_packages(self.channelName)

        # transport options...
        transportOptions = rhnFlags.get('outputTransportOptions')
        transportOptions['Last-Modified'] = rfc822time(timestamp(version))
        rhnFlags.set("compress_response", 1)
        return packages

    def getObsoletes(self, version):
        """ Returns a list of packages that obsolete other packages """
        log_debug(3, self.channelName, version)
        # Check to see if the version they are requesting is the latest

        # check the validity of what the client thinks about this channel
        # or blow up
        self.__check_channel(version)

        obsoletes = rhnChannel.list_obsoletes(self.channelName)

        # Set the transport options
        transportOptions = rhnFlags.get('outputTransportOptions')
        transportOptions['Last-Modified'] = rfc822time(timestamp(version))
        rhnFlags.set("compress_response", 1)
        return obsoletes

    def getObsoletesBlacklist(self, version):
        """ Returns a list of packages that obsolete other packages
        XXX Obsoleted
        """
        log_debug(3, self.channelName, version)
        # Check to see if the version they are requesting is the latest

        # check the validity of what the client thinks about this channel
        # or blow up
        self.__check_channel(version)

        # Set the transport options
        transportOptions = rhnFlags.get('outputTransportOptions')
        transportOptions['Last-Modified'] = rfc822time(timestamp(version))
        rhnFlags.set("compress_response", 1)
        # Return nothing
        return []

    def listAllPackages(self, version):
        """ Creates and/or serves up a cached copy of all the packages for
        this channel.
        """
        log_debug(3, self.channelName, version)
        # Check to see if the version they are requesting is the latest

        # check the validity of what the client thinks about this channel
        # or blow up
        self.__check_channel(version)

        packages = rhnChannel.list_all_packages(self.channelName)

        # transport options...
        transportOptions = rhnFlags.get('outputTransportOptions')
        transportOptions['Last-Modified'] = rfc822time(timestamp(version))
        rhnFlags.set("compress_response", 1)
        return packages

    def listAllPackagesChecksum(self, version):
        """ Creates and/or serves up a cached copy of all the packages for
        this channel, including checksum information.
        """
        log_debug(3, self.channelName, version)
        # Check to see if the version they are requesting is the latest

        # check the validity of what the client thinks about this channel
        # or blow up
        self.__check_channel(version)

        packages = rhnChannel.list_all_packages_checksum(self.channelName)

        # transport options...
        transportOptions = rhnFlags.get('outputTransportOptions')
        transportOptions['Last-Modified'] = rfc822time(timestamp(version))
        rhnFlags.set("compress_response", 1)
        return packages

    def listAllPackagesComplete(self, version):
        """ Creates and/or serves up a cached copy of all the packages for
        this channel including requires, obsoletes, conflicts, etc.
        """
        log_debug(3, self.channelName, version)
        # Check to see if the version they are requesting is the latest

        # check the validity of what the client thinks about this channel
        # or blow up
        self.__check_channel(version)

        packages = rhnChannel.list_all_packages_complete(self.channelName)

        # transport options...
        transportOptions = rhnFlags.get('outputTransportOptions')
        transportOptions['Last-Modified'] = rfc822time(timestamp(version))
        rhnFlags.set("compress_response", 1)
        return packages

    def _repodata_python(self, file_name):
        log_debug(3, 'repodata', file_name)
        c_info = rhnChannel.channel_info(self.channelName)
        repo = repository.get_repository(c_info)

        output = None
        content_type = "application/x-gzip"

        if file_name == "repomd.xml":
            content_type = "text/xml"
            output = repo.get_repomd_file()
        elif file_name == "primary.xml.gz":
            output = repo.get_primary_xml_file()
        elif file_name == "other.xml.gz":
            output = repo.get_other_xml_file()
        elif file_name == "filelists.xml.gz":
            output = repo.get_filelists_xml_file()
        elif file_name == "updateinfo.xml.gz":
            output = repo.get_updateinfo_xml_file()
        elif file_name == "comps.xml":
            content_type = "text/xml"
            output = repo.get_comps_file()
        elif file_name == "modules.yaml":
            output = repo.get_modules_file()
        else:
            log_debug(2, "Unknown repomd file requested: %s" % file_name)
            raise rhnFault(6)

        output = rpclib.transports.File(output, name=file_name)

        rhnFlags.set('Content-Type', content_type)

        return output

    def _repodata_taskomatic(self, file_name):
        log_debug(3, 'repodata', file_name)

        content_type = "application/x-gzip"

        if file_name.endswith(".xml"):
            content_type = "text/xml"
        elif file_name in ["repomd.xml.asc", "repomd.xml.key"]:
            content_type = "text/plain"
        elif file_name.endswith(".yaml"):
             content_type = "text/yaml"
        file_path = "%s/%s/%s" % (CFG.REPOMD_PATH_PREFIX, self.channelName, file_name)
        if file_name in ["comps.xml", "modules.yaml"]:
            # without checksum in the filename, they are only available in the old style
            return self._repodata_python(file_name)
        elif not os.path.exists(os.path.join(CFG.REPOMD_CACHE_MOUNT_POINT, file_path)):
            log_debug(2, "Unknown repomd file requested: %s" % file_name)
            raise rhnFault(6)

        rhnFlags.set('Content-Type', content_type)
        try:
            rhnFlags.set('Download-Accelerator-Path', file_path)
            return self._getFile(CFG.REPOMD_CACHE_MOUNT_POINT + "/" + file_path)
        except IOError:
            e = sys.exc_info()[1]
            # For file not found, queue up a regen, and return 404
            if e.errno == 2:
                if file_name not in ["repomd.xml.key", "repomd.xml.asc"]:
                    taskomatic.add_to_repodata_queue(self.channelName, "repodata request",
                                                     file_name, bypass_filters=True)
                    rhnSQL.commit()
                # This returns 404 to the client
                raise_with_tb(rhnFault(6), sys.exc_info()[2])
            raise

    def repodata(self, file_name):
        # By default we're using taskomatic's repomd. But if the config
        # value is present and set to anything other than 1, we'll use the
        # old python code
        use_taskomatic = True
        try:
            use_taskomatic = (CFG.USE_TASKOMATIC_REPOMD == 1)
        except AttributeError:
            pass

        log_debug(4, "Using taskomatic for repomd generation: %s"
                  % use_taskomatic)

        if use_taskomatic:
            return self._repodata_taskomatic(file_name)
        else:
            return self._repodata_python(file_name)

    # Helper functions
    # These functions are not private, they should be defined as 'protected',
    # since the code that handles v2 package retrieval (plus headers) is in
    # common/rhnRepository, and expects a definition for these functions to
    # know where to take stuff from

    def getPackagePath(self, pkgFilename, redirect_capable=0):
        """ Retrieves package path
        Overloads getPackagePath in common/rhnRepository.
        checks if redirect and hosted;
        makes a call to query the db for pkg_location
        """

        log_debug(2, pkgFilename, redirect_capable)
        # check for re-direct check flag from header to issue package
        # request from client in order to avoid failover loops.
        skip_redirect = rhnFlags.get('x-rhn-redirect')
        log_debug(3, "check flag for X-RHN-REDIRECT  ::", skip_redirect)

        # get the redirect and local paths
        remotepath, localpath = self.getAllPackagePaths(pkgFilename)

        # check for redirect conditions and fail over checks
        if redirect_capable and not CFG.SATELLITE and not skip_redirect \
                and remotepath is not None:
            self.redirect_location = remotepath
            # We've set self.redirect_location, we're done here
            # we throw a redirectException in _getFile method.
            return None
            # Package cannot be served from the edge, we serve it ourselves
        return localpath

    def _getFile(self, path):
        """
        overwrites the common/rhnRepository._getFile to check for redirect
        """
        if self.redirect_location:
            raise redirectException(self.redirect_location)
        return rhnRepository.Repository._getFile(self, path)

    def getAllPackagePaths(self, pkgFilename):
        """
        retrives the package location if edge network location available
        and its local path.
        """
        log_debug(3, pkgFilename)
        return rhnPackage.get_all_package_paths(self.server_id, pkgFilename,
                                                self.channelName)

    def getSourcePackagePath(self, pkgFilename):
        """ Retrieves package source path
            Overloads getSourcePackagePath in common/rhnRepository.
        """
        return rhnPackage.get_source_package_path(self.server_id, pkgFilename,
                                                  self.channelName)

    # Private methods

    def __check_channel(self, version):
        """ check if the current channel version matches that of the client """
        channel_list = rhnChannel.channels_for_server(self.server_id)
        # Check the subscription to this channel
        for channel in channel_list:
            if channel['label'] == self.channelName:
                # Okay, we verified the subscription
                # Check the version too
                if channel['last_modified'] == version:
                    # Great
                    break
                # Old version; should re-login to get the new version
                raise rhnFault(41, "Invalid channel version")
        else:
            # Not subscribed
            raise rhnFault(39, "No subscription to the specified channel")
        return 1

    def set_qos(self):
        server_lib.set_qos(self.server_id)

    def _getHeaderFromFile(self, filePath, stat_info=None):
        """ Wraps around common.rhnRepository's method, adding a caching layer
        If stat_info was already passed, don't re-stat the file
        """
        log_debug(3, filePath)
        if not CFG.CACHE_PACKAGE_HEADERS:
            return rhnRepository.Repository._getHeaderFromFile(self, filePath,
                                                               stat_info=stat_info)
        # Ignore stat_info for now - nobody sets it anyway
        stat_info = None
        try:
            stat_info = os.stat(filePath)
        except:
            raise_with_tb(rhnFault(17, "Unable to read package %s"
                               % os.path.basename(filePath)), sys.exc_info()[2])
        lastModified = stat_info[stat.ST_MTIME]

        # OK, file exists, check the cache
        cache_key = os.path.normpath("headers/" + filePath)
        header = rhnCache.get(cache_key, modified=lastModified, raw=1,
                              compressed=1)
        if header:
            # We're good to go
            log_debug(2, "Header cache HIT for %s" % filePath)
            extra_headers = {
                'X-RHN-Package-Header': os.path.basename(filePath),
            }
            self._set_last_modified(lastModified, extra_headers=extra_headers)
            return header
        log_debug(3, "Header cache MISS for %s" % filePath)
        header = rhnRepository.Repository._getHeaderFromFile(self, filePath,
                                                             stat_info=stat_info)
        if header:
            rhnCache.set(cache_key, header, modified=lastModified, raw=1,
                         compressed=1)
        return header
070701000001B7000041FD0000000000000000000000016290A0C100000000000000000000000000000000000000000000002000000000spacewalk-backend/server/rhnSQL   070701000001B8000081B40000000000000000000000016290A0C1000000EC000000000000000000000000000000000000002900000000spacewalk-backend/server/rhnSQL/Makefile  # Makefile for the rhnSQL module
#

TOP     = ../..
SUBDIR	= server/rhnSQL

SPACEWALK_FILES	= __init__ sql_base sql_lib \
	  sql_row sql_sequence sql_table sql_types \
          dbi driver_postgresql const

include $(TOP)/Makefile.defs
070701000001B9000081B40000000000000000000000016290A0C100001DD0000000000000000000000000000000000000002C00000000spacewalk-backend/server/rhnSQL/__init__.py   #
# Copyright (c) 2008--2016 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#
# entry points for the rhnSQL module
#

import sys

from uyuni.common.usix import raise_with_tb
from spacewalk.common.rhnLog import log_debug
from spacewalk.common.rhnConfig import CFG, initCFG
from spacewalk.common.rhnException import rhnException
from spacewalk.common.rhnTB import add_to_seclist

# SQL objects
from . import sql_table
from . import sql_row
from . import sql_sequence
from . import dbi
from . import sql_types
types = sql_types

from .const import POSTGRESQL, SUPPORTED_BACKENDS

# expose exceptions
from .sql_base import SQLError, SQLSchemaError, SQLConnectError, \
    SQLStatementPrepareError, Statement, ModifiedRowError

# ths module works with a private global __DB object that is
# instantiated by the initDB call. This object/instance should NEVER,
# EVER be exposed to the calling applications.


def __init__DB(backend, host, port, username, password, database, sslmode, sslrootcert):
    """
    Establish and check the connection so we can wrap it and handle
    exceptions.
    """
    # __DB global object created here and pushed into the global namespace.
    global __DB
    try:
        my_db = __DB
    except NameError:  # __DB has not been set up
        db_class = dbi.get_database_class(backend=backend)
        __DB = db_class(host, port, username, password, database, sslmode, sslrootcert)
        __DB.connect()
        return
    else:
        del my_db

    if __DB.is_connected_to(backend, host, port, username, password,
                            database, sslmode, sslrootcert):
        __DB.check_connection()
        return

    __DB.commit()
    __DB.close()
    # now we have to get a different connection
    __DB = dbi.get_database_class(backend=backend)(
        host, port, username, password, database, sslmode, sslrootcert)
    __DB.connect()
    return 0


def initDB(backend=None, host=None, port=None, username=None,
           password=None, database=None, sslmode=None, sslrootcert=None):
    """
    Initialize the database.

    Either we get backend and all parameter which means the caller
    knows what they are doing, or we populate everything from the
    config files.
    """

    if backend is None:
        if CFG is None or not CFG.is_initialized():
            initCFG('server')
        backend = CFG.DB_BACKEND
        host = CFG.DB_HOST
        port = CFG.DB_PORT
        database = CFG.DB_NAME
        username = CFG.DB_USER
        password = CFG.DB_PASSWORD
        sslmode = None
        sslrootcert = None
        if CFG.DB_SSL_ENABLED:
            sslmode = 'verify-full'
            sslrootcert = CFG.DB_SSLROOTCERT

    if backend not in SUPPORTED_BACKENDS:
        raise rhnException("Unsupported database backend", backend)

    if port:
        port = int(port)

    # Hide the password
    add_to_seclist(password)
    try:
        __init__DB(backend, host, port, username, password, database, sslmode, sslrootcert)
#    except (rhnException, SQLError):
#        raise  # pass on, we know those ones
#    except (KeyboardInterrupt, SystemExit):
#        raise
    except SQLConnectError:
        e = sys.exc_info()[1]
        try:
            closeDB()
        except NameError:
            pass
        raise_with_tb(e, sys.exc_info()[2])
    except:
        raise
        #e_type, e_value = sys.exc_info()[:2]
        # raise rhnException("Could not initialize Oracle database connection",
        #                   str(e_type), str(e_value))
    return 0

# close the database


def closeDB(committing=True, closing=True):
    global __DB
    try:
        my_db = __DB
    except NameError:
        return
    else:
        del my_db
    if committing:
        __DB.commit()
    if closing:
        __DB.close()
    del __DB
    return


# common function for testing the connection state (ie, __DB defined
def __test_DB():
    global __DB
    try:
        return __DB
    except NameError:
        raise_with_tb(SystemError("Not connected to any database!"), sys.exc_info()[2])

# wrapper for a Procedure callable class


def Procedure(name):
    db = __test_DB()
    return db.procedure(name)


# wrapper for a Procedure callable class
def Function(name, ret_type):
    db = __test_DB()
    return db.function(name, ret_type)


# Wrapper for the Sequence class
def Sequence(seq):
    db = __test_DB()
    return sql_sequence.Sequence(db, seq)


# Wrapper for the Row class
def Row(table, hash_name, hash_value=None):
    db = __test_DB()
    return sql_row.Row(db, table, hash_name, hash_value)


# Wrapper for the Table class
def Table(table, hash_name, local_cache=0):
    db = __test_DB()
    return sql_table.Table(db, table, hash_name, local_cache)


###########################
# Functions points of entry
###########################


def cursor():
    db = __test_DB()
    return db.cursor()


def prepare(sql, blob_map=None):
    db = __test_DB()
    if isinstance(sql, Statement):
        sql = sql.statement
    return db.prepare(sql, blob_map=blob_map)


def execute(sql, *args, **kwargs):
    db = __test_DB()
    return db.execute(sql, *args, **kwargs)


def fetchall_dict(sql, *args, **kwargs):
    h = prepare(sql)
    h.execute(sql, *args, **kwargs)
    return h.fetchall_dict()


def fetchone_dict(sql, *args, **kwargs):
    h = prepare(sql)
    h.execute(sql, *args, **kwargs)
    return h.fetchone_dict()


def commit():
    db = __test_DB()
    return db.commit()


def rollback(name=None):
    db = __test_DB()
    return db.rollback(name)


def transaction(name):
    db = __test_DB()
    return db.transaction(name)


def TimestampFromTicks(*args, **kwargs):
    db = __test_DB()
    return db.TimestampFromTicks(*args, **kwargs)


def DateFromTicks(*args, **kwargs):
    db = __test_DB()
    return db.DateFromTicks(*args, **kwargs)


def Date(*args, **kwargs):
    db = __test_DB()
    return db.Date(*args, **kwargs)


def _fix_encoding(text):
    if isinstance(text, str):
        return text
    elif isinstance(text, bytes):
        try:
            return text.decode("utf8")
        except:
            return text.decode("iso8859-1")


def read_lob(lob):
    if not lob:
        return None
    db = __test_DB()
    return db._read_lob(lob)


class _Callable(object):

    def __init__(self, name):
        self._name = name
        self._implementor = None

    def __getattr__(self, name):
        return self.__class__("%s.%s" % (self._name, name))

    def __call__(self, *args):
        proc = self._implementor.__call__(self._name)
        return proc(*args)


class _Procedure(_Callable):

    def __init__(self, name):
        _Callable.__init__(self, name)
        self._implementor = Procedure


class _Function(_Callable):

    def __init__(self, name):
        _Callable.__init__(self, name)
        self._implementor = Function


class _CallableWrapper(object):

    def __init__(self, wrapped):
        self._wrapped = wrapped

    def __getattr__(self, x):
        return self._wrapped(x)

procedure = _CallableWrapper(_Procedure)
function = _CallableWrapper(_Function)
070701000001BA000081B40000000000000000000000016290A0C1000002FD000000000000000000000000000000000000002900000000spacewalk-backend/server/rhnSQL/const.py  #
# Copyright (c) 2008--2014 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#
#

# Constants used to identify the supported database backends:
POSTGRESQL = "postgresql"

# Backend constants:
SUPPORTED_BACKENDS = set([POSTGRESQL])
   070701000001BB000081B40000000000000000000000016290A0C1000005C0000000000000000000000000000000000000002700000000spacewalk-backend/server/rhnSQL/dbi.py    #
# Copyright (c) 2008--2013 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#
#

from .const import POSTGRESQL

# Map supported backend constants to a specific Python driver:
BACKEND_DRIVERS = {
    POSTGRESQL: "postgresql",
}


def get_database_module(backend=None):
    """Loads the database driver module, performing autodetection if needed"""

    # Assume Oracle if no backend is specified:
    if backend is None:
        driver = BACKEND_DRIVERS[POSTGRESQL]
    else:
        driver = BACKEND_DRIVERS[backend]

    driver_dir = "spacewalk.server.rhnSQL"
    driver_mod = "driver_" + driver
    try:
        module = __import__(driver_dir, globals(), locals(), [driver_mod])
        module = getattr(module, driver_mod)
    except ImportError:
        raise

    return module


def get_database_class(backend=None):
    """Returns the database class"""
    module = get_database_module(backend=backend)
    return module.Database
070701000001BC000081B40000000000000000000000016290A0C100003372000000000000000000000000000000000000003500000000spacewalk-backend/server/rhnSQL/driver_postgresql.py  #
# Copyright (c) 2008--2017 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#
#
#
# Database driver for PostgreSQL
#

import sys
import string
import re
import psycopg2
import psycopg2.extras

# workaround for python-psycopg2 = 2.0.13 (RHEL6)
# which does not import extensions by default
if not hasattr(psycopg2, 'extensions'):
    import psycopg2.extensions

from . import sql_base
from rhn.UserDictCase import UserDictCase
from spacewalk.server import rhnSQL

from uyuni.common.usix import BufferType, raise_with_tb
from spacewalk.common.rhnLog import log_debug, log_error
from spacewalk.common.rhnException import rhnException
from .const import POSTGRESQL


def convert_named_query_params(query):
    """
    Convert a query with named parameters (i.e. :id, :name, etc) into one
    that uses %(id)s, %(name)s parameters instead.

    python-psycopg2 requires parameters to be in this form, so to keep our
    existing queries intact we'll convert them when provided to the
    postgresql driver.

    RETURNS: the new query with parameters replaced
    """
    log_debug(6, "Converting query for PostgreSQL: %s" % query)
    new_query = re.sub(r'(\W):(\w+)', r'\1%(\2)s', query.replace('%', '%%'))
    log_debug(6, "New query: %s" % new_query)
    return new_query


class Function(sql_base.Procedure):

    """
    Function implementation for PostgreSQL. As there is no support in the Python
    driver we use direct SQL.
    """

    def __init__(self, name, cursor, ret_type):
        sql_base.Procedure.__init__(self, name, cursor)
        self.ret_type = ret_type

    def __call__(self, *args):
        log_debug(2, self.name, args)

        # Buildup a string for the positional arguments to the procedure:
        positional_args = ""
        i = 1
        for arg in args:
            if len(positional_args) == 0:
                positional_args = "%s"
            else:
                positional_args = positional_args + ", %s"
            i += 1
        query = "SELECT %s(%s)" % (self.name, positional_args)

        log_debug(2, query, args)
        try:
            ret = self.cursor.execute(query, args)
        except psycopg2.Error:
            e = sys.exc_info()[1]
            error_code = 99999
            m = re.match('ERROR: +-([0-9]+)', e.pgerror)
            if m:
                error_code = int(m.group(1))
            raise sql_base.SQLSchemaError(error_code, e.pgerror, e)

        if self.ret_type is None:
            return ret
        else:
            return self.cursor.fetchone()[0]


class Procedure(Function):

    """
    PostgreSQL functions are somewhat different than stored procedures in
    other databases. As a result the python-pgsql does not even implement
    the Python DBI API callproc method.

    To workaround this and keep rhnSQL database independent, we'll translate
    any incoming requests to call a procedure into a PostgreSQL query.
    """

    def __init__(self, name, cursor):
        Function.__init__(self, name, cursor, None)
        self.ret_type = None

    def __call__(self, *args):
        result = Function.__call__(self, *args)
        # we do not expect any result (this is procedure)
        # if not (type(result) == 'tuple' and result[0] == ''):
        #raise rhnSQL.SQLError("Unexpected result returned by procedure %s: %s" % (self.name, str(result)))


def decimal2intfloat(dec, cursor):
    "Convert a Decimal to an int or a float with no loss of information."
    "The dec is passed in as str (not Decimal) so we cannot check its type."
    if dec is None:
        return None
    "If we can convert to int without loss of information, return int, float otherwise."
    try:
        if float(dec) == float(int(dec)):
            return int(dec)
        return float(dec)
    except ValueError:
        return float(dec)


class Database(sql_base.Database):

    """ Class for PostgreSQL database operations. """

    def __init__(self, host=None, port=None, username=None,
                 password=None, database=None, sslmode=None, sslrootcert=None):

        self.username = username
        self.password = password
        self.database = database
        self.sslmode = sslmode
        self.sslrootcert = sslrootcert

        # Minimum requirements to connect to a PostgreSQL db:
        if not (self.username and self.database):
            raise AttributeError("PostgreSQL requires at least a user and database name.")

        if host is None or host == '' or host == 'localhost':
            self.host = None
            self.port = None
        else:
            self.host = host
            self.port = port

        # pgsql module prefers -1 for an unspecified port:
        if not self.port:
            self.port = -1

        self.dbh = None

        sql_base.Database.__init__(self)

    def connect(self, reconnect=1):
        try:
            dsndata = {
                'dbname': self.database,
                'user': self.username,
                'password': self.password}
            if self.host is not None:
                dsndata['host'] = self.host
                dsndata['port'] = self.port
            if self.sslmode is not None and self.sslmode == 'verify-full' and self.sslrootcert is not None:
                dsndata['sslmode'] = self.sslmode
                dsndata['sslrootcert'] = self.sslrootcert
            elif self.sslmode is not None:
                raise AttributeError("Only sslmode=\"verify-full\" (or None) is supported.")
            if self.sslmode is not None and self.sslrootcert is None:
                raise AttributeError("Attribute sslrootcert needs to be set if sslmode is set.")

            self.dbh = psycopg2.connect(" ".join("%s=%s" % (k, re.escape(str(v))) for k, v in list(dsndata.items())))

            # convert all DECIMAL types to float (let Python to choose one)
            DEC2INTFLOAT = psycopg2.extensions.new_type(psycopg2._psycopg.DECIMAL.values,
                                                        'DEC2INTFLOAT', decimal2intfloat)
            psycopg2.extensions.register_type(DEC2INTFLOAT)
        except psycopg2.Error:
            e = sys.exc_info()[1]
            if reconnect > 0:
                # Try one more time:
                return self.connect(reconnect=reconnect - 1)

            # Failed reconnect, time to error out:
            raise_with_tb(sql_base.SQLConnectError(
                self.database, e.pgcode, e.pgerror,
                "All attempts to connect to the database failed"), sys.exc_info()[2])

    def is_connected_to(self, backend, host, port, username, password,
                        database, sslmode, sslrootcert):
        if host is None or host == '' or host == 'localhost':
            host = None
            port = None
        if not port:
            port = -1
        return (backend == POSTGRESQL) and (self.host == host) and \
               (self.port == port) and (self.username == username) and \
               (self.password == password) and (self.database == database) and \
               (self.sslmode == sslmode) and (self.sslrootcert == sslrootcert)

    def check_connection(self):
        try:
            c = self.prepare("select 1")
            c.execute()
        except:  # try to reconnect, that one MUST WORK always
            log_error("DATABASE CONNECTION TO '%s' LOST" % self.database,
                      "Exception information: %s" % sys.exc_info()[1])
            self.connect()  # only allow one try

    def prepare(self, sql, force=0, blob_map=None):
        return Cursor(dbh=self.dbh, sql=sql, force=force, blob_map=blob_map)

    def execute(self, sql, *args, **kwargs):
        cursor = self.prepare(sql)
        cursor.execute(*args, **kwargs)
        return cursor

    def transaction(self, name):
        if not name:
            raise rhnException("Can not set a transaction without a name", name)
        c = self.prepare("savepoint %s" % name)
        return c.execute()

    def commit(self):
        if self.dbh is not None:
            self.dbh.commit()

    def rollback(self, name=None):
        if name:
            c = self.prepare("rollback to %s" % name)
            return c.execute()
        else:
            return self.dbh.rollback()

    def procedure(self, name):
        c = self.dbh.cursor()
        # Pass the cursor in so we can close it after execute()
        return Procedure(name, c)

    def _function(self, name, ret_type):
        c = self.dbh.cursor()
        return Function(name, c, ret_type)

    def cursor(self):
        return Cursor(dbh=self.dbh)

    def _read_lob(self, lob):
        return bytes(lob)


class Cursor(sql_base.Cursor):

    """ PostgreSQL specific wrapper over sql_base.Cursor. """

    def __init__(self, dbh=None, sql=None, force=None, blob_map=None):

        sql_base.Cursor.__init__(self, dbh, sql, force)
        self.blob_map = blob_map

        # Accept Oracle style named query params, but convert for python-pgsql
        # under the hood:
        temp_sql = ""
        if self.sql is not None:
            temp_sql = self.sql
        self.sql = convert_named_query_params(temp_sql)

    def _prepare_sql(self):
        cursor = self.dbh.cursor()
        return cursor

    def _execute_wrapper(self, function, *p, **kw):
        params = ','.join(["%s: %s" % (key, value) for key, value
                           in list(kw.items())])
        log_debug(5, "Executing SQL: \"%s\" with bind params: {%s}"
                  % (self.sql, params))
        if self.sql is None:
            raise rhnException("Cannot execute empty cursor")
        if self.blob_map:
            for blob_var in list(self.blob_map.keys()):
                if isinstance(kw[blob_var], str):
                    kw[blob_var] = BufferType(kw[blob_var].encode())
                else:
                    kw[blob_var] = BufferType(kw[blob_var])

        try:
            retval = function(*p, **kw)
        except psycopg2.InternalError:
            e = sys.exc_info()[1]
            error_code = 99999
            m = re.match('ERROR: +-([0-9]+)', e.pgerror)
            if m:
                error_code = int(m.group(1))
            raise sql_base.SQLSchemaError(error_code, e.pgerror, e)
        except psycopg2.ProgrammingError:
            e = sys.exc_info()[1]
            raise sql_base.SQLStatementPrepareError(str(self.dbh), e.pgerror, self.sql)
        except KeyError:
            e = sys.exc_info()[1]
            raise sql_base.SQLError("Unable to bound the following variable(s): %s"
                                    % (" ".join(e.args)))
        return retval

    def _execute_(self, args, kwargs):
        """
        PostgreSQL specific execution of the query.
        """
        params = UserDictCase(kwargs)
        try:
            self._real_cursor.execute(self.sql, params)
        except psycopg2.OperationalError:
            e = sys.exc_info()[1]
            raise sql_base.SQLError("Cannot execute SQL statement: %s" % str(e))

        self.description = self._real_cursor.description
        return self._real_cursor.rowcount

    def _executemany(self, *args, **kwargs):
        if not kwargs:
            return 0

        params = UserDictCase(kwargs)

        # First break all the incoming keyword arg lists into individual
        # hashes:
        all_kwargs = []
        for key in list(params.keys()):
            if len(all_kwargs) < len(params[key]):
                for i in range(len(params[key])):
                    all_kwargs.append({})

            i = 0
            for val in params[key]:
                all_kwargs[i][key] = val
                i = i + 1

        psycopg2.extras.execute_batch(self._real_cursor, self.sql, all_kwargs)
        self.description = self._real_cursor.description

    def _execute_values(self, sql, argslist, template=None, page_size=1000, fetch=True):
        results = psycopg2.extras.execute_values(self._real_cursor, sql, argslist, template=template, page_size=page_size, fetch=fetch)
        self.description = self._real_cursor.description
        return results

    def update_blob(self, table_name, column_name, where_clause, data,
                    **kwargs):
        """
        PostgreSQL uses bytea columns instead of blobs. Nothing special
        needs to be done to insert text into one.
        """
        # NOTE: Injecting a :column_name parameter here
        sql = "UPDATE %s SET %s = :%s %s" % (table_name, column_name,
                                             column_name, where_clause)
        c = rhnSQL.prepare(sql)
        kwargs[column_name] = data
        c.execute(**kwargs)

    def close(self):
        pass
  070701000001BD000081B40000000000000000000000016290A0C100002B65000000000000000000000000000000000000002C00000000spacewalk-backend/server/rhnSQL/sql_base.py   #
# Copyright (c) 2008--2016 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#
# This file defines the base classes for the objects and classes used
# by the generic SQL interfaces so we can make sure that all backends
# adhere and provide the same API to the generic layer
#
# This file provides a skeleton defnition of functions RHN uses and
# expects to be available. The interface drivers should only inherit
# from the Database class and feel free to use their own cursors,
# provided they make available the methods defined by the Cursor
# class.
#

import sys
from . import sql_types
from uyuni.common import usix


def ociDict(names=None, row=None):
    """ Create a dictionary from a row description and its values. """
    data = {}
    if not names:
        raise AttributeError("Class initialization requires a description hash")
    if row is None:
        return data
    for x in range(len(names)):
        name, value = __oci_name_value(names[x], row[x])
        data[name] = value
    return data


def __oci_name_value(names, value):
    """ Extract the name, value pair needed by ociDict function. """
    # the format of the names is
    name, dbitype, dsize, dbsize, prec, scale, nullok = names
    name = name.lower()
    return name, value


# this is for when an execute statement went bad...
class SQLError(Exception):
    pass


# other Schema Errors
class SQLSchemaError(SQLError):

    def __init__(self, errno, errmsg, *args):
        self.errno = errno
        (self.errmsg, errmsg) = errmsg.split('\n', 1)
        SQLError.__init__(self, self.errno, self.errmsg, errmsg, *args)


# SQL connect error
class SQLConnectError(SQLError):

    def __init__(self, db, errno, errmsg, *args):
        self.db = db
        self.errno = errno
        self.errmsg = errmsg
        SQLError.__init__(self, errno, errmsg, db, *args)


# Cannot prepare statement
class SQLStatementPrepareError(SQLError):

    def __init__(self, db, errmsg, *args):
        self.db = db
        self.errmsg = errmsg
        SQLError.__init__(self, errmsg, db, *args)


class ModifiedRowError(SQLError):
    pass


class Cursor:

    """ A class to implement generic SQL Cursor operations. """

    # The cursor cache is a hash of:
    #   id(dbh) as keys
    #   hash with the sql statement as a key and the cursor as a value
    _cursor_cache = {}

    def __init__(self, dbh=None, sql=None, force=None):
        self.sql = sql
        self.dbh = dbh

        self.reparsed = 0
        self._real_cursor = None
        self._dbh_id = id(dbh)

        self.description = None

        if self._dbh_id not in self._cursor_cache:
            self._cursor_cache[self._dbh_id] = {}

        # Store a reference to the underlying Python DB API Cursor:
        self._real_cursor = self._prepare(force=force)

    def _prepare_sql(self):
        raise NotImplementedError()

    def _prepare(self, force=None):
        if self.sql:
            # Check the cache
            _h = self._cursor_cache[self._dbh_id]
            if not force and self.sql in _h:
                return _h[self.sql]
        cursor = self._prepare_sql()
        if self.sql:
            _h[self.sql] = cursor
        return cursor

    def prepare(self, sql, force=None):
        """
        Prepares the current statement.

        Must be called prior to execute even if the underlying database driver
        does not support an explicit prepare before execution.
        """
        if sql is None:
            raise Exception("XXX Unable to prepare None")
        self.sql = sql
        self._real_cursor = self._prepare(force=force)

    def update_blob(self, table_name, column_name, where_clause,
                    data, **kwargs):
        """
        Abstraction for the update of a blob column which can vary wildly
        between different database implementations.
        """
        raise NotImplementedError()

    def execute(self, *p, **kw):
        """ Execute a single query. """
        return self._execute_wrapper(self._execute, *p, **kw)

    def executemany(self, *p, **kw):
        """
        Execute a query multiple times with different data sets.

        Call with keyword arguments mapping to ordered lists.
        i.e. cursor.executemany(id=[1, 2], name=["Bill", "Mary"])
        """
        self._execute_wrapper(self._executemany, *p, **kw)

    def execute_values(self, sql, argslist, template=None, page_size=1000, fetch=True):
        """
        Execute a query with a potentially-long VALUEs list. This method will split the query up in page_size
        chunks. Use a %s placeholder where the VALUE list goes.
        """
        return self._execute_wrapper(self._execute_values, sql, argslist, template, page_size, fetch)

    def _execute_wrapper(self, function, *p, **kw):
        """
        Database specific execute wrapper. Mostly used just to catch DB
        exceptions and wrap them.

        Must be subclasses by database specific drivers.
        """
        raise NotImplementedError()

    def _execute(self, *args, **kwargs):
        if kwargs:
            val = list(kwargs.values())[0]
            if self._is_sequence_type(val):
                sys.stderr.write("WARNING: calling execute with named bound arrays\n")
        return self._execute_(args, kwargs)

    def _executemany(self, *args, **kwargs):
        raise NotImplementedError()

    def _execute_values(self, *args, **kwargs):
        raise NotImplementedError()

    def _execute_(self, args, kwargs):
        """ Database specific execution of the query. """
        raise NotImplementedError()

    # DATA RETRIEVAL
    # Please note: these functions return None if no data is available,
    # not an empty tuple or a list of empty tuples, or an empty list
    # or any other combination you can imagine with the word "empty" in it.
    def fetchone(self):
        return self._real_cursor.fetchone()

    def fetchall(self):
        rows = self._real_cursor.fetchall()
        return rows

    def fetchone_dict(self):
        """
        Return a dictionary for the row returned mapping column name to
        it's value.
        """
        ret = ociDict(self.description, self._real_cursor.fetchone())

        if len(ret) == 0:
            return None
        return ret

    def fetchall_dict(self):
        """
        Fetch all rows as a list of dictionaries.
        """
        rows = self._real_cursor.fetchall()

        ret = []
        for x in rows:
            d = ociDict(self.description, x)
            if len(d) > 0:
                ret.append(d)
        if ret == []:
            return None
        return ret

    def _is_sequence_type(self, val):
        if type(val) in (usix.ListType, usix.TupleType):
            return 1
        return 0


class Procedure:

    """
    Class for calling out to stored procedures.

    Written to behave very much like a Python function in that these
    Procedure objects are "callable".

    See database specific implementations for more details.
    """

    def __init__(self, name, cursor):
        self.name = name
        self.cursor = cursor

    def __del__(self):
        if self.cursor:
            self.cursor.close()
            self.cursor = None


class Database:

    """
    Base class for handling database operations.

    Inherited from by the backend specific classes for Oracle, PostgreSQL, etc.
    """
    _procedure_class = Procedure
    TimestampFromTicks = None

    def __init__(self):
        pass

    def connect(self, reconnect=1):
        """ Opens a connection to the database. """
        raise NotImplementedError()

    def check_connection(self):
        """ Check that this connection is still valid. """
        # Delegates to sub-classes as this is usually done with a DB specific
        # query:
        raise NotImplementedError()

    def prepare(self, sql, force=0):
        """ Prepare an SQL statement. """
        raise NotImplementedError()

    def commit(self):
        """ Commit changes """
        raise NotImplementedError()

    def procedure(self, name):
        """Return a pointer to a callable instance for a given stored
        procedure.
        The return value is a (possibly modified) copy of the arguments passed
        in. see cx_Oracle's Cursor.callproc for more details"""
        return self._procedure_class(name, None)

        return self._procedure_class(name, None)

    def function(self, name, ret_type):
        """
        Return a pointer to a callable instance for a given stored
        function.

        The return value is the return value of the function.
        One has to properly define the return type for the function, since
        usually the database drivers do not allow for auto-discovery.
        See cx_Oracle's Cursor.callfunc for more details.
        """
        if not isinstance(ret_type, sql_types.DatabaseDataType):
            raise SQLError("Invalid return type specified", ret_type)
        return self._function(name, ret_type)

    def _function(self, name, ret_type):
        raise NotImplementedError()

    def transaction(self, name):
        "set a transaction point to which we can rollback to"
        pass

    def rollback(self, name=None):
        "rollback changes, optionally to a previously set transaction point"
        pass

    def close(self):
        "Close the connection"
        pass

    def cursor(self):
        "return an empty Cursor object"
        return Cursor()

    def _fix_environment_vars(self):
        "Fix environment variables (to be redefined in subclasses)"
        pass

    def _read_lob(self, lob):
        "Reads a lob's contents"
        return None

    def is_connected_to(self, backend, host, port, username, password,
                        database, sslmode):
        """
        Check if this database matches the given connection parameters.
        """
        raise NotImplementedError()

    def Date(self, year, month, day):
        "Returns a Date object"
        raise NotImplementedError()

    def DateFromTicks(self, ticks):
        "Returns a Date object"
        raise NotImplementedError()


# Class that we use just as a markup for queries/statements; if the statement
# is available upon import, we can automatically check for the statements'
# correctness
class Statement:

    def __init__(self, statement):
        self.statement = statement

    def __repr__(self):
        return "<%s instance at %s; statement=%s" % (
            self.__class__, id(self), self.statement)

    def __str__(self):
        return self.statement
   070701000001BE000081B40000000000000000000000016290A0C1000007B8000000000000000000000000000000000000002B00000000spacewalk-backend/server/rhnSQL/sql_lib.py    #
# Copyright (c) 2008--2016 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#
# A collection of classes and functions for handy data manipulation
# This file includes common classes and functions that are used by
# misc parts of the RHN backend
#
# Before changing any of this stuff, please grep through the sources to
# check how the function/class you are about to modify is used first.
# Or ask gafton.
#

import string


def build_sql_insert(table, hash_name, items):
    """ This statement builds a sql statement for an insert
        of 'items' into "table" indexed by "hash_name"
    """
    sql = "insert into %s ( %s, %s ) values ( :p0, %s )" % (
        table, hash_name,
        ", ".join([a[0] for a in items]),
        ", ".join([":p_%s" % a[0] for a in items]))
    pdict = {"p0": None}  # This must be reset after we return from this call
    list(map(pdict.update, [{"p_%s" % a[0]: a[1]} for a in items]))
    return sql, pdict


def build_sql_update(table, hash_name, items):
    """ This statement builds a sql statement for an update
        of 'items' into "table" indexed by "hash_name"
    """
    sql = "update %s set %s where %s = :p0" % (
        table,
        ", ".join(["%s = :p_%s" % (a, a) for a in [a[0] for a in items]]),
        hash_name)
    pdict = {"p0": None}  # This must be reset after we return from this call
    list(map(pdict.update, [{"p_%s" % a[0]: a[1]} for a in items]))
    return sql, pdict
070701000001BF000081B40000000000000000000000016290A0C10000132E000000000000000000000000000000000000002B00000000spacewalk-backend/server/rhnSQL/sql_row.py    #
# Copyright (c) 2008--2016 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#
# a class used to handle a row of data in a particular table
#

import string

from rhn.UserDictCase import UserDictCase
from spacewalk.common.rhnException import rhnException

from . import sql_base
from . import sql_lib


class Row(UserDictCase):

    """ This class allows one to work with the columns of a particular row in a more
        convenient manner (ie, using a disctionary interface). It allows for the row
        data to be loaded and saved and is generally easier to use than the Table
        class which is really designed for bulk updates and stuff like that.

        The easiest way to separate what these things are for is to remember that
        the Table class indexes by KEY, while the Row class indexes by column
    """

    def __init__(self, db, table, hashname, hashval=None):
        UserDictCase.__init__(self)
        if not isinstance(db, sql_base.Database):
            raise rhnException("Argument db is not a database instance", db)
        self.db = db
        self.table = table
        self.hashname = hashname.lower()

        # and the data dictionary
        self.data = {}
        # is this a real entry (ie, use insert or update)
        self.real = 0
        if hashval is not None:  # if we have to load an entry already...
            self.load(hashval)

    def __repr__(self):
        return "<%s instance at 0x%0x on (%s, %s, %s)>" % (
            self.__class__.__name__, abs(id(self)),
            self.table, self.hashname, self.get(self.hashname))
    __str__ = __repr__

    def __setitem__(self, name, value):
        """ make it work like a dictionary """
        x = name.lower()
        # forbid setting the value of the hash column because of the
        # ambiguity of the operation (is it a "save as new id" or
        # "load from new id"?). We provide interfaces for load, save
        # and create instead.
        if x == self.hashname:
            raise AttributeError("Can not reset the value of the hash key")
        if x not in self.data or self.data[x][0] != value:
            self.data[x] = (value, 1)

    def __getitem__(self, name):
        x = name.lower()
        if x in self.data:
            return self.data[x][0]
        raise KeyError("Key %s not found in the Row dictionary" % name)

    def get(self, name):
        x = name.lower()
        if x in self.data:
            return self.data[x][0]
        return None

    def reset(self, val=0):
        """ reset the changed status for these entries """
        for k, v in list(self.data.items()):
            # tuples do not support item assignement
            self.data[k] = (v[0], val)

    def create(self, hashval):
        """ create it as a new entry """
        self.data[self.hashname] = (hashval, 0)
        self.real = 0
        self.save()

    def load(self, hashval):
        """ load an entry """
        return self.load_sql("%s = :hashval" % self.hashname, {'hashval': hashval})

    def load_sql(self, sql, pdict={}):
        """ load from a sql clause """
        h = self.db.prepare("select * from %s where %s" % (self.table, sql))
        h.execute(**pdict)
        ret = h.fetchone_dict()
        self.data = {}
        if not ret:
            self.real = 0
            return 0
        for k, v in list(ret.items()):
            self.data[k] = (v, 0)
        self.real = 1
        return 1

    def save(self, with_updates=1):
        """ now save an entry """
        if self.hashname not in self.data:
            raise AttributeError("Table does not have a hash `%s' key" % self.hashname)
        # get a list of fields to be set
        items = [(a[0], a[1][0]) for a in [b for b in list(self.data.items()) if b[1][1] == 1]]
        if not items:  # if there is nothing for us to do, avoid doing it.
            return
        # and now build the SQL statements
        if self.real:  # Update
            if not with_updates:
                raise sql_base.ModifiedRowError()
            sql, pdict = sql_lib.build_sql_update(self.table, self.hashname, items)
        else:
            sql, pdict = sql_lib.build_sql_insert(self.table, self.hashname, items)
        h = self.db.prepare(sql)
        pdict["p0"] = self.data[self.hashname][0]
        # and now do it
        h.execute(**pdict)
        self.real = 1
        return
  070701000001C0000081B40000000000000000000000016290A0C100000747000000000000000000000000000000000000003000000000spacewalk-backend/server/rhnSQL/sql_sequence.py   #
# Copyright (c) 2008--2015 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#
# This file implements teh Sequence class
#

from spacewalk.common.rhnException import rhnException

from . import sql_base


# A class to handle sequences
# XXX: this is still Oracle specific, but it shouldn't be
class Sequence:

    def __init__(self, db, seq):
        if not seq or not isinstance(seq, str):
            raise rhnException("First argument needs to be a sequence name", seq)
        self.__seq = seq
        if not isinstance(db, sql_base.Database):
            raise rhnException("Argument db is not a database instance", db)
        self.__db = db

    def next(self):
        sql = "select sequence_nextval('%s') as ID from dual" % self.__seq
        cursor = self.__db.prepare(sql)
        cursor.execute()
        ret = cursor.fetchone_dict()
        if ret is None:  # how the hell can this happen?
            return ret
        return int(ret['id'])

    def next_many(self, n):
        sql = "SELECT sequence_nextval('%s') FROM generate_series(1, %s)" % (self.__seq, n)
        cursor = self.__db.prepare(sql)
        cursor.execute()
        result = cursor.fetchall()
        return [r[0] for r in result]

    def __call__(self):
        return self.next()

    def __del__(self):
        self.__seq = self.__db = None
 070701000001C1000081B40000000000000000000000016290A0C100002455000000000000000000000000000000000000002D00000000spacewalk-backend/server/rhnSQL/sql_table.py  #
# Copyright (c) 2008--2016 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#
# classes definitions for working with a sql table
#
#

import string

from rhn.UserDictCase import UserDictCase
from spacewalk.common.rhnException import rhnException

from . import sql_base
from . import sql_lib


# A class to handle row updates transparently
class RowData(UserDictCase):

    def __init__(self, dict, db, sql, rowid, cache=None):
        UserDictCase.__init__(self, dict)
        if not isinstance(db, sql_base.Database):
            raise TypeError("Second argument needs to be a database handle")
        self.__db = db
        self.__sql = sql
        self.__rowid = rowid
        self.__cache = cache

    # now the real function that supports updating
    def __setitem__(self, key, value):
        sql = self.__sql % key
        h = self.__db.prepare(sql)
        h.execute(new_val=value, row_id=self.__rowid)
        # keep self.data in sync
        self.data[key] = value
        if self.__cache:  # maintain cache consistency
            try:
                self.__cache[self.__rowid][key] = value
            except:
                pass


# A class to handle operations on a table.
#
# While this class allows you to perform queries and updates on a row
# within a table, it is recommended you use the Row class if you ever
# need to touch a single row of data. On the other hand, if you need
# to jump a lot in the table from one row to another this class is
# more efficient because it works as a hash of hashes, if you will...
#
# Some day we'll figure out how to reduce confusion...
class Table:

    def __init__(self, db, table, hashid, cache=False):
        if not table or not isinstance(table, str):
            raise rhnException("First argument needs to be a table name",
                               table)
        self.__table = table
        if not hashid or not isinstance(hashid, str):
            raise rhnException("Second argument needs to be the name of the unique index column",
                               hashid)
        self.__hashid = hashid
        if not isinstance(db, sql_base.Database):
            raise rhnException("Argument db is not a database instance", db)
        self.__db = db
        self.__cache = None
        if cache:
            self.__cache = {}

    def set_cache(self, value):
        if not value:
            self.__cache = None
            return
        if self.__cache is not None:  # already enabled
            return
        self.__cache = {}

    # insert row(s) into the table
    def insert(self, rows):
        # insert a single row into the table
        def insert_row(row, self=self):
            if self.__cache is not None:
                self.__cache[row[self.__hashid]] = row
            return self.__setitem__(None, row)
        if isinstance(rows, dict) or isinstance(rows, UserDictCase):
            return insert_row(rows)
        if isinstance(rows, list):
            for x in rows:
                insert_row(x)
            return None
        raise rhnException("Invalid data %s passed" % type(rows), rows)

    # select from the whole table all the entries that match the
    # valuies of the hash provided (kind of a complex select)
    def select(self, row):
        if not isinstance(row, dict) and not isinstance(row, UserDictCase):
            raise rhnException("Expecting hash argument. %s is invalid" % type(row),
                               row)
        if row == {}:
            raise rhnException("The hash argument is empty", row)
        keys = list(row.keys())
        # Sort the list of keys, to always get the same list of arguments
        keys.sort()
        args = []
        for col in keys:
            if row[col] in (None, ''):
                clause = "%s is null" % col
            else:
                clause = "%s = :%s" % (col, col)
            args.append(clause)
        sql = "select * from %s where " % self.__table
        cursor = self.__db.prepare(sql + " and ".join(args))
        cursor.execute(**row)
        rows = cursor.fetchall_dict()
        if rows is None:
            return None
        # fill up the cache
        if self.__cache is not None:
            for row in rows:
                self.__cache[row[self.__hashid]] = row
        return [UserDictCase(a) for a in rows]

    # print it out
    def __repr__(self):
        return "<%s> instance for table `%s' keyed on `%s'" % (
            self.__class__, self.__table, self.__hashid)

    # make this table look like a dictionary
    def __getitem__(self, key):
        if self.__cache and key in self.__cache:
            return self.__cache[key]
        h = self.__db.prepare("select * from %s where %s = :p1" % (
            self.__table, self.__hashid))
        h.execute(p1=key)
        ret = h.fetchone_dict()
        if ret is None:
            if self.__cache is not None:
                self.__cache[key] = None
            return None
        xret = UserDictCase(ret)
        if self.__cache is not None:
            self.__cache[key] = xret
        return xret

    # this one is pretty much like __getitem__, but returns a nice
    # reference to a RowData instance that allows the returned hash to
    # be modified.
    def get(self, key):
        ret = self.__getitem__(key)
        if self.__cache and key in self.__cache:
            del self.__cache[key]
        sql = "update %s set %%s = :new_val where %s = :row_id" % (
            self.__table, self.__hashid)
        return RowData(ret, self.__db, sql, key, self.__cache)

    # database insertion, dictionary style (pass in the hash with the
    # values for all columns except the one that functions as the
    # primary key identifier
    def __setitem__(self, key, value):
        if not isinstance(value, dict) and not isinstance(value, UserDictCase):
            raise TypeError("Expected value to be a hash")
        if self.__hashid in value:  # we don't need that
            if key is None:
                key = value[self.__hashid]
            del value[self.__hashid]

        if key is None:
            raise KeyError("Can not insert entry with NULL key")
        items = list(value.items())
        if items == []:  # quick check for noop
            return
        sql = None
        if self.has_key(key):
            sql, pdict = sql_lib.build_sql_update(self.__table, self.__hashid, items)
        else:
            sql, pdict = sql_lib.build_sql_insert(self.__table, self.__hashid, items)
        # import the value of the hash key
        pdict["p0"] = key
        h = self.__db.prepare(sql)
        h.execute(**pdict)
        try:
            value[self.__hashid] = key
            self.__cache[key] = value
        except:
            pass

    # length
    def __len__(self):
        h = self.__db.prepare("select count(*) as ID from %s" % self.__table)
        h.execute()
        row = h.fetchone_dict()
        if row is None:
            return 0
        return int(row["id"])

    # delete an entry by the key
    def __delitem__(self, key):
        h = self.__db.prepare("delete from %s where %s = :p1" % (
            self.__table, self.__hashid))
        h.execute(p1=key)
        try:
            del self.__cache[key]
        except:
            pass
        return 0

    # get all keys
    def keys(self):
        h = self.__db.prepare("select %s as NAME from %s" % (
            self.__hashid, self.__table))
        h.execute()
        data = h.fetchall_dict()
        if data is None:
            return []
        return [a["name"] for a in data]

    # has_key
    # if we're caching, fetch the row and cache it; else, fetch the
    # smaller value
    def has_key(self, key):
        if self.__cache is not None:
            h = self.__db.prepare("select * from %s where %s = :p1" %
                                  (self.__table, self.__hashid))
        else:
            h = self.__db.prepare("select %s from %s where %s = :p1" %
                                  (self.__hashid, self.__table, self.__hashid))
        h.execute(p1=key)
        row = h.fetchone_dict()
        if not row:
            return 0
        # stuff it in the cache if we need to do so
        if self.__cache is not None:
            self.__cache[key] = row
        # XXX: can this thing fail in any other way?
        return 1

    # flush the cache. if cache is off, then noop
    def flush(self):
        if self.__cache is not None:  # avoid turning caching on when flushing
            self.__cache = {}

    # passthrough commit
    def commit(self):
        return self.__db.commit()

    # passthrough rollback
    def rollback(self):
        self.flush()
        return self.__db.rollback()

    def printcache(self):
        print(self.__cache)
        return
   070701000001C2000081B40000000000000000000000016290A0C1000005B9000000000000000000000000000000000000002D00000000spacewalk-backend/server/rhnSQL/sql_types.py  #
# Copyright (c) 2008--2013 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#
#
# Database types we support for out variables
#


# Data types
class DatabaseDataType:
    type_name = None

    def __init__(self, value=None, size=None):
        self.size = size or 1
        self.set_value(value)

    def get_value(self):
        return self.value

    def set_value(self, value):
        self.value = value

    def __str__(self):
        return self.type_name


class NUMBER(DatabaseDataType):
    type_name = "NUMBER"


class STRING(DatabaseDataType):
    type_name = "STRING"

    def __init__(self, value=None, size=None):
        DatabaseDataType.__init__(self, value=value, size=size)
        if not size:
            self.size = 4000


class BINARY(DatabaseDataType):
    type_name = "BINARY"


class LONG_BINARY(DatabaseDataType):
    type_name = "LONG_BINARY"

# XXX More data types to be added as we find need for them
   070701000001C3000041FD0000000000000000000000016290A0C100000000000000000000000000000000000000000000002300000000spacewalk-backend/server/rhnServer    070701000001C4000081B40000000000000000000000016290A0C100000177000000000000000000000000000000000000002C00000000spacewalk-backend/server/rhnServer/Makefile   # Makefile for the rhnServer module
#

TOP     = ../..
SUBDIR	= server/rhnServer

SPACEWALK_FILES	= __init__ server_certificate server_hardware \
	  server_packages server_history server_class \
	  server_class server_wrapper server_lib server_route server_token \
          satellite_cert server_kickstart search_notify \
          server_suse

include $(TOP)/Makefile.defs
 070701000001C5000081B40000000000000000000000016290A0C100000962000000000000000000000000000000000000002F00000000spacewalk-backend/server/rhnServer/__init__.py    #
# Copyright (c) 2008--2016 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#
# Module for handling the rhnServer objects.
#


# these are pretty much the only entry points
from uyuni.common.usix import StringType, UnicodeType
from spacewalk.common.rhnException import rhnFault
from spacewalk.common.rhnLog import log_debug, log_error
from spacewalk.server import rhnUser

# Local imports
from .server_class import Server
from .server_certificate import Certificate
from .server_token import fetch_token, fetch_org_token


def get(system_id, load_user=1):
    """ retrieve the server with matching certificate from the database """
    log_debug(3, "load_user = %s" % load_user)
    # This has to be a string
    if not isinstance(system_id, (StringType, UnicodeType)):
        return None
    # Try to initialize the certificate object
    cert = Certificate()
    if not cert.reload(system_id) == 0:
        return None
    # if invalid, stop here
    if not cert.valid():
        return None

    # this looks like a real server
    server = Server(None)
    # and load it up
    if not server.loadcert(cert, load_user) == 0:
        return None
    # okay, it is a valid certificate
    return server


def search(server_id, username=None):
    """ search for a server in the database and return the Server object """
    log_debug(3, server_id, username)
    s = Server(None)
    if not s.reload(server_id) == 0:
        log_error("Reloading server id %d failed" % server_id)
        # we can't say that the server is not really found
        raise rhnFault(20)
    # now that it is reloaded, fix up the s.user field
    if username:
        s.user = rhnUser.search(username)
    return s


def search_token(token):
    log_debug(3, token)
    return fetch_token(token)


def search_org_token(org_id):
    log_debug(3, org_id)
    return fetch_org_token(org_id)
  070701000001C6000081B40000000000000000000000016290A0C100001B78000000000000000000000000000000000000003500000000spacewalk-backend/server/rhnServer/satellite_cert.py  #
# Copyright (c) 2008--2013 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#
#
# This module exposes the SatelliteCert class, used for parsing a satellite
# certificate
#

import sys
from xml.dom.minidom import parseString
from xml.sax import SAXParseException


class ParseException(Exception):
    pass


# Generic class to represent items (like channel families)
class Item:
    # pylint: disable=R0903

    # Name to be displayed by repr()
    pretty_name = None
    # Attribute name in the parent class
    attribute_name = None
    # Mapping from XML to local storage
    attributes = {}

    def __init__(self, node=None):
        if not node:
            return
        for attr_name, storage_name in list(self.attributes.items()):
            attr = node.getAttribute(attr_name)
            # Make sure we stringify the attribute - it may get out as unicode
            setattr(self, storage_name, attr)

    def __repr__(self):
        return "<%s; %s>" % (self.pretty_name,
                             ', '.join(
                                 ['%s="%s"' % (x, getattr(self, x)) for x in list(self.attributes.values())]
                             ))


class ChannelFamily(Item):
    # pylint: disable=R0903

    pretty_name = "channel family"
    attribute_name = 'channel_families'
    attributes = {'family': 'name', 'quantity': 'quantity', 'flex': 'flex'}


class Slots:
    _db_label = None
    _slot_name = None

    def __init__(self, quantity):
        self.quantity = quantity

    def get_quantity(self):
        return self.quantity

    def get_db_label(self):
        """Returns the label of this type of slot in the database"""
        return self._db_label

    def get_slot_name(self):
        """Returns the name of the slot, used by
        rhn_entitlements.modify_org_service"""
        return self._slot_name


class ManagementSlots(Slots):
    _db_label = 'enterprise_entitled'
    _slot_name = 'enterprise'


class ProvisioningSlots(Slots):
    _db_label = 'provisioning_entitled'
    _slot_name = 'provisioning'

# Slots for virt entitlements support


class VirtualizationSlots(Slots):
    _db_label = 'virtualization_host'
    _slot_name = 'virtualization'


class VirtualizationPlatformSlots(Slots):
    _db_label = 'virtualization_host_platform'
    _slot_name = 'virtualization_platform'

# NonLinux slots are gone - misa 20050527


class MonitoringSlots(Slots):
    _db_label = 'monitoring_entitled'
    _slot_name = 'monitoring'


class SatelliteCert:

    """Satellite certificate class
    Usage:
    c = SatelliteCert()
    c.load('<rhn-cert><rhn-cert-field name="owner">John Doe</rhn-cert-field></rhn-cert>')
    print c.owner
    """

    fields_scalar = ['product', 'owner', 'issued', 'expires', 'slots',
                     'provisioning-slots', 'nonlinux-slots',
                     'monitoring-slots', 'virtualization_host',
                     'virtualization_host_platform', 'satellite-version',
                     'generation', ]
    fields_list = {'channel-families': ChannelFamily}

    # datesFormat_cert = '%a %b %d %H:%M:%S %Y' ## OLD CERT FORMAT
    datesFormat_cert = '%Y-%m-%d %H:%M:%S'
    datesFormat_db = '%Y-%m-%d %H:%M:%S'

    def __init__(self):
        for f in self.fields_scalar:
            setattr(self, f, None)
        for f in list(self.fields_list.values()):
            setattr(self, f.attribute_name, [])
        self.signature = None
        self._slots = {}
        self._root = None

    def load(self, s):
        try:
            self._load(s)
        except SAXParseException:
            raise ParseException(None, sys.exc_info()[2])
        # Now represent the slots in a more meaningful way
        self._slots.clear()
        for slot_name, (slot_attr, factory) in list(self._slot_maps.items()):
            quantity = getattr(self, slot_attr)
            self._slots[slot_name] = factory(quantity)

        return self

    def _load(self, s):
        dom_element = parseString(s)
        certs = dom_element.getElementsByTagName("rhn-cert")
        if not certs:
            self._root = None
        else:
            self._root = certs[0]
        for child in self._root.childNodes:
            if child.nodeType != child.ELEMENT_NODE:
                # Probably white space
                continue
            if child.nodeName == 'rhn-cert-field':
                field_name = child.getAttribute("name")
                if not field_name:
                    # XXX Bogus
                    continue
                if field_name in self.fields_scalar:
                    val = get_text(child)
                    if not val:
                        continue
                    setattr(self, field_name, val)
                    continue
                if field_name in self.fields_list:
                    val = self.fields_list[field_name](child)
                    l = getattr(self, val.attribute_name)
                    l.append(val)
            elif child.nodeName == 'rhn-cert-signature':
                self.signature = get_text(child)
        # Python's docs say: When you are finished with a DOM, you should
        # clean it up. This is necessary because some versions of Python do
        # not support garbage collection of objects that refer to each other
        # in a cycle. Until this restriction is removed from all versions of
        # Python, it is safest to write your code as if cycles would not be
        # cleaned up.
        dom_element.unlink()

    _slot_maps = {
        'management': ('slots', ManagementSlots),
        'provisioning': ('provisioning-slots', ProvisioningSlots),
        'monitoring': ('monitoring-slots', MonitoringSlots),
        'virtualization': ('virtualization_host', VirtualizationSlots),
        'virtualization_platform': ('virtualization_host_platform', VirtualizationPlatformSlots)
    }

    def get_slots(self, slot_type):
        if slot_type not in self._slots:
            raise AttributeError(slot_type)
        return self._slots[slot_type]

    def get_slot_types(self):
        return list(self._slot_maps.keys())

    def lookup_slot_by_db_label(self, db_label):
        # Given a string like 'sw_mgr_entitled', returns a string 'management'
        for label, (_, slot_class) in list(self._slot_maps.items()):
            if slot_class._db_label == db_label:
                return label
        return None


def get_text(node):
    return "".join([x.data for x in node.childNodes if x.nodeType == x.TEXT_NODE])
070701000001C7000081FD0000000000000000000000016290A0C100000602000000000000000000000000000000000000003400000000spacewalk-backend/server/rhnServer/search_notify.py   #
# Copyright (c) 2008--2016 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#
# Sends notification to search-server that it should update server index
#

import sys

try:
    #  python 2
    import xmlrpclib
except ImportError:
    #  python3
    import xmlrpc.client as xmlrpclib
from spacewalk.common.rhnLog import log_error


class SearchNotify:

    def __init__(self, host="127.0.0.1", port="2828"):
        self.addr = "http://%s:%s" % (host, port)

    def notify(self, indexName="server"):
        try:
            client = xmlrpclib.ServerProxy(self.addr)
            result = client.admin.updateIndex(indexName)
        except Exception:
            e = sys.exc_info()[1]
            log_error("Failed to notify search service located at %s to update %s indexes"
                      % (self.addr, indexName), e)
            return False
        return result

if __name__ == "__main__":
    search = SearchNotify()
    result = search.notify()
    print(("search.notify() = %s" % (result)))
  070701000001C8000081B40000000000000000000000016290A0C100001FE3000000000000000000000000000000000000003900000000spacewalk-backend/server/rhnServer/server_certificate.py  #
# Copyright (c) 2008--2016 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#
#
# Classes and functions needed for handling certificates
# The only really exportable item is the Certificate class
#

import sys
import hashlib
import time
import random
import socket
try:
    #  python 2
    import xmlrpclib
except ImportError:
    #  python3
    import xmlrpc.client as xmlrpclib

from spacewalk.common.rhnLog import log_debug, log_error
from spacewalk.common.rhnException import rhnFault
from uyuni.common.stringutils import to_string
from .server_lib import getServerSecret
from .server_lib import check_entitlement_by_machine_id

def gen_secret():
    """ Generate a secret """
    seed = repr(time.time())
    sum = hashlib.new('sha256', seed.encode())
    # feed some random numbers
    for k in range(1, random.randint(5, 15)):
        sum.update(repr(random.random()).encode())
    sum.update(socket.gethostname().encode())
    ret = sum.hexdigest()
    del sum
    return ret


class Checksum:

    """ Functions for handling system_id strings """

    def __init__(self, secret, *args, **kwargs):
        algo = 'sha256'
        if 'algo' in kwargs:
            algo = kwargs['algo']
        self.sum = hashlib.new(algo, secret.encode())
        if len(args) > 0:
            self.feed(*args)

    def feed(self, arg):
        #sys.stderr.write("arg = %s, type = %s\n" % (arg, type(arg)))
        if type(arg) == type(()) or type(arg) == type([]):
            for s in arg:
                self.sum.update(s.encode())
        else:
            if type(arg) == type(0):
                arg = str(arg)
            self.sum.update(to_string(arg).encode())

    def __repr__(self):
        t = self.sum.hexdigest()
        return t
    __str__ = __repr__


class Certificate:

    """ Main certificate class """
    CheckSumFields = ["username", "os_release", "operating_system",
                      "architecture", "system_id", "type"]

    def __init__(self):
        """ init data
            normally we include in the attrs:
            username, os_release, os, arch, system_id and fields
        """
        self.attrs = {}
        for k in Certificate.CheckSumFields:
            self.attrs[k] = None
        self.__fields = []
        self.__secret = None
        self.__checksum = None

    def __getitem__(self, key):
        """ function that make it look like a dictionary for easy access """
        return self.attrs.get(key)

    def __setitem__(self, name, value):
        """ function that make it look like a dictionary for easy access
            updates the values of the attributes list with new values
        """
        self.attrs[name] = value
        if name in Certificate.CheckSumFields:
            if name not in self.__fields:
                self.__fields.append(name)
        else:  # non essential, take None values as ""
            if value is None:
                self.attrs[name] = ""
        return 0

    def __repr__(self):
        """ string format """
        return "<Certificate instance>: Attrs: %s, Fields: %s, Secret: %s, Checksum: %s" % (
            self.attrs, self.__fields, self.__secret, self.__checksum)
    __str__ = __repr__

    def certificate(self):
        """ convert to XML """
        dump = self.attrs
        dump["checksum"] = self.__checksum
        dump["fields"] = self.__fields
        try:
            x = xmlrpclib.dumps((dump,))
        except TypeError:
            e = sys.exc_info()[1]
            log_error("Could not marshall certificate for %s" % dump)
            e.args = e.args + (dump,)  # Carry on the information for the exception reporting
            raise
        return '<?xml version="1.0"?>\n%s' % x

    def compute_checksum(self, secret, algo='sha256'):
        """ Update the checksum """
        log_debug(4, secret, self.attrs)
        csum = Checksum(secret, algo=algo)
        for f in self.__fields:
            csum.feed(self.attrs[f])
        # feed the fields list last
        csum.feed(self.__fields)
        return str(csum)

    def set_secret(self, secret):
        """ set the secret of the entry and recompute the checksum """
        log_debug(4, "secret", secret)
        self.__secret = secret
        self.__checksum = self.compute_checksum(secret)

    def reload(self, text):
        """ load data from a text certificate passed on by a client """
        log_debug(4)
        text_id = text.strip()
        if not text_id:
            return -1
        # Now decode this certificate
        try:
            sysid, junk = xmlrpclib.loads(to_string(text_id))
        except:
            return -1
        else:
            s = sysid[0]
            del junk
        if "system_id" not in s or "fields" not in s:
            log_error("Got certificate with missing entries: %s" % s)
            return -1
        # check the certificate some more
        for k in s["fields"]:
            if k not in s:
                log_error("Certificate lists unknown %s as a checksum field" % k,
                          "cert data: %s" % s)
                return -1

        # clear out the state
        self.__init__()

        # at this point we know the certificate is sane enough for the
        # following processing
        for k in list(s.keys()):
            if k == "fields":
                self.__fields = s[k]
                continue
            if k == "checksum":
                self.__checksum = s[k]
                continue
            self.attrs[k] = s[k]
        # okay, the certificate is now loaded
        return 0

    def __validate_checksum(self, secret):
        """ compute the current checksum against a secret and check it against
            the current checksum
        """
        if len(self.__checksum) == 64:
            csum = self.compute_checksum(secret, algo='sha256')
        elif len(self.__checksum) == 32:
            csum = self.compute_checksum(secret, algo='md5')
        if not csum == self.__checksum:
            # fail, current checksum does not match
            log_error("Checksum check failed: %s != %s" % (csum, self.__checksum),
                      "fields = %s" % str(self.__fields), "attrs = %s" % str(self.attrs))
            return 0
        return 1

    def valid(self):
        log_debug(4)
        # check for anonymous

        if self.attrs.get('machine_id'):
            entitlements = check_entitlement_by_machine_id(self.attrs.get('machine_id'))
            log_debug(4, "found entitlements for machine_id", self.attrs.get('machine_id'), entitlements)
            if 'salt_entitled' in entitlements:
                raise rhnFault(48, """
    This system is already registered as a Salt Minion. If you want to register it as a traditional client
    please delete it first via the web UI or API and then register it using the traditional tools.
                """)

        if 'type' in self.attrs and self.attrs['type'] \
                and self.attrs['type'].upper() == "ANONYMOUS":
            raise rhnFault(28, """
            You need to re-register your system with SUSE Manager.
            Previously you have chosen to skip the creation of a system profile
            with SUSE Manager and this trial feature is no longer available now.
            """) # we don't support anonymous anymore
        # now we have a real server. Get its secret
        sid = self.attrs["system_id"]
        secret = getServerSecret(sid)
        if secret is None:
            # no secret, can't validate
            log_debug(1, "Server id %s not found in database" % sid)
            return 0
        return self.__validate_checksum(secret)
 070701000001C9000081B40000000000000000000000016290A0C100008281000000000000000000000000000000000000003300000000spacewalk-backend/server/rhnServer/server_class.py    #
# Copyright (c) 2008--2016 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#
# Stuff for handling Servers
#

# system modules
import sys

from uyuni.common.usix import raise_with_tb
from spacewalk.common import rhnFlags
from spacewalk.common.rhnConfig import CFG
from spacewalk.common.rhnLog import log_debug, log_error
from spacewalk.common.rhnException import rhnFault, rhnException
from spacewalk.common.rhnTranslate import _
from spacewalk.server import rhnChannel, rhnUser, rhnSQL, rhnLib, rhnAction, \
    rhnVirtualization
from .search_notify import SearchNotify

# Local Modules
from . import server_kickstart
from . import server_lib
from . import server_token
from .server_certificate import Certificate, gen_secret
from .server_wrapper import ServerWrapper


class Server(ServerWrapper):

    """ Main Server class """

    def __init__(self, user, arch=None, org_id=None):
        ServerWrapper.__init__(self)
        self.user = user
        # Use the handy TableRow
        self.server = rhnSQL.Row("rhnServer", "id")
        self.server["release"] = ""
        self.server["os"] = "SUSE Linux"
        self.addr = {}
        self.is_rpm_managed = 0
        self.set_arch(arch)
        # We only get this passed in when we create a new
        # entry. Usually a reload will create a dummy entry first and
        # then call self.loadcert()
        if user:
            self.server["org_id"] = user.customer["id"]
        elif org_id:
            self.server["org_id"] = org_id
        self.cert = None
        # Also, at this point we know that this is a real server
        self.type = "REAL"
        self.default_description()

        # custom info values
        self.custom_info = None

        # uuid
        self.uuid = None
        self.virt_uuid = None
        self.registration_number = None

    _query_lookup_arch = rhnSQL.Statement("""
        select sa.id,
               case when at.label = 'rpm' then 1 else 0 end is_rpm_managed
          from rhnServerArch sa,
               rhnArchType at
         where sa.label = :archname
           and sa.arch_type_id = at.id
    """)

    def set_arch(self, arch):
        self.archname = arch
        # try to detect the archid
        if arch is None:
            return

        arch = rhnLib.normalize_server_arch(arch)
        h = rhnSQL.prepare(self._query_lookup_arch)
        h.execute(archname=arch)
        data = h.fetchone_dict()
        if not data:
            # Log it to disk, it may show interesting things
            log_error("Attempt to create server with invalid arch `%s'" %
                      arch)
            raise rhnFault(24,
                           _("Architecture `%s' is not supported") % arch)
        self.server["server_arch_id"] = data["id"]
        self.is_rpm_managed = data['is_rpm_managed']

    # set the default description...
    def default_description(self):
        self.server["description"] = "Initial Registration Parameters:\n"\
                                     "OS: %s\n"\
                                     "Release: %s\n"\
                                     "CPU Arch: %s" % (
            self.server["os"], self.server["release"],
            self.archname)

    def __repr__(self):
        # misa: looks like id can return negative numbers, so use %d
        # instead of %x
        # For the gory details,
        # http://mail.python.org/pipermail/python-dev/2005-February/051559.html
        return "<Server Class at %d: %s>\n" % (
            id(self), {
                "self.cert": self.cert,
                "self.server": self.server.data,
            })
    __str__ = __repr__

    def _get_active_org_admins(self, org_id):
        h = rhnSQL.prepare("""
            SELECT login
            FROM web_contact
            WHERE id in (
                SELECT ugm.user_id
                FROM rhnUserGroupMembers ugm
                WHERE ugm.user_group_id = (SELECT id
                                           FROM rhnUserGroup
                                           WHERE org_id = :org_id
                                           AND group_type = (SELECT id FROM
                                     rhnUserGroupType WHERE label = 'org_admin'))
                AND exists (select wc.id
                            from rhnwebcontactenabled wc
                            where wc.id = ugm.user_id)
                ORDER BY ugm.user_id);
        """)
        h.execute(org_id=org_id)
        rows = h.fetchall_dict()
        return rows

    # Return a Digital Certificate that can be placed in a file on the
    # client side.
    def system_id(self):
        log_debug(3, self.server, self.cert)
        if self.cert is None:
            # need to instantiate it
            cert = Certificate()
            cert["system_id"] = self.server["digital_server_id"]
            cert["os_release"] = self.server["release"]
            cert["operating_system"] = self.server["os"]
            cert["architecture"] = self.archname
            cert["profile_name"] = self.server["name"]
            cert["description"] = self.server["description"]
            if not self.user:
                log_debug(1, "The username is not available. Taking an active " \
                             "administrator from the same organization")
                self.user = rhnUser.search(self._get_active_org_admins(
                    self.server["org_id"])[0]["login"])
            cert["username"] = self.user.contact["login"]
            cert["type"] = self.type
            cert.set_secret(self.server["secret"])
            self.cert = cert
        return self.cert.certificate()

    # return the id of this system
    def getid(self):
        if not self.server.has_key("id"):
            sysid = rhnSQL.Sequence("rhn_server_id_seq")()
            self.server["digital_server_id"] = "ID-%09d" % sysid
            # we can't reset the id column, so we need to poke into
            # internals. kind of illegal, but it works...
            self.server.data["id"] = (sysid, 0)
        else:
            sysid = self.server["id"]
        return sysid

    # change the base channel of a server
    def change_base_channel(self, new_rel, suse_products=None):
        log_debug(3, self.server["id"], new_rel)
        old_rel = self.server["release"]
        current_channels = rhnChannel.channels_for_server(self.server["id"])
        # Extract the base channel off of
        old_base = [x for x in current_channels if not x['parent_channel']]

        # Quick sanity check
        base_channels_count = len(old_base)
        if base_channels_count == 1:
            old_base = old_base[0]
        elif base_channels_count == 0:
            old_base = None
        else:
            raise rhnException("Server %s subscribed to multiple base channels"
                               % (self.server["id"], ))

        # bz 442355
        # Leave custom base channels alone, don't alter any of the channel subscriptions
        if not CFG.RESET_BASE_CHANNEL and old_base and rhnChannel.isCustomChannel(old_base["id"]):
            log_debug(3,
                      "Custom base channel detected, will not alter channel subscriptions")
            self.server["release"] = new_rel
            self.server.save()
            msg = """The SUSE Manager Update Agent has detected a
            change in the base version of the operating system running
            on your system, additionally you are subscribed to a custom
            channel as your base channel.  Due to this configuration
            your channel subscriptions will not be altered.
            """
            self.add_history("Updated system release from %s to %s" % (
                old_rel, new_rel), msg)
            self.save_history_byid(self.server["id"])
            return 1

        s = rhnChannel.LiteServer().init_from_server(self)
        s.release = new_rel
        s.arch = self.archname
        if suse_products:
            s.add_suse_products(suse_products)
        # Let get_server_channels deal with the errors and raise rhnFault
        target_channels = rhnChannel.guess_channels_for_server(s, none_ok=True)
        if target_channels:
            target_base = [x for x in target_channels if not x['parent_channel']][0]
        else:
            target_base = None

        channels_to_subscribe = []
        channels_to_unsubscribe = []
        if old_base and target_base and old_base['id'] == target_base['id']:
            # Same base channel. Preserve the currently subscribed child
            # channels, just add the ones that are missing
            hash = {}
            for c in current_channels:
                hash[c['id']] = c

            for c in target_channels:
                channel_id = c['id']
                if channel_id in hash:
                    # Already subscribed to this one
                    del hash[channel_id]
                    continue
                # Have to subscribe to this one
                channels_to_subscribe.append(c)

            # We don't want to lose subscriptions to prior channels, so don't
            # do anything with hash.values()
        else:
            # Different base channel
            channels_to_unsubscribe = current_channels
            channels_to_subscribe = target_channels

        rhnSQL.transaction("change_base_channel")
        self.server["release"] = new_rel
        self.server.save()
        if not (channels_to_subscribe or channels_to_unsubscribe):
            # Nothing to do, just add the history entry
            self.add_history("Updated system release from %s to %s" % (
                old_rel, new_rel))
            self.save_history_byid(self.server["id"])
            return 1

        # XXX: need a way to preserve existing subscriptions to
        # families so we can restore access to non-public ones.

        rhnChannel.unsubscribe_channels(self.server["id"],
                                        channels_to_unsubscribe)
        rhnChannel.subscribe_channels(self.server["id"],
                                      channels_to_subscribe)
        # now that we changed, recompute the errata cache for this one
        rhnSQL.Procedure("queue_server")(self.server["id"])
        # Make a history note
        sub_channels = rhnChannel.channels_for_server(self.server["id"])
        if sub_channels:
            channel_list = [a["name"] for a in sub_channels]
            msg = """The SUSE Manager Update Agent has detected a
            change in the base version of the operating system running
            on your system and has updated your channel subscriptions
            to reflect that.
            Your server has been automatically subscribed to the following
            channels:\n%s\n""" % ("\n".join(channel_list),)
        else:
            msg = """*** ERROR: ***
            While trying to subscribe this server to software channels:
            There are no channels serving release %s""" % new_rel
        self.add_history("Updated system release from %s to %s" % (
            old_rel, new_rel), msg)
        self.save_history_byid(self.server["id"])
        return 1

    def take_snapshot(self, reason):
        return server_lib.snapshot_server(self.server['id'], reason)

    # returns true iff the base channel assigned to this system
    # has been end-of-life'd
    def base_channel_is_eol(self):
        h = rhnSQL.prepare("""
        select 1
        from rhnChannel c, rhnServerChannel sc
        where sc.server_id = :server_id
          and sc.channel_id = c.id
          and c.parent_channel IS NULL
          and current_timestamp - c.end_of_life > 0
        """)
        h.execute(server_id=self.getid())
        ret = h.fetchone_dict()
        if ret:
            return 1

        return None

    _query_server_custom_info = rhnSQL.Statement("""
    select cdk.label,
           scdv.value
      from rhnCustomDataKey cdk,
           rhnServerCustomDataValue scdv
     where scdv.server_id = :server_id
       and scdv.key_id = cdk.id
    """)

    def load_custom_info(self):
        self.custom_info = {}

        h = rhnSQL.prepare(self._query_server_custom_info)
        h.execute(server_id=self.getid())
        rows = h.fetchall_dict()

        if not rows:
            log_debug(4, "no custom info values")
            return

        for row in rows:
            self.custom_info[row['label']] = row['value']

    # load additional server information from the token definition
    def load_token(self):
        # Fetch token
        tokens_obj = rhnFlags.get("registration_token")
        if not tokens_obj:
            # No tokens present
            return 0

        # make sure we have reserved a server_id. most likely if this
        # is a new server object (just created from
        # registration.new_system) then we have no associated a
        # server["id"] yet -- and getid() will reserve that for us.
        self.getid()
        # pull in the extra information needed to fill in the
        # required registration fields using tokens

        user_id = tokens_obj.get_user_id()
        org_id = tokens_obj.get_org_id()

        self.user = rhnUser.User("", "")
        if user_id is not None:
            self.user.reload(user_id)
        self.server["creator_id"] = user_id
        self.server["org_id"] = org_id
        self.server["contact_method_id"] = tokens_obj.get_contact_method_id()
        return 0

    # perform the actions required by the token (subscribing to
    # channels, server groups, etc)
    def use_token(self):
        # Fetch token
        tokens_obj = rhnFlags.get("registration_token")
        if not tokens_obj:
            # No token present
            return 0

        is_rereg_token = tokens_obj.is_rereg_token

        # We get back a history of what is being done in the
        # registration process
        history = server_token.process_token(self.server, self.archname,
                                             tokens_obj, self.virt_type)

        if is_rereg_token:
            event_name = "Reactivation via Token"
            event_text = "System reactivated"
        else:
            event_name = "Subscription via Token"
            event_text = "System created"

        token_name = tokens_obj.get_names()
        # now record that history nicely
        self.add_history(event_name,
                         "%s with token <strong>%s</strong><br />\n%s" %
                         (event_text, token_name, history))
        self.save_history_byid(self.server["id"])

        # 6/23/05 wregglej 157262, use get_kickstart session_id() to see if we're in the middle of a kickstart.
        ks_id = tokens_obj.get_kickstart_session_id()

        # 4/5/05 wregglej, Added for bugzilla: 149932. Actions need to be flushed on reregistration.
        # 6/23/05 wregglej 157262, don't call flush_actions() if we're in the middle of a kickstart.
        #   It would cause all of the remaining kickstart actions to get flushed, which is bad.
        if is_rereg_token and ks_id is None:
            self.flush_actions()

        # XXX: will need to call self.save() later to commit all that
        return 0

    def disable_token(self):
        tokens_obj = rhnFlags.get('registration_token')
        if not tokens_obj:
            # Nothing to do
            return
        if not tokens_obj.is_rereg_token:
            # Not a re-registration token - nothing to do
            return

        # Re-registration token - we know for sure there is only one
        token_server_id = tokens_obj.get_server_id()
        if token_server_id != self.getid():
            # Token is not associated with this server (it may actually not be
            # associated with any server)
            return
        server_token.disable_token(tokens_obj)
        # save() will commit this

    # Auto-entitlement: attempt to entitle this server to the highest
    # entitlement that is available
    def autoentitle(self):
        entitlement_hierarchy = ['enterprise_entitled']

        any_base_entitlements = 0

        for entitlement in entitlement_hierarchy:
            try:
                self._entitle(entitlement)
                any_base_entitlements = 1
            except rhnSQL.SQLSchemaError:
                e = sys.exc_info()[1]
                if e.errno == 20287:
                    # ORA-20287: (invalid_entitlement) - The server can not be
                    # entitled to the specified level
                    #
                    # ignore for now, since any_base_entitlements will throw
                    # an error at the end if not set
                    continue

                # Should not normally happen
                log_error("Failed to entitle", self.server["id"], entitlement,
                          e.errmsg)
                raise_with_tb(server_lib.rhnSystemEntitlementException("Unable to entitle"), sys.exc_info()[2])
            except rhnSQL.SQLError:
                e = sys.exc_info()[1]
                log_error("Failed to entitle", self.server["id"], entitlement,
                          str(e))
                raise_with_tb(server_lib.rhnSystemEntitlementException("Unable to entitle"), sys.exc_info()[2])
            else:
                if any_base_entitlements:
                    # All is fine
                    return
                else:
                    raise_with_tb(server_lib.rhnNoSystemEntitlementsException, sys.exc_info()[2])

    def _entitle(self, entitlement):
        system_entitlements = server_lib.check_entitlement(self.server["id"])
        system_entitlements = list(system_entitlements.keys())

        if entitlement not in system_entitlements:
            entitle_server = rhnSQL.Procedure("rhn_entitlements.entitle_server")
            entitle_server(self.server['id'], entitlement)

    def create_perm_cache(self):
        log_debug(4)
        create_perms = rhnSQL.Procedure("rhn_cache.update_perms_for_server")
        create_perms(self.server['id'])

    def gen_secret(self):
        # Running this invalidates the cert
        self.cert = None
        self.server["secret"] = gen_secret()

    _query_update_uuid = rhnSQL.Statement("""
        update rhnServerUuid set uuid = :uuid
         where server_id = :server_id
    """)
    _query_insert_uuid = rhnSQL.Statement("""
        insert into rhnServerUuid (server_id, uuid)
        values (:server_id, :uuid)
    """)

    def update_uuid(self, uuid, commit=1):
        log_debug(3, uuid)
        # XXX Should determine a way to do this dinamically
        uuid_col_length = 36
        if uuid is not None:
            uuid = str(uuid)
        if not uuid:
            log_debug(3, 'Nothing to do')
            return

        uuid = uuid[:uuid_col_length]
        server_id = self.server['id']
        log_debug(4, "Trimmed uuid", uuid, server_id)

        # Update this server's UUID (unique client identifier)
        h = rhnSQL.prepare(self._query_update_uuid)
        ret = h.execute(server_id=server_id, uuid=uuid)
        log_debug(4, "execute returned", ret)

        if ret != 1:
            # Row does not exist, have to create it
            h = rhnSQL.prepare(self._query_insert_uuid)
            h.execute(server_id=server_id, uuid=uuid)

        if commit:
            rhnSQL.commit()

    def handle_virtual_guest(self):
        # Handle virtualization specific bits
        if self.virt_uuid and self.virt_type:
            rhnVirtualization._notify_guest(self.getid(),
                                            self.virt_uuid, self.virt_type)

    # Save this record in the database
    def __save(self, channel):
        tokens_obj = rhnFlags.get("registration_token")

        if self.server.real:
            server_id = self.server["id"]
            self.server.save()
        else:  # create new entry
            self.gen_secret()
            server_id = self.getid()
            org_id = self.server["org_id"]

            if self.user:
                user_id = self.user.getid()
            else:
                user_id = None

            # some more default values
            self.server["auto_update"] = "N"
            if self.user and not self.server.has_key("creator_id"):
                # save the link to the user that created it if we have
                # that information
                self.server["creator_id"] = self.user.getid()
            # and create the server entry
            self.server.create(server_id)
            server_lib.create_server_setup(server_id, org_id)

            self.handle_virtual_guest()

            # if we're using a token, then the following channel
            # subscription request can allow no matches since the
            # token code will fix up or fail miserably later.
            # subscribe the server to applicable channels

            # bretm 02/17/2007 -- TODO:  refactor activation key codepaths
            # to allow us to not have to pass in none_ok=1 in any case
            #
            # This can now throw exceptions which will be caught at a higher level
            if channel is not None:
                channel_info = dict(rhnChannel.channel_info(channel))
                log_debug(4, "eus channel id %s" % str(channel_info))
                rhnChannel.subscribe_sql(server_id, channel_info['id'])
            else:
                rhnChannel.subscribe_server_channels(self,
                                                     none_ok=tokens_obj,
                                                     user_id=user_id)

            if not tokens_obj:
                # Attempt to auto-entitle, can throw the following exceptions:
                #   rhnSystemEntitlementException
                #   rhnNoSystemEntitlementsException
                self.autoentitle()

                # If a new server that was registered by an user (i.e. not
                # with a registration token), look for this user's default
                # groups
                self.join_groups()

            server_lib.join_rhn(org_id)

        # Update virtual guest attributes on re-registration
        if getattr(tokens_obj, "is_rereg_token", False):
            self.handle_virtual_guest()

        # Update the uuid - but don't commit yet
        self.update_uuid(self.uuid, commit=0)

        self.create_perm_cache()
        # And save the extra profile data...
        self.save_suse_products_byid(server_id)
        self.save_packages_byid(server_id, schedule=1)
        self.save_hardware_byid(server_id)
        self.save_history_byid(server_id)
        return 0

    # This is a wrapper for the above class that allows us to rollback
    # any changes in case we don't succeed completely
    def save(self, commit=1, channel=None):
        log_debug(3)
        # attempt to preserve pending changes before we were called,
        # so we set up our own transaction checkpoint
        rhnSQL.transaction("save_server")
        try:
            self.__save(channel)
        except:  # roll back to what we have before and raise again
            rhnSQL.rollback("save_server")
            # shoot the exception up the chain
            raise
        else:  # if we want to commit, commit all pending changes
            if commit:
                rhnSQL.commit()
                try:
                    search = SearchNotify()
                    search.notify()
                except Exception:
                    e = sys.exc_info()[1]
                    log_error("Exception caught from SearchNotify.notify().", e)
        return 0

    # Reload the current configuration from database using a server id.
    def reload(self, server, reload_all=0):
        log_debug(4, server, "reload_all = %d" % reload_all)

        if not self.server.load(int(server)):
            log_error("Could not find server record for reload", server)
            raise rhnFault(29, "Could not find server record in the database")
        self.cert = None
        # it is lame that we have to do this
        h = rhnSQL.prepare("""
        select label from rhnServerArch where id = :archid
        """)
        h.execute(archid=self.server["server_arch_id"])
        data = h.fetchone_dict()
        if not data:
            raise rhnException("Found server with invalid numeric "
                               "architecture reference",
                               self.server.data)
        self.archname = data['label']
        # we don't know this one anymore (well, we could look for, but
        # why would we do that?)
        self.user = None

        self.addr.update(self.fetch_addr())

        # XXX: Fix me
        if reload_all:
            if not self.reload_packages_byid(self.server["id"]) == 0:
                return -1
            if not self.reload_hardware_byid(self.server["id"]) == 0:
                return -1
        return 0

    # Reload primary IP information from database
    def fetch_addr(self):

        server = self.getid()
        ret = {}

        h = rhnSQL.prepare("""
        select address as ipaddr
        from rhnservernetinterface rsni
        join rhnservernetaddress4 rsna4 on rsna4.interface_id = rsni.id
        where is_primary = 'Y' and server_id = :serverid
        """)

        h.execute(serverid=server)
        data = h.fetchone_dict()
        if data:
            ret.update(data)

        h = rhnSQL.prepare("""
        select address as ip6addr
        from rhnservernetinterface rsni
        join rhnservernetaddress6 rsna4 on rsna4.interface_id = rsni.id
        where is_primary = 'Y' and server_id = :serverid
        """)

        h.execute(serverid=server)
        data = h.fetchone_dict()
        if data:
            ret.update(data)

        return ret

    # Use the values we find in the cert to cause a reload of this
    # server from the database.
    def loadcert(self, cert, load_user=1):
        log_debug(4, cert)
        # certificate is presumed to be already verified
        if not isinstance(cert, Certificate):
            return -1
        # reload the whole thing based on the cert data
        server = cert["system_id"]
        row = server_lib.getServerID(server)
        if row is None:
            return -1
        sid = row["id"]
        # standard reload based on an ID
        ret = self.reload(sid)
        if not ret == 0:
            return ret

        # the reload() will never be able to fill in the username.  It
        # would require from the database standpoint insuring that for
        # a given server we can have only one owner at any given time.
        # cert includes it and it's valid because it has been verified
        # through checksuming before we got here

        self.user = None

        # Load the user if at all possible. If it's not possible,
        # self.user will be None, which should be a handled case wherever
        # self.user is used.
        if load_user:
            # Load up the username associated with this profile
            self.user = rhnUser.search(cert["username"])

        # 4/27/05 wregglej - Commented out this block because it was causing problems
        # with rhn_check/up2date when the user that registered the system was deleted.
        #    if not self.user:
        #        log_error("Invalid username for server id",
        #                  cert["username"], server, cert["profile_name"])
        #        raise rhnFault(9, "Invalid username '%s' for server id %s" %(
        #            cert["username"], server))

        # XXX: make sure that the database thinks that the server
        # registrnt is the same as this certificate thinks. The
        # certificate passed checksum checks, but it never hurts to be
        # too careful now with satellites and all.
        return 0

    # Is this server entitled?
    def check_entitlement(self):
        if not self.server.has_key("id"):
            return None
        log_debug(3, self.server["id"])

        return server_lib.check_entitlement(self.server['id'])

    def checkin(self, commit=1):
        """ convenient wrapper for these thing until we clean the code up """
        if not self.server.has_key("id"):
            return 0  # meaningless if rhnFault not raised
        return server_lib.checkin(self.server["id"], commit)

    def throttle(self):
        """ convenient wrapper for these thing until we clean the code up """
        if not self.server.has_key("id"):
            return 1  # meaningless if rhnFault not raised
        return server_lib.throttle(self.server)

    def set_qos(self):
        """ convenient wrapper for these thing until we clean the code up """
        if not self.server.has_key("id"):
            return 1  # meaningless if rhnFault not raised
        return server_lib.set_qos(self.server["id"])

    def join_groups(self):
        """ For a new server, join server groups """

        # Sanity check - we should always have a user
        if not self.user:
            raise rhnException("User not specified")

        server_id = self.getid()
        user_id = self.user.getid()

        h = rhnSQL.prepare("""
            select system_group_id
            from rhnUserDefaultSystemGroups
            where user_id = :user_id
        """)
        h.execute(user_id=user_id)
        while 1:
            row = h.fetchone_dict()
            if not row:
                break
            server_group_id = row['system_group_id']
            log_debug(5, "Subscribing server to group %s" % server_group_id)

            server_lib.join_server_group(server_id, server_group_id)

    def fetch_registration_message(self):
        return rhnChannel.system_reg_message(self)

    def process_kickstart_info(self):
        log_debug(4)
        tokens_obj = rhnFlags.get("registration_token")
        if not tokens_obj:
            log_debug(4, "no registration token found")
            # Nothing to do here
            return

        # If there are kickstart sessions associated with this system (other
        # than, possibly, the current one), mark them as failed
        history = server_kickstart.terminate_kickstart_sessions(self.getid())
        for k, v in history:
            self.add_history(k, v)

        kickstart_session_id = tokens_obj.get_kickstart_session_id()
        if kickstart_session_id is None:
            log_debug(4, "No kickstart_session_id associated with token %s (%s)"
                      % (tokens_obj.get_names(), tokens_obj.tokens))

            # Nothing to do here
            return

        # Flush server actions
        self.flush_actions()

        server_id = self.getid()
        action_id = server_kickstart.schedule_kickstart_sync(server_id,
                                                             kickstart_session_id)

        server_kickstart.subscribe_to_tools_channel(server_id,
                                                    kickstart_session_id)

        server_kickstart.schedule_virt_pkg_install(server_id,
                                                   kickstart_session_id)

        # Update the next action to the newly inserted one
        server_kickstart.update_ks_session_table(kickstart_session_id,
                                                 'registered', action_id, server_id)

    def flush_actions(self):
        server_id = self.getid()
        h = rhnSQL.prepare("""
            select action_id
              from rhnServerAction
             where server_id = :server_id
               and status in (0, 1) -- Queued or Picked Up
        """)
        h.execute(server_id=server_id)
        while 1:
            row = h.fetchone_dict()
            if not row:
                break
            action_id = row['action_id']
            rhnAction.update_server_action(server_id=server_id,
                                           action_id=action_id, status=3, result_code=-100,
                                           result_message="Action canceled: system kickstarted or reregistered")  # 4/6/05 wregglej, added the "or reregistered" part.

    def server_locked(self):
        """ Returns true is the server is locked (for actions that are blocked) """
        server_id = self.getid()
        h = rhnSQL.prepare("""
            select 1
              from rhnServerLock
             where server_id = :server_id
        """)
        h.execute(server_id=server_id)
        row = h.fetchone_dict()
        if row:
            return 1
        return 0

    def register_push_client(self):
        """ insert or update rhnPushClient for this server_id """
        server_id = self.getid()
        ret = server_lib.update_push_client_registration(server_id)
        return ret

    def register_push_client_jid(self, jid):
        """ update the JID in the corresponing entry from rhnPushClient """
        server_id = self.getid()
        ret = server_lib.update_push_client_jid(server_id, jid)
        return ret
   070701000001CA000081B40000000000000000000000016290A0C10000A43C000000000000000000000000000000000000003600000000spacewalk-backend/server/rhnServer/server_hardware.py #
# Copyright (c) 2008--2016 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#
#
# This file contains all the logic necessary to manipulate Hardware
# items - load, reload, instanciate and save
#

import socket
import sys
import time
import uuid

from rhn.UserDictCase import UserDictCase
from uyuni.common.usix import raise_with_tb
from spacewalk.common.rhnLog import log_debug, log_error
from spacewalk.common.rhnConfig import CFG, isUyuni
from spacewalk.common.rhnException import rhnFault
from spacewalk.common.rhnTB import Traceback
from spacewalk.common import rhnMail
from spacewalk.common import rhnFlags
from spacewalk.server import rhnSQL, rhnVirtualization, rhnUser

# Local imports
from spacewalk.server.rhnServer import server_class

def kudzu_mapping(dict=None):
    """ this is a class we use to get the mapping for a kudzu entry """
    # This is the generic mapping we need
    mapping = {
        'desc': 'description',
    }
    # error handling if we get passed weird stuff.
    if not dict:
        return mapping
    if not type(dict) == type({}) and not isinstance(dict, UserDictCase):
        return mapping
    hw_bus = dict.get("bus")
    # we need to have a bus type to be able to continue
    if not hw_bus:
        return mapping
    hw_bus = hw_bus.lower()
    extra = {}
    if hw_bus == "ddc":
        extra = {
            "id": None,
            "horizsyncmin": "prop1",
            "horizsyncmax": "prop2",
            "vertrefreshmin": "prop3",
            "vertrefreshmax": "prop4",
            "modes": None,
            "mem": None,
        }
    elif hw_bus == "ide":
        extra = {
            "physical": "prop1",
            "logical": "prop2",
        }
    elif hw_bus in ["isapnp", "isa"]:
        extra = {
            "pdeviceid": "prop1",
            "deviceid": "prop2",
            "compat": "prop3",
            "native": None,
            "active": None,
            "cardnum": None,  # XXX: fix me
            "logdev": "prop4",
            "io": "prop2",
            "irq": "prop1",
            "dma": "prop3",
            "mem": "prop4",
        }
    elif hw_bus == "keyboard":
        extra = {}
    elif hw_bus == "psaux":
        extra = {}
    elif hw_bus == "parallel":
        extra = {
            'pnpmfr': 'prop1',
            'pnpdesc': 'prop2',
            'pnpmodel': 'prop3',
            'pnpmodes': 'prop4',
            'pinfo': None,
            'pinfo.xres': None,
            'pinfo.yres': None,
            'pinfo.color': None,
            'pinfo.ascii': None,
        }
    elif hw_bus == "pci":
        extra = {
            'vendorid': 'prop1',
            'deviceid': 'prop2',
            'subvendorid': 'prop3',
            'subdeviceid': 'prop4',
            'network.hwaddr': None,
            'pcibus': None,
            'pcidev': None,
            'pcifn': None,
            'pcidom': None,
        }
    elif hw_bus == "sbus":
        extra = {
            "monitor": "prop1",
            "width": "prop2",
            "height": "prop3",
            "freq": "prop4",
        }
    elif hw_bus == "scsi":
        extra = {
            'host': 'prop1',
            'id': 'prop2',
            'channel': 'prop3',
            'lun': 'prop4',
            'generic': None,
        }
    elif hw_bus == "serial":
        extra = {
            'pnpmfr': 'prop1',
            'pnpdesc': 'prop2',
            'pnpmodel': 'prop3',
            'pnpcompat': "prop4",
        }
    elif hw_bus == "usb":
        extra = {
            "vendorid": "prop1",
            "deviceid": "prop2",
            "usbclass": "prop3",
            "usbbus": "prop4",
            "usblevel": "pciType",
            "usbdev": None,
            "usbprod": None,
            "usbsubclass": None,
            "usbprotocol": None,
            "usbport": None,
            "usbmfr": None,
            "productname": None,
            "productrevision": None,
            'network.hwaddr': None,
        }
    elif hw_bus == "firewire":
        extra = {
            'vendorid': 'prop1',
            'deviceid': 'prop2',
            'subvendorid': 'prop3',
            'subdeviceid': 'prop4',
        }
    elif hw_bus == 'pcmcia':
        extra = {
            'vendorid': 'prop1',
            'deviceid': 'prop2',
            'function': 'prop3',
            'slot': 'prop4',
            'network.hwaddr': None,
        }
    mapping.update(extra)
    return mapping


def cleanse_ip_addr(ip_addr):
    """ Cleans up things like 127.00.00.01 """
    if ip_addr is None:
        return None
    # Make sure it's a string
    ip_addr = str(ip_addr)
    # If the ipaddr is empty, jus return empty str
    if not len(ip_addr):
        return ''
    arr = ip_addr.split('.')
    # lstrip will remove all leading zeros; if multiple zeros are present, it
    # would remove too much, hence the or '0' here.
    return '.'.join([x.lstrip('0') or '0' for x in arr])


class GenericDevice:

    """ A generic device class """
    table = "override-GenericDevice"

    def __init__(self):
        self.id = 0
        self.status = 1  # just added
        self.data = {}
        # default to the hardware seq...
        self.sequence = "rhn_hw_dev_id_seq"
        self._autonull = ("description", "board")

    def getid(self):
        if self.id == 0:
            self.id = rhnSQL.Sequence(self.sequence)()
        return self.id

    def must_save(self):
        if self.id == 0 and self.status == 2:  # deleted new item
            return 0
        if self.status == 0:  # original item, unchanged
            return 0
        return 1

    def save(self, sysid):
        """ save data in the rhnDevice table """
        log_debug(4, self.table, self.status, self.data)
        if not self.must_save():
            return 0
        t = rhnSQL.Table(self.table, "id")
        # check if we have to delete
        if self.status == 2 and self.id:
            # delete the entry
            del t[self.id]
            return 0
        # set description to null if empty
        self._null_columns([self.data], self._autonull)
        # make sure we have a device id
        devid = self.getid()
        for k in list(self.data.keys()):
            if self.data[k] is None:
                del self.data[k]
        self.data["server_id"] = sysid
        t[devid] = self.data
        self.status = 0  # now it is saved
        return 0

    def reload(self, devid):
        """ reload from rhnDevice table based on devid """
        if not devid:
            return -1
        t = rhnSQL.Table(self.table, "id")
        self.data = t[devid]
        # clean up fields we don't want
        if self.data:
            for k in ["created", "modified"]:
                if self.data.has_key(k):
                    del self.data[k]
        self.id = devid
        self.status = 0
        return 0

    def _null_columns(self, params, names=()):
        """ Method searches for empty string in params dict with names
            defined in names list and replaces them with None value which
            is translated to NULL in SQL.

            We do not allow empty strings in database for compatibility
            reasons between Oracle and PostgreSQL.
        """
        # list of dicts
        for param in params:
            for name in names:
                if name in param and param[name] == '':
                    param[name] = None


class Device(GenericDevice):

    """ This is the base Device class that supports instantiation from a
        dictionarry. the __init__ takes the dictionary as its argument,
        together with a list of valid fields to recognize and with a mapping
        for dictionary keys into valid field names for self.data

        The fields are required to know what fields we have in the
        table. The mapping allows transformation from whatever comes in to
        valid fields in the table Looks complicated but it isn't -- gafton
    """

    def __init__(self, fields, dict=None, mapping=None):
        GenericDevice.__init__(self)
        x = {}
        for k in fields:
            x[k] = None
        self.data = UserDictCase(x)
        if not dict:
            return
        # make sure we get a UserDictCase to work with
        if type(dict) == type({}):
            dict = UserDictCase(dict)
        if mapping is None or type(mapping) == type({}):
            mapping = UserDictCase(mapping)
        if not isinstance(dict, UserDictCase) or \
           not isinstance(mapping, UserDictCase):
            log_error("Argument passed is not a dictionary", dict, mapping)
            raise TypeError("Argument passed is not a dictionary",
                            dict, mapping)
        # make sure we have a platform
        for k in list(dict.keys()):
            if dict[k] == '':
                dict[k] = None
            if self.data.has_key(k):
                self.data[k] = dict[k]
                continue
            if mapping.has_key(k):
                # the mapping dict might tell us to lose some fields
                if mapping[k] is not None:
                    self.data[mapping[k]] = dict[k]
            else:
                log_error("Unknown HW key =`%s'" % k,
                          dict.dict(), mapping.dict())
                # The try-except is added just so that we can send e-mails
                try:
                    raise KeyError("Don't know how to parse key `%s''" % k,
                                   dict.dict())
                except:
                    Traceback(mail=1)
                    # Ignore this key
                    continue
        # clean up this data
        try:
            for k in list(self.data.keys()):
                if type(self.data[k]) == type("") and len(self.data[k]):
                    self.data[k] = self.data[k].strip()
                    if not len(self.data[k]):
                        continue
                    if self.data[k][0] == '"' and self.data[k][-1] == '"':
                        self.data[k] = self.data[k][1:-1]
        except IndexError:
            raise_with_tb(IndexError("Can not process data = %s, key = %s" % (
                repr(self.data), k)), sys.exc_info()[2])


class HardwareDevice(Device):

    """ A more specific device based on the Device class """
    table = "rhnDevice"

    def __init__(self, dict=None):
        fields = ['class', 'bus', 'device', 'driver', 'detached',
                  'description', 'pcitype', 'prop1', 'prop2',
                  'prop3', 'prop4']
        # get a processed mapping
        mapping = kudzu_mapping(dict)
        # ... and do little to no work
        Device.__init__(self, fields, dict, mapping)
        # use the hardware id sequencer
        self.sequence = "rhn_hw_dev_id_seq"


class CPUDevice(Device):

    """ A class for handling CPU - mirrors the rhnCPU structure """
    table = "rhnCPU"

    def __init__(self, dict=None):
        fields = ['cpu_arch_id',  'architecture', 'bogomips', 'cache',
                  'family', 'mhz', 'stepping', 'flags', 'model',
                  'version', 'vendor', 'nrcpu', 'acpiVersion',
                  'apic', 'apmVersion', 'chipset', 'nrsocket']
        mapping = {
            "bogomips": "bogomips",
            "cache": "cache",
            "model": "model",
            "platform": "architecture",
            "type": "vendor",
            "model_rev": "stepping",
            "model_number": "family",
            "model_ver": "version",
            "model_version": "version",
            "speed": "mhz",
            "count": "nrcpu",
            "socket_count": "nrsocket",
            "other": "flags",
            "desc": None,
            'class': None,
        }
        # now instantiate this class
        Device.__init__(self, fields, dict, mapping)
        self.sequence = "rhn_cpu_id_seq"
        if not dict:
            return
        if self.data.get("cpu_arch_id") is not None:
            return  # all fine, we have the arch
        # if we don't have an architecture, guess it
        if not self.data.has_key("architecture"):
            log_error("hash does not have a platform member: %s" % dict)
            raise AttributeError("Expected a hash value for member `platform'")
        # now extract the arch field, which has to come out of rhnCpuArch
        arch = self.data["architecture"]
        row = rhnSQL.Table("rhnCpuArch", "label")[arch]
        if row is None or not row.has_key("id"):
            log_error("Can not find arch %s in rhnCpuArch" % arch)
            raise AttributeError("Invalid architecture for CPU: `%s'" % arch)
        self.data["cpu_arch_id"] = row["id"]
        del self.data["architecture"]
        if self.data.has_key("nrcpu"):  # make sure this is a number
            try:
                self.data["nrcpu"] = int(self.data["nrcpu"])
            except:
                self.data["nrcpu"] = 1
            if self.data["nrcpu"] == 0:
                self.data["nrcpu"] = 1

class NetIfaceInformation(Device):
    key_mapping = {
        'hwaddr': 'hw_addr',
        'module': 'module',
    }

    def __init__(self, dict=None):
        log_debug(4, dict)
        self.ifaces = {}
        self.db_ifaces = []
        # parameters which are not allowed to be empty and set to NULL
        self._autonull = ('hw_addr', 'module')
        if not dict:
            return
        for name, info in list(dict.items()):
            if name == 'class':
                # Ignore it
                continue
            if not isinstance(info, type({})):
                raise rhnFault(53, "Unexpected format for interface %s" %
                               name)
            vdict = {}
            for key, mapping in list(self.key_mapping.items()):
                # Look at the mapping first; if not found, look for the key
                if mapping in info:
                    k = mapping
                else:
                    k = key
                if k not in info:
                    raise rhnFault(53, "Unable to find required field %s"
                                   % key)
                val = info[k]
                vdict[mapping] = val
            if 'ipaddr' in info and info['ipaddr']:
                vdict['ipv4'] = NetIfaceAddress4(
                    [{'ipaddr': info['ipaddr'], 'broadcast': info['broadcast'], 'netmask': info['netmask']}])
            if 'ipv6' in info and info['ipv6']:
                vdict['ipv6'] = NetIfaceAddress6(info["ipv6"])
            self.ifaces[name] = vdict

    def __str__(self):
        return "<%s Class at %d: %s>\n" % (
            self.__class__.__name__,
            id(self), {
                "self.ifaces": self.ifaces,
                "self.db_ifaces": self.db_ifaces,
            })
    __repr__ = __str__

    def save(self, server_id):
        log_debug(4, self.ifaces)
        self.reload(server_id)
        log_debug(4, "Interfaces in DB", self.db_ifaces)

        # Compute updates, deletes and inserts
        inserts = []
        updates = []
        deletes = []

        ifaces = self.ifaces.copy()
        for iface in self.db_ifaces:
            name = iface['name']
            if name not in self.ifaces:
                # To be deleted
                deletes.append({'server_id': server_id, 'name': name})
                continue

            uploaded_iface = ifaces[name].copy()
            del ifaces[name]
            if _hash_eq(uploaded_iface, iface):
                # Same value
                continue
            uploaded_iface.update({'name': name, 'server_id': server_id})
            if 'ipv4' in uploaded_iface:
                del(uploaded_iface['ipv4'])
            if 'ipv6' in uploaded_iface:
                del(uploaded_iface['ipv6'])
            updates.append(uploaded_iface)

        # Everything else in self.ifaces has to be inserted
        for name, info in list(ifaces.items()):
            iface = {}
            iface['name'] = name
            iface['server_id'] = server_id
            iface['hw_addr'] = info['hw_addr']
            iface['module'] = info['module']
            inserts.append(iface)

        log_debug(4, "Deletes", deletes)
        log_debug(4, "Updates", updates)
        log_debug(4, "Inserts", inserts)

        self._update(updates)
        self._insert(inserts)
        ifaces = self.ifaces.copy()
        for name, info in list(ifaces.items()):
            if not 'ipv6' in info:
                info['ipv6'] = NetIfaceAddress6()
            info['ipv6'].save(self.get_server_id(server_id, name))
            if not 'ipv4' in info:
                info['ipv4'] = NetIfaceAddress4()
            info['ipv4'].save(self.get_server_id(server_id, name))
        # delete address (if any) of deleted interaces
        for d in deletes:
            interface = NetIfaceAddress6()
            interface.save(self.get_server_id(server_id, d['name']))
            interface = NetIfaceAddress4()
            interface.save(self.get_server_id(server_id, d['name']))
        self._delete(deletes)
        return 0

    def get_server_id(self, server_id, name):
        """ retrieve id for given server_id and name """
        h = rhnSQL.prepare("select id from rhnServerNetInterface where server_id=:server_id and name=:name")
        h.execute(server_id=server_id, name=name)
        row = h.fetchone_dict()
        if row:
            return row['id']
        else:
            return None

    def _insert(self, params):
        q = """insert into rhnServerNetInterface
            (%s) values (%s)"""
        self._null_columns(params, self._autonull)

        columns = list(self.key_mapping.values()) + ['server_id', 'name']
        columns.sort()
        bind_params = ", ".join([':' + x for x in columns])
        h = rhnSQL.prepare(q % (", ".join(columns), bind_params))
        _dml(h, params)

    def _delete(self, params):
        q = """delete from rhnServerNetInterface
            where %s"""

        columns = ['server_id', 'name']
        wheres = ['%s = :%s' % (x, x) for x in columns]
        h = rhnSQL.prepare(q % " and ".join(wheres))
        _dml(h, params)

    def _update(self, params):
        q = """update rhnServerNetInterface
            set %s
            where %s"""
        self._null_columns(params, self._autonull)

        wheres = ['server_id', 'name']
        wheres = ['%s = :%s' % (x, x) for x in wheres]
        wheres = " and ".join(wheres)

        updates = list(self.key_mapping.values())
        updates.sort()
        updates = ['%s = :%s' % (x, x) for x in updates]
        updates = ", ".join(updates)

        h = rhnSQL.prepare(q % (updates, wheres))
        _dml(h, params)

    def reload(self, server_id):
        h = rhnSQL.prepare("""
            select *
            from rhnServerNetInterface
            where server_id = :server_id
        """)
        h.execute(server_id=server_id)
        self.db_ifaces = []
        while 1:
            row = h.fetchone_dict()
            if not row:
                break
            hval = {'primary_id': row['id'], 'name': row['name'], 'server_id': server_id}
            for key in list(self.key_mapping.values()):
                hval[key] = row[key]
            hval['ipv4'] = NetIfaceAddress4()
            hval['ipv4'].reload(hval['primary_id'])
            hval['ipv6'] = NetIfaceAddress6()
            hval['ipv6'].reload(hval['primary_id'])
            self.db_ifaces.append(hval)

        self.status = 0
        return 0

class FQDNInformation(Device):
    """ This is a wrapper class for the FQDN information (rhnServerFQDN) """
    table = "rhnServerFQDN"

    def __init__(self, dict=None):
        fields = ["name"]
        unique = ["name"]
        mapping = {'class': None}
        Device.__init__(self, fields, dict, mapping)
        self._autonull = ('name')
        self.sequence = "rhn_serverfqdn_id_seq"

class NetIfaceAddress(Device):
    key_mapping = {
        'netmask': 'netmask',
        'address': 'address',
    }
    unique = ['address']  # to be overriden by child
    table = 'rhnServerNetAddress'  # to be overriden by child

    def __init__(self, list_ifaces=None):
        log_debug(4, list_ifaces)
        self.ifaces = {}
        self.db_ifaces = []
        # parameters which are not allowed to be empty and set to NULL
        self._autonull = ('address', 'netmask')
        self.sequence = "rhn_srv_net_iface_id_seq"
        if not list_ifaces:
            return
        for info in list_ifaces:
            if not isinstance(info, type({})):
                raise rhnFault(53, "Unexpected format for interface %s" %
                               info)
            vdict = {}
            for key, mapping in list(self.key_mapping.items()):
                # Look at the mapping first; if not found, look for the key
                if mapping in info:
                    k = mapping
                else:
                    k = key
                if k not in info:
                    raise rhnFault(53, "Unable to find required field %s"
                                   % (key))
                val = info[k]
                if mapping in ['ip_addr', 'netmask', 'broadcast', 'address']:
                    # bugzilla: 129840 kudzu (rhpl) will sometimes pad octets
                    # with leading zeros, causing confusion; clean those up
                    val = self.cleanse_ip_addr(val)
                vdict[mapping] = val
            self.ifaces[vdict['address']] = vdict

    def __str__(self):
        return "<%s Class at %d: %s>\n" % (
            self.__class__.__name__,
            id(self), {
                "self.ifaces": self.ifaces,
                "self.db_ifaces": self.db_ifaces,
            })
    __repr__ = __str__

    def cleanse_ip_addr(self, val):
        """ to be overriden by child """
        return val

    def save(self, interface_id):
        log_debug(4, self.ifaces)
        self.reload(interface_id)
        log_debug(4, "Net addresses in DB", self.db_ifaces)

        # Compute updates, deletes and inserts
        inserts = []
        updates = []
        deletes = []
        ifaces = self.ifaces.copy()
        for iface in self.db_ifaces:
            address = iface['address']
            if iface['address'] not in self.ifaces:
                # To be deleted
                # filter out params, which are not used in query
                iface = dict((column, iface[column]) for column in self.unique)
                deletes.append(iface)
                continue
            uploaded_iface = ifaces[address]
            del ifaces[address]
            # FIXME this is inefficient for IPv4 as it row is present it will be always update
            if _hash_eq(uploaded_iface, iface):
                # Same value
                continue
            uploaded_iface.update({'interface_id': interface_id})
            updates.append(uploaded_iface)

        # Everything else in self.ifaces has to be inserted
        for name, iface in list(ifaces.items()):
            iface['address'] = iface['address']
            iface['interface_id'] = interface_id
            inserts.append(iface)

        log_debug(4, "Deletes", deletes)
        log_debug(4, "Updates", updates)
        log_debug(4, "Inserts", inserts)

        self._delete(deletes)
        self._update(updates)
        self._insert(inserts)

    def _insert(self, params):
        q = """insert into %s
            (%s) values (%s)"""
        self._null_columns(params, self._autonull)

        columns = list(self.key_mapping.values()) + ['interface_id']
        columns.sort()
        bind_params = ", ".join([':' + x for x in columns])
        h = rhnSQL.prepare(q % (self.table, ", ".join(columns), bind_params))
        _dml(h, params)

    def _delete(self, params):
        q = """delete from %s
            where %s"""

        columns = self.unique
        wheres = ['%s = :%s' % (x, x) for x in columns]
        h = rhnSQL.prepare(q % (self.table, " and ".join(wheres)))
        _dml(h, params)

    def _update(self, params):
        q = """update %s
            set %s
            where %s"""
        self._null_columns(params, self._autonull)

        wheres = self.unique
        wheres = ['%s = :%s' % (x, x) for x in wheres]
        wheres = " and ".join(wheres)

        updates = list(self.key_mapping.values())
        updates.sort()
        updates = ['%s = :%s' % (x, x) for x in updates]
        updates = ", ".join(updates)

        h = rhnSQL.prepare(q % (self.table, updates, wheres))
        _dml(h, params)

    def reload(self, interface_id):
        h = rhnSQL.prepare("""
            select *
            from %s
            where interface_id = :interface_id
            order by interface_id
        """ % self.table)
        h.execute(interface_id=interface_id)
        self.db_ifaces = []
        while 1:
            row = h.fetchone_dict()
            if not row:
                break
            hval = {'interface_id': row['interface_id']}
            for key in list(self.key_mapping.values()):
                hval[key] = row[key]
            self.db_ifaces.append(hval)

        self.status = 0
        return 0


class NetIfaceAddress6(NetIfaceAddress):

    """ IPv6 Network interface """
    key_mapping = {
        'netmask': 'netmask',
        'addr': 'address',
        'scope': 'scope',
    }
    table = 'rhnServerNetAddress6'
    unique = ['interface_id', 'address', 'scope']

    def __init__(self, addr_dict=None):
        NetIfaceAddress.__init__(self, addr_dict)
        self._autonull = ('address', 'netmask', 'scope')


class NetIfaceAddress4(NetIfaceAddress):

    """ IPv4 Network interface """
    key_mapping = {
        'netmask': 'netmask',
        'ipaddr': 'address',
        'broadcast': 'broadcast',
    }
    table = 'rhnServerNetAddress4'
    unique = ['interface_id']

    def __init__(self, addr_dict=None):
        NetIfaceAddress.__init__(self, addr_dict)
        self._autonull = ('address', 'netmask', 'broadcast')

    def cleanse_ip_addr(self, val):
        return cleanse_ip_addr(val)


def _hash_eq(h1, h2):
    """ Compares two hashes and return 1 if the first is a subset of the second """
    log_debug(5, h1, h2)
    for k, v in list(h1.items()):
        if k not in h2:
            return 0
        if h2[k] != v:
            return 0
    return 1


def _dml(statement, params):
    log_debug(5, params)
    if not params:
        return 0
    params = _transpose(params)
    statement.executemany(**params)

def _transpose(hasharr):
    """ Transpose the array of hashes into a hash of arrays """
    if not hasharr:
        return {}
    keys = list(hasharr[0].keys())
    result = {}
    for k in keys:
        result[k] = []

    for hval in hasharr:
        for k in keys:
            if k in hval:
                result[k].append(hval[k])
            else:
                result[k].append(None)

    return result


class MemoryInformation(Device):

    """ Memory information """
    table = "rhnRAM"

    def __init__(self, dict=None):
        fields = ["ram", "swap"]
        mapping = {"class": None}
        Device.__init__(self, fields, dict, mapping)
        # use our own sequence
        self.sequence = "rhn_ram_id_seq"
        if not dict:
            return
        # Sometimes we get sent a NNNNL number and we need to strip the L
        for k in fields:
            if not self.data.has_key(k):
                continue
            if self.data[k] in [None, "None", ""]:
                self.data[k] = -1
            self.data[k] = str(self.data[k])
            if self.data[k][-1] == 'L':
                self.data[k] = self.data[k][:-1]


class DMIInformation(Device):

    """ DMI information """
    table = "rhnServerDMI"

    def __init__(self, dict=None):
        fields = ["vendor", "system", "product", "asset", "board",
                  "bios_vendor", "bios_version", "bios_release"]
        mapping = {"class": None}
        Device.__init__(self, fields, dict, mapping)
        # use our own sequence
        self.sequence = "rhn_server_dmi_id_seq"
        self._autonull = ("vendor", "system", "product", "asset", "board",
                          "bios_vendor", "bios_version", "bios_release")
        if not dict:
            return

        # deal with hardware with insanely long dmi strings...
        for key, value in list(self.data.items()):
            # Some of the values may be None
            if value and isinstance(value, type("")):
                self.data[key] = value[:256]


class InstallInformation(Device):

    """ Install information """
    table = "rhnServerInstallInfo"

    def __init__(self, dict=None):
        fields = ['install_method', 'iso_status', 'mediasum']
        mapping = {
            'class': None,
            'installmethod': 'install_method',
            'isostatus': 'iso_status',
            'mediasum': 'mediasum',
        }
        Device.__init__(self, fields, dict, mapping)
        self.sequence = 'rhn_server_install_info_id_seq'

class SystemInformation():
    def __init__(self, hw=None, guest=None):
        log_debug(4, hw, guest)
        if not hw or "identifier" not in hw or not guest:
            # incomplete data
            log_debug(1, "incomplete data")
            return
        host = rhnSQL.Row("rhnServer", "digital_server_id")
        host.load(hw['identifier'])
        hid = host.get('id')
        guest.user = rhnUser.User("", "")
        guest.user.reload(guest.server['creator_id'])
        guestid = guest.getid()
        if not hid:
            # create a new host entry
            host = server_class.Server(guest.user, hw.get('arch'))
            host.server["name"] = hw.get('name')
            host.server["os"] = hw.get('os')
            host.server["release"] = hw.get('type')
            host.server["last_boot"] = time.time()
            host.default_description()
            host.virt_type = rhnVirtualization.VirtualizationType.FULLY
            host.virt_uuid = None
            fake_token = False
            if not rhnFlags.test("registration_token"):
                # we need to fake it
                rhnFlags.set("registration_token", 'fake')
                fake_token = True
            host.save(1, None)
            host.server["digital_server_id"] = hw['identifier']
            entitle_server = rhnSQL.Procedure("rhn_entitlements.entitle_server")
            entitle_server(host.getid(), 'foreign_entitled')
            host.save(1, None)
            if fake_token:
                rhnFlags.set("registration_token", None)

            hid = host.getid()
            host.reload(hid)
            log_debug(4, "New host created: ", host)
        else:
            host = server_class.Server(None)
            host.reload(hid)
            host.checkin(commit=0)
            log_debug(4, "Found host: ", host)
        host.reload_hardware()
        hostcpu = host.hardware_by_class(CPUDevice)
        if hostcpu and len(hostcpu) > 0:
            hostcpu = hostcpu[0].data
        else:
            hostcpu = None
        if not hostcpu or str(hostcpu.get('nrsocket')) != hw.get('total_ifls'):
            # update only if the number has changed
            log_debug(1, "update host cpu:", hw.get('total_ifls'))
            cpu = {
                'class' : 'CPU',
                'desc' : 'Processor',
                'count' : hw.get('total_ifls'),
                'model_ver' : '',
                'speed' : '0',
                'cache' : '',
                'model_number' : '',
                'bogomips' : '',
                'socket_count' : hw.get('total_ifls'),
                'platform' : hw.get('arch'),
                'other' : '',
                'model_rev' : '',
                'model' : hw.get('arch'),
                'type' : hw.get('type')}
            host.delete_hardware()
            host.add_hardware(cpu)
            host.save_hardware()

        h = rhnSQL.prepare("""
            select host_system_id
              from rhnVirtualInstance
             where virtual_system_id = :guestid""")
        h.execute(guestid=guestid)
        row = h.fetchone_dict()
        if not row or not row['host_system_id']:
            self._insert_virtual_instance(hid, None, fakeuuid=False)
            self._insert_virtual_instance(hid, guestid, fakeuuid=True)
        elif row['host_system_id'] != hid:
            log_debug(4, "update_virtual_instance", hid, guestid)
            q_update = rhnSQL.prepare("""
                UPDATE rhnVirtualInstance
                   SET host_system_id = :host_id
                 WHERE virtual_system_id = :guest_id
                   AND host_system_id = :old_host_id
            """)
            q_update.execute(host_id=hid, guest_id=guestid, old_host_id=row['host_system_id'])


    def _insert_virtual_instance(self, hostid, guestid, fakeuuid=True):
        log_debug(4, hostid, guestid, fakeuuid)
        viid = rhnSQL.Sequence('rhn_vi_id_seq')()
        q_insert = rhnSQL.prepare("""
            INSERT INTO rhnVirtualInstance
                (id, host_system_id, virtual_system_id, uuid, confirmed)
            VALUES
                (:viid, :host_id, :guest_id, :uuid, 1)
        """)
        fake_uuid = None
        if fakeuuid:
            fake_uuid = str(uuid.uuid4())
            fake_uuid = fake_uuid.replace('-', '').strip()
        q_insert.execute(viid=viid, host_id=hostid, guest_id=guestid, uuid=fake_uuid)

        q_insert = rhnSQL.prepare("""
            INSERT INTO rhnVirtualInstanceInfo
                (instance_id, state, instance_type)
            VALUES
                (:viid,
                 (
                     SELECT rvis.id
                     FROM rhnVirtualInstanceState rvis
                     WHERE rvis.label = 'unknown'
                 ),
                 (
                     SELECT rvit.id
                     FROM rhnVirtualInstanceType rvit
                     WHERE rvit.label = :virt_type
                 ))
        """)
        q_insert.execute(viid=viid, virt_type='fully_virtualized')


class MachineInformation:

    def __init__(self, sysid, name=None, data=None):
        machine_id = data.get("machine_id") if data and "machine_id" in data else None
        if not name:
            name = "unknown"
        log_debug(4, "updating machine_id", sysid, name, machine_id)
        existing_srv_id = self.__check_if_machine_id_exists(machine_id)
        if not existing_srv_id or existing_srv_id == sysid:
            s_update = rhnSQL.prepare("""
                        UPDATE rhnServer
                           SET machine_id = :machine_id
                        WHERE id = :server_id
                        """)
            s_update.execute(machine_id=machine_id, server_id=sysid)
        else:
            # this indicate a forced re-registration and we need to remove the old rhnServer
            log_debug(0, "Found duplicate server. Re-registration expected. Deleting existing: ", existing_srv_id)
            delete_server = rhnSQL.Procedure("delete_server")
            try:
                delete_server(existing_srv_id)
            except rhnSQL.SQLError:
                log_error("Error deleting server: %s" % existing_srv_id)

    def __check_if_machine_id_exists(self, machine_id):
        if machine_id:
            h = rhnSQL.prepare('SELECT id FROM rhnServer WHERE machine_id = :machine_id')
            h.execute(machine_id=machine_id)
            d = h.fetchone_dict()
            if d:
                return d['id']
        return None


class Hardware:

    """ Support for the hardware items """

    def __init__(self):
        self.__hardware = {}
        self.__loaded = 0
        self.__changed = 0

    def hardware_by_class(self, device_class):
        return self.__hardware[device_class]

    def add_hardware(self, hardware):
        """ add new hardware """
        log_debug(4, hardware)
        if not hardware:
            return -1
        if type(hardware) == type({}):
            hardware = UserDictCase(hardware)
        if not isinstance(hardware, UserDictCase):
            log_error("argument type is not  hash: %s" % hardware)
            raise TypeError("This function requires a hash as an argument")
        # validation is important
        hw_class = hardware.get("class")
        if hw_class is None:
            return -1
        hw_class = hw_class.lower()

        class_type = None

        if hw_class in ["video", "audio", "audio_hd", "usb", "other", "hd", "floppy",
                        "mouse", "modem", "network", "cdrom", "scsi",
                        "unspec", "scanner", "tape", "capture", "raid",
                        "socket", "keyboard", "printer", "firewire", "ide"]:
            class_type = HardwareDevice
        elif hw_class == "cpu":
            class_type = CPUDevice
        elif hw_class == "memory":
            class_type = MemoryInformation
        elif hw_class == "dmi":
            class_type = DMIInformation
        elif hw_class == "installinfo":
            class_type = InstallInformation
        elif hw_class == "netinterfaces":
            class_type = NetIfaceInformation
        elif hw_class == "fqdn":
            class_type = FQDNInformation
        elif hw_class == "sysinfo":
            # special case: we got info about a virtual host
            # where this system is running on
            SystemInformation(hardware, self)
            return 0
        elif hw_class == "machineinfo":
            MachineInformation(self.server["id"], self.server["name"], hardware)
            return 0
        else:
            log_error("UNKNOWN CLASS TYPE `%s'" % hw_class)
            # Same trick: try-except and raise the exception so that Traceback
            # can send the e-mail
            try:
                raise KeyError("Unknown class type `%s' for hardware '%s'" % (
                    hw_class, hardware))
            except:
                Traceback(mail=1)
                return

        # create the new device
        new_dev = class_type(hardware)

        if class_type in self.__hardware:
            _l = self.__hardware[class_type]
        else:
            _l = self.__hardware[class_type] = []
        _l.append(new_dev)
        self.__changed = 1
        return 0

    def delete_hardware(self, sysid=None):
        """ This function deletes all hardware. """
        log_debug(4, sysid)
        if not self.__loaded:
            self.reload_hardware_byid(sysid)
        hardware = self.__hardware
        if hardware == {}:
            # nothing to delete
            return 0
        self.__changed = 1

        self.__reset_machine_id(sysid)

        for device_type in list(hardware.keys()):
            for hw in hardware[device_type]:
                hw.status = 2  # deleted

            # filter out the hardware that was just added and then
            # deleted before saving
            hardware[device_type] = [a for a in hardware[device_type] if not (a.status == 2 and hasattr(a, "id") and a.id == 0)]
        return 0

    def __reset_machine_id(self, sysid):
        """ Sets rhnServer.machine_id to null """
        MachineInformation(sysid)

    def save_hardware_byid(self, sysid):
        """Save the hardware list """
        log_debug(3, sysid, "changed = %s" % self.__changed)
        hardware = self.__hardware
        if hardware == {}:  # nothing loaded
            return 0
        if not self.__changed:
            return 0
        for device_type, hw_list in list(hardware.items()):
            for hw in hw_list:
                hw.save(sysid)
        self.__changed = 0
        return 0

    def __load_from_db(self, DevClass, sysid):
        """ Load a certain hardware class from the database """
        if DevClass not in self.__hardware:
            self.__hardware[DevClass] = []

        h = rhnSQL.prepare("select id from %s where server_id = :sysid" % DevClass.table)
        h.execute(sysid=sysid)
        rows = h.fetchall_dict() or []

        for device in rows:
            dev_id = device['id']
            dev = DevClass()
            dev.reload(dev_id)
            self.__hardware[DevClass].append(dev)

    def reload_hardware_byid(self, sysid):
        """ load all hardware devices for a server """
        log_debug(4, sysid)
        if not sysid:
            return -1
        self.__hardware = {}  # discard what was already loaded
        # load from all hardware databases
        self.__load_from_db(HardwareDevice, sysid)
        self.__load_from_db(CPUDevice, sysid)
        self.__load_from_db(DMIInformation, sysid)
        self.__load_from_db(MemoryInformation, sysid)
        self.__load_from_db(InstallInformation, sysid)
        self.__load_from_db(FQDNInformation, sysid)

        net_iface_info = NetIfaceInformation()
        net_iface_info.reload(sysid)
        self.__hardware[NetIfaceInformation] = [net_iface_info]

        # now set the flag
        self.__changed = 0
        self.__loaded = 1
        return 0


MACHINE_ID_EMAIL_TEMPLATE = """A non-unique machine_id has been detected: "{0}"

This is expected behavior when using cloned images of systems.
Solution: Generate a new machine_id for system "{2} ({1})"

For SLES12+ and RHEL7:
  # rm -f /var/lib/dbus/machine-id
  # rm -f /etc/machine-id
  # dbus-uuidgen --ensure
  # systemd-machine-id-setup
  # rhn-profile-sync


For SLES11 and RHEL5/RHEL6:
  # rm /var/lib/dbus/machine-id
  # dbus-uuidgen --ensure
  # rhn-profile-sync


For more information on generating a new machine_id for traditional systems refer to:
{3}
"""
070701000001CB000081B40000000000000000000000016290A0C1000007E0000000000000000000000000000000000000003500000000spacewalk-backend/server/rhnServer/server_history.py  #
# Copyright (c) 2008--2016 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#
# Class for handling and updating the server history.
#

from spacewalk.common.rhnLog import log_debug
from spacewalk.server import rhnSQL

# these are kind of out there...
MAX_SUMMARY = 128
MAX_DETAILS = 4000


class History:

    def __init__(self):
        self.__h = []

    def add_history(self, summary, details=""):
        """ Add a history event to the server. """
        log_debug(4, summary)
        if details == '':
            self.__h.append((summary[:MAX_SUMMARY], None))
        else:
            self.__h.append((summary[:MAX_SUMMARY], details[:MAX_DETAILS]))

    def save_history_byid(self, server_id):
        log_debug(3, server_id, "%d history events" % len(self.__h))
        if not self.__h:
            return 0
        hist = rhnSQL.prepare("""
            insert into rhnServerHistory
                (id,
                 server_id,
                 summary,
                 details)
            values
                (sequence_nextval('rhn_event_id_seq'),
                 :server_id,
                 :summary,
                 :details)
        """)
        summaries = [x[0] for x in self.__h]
        details = [x[1] for x in self.__h]
        server_ids = [server_id] * len(self.__h)
        hist.executemany(server_id=server_ids, summary=summaries,
                         details=details)
        # Clear the history cache
        self.__h = []
        return 0
070701000001CC000081B40000000000000000000000016290A0C100006F1A000000000000000000000000000000000000003700000000spacewalk-backend/server/rhnServer/server_kickstart.py    #
# Copyright (c) 2008--2016 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#
#
# Kickstart-related operations
#

import sys

from spacewalk.common import rhnFlags
from spacewalk.common.rhnLog import log_debug, log_error
from spacewalk.common.rhnException import rhnException
from spacewalk.server import rhnSQL, rhnAction, rhnLib, rhnChannel


def update_kickstart_session(server_id, action_id, action_status,
                             kickstart_state, next_action_type):
    log_debug(3, server_id, action_id, action_status, kickstart_state, next_action_type)

    # Is this a kickstart-related action?
    ks_session_id = get_kickstart_session_id(server_id, action_id)
    if ks_session_id is None:
        # Nothing more to do
        log_debug(4, "Kickstart session not found")
        return None

    # Check the current action state
    if action_status == 2:
        # Completed
        ks_status = kickstart_state
        # Get the next action - it has to be of the right type
        next_action_id = get_next_action_id(action_id, next_action_type)
    elif action_status == 3:
        # Failed
        ks_status = 'failed'
        next_action_id = None
    else:
        raise rhnException("Invalid action state %s" % action_status)

    update_ks_session_table(ks_session_id, ks_status, next_action_id,
                            server_id)
    return ks_session_id

_query_update_ks_session_table = rhnSQL.Statement("""
    update rhnKickstartSession
       set action_id = :action_id,
           state_id = :ks_status_id,
           new_server_id = :server_id
     where id = :ks_session_id
""")


def update_ks_session_table(ks_session_id, ks_status, next_action_id,
                            server_id):
    log_debug(4, ks_session_id, ks_status, next_action_id, server_id)
    ks_table = rhnSQL.Table('rhnKickstartSessionState', 'label')
    ks_status_id = ks_table[ks_status]['id']

    h = rhnSQL.prepare(_query_update_ks_session_table)
    h.execute(ks_session_id=ks_session_id, ks_status_id=ks_status_id,
              action_id=next_action_id, server_id=server_id)

    if ks_status == 'complete':
        delete_guests(server_id)

_query_lookup_guests_for_host = rhnSQL.Statement("""
    select virtual_system_id from rhnVirtualInstance
        where host_system_id = :server_id
""")
_query_delete_virtual_instances = rhnSQL.Statement("""
    delete from rhnVirtualInstance where host_system_id = :server_id
""")


def delete_guests(server_id):
    """
    Callback used after a successful kickstart to remove any guest virtual
    instances, as well as their associated servers.
    """
    # First delete all the guest server objects:
    h = rhnSQL.prepare(_query_lookup_guests_for_host)
    h.execute(server_id=server_id)
    delete_server = rhnSQL.Procedure("delete_server")
    log_debug(4, "Deleting guests")
    while 1:
        row = h.fetchone_dict()
        if not row:
            break
        guest_id = row['virtual_system_id']
        log_debug(4, 'Deleting guest server: %s' % guest_id)
        try:
            if guest_id is not None:
                delete_server(guest_id)
        except rhnSQL.SQLError:
            log_error("Error deleting server: %s" % guest_id)

    # Finally delete all the virtual instances:
    log_debug(4, "Deleting all virtual instances for host")
    h = rhnSQL.prepare(_query_delete_virtual_instances)
    h.execute(server_id=server_id)

    # Commit all changes:
    try:
        rhnSQL.commit()
    except rhnSQL.SQLError:
        e = sys.exc_info()[1]
        log_error("Error committing transaction: %s" % e)
        rhnSQL.rollback()


_query_get_next_action_id = rhnSQL.Statement("""
    select a.id
      from rhnAction a, rhnActionType at
     where a.prerequisite = :action_id
       and a.action_type = at.id
       and at.label = :next_action_type
""")


def get_next_action_id(action_id, next_action_type=None):
    if not next_action_type:
        return None
    h = rhnSQL.prepare(_query_get_next_action_id)
    h.execute(action_id=action_id, next_action_type=next_action_type)
    row = h.fetchone_dict()
    if not row:
        return None
    return row['id']

_query_lookup_kickstart_session_id = rhnSQL.Statement("""
    select ks.id
      from rhnKickstartSession ks
     where (
             (ks.old_server_id = :server_id and ks.new_server_id is NULL)
             or ks.new_server_id = :server_id
             or ks.host_server_id = :server_id
           )
       and ks.action_id = :action_id
""")


def get_kickstart_session_id(server_id, action_id):
    h = rhnSQL.prepare(_query_lookup_kickstart_session_id)
    h.execute(server_id=server_id, action_id=action_id)

    row = h.fetchone_dict()
    if not row:
        # Nothing to do
        return None
    return row['id']


_query_insert_package_delta = rhnSQL.Statement("""
    insert into rhnPackageDelta (id, label)
    values (:package_delta_id, 'ks-delta-' || :package_delta_id)
""")
_query_insert_action_package_delta = rhnSQL.Statement("""
    insert into rhnActionPackageDelta (action_id, package_delta_id)
    values (:action_id, :package_delta_id)
""")
_query_insert_package_delta_element = rhnSQL.Statement("""
    insert into rhnPackageDeltaElement
           (package_delta_id, transaction_package_id)
    values
           (:package_delta_id,
            lookup_transaction_package(:operation, :n, :e, :v, :r, :a))
""")


def schedule_kickstart_delta(server_id, kickstart_session_id,
                             installs, removes):
    log_debug(3, server_id, kickstart_session_id)
    row = get_kickstart_session_info(kickstart_session_id, server_id)
    org_id = row['org_id']
    scheduler = row['scheduler']

    action_id = rhnAction.schedule_server_action(
        server_id,
        action_type='packages.runTransaction', action_name="Package delta",
        delta_time=0, scheduler=scheduler, org_id=org_id,
    )

    package_delta_id = rhnSQL.Sequence('rhn_packagedelta_id_seq').next()

    h = rhnSQL.prepare(_query_insert_package_delta)
    h.execute(package_delta_id=package_delta_id)

    h = rhnSQL.prepare(_query_insert_action_package_delta)
    h.execute(action_id=action_id, package_delta_id=package_delta_id)

    h = rhnSQL.prepare(_query_insert_package_delta_element)
    col_names = ['n', 'v', 'r', 'e']
    __execute_many(h, installs, col_names, operation='insert', a=None,
                   package_delta_id=package_delta_id)
    __execute_many(h, removes, col_names, operation='delete', a=None,
                   package_delta_id=package_delta_id)

    update_ks_session_table(kickstart_session_id, 'package_synch_scheduled',
                            action_id, server_id)

    return action_id


def schedule_kickstart_sync(server_id, kickstart_session_id):
    row = get_kickstart_session_info(kickstart_session_id, server_id)
    org_id = row['org_id']
    scheduler = row['scheduler']

    # Create a new action
    action_id = rhnAction.schedule_server_action(
        server_id,
        action_type='kickstart.schedule_sync',
        action_name="Schedule a package sync",
        delta_time=0, scheduler=scheduler, org_id=org_id,
    )
    return action_id


def _get_ks_virt_type(type_id):
    _query_kickstart_virt_type = rhnSQL.Statement("""
        select  label
        from    rhnKickstartVirtualizationType kvt
        where   kvt.id = :id
    """)
    prepared_query = rhnSQL.prepare(_query_kickstart_virt_type)
    prepared_query.execute(id=type_id)
    row = prepared_query.fetchone_dict()

    # XXX: we should have better constraints on the db so this doesn't happen.
    if not row:
        kstype = 'auto'
    else:
        kstype = row['label']
    log_debug(1, "KS_TYPE: %s" % kstype)
    return kstype


def get_kickstart_session_type(server_id, action_id):
    ks_session_id = get_kickstart_session_id(server_id, action_id)
    ks_session_info = get_kickstart_session_info(ks_session_id, server_id)
    ks_type_id = ks_session_info['virtualization_type']
    ks_type = _get_ks_virt_type(ks_type_id)
    return ks_type


def subscribe_to_tools_channel(server_id, kickstart_session_id):
    log_debug(3)
    row = get_kickstart_session_info(kickstart_session_id, server_id)
    org_id = row['org_id']
    scheduler = row['scheduler']
    ks_type_id = row['virtualization_type']
    ks_type = _get_ks_virt_type(ks_type_id)

    if ks_type == 'para_host':
        action_id = rhnAction.schedule_server_action(
            server_id,
            action_type='kickstart_host.add_tools_channel',
            action_name='Subscribe server to the Tools channel.',
            delta_time=0, scheduler=scheduler, org_id=org_id,
        )
    elif ks_type == 'para_guest':
        action_id = rhnAction.schedule_server_action(
            server_id,
            action_type='kickstart_guest.add_tools_channel',
            action_name='Subscribe guest to the Tools channel.',
            delta_time=0, scheduler=scheduler, org_id=org_id,
        )
    else:
        action_id = None
    return action_id


def schedule_virt_pkg_install(server_id, kickstart_session_id):
    log_debug(3)
    row = get_kickstart_session_info(kickstart_session_id, server_id)
    org_id = row['org_id']
    scheduler = row['scheduler']
    ks_type_id = row['virtualization_type']
    log_debug(1, "VIRTUALIZATION_TYPE: %s" % str(ks_type_id))
    ks_type = _get_ks_virt_type(ks_type_id)
    log_debug(1, "VIRTUALZIATION_TYPE_LABEL: %s" % str(ks_type))

    if ks_type == 'para_host':
        log_debug(1, "SCHEDULING VIRT HOST PACKAGE INSTALL...")
        action_id = rhnAction.schedule_server_action(
            server_id,
            action_type='kickstart_host.schedule_virt_host_pkg_install',
            action_name="Schedule install of mgr-virtualization-host package.",
            delta_time=0, scheduler=scheduler, org_id=org_id,
        )
    elif ks_type == 'para_guest':
        log_debug(1, "SCHEDULING VIRT GUEST PACKAGE INSTALL...")
        action_id = rhnAction.schedule_server_action(
            server_id,
            action_type='kickstart_guest.schedule_virt_guest_pkg_install',
            action_name="Schedule install of mgr-virtualization-guest package.",
            delta_time=0, scheduler=scheduler, org_id=org_id,
        )
    else:
        log_debug(1, "NOT A VIRT KICKSTART")
        action_id = None

    return action_id

_query_ak_deploy_config = rhnSQL.Statement("""
select rt.deploy_configs
  from rhnKickstartSession ks,
       rhnKickstartDefaultRegToken kdrt,
       rhnRegToken rt
 where ks.kickstart_id = kdrt.kickstart_id
   and kdrt.regtoken_id = rt.id
   and ks.id = :session_id
""")
# Make sure the activation keys associated with this kickstart profile
# have enabled deploying config files. Only deploy configs if at least one
# of them has. This is replacing code that didn't work because the
# rhnFlags('registration_token') could not be set during the rhn_check call.


def ks_activation_key_deploy_config(kickstart_session_id):
    h = rhnSQL.prepare(_query_ak_deploy_config)
    h.execute(session_id=kickstart_session_id)
    rows = h.fetchall_dict()
    if rows:
        for row in rows:
            if row['deploy_configs'] and row['deploy_configs'] == 'Y':
                return True
    return False

_query_schedule_config_files = rhnSQL.Statement("""
    insert into rhnActionConfigRevision
           (id, action_id, server_id, config_revision_id)
    select sequence_nextval('rhn_actioncr_id_seq'), :action_id,
           server_id, config_revision_id
      from (
            select distinct scc.server_id,
                   cf.latest_config_revision_id config_revision_id
              from rhnServerConfigChannel scc,
                   rhnConfigChannelType cct,
                   rhnConfigChannel cc,
                   rhnConfigFile cf,
                   rhnConfigFileState cfs
             where scc.server_id = :server_id
               and scc.config_channel_id = cf.config_channel_id
               and cf.config_channel_id = cc.id
               and cc.confchan_type_id = cct.id
               and cct.label in ('normal', 'local_override')
               and cf.latest_config_revision_id is not null
               and cf.state_id = cfs.id
               and cfs.label = 'alive'
            ) X
""")


def schedule_config_deploy(server_id, action_id, kickstart_session_id,
                           server_profile):
    """ schedule a configfiles.deploy action dependent on the current action """
    log_debug(3, server_id, action_id, kickstart_session_id)
    row = get_kickstart_session_info(kickstart_session_id, server_id)
    org_id = row['org_id']
    scheduler = row['scheduler']
    deploy_configs = (row['deploy_configs'] == 'Y'
                      and ks_activation_key_deploy_config(kickstart_session_id))

    if not deploy_configs:
        # Nothing more to do here
        update_ks_session_table(kickstart_session_id, 'complete',
                                next_action_id=None, server_id=server_id)
        return None

    if server_profile:
        # Have to schedule a package deploy action
        aid = schedule_rhncfg_install(server_id, action_id, scheduler,
                                      server_profile)
    else:
        aid = action_id

    next_action_id = rhnAction.schedule_server_action(
        server_id,
        action_type='configfiles.deploy',
        action_name='Deploy config files',
        delta_time=0, scheduler=scheduler, org_id=org_id,
        prerequisite=aid,
    )
    # Deploy all of the config files that are part of this server's config
    # channels
    h = rhnSQL.prepare(_query_schedule_config_files)
    h.execute(server_id=server_id, action_id=next_action_id)
    update_ks_session_table(kickstart_session_id, 'configuration_deploy',
                            next_action_id, server_id)
    return next_action_id


class MissingBaseChannelError(Exception):
    pass


def schedule_rhncfg_install(server_id, action_id, scheduler,
                            server_profile=None):
    capability = 'rhn-config-action'
    try:
        packages = _subscribe_server_to_capable_channels(server_id, scheduler,
                                                         capability)
    except MissingBaseChannelError:
        log_debug(2, "No base channel", server_id)
        return action_id

    if not packages:
        # No channels offer this capability
        log_debug(3, server_id, action_id,
                  "No channels to provide %s found" % capability)
        # No new action needed here
        return action_id

    if not server_profile:
        server_profile = get_server_package_profile(server_id)

    # Make the package profile a hash, for easier checking
    sphash = {}
    for p in server_profile:
        sphash[tuple(p)] = None

    packages_to_install = []
    for p in packages:
        key = (p['name'], p['version'], p['release'], p['epoch'])
        if key not in sphash:
            packages_to_install.append(p['package_id'])

    if not packages_to_install:
        # We already have these packages installed
        log_debug(4, "No packages needed to be installed")
        return action_id

    log_debug(4, "Scheduling package install action")
    new_action_id = schedule_package_install(server_id, action_id, scheduler,
                                             packages_to_install)
    return new_action_id

_query_lookup_subscribed_server_channels = rhnSQL.Statement("""
    select sc.channel_id,
           case when c.parent_channel is not null then 0 else 1 end is_base_channel
      from rhnServerChannel sc, rhnChannel c
     where sc.server_id = :server_id
       and sc.channel_id = c.id
""")
_query_lookup_unsubscribed_server_channels = rhnSQL.Statement("""
select c.id
  from
      -- Get all the channels available to this org
      ( select cfm.channel_id
          from rhnChannelFamilyMembers cfm,
               rhnPrivateChannelFamily pcf
         where pcf.org_id = :org_id
           and pcf.channel_family_id = cfm.channel_family_id
        union
        select cfm.channel_id
          from rhnChannelFamilyMembers cfm,
               rhnPublicChannelFamily pcf
         where pcf.channel_family_id = cfm.channel_family_id) ac,
       rhnChannel c
 where c.parent_channel = :base_channel_id
   and c.id = ac.channel_id
   and  not exists (
        select 1
          from rhnServerChannel
         where server_id = :server_id
         and channel_id = c.id)
""")


def _subscribe_server_to_capable_channels(server_id, scheduler, capability):
    log_debug(4, server_id, scheduler, capability)
    # Look through the channels this server is already subscribed to
    h = rhnSQL.prepare(_query_lookup_subscribed_server_channels)
    h.execute(server_id=server_id)
    base_channel_id = None
    channels = []
    while 1:
        row = h.fetchone_dict()
        if not row:
            break
        channel_id = row['channel_id']
        if row['is_base_channel']:
            base_channel_id = channel_id
        channels.append((channel_id, 1))
    if base_channel_id is None:
        raise MissingBaseChannelError()

    org_id = rhnSQL.Table('rhnServer', 'id')[server_id]['org_id']

    # Get the child channels this system is *not* subscribed to
    h = rhnSQL.prepare(_query_lookup_unsubscribed_server_channels)
    h.execute(server_id=server_id, org_id=org_id,
              base_channel_id=base_channel_id)
    l = [(x['id'], 0) for x in h.fetchall_dict() or []]
    channels.extend(l)
    # We now have a list of channels; look for one that provides the
    # capability
    for channel_id, is_subscribed in channels:
        log_debug(5, "Checking channel:", channel_id, "; subscribed:",
                  is_subscribed)
        packages = _channel_provides_capability(channel_id, capability)
        if packages:
            if is_subscribed:
                log_debug(4, "Already subscribed; found packages", packages)
                return packages

            # Try to subscribe to it
            rhnChannel.subscribe_sql(server_id, channel_id, 0)
            log_debug(4, "Subscribed to", channel_id,
                      "Found packages", packages)
            # We subscribed to this channel - we're done
            return packages

    # No channels provide this capability - we're done
    log_debug(4, "No channels to provide capability", capability)
    return None

_query_channel_provides_capability = rhnSQL.Statement("""
    select distinct pp.package_id, pn.name, pe.version, pe.release, pe.epoch
      from rhnChannelNewestPackage cnp,
           rhnPackageProvides pp,
           rhnPackageCapability pc,
           rhnPackageName pn,
           rhnPackageEVR pe
     where cnp.channel_id = :channel_id
       and cnp.package_id = pp.package_id
       and pp.capability_id = pc.id
       and pc.name = :capability
       and cnp.name_id = pn.id
       and cnp.evr_id = pe.id
""")


def _channel_provides_capability(channel_id, capability):
    log_debug(4, channel_id, capability)
    h = rhnSQL.prepare(_query_channel_provides_capability)
    h.execute(channel_id=channel_id, capability=capability)
    ret = h.fetchall_dict()
    if not ret:
        return ret
    return ret

_query_insert_action_packages = rhnSQL.Statement("""
    insert into rhnActionPackage
           (id, action_id, name_id, evr_id, package_arch_id, parameter)
    select sequence_nextval('rhn_act_p_id_seq'), :action_id, name_id, evr_id,
           package_arch_id, 'upgrade'
      from rhnPackage
     where id = :package_id
""")


def schedule_package_install(server_id, action_id, scheduler, packages):
    if not packages:
        # Nothing to do
        return action_id
    new_action_id = rhnAction.schedule_server_action(
        server_id, action_type='packages.update',
        action_name="Package update to enable configuration deployment",
        delta_time=0, scheduler=scheduler, prerequisite=action_id,
    )
    # Add entries to rhnActionPackage
    action_ids = [new_action_id] * len(packages)
    h = rhnSQL.prepare(_query_insert_action_packages)
    h.executemany(action_id=action_ids, package_id=packages)
    return new_action_id


def __execute_many(cursor, array, col_names, **kwargs):
    """ Execute the cursor, with arguments extracted from the array
        The array is converted into a hash having col_names as keys, and adds
        whatever kwarg was specified too.
    """
    linecount = len(array)
    if not linecount:
        return
    # Transpose the array into a hash with col_names as keys
    params = rhnLib.transpose_to_hash(array, col_names)
    for k, v in list(kwargs.items()):
        params[k] = [v] * linecount

    cursor.executemany(**params)


def _packages_from_cursor(cursor):
    result = []
    while 1:
        row = cursor.fetchone_dict()
        if not row:
            break
        p_name = row['name']
        if p_name == 'gpg-pubkey':
            # We ignore GPG public keys since they are too weird to schedule
            # as a package delta
            continue
        result.append((p_name, row['version'], row['release'], row['epoch']))
    return result

_query_lookup_pending_kickstart_sessions = rhnSQL.Statement("""
    select ks.id, ks.action_id, NULL other_server_id
      from rhnKickstartSessionState kss,
           rhnKickstartSession ks
     where (
             (ks.old_server_id = :server_id and ks.new_server_id is null)
             or ks.new_server_id = :server_id
           )
       and ks.state_id = kss.id
       and kss.label not in ('complete', 'failed')
       and (:ks_session_id is null or ks.id != :ks_session_id)
""")

_query_terminate_pending_kickstart_sessions = rhnSQL.Statement("""
    update rhnKickstartSession
       set action_id = NULL,
           state_id = :state_id
     where id = :kickstart_session_id
""")


def terminate_kickstart_sessions(server_id):
    log_debug(3, server_id)
    history = []
    tokens_obj = rhnFlags.get('registration_token')
    current_ks_session_id = tokens_obj.get_kickstart_session_id()
    # ks_session_id can be null
    h = rhnSQL.prepare(_query_lookup_pending_kickstart_sessions)
    h.execute(server_id=server_id, ks_session_id=current_ks_session_id)
    log_debug(4, "current_ks_session_id", current_ks_session_id)
    ks_session_ids = []
    action_ids = []
    while 1:
        row = h.fetchone_dict()
        if not row:
            break
        ks_session_ids.append(row['id'])
        action_ids.append(row['action_id'])

    if not ks_session_ids:
        # Nothing to do
        log_debug(4, "Nothing to do", server_id, current_ks_session_id)
        return []

    ks_session_table = rhnSQL.Table('rhnKickstartSessionState', 'label')
    state_id_failed = ks_session_table['failed']['id']
    state_ids = [state_id_failed] * len(ks_session_ids)

    # Add a history item
    for ks_session_id in ks_session_ids:
        log_debug(4, "Adding history entry for session id", ks_session_id)
        history.append(("Kickstart session canceled",
                        "A kickstart session for this system was canceled because "
                        "the system was re-registered with token <strong>%s</strong>" %
                        tokens_obj.get_names()))

    h = rhnSQL.prepare(_query_terminate_pending_kickstart_sessions)

    params = {
        'kickstart_session_id': ks_session_ids,
        'state_id': state_ids,
    }
    # Terminate pending actions
    log_debug(4, "Terminating sessions", params)
    h.executemany(**params)

    # Invalidate pending actions
    for action_id in action_ids:
        if action_id is None:
            continue
        rhnAction.invalidate_action(server_id, action_id)
    return history


def get_kickstart_profile_package_profile(kickstart_session_id):
    """ Fetches the package profile from the kickstart profile (Not the session) """
    h = rhnSQL.prepare("""
        select pn.name, pe.version, pe.release, pe.epoch, pa.label
          from rhnKickstartSession ks,
               rhnKickstartDefaults kd,
               rhnServerProfilePackage spp,
               rhnPackageName pn,
               rhnPackageEVR pe,
               rhnPackageArch pa
         where ks.id = :kickstart_session_id
           and kd.server_profile_id = spp.server_profile_id
           and spp.name_id = pn.id
           and spp.evr_id = pe.id
           and spp.package_arch_id = pa.id
           and kd.kickstart_id = ks.kickstart_id
    """)
    h.execute(kickstart_session_id=kickstart_session_id)
    return _packages_from_cursor(h)


def get_kisckstart_session_package_profile(kickstart_session_id):
    """ Fetches the package profile from the kickstart session """
    h = rhnSQL.prepare("""
        select pn.name, pe.version, pe.release, pe.epoch, pa.label
          from rhnKickstartSession ks,
               rhnServerProfilePackage spp,
               rhnPackageName pn,
               rhnPackageEVR pe,
               rhnPackageArch pa
         where ks.id = :kickstart_session_id
           and ks.server_profile_id = spp.server_profile_id
           and spp.name_id = pn.id
           and spp.evr_id = pe.id
           and spp.package_arch_id = pa.id
    """)
    h.execute(kickstart_session_id=kickstart_session_id)
    return _packages_from_cursor(h)


def get_server_package_profile(server_id):
    # XXX misa 2005-05-25  May need to look at package arches too
    h = rhnSQL.prepare("""
        select pn.name, pe.version, pe.release, pe.epoch, pa.label
          from rhnServerPackage sp,
               rhnPackageName pn,
               rhnPackageEVR pe,
               rhnPackageArch pa
         where sp.server_id = :server_id
           and sp.name_id = pn.id
           and sp.evr_id = pe.id
           and sp.package_arch_id = pa.id
    """)
    h.execute(server_id=server_id)
    return _packages_from_cursor(h)

_query_get_kickstart_session_info = rhnSQL.Statement("""
    select org_id, scheduler, deploy_configs, virtualization_type
      from rhnKickstartSession
     where id = :kickstart_session_id
""")


def get_kickstart_session_info(kickstart_session_id, server_id):
    h = rhnSQL.prepare(_query_get_kickstart_session_info)
    h.execute(kickstart_session_id=kickstart_session_id)
    row = h.fetchone_dict()
    if not row:
        raise rhnException("Could not fetch kickstart session id %s "
                           "for server %s" % (kickstart_session_id, server_id))

    return row

_query_lookup_ks_server_profile = rhnSQL.Statement("""
    select kss.server_profile_id
      from rhnServerProfileType spt,
           rhnServerProfile sp,
           rhnKickstartSession kss
     where kss.id = :ks_session_id
       and kss.server_profile_id = sp.id
       and sp.profile_type_id = spt.id
       and spt.label = :profile_type_label
""")
_query_delete_server_profile = rhnSQL.Statement("""
    delete from rhnServerProfile where id = :server_profile_id
""")


def cleanup_profile(server_id, action_id, ks_session_id, action_status):
    if ks_session_id is None:
        log_debug(4, "No kickstart session")
        return
    if action_status != 2:
        log_debug(4, "Action status: %s; nothing to do" % action_status)
        return

    h = rhnSQL.prepare(_query_lookup_ks_server_profile)
    h.execute(ks_session_id=ks_session_id, profile_type_label='sync_profile')
    row = h.fetchone_dict()
    if not row:
        log_debug(4, "No server profile of the right type found; nothing to do")
        return

    server_profile_id = row['server_profile_id']
    if server_profile_id is None:
        log_debug(4, "No server profile associated with this kickstart session")
        return

    # There is an "on delete cascade" constraint on
    # rhnKickstartSession.server_profile_id and on
    # rhnServerProfilePacakge.server_profile_id
    h = rhnSQL.prepare(_query_delete_server_profile)
    h.execute(server_profile_id=server_profile_id)
  070701000001CD000081B40000000000000000000000016290A0C100002D7E000000000000000000000000000000000000003100000000spacewalk-backend/server/rhnServer/server_lib.py  #
# Copyright (c) 2008--2016 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#
# implements a bunch of functions needed by rhnServer modules
#

import os
import hashlib
import time
import sys

if sys.version_info[0] == 3:
    from functools import reduce

from spacewalk.common.rhnLog import log_debug, log_error
from spacewalk.common.rhnException import rhnException
from spacewalk.common.rhnConfig import CFG

from spacewalk.server import rhnSQL
from rhn.i18n import bstr

# Do not import server.apacheAuth in this module, or the secret generation
# script will traceback - since it would try to import rhnSecret which doesn't
# exist


class rhnSystemEntitlementException(rhnException):
    pass


class rhnNoSystemEntitlementsException(rhnSystemEntitlementException):
    pass


def getServerID(server, fields=[]):
    """ Given a textual digitalid (old style or new style) or simply an ID
        try to search in the database and return the numeric id (thus doing
        validation in case you pass a numeric ID already)

        If found, it will return a dictionary with at least an "id" member

        Additional fields can be requested by passing an array of strings
        with field names from rhnServer
        check if all chars of a string are in a set
    """
    def check_chars(s):
        return reduce(lambda a, b: a and b in "0123456789", s, 1)

    log_debug(4, server, fields)
    if not type(server) in [type(""), type(0)]:
        return None

    if type(server) == type(0):
        search_id = server  # will search by number
    elif server[:7] == "SERVER-":  # old style certificate
        search_id = server
    elif server[:3] == "ID-":  # new style id, extract the numeric id
        tmp_id = server[3:]
        if not tmp_id or check_chars(tmp_id) == 0:
            # invalid certificate, after ID- we have non numbers
            return None
        search_id = int(tmp_id)
    else:
        # this is string. if all are numbers, then try to convert to int
        if check_chars(server) == 0:
            # throughly invalid id, whet the heck do we do?
            log_error("Invalid server ID passed in search: %s" % server)
            return None
        # otherwise try as int
        try:
            search_id = int(server)
        except ValueError:
            return None

    # Now construct the extra stuff for the case when additional fields
    # are requested
    xfields = ""
    archdb = ""
    archjoin = ""
    # look at the fields
    fields = [f.lower() for f in fields]
    for k in fields:
        if k == "id":  # already there
            continue
        if k == 'arch':
            archdb = ", rhnServerArch sa"
            archjoin = "and s.server_arch_id = sa.id"
            xfields = "%s, a.label arch" % xfields
            continue
        xfields = "%s, s.%s" % (xfields, k)
    # ugliness is over

    # Now build the search
    if type(search_id) == type(0):
        h = rhnSQL.prepare("""
        select s.id %s from rhnServer s %s
        where s.id = :p1 %s
        """ % (xfields, archdb, archjoin))
    else:  # string
        h = rhnSQL.prepare("""
        select s.id %s from rhnServer s %s
        where s.digital_server_id = :p1 %s
        """ % (xfields, archdb, archjoin))
    h.execute(p1=search_id)
    row = h.fetchone_dict()
    if row is None or row["id"] is None:  # not found
        return None
    return row


def getServerSecret(server):
    """ retrieve the server secret using the great getServerID function """
    row = getServerID(server, ["secret"])
    if row is None:
        return None
    return row["secret"]


###############################
# Server Class Helper functions
###############################

def __create_server_group(group_label, org_id):
    """ create the initial server groups for a new server """
    # Add this new server to the pending group
    h = rhnSQL.prepare("""
    select sg.id, sg.current_members
    from rhnServerGroup sg
    where sg.group_type = ( select id from rhnServerGroupType
                            where label = :group_label )
    and sg.org_id = :org_id
    """)
    h.execute(org_id=org_id, group_label=group_label)
    data = h.fetchone_dict()
    if not data:
        # create the requested group
        ret_id = rhnSQL.Sequence("rhn_server_group_id_seq")()
        h = rhnSQL.prepare("""
        insert into rhnServerGroup
        ( id, name, description,
          group_type, org_id)
        select
            :new_id, sgt.name, sgt.name,
            sgt.id, :org_id
        from rhnServerGroupType sgt
        where sgt.label = :group_label
        """)
        rownum = h.execute(new_id=ret_id, org_id=org_id,
                           group_label=group_label)
        if rownum == 0:
            # No rows were created, probably invalid label
            raise rhnException("Could not create new group for org=`%s'"
                               % org_id, group_label)
    else:
        ret_id = data["id"]
    return ret_id


def join_server_group(server_id, server_group_id):
    """ Adds a server to a server group """
    # avoid useless reparses caused by different arg types
    server_id = str(server_id)
    server_group_id = str(server_group_id)

    insert_call = rhnSQL.Function("rhn_server.insert_into_servergroup_maybe",
                                  rhnSQL.types.NUMBER())
    ret = insert_call(server_id, server_group_id)
    # return the number of rows inserted - feel free to ignore
    return ret


def create_server_setup(server_id, org_id):
    """ This function inserts a row in rhnServerInfo.
    """
    # create the rhnServerInfo record
    h = rhnSQL.prepare("""
    insert into rhnServerInfo (server_id, checkin, checkin_counter)
                       values (:server_id, current_timestamp, :checkin_counter)
    """)
    h.execute(server_id=server_id, checkin_counter=0)

    # Do not entitle the server yet
    return 1


def checkin(server_id, commit=1):
    """ checkin - update the last checkin time
    """
    log_debug(3, server_id)
    h = rhnSQL.prepare("""
    update rhnServerInfo
    set checkin = current_timestamp, checkin_counter = checkin_counter + 1
    where server_id = :server_id
    """)
    h.execute(server_id=server_id)
    if commit:
        rhnSQL.commit()
    return 1


def set_qos(server_id):
    pass


def throttle(server):
    """ throttle - limits access to free users if a throttle file exists
        NOTE: We don't throttle anybody. Just stub.
    """
    #server_id = server['id']
    #log_debug(3, server_id)
    #
    # Are we throttling?
    #throttlefile = "/usr/share/rhn/throttle"
    # if not os.path.exists(throttlefile):
    #    # We don't throttle anybody
    #    return
    return


def join_rhn(org_id):
    """ Stub """
    return


def snapshot_server(server_id, reason):
    if CFG.ENABLE_SNAPSHOTS:
        return rhnSQL.Procedure("rhn_server.snapshot_server")(server_id, reason)


def check_entitlement(server_id,want_array=False):
    h = rhnSQL.prepare("""select server_id, label, is_base from rhnServerEntitlementView where server_id = :server_id order by is_base DESC""")
    #h = rhnSQL.prepare("""select server_id, label from rhnServerEntitlementView where server_id = :server_id""")
    h.execute(server_id = server_id)

    # if I read the old code correctly, this should do about the same thing.
    # Basically "entitled? yay/nay" -akl.  UPDATE 12/08/06: akl says "nay".
    # It's official
    rows = h.fetchall_dict()
    ents = {}
    ents_array = []

    if rows:
        for row in rows:
            ents[row['label']] = row['label']
            ents_array.append( row['label'] )
        if want_array:
            return ents_array
        return ents

    if want_array:
        return ents_array
    # Empty dictionary - will act as False
    return ents


def check_entitlement_by_machine_id(machine_id):
    h = rhnSQL.prepare("""
    select e.label from rhnServer s, rhnServerEntitlementView e
    where s.machine_id=:machine_id and s.id=e.server_id
    """)
    h.execute(machine_id=machine_id)
    rows = h.fetchall_dict()
    return [row["label"] for row in rows] if rows else []

# Push client related
# XXX should be moved to a different file?
_query_update_push_client_registration = rhnSQL.Statement("""
    update rhnPushClient
       set name = :name_in,
           shared_key = :shared_key_in,
           state_id = :state_id_in,
           next_action_time = NULL,
           last_ping_time = NULL
     where server_id = :server_id_in
""")
_query_insert_push_client_registration = rhnSQL.Statement("""
        insert into rhnPushClient
           (id, server_id, name, shared_key, state_id)
        values (sequence_nextval('rhn_pclient_id_seq'), :server_id_in, :name_in,
            :shared_key_in, :state_id_in)
""")


def update_push_client_registration(server_id):
    # Generate a new a new client name and shared key
    client_name = generate_random_string(16)
    shared_key = generate_random_string(40)
    t = rhnSQL.Table('rhnPushClientState', 'label')
    row = t['offline']
    assert row is not None
    state_id = row['id']

    h = rhnSQL.prepare(_query_update_push_client_registration)
    rowcount = h.execute(server_id_in=server_id, name_in=client_name,
                         shared_key_in=shared_key, state_id_in=state_id)
    if not rowcount:
        h = rhnSQL.prepare(_query_insert_push_client_registration)
        h.execute(server_id_in=server_id, name_in=client_name,
                  shared_key_in=shared_key, state_id_in=state_id)

    # Get the server's (database) time
    # XXX
    timestamp = int(time.time())
    rhnSQL.commit()
    return timestamp, client_name, shared_key

_query_delete_duplicate_client_jids = rhnSQL.Statement("""
    update rhnPushClient
       set jabber_id = null
     where jabber_id = :jid and
           server_id <> :server_id
""")

_query_update_push_client_jid = rhnSQL.Statement("""
    update rhnPushClient
       set jabber_id = :jid,
           next_action_time = NULL,
           last_ping_time = NULL
     where server_id = :server_id
""")


def update_push_client_jid(server_id, jid):
    h1 = rhnSQL.prepare(_query_delete_duplicate_client_jids)
    h1.execute(server_id=server_id, jid=jid)
    h2 = rhnSQL.prepare(_query_update_push_client_jid)
    h2.execute(server_id=server_id, jid=jid)
    rhnSQL.commit()
    return jid


def generate_random_string(length=20):
    if not length:
        return ''
    random_bytes = 16
    length = int(length)
    s = hashlib.new('sha1')
    s.update(bstr("%.8f" % time.time()))
    s.update(bstr(str(os.getpid())))
    devrandom = open('/dev/urandom', mode='rb')
    result = []
    cur_length = 0
    while 1:
        s.update(bstr(devrandom.read(random_bytes)))
        buf = s.hexdigest()
        result.append(buf)
        cur_length = cur_length + len(buf)
        if cur_length >= length:
            break

    devrandom.close()

    result = ''.join(result)[:length]
    return result.lower()

if __name__ == '__main__':
    rhnSQL.initDB()
    print((update_push_client_registration(1000102174)))
  070701000001CE000081B40000000000000000000000016290A0C100005163000000000000000000000000000000000000003600000000spacewalk-backend/server/rhnServer/server_packages.py #
# Copyright (c) 2008--2017 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#
#
# This file contains classes and functions that save and retrieve package
# profiles.
#

import sys
import time
from uyuni.common.usix import DictType, raise_with_tb
from uyuni.common import rhn_rpm
from spacewalk.common.rhnLog import log_debug
from spacewalk.common.rhnException import rhnFault
from spacewalk.server import rhnSQL, rhnAction
from .server_lib import snapshot_server, check_entitlement

UNCHANGED = 0
ADDED = 1
DELETED = 2
UPDATED = 3


class dbPackage:

    """ A small class that helps us represent things about a
        database package. In this structure "real" means that we have an
        entry in the database for it.
    """

    def __init__(self, pdict, real=0, name_id=None, evr_id=None,
                 package_arch_id=None):
        if type(pdict) != DictType:
            return None
        if ('arch' not in pdict) or (pdict['arch'] is None):
            pdict['arch'] = ""
        if str(pdict['epoch']).lower() == "(none)" or pdict['epoch'] == "" or pdict['epoch'] is None:
            pdict['epoch'] = None
        else:
            pdict['epoch'] = str(pdict['epoch'])
        for k in ('name', 'version', 'release', 'arch'):
            if pdict[k] is None:
                return None
        self.n = str(pdict['name'])
        self.v = str(pdict['version'])
        self.r = str(pdict['release'])
        self.e = pdict['epoch']
        self.a = str(pdict['arch'])
        if 'type' in pdict:
            self.t = pdict['type']
        else:
            self.t = self.get_package_type_by_arch(self.a)

        if 'installtime' in pdict:
            self.installtime = pdict['installtime']
        else:
            self.installtime = None
        # nvrea is a tuple; we can use tuple as dictionary keys since they are
        # immutable
        self.nvrea = (self.n, self.v, self.r, self.e, self.a)
        self.real = real
        self.name_id = name_id
        self.evr_id = evr_id
        self.package_arch_id = package_arch_id
        if real:
            self.status = UNCHANGED
        else:
            self.status = ADDED

    def setval(self, value):
        self.status = value

    def add(self):
        if self.status == DELETED:
            if self.real:
                self.status = UNCHANGED  # real entries remain unchanged
            else:
                self.status = ADDED  # others are added
        return

    def delete(self):
        if self.real:
            self.status = DELETED
        else:
            self.status = UNCHANGED  # we prefer unchanged for the non-real packages
        return

    def __str__(self):
        return "server.rhnServer.dbPackage instance %s" % {
            'n': self.n,
            'v': self.v,
            'r': self.r,
            'e': self.e,
            'a': self.a,
            't': self.t,
            'installtime': self.installtime,
            'real': self.real,
            'name_id': self.name_id,
            'evr_id': self.evr_id,
            'package_arch_id': self.package_arch_id,
            'status': self.status,
        }
    __repr__ = __str__

    _query_get_package_type_by_arch = rhnSQL.Statement("""
        select at.label
          from rhnArchType at
          join rhnPackageArch pa ON pa.arch_type_id = at.id
         where pa.id = lookup_package_arch(:arch)
    """)

    def get_package_type_by_arch(self, arch):
        h = rhnSQL.prepare(self._query_get_package_type_by_arch)
        h.execute(arch=arch)
        row = h.fetchone_dict()
        if not row:
            return None
        return row['label']



class Packages:

    def __init__(self):
        self.__p = {}
        # Have we loaded the packages or not?
        self.__loaded = 0
        self.__changed = 0

    def add_package(self, sysid, entry):
        log_debug(4, sysid, entry)
        p = dbPackage(entry)
        if p is None:
            # Not a valid package spec
            return -1
        if not self.__loaded:
            self.reload_packages_byid(sysid)
        if p.nvrea in self.__p:
            if self.__p[p.nvrea].installtime != p.installtime:
                self.__p[p.nvrea].installtime = p.installtime
                self.__p[p.nvrea].status = UPDATED
            else:
                self.__p[p.nvrea].add()
            self.__changed = 1
            return 0
        self.__p[p.nvrea] = p
        self.__changed = 1
        return 0

    def delete_package(self, sysid, entry):
        """ delete a package from the list """
        log_debug(4, sysid, entry)
        p = dbPackage(entry)
        if p is None:
            # Not a valid package spec
            return -1
        if not self.__loaded:
            self.reload_packages_byid(sysid)
        if p.nvrea in self.__p:
            log_debug(4, "  Package deleted")
            self.__p[p.nvrea].delete()
            self.__changed = 1
        # deletion is always successfull
        return 0

    def dispose_packages(self, sysid):
        """ delete all packages and get an empty package list """
        log_debug(4, sysid)
        if not self.__loaded:
            self.reload_packages_byid(sysid)
        for k in list(self.__p.keys()):
            self.__p[k].delete()
            self.__changed = 1
        return 0

    def get_packages(self):
        """ produce a list of packages """
        return [a.nvrea for a in [a for a in list(self.__p.values()) if a.status != DELETED]]

    def __expand_installtime(self, installtime):
        """ Simulating the ternary operator, one liner is ugly """
        if installtime:
            return time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(installtime))
        else:
            return None

    def save_packages_byid(self, sysid, schedule=1):
        """ save the package list """
        log_debug(3, sysid, "Errata cache to run:", schedule,
                  "Changed:", self.__changed, "%d total packages" % len(self.__p))

        if not self.__changed:
            return 0

        commits = 0

        # get rid of the deleted packages
        dlist = [a for a in list(self.__p.values()) if a.real and a.status in (DELETED, UPDATED)]
        if dlist:
            log_debug(4, sysid, len(dlist), "deleted packages")
            h = rhnSQL.prepare("""
            delete from rhnServerPackage
            where server_id = :sysid
            and name_id = :name_id
            and evr_id = :evr_id
            and ((:package_arch_id is null and package_arch_id is null)
                or package_arch_id = :package_arch_id)
            """)
            h.executemany(**{
                'sysid': [sysid] * len(dlist),
                'name_id': [a.name_id for a in dlist],
                'evr_id': [a.evr_id for a in dlist],
                'package_arch_id': [a.package_arch_id for a in dlist],
            })
            commits = commits + len(dlist)
            del dlist

        # And now add packages
        alist = [a for a in list(self.__p.values()) if a.status in (ADDED, UPDATED)]
        if alist:
            log_debug(4, sysid, len(alist), "added packages")
            h = rhnSQL.prepare("""
            insert into rhnServerPackage
            (server_id, name_id, evr_id, package_arch_id, installtime)
            values (:sysid, LOOKUP_PACKAGE_NAME(:n), LOOKUP_EVR(:e, :v, :r, :t),
                LOOKUP_PACKAGE_ARCH(:a), TO_TIMESTAMP(:instime, 'YYYY-MM-DD HH24:MI:SS')
            )
            """)
            # some fields are not allowed to contain empty string (varchar)

            def lambdaae(a):
                if a.e == '':
                    return None
                else:
                    return a.e
            package_data = {
                'sysid': [sysid] * len(alist),
                'n': [a.n for a in alist],
                'v': [a.v for a in alist],
                'r': [a.r for a in alist],
                'e': list(map(lambdaae, alist)),
                'a': [a.a for a in alist],
                't': [a.t for a in alist],
                'instime': [self.__expand_installtime(a.installtime) for a in alist],
            }
            try:
                h.executemany(**package_data)
                rhnSQL.commit()
            except rhnSQL.SQLSchemaError:
                e = sys.exc_info()[1]
                # LOOKUP_PACKAGE_ARCH failed
                if e.errno == 20243:
                    log_debug(2, "Unknown package arch found", e)
                    raise_with_tb(rhnFault(45, "Unknown package arch found"), sys.exc_info()[2])

            commits = commits + len(alist)
            del alist

        if schedule:
            # queue this server for an errata update
            update_errata_cache(sysid)

        # if provisioning box, and there was an actual delta, snapshot
        ents = check_entitlement(sysid)
        if commits and "enterprise_entitled" in ents:
            snapshot_server(sysid, "Package profile changed")

        # Our new state does not reflect what's on the database anymore
        self.__loaded = 0
        self.__changed = 0
        return 0

    _query_get_package_arches = rhnSQL.Statement("""
        select id, label
          from rhnPackageArch
    """)

    def get_package_arches(self):
        # None gets automatically converted to empty string
        package_arches_hash = {None: ''}
        h = rhnSQL.prepare(self._query_get_package_arches)
        h.execute()
        while 1:
            row = h.fetchone_dict()
            if not row:
                break
            package_arches_hash[row['id']] = row['label']
        return package_arches_hash

    def reload_packages_byid(self, sysid):
        """ reload the packages list from the database """
        log_debug(3, sysid)
        # First, get the package arches
        package_arches_hash = self.get_package_arches()
        # XXX we could achieve the same thing with an outer join but that's
        # more expensive
        # Now load packages
        h = rhnSQL.prepare("""
        select
            rpn.name,
            rpe.version,
            rpe.release,
            rpe.epoch,
            rpe.type,
            sp.name_id,
            sp.evr_id,
            sp.package_arch_id,
            TO_CHAR(sp.installtime, 'YYYY-MM-DD HH24:MI:SS') installtime
        from
            rhnServerPackage sp,
            rhnPackageName rpn,
            rhnPackageEVR rpe
        where sp.server_id = :sysid
        and sp.name_id = rpn.id
        and sp.evr_id = rpe.id
        """)
        h.execute(sysid=sysid)
        self.__p = {}
        while 1:
            t = h.fetchone_dict()
            if not t:
                break
            t['arch'] = package_arches_hash[t['package_arch_id']]
            if 'installtime' in t and t['installtime'] is not None:
                t['installtime'] = time.mktime(time.strptime(t['installtime'],
                                                             "%Y-%m-%d %H:%M:%S"))
            p = dbPackage(t, real=1, name_id=t['name_id'], evr_id=t['evr_id'],
                          package_arch_id=t['package_arch_id'])
            self.__p[p.nvrea] = p
        log_debug(4, "Loaded %d packages for server %s" % (len(self.__p), sysid))
        self.__loaded = 1
        self.__changed = 0
        return 0

    _query_product_packages = rhnSQL.Statement("""
    select rp.name_id, rp.package_arch_id arch_id, X.name
      from
        (
          select pn.name,
                 latest.name_id,
                 lookup_evr((latest.evr).epoch, (latest.evr).version, (latest.evr).release, (latest.evr).type) AS evr_id,
                 latest.arch_label AS ARCH,
                 latest.arch_id
            from
               (
                SELECT p.name_id AS name_id,
                       max(pe.evr) AS evr,
                       pa.label AS arch_label,
                       pa.id AS arch_id
                  FROM
                       rhnPackageEVR pe
                  JOIN rhnPackage p ON p.evr_id = pe.id
                  JOIN rhnChannelPackage cp ON cp.package_id = p.id
                  JOIN rhnPackageArch pa ON pa.id = p.package_arch_id
                  JOIN rhnPackageProvides pv on p.id = pv.package_id
                  JOIN rhnPackageCapability c on pv.capability_id = c.id
                  JOIN rhnServerChannel sc on cp.channel_id = sc.channel_id
                 WHERE
                       sc.server_id = :server_id
                   and c.name = 'product()'
              GROUP BY p.name_id, pa.label, pa.id
         ) latest
         JOIN rhnPackageName pn ON pn.id = latest.name_id
        where pn.name not like '%-migration'
          and NOT EXISTS (
                 SELECT 1
                   FROM rhnServerPackage SP
                  WHERE SP.server_id = :server_id
                    AND SP.name_id = latest.name_id
                    AND (SP.package_arch_id = latest.arch_id OR SP.package_arch_id IS NULL)
          )
          and NOT EXISTS (
                 select 1
                   FROM rhnServerPackage SP
                   JOIN rhnPackage p_p ON SP.name_id = p_p.name_id and SP.evr_id = p_p.evr_id and SP.package_arch_id = p_p.package_arch_id
                   JOIN rhnPackageProvides p_pv on p_p.id = p_pv.package_id
                   JOIN rhnPackageCapability p_c on p_pv.capability_id = p_c.id
                  WHERE SP.server_id = :server_id
                    and p_c.name = pn.name
              )
        ) X
        JOIN rhnPackage rp ON rp.name_id = X.name_id
             AND rp.evr_id = X.evr_id
             AND rp.package_arch_id = X.arch_id
    """)

    def install_missing_product_packages(self):
        '''
        Find missing products and schedule an action to install them
        '''
        h = rhnSQL.prepare(self._query_product_packages)
        package_names = {}
        h.execute(server_id=self.server['id'])
        while True:
            row = h.fetchone_dict()
            if not row:
                break
            pn_id = row['name_id']
            pa_id = row['arch_id']
            package_names[(pn_id, pa_id)] = row['name']

        if not package_names:
            return None

        package_arch_ids = list(package_names.keys())

        action_id = rhnAction.schedule_server_packages_update_by_arch(self.server['id'],
                                                                      package_arch_ids,
                                                                      org_id=self.server['org_id'],
                                                                      action_name="Product Package Auto-Install")
        for p in list(package_names.values()):
            log_debug(1, "Scheduled for install:  '%s'" % p)

        rhnSQL.commit()

        return action_id


def update_errata_cache(server_id):
    """ Queue an update the the server's errata cache. This queues for
        Taskomatic instead of doing it in-line because updating many servers
        at once was problematic and lead to unresponsive Satellite and
        incorrectly reporting failed actions when they did not fail (see
        bz 1119460).
    """
    log_debug(2, "Queueing the errata cache update", server_id)
    update_needed_cache = rhnSQL.Procedure("queue_server")
    update_needed_cache(server_id, 0)


def processPackageKeyAssociations(header, checksum_type, checksum):
    provider_sql = rhnSQL.prepare("""
        insert into rhnPackageKeyAssociation
            (package_id, key_id) values
            (:package_id, :key_id)
    """)

    insert_keyid_sql = rhnSQL.prepare("""
        insert into rhnPackagekey
            (id, key_id, key_type_id) values
            (sequence_nextval('rhn_pkey_id_seq'), :key_id, :key_type_id)
            on conflict do nothing
    """)

    lookup_keyid_sql = rhnSQL.prepare("""
       select pk.id
         from rhnPackagekey pk
        where pk.key_id = :key_id
    """)

    lookup_keytype_id = rhnSQL.prepare("""
       select id
         from rhnPackageKeyType
        where LABEL in ('gpg', 'pgp')
    """)

    lookup_pkgid_sql = rhnSQL.prepare("""
        select p.id
          from rhnPackage p,
               rhnChecksumView c
         where c.checksum = :csum
           and c.checksum_type = :ctype
           and p.checksum_id = c.id
    """)

    lookup_pkgkey_sql = rhnSQL.prepare("""
        select 1
          from rhnPackageKeyAssociation
         where package_id = :package_id
           and key_id = :key_id
    """)

    lookup_pkgid_sql.execute(ctype=checksum_type, csum=checksum)
    pkg_ids = lookup_pkgid_sql.fetchall_dict()

    if not pkg_ids:
        # No package to associate, continue with next
        return

    sigkeys = header.signatures
    key_id = None  # _key_ids(sigkeys)[0]
    for sig in sigkeys:
        if sig['signature_type'] in ['gpg', 'pgp']:
            key_id = sig['key_id']

    if not key_id:
        # package is not signed, skip gpg key insertion
        return

    lookup_keyid_sql.execute(key_id=key_id)
    keyid = lookup_keyid_sql.fetchall_dict()

    if not keyid:
        lookup_keytype_id.execute()
        key_type_id = lookup_keytype_id.fetchone_dict()
        insert_keyid_sql.execute(key_id=key_id, key_type_id=key_type_id['id'])
        lookup_keyid_sql.execute(key_id=key_id)
        keyid = lookup_keyid_sql.fetchall_dict()

    for pkg_id in pkg_ids:
        lookup_pkgkey_sql.execute(key_id=keyid[0]['id'],
                                  package_id=pkg_id['id'])
        exists_check = lookup_pkgkey_sql.fetchall_dict()

        if not exists_check:
            provider_sql.execute(key_id=keyid[0]['id'], package_id=pkg_id['id'])


def package_delta(list1, list2):
    """ Compares list1 and list2 (each list is a tuple (n, v, r, e)
        returns two lists
        (install, remove)
        XXX upgrades and downgrades are simulated by a removal and an install
    """
    # Package registry - canonical versions for all packages
    package_registry = {}
    hash1 = _package_list_to_hash(list1, package_registry)
    hash2 = _package_list_to_hash(list2, package_registry)
    del package_registry

    installs = []
    removes = []
    for pn, ph1 in list(hash1.items()):
        if pn not in hash2:
            removes.extend(list(ph1.keys()))
            continue

        ph2 = hash2[pn]
        del hash2[pn]

        # Now, compute the differences between ph1 and ph2
        for p in list(ph1.keys()):
            if p not in ph2:
                # We have to remove it
                removes.append(p)
            else:
                del ph2[p]
        # Everything else left in ph2 has to be installed
        installs.extend(list(ph2.keys()))

    # Whatever else is left in hash2 should be installed
    for ph2 in list(hash2.values()):
        installs.extend(list(ph2.keys()))

    installs.sort()
    removes.sort()
    return installs, removes


def _package_list_to_hash(package_list, package_registry):
    """ Converts package_list into a hash keyed by name
        package_registry contains the canonical version of the package
        for instance, version 51 and 0051 are indentical, but that would break the
        list comparison in Python. package_registry is storing representatives for
        each equivalence class (where the equivalence relationship is rpm's version
        comparison algorigthm
        Side effect: Modifies second argument!
    """
    hash = {}
    for e in package_list:
        e = tuple(e)
        pn = e[0]
        if pn not in package_registry:
            # Definitely new equivalence class
            _add_to_hash(package_registry, pn, e)
            _add_to_hash(hash, pn, e)
            continue

        # Look for a match for this package name in the registry
        plist = list(package_registry[pn].keys())
        for p in plist:
            if rhn_rpm.nvre_compare(p, e) == 0:
                # Packages are identical
                e = p
                break
        else:
            # Package not found in the global registry - add it
            _add_to_hash(package_registry, pn, e)

        # Add it to the hash too
        _add_to_hash(hash, pn, e)

    return hash


def _add_to_hash(hash, key, value):
    if key not in hash:
        hash[key] = {value: None}
    else:
        hash[key][value] = None
 070701000001CF000081B40000000000000000000000016290A0C100000F81000000000000000000000000000000000000003300000000spacewalk-backend/server/rhnServer/server_route.py    #
# Copyright (c) 2008--2016 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#
#
# Module for storing client route through proxies
#

from spacewalk.common import rhnFlags
from spacewalk.common.rhnLog import log_debug
from spacewalk.server import rhnSQL, apacheAuth


def store_client_route(server_id):
    """ Stores the route the client took to get to hosted or the Satellite """

    log_debug(5, server_id)

    # get the old routing information for this server_id
    # oldRoute in this format: [(id0, hostname0),  (id1, hostname1),  ...]
    #                           closest to client, ..., closest to server
    h = rhnSQL.prepare("""
        select position,
               proxy_server_id,
               hostname
          from rhnServerPath
         where server_id = :server_id
        order by position
        """)
    h.execute(server_id=server_id)
    oldRoute = h.fetchall_dict() or []
    newRoute = []

    # construct oldRoute_ from oldRoute, to have the actual format described above
    oldRouteTuples = []
    for oldRouteDict in oldRoute:
        oldRouteTuples.append((str(oldRouteDict['proxy_server_id']), oldRouteDict['hostname']))

    # code block if there *is* routing info in the headers
    # NOTE: X-RHN-Proxy-Auth described in proxy/broker/rhnProxyAuth.py
    if rhnFlags.test('X-RHN-Proxy-Auth'):
        tokens = rhnFlags.get('X-RHN-Proxy-Auth').split(',')
        tokens = [token for token in tokens if token]

        log_debug(4, "route tokens", tokens)
        # newRoute in this format: [(id0, hostname0),  (id1, hostname1),  ...]
        #                           closest to client, ..., closest to server
        for token in tokens:
            token, hostname = apacheAuth.splitProxyAuthToken(token)
            if hostname is None:
                log_debug(3, "NOTE: Spacewalk Proxy v1.1 detected - route tracking is unsupported")
                newRoute = []
                break
            newRoute.append((token[0], hostname))

        log_debug(4, "newRoute", newRoute)

    if oldRouteTuples == newRoute:
        # Nothing to do here
        # This also catches the case of no routes at all
        return

    if oldRouteTuples:
        # blow away table rhnServerPath entries for server_id
        log_debug(8, 'blow away route-info for %s' % server_id)
        h = rhnSQL.prepare("""
            delete from rhnServerPath where server_id = :server_id
        """)
        h.execute(server_id=server_id)

    if not newRoute:
        log_debug(3, "No new route to add")
        rhnSQL.commit()
        return

    log_debug(8, 'adding route-info entries: %s - %s' % (server_id, newRoute))

    h = rhnSQL.prepare("""
        insert into rhnServerPath
               (server_id, proxy_server_id, position, hostname)
        values (:server_id, :proxy_server_id, :position, :hostname)
    """)
    server_ids = []
    proxy_ids = []
    proxy_hostnames = []
    positions = []
    counter = 0
    for p in newRoute:
        proxy_id, proxy_hostname = p[:2]
        proxy_ids.append(proxy_id)
        proxy_hostnames.append(proxy_hostname)
        server_ids.append(server_id)
        positions.append(counter)
        counter = counter + 1

    log_debug(5, server_ids, proxy_ids, positions,
              proxy_hostnames)
    h.executemany(server_id=server_ids, proxy_server_id=proxy_ids,
                  position=positions, hostname=proxy_hostnames)

    rhnSQL.commit()
   070701000001D0000081B40000000000000000000000016290A0C1000012F9000000000000000000000000000000000000003200000000spacewalk-backend/server/rhnServer/server_suse.py # -*- coding: utf-8 -*-
#
# Copyright (c) 2010 SUSE LLC
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#

from spacewalk.common.rhnLog import log_debug, log_error
from spacewalk.common.rhnException import rhnFault
from spacewalk.common.rhnTB import Traceback
from spacewalk.server import rhnSQL

class SuseData:
  def __init__(self):
    log_debug(4, "SuseData initialized")
    # format:
    # suse_products [{ 'name' = ..., 'version' = ..., 'release' = ..., 'arch' = ..., 'baseproduct' = ...},
    #               ...]
    self.suse_products = []

  def get_suse_products(self):
      if len(self.suse_products) == 0:
          self.suse_products = []
          self.load_suse_products()
      return self.suse_products

  def load_suse_products(self):
      log_debug(1, "load suse_products")
      if not self.server['id']:
          return
      h = rhnSQL.prepare("""
          SELECT sip.name,
                 sip.version,
                 sip.release,
                 rpa.label arch,
                 sip.is_baseproduct baseproduct
            FROM suseInstalledProduct sip
             JOIN rhnPackageArch rpa ON sip.arch_type_id = rpa.id
             JOIN suseServerInstalledProduct ssip ON sip.id = ssip.suse_installed_product_id
           WHERE ssip.rhn_server_id = :server_id
      """)
      h.execute(server_id = self.server['id'])
      self.suse_products = h.fetchall_dict() or []


  def add_suse_products(self, suse_products):
      log_debug(1, suse_products)
      if isinstance(suse_products, dict):
          self.suse_products = suse_products['products']
      elif isinstance(suse_products, list):
          self.suse_products = suse_products

  def save_suse_products_byid(self, sysid):
      log_debug(1, sysid, self.suse_products )
      if len(self.suse_products) == 0: # nothing loaded
          return 0
      self.create_update_suse_products(self.server["id"], self.suse_products)
      return 0

  def create_update_suse_products(self, sysid, products):
    log_debug(4, sysid, products)

    # check products
    h = rhnSQL.prepare("""
      SELECT
          suse_installed_product_id as id
        FROM suseServerInstalledProduct
       WHERE rhn_server_id = :sysid
    """)
    h.execute(sysid=sysid)
    existing_products = [x['id'] for x in h.fetchall_dict() or []]

    for product in products:
      sipid = self.get_installed_product_id(product)
      if not sipid:
        continue
      if sipid in existing_products:
        existing_products.remove(sipid)
        continue
      h = rhnSQL.prepare("""
        INSERT INTO suseServerInstalledProduct
        (rhn_server_id, suse_installed_product_id)
        VALUES(:sysid, :sipid)
      """)
      h.execute(sysid=sysid, sipid=sipid)

    for pid in existing_products:
      h = rhnSQL.prepare("""
        DELETE from suseServerInstalledProduct
         WHERE rhn_server_id = :sysid
           AND suse_installed_product_id = :pid
      """)
      h.execute(sysid=sysid, pid=pid)


  def get_installed_product_id(self, product):
    version_query = "sip.version = :version"
    release_query = "sip.release = :release"
    if product['version'] is None or product['version'] == '':
       product['version'] = None
       version_query = "(sip.version is NULL)"
    if product['release'] is None or product['release'] == '':
       product['release'] = None
       release_query = "(sip.release is NULL)"

    h = rhnSQL.prepare("""
      SELECT sip.id
        FROM suseInstalledProduct sip
         JOIN rhnPackageArch rpa ON sip.arch_type_id = rpa.id
       WHERE sip.name = :name
         AND %s
         AND rpa.label = :arch
         AND %s
         AND sip.is_baseproduct = :baseproduct
    """ % (version_query, release_query))
    h.execute(*(), **product)
    d = h.fetchone_dict()
    if not d:
      # not available yet, so let's create one
      n = rhnSQL.prepare("""
        INSERT INTO suseInstalledProduct
        (id, name, version, arch_type_id, release, is_baseproduct)
        VALUES (sequence_nextval('suse_inst_pr_id_seq'), :name, :version,
               (SELECT id FROM rhnPackageArch WHERE label = :arch),
               :release, :baseproduct)
      """)
      n.execute(*(), **product)
      h.execute(*(), **product)
      d = h.fetchone_dict()
      if not d:
        # should never happen
        log_error("Unable to create installed product item %s-%s-%s-%s" % (
          product['name'], product['version'], product['release'], product['arch']))
        return None

    return d['id']
   070701000001D1000081B40000000000000000000000016290A0C1000096DA000000000000000000000000000000000000003300000000spacewalk-backend/server/rhnServer/server_token.py    #
# Copyright (c) 2008--2016 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#
# this module handles the token registration code for a server
#

import sys

from spacewalk.common import rhnFlags
from uyuni.common.usix import raise_with_tb
from spacewalk.common.rhnLog import log_debug, log_error
from spacewalk.common.rhnException import rhnFault, rhnException
from spacewalk.common.rhnTranslate import _
from spacewalk.server import rhnSQL, rhnChannel, rhnAction

from .server_lib import join_server_group, check_entitlement

VIRT_ENT_LABEL = 'virtualization_host'

def token_channels(server, server_arch, tokens_obj):
    """ Handle channel subscriptions for the registration token """
    assert(isinstance(tokens_obj, ActivationTokens))
    log_debug(1, "YYY token_channels", tokens_obj)

    server_id, server_arch_id = server['id'], server['server_arch_id']

    # what channels are associated with this token (filter only those
    # compatible with this server)
    h = rhnSQL.prepare("""
    select
        rtc.channel_id id, c.name, c.label, c.parent_channel
    from
        rhnRegTokenChannels rtc,
        rhnChannel c,
        rhnServerChannelArchCompat scac
    where rtc.token_id = :token_id
        and rtc.channel_id = c.id
        and c.channel_arch_id = scac.channel_arch_id
        and scac.server_arch_id = :server_arch_id
    """)

    chash = {}
    base_channel_token = None
    base_channel_id = None

    for token in tokens_obj.tokens:
        token_id = token['token_id']
        h.execute(token_id=token_id, server_arch_id=server_arch_id)
        while 1:
            row = h.fetchone_dict()
            if not row:
                break
            channel_id = row['id']
            chash[channel_id] = row
            if row['parent_channel'] is not None:
                # Not a base channel
                continue

            # We only allow for one base channel
            if base_channel_id is not None and channel_id != base_channel_id:
                # Base channels conflict - are they coming from the same
                # token?
                if base_channel_token == token:
                    log_error("Token has multiple base channels", token_id,
                              base_channel_id)
                    raise rhnFault(62,
                                   _("Token `%s' has more than one base channel assigned")
                                   % token['note'])
                raise rhnFault(63, _("Conflicting base channels"))
            base_channel_id = channel_id
            base_channel_token = token

    bc = chash.get(base_channel_id)
    log_debug(4, "base channel", bc)

    # get the base channel for this server
    # Note that we are hitting this codepath after newserver.__save() has been
    # run, which means we've already chosen a base channel
    # from rhnDistChannelMap
    sbc = rhnChannel.get_base_channel(server_id, none_ok=1)

    # prepare the return value
    ret = []

    # now try to figure out which base channel we prefer
    if bc is None:
        if sbc is None:
            # we need at least one base channel definition
            log_error("Server has invalid release and "
                      "token contains no base channels", server_id,
                      tokens_obj.tokens)
            ret.append("System registered without a base channel")
            ret.append("Unsupported release-architecture combination "
                       "(%s, %s)" % (server["release"], server_arch))
            return ret
    else:  # do we need to drop the one from sbc?
        if sbc and sbc["id"] != bc["id"]:  # we need to prefer the token one
            # unsubscribe from old channel(s)
            rhnChannel.unsubscribe_all_channels(server_id)
            sbc = None  # force true on the next test
        if sbc is None:
            # no base channel subscription at this point
            rhnChannel.subscribe_sql(server_id, bc["id"], commit=0)
            ret.append("Subscribed to base channel '%s' (%s)" % (
                bc["name"], bc["label"]))
            sbc = bc

    # attempt to subscribe all non-base channels associated with this
    # token
    subscribe_channel = rhnSQL.Procedure("rhn_channel.subscribe_server")
    # Use a set here to ensure uniqueness of the
    # channel family ids used in the loop below.
    channel_family_ids = set()

    for c in [a for a in list(chash.values()) if a["parent_channel"]]:
        # make sure this channel has the right parent
        if str(c["parent_channel"]) != str(sbc["id"]):
            ret.append("NOT subscribed to channel '%s' "
                       "(not a child of '%s')" % (
                           c["name"], sbc["name"]))
            continue
        try:
            # don't run the EC yet
            # XXX: test return code when this one will start returning
            # a status
            subscribe_channel(server_id, c["id"], 0, None)
            child = rhnChannel.Channel()
            child.load_by_id(c["id"])
            child._load_channel_families()
            cfamid = child._channel_families[0]
            channel_family_ids.add(cfamid)
        except rhnSQL.SQLError:
            e = sys.exc_info()[1]
            log_error("Failed channel subscription", server_id,
                      c["id"], c["label"], c["name"])
            ret.append("FAILED to subscribe to channel '%s'" % c["name"])
        else:
            ret.append("Subscribed to channel '%s'" % c["name"])

    log_debug(5, "cf ids: %s" % str(channel_family_ids))
    log_debug(5, "Server org_id: %s" % str(server['org_id']))

    return ret

_query_token_server_groups = rhnSQL.Statement("""
    select rtg.server_group_id, sg.name
      from rhnRegTokenGroups rtg, rhnServerGroup sg
     where rtg.token_id = :token_id
       and sg.id = rtg.server_group_id
""")


def token_server_groups(server_id, tokens_obj):
    """ Handle server group subscriptions for the registration token """
    assert(isinstance(tokens_obj, ActivationTokens))
    h = rhnSQL.prepare(_query_token_server_groups)
    server_groups = {}
    for token in tokens_obj.tokens:
        token_id = token['token_id']
        h.execute(token_id=token_id)
        while 1:
            row = h.fetchone_dict()
            if not row:
                break
            server_group_id = row['server_group_id']
            server_groups[server_group_id] = row

    # Now try to subscribe server to group
    ret = []
    for server_group_id, sg in list(server_groups.items()):
        log_debug(4, "token server group", sg)

        try:
            join_server_group(server_id, server_group_id)
        except rhnSQL.SQLError:
            e = sys.exc_info()[1]
            log_error("Failed to add server to group", server_id,
                      server_group_id, sg["name"])
            raise_with_tb(rhnFault(80, _("Failed to add server to group %s") %
                           sg["name"]), sys.exc_info()[2])
        else:
            ret.append("Subscribed to server group '%s'" % sg["name"])
    return ret


_query_token_packages = rhnSQL.Statement("""
    select pn.id as name_id, pa.id as arch_id, pn.name
    from rhnPackageName pn, rhnRegTokenPackages rtp
        left outer join rhnPackageArch pa on rtp.arch_id = pa.id
    where rtp.token_id = :token_id
        and rtp.name_id = pn.id
    order by upper(pn.name)
""")
_query_token_packages_insert = rhnSQL.Statement("""
    insert into rhnActionPackage (id, action_id, name_id, parameter)
    values (sequence_nextval('rhn_act_p_id_seq'), :action_id, :name_id, 'upgrade')
""")


def token_packages(server_id, tokens_obj):
    assert(isinstance(tokens_obj, ActivationTokens))

    h = rhnSQL.prepare(_query_token_packages)
    package_names = {}
    for token in tokens_obj.tokens:
        token_id = token['token_id']
        h.execute(token_id=token_id)
        while True:
            row = h.fetchone_dict()
            if not row:
                break
            pn_id = row['name_id']
            pa_id = row['arch_id']
            package_names[(pn_id, pa_id)] = row['name']

    ret = []
    if not package_names:
        return ret

    package_arch_ids = list(package_names.keys())
    # Get the latest action scheduled for this token
    last_action_id = rhnFlags.get('token_last_action_id')

    action_id = rhnAction.schedule_server_packages_update_by_arch(server_id,
                                                                  package_arch_ids, org_id=token['org_id'],
                                                                  prerequisite=last_action_id,
                                                                  action_name="Activation Key Package Auto-Install")

    # This action becomes the latest now
    rhnFlags.set('token_last_action_id', action_id)

    for p in list(package_names.values()):
        ret.append("Scheduled for install:  '%s'" % p)

    rhnSQL.commit()

    return ret


# given 2 channels, with one pathname overlap, you'll get
# something like:
#  id=1,  '/etc/foo.txt',     priority=1
#  id=27, '/etc/foo.txt',     priority=2
#  id=53, '/var/tmp/baz.log', priority=2
_query_token_latest_revisions = rhnSQL.Statement("""
    select cf.latest_config_revision_id revision_id,
           cfn.path
      from rhnConfigFileName cfn,
           rhnConfigFile cf,
           rhnConfigChannelType cct,
           rhnConfigChannel cc,
           rhnServerConfigChannel scc
     where scc.server_id = :server_id
       and scc.config_channel_id = cc.id
       and cc.confchan_type_id = cct.id
       and cct.label != 'server_import'
       and cc.id = cf.config_channel_id
       and cf.config_file_name_id = cfn.id
           -- latest_config_revision_id should always be non-null but
           -- we should protect ourselves
       and cf.latest_config_revision_id is not null
    order by cfn.path, cct.priority, scc.position
""")

_query_add_revision_to_action = rhnSQL.Statement("""
    insert into rhnActionConfigRevision (id, action_id, server_id, config_revision_id)
    values (sequence_nextval('rhn_actioncr_id_seq'), :action_id, :server_id, :config_revision_id)
""")


def deploy_configs_if_needed(server):
    server_id = server['id']
    log_debug(4, server_id)
    # determine if there are actually any files to be deployed...
    revisions = {}

    h = rhnSQL.prepare(_query_token_latest_revisions)
    h.execute(server_id=server_id)

    while 1:
        row = h.fetchone_dict()
        if not row:
            break

        # only care about the 1st revision of a particular path due to
        # sql ordering...
        if row['path'] not in revisions:
            revisions[row['path']] = row['revision_id']

    if not len(revisions):
        return None

    # Get the latest action scheduled for this token
    last_action_id = rhnFlags.get('token_last_action_id')

    action_id = rhnAction.schedule_server_action(
        server_id,
        action_type='activation.schedule_deploy',
        action_name="Activation Key Config File Deployment",
        delta_time=0, scheduler=None,
        org_id=server['org_id'],
        prerequisite=last_action_id,
    )

    # This action becomes the latest now
    rhnFlags.set('token_last_action_id', action_id)

    log_debug(4, "scheduled activation key config deploy")

    h = rhnSQL.prepare(_query_add_revision_to_action)
    # XXX should use executemany()
    for revision_id in list(revisions.values()):
        log_debug(5, action_id, revision_id)
        h.execute(server_id=server_id,
                  action_id=action_id,
                  config_revision_id=revision_id)

    return action_id


_query_token_config_channels = rhnSQL.Statement("""
    select rtcc.config_channel_id,
           rtcc.position, cc.name
      from rhnConfigChannel cc,
           rhnRegTokenConfigChannels rtcc
     where rtcc.token_id = :token_id
       and rtcc.config_channel_id = cc.id
    order by rtcc.position
""")

# XXX Same query exists in config/rhn_config_management.py
_query_set_server_config_channels = rhnSQL.Statement("""
    insert into rhnServerConfigChannel (server_id, config_channel_id, position)
    values (:server_id, :config_channel_id, :position)
""")


def _get_token_config_channels(token_id):
    h = rhnSQL.prepare(_query_token_config_channels)
    h.execute(token_id=token_id)

    return h.fetchall_dict() or []

_query_current_config_channels = rhnSQL.Statement("""
    select config_channel_id
      from rhnServerConfigChannel
       where server_id = :server_id
           and position is not null
""")


def _get_current_config_channels(server_id):
    h = rhnSQL.prepare(_query_current_config_channels)
    h.execute(server_id=server_id)

    current_ch = h.fetchall_dict() or []
    data = []
    for curr in current_ch:
        data.append(curr['config_channel_id'])
    return data


def token_config_channels(server, tokens_obj):
    assert(isinstance(tokens_obj, ActivationTokens))
    server_id = server['id']

    # If this is a re-registration token, it should not have any config
    # channel associated with it (and no deploy_configs either). We'll just
    # keep whatever config files they had on this profile
    if tokens_obj.is_rereg_token:
        return []

    # Activation key order matters; config channels are stacked in order

    config_channels = []
    config_channels_hash = {}
    deployment = 0
    current_channels = []
    if tokens_obj.forget_rereg_token:
        current_channels = _get_current_config_channels(server_id)

    for token in tokens_obj.tokens:
        channels = _get_token_config_channels(token['token_id'])
        # Check every token used and if any of them are set to not deploy configs
        # then we won't deploy configs for any config channels the system is subscribed to
        deploy_configs = token['deploy_configs']
        log_debug(2, "token_id: ", token['token_id'], " deploy_configs: ", deploy_configs)
        if deploy_configs == 'Y':
            log_debug(2, "At least one token set to deploy config files")
            deployment = 1
        for c in channels:
            config_channel_id = c['config_channel_id']
            if not c['config_channel_id'] in current_channels and\
                    config_channel_id not in config_channels_hash:
                position = len(current_channels) + len(config_channels) + 1
                # Update the position in the queue
                c['position'] = position
                config_channels.append(c)
                config_channels_hash[config_channel_id] = None

    ret = []
    if config_channels:
        h = rhnSQL.prepare(_query_set_server_config_channels)

        h.executemany(**{
            'server_id': [server_id] * len(config_channels),
            'config_channel_id': [c['config_channel_id'] for c in config_channels],
            'position': [c['position'] for c in config_channels],
        })

        for channel in config_channels:
            msg = "Subscribed to config channel %s" % channel['name']
            log_debug(4, msg)
            ret.append(msg)

    # Now that we have the server subscribed to config channels,
    # determine if we have to deploy the files too
    # Don't pass tokens_obj, we only need the token that provided the config
    # channels in the first place
    if deployment:
        log_debug(2, "At least one token has deploy_configs == Y, deploying configs")
        deploy_configs_if_needed(server)

    rhnSQL.commit()

    return ret


_query_server_token_used = rhnSQL.Statement("""
    insert into rhnServerTokenRegs (server_id, token_id)
    values (:server_id, :token_id)
""")

_query_check_server_uses_token = rhnSQL.Statement("""
    select 1 from rhnServerTokenRegs
    where server_id = :server_id
    and token_id = :token_id
""")


def server_used_token(server_id, token_id):
    h = rhnSQL.prepare(_query_check_server_uses_token)
    h.execute(server_id=server_id, token_id=token_id)
    ret = h.fetchone_dict()
    if not ret:
        h = rhnSQL.prepare(_query_server_token_used)
        h.execute(server_id=server_id, token_id=token_id)

_query_check_token_limits = rhnSQL.Statement("""
    select
       rt.usage_limit max_nr,
       ( select count(server_id) from rhnServerTokenRegs
         where token_id = :token_id ) curr_nr
    from rhnRegToken rt
    where rt.id = :token_id
""")


def check_token_limits(server_id, tokens_obj):
    """ check the token registration limits """
    # XXX: would be nice to have those done with triggers in the database
    # land...
    assert(isinstance(tokens_obj, ActivationTokens))
    rhnSQL.transaction("check_token_limits")
    for token in tokens_obj.tokens:
        try:
            _check_token_limits(server_id, token)
        except:
            log_debug(4, "Rolling back transaction")
            rhnSQL.rollback("check_token_limits")
            raise
    return 0


def _check_token_limits(server_id, token_rec):
    token_id = token_rec["token_id"]

    # Mark that we used this token
    server_used_token(server_id, token_id)

    # now check we're not using this token too much
    h = rhnSQL.prepare(_query_check_token_limits)
    h.execute(token_id=token_id)
    ret = h.fetchone_dict()
    if not ret:
        raise rhnException("Could not check usage limits for token",
                           server_id, token_rec)
    # See bug #79095: if usage_limit is NULL, it means unlimited reg tokens
    if ret["max_nr"] is not None and ret["max_nr"] < ret["curr_nr"]:
        log_error("Token usage limit exceeded", token_rec,
                  ret["max_nr"], server_id)
        raise rhnFault(61, _("Maximum usage count of %s reached") % ret["max_nr"])
    # all clean, we're below usage limits
    return 0


class ActivationTokens:

    """
    An aggregation of activation tokens, exposing important information
    like org_id, user_id etc in a unified manner.
    """
    is_rereg_token = 0
    forget_rereg_token = 0

    def __init__(self, tokens, user_id=None, org_id=None,
                 kickstart_session_id=None, entitlements=[], deploy_configs=None, contact_method_id=0):
        self.tokens = tokens
        self.user_id = user_id
        self.org_id = org_id
        self.kickstart_session_id = kickstart_session_id
        # Boolean
        self.deploy_configs = deploy_configs
        # entitlements is list of tuples [(name, label)]
        self.entitlements = entitlements
        self.contact_method_id = contact_method_id

    def __nonzero__(self):
        return (len(self.tokens) > 0)

    __bool__ = __nonzero__

    def get_server_id(self):
        if not self:
            return None
        # We can have only one re-activation key
        for token in self.tokens:
            server_id = token.get('server_id')
            if server_id:
                return server_id
        # We hit this when no re-activation key
        return None

    def get_user_id(self):
        return self.user_id

    def get_org_id(self):
        return self.org_id

    def get_kickstart_session_id(self):
        return self.kickstart_session_id

    def get_entitlements(self):
        return self.entitlements

    def has_entitlement_label(self, entitlement):
        if entitlement in [x[0] for x in self.entitlements]:
            return 1
        return 0

    def get_deploy_configs(self):
        return self.deploy_configs

    def get_contact_method_id(self):
        return self.contact_method_id

    def get_names(self):
        """ Returns a string of the entitlement names that the token grants.
            This function is poorly named.
        """
        token_names = [x[0] for x in self.entitlements]
        if not token_names:
            return None
        return ",".join(token_names)

    def get_tokens(self):
        tokens = []
        for token in self.tokens:
            tokens.append(token['token'])

        return tokens

    def entitle(self, server_id, history, virt_type=None):
        """
        Entitle a server according to the entitlements we have configured.
        """
        log_debug(3, self.entitlements)

        # check for bootstrap_entitled and unentitle first
        cur = check_entitlement(server_id, True)
        if cur and 'bootstrap_entitled' in cur:
            remove_ent = rhnSQL.Procedure("rhn_entitlements.remove_server_entitlement")
            remove_ent(server_id, "bootstrap_entitled")

        entitle_server = rhnSQL.Procedure("rhn_entitlements.entitle_server")
        # TODO: entitle_server calls can_entitle_server, so we're doing this
        # twice for each successful call. Is it necessary for external error
        # handling or can we ditch it?
        can_entitle_server = rhnSQL.Function(
            "rhn_entitlements.can_entitle_server", rhnSQL.types.NUMBER())

        can_ent = None

        history["entitlement"] = ""

        for entitlement in self.entitlements:
            if virt_type is not None and entitlement[0] == VIRT_ENT_LABEL:
                continue

            try:
                can_ent = can_entitle_server(server_id, entitlement[0])
            except rhnSQL.SQLSchemaError:
                e = sys.exc_info()[1]
                can_ent = 0

            try:
                # bugzilla #160077, skip attempting to entitle if we cant
                if can_ent:
                    entitle_server(server_id, entitlement[0])
            except rhnSQL.SQLSchemaError:
                e = sys.exc_info()[1]
                log_error("Token failed to entitle server", server_id,
                          self.get_names(), entitlement[0], e.errmsg)
                #No idea what error may be here...
                raise_with_tb(rhnFault(90, e.errmsg), sys.exc_info()[2])
            except rhnSQL.SQLError:
                e = sys.exc_info()[1]
                log_error("Token failed to entitle server", server_id,
                          self.get_names(), entitlement[0], e.args)
                raise_with_tb(rhnFault(90, str(e)), sys.exc_info()[2])
            else:
                history["entitlement"] = "Entitled as a %s member" % entitlement[1]


class ReRegistrationToken(ActivationTokens):

    """
    Subclass for re-registration keys.

    (i.e. used alone and not combined with other regular activation keys)
    """
    is_rereg_token = 1


class ReRegistrationActivationToken(ReRegistrationToken):

    """
    Subclass for re-registration keys and activation keys used together.
    """
    forget_rereg_token = 1

    def __init__(self, tokens, user_id=None, org_id=None,
            kickstart_session_id=None, entitlements=[],
            remove_entitlements=[], deploy_configs=None, contact_method_id=0):
        ReRegistrationToken.__init__(self, tokens, user_id, org_id,
                kickstart_session_id, entitlements, deploy_configs, contact_method_id)
        self.remove_entitlements = remove_entitlements # list of labels

    def entitle(self, server_id, history, virt_type=None):
        for ent in self.remove_entitlements:
            unentitle_server = rhnSQL.Procedure(
                "rhn_entitlements.remove_server_entitlement")
            try:
                unentitle_server(server_id, ent)
            except rhnSQL.SQLSchemaError:
                e = sys.exc_info()[1]
                log_error("Failed to unentitle server", server_id,
                          ent, e.errmsg)
                raise_with_tb(rhnFault(90, e.errmsg), sys.exc_info()[2])
            except rhnSQL.SQLError:
                e = sys.exc_info()[1]
                log_error("Failed to unentitle server", server_id,
                          ent, e.args)
                raise_with_tb(rhnFault(90, str(e)), sys.exc_info()[2])

        # Call parent method:
        ReRegistrationToken.entitle(self, server_id, history, virt_type)


def _fetch_token_from_cursor(cursor):
    """ Fetches a token from a prepared and executed cursor
        Used by both fetch_token and fetch_org_token
    """
    token_entry = None
    token_entitlements = {}
    while 1:
        row = cursor.fetchone_dict()
        if not row:
            break
        tup = (row['token_type'], row['token_desc'], row['is_base'])
        token_entitlements[tup] = None
        if token_entry:
            # We've seen this token already - the only thing that can be
            # different is the entitlement level, which we've already
            # saved

            # Double-check it's the same token
            assert token_entry['token_id'] == row['token_id'], \
                "Query returned different tokens - missing unique constraint" \
                " on rhnActivationKey.token?"
            continue

        # First entry of this type
        token_entry = row

    return token_entry, token_entitlements


def _categorize_token_entitlements(token_entitlements, entitlements_base,
                                   entitlements_extra):
    """ Given a hash token_entitlements, splits the base ones and puts them in
        the entitlements_base hash, and the extras in entitlements_extra
    """
    for tup in list(token_entitlements.keys()):
        is_base = tup[2]
        ent = (tup[0], tup[1])
        if is_base == 'Y':
            entitlements_base[ent] = None
        else:
            entitlements_extra[ent] = None

    return entitlements_base, entitlements_extra


def _validate_entitlements(token_string, rereg_ents, base_entitlements,
                           extra_entitlements, remove_entitlements):
    """
    Perform various checks on the final list of entitlements accumulated after
    processing all activation keys.

    rereg_ents passed in as a list of entitlement labels.

    Extra/base entitlements passed in as a hash of tuples ('label', 'Friendly
    Name') mapping to None. (i.e. seems to be used as just a set)

    Remove entitlements being maintained as just a list of labels.
    """
    # Check for exactly one base entitlement:
    if len(list(base_entitlements.keys())) != 1:
        log_error("Tokens with different base entitlements", token_string,
                  base_entitlements)
        raise rhnFault(63,
                       _("Stacking of re-registration tokens with different base entitlements "
                         "is not supported"), explain=0)

_query_token = rhnSQL.Statement("""
    select rt.id as token_id,
           sgt.label as token_type,
           sgt.name as token_desc,
           sgt.is_base,
           ak.token,
           rt.user_id,
           rt.org_id,
           rt.note,
           rt.usage_limit,
           rt.server_id,
           ak.ks_session_id kickstart_session_id,
           rt.deploy_configs,
           rt.contact_method_id
    from rhnActivationKey ak, rhnRegToken rt, rhnRegTokenEntitlement rte, rhnServerGroupType sgt
    where ak.token = :token
      and ak.reg_token_id = rt.id
      and rt.disabled = 0
      and rt.id = rte.reg_token_id
      and rte.server_group_type_id = sgt.id
""")

_query_contact_method_ranking = rhnSQL.Statement("""
    select id, rank
      from suseServerContactMethod
""")

def fetch_token(token_string):
    """ Fetches a token from the database """
    log_debug(3, token_string)
    # A token should always be passed to this function
    assert token_string
    tokens = token_string.split(',')
    h = rhnSQL.prepare(_query_token)
    result = []
    rereg_token_found = 0
    num_of_rereg = 0
    # Global user_id and org_id
    user_id = None
    same_user_id = 1
    org_id = None
    ks_session_id_token = None
    deploy_configs = None
    entitlements_base = {}
    entitlements_extra = {}

    # List of re-registration entitlements labels (if found):
    rereg_ents = []

    # 0 = default, 1 = ssh, 2 = ssh-tunnel
    server_contact_method = 0;
    cm_ranking = {}

    ranks = rhnSQL.fetchall_dict(_query_contact_method_ranking)
    for r in ranks:
        cm_ranking[r['id']] = r['rank']

    for token in tokens:
        h.execute(token=token)
        token_entry, token_entitlements = _fetch_token_from_cursor(h)

        if not token_entry:
            # Unable to find the token
            log_error("Invalid token '%s'" % token)
            raise rhnFault(60, _("Could not find token '%s'") % token, explain=0)

        row = token_entry

        if row.get('server_id'):
            rereg_token_found = row
            num_of_rereg += 1

            # Store the re-reg ents:
            for tup in list(token_entitlements.keys()):
                rereg_ents.append(tup[0])

        # Check user_id
        token_user_id = row.get('user_id')

        # 4/27/05 wregglej - Commented this line out 'cause the token_user_id should
        # be allowed to be None. This line was causing problems when registering with
        # an activation key whose creator had been deleted.
        #assert(token_user_id is not None)

        if same_user_id and user_id is not None and user_id != token_user_id:
            log_debug(4, "Different user ids: %s, %s" % (same_user_id, user_id))
            # This token has a different user id than the rest
            same_user_id = 0
        else:
            user_id = token_user_id

        # Check org_id
        token_org_id = row.get('org_id')
        assert(token_org_id is not None)
        if org_id is not None and org_id != token_org_id:
            # Cannot use activation keys from different orgs
            raise rhnFault(63, _("Tokens from mismatching orgs"), explain=0)
        org_id = token_org_id

        # Check kickstart session ids
        token_ks_session_id = row.get('kickstart_session_id')
        if token_ks_session_id is not None:
            if ks_session_id_token is not None:
                ks_session_id = ks_session_id_token['kickstart_session_id']
                if ks_session_id != token_ks_session_id:
                    # Two tokens with different kickstart sessions
                    raise rhnFault(63, _("Kickstart session mismatch"),
                                   explain=0)
            else:
                # This token has kickstart session id info
                ks_session_id_token = row

        # Iterate through the entitlements from this token
        # and intead of picking one entitlement, create a union of
        # all the entitlemts as a list of tuples of (name, label) aka
        # (token_type, token_desc)
        _categorize_token_entitlements(token_entitlements, entitlements_base,
                                       entitlements_extra)

        # Deploy configs?
        deploy_configs = deploy_configs or (row['deploy_configs'] == 'Y')

        # which contact method?
        if cm_ranking[row['contact_method_id']] > cm_ranking[server_contact_method]:
            server_contact_method = row['contact_method_id']
        result.append(row)

    # One should not stack re-activation tokens
    if num_of_rereg > 1:
        raise rhnFault(63,
                       _("Stacking of re-registration tokens is not supported"), explain=0)

    entitlements_remove = []
    _validate_entitlements(token_string, rereg_ents, entitlements_base,
                           entitlements_extra, entitlements_remove)
    log_debug(5, "entitlements_base = %s" % entitlements_base)
    log_debug(5, "entitlements_extra = %s" % entitlements_extra)

    if ks_session_id_token:
        ks_session_id = ks_session_id_token['kickstart_session_id']
    else:
        ks_session_id = None

    # akl add entitles array constructed above to kwargs
    kwargs = {
        'user_id': user_id,
        'org_id': org_id,
        'kickstart_session_id': ks_session_id,
        'entitlements': list(entitlements_base.keys()) + list(entitlements_extra.keys()),
        'deploy_configs': deploy_configs,
        'contact_method_id': server_contact_method,
    }
    log_debug(4, "Values", kwargs)

    if rereg_token_found and len(result) > 1:
        log_debug(4, "re-activation stacked with activationkeys")
        kwargs['remove_entitlements'] = entitlements_remove
        return ReRegistrationActivationToken(result, **kwargs)
    elif rereg_token_found:
        log_debug(4, "simple re-activation")
        return ReRegistrationToken([rereg_token_found], **kwargs)

    return ActivationTokens(result, **kwargs)

# always be sure this query has matching columns as _query_token above...
_query_org_default_token = rhnSQL.Statement("""
    select rt.id as token_id,
           sgt.label as token_type,
           sgt.name as token_desc,
           sgt.is_base,
           ak.token,
           rt.user_id,
           rt.org_id,
           rt.note,
           -- Default tokens have no usage limit
           NULL usage_limit,
           rt.server_id,
           NULL kickstart_session_id,
           rt.deploy_configs
      from rhnServerGroupType sgt,
           rhnActivationKey ak,
           rhnRegToken rt,
           rhnRegTokenOrgDefault rtod,
           rhnRegTokenEntitlement rte
     where rtod.org_id = :org_id
       and rtod.reg_token_id = rt.id
       and rt.id =  rte.reg_token_id
       and rt.disabled = 0
       and rte.server_group_type_id = sgt.id
       and ak.reg_token_id = rtod.reg_token_id
""")


def fetch_org_token(org_id):
    log_debug(3, org_id)
    h = rhnSQL.prepare(_query_org_default_token)
    h.execute(org_id=org_id)
    token_entry, token_entitlements = _fetch_token_from_cursor(h)
    entitlements_base = {}
    entitlements_extra = {}
    _categorize_token_entitlements(token_entitlements, entitlements_base,
                                   entitlements_extra)

    kwargs = {}
    tokens = []
    if token_entry:
        kwargs = {
            'user_id': token_entry['user_id'],
            'org_id': token_entry['org_id'],
            'kickstart_session_id': token_entry['kickstart_session_id'],
            'entitlements': list(entitlements_base.keys()) + list(entitlements_extra.keys()),
            'deploy_configs': token_entry['deploy_configs'] == 'Y',
        }
        tokens.append(token_entry)

    return ActivationTokens(tokens, **kwargs)


_query_disable_token = rhnSQL.Statement("""
    update rhnRegToken
       set disabled = 1
     where id = :token_id
""")


def disable_token(tokens_obj):
    assert(isinstance(tokens_obj, ActivationTokens))
    h = rhnSQL.prepare(_query_disable_token)
    for token in tokens_obj.tokens:
        if token.get("server_id"):
            # only disable re-activation tokens
            h.execute(token_id=token["token_id"])


def process_token(server, server_arch, tokens_obj, virt_type=None):
    """ perform registration tasks for a server as indicated by a token """
    assert(isinstance(tokens_obj, ActivationTokens))
    server_id = server['id']
    log_debug(1, server_id, tokens_obj.get_names())

    # Keep track of what we're doing
    history = {}

    # the tokens are confirmed, mark this server as using it and make
    # sure we're within limits
    check_token_limits(server_id, tokens_obj)

    is_reactivation = rhnFlags.test('re_registration_token')

    # channels
    history["channels"] = token_channels(server, server_arch, tokens_obj)

    if is_reactivation:
        # If it's a re-registration, the server is already entitled
        history["entitlement"] = "Re-activation: keeping previous entitlement level"
    else:
        tokens_obj.entitle(server_id, history, virt_type)

    is_management_entitled = None

    if tokens_obj.has_entitlement_label('enterprise_entitled'):
        is_management_entitled = 1

    if is_reactivation:
        history["groups"] = ["Re-activation: keeping previous server groups"]
    else:
        # server groups - allowed for enterprise only
        if is_management_entitled:
            history["groups"] = token_server_groups(server_id, tokens_obj)
        else:
            # FIXME:  better messaging about minimum service level
            history["groups"] = [
                "Not subscribed to any system groups: not entitled for "
                "Management"
            ]

    if is_management_entitled:
        history["packages"] = token_packages(server_id, tokens_obj)
        history["config_channels"] = token_config_channels(server,
                                                           tokens_obj)
    else:
        history["packages"] = ["Insufficient service level for automatic package installation."]
        history["config_channels"] = ["Insufficient service level for config channel subscription."]

    # build the report and send it back
    return history_report(history)


def history_report(history):
    """ build a mildly html-ized version of the history as a report """
    # header information
    report = "Entitlement Information:\n"
    report += "<ul><li>%s</li></ul>" % history["entitlement"]
    report += "\n"
    # print out channels
    report += history_subreport(history, "groups",
                                "Channel Subscription Information:",
                                "The token does not include default Channel Subscriptions")

    # print out the groups
    report += history_subreport(history, "groups",
                                "System Group Membership Information:",
                                "The token does not include default System Group Membership")

    # auto-installed packages...
    report += history_subreport(history, "packages",
                                "Packages Scheduled for Installation:",
                                "No packages scheduled for automatic installation")

    # config channels...
    report += history_subreport(history, 'config_channels',
                                "Config Channel Subscription Information:",
                                "The token does not include default configuration channels")

    return report


def history_subreport(history, key, title, emptymsg):
    if key in history:
        subreport = title + "\n"
        subreport += "<ul>\n"

        for c in history[key]:
            subreport += "<li>%s</li>\n" % c

        if len(history[key]) == 0:
            subreport += "<li>%s</li>\n" % emptymsg

        subreport += "</ul>\n"
    return subreport
  070701000001D2000081B40000000000000000000000016290A0C100000FA4000000000000000000000000000000000000003500000000spacewalk-backend/server/rhnServer/server_wrapper.py  # -*- coding: utf-8 -*-
#
# Copyright (c) 2008--2015 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#
# this file implements the ServerWrapper class, which takes care
# of all the load and save functions for misc tables associated
# with a server (such as packages, hardware, history)
#
# the server.Server class inherits this ServerWrapper class
#

from .server_hardware import Hardware
from .server_packages import Packages
from .server_history import History
from .server_suse import SuseData

from rhn.UserDictCase import UserDictCase
from spacewalk.server import rhnSQL

class ServerWrapper(Packages, Hardware, History, SuseData):
    """ This is a middle class that ties all the subclasses together, plus it
        provides a cleaner way to keep all the wrapper functions in one place.
        The main Server class is based on this one and it looks a little bit
        cleaner that way.
    """

    def __init__(self):
        self.server = UserDictCase()
        Packages.__init__(self)
        History.__init__(self)
        Hardware.__init__(self)
        SuseData.__init__(self)

    def __repr__(self):
        return "<%s instance>" % (self.__class__,)

    def set_value(self, name, value):
        """ update a value in self.server """
        if name is None or value is None:
            return -1
        self.server[name] = value
        return 0

    ###
    # PACKAGES
    ###

    def add_package(self, entry):
        """ Wrappers for the similar functions from Packages class that supplementaly
            require a valid sysid.
        """
        return Packages.add_package(self, self.server.get("id"), entry)

    def delete_package(self, entry):
        return Packages.delete_package(self, self.server.get("id"), entry)

    def dispose_packages(self):
        return Packages.dispose_packages(self, self.server["id"])

    def save_packages(self, schedule=1):
        """ wrapper for the Packages.save_packages_byid() which requires the sysid """
        ret = self.save_packages_byid(self.server["id"], schedule=schedule)
        # this function is primarily called from outside
        # so we have to commit here
        rhnSQL.commit()
        return ret

    ###
    # HARDWARE
    ###

    def delete_hardware(self):
        """ Wrappers for the similar functions from Hardware class """
        return Hardware.delete_hardware(self, self.server.get("id"))

    def save_hardware(self):
        """ wrapper for the Hardware.save_hardware_byid() which requires the sysid """
        ret = self.save_hardware_byid(self.server["id"])
        # this function is primarily called from outside
        # so we have to commit here
        rhnSQL.commit()
        return ret

    def reload_hardware(self):
        """ wrapper for the Hardware.reload_hardware_byid() which requires the sysid """
        ret = self.reload_hardware_byid(self.server["id"])
        return ret

    ###
    # HISTORY
    ###
    def save_history(self):
        ret = self.save_history_byid(self.server["id"])
        # this function is primarily called from outside
        # so we have to commit here
        rhnSQL.commit()
        return ret

    ###
    ### SUSE PRODUCT DATA
    ###
    def save_suse_products(self):
        ret = self.save_suse_products_byid(self.server["id"])
        rhnSQL.commit()
        return ret

    def update_suse_products(self, products):
        self.add_suse_products(products)
        return self.save_suse_products()
070701000001D3000081B40000000000000000000000016290A0C1000010FB000000000000000000000000000000000000002700000000spacewalk-backend/server/rhnSession.py    #
# Copyright (c) 2008--2016 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#
#
# Session management
#


import hashlib
import time
import sys

from spacewalk.common.rhnConfig import CFG
from uyuni.common.usix import raise_with_tb

from . import rhnSQL


class InvalidSessionError(Exception):
    pass


class ExpiredSessionError(Exception):
    pass


class Session:

    def __init__(self, session_id=None):
        self.session_id = session_id
        self.expires = None
        self.uid = None
        self.duration = None

    def generate(self, duration=None, web_user_id=None):
        # Grabs a session ID
        self.session_id = rhnSQL.Sequence('pxt_id_seq').next()
        self.duration = int(duration or CFG.SESSION_LIFETIME)
        self.web_user_id(web_user_id)
        return self

    def _get_secrets(self):
        # Reads the four secrets from the config file
        return list(map(lambda x, cfg=CFG: getattr(cfg, 'session_secret_%s' % x),
                    list(range(1, 5))))

    def get_secrets(self):
        # Validates the secrets from the config file
        secrets = self._get_secrets()
        if len(secrets) != len([_f for _f in secrets if _f]):
            # the list of secrets has unset items
            raise Exception("Secrets not set in the config file")
        return secrets

    def digest(self):
        if self.session_id is None:
            raise ValueError("session id not supplied")

        secrets = self.get_secrets()

        ctx = hashlib.new('sha256')
        ctx.update(':'.join(secrets[:2] + [str(self.session_id)] + secrets[2:]).encode())

        return ctx.hexdigest()

    def get_session(self):
        return "%sx%s" % (self.session_id, self.digest())

    def web_user_id(self, uid=None):
        if uid:
            self.uid = uid
        return self.uid

    def load(self, session):
        arr = session.split('x', 1)
        if len(arr) != 2:
            raise InvalidSessionError("Invalid session string")

        digest = arr[1]
        if len(digest) != 64:
            raise InvalidSessionError("Invalid session string (wrong length)")

        try:
            self.session_id = int(arr[0])
        except ValueError:
            raise_with_tb(InvalidSessionError("Invalid session identifier"), sys.exc_info()[2])

        if digest != self.digest():
            raise InvalidSessionError("Bad session checksum")

        h = rhnSQL.prepare("""
            select web_user_id, expires, value
              from pxtSessions
             where id = :session_id
        """)
        h.execute(session_id=self.session_id)

        row = h.fetchone_dict()
        if row:
            # Session is stored in the DB
            if time.time() < row['expires']:
                # And it's not expired yet - good to go
                self.expires = row['expires']
                self.uid = row['web_user_id']
                return self

            # Old session - clean it up
            h = rhnSQL.prepare("""
                    delete from pxtSessions where id = :session_id
            """)
            h.execute(session_id=self.session_id)
            rhnSQL.commit()

        raise ExpiredSessionError("Session not found")

    def save(self):
        expires = int(time.time()) + self.duration

        h = rhnSQL.prepare("""
                insert into PXTSessions (id, web_user_id, expires, value)
                values (:id, :web_user_id, :expires, :value)
        """)
        h.execute(id=self.session_id, web_user_id=self.uid,
                  expires=expires, value='RHNAPP')
        rhnSQL.commit()
        return self


def load(session_string):
    return Session().load(session_string)


def generate(web_user_id=None, duration=None):
    return Session().generate(web_user_id=web_user_id, duration=duration).save()
 070701000001D4000081B40000000000000000000000016290A0C100005A08000000000000000000000000000000000000002400000000spacewalk-backend/server/rhnUser.py   #
# Copyright (c) 2008--2017 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#
#
# Stuff for handling Certificates and Servers
#

import re
import crypt

# Global Modules
from rhn.UserDictCase import UserDictCase
from spacewalk.common.rhnLog import log_debug, log_error
from spacewalk.common.rhnConfig import CFG
from spacewalk.common.rhnException import rhnFault, rhnException
from spacewalk.common.rhnTranslate import _

from . import rhnSQL
from . import rhnSession


class User:

    """ Main User class """

    def __init__(self, username, password):
        # compatibilty with the rest of the code
        self.username = username

        # placeholders for the table schemas
        # web_contact
        self.contact = rhnSQL.Row("web_contact", "id")
        self.contact["login"] = username
        self.contact["password"] = password
        # web_customer
        self.customer = rhnSQL.Row("web_customer", "id")
        self.customer["name"] = username
        self.customer["password"] = password
        # web_user_personal_info
        self.__init_info()
        # web_user_contact_permission
        self.__init_perms()
        # web_user_site_info
        self.__init_site()
        self._session = None

    def __init_info(self):
        """ init web_user_personal_info """
        # web_user_personal_info
        self.info = rhnSQL.Row("web_user_personal_info",
                               "web_user_id")
        self.info['first_names'] = "Valued"
        self.info['last_name'] = "Customer"
        self.info['prefix'] = "Mr."

    def __init_perms(self):
        """ init web_user_contact_permission """
        # web_user_contact_permission
        self.perms = rhnSQL.Row("web_user_contact_permission",
                                "web_user_id")
        self.perms["email"] = "Y"
        self.perms["mail"] = "Y"
        self.perms["call"] = "Y"
        self.perms["fax"] = "Y"

    def __init_site(self):
        """ init web_user_site_info """
        # web_user_site_info
        self.site = rhnSQL.Row("web_user_site_info", "id")
        self.site['city'] = "."
        self.site['address1'] = "."
        self.site['country'] = "US"
        self.site['type'] = "M"
        self.site['notes'] = "Entry created by Spacewalk registration process"

    def check_password(self, password, allow_read_only=False):
        """ simple check for a password that might become more complex sometime """
        if not allow_read_only and is_user_read_only(self.contact["login"]):
            raise rhnFault(702)
        good_pwd = str(self.contact["password"])
        if CFG.pam_auth_service:
            # a PAM service is defined
            # We have to check the user's rhnUserInfo.use_pam_authentication
            # XXX Should we create yet another __init_blah function?
            # since it's the first time we had to lool at rhnUserInfo,
            # I'll assume it's not something to happen very frequently,
            # so I'll use a query for now
            # - misa
            #
            h = rhnSQL.prepare("""
                select ui.use_pam_authentication
                from web_contact w, rhnUserInfo ui
                where w.login_uc = UPPER(:login)
                and w.id = ui.user_id""")
            h.execute(login=self.contact["login"])
            data = h.fetchone_dict()
            if not data:
                # This should not happen
                raise rhnException("No entry found for user %s" %
                                   self.contact["login"])
            if data['use_pam_authentication'] == 'Y':
                # use PAM
                from . import rhnAuthPAM
                return rhnAuthPAM.check_password(self.contact["login"],
                                                 password, CFG.pam_auth_service)
        # If the entry in rhnUserInfo is 'N', perform regular authentication
        ret = check_password(password, good_pwd)
        if ret and CFG.encrypted_passwords and self.contact['password'].find('$1$') == 0:
            # If successfully authenticated and the current password is
            # MD5 encoded, convert the password to SHA-256 and save it in the DB.
            self.contact['password'] = encrypt_password(password)
            self.contact.save()
            rhnSQL.commit()
        return ret

    def set_org_id(self, org_id):
        if not org_id:
            raise rhnException("Invalid org_id requested for user", org_id)
        self.contact["org_id"] = int(org_id)
        self.customer.load(int(org_id))

    def getid(self):
        if not self.contact.has_key("id"):
            userid = rhnSQL.Sequence("web_contact_id_seq")()
            self.contact.data["id"] = userid  # kind of illegal, but hey!
        else:
            userid = self.contact["id"]
        return userid

    def set_contact_perm(self, name, value):
        """ handling of contact permissions """
        if not name:
            return -1
        n = name.lower()
        v = 'N'
        if value:
            v = 'Y'
        if n == "contact_phone":
            self.perms["call"] = v
        elif n == "contact_mail":
            self.perms["mail"] = v
        elif n == "contact_email":
            self.perms["email"] = v
        elif n == "contact_fax":
            self.perms["fax"] = v
        return 0

    def set_info(self, name, value):
        """ set a certain value for the userinfo field. This is BUTT ugly. """
        log_debug(3, name, value)
        # translation from what the client send us to real names of the fields
        # in the tables.
        mapping = {
            "first_name": "first_names",
            "position": "title",
            "title": "prefix"
        }
        if not name:
            return -1
        name = name.lower()
        if type(value) == type(""):
            value = value.strip()
        # We have to watch over carefully for different field names
        # being sent from rhn_register
        changed = 0

        # translation
        if name in list(mapping.keys()):
            name = mapping[name]
        # Some fields can not have null string values
        if name in ["first_names", "last_name", "prefix",  # personal_info
                    "address1", "city", "country"]:       # site_info
            # we require something of it
            if len(str(value)) == 0:
                return -1
        # fields in personal_info (and some in site)
        if name in ["last_name", "first_names",
                    "company", "phone", "fax", "email", "title"]:
            self.info[name] = value[:128]
            changed = 1
        elif name == "prefix":
            values = ["Mr.", "Mrs.", "Ms.", "Dr.", "Hr.", "Sr.", " "]
            # Now populate a dictinary of valid values
            valids = UserDictCase()
            for v in values:  # initialize from good values, with and w/o the dot
                valids[v] = v
                valids[v[:-1]] = v
            # commonly encountered values
            valids["Miss"] = "Miss"
            valids["Herr"] = "Hr."
            valids["Sig."] = "Sr."
            valids["Sir"] = "Mr."
            # Now check it out
            if valids.has_key(value):
                self.info["prefix"] = valids[value]
                changed = 1
            else:
                log_error("Unknown prefix value `%s'. Assumed `Mr.' instead"
                          % value)
                self.info["prefix"] = "Mr."
                changed = 1

        # fields in site
        if name in ["phone", "fax", "zip"]:
            self.site[name] = value[:32]
            changed = 1
        elif name in ["city",  "country", "alt_first_names", "alt_last_name",
                      "address1", "address2", "email",
                      "last_name", "first_names"]:
            if name == "last_name":
                self.site["alt_last_name"] = value
                changed = 1
            elif name == "first_names":
                self.site["alt_first_names"] = value
                changed = 1
            else:
                self.site[name] = value[:128]
                changed = 1
        elif name in ["state"]:  # stupid people put stupid things in here too
            self.site[name] = value[:60]
            changed = 1
        if not changed:
            log_error("SET_INFO: Unknown info `%s' = `%s'" % (name, value))
        return 0

    def get_roles(self):
        user_id = self.getid()

        h = rhnSQL.prepare("""
            select ugt.label as role
              from rhnUserGroup ug,
                   rhnUserGroupType ugt,
                   rhnUserGroupMembers ugm
             where ugm.user_id = :user_id
               and ugm.user_group_id = ug.id
               and ug.group_type = ugt.id
        """)
        h.execute(user_id=user_id)
        return [x['role'] for x in h.fetchall_dict() or []]

    def reload(self, user_id):
        """ Reload the current data from the SQL database using the given id """
        log_debug(3, user_id)

        # If we can not load these we have a fatal condition
        if not self.contact.load(user_id):
            raise rhnException("Could not find contact record for id", user_id)
        if not self.customer.load(self.contact["org_id"]):
            raise rhnException("Could not find org record",
                               "user_id = %s" % user_id,
                               "org_id = %s" % self.contact["org_id"])
        # These other ones are non fatal because we can create dummy records
        if not self.info.load(user_id):
            self.__init_info()
        if not self.perms.load(user_id):
            self.__init_perms()
        # The site info is trickier, we need to find it first
        if not self.site.load_sql("web_user_id = :userid and type = 'M'",
                                  {"userid": user_id}):
            self.__init_site()
        # Fix the username
        self.username = self.contact['login']
        return 0

    def create_session(self):
        if self._session:
            return self._session

        self.session = rhnSession.generate(web_user_id=self.getid())
        return self.session


def auth_username_password(username, password):
    # hrm.  it'd be nice to move importlib.userAuth stuff here
    user = search(username)

    if not user:
        raise rhnFault(2, _("Invalid username/password combination"))

    if not user.check_password(password):
        raise rhnFault(2, _("Invalid username/password combination"))

    return user


def session_reload(session_string):
    log_debug(4, session_string)
    session = rhnSession.load(session_string)
    web_user_id = session.uid
    if not web_user_id:
        raise rhnSession.InvalidSessionError("No user associated with session")

    u = User("", "")
    ret = u.reload(web_user_id)
    if ret != 0:
        # Something horked
        raise rhnFault(10)
    return u


def get_user_id(username):
    """ search for an userid """
    username = str(username)
    h = rhnSQL.prepare("""
    select w.id from web_contact w
    where w.login_uc = upper(:username)
    """)
    h.execute(username=username)
    data = h.fetchone_dict()
    if data:
        return data["id"]
    return None


def search(user):
    """ search the database for a user """
    log_debug(3, user)
    userid = get_user_id(user)
    if not userid:  # no user found
        return None
    ret = User(user, "")
    if not ret.reload(userid) == 0:
        # something horked during reloading entry from database
        # we can not realy say that the entry does not exist...
        raise rhnFault(10)
    return ret


def is_user_disabled(user):
    log_debug(3, user)
    username = str(user)
    h = rhnSQL.prepare("""
    select 1 from rhnWebContactDisabled
    where login_uc = upper(:username)
    """)
    h.execute(username=username)
    row = h.fetchone_dict()
    if row:
        return 1
    return 0


def is_user_read_only(user):
    log_debug(3, user)
    username = str(user)
    h = rhnSQL.prepare("""
    select 1 from web_contact
    where login_uc = upper(:username)
    and read_only = 'Y'
    """)
    h.execute(username=username)
    row = h.fetchone_dict()
    if row:
        return 1
    return 0


def reserve_user(username, password):
    """ create a reservation record """
    return __reserve_user_db(username, password)


def __reserve_user_db(user, password):
    encrypted_password = CFG.encrypted_passwords
    log_debug(3, user, CFG.disallow_user_creation, encrypted_password, CFG.pam_auth_service)
    user = str(user)
    h = rhnSQL.prepare("""
    select w.id, w.password, w.org_id, ui.use_pam_authentication
    from web_contact w, rhnUserInfo ui
    where w.login_uc = upper(:p1)
    and w.id = ui.user_id
    """)
    h.execute(p1=user)
    data = h.fetchone_dict()
    if data and data["id"]:
        # contact exists, check password
        if data['use_pam_authentication'] == 'Y' and CFG.pam_auth_service:
            # We use PAM for authentication
            from . import rhnAuthPAM
            if rhnAuthPAM.check_password(user, password, CFG.pam_auth_service) > 0:
                return 1
            return -1

        if check_password(password, data['password']) > 0:
            return 1
        return -1

    # user doesn't exist.  now we fail, instead of reserving user.
    if CFG.disallow_user_creation:
        raise rhnFault(2001)
    user, password = check_user_password(user, password)

    # now check the reserved table
    h = rhnSQL.prepare("""
    select r.login, r.password from rhnUserReserved r
    where r.login_uc = upper(:p1)
    """)
    h.execute(p1=user)
    data = h.fetchone_dict()
    if data and data["login"]:
        # found already reserved
        if check_password(password, data["password"]) > 0:
            return 1
        return -2

    validate_new_username(user)
    log_debug(3, "calling validate_new_password")
    validate_new_password(password)

    # this is not reserved either, register it
    if encrypted_password:
        # Encrypt the password, let the function pick the salt
        password = encrypt_password(password)

    h = rhnSQL.prepare("""
    insert into rhnUserReserved (login, password)
    values (:username, :password)
    """)
    h.execute(username=user, password=password)
    rhnSQL.commit()

    # all should be dandy
    return 0


def new_user(username, password, email, org_id, org_password):
    """ create a new user account """
    return __new_user_db(username, password, email, org_id, org_password)


def __new_user_db(username, password, email, org_id, org_password):
    encrypted_password = CFG.encrypted_passwords
    log_debug(3, username, email, encrypted_password)

    # now search it in the database
    h = rhnSQL.prepare("""
    select w.id, w.password, ui.use_pam_authentication
    from web_contact w, rhnUserInfo ui
    where w.login_uc = upper(:username)
    and w.id = ui.user_id
    """)
    h.execute(username=username)
    data = h.fetchone_dict()

    pre_existing_user = 0

    if not data:
        # the username is not there, check the reserved user table
        h = rhnSQL.prepare("""
        select login, password from rhnUserReserved
        where login_uc = upper(:username)
        """)
        h.execute(username=username)
        data = h.fetchone_dict()
        if not data:  # nope, not reserved either
            raise rhnFault(1, _("Username `%s' has not been reserved") % username)
    else:
        pre_existing_user = 1

    if not pre_existing_user and not email:
        # New accounts have to specify an e-mail address
        raise rhnFault(30, _("E-mail address not specified"))

    # we have to perform PAM authentication if data has a field called
    # 'use_pam_authentication' and its value is 'Y', and we do have a PAM
    # service set in the config file.
    # Note that if the user is only reserved we don't do PAM authentication
    if data.get('use_pam_authentication') == 'Y' and CFG.pam_auth_service:
        # Check the password with PAM
        from . import rhnAuthPAM
        if rhnAuthPAM.check_password(username, password, CFG.pam_auth_service) <= 0:
            # Bad password
            raise rhnFault(2)
        # We don't care about the password anymore, replace it with something
        import time
        password = 'pam:%.8f' % time.time()
    else:
        # Regular authentication
        if check_password(password, data["password"]) == 0:
            # Bad password
            raise rhnFault(2)

    # creation of user was never supported in spacewalk but this call was mis-used
    # to check username/password in the past
    # so let's skip other checks and return now
    return 0


def check_user_password(username, password):
    """ Do some minimal checks on the data thrown our way. """
    # username is required
    if not username:
        raise rhnFault(11)
    # password is required
    if not password:
        raise rhnFault(12)
    if len(username) < CFG.MIN_USER_LEN:
        raise rhnFault(13, _("username should be at least %d characters")
                       % CFG.MIN_USER_LEN)
    if len(username) > CFG.MAX_USER_LEN:
        raise rhnFault(700, _("username should be less than %d characters")
                       % CFG.MAX_USER_LEN)
    username = username[:CFG.MAX_USER_LEN]

    # Invalid characters
    # ***NOTE*** Must coordinate with web and installer folks about any
    # changes to this set of characters!!!!
    invalid_re = re.compile(".*[\s&+%'`\"=#]", re.I)
    tmp = invalid_re.match(username)
    if tmp is not None:
        pos = tmp.regs[0]
        raise rhnFault(15, _("username = `%s', invalid character `%s'") % (
            username, username[pos[1] - 1]))

    # use new password validation method
    validate_new_password(password)

    return username, password


def check_email(email):
    """ Do some minimal checks on the e-mail address """
    if email is not None:
        email = email.strip()

    if not email:
        # Still supported
        return None

    if len(email) > CFG.MAX_EMAIL_LEN:
        raise rhnFault(100, _("Please limit your e-mail address to %s chars") %
                       CFG.MAX_EMAIL_LEN)
    # XXX More to come (check the format is indeed foo@bar.baz
    return email


def check_password(key, pwd1):
    """ Validates the given key against the current or old password
        If encrypted_password is false, it compares key with pwd1.
        If encrypted_password is true, it compares the encrypted key
        with pwd1.

        Historical note: we used to compare the passwords case-insensitive, and that
        was working fine until we started to encrypt passwords. -- misa 20030530
    """
    encrypted_password = CFG.encrypted_passwords
    log_debug(4, "Encrypted password:", encrypted_password)
    # We don't trust the origin for key, so stringify it
    key = str(key)
    if len(key) == 0:
        # No zero-length passwords accepted
        return 0

    if not encrypted_password:
        # Unencrypted passwords
        if key == pwd1:  # good password
            return 1
        log_debug(4, "Unencrypted password doesn't match")
        return 0  # Invalid

    # Crypted passwords in the database
    if pwd1.find("$5") == 0:    # SHA-256 encrypted password
        if pwd1 == encrypt_password(key, pwd1, 'SHA-256'):
            return 1
    elif pwd1.find("$1$") == 0:  # MD5 encrypted password
        if pwd1 == encrypt_password(key, pwd1, 'MD5'):
            return 1

    log_debug(4, "Encrypted password doesn't match")
    return 0  # invalid


def encrypt_password(key, salt=None, method='SHA-256'):
    """ Encrypt the key
        If no salt is supplied, generates one (md5-crypt salt)
    """

    pw_params = {
        'MD5': [8, "$1$"],      # method: [salt length, prefix]
        'SHA-256': [16, "$5$"],
    }

    if not salt:
        # No salt supplied, generate it ourselves
        import base64
        import time
        import os
        # Get the first 15 digits after the decimal point from time.time(), and
        # add the pid too
        salt = (time.time() % 1) * 1e15 + os.getpid()
        # base64 it and keep only the first n chars
        salt = base64.encodestring(str(salt).encode()).decode()[:pw_params[method][0]]
        # slap the magic in front of the salt
        salt = pw_params[method][1] + salt + '$'
    salt = str(salt)
    return crypt.crypt(key, salt)


def validate_new_password(password):
    """ Perform all the checks required for new passwords """
    log_debug(3, "Entered validate_new_password")
    #
    # We're copying the code because we don't want to
    # invalidate any of the existing passwords.
    #

    # Validate password based on configurable length
    # regular expression
    if not password:
        raise rhnFault(12)
    if len(password) < CFG.MIN_PASSWD_LEN:
        raise rhnFault(14, _("password must be at least %d characters")
                       % CFG.MIN_PASSWD_LEN)
    if len(password) > CFG.MAX_PASSWD_LEN:
        raise rhnFault(701, _("Password must be shorter than %d characters")
                       % CFG.MAX_PASSWD_LEN)

    password = password[:CFG.MAX_PASSWD_LEN]
    invalid_re = re.compile(
        r"[^ A-Za-z0-9`!@#$%^&*()-_=+[{\]}\\|;:'\",<.>/?~]")
    asterisks_re = re.compile(r"^\**$")

    # make sure the password isn't all *'s
    tmp = asterisks_re.match(password)
    if tmp is not None:
        raise rhnFault(15, "password cannot be all asterisks '*'")

    # make sure we have only printable characters
    tmp = invalid_re.search(password)
    if tmp is not None:
        pos = tmp.regs[0]
        raise rhnFault(15,
                       _("password contains character `%s'") % password[pos[1] - 1])


def validate_new_username(username):
    """ Perform all the checks required for new usernames. """
    log_debug(3)
    if len(username) < CFG.MIN_NEW_USER_LEN:
        raise rhnFault(13, _("username should be at least %d characters long")
                       % CFG.MIN_NEW_USER_LEN)

    disallowed_suffixes = CFG.DISALLOWED_SUFFIXES or []
    if not isinstance(disallowed_suffixes, type([])):
        disallowed_suffixes = [disallowed_suffixes]

    log_debug(4, "Disallowed suffixes", disallowed_suffixes)

    for suffix in disallowed_suffixes:
        if username[-len(suffix):].upper() == suffix.upper():
            raise rhnFault(106, _("Cannot register usernames ending with %s") %
                           suffix)
070701000001D5000081B40000000000000000000000016290A0C10000938F000000000000000000000000000000000000002E00000000spacewalk-backend/server/rhnVirtualization.py #
# Copyright (c) 2008--2016 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#
#
# This file contains classes and functions that save and retrieve virtual
# instance information.
#


import time
import sys

from uyuni.common.usix import raise_with_tb, LongType
from spacewalk.common.rhnLog import log_debug, log_error
from spacewalk.server import rhnSQL
from spacewalk.server.rhnServer import server_lib
from spacewalk.server.rhnSQL import procedure

###############################################################################
# Constants
###############################################################################

##
# Ugh... These types should be the same as on the client.  We should consider
# finding a way to share this code.  Possibly move to rhnlib?  I dunno.
#


class ListenerEvent:
    GUEST_DISCOVERED = "guest_discovered"
    GUEST_MIGRATED = "guest_migrated"

    GUEST_REGISTERED = "guest_registered"


class ClientStateType:
    NOSTATE = 'nostate'
    RUNNING = 'running'
    BLOCKED = 'blocked'
    PAUSED = 'paused'
    SHUTDOWN = 'shutdown'
    SHUTOFF = 'shutoff'
    CRASHED = 'crashed'


class ServerStateType:
    UNKNOWN = 'unknown'
    STOPPED = 'stopped'
    RUNNING = 'running'
    CRASHED = 'crashed'
    PAUSED = 'paused'


class VirtualizationType:
    PARA = 'para_virtualized'
    FULLY = 'fully_virtualized'
    QEMU = 'qemu'
    HYPERV = 'hyperv'
    VMWARE = 'vmware'
    VIRTAGE = 'virtage'
    VBOX = 'virtualbox'
    VPC ='virtualpc'

class IdentityType:
    HOST = 'host'
    GUEST = 'guest'


class EventType:
    EXISTS = 'exists'
    REMOVED = 'removed'
    CRAWL_BEGAN = 'crawl_began'
    CRAWL_ENDED = 'crawl_ended'


class TargetType:
    SYSTEM = 'system'
    DOMAIN = 'domain'
    LOG_MSG = 'log_message'


class PropertyType:
    NAME = 'name'
    UUID = 'uuid'
    TYPE = 'virt_type'
    MEMORY = 'memory_size'
    VCPUS = 'vcpus'
    STATE = 'state'
    IDENTITY = 'identity'
    ID = 'id'
    MESSAGE = 'message'

CLIENT_SERVER_STATE_MAP = {
    ClientStateType.NOSTATE: ServerStateType.RUNNING,
    ClientStateType.RUNNING: ServerStateType.RUNNING,
    ClientStateType.BLOCKED: ServerStateType.RUNNING,
    ClientStateType.PAUSED: ServerStateType.PAUSED,
    ClientStateType.SHUTDOWN: ServerStateType.STOPPED,
    ClientStateType.SHUTOFF: ServerStateType.STOPPED,
    ClientStateType.CRASHED: ServerStateType.CRASHED
}

###############################################################################
# VirtualizationEventError Class
###############################################################################


class VirtualizationEventError(Exception):
    pass

###############################################################################
# Listener Interface
###############################################################################


class Listeners:

    """ Abusing python to get a singleton behavior. """
    listeners = []


def add_listener(listener):
    """
    Allows other components of the server to listen for virtualization
    related events.
    """
    log_debug(3, "Virt listener added: %s" % str(listener))

    # Don't add the listener if it's already there.
    if not listener in Listeners.listeners:
        Listeners.listeners.append(listener)


###############################################################################
# VirtualizationEventHandler Class
###############################################################################

##
# This class handles virtualization events.
#
class VirtualizationEventHandler:

    ##
    # This map defines how to route each event to the appropriate handler.
    #
    HANDLERS = {
        (EventType.EXISTS,      TargetType.SYSTEM): '_handle_system_exists',
        (EventType.EXISTS,      TargetType.DOMAIN): '_handle_domain_exists',
        (EventType.REMOVED,     TargetType.DOMAIN): '_handle_domain_removed',
        (EventType.CRAWL_BEGAN, TargetType.SYSTEM): '_handle_system_crawl_began',
        (EventType.CRAWL_ENDED, TargetType.SYSTEM): '_handle_system_crawl_ended',
        (EventType.EXISTS,      TargetType.LOG_MSG): '_handle_log_msg_exists'
    }

    ##
    # This map defines the absolute required properties for each event type.
    #
    REQUIRED_PROPERTIES = {
        (EventType.EXISTS, TargetType.SYSTEM): (PropertyType.IDENTITY,
                                                PropertyType.UUID, ),
        (EventType.EXISTS, TargetType.DOMAIN): (PropertyType.UUID, ),
        (EventType.EXISTS, TargetType.LOG_MSG): (PropertyType.MESSAGE,
                                                 PropertyType.ID, )
    }

    ###########################################################################
    # Public Methods
    ###########################################################################

    def __init__(self):
        pass

    def handle(self, system_id, notification):

        log_debug(5, "Handling notification:", system_id, notification)

        # First, validate that the notification is in the correct format.  If it
        # is not, we'll bail out.
        if len(notification) != 4:
            raise VirtualizationEventError(
                "Received invalid notification length:", notification,
                "; len=", len(notification))

        # Now we are ready to field the notification.  Begin by parsing it.
        (timestamp, action, target, properties) = notification

        event = (action, target)

        # Fetch the appropriate handler.
        handler = None
        try:
            handler = getattr(self, self.HANDLERS[event])
        except KeyError:
            ke = sys.exc_info()[1]
            raise_with_tb(VirtualizationEventError(
                "Don't know how to handle virt event:", event), sys.exc_info()[2])

        # Ensure that the event has any required properties before calling the
        # handler.
        if event in self.REQUIRED_PROPERTIES:
            required_properties = self.REQUIRED_PROPERTIES[event]
            for required_property in required_properties:
                if required_property not in properties:
                    raise VirtualizationEventError(
                        "Event does not have required property:",
                        required_property,
                        event)

        # Some properties need to be preprocessed before we can actually
        # handle the notification.
        self.__convert_properties(properties)

        # Call the handler.
        handler(system_id, timestamp, properties)

    ###########################################################################
    # Protected Methods
    ###########################################################################

    def _handle_system_exists(self, system_id, timestamp, properties):
        uuid = properties[PropertyType.UUID]
        identity = properties[PropertyType.IDENTITY]
        virt_type = None

        if PropertyType.TYPE in properties:
            virt_type = properties[PropertyType.TYPE]
        else:
            # presume paravirt if not specified, probably a host
            virt_type = VirtualizationType.PARA

        row = self.__db_get_system(identity, system_id, uuid)
        if not row:
            self.__db_insert_system(identity, system_id, uuid, virt_type)
        else:
            self.__db_update_system(identity, system_id, uuid, row)

            self.__notify_listeners(ListenerEvent.GUEST_REGISTERED,
                                    row['host_system_id'],
                                    system_id)

    def _handle_domain_exists(self, system_id, timestamp, properties):
        uuid = properties[PropertyType.UUID]

        row = self.__db_get_domain(system_id, uuid)
        if not row:
            self.__db_insert_domain(system_id, uuid, properties)

            # We've noticed a new guest; send a notification down the pipeline.
            self.__notify_listeners(ListenerEvent.GUEST_DISCOVERED,
                                    system_id,
                                    uuid)
        else:
            self.__db_update_domain(system_id, uuid, properties, row)

            # We'll attempt to detect migration by checking if the host system
            # ID has changed.
            if 'host_system_id' in row and \
                    row['host_system_id'] != system_id:

                self.__notify_listeners(ListenerEvent.GUEST_MIGRATED,
                                        row['host_system_id'],
                                        system_id,
                                        row['virtual_system_id'],
                                        uuid)

    def _handle_domain_removed(self, system_id, timestamp, properties):
        """ Handle a domain removal.  Since we are dealing with virtual domains, we
            can't really tell whether physical removal took place, so we'll just mark
            the domain as 'stopped'.
        """
        uuid = properties[PropertyType.UUID]

        row = self.__db_get_domain(system_id, uuid)
        if len(list(row.keys())) == 0:
            log_debug(1, "Guest already deleted in SUSE Manager Server: ", properties)
            return
        new_properties = {PropertyType.STATE: ServerStateType.STOPPED}
        self.__db_update_domain(system_id, uuid, new_properties, row)

    def _handle_system_crawl_began(self, system_id, timestamp, properties):
        self.__unconfirm_domains(system_id)

    def _handle_system_crawl_ended(self, system_id, timestamp, properties):
        self.__remove_unconfirmed_domains(system_id)
        self.__confirm_domains(system_id)

    def _handle_log_msg_exists(self, system_id, timestamp, properties):
        kickstart_session_id = properties[PropertyType.ID]
        log_message = properties[PropertyType.MESSAGE]

        self.__db_insert_log_message(kickstart_session_id, log_message)

    ###########################################################################
    # Helper Methods
    ###########################################################################

    def __db_get_system(self, identity, system_id, uuid):
        """ This returns a row from the database that represents a virtual system.
            If no system could be found, None is returned.
        """

        condition = None

        # The SELECT condition is different, depending on whether this system
        # is a host or a guest.  A guest will always have a UUID, while a host
        # will never have one.  Instead, a host should be identified by its
        # sysid only.
        #
        # When IdentityType.GUEST, need to worry about cross-org issues...
        # 2 states to worry about:
        # - no prior entry in the VI table; we return nothing, insert happens
        # - prior entry, we return that one, update happens
        if identity == IdentityType.HOST:
            condition = """
                vi.uuid is null
                and vi.host_system_id=:system_id
            """
        elif identity == IdentityType.GUEST:
            condition = """
                (
                  vi.uuid=:uuid
                  AND (vi.virtual_system_id is null or
                       vi.virtual_system_id = :system_id)
                )
                OR
                (
                  vi.uuid is not null and
                  vi.virtual_system_id = :system_id
                )
            """
        else:
            raise VirtualizationEventError(
                "Unknown identity:", identity)

        select_sql = """
            SELECT
                vi.id                as id,
                vi.host_system_id    as host_system_id,
                vi.virtual_system_id as virtual_system_id,
                vi.uuid              as uuid,
                vi.confirmed         as confirmed
            FROM
                rhnVirtualInstance vi
            WHERE
                %s
        """ % (condition)
        query = rhnSQL.prepare(select_sql)
        query.execute(system_id=system_id, uuid=uuid)

        row = query.fetchone_dict() or {}

        return row

    def __db_insert_system(self, identity, system_id, uuid, virt_type):
        """ Inserts a new system into the database. """

        # If this system is a host, it's sysid goes into the host_system_id
        # column.  Otherwise, it's sysid goes into the virtual_system_id
        # column.
        host_id = None
        guest_id = None
        if identity == IdentityType.HOST:
            host_id = system_id
        elif identity == IdentityType.GUEST:
            guest_id = system_id

            # Check to see if this uuid has already been registered to a
            # host and is confirmed.
            check_sql = """
                select
                    vi.id,
                    vi.host_system_id,
                    vi.confirmed
                from
                    rhnVirtualInstance vi
                where
                    vi.uuid = :uuid
                    and confirmed = 1
            """

            query = rhnSQL.prepare(check_sql)
            query.execute(uuid=uuid, system_id=system_id)

            row = query.fetchone_dict()

            if row:
                # We found a host for this guest, we'll save the value
                # to use when we create the row in rhnVirtualInstance.
                host_id = row['host_system_id']
            else:
                # We didn't find a host, this guest will just end up with
                # no host, and consuming physical entitlements.
                pass

        else:
            raise VirtualizationEventError(
                "Unknown identity:", identity)

        get_id_sql = "SELECT sequence_nextval('rhn_vi_id_seq') as id FROM dual"
        query = rhnSQL.prepare(get_id_sql)
        query.execute()
        row = query.fetchone_dict() or {}

        if not row or 'id' not in row:
            raise VirtualizationEventError('unable to get virt instance id')

        insert_sql = """
            INSERT INTO rhnVirtualInstance
                (id, host_system_id, virtual_system_id, uuid, confirmed)
            VALUES
                (:id, :host_id, :guest_id, :uuid, 1)
        """
        query = rhnSQL.prepare(insert_sql)
        query.execute(id=row['id'],
                      host_id=host_id,
                      guest_id=guest_id,
                      uuid=uuid)

        # Initialize a dummy info record for this system.
        insert_sql = """
            INSERT INTO rhnVirtualInstanceInfo
                (instance_id, state, instance_type)
            VALUES
                (:id,
                 (
                     SELECT rvis.id
                     FROM rhnVirtualInstanceState rvis
                     WHERE rvis.label = :state
                 ),
                 (
                     SELECT rvit.id
                     FROM rhnVirtualInstanceType rvit
                     WHERE rvit.label = :virt_type
                 ))
        """
        query = rhnSQL.prepare(insert_sql)
        query.execute(id=row['id'],
                      state=ServerStateType.UNKNOWN,
                      virt_type=virt_type)

    def __db_update_system(self, identity, system_id, uuid, existing_row):
        """ Updates a system in the database. """

        new_values_array = []
        bindings = {}
        if not existing_row.get('confirmed'):
            new_values_array.append("confirmed=1")

        # Some guests may have been unregistered before, and therefore did not
        # have sysid's.  If we got an EXISTS for a guest system, then a guest
        # must have been registered.  Make sure that we update the
        # virtual_system_id column in the DB to reflect that this guest is now
        # registered.
        if identity == IdentityType.GUEST:
            if existing_row['virtual_system_id'] != system_id:
                new_values_array.append("virtual_system_id=:sysid")
                bindings['sysid'] = system_id
                # note, at this point, it's still possible to have
                # an entry in rhnVirtualInstance for this uuid w/out
                # a virtual_system_id; it'd be for a different org
            if existing_row['uuid'] != uuid:
                new_values_array.append("uuid=:uuid")
                bindings['uuid'] = uuid

        # Only touch the database if something changed.
        if new_values_array:
            new_values = ', '.join(new_values_array)

            bindings['row_id'] = existing_row['id']

            update_sql = """
                UPDATE rhnVirtualInstance SET %s WHERE id=:row_id
            """ % (new_values)
            query = rhnSQL.prepare(update_sql)
            query.execute(**bindings)

    def __db_get_domain(self, host_id, uuid):
        select_sql = """
            SELECT
                rvi.id                as rvi_id,
                rvi.host_system_id    as host_system_id,
                rvi.virtual_system_id as virtual_system_id,
                rvi.confirmed         as confirmed,
                rvii.name             as name,
                rvit.label            as instance_type,
                rvii.memory_size_k    as memory_size_k,
                rvii.instance_id      as instance_id,
                rvii.vcpus            as vcpus,
                rvis.label            as state
            FROM
                rhnVirtualInstanceInfo rvii,
                rhnVirtualInstanceType rvit,
                rhnVirtualInstanceState rvis,
                rhnVirtualInstance rvi
            WHERE
                (rvi.uuid = :uuid or
                 (:uuid is null and
                  rvi.uuid is null)) and
                rvi.host_system_id = :host_id and
                rvi.id = rvii.instance_id and
                rvit.id = rvii.instance_type and
                rvis.id = rvii.state
        """
        query = rhnSQL.prepare(select_sql)
        query.execute(host_id=host_id, uuid=uuid)

        row = query.fetchone_dict() or {}

        return row

    def __db_insert_domain(self, host_id, uuid, properties):
        """ To create a new domain, we must modify both the rhnVirtualInstance
            and the rhnVirtualInstanceInfo tables.
        """
        # We'll do rhnVirtualInstance first.
        get_id_sql = "SELECT sequence_nextval('rhn_vi_id_seq') as id FROM dual"
        query = rhnSQL.prepare(get_id_sql)
        query.execute()
        row = query.fetchone_dict() or {}

        if not row or 'id' not in row:
            raise VirtualizationEventError('unable to get virt instance id')
        id = row['id']

        # Do we have a system with a machine id matching the uuid?
        get_system_id_sql = """
            SELECT s.id
            FROM rhnServer s
            LEFT JOIN rhnVirtualInstance vi on vi.virtual_system_id = s.id
            WHERE s.machine_id = :uuid and vi.virtual_system_id IS NULL
        """
        query = rhnSQL.prepare(get_system_id_sql)
        query.execute(uuid=uuid)
        row = query.fetchone_dict() or {}

        guest_id = row['id'] if row and 'id' in row else None 

        insert_sql = """
            INSERT INTO rhnVirtualInstance
                (id, host_system_id, virtual_system_id, uuid, confirmed)
            VALUES
                (:id, :host_id, :guest_id, :uuid, 1)
        """
        query = rhnSQL.prepare(insert_sql)
        query.execute(id=id, host_id=host_id, guest_id=guest_id, uuid=uuid)

        # Now we'll insert into the rhnVirtualInstanceInfo table.

        insert_sql = """
            INSERT INTO rhnVirtualInstanceInfo
                (instance_id,
                 name,
                 vcpus,
                 memory_size_k,
                 instance_type,
                 state)
            SELECT
                :id,
                :name,
                :vcpus,
                :memory,
                rvit.id,
                rvis.id
            FROM
                rhnVirtualInstanceType rvit,
                rhnVirtualInstanceState rvis
            WHERE
                rvit.label=:virt_type and
                rvis.label=:state
        """
        name = properties[PropertyType.NAME]
        vcpus = properties[PropertyType.VCPUS]
        memory = properties[PropertyType.MEMORY]
        virt_type = properties[PropertyType.TYPE]
        state = properties[PropertyType.STATE]

        query = rhnSQL.prepare(insert_sql)
        query.execute(id=id,
                      name=name,
                      vcpus=vcpus,
                      memory=memory,
                      virt_type=virt_type,
                      state=state)

    def __db_update_domain(self, host_id, uuid, properties, existing_row):

        # First, update the rhnVirtualInstance table.  If a guest domain was
        # registered but its host was not, it is possible that the
        # rhnVirtualInstance table's host_system_id column is null.  We'll
        # update that now, if need be.

        new_values_array = []
        bindings = {}

        if not existing_row.get('confirmed'):
            new_values_array.append('confirmed=1')

        if existing_row['host_system_id'] != host_id:
            new_values_array.append('host_system_id=:host_id')
            bindings['host_id'] = host_id

        # Only touch the database if something changed.
        if new_values_array:
            new_values = ', '.join(new_values_array)

            bindings['row_id'] = existing_row['rvi_id']

            update_sql = """
                UPDATE rhnVirtualInstance SET %s WHERE id=:row_id
            """ % (new_values)
            query = rhnSQL.prepare(update_sql)

            try:
                query.execute(**bindings)
            except rhnSQL.SQLError:
                e = sys.exc_info()[1]
                log_error(str(e))
                raise_with_tb(VirtualizationEventError(str(e)), sys.exc_info()[2])

        # Now update the rhnVirtualInstanceInfo table.

        new_values_array = []
        bindings = {}

        if PropertyType.NAME in properties and \
           existing_row['name'] != properties[PropertyType.NAME]:
            new_values_array.append('name=:name')
            bindings['name'] = properties[PropertyType.NAME]

        if PropertyType.VCPUS in properties and \
           existing_row['vcpus'] != properties[PropertyType.VCPUS]:
            new_values_array.append('vcpus=:vcpus')
            bindings['vcpus'] = properties[PropertyType.VCPUS]

        if PropertyType.MEMORY in properties and \
           existing_row['memory_size_k'] != properties[PropertyType.MEMORY]:
            new_values_array.append('memory_size_k=:memory')
            bindings['memory'] = properties[PropertyType.MEMORY]

        if PropertyType.TYPE in properties and \
           existing_row['instance_type'] != properties[PropertyType.TYPE]:
            new_values_array.append("""
                instance_type = (
                    select rvit.id
                    from rhnVirtualInstanceType rvit
                    where rvit.label = :virt_type)
            """)
            bindings['virt_type'] = properties[PropertyType.TYPE]

        if PropertyType.STATE in properties and \
           existing_row['state'] != properties[PropertyType.STATE]:
            new_values_array.append("""
                state = (
                    SELECT rvis.id
                    FROM rhnVirtualInstanceState rvis
                    WHERE rvis.label = :state)
            """)
            bindings['state'] = properties[PropertyType.STATE]

        # Only touch the database if something changed.
        if new_values_array:
            new_values = ', '.join(new_values_array)

            bindings['row_id'] = existing_row['instance_id']

            update_sql = """
                UPDATE rhnVirtualInstanceInfo SET %s WHERE instance_id=:row_id
            """ % (new_values)
            query = rhnSQL.prepare(update_sql)
            query.execute(**bindings)

    def __unconfirm_domains(self, system_id):
        update_sql = """
            UPDATE rhnVirtualInstance
            SET confirmed=0
            WHERE host_system_id=:sysid
        """
        query = rhnSQL.prepare(update_sql)
        query.execute(sysid=system_id)

    def __confirm_domains(self, system_id):
        update_sql = """
            UPDATE rhnVirtualInstance
            SET confirmed=1
            WHERE host_system_id=:sysid
        """
        query = rhnSQL.prepare(update_sql)
        query.execute(sysid=system_id)

    def __remove_unconfirmed_domains(self, system_id):
        """ Mark the unconfirmed entries in the RVII table as stopped, since it
            appears they are no longer running.
        """

        update_sql = """
            UPDATE rhnVirtualInstanceInfo rvii
            SET state=(
                SELECT rvis.id
                FROM rhnVirtualInstanceState rvis
                WHERE rvis.label=:state
            )
            WHERE
                rvii.instance_id IN (
                    SELECT rvi.id
                    FROM rhnVirtualInstance rvi
                    WHERE rvi.confirmed=0)
        """
        query = rhnSQL.prepare(update_sql)
        query.execute(state=ServerStateType.STOPPED)

    def __db_insert_log_message(self, kickstart_session_id, log_message):
        """
        Insert a new installation log message into the database.
        """

        # log_message must be 4000 chars or shorter, db constraint
        log_message = log_message[:4000]

        insert_sql = """
            INSERT INTO rhnVirtualInstanceInstallLog
                (id, log_message, ks_session_id)
            VALUES
                (sequence_nextval('rhn_viil_id_seq'), :log_message, :kickstart_session_id)
        """
        query = rhnSQL.prepare(insert_sql)
        query.execute(log_message=log_message,
                      kickstart_session_id=kickstart_session_id)

    def __convert_properties(self, properties):
        """ This function normalizes and converts the values of some properties to
            format consumable by the server.
        """
        # Attempt to normalize the UUID.
        if PropertyType.UUID in properties:
            uuid = properties[PropertyType.UUID]
            if uuid:
                uuid_as_number = int(uuid, 16)

                if uuid_as_number == 0:
                    # If the UUID is a bunch of null bytes, we will convert it
                    # to None.  This will allow us to interact with the
                    # database properly, since the database assumes a null UUID
                    # when the system is a host.
                    properties[PropertyType.UUID] = None
                else:
                    # Normalize the UUID.  We don't know how it will appear
                    # when it comes from the client, so we'll convert it to a
                    # normal form.
                    # if UUID had leading 0, we must pad 0 again #429192
                    properties[PropertyType.UUID] = "%032x" % uuid_as_number
            else:
                properties[PropertyType.UUID] = None

        # The server only cares about certain types of states.
        if PropertyType.STATE in properties:
            state = properties[PropertyType.STATE]
            properties[PropertyType.STATE] = CLIENT_SERVER_STATE_MAP[state]

        # We must send the memory across as a string because XMLRPC can only
        # handle up to 32 bit numbers.  RAM can easily exceed that limit these
        # days.
        if PropertyType.MEMORY in properties:
            memory = properties[PropertyType.MEMORY]
            properties[PropertyType.MEMORY] = LongType(memory)

    def __notify_listeners(self, *args):
        for listener in Listeners.listeners:
            listener._notify(*args)

###############################################################################
# Module level functions
###############################################################################


def _notify_guest(server_id, uuid, virt_type):
    """ Notifies the virtualization backend that there is a guest with a
        specific
        uuid and type, then associates it with the provided system id.

        New for RHEL 5.

        Args are:
         * system_id   - a string representation of the system's system id.
         * uuid        - a string representation of the system's uuid.
         * virt_type   - a string representation of the system's virt type

         No return value.
    """
    identity = IdentityType.GUEST
    event = EventType.EXISTS
    target = TargetType.SYSTEM
    properties = {
        PropertyType.IDENTITY:   identity,
        PropertyType.UUID:   uuid,
        PropertyType.TYPE:   virt_type,
    }

    virt_action = _make_virt_action(event, target, properties)
    _virt_notify(server_id, [virt_action])


def _virt_notify(server_id, actions):
        # Instantiate the event handler.
    handler = VirtualizationEventHandler()

    # Handle each of the actions, in turn.
    for action in actions:
        log_debug(5, "Processing action:", action)

        try:
            handler.handle(server_id, action)
        except VirtualizationEventError:
            vee = sys.exc_info()[1]
            log_error(
                "An error occurred while handling a virtualization event:",
                vee,
                "Ignoring event...")

    # rhnSQL.commit()
    return 0


def _make_virt_action(event, target, properties):
    """
    Construct a tuple representing a virtualization action.

    New for RHEL 5.

    Args are:
    * event       - one of EventType.EXISTS, EventType.REMOVED,
                    EventType.CRAWL_BEGAN, EventType.CRAWL_ENDED
    * target      - one of TargetType.SYSTEM, TargetType.DOMAIN,
                    TargetType.LOG_MSG
    * properties  - a dictionary that associates a PropertyType with
                    a value (typically a string).

    Return a tuple consisting of (timestamp, event, target, properties).
    """

    current_time = int(time.time())
    return (current_time, event, target, properties)


def is_host_uuid(uuid):
    uuid = eval('0x%s' % uuid)
    return LongType(uuid) == 0


###############################################################################
# Testing
###############################################################################

if __name__ == '__main__':

    rhnSQL.initDB()

    host_sysid = 1000010001
    guest_sysid = 1000010010
    handler = VirtualizationEventHandler()

    # Create some fake actions.

    host_exists = (int(time.time()),
                   EventType.EXISTS,
                   TargetType.SYSTEM,
                   {PropertyType.UUID: None,
                    PropertyType.IDENTITY: IdentityType.HOST})

    guest_exists = (int(time.time()),
                    EventType.EXISTS,
                    TargetType.SYSTEM,
                    {PropertyType.UUID: '2e2e2e2e2e2e2e2e',
                     PropertyType.IDENTITY: IdentityType.GUEST})

    crawl_began = (int(time.time()),
                   EventType.CRAWL_BEGAN,
                   TargetType.SYSTEM,
                   {})

    dom0_exists = (int(time.time()),
                   EventType.EXISTS,
                   TargetType.DOMAIN,
                   {PropertyType.UUID: None,
                    PropertyType.NAME: 'DOM0_TEST',
                    PropertyType.TYPE: VirtualizationType.PARA,
                    PropertyType.STATE: ClientStateType.RUNNING,
                    PropertyType.VCPUS: 5,
                    PropertyType.MEMORY: 1111111})

    domU1_exists = (int(time.time()),
                    EventType.EXISTS,
                    TargetType.DOMAIN,
                    {PropertyType.UUID: '1f1f1f1f1f1f1f1f',
                     PropertyType.NAME: 'DOMU1_TEST',
                     PropertyType.TYPE: VirtualizationType.PARA,
                     PropertyType.STATE: ClientStateType.BLOCKED,
                     PropertyType.VCPUS: 1,
                     PropertyType.MEMORY: 22222})

    domU2_exists = (int(time.time()),
                    EventType.EXISTS,
                    TargetType.DOMAIN,
                    {PropertyType.UUID: '2e2e2e2e2e2e2e2e',
                     PropertyType.NAME: 'DOMU2_TEST',
                     PropertyType.TYPE: VirtualizationType.PARA,
                     PropertyType.STATE: ClientStateType.PAUSED,
                     PropertyType.VCPUS: 2,
                     PropertyType.MEMORY: 44444})

    crawl_ended = (int(time.time()),
                   EventType.CRAWL_ENDED,
                   TargetType.SYSTEM,
                   {})

    # Host reg'd, guest reg'd, crawl.

    handler.handle(host_sysid,  host_exists)
    handler.handle(guest_sysid, guest_exists)
    handler.handle(guest_sysid, crawl_began)
    handler.handle(guest_sysid, crawl_ended)
    handler.handle(host_sysid,  crawl_began)
    handler.handle(host_sysid,  dom0_exists)
    handler.handle(host_sysid,  domU1_exists)
    handler.handle(host_sysid,  domU2_exists)
    handler.handle(host_sysid,  crawl_ended)
    # rhnSQL.commit()

    # Clear out the database for this sysid.
    handler.handle(host_sysid,  crawl_began)
    handler.handle(host_sysid,  crawl_ended)
    # rhnSQL.commit()

    # Host reg'd, crawl, guest reg'd.

    handler.handle(host_sysid,  host_exists)
    handler.handle(host_sysid,  crawl_began)
    handler.handle(host_sysid,  dom0_exists)
    handler.handle(host_sysid,  domU1_exists)
    handler.handle(host_sysid,  domU2_exists)
    handler.handle(host_sysid,  crawl_ended)
    handler.handle(guest_sysid, guest_exists)
    handler.handle(guest_sysid, crawl_began)
    handler.handle(guest_sysid, crawl_ended)
    # rhnSQL.commit()

    # Now do some dynamic updates.

    domU2_changed = (int(time.time()),
                     EventType.EXISTS,
                     TargetType.DOMAIN,
                     {PropertyType.UUID: '2e2e2e2e2e2e2e2e',
                      PropertyType.NAME: 'CHANGED_DOMU2_TEST',
                      PropertyType.STATE: ClientStateType.RUNNING})

    handler.handle(host_sysid, domU2_changed)
    # rhnSQL.commit()


# XXX: put this somewhere better
###############################################################################
# VirtualizationListener Class
###############################################################################

class VirtualizationListener:

    def __init__(self):
        pass

    def guest_migrated(self, old_host_sid, new_host_sid, guest_sid, guest_uuid):
        """
        This function is called if we infer that the guest has been migrated
        to a different host system.

            old_host_sid - The server id for the old host.
            new_host_sid - The server id for the new host.
            guest_sid    - The server id for the guest, if it is registered.
            guest_uuid   - The UUID of the guest that has been migrated.
        """
        pass

    def guest_discovered(self, host_sid, guest_uuid, guest_sid=None):
        """
        This function is called if we detect a new guest.
        """
        pass

    def guest_registered(self, host_sid, guest_sid):
        pass

    ###########################################################################
    # Protected Interface
    ###########################################################################

    def _notify(self, event, *args):
        if event == ListenerEvent.GUEST_MIGRATED:
            self.guest_migrated(*args)
        elif event == ListenerEvent.GUEST_DISCOVERED:
            self.guest_discovered(*args)
        elif event == ListenerEvent.GUEST_REGISTERED:
            self.guest_registered(*args)


class EntitlementVirtualizationListener(VirtualizationListener):

    def guest_registered(self, host_sid, guest_sid):
        host_system_slots = server_lib.check_entitlement(host_sid, True)
        #host_system_slots = list(host_system_slots.keys())

        if "virtualization_host" in host_system_slots:
            host_system_slots.remove("virtualization_host")
        if "foreign_entitled" in host_system_slots:
            host_system_slots.remove("foreign_entitled")

        guest_system_slots = server_lib.check_entitlement(guest_sid)
        guest_system_slots = list(guest_system_slots.keys())

        for entitlement in host_system_slots:
            if entitlement not in guest_system_slots:
                try:
                    rhnSQL.transaction(entitlement)
                    procedure.rhn_entitlements.entitle_server(guest_sid,
                                                              entitlement)
                except rhnSQL.SQLError:
                    e = sys.exc_info()[1]
                    rhnSQL.rollback(entitlement)
                    log_error("Error adding entitlement %s to host ID-%s: %s"
                              % (entitlement, guest_sid, str(e)))
                    # rhnSQL.rollback()
                    return

        # rhnSQL.commit()


# This file provides an interface that allows components of the RHN server to
# listen for virtualization events.

###############################################################################
# Constants
###############################################################################


add_listener(EntitlementVirtualizationListener())
 070701000001D6000081B40000000000000000000000016290A0C10000098F000000000000000000000000000000000000002500000000spacewalk-backend/server/suseEula.py  # -*- coding: utf-8 -*-
#
# Copyright (c) 2014 SUSE LLC
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#

import hashlib
from spacewalk.common.rhnException import rhnFault
from uyuni.common.stringutils import to_string
from spacewalk.server import rhnSQL

def find_or_create_eula(eula):
    """Return the id of the eula inside of the suseEula table.

       A new entry inside of the suseEula table is added only when needed.
    """
    _query_find = """
        SELECT id
          FROM suseEula
         WHERE checksum = :checksum
    """
    checksum = hashlib.new("sha256", eula.encode('utf-8', 'ignore')).hexdigest()

    h = rhnSQL.prepare(_query_find)
    h.execute(checksum=checksum)
    ret = h.fetchone_dict()

    if ret:
        return ret['id']
    else:
        _query_create_eula_id = """
            SELECT sequence_nextval('suse_eula_id_seq') AS id
            FROM dual
        """
        h = rhnSQL.prepare(_query_create_eula_id)
        h.execute(checksum=checksum)
        ret = h.fetchone_dict()
        id = None
        if ret:
            id = ret['id']
        else:
            raise rhnFault(50, "Unable to add new EULA to the database", explain=0)

        blob_map = { 'text': 'text' }
        h = rhnSQL.prepare("""
                INSERT INTO suseEula (id, text, checksum)
                VALUES (:id, :text, :checksum)
            """,
            blob_map=blob_map)
        h.execute(id=id, text=to_string(eula), checksum=checksum)

        return id

def get_eula_by_id(id):
    """ Return the text of the EULA, None if the EULA is not found """
    h = rhnSQL.prepare("SELECT text from suseEula WHERE id = :id")
    h.execute(id=id)
    match = h.fetchone_dict()
    if match:
        return str(match['text'])
    else:
        return None

def get_eula_by_checksum(checksum):
    """ Return the text of the EULA, None if the EULA is not found """
    h = rhnSQL.prepare("SELECT text from suseEula WHERE checksum = :checksum")
    h.execute(checksum=checksum)
    match = h.fetchone_dict()
    if match:
        return str(match['text'])
    else:
        return None

 070701000001D7000081B40000000000000000000000016290A0C100000AC3000000000000000000000000000000000000002700000000spacewalk-backend/server/taskomatic.py    
"""
Module for taskomatic related functions (inserting into queues, etc)
"""

try:
    import xmlrpc.client as xmlrpclib
except ImportError:
    import xmlrpclib
from spacewalk.server import rhnSQL

# see TaskoXmlRpcHandler.java for available methods
TASKOMATIC_XMLRPC_URL = 'http://localhost:2829/RPC2'

class RepodataQueueEntry(object):

    def __init__(self, channel, client, reason, force=False,
                 bypass_filters=False):
        self.channel = channel
        self.client = client
        self.reason = reason
        self.force = force
        self.bypass_filters = bypass_filters


class RepodataQueue(object):

    def _boolean_as_char(boolean):
        if boolean:
            return 'Y'
        else:
            return 'N'

    _boolean_as_char = staticmethod(_boolean_as_char)

    def add(self, entry):
        h = rhnSQL.prepare("""
            insert into rhnRepoRegenQueue
                (id, channel_label, client, reason, force, bypass_filters,
                 next_action, created, modified)
            values (
                sequence_nextval('rhn_repo_regen_queue_id_seq'),
                :channel, :client, :reason, :force, :bypass_filters,
                current_timestamp, current_timestamp, current_timestamp
            )
        """)

        h.execute(channel=entry.channel, client=entry.client,
                  reason=entry.reason, force=self._boolean_as_char(entry.force),
                  bypass_filters=self._boolean_as_char(entry.bypass_filters))


def add_to_repodata_queue(channel, client, reason, force=False,
                          bypass_filters=False):
    if reason == '':
        reason = None
    entry = RepodataQueueEntry(channel, client, reason, force, bypass_filters)
    queue = RepodataQueue()
    queue.add(entry)

# XXX not the best place for this...


def add_to_repodata_queue_for_channel_package_subscription(affected_channels,
                                                           batch, caller):

    tmpreason = []
    for package in batch:
        tmpreason.append(package.short_str())

    reason = " ".join(tmpreason)

    for channel in affected_channels:
        # don't want to cause an error for the db
        add_to_repodata_queue(channel, caller, reason[:128])

def add_to_erratacache_queue(channel, priority=0):
    h = rhnSQL.prepare("""
    insert into rhnTaskQueue
           (org_id, task_name, task_data, priority, earliest)
           select coalesce(c.org_id, 1),
                  'update_errata_cache_by_channel',
                  c.id,
                  :priority,
                  current_timestamp
             from rhnChannel c
            where c.label = :label
    """)
    h.execute(label=channel, priority=priority)
    rhnSQL.commit()
 070701000001D8000041FD0000000000000000000000016290A0C100000000000000000000000000000000000000000000001E00000000spacewalk-backend/server/test 070701000001D9000081B40000000000000000000000016290A0C100000442000000000000000000000000000000000000002B00000000spacewalk-backend/server/test/TestProxy.py    #
# Copyright (c) 2008--2015 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#
import TestServer
import server.redhat_xmlrpc.downloads


class TestProxy(TestServer.TestServer):

    def __init__(self):
        TestServer.TestServer.__init__(self)
        self._init_redhat_xmlrpc_downloads()

    def _init_redhat_xmlrpc_downloads(self):
        self.downloads = server.redhat_xmlrpc.downloads.Downloads()

    def getDownloads(self):
        return self.downloads

if __name__ == "__main__":
    server = TestProxy()
    downloads = server.getDownloads()
  070701000001DA000081B40000000000000000000000016290A0C100000DB2000000000000000000000000000000000000002C00000000spacewalk-backend/server/test/TestRedhat.py   #
# Copyright (c) 2008--2016 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#
# A class that makes testing stuff in backend/server/redhat_xmlrpc a little easier.
# It requires the rhn_server_redhat-xmlrpc.conf file in /etc/rhn/default.

# By default it uses the test-file-upload account in webdev.

# Change the value of the download_files_prefix option in rhn_server_redhat-xmlrpc.conf
# to some directory on your local machine.
#   Mine is set to wregglej, for instance.

# Change the value of the mount_point (or add the mount_point option) in /etc/rhn/rhn_server.conf on you local machine.
#   Mine is set to /home/devel, for instance.

# Place some tarballs in a directory on you machine that is under the path formed by joining the mount_point value
# with the download_files_prefix value.
#   I put them in /home/devel/wregglej/testing/tarballs/t1.

# Modify the values in data to reflect your set up.
import TestServer
import server.redhat_xmlrpc
try:
    #  python 2
    import SimpleXMLRPCServer
except ImportError:
    #  python3
    import xmlrpc.server as SimpleXMLRPCServer
from spacewalk.common import rhnConfig


class TestRedhat(TestServer.TestServer):

    def __init__(self):
        TestServer.TestServer.__init__(self)
        rhnConfig.initCFG("server.redhat-xmlrpc")
        self._init_xmlrpc()

    def _init_xmlrpc(self):
        self.rpc = server.redhat_xmlrpc

    def getXmlRpc(self):
        return self.rpc

    def getUsername(self):
        return "test-file-upload"

    def getPassword(self):
        return "password"

if __name__ == "__main__":
    server = TestRedhat()
    rpc = server.getXmlRpc()
    rpc_downloads = rpc.downloads.Downloads()

    category = "RHN Test Download"
    channel = 'rhn-test-download'
    data = [
        {
            'path': "testing/tarballs/t1/examplesT1.tar.gz",
            'name': "examples1",
            'channel': channel,
            'file_size': '162671',
            'md5sum': 'a39e4a3e8a5615b01b40598fd23d2abf',
            'category': category,
            'ordering': '1',
        },
        {
            'path': "testing/tarballs/t1/examplesT2.tar.gz",
            'name': "examples2",
            'channel': channel,
            'file_size': '162671',
            'md5sum': 'a39e4a3e8a5615b01b40598fd23d2abf',
            'category': category,
            'ordering': '2',
        },
    ]
    info = {
        'entries': data,
        'username': 'test-file-upload',
        'password': 'password',
        'channel': channel,
        'commit': 1,
        'force': 1
    }

    # DELETE THE DOWNLOADS
    # print rpc_downloads.delete_category_files(info)

    # ADD THE DOWNLOADS
#    print rpc_downloads.add_downloadable_files(info)
    server = SimpleXMLRPCServer.SimpleXMLRPCServer(addr=('', 8000))
    for func in rpc_downloads.functions:
        print(func)
        server.register_function(getattr(rpc_downloads, func), name="downloads.%s" % (func))
    server.serve_forever()
  070701000001DB000081B40000000000000000000000016290A0C10000062C000000000000000000000000000000000000002D00000000spacewalk-backend/server/test/TestRhnpush.py  #
# Copyright (c) 2008--2016 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#
import TestServer
import server.app.packages
try:
    #  python 2
    import SimpleXMLRPCServer
except ImportError:
    #  python3
    import xmlrpc.server as SimpleXMLRPCServer


class TestRhnpush(TestServer.TestServer):

    def __init__(self):
        TestServer.TestServer.__init__(self)
        self._init_app()

    def _init_app(self):
        self.app = server.app.packages.Packages()

    def getApp(self):
        return self.app

if __name__ == "__main__":
    server = TestRhnpush()
    app = server.getApp()
    print((app.test_login(server.getUsername(), server.getPassword())))
    print((app.listChannel(['wregglej-test'], "wregglej", "bm8gv5z2")))
    print((app.listChannelSource(['wregglej-test'], "wregglej", "bm8gv5z2")))
    server = SimpleXMLRPCServer.SimpleXMLRPCServer(addr=('', 16000))
    for func in app.functions:
        print(func)
        server.register_function(getattr(app, func), name="app.%s" % (func))
    server.serve_forever()
070701000001DC000081B40000000000000000000000016290A0C100002066000000000000000000000000000000000000002C00000000spacewalk-backend/server/test/TestServer.py   #!/usr/bin/python
#
# Copyright (c) 2008--2016 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#

import time
from rhn.UserDictCase import UserDictCase
from spacewalk.server import rhnSQL, rhnServer, rhnAction
from spacewalk.common import rhnConfig, rhnFlags
import server.xmlrpc.up2date
from misc_functions import create_activation_key
import misc_functions

# The Test Server class is a singleton. This allows us to avoid the long setup times between each test.


class TestServer:

    # The actual implementation
    class TestServerImplementation:

        def __init__(self):
            #start_init = time.time()

            self.filesuploaded = False

            self.options = rhnConfig.initCFG('server')
            print((self.options))

            mytime = time.time()
            self.test_username = username or ("test_username_%.3f" % mytime)
            self.test_password = password or ("test_password_%.3f" % mytime)
            self.test_email = email or ("%s@test_domain.com" % self.test_username)
            self.channel_arch = 'unittestarch'

            self.roles = ['org_admin']
            rhnFlags.set('outputTransportOptions', UserDictCase())

            self._init_db()
            self._init_org()
            self._init_user(self.roles)
            self._init_server()
            self._init_channels()
            self._init_up2date()

        # Sets up database connection
        def _init_db(self):
            rhnSQL.initDB()

        # creates an org
        def _init_org(self):
            self.org_id, self.org_name, self.org_password = misc_functions.create_new_org()

        # create a user. Must have called _init_client first.
        def _init_user(self, roles):
            self.testuser = misc_functions.create_new_user(username=self.test_username,
                                                           password=self.test_password,
                                                           #email = self.test_email,
                                                           org_id=self.org_id,
                                                           #org_password = self.org_password,
                                                           roles=roles)

        # create a server. Must have called _init_client and _init_user.
        def _init_server(self):
            self.testserver = misc_functions.new_server(self.testuser, self.org_id)

        # createa a new channel family and a channel associated with the channel
        # family, and add it to the server's channels.
        def _init_channels(self):
            # create a channel family.
            self.cf = misc_functions.create_channel_family()
            self.label = self.cf.get_label()

            # Create a new channel using the channel family info
            self.channel = misc_functions.create_channel(self.label, self.label, org_id=self.org_id)

            # Associate the channel family with the organization
            _insert_channel_family = """
            INSERT INTO rhnPrivateChannelFamily( channel_family_id, org_id )
            VALUES ( :channel_family_id, :org_id )"""
            insert_channel_family = rhnSQL.prepare(_insert_channel_family)
            insert_channel_family.execute(channel_family_id=self.cf.get_id(), org_id=self.org_id)
            rhnSQL.commit()

            # Associate the channel with the server
            _insert_channel = "INSERT INTO rhnServerChannel( server_id, channel_id ) VALUES ( :server_id, :channel_id )"
            insert = rhnSQL.prepare(_insert_channel)
            insert.execute(server_id=self.testserver.getid(), channel_id=self.channel.get_id())
            rhnSQL.commit()

        # instantiate an up2date object and make sure that entitlements aren't checked, which avoids some nastiness
        # that isn't needed for testing purposes...yet. Also, make sure the the server_id of the Up2date object is set
        # correctly. Violates encapsulation horribly.
        def _init_up2date(self):
            self.up2date = server.xmlrpc.up2date.Up2date()
            self.up2date.check_entitlement = 0
            self.up2date.server_id = self.testserver.getid()

        def getUp2date(self):
            return self.up2date

        # Uploads packages from directory.
        def upload_packages(self,
                            directory,
                            channel_label=None,
                            username=None,
                            password=None,
                            org_id=None,
                            force=False,
                            source=0):

            upload_label = channel_label or self.label
            upload_username = username or self.test_username
            upload_password = password or self.test_password
            upload_org_id = org_id or self.org_id

            #start_upload = time.time()
            if not self.filesuploaded or force:
                misc_functions.upload_packages(upload_label,
                                               directory,
                                               org_id=upload_org_id,
                                               username=upload_username,
                                               password=upload_password,
                                               source=source)
                self.filesuploaded = True
            #fin_upload = time.time()
            # print "Upload time: %s" % ( str( fin_upload - start_upload )

        def getServerId(self):
            return self.testserver.getid()

        def getUsername(self):
            return self.test_username

        def getPassword(self):
            return self.test_password

        def getChannel(self):
            return self.channel

        def getChannelFamily(self):
            return self.cf

        def getSystemId(self):
            return self.testserver.system_id()

    # Will contain the reference to a TestServerImplementation object
    __instance = None

    def __init__(self):
        if TestServer.__instance is None:
            TestServer.__instance = TestServer.TestServerImplementation()

        self.__dict__['_TestServer__instance'] = TestServer.__instance

    def __getattr__(self, attr):
        return getattr(TestServer.__instance, attr)

    def __setattr__(self, attr, value):
        return setattr(TestServer.__instance, attr, value)


_query_action_lookup = rhnSQL.Statement("""
    select *
      from rhnServerAction
     where server_id = :server_id
""")


def look_at_actions(server_id):
    h = rhnSQL.prepare(_query_action_lookup)
    h.execute(server_id=server_id)
    return h.fetchall_dict()


if __name__ == "__main__":
    myserver = TestServer()
    # myserver.upload_packages('/home/devel/wregglej/rpmtest')
    #handler = rhnHandler()
    # print handler.auth_system( myserver.getSystemId() )
    #up2date = myserver.getUp2date()
    #id = myserver.getSystemId()
    # print up2date.solvedep( id, ['libcaps.so'] )
    # print "Done!"
    #rhnserver = rhnServer.Server(myserver.testuser, org_id=myserver.org_id)

    fake_key = create_activation_key(
        org_id=myserver.org_id, user_id=myserver.testuser.getid(), channels=[myserver.label], server_id=myserver.getServerId())
    fake_action = rhnAction.schedule_server_action(
        myserver.getServerId(), "packages.update", action_name="Testing", delta_time=9999, org_id=myserver.org_id)
    fake_token = rhnServer.search_token(fake_key._token)

    print((look_at_actions(myserver.getServerId())))

    rhnFlags.set("registration_token", fake_token)
    myserver.testserver.use_token()

    print((look_at_actions(myserver.getServerId())))

    rhnAction.invalidate_action(myserver.getServerId(), fake_action)
    rhnSQL.rollback()
  070701000001DD000041FD0000000000000000000000016290A0C100000000000000000000000000000000000000000000002400000000spacewalk-backend/server/test/attic   070701000001DE000081B40000000000000000000000016290A0C1000028CB000000000000000000000000000000000000003800000000spacewalk-backend/server/test/attic/rhnActivationKey.py   #!/usr/bin/python
#
# Copyright (c) 2008--2016 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#
#

import os
import hashlib
import time
from uyuni.common import usix

from spacewalk.server import rhnSQL
from rhn.i18n import bstr


class InvalidTokenError(Exception):
    pass


class InvalidChannelError(Exception):
    pass


class InvalidEntitlementError(Exception):
    pass


class ActivationKey:

    def __init__(self):
        self._row_reg_token = None
        self._row_activ_key = None

        self._server_groups = {}
        self._channels = {}
        self._token = None

    def load(self, token):
        t = rhnSQL.Table('rhnActivationKey', 'token')
        row = t[token]
        if not row:
            raise InvalidTokenError(token)
        self._row_activ_key = row
        reg_token_id = row['reg_token_id']
        t = rhnSQL.Table('rhnRegToken', 'id')
        row = t[reg_token_id]
        if not row:
            raise Exception("Invalid data in DB: missing foreign key")
        self._row_reg_token = row
        self._server_groups = self._load_server_groups()
        self._channels = self._load_channels()

    _query_fetch_server_groups = rhnSQL.Statement("""
        select rtsg.server_group_id
          from rhnRegTokenGroups rtsg
         where rtsg.token_id = :token_id
    """)

    def _load_server_groups(self):
        # Get groups
        h = rhnSQL.prepare(self._query_fetch_server_groups)
        reg_token_id = self._row_reg_token['id']
        h.execute(token_id=reg_token_id)
        ret = {}
        while 1:
            row = h.fetchone_dict()
            if not row:
                break
            server_group_id = row['server_group_id']
            ret[server_group_id] = None
        return ret

    _query_fetch_channels = rhnSQL.Statement("""
        select rtc.channel_id, c.label
          from rhnRegTokenChannels rtc, rhnChannel c
         where rtc.token_id = :token_id
           and rtc.channel_id = c.id
    """)

    def _load_channels(self):
        # Get groups
        h = rhnSQL.prepare(self._query_fetch_channels)
        reg_token_id = self._row_reg_token['id']
        h.execute(token_id=reg_token_id)
        ret = {}
        while 1:
            row = h.fetchone_dict()
            if not row:
                break
            channel_id = row['channel_id']
            ret[channel_id] = row['label']
        return ret

    # Setters

    def set_entitlement_level(self, val):
        entitlements = {}
        for k, v in list(val.items()):
            entitlement_level_id = self._lookup_entitlement_level(k)
            entitlements[entitlement_level_id] = k

        self._set('entitlement_level', entitlements)

    def set_server_groups(self, groups):
        assert(isinstance(groups, usix.ListType))

        ret = {}
        for g in groups:
            ret[g] = None

        self._server_groups.clear()
        self._server_groups.update(ret)

    def set_channels(self, channels):
        assert(isinstance(channels, usix.ListType))

        t = rhnSQL.Table('rhnChannel', 'label')

        ret = {}
        for ch in channels:
            row = t[ch]
            if not row:
                raise InvalidChannelError(ch)
            ret[row['id']] = None

        self._channels.clear()
        self._channels.update(ret)

    def _set(self, name, val):
        if self._row_reg_token is None:
            self._row_reg_token = rhnSQL.Row('rhnRegToken', 'id')
            token_id = rhnSQL.Sequence('rhn_reg_token_seq').next()
            self._row_reg_token.create(token_id)
            self._row_reg_token['usage_limit'] = None

        self._row_reg_token[name] = val

    # Getters

    _query_get_reg_token_entitlements = rhnSQL.Statement("""
        select sgt.label
          from rhnServerGroupType sgt,
               rhnRegTokenEntitlement rte
         where rte.reg_token_id = :reg_token_id
           and rte.server_group_type_id = sgt.id
    """)

    def get_entitlement_level(self):
        reg_token_id = self._row_reg_token['id']
        h = rhnSQL.prepare(self._query_get_reg_token_entitlements)
        h.execute(reg_token_id=reg_token_id)

        ret = {}
        while 1:
            row = h.fetchone_dict()
            if not row:
                break
            ret[row['label']] = None
        return ret

    def get_server_groups(self):
        return list(self._server_groups.keys())

    def get_channels(self):
        return list(self._channels.values())

    def get_token(self):
        return self._token

    def _get(self, name):
        return self._row_reg_token[name]

    # Fix various things

    def _lookup_entitlement_level(self, entitlement_level):
        t = rhnSQL.Table('rhnServerGroupType', 'label')
        row = t[entitlement_level]
        if not row:
            raise InvalidEntitlementError(entitlement_level)
        return row['id']

    def generate_token(self):
        s = hashlib.new('sha1')
        s.update(bstr(str(os.getpid())))
        for field in ['org_id', 'user_id', 'server_id']:
            if self._row_reg_token.has_key(field):
                val = self._row_reg_token[field]
            s.update(bstr(str(val)))
        s.update(bstr("%.8f" % time.time()))
        self._token = s.hexdigest()
        return self._token

    def save(self):
        if self._token is None:
            self.generate_token()

        try:
            return self._save()
        except:
            rhnSQL.rollback()
            raise

    def _save(self):
        h = self._row_reg_token
        k = 'entitlement_level'
        if h.has_key(k):
            entitlements = h[k]
            del h.data[k]
        else:
            entitlements = {}

        self._row_reg_token.save()

        if not self._row_activ_key:
            self._row_activ_key = rhnSQL.Row('rhnActivationKey', 'token')
            self._row_activ_key.create(self._token)
            self._row_activ_key['reg_token_id'] = self._row_reg_token['id']
            self._row_activ_key.save()

        self._store_server_groups()
        self._store_channels()

        self._store_entitlements(entitlements)

    _query_delete_reg_token_entitlements = rhnSQL.Statement("""
        delete from rhnRegTokenEntitlement
         where reg_token_id = :reg_token_id
    """)
    _query_insert_reg_token_entitlements = rhnSQL.Statement("""
        insert into rhnRegTokenEntitlement
               (reg_token_id, server_group_type_id)
        values (:reg_token_id, :server_group_type_id)
    """)

    def _store_entitlements(self, entitlements):
        # entitlements: hash keyed on the entitlement id
        if not entitlements:
            return
        entitlements = list(entitlements.keys())

        reg_token_id = self._row_reg_token['id']
        reg_token_ids = [reg_token_id] * len(entitlements)

        h = rhnSQL.prepare(self._query_delete_reg_token_entitlements)
        h.execute(reg_token_id=reg_token_id)

        h = rhnSQL.prepare(self._query_insert_reg_token_entitlements)
        h.executemany(reg_token_id=reg_token_ids,
                      server_group_type_id=entitlements)

    _query_delete_groups = rhnSQL.Statement("""
        delete from rhnRegTokenGroups
         where token_id = :token_id
           and server_group_id = :server_group_id
    """)
    _query_insert_groups = rhnSQL.Statement("""
        insert into rhnRegTokenGroups (token_id, server_group_id)
        values (:token_id, :server_group_id)
    """)

    def _store_server_groups(self):
        db_server_groups = self._load_server_groups()
        token_id = self._row_reg_token['id']

        inserts, deletes = self._diff_hashes(db_server_groups,
                                             self._server_groups)

        if deletes:
            token_ids = [token_id] * len(deletes)
            h = rhnSQL.prepare(self._query_delete_groups)
            h.executemany(token_id=token_ids, server_group_id=deletes)
        if inserts:
            token_ids = [token_id] * len(inserts)
            h = rhnSQL.prepare(self._query_insert_groups)
            h.executemany(token_id=token_ids, server_group_id=inserts)

    _query_delete_channels = rhnSQL.Statement("""
        delete from rhnRegTokenChannels
         where token_id = :token_id
           and channel_id = :channel_id
    """)
    _query_insert_channels = rhnSQL.Statement("""
        insert into rhnRegTokenChannels(token_id, channel_id)
        values (:token_id, :channel_id)
    """)

    def _store_channels(self):
        db_channels = self._load_channels()
        token_id = self._row_reg_token['id']

        inserts, deletes = self._diff_hashes(db_channels,
                                             self._channels)

        if deletes:
            token_ids = [token_id] * len(deletes)
            h = rhnSQL.prepare(self._query_delete_channels)
            h.executemany(token_id=token_ids, channel_id=deletes)
        if inserts:
            token_ids = [token_id] * len(inserts)
            h = rhnSQL.prepare(self._query_insert_channels)
            h.executemany(token_id=token_ids, channel_id=inserts)

    def _diff_hashes(self, h1, h2):
        "diffs src and dst; returns a list of (inserts, deletes)"
        inserts = []
        h1 = h1.copy()
        for k in list(h2.keys()):
            if k not in h1:
                inserts.append(k)
                continue
            del h1[k]
        deletes = list(h1.keys())
        return inserts, deletes

    def __getattr__(self, name):
        if name.startswith('get_'):
            return CallableObj(name[4:], self._get)
        if name.startswith('set_'):
            return CallableObj(name[4:], self._set)
        raise AttributeError(name)


class CallableObj:

    def __init__(self, name, func):
        self.func = func
        self.name = name

    def __call__(self, *args, **kwargs):
        return self.func(self.name, *args, **kwargs)
 070701000001DF000081B40000000000000000000000016290A0C100000CF0000000000000000000000000000000000000003600000000spacewalk-backend/server/test/attic/rhnServerGroup.py #!/usr/bin/python
#
# Copyright (c) 2008--2016 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#


from uyuni.common import usix

from spacewalk.server import rhnSQL, rhnUser


class InvalidUserError(Exception):
    pass


class InvalidOrgError(Exception):
    pass


class InvalidServerGroupError(Exception):
    pass


class ServerGroup:

    def __init__(self):
        self._row_server_group = None

    _query_lookup = rhnSQL.Statement("""
        select id
          from rhnServerGroup
         where org_id = :org_id
           and name = :name
    """)

    def load(self, org_id, name):
        org_id = self._lookup_org_id(org_id)
        h = rhnSQL.prepare(self._query_lookup)
        h.execute(org_id=org_id, name=name)
        row = h.fetchone_dict()
        if not row:
            raise InvalidServerGroupError(org_id, name)
        server_group_id = row['id']
        self._row_server_group = rhnSQL.Row("rhnServerGroup", 'id')
        self._row_server_group.load(server_group_id)

    # Setters

    def set_org_id(self, org_id):
        self._set('org_id', self._lookup_org_id(org_id))

    def _set(self, name, val):
        if self._row_server_group is None:
            self._row_server_group = rhnSQL.Row('rhnServerGroup', 'id')
            server_group_id = rhnSQL.Sequence('rhn_server_group_id_seq').next()
            self._row_server_group.create(server_group_id)

        self._row_server_group[name] = val

    # Getters

    def _get(self, name):
        return self._row_server_group[name]

    def _lookup_org_id(self, org_id):
        if isinstance(org_id, usix.StringType):
            # Is it a user?
            u = rhnUser.search(org_id)

            if not u:
                raise InvalidUserError(org_id)

            return u.contact['org_id']

        t = rhnSQL.Table('web_customer', 'id')
        row = t[org_id]
        if not row:
            raise InvalidOrgError(org_id)
        return row['id']

    def save(self):
        if not self._row_server_group:
            return
        self._row_server_group.save()

    def __getattr__(self, name):
        if name.startswith('get_'):
            return CallableObj(name[4:], self._get)
        if name.startswith('set_'):
            return CallableObj(name[4:], self._set)
        raise AttributeError(name)


class CallableObj:

    def __init__(self, name, func):
        self.func = func
        self.name = name

    def __call__(self, *args, **kwargs):
        return self.func(self.name, *args, **kwargs)


def create_new_org(username, password):
    f = rhnSQL.Procedure('create_new_org')

    username = rhnSQL.types.STRING(username)
    password = rhnSQL.types.STRING(password)
    ncl = rhnSQL.types.NUMBER

    ret = f(username, password, ncl())
    return int(ret[2])
070701000001E0000081B40000000000000000000000016290A0C1000003DD000000000000000000000000000000000000003400000000spacewalk-backend/server/test/attic/rhn_memusage.py   #
# Copyright (c) 2008--2016 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#

import string


def mem_usage():
    f = open("/proc/self/status")
    dict = {}
    while 1:
        line = f.readline()
        if not line:
            break
        arr = list(map(string.strip, string.split(line, ':', 1)))
        if len(arr) == 1:
            continue
        dict[arr[0]] = arr[1]
    return dict['Name'], dict['VmSize'], dict['VmRSS'], dict['VmData']
   070701000001E1000081B40000000000000000000000016290A0C100000E90000000000000000000000000000000000000003000000000spacewalk-backend/server/test/byterangetests.py   #
# Copyright (c) 2008--2015 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#
import unittest


class ByteRangeTests(unittest.TestCase):

    def testEmptyRange(self):
        try:
            server.byterange.parse_byteranges("")
            self.fail()
        except server.byterange.InvalidByteRangeException:
            # Expected result
            pass

    def testNoRangeGroups(self):
        try:
            server.byterange.parse_byteranges("bytes=")
            self.fail()
        except server.byterange.InvalidByteRangeException:
            # Expected result
            pass

    def testNegativeStart(self):
        try:
            server.byterange.parse_byteranges("bytes=-1-30")
            self.fail()
        except server.byterange.InvalidByteRangeException:
            pass

    def testStartAfterEnd(self):
        try:
            server.byterange.parse_byteranges("bytes=12-3")
            self.fail()
        except server.byterange.InvalidByteRangeException:
            pass

    def testNoStartOrEnd(self):
        try:
            server.byterange.parse_byteranges("bytes=-")
            self.fail()
        except server.byterange.InvalidByteRangeException:
            pass

    def testNoStartInvalidEnd(self):
        try:
            server.byterange.parse_byteranges("bytes=-0")
            self.fail()
        except server.byterange.InvalidByteRangeException:
            pass

    def testBadCharactersInRange(self):
        try:
            server.byterange.parse_byteranges("bytes=2-CB")
            self.fail()
        except server.byterange.InvalidByteRangeException:
            pass

    def testGoodRange(self):
        start, end = server.byterange.parse_byteranges("bytes=0-4")
        self.assertEqual(0, start)
        self.assertEqual(5, end)

    def testStartByteToEnd(self):
        start, end = server.byterange.parse_byteranges("bytes=12-")
        self.assertEqual(12, start)
        self.assertEqual(None, end)

    def testSuffixRange(self):
        start, end = server.byterange.parse_byteranges("bytes=-30")
        self.assertEqual(-30, start)
        self.assertEqual(None, end)

    def testMultipleRanges(self):
        try:
            server.byterange.parse_byteranges("bytes=1-3,9-12")
            self.fail()
        except server.byterange.UnsatisfyableByteRangeException:
            pass

    def testStartWithFileSize(self):
        start, end = server.byterange.parse_byteranges("bytes=23-", 50)
        self.assertEqual(23, start)
        self.assertEqual(50, end)

    def testSuffixWithFileSize(self):
        start, end = server.byterange.parse_byteranges("bytes=-40", 50)
        self.assertEqual(10, start)
        self.assertEqual(50, end)

    def testStartPastFileSize(self):
        try:
            server.byterange.parse_byteranges("bytes=50-60", 50)
            self.fail()
        except server.byterange.UnsatisfyableByteRangeException:
            pass

    def testSuffixLargerThanFileSize(self):
        try:
            server.byterange.parse_byteranges("bytes=-80", 79)
            self.fail()
        except server.byterange.UnsatisfyableByteRangeException:
            pass
unittest.main()
070701000001E2000081B40000000000000000000000016290A0C100000868000000000000000000000000000000000000003100000000spacewalk-backend/server/test/cx_create_table.py  #
# Copyright (c) 2008--2016 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#
import os
import sys
import cx_Oracle


def main():
    if len(sys.argv) != 2:
        sys.stdout.write("Usage: %s <connectstring>\n" % sys.argv[0])
        return 1
    dbh = cx_Oracle.connect(sys.argv[1])

    table_name = "test_%d" % os.getpid()
    if 1:
        test2(dbh, table_name)
    else:
        test1(dbh, table_name)
        test1(dbh, table_name)


def test1(dbh, table_name):
    tn = table_name.upper()
    create_table(dbh, table_name)
    assert tn in list_tables(dbh), "Table %s not created" % table_name
    drop_table(dbh, table_name)
    assert tn not in list_tables(dbh), "Table %s not dropped" % table_name


def test2(dbh, table_name):
    tn = table_name.upper()
    h1 = create_table(dbh, table_name)
    assert tn in list_tables(dbh), "Table %s not created" % table_name
    h2 = drop_table(dbh, table_name)
    assert tn not in list_tables(dbh), "Table %s not dropped" % table_name

    h1.execute(None)
    assert tn in list_tables(dbh), "Table %s not created" % table_name
    h2.execute(None)
    assert tn not in list_tables(dbh), "Table %s not dropped" % table_name


def create_table(dbh, table_name):
    h = dbh.cursor()
    h.execute("create table %s (id int)" % table_name)
    return h


def drop_table(dbh, table_name):
    h = dbh.cursor()
    h.execute("drop table %s" % table_name)
    return h


def list_tables(dbh):
    h = dbh.cursor()
    h.execute("select table_name from user_tables")
    return [x[0].upper() for x in h.fetchall()]

if __name__ == '__main__':
    sys.exit(main() or 0)
070701000001E3000081B40000000000000000000000016290A0C100002453000000000000000000000000000000000000003000000000spacewalk-backend/server/test/misc_functions.py   #!/usr/bin/python
#
# Copyright (c) 2008--2016 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#
#
#
#
import os
import sys
import time
from uyuni.common import usix
import server.importlib.headerSource
import server.importlib.packageImport
import server.importlib.backendOracle
import server.xmlrpc.up2date
from spacewalk.server import rhnSQL, rhnChannel, rhnServer, rhnUser, rhnServerGroup, rhnActivationKey
from spacewalk.server.xmlrpc import registration


def create_channel_family():
    cf = rhnChannel.ChannelFamily()
    cf.load_from_dict(new_channel_family_dict())
    cf.save()
    return cf


def create_channel(label, channel_family, org_id=None, channel_arch=None):
    vdict = new_channel_dict(label=label, channel_family=channel_family, org_id=org_id, channel_arch=channel_arch)
    c = rhnChannel.Channel()
    c.load_from_dict(vdict)
    c.save()
    return c


def create_new_org():
    "Create a brand new org; return the new org id"
    org_name = "unittest-org-%.3f" % time.time()
    org_password = "unittest-password-%.3f" % time.time()

    org_id = rhnServerGroup.create_new_org(org_name, org_password)
    rhnSQL.commit()
    return (org_id, org_name, org_password)


def _create_server_group(org_id, name, description):
    "Create a server group; return the server group object"
    s = rhnServerGroup.ServerGroup()
    s.set_org_id(org_id)
    s.set_name(name)
    s.set_description(description)
    s.save()
    rhnSQL.commit()
    return s


def create_server_group(params):
    "Create a server group from a dictionary with the params"
    return _create_server_group(**params)


def fetch_server_group(org_id, name):
    "Load a server group object from the org id and name"
    s = rhnServerGroup.ServerGroup()
    s.load(org_id, name)
    return s

_query_fetch_server_groups = rhnSQL.Statement("""
    select sgm.server_group_id
      from rhnServerGroupMembers sgm,
           rhnServerGroup sg
     where sgm.server_id = :server_id
      and sgm.server_group_id = sg.id
      and sg.group_type is null
""")


def fetch_server_groups(server_id):
    "Return a server's groups"
    h = rhnSQL.prepare(_query_fetch_server_groups)
    h.execute(server_id=server_id)
    groups = [x['server_group_id'] for x in h.fetchall_dict() or []]
    groups.sort()
    return groups


def build_server_group_params(**kwargs):
    "Build params for server groups"
    params = {
        'org_id':   'no such org',
        'name':   "unittest group name %.3f" % time.time(),
        'description':   "unittest group description %.3f" % time.time(),
    }
    params.update(kwargs)
    return params


def create_new_user(org_id=None, username=None, password=None, roles=None):
    "Create a new user"
    if org_id is None:
        org_id = create_new_org()
    else:
        org_id = lookup_org_id(org_id)

    if username is None:
        username = "unittest-user-%.3f" % time.time()
    if password is None:
        password = "unittest-password-%.3f" % time.time()
    if roles is None:
        roles = []

    u = rhnUser.User(username, password)
    u.set_org_id(org_id)
    u.save()
    # The password is scrambled now - re-set it
    u.contact['password'] = password
    u.save()
    user_id = u.getid()

    # Set roles
    h = rhnSQL.prepare("""
        select ug.id
          from rhnUserGroupType ugt, rhnUserGroup ug
         where ug.org_id = :org_id
           and ug.group_type = ugt.id
           and ugt.label = :role
    """)
    create_ugm = rhnSQL.Procedure("rhn_user.add_to_usergroup")
    for role in roles:
        h.execute(org_id=org_id, role=role)
        row = h.fetchone_dict()
        if not row:
            raise InvalidRoleError(org_id, role)

        user_group_id = row['id']
        create_ugm(user_id, user_group_id)

    rhnSQL.commit()

    return u


def lookup_org_id(org_id):
    "Look up the org id by user name"
    if isinstance(org_id, usix.StringType):
        # Is it a user?

        u = rhnUser.search(org_id)

        if not u:
            raise rhnServerGroup.InvalidUserError(org_id)

        return u.contact['org_id']

    t = rhnSQL.Table('web_customer', 'id')
    row = t[org_id]
    if not row:
        raise rhnServerGroup.InvalidOrgError(org_id)
    return row['id']

# class InvalidEntitlementError(Exception):
#    pass


class InvalidRoleError(Exception):
    pass


def listdir(directory):
    directory = os.path.abspath(os.path.normpath(directory))
    if not os.access(directory, os.R_OK | os.X_OK):
        print(("Can't access %s." % (directory)))
        sys.exit(1)
    if not os.path.isdir(directory):
        print(("%s not valid." % (directory)))
        sys.exit(1)
    packageList = []
    for f in os.listdir(directory):
        packageList.append("%s/%s" % (directory, f))
    return packageList

# stolen from backend/server/test/unit-test/test_rhnChannel


def new_channel_dict(**kwargs):
    _counter = 0

    label = kwargs.get('label')
    if label is None:
        label = 'rhn-unittest-%.3f-%s' % (time.time(), _counter)
        _counter = _counter + 1

    release = kwargs.get('release') or 'release-' + label
    os = kwargs.get('os') or 'Unittest Distro'
    if 'org_id' in kwargs:
        org_id = kwargs['org_id']
    else:
        org_id = 'rhn-noc'

    vdict = {
        'label': label,
        'name': kwargs.get('name') or label,
        'summary': kwargs.get('summary') or label,
        'description': kwargs.get('description') or label,
        'basedir': kwargs.get('basedir') or '/',
        'channel_arch': kwargs.get('channel_arch') or 'i386',
        'channel_families': [kwargs.get('channel_family') or label],
        'org_id': kwargs.get('org_id'),
        'gpg_key_url': kwargs.get('gpg_key_url'),
        'gpg_key_id': kwargs.get('gpg_key_id'),
        'gpg_key_fp': kwargs.get('gpg_key_fp'),
        'end_of_life': kwargs.get('end_of_life'),
        'dists': [{
            'release': release,
            'os': os,
        }],
    }
    return vdict


# stolen from backend/server/tests/unit-test/test_rhnChannel
def new_channel_family_dict(**kwargs):
    _counter = 0

    label = kwargs.get('label')
    if label is None:
        label = 'rhn-unittest-%.3f-%s' % (time.time(), _counter)
        _counter = _counter + 1

    product_url = kwargs.get('product_url') or 'http://rhn.redhat.com'

    vdict = {
        'label': label,
        'name': kwargs.get('name') or label,
        'product_url': product_url,
    }
    return vdict


def new_server(user, org_id):
    serv = rhnServer.Server(user, org_id=org_id)
    # serv.default_description()
    params = build_sys_params_with_username(username=user.contact['login'])

    # print params
    serv.server['release'] = params['os_release']
    serv.server['os'] = "Unittest Distro"
    serv.server['name'] = params['profile_name']
    serv.set_arch('i386')
    serv.default_description()
    serv.getid()
    serv.gen_secret()
    serv.save()
    return serv


class Counter:
    _counter = 0

    def value(self):
        val = self._counter
        self._counter = val + 1
        return val

def build_sys_params_with_username(**kwargs):
    val = Counter().value()
    rnd_string = "%s%s" % (int(time.time()), val)

    params = {
        'os_release': '9',
        'architecture': 'i386',
        'profile_name': "unittest server " + rnd_string,
        'username': 'no such user',
        'password': 'no such password',
    }
    params.update(kwargs)
    if 'token' in params:
        del params['token']
    return params


def create_activation_key(org_id=None, user_id=None, groups=None,
                          channels=None, entitlement_level=None, note=None, server_id=None):
    if org_id is None:
        need_user = 1
        org_id = create_new_org()
    else:
        need_user = 0

    if user_id is None:
        if need_user:
            u = create_new_user(org_id=org_id)
            user_id = u.getid()
    else:
        u = rhnUser.User("", "")
        u.reload(user_id)

    if groups is None:
        groups = []
        for i in range(3):
            params = build_server_group_params(org_id=org_id)
            sg = create_server_group(params)
            groups.append(sg.get_id())

    if channels is None:
        channels = ['rhel-i386-as-3-beta', 'rhel-i386-as-2.1-beta']

    if entitlement_level is None:
        entitlement_level = 'enterprise_entitled'

    if note is None:
        note = "Test activation key %d" % int(time.time())

    a = rhnActivationKey.ActivationKey()
    a.set_user_id(user_id)
    a.set_org_id(org_id)
    a.set_entitlement_level(entitlement_level)
    a.set_note(note)
    a.set_server_groups(groups)
    a.set_channels(channels)
    a.set_server_id(server_id)
    a.save()
    rhnSQL.commit()

    return a
 070701000001E4000081B40000000000000000000000016290A0C100000516000000000000000000000000000000000000003800000000spacewalk-backend/server/test/test-cx_Oracle-memleak.py   #
# Copyright (c) 2008--2016 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#

import sys
import string
import cx_Oracle

if len(sys.argv) == 1:
    print(("Usage: %s <connection_string>" % sys.argv[0]))
    sys.exit(0)


def mem_usage():
    f = open("/proc/self/status")
    dict = {}
    while 1:
        line = f.readline()
        if not line:
            break
        arr = list(map(string.strip, string.split(line, ':', 1)))
        if len(arr) == 1:
            continue
        dict[arr[0]] = arr[1]
    return dict['Name'], dict['VmSize'], dict['VmRSS'], dict['VmData']

dbh = cx_Oracle.Connection(sys.argv[1])
h = dbh.cursor()
h.execute('select 1 from dual')
for i in range(10000):
    d = h.description
    if not (i % 100):
        print((mem_usage()))
  070701000001E5000081B40000000000000000000000016290A0C10000037D000000000000000000000000000000000000003100000000spacewalk-backend/server/test/test-rhn-import.py  #!/usr/bin/python
#
# Copyright (c) 2008--2013 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#

from spacewalk.common import rhnLog
from spacewalk.server import rhnImport

rhnLog.initLOG(level=4)

dir = "spacewalk/server/handlers"

for i in range(2):
    for iface in ['rpcClasses', 'getHandler']:
        m = rhnImport.load(dir, interface_signature=iface)
   070701000001E6000081B40000000000000000000000016290A0C1000002E4000000000000000000000000000000000000002A00000000spacewalk-backend/server/test/test_CFG.py #
# Copyright (c) 2008--2016 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#
from spacewalk.common.rhnConfig import initCFG, CFG

initCFG('server.config-management-tool')

print((CFG.config_delim_start))
070701000001E7000081B40000000000000000000000016290A0C10000040A000000000000000000000000000000000000003A00000000spacewalk-backend/server/test/test_action_rhnsd_config.py #
# Copyright (c) 2008--2013 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#
from spacewalk.server import rhnSQL, rhnAction

rhnSQL.initDB('rhnuser/rhnuser@webdev')

server_id = 1003486768
try:
    action_id = rhnAction.schedule_server_action(server_id, 'rhnsd.configure')

    h = rhnSQL.prepare("""
        insert into rhnActionDaemonConfig (action_id, interval)
        values (:action_id, 10)
    """)
    h.execute(action_id=action_id)

except:
    rhnSQL.rollback()
    raise
rhnSQL.commit()
  070701000001E8000081B40000000000000000000000016290A0C100000FC5000000000000000000000000000000000000004300000000spacewalk-backend/server/test/test_action_rpm_verify_extra_data.py    #
# Copyright (c) 2008--2016 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#
import sys

if len(sys.argv) != 3:
    print(("Usage: %s server_id action_id" % sys.argv[0]))
    sys.exit(1)

system_id = sys.argv[1]
action_id = sys.argv[2]

from spacewalk.common.rhnLog import initLOG
from spacewalk.server import rhnSQL

from spacewalk.server.action_extra_data import packages

initLOG("stderr", 4)
rhnSQL.initDB("rhnuser/rhnuser@webdev")

try:
    packages.verify(system_id, action_id, {
        'verify_info': [
            [['up2date', '2.9.1', '1.2.1AS', '', 'i386'], [
                'SM5..UGT c /etc/sysconfig/rhn/up2date',
                '..?..... c /etc/sysconfig/rhn/up2date-keyring.gpg',
                'S.5....T   /usr/share/rhn/up2date_client/bootloadercfg.pyc',
                'S.5....T   /usr/share/rhn/up2date_client/capabilities.pyc',
                'S.5....T   /usr/share/rhn/up2date_client/checkbootloader.pyc',
                'S.5....T   /usr/share/rhn/up2date_client/clap.pyc',
                'S.5....T   /usr/share/rhn/up2date_client/clientCaps.pyc',
                'SM5....T   /usr/share/rhn/up2date_client/config.pyc',
                'S.5....T   /usr/share/rhn/up2date_client/depSolver.pyc',
                'S.5....T   /usr/share/rhn/up2date_client/getMethod.pyc',
                'S.5....T   /usr/share/rhn/up2date_client/gpgUtils.pyc',
                'S.5....T   /usr/share/rhn/up2date_client/hardware.pyc',
                'S.5....T   /usr/share/rhn/up2date_client/headers.pyc',
                'S.5....T   /usr/share/rhn/up2date_client/iutil.pyc',
                'S.5....T   /usr/share/rhn/up2date_client/lilo.pyc',
                'S.5....T   /usr/share/rhn/up2date_client/newelilocfg.pyc',
                'S.5....T   /usr/share/rhn/up2date_client/newgrubcfg.pyc',
                'S.5....T   /usr/share/rhn/up2date_client/newlilocfg.pyc',
                'S.5....T   /usr/share/rhn/up2date_client/packageList.pyc',
                'S.5....T   /usr/share/rhn/up2date_client/rhnChannel.pyc',
                'S.5....T   /usr/share/rhn/up2date_client/rhnDefines.pyc',
                'S.5....T   /usr/share/rhn/up2date_client/rhnErrata.pyc',
                'S.5....T   /usr/share/rhn/up2date_client/rhnHardware.pyc',
                'S.5....T   /usr/share/rhn/up2date_client/rhnPackageInfo.pyc',
                'S.5....T   /usr/share/rhn/up2date_client/rpcServer.pyc',
                'S.5....T   /usr/share/rhn/up2date_client/rpmSource.pyc',
                'S.5....T   /usr/share/rhn/up2date_client/rpmUtils.pyc',
                'S.5....T   /usr/share/rhn/up2date_client/translate.pyc',
                'S.5....T   /usr/share/rhn/up2date_client/up2date.pyc',
                'S.5....T   /usr/share/rhn/up2date_client/up2dateAuth.pyc',
                'S.5....T   /usr/share/rhn/up2date_client/up2dateBatch.pyc',
                'S.5....T   /usr/share/rhn/up2date_client/up2dateErrors.pyc',
                'S.5....T   /usr/share/rhn/up2date_client/up2dateLog.pyc',
                'S.5....T   /usr/share/rhn/up2date_client/up2dateMessages.pyc',
                'S.5....T   /usr/share/rhn/up2date_client/up2dateUtils.pyc',
                'S.5....T   /usr/share/rhn/up2date_client/wrapper.pyc',
                'S.5.X..T   /usr/share/rhn/up2date_client/wrapperUtils.pyc',
                '.....UG.   /var/spool/up2date',
                '.....UG.   /var/spool/up2date',
            ]],
        ],
    })
except:
    rhnSQL.rollback()
    raise

rhnSQL.commit()
   070701000001E9000081B40000000000000000000000016290A0C100000372000000000000000000000000000000000000002D00000000spacewalk-backend/server/test/test_applet.py  #
# Copyright (c) 2008--2016 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#
from rhn import rpclib

#server = "xmlrpc.rhn.redhat.com"
server = "coyote.devel.redhat.com"

s = rpclib.Server("http://%s/APPLET" % server)

# print s.applet.poll_status()
print((s.applet.poll_packages('2.1AS', 'i386')))
print((s.applet.poll_packages('8.0', 'i386')))
  070701000001EA000081B40000000000000000000000016290A0C1000003AA000000000000000000000000000000000000003000000000spacewalk-backend/server/test/test_applet_as.py   #
# Copyright (c) 2008--2016 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#
from rhn import rpclib

#server = "xmlrpc.rhn.redhat.com"
server = "coyote.devel.redhat.com"

s = rpclib.Server("http://%s/APPLET" % server)

dict = s.applet.poll_packages('2.1AS', 'i386')
pkg_count = len(dict['contents'])
print(("Available packages: %d" % pkg_count))
assert pkg_count > 0, "No packages available for 2.1AS"
  070701000001EB000081B40000000000000000000000016290A0C100000A0C000000000000000000000000000000000000003300000000spacewalk-backend/server/test/test_capabilities.py    #!/usr/bin/python
#
# Copyright (c) 2008--2016 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#
#
# test case for bugzilla 127319
#
# Usage: ./xxx.py <server-name> <db>
#

import os
import sys

_topdir = os.path.dirname(sys.argv[0])
_basedir = os.path.abspath(_topdir + '/../..')
if _basedir not in sys.path:
    sys.path.append(_basedir)

import time
from rhn import rpclib
from spacewalk.server import rhnSQL, rhnServer, rhnCapability
from spacewalk.common.rhnConfig import ConfigParserError


def main():
    if len(sys.argv) == 1:
        server_name = 'xmlrpc.rhn.webdev.redhat.com'
    else:
        server_name = sys.argv[1]

    if len(sys.argv) <= 2:
        db_name = 'rhnuser/rhnuser@webdev'
    else:
        db_name = sys.argv[2]

    try:
        rhnSQL.initDB(db_name)
    except ConfigParserError:
        # database is not available when running in rpmbuild time
        print("Test skipped")
        return 0

    uri = "http://%s/XMLRPC" % (server_name, )
    s = rpclib.Server(uri)

    username = password = "test-username-%.3f" % time.time()
    email = "misa+%s@redhat.com" % username

    s.registration.reserve_user(username, password)
    s.registration.new_user(username, password, email)

    data = {
        'os_release': '9',
        'architecture': 'athlon-redhat-linux',
        'profile_name': 'Test profile for %s' % username,
        'username': username,
        'password': password,
    }
    systemid = s.registration.new_system(data)

    str_caps = [
        'this.is.bogus1(0)=0',
        'this.is.bogus2(1)=1',
        'this.is.bogus3(2)=2',
    ]
    for cap in str_caps:
        s.add_header('X-RHN-Client-Capability', cap)

    # Add some packages
    packages = [
        ['a', '1', '1', ''],
        ['b', '2', '2', ''],
        ['c', '3', '3', ''],
    ]
    s.registration.update_packages(systemid, packages)

    sobj = rhnServer.get(systemid)
    server_id = sobj.getid()
    print(("Registered server", server_id))

    return 0

if __name__ == '__main__':
    sys.exit(main() or 0)
070701000001EC000081B40000000000000000000000016290A0C1000002F3000000000000000000000000000000000000003300000000spacewalk-backend/server/test/test_caps_display.py    #
# Copyright (c) 2008--2016 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#
from rhn import rpclib

s = rpclib.Server("http://coyote.devel.redhat.com/REDHAT-XMLRPC")

print((s.actions.system_capabilities(1003485542)))
 070701000001ED000081B40000000000000000000000016290A0C10000044D000000000000000000000000000000000000003B00000000spacewalk-backend/server/test/test_censored_db_password.py    #!/usr/bin/python
#
# Copyright (c) 2008--2013 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#
# This test tries to make a connection to a database that doesn't exist.
# It catches the exception and sends the traceback, but the DB password should
# be censored.
# Run the test and look into the email.

from spacewalk.server import rhnSQL
from spacewalk.common.rhnConfig import initCFG
from spacewalk.common.rhnTB import Traceback

initCFG('server.xmlrpc')

try:
    rhnSQL.initDB("rhnuser/rhnuser@webde")
except:
    Traceback('test_censored_db_password', mail=1)
   070701000001EE000081B40000000000000000000000016290A0C1000003F1000000000000000000000000000000000000003000000000spacewalk-backend/server/test/test_dcoracle2.py   #
# Copyright (c) 2008--2016 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#
import sys
from spacewalk.server import rhnSQL

if len(sys.argv) != 2:
    print("Error: no connection string")
    sys.exit(1)

rhnSQL.initDB(sys.argv[1])

ids = [1, 2, 3]
values = [11, 22, 33]
foo = ['', '', '']

h = rhnSQL.prepare("insert into misatest (id, val) values (:id, :val)")
try:
    h.executemany(id=ids, val=values, foo=foo)
except:
    rhnSQL.rollback()
    raise

rhnSQL.commit()
   070701000001EF000081B40000000000000000000000016290A0C100000691000000000000000000000000000000000000003800000000spacewalk-backend/server/test/test_delta_computation.py   #
# Copyright (c) 2008--2016 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#
from spacewalk.server.rhnServer import server_packages

unzip1 = ('unzip',    '1.1', '2', '')
unzip2 = ('unzip',    '1.2', '1', '')

abiword1 = ('abiword',  '1.0', '2', '1')
abiword2 = ('abiword',  '2.0', '1', '')

kernel1 = ('kernel',   '2.4', '1', '')
kernel2 = ('kernel',   '2.4', '2', '1')
kernel3 = ('kernel',   '2.4', '3', '1')

aalib1 = ('aalib',    '1.0', '1', '')
aalib2 = ('aalib',    '1.1', '2', '')

quota = ('quota',    '1.2', '3', '1')

rpm = ('rpm',      '4.1', '1', '')

perl1 = ('perl',     '1.1', '1', '')
perl2 = ('perl',     '1.01', '1', '')

list1 = [
    abiword2,
    abiword1,
    kernel2,
    kernel1,
    aalib2,
    quota,
    rpm,
    perl1,
]

list2 = [
    unzip1,
    unzip2,
    kernel3,
    aalib1,
    rpm,
    perl2,
]

i, r = server_packages.package_delta(list1, list2)
print(("Install set:  ", i))
print(("Remove set:   ", r))

assert i == [aalib1, kernel3, unzip1, unzip2], "Invalid install set %s" % i
assert r == [aalib2, abiword1, abiword2, kernel1, kernel2, quota], "Invalid remove set %s" % r

print("All assertions passed")
   070701000001F0000081FD0000000000000000000000016290A0C10000BC06000000000000000000000000000000000000003A00000000spacewalk-backend/server/test/test_errata_import_webqa.py #!/usr/bin/python
#
# Copyright (c) 2008--2016 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#

try:
    #  python 2
    import xmlrpclib
except ImportError:
    #  python3
    import xmlrpc.client as xmlrpclib
import unittest

SERVER = 'scripts.back-webqa.redhat.com'


class ErrataImportTests(unittest.TestCase):

    def testUtf8Erratum(self):
        global SERVER

        # To actually make this one repeatable, need to munge the
        # erratum_hash['advisory_name'] or erratum_hash['revision'] fields...

        erratum_hash = {'advisory_name': 'RHSA-2007:0008',
                        'bugs': [{'id': 218055,
                                  'status': 'ON_QA',
                                  'summary': 'CVE-2006-6107 D-Bus denial of service'}],
                        'crossref': '',
                        'cve': 'CVE-2006-6107',
                        'description': 'D-BUS is a system for sending messages between applications. It is used\r\nboth for the systemwide message bus service, and as a\r\nper-user-login-session messaging facility.\r\n\r\nKimmo H\xc3\xa4m\xc3\xa4l\xc3\xa4inen discovered a flaw in the way D-BUS processes certain\r\nmessages. It is possible for a local unprivileged D-BUS process to disrupt\r\nthe ability of another D-BUS process to receive messages. (CVE-2006-6107)\r\n\r\nUsers of dbus are advised to upgrade to these updated packages, which\r\ncontain backported patches to correct this issue.',
                        'errata_files': [{'ftppath': '/ftp/pub/redhat/linux/updates/enterprise/4Desktop/en/os/SRPMS/dbus-0.22-12.EL.8.src.rpm',
                                          'checksum_type': 'md5',
                                          'checksum': '379fdd3f9afb34124fa9b88deb440e3f',
                                          'rhn_channel': ['rh-x86_64-desktop-4',
                                                          'rh-i386-desktop-4']},
                                         {'ftppath': '/ftp/pub/redhat/linux/updates/enterprise/4Desktop/en/os/x86_64/dbus-glib-0.22-12.EL.8.x86_64.rpm',
                                          'checksum_type': 'md5',
                                          'checksum': '8c41138bbf9127bbb2d799f566ce3a8a',
                                          'rhn_channel': ['rh-x86_64-desktop-4']},
                                         {'ftppath': '/ftp/pub/redhat/linux/updates/enterprise/4Desktop/en/os/x86_64/dbus-0.22-12.EL.8.x86_64.rpm',
                                          'checksum_type': 'md5',
                                          'checksum': 'ac83105ce8b120ec537a3ea54da1e37d',
                                          'rhn_channel': ['rh-x86_64-desktop-4']},
                                         {'ftppath': '/ftp/pub/redhat/linux/updates/enterprise/4Desktop/en/os/x86_64/dbus-python-0.22-12.EL.8.x86_64.rpm',
                                          'checksum_type': 'md5',
                                          'checksum': '920cf9a273c521118e374230690a3df6',
                                          'rhn_channel': ['rh-x86_64-desktop-4']},
                                         {'ftppath': '/ftp/pub/redhat/linux/updates/enterprise/4Desktop/en/os/x86_64/dbus-x11-0.22-12.EL.8.x86_64.rpm',
                                          'checksum_type': 'md5',
                                          'checksum': '847b2400eee82a36e3542b2f4f2d4947',
                                          'rhn_channel': ['rh-x86_64-desktop-4']},
                                         {'ftppath': '/ftp/pub/redhat/linux/updates/enterprise/4Desktop/en/os/x86_64/dbus-devel-0.22-12.EL.8.x86_64.rpm',
                                          'checksum_type': 'md5',
                                          'checksum': '1b248af405670382e31b06c4fa52fa36',
                                          'rhn_channel': ['rh-x86_64-desktop-4']},
                                         {'ftppath': '/ftp/pub/redhat/linux/updates/enterprise/4Desktop/en/os/x86_64/dbus-glib-0.22-12.EL.8.i386.rpm',
                                          'checksum_type': 'md5',
                                          'checksum': '5ba2eefce27c72524c7c5cdb1b6e2224',
                                          'rhn_channel': ['rh-x86_64-desktop-4']},
                                         {'ftppath': '/ftp/pub/redhat/linux/updates/enterprise/4Desktop/en/os/x86_64/dbus-0.22-12.EL.8.i386.rpm',
                                          'checksum_type': 'md5',
                                          'checksum': 'e81002d1ca5787e89458cd7d5bb04dd5',
                                          'rhn_channel': ['rh-x86_64-desktop-4']},
                                         {'ftppath': '/ftp/pub/redhat/linux/updates/enterprise/4Desktop/en/os/i386/dbus-devel-0.22-12.EL.8.i386.rpm',
                                          'checksum_type': 'md5',
                                          'checksum': 'b8a46001a416b2e36f5da1e6868c91ec',
                                          'rhn_channel': ['rh-i386-desktop-4']},
                                         {'ftppath': '/ftp/pub/redhat/linux/updates/enterprise/4Desktop/en/os/i386/dbus-python-0.22-12.EL.8.i386.rpm',
                                          'checksum_type': 'md5',
                                          'checksum': '8e5eadeb5be39e139885336011551656',
                                          'rhn_channel': ['rh-i386-desktop-4']},
                                         {'ftppath': '/ftp/pub/redhat/linux/updates/enterprise/4Desktop/en/os/i386/dbus-x11-0.22-12.EL.8.i386.rpm',
                                          'checksum_type': 'md5',
                                          'checksum': '2f9d064981b12a7f4cb8cf74d6142de5',
                                          'rhn_channel': ['rh-i386-desktop-4']},
                                         {'ftppath': '/ftp/pub/redhat/linux/updates/enterprise/4Desktop/en/os/i386/dbus-glib-0.22-12.EL.8.i386.rpm',
                                          'checksum_type': 'md5',
                                          'checksum': '5ba2eefce27c72524c7c5cdb1b6e2224',
                                          'rhn_channel': ['rh-i386-desktop-4']},
                                         {'ftppath': '/ftp/pub/redhat/linux/updates/enterprise/4Desktop/en/os/i386/dbus-0.22-12.EL.8.i386.rpm',
                                          'checksum_type': 'md5',
                                          'checksum': 'e81002d1ca5787e89458cd7d5bb04dd5',
                                          'rhn_channel': ['rh-i386-desktop-4']},
                                         {'ftppath': '/ftp/pub/redhat/linux/updates/enterprise/4WS/en/os/SRPMS/dbus-0.22-12.EL.8.src.rpm',
                                          'checksum_type': 'md5',
                                          'checksum': '379fdd3f9afb34124fa9b88deb440e3f',
                                          'rhn_channel': ['rhel-x86_64-ws-4',
                                                          'rhel-i386-ws-4',
                                                          'rhel-ia64-ws-4']},
                                         {'ftppath': '/ftp/pub/redhat/linux/updates/enterprise/4WS/en/os/x86_64/dbus-glib-0.22-12.EL.8.x86_64.rpm',
                                          'checksum_type': 'md5',
                                          'checksum': '8c41138bbf9127bbb2d799f566ce3a8a',
                                          'rhn_channel': ['rhel-x86_64-ws-4']},
                                         {'ftppath': '/ftp/pub/redhat/linux/updates/enterprise/4WS/en/os/x86_64/dbus-0.22-12.EL.8.x86_64.rpm',
                                          'checksum_type': 'md5',
                                          'checksum': 'ac83105ce8b120ec537a3ea54da1e37d',
                                          'rhn_channel': ['rhel-x86_64-ws-4']},
                                         {'ftppath': '/ftp/pub/redhat/linux/updates/enterprise/4WS/en/os/x86_64/dbus-python-0.22-12.EL.8.x86_64.rpm',
                                          'checksum_type': 'md5',
                                          'checksum': '920cf9a273c521118e374230690a3df6',
                                          'rhn_channel': ['rhel-x86_64-ws-4']},
                                         {'ftppath': '/ftp/pub/redhat/linux/updates/enterprise/4WS/en/os/x86_64/dbus-x11-0.22-12.EL.8.x86_64.rpm',
                                          'checksum_type': 'md5',
                                          'checksum': '847b2400eee82a36e3542b2f4f2d4947',
                                          'rhn_channel': ['rhel-x86_64-ws-4']},
                                         {'ftppath': '/ftp/pub/redhat/linux/updates/enterprise/4WS/en/os/x86_64/dbus-devel-0.22-12.EL.8.x86_64.rpm',
                                          'checksum_type': 'md5',
                                          'checksum': '1b248af405670382e31b06c4fa52fa36',
                                          'rhn_channel': ['rhel-x86_64-ws-4']},
                                         {'ftppath': '/ftp/pub/redhat/linux/updates/enterprise/4WS/en/os/x86_64/dbus-glib-0.22-12.EL.8.i386.rpm',
                                          'checksum_type': 'md5',
                                          'checksum': '5ba2eefce27c72524c7c5cdb1b6e2224',
                                          'rhn_channel': ['rhel-x86_64-ws-4']},
                                         {'ftppath': '/ftp/pub/redhat/linux/updates/enterprise/4WS/en/os/x86_64/dbus-0.22-12.EL.8.i386.rpm',
                                          'checksum_type': 'md5',
                                          'checksum': 'e81002d1ca5787e89458cd7d5bb04dd5',
                                          'rhn_channel': ['rhel-x86_64-ws-4']},
                                         {'ftppath': '/ftp/pub/redhat/linux/updates/enterprise/4WS/en/os/ia64/dbus-glib-0.22-12.EL.8.ia64.rpm',
                                          'checksum_type': 'md5',
                                          'checksum': 'b07996f3ebf2331958a1adfd230302cc',
                                          'rhn_channel': ['rhel-ia64-ws-4']},
                                         {'ftppath': '/ftp/pub/redhat/linux/updates/enterprise/4WS/en/os/ia64/dbus-python-0.22-12.EL.8.ia64.rpm',
                                          'checksum_type': 'md5',
                                          'checksum': 'c7406fea694e12487aa8213142ed66ea',
                                          'rhn_channel': ['rhel-ia64-ws-4']},
                                         {'ftppath': '/ftp/pub/redhat/linux/updates/enterprise/4WS/en/os/ia64/dbus-x11-0.22-12.EL.8.ia64.rpm',
                                          'checksum_type': 'md5',
                                          'checksum': '7097ef62d6917170005f000a14a54fe7',
                                          'rhn_channel': ['rhel-ia64-ws-4']},
                                         {'ftppath': '/ftp/pub/redhat/linux/updates/enterprise/4WS/en/os/ia64/dbus-devel-0.22-12.EL.8.ia64.rpm',
                                          'checksum_type': 'md5',
                                          'checksum': 'a294a24161855aa73d4a9d83e4f3a107',
                                          'rhn_channel': ['rhel-ia64-ws-4']},
                                         {'ftppath': '/ftp/pub/redhat/linux/updates/enterprise/4WS/en/os/ia64/dbus-0.22-12.EL.8.ia64.rpm',
                                          'checksum_type': 'md5',
                                          'checksum': 'dd584d93cd98e8ebc3331e5c5d938b87',
                                          'rhn_channel': ['rhel-ia64-ws-4']},
                                         {'ftppath': '/ftp/pub/redhat/linux/updates/enterprise/4WS/en/os/ia64/dbus-glib-0.22-12.EL.8.i386.rpm',
                                          'checksum_type': 'md5',
                                          'checksum': '5ba2eefce27c72524c7c5cdb1b6e2224',
                                          'rhn_channel': ['rhel-ia64-ws-4']},
                                         {'ftppath': '/ftp/pub/redhat/linux/updates/enterprise/4WS/en/os/ia64/dbus-0.22-12.EL.8.i386.rpm',
                                          'checksum_type': 'md5',
                                          'checksum': 'e81002d1ca5787e89458cd7d5bb04dd5',
                                          'rhn_channel': ['rhel-ia64-ws-4']},
                                         {'ftppath': '/ftp/pub/redhat/linux/updates/enterprise/4WS/en/os/i386/dbus-devel-0.22-12.EL.8.i386.rpm',
                                          'checksum_type': 'md5',
                                          'checksum': 'b8a46001a416b2e36f5da1e6868c91ec',
                                          'rhn_channel': ['rhel-i386-ws-4']},
                                         {'ftppath': '/ftp/pub/redhat/linux/updates/enterprise/4WS/en/os/i386/dbus-python-0.22-12.EL.8.i386.rpm',
                                          'checksum_type': 'md5',
                                          'checksum': '8e5eadeb5be39e139885336011551656',
                                          'rhn_channel': ['rhel-i386-ws-4']},
                                         {'ftppath': '/ftp/pub/redhat/linux/updates/enterprise/4WS/en/os/i386/dbus-x11-0.22-12.EL.8.i386.rpm',
                                          'checksum_type': 'md5',
                                          'checksum': '2f9d064981b12a7f4cb8cf74d6142de5',
                                          'rhn_channel': ['rhel-i386-ws-4']},
                                         {'ftppath': '/ftp/pub/redhat/linux/updates/enterprise/4WS/en/os/i386/dbus-glib-0.22-12.EL.8.i386.rpm',
                                          'checksum_type': 'md5',
                                          'checksum': '5ba2eefce27c72524c7c5cdb1b6e2224',
                                          'rhn_channel': ['rhel-i386-ws-4']},
                                         {'ftppath': '/ftp/pub/redhat/linux/updates/enterprise/4WS/en/os/i386/dbus-0.22-12.EL.8.i386.rpm',
                                          'checksum_type': 'md5',
                                          'checksum': 'e81002d1ca5787e89458cd7d5bb04dd5',
                                          'rhn_channel': ['rhel-i386-ws-4']},
                                         {'ftppath': '/ftp/pub/redhat/linux/updates/enterprise/4ES/en/os/SRPMS/dbus-0.22-12.EL.8.src.rpm',
                                          'checksum_type': 'md5',
                                          'checksum': '379fdd3f9afb34124fa9b88deb440e3f',
                                          'rhn_channel': ['rhel-x86_64-es-4',
                                                          'rhel-i386-es-4',
                                                          'rhel-ia64-es-4']},
                                         {'ftppath': '/ftp/pub/redhat/linux/updates/enterprise/4ES/en/os/x86_64/dbus-glib-0.22-12.EL.8.x86_64.rpm',
                                          'checksum_type': 'md5',
                                          'checksum': '8c41138bbf9127bbb2d799f566ce3a8a',
                                          'rhn_channel': ['rhel-x86_64-es-4']},
                                         {'ftppath': '/ftp/pub/redhat/linux/updates/enterprise/4ES/en/os/x86_64/dbus-0.22-12.EL.8.x86_64.rpm',
                                          'checksum_type': 'md5',
                                          'checksum': 'ac83105ce8b120ec537a3ea54da1e37d',
                                          'rhn_channel': ['rhel-x86_64-es-4']},
                                         {'ftppath': '/ftp/pub/redhat/linux/updates/enterprise/4ES/en/os/x86_64/dbus-python-0.22-12.EL.8.x86_64.rpm',
                                          'checksum_type': 'md5',
                                          'checksum': '920cf9a273c521118e374230690a3df6',
                                          'rhn_channel': ['rhel-x86_64-es-4']},
                                         {'ftppath': '/ftp/pub/redhat/linux/updates/enterprise/4ES/en/os/x86_64/dbus-x11-0.22-12.EL.8.x86_64.rpm',
                                          'checksum_type': 'md5',
                                          'checksum': '847b2400eee82a36e3542b2f4f2d4947',
                                          'rhn_channel': ['rhel-x86_64-es-4']},
                                         {'ftppath': '/ftp/pub/redhat/linux/updates/enterprise/4ES/en/os/x86_64/dbus-devel-0.22-12.EL.8.x86_64.rpm',
                                          'checksum_type': 'md5',
                                          'checksum': '1b248af405670382e31b06c4fa52fa36',
                                          'rhn_channel': ['rhel-x86_64-es-4']},
                                         {'ftppath': '/ftp/pub/redhat/linux/updates/enterprise/4ES/en/os/x86_64/dbus-glib-0.22-12.EL.8.i386.rpm',
                                          'checksum_type': 'md5',
                                          'checksum': '5ba2eefce27c72524c7c5cdb1b6e2224',
                                          'rhn_channel': ['rhel-x86_64-es-4']},
                                         {'ftppath': '/ftp/pub/redhat/linux/updates/enterprise/4ES/en/os/x86_64/dbus-0.22-12.EL.8.i386.rpm',
                                          'checksum_type': 'md5',
                                          'checksum': 'e81002d1ca5787e89458cd7d5bb04dd5',
                                          'rhn_channel': ['rhel-x86_64-es-4']},
                                         {'ftppath': '/ftp/pub/redhat/linux/updates/enterprise/4ES/en/os/ia64/dbus-glib-0.22-12.EL.8.ia64.rpm',
                                          'checksum_type': 'md5',
                                          'checksum': 'b07996f3ebf2331958a1adfd230302cc',
                                          'rhn_channel': ['rhel-ia64-es-4']},
                                         {'ftppath': '/ftp/pub/redhat/linux/updates/enterprise/4ES/en/os/ia64/dbus-python-0.22-12.EL.8.ia64.rpm',
                                          'checksum_type': 'md5',
                                          'checksum': 'c7406fea694e12487aa8213142ed66ea',
                                          'rhn_channel': ['rhel-ia64-es-4']},
                                         {'ftppath': '/ftp/pub/redhat/linux/updates/enterprise/4ES/en/os/ia64/dbus-x11-0.22-12.EL.8.ia64.rpm',
                                          'checksum_type': 'md5',
                                          'checksum': '7097ef62d6917170005f000a14a54fe7',
                                          'rhn_channel': ['rhel-ia64-es-4']},
                                         {'ftppath': '/ftp/pub/redhat/linux/updates/enterprise/4ES/en/os/ia64/dbus-devel-0.22-12.EL.8.ia64.rpm',
                                          'checksum_type': 'md5',
                                          'checksum': 'a294a24161855aa73d4a9d83e4f3a107',
                                          'rhn_channel': ['rhel-ia64-es-4']},
                                         {'ftppath': '/ftp/pub/redhat/linux/updates/enterprise/4ES/en/os/ia64/dbus-0.22-12.EL.8.ia64.rpm',
                                          'checksum_type': 'md5',
                                          'checksum': 'dd584d93cd98e8ebc3331e5c5d938b87',
                                          'rhn_channel': ['rhel-ia64-es-4']},
                                         {'ftppath': '/ftp/pub/redhat/linux/updates/enterprise/4ES/en/os/ia64/dbus-glib-0.22-12.EL.8.i386.rpm',
                                          'checksum_type': 'md5',
                                          'checksum': '5ba2eefce27c72524c7c5cdb1b6e2224',
                                          'rhn_channel': ['rhel-ia64-es-4']},
                                         {'ftppath': '/ftp/pub/redhat/linux/updates/enterprise/4ES/en/os/ia64/dbus-0.22-12.EL.8.i386.rpm',
                                          'checksum_type': 'md5',
                                          'checksum': 'e81002d1ca5787e89458cd7d5bb04dd5',
                                          'rhn_channel': ['rhel-ia64-es-4']},
                                         {'ftppath': '/ftp/pub/redhat/linux/updates/enterprise/4ES/en/os/i386/dbus-devel-0.22-12.EL.8.i386.rpm',
                                          'checksum_type': 'md5',
                                          'checksum': 'b8a46001a416b2e36f5da1e6868c91ec',
                                          'rhn_channel': ['rhel-i386-es-4']},
                                         {'ftppath': '/ftp/pub/redhat/linux/updates/enterprise/4ES/en/os/i386/dbus-python-0.22-12.EL.8.i386.rpm',
                                          'checksum_type': 'md5',
                                          'checksum': '8e5eadeb5be39e139885336011551656',
                                          'rhn_channel': ['rhel-i386-es-4']},
                                         {'ftppath': '/ftp/pub/redhat/linux/updates/enterprise/4ES/en/os/i386/dbus-x11-0.22-12.EL.8.i386.rpm',
                                          'checksum_type': 'md5',
                                          'checksum': '2f9d064981b12a7f4cb8cf74d6142de5',
                                          'rhn_channel': ['rhel-i386-es-4']},
                                         {'ftppath': '/ftp/pub/redhat/linux/updates/enterprise/4ES/en/os/i386/dbus-glib-0.22-12.EL.8.i386.rpm',
                                          'checksum_type': 'md5',
                                          'checksum': '5ba2eefce27c72524c7c5cdb1b6e2224',
                                          'rhn_channel': ['rhel-i386-es-4']},
                                         {'ftppath': '/ftp/pub/redhat/linux/updates/enterprise/4ES/en/os/i386/dbus-0.22-12.EL.8.i386.rpm',
                                          'checksum_type': 'md5',
                                          'checksum': 'e81002d1ca5787e89458cd7d5bb04dd5',
                                          'rhn_channel': ['rhel-i386-es-4']},
                                         {'ftppath': '/ftp/pub/redhat/linux/updates/enterprise/4AS/en/os/SRPMS/dbus-0.22-12.EL.8.src.rpm',
                                          'checksum_type': 'md5',
                                          'checksum': '379fdd3f9afb34124fa9b88deb440e3f',
                                          'rhn_channel': ['rhel-i386-as-4',
                                                          'rhel-ia64-as-4',
                                                          'rhel-ppc-as-4',
                                                          'rhel-s390x-as-4',
                                                          'rhel-s390-as-4',
                                                          'rhel-x86_64-as-4']},
                                         {'ftppath': '/ftp/pub/redhat/linux/updates/enterprise/4AS/en/os/ppc/dbus-devel-0.22-12.EL.8.ppc.rpm',
                                          'checksum_type': 'md5',
                                          'checksum': 'd4adf9454e5303fdcaab8c43805a212c',
                                          'rhn_channel': ['rhel-ppc-as-4']},
                                         {'ftppath': '/ftp/pub/redhat/linux/updates/enterprise/4AS/en/os/ppc/dbus-0.22-12.EL.8.ppc.rpm',
                                          'checksum_type': 'md5',
                                          'checksum': 'acaed9d78ce157ef8b15e19692c832c1',
                                          'rhn_channel': ['rhel-ppc-as-4']},
                                         {'ftppath': '/ftp/pub/redhat/linux/updates/enterprise/4AS/en/os/ppc/dbus-python-0.22-12.EL.8.ppc.rpm',
                                          'checksum_type': 'md5',
                                          'checksum': '60c70fee76a3a98c6cf46629901b2ed3',
                                          'rhn_channel': ['rhel-ppc-as-4']},
                                         {'ftppath': '/ftp/pub/redhat/linux/updates/enterprise/4AS/en/os/ppc/dbus-glib-0.22-12.EL.8.ppc.rpm',
                                          'checksum_type': 'md5',
                                          'checksum': '1a66a5a36be6167dff2558866ab34d9c',
                                          'rhn_channel': ['rhel-ppc-as-4']},
                                         {'ftppath': '/ftp/pub/redhat/linux/updates/enterprise/4AS/en/os/ppc/dbus-x11-0.22-12.EL.8.ppc.rpm',
                                          'checksum_type': 'md5',
                                          'checksum': '02a34c40ade9386f829e0bbf12dc8036',
                                          'rhn_channel': ['rhel-ppc-as-4']},
                                         {'ftppath': '/ftp/pub/redhat/linux/updates/enterprise/4AS/en/os/ppc/dbus-0.22-12.EL.8.ppc64.rpm',
                                          'checksum_type': 'md5',
                                          'checksum': '87db84625d2e27f3b0c168e2f1e34a18',
                                          'rhn_channel': ['rhel-ppc-as-4']},
                                         {'ftppath': '/ftp/pub/redhat/linux/updates/enterprise/4AS/en/os/ppc/dbus-glib-0.22-12.EL.8.ppc64.rpm',
                                          'checksum_type': 'md5',
                                          'checksum': 'e28bef04fa98091747deef3b121fec18',
                                          'rhn_channel': ['rhel-ppc-as-4']},
                                         {'ftppath': '/ftp/pub/redhat/linux/updates/enterprise/4AS/en/os/s390x/dbus-python-0.22-12.EL.8.s390x.rpm',
                                          'checksum_type': 'md5',
                                          'checksum': '6afc6054de436384a71951c4ca7c1083',
                                          'rhn_channel': ['rhel-s390x-as-4']},
                                         {'ftppath': '/ftp/pub/redhat/linux/updates/enterprise/4AS/en/os/s390x/dbus-glib-0.22-12.EL.8.s390x.rpm',
                                          'checksum_type': 'md5',
                                          'checksum': '5608a1394e595ee7560bc2080b54524e',
                                          'rhn_channel': ['rhel-s390x-as-4']},
                                         {'ftppath': '/ftp/pub/redhat/linux/updates/enterprise/4AS/en/os/s390x/dbus-0.22-12.EL.8.s390x.rpm',
                                          'checksum_type': 'md5',
                                          'checksum': '38a9c1c9838f1fc0ffe7e8c62259a4e9',
                                          'rhn_channel': ['rhel-s390x-as-4']},
                                         {'ftppath': '/ftp/pub/redhat/linux/updates/enterprise/4AS/en/os/s390x/dbus-devel-0.22-12.EL.8.s390x.rpm',
                                          'checksum_type': 'md5',
                                          'checksum': 'd17fd60137f8fc012826cb5c2fb1c798',
                                          'rhn_channel': ['rhel-s390x-as-4']},
                                         {'ftppath': '/ftp/pub/redhat/linux/updates/enterprise/4AS/en/os/s390x/dbus-x11-0.22-12.EL.8.s390x.rpm',
                                          'checksum_type': 'md5',
                                          'checksum': 'aa63335eff72a01edf6c3c8709257100',
                                          'rhn_channel': ['rhel-s390x-as-4']},
                                         {'ftppath': '/ftp/pub/redhat/linux/updates/enterprise/4AS/en/os/s390x/dbus-0.22-12.EL.8.s390.rpm',
                                          'checksum_type': 'md5',
                                          'checksum': '2aec70890676846f00be1fd5ed9f4a9c',
                                          'rhn_channel': ['rhel-s390x-as-4']},
                                         {'ftppath': '/ftp/pub/redhat/linux/updates/enterprise/4AS/en/os/s390x/dbus-glib-0.22-12.EL.8.s390.rpm',
                                          'checksum_type': 'md5',
                                          'checksum': '79ebed9e812ce4760fcbd4bb7fa8efb7',
                                          'rhn_channel': ['rhel-s390x-as-4']},
                                         {'ftppath': '/ftp/pub/redhat/linux/updates/enterprise/4AS/en/os/x86_64/dbus-glib-0.22-12.EL.8.x86_64.rpm',
                                          'checksum_type': 'md5',
                                          'checksum': '8c41138bbf9127bbb2d799f566ce3a8a',
                                          'rhn_channel': ['rhel-x86_64-as-4']},
                                         {'ftppath': '/ftp/pub/redhat/linux/updates/enterprise/4AS/en/os/x86_64/dbus-0.22-12.EL.8.x86_64.rpm',
                                          'checksum_type': 'md5',
                                          'checksum': 'ac83105ce8b120ec537a3ea54da1e37d',
                                          'rhn_channel': ['rhel-x86_64-as-4']},
                                         {'ftppath': '/ftp/pub/redhat/linux/updates/enterprise/4AS/en/os/x86_64/dbus-python-0.22-12.EL.8.x86_64.rpm',
                                          'checksum_type': 'md5',
                                          'checksum': '920cf9a273c521118e374230690a3df6',
                                          'rhn_channel': ['rhel-x86_64-as-4']},
                                         {'ftppath': '/ftp/pub/redhat/linux/updates/enterprise/4AS/en/os/x86_64/dbus-x11-0.22-12.EL.8.x86_64.rpm',
                                          'checksum_type': 'md5',
                                          'checksum': '847b2400eee82a36e3542b2f4f2d4947',
                                          'rhn_channel': ['rhel-x86_64-as-4']},
                                         {'ftppath': '/ftp/pub/redhat/linux/updates/enterprise/4AS/en/os/x86_64/dbus-devel-0.22-12.EL.8.x86_64.rpm',
                                          'checksum_type': 'md5',
                                          'checksum': '1b248af405670382e31b06c4fa52fa36',
                                          'rhn_channel': ['rhel-x86_64-as-4']},
                                         {'ftppath': '/ftp/pub/redhat/linux/updates/enterprise/4AS/en/os/x86_64/dbus-glib-0.22-12.EL.8.i386.rpm',
                                          'checksum_type': 'md5',
                                          'checksum': '5ba2eefce27c72524c7c5cdb1b6e2224',
                                          'rhn_channel': ['rhel-x86_64-as-4']},
                                         {'ftppath': '/ftp/pub/redhat/linux/updates/enterprise/4AS/en/os/x86_64/dbus-0.22-12.EL.8.i386.rpm',
                                          'checksum_type': 'md5',
                                          'checksum': 'e81002d1ca5787e89458cd7d5bb04dd5',
                                          'rhn_channel': ['rhel-x86_64-as-4']},
                                         {'ftppath': '/ftp/pub/redhat/linux/updates/enterprise/4AS/en/os/s390/dbus-python-0.22-12.EL.8.s390.rpm',
                                          'checksum_type': 'md5',
                                          'checksum': 'f1be5d2e04c8e0698caddc9d0af40ab2',
                                          'rhn_channel': ['rhel-s390-as-4']},
                                         {'ftppath': '/ftp/pub/redhat/linux/updates/enterprise/4AS/en/os/s390/dbus-x11-0.22-12.EL.8.s390.rpm',
                                          'checksum_type': 'md5',
                                          'checksum': '11ca54506fedf365fab62e025d7b742b',
                                          'rhn_channel': ['rhel-s390-as-4']},
                                         {'ftppath': '/ftp/pub/redhat/linux/updates/enterprise/4AS/en/os/s390/dbus-0.22-12.EL.8.s390.rpm',
                                          'checksum_type': 'md5',
                                          'checksum': '2aec70890676846f00be1fd5ed9f4a9c',
                                          'rhn_channel': ['rhel-s390-as-4']},
                                         {'ftppath': '/ftp/pub/redhat/linux/updates/enterprise/4AS/en/os/s390/dbus-glib-0.22-12.EL.8.s390.rpm',
                                          'checksum_type': 'md5',
                                          'checksum': '79ebed9e812ce4760fcbd4bb7fa8efb7',
                                          'rhn_channel': ['rhel-s390-as-4']},
                                         {'ftppath': '/ftp/pub/redhat/linux/updates/enterprise/4AS/en/os/s390/dbus-devel-0.22-12.EL.8.s390.rpm',
                                          'checksum_type': 'md5',
                                          'checksum': 'ba507082ec7e13a57cbf9d2addf18e9d',
                                          'rhn_channel': ['rhel-s390-as-4']},
                                         {'ftppath': '/ftp/pub/redhat/linux/updates/enterprise/4AS/en/os/ia64/dbus-glib-0.22-12.EL.8.ia64.rpm',
                                          'checksum_type': 'md5',
                                          'checksum': 'b07996f3ebf2331958a1adfd230302cc',
                                          'rhn_channel': ['rhel-ia64-as-4']},
                                         {'ftppath': '/ftp/pub/redhat/linux/updates/enterprise/4AS/en/os/ia64/dbus-python-0.22-12.EL.8.ia64.rpm',
                                          'checksum_type': 'md5',
                                          'checksum': 'c7406fea694e12487aa8213142ed66ea',
                                          'rhn_channel': ['rhel-ia64-as-4']},
                                         {'ftppath': '/ftp/pub/redhat/linux/updates/enterprise/4AS/en/os/ia64/dbus-x11-0.22-12.EL.8.ia64.rpm',
                                          'checksum_type': 'md5',
                                          'checksum': '7097ef62d6917170005f000a14a54fe7',
                                          'rhn_channel': ['rhel-ia64-as-4']},
                                         {'ftppath': '/ftp/pub/redhat/linux/updates/enterprise/4AS/en/os/ia64/dbus-devel-0.22-12.EL.8.ia64.rpm',
                                          'checksum_type': 'md5',
                                          'checksum': 'a294a24161855aa73d4a9d83e4f3a107',
                                          'rhn_channel': ['rhel-ia64-as-4']},
                                         {'ftppath': '/ftp/pub/redhat/linux/updates/enterprise/4AS/en/os/ia64/dbus-0.22-12.EL.8.ia64.rpm',
                                          'checksum_type': 'md5',
                                          'checksum': 'dd584d93cd98e8ebc3331e5c5d938b87',
                                          'rhn_channel': ['rhel-ia64-as-4']},
                                         {'ftppath': '/ftp/pub/redhat/linux/updates/enterprise/4AS/en/os/ia64/dbus-glib-0.22-12.EL.8.i386.rpm',
                                          'checksum_type': 'md5',
                                          'checksum': '5ba2eefce27c72524c7c5cdb1b6e2224',
                                          'rhn_channel': ['rhel-ia64-as-4']},
                                         {'ftppath': '/ftp/pub/redhat/linux/updates/enterprise/4AS/en/os/ia64/dbus-0.22-12.EL.8.i386.rpm',
                                          'checksum_type': 'md5',
                                          'checksum': 'e81002d1ca5787e89458cd7d5bb04dd5',
                                          'rhn_channel': ['rhel-ia64-as-4']},
                                         {'ftppath': '/ftp/pub/redhat/linux/updates/enterprise/4AS/en/os/i386/dbus-devel-0.22-12.EL.8.i386.rpm',
                                          'checksum_type': 'md5',
                                          'checksum': 'b8a46001a416b2e36f5da1e6868c91ec',
                                          'rhn_channel': ['rhel-i386-as-4']},
                                         {'ftppath': '/ftp/pub/redhat/linux/updates/enterprise/4AS/en/os/i386/dbus-python-0.22-12.EL.8.i386.rpm',
                                          'checksum_type': 'md5',
                                          'checksum': '8e5eadeb5be39e139885336011551656',
                                          'rhn_channel': ['rhel-i386-as-4']},
                                         {'ftppath': '/ftp/pub/redhat/linux/updates/enterprise/4AS/en/os/i386/dbus-x11-0.22-12.EL.8.i386.rpm',
                                          'checksum_type': 'md5',
                                          'checksum': '2f9d064981b12a7f4cb8cf74d6142de5',
                                          'rhn_channel': ['rhel-i386-as-4']},
                                         {'ftppath': '/ftp/pub/redhat/linux/updates/enterprise/4AS/en/os/i386/dbus-glib-0.22-12.EL.8.i386.rpm',
                                          'checksum_type': 'md5',
                                          'checksum': '5ba2eefce27c72524c7c5cdb1b6e2224',
                                          'rhn_channel': ['rhel-i386-as-4']},
                                         {'ftppath': '/ftp/pub/redhat/linux/updates/enterprise/4AS/en/os/i386/dbus-0.22-12.EL.8.i386.rpm',
                                          'checksum_type': 'md5',
                                          'checksum': 'e81002d1ca5787e89458cd7d5bb04dd5',
                                          'rhn_channel': ['rhel-i386-as-4']}],
                        'errata_type': 'RHSA',
                        'erratum_deployed_by': 'jorris@redhat.com',
                        'issue_date': '2007-02-07',
                        'keywords': '',
                        'multilib': '',
                        'obsoletes': '',
                        'oval': '<?xml version="1.0" encoding="UTF-8"?>\n\n<oval_definitions xmlns="http://oval.mitre.org/XMLSchema/oval-definitions-5" xmlns:oval="http://oval.mitre.org/XMLSchema/oval-common-5" xmlns:oval-def="http://oval.mitre.org/XMLSchema/oval-definitions-5" xmlns:unix-def="http://oval.mitre.org/XMLSchema/oval-definitions-5#unix" xmlns:red-def="http://oval.mitre.org/XMLSchema/oval-definitions-5#linux" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://oval.mitre.org/XMLSchema/oval-common-5 oval-common-schema.xsd http://oval.mitre.org/XMLSchema/oval-definitions-5 oval-definitions-schema.xsd http://oval.mitre.org/XMLSchema/oval-definitions-5#unix unix-definitions-schema.xsd http://oval.mitre.org/XMLSchema/oval-definitions-5#linux linux-definitions-schema.xsd">\n  <generator>\n    <oval:product_name>Red Hat Errata System</oval:product_name>\n    <oval:schema_version>5.2</oval:schema_version>\n    <oval:timestamp>2007-02-07T12:21:43</oval:timestamp>\n  </generator>\n\n  <definitions>\n    <definition id="oval:com.redhat.rhsa:def:20070008" version="201" class="patch">\n      <metadata>\n        <title>RHSA-2007:0008: dbus security update (Moderate)\n    </title>\n    <affected family="unix">\n            <platform>Red Hat Enterprise Linux 4</platform>\n             </affected>\n        <reference source="RHSA" ref_id="RHSA-2007:0008-00" ref_url="https://rhn.redhat.com/errata/RHSA-2007-0008.html"/>\n    <description>D-BUS is a system for sending messages between applications. It is used\r\nboth for the systemwide message bus service, and as a\r\nper-user-login-session messaging facility.\r\n\r\nKimmo H\xc3\xa4m\xc3\xa4l\xc3\xa4inen discovered a flaw in the way D-BUS processes certain\r\nmessages. It is possible for a local unprivileged D-BUS process to disrupt\r\nthe ability of another D-BUS process to receive messages. (CVE-2006-6107)\r\n\r\nUsers of dbus are advised to upgrade to these updated packages, which\r\ncontain backported patches to correct this issue.</description>\n\n<!-- ~~~~~~~~~~~~~~~~~~~~   advisory details   ~~~~~~~~~~~~~~~~~~~ -->\n\n<advisory from="secalert@redhat.com">\n\n        <severity>Moderate</severity>\n\n        <rights>Copyright 2007 Red Hat, Inc.</rights>\n        <issued date="2007-02-07"/>\n        <updated date="2007-02-07"/>\n            <cve href="http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2006-6107">CVE-2006-6107</cve>\n                <bugzilla href="http://bugzilla.redhat.com/218055" id="218055">CVE-2006-6107 D-Bus denial of service</bugzilla>\n    </advisory>\n      </metadata>\n      <criteria operator="AND">\n <criterion test_ref="oval:com.redhat.rhsa:tst:20070008001" comment="Red Hat Enterprise Linux 4 is installed" />\n <criteria operator="OR">\n  \n <criteria operator="AND">\n <criterion test_ref="oval:com.redhat.rhsa:tst:20070008010" comment="dbus-x11 is earlier than 0:0.22-12.EL.8" /><criterion test_ref="oval:com.redhat.rhsa:tst:20070008011" comment="dbus-x11 is signed with Red Hat master key" />\n  \n</criteria><criteria operator="AND">\n <criterion test_ref="oval:com.redhat.rhsa:tst:20070008008" comment="dbus-python is earlier than 0:0.22-12.EL.8" /><criterion test_ref="oval:com.redhat.rhsa:tst:20070008009" comment="dbus-python is signed with Red Hat master key" />\n  \n</criteria><criteria operator="AND">\n <criterion test_ref="oval:com.redhat.rhsa:tst:20070008006" comment="dbus-devel is earlier than 0:0.22-12.EL.8" /><criterion test_ref="oval:com.redhat.rhsa:tst:20070008007" comment="dbus-devel is signed with Red Hat master key" />\n  \n</criteria><criteria operator="AND">\n <criterion test_ref="oval:com.redhat.rhsa:tst:20070008002" comment="dbus is earlier than 0:0.22-12.EL.8" /><criterion test_ref="oval:com.redhat.rhsa:tst:20070008003" comment="dbus is signed with Red Hat master key" />\n  \n</criteria><criteria operator="AND">\n <criterion test_ref="oval:com.redhat.rhsa:tst:20070008004" comment="dbus-glib is earlier than 0:0.22-12.EL.8" /><criterion test_ref="oval:com.redhat.rhsa:tst:20070008005" comment="dbus-glib is signed with Red Hat master key" />\n  \n</criteria>\n</criteria>\n</criteria>\n    </definition>\n  </definitions>\n  <tests>\n    <!-- ~~~~~~~~~~~~~~~~~~~~~   rpminfo tests   ~~~~~~~~~~~~~~~~~~~~~ -->\n    <rpminfo_test id="oval:com.redhat.rhsa:tst:20070008001"  version="201" comment="Red Hat Enterprise Linux 4 is installed" check="at least one">\n  <object object_ref="oval:com.redhat.rhsa:obj:20070008001" />\n  <state state_ref="oval:com.redhat.rhsa:ste:20070008002" />\n</rpminfo_test><rpminfo_test id="oval:com.redhat.rhsa:tst:20070008002"  version="201" comment="dbus is earlier than 0:0.22-12.EL.8" check="at least one">\n  <object object_ref="oval:com.redhat.rhsa:obj:20070008002" />\n  <state state_ref="oval:com.redhat.rhsa:ste:20070008003" />\n</rpminfo_test><rpminfo_test id="oval:com.redhat.rhsa:tst:20070008003"  version="201" comment="dbus is signed with Red Hat master key" check="at least one">\n  <object object_ref="oval:com.redhat.rhsa:obj:20070008002" />\n  <state state_ref="oval:com.redhat.rhsa:ste:20070008001" />\n</rpminfo_test><rpminfo_test id="oval:com.redhat.rhsa:tst:20070008004"  version="201" comment="dbus-glib is earlier than 0:0.22-12.EL.8" check="at least one">\n  <object object_ref="oval:com.redhat.rhsa:obj:20070008003" />\n  <state state_ref="oval:com.redhat.rhsa:ste:20070008003" />\n</rpminfo_test><rpminfo_test id="oval:com.redhat.rhsa:tst:20070008005"  version="201" comment="dbus-glib is signed with Red Hat master key" check="at least one">\n  <object object_ref="oval:com.redhat.rhsa:obj:20070008003" />\n  <state state_ref="oval:com.redhat.rhsa:ste:20070008001" />\n</rpminfo_test><rpminfo_test id="oval:com.redhat.rhsa:tst:20070008006"  version="201" comment="dbus-devel is earlier than 0:0.22-12.EL.8" check="at least one">\n  <object object_ref="oval:com.redhat.rhsa:obj:20070008004" />\n  <state state_ref="oval:com.redhat.rhsa:ste:20070008003" />\n</rpminfo_test><rpminfo_test id="oval:com.redhat.rhsa:tst:20070008007"  version="201" comment="dbus-devel is signed with Red Hat master key" check="at least one">\n  <object object_ref="oval:com.redhat.rhsa:obj:20070008004" />\n  <state state_ref="oval:com.redhat.rhsa:ste:20070008001" />\n</rpminfo_test><rpminfo_test id="oval:com.redhat.rhsa:tst:20070008008"  version="201" comment="dbus-python is earlier than 0:0.22-12.EL.8" check="at least one">\n  <object object_ref="oval:com.redhat.rhsa:obj:20070008005" />\n  <state state_ref="oval:com.redhat.rhsa:ste:20070008003" />\n</rpminfo_test><rpminfo_test id="oval:com.redhat.rhsa:tst:20070008009"  version="201" comment="dbus-python is signed with Red Hat master key" check="at least one">\n  <object object_ref="oval:com.redhat.rhsa:obj:20070008005" />\n  <state state_ref="oval:com.redhat.rhsa:ste:20070008001" />\n</rpminfo_test><rpminfo_test id="oval:com.redhat.rhsa:tst:20070008010"  version="201" comment="dbus-x11 is earlier than 0:0.22-12.EL.8" check="at least one">\n  <object object_ref="oval:com.redhat.rhsa:obj:20070008006" />\n  <state state_ref="oval:com.redhat.rhsa:ste:20070008003" />\n</rpminfo_test><rpminfo_test id="oval:com.redhat.rhsa:tst:20070008011"  version="201" comment="dbus-x11 is signed with Red Hat master key" check="at least one">\n  <object object_ref="oval:com.redhat.rhsa:obj:20070008006" />\n  <state state_ref="oval:com.redhat.rhsa:ste:20070008001" />\n</rpminfo_test>\n  </tests>\n\n  <objects>\n    <!-- ~~~~~~~~~~~~~~~~~~~~   rpminfo objects   ~~~~~~~~~~~~~~~~~~~~ -->\n    <rpminfo_object id="oval:com.redhat.rhsa:obj:20070008006"  version="201">\n  <name>dbus-x11</name>\n</rpminfo_object><rpminfo_object id="oval:com.redhat.rhsa:obj:20070008005"  version="201">\n  <name>dbus-python</name>\n</rpminfo_object><rpminfo_object id="oval:com.redhat.rhsa:obj:20070008004"  version="201">\n  <name>dbus-devel</name>\n</rpminfo_object><rpminfo_object id="oval:com.redhat.rhsa:obj:20070008001"  version="201">\n  <name>redhat-release</name>\n</rpminfo_object><rpminfo_object id="oval:com.redhat.rhsa:obj:20070008002"  version="201">\n  <name>dbus</name>\n</rpminfo_object><rpminfo_object id="oval:com.redhat.rhsa:obj:20070008003"  version="201">\n  <name>dbus-glib</name>\n</rpminfo_object>\n  </objects>\n  <states>\n    <!-- ~~~~~~~~~~~~~~~~~~~~   rpminfo states   ~~~~~~~~~~~~~~~~~~~~~ -->\n    <rpminfo_state id="oval:com.redhat.rhsa:ste:20070008001"  version="201">\n  <signature_keyid  operation="equals">219180cddb42a60e</signature_keyid>\n</rpminfo_state><rpminfo_state id="oval:com.redhat.rhsa:ste:20070008002"  version="201">\n  <version  operation="pattern match">^4\\D</version>\n</rpminfo_state><rpminfo_state id="oval:com.redhat.rhsa:ste:20070008003"  version="201">\n  <evr datatype="evr_string" operation="less_than">0:0.22-12.EL.8</evr>\n</rpminfo_state>\n  </states>\n</oval_definitions>\n\n',
                        'packages': '',
                        'product': 'Red Hat Enterprise Linux',
                        'reference': 'http://www.redhat.com/security/updates/classification/#moderate',
                        'revision': 3,
                        'security_impact': 'Moderate',
                        'solution': 'Before applying this update, make sure all previously released errata\r\nrelevant to your system have been applied.\r\n\r\nThis update is available via Red Hat Satellite.  To use Red Hat Satellite,\r\nlaunch the Red Hat Update Agent with the following command:\r\n\r\nup2date\r\n\r\nThis will start an interactive process that will result in the appropriate\r\nRPMs being upgraded on your system.',
                        'synopsis': 'Moderate: dbus security update',
                        'topic': 'Updated dbus packages that fix a security issue are now available for Red\r\nHat Enterprise Linux 4.\r\n\r\nThis update has been rated as having moderate security impact by the Red\r\nHat Security Response Team.',
                        'update_date': '2007-02-07'}

        url = "http://" + SERVER + "/BUGZILLA"
        s = xmlrpclib.Server(url)
        s.bugzilla_errata.submit_errata(erratum_hash)

unittest.main()
  070701000001F1000081B40000000000000000000000016290A0C10000049C000000000000000000000000000000000000002B00000000spacewalk-backend/server/test/test_leak.py    #
# Copyright (c) 2008--2016 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#

import os
import sys
import time
from spacewalk.server import rhnSQL

print((os.getpid()))
rhnSQL.initDB('rhnuser/rhnuser@webdev')

h = rhnSQL.prepare("select 1 from dual")

start = time.time()
write = sys.stderr.write
i = 0
while i < 10000:
    h.execute()
    if i % 100 == 0:
        f = open("/proc/self/status")
        l = f.readlines()
        vmsize = l[10][10:-1]
        vmrss = l[12][10:-1]
        f.close()
        write("%d %.3f vsz: %s rss: %s \n" % (i, time.time() - start, vmsize,
                                              vmrss))
    i = i + 1
070701000001F2000081B40000000000000000000000016290A0C100000492000000000000000000000000000000000000002C00000000spacewalk-backend/server/test/test_leak2.py   #
# Copyright (c) 2008--2016 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#

import os
import sys
import time
from DCOracle import Connect

print((os.getpid()))
dbh = Connect('rhnuser/rhnuser@webdev')

h = dbh.prepare("select 1 from dual")

start = time.time()
i = 0
write = sys.stderr.write
while i < 10000:
    h.execute()
    if i % 100 == 0:
        f = open("/proc/self/status")
        l = f.readlines()
        vmsize = l[10][10:-1]
        vmrss = l[12][10:-1]
        f.close()
        write("%d %.3f vsz: %s rss: %s \n" % (i, time.time() - start, vmsize,
                                              vmrss))
    i = i + 1
  070701000001F3000081B40000000000000000000000016290A0C1000003BF000000000000000000000000000000000000002C00000000spacewalk-backend/server/test/test_leak3.py   #
# Copyright (c) 2008--2016 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#

import os
import time
from DCOracle2 import connect

print((os.getpid()))
dbh = connect('rhnuser/rhnuser@webdev')

h = dbh.prepare("select 1 from dual")

start = time.time()
i = 0
while 1:
    h.execute()
    if 0:
        print((h.fetchone_dict()))
    else:
        print((i, "%.3f" % (time.time() - start)))
    i = i + 1
    time.sleep(.01)
 070701000001F4000081B40000000000000000000000016290A0C10000050E000000000000000000000000000000000000002C00000000spacewalk-backend/server/test/test_leak4.py   #
# Copyright (c) 2008--2016 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#
import os
import sys
import time
from DCOracle2 import connect

print(('PID', os.getpid()))
db = connect('rhnuser/rhnuser@webdev')

#c = db.prepare("select 1, 'z', 2, 3, 4, 't' from dual")
c = db.prepare("select 1 from dual")
#c = db.prepare("select 1, 2 from dual")

start = time.time()
i = 0
write = sys.stderr.write
while i < 10000:
    c.execute()
    if i % 100 == 0:
        f = open("/proc/self/status")
        l = f.readlines()
        vmsize = l[10][10:-1]
        vmrss = l[12][10:-1]
        f.close()
        write("%d %.3f vsz: %s rss: %s \n" % (i, time.time() - start, vmsize,
                                              vmrss))
    i = i + 1
#    time.sleep(.01)
  070701000001F5000081B40000000000000000000000016290A0C1000006FC000000000000000000000000000000000000004300000000spacewalk-backend/server/test/test_list_missing_source_packages.py    #
# Copyright (c) 2008--2015 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#
import unittest
from TestServer import TestServer
from spacewalk.server import xp, rhnSQL

#   Tests the functionality of the listMissingSourcePackages function of the packages.py file


class ListMissingTestCase(unittest.TestCase):

    def setUp(self):
        self.directory = '/home/devel/wregglej/downloads/srcrpms'
        self.myserver = TestServer()
        self.myserver.upload_packages(self.directory, source=1)
        self.packageobj = xp.packages.Packages()

    def tearDown(self):
        rhnSQL.rollback()

    def testPresence(self):
        if self.packageobj.listMissingSourcePackages:
            assert 1
        else:
            assert 0

    def testlistMissingSourcePackages(self):
        channel = self.myserver.getChannel()
        package_list = self.packageobj.listMissingSourcePackages([channel.get_label()],
                                                                 self.myserver.getUsername(),
                                                                 self.myserver.getPassword())
        if type(package_list) == type([]):
            assert 1
        else:
            assert 0

if __name__ == "__main__":
    unittest.main()
070701000001F6000081B40000000000000000000000016290A0C1000007CE000000000000000000000000000000000000002F00000000spacewalk-backend/server/test/test_make_evr.py    #
# Copyright (c) 2008--2015 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#
import unittest
from spacewalk.server import rhnDependency


class MakeEvrTestCase(unittest.TestCase):

    def setUp(self):
        self.make_evr = rhnDependency.make_evr

    def testEvr1(self):
        ret = self.make_evr('100:testcase1-0-0')
        assert ret['epoch'] == '100' and ret['name'] == 'testcase1' and ret['version'] == '0' and ret['release'] == '0'

    def testEvr2(self):
        ret = self.make_evr('testcase1-0-0:100')
        assert ret['epoch'] == '100' and ret['name'] == 'testcase1' and ret['version'] == '0' and ret['release'] == '0'

    def testEvr3(self):
        ret = self.make_evr('testcase1-0-0')
        assert ret['epoch'] is None and ret['name'] == 'testcase1' and ret['version'] == '0' and ret['release'] == '0'

    def testEvr4(self):
        ret = self.make_evr('100000000000000000:a.b.c.d.e.f.g.h.i.j.k.l-m.n.o.p.q.r.s.t.u.v-w.x.y.z')
        assert ret['epoch'] == '100000000000000000' and\
            ret['name'] == 'a.b.c.d.e.f.g.h.i.j.k.l' and\
            ret['version'] == 'm.n.o.p.q.r.s.t.u.v' and\
            ret['release'] == 'w.x.y.z'

    def testEvr5(self):
        ret = self.make_evr('Bbbb.a111-cccC-qwerty:500')
        assert ret['epoch'] == '500' and\
            ret['name'] == 'Bbbb.a111' and\
            ret['version'] == 'cccC' and\
            ret['release'] == 'qwerty'

if __name__ == "__main__":
    unittest.main()
  070701000001F7000081B40000000000000000000000016290A0C100000577000000000000000000000000000000000000003400000000spacewalk-backend/server/test/test_malformed_xml.py   #
# Copyright (c) 2008--2016 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#
from rhn.rpclib import transports

httplib = transports.connections.httplib

#server = "rhn.webdev.redhat.com"
server = "coyote.devel.redhat.com"
#server = "rhn.webqa.redhat.com"

data = """
    <?xml version='1.0'?>
    <methodCall>
    <methodName>abc</methodName>
    <params>
    <param>
    <value><string>a</string></value>
    </param>
    <param>
    <value><string>b</string></value>
    </param>
    </params>

    </methodCall>
    ember>
    <name>count</name>
    <value><int>1</int></value>
    </member>
    </struct></value>
    <value><struct>
    <member>
"""

h = httplib.HTTPConnection(server)

h.putrequest("POST", "/XMLRPC")

h.putheader('Content-Length', str(len(data)))
h.endheaders()

h.send(data)

r = h.getresponse()
print((r.msg.headers))

print((r.read()))
 070701000001F8000081B40000000000000000000000016290A0C1000003D0000000000000000000000000000000000000002E00000000spacewalk-backend/server/test/test_message.py #
# Copyright (c) 2008--2016 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#
from spacewalk.common.rhnConfig import initCFG
from spacewalk.server import rhnSQL, rhnServer


initCFG("server.xmlrpc")
rhnSQL.initDB("rhnuser/rhnuser@webdev")

print((rhnServer.search(1003485567).fetch_registration_message()))
print((rhnServer.search(1003485558).fetch_registration_message()))
print((rhnServer.search(1003485584).fetch_registration_message()))
070701000001F9000081B40000000000000000000000016290A0C100000433000000000000000000000000000000000000003200000000spacewalk-backend/server/test/test_next_action.py #
# Copyright (c) 2008--2013 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#
from spacewalk.common import rhnFlags
from spacewalk.server import rhnSQL
from spacewalk.server.action_extra_data import packages, kickstart, reboot

rhnSQL.initDB('rhnuser/rhnuser@webdev')
rhnFlags.set('action_id', 11921273)
rhnFlags.set('action_status', 2)

try:
    packages.update(1003485866, 11921273, {})
    kickstart.initiate(1003485866, 11921274, {})
    reboot.reboot(1003485866, 11921275, {})
except:
    rhnSQL.rollback()
    raise
rhnSQL.rollback()
 070701000001FA000081B40000000000000000000000016290A0C1000003C4000000000000000000000000000000000000003100000000spacewalk-backend/server/test/test_procedures.py  #
# Copyright (c) 2008--2016 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#


from spacewalk.server import rhnSQL

rhnSQL.initDB('rhnuser/rhnuser@phx')

counter = 0
while 1:
    #p = rhnSQL.Procedure('rhn_entitlements.get_server_entitlement')
    p = rhnSQL.Procedure('rhn_entitlements.upgrade_server')
    ret = p(1000102174)
    print((counter, ret))
    counter = counter + 1
    # if counter > 700:
    #    time.sleep(.5)
070701000001FB000081B40000000000000000000000016290A0C100000461000000000000000000000000000000000000003000000000spacewalk-backend/server/test/test_queue_get.py   #
# Copyright (c) 2008--2016 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#
from spacewalk.server import rhnSQL
from spacewalk.common.rhnLog import initLOG
from spacewalk.common.rhnConfig import initCFG
from spacewalk.server.xmlrpc import queue

initLOG("stderr", 4)
initCFG('server.xmlrpc')
rhnSQL.initDB('rhnuser/rhnuser@webdev')

q = queue.Queue()
if 1:
    systemid = open("../../test/backend/checks/systemid-farm06").read()
    print((q.get(systemid, version=2)))
else:
    q.server_id = 1003485791

    q._invalidate_failed_prereq_actions()

# rhnSQL.rollback()
rhnSQL.commit()
   070701000001FC000081B40000000000000000000000016290A0C10000041E000000000000000000000000000000000000003300000000spacewalk-backend/server/test/test_registration.py    #
# Copyright (c) 2008--2015 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#

from spacewalk.common.rhnConfig import initCFG
from spacewalk.server.rhnSQL import initDB
from spacewalk.server.xmlrpc import registration

initCFG("server.xmlrpc")
initDB('rhnuser/rhnuser@webdev')

r = registration.Registration()

data = {
    'os_release': '8.0',
    'profile_name': 'test local',
    'architecture': 'i686',
    'token': '382c712e94b2505f6070f011e8ec1a7e',
}

open("/tmp/rereg-systemid", "w+").write(r.new_system(data))
  070701000001FD000081B40000000000000000000000016290A0C10000039F000000000000000000000000000000000000003400000000spacewalk-backend/server/test/test_rhnCapability.py   #
# Copyright (c) 2008--2013 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#
import rhnSQL
from rhnCapability import set_client_capabilities, update_client_capabilities

if __name__ == '__main__':
    rhnSQL.initDB('rhnuser/rhnuser@webdev')

    set_client_capabilities([
        "caneatCheese(1)=1", "caneatMeat(22)=3", "a(3)=4", "b(3)=5",
    ])
    update_client_capabilities(1000102174)
 070701000001FE000081B40000000000000000000000016290A0C100000B31000000000000000000000000000000000000003100000000spacewalk-backend/server/test/test_rhnChannel.py  #
# Copyright (c) 2008--2016 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#
import sys
import time
from spacewalk.common import rhnFlags
from spacewalk.common.rhnConfig import initCFG
from spacewalk.server import rhnSQL, rhnChannel, rhnServer, rhnUser


def test_server_search(use_key=0):
    if use_key:
        user = None
    else:
        user = 'mibanescu-plain'
    u = rhnUser.search(user)
    s = rhnServer.Server(u, arch="athlon")
    s.server["release"] = "2.1AS"
    s.server["name"] = "test 1"
    if use_key:
        rhnFlags.set("registration_token", 'a02487cf77e72f86338f44212d23140d')
    s.save()
    print((s.server["id"]))


if __name__ == "__main__":
    initCFG("server.xmlrpc")
    rhnSQL.initDB('rhnuser/rhnuser@webdev')

    if 1:
        test_server_search(use_key=1)
        sys.exit(1)

    print((rhnChannel.get_server_channel_mappings(1000102174, release='2.1AS')))
    print((rhnChannel.get_server_channel_mappings(1000102174, release='2.1AS',
                                                 user_id=2825619, none_ok=1)))

    print((rhnChannel.channels_for_release_arch('2.1AS', 'athlon-redhat-linux')))
    print((rhnChannel.channels_for_release_arch('2.1AS', 'athlon-redhat-linux', user_id=575937)))
    print((rhnChannel.channels_for_release_arch('2.1AS', 'XXXX-redhat-linux', user_id=575937)))
    # mibanescu-2
#    print rhnChannel.channels_for_release_arch('9', 'i386-redhat-linux', user_id=2012148)
    # mibanescu-plain
    print((rhnChannel.channels_for_release_arch('2.1AS', 'athlon-redhat-linux', user_id=2825619)))
    sys.exit(1)

    channel = "redhat-linux-i386-7.1"

    start = time.time()
    ret = rhnChannel.list_packages(channel)
    print(("Took %.2f seconds to list %d packages in %s" % (
        time.time() - start, len(ret), channel)))
    # pprint.pprint(ret)

    start = time.time()
    ret = rhnChannel.list_obsoletes(channel)
    print(("Took %.2f seconds to list %d obsoletes in %s" % (
        time.time() - start, len(ret), channel)))
    # pprint.pprint(ret)

    server_id = 1002156837
    channels = rhnChannel.channels_for_server(server_id)

    s = rhnServer.search(server_id)
    s.change_base_channel("2.1AS-foobar")
    print([x['label'] for x in channels])
    print([x['label'] for x in rhnChannel.channels_for_server(server_id)])
    rhnSQL.commit()
   070701000001FF000081B40000000000000000000000016290A0C100000340000000000000000000000000000000000000003700000000spacewalk-backend/server/test/test_rhnSQL_Procedure.py    #
# Copyright (c) 2008--2013 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#

from spacewalk.server import rhnSQL

rhnSQL.initDB("rhnuser/rhnuser@webdev")

p = rhnSQL.Procedure("rhn_channel.subscribe_server")

try:
    p(1003486745, 33)
except:
    rhnSQL.rollback()
    raise

rhnSQL.rollback()
07070100000200000081B40000000000000000000000016290A0C1000003CC000000000000000000000000000000000000003100000000spacewalk-backend/server/test/test_rhnSession.py  #
# Copyright (c) 2008--2016 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#

from spacewalk.common.rhnConfig import initCFG
from spacewalk.server import rhnSQL, rhnUser

rhnSQL.initDB("rhnuser/rhnuser@webdev")
initCFG('server.xmlrpc')

u = rhnUser.search("mibanescu-channel-admin")
session = u.create_session()

s = session.get_session()

print(("Checking with session", s))

u = rhnUser.session_reload(s)
print(u)
print((u.username))
07070100000201000081B40000000000000000000000016290A0C100004CE8000000000000000000000000000000000000003900000000spacewalk-backend/server/test/test_solve_dependencies.py  #!/usr/bin/python
#
# Copyright (c) 2008--2016 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#

from spacewalk.server import rhnDependency, rhnSQL
import unittest
from TestServer import TestServer
import rpm


def make_nvre_dict(epoch, version, release):
    return {
        'epoch':   epoch,
        'version':   version,
        'release':   release
    }


class SolveDependenciesTestCase(unittest.TestCase):
    # this class assumes that:
    # mozilla-1.3.1-0.dag.rhel3.i386.rpm
    # mozilla-1.5-2.rhfc1.dag.i386.rpm
    # mozilla-1.6-0.rhfc1.dag.i386.rpm
    # mozilla-1.7.1-1.1.el3.test.i386.rpm
    # are all available in self.directory.

    def setUp(self):
        self.directory = '/home/devel/wregglej/testrpms'
        self.filename = 'libcaps.so'
        self.arch = 'i386'
        self.myserver = TestServer()
        self.serv_id = self.myserver.getServerId()
        self.myserver.upload_packages(self.directory)
        self.up2date = self.myserver.getUp2date()
        self.solve_deps_arch = rhnDependency.solve_dependencies_arch
        self.solve_deps_with_limits = rhnDependency.solve_dependencies_with_limits
        self.up2date = self.myserver.getUp2date()

    def tearDown(self):
        rhnSQL.rollback()

    def testReturnType(self):
        assert type(self.solve_deps_arch(self.serv_id, [], 2)) == type({})

    def testKeyType(self):
        assert type(list(self.solve_deps_arch(self.serv_id, [self.filename], 2).keys())[0]) == type('a')

    def testValueType(self):
        assert type(self.solve_deps_arch(self.serv_id, [self.filename], 2)[self.filename]) == type([])

    def testNestedValueType(self):
        assert type(self.solve_deps_arch(self.serv_id, [self.filename], 2)[self.filename][0]) == type([])

    def testNestedValueLength(self):
        assert len(self.solve_deps_arch(self.serv_id, [self.filename], 2)[self.filename][0]) > 0

    def testNestedValueLength2(self):
        assert len(self.solve_deps_arch(self.serv_id, [self.filename], 2)[self.filename][0]) == 5

    def testNestedValueType0(self):
        assert type(self.solve_deps_arch(self.serv_id, [self.filename], 2)[self.filename][0][0]) == type('a')

    def testNestedValueType1(self):
        assert type(self.solve_deps_arch(self.serv_id, [self.filename], 2)[self.filename][0][1]) == type('a')

    def testNestedValueType2(self):
        assert type(self.solve_deps_arch(self.serv_id, [self.filename], 2)[self.filename][0][2]) == type('a')

    def testNestedValueType3(self):
        assert type(self.solve_deps_arch(self.serv_id, [self.filename], 2)[self.filename][0][3]) == type('a')

    def testNestedValueType4(self):
        assert type(self.solve_deps_arch(self.serv_id, [self.filename], 2)[self.filename][0][4]) == type('a')

    def testVerifyArch(self):
        assert self.solve_deps_arch(self.serv_id, [self.filename], 2)[self.filename][0][4] == self.arch

    def testReturnTypeLimit(self):
        assert type(self.solve_deps_with_limits(self.serv_id, [], 2)) == type({})

    def testKeyTypeLimit(self):
        assert type(list(self.solve_deps_with_limits(self.serv_id, [self.filename], 2).keys())[0]) == type('a')

    def testValueTypeLimit(self):
        assert type(self.solve_deps_with_limits(self.serv_id, [self.filename], 2)[self.filename]) == type([])

    def testNestedValueTypeLimit(self):
        assert type(self.solve_deps_with_limits(self.serv_id, [self.filename], 2)[self.filename][0]) == type([])

    def testNestedValueLengthLimit(self):
        assert len(self.solve_deps_with_limits(self.serv_id, [self.filename], 2)[self.filename][0]) > 0

    def testNestedValueLengthLimit2(self):
        assert len(self.solve_deps_with_limits(self.serv_id, [self.filename], 2)[self.filename][0]) == 5

    def testNestedValueTypeLimit0(self):
        assert type(self.solve_deps_with_limits(self.serv_id, [self.filename], 2)[self.filename][0][0]) == type('a')

    def testNestedValueTypeLimit1(self):
        assert type(self.solve_deps_with_limits(self.serv_id, [self.filename], 2)[self.filename][0][1]) == type('a')

    def testNestedValueTypeLimit2(self):
        assert type(self.solve_deps_with_limits(self.serv_id, [self.filename], 2)[self.filename][0][2]) == type('a')

    def testNestedValueTypeLimit3(self):
        assert type(self.solve_deps_with_limits(self.serv_id, [self.filename], 2)[self.filename][0][3]) == type('a')

    def testNestedValueTypeLimit4(self):
        assert type(self.solve_deps_with_limits(self.serv_id, [self.filename], 2)[self.filename][0][4]) == type('a')

    def testVerifyArchLimit(self):
        assert self.solve_deps_with_limits(self.serv_id, [self.filename], 2)[self.filename][0][4] == self.arch

    def testAllReturn(self):
        pack = self.solve_deps_with_limits(self.serv_id,
                                           [self.filename],
                                           2,
                                           all=1)
        if pack is not None:
            assert 1
        else:
            assert 0

    def testAllReturn1(self):
        pack = self.solve_deps_with_limits(self.serv_id,
                                           [self.filename],
                                           2,
                                           all=1)
        exp_ret = ['mozilla', '1.3.1', '0.dag.rhel3', '34', 'i386']
        if exp_ret in pack[self.filename]:
            assert 1
        else:
            assert 0

    def testAllReturn2(self):
        pack = self.solve_deps_with_limits(self.serv_id,
                                           [self.filename],
                                           2,
                                           all=1)
        exp_ret = ['mozilla', '1.7.1', '1.1.el3.dag', '37', 'i386']
        if exp_ret in pack[self.filename]:
            assert 1
        else:
            assert 0

    def testAllReturn3(self):
        pack = self.solve_deps_with_limits(self.serv_id,
                                           [self.filename],
                                           2,
                                           all=1)
        exp_ret = ['mozilla', '1.5', '2.rhfc1.dag', '38', 'i386']
        if exp_ret in pack[self.filename]:
            assert 1
        else:
            assert 0

    def testAllReturn4(self):
        pack = self.solve_deps_with_limits(self.serv_id,
                                           [self.filename],
                                           2,
                                           all=1)
        exp_ret = ['mozilla', '1.6', '0.rhfc1.dag', '38', 'i386']
        if exp_ret in pack[self.filename]:
            assert 1
        else:
            assert 0

    def testNotAllReturn(self):
        pack = self.solve_deps_with_limits(self.serv_id,
                                           [self.filename],
                                           2)

        exp_ret = ['mozilla', '1.6', '0.rhfc1.dag', '38', 'i386']
        if exp_ret in pack[self.filename]:
            assert 1
        else:
            assert 0

    def testMakeEvr(self):
        nlimitstr = '38:mozilla-1.5-2.rhfc1.dag'
        nlimit = rhnDependency.make_evr(nlimitstr)
        assert nlimit['epoch'] == '38' and\
            nlimit['name'] == 'mozilla' and\
            nlimit['version'] == '1.5' and\
            nlimit['release'] == '2.rhfc1.dag'

    def testMakeEvr1(self):
        nlimitstr = 'mozilla-1.5-2.rhfc1.dag:38'
        nlimit = rhnDependency.make_evr(nlimitstr)
        assert nlimit['epoch'] == '38' and\
            nlimit['name'] == 'mozilla' and\
            nlimit['version'] == '1.5' and\
            nlimit['release'] == '2.rhfc1.dag'

    def testMakeEvr2(self):
        nlimitstr = 'mozilla-1.5-2.rhfc1.dag'
        nlimit = rhnDependency.make_evr(nlimitstr)
        assert nlimit['epoch'] is None and\
            nlimit['name'] == 'mozilla' and\
            nlimit['version'] == '1.5' and\
            nlimit['release'] == '2.rhfc1.dag'

    def testEvrFilterE(self):
        nlimitstr = '38:mozilla-1.5-2.rhfc1.dag'
        nlimit = rhnDependency.make_evr(nlimitstr)
        pack = self.solve_deps_with_limits(self.serv_id,
                                           [self.filename],
                                           2,
                                           limit_operator='==',
                                           limit=nlimitstr)
        assert pack[self.filename][0][1] == nlimit['version'] and\
            pack[self.filename][0][2] == nlimit['release'] and\
            pack[self.filename][0][3] == nlimit['epoch']

    def testEvrFilterGT(self):
        nlimitstr = '38:mozilla-1.5-2.rhfc1.dag'
        nlimit = rhnDependency.make_evr(nlimitstr)
        pack = self.solve_deps_with_limits(self.serv_id,
                                           [self.filename],
                                           2,
                                           limit_operator='>',
                                           limit=nlimitstr)
        assert rpm.labelCompare((pack[self.filename][0][3], pack[self.filename][0][1], pack[self.filename][0][2]),
                                (nlimit['epoch'], nlimit['version'], nlimit['release'])) == 1

    def testEvrFilterGTE(self):
        nlimitstr = '38:mozilla-1.5-2.rhfc1.dag'
        nlimit = rhnDependency.make_evr(nlimitstr)
        pack = self.solve_deps_with_limits(self.serv_id,
                                           [self.filename],
                                           2,
                                           limit_operator='>=',
                                           limit=nlimitstr)
        ret = rpm.labelCompare((pack[self.filename][0][3], pack[self.filename][0][1], pack[self.filename][0][2]),
                               (nlimit['epoch'], nlimit['version'], nlimit['release']))
        assert ret == 1 or ret == 0

    def testEvrFilterLT(self):
        nlimitstr = '38:mozilla-1.5-2.rhfc1.dag'
        nlimit = rhnDependency.make_evr(nlimitstr)
        pack = self.solve_deps_with_limits(self.serv_id,
                                           [self.filename],
                                           2,
                                           limit_operator='<',
                                           limit=nlimitstr)
        ret = rpm.labelCompare((pack[self.filename][0][3], pack[self.filename][0][1], pack[self.filename][0][2]),
                               (nlimit['epoch'], nlimit['version'], nlimit['release']))
        assert ret == -1

    def testEvrFilterLTE(self):
        nlimitstr = '38:mozilla-1.5-2.rhfc1.dag'
        nlimit = rhnDependency.make_evr(nlimitstr)
        pack = self.solve_deps_with_limits(self.serv_id,
                                           [self.filename],
                                           2,
                                           limit_operator='<=',
                                           limit=nlimitstr)
        ret = rpm.labelCompare((pack[self.filename][0][3], pack[self.filename][0][1], pack[self.filename][0][2]),
                               (nlimit['epoch'], nlimit['version'], nlimit['release']))
        assert ret == -1 or ret == 0

    def testUp2dateObj(self):
        pack = self.up2date.solveDependencies(self.myserver.getSystemId(), [self.filename])
        if pack is not None:
            assert 1
        else:
            assert 0

    def testUp2dateObjReturnLength(self):
        pack = self.up2date.solveDependencies_arch(self.myserver.getSystemId(), [self.filename])
        assert len(pack[self.filename][0]) == 5

    def testUp2dateObjArchReturnType(self):
        pack = self.up2date.solveDependencies_arch(self.myserver.getSystemId(), [self.filename])
        assert pack[self.filename][0][4] == 'i386'

    def testUp2dateFilterEq(self):
        nlimitstr = '38:mozilla-1.5-2.rhfc1.dag'
        nlimit = rhnDependency.make_evr(nlimitstr)
        pack = self.up2date.solveDependencies_with_limits(self.myserver.getSystemId(),
                                                          [self.filename],
                                                          2,
                                                          limit_operator='==',
                                                          limit=nlimitstr)
        ret = rpm.labelCompare((pack[self.filename][0][3], pack[self.filename][0][1], pack[self.filename][0][2]),
                               (nlimit['epoch'], nlimit['version'], nlimit['release']))

        assert ret == 0

    def testUp2dateFilterGT(self):
        nlimitstr = '35:mozilla-0-0'
        nlimit = rhnDependency.make_evr(nlimitstr)
        pack = self.up2date.solveDependencies_with_limits(self.myserver.getSystemId(),
                                                          [self.filename],
                                                          2,
                                                          limit_operator='>',
                                                          limit=nlimitstr)
        ret = rpm.labelCompare((pack[self.filename][0][3], pack[self.filename][0][1], pack[self.filename][0][2]),
                               (nlimit['epoch'], nlimit['version'], nlimit['release']))
        assert ret == 1

    def testUp2dateFilterGTE(self):
        nlimitstr = '35:mozilla-1-1'
        nlimit = rhnDependency.make_evr(nlimitstr)
        pack = self.up2date.solveDependencies_with_limits(self.myserver.getSystemId(),
                                                          [self.filename],
                                                          2,
                                                          limit_operator='>',
                                                          limit=nlimitstr)
        ret = rpm.labelCompare((pack[self.filename][0][3], pack[self.filename][0][1], pack[self.filename][0][2]),
                               (nlimit['epoch'], nlimit['version'], nlimit['release']))
        assert ret == 1 or ret == 0

    def testUp2dateFilterLT(self):
        nlimitstr = '35:mozilla-1-1'
        nlimit = rhnDependency.make_evr(nlimitstr)
        pack = self.up2date.solveDependencies_with_limits(self.myserver.getSystemId(),
                                                          [self.filename],
                                                          2,
                                                          limit_operator='<',
                                                          limit=nlimitstr)
        ret = rpm.labelCompare((pack[self.filename][0][3], pack[self.filename][0][1], pack[self.filename][0][2]),
                               (nlimit['epoch'], nlimit['version'], nlimit['release']))
        assert ret == -1

    def testUp2dateFilterLTE(self):
        nlimitstr = '35:mozilla-1-1'
        nlimit = rhnDependency.make_evr(nlimitstr)
        pack = self.up2date.solveDependencies_with_limits(self.myserver.getSystemId(),
                                                          [self.filename],
                                                          2,
                                                          limit_operator='<=',
                                                          limit=nlimitstr)
        ret = rpm.labelCompare((pack[self.filename][0][3], pack[self.filename][0][1], pack[self.filename][0][2]),
                               (nlimit['epoch'], nlimit['version'], nlimit['release']))
        assert ret == -1 or ret == 0

    def testUp2dateFilterEq1(self):
        nlimitstr = '38:mozilla-1.5-2.rhfc1.dag'
        nlimit = rhnDependency.make_evr(nlimitstr)
        pack = self.up2date.solveDependencies_with_limits(self.myserver.getSystemId(),
                                                          [self.filename],
                                                          2,
                                                          limit_operator='==',
                                                          limit=nlimitstr)
        ret = rpm.labelCompare((pack[self.filename][0][3], pack[self.filename][0][1], pack[self.filename][0][2]),
                               (nlimit['epoch'], nlimit['version'], nlimit['release']))

        assert ret == 0

    def testUp2dateFilterGT1(self):
        nlimitstr = 'mozilla-0-0:35'
        nlimit = rhnDependency.make_evr(nlimitstr)
        pack = self.up2date.solveDependencies_with_limits(self.myserver.getSystemId(),
                                                          [self.filename],
                                                          2,
                                                          limit_operator='>',
                                                          limit=nlimitstr)
        ret = rpm.labelCompare((pack[self.filename][0][3], pack[self.filename][0][1], pack[self.filename][0][2]),
                               (nlimit['epoch'], nlimit['version'], nlimit['release']))
        assert ret == 1

    def testUp2dateFilterGTE1(self):
        nlimitstr = 'mozilla-1-1:35'
        nlimit = rhnDependency.make_evr(nlimitstr)
        pack = self.up2date.solveDependencies_with_limits(self.myserver.getSystemId(),
                                                          [self.filename],
                                                          2,
                                                          limit_operator='>',
                                                          limit=nlimitstr)
        ret = rpm.labelCompare((pack[self.filename][0][3], pack[self.filename][0][1], pack[self.filename][0][2]),
                               (nlimit['epoch'], nlimit['version'], nlimit['release']))
        assert ret == 1 or ret == 0

    def testUp2dateFilterLT1(self):
        nlimitstr = 'mozilla-1-1:35'
        nlimit = rhnDependency.make_evr(nlimitstr)
        pack = self.up2date.solveDependencies_with_limits(self.myserver.getSystemId(),
                                                          [self.filename],
                                                          2,
                                                          limit_operator='<',
                                                          limit=nlimitstr)
        ret = rpm.labelCompare((pack[self.filename][0][3], pack[self.filename][0][1], pack[self.filename][0][2]),
                               (nlimit['epoch'], nlimit['version'], nlimit['release']))
        assert ret == -1

    def testUp2dateFilterLTE1(self):
        nlimitstr = 'mozilla-1-1:35'
        nlimit = rhnDependency.make_evr(nlimitstr)
        pack = self.up2date.solveDependencies_with_limits(self.myserver.getSystemId(),
                                                          [self.filename],
                                                          2,
                                                          limit_operator='<=',
                                                          limit=nlimitstr)
        ret = rpm.labelCompare((pack[self.filename][0][3], pack[self.filename][0][1], pack[self.filename][0][2]),
                               (nlimit['epoch'], nlimit['version'], nlimit['release']))
        assert ret == -1 or ret == 0


if __name__ == "__main__":
    unittest.main()

    rhnSQL.rollback()
07070100000202000081B40000000000000000000000016290A0C100000526000000000000000000000000000000000000003100000000spacewalk-backend/server/test/test_test_login.py  #
# Copyright (c) 2008--2015 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#
import unittest
import TestServer
import server.app.packages


class TestLoginTestCase(unittest.TestCase):

    def setUp(self):
        self.myserver = TestServer.TestServer()
        self.packages = server.app.packages.Packages()

    def tearDown(self):
        pass

    def testReturnType(self):
        assert type(self.packages.test_login(self.myserver.getUsername(), self.myserver.getPassword())) == type(1)

    def testReturnValue(self):
        assert self.packages.test_login(self.myserver.getUsername(), self.myserver.getPassword()) == 1

    def testReturnValue2(self):
        assert self.packages.test_login("afdafdsfasdf", "afdfadfa") == 0

if __name__ == "__main__":
    unittest.main()
  07070100000203000081B40000000000000000000000016290A0C100000315000000000000000000000000000000000000003500000000spacewalk-backend/server/test/test_upload_imports.py  #
# Copyright (c) 2008--2016 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#

from spacewalk.server import rhnImport

root_dir = "/var/www/rhns"

print((rhnImport.load("upload_server/handlers",
                     interface_signature='upload_class')))
   07070100000204000081B40000000000000000000000016290A0C100000B4F000000000000000000000000000000000000003500000000spacewalk-backend/server/test/test_xmlrpc_up2date.py  #!/usr/bin/python
#
# Copyright (c) 2008--2015 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#

from spacewalk.server import rhnSQL
import unittest
from TestServer import TestServer


def make_nvre_dict(epoch, version, release):
    return {
        'epoch':   epoch,
        'version':   version,
        'release':   release
    }


class SolveDependenciesTestCase(unittest.TestCase):
    # this class assumes that:
    # mozilla-1.3.1-0.dag.rhel3.i386.rpm
    # mozilla-1.5-2.rhfc1.dag.i386.rpm
    # mozilla-1.6-0.rhfc1.dag.i386.rpm
    # mozilla-1.7.1-1.1.el3.test.i386.rpm
    # are all available in self.directory.

    def setUp(self):
        self.directory = '/home/devel/wregglej/testrpms'
        self.filename = 'libcaps.so'
        self.arch = 'i386'
        self.myserver = TestServer()
        self.serv_id = self.myserver.getServerId()
        self.myserver.upload_packages(self.directory)
        self.up2date = self.myserver.getUp2date()
        self.sysid = self.myserver.getSystemId()
        self.sd2 = self.up2date.solveDependencies_v2  # returns arch info
        self.sd4 = self.up2date.solveDependencies_v4  # returns arch info, has better filtering

    def tearDown(self):
        rhnSQL.rollback()

    def testGetArchSd2(self):
        ret = self.sd2(self.sysid, [self.filename])
        assert len(ret[self.filename][0]) == 5

    def testGetArchSd4(self):
        ret = self.sd4(self.sysid, [self.filename])
        assert len(ret[self.filename][0]) == 5

    def testArchTypeSd2(self):
        ret = self.sd2(self.sysid, [self.filename])
        assert type(ret[self.filename][0][4]) == type('a')

    def testArchTypeSd4(self):
        ret = self.sd4(self.sysid, [self.filename])
        assert type(ret[self.filename][0][4]) == type('a')

    def testArchValueSd2(self):
        ret = self.sd2(self.sysid, [self.filename])
        assert ret[self.filename][0][4] == 'i386'

    def testArchValueSd4(self):
        ret = self.sd4(self.sysid, [self.filename])
        assert ret[self.filename][0][4] == 'i386'

    def testAllTrueSd4(self):
        ret = self.sd4(self.sysid, [self.filename], all=1)
        assert len(ret[self.filename]) > 1

    def testAllFalseSd4(self):
        ret = self.sd4(self.sysid, [self.filename], all=0)
        assert len(ret[self.filename]) == 1

if __name__ == "__main__":
    unittest.main()
 07070100000205000041FD0000000000000000000000016290A0C100000000000000000000000000000000000000000000002800000000spacewalk-backend/server/test/unit-test   07070100000206000081B40000000000000000000000016290A0C100000366000000000000000000000000000000000000003100000000spacewalk-backend/server/test/unit-test/Makefile  # Docker tests variables
DOCKER_CONTAINER_BASE = manager_python_testing
DOCKER_TESTED_BRANCH  = head
DOCKER_REGISTRY       = registry.mgr.suse.de
DOCKER_RUN_EXPORT     = "PYTHONPATH=/manager/client/rhel/rhnlib/:/manager/client/rhel/rhn-client-tools/src"
DOCKER_VOLUMES        = -v "$(CURDIR)/../../../../:/manager"

DB_TESTS       = \
        test_capabilities.py \
        test_misc_functions.py \
        test_rhnActivationKey.py \
        test_rhnChannel.py \
        test_rhnServerGroup.py \
        test_server_registration.py


TESTS       = \
        test_rhnLib_timestamp.py

all:	$(addprefix test-,$(TESTS))

test-%:
	@echo Running $*
	PYTHONPATH=$(PYTHONPATH):../../../ $(PYTHON_BIN) $*

docker_shell ::
	docker run --rm=true -t -i -e $(DOCKER_RUN_EXPORT) $(DOCKER_VOLUMES) $(DOCKER_REGISTRY)/$(DOCKER_CONTAINER_BASE)_oracle_$(DOCKER_TESTED_BRANCH) /bin/bash

  07070100000207000081B40000000000000000000000016290A0C1000B2D26000000000000000000000000000000000000003E00000000spacewalk-backend/server/test/unit-test/rhn-package-78527.xml <rhn-package id="rhn-package-78527" build-host="stripples.devel.redhat.com" source-rpm="tetex-1.0.7-38.4.src.rpm" release="38.4" cookie="stripples.devel.redhat.com 1031312621" version="1.0.7" epoch="" last-modified="1059409136" rpm-version="4.0.4" package-arch="i386" payload-format="cpio" checksum-type="md5" checksum="2f65aac0c10b5bf20cb1bd0d2c71c5e3" build-time="1031330621" package-group="Applications/Publishing
" package-size="20874090" name="tetex-doc" payload-size="48908784" compat="0"><rhn-package-summary>The documentation files for the TeX text formatting system.
</rhn-package-summary><rhn-package-description>The tetex-doc package contains documentation for the TeX text
formatting system.

If you want to use TeX and you are not an expert at it, you should
install the tetex-doc package. You also need to install the tetex
package, tetex-afm (a PostScript font converter for TeX), tetex-dvilj
(for converting .dvi files to HP PCL format for printing on HP and HP
compatible printers), tetex-dvips (for converting .dvi files to
PostScript format for printing on PostScript printers), tetex-latex (a
higher level formatting package which provides an easier-to-use
interface for TeX), and tetex-xdvi (for previewing .dvi files).
</rhn-package-description><rhn-package-vendor>Red Hat, Inc.</rhn-package-vendor><rhn-package-copyright>distributable</rhn-package-copyright><rhn-package-header-sig><rhn-null/></rhn-package-header-sig><rhn-package-changelog><rhn-package-changelog-entry><rhn-package-changelog-entry-name>- David BAUDENS &lt;baudens@mandrakesoft.com&gt;</rhn-package-changelog-entry-name><rhn-package-changelog-entry-text>- AMD K6 is not an i686 processor (another)
- Replace $RPM_ARCH by %{_target_cpu}</rhn-package-changelog-entry-text><rhn-package-changelog-entry-time>944708400</rhn-package-changelog-entry-time></rhn-package-changelog-entry><rhn-package-changelog-entry><rhn-package-changelog-entry-name>Bill Nottingham &lt;notting@redhat.com&gt;</rhn-package-changelog-entry-name><rhn-package-changelog-entry-text>- remove explicit xpm-devel prereq (subsumed into XFree86)
- fixes for ia64</rhn-package-changelog-entry-text><rhn-package-changelog-entry-time>957582000</rhn-package-changelog-entry-time></rhn-package-changelog-entry><rhn-package-changelog-entry><rhn-package-changelog-entry-name>Cristian Gafton &lt;gafton@redhat.com&gt;</rhn-package-changelog-entry-name><rhn-package-changelog-entry-text>- I think I have got the buildroot problems right this time
- auto rebuild in the new build environment (release 15)</rhn-package-changelog-entry-text><rhn-package-changelog-entry-time>922244400</rhn-package-changelog-entry-time></rhn-package-changelog-entry><rhn-package-changelog-entry><rhn-package-changelog-entry-name>Cristian Gafton &lt;gafton@redhat.com&gt;</rhn-package-changelog-entry-name><rhn-package-changelog-entry-text>- add patch to make it compile on the arm (RmS)
- build for glibc 2.1
- use tar hack instead of the cp -a to overcome cp&apos;s brokeness re: symlinks
  handling</rhn-package-changelog-entry-text><rhn-package-changelog-entry-time>916110000</rhn-package-changelog-entry-time></rhn-package-changelog-entry><rhn-package-changelog-entry><rhn-package-changelog-entry-name>Cristian Gafton &lt;gafton@redhat.com&gt;</rhn-package-changelog-entry-name><rhn-package-changelog-entry-text>- fix buildroot problems</rhn-package-changelog-entry-text><rhn-package-changelog-entry-time>921898800</rhn-package-changelog-entry-time></rhn-package-changelog-entry><rhn-package-changelog-entry><rhn-package-changelog-entry-name>Cristian Gafton &lt;gafton@redhat.com&gt;</rhn-package-changelog-entry-name><rhn-package-changelog-entry-text>- requires ed
- Fixed obsoletes line
- credted the doc subpackage
- fully buildroot
- require dialog in the main package
- add support for wmconfig in for the xdvi package</rhn-package-changelog-entry-text><rhn-package-changelog-entry-time>907642800</rhn-package-changelog-entry-time></rhn-package-changelog-entry><rhn-package-changelog-entry><rhn-package-changelog-entry-name>Cristian Gafton &lt;gafton@redhat.com&gt;</rhn-package-changelog-entry-name><rhn-package-changelog-entry-text>- slight changes in the packaging (unpack texmf directly into the buildroot
  and build it there)
- added texmfsrc source tarball to comply with the license</rhn-package-changelog-entry-text><rhn-package-changelog-entry-time>921207600</rhn-package-changelog-entry-time></rhn-package-changelog-entry><rhn-package-changelog-entry><rhn-package-changelog-entry-name>Cristian Gafton &lt;gafton@redhat.com&gt;</rhn-package-changelog-entry-name><rhn-package-changelog-entry-text>- strip binaries
- enable italian formatting</rhn-package-changelog-entry-text><rhn-package-changelog-entry-time>908074800</rhn-package-changelog-entry-time></rhn-package-changelog-entry><rhn-package-changelog-entry><rhn-package-changelog-entry-name>Cristian Gafton &lt;gafton@redhat.com&gt;</rhn-package-changelog-entry-name><rhn-package-changelog-entry-text>- upgrade to 0.9
- texmf-src package is gone
- use /var/lib/texmf instead of /var/tmp/texmf</rhn-package-changelog-entry-text><rhn-package-changelog-entry-time>905569200</rhn-package-changelog-entry-time></rhn-package-changelog-entry><rhn-package-changelog-entry><rhn-package-changelog-entry-name>Cristian Gafton &lt;gafton@redhat.com&gt;</rhn-package-changelog-entry-name><rhn-package-changelog-entry-text>- upgraded snapshot</rhn-package-changelog-entry-text><rhn-package-changelog-entry-time>923022000</rhn-package-changelog-entry-time></rhn-package-changelog-entry><rhn-package-changelog-entry><rhn-package-changelog-entry-name>Crutcher Dunnavant &lt;crutcher@redhat.com&gt; 1.0.7-15</rhn-package-changelog-entry-name><rhn-package-changelog-entry-text>- add PAGEsize to mf40-tetex_filters</rhn-package-changelog-entry-text><rhn-package-changelog-entry-time>985748400</rhn-package-changelog-entry-time></rhn-package-changelog-entry><rhn-package-changelog-entry><rhn-package-changelog-entry-name>Erik Troan &lt;ewt@redhat.com&gt;</rhn-package-changelog-entry-name><rhn-package-changelog-entry-text>- built against glibc</rhn-package-changelog-entry-text><rhn-package-changelog-entry-time>868590000</rhn-package-changelog-entry-time></rhn-package-changelog-entry><rhn-package-changelog-entry><rhn-package-changelog-entry-name>Erik Troan &lt;ewt@redhat.com&gt;</rhn-package-changelog-entry-name><rhn-package-changelog-entry-text>- set limits for jadetex</rhn-package-changelog-entry-text><rhn-package-changelog-entry-time>922244400</rhn-package-changelog-entry-time></rhn-package-changelog-entry><rhn-package-changelog-entry><rhn-package-changelog-entry-name>Giuseppe GhibÃ² &lt;ghibo@caesar.polito.it&gt;</rhn-package-changelog-entry-name><rhn-package-changelog-entry-text>- fixed and removed unneeded things in teTeX-1.0-texmfcnf.patch,
  according to Thomas Esser suggestions.</rhn-package-changelog-entry-text><rhn-package-changelog-entry-time>930193200</rhn-package-changelog-entry-time></rhn-package-changelog-entry><rhn-package-changelog-entry><rhn-package-changelog-entry-name>Giuseppe GhibÃ² &lt;ghibo@caesar.polito.it&gt;</rhn-package-changelog-entry-name><rhn-package-changelog-entry-text>- fixed new bugs reported by Thomas Esser (included
  patch 1.0.5-1.0.6-pre).
- added amstex, bamstex and bplain to the list of format files to build.</rhn-package-changelog-entry-text><rhn-package-changelog-entry-time>930366000</rhn-package-changelog-entry-time></rhn-package-changelog-entry><rhn-package-changelog-entry><rhn-package-changelog-entry-name>Giuseppe GhibÃ² &lt;ghibo@caesar.polito.it&gt;</rhn-package-changelog-entry-name><rhn-package-changelog-entry-text>- mandrake adaptions.
- speed up TEXMFCNF path.</rhn-package-changelog-entry-text><rhn-package-changelog-entry-time>930452400</rhn-package-changelog-entry-time></rhn-package-changelog-entry><rhn-package-changelog-entry><rhn-package-changelog-entry-name>Giuseppe GhibÃ² &lt;ghibo@caesar.polito.it&gt;</rhn-package-changelog-entry-name><rhn-package-changelog-entry-text>- upgraded to teTeX 1.0 final.
- removed texmf.cnf external config file, and provided
  as patch.
- removed ``texconfig init&apos;&apos; (now it&apos;s included into &apos;make install&apos;).
- moved texmf unpacking to buildroot before &apos;make install&apos;.
- added italian hyphenation.</rhn-package-changelog-entry-text><rhn-package-changelog-entry-time>929329200</rhn-package-changelog-entry-time></rhn-package-changelog-entry><rhn-package-changelog-entry><rhn-package-changelog-entry-name>Giuseppe GhibÃ² &lt;ghibo@caesar.polito.it&gt;</rhn-package-changelog-entry-name><rhn-package-changelog-entry-text>- upgraded to teTeX 1.0.5.
- merged .spec file with Jeff Johnson&apos;s 1.0.1 .spec file from rawhide.</rhn-package-changelog-entry-text><rhn-package-changelog-entry-time>929934000</rhn-package-changelog-entry-time></rhn-package-changelog-entry><rhn-package-changelog-entry><rhn-package-changelog-entry-name>Giuseppe GhibÃ² &lt;ghibo@linux-mandrake.com&gt;</rhn-package-changelog-entry-name><rhn-package-changelog-entry-text>- cleaned %clean. Now spec file support buildroot.
- added support for &apos;resolution&apos; in dvi-to-ps.fpi as well as
  the config.generic file.
- fixed a problem in manpage links (reported by Dusan
  Gabrijelcic &lt;dusan@kamra.e5.ijs.si&gt;).</rhn-package-changelog-entry-text><rhn-package-changelog-entry-time>935636400</rhn-package-changelog-entry-time></rhn-package-changelog-entry><rhn-package-changelog-entry><rhn-package-changelog-entry-name>Giuseppe GhibÃ² &lt;ghibo@linux-mandrake.com&gt;</rhn-package-changelog-entry-name><rhn-package-changelog-entry-text>- fine tuning subpackage package list.
- added teTeX dependence to package xdvi (it cannot works without fonts).</rhn-package-changelog-entry-text><rhn-package-changelog-entry-time>935722800</rhn-package-changelog-entry-time></rhn-package-changelog-entry><rhn-package-changelog-entry><rhn-package-changelog-entry-name>Giuseppe GhibÃ² &lt;ghibo@linux-mandrake.com&gt;</rhn-package-changelog-entry-name><rhn-package-changelog-entry-text>- fixed VARTEXFONTS path in config file.</rhn-package-changelog-entry-text><rhn-package-changelog-entry-time>933822000</rhn-package-changelog-entry-time></rhn-package-changelog-entry><rhn-package-changelog-entry><rhn-package-changelog-entry-name>Giuseppe GhibÃ² &lt;ghibo@linux-mandrake.com&gt;</rhn-package-changelog-entry-name><rhn-package-changelog-entry-text>- mark also config.pdf, config.www and config.generic as %config.
- added BuildPreReq.</rhn-package-changelog-entry-text><rhn-package-changelog-entry-time>942375600</rhn-package-changelog-entry-time></rhn-package-changelog-entry><rhn-package-changelog-entry><rhn-package-changelog-entry-name>Giuseppe GhibÃ² &lt;ghibo@mandrakesoft.com&gt;</rhn-package-changelog-entry-name><rhn-package-changelog-entry-text>- updated to version 1.0.7.
- merged k6 and arm patches into teTeX-1.0-arch.patch
- sligtly increased internal array main_memory, so that latex
  doesn&apos;t have problems with big macro packages such as pstricks
  or Xy-TeX.
- integrate teTeX-1.0-tektrokix.patch (fixes a typo) from Jeff
  Johnson &lt;jbj@redhat.com&gt;.</rhn-package-changelog-entry-text><rhn-package-changelog-entry-time>950324400</rhn-package-changelog-entry-time></rhn-package-changelog-entry><rhn-package-changelog-entry><rhn-package-changelog-entry-name>Giuseppe GhibÃ² &lt;ghibo@mandrakesoft.com&gt; 1.0.7-5mdk</rhn-package-changelog-entry-name><rhn-package-changelog-entry-text>- changed arrays texmf.cnf the array value for jadetex, pdfjadetex, according to  the Christoph, Rahtz, Pepping&apos;s &quot;Installing JadeTeX&quot; document.</rhn-package-changelog-entry-text><rhn-package-changelog-entry-time>957063600</rhn-package-changelog-entry-time></rhn-package-changelog-entry><rhn-package-changelog-entry><rhn-package-changelog-entry-name>Giuseppe GhibÃ² &lt;ghibo@mandrakesoft.com&gt; 1.0.7-7mdk</rhn-package-changelog-entry-name><rhn-package-changelog-entry-text>- updated the LaTeX hyperref package to version 6.70f for getting jadetex
  working.
- added support for spanish, portuguese and sweden pattern hyphenation in the
  default LaTeX format files (hope trie values are enough...).</rhn-package-changelog-entry-text><rhn-package-changelog-entry-time>960001200</rhn-package-changelog-entry-time></rhn-package-changelog-entry><rhn-package-changelog-entry><rhn-package-changelog-entry-name>Giuseppe GhibÃ² &lt;ghibo@mandrakesoft.com&gt; 1.0.7-8mdk</rhn-package-changelog-entry-name><rhn-package-changelog-entry-text>- increased trie size for allowing more hyphenation patterns (i18n).</rhn-package-changelog-entry-text><rhn-package-changelog-entry-time>967258800</rhn-package-changelog-entry-time></rhn-package-changelog-entry><rhn-package-changelog-entry><rhn-package-changelog-entry-name>ISHIKAWA Mutsumi &lt;ishikawa@redhat.com&gt;</rhn-package-changelog-entry-name><rhn-package-changelog-entry-text>- Japanese enbaled</rhn-package-changelog-entry-text><rhn-package-changelog-entry-time>967172400</rhn-package-changelog-entry-time></rhn-package-changelog-entry><rhn-package-changelog-entry><rhn-package-changelog-entry-name>ISHIKAWA Mutsumi &lt;ishikawa@redhat.com&gt;</rhn-package-changelog-entry-name><rhn-package-changelog-entry-text>- rebuilt on RedHat7.0 again</rhn-package-changelog-entry-text><rhn-package-changelog-entry-time>967604400</rhn-package-changelog-entry-time></rhn-package-changelog-entry><rhn-package-changelog-entry><rhn-package-changelog-entry-name>Jakub Jelinek &lt;jakub@redhat.com&gt;</rhn-package-changelog-entry-name><rhn-package-changelog-entry-text>- Rebuild with new C++</rhn-package-changelog-entry-text><rhn-package-changelog-entry-time>962593200</rhn-package-changelog-entry-time></rhn-package-changelog-entry><rhn-package-changelog-entry><rhn-package-changelog-entry-name>Jeff Johnson &lt;jbj@redhat.com&gt;</rhn-package-changelog-entry-name><rhn-package-changelog-entry-text>- Create tetex-fonts to remove dependendency of xdvi on main tetex package.</rhn-package-changelog-entry-text><rhn-package-changelog-entry-time>936414000</rhn-package-changelog-entry-time></rhn-package-changelog-entry><rhn-package-changelog-entry><rhn-package-changelog-entry-name>Jeff Johnson &lt;jbj@redhat.com&gt;</rhn-package-changelog-entry-name><rhn-package-changelog-entry-text>- Integrate Giuseppe&apos;s latest. Thanks for the fixes!</rhn-package-changelog-entry-text><rhn-package-changelog-entry-time>936068400</rhn-package-changelog-entry-time></rhn-package-changelog-entry><rhn-package-changelog-entry><rhn-package-changelog-entry-name>Jeff Johnson &lt;jbj@redhat.com&gt;</rhn-package-changelog-entry-name><rhn-package-changelog-entry-text>- Sync with Mandrake (tetex-1.0.7-2mdk).
- update to teTeX-texmf-1.0.2.tar.</rhn-package-changelog-entry-text><rhn-package-changelog-entry-time>953607600</rhn-package-changelog-entry-time></rhn-package-changelog-entry><rhn-package-changelog-entry><rhn-package-changelog-entry-name>Jeff Johnson &lt;jbj@redhat.com&gt;</rhn-package-changelog-entry-name><rhn-package-changelog-entry-text>- build for Red Hat 6.2 (and sync with Mandrake tetex-1.0.6-6mdk).
- always apply AMD K6 patch; won&apos;t hurt, and removes platform dependency.
- spelling correction (#7085).</rhn-package-changelog-entry-text><rhn-package-changelog-entry-time>947991600</rhn-package-changelog-entry-time></rhn-package-changelog-entry><rhn-package-changelog-entry><rhn-package-changelog-entry-name>Jeff Johnson &lt;jbj@redhat.com&gt;</rhn-package-changelog-entry-name><rhn-package-changelog-entry-text>- build root</rhn-package-changelog-entry-text><rhn-package-changelog-entry-time>903409200</rhn-package-changelog-entry-time></rhn-package-changelog-entry><rhn-package-changelog-entry><rhn-package-changelog-entry-name>Jeff Johnson &lt;jbj@redhat.com&gt;</rhn-package-changelog-entry-name><rhn-package-changelog-entry-text>- compress man pages.</rhn-package-changelog-entry-text><rhn-package-changelog-entry-time>949978800</rhn-package-changelog-entry-time></rhn-package-changelog-entry><rhn-package-changelog-entry><rhn-package-changelog-entry-name>Jeff Johnson &lt;jbj@redhat.com&gt;</rhn-package-changelog-entry-name><rhn-package-changelog-entry-text>- eliminate environment when running texhash (problem #849)</rhn-package-changelog-entry-text><rhn-package-changelog-entry-time>903754800</rhn-package-changelog-entry-time></rhn-package-changelog-entry><rhn-package-changelog-entry><rhn-package-changelog-entry-name>Jeff Johnson &lt;jbj@redhat.com&gt;</rhn-package-changelog-entry-name><rhn-package-changelog-entry-text>- make sub-packages depend on teTeX (problem #214)</rhn-package-changelog-entry-text><rhn-package-changelog-entry-time>903841200</rhn-package-changelog-entry-time></rhn-package-changelog-entry><rhn-package-changelog-entry><rhn-package-changelog-entry-name>Jeff Johnson &lt;jbj@redhat.com&gt;</rhn-package-changelog-entry-name><rhn-package-changelog-entry-text>- mark /usr/share/texmf/dvips/config/config.ps as %config (#4842).</rhn-package-changelog-entry-text><rhn-package-changelog-entry-time>936414000</rhn-package-changelog-entry-time></rhn-package-changelog-entry><rhn-package-changelog-entry><rhn-package-changelog-entry-name>Jeff Johnson &lt;jbj@redhat.com&gt;</rhn-package-changelog-entry-name><rhn-package-changelog-entry-text>- merge japanese changes (disabled for now, per msw@redhat.com).
- add support for Icelandic (Richard Allen &lt;ra@hp.is&gt;).</rhn-package-changelog-entry-text><rhn-package-changelog-entry-time>972010800</rhn-package-changelog-entry-time></rhn-package-changelog-entry><rhn-package-changelog-entry><rhn-package-changelog-entry-name>Jeff Johnson &lt;jbj@redhat.com&gt;</rhn-package-changelog-entry-name><rhn-package-changelog-entry-text>- move /usr/bin/mfw to tetex-xdvi to remove tetex dependence on XFree86.</rhn-package-changelog-entry-text><rhn-package-changelog-entry-time>934945200</rhn-package-changelog-entry-time></rhn-package-changelog-entry><rhn-package-changelog-entry><rhn-package-changelog-entry-name>Jeff Johnson &lt;jbj@redhat.com&gt;</rhn-package-changelog-entry-name><rhn-package-changelog-entry-text>- rebuild for sparc baud rates &gt; 38400.</rhn-package-changelog-entry-text><rhn-package-changelog-entry-time>952484400</rhn-package-changelog-entry-time></rhn-package-changelog-entry><rhn-package-changelog-entry><rhn-package-changelog-entry-name>Jeff Johnson &lt;jbj@redhat.com&gt;</rhn-package-changelog-entry-name><rhn-package-changelog-entry-text>- rebuild with VARTEXFONTS configured correctly.</rhn-package-changelog-entry-text><rhn-package-changelog-entry-time>934772400</rhn-package-changelog-entry-time></rhn-package-changelog-entry><rhn-package-changelog-entry><rhn-package-changelog-entry-name>Jeff Johnson &lt;jbj@redhat.com&gt;</rhn-package-changelog-entry-name><rhn-package-changelog-entry-text>- sync with Mandrake version.
- Revert gcc296 patch, no longer needed.
- Enable i18n hyphenation for several languages (#11570,#17040).
- jadetex hash is now 50000 (#9092)
- create symlinks for Euler fonts (#9782).
- correct comment tetex.cron (#10022).
- unset TEXINPUTS in %build/%install (#10412).
- use Xaw3d rather than Xaw (#17415).
- insert thumbnails into pdflatex correctly (#19278).
- update to texi2html-1.64 (#20604).
- add latex2html (but not on ia64) (#16966).
- hacks to avoid accidental version clash with system libraries (#21263).
- rebuild with gcc-2.96-69 so that latex.fmt is built (#22838).</rhn-package-changelog-entry-text><rhn-package-changelog-entry-time>978145200</rhn-package-changelog-entry-time></rhn-package-changelog-entry><rhn-package-changelog-entry><rhn-package-changelog-entry-name>Jeff Johnson &lt;jbj@redhat.com&gt;</rhn-package-changelog-entry-name><rhn-package-changelog-entry-text>- update to 1.0.6.
- merge in Giuseppe GhibÃ² changes from mandrake package.
- dvi-to-ps.fpi: read postcript configuration settings (#3379).</rhn-package-changelog-entry-text><rhn-package-changelog-entry-time>934513200</rhn-package-changelog-entry-time></rhn-package-changelog-entry><rhn-package-changelog-entry><rhn-package-changelog-entry-name>Jeff Johnson &lt;jbj@redhat.com&gt;</rhn-package-changelog-entry-name><rhn-package-changelog-entry-text>- upgrade to 1.0.1.
- add buildroot translated texmfmain for install (#1719)
- mark /usr/share/texmf/xdvi/XDvi as %config (#1067)
- generate texmf.cnf and then merge in old conventions</rhn-package-changelog-entry-text><rhn-package-changelog-entry-time>928897200</rhn-package-changelog-entry-time></rhn-package-changelog-entry><rhn-package-changelog-entry><rhn-package-changelog-entry-name>Jens Petersen &lt;petersen@redhat.com&gt; 1.0.7-29</rhn-package-changelog-entry-name><rhn-package-changelog-entry-text>- fix dvipsk-j Makemake.in so that prologues install in right place (#52490)</rhn-package-changelog-entry-text><rhn-package-changelog-entry-time>999572400</rhn-package-changelog-entry-time></rhn-package-changelog-entry><rhn-package-changelog-entry><rhn-package-changelog-entry-name>Kayvan A. Sylvan &lt;kayvan@sylvan.com&gt;</rhn-package-changelog-entry-name><rhn-package-changelog-entry-text>- upgraded snapshot
- Fixed PATH setting for ``texconfig init&apos;&apos;. As it was, you could
  not build a working teTeX on a machine with tetex installed.</rhn-package-changelog-entry-text><rhn-package-changelog-entry-time>928465200</rhn-package-changelog-entry-time></rhn-package-changelog-entry><rhn-package-changelog-entry><rhn-package-changelog-entry-name>Masato Taruishi &lt;taru@debian.org&gt;</rhn-package-changelog-entry-name><rhn-package-changelog-entry-text>- Fixed xdvik-ja to work in 1.0.7 correctly.
- Added a Japanese fontdata for a Japanized dvipsk.</rhn-package-changelog-entry-text><rhn-package-changelog-entry-time>967518000</rhn-package-changelog-entry-time></rhn-package-changelog-entry><rhn-package-changelog-entry><rhn-package-changelog-entry-name>Matt Wilson &lt;msw@redhat.com&gt;</rhn-package-changelog-entry-name><rhn-package-changelog-entry-text>- patched for NORETURN functions in gcc 2.96, rebuilt against new libstdc++</rhn-package-changelog-entry-text><rhn-package-changelog-entry-time>959828400</rhn-package-changelog-entry-time></rhn-package-changelog-entry><rhn-package-changelog-entry><rhn-package-changelog-entry-name>Michael Fulbright &lt;msf@redhat.com&gt;</rhn-package-changelog-entry-name><rhn-package-changelog-entry-text>- Fixed dvi-to-ps.fpi to create temp files more safely.</rhn-package-changelog-entry-text><rhn-package-changelog-entry-time>876884400</rhn-package-changelog-entry-time></rhn-package-changelog-entry><rhn-package-changelog-entry><rhn-package-changelog-entry-name>Michael Fulbright &lt;msf@redhat.com&gt;</rhn-package-changelog-entry-name><rhn-package-changelog-entry-text>- Removed afmdoit from file list (mistakenly added in release 3 rpm)</rhn-package-changelog-entry-text><rhn-package-changelog-entry-time>860554800</rhn-package-changelog-entry-time></rhn-package-changelog-entry><rhn-package-changelog-entry><rhn-package-changelog-entry-name>Michael Fulbright &lt;msf@redhat.com&gt;</rhn-package-changelog-entry-name><rhn-package-changelog-entry-text>- Upgraded to 0.4pl6, and fixed file permissions on /var/lib/texmf/texfonts
  so normal users could create fonts on demand.</rhn-package-changelog-entry-text><rhn-package-changelog-entry-time>856234800</rhn-package-changelog-entry-time></rhn-package-changelog-entry><rhn-package-changelog-entry><rhn-package-changelog-entry-name>Michael Fulbright &lt;msf@redhat.com&gt;</rhn-package-changelog-entry-name><rhn-package-changelog-entry-text>- Upgraded to 0.4pl7.</rhn-package-changelog-entry-text><rhn-package-changelog-entry-time>857790000</rhn-package-changelog-entry-time></rhn-package-changelog-entry><rhn-package-changelog-entry><rhn-package-changelog-entry-name>Michael Fulbright &lt;msf@redhat.com&gt;</rhn-package-changelog-entry-name><rhn-package-changelog-entry-text>- Upgraded to tetex-lib to 0.4pl8 and fixed cron tmpwatch entry to not
  delete /var/lib/texmf/fonts and /var/lib/texmf/texfonts</rhn-package-changelog-entry-text><rhn-package-changelog-entry-time>859258800</rhn-package-changelog-entry-time></rhn-package-changelog-entry><rhn-package-changelog-entry><rhn-package-changelog-entry-name>Michael Maher &lt;mike@redhat.com&gt;</rhn-package-changelog-entry-name><rhn-package-changelog-entry-text>- fixed BUG: 978</rhn-package-changelog-entry-text><rhn-package-changelog-entry-time>921553200</rhn-package-changelog-entry-time></rhn-package-changelog-entry><rhn-package-changelog-entry><rhn-package-changelog-entry-name>Michael Maher &lt;mike@redhat.com&gt;</rhn-package-changelog-entry-name><rhn-package-changelog-entry-text>- updated package</rhn-package-changelog-entry-text><rhn-package-changelog-entry-time>920862000</rhn-package-changelog-entry-time></rhn-package-changelog-entry><rhn-package-changelog-entry><rhn-package-changelog-entry-name>Otto Hammersmith &lt;otto@redhat.com&gt;</rhn-package-changelog-entry-name><rhn-package-changelog-entry-text>- added install-info support (dvips, fontname and kpathsea)
- combined the two changelogs in the spec file.</rhn-package-changelog-entry-text><rhn-package-changelog-entry-time>886734000</rhn-package-changelog-entry-time></rhn-package-changelog-entry><rhn-package-changelog-entry><rhn-package-changelog-entry-name>Preston Brown &lt;pbrown@redhat.com&gt;</rhn-package-changelog-entry-name><rhn-package-changelog-entry-text>- noreplace *.cnf</rhn-package-changelog-entry-text><rhn-package-changelog-entry-time>961642800</rhn-package-changelog-entry-time></rhn-package-changelog-entry><rhn-package-changelog-entry><rhn-package-changelog-entry-name>Preston Brown &lt;pbrown@redhat.com&gt;</rhn-package-changelog-entry-name><rhn-package-changelog-entry-text>- use _infodir</rhn-package-changelog-entry-text><rhn-package-changelog-entry-time>961729200</rhn-package-changelog-entry-time></rhn-package-changelog-entry><rhn-package-changelog-entry><rhn-package-changelog-entry-name>Preston Brown &lt;pbrown@redhat.com&gt;</rhn-package-changelog-entry-name><rhn-package-changelog-entry-text>- wmconfig entry gone.</rhn-package-changelog-entry-text><rhn-package-changelog-entry-time>950151600</rhn-package-changelog-entry-time></rhn-package-changelog-entry><rhn-package-changelog-entry><rhn-package-changelog-entry-name>Prospector &lt;bugzilla@redhat.com&gt;</rhn-package-changelog-entry-name><rhn-package-changelog-entry-text>- automatic rebuild</rhn-package-changelog-entry-text><rhn-package-changelog-entry-time>963457200</rhn-package-changelog-entry-time></rhn-package-changelog-entry><rhn-package-changelog-entry><rhn-package-changelog-entry-name>Prospector System &lt;bugs@redhat.com&gt;</rhn-package-changelog-entry-name><rhn-package-changelog-entry-text>- translations modified for de, fr, tr</rhn-package-changelog-entry-text><rhn-package-changelog-entry-time>894596400</rhn-package-changelog-entry-time></rhn-package-changelog-entry><rhn-package-changelog-entry><rhn-package-changelog-entry-name>Tim Powers &lt;timp@redhat.com&gt; 1.0.7-30</rhn-package-changelog-entry-name><rhn-package-changelog-entry-text>- rebuild to see if that tempfile in /usr/bin doesn&apos;t go away (possible build anomoly that can&apos;t be reproduced)</rhn-package-changelog-entry-text><rhn-package-changelog-entry-time>999918000</rhn-package-changelog-entry-time></rhn-package-changelog-entry><rhn-package-changelog-entry><rhn-package-changelog-entry-name>Tim Waugh &lt;twaugh@redhat.com&gt;</rhn-package-changelog-entry-name><rhn-package-changelog-entry-text>- Turn on Japanese changes (bug #26249).
- Japanese support clashed with xaw3d patch; fixed up.
- Replace dvi-to-ps (rhs-printfilters) with mf40-tetex_filters
  (printconf).  Create testpage.dvi (from tex/latex/base/testpage.tex).
- Default to lj instead of cx in gray.mf and black.mf (bug #25988).
- Build requires VFlib2-devel.</rhn-package-changelog-entry-text><rhn-package-changelog-entry-time>981514800</rhn-package-changelog-entry-time></rhn-package-changelog-entry><rhn-package-changelog-entry><rhn-package-changelog-entry-name>Tim Waugh &lt;twaugh@redhat.com&gt;</rhn-package-changelog-entry-name><rhn-package-changelog-entry-text>- Update tetex-dvilj description.
- Patch latex2html to support tabularx environments better (bug #24852).
- Make xdvi work with files that end in &apos;.&apos; (bug #11478).
- Mark ls-R as %ghost (bug #12275).
- Build requires w3c-libwww-devel.</rhn-package-changelog-entry-text><rhn-package-changelog-entry-time>980391600</rhn-package-changelog-entry-time></rhn-package-changelog-entry><rhn-package-changelog-entry><rhn-package-changelog-entry-name>Tim Waugh &lt;twaugh@redhat.com&gt; 1.0.7-14</rhn-package-changelog-entry-name><rhn-package-changelog-entry-text>- Update dvipsk-jpatch to p1.5d (fixes bug #32121).</rhn-package-changelog-entry-text><rhn-package-changelog-entry-time>985057200</rhn-package-changelog-entry-time></rhn-package-changelog-entry><rhn-package-changelog-entry><rhn-package-changelog-entry-name>Tim Waugh &lt;twaugh@redhat.com&gt; 1.0.7-16</rhn-package-changelog-entry-name><rhn-package-changelog-entry-text>- Updated texinfo translation files (bug #8682).
- Make tetex-dvips require psutils (bug #13216).
- Don&apos;t ship backup file from cx patch.
- Make japanese.map work (bug #32134).
- Make xdvi prettier (bug #17415).
- Fix PDF images (bug #32703).</rhn-package-changelog-entry-text><rhn-package-changelog-entry-time>986871600</rhn-package-changelog-entry-time></rhn-package-changelog-entry><rhn-package-changelog-entry><rhn-package-changelog-entry-name>Tim Waugh &lt;twaugh@redhat.com&gt; 1.0.7-17</rhn-package-changelog-entry-name><rhn-package-changelog-entry-text>- More backup files not to ship (bug #35801).
- Remove the ^Z from picins.sty (bug #36497).
- Run updmap to get psfonts.map updated (bugs #17333, #37513).</rhn-package-changelog-entry-text><rhn-package-changelog-entry-time>989377200</rhn-package-changelog-entry-time></rhn-package-changelog-entry><rhn-package-changelog-entry><rhn-package-changelog-entry-name>Tim Waugh &lt;twaugh@redhat.com&gt; 1.0.7-18</rhn-package-changelog-entry-name><rhn-package-changelog-entry-text>- Don&apos;t use PID in temporary file names for scripts (bug #41269).</rhn-package-changelog-entry-text><rhn-package-changelog-entry-time>990241200</rhn-package-changelog-entry-time></rhn-package-changelog-entry><rhn-package-changelog-entry><rhn-package-changelog-entry-name>Tim Waugh &lt;twaugh@redhat.com&gt; 1.0.7-19</rhn-package-changelog-entry-name><rhn-package-changelog-entry-text>- Revert &apos;Run updmap to get psfonts.map updates&apos;, it breaks dvips
  completely (bug #42255).</rhn-package-changelog-entry-text><rhn-package-changelog-entry-time>990846000</rhn-package-changelog-entry-time></rhn-package-changelog-entry><rhn-package-changelog-entry><rhn-package-changelog-entry-name>Tim Waugh &lt;twaugh@redhat.com&gt; 1.0.7-20</rhn-package-changelog-entry-name><rhn-package-changelog-entry-text>- LaTeX 01/06/2000.</rhn-package-changelog-entry-text><rhn-package-changelog-entry-time>992055600</rhn-package-changelog-entry-time></rhn-package-changelog-entry><rhn-package-changelog-entry><rhn-package-changelog-entry-name>Tim Waugh &lt;twaugh@redhat.com&gt; 1.0.7-21</rhn-package-changelog-entry-name><rhn-package-changelog-entry-text>- Use Guiseppe GhibÃ²&apos;s texmf-gg archive.</rhn-package-changelog-entry-text><rhn-package-changelog-entry-time>992314800</rhn-package-changelog-entry-time></rhn-package-changelog-entry><rhn-package-changelog-entry><rhn-package-changelog-entry-name>Tim Waugh &lt;twaugh@redhat.com&gt; 1.0.7-22</rhn-package-changelog-entry-name><rhn-package-changelog-entry-text>- XDvi resources: mfmode back to cx (bug #44182).
- Patch from Oliver Paukstadt &lt;oliver.paukstadt@millenux.com&gt;:
  - ported to IBM zSeries (s390x, 64 bit)</rhn-package-changelog-entry-text><rhn-package-changelog-entry-time>992487600</rhn-package-changelog-entry-time></rhn-package-changelog-entry><rhn-package-changelog-entry><rhn-package-changelog-entry-name>Tim Waugh &lt;twaugh@redhat.com&gt; 1.0.7-23</rhn-package-changelog-entry-name><rhn-package-changelog-entry-text>- Spec file clean-ups (texmf-gg includes LaTeX 01/06/2000).</rhn-package-changelog-entry-text><rhn-package-changelog-entry-time>992660400</rhn-package-changelog-entry-time></rhn-package-changelog-entry><rhn-package-changelog-entry><rhn-package-changelog-entry-name>Tim Waugh &lt;twaugh@redhat.com&gt; 1.0.7-24</rhn-package-changelog-entry-name><rhn-package-changelog-entry-text>- Change Copyright: to License:.</rhn-package-changelog-entry-text><rhn-package-changelog-entry-time>994474800</rhn-package-changelog-entry-time></rhn-package-changelog-entry><rhn-package-changelog-entry><rhn-package-changelog-entry-name>Tim Waugh &lt;twaugh@redhat.com&gt; 1.0.7-25</rhn-package-changelog-entry-name><rhn-package-changelog-entry-text>- Build requires Xaw3d-devel (bug #49718).</rhn-package-changelog-entry-text><rhn-package-changelog-entry-time>996030000</rhn-package-changelog-entry-time></rhn-package-changelog-entry><rhn-package-changelog-entry><rhn-package-changelog-entry-name>Tim Waugh &lt;twaugh@redhat.com&gt; 1.0.7-26</rhn-package-changelog-entry-name><rhn-package-changelog-entry-text>- Don&apos;t put texi2html.html in /usr/html (bug #50643).
- Newer Japanese dvipsk patch (bug #46785).
- Build Japanese-patched dvipsk as &apos;pdvips&apos; like SuSE (bug #46785).
- Don&apos;t apply patch 46, and hopefully fix bug #48842.</rhn-package-changelog-entry-text><rhn-package-changelog-entry-time>996894000</rhn-package-changelog-entry-time></rhn-package-changelog-entry><rhn-package-changelog-entry><rhn-package-changelog-entry-name>Tim Waugh &lt;twaugh@redhat.com&gt; 1.0.7-27</rhn-package-changelog-entry-name><rhn-package-changelog-entry-text>- updmap is a config file (bug #50854).
- Use a different config.ps for pdvips (bug #48842).
- Run updmap in dvips/config and pdvips/config (bug #37513).
- Put pdvips-specific settings in texmf.cnf (various, incl. bug #48842).</rhn-package-changelog-entry-text><rhn-package-changelog-entry-time>997239600</rhn-package-changelog-entry-time></rhn-package-changelog-entry><rhn-package-changelog-entry><rhn-package-changelog-entry-name>Tim Waugh &lt;twaugh@redhat.com&gt; 1.0.7-28</rhn-package-changelog-entry-name><rhn-package-changelog-entry-text>- Don&apos;t ship backup file texmf.cnf.pdvips (bug #52174).
- Actually ship the patched texmf.cnf file (bug #48842).
- Japanese xdvik patch version 1.04.
- Build Japanese-patched xdvik as &apos;pxdvik&apos; bug (bug #52089).</rhn-package-changelog-entry-text><rhn-package-changelog-entry-time>998449200</rhn-package-changelog-entry-time></rhn-package-changelog-entry><rhn-package-changelog-entry><rhn-package-changelog-entry-name>Tim Waugh &lt;twaugh@redhat.com&gt; 1.0.7-31</rhn-package-changelog-entry-name><rhn-package-changelog-entry-text>- Choose a package for files owned by multiple packages (bug #51584).
- Updated pTeX to 2.1.11, using patch from MATSUURA Takanori (bug #51817).
- Updated pdftex to 0.14h (bug #48261, bug #46067, bug #52902).
- Run texconfig init again at the end of installation, to take account of
  things installed by hand (like pdftex).
- Don&apos;t run reautoconf; it shouldn&apos;t be needed anyway.
- Fix build problems arising when Japanese is disabled.</rhn-package-changelog-entry-text><rhn-package-changelog-entry-time>1000782000</rhn-package-changelog-entry-time></rhn-package-changelog-entry><rhn-package-changelog-entry><rhn-package-changelog-entry-name>Tim Waugh &lt;twaugh@redhat.com&gt; 1.0.7-32</rhn-package-changelog-entry-name><rhn-package-changelog-entry-text>- Fix up configure scripts for libwww detection in pxdvik.</rhn-package-changelog-entry-text><rhn-package-changelog-entry-time>1001473200</rhn-package-changelog-entry-time></rhn-package-changelog-entry><rhn-package-changelog-entry><rhn-package-changelog-entry-name>Tim Waugh &lt;twaugh@redhat.com&gt; 1.0.7-33</rhn-package-changelog-entry-name><rhn-package-changelog-entry-text>- Move XDvi app-defaults file to main package (bug #45865).
- Rebuild to fix bug #54336.</rhn-package-changelog-entry-text><rhn-package-changelog-entry-time>1002510000</rhn-package-changelog-entry-time></rhn-package-changelog-entry><rhn-package-changelog-entry><rhn-package-changelog-entry-name>Tim Waugh &lt;twaugh@redhat.com&gt; 1.0.7-34</rhn-package-changelog-entry-name><rhn-package-changelog-entry-text>- Adjust resource limits for pdfxmltex.</rhn-package-changelog-entry-text><rhn-package-changelog-entry-time>1002682800</rhn-package-changelog-entry-time></rhn-package-changelog-entry><rhn-package-changelog-entry><rhn-package-changelog-entry-name>Tim Waugh &lt;twaugh@redhat.com&gt; 1.0.7-35</rhn-package-changelog-entry-name><rhn-package-changelog-entry-text>- Set up TEXINPUTS for pdfxmltex.
- Own more directories (bug #51381, bug #54527).</rhn-package-changelog-entry-text><rhn-package-changelog-entry-time>1002942000</rhn-package-changelog-entry-time></rhn-package-changelog-entry><rhn-package-changelog-entry><rhn-package-changelog-entry-name>Tim Waugh &lt;twaugh@redhat.com&gt; 1.0.7-36</rhn-package-changelog-entry-name><rhn-package-changelog-entry-text>- Rebuild in sane build environment (bug #54961).
- Enable HOMETEXMF (bug #55286).
- More texmf.cnf modifications for xmltex.</rhn-package-changelog-entry-text><rhn-package-changelog-entry-time>1005015600</rhn-package-changelog-entry-time></rhn-package-changelog-entry><rhn-package-changelog-entry><rhn-package-changelog-entry-name>Tim Waugh &lt;twaugh@redhat.com&gt; 1.0.7-37</rhn-package-changelog-entry-name><rhn-package-changelog-entry-text>- Update texdoc default helper applications (bug #55874).
- Make pxdvi generate fonts when they&apos;re missing (bug #55883).
- Mention &apos;texconfig&apos; in main package %description.
- Mark dvips config.* noreplace.
- Mark pdvips config files %config(noreplace).
- Sanity check the file lists.
- Set TEXMFLOCAL.
- Fix comment in tetex.cron (bug #56115).
- Adjust unused font removal time to 180 days (bug #56115).
- Add comment in texmf.cnf about how to use HOMETEXMF (bug #57063).</rhn-package-changelog-entry-text><rhn-package-changelog-entry-time>1005620400</rhn-package-changelog-entry-time></rhn-package-changelog-entry><rhn-package-changelog-entry><rhn-package-changelog-entry-name>Tim Waugh &lt;twaugh@redhat.com&gt; 1.0.7-38</rhn-package-changelog-entry-name><rhn-package-changelog-entry-text>- Rebuild with new gcc.
- Don&apos;t specify system include directories explicitly.</rhn-package-changelog-entry-text><rhn-package-changelog-entry-time>1007694000</rhn-package-changelog-entry-time></rhn-package-changelog-entry><rhn-package-changelog-entry><rhn-package-changelog-entry-name>Tim Waugh &lt;twaugh@redhat.com&gt; 1.0.7-38.2</rhn-package-changelog-entry-name><rhn-package-changelog-entry-text>- Build in Red Hat Linux 7.2 environment.
- Put TEXMFLOCAL in the search path.</rhn-package-changelog-entry-text><rhn-package-changelog-entry-time>1008126000</rhn-package-changelog-entry-time></rhn-package-changelog-entry><rhn-package-changelog-entry><rhn-package-changelog-entry-name>Tim Waugh &lt;twaugh@redhat.com&gt; 1.0.7-38.4</rhn-package-changelog-entry-name><rhn-package-changelog-entry-text>- Prevent insecure use of system() in dvips.
- Fix /var/lib/texmf/ls-R permissions.
- Build requires netpbm-progs.</rhn-package-changelog-entry-text><rhn-package-changelog-entry-time>1031367600</rhn-package-changelog-entry-time></rhn-package-changelog-entry><rhn-package-changelog-entry><rhn-package-changelog-entry-name>Trond Eivind GlomsrÃ¸d &lt;teg@redhat.com&gt;</rhn-package-changelog-entry-name><rhn-package-changelog-entry-text>- fix man pages in man, not man1
- use %{_tmppath}</rhn-package-changelog-entry-text><rhn-package-changelog-entry-time>964062000</rhn-package-changelog-entry-time></rhn-package-changelog-entry></rhn-package-changelog><rhn-package-requires><rhn-package-requires-entry version="4.0-1" sense="16777290" name="rpmlib(PayloadFilesHavePrefix)"/><rhn-package-requires-entry version="3.0.4-1" sense="16777290" name="rpmlib(CompressedFileNames)"/><rhn-package-requires-entry version="" sense="16384" name="/bin/sh"/><rhn-package-requires-entry version="" sense="16384" name="/usr/bin/perl"/></rhn-package-requires><rhn-package-provides><rhn-package-provides-entry version="1.0.7-38.4" sense="8" name="tetex-doc"/></rhn-package-provides><rhn-package-conflicts/><rhn-package-obsoletes/><rhn-package-files><rhn-package-file checksum-type="md5" checksum="3c9038d64545ef9c3f493efdd07e6899" inode="2982425" device="2304" mtime="890178801" flags="0" name="/usr/share/texmf/doc/Makefile" file_size="101" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="66d0d42997deceb2d271eec973ff3f72" inode="2982476" device="2304" mtime="783020248" flags="0" name="/usr/share/texmf/doc/README" file_size="577" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="" inode="1231489" device="2304" mtime="855846948" flags="0" name="/usr/share/texmf/doc/amstex" file_size="4096" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="16877" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="44acaca4cb489c305960dc4496fb5f24" inode="1231493" device="2304" mtime="854501340" flags="0" name="/usr/share/texmf/doc/amstex/READ.ME" file_size="9244" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="b01af2533a8f506900a11ab158142e46" inode="1231490" device="2304" mtime="855021288" flags="0" name="/usr/share/texmf/doc/amstex/amsguide.dvi" file_size="114792" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="acbfc75a4bf1fde68e87ce53d7cdd6b9" inode="1231492" device="2304" mtime="853019400" flags="0" name="/usr/share/texmf/doc/amstex/amstex.bug" file_size="22668" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="552cb90eebd776b2be7f485e2567c841" inode="1231491" device="2304" mtime="844012920" flags="0" name="/usr/share/texmf/doc/amstex/joyerr.tex" file_size="13910" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="" inode="1231494" device="2304" mtime="909264903" flags="0" name="/usr/share/texmf/doc/bibtex" file_size="4096" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="16877" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="" inode="1231495" device="2304" mtime="930415271" flags="0" name="/usr/share/texmf/doc/bibtex/base" file_size="4096" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="16877" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="bd3c5520a504e60057e9c4da26d038bf" inode="1231496" device="2304" mtime="930415271" flags="0" name="/usr/share/texmf/doc/bibtex/base/README" file_size="294" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="5edce75a2d50726f6ac8738bf3483147" inode="1231499" device="2304" mtime="773278962" flags="0" name="/usr/share/texmf/doc/bibtex/base/bibshare" file_size="2783" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="2ccd43c3a9641ec01ce32f9bfe1e1101" inode="1231500" device="2304" mtime="711646318" flags="0" name="/usr/share/texmf/doc/bibtex/base/btxdoc.bib" file_size="2306" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="b36915eb59773c92520254be6e05a1bb" inode="1231501" device="2304" mtime="800804220" flags="0" name="/usr/share/texmf/doc/bibtex/base/btxdoc.dvi" file_size="53592" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="f37a9df86abaf231b598a42ad2c403ec" inode="1231502" device="2304" mtime="711646322" flags="0" name="/usr/share/texmf/doc/bibtex/base/btxdoc.tex" file_size="41569" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="0b1cc2c6af407e7197797ddc4013a6f6" inode="1231497" device="2304" mtime="800804255" flags="0" name="/usr/share/texmf/doc/bibtex/base/btxhak.dvi" file_size="33120" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="daf206448e421ce87cf3998920160a0f" inode="1231498" device="2304" mtime="711646327" flags="0" name="/usr/share/texmf/doc/bibtex/base/btxhak.tex" file_size="25553" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="" inode="3111897" device="2304" mtime="946946583" flags="0" name="/usr/share/texmf/doc/context" file_size="4096" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="16877" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="" inode="3113023" device="2304" mtime="946946583" flags="0" name="/usr/share/texmf/doc/context/base" file_size="4096" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="16877" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="0f1d9afb8de136330ec20e39e905b9b8" inode="3113030" device="2304" mtime="898722000" flags="0" name="/usr/share/texmf/doc/context/base/1998-001.pdf" file_size="481607" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="b6fc7963762918bc207665d6c8344bf3" inode="3113029" device="2304" mtime="939234046" flags="0" name="/usr/share/texmf/doc/context/base/context.rme" file_size="1372" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="a7c02e65e9f58bb1b48742b8f1e6da11" inode="3113026" device="2304" mtime="944024954" flags="0" name="/usr/share/texmf/doc/context/base/minstall.pdf" file_size="86492" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="7bd6c33d3f32f1fb41572b47530f03d3" inode="3113024" device="2304" mtime="939224020" flags="0" name="/usr/share/texmf/doc/context/base/mreadme.pdf" file_size="73809" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="896d3556447fbb162cff0fb437c8b1f4" inode="3113027" device="2304" mtime="902890958" flags="0" name="/usr/share/texmf/doc/context/base/ms-cb-en.pdf" file_size="2823070" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="402cc9f2248d568c37a9af89ca53326c" inode="3113028" device="2304" mtime="922568912" flags="0" name="/usr/share/texmf/doc/context/base/readme.pdf" file_size="149965" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="f85abad01fe67ef41ab3854c917a3d0e" inode="3113031" device="2304" mtime="902779326" flags="0" name="/usr/share/texmf/doc/context/base/setup-en.pdf" file_size="322561" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="" inode="3064226" device="2304" mtime="922752893" flags="0" name="/usr/share/texmf/doc/context/ppchtex" file_size="4096" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="16877" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="1371ce392ac7f36d66d9c20d1e42e0ec" inode="3064227" device="2304" mtime="894051720" flags="0" name="/usr/share/texmf/doc/context/ppchtex/mp-ch-en.pdf" file_size="773238" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="14fa803b281d58ff73378cd30f435467" inode="3113032" device="2304" mtime="922753011" flags="0" name="/usr/share/texmf/doc/context/subset.rme" file_size="422" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="" inode="3352810" device="2304" mtime="934161442" flags="0" name="/usr/share/texmf/doc/cyrplain" file_size="4096" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="16877" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="d2cd8fa7c654d6a358a2f4bc0c4c4049" inode="3358556" device="2304" mtime="932862180" flags="0" name="/usr/share/texmf/doc/cyrplain/README" file_size="4219" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="575e0c12ffa96546451e46e38758d460" inode="3358557" device="2304" mtime="924239220" flags="0" name="/usr/share/texmf/doc/cyrplain/makefmts.sh" file_size="214" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="" inode="3783718" device="2304" mtime="886464042" flags="0" name="/usr/share/texmf/doc/eplain" file_size="4096" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="16877" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="443a5b8d0e8ab1375bac0c48ab9f3d2a" inode="3783719" device="2304" mtime="886464030" flags="0" name="/usr/share/texmf/doc/eplain/eplain.dvi" file_size="370948" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="" inode="3358558" device="2304" mtime="889757547" flags="0" name="/usr/share/texmf/doc/etex" file_size="4096" groupname="root" linkto="" rdev="909" verifyflags="-1" file_mode="16877" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="" inode="3831131" device="2304" mtime="928111589" flags="0" name="/usr/share/texmf/doc/etex/base" file_size="4096" groupname="root" linkto="" rdev="911" verifyflags="-1" file_mode="16877" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="a127c3a8599d11a8bef0f6ed8313ed6d" inode="3831132" device="2304" mtime="899065043" flags="0" name="/usr/share/texmf/doc/etex/base/etex-man.dvi" file_size="68492" groupname="root" linkto="" rdev="912" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="bb111ebaea7699726fd4b068eb6b7767" inode="3831133" device="2304" mtime="928111691" flags="0" name="/usr/share/texmf/doc/etex/base/etex-man.pdf" file_size="204476" groupname="root" linkto="" rdev="2816" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="" inode="1231484" device="2304" mtime="923184274" flags="0" name="/usr/share/texmf/doc/fontinst" file_size="4096" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="16877" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="" inode="1231485" device="2304" mtime="923184274" flags="0" name="/usr/share/texmf/doc/fontinst/base" file_size="4096" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="16877" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="2a57558a0fcf920c202ea1c3acb28ebe" inode="1231488" device="2304" mtime="899830680" flags="0" name="/usr/share/texmf/doc/fontinst/base/CHANGES" file_size="31817" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="dd600e2107c7372bbaf0c1268475f289" inode="1231487" device="2304" mtime="899828520" flags="0" name="/usr/share/texmf/doc/fontinst/base/fontinst.dvi" file_size="126352" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="4752451f0e53eaed1a800a96089cc444" inode="1231486" device="2304" mtime="811227600" flags="0" name="/usr/share/texmf/doc/fontinst/base/roadmap.eps" file_size="8475" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="" inode="3538435" device="2304" mtime="984184487" flags="0" name="/usr/share/texmf/doc/fonts" file_size="4096" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="16877" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="" inode="3816419" device="2304" mtime="915694377" flags="0" name="/usr/share/texmf/doc/fonts/ae" file_size="4096" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="16877" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="361b6b837cad26c6900a926b62aada5f" inode="3816421" device="2304" mtime="911503020" flags="0" name="/usr/share/texmf/doc/fonts/ae/COPYING" file_size="18043" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="4c421d90348be6c54d4770216e9a0f0e" inode="3816420" device="2304" mtime="912787560" flags="0" name="/usr/share/texmf/doc/fonts/ae/README" file_size="1156" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="380171c66d1ea3a36f54aa0de72ce1b4" inode="3816422" device="2304" mtime="905017852" flags="0" name="/usr/share/texmf/doc/fonts/ae/README2" file_size="390" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="" inode="3831134" device="2304" mtime="922841645" flags="0" name="/usr/share/texmf/doc/fonts/amsfonts" file_size="4096" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="16877" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="0a841bc0ac58f32faf5c4268823583f9" inode="3831137" device="2304" mtime="791698755" flags="0" name="/usr/share/texmf/doc/fonts/amsfonts/amsfndoc.dvi" file_size="146636" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="c4670222265e511c7c2f3eef8979e23f" inode="3831138" device="2304" mtime="882207900" flags="0" name="/usr/share/texmf/doc/fonts/amsfonts/amsfonts.bug" file_size="8741" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="e3395a791c08a7d99c377c660080d329" inode="3831139" device="2304" mtime="876084348" flags="0" name="/usr/share/texmf/doc/fonts/amsfonts/amsfonts.dvi" file_size="18908" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="83fe3f0c172e9d8159dd2b58ebd2d987" inode="3831140" device="2304" mtime="853297200" flags="0" name="/usr/share/texmf/doc/fonts/amsfonts/amsfonts.faq" file_size="6229" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="d37ba96e07325ff39a22a8b2fc8066c8" inode="3831136" device="2304" mtime="876084351" flags="0" name="/usr/share/texmf/doc/fonts/amsfonts/eufrak.dvi" file_size="5292" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="8f59bc37c770a068b44c60c8d6393dc1" inode="3831135" device="2304" mtime="876084354" flags="0" name="/usr/share/texmf/doc/fonts/amsfonts/euscript.dvi" file_size="6036" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="" inode="2555192" device="2304" mtime="949259993" flags="0" name="/usr/share/texmf/doc/fonts/belleek" file_size="4096" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="16877" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="41bf54d3394bba94416e460d49f7c29c" inode="2555193" device="2304" mtime="949259993" flags="0" name="/usr/share/texmf/doc/fonts/belleek/README" file_size="1570" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="" inode="2702509" device="2304" mtime="908061417" flags="0" name="/usr/share/texmf/doc/fonts/bluesky" file_size="4096" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="16877" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="30cdb9ff40f1d26a49663dab5dbfed2e" inode="2702580" device="2304" mtime="857269190" flags="0" name="/usr/share/texmf/doc/fonts/bluesky/readme" file_size="3206" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="" inode="2555199" device="2304" mtime="949166246" flags="0" name="/usr/share/texmf/doc/fonts/cbgreek" file_size="4096" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="16877" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="dafbd33f5193385e63382ca7129e7694" inode="2555200" device="2304" mtime="943539720" flags="0" name="/usr/share/texmf/doc/fonts/cbgreek/cbgreek.txt" file_size="11829" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="" inode="3618735" device="2304" mtime="919362262" flags="0" name="/usr/share/texmf/doc/fonts/cc-pl" file_size="4096" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="16877" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="9230b289e2ab7fe284864330b2ca7241" inode="3618736" device="2304" mtime="897364920" flags="0" name="/usr/share/texmf/doc/fonts/cc-pl/00readme" file_size="2824" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="" inode="2982426" device="2304" mtime="905018446" flags="0" name="/usr/share/texmf/doc/fonts/cm" file_size="4096" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="16877" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="f3c7b3737e14de20b797f4dc34dcd460" inode="2982427" device="2304" mtime="741162635" flags="0" name="/usr/share/texmf/doc/fonts/cm/README" file_size="3607" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="" inode="3914530" device="2304" mtime="919648133" flags="0" name="/usr/share/texmf/doc/fonts/cmbright" file_size="4096" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="16877" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="6e6018482a638b1c7ec1a22cf9ca6d85" inode="3914531" device="2304" mtime="913403710" flags="0" name="/usr/share/texmf/doc/fonts/cmbright/README" file_size="13913" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="54ff30c51c36740e636dacf87671ab11" inode="3914532" device="2304" mtime="926896489" flags="0" name="/usr/share/texmf/doc/fonts/cmbright/cmbright.dvi" file_size="26916" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="" inode="3618737" device="2304" mtime="905097372" flags="0" name="/usr/share/texmf/doc/fonts/dstroke" file_size="4096" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="16877" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="3b52656e3f8477f408bcc7dd794c1dec" inode="3618739" device="2304" mtime="905097319" flags="0" name="/usr/share/texmf/doc/fonts/dstroke/dsdoc.dvi" file_size="14112" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="d5e9d89018ecd7f897f599f4674a88d5" inode="3618738" device="2304" mtime="905097372" flags="0" name="/usr/share/texmf/doc/fonts/dstroke/readme" file_size="4039" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="" inode="2459199" device="2304" mtime="918957888" flags="0" name="/usr/share/texmf/doc/fonts/ec" file_size="4096" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="16877" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="98563f1462496cf798058b7b1ef502fe" inode="2459200" device="2304" mtime="917972570" flags="0" name="/usr/share/texmf/doc/fonts/ec/changelog" file_size="11775" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="7f06a4706b69c6168e39effb5aebcd32" inode="2459204" device="2304" mtime="917845956" flags="0" name="/usr/share/texmf/doc/fonts/ec/description" file_size="3897" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="fb9e9fce1b778774e0a52edc74fb2381" inode="2459205" device="2304" mtime="916899153" flags="0" name="/usr/share/texmf/doc/fonts/ec/readme.2_0" file_size="3518" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="07a7eec378fa207cc564b9c7f97d8d78" inode="2459201" device="2304" mtime="916899153" flags="0" name="/usr/share/texmf/doc/fonts/ec/release.2_3" file_size="1096" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="9d3b6cd543fa615581bf2cb09337d527" inode="2459202" device="2304" mtime="916899153" flags="0" name="/usr/share/texmf/doc/fonts/ec/release.2_4" file_size="778" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="1218badcba2baae0f3483278d9c4f09e" inode="2459203" device="2304" mtime="917972536" flags="0" name="/usr/share/texmf/doc/fonts/ec/release.2_5" file_size="1817" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="" inode="3914527" device="2304" mtime="920635199" flags="0" name="/usr/share/texmf/doc/fonts/ecc" file_size="4096" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="16877" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="4eaa4dac05cf8e34ad3738674c8ec0e6" inode="3914529" device="2304" mtime="920406138" flags="0" name="/usr/share/texmf/doc/fonts/ecc/liesmich" file_size="5321" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="a2fde2cf4d5a521b4a9888aeba9ad43e" inode="3914528" device="2304" mtime="920406086" flags="0" name="/usr/share/texmf/doc/fonts/ecc/readme" file_size="4372" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="" inode="2818946" device="2304" mtime="934155379" flags="0" name="/usr/share/texmf/doc/fonts/fontname" file_size="4096" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="16877" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="34b63d1f5028e3ddd30a07764b189407" inode="2818949" device="2304" mtime="915425760" flags="0" name="/usr/share/texmf/doc/fonts/fontname/ChangeLog" file_size="15233" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="ff6ecd4519ed8bf747e6b5728ef325e2" inode="2818947" device="2304" mtime="899355420" flags="0" name="/usr/share/texmf/doc/fonts/fontname/README" file_size="696" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="d4352aa319fad29f4f4e13c3bb820f7b" inode="2818948" device="2304" mtime="934155128" flags="0" name="/usr/share/texmf/doc/fonts/fontname/fontname.dvi" file_size="687444" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="" inode="2555197" device="2304" mtime="936381072" flags="0" name="/usr/share/texmf/doc/fonts/hoekwater" file_size="4096" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="16877" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="4d629d4c568fe3dbc57bc71998bec581" inode="2555198" device="2304" mtime="936381072" flags="0" name="/usr/share/texmf/doc/fonts/hoekwater/README" file_size="1305" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="" inode="2830165" device="2304" mtime="909264655" flags="0" name="/usr/share/texmf/doc/fonts/lucidabr" file_size="4096" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="16877" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="9012e9c1189099ad568c5ad84a162b9d" inode="2833273" device="2304" mtime="855004170" flags="0" name="/usr/share/texmf/doc/fonts/lucidabr/ly1.txt" file_size="6792" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="" inode="2410147" device="2304" mtime="1031330502" flags="0" name="/usr/share/texmf/doc/fonts/marvosym" file_size="4096" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="16877" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="6102fcc7aef7db9957a094cfffec4455" inode="2410149" device="2304" mtime="900903600" flags="0" name="/usr/share/texmf/doc/fonts/marvosym/PROBLEMS" file_size="740" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="d8f9a3fada5fa5bab06ba4871716a858" inode="2410152" device="2304" mtime="900903600" flags="0" name="/usr/share/texmf/doc/fonts/marvosym/README.1st" file_size="1262" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="" inode="2410148" device="2304" mtime="1031330502" flags="0" name="/usr/share/texmf/doc/fonts/marvosym/astro.README" file_size="10" groupname="root" linkto="README.1st" rdev="0" verifyflags="-1" file_mode="-24065" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="" inode="2410151" device="2304" mtime="1031330502" flags="0" name="/usr/share/texmf/doc/fonts/marvosym/euro.README" file_size="10" groupname="root" linkto="README.1st" rdev="0" verifyflags="-1" file_mode="-24065" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="a0c5441ffbdbebb6aaef950d6a078d30" inode="2410150" device="2304" mtime="905106662" flags="0" name="/usr/share/texmf/doc/fonts/marvosym/marvodoc.dvi" file_size="10808" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="" inode="2555194" device="2304" mtime="791174069" flags="0" name="/usr/share/texmf/doc/fonts/oldgerman" file_size="4096" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="16877" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="1a7712dcac8c6d69e4cead266acf3490" inode="2555195" device="2304" mtime="782112978" flags="0" name="/usr/share/texmf/doc/fonts/oldgerman/corkpaper.dvi" file_size="35036" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="3ca501b5d5d4d642a6f9cbe1dbb23530" inode="2555196" device="2304" mtime="782112980" flags="0" name="/usr/share/texmf/doc/fonts/oldgerman/suet.dvi" file_size="3876" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="" inode="3701947" device="2304" mtime="924994752" flags="0" name="/usr/share/texmf/doc/fonts/pl" file_size="4096" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="16877" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="7b8e5ae4f21ca020f2b579f5a76d027f" inode="3701954" device="2304" mtime="876549900" flags="0" name="/usr/share/texmf/doc/fonts/pl/readme.eng" file_size="11246" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="21a93d0c0d4f2dbe348b55b550a943d6" inode="3701955" device="2304" mtime="876549900" flags="0" name="/usr/share/texmf/doc/fonts/pl/readme.pol" file_size="14868" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="" inode="2459206" device="2304" mtime="934158404" flags="0" name="/usr/share/texmf/doc/generic" file_size="4096" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="16877" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="" inode="3618740" device="2304" mtime="984183724" flags="0" name="/usr/share/texmf/doc/generic/babel" file_size="4096" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="16877" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="a64804dc06b974f935861527d9177a31" inode="3618744" device="2304" mtime="982891800" flags="0" name="/usr/share/texmf/doc/generic/babel/00readme.txt" file_size="2712" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="df32d3f9613d332660d4acd3de608309" inode="3618741" device="2304" mtime="923115600" flags="0" name="/usr/share/texmf/doc/generic/babel/GreekFonts.txt" file_size="957" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="e04fffe3648b77b43ff13118d36debcb" inode="3618749" device="2304" mtime="980915160" flags="0" name="/usr/share/texmf/doc/generic/babel/bugs.txt" file_size="3186" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="1b2a73cc16de0954eaa3a8b71eee6492" inode="3618755" device="2304" mtime="983851140" flags="0" name="/usr/share/texmf/doc/generic/babel/changes.txt" file_size="81861" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="dc330c40333f06cb87dcc8ccd145e7a6" inode="3618751" device="2304" mtime="983850840" flags="0" name="/usr/share/texmf/doc/generic/babel/fixes.txt" file_size="561" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="b0a9397192d5b52af0829273cca7a3fa" inode="3618748" device="2304" mtime="980915160" flags="0" name="/usr/share/texmf/doc/generic/babel/howtoget.txt" file_size="1473" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="b592dcd9a198e13886305340c277df95" inode="3618742" device="2304" mtime="984181708" flags="0" name="/usr/share/texmf/doc/generic/babel/tb1202.dvi" file_size="43388" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="69da0abf5e8b21c924778a9557002d05" inode="3618745" device="2304" mtime="984181707" flags="0" name="/usr/share/texmf/doc/generic/babel/tb1401.dvi" file_size="10044" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="834dfca94ba42fccf4057a02d56d1fc5" inode="3618753" device="2304" mtime="984181709" flags="0" name="/usr/share/texmf/doc/generic/babel/tb1604.dvi" file_size="20148" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="c52007308b49291c793c3590f4727485" inode="3618747" device="2304" mtime="982891800" flags="0" name="/usr/share/texmf/doc/generic/babel/todo.txt" file_size="1729" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="8115a5a82f76413bb210068c902a9863" inode="3618752" device="2304" mtime="982893780" flags="0" name="/usr/share/texmf/doc/generic/babel/user.dvi" file_size="169604" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="" inode="1231519" device="2304" mtime="839481814" flags="0" name="/usr/share/texmf/doc/generic/localloc" file_size="4096" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="16877" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="36047485be1e15133c0a3e6aac6e7f65" inode="1231520" device="2304" mtime="839481794" flags="0" name="/usr/share/texmf/doc/generic/localloc/localloc.dvi" file_size="37408" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="3f7f65bfa4fedd4b9324f3818d8faf7c" inode="1231521" device="2304" mtime="839481685" flags="0" name="/usr/share/texmf/doc/generic/localloc/localtst.tex" file_size="3999" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="" inode="3080582" device="2304" mtime="926183323" flags="0" name="/usr/share/texmf/doc/generic/pstricks" file_size="4096" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="16877" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="68ecd577a3fe7a5a82ba6ecf1ef2af1c" inode="3080586" device="2304" mtime="926183257" flags="0" name="/usr/share/texmf/doc/generic/pstricks/CHANGES" file_size="10272" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="b4d669daac7ed36b1676774890cbb333" inode="3080584" device="2304" mtime="905381651" flags="0" name="/usr/share/texmf/doc/generic/pstricks/README" file_size="2087" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="730b0674b2c509fff5352c24a76d2100" inode="3080583" device="2304" mtime="926183257" flags="0" name="/usr/share/texmf/doc/generic/pstricks/VERSIONS" file_size="1804" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="8f2c39f3196b5923a230c0e6590904fc" inode="3080585" device="2304" mtime="900376399" flags="0" name="/usr/share/texmf/doc/generic/pstricks/doc-fill.ps" file_size="979782" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="" inode="3358566" device="2304" mtime="900376869" flags="0" name="/usr/share/texmf/doc/generic/pstricks/obsolete" file_size="4096" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="16877" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="a8e8499dcac38bb08ce32a7b06c37b71" inode="3358571" device="2304" mtime="888454020" flags="0" name="/usr/share/texmf/doc/generic/pstricks/obsolete/README" file_size="913" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="6a8b53f3cb37302dda651151f43d5bdb" inode="3358572" device="2304" mtime="735188400" flags="0" name="/usr/share/texmf/doc/generic/pstricks/obsolete/betadoc1.ps" file_size="186875" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="c27c9c85a271e20c59fc87f06a79278b" inode="3358573" device="2304" mtime="735188400" flags="0" name="/usr/share/texmf/doc/generic/pstricks/obsolete/betadoc2.ps" file_size="239153" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="bc5177c1334a34c284d6aefaa4425d0d" inode="3358575" device="2304" mtime="859694400" flags="0" name="/usr/share/texmf/doc/generic/pstricks/obsolete/pst-doc.err" file_size="2762" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="723ffbf7eac463097926f6f5dbf15828" inode="3358574" device="2304" mtime="858830400" flags="0" name="/usr/share/texmf/doc/generic/pstricks/obsolete/pst-quik.ps" file_size="57218" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="be8d7eff84203208b179f4e44fdf7981" inode="3358567" device="2304" mtime="858830400" flags="0" name="/usr/share/texmf/doc/generic/pstricks/obsolete/pst-usr1.ps" file_size="117506" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="2c8a28b7726e21cc11874ac146553048" inode="3358568" device="2304" mtime="858830400" flags="0" name="/usr/share/texmf/doc/generic/pstricks/obsolete/pst-usr2.ps" file_size="128593" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="53e5123f1be7b3e5b5fc8d155764b691" inode="3358569" device="2304" mtime="858830400" flags="0" name="/usr/share/texmf/doc/generic/pstricks/obsolete/pst-usr3.ps" file_size="146106" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="8c814f75fbf1e378f7c484e1d4e23c71" inode="3358570" device="2304" mtime="858830400" flags="0" name="/usr/share/texmf/doc/generic/pstricks/obsolete/pst-usr4.ps" file_size="109055" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="" inode="169906" device="2304" mtime="928721734" flags="0" name="/usr/share/texmf/doc/generic/ruhyphen" file_size="4096" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="16877" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="4e4ef0deca74bbcecb63cfe7914a0492" inode="169907" device="2304" mtime="922033548" flags="0" name="/usr/share/texmf/doc/generic/ruhyphen/BUGS" file_size="1683" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="8172e1e85001c87c45514e5dca40cdec" inode="169908" device="2304" mtime="927340927" flags="0" name="/usr/share/texmf/doc/generic/ruhyphen/Makefile" file_size="163" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="b20fe5e345a51d3268c906e7dc176b10" inode="169912" device="2304" mtime="928676465" flags="0" name="/usr/share/texmf/doc/generic/ruhyphen/README" file_size="11959" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="425c4db888756c2831cd6e8f7d9c9b36" inode="169916" device="2304" mtime="899661860" flags="0" name="/usr/share/texmf/doc/generic/ruhyphen/mkcyryo" file_size="691" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32275" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="31456a5d1eea57ec3e24147e9cf29494" inode="169914" device="2304" mtime="899661860" flags="0" name="/usr/share/texmf/doc/generic/ruhyphen/sorthyph" file_size="295" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32275" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="83c69583daa53b3a10e6fb6b5de31f9c" inode="169915" device="2304" mtime="902189394" flags="0" name="/usr/share/texmf/doc/generic/ruhyphen/sortkoi8" file_size="583" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32275" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="d8009e2fc612de240a18237f92f95f14" inode="169910" device="2304" mtime="916280148" flags="0" name="/usr/share/texmf/doc/generic/ruhyphen/trans" file_size="419" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32275" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="" inode="1231516" device="2304" mtime="924216436" flags="0" name="/usr/share/texmf/doc/generic/styles" file_size="4096" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="16877" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="e1d8fbc33bbb6a071242900e6b150c84" inode="1231517" device="2304" mtime="924216428" flags="0" name="/usr/share/texmf/doc/generic/styles/gerdoc.dvi" file_size="83212" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="6b3ba02ad4b71ec02cf1c714ed774686" inode="1231518" device="2304" mtime="905103772" flags="0" name="/usr/share/texmf/doc/generic/styles/germdoc.dvi" file_size="79368" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="" inode="447910" device="2304" mtime="890591072" flags="0" name="/usr/share/texmf/doc/generic/texdraw" file_size="4096" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="16877" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="56920bec8980d5540037c05b7a7c2f72" inode="447912" device="2304" mtime="819412635" flags="0" name="/usr/share/texmf/doc/generic/texdraw/ChangeLog" file_size="1108" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="f235afeb6cb34223ebc7f6e1b119dea5" inode="447913" device="2304" mtime="890177588" flags="0" name="/usr/share/texmf/doc/generic/texdraw/texdraw.ps" file_size="427763" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="20e97a3facc8f4d0065f0eae499604db" inode="447911" device="2304" mtime="819412619" flags="0" name="/usr/share/texmf/doc/generic/texdraw/txdexamp.latex" file_size="14681" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="" inode="1231503" device="2304" mtime="949319875" flags="0" name="/usr/share/texmf/doc/generic/ukrhyph" file_size="4096" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="16877" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="430de44ff992511b5e74506b1cab0646" inode="1231506" device="2304" mtime="933455760" flags="0" name="/usr/share/texmf/doc/generic/ukrhyph/README" file_size="4414" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="168110f426160e71432474b6a0932dc3" inode="1231510" device="2304" mtime="931276880" flags="0" name="/usr/share/texmf/doc/generic/ukrhyph/rules.ps" file_size="79932" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="eea222655a28c8ef1e37bbe705fd036f" inode="1231509" device="2304" mtime="931276928" flags="0" name="/usr/share/texmf/doc/generic/ukrhyph/rules.tex" file_size="5313" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="dec4127d6674c56e934e279ab9d8b76e" inode="1231504" device="2304" mtime="933455880" flags="0" name="/usr/share/texmf/doc/generic/ukrhyph/rules60.pdf" file_size="106565" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="9f161911b776286e939d8760bb0abf1a" inode="1231511" device="2304" mtime="933456000" flags="0" name="/usr/share/texmf/doc/generic/ukrhyph/rules60.ps" file_size="111402" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="14b7b5348dbee91600a6cd5a6fa41676" inode="1231505" device="2304" mtime="933463265" flags="0" name="/usr/share/texmf/doc/generic/ukrhyph/rules60.tex" file_size="7667" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="2335d3ad28c79eb8694c5b13227ebc43" inode="1231507" device="2304" mtime="933455940" flags="0" name="/usr/share/texmf/doc/generic/ukrhyph/rules90.pdf" file_size="105735" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="159ac22960e6aea3759c874d2a656876" inode="1231512" device="2304" mtime="933456000" flags="0" name="/usr/share/texmf/doc/generic/ukrhyph/rules90.ps" file_size="77929" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="961acc813419cb275fd5979c04dabba6" inode="1231508" device="2304" mtime="933463277" flags="0" name="/usr/share/texmf/doc/generic/ukrhyph/rules90.tex" file_size="5581" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="043639c3b402ec367b732d43d62246b4" inode="1231513" device="2304" mtime="933455820" flags="0" name="/usr/share/texmf/doc/generic/ukrhyph/rules_ph.pdf" file_size="70816" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="166cfdb4222d59b492507059de87a216" inode="1231515" device="2304" mtime="933455940" flags="0" name="/usr/share/texmf/doc/generic/ukrhyph/rules_ph.ps" file_size="76256" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="29f86affd98d5525e01077aeddce56ac" inode="1231514" device="2304" mtime="933463256" flags="0" name="/usr/share/texmf/doc/generic/ukrhyph/rules_ph.tex" file_size="3632" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="" inode="2818950" device="2304" mtime="920340090" flags="0" name="/usr/share/texmf/doc/generic/xypic" file_size="4096" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="16877" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="3e90ad859c815aabfd33b8e8f268b7a5" inode="2818955" device="2304" mtime="919193100" flags="0" name="/usr/share/texmf/doc/generic/xypic/CATALOG" file_size="929" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="8ca43cbc842c2336e835926c2166c28b" inode="2818957" device="2304" mtime="919195320" flags="0" name="/usr/share/texmf/doc/generic/xypic/COPYING" file_size="17982" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="4e9c02da8460acebaefab52345503889" inode="2818958" device="2304" mtime="919968180" flags="0" name="/usr/share/texmf/doc/generic/xypic/MANIFEST" file_size="9111" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="719ae80819234ab91205db9087590f5a" inode="2818952" device="2304" mtime="919193100" flags="0" name="/usr/share/texmf/doc/generic/xypic/README" file_size="4025" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="c68e1b64bff41d8e2381012656b26431" inode="2818953" device="2304" mtime="919193100" flags="0" name="/usr/share/texmf/doc/generic/xypic/TRAILER" file_size="4176" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="d28aaeff8978418785fde92f3fb04c6b" inode="2818951" device="2304" mtime="919968180" flags="0" name="/usr/share/texmf/doc/generic/xypic/VERSIONS" file_size="5848" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="a857d6e13fed9b70065bc894661ddf19" inode="2818954" device="2304" mtime="920340020" flags="0" name="/usr/share/texmf/doc/generic/xypic/xyguide.ps" file_size="669930" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="53b15c3f7690a20762ef88805c630edf" inode="2818956" device="2304" mtime="920340030" flags="0" name="/usr/share/texmf/doc/generic/xypic/xyrefer.ps" file_size="1861099" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="" inode="3718299" device="2304" mtime="949400459" flags="0" name="/usr/share/texmf/doc/help" file_size="4096" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="16877" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="" inode="2670227" device="2304" mtime="949401548" flags="0" name="/usr/share/texmf/doc/help/Catalogue" file_size="4096" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="16877" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="05edf82e7aca32b5c99b388f3813e5dc" inode="2670350" device="2304" mtime="927169200" flags="0" name="/usr/share/texmf/doc/help/Catalogue/README" file_size="1457" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="2f776da75e208974b55613a7d953a8ec" inode="2670354" device="2304" mtime="941540160" flags="0" name="/usr/share/texmf/doc/help/Catalogue/acroread.png" file_size="247" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="d4ddf47edf7577cc8a4f29dd649868a5" inode="2672590" device="2304" mtime="949333980" flags="0" name="/usr/share/texmf/doc/help/Catalogue/alpha.html" file_size="85898" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="2c3cf290e08e565bee1f257ab3c76e99" inode="2672600" device="2304" mtime="941540160" flags="0" name="/usr/share/texmf/doc/help/Catalogue/art.png" file_size="1105" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="0a7aedbd53cc34fe54d965c448b9bd7d" inode="2672575" device="2304" mtime="941540160" flags="0" name="/usr/share/texmf/doc/help/Catalogue/au.png" file_size="281" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="25375e7409fea201b249cb2ec585dd57" inode="2672596" device="2304" mtime="949333920" flags="0" name="/usr/share/texmf/doc/help/Catalogue/brief.html" file_size="321193" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="b3a6c60420972ba61df87b420e2b9440" inode="2672574" device="2304" mtime="929535480" flags="0" name="/usr/share/texmf/doc/help/Catalogue/catalogue.dtd" file_size="3426" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="45d8987c78be5e93f6aadb130f0ae3fc" inode="2670352" device="2304" mtime="949065180" flags="0" name="/usr/share/texmf/doc/help/Catalogue/catalogue.html" file_size="7628" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="189a8729320118be3476f38aeb70bdbe" inode="2672577" device="2304" mtime="941540160" flags="0" name="/usr/share/texmf/doc/help/Catalogue/ch.png" file_size="135" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="e0b8c683a38f9a2b2726f845a70b1ac6" inode="2672579" device="2304" mtime="941540160" flags="0" name="/usr/share/texmf/doc/help/Catalogue/cz.png" file_size="292" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="0226b96e0eef74431740b10aedaf8e95" inode="2672578" device="2304" mtime="941540160" flags="0" name="/usr/share/texmf/doc/help/Catalogue/de.png" file_size="136" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="a45f434d56022e1b62f6c8e906aa9350" inode="2670347" device="2304" mtime="941540160" flags="0" name="/usr/share/texmf/doc/help/Catalogue/dir.png" file_size="191" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="c197b14bdf7406d5a8cea69ca0e6b1b1" inode="2670349" device="2304" mtime="941540160" flags="0" name="/usr/share/texmf/doc/help/Catalogue/doc.png" file_size="240" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="" inode="2670355" device="2304" mtime="949400179" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries" file_size="28672" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="16877" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="677e40ae1408bd1512a076341e29a8e6" inode="2671785" device="2304" mtime="941535600" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/a0poster.html" file_size="2196" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="33dd5cff24b54de76971d3fd0d0a48f9" inode="2671862" device="2304" mtime="941535660" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/a2ac.html" file_size="2165" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="f752b8757d66956fab9a0ca577405d40" inode="2672442" device="2304" mtime="941535660" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/a4.html" file_size="2420" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="bce7e57b6cbcbaf3606924ab8f8129e4" inode="2671942" device="2304" mtime="941535660" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/a4wide.html" file_size="1984" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="5cefa0b36690bfe6ea55ea1de4436c17" inode="2672455" device="2304" mtime="941535660" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/a5.html" file_size="1811" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="425278c4e53e472f4b38dbc519f6f073" inode="2671521" device="2304" mtime="941535660" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/a5comb.html" file_size="1746" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="39753d914e7f50e48d159b7ba35468b8" inode="2672333" device="2304" mtime="941537940" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/aaai.html" file_size="1790" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="5e8cc1341d72ae0d50c741270a0e8bc9" inode="2672183" device="2304" mtime="941537940" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/aastex.html" file_size="1885" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="a31117e5560b03af6e11996b7701aee9" inode="2671571" device="2304" mtime="941538000" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/abbrevs.html" file_size="2807" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="4c060285b16573225ea4fd6a2b4bdcb9" inode="2671445" device="2304" mtime="941538000" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/abc2mtex.html" file_size="2364" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="0738e1e90906e707adbd784ca34536a3" inode="2671859" device="2304" mtime="941538000" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/abstbook.html" file_size="2051" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="0dad629589d204bbf0f3f6f7586e7e95" inode="2671890" device="2304" mtime="941538000" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/abstyles.html" file_size="1311" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="18b54e0c21e44e09bd8e4cafd08a5b48" inode="2672228" device="2304" mtime="941538000" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/accents.html" file_size="1852" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="65db30cf0e99fb0188972ce78ba40df6" inode="2672429" device="2304" mtime="941661720" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/accfonts.html" file_size="1854" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="70b16b3fb71a52ed38206e8ddcbb2609" inode="2671620" device="2304" mtime="941538000" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/achemso.html" file_size="1871" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="98d989002b7883871b415e2bf672494e" inode="2672224" device="2304" mtime="941538000" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/achicago-bst.html" file_size="2518" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="1499e52ec08cda85a998cc5d4fe17548" inode="2672310" device="2304" mtime="941538000" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/achicago.html" file_size="2458" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="6c53859c7db7c91cf02903c70567ef17" inode="2672130" device="2304" mtime="941538000" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/acmconf.html" file_size="2034" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="2e304286bc52de5fc09a4dab1e6fa79a" inode="2672375" device="2304" mtime="941538060" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/acronym.html" file_size="2059" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="28fb54a0efbda49a05aa7ae7299660d3" inode="2672008" device="2304" mtime="941538060" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/acroread.html" file_size="1876" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="91681133ea54238a040692bfb40f903c" inode="2672286" device="2304" mtime="941538060" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/acrotex.html" file_size="1503" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="9ab9fe9636240fc98b3a4dccbdabac54" inode="2672112" device="2304" mtime="942750180" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/adfathesis.html" file_size="1918" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="49bee46f68c2871137b0d0813977364c" inode="2672089" device="2304" mtime="941538060" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/adobe.html" file_size="1690" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="2c312a751f1d6110cad2590c11a3bb35" inode="2671574" device="2304" mtime="941538060" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/adobeother.html" file_size="1321" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="6f7931645cf6e95bd7bfacfde7d18efb" inode="2671496" device="2304" mtime="941538060" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/adobestd.html" file_size="1315" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="c20d23582df59c9a9d98928b85aff5be" inode="2671563" device="2304" mtime="941538060" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/adrlist.html" file_size="2027" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="344ee84972b4c1f446ff83b96f7b0e28" inode="2672255" device="2304" mtime="941538060" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/advdate.html" file_size="1977" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="9ef8dfde71d219335428a770fffbce1f" inode="2672054" device="2304" mtime="948382980" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/ae.html" file_size="2031" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="0cc9c80e68033d03f7c2438d9e283907" inode="2672118" device="2304" mtime="941538120" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/afterpage.html" file_size="2562" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="26eb78a81978829148669c8649481439" inode="2672472" device="2304" mtime="941538120" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/afthesis.html" file_size="1832" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="ca2a2adc8eac79bd07b5811ed74ebb21" inode="2672013" device="2304" mtime="941538120" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/aguplus.html" file_size="1894" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="65d254da8a28494a2451c1da2883d47e" inode="2671986" device="2304" mtime="941538120" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/aiaa.html" file_size="2416" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="bc294e4278ebe9b01165b18f88a3b7cf" inode="2672126" device="2304" mtime="941538120" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/akletter.html" file_size="2223" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="331908571b00b876524fdc0ea43a948b" inode="2671523" device="2304" mtime="941538120" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/alatex.html" file_size="2317" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="108edcfb050f002e4f00c37ef956edc5" inode="2672206" device="2304" mtime="941538120" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/alg.html" file_size="1998" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="b34093b6919586d3f39162e1f2dba73d" inode="2672032" device="2304" mtime="941538120" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/algorithmic.html" file_size="1880" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="17ddd2ab0d7ee1a8bc0b96581361f24b" inode="2672194" device="2304" mtime="941538120" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/algorithms.html" file_size="1973" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="455c535b9ee77b88565e22407ca7727f" inode="2671606" device="2304" mtime="941538120" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/alltt.html" file_size="1940" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="2a8608487f8a7397483a559581bd050d" inode="2672531" device="2304" mtime="941538180" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/alphalph.html" file_size="2053" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="b492842f61b24119e06013c939f02d56" inode="2672517" device="2304" mtime="941538180" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/alphanum.html" file_size="1821" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="d953848ac0f0db4f8053707fc170e94b" inode="2672505" device="2304" mtime="941538180" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/altfont.html" file_size="1978" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="83d3b71619e12dd60cda88144ab97857" inode="2671520" device="2304" mtime="941538180" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/amiweb2c.html" file_size="1770" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="1ae8b8307eef3805fd3d82ac617495fb" inode="2672397" device="2304" mtime="941538180" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/amsbsy.html" file_size="2340" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="137c9eda6504f5f529c3c2ed14b87c42" inode="2671789" device="2304" mtime="941538180" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/amscd.html" file_size="1949" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="c75c1590d4a20708eefbe2473ab30265" inode="2672201" device="2304" mtime="941538180" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/amsfonts.html" file_size="2377" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="d59a0846558df32e5a56e80ef53bda12" inode="2672303" device="2304" mtime="944168940" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/amslatex.html" file_size="2406" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="e866c4d42a1fc36feb07f0fb530849ec" inode="2672049" device="2304" mtime="941538180" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/amsltx11.html" file_size="2078" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="694752baaf1755c3d998e68568f6aae2" inode="2672302" device="2304" mtime="941538180" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/amsmath.html" file_size="2180" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="853de850d41f570ec427478d6e6b00a1" inode="2672338" device="2304" mtime="941538240" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/amsppt.html" file_size="1723" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="276c2c93b662b92a8a580ec8bcbd2cb8" inode="2672454" device="2304" mtime="941538240" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/amsppt1.html" file_size="1831" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="799cae42c6819e4276215b2dc5a23e64" inode="2672344" device="2304" mtime="941538240" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/amssym.html" file_size="1983" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="c2a34414ef7e8142e48c178873eca6fc" inode="2672141" device="2304" mtime="941538240" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/amssymb.html" file_size="2110" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="d8d2d9566c6b468897d0fc58af85a691" inode="2672167" device="2304" mtime="941538240" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/amstex.html" file_size="1971" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="fe53600edd3e2cbe9ffd0d43a2b6e963" inode="2672539" device="2304" mtime="941538240" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/amstext.html" file_size="2193" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="bb8e24fc618c297262b47d5770020a25" inode="2672044" device="2304" mtime="941538240" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/answers.html" file_size="1980" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="6d3fdad24ee45944d0aaf55142b07009" inode="2672225" device="2304" mtime="941538240" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/anttvf.html" file_size="1963" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="500cf98951c132f77b684d9f7606212e" inode="2672562" device="2304" mtime="941538240" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/antyktor.html" file_size="2111" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="4e4e408af17a902989c227fb6afa52f9" inode="2671669" device="2304" mtime="941538240" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/apa.html" file_size="2276" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="0175255d90fdd7591de118966bf4882f" inode="2671833" device="2304" mtime="941538300" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/apacite.html" file_size="1823" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="e0634215e06598cefb8cb445a19f454c" inode="2671764" device="2304" mtime="941538300" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/apasoft.html" file_size="1682" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="d7684ea588a2cae18ecdc9c5fb3f0b3e" inode="2671828" device="2304" mtime="941538300" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/apl.html" file_size="1736" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="ff221f93136dceab4b9f2ce61a01b45c" inode="2672476" device="2304" mtime="941538300" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/appendix.html" file_size="2243" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="2c4101ede8a3df39701c2ccc13543119" inode="2672237" device="2304" mtime="941538300" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/ar.html" file_size="1989" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="4b2ed0e3dfa7a18befab94030eb72650" inode="2672552" device="2304" mtime="941538300" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/arabtex.html" file_size="2009" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="dc19dbcf8be25d7e1b830558eed80e11" inode="2672275" device="2304" mtime="941538300" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/archaic.html" file_size="1934" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="455e06e76ccffbb7368a1195ff34f72a" inode="2672295" device="2304" mtime="941538300" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/armenian.html" file_size="1967" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="97ecc03667a8ba1e6ecddbe1217f493c" inode="2671977" device="2304" mtime="941538300" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/armtex.html" file_size="2021" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="b956df5a3e0a16b4a3f5e6a46e2548e1" inode="2671628" device="2304" mtime="941538300" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/arosgn.html" file_size="1759" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="2e63aaabcc29cf1ad99f9afe31312788" inode="2672155" device="2304" mtime="941538360" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/array.html" file_size="2049" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="d90cc1081ce1c474d283a53771226a71" inode="2672160" device="2304" mtime="941538360" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/arrow.html" file_size="1714" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="7c08215fe0816a6b7f205a56cdc74029" inode="2671642" device="2304" mtime="941538360" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/arydshln.html" file_size="2339" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="104dfaecb52b6a28d0a1eb7f997e83d6" inode="2672502" device="2304" mtime="941538360" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/asaetr.html" file_size="1863" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="3b6e60e047864d6e675770fdea4d6f89" inode="2672221" device="2304" mtime="941538360" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/ascelike.html" file_size="2096" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="e14f6e562cd91466517cb94674f516a0" inode="2671545" device="2304" mtime="941538360" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/ascii.html" file_size="1749" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="7c45cf58475fa1a243949ac3e54de145" inode="2672261" device="2304" mtime="941538360" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/astro.html" file_size="1779" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="a8e15ea0347d5664b3ca73d927d93744" inode="2672264" device="2304" mtime="941538360" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/at.html" file_size="2252" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="3252ce327d17fff1c5a305eb9ef0d97c" inode="2671580" device="2304" mtime="941538360" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/attrib.html" file_size="2322" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="a06748789caf5dbdc1237375842a2eed" inode="2672037" device="2304" mtime="941538360" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/auctex.html" file_size="1888" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="72b7efa0c73537978dc82fcf33b14672" inode="2672120" device="2304" mtime="941538420" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/auncial.html" file_size="1969" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="256330a881fa957f54cc1d61f833a9a3" inode="2672175" device="2304" mtime="941538420" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/aurora.html" file_size="1368" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="0561f4a50f30792957e8a1e3a81527ac" inode="2671483" device="2304" mtime="941538420" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/authorindex.html" file_size="1891" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="a07fcabf24d0f6e992ab3dabee0989fa" inode="2672024" device="2304" mtime="941538420" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/autotab.html" file_size="1823" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="7ff0068061bd4e9f16b14a3ffc242fc2" inode="2672430" device="2304" mtime="941538420" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/babel.html" file_size="1841" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="6d448687ebda127dd52f524d33f715ef" inode="2671893" device="2304" mtime="941538420" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/backgammon.html" file_size="1835" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="b0a58bf6254c40a63dcd2aaa44b406ef" inode="2671439" device="2304" mtime="943522860" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/backgrnd.html" file_size="1948" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="570f66922ed1120d4f25c5c69f7af77b" inode="2672171" device="2304" mtime="941538420" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/bakoma-fonts.html" file_size="1715" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="7a8afb7e3edee413965afb1c1bbdfb47" inode="2671897" device="2304" mtime="941538420" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/bakoma-malvern.html" file_size="2276" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="00882111c0ac738c5fdbacf44aebbc48" inode="2672036" device="2304" mtime="944655660" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/bakoma.html" file_size="2628" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="8baec5688e959a2ea167e26ebdcac1da" inode="2672362" device="2304" mtime="941538420" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/bar.html" file_size="1705" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="9e869b788bf5f4febca031fe27ebd094" inode="2671500" device="2304" mtime="941538480" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/barcode2.html" file_size="1310" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="93f2d36af00f574747a601b5bdb05694" inode="2672475" device="2304" mtime="941538480" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/barcodes.html" file_size="1874" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="323cd5ffec28442b56997e664641502a" inode="2672528" device="2304" mtime="941538480" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/barr.html" file_size="1813" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="79a7423fdbda869227a1a72295e1e0b7" inode="2671516" device="2304" mtime="941538480" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/barracuda.html" file_size="2222" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="ffba91ac6bb1bda3bda6dd3b5a84ab12" inode="2672497" device="2304" mtime="941538480" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/base.html" file_size="1705" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="70e45b1218c54cb37f19e9d650f20b63" inode="2671956" device="2304" mtime="941538480" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/bbding.html" file_size="1841" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="16a08f37cfe2bf55c4ac5d21e6f9f298" inode="2672459" device="2304" mtime="941538480" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/bbm.html" file_size="1928" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="eed99071f6235a81415107d46140600f" inode="2671573" device="2304" mtime="941538480" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/bbold.html" file_size="1373" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="4d8fac5be3014dc1484c05cff6810908" inode="2671920" device="2304" mtime="941538480" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/beebe.html" file_size="1394" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="a2f1e1f2726a054fb421cea1a1582429" inode="2671643" device="2304" mtime="941538480" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/beletter.html" file_size="1707" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="fe12b0689c67075e4e0a0e7666e4bed6" inode="2672376" device="2304" mtime="941538540" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/belleek.html" file_size="1366" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="863f5f98581da3ae74b479f688ff3620" inode="2671987" device="2304" mtime="941538540" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/beton.html" file_size="1986" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="75b14627b95583c591a316f58dadb84e" inode="2672147" device="2304" mtime="941538540" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/bez123.html" file_size="2044" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="50318dca1b979ee7947e227014551005" inode="2671577" device="2304" mtime="941538540" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/bezos.html" file_size="1921" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="dbebe81a0a3d19bc1e591d987e276cb2" inode="2671686" device="2304" mtime="941538540" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/bibarts.html" file_size="1908" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="ca4b257295ac55ca1aa22fb905e95889" inode="2671610" device="2304" mtime="941538540" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/bibdb.html" file_size="1646" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="9ecc2c7e3d0345913e8427a1756ebec7" inode="2671750" device="2304" mtime="941538540" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/bibhtml.html" file_size="2362" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="4700a4e77998fa46e7784d4cd1a35c43" inode="2671631" device="2304" mtime="941538540" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/bibindex.html" file_size="1484" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="fa3a0063987a41e45ccbc4701071f874" inode="2671692" device="2304" mtime="941538540" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/biblio.html" file_size="2089" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="b5fe6ad8f81a8c3096982e8d04db9edb" inode="2671731" device="2304" mtime="941538540" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/biblios.html" file_size="1830" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="6842ca58936abf242f9e32f83969c83f" inode="2672395" device="2304" mtime="941538600" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/biblist.html" file_size="1829" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="b0dd485c20a2f59125b09085bb16636a" inode="2672251" device="2304" mtime="941538600" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/biblook.html" file_size="1506" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="f44856eafd76dd13102d6f861982148a" inode="2671864" device="2304" mtime="941538600" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/bibsort.html" file_size="1404" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="6ce8c8b6a3395c5a49b4da337d5b7a3f" inode="2672157" device="2304" mtime="941538600" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/bibtex.html" file_size="1240" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="d67ea69d739037715164c43d47d13acb" inode="2671553" device="2304" mtime="941538600" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/bibtex8bit.html" file_size="1676" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="1d20b4130e27151c407e4df9afd7e983" inode="2671886" device="2304" mtime="941538600" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/bibtool.html" file_size="2655" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="77dde15782a9f755d4f149a27f6d9858" inode="2671560" device="2304" mtime="947800440" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/bibtopic.html" file_size="2453" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="27cb1d2754a5d10ce189d480d478d0c8" inode="2671818" device="2304" mtime="941538600" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/bibunits.html" file_size="2248" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="aea41bdf5874051566b27acae20d424b" inode="2671587" device="2304" mtime="941538600" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/bibweb.html" file_size="2175" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="7e992628189ae60428c0234d9f87cb5f" inode="2671443" device="2304" mtime="941538600" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/bidstobibtex.html" file_size="1785" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="c1c1ffa5ea57b99788dc42369b58927f" inode="2672223" device="2304" mtime="942060300" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/bigdelim.html" file_size="1842" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="1fbf8f17458e693ea600fa951045d4ca" inode="2672181" device="2304" mtime="942060300" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/bigstrut.html" file_size="1836" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="adfc7b6a15c440616c19a533c06e7ae1" inode="2671488" device="2304" mtime="941538660" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/bits.html" file_size="2648" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="f16cceda7ce3b772e233a5968ddc710b" inode="2672028" device="2304" mtime="941538660" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/bitstrea.html" file_size="1728" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="3b5e5bd3616e16788fbacc0c5eddd66f" inode="2672178" device="2304" mtime="942750180" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/bizcard.html" file_size="1720" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="a1615dbcf8a227125b696f16bdb67150" inode="2672150" device="2304" mtime="941538660" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/blackboard.html" file_size="2046" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="4ae8bce9408f27b0416a0cff9fae87b7" inode="2671912" device="2304" mtime="941538660" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/blkarray.html" file_size="2128" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="fbbe61f16d37d597eeec40b402d1b55a" inode="2671476" device="2304" mtime="941538660" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/blkcntrl.html" file_size="2508" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="03b72029438eb231d036ecf4b023341a" inode="2672110" device="2304" mtime="941538660" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/block.html" file_size="1976" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="3addae93a2d704c079a732d614f85fab" inode="2671980" device="2304" mtime="941538660" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/blu.html" file_size="1649" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="3a4fb9a2091834bb455b9db9726d980b" inode="2672330" device="2304" mtime="941538660" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/blue.html" file_size="1837" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="a5c516c9e8b0ba572df7f1c77039c013" inode="2672411" device="2304" mtime="941538660" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/bluesky.html" file_size="1801" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="52c5b7d3d1f258cbd708a7895b6f323b" inode="2672320" device="2304" mtime="941538720" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/bm.html" file_size="1991" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="d55cedbfe096a4a7bdb28f8c13b86ec9" inode="2671804" device="2304" mtime="941538720" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/bookhands.html" file_size="1766" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="ac65fd26710021a41902710d6c99b429" inode="2671601" device="2304" mtime="941538720" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/booktabs.html" file_size="1854" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="89ecd5477061f2ad509ca27f91add5f1" inode="2671657" device="2304" mtime="941538720" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/borceux.html" file_size="1835" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="048936509739201ccd6f60e5887cba3d" inode="2671931" device="2304" mtime="941538720" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/bosisio.html" file_size="2272" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="063eb2f63b0a3534320230cf5bf29b79" inode="2671548" device="2304" mtime="941538720" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/boxedminipage.html" file_size="1730" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="b7d492a5059aaa3427528aea4c735653" inode="2672523" device="2304" mtime="941538720" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/braille.html" file_size="1732" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="494e883bbaf1808ca114b92ec579bfa8" inode="2672402" device="2304" mtime="944655660" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/braket.html" file_size="1834" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="cc5446d4ccd0c59f7a70d2c5d87867e3" inode="2671581" device="2304" mtime="941538720" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/brclc.html" file_size="2256" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="34f58610922e1cbc5b486a63f6e8486c" inode="2671681" device="2304" mtime="942153300" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/breqn.html" file_size="1517" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="0b3e33fd18352382be85353552215c53" inode="2671799" device="2304" mtime="941538780" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/bridge.html" file_size="1850" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="a5060800a2dec866b3d7e1338f424ebf" inode="2672259" device="2304" mtime="941538780" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/brief.html" file_size="1773" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="7162cad457693cbc18e0ecb937de2049" inode="2671832" device="2304" mtime="941538780" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/brushscr.html" file_size="1842" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="a6e8697790f5e0ebdf24b95d54ab5a9b" inode="2672549" device="2304" mtime="941661720" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/btool.html" file_size="2510" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="867f26a239c0c73edfc838b6d686974f" inode="2672143" device="2304" mtime="941538780" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/c-pascal.html" file_size="1942" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="a2474dc6df3b883907faf52dd1571c3b" inode="2672020" device="2304" mtime="941538780" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/c2cweb.html" file_size="1731" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="739780fb945aa43c9e0b4a5a5d54ee8a" inode="2671973" device="2304" mtime="941538780" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/calc.html" file_size="1954" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="a31a658ab072837484ac0160e5e394cf" inode="2671697" device="2304" mtime="941538780" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/calendar.html" file_size="2409" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="6d11153c6804be13ab6ff14e6de95872" inode="2671641" device="2304" mtime="941538780" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/calligra.html" file_size="2100" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="d6d27047d379c72912242bb7e1e3876c" inode="2671701" device="2304" mtime="941538780" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/calrsfs.html" file_size="1877" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="40a71560fefa13608e0e03b18f45bc70" inode="2672216" device="2304" mtime="941538840" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/camel.html" file_size="1989" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="141d59e28f63ed4be0d4b719b9a72a92" inode="2672313" device="2304" mtime="948382980" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/cancel.html" file_size="1816" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="b7871d8622150f4f56e28c0ea97ee763" inode="2671761" device="2304" mtime="941538840" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/capt-of.html" file_size="1784" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="84be2b22bac5d31e004a1702614413a4" inode="2672131" device="2304" mtime="941538840" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/caption.html" file_size="2176" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="e005438d2ab86661114b1d8296e3b73a" inode="2672139" device="2304" mtime="941538840" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/caption2.html" file_size="2090" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="68d55fb26a3ea003473b8cfe44e7b542" inode="2672436" device="2304" mtime="941538840" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/carlisle.html" file_size="2263" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="b8a9e32c0d3d0146a33373e5494cdf29" inode="2671985" device="2304" mtime="941538840" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/cases.html" file_size="1786" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="ce601062325324b6e137f12512f44eb2" inode="2671782" device="2304" mtime="941538840" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/casyl.html" file_size="1931" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="04c56e44efde8bc91623d3d3a6536c1d" inode="2671756" device="2304" mtime="949069140" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/catalogue.html" file_size="2241" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="bb8a965ffd8f0e24ed2ea0d3c5f8540e" inode="2671703" device="2304" mtime="941538840" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/catdoc.html" file_size="1858" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="08cb1d1d5df41e9b32ef742ce55ae9fa" inode="2671816" device="2304" mtime="947170020" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/catdvi.html" file_size="1937" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="9302f0f801e4b9c560d4dbd04520f348" inode="2671430" device="2304" mtime="948898920" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/cbgreek.html" file_size="1850" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="ee10dec59e6a6797e9b4cfac84db4d58" inode="2672357" device="2304" mtime="941538900" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/cc-pl.html" file_size="1819" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="b08be77b1a7f31d777efd00c771565ad" inode="2672148" device="2304" mtime="941538900" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/ccaption.html" file_size="2207" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="cf208b5869eab52cbb7b4bfc5389442f" inode="2671857" device="2304" mtime="943451640" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/ccfonts.html" file_size="2196" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="00a7d0811777e7fda1a6e8c3b44554ae" inode="2671683" device="2304" mtime="941538900" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/cchess.html" file_size="1354" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="bed97061cc11c92a818e0dd69cbaf918" inode="2671459" device="2304" mtime="941538900" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/cdcover.html" file_size="1858" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="59083f9584258dfa59e39e80d9fdcf7c" inode="2671805" device="2304" mtime="941538900" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/cdlabeler.html" file_size="1697" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="21e3508b29919774c707bfa8d07834d3" inode="2671757" device="2304" mtime="941538900" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/cellular.html" file_size="1819" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="bb93b31401413ee8f34b8565835277e6" inode="2672544" device="2304" mtime="941538900" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/cep.html" file_size="1895" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="e84b0487a2d12be1ab5f3b7701b03083" inode="2671836" device="2304" mtime="941538900" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/changebar.html" file_size="1998" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="257e6a6f765a1e4f6e89ba5d02ce3166" inode="2672062" device="2304" mtime="942060300" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/chappg.html" file_size="1830" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="be479e3939df5029c92fb360b2b4e3aa" inode="2671478" device="2304" mtime="941538960" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/chapterbib.html" file_size="1875" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="ef5c77b1e026aa18c39d41147320ca3a" inode="2671437" device="2304" mtime="941538960" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/chemcono.html" file_size="2177" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="ed8264c4316a0256b3c4432e0c58edb7" inode="2671901" device="2304" mtime="941538960" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/chemsym.html" file_size="1853" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="a6c3712ab227bd923bd19b5ed3770c71" inode="2672336" device="2304" mtime="941538960" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/cheq.html" file_size="1724" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="a6c3831500ce23961b87a8a889945fc4" inode="2671811" device="2304" mtime="941538960" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/cherokee.html" file_size="1758" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="33762d0207fb221dfc628f1e0ad9a421" inode="2671470" device="2304" mtime="941538960" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/chess.html" file_size="1748" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="cc20a79df66a810b55c573aa9024e7d3" inode="2671753" device="2304" mtime="941538960" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/chicago.html" file_size="1659" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="3a4d7668becebf1c9d27538be65d5143" inode="2672180" device="2304" mtime="941538960" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/china2e.html" file_size="1926" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="fa9f37867a69ab1445bc658d0a56e677" inode="2671710" device="2304" mtime="941538960" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/chktex.html" file_size="1791" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="7b455ec224b261c8085c84470b19d297" inode="2671567" device="2304" mtime="941538960" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/circ.html" file_size="1992" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="865b332240f0e7e6b3b814ea1cadd6ad" inode="2671517" device="2304" mtime="941539020" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/circle.html" file_size="2109" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="bb8ca69995818c6ac14734d90c0f83c7" inode="2672499" device="2304" mtime="947165640" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/circuit-macros.html" file_size="2585" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="a0a738e638b99fa9b63beb9bb4e6e64a" inode="2671976" device="2304" mtime="941539020" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/cirth.html" file_size="1729" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="72ab4f2ac16b3ae7622554469af3e8f5" inode="2671863" device="2304" mtime="941539020" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/citation.html" file_size="1387" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="e2221e7378c7e1f01848c455da38a210" inode="2671940" device="2304" mtime="941539020" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/cite.html" file_size="1895" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="342f80604522ef99c92ecc0dfdaf8b15" inode="2672321" device="2304" mtime="941539020" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/citeref.html" file_size="1731" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="241267241c6de01f77354667dcb85f0f" inode="2672543" device="2304" mtime="941539020" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/cjk-fonts.html" file_size="1786" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="dc59522e8a0bda53b01ad08a00f36065" inode="2672163" device="2304" mtime="941539020" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/cjk.html" file_size="1804" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="d87bfe5e5170ddffd6efab1c276e95bd" inode="2672491" device="2304" mtime="941539020" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/cm.html" file_size="1717" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="e5adf1f2cf687c9cd48354312bb45c65" inode="2671711" device="2304" mtime="941539020" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/cmactex.html" file_size="1966" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="bc7d4ca25c1155bb9f6573dbf49cf8e4" inode="2672018" device="2304" mtime="941539080" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/cmbright.html" file_size="2074" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="655b6c85f2b9e7e60d8dccf0259a5353" inode="2672043" device="2304" mtime="941539080" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/cmcyr.html" file_size="1843" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="1c34425b2371a7b11d3a5cb9182a5737" inode="2671678" device="2304" mtime="941539080" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/cmcyralt.html" file_size="1804" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="18084ffc33b8d32dc6fd0b3950514373" inode="2671759" device="2304" mtime="941539080" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/cmdtrack.html" file_size="2323" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="5172f670c5329a67062e1595c05d0925" inode="2672385" device="2304" mtime="941539080" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/cmextra.html" file_size="1820" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="23f7aed5a98e459b945ec9eb650ab9fe" inode="2672422" device="2304" mtime="941539080" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/cmolddig.html" file_size="2083" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="5522c5b63801315ac2b51b0c3a463cc4" inode="2671622" device="2304" mtime="941539080" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/cmpica.html" file_size="1750" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="f190c1586b0971d5343687914c02b32c" inode="2671929" device="2304" mtime="941539080" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/cmps.html" file_size="1705" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="05dc01bc0239571792c0ea2b08bd8c3b" inode="2672187" device="2304" mtime="941539080" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/cmsd.html" file_size="2390" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="b8e40c1a29947abb5890db91f18a9f09" inode="2671454" device="2304" mtime="941539080" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/cmtt.html" file_size="1954" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="0693f9ae1a3becdff6915049ebbea3bd" inode="2672198" device="2304" mtime="941539140" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/cmyk-hax.html" file_size="2143" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="85ae5c872c5e09b9eca234020f800380" inode="2672458" device="2304" mtime="941539140" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/code128.html" file_size="1763" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="8c4b656a8bf0896c1f41e0878377c5fe" inode="2671489" device="2304" mtime="941539140" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/codepage.html" file_size="1862" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="3533bcc6cf649259ef2ebb4a83770e13" inode="2672105" device="2304" mtime="941539140" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/color.html" file_size="2221" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="ae3d30764b38d7dec173ec3b8bb8327f" inode="2671769" device="2304" mtime="941539140" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/colorsep.html" file_size="1366" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="091eabcd6d35d8178b4ea5074257f7be" inode="2671562" device="2304" mtime="941539140" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/colortab.html" file_size="1923" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="228cf890d5370ae63bf276f40861a251" inode="2671894" device="2304" mtime="941539140" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/colortbl.html" file_size="1989" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="d804e0e637687b8c8775d1953f7bb0f0" inode="2672192" device="2304" mtime="941539140" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/comma.html" file_size="1891" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="3a9c5dd89fff482edc5a31e8803f87bb" inode="2672093" device="2304" mtime="941539140" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/comment.html" file_size="2009" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="cc6d1c53c012e9d75ce169bef3d9fff5" inode="2671546" device="2304" mtime="941539140" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/compsci.html" file_size="2864" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="44245bb31228ac13bcf2f384a8ae0074" inode="2671507" device="2304" mtime="941539200" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/concmath.html" file_size="2156" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="7c1c33231fc041d973b5d8cadde7f1b5" inode="2671868" device="2304" mtime="941539200" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/concprog.html" file_size="1810" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="fa634bf4c8e4b9b333474f487139487a" inode="2672296" device="2304" mtime="941539200" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/concrete-wrap.html" file_size="1892" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="241e2ff8bc99ec5738706bd477773724" inode="2671844" device="2304" mtime="941539200" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/concrete.html" file_size="1999" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="c762993d3d17cd8528abe158e1178980" inode="2671432" device="2304" mtime="941539200" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/consdiag.html" file_size="1741" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="0b012c684e355fcabd51e04640ea7e61" inode="2671860" device="2304" mtime="941539200" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/context.html" file_size="2079" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="b526e35a79d6b47bbc91f2966d32456a" inode="2672416" device="2304" mtime="945256920" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/contour.html" file_size="1896" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="e595ad4efac48b515df19674c6e5dd6b" inode="2671618" device="2304" mtime="941539200" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/cooking.html" file_size="1713" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="b05cc41b0c81fb065da331cd04cdc604" inode="2671582" device="2304" mtime="941539200" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/corelpak.html" file_size="1820" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="ac23e30e84ab9044f16d80d4ac8089be" inode="2671466" device="2304" mtime="941539200" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/count1to.html" file_size="1959" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="bebfe652e7dede05c84378f58e6462c3" inode="2672490" device="2304" mtime="941539260" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/covington.html" file_size="2214" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="cc7f3d6e4e51d5423fda7609736ce5a8" inode="2671732" device="2304" mtime="941539260" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/croatian.html" file_size="1781" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="dab6a8c123677c23c5d6c02e01ade767" inode="2671802" device="2304" mtime="941539260" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/crop.html" file_size="2069" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="570076ae507ed90cd2424e6cfd7f7cba" inode="2671795" device="2304" mtime="941539260" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/crossword.html" file_size="1858" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="41ace66195b4d7807140893cabc09577" inode="2671484" device="2304" mtime="941539260" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/crosswrd.html" file_size="1894" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="a257f589552935df69737de2a13e9237" inode="2672414" device="2304" mtime="941539260" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/cryst.html" file_size="1635" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="541d673177bcc8c941733f3c2c47f99c" inode="2671452" device="2304" mtime="941539260" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/csfonts.html" file_size="1325" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="1b2a39a5c869ddf1c6402a3ae502e288" inode="2671572" device="2304" mtime="941539260" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/cslatex.html" file_size="1317" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="56b063f437997f98de3e9ac9d82ff4ab" inode="2671961" device="2304" mtime="941539260" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/csplain.html" file_size="1321" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="8aeaa357e4f56b321f9f920f3351642e" inode="2671490" device="2304" mtime="941539260" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/cspsfonts.html" file_size="1316" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="0358c3002fed1a3439420a128cdc9b0c" inode="2672084" device="2304" mtime="941539320" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/cstug.html" file_size="1302" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="c00540dfac0d6c24242ff2c32a97801b" inode="2671579" device="2304" mtime="941539320" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/csx.html" file_size="1795" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="5d5fe317ef18efd92e2b8841acf9f087" inode="2672487" device="2304" mtime="941539320" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/ctib4tex.html" file_size="1862" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="5e9a8e8baf9880599b07a6cb0bacdaa8" inode="2672229" device="2304" mtime="941539320" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/currvita.html" file_size="1746" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="a3ec0d26ccab9390416789845499bd7f" inode="2671905" device="2304" mtime="941539320" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/cursor.html" file_size="1936" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="6eb16e87affed8f94b604b31958fde57" inode="2672277" device="2304" mtime="941539320" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/curves.html" file_size="2005" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="5b4c7e41b2a786923e7c9ddb22d1af8d" inode="2671513" device="2304" mtime="944168940" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/custom-bib.html" file_size="2035" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="a72491b44da85c3a852d20290dd9f787" inode="2672000" device="2304" mtime="941539320" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/cwebbin.html" file_size="2034" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="48e24c8b79f8b1a306df25eb6ce1822a" inode="2671720" device="2304" mtime="941539320" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/cwebx.html" file_size="2193" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="fa6eebecb85fa8f1be44751bd1f30bd3" inode="2672140" device="2304" mtime="941539320" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/cwpuzzle.html" file_size="1746" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="6ccaa7f06c44382f7f1474037b3703ed" inode="2671555" device="2304" mtime="941539380" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/cypriot.html" file_size="2108" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="4aa373da0ef71ca8224050bccee4ec4c" inode="2671766" device="2304" mtime="941539380" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/cyrillic.html" file_size="1301" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="57597531b2cd0113897821bab0cfa4e4" inode="2672248" device="2304" mtime="941539380" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/cyrtug.html" file_size="1759" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="df8f9af019c46e193779eaae913664af" inode="2672425" device="2304" mtime="941539380" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/czech.html" file_size="1673" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="d5ea8a2267ea94bfc52d54c23b35d43b" inode="2672011" device="2304" mtime="941539380" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/dancers.html" file_size="1768" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="81a309eab31bbd64c18f4db8c1ba54e1" inode="2672482" device="2304" mtime="941539380" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/dante-src.html" file_size="1824" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="5d14d73045d5daeca303cd8c37ad0389" inode="2671807" device="2304" mtime="941539380" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/dates.html" file_size="1726" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="d2d932b3e00e8ae1f3476da3ac8baa56" inode="2672380" device="2304" mtime="941539380" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/dblfont.html" file_size="2069" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="8b2a151645eea49ab324e50d73205013" inode="2672363" device="2304" mtime="941539380" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/dbprocess.html" file_size="1774" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="be56385b6c8047af7cc3b6058a0aa400" inode="2671671" device="2304" mtime="941539440" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/dcolumn.html" file_size="1942" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="55b7629f43b4449ba49af004aedc206b" inode="2671679" device="2304" mtime="941539440" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/dcounter.html" file_size="2044" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="fb48e0f294d79376140056c13346390a" inode="2671569" device="2304" mtime="941539440" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/default.html" file_size="1668" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="02f19554b75db6a051731161b8ad3948" inode="2672387" device="2304" mtime="941539440" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/delarray.html" file_size="1774" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="0fcca90024d347f2d513f51fd2d3eded" inode="2672209" device="2304" mtime="941539440" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/deleq.html" file_size="1983" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="967339770cffa1599ffbe2cc9eb205cd" inode="2671881" device="2304" mtime="941539440" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/delimtxt.html" file_size="1898" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="481df9895d230066578c785662b42349" inode="2671584" device="2304" mtime="948898920" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/devanagari.html" file_size="1957" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="5dcf0bb7b77c33c08de9a1fe19adcd48" inode="2672075" device="2304" mtime="941539440" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/dialogl.html" file_size="1875" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="bda0c2a72e23de5667ed3c36afba84d9" inode="2671556" device="2304" mtime="941539440" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/dialogue.html" file_size="2493" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="8bea12856081444cdaf173bd19d924bf" inode="2672432" device="2304" mtime="948461400" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/dinbrief.html" file_size="2558" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="108d5f4baa5a7bd1294404171967eb35" inode="2671468" device="2304" mtime="941539500" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/directory.html" file_size="2151" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="a87d56512d42b076ff570a9cf66b952e" inode="2671508" device="2304" mtime="948898980" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/dn2.html" file_size="1805" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="2e53c7fd90a4e5c0dfd3e1af72a41668" inode="2672405" device="2304" mtime="941539500" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/doc.html" file_size="1801" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="90fcd54808436e05b3e2cfe69b450c84" inode="2672481" device="2304" mtime="942423780" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/docmfp.html" file_size="1868" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="9aaf8766febb135b4c0d4a2a85e92b94" inode="2671535" device="2304" mtime="941539500" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/docstrip.html" file_size="1757" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="80f13493081ab5878286bd0125163fc1" inode="2671434" device="2304" mtime="941539500" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/dotlessi.html" file_size="1796" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="51c2ce1b352b9110f850697c866e3555" inode="2671455" device="2304" mtime="941539500" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/dotlessj.html" file_size="1814" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="8bc12b568e44bf354ecc37332f1de587" inode="2671879" device="2304" mtime="941539500" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/dotseqn.html" file_size="1865" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="f18ad66e9425dd406fc32614bd603b31" inode="2672022" device="2304" mtime="941539500" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/doublespace.html" file_size="1867" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="3fdce701a8df9fc9cf2ff292ce5b68fb" inode="2671611" device="2304" mtime="941539500" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/doublestroke.html" file_size="1928" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="20ba0c4598f73975aa2c41c21ff5eaba" inode="2672317" device="2304" mtime="941539560" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/draftcopy.html" file_size="2231" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="58610f954644397095608f3cbfc5eccc" inode="2671670" device="2304" mtime="941539560" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/drafthead.html" file_size="1755" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="ab976e72ff7f92f531315fb7e547bf1e" inode="2672069" device="2304" mtime="941539560" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/drama.html" file_size="2712" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="8af5193c85d4f5634b07bb2f51a4d3c3" inode="2672408" device="2304" mtime="947000880" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/dratex.html" file_size="1791" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="9f4fc62a1fffa9c3dd5c5ddcd7a16afc" inode="2672081" device="2304" mtime="941539560" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/drftcite.html" file_size="1757" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="c16fb1131211dd4f194ac6f0b15e72f4" inode="2671472" device="2304" mtime="941539560" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/dropcaps.html" file_size="1775" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="8ec1759811e22756bac34b10725d3e18" inode="2672367" device="2304" mtime="941539560" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/dropping.html" file_size="2048" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="a44f27ee0517c3e1f38de5dabe49e98b" inode="2672115" device="2304" mtime="941539560" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/dstroke.html" file_size="1463" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="fa58a4baf427087b31026895a0778f63" inode="2672134" device="2304" mtime="941539560" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/duerer.html" file_size="1741" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="8cece130094eb43b16ecb899ae884d54" inode="2672082" device="2304" mtime="941539620" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/dvgtk.html" file_size="1735" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="8bbe694b088356981b92cce1f6e15799" inode="2672453" device="2304" mtime="941539620" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/dvi2tty.html" file_size="1846" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="b28297fbce288a7f980d189021823909" inode="2672556" device="2304" mtime="941539620" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/dviconcat.html" file_size="1674" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="bf9879cc4b9d2e33ce5f0c47731680ba" inode="2671870" device="2304" mtime="941539620" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/dvicopy.html" file_size="1644" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="4cda896ce67272182b2d5336248968f2" inode="2671796" device="2304" mtime="945653040" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/dvii.html" file_size="2369" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="0448eca463a13094654d5edee85aed0e" inode="2671566" device="2304" mtime="948115020" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/dviincl.html" file_size="2119" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="f3f6f4e185cfaef14d99ffb3ac690cf5" inode="2671525" device="2304" mtime="941539620" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/dviljk.html" file_size="1687" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="2b41c7473ff86eda6c4c426645f04427" inode="2672114" device="2304" mtime="941539620" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/dviout.html" file_size="1858" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="0acbacbdb1f602209232025a804cef1b" inode="2671645" device="2304" mtime="941539620" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/dvipaste.html" file_size="2009" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="7c0f5c6eac844526273b0cc520355415" inode="2672189" device="2304" mtime="941539620" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/dvipdfm.html" file_size="1968" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="942d7f2844782d0f4f89412685d832ca" inode="2671557" device="2304" mtime="941539620" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/dvips-os2.html" file_size="1808" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="884bc870df26083162b37cb43bf74542" inode="2672245" device="2304" mtime="941544180" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/dvips-shell.html" file_size="1664" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="df028c7fa0a28aa6c53a84bf89466014" inode="2671771" device="2304" mtime="941544180" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/dvips.html" file_size="1766" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="55ae445596df0bc55bceaea7f2ac6ec0" inode="2672199" device="2304" mtime="941544240" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/dvipsdoc.html" file_size="1302" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="903c76f82198473e57bd372a6efe32b7" inode="2672428" device="2304" mtime="941544240" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/dvipsk.html" file_size="1755" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="bd6be6e06c09abdced12eb1e9204b414" inode="2672159" device="2304" mtime="941544240" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/dviwin.html" file_size="2477" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="cdd0addd3cf30c04e49e89b3e7d0a36e" inode="2672086" device="2304" mtime="941544240" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/ean.html" file_size="1847" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="54ed65ab184161f567130be9d57a7af0" inode="2672465" device="2304" mtime="942750180" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/easy.html" file_size="2127" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="25eb083befa579cbc338109785559c51" inode="2671684" device="2304" mtime="941544240" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/easybib.html" file_size="1918" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="d92024386efcaa66594394caf4173c17" inode="2671878" device="2304" mtime="941544240" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/easybmat.html" file_size="1937" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="838cd2eab088f090b5035a8d768cb5f0" inode="2671815" device="2304" mtime="941544240" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/easyeqn.html" file_size="2101" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="22740dcc85b24b8d17cb622fb766bc6d" inode="2672389" device="2304" mtime="941544240" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/easymat.html" file_size="1882" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="e2caa4616007779a5432dbb23d61b5f5" inode="2671440" device="2304" mtime="941544300" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/easytable.html" file_size="1974" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="af8788a1a2480b07fba1b21ea1b510ff" inode="2671840" device="2304" mtime="941544300" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/easyvector.html" file_size="1806" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="de504f2590bdf90887f4e9fe704da370" inode="2671479" device="2304" mtime="941544300" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/ec-plain.html" file_size="1744" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="d1b634ee0e98c88f06f9b2278a9dd5db" inode="2671550" device="2304" mtime="941544300" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/ec.html" file_size="2423" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="d38ae48a64ab96ae1fa47aaabc76ca43" inode="2672236" device="2304" mtime="941544300" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/ecc.html" file_size="1960" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="ba93bccf54767be7b724187716bcfb95" inode="2671586" device="2304" mtime="941544300" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/ecltree.html" file_size="1308" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="fac0d028086f71ddc313136640500588" inode="2672420" device="2304" mtime="941544300" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/eco.html" file_size="2149" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="83cf6347fe2c9cfa74525b0e79d8e67f" inode="2671992" device="2304" mtime="941544300" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/ecpk.html" file_size="1302" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="09cbca82cb2a66942d3414d302f7ee56" inode="2671675" device="2304" mtime="941544360" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/edmac.html" file_size="1838" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="1a3665e3032d76e0d7e5ddb09ad920cf" inode="2672350" device="2304" mtime="948382980" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/eepic.html" file_size="2196" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="e63dbbaf33b8045d8ea25abab4e0c2ca" inode="2672478" device="2304" mtime="941544360" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/egplot.html" file_size="1971" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="b79ffa8487144ccf7bd76352e7233d98" inode="2672314" device="2304" mtime="941544360" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/eiad.html" file_size="1729" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="c912ee4f39b05a573f36ec9eabbf711c" inode="2672265" device="2304" mtime="941544360" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/eijkhout.html" file_size="1954" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="703c492270ff80eea7962451ecb4be9d" inode="2671674" device="2304" mtime="941544360" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/elsevier.html" file_size="1874" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="3ec96d17279cc4d6081a229742bb78ab" inode="2671688" device="2304" mtime="941544360" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/elvish.html" file_size="1756" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="f8cd435f2661259cc563ea70cd5163c9" inode="2671825" device="2304" mtime="941544360" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/emp.html" file_size="2077" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="5b609dbbd7936b3fbe7d1bafc667ded4" inode="2672204" device="2304" mtime="941544360" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/emtex-os2.html" file_size="1647" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="bcff61d3642bf7e71cd44c2c302da86a" inode="2671965" device="2304" mtime="941544420" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/emtex.html" file_size="1648" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="61e56c2ab65c5f59eb6158daaef4aae4" inode="2672433" device="2304" mtime="941544420" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/emtexgi.html" file_size="1726" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="4a16412399a27d0172e60deebf8413d2" inode="2672247" device="2304" mtime="945185460" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/emtextds.html" file_size="2032" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="0eed5c72a5551f57331ee57260a1b319" inode="2671469" device="2304" mtime="941544420" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/emulateapj.html" file_size="1953" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="c936d74582e7004b28308945ea51257a" inode="2672415" device="2304" mtime="941544420" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/encodings.html" file_size="1312" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="1e58f5c805a9e4c539e19c3f004a0666" inode="2671426" device="2304" mtime="941544420" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/endfloat.html" file_size="2125" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="3e560458b15b262343ebbc3413cb2af6" inode="2671841" device="2304" mtime="941544420" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/endnotes.html" file_size="1874" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="bfab3e207ead76059f775f891853e0c3" inode="2671506" device="2304" mtime="941544420" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/engwar.html" file_size="1791" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="53ee9fe65e7bf204b2c6234d1e44a879" inode="2671774" device="2304" mtime="941544420" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/enumerate.html" file_size="1785" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="aae93cfe3f769c8ebf6901dfa98fda68" inode="2671499" device="2304" mtime="941544480" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/envbig.html" file_size="1835" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="cda0b14d1a53cb614005936523b1bad5" inode="2672331" device="2304" mtime="941544480" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/envlab.html" file_size="2458" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="ec2fa7801935676f94cc80eb3c931490" inode="2671690" device="2304" mtime="941544480" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/epic.html" file_size="1750" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="96e08f4e06bd92e9c01ec585dad5f44d" inode="2672311" device="2304" mtime="944168940" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/epigraph.html" file_size="2083" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="53bdd4650a60671ef049612c94e04861" inode="2671843" device="2304" mtime="941544480" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/eplain.html" file_size="1968" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="e604e3c3d90bb00c764ffbbd460ceaef" inode="2672337" device="2304" mtime="942060300" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/epmtfe.html" file_size="1934" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="badabfb82439c3a5937bc274a33a2694" inode="2671803" device="2304" mtime="941544480" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/epsfig.html" file_size="1789" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="a96dfed111c04a4cceef4f55569fbe04" inode="2672329" device="2304" mtime="941544480" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/epsfx.html" file_size="2139" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="aa88f8832343846ce72a4f671b323315" inode="2671867" device="2304" mtime="948115020" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/epsincl.html" file_size="1806" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="9b9f27ea85a830f9f7b2e4105466c343" inode="2672077" device="2304" mtime="941544480" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/epslatex.html" file_size="2007" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="078e989f2709b3de8de8eb51179b6944" inode="2671673" device="2304" mtime="941544540" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/eqname.html" file_size="1862" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="ad509ba15ae256b49c8026bdf6f95eaa" inode="2671884" device="2304" mtime="941544540" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/eqnarray.html" file_size="1879" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="7a343fc69ed8106bb39f9194074de838" inode="2672004" device="2304" mtime="941544540" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/esieecv.html" file_size="1851" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="ae06b9b5f9fa2d33a69f0cd160da0e81" inode="2671822" device="2304" mtime="941544540" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/esindex.html" file_size="1734" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="fce2444d9fc538c479ba0d19f26fa5ba" inode="2671526" device="2304" mtime="941544540" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/eso-pic.html" file_size="1766" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="2909c80244024fa3a50ccff6eb378123" inode="2671812" device="2304" mtime="941544540" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/et.html" file_size="1666" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="a3107ce47b0eae76818fe3ffb6b2dfcd" inode="2672335" device="2304" mtime="941544540" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/etexbase.html" file_size="1309" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="cab7965df40a102542fb8cd65af9c39c" inode="2672273" device="2304" mtime="941544540" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/ethiop.html" file_size="1917" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="f9e9061afec3071ab2c6e8c56d92841f" inode="2672512" device="2304" mtime="941544540" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/etruscan.html" file_size="1966" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="0792b80bc0d1812209aebe52d4669d27" inode="2671593" device="2304" mtime="941544540" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/euler.html" file_size="2287" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="958a305fe98600d1c58eccb6ddf70e72" inode="2671708" device="2304" mtime="948461400" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/eulervm.html" file_size="2222" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="1646c2600cc5e125d20e00b5a548acb1" inode="2672200" device="2304" mtime="941544540" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/euro.html" file_size="2247" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="3020e9988ecdb4c0fceddbf4e2a8f2ae" inode="2671608" device="2304" mtime="941544600" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/eurofont.html" file_size="3097" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="9eeb1c5bbba7bd6fc976cc371bf96619" inode="2672071" device="2304" mtime="941544600" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/europs.html" file_size="2459" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="31702d55250c30781810d4961d4fdb6f" inode="2671737" device="2304" mtime="941544600" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/eurosans.html" file_size="2460" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="7580df5045cbb0b71c9081386db7cb07" inode="2672021" device="2304" mtime="941544600" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/eurosym.html" file_size="2159" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="e6f18cab16303d07910ad1df66e1e6b6" inode="2672026" device="2304" mtime="941544600" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/euxm.html" file_size="1351" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="0362d24e6fafb0aba9bf7d2ac4342cf8" inode="2672132" device="2304" mtime="941544600" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/everysel.html" file_size="1773" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="7ec666afa60957844582bbb47c803edc" inode="2672569" device="2304" mtime="941544600" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/everyshi.html" file_size="2026" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="5b994c118daf79c18aaaedcaa34aa7f7" inode="2672521" device="2304" mtime="941544600" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/exam.html" file_size="1882" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="5dbd409ead07832132b9d0e96be8680e" inode="2671667" device="2304" mtime="941544600" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/examdesign.html" file_size="1873" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="0ff90f3afa52b298be6800a27cd6b789" inode="2671962" device="2304" mtime="941544600" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/exams.html" file_size="2075" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="7852fc2ac15900619858d9969ca4a80c" inode="2672306" device="2304" mtime="941544660" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/excalibur.html" file_size="1746" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="46538a8b47ad8f75e331e17d2bed20bc" inode="2671727" device="2304" mtime="941544660" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/exerquiz.html" file_size="1948" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="1d69e45731340539776698f472b8bd35" inode="2672366" device="2304" mtime="941544660" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/expdlist.html" file_size="2170" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="cff34f447202f55ed8ba27013c09584d" inode="2672016" device="2304" mtime="941544660" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/expl3.html" file_size="2030" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="e2ae9cd547029290aa824cb2ea4a3d03" inode="2671981" device="2304" mtime="941544660" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/export.html" file_size="2022" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="756b2808a09623b5f5345c22fababeb9" inode="2671806" device="2304" mtime="943451640" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/expressg.html" file_size="1946" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="3115400a2917db9363bcaa9b5e5f7444" inode="2671797" device="2304" mtime="941544660" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/exscale.html" file_size="1716" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="7a72d3b7c741b364fd213c6cd67e3601" inode="2671668" device="2304" mtime="941544660" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/extdash.html" file_size="1946" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="38ae745ea7d55da98980c882d431ec8d" inode="2671538" device="2304" mtime="944655660" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/extsizes.html" file_size="1850" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="41932c507da3d2eb66e993431e8d0d0c" inode="2671687" device="2304" mtime="941544660" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/fancybox.html" file_size="2068" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="386e624ec6ebd8801b6e061a41f651dd" inode="2671570" device="2304" mtime="941544660" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/fancyhdr.html" file_size="2293" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="d4d95182490e884dfc1af662e3a36992" inode="2671646" device="2304" mtime="941544660" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/fancyref.html" file_size="1867" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="807c65dd716f3b470b89a9a67cab3a7e" inode="2671909" device="2304" mtime="941544720" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/fancyvrb.html" file_size="2208" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="49c6cd2f744c42ffc7ec718fb8972981" inode="2671682" device="2304" mtime="941544720" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/faq.html" file_size="1667" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="11c520a9988ba43566f3cccf5909b9d2" inode="2671786" device="2304" mtime="941544720" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/fax.html" file_size="2006" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="ef4ccee423e54d8c56d66b13e495a61f" inode="2671724" device="2304" mtime="941544720" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/fc.html" file_size="1841" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="a5a57715b385499bd1ce690ffd7dbb40" inode="2670357" device="2304" mtime="941544720" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/fepslatex.html" file_size="1600" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="0b2f04928b36804a5d411d065daab4a9" inode="2672559" device="2304" mtime="941544720" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/feynmf.html" file_size="2147" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="d8da8a49035de05e5a40d2e5d4778380" inode="2671871" device="2304" mtime="941544720" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/fihyph.html" file_size="1896" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="e489e124ce8ae8a6125b2ca7e4b92909" inode="2671436" device="2304" mtime="941544720" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/filehdr.html" file_size="1700" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="d34589b0db8ff9006d448f8afff804d1" inode="2672377" device="2304" mtime="941544720" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/finbib.html" file_size="1307" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="a153660ef4560f9a978799c5717fec54" inode="2671837" device="2304" mtime="941544720" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/finplain.html" file_size="1673" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="e4fe93ad4f4be8ddf9fddf710a1557a5" inode="2671827" device="2304" mtime="941544720" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/fix2col.html" file_size="1938" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="888342655240fc469736334bcb2d2004" inode="2671637" device="2304" mtime="941544780" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/flabels.html" file_size="1894" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="7d12a1262ce1746a56a71a1466109aab" inode="2672292" device="2304" mtime="941544780" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/flatex.html" file_size="2175" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="d600d7f7aae3860de24d88575003b866" inode="2671975" device="2304" mtime="941544780" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/flatten.html" file_size="1759" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="bd97732a724c0905dc16fd7cb670e1cb" inode="2671916" device="2304" mtime="941544780" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/float.html" file_size="2434" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="abc5be50887dad19df113f98b9919a56" inode="2671615" device="2304" mtime="941544780" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/floatfig.html" file_size="1903" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="0b4a9657e4d505188b0e350f6b28143f" inode="2672287" device="2304" mtime="941544780" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/floatflt.html" file_size="2236" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="346b68cab9fa0dda8aa073204221a920" inode="2672246" device="2304" mtime="941544780" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/fltpage.html" file_size="1970" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="1bb35dce019c004b3465904271895d31" inode="2672533" device="2304" mtime="941544780" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/fncychap.html" file_size="2262" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="4c7ddc4c4b5eb717bee5d89020320088" inode="2671460" device="2304" mtime="941544780" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/fnpara.html" file_size="1885" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="f5542e7d2c297fef0d7449cb24be56d6" inode="2672561" device="2304" mtime="941544780" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/foilhtml.html" file_size="2287" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="8789a3f7bdb4ac36379b724f5033ac2c" inode="2671621" device="2304" mtime="941544840" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/foiltex.html" file_size="2301" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="abeb71dba073e3473ada46c1efc663c5" inode="2672154" device="2304" mtime="941544840" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/fontinst.html" file_size="1872" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="9905d5b71766f4bdd6cfe44aeb8e7a8b" inode="2672208" device="2304" mtime="941544840" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/fontmisc.html" file_size="1201" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="b573c76789cc8a770654baa27dd0d001" inode="2672151" device="2304" mtime="941544840" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/fontname.html" file_size="1319" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="453f045c33933af51b26078446118240" inode="2671752" device="2304" mtime="941544840" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/fontsmpl.html" file_size="1683" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="299688bc7d8f98a89da6a544fa71ef2a" inode="2672254" device="2304" mtime="941544840" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/footbib.html" file_size="2069" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="bbbe65a24dc4a40e1215795b84655fb3" inode="2671926" device="2304" mtime="941544840" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/footmisc.html" file_size="2133" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="21709b4c945173e5aeed624a995b2f9d" inode="2672220" device="2304" mtime="941544840" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/footnpag.html" file_size="2080" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="1864a17b14392614994ffbc0e630c5bd" inode="2672238" device="2304" mtime="941544840" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/formats.html" file_size="1329" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="5480ee660266d1da466ca1116f71e93e" inode="2671541" device="2304" mtime="941544840" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/formlett.html" file_size="1854" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="ad14607cf4f2acb01f3e2de21c7d9664" inode="2671839" device="2304" mtime="941544840" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/formula.html" file_size="1975" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="25e789fa91e4bba2cd2eed69c7cd5e8e" inode="2671745" device="2304" mtime="941544900" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/fourproject.html" file_size="1817" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="4e4b9a9a8933e9694d68224e6077485e" inode="2672080" device="2304" mtime="941544900" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/fourspell.html" file_size="1978" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="287b50c0f0e9f0d823f687369726e641" inode="2672249" device="2304" mtime="941544900" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/fourtex.html" file_size="1855" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="e203a0cc1489d6240dcacf2159fbe907" inode="2671919" device="2304" mtime="941544900" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/fp.html" file_size="1895" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="174b9d7f8f9384215b4d5a6e11146bd4" inode="2672007" device="2304" mtime="941544900" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/fptex.html" file_size="2201" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="964744cb596ef75becf0c930769adb10" inode="2672090" device="2304" mtime="941544900" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/frankenbundle.html" file_size="3160" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="aee2575297524ad6d4d222278ca25756" inode="2671781" device="2304" mtime="941544900" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/frankenstein.html" file_size="2907" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="9573a539015438a7da9712b5553b95d7" inode="2671613" device="2304" mtime="941544900" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/freefonts.html" file_size="1663" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="28b281618e40f1e658c0f676636ded91" inode="2671829" device="2304" mtime="941544900" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/freetype.html" file_size="1785" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="38db7876a58be85109d70c2e34c59434" inode="2671922" device="2304" mtime="941544900" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/french.html" file_size="1304" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="89636e1a82dd919322f585ff46f366b6" inode="2672211" device="2304" mtime="942060360" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/frhyph.html" file_size="1862" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="9e63ae4efc6d640e7eeb509ba8de5f39" inode="2671634" device="2304" mtime="941544960" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/fribrief.html" file_size="2041" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="0a7f4ca5d1007417d66ce69ba0d662a6" inode="2672448" device="2304" mtime="941544960" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/ftetx.html" file_size="1915" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="158111ab244c538ccddef9defa4dfd52" inode="2672484" device="2304" mtime="941544960" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/ftn.html" file_size="1815" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="5814ca2d91e0bd9ab27b6c2e9798b134" inode="2671849" device="2304" mtime="941544960" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/ftnright.html" file_size="1817" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="75f3e00b3b36358811d36286a5669cd1" inode="2672103" device="2304" mtime="941544960" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/fullblck.html" file_size="1948" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="96909d14dba04b0ce572a80823cef8d1" inode="2672520" device="2304" mtime="941544960" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/fullpict.html" file_size="1850" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="e1ec03aad89808f35f3cc61d7672274c" inode="2671528" device="2304" mtime="941544960" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/fundus.html" file_size="1920" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="de26c11e9d8a05e17ddbb85f456ebda7" inode="2672190" device="2304" mtime="941544960" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/funnelweb.html" file_size="1898" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="3e6fb988dcf573e1862200d0a9abc96e" inode="2671748" device="2304" mtime="941544960" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/futhark.html" file_size="1760" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="a5b4cda11f07619f02ce47f9b1cee17e" inode="2671438" device="2304" mtime="941545020" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/g-brief.html" file_size="2113" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="5754748f60e98fcf4fdd906e1e9d45f5" inode="2671955" device="2304" mtime="941545020" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/galois.html" file_size="1750" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="6de2cc30dbee19d9846ab09b500d7c55" inode="2671672" device="2304" mtime="941545020" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/gb4e.html" file_size="1833" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="3a5a3a0b18e267a69dc1bebd5fc625d2" inode="2672144" device="2304" mtime="941545020" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/genealogy.html" file_size="1971" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="00eed7b6b36d977fb7b283a5ead97ee8" inode="2672328" device="2304" mtime="941545020" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/genmisc.html" file_size="1369" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="e1820bd3c84d4e9ca0edcea9328559cb" inode="2671969" device="2304" mtime="941545020" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/gentl-gr.html" file_size="1945" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="74cdaf872c472daeabf44347145431b0" inode="2672456" device="2304" mtime="941545020" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/gentle.html" file_size="1673" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="94d60fefe2d70dcd2dbe7ee84083d8a4" inode="2672551" device="2304" mtime="941545020" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/geometry.html" file_size="2275" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="a369c6e727a35121f8401acfb974aa0b" inode="2672073" device="2304" mtime="941545020" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/geomsty.html" file_size="2142" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="6bb82f99bf3e9825168cbae4fe89a550" inode="2672025" device="2304" mtime="941545020" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/german.html" file_size="1860" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="1b32f886d828f7500f61315667ee24f8" inode="2671695" device="2304" mtime="941545020" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/germbib.html" file_size="1832" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="3683fe1a5160c054661ecd35aa56cdcf" inode="2671787" device="2304" mtime="941545080" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/germdoc.html" file_size="1306" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="7107e49df840a1f60c558ae70569b9d5" inode="2671716" device="2304" mtime="941545080" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/getrefs.html" file_size="1788" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="4e94729b1645fbf11b5de1f6c279aa40" inode="2671473" device="2304" mtime="941545080" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/ghostscript.html" file_size="1951" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="9364c2388a90da4c701ff1e5265b007d" inode="2671709" device="2304" mtime="941545080" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/ghostview-mac.html" file_size="1703" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="d41b2f80358d4241f0fa95bfadfd551f" inode="2671592" device="2304" mtime="941545080" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/ghyphen.html" file_size="1861" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="ee4b303cbf67133c819b0c5ceae5e991" inode="2671665" device="2304" mtime="941545080" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/gleitobjekte.html" file_size="2116" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="1c3d3bd03b6957462502e7dfeca2b315" inode="2671762" device="2304" mtime="941545080" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/gloss.html" file_size="1985" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="09772412d9d46c443abccb3b8d45be48" inode="2671999" device="2304" mtime="941545080" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/glosstex.html" file_size="2247" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="e7ff186229d1153f63abae369a7a3da5" inode="2672399" device="2304" mtime="941545080" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/gn-logic.html" file_size="1310" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="d22cb9acc8f2d625457efcd69d01248f" inode="2671850" device="2304" mtime="941545080" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/gnhyph.html" file_size="1811" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="795485c0f9d0c1c37079c59dd57f0b8f" inode="2671518" device="2304" mtime="941545140" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/gnuplot-ps.html" file_size="1439" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="e8721a7dfb87b8095bdc8a876c670553" inode="2671994" device="2304" mtime="941545140" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/gnuplot.html" file_size="1804" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="e49b39b09cc7b4d48492c907a51708c4" inode="2672060" device="2304" mtime="941545140" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/go.html" file_size="1726" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="95abbb44184a732137e80a086577466e" inode="2671650" device="2304" mtime="941545140" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/gothic.html" file_size="1777" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="70c9565b2a22fb7032d8818137b7ad53" inode="2671549" device="2304" mtime="941545140" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/graphfig.html" file_size="2489" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="11bcaa082532bd7f5c759ba61b6b9419" inode="2671649" device="2304" mtime="941545140" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/graphics.html" file_size="2306" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="75fbb2da376fc2461df502b8021d1147" inode="2671722" device="2304" mtime="941545140" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/graphicx.html" file_size="1989" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="a26cad80c8ec15c666c09507c97e76b5" inode="2671575" device="2304" mtime="941545140" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/graphpap.html" file_size="1650" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="99e76f14aa3d3430ad7109fb1cd6acac" inode="2672202" device="2304" mtime="941545140" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/gray.html" file_size="1674" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="b73af9e155ca493c8ea1659ba6fd39a9" inode="2672479" device="2304" mtime="941545140" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/greek4cbc.html" file_size="1817" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="8621c448ab8c4be37844ff1d647508bd" inode="2671501" device="2304" mtime="941545200" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/greek6cbc.html" file_size="1864" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="f6c049b38b3255a90ca71aaadb91c9ce" inode="2672555" device="2304" mtime="941545200" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/grfguide.html" file_size="2034" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="2af109330f5b8535bde4ee99a621bf1e" inode="2671730" device="2304" mtime="941545200" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/grfpaste.html" file_size="1934" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="2479adabebc1191cb2cdffaa2674e05d" inode="2671900" device="2304" mtime="941545200" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/grnumalt.html" file_size="2029" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="bdb9e8e5362dc03a6600056e448369da" inode="2671554" device="2304" mtime="941545200" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/grtimes.html" file_size="2024" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="baaf37dfc2d05fe397254a9f36e9af08" inode="2671809" device="2304" mtime="941545200" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/gsftopk.html" file_size="1869" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="8a9889a80e5d3aa530cd726abb168854" inode="2672191" device="2304" mtime="941545200" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/gsview.html" file_size="2410" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="e37093cc1ed2204599d039b7d3eac9e7" inode="2671648" device="2304" mtime="941545200" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/gustlib.html" file_size="1383" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="365d7fded10e1762a0e320b3860e7f04" inode="2671993" device="2304" mtime="941545200" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/hands.html" file_size="1733" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="e557b7236c7d3707302e8a5f6f3c869a" inode="2672278" device="2304" mtime="941545200" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/hangcaption.html" file_size="1771" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="eb8e2aa9c4371e510f86374d6e3e4268" inode="2672421" device="2304" mtime="941545260" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/hanging.html" file_size="2010" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="3c1765be053028f1c6ae83c96b24869d" inode="2672536" device="2304" mtime="941545260" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/harpoon.html" file_size="1868" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="d1bb845812d318bbc968eba2ba9aa643" inode="2671826" device="2304" mtime="941545260" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/harvard.html" file_size="1985" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="28ead7c8f2ebd20a630afdb386b5ddf2" inode="2671441" device="2304" mtime="941545260" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/harvmac.html" file_size="1840" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="feac8c0f8901fd500d024af864275dfc" inode="2671699" device="2304" mtime="941545260" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/hellas.html" file_size="1796" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="347d05d6fbad26e99c4ce4c5f1a228c5" inode="2672119" device="2304" mtime="941545260" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/here.html" file_size="1575" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="f4bee39072074ec2cb247bdf2c4967cd" inode="2672128" device="2304" mtime="941545260" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/hh.html" file_size="1816" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="04f1f53ff0a9651d3028dd47e785478a" inode="2672427" device="2304" mtime="941545260" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/hhline.html" file_size="1701" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="f9bfddef1f7be0038ed71dbdb9cf644e" inode="2671578" device="2304" mtime="941545260" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/hilowres.html" file_size="2133" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="7b5b0c2f577c12b7a4adfde306d3a22a" inode="2671779" device="2304" mtime="941545260" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/histogr.html" file_size="1879" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="31bafdc25ea944877720dfadc99eb048" inode="2671717" device="2304" mtime="949333980" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/hlatex.html" file_size="1774" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="981222e30034421f394f3e41cfd2fffe" inode="2671741" device="2304" mtime="941545320" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/hoekwater.html" file_size="1992" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="fe723abd9ee78951a3d4b25f184d624a" inode="2671639" device="2304" mtime="941545320" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/hrhyph.html" file_size="1280" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="129a86536bb0dfe6d112249905a78c77" inode="2671435" device="2304" mtime="941545320" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/html.html" file_size="1757" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="c83b1d063e3b1ef538b10bd56949e6db" inode="2671494" device="2304" mtime="941545320" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/html2latex.html" file_size="1783" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="e96fe8ba61465d1ba37cf05825af980a" inode="2672463" device="2304" mtime="941545320" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/huhyph.html" file_size="1843" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="de04eccb33ff18de09d87e09cc3600c9" inode="2671896" device="2304" mtime="941545320" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/huncial.html" file_size="2040" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="947d147502235c27301232968ff3b048" inode="2671760" device="2304" mtime="941545320" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/hvdashln.html" file_size="2066" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="4e1892f438a876e68aee3ee1c7fbb4f7" inode="2671616" device="2304" mtime="941545320" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/hvmath.html" file_size="2110" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="6e598c93a5e4b31707f0be80adf5ee27" inode="2672088" device="2304" mtime="941545320" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/hypbmsec.html" file_size="1984" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="8e755da879be32f3b96cbaf3d6c70d83" inode="2672166" device="2304" mtime="941545380" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/hyper.html" file_size="2177" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="f80678c6c73cb333234b85a0b078ba32" inode="2671728" device="2304" mtime="941545380" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/hyperlatex.html" file_size="1871" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="849b1421df0c923668ea1d59c95f2b15" inode="2672217" device="2304" mtime="948382980" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/hyperref.html" file_size="2345" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="df1086e9f22c56e3112c8d5055eb6ae3" inode="2671527" device="2304" mtime="941545380" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/hyphenat.html" file_size="2164" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="d5aaa7bea91b418cbd4c0328356ebc66" inode="2671617" device="2304" mtime="941545380" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/hypht1.html" file_size="1966" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="7b91b814185ca28c0fa1998eef5db375" inode="2671540" device="2304" mtime="941545380" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/ibm.html" file_size="1300" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="aa92cb0aaa408fea2e329894ce4eba34" inode="2672079" device="2304" mtime="941545380" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/idealfonts.html" file_size="1958" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="faf1c276890327352f56b1aedc65308a" inode="2672215" device="2304" mtime="941545380" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/ieeepes.html" file_size="2036" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="a350edb4926af216c95464e0a10021e8" inode="2671943" device="2304" mtime="941545380" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/ifacmtg.html" file_size="1871" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="405258bcdb741e98994120a9e1cbb50c" inode="2672534" device="2304" mtime="941545380" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/ifthen.html" file_size="1654" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="c501ebf4890ee561718cb8ddc07182c4" inode="2671944" device="2304" mtime="941545440" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/imac.html" file_size="1937" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="8d6e8d6ad151deb666f98fadccd67b8e" inode="2671467" device="2304" mtime="948115020" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/includex.html" file_size="2659" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="d7f94bc88bc53f5fcb051a3f4efcde9d" inode="2671453" device="2304" mtime="941545440" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/indentfirst.html" file_size="1708" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="c96ecd73a263a4cffd23e6524db81ff4" inode="2671937" device="2304" mtime="941545440" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/indxcite.html" file_size="1998" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="89a42f0f489c0b685d1d9a74ad3c3ee1" inode="2672473" device="2304" mtime="941545440" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/info.html" file_size="1306" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="a6a39a65b90876aa0392716ad4f0dfce" inode="2672361" device="2304" mtime="941545440" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/inhyph.html" file_size="1666" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="2b62a877814c2068706906fa4a520f02" inode="2672297" device="2304" mtime="941545440" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/initials.html" file_size="1713" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="3025ba23863ac080d28764f1609266fd" inode="2672061" device="2304" mtime="941545440" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/inlinebib.html" file_size="1693" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="b1815e7d4cc4f4fbd5c62ea0986e4675" inode="2672396" device="2304" mtime="941545440" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/inputenc.html" file_size="1641" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="673c837652ee717ec492d427e20e958d" inode="2671907" device="2304" mtime="941545440" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/insbox.html" file_size="1840" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="984f04879e0cca0d20a9c6884560ccf2" inode="2672529" device="2304" mtime="941545500" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/ipa.html" file_size="1300" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="7cd93491d44b686598772abee5877195" inode="2672185" device="2304" mtime="941545500" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/isostds.html" file_size="2198" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="e0e37b86aff79f23cc1ea3f04caed6f3" inode="2671906" device="2304" mtime="941545500" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/ithyph.html" file_size="1673" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="8d53501217e91057efb94326575ce37a" inode="2671733" device="2304" mtime="941545500" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/izhitsa.html" file_size="1773" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="8be5abf60f2330e13746f747427a1237" inode="2671504" device="2304" mtime="941545500" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/jadetex.html" file_size="1817" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="42970a124619af73ba21e854c2a94b64" inode="2671835" device="2304" mtime="941545500" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/javatex.html" file_size="1662" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="e46a61371850a47689b1036e960c25b5" inode="2672541" device="2304" mtime="944655660" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/jeep.html" file_size="1672" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="72c71e398a8510b2dd535c8d8cadf525" inode="2672301" device="2304" mtime="941545500" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/jhep.html" file_size="1349" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="efbbece49b175fa481e4dd487400268f" inode="2672137" device="2304" mtime="941545500" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/jknappen.html" file_size="1990" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="62c4dc19fbe5a1c0c527b2412366713e" inode="2671514" device="2304" mtime="941545500" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/jpeg2ps-os2.html" file_size="1727" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="59296b2aa8e8957c9417f9d075b535fc" inode="2671551" device="2304" mtime="942060360" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/jpeg2ps.html" file_size="2258" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="166d864c37bc75c08cd57ffb9faa1bc7" inode="2671515" device="2304" mtime="941545500" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/jqt1999.html" file_size="1951" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="83572732b942630e990e531ab2997a94" inode="2671960" device="2304" mtime="941545560" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/jsmisc.html" file_size="1829" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="1a165b0fe2010868c6899f4368a2685f" inode="2672511" device="2304" mtime="941545560" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/jspell.html" file_size="1676" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="bb53f2c27692eb3507ae70b7f8eeda62" inode="2671821" device="2304" mtime="941545560" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/jura.html" file_size="2087" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="f560e20a22fb6678041c01afe4062ae1" inode="2671908" device="2304" mtime="941545560" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/jurabib.html" file_size="2265" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="b1ed565ed729ad98a2e21d3711cd366e" inode="2671689" device="2304" mtime="941545560" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/kalendar.html" file_size="1844" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="d9dffdffb007eff1bacc70e2bcdea1c7" inode="2672322" device="2304" mtime="941545560" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/kalender.html" file_size="1861" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="0e2779d84b021a376018686a89bfbbf5" inode="2671831" device="2304" mtime="941545560" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/karnaugh.html" file_size="2297" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="60c13b8c1b1ddcf44333eac4711a749d" inode="2671895" device="2304" mtime="941545560" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/kdgreek.html" file_size="1788" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="c0ad0e0d7d3a9dc064452556f267d888" inode="2671959" device="2304" mtime="941545560" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/kix.html" file_size="1837" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="c1e11b6cbad24edb26d884675acda26b" inode="2672149" device="2304" mtime="941545560" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/kluwer.html" file_size="2133" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="2a679809813d538a6789d8067f381c4b" inode="2671448" device="2304" mtime="941545620" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/knst.html" file_size="1795" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="e369414117b1c5b2199e5007828e77c9" inode="2671533" device="2304" mtime="941545620" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/knuth.html" file_size="1798" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="ed94ed1b5380ef92f3598fcea0d0e346" inode="2671852" device="2304" mtime="941545620" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/koi8.html" file_size="2117" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="4cd1e537d3e5c812fc6f65d403288906" inode="2671458" device="2304" mtime="949333980" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/koma-script.html" file_size="2265" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="4d2b14d7a8aa5faeaf7cd895a96c41da" inode="2671509" device="2304" mtime="941545620" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/kpathsea.html" file_size="1365" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="6143a223415d242c9734e644932e8a6b" inode="2671723" device="2304" mtime="941545620" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/kuvio.html" file_size="1820" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="44ee41fcdc5ef82a18f83b17c878bdd5" inode="2672466" device="2304" mtime="941545620" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/labels.html" file_size="2175" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="8f4fe518c86a4d6d252c982819b7df94" inode="2672099" device="2304" mtime="941545620" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/lamstex.html" file_size="1772" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="bf48b7c65fc676971bd9c61dd58d2464" inode="2671951" device="2304" mtime="941545620" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/lastpage.html" file_size="2343" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="bc801bd4c3a92131e1b75214d53ca7b1" inode="2671561" device="2304" mtime="941545620" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/lated.html" file_size="1866" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="c9e2934afb4f29dd5515a33db136ebeb" inode="2671875" device="2304" mtime="941545680" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/latex.html" file_size="1932" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="c15e537edb2bf263eafc16de7076a0c1" inode="2672508" device="2304" mtime="941545680" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/latex209.html" file_size="1734" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="a39323dd45cde4f93d4a949744636c22" inode="2671492" device="2304" mtime="941545680" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/latex2e.html" file_size="1952" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="e1c8a09d9a5bec838226d0b7e7f6361c" inode="2671451" device="2304" mtime="947000880" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/latex2html.html" file_size="2283" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="e2672abba317b596c96e0e8e2891bf59" inode="2672327" device="2304" mtime="941545680" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/latex2man.html" file_size="1883" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="ec0f925ae4bf4718c733aaf83ae82568" inode="2672064" device="2304" mtime="942423780" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/latex2rtf.html" file_size="1779" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="138dd84a11052a0a1faf93e13a08a13f" inode="2671693" device="2304" mtime="941545680" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/latexcad.html" file_size="1660" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="562be325a11141e7c00b57d59cdf1a21" inode="2672138" device="2304" mtime="941545680" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/latexfonts.html" file_size="1314" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="651878f5e112ed27604bf08fbfa46fef" inode="2672250" device="2304" mtime="941545680" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/latexmk.html" file_size="1964" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="76a82800f538891118200c34bd3099cb" inode="2672477" device="2304" mtime="941545740" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/latexn.html" file_size="1877" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="3416e450845fd24b037e7f76ccf4afb9" inode="2671767" device="2304" mtime="941545740" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/latin2jk.html" file_size="1927" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="49f5e042f118e59adf726df8af4bbe58" inode="2671876" device="2304" mtime="941545740" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/layout.html" file_size="1798" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="342277957ca8cdc8ee4e0f24eb0974c3" inode="2672557" device="2304" mtime="941545740" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/layouts.html" file_size="2200" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="75bf79b291febdf7efd0ce1e54d0093e" inode="2671583" device="2304" mtime="941545740" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/leaflet.html" file_size="2066" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="13a6d0e7b3e3b8fc743703ce959367e3" inode="2672053" device="2304" mtime="941545740" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/leftidx.html" file_size="1956" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="b2967486bf147fc4bb1be5a8ada9fcfd" inode="2671740" device="2304" mtime="941545740" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/letter.html" file_size="1662" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="bb5cef5934c2d9b6d0eb136ccba10590" inode="2671819" device="2304" mtime="941545740" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/letterspacing.html" file_size="1630" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="d130834d7a2d6bc08d3bf766616dd1ac" inode="2672078" device="2304" mtime="941545740" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/lettrine.html" file_size="1987" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="75ceaf50a8f513be9605bdda776b8400" inode="2672235" device="2304" mtime="941545800" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/levy.html" file_size="1850" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="62cdc8e456d742312671f0464cbdbf30" inode="2671915" device="2304" mtime="941545800" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/lexikon.html" file_size="1741" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="0d7adc98d96397291b981792a61d6760" inode="2671982" device="2304" mtime="941545800" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/lgreek.html" file_size="1846" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="b843821df139820cb2d12515e28ff020" inode="2671519" device="2304" mtime="945653040" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/lgrind.html" file_size="2157" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="bd72234bcaec35b1a5f0674476d696c0" inode="2671654" device="2304" mtime="941545800" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/lh.html" file_size="1805" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="64a2b52d7905eef4b11283f6ef0b6cee" inode="2672488" device="2304" mtime="941545800" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/lhcyr.html" file_size="1969" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="db0c35d62155de2cb091c5bc5e397613" inode="2672483" device="2304" mtime="941545800" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/lilypond.html" file_size="2053" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="0bd3f28563e4f30fda18c2c49279d388" inode="2672370" device="2304" mtime="941545800" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/linearb.html" file_size="1902" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="f9e92c6ba13e5e2fae560e6e37da8809" inode="2672514" device="2304" mtime="941545860" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/lineno.html" file_size="2215" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="e381f903603c63a4fcc10ebfdab7a58a" inode="2671914" device="2304" mtime="941545860" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/linguex.html" file_size="2064" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="cedd2f4e3c5779b5c226358a4d79260c" inode="2672359" device="2304" mtime="941545860" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/lintex.html" file_size="1844" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="c3347dc8aa63ebce7a3a1dfc26b635c5" inode="2671614" device="2304" mtime="941545860" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/lips.html" file_size="2468" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="9b4be1148d92866dc69fc4289162349e" inode="2671471" device="2304" mtime="941545860" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/listing.html" file_size="2136" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="c7bc4a53436b18e80c7ad929ffbc4e69" inode="2671696" device="2304" mtime="941545860" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/listings.html" file_size="2381" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="9e152d5091766a5decb73f4516dbb744" inode="2672341" device="2304" mtime="941545860" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/lkort.html" file_size="1302" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="b71faaea71b25db3e1fc38f743eec287" inode="2672107" device="2304" mtime="941545860" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/llncs.html" file_size="1805" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="302219ab40d931fb21b4f87c62846b02" inode="2672443" device="2304" mtime="941545920" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/localloc.html" file_size="1872" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="54b2c2e4350cb90461cb4c17eb2a8831" inode="2672298" device="2304" mtime="941545920" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/logic.html" file_size="1321" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="33595ad3c3ea30a3432bc222d3d2e33e" inode="2672210" device="2304" mtime="941545920" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/logo-ps.html" file_size="1760" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="4914973ae8bd8f42dd9f256e7214bf7d" inode="2671705" device="2304" mtime="941545920" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/lollipop.html" file_size="1771" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="f64c4da0371f985ac164cfac566deedc" inode="2672063" device="2304" mtime="941545920" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/longtable.html" file_size="2040" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="45dd0072f24a7e5e8d100012dd63d228" inode="2671810" device="2304" mtime="941545920" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/losymbol.html" file_size="1699" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="bd8c21c264faf13672d50eec8e356a6b" inode="2671495" device="2304" mtime="941545920" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/lscape.html" file_size="2228" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="46966ce7cdeef07c609ce077445edf6e" inode="2672030" device="2304" mtime="941545920" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/lshort-english.html" file_size="2448" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="3b9158c90d76a04056f9ed8e0282e8d6" inode="2672360" device="2304" mtime="941545920" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/lshort-finnish.html" file_size="2000" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="29eddab101890437ade6e1262688dc48" inode="2671450" device="2304" mtime="941545980" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/lshort-french.html" file_size="1891" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="97a39a07d596f1e93beba586aa0ee518" inode="2671568" device="2304" mtime="941545980" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/lshort-german.html" file_size="1726" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="639dc0ce194a43cb8ee097f1c148b0f6" inode="2671666" device="2304" mtime="941545980" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/lshort-mongolian.html" file_size="1912" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="624a7f8bd53694f9bc79565fd5eca827" inode="2672274" device="2304" mtime="941545980" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/lshort-polish.html" file_size="1879" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="1fd8ed6ef604aa59c2aed4a1689e5377" inode="2671505" device="2304" mtime="941545980" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/lshort-russian.html" file_size="1742" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="a2fd1b37ace8ed6f2887e85efa649efd" inode="2672042" device="2304" mtime="941545980" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/lshort-spanish.html" file_size="1742" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="1c5e6dd82128296f080d9954c6c4d136" inode="2672365" device="2304" mtime="941545980" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/ltablex.html" file_size="2018" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="aaa68b67822c7028cc720adf83c25386" inode="2671603" device="2304" mtime="941545980" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/ltnews.html" file_size="1802" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="63df0a5dbc14da7021493404c1231692" inode="2672023" device="2304" mtime="941545980" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/ltoh.html" file_size="1995" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="516eb852a235ea09de0226c31825979e" inode="2672121" device="2304" mtime="947800440" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/ltt.html" file_size="1818" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="ddeaddbc78fe19827a5b2779b951539b" inode="2672230" device="2304" mtime="941546040" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/ltx2rtf.html" file_size="1787" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="8ce69db57ffe39bc73e2edd62d7a657e" inode="2671702" device="2304" mtime="943959960" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/ltx2x.html" file_size="2147" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="cd93d9fbc26f0ae2ec069e13895a7577" inode="2672406" device="2304" mtime="941546040" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/ltxbase.html" file_size="1750" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="ab483643bb54fc2903754aba91a173a9" inode="2672495" device="2304" mtime="941546040" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/ltxdoc.html" file_size="1770" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="c3d36c53d54d84e515aad4cb94865f45" inode="2672535" device="2304" mtime="941546040" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/ltxinput.html" file_size="1945" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="e7e8057573a392dc4daa35b82af62052" inode="2672403" device="2304" mtime="941546040" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/ltxmisc.html" file_size="1818" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="1c6217ae35833beb6a0408a81d7a28f8" inode="2671958" device="2304" mtime="941546040" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/ltxsrc.html" file_size="1648" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="d10aa72e728be37cb8dc8fd51d5a7395" inode="2671939" device="2304" mtime="941546040" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/ltxtable.html" file_size="1861" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="48b47c550d38677d4d735b840dacb5fa" inode="2672033" device="2304" mtime="941546040" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/lucida.html" file_size="1773" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="4e7982c701ff84a9b09a946086ab6dfa" inode="2671794" device="2304" mtime="941546100" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/lucold.html" file_size="2492" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="ff414e09ece92e94b87519b3bbdbe783" inode="2672009" device="2304" mtime="941546100" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/lw35nfsx.html" file_size="2108" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="9ba74cd43563226d49cf726c81998176" inode="2671941" device="2304" mtime="941546100" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/ly1.html" file_size="1913" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="fb5c4c9160cbee77750243cacd56fff3" inode="2672446" device="2304" mtime="941546100" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/m-pictex.html" file_size="1803" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="7906106b4e872b9c135a72d5428c0702" inode="2672218" device="2304" mtime="941546100" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/macbibtex.html" file_size="2039" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="b7e8ca8054502ad048bd5f9d9a40a337" inode="2671462" device="2304" mtime="941546100" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/macgreek.html" file_size="1730" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="e4d8f6c3582831f707d26ae9e13504f3" inode="2671685" device="2304" mtime="941546100" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/magaz.html" file_size="1876" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="ddb99e0ef5fe142d71cfa12b3f98b8cb" inode="2671477" device="2304" mtime="941546100" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/mailing.html" file_size="1843" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="dcdddb526c9e8c1d32bdb81187336f93" inode="2672444" device="2304" mtime="942060360" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/makefonts.html" file_size="1920" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="5ef1e31563e37a7da4a2887ec895992a" inode="2672546" device="2304" mtime="941546160" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/makeindex.html" file_size="2152" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="61c14e8ced8d15afb60cab750f048a05" inode="2672418" device="2304" mtime="941546160" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/malayalam.html" file_size="1831" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="06caaa99b9d5610494efe32573c6a7a6" inode="2672400" device="2304" mtime="941546160" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/malvern.html" file_size="1754" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="c3f7cb91e37626949b45747932db2c7c" inode="2671866" device="2304" mtime="941546160" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/manfnt.html" file_size="1832" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="63a0d60db944ad9e90444c65a609ea76" inode="2671814" device="2304" mtime="941546160" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/manyfoot.html" file_size="2304" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="79147e9081f19b8a53a5bb6e8daf8924" inode="2671662" device="2304" mtime="941546160" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/mapcodes.html" file_size="1881" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="b9815b5c0c7b68b4880160ed03efcff7" inode="2671425" device="2304" mtime="941546160" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/maple.html" file_size="1858" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="4a7a5c94bd9bcc633180382e66ff4904" inode="2671990" device="2304" mtime="941546160" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/maplems.html" file_size="1199" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="64ac0227f32889d5862a188b4b43fdf5" inode="2672051" device="2304" mtime="941546160" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/margbib.html" file_size="1921" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="486d29d2c8b9f357aa2a3458764fa4fe" inode="2672050" device="2304" mtime="941546160" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/marvosym-mac.html" file_size="1942" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="ed4288858b81b4dd8a06924dfc01775e" inode="2671853" device="2304" mtime="941546220" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/marvosym.html" file_size="2218" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="9811c67185b064b8cf71713c00755085" inode="2672339" device="2304" mtime="941546220" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/mathcmd.html" file_size="2042" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="2dcee125e1cda73be0412571cfac8717" inode="2671735" device="2304" mtime="941546220" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/mathcomp.html" file_size="2004" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="624f40b9eb6241fc221a084a87d163dc" inode="2671882" device="2304" mtime="941546220" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/mathematica.html" file_size="2073" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="1012ea75c4c3b751d9b0f807f56c44a0" inode="2671898" device="2304" mtime="941546220" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/mathenv.html" file_size="2484" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="6b8ac9851641a56a1368e5c1dd316c40" inode="2672568" device="2304" mtime="941546220" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/mathinst.html" file_size="2110" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="e4c3630c07a8c6739a004646a996e58d" inode="2671698" device="2304" mtime="941546220" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/mathkit.html" file_size="1751" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="d8439efeca5ad3ddf4da1843e6b5b39d" inode="2671604" device="2304" mtime="941546220" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/mathpple.html" file_size="2130" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="4ab27bc040d680a374c4d46c089fb7ac" inode="2672348" device="2304" mtime="941546280" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/mathptm.html" file_size="1769" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="af2d7d14dd493bcd4c25c1a7d4e055ea" inode="2671887" device="2304" mtime="941546280" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/mathrsfs.html" file_size="1844" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="3495a200f6079880664482eb222e043a" inode="2671715" device="2304" mtime="941546280" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/mathspad.html" file_size="1807" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="c5e9acf8392abe651ebfa904106f89eb" inode="2671888" device="2304" mtime="941546280" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/mathspic.html" file_size="2172" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="61144077e2cae59bbb23a48b5c4774e4" inode="2671770" device="2304" mtime="941546280" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/mathtime.html" file_size="1968" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="815431666f07898aaef720ae23d592c0" inode="2671464" device="2304" mtime="941546280" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/mcite.html" file_size="1903" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="7d5220e1760b66cb0ec681505e68a495" inode="2672104" device="2304" mtime="941546280" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/mdwtools.html" file_size="2218" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="58a23ae276bc722f6616ad4247e89376" inode="2672398" device="2304" mtime="941546280" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/meta-mode.html" file_size="2195" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="dc3b32d2223dc664f416080801b40497" inode="2671885" device="2304" mtime="941546340" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/metapost.html" file_size="1872" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="d3e7ccfd5dd8f817f4fd293c78eaff01" inode="2672566" device="2304" mtime="941546340" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/method.html" file_size="1999" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="1230d27e03d618216ff9a1558ea3be7b" inode="2671498" device="2304" mtime="941546340" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/mex.html" file_size="2017" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="35e4916ec597b629c8a0983d3bc7541c" inode="2671564" device="2304" mtime="941546340" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/mf-ps.html" file_size="2078" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="fe470f6e709224e88c4b01654c871db8" inode="2671813" device="2304" mtime="941546340" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/mf2pt3.html" file_size="1750" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="7a671dd82ac4e046411eef43b8ade1a0" inode="2671952" device="2304" mtime="941546340" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/mf2tex.html" file_size="1995" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="7ea9cbeee7810bbf7c80479cb9f96370" inode="2672524" device="2304" mtime="941546340" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/mff.html" file_size="2075" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="b60a3eecdceb9e15d9fdb2a0be297771" inode="2672293" device="2304" mtime="941546340" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/mflogo.html" file_size="2076" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="fa050f2cfbf458239ac7d0049a6f38a3" inode="2671823" device="2304" mtime="941546400" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/mfnfss.html" file_size="1887" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="75cc88f5f549977e7c4c7ca743344eb3" inode="2671877" device="2304" mtime="941546400" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/mfpic.html" file_size="1828" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="b377147a39487157cbd1d4ef0a0db0db" inode="2671933" device="2304" mtime="941546400" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/mhs.html" file_size="1300" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="0917aa85991b06cf9618a786f347c6cd" inode="2672513" device="2304" mtime="941546400" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/midnight.html" file_size="1797" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="a2b4d486e709a972c17274bd226a5562" inode="2671739" device="2304" mtime="941546400" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/mif2xfig.html" file_size="1445" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="80847f313ab65401f539fc34bfe9b00c" inode="2671784" device="2304" mtime="941546400" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/miktex-axp.html" file_size="1703" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="2f58455de25e45749e2666dd94a63dba" inode="2672410" device="2304" mtime="945653100" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/miktex.html" file_size="2888" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="78ceaf9930dedae794e7a3c534d8dfb7" inode="2671873" device="2304" mtime="941546400" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/miniltx.html" file_size="1788" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="04c22bb7fcefc898bc7ebc7340dc8062" inode="2671719" device="2304" mtime="941546460" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/minitoc.html" file_size="1900" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="36a780022c5c2f9255089221f0af51f5" inode="2672563" device="2304" mtime="941546460" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/mirr.html" file_size="1859" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="0a1303202919b386aa5e7916d8c99a55" inode="2672326" device="2304" mtime="941546460" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/mitpress.html" file_size="1690" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="40993d28f2e2f76a5f7bd5df01481576" inode="2671694" device="2304" mtime="941546460" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/mkpic.html" file_size="2025" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="e2c7120dd07f54b428148583dadfaac9" inode="2672299" device="2304" mtime="941546460" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/mla.html" file_size="1732" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="b771a89131414c29588e798a827d045f" inode="2671800" device="2304" mtime="941546460" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/mlbib.html" file_size="1769" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="db9c3efffba13feb5920f93d0da77758" inode="2672423" device="2304" mtime="941546460" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/mltex.html" file_size="1899" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="1f701140116d2dfa6420117d032783a9" inode="2672409" device="2304" mtime="941546460" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/mmtools.html" file_size="2089" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="51cc2d1b8c6fc2b1c31a0b1faba75e26" inode="2671644" device="2304" mtime="941546520" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/mnras.html" file_size="1861" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="f764784cd9b842c57aa3a81fbcbcbe89" inode="2672407" device="2304" mtime="941546520" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/modes.html" file_size="1934" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="55d101a03609a6fb696cec4dfeac08c0" inode="2671932" device="2304" mtime="941546520" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/monotype.html" file_size="1852" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="7d4c00befa6388042b7ea248717b36cc" inode="2671663" device="2304" mtime="941546520" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/monster.html" file_size="1465" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="f9b7c2b212ef7feeb6e8dc205a45b825" inode="2671497" device="2304" mtime="941546520" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/montex.html" file_size="1874" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="ae6f605fa0b562b40c702b216d80b5ea" inode="2671726" device="2304" mtime="941546520" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/moredefs.html" file_size="2423" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="329db912e785dc1dbb65c139045e881e" inode="2671729" device="2304" mtime="944735160" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/morefloats.html" file_size="2074" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="353c8da3b22bdb7aabb14e1e293937d7" inode="2671834" device="2304" mtime="941546520" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/morehelp.html" file_size="2232" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="463b23046fca76cd4b59558a1bce0f1f" inode="2672537" device="2304" mtime="941546520" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/moresize.html" file_size="2274" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="9b5b9a281549dd2a47232a1fbf77b8ba" inode="2671544" device="2304" mtime="948115080" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/moreverb.html" file_size="2098" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="f21a64f8065a7d7928fde795ac10ac7b" inode="2671647" device="2304" mtime="941546580" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/morse.html" file_size="1753" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="b5e4396e8e34e52ba534c917d4698b26" inode="2671536" device="2304" mtime="941546580" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/mpattern.html" file_size="1938" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="f87e1a3cef2811bdd68a14a7eaeb91f2" inode="2672219" device="2304" mtime="941546580" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/mpfnmark.html" file_size="2177" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="32e8a0f46f2144facbe10adec8fc8089" inode="2671983" device="2304" mtime="941546580" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/ms.html" file_size="1915" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="4b1ca384984b74a49b2225ab17ec61f6" inode="2672390" device="2304" mtime="941546580" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/mslapa.html" file_size="2047" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="5f0c28d591fb4f744b0067c4bb09a9f4" inode="2671936" device="2304" mtime="941546580" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/mt11p.html" file_size="2118" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="743458b543d2a97bfb243c787241cb9e" inode="2671626" device="2304" mtime="941546580" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/mtbe.html" file_size="1825" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="80d1021e4c2b0106903e7972eb58ecd9" inode="2672500" device="2304" mtime="941546640" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/multenum.html" file_size="1861" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="fd2b0bd04194c4bb59b36d4264a86ff5" inode="2671623" device="2304" mtime="948383040" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/multibib.html" file_size="2261" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="8a17ef2001bca4bb7d694c9472a93b85" inode="2672282" device="2304" mtime="941546640" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/multicol.html" file_size="2003" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="63084a4fcabb3672abebf03d0fa6b1a3" inode="2672212" device="2304" mtime="941546640" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/multido.html" file_size="1674" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="79e79f410274917e00c734118ec6fb25" inode="2672515" device="2304" mtime="947800440" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/multirow.html" file_size="1983" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="1a8c720d4277878fa7922d3c44eb9cff" inode="2672434" device="2304" mtime="941546640" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/multitoc.html" file_size="1986" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="9dac1075409bfde52461f4cf2aa0f7a6" inode="2671529" device="2304" mtime="941546640" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/musicref.html" file_size="1194" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="7569d6b85ed0005c2ff8ec056e0d57cf" inode="2672014" device="2304" mtime="941546700" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/musictex.html" file_size="1813" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="289e698d53e3a4f824993ee425b5fb71" inode="2672046" device="2304" mtime="941546700" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/musixtex.html" file_size="1774" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="1bc0c5e00f2be9cf19a0497b42331a18" inode="2671491" device="2304" mtime="941546700" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/muthesis.html" file_size="1919" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="dcd976706cc8ce55b154dc96b59b93af" inode="2671972" device="2304" mtime="941546700" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/mxedruli.html" file_size="1729" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="223f566e37e07c1af3f5476f35e6a23d" inode="2672203" device="2304" mtime="941546700" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/mylatex.html" file_size="1712" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="fe699c77cd953c0e30de9421a475d49a" inode="2672153" device="2304" mtime="941546700" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/myletter.html" file_size="1854" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="6eba65ea17a836d22ddb0fe68fbb36c5" inode="2672426" device="2304" mtime="941546700" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/nassflow.html" file_size="1868" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="77779eb763c8d0f280d587edb5262785" inode="2671742" device="2304" mtime="941546700" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/natbib.html" file_size="2107" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="a73406c8f90893a34cf3f59451b5d6a0" inode="2672413" device="2304" mtime="941546700" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/nb4latex.html" file_size="1674" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="504a7bcaa0244ebd38fb71ba372e8644" inode="2672240" device="2304" mtime="941546760" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/nccfoots.html" file_size="1869" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="42760229d57b19ec7cc200196ca688b5" inode="2671558" device="2304" mtime="941546760" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/ncctools.html" file_size="1909" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="0381388a6ec226af2ca5fcaf6d4a65c6" inode="2671861" device="2304" mtime="945256920" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/nestquot.html" file_size="1988" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="6a50a83937e57ffdf88625c405bcc5b2" inode="2671627" device="2304" mtime="941546760" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/netpbm-win.html" file_size="1765" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="2da8ca0471f93981b3de6d5d88482fc6" inode="2672412" device="2304" mtime="941546760" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/newalg.html" file_size="1871" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="5e2af986c39e65c18978290100ea5b74" inode="2671758" device="2304" mtime="941546760" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/newclude.html" file_size="2880" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="87e1a0b11ceac67e576bae005e465b15" inode="2672161" device="2304" mtime="941546760" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/newlfm.html" file_size="2342" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="e3674c170226525b8e1945aade4f5749" inode="2671655" device="2304" mtime="941546760" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/newsletr.html" file_size="1821" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="98a44e75c6e793b5a4a6110d7b8ce073" inode="2672334" device="2304" mtime="941546820" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/newthm.html" file_size="1969" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="358e8331134a31542f965cf95faba181" inode="2672068" device="2304" mtime="941546820" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/niceframe.html" file_size="1872" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="d899363452988bfe8b817b403d79e605" inode="2671913" device="2304" mtime="941546820" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/noindent.html" file_size="1219" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="e842de69f3de45285d3fec2c09c66617" inode="2672506" device="2304" mtime="943451700" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/nomencl.html" file_size="2023" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="495f7961b495dd351041592c2cdfefc9" inode="2672258" device="2304" mtime="941546820" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/nonfloat.html" file_size="1966" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="02afa93f13eea36c0111f72d8e6a6c3a" inode="2672364" device="2304" mtime="941546820" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/nopageno.html" file_size="2269" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="0cdc6a917e02381f6d57e688a783a2a3" inode="2672136" device="2304" mtime="941546820" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/norbib.html" file_size="1734" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="44445232dae00bf9f1061ab10836b179" inode="2671765" device="2304" mtime="941546820" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/nrc.html" file_size="1847" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="70fcd36ff6c0a1b8274d639d16f1a3ab" inode="2671883" device="2304" mtime="941546880" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/ntemacs.html" file_size="1666" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="b371487fe766091b209063fa7decdf9d" inode="2672146" device="2304" mtime="941546880" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/ntg.html" file_size="1301" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="022116e34e5a329d189f4a41758c6715" inode="2671539" device="2304" mtime="941546880" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/ntgclass.html" file_size="1969" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="4b89444330952d4732c38615b04b52ba" inode="2671624" device="2304" mtime="941546880" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/ntheorem.html" file_size="2141" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="f73e7afaf3f31437b0f27414bdee2606" inode="2672253" device="2304" mtime="941546880" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/numline.html" file_size="1897" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="a68faeee2eecdd74197df67f8e01630d" inode="2671995" device="2304" mtime="941546880" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/obas.html" file_size="1459" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="df55f3791c88e207009d24af983ee907" inode="2672353" device="2304" mtime="941546880" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/objectz.html" file_size="1851" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="e0d7ca2f29ccf95c8457d8b68146dd36" inode="2672177" device="2304" mtime="941546880" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/oca.html" file_size="1710" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="d88b8cc6f3f0c6a746714620394742e7" inode="2672383" device="2304" mtime="947800440" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/ochem.html" file_size="1818" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="6e5fd9c323b0fb528f8132d2878a2c8f" inode="2672116" device="2304" mtime="941546940" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/ocr-a.html" file_size="1729" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="976ec2dad1781144577c5fb216d8d8f8" inode="2672135" device="2304" mtime="941546940" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/ocr-b.html" file_size="1610" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="4cda2c941a37c31722b21352e60765ad" inode="2672048" device="2304" mtime="941546940" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/ogham.html" file_size="1748" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="3c2f13d0629407be5a9922de880f9bff" inode="2671736" device="2304" mtime="941546940" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/ogonek.html" file_size="1848" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="31d6a9c4eeb3e6ca1d945a6aa0b09783" inode="2672214" device="2304" mtime="941546940" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/oldstyle.html" file_size="1919" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="c1ce0aa0291834328a465afa56ef0474" inode="2672417" device="2304" mtime="941546940" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/omega.html" file_size="1647" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="af12022efac2141c6c0a3dd993d048de" inode="2671957" device="2304" mtime="941546940" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/omegabase.html" file_size="1309" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="69ad7e382ff9d205ef0b5a64ba0c6e77" inode="2672291" device="2304" mtime="941546940" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/omegafonts.html" file_size="1294" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="cb756c25921c7a0ac1de0852c475d3be" inode="2671746" device="2304" mtime="941546940" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/onepagem.html" file_size="1856" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="d70b487232c24f0ec3c50a9a06fbf3f0" inode="2672092" device="2304" mtime="941546940" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/optional.html" file_size="1731" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="0913ca2c8f473de19580f3eb607a98ad" inode="2672347" device="2304" mtime="941547000" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/oriya.html" file_size="1637" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="d7520b32a0355ae3d115912bfbcf12c9" inode="2671599" device="2304" mtime="929475960" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/oryia.html" file_size="1644" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="bcc62e1d649d85529c4a1042ce3c9e65" inode="2671706" device="2304" mtime="941547000" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/os2tex.html" file_size="1659" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="27d22f3c5cb689e52d2348db76ce00f9" inode="2671874" device="2304" mtime="941547000" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/osmanian.html" file_size="1781" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="01f7b145555b7c2d55b0439a6b65110d" inode="2671502" device="2304" mtime="941547000" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/ot2cyr.html" file_size="1795" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="c59a95662fee8c2b7962fad5112a73ad" inode="2671600" device="2304" mtime="941547000" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/outliner.html" file_size="1987" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="b2077b9651fa91a9bb01f6cbb68d49f3" inode="2672029" device="2304" mtime="941547000" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/overcite.html" file_size="1785" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="3e28e2c4c01c9c0dea04f7d5d3f089ce" inode="2672152" device="2304" mtime="941547000" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/overpic.html" file_size="2203" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="dc21f41911c089d1b77880a93f96f9a6" inode="2671749" device="2304" mtime="941547000" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/overword.html" file_size="1888" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="ebb5c6460e2828827ab4a0e1c959d2a3" inode="2672391" device="2304" mtime="941547000" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/oxford.html" file_size="2009" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="9a13f3c6013c982dc86ce1d75f1a1813" inode="2672548" device="2304" mtime="941547000" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/oztex-german.html" file_size="1717" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="50144455dad5c055bf4935750f87db84" inode="2671924" device="2304" mtime="941547060" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/oztex.html" file_size="1840" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="123482906d9a7f0ca3a5ca65dbbd560d" inode="2672498" device="2304" mtime="941547060" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/pacioli.html" file_size="1868" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="0059af7f3f2bde10499e9d7297ef30e3" inode="2672012" device="2304" mtime="941547060" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/pagedraw.html" file_size="1736" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="ed5aa2609a18319d124185dc84c1ad32" inode="2672325" device="2304" mtime="941547060" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/pageno.html" file_size="2116" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="693268bceed4914abb893000de8fb4fd" inode="2671652" device="2304" mtime="941547060" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/pagesel.html" file_size="1827" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="573364e26b4bfc9dbeea12d2327b7be3" inode="2671429" device="2304" mtime="941547060" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/pandey.html" file_size="1722" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="626b6df8aba73b3df768e24f6d61dd06" inode="2672145" device="2304" mtime="941547060" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/pandora.html" file_size="1749" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="884a1c19d79a44192d00e6c655ef0413" inode="2672545" device="2304" mtime="941547060" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/paper.html" file_size="2133" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="d318bbe75192130fb8bbeb9bde6f3ef5" inode="2671597" device="2304" mtime="941547060" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/paralist.html" file_size="2085" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="c8013c9342806a30a03ddae72df7bdca" inode="2672308" device="2304" mtime="941547120" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/parallel.html" file_size="1972" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="4a2cca71ff5fbeac5edc9ad7e6486b79" inode="2672332" device="2304" mtime="943522860" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/parskip.html" file_size="1930" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="68674f851864d24cfbb7324c931036c2" inode="2672504" device="2304" mtime="941547120" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/patch.html" file_size="1309" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="f13fc9089580bea45baccc20e650ffea" inode="2671653" device="2304" mtime="941547120" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/path.html" file_size="1714" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="26a8159b7230d583c0f279e8f0cf60f5" inode="2671817" device="2304" mtime="941547120" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/pawpict.html" file_size="2086" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="500a3eb57f2c0ac2ac875f85c56747c4" inode="2671917" device="2304" mtime="941547120" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/pb-diagram.html" file_size="1922" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="9dc0d126c3e1d50b87eb8e9ee2b302b0" inode="2672276" device="2304" mtime="941547120" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/pbmtogf.html" file_size="2052" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="c28a918432d1ae5ed3dcb6f8e29f3696" inode="2671768" device="2304" mtime="941547120" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/pcfonts.html" file_size="1685" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="bceecf41ff9427ca796d9f2302a62f45" inode="2671427" device="2304" mtime="941547120" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/pdcmac.html" file_size="1807" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="dac32156e9ff86e299905ed8b02bac6a" inode="2672232" device="2304" mtime="941547120" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/pdfscreen.html" file_size="2297" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="fde47c0815df893758e0c0481eea8fe9" inode="2672496" device="2304" mtime="941547120" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/pdfslide.html" file_size="2239" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="6c53fc193d4b30e7f444fb1408f5611f" inode="2672371" device="2304" mtime="941547180" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/pdftex-djgpp.html" file_size="1795" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="165210b339208af23a1296dffb683af5" inode="2672382" device="2304" mtime="941547180" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/pdftex.html" file_size="2002" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="ca66ef0b1b886265368a426c4ece937b" inode="2672102" device="2304" mtime="941547180" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/pdftex_oztex.html" file_size="1710" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="ccc3bd147c845091b56e84782d97a556" inode="2672304" device="2304" mtime="942423780" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/permute.html" file_size="1934" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="837f6e9e5da72ad3747f6e09ebf9cd14" inode="2671511" device="2304" mtime="941547180" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/pf2afm.html" file_size="1801" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="6d402cca53d269616c8621739fc58e8f" inode="2672489" device="2304" mtime="941547180" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/phoenician.html" file_size="1988" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="9690cca8164da150a100381a42e6d035" inode="2671552" device="2304" mtime="941547180" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/phonetic.html" file_size="1781" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="39628e24d0f8df0cd05080cde490a1fe" inode="2671911" device="2304" mtime="941547180" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/photo.html" file_size="2185" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="b112c47fdd28abe215859e356122e99d" inode="2672227" device="2304" mtime="941547180" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/phppcf.html" file_size="1713" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="ef825c3360070ac9b1c0586f3b938133" inode="2671676" device="2304" mtime="941547240" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/physe.html" file_size="1732" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="b482a2a285ee2b027ab2392463b90042" inode="2671872" device="2304" mtime="941547240" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/phyzzx.html" file_size="1753" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="d4955d6a4082309c3b01d1b560ff54cd" inode="2672431" device="2304" mtime="941547240" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/picinpar.html" file_size="1950" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="0a5d2e528925538c0fff2d146e7a1362" inode="2672518" device="2304" mtime="941547240" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/picins.html" file_size="1823" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="0f73fd554f2a1e6b4373dd2d3b0fb9a9" inode="2671891" device="2304" mtime="941547240" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/pictex.html" file_size="1926" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="5076268d12202e4d4ef7470bb447a9a8" inode="2671725" device="2304" mtime="941547240" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/pictex2.html" file_size="2068" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="a07dac5c79178d46476e5ee6a3f5dae5" inode="2672435" device="2304" mtime="941547240" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/piff.html" file_size="1832" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="a513bc5a6bde0096ffc36c6fa505a270" inode="2671949" device="2304" mtime="941547240" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/piq.html" file_size="1702" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="401b4023031b2649a27dad1758a9c2ca" inode="2672124" device="2304" mtime="941547240" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/pitthesis.html" file_size="1805" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="d8f73499fffa9da559fdea03a70a4133" inode="2672519" device="2304" mtime="941547300" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/pkfind.html" file_size="2024" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="82fc85f1691ac1e8b3621395d9294199" inode="2672252" device="2304" mtime="941547300" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/pl-mf.html" file_size="2026" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="824c94b758beed2612a56b96002c611e" inode="2672074" device="2304" mtime="949069140" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/pl-qx.html" file_size="1954" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="45fdf83bc159100ca1289886af0af145" inode="2672352" device="2304" mtime="941547300" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/pl.html" file_size="1842" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="55528bcf2931da564f0b1d3c96b90d12" inode="2672222" device="2304" mtime="941547300" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/plain.html" file_size="1731" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="9c43a73871a84f9d3d69a4be63fcd45f" inode="2672550" device="2304" mtime="941547300" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/plainmisc.html" file_size="1819" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="4c9a46b5d443db0112bf9082bbd8f8c3" inode="2672323" device="2304" mtime="941547300" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/plaintex.html" file_size="1308" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="0597c9c79bbef30899b0b50e0e943261" inode="2672510" device="2304" mtime="941547300" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/plari.html" file_size="1857" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="1d18e1a128a45b112e2affc05bca0f80" inode="2672565" device="2304" mtime="941547360" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/platex.html" file_size="1932" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="608563958771b4d27dfcda2b4d2e5f25" inode="2671680" device="2304" mtime="941547360" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/play.html" file_size="1915" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="f218bf4a7ba2ac2b106d95f395e1492d" inode="2671791" device="2304" mtime="941547360" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/plcalendar.html" file_size="1961" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="03e678efac3fa3438a421dfc8458a465" inode="2672474" device="2304" mtime="941547360" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/plfonts.html" file_size="1772" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="4ad92a77d740c8dc478ad148a6eda979" inode="2671989" device="2304" mtime="941547360" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/plgraph.html" file_size="1378" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="8d21db9366dd777a2ca585b959d87e66" inode="2672113" device="2304" mtime="941547360" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/plpatch.html" file_size="1308" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="2993cf6e971cb56b033d29568c48be56" inode="2672460" device="2304" mtime="941547360" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/plpsfont.html" file_size="2050" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="743766e6f29999fd79cea8e058ab3630" inode="2672373" device="2304" mtime="941547360" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/pmcstex.html" file_size="2020" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="8deeaa6c812e72256739b87571307daf" inode="2671691" device="2304" mtime="941547360" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/pmgraph.html" file_size="1954" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="ceda658b0daa8b3c62dda5fd3ae078ad" inode="2671744" device="2304" mtime="941547420" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/poligraf.html" file_size="2038" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="4190e745e3d1a7520ecf264f2b3e1ef1" inode="2672525" device="2304" mtime="941547420" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/polish-doc.html" file_size="1322" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="6be389a149257c25980daf196b1010b1" inode="2672401" device="2304" mtime="941547420" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/polyglot.html" file_size="1889" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="26ba621f9fe912913e77332ffda8dceb" inode="2671598" device="2304" mtime="941547420" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/postcards.html" file_size="2368" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="f68f786ec3db7734e9a81e0d1f51f5fa" inode="2672083" device="2304" mtime="941547420" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/ppchtex.html" file_size="1882" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="069bec13aa1231a108b9c5d8dba3db8a" inode="2671559" device="2304" mtime="944655660" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/ppower4.html" file_size="2043" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="73576f9b7b2c7bd37204c4b6f4dec4ec" inode="2672342" device="2304" mtime="941547420" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/prelim2e.html" file_size="2138" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="e6a1f11215d52fea411ccdf1270b020e" inode="2672283" device="2304" mtime="941547420" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/prettyref.html" file_size="2093" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="9b262a9260a039a78ac59562264f499f" inode="2672368" device="2304" mtime="941547420" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/progkeys.html" file_size="2110" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="c3715a0237134bc3601a8628e68ee417" inode="2672045" device="2304" mtime="941547480" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/program.html" file_size="1855" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="c00c445c81ebff4568c1222dc8957aa2" inode="2672019" device="2304" mtime="941547480" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/proofs.html" file_size="1851" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="363b02a7443f6e1afb6df735cb574747" inode="2672027" device="2304" mtime="941547480" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/protex.html" file_size="1306" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="0ed20ea0fa45d38d9622599d1ddbd427" inode="2672197" device="2304" mtime="941547480" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/protocol.html" file_size="1737" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="89c10ca234c221bc704179140bbb0608" inode="2672349" device="2304" mtime="941547480" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/prv.html" file_size="1803" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="d8e119855a3d23604479b1509d4492f4" inode="2671503" device="2304" mtime="948115080" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/ps_conv.html" file_size="1873" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="4ea5ed4b75e7485ca948af9c7681e802" inode="2671524" device="2304" mtime="941547480" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/ps_view.html" file_size="1915" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="728e776778bae576283e22094e128618" inode="2671923" device="2304" mtime="941547480" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/psboxit.html" file_size="1796" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="57bea62519a3603f7a24463e3f67caa5" inode="2672195" device="2304" mtime="941547480" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/psfig.html" file_size="1306" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="e5af8b278b389fa2da3a7505c903cc4c" inode="2672279" device="2304" mtime="941547540" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/psfixbb.html" file_size="1980" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="571dc094315efa35e454d88070ffeb49" inode="2672358" device="2304" mtime="941547540" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/psfont.html" file_size="2202" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="7736121e5d26d5094585b44aa463a5b9" inode="2672493" device="2304" mtime="941547540" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/psfonts.html" file_size="1839" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="494f029fec03aaad897d7e1a7ac47542" inode="2672176" device="2304" mtime="941547540" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/psfrag.html" file_size="2297" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="27893a3dcb5e37b25e8ff3f79dd95dfe" inode="2672378" device="2304" mtime="941547540" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/psizzl.html" file_size="1742" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="8dab7f656f2bff3651635fd5fd55e21e" inode="2671480" device="2304" mtime="941547540" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/pslatex.html" file_size="2563" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="1b2c7fd4d44e367eb2b68fb641d07d3b" inode="2671910" device="2304" mtime="941547540" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/psmerge.html" file_size="1313" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="68b329da9893e34099c7d8ad5cb9c940" inode="2672243" device="2304" mtime="941547540" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/psnfss.html" file_size="1" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="025546e0e04a4122698f710fe68d8914" inode="2672355" device="2304" mtime="941547540" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/psnfssx.html" file_size="1906" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="2ba19317f0583104dee2a714f5b2eca2" inode="2671734" device="2304" mtime="941547540" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/pspicture.html" file_size="1932" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="e655d034716d6ae5904f30823c3f7644" inode="2671493" device="2304" mtime="945340920" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/psrip.html" file_size="1915" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="12d045222aabfedc6a27bc8928241221" inode="2671636" device="2304" mtime="945340920" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/pstoedit.html" file_size="2328" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="cc63da2959b199da5f269c1fc5efd0c2" inode="2672085" device="2304" mtime="941547600" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/pstotext.html" file_size="1462" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="723fb017f25b7ba726a2d71f12d57e09" inode="2672494" device="2304" mtime="941547600" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/pstricks.html" file_size="2361" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="61507c6d2fa5531d55dc0673a2043626" inode="2672039" device="2304" mtime="941547600" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/psutils.html" file_size="1896" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="98c9955779f6e0d01c3cbcd2fc6b0718" inode="2671880" device="2304" mtime="941547600" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/punk.html" file_size="1756" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="5195a7e66bbf5001afbb68b8c50ee3cc" inode="2671855" device="2304" mtime="941547600" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/pybliographer.html" file_size="2126" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="5c1083d38901f5532188cad4240c57a9" inode="2672106" device="2304" mtime="942060360" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/qbibman.html" file_size="1720" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="3f64db25d0fd188e5ff9d464a963d3c7" inode="2671565" device="2304" mtime="941547600" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/qfig.html" file_size="1760" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="3ae004635c604c29a9b04defebdf3541" inode="2672156" device="2304" mtime="941547600" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/qfonts.html" file_size="2173" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="9382f480ce60ca3eb866df9818270260" inode="2671660" device="2304" mtime="941547600" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/qobitree.html" file_size="1853" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="672ab983cb756f793e7f0867716df8ff" inode="2672439" device="2304" mtime="941547600" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/qsymbols.html" file_size="1975" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="6acc1e4dcd0bf192e377e8ea40005168" inode="2671970" device="2304" mtime="941547660" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/quotchap.html" file_size="2138" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="d2f99fe3e2b7b968b45e9587b33e0060" inode="2672492" device="2304" mtime="941547660" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/quotes.html" file_size="2003" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="df0d2e77ab74a81853dea7def019a3b0" inode="2671633" device="2304" mtime="941547660" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/r-und-s.html" file_size="2063" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="790fee972fa24f3bd7da6fb82bd49bd2" inode="2671446" device="2304" mtime="941547660" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/ragged.html" file_size="1820" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="f379a7e3cd51b2904bc3371d2f25a4ea" inode="2672031" device="2304" mtime="941547660" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/ragged2e.html" file_size="2032" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="8f11f604a8ce27fd7b433443195f078e" inode="2671449" device="2304" mtime="943522860" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/raggedr.html" file_size="1654" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="3fb62c10989504751d7de99cc2d72af4" inode="2672290" device="2304" mtime="941547660" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/rail.html" file_size="1905" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="5bebb82b30fbf6102ebba1e86918aa4f" inode="2672540" device="2304" mtime="934039620" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/rangecite.html" file_size="1827" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="831bae5b30810e1f0948c27cabdea1e1" inode="2671899" device="2304" mtime="941550780" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/rawfonts.html" file_size="2008" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="14da233be0041d0b19859c16aceaff44" inode="2672457" device="2304" mtime="941550780" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/rawprint.html" file_size="2007" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="6078d1cb87b97f288c336713d8166b19" inode="2672312" device="2304" mtime="941550780" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/rcs.html" file_size="1906" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="795ae4e1a00edef0577d0dc95ae4ee01" inode="2671801" device="2304" mtime="941550780" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/rcsinfo.html" file_size="2077" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="e54c090bed89f851d1ef69a5c1910567" inode="2671778" device="2304" mtime="941550780" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/realcalc.html" file_size="1809" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="cfde474ba76e52a57ac06ee46389d5e9" inode="2672070" device="2304" mtime="941550780" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/recipe.html" file_size="1724" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="be2415b2c2fd1ca92b4579251391cb0c" inode="2672294" device="2304" mtime="948383040" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/refcheck.html" file_size="2157" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="8b3acd1dc2ed2f987740e76e80755cb7" inode="2672471" device="2304" mtime="949334040" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/references.html" file_size="2333" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="bb6904ba0dafb82545d8cd05def55fcf" inode="2672097" device="2304" mtime="941550840" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/refman.html" file_size="2047" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="8c7e4494f517a1d8ce67aba5c143f6ef" inode="2672388" device="2304" mtime="941550840" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/regcount.html" file_size="1984" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="abbc4605c771bfc7a226fa4e3226bc83" inode="2672509" device="2304" mtime="941550840" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/relenc.html" file_size="1977" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="7b41f320663e10b9944df8f3f6595b0d" inode="2672059" device="2304" mtime="941652960" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/relsize.html" file_size="1877" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="ba4982236caab48476e29003516c1cb3" inode="2672450" device="2304" mtime="941550840" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/remreset.html" file_size="1889" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="3c46174b8c92d104b7e621ca29239189" inode="2672182" device="2304" mtime="941550840" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/repeat.html" file_size="1751" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="bf2b681beed4a8d745db9a1a82ab49ad" inode="2671747" device="2304" mtime="941550840" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/revnum.html" file_size="1797" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="cb4dd392b0dc7e47f5ded8312d7c21c3" inode="2672285" device="2304" mtime="941550840" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/revtex.html" file_size="2195" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="734c0a196e6fb2795aa24d6f0eb7cc74" inode="2671629" device="2304" mtime="941550840" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/rlepsf.html" file_size="1875" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="df2cd460f793e618cb7eb56a820146b2" inode="2672034" device="2304" mtime="943959960" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/rmligs.html" file_size="1665" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="a08308016e5747b1bad0420e38a84257" inode="2672486" device="2304" mtime="941550840" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/rmpage.html" file_size="2438" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="c6659f412c7432d0db17d989eb4b3e05" inode="2672381" device="2304" mtime="941550900" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/romaniantex.html" file_size="1784" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="89ca62c1035a686e4e790fe84e3ea885" inode="2672111" device="2304" mtime="941550900" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/romanneg.html" file_size="1690" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="f2f8d517d747703ee124169901c96ce6" inode="2670356" device="2304" mtime="941550900" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/romannum.html" file_size="2018" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="903bc1dd87106247ebcacb0eb96d70dc" inode="2671948" device="2304" mtime="941550900" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/rotating.html" file_size="2280" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="d1d1656e81728d675435ee7161ab4586" inode="2672452" device="2304" mtime="941550900" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/rotfloat.html" file_size="1845" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="adcc3093cd4830a1d359473c194a58f5" inode="2672324" device="2304" mtime="941550900" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/rplain.html" file_size="1947" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="57365d19a644895173d511771f851a56" inode="2672268" device="2304" mtime="941550900" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/rsfs-ps.html" file_size="1756" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="530f3ce05ee34ed5b5ccab90dd3fd31a" inode="2671755" device="2304" mtime="941550900" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/rsfs.html" file_size="2042" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="fe59316909a14cb49c67659076ceb695" inode="2671547" device="2304" mtime="941550900" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/rtf2latex2e.html" file_size="1835" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="02a1784f2146dc033e2108de8c99db42" inode="2672351" device="2304" mtime="941550900" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/ruhyphen.html" file_size="1968" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="42cc4a98f19e7495bf7843eabbc9b9b7" inode="2671967" device="2304" mtime="941550960" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/ruler.html" file_size="1654" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="422db07e0e00c28fa291be77556ab95b" inode="2671461" device="2304" mtime="941550960" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/runic.html" file_size="1848" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="685ad9781d75d6b92a42b2569946bf47" inode="2671619" device="2304" mtime="941550960" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/russian-help.html" file_size="1683" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="b3d436f21286d5b6d9c4c125f6ad68f6" inode="2671428" device="2304" mtime="941550960" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/s2latex.html" file_size="1722" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="8e39efacd0be7f6ce6b54758590ae402" inode="2672117" device="2304" mtime="941550960" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/saferef.html" file_size="1965" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="8b2f9cbeaf9ffe4d484791f41afae4b5" inode="2671531" device="2304" mtime="941550960" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/sanskrit.html" file_size="1834" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="fca27479f6de17d42dfb5b921df6c368" inode="2672392" device="2304" mtime="941550960" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/sauter.html" file_size="1723" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="ace44d62c172e2f576a8c9dd5af6ab8d" inode="2671964" device="2304" mtime="941550960" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/sauterfonts.html" file_size="2264" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="05298afd0eff3c7818cce88f0028016a" inode="2672174" device="2304" mtime="942750240" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/scale.html" file_size="2041" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="f456a26ae5080e496db4072cfd4347e2" inode="2672507" device="2304" mtime="941550960" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/scalefnt.html" file_size="1869" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="ed2527189888f5f540ef9a5e8ed73866" inode="2671869" device="2304" mtime="941551020" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/schedule.html" file_size="2716" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="af368b71852d3aee7e8bc846c4c34263" inode="2672142" device="2304" mtime="941551020" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/script.html" file_size="1832" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="616bf9ded669481576efdd06798fc47b" inode="2672260" device="2304" mtime="942060360" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/scrnger.html" file_size="1810" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="a6af11d61ae056c795978f16b10a3c18" inode="2672002" device="2304" mtime="941551020" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/section.html" file_size="1681" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="f58cab4215c276193b3e13cc686b6694" inode="2671968" device="2304" mtime="941551020" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/sectsty.html" file_size="2130" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="e83656167b5d0a334bb37ec62ae3a5b4" inode="2671788" device="2304" mtime="941551020" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/selectp.html" file_size="1688" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="ae5ab1177ee32b7cb9b1022220aaac54" inode="2672464" device="2304" mtime="941551020" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/semantic.html" file_size="1966" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="c12f1c7883f2ed3a21c0ac014c3250e2" inode="2672168" device="2304" mtime="941551020" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/seminar.html" file_size="1975" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="b986ca838add93380da2797f385252c9" inode="2672340" device="2304" mtime="941551020" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/serial.html" file_size="2247" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="8191b324d143ac91cc29b54a13588eb2" inode="2671946" device="2304" mtime="941551020" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/setspace.html" file_size="1956" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="7e52483308c26d21cb66724ba1a28e40" inode="2672184" device="2304" mtime="941551020" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/sfg.html" file_size="1809" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="ee086fef08d0b91d57a9461f54f29fb5" inode="2672441" device="2304" mtime="941551080" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/sfheaders.html" file_size="2045" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="1797e57815dad5ec692507a998a7616f" inode="2672127" device="2304" mtime="941551080" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/sgmlcmpt.html" file_size="2011" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="15ca96d340765908005a7120c41f0fc8" inode="2672542" device="2304" mtime="941551080" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/shadbox.html" file_size="1914" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="13f13f29c468d06253447fa575659d46" inode="2671456" device="2304" mtime="941551080" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/shadethm.html" file_size="2085" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="013b567c71d0d01a605a1458122ea16c" inode="2672316" device="2304" mtime="941551080" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/shading.html" file_size="1910" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="a69e925f62cf09d50b23338fc003efaa" inode="2671424" device="2304" mtime="941551080" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/shadow.html" file_size="1672" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="7686fd72c12c67fbd0fc9fd3674fe3b3" inode="2672164" device="2304" mtime="941551080" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/shalom.html" file_size="1551" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="f537a53b1e6962a0627fbfce3e742292" inode="2672271" device="2304" mtime="941551080" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/shapepar.html" file_size="1760" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="82e16ff4fec2ef25547ffe962e847903" inode="2671474" device="2304" mtime="941551080" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/shhyphl.html" file_size="1687" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="7832b23be857d012c11e98f9d5f8378f" inode="2671847" device="2304" mtime="941551080" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/shortlst.html" file_size="1947" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="02566a2bbbad9ddede24895f7d2e35fe" inode="2671918" device="2304" mtime="941551140" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/shorttoc.html" file_size="2102" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="ba9cb637d212df3ae76ab79ddb780381" inode="2672041" device="2304" mtime="941551140" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/showdim.html" file_size="2049" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="54a852603e740a2b58ec8ffb99340b06" inode="2671512" device="2304" mtime="941551140" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/showkeys.html" file_size="1693" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="3a67c957bdf2912d67139e96784fe29e" inode="2671607" device="2304" mtime="941551140" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/showlabels.html" file_size="1907" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="3e9c7494e6ec59c2791ffbdf7cda2f16" inode="2672516" device="2304" mtime="941551140" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/siam.html" file_size="1822" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="ed2d2b98f25d7361aaff99131c2f4a91" inode="2671997" device="2304" mtime="941551140" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/sidecap.html" file_size="2029" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="3b787b6ec296997e160ffcfab85b54cc" inode="2671966" device="2304" mtime="941551140" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/siggraph.html" file_size="1964" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="042c839242b349c83f1003e6d5b08df2" inode="2671974" device="2304" mtime="943960020" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/simplified-latex.html" file_size="1944" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="f2b9fdb5fce4aecd1fb51ae05b0eaa21" inode="2672526" device="2304" mtime="941551140" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/simpsons.html" file_size="1823" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="8358aee5ce2d8d2db2ca991971c571b7" inode="2672438" device="2304" mtime="941551140" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/sinhala.html" file_size="1690" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="a94274a3100d2cec8e280ec3c64ec2cb" inode="2672315" device="2304" mtime="941551200" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/sirlin.html" file_size="1718" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="b978ba50f5a2ef0195b07744231e544d" inode="2671790" device="2304" mtime="941551200" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/siunits.html" file_size="1972" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="a95c98717f6e26d583cd281d262ab9e1" inode="2671793" device="2304" mtime="941551200" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/slashbox.html" file_size="1886" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="c42b21866e362da0822d70e1d1454bf8" inode="2671921" device="2304" mtime="941551200" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/slashed.html" file_size="1799" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="5cf0cb67adb72dd3e609d1643bce8113" inode="2672123" device="2304" mtime="941551200" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/slemph.html" file_size="2445" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="76a8850a3efc04532800ca7d0efadae1" inode="2672015" device="2304" mtime="941551200" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/slidenotes.html" file_size="2098" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="bbfd24177799a5801e566be5a909b3c6" inode="2671475" device="2304" mtime="941551200" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/slides.html" file_size="1876" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="bfc2f51505c76ba593706d44fbc2372b" inode="2672133" device="2304" mtime="941551200" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/slovak.html" file_size="1679" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="cafc0f16f761fb79fcba3c06b4ff82dd" inode="2671820" device="2304" mtime="941551200" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/smallcap.html" file_size="2199" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="13b7b4c2f1fd5570a080ca66687c0b90" inode="2671605" device="2304" mtime="941551200" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/smartmn.html" file_size="1907" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="4f199af995ec5a91796b9454e023817e" inode="2671487" device="2304" mtime="948383040" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/smartref.html" file_size="1720" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="721656d735c5aaaeb338294035d070a1" inode="2672188" device="2304" mtime="942423780" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/snapshot.html" file_size="2702" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="a14d810e83c5b62dab3b76b0199a40ce" inode="2672242" device="2304" mtime="941551260" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/snviewer.html" file_size="1666" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="c1d545e5005c9539481db7f20862e454" inode="2671700" device="2304" mtime="941551260" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/sober.html" file_size="1742" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="481ff122203780a1e8a8df5273328819" inode="2671588" device="2304" mtime="941551260" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/sobolev.html" file_size="2138" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="11ee4e0425ec85f63e979d0de497d372" inode="2671532" device="2304" mtime="941551260" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/somedefs.html" file_size="1953" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="f4365c19d5a05241d0da19a387bcd075" inode="2671848" device="2304" mtime="942750240" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/songbook.html" file_size="2084" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="fb7e5ca7ab71be9ea1295ca48e4142c7" inode="2672005" device="2304" mtime="941551260" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/sorhyph.html" file_size="1670" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="cbcaf66f2cb3adaba4aeffee2f68cc21" inode="2671954" device="2304" mtime="941551260" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/soul.html" file_size="2212" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="edca8d95d9be61698cf80310eeb24499" inode="2672538" device="2304" mtime="941551260" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/spanish.html" file_size="1740" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="d190bfc315d9f609fab6bd5e1933ace1" inode="2671846" device="2304" mtime="941551260" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/sphack.html" file_size="1751" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="a95dbe651cb1aa46dfbd26bf8a486def" inode="2671792" device="2304" mtime="941551260" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/sprite.html" file_size="1769" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="637b69b84a1188e175e0d7295f151abd" inode="2671947" device="2304" mtime="941551320" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/ssqquote.html" file_size="2284" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="c23c91348c63ce8402fbfa3e90d40592" inode="2671594" device="2304" mtime="941551320" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/startex.html" file_size="1931" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="c526d36f6d14d2de91e78de85209326e" inode="2672233" device="2304" mtime="941551320" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/stdclsdv.html" file_size="2101" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="44e5bee62cfab6195b2031486d03eda9" inode="2672560" device="2304" mtime="941551320" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/stmaryrd-ps.html" file_size="1800" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="93d9f253b0846f2c0bf26a436bf303ca" inode="2672266" device="2304" mtime="941551320" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/stmaryrd.html" file_size="1828" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="deb7b829277ef2f45092d8167763a12e" inode="2672179" device="2304" mtime="941551320" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/subeqn.html" file_size="1847" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="771d2d817f682e40b48c022e9e818b2a" inode="2671718" device="2304" mtime="941551320" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/subeqnarray.html" file_size="1877" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="614b360f4ca5b1031702adf774609de6" inode="2672262" device="2304" mtime="941551320" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/subfigure.html" file_size="2525" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="847de61fb70f63bea349ebfe9ab9e4df" inode="2671609" device="2304" mtime="941551320" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/subfloat.html" file_size="2037" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="f7082b50e6f796556e6c14ec93cccd17" inode="2672205" device="2304" mtime="941551320" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/subscript.html" file_size="1836" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="ec7bf4d5bf20dbd3287327d993c36eec" inode="2672056" device="2304" mtime="941551380" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/supertabular.html" file_size="2203" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="79220f36df32ddaba2a6bf12486d8deb" inode="2672263" device="2304" mtime="941551380" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/swebib.html" file_size="1703" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="978b308a771231c2342d921914b4f389" inode="2671930" device="2304" mtime="941551380" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/swiftex.html" file_size="2617" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="ac8b37a7cab486cc60397fd80375d671" inode="2672469" device="2304" mtime="941551380" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/syngen.html" file_size="1820" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="7683ef02b2319960e5bf8d65683044c6" inode="2672309" device="2304" mtime="941551380" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/syntonly.html" file_size="1752" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="06cd88905bddee3d3c1064eb34dd8eec" inode="2672480" device="2304" mtime="941551380" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/synttree.html" file_size="1983" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="0d3611a7aeec85ea70b4117ef2eea314" inode="2671661" device="2304" mtime="941551380" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/t-angles.html" file_size="2019" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="032eb43eb3011736ed1b9fb2851bb5ab" inode="2672158" device="2304" mtime="941551380" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/t2.html" file_size="1967" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="c1ec608cb896c7724f282b93992c1ab7" inode="2672394" device="2304" mtime="941551380" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/tabbing.html" file_size="1935" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="24c636320f6b64d749162322e294985e" inode="2672065" device="2304" mtime="941551440" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/tabls.html" file_size="1786" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="d3192c1109dac4726dbd5418f825ebe2" inode="2672186" device="2304" mtime="941551440" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/tabularx.html" file_size="1692" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="65e12afea40509ed472a74bc7caf6790" inode="2672172" device="2304" mtime="941551440" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/tap.html" file_size="2129" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="a0bc4ee6dceea842075505001264c3a8" inode="2671950" device="2304" mtime="941551440" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/taylor.html" file_size="1824" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="67cf33d6d828a3108b915a8cfbc140f5" inode="2672170" device="2304" mtime="941551440" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/tbe.html" file_size="1805" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="68ef725b529144d8fa6987cbee7896aa" inode="2671442" device="2304" mtime="941551440" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/tcvn.html" file_size="1742" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="14867e94619ba96945cb4141880c72fe" inode="2671486" device="2304" mtime="941551440" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/tcx.html" file_size="1292" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="92defbee27408e8498616ae2d50495e6" inode="2671576" device="2304" mtime="941551440" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/tds.html" file_size="1737" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="44e33c8770987cd6b84b86553116b00f" inode="2671776" device="2304" mtime="941551440" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/techexplorer.html" file_size="1796" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="0afdd672add542aec1d46d3be1a4af19" inode="2672318" device="2304" mtime="942750240" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/teencontrex.html" file_size="1886" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="2f5864ef78821ffe349998efe847fee7" inode="2671838" device="2304" mtime="941551440" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/tengwar.html" file_size="1792" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="7e7f167802a3328605b01cbf0eebffbf" inode="2672010" device="2304" mtime="941551500" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/tensind.html" file_size="1783" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="75010a6d75234de83bbd9b7e025f25cf" inode="2671865" device="2304" mtime="941551500" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/tensor.html" file_size="1815" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="7066f97a4936993858b967f14de5bce5" inode="2672231" device="2304" mtime="941551500" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/termcal.html" file_size="2318" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="ae4381925c940e14d7c4b6645bf356a3" inode="2672462" device="2304" mtime="941551500" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/testmath.html" file_size="1724" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="5462f12e035866053cf41b1bfde1e2d1" inode="2672239" device="2304" mtime="941551500" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/tetex.html" file_size="2468" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="f4ad036eaea15ce0610bc30b134b4d42" inode="2672047" device="2304" mtime="941551500" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/tex-math.html" file_size="1812" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="b0506e2e53eae55c54fbcdd6de358fb8" inode="2671447" device="2304" mtime="941551500" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/tex-ps.html" file_size="1920" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="aa4bf824dfd1853a67220319b61a2652" inode="2672354" device="2304" mtime="941551500" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/tex2bib.html" file_size="1763" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="ae9719a3cb111c2f121651ba6cf24581" inode="2671998" device="2304" mtime="941551500" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/tex2html.html" file_size="1596" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="d6e531f3cf74663b9edf65010cd92bf1" inode="2672213" device="2304" mtime="941551500" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/tex2ltx.html" file_size="1747" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="63eeba1bfc69ab9480bcdd400a949d93" inode="2671590" device="2304" mtime="941551560" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/tex2rtf.html" file_size="2205" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="6b6aa1ce23d5bc65a70608a3e7e5d8a5" inode="2671595" device="2304" mtime="941551560" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/tex4ht.html" file_size="2318" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="a0fc86f273908d47ef8354373d66eec7" inode="2672374" device="2304" mtime="941551560" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/tex98.html" file_size="1204" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="190e2d57e839a4cf919ccd5208960dc0" inode="2671465" device="2304" mtime="941551560" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/texdepend.html" file_size="1985" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="145441e9a11e56e6f89e5597aa4271aa" inode="2671780" device="2304" mtime="941551560" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/texdraw.html" file_size="1952" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="b2704358d264836ef51e6ad3d6702b3e" inode="2672372" device="2304" mtime="941551560" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/texed.html" file_size="1830" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="461e24ef83b576347d2b1e47f4440d91" inode="2671714" device="2304" mtime="941551560" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/texemplar.html" file_size="1775" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="4dc7bba9dc353845d2882e88b79804aa" inode="2671638" device="2304" mtime="941551560" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/texi2html.html" file_size="1350" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="11a941fd9fce3acb15808d55ec616b64" inode="2672379" device="2304" mtime="941551560" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/texi2www.html" file_size="1480" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="5e95687978fbfa39d7a99d521429ee44" inode="2671751" device="2304" mtime="941551560" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/texinfo.html" file_size="1998" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="e24a0fc9eebed7d15d924fbe04848334" inode="2672101" device="2304" mtime="941551560" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/texip.html" file_size="1739" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="6eab75bcb5429d6de4e7858a7bcff9f1" inode="2672501" device="2304" mtime="941551620" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/texlist.html" file_size="1750" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="71c4ac7a065f504cfab49bfd03bd9331" inode="2672122" device="2304" mtime="941551620" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/texperf.html" file_size="1765" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="42acf77d024d199b927e55e46279061f" inode="2672547" device="2304" mtime="941551620" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/texpict.html" file_size="1989" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="bea71649d0ac933fd6986eb4d1aaea89" inode="2671596" device="2304" mtime="941551620" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/texshade.html" file_size="2346" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="c14b346294d2bc6790daef14aa6ec6a9" inode="2672003" device="2304" mtime="945256980" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/texshell32.html" file_size="2329" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="367175122611880e3ded08fe730e74f3" inode="2671773" device="2304" mtime="941551620" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/texsis.html" file_size="2938" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="6dfdb445439d3f0c2ece159cfec5bc8d" inode="2672532" device="2304" mtime="941551620" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/texsk.html" file_size="1728" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="6ea68ea126c8ce369807e46f1aaf1903" inode="2671845" device="2304" mtime="941551620" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/text1.html" file_size="1774" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="5a85c391dd3850b04a75dfbd4f907e23" inode="2672256" device="2304" mtime="941551620" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/textcase.html" file_size="1931" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="defa54190586d1ec363b0ccce49b3cba" inode="2671858" device="2304" mtime="941551620" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/textcomp.html" file_size="1802" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="0451fef01853178687e7c98ea549e6de" inode="2671824" device="2304" mtime="941551680" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/textfit.html" file_size="1912" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="6193e5e5d22758e7daa9842791b19228" inode="2672207" device="2304" mtime="941551680" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/textmerg.html" file_size="1892" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="f04032106406f82f445c0f3b25638ff4" inode="2672503" device="2304" mtime="941551680" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/textoolspro.html" file_size="2075" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="e5160117e385760f00b47bbe04727cc5" inode="2671754" device="2304" mtime="941551680" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/textpos.html" file_size="2022" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="736f0d9129f813888ede3bbf1560bee6" inode="2671953" device="2304" mtime="941551680" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/tfmpk.html" file_size="1405" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="8252c361eda02c2903c445b7b3d1a5c7" inode="2671902" device="2304" mtime="941551680" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/theorem.html" file_size="1746" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="cb09b674f7cdf1fb87b13cebf8ae4b50" inode="2671602" device="2304" mtime="941551680" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/thesis.html" file_size="2056" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="8b15921eb19b99a200d42afb6d7920a3" inode="2671889" device="2304" mtime="941551680" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/threed.html" file_size="1900" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="8070e0e63d601032591fcf2400c26f3f" inode="2671777" device="2304" mtime="941551680" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/threeparttable.html" file_size="1742" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="4b6356ea47055891d8da70b88c939cba" inode="2672437" device="2304" mtime="941551680" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/thumb.html" file_size="1922" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="b3263d10ccc686bc8719c829feb81001" inode="2671851" device="2304" mtime="948457800" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/thumbpdf.html" file_size="2140" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="d8146d6c517cf0f878426fc4272c1047" inode="2671632" device="2304" mtime="941551740" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/tiff.html" file_size="1837" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="25a4ff7ea442a9585816d490b5dea81e" inode="2671830" device="2304" mtime="941551740" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/tiff2ps.html" file_size="1917" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="1a49e82dd744e4dbc61aef6ad1d46086" inode="2671635" device="2304" mtime="941551740" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/time.html" file_size="1781" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="244394c18e14af8152a76edfb077bcf3" inode="2672165" device="2304" mtime="941551740" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/times.html" file_size="1352" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="d9da590d3e0daf85a7192e720472340c" inode="2672087" device="2304" mtime="941551740" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/timesht.html" file_size="1861" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="79abdf6cd87fd4195e02455d80997df7" inode="2671938" device="2304" mtime="941551740" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/timing.html" file_size="1332" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="60123eb8b5f669bedc96590051a8284e" inode="2672169" device="2304" mtime="941551740" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/tinyc2l.html" file_size="2846" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="ba852114c7b694275896eaaa8b99f5f3" inode="2672072" device="2304" mtime="941551740" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/tipa.html" file_size="1753" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="6018df72f9256899015b2e33af0225f7" inode="2672554" device="2304" mtime="941551740" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/tipos.html" file_size="1851" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="e8e4a86f5eecfdc3a77d60cbc19b495d" inode="2671457" device="2304" mtime="941551740" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/titlefoot.html" file_size="2174" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="b02bd61551942c0b70ff7a835b6d5885" inode="2672035" device="2304" mtime="941551800" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/titleref.html" file_size="1816" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="3d160b3e9505f99fce99e15b22c238bb" inode="2671612" device="2304" mtime="941551800" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/titles.html" file_size="2621" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="7214926a0362c37461273e61d0f287e6" inode="2671534" device="2304" mtime="941551800" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/titlesec.html" file_size="2207" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="3f3456e64dc195fde13c520db06579f8" inode="2671585" device="2304" mtime="941551800" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/titletoc.html" file_size="1912" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="480f25d9c8d6a17c995bb05acfa99d89" inode="2672129" device="2304" mtime="941551800" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/tkbibtex.html" file_size="1969" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="851a03b2498b57498cf58e70527a1e7c" inode="2672055" device="2304" mtime="941551800" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/tmmath.html" file_size="1906" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="6758fb756233ead34917d7abe97dbc14" inode="2672052" device="2304" mtime="941551800" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/tmview.html" file_size="1927" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="f780095cd6782620af71c77c5e0a9154" inode="2672067" device="2304" mtime="941551800" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/tocbibind.html" file_size="2035" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="3bc1a8f4e1c532d4a18ea724a1614be8" inode="2672226" device="2304" mtime="941551800" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/tocloft.html" file_size="2066" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="35cb2669f5630977ab94d7d66ef43bd3" inode="2672109" device="2304" mtime="941551800" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/tocvsec2.html" file_size="2038" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="a40b58033b91f3b5178be05ad042e225" inode="2671738" device="2304" mtime="941551860" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/toil.html" file_size="2034" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="847ba36babf80cc805228d6c06deac09" inode="2671431" device="2304" mtime="941551860" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/topcapt.html" file_size="1865" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="9500415c7f407818a2aa0a6941b4a875" inode="2671971" device="2304" mtime="941551860" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/topfloat.html" file_size="1743" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="bdc1ac2fae649e16ed69ef8b77b3e82f" inode="2672017" device="2304" mtime="941551860" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/totpages.html" file_size="1845" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="5d26942bc7826eac730567cac974d46d" inode="2671589" device="2304" mtime="941551860" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/tracking.html" file_size="2002" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="ddf81b6eb19bb1316541365d10a1d0f8" inode="2672257" device="2304" mtime="941551860" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/trajan.html" file_size="1903" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="d2275b781ad3799e382271ed3b7ff68a" inode="2672564" device="2304" mtime="941551860" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/trans.html" file_size="1918" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="074e7185ffc031cc3a297b889e4ccc5d" inode="2672567" device="2304" mtime="948383040" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/transfig.html" file_size="1835" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="3c8202c0618044bf224929ec29853d2a" inode="2671542" device="2304" mtime="941551860" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/treesvr.html" file_size="1837" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="e1882d106b306be9677c97888d8266f9" inode="2671775" device="2304" mtime="941551860" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/treetex.html" file_size="1971" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="eedbfd3bb0cab269900887c5339e97e1" inode="2672234" device="2304" mtime="941551860" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/trfsigns.html" file_size="1836" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="83d5bec224b3cf73bc5b0a3a5b7c183d" inode="2671444" device="2304" mtime="941551920" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/truncate.html" file_size="1752" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="8600d65b60a479051d143a1112343942" inode="2672445" device="2304" mtime="941551920" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/tsconfig.html" file_size="1884" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="9c08eec1e4315c0a0ed0f673eb0e51f0" inode="2672530" device="2304" mtime="941551920" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/ttf2mf.html" file_size="1762" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="969c1367b2ef771e20d322b271fec8e2" inode="2671991" device="2304" mtime="941551920" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/ttf2pk.html" file_size="2014" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="0851cd044c998969e824bbc39b64fdfb" inode="2672267" device="2304" mtime="941551920" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/ttf2tfm.html" file_size="1910" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="0f145b79c695f2497816534c13b71e8c" inode="2672125" device="2304" mtime="941551920" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/ttftogf.html" file_size="1707" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="6504340def55d0697601ca130489a871" inode="2672091" device="2304" mtime="944169000" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/tth-rpm.html" file_size="1712" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="25901fbfee89ef12eba211297d2cba6f" inode="2672058" device="2304" mtime="944169000" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/tth-win.html" file_size="1742" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="6423dcc57b072ca4bbe7de51b01daee7" inode="2671798" device="2304" mtime="944169000" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/tth.html" file_size="2096" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="4534a88973d6bf87440345599177f72b" inode="2671984" device="2304" mtime="941551920" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/ttt.html" file_size="1688" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="7df156f06e467abf23226aeda6fa10ba" inode="2671433" device="2304" mtime="941551980" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/tubtoc.html" file_size="1188" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="078212746bf74df3f414d8cf03e63077" inode="2672272" device="2304" mtime="941551980" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/tugboat-toc.html" file_size="1700" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="c617264d64c2ecbed8b32974dafe4f6b" inode="2672095" device="2304" mtime="941551980" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/tugboat.html" file_size="1855" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="6d29df3d7e98bd48974332ca01248844" inode="2672393" device="2304" mtime="941551980" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/twg-list.html" file_size="1869" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="a97310e30bf0b396eb25801f80e4c72e" inode="2671659" device="2304" mtime="941551980" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/twoopt.html" file_size="1777" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="60419110f0e5c89f90edb5d0f8cfe586" inode="2671658" device="2304" mtime="941551980" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/twoup.html" file_size="1943" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="cfa386476d180ea86b613d0d7570a1f4" inode="2671743" device="2304" mtime="945185460" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/txt2tex.html" file_size="1915" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="379656a20946618ea88d30654a1b1faf" inode="2672384" device="2304" mtime="941551980" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/type1.html" file_size="1375" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="65743a8f3ba0e8951448b4db71aaced0" inode="2671928" device="2304" mtime="941551980" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/type1cm.html" file_size="2054" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="2e1624e78941e3613f29d26180ebd017" inode="2672284" device="2304" mtime="941551980" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/typearea.html" file_size="1780" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="86071c82ff9a9572e2757d9d11909ee0" inode="2671712" device="2304" mtime="941552040" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/typehtml.html" file_size="1820" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="8c25f485d31cab651dc5d676184811a0" inode="2672468" device="2304" mtime="941552040" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/typespec.html" file_size="1874" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="78f3e37fbf6e0bd555c8227a4bb1f673" inode="2672449" device="2304" mtime="941552040" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/uaclasses.html" file_size="2244" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="5776a1b2ff3b4870afe7fd1b05faffcd" inode="2671963" device="2304" mtime="941552040" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/ucthesis.html" file_size="1988" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="0c89f889714be7dd6f272df6ff9a374a" inode="2672319" device="2304" mtime="941552040" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/ukhyph.html" file_size="1848" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="784799573ede41e971ed62ac044c1d76" inode="2672305" device="2304" mtime="941661720" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/ukrhyph.html" file_size="1913" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="359231a4d312a1011b7c1c183f6b26a3" inode="2671979" device="2304" mtime="942060360" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/ulem.html" file_size="1806" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="abca2fa8a77cdbf974c984241e513945" inode="2672193" device="2304" mtime="941552040" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/ulsy.html" file_size="1837" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="7f73009bd65a23b936f38dbccd4bf729" inode="2672404" device="2304" mtime="941552040" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/umlaute.html" file_size="1897" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="8f4118b45b175120342ac1c2c78111a9" inode="2671772" device="2304" mtime="941552040" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/umrand.html" file_size="1855" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="94b59243d9771e722868d6cf05b4cf3a" inode="2672461" device="2304" mtime="941552040" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/uncial.html" file_size="1989" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="896b99c8428eeacf7ed2970b8e8c8e51" inode="2671935" device="2304" mtime="941552100" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/underlin.html" file_size="1900" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="9e7707657fe3f27881f3a59fee3637ea" inode="2672288" device="2304" mtime="941552100" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/underscore.html" file_size="1772" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="08f1fddec817770e7b7eb4b3e443a643" inode="2671482" device="2304" mtime="941552100" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/uni.html" file_size="1904" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="776505c24900e29933b32978643cccc7" inode="2671707" device="2304" mtime="941552100" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/uniqleaf.html" file_size="1878" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="2b2cc7de0029934b233809233e71ba6e" inode="2672038" device="2304" mtime="941552100" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/units.html" file_size="1884" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="47aa66ff228aedc39cb0cfb2d51d7770" inode="2672470" device="2304" mtime="941552100" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/universa.html" file_size="1814" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="cd6d8b12b66ae8a61088e8924b3a9e4d" inode="2671856" device="2304" mtime="941552100" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/unsupported.html" file_size="1332" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="9ced7381b106f495a91179a4cee530a1" inode="2672196" device="2304" mtime="941552100" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/url.html" file_size="2025" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="04731491205b5e9c8cad34091d08ce54" inode="2672345" device="2304" mtime="941552100" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/urw.html" file_size="1688" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="0678f5450f66b47775b3326841e8291b" inode="2671651" device="2304" mtime="941552100" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/urwstd.html" file_size="1306" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="ec86291384eebfeaf099e935ccf1ad03" inode="2671988" device="2304" mtime="941552160" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/urwvf.html" file_size="1935" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="7bf67b4c76211cfc7ce25aef11507e31" inode="2671996" device="2304" mtime="941552160" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/ut-backref.html" file_size="1829" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="79e66d5b2bc07d80d1012581752bb317" inode="2672173" device="2304" mtime="945256980" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/ut-thesis.html" file_size="1866" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="376330f83977102ba6b7fc3b59e81b41" inode="2672343" device="2304" mtime="941552160" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/utorontothesis.html" file_size="1819" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="c3b7248a3ed4ee5b2b9248e04861c3b1" inode="2672356" device="2304" mtime="941552160" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/utthesis.html" file_size="1972" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="e96c24f4828ebee7b5fbcb3d1818cb1b" inode="2671640" device="2304" mtime="941552160" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/uwthesis.html" file_size="1869" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="3996682cc93e1cb77ded319add23f9da" inode="2672094" device="2304" mtime="941552160" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/varioref.html" file_size="1686" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="d4b06ac9d6c929e2b1b4cdcf87a635b6" inode="2671721" device="2304" mtime="941552160" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/vdm.html" file_size="1809" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="c81ef23fcd3701c2e89b47e8aa2ad4a8" inode="2671664" device="2304" mtime="941552160" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/vector.html" file_size="1966" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="a21c06b1e3364542527215f6d528edb9" inode="2671677" device="2304" mtime="941552160" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/verbatim.html" file_size="1801" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="ae401401c8d0aef72f7bd2a93601d0ee" inode="2671945" device="2304" mtime="941552160" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/vertex.html" file_size="1828" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="b5fb66f2e091f473eeee711afd5f9611" inode="2672386" device="2304" mtime="941552220" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/vfcomb.html" file_size="1791" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="74c0154fb68d597857c4ee5df591dbf9" inode="2672307" device="2304" mtime="941552220" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/vfinst.html" file_size="1870" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="caeac526292e1a37b789ac7e32973650" inode="2671978" device="2304" mtime="941552220" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/vicentino.html" file_size="1645" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="af5cb5bd528d4b198ae04280efa3ae0f" inode="2672098" device="2304" mtime="941552220" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/viiptart.html" file_size="1783" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="51be9d88144232a0f360fa9c41a7b875" inode="2671763" device="2304" mtime="941552220" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/vita.html" file_size="1882" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="34d1587e4ee9b79e1a8d2e036e16877b" inode="2671481" device="2304" mtime="941552220" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/vmargin.html" file_size="2355" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="eaf6f8adcbc78b6e1da2fe9abd44052d" inode="2671630" device="2304" mtime="941552220" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/vncmr.html" file_size="1773" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="ed4560f0a2c582ea9aaa331f5139798d" inode="2671625" device="2304" mtime="941552220" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/vpage.html" file_size="1869" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="0488dd74b9bbbe1e635a2918c34fc096" inode="2671591" device="2304" mtime="941552220" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/vrb.html" file_size="1890" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="aab34dfdc4d5ba8b600eaddd66ec3b59" inode="2672527" device="2304" mtime="941552220" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/vrsion.html" file_size="1928" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="9ff3147bac523e2ed6e5c49d73fa870e" inode="2672001" device="2304" mtime="941552280" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/vruler.html" file_size="1874" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="a9335bd4671bdf1cd510fe334a4a44ed" inode="2672485" device="2304" mtime="941552280" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/warpcol.html" file_size="2313" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="bb9f90a0893abe1c94d08d3bbeb04aec" inode="2672447" device="2304" mtime="941552280" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/wasy-ps.html" file_size="1805" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="797a01714dc10570737b5b2e5fba9629" inode="2671713" device="2304" mtime="941552280" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/wasy.html" file_size="1862" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="8cb4bc50a94416db3d0e9b458041bd37" inode="2672281" device="2304" mtime="941552280" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/wasy2-ps.html" file_size="1761" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="9459641cc78f39c48d6104aaf1982ec2" inode="2672100" device="2304" mtime="941552280" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/wasy2.html" file_size="1717" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="4736e775ffd111e570b62f34ce53228c" inode="2671925" device="2304" mtime="941552280" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/wasysym.html" file_size="2394" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="d5438bdd7827972db111a4f918fe4da4" inode="2672558" device="2304" mtime="941552280" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/wbarcode.html" file_size="1777" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="a85585bdb55bded1da5c997e8fd5b6a5" inode="2672369" device="2304" mtime="941552280" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/web.html" file_size="2074" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="28a9b707761ec25950bb10b391dfccf0" inode="2671854" device="2304" mtime="941552280" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/web2c-win32.html" file_size="1804" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="dad7f674434e1f19491fe9f0c44ae2d9" inode="2672451" device="2304" mtime="941552280" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/web2c.html" file_size="2048" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="cffec3478916008787781942fe4643a8" inode="2672419" device="2304" mtime="941552340" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/williams.html" file_size="1854" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="adcb3e2e0a25dc24a4405b34beece6db" inode="2672300" device="2304" mtime="941552340" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/win95-guide.html" file_size="1926" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="372bb408a67dcee82c76e3c5a5c0ca5a" inode="2671927" device="2304" mtime="941552340" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/windvi.html" file_size="2664" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="6d0fa1bddc8d311b27c851ed746736a6" inode="2672057" device="2304" mtime="941552340" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/winedt.html" file_size="2496" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="0834945028068d2ad13931d66ca57d33" inode="2671704" device="2304" mtime="941552340" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/winemtex.html" file_size="1508" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="9aaa24a14d748a70a5fea06bd12a06a3" inode="2672270" device="2304" mtime="941552340" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/winshell.html" file_size="2321" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="d144b27eae224f15db7d602ca0ed5ba5" inode="2672066" device="2304" mtime="941552340" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/wmf2eps.html" file_size="1890" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="a13692d6d9b49d4170cacf75e75e847b" inode="2672162" device="2304" mtime="941552340" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/wnri.html" file_size="1814" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="03a6415cadd5e1c3048591d8c3d9927f" inode="2672006" device="2304" mtime="941552340" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/wntamil.html" file_size="1859" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="6feacb34d0256cede8b207ce2a02e216" inode="2672096" device="2304" mtime="941552340" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/word2x.html" file_size="1734" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="0cc4a4e794c952f57356cfe2673d2d3f" inode="2672522" device="2304" mtime="941552400" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/wp-conv.html" file_size="2073" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="d90f3fd145bf5de06cb99cc9432d4de9" inode="2672076" device="2304" mtime="941552400" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/wp2latex.html" file_size="1774" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="d38c022321114e074d8b7cc1c52eba6a" inode="2672424" device="2304" mtime="941552400" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/wrapfig.html" file_size="1834" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="48198cc259a24a7aa092626f9ad8e731" inode="2671522" device="2304" mtime="941552400" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/wsuipa.html" file_size="1773" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="2f062873a6ec99b0fd63d85876d59fd1" inode="2672108" device="2304" mtime="941552400" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/wtex95.html" file_size="1765" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="62f39f29f6dd2313a38df7df02407ca7" inode="2671934" device="2304" mtime="941552400" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/xarticle.html" file_size="1789" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="eb6070c8bca94c9393083414c141fd76" inode="2672244" device="2304" mtime="941552400" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/xcomment.html" file_size="1761" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="07e1261fef43f92ff068a55ba0b11a02" inode="2672346" device="2304" mtime="941552400" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/xdvi.html" file_size="1843" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="ae6cbb7b65a19e1ca516f529100a3271" inode="2672269" device="2304" mtime="941552400" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/xdvik.html" file_size="1789" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="14b0aea689e832b5111fcf94afcafc3a" inode="2671543" device="2304" mtime="948383040" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/xfig.html" file_size="1918" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="02a7411abc17d24ae419ee19901b09d4" inode="2671903" device="2304" mtime="948895380" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/xmltex.html" file_size="2140" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="77a9268adce2b968c4c280c52ed40efa" inode="2671510" device="2304" mtime="941552400" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/xr.html" file_size="1682" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="6680bd8f35d1bed013648b8a7a46b823" inode="2671842" device="2304" mtime="941552460" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/xspace.html" file_size="1692" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="538e4333be0eb864baef41191e28603c" inode="2671808" device="2304" mtime="941552460" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/xtab.html" file_size="1941" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="d83822813a04326973dbaef282704ff0" inode="2671656" device="2304" mtime="941552460" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/xtcapts.html" file_size="1323" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="8f72cb17c4a289c3b73fd3c79989fef0" inode="2671485" device="2304" mtime="941552460" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/xtem.html" file_size="2022" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="761e7385e4b6e27429deccd4623e31b5" inode="2672467" device="2304" mtime="948383040" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/xtrcode.html" file_size="1652" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="3d64ccfe899cfe9bf11156c6347e6e5f" inode="2671463" device="2304" mtime="941638800" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/xymtex.html" file_size="1835" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="7db434919dc791fe9d3f0ec1dd67c8f0" inode="2671537" device="2304" mtime="941552460" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/xypic.html" file_size="2230" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="8f76560da77f9d597b1319a67c39fccf" inode="2671904" device="2304" mtime="941552460" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/yannisgr.html" file_size="1781" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="5e09e8e4bab36e0bd788a27878c8e5b3" inode="2672040" device="2304" mtime="941552460" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/yfonts.html" file_size="1971" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="4323f4a88467214c00fa038f8390edfe" inode="2672553" device="2304" mtime="941552460" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/yhmath.html" file_size="1850" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="a83651ea58805900b826ce61769a4b9d" inode="2671783" device="2304" mtime="941552460" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/yi4latex.html" file_size="1948" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="9b580a0a1f194834adf158b9d3ae0126" inode="2671530" device="2304" mtime="941552520" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/yinit.html" file_size="1707" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="fb00b8b1983d5855909e2f4f76cf44fa" inode="2671892" device="2304" mtime="941552520" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/youngtab.html" file_size="2064" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="674b64ea2070cb6de5b135b56be7a276" inode="2672241" device="2304" mtime="942750240" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/yplan.html" file_size="2117" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="42afc6b9b0cf466d893fd6383b1a4c7e" inode="2672289" device="2304" mtime="941552520" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/ytex.html" file_size="1744" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="04b17c97c5b40f60d74d53a9d81e5d37" inode="2672280" device="2304" mtime="941552520" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/zed-csp.html" file_size="1853" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="3cd5687a5dfe29c2b370ba0542ef0c38" inode="2672440" device="2304" mtime="941552520" flags="0" name="/usr/share/texmf/doc/help/Catalogue/entries/zefonts.html" file_size="1970" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="7cac848f296e9aebf33c5d110e9e8eea" inode="2672581" device="2304" mtime="941540160" flags="0" name="/usr/share/texmf/doc/help/Catalogue/fr.png" file_size="134" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="5496587d039eaf9e21f96341c2ac562c" inode="2672584" device="2304" mtime="941540160" flags="0" name="/usr/share/texmf/doc/help/Catalogue/ftp.png" file_size="914" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="af05c005fce9d01d6601dd96d80db139" inode="2672580" device="2304" mtime="941540160" flags="0" name="/usr/share/texmf/doc/help/Catalogue/gb.png" file_size="275" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="4009e5e3373f2876cde7943782908481" inode="2670351" device="2304" mtime="949333980" flags="0" name="/usr/share/texmf/doc/help/Catalogue/hier.html" file_size="190230" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="6cdb7d970e9a8492001fefeed2d48d8f" inode="2672576" device="2304" mtime="941540160" flags="0" name="/usr/share/texmf/doc/help/Catalogue/home.png" file_size="493" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="04554f068ee1ea5dcd54ca2aaa1700bd" inode="2672583" device="2304" mtime="941540160" flags="0" name="/usr/share/texmf/doc/help/Catalogue/it.png" file_size="136" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="df5100c1dc99c5a9b86655992626621b" inode="2672585" device="2304" mtime="941540160" flags="0" name="/usr/share/texmf/doc/help/Catalogue/jp.png" file_size="165" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="ae5aa8892df18b70a17351de182c4c16" inode="2672587" device="2304" mtime="930996900" flags="0" name="/usr/share/texmf/doc/help/Catalogue/licenses.artistic.html" file_size="1177" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="0416d4e93e64ad49e91f480e59685d41" inode="2670228" device="2304" mtime="930996900" flags="0" name="/usr/share/texmf/doc/help/Catalogue/licenses.bsd.html" file_size="1241" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="1d3f3ae0a8d8fae3a8eb8db59fd72c53" inode="2672601" device="2304" mtime="929191860" flags="0" name="/usr/share/texmf/doc/help/Catalogue/licenses.dfsg.html" file_size="1402" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="64e6c62d950f1399592c78fcb1cec32c" inode="2672595" device="2304" mtime="930996900" flags="0" name="/usr/share/texmf/doc/help/Catalogue/licenses.gpl.html" file_size="1153" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="d3ae175fa90446559989824edbdeb06b" inode="2672573" device="2304" mtime="930996900" flags="0" name="/usr/share/texmf/doc/help/Catalogue/licenses.html" file_size="5869" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="129089df06774cec60dc42fb33afdc9e" inode="2670348" device="2304" mtime="930996900" flags="0" name="/usr/share/texmf/doc/help/Catalogue/licenses.knuth.html" file_size="1038" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="f33305d665c6fad195974ef568cdf766" inode="2672588" device="2304" mtime="930996900" flags="0" name="/usr/share/texmf/doc/help/Catalogue/licenses.lgpl.html" file_size="922" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="1e5ed226d37813b2ee06f6ded1df803c" inode="2670230" device="2304" mtime="930996900" flags="0" name="/usr/share/texmf/doc/help/Catalogue/licenses.lppl.html" file_size="1151" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="5eace35bb1206ee88f8ba3938e0672eb" inode="2672602" device="2304" mtime="930996900" flags="0" name="/usr/share/texmf/doc/help/Catalogue/licenses.nocommercial.html" file_size="859" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="5bc7d49173c0a7c90a379bbcb5e93010" inode="2670353" device="2304" mtime="930996900" flags="0" name="/usr/share/texmf/doc/help/Catalogue/licenses.nosell.html" file_size="1172" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="6970b0a40dcfe44baa9739f7331fe2cd" inode="2672604" device="2304" mtime="930996900" flags="0" name="/usr/share/texmf/doc/help/Catalogue/licenses.nosource.html" file_size="1194" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="dfd0aa89c2976c6071277e5f1519aa2c" inode="2672597" device="2304" mtime="930996900" flags="0" name="/usr/share/texmf/doc/help/Catalogue/licenses.other.html" file_size="1093" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="1e74f8e76db4c078775da17d0245dce6" inode="2672599" device="2304" mtime="930996900" flags="0" name="/usr/share/texmf/doc/help/Catalogue/licenses.pd.html" file_size="1101" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="3d0f521ccc859e1060662b24fa5b269a" inode="2672571" device="2304" mtime="930996900" flags="0" name="/usr/share/texmf/doc/help/Catalogue/licenses.shareware.html" file_size="801" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="409669a9787186b622a6453cf0968041" inode="2672594" device="2304" mtime="930996900" flags="0" name="/usr/share/texmf/doc/help/Catalogue/licenses.unknown.html" file_size="1282" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="1b883def8e056b7b5dd4d61dd360f1b2" inode="2672586" device="2304" mtime="948895380" flags="0" name="/usr/share/texmf/doc/help/Catalogue/ls-lR.gz" file_size="20855" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="b32fb24b31c7e4cb5804836f81d967c0" inode="2672582" device="2304" mtime="941540160" flags="0" name="/usr/share/texmf/doc/help/Catalogue/new.png" file_size="1247" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="8b673453459d7a9abdfc7a069e3eaac5" inode="2672589" device="2304" mtime="941540160" flags="0" name="/usr/share/texmf/doc/help/Catalogue/pl.png" file_size="127" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="a529689dd8dc81714447bb50a41db511" inode="2672593" device="2304" mtime="941540160" flags="0" name="/usr/share/texmf/doc/help/Catalogue/search.png" file_size="290" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="68338cca244a477ccd0c0e776e852448" inode="2672591" device="2304" mtime="941540160" flags="0" name="/usr/share/texmf/doc/help/Catalogue/sg.png" file_size="178" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="19b8c8ec533ba37e9d9d0cbab1218b0b" inode="2672570" device="2304" mtime="941540160" flags="0" name="/usr/share/texmf/doc/help/Catalogue/tar.png" file_size="224" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="dbee667bdd689d91187cf12942c05569" inode="2672603" device="2304" mtime="941540160" flags="0" name="/usr/share/texmf/doc/help/Catalogue/tetex.png" file_size="211" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="cc68da0c3a5c6ad6520963a9aa787e5c" inode="2670231" device="2304" mtime="941540220" flags="0" name="/usr/share/texmf/doc/help/Catalogue/texlive.png" file_size="246" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="cb8ebfcc95edd7a3ecda591de12afa52" inode="2672572" device="2304" mtime="941540220" flags="0" name="/usr/share/texmf/doc/help/Catalogue/title.png" file_size="599" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="3772fa536734110f989dfd377a87ce81" inode="2672592" device="2304" mtime="941540220" flags="0" name="/usr/share/texmf/doc/help/Catalogue/us.png" file_size="215" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="7a3c9c21dfa7c2acca925a8690a7662c" inode="2672598" device="2304" mtime="941540220" flags="0" name="/usr/share/texmf/doc/help/Catalogue/za.png" file_size="262" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="2f34420bd8585a6b9be7a308ce7468af" inode="3718327" device="2304" mtime="790576960" flags="0" name="/usr/share/texmf/doc/help/csname.txt" file_size="42533" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="" inode="2670223" device="2304" mtime="936380462" flags="0" name="/usr/share/texmf/doc/help/ctan" file_size="4096" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="16877" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="9537294cd56754dda454225dc40565f3" inode="2670225" device="2304" mtime="933591840" flags="0" name="/usr/share/texmf/doc/help/ctan/CTAN.sites" file_size="5083" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="e386902e47e02f24bb18f39a634e73b7" inode="2670226" device="2304" mtime="911572620" flags="0" name="/usr/share/texmf/doc/help/ctan/companion.ctan" file_size="7979" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="41b8a37b8c2d9fd788308ce0ef6989b4" inode="2670224" device="2304" mtime="853115935" flags="0" name="/usr/share/texmf/doc/help/ctan/index.html" file_size="239" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="" inode="3718300" device="2304" mtime="909981367" flags="0" name="/usr/share/texmf/doc/help/faq" file_size="4096" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="16877" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="" inode="2555187" device="2304" mtime="899693121" flags="0" name="/usr/share/texmf/doc/help/faq/LaTeX-FAQ-francaise" file_size="4096" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="16877" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="77b3aa24bd61b2777974a5c475bc2074" inode="2555191" device="2304" mtime="899692998" flags="0" name="/usr/share/texmf/doc/help/faq/LaTeX-FAQ-francaise/FAQ.dvi" file_size="37028" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="77c5eea4988a97fcb65b4d353a4756e1" inode="2555188" device="2304" mtime="888592560" flags="0" name="/usr/share/texmf/doc/help/faq/LaTeX-FAQ-francaise/part1" file_size="187595" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="ff63840db1d74a9180a60ce258f7d4c1" inode="2555189" device="2304" mtime="888592560" flags="0" name="/usr/share/texmf/doc/help/faq/LaTeX-FAQ-francaise/part2" file_size="153974" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="529173ecbff9c4a327caa3e6dc6c385d" inode="2555190" device="2304" mtime="888592680" flags="0" name="/usr/share/texmf/doc/help/faq/LaTeX-FAQ-francaise/part3" file_size="168272" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="11f6d935b767f86715e673e6b270dc9b" inode="3718325" device="2304" mtime="823843800" flags="0" name="/usr/share/texmf/doc/help/faq/TeX-FAQ" file_size="67410" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="64bf0fc4988c5f5b6be41dfc382d3b2c" inode="3718324" device="2304" mtime="915732303" flags="0" name="/usr/share/texmf/doc/help/faq/UserGroups.html" file_size="12779" groupname="root" linkto="" rdev="11031" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="7845b0d9f773cd08c7a7208587589dd1" inode="3718326" device="2304" mtime="915731291" flags="0" name="/usr/share/texmf/doc/help/faq/dante-faq.html" file_size="5086" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="" inode="2553328" device="2304" mtime="949261432" flags="0" name="/usr/share/texmf/doc/help/faq/de-tex-faq" file_size="4096" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="16877" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="38b2bcd54978c8eec34f1c77fc01a543" inode="2554778" device="2304" mtime="948253980" flags="0" name="/usr/share/texmf/doc/help/faq/de-tex-faq/part1" file_size="30307" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="b0b770b7fb8b022b51d9c2a83cc9dce6" inode="2555185" device="2304" mtime="948253980" flags="0" name="/usr/share/texmf/doc/help/faq/de-tex-faq/part10" file_size="26469" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="6ffd17a70080d138397f919e87b1377f" inode="2555186" device="2304" mtime="948253980" flags="0" name="/usr/share/texmf/doc/help/faq/de-tex-faq/part11" file_size="25060" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="ad36c18d3fe351e6db3e841c658097c4" inode="2555177" device="2304" mtime="948253980" flags="0" name="/usr/share/texmf/doc/help/faq/de-tex-faq/part2" file_size="26236" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="ad47128e4eeaf9641f956929ca774220" inode="2555178" device="2304" mtime="948253980" flags="0" name="/usr/share/texmf/doc/help/faq/de-tex-faq/part3" file_size="33449" groupname="root" linkto="" rdev="19214" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="e28fa659c335573cfb38cd220932076f" inode="2555179" device="2304" mtime="948253980" flags="0" name="/usr/share/texmf/doc/help/faq/de-tex-faq/part4" file_size="29935" groupname="root" linkto="" rdev="1030" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="4cf6dffee6f421d5bc477a3766f2ae22" inode="2555180" device="2304" mtime="948253980" flags="0" name="/usr/share/texmf/doc/help/faq/de-tex-faq/part5" file_size="33493" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="4c222658f261bb49f28fa785cca8034e" inode="2555181" device="2304" mtime="948253980" flags="0" name="/usr/share/texmf/doc/help/faq/de-tex-faq/part6" file_size="35245" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="aa86a7748f161b0d608d04f99f9a698b" inode="2555182" device="2304" mtime="948253980" flags="0" name="/usr/share/texmf/doc/help/faq/de-tex-faq/part7" file_size="28074" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="ba80983fe9b89206d61032281dbefe3d" inode="2555183" device="2304" mtime="948253980" flags="0" name="/usr/share/texmf/doc/help/faq/de-tex-faq/part8" file_size="36920" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="6472292d904b668472bc15d748e3eb75" inode="2555184" device="2304" mtime="948253980" flags="0" name="/usr/share/texmf/doc/help/faq/de-tex-faq/part9" file_size="26264" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="bdff8e248b4b37fbfa25e5e6b585af09" inode="3718323" device="2304" mtime="909980951" flags="0" name="/usr/share/texmf/doc/help/faq/index.html" file_size="584" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="" inode="3718301" device="2304" mtime="1031330502" flags="0" name="/usr/share/texmf/doc/help/faq/uktug-faq" file_size="4096" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="16877" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="" inode="3718313" device="2304" mtime="1031330502" flags="0" name="/usr/share/texmf/doc/help/faq/uktug-faq/index.html" file_size="15" groupname="root" linkto="texfaq_toc.html" rdev="0" verifyflags="-1" file_mode="-24065" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="a52c4fc05fd74b96a5449bf79f87153a" inode="3718302" device="2304" mtime="945959604" flags="0" name="/usr/share/texmf/doc/help/faq/uktug-faq/texfaq_0.html" file_size="3740" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="367bfad90e12ccf4ec76ec3b87a00bda" inode="3718303" device="2304" mtime="945959604" flags="0" name="/usr/share/texmf/doc/help/faq/uktug-faq/texfaq_1.html" file_size="23340" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="be8576d11f20d56a1a4e0a89c593bae3" inode="3718314" device="2304" mtime="945959604" flags="0" name="/usr/share/texmf/doc/help/faq/uktug-faq/texfaq_10.html" file_size="8864" groupname="root" linkto="" rdev="-24307" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="0f396f30b5026acb0774580c0d0b4f09" inode="3718315" device="2304" mtime="945959604" flags="0" name="/usr/share/texmf/doc/help/faq/uktug-faq/texfaq_11.html" file_size="19753" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="0f5b200513e476d39a9eff1249695e05" inode="3718316" device="2304" mtime="945959604" flags="0" name="/usr/share/texmf/doc/help/faq/uktug-faq/texfaq_12.html" file_size="22143" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="9a7bb36c9f76c5f943aa9ef957095373" inode="3718317" device="2304" mtime="945959604" flags="0" name="/usr/share/texmf/doc/help/faq/uktug-faq/texfaq_13.html" file_size="23882" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="d68d8df80fe359ebfbd70a8815a3e1e7" inode="3718318" device="2304" mtime="945959604" flags="0" name="/usr/share/texmf/doc/help/faq/uktug-faq/texfaq_14.html" file_size="3960" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="1d71d6d7749e3e0614c8b080c2bedfcd" inode="3718319" device="2304" mtime="945959604" flags="0" name="/usr/share/texmf/doc/help/faq/uktug-faq/texfaq_15.html" file_size="19965" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="2a5b2723cf22b385e7184a5d14671081" inode="3718320" device="2304" mtime="945959604" flags="0" name="/usr/share/texmf/doc/help/faq/uktug-faq/texfaq_16.html" file_size="12461" groupname="root" linkto="" rdev="650" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="9972d7b1b54e3d2e6a408d63160be4ec" inode="3718321" device="2304" mtime="945959604" flags="0" name="/usr/share/texmf/doc/help/faq/uktug-faq/texfaq_17.html" file_size="7067" groupname="root" linkto="" rdev="649" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="dfe26b69e37b9e60b758627207bfe8d8" inode="3718322" device="2304" mtime="945959604" flags="0" name="/usr/share/texmf/doc/help/faq/uktug-faq/texfaq_18.html" file_size="3280" groupname="root" linkto="" rdev="792" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="df865afa78a00a581d38c4837c383db9" inode="3718304" device="2304" mtime="945959604" flags="0" name="/usr/share/texmf/doc/help/faq/uktug-faq/texfaq_2.html" file_size="16640" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="4613d0a09a10e29dd5fc6081808e98c1" inode="3718305" device="2304" mtime="945959604" flags="0" name="/usr/share/texmf/doc/help/faq/uktug-faq/texfaq_3.html" file_size="11312" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="620331af968e45310720c0631484970c" inode="3718306" device="2304" mtime="945959604" flags="0" name="/usr/share/texmf/doc/help/faq/uktug-faq/texfaq_4.html" file_size="8457" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="c31c283b482d31f2fdf6dc798a482c1e" inode="3718307" device="2304" mtime="945959604" flags="0" name="/usr/share/texmf/doc/help/faq/uktug-faq/texfaq_5.html" file_size="19193" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="757edba3fa78c2aaefa687ab36a7c932" inode="3718308" device="2304" mtime="945959604" flags="0" name="/usr/share/texmf/doc/help/faq/uktug-faq/texfaq_6.html" file_size="5632" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="ac5bfb7cf9975c500ab6f82a6eb576a6" inode="3718309" device="2304" mtime="945959604" flags="0" name="/usr/share/texmf/doc/help/faq/uktug-faq/texfaq_7.html" file_size="4843" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="c8c2e69eab7a1636580f09d90509fb9f" inode="3718310" device="2304" mtime="945959604" flags="0" name="/usr/share/texmf/doc/help/faq/uktug-faq/texfaq_8.html" file_size="3475" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="543c2abeaf97dc665dddeb55d1a30d27" inode="3718311" device="2304" mtime="945959604" flags="0" name="/usr/share/texmf/doc/help/faq/uktug-faq/texfaq_9.html" file_size="17231" groupname="root" linkto="" rdev="8464" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="62c5ef387420bf899f45ff2dacf14fca" inode="3718312" device="2304" mtime="945959604" flags="0" name="/usr/share/texmf/doc/help/faq/uktug-faq/texfaq_toc.html" file_size="11074" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="a1c9fc9930b45a782d16135bfd559f5f" inode="3718329" device="2304" mtime="885870067" flags="0" name="/usr/share/texmf/doc/help/tds.dvi" file_size="82768" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="24d68e887cda056bdd054e4d1ef4a650" inode="3718328" device="2304" mtime="885174764" flags="0" name="/usr/share/texmf/doc/help/unixtex.ftp" file_size="9720" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="1376faa008be5ad395090f0847fc3618" inode="2982483" device="2304" mtime="830719347" flags="0" name="/usr/share/texmf/doc/helpfile" file_size="4313" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="6a7f0c36d41ef5c891ba2c4eb1a31d33" inode="2982477" device="2304" mtime="949409163" flags="0" name="/usr/share/texmf/doc/helpindex.html" file_size="23871" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="" inode="1231522" device="2304" mtime="870030848" flags="0" name="/usr/share/texmf/doc/images" file_size="4096" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="16877" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="5ee858736dde8d8c4ff6dc8adb0561f4" inode="1231525" device="2304" mtime="868391220" flags="0" name="/usr/share/texmf/doc/images/missing-arrow.gif" file_size="166" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="348175d457647bcdca2146bc99850595" inode="1231524" device="2304" mtime="868391220" flags="0" name="/usr/share/texmf/doc/images/next-arrow.gif" file_size="275" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="3432e207160fb7f3ae54a1e38eabcfa3" inode="1231532" device="2304" mtime="868391220" flags="0" name="/usr/share/texmf/doc/images/prev-arrow.gif" file_size="279" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="9dd5e7609c89e6d5fc44adaf071eb113" inode="1231523" device="2304" mtime="868391220" flags="0" name="/usr/share/texmf/doc/images/up-arrow.gif" file_size="264" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="" inode="2982478" device="2304" mtime="1031330502" flags="0" name="/usr/share/texmf/doc/index.html" file_size="17" groupname="root" linkto="newhelpindex.html" rdev="0" verifyflags="-1" file_mode="-24065" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="" inode="1231549" device="2304" mtime="989511066" flags="0" name="/usr/share/texmf/doc/jbibtex" file_size="4096" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="16877" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="" inode="1231550" device="2304" mtime="989511066" flags="0" name="/usr/share/texmf/doc/jbibtex/doc-ascii" file_size="4096" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="16877" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="81f89136e72c1d6e51934f46e8ba53d8" inode="1231551" device="2304" mtime="972571323" flags="0" name="/usr/share/texmf/doc/jbibtex/doc-ascii/Makefile" file_size="193" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="0b5b63cae83f930661302152ee8c302f" inode="1231552" device="2304" mtime="972571323" flags="0" name="/usr/share/texmf/doc/jbibtex/doc-ascii/README" file_size="2312" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="5c54d917e875a0be3fa3860ca65ec1de" inode="1231553" device="2304" mtime="972571324" flags="0" name="/usr/share/texmf/doc/jbibtex/doc-ascii/README.1st" file_size="263" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="11559e412d7a3a9f544e3b70e4f0192a" inode="1231554" device="2304" mtime="972571323" flags="0" name="/usr/share/texmf/doc/jbibtex/doc-ascii/cpp.awk" file_size="3110" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="00365ec4a7b641de8cfc6ba0bb65d279" inode="1231555" device="2304" mtime="972571323" flags="0" name="/usr/share/texmf/doc/jbibtex/doc-ascii/generate.sh" file_size="1009" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="656c117e0f13832c4e83ccc2cf0bf098" inode="1231556" device="2304" mtime="972571323" flags="0" name="/usr/share/texmf/doc/jbibtex/doc-ascii/jbibtex.bib" file_size="1090" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="0ffba9ae1b9d89ea4221702a534e5e81" inode="1231557" device="2304" mtime="972571323" flags="0" name="/usr/share/texmf/doc/jbibtex/doc-ascii/jbibtex.tex" file_size="28724" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="40d386d794f6c83f91737b3861f274e4" inode="1231558" device="2304" mtime="972571324" flags="0" name="/usr/share/texmf/doc/jbibtex/doc-ascii/jbtxbst.doc" file_size="101714" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="0e14933a58714c6b9eaa683716bcf1ee" inode="1231559" device="2304" mtime="972571324" flags="0" name="/usr/share/texmf/doc/jbibtex/doc-ascii/jbtxdoc.bib" file_size="3502" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="60097f780cf256e8d2a2d92e442bb148" inode="1231560" device="2304" mtime="972571324" flags="0" name="/usr/share/texmf/doc/jbibtex/doc-ascii/jbtxdoc.tex" file_size="47450" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="7f1ae8c308df608de79fffbcbba5e50f" inode="1231561" device="2304" mtime="972571324" flags="0" name="/usr/share/texmf/doc/jbibtex/doc-ascii/jbtxhak.tex" file_size="33679" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="" inode="2702581" device="2304" mtime="984325615" flags="0" name="/usr/share/texmf/doc/latex" file_size="4096" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="16877" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="" inode="544527" device="2304" mtime="921116080" flags="0" name="/usr/share/texmf/doc/latex/acronym" file_size="4096" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="16877" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="10f7cd8988e962c67c8297aae3a68fbb" inode="544530" device="2304" mtime="921115918" flags="0" name="/usr/share/texmf/doc/latex/acronym/acronym.dvi" file_size="8736" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="8f8e5decbd61b9ff201a072e609d10ea" inode="544529" device="2304" mtime="921115904" flags="0" name="/usr/share/texmf/doc/latex/acronym/acrotest.tex" file_size="1570" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="b1485033a81bbe5d1896c03f125854bc" inode="544528" device="2304" mtime="839991600" flags="0" name="/usr/share/texmf/doc/latex/acronym/readme" file_size="702" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="" inode="3914533" device="2304" mtime="984183741" flags="0" name="/usr/share/texmf/doc/latex/amscls" file_size="4096" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="16877" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="42062206f43bc032baeda65a72bb69a4" inode="3914535" device="2304" mtime="958568580" flags="0" name="/usr/share/texmf/doc/latex/amscls/amsclass.faq" file_size="9463" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="2b81165a0970e91b806db28309f0077a" inode="3914540" device="2304" mtime="984183148" flags="0" name="/usr/share/texmf/doc/latex/amscls/amsthdoc.dvi" file_size="12212" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="24eb09646f5b3b44d49c8ad06665ed12" inode="3914534" device="2304" mtime="944242680" flags="0" name="/usr/share/texmf/doc/latex/amscls/diffs-c.txt" file_size="8362" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="178bcb5124951345f41b6d7957f565ea" inode="3914538" device="2304" mtime="984183157" flags="0" name="/usr/share/texmf/doc/latex/amscls/instr-l.dvi" file_size="65164" groupname="root" linkto="" rdev="1968" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="68a86b39e46a877cd3d352c46070f3cf" inode="3914539" device="2304" mtime="984183163" flags="0" name="/usr/share/texmf/doc/latex/amscls/thmtest.dvi" file_size="5772" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="" inode="627777" device="2304" mtime="984183830" flags="0" name="/usr/share/texmf/doc/latex/amsmath" file_size="4096" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="16877" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="2588e14b27e2378dc87db0ceeec72e9b" inode="627780" device="2304" mtime="984181007" flags="0" name="/usr/share/texmf/doc/latex/amsmath/amsldoc.dvi" file_size="121776" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="5d9110681c75c47038bde09e9ebe8a8e" inode="627782" device="2304" mtime="970588260" flags="0" name="/usr/share/texmf/doc/latex/amsmath/amsmath.faq" file_size="12512" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="c29393c6e9d3045e84f6d0c205a233f5" inode="627778" device="2304" mtime="945285060" flags="0" name="/usr/share/texmf/doc/latex/amsmath/diffs-m.txt" file_size="22654" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="6455d3ace9d626931da571e1404ba549" inode="627781" device="2304" mtime="984181014" flags="0" name="/usr/share/texmf/doc/latex/amsmath/subeqn.dvi" file_size="4928" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="94616cb76f1e6841e07b9ad3f0288fe2" inode="627783" device="2304" mtime="984181026" flags="0" name="/usr/share/texmf/doc/latex/amsmath/technote.dvi" file_size="13592" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="3aa87d061ea1304c0e3724493a44730e" inode="627779" device="2304" mtime="984181035" flags="0" name="/usr/share/texmf/doc/latex/amsmath/testmath.dvi" file_size="124428" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="" inode="2702601" device="2304" mtime="984183879" flags="0" name="/usr/share/texmf/doc/latex/base" file_size="4096" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="16877" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="a74e5c1b7c09783ee61d67f441698d90" inode="2703068" device="2304" mtime="959824800" flags="0" name="/usr/share/texmf/doc/latex/base/00readme.txt" file_size="4038" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="650b78b362aa05451f8a8e9b1e9fd7f8" inode="2704485" device="2304" mtime="838915901" flags="0" name="/usr/share/texmf/doc/latex/base/README.tetex" file_size="248" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="a2ef2e6de87e98b85382e7c274acc90c" inode="2703074" device="2304" mtime="945921600" flags="0" name="/usr/share/texmf/doc/latex/base/begleit.err" file_size="90159" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="acb9589d93e5265b1b4a654e26f647ba" inode="2704486" device="2304" mtime="945921600" flags="0" name="/usr/share/texmf/doc/latex/base/bugs.txt" file_size="5550" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="686c7d537d311cd8772f52757fc1f50b" inode="2704491" device="2304" mtime="984176096" flags="0" name="/usr/share/texmf/doc/latex/base/cfgguide.dvi" file_size="34108" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="8d0452dcfb351b0bd506e5c68acf2503" inode="2704493" device="2304" mtime="967600800" flags="0" name="/usr/share/texmf/doc/latex/base/changes.txt" file_size="244073" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="fa720682bd665ca4594e0a7fd32c805f" inode="2703067" device="2304" mtime="984176098" flags="0" name="/usr/share/texmf/doc/latex/base/clsguide.dvi" file_size="106320" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="dbb917be54fd803ef0906f74cac6cce3" inode="2703064" device="2304" mtime="963433860" flags="0" name="/usr/share/texmf/doc/latex/base/compan.err" file_size="106078" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="d776c130dd2a026ddc4c42e8473739a1" inode="2703075" device="2304" mtime="984176125" flags="0" name="/usr/share/texmf/doc/latex/base/cyrguide.dvi" file_size="24496" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="6e7eb16ad449843bffce49bbb7b1598f" inode="2703062" device="2304" mtime="984176117" flags="0" name="/usr/share/texmf/doc/latex/base/doc.dvi" file_size="267492" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="04d5cf18fca7cc1cd08af6a94b14551c" inode="2703066" device="2304" mtime="984176122" flags="0" name="/usr/share/texmf/doc/latex/base/docstrip.dvi" file_size="220648" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="cf498e1c0a5f1d797086b999202c1ab3" inode="2703073" device="2304" mtime="984176100" flags="0" name="/usr/share/texmf/doc/latex/base/fntguide.dvi" file_size="100084" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="a8b3a5dba4e4aa90402935be30b0c08a" inode="2704489" device="2304" mtime="984176123" flags="0" name="/usr/share/texmf/doc/latex/base/ifthen.dvi" file_size="17660" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="9d565e7f154b996125a1e0b8d141545c" inode="2704487" device="2304" mtime="984176124" flags="0" name="/usr/share/texmf/doc/latex/base/inputenc.dvi" file_size="97988" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="7eb05994954eaad70956fbb8486fb4bd" inode="2703065" device="2304" mtime="965082660" flags="0" name="/usr/share/texmf/doc/latex/base/legal.txt" file_size="1098" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="16a75b98555f4be4a216731dfb18a90e" inode="2704490" device="2304" mtime="945921600" flags="0" name="/usr/share/texmf/doc/latex/base/lppl-1-1.txt" file_size="14356" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="5af7e4b8e7dde262cf18bd7224f454b5" inode="2702604" device="2304" mtime="945921600" flags="0" name="/usr/share/texmf/doc/latex/base/lppl.txt" file_size="14439" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="59baaacae1e97eb0ecc9adbd4732c3cc" inode="2704471" device="2304" mtime="984176101" flags="0" name="/usr/share/texmf/doc/latex/base/ltnews01.dvi" file_size="8112" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="0e54f66b7ea20d270fec260e8c546fd6" inode="2704472" device="2304" mtime="984176101" flags="0" name="/usr/share/texmf/doc/latex/base/ltnews02.dvi" file_size="7396" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="f75396d870656a8c0207e42fa7e2ad6d" inode="2704473" device="2304" mtime="984176102" flags="0" name="/usr/share/texmf/doc/latex/base/ltnews03.dvi" file_size="7212" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="4c3ef093b8a9b9fb14ebb672f7e26524" inode="2704474" device="2304" mtime="984176102" flags="0" name="/usr/share/texmf/doc/latex/base/ltnews04.dvi" file_size="6944" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="18274ff58cebd7aaa026e196ef2a78b9" inode="2704475" device="2304" mtime="984176103" flags="0" name="/usr/share/texmf/doc/latex/base/ltnews05.dvi" file_size="6956" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="433799affc1ff1916267c620c196281c" inode="2704476" device="2304" mtime="984176103" flags="0" name="/usr/share/texmf/doc/latex/base/ltnews06.dvi" file_size="6636" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="28a5f2384ce8033e33aa2e36cef51533" inode="2704477" device="2304" mtime="984176105" flags="0" name="/usr/share/texmf/doc/latex/base/ltnews07.dvi" file_size="6488" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="46830bac5eb035a095c52a43af2216b8" inode="2704478" device="2304" mtime="984176106" flags="0" name="/usr/share/texmf/doc/latex/base/ltnews08.dvi" file_size="6776" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="bd174c275f34cc14c042d31769dfc840" inode="2704479" device="2304" mtime="984176106" flags="0" name="/usr/share/texmf/doc/latex/base/ltnews09.dvi" file_size="6592" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="6724a687edc7732e20e6448c0d16d8cf" inode="2704480" device="2304" mtime="984176107" flags="0" name="/usr/share/texmf/doc/latex/base/ltnews10.dvi" file_size="7176" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="d46ee1cefb162607f0cb7615eaf7a671" inode="2704481" device="2304" mtime="984176107" flags="0" name="/usr/share/texmf/doc/latex/base/ltnews11.dvi" file_size="6860" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="366c008bd0fbe13df467de3630cfbe17" inode="2704482" device="2304" mtime="984176108" flags="0" name="/usr/share/texmf/doc/latex/base/ltnews12.dvi" file_size="6156" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="f78cdb50e4fe4a2e01a8ffcf7fb65e18" inode="2704494" device="2304" mtime="984176104" flags="0" name="/usr/share/texmf/doc/latex/base/ltx3info.dvi" file_size="23628" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="c158fa9d543ec6276f200af1d7970008" inode="2704488" device="2304" mtime="965080260" flags="0" name="/usr/share/texmf/doc/latex/base/manifest.txt" file_size="12529" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="a760cfe695740bf001051b47e4b7a22e" inode="2703058" device="2304" mtime="945921600" flags="0" name="/usr/share/texmf/doc/latex/base/manual.err" file_size="10569" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="41dfee9b07f5e01ddee4c8a7df46765d" inode="2704492" device="2304" mtime="984176105" flags="0" name="/usr/share/texmf/doc/latex/base/modguide.dvi" file_size="21020" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="9a29255d11136ecae721232e4ccc3d1b" inode="2703061" device="2304" mtime="959824800" flags="0" name="/usr/share/texmf/doc/latex/base/patches.txt" file_size="1877" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="1ec9eef2700a2f3ed1683d3a57aadb0f" inode="2704484" device="2304" mtime="984175993" flags="0" name="/usr/share/texmf/doc/latex/base/usrguide.dvi" file_size="116364" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="02247c019cffbdea4d5f3ff4d4dc2fa8" inode="2703060" device="2304" mtime="945921600" flags="0" name="/usr/share/texmf/doc/latex/base/webcomp.err" file_size="7750" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="" inode="971079" device="2304" mtime="868813113" flags="0" name="/usr/share/texmf/doc/latex/booktabs" file_size="4096" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="16877" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="4aca831c209d89d252fe8f52a85d642e" inode="971081" device="2304" mtime="868813099" flags="0" name="/usr/share/texmf/doc/latex/booktabs/booktabs.dvi" file_size="34376" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="b5a16f7902060464ecc5e1d294f0f726" inode="971080" device="2304" mtime="815752080" flags="0" name="/usr/share/texmf/doc/latex/booktabs/booktabs.readme" file_size="479" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="" inode="544500" device="2304" mtime="924215592" flags="0" name="/usr/share/texmf/doc/latex/carlisle" file_size="4096" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="16877" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="d49260d14bfe9923d2a94c199b9deb2f" inode="544505" device="2304" mtime="924215437" flags="0" name="/usr/share/texmf/doc/latex/carlisle/colortbl.ps" file_size="305170" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="329c19514fa6c848844aa1164db70a15" inode="544502" device="2304" mtime="924215440" flags="0" name="/usr/share/texmf/doc/latex/carlisle/fix2col.dvi" file_size="23920" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="3db62772e01e225f722bad4e0c210106" inode="544506" device="2304" mtime="924215432" flags="0" name="/usr/share/texmf/doc/latex/carlisle/ltxtable.dvi" file_size="4116" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="ff87880701c117d0a7886ddefd5b483e" inode="544503" device="2304" mtime="906689306" flags="0" name="/usr/share/texmf/doc/latex/carlisle/plain.txt" file_size="1630" groupname="root" linkto="" rdev="16806" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="848af635c1e8f98fe59d2f904e04248e" inode="544501" device="2304" mtime="924215480" flags="0" name="/usr/share/texmf/doc/latex/carlisle/pspicture.dvi" file_size="23492" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="06aa84a4ecd5cc63538c6353d007277e" inode="544504" device="2304" mtime="924215430" flags="0" name="/usr/share/texmf/doc/latex/carlisle/typehtml.dvi" file_size="74256" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="" inode="544512" device="2304" mtime="949171178" flags="0" name="/usr/share/texmf/doc/latex/ccaption" file_size="4096" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="16877" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="8d9f833cda4d07f9f5615f1227513acf" inode="544513" device="2304" mtime="938453640" flags="0" name="/usr/share/texmf/doc/latex/ccaption/README" file_size="1008" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="8a67c010e53695e90fb418d5aad4492e" inode="544514" device="2304" mtime="949171106" flags="0" name="/usr/share/texmf/doc/latex/ccaption/ccaption.dvi" file_size="68096" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="" inode="856709" device="2304" mtime="949318054" flags="0" name="/usr/share/texmf/doc/latex/ccfonts" file_size="4096" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="16877" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="767f926f3c0676b943d29bb080cff6f7" inode="856710" device="2304" mtime="949318051" flags="0" name="/usr/share/texmf/doc/latex/ccfonts/ccfonts.dvi" file_size="12028" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="ab90ee3b65a615160b55814f76dbf7a9" inode="856712" device="2304" mtime="931359856" flags="0" name="/usr/share/texmf/doc/latex/ccfonts/liesmich" file_size="1066" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="4992837940e1e810e0161ca232527a95" inode="856711" device="2304" mtime="943285500" flags="0" name="/usr/share/texmf/doc/latex/ccfonts/readme" file_size="4555" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="" inode="544433" device="2304" mtime="934160034" flags="0" name="/usr/share/texmf/doc/latex/changebar" file_size="4096" groupname="root" linkto="" rdev="-23033" verifyflags="-1" file_mode="16877" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="c96b0b5c5f5b8ab5b0574521431947be" inode="544434" device="2304" mtime="888414300" flags="0" name="/usr/share/texmf/doc/latex/changebar/catalog.txt" file_size="353" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="937c480412abb87d14a6a13fa7f58436" inode="544436" device="2304" mtime="929849880" flags="0" name="/usr/share/texmf/doc/latex/changebar/changebar.bug" file_size="6997" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="cc3e2781afc0f51b915599a308c5de44" inode="544437" device="2304" mtime="934160028" flags="0" name="/usr/share/texmf/doc/latex/changebar/changebar.dvi" file_size="71504" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="9408f278f8cce0ff4a3e16850cd4544c" inode="544435" device="2304" mtime="909747916" flags="0" name="/usr/share/texmf/doc/latex/changebar/chbar.sh" file_size="5783" groupname="root" linkto="" rdev="3391" verifyflags="-1" file_mode="-32275" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="" inode="3701956" device="2304" mtime="927923914" flags="0" name="/usr/share/texmf/doc/latex/custom-bib" file_size="4096" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="16877" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="04bd60b2efff5efce786a1e183958d57" inode="3701959" device="2304" mtime="927284760" flags="0" name="/usr/share/texmf/doc/latex/custom-bib/README.389" file_size="21367" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="870102087051d4144fc6437d21c11b6c" inode="3701960" device="2304" mtime="927923813" flags="0" name="/usr/share/texmf/doc/latex/custom-bib/geophys.tex" file_size="13925" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="2cf5ee6f40e3930225300b2331a2edb2" inode="3701958" device="2304" mtime="927923869" flags="0" name="/usr/share/texmf/doc/latex/custom-bib/makebst.dvi" file_size="40068" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="d211291d0dce47ffcc61a89c1a10c98a" inode="3701957" device="2304" mtime="927923813" flags="0" name="/usr/share/texmf/doc/latex/custom-bib/shorthnd.tex" file_size="17675" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="" inode="1085632" device="2304" mtime="984183899" flags="0" name="/usr/share/texmf/doc/latex/cyrillic" file_size="4096" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="16877" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="eef38eff3fe50a5d0d992a225cc283e4" inode="1085634" device="2304" mtime="959824800" flags="0" name="/usr/share/texmf/doc/latex/cyrillic/00readme.txt" file_size="2140" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="5937acd714f5d018ca5a623746d1bbd8" inode="1085639" device="2304" mtime="957405540" flags="0" name="/usr/share/texmf/doc/latex/cyrillic/changes.txt" file_size="3732" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="f7723a63d72215e2b37da55692b717f5" inode="1085637" device="2304" mtime="984178782" flags="0" name="/usr/share/texmf/doc/latex/cyrillic/cyinpenc.dvi" file_size="90844" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="3d6f79917f98071255f5473ae4ed7df8" inode="1085635" device="2304" mtime="984178783" flags="0" name="/usr/share/texmf/doc/latex/cyrillic/cyoutenc.dvi" file_size="33672" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="f2397d67729b84d52d3e9d3deb4ede5f" inode="1085633" device="2304" mtime="984178784" flags="0" name="/usr/share/texmf/doc/latex/cyrillic/lcy.dvi" file_size="16940" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="510310061b593c4c4ef86f3544b650e7" inode="1085636" device="2304" mtime="945921600" flags="0" name="/usr/share/texmf/doc/latex/cyrillic/manifest.txt" file_size="1021" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="8a76a2b1a47a4f332617acd4bd63d054" inode="1085638" device="2304" mtime="984178784" flags="0" name="/usr/share/texmf/doc/latex/cyrillic/ot2.dvi" file_size="8972" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="" inode="513307" device="2304" mtime="949173603" flags="0" name="/usr/share/texmf/doc/latex/dinbrief" file_size="4096" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="16877" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="58eca20a7a1ff733dd790604f76329c2" inode="513318" device="2304" mtime="949173565" flags="0" name="/usr/share/texmf/doc/latex/dinbrief/brfbody.tex" file_size="6880" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="2b2abe984c96604f2886526f911c4942" inode="513308" device="2304" mtime="949173565" flags="0" name="/usr/share/texmf/doc/latex/dinbrief/brfkopf.tex" file_size="3601" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="e451fc0dd0253a51c00a9eddb438e77a" inode="513310" device="2304" mtime="949173565" flags="0" name="/usr/share/texmf/doc/latex/dinbrief/dbold.tex" file_size="7288" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="3a966f500ed684b15493ba17bfbbe793" inode="513311" device="2304" mtime="949173565" flags="0" name="/usr/share/texmf/doc/latex/dinbrief/dinbrief.cfg" file_size="1570" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="4cedb94f2f6ae5f3a45fb233c8efae69" inode="513312" device="2304" mtime="949173570" flags="0" name="/usr/share/texmf/doc/latex/dinbrief/dinbrief.dvi" file_size="66004" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="dfcc7110396d402c64a5b85bbc74a8ab" inode="513309" device="2304" mtime="949173572" flags="0" name="/usr/share/texmf/doc/latex/dinbrief/dintab.dvi" file_size="4508" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="61365c681ba47c2e813bd80400f29822" inode="513313" device="2304" mtime="949173565" flags="0" name="/usr/share/texmf/doc/latex/dinbrief/example.tex" file_size="5740" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="3074d50ba94aa7bda5b7284a713541d6" inode="513320" device="2304" mtime="948392400" flags="0" name="/usr/share/texmf/doc/latex/dinbrief/liesmich" file_size="4499" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="ac037399b188b54d4954486a2f711dd3" inode="513317" device="2304" mtime="948392400" flags="0" name="/usr/share/texmf/doc/latex/dinbrief/readme" file_size="8161" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="35bc7a6eb81548643495e1bf806de3d5" inode="513314" device="2304" mtime="949173565" flags="0" name="/usr/share/texmf/doc/latex/dinbrief/test10.tex" file_size="3421" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="a0d8cb46c85a639de2e935cd3b70b25f" inode="513315" device="2304" mtime="949173565" flags="0" name="/usr/share/texmf/doc/latex/dinbrief/test11.tex" file_size="3426" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="fa12b99972d3d8762337824decd91507" inode="513316" device="2304" mtime="949173565" flags="0" name="/usr/share/texmf/doc/latex/dinbrief/test12.tex" file_size="3426" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="768e3b3211537393c98d6bd3c54d8570" inode="513319" device="2304" mtime="949173565" flags="0" name="/usr/share/texmf/doc/latex/dinbrief/testnorm.tex" file_size="3430" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="" inode="709535" device="2304" mtime="920935433" flags="0" name="/usr/share/texmf/doc/latex/draftcopy" file_size="4096" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="16877" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="8352b70bf0dd99a83aeccbbde25a7719" inode="709536" device="2304" mtime="920408878" flags="0" name="/usr/share/texmf/doc/latex/draftcopy/README" file_size="880" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="65432a0767b8d30c04a45b2e75de0730" inode="709537" device="2304" mtime="920439132" flags="0" name="/usr/share/texmf/doc/latex/draftcopy/draftcopy-test-1.tex" file_size="1045" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="57fdbc7b8bcd26d40038404953c0c4ac" inode="709538" device="2304" mtime="920439132" flags="0" name="/usr/share/texmf/doc/latex/draftcopy/draftcopy-test-2.tex" file_size="1077" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="36328bcc79c3df217a5f48619c385ec6" inode="709539" device="2304" mtime="920439132" flags="0" name="/usr/share/texmf/doc/latex/draftcopy/draftcopy-test-3.tex" file_size="1090" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="2fc8ddd570857ed89ef099b64b615c0e" inode="709540" device="2304" mtime="920439132" flags="0" name="/usr/share/texmf/doc/latex/draftcopy/draftcopy-test-4.tex" file_size="1202" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="e4ae0ff5093785ffbfa3a771394417d5" inode="709541" device="2304" mtime="920439133" flags="0" name="/usr/share/texmf/doc/latex/draftcopy/draftcopy-test-5.tex" file_size="1080" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="91d88a19e2c5ae548442132088358d07" inode="709542" device="2304" mtime="920439133" flags="0" name="/usr/share/texmf/doc/latex/draftcopy/draftcopy-test-6.tex" file_size="1147" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="d26a651923db3c81a4f8fa953f2c39b8" inode="709543" device="2304" mtime="920439133" flags="0" name="/usr/share/texmf/doc/latex/draftcopy/draftcopy-test-7.tex" file_size="1271" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="b6b5ee58f9bcb12c28df2fc14227f05f" inode="709544" device="2304" mtime="920439133" flags="0" name="/usr/share/texmf/doc/latex/draftcopy/draftcopy-test-8.tex" file_size="1209" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="45257e5db47bc5e370d2bddd4ba4e0bf" inode="709545" device="2304" mtime="920439133" flags="0" name="/usr/share/texmf/doc/latex/draftcopy/draftcopy-test-9.tex" file_size="1374" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="653e1cd09101303641b205b7ebcabf8c" inode="709546" device="2304" mtime="920439970" flags="0" name="/usr/share/texmf/doc/latex/draftcopy/draftcopy.dvi" file_size="38692" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="" inode="3538436" device="2304" mtime="918961282" flags="0" name="/usr/share/texmf/doc/latex/eepic" file_size="4096" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="16877" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="a34c628c3e7cca52eac42dcbb20ef5bf" inode="3538442" device="2304" mtime="918961282" flags="0" name="/usr/share/texmf/doc/latex/eepic/eepic.dvi" file_size="73648" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="54a1facee676dfee68a1c97399e7ab15" inode="3538437" device="2304" mtime="665290800" flags="0" name="/usr/share/texmf/doc/latex/eepic/epic-eg3.fig" file_size="2118" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="6808f5f44580569f5f2d60540b448e42" inode="3538438" device="2304" mtime="665290800" flags="0" name="/usr/share/texmf/doc/latex/eepic/epic-eg3.tex" file_size="2732" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="d63d849daff18b40bb8b1bdb7f41376f" inode="3538439" device="2304" mtime="665290800" flags="0" name="/usr/share/texmf/doc/latex/eepic/epic-eg4.fig" file_size="2290" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="944bf581f0a03deab220657988377086" inode="3538440" device="2304" mtime="665290800" flags="0" name="/usr/share/texmf/doc/latex/eepic/epic-eg4.tex" file_size="2788" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="35d2a98f607fa301b6d8ed0717629a4c" inode="3538441" device="2304" mtime="726811200" flags="0" name="/usr/share/texmf/doc/latex/eepic/readme" file_size="4675" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="" inode="544418" device="2304" mtime="905100127" flags="0" name="/usr/share/texmf/doc/latex/fancyhdr" file_size="4096" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="16877" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="56128995d65a94a1a024f26babb8f4cb" inode="544419" device="2304" mtime="887575898" flags="0" name="/usr/share/texmf/doc/latex/fancyhdr/README" file_size="1230" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="2f1740b1f8e1c62cb3fb2d416dc71e10" inode="544420" device="2304" mtime="905100115" flags="0" name="/usr/share/texmf/doc/latex/fancyhdr/fancyhdr.dvi" file_size="94632" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="1bb288a180b1bc2bb6de3a989acba69c" inode="544421" device="2304" mtime="834525840" flags="0" name="/usr/share/texmf/doc/latex/fancyhdr/fancyheadings.new" file_size="125" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="" inode="544422" device="2304" mtime="928453059" flags="0" name="/usr/share/texmf/doc/latex/fancyvrb" file_size="4096" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="16877" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="099c19d36b5479ea3bd6bdb1303fb0d9" inode="544423" device="2304" mtime="928453055" flags="0" name="/usr/share/texmf/doc/latex/fancyvrb/fancyvrb.ps" file_size="432205" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="2e8abfb3ba0e756e9798084197f7fd6f" inode="544424" device="2304" mtime="928453058" flags="0" name="/usr/share/texmf/doc/latex/fancyvrb/fvrb-ex.dvi" file_size="27620" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="" inode="758597" device="2304" mtime="949314852" flags="0" name="/usr/share/texmf/doc/latex/floatflt" file_size="4096" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="16877" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="de590816e2f8ea49a908f155bf307c4e" inode="758600" device="2304" mtime="928453883" flags="0" name="/usr/share/texmf/doc/latex/floatflt/floatexm.dvi" file_size="22556" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="ddb28ff5d0b435ec4fd48168d270cf7d" inode="758601" device="2304" mtime="949314719" flags="0" name="/usr/share/texmf/doc/latex/floatflt/floatexm.tex" file_size="15072" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="2e0db4daa4659c367d5e001ffc945bee" inode="758598" device="2304" mtime="928453881" flags="0" name="/usr/share/texmf/doc/latex/floatflt/floatfge.dvi" file_size="13972" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="f079ad07fd527d778d0d8173ba8b5178" inode="758599" device="2304" mtime="949314800" flags="0" name="/usr/share/texmf/doc/latex/floatflt/floatflt.dvi" file_size="34784" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="" inode="544443" device="2304" mtime="949316132" flags="0" name="/usr/share/texmf/doc/latex/footmisc" file_size="4096" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="16877" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="ca6e2af41e60109ea399d3db2239e811" inode="544444" device="2304" mtime="885569673" flags="0" name="/usr/share/texmf/doc/latex/footmisc/README" file_size="573" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="9a9d715815f8d14f1e7957ab726a673c" inode="544445" device="2304" mtime="949316132" flags="0" name="/usr/share/texmf/doc/latex/footmisc/footmisc.dvi" file_size="15236" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="" inode="660481" device="2304" mtime="922842930" flags="0" name="/usr/share/texmf/doc/latex/g-brief" file_size="4096" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="16877" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="0197edd4c70fe2631b25dd033c619d06" inode="660483" device="2304" mtime="922842924" flags="0" name="/usr/share/texmf/doc/latex/g-brief/beispiel.tex" file_size="2019" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="44be98a9fdfd68e553edc5a216cb3837" inode="660482" device="2304" mtime="922842926" flags="0" name="/usr/share/texmf/doc/latex/g-brief/g-brief.dvi" file_size="17972" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="" inode="544486" device="2304" mtime="928410087" flags="0" name="/usr/share/texmf/doc/latex/general" file_size="4096" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="16877" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="d1ca6d0c9f7e9ef73a0337d6309ab387" inode="544487" device="2304" mtime="899425286" flags="0" name="/usr/share/texmf/doc/latex/general/a.ps" file_size="180" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="01f4147d5c611b29a568245dbfbcac7c" inode="544494" device="2304" mtime="836004850" flags="0" name="/usr/share/texmf/doc/latex/general/essential.dvi" file_size="107072" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="fa8607c4ff7abb4faf3122f85c7d10be" inode="544490" device="2304" mtime="836005099" flags="0" name="/usr/share/texmf/doc/latex/general/guide.dvi" file_size="80592" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="09e421554bc5217036521c9e3c9aca8f" inode="544491" device="2304" mtime="890176864" flags="0" name="/usr/share/texmf/doc/latex/general/guide.ps" file_size="145910" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="3a116d4b70025f610099992064f22d01" inode="544489" device="2304" mtime="926962260" flags="0" name="/usr/share/texmf/doc/latex/general/l2kurz.dvi" file_size="150156" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="fb119ef0f706883faeae55eee7a2609a" inode="544488" device="2304" mtime="852183444" flags="0" name="/usr/share/texmf/doc/latex/general/latex2e.dvi" file_size="304744" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="4a13fa5b844c8b578003a1586bd40b35" inode="544493" device="2304" mtime="924105207" flags="0" name="/usr/share/texmf/doc/latex/general/lshort.dvi" file_size="273028" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="cee586e9338dc410a0fceb1f1a32e2d2" inode="544492" device="2304" mtime="881283480" flags="0" name="/usr/share/texmf/doc/latex/general/symbols.dvi" file_size="21604" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="" inode="3865477" device="2304" mtime="949316172" flags="0" name="/usr/share/texmf/doc/latex/geometry" file_size="4096" groupname="root" linkto="" rdev="3353" verifyflags="-1" file_mode="16877" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="df12977fa65f4bec4f3012c71204c25a" inode="3865478" device="2304" mtime="949316172" flags="0" name="/usr/share/texmf/doc/latex/geometry/geometry.dvi" file_size="79852" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="8cc8de0889ce93100de284cf69c24bfe" inode="3865479" device="2304" mtime="939311520" flags="0" name="/usr/share/texmf/doc/latex/geometry/gtest.tex" file_size="1915" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="20596d1734a0caf3ef23d1cdb09b6bd8" inode="3865480" device="2304" mtime="832785575" flags="0" name="/usr/share/texmf/doc/latex/geometry/showframe.sty" file_size="6425" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="" inode="169901" device="2304" mtime="949262580" flags="0" name="/usr/share/texmf/doc/latex/graphics" file_size="4096" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="16877" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="d1ca6d0c9f7e9ef73a0337d6309ab387" inode="169902" device="2304" mtime="899350352" flags="0" name="/usr/share/texmf/doc/latex/graphics/a.ps" file_size="180" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="0c8a6aff098fed9ce72dba4d0192ddc6" inode="169905" device="2304" mtime="882341614" flags="0" name="/usr/share/texmf/doc/latex/graphics/epslatex.ps" file_size="2308558" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="9cfe158d6fdf24d76e782bd63c6c3209" inode="169903" device="2304" mtime="949262473" flags="0" name="/usr/share/texmf/doc/latex/graphics/grfguide.ps" file_size="318099" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="b55ccc0ef122aa8340313196d2def04c" inode="169904" device="2304" mtime="949262475" flags="0" name="/usr/share/texmf/doc/latex/graphics/keyval.dvi" file_size="13692" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="" inode="971082" device="2304" mtime="984184029" flags="0" name="/usr/share/texmf/doc/latex/hyperref" file_size="4096" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="16877" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="b588dbec6772bc23450ea40fa9dd9933" inode="971083" device="2304" mtime="930587528" flags="0" name="/usr/share/texmf/doc/latex/hyperref/manual.pdf" file_size="184049" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="" inode="544507" device="2304" mtime="909975597" flags="0" name="/usr/share/texmf/doc/latex/images" file_size="4096" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="16877" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="a8c288723393faf35c7ff15e870adf5a" inode="544509" device="2304" mtime="909975573" flags="0" name="/usr/share/texmf/doc/latex/images/change_begin.gif" file_size="133" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="3d93339397a5e6833b797fb0e91b4bc3" inode="544508" device="2304" mtime="909975573" flags="0" name="/usr/share/texmf/doc/latex/images/change_end.gif" file_size="135" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="e0214a243a8650bdadc516de8fbd78ae" inode="544510" device="2304" mtime="886030942" flags="0" name="/usr/share/texmf/doc/latex/images/new.gif" file_size="139" groupname="root" linkto="" rdev="-24318" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="ed8d4ef0cfbdfc8cd9ab9872cc6dd77b" inode="544511" device="2304" mtime="909975573" flags="0" name="/usr/share/texmf/doc/latex/images/redball.gif" file_size="398" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="" inode="3064228" device="2304" mtime="934160162" flags="0" name="/usr/share/texmf/doc/latex/jknappen" file_size="4096" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="16877" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="4c73089ac73306ba4089c0ce1cce76b9" inode="3064229" device="2304" mtime="930782892" flags="0" name="/usr/share/texmf/doc/latex/jknappen/mathbbol.rme" file_size="2873" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="b8aadb580ef9f89ca72953da624b09f5" inode="3064230" device="2304" mtime="930782892" flags="0" name="/usr/share/texmf/doc/latex/jknappen/mathrsfs.rme" file_size="1488" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="" inode="544449" device="2304" mtime="949321347" flags="0" name="/usr/share/texmf/doc/latex/koma-script" file_size="4096" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="16877" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="bba3751d72e47d2ef16692ec2efabc77" inode="544455" device="2304" mtime="949261340" flags="0" name="/usr/share/texmf/doc/latex/koma-script/README" file_size="658" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="af0862e45002438bd17f679567a11d32" inode="544453" device="2304" mtime="948938430" flags="0" name="/usr/share/texmf/doc/latex/koma-script/dir.tex" file_size="4890" groupname="root" linkto="" rdev="28061" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="4007edb89351ee4be5977e76484779e5" inode="544479" device="2304" mtime="889416000" flags="0" name="/usr/share/texmf/doc/latex/koma-script/knownbug.txt" file_size="6707" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="18d10aa20e6b206eea7995337bfae2bc" inode="544454" device="2304" mtime="847857600" flags="0" name="/usr/share/texmf/doc/latex/koma-script/komabug.tex" file_size="16785" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="90c51598a5df01c3b30d525c7128f2d2" inode="544474" device="2304" mtime="946497900" flags="0" name="/usr/share/texmf/doc/latex/koma-script/liesmich.txt" file_size="9283" groupname="root" linkto="" rdev="8458" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="9b2ba72009ac1af6b69efa3ba356e4bf" inode="544480" device="2304" mtime="948938430" flags="0" name="/usr/share/texmf/doc/latex/koma-script/phone.tex" file_size="3919" groupname="root" linkto="" rdev="1792" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="481b4a863cbf064d2e4c0da4adeb677b" inode="544473" device="2304" mtime="946497720" flags="0" name="/usr/share/texmf/doc/latex/koma-script/readme.txt" file_size="7257" groupname="root" linkto="" rdev="7648" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="556e68f256ad0673e145cbc41a0685b3" inode="544464" device="2304" mtime="927342000" flags="0" name="/usr/share/texmf/doc/latex/koma-script/scr_new1.tex" file_size="5566" groupname="root" linkto="" rdev="13314" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="f7b6036334ee6c78f59352df0f49bfd2" inode="544465" device="2304" mtime="927342000" flags="0" name="/usr/share/texmf/doc/latex/koma-script/scr_new2.tex" file_size="4134" groupname="root" linkto="" rdev="-26111" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="296c935559eb100201037560881bd0c7" inode="544466" device="2304" mtime="927342000" flags="0" name="/usr/share/texmf/doc/latex/koma-script/scr_new3.tex" file_size="4904" groupname="root" linkto="" rdev="16791" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="850a488c78d2d054970877195ae2e591" inode="544467" device="2304" mtime="927342000" flags="0" name="/usr/share/texmf/doc/latex/koma-script/scr_new4.tex" file_size="4685" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="7a0c6aa9c89ff7210f2184700492c822" inode="544468" device="2304" mtime="927342000" flags="0" name="/usr/share/texmf/doc/latex/koma-script/scr_new5.tex" file_size="6098" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="f53b35c63582e2fe64add882e51727e5" inode="544469" device="2304" mtime="927342000" flags="0" name="/usr/share/texmf/doc/latex/koma-script/scr_new6.tex" file_size="4893" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="457d766263a96521d6ec46935bd8a5eb" inode="544470" device="2304" mtime="927342000" flags="0" name="/usr/share/texmf/doc/latex/koma-script/scr_new7.tex" file_size="4864" groupname="root" linkto="" rdev="29266" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="ff31caa0e1a55b07047f11b715f2f53d" inode="544471" device="2304" mtime="927342000" flags="0" name="/usr/share/texmf/doc/latex/koma-script/scr_new8.tex" file_size="4633" groupname="root" linkto="" rdev="580" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="d4bac24b73c28db3d4dca038a762ed46" inode="544472" device="2304" mtime="927342000" flags="0" name="/usr/share/texmf/doc/latex/koma-script/scr_new9.tex" file_size="4973" groupname="root" linkto="" rdev="1792" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="437e2a6c33862597ea4b2fbebdbaaa5b" inode="544450" device="2304" mtime="927342000" flags="0" name="/usr/share/texmf/doc/latex/koma-script/screnggu.dvi" file_size="86756" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="9c5006bc7b76b25a4d905d49f46a3f17" inode="544451" device="2304" mtime="927342000" flags="0" name="/usr/share/texmf/doc/latex/koma-script/screnggu.ind" file_size="8039" groupname="root" linkto="" rdev="21598" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="1e24d56fa8e66103dba0e39689d34815" inode="544452" device="2304" mtime="927342000" flags="0" name="/usr/share/texmf/doc/latex/koma-script/screnggu.tex" file_size="50104" groupname="root" linkto="" rdev="19933" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="48b2504521cba2e5da4271d96e973e8a" inode="544475" device="2304" mtime="946503660" flags="0" name="/usr/share/texmf/doc/latex/koma-script/scrguide.dvi" file_size="234736" groupname="root" linkto="" rdev="8462" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="4c428354753f369f67d2b0ce3a8aa613" inode="544476" device="2304" mtime="946503660" flags="0" name="/usr/share/texmf/doc/latex/koma-script/scrguide.ind" file_size="20882" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="bd5e935b395ceb5c411d618f9d0be898" inode="544477" device="2304" mtime="927342000" flags="0" name="/usr/share/texmf/doc/latex/koma-script/scrguide.ist" file_size="749" groupname="root" linkto="" rdev="8459" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="973a5312bb43cb4a7b0dde2844ad64c6" inode="544478" device="2304" mtime="946494480" flags="0" name="/usr/share/texmf/doc/latex/koma-script/scrguide.tex" file_size="139038" groupname="root" linkto="" rdev="8461" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="fe0ea8171d4f61ab08027255bdbd4e38" inode="544456" device="2304" mtime="927342000" flags="0" name="/usr/share/texmf/doc/latex/koma-script/scrnew10.tex" file_size="4927" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="60f42e0520c529e2b55b15ad54067119" inode="544457" device="2304" mtime="927342000" flags="0" name="/usr/share/texmf/doc/latex/koma-script/scrnew11.tex" file_size="4838" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="6f837765cdc31f1261ad2a62ecbc4d75" inode="544458" device="2304" mtime="927342000" flags="0" name="/usr/share/texmf/doc/latex/koma-script/scrnew12.tex" file_size="4853" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="42d47434e40192949a3d66d0a6f933b0" inode="544459" device="2304" mtime="927342000" flags="0" name="/usr/share/texmf/doc/latex/koma-script/scrnew13.tex" file_size="4300" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="a3ecd8cf3dc64d2397292cdb6df906cb" inode="544460" device="2304" mtime="927342000" flags="0" name="/usr/share/texmf/doc/latex/koma-script/scrnew14.tex" file_size="4724" groupname="root" linkto="" rdev="599" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="faf566ac9ce6e794f69be2b9ab065804" inode="544461" device="2304" mtime="927342000" flags="0" name="/usr/share/texmf/doc/latex/koma-script/scrnew15.tex" file_size="4324" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="8b51e2aaffa90a4faf6c078a79c6c1fa" inode="544462" device="2304" mtime="927342000" flags="0" name="/usr/share/texmf/doc/latex/koma-script/scrnew16.tex" file_size="8508" groupname="root" linkto="" rdev="24066" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="65430a2ff29cdb23e22ccf061844ce8d" inode="544463" device="2304" mtime="946497600" flags="0" name="/usr/share/texmf/doc/latex/koma-script/scrnew17.tex" file_size="6162" groupname="root" linkto="" rdev="24065" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="" inode="20964" device="2304" mtime="905817627" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html" file_size="8192" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="16877" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="f197d296a2d439fd207d2e1f4ab7c977" inode="22978" device="2304" mtime="905817620" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/LaTeX-info.html" file_size="1782" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="a99b5d14b3b3e838180e6f09a2e47573" inode="23000" device="2304" mtime="905817620" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/baselineskip.html" file_size="1434" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="9b212ed19f5f65c566bba241cd886cdd" inode="22910" device="2304" mtime="905817620" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/boldmath.html" file_size="1618" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="2fa50f157bbb9f9a36f14c3b28f3082b" inode="22912" device="2304" mtime="905817620" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/caption.html" file_size="707" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="590fd9b411160601077a73dbb27ae5d1" inode="22965" device="2304" mtime="905817620" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/declarations.html" file_size="2224" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="893ac0a4b1847fe322c9e6f1c0cbff88" inode="22968" device="2304" mtime="905817620" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/ellipses.html" file_size="883" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="c1181a3219887700d8cde5b4d0fa27ec" inode="22872" device="2304" mtime="905817620" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/emph.html" file_size="782" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="8f42a6e6195f5394b0c32f4b0511c5fe" inode="22874" device="2304" mtime="905817620" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/ensuremath.html" file_size="923" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="94b563d84578a820be78a309f250293d" inode="22915" device="2304" mtime="905817620" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/externals.html" file_size="6344" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="cc5004f00579513506b45b00d96daa18" inode="22942" device="2304" mtime="905817620" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/fonts2e.html" file_size="1897" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="83536ad8d003e36e4668fbcafa935c30" inode="22886" device="2304" mtime="905817620" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/fragile.html" file_size="2780" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="f9b89abc9a0db20e0f976ab9c1d40995" inode="22798" device="2304" mtime="905817620" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/frenchsp.html" file_size="661" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="d38c1dba68e06967785cafbf3a8f1cc3" inode="22861" device="2304" mtime="912737096" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/index.html" file_size="3507" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="fec489c9df9af34720fab0003571296c" inode="22979" device="2304" mtime="905817620" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/input.html" file_size="3806" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="7c01c1edf5ccc85236ccc9132acff534" inode="22875" device="2304" mtime="905817620" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/item.html" file_size="1068" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="e4c1cb752c728a45967aeba3ca2b6182" inode="22983" device="2304" mtime="905817620" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/lefteqn.html" file_size="1454" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="e5d6e82915c10f702488298a43473111" inode="22877" device="2304" mtime="905817620" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/lists.html" file_size="2329" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="66b336c6dfa56af1dbfc0a2c32cd97c5" inode="21635" device="2304" mtime="905817620" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/ltx-111.html" file_size="846" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="8eb6fab65e9a2de448d9855c19b25ec5" inode="22793" device="2304" mtime="905817620" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/ltx-115.html" file_size="3006" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="c6e28c1deaa24ab680e554ebc1b24c6d" inode="22805" device="2304" mtime="905817621" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/ltx-117.html" file_size="1855" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="55208984ba8091db4f94326d84bbdd78" inode="22811" device="2304" mtime="905817621" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/ltx-118.html" file_size="1049" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="bb28d6bedbe93dbb8eb8bff4536d299b" inode="22816" device="2304" mtime="905817621" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/ltx-119.html" file_size="1691" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="a6debfdea21bd2044b6cd66b6d9b1874" inode="20974" device="2304" mtime="905817621" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/ltx-13.html" file_size="2265" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="4978d89ae0257db57bc86fdcf72db1ee" inode="22863" device="2304" mtime="905817621" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/ltx-130.html" file_size="2931" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="f9f50ad332fa8f625b489710e5dbc496" inode="22867" device="2304" mtime="905817621" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/ltx-131.html" file_size="833" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="365c83f57648cf456a2714dbd2a8f6d4" inode="22880" device="2304" mtime="905817621" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/ltx-137.html" file_size="934" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="719e1389ef6b1d81d4584df2f6d3b435" inode="22884" device="2304" mtime="905817621" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/ltx-138.html" file_size="1134" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="bab6190377d0ed37ad8c4abd7c15aa69" inode="22891" device="2304" mtime="905817621" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/ltx-140.html" file_size="677" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="a369c5a941848677821958e045a5738a" inode="22894" device="2304" mtime="905817621" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/ltx-141.html" file_size="2614" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="1a8d4393ce1b6a40e69adeeec535753b" inode="22897" device="2304" mtime="905817621" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/ltx-142.html" file_size="641" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="1b163d7ed155eb334f8c90f8fabcffc6" inode="22899" device="2304" mtime="905817621" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/ltx-143.html" file_size="5305" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="0fd6333a274547cf618e6cb6eec624d7" inode="22970" device="2304" mtime="905817621" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/ltx-164.html" file_size="2810" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="417b293a4553390f2fbb340e64d1ad50" inode="22972" device="2304" mtime="905817621" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/ltx-165.html" file_size="880" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="719e1b6c7ada549a0ff837a2d4fce016" inode="22984" device="2304" mtime="905817621" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/ltx-169.html" file_size="916" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="cc2bcd079371c07e79bf4b0877f95ba9" inode="21634" device="2304" mtime="905817621" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/ltx-17.html" file_size="1698" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="1a64bea4538f72b13337f7ed41733fed" inode="22989" device="2304" mtime="905817621" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/ltx-170.html" file_size="1726" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="0243cf14fbc31f71189f2bbbf8bb3061" inode="22992" device="2304" mtime="905817621" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/ltx-171.html" file_size="1157" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="a227ae008bfea04aaadeb16ce79dc565" inode="22995" device="2304" mtime="905817621" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/ltx-172.html" file_size="900" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="c5666ebb3b4a51af68304270206d3e76" inode="22998" device="2304" mtime="905817621" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/ltx-173.html" file_size="571" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="fec6c773cd243a4d5ed59a1fe03baad3" inode="20965" device="2304" mtime="905817621" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/ltx-174.html" file_size="981" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="bde2d0e41b3ed893f589bb523b02c744" inode="20968" device="2304" mtime="905817621" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/ltx-175.html" file_size="923" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="822761bb7cb56243bed844c9de691cd2" inode="20972" device="2304" mtime="905817621" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/ltx-176.html" file_size="827" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="537e484a1e032fcb35d003a279d204c6" inode="20976" device="2304" mtime="905817621" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/ltx-177.html" file_size="2389" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="794065589243d1b86c707eea3d2961e5" inode="20978" device="2304" mtime="905817621" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/ltx-178.html" file_size="2024" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="1a4c3b699d00fb6d3a8acc874e32090e" inode="20980" device="2304" mtime="905817621" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/ltx-179.html" file_size="1319" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="0a0113b6e12c516a4afa4fac39824d73" inode="22777" device="2304" mtime="905817621" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/ltx-18.html" file_size="3459" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="c25c6d6e43822b5d7a3a9d0063f40b2a" inode="22776" device="2304" mtime="905817621" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/ltx-180.html" file_size="1262" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="10f5088c9e61e073ccc3adb40b827c29" inode="22779" device="2304" mtime="905817621" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/ltx-181.html" file_size="1039" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="5a3b5fc4e1f54c1a1fc7f6566ecad119" inode="22785" device="2304" mtime="905817621" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/ltx-182.html" file_size="1042" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="397c5e1be8af7324b13c0853b47ff318" inode="22789" device="2304" mtime="905817621" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/ltx-183.html" file_size="549" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="bd5e687bc7e2ca5ac96bfe4c695b4f05" inode="22794" device="2304" mtime="905817621" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/ltx-184.html" file_size="550" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="6bf21d25c6ddf8cbee5cc4925baaf506" inode="22801" device="2304" mtime="905817621" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/ltx-185.html" file_size="582" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="2d5e670c68e257a833e59a4bc6bf83d5" inode="22808" device="2304" mtime="905817621" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/ltx-186.html" file_size="558" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="0974aa8c65ec5345fc648188b354a6c3" inode="22813" device="2304" mtime="905817621" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/ltx-187.html" file_size="690" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="dd5e4b88952a03bbeefdf3768919a0da" inode="22819" device="2304" mtime="905817621" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/ltx-188.html" file_size="505" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="1afff68c315b6cf8cf2c954fa528401e" inode="22823" device="2304" mtime="905817621" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/ltx-189.html" file_size="552" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="cf6649773cd8b7c80b1b7d7e501c1716" inode="22783" device="2304" mtime="905817621" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/ltx-19.html" file_size="2072" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="324dc1dbbac65c28a589fd9f0fd22fba" inode="22829" device="2304" mtime="905817622" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/ltx-190.html" file_size="543" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="c4b2b2ef3cac3056855ddc068a8f3a08" inode="22832" device="2304" mtime="905817622" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/ltx-191.html" file_size="1088" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="01eadca033d7f1915caa96920bcc314b" inode="22836" device="2304" mtime="905817622" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/ltx-192.html" file_size="1249" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="73bf9b8e3ecf984eaa8046dbab13bf02" inode="22846" device="2304" mtime="905817622" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/ltx-195.html" file_size="650" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="7cc5f8778e552ac422ece91dfca41538" inode="22854" device="2304" mtime="905817622" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/ltx-198.html" file_size="840" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="d54962a0a1880fcab8a63999852f7381" inode="22859" device="2304" mtime="905817622" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/ltx-199.html" file_size="800" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="672c881c34e74a27cd3e0645e3c09c65" inode="22902" device="2304" mtime="905817622" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/ltx-2.html" file_size="13855" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="7b19cbb62fd611d1e1ad1c820af7f7e0" inode="22792" device="2304" mtime="905817622" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/ltx-20.html" file_size="1235" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="bcb8625a6b6bcd9722bc8fba83098e03" inode="22895" device="2304" mtime="905817622" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/ltx-200.html" file_size="1991" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="419ba48918e6973e8730dee4058f248a" inode="22898" device="2304" mtime="905817622" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/ltx-201.html" file_size="582" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="ec3121684817e34bf113272ca2c47f3d" inode="22900" device="2304" mtime="905817622" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/ltx-202.html" file_size="2599" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="f6450d1aa0838be2058fc21b154f7afa" inode="22904" device="2304" mtime="905817622" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/ltx-203.html" file_size="1197" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="ab4d8b37266c5009b1901f91c860473b" inode="22908" device="2304" mtime="905817622" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/ltx-204.html" file_size="642" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="053884d4bc6a3987ea66a1405554c0ed" inode="22911" device="2304" mtime="905817622" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/ltx-205.html" file_size="1731" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="f26fae6d3594946b05235954bd350425" inode="22913" device="2304" mtime="905817622" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/ltx-206.html" file_size="601" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="0399952064ab78079269acfba59ed8ce" inode="22916" device="2304" mtime="905817622" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/ltx-207.html" file_size="775" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="28e8b7d7eab4500e859d21087897ebaa" inode="22797" device="2304" mtime="905817622" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/ltx-21.html" file_size="656" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="8f4af704a67440c0c3f3f54f567dfbe5" inode="22924" device="2304" mtime="905817622" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/ltx-210.html" file_size="661" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="81d0f07d64bde87ccc2b6282411c1e1e" inode="22927" device="2304" mtime="905817622" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/ltx-211.html" file_size="1338" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="ff26d55daeb7442c9c1bc7fd7f7bc34c" inode="22929" device="2304" mtime="905817622" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/ltx-212.html" file_size="759" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="2b989a0b2a2cef63f8c30ce0a3fc09c3" inode="22932" device="2304" mtime="905817622" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/ltx-213.html" file_size="599" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="414d2a0ff7b033e1613793c7d9b2c851" inode="22935" device="2304" mtime="905817622" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/ltx-214.html" file_size="1135" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="a5caed05fbfe9ead2b24959d8f81e59a" inode="22941" device="2304" mtime="905817622" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/ltx-216.html" file_size="868" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="7a33ec75d7ff1646e588a38c382f60c8" inode="22944" device="2304" mtime="905817622" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/ltx-217.html" file_size="720" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="ffccc332323e5358a4d2e2de6d0a534e" inode="22949" device="2304" mtime="905817622" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/ltx-218.html" file_size="716" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="7fcf5abe4d88ef60ce45223afbe62224" inode="22804" device="2304" mtime="905817622" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/ltx-22.html" file_size="1440" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="d7916ad70c70bb38af2b9dd341ee2ad8" inode="22961" device="2304" mtime="905817622" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/ltx-220.html" file_size="580" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="411ac5facc7de6124ead0403d63e78ce" inode="22964" device="2304" mtime="905817622" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/ltx-221.html" file_size="719" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="a78c70b4fe4491a37a817c34797cecec" inode="22967" device="2304" mtime="905817622" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/ltx-222.html" file_size="2006" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="7aa022deb09d0106467d3702763c7bf5" inode="22971" device="2304" mtime="905817622" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/ltx-223.html" file_size="1917" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="1aeb82e3a417f90a4b8397d74b6fabe6" inode="22973" device="2304" mtime="905817622" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/ltx-224.html" file_size="1102" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="ec174c6b37d88fce90457296fe2183e5" inode="22975" device="2304" mtime="905817622" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/ltx-225.html" file_size="1552" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="79a1d5a13d8314a1e3077bf1c9022697" inode="22977" device="2304" mtime="905817622" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/ltx-226.html" file_size="839" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="f1cd934778534eb2e6820f737f09b52e" inode="22981" device="2304" mtime="905817622" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/ltx-227.html" file_size="666" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="a4dfc2d15fd552b56658a403b4e5fa5c" inode="22985" device="2304" mtime="905817622" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/ltx-228.html" file_size="892" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="11e0d54be70daf705a9ee82341c48950" inode="22987" device="2304" mtime="905817622" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/ltx-229.html" file_size="894" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="26a8797d8fbd6c3ae5d5255d403f625d" inode="22993" device="2304" mtime="905817623" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/ltx-230.html" file_size="928" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="bba78dcf9473facb7db08c70ec97e4b0" inode="22996" device="2304" mtime="905817623" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/ltx-231.html" file_size="1266" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="78a969d4febcb95e29b5ac1c8271d811" inode="22999" device="2304" mtime="905817623" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/ltx-232.html" file_size="1042" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="a6647a7449a85b49a626e105393b2301" inode="20966" device="2304" mtime="905817623" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/ltx-233.html" file_size="578" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="9d58717121ffd11b32d29bf3745e46b6" inode="20969" device="2304" mtime="905817623" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/ltx-234.html" file_size="1139" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="6a49a75b662cff6dec80ac1acc4cad63" inode="20973" device="2304" mtime="905817623" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/ltx-235.html" file_size="668" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="1096f1b92d19edf188995531e80bfce2" inode="20977" device="2304" mtime="905817623" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/ltx-236.html" file_size="709" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="90de7881e8941db665146b9433e5707a" inode="20979" device="2304" mtime="905817623" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/ltx-237.html" file_size="1451" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="e7c6deed1aad1aec30badfa070e0d7f7" inode="20981" device="2304" mtime="905817623" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/ltx-238.html" file_size="676" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="6ebff2f746f3642279ef778a4e9792a4" inode="21633" device="2304" mtime="905817623" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/ltx-239.html" file_size="1205" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="78e7d4ba5829ee6edd9bc6c448737b8e" inode="22780" device="2304" mtime="905817623" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/ltx-240.html" file_size="628" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="794bf0207c72e2dc9fa9d0433bd0cc13" inode="22786" device="2304" mtime="905817623" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/ltx-241.html" file_size="1011" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="b9a03720668bcf8bb608d66627887b4d" inode="22790" device="2304" mtime="905817623" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/ltx-242.html" file_size="516" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="ab953a89ccf30e17c4452503bd84e7e0" inode="22795" device="2304" mtime="905817623" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/ltx-243.html" file_size="583" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="e4f22ed6c242cd1512e8ec9ad4dd5d6a" inode="22802" device="2304" mtime="905817623" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/ltx-244.html" file_size="1233" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="1bc96df549826bc20216fcf084fb361b" inode="22809" device="2304" mtime="905817623" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/ltx-245.html" file_size="1435" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="054cc66323bf83993c8a077e5e8211f4" inode="22814" device="2304" mtime="905817623" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/ltx-246.html" file_size="673" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="7a118a93b6b30f3fe27198fdc10139c2" inode="22820" device="2304" mtime="905817623" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/ltx-247.html" file_size="742" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="f41dd71a83b83e169e8f4c488601fe77" inode="22824" device="2304" mtime="905817623" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/ltx-248.html" file_size="841" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="7a9682b52087b04f7a9d1f63d05cee8a" inode="22826" device="2304" mtime="905817623" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/ltx-249.html" file_size="639" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="3fb5ccd7800895359c0db95a00b34504" inode="22833" device="2304" mtime="905817623" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/ltx-250.html" file_size="1508" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="f10e64d661bb3394834c901a7719ed20" inode="22837" device="2304" mtime="905817623" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/ltx-251.html" file_size="868" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="0c9f708769d72f35b7f34fb66b0b45a6" inode="22840" device="2304" mtime="905817623" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/ltx-252.html" file_size="1700" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="a4afca1f061a252ad6344d7ff43a74f4" inode="22843" device="2304" mtime="905817623" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/ltx-253.html" file_size="520" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="896c8fbd83c9d1b60689ad56dd102e3f" inode="22847" device="2304" mtime="905817623" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/ltx-254.html" file_size="584" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="293625d6aa6c0a4ac66b48a34f23c6ae" inode="22850" device="2304" mtime="905817623" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/ltx-255.html" file_size="535" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="0ff761da4af0795dc889f767a22416ac" inode="22852" device="2304" mtime="905817623" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/ltx-256.html" file_size="778" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="306a96cc72f5ef176b0b5ac3810d9fe6" inode="22856" device="2304" mtime="905817623" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/ltx-257.html" file_size="1160" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="8be369c1aa072477d029f242d993d421" inode="22860" device="2304" mtime="905817623" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/ltx-258.html" file_size="929" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="d18c20a2b62dbb17e2f5cb9ecfc55155" inode="22864" device="2304" mtime="905817623" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/ltx-259.html" file_size="822" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="b7c1899e25fbbb456e06ac116bc2f8d9" inode="22869" device="2304" mtime="905817623" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/ltx-260.html" file_size="4047" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="a10b52681b74f531e0038ad2b2b68cdd" inode="22871" device="2304" mtime="905817623" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/ltx-261.html" file_size="587" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="a64900ec7b176c009ab0e506c5c60860" inode="22873" device="2304" mtime="905817623" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/ltx-262.html" file_size="2456" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="39a01d6781ae9986713890e508d68721" inode="22876" device="2304" mtime="905817623" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/ltx-263.html" file_size="1275" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="0f62c44e90ac74528e13de8ea63c6c2e" inode="22878" device="2304" mtime="905817623" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/ltx-264.html" file_size="1303" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="c552cfdfa94ee94045a2bc2718bf6295" inode="22881" device="2304" mtime="905817623" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/ltx-265.html" file_size="1341" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="722d564b99a19a1f954bf96d774e8849" inode="22885" device="2304" mtime="905817623" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/ltx-266.html" file_size="621" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="6cc0d7ce3f5ad6752becab25829d2022" inode="22887" device="2304" mtime="905817624" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/ltx-267.html" file_size="2296" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="f78818ce325b104493d5cf3e3ce8c6bd" inode="22888" device="2304" mtime="905817624" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/ltx-268.html" file_size="1467" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="0446b57c8aace63d6859311faac3854c" inode="22892" device="2304" mtime="905817624" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/ltx-269.html" file_size="688" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="0cfb2f4b71fa921c2f7279bc7a8b2b12" inode="22828" device="2304" mtime="905817624" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/ltx-27.html" file_size="2257" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="c13bf2b96e0d38aca6a0e2bbb5dc7219" inode="22901" device="2304" mtime="905817624" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/ltx-271.html" file_size="819" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="9293cb2287d383b6dac367a33b4b76a5" inode="22914" device="2304" mtime="905817624" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/ltx-275.html" file_size="585" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="d532d2bbbea6b2384212411757eb97f4" inode="22917" device="2304" mtime="905817624" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/ltx-276.html" file_size="502" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="7215603c722d83b87d5a1e1f4cf9af75" inode="22919" device="2304" mtime="905817624" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/ltx-277.html" file_size="844" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="1c02b05e56a4abd4465c2cee2b1de143" inode="22922" device="2304" mtime="905817624" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/ltx-279.html" file_size="685" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="d441b3daaaff39320ac08e6332d363e7" inode="22928" device="2304" mtime="905817624" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/ltx-280.html" file_size="668" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="d1749c18e913f6cbfdab103cfbb29501" inode="22930" device="2304" mtime="905817624" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/ltx-281.html" file_size="846" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="dc953d04a02cd369fd35587260cefd4f" inode="22933" device="2304" mtime="905817624" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/ltx-282.html" file_size="632" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="89ad291e9ff5d6749b814434f6fdb93a" inode="22936" device="2304" mtime="905817624" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/ltx-283.html" file_size="832" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="7ed571325b122af269f7980af7d99fab" inode="22939" device="2304" mtime="905817624" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/ltx-284.html" file_size="670" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="0d723cae97b675efc44164e34c31b7ec" inode="22945" device="2304" mtime="905817624" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/ltx-286.html" file_size="820" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="1e5fa97d3b5c919f7c812d45a11b26d0" inode="22950" device="2304" mtime="905817624" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/ltx-287.html" file_size="860" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="da013516ced7e688709809cace9c3fcc" inode="22953" device="2304" mtime="905817624" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/ltx-288.html" file_size="793" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="a301919816cde34aefd14493c5c5cca1" inode="22958" device="2304" mtime="905817624" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/ltx-289.html" file_size="829" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="1c7ba04b5a7ee97a704650379e57ee17" inode="22834" device="2304" mtime="905817624" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/ltx-29.html" file_size="864" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="012ef2cebc7a1288dfd370df77862cc3" inode="22969" device="2304" mtime="905817624" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/ltx-291.html" file_size="718" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="4b1baab1d2aa5460fa2f231d277edbf5" inode="22974" device="2304" mtime="905817624" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/ltx-293.html" file_size="545" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="35987cec0c300f04707a10fccea848ad" inode="22976" device="2304" mtime="905817624" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/ltx-294.html" file_size="1470" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="1728f71063566c55ccbfc0abf0c19075" inode="22982" device="2304" mtime="905817624" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/ltx-296.html" file_size="981" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="611b0cbb5c3894dce7175cd616860c2f" inode="22986" device="2304" mtime="905817624" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/ltx-297.html" file_size="837" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="422ff0ae844ff27d813617d8ece874a0" inode="22988" device="2304" mtime="905817624" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/ltx-298.html" file_size="730" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="6f5069c89a5e5440ceb56aacc6388728" inode="22990" device="2304" mtime="905817624" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/ltx-299.html" file_size="650" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="88ea74a35cda47b1a211d9be339b31e7" inode="22905" device="2304" mtime="905817624" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/ltx-3.html" file_size="3743" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="37e784be2e5e57eab582fe3ccc858b26" inode="22842" device="2304" mtime="905817624" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/ltx-30.html" file_size="1491" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="3966c505714e4c3667d7f3e571c19efc" inode="22787" device="2304" mtime="905817624" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/ltx-300.html" file_size="1130" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="2acbd688819e84ad12360cfffd933032" inode="22791" device="2304" mtime="905817624" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/ltx-301.html" file_size="1153" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="e05034f5beb64fef3e542d113c8c404d" inode="22796" device="2304" mtime="905817624" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/ltx-302.html" file_size="1356" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="c7052a54c9519e1e88a79cfb6f7e913c" inode="22803" device="2304" mtime="905817624" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/ltx-303.html" file_size="881" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="4d43714c29b3dd0c5e9110f494446590" inode="22810" device="2304" mtime="905817624" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/ltx-304.html" file_size="650" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="0b848fdcb37e4b025f82b80589f5107d" inode="22815" device="2304" mtime="905817624" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/ltx-305.html" file_size="740" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="e6dd163a7b227aee74e622c397bcc21f" inode="22821" device="2304" mtime="905817624" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/ltx-306.html" file_size="1431" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="e2d22dd4f23bdd885208fc293bc09a8f" inode="22825" device="2304" mtime="905817624" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/ltx-307.html" file_size="1345" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="6b382fcd317694e2d7a864b65686d769" inode="22827" device="2304" mtime="905817624" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/ltx-308.html" file_size="644" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="6e1f291e15ab4c62b5c0d4ee9ceb79d5" inode="22830" device="2304" mtime="905817624" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/ltx-309.html" file_size="528" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="a376c4df489f2d5134f6a46d8cde0969" inode="22845" device="2304" mtime="905817624" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/ltx-31.html" file_size="1082" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="621e8378ab6d217355f37c882c1981f8" inode="22838" device="2304" mtime="905817625" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/ltx-310.html" file_size="627" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="28a43b158f31a017f14cba67d276c1c1" inode="22841" device="2304" mtime="905817625" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/ltx-311.html" file_size="1002" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="0a16607e58d85e97ae5751b73f0f22fd" inode="22844" device="2304" mtime="905817625" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/ltx-312.html" file_size="752" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="fd785fb8055c4602a98a194f62166491" inode="22848" device="2304" mtime="905817625" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/ltx-313.html" file_size="642" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="60206b27b09bf16a2c4d4b3c9d10b19b" inode="22851" device="2304" mtime="905817625" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/ltx-314.html" file_size="843" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="129125fd063780210396a0c4b41927f5" inode="22853" device="2304" mtime="905817625" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/ltx-315.html" file_size="744" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="bfa3f50fd754689cf0945bc1551159ed" inode="22857" device="2304" mtime="905817625" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/ltx-316.html" file_size="639" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="d2d12036a7e1e9f44db699ad4a7aab96" inode="22862" device="2304" mtime="905817625" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/ltx-317.html" file_size="521" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="b8b73ad9d397a20a1fa38b4ffeb2c086" inode="22865" device="2304" mtime="905817625" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/ltx-318.html" file_size="692" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="efc8cad0935271cea720d143a6b247aa" inode="22868" device="2304" mtime="905817625" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/ltx-319.html" file_size="906" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="fa4750e67e684e4027ff4453a2618e72" inode="22879" device="2304" mtime="905817625" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/ltx-323.html" file_size="568" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="be4df1a7d74a89fd181d88ce78b88c92" inode="22882" device="2304" mtime="905817625" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/ltx-324.html" file_size="897" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="1b65d3814fae4cf821d64bc79ca3425d" inode="22893" device="2304" mtime="905817625" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/ltx-328.html" file_size="557" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="ca6b9cb7ef95c539334a58c611b4f705" inode="22896" device="2304" mtime="905817625" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/ltx-329.html" file_size="855" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="8f8a979f7ebb5f4255ab7abfde9c1387" inode="22903" device="2304" mtime="905817625" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/ltx-330.html" file_size="466" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="a69145dd984e5f0a5c77b6b33237c4f7" inode="22906" device="2304" mtime="905817625" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/ltx-331.html" file_size="644" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="629d22f957aa202d6a595da40bb14e92" inode="22909" device="2304" mtime="905817625" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/ltx-332.html" file_size="656" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="494e770cd89931d3ccdf02758e48d46c" inode="22918" device="2304" mtime="905817625" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/ltx-335.html" file_size="867" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="222ddb600667a53a02e4bd0702afe0af" inode="22920" device="2304" mtime="905817625" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/ltx-336.html" file_size="970" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="2acf233cf89ec786d8c2298ed5f5b780" inode="22921" device="2304" mtime="905817625" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/ltx-337.html" file_size="773" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="9eaa602a97a1974a3f7cef74490d5f0b" inode="22923" device="2304" mtime="905817625" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/ltx-338.html" file_size="721" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="2081dca0b3273e6d7046d4d1798114ae" inode="22925" device="2304" mtime="905817625" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/ltx-339.html" file_size="954" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="0912dc509d4aab89acbbdd0988ff7752" inode="22931" device="2304" mtime="905817625" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/ltx-340.html" file_size="751" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="80f3bce517c1d54aba636c19fc3d33fc" inode="22934" device="2304" mtime="905817625" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/ltx-341.html" file_size="1329" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="8aa8143ca627369ec223fafd2ede019c" inode="22937" device="2304" mtime="905817625" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/ltx-342.html" file_size="1383" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="9d77cd2dbc9b663ad18e5fdeefd766ef" inode="22946" device="2304" mtime="905817625" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/ltx-345.html" file_size="780" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="cad583397cdfd0843a2f217375d8b9eb" inode="22951" device="2304" mtime="905817625" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/ltx-346.html" file_size="724" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="cf8d2a8942b0f22d4ae8dacf7a289afc" inode="22954" device="2304" mtime="905817625" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/ltx-347.html" file_size="1067" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="4878f115cc54430a96e27dee236611bb" inode="22866" device="2304" mtime="905817625" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/ltx-37.html" file_size="1029" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="ec856e2422539195212c1779de717e16" inode="22870" device="2304" mtime="905817625" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/ltx-39.html" file_size="1032" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="7dc9e6672a29f4ae674641488d818652" inode="22938" device="2304" mtime="905817625" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/ltx-401.html" file_size="3894" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="98bf21a396b32bf83c93b6be5ebceaf9" inode="22940" device="2304" mtime="905817625" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/ltx-402.html" file_size="1330" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="e5e2579357f9f840dc5b95f895599fd8" inode="22943" device="2304" mtime="905817625" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/ltx-403.html" file_size="4495" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="6212ce38946b168b1ac2fcaafed032fa" inode="22947" device="2304" mtime="905817625" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/ltx-404.html" file_size="2581" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="d722d5d2f5e031ea0bc463c65dcd50f3" inode="22952" device="2304" mtime="905817625" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/ltx-405.html" file_size="1752" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="ac546a4a4d85609d05e67219db118503" inode="22955" device="2304" mtime="905817625" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/ltx-406.html" file_size="1835" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="46eb96f91ea3b3395d1d34fbcc37ff72" inode="22960" device="2304" mtime="905817625" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/ltx-407.html" file_size="3132" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="f71081e3a9ef774548b660472bbebc90" inode="22963" device="2304" mtime="905817625" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/ltx-408.html" file_size="3247" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="d5d3bfdcf315fdc938c3ed7afd591e70" inode="22966" device="2304" mtime="905817626" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/ltx-409.html" file_size="1959" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="b2925b7faa76c7689bfefe030122f433" inode="20967" device="2304" mtime="905817626" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/ltx-420.html" file_size="820" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="8082ec9f1e0df0ac6847a80fb1ad28bf" inode="20971" device="2304" mtime="905817626" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/ltx-421.html" file_size="1932" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="d15933f75f57739dd121f7f954f23b1a" inode="22883" device="2304" mtime="905817626" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/ltx-43.html" file_size="4728" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="b14a295c0f7b851099dd30699e95afc2" inode="22800" device="2304" mtime="905817626" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/ltx-430.html" file_size="894" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="ce6966a56f8e5403a8b0b02e09868e22" inode="22807" device="2304" mtime="905817626" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/ltx-431.html" file_size="1904" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="1c5fed44c4c66863677474c131b86154" inode="22812" device="2304" mtime="905817626" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/ltx-432.html" file_size="1064" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="a434962092da591a2fbf45738ddb7faf" inode="22818" device="2304" mtime="905817626" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/ltx-433.html" file_size="948" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="32f2dd1e3a0bd599ef5fd0f29bdc5ff7" inode="22822" device="2304" mtime="905817626" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/ltx-434.html" file_size="1105" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="bd6a7302130b901bfda5f6c7a7e89e88" inode="22926" device="2304" mtime="905817626" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/ltx-58.html" file_size="2471" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="dfdcf89840d68b47ce35858a0c368c44" inode="22959" device="2304" mtime="905817626" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/ltx-67.html" file_size="1725" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="120f27fdc92058883b7a1bd900c9302f" inode="22962" device="2304" mtime="905817626" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/ltx-68.html" file_size="6468" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="fa3c283415277a9ec9f8fa61d058ce4e" inode="22980" device="2304" mtime="905817626" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/ltx-73.html" file_size="2846" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="d576022c944aeaa7147f6961b00c96bf" inode="22991" device="2304" mtime="905817626" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/ltx-77.html" file_size="582" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="db07b7c71565b18e2ec87943474c91de" inode="22994" device="2304" mtime="905817626" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/ltx-78.html" file_size="1075" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="675a03ae4c968b76eaccba4011cda64b" inode="22997" device="2304" mtime="905817626" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/ltx-79.html" file_size="1414" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="8212bd745df20d07b29cb4c87b3e9306" inode="20970" device="2304" mtime="905817626" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/ltx-81.html" file_size="519" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="cc5b54ac345ee3a5782e4ab86c9de6dc" inode="20975" device="2304" mtime="905817626" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/ltx-82.html" file_size="1313" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="49900d211c5736e7b145b506466504aa" inode="22775" device="2304" mtime="905817626" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/ltx-86.html" file_size="4248" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="c3851a824796659706b81e689440ba38" inode="22778" device="2304" mtime="905817626" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/ltx-87.html" file_size="662" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="46b5010ce5fba1939a119c1c3c9654ed" inode="22784" device="2304" mtime="905817626" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/ltx-88.html" file_size="762" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="6e45c99dcd89ed4887b8e740b578ae4a" inode="22788" device="2304" mtime="905817626" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/ltx-89.html" file_size="882" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="5dcc3f0ed3e5f079ad038568ffa6ba07" inode="22799" device="2304" mtime="905817626" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/ltx-90.html" file_size="716" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="ff615e0b8ee91afa1cee7612bfbeb030" inode="22806" device="2304" mtime="905817626" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/ltx-91.html" file_size="3111" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="341c0c5c3bae5f388e72e8a99f058a92" inode="22817" device="2304" mtime="905817626" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/ltx-93.html" file_size="930" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="2d4c9721c20101806576b7886bb03231" inode="22831" device="2304" mtime="905817626" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/ltx-97.html" file_size="668" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="c3ccfd33de94849c154a55519a170fad" inode="22835" device="2304" mtime="905817626" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/ltx-98.html" file_size="745" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="07f6e1a4fd239c7219d66bc1408da1f6" inode="22839" device="2304" mtime="905817626" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/ltx-99.html" file_size="1473" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="5268fdd87d69d793ce15cc5c7b5ebdee" inode="22858" device="2304" mtime="905817626" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/ltx-tar.html" file_size="3113" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="60a732a416d1a4d55f83ed2a0c30c137" inode="22907" device="2304" mtime="905817626" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/mathfonts.html" file_size="3796" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="3095df9dd6563b65b73322c3106e08e1" inode="22782" device="2304" mtime="912737451" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/mirror.html" file_size="3942" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="a3bbd422ec1d33ff74965fbc1332c911" inode="22956" device="2304" mtime="905817626" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/parskip.html" file_size="933" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="b3d5d9b0508358405beec134436c64a6" inode="22957" device="2304" mtime="905817626" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/refs.html" file_size="1774" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="4f890d2a01b3c90f461b8568155c681f" inode="22855" device="2304" mtime="905817626" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/stackrel.html" file_size="2997" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="8358cce40e2bcd6c1fcc8b678bb580e6" inode="22889" device="2304" mtime="905817626" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/textwidth.html" file_size="864" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="a7726d2703cde26fcde1b20608f1a163" inode="22890" device="2304" mtime="905817626" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/toc.html" file_size="1018" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="6e0846c5dfcde081a89f3165411955b0" inode="22849" device="2304" mtime="905817626" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/trivlist.html" file_size="889" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="317163aaa731f10625e7e6f76d468ced" inode="22781" device="2304" mtime="905817627" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/unitlength.html" file_size="878" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="dbae9e5e3eb9052c98f2c8b5b2814bf7" inode="22948" device="2304" mtime="905817627" flags="0" name="/usr/share/texmf/doc/latex/latex2e-html/versions.html" file_size="2807" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="" inode="544495" device="2304" mtime="927767424" flags="0" name="/usr/share/texmf/doc/latex/mathtime" file_size="4096" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="16877" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="638a3ffbd86238ffc74bd681d2b9f2d7" inode="544498" device="2304" mtime="854769600" flags="0" name="/usr/share/texmf/doc/latex/mathtime/0readme" file_size="3164" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="afd251e19cf937930b696826a1304414" inode="544499" device="2304" mtime="906743569" flags="0" name="/usr/share/texmf/doc/latex/mathtime/mathtime.dvi" file_size="11724" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="917df67c1d67f5c525f2dfbcae319943" inode="544497" device="2304" mtime="927767193" flags="0" name="/usr/share/texmf/doc/latex/mathtime/mt11p.dvi" file_size="148344" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="bed8923a0c274f980be364bcd4c88a9b" inode="544496" device="2304" mtime="854769600" flags="0" name="/usr/share/texmf/doc/latex/mathtime/test11p.tex" file_size="14279" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="" inode="1036579" device="2304" mtime="949317233" flags="0" name="/usr/share/texmf/doc/latex/mdwtools" file_size="4096" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="16877" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="8ca43cbc842c2336e835926c2166c28b" inode="1036590" device="2304" mtime="888927720" flags="0" name="/usr/share/texmf/doc/latex/mdwtools/COPYING" file_size="17982" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="748d6a69c0484cddc33d6b05f3d46d5d" inode="1036582" device="2304" mtime="922248000" flags="0" name="/usr/share/texmf/doc/latex/mdwtools/README" file_size="21271" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="3e16904a351898412058fdafdb8488a5" inode="1036586" device="2304" mtime="949317228" flags="0" name="/usr/share/texmf/doc/latex/mdwtools/at.dvi" file_size="67028" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="c10fa66499c806ec4f507442febbacbd" inode="1036585" device="2304" mtime="949317228" flags="0" name="/usr/share/texmf/doc/latex/mdwtools/cmtt.dvi" file_size="59608" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="70595f09db1475460f73351988439329" inode="1036588" device="2304" mtime="949317228" flags="0" name="/usr/share/texmf/doc/latex/mdwtools/doafter.dvi" file_size="51920" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="3b79acb5876cb9d836c3971d321bf1ee" inode="1036581" device="2304" mtime="949317228" flags="0" name="/usr/share/texmf/doc/latex/mdwtools/footnote.dvi" file_size="64192" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="a82b615f7c7fdea2ec6181d4072bc5d5" inode="1036584" device="2304" mtime="949317228" flags="0" name="/usr/share/texmf/doc/latex/mdwtools/mdwlist.dvi" file_size="68376" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="42b62501d2dbfc8eb4738f3ae1728476" inode="1036589" device="2304" mtime="949317228" flags="0" name="/usr/share/texmf/doc/latex/mdwtools/mdwmath.dvi" file_size="52800" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="de85a51a9a90d5317505bd861b3eecf1" inode="1036580" device="2304" mtime="949317228" flags="0" name="/usr/share/texmf/doc/latex/mdwtools/mdwtab.dvi" file_size="357412" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="b60706519b3948a0701cac4f9ee3cedf" inode="1036587" device="2304" mtime="949317228" flags="0" name="/usr/share/texmf/doc/latex/mdwtools/sverb.dvi" file_size="94644" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="e12b36d234ee92f8d1b60b9fb2bef83e" inode="1036583" device="2304" mtime="949317228" flags="0" name="/usr/share/texmf/doc/latex/mdwtools/syntax.dvi" file_size="184176" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="" inode="544515" device="2304" mtime="922248066" flags="0" name="/usr/share/texmf/doc/latex/mfnfss" file_size="4096" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="16877" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="0f030b63fc2a6a36bc10d153ad28e033" inode="544519" device="2304" mtime="921615656" flags="0" name="/usr/share/texmf/doc/latex/mfnfss/manifest.txt" file_size="1569" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="80f512e3225007801a0291146603b99c" inode="544516" device="2304" mtime="922248055" flags="0" name="/usr/share/texmf/doc/latex/mfnfss/oldgerm.dvi" file_size="37476" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="0e6b74c500e580e41a5f1166290dde2d" inode="544517" device="2304" mtime="922248059" flags="0" name="/usr/share/texmf/doc/latex/mfnfss/pandora.dvi" file_size="6624" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="4a58e28be6120f8d7dff1e035bfa631a" inode="544518" device="2304" mtime="921615656" flags="0" name="/usr/share/texmf/doc/latex/mfnfss/readme.txt" file_size="3245" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="" inode="544481" device="2304" mtime="936382427" flags="0" name="/usr/share/texmf/doc/latex/minitoc" file_size="4096" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="16877" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="deae48d22e8fe7815c8b07e5887307ea" inode="544484" device="2304" mtime="933707958" flags="0" name="/usr/share/texmf/doc/latex/minitoc/mini-art.tex" file_size="9647" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="a0a3d3143cae9bcb68c0d6ae120bdeab" inode="544485" device="2304" mtime="933707958" flags="0" name="/usr/share/texmf/doc/latex/minitoc/minitoc-ex.tex" file_size="10198" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="fd18f667f7f452544614eb596f714ee9" inode="544482" device="2304" mtime="933707958" flags="0" name="/usr/share/texmf/doc/latex/minitoc/minitoc.bug" file_size="4201" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="f002657f1b4e9652b462f5db7ae7ebd5" inode="544483" device="2304" mtime="936382420" flags="0" name="/usr/share/texmf/doc/latex/minitoc/minitoc.dvi" file_size="38148" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="" inode="169898" device="2304" mtime="921638065" flags="0" name="/usr/share/texmf/doc/latex/mltex" file_size="4096" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="16877" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="416386f3d82a3fb7e9204596501d5495" inode="169899" device="2304" mtime="921017997" flags="0" name="/usr/share/texmf/doc/latex/mltex/README" file_size="2514" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="817376923d46884df73c7004400d9e72" inode="169900" device="2304" mtime="921013712" flags="0" name="/usr/share/texmf/doc/latex/mltex/mltex.txt" file_size="2599" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="" inode="2702582" device="2304" mtime="934160622" flags="0" name="/usr/share/texmf/doc/latex/ms" file_size="4096" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="16877" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="8f0ee6ac4d547cf155efe43e43dfdb9b" inode="2702598" device="2304" mtime="928895777" flags="0" name="/usr/share/texmf/doc/latex/ms/count1to.bug" file_size="875" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="7dbc43e94d6a71904b6db202280ed903" inode="2702599" device="2304" mtime="934160602" flags="0" name="/usr/share/texmf/doc/latex/ms/count1to.dvi" file_size="9472" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="11f38800fc2b43bcbe4cf478bb97e298" inode="2702600" device="2304" mtime="934160598" flags="0" name="/usr/share/texmf/doc/latex/ms/eso-p-t.tex" file_size="2662" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="22f1e8abddc0b16802f43844b2aec305" inode="2702591" device="2304" mtime="934160616" flags="0" name="/usr/share/texmf/doc/latex/ms/eso-pic.dvi" file_size="4856" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="1f99296dcd8beb5cf998383c2a4996b2" inode="2702592" device="2304" mtime="928895777" flags="0" name="/usr/share/texmf/doc/latex/ms/everysel.bug" file_size="408" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="79a88d430e3f9755f7693130529b1323" inode="2702593" device="2304" mtime="934160604" flags="0" name="/usr/share/texmf/doc/latex/ms/everysel.dvi" file_size="4660" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="9aab98bad20835b8a2e6fee1715137a5" inode="2702596" device="2304" mtime="928895777" flags="0" name="/usr/share/texmf/doc/latex/ms/everyshi.bug" file_size="406" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="cf6cf2672af1c011040d98c465783134" inode="2702597" device="2304" mtime="934160606" flags="0" name="/usr/share/texmf/doc/latex/ms/everyshi.dvi" file_size="4136" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="440fc905968cacc7f9502ee62c75ff21" inode="2702587" device="2304" mtime="928895777" flags="0" name="/usr/share/texmf/doc/latex/ms/multitoc.bug" file_size="400" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="a64310d83e5547966bbe5bb4bd4a6d84" inode="2702588" device="2304" mtime="934160608" flags="0" name="/usr/share/texmf/doc/latex/ms/multitoc.dvi" file_size="9164" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="35955e36890f8c4e9285491ee7135aee" inode="2702594" device="2304" mtime="928895777" flags="0" name="/usr/share/texmf/doc/latex/ms/prelim2e.bug" file_size="406" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="46e2e87cb96219c0bb6edc66834d68b8" inode="2702595" device="2304" mtime="934160610" flags="0" name="/usr/share/texmf/doc/latex/ms/prelim2e.dvi" file_size="8372" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="c8855d982e9f13266990f9d3b0caf012" inode="2702589" device="2304" mtime="928895777" flags="0" name="/usr/share/texmf/doc/latex/ms/ragged2e.bug" file_size="547" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="e8782b1be842a47a15223971dc8204b4" inode="2702590" device="2304" mtime="934160614" flags="0" name="/usr/share/texmf/doc/latex/ms/ragged2e.dvi" file_size="26432" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="" inode="544520" device="2304" mtime="927923862" flags="0" name="/usr/share/texmf/doc/latex/natbib" file_size="4096" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="16877" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="04ecd9e832a6a2b08d336015ea54769e" inode="544523" device="2304" mtime="918686604" flags="0" name="/usr/share/texmf/doc/latex/natbib/README.1st" file_size="1577" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="1b05078677000c62b4b02d90dc8561fd" inode="544525" device="2304" mtime="919965074" flags="0" name="/usr/share/texmf/doc/latex/natbib/README.v69" file_size="15807" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="8904291625c5ed1390e006a4addb0c68" inode="544526" device="2304" mtime="924695998" flags="0" name="/usr/share/texmf/doc/latex/natbib/README.v69a" file_size="16219" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="a95c086c05ccbf7dec9a71537c775454" inode="544521" device="2304" mtime="927923858" flags="0" name="/usr/share/texmf/doc/latex/natbib/bibentry.dvi" file_size="6776" groupname="root" linkto="" rdev="257" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="143bebca9add96727518a88c7526de27" inode="544522" device="2304" mtime="927923855" flags="0" name="/usr/share/texmf/doc/latex/natbib/natbib.dvi" file_size="71964" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="30c0b4be2201cb199ce7bca8c1c6057a" inode="544524" device="2304" mtime="927923856" flags="0" name="/usr/share/texmf/doc/latex/natbib/natnotes.dvi" file_size="13296" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="" inode="545987" device="2304" mtime="949316404" flags="0" name="/usr/share/texmf/doc/latex/nomencl" file_size="4096" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="16877" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="3aa8ab1b376f1c8dc24280dfb6b7b4c7" inode="545988" device="2304" mtime="936903600" flags="0" name="/usr/share/texmf/doc/latex/nomencl/README" file_size="2668" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="9e2f80a2f1f0740a19be962bb732877c" inode="545990" device="2304" mtime="926693942" flags="0" name="/usr/share/texmf/doc/latex/nomencl/license.txt" file_size="644" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="639f495c70f0bde8f2b7bd597ee14081" inode="545989" device="2304" mtime="949316401" flags="0" name="/usr/share/texmf/doc/latex/nomencl/nomencl.dvi" file_size="30644" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="" inode="578552" device="2304" mtime="921540233" flags="0" name="/usr/share/texmf/doc/latex/ntgclass" file_size="4096" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="16877" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="1de2a65aff0be174c19f0c04b8bdd46a" inode="578566" device="2304" mtime="921538927" flags="0" name="/usr/share/texmf/doc/latex/ntgclass/artdoc.dvi" file_size="38332" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="1696cf6592141cfb4215ba458a134fbd" inode="578683" device="2304" mtime="921469500" flags="0" name="/usr/share/texmf/doc/latex/ntgclass/brief.tex" file_size="8333" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="0bf8e368bb450bb0241e6f6afea9d08b" inode="578554" device="2304" mtime="921538929" flags="0" name="/usr/share/texmf/doc/latex/ntgclass/briefdoc.dvi" file_size="15276" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="d7b1f7d4bfe8b598eedf92c74816d314" inode="578568" device="2304" mtime="921538931" flags="0" name="/usr/share/texmf/doc/latex/ntgclass/ntgclass.dvi" file_size="8320" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="275cac50a7271eb577e86741cdc27826" inode="578553" device="2304" mtime="921538938" flags="0" name="/usr/share/texmf/doc/latex/ntgclass/ntgstyle.dvi" file_size="7348" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="9adbfa15cacc276fe1523dd4a54e55f5" inode="578567" device="2304" mtime="921538934" flags="0" name="/usr/share/texmf/doc/latex/ntgclass/rapdoc.dvi" file_size="46604" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="" inode="545991" device="2304" mtime="924216994" flags="0" name="/usr/share/texmf/doc/latex/oberdiek" file_size="4096" groupname="root" linkto="" rdev="5724" verifyflags="-1" file_mode="16877" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="eb52fa760cdb1f44c08c7f1ffd9eb524" inode="545994" device="2304" mtime="924033600" flags="0" name="/usr/share/texmf/doc/latex/oberdiek/alphalph.pdf" file_size="365369" groupname="root" linkto="" rdev="-24049" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="756195c45af5c08a2e8e6ac58f0da0a4" inode="545992" device="2304" mtime="924033600" flags="0" name="/usr/share/texmf/doc/latex/oberdiek/hypbmsec.pdf" file_size="331597" groupname="root" linkto="" rdev="3587" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="99fd5813e74b928eedb8125031fefd8d" inode="545995" device="2304" mtime="924033600" flags="0" name="/usr/share/texmf/doc/latex/oberdiek/pagesel.pdf" file_size="344174" groupname="root" linkto="" rdev="21350" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="73694f6b1df410d8ba4768cad03f772a" inode="545993" device="2304" mtime="924033600" flags="0" name="/usr/share/texmf/doc/latex/oberdiek/twoopt.pdf" file_size="288035" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="" inode="855297" device="2304" mtime="934160713" flags="0" name="/usr/share/texmf/doc/latex/overpic" file_size="4096" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="16877" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="582bd401e68649f419ab4fcba6aa0130" inode="856706" device="2304" mtime="880215332" flags="0" name="/usr/share/texmf/doc/latex/overpic/README" file_size="970" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="0cd7156fe6e8db4820f1f3f1b68f4c73" inode="856708" device="2304" mtime="880210822" flags="0" name="/usr/share/texmf/doc/latex/overpic/opic-abs.tex" file_size="2260" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="1b28be04c0d01214dc85b18a826cead1" inode="856707" device="2304" mtime="880547236" flags="0" name="/usr/share/texmf/doc/latex/overpic/opic-rel.tex" file_size="2310" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="" inode="544548" device="2304" mtime="926937259" flags="0" name="/usr/share/texmf/doc/latex/platex" file_size="4096" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="16877" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="93e7a17b54652ecdda6056e8866afecd" inode="544552" device="2304" mtime="926913720" flags="0" name="/usr/share/texmf/doc/latex/platex/00readme" file_size="8895" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="efd5960ef4924416b6c639b66e951579" inode="544550" device="2304" mtime="893609272" flags="0" name="/usr/share/texmf/doc/latex/platex/conowego.txt" file_size="1235" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="239acfb8247c38c35cf71d3ab3951d45" inode="544549" device="2304" mtime="879014198" flags="0" name="/usr/share/texmf/doc/latex/platex/czytaj.txt" file_size="6753" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="8137b8744e80d66acbdefa2cc0043fd9" inode="544551" device="2304" mtime="893107966" flags="0" name="/usr/share/texmf/doc/latex/platex/readme.txt" file_size="904" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="" inode="1036576" device="2304" mtime="918342029" flags="0" name="/usr/share/texmf/doc/latex/program" file_size="4096" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="16877" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="f9c01270af8ac41f336a0b227495d9ed" inode="1036578" device="2304" mtime="799520520" flags="0" name="/usr/share/texmf/doc/latex/program/program-demo.tex" file_size="9312" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="18a6e0eaf2b8284d8fe523154996a20c" inode="1036577" device="2304" mtime="781795680" flags="0" name="/usr/share/texmf/doc/latex/program/program.txt" file_size="1105" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="" inode="544553" device="2304" mtime="910159049" flags="0" name="/usr/share/texmf/doc/latex/psfrag" file_size="4096" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="16877" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="231395630434a665f3b39d7716ad3338" inode="544554" device="2304" mtime="910159015" flags="0" name="/usr/share/texmf/doc/latex/psfrag/pfgguide.ps" file_size="287067" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="7df2ab4e05f97c701e1fe6797021b109" inode="544555" device="2304" mtime="849851736" flags="0" name="/usr/share/texmf/doc/latex/psfrag/readme.sem" file_size="1107" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="3c50f7c124b425dc725ee44b4fdd77b0" inode="544556" device="2304" mtime="849070304" flags="0" name="/usr/share/texmf/doc/latex/psfrag/readme.xfg" file_size="1308" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="" inode="1085630" device="2304" mtime="839200389" flags="0" name="/usr/share/texmf/doc/latex/pslatex" file_size="4096" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="16877" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="26f360defb40a5a51da264e403da6281" inode="1085631" device="2304" mtime="838235088" flags="0" name="/usr/share/texmf/doc/latex/pslatex/00readme.txt" file_size="2861" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="" inode="544531" device="2304" mtime="920341015" flags="0" name="/usr/share/texmf/doc/latex/rotating" file_size="4096" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="16877" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="357128723bc926129159de9b5b9bd3fa" inode="544533" device="2304" mtime="789276655" flags="0" name="/usr/share/texmf/doc/latex/rotating/Makefile" file_size="264" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="2e98e0f8b1f9293c7c1cc19cf0b7266a" inode="544539" device="2304" mtime="826603200" flags="0" name="/usr/share/texmf/doc/latex/rotating/cat.eps" file_size="15737" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="333524d0473993a37c664882979f0502" inode="544540" device="2304" mtime="796870080" flags="0" name="/usr/share/texmf/doc/latex/rotating/catalog" file_size="334" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="a336d52ca1e5fdecf8288e852d562fba" inode="544536" device="2304" mtime="920341010" flags="0" name="/usr/share/texmf/doc/latex/rotating/examples.dvi" file_size="39176" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="118efe438996b93d6ba61f7fc97feca2" inode="544534" device="2304" mtime="890177378" flags="0" name="/usr/share/texmf/doc/latex/rotating/examples.ps" file_size="326002" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="90fbe9b75451429a3e9d4f44cfeadfa5" inode="544537" device="2304" mtime="920000040" flags="0" name="/usr/share/texmf/doc/latex/rotating/examples.tex" file_size="14542" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="7264f56b2edcc17f9dbd018acfc83347" inode="544535" device="2304" mtime="789498420" flags="0" name="/usr/share/texmf/doc/latex/rotating/manifest" file_size="158" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="cbc2369d049535af7dc08fc0fc331e2a" inode="544538" device="2304" mtime="789498420" flags="0" name="/usr/share/texmf/doc/latex/rotating/readme" file_size="348" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="5d441909f8d4e035bccd284bf915835a" inode="544532" device="2304" mtime="920341005" flags="0" name="/usr/share/texmf/doc/latex/rotating/rotating.dvi" file_size="16828" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="" inode="544541" device="2304" mtime="890590935" flags="0" name="/usr/share/texmf/doc/latex/rotfloat" file_size="4096" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="16877" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="a413ec07a0bc703211c2ae324df80467" inode="544542" device="2304" mtime="890177264" flags="0" name="/usr/share/texmf/doc/latex/rotfloat/examples.ps" file_size="76916" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="dd4284e2f4b52f4d3acfd9a5d69e8e4f" inode="544543" device="2304" mtime="796663560" flags="0" name="/usr/share/texmf/doc/latex/rotfloat/examples.tex" file_size="3055" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="364bd67f77ed69622540f92243f48e66" inode="544544" device="2304" mtime="827723874" flags="0" name="/usr/share/texmf/doc/latex/rotfloat/rotfloat.dvi" file_size="8796" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="" inode="186271" device="2304" mtime="949316512" flags="0" name="/usr/share/texmf/doc/latex/scale" file_size="4096" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="16877" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="c7d002428613633d4e0b93e0242352c1" inode="186272" device="2304" mtime="934552920" flags="0" name="/usr/share/texmf/doc/latex/scale/README" file_size="894" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="149e570ff75482a6b134ddc48b362f12" inode="186273" device="2304" mtime="949316509" flags="0" name="/usr/share/texmf/doc/latex/scale/scale.dvi" file_size="7172" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="" inode="544425" device="2304" mtime="928452951" flags="0" name="/usr/share/texmf/doc/latex/seminar" file_size="4096" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="16877" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="043e007ee476a27f9a0173cb1ee2a22c" inode="544430" device="2304" mtime="909975868" flags="0" name="/usr/share/texmf/doc/latex/seminar/Seminar-Bugs.html" file_size="25534" groupname="root" linkto="" rdev="1802" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="3ddff8f5863f02cf71ec9ebc769fc65b" inode="544429" device="2304" mtime="870818336" flags="0" name="/usr/share/texmf/doc/latex/seminar/Seminar-FAQ.css" file_size="344" groupname="root" linkto="" rdev="18938" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="54457e5477e1812af34f6eba5c77cf52" inode="544431" device="2304" mtime="871003744" flags="0" name="/usr/share/texmf/doc/latex/seminar/Seminar-FAQ.html" file_size="58379" groupname="root" linkto="" rdev="14594" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="dc5456fa6722768542a7fce18e9d1b17" inode="544426" device="2304" mtime="928425240" flags="0" name="/usr/share/texmf/doc/latex/seminar/sem-read.me" file_size="11890" groupname="root" linkto="" rdev="20276" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="2dcb8e57dd32cd6152e215209d96f0d9" inode="544432" device="2304" mtime="885616453" flags="0" name="/usr/share/texmf/doc/latex/seminar/sem-user.dvi" file_size="102896" groupname="root" linkto="" rdev="-32626" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="60768e3f31c2a1285f6c22c1de75dc8f" inode="544427" device="2304" mtime="733719600" flags="0" name="/usr/share/texmf/doc/latex/seminar/semsamp1.tex" file_size="2282" groupname="root" linkto="" rdev="1852" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="3e9c33e15c19f17eae83ed9e7f8c38ee" inode="544428" device="2304" mtime="733719600" flags="0" name="/usr/share/texmf/doc/latex/seminar/semsamp2.tex" file_size="11483" groupname="root" linkto="" rdev="1853" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="" inode="544545" device="2304" mtime="949316598" flags="0" name="/usr/share/texmf/doc/latex/showlabels" file_size="4096" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="16877" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="6c3f5ad65084fbe6cc7bf2829974cb64" inode="544546" device="2304" mtime="832008120" flags="0" name="/usr/share/texmf/doc/latex/showlabels/readme" file_size="1641" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="a170422857b09c95e5efa67c8f1d70da" inode="544547" device="2304" mtime="949316580" flags="0" name="/usr/share/texmf/doc/latex/showlabels/showlabels.dvi" file_size="17616" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="" inode="544438" device="2304" mtime="926897653" flags="0" name="/usr/share/texmf/doc/latex/sidecap" file_size="4096" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="16877" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="4445cde5a062ff604c14e84f43ba3882" inode="544439" device="2304" mtime="910307930" flags="0" name="/usr/share/texmf/doc/latex/sidecap/README" file_size="462" groupname="root" linkto="" rdev="23044" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="baed747df741dc1b0d5a8a4ef72141f5" inode="544440" device="2304" mtime="910308296" flags="0" name="/usr/share/texmf/doc/latex/sidecap/sc2demo.tex" file_size="2911" groupname="root" linkto="" rdev="2694" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="a109e5e6025d8d25591f8bd1c8663d84" inode="544442" device="2304" mtime="870012808" flags="0" name="/usr/share/texmf/doc/latex/sidecap/scdemo.tex" file_size="2540" groupname="root" linkto="" rdev="2357" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="b5267daeba362abd8a91f5cc1a7936d8" inode="544441" device="2304" mtime="926897651" flags="0" name="/usr/share/texmf/doc/latex/sidecap/sidecap.dvi" file_size="11628" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="" inode="545996" device="2304" mtime="949317996" flags="0" name="/usr/share/texmf/doc/latex/styles" file_size="4096" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="16877" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="71ef7b0c10523f4a870592ec670fc06a" inode="546020" device="2304" mtime="923754576" flags="0" name="/usr/share/texmf/doc/latex/styles/SIunits.dvi" file_size="134212" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="7e9cf445f47d53b4ce2f92cdf7e71efd" inode="546016" device="2304" mtime="838817479" flags="0" name="/usr/share/texmf/doc/latex/styles/a4.dvi" file_size="22552" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="9a957d5c4539abdeb4cf387a36aa1c25" inode="546010" device="2304" mtime="835770508" flags="0" name="/usr/share/texmf/doc/latex/styles/algorithms.dvi" file_size="22576" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="e144184f0f6856a028cb61a7b9aa7bfd" inode="546018" device="2304" mtime="900085432" flags="0" name="/usr/share/texmf/doc/latex/styles/anysize.dvi" file_size="4072" groupname="root" linkto="" rdev="12382" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="b96f5413ed8673b8185e5d3a4d435fa5" inode="546034" device="2304" mtime="921757189" flags="0" name="/usr/share/texmf/doc/latex/styles/bbm.dvi" file_size="11036" groupname="root" linkto="" rdev="17490" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="51a8e2736936e6b2ca64f537aba6babc" inode="546001" device="2304" mtime="837997979" flags="0" name="/usr/share/texmf/doc/latex/styles/bbold.dvi" file_size="7996" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="99accee70b84c409b55d3f5d269c0823" inode="546032" device="2304" mtime="835751324" flags="0" name="/usr/share/texmf/doc/latex/styles/beton.dvi" file_size="16272" groupname="root" linkto="" rdev="17495" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="c67dfb4b62b66b38de20848cd5ccaeb3" inode="546043" device="2304" mtime="920936366" flags="0" name="/usr/share/texmf/doc/latex/styles/caption.dvi" file_size="18840" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="c1b8ec5a8a45312a1247b348253678bf" inode="546009" device="2304" mtime="906689358" flags="0" name="/usr/share/texmf/doc/latex/styles/chappg.txt" file_size="2245" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="32b6ed4d74f8ab80916b2e8e750f5c7a" inode="546021" device="2304" mtime="891380208" flags="0" name="/usr/share/texmf/doc/latex/styles/comm_test_l.tex" file_size="1341" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="da4ed9147ac8ca8eddd5c8bfce9dcbc9" inode="546000" device="2304" mtime="922247396" flags="0" name="/usr/share/texmf/doc/latex/styles/concmath.dvi" file_size="34160" groupname="root" linkto="" rdev="603" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="3391a53996f350b073c65511bfc32b62" inode="546041" device="2304" mtime="949315485" flags="0" name="/usr/share/texmf/doc/latex/styles/crop.dvi" file_size="35996" groupname="root" linkto="" rdev="28686" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="97db0dafcd7f4f762df20dc3bc9f93bb" inode="546033" device="2304" mtime="918961135" flags="0" name="/usr/share/texmf/doc/latex/styles/curves.dvi" file_size="88308" groupname="root" linkto="" rdev="17503" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="cb59358a0e4f3ee3fe4d7f69ecefc84e" inode="545997" device="2304" mtime="949316033" flags="0" name="/usr/share/texmf/doc/latex/styles/endfloat.dvi" file_size="112604" groupname="root" linkto="" rdev="28042" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="4cba54b8b19fef675baa9985979e8780" inode="546035" device="2304" mtime="798831595" flags="0" name="/usr/share/texmf/doc/latex/styles/euler.dvi" file_size="39744" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="d432a35b1975d6e731efa4c14d2578f1" inode="546029" device="2304" mtime="915693659" flags="0" name="/usr/share/texmf/doc/latex/styles/examdoc.dvi" file_size="72016" groupname="root" linkto="" rdev="17491" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="1b2b823d185591391c757eccda383969" inode="546007" device="2304" mtime="928148454" flags="0" name="/usr/share/texmf/doc/latex/styles/float.dvi" file_size="43264" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="40a4ec21c9ba1cbe3bc87618058fbb6b" inode="546025" device="2304" mtime="921116122" flags="0" name="/usr/share/texmf/doc/latex/styles/fltpage.dvi" file_size="28192" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="e543ac3b8e20f92988d722e0fe5d24d5" inode="546037" device="2304" mtime="921116297" flags="0" name="/usr/share/texmf/doc/latex/styles/footbib.dvi" file_size="31096" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="0c942cb7491b81b3b5a423a47fdaab08" inode="546003" device="2304" mtime="816039240" flags="0" name="/usr/share/texmf/doc/latex/styles/footnpag-user.dvi" file_size="4032" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="a62d875a1aa3ea76ba3ebb4f60259f10" inode="546004" device="2304" mtime="921121903" flags="0" name="/usr/share/texmf/doc/latex/styles/hyphenat.dvi" file_size="43716" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="3403ab7cfe5a721cb160925637ce7001" inode="546027" device="2304" mtime="757888020" flags="0" name="/usr/share/texmf/doc/latex/styles/index.doc" file_size="49767" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="23def09b5594a5fc531092e3f0b62572" inode="546022" device="2304" mtime="922843016" flags="0" name="/usr/share/texmf/doc/latex/styles/labels.dvi" file_size="50524" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="2dea53584f9a888dd63c3911fc0a5bc3" inode="546028" device="2304" mtime="928068735" flags="0" name="/usr/share/texmf/doc/latex/styles/lastpage.dvi" file_size="13492" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="30cf09bf0905db549b07369a1eb533ad" inode="546014" device="2304" mtime="920942814" flags="0" name="/usr/share/texmf/doc/latex/styles/layman.dvi" file_size="133580" groupname="root" linkto="" rdev="27404" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="4efe8f6577317592518e6cdead2b5bd5" inode="546002" device="2304" mtime="936381291" flags="0" name="/usr/share/texmf/doc/latex/styles/listings.dvi" file_size="155656" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="41dc2113c8079e6995d67af0eb766857" inode="546024" device="2304" mtime="885477720" flags="0" name="/usr/share/texmf/doc/latex/styles/lucidabr.txt" file_size="8299" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="8c18a5fe656f5df5105cb5ba56240ff8" inode="546015" device="2304" mtime="905115659" flags="0" name="/usr/share/texmf/doc/latex/styles/mathcomp.dvi" file_size="6908" groupname="root" linkto="" rdev="513" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="67d22ed3c6503f203b7ac6e9261a8f47" inode="546040" device="2304" mtime="923754084" flags="0" name="/usr/share/texmf/doc/latex/styles/mflogo.dvi" file_size="16276" groupname="root" linkto="" rdev="28685" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="46bb28f5e20af70b37c6ee2c62a05267" inode="546023" device="2304" mtime="883154395" flags="0" name="/usr/share/texmf/doc/latex/styles/moreverb.dvi" file_size="24280" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="8c275ac83cc65bbdcae930bc9cf87007" inode="546005" device="2304" mtime="926182878" flags="0" name="/usr/share/texmf/doc/latex/styles/paralist.dvi" file_size="18304" groupname="root" linkto="" rdev="265" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="81cee27a8e7d1fca76e0c6a2a1562cfd" inode="546036" device="2304" mtime="803867834" flags="0" name="/usr/share/texmf/doc/latex/styles/picinpar.dvi" file_size="14384" groupname="root" linkto="" rdev="846" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="feb39fdddbd768dbb82b704378192548" inode="546013" device="2304" mtime="801940320" flags="0" name="/usr/share/texmf/doc/latex/styles/picins.txt" file_size="4282" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="8e8ed0c1db06f24d8fbf672364cb3639" inode="546039" device="2304" mtime="906689385" flags="0" name="/usr/share/texmf/doc/latex/styles/placeins.txt" file_size="1523" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="fc446b036f19087d759cabc707c9852b" inode="546038" device="2304" mtime="905117709" flags="0" name="/usr/share/texmf/doc/latex/styles/prettyref.dvi" file_size="5800" groupname="root" linkto="" rdev="27030" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="daa516f1ecd0e0541c7a4734dd8cb7a4" inode="546042" device="2304" mtime="845866800" flags="0" name="/usr/share/texmf/doc/latex/styles/readme.fp" file_size="16680" groupname="root" linkto="" rdev="27462" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="212216b1bdf3c17f757c7208fd9de484" inode="546031" device="2304" mtime="924218261" flags="0" name="/usr/share/texmf/doc/latex/styles/sectsty.dvi" file_size="48804" groupname="root" linkto="" rdev="17492" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="f8479d69e1d4e5583adb36d224cc10b6" inode="546006" device="2304" mtime="778129200" flags="0" name="/usr/share/texmf/doc/latex/styles/slashbox.tex" file_size="1961" groupname="root" linkto="" rdev="851" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="8d0e48868e664db4919553dd66335105" inode="546008" device="2304" mtime="949316654" flags="0" name="/usr/share/texmf/doc/latex/styles/soul.dvi" file_size="84164" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="7fb73fb6f7127d1c189206ccb385db31" inode="546012" device="2304" mtime="921184568" flags="0" name="/usr/share/texmf/doc/latex/styles/stdclsdv.dvi" file_size="14764" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="1bee1493407c0d1aefc90c7219b6f1f9" inode="545999" device="2304" mtime="934154983" flags="0" name="/usr/share/texmf/doc/latex/styles/stmaryrd.dvi" file_size="8324" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="891733390d760f37d78c2d36351406e2" inode="546030" device="2304" mtime="826487489" flags="0" name="/usr/share/texmf/doc/latex/styles/subfigure.dvi" file_size="42692" groupname="root" linkto="" rdev="17496" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="210426c03ef7fa8f3036b4c623747967" inode="546019" device="2304" mtime="949317322" flags="0" name="/usr/share/texmf/doc/latex/styles/textfit.dvi" file_size="8916" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="bc8149c4259b0fdec9e882749b55b2f2" inode="546017" device="2304" mtime="936381796" flags="0" name="/usr/share/texmf/doc/latex/styles/titlesec.dvi" file_size="81700" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="d72760a8f331f62fec999b1ace28b034" inode="546011" device="2304" mtime="949317993" flags="0" name="/usr/share/texmf/doc/latex/styles/tocloft.dvi" file_size="118148" groupname="root" linkto="" rdev="28110" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="4e5232deee957de815b307b253261ef0" inode="546026" device="2304" mtime="839481919" flags="0" name="/usr/share/texmf/doc/latex/styles/treedoc.dvi" file_size="3592" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="6d356dd32b152e95be14ef915f272fa3" inode="545998" device="2304" mtime="853888980" flags="0" name="/usr/share/texmf/doc/latex/styles/type1cm.txt" file_size="5591" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="" inode="20959" device="2304" mtime="949317063" flags="0" name="/usr/share/texmf/doc/latex/supertab" file_size="4096" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="16877" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="74e5b470ff9cf8b5b36c234b3ae9d613" inode="20961" device="2304" mtime="934074420" flags="0" name="/usr/share/texmf/doc/latex/supertab/CATALOG" file_size="851" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="c2ddcc64c2df939258006ab6452aeccf" inode="20963" device="2304" mtime="934074360" flags="0" name="/usr/share/texmf/doc/latex/supertab/MANIFEST" file_size="392" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="8cb781ef264e7eafde399e958dd886ce" inode="20960" device="2304" mtime="934074360" flags="0" name="/usr/share/texmf/doc/latex/supertab/README" file_size="951" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="df156c1a2045e0a9139322d1aab00246" inode="20962" device="2304" mtime="949317053" flags="0" name="/usr/share/texmf/doc/latex/supertab/supertabular.dvi" file_size="61004" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="" inode="2982428" device="2304" mtime="791174088" flags="0" name="/usr/share/texmf/doc/latex/textmerg" file_size="4096" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="16877" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="78e62f3c0d2589b2cc6a862d982ee6b8" inode="2982474" device="2304" mtime="789154779" flags="0" name="/usr/share/texmf/doc/latex/textmerg/results.dat" file_size="112" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="22a6f982650746e0733ac41cf724bce7" inode="2982432" device="2304" mtime="789154780" flags="0" name="/usr/share/texmf/doc/latex/textmerg/silly.dat" file_size="74" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="b4716c570070a70b4c43c45de7f64f90" inode="2982475" device="2304" mtime="789156737" flags="0" name="/usr/share/texmf/doc/latex/textmerg/textmerg.dvi" file_size="36048" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="729de1d153fe4b4113ab370f4bd94c8b" inode="2982429" device="2304" mtime="789154776" flags="0" name="/usr/share/texmf/doc/latex/textmerg/tmexamp1.tex" file_size="622" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="ec2aeeb02f2845229836b882d9b9f70e" inode="2982430" device="2304" mtime="789154777" flags="0" name="/usr/share/texmf/doc/latex/textmerg/tmexamp2.tex" file_size="631" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="ba29903f92285b23eed70d9e15fb6c92" inode="2982431" device="2304" mtime="789154778" flags="0" name="/usr/share/texmf/doc/latex/textmerg/tmexampp.tex" file_size="599" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="" inode="544446" device="2304" mtime="949317959" flags="0" name="/usr/share/texmf/doc/latex/tocbibind" file_size="4096" groupname="root" linkto="" rdev="716" verifyflags="-1" file_mode="16877" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="06558f6d2db2df4dd8496abf710b1542" inode="544447" device="2304" mtime="938453580" flags="0" name="/usr/share/texmf/doc/latex/tocbibind/README" file_size="943" groupname="root" linkto="" rdev="721" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="44d1aee3c8f6df7580d3e8b245baef2b" inode="544448" device="2304" mtime="949317954" flags="0" name="/usr/share/texmf/doc/latex/tocbibind/tocbibind.dvi" file_size="40668" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="" inode="186274" device="2304" mtime="984184057" flags="0" name="/usr/share/texmf/doc/latex/tools" file_size="4096" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="16877" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="147f859081aa4add31c29cb6351a2868" inode="186290" device="2304" mtime="984180411" flags="0" name="/usr/share/texmf/doc/latex/tools/afterpage.dvi" file_size="15468" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="c45747556e936d59847bdb6ecc330ee1" inode="186285" device="2304" mtime="984180415" flags="0" name="/usr/share/texmf/doc/latex/tools/array.dvi" file_size="142240" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="1bc17a28e3df967fc44eef5c70a4611e" inode="186284" device="2304" mtime="984180436" flags="0" name="/usr/share/texmf/doc/latex/tools/bm.dvi" file_size="61060" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="86e87e9ed93d9fccd70a6a96a5d19873" inode="186283" device="2304" mtime="984180437" flags="0" name="/usr/share/texmf/doc/latex/tools/calc.dvi" file_size="45716" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="75e7ba522dbaa8c2d8d23998b2fd40a9" inode="186300" device="2304" mtime="967082340" flags="0" name="/usr/share/texmf/doc/latex/tools/changes.txt" file_size="30418" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="be48c307b34395e6dc67d12e3feb6f27" inode="186282" device="2304" mtime="984180416" flags="0" name="/usr/share/texmf/doc/latex/tools/dcolumn.dvi" file_size="13972" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="6149e819ec7a64ba29dd80c171e54470" inode="186286" device="2304" mtime="984180416" flags="0" name="/usr/share/texmf/doc/latex/tools/delarray.dvi" file_size="7236" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="8351732ea55ec0070fc55107160d4484" inode="186276" device="2304" mtime="984180417" flags="0" name="/usr/share/texmf/doc/latex/tools/enumerate.dvi" file_size="10472" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="28207bd169a6f534e23240204821ef93" inode="186277" device="2304" mtime="984180417" flags="0" name="/usr/share/texmf/doc/latex/tools/fileerr.dvi" file_size="5608" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="985ed0f8abf6aefe832bd99786207967" inode="186288" device="2304" mtime="984180418" flags="0" name="/usr/share/texmf/doc/latex/tools/fontsmpl.dvi" file_size="12104" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="1340574caec1d17ba6f4df932b655ea4" inode="186299" device="2304" mtime="984180419" flags="0" name="/usr/share/texmf/doc/latex/tools/ftnright.dvi" file_size="68696" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="64e4faef26327e1f474dee21138818da" inode="186301" device="2304" mtime="984180420" flags="0" name="/usr/share/texmf/doc/latex/tools/hhline.dvi" file_size="15060" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="49dc90c2a2608f28f6c0ccbeef1dcc5e" inode="186298" device="2304" mtime="984180420" flags="0" name="/usr/share/texmf/doc/latex/tools/indentfirst.dvi" file_size="1680" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="370a22bdd7ce805ebd8ec2f55dea68ed" inode="186294" device="2304" mtime="984180421" flags="0" name="/usr/share/texmf/doc/latex/tools/layout.dvi" file_size="36308" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="729d13dc9d22d97a66fc06877ec1b13a" inode="186296" device="2304" mtime="984180439" flags="0" name="/usr/share/texmf/doc/latex/tools/longtable.dvi" file_size="102096" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="4c6c72c126ab39fc903b7491bc1b70ca" inode="186292" device="2304" mtime="965669940" flags="0" name="/usr/share/texmf/doc/latex/tools/manifest.txt" file_size="2939" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="8bfe7b77f945044ede651c8264f4f0e4" inode="186291" device="2304" mtime="984180425" flags="0" name="/usr/share/texmf/doc/latex/tools/multicol.dvi" file_size="166572" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="79f50cb60a65f05f5147ff6e1116c02a" inode="186275" device="2304" mtime="984180425" flags="0" name="/usr/share/texmf/doc/latex/tools/rawfonts.dvi" file_size="10464" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="9b72a003c8cdadf0bf3534cdaa109591" inode="186287" device="2304" mtime="965669940" flags="0" name="/usr/share/texmf/doc/latex/tools/readme.txt" file_size="3839" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="05601fc2ca8352363ca0353c4a443022" inode="186281" device="2304" mtime="984180426" flags="0" name="/usr/share/texmf/doc/latex/tools/showkeys.dvi" file_size="26436" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="01edac1b2021fdac9b556c0cdb7a467a" inode="186278" device="2304" mtime="984180427" flags="0" name="/usr/share/texmf/doc/latex/tools/somedefs.dvi" file_size="6356" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="81067de23cb7b225f671762207ae0c7e" inode="186297" device="2304" mtime="984180428" flags="0" name="/usr/share/texmf/doc/latex/tools/tabularx.dvi" file_size="35300" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="7231422b9cedc31cf9772f14858f045e" inode="186295" device="2304" mtime="984180430" flags="0" name="/usr/share/texmf/doc/latex/tools/theorem.dvi" file_size="51844" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="230962254d30e9d2e7feb176a1a38f52" inode="186280" device="2304" mtime="984180432" flags="0" name="/usr/share/texmf/doc/latex/tools/varioref.dvi" file_size="83980" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="85d3dc9821acd4dc8267a574ce161ce1" inode="186279" device="2304" mtime="984180433" flags="0" name="/usr/share/texmf/doc/latex/tools/verbatim.dvi" file_size="66388" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="910bef8fd297889a6c7237115fff4302" inode="186293" device="2304" mtime="984180434" flags="0" name="/usr/share/texmf/doc/latex/tools/xr.dvi" file_size="5224" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="96ee80a3d16b6869748d8cfbe18d8898" inode="186289" device="2304" mtime="984180434" flags="0" name="/usr/share/texmf/doc/latex/tools/xspace.dvi" file_size="4084" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="" inode="447907" device="2304" mtime="920936862" flags="0" name="/usr/share/texmf/doc/latex/units" file_size="4096" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="16877" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="d514046e3666f56011d479391105435f" inode="447908" device="2304" mtime="902286000" flags="0" name="/usr/share/texmf/doc/latex/units/README" file_size="1375" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="e35805af054de8e7a933d0dda3c08d71" inode="447909" device="2304" mtime="920936780" flags="0" name="/usr/share/texmf/doc/latex/units/units.dvi" file_size="26280" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="" inode="709532" device="2304" mtime="926897113" flags="0" name="/usr/share/texmf/doc/latex/wasysym" file_size="4096" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="16877" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="6c7a94a65f4d2c60f0891a9c9f724537" inode="709533" device="2304" mtime="782101159" flags="0" name="/usr/share/texmf/doc/latex/wasysym/wasydoc.dvi" file_size="18568" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="b1e534cbdd1d6ca28b01216576bc94db" inode="709534" device="2304" mtime="926897094" flags="0" name="/usr/share/texmf/doc/latex/wasysym/wasysym.dvi" file_size="19936" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="" inode="20199" device="2304" mtime="949171240" flags="0" name="/usr/share/texmf/doc/latex/xtab" file_size="4096" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="16877" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="3e27e11051884d3f612373b62acd0d3a" inode="20957" device="2304" mtime="920001600" flags="0" name="/usr/share/texmf/doc/latex/xtab/README" file_size="721" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="f2c5a7f94f5291a79643d874629dff23" inode="20958" device="2304" mtime="949171240" flags="0" name="/usr/share/texmf/doc/latex/xtab/xtab.dvi" file_size="111676" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="" inode="660484" device="2304" mtime="926897032" flags="0" name="/usr/share/texmf/doc/latex/yfonts" file_size="4096" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="16877" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="3f322dbe85e2a9111ea9de03cf83149c" inode="660485" device="2304" mtime="908137062" flags="0" name="/usr/share/texmf/doc/latex/yfonts/frktest.tex" file_size="2907" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="677537114d96e97c1798c35ce0ae5497" inode="660488" device="2304" mtime="926523788" flags="0" name="/usr/share/texmf/doc/latex/yfonts/liesmich" file_size="2881" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="12b0e47fd8557f16751b5f21958c2412" inode="660486" device="2304" mtime="926523766" flags="0" name="/usr/share/texmf/doc/latex/yfonts/readme" file_size="4495" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="767c608a35c18122840439332a42832f" inode="660487" device="2304" mtime="926897028" flags="0" name="/usr/share/texmf/doc/latex/yfonts/yfonts.dvi" file_size="30776" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="" inode="3783714" device="2304" mtime="984184073" flags="0" name="/usr/share/texmf/doc/makeindex" file_size="4096" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="16877" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="94fdf6315b56ddd0606a293a2a7c18cf" inode="3783716" device="2304" mtime="782099609" flags="0" name="/usr/share/texmf/doc/makeindex/ind.dvi" file_size="84932" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="7d859c3838585801c1e27b83b4190e13" inode="3783715" device="2304" mtime="782099594" flags="0" name="/usr/share/texmf/doc/makeindex/makeindex.dvi" file_size="21952" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="" inode="3780108" device="2304" mtime="923171879" flags="0" name="/usr/share/texmf/doc/metapost" file_size="4096" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="16877" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="" inode="3374581" device="2304" mtime="949167629" flags="0" name="/usr/share/texmf/doc/metapost/base" file_size="4096" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="16877" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="6c3fd4a7b0de205c342aea3cfe836763" inode="3374917" device="2304" mtime="852947962" flags="0" name="/usr/share/texmf/doc/metapost/base/INDEX" file_size="882" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="72662943ffeb14d3a7e1c5efe560dcc4" inode="3374928" device="2304" mtime="797011462" flags="0" name="/usr/share/texmf/doc/metapost/base/agepop91.d" file_size="935" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="29a3f20227cdefdec533331fcf5065a2" inode="3374918" device="2304" mtime="797011462" flags="0" name="/usr/share/texmf/doc/metapost/base/agepopm.d" file_size="753" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="f1182e4d7f8e374444be7421f53db11b" inode="3374922" device="2304" mtime="838836724" flags="0" name="/usr/share/texmf/doc/metapost/base/config.old" file_size="10" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="728a506e27c890c2ad8c38df2d38c051" inode="3374920" device="2304" mtime="797011462" flags="0" name="/usr/share/texmf/doc/metapost/base/countries.d" file_size="958" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="0355bcc5378d2b902d601698effd55a2" inode="3374916" device="2304" mtime="704166064" flags="0" name="/usr/share/texmf/doc/metapost/base/demo.ms" file_size="2404" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="b43eb63a97229edfc981809844d42851" inode="3374923" device="2304" mtime="797011462" flags="0" name="/usr/share/texmf/doc/metapost/base/energy.d" file_size="2296" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="7fd65e861f305db44e882ffadb7a2297" inode="3374925" device="2304" mtime="797195053" flags="0" name="/usr/share/texmf/doc/metapost/base/figs.1" file_size="6099" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="7253f9f25f7fa57d87770722f4b01802" inode="3374921" device="2304" mtime="735116515" flags="0" name="/usr/share/texmf/doc/metapost/base/figs.mp" file_size="406" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="0cc7375d49c88bf1ebd2f83ff0eba6f0" inode="3374944" device="2304" mtime="838610380" flags="0" name="/usr/share/texmf/doc/metapost/base/grdemo.ms" file_size="3056" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="512ce8676655258145c6c808d622eb40" inode="3374929" device="2304" mtime="797011462" flags="0" name="/usr/share/texmf/doc/metapost/base/lead.d" file_size="280" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="1b670d9065313aff9840b9ffa198d78d" inode="3374927" device="2304" mtime="797023517" flags="0" name="/usr/share/texmf/doc/metapost/base/manfig.mp" file_size="19920" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="be7748f8bf71be2a6401125495f57603" inode="3374926" device="2304" mtime="797011463" flags="0" name="/usr/share/texmf/doc/metapost/base/matmul.d" file_size="258" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="6a1a177db28a10b3bc7d64da6d0d8ff3" inode="3374934" device="2304" mtime="896653729" flags="0" name="/usr/share/texmf/doc/metapost/base/mpgraph.1" file_size="4299" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="7d8bbfa506949277a965fdd6ea0a2069" inode="3374582" device="2304" mtime="896653731" flags="0" name="/usr/share/texmf/doc/metapost/base/mpgraph.10" file_size="201" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="5c2227146a086250188eecf338fce9d8" inode="3374583" device="2304" mtime="896653731" flags="0" name="/usr/share/texmf/doc/metapost/base/mpgraph.11" file_size="414" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="a437c8e7c256c162a7e452002276cddd" inode="3374935" device="2304" mtime="896653730" flags="0" name="/usr/share/texmf/doc/metapost/base/mpgraph.2" file_size="6611" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="abc608cc32036fa3b8a198e439e4f41e" inode="3374936" device="2304" mtime="896653730" flags="0" name="/usr/share/texmf/doc/metapost/base/mpgraph.3" file_size="4156" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="9951c5f76951e277318baa4e0f4547fe" inode="3374937" device="2304" mtime="896653730" flags="0" name="/usr/share/texmf/doc/metapost/base/mpgraph.4" file_size="4250" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="9aaac5f6227d4b12deb789ca7ad7a64c" inode="3374938" device="2304" mtime="896653730" flags="0" name="/usr/share/texmf/doc/metapost/base/mpgraph.5" file_size="2518" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="1bb931e65a8ef5ee204d951ee35a6aa2" inode="3374939" device="2304" mtime="896653730" flags="0" name="/usr/share/texmf/doc/metapost/base/mpgraph.6" file_size="4223" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="94382d0ea7f8f3db4d8de7cbf77ca946" inode="3374940" device="2304" mtime="896653730" flags="0" name="/usr/share/texmf/doc/metapost/base/mpgraph.7" file_size="3466" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="3a4771496c741aec005e1a636a1e69b4" inode="3374941" device="2304" mtime="896653731" flags="0" name="/usr/share/texmf/doc/metapost/base/mpgraph.8" file_size="5475" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="864073615ad7f98a9a2b7a39fc745532" inode="3374942" device="2304" mtime="896653731" flags="0" name="/usr/share/texmf/doc/metapost/base/mpgraph.9" file_size="17199" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="fcf9ae90342aecbfe254ff8d80f0c410" inode="3374931" device="2304" mtime="797011461" flags="0" name="/usr/share/texmf/doc/metapost/base/mpgraph.dvi" file_size="56720" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="978a9f2e85342a8262e29faf0ebfddee" inode="3374584" device="2304" mtime="797011461" flags="0" name="/usr/share/texmf/doc/metapost/base/mpgraph.mp" file_size="2974" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="4973c8639bb3f13cc0a555ae746c1dd2" inode="3374932" device="2304" mtime="896653729" flags="0" name="/usr/share/texmf/doc/metapost/base/mpgraph.mpx" file_size="8446" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="af1b12c9e8f7439de7e9cf990023a855" inode="3374585" device="2304" mtime="890178569" flags="0" name="/usr/share/texmf/doc/metapost/base/mpgraph.ps" file_size="385016" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="2a219d51f000283c22a999cddd422f17" inode="3374943" device="2304" mtime="804308400" flags="0" name="/usr/share/texmf/doc/metapost/base/mpintro.ps" file_size="173236" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="c4dcd9f2b74ccedfd56cfcad67e96ebf" inode="3374930" device="2304" mtime="890178566" flags="0" name="/usr/share/texmf/doc/metapost/base/mpman.ps" file_size="786599" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="540580566f82fafb8e129fa8716bf5fb" inode="3374933" device="2304" mtime="838836767" flags="0" name="/usr/share/texmf/doc/metapost/base/old.map" file_size="35" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="efcea8bb85c7a4629fe91e25078aab5c" inode="3374924" device="2304" mtime="896653728" flags="0" name="/usr/share/texmf/doc/metapost/base/texnum.mpx" file_size="2018" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="299b356a3ff67016735cab4ef98d7c30" inode="3374919" device="2304" mtime="797011463" flags="0" name="/usr/share/texmf/doc/metapost/base/timepop.d" file_size="252" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="" inode="2982421" device="2304" mtime="926937269" flags="0" name="/usr/share/texmf/doc/mex" file_size="4096" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="16877" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="2bd05afd737a743269a5bb10259d940c" inode="2982422" device="2304" mtime="926913720" flags="0" name="/usr/share/texmf/doc/mex/00readme" file_size="8572" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="d32fb6bdb1a521d24d06285e76636d18" inode="2982423" device="2304" mtime="880092402" flags="0" name="/usr/share/texmf/doc/mex/mexinfo.eng" file_size="25248" groupname="root" linkto="" rdev="629" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="cd7df398e6f59c4e2445fbb12c75cab3" inode="2982424" device="2304" mtime="880092402" flags="0" name="/usr/share/texmf/doc/mex/mexinfo.pol" file_size="42503" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="e18d00b6e73f51608478993c393b3013" inode="2982479" device="2304" mtime="949409127" flags="0" name="/usr/share/texmf/doc/mkhtml" file_size="1669" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32275" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="e50baf80c5e75ca17c2f25031dc64705" inode="2982480" device="2304" mtime="949409132" flags="0" name="/usr/share/texmf/doc/mkhtml.nawk" file_size="2305" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32275" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="063007d06e2bdd4e1e52fb9f835f47d4" inode="2982482" device="2304" mtime="949168141" flags="0" name="/usr/share/texmf/doc/newhelpindex.html" file_size="42415" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="" inode="1150318" device="2304" mtime="890092824" flags="0" name="/usr/share/texmf/doc/omega" file_size="4096" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="16877" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="" inode="1150341" device="2304" mtime="928151572" flags="0" name="/usr/share/texmf/doc/omega/base" file_size="4096" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="16877" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="012c3e5d9386b390d78ebe9020f54491" inode="1150342" device="2304" mtime="923173920" flags="0" name="/usr/share/texmf/doc/omega/base/omega-manual.dvi" file_size="106848" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="7fdd32c203c3ef93b2fea9a90c4ee921" inode="1150343" device="2304" mtime="928151199" flags="0" name="/usr/share/texmf/doc/omega/base/omega-manual.pdf" file_size="263241" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="" inode="1231533" device="2304" mtime="921184788" flags="0" name="/usr/share/texmf/doc/pdftex" file_size="4096" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="16877" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="" inode="1231534" device="2304" mtime="949365729" flags="0" name="/usr/share/texmf/doc/pdftex/base" file_size="4096" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="16877" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="46101f93086134704629405d62b54316" inode="1231535" device="2304" mtime="928291651" flags="0" name="/usr/share/texmf/doc/pdftex/base/README" file_size="302" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="087f87623f6d92b13d0d7b1306809d5d" inode="1231536" device="2304" mtime="922723461" flags="0" name="/usr/share/texmf/doc/pdftex/base/example.tex" file_size="16329" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="353bf07a0edce4c3319586d10cdbf9ba" inode="1231537" device="2304" mtime="862630572" flags="0" name="/usr/share/texmf/doc/pdftex/base/image.png" file_size="53398" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="d5fb4391aa19ee1a6515bafd5664b3d5" inode="1231539" device="2304" mtime="910966863" flags="0" name="/usr/share/texmf/doc/pdftex/base/pdfTeX-FAQ.pdf" file_size="91407" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="4f0f5203a65739dab147535f0c68abec" inode="1231538" device="2304" mtime="942084136" flags="0" name="/usr/share/texmf/doc/pdftex/base/pdftexman.pdf" file_size="229518" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="" inode="1231540" device="2304" mtime="947677277" flags="0" name="/usr/share/texmf/doc/pdftex/thumbpdf" file_size="4096" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="16877" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="be9df92b33159f1d8d2f58ef022464a5" inode="1231541" device="2304" mtime="949261550" flags="0" name="/usr/share/texmf/doc/pdftex/thumbpdf/readme.txt" file_size="11386" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="" inode="1231542" device="2304" mtime="928149693" flags="0" name="/usr/share/texmf/doc/programs" file_size="4096" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="16877" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="b844cb20c8f9a3d1bd2fb0c9fb631a9f" inode="1231545" device="2304" mtime="922763891" flags="0" name="/usr/share/texmf/doc/programs/dvips.dvi" file_size="361248" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="21090895f35efc004edec5dc9966f85a" inode="1231546" device="2304" mtime="928037188" flags="0" name="/usr/share/texmf/doc/programs/kpathsea.dvi" file_size="387280" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="ab65c9ce956d83aeb52b23ff79e504d1" inode="1231547" device="2304" mtime="928110321" flags="0" name="/usr/share/texmf/doc/programs/kpathsea.pdf" file_size="536075" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="bb4d5a97eab4677f402a77d5e16c1049" inode="1231548" device="2304" mtime="923180966" flags="0" name="/usr/share/texmf/doc/programs/texinfo.dvi" file_size="863172" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="3c26a3867256e2aa8ace5c4d6623388a" inode="1231543" device="2304" mtime="928037166" flags="0" name="/usr/share/texmf/doc/programs/web2c.dvi" file_size="395876" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="00efb35e5953faa0158df5403e5d6039" inode="1231544" device="2304" mtime="928110341" flags="0" name="/usr/share/texmf/doc/programs/web2c.pdf" file_size="583700" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="" inode="1231562" device="2304" mtime="989511067" flags="0" name="/usr/share/texmf/doc/ptex" file_size="4096" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="16877" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="604de781a33f8d3d4333af57aaa7aa57" inode="1231563" device="2304" mtime="972571323" flags="0" name="/usr/share/texmf/doc/ptex/jfm.tex" file_size="6570" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="3ea64d21c65838a77c6c439dacc8080f" inode="1231564" device="2304" mtime="972571323" flags="0" name="/usr/share/texmf/doc/ptex/jtex.tex" file_size="29808" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="4993b9d84fe15203ea0ddae53a042eac" inode="1231565" device="2304" mtime="972571323" flags="0" name="/usr/share/texmf/doc/ptex/jtexdoc.tex" file_size="18130" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="495abdea74eaa4dc9c5724e084da7edf" inode="1231566" device="2304" mtime="972571323" flags="0" name="/usr/share/texmf/doc/ptex/ptexdoc.tex" file_size="39494" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="c6c6dcd462b02f4f0d0f5e7d4611b9c8" inode="1231567" device="2304" mtime="972571323" flags="0" name="/usr/share/texmf/doc/ptex/ptexskip.tex" file_size="17653" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="" inode="1150344" device="2304" mtime="949401529" flags="0" name="/usr/share/texmf/doc/tetex" file_size="4096" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="16877" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="e12d719a1fb9923b985ae77a9624f318" inode="2982481" device="2304" mtime="889576112" flags="0" name="/usr/share/texmf/doc/tetex.gif" file_size="1099" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="5e12cd8dc2270f0b864392ed2a6cc33a" inode="1150356" device="2304" mtime="927999996" flags="0" name="/usr/share/texmf/doc/tetex/CREDITS" file_size="449" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="baf3cc8d7793b83727c0a1c13d80fbdb" inode="1150354" device="2304" mtime="928080225" flags="0" name="/usr/share/texmf/doc/tetex/FEATURES" file_size="1055" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="93b08965118dce431a97659bac6d557b" inode="1150351" device="2304" mtime="928610902" flags="0" name="/usr/share/texmf/doc/tetex/Makefile" file_size="593" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="23f17b27795292949c63a6dcfd54d547" inode="1150345" device="2304" mtime="928611034" flags="0" name="/usr/share/texmf/doc/tetex/NEWS" file_size="5142" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="31bc82ba0d79d26c5c8b074f17f05703" inode="1150352" device="2304" mtime="928613448" flags="0" name="/usr/share/texmf/doc/tetex/README" file_size="1568" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="c3a71eda09c86070999f82a2a5da1b1a" inode="1150347" device="2304" mtime="928605369" flags="0" name="/usr/share/texmf/doc/tetex/TETEXDOC.bib" file_size="417" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="1a51e2b668ee4884134a7bb588118a60" inode="1150348" device="2304" mtime="942234401" flags="0" name="/usr/share/texmf/doc/tetex/TETEXDOC.dvi" file_size="52036" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="f488d9dbe139b5ca359d9943c0e3b875" inode="1150349" device="2304" mtime="950382448" flags="0" name="/usr/share/texmf/doc/tetex/TETEXDOC.pdf" file_size="112056" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="db0076876dd41c40d30ef0c81ddcbdd6" inode="1150355" device="2304" mtime="950382412" flags="0" name="/usr/share/texmf/doc/tetex/TETEXDOC.ps" file_size="105271" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="6b6c384be914a4116a4b1b48602da0c2" inode="1150350" device="2304" mtime="942234742" flags="0" name="/usr/share/texmf/doc/tetex/TETEXDOC.tex" file_size="34310" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="e2f90716a3ce33e8425b3d3156e39d0a" inode="1150346" device="2304" mtime="928197041" flags="0" name="/usr/share/texmf/doc/tetex/eutotex98-te.pdf" file_size="172832" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="f157c288592d58813acf12cee2aec817" inode="1150353" device="2304" mtime="928610059" flags="0" name="/usr/share/texmf/doc/tetex/teTeX-FAQ" file_size="27330" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="934632071fc944e73c7765a7c8fcbe5d" inode="3618750" device="2304" mtime="969984780" flags="0" name="/usr/share/texmf/doc/generic/babel/install.OzTeX-4" file_size="3445" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="bf8533c971df7f456dfd81f4ed764c08" inode="2704483" device="2304" mtime="984176282" flags="0" name="/usr/share/texmf/doc/latex/base/ltnews13.dvi" file_size="7252" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="4efb9e2340973c281d9669976b47e704" inode="2702612" device="2304" mtime="984178119" flags="0" name="/usr/share/texmf/doc/latex/base/manual.dvi" file_size="11336" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="9525d03e0bb648e13ffc8420d0bc4961" inode="2703059" device="2304" mtime="984178120" flags="0" name="/usr/share/texmf/doc/latex/base/webcomp.dvi" file_size="3484" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="b71854688ead2f595a471b34ff65e841" inode="3914536" device="2304" mtime="953911260" flags="0" name="/usr/share/texmf/doc/latex/amscls/install.txt" file_size="7566" groupname="root" linkto="" rdev="1280" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="c0224f77a49e01b06b119b3e9d621545" inode="971085" device="2304" mtime="939819194" flags="0" name="/usr/share/texmf/doc/latex/hyperref/paper.pdf" file_size="161506" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="8df2afbd00876a1b84fecec2a627a609" inode="2833289" device="2304" mtime="978491940" flags="0" name="/usr/share/texmf/doc/fonts/txfonts/txfontsdocA4.tex" file_size="40389" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="ffa4b7dac216e4274c105cc8b94bd113" inode="2702602" device="2304" mtime="984178118" flags="0" name="/usr/share/texmf/doc/latex/base/grphcomp.dvi" file_size="38168" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="6360729757efa927315f24e5a17eaf3d" inode="2703063" device="2304" mtime="984178117" flags="0" name="/usr/share/texmf/doc/latex/base/compan.dvi" file_size="103424" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="45d7d81eb51cd0e7d2ccc7fed165ad7f" inode="544558" device="2304" mtime="955631040" flags="0" name="/usr/share/texmf/doc/latex/psnfss/psnfss2e.pdf" file_size="121805" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="12b4e61ef781409a0ee42a554bf33b3a" inode="2703072" device="2304" mtime="965082660" flags="0" name="/usr/share/texmf/doc/latex/base/webcompg.err" file_size="10411" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="" inode="544557" device="2304" mtime="984325626" flags="0" name="/usr/share/texmf/doc/latex/psnfss" file_size="4096" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="16877" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="" inode="3358559" device="2304" mtime="982859731" flags="0" name="/usr/share/texmf/doc/fonts/pxfonts" file_size="4096" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="16877" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="e8c04daa26c1b35f55a697f90ff3aa39" inode="3358564" device="2304" mtime="983385000" flags="0" name="/usr/share/texmf/doc/fonts/pxfonts/pxfontsdocA4.tex" file_size="32350" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="c9b9de6b805a709be8343cfa122d5be8" inode="3358561" device="2304" mtime="983385000" flags="0" name="/usr/share/texmf/doc/fonts/pxfonts/pxfontsdoc.tex" file_size="32750" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="0e9b4034490cf8af54ab6145f2a252e7" inode="3618754" device="2304" mtime="969984780" flags="0" name="/usr/share/texmf/doc/generic/babel/install.OzTeX-pre4" file_size="5272" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="4c297aa367795b49058491e5949b9495" inode="2703071" device="2304" mtime="984178143" flags="0" name="/usr/share/texmf/doc/latex/base/webcompg.dvi" file_size="8996" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="62132fe41e6f7fb4ce228db02d682306" inode="2833276" device="2304" mtime="983384760" flags="0" name="/usr/share/texmf/doc/fonts/txfonts/txfontsdoc.pdf" file_size="413037" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="" inode="2833275" device="2304" mtime="982859731" flags="0" name="/usr/share/texmf/doc/fonts/txfonts" file_size="4096" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="16877" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="7cf55b0dcb2ac2deea46e18747447212" inode="3358563" device="2304" mtime="983385000" flags="0" name="/usr/share/texmf/doc/fonts/pxfonts/pxfontsdocA4.pdf" file_size="272611" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="e5c2efdf0fecadb5d34ac1b3162ea59e" inode="3358565" device="2304" mtime="983385000" flags="0" name="/usr/share/texmf/doc/fonts/pxfonts/pxfontsdoc.ps" file_size="1019055" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="30bb33f26527e662dfd0706189cac4cc" inode="2833277" device="2304" mtime="978492780" flags="0" name="/usr/share/texmf/doc/fonts/txfonts/txfontsdoc.tex" file_size="41018" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="17d25babc07a4e8bcc225443007221e3" inode="2833290" device="2304" mtime="983384760" flags="0" name="/usr/share/texmf/doc/fonts/txfonts/txfontsdoc.ps" file_size="1238813" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="ecdeb2913b8e2835daa1f4dd84deff2a" inode="3914537" device="2304" mtime="960298980" flags="0" name="/usr/share/texmf/doc/latex/amscls/00readme.txt" file_size="2338" groupname="root" linkto="" rdev="9025" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="de53d0a867006fd4357e8134259da18c" inode="971084" device="2304" mtime="939819194" flags="0" name="/usr/share/texmf/doc/latex/hyperref/slides.pdf" file_size="346068" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="8bc084ed2be4711f4f06ed725bac9b25" inode="2833278" device="2304" mtime="983384760" flags="0" name="/usr/share/texmf/doc/fonts/txfonts/txfontsdocA4.ps" file_size="1238013" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="09be91104f9c2b74975cd228416a2b33" inode="3618743" device="2304" mtime="982901040" flags="0" name="/usr/share/texmf/doc/generic/babel/00readme.heb" file_size="24033" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="747c329c54abcb2490ff78e9e7da1fc7" inode="3358560" device="2304" mtime="983385000" flags="0" name="/usr/share/texmf/doc/fonts/pxfonts/pxfontsdoc.pdf" file_size="273578" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="1180e2d64d7a661682fc5bb6fe176e4d" inode="2833279" device="2304" mtime="983384760" flags="0" name="/usr/share/texmf/doc/fonts/txfonts/txfontsdocA4.pdf" file_size="411586" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="5ce24b263644b7cd7ed3ccc5f495a2c6" inode="3618746" device="2304" mtime="982897020" flags="0" name="/usr/share/texmf/doc/generic/babel/babel.dvi" file_size="1662644" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="8207f52724df0fe47f7424cb65f7a675" inode="3358562" device="2304" mtime="983385000" flags="0" name="/usr/share/texmf/doc/fonts/pxfonts/pxfontsdocA4.ps" file_size="1019029" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/><rhn-package-file checksum-type="md5" checksum="9ade460b0b3f50e22db09156fa16cc98" inode="2702603" device="2304" mtime="984178118" flags="0" name="/usr/share/texmf/doc/latex/base/handbuch.dvi" file_size="6088" groupname="root" linkto="" rdev="0" verifyflags="-1" file_mode="-32348" lang="" username="root"/></rhn-package-files></rhn-package>
  07070100000208000041FD0000000000000000000000016290A0C100000000000000000000000000000000000000000000002F00000000spacewalk-backend/server/test/unit-test/rhnSQL    07070100000209000081B40000000000000000000000016290A0C100000057000000000000000000000000000000000000003F00000000spacewalk-backend/server/test/unit-test/rhnSQL/db_settings.ini    [postgresql]
host: localhost
user: spacewalk
password: spacewalk
database: susemanager
 0707010000020A000081B40000000000000000000000016290A0C100003A7F000000000000000000000000000000000000004100000000spacewalk-backend/server/test/unit-test/rhnSQL/misc_functions.py  #!/usr/bin/python
#
# Copyright (c) 2008--2016 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#
#
#
#

import os
import sys
import time
from uyuni.common import usix

try:
    #  python 2
    from ConfigParser import ConfigParser
except ImportError:
    #  python3
    from configparser import ConfigParser
from spacewalk.common.rhnConfig import CFG
from spacewalk.server import rhnSQL, rhnUser

# Add backend/server/test/attic directory to PYTHONPATH
sys.path.insert(
    0,
    os.path.abspath(os.path.dirname(os.path.abspath(__file__) + "/../../../attic/"))
)
import rhnActivationKey
import rhnServerGroup


def create_new_org():
    "Create a brand new org; return the new org id"
    org_name = "unittest-org-%.3f" % time.time()
    org_password = "unittest-password-%.3f" % time.time()

    org_id = rhnServerGroup.create_new_org(org_name, org_password)
    rhnSQL.commit()
    return org_id


def _create_server_group(org_id, name, description):
    "Create a server group; return the server group object"
    s = rhnServerGroup.ServerGroup()
    s.set_org_id(org_id)
    s.set_name(name)
    s.set_description(description)
    s.save()
    rhnSQL.commit()
    return s


def create_server_group(params):
    "Create a server group from a dictionary with the params"
    return _create_server_group(*(), **params)


def fetch_server_group(org_id, name):
    "Load a server group object from the org id and name"
    s = rhnServerGroup.ServerGroup()
    s.load(org_id, name)
    return s

_query_fetch_server_groups = rhnSQL.Statement("""
    select sgm.server_group_id
      from rhnServerGroupMembers sgm,
           rhnServerGroup sg
     where sgm.server_id = :server_id
      and sgm.server_group_id = sg.id
      and sg.group_type is null
""")


def fetch_server_groups(server_id):
    "Return a server's groups"
    h = rhnSQL.prepare(_query_fetch_server_groups)
    h.execute(server_id=server_id)
    groups = [x['server_group_id'] for x in h.fetchall_dict() or []]
    groups.sort()
    return groups


def build_server_group_params(**kwargs):
    "Build params for server groups"
    params = {
        'org_id':   'no such org',
        'name':   "unittest group name %.3f" % time.time(),
        'description':   "unittest group description %.3f" % time.time(),
    }
    params.update(kwargs)
    return params


def create_new_user(org_id=None, username=None, password=None, roles=None, encrypt_password=False):
    "Create a new user"
    if org_id is None:
        org_id = create_new_org()
    else:
        org_id = lookup_org_id(org_id)

    if username is None:
        username = "unittest-user-%.3f" % time.time()
    if password is None:
        password = "unittest-password-%.3f" % time.time()
    if encrypt_password:
        password = rhnUser.encrypt_password(password)
    if roles is None:
        roles = []

    login = username
    oracle_contact_id = None
    prefix = "Mr."
    first_names = "First Name %3.f" % time.time()
    last_name = "Last Name %3.f" % time.time()
    genqual = None
    parent_company = None
    company = "ACME"
    title = ""
    phone = ""
    fax = ""
    email = "%s@example.com" % username
    pin = 0
    first_names_ol = " "
    last_name_ol = " "
    address1 = " "
    address2 = " "
    address3 = " "
    city = " "
    state = " "
    zip_code = " "
    country = " "
    alt_first_names = None
    alt_last_name = None
    contact_call = "N"
    contact_mail = "N"
    contact_email = "N"
    contact_fax = "N"

    f = rhnSQL.Function('create_new_user', rhnSQL.types.NUMBER())
    ret = f(
        org_id,
        login,
        password,
        oracle_contact_id,
        prefix,
        first_names,
        last_name,
        genqual,
        parent_company,
        company,
        title,
        phone,
        fax,
        email,
        pin,
        first_names_ol,
        last_name_ol,
        address1,
        address2,
        address3,
        city,
        state,
        zip_code,
        country,
        alt_first_names,
        alt_last_name,
        contact_call,
        contact_mail,
        contact_email,
        contact_fax
    )

    u = rhnUser.search(username)

    if u is None:
        raise Exception("Couldn't create the new user - user not found")

    # Set roles
    h = rhnSQL.prepare("""
        select ug.id
          from rhnUserGroupType ugt, rhnUserGroup ug
         where ug.org_id = :org_id
           and ug.group_type = ugt.id
           and ugt.label = :role
    """)
    create_ugm = rhnSQL.Procedure("rhn_user.add_to_usergroup")
    for role in roles:
        h.execute(org_id=org_id, role=role)
        row = h.fetchone_dict()
        if not row:
            raise InvalidRoleError(org_id, role)

        user_group_id = row['id']
        create_ugm(u.getid(), user_group_id)

    return u


def lookup_org_id(org_id):
    "Look up the org id by user name"
    if isinstance(org_id, usix.StringType):
        # Is it a user?
        u = rhnUser.search(org_id)

        if not u:
            raise rhnServerGroup.InvalidUserError(org_id)

        return u.contact['org_id']

    t = rhnSQL.Table('web_customer', 'id')
    row = t[org_id]
    if not row:
        raise rhnServerGroup.InvalidOrgError(org_id)
    return row['id']


class InvalidEntitlementError(Exception):
    pass


class InvalidRoleError(Exception):
    pass


def get_server_arch_id(architecture):
    lookup = """
        SELECT id
        FROM rhnServerArch
        WHERE label = :architecture
    """
    h = rhnSQL.prepare(lookup)
    h.execute(
        architecture=architecture
    )
    row = h.fetchone_dict()

    if row:
        return row['id']
    else:
        return None


def create_activation_key(org_id=None, user_id=None, groups=None,
                          channels=None, entitlement_level=None, note=None, server_id=None, release=None):
    if org_id is None:
        need_user = 1
        org_id = create_new_org()
    else:
        need_user = 0

    if user_id is None:
        if need_user:
            u = create_new_user(org_id=org_id)
            user_id = u.getid()
    else:
        u = rhnUser.User("", "")
        u.reload(user_id)

    if groups is None:
        groups = []
        for i in range(3):
            params = build_server_group_params(org_id=org_id)
            sg = create_server_group(params)
            groups.append(sg.get_id())

    if channels is None:
        channels = ['rhel-i386-as-3-beta', 'rhel-i386-as-2.1-beta']

    channel_arch_id = find_or_create_channel_arch(
        name="channel - test",
        label="test"
    )

    # ensure channels are created
    for channel_label in channels:
        channel = add_channel(
            label=channel_label,
            org_id=org_id,
            channel_arch_id=channel_arch_id
        )
        populate_rhn_dist_channel_map(
            channel_id=channel['id'],
            channel_arch_id=channel_arch_id,
            org_id=org_id,
            release=release
        )

    if entitlement_level is None:
        entitlement_level = 'enterprise_entitled'

    if note is None:
        note = "Test activation key %d" % int(time.time())

    a = rhnActivationKey.ActivationKey()
    a.set_user_id(user_id)
    a.set_org_id(org_id)
    a.set_entitlement_level(entitlement_level)
    a.set_note(note)
    a.set_server_groups(groups)
    a.set_channels(channels)
    a.set_server_id(server_id)
    a.save()
    rhnSQL.commit()

    return a


def db_settings(backend=None):
    """
    Parses the contents of the db_settings.ini file and returns the connection
    settings of the required backend inside of a dictionary with the following
    keys:
      * backend
      * user
      * password
      * database
      * host (returned only by PostgreSQL backend)

    When backend is None the code looks for the value of the DATABASE environment
    variable. If the environment variable is not set Postgresql is going to be
    used as the default backend.
    """

    if not backend and os.getenv("DATABASE"):
        backend = os.getenv("DATABASE")
    elif not backend:
        backend = "postgresql"

    settings = {}

    config = ConfigParser()
    config.read(os.path.dirname(os.path.abspath(__file__)) + "/db_settings.ini")

    settings['backend'] = backend
    settings['user'] = config.get(backend, 'user')
    settings['password'] = config.get(backend, 'password')
    settings['database'] = config.get(backend, 'database')
    if backend == 'postgresql':
        settings['host'] = config.get(backend, 'host')

    return settings


def setup_db_connection():
    """
    Fetches database configuration using db_settings and initializes the
    database connection.
    """

    settings = db_settings()
    rhnSQL.initDB(
        backend=settings['backend'],
        username=settings["user"],
        password=settings["password"],
        database=settings["database"]
    )


def grant_channel_family_entitlements(org_id, channel_family, quantity):
    """
    Check to see if org has a channelfamily associated with it.
    If not, Create one.
    """
    _lookup_chfam = """
       SELECT 1 from rhnChannelFamily
        WHERE label='%s'
    """ % channel_family
    h = rhnSQL.prepare(_lookup_chfam)
    row = h.execute()
    # some extra check for upgrades
    if row:
        # Already exists, move on
        return
    _query_create_chfam = """
       INSERT INTO  rhnChannelFamily
              (id, name, label, org_id)
       VALUES (sequence_nextval('rhn_channel_family_id_seq'), :name, :label, :org)

    """
    h = rhnSQL.prepare(_query_create_chfam)
    try:
        h.execute(
            name='Private Channel Family %s' % channel_family,
            label=channel_family,
            org=org_id
        )
    except rhnSQL.SQLError:
        e = sys.exc_info()[1]
        # if we're here that means we're voilating something
        raise


def find_or_create_arch_type(name, label):
    lookup = """
       SELECT id from rhnArchType
        WHERE label='%s' AND name = '%s'
    """ % (label, name)
    h = rhnSQL.prepare(lookup)
    h.execute()
    row = h.fetchone_dict()
    if row:
        return row['id']

    query_create = """
       INSERT INTO  rhnArchType
              (id, label, name)
       VALUES (sequence_nextval('rhn_archtype_id_seq'), :label, :name)

    """
    h = rhnSQL.prepare(query_create)
    try:
        h.execute(
            label=label,
            name=name
        )
        rhnSQL.commit()
    except rhnSQL.SQLError:
        e = sys.exc_info()[1]
        # if we're here that means we're voilating something
        raise

    return find_or_create_arch_type(name, label)


def find_or_create_channel_arch(name, label):
    lookup = """
       SELECT id from rhnChannelArch
        WHERE label='%s' AND name = '%s'
    """ % (label, name)
    h = rhnSQL.prepare(lookup)
    h.execute()
    row = h.fetchone_dict()
    if row:
        return row['id']

    query_create = """
       INSERT INTO  rhnChannelArch
              (id, arch_type_id, label, name)
       VALUES (sequence_nextval('rhn_channel_arch_id_seq'), :arch_type_id, :label, :name)

    """
    arch_type_id = find_or_create_arch_type(name=name, label=label)
    h = rhnSQL.prepare(query_create)
    try:
        h.execute(
            arch_type_id=arch_type_id,
            label=label,
            name=name
        )
        rhnSQL.commit()
    except rhnSQL.SQLError:
        e = sys.exc_info()[1]
        # if we're here that means we're voilating something
        raise

    return find_or_create_channel_arch(name, label)


def add_channel(label, org_id, channel_arch_id):
    lookup = """
       SELECT * from rhnChannel
        WHERE label = :label
    """

    h = rhnSQL.prepare(lookup)
    h.execute(label=label)
    row = h.fetchone_dict()

    if row:
        if row['org_id'] != org_id or row['channel_arch_id'] != channel_arch_id:
            delete = "DELETE FROM rhnChannel WHERE id = :id"
            h = rhnSQL.prepare(delete)
            h.execute(id=row['id'])
            rhnSQL.commit()
        else:
            return row

    query_create = """
       INSERT INTO  rhnChannel
              (id, label, org_id, name, channel_arch_id, basedir, summary)
       VALUES (sequence_nextval('rhn_channel_id_seq'), :label, :org_id, :name, :channel_arch_id, :basedir, :summary)

    """

    h = rhnSQL.prepare(query_create)
    try:
        h.execute(
            label=label,
            org_id=org_id,
            name="Name for label %s" % label,
            channel_arch_id=channel_arch_id,
            basedir='basedir',
            summary='summary'
        )
        rhnSQL.commit()

        h = rhnSQL.prepare(lookup)
        h.execute(label=label)
        return h.fetchone_dict()
    except rhnSQL.SQLError:
        e = sys.exc_info()[1]
        # if we're here that means we're voilating something
        raise


def populate_rhn_dist_channel_map(channel_id, channel_arch_id, org_id, release):
    if not release:
        release = 'unit test'

    lookup = """
        SELECT 1 FROM rhnDistChannelMap
            WHERE release = :release AND
                channel_arch_id  = :channel_arch_id AND
                org_id = :org_id
    """

    h = rhnSQL.prepare(lookup)
    h.execute(
        release=release,
        channel_arch_id=channel_arch_id,
        org_id=org_id
    )
    if h.fetchone_dict():
        return

    query_create = """
       INSERT INTO rhnDistChannelMap
              (os, release, channel_arch_id, channel_id, org_id)
       VALUES (:os, :release, :channel_arch_id, :channel_id, :org_id)
    """

    h = rhnSQL.prepare(query_create)
    h.execute(
        os="TestOS",
        release=release,
        channel_arch_id=channel_arch_id,
        channel_id=channel_id,
        org_id=org_id
    )
    rhnSQL.commit()


def add_channel_to_server(channel_id, server_id):
    lookup = """
        SELECT 1 FROM rhnServerChannel
            WHERE server_id = :server_id AND
                  channel_id = :channel_id
    """

    h = rhnSQL.prepare(lookup)
    row = h.execute(server_id=server_id, channel_id=channel_id)
    if row:
        return

    query_create = """
       INSERT INTO rhnServerChannel
              (server_id, channel_id)
       VALUES (:server_id, :channel_id)
    """

    h = rhnSQL.prepare(query_create)
    h.execute(
        channel_id=channel_id,
        server_id=server_id
    )
    rhnSQL.commit()
 0707010000020B000081B40000000000000000000000016290A0C10000088F000000000000000000000000000000000000003F00000000spacewalk-backend/server/test/unit-test/rhnSQL/rhnsql-tests.py    #
# Copyright (c) 2008--2015 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#

"""
Pure unit tests for components of rhnSQL.

NOTE: Not hitting the database here!
"""

import unittest

from spacewalk.server.rhnSQL.driver_postgresql import convert_named_query_params


class RhnSQLTests(unittest.TestCase):

    """ Pure unit tests for components of rhnSQL. """

    def test_convert_named_query_params(self):
        query = "INSERT INTO people(id, name, phone) VALUES(:id, :name, :phone)"
        expected_query = \
            "INSERT INTO people(id, name, phone) VALUES(%(id)s, %(name)s, %(phone)s)"

        new_query = convert_named_query_params(query)
        self.assertEqual(expected_query, new_query)

    def test_convert_named_params_none_required(self):
        query = "SELECT * FROM people"

        new_query = convert_named_query_params(query)
        self.assertEqual(query, new_query)

    def test_convert_named_params_multiple_uses(self):
        query = "INSERT INTO people(a, b, c, d) VALUES(:a, :b, :a, :b)"
        expected_query = \
            "INSERT INTO people(a, b, c, d) VALUES(%(a)s, %(b)s, %(a)s, %(b)s)"

        new_query = convert_named_query_params(query)
        self.assertEqual(expected_query, new_query)

    def test_date_format_conversion_issue(self):
        query = "SELECT TO_CHAR(issued, 'YYYY-MM-DD HH24:MI:SS') issued FROM rhnSatelliteCert WHERE id=:id, name=:name"
        expected_query = "SELECT TO_CHAR(issued, 'YYYY-MM-DD HH24:MI:SS') issued FROM rhnSatelliteCert WHERE id=%(id)s, name=%(name)s"
        new_query = convert_named_query_params(query)
        self.assertEqual(expected_query, new_query)
 0707010000020C000081B40000000000000000000000016290A0C100000FCF000000000000000000000000000000000000003900000000spacewalk-backend/server/test/unit-test/rhnSQL/test_1.py  #!/usr/bin/python
# Copyright (c) 2005--2016 Red Hat, Inc.
#
#
#

import os
import string
import unittest
import time
from uyuni.common import usix
from spacewalk.server import rhnSQL

import misc_functions

DB_SETTINGS = misc_functions.db_settings("postgresql")


class Tests1(unittest.TestCase):

    def setUp(self):
        self.table_name = "misatest_%d" % os.getpid()
        rhnSQL.initDB(
            backend="postgresql",
            username=DB_SETTINGS["user"],
            password=DB_SETTINGS["password"],
            database=DB_SETTINGS["database"],
            host=DBSETTINGS["host"]
        )
        self._cleanup()

        rhnSQL.execute("create table %s (id int, val varchar2(10))" %
                       self.table_name)
        rhnSQL.commit()

    def _cleanup(self):
        try:
            rhnSQL.execute("drop table %s" % self.table_name)
        except rhnSQL.SQLStatementPrepareError:
            pass

    def tearDown(self):
        self._cleanup()

        rhnSQL.commit()

    def test_exception_procedure_1(self):
        "Tests exceptions raised by procedure calls"
        p = rhnSQL.Procedure("rhn_channel.subscribe_server")
        self.assertRaises(rhnSQL.SQLError, p, 1000102174, 33)

    def _run_stproc(self):
        p = rhnSQL.Procedure("create_new_org")
        username = password = "unittest-%.3f" % time.time()
        args = (username, password, rhnSQL.types.NUMBER())
        return p(*args), args

    def test_procedure_1(self):
        "Tests procedure calls that return things in their OUT variables"
        ret, args = self._run_stproc()
        self.assertEqual(len(args), len(ret))
        self.assertEqual(args[0], ret[0])
        self.assertEqual(args[1], ret[1])
        self.assertTrue(isinstance(ret[2], usix.FloatType))

    def test_procedure_2(self):
        """Run the same stored procedure twice. This should excerise the
        cursor cache"""
        self.test_procedure_1()
        self.test_procedure_1()

    def test_executemany_1(self):
        """Tests executemany"""
        q = "insert into %s (id, val) values (:id, :val)" % self.table_name
        h = rhnSQL.prepare(q)
        ids = [1, 2, 3] * 100
        vals = [11, 22, 33] * 100
        h.executemany(id=ids, val=vals)

    def test_ddl_1(self):
        """Tests table creation/table removal"""
        table_name = self.table_name + "_1"
        rhnSQL.execute("create table %s (id int)" % table_name)
        tables = self._list_tables()
        self.assertTrue(string.upper(table_name) in tables,
                        "Table %s not created" % table_name)
        rhnSQL.execute("drop table %s" % table_name)

    def test_ddl_2(self):
        """Tests table creation twice"""
        self.test_ddl_1()
        self.test_ddl_1()

    def test_execute_rowcount(self):
        """Tests row counts"""
        table_name = "misatest"
        try:
            tables = self._list_tables()
            if not table_name in tables:
                rhnSQL.execute("create table %s (id int, value int)" % table_name)
            else:
                rhnSQL.execute("delete from %s" % table_name)

            insert_statement = rhnSQL.Statement(
                "insert into %s values (:item_id, :value)" % table_name
            )
            h = rhnSQL.prepare(insert_statement)
            ret = h.execute(item_id=1, value=2)
            self.assertEqual(ret, 1)
            ret = h.execute(item_id=2, value=2)
            self.assertEqual(ret, 1)

            delete_statement = rhnSQL.Statement("delete from %s" % table_name)
            h = rhnSQL.prepare(delete_statement)
            ret = h.execute()
            self.assertEqual(ret, 2)
            rhnSQL.commit()
        finally:
            rhnSQL.execute("drop table %s" % table_name)

    def _list_tables(self):
        h = rhnSQL.prepare("select table_name from user_tables")
        h.execute()
        return [string.upper(x['table_name']) for x in h.fetchall_dict()
                   or []]

if __name__ == '__main__':
    unittest.main()
 0707010000020D000081B40000000000000000000000016290A0C1000004FD000000000000000000000000000000000000004200000000spacewalk-backend/server/test/unit-test/rhnSQL/test_exceptions.py #!/usr/bin/python
# Copyright (c) 2005--2015 Red Hat, Inc.
#
#
#

import unittest
from spacewalk.common.rhnConfig import CFG, initCFG
from spacewalk.server import rhnSQL

import misc_functions

DB_SETTINGS = misc_functions.db_settings("postgresql")


class ExceptionsTest(unittest.TestCase):

    def test_failed_connection(self):
        # Connect to localhost and look for db on a totally bogus port, this
        # makes the test faster.
        host = "localhost"
        username = "x"
        password = "y"
        database = "z"
        port = 9000

        self.assertRaises(
            rhnSQL.SQLConnectError,
            rhnSQL.initDB,
            "postgresql",
            host,
            port,
            database,
            username,
            password
        )

        try:
            rhnSQL.initDB(
                backend="postgresql",
                username=DB_SETTINGS["user"],
                password=DB_SETTINGS["password"],
                database=DB_SETTINGS["database"],
                host=DB_SETTINGS["host"]
            )
        except:
            self.fail(
                "Exception raised while trying to connect to the db using proper settings. That's not expected to happen.")


if __name__ == '__main__':
    unittest.main()
   0707010000020E000081B40000000000000000000000016290A0C10000083D000000000000000000000000000000000000003B00000000spacewalk-backend/server/test/unit-test/rhnSQL/test_lob.py    #!/usr/bin/python
# Copyright (c) 2005--2016 Red Hat, Inc.
#
#
#

import sys
import unittest
from spacewalk.server import rhnSQL

import misc_functions

DB_SETTINGS = misc_functions.db_settings("oracle")


class ExceptionsTest(unittest.TestCase):

    def setUp(self):
        rhnSQL.initDB(
            backend="oracle",
            username=DB_SETTINGS["user"],
            password=DB_SETTINGS["password"],
            database=DB_SETTINGS["database"]
        )
        self._cleanup()

        rhnSQL.execute("create table misatestlob (id int, val blob)")
        rhnSQL.execute("create sequence misatestlob_id_seq")

    def _cleanup(self):
        try:
            rhnSQL.execute("drop table misatestlob")
        except rhnSQL.SQLStatementPrepareError:
            pass

        try:
            rhnSQL.execute("drop sequence misatestlob_id_seq")
        except rhnSQL.SQLStatementPrepareError:
            pass
        except rhnSQL.SQLError:
            e = sys.exc_info()[1]
            if e.args[0] != 2289:
                raise

    def tearDown(self):
        self._cleanup()

        rhnSQL.commit()

#
# TODO: convert to BYTEA 
#    def test_lobs(self):
#        new_id = rhnSQL.Sequence('misatestlob_id_seq').next()
#        h = rhnSQL.prepare("""
#            insert into misatestlob (id, val) values (:id, empty_blob())
#        """)
#        h.execute(id=new_id)
#
#        h = rhnSQL.prepare("""
#            select val from misatestlob where id = :id for update of val
#        """)
#        h.execute(id=new_id)
#        row = h.fetchone_dict()
#        self.assertNotEqual(row, None)
#        lob = row['val']
#        s = ""
#        for i in range(256):
#            s = s + chr(i)
#        lob.write(s)
#        rhnSQL.commit()
#
#        h = rhnSQL.prepare("""
#            select val from misatestlob where id = :id
#        """)
#        h.execute(id=new_id)
#        row = h.fetchone_dict()
#        self.assertNotEqual(row, None)
#        lob = row['val']
#        data = rhnSQL.read_lob(lob)
#        self.assertEqual(data, s)


if __name__ == '__main__':
    unittest.main()
   0707010000020F000081B40000000000000000000000016290A0C100000CBC000000000000000000000000000000000000004600000000spacewalk-backend/server/test/unit-test/rhnSQL/test_misc_functions.py #!/usr/bin/python
#
# Copyright (c) 2008--2015 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#
#
#
#

import sys
import unittest
from spacewalk.common.rhnConfig import initCFG
from spacewalk.server import rhnSQL, rhnUser

import misc_functions

DB_SETTINGS = misc_functions.db_settings("postgresql")


class Tests(unittest.TestCase):

    def setUp(self):
        initCFG("server")
        rhnSQL.initDB(
            backend="postgresql",
            username=DB_SETTINGS["user"],
            password=DB_SETTINGS["password"],
            database=DB_SETTINGS["database"],
            host=DB_SETTINGS["host"]
        )

    def tearDown(self):
        # Roll back any unsaved data
        rhnSQL.rollback()

    def test_new_org_1(self):
        org_id = misc_functions.create_new_org()
        h = rhnSQL.prepare("select id from web_customer where id = :id")
        h.execute(id=org_id)
        row = h.fetchone_dict()
        self.assertNotEqual(row, None)
        self.assertEqual(row['id'], org_id)

    def _verify_new_user(self, u):
        uid = u.getid()
        login = u.contact["login"]
        org_id = u.contact["org_id"]

        h = rhnSQL.prepare("select login, org_id from web_contact where id = :id")
        h.execute(id=uid)
        row = h.fetchone_dict()
        self.assertNotEqual(row, None)
        self.assertEqual(row['login'], login)
        self.assertEqual(row['org_id'], org_id)

    def test_new_user_1(self):
        "Create a new user"
        u = misc_functions.create_new_user()
        self._verify_new_user(u)

    def test_new_user_2(self):
        "Create a new user in an existing org"
        org_id = misc_functions.create_new_org()
        u = misc_functions.create_new_user(org_id=org_id)
        self._verify_new_user(u)
        self.assertEqual(org_id, u.contact['org_id'])

    def test_new_users_1(self):
        "Create a bunch of new users in an org"
        org_id = misc_functions.create_new_org()
        for i in range(10):
            u = misc_functions.create_new_user(org_id=org_id)
            self._verify_new_user(u)
            self.assertEqual(org_id, u.contact['org_id'])

    def test_disabled_users_are_listed(self):
        "Create a user, disable it and check if it is listed"
        u = misc_functions.create_new_user()
        self._verify_new_user(u)
        username = u.contact['login']
        uid = u.getid()
        h = rhnSQL.prepare("""
        INSERT INTO rhnwebcontactchangelog
           (id, web_contact_id, change_state_id)
        VALUES
           (5555, :user_id, 2)
        """)
        h.execute(user_id=uid)
        self.assertNotEqual(rhnUser.search(username), None)


if __name__ == '__main__':
    sys.exit(unittest.main() or 0)
07070100000210000081B40000000000000000000000016290A0C100000DE0000000000000000000000000000000000000004800000000spacewalk-backend/server/test/unit-test/rhnSQL/test_rhnActivationKey.py   #!/usr/bin/python
#
# Copyright (c) 2008--2015 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#
#
#
#

import os
import sys
import time
import unittest
from spacewalk.server import rhnSQL

sys.path.insert(
    0,
    os.path.abspath(os.path.dirname(os.path.abspath(__file__) + "/../../../attic/"))
)
import rhnActivationKey

import misc_functions

DB_SETTINGS = misc_functions.db_settings("postgresql")


class Tests(unittest.TestCase):

    def setUp(self):
        rhnSQL.initDB(
            backend="postgresql",
            username=DB_SETTINGS["user"],
            password=DB_SETTINGS["password"],
            database=DB_SETTINGS["database"],
            host=DB_SETTINGS["host"]
        )

    def tearDown(self):
        # Roll back any unsaved data
        rhnSQL.rollback()

    def test_new_activation_key_1(self):
        org_id = misc_functions.create_new_org()
        u = misc_functions.create_new_user(org_id=org_id)

        groups = []
        for i in range(3):
            params = misc_functions.build_server_group_params(org_id=org_id)
            sg = misc_functions.create_server_group(params)
            groups.append(sg.get_id())
        groups.sort()

        channels = ['rhn-tools-rhel-2.1-as-i386',
                    'rhn-tools-rhel-2.1-es-i386', 'rhn-tools-rhel-2.1-ws-i386']
        channels.sort()

        token_user_id = u.getid()
        token_org_id = org_id
        token_entitlement_level = {
            'enterprise_entitled': None,
        }
        token_note = "Test activation key %d" % int(time.time())

        a = misc_functions.create_activation_key(org_id=token_org_id,
                                                 user_id=token_user_id, entitlement_level=token_entitlement_level,
                                                 note=token_note, groups=groups, channels=channels)

        token = a.get_token()

        a = rhnActivationKey.ActivationKey()
        a.load(token)

        self.assertEqual(a.get_user_id(), token_user_id)
        self.assertEqual(a.get_org_id(), token_org_id)
        self.assertEqual(a.get_entitlement_level(), token_entitlement_level)
        self.assertEqual(a.get_note(), token_note)
        g = a.get_server_groups()
        g.sort()
        self.assertEqual(g, groups)

        g = a.get_channels()
        g.sort()
        self.assertEqual(g, channels)

    def test_exception_token_load_1(self):
        a = rhnActivationKey.ActivationKey()
        self.assertRaises(rhnActivationKey.InvalidTokenError, a.load, "a")

    def test_exception_token_channels_1(self):
        a = rhnActivationKey.ActivationKey()
        self.assertRaises(rhnActivationKey.InvalidChannelError, a.set_channels,
                          ["a"])

    def test_exception_token_entitlement_level_1(self):
        a = rhnActivationKey.ActivationKey()
        self.assertRaises(rhnActivationKey.InvalidEntitlementError,
                          a.set_entitlement_level, {'a': None})

if __name__ == '__main__':
    sys.exit(unittest.main() or 0)
07070100000211000081B40000000000000000000000016290A0C1000019AF000000000000000000000000000000000000004200000000spacewalk-backend/server/test/unit-test/rhnSQL/test_rhnChannel.py #!/usr/bin/python
#
# Copyright (c) 2008--2015 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#
#
#
#

import sys
import time
import unittest
from spacewalk.server import rhnSQL, rhnChannel

import misc_functions

DB_SETTINGS = misc_functions.db_settings("postgresql")


class Tests(unittest.TestCase):

    def setUp(self):
        rhnSQL.initDB(
            backend="postgresql",
            username=DB_SETTINGS["user"],
            password=DB_SETTINGS["password"],
            database=DB_SETTINGS["database"],
            host=DB_SETTINGS["host"]
        )

    def tearDown(self):
        # Roll back any unsaved data
        rhnSQL.rollback()

    def test_new_channel_1(self):
        """Tests new channel creation"""
        cf = rhnChannel.ChannelFamily()
        cf.load_from_dict(self._new_channel_family_dict())
        cf.save()

        label = cf.get_label()
        vdict = self._new_channel_dict(label=label, channel_family=label)

        c = rhnChannel.Channel()
        for k, v in list(vdict.items()):
            method = getattr(c, "set_" + k)
            method(v)
        c.save()
        channel_id = c.get_id()

        c = rhnChannel.Channel()
        c.load_by_label(label)
        for k, v in list(vdict.items()):
            method = getattr(c, "get_" + k)
            dbv = method()
            self.assertEqual(v, dbv)
        rhnSQL.commit()
        return c

    def test_new_channel_2(self):
        """Tests new channel creation from dictionary"""
        cf = rhnChannel.ChannelFamily()
        cf.load_from_dict(self._new_channel_family_dict())
        cf.save()

        label = cf.get_label()
        vdict = self._new_channel_dict(label=label, channel_family=label)

        c = rhnChannel.Channel()
        c.load_from_dict(vdict)
        c.save()
        channel_id = c.get_id()

        c = rhnChannel.Channel()
        c.load_by_label(label)
        for k, v in list(vdict.items()):
            method = getattr(c, "get_" + k)
            dbv = method()
            self.assertEqual(v, dbv)
        rhnSQL.commit()
        return c

    def test_new_channel_family_1(self):
        """Tests new channel family creation"""
        vdict = self._new_channel_family_dict()
        label = vdict['label']

        c = rhnChannel.ChannelFamily()
        for k, v in list(vdict.items()):
            method = getattr(c, "set_" + k)
            method(v)
        c.save()
        channel_id = c.get_id()

        c = rhnChannel.ChannelFamily()
        c.load_by_label(label)
        for k, v in list(vdict.items()):
            method = getattr(c, "get_" + k)
            dbv = method()
            self.assertEqual(v, dbv)
        rhnSQL.commit()
        return c

    def test_new_channel_family_2(self):
        """Tests new channel family creation from a dict"""
        vdict = self._new_channel_family_dict()
        label = vdict['label']

        c = rhnChannel.ChannelFamily()
        c.load_from_dict(vdict)
        c.save()
        channel_id = c.get_id()

        c = rhnChannel.ChannelFamily()
        c.load_by_label(label)
        for k, v in list(vdict.items()):
            method = getattr(c, "get_" + k)
            dbv = method()
            self.assertEqual(v, dbv)
        rhnSQL.commit()
        return c

    def test_list_channel_families_1(self):
        """Tests rhnChannel.list_channel_families"""
        channel_families = rhnChannel.list_channel_families()
        self.assertTrue(len(channel_families) > 0)

    def test_list_channels_1(self):
        """Tests rhnChannel.list_channels"""

        # create some channel
        cf = rhnChannel.ChannelFamily()
        cf.load_from_dict(self._new_channel_family_dict())
        cf.save()

        label = cf.get_label()
        vdict = self._new_channel_dict(label=label, channel_family=label)

        c = rhnChannel.Channel()
        for k, v in list(vdict.items()):
            method = getattr(c, "set_" + k)
            method(v)
        c.save()

        channels = rhnChannel.list_channels(pattern="rhn-unittest-%")
        self.assertTrue(len(channels) > 0)

    def _new_channel_dict(self, **kwargs):
        if not hasattr(self, '_counter'):
            self._counter = 0

        label = kwargs.get('label')
        if label is None:
            label = 'rhn-unittest-%.3f-%s' % (time.time(), self._counter)
            self._counter = self._counter + 1

        release = kwargs.get('release') or 'release-' + label
        os = kwargs.get('os') or 'Unittest Distro'
        if 'org_id' in kwargs:
            org_id = kwargs['org_id']
        else:
            org_id = misc_functions.create_new_org()

        vdict = {
            'label': label,
            'name': kwargs.get('name') or label,
            'summary': kwargs.get('summary') or label,
            'description': kwargs.get('description') or label,
            'basedir': kwargs.get('basedir') or '/',
            'channel_arch': kwargs.get('channel_arch') or 'channel-x86_64',
            'channel_families': [kwargs.get('channel_family') or label],
            'org_id': org_id,
            'gpg_key_url': kwargs.get('gpg_key_url'),
            'gpg_key_id': kwargs.get('gpg_key_id'),
            'gpg_key_fp': kwargs.get('gpg_key_fp'),
            'end_of_life': kwargs.get('end_of_life'),
            'dists': [{
                'release': release,
                'os': os,
            }],
        }
        return vdict

    def _new_channel_family_dict(self, **kwargs):
        if not hasattr(self, '_counter'):
            self._counter = 0

        label = kwargs.get('label')
        if label is None:
            label = 'rhn-unittest-%.3f-%s' % (time.time(), self._counter)
            self._counter = self._counter + 1

        product_url = kwargs.get('product_url') or 'http://rhn.redhat.com'

        vdict = {
            'label': label,
            'name': kwargs.get('name') or label,
            'product_url': product_url,
        }
        return vdict

if __name__ == '__main__':
    sys.exit(unittest.main() or 0)
 07070100000212000081B40000000000000000000000016290A0C100000A20000000000000000000000000000000000000004600000000spacewalk-backend/server/test/unit-test/rhnSQL/test_rhnServerGroup.py #!/usr/bin/python
#
# Copyright (c) 2008--2015 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#
#
#
#

import os
import sys
import unittest
from spacewalk.server import rhnSQL

sys.path.insert(
    0,
    os.path.abspath(os.path.dirname(os.path.abspath(__file__) + "/../../../attic/"))
)
import rhnServerGroup

import misc_functions

DB_SETTINGS = misc_functions.db_settings("postgresql")


class Tests(unittest.TestCase):

    def setUp(self):
        rhnSQL.initDB(
            backend="postgresql",
            username=DB_SETTINGS["user"],
            password=DB_SETTINGS["password"],
            database=DB_SETTINGS["database"],
            host=DB_SETTINGS["host"]
        )

    def tearDown(self):
        # Roll back any unsaved data
        rhnSQL.rollback()

    def test_new_org_1(self):
        org_id = misc_functions.create_new_org()
        h = rhnSQL.prepare("select id from web_customer where id = :id")
        h.execute(id=org_id)
        row = h.fetchone_dict()
        self.assertNotEqual(row, None)
        self.assertEqual(row['id'], org_id)

    def test_new_server_group_new_org_1(self):
        org_id = misc_functions.create_new_org()
        params = misc_functions.build_server_group_params(org_id=org_id)

        misc_functions.create_server_group(params)

        s = misc_functions.fetch_server_group(params['org_id'], params['name'])
        self.assertEqual(s.get_name(), params['name'])
        self.assertEqual(s.get_description(), params['description'])

    def test_exception_user_missing_1(self):
        params = misc_functions.build_server_group_params(org_id="no such user")
        self.assertRaises(rhnServerGroup.InvalidUserError,
                          misc_functions.create_server_group, params)

    def test_exception_org_missing_1(self):
        params = misc_functions.build_server_group_params(org_id=-1)
        self.assertRaises(rhnServerGroup.InvalidOrgError,
                          misc_functions.create_server_group, params)


if __name__ == '__main__':
    sys.exit(unittest.main() or 0)
07070100000213000081B40000000000000000000000016290A0C10000243E000000000000000000000000000000000000004B00000000spacewalk-backend/server/test/unit-test/rhnSQL/test_server_registration.py    #!/usr/bin/python
#
# Copyright (c) 2008--2015 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#
#
# Tests verious codepaths for server registration
#

import sys
import time
import unittest
from spacewalk.common import rhnFlags
from spacewalk.common.rhnConfig import initCFG, CFG
from spacewalk.server import rhnSQL, rhnServer, rhnChannel, rhnUser
from spacewalk.server.handlers.xmlrpc import registration

import misc_functions
DB_SETTINGS = misc_functions.db_settings("postgresql")


class Tests(unittest.TestCase):
    _channel = 'redhat-advanced-server-i386'
    _channel_family = 'rhel-as'
    _entitlements = {
        'enterprise_entitled': None
    }

    def setUp(self):
        initCFG("server.xmlrpc")
        rhnSQL.initDB(
            backend="postgresql",
            username=DB_SETTINGS["user"],
            password=DB_SETTINGS["password"],
            database=DB_SETTINGS["database"],
            host=DB_SETTINGS["host"]
        )

    def tearDown(self):
        # Roll back any unsaved data
        rhnSQL.rollback()

    def test_new_server_1(self):
        "Test normal server registration, with username/password"
        u, password = self._create_new_user()
        username = u.contact['login']
        org_id = u.contact['org_id']
        entitlements = self._entitlements
        os_release = "2.1as"

        t = misc_functions.create_activation_key(
            org_id=u.contact['org_id'],
            entitlement_level=entitlements,
            user_id=u.getid(),
            release=os_release
        )

        params = build_new_system_params_with_username(username=username,
                                                       password=password, os_release=os_release)

        system_id = register_new_system(params)
        rhnSQL.commit()

        s = rhnServer.get(system_id)
        self.assertNotEqual(s, None)

        server_id = s.getid()
        channels = rhnChannel.channels_for_server(server_id)
        self.assertEqual(len(channels), 1)
        self.assertEqual(channels[0]['label'], self._channel)

    def test_new_server_token_1(self):
        "test registration with token"
        u, _ = self._create_new_user()
        org_id = u.contact['org_id']
        entitlements = self._entitlements
        os_release = "2.1as"

        t = misc_functions.create_activation_key(
            org_id=u.contact['org_id'],
            entitlement_level=entitlements,
            user_id=u.getid(),
            release=os_release
        )

        token = t.get_token()

        params = build_new_system_params_with_token(
            token=token,
            os_release=os_release
        )

        system_id = register_new_system(params)
        rhnSQL.commit()

        s = rhnServer.get(system_id)
        self.assertNotEqual(s, None)

    def test_new_server_token_2(self):
        "Test registration with token that specifies a base channel"

        # FIXME: the test fails because there's no channel associated with the
        # freshly created Server: rhnServerChannel is not populated by the
        # registration code.

        u, _ = self._create_new_user()
        org_id = u.contact['org_id']
        base_channel = 'rhel-i386-as-3'
        entitlements = self._entitlements
        os_release = "2.1as"

        t = misc_functions.create_activation_key(org_id=u.contact['org_id'],
                                                 entitlement_level=entitlements, user_id=u.getid(),
                                                 channels=[base_channel], release=os_release)

        token = t.get_token()

        params = build_new_system_params_with_token(
            token=token,
            os_release=os_release
        )

        system_id = register_new_system(params)
        rhnSQL.commit()

        s = rhnServer.get(system_id)
        self.assertNotEqual(s, None)

        server_id = s.getid()
        channels = rhnChannel.channels_for_server(server_id)
        self.assertEqual(len(channels), 1)
        self.assertEqual(channels[0]['label'], base_channel)

    def test_new_server_reactivation_token_1(self):
        "Test server re-registration"
        u, password = self._create_new_user()
        username = u.contact['login']
        os_release = "2.1AS"

        params = build_new_system_params_with_username(username=username,
                                                       password=password, os_release="2.1AS")

        system_id = register_new_system(params)
        rhnSQL.commit()

        s1 = rhnServer.get(system_id)
        self.assertNotEqual(s1, None)

        server_id_1 = s1.getid()
        groups1 = misc_functions.fetch_server_groups(server_id_1)

        # Build a re-registration token
        base_channel = 'rhel-i386-as-3'
        entitlements = self._entitlements
        t = misc_functions.create_activation_key(org_id=u.contact['org_id'],
                                                 entitlement_level=entitlements, user_id=u.getid(),
                                                 channels=[base_channel], server_id=server_id_1, release=os_release)

        token = t.get_token()

        params = build_new_system_params_with_token(
            token=token,
            os_release=os_release
        )
        system_id = register_new_system(params)
        rhnSQL.commit()

        s2 = rhnServer.get(system_id)
        server_id_2 = s2.getid()

        groups2 = misc_functions.fetch_server_groups(server_id_2)

        self.assertNotEqual(s2, None)
        self.assertEqual(server_id_1, server_id_2)
        # Should be subscribed to the same groups
        self.assertEqual(groups1, groups2)

    def test_new_server_multiple_tokens_1(self):
        """Test registration with multiple activation tokens
        Resulting server group is the union of all server groups from all
        tokens
        """
        u, _ = self._create_new_user()
        org_id = u.contact['org_id']
        entitlements = self._entitlements
        os_release = "2.1AS"

        t = misc_functions.create_activation_key(org_id=u.contact['org_id'],
                                                 entitlement_level=entitlements, user_id=u.getid(), release=os_release)

        token1 = t.get_token()
        sg1 = t.get_server_groups()

        t = misc_functions.create_activation_key(org_id=u.contact['org_id'],
                                                 entitlement_level=entitlements, user_id=u.getid(), release=os_release)

        token2 = t.get_token()
        sg2 = t.get_server_groups()

        token = token1 + ',' + token2

        params = build_new_system_params_with_token(token=token,
                                                    os_release=os_release)

        system_id = register_new_system(params)
        rhnSQL.commit()

        s = rhnServer.get(system_id)
        self.assertNotEqual(s, None)

        server_id = s.getid()
        sgs = misc_functions.fetch_server_groups(server_id)
        sgstgt = sg1 + sg2
        sgstgt.sort()

        self.assertEqual(sgs, sgstgt)

    def _create_new_user(self):
        # Create new org
        org_id = misc_functions.create_new_org()
        users_unencrypted_password = "unittest-password-%.3f" % time.time()

        # Grant entitlements to the org
        misc_functions.grant_channel_family_entitlements(
            org_id,
            "%s-%.3f" % (self._channel_family, time.time()),
            1
        )

        # Create new user
        u = misc_functions.create_new_user(
            org_id=org_id,
            roles=['org_admin'],
            password=users_unencrypted_password,
            encrypt_password=CFG.encrypted_passwords
        )

        return u, users_unencrypted_password


class Counter:
    _counter = 0

    def value(self):
        val = self._counter
        self._counter = val + 1
        return val


def build_new_system_params_with_username(**kwargs):
    val = Counter().value()
    rnd_string = "%d-%d" % (int(time.time()), val)

    params = {
        'os_release': '9',
        'architecture': 'i686-redhat-linux',
        'profile_name': "unittest server " + rnd_string,
        'username': 'no such user',
        'password': 'no such password',
    }
    params.update(kwargs)
    if 'token' in params:
        del params['token']
    return params


def build_new_system_params_with_token(**kwargs):
    params = {
        'token': kwargs.get('token', "no such token"),
    }
    params.update(build_new_system_params_with_username(**kwargs))
    del params['username']
    del params['password']
    return params


def register_new_system(params):
    rhnFlags.reset()
    return registration.Registration().new_system(params)


if __name__ == '__main__':
    sys.exit(unittest.main() or 0)
  07070100000214000081B40000000000000000000000016290A0C100000925000000000000000000000000000000000000004000000000spacewalk-backend/server/test/unit-test/rhnSQL/test_suseEula.py   #!/usr/bin/env python
# -*- coding: utf-8 -*-
#
# Copyright (c) 2014 SUSE LLC
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#

import hashlib
import unittest
import time
from spacewalk.server import rhnSQL, suseEula
import misc_functions

import os

class SUSEEulaTest(unittest.TestCase):

    def setUp(self):
        misc_functions.setup_db_connection()
        self.__transaction_name = 'eula_test_%d' % (int(time.time()))
        rhnSQL.transaction(self.__transaction_name)

    def tearDown(self):
        # Roll back any unsaved data
        rhnSQL.rollback(self.__transaction_name)

    def test_create_eulas(self):
        text, _ = self.__generate_fake_eula()

        self.assertEqual(0, self.__count_eulas())
        suseEula.find_or_create_eula(text)
        self.assertEqual(1, self.__count_eulas())

        # try creating another EULA with the same text
        suseEula.find_or_create_eula(text)
        self.assertEqual(1, self.__count_eulas())

    def test_get_eula_by_id(self):
        text, _ = self.__generate_fake_eula()

        self.assertEqual(0, self.__count_eulas())
        self.assertEqual(None, suseEula.get_eula_by_id(1))

        eula_id = suseEula.find_or_create_eula(text)
        self.assertEqual(text, suseEula.get_eula_by_id(eula_id))

    def test_get_eula_by_checksum(self):
        text, checksum = self.__generate_fake_eula()

        self.assertEqual(0, self.__count_eulas())
        self.assertEqual(None, suseEula.get_eula_by_checksum('foo'))

        eula_id = suseEula.find_or_create_eula(text)
        self.assertEqual(text, suseEula.get_eula_by_checksum(checksum))

    def __count_eulas(self):
        count_eulas_query = "SELECT COUNT(id) AS eulas from suseEula"
        h = rhnSQL.prepare(count_eulas_query)
        h.execute()
        return h.fetchone_dict()['eulas']

    def __generate_fake_eula(self):
        text     = "Fake EULA %d" % int(time.time())
        checksum = hashlib.new("sha256", text).hexdigest()
        return text, checksum
   07070100000215000081B40000000000000000000000016290A0C100000A09000000000000000000000000000000000000004300000000spacewalk-backend/server/test/unit-test/test_ConfigFilesHandler.py    #!/usr/bin/python3

import base64
from unittest.mock import patch

import pytest
from spacewalk.server import configFilesHandler


@pytest.fixture
def skeleton_row():
    return {
        "path": "/etc/dummy",
        "config_channel": "dummy",
        "file_contents": None,
        "is_binary": None,
        "checksum_type": "sha256",
        "checksum": None,
        "delim_start": "{|",
        "delim_end": "|}",
        "revision": 1,
        "username": "root",
        "groupname": "root",
        "filemode": 644,
        "label": "dummy-file",
        "selinux_ctx": None,
        "symlink": None,
    }


def my_read_lob(lob):
    """Same as postgresql driver, but does not need to setup a DB connection."""
    return bytes(lob)


def my_get_client_capabilities():
    return ["configfiles.base64_enc"]


get_client_capabilities = (
    "spacewalk.server.configFilesHandler.rhnCapability.get_client_capabilities"
)
read_lob = "spacewalk.server.configFilesHandler.rhnSQL.read_lob"


@patch(get_client_capabilities, my_get_client_capabilities)
@patch(read_lob, my_read_lob)
def test_format_file_results_utf8(skeleton_row):
    utf8_string = "Hello I am an UTF-8 string. Look at meÂ¡Â¡Â¡"
    row = skeleton_row
    row["file_contents"] = utf8_string.encode("utf8")
    row["is_binary"] = "N"

    formatted = configFilesHandler.format_file_results(row)

    assert formatted["file_contents"] == base64.encodestring(
        utf8_string.encode("utf8")
    ).decode("utf8")


@patch(get_client_capabilities, my_get_client_capabilities)
@patch(read_lob, my_read_lob)
def test_format_file_results_binary_blob(skeleton_row):
    blob = b"\xaa\xdb\xe3\xdc\xfd\x19\xdc\x12\xc3\x0f\x07\x03\x89\xe0\xde"
    row = skeleton_row
    row["file_contents"] = blob
    row["is_binary"] = "Y"

    formatted = configFilesHandler.format_file_results(row)

    assert formatted["file_contents"] == base64.encodestring(blob).decode("utf8")


@patch(get_client_capabilities, my_get_client_capabilities)
@patch(read_lob, my_read_lob)
def test_format_file_results_latin1(skeleton_row):
    latin1_string = "Hello I am a Latin-1 string. Don't look at meÂ¡Â¡Â¡"
    row = skeleton_row
    row["file_contents"] = latin1_string.encode("latin-1")
    row["is_binary"] = "N"

    formatted = configFilesHandler.format_file_results(row)

    assert formatted["file_contents"] == base64.encodestring(
        # NOTE: currently the original encoding is lost before encoding in base64
        # this test keeps the behaviour as is
        latin1_string.encode("utf8")
    ).decode("utf8")
   07070100000216000081B40000000000000000000000016290A0C100000964000000000000000000000000000000000000004100000000spacewalk-backend/server/test/unit-test/test_rhnLib_timestamp.py  #!/usr/bin/python
#
# Copyright (c) 2008--2016 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#
#
#
#

import sys
import time
import unittest
from uyuni.common import rhnLib


class Tests(unittest.TestCase):

    def _test_timestamp_1(self):
        # Start with some timestamp, and verify that
        # timestamp(strftime(t)) is # t
        t = 85345
        increment = 123456
        while t < time.time() + increment:
            is_eq, t1, tstr, t2 = self._test(t)
            #self.assertEqual(t, t2, "%s %s %s %s" % (t, t2, ttuple, tstr))
            if not is_eq:
                print(("%s %s %s" % (t1, t2, tstr)))
            t = t + increment

    def _str(self, t):
        tformat = "%Y-%m-%d %H:%M:%S"
        ttuple = time.localtime(t)
        return time.strftime(tformat, ttuple)

    def _test(self, t, dstshift=0):
        t = int(t)
        tstr = self._str(t)
        t2 = int(rhnLib.timestamp(tstr))
        return (t + dstshift == t2), t, tstr, t2

    def _test_timestamp_2(self):
        y = 1969
        while y < 2015:
            y = y + 1
            # Guess that year's time switch
            tlist = [y, 10, 31, 1, 41, 37, 0, 0, -1]
            t = time.mktime(tlist)
            tlist = list(time.localtime(t))
            # Last Sat of October
            tlist[2] = tlist[2] - (1 + tlist[6]) % 7
            t = int(time.mktime(tlist))

            is_eq, t1, tstr, t2 = self._test(t)
            if not is_eq:
                print(("%s %s %s" % (t, t2, tstr)))

    def test_timestamp_3(self):
        t = 57739297
        dstshift = (time.localtime(t)[8] - time.daylight) * 3600
        is_eq, t1, tstr, t2 = self._test(t, dstshift)
        self.assertTrue(is_eq, "Failed: %s, %s" % (t1, t2))

    def _test_timestamp_4(self):
        return self.test_timestamp_3()

if __name__ == '__main__':
    sys.exit(unittest.main() or 0)
07070100000217000081B40000000000000000000000016290A0C100013F72000000000000000000000000000000000000002C00000000spacewalk-backend/spacewalk-backend.changes   -------------------------------------------------------------------
Fri May 27 11:56:23 CEST 2022 - jmassaguerpla@suse.de

- version 4.1.31-1
  * Fix traceback on calling spacewalk-repo-sync --show-packages
    (bsc#1193238)
  * Fix virt_notify SQL syntax error (bsc#1199528)
  * Do not raise error on file:// based DEB repo when looking
    for alternative Release files (bsc#1199142)
  * Improve parsing deb packages dependencies (bsc#1194594)
  * Fix reposync update notice formatting and date parsing (bsc#1194447)
  * implement more decompression algorithms for reposync (bsc#1196704)

-------------------------------------------------------------------
Wed Jan 12 16:03:15 CET 2022 - jmassaguerpla@suse.de

- version 4.1.30-1
  * Add headers to update proxy auth token in listChannels (bsc#1193585)
  * require python macros for building
  * Fix the IS_SUSE variable in spacewalk-debug
  * exchange zypp-plugin dependency to use the python3 version (bsc#1192514)
  * Minor spec update.
  * Added RHN config parameter httpd_config_dir.

-------------------------------------------------------------------
Thu Oct 28 12:03:44 CEST 2021 - jgonzalez@suse.com

- version 4.1.29-1
  * Avoid GPG errors messages in reposync caused by rpm not understanding
    signatures (bsc#1191538)
  * handle download of metadata filesnames with checksums (bsc#1188315)
  * Sanitize cached filename for custom SSL certs used by reposync (bsc#1190751)

-------------------------------------------------------------------
Mon Sep 20 12:14:28 CEST 2021 - jmassaguerpla@suse.de

- version 4.1.28-1
- fix typo "verfication" instead of "verification"

------------------------------------------------------------------
Mon Aug 02 10:17:33 CEST 2021 - jmassaguerpla@suse.de

- version 4.1.27-1
- Fix rpm handling of empty package group and devicefiles tag (bsc#1186650)
- show better error message when reposync failed

-------------------------------------------------------------------
Fri Jun 25 17:50:54 CEST 2021 - jgonzalez@suse.com

- version 4.1.26-1
- Check if batch needs to be imported even after failure (bsc#1183151)
- fix downloading comps files by matching type in repomd.xml (bsc#1186653)
- Added logging for dpkg repository detection

-------------------------------------------------------------------
Wed May 19 16:48:09 CEST 2021 - jgonzalez@suse.com

- version 4.1.25-1
- Fix binary blob corruptions in tradidional config file deployment (bsc#1183864)
- Fix for GPG checking on synchonizing mirrored dpkg repo (bsc#1184351)

-------------------------------------------------------------------
Wed May 12 13:55:17 CEST 2021 - jgonzalez@suse.com

- version 4.1.24-1
- switch to www group for satellite logs (bsc#1185097)

-------------------------------------------------------------------
Tue May 04 13:05:39 CEST 2021 - jgonzalez@suse.com

- version 4.1.23-1
- Fail traditional errata and package actions when they act on retracted items
- Add advisory_status to reposync and ISS
- Add minrate/timeout configuration values for downloading DEB/RPM packages

-------------------------------------------------------------------
Mon Mar 29 12:00:19 CEST 2021 - jgonzalez@suse.com

- version 4.1.22-1
- deb_src repo plugin is not restoring config namespace on exception (bsc#1182197)
- Fixing improper exception handling causing another exception in ThreadedDownloader
- Avoid race condition due multiple reposync import threads (bsc#1183151)
- Fix for UnicodeDecodeError in satellite-sync: Opening RPM file in binary mode (bsc#1181274)

-------------------------------------------------------------------
Mon Mar 01 13:18:14 CET 2021 - jgonzalez@suse.com

- version 4.1.21-1
- Open repomd files as binary (bsc#1173893)
- Fix requesting Release file in debian repos (bsc#1182006)
- Reposync: Fixed Kickstart functionality.
- Reposync: Fixed URLGrabber error handling.
- Reposync: Fix modular data handling for cloned channels (bsc#1177508)

-------------------------------------------------------------------
Fri Jan 15 14:00:54 CET 2021 - jgonzalez@suse.com

- version 4.1.20-1
- Truncate author name in the changelog (bsc#1180285)

-------------------------------------------------------------------
Tue Jan 12 12:56:04 CET 2021 - jgonzalez@suse.com

- version 4.1.19-1
- Drop Transfer-Encoding header from proxy respone to fix error response messages (bsc#1176906)
- Prevent tracebacks on missing mail configuration (bsc#1179990)
- Fix pycurl.error handling in suseLib.py (bsc#1179990)
- harden extratag key import by execute_values to ignore conflicts
- Fix Debian package version comparison
- Use sanitized repo label to build reposync repo cache path (bsc#1179410)
- Quote the proxy settings to be used by Zypper (bsc#1179087)
- add the VirtualPC as virtualization type (bsc#1178990)

-------------------------------------------------------------------
Mon Nov 23 17:50:59 CET 2020 - jgonzalez@suse.com

- version 4.1.18-1
- Fix missing 'LiteServer.add_suse_products' method (bsc#1178704)

-------------------------------------------------------------------
Mon Nov 23 15:11:42 CET 2020 - jgonzalez@suse.com

- version 4.1.17-1
- Do not raise TypeError when processing SUSE products (bsc#1178704)
- Fix spacewalk-repo-sync to successfully manage and sync ULN repositories
- fix errors in spacewalk-debug and align postgresql queries to new DB version
- ISS: Differentiate packages with same nevra but different checksum in the same channel (bsc#1178195)
- Re-enables possibility to use local repos with repo-sync (bsc#1175607)
- add 'allow_vendor_change' option to rhn clients for dist upgrades

-------------------------------------------------------------------
Thu Oct 22 10:43:27 CEST 2020 - jgonzalez@suse.com

- version 4.1.16-1
- prevent IntegrityError during mgr-inter-sync execution (bsc#1177235)

-------------------------------------------------------------------
Tue Sep 15 10:36:45 CEST 2020 - jgonzalez@suse.com

- version 4.1.15-1
- Fix strings (mentions of Satellite, replace SUSE Manager with PRODUCT_NAME, etc)
- Only regenerate bootstrap repositories when linking new packages (bsc#1174636)
- support installer_updates flag in ISS
- Remove duplicate languages and update translation strings

-------------------------------------------------------------------
Thu Aug 20 13:40:31 CEST 2020 - jgonzalez@suse.com

- version 4.1.14-1
- Take care of SCC auth tokens on DEB repos GPG checks (bsc#1175485)

-------------------------------------------------------------------
Thu Aug 20 10:51:09 CEST 2020 - jgonzalez@suse.com

- version 4.1.13-1
- Use spacewalk keyring for GPG checks on DEB repos (bsc#1175485)

-------------------------------------------------------------------
Thu Jul 23 13:25:13 CEST 2020 - jgonzalez@suse.com

- version 4.1.12-1
- Adds basic functionality for gpg check

-------------------------------------------------------------------
Mon Jun 29 10:06:58 CEST 2020 - jgonzalez@suse.com

- version 4.1.11-1
- make media.1/products available for every channel. Needed for
  autoinstallation of SLE15 SP2 (bsc#1173204)

-------------------------------------------------------------------
Tue Jun 23 17:20:14 CEST 2020 - jgonzalez@suse.com

- version 4.1.10-1
- Only check strongest available Ubuntu/Debian repository index checksum
- Verify GPG signature of Ubuntu/Debian repository metadata (Release file)

-------------------------------------------------------------------
Wed Jun 10 12:14:57 CEST 2020 - jgonzalez@suse.com

- version 4.1.9-1
- Allow spacewalk-repo-sync to sync empty DEB repositories.
- supportconfig speedup fixes, add option to not compress spacewalk-debug output dir
- Prevent failure when syncing from RHEL CDN due extra params (bsc#1171885)
- Ubuntu repos sync uses http proxy (bsc#1168845)

-------------------------------------------------------------------
Wed May 20 10:53:18 CEST 2020 - jgonzalez@suse.com

- version 4.1.8-1
- reposync speedup fixes, which require psycopg2 to be at least version 2.8.4
- use default sender address from web namespace
- Enable extra HTTP headers support for "spacewalk-repo-sync".
- Add missing Zypper plugin to deal with ULN repositories.

-------------------------------------------------------------------
Mon Apr 13 09:32:22 CEST 2020 - jgonzalez@suse.com

- version 4.1.7-1
- validate cached package entries on ISS slave (bsc#1159184)
- restore config namespace in debian repo module to fix
  autogeneration of bootstrap repos
- send CreateBootstrapRepoFailed Notification

-------------------------------------------------------------------
Thu Mar 19 12:07:22 CET 2020 - jgonzalez@suse.com

- version 4.1.6-1
- Read MODULARITYLABEL tag from RPM packages

-------------------------------------------------------------------
Wed Mar 11 10:49:22 CET 2020 - jgonzalez@suse.com

- version 4.1.5-1
- Add Ubuntu repository checksum index checking for flat and default repository formats
- Always use the same RPM database when running "spacewalk-repo-sync"
  from the command line or via taskomatic (bsc#1163468)
- call mgr-create-bootstrap-repo after repo sync
- fix mgrcfg-client python3 breakage (bsc#1164309
- Remove oracle backend support and tests
- remove code to handle tables used for forwarding registrations
  to NCC.

-------------------------------------------------------------------
Mon Feb 17 12:47:56 CET 2020 - jgonzalez@suse.com

- version 4.1.4-1
- Remove auditlog-keeper
- update doc link to point to new documentation server

-------------------------------------------------------------------
Thu Jan 30 14:48:13 CET 2020 - jgonzalez@suse.com

- version 4.1.3-1
- Prevent timestamp format exception on mgr-inter-sync while processing comps (bsc#1157346)

-------------------------------------------------------------------
Wed Jan 22 12:10:51 CET 2020 - jgonzalez@suse.com

- version 4.1.2-1
- When downloading repo metadata, don't add "/" to the repo url if it already ends with one (bsc#1158899)
- Use HTTP proxy settings when fetching the mirrorlist on spacewalk-repo-sync (bsc#1159076)
- enhance suseProducts via ISS to fix SP migration on slave server (bsc#1159184)
- generate metadata with empty vendor (bsc#1158480)
- prevent a traceback when reposyncing openSUSE 15.1 (bsc#1158672)
- close config files after reading them (bsc#1158283)
- Associate VMs and systems with the same machine ID at bootstrap (bsc#1144176)

-------------------------------------------------------------------
Wed Nov 27 16:58:20 CET 2019 - jgonzalez@suse.com

- version 4.1.1-1
- Revert fixes systems that do not yet use systemd as spacewalk-backend
  is no more part of client tools (replaced by uyuni-base)
- convert spacewalk-backend to a python3 only package
- fix spacewalk-update-signatures for python3 (bsc#1156521)
- port diskcheck utility to 4.0.3 branch (bsc#1156397)
- add systemd service macros for diskcheck.service
- removed spacewalk-backend-libs subpackage; replaces by uyuni-common-libs
- read LOBs explicitly
- Bump version to 4.1.0 (bsc#1154940)
- Improve error message when deleting channel that's in a content lifecycle project (bsc#1145769)
- fix specfile for systems that do not yet use systemd
- fix problems with Package Hub repos having multiple rpms with same NEVRA
  but different checksums (bsc#1146683)
- fix re-registration with re-activation key (bsc#1154275)
- Change the default value of taskomatic maxmemory to 4GB
- Add basic support for importing modular repositories
- Add script to update additional fields in the DB for existing Deb packages
- use active values for diskchecker mails
- parse restart_suggested flag from patches and set it as keywords (bsc#1151467)
- Import additional fields for Deb packages
- do not require parameters to start on column 1
- Add Requires: systemd for completeness
- create /usr/lib/systemd/systemd during build
- BuildRequires: systemd for spacewalk-diskcheck
- add option spacecheck_shutdown; tidy up wording of notifications
- add disk space checker script
- Prevent "reposync" crash when handling metadata on RPM repos (bsc#1138358)
- Do not show expected WARNING messages from "c_rehash"
- fix misspelling in spacewalk-repo-sync (bsc#1149633)
- remove credentials also from potential rhn.conf backup files in spacewalk-debug (bsc#1146419)
- Do not crash 'rhn-satellite-exporter' with ModuleNotFound error (bsc#1146869)
- Don't skip Deb package tags on package import (bsc#1130040)
- For backend-libs subpackages, exclude files for the server
  (already part of spacewalk-backend) to avoid conflicts (bsc#1148125)
- prevent duplicate key violates on repo-sync with long changelog
  entries (bsc#1144889)
- spacewalk-remove-channel check that channel doesn't have cloned channels before deleting it (bsc#1138454)
- Fix broken spacewalk-data-fsck utility (bsc#1131556)
- /etc/rhn also was packaged for spacewalk-backend-tools
- Add '--latest' support for reposync on DEB based repositories
- Require uyuni-base-common for /etc/rhn
- Do not try to download RPMs from the unresolved mirrorlist URL
- Fix encoding issues with DB bytes values (bsc#1144300)
- Avoid traceback on mgr-inter-sync when there are problems
  with cache of packages (bsc#1143016)
- do not overwrite comps and module data with older versions
- fix issue with "dists" keyword in url hostname
- import packages from all collections of a patch not just first one

-------------------------------------------------------------------
Thu Aug 01 12:43:45 CEST 2019 - jgonzalez@suse.com

- version 4.0.19-1
- Fix import of rhnAuthPAM to avoid issues when using rhnpush.

-------------------------------------------------------------------
Wed Jul 31 17:30:57 CEST 2019 - jgonzalez@suse.com

- version 4.0.18-1
- Ensure bytes type when using hashlib to avoid traceback
  on XMLRPC call to "registration.register_osad" (bsc#1138822)
- Fix for CVE-2019-10136. An attacker with a valid, but expired,
  authenticated set of headers could move some digits around,
  artificially extending the session validity without modifying
  the checksum. (bsc#1136480)
- Do not duplicate "http://" protocol when using proxies with "deb"
  repositories (bsc#1138313)
- Fix reposync when dealing with RedHat CDN (bsc#1138358)
- Prevent FileNotFoundError: repomd.xml.key traceback (bsc#1137940)
- Add journalctl output to spacewalk-debug tarballs
- Prevent unnecessary triggering of channel-repodata tasks when GPG
  signing is disabled (bsc#1137715)
- Fix spacewalk-repo-sync for Ubuntu repositories in mirror case (bsc#1136029)
- Add support for ULN repositories on new Zypper based reposync.

-------------------------------------------------------------------
Wed May 15 17:06:26 CEST 2019 - jgonzalez@suse.com

- version 4.0.17-1
- use new names in code for client tool packages which were renamed (bsc#1134876)

-------------------------------------------------------------------
Wed May 15 15:07:45 CEST 2019 - jgonzalez@suse.com

- version 4.0.16-1
- SPEC cleanup
- Fix password prompt within mgr-sign-metadata
- Fix TypeError for 'errata.getErrataInfo' XMLRPC handler (bsc#1132346)
- fix typo in syncing product extensions (bsc#1118492)
- Fix mgr-sign-metadata-ctl checking of exported keys.

-------------------------------------------------------------------
Thu Apr 25 18:00:41 CEST 2019 - jgonzalez@suse.com

- version 4.0.15-1
- Use suseLib.get_proxy to get the HTTP proxy configuration 
  properly on DEB repos (bsc#1133424)

-------------------------------------------------------------------
Mon Apr 22 12:07:39 CEST 2019 - jgonzalez@suse.com

- version 4.0.14-1
- Add support for mirrorlist and metalink on Zypper reposync.
- Solve situations where synced packages have epoch 0 but reposync
  does not find them them on the database.
- Fix path to the RPM database used by Zypper at reposync.
- add makefile for python linter and unit/integration tests

-------------------------------------------------------------------
Mon Apr 08 10:26:33 CEST 2019 - jgonzalez@suse.com

- version 4.0.13-1
- fix linking of packages in reposync (bsc#1131677)

-------------------------------------------------------------------
Fri Mar 29 10:29:46 CET 2019 - jgonzalez@suse.com

- version 4.0.12-1
- Include arch to distinct latest packages on reposync.
- Migrate missing spacewalk-cfg-get script to Python3
- Improve dependency solving algorithm for spacewalk-repo-sync.

-------------------------------------------------------------------
Mon Mar 25 16:41:48 CET 2019 - jgonzalez@suse.com

- version 4.0.11-1
- remove apache access_compat module and adapt config files
- Add support for getting latest versions from RPM packages
  when running "spacewalk-repo-sync" after migration to Zypper.
- Include packages dependencies on "spacewalk-repo-sync" when using filters
  for RPM packages.
- Allow package filtering (name matching) on spacewalk-repo-sync after
  migrating away from yum.
- Fix crash when importing new channel families on 'mgr-inter-sync' (bsc#1129300)
- Make Zypper to use the spacewalk GPG keyring in reposync (bsc#1128529)
- Fix: handle non-standard filenames for comps.xml (bsc#1120242)
- Make reposync use and append token correctly to the URL
- Avoid DB constraint violations caused by extended UTF8 characters on the RPM headers
- Prevent mgr-inter-sync crash because 'SuseProductRepository' not found (bsc#1129300)
- Fix invalid mode error when doing spacewalk-repo-sync on Ubuntu
  official repos.

-------------------------------------------------------------------
Tue Mar 12 11:20:08 CET 2019 - jgonzalez@suse.com

- version 4.0.10-1
- Make sure the package download url does not have '//' (bsc#1127488)
- Fix bootstrapping SLE15 traditional client (bsc#1128564)

-------------------------------------------------------------------
Mon Mar 04 09:54:01 CET 2019 - jgonzalez@suse.com

- version 4.0.9-1
- fix reading LOB objects with python3

-------------------------------------------------------------------
Sat Mar 02 00:09:45 CET 2019 - jgonzalez@suse.com

- version 4.0.8-1
- Fix "mgr-inter-sync" problems after Python 3 migration.
- mgr-sign-metadata can optionally clear-sign metadata files
- Added 'mgr-sign-metadata-ctl' for repository metadata signing

-------------------------------------------------------------------
Wed Feb 27 12:59:35 CET 2019 - jgonzalez@suse.com

- version 4.0.7-1
- Allow errata import from local repositories.
- Fix "rhnpush" after migration to Python 3.
- Fix package import issues when package encoding is ISO8859-1.
- Fix issues with HTTP proxy and reposync.
- Solve Python 3 problem and allow traditional registration.

-------------------------------------------------------------------
Fri Feb 08 17:38:16 CET 2019 - jgonzalez@suse.com

- version 4.0.6-1
- Add "python-urlgrabber" as a new dependency.
- Fix Python3 issues on satellite_tools scripts

-------------------------------------------------------------------
Thu Jan 31 09:40:56 CET 2019 - jgonzalez@suse.com

- version 4.0.5-1
- Use "Zypper" and "libsolv" in "spacewalk-repo-sync". Replace "yum".
- Require the correct dependency for python-rpm to allow the Proxy
  to work with Python3 only
- Make rhn-ssl-dbstore compatible with python3

-------------------------------------------------------------------
Wed Jan 16 12:21:06 CET 2019 - jgonzalez@suse.com

- version 4.0.4-1
- Take only text files from /srv/salt to make spacewalk-debug smaller (bsc#1103388)
- move channel update close to commit to avoid long lock (bsc#1121424)
- Adapt Inter Server Sync code to new SCC sync backend

-------------------------------------------------------------------
Mon Dec 17 14:34:38 CET 2018 - jgonzalez@suse.com

- version 4.0.3-1
- Fix issue raising exceptions 'with_traceback' on Python 2
- Hide Python traceback and show only error message (bsc#1110427)
- honor renamed postgresql10 log directory for supportconfig

-------------------------------------------------------------------
Fri Oct 26 10:06:41 CEST 2018 - jgonzalez@suse.com

- version 4.0.2-1
- support mirroring of source packages
- Make spacewalk-backend code compatible with Python 3
- Channels to be actually un-subscribed from the assigned systems when being removed
  using spacewalk-remove-channel tool(bsc#1104120)
- Prepare spacewalk-backend packages to build on Python 3
- Replace PyPAM with python-python-pam

-------------------------------------------------------------------
Fri Aug 10 15:13:14 CEST 2018 - jgonzalez@suse.com

- version 4.0.1-1
- Bump version to 4.0.0 (bsc#1104034)
- Fix copyright for the package specfile (bsc#1103696)
- fix directory permissions (bsc#1101152)
- Feature: implement optional signing repository metadata
- Fix truncated result message of server actions (bsc#1039043)
- Do not copy 'foreign_entitlement' from virtual host to the
  registered guest (bsc#1093381) 
- Disable Oracle support for openSUSE (bsc#1095804)

-------------------------------------------------------------------
Tue Jun 05 10:03:59 CEST 2018 - jgonzalez@suse.com

- version 2.8.57.5-1
- spacewalk-debug: add Postgres configuration files
- Initial branding change for Uyuni (bsc#1094497)

-------------------------------------------------------------------
Wed May 16 17:20:45 CEST 2018 - jgonzalez@suse.com

- version 2.8.57.4-1
- Bugfix: do not fail boostrap if no ip6addr interface (bsc#1090395)
- allow again to use a higher version of spacewalk-backend-libs
  with spacewalk-backend (bsc#1092383)

-------------------------------------------------------------------
Mon May 07 14:59:31 CEST 2018 - jgonzalez@suse.com

- version 2.8.57.3-1
- Sync with upstream (bsc#1083294)

-------------------------------------------------------------------
Mon Apr 23 09:00:29 CEST 2018 - jgonzalez@suse.com

- version 2.8.57.2-1
- Fix encoding for RPM package group in reposync (bsc#1083001)
- Sync with upstream (bsc#1083294)
- 1567157 - remove 'www' part from cve.mitre.org domain name
- 1198723 - rhnRepository.py: add support for Debian / Ubuntu Release files
- 1549546 - Allow spacewalk-channel to add parent channel

-------------------------------------------------------------------
Wed Apr 04 12:09:11 CEST 2018 - jgonzalez@suse.com

- version 2.8.56.3-1
- Temporary revert bsc#1083001

-------------------------------------------------------------------
Thu Mar 29 01:22:02 CEST 2018 - jgonzalez@suse.com

- version 2.8.56.2-1
- SLE15 support: recommended/required flag for products and
  channels (bsc#1087373)

-------------------------------------------------------------------
Mon Mar 26 08:46:00 CEST 2018 - jgonzalez@suse.com

- version 2.8.56.1-1
- Sync with upstream (bsc#1083294)
- Updating .po translations from Zanata
- Fixing incorrect syntax of format string
- Fixing newline error in translation

-------------------------------------------------------------------
Mon Mar 05 09:17:05 CET 2018 - jgonzalez@suse.com

- version 2.8.52.1-1
- 1550001 - KeyError: 'severity' caught when exporting channel with rhn-satellite-exporter
- 1534417 - sanitize pwds in backup files and http-proxy-pwds as well
- remove empty clean section from spec (bsc#1083294)

-------------------------------------------------------------------
Fri Feb 23 10:52:03 CET 2018 - jgonzalez@suse.com

- version 2.8.48.1-1
- 1540981 - Clarify error-reporting when checksum_cache is bad
- 1537098 - Teach packageImport to ignore flags RPM doesn't know
- add --no-packages option to spacewalk-repo-sync
- use --force-all-errata only to re-sync patches
  --deep-verify still used for package checksum check and single
  errata import (bsc#1077244)

-------------------------------------------------------------------
Mon Feb 05 12:46:38 CET 2018 - jgonzalez@suse.com

- version 2.8.41.3-1
- use GTM for rpm build_time (bsc#1078056)

-------------------------------------------------------------------
Fri Feb 02 12:00:22 CET 2018 - jgonzalez@suse.com

- version 2.8.41.2-1
- fix spacewalk-data-fsck restore of broken package db entry (bsc#1071526)
- support multiple FQDNs per system (bsc#1063419)

-------------------------------------------------------------------
Wed Jan 17 11:51:01 CET 2018 - jgonzalez@suse.com

- version 2.8.37.1-1
- fix issues with syncing deb repos (bsc#1050433)
- honor MAX_LOG_AGE for (renamed) cobbler/tasks logs file
  in spacewalk-debug (bsc#1025201)
- add hostname to duplicate machine_id email (bsc#1055292)
- fix link to manual and the described procedure
- don't crash when token is set to 'fake' (bsc#1060022)
- when searching for not installed products exclude release packages
  which are provided by others (bsc#1067509)
- search for product packages when installed packages are available
  (bsc#1060182)
- rhnServerNetwork refactoring (bsc#1063419)
- Fix: restore hostname and ip*addr in templated documents (bsc#1075044)
- fix directory name in spacewalk-data-fsck
- search for product packages when installed packages are available
  (bsc#1060182)
- rhnServerNetwork refactoring (bsc#1063419)

-------------------------------------------------------------------
Fri Nov 10 16:30:32 CET 2017 - mc@suse.de

- version 2.8.27.1-1
- Change the virtualization backend not to duplicate data in case
  host and guests are in different organizations
- fix joining strings
- yum ContentSource() should set number of packages during raw listing.
- convert release to long while checking which is older or newer
- Do not import ignored errata
- process comps file before package import
- yum on RHEL6 has no idea about environments
- make rhn_rpm python3 compatible
- open checksummed files in binary mode
- mention package groups in help
- detect and parse package groups in filters
- add new spacewalk-repo-sync command line option to synopsis of man-page
- add new parameter '--show-packages' for spacewalk-repo-sync.

-------------------------------------------------------------------
Thu Oct 26 17:12:49 CEST 2017 - mc@suse.de

- version 2.8.15.1-1
- build python3 subpackage for -libs package
- fix issues with syncing deb repos (bsc#1050433)
- honor MAX_LOG_AGE for (renamed) cobbler/tasks logs file
  in spacewalk-debug (bsc#1025201)
- add hostname to duplicate machine_id email (bsc#1055292)
- fix link to manual and the described procedure
- don't crash when token is set to 'fake' (bsc#1060022)
- when searching for not installed products exclude release packages
  which are provided by others (bsc#1067509)

-------------------------------------------------------------------
Thu Sep 14 11:40:39 CEST 2017 - mc@suse.de

- version 2.7.73.9-1
- Fix SP migration for traditional clients which were registered
  by a currently disabled user (bsc#1057126)

-------------------------------------------------------------------
Wed Aug 30 16:03:25 CEST 2017 - mc@suse.de

- version 2.7.73.8-1
- increase rpclib timeout to 10 minutes (bsc#1026930)

-------------------------------------------------------------------
Wed Aug 09 12:11:50 CEST 2017 - fkobzik@suse.de

- version 2.7.73.7-1
- disable pylint check during build also for RHEL7

-------------------------------------------------------------------
Tue Aug 08 11:07:41 CEST 2017 - fkobzik@suse.de

- version 2.7.73.6-1
- make master_label static to keep its value when retrying (bsc#1038321)
- adapt for the new gpgcheck flag for the channels

-------------------------------------------------------------------
Mon Jun 12 09:11:59 CEST 2017 - mc@suse.de

- version 2.7.73.5-1
- Removing conflicting epoch fix (bsc#1042861)
- remove not implemented option --force-all-packages (bsc#1040194)
- fix parsing oscap results - not every Rule has an
  XCCDF ID Tag (bsc#1041992)

-------------------------------------------------------------------
Mon May 29 16:08:58 CEST 2017 - mc@suse.de

- version 2.7.73.4-1
- move to different file to not conflict with web.default_mail_from
  in Java code
- don't trim channel content if there is major sync error in any
  repository
- disable pylint on Fedora 26 because it's python3
- rhn-charsets is meant to be run only under root user
- hashlib is included in python since RHEL6
- Unable to run cdn-sync if older channels do not exist anymore

-------------------------------------------------------------------
Tue May 23 08:55:07 CEST 2017 - mc@suse.de

- version 2.7.73.3-1
- add missing bugnumber to changelog

-------------------------------------------------------------------
Tue May 23 07:51:37 CEST 2017 - mc@suse.de

- version 2.7.73.2-1
- don't let disabled user log in
- updating help and man page
- satellite-sync (iss) - enhancements to channel selection
- make batch size configurable
- wildcard support for channel names
- optimize linking packages to channel
- disassociate packages later or keep them in channel if
  they are same but missing package path
- Rename incomplete_package_import to package_import_skip_changelog
- spacewalk-backend should require the exact version of spacewalk-backend-libs
  (bsc#1037635)
- try to finish work in threads when KeyboardInterrupt occurs during
  download
- fix errata lookup for NULL org
- optimize package importing during syncing a software channel
- allow sync of the same erratum to more orgs

-------------------------------------------------------------------
Thu May  4 10:23:23 UTC 2017 - can.bulut.bayburt@suse.com

-  Non admin or disabled user cannot make changes to a system anymore
   using spacewalk-channel (CVE-2017-7470) (bsc#1026633)

-------------------------------------------------------------------
Wed May 03 16:56:32 CEST 2017 - michele.bologna@suse.com

- version 2.7.73.1-1
- Repository sync can causes ORA-01878 on insertion of timestamp that
  doesn't exist in timezone - fix python 2.4 build
- do not store SSL certificates per repository on disk cache
- Prevent ORA-01878 on repository sync.
- default_mail_from key exists but may be empty
- (bsc#1024923) fixed a typo in SQL statement

-------------------------------------------------------------------
Mon Apr 03 14:51:38 CEST 2017 - mc@suse.de

- version 2.7.65.1-1
- update man page
- adding Candlepin API to call manifest refresh
- call Candlepin API to download manifests and implement missing
  pieces of code
- adding handler for calling Candlepin API requests with export
  manifest support

-------------------------------------------------------------------
Fri Mar 31 10:01:31 CEST 2017 - mc@suse.de

- version 2.7.63.1-1
- create scap files dir beforehand (bsc#1029755)
- do not fail with traceback when media.1 does not exist (bsc#1032256)
- adapt new proxy setting
- python3 compatibility changes
- filter channels to removed by patern with '*' - e.g. 'fedora19*'
  interrupt downloading
- if package was not downloaded and message-less Exception catched,
  don't print empty line and don't print to stream on default verbose setting
- show list of non-available channels at the beginning of syncing
- ignore channels which are not exist or not available
- show error message if we cannot download repomd.xml during counting
  packages
- fix http proxy configuration for yum_src
- fix package downloading for Kickstart addons. Add parsing repodata
  for addons repository and download all packages according to its location.
- fix reading repo certificates (bsc#1029022)
- fixing 'WARNING:  there is already a transaction in progress' in
  postgresql logs
- cleanup orphaned repositories not attached to any channel
- ContentSourceImport can't unlink last associated repository, do it
  differently
- break mappings dependency on spacewalk
- list custom CDN channels and sorting repositories
- make sure content is in null org, not in custom org
- filter channels with lost entitlement and include custom repos with
  null content source assigned
- Move aa-spacewalk-server.conf to backend from server
- do not package common/__init__ to prevent file conflicts with spacewalk-usix
- incomplete_package_import: do import rhnPackageFile as it breaks some package
  installations

-------------------------------------------------------------------
Tue Mar 07 15:04:25 CET 2017 - mc@suse.de

- version 2.7.50.1-1
- Don't skip 'rhnErrataPackage' cleanup during an errata update (bsc#1023233)
- set scap store dir mod to 775 and group owner to susemanager
- fix errata sync
- provide option for forcibly syncing all errata, similarly as in
  satsync
- do not import always all errata by default for performance reasons
- don't re-insert existing files again
- Updated links to github in spec files
- sync RPM packages for addons in Kickstart Tree
- Add support for running spacewalk-debug without creating reports.
  (bsc#1024714)
- install product packages during traditional registration
- Fix selection of primary interface
- trigger repodata generation after and only if channel packages are
  updated
- do not re-subscribe packages to channel if nothing was added
- Remove legacy audit logging Python code
- Add strict-httpd-workaround *FIRST* in httpd conf files
- Postgresql 9.6 support
- fixing 'ERROR: expected a readable buffer object' on Oracle
- catch exception InvalidArchError and send back an error message
- require spacewalk-usix indead of spacewalk-backend-usix
- support importing KS files with other checksum type than md5
- adding more details of current SSL certificates in DB
- support creating repository tree with only repos provided by single
  client certificate
- catch on higher level to not mark missing repositories as found
  repositories with no SSL certificates
- check SSL dates in reposync

-------------------------------------------------------------------
Tue Feb 07 17:48:48 CET 2017 - michele.bologna@suse.com

- version 2.7.28.1-1
- Align with upstream versioning

-------------------------------------------------------------------
Wed Jan 11 15:49:50 CET 2017 - michele.bologna@suse.com

- version 2.7.18.1-1
- Version 2.7.18-1

-------------------------------------------------------------------
Fri Dec 16 12:10:26 CET 2016 - michele.bologna@suse.com

- version 2.5.24.7-1
- Handle non-unique machine_id after migrate from 2.1 (bsc#1013002)
- Refer to scc.suse.com instead of bugzilla.novell.com in case of problem
  (bsc#967818)
- Fix: selection of primary interface bsc#1009677
- spacewalk-backend.spec: add link to SUSE name of program (bsc#1009435)
- Reposync - assign orphaned vendor packages to the default org (bsc#995764)

-------------------------------------------------------------------
Thu Oct 06 16:09:07 CEST 2016 - mc@suse.de

- version 2.5.24.6-1
- Fix for non-integer IDs for bugzilla bug
- silently ignore non-existing errata severity label on errata import,
  remove non-used exception (bsc#986447, bsc#996609)
- make suseLib usable on a proxy

-------------------------------------------------------------------
Mon Jul 18 13:55:56 CEST 2016 - jrenner@suse.com

- version 2.5.24.5-1
- copy the subscription-matcher directory instead of the content
- machine_info capability and check for client tool compatibility with Suma 2.1
- modify test setup for oracle DB

-------------------------------------------------------------------
Tue Jun 14 12:45:36 UTC 2016 - kwalter@suse.com

- add machine info capability

-------------------------------------------------------------------
Tue May 24 15:08:01 CEST 2016 - kwalter@suse.com

- version 2.5.24.4-1
- spacewalk-repo-sync - Improved date handling (bsc#975161)
- better error message for system that is already registered as minion
- Only trigger virtualization notification on server save when the
  virtualization data is not falsy (bsc#975120)
- fix GPG bad signature detection and improve error messages (bsc#979313)
- send and save machine_id on traditional registration
- vendor channels may have no repo assigned (bsc#977781)
- do not crash now that multiple urls are passed (bnc#970951)

-------------------------------------------------------------------
Wed Apr 06 08:40:42 CEST 2016 - mc@suse.de

- version 2.5.24.3-1
- Include the Matcher data directory in supportconfig
- qemu-kvm guests created on my Fedora 22 have different signature
- fix SLE12 patch style detection in case of cloned patches (bsc#972972)
- Grab the entire pillar structure at once
- trigger regeneration of metadata on product or keyword changes (bsc#972096)
- Find all user configured places of the custom pillars and get an info about
  them
- Rename static Salt states directory
- Gather also static pillars
- Add missing title about custom Salt states
- Check if directory exists at all prior checking its content
- Copy all Salt state files and generated pillars
- Copy all Salt Master configuration

-------------------------------------------------------------------
Mon Mar 21 17:48:47 CET 2016 - mc@suse.de

- version 2.5.24.2-1
- Fix rhnreg_ks doesn't work with activation key
- update checksumtype after setting the SSL values (bsc#970824)

-------------------------------------------------------------------
Wed Mar 09 10:47:12 CET 2016 - mc@suse.de

- version 2.5.24.1-1
- include salt master config files into spacewalk-debug
- we need to import either cx_Oracle or psycopg2
- better never import foreign private channel families, custom
  channels will be synced into your org anyway
- org_id of channel family is probably never filled, just not make
  private channel families public
- all strings should be truncated, not only unicode instances

-------------------------------------------------------------------
Wed Mar 02 12:16:58 CET 2016 - mc@suse.de

- version 2.5.22.1-1
- make sure truncated value does not contain incomplete characters
- allow sat-sync-error-email to be configurable
- Remove custom latest RPM handling in spacewalk-repo-sync and use
  the same logic as reposync from yum-utils instead.
- honor no_proxy variable in InterServerSync (bsc#965651)

-------------------------------------------------------------------
Wed Feb 10 08:38:56 CET 2016 - mc@suse.de

- version 2.5.18.1-1
- provide empty no_proxy variable for reference in rhn.conf
- do not import errata to all synced channels because some may not
  have all packages synced
- advise users to purge satsync cache on IntegrityError
- making sure packages without errata are included
- fixing invalid query

-------------------------------------------------------------------
Tue Jan 26 14:19:55 CET 2016 - mc@suse.de

- version 2.5.13.1-1
- update guest also on re-registration
- allow to change uuid of already registered guests
- there can be guests without hypervisor registered
- fixing exception when reactivating system without base channel and without
  any available
- use 2048MB as default for taskomatic max java memory
- add comment about taskomatic jvm max memory to rhn.conf (bsc#957653)
- Added filename in the error message of satellite-sync, in case file
  has wrong size
- Added processing of ValueError exception, during spacewalk-data-
  fsck
- local variable 'primif' referenced before assignment

-------------------------------------------------------------------
Sat Jan 16 11:39:21 CET 2016 - mc@suse.de

- version 2.5.10.1-1
- cleaning few old translations

-------------------------------------------------------------------
Thu Jan 14 13:37:12 CET 2016 - mc@suse.de

- version 2.5.9.1-1
- removing old duplicate template file
- allow client responses to be in Unicode
- cut string after full characters (bsc#960801)

-------------------------------------------------------------------
Tue Jan 05 15:57:59 CET 2016 - mc@suse.de

- version 2.5.8.2-1
- update CPU only if it has changed
- set "last_boot" and "os" for the host
- read SystemInfomation, create a foreign mainframe system
  and link to virtual instance
- add "mainframe_sysinfo" capability

-------------------------------------------------------------------
Wed Dec 16 11:18:47 CET 2015 - mc@suse.de

- version 2.5.8.1-1
- making synced channels in null org visible to all orgs
- during installation insert default SSL crypto key with null org
- fix typos

-------------------------------------------------------------------
Thu Dec 10 17:58:23 CET 2015 - mc@suse.de

- version 2.5.4.2-1
- avoid referencing unassigned variable (bsc#956981)

-------------------------------------------------------------------
Mon Nov 30 11:36:32 CET 2015 - mc@suse.de

- version 2.5.4.1-1
- Fix lookup virtual instance by uuid in virtualization backend in case so that
  it ignores the host id when uuid is not null. Removed invalid comment.
- Change the virtualization backend not to duplicate data in case host and
  guests are in different organizations
- fix patch syning if no issued date is given. Use now as date (bsc#953584)
- fix SUSE patch style detection for RES4 (bsc#953825)
- move support report creation to spacewalk-debug
- don't print python object details in reposync.py
- spacewalk-repo-sync: support multiple '-c channel' as in satellite-sync

-------------------------------------------------------------------
Thu Oct 22 16:35:50 CEST 2015 - mc@suse.de

- version 2.5.1.2-1
- use sle_version macro while checking for SLE only

-------------------------------------------------------------------
Wed Oct 07 14:53:10 CEST 2015 - mc@suse.de

- version 2.5.1.1-1
- drop monitoring
- replace upstream subscription counting with new subscription
  matching (FATE#311619)
- integrate SaltStack for configuration management (FATE#312447)

-------------------------------------------------------------------
Sun Sep 27 14:44:12 CEST 2015 - mc@suse.de

- version 2.1.55.21-1
- read repository checksum type after setting the certificate
  for a repository

-------------------------------------------------------------------
Wed Sep 23 15:10:55 CEST 2015 - mc@suse.de

- version 2.1.55.20-1
- define db_password to be read as a string (bsc#946381)

-------------------------------------------------------------------
Wed Jul 29 14:53:27 CEST 2015 - mc@suse.de

- version 2.1.55.19-1
- Enhance date only in patches to full ISO datetime (bsc#937029)
- Fix UnboundLocalError on rhnFault in dist upgrade (bsc#936182)
- detect new and old SUSE patch style (bsc#936869)

-------------------------------------------------------------------
Tue Jun 23 11:12:57 CEST 2015 - jrenner@suse.de

- version 2.1.55.18-1
- Require pyliblzma to enable sync of EPEL repos (bsc#934417)

-------------------------------------------------------------------
Mon Jun 22 16:15:43 CEST 2015 - jrenner@suse.de

- version 2.1.55.17-1
- detect SUSE Manager Tools channel as well (bsc#935433)
- import RPMs which vendor is an empty string (bsc#934124)
- set primary interface during registration (bnc#929058)
- do not reset primary network interface at hardware refresh (bnc#895071)

-------------------------------------------------------------------
Tue Mar 31 14:55:31 CEST 2015 - mc@suse.de

- version 2.1.55.16-1
- Copyright texts updated to SUSE LLC
- package inventory and channel report into spacewalk-debug
- Adding on the spacewalk-data-fsck man page the option --remove-mismatch
- add funcionality on spacewalk-data-fsck to remove the RPM which does not
  match checksum
- Fix the primary key definition for rhnPackageFile
- don't crash re-registrations if the original owner has been deleted
- sw-repo-sync fix to sync kickstart.
- init the second DB connection only when needed (inspired by bsc#915581)
- check for reboot type only (inspired by bsc#915581)

-------------------------------------------------------------------
Tue Feb 03 12:05:52 CET 2015 - mc@suse.de

- version 2.1.55.15-1
- convert mtime to localtime to prevent invalid times because of DST
  (bsc#914437)
- Do not exit with error if a vendor channel has no URL associated
  (bsc#914260)
- Getting rid of Tabs and trailing spaces
- copy all SUSE Manager logfiles into spacewalk-debug
- Update spacewalk-debug man page
- Exclude old backup-logs from spacewalk-debug to reduce size
- fix ISS export with unset patch severity
- ISS export/import informations about cloned channels (FATE#317789)
- convert empty string to null for DMI values (bsc#911272)

-------------------------------------------------------------------
Thu Dec 18 13:38:25 CET 2014 - mc@suse.de

- version 2.1.55.14-1
- fix encoding of submit message
- create (and label) /var/cache/rhn/satsync
- fixed double-counting of systems subscribed to more than one
  channel

-------------------------------------------------------------------
Thu Dec 04 16:31:03 CET 2014 - mc@suse.de

- version 2.1.55.13-1
- insert update tag at the correct place for SLE12 (bsc#907677)
- different registration paths should lock tables in the same order
  This could potentially cause deadlocks
- spacewalk-data-fsck: use config file variable instead of hardcoded path part
- drop unused column product_list in suseProducts table
- sanitize db_* config values

-------------------------------------------------------------------
Mon Nov 24 13:49:38 CET 2014 - mc@suse.de

- trigger generation of metadata if the repo contains no packages
  (bsc#870159)

-------------------------------------------------------------------
Fri Nov 07 13:27:27 CET 2014 - mc@suse.de

- version 2.1.55.12-1
- With NCC Backend still use the old style ISS method
- Make spacewalk-debug scc migration compatible

-------------------------------------------------------------------
Sat Nov 01 15:54:13 CET 2014 - mc@suse.de

- version 2.1.55.11-1
- ISS: Ignore errors if deprecated files do not exist on export
- ISS: export/import Subscriptions and entitlements
- ISS: remove old import code for NCC products and subscriptions
- ISS: export/import suseProductChannels and suseUpgradePaths via ISS
- ISS: export/import SUSE Products via ISS
- Fix cleanup when DB init goes wrong
- sanitize db_name config value
- fixed variable name

-------------------------------------------------------------------
Tue Oct 14 14:57:25 CEST 2014 - mc@suse.de

- version 2.1.55.10-1
- require python-enum34
- update channel checksum type for vendor channels
- read mirror credenatials from DB depending on the cc_backend.
- move current_backend() from susemanager to backend and rename it to
  current_cc_backend
- Speed up satellite-sync by avoiding commonly-called dblink_exec
- backend should correctly checksum config files with macros in them
- Add /usr/share/rhn/config-defaults in spacewalk-debug
- fix spacewalk-debug to be fully postgreSQL aware.
- correct UTF8 config files from being marked as binary
- increase size of update_tag column in rhnChannel table

-------------------------------------------------------------------
Fri Sep 12 15:34:51 CEST 2014 - mc@suse.de

- version 2.1.55.9-1
- preserve the query params in the url
- allow missing packages in patches if they are not part of this repo
- handle SLE12 update tag correctly in reposync
- fix traceback when pushing rpms with archive size > 4GB
- queue server for errata cache update when package list changes
- recognize oVirt node as virtual system
- adding handling for new rpm header information

-------------------------------------------------------------------
Wed Sep  3 01:41:39 CEST 2014 - ro@suse.de

- sanitize release line in specfile

-------------------------------------------------------------------
Tue Jun 17 11:04:37 CEST 2014 - jrenner@suse.de

- version 2.1.55.8-1
- Additional spacewalk backend methods and capability needed
- Spacewalk changes needed to support collisionless proxy lookaside

-------------------------------------------------------------------
Tue May 27 17:14:40 CEST 2014 - mc@suse.de

- version 2.1.55.7-1
- Fix crash when EULA comes with broken encoding and unexpected
  symbols from the susedata.xml file

-------------------------------------------------------------------
Thu May 22 14:32:50 CEST 2014 - mc@suse.de

- version 2.1.55.6-1
- spacewalk-update-signatures: fix logging, find more wrong keyids
     and remove existing associations before updating (bnc#874634)
- fixed 'empty separator' error
- Branding fixes
- fix syntax error in SQL statement

-------------------------------------------------------------------
Fri May 16 13:15:09 CEST 2014 - mc@suse.de

- version 2.1.55.5-1
- ISS: fix EULA import on Oracle db
- add suseEula to RPM package
- package and install suseEula
- ISS: sync SUSE's package EULAs
- Parse and import packages' EULAs

-------------------------------------------------------------------
Wed May 07 12:14:10 CEST 2014 - mc@suse.de

- version 2.1.55.4-1
- Revert "Adding option [-l|--list] to spacewalk-repo-sync"

-------------------------------------------------------------------
Tue May 06 15:26:31 CEST 2014 - mc@suse.de

- version 2.1.55.3-1
- remove ; in SQL statement to fix error with oracle DB
- Raise error if channel cannot be subscribed (bnc#875958)
- Format oldRoute to match newRoute, so that rhnServerPath isn't
  updated every time
- Adding option [-l|--list] to reposync
- Add --justks to sw-remove-channel
- sw-remove-channel --justdb has no impact on ks trees.
- rename channel-with-childs to channel-with-children
- Add option to spacewalk-remove-channel parent
- Added spacewalk-data-fsck man page(8)
- uniquify repo-sync packages in case of bad metadata
- allow MD5 config file checksums in fips mode
- commit after adding a job to taskomatic queue
- generate empty metadata for repos without primary
- proper failure handle (bnc#822644)

-------------------------------------------------------------------
Thu Apr 10 17:33:33 CEST 2014 - mc@suse.de

- version 2.1.55.2-1

-------------------------------------------------------------------
Thu Apr 10 17:33:22 CEST 2014 - mc@suse.de

- fix release in specfile for SLE12 (bnc#872970)

-------------------------------------------------------------------
Thu Mar 27 10:12:51 CET 2014 - fcastelli@suse.com

- version 2.1.55.1-1
- Package lock - python code: handle multiple lock events
- Catch more error message from gpg
- Reposync: remove interrupted downloads [bnc#866490]
- Not all machines provide manufacturer, was not None safe
- Spacewalk-debug: dereference links [bnc#865934]
- Specify package only with version
-------------------------------------------------------------------
Thu Feb 27 14:55:10 CET 2014 - fcastelli@suse.com

- version 2.1.54.1-1
- workaround for rpm-python bug
- update openstack guest requirements

-------------------------------------------------------------------
Fri Feb 21 15:31:07 CET 2014 - fcastelli@suse.com

- version 2.1.52.1-1
- Detect OpenStack guests as virtual so they can consume flex guest
- Rename variable so it doesn't colide with reserved word

-------------------------------------------------------------------
Thu Feb 13 15:24:31 CET 2014 - mc@suse.de

- version 2.1.49.2-1
- query should not end with semicolon in oracle
- add /usr/share/rhn to filelist
- no pre-requires of spacewalk-config on SLE12
- make unittests work on python 2.7 and higher without
  extra package installed
- no pylint on SLE12

-------------------------------------------------------------------
Fri Feb 07 13:16:58 CET 2014 - mc@suse.de

- version 2.1.49.1-1
- add functions to query ISS Master server from DB
- apply exclude filters to dependencies in repo-sync
- don't remove files referenced from other distributions/trees
- propagate --skip-kickstart-trees to delete_channels()
- remove clean-reposync-logs cronjob
- fixed man page for spacewalk-remove-channel
- added option to skip kickstart trees removal
- sw-remove-channel does not rm ks trees.
- Inter server sync: export also errata's severity
- Fixing InvalidPackageError when importing from channel dump
- commit after updating server's package profile
- Add extra log folder /var/log/rhn/tasko/sat/ in spacewalk-debug.
  [bnc#854090]
- allow CVE-IDs with more then 13 chars
  new syntax since 2014
- fixing sat-sync daylight-savings-related 'NoneType is
  unsubscriptable' error

-------------------------------------------------------------------
Mon Jan 13 09:53:00 CET 2014 - mc@suse.de

- version 2.1.39.1-1
- set reboot action status to sucess after the reboot (FATE#312591)
- added setLocked actions (FATE#312359)

-------------------------------------------------------------------
Wed Dec 18 14:05:37 CET 2013 - mc@suse.de

- version 2.1.38.2-1
- allow 1 character system profile names

-------------------------------------------------------------------
Mon Dec 09 16:02:08 CET 2013 - mc@suse.de

- version 2.1.38.1-1
- better detection for SUSE KVM and Cloud systems
- support bootstrap entitlement for bare-metal registration
  (FATE#312329)
- use new ISS slave detection

-------------------------------------------------------------------
Thu Nov 28 16:24:43 CET 2013 - mc@suse.de

- version 1.7.38.30-1
- replace encode/decode with to_string/to_unicode
- make sure we put strings to fd.write()
- replace application code with database lookup to prevent conflicting
  inserts
- python server: better logging of exceptions
- log errors on bad request (bnc#849856)
- fixed table alias
- updated spacewalk-repo-sync's man page (bnc#846351)
- add support for enhances rpm weak dependencies (backend) (bnc#846436)
- python pgsql driver: handled ProgrammingError exceptions
- Fix typos in entitlement report (bnc#840751)

-------------------------------------------------------------------
Fri Sep 27 09:59:33 CEST 2013 - mc@suse.de

- version 1.7.38.29-1
- with deep-verify import patches step by step
- check if mountpoint exists and send error mail (bnc#839111)
- bool(0) == False, but is a valid file mode

-------------------------------------------------------------------
Tue Aug 27 17:42:46 CEST 2013 - mc@suse.de

- version 1.7.38.28-1
- Ensure the file object is closed only when no IOError took place
  (bnc#837035)

-------------------------------------------------------------------
Wed Aug 21 15:54:56 CEST 2013 - mc@suse.de

- version 1.7.38.27-1
- add option to disable Expect header for post request (bnc#834200)
- re-import all patches with param deep-verify (bnc#833643)
- rewrite package org to match where they got imported (bnc#834780)
- Fix field length of erratum-advisory-name to match real DB field length
- forward register and de-register requests to parent
- debranding satellite-sync
- provide dummy repoindex handler for auth test in ISS case
- use needed mgr_ncc_sync_lib calles in satellite-sync
- copy SUSE product and subscription information into the disk dump
- add handler for ncc sync data used by iss (bnc#832776)
- package mgr-inter-sync and mgr-exporter commands (FATE#312371)
- import/export Support Information
- sync suseProductFiles with inter-server-sync
- dump and read rhn-channel-update-tag
- Add curl debugging to send and accessible (bnc#834200)
- filter out bad package/architecture combinations
- add debug code to import_susedata
- handle unicode tracebacks
- handle compressed products file
- Fix pylint errors - bnc#829073
- Fix code to work with python 2.4 - bnc#829073
- Make reposync work with local repositories - bnc#829073

-------------------------------------------------------------------
Wed Jun 12 13:26:43 CEST 2013 - mc@suse.de

- version 1.7.38.26-1
- fix reactivation of systems (bnc#823241)
- remove incorrect path from db
- Adding file path restoration functionality to spacewalk-data-fsck
- update copyright column length
- don't truncate channel name to 64 chars
- make API compatible with old RHEL5 clients
- No line break at the end of the package summary (bnc#821968)
- don't truncate filepath when exporting
- fix registration issues on PG
- update expired gpg keys in the keyring
- set copy_local urlgrabber option to copy also file URLs (bnc#819781)
- implement no_proxy usage (FATE#315039)
- use timeout config option also in suseLib send function (bnc#815460)

-------------------------------------------------------------------
Thu May 17 17:13:44 CEST 2013 - mc@suse.de

- version 1.7.38.25-1
- make satellite-sync work with new rhnlib (bnc#815460)
- search for CVE numbers also in the description
- require rhnlib with timeout option
- make rpclib connection timeout configurable (bnc#815460)
- return 404 Not Found on requests of content or installation.xml (bnc#815441)
- fix encoding in products summary and description

-------------------------------------------------------------------
Fri May 17 15:04:28 CEST 2013 - mc@suse.de

- fix authentication checking in inter server sync
  CVE-2013-2056 (bnc#819365)

-------------------------------------------------------------------
Thu Apr 04 15:32:18 CEST 2013 - mc@suse.de

- version 1.7.38.24-1
- Write better error message if the GPG key is not imported
  (bnc#812599)
- correct size for old rpms > 2 GiB
- do not read rpm into memory before transferring to client
  (bnc#801151)
- do not log passwords in URL
- If the database host is localhost, use Unix sockets in backend.
- SSH Server Push (backend) (FATE#312909)
- support V4 RSA/SHA1 signature
- Use FQDN in reposync error emails
- fix unicode encoding (bnc#803866)
- do not change the channels on future actions request

-------------------------------------------------------------------
Fri Feb 08 11:09:35 CET 2013 - mc@suse.de

- version 1.7.38.23-1
- send patch notifications only for new patches (FATE#314765)
- log with debug level, if wanted
- collect download errors and send error mail (bnc#801189)
- compare patch version as integers
- do not send null values for new products via XMLRPC (bnc#798131)
- change_base_channel should honor suse_products info if available

-------------------------------------------------------------------
Tue Dec 18 12:55:55 CET 2012 - mc@suse.de

- version 1.7.38.22-1
- fix formatstring error with proxy user and password

-------------------------------------------------------------------
Tue Nov 27 17:24:02 CET 2012 - mc@suse.de

- version 1.7.38.21-1
- remove product reference while deleting channel (bnc#790987)

-------------------------------------------------------------------
Thu Nov 22 15:28:52 CET 2012 - jrenner@suse.de

- version 1.7.38.20-1
- fix is_sha256_capable() function (bnc#790717)
- use SUSE specific proxy settings in reposync (bnc#779992)
- read proxy from rhn.conf before other places
- fix wrong variable binding (bnc#790143)
- rollback any unfinished transaction
- for the installed_size, ignore situation when it was not populated
  in the database.
- don't fail when from attribute is missing
- make sure proxy is enabled in sysconfig before reading it
- Add support for multiple mirror credentials
- SP migration backend (FATE#312431, FATE#312312)
- use smdba space-overview for report if exists
- do not return not existing patchnames (bnc#786105)
- add xmlrpc function update_status and server capability

-------------------------------------------------------------------
Fri Oct 05 10:56:43 CEST 2012 - mc@suse.de

- version 1.7.38.19-1

-------------------------------------------------------------------
Thu Oct 04 15:52:25 CEST 2012 - mc@suse.de

- version 1.7.38.18-1
- support upgrade_version without channel switching

-------------------------------------------------------------------
Fri Sep 28 16:18:24 CEST 2012 - mc@suse.de

- version 1.7.38.17-1
- load suse_products in the server object if not available
- reposync: do not use a proxy to access localhost
- Adding IPv6 ip-address detection to proxy auth fix (bnc#783667)
- separate proxy auth error hostname into separate header
- multi-tiered proxies don't update auth tokens correctly
  (bnc#783667)

-------------------------------------------------------------------
Tue Aug 07 16:40:35 CEST 2012 - mc@suse.de

- version 1.7.38.16-1
- fix SQL syntax for postgres

-------------------------------------------------------------------
Thu Aug 02 16:34:21 CEST 2012 - mc@suse.de

- version 1.7.38.15-1
- Truncating date string and therefore preventing ORA-01830
- skip ignored errata also in the second step (bnc#773108)
- fix detection of old suse style patches (bnc#773108)
- Fixing placeholder syntax in sql statement

-------------------------------------------------------------------
Thu Jul 19 14:39:32 CEST 2012 - ug@suse.de

- version 1.7.38.14-1
- yet another branding fix

-------------------------------------------------------------------
Mon Jul 16 15:10:16 CEST 2012 - ug@suse.de

- version 1.7.38.13-1
- postgresql don't know about decode
- fixed ERROR: subquery in FROM must have an alias
- fixed AttributeError: 'buffer' object has no attribute 'write'
- Correct SQL query for installing and removing solaris patches
- Correct query for PGSQL, addressing: SQL syntax error
- man page fix and root-level user warning for rhn-satellite-exporter

-------------------------------------------------------------------
Mon Jun 25 10:21:36 CEST 2012 - mc@suse.de

- version 1.7.38.12-1
- handle locally exception in entitle_server()
- made error message more detailed

-------------------------------------------------------------------
Thu Jun 21 11:35:17 CEST 2012 - jrenner@suse.de

- version 1.7.38.11-1
- removed functions which were orphaned by client v1 API removal
- fix call of save_suse_products()
- do not entitle virt guests twice during registration
- fix parsing susedata (bnc#765667)
- removed support for Red Hat Linux 6.2 and 7.[0123]
- print reasonable error message when something wrong with repo

-------------------------------------------------------------------
Wed Jun  6 11:58:16 CEST 2012 - ug@suse.de

- added a workaround for bnc#761350
  registering of a VM does not work

-------------------------------------------------------------------
Fri Jun  1 18:19:38 CEST 2012 - mc@suse.de

- fix ISE during registration because of duplicate ids
  (bnc#765123)

-------------------------------------------------------------------
Thu May 31 10:56:09 CEST 2012 - mc@suse.de

- version 1.7.38.10-1
- decode unicode string on IDN machines
- mock import_susedata
- allow retrieving susedata.xml.gz
- implement get_susedata()
- implement import_susedata()

-------------------------------------------------------------------
Mon May 14 15:16:11 CEST 2012 - mc@suse.de

- version 1.7.38.9-1
- fix registration of virt. machines (bnc#761350)

-------------------------------------------------------------------
Mon May 14 10:54:49 CEST 2012 - mc@suse.de

- version 1.7.38.8-1
- better check for empty version, release and arch
- with postgres empty varchar has to be null
- fix CVE test in testsuite
- improve patch handling for broken updateinfo files

-------------------------------------------------------------------
Wed May 09 13:41:34 CEST 2012 - mc@suse.de

- version 1.7.38.7-1
- define python macros
- No need to be autonomous when inserting to rhnArchType,
  only satellite-sync does it.

-------------------------------------------------------------------
Tue May  8 14:48:10 CEST 2012 - ug@suse.de

- integrated upstream feedback for studio integration (bnc#764532)

-------------------------------------------------------------------
Wed May 02 14:23:29 CEST 2012 - mc@suse.de

- version 1.7.38.6-1
- no fileprovide of gettext in SUSE
- Assign a dummy profile when none is selected.
- xccdf_eval should not send null value

-------------------------------------------------------------------
Fri Apr 27 16:13:22 CEST 2012 - mc@suse.de

- version 1.7.38.5-1
- update monitoring probes in small batches to reduce the chance of a
  deadlock
- raise SQLSchemaError alike oracle driver does
- fix sql query with --use-sync-date and --start-date of
  rhn-satellite-exporter

-------------------------------------------------------------------
Fri Apr 20 15:34:23 CEST 2012 - mc@suse.de

- version 1.7.38.4-1
- Fix inserting installed products
- set a bug title if we do not get one
- The mod_wsgi insists on having something after the numeric value on the
  Status line.
- Workaround httplib in 2.4 which did not have the responses dictionary.
- write nicer error message in case you are missing rpm files
- update man-pages
- copy postgres initlog in SUSE
- adding PostgreSQL configuration and log files to the debug.
- updating rhn-charsets man page -- update list of value names, no
  command line options.
- make rhn-charsets working on PostgreSQL as well; the output format
  changed even for Oracle.

-------------------------------------------------------------------
Fri Apr 13 15:43:45 CEST 2012 - mc@suse.de

- version 1.7.38.3-1
- Update config default to preserve base channel on reactivation
- rhn-schema-stats: support for PostgreSQL
- rhn-db-stats: support for PostgreSQL
- check channel permissions when unsubscribing a channel
- fix empty references in updateinfo
- remove source packages from compatible arch. We do not mirror them.

-------------------------------------------------------------------
Fri Apr 13 13:46:19 CEST 2012 - ug@suse.de

- fixed packaging of spacewalk-backend-xmlrpc
- fixed python bug in SUSE Studio image deployment

-------------------------------------------------------------------
Fri Mar 30 14:55:29 CEST 2012 - mc@suse.de

- version 1.7.38.2-1
- Truncate data which are longer than db allows
- Store also @idref of xccdf:rule-result element
- We want to store all idents per rule-result
- return products.xml metadata on request
- fixing sql queries with alias
- need to use timestamp datatype to preserve the precision.
- cast to string to force lookup_evr prototype.
- spacewalk-repo-sync documentation fix : add include/exclude options to
  manpage
- add default value for taskomatic.channel_repodata_workers
- created module for usefull cli functions

-------------------------------------------------------------------
Sat Mar 24 15:57:24 CET 2012 - mc@suse.de

- parameters should not be None

-------------------------------------------------------------------
Thu Mar 22 16:06:49 CET 2012 - mc@suse.de

- rotate logfiles with user www (bnc#681984) CVE-2011-1550

-------------------------------------------------------------------
Thu Mar 22 15:10:42 CET 2012 - mc@suse.de

- fix arbitrary package upload (bnc#751837)
  CVE-2012-1145

-------------------------------------------------------------------
Wed Mar 21 17:33:17 CET 2012 - mc@suse.de

- version 1.7.38.1-1
- Bumping package version

-------------------------------------------------------------------
Fri Mar 16 16:06:31 CET 2012 - ug@suse.de

- replace passwords in debug files (bnc#752467)

-------------------------------------------------------------------
Thu Mar 15 17:14:40 CET 2012 - jrenner@suse.de

- Add support for studio image deployments

-------------------------------------------------------------------
Mon Mar  5 12:42:12 CET 2012 - mc@suse.de

- add suseLib.accessible() doing a HEAD request to test
  if a URL is accessible

-------------------------------------------------------------------
Tue Jan 31 16:16:31 CET 2012 - mantel@suse.de

- some more renames Novell --> SUSE

-------------------------------------------------------------------
Thu Jan 19 12:17:49 CET 2012 - jrenner@suse.de

- Setting up seclist in registration.py (bnc#782819, brc#749890)
- CVE-2012-0059

-------------------------------------------------------------------
Thu Jan  5 10:10:01 CET 2012 - mc@suse.de

- spacewalk-debug should package NCC data dump into the tar ball

-------------------------------------------------------------------
Thu Dec 22 15:48:30 CET 2011 - mantel@suse.de

- do not change server.pot

-------------------------------------------------------------------
Thu Dec 22 14:59:55 CET 2011 - mantel@suse.de

- rename Novell to SUSE (#708333)

-------------------------------------------------------------------
Thu Dec 22 10:50:34 CET 2011 - mc@suse.de

- remove all unsupported translations

-------------------------------------------------------------------
Mon Dec 19 15:36:20 CET 2011 - mc@suse.de

- parse products.xml during reposync and store values in the
  Database (bnc#644678)

-------------------------------------------------------------------
Mon Dec 12 17:31:32 CET 2011 - iartarisi@suse.cz

- Add new --deep-copy option to spacewalk-repo-sync to allow skipping
  the re-calculation of package checksums

-------------------------------------------------------------------
Tue Nov  8 14:09:44 CET 2011 - jrenner@suse.de

- Implement audit logging for the backend API (fate#312607)

-------------------------------------------------------------------
Wed Oct 26 13:59:09 CEST 2011 - mc@suse.de

- add support for V4 DSA and RSA rpm signatures to display correct
  content provider (bnc#726577)
- enhance spacewalk-update-signatures to clean wrong keyids
  before update starts

-------------------------------------------------------------------
Thu Oct 13 14:51:29 CEST 2011 - iartarisi@suse.cz

- fix reposync failure when trying to associate package which couldn't
  be downloaded (bnc#722917)

-------------------------------------------------------------------
Tue Oct 11 17:01:46 CEST 2011 - mc@suse.de

- fix spacewalk-remove-channel to work on SUSE Manager (bnc#670206)

-------------------------------------------------------------------
Tue Oct 11 15:59:36 CEST 2011 - mc@suse.de

- adapt spacewalk-debug for SUSE Manager

-------------------------------------------------------------------
Mon Oct 10 15:19:31 CEST 2011 - mc@suse.de

- fix typo in reposync cleanup script (bnc#712860)

-------------------------------------------------------------------
Fri Oct  7 12:33:18 CEST 2011 - iartarisi@suse.cz

 - fix bug when parsing a patches.xml file with an extra <category> tag

-------------------------------------------------------------------
Wed Oct  5 19:01:45 CEST 2011 - mc@suse.de

- drop incompatible packages of a patch

-------------------------------------------------------------------
Fri Sep 30 12:39:33 CEST 2011 - mc@suse.de

- remove default currency from backend part of rhn.conf

-------------------------------------------------------------------
Thu Sep 29 13:52:25 CEST 2011 - mc@suse.de

- set patch severity to Low if none is specified to get all
  security patches listed in the currency report

-------------------------------------------------------------------
Mon Sep 26 17:57:36 CEST 2011 - iartarisi@suse.cz

- fix e['channels'].append AttributeError in case existing_errata is None
- fix failing unittest

-------------------------------------------------------------------
Mon Sep 26 17:06:15 CEST 2011 - mc@suse.de

- fix loosing patches if a repository is synced into
  different channels (bnc#720312)

-------------------------------------------------------------------
Fri Sep 23 14:36:11 CEST 2011 - mc@suse.de

- add unittests to check again

-------------------------------------------------------------------
Fri Sep 23 13:21:58 CEST 2011 - mc@suse.de

- change BuildRoot to SUSE default required for BuildService
- recompile python after unittests to remove buildroot path
  in binaries

-------------------------------------------------------------------
Tue Sep 20 17:35:42 CEST 2011 - iartarisi@suse.cz

- use pylint instead of python-pylint for checks

-------------------------------------------------------------------
Mon Sep 12 13:47:36 CEST 2011 - iartarisi@suse.cz

- remove extra toy targets that we don't use from Makefile.defs, which
  were mangling the PYTHONPATH

-------------------------------------------------------------------
Mon Sep 12 11:24:58 CEST 2011 - iartarisi@suse.cz

- run unittests and pylint from Makefile.backend at build time

-------------------------------------------------------------------
Fri Sep  9 12:24:19 CEST 2011 - iartarisi@suse.cz

- fixed E:442:XML_Dumper._validate_channels: Too many arguments for
  format string

-------------------------------------------------------------------
Wed Sep  7 16:23:27 CEST 2011 - mc@suse.de

- add cronjob to cleanup reposync log directory (bnc#712860)

-------------------------------------------------------------------
Wed Sep  7 12:42:51 CEST 2011 - mc@suse.de

- refactor reposync

-------------------------------------------------------------------
Mon Sep  5 16:22:04 CEST 2011 - iartarisi@suse.cz

- fix another typo in the specfile

-------------------------------------------------------------------
Mon Sep  5 16:17:15 CEST 2011 - iartarisi@suse.cz

- fix typo in specfile

-------------------------------------------------------------------
Mon Sep  5 16:08:51 CEST 2011 - iartarisi@suse.cz

- only run unittests during package build where we have the right
  BuildRequires

-------------------------------------------------------------------
Mon Sep  5 11:31:49 CEST 2011 - iartarisi@suse.cz

- added suseLib.py - library that deals with NCC/proxy configs/products
  etc.
- make unittests run during package build

-------------------------------------------------------------------
Mon Aug 22 16:35:42 CEST 2011 - iartarisi@suse.cz

- fixed TypeError in find_bugs method caused by empty patch descriptions

-------------------------------------------------------------------
Thu Aug 18 10:33:49 CEST 2011 - iartarisi@suse.cz

- fixed an import error in diskImportLib.py

-------------------------------------------------------------------
Fri Aug 12 11:09:59 CEST 2011 - iartarisi@suse.cz

- remove 'channel' from server.handlers.app as the sources have already
  been deleted (bnc#711967)

-------------------------------------------------------------------
Fri Aug 12 07:55:54 UTC 2011 - kkaempf@novell.com

- Remove 'comps' from Makefile (bnc#711938)

-------------------------------------------------------------------
Fri Aug 12 07:20:58 UTC 2011 - kkaempf@novell.com

- fix fetchTraceback and rhnFault import (bnc#711934)

-------------------------------------------------------------------
Thu Aug 11 15:08:03 CEST 2011 - iartarisi@suse.cz

- fix more imports after the move from spacewalk.common

-------------------------------------------------------------------
Thu Aug 11 11:13:46 CEST 2011 - iartarisi@suse.cz

- fix imports on UserDictCase to point to rhn.UserDictCase (bnc#711518)

-------------------------------------------------------------------
Wed Aug 10 11:30:48 CEST 2011 - iartarisi@suse.cz

- removed implicit imports to spacewalk.common (fixes bnc#711214,
  bnc#711211, bnc#711434)

-------------------------------------------------------------------
Tue Aug  9 10:26:35 CEST 2011 - iartarisi@suse.cz

- fixed missing import of 're' module (bnc#711188)

-------------------------------------------------------------------
Wed Aug  3 15:45:41 CEST 2011 - iartarisi@suse.cz

- reposync: fix ambiguous message when skipping a patch which references
  a package that's not in the database (bnc#702932)

-------------------------------------------------------------------
Wed Jul  6 17:49:36 CEST 2011 - mc@suse.de

- add server capability xmlrpc.errata.patch_names'

-------------------------------------------------------------------
Wed Jul  6 14:33:24 CEST 2011 - mc@suse.de

- fix requires for Code10

-------------------------------------------------------------------
Wed Jun 29 15:26:41 CEST 2011 - iartarisi@suse.cz

- added errata.getErrataNamesById function to the XMLRPC API

-------------------------------------------------------------------
Mon Jun  6 17:10:46 CEST 2011 - mc@suse.de

- set RPM vendor to "Not defined" if the RPM say "(none)"
  (FATE#312378, bnc#693291)

-------------------------------------------------------------------
Tue May 24 15:31:16 CEST 2011 - mc@suse.de

- some wierd packages have files in iso8859-1 not utf-8
- fix encoding of summary and description of a package if it is
  wrong

-------------------------------------------------------------------
Mon May 23 17:22:18 CEST 2011 - mc@suse.de

- Improve error message when gpg key is wrong or missing
  (bnc#693574)
- do not trigger a resync if file is missing. This can cause
  an endless loop (bnc#695392)
- do not send tracebacks as email if reposync failed. Send only
  the error message. (bnc#691579)

-------------------------------------------------------------------
Mon May  9 10:23:05 CEST 2011 - mc@suse.de

- fix errata export/import for sync
- handle sync with older spacewalk server which do not support
  weak dependencies

-------------------------------------------------------------------
Wed Apr 20 11:24:05 CEST 2011 - iartarisi@suse.cz

- reposync - parse and insert zypper code10 patches into the database

-------------------------------------------------------------------
Thu Apr 14 15:19:47 CEST 2011 - jrenner@suse.de

- Remove the channel APP handler (bnc#685078)
  (CVE-2009-0788, CVE-2010-1171)

-------------------------------------------------------------------
Fri Apr  1 12:09:01 CEST 2011 - mc@suse.de

- fix adding patches to a channel. Treat no epoch as the same as
  epoch is 0 (bnc#682846)

-------------------------------------------------------------------
Thu Mar 31 16:19:17 CEST 2011 - mc@suse.de

- fix a syntax error with old python versions

-------------------------------------------------------------------
Tue Mar 22 13:51:48 CET 2011 - iartarisi@suse.cz

- fixed bnc#673022 mirror timeout errors shouldn't cause tracebacks

-------------------------------------------------------------------
Thu Mar 17 10:58:24 CET 2011 - mc@suse.de

- check that path is not None

-------------------------------------------------------------------
Wed Mar 16 10:26:17 CET 2011 - iartarisi@suse.cz

- fixed bnc#679866 (downloading subscriptions fails when using integer
  credentials)

-------------------------------------------------------------------
Tue Mar  8 14:28:08 CET 2011 - iartarisi@suse.cz

- fixed bnc#644072 (password guessing vulnerability) with two commits
  from upstream

-------------------------------------------------------------------
Wed Feb 23 16:46:50 CET 2011 - ug@suse.de

- fixed virtual SUSE KVM machines in the webui (bnc#674344)

-------------------------------------------------------------------
Fri Feb 18 15:51:45 CET 2011 - mc@suse.de

- fix extract keyid from RPM header

-------------------------------------------------------------------
Thu Feb 17 16:02:25 CET 2011 - mc@suse.de

- do not remove not existing files

-------------------------------------------------------------------
Thu Feb 17 15:38:05 CET 2011 - mantel@suse.de

- fix debranding issues (bnc#672637)

-------------------------------------------------------------------
Tue Feb 15 10:14:55 CET 2011 - ug@suse.de

- typo fixed (indentation error bnc#671799)

-------------------------------------------------------------------
Mon Feb 14 17:22:39 CET 2011 - mc@suse.de

- expect not signed metadata with spacewalk-repo-sync if
  url is given on the commandline

-------------------------------------------------------------------
Sat Feb 12 16:54:53 CET 2011 - mc@suse.de

- send Mail if repo-sync failed

-------------------------------------------------------------------
Fri Feb 11 17:54:06 CET 2011 - jkupec@suse.cz

- correct strings in rhnException.py

-------------------------------------------------------------------
Fri Feb 11 11:47:57 CET 2011 - mc@suse.de

- catch exception primary not available and print nice message
  (bnc#671225)

-------------------------------------------------------------------
Thu Feb 10 18:15:23 CET 2011 - mc@suse.de

- remove org change again; fixed at another place

-------------------------------------------------------------------
Wed Feb  9 13:46:12 CET 2011 - jkupec@suse.cz

- removed unsupported satellite-sync from the
  spacewalk-backend-tools package (bnc #669610)

-------------------------------------------------------------------
Wed Feb  9 11:36:28 CET 2011 - mc@suse.de

- fix typo in sql statement

-------------------------------------------------------------------
Wed Feb  9 10:51:13 CET 2011 - mantel@suse.de

- some more renames of RHN to NCC (BNC#668824)

-------------------------------------------------------------------
Wed Feb  9 10:08:15 CET 2011 - mantel@suse.de

- change name of default organization (BNC#663983)

-------------------------------------------------------------------
Tue Feb  8 15:58:22 CET 2011 - mc@suse.de

- change mountpoint and prepended_dir (bnc#669558)

-------------------------------------------------------------------
Tue Feb  1 13:26:06 CET 2011 - mc@suse.de

- fix building on RH

-------------------------------------------------------------------
Mon Jan 31 18:14:57 CET 2011 - mc@suse.de

- call yum update_md with the option to get all updateinfos
  and not only the newest (bnc#668333)

-------------------------------------------------------------------
Sun Jan 30 15:26:01 CET 2011 - mc@suse.de

- backport upstrem fixes

-------------------------------------------------------------------
Tue Jan 25 16:19:49 CET 2011 - mc@suse.de

- fix checksum handling.

-------------------------------------------------------------------
Sat Jan 22 12:37:48 CET 2011 - mc@suse.de

- fix macros

-------------------------------------------------------------------
Mon Jan 17 12:25:39 CET 2011 - mc@suse.de

- change suseServer ostarget to a foreign key to suseOSTarget(id)

-------------------------------------------------------------------
Thu Jan 13 13:19:00 CET 2011 - mc@suse.de

- Sending and receiving suse product profile data during
  client registration.
- subscribe channels according to submitted suse product data

-------------------------------------------------------------------
Tue Jan 11 16:46:43 CET 2011 - mc@suse.de

- reposync: search for credentials and add them to the URL
- fix signature handling
- reposync: find checksums for packages in channels with
  org_id null

-------------------------------------------------------------------
Wed Dec 15 17:22:47 CET 2010 - mc@suse.de

- fix KeyError while syncing repos (bnc#657064)
- skip patch instead of abort if no checksum for a package
  was found

-------------------------------------------------------------------
Thu Sep 16 09:13:37 CEST 2010 - mantel@suse.de

- reflect rename of config files (/etc/rhn/default/rhn_server*conf)

-------------------------------------------------------------------
Wed Sep 15 09:10:44 CEST 2010 - mantel@suse.de

- Initial release of spacewalk-backend

-------------------------------------------------------------------
  07070100000218000081B40000000000000000000000016290A0C100006FBB000000000000000000000000000000000000002900000000spacewalk-backend/spacewalk-backend.spec  #
# spec file for package spacewalk-backend
#
# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany.
# Copyright (c) 2008-2018 Red Hat, Inc.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
# upon. The license for this file, and modifications and additions to the
# file, is the same license as for the pristine package itself (unless the
# license for the pristine package is not an Open Source License, in which
# case the license is the MIT License). An "Open Source License" is a
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.

# Please submit bugfixes or comments via https://bugs.opensuse.org/
#


%{!?_unitdir: %global _unitdir /lib/systemd/system}

%{!?python3_sitelib: %global python3_sitelib %(%{__python3} -c "from distutils.sysconfig import get_python_lib; print(get_python_lib())")}
%{!?pylint_check: %global pylint_check 0}
%global rhnroot %{_prefix}/share/rhn
%global rhnconfigdefaults %{rhnroot}/config-defaults
%global rhnconf %{_sysconfdir}/rhn
%global m2crypto m2crypto
%global python3rhnroot %{python3_sitelib}/spacewalk

%if 0%{?fedora} || 0%{?rhel}
%global apacheconfd %{_sysconfdir}/httpd/conf.d
%global apache_user apache
%global apache_group apache
%global apache_pkg httpd
%global documentroot /var/www/html
%endif

%if 0%{?suse_version}
%global apacheconfd %{_sysconfdir}/apache2/conf.d
%global apache_user wwwrun
%global apache_group www
%global apache_pkg apache2
%global documentroot /srv/www/htdocs
%global m2crypto python3-M2Crypto
%endif

Name:           spacewalk-backend
Summary:        Common programs needed to be installed on the Spacewalk servers/proxies
License:        GPL-2.0-only
Group:          System/Management
Version:        4.1.31
Release:        1%{?dist}
Url:            https://github.com/uyuni-project/uyuni
Source0:        https://github.com/spacewalkproject/spacewalk/archive/%{name}-%{version}.tar.gz
BuildRoot:      %{_tmppath}/%{name}-%{version}-build
%if !0%{?suse_version} || 0%{?suse_version} >= 1120
BuildArch:      noarch
%endif

Requires:       python3
# /etc/rhn is provided by uyuni-base-common
Requires(pre):  uyuni-base-common
BuildRequires:  uyuni-base-common
Requires:       python3-rhnlib >= 2.5.74
Requires:       python3-rpm
Requires:       python3-uyuni-common-libs
Requires(pre):  %{apache_pkg}
Requires:       %{apache_pkg}
Requires:       python3-pycurl
# for Debian support
Requires:       python3-debian
%if 0%{?pylint_check}
BuildRequires:  spacewalk-python3-pylint
%endif
BuildRequires:  /usr/bin/docbook2man
BuildRequires:  /usr/bin/msgfmt
BuildRequires:  docbook-utils
BuildRequires:  fdupes
BuildRequires:  python3-gzipstream
BuildRequires:  python3-rhn-client-tools
BuildRequires:  python3-rhnlib >= 2.5.74
BuildRequires:  python3-rpm
BuildRequires:  python3-rpm-macros
BuildRequires:  python3-uyuni-common-libs
BuildRequires:  python3-debian
BuildRequires:  %{m2crypto}


%description
Generic program files needed by the Spacewalk server machines.
This package includes the common code required by all servers/proxies.

%package sql
Summary:        Core functions providing SQL connectivity for the Spacewalk backend modules
Group:          System/Management
Requires(pre):  %{name} = %{version}-%{release}
Requires:       %{name} = %{version}-%{release}
Requires:       %{name}-sql-virtual = %{version}-%{release}

%description sql
This package contains the basic code that provides SQL connectivity for
the Spacewalk backend modules.

%package sql-postgresql
Summary:        Postgresql backend for Spacewalk
Group:          System/Management
Requires:       python3-psycopg2 >= 2.8.4
Provides:       %{name}-sql-virtual = %{version}-%{release}

%description sql-postgresql
This package contains provides PostgreSQL connectivity for the Spacewalk
backend modules.

%package server
Summary:        Basic code that provides Spacewalk Server functionality
Group:          System/Management
Requires(pre):  %{name}-sql = %{version}-%{release}
Requires:       %{name}-sql = %{version}-%{release}
Requires:       python3-python-pam
Requires:       spacewalk-config
Requires:       apache2-mod_wsgi-python3

# cobbler-web is known to break our configuration
Conflicts:      cobbler-web


%description server
This package contains the basic code that provides server/backend
functionality for a variety of XML-RPC receivers. The architecture is
modular so that you can plug/install additional modules for XML-RPC
receivers and get them enabled automatically.

%package xmlrpc
Summary:        Handler for /XMLRPC
Group:          System/Management
Requires:       %{name}-server = %{version}-%{release}
Requires:       python3-rpm

%description xmlrpc
These are the files required for running the /XMLRPC handler, which
provide the basic support for the registration client (rhn_register)
and the up2date clients.

%package applet
Summary:        Handler for /APPLET
Group:          System/Management
Requires:       %{name}-server = %{version}-%{release}

%description applet
These are the files required for running the /APPLET handler, which
provides the functions for the Spacewalk applet.

%package app
Summary:        Handler for /APP
Group:          System/Management
Requires:       %{name}-server = %{version}-%{release}

%description app
These are the files required for running the /APP handler.
Calls to /APP are used by internal maintenance tools (rhnpush).

%package iss
Summary:        Handler for /SAT
Group:          System/Management
Requires:       %{name}-server = %{version}-%{release}

%description iss
%{name} contains the basic code that provides server/backend
functionality for a variety of XML-RPC receivers. The architecture is
modular so that you can plug/install additional modules for XML-RPC
receivers and get them enabled automatically.

This package contains /SAT handler, which provide Inter Spacewalk Sync
capability.

%package iss-export
Summary:        Listener for the Server XML dumper
Group:          System/Management
Requires:       %{name}-xml-export-libs = %{version}-%{release}
Requires:       python3-rpm

%description iss-export
%{name} contains the basic code that provides server/backend
functionality for a variety of XML-RPC receivers. The architecture is
modular so that you can plug/install additional modules for XML-RPC
receivers and get them enabled automatically.

This package contains listener for the Server XML dumper.

%package config-files-common
Summary:        Common files for the Configuration Management project
Group:          System/Management
Requires:       %{name}-server = %{version}-%{release}

%description config-files-common
Common files required by the Configuration Management project

%package config-files
Summary:        Handler for /CONFIG-MANAGEMENT
Group:          System/Management
Requires:       %{name}-config-files-common = %{version}-%{release}

%description config-files
This package contains the server-side code for configuration management.

%package config-files-tool
Summary:        Handler for /CONFIG-MANAGEMENT-TOOL
Group:          System/Management
Requires:       %{name}-config-files-common = %{version}-%{release}

%description config-files-tool
This package contains the server-side code for configuration management tool.

%package package-push-server
Summary:        Listener for rhnpush (non-XMLRPC version)
Group:          System/Management
Requires:       %{name}-server = %{version}-%{release}

%description package-push-server
Listener for rhnpush (non-XMLRPC version)

%package tools
Summary:        Spacewalk Services Tools
Group:          System/Management
Requires:       %{name}
Requires:       %{name}-app = %{version}-%{release}
Requires:       %{name}-xmlrpc = %{version}-%{release}
Requires:       systemd
BuildRequires:  systemd
%{?systemd_requires}

Requires:       python3-gzipstream
Requires:       python3-python-dateutil
Requires:       python3-rhn-client-tools
Requires:       python3-solv
Requires:       python3-urlgrabber
Requires:       spacewalk-admin >= 0.1.1-0
Requires:       spacewalk-certs-tools
Requires:       susemanager-tools
%if 0%{?suse_version}
Requires(pre):  libzypp(plugin:system) >= 0
Requires:       python3-zypp-plugin
Requires:       apache2-prefork
%endif
%if 0%{?fedora} || 0%{?rhel}
Requires:       mod_ssl
%endif
Requires:       %{name}-xml-export-libs
Requires:       cobbler >= 3.0.0
Requires:       %{m2crypto}
Requires:       python3-requests
Requires:       python3-rhnlib  >= 2.5.57
Recommends:     zchunk
Recommends:     zstd


%description tools
Various utilities for the Spacewalk Server.

%package xml-export-libs
Summary:        Spacewalk XML data exporter
Group:          System/Management
Requires:       %{name}-server = %{version}-%{release}

%description xml-export-libs
Libraries required by various exporting tools

%package cdn
Summary:        CDN tools
Group:          System/Management
Requires:       %{m2crypto}
Requires:       %{name}-server = %{version}-%{release}
Requires:       subscription-manager

%description cdn
Tools for syncing content from Red Hat CDN

%prep
%setup -q

%build
make -f Makefile.backend all PYTHON_BIN=python3

# Fixing shebang for Python 3
for i in `find . -type f`;
do
	sed -i '1s=^#!/usr/bin/\(python\|env python\)[0-9.]*=#!/usr/bin/python3=' $i;
done

%install
install -d $RPM_BUILD_ROOT%{rhnroot}
install -d $RPM_BUILD_ROOT%{python3rhnroot}
install -d $RPM_BUILD_ROOT%{python3rhnroot}/common
install -d $RPM_BUILD_ROOT%{rhnconf}
install -d $RPM_BUILD_ROOT/%{_unitdir}
install -d $RPM_BUILD_ROOT/%{_prefix}/lib/susemanager/bin/

make -f Makefile.backend install PREFIX=$RPM_BUILD_ROOT \
    MANDIR=%{_mandir} APACHECONFDIR=%{apacheconfd} PYTHON_BIN=python3

export PYTHON_MODULE_NAME=%{name}
export PYTHON_MODULE_VERSION=%{version}

# remove all unsupported translations
cd $RPM_BUILD_ROOT
for d in usr/share/locale/*; do
  if [ ! -d "/$d" ]; then
    rm -rfv "./$d"
  fi
done
cd -
ln -s satellite-sync $RPM_BUILD_ROOT/usr/bin/mgr-inter-sync
ln -s satellite-sync.8.gz $RPM_BUILD_ROOT/usr/share/man/man8/mgr-inter-sync.8.gz
ln -s rhn-satellite-exporter $RPM_BUILD_ROOT/usr/bin/mgr-exporter

install -m 644 rhn-conf/signing.cnf $RPM_BUILD_ROOT%{rhnconf}/signing.conf

install -m 644 satellite_tools/spacewalk-diskcheck.service $RPM_BUILD_ROOT/%{_unitdir}
install -m 644 satellite_tools/spacewalk-diskcheck.timer $RPM_BUILD_ROOT/%{_unitdir}

install -m 644 satellite_tools/ulnauth.py $RPM_BUILD_ROOT/%{python3rhnroot}/satellite_tools

%find_lang %{name}-server

%if 0%{?is_opensuse}
sed -i 's/^product_name.*/product_name = Uyuni/' $RPM_BUILD_ROOT%{rhnconfigdefaults}/rhn.conf
%endif

sed -i 's|#DOCUMENTROOT#|%{documentroot}|' $RPM_BUILD_ROOT%{rhnconfigdefaults}/rhn.conf
sed -i 's|#HTTPD_CONFIG_DIR#|%{apacheconfd}|' $RPM_BUILD_ROOT%{rhnconfigdefaults}/rhn.conf

%if 0%{?fedora} || 0%{?rhel} > 6
sed -i 's/#LOGROTATE-3.8#//' $RPM_BUILD_ROOT%{_sysconfdir}/logrotate.d/spacewalk-backend-*
%endif
%if 0%{?suse_version}
sed -i 's/#LOGROTATE-3.8#.*/    su root www/' $RPM_BUILD_ROOT%{_sysconfdir}/logrotate.d/spacewalk-backend-*

%py3_compile -O %{buildroot}/%{python3rhnroot}
%fdupes %{buildroot}/%{python3rhnroot}
%endif

install -m 755 satellite_tools/mgr-update-pkg-extra-tags $RPM_BUILD_ROOT%{_prefix}/lib/susemanager/bin/

## Install Zypper plugins only on SUSE machines
%if 0%{?suse_version}
install -Dd -m 0750 % $RPM_BUILD_ROOT%{_prefix}/lib/zypp/plugins/urlresolver
%{__install} satellite_tools/spacewalk-uln-resolver $RPM_BUILD_ROOT%{_prefix}/lib/zypp/plugins/urlresolver/spacewalk-uln-resolver
%{__install} satellite_tools/spacewalk-extra-http-headers $RPM_BUILD_ROOT%{_prefix}/lib/zypp/plugins/urlresolver/spacewalk-extra-http-headers
%endif

%check
make -f Makefile.backend PYTHONPATH=$RPM_BUILD_ROOT%{python3_sitelib}:$RPM_BUILD_ROOT%{python3_sitelib}/uyuni/common-libs PYTHON_BIN=python3 test

%if 0%{?pylint_check}
# check coding style
export PYTHONPATH=$RPM_BUILD_ROOT%{python3rhnroot}:/usr/lib/rhn:/usr/share/rhn:$RPM_BUILD_ROOT%{python3_sitelib}/uyuni/common-libs
spacewalk-python3 $RPM_BUILD_ROOT%{python3rhnroot}/common \
                     $RPM_BUILD_ROOT%{python3rhnroot}/satellite_exporter \
                     $RPM_BUILD_ROOT%{python3rhnroot}/satellite_tools \
                     $RPM_BUILD_ROOT%{python3rhnroot}/cdn_tools \
                     $RPM_BUILD_ROOT%{python3rhnroot}/upload_server \
                     $RPM_BUILD_ROOT%{python3rhnroot}/wsgi

%endif


%post server
%if 0%{?suse_version}
sysconf_addword /etc/sysconfig/apache2 APACHE_MODULES wsgi
%endif
if [ ! -e %{rhnconf}/rhn.conf ]; then
    exit 0
fi

%pre tools
%service_add_pre spacewalk-diskcheck.service spacewalk-diskcheck.timer

%post tools
%service_add_post spacewalk-diskcheck.service spacewalk-diskcheck.timer
if test -f /var/log/rhn/rhn_server_satellite.log; then 
    chown -f %{apache_user}:%{apache_group} /var/log/rhn/rhn_server_satellite.log
fi

%preun tools
%service_del_preun spacewalk-diskcheck.service spacewalk-diskcheck.timer

%postun tools
%service_del_postun spacewalk-diskcheck.service spacewalk-diskcheck.timer


%files
%defattr(-,root,root)
%doc LICENSE
%dir %{python3rhnroot}
%dir %{_prefix}/lib/susemanager
%dir %{_prefix}/lib/susemanager/bin
%{python3rhnroot}/__init__.py*
%{python3rhnroot}/common
%attr(770,root,%{apache_group}) %dir %{_var}/log/rhn
# Workaround for strict-whitespace-enforcement in httpd
%attr(644,root,%{apache_group}) %config %{apacheconfd}/aa-spacewalk-server.conf
# config files
%attr(644,root,%{apache_group}) %{rhnconfigdefaults}/rhn.conf
%attr(755,root,root) %{_bindir}/spacewalk-cfg-get
%{_mandir}/man8/spacewalk-cfg-get.8.gz
# wsgi stuff
%dir %{rhnroot}/wsgi
%{rhnroot}/wsgi/__init__.py*
%{rhnroot}/wsgi/wsgiHandler.py*
%{rhnroot}/wsgi/wsgiRequest.py*
%dir %{rhnroot}
%dir %{python3rhnroot}/__pycache__/
%{python3rhnroot}/__pycache__/*

%files sql
%defattr(-,root,root)
%doc LICENSE
%dir %{rhnroot}/server
# Need __init__ = share it with rhns-server
%dir %{python3rhnroot}/server
%{python3rhnroot}/server/__init__.py*
%{rhnroot}/server/__init__.py*
%dir %{python3rhnroot}/server/rhnSQL
%{python3rhnroot}/server/rhnSQL/const.py*
%{python3rhnroot}/server/rhnSQL/dbi.py*
%{python3rhnroot}/server/rhnSQL/__init__.py*
%{python3rhnroot}/server/rhnSQL/sql_*.py*
%dir %{python3rhnroot}/server/__pycache__/
%dir %{python3rhnroot}/server/rhnSQL/__pycache__/
%{python3rhnroot}/server/__pycache__/__init__.*
%{python3rhnroot}/server/rhnSQL/__pycache__/*
%exclude %{python3rhnroot}/server/rhnSQL/__pycache__/driver_postgresql.*

%files sql-postgresql
%defattr(-,root,root)
%doc LICENSE
%{python3rhnroot}/server/rhnSQL/driver_postgresql.py*
%{python3rhnroot}/server/rhnSQL/__pycache__/driver_postgresql.*

%files server -f %{name}-server.lang
%defattr(-,root,root)
%doc LICENSE
%dir %{rhnroot}/server
# modules
%{python3rhnroot}/server/apacheAuth.py*
%{python3rhnroot}/server/apacheHandler.py*
%{python3rhnroot}/server/apacheRequest.py*
%{python3rhnroot}/server/apacheServer.py*
%{python3rhnroot}/server/apacheUploadServer.py*
%{python3rhnroot}/server/rhnAction.py*
%{python3rhnroot}/server/rhnAuthPAM.py*
%{python3rhnroot}/server/rhnCapability.py*
%{python3rhnroot}/server/rhnChannel.py*
%{python3rhnroot}/server/rhnDependency.py*
%{python3rhnroot}/server/rhnPackage.py*
%{python3rhnroot}/server/rhnPackageUpload.py*
%{python3rhnroot}/server/basePackageUpload.py*
%{python3rhnroot}/server/rhnHandler.py*
%{python3rhnroot}/server/rhnImport.py*
%{python3rhnroot}/server/rhnLib.py*
%{python3rhnroot}/server/rhnMapping.py*
%{python3rhnroot}/server/rhnRepository.py*
%{python3rhnroot}/server/rhnSession.py*
%{python3rhnroot}/server/rhnUser.py*
%{python3rhnroot}/server/rhnVirtualization.py*
%{python3rhnroot}/server/taskomatic.py*
%{python3rhnroot}/server/suseEula.py*
%dir %{python3rhnroot}/server/rhnServer
%{python3rhnroot}/server/rhnServer/*
%dir %{python3rhnroot}/server/importlib
%{python3rhnroot}/server/importlib/__init__.py*
%{python3rhnroot}/server/importlib/archImport.py*
%{python3rhnroot}/server/importlib/backend.py*
%{python3rhnroot}/server/importlib/backendLib.py*
%{python3rhnroot}/server/importlib/backendOracle.py*
%{python3rhnroot}/server/importlib/backend_checker.py*
%{python3rhnroot}/server/importlib/channelImport.py*
%{python3rhnroot}/server/importlib/debPackage.py*
%{python3rhnroot}/server/importlib/errataCache.py*
%{python3rhnroot}/server/importlib/errataImport.py*
%{python3rhnroot}/server/importlib/headerSource.py*
%{python3rhnroot}/server/importlib/importLib.py*
%{python3rhnroot}/server/importlib/kickstartImport.py*
%{python3rhnroot}/server/importlib/mpmSource.py*
%{python3rhnroot}/server/importlib/packageImport.py*
%{python3rhnroot}/server/importlib/packageUpload.py*
%{python3rhnroot}/server/importlib/productNamesImport.py*
%{python3rhnroot}/server/importlib/userAuth.py*
%{python3rhnroot}/server/importlib/orgImport.py*
%{python3rhnroot}/server/importlib/contentSourcesImport.py*
%{python3rhnroot}/server/importlib/supportInformationImport.py*
%{python3rhnroot}/server/importlib/suseProductsImport.py*
%dir %{python3rhnroot}/server/importlib/__pycache__/
%{python3rhnroot}/server/importlib/__pycache__/*
%{python3rhnroot}/server/__pycache__/*
%exclude %{python3rhnroot}/server/__pycache__/__init__.*
%exclude %{python3rhnroot}/server/__pycache__/configFilesHandler.*
%{rhnroot}/server/handlers/__init__.py*

# Repomd stuff
%dir %{python3rhnroot}/server/repomd
%{python3rhnroot}/server/repomd/__init__.py*
%{python3rhnroot}/server/repomd/domain.py*
%{python3rhnroot}/server/repomd/mapper.py*
%{python3rhnroot}/server/repomd/repository.py*
%{python3rhnroot}/server/repomd/view.py*
%dir %{python3rhnroot}/server/repomd/__pycache__/
%{python3rhnroot}/server/repomd/__pycache__/*

# the cache
%attr(755,%{apache_user},%{apache_group}) %dir %{_var}/cache/rhn
%attr(755,root,root) %dir %{_var}/cache/rhn/satsync
# config files
%attr(644,root,%{apache_group}) %{rhnconfigdefaults}/rhn_server.conf

# main httpd config
%attr(644,root,%{apache_group}) %config %{apacheconfd}/zz-spacewalk-server.conf

# wsgi stuff
%attr(644,root,%{apache_group}) %config %{apacheconfd}/zz-spacewalk-server-wsgi.conf
%{rhnroot}/wsgi/app.py*
%{rhnroot}/wsgi/applet.py*
%{rhnroot}/wsgi/config.py*
%{rhnroot}/wsgi/config_tool.py*
%{rhnroot}/wsgi/package_push.py*
%{rhnroot}/wsgi/sat.py*
%{rhnroot}/wsgi/sat_dump.py*
%{rhnroot}/wsgi/xmlrpc.py*

# logs and other stuff
%config(noreplace) %{_sysconfdir}/logrotate.d/spacewalk-backend-server

%dir %{rhnroot}/server
%dir %{rhnroot}/server/handlers

%files xmlrpc
%defattr(-,root,root)
%doc LICENSE
%dir %{rhnroot}/server/handlers/xmlrpc
%{rhnroot}/server/handlers/xmlrpc/*
%dir %{python3rhnroot}/server/action
%{python3rhnroot}/server/action/*
%dir %{python3rhnroot}/server/action_extra_data
%{python3rhnroot}/server/action_extra_data/*
# config files
%attr(644,root,%{apache_group}) %{rhnconfigdefaults}/rhn_server_xmlrpc.conf
%config(noreplace) %{_sysconfdir}/logrotate.d/spacewalk-backend-xmlrpc
%dir %{rhnroot}/server
%dir %{rhnroot}/server/handlers

%files applet
%defattr(-,root,root)
%doc LICENSE
%dir %{rhnroot}/server
%dir %{rhnroot}/server/handlers/applet
%{rhnroot}/server/handlers/applet/*
# config files
%attr(644,root,%{apache_group}) %{rhnconfigdefaults}/rhn_server_applet.conf
%config(noreplace) %{_sysconfdir}/logrotate.d/spacewalk-backend-applet

%files app
%defattr(-,root,root)
%doc LICENSE
%dir %{rhnroot}/server
%dir %{rhnroot}/server/handlers/app
%{rhnroot}/server/handlers/app/*
# config files
%attr(644,root,%{apache_group}) %{rhnconfigdefaults}/rhn_server_app.conf
%config(noreplace) %{_sysconfdir}/logrotate.d/spacewalk-backend-app

%files iss
%defattr(-,root,root)
%doc LICENSE
%dir %{rhnroot}/server
%dir %{rhnroot}/server/handlers/sat
%{rhnroot}/server/handlers/sat/*
%config(noreplace) %{_sysconfdir}/logrotate.d/spacewalk-backend-iss

%files iss-export
%defattr(-,root,root)
%doc LICENSE
%dir %{python3rhnroot}/satellite_exporter
%{python3rhnroot}/satellite_exporter/__init__.py*
%{python3rhnroot}/satellite_exporter/satexport.py*

%dir %{rhnroot}/satellite_exporter
%dir %{rhnroot}/satellite_exporter/handlers
%{rhnroot}/satellite_exporter/__init__.py*
%{rhnroot}/satellite_exporter/handlers/__init__.py*
%{rhnroot}/satellite_exporter/handlers/non_auth_dumper.py*
%dir %{python3rhnroot}/satellite_exporter/__pycache__/
%{python3rhnroot}/satellite_exporter/__pycache__/*
# config files
%config(noreplace) %{_sysconfdir}/logrotate.d/spacewalk-backend-iss-export

%files config-files-common
%defattr(-,root,root)
%doc LICENSE
%{python3rhnroot}/server/configFilesHandler.py*
%{python3rhnroot}/server/__pycache__/configFilesHandler.*
%dir %{python3rhnroot}/server/config_common
%{python3rhnroot}/server/config_common/*

%files config-files
%defattr(-,root,root)
%doc LICENSE
%dir %{rhnroot}/server
%dir %{rhnroot}/server/handlers/config
%{rhnroot}/server/handlers/config/*
%attr(644,root,%{apache_group}) %{rhnconfigdefaults}/rhn_server_config-management.conf
%config(noreplace) %{_sysconfdir}/logrotate.d/spacewalk-backend-config-files

%files config-files-tool
%defattr(-,root,root)
%doc LICENSE
%dir %{rhnroot}/server
%dir %{rhnroot}/server/handlers/config_mgmt
%{rhnroot}/server/handlers/config_mgmt/*
%attr(644,root,%{apache_group}) %{rhnconfigdefaults}/rhn_server_config-management-tool.conf
%config(noreplace) %{_sysconfdir}/logrotate.d/spacewalk-backend-config-files-tool

%files package-push-server
%defattr(-,root,root)
%doc LICENSE
%dir %{rhnroot}/upload_server
%{rhnroot}/upload_server/__init__.py*
%dir %{rhnroot}/upload_server/handlers
%{rhnroot}/upload_server/handlers/__init__.py*
%{rhnroot}/upload_server/handlers/package_push
%attr(644,root,%{apache_group}) %{rhnconfigdefaults}/rhn_server_upload.conf
%attr(644,root,%{apache_group}) %{rhnconfigdefaults}/rhn_server_upload_package-push.conf
%config(noreplace) %{_sysconfdir}/logrotate.d/spacewalk-backend-package-push-server

%files tools
%defattr(-,root,root)
%doc LICENSE
%doc README.ULN
%attr(644,root,%{apache_group}) %{rhnconfigdefaults}/rhn_server_satellite.conf
%config(noreplace) %{_sysconfdir}/logrotate.d/spacewalk-backend-tools
%config(noreplace) %{rhnconf}/signing.conf
%attr(755,root,root) %{_bindir}/rhn-charsets
%attr(755,root,root) %{_bindir}/rhn-satellite-activate
%attr(755,root,root) %{_bindir}/rhn-schema-version
%attr(755,root,root) %{_bindir}/rhn-ssl-dbstore
%attr(755,root,root) %{_bindir}/satellite-sync
%attr(755,root,root) %{_bindir}/mgr-inter-sync
%attr(755,root,root) %{_bindir}/mgr-exporter
%attr(755,root,root) %{_bindir}/spacewalk-debug
%attr(755,root,root) %{_bindir}/rhn-satellite-exporter
%attr(755,root,root) %{_bindir}/update-packages
%attr(755,root,root) %{_bindir}/spacewalk-repo-sync
%attr(755,root,root) %{_bindir}/rhn-db-stats
%attr(755,root,root) %{_bindir}/rhn-schema-stats
%attr(755,root,root) %{_bindir}/satpasswd
%attr(755,root,root) %{_bindir}/satwho
%attr(755,root,root) %{_bindir}/spacewalk-remove-channel*
%attr(755,root,root) %{_bindir}/spacewalk-update-signatures
%attr(755,root,root) %{_bindir}/spacewalk-data-fsck
%attr(755,root,root) %{_bindir}/spacewalk-fips-tool
%attr(755,root,root) %{_bindir}/mgr-sign-metadata
%attr(755,root,root) %{_bindir}/mgr-sign-metadata-ctl
%attr(755,root,root) %{_bindir}/spacewalk-diskcheck
%attr(755,root,root) %{_prefix}/lib/susemanager/bin/mgr-update-pkg-extra-tags
%{_prefix}/lib/zypp/plugins/urlresolver/spacewalk-uln-resolver
%{_prefix}/lib/zypp/plugins/urlresolver/spacewalk-extra-http-headers
%{python3rhnroot}/satellite_tools/contentRemove.py*
%{python3rhnroot}/satellite_tools/SequenceServer.py*
%{python3rhnroot}/satellite_tools/messages.py*
%{python3rhnroot}/satellite_tools/progress_bar.py*
%{python3rhnroot}/satellite_tools/req_channels.py*
%{python3rhnroot}/satellite_tools/satsync.py*
%{python3rhnroot}/satellite_tools/satCerts.py*
%{python3rhnroot}/satellite_tools/satComputePkgHeaders.py*
%{python3rhnroot}/satellite_tools/syncCache.py*
%{python3rhnroot}/satellite_tools/sync_handlers.py*
%{python3rhnroot}/satellite_tools/rhn_satellite_activate.py*
%{python3rhnroot}/satellite_tools/rhn_ssl_dbstore.py*
%{python3rhnroot}/satellite_tools/xmlWireSource.py*
%{python3rhnroot}/satellite_tools/updatePackages.py*
%{python3rhnroot}/satellite_tools/reposync.py*
%{python3rhnroot}/satellite_tools/constants.py*
%{python3rhnroot}/satellite_tools/download.py*
%{python3rhnroot}/satellite_tools/ulnauth.py*
%dir %{python3rhnroot}/satellite_tools/disk_dumper
%{python3rhnroot}/satellite_tools/disk_dumper/__init__.py*
%{python3rhnroot}/satellite_tools/disk_dumper/iss.py*
%{python3rhnroot}/satellite_tools/disk_dumper/iss_ui.py*
%{python3rhnroot}/satellite_tools/disk_dumper/iss_isos.py*
%{python3rhnroot}/satellite_tools/disk_dumper/iss_actions.py*
%{python3rhnroot}/satellite_tools/disk_dumper/dumper.py*
%{python3rhnroot}/satellite_tools/disk_dumper/string_buffer.py*
%dir %{python3rhnroot}/satellite_tools/repo_plugins
%attr(755,root,%{apache_group}) %dir %{_var}/log/rhn/reposync
%{python3rhnroot}/satellite_tools/repo_plugins/__init__.py*
%{python3rhnroot}/satellite_tools/repo_plugins/yum_src.py*
%{python3rhnroot}/satellite_tools/repo_plugins/uln_src.py*
%{python3rhnroot}/satellite_tools/repo_plugins/deb_src.py*
%dir %{python3rhnroot}/satellite_tools/__pycache__/
%dir %{python3rhnroot}/satellite_tools/disk_dumper/__pycache__/
%dir %{python3rhnroot}/satellite_tools/repo_plugins/__pycache__/
%{python3rhnroot}/satellite_tools/__pycache__/*
%exclude %{python3rhnroot}/satellite_tools/__pycache__/__init__.*
%exclude %{python3rhnroot}/satellite_tools/__pycache__/geniso.*
%exclude %{python3rhnroot}/satellite_tools/__pycache__/connection.*
%exclude %{python3rhnroot}/satellite_tools/__pycache__/diskImportLib.*
%exclude %{python3rhnroot}/satellite_tools/__pycache__/syncLib.*
%exclude %{python3rhnroot}/satellite_tools/__pycache__/xmlDiskSource.*
%exclude %{python3rhnroot}/satellite_tools/__pycache__/xmlSource.*
%{python3rhnroot}/satellite_tools/disk_dumper/__pycache__/*
%{python3rhnroot}/satellite_tools/repo_plugins/__pycache__/*
%config %attr(644,root,%{apache_group}) %{rhnconfigdefaults}/rhn_server_iss.conf
%{_mandir}/man8/rhn-satellite-exporter.8*
%{_mandir}/man8/rhn-charsets.8*
%{_mandir}/man8/rhn-satellite-activate.8*
%{_mandir}/man8/rhn-schema-version.8*
%{_mandir}/man8/rhn-ssl-dbstore.8*
%{_mandir}/man8/rhn-db-stats.8*
%{_mandir}/man8/rhn-schema-stats.8*
%{_mandir}/man8/satellite-sync.8*
%{_mandir}/man8/mgr-inter-sync.8*
%{_mandir}/man8/spacewalk-debug.8*
%{_mandir}/man8/satpasswd.8*
%{_mandir}/man8/satwho.8*
%{_mandir}/man8/spacewalk-fips-tool.8*
%{_mandir}/man8/spacewalk-remove-channel.8*
%{_mandir}/man8/spacewalk-repo-sync.8*
%{_mandir}/man8/spacewalk-data-fsck.8*
%{_mandir}/man8/spacewalk-update-signatures.8*
%{_mandir}/man8/update-packages.8*
%attr(644, root, root) %{_unitdir}/spacewalk-diskcheck.service
%attr(644, root, root) %{_unitdir}/spacewalk-diskcheck.timer

%files xml-export-libs
%defattr(-,root,root)
%doc LICENSE
%dir %{python3rhnroot}/satellite_tools
%{python3rhnroot}/satellite_tools/__init__.py*
%{python3rhnroot}/satellite_tools/geniso.py*
# A bunch of modules shared with satellite-tools
%{python3rhnroot}/satellite_tools/connection.py*
%{python3rhnroot}/satellite_tools/diskImportLib.py*
%{python3rhnroot}/satellite_tools/syncLib.py*
%{python3rhnroot}/satellite_tools/xmlDiskSource.py*
%{python3rhnroot}/satellite_tools/xmlSource.py*
%dir %{python3rhnroot}/satellite_tools/exporter
%{python3rhnroot}/satellite_tools/exporter/__init__.py*
%{python3rhnroot}/satellite_tools/exporter/exportLib.py*
%{python3rhnroot}/satellite_tools/exporter/xmlWriter.py*
%dir %{python3rhnroot}/satellite_tools/exporter/__pycache__/
%{python3rhnroot}/satellite_tools/__pycache__/__init__.*
%{python3rhnroot}/satellite_tools/__pycache__/geniso.*
%{python3rhnroot}/satellite_tools/__pycache__/connection.*
%{python3rhnroot}/satellite_tools/__pycache__/diskImportLib.*
%{python3rhnroot}/satellite_tools/__pycache__/syncLib.*
%{python3rhnroot}/satellite_tools/__pycache__/xmlDiskSource.*
%{python3rhnroot}/satellite_tools/__pycache__/xmlSource.*
%{python3rhnroot}/satellite_tools/exporter/__pycache__/*

%files cdn
%defattr(-,root,root)
%attr(755,root,root) %{_bindir}/cdn-sync
%dir %{python3rhnroot}/cdn_tools
%{python3rhnroot}/cdn_tools/*.py*
%attr(755,root,%{apache_group}) %dir %{_var}/log/rhn/cdnsync
%config(noreplace) %{_sysconfdir}/logrotate.d/spacewalk-backend-cdn
%{_mandir}/man8/cdn-sync.8*
%dir %{python3rhnroot}/cdn_tools
%dir %{python3rhnroot}/cdn_tools/__pycache__/
%{python3rhnroot}/cdn_tools/__pycache__/*

%changelog
 07070100000219000041FD0000000000000000000000016290A0C100000000000000000000000000000000000000000000001700000000spacewalk-backend/test    0707010000021A000081B40000000000000000000000016290A0C1000001D5000000000000000000000000000000000000001E00000000spacewalk-backend/test/README Python Backend Tests

Use runtests*.py scripts to run the various suites of tests. Install
python-testoob if you'd like slightly prettier test output or tools
like --regex=testname.

runtests.py
- Pure unit tests, no disk, network, or database required.
- Should be lightning fast and able to run in just about any environment.

runtests-postgresql.py
- PostgreSQL database tests.
- Requires connectivity to a PostgreSQL database, read script for connection
  details.
   0707010000021B000081B40000000000000000000000016290A0C100000057000000000000000000000000000000000000002700000000spacewalk-backend/test/db_settings.ini    [postgresql]
host: localhost
user: spacewalk
password: spacewalk
database: susemanager
 0707010000021C000081FD0000000000000000000000016290A0C1000000C4000000000000000000000000000000000000003600000000spacewalk-backend/test/docker-backend-common-tests.sh #! /bin/bash

touch /etc/rhn/rhn.conf
mkdir -p /manager/backend/reports
nosetests -v --with-xunit --xunit-file /manager/backend/reports/common_tests.xml -s /manager/backend/common/test/unit-test/
0707010000021D000081FD0000000000000000000000016290A0C10000017D000000000000000000000000000000000000003500000000spacewalk-backend/test/docker-backend-pgsql-tests.sh  #! /bin/bash

/sbin/sysctl -w kernel.shmmax=4067832832
su - postgres -c '/usr/lib/postgresql12/bin/pg_ctl start'
cp /root/rhn.conf /etc/rhn/rhn.conf
mkdir -p /manager/backend/reports
nosetests -v --with-xunit --xunit-file /manager/backend/reports/pgsql_tests.xml /manager/backend/test/runtests-postgresql.py
EXIT=$?
su - postgres -c '/usr/lib/postgresql12/bin/pg_ctl stop'
exit $?
   0707010000021E000081FD0000000000000000000000016290A0C1000000F4000000000000000000000000000000000000003600000000spacewalk-backend/test/docker-backend-server-tests.sh #! /bin/bash

touch /etc/rhn/rhn.conf
mkdir -p /manager/backend/reports
pytest --verbose --junit-xml /manager/backend/reports/server_tests.xml --ignore '/manager/backend/server/test/unit-test/rhnSQL/' -s /manager/backend/server/test/unit-test/
0707010000021F000081FD0000000000000000000000016290A0C1000000D1000000000000000000000000000000000000003500000000spacewalk-backend/test/docker-backend-tools-tests.sh  #! /bin/bash

touch /etc/rhn/rhn.conf
mkdir -p /manager/backend/reports
nosetests -v --with-xunit --xunit-file /manager/backend/reports/satellite_tools_tests.xml -s /manager/backend/satellite_tools/test/unit/
   07070100000220000081FD0000000000000000000000016290A0C1000029AF000000000000000000000000000000000000002300000000spacewalk-backend/test/johntest.py    #!/usr/bin/python
#
# Copyright (c) 2008--2016 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#

import sys
from rhn import rpclib


class Test:

    def __init__(self):
        self._server_url = 'http://rhnblade4.rhndev.redhat.com/XMLRPC'
        self._getserver_url = None
        self._systemid = None
        self._username = None
        self._channel_data = None
        self._package_data = None
        self._server = None
        self._getserver = None
        self._login = None
        self._header_data = None
        self._package = None

    def _get_sysid(self):
        if self._systemid is None:
            self._systemid = open("/etc/sysconfig/rhn/systemid").read()
        return self._systemid

    def _connect(self):
        if self._server is None:
            self._server = rpclib.Server(self._server_url)
        return self._server

    def login(self):
        if self._login is None:
            s = self._connect()
            sysid = self._get_sysid()
            self._login = LoginInfo(s.up2date.login(sysid))
        return self._login

    def list_channels(self):
        if self._channel_data is None:
            s = self._connect()
            sysid = self._get_sysid()
            self._channel_data = ChannelList(s.up2date.listChannels(sysid))
        return self._channel_data

    def list_packages(self):
        if self._package_data is None:
            s = self._connect()
            sysid = self._get_sysid()
            self._package_data = PackagesList(s.up2date.listall(sysid))
        return self._package_data

    def list_packages_size(self):
        if self._package_data is None:
            s = self._connect()
            sysid = self._get_sysid()
            self._package_data = s.up2date.listall_size(sysid)
        return self._package_data

    def header(self, pkglist):
        if pkglist is None:
            return None
        if self._header_data is None:
            s = self._connect()
            sysid = self._get_sysid()
            self._package_data = s.up2date.header(sysid, pkglist)
        return self._header_data

    def package(self, package):
        if package is None:
            return None
        if self._package is None:
            s = self._connect()
            sysid = self._get_sysid()
            self._package = s.up2date.package(sysid, package)
        return self._package

    def reserve_user(self, username, password):
        ret = None
        if username is not None and password is not None:
            s = self._connect()
            sysid = self._get_sysid()
            ret = s.registration.reserve_user(username, password)
        return ret

    def new_user(self, username, password, email=None, org_id=None, org_password=None):
        if email is None or username is None or password is None:
            return None
        s = self._connect()
        ret = s.registration.new_user(username, password, email, org_id, org_password)
        return ret


class PackagesList:

    def __init__(self, packagelist):
        if packagelist is None:
            self.packagelist = None
        else:
            self.packagelist = packagelist
        self._num_packages = None
        self._name = 0
        self._version = 1
        self._release = 2
        self._epoch = 3

    def get_num_packages(self):
        if self._num_packages is None:
            self._num_packages = len(self.packagelist)
        return self._num_packages

    def _get_field(self, pack_index, field):
        if pack_index is None or field is None:
            return None
        if self.packagelist[pack_index] is None:
            return None
        return self.packagelist[pack_index][field]

    def get_name(self, pack_index):
        return self._get_field(pack_index, self._name)

    def get_version(self, pack_index):
        return self._get_field(pack_index, self._version)

    def get_release(self, pack_index):
        return self._get_field(pack_index, self._release)

    def get_epoch(self, pack_index):
        return self._get_field(pack_index, self._epoch)


class ChannelList:

    def __init__(self, channeldata=None):
        if channeldata is None:
            self.channel_list = None
        else:
            self.channel_list = channeldata

        self._last_modified = 'last_modified'
        self._description = 'description'
        self._name = 'name'
        self._local_channel = 'local_channel'
        self._arch = 'arch'
        self._parent_channel = 'parent_channel'
        self._summary = 'summary'
        self._org_id = 'org_id'
        self._id = 'id'
        self._label = 'label'
        self._num_channels = None

    def set_channel_data(self, channeldata):
        if channeldata is None:
            self.channel_list = None
        else:
            self.channel_list = channeldata

    def get_num_channels(self):
        if self._num_channels is None:
            self._num_channels = len(self.channel_list)
        return self._num_channels

    def get_last_modified(self, ch_index):
        if self.channel_list[ch_index].has_key(self._last_modified):
            return self.channel_list[ch_index][self._last_modified]
        return None

    def get_description(self, ch_index):
        if self.channel_list[ch_index].has_key(self._description):
            return self.channel_list[ch_index][self._description]
        return None

    def get_name(self, ch_index):
        if self.channel_list[ch_index].has_key(self._name):
            return self.channel_list[ch_index][self._name]
        return None

    def get_local_channel(self, ch_index):
        if self.channel_list[ch_index].has_key(self._local_channel):
            return self.channel_list[ch_index][self._local_channel]
        return None

    def get_arch(self, ch_index):
        if self.channel_list[ch_index].has_key(self._arch):
            return self.channel_list[ch_index][self._arch]
        return None

    def get_parent_channel(self, ch_index):
        if self.channel_list[ch_index].has_key(self._parent_channel):
            return self.channel_list[ch_index][self._parent_channel]
        return None

    def get_summary(self, ch_index):
        if self.channel_list[ch_index].has_key(self._summary):
            return self.channel_list[ch_index][self._summary]
        return None

    def get_org_id(self, ch_index):
        if self.channel_list[ch_index].has_key(self._org_id):
            return self.channel_list[ch_index][self._org_id]
        return None

    def get_id(self, ch_index):
        if self.channel_list[ch_index].has_key(self._id):
            return self.channel_list[ch_index][self._id]
        return None

    def get_label(self, ch_index):
        if self.channel_list[ch_index].has_key(self._label):
            return self.channel_list[ch_index][self._label]
        return None


class LoginInfo:

    def __init__(self, logininfo=None):
        if logininfo is None:
            self.login_dict = None
        else:
            self.login_dict = logininfo

        self._server_key = 'X-RHN-Server-Id'
        self._user_key = 'X-RHN-Auth-User-Id'
        self._sig_key = 'X-RHN-Auth'
        self._time_key = 'X-RHN-Auth-Server-Time'
        self._expire_key = 'X-RHN-Auth-Expire-Offset'
        self._channel_key = 'X-RHN-Auth-Channels'

    def set_login_dict(self, login_dict):
        self.login_dict = login_dict

    def get_server_id(self):
        if self.login_dict.has_key(self._server_key):
            return str(self.login_dict[self._server_key])
        return None

    def get_user_id(self):
        if self.login_dict.has_key(self._user_key):
            return self.login_dict[self._user_key]
        return None

    def get_signature(self):
        if self.login_dict.has_key(self._sig_key):
            return self.login_dict[self._sig_key]
        return None

    def get_server_time(self):
        if self.login_dict.has_key(self._time_key):
            return self.login_dict[self._time_key]
        return None

    def get_expire_offset(self):
        if self.login_dict.has_key(self._expire_key):
            return self.login_dict[self._expire_key]
        return None

    def get_auth_channels(self):
        if self.login_dict.has_key(self._channel_key):
            return self.login_dict.has_key[self._channel_key]
        return None

if __name__ == "__main__":
    t = Test()
    lg = t.login()
    print("Server ID: " + lg.get_server_id())
    print("User ID: " + lg.get_user_id())
    print("Server Time: " + lg.get_server_time())
    print("Auth: " + lg.get_signature())
    print("Expire Offset: " + lg.get_expire_offset())

    list = t.list_channels()
    print("\n")
    for i in range(list.get_num_channels()):
        print("Channel Name: " + list.get_name(i))
        print("Channel Last Modified: " + list.get_last_modified(i))
        print("Channel Description: " + list.get_description(i))
        print("Channel Local Channel: " + list.get_local_channel(i))
        print("Channel Arch: " + list.get_arch(i))
        print("Channel Parent Channel: " + list.get_parent_channel(i))
        print("Channel Summary: " + list.get_summary(i))
        print("Channel org_id: " + list.get_org_id(i))
        print("Channel id: " + list.get_id(i))
        print("Channel label: " + list.get_label(i))

    print("")
    plist = t.list_packages()
    for j in range(plist.get_num_packages()):
        print("Package Name: " + plist.get_name(j))
        print("Package Version: " + plist.get_version(j))
        print("Package Release: " + plist.get_release(j))
        print("Package Epoch: " + plist.get_epoch(j))
        print("")

    #package = t.package([plist.get_name(0), plist.get_version(0), plist.get_release(0), plist.get_epoch(j)])
    # print package
    if sys.version_info[0] == 3:
        raw_input = input
    uname = raw_input("username:")
    password = raw_input("password:")
    email = raw_input("email:")
    org_id = raw_input("ord_id:")
    org_password = raw_input("org_password:")

    print(t.reserve_user(uname, password))
    print(t.new_user(uname, password, email, org_id, org_password))
 07070100000221000041FD0000000000000000000000016290A0C100000000000000000000000000000000000000000000002000000000spacewalk-backend/test/non-unit   07070100000222000041FD0000000000000000000000016290A0C100000000000000000000000000000000000000000000002700000000spacewalk-backend/test/non-unit/server    07070100000223000081B40000000000000000000000016290A0C100000000000000000000000000000000000000000000003300000000spacewalk-backend/test/non-unit/server/__init__.py    07070100000224000041FD0000000000000000000000016290A0C100000000000000000000000000000000000000000000002E00000000spacewalk-backend/test/non-unit/server/rhnSQL 07070100000225000081B40000000000000000000000016290A0C100000000000000000000000000000000000000000000003A00000000spacewalk-backend/test/non-unit/server/rhnSQL/__init__.py 07070100000226000081B40000000000000000000000016290A0C100001B2F000000000000000000000000000000000000003900000000spacewalk-backend/test/non-unit/server/rhnSQL/dbtests.py  #
# Copyright (c) 2008--2015 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#

"""
Database specific tests for rhnSQL drivers.

These tests require a database connection, usually configured in a
rhntests-*.py script.
"""

import unittest

from random import randint

from spacewalk.server import rhnSQL
from spacewalk.server.rhnSQL import sql_base

TEST_IDS = [1, 2, 3]
TEST_NAMES = ["Bill", "Susan", "Joe"]
TEST_NUMS = [900.12, 600.49, 34.98]


class RhnSQLDatabaseTests(unittest.TestCase):

    """
    Database connection tests that can be run against any supported database.
    """

    def set_temp_table(self):
        self.temp_table = "testtable%s" % randint(1, 10000000)

    def setUp(self):
        # Expect self.temp_table to have been created by subclass by now:

        # insert_query = "INSERT INTO %s(id, name) VALUES($1, $2)" % \
        #        self.temp_table
        #cursor = rhnSQL.prepare(insert_query)
        #ids = [1, 2, 3, 4, 5]
        #names = ["Bill", "Ted", "Mary", "Tom", "Susan"]
        #cursor.executemany([ids, names])

        insert_query = "INSERT INTO %s(id, name, num) VALUES(:id, :name, :num)" % \
            self.temp_table
        cursor = rhnSQL.prepare(insert_query)
        cursor.execute(id=TEST_IDS[0], name=TEST_NAMES[0], num=TEST_NUMS[0])
        cursor.execute(id=TEST_IDS[1], name=TEST_NAMES[1], num=TEST_NUMS[1])
        cursor.execute(id=TEST_IDS[2], name=TEST_NAMES[2], num=TEST_NUMS[2])

    def tearDown(self):
        drop_table_query = "DROP TABLE %s" % self.temp_table
        cursor = rhnSQL.prepare(drop_table_query)
        cursor.execute()
        rhnSQL.commit()

    def test_execute_not_all_variables_bound(self):
        query = "INSERT INTO %s(id, name) VALUES(:id, :name)" % \
                self.temp_table
        cursor = rhnSQL.prepare(query)
        self.assertRaises(sql_base.SQLError, cursor.execute, name="Blah")

    def test_statement_prepare_error(self):
        rhnSQL.transaction("test_statement_prepare_error")

        query = "aaa bbb ccc"
        cursor = rhnSQL.prepare(query)
        self.assertRaises(rhnSQL.SQLError,
                          cursor.execute)

        rhnSQL.rollback("test_statement_prepare_error")

    def test_execute_bindbyname_extra_params_passed(self):
        query = "SELECT * FROM %s WHERE id = :id" % self.temp_table
        cursor = rhnSQL.prepare(query)
        cursor.execute(id=TEST_IDS[0], name="Sam")  # name should be ignored
        results = cursor.fetchone()
        self.assertEqual(TEST_IDS[0], results[0])
        self.assertEqual(TEST_NAMES[0], results[1])

    def test_executemany(self):
        query = "INSERT INTO %s(id, name) VALUES(:id, :name)" \
                % self.temp_table
        ids = [1000, 1001]
        names = ["Somebody", "Else"]

        cursor = rhnSQL.prepare(query)
        cursor.executemany(id=ids, name=names)

        query = rhnSQL.prepare("SELECT * FROM %s WHERE id >= 1000 ORDER BY ID"
                               % self.temp_table)
        query.execute()
        rows = query.fetchall()
        self.assertEqual(2, len(rows))

        self.assertEqual(1000, rows[0][0])
        self.assertEqual(1001, rows[1][0])
        self.assertEqual("Somebody", rows[0][1])
        self.assertEqual("Else", rows[1][1])

    def test_executemany2(self):
        query = "SELECT * FROM %s" \
                % self.temp_table
        cursor = rhnSQL.prepare(query)

        # Just want to see that this doesn't throw an exception:
        cursor.executemany()

    def test_execute_bulk(self):
        query = "INSERT INTO %s(id, name) VALUES(:id, :name)" \
                % self.temp_table
        ids = [1000, 1001]
        names = ["Somebody", "Else"]

        cursor = rhnSQL.prepare(query)
        d = {
            'id': ids,
            'name': names,
        }
        cursor.executemany(**d)

        query = rhnSQL.prepare("SELECT * FROM %s WHERE id >= 1000 ORDER BY ID"
                               % self.temp_table)
        query.execute()
        rows = query.fetchall()
        self.assertEqual(2, len(rows))

        self.assertEqual(1000, rows[0][0])
        self.assertEqual(1001, rows[1][0])
        self.assertEqual("Somebody", rows[0][1])
        self.assertEqual("Else", rows[1][1])

    def test_numeric_columns(self):
        h = rhnSQL.prepare("SELECT num FROM %s WHERE id = %s" %
                           (self.temp_table, TEST_IDS[0]))
        h.execute()
        row = h.fetchone()
        self.assertEqual(TEST_NUMS[0], row[0])

    def test_fetchone(self):
        query = "SELECT * FROM %s WHERE id = 1 ORDER BY id" % self.temp_table
        cursor = rhnSQL.prepare(query)
        cursor.execute()
        results = cursor.fetchone()
        self.assertEqual(TEST_IDS[0], results[0])
        self.assertEqual(TEST_NAMES[0], results[1])

    def test_fetchone_dict(self):
        query = "SELECT * FROM %s WHERE id = 1 ORDER BY id" % self.temp_table
        cursor = rhnSQL.prepare(query)
        cursor.execute()
        results = cursor.fetchone_dict()
        self.assertEqual(TEST_IDS[0], results['id'])
        self.assertEqual(TEST_NAMES[0], results['name'])
        self.assertEqual(TEST_NUMS[0], results['num'])

    def test_fetchall(self):
        query = rhnSQL.prepare("SELECT * FROM %s ORDER BY id" %
                               self.temp_table)
        query.execute()
        rows = query.fetchall()
        self.assertEqual(len(TEST_IDS), len(rows))

        i = 0
        while i < len(TEST_IDS):
            self.assertEqual(TEST_IDS[i], rows[i][0])
            self.assertEqual(TEST_NAMES[i], rows[i][1])
            i = i + 1

    def test_fetchall_dict(self):
        query = rhnSQL.prepare("SELECT * FROM %s ORDER BY id" %
                               self.temp_table)
        query.execute()
        rows = query.fetchall_dict()
        self.assertEqual(len(TEST_IDS), len(rows))

        i = 0
        while i < len(TEST_IDS):
            self.assertEqual(TEST_IDS[i], rows[i]['id'])
            self.assertEqual(TEST_NAMES[i], rows[i]['name'])
            i = i + 1

    def test_unicode_string_argument(self):
        query = rhnSQL.prepare("SELECT * FROM %s WHERE name=:name" %
                               self.temp_table)
        query.execute(name='blah')

#    def test_procedure(self):
#        sp = rhnSQL.Procedure("return_int")
#        ret = sp(5)
#        self.assertEquals(5, ret)
 07070100000227000081FD0000000000000000000000016290A0C100000BE5000000000000000000000000000000000000002E00000000spacewalk-backend/test/runtests-postgresql.py #!/usr/bin/python

#
# Copyright (c) 2008--2016 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#

"""
Non-pure tests requiring connectivity to a PostgreSQL server configured below.
"""

import os
import sys
import unittest

try:
    #  python 2
    from ConfigParser import ConfigParser
except ImportError:
    #  python3
    from configparser import ConfigParser
from spacewalk.server import rhnSQL

# Import all test modules here:
sys.path.insert(
    0,
    os.path.abspath(os.path.dirname(os.path.abspath(__file__) + "/../non-unit/server/rhnSQL/"))
)
import dbtests

config = ConfigParser()
config.read(os.path.dirname(os.path.abspath(__file__)) + "/db_settings.ini")

PG_HOST = config.get('postgresql', 'host')
PG_USER = config.get('postgresql', 'user')
PG_PASSWORD = config.get('postgresql', 'password')
PG_DATABASE = config.get('postgresql', 'database')

rhnSQL.initDB(backend="postgresql", host=PG_HOST, username=PG_USER,
              password=PG_PASSWORD, database=PG_DATABASE)

# Re-initialize to test re-use of connections:
rhnSQL.initDB(backend="postgresql", host=PG_HOST, username=PG_USER,
              password=PG_PASSWORD, database=PG_DATABASE)


class PostgreSQLDatabaseTests(dbtests.RhnSQLDatabaseTests):
    QUERY_CREATE_TABLE = """
        CREATE TABLE %s(id INT, name TEXT, num NUMERIC(5,2))
    """

    SIMPLE_PROCEDURE = """
CREATE OR REPLACE FUNCTION return_int(returnme INTEGER) RETURNS int AS $$
DECLARE
    myInt int;
BEGIN
    myInt := returnme;
    RETURN myInt;
END
$$ LANGUAGE 'plpgsql';
    """

    def setUp(self):
        self.set_temp_table()
        create_table_query = self.QUERY_CREATE_TABLE % self.temp_table
        cursor = rhnSQL.prepare(create_table_query)
        cursor.execute()

        dbtests.RhnSQLDatabaseTests.setUp(self)

        cursor = rhnSQL.prepare(self.SIMPLE_PROCEDURE)
        cursor.execute()

    def tearDown(self):
        try:
            cursor = rhnSQL.prepare("DROP FUNCTION return_int(returnme integer)")
            cursor.execute()
        except:
            pass

        dbtests.RhnSQLDatabaseTests.tearDown(self)


def suite():
    s = unittest.TestSuite()
    s.addTest(unittest.makeSuite(PostgreSQLDatabaseTests))
    # Append all test suites here:
    return unittest.TestSuite(s)

if __name__ == "__main__":
    try:
        import testoob
        testoob.main(defaultTest="suite")
    except ImportError:
        print("These tests would run prettier if you installed testoob. :)")
        unittest.main(defaultTest="suite")
   07070100000228000081FD0000000000000000000000016290A0C100000533000000000000000000000000000000000000002300000000spacewalk-backend/test/runtests.py    #!/usr/bin/python

#
# Copyright (c) 2008--2016 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#

"""
Pure unit tests for the Spacewalk backend Python code.

These tests should require no network or disk access and run on just about
any system.
"""

import sys
import unittest

sys.path.insert(0, '../')
sys.path.insert(0, './suites')
sys.path.insert(0, '../../client/rhel/rhnlib')

# Import all test modules here:
import rhnsqltests


def suite():
    # Append all test suites here:
    return unittest.TestSuite((
        rhnsqltests.suite(),
    ))

if __name__ == "__main__":
    try:
        import testoob
        testoob.main(defaultTest="suite")
    except ImportError:
        print("These tests would run prettier if you install testoob. :)")
        unittest.main(defaultTest="suite")
 07070100000229000041FD0000000000000000000000016290A0C100000000000000000000000000000000000000000000002000000000spacewalk-backend/upload_server   0707010000022A000081B40000000000000000000000016290A0C10000008C000000000000000000000000000000000000002900000000spacewalk-backend/upload_server/Makefile  # Makefile for the xmlrpc handlers
#

TOP	= ../
SUBDIR	= upload_server

FILES	= __init__

SUBDIRS = handlers

include $(TOP)/Makefile.defs

0707010000022B000081B40000000000000000000000016290A0C1000002C0000000000000000000000000000000000000002C00000000spacewalk-backend/upload_server/__init__.py   #
# Copyright (c) 2008--2015 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#
# init module for the XML-RPC handlers. Bare.
#

# we stat all dirs anyway...
__all__ = []
0707010000022C000041FD0000000000000000000000016290A0C100000000000000000000000000000000000000000000002900000000spacewalk-backend/upload_server/handlers  0707010000022D000081B40000000000000000000000016290A0C10000009B000000000000000000000000000000000000003200000000spacewalk-backend/upload_server/handlers/Makefile # Makefile for the xmlrpc handlers
#

TOP	= ../..
SUBDIR	= upload_server/handlers

FILES	= __init__

SUBDIRS = package_push

include $(TOP)/Makefile.defs

 0707010000022E000081B40000000000000000000000016290A0C1000002C0000000000000000000000000000000000000003500000000spacewalk-backend/upload_server/handlers/__init__.py  #
# Copyright (c) 2008--2015 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#
# init module for the XML-RPC handlers. Bare.
#

# we stat all dirs anyway...
__all__ = []
0707010000022F000041FD0000000000000000000000016290A0C100000000000000000000000000000000000000000000003600000000spacewalk-backend/upload_server/handlers/package_push 07070100000230000081B40000000000000000000000016290A0C10000009E000000000000000000000000000000000000003F00000000spacewalk-backend/upload_server/handlers/package_push/Makefile    # Makefile for the xmlrpc module
#

TOP	= ../../..
SUBDIR	= upload_server/handlers/package_push

FILES	= __init__ package_push

include $(TOP)/Makefile.defs

  07070100000231000081B40000000000000000000000016290A0C1000002FE000000000000000000000000000000000000004200000000spacewalk-backend/upload_server/handlers/package_push/__init__.py #
# Copyright (c) 2008--2013 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#
#
# This file defines the classes available for the XMLRPC receiver
#

__all__ = []

from . import package_push

upload_class = package_push.PackagePush
  07070100000232000081B40000000000000000000000016290A0C1000018D8000000000000000000000000000000000000004600000000spacewalk-backend/upload_server/handlers/package_push/package_push.py #
# Code that drops files on the filesystem (/PKG-UPLOAD)
#
#
# Copyright (c) 2008--2017 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#
#

import os
import base64
import sys
from rhn import rpclib

from spacewalk.common import apache, rhnFlags
from spacewalk.common.rhnLog import log_debug, log_error
from spacewalk.common.rhnConfig import CFG
from spacewalk.common.rhnException import rhnFault
from spacewalk.server.importlib.importLib import InvalidArchError
from spacewalk.server import rhnPackageUpload, rhnSQL, basePackageUpload


class PackagePush(basePackageUpload.BasePackageUpload):

    def __init__(self, req):
        basePackageUpload.BasePackageUpload.__init__(self, req)
        self.required_fields.extend([
            'Auth',
            'Force',
        ])
        self.null_org = None
        # Default packaging is rpm
        self.packaging = 'rpm'
        self.username = None
        self.password = None
        self.force = None
        self.rel_package_path = None
        self.org_id = None
        self.package_path = None

    def headerParserHandler(self, req):
        ret = basePackageUpload.BasePackageUpload.headerParserHandler(self, req)
        # Optional headers
        maps = [['Null-Org', 'null_org'], ['Packaging', 'packaging']]
        for hn, sn in maps:
            header_name = "%s-%s" % (self.header_prefix, hn)
            if header_name in req.headers_in:
                setattr(self, sn, req.headers_in[header_name])

        if ret != apache.OK:
            return ret

        if CFG.SEND_MESSAGE_TO_ALL:
            rhnSQL.closeDB()
            log_debug(1, "send_message_to_all is set")

            rhnFlags.set("apache-return-code", apache.HTTP_NOT_FOUND)
            try:
                outage_message = open(CFG.MESSAGE_TO_ALL).read()
            except IOError:
                log_error("Missing outage message file")
                outage_message = "Outage mode"
            raise rhnFault(20001, outage_message, explain=0)

        # Init the database connection
        rhnSQL.initDB()
        use_session = 0
        if self.field_data.has_key('Auth-Session'):
            session_token = self.field_data['Auth-Session']
            use_session = 1
        else:
            encoded_auth_token = self.field_data['Auth']

        if not use_session:
            auth_token = self.get_auth_token(encoded_auth_token)

            if len(auth_token) < 2:
                log_debug(3, auth_token)
                raise rhnFault(105, "Unable to autenticate")

            self.username, self.password = auth_token[:2]

        force = self.field_data['Force']
        force = int(force)
        log_debug(1, "Username", self.username, "Force", force)

        if use_session:
            self.org_id, self.force = rhnPackageUpload.authenticate_session(session_token,
                                                                            force=force, null_org=self.null_org)
        else:
            # We don't push to any channels
            self.org_id, self.force = rhnPackageUpload.authenticate(self.username,
                                                                    self.password, force=force, null_org=self.null_org)

        return apache.OK

    def handler(self, req):
        ret = basePackageUpload.BasePackageUpload.handler(self, req)
        if ret != apache.OK:
            return ret

        a_pkg = rhnPackageUpload.save_uploaded_package(req,
                                                       (self.package_name, None, self.package_version,
                                                        self.package_release, self.package_arch),
                                                       str(self.org_id),
                                                       self.packaging,
                                                       self.file_checksum_type, self.file_checksum)

        self.rel_package_path = rhnPackageUpload.relative_path_from_header(
            a_pkg.header, org_id=self.org_id,
            checksum_type=a_pkg.checksum_type, checksum=a_pkg.checksum)
        self.package_path = os.path.join(CFG.MOUNT_POINT,
                                         self.rel_package_path)

        try:
            package_dict, diff_level = rhnPackageUpload.push_package(a_pkg,
                                                                     force=self.force,
                                                                     relative_path=self.rel_package_path,
                                                                     org_id=self.org_id)
        except InvalidArchError:
            e = sys.exc_info()[1]
            req.write(str(e))
            return apache.HTTP_NOT_ACCEPTABLE
        except Exception:
            e = sys.exc_info()[1]
            req.write(str(e))
            return apache.HTTP_BAD_REQUEST

        if diff_level:
            return self._send_package_diff(req, diff_level, package_dict)

        # Everything went fine
        rhnSQL.commit()
        reply = "All OK"
        req.headers_out['Content-Length'] = str(len(reply))
        req.send_http_header()
        req.write(reply)
        log_debug(2, "Returning with OK")

        return apache.OK

    @staticmethod
    def _send_package_diff(req, diff_level, diff):
        args = {
            'level': diff_level,
            'diff': diff,
        }
        reply = rpclib.xmlrpclib.dumps((args, ))
        ret_stat = apache.HTTP_BAD_REQUEST
        req.status = ret_stat
        req.err_headers_out['Content-Length'] = str(len(reply))
        req.send_http_header()
        req.write(reply)
        return apache.OK

    @staticmethod
    def get_auth_token(value):
        s = ''.join([x.strip() for x in value.split(',')])
        arr = list(map(base64.decodestring, s.split(':')))
        return arr
07070100000233000041FD0000000000000000000000016290A0C100000000000000000000000000000000000000000000001700000000spacewalk-backend/wsgi    07070100000234000081B40000000000000000000000016290A0C1000000C7000000000000000000000000000000000000002000000000spacewalk-backend/wsgi/Makefile   # Makefile for the wsgi module

TOP    = ..

SUBDIR = wsgi

FILES = __init__ app applet config config_tool package_push \
	 sat sat_dump  xmlrpc wsgiHandler wsgiRequest

include $(TOP)/Makefile.defs
 07070100000235000081B40000000000000000000000016290A0C100000267000000000000000000000000000000000000002300000000spacewalk-backend/wsgi/__init__.py    #
# Copyright (c) 2010--2015 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#
#
 07070100000236000081B40000000000000000000000016290A0C1000002FD000000000000000000000000000000000000001E00000000spacewalk-backend/wsgi/app.py #
# Copyright (c) 2010--2015 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#
#

from wsgi import wsgiHandler


def application(environ, start_response):
    return wsgiHandler.handle(environ, start_response, "app", "server.app")
   07070100000237000081B40000000000000000000000016290A0C100000303000000000000000000000000000000000000002100000000spacewalk-backend/wsgi/applet.py  #
# Copyright (c) 2010--2015 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#
#

from wsgi import wsgiHandler


def application(environ, start_response):
    return wsgiHandler.handle(environ, start_response, "applet", "server.applet")
 07070100000238000081B40000000000000000000000016290A0C10000030E000000000000000000000000000000000000002100000000spacewalk-backend/wsgi/config.py  #
# Copyright (c) 2010--2015 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#
#

from wsgi import wsgiHandler


def application(environ, start_response):
    return wsgiHandler.handle(environ, start_response, "config", "server.config-management")
  07070100000239000081B40000000000000000000000016290A0C100000318000000000000000000000000000000000000002600000000spacewalk-backend/wsgi/config_tool.py #
# Copyright (c) 2010--2015 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#
#

from wsgi import wsgiHandler


def application(environ, start_response):
    return wsgiHandler.handle(environ, start_response, "config_mgmt", "server.config-management-tool")
0707010000023A000081B40000000000000000000000016290A0C100000379000000000000000000000000000000000000002700000000spacewalk-backend/wsgi/package_push.py    #
# Copyright (c) 2010--2015 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#
#

from wsgi import wsgiHandler


def application(environ, start_response):
    return wsgiHandler.handle(environ, start_response,
                              "package_push", "server.upload.package-push",
                              "spacewalk.server.apacheUploadServer")
   0707010000023B000081B40000000000000000000000016290A0C1000002FE000000000000000000000000000000000000001E00000000spacewalk-backend/wsgi/sat.py #
# Copyright (c) 2010--2015 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#
#


from wsgi import wsgiHandler


def application(environ, start_response):
    return wsgiHandler.handle(environ, start_response, "sat", "server.iss")
  0707010000023C000081B40000000000000000000000016290A0C10000036F000000000000000000000000000000000000002300000000spacewalk-backend/wsgi/sat_dump.py    #
# Copyright (c) 2010--2015 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#
#

from wsgi import wsgiHandler


def application(environ, start_response):
    return wsgiHandler.handle(environ, start_response,
                              "non_auth_dumper", "server.iss",
                              "spacewalk.satellite_exporter.satexport")
 0707010000023D000081B40000000000000000000000016290A0C1000008E4000000000000000000000000000000000000002600000000spacewalk-backend/wsgi/wsgiHandler.py #
# Copyright (c) 2010--2016 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#
#

from wsgi import wsgiRequest


def handle(environ, start_response, server, component_type, servertype="spacewalk.server.apacheServer"):
    # wsgi seems to capitalize incoming headers and add HTTP- to the front :/
    # so we strip out the first 5 letters, and transform it into what we want.
    replacements = {'_': '-', 'Rhn': 'RHN', 'Md5Sum': 'MD5sum', 'Xml': 'XML', 'Actualuri': 'ActualURI'}
    for key in list(environ.keys()):
        if key[:5] == "HTTP_":
            new_key = key[5:].title()
            for k, v in list(replacements.items()):
                new_key = new_key.replace(k, v)
            environ[new_key] = environ[key]

    req = wsgiRequest.WsgiRequest(environ, start_response)
    req.set_option("SERVER", server)
    req.set_option("RHNComponentType", component_type)

    parseServ = get_handle(servertype, "HeaderParserHandler")
    ret = parseServ(req)

    if len(req.output) > 0 or ret != 0:
        if not req.sent_header:
            req.send_http_header(status=ret)
        return req.output

    appServ = get_handle(servertype, "Handler")
    ret = appServ(req)

    if not ret:
        ret = None

    if not req.sent_header:
        req.send_http_header(status=ret)

    # exporter doesn't have a logHandler
    if servertype != 'spacewalk.satellite_exporter.satexport':
        logServ = get_handle(servertype, "LogHandler")
        logServ(req)
    cleanServ = get_handle(servertype, "CleanupHandler")
    cleanServ(req)

    return req.output


def get_handle(servertype, name):
    handler_module = __import__(servertype, globals(), locals(), [servertype.split('.')[-1]])
    return getattr(handler_module, name)
0707010000023E000081B40000000000000000000000016290A0C1000015AC000000000000000000000000000000000000002600000000spacewalk-backend/wsgi/wsgiRequest.py #
# Copyright (c) 2010--2016 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#
#


import socket
try:
    #  python 2
    import httplib
except ImportError:
    #  python3
    import http.client as httplib


class WsgiRequest:
    # pylint: disable=R0902

    def __init__(self, env, start_response):
        self.method = env['REQUEST_METHOD']
        self.headers_in = env
        self.path_info = env['PATH_INFO']
        self.start_response = start_response
        self.uri = self.unparsed_uri = env['REQUEST_URI']
        self.server = WsgiServer(env['SERVER_NAME'], env['SERVER_PORT'])
        self.connection = WsgiConnection(env)
        self.options = {}
        self.main = 0
        self.proto_num = float(env['SERVER_PROTOCOL'].split('/')[1])
        self.headers_out = WsgiMPtable()
        self.sent_header = 0
        self.content_type = ""
        self.the_request = env['REQUEST_METHOD'] + " " + env['SCRIPT_NAME'] + " " + env['SERVER_PROTOCOL']
        self.output = []
        self.err_headers_out = WsgiMPtable()
        self.status = ""
        self.sent_bodyct = 0
        self.sent_header = 0

    def set_option(self, key, value):
        self.options[key] = value

    def get_options(self):
        return self.options

    def get_config(self):
        return repr(self.__dict__)

    def write(self, msg):
        if isinstance(msg, str):
            msg = msg.encode()
        self.output.append(msg)

    def send_http_header(self, status=None):
        self.sent_header = 1
        self.status = str(self.status)
        if status is not None:
            self.status = str(status)
        if len(self.status) == 0 or self.status is None:
            self.status = "200"
        elif self.status.startswith("500"):
            for i in list(self.err_headers_out.items()):
                self.headers_out.add(i[0], i[1])

        if hasattr(httplib, "responses"):
            self.status = self.status + " " + httplib.responses[int(self.status)]
        else:
            # httplib in 2.4 did not have the responses dictionary
            # and mod_wsgi insists on having something after the numeric value
            self.status = self.status + " Status " + self.status

        if len(self.content_type) > 0:
            self.headers_out['Content-Type'] = self.content_type
        # default to text/xml
        if not self.headers_out.has_key('Content-Type'):
            self.headers_out['Content-Type'] = 'text/xml'

        # leave transfer encoding settings to wsgi as at least 'chunked'
        # create problems
        self.headers_out.remove_key('Transfer-Encoding')

        self.start_response(self.status, list(self.headers_out.items()))
        return

    def get_remote_host(self, _rev=""):
        host = self.headers_in['REMOTE_ADDR']
        try:
            host = socket.gethostbyaddr(host)[0]
        except:
            # pylint: disable=W0702
            pass
        return host

    def read(self, buf=-1):
        return self.headers_in['wsgi.input'].read(buf)


class WsgiServer:
    # pylint: disable=R0903

    def __init__(self, hostname, port):
        self.server_hostname = hostname
        self.port = int(port)


class WsgiConnection:
    # pylint: disable=R0903

    def __init__(self, env):
        self.remote_ip = env['REMOTE_ADDR']
        self.local_addr = (env['SERVER_NAME'], env['SERVER_PORT'])


class WsgiMPtable:

    """ This class emulates mod_python's mp_table. See
        http://www.modpython.org/live/current/doc-html/pyapi-mptable.html

        The table object is a wrapper around the Apache APR table. The table
        object behaves very much like a dictionary (including the Python 2.2
        features such as support of the in operator, etc.), with the following
        differences:

        ...
        - Duplicate keys are allowed (see add() below). When there is more
          than one value for a key, a subscript operation returns a list.

        Much of the information that Apache uses is stored in tables.
        For example, req.headers_in and req.headers_out.
    """

    def __init__(self):
        self.dict = {}

    def add(self, key, value):
        if key in self.dict and value not in self.dict[key]:
            self.dict[key].append(str(value))
        else:
            self.dict[key] = [str(value)]

    def __contains__(self, key):
        return self.has_key(key)

    def __getitem__(self, key):
        if len(self.dict[key]) == 1:
            return self.dict[key][0]
        return self.dict[key]

    def __setitem__(self, key, value):
        self.dict[key] = [str(value)]

    def items(self):
        ilist = []
        for k, v in list(self.dict.items()):
            for vi in v:
                ilist.append((k, vi))
        return ilist

    def has_key(self, key):
        return key in self.dict

    def keys(self):
        return list(self.dict.keys())

    def remove_key(self, key):
        self.dict.pop(key, None)

    def __str__(self):
        return str(self.items())
0707010000023F000081B40000000000000000000000016290A0C100000304000000000000000000000000000000000000002100000000spacewalk-backend/wsgi/xmlrpc.py  #
# Copyright (c) 2010--2015 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public License,
# version 2 (GPLv2). There is NO WARRANTY for this software, express or
# implied, including the implied warranties of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
# along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
#
# Red Hat trademarks are not licensed under GPLv2. No permission is
# granted to use or replicate Red Hat trademarks that are incorporated
# in this software or its documentation.
#
#


from wsgi import wsgiHandler


def application(environ, start_response):
    return wsgiHandler.handle(environ, start_response, "xmlrpc", "server.xmlrpc")
07070100000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000B00000000TRAILER!!!                                                                                                                                                                                                                                                                    